----------- grammar: P[UCI]= "*""`"[NAME][APP][ENAME'], "*"[='][NAME][APP][ENAME'], "J"[N][P'][J-INSTR], "SET""B"[OCTAL], "SET"[+'][N][P'][COL'], "JS"[N][P'], "EXIT"[N], [=']"M"[N]"M"[N][MS-INSTR], "SH"[SH-INSTR], "=TR", "ZERO", "ROUND", "ERASE", "ABS", "MAX", "SIGN", "CAB", "/I", "BITS", "DUMMY", "PERM", "OR", "VR", "NEV", "NOT", "STR", "CONT", "AND", "REV"[D'], "DUP"[D'], "NEG"[D'], "/"[D'], "+"[D'], "-"[D'], "X"[D'], "EXIT", "OUT", "="[QS-INSTR], [QSTR][N]"TOQ"[N], "I"[N]"="[+'][N], [QSTR][N], "NC"[N], "DC"[N], "LINK", "M"[+]"I"[N], "P"[IOM][ATOF]"Q"[N], "TLOQ"[N], "PARQ"[N], "BUSYQ"[N], "MANUALQ"[N], "ADVCA"[N], [OCTAL]"/"[OCTAL]"/"[OCTAL], [=']"E"[N][E-INSTR], "JS""E"[N], "J""E"[N], "PUT"[OCTAL], 0; P[J-INSTR]= "C"[N]"NZ""S", "C"[N]"NZ", "C"[N]"Z", [COMP]"Z", "=", "#", "V", "NV", "EN", "NEN", "EJ", "NEJ", "TR", "NTR", 0; P[MS-INSTR]= "QHN", "QH", "QN", "Q", "HN", "H", "N", 0; P[SH-INSTR]= "A"[D'][+'][N], "L"[D'][+'][N], "C"[+'][N], "A"[D']"C"[N], "L"[D']"C"[N], "CC"[N] ; P[QS-INSTR]= "LINK", "R"[QSTR][N], [+'][QSTR][N]; P[+]= "+", "-"; P[=']= "=", 0; P[P']= "P", 0; P[IOM]= "I", "O", "M"; P[ATOF]= "A", "B", "C" "D", "E", "F"; P[E-INSTR]= "M"[N]"Q", "M"[N], 0; P[QSTR]="M", "I", "C", "Q"; P[D']= "D", 0; P[COL']= ":", 0; ----------- code: %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