! FILE 'ERTE_INIT70' !THE INITIALISE TASK "INIT" - FOR EMAS 2980. !E.R.T.E. MK.6 VERSION - VIA DUP11S ! W.S.C. 27TH JULY 1976 ! J.C.A. 31ST JAN 1978 ! G.J.B. 19TH SEPT 1978 ! J.C.A. 27TH SEPT 1978 ! B.G. 25.JAN.80 ! ??? LAST UPDATE 21:12:78 - FILE INIT70 ! THIS VERSION IS FOR USE WITH ICL VME/B !THE TASK RUNS IN SYSTEM SLOT 29 !SET STACK TO 140 STREAMS=0 PRIORITY=1 %CONTROL K'101011' %BEGIN %OWNSTRING(19) ERTE1='A.R.T.E. mk. 7.1 ' %OWNSTRING(31) TARGETNOW='* to BURROUGHS BBDC PROTOCOL' %OWNSTRING(16) VERSION=' BG 23.AUG.81' %SYSTEMROUTINESPEC ALARM(%INTEGER TICKS) %PERMROUTINESPEC SVC(%INTEGER EP,P1,P2) %SYSTEMROUTINESPEC LINKIN(%INTEGER SER) %RECORDFORMAT PF(%BYTEINTEGER SERVICE,REPLY,%INTEGER A1,%C %BYTEINTEGERARRAYNAME A2,%INTEGER A3) %OWNRECORD (PF) P %RECORDFORMAT P2F(%BYTEINTEGER SER, REPLY, LINE, %C LINE TYPE, %INTEGER AD, %BYTEINTEGER RX INT, TXINT) %OWNRECORD (P2F) P2 %OWNRECORD (P2F) %NAME P3 %OWNINTEGER TSKCT,TSK SER,TASKS,I,TASK ID %CONSTBYTEINTEGERNAME ID=K'160030' %CONSTBYTEINTEGERNAME FSYS = K'160055' %CONSTBYTEINTEGERNAME TT NO = K'160061' %CONSTBYTEINTEGERARRAY TIME(0:5)='T','I','M','E','O',NL %OWNBYTEINTEGERARRAY TASK(0:11)=%C 'T','S','K','1',' ','T','K','P','A','R','1',NL %OWNBYTEINTEGERARRAY BBDC(0:11)=%C 'B','B','D','C','Y', '1',' ','/','.','L','P',NL %CONSTBYTEINTEGERARRAY LOGT(0:4)= %C 'L','O','G','Y',NL %CONSTBYTEINTEGERARRAY PROT(0:11)=%C 'X','B','U','R','1', 'Y',' ','/','.','L','P',NL %CONSTBYTEINTEGERARRAY CPUT(0:5)=%C 'C','P','U','T','Y',NL %ROUTINESPEC CALL LOADER(%BYTEINTEGERARRAYNAME S) %CONSTINTEGER LOAD SER=5; !LOAD SERVICE NUMBER %CONSTINTEGER TIME SER=28; !STIMULATOR TIME SERVICE NUMBER %CONSTINTEGER BBDC SER=27; !BBDC SERVICE NUMBER !%CONSTINTEGER LINKIN=13; !LINKIN SVC NUMBER %CONSTINTEGER SYSLOT=29; !SYSTEM SLOT NUMBER FOR INIT %CONSTBYTEINTEGERNAME INT=K'160060' %CONSTINTEGER PAUSE TICKS=100; !2 SECONDS !NETWORK INFO TO BE SENT TO BBDC !CONTAINS: ! ERTE ADDRESS, ! TARGET ADDRESS, ! TARGET NAME LENGTH, ! TARGET NAME MESSAGE; !**************************************************************** !**************************************************************** %ROUTINE FATAL PRINTSTRING('Fatal Error number') WRITE(P_A1,0);SPACES(5) PRINTSTRING('Task number') WRITE(P_REPLY,0) NEWLINE %END !***************************************************************** !***************************************************************** NEWLINE PRINTSTRING(ERTE1) PRINTSTRING(TARGETNOW) PRINTSTRING(VERSION) NEWLINES(2) LINKIN(SYSLOT) P3 == P SVC(18,1,0); !SET PRIORITY TO 1 ! PROMPT('BBDC unit : ') ! READSYMBOL(I) ! BBDC(6)=I ! SKIPSYMBOL ! !LOAD TIME TASK ! CALL LOADER(TIME) PRINTSTRING('TIME loaded') NEWLINE CALL LOADER(LOGT) PRINTSTRING("LOG loaded ") CALL LOADER(BBDC) PRINTSTRING("BBDC loaded ") CALL LOADER(PROT) PRINTSTRING("BUR0 loaded ") P2_SER = TASK ID; P2_REPLY = ID P2_LINE = 0; P2_LINE TYPE = 0; ! LINE 0, TYPE = DU11 P2_AD = K'760040'&K'077777'; ! DUP11 ADDRESS IN SEG 0 P2_RX INT = -31; P2_TX INT = -32 PON(P2) NEWLINE !CALL LOADER(CPUT) !PRINTSTRING('CPUT loaded') !NEWLINE ! READ IN NUMBER OF SCRIPT TASKS PRINT STRING('Number of tasks : '); PROMPT('') READ(TASKS) ! !LOAD ALL SCRIPT TASKS ! %IF TASKS=0 %THEN ->WAIT TSK SER=26 %CYCLE I=1,1,TASKS TASK(3) = I+'0'; ! CHANGE NAME OF SCRIPT TASK TASK(10) = I+'0'; ! CHANGE NAME OF PARAMETER FILE CALL LOADER(TASK) PRINTSTRING('Script task') WRITE(I,1) PRINTSTRING(' started') ! !WAIT FOR TASK TO RESPOND ! WAIT FOR IT: P_SERVICE=0 POFF(P) %IF P_A3#-111 %START NEWLINE PRINTSTRING('Unexpected message') TASKS=P_REPLY WRITE(TASKS,5) WRITE(P_A1,5) WRITE(P3_AD, 5) WRITE(P_A3,5) NEWLINE -> WAIT FOR IT %FINISH PRINTSTRING(' with') WRITE(P_A1,0) PRINTSTRING(' scripts') NEWLINE %IF P_A1<0 %THEN FATAL %REPEAT TSKCT=0 ! PAUSE FOR A WHILE PAUSE: P_SERVICE=TIMESER P_REPLY=ID P_A1=PAUSE TICKS P_A3=0 PON(P) ! WAIT FOR MESSAGES WAIT:P_SERVICE=0 POFF(P) %IF P_REPLY=TIMESER %THEN %START %IF INT='A' %THEN TSKCT=TASKS*2 %AND ->HALT ->PAUSE %FINISH %IF P_A1<0 %START FATAL %FINISH %ELSE %START PRINTSTRING('Task no.') WRITE(P_REPLY,0) PRINTSTRING(' terminated') NEWLINE %FINISH TSKCT=TSKCT+1 HALT: INT='G' %IF TSKCT=TASKS*2 %START !N.B. 2 MESSAGES FROM stopped TASK. !STOP TIME,BBDC AND SELF P_SERVICE=BBDC SER P_REPLY=SYSLOT PON(P) P_SERVICE=0; POFF(P); !WAIT FOR BBDC AND NSIZ TO STOP P_SERVICE=0; POFF(P) PRINTSTRING('BBDC stopped');NEWLINE P_SERVICE=TIME SER P_REPLY=SYSLOT P_A3=40 PON(P) P_SERVICE=0 POFF(P) PRINTSTRING('TIME stopped');NEWLINE PRINTSTRING('INIT stopped');NEWLINE %STOP %FINISH ->WAIT %ROUTINE CALL LOADER(%BYTEINTEGERARRAYNAME S) P_SERVICE=LOAD SER;P_REPLY=ID P_A1=1!FSYS<<8;P_A3=4!TT NO<<8;P_A2==S PONOFF(P) %IF P_A1 = 0 %START PRINTSTRING("file does not exist ") %STOP %FINISH TASK ID = P_A1; ! PICK UP THE TASKS ID %END %ENDOFPROGRAM P_REPLY=SYSLOT