%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