!THE INITIALISE TASK "INIT" - FOR EMAS 2980. !E.R.T.E. MK.3 VERSION - VIA THE DQS 11/E ! 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='E.R.T.E. mk. 5.1 ' %OWNSTRING(16) TARGETNOW='* to ICL VME/B' %OWNSTRING(16) VERSION=' BG 25.JAN.80' %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 %OWNINTEGER TSKCT,TSK SER,TASKS,I,TASK ID %CONSTBYTEINTEGERNAME ID=K'160030' %CONSTBYTEINTEGERARRAY TIME(0:5)='T','I','M','E','O',NL %OWNBYTEINTEGERARRAY TASK(0:4)=%C 'T','S','K','1',NL %OWNBYTEINTEGERARRAY SIVC(0:12)=%C 'S','I','V','C','Y',' ','/','0','.','X','O','T',NL %CONSTBYTEINTEGERARRAY PROT(0:5)=%C 'I','C','L','1','Y',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 SIVC SER=27; !SIVC 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 SIVC !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) SVC(18,1,0); !SET PRIORITY TO 1 ! PROMPT('SIVC unit : ') ! READSYMBOL(I) ! SIVC(6)=I ! SKIPSYMBOL ! !LOAD TIME TASK ! CALL LOADER(TIME) PRINTSTRING('TIME loaded') NEWLINE CALL LOADER(SIVC) PRINTSTRING("SIVC loaded ") CALL LOADER(PROT) PRINTSTRING("ICL1 loaded ") P2_SER = TASK ID; P2_REPLY = ID P2_LINE = 0; P2_LINE TYPE = 0; ! LINE 0, TYPE = DU11 (DUP=1) P2_AD = K'760060'&K'077777'; ! DU11 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 CALL LOADER(TASK) PRINTSTRING('Script task') WRITE(I,1) PRINTSTRING(' started') ! !WAIT FOR TASK TO RESPOND ! 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(P_A3,5) NEWLINE %STOP %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=SYSLOT 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,SIVC AND SELF P_SERVICE=SIVC SER P_REPLY=SYSLOT PON(P) P_SERVICE=0; POFF(P); !WAIT FOR SIVC AND NSIZ TO STOP P_SERVICE=0; POFF(P) PRINTSTRING('SIVC 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;P_A3=4;P_A2==S PONOFF(P) TASK ID = P_A1; ! PICK UP THE TASKS ID %END %ENDOFPROGRAM