%MCODE %BEGIN [ a kludge to mark start of global variables %MONITORBEGIN %COMMENT PERMANENT MATERIAL %ROUTINESPEC READ %INTEGERFNSPEC ADDR %ROUTINESPEC READ BINARY (%INTEGERNAME N) %ROUTINESPEC PRINT(%REAL X, %INTEGER M,N) %ROUTINESPEC CHANGE INPUT %ROUTINESPEC CHANGE OUTPUT %REALFNSPEC CPU TIME %REALFNSPEC ELAPSED TIME %ROUTINESPEC PUNCHBINARY (%INTEGER N) %REALFNSPEC ARCSIN (%REAL X) %REALFNSPEC ARCCOS (%REAL X) %REALFNSPEC RADIUS (%REAL X,Y) %REALFNSPEC LOG (%REAL X) %REALFNSPEC EXP (%REAL X) %REALFNSPEC SQRT (%REAL X) %REALFNSPEC COS (%REAL X) %REALFNSPEC SIN (%REAL X) %REALFNSPEC TAN (%REAL X) %REALFNSPEC ARCTAN (%REAL X,Y) %ROUTINESPEC READ CARD BINARY(%ADDR M) %ROUTINESPEC READ CARD ISO(%ADDR M) %ROUTINESPEC CARD READER %INTEGERFNSPEC IFIELD BINARY(%INTEGERARRAYNAME I,%INTEGER J,K,%INTEGERNAME M) ;[ removed continuation %INTEGERFNSPEC IFIELD ISO(%INTEGERARRAYNAME I,%INTEGER J, K,%INTEGER %NAME M) ;[ removed continuation %INTEGER %FNSPEC FROM BINARY(%INTEGER N) %REALFNSPEC RFIELD BINARY (%INTEGERARRAYNAME I, %C %INTEGER J,K, %INTEGERNAME M) %REALFNSPEC RFIELD ISO(%INTEGERARRAYNAME I, %C %INTEGER J,K, %INTEGERNAME M) %INTEGERFNSPEC CRPARITY %INTEGERFNSPEC AND(%INTEGER I,J) %INTEGERFNSPEC OR(%INTEGER I,J) %INTEGERFNSPEC NOT(%INTEGER I) %INTEGERFNSPEC NEV(%INTEGER I,J) %INTEGERFNSPEC BITS(%INTEGER I) %INTEGERFNSPEC SHIFT (%INTEGER I,J) %INTEGERFNSPEC SHIFTC(%INTEGER I,J) %ROUTINESPEC CLAIM TAPE(%INTEGER I) %ROUTINESPEC RELEASE TAPE (%INTEGER I) %ROUTINESPEC FILE THIS PROGRAM (%INTEGER I,J,K) %ROUTINESPEC ENTER FILED PROGRAM (%INTEGER I,K) %ROUTINESPEC WRITE TO FILE(%INTEGER I,%INTEGERNAME J, %C %ADDR M,N) %ROUTINESPEC READ FROM FILE (%INTEGER I, %INTEGERNAME J,%C %ADDR M,N) %ROUTINESPEC SEARCH ABSOLUTE (%INTEGER N) %ROUTINESPEC POSITION TAPE (%INTEGER I,J) %INTEGERFNSPEC TAPE BUSY (%INTEGER I) %ROUTINESPEC CLAIM TAPE FOR READING (%INTEGER I,J) %ROUTINESPEC MFAULT (%INTEGER N,CHANNEL) %ROUTINESPEC CHARSPERLINE(%INTEGER N) %ROUTINE %SPEC INVERT K (%ARRAY %NAME A,B,%INTEGER N,%REAL %NAME DET) %REALFNSPEC DET K (%ARRAY %NAME A,%INTEGER N) %ROUTINE %SPEC EQN SOLVE K(%ARRAY %NAME A,B,%INTEGER N,%REAL %NAME DET) %ROUTINE %SPEC MATRIX DIV K (%ARRAY %NAME A,B,%INTEGER N,M, %C %REAL %NAME DET) %ROUTINE %SPEC UNIT K (%ARRAY %NAME A,%INTEGER N) %ROUTINE %SPEC NULL K(%ARRAY %NAME A,%INTEGER N,M) %ROUTINE %SPEC MATRIX ADD K (%ARRAY %NAME A,B,C,%INTEGER N,M) %ROUTINE %SPEC MATRIX SUB K (%ARRAY %NAME A,B,C,%INTEGER N,M) %ROUTINE %SPEC MATRIX COPY K (%ARRAY %NAME A,B,%INTEGER N,M) %ROUTINE %SPEC MATRIX MULT K (%ARRAY %NAME A,B,C,%INTEGER N,P,M) %ROUTINE %SPEC MATRIX MULT K' (%ARRAY %NAME A,B,C,%INTEGER N,P,M) %ROUTINE %SPEC MATRIX TRANS K (%ARRAY %NAME A,B,%INTEGER N,M) %ROUTINESPEC SETUPA (%INTEGER I,J) %ROUTINESPEC PACKCARDS (%INTEGERNAME I,%INTEGER J,K) %ROUTINESPEC INITIALISE (%INTEGER I,J,K,M) %ROUTINESPEC NEXTCARD %ROUTINESPEC SKIP(%INTEGER N) %INTEGERFNSPEC BINARY (%INTEGER I) %INTEGERFNSPEC ALPHA (%INTEGER I) %INTEGERFNSPEC IFIELD (%INTEGER I,J) %INTEGERFNSPEC ERROR %INTEGERFNSPEC CURRENTCARD %INTEGERFNSPEC CURRENTBLOCK %INTEGERFNSPEC CURRENTTYPE %ROUTINESPEC WRITE CARD(%INTEGERARRAYNAME A, %INTEGERNAME %C I,%INTEGER J,K) %ROUTINESPEC LAST CARD(%INTEGERNAME I,J) %ROUTINESPEC PATCH(%INTEGERARRAYNAME A,%INTEGER I,J,K) %ROUTINESPEC DPRINT(%REALNAME X1,X2,%INTEGER M,N) %ROUTINESPEC DPRINTFL(%REALNAME X1,X2,%INTEGER N) %ROUTINESPEC SA %ROUTINESPEC DIV %ROUTINESPEC MULT %ROUTINESPEC SETUP %ROUTINESPEC PFD %ROUTINESPEC PDS %ROUTINESPEC DA(%REALNAME A1,A2,B1,B2,X1,X2) %ROUTINESPEC DS(%REALNAME A1,A2,B1,B2,X1,X2) %ROUTINESPEC DM(%REALNAME A1,A2,B1,B2,X1,X2) %ROUTINESPEC DD(%REALNAME A1,A2,B1,B2,X1,X2) %ROUTINESPEC DMOD(%REALNAME A1,A2,X1,X2) %ROUTINESPEC DCON(%REAL A,%REALNAME X1,X2) %ROUTINESPEC DSQRT(%REALNAME X1,X2,Z1,Z2) %ROUTINESPEC DREAD(%REALNAME A1,A2) %ROUTINESPEC PRINT FL (%REAL X, %INTEGER N) %ROUTINESPEC READ SYMBOL (%INTEGERNAME N) %INTEGERFNSPEC NEXT SYMBOL %ROUTINESPEC SKIP SYMBOL %ROUTINESPEC PRINT SYMBOL (%INTEGER N) %ROUTINESPEC NEWLINE %ROUTINESPEC NEWLINES (%INTEGER N) %ROUTINESPEC WRITE(%INTEGER M,N) %ROUTINESPEC SPACE %ROUTINESPEC SPACES (%INTEGER N) %REALFNSPEC FRACPT (%REAL X) %REALFNSPEC MOD (%REAL X) %INTEGERFNSPEC INT (%REAL X) %INTEGERFNSPEC INT PT (%REAL X) %INTEGERFNSPEC PARITY (%INTEGER N) %ROUTINESPEC RUN OUT(%INTEGER N) %ROUTINESPEC NEWPAGE %REALMAPSPEC REAL(%INTEGER S) %INTEGERMAPSPEC INTEGER(%INTEGER S) [ next come global variables displaced from PERM [ these are not really global, but are local variable in code routines %INTEGER P,Q,R ;[ displaced global %INTEGER CHAR ;[ displaced global [ %INTEGER P,Q displaced global == but duplicated %INTEGER W0 ;[ displaced global *JS 999 *J 1000 * 41P: *41120/0/0 *41744/0/0 *43516/20000/0 *46737/57020/0 *55507/6744/157602 *72716/161326/152025 42P: *37715/10100/0 *0/0/0 *J909;* *ADVCA30 35P: *0/242/277 *0/0/302 *ADVCA 30 44P: *0/302/337 *0/0/242 30P: *0/0/0 31P: *0/0/0 36P: *0/0/0 40P: *177777/177777/177777 *177777/177777/177777 *ADVCA 35 22P: *0/20000/53 *0/21400/0 *0/57400/50 *0/22400/41 *0/60000/43 *0/24400/41 *0/22000/52 *0/26000/57 *0/30000/61 *0/31000/63 *0/32000/65 *0/33000/67 *0/34000/71 *0/37000/73 *0/36000/46 *0/26400/56 *0/37400/101 *0/41000/103 *0/42000/105 *0/43000/107 *0/44000/111 *0/45000/113 *0/46000/115 *0/47000/117 *0/50000/121 *0/51000/123 *0/52000/125 *0/53000/127 *0/54000/131 *0/55000/47 *0/36400/42 *0/56000/72 89P:*ADVCA 18 *017451/060716/175634 32P: *0/0/70066 *160/22000/14 *160/31400/6 *160/20400/107 *0/5000/113 *0/46400/35 *0/47000/36 *0/57400/17 *0/50000/21 *0/11000/123 *0/12000/125 *0/53000/27 *0/14000/131 *0/44000/134 *160/66000/11 *160/23400/70161 *0/15400/41 *0/21000/143 *0/22000/145 *0/63000/47 *0/24000/151 *0/65000/53 *0/66000/55 *0/27000/157 *0/30000/161 *0/71000/63 *0/72000/65 *0/33000 /167 *0/74000/71 *0/35000/70012 *160/61400/70113 *160/62400/70065 *0/15400/0 43P: *0/0/0 *0/0/0 *ADVCA 32 38P: *0/542/577 *0/0/602 *ADVCA 30 45P: *0/602/637 *0/0/542 *ADVCA 6 *J200 ;! ODD RESTART *J7100 ;! WRITE *J201 ;! EVEN RESTART *J2601 ;! PRINTFL *0/0/0 *107373/070246/144562 *0/0/0 *17512/66624/5753 ;! TIME OK *135135/140266/14734; !NEW MAG *16174/122662/174144 ;! RELOAD *0/0/171 *0/0/0 *0/0/0 *171/120726/146471 ; ! E435 FAULTY *16172/47674/5541; !E436 I/O MA *116014/20712/116471 ; !E437 G_PARITY *0/0/0 ;!CR DEV NO *0/0/0 ;!1=CR-0=PT *0/0/0 ;!2ND READER; ! E440 *0/0/0; ! SECOND COPY OF WTAPE NO *0/0/0; ! E442 - ELAPSED TIME *0/0/0; !E443 - PACKED FLAG *0/0/05; !E444 - C-TAPE BLOCK COUNT *0/0/0; !E445 LINE PRINTER SYLS COUNT *016161/161662/015647; ! CLANG *0/0/171; !E447 CHARS/LINE *J2; *J987; !STOP AND EMERGENCY STOP 93P: *24240/43050/10612 91P: * ADVCA 2 94P: *0/0/0 1002:96P:* NOT * NEG * DUP * M12 * - * J1001 >= Z * DUP * SET 511 * + * DUP * = M15 * REV * = I15 * PMAQ14 * PIAQ15 * J1002 ;[ -> replaced by *J 1001: * ERASE * SET 118 * = M13 * M0M13 * DUP * = C13 * = +M13 * I13 = -1 * J1017 C13Z 1016: * M0M13Q * = LINK * J1016 C13 NZ 1017: * SET 135 * = M14 * SET 15 * = RC13 1018: * M14M13Q * J1018 C13 NZ * = Q15 * = Q14 * = Q13 * = Q12 * = Q11 * = Q10 * = Q9 * = Q8 * = Q7 * = Q6 * = Q5 * = Q4 * = Q3 * = Q2 * = Q1 * SET 101 * = M13 * M0M13 * DUP * =C13 * = +M13 * I13 = -1 * J1014 C13 Z 1015: * M0M13Q * J1015 C13 NZ 1014: * J1019 TR 1019: * VR * EXIT 1 1P: %COMMENT ROUTINE ENTRY *LINK * = M0M12N * = LINK * EXIT 2P: %COMMENT PRINT TIME *SET 36P: *DUP *=M13 *M0M13 *=Q15 *REV *SET 93P: *=M13 *M0M13 *REV *FRB *ZERO *SHLD+6 *DUP *J 901 =Z *JS 908 *ZERO *SHLD+6 902: *JS 908 *SET 32 ;%COMMENT _ HR __ *JS 909 *SET 72 *JS 909 *SET 82 *JS 909 *SET 32 *DUP *JS 909 *JS 909 *ZERO *J 903 901: *SHLD+6 *DUP *J 902 #Z 903: *SHLD+12 *DUP *J 904 =Z *JS 908 *ZERO *SHLD+6 905: *JS 908 *SET 32 ;%COMMENT _ MIN __ *JS 909 *SET 77 *JS 909 *SET 73 *JS 909 *SET 78 *JS 909 *SET 32 *DUP *JS 909 *JS 909 *ZERO *J 906 904: *SHLD+6 *DUP *J 905 #Z 906: *SHLD+12 *DUP *J 907 =Z *JS 908 *ZERO 907: *SHLD+6 *JS 908 *ERASE *SET 32 ;%COMMENT _ SEC *JS 909 *SET 83 *JS 909 *SET 69 *JS 909 *SET 67 *JS 909 *=M13 *Q15 *=M0M13 *EXIT 1 3P: ! NEW CAPTION SEQUENCE *SET36P: *DUP; *=M13; *M0M13; *=Q15 *REV; *I11; *+; *=RM14 *M0M14; *J401=Z; *M0M14Q *ZERO; *SHLD8; *=+C14; *J404 ;[ -> replaced by *J 402: *M0M14Q 404: *ZERO *SHLD+8 *DUP *J403=Z *SET 10 * J1517 = *JS 909 *J404 403: *ERASE *ERASE *J402C14NZ *=M13 *Q15 *=M0M13 *EXIT 1 401: *ERASE *EXIT 1 1517: * SET 13 ;[ Carriage return before line feed -- thus code is ASCII * JS 909 * JS909 * J404 4P: %COMMENT RETURN * M0M12N * = LINK * EXIT 1 * 85P: *0/0/0 *0/0/0 *0/0/0 *0/0/0 *0/0/0 *0/0/0 *0/0/0 *0/0/0 *0/0/0 *0/0/0 *0/0/0 *0/0/0 *0/0/0 *0/0/0 *0/0/0 *0/0/0 *0/0/0 *0/0/0 *0/0/0 *0/0/0 *0/0/0 *0/0/0 *0/0/0 *0/0/0 *0/0/0 *0/0/0 *0/0/0 *0/0/0 *0/0/0 *0/0/0 *0/0/0 *0/0/0 *0/0/0 92P: *ADVCA 11 84P: *SET85P:; ! SET UP FAULT TRAP *M2; *=C13; *M12; *=I13 *LINK; *DUP; *=LINK; *=M13 *+; *=M14; *Q13; *=M0M14; *EXIT 2 90P: %COMMENT "%MONITOR"[N] *=M13 *LINK *=M14 751: *J750EN *ERASE *J751 750: *J752EJ *LINK *ERASE *J750 752: *VR *ZERO *=TR *SET 85P: *=M15 *M13M15 *DUP *J753=Z *=Q13 *C13 *=M2 *I13 *=M12 *M13 *=LINK *EXIT 1 753: *ERASE *M14 *=LINK *EXIT 1 5P: %COMMENT TEST FOR VALID CYCLE * PERM * DUP * J1 = Z * PERM * - * REV * / I * J1 # Z * J1 < Z * EXIT 1 1: *SET 3 *JS90P %CAPTION \ NON-INTEGRAL _ CYCLE *J2401 ;[ *J replaces -> 6P:2: *VR; %COMMENT STOP *JS4799; !UNCOUPLE PLOTTER [ NEWLINES(3) replaced by following %CAPTION \\\ * I2 *J990 = Z %CAPTION STOPPED_AT_LINE_ *I2;*SET1;*JS7100 [ NEWLINE replaced by following %CAPTION \ 990: *SET 92P: *I11 *- *JS 3P %CAPTION \RUNNING _ TIME ___ *SET 9 *OUT *SHL-24 *SET 91P: *=M13 *M0M13 *- *JS 2P %CAPTION _/__ *SET 3 *OUT *SHL-24 *SET 91P: * = M13 *M0M13N *- *JS 2P [ %BEGIN end is after about 55 lines [ %INTEGER P,Q,R displaced global [ %CYCLE P=1,1,8 rewrite *ZERO; 6001: *NOT; *NEG; **=P *SET 89P: **P; *DUP; *+; *+; *=M13; *M0M13N; *M0M13 *DUP; *NOT; *J1=Z *ZERO; *NOT; *=M0M13 [ %CAPTION \ TAPE_CHANNEL 5 lines rewritten as below [ WRITE(P,1); %CAPTION _IDENT_ [ %CYCLE Q=1,1,8 [ *ZERO; *SHLD+6; **=R; PRINTSYMBOL (R+32) [ %REPEAT %CAPTION \ TAPE_CHANNEL [ WRITE(P,1) **P; *SET1; *JS23P %CAPTION _IDENT_ *SET8; *=C8; 6000: *ZERO; *SHLD+6; *SET32; *+; *JS6063P *DC8; *J6000C8NZ ;[ end of rewrite *ERASE *DUP; *=Q15; *C15; *REV; *DUP; *J2>Z %CAPTION *WITH_WRITE_PERMIT 2: *ABS; *NEG; *NOT; *J3=Z %CAPTION _RELEASED_BY_COMPILER *SHL33; *SHA-33;*ABS; *DUP; *=C15; *PMDQ15; *SET 6; *OUT; *J4 ;[ -> replaced by *J 1: *ERASE 3: *ERASE [4: %REPEAT rewritten below 4: **P; *SET8; *J6001#; *ERASE *SET9; *OUT; *SHL-24; *E442; *-;*SET5; *+; *DUP %CAPTION \\ELAPSED_TIME_ *JS2P %CAPTION ____COST [ **=P; Q=INT(P/30) 3 lines rewritten [ %IF Q=0 %THEN Q=1 [ WRITE(Q,1) *DUP; **=P; *SET30; *DIVI; *ERASE; *DUP; *J6002#Z *NOT; *NEG 6002: **=Q; **Q *ZERO; *NOT; *NEG *JS23P %CAPTION_UNITS\\ 9: *E384; *=Q15; *BUSYQ15; *J9TR [ NEWLINE replaced by following %CAPTION \ [ %END %BEGIN is about 55 lines earlier *SET 36P: *=M13;*M0M13;*=Q15; *C15 [ *J987 < Z; NEWPAGE 2 lines replaced by one line below [ RUNOUT(40) declaration has space, i.e. RUN OUT *J987 < Z; %CAPTION \\\ 987: *ZERO; *=TR *E421; *J1052=Z *E421; *SET6; *OUT *SET-2; *=E421; *J1052 ;[ -> replaced by *J 10521: %COMMENT WRITE A BLOCK OT -2 TO MAGOUT TO MARK END OF JOB *E421; *=RC15; *SET8; *=I15; *M+I15; *SET-2; *=E8; *POAQ15 1052: *VR; *E420; *E418; *-; *J1059#Z *E440; *=E420; ! RAN OFF END 1059: *E0;*SET B11;*AND;*DUP;*J1055=Z *DUP;*SETB10;*AND;*J1056=Z *E418; *=RC15; *PMDQ15 *ZERO; *=E439 *SET1;*AND;*DUP;*J1055=Z 1056: *E420; *SET6; *-; *J1055>Z *E439; *J1057#Z *E438; *J1058 replaced by *J 1057: *E420; *J1055<=Z *ZERO; *=E439; *E438; *SET6; *OUT *SET-2; *=E438 *J1055 ;[ -> replaced by *J 1058: *E438; *NOT; *J1055=Z *SET4; *SET5; *OUT *=E438; *SET1; *=E439 1055: *ERASE;*ZERO;*=E0 *SET 418 *=M15 *M0M15 ;%COMMENT PICK UP COMPILER TAPE *=RC15 *E444; *DUP; *=M15; *J1054=Z *PMEQ15; *ZERO; *=E444 1054: *SET 2 *=M15 *PMAQ15 ;%COMMENT SKIP LABEL AND SENTINEL *SET2; *=E444 *SET 8 *=I15 *SET 100 *=M15 *PIAQ15 ;%COMMENT READ DOWN CALL *SET3; *=E444 *ZERO *=LINK *E439 *J1053>Z *E420; *SET 6; *- ; *J1049>Z ; !DO NOT SWITCH IF MAG INPUT *E420; *SET6; *OUT *SET2; *SET5; *OUT *=E420 1049: *E438; *J1053<=Z *E438; *SET6; *OUT *SET-2; *=E438 1053:*EXIT 61 ;!GO TO CALL AT 3/33 24P:2401: *JS4799; ! MONITOR STOP *J2C11Z; *SET 3; *OUT *SET60; *SHL24; *+; *=M0M0H; !ALLOW 1 MIN *I3; *I4; *OR; *J2=Z *SET 10000; *=E433; !MORE OUTPUT *E418; *=RC13; *E444; *DUP; *=M13; *J2402=Z; *PMEQ13 2402: *SET1; *DUP; *=M13; *PARQ13; *PMAQ13; *=E444 *E419; *=C13; *M12 2403: *DUP; *=M13; *SET 500 *-; *DUP; *=I13 *DUP; *=M0M13; *POAQ13 *DUP; *I11; *-; *J2403>Z *ERASE; *ZERO; *NOT; *=M0M13 *POAQ13; *PMDQ13 *E418; *=C13; *SET 2001; *=I13 *SET 2750; *=M13; *PIAQ13 *SET 2; *=E444; *JE2001; !INTO DIAGS 7P: ! NEW -> SWITCH LABEL *=RM13; *I11; *=+M13 *DUP; *=E6 *DUP; *M0M13; *-; *J4Z *M0M13Q; *-; *=M10 *M13M10HN; *SHL-24; *DUP; *J4=Z; *=LINK; *EXIT 4: *SET 7 *JS90P %CAPTION \ SWITCH _ VARIABLE _ NOT _ SET 777: *E6; *SET 4; *JS7100 *J 2401 ;[ -> replaced by *J 8P: %COMMENT OVR SET *SET 1 *JS90P *SET 2 *JS90P %CAPTION \OVERFLOW _ SET *J 2401 ;[ -> replaced by *J 9P: %COMMENT NON-INTEGRAL INTEGER QUOTIENT *SET 10 *JS 90P %CAPTION \ NON-INTEGRAL _ QUOTIENT *J 2401 ;[ -> replaced by *J 10P: %COMMENT * N1/N2/N3 * = M13 * = I13 * = C13 * Q13 * EXIT 1 11P: %COMMENT EXIT FROM %FN OR %MAP OTHER THAN BY %RESULT = ETC *SET 11 *JS90P %CAPTION \ RESULT _ NOT _ SPECIFIED *J 2401 ;[ *J replaces -> 25P: *SET97; *=M15; *I15=1; ! MESSAGE TO MONITOR TYPEWRITER 2501: *=M0M15Q; *J2501C15NZ *ZERO; *=E96; *M-I15; *SET 96; *=I15 *Q15; *SET8; *OUT; *EXIT 1 %COMMENT READ SEQUENCE 12P: *SET 41P: *=M14 *SET+1000 *=C14 *ZERO *ZERO *ZERO 411: *ERASE *Q14; *JS49; *REV; *=Q14 *SET+32 *J411= *SET+10 *J411= *DUP *SET+48 *- *J471 Z *ZERO *NOT *=C14 *J 413 412: *Q14; *JS49; *REV; *=Q14 *DUP *SET+48 *- *J416Z *REV *M0M14 *XF *J8PV *REV *DC14 413: *SET+48 *- *I1 *FLOAT *+F *J8PV *J412 416: *SET+46 *J417= *SET+96 *J418= 425: *ERASE *C14 *J420<=Z *ZERO 423: *=C14 420: *REV *J421=Z *NEGF 421: *C14 *DUP *J434=Z *DUP *J419>Z *NEG *JS74 *J424 419: *JS75 *J424 34P: *J547 415: [ %BEGIN [ %INTEGER CHAR displaced global **=CHAR *E227; *=Q15; *M-I15; *Q15; *=E227 *SET 14 *JS90P *JS 34P %CAPTION \ SYMBOL __ [ PRINT SYMBOL(CHAR) rewritten as next line **CHAR; *JS6063P %CAPTION _ _ IN _ DATA [ %STOP rewritten as next line *J6P [ %END at label 415 *J2401 ;[ *J replaces -> 417: *ERASE *C14 *J420<=Z *C0 TO Q14 *J412 418: *ERASE *ZERO *ZERO *ZERO 427: *ERASE *Q14; *JS49; *REV; *=Q14 *SET+32 *J427= *DUP *SET+48 *- *J428Z 429: *REV *SET+10 *XD *CONT *+ *SET+48 *- 430: *Q14; *JS49; *REV; *=Q14 *DUP *SET+48 *- *J422Z *C14 *+ *J423 428: *SET+43 *J435= *SET+45 *J415# *CAB *ERASE *I12 *PERM 435: *ERASE *Q14; *JS49; *REV; *=Q14 *DUP; *SET48; *-; *J415Z; *J429 ;[ -> replaced by *J 434: *ERASE 424: *REV *NEG *NOT *J436=Z *DUP *FIX *DUP *J437<=Z *=C13 *STR *SHADC13 *J8PV *REV *J441#Z *DUP;*ABS; *SHL-39; *J11443#Z; ! CHECK <=2**39 *REV *ERASE 436: *E227; *=Q15; *M-I15 *Q15; *=E227 *REV *=M13 *=M0M13 *EXIT 1 437: *ERASE *STR *ERASE *J442#Z *SHA-46 *J436 11443: *SET47; *FLOAT; *REV 441: *ERASE 442: *=E6 *SET 16 *JS 90P [ NEWLINE replaced by following %CAPTION \ *E6; *SET 10; *JS2601 %CAPTION__INSTEAD_OF_INTEGER_IN_DATA *J2401 ;[ *J replaces -> 908: *SET 48 *+ * 909:13P:*DUMMY; * *SETB177; *AND *C15 ;!PRINT CHARACTER *J505=Z *SET 32 *+ *SET 10 *J964= *SET 12 *J965= *SET 13 *J966= *ERASE *SET 6 *J47 960: *DUP;*SET 65;*-; *J967>=Z;*Q14 *REV *SET 32P: *=M13 *=M14 *M13M14H *SHL-24 *REV *=Q14 *DUP *SET 1000 *- *J 47 replaced by *J * 47:47P: *DUMMY; * *C15; *J447=Z; *C13; *E421;*-;*J4721=Z 4722: *ZERO; *=TR; *PMFQ13; *PARQ13; *J4064TR; *POAQ13; *M0M15N; *=M15; *EXIT 1 4721: *BUSYQ13; *J4723TR; 4725: *POCQ13 *M0M15N; *=M15; *EXIT 1 4723: *SET9; *OUT; *SHL-24; *E426; *- *J4725 447: %COMMENT FOR LINE PRINTER *E432; *NEG; *NOT; *DUP *=E432; *J445<=Z; ! ->445 %IF THIS IS CHAR 121 448: *E445; *DUP; *NEG; *NOT; *=E445 *J4760#Z; *SET7; *=E445; *JS4730 *JS4749; *ZERO; *NOT; *=M0M15 4760: *DUP; *SHL42; *M0M15; *SHLD6 *=M0M15; *ERASE *SET 66 *J446= *SET 3 *J446= *ERASE *EXIT 1 445: *SET66; *J14445= *SET3; *J14445= *SET66; *JS448; *J447 14445: *J448 446: *ERASE *E447; *NOT; *NEG; *=E432 444: *E433; *NEG; *NOT; *DUP; *=E433 *J443<=Z; *E422; *=C13; *BUSYQ13 *J4731TR; *M15; *DUP; *SHL-5; *NOT; *NEG *SHL5; *=M15; *M0M15; *=Q13; *=M13 *POAQ13; *M0M15N; *=M15; *M-I15; *ZERO; *=E445; *EXIT 1 *J452#Z 4799: *Q15; *SET47P:; !UNPLOT *=M15; *ZERO; *=M0M15 *SET13P:; *=M15 *ZERO; *=M0M15 *=Q15; *EXIT 1 %COMMENT DIVIDE N2 BY 10^N1 74:14P: *ZERO *NOT *=RM13 452: *DUP *I12 *AND *M+I13 *REV *SHL-1 *PERM *J451=Z *M13M14 */F 451: *REV *DUP *J452#Z *ERASE *EXIT 1 %COMMENT MULTIPLY N2 BY 10^N1 75:15P: *ZERO *NOT *=RM13 462: *DUP *I12 *AND *M+I13 *REV *SHL-1 *PERM *J461=Z *M13M14 *XF *J461 C11 Z *J8PV 461: *REV *DUP *J462#Z *ERASE *EXIT 1 %COMMENT SET UP FOR PRINT ROUTINES 16P: *SET 36P: *DUP *=M13 *M0M13 *=Q15 *REV *SET 41P: *=M14 *SET 32 *REV *DUP *J472>=Z *NEGF *REV *ERASE *SET+45 *REV 472: *EXIT 1 %COMMENT PRINT N1 DIGITS OF N2 17P: *REV *FIX *=C13 *ZERO *SHAD C13 *J481 18P: *REV *SET+10 *XD 481: *JS 908 *REV *NEG *NOT *DUP *J18P#Z *ERASE *EXIT 1 [ start of perm tape 2 %COMMENT STANDARDISE ACC 19P: *DUP *FIX *REV *ERASE *I1 *FLOAT *SET 42P: *=M13 *M0M13 *XF *FIX *=C13 *STR *SHADC13 *REV *ERASE *NEG *NOT *DUP *J493#Z *REV *J494 493: *DUP *J495>Z *DUP *PERM *NEG *JS 15P *J494 495: *DUP *PERM *JS 14P 494: *DUP *M0M14 *-F *J496 95P: *M12; *SET 32; *+ *E1; *SHL24; *SHL-24; *-; *J951<=Z *E1; *=M12; *SET-16; *=+M12 *SET4; *JS90P %CAPTION \EXCESS _ BLOCKS; *J2401 ;[ *J replaces -> 951: *EXIT 1 200: *Q13 *SET 9 *OUT *SHL-24 *E426 *- *J202>=Z *SET 428 *=RM13 *ZERO *=M0M13 *M13 *M+I13 *=I13 *Q13 *SET 8 *OUT ;%COMMENT TIME OK *=Q13 *EXIT 202: *E426; *SET300; *+; *=E426 *JS4799; !UNCOUPLE PLOTTER %CAPTION \\ EXECUTION _ TIME _ EXCEEDED [ %STOP rewritten as next line *J6P 201: *JS547; ! INITIAL O/P IF REQUIRED 203: *J204EN; *ERASE; *J203 ;[ -> replaced by *J 204: *Q15; *Q14; *Q13; *Q12; *Q11 *Q10; *Q9; *Q8; *Q7; *Q6 *Q5; *Q4; *Q3; *Q2; *Q1 *SET15; *=RC15; *SET101; *=M15 205: *=M0M15Q; *J205 C15NZ *JS4799 %CAPTION \\ PROGRAM _ TERMINATED _ BY _ SUPERVISOR [ %BEGIN %END is approx 33 lines later [ %INTEGER P,Q displaced global %CAPTION \REASON___ *SET 32P:; *NEG; *NOT; *=RM14 *SET 22P:; *=RM15 *ZERO; *=M0M15Q; *M0M14; *=M0M15Q *ZERO; *=M0M15Q; *ZERO; *=M0M15; *ZERO;*=M0M15N *ZERO; *NOT; *SET 22P: *M15; *NOT; *NEG; *JS10P *SET 8; *OUT; *M0M15N; *M0M15; *M-I15; *M0M15 [ %CYCLE P=1,1,24; *ZERO; *SHLD+6; **=Q loop rewritten [ %IF 1<=Q<=15 %OR Q=31 %OR Q=61 %THEN Q=0 [ %IF Q=29 %THEN Q=11 [ %IF Q=30 %THEN Q=13 [ PRINTSYMBOL(Q+32) [ ->1 %UNLESS P=8 %OR P=16; *ERASE; [1: %REPEAT *ZERO 6003: *NOT; *NEG; **=P; *ZERO; *SHLD+6 *DUP; *SHL-4; *J6004#Z; *ERASE; *ZERO 6004: *SET31; *J6005#; *ERASE; *ZERO 6005: *SET61; *J6006#; *ERASE; *ZERO 6006: *SET29; *J6007#; *ERASE; *SET11 6007: *SET30; *J6008#; *ERASE; *SET13 6008: *SET32; *+; *JS6063P **P; *SET8; *-; *SETB67; *AND; *J1#Z; *ERASE 1: **P; *SET24; *J6003#; *ERASE %CAPTION\__________Q-STORES\ [ *SET15; *=RC9; P=1 rewritten *SET15; *=RC9; *SET1; **=P; 2: *E101M9Q; *=Q15 *M15; *I15; *C15; [ WRITE(P,2); P=P+1 rewritten as next 2 lines **P; *SET 2; *JS23P **P; *NOT; *NEG; **=P *SET3; *=C8 [3: **=Q; WRITE(Q,6); *DC8; *J3C8NZ replaced by following line 3: *DUP; **=Q; *SET6; *JS23P; *DC8; *J3C8NZ [ NEWLINE; *J2C9NZ replaced by following 2 lines %CAPTION \ *J2C9NZ [ %END %BEGIN is approx 33 lines above *J2401 ;[ -> replaced by *J 46P:999:*SET 47 *=I1 *I0 TO Q2 *SET 91P: *=M13 *SET 3 *OUT *SHL - 24 *DUP *=M0M13N ;! DUMP COMPUTING TIME TO DATE *SET 9 *OUT *SHL-24 *DUP *=M0M13 ;! DUMP TIME FROM MIDNIGHT *SET 426 *=M13 *SET 2 *=M15 *J400 C11Z *M0M13N *DUP *PERM *+ *=M0M13 ;! DUMP TIME LIMIT *+ *SHL+24 *=M0M15H *E434 *=E433 *EXIT 1 400: *SET 1800 *DUP *PERM *+ *=M0M13 ;! TIME LIMIT FOR COMPILING *+ *SHL+24 *=M0M15H 4062: *JS4072; *J994 ;[ -> replaced by *J 4072: *SET 35P: *=M13;*M0M13;*=Q15 *ZERO; *=TR *E439;*J4069>Z *E420;*DUP;*=C15; !TAPE *SET 162;*DUP;*=I15 *PARQ15; *PMFQ15; *J4064TR *PICQ15; !FILL 1ST BUFFER *REV;*Q15;*=M0M13; !RESET 1ST POINTER *SET 194;*DUP;*=M0M13N; !AND NEXT BUFFER INDICATOR *REV 4068: *SET 44P: *=M13;*M0M13;*=Q14 *=C14;*=I14;*Q14;*=M0M13 *=M0M13N *I12;*=RC15;*E439;*J4067>Z *SET 161;*=M15;*Q15;*=E226;!RESET BUFFER PRT *PARQ15; *PMFQ15; *J4064TR *PICQ14;*EXIT1 4069: *E438;*DUP;*=C15; !CARDS-SMALLER BUFFERS *SET 182;*DUP;*=I15 *PARQ15; *J4065TR *PIEQ15; *REV;*Q15;*=M0M13 *SET 214;*DUP;*=M0M13N;*REV;*J4068 4067: *SET 182;*=M15;*Q15;*=E226 *PARQ14; *J4065TR *PIEQ14;*EXIT1 4064: *ZERO; *=E435; *SET435; *DUP; *NOT; *NEG; *NOT; *NEG *REV; *SHL16; *OR; *SET8; *OUT *ZERO; *OUT; !INPUT MAG PARITY FAILURE 4065: *E438; *=RC15; *MANUALQ15; *J4069; !CHECK CR MISREAD ;[ -> replaced by *J 4063: *J4062EN; *ERASE; *J4063; !RESTART TRANSFER 4066: *ERASE 994: *SET40P: *=RM13 *JS4835; !RECONSTRUCT LINE *SET42;*REV;*SET 32; *J4070#; *ERASE; *M13M15QH; *SHL-24; !AND LOOK FOR ***A 4070: *J4066#; *M13M15QH;*SHL-24;*J4066# *M13M15QH;*SHL-24;*J4066# *ERASE;*M13M15H;*SHL-24 *SET84; *J4071=;*SET65;*J4066# *SET32; *SHL+24; *=M13M15QH; ! REORDER TRACKS *SHL+24; *=M13M15QH; *SET10; ! TO READ *SHL+24; *=M13M15QH; *ZERO; ! ***_A\ *NOT; *=M13M15QH; ! TO AVOID INPUT ENDED *ZERO;*=RM15;*Q15; *=E227 *EXIT 1; ! RETURN HAVING RESET RLB. PTR 4071: *JS 10550; *J4066 ;[ -> replaced by *J 99P: %COMMENT INITIAL OUTPUT FOR PAPER TAPE (OR MAG) *E421 *JS979 *I12 ;! SET OUTPUT BUFFER POINTER TO Q15 *DUP *=C15 *=I15 *SET 73; *=E447 ; *SET 353 *=M15 *SET 10000 *=E433 *E434 *J1100#Z *SET 4096 *=E434 1100: *SET 50 ;%COMMENT PUT OUT 5"RUN-OUT *=C14 998: *ZERO *JS 13P *DC14 *J998C14NZ *J978 ;[ -> replaced by *J 98P: %COMMENT INITIAL OUTPUT FOR LINE PRINTER *E422 *JS979 *SET 353 *=RM15 *ZERO; *=E445 *SET120; *=E447 *ZERO *NOT *=C15 *SET8500 *=E433 *E434 *J1101#Z *SET 200 *=E434 1101: *SET 3 *JS47P ;! PAPER THROW 978: *DC1 *SET 13 *JS909 *SET 10 *JS909 *SET 10 *JS909 *SET 10; *JS909 *SET10; *JS909 *E7 ;!DATE *SET 11 *=C14 997: *ZERO *SHLD+6 *SET 32 *+ *JS13P *DC14 *J997C14NZ *ERASE *E427 996: *ZERO ;! TIME FROM MIDNIGHT *SHLD+6 *SET 31 *J9875# *ERASE *SET 14 9875: *SET 32 *+ *JS13P *DUP *J996#Z *ERASE *SET 36P: ;! DUMP OUTPUT BUFFER POINTER *=M13 *Q15 *=M0M13 %CAPTION \EDINBURGH _ UNIVERSITY _ ATLAS _ AUTOCODE _(ABC)__ *SET 36P: ;! DATE COMPILER DEFINED IN 94P: *=M14 *M0M14 *=Q15 *SET 94P: *=M13 *M0M13 995: *ZERO *SHLD+6 *SET 32 *+ *JS13P *DUP *J995#Z *ERASE *SET 13 *JS909 *SET 10 *JS909 *SET 10 *JS909 *SET 10 *JS909 *Q15 *=M0M14 *SET 92P: *NOT *NEG *=RM13 *SET 96 *=RM15; *ZERO; *=M0M15Q *Q0 TO Q14 *M0M13 *ZERO *SHLD+8 *SET 47 ;!/ *J 578# *ERASE *ERASE *EXIT 1 570:*ZERO *SHLD8 578:*DUP *SET47 *- *J571>=Z 573 :*ERASE *ZERO *J572 571:*DUP *SET 90 ;!Z *- *J573>Z *SET 59 ;!; *J 573= *SET 32 *- *SHL+42 572:*Q14 *SHLD+6 *=Q14 *SHLD+8 *DUP *J578#Z *ERASE *ERASE *J575 C13Z *C13 *NOT *NEG *DUP *J574=Z *NOT *NEG *J576=Z *J577 575:*M0M13QN *ZERO *SHLD+16 *SHL+32 *J570 574:*ERASE *Q14 *=M0M15Q *Q0 TO Q14 *DC13 *J570 576:*M0M13QN *SHL-16 *SHL+16 *J570 577:*Q14 *=M0M15 *SET 96 *SHL+16 *M15 *OR *SET 8 *OUT *EXIT 1 979: *DUP *SET 38P: *=M13 *M0M13 *=Q15 *=C15 *Q15 *=M0M13 *SET 45P: *=M13 *M0M13 *=Q15 *=C15 *Q15 *=M0M13 *EXIT 1 48:48P:*E227;*=Q15; !RECON.L.POINTER *SET 40P: *=RM13; !ADDR.OF. R.L.BUFFER *M13M15QH;*DUP;*J4831Z; !CARDS *ZERO 4839: *ERASE;*E443; *NOT;*J4851=Z;*JS4836 4837: *M0M14; *DUP; *BITS; *SHC-1 ;!CHECK PARITY *J4854=Z ;!BUFFER FULL *SET 32;*J4839= ;!SPACE *M15;*=C13;*J4839 ;!LAST NON-SPACE CHAR ;[ -> replaced by *J 4854: *J4856 C11Z;*ZERO; *NOT; *=M13M15QH; *Q14;*=E226; *ZERO; *=RM15;*Q15;*=E227; *SET 18; *JS90P %CAPTION \PAPERTAPE_PARITY *J24P 4856: *SETB45; *SHL+24; *=M13M15QH; *ERASE *SETB120; *J4855 ;[ -> replaced by *J 4896: *ERASE;*J4898 4832: *Q11;*Q12 ;!CARDS-PRESERVE Q11+12 *SET 22P: *=RM11 ;!BASE OF TABLE LOOK UP 4844: *M0M14;*SET8;*=RC12 4843: *ZERO;*SHLD+6;*SET3; *J4802=; *=M12; !TEST FOR 0-8-2 *M11M12QH;*DUP; !TABLE VALE 4806: *=M13M15QH ;!DUMP CHR *SHL-24; *SETB42; *J4825=; !" *SETB50; *J4803=; !%( *SETB51; *J4804=; !%) *C0TOQ11 4807: *SET32; *J4845=; !_ *M15;*=C13;! LATEST NON SPACE CHAR *J4845 ;[ -> replaced by *J 4825: *M-I15; *M-I15; *M15; *DUP *J4826=Z *DC13; *J4845 4802: *DC11; *DC12; *SETB40 *SHL24; *=M13M15QH; *J4845 ;[ -> replaced by *J 4803: *J4807C11Z; *ERASE; *SETB133; *J4805 ;[ -> replaced by *J 4804: *J4807C11Z; *ERASE; *SETB135 4805: *M-I15; *M-I15; *SHL+24; *DUP *J4806 ;[ -> replaced by *J 4826: *ERASE; *ZERO; *DUP; *=M15; *=C13 4845: *ERASE;*J4843 C12 NZ *ERASE;*M+I14;*M14;*NOT;*NEG *SET B37;*AND; *J4844#Z ;!GNORE LAST 8 COLS *=Q12;*=Q11 *M+I14;*M0M14;*=Q15 ;!Q 5 NO LONGER NEEDED *PARQ15; *J4827NTR *MANUALQ15; *Q15; *SET10; *=RC15;* 4828: *ZERO; *DUP; *=E182M15 *=E214M15Q; *J4828C15NZS; *=Q15 4827: *PIEQ15; !READ NEXT CARD *M0M14N;*=M14 *SET 10; 4838: *SHL+24;*C13;*=RM15;*=M13M15QH; !PUT IN LF 4898: *ZERO;*NOT;*=M13M15H; !INSERT-1 *ZERO;*=RM15 ; !RESET R.L.B. PTR *Q14;*=E226 *M13M15QH;*SHL-24 *Q15;*=E227;*EXIT 1 4851: *M0M14; *DUP; *J4853=Z ;!PACKED INPUT *ZERO; *SHLD+8; *REV; *=M0M14 *SETB 177; *AND; *J4852 4853: *ERASE *M+I14; *M14; *SETB37; *AND; *J4851#Z *M0M14N; *M0M14; *=Q14; *ZERO; *=TR; *PARQ14; *J4064TR *C14; *E418; *-;*PIAQ14 *REV; *=RM14; *J4851#Z *E444; *NOT; *NEG; *=E444; *J4851; !MOVE BLOCK COUNTER ;[ -> replaced by *J 4836: *M+I14; *M14; *SETB37; *AND *J4841#Z; *M0M14N; *M0M14; *=Q14 *C14; *SET6; *-; *J4842<=Z *ZERO; *=TR; *PARQ14; *J4064TR *PIAQ14; *=RM14; !REFILL BUFFER 4841: *EXIT1 4842: *PICQ14; *=RM14; *EXIT1 %COMMENT READ CHARACTER 900:97P:*JS48; *M15;*NEG;*NOT;*J511#Z ;!1ST CHAR *SET 42;*J4860# ;!* *SET 42 4861: *M13M15QH;*SHL-24;*J515# ;!** *M13M15QH;*SHL-24;*J515# ;!*** *ERASE *M13M15QH; *SHL-24; *SET 90;*J541= ;!Z *SET 65;*J14849= ;!A *SET84; *J10544= 515: *ERASE 511: *EXIT 1 4860: *SET32;*J511#; *SET42; *M13M15QH;*SHL-24 *J515#; *J4861 14849: *ERASE 14850: *ERASE 14851: *JS4835; *SET10; *J14850=; ! GET 1ST CHAR *SET32; *J14852# *ERASE; *M13M15QH; *SHL-24 14852: *SET80; *J14853= *SET67; *J14854=; ! 'C' *ERASE; *SET65; *J544 ;[ -> replaced by *J 14853: *ERASE; *ZERO; *=E439 *E438; *J4072<=Z *E438; *SET6; *OUT *SET-2; *=E438 *JS 4072; *J14855 ;[ -> replaced by *J 14854: *ERASE; *SET1; *=E439 *E438; *J4072>Z *SET4; *SET5; *OUT *=E438; *JS4072 14855: *SET40P:; *=RM13; *J4835; ! RECONSTRT LINE GET CHAR 541: *SET 9; *JS90P;*ZERO 544: *JS 547 %CAPTION\INPUT_ENDED *SET 65;*J542= *J24P 542: *ERASE *E431; *SET1; *=C15; *JS25P *SET 35P: *=M13 *M0M13 * = Q13 *C13; *SET7; *-; *J548>=Z *MANUAL Q13 [ %STOP rewritten as next line *J6P 548: *SET3; *=M13; *PMEQ13; [ %STOP rewritten as next line *J6P 547: *J10543 C1NZ *E423 ;!FLAG *J545 replaced by *J 545: *JS 99P 546: *SET 92P: *I11 *- *JS3P 10543: *EXIT 1 10544: *ERASE; *ERASE; *JS10550; *J4855 ;[ -> replaced by *J 10550: ! ***T SEQUENCE *E420; *SET6; *OUT *E439; *J10553#Z *ZERO; *=E96; *E430; *=E97 *SET96; *=RI13; *SET99; *=M13; *DC13; *Q13; *SET8; *OUT *E98; *SHL-42; *SETB56; *-; *J10551=Z; *E98; *SET4; *OUT; *DUP; *=E420 *DUP; *=RC13; *PMDQ13; *M+I13; *PMAQ13 10552: *DUP; *E192; *=Q13; *=C13 *Q13; *=E192; *E224; *=Q13; *=C13; *Q13; *=E224; *EXIT1 10551: *SET2; *SET5; *OUT *DUP; *=E420; *J10552 ;[ -> replaced by *J 10553: *E446; *SET1; *=C15; *JS25P; *ZERO; *OUT 49:49P:%COMMENT READ VISIBLE SYMBOL *JS 97P *SET 10 *J992 = *DUP *SET 32 *- *J991 < Z *SET 64 *J 993 = * SET 127 *J991 = 992: *EXIT 1 991: *ERASE *J49 993: *SET 32 *+ *EXIT 1 61P: ! ARRAY DECLN POINTER TO DV IN N1 *DUP; *=RM13; *M0M13; *NEG; *NOT *J6601#Z; ! JUMPS FOR MULTIDIMEBSIONAL *M12; *=RM15; *M13; *=C15; ! Q15 IS ARRAY WORD *SET1; *=M0M13N *M+I13; *M+I13; *M0M13N *M0M13; *DUP; *PERM; ! SAVE LOWER BOUND *-; *DUP; *J29P replaced by *J 6605: *REV; *M-I10; *=M0M10 *M12TOQ15;*DUP; *SHL-14; *J6606#Z; ! TEST FOR WRAP ROUND *=+M12; *JS95P *M13; *=C15; *M0M13N; *NEG; *=+M15 *E4M13; *=I15; *Q15; *EXIT 1 ! NI HAS ARRAY WORD N2 STILL POINTS TO DV 6606: *E1; *=M12; *JS95P; *J24P 69P: ! COMPUTE ARRAY ELEMENT ADDR--CHECK BOUNDS ! ARRAY WORD IN N1 ON TOP OF INDICES *=Q13; *M13; *C13; *=RM13;*M0M13 *DUP; *=C13; *SET3; *XD; *CONT; *=+M13; *I13=-1 6901: *REV; *DUP; *M0M13; *REV; *-; *J6920 65P: *DUP; *M1; *-; *J6501Z; *EXIT1 6501: %CAPTION\MAP_OVERWRITES_PROGRAM *J24P 66P: *M13; *PERM; ! CHECK DIMENSION OF ARRAY PARAMETER *SHL-32; *=M13; *DUP; *J6662=Z *M0M13; *-; *J6661#Z; *=M13; *EXIT1 6661: %CAPTION\WRONG_DIMENSION_OF_ARRAY_PARAMETER *J24P 6662: *ERASE; *=M13; *EXIT1 67P: *E2M12;*DUP;*SHL-32;*=I2 *DUP;*=I4;*SHL-16 *=I3;*EXIT1 68P: *I2;*SHL32 *I3;*SHL16;*OR;!UPDATE DIAGS INFC *I4;*OR;*=E2M12 *=I4;*=I3; *EXIT 1 81P: %COMMENT EXPONENT IN REAL EXPRESSION *DUP *ABS *DUP *=C13 *SHL-8 *J17#Z *ZERO *SIGN *=I13 *=Q10 *I12 *I1 *FLOAT *I13 *J12=Z * 11: *Q10 *XF *DC13 * *J11C13NZS *I13 *J12>Z *I12 *I1 *FLOAT *REV */F 12: *EXIT 1 82P: %COMMENT EXPONENT IN INTEGER EXPRESSION *DUP *SHL-6 *J17#Z *=C13 *=Q10 *I12 *J16C13 Z * 15: *Q10 *XD *CONT *DC13 *J15C13NZS 16: *EXIT 1 17: *=E6; *SET21; *JS90P %CAPTION \ ILLEGAL _ EXPONENT *J777 ;[ *J replaces -> %COMMENT END OF EXPONENTIATION **W0; [ just to force evaluation of location of global variable used inside a routine [ a kludge to mark end of global variables %MONITOREND %ROUTINE READ SYMBOL (%INTEGERNAME N) *M2;*M0M2;*=M2;*JS49P *REV;*=M2;**=N %END %ROUTINE SKIP SYMBOL *JS 49P; *ERASE %END %INTEGERFN NEXT SYMBOL *JS 49P; *E227; *=Q15; *M-I15; *Q15; *=E 227 %RETURN %END *???? ;[ these are U/C subroutines and do not get entered directly from AA 26P:2601:*=E6 *JS 16P *JS 19P *REV *SETB 401 *SHL+38 *E6 *JS14P *+F *DUP *M0M14 *-F *J2603=Z *NEG *REV *ERASE *SET+45 *REV 2605: *SET+10 *DUP *PERM *- *DUP *J2606=Z *M13 *JS 13P 2608: *+ *SET+48 *+ *JS 13P *=M13 *Q15 *=M0M13 *EXIT1 2606: *SET 32 *JS 13P *CAB *JS 13P *J2608 %ROUTINE PRINTFL(%REAL X, %INTEGER N) **X;**N;*JS26P %END %ROUTINE PRINT SYMBOL(%INTEGER N) **N *JS6063P %END *???? ;[ these are U/C subroutines and do not get entered directly from AA 6063P: *SET 36P: ;[ body of PRINT SYMBOL *=M14 *M0M14 *=Q15 *M2;*M0M2;*=M2;*REV *SET 10 *J1 # *SET 13 *JS 13P 1: *JS 13P *=M2 *Q15 *=M0M14 *EXIT1 88P: *E228 *=Q15 *EXIT 1 87P: *JS 13P *Q15 *=E228 *EXIT 1 86P: *=C14 *J551 552: *DUP *JS 13P *DC14 551: *C14 *J552 > Z *ERASE *Q15 *=E228 *EXIT 1 23P:7100:*REV *DUP;*SET32;*REV;*J7101>=Z *ERASE;*SET45 7101: *SET180;*=RM14;*SHL24; *=M0M14QH;*ABS 7102: *SET10;*/I; *SET48; *+; *SHL24; *=M0M14QH *DUP; *J7102#Z *ERASE; *C14; *+ 7103: *DUP; *J7104 replaced by *J 7104: *ERASE; *NC14; *I14=-1; *E90; *DUP; *=M0M14QH 7105: *SHL-24; *JS88P; *JS87P; *J7106C14Z; *M0M14QH; *J7105 ;[ -> replaced by *J 7106: *EXIT1 %ROUTINE WRITE(%INTEGER M,N) **M;**N;*JS23P %END %ROUTINE SPACE *JS 88P *SET 32 *JS 87P %END %ROUTINE NEWLINE *JS 88P *SET 13 *JS 87P *SET 10 *JS 87P %END %ROUTINE SPACES (%INTEGER N) *JS 88P *SET 32 **N *JS 86P %END %ROUTINE NEWLINES(%INTEGER N) *JS 88P *SET 13 *JS 87P *SET 10 **N *JS 86P %END %ROUTINE RUN OUT(%INTEGER N) *JS 88P *C15 *J1= Z *SET 12 *JS 87P %RETURN 1: *SET 13 *JS 87P *SET 10 *SET 30 *JS86P %END %REALMAP REAL(%INTEGER S) **S %RETURN %END %INTEGERMAP INTEGER(%INTEGER S) **S %RETURN %END *???? ;[ these are U/C subroutines and do not get entered directly from AA 70P: [ %BEGIN %COMMENT SUM SERIES, FIXED POINT, SHIFTED [ %INTEGER W0 displaced global * = Q15 ; * = C14 ; ** = W0 ; *M0M15Q ; *J2 * 1: ** W0 ; * XD ; * SHADC14 ; * ROUND ; * M0M15Q * + 2: * J1C15NZS ; [ %END %BEGIN at label 70P * EXIT 1 %REALFN MOD (%REAL X) ** X * ABSF %RETURN %END %REALFN FRACPT (%REAL X) **X ; * FIX ; * DUP ; * SET 39 ; * - ; * J1 replaced by *J 1: *DUP ; *J3 replaced by *J 3: *ERASE ; *ERASE ; **X ; *DUP ; *J2>=Z ; *SETB 403 *SHL+38 ; *+F 2: %RETURN %END %INTEGERFN INT (%REAL X) * SETB 401 ; *SHL+38 ; %COMMENT TO NS **X ; * +F ; * FIX ; * DUP ; * SET 47 ; *- * J1<=Z *SET 26 *JS90P %CAPTION \INT _ TOO _ LARGE *M0M2;*=M2;*J24P 1: * = C15 ; * STR ; * SHADC15 ; * REV ; * ERASE %RETURN %END %INTEGERFN INTPT (%REAL X) **X ; * FIX ; * DUP ; * SET 47 ; * - ; * J1<=Z *SET 27 *JS90P %CAPTION \INTPT _ TOO _ LARGE *M0M2;*=M2;*J24P 1: * = C15 ; * STR ; * SHADC15 ; * REV ; * ERASE %RETURN %END %INTEGERFN PARITY ( %INTEGER N) * SET +1 ** N * SHC-1 * J1>=Z * NEG 1: %RETURN %END * 1000: 58P: %ENDOFPERM [ start of compiler tape 1 %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 %LITERAL int *clett, *symbol; /* dynamic arrays -- see below */ %ROUTINE INITIALISE ;[ moved to avoid C parse error *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 *???? ;[ these is U/C subroutine and does not get entered directly from AA 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 *J 303 ;[ -> replaced by *J 301: * = C15 *J 303 ;[ -> replaced by *J 302: * ERASE 303: * DC 14 * J304 C14 NZ * Q15 ** = PP CURR * EXIT 1 52P: ** PS START ** PS CURR *J 316 ;[ -> replaced by *J 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 *J 312 ;[ -> replaced by *J 310: * ERASE ** V0 * AND * SHL 16 * M14M15 * OR * = M14M15 *J 312 ;[ -> replaced by *J 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 [ start of moved code to avoid declarations after statements 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 [ end of moved code 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) 4 lines rewritten [ WRITE(LINE,4) [ %CAPTION__OVERFLOW_SET_ DURING_COMPILATION\ [ FAULTY=1; ->8 *SET42; *JS6063P **LINE; *SET4; *JS23P %CAPTION__OVERFLOW_SET_ DURING_COMPILATION\ *SET1; **=FAULTY; *J8 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; *J1 ;[ -> replaced by *J 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 *J5555 ;[ -> replaced by *J 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 *J 5555 ;[ -> replaced by *J 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 *J7= ;! %IF RA=RP %THEN ->7 next line must be misread [ `j~vp`````~Nw} ;! %IF RA=RP %THEN ->7 must be a misread *DUP **=RS ;! RS=RA *M5M6 *NOT *NEG *=M5M6 ;! A(R)=A(R)+1 *C5 *+ *=M13 *M0M13 **=RA ;! RA=SYMBOL(RA) *J1 ;[ -> replaced by *J 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; *J1 ;[ -> replaced by *J 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 *J1 ;[ -> replaced by *J 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= *J76 ;[ -> replaced by *J 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 *J71 ;[ -> replaced by *J 71: *ERASE *SET 32 ;! '_' *J76 ;[ -> replaced by *J 72: *ERASE *SET 10 ;! '\' *J76 ;[ -> replaced by *J 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 *J66 ;[ -> replaced by *J 63: *ERASE *J61 ;[ -> replaced by *J 67: *ERASE *SET 39 *J68 ;[ -> replaced by *J 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 [   surely these are deletes *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'' replaced by next 4 lines of code *DUP ;[ new code **A'' ;[ new code *- ;[ new code *J431>=Z ;[ new code **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 *J1 ;[ -> replaced by *J 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 *J1 ;[ -> replaced by *J 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 *J1 ;[ -> replaced by *J ! 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 *J1 ;[ -> replaced by *J ! 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 *J2 ;[ -> replaced by *J 82: *ERASE *J2 ;[ -> replaced by *J ! PHRASE TEXT BIP(1005):*M7M8 39: *SET10 ;! '\' *J82= ;! %IF I=10 %THEN ->82 *SET 59 ;! '' *- *J83=Z ;! %IF I=59 %THEN ->1 *M7M8QN *J39 ;[ -> replaced by *J ! 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 replaced by *J 91: *ERASE *SET 32 ;! '_' *J49 ;[ -> replaced by *J 92: *ERASE *SET 10 ;! '\' *J49 ;[ -> replaced by *J 50: *ERASE *=M9M14Q *SET 40 *=C14 *ZERO *J 93 ;[ -> replaced by *J 47: *ERASE *DUP *J51=Z *=M9M14 *J98 51: *ERASE *M-I14 98: *M14 *M15 *- *NOT; *NEG; *SHL40 *M9M15; *OR *=M9M15 *M+I14 *M14 **=N0 *J1 ;[ -> replaced by *J ! PHRASE OCTAL BIP(1007):*M7M8 *DUP *I5 *- *J9Z *ZERO *REV 41: *REV *SHL+3 *+ *I5 *- *M7M8QN *DUP *I5 *- *J99 replaced by *J ! PHRASE SET MARKER 1 BIP(1008):*M6 **=MARKER 1 ->2 ! PHRASE SET MARKER 2 BIP(1009):*M6 **=MARKER 2 ->2 %END [ start of tape 2 %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; *J812 ;[ -> replaced by *J 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; [ removed one space in MC SWITCH and added ; 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; *J110 ;[ -> replaced by *J 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; *J21 ;[ -> replaced by *J 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; *J101 ;[ -> replaced by *J 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 *J77;* ;[ -> replaced by *J 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; *J7003 ;[ -> replaced by *J 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 *J2 ;[ -> replaced by *J 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; *J2 ;[ -> replaced by *J 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 [ start tape 3 %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, %COMMENT Z=3 FOR INTEGER IF POSSIBLE [ removed continuation line in a comment %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, [ continuation comment altered %COMMENT 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 ;[ altered spacing 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 *J43 ;[ -> replaced by *J 71: **AP; *SET 25; *J 75= *SET 26; *J 76= *SET 27; *J 77= *SET 28; *J 78= *SET 57P: *=M15; *SET 3; *-; *=M14; *J43 ;[ -> replaced by *J 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; *J43 ;[ -> replaced by *J * 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| ;[ ! replaced by | 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 replaced by *J 2: * C15 ** V0 * AND *J 4 ;[ -> replaced by *J 1: * SET -1 4: ** = J * ERASE %END %ROUTINE COPY TAG (%INTEGER KK) ** TAGS (KK) * = Q15 * M15 * J1 replaced by *J 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 replaced by *J 1: * SET -1 * DUP 2: ** = S2 ** = S1 %END %ROUTINE POPUP 2 (%INTEGER %NAME CELL, S1,S2) ** CELL * = Q15 * M15 * DUP * J1 replaced by *J 2: * SET -1 ** = CELL *J 3 ;[ -> replaced by *J 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 *J 4 ;[ -> replaced by *J 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