%CONTROL 1; ! 'SYSTEM' PROGRAM (FAST ROUTINE ENTRY/EXIT) %RECORDFORMAT DUMMY(%INTEGER X) %CONSTRECORD (DUMMY) %NAME NULL=0 %BEGIN %RECORDFORMAT STRDF(%INTEGER RDS, NXY, GETB, %BYTEINTEGER %C SER, REPLY, UNIT, FSYS, %BYTEINTEGERARRAY NAME(0:5), %C %INTEGER BL, N, PT, MAX, %BYTEINTEGERARRAY BUFF(0:255)) %RECORDFORMAT STRPF(%RECORD (STRDF) %NAME STRD) %RECORDFORMAT PE(%BYTEINTEGER SERVICE, REPLY, %C A1, A2, %BYTEINTEGERARRAYNAME B, %INTEGER C) %CONSTRECORD (STRPF) %NAME STRP1=K'160034' %CONSTRECORD (STRPF) %NAME STRP2=K'160036' %CONSTRECORD (STRPF) %NAME STRP5=K'160044' %CONSTRECORD (STRPF) %NAME STRP6=K'160046' %CONSTBYTEINTEGERNAME ID=K'160030' %CONSTBYTEINTEGERNAME FSYS = K'160055' %CONSTBYTEINTEGERNAME TTNO = K'160061' %RECORD (STRDF) %NAME STRD, STRD2 %CONSTINTEGER LOAD SER=5 %INTEGER I,J,K %RECORD (PE) P %BYTEINTEGERARRAY S(0:30) %CONSTBYTEINTEGERARRAY ONE(0:5)= %C 'P', 'A', 'S', 'S', '1', 'Y' %CONSTBYTEINTEGERARRAY TWO(0:6)= %C 'P', 'A', 'S', 'S', '2', 'Y', ' ' %CONSTBYTEINTEGERARRAY THREE(0:5)= %C 'P', 'A', 'S', 'S', '3', 'Y' %CONSTBYTEINTEGERARRAY FOUR(0:4)= %C 'L', 'I', 'N', 'K', ' ' %CONSTBYTEINTEGERARRAY ONEB(0:13)= %C ',', 'P', 'R', 'I', 'M', 'S', '(', '0', ')', '/', 'O', 'Y', ',', ' ' %CONSTBYTEINTEGERARRAY ONEC(0:3) = %C '.', 'T', 'T', ' ' %CONSTBYTEINTEGERARRAY TWOB(0:8) = %C 'O', 'Y', '/', 'O', '2', ',', 'O', 'Y', ' ' %CONSTBYTEINTEGERARRAY THREEB(0:8)= %C 'O', '2', ',', 'O', 'Y', '/', 'O', 'Y', ' ' %CONSTBYTEINTEGERARRAY FOURB(0:2)= %C 'O', 'Y', ' ' %ROUTINESPEC CALL LOADER %ROUTINESPEC PLANT(%INTEGERNAME PT, %BYTEINTEGERARRAYNAME STUFF, %C %INTEGER MAX) STRD==STRP1_STRD %IF STRD==NULL %THENSTOP I=0 PLANT(I, ONE, 5); S(I)=' '; I=I+1 S(I) = STRD_UNIT+'0' S(I+1) = '.' I = I+2 PLANT(I, STRD_NAME, 5) PLANT(I, ONEB, 13) STRD2==STRP6_STRD %UNLESS STRD2==NULL %START; ! LISTING FILE SPEC %IF STRD2_SER=3 %THEN PLANT(I, STRD2_NAME, 5) %C %ELSESTART PLANT(I, ONEC, 3) %FINISH %FINISH CALL LOADER; ! DO FIRST PASS %IF STRP5_STRD==NULL %THENSTOP I=0 PLANT(I, TWO, 6); S(I)=' '; I=I+1 PLANT(I, TWOB, 8) CALL LOADER STRD==STRP5_STRD I=0 PLANT(I, THREE, 5) S(I)=' '; I=I+1 PLANT(I, THREEB, 8) CALL LOADER I=0 PLANT(I, FOUR, 4); S(I)=' '; I=I+1 PLANT(I, FOURB, 2) STRD2==STRP2_STRD %UNLESS STRD2==NULL %START S(I)=','; I=I+1 PLANT(I, ONEC, 3) %FINISH S(I)='/'; I=I+1 S(I) = STRD_UNIT+'0' S(I+1) = '.' I = I+2 PLANT(I, STRD_NAME, 5) CALL LOADER %STOP %ROUTINE CALL LOADER S(I)=NL; I=I+1 P_SERVICE=LOAD SER; P_REPLY=ID P_A1=1; P_A2 = FSYS P_B == S; P_C = 0!TT NO<<8 PON(P) P_SERVICE=0 POFF(P) %IF P_C#0 %START PRINTSTRING('F A U L T '); WRITE(P_C, 1); NEWLINE %STOP %FINISH %END %ROUTINE PLANT(%INTEGERNAME PT, %BYTEINTEGERARRAYNAME STUFF, %C %INTEGER MAX) %INTEGER I, N %CYCLE I=0, 1, MAX N=STUFF(I); %RETURNIF N=' ' S(PT)=N; PT=PT+1 %REPEAT %END %ENDOFPROGRAM