%M %CODE %BEGIN %INTEGER I,J,K,NLIB,LFLAG,DEVNO, LISTFLAG,M10,M13 %INTEGER LINE,LENGTH,Q,N0,NUM,NEXT,V,FAULTY,N,NR %INTEGER R,QU,PLABEL,LEVEL,MC SWITCH, PERM,AFLAG,DFLAG,OVERFLAG %INTEGER V0,PPSTART,PP CURR,ABC,FFLAG %INTEGER PT BLOCK,PCH SUM, PTDEV,PL START,PL CURR, PS START %INTEGER PS CURR,COMPILER,DIAGS %INTEGER TIME LIMIT, MARKER 1, MARKER 2, Q5, Q6, Q7 %INTEGER %ARRAY ST(-3:2300),A(1:400),WORD,TAGS(-1:340),%C SL(1:120),LETT(1:620) %INTEGERARRAY CC(0:300) %INTEGER %ARRAY CYCLE,NAME,LABEL,JUMP,FLAG,RAL,SET,L,M %C ,ARRDIM(0:10) %INTEGER %ARRAY RA(-3:200),PP BUF, PL BUF, PS BUF(-3:99),T(1:7) %REAL A', A'' %ROUTINE %SPEC COMPARE %ROUTINE %SPEC CSS %ROUTINE %SPEC SPLASH(%INTEGER WARNING,%INTEGER %NAME FROM) %ROUTINE %SPEC INITIALISE %ROUTINE %SPEC DPCA %INTEGER %FN %SPEC CA T(1)=5 T(2)=6 T(3)=15 T(4)=8 T(5)=9 T(6)=15 T(7)=8 TIME LIMIT = 120 *ZERO; *NOT; *SHL-9; *SET 47; *FLOAT; **=A'' ABC=0 *JS98P %CYCLE J=1,1,5; SKIP SYMBOL; %REPEAT READ(K) %INTEGERARRAY CLETT(1:K) %CYCLE J=1,1,K; READ(CLETT(J)); %REPEAT READ(K) %INTEGERARRAY SYMBOL (1300:K) %CYCLE J=1300,1,K; READ(SYMBOL(J)); %REPEAT READ(K) LFLAG=0; LISTFLAG=0; NLIB=90 *SET58P:; *=E160 DIAGS=0 OVERFLAG = 1 DFLAG = 0 FAULTY=0 N0=4 N = 2 NR = 0 MC SWITCH = 0 PERM = 1 COMPILER = 1 QU = 1 PLABEL = 50000 LEVEL = 0 %CYCLE J = 2300,-1,801 ST(J) = J-1 %REPEAT ST(800) = 0 J = -1 %CYCLE I = 0,1,10 ARRDIM(I)=0 CYCLE (I) = J NAME (I) = J LABEL (I) = J JUMP (I) = J %REPEAT %CYCLE I = 0,1,330 TAGS (I) = J %REPEAT %CYCLE I = 1,1,120 SL(I) = 0 ; RA(I)=0 %REPEAT %COMMENT INITIALISATION 320: * SET 2300 * DUP * = I9 * = C9 ** `ST(0) * = M9 PP CURR = 300 * 32768 ; %COMMENT 0/150/0 INITIALISE -> 342 %ROUTINE INITIALISE *C0 TO Q1 *C0 TO Q3 * C0 TO Q4 * SET 419 * = M13 * M0M13 * DUP ** = PT DEV * = C15 **COMPILER; *J1=Z * SET 5 * = M15 * PMDQ15 ; %COMMENT REWIND * PMAQ15 ; %COMMENT SKIP LABEL, CALL, AND POSSIBLY COMPILER 1: V0 = 65535 PT BLOCK = 0 P CH SUM = 0 PL CURR = 0 PS CURR = 65536 ** ` PP BUF (0) ** = PP START ** ` PL BUF (0) ** = PL START ** ` PS BUF (0) ** = PS START %CYCLE I = -3,1,99 PP BUF (I) = 0 PL BUF (I) = 0 PS BUF (I) = 0 %REPEAT %END 50P: ** PP START * = M14 ** PP CURR * = Q15 304: * C15 * NOT * NEG * DUP * SET -8 * XD * CONT * = C15 * REV * SET 255 * AND * SHC C15 * M14 M15 * OR * = M14 M15 * SET 6 * J301# * ERASE * C0 TO Q15 54P: * SET 1 * = + M15 * SET 100 * M15 * J 302# * M0 TO Q 15 * = + I 15 * Q14 * Q15 SPLASH (0,PP BUF(0)) * = Q15 * = Q14 -> 303 301: * = C15 -> 303 302: * ERASE 303: * DC 14 * J304 C14 NZ * Q15 ** = PP CURR * EXIT 1 52P: ** PS START ** PS CURR -> 316 51P: ** PL START ** PL CURR 316: * = Q15 * = M14 * SET 2 * = C14 314: * C15 * SET 1 * DUP * = + C15 * - * DUP * J310 = Z * J311 > Z * SHL 32 * = M14M15 -> 312 310: * ERASE ** V0 * AND * SHL 16 * M14M15 * OR * = M14M15 -> 312 311: ** V0 * AND * M14M15 * OR * = M14M15 * C0 TO Q15 * SET 1 * = + M15 * SET 100 * M15 * - * J312 # Z * M0 TO Q15 * Q14 * Q15 * I15 * J313 # Z SPLASH (1, PL BUF (0)) -> 317 313: SPLASH (2, PS BUF (0)) 317: * = Q15 * = Q14 312: * DC14 * J314 C14 NZ * Q15 * I15 * J315 # Z ** = PL CURR * EXIT 1 315: ** = PS CURR * EXIT 1 %ROUTINE SPLASH (%INTEGER WARNING, %INTEGER %NAME FROM) %RETURN %IF FAULTY # 0 ** ` FROM * DUP * = RM14 * SET 3 * - * DUP * = I 15 * SET 100 * = C14 * ZERO * VR 2: * M0M14 Q * + * J1 NV * NOT * NEG 1: * J2 C14 NZ * M-I14 * M14 TO Q15 * REV * = M14 ** PT BLOCK * DUP * = M0M14 Q * NOT * NEG ** = PT BLOCK ** WARNING * = M0M14 Q * DUP * = M0M14 Q ** P CH SUM * + * J3 NV * NOT * NEG 3: ** = P CH SUM ** PT DEV * = C15 * POAQ 15; %COMMENT MWQ 15 * SET 100 * = C14 5: * ZERO * = M0M14 Q * J5 C14 NZ %END %ROUTINE DPCA %INTEGER P ->1 %IF LFLAG=1 **PP CURR *=Q14; *M+I14; *M14; *C14 *SET 7; *AND; **=P WRITE(P,3) PRINT SYMBOL ('/') **=P WRITE(P,3) 1:%END %INTEGER %FN CA ** PP CURR * DUP * = Q14 * M+I 14 * SHL-19 * SET B 160000 * AND * M14 * + %RETURN %END %ROUTINE DUMP %INTEGER I %CAPTION \\ PROGRAM _ (+ PERM) _ OCCUPIES ** CA * SET B 17777 * AND ** = I WRITE(I+N0+NR,1) PRINT SYMBOL('(') WRITE(I,5) %CAPTION )_WORDS -> 8 %IF FAULTY = 0 %CAPTION \PROGRAM _ FAULTY %STOP 10: %CAPTION \ PROGRAM _ TOO_ BIG\ %STOP 8: ST(0) = N0 ST(1) = NR ** PP CURR * = Q15 *M15; *I15; *+; *SET8191; *-; *J10>Z * J1C15 NZ * M15 * J 2 = Z 1: SPLASH (0,PP BUF (0)) 2: ** PL CURR * J3 = Z SPLASH (1, PL BUF (0)) 3: ** PS CURR * = Q15 * J4 C15 NZ * M15 * J5 = Z 4: SPLASH (2, PS BUF (0)) 5: I=0 6: SPLASH (3, ST(I)) I = I + 100 -> 6 %IF I < N0 I = 0 7: SPLASH (4, RA(I)) I = I + 100 -> 7 %IF I < NR ST(0) = P CH SUM SPLASH (7,ST(0)) *E419; *=RC15 *ZERO; *NOT; **=WORD(-1) **@WORD(-1); *DUP; *=I15 *SET341; *+; *=M15; *POAQ15 **@LETT(1); *DUP; *=I15; *SET619 *+; *=M15; *POAQ15; *PMDQ15 %CAPTION \PROGRAM _DUMPED \ COMPILING _ TIME ___ * SET 9 * OUT * SHL-24 * SET 91P: * =M13 * M0M13 * - * JS 2P %CAPTION _/__ * SET 3 * OUT * SHL-24 * SET 91P: * = M13 * M0M13N * - * JS 2P 15: *E384; *=Q15; *BUSYQ15; *J15TR NEWLINE ** TIME LIMIT ** PT DEV *SET4 * = M1 * Q0 TO Q11 * = C1 ; %COMMENT DEVICE * PMDQ1 ; %COMMENT REWIND * PMAQ1 ; ! SKIP LABEL + 3 DUMMIES **COMPILER; *J14=Z; *MANUALQ1; *ZERO; *OUT 14: *SET8; *=I15; *SET120; *=M15 *C1TOQ15; *PIAQ15; *ZERO; *=LINK; *EXIT31;!TO LOADER %END 342: %COMMENT SET UP $ AND ^2 * SET +2 * = M13 * SET B 401 * SHL +38 * = M13M9 * SET +3 * = M13 * SET B 40544 * = C14 * SET B 103755 * = I14 * SET B 50421 * = M14 * Q14 * = M13M9 *ZERO **=NUM ;! NUM = 0 *ZERO *NOT *DUP **=LINE ;! LINE = -1 *NEG **=NEXT ;! NEXT = 1 **`A(0) *=M15 *SET 48 ; ! '0' *=I15 **`SYMBOL(0) *=C15 *Q15 **=Q5 ;! STORE `SYMBOL(0)/'0'/`A(0) * I12 ; ! * SET 1 *=RM15 *Q15 **=Q6 ;! STORE `CWORD(0)/1/1 **`CC(0) *=M15 *SET 57 ; ! '9' *=I15 **`CLETT(0) *=C15 *Q15 **=Q7 ;! STORE `CLETT(0)/'9'/`CC(0) **`LETT(0) *=M15 *SET 6 *DUP *=I15 *=C15 *Q15 **=V ;! STORE 6/6/`LETT(0) 8: * I12 *=RC14 ; ! M14 = LENGTH, C14 = LENGTH' **Q7 ;! SET M7 = `CC(0) *=Q7 **Q5; *=RM6 *ZERO *J2NV PRINTSYMBOL(42) WRITE(LINE,4) %CAPTION__OVERFLOW_SET_ DURING_COMPILATION\ FAULTY=1; ->8 2: *C0 TO Q4 *ERASE 1: *Q14 *JS49P ;! READ CHAR *DUP; *=M0M6QN *REV; *C6; *SET399 *+; *J39=Z *=Q14 *SET 32 ; ! '_' *J2= *SET 37 ; ! ' ' *J20 # *=C4 *J1 20: *J3 C4Z *DUP *SET 65 ; ! 'A' *- *J21 < Z *DUP *SET 90 ; ! 'Z' *- *J21 > Z *SET 128 *OR *J3 21: *C0 TO Q4 3: *M+I14 *DUP *=M7M14 *SET 10 ; ! '\' *- *J1#Z *M14 *C14 *- *M-I14 *J8=Z *M7M14 *SET 195 ; ! '%C ' *- *J4#Z *M14 *=C14 *M-I14 *Q14 1011: *JS49P; *SET10; *- *J1011=Z; *E227; *=Q14 *M-I14; *Q14; *=E227; *=Q14; ! IGNORE NLS *M-I6; * M-I6 *M0M6; *SET37 *-; *J1#Z *M-I6; ->1 4: *M+I14 *M14 *DUP *SET 300 *- *J 39 > Z **=LENGTH **LINE *NOT *NEG **=LINE *I12 *=RM8 5: **LISTFLAG; *J5555=Z WRITE(LINE,5); SPACES(3*LEVEL) **Q5; *=RM6 *SET36P:; *=M14 *M0M14; *=Q15 5543:*M0M6QN; *DUP; *JS13P *SET10; *-; *J5543#Z *Q15; *=M0M14 5555: **Q5 *=Q5 **Q6 *=Q6 **Q7 *=Q7 **K COMPARE 4565: *J6 C8 Z *M6 *SET 380 *- *J11>Z CSS 4566: **A(1) *SET 15 *- *J7=Z *M8 **LENGTH *- *J8=Z ->5555 11: PRINT SYMBOL(42) WRITE (LINE,4) %CAPTION : _ LONG _ ANALYSIS _ RECORD \ %STOP 39: PRINT SYMBOL (42) WRITE (LINE,4) %CAPTION :_>_300_CHARS\ %STOP 6: PRINT SYMBOL (42) WRITE (LINE,4) %CAPTION : _ INSTRUCTION _ NOT _ RECOGNISED\ *I12 %IF FAULTY=1 %THEN ->5556 *E418; *=RC15; *E444; *=M15; *PMEQ15; *ZERO; *=E444 *E435; *SET1; *=C15; *JS25P %STOP %UNLESS LFLAG=0 5556: **=FAULTY **LENGTH *=M14 *Q8 TO Q15 **Q7 *=Q7 13: *M7M15 *SET 59 ; ! ':,' *- *J12#Z *M7M15N *SET 10 ; ! '\' *- *J9#Z 12: *M+I15 *M15 *M14 *- *J13#Z 9: %BEGIN %INTEGER PC PC=0 *M8 **=Q *M15 **=I %CYCLE J=Q,1,I %IF PC=0 %THEN ->1 %IF CC(J) < 128 %THEN ->2 CC(J)=CC(J)-128 ->3 2: PC=0 ->3 1: ->3 %IF CC(J)<128 PRINT SYMBOL (37) PC=1 CC(J)=CC(J)-128 3: PRINT SYMBOL (CC(J)) %REPEAT NEWLINE %END **I **LENGTH *- *J8=Z **I *NOT *NEG *=M8 -> 5555 7: DUMP %ROUTINE COMPARE %INTEGER RA,RP,RQ,RR,RS,SAVE %SWITCH BIP(1000:1009) ! Q5 = `SYMBOL(0) / 48 / `A(0) '0' = 48 ! Q6 = `CWORD(0) / 1 / R ! Q7 = `CLETT(0) / 57 / `CC(0) '9' = 57 ! Q8 = HIT / 1 / Q ! ENTER WITH P IN NS *DUP *NOT *NEG **=RS ;! RS=P+1 *C5 *+ *=M13 *M0M13 **=RP ;! RP=SYMBOL(P) *M0M13N **=RA ;! RA =SYMBOL(P+1) *M8 **=RQ ;! RQ=Q *M6 **=RR ;! RR=R *I6 *=M5M6 1: *M+I6 ;! R=R+1 BIP(1000):2:**RS *NOT *NEG *DUP **=RS ;! RS=RS+1 **RA *J8= ;! %IF RS=RA %THEN ->8 *C5 *+ *=M13 *M0M13 *DUP *SET 1300 *- *J4>=Z ;! %IF ITEM>=300 %THEN ->4 *DUP *SET 1000 *- *J6>=Z ;! %IF ITEM>=200 %THEN ->6 *DUP *=RM14 *C7 *=M13 *M13M14 *+ ;! CLETT(I)+I *DUP *=M15 *M14 *- *=C14 * 5: *M13M14QN *M7M8Q *- *J3#Z ;! %IF CLETT(I)# CC(Q) %THEN ->3 *J5C14NZS ;! %IF I5 ->2 4: COMPARE *J2C8NZ ;! %IF HIT#0 %THEN ->2 3: **RQ *=M8 ;! Q=RQ **RR *=M6 ;! R=RR **RA `j~vp `````~Nw} ;! %IF RA=RP %THEN ->7 *DUP **=RS ;! RS=RA *M5M6 *NOT *NEG *=M5M6 ;! A(R)=A(R)+1 *C5 *+ *=M13 *M0M13 **=RA ;! RA=SYMBOL(RA) ->1 8: *ERASE *DC8 %RETURN 7: *ERASE *C0 TO Q8 %RETURN 6: **=J ->BIP(J) ! PHRASE NAME 9: *ERASE *J3 BIP(1001):*C0 TO Q8 *M7M8 *DUP *SET 65 ; ! 'A' *- *J99 *DUP *SET 90 ; ! 'Z' *- *J1021<=Z; *DUP *SETB 141; *-; *J9Z 1021: **V *=Q14 ;! Q14 = 6/6/`LETT(0) **NEXT *DUP *=RM15 ;! Q15 = 0/1/NEXT+S *REV; *DC14; *DC14 *ZERO; *NOT **=J ;! J=1 *M7M8QN 1101: *DUP ;! SEQUENCE FOR LETTERS *SET 65 ; ! 'A' *- *J1010 *DUP *SET 90 ; ! 'Z' *- *J11 <= Z ; ! %IF I<= 90 %THEN -> 11 *DUP; *SETB141; *-; *J10Z 11: *DC14 *REV *SHL+8 *OR ;! V=256*V+I *J12C14NZ *=M14M15Q ;! LETT(NEXT+S)=V *I14 *=C14 *ZERO 12: *M7M8QN **J; *DUP *J1103>Z; *J110113 *DUP *I7 *- *J11<=Z ;! %IF I<='9' %THEN ->11 13: *SET 1 **=J ;! J=3 *ZERO 1103: *ERASE *SET 39 ;! SEQUENCE FOR PRIMES 39 = ''' *J11= *ERASE *DUP *J15=Z ;! %IF V=0 %THEN ->15 *=M14M15Q ;! LETT(NEXT+S)=V *ZERO 15: *ERASE *=M13 *C8 *NEG *SHL40; *M14M13 *OR *=M14M13 ;! LETT(NEXT)=256*(NO. OF CHARS. IN WORD) !+(FIRST LETTER) *M15 *SET 620 *- *J 14 <= Z NEWLINES (2) PRINT SYMBOL (42) WRITE (LINE,4) %CAPTION :_NAMES _ TOO _ LONG\ %STOP 14: *M13 ;! DICTIONARY LOOK UP SEQUENCE *=I15 **`WORD(0) *Q9; **=SAVE *=M15 **NUM *DUP *=C13 *NEG; *NOT *NC15 ;! Q15 = S+1/NEXT/`WORD(0) *=RM9; *C13TOQ9;*I9=-1; ! U=-1 17: *I15; *=RM13; *J18C9Z *M14M13Q; *;! 1ST WORD OF NEW NAME *M15M9Q; *=RM10 *M14M10Q; *J16= *J17C9NZS *ERASE; ->18 16:*ERASE; *C15TOQ10; *DC10 *J133C10Z;* *M14M13Q; *M14M10Q; *-; *J17#Z; *J16C10NZS 133: *M9; *NOT; *NEG *=M5M6; ! A(R)=U **SAVE; *=Q9; ->1 18: **NUM; *DUP *=M13 *I15 *DUP *=M15M13 ;! WORD(NUM)=NEXT *C15 *+ **=NEXT ;! NEXT=NEXT+S+1 *DUP *=M5M6 ;! A(R)=NUM *NOT *NEG **=NUM ;! NUM=NUM+1 **SAVE; *=Q9 %IF NUM<330 %THEN ->1 NEWLINES (2) PRINT SYMBOL (42) WRITE (LINE,4) %CAPTION :_>_256_NAMES\ %STOP ! PHRASE CONST BIP(1002):*M7M8Q *SET 36 ;! '$' *J60# ;! %IF I#36 %THEN ->60 *ERASE ;! $ SEQUENCE *SET 2 *=M5M6 ;! A(R)=2 *M+I6 ;! R=R+1 *SET 3 *=M5M6 ;! A(R)=3 ->1 60: *SET 39 ;! ''' *J20# *J62 C3 NZ *M7M8N *REV *J101# ;! %IF I#39 %THEN ->101 *ERASE *M7M8Q *M+I8 *SET 95 ;! _ *J71= *SET 92 ;! \ *J72= ->76 101: *SET 76 ;! 'L' *J102= *SET 80 ;! 'P' *J103= ->9 102: *ERASE; *M7M8Q *SET 78 ;! 'N' *J9# *M7M8N *SET 39 *J9# *ERASE *M+I8 *M+I8 ->72 103: *ERASE; *M7M8Q *SET 83 *J9# *M7M8N *SET 39 *J9# *ERASE *M+I8 *M+I8 ->71 71: *ERASE *SET 32 ;! '_' ->76 72: *ERASE *SET 10 ;! '\' ->76 62: *ERASE *C0 TO Q13 *ZERO 66: *M7M8Q *SET 39 *J63= *SET 34 ;!" *J67= *SET 95 ;! _ *J64# *ERASE *J65 64: *SET B177 *AND 68: *SHLC13 *OR 65: *SET 8 *=+C13 ->66 63: *ERASE ->61 67: *ERASE *SET 39 ->68 20: *M-I8 *SET 41P: *=M14 *SET 1000 *=C14 *ZERO *REV *DUP *I5 *- *J19Z * ZERO *NOT *=C14 *J 23 22: *M7M8QN *DUP *I5 *- *J26Z *REV *M0M14 *XF   *REV *DC14 23: *I5 *- *I1 *FLOAT *+F *J22 26: *SET 46 ;! '.' *J27= *SET 96 ;!'`' *J28= 42: *ERASE *C14 *DUP *J44Z 44: *NEG *JS 14P *J34 29: *JS 15P *J34 21: *ERASE *ERASE 25: *ERASE *ERASE *J3 27: *ERASE *C14 *DUP *J33<=Z *ERASE *C0 TO Q14 *J22 28: *ERASE *ZERO *ZERO *M7M8QN *DUP *I5 *- *J31Z 32: *REV *SET 10 *XD *CONT *+ *I5 *- 35: *M7M8QN *DUP *I5 *- *J24Z *C14 *+ *J33 31: *SET 43 ;!'+' *J37= *SET 45 ;!'-' *J21# *CAB *ERASE *I12 *PERM 37: *ERASE *J35 30: *ERASE 34: *DUP **=A' ->431 %IF A'>=A'' **FRACPT(A') *J43=Z 431: *SET 2 *=M5M6 ;! A(R)=2 *M+I6 ;! R=R+1 **N0 *DUP *=M5M6 ;! A(R)=N0 *=RM13 *=M9M13Q ;! ST(N0)=A *M13 **=N0 ;! N0=N0+1 ->1 43: *ERASE **INT(A') 61: *DUP *SET 32767 *- *J45>Z ;! %IF U>32767 %THEN ->45 76: *I12 *=M5M6 ;! A(R)=1 *M+I6 ;! R=R+1 *=M5M6 ;! A(R)=U ->1 45: *SET 3 *=M5M6 ;! A(R)=3 *M+I6 ;! R=R+1 **N0 *DUP *=M5M6 ;! A(R)=N0 *DUP *NOT *NEG **=N0 ;! N0=N0+1 *=M13 *=M9M13 ;! ST(N0)=U ->1 ! PHRASE N BIP(1003):*M7M8 *DUP *I5 *- *J99 *DUP *I7 *- *J9>Z ;! %IF I>'9' %THEN ->9 *ZERO *REV 38: *REV *SET 10 *XD *CONT *+ *I5 *- ;! U=10*U+I-'0' *M7M8QN *DUP *I5 *- *J8181 *DUP *I7 *- *J38<=Z ;! %IF I<='9' %THEN ->38 81: *ERASE *=M5M6 ->1 ! PHRASE S BIP(1004):*M7M8 *SET 10 ;! '\' *J82= ;! %IF I=10 %THEN ->82 *SET 59 ;! '' *- *J3#Z ;! %IF I#59 %THEN ->3 83: *M+I8 ->2 82: *ERASE ->2 ! PHRASE TEXT BIP(1005):*M7M8 39: *SET10 ;! '\' *J82= ;! %IF I=10 %THEN ->82 *SET 59 ;! '' *- *J83=Z ;! %IF I=59 %THEN ->1 *M7M8QN ->39 ! PHRASE CAPTION TEXT BIP(1006):**N0 *DUP *=M5M6 *DUP *=M15 *=RM14 * SET 32 *=C14 *ZERO *M-I8 93: *M7M8QN *SET 10 ;! '\' *J47= *SET 59 ;! '' *J47= *SET 95 ;! _ *J91= *SET 92 ;!\ *J92= 49: *SHLC14 *OR *C14 *SET 8 *- *DUP *J50 93 91: *ERASE *SET 32 ;! '_' ->49 92: *ERASE *SET 10 ;! '\' ->49 50: *ERASE *=M9M14Q *SET 40 *=C14 *ZERO -> 93 47: *ERASE *DUP *J51=Z *=M9M14 *J98 51: *ERASE *M-I14 98: *M14 *M15 *- *NOT; *NEG; *SHL40 *M9M15; *OR *=M9M15 *M+I14 *M14 **=N0 ->1 ! PHRASE OCTAL BIP(1007):*M7M8 *DUP *I5 *- *J9Z *ZERO *REV 41: *REV *SHL+3 *+ *I5 *- *M7M8QN *DUP *I5 *- *J991 ! PHRASE SET MARKER 1 BIP(1008):*M6 **=MARKER 1 ->2 ! PHRASE SET MARKER 2 BIP(1009):*M6 **=MARKER 2 ->2 %END * * * A SWOP  %ROUTINE CSS %ROUTINE %SPEC CCOND %ROUTINE %SPEC CUI %ROUTINE %SPEC CSEXP (%INTEGER Z) %ROUTINE %SPEC MOVEM(%INTEGER Q,N) %ROUTINE %SPEC CNAME (%INTEGER Z) %ROUTINE %SPEC FIND LABEL %ROUTINE %SPEC PUSHDOWN 2 (%INTEGER %NAME CELL,%INTEGER S1,S2) %ROUTINE %SPEC STORE TAG (%INTEGER KK) %ROUTINE %SPEC COPY TAG (%INTEGER KK) %ROUTINE %SPEC FROM LIST 2 (%INTEGER %NAME CELL,S1,S2) %ROUTINE %SPEC POPUP 2 (%INTEGER %NAME CELL,S1,S2) %ROUTINE %SPEC NEWCELL (%INTEGER %NAME STAD) %ROUTINE %SPEC INSERT AFTER 2 (%INTEGER %NAME STAD, %INTEGER S1,S2) %ROUTINE %SPEC REPLACE TAG (%INTEGER KK) %ROUTINE %SPEC LINK (%INTEGER %NAME STAD) %ROUTINE %SPEC RETURN CELL (%INTEGER %NAME STAD) %ROUTINE %SPEC MORE SPACE %ROUTINE %SPEC STORE JUMP %ROUTINE %SPEC STORE NAME %ROUTINE %SPEC TESTNST %ROUTINE %SPEC FAULT (%INTEGER N) %ROUTINE %SPEC CMOD (%INTEGER N,Z) %ROUTINE %SPEC CUCI %ROUTINE %SPEC PPJ(%INTEGER I,J,K) %ROUTINE %SPEC PJ(%INTEGER A,S,B) %ROUTINE %SPEC PSET(%INTEGER N) %ROUTINE %SPEC PQ(%INTEGER A,Q,QQ) %ROUTINE %SPEC PSH (%INTEGER A,N) %ROUTINE %SPEC PN (%INTEGER A) %ROUTINE %SPEC PMS(%INTEGER A,M,Q) %ROUTINE %SPEC FILL LABEL (%INTEGER AT, EQUALS) %ROUTINE %SPEC FILL SET (%INTEGER AT, EQUALS) %ROUTINE %SPEC PRINT NAME (%INTEGER I) %ROUTINE %SPEC SKIP EXP %SWITCH SW(1:34), RFPD (1:8), RT(6:10),END(0:10) %INTEGER I,J,K,P,TYPE,Q,KK,KKK,QQ,JJ,JJJ,TYPE',F NAME %ROUTINE %SPEC CRSPEC (%INTEGER M) -> SW(A(1)) SW(1): %COMMENT [UI] [S] *JS3 %IF A(MARKER 2) = 2 %THEN -> 90 P = 2 CUI ->1 3: %IF OVERFLAG = 0 %OR LFLAG=1 %THEN -> 6 PSET(LINE) PQ(120,2,4) 6: *EXIT 1 SW(2): %COMMENT [%CYCLE ] *JS3 P = 2 CNAME(3) %UNLESS TYPE = 2 %THEN FAULT (25) PMS(1,N,LEVEL) CSEXP(2); ->5145 %UNLESS MC SWITCH =0 PN(34) 5145: CSEXP(2) PN(34) PMS(1,N+1,LEVEL);->5146 %UNLESS MC SWITCH =0 PN(34) 5146: CSEXP(2); ->5147 %UNLESS MC SWITCH =0 PN(34) PN(54) 5147: PN(46) PMS(1,N+2,LEVEL) ->5148 %UNLESS MC SWITCH=0 PJ(8,SL(5),13) 5148: PMS(0,N,LEVEL) PQ(120,13,2) PUSHDOWN 2(CYCLE(LEVEL),CA,N) PQ(65,13,0) N = N + 3; M10=0; M13=0 -> 1 SW(3): %COMMENT [%REPEAT ] [S] POPUP 2 (CYCLE(LEVEL),J,K) %IF J = -1 %THEN FAULT(1) PMS(0,K,LEVEL) PQ(120,13,2) PQ(64,13,0) PMS(0,K+1,LEVEL) PN(46) PMS(0,K+2,LEVEL) PJ(8,J,1) PN(42); M13=0 -> 1 SW(4): %COMMENT [N] [:] K = A(2); M10=0; M13=0 FIND LABEL %IF J = -1 %THEN -> 2 FAULT (2) -> 1 2: PUSHDOWN 2(LABEL(LEVEL),CA,K) -> 1 SW(5): %COMMENT [%IU ] [SC][REST OF COND] [%THEN ] [UI] [S] *JS3 Q = 2 -> 4 SW(6): %COMMENT [!][TEXT][S] -> 1 90: %COMMENT [UI][SET MARKER 2][REST OF SS1][%IU ][SC][REST OF COND] [S] Q = MARKER 2 + 1 4: P = Q+1 CCOND %IF A(1)=1 %THEN P=2 ->1234 %UNLESS A(P)=2 K = A(P+1) STORE JUMP PJ(10-A(Q),0,6) ->1 1234: PLABEL = PLABEL -1 K = PLABEL STORE JUMP PJ(7+A(Q),0,6) Q = PLABEL CUI; M10=0; M13=0 PUSHDOWN 2(LABEL(LEVEL),CA,Q) -> 1 SW(7): %COMMENT [TYPE] [NAME] [REST OF NAME LIST] [S] TYPE = 3-A(2) J = 0 P = 2 PN(33) %IF DIAGS=1 5: K = A(P+1) TESTNST STORE TAG (K) STORE NAME PN(34)%IF DIAGS=1 PMS(1,N,LE VEL) %IF DIAGS=1 N = N+1 P = P+2 %IF A(P) = 1 %THEN -> 5 PN(42) %IF DIAGS=1 -> 1 SW(8): %COMMENT [%END ] [S] *JS3;M10=0; M13=0 KKK = FLAG(LEVEL) 8401: POPUP2(ARRDIM(LEVEL),JJ,KK) ->50 %IF JJ=-1 COPYTAG(KK) FILL SET(JJ,J); ! FILL IN ARRAY DIM ->8401 50: %COMMENT COMPLETE LABELS JUMPS *JS2701 *ZERO; *NOT; **=A(2) **L(LEVEL); **=A(3) A(4)=M(LEVEL); A(5)=LEVEL; KK=5 56: %COMMENT CLEAR THE DECS POPUP 2(NAME(LEVEL),J,K) %IF J = -1 %THEN -> 857 JJ = K; FNAME = JJ COPYTAG (K) POPUP 2(TAGS(JJ),I,I) %IF TYPE=2 %THEN ->811 %IF TYPE =1 %THEN ->810 %IF J = 15 %AND LEVEL #1 %THEN FAULT(28) -> 56 %UNLESS 6 <= TYPE <= 10 JJ = K 58: POPUP 2 (ST(JJ),J,K) %IF J # -1 %THEN -> 58 RETURN CELL (JJ) -> 56 810: *ZERO; *NOT; *SHL32; ->812 811: *ZERO 812: **JJ; *SHL16; **K; *OR; *OR KK=KK+1; **=A(KK); ->56 820: KK=2; A(2)=-1 857: ->838 %IF DIAGS=0 %OR FAULTY=1 A(KK+1)=-1 *E419; *=C15; **@A(2) *DUP; *=I15; *SET99; *+ *=M15; *POAQ15 838: %IF KK=2 %THEN ->1 %COMMENT CHECK %CYCLE - %REPEAT POPUP 2(CYCLE(LEVEL),J,K) %IF J = -1 %THEN -> 59 FAULT(13) -> 857 59: %COMMENT PLANT ALLOCATION NEST UP INSTRUCTIONS %IF KKK = 1 %THEN PJ(8,SL(6),11) %IF 10 >= KKK>= 7 %THEN PJ(8,SL(11),11) FILL SET (SET(LEVEL),N) %IF 0#KKK#6 %THEN -> 60 PQ(105,LEVEL,12) PQ(64,12,0) PQ(120,LEVEL,2) PPJ(8,67,13) %IF DIAGS=1 %IF KKK =6 %THEN PJ(8,SL(4),11) 60: %IF KKK = 2 %THEN ->820 %IF LFLAG=1 %THEN ->4011 %IF LISTFLAG = 1 %THEN ->401 WRITE (LINE,5); SPACES (3*LEVEL-3) %CAPTION END _ OF _ ; ->END(KKK) END(0): %CAPTION BLOCK; ->401 END(1): %CAPTION PROGRAM; ->401 END(6): %CAPTION ROUTINE; ->401 END(7): %CAPTION REAL_FN; ->401 END(8): %CAPTION INTEGER _ FN; ->401 END(9): %CAPTION REAL _ MAP; ->401 END(10):%CAPTION INTEGER _ MAP; 401: %IF MC SWITCH = 1 %THEN DPCA NEWLINE 4011: %IF LEVEL > 2 %OR PERM = 1 %OR LFLAG = 1 %THEN -> 61 %IF KKK = 1 %THEN -> 62 FAULT(14) A(1) = 15 -> 1 61: %IF KKK # 1 %THEN -> 63 FAULT(15) -> 1 62: %IF FAULTY # 0 %THEN ->64 %BEGIN %INTEGER P,Q,R %CYCLE P=2,1,NLIB ->1 %IF RA(P)=1 %REPEAT **COMPILER; *J9#Z *E418; *=RC15; *E444; *=M15; *PMEQ15 *ZERO; *=E444 %IF LFLAG= 0%THEN ->9 6: **DEVNO; *E440; *=E420; *=E440 LFLAG = 0; A(1) = 15; *E9; *=E439; *E10; *=E443 *JS11 * 5: *M0M15Q * *=M0M14Q; *J5C14NZS ;!RESTORE BUFFERS %CAPTION \ ALL_LIBRARY_ITEMS_INSERTED RAL(LEVEL)=N;LEVEL =LEVEL + 1; ->9 2: *SET 35P: *=M14; *M0M14; *=Q15; *=C15;*SETB242; *DUP; *JS13 *SETB 302; *DUP; *=M0M14N; *SET 44P: *=M14; *M0M14; *=Q15; *PERM; *=M0M14N; *=C15 13: *=I15; *Q15; *=M0M14; *EXIT 1 12: *M+I15; *M15; *SETB37; *AND; *J12#Z; *EXIT 1 11: *SET 42P: ; *=RM14; *SET 68; *=C14; *SET 11; *=RM15; *EXIT 1 1: %IF LFLAG=1 %THEN ->3 LFLAG=1; A(1) =8; LISTFLAG = 0; LEVEL = LEVEL - 1 N=RAL(LEVEL) *E439; *=E9; *ZERO; *=E439; *E443; *=E10 *JS11 * 4: *M0M14Q * *=M0M15Q; *J4C14NZS;!DUMP BUFFERS IN PTFC *ZERO; *NOT; *=E443 *E420; *E440; **=DEVNO; *=E440 *E418; *DUP; *DUP *=E420; *JS2 8: *SET30P: *=Q14; *M0M14; *=Q15; *JS12; *JS7; ->110 7: *M0M15; *=Q13; *ZERO; *=TR *PARQ13; *J105TR; *PIAQ13 *E444; *NOT; *NEG; *=E444 *M0M15N; *=M15; *EXIT1 110: *JS12; *M-I15; *M-I15; *Q15; *=M0M14 3: 101: *E226; *=Q15 102: *JS12; *JS7; *M0M15; *M+I15 *J102>=Z; *Q15; *=E226; ->21 105: *E437; *E436; *SET2 *=C15; *JS25P; *ZERO; *OUT; ! PARITY 21: *JS49P; **=Q; ->21 %IF Q=10 %OR Q=32 R=Q-48; 23: *JS49P; **=Q ->22 %UNLESS '0'<=Q<='9' R=10R+Q-'0' ->23 22: ->101 %IF P>R ->9 %IF P=R *E418;*=RC15;*E444; *SET 5; *-;*DUP; *=M15; *J101<=Z *PMEQ15; *SET5; *=E444; ->101 9: %IF FAULTY#0 %AND LFLAG = 1 %THEN ->6 %END %IF LFLAG#0 %THEN ->1 64: KKK=2 63: LEVEL = LEVEL -1 %STOP %IF LEVEL <= 0 N = RAL(LEVEL) %IF KKK = 0 %THEN -> 1 %IF KKK = 2 %THEN -> 50 FROM LIST 2(JUMP(LEVEL),J,K) PUSHDOWN 2(LABEL(LEVEL),CA,K) -> 1 SW(9): %COMMENT [RT] [%SPEC '] [NAME] [FPP] [S] %IF A(3) = 2 %THEN -> 41 CRSPEC (0) -> 1 41: KKK = A(2) + 5 KK = A(4) COPY TAG(KK) -> 39 %UNLESS I = LEVEL -> 40 %IF J = 15 %AND TYPE = KKK F NAME = KK FAULT(7) %UNLESS TYPE = 0 39: CRSPEC(0) -> 41 40: J = 0;M10=0; M13=0 REPLACE TAG(KK) JJ = K P LABEL = P LABEL -1 K= P LABEL STORE JUMP PJ(8,0,11) RAL(LEVEL)=N %IF LISTFLAG = 1 %THEN ->4001 WRITE(LINE,5) ; SPACES(3*LEVEL) -> RT(TYPE) RT(6): %CAPTION ROUTINE _; ->400 RT(7): %CAPTION REAL _ FN _; ->400 RT(8): %CAPTION INTEGER _ FN _; ->400 RT(9): %CAPTION REAL _ MAP_; ->400 RT(10): %CAPTION INTEGER _MAP _ 400: SPACE ; PRINT NAME (KK) 4001: %IF MC SWITCH = 1 %THEN DPCA NEWLINE %IF LEVEL = 9 %THEN FAULT(34) %IF LEVEL < 10 %THEN -> 411 FAULT(35) ; %STOP 411: LEVEL = LEVEL +1 R = CA PQ(121,LEVEL,2) PQ(65,12,0) PQ(105,12,LEVEL) L(LEVEL)=LINE; M(LEVEL)=KK N=3; ->407 %IF DIAGS =0 *JS415 407: FLAG(LEVEL) = TYPE SET(LEVEL)=CA PSET(0) PQ(122,12,2) PPJ(8,95,13) %UNLESS MCSWITCH=1 FROM LIST 2 (ST(JJ),J,K) RA(J) = R %IF A(5) = 2 %THEN -> 42 P = 4 43: P = P+2 -> RFPD(A(P)) RFPD(1) : TYPE = A(P+1)+5; P = P+1; -> 44 RFPD(2) : TYPE = 4; -> 44 RFPD(3) : TYPE = 12; -> 44 RFPD(4) : TYPE = 2; -> 44 RFPD(5) : TYPE = 3; P = P+1; -> 44 RFPD(6) : TYPE = 11; -> 44 RFPD(7) : TYPE = 1; -> 44 RFPD(8) : TYPE=14 44: P = P + 1 LINK(JJ) %IF JJ # 0 %THEN -> 45 FAULT(8) -> 46 45: FROM LIST 2 (ST(JJ),J,JJJ) %IF J # TYPE %THEN FAULT (9) ->46 %IF 3#TYPE#4 PUSHDOWN2(ARRDIM(LEVEL),CA,A(P)) PSET(0) PMS(0,N,LEVEL) PPJ(8,66,13) 46: K = A(P) TESTNST %IF 6 <= TYPE <= 10 %THEN -> 47 J = 0 TYPE'=TYPE %IF TYPE=14 %THEN TYPE=2 STORE TAG(K) TYPE=TYPE' N = N+1 STORE NAME -> 99 47: NEWCELL(KK) J=0 R = N N = KK STORE TAG(K) STORE NAME N = R PUSHDOWN 2(ST(KK),JJJ,1000) 99: P = P+1 %IF A(P) = 1 %THEN -> 44 P = P +1 %IF A(P) = 1 %THEN -> 43 42: LINK(JJ) %IF JJ # 0 %THEN FAULT(10) ->1 SW(10): %COMMENT [%SPEC ] [NAME] [FPP] [S] CRSPEC(2) ->1 SW(11): %COMMENT [%COMMENT ] [TEXT] [S] ->1 SW(12): %COMMENT [TYPE'] [%ARRAY ] [ARRAY LIST] [S] *JS3 TYPE' = 4 %IF A(2) # 1 %THEN TYPE' = 3 Q = 2 15: P = Q +2 10: %IF A(P) = 2 %THEN -> 9 P = P+2 -> 10 9: KK = 0 1201: PQ(121,12,2) ; ! *M12 PQ(96,12,0); ! *M+I12 1202: P=P+1; PQ(96,12,0); ! *M+I12 CSEXP(2); PQ(67,12,0);! =M0M12Q CSEXP(2); PQ(67,12,0) KK=KK+1 %IF A(P)=1 %THEN ->1202 PSET(1); PQ(67,12,0) PN(34); ! DUP PQ(120,13,2); ! *=M13 PSET(KK) PQ(65,13,0); ! *=M0M13 M13=0;M10=0; QQ=Q+1 1205: K=A(QQ); PPJ(8,61,13) TESTNST;TYPE=TYPE' J=KK STORETAG(K); STORENAME PMS(1,N,LEVEL); ! =E(N)M(LEVEL) STORE ARRAYWORD N=N+1 %IF A(QQ+1)=2 %THEN ->1206 QQ=QQ+2; ->1205 1206: PN(42); ! ERASE Q=P+1; %IF A(Q)=1 %THEN ->15; ->1 SW(14): %COMMENT [%BEGIN ] [S] %IF LISTFLAG = 1 %OR LFLAG=1 %THEN ->4111 WRITE(LINE,5); SPACES(3*LEVEL) %CAPTION BEGIN 4111: %IF MC SWITCH = 1 %THEN DPCA NEWLINE RAL(LEVEL)=N LEVEL = LEVEL +1 %IF LEVEL = 10 %THEN FAULT(34) %IF LEVEL < 11 %THEN -> 412 FAULT(35) ; %STOP 412: PQ(121,LEVEL,2) PQ(65,12,0) PQ(105,12,LEVEL) L(LEVEL)=LINE; M(LEVEL)=0 N=2; ->413 %IF DIAGS=0 *JS415 413: FLAG(LEVEL) = 0 SET(LEVEL) = CA PSET(0) PQ(122,12,2) PPJ(8,95,13) %UNLESS MCSWITCH=1 ;M10=0; M13=0 ->1 415: PSET(LINE) PSET(LEVEL) PPJ(8,68,13) N=3; *EXIT1 SW(15): *JS3 ;! END OF PRGAM PERM = 0 KKK = 1 -> 50 SW(16): *SET 38P: ;!LIST *=Q14; *M0M14; *=Q15; *C15; *E421; *- *J1=Z; LISTFLAG = 1; ->1 SW(17): COPY TAG(A(2)) ;![NAME][+'] [CONST] [)] [:] %IF TYPE = 5 %AND I = LEVEL %THEN -> 29 FAULT(4) ->1 29: KK = K;M10=0; M13=0 KKK = A(5) %IF A(3) = 2 %THEN KKK = -KKK %IF ST(KK) <=KKK <= ST(KK+1) %AND A(4)=1 %THEN -> 30 FAULT(5) ->1 30: **CA; **@ST(KK+2) **KKK; **ST(KK); *-; *=M15 *=M14; *SHL24; *M14M15H *J31=Z; FAULT(6); *ERASE; ->1 31: *=M14M15H; ->1 SW(18): Q = 1; ![%SWITCH] [SWITCH LIST] [S] 28: P = Q +2 25: %IF A(P) = 2 %THEN -> 24 P = P +2 -> 25 24: P = P +1 %IF A(P+1)#1 %OR A(P+4)#1 %THEN ->1811 KKK=A(P+2) %IF A(P)=2 %THEN KKK=-KKK KK=A(P+5) %IF A(P+3)=2 %THEN KK=-KK ->1807 %IF KK 35 1807: FAULT(27) KK = KKK; JJ=N0+2 35: QQ = Q +1 27: K = A(QQ) TESTNST R=N TYPE = 5 J = 0 N = N0 STORE TAG(K) STORE NAME N = R %CYCLE I = N0 + 2,1,JJ+2 ST(I) = 0 %REPEAT ST(N0) = KKK ST(N0+1) = KK R=JJ-N0; N0 =JJ+2; JJ=N0+R %IF A(QQ+1) = 2 %THEN -> 26 QQ= QQ +2 -> 27 26: Q = P +6 %IF A(Q) = 2 %THEN -> 1 -> 28 1811: FAULT (18) KK=0 JJ=N0+2 KKK=0 -> 35 SW(19): QU = 1 ;![COMPILE QUERIES] [S] ->1 SW(20): QU = 0 ;! [IGNORE QUERIES] [S] ->1 SW(21): MC SWITCH =1 ;! [%MCODE] OVERFLAG =0 PERM =1 ->1 SW(28): MC SWITCH = 0 ;! [%END %OF %MCODE] OVERFLAG = 1 PERM = 0 -> 1 SW(22): %COMMENT [N][P][:] %IF MC SWITCH = 0 %THEN FAULT (32) %IF SL(A(2)) # 0 %THEN FAULT (33) SL(A(2)) = CA; M10=0; M13=0 %IF LFLAG = 1 %THEN ->1 WRITE (LINE,5); SPACES (3*LEVEL) WRITE (A(2),2) PRINT SYMBOL ('P') PRINT SYMBOL (':') DPCA; NEWLINE; ->1 SW(23): P = 2 ;![*] [UCI] [S] %IF MC SWITCH = 0 %THEN FAULT (32) MC SWITCH = 1 CUCI; M10=0; M13=0 ->1 SW(24): %COMMENT "%FAULT" [FAULT LIST] %IF LEVEL=2 %THEN -> 2401 FAULT(26) -> 1 2401: P=2; Q=P+1 2402: %IF A(Q)=2 %THEN ->2403 Q=Q+2; ->2402 2403: K=A(Q+1); PSET(A(P)) PPJ(8,84,13) STORE JUMP PJ(8,0,11); M13=0 P=P+2; ->2403 %IF A(P-1)=1 ->1 %IF A(P+1)=2 P=P+2; Q=P+1; ->2402 SW(25): LISTFLAG = 0 ;![%ENDOFLIST] ->1 SW(26): *DC3 ;![STRINGS] ->1 SW(27): NEWLINES(2) ;![%ENDOFPERM] LINE =-1 *JS2701; ->SW(28) 2701: POPUP2(JUMP(LEVEL),J,K) %IF J=-1 %THEN->2702 I=J; FIND LABEL %IF J#-1 %THEN ->2703 FAULT(11); WRITE(K,1);NEWLINE; ->2701 2703: FILL LABEL(I,J); ->2701 2702: POPUP2(LABEL(LEVEL),J,K) %IF J#-1 %THEN ->2702; *EXIT1 SW(29): %COMMENT [%DEFINE %COMPILER ][S] LINE=-1; COMPILER =0 *ZERO; *=E445 *SET5; *=E444 * JS 70 * JS 46 P INITIALISE *E425; *=M0M0H ** PP CURR * = Q13 * M13 * = +I 13 * M0 TO Q13 * Q13 ** = PP CURR *E419; *E441; *-; *J1=Z *SET1; *=C15; *E446; *JS25P *ZERO; *OUT 70: *SET 94P: ; *= RM13; *E7 ; *=M0M13 ;! DATE *M0 TO Q13 ; *J71EN 72: * = E102 M13 Q ; * J72 NEN 71: *C13; *NEG; *=E101; *ZERO; *=RM13 *J73EJ 74: *LINK ; * = E119 M13 Q ; *J74NEJ 73: *C13; *NEG; *=E118; *SET 15; *=RC14 *Q15 ; *Q14 ; *Q13 ; *Q12 ; *Q11 *Q10 ; *Q9 ; *Q8 ; *Q7 ; *Q6 *Q5 ; *Q4 ; *Q3 ; *Q2 ; *Q1 75: *=E135M14Q; *J75C14NZ; *ZERO; NEWLINE %CYCLE I = 1, 1, 8 ; *SHL 6 79: READ SYMBOL(J); ->79 %IF J=10 %OR J=32 PRINT SYMBOL (J) **J; *SET 32; *-; *SET 63; *AND; *OR %REPEAT ; ! TAPE IDENTIFIER NOW IN NS 80: *E384; *=Q15; *BUSYQ15; *J80TR NEWLINE *SET101; *DUP; *=M13 *DUP ; *M12 ; *REV * - * = RC14 ; *ZERO ; * ZERO * 76: *M13M14Q ; *; *STR; *+D; *J76C14 NZS *=M13M14Q; *=M13M14; *M+I12; *=I12 *SET 4; *DUP ; *=M15; *OUT; ! PICK UP TAPE *DUP ; * = C15 ; * = C12 *PMDQ15;*PMAQ15;*POAQ12;*I12=+1;! DUMP 101 TO WS + 1 *PMEQ15 ; *PARQ15 ; *J77NTR %CAPTION \PARITY _ FAILURE ; ->78 77: *C15;*SET 6;*OUT;! DEALLOCATE NEW COMPILER %CAPTION \ COMPILER _ DEFINED \ 78: WRITE (NUM,4) WRITE (NEXT,4) WRITE (N0,4) *I9 **=I WRITE (I,4) *M12 **=I WRITE (I,4) NEWPAGE *SET 38P:; *=M13; *M0M13 *SHL-32; *SET 6; *OUT *ZERO; *OUT SW(31): ABC=1; ->1; ! [COMPILE ARRAY BOUND CHECKS] SW(32): ABC=0; ->1; ! IGNORE ARRAY BOUND CHECKS SW(33): ->1; ! [S] SW(30): ->62; ! END OF PACK SW(13): M10=0; M13=0; ![*][*][*][A][S] 10/12/65 FOR ISO VERSION %BEGIN %INTEGER I,J,K,N,N0',TAPE,ZEROTAPE, N',FLAG,PFLAG %REAL TL,A' %SWITCH S(0:10) %ROUTINE %SPEC READ KEY WORD %ROUTINE %SPEC READ SYM %ROUTINE %SPEC INITIAL OUTPUT ->77;*; 62P: *165134/127722/16045; !ZEROTAPE *2701/43532/22756; !KEYWORDS IN *10014/101322/150262; !FIVE BIT CODE *1573/60226/13101; !A=1 B=2 ETC *5170/100000/0 *12014/5000/0 *7655/20532/0 *10014/5440/0; ! PAPER *11673/160000/0 *10010/153122/0 *1414/104000/0; ! CARD 77: *SET 62P:; *=M15; *M0M15; **=ZEROTAPE *E423; **=FLAG; PFLAG=0 * SET +1; *SET 89P:; * =M10 * SET +18 ; * =RC13 * 4: * NEG ; * DUP ; * =M10M13Q * ; * J4C13NZS * ERASE ; * ZERO ; * =M0M10 ->2 1: ->2 %IF LINE<20 ; INITIAL OUTPUT %CAPTION \\ FAULTY _ JOB _ HEAD ; %STOP 2: READ KEY WORD ->S(K) S(9): PFLAG = 1; ->3 S(0): %COMMENT KEY WORD UNKNOWN 3: ->1 %IF I=10 ; READ SYMBOL(I) ; ->3 S(1): %COMMENT EXECUTION READ(TL) READ SYM ->3 %UNLESS I=77 %OR I=83 %IF I=77 %THEN TL=60*TL TIME LIMIT=INT(TL) ->3 S(2): %COMMENT PARAMETER READ SYM ->3 %UNLESS I=42 N=0 ; N'=0 %CYCLE J=1,1,4; ! UNSCRAMBLE PARAMETER READ SYM ->3 %UNLESS 48<=I<=55 -> 21 %IF J=4 N=8N+I-48 ; N'=N'+I ; -> 22 21: ** I; **N'; *-; *SHL+45; *J3#Z 22: ** I; READ SYM; ** I; * NEV ** J; *-; *J3#Z %REPEAT ** N * SET 89P: * =M13 * =M0M13 ->3 S(7): %COMMENT PAPER *E420; *J7001>Z; *ZERO; *OUT 7001: *E438; *J7002<=Z *E438; *SET6; *OUT; *SET-2; *=E438 7002: *ZERO; *=E439 7003: *JS46P; INITIALISE; ->99 S(10): *E438; *J10001>Z *SET4; *SET5; *OUT; *=E438 10001: *SET1; *=E439; ->7003 S(8): %COMMENT SWOP %BEGIN *E420; *SET7; *-; *J2>=Z *E420; *SET6; *OUT *SET2; *SET5; *OUT *DUP; *=E420 *DUP; *SET 35P: *JS 1; *SET 44P: *JS 1 ->2 1: *=M14; *M0M14; *=Q15 *=C15; *Q15; *=M0M14; *EXIT 1 2: %END ->99 S(3): ! COMPILER AA OR AB READSYM;->3001 %IF I=66 ->3 %UNLESS I=65 %OR I=76 3002: READSYM; ->3003 %UNLESS I=10 LINE=-1; INITIAL OUTPUT ->99 ; ! TO END OF JOB HEAD BLOCK 3001: READSYM; ->3003 %UNLESS I=67 ABC=1;DIAGS=1; ->3002 3003: LINE=21; ->3 S(4): %COMMENT JOB 43: READSYM; ->43 %UNLESS I=10 %AND NEXTSYMBOL# 10 * SET 92P: ; *DUP ; *DUP %CYCLE J = 1,1,10 * NOT ; *NEG ; *DUP * ZERO %CYCLE K=40,-8,0 READ SYMBOL(I) ->41 %UNLESS I=10 ; J=10 ; ->42 41: **I **K * =C13 * SHLC13 * OR %REPEAT 42: * REV ; * = M13 ;* = M0M13 %REPEAT *PERM ; * = M13 ; * - ; *DUP; *NOT; *NEG; *SHL40; *OR; * = M0M13 -> 3 S(5): %COMMENT TAPE TAPE=1 51: READ KEY WORD ->S(K) %UNLESS TAPE=1 * ZERO %CYCLE J=42,-6,0 READSYM;I=I-32;!REDUCES TO KDF9 EQUIVALENT ->3 %UNLESS 16<=I<=58 **I; **J; *=C13; *SHLC13 * OR %REPEAT ** ZEROTAPE; * J54#;* ERASE * ZERO 54: READ SYM * SET 89P:; ** N; * DUP *+; *+; *=M13; *=M0M13 * SET +1 -> 52 %UNLESS I=42;!WRITE PERMIT *NEG 52: *=M0M13N 53: ->51 %IF I=10 ; READ SYMBOL(I) ; ->53 S(6): %COMMENT OUTPUT 61: READ SYM; ->61 %IF I =10 -> 3 %UNLESS 48<=I<=57 %OR I=79; ! ZERO OR LETTER O READ SYM %IF I='7' %OR I='E' %OR I='8' %THEN I='S' J=I %IF FLAG =1 %THEN J='L' %IF FLAG =-1 %THEN J='S' FLAG =FLAG -1 %IF I='S' 63: K=NEXT SYMBOL %IF '0'<=K<='9' %THEN ->62 SKIP SYMBOL %IF K='\' %THEN ->1 ->63 62: READ (A'); N=INT(A') READ SYM %IF I='B' %AND J='S' %THEN N=N*4096 %IF I='B' %AND J='L' %THEN N=N*200 %IF I='L' %AND J='S' %THEN N=N*60 %IF J='S' %AND N<4096 %THEN N=4096 %IF J='L' %AND N<200 %THEN N=200 **N *=E434 ->3 %ROUTINE READ SYM 1: READ SYMBOL(I) ; ->1 %IF I=32 %END %ROUTINE READ KEY WORD 1: READ SYM ; ->1 %IF I=10 LINE=LINE+1 ->8 %IF 49<=I<=56 TAPE=0 2: * ZERO %CYCLE J=40,-5,0 **I * SET 64 * - * DUP * SHL-5 * J4#Z **J * =C13 * SHLC13 * OR *SET62P:; *= RM15 %CYCLE K=1,1,10 *M0M15QN *J6= %REPEAT READ SYM %REPEAT * ZERO 4: * ERASE K=0 6: * ERASE ->10 8: N=I-48 9: K=0 10: %END %ROUTINE INITIAL OUTPUT ->1 %IF FLAG<0 *JS98P; ->2 1: *E421; *J3>Z; *SET1; *SET5; *OUT *=E421 3: *JS99P 2: *SET 92P: ; *I11 ; *- ; *JS3P ->4 %IF DIAGS =1 %CAPTION_____COMPILED_IN _OPTIMISING_MODE ->5 4: %CAPTION_____COMPILED_IN_DIAGNOSTIC_MODE 5: NEWLINES(2) %END 99: **PFLAG; *NEG; *=E443; %END ;! END OF JOB HEAD BLOCK ->1 %ROUTINE CRSPEC (%INTEGER M) %INTEGER KK,JJ,Q,JJJ,KKK %SWITCH FPD(1:8) P = A(2) +5 KK = A(4-M) COPY TAG(KK) %IF M#2 %THEN ->11 %IF I=LEVEL %AND 6<=TYPE<=10 %THEN ->33 FAULT(3) ->1 11: -> 32 %IF I # LEVEL -> 33 %IF TYPE = P 34: F NAME = KK FAULT(7) %UNLESS TYPE = 0 ->32 33: FROM LIST 2(ST(K),JJ,Q) %IF Q # 1000 %THEN -> 34 POPUP 2 (ST(K),JJ,Q) -> 35 32: JJ = NR NR = NR +1 NEWCELL(K) J = 15 TYPE = P R = N N = K STORE TAG(KK) N = R R = K K = KK STORE NAME K = R 35: JJJ = K Q = 0 %IF A(5-M) = 2 %THEN -> 36 P = 4-M 37: P = P+2 -> FPD(A(P)) FPD(1) : TYPE = A(P+1)+5; P = P+1; -> 38 FPD(2) : TYPE = 4; -> 38 FPD(3) : TYPE = 12; -> 38 FPD(4) : TYPE = 2; -> 38 FPD(5) : TYPE = 3; P = P+1; -> 38 FPD(6) : TYPE = 11; -> 38 FPD(7) : TYPE = 1; -> 38 FPD(8) : TYPE = 14 38: P = P +2 %IF 6 <= TYPE <= 10 %THEN -> 101 INSERT AFTER 2 (K,TYPE,0) 102: Q = Q+1 %IF A(P) = 1 %THEN -> 38 P = P +1 %IF A(P) = 1 %THEN -> 37 36: PUSHDOWN 2 (ST(JJJ),JJ,Q) ->1 101: INSERT AFTER 2 (K,TYPE,NR) NR = NR +1 -> 102 1:%END %ROUTINE CUI %INTEGER KK,Q %SWITCH SW(1:10) -> SW(A(P)) SW(1): %COMMENT [NAME] [APP] [SET MARKER 1] [REST OF UI] %IF A(MARKER 1) = 1 %THEN -> 3 P = P +1 CNAME(0) P = P +1 -> 1 3: Q = P +1 COPY TAG (A(Q)) P = MARKER 1 +1 KK = PARITY (TYPE) ->20 %UNLESS TYPE=0 %OR KK=-1 CSEXP(1) ->21 20: CSEXP(2) 21: %UNLESS A(P) = 1 = QU %THEN -> 2 %IF KK = 1 %THEN PJ(8,SL(20),13) %IF KK = -1 %THEN PJ(8,SL(21),13) M13=0 2: KK = P P = Q CNAME(1) P = KK +1 -> 1 SW(2): %COMMENT [->] [N] K = A(P+1) STORE JUMP PJ(8,0,11) P = P +2 -> 1 SW(3): %COMMENT [%CAPTION ] [CAPTION TEXT] PSET(A(P+1)) PPJ(8,3,13) M13=0 P = P +2 -> 1 SW(4): %COMMENT [%RETURN ] %UNLESS FLAG(LEVEL) = 6 %OR PERM = 1 %THEN FAULT(30) P = P +1 6: PQ(105,LEVEL,12) PQ(64,12,0) PQ(120,LEVEL,2) PPJ(8,67,13) %IF DIAGS=1 PJ(8,SL(4),11) ->1 SW(5): %COMMENT [%RESULT = ] [+'] [OPERAND] [REST OF EXPR] %UNLESS 7<= FLAG(LEVEL)<=10 %THEN FAULT(31) P = P +1 %IF FLAG(LEVEL) = 7 %THEN -> 5 CSEXP(2) ->6 5: CSEXP(1) ->6 SW(6): %COMMENT [%STOP ] PJ(8,SL(6),11) P = P +1 -> 1 SW(7): %COMMENT [->] [NAME] [(] [+'] [OPERAND] [REST OF EXPR] [)] COPY TAG(A(P+1)) KK = K %UNLESS TYPE = 5 %AND I = LEVEL %THEN FAULT(4) P = P +2 CSEXP(2) PSET(KK) PPJ(8,7,11) ->1 SW(8): %COMMENT "%MONITOR " [N] PSET(A(P+1)) PJ(8,SL(90),13) P=P+2;M10=0; M13=0;->1 SW(9): ->SW(6) %IF DIAGS=0; ! MONITORSTOP PPJ(8,24,11); P=P+1 1: %END * * * A SWOP  %ROUTINE CSEXP(%INTEGER Z) %COMMENT DATED 5/8/65 - FOR VER 4G WITH NEW PHRASE STUCTURE %COMMENT Z=1 FOR REAL, Z=2 FOR INTEGER,%C Z=3 FOR INTEGER IF POSSIBLE %INTEGER C,D,J,M,Q',N0',LC,TSF,Z',USENEST,NESTED %INTEGER %ARRAY OP(0:5) %SWITCH S1(1:4) %ROUTINE %SPEC PRINT ORDERS USENEST=0; NESTED=0 ->53 %IF A(P+1)=2 %AND A(P+2)=1 %AND A(P+4)=2 %COMMENT SINGLE SHORT CONSTANT %COMMENT IF DFLAG = 0 THEN AFLAG = 0, DFLAG + 1 ** DFLAG ; * DUP ; * J199 # Z ; AFLAG = 0 199: *NOT; *NEG; **=DFLAG ->201 %IF DFLAG>2 ->201 %IF A(P+1)=1 %AND A(P+3)=2 %AND A(P+4)=2 FFLAG=0; C=P; SKIP EXP; P=C; USENEST=1 %IF FFLAG=0 201:10: N0'=N0 ; TSF=2 %COMMENT Q', D, M, LC, OP(0) ALL TO 0 * ZERO ; * DUP ; * DUPD ;** = Q' ** = D ; ** = M; * DUP ; ** = LC ** = OP(0) ->1 %UNLESS A(P)=2 OP(1)=13 ; Q'=1 1: P=P+2 ; Q'=Q'+1 ; %COMMENT P TO OPERAND + 1 ->S1(A(P-1)) S1(1): %COMMENT P TO [NAME] ->2 %IF A(P+1)=1 COPY TAG(A(P)) ->2 %UNLESS TYPE=1 %OR TYPE=2 %OR TYPE=11 %OR TYPE=12 ST(N0)=TYPE ; ST(N0+1)=I ; ST(N0+2)=K N0=N0+3 P=P+3 ; ->20 ; %COMMENT R OF E + 1 2: CNAME(2) ; ->6 S1(2): %COMMENT P TO [CONST] TYPE=A(P)-1 ST(N0)= TYPE ; ST(N0+2)=A(P+1) ->5 %IF TYPE = 0 ST(N0+1)=13 ; LC=1 5: N0=N0+3 ; P=P+3 ; ->20 ; %COMMENT P = R OF E + 1 S1(4): M=1 ; %COMMENT ! EXPR ! S1(3): Z'=3 ; Z'=2 %IF Z=2 %OR OP(Q'-1) = 15 CSEXP(Z') %IF TYPE=0 %THEN TYPE=2 ; %COMMENT NUT MIGHT WRITE (0) ->6 %UNLESS M=1 PN(26-2*TYPE) M=0 6: P=P+1 ->35 %IF A(P-1) = 2 %AND Q' = 1 %AND (Z#2 %OR TYPE=2) ST(N0)=TYPE+2; ->301 %IF USENEST=0%OR NESTED>=3 NESTED=NESTED+1; ST(N0+1)=NESTED PN(53) %IF NESTED=2; ! REV PN(10) %IF NESTED=3; ! PERM N0=N0+3; ->20 301: ST(N0+1)=0; N0=N0+3 PQ(67,12,0); D=D+1 20: ->21 %UNLESS TYPE = 1 %OR TYPE =11 TSF=1 %IF Z=2 %THEN FAULT(24) %IF OP(Q'-1)=15 %THEN FAULT(39) 21: ->30 %IF A(P-1) = 2 OP(Q')=T(A(P)) %IF (OP(Q')=9 %OR OP(Q')=15) %AND Z#2 %THEN TSF=1 22: %IF OP(Q') >OP(Q'-1) +1 %THEN ->1 ST(N0)=OP(Q'-1) ; N0=N0+3 OP(Q'-1)=OP(Q') ; Q'=Q'-1 ->22 30: MOVEM(12,-D) ** LC ; * J32 = Z ->32 %IF M13=-1 PQ(121,11,4) PQ(120,13,2) M13=-1 32: %CYCLE J=Q'-1,-1,0 ST(N0)=OP(J) N0=N0+3 %REPEAT PRINTORDERS MOVEM(12,-D) TYPE=TSF 35: ->50 %UNLESS Z=1 %AND TYPE=2 ; PQ(121,1,4) PN(20) TYPE=1 50: %IF N0>N0'+6 %THEN AFLAG=1 %IF AFLAG*DFLAG*OVERFLAG=1 %THEN PJ(9,SL(8),8) DFLAG=DFLAG-1 N0=N0' ->60 ; %COMMENT END 53: %COMMENT SHORT CONSTANT ** A(P + 3) ; * DUP ; * J55 # Z ** = TYPE ; P=P+5 ; PN(33) ; -> 60 55: -> 56 %UNLESS A(P) = 2 ; * NEG 56: TYPE=2;*DUP; **=C; P=P+5; *NEG; *NOT; *J111=Z; PSET(C) 112: -> 60 %UNLESS Z = 1; PQ(121,1,4) ; PN(20) TYPE = 1 ; -> 60 ; %COMMENT END 111: PQ(121,12,4); ->112 %ROUTINE PRINT ORDERS %SWITCH S(0:15), S'(0:2) %INTEGER C,N',N,CELLS,M CELLS=0; %CYCLE J=N0',3,N0-6 N=ST(J) ->S(N) S(0): C = ST(J+2) ; N' = ST(J+3) ; ! SHORT CONSTANT -> S'(C) %IF C < 3 %AND (N' =5 %OR N' = 6) %AND TSF = 2 CELLS=CELLS+1 -> 1 %IF C = 2 %AND N' = 15 -> 2 %IF N' = 13 -> 3 S'(2): PN(47 - 4N') ; PN(3+4N') S'(1): PN(47-4N') ; PN(3+4N') S'(0): ST(J+3) = 14 ; -> 12 1: ST(J+3) = 8 ; PN(34) ; -> 12 2: ST(J+3) = 14 ; C = -C 3: N = 2 ; PSET(C) ; -> 9 S(1):S(2):CELLS=CELLS+1 PMS(0,ST(J+2),ST(J+1)) ; ->9 S(11):S(12):CELLS=CELLS+1 N=N-10 ; M=1000ST(J+1)+ST(J+2) ->1101 %IF M=M10 ->1102 %IF M=M13 PMS(0,ST(J+2),ST(J+1)) PQ(120,10,2); 1101: PQ(64,10,0) ;M10=M; ->9 1102: PQ(64,13,0); ->9 S(3):S(4): N=N-2 ; C=CELLS; CELLS=CELLS+1 ->401 %IF ST(J+1)=0 M=ST(J+3); ->9 %IF C=0 ->402 %IF C=2 ->403 %IF C=3 %IF C>=4 %THEN %CAPTION_CSEXP_CLANG_ 405: ->407 %IF TSF =1 %AND N=2 ->12 %IF M=5 %OR M=8 407: PN(53); ->9; ! REV 402: PN(54);->9; ! CAB 403: PN(10); PN(41);->405;! PERM REND 401: PQ(66,12,0) ; ->9 S(5): CELLS=CELLS-1; PN(74-14*TSF) ; ->12 S(6): CELLS=CELLS-1; PN(92-31*TSF) ; ->12 S(8): CELLS=CELLS-1; PN(24*TSF-20) %IF TSF=2 %THEN PN(40) ; ->12 S(9): CELLS=CELLS-1; PN(64-14*TSF) %IF TSF=2 %THEN PJ(8,SL(9),6) ->12 S(13): PN(27-2*TSF) ; ->12 S(15): M10=0; M13=0 CELLS=CELLS-1; PJ(8,SL(80+TSF),13) ; ->12 9: ->12 %UNLESS TSF=1 %AND N=2 %AND ST(J+3)#15 PQ(121,1,4) ; PN(20) 12:S(14): %REPEAT; %END 60: %END ; %COMMENT END OF CSEXP %ROUTINE CCOND %COMMENT DATED 4/6/65 - FOR VER 4G WITH NEW PHRASE STRUCTURE %COMMENT COVERS [SC] [REST OF COND] %INTEGER C,T %ROUTINE %SPEC CCC %ROUTINE %SPEC CSC %ROUTINE %SPEC CCOMP (%INTEGER C) DFLAG=DFLAG+1 %IF DFLAG=1 %THEN AFLAG=0 T= 0 CCC %IF AFLAG*DFLAG*OVERFLAG=1 %THEN PJ(9,SL(8),8) DFLAG=DFLAG-1 ->99 %ROUTINE CCC; %COMMENT T =0 FOR COND, T = 1 FOR AND-C,%C T=2 FOR OR-C %INTEGER LINE CSC C = A(P) P = P+1 -> 1 %UNLESS T=0 T=C C=C-1 1: -> 10 %IF C=2 PN(34) LINE=CA PJ(7+T,0,6) ; PN(42) CCC FILL LABEL(LINE,CA) M10=0; M13=0 10: %END %ROUTINE CSC %INTEGER LINE1,LINE2 -> 1 %IF A(P) = 1 P = P+1 CCOND -> 9 1: P = P+1 CSEXP(3) CCOMP(1); %COMMENT P TO R OF SC P = P+1 -> 9 %IF A(P-1) = 2 LINE1=CA PJ(8,0,6) CCOMP(2) LINE2=CA PJ(8,0,11) FILL LABEL(LINE1,CA) PN(42) ; PQ(121,12,4) FILL LABEL(LINE2,CA) M10=0; M13=0 9: %END %ROUTINE CCOMP (%INTEGER C) %COMMENT C=1 FIRST TIME, C=2 ON SECOND ENTRY %INTEGER T1, COMP, CTYPE %SWITCH S(1:7) T1=TYPE COMP=A(P) ; P=P+1 ; %IF COMP > 4 %THEN COMP = 11 - COMP CSEXP(3) ->1 %UNLESS C= 1=A(P) PN(34) ; PN(10) 1: CTYPE=31 ; %IF T1=1 %OR TYPE=1 %THEN CTYPE=63 ->3 %UNLESS T1*TYPE=2 ->2 %IF T1=1 PN(53) COMP=8-COMP 2: PQ(121,1,4) ; PN(20) 3: PN(CTYPE) ->S(COMP) S(4): PN(22) S(3): PN(23) ; PN(27) ; ->4 S(6): PN(23) S(2): PSH(116,-1) ; ->4 S(5): PN(27) ; PN(23) S(1):S(7):4: %END ; %COMMENT P TO 1 AFTER SEXP 99: %END ; %COMMENT END OF CCOND %ROUTINE CNAME(%INTEGER Z) %INTEGER JJ,KK,TYPE',RR,QQ,JJJ,II,Q,QQQ,PP %SWITCH SW(0:12), FPT(1:14) COPY TAG(A(P)) %IF I # -1 %THEN -> 3 F NAME = A(P) FAULT(16) I = LEVEL J = 0 K = A(P) TYPE = 0 STORE TAG(K) STORE NAME K = N N = N+1 3: JJ=J %IF JJ = 15 %THEN JJ = 0 %IF Z # 0 %THEN -> SW(TYPE) %IF TYPE = 6 %THEN ->SW(7) FAULT(17) %UNLESS TYPE = 0 ->SW(0) SW(5): %COMMENT %SWITCH FAULT(20) SW(0): %COMMENT NAME NOT SET P = P+1 11: TYPE = 2 %IF A(P) = 2 %THEN -> 6 -> 102 SW(3): %COMMENT %REAL %ARRAY SW(4): %COMMENT %INTEGER %ARRAY TYPE' = TYPE KK = K RR = I PP = P P = P+1 %IF A(P) = 1 %THEN -> 16 FAULT(19) P = P+1 -> 10 16: Q = 0 17: P = P+1 Q = Q+1 %IF JJ=1 %AND ABC=0 %AND A(P+1)=2 %AND A(P)=3 %C %AND A(P+2)=1 %AND A(P+4)=2 %AND A(P+5)=2 %THEN ->311 CSEXP(2) %IF A(P) = 1 %THEN -> 17 %IF JJ # 0 %THEN ->2 JJ = Q COPY TAG(A(PP)) J = JJ REPLACE TAG(A(PP)) 2: P = P +1 %IF Q = JJ %THEN -> 18 FAULT(19) -> 10 311: QQ=1000RR+KK ->313 %IF QQ=M13 PMS(0,KK,RR) PQ(120,13,2); 313: M13=QQ ->312 %IF Z=3 PMS(2-Z,A(P+3),13); ! ENM13 P=P+6; ->10 312: PSET(A(P+3)) P=P+6; ->307 18: QQ=1000RR+KK ->321 %IF QQ=M13 M13=0 PMS(0,KK,RR) %IF ABC=1 %THEN ->303 %IF Q=1 %THEN ->301 %IF Q=2 %THEN ->302 303: PPJ(8,69,13) ->10 %IF Z=3 PQ(120,13,2); ! =M13 304: PQ(66-Z,13,0); ! ='M0M13 10: TYPE=TYPE'-2; ->1 301: PN(46); !*+ PQ(120,13,2); ! =M13 305: ->304 %IF Z#3 PQ(121,13 ,2); ->10 302: PQ(120,13,14) PQ(122,13,2) PQ(121,13,4) PN(28); PN(40); 307: PQ(122,13,2); !*=+M13 M13=0; ->305 321: M13=0; ->307 SW(6): %COMMENT %ROUTINE IN EXPRESSION FAULT(23) ->SW(0) SW(7): %COMMENT %REAL %FN AND %ROUTINE SW(8): %COMMENT %INTEGER %FN SW(9): %COMMENT %REAL %MAP SW(10): %COMMENT %INTEGER %MAP TYPE '= TYPE 20: JJ = K FROM LIST 2 (ST(JJ),RR,K) P = P + 1 %IF I # 1 %OR RR>= 2 %THEN -> 400 %IF A(P) = 2 %THEN -> 402 411: Q = P %IF A(P + 1) = 3 %AND A(P + 2) = 1 %THEN -> 412 413: FAULT (22) P = Q 415: P = P + 1 SKIP EXP %IF A(P) = 1 %THEN -> 415 -> 414 412: P = P + 3 CNAME (3) %IF A(P) = 1 %THEN -> 413 P = P + 1 %IF RR = 1 %THEN -> 401 PSET(TYPE) PJ(8,SL(12),13) M10=0; M13=0 %IF A(P) = 1 %THEN -> 411 414: P = P + 1 -> 1 401: TYPE = 2 %IF A(P) =2 %THEN -> 414 FAULT (19) P = Q -> 415 400: %IF 2 <= RR <= NLIB %AND RA(RR)=0 %C %THEN RA(RR)=1 %IF K # 1000 %THEN -> 21 FAULT(21) -> 11 21: %IF A(P) = 1 %THEN -> 22 %IF K = 0 %THEN -> 37 402: FAULT(19) P = P + 1 TYPE = 2 ->1 22: %IF K # 0 %THEN -> 24 FAULT(19) -> 11 24: Q = 0 MOVEM(12,3) %UNLESS K=1 KK = K QQ = 0 26: LINK(JJ) FROM LIST 2 (ST(JJ), TYPE, JJJ) P = P + 1 -> FPT(TYPE) FPT(1) : %COMMENT %REAL CSEXP(1) -> 27 FPT(2) : %COMMENT %INTEGER CSEXP(2) -> 27 FPT(6) : %COMMENT %ROUTINE FPT(7) : %COMMENT %REAL %FN FPT(8) : %COMMENT %INTEGER %FN FPT(9) : %COMMENT %REAL %MAP FPT(10): %COMMENT %INTEGER %MAP QQQ = P %UNLESS A(P) # 3 %OR A(P+1) # 1 %OR A(P+3) # 2 %C %OR A(P+4) # 2 %THEN -> 28 33: P = QQQ SKIP EXP 29: FAULT(22) -> 32 28: II = TYPE F NAME = A(P + 2) COPY TAG(F NAME) %IF I = -1 %THEN FAULT(16) P = P + 5 %IF II = TYPE %THEN -> 31 FAULT(22) -> 32 31: J = K FROM LIST 2 (ST(J),I,K) %IF 2<=I<=NLIB %AND RA(I)=0 %THEN RA(I)=1 PMS(0,I,11) PMS(1,JJJ,11) -> 32 FPT(11): %COMMENT %REAL %NAME FPT(12): %COMMENT %INTEGER %NAME FPT(14): %COMMENT %ADDR II = TYPE -10 QQQ = P %IF A(P) # 3 %OR A(P+1) # 1 %THEN -> 33 P = P + 2 CNAME(3) %IF A(P) = 1 %THEN -> 33 P = P + 1 %IF II = TYPE %OR II=4 %THEN ->27 -> 29 FPT(3): %COMMENT %REAL %ARRAY %NAME FPT(4): %COMMENT %INTEGER %ARRAY %NAME II = TYPE QQQ = P %IF A(P) # 3 %OR A(P+1) # 1 %OR A(P+3) # 2 %OR A(P+4) # 2 %C %THEN -> 33 F NAME = A(P + 2) COPY TAG(F NAME) %IF I = -1 %THEN FAULT(16) %UNLESS II = TYPE %THEN FAULT (22) PMS(0,K,I) P = P + 5 27: ->2701 %IF KK=1 PQ(67,12,0) QQ = QQ +1 ->32 2701: PMS(1,3,12) 32: Q = Q +1 %IF Q = KK %AND A(P) = 2 %THEN -> 35 %IF A(P) = 1 %THEN ->36 FAULT(19) -> 41 36: %IF Q 26 FAULT(19) 40: P = P + 1 SKIP EXP %IF A(P) = 1 %THEN -> 40 -> 41 35: MOVEM(12,-QQ-3) %UNLESS KK=1 37: PMS(0,RR,11) PJ(8,SL(1),13) M10=0; M13=0 41: P = P+1 %IF TYPE' = 6 %THEN ->1 %IF 7 # TYPE' # 8 %THEN ->201 TYPE = TYPE' -6 %IF Z # 2 %THEN FAULT (29) ->1 201: TYPE = TYPE'-8 %IF Z = 3 %THEN ->1 PPJ(8,65,13)%IF ABC=1=Z %AND MCSWITCH=0 PQ(120,13,2) PQ(66-Z,13,0) -> 1 SW(1): %COMMENT %REAL SW(2): %COMMENT %INTEGER CMOD(1,Z) ->9 SW(11): %COMMENT %REAL %NAME SW(12): %COMMENT %INTEGER %NAME TYPE = TYPE -10 CMOD(0,Z) 9: P = P+1 %IF A(P) = 2 %THEN -> 6 FAULT(19) 102: P = P + 1 SKIP EXP %IF A(P) = 1 %THEN -> 102 6: P = P +1 1: %END %ROUTINE CMOD (%INTEGER N,Z) %INTEGER Q %SWITCH SW(1:6) Q=1000I+K -> SW(3N+Z) SW(1): SW(2): ->7 %IF M13=Q ->8 %IF M10=Q PMS(0,K,I) PQ(120,13,2) 7: PQ(66-Z,13,0) M13=Q; -> 1 8: PQ(66-Z,10,0); ->1 SW(3): SW(5): PMS(0,K,I) -> 1 SW(4): PMS(1,K,I) -> 1 SW(6): PSET(K) PQ(121,I,2) PN(46) 1: %END %ROUTINE FAULT (%INTEGER N) PRINT SYMBOL (42); WRITE (LINE,4) SPACES (3*LEVEL) %CAPTION FAULT _ WRITE (N,2) %IF FAULTY = 1 %THEN ->2 *E418; *=RC15; *E444; *=M15; *PMEQ15 *ZERO; *=E444 *E435; *SET1; *=C15; *JS25P %STOP %UNLESS LFLAG=0 2:FAULTY = 1; ->3 %IF N=28 -> 1 %IF 7 # N # 16 3: SPACE ; PRINT NAME(F NAME) 1: NEWLINE %UNLESS N=11 %END %ROUTINE PRINT NAME (%INTEGER I) %INTEGER J,K,N J = WORD(I); ** LETT(J); * ZERO ; * SHLD+8 *SET4; *-; *DUP; **=N; *J4>Z; ->2 1: J = J+1 ; ** LETT(J) ; N = N-6 ; %IF N<=0 %THEN -> 2 4: * ZERO ; * SHLD+8 ; * DUP ; * J3 # Z ; * ERASE * ERASE ; * J1 3: ** =K ; PRINT SYMBOL (K) ; -> 4 2: * SET+1 ; ** N ; * - ; * SHL+3 ; * =C13 ; * SHLC13 5: * ZERO ; * SHLD+8 ; * DUP ; * J6 # Z * ERASE ; * ERASE ; %RETURN 6: ** =K ; PRINT SYMBOL (K) ; -> 5 %END %ROUTINE TESTNST ** K * DUP ** = F NAME ** I; ** J ** TYPE COPY TAG (K) %IF I=LEVEL %AND TYPE#0 %THEN FAULT(7) 1: ** = TYPE ** = J ** = I ** = K %END %ROUTINE CUCI %INTEGER Q,I,J,RR,TT,AP %SWITCH EE(1:10) , E (97:103) AP=A(P) %IF AP <= 10 %THEN -> EE(AP) %IF AP <= 18 %THEN ->101 %IF AP >= 97 %THEN ->E(AP) %IF 90 <= AP <= 94 %THEN ->61 %IF 28 >= AP %THEN ->71 ->51 EE(1): %COMMENT [*] [`] [NAME] [APP] P = P +1 CNAME(3) -> 9 EE(2): %COMMENT [*] ['] [NAME] [APP] P = P + 2 CNAME (A(P-1)) -> 9 EE(3): %COMMENT [J] [N] [P'] [J-INSTR] %IF A(P+2) = 1 %THEN -> 10 K = A(P+1) STORE JUMP K = 0 11: P=P+3; ->21 10: K=SL (A(P+1)); FAULT(33) %IF K=0; ->11 21: %IF A(P) >=2 %THEN ->22 POPUP 2(JUMP(LEVEL),J,K); %COMMENT JRCQNZS PQ(127, A(P+1),0); ->9 * 53P: *0/5400/144; ! JRCQNZ *0/5000/144; ! JRCQZ *0/4400/6; ! JR=Z *0/4400/1; ! JR= *0/4000/6; ! JR#Z *0/4000/1; ! JR# *0/4400/4; ! JR>Z *0/4000/2; ! JR>=Z *0/4400/2; ! JR9 EE(4): ! [SET B] [OCTAL] PSET (A(P+1)) ->9 EE(5): ! [SET][N][P][:] PSET(SL(A(P+1))) ->9 EE(6): %COMMENT [JS] [N] [P'] %IF A(P+2) = 1 %THEN -> 12 K = A(P+1) STORE JUMP PJ(8,0,13) ->9 12: PPJ(8,A(P+1),13); ->9 EE(7): **A(P+1); *DUP; *NOT; *SET1 *AND; *SHL14; *REV; *SHL-1; *OR; **=RR; ! [EXIT] [N] PJ(8,RR,15);->9 EE(8): %COMMENT [='] [M] [N] [M] [N] [MS-INSTR] I = 0 %IF A(P+1) = 1 %THEN I = 1 Q = A(P+3) K = A(P+2) P = P+4 ->31 * 55P: *0/47000/106; ! MKMQQHN+MKMQQH *0/45000/102; ! MKMQQN+MKMQQ *0/46000/104; ! MKMQHN+MKMQH *0/44000/100; ! MKMQN+MKMQ 31: *SET 55P: *=M15 **A(P); *NEG;*NOT; *=M14 *M15 M14H; *SHL-24 **I; *+; **=I PQ(I,Q,K) ->9 * 56P: *0/70400/162; ! SHA (N OR CQ) + SHAD (N OR CQ) *0/72000/166; ! SHL (N OR CQ) + SHLD (N OR CQ) *0/73400/0; ! SHC (N OR CQ) EE(9):P=P+1 35: *SET 56P: *=M15 **A(P); *NEG;*NOT; * DUP; *SET 5; *-; *DUP *J 36>=Z *REV 36: *=M14 *M15 M14H; *SHL-24 **=I *J 1001 >=Z 1000: K=A(P+2) %IF A(P+1) = 2 %THEN K=-K PSH (I,K); ->9 1001: PQ(I,A(P+1),0); ->9 * 57P: *0/74000/16; ! =QQ *0/74000/10; ! =CQ *0/74000/4; ! =IQ *0/74000/2; ! =MQ *0/74000/11; ! =RCQ *0/74000/5; ! =RIQ *0/74000/3; ! =RMQ *0/75000/16; ! =+QQ *0/75000/10; ! =+CQ *0/75000/4; ! =+IQ *0/75000/2; ! =+MQ *0/52000/4; ! TLOQQ *0/56000/2; ! INTQQ *0/50400/0; ! PARQQ *0/50000/2; ! BUSYQQ *0/50000/1; ! MANUALQQ *0/74400/16; ! QQ *0/74400/10; ! CQ *0/74400/4; ! IQ *0/74400/2; ! MQ *0/61000/0; ! NCQ *0/61400/0; ! DCQ *0/71400/0; ! X+CQ EE(10):P=P+1 41: %IF A(P)#1 %THEN ->42 PQ(124,0,0); ->9; !=LINK 42: *SET 57P: *=M15 ** A(P); *SET 2; *-; *=M14 43: *M15 M14; *ZERO; *SHLD+24; **=I *SHL-24; **=J 2: PQ(I,A(P+1),J); ->9 * 63P: *0/67400/154; !QK OR CK TO QQ *0/65000/151; !IK OR MK TO QQ *0/65400/155; !IMK ORCMK TO QQ *0/67000/0; !CIK TO QQ 101: *SET 63P:; *=M15; **AP; *SET 11; *- *=M14; *M15M14H; *SHL-24; *DUP; *J102=Z **=I; J=A(P+2); ->2 102: *ERASE %COMMENT [I] [N] [=] [+'] [N] K = A(P+3) ; I = 0 %IF A(P+2)=2 %THEN K=-K %IF K = 1 %THEN I = 4 %IF K = -1 %THEN I = 5 %IF K = 2 %THEN I = 6 %IF K = -2 %THEN I = 7 %IF I = 0 %THEN FAULT(33) PQ(96+I,A(P+1),0) ->9 * 60P: *0/10400/20; ! ROUNDHF + ROUNDF *0/6000 /16; ! ROUNDH + ROUND *0/12400/24; ! FLOATD + FLOAT *0/25000/51; ! ERASE + REVD *0/32400/41; ! REV + ZERO *0/21400/42; ! DUPD + DUP *0/34400/31; ! NEGDF + NEGF *0/4000 /27; ! NEGD + NEG *0/14000/26; ! ABSF + ABS *0/35000/32; ! MAXF + MAX *0/37400/37; ! SIGNF + SIGN *0/33000/67; ! CAB + FRB *0/34000/63; ! STAND + /DF *0/30400/62; ! /D + /F *0/32000/44; ! /R + /I *0/30000/23; ! / + +DF *0/27400/74; ! +D + +F *0/27000/22; ! + + -DF *0/25400/75; ! -D + -F *0/17000/5; ! - + XDF *0/16000/4; ! XD + XF *0/3400 /0; !X+F +X+ *0/1000 /3; !=TR +BITS *0/7400 /12; !DUMMY +PERM *0/5400/11; !TOB +OR *0/400 /15; ! VR +NEV *0/15400/45; ! NOT + FIX *0/23400/50; ! STR + CONT *0/26000/0; ! AND (EXIT) *0/0/35; ! (OUT) + X *0/0/0; ! (I/0 INSTR) 51: *SET 60P: *=M15; **AP; *SET 29; *- *=M14; *M15M14H; *SHL-24; **=TT %IF TT=0 %THEN ->52 PN (TT); ->9 52: %IF AP= 72 %THEN ->53 %IF AP=86 %THEN ->54 %IF AP= 89 %THEN ->45 PJ (8,0,9); ->9; !(87)OUT 53: PSH (115,0); ->9; ! X+ 54: PJ (8,16384,15); ->9; ! EXIT 61: *SET 57P: *=M15; **AP; *SET 79; *-; *=M14 ->43 71: **AP; *SET 25; *J 75= *SET 26; *J 76= *SET 27; *J 77= *SET 28; *J 78= *SET 57P: *=M15; *SET 3; *-; *=M14; ->43 75: *ERASE; PQ(123,0,0);->9 76: *ERASE; P=P+1; I=95+A(P); J=0; ->2 77: *ERASE; I=115;->1000 78: *ERASE; *SET 57P: *=M15; *SET 22; *=M14; ->43 * 59P: *0/52000/0; ! PIAQQ *0/52400/0; ! PIBQQ *0/52000/10; ! PICQQ *0/52400/10; ! PIDQQ *0/53000/0; ! PIEQQ *0/53400/0; ! PIFQQ *0/54000/0; ! POAQQ *0/54400/0; ! POBQQ *0/54000/10; ! POCQQ *0/54400/10; ! PODQQ *0/54000/14; ! P0EQQ *0/54000/4; ! POFQQ *0/56000/0; ! PMAQQ *0/50000/10; ! PMBQQ *0/50000/4; ! PMCQQ *0/57000/10; ! PMDQQ *0/57000/0; ! PMEQQ *0/51000/0; ! PMFQQ 45: *SET 59P: *=M15 TT=6A(P+1) + A(P+2)-7 **TT; *=M14 *M15 M14 *ZERO; *SHLD+24; **=I; *SHL-24; **=J; 1: PQ (I,A(P+3),J); ->9 E(97): %COMMENT [SET] [+'] [N] K = A(P+2) %IF A(P+1)=2 %THEN K = -K PSET(K) ->9 E(98): %COMMENT [ADVCA] [N] %CYCLE I=1,1,2A(P+1) PSET(0) %REPEAT ->9 E(99): %COMMENT [OCTAL][/][OCTAL][/][OCTAL] %CYCLE I = P+1,1,P+3 J = A(I) **J * SHL-8 ** = Q PN(Q) ; PN(J) %REPEAT -> 9 E(100): %COMMENT [= '] [E] [N] [E-INSTR] [M] [N] [Q] I = 0 J = A(P+3) %UNLESS J = 3 %THEN I = A(P +4) Q = 2-A(P+1) %IF J = 1 %THEN Q = Q+2 PMS(Q,A(P+2),I) -> 9 E(101): %COMMENT [JS] [E] [N] PJ(8,A(P+1),13) -> 9 E(102): %COMMENT [J] [E] [N] PJ(8,A(P+1),11) -> 9 E(103): %COMMENT 0 8: ** PP CURR * = Q13 * J9 C13 Z PN(15) -> 8 9: %END %ROUTINE MOVEM(%INTEGER M,N) %SWITCH S (-2:2) ->S(N) %IF 2>=!N! PSET(N); PQ(122,M,2); ->1 S(-2): PQ(97,M,0) S(-1): PQ(97,M,0); ->1 S(2): PQ(96,M,0) S(1): PQ(96,M,0) S(0):1: %END %ROUTINE FIND LABEL ** K ** LABEL(LEVEL) * = Q15 * M15 * J1 3 2: * C15 ** V0 * AND -> 4 1: * SET -1 4: ** = J * ERASE %END %ROUTINE COPY TAG (%INTEGER KK) ** TAGS (KK) * = Q15 * M15 * J1 2 1: * SET-1 * DUP * DUPD 2: ** = TYPE ** = I ** = J ** = K %END %ROUTINE REPLACE TAG (%INTEGER KK) ** TAGS(KK) * = M15 * M15 * J1>=Z * M0 TO Q15 1: ** K * = I15 ** TYPE * SET 255 * AND * SHL 8 ** I * SET 15 * AND * SHL 4 ** J * SET 15 * AND * OR * OR * = C15 * Q15 ** = TAGS(KK) %END %ROUTINE FROM LIST 2 (%INTEGER %NAME CELL, S1,S2) ** CELL * = Q15 * M15 * J1 2 1: * SET -1 * DUP 2: ** = S2 ** = S1 %END %ROUTINE POPUP 2 (%INTEGER %NAME CELL, S1,S2) ** CELL * = Q15 * M15 * DUP * J1 3 2: * SET -1 ** = CELL -> 3 1: * DUP ** = S1 ** = S2 3:%END %ROUTINE STORE TAG (%INTEGER KK) %INTEGER Z **TYPE * SET 255 * AND * SHL8 ** LEVEL * SET 15 * AND * SHL 4 ** J * SET 15 * AND * OR * OR ** = Z PUSHDOWN 2 (TAGS(KK),Z,N) %END %ROUTINE PUSHDOWN 2 (%INTEGER %NAME CELL, %INTEGER S1,S2) ** CELL * DUP * = C15 * C15 * J1=Z * DUP * = I9 3: * = M15 * M9M15 * = C9 * = M9M15 4: ** S1 * = C15 ** S2 * = I15 * Q15 ** = CELL -> 5 1: * M0 TO Q15 * ERASE -> 4 5:%END %ROUTINE LINK (%INTEGER %NAME STAD) ** STAD * DUP * J1<=Z * = M15 * M9M15 * = C15 * C15 1: ** = STAD %END %ROUTINE MORE SPACE %CAPTION ASL _ EMPTY %STOP %END %ROUTINE NEW CELL (%INTEGER %NAME STAD) * J1 C9 NZ MORE SPACE 1: * C9 * DUP ** = STAD * DUP * I9 * - * J2>=Z * DUP * = I9 2: * = M15 * M9M15 * = C9 * SET-1 * = M9M15 %END %ROUTINE RETURN CELL (%INTEGER %NAME STAD) ** STAD * DUP * = M15 * C9 * = M9M15 * = C9 %END %ROUTINE INSERT AFTER 2 (%INTEGER %NAME STAD, %INTEGER S1, S2) %INTEGER I I = STAD LINK (STAD) %IF STAD = 0 %THEN -> 1 %IF STAD = -1 %THEN STAD = I -> 2 1: NEWCELL (STAD) **I * =M15 * M9M15 ** STAD * OR * =M9M15 2: PUSHDOWN 2(ST(STAD),S1,S2) %END %ROUTINE SKIP EXP %SWITCH SW(1:4) 3: P=P+1 -> SW(A(P)) SW(1): P=P+2 COPYTAG(A(P-1)); FFLAG=1 %IF 7<=TYPE<=10 5: P=P+1 -> 1 %IF A(P-1)=2 SKIP EXP -> 5 SW(2): P=P+3 -> 1 SW(3):SW(4): P=P+1; SKIP EXP 1: P=P+1 %IF A(P-1) = 1 %THEN -> 3 %END %ROUTINE STORE JUMP PUSH DOWN2(JUMP(LEVEL),CA,K) %END %ROUTINE STORE NAME PUSHDOWN 2(NAME(LEVEL),0,K) %END %ROUTINE PSET (%INTEGER N) ** N * DUP * ABS * NEG * NOT * J1 = Z * DUP * SHL-8 * SET 196 * SET 3 * = C14 * JS 50 P -> 2 1: PN(33) PN(27) * J2 < Z PN(23) 2:%END %ROUTINE PSH (%INTEGER A,N) ** N * NOT * SHL 1 * NOT ** A * SET 2 * = C14 * JS 50 P %END %ROUTINE PN (%INTEGER A) ** A * SET 1 * = C14 * JS 50 P %END %ROUTINE PQ (%INTEGER A,Q,QQ) ** Q * SHL 4 ** QQ * SET 15 * AND * OR ** A * SET 2 * = C14 * JS 50 P %END %ROUTINE FILL LABEL (%INTEGER AT, EQUALS) ** EQUALS ** AT * JS 51 P %END %ROUTINE FILL SET (%INTEGER AT, EQUALS) ** EQUALS ** AT * JS 52 P %END %ROUTINE PPJ (%INTEGER I,J,K) J=SL(J) FAULT(33) %IF J=0 PJ(I,J,K) %END %ROUTINE PJ (%INTEGER A,S,B) ** S * DUP * SHL-8 * DUP * SET 15 * AND ** B * SHL 4 * OR * REV * DUP * SET 16 * AND * SHL-1 * REV * SHL-5 * SET 7 * AND ** A * SHL 4 * OR * OR * SET 3 * = C14 * JS 50P %END %ROUTINE PMS (%INTEGER A,M,Q) ** M * DUP * DUP * SHL-8 * SET 15 * AND ** Q * SHL 4 * OR ** A * SET 7 * AND * SET 192 * OR * CAB * SHL-9 * SET 56 * AND * OR * SET 3 * = C14 * JS 50P %END 1:%END; ! OF CSSS %END %OF %PROGRAM