! RLS/RL A.L. IBBETSON UNIKENT 1979 ! DOWN-LINE LOADING VIA RING ! FILE ON STREAM 1 IN A-P FORMAT ! CONTROL K'100001' BEGIN RECORDFORMAT BUFF(BYTEINTEGERARRAY A(0:100)) RECORDFORMAT MEF(RECORD (MEF) NAME LINK,BYTEINTEGER LEN,TYPE,C RECORD (BUFF) BUF) RECORDFORMAT PE(BYTEINTEGER SER,REPLY,FN,PORT,RECORD (MEF) NAME MES,C BYTEINTEGER L,S) RECORD (PE) P CONSTBYTEINTEGER RING SER = 10, BUF MAN = 17; ! STD SERVICES IN FEP CONSTBYTEINTEGERNAME MYID = K'160030', INT=K'160060' BYTEINTEGERARRAYNAME BUFFER INTEGER ADR,I,EOF,TIME,C1,C2,LEN ! SYSTEMROUTINESPEC ALARM(INTEGER TICKS) SYSTEMROUTINESPEC MAP VIRT(INTEGER TASK,SEG,MYSEG) ! ! ROUTINE MESSAGE(RECORD (PE) NAME P) IF INT#0 THEN PRINTSTRING("PON") AND WRITE(P_SER,3) PON(P) REPOFF: P_SER = 0; POFF(P) IF INT # 0 START PRINTSTRING(" POFF") WRITE(P_REPLY,3) NEWLINE FINISH IF P_SER=MYID AND P_REPLY=0 START ;! CLOCK TIME = TIME - 1 IF TIME=0 START PRINTSTRING("TIMED OUT. LOAD FAILED"); NEWLINE STOP FINISH ALARM(50) ;! 1 SEC -> REPOFF FINISH END ! ! INT = 0 ADR = 0 CYCLE PROMPT("Station address for RL load :") CYCLE READSYMBOL(I) EXITUNLESS '9' >= I >= '0' I = I-'0' ADR = ADR*10 + I REPEAT EXIT IF ADR#0 REPEAT ! SELECTINPUT(1) MAP VIRT(BUFMAN,5,4) EOF = 0 ALARM(50) ;! ONE SECOND ! UNTIL EOF # 0 CYCLE TIME = 5 ;! SECS TO COMPLETE A TXFR P_SER=BUFMAN; P_REPLY=MYID P_FN=0; P_L=1 ;! REQUEST 64 BYTE BUFFER MESSAGE(P) LEN = 0; BUFFER == P_MES_BUF_A CYCLE I=0,1,31 READSYMBOL(C1); READSYMBOL(C2) IF C1=C2=4 THEN EOF=1 ANDEXIT BUFFER(LEN) = (((C1-'A')<<4) + C2-'A') & K'377' LEN = LEN+1 REPEAT ! P_SER=RINGSER; P_REPLY=MYID P_FN=2; P_PORT=ADR; P_MES_LEN=LEN MESSAGE(P); ! REQUEST SINGLE-SHOT RING TRANSFER IF P_L = 0 AND P_FN = 1 THENCONTINUE PRINTSTRING("LOAD FAILED. ") IF P_L=1 THEN PRINTSTRING("TCP DEAD") ELSE PRINTSTRING("FEP BUSY") NEWLINE EXIT REPEAT P_SER=0; POFF(P) ;! ALLOW ALARM TO COME THRO ENDOFPROGRAM