%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 2401 95P: *M12; *SET 32; *+ *E1; *SHL24; *SHL-24; *-; *J951<=Z *E1; *=M12; *SET-16; *=+M12 *SET4; *JS90P %CAPTION \EXCESS _ BLOCKS; ->2401 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 201: *JS547; ! INITIAL O/P IF REQUIRED 203: *J204EN; *ERASE; ->203 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 %INTEGER P,Q %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 %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 %CAPTION\__________Q-STORES\ *SET15; *=RC9; P=1 2: *E101M9Q; *=Q15 *M15; *I15; *C15; WRITE(P,2); P=P+1 *SET3; *=C8 3: **=Q; WRITE(Q,6); *DC8; *J3C8NZ NEWLINE; *J2C9NZ %END ->2401 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; ->994 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; ->4069; !CHECK CR MISREAD 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; ->4066 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 ->978 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;->4839 ;!LAST NON-SPACE CHAR 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; ->4855 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 ->4845 4825: *M-I15; *M-I15; *M15; *DUP *J4826=Z *DC13; *J4845 4802: *DC11; *DC12; *SETB40 *SHL24; *=M13M15QH; ->4845 4803: *J4807C11Z; *ERASE; *SETB133; ->4805 4804: *J4807C11Z; *ERASE; *SETB135 4805: *M-I15; *M-I15; *SHL+24; *DUP ->4806 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; ->4851; !MOVE BLOCK COUNTER 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; ->544 14853: *ERASE; *ZERO; *=E439 *E438; *J4072<=Z *E438; *SET6; *OUT *SET-2; *=E438 *JS 4072; ->14855 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 548: *SET3; *=M13; *PMEQ13; %STOP 547: *J10543 C1NZ *E423 ;!FLAG *J545546 545: *JS 99P 546: *SET 92P: *I11 *- *JS3P 10543: *EXIT 1 10544: *ERASE; *ERASE; *JS10550; ->4855 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; ->10552 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; *J29P6602 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; *-; *J6920777 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 ->777 %COMMENT END OF EXPONENTIATION %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 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) *SET 36P: *=M14 *M0M14 *=Q15 **N *M2;*M0M2;*=M2;*REV *SET 10 *J1 # *SET 13 *JS 13P 1: *JS 13P *=M2 *Q15 *=M0M14 %END 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; *J71047103 7104: *ERASE; *NC14; *I14=-1; *E90; *DUP; *=M0M14QH 7105: *SHL-24; *JS88P; *JS87P; *J7106C14Z; *M0M14QH; ->7105 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 70P: %BEGIN %COMMENT SUM SERIES, FIXED POINT, SHIFTED %INTEGER W0 * = Q15 ; * = C14 ; ** = W0 ; *M0M15Q ; *J2 * 1: ** W0 ; * XD ; * SHADC14 ; * ROUND ; * M0M15Q * + 2: * J1C15NZS ; %END * EXIT 1 %REALFN MOD (%REAL X) ** X * ABSF %RETURN %END %REALFN FRACPT (%REAL X) **X ; * FIX ; * DUP ; * SET 39 ; * - ; * J1 2 1: *DUP ; *J32 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 * * * A SWOP