! 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