mirror of
https://github.com/retro-software/B5500-software.git
synced 2026-03-02 17:44:40 +00:00
1. Commit library tape images, directories, and extracted text files. 2. Commit additional utilities under Unisys-Emode-Tools.
1730 lines
137 KiB
Plaintext
1730 lines
137 KiB
Plaintext
00000100
|
|
00000200
|
|
BEGIN COMMENT DABTIME 00000300
|
|
TO OBTAIN LISTING MERGE IN BLANK CARD WITH SEQUENCE NUMBER 00000030;00000400
|
|
COMMENT THE CUBE LIBRARY NUMBER IS Q000003. THE PROGRAM NAME IS 00000500
|
|
"DABTIME". THIS VERSION DATED 6/28/68; 00000600
|
|
PROCEDURE TIMEIT(A); 00000700
|
|
FILE A; 00000800
|
|
BEGIN 00000900
|
|
OWN BOOLEAN B; 00001000
|
|
INTEGER E,F,G,H,I; 00001100
|
|
STREAM PROCEDURE C(A,B,D,E); 00001200
|
|
VALUE A; 00001300
|
|
BEGIN 00001400
|
|
SI~ LOC A; 00001500
|
|
SI~ SI+3; 00001600
|
|
DI~ B; 00001700
|
|
DS~ 2 OCT; 00001800
|
|
DI~ D; 00001900
|
|
DS~ 3 OCT 00002000
|
|
END; 00002100
|
|
STREAM PROCEDURE D(A,B,C,E,F,G,H,I,J,K); 00002200
|
|
VALUE A,B,C,E,F,G,H,I,J; 00002300
|
|
BEGIN 00002400
|
|
LABEL L, M, N, O, P, Q; 00002500
|
|
DI~ K; 00002600
|
|
COMMENT*****************************************************************00002700
|
|
SKIP 8 DB; 00002800
|
|
COMMENT*****************************************************************00002900
|
|
DS~ 6 RESET; 00003000
|
|
COMMENT*****************************************************************00003100
|
|
DS~ 4 SET; 00003200
|
|
COMMENT*****************************************************************00003300
|
|
DS~ RESET; 00003400
|
|
COMMENT*****************************************************************00003500
|
|
SKIP 8 DB; 00003600
|
|
COMMENT*****************************************************************00003700
|
|
DS~ 2 SET; 00003800
|
|
COMMENT*****************************************************************00003900
|
|
DS~ 4 RESET; 00004000
|
|
COMMENT*****************************************************************00004100
|
|
DI~ LOC K; 00004200
|
|
COMMENT*****************************************************************00004300
|
|
SI~ K; 00004400
|
|
COMMENT*****************************************************************00004500
|
|
DS~ WDS; 00004600
|
|
COMMENT*****************************************************************00004700
|
|
DI~ K; 00004800
|
|
DS~ 8 LIT" "; 00004900
|
|
SI~ K; 00005000
|
|
DS~ 14 WDS; 00005100
|
|
DI~ K; 00005200
|
|
SI~ LOC A; 00005300
|
|
DS~ 2 DEC; 00005400
|
|
2(DS~ LIT":"; DS~ 2 DEC); 00005500
|
|
DI~ DI+1; 00005600
|
|
CI~ CI+E; 00005700
|
|
DS~ 3 LIT"SUN"; GO L; SKIP SB; 00005800
|
|
DS~ 3 LIT"MON"; GO L; SKIP SB; 00005900
|
|
DS~ 4 LIT"TUES"; GO L; SKIP SB; 00006000
|
|
DS~ 6 LIT"WEDNES"; GO L; 00006100
|
|
DS~ 5 LIT"THURS"; GO L; 00006200
|
|
DS~ 3 LIT"FRI"; GO L; SKIP SB; 00006300
|
|
DS~ 5 LIT"SATUR"; 00006400
|
|
L: 00006500
|
|
DS~ 4 LIT"DAY,"; 00006600
|
|
DI~ DI+1; 00006700
|
|
CI~ CI+F; 00006800
|
|
DS~ 3 LIT"JAN"; GO M; SKIP SB; 00006900
|
|
DS~ 4 LIT"FEBR"; GO M; SKIP SB; 00007000
|
|
DS~ 5 LIT"MARCH"; GO O; 00007100
|
|
DS~ 5 LIT"APRIL"; GO O; 00007200
|
|
DS~ 3 LIT"MAY"; GO O; SKIP SB; 00007300
|
|
DS~ 4 LIT"JUNE"; GO O; SKIP SB; 00007400
|
|
DS~ 4 LIT"JULY"; GO O; SKIP SB; 00007500
|
|
DS~ 6 LIT"AUGUST"; GO O; 00007600
|
|
DS~ 6 LIT"SEPTEM"; GO N; 00007700
|
|
DS~ 4 LIT"OCTO"; GO N; SKIP SB; 00007800
|
|
DS~ 5 LIT"NOVEM"; GO N; 00007900
|
|
DS~ 5 LIT"DECEM"; GO N; 00008000
|
|
M: 00008100
|
|
DS~ 4 LIT"UARY"; GO O; 00008200
|
|
N: 00008300
|
|
DS~ 3 LIT"BER"; 00008400
|
|
O: 00008500
|
|
DI~ DI+1; 00008600
|
|
A~ DI; 00008700
|
|
DI~ LOC B; 00008800
|
|
SI~ LOC G; 00008900
|
|
DS~ 2 DEC; 00009000
|
|
DI~ A; 00009100
|
|
SI~ LOC B; 00009200
|
|
IF SC="0" THEN 00009300
|
|
SI~ SI+1 00009400
|
|
ELSE 00009500
|
|
DS~ CHR; 00009600
|
|
DS~ CHR; 00009700
|
|
DS~ 4 LIT", 19"; 00009800
|
|
SI~ LOC H; 00009900
|
|
DS~ 2 DEC; 00010000
|
|
IF SC!"+" THEN 00010100
|
|
BEGIN 00010200
|
|
DI~ DI+4; 00010300
|
|
DS~ 16 LIT"PROCESSOR TIME ="; 00010400
|
|
DI~ DI+1; 00010500
|
|
A~ CI; 00010600
|
|
GO P; 00010700
|
|
DI~ DI+4; 00010800
|
|
DS~ 10 LIT"I/O TIME ="; 00010900
|
|
DI~ DI+1; 00011000
|
|
SI~ LOC J; 00011100
|
|
A~ CI; 00011200
|
|
GO P; 00011300
|
|
GO Q; 00011400
|
|
P: 00011500
|
|
B~ DI; 00011600
|
|
DI~ LOC C; 00011700
|
|
DS~ 8 DEC; 00011800
|
|
SI~ LOC C; 00011900
|
|
DI~ B; 00012000
|
|
5(IF TOGGLE THEN IF SC="0" THEN SI~ SI+1 ELSE DS~ CHR 00012100
|
|
ELSE DS~ CHR); 00012200
|
|
DS~ CHR; 00012300
|
|
DS~ LIT"."; 00012400
|
|
DS~ 2 CHR; 00012500
|
|
DS~ 8 LIT" SECONDS"; 00012600
|
|
CI~ A; 00012700
|
|
Q: 00012800
|
|
END 00012900
|
|
END; 00013000
|
|
ARRAY X[0:14];COMMENT**************************************************;00013100
|
|
C(TIME(0),E,F,A(0)); 00013200
|
|
G~ ((((E-1)DIV 4)+E+F)MOD 7)|5; 00013300
|
|
IF F<60 THEN 00013400
|
|
F~ F-1 00013500
|
|
ELSE 00013600
|
|
IF E MOD 4=0 THEN 00013700
|
|
F~ F-1; 00013800
|
|
IF F> 212 THEN 00013900
|
|
F~(F+31)DIV 61+F 00014000
|
|
ELSE 00014100
|
|
IF F>59 THEN 00014200
|
|
F~ (F+62)DIV 61+F; 00014300
|
|
H~ TIME(1)|.016667; 00014400
|
|
D(H DIV 3600, I~H DIV 60 MOD 60, I~ H MOD 60, 00014500
|
|
G,(F DIV 31)|5, H~ F MOD 31+1, E, 00014600
|
|
IF B THEN H~ TIME(2)|1.6667 ELSE-1, IF B THEN H~ TIME(3)|1.6667 00014700
|
|
COMMENT*****************************************************************00014800
|
|
ELSE-1,A); 00014900
|
|
ELSE-1,X[0]);COMMENT***************************************************;00015000
|
|
B~ TRUE; 00015100
|
|
COMMENT*****************************************************************00015200
|
|
RELEASE(A,15) 00015300
|
|
;WRITE(A[DBL],15,X[*])COMMENT******************************************;00015400
|
|
END; 00015500
|
|
BOOLEAN LISTOG,TAPETOG,SOURCETOG,INDEXTOG,FLOWTOG; 00015600
|
|
BOOLEAN TIME; 00015700
|
|
BOOLEAN TAPIN; 00015800
|
|
ARRAY A, B[0:30]; 00015900
|
|
BOOLEAN NONSPACERTOG; 00016000
|
|
LABEL LA,LC; 00016100
|
|
INTEGER SCRAM; 00016200
|
|
STREAM PROCEDURE PRINTHEN(L,A,I); VALUE I; 00016300
|
|
BEGIN LOCAL T; DI~LOC T; SI~A; DS ~ WDS; SI ~ SI+8; DI ~ L; 00016400
|
|
60(DS~2LIT" ");DI~L;DS~WDS;DI~DI+4;I(DS~2LIT": ");DS~ T CHR;END; 00016500
|
|
ALPHA Q; 00016600
|
|
REAL I,J,T,C,GT1,GT2,GT3,GT4 ,COUNT,TCOUNT,RESULT,NXTELBT, 00016700
|
|
PREVL, RECORDCOUNT, RCF, 00016800
|
|
FCR,NCR,LCR,LASTUSED,AVAIL; 00016900
|
|
BOOLEAN NST,DOKLUDGE,SPENST; 00017000
|
|
INTEGER ELCLASS ; 00017100
|
|
ARRAY SPECIAL[0:31], INFO[0:31,0:255], ACCUM[0:10],ELBAT[0:75], 00017200
|
|
STACKHEAD[0:125], TEN[-46:69]; 00017300
|
|
BOOLEAN STREAM PROCEDURE EQUALBLANKSEQ(A,B);VALUE A; 00017400
|
|
BEGIN SI~A; DI~B; IF 8 SC=DC THEN TALLY~1;EQUALBLANKSEQ~TALLY END; 00017500
|
|
STREAM PROCEDURE SEQIT(A,B);VALUE A,B; 00017600
|
|
BEGIN DI~A;DS~2LIT"*";SI~LOC B;DS~6DEC END; 00017700
|
|
DEFINE MON =[ 1: 1]#, 00017800
|
|
CLASS =[ 2: 7]#, 00017900
|
|
FORMAL=[ 9: 1]#, 00018000
|
|
VO =[10: 1]#, 00018100
|
|
LVL =[11: 5]#, 00018200
|
|
ADDRESS=[16:11]#, 00018300
|
|
INCR =[27: 8]#, 00018400
|
|
LINK =[35:13]#, 00018500
|
|
LINKR =[35: 5]#, 00018600
|
|
LINKC =[40: 8]#; 00018700
|
|
COMMENT THESE DEFINES ARE USED TO PICK APART THE ELBAT WORD. 00018800
|
|
MON IS THE BIT WHICH IS ON IF THE QUANTITY IS MONITORED. 00018900
|
|
CLASS IS THE PRINCIPAL IDENTIFICATION OF A GIVEN 00019000
|
|
QUANTITY. 00019100
|
|
FORMAL IS THE BIT WHICH IS ON IF THE QUANTITY IS A FORMAL 00019200
|
|
NEXT ITEM IN THE STACK. ZERO IS AN END FLAG. 00019300
|
|
LINKR AND LINKC ARE SUBDIVISIONS OF LINK.; 00019400
|
|
COMMENT CLASSES FOR IDENTIFIERS; 00019500
|
|
DEFINE UNKNOWNID =00#, 00019600
|
|
STLABID =01#, 00019700
|
|
LOCLID =02#, 00019800
|
|
DEFINEDID =03#, 00019900
|
|
LISTID =04#, 00020000
|
|
FRMTID =05#, 00020100
|
|
FILEID =06#, 00020200
|
|
SWITCHID =07#, 00020300
|
|
PROCID =08#, 00020400
|
|
INTRNSICPROCID =09#, 00020500
|
|
STRPROCID =10#, 00020600
|
|
BOOSTRPROCID =11#, 00020700
|
|
REALSTRPROCID =12#, 00020800
|
|
ALFASTRPROCID =13#, 00020900
|
|
INTSTRPROCID =14#, 00021000
|
|
BOOPROCID =15#, 00021100
|
|
REALPROCID =16#, 00021200
|
|
ALFAPROCID =17#, 00021300
|
|
INTPROCID =18#, 00021400
|
|
BOOID =19#, 00021500
|
|
REALID =20#, 00021600
|
|
ALFAID =21#, 00021700
|
|
INTID =22#, 00021800
|
|
BOOARRAYID =23#, 00021900
|
|
REALARRAYID =24#, 00022000
|
|
ALFAARRAYID =25#, 00022100
|
|
INTARRAYID =26#, 00022200
|
|
LABELID =27#, 00022300
|
|
TRUTHV =28#, 00022400
|
|
LITNO =29#, 00022500
|
|
NONLITNO =30#, 00022600
|
|
STRNGCON =31#, 00022700
|
|
LEFTPAREN =32#, 00022800
|
|
COMMENT CLASSES FOR THOSE SYNTACICAL QUANTITIES WHICH CAN 00022900
|
|
BEGIN A STATEMENT; 00023000
|
|
READV =33#, 00023100
|
|
WRITEV =34#, 00023200
|
|
FORV =35#, 00023300
|
|
WHILEV =36#, 00023400
|
|
DOV =37#, 00023500
|
|
UNTILV =38#, 00023600
|
|
ELSEV =39#, 00023700
|
|
ENDV =40#, 00023800
|
|
SEMICOLON=41#, 00023900
|
|
FILLV=42#, 00024000
|
|
IFV = 43#, 00024100
|
|
GOV = 44#, 00024200
|
|
RELEASEV = 45#, 00024300
|
|
BEGINV =46#, 00024400
|
|
COMMENT CLASS FOR DECLARATORS; 00024500
|
|
DECLARATOR =47#, 00024600
|
|
COMMENT STREAM RESERVED WORDS; 00024700
|
|
SIV =48#, 00024800
|
|
DIQ =49#, 00024900
|
|
CIV =50#, 00025000
|
|
TALLYV =51#, 00025100
|
|
DSV =52#, 00025200
|
|
SKIPV =53#, 00025300
|
|
JUMPV =54#, 00025400
|
|
DBV =55#, 00025500
|
|
SBV =56#, 00025600
|
|
TOGGLEV =57#, 00025700
|
|
SCV =58#, 00025800
|
|
LOCV =59#, 00025900
|
|
DCV =60#, 00026000
|
|
LOCALV =61#, 00026100
|
|
LITV =62#, 00026200
|
|
TRNSFER =63#, 00026300
|
|
COMMENT MISC. SYNTACTICAL QUANTITIES; 00026400
|
|
COMMENTV =64#, 00026500
|
|
LFTBRKET =65#, 00026600
|
|
VALUEV =66#, 00026700
|
|
COMMA =67#, 00026800
|
|
PERIOD =68#, 00026900
|
|
STEPV =69#, 00027000
|
|
COLON =70#, 00027100
|
|
RTBRKET =71#, 00027200
|
|
RTPAREN =72#, 00027300
|
|
WITHV =73#, 00027400
|
|
THENV =74#, 00027500
|
|
TOV =75#, 00027600
|
|
CROSSHATCH =76#, 00027700
|
|
COMMENT SCAN ERROR CLASS; 00027800
|
|
SCANERR =77#, 00027900
|
|
COMMENT CLASSES FOR OPERATORS; 00028000
|
|
NOTOP =78#, 00028100
|
|
ASSIGNOP =79#, 00028200
|
|
AMPERSAND =80#, 00028300
|
|
EQVOP =81#, 00028400
|
|
IMPOP =82#, 00028500
|
|
OROP =83#, 00028600
|
|
ANDOP =84#, 00028700
|
|
RELOP =85#, 00028800
|
|
ADOP =86#, 00028900
|
|
MULOP =87#, 00029000
|
|
FACTOP =88#; 00029100
|
|
COMMENT SUBCLASSES FOR DECLARATORS; 00029200
|
|
DEFINE OWNV =01#, 00029300
|
|
SAVEV =02#, 00029400
|
|
BOOV =03#, 00029500
|
|
REALV =04#, 00029600
|
|
ALFAV =05#, 00029700
|
|
INTV =06#, 00029800
|
|
LABELV =07#, 00029900
|
|
DUMPV =08#, 00030000
|
|
LISTV =09#, 00030100
|
|
OUTV =10#, 00030200
|
|
INV =11#, 00030300
|
|
MONITORV =12#, 00030400
|
|
SWITCHV =13#, 00030500
|
|
PROCV =14#, 00030600
|
|
ARRAYV =15#, 00030700
|
|
FORMATV =16#, 00030800
|
|
FILEV =17#, 00030900
|
|
STREAMV =18#, 00031000
|
|
FORWARDV =19#, 00031100
|
|
DEFINEV =20#; 00031200
|
|
LABEL LB,EXIT; 00031300
|
|
ARRAY CURRSEQA[0:2]; 00031400
|
|
DEFINE CURRSEQ = CURRSEQA[0]#; 00031500
|
|
BOOLEAN PAGETOG; 00031600
|
|
STREAM PROCEDURE BLANKOUT(L); 00031700
|
|
BEGIN DI ~ L; DS ~ 8 LIT " " END; 00031800
|
|
REAL IMC; 00031900
|
|
FILE IN CARD(4, 10, 30); 00032000
|
|
ARRAY LINE[0:15]; 00032100
|
|
SAVE FILE ALDOC(2,120,16,SAVE 1); 00032200
|
|
FILE CODE DISK SERIAL[20:900](1, 20, 1380); 00032300
|
|
FILE IN TAPE(2, 60, 10); 00032400
|
|
FILE EDOC DISK SERIAL[20:900](1, 20, 1380); 00032500
|
|
FILE FLOW DISK SERIAL[20:990](1, 14, 1260); 00032600
|
|
FILE CODAL DISK SERIAL[20:384](2,2,96); 00032700
|
|
FILE OUT BUG 4 (4, 15); 00032800
|
|
BOOLEAN ENDTOG; 00032900
|
|
INTEGER DELTA; ARRAY BEGINARRAY[0:100]; 00033000
|
|
LABEL L101,L102,L103,L104,L105,L106; 00033100
|
|
FILE TEMPTAPE DISK SERIAL[20:3000](1, 16, 1200); 00033200
|
|
DEFINE TTAPE = TEMPTAPE#; 00033300
|
|
STREAM PROCEDURE ZOT(SEQ , L); VALUE L; 00033400
|
|
BEGIN DI ~ SEQ; SI~L; SI~L; DS~WDS; DI~L; DS ~ LIT "%" END; 00033500
|
|
STREAM PROCEDURE PRINT(LINE,NCR); VALUE NCR; 00033600
|
|
BEGIN 00033700
|
|
DI ~ LINE; DS ~ 16 LIT " "; 00033800
|
|
SI ~ NCR; DS ~ 9 WDS; 00033900
|
|
DS ~ 8 LIT " "; 00034000
|
|
DS ~ WDS; 00034100
|
|
SI ~ LINE; DS ~2WDS END; 00034200
|
|
INTEGER STREAM PROCEDURE SETUP(TAPE,LCR,CARDSEQ,TAPESEQ); 00034300
|
|
BEGIN 00034400
|
|
SI ~ CARDSEQ; DI ~ TAPESEQ; 00034500
|
|
IF 8 SC > DC THEN TALLY~1 00034600
|
|
ELSE BEGIN SI~SI-8; DI~DI-8;TAPESEQ ~ SI; 00034700
|
|
IF 8 SC = DC THEN TALLY ~2 END ; 00034800
|
|
SETUP ~ TALLY; 00034900
|
|
DI ~ TAPESEQ; TAPESEQ ~ DI; 00035000
|
|
SI ~ LOC TAPESEQ; DI ~ LCR; DS ~ WDS END; 00035100
|
|
REAL STREAM PROCEDURE CONV(ACCUM,SKP,N);VALUE SKP,N; 00035200
|
|
BEGIN 00035300
|
|
SI~ ACCUM; SI~SI+SKP;SI~SI+3;DI~LOC CONV;DS~N OCT 00035400
|
|
END; 00035500
|
|
STREAM PROCEDURE MOVE(W)"WORDS FROM"(A)"TO"(B); VALUE W; 00035600
|
|
BEGIN SI ~ A; DI ~ B; DS ~ W WDS END; 00035700
|
|
BOOLEAN STREAM PROCEDURE EQUAL(COUNT,A,B); VALUE COUNT; 00035800
|
|
BEGIN TALLY ~ 1; SI~A; DI~B; 00035900
|
|
IF COUNT SC = DC THEN EQUAL ~ TALLY END; 00036000
|
|
REAL STREAM PROCEDURE EXAMIN (NCR); VALUE NCR; 00036100
|
|
BEGIN SI ~ NCR; DI ~ LOC EXAMIN; DI ~ DI+7; DS ~ CHR END; 00036200
|
|
STREAM PROCEDURE SCAN(NCR,COUNTV,ACCUM,COMCOUNT,RESULT,RESULTV, 00036300
|
|
COUNT,ST2,NCRV,ST1); 00036400
|
|
VALUE COUNTV, COMCOUNT,RESULTV,ST2,NCRV,ST1; 00036500
|
|
BEGIN 00036600
|
|
LABEL DEBLANK,NUMBERS,IDBLDR,GNC,K,EXIT,FINIS,L,ERROR; 00036700
|
|
DI ~ RESULT; DI ~ DI+7; 00036800
|
|
SI ~ NCRV; 00036900
|
|
CI ~ CI+RESULTV; 00037000
|
|
GO TO DEBLANK; COMMENT 0 IS INITIAL CODE; 00037100
|
|
GO TO IDBLDR; COMMENT 1 IS ID CODE; 00037200
|
|
GO TO FINIS; COMMENT 2 IS SPECIAL CHARACTER CODE; 00037300
|
|
GO TO NUMBERS; COMMENT 3 IS NUMBER CODE; 00037400
|
|
GO TO FINIS; COMMENT 4 IS ERROR CODE; 00037500
|
|
GO TO GNC; COMMENT 5 IS GET NEXT CHARACTOR CODE; 00037600
|
|
IF SC=" " THEN 00037700
|
|
BEGIN K: SI~SI+1; 00037800
|
|
IF SC =" " THEN GO TO K 00037900
|
|
END; 00038000
|
|
GO TO FINIS; 00038100
|
|
DEBLANK: IF SC = " " THEN 00038200
|
|
BEGIN L: SI~SI+1; IF SC = " " THEN GO TO L END; 00038300
|
|
NCRV ~ SI; 00038400
|
|
IF SC } "0" THEN GO TO NUMBERS; 00038500
|
|
IF SC = ALPHA THEN GO TO IDBLDR; 00038600
|
|
GNC: DS ~ LIT "2"; 00038700
|
|
TALLY ~ 1; SI ~ SI +1; GO TO EXIT; 00038800
|
|
IDBLDR: TALLY ~ 63; DS ~ LIT "1"; 00038900
|
|
COMCOUNT( TALLY~ TALLY+1; 00039000
|
|
IF SC = ALPHA THEN SI~SI+1 ELSE JUMP OUT TO EXIT); 00039100
|
|
ERROR: DI~DI-1; DS ~ LIT "4"; GO TO EXIT; 00039200
|
|
NUMBERS: TALLY ~ 63; DS ~ LIT "3"; 00039300
|
|
COMCOUNT( TALLY~ TALLY+1; 00039400
|
|
IF SC <"0"THEN JUMP OUT TO EXIT; SI~SI+1); 00039500
|
|
GO TO ERROR; 00039600
|
|
EXIT: ST1 ~ TALLY; 00039700
|
|
TALLY ~ TALLY+COUNTV; ST2 ~ TALLY; 00039800
|
|
DI ~ COUNT; SI ~ LOC ST2; DS ~ WDS; 00039900
|
|
DI ~ ACCUM; SI ~ COUNT; SI~SI+5; DS ~ 3 CHR; DI~DI+COUNTV;00040000
|
|
SI ~ NCRV; DS ~ ST1 CHR; 00040100
|
|
FINIS: DI ~ NCR; ST1 ~ SI; SI ~ LOC ST1; DS ~ WDS END; 00040200
|
|
REAL STREAM PROCEDURE MKABS(A); BEGIN SI ~A; MKABS~SI END; 00040300
|
|
PROCEDURE READACARD; 00040400
|
|
BEGIN 00040500
|
|
IF SOURCETOG THEN 00040600
|
|
IF LINE[15] = 0 THEN 00040700
|
|
BEGIN IF TAPETOG THEN WRITE(TTAPE,16,LINE[*]); 00040800
|
|
IF LISTOG THEN 00040900
|
|
BEGIN BLANKOUT(LINE[0]); 00041000
|
|
IF NOT TIME THEN TIMEIT(BUG); TIME~ TRUE ; 00041100
|
|
WRITE(BUG[DBL],15,LINE[*]); 00041200
|
|
END; 00041300
|
|
END; 00041400
|
|
IF LASTUSED } 0 THEN 00041500
|
|
BEGIN IF LASTUSED = 1 THEN SPACE(TAPE,1) 00041600
|
|
ELSE READ(CARD); 00041700
|
|
LASTUSED ~ SETUP(TAPE,LCR,CARD(9),TAPE(9)); 00041800
|
|
IF LASTUSED = 2 THEN 00041900
|
|
BEGIN READ(TAPE); 00042000
|
|
LASTUSED ~ 0; 00042100
|
|
END; 00042200
|
|
END ELSE BEGIN IF LASTUSED=-1 THEN READ(CARD); 00042300
|
|
LCR ~ MKABS(CARD(9)); 00042400
|
|
END; 00042500
|
|
FCR ~NCR ~ LCR-9; 00042600
|
|
IF EQUALBLANKSEQ(LCR,CURRSEQA[2]) THEN 00042700
|
|
SEQIT(LCR,CURRSEQA[1]~CURRSEQA[1]+1); 00042800
|
|
PRINT(LINE[0],FCR); 00042900
|
|
LINE[15]~ 0; 00043000
|
|
LINE[0] ~ IMC ~ IMC+1; 00043100
|
|
ZOT(CURRSEQ,LCR); 00043200
|
|
END; 00043300
|
|
REAL PROCEDURE CONVERT; 00043400
|
|
BEGIN REAL T; 00043500
|
|
T~0; 00043600
|
|
IF COUNT-TCOUNT>8 THEN T~CONV(ACCUM[1],TCOUNT, 00043700
|
|
TCOUNT~COUNT-TCOUNT-8)|100000000; 00043800
|
|
CONVERT~T+CONV(ACCUM[1],TCOUNT,COUNT-TCOUNT) 00043900
|
|
END; 00044000
|
|
PROCEDURE ENTERIT; 00044100
|
|
BEGIN 00044200
|
|
IF GT1 ~((GT2 ~(COUNT+10).[42:3]) +AVAIL).LINKR 00044300
|
|
! AVAIL.LINKR THEN AVAIL ~ 256 | GT1; 00044400
|
|
ACCUM[0] ~ ACCUM[0] & STACKHEAD [SCRAM] [35:35:13]; 00044500
|
|
ACCUM[1] ~ ACCUM[1] & (AVAIL-PREVL) [4:40:8]; 00044600
|
|
MOVE(GT2+1)"WORDS FROM"(ACCUM)"TO"(INFO[AVAIL. 00044700
|
|
LINKR,AVAIL.LINKC]); 00044800
|
|
PREVL ~ STACKHEAD[SCRAM] ~ AVAIL; 00044900
|
|
AVAIL ~ AVAIL+GT2+1 END; 00045000
|
|
PROCEDURE SCANNER; 00045100
|
|
BEGIN LABEL L; 00045200
|
|
L: SCAN(NCR,COUNT,ACCUM[1],63-COUNT,RESULT,RESULT,COUNT, 00045300
|
|
0,NCR,0); 00045400
|
|
IF NCR = LCR THEN BEGIN 00045500
|
|
READACARD; 00045600
|
|
GO TO L END END; 00045700
|
|
INTEGER PROCEDURE TABLE(P); VALUE P; INTEGER P; 00045800
|
|
BEGIN 00045900
|
|
LABEL PERCENT,SPECIALCHAR,COMPLETE,COLON,DOT,ATSIGN,QUOTE,IPART, 00046000
|
|
SCANAGAIN, FPART,EPART,IDENT,ROSE,COMPOST,DOLLAR,RTPAREN; 00046100
|
|
SWITCH SPECIALSWITCH ~ PERCENT,DOLLAR,DOT,ATSIGN,COLON,QUOTE,RTPAREN; 00046200
|
|
SWITCH RESULTSWITCH~ IDENT, SPECIALCHAR,IPART; 00046300
|
|
STREAM PROCEDURE COMMENTSCAN(NCR,NCRV,T); VALUE NCRV; 00046400
|
|
BEGIN LABEL L; 00046500
|
|
SI ~ NCRV; 00046600
|
|
IF SC ! ";" THEN BEGIN 00046700
|
|
L: SI ~ SI+1; 00046800
|
|
IF SC > "%" THEN GO TO L; 00046900
|
|
IF SC < ";" THEN GO TO L; 00047000
|
|
END; 00047100
|
|
NCRV ~ SI; 00047200
|
|
DI ~ T; DI ~ DI+7; DS ~ CHR; 00047300
|
|
DI ~ NCR; SI ~ LOC NCRV; DS ~ WDS END; 00047400
|
|
WHILE P } NXTELBT 00047500
|
|
DO BEGIN 00047600
|
|
SCANAGAIN: COUNT ~ RESULT ~ ACCUM[1] ~ 0; SCANNER; 00047700
|
|
IF RESULT ! 2 THEN SPENST ~ FALSE; 00047800
|
|
GO TO RESULTSWITCH[RESULT]; 00047900
|
|
SPECIALCHAR: GT1 ~ ACCUM[1].[18:6] - 2; 00048000
|
|
ENDTOG ~ GT1 = 57 AND ENDTOG; 00048100
|
|
T ~ SPECIAL[GT1>1[42:41:3]]; 00048200
|
|
IF T.[1:1] = 0 THEN NST ~ TRUE; 00048300
|
|
IF SPENST THEN T ~ ABS(T); 00048400
|
|
SPENST ~ T.[1:1] = 0; 00048500
|
|
IF GT1 ~ T.INCR ! 0 THEN GO TO SPECIALSWITCH [GT1]; 00048600
|
|
GO TO COMPLETE; 00048700
|
|
COLON: RESULT~6; SCANNER; 00048800
|
|
IF EXAMIN (NCR) = "=" THEN BEGIN RESULT ~0; SCANNER; 00048900
|
|
T ~ SPECIAL[13] END; 00049000
|
|
GO TO COMPLETE; 00049100
|
|
DOT: IF EXAMIN (NCR) >9 THEN GO TO COMPLETE; 00049200
|
|
C ~ 0; GO TO FPART; 00049300
|
|
ATSIGN: C ~ 1; GO TO EPART; 00049400
|
|
QUOTE: DO BEGIN RESULT~5; SCANNER END UNTIL EXAMIN(NCR)="""; 00049500
|
|
RESULT~0; 00049600
|
|
SCANNER ; 00049700
|
|
Q~ ACCUM[1]; 00049800
|
|
T.CLASS ~ STRNGCON ; GO TO COMPLETE; 00049900
|
|
DOLLAR: LINE[15] ~ 10; 00050000
|
|
COUNT ~ RESULT ~ ACCUM[1] ~ 0; SCANNER; Q ~ ACCUM[1]; 00050100
|
|
IF Q = "4TAPE0" THEN BEGIN LASTUSED ~ 0; TAPIN ~ TRUE END 00050200
|
|
ELSE IF Q ! "4CARD0" THEN GO TO PERCENT ELSE LASTUSED ~ -1; 00050300
|
|
PAGETOG~ 00050400
|
|
LISTOG ~ INDEXTOG ~ FLOWTOG ~ SOURCETOG ~ FALSE; 00050500
|
|
DO BEGIN COUNT ~ RESULT ~ ACCUM[1] ~ 0; SCANNER; Q ~ ACCUM[1]; 00050600
|
|
IF Q = "4LIST0" THEN LISTOG ~ TRUE ELSE 00050700
|
|
IF Q = "5INDEX" THEN INDEXTOG ~ TRUE ELSE 00050800
|
|
IF Q = "4FLOW0" THEN FLOWTOG ~ TRUE ELSE 00050900
|
|
IF Q = "6SOURC" THEN SOURCETOG ~ TRUE ELSE 00051000
|
|
IF Q="4PAGE0" THEN PAGETOG~ TRUE ELSE 00051100
|
|
IF Q = "4TAPE0" THEN TAPETOG ~ TRUE ELSE GO TO PERCENT 00051200
|
|
END UNTIL FALSE; 00051300
|
|
PERCENT: READACARD; 00051400
|
|
GO TO SCANAGAIN; 00051500
|
|
RTPAREN:RESULT~6; SCANNER; 00051600
|
|
IF EXAMIN(NCR)=""" THEN 00051700
|
|
BEGIN 00051800
|
|
RESULT~0; SCANNER; 00051900
|
|
DO BEGIN RESULT~5; SCANNER END UNTIL EXAMIN(NCR)="""; 00052000
|
|
RESULT~0; SCANNER; 00052100
|
|
RESULT~6; SCANNER; 00052200
|
|
IF EXAMIN(NCR) !"(" THEN 00052300
|
|
BEGIN 00052400
|
|
END; 00052500
|
|
RESULT~0; SCANNER; Q~ACCUM[1]; 00052600
|
|
T~SPECIAL[24] 00052700
|
|
END; 00052800
|
|
GO TO COMPLETE; 00052900
|
|
IPART: TCOUNT~0; 00053000
|
|
C~CONVERT; 00053100
|
|
IF EXAMIN(NCR)="." THEN 00053200
|
|
BEGIN RESULT~0; 00053300
|
|
SCANNER; 00053400
|
|
FPART: TCOUNT~COUNT; 00053500
|
|
IF EXAMIN(NCR){9 THEN 00053600
|
|
BEGIN RESULT~0; 00053700
|
|
SCANNER; 00053800
|
|
C~C+CONVERT|TEN[TCOUNT-COUNT]; 00053900
|
|
END 00054000
|
|
END; 00054100
|
|
IF EXAMIN(NCR)="@" THEN 00054200
|
|
BEGIN RESULT~0; 00054300
|
|
SCANNER; 00054400
|
|
EPART: TCOUNT~COUNT; 00054500
|
|
IF T~EXAMIN(NCR)>9 THEN 00054600
|
|
BEGIN RESULT~0; 00054700
|
|
SCANNER; 00054800
|
|
TCOUNT~COUNT; 00054900
|
|
END; RESULT~0; 00055000
|
|
SCANNER; 00055100
|
|
C~C|TEN[IF T="-" THEN -CONVERT ELSE CONVERT] 00055200
|
|
END; 00055300
|
|
Q~ ACCUM[1]; 00055400
|
|
T ~0; 00055500
|
|
T.CLASS ~ NONLITNO; GO TO COMPLETE; 00055600
|
|
IDENT: T ~ STACKHEAD[SCRAM ~ (Q~ACCUM[1]) MOD 125]; 00055700
|
|
ROSE : GT1 ~ T.LINKR; 00055800
|
|
IF(GT2 ~ T.LINKC)+GT1= 0 THEN 00055900
|
|
BEGIN T ~ 0; GO TO COMPLETE END; 00056000
|
|
T ~ INFO[GT1,GT2]; 00056100
|
|
IF INFO[GT1,GT2+1]&0[1:1:11] ! Q THEN GO TO ROSE; 00056200
|
|
IF COUNT { 5 THEN GO TO COMPOST ; 00056300
|
|
IF NOT EQUAL(COUNT-5,ACCUM[2],INFO[GT1,GT2+2]) 00056400
|
|
THEN GO TO ROSE; 00056500
|
|
COMPOST: T ~ T>1[35:43:5]>2[40:40:8]; 00056600
|
|
IF NOT ENDTOG THEN 00056700
|
|
IF T.CLASS = COMMENTV THEN BEGIN 00056800
|
|
GT1 ~ 0; 00056900
|
|
DO BEGIN COMMENTSCAN(NCR,NCR,GT1); IF NCR = LCR THEN READACARD END UNTIL00057000
|
|
GT1 =";"; 00057100
|
|
RESULT~0; SCANNER; 00057200
|
|
GO TO SCANAGAIN END ELSE 00057300
|
|
IF T.CLASS = BEGINV THEN 00057400
|
|
BEGIN BEGINARRAY[DELTA] ~ IMC; 00057500
|
|
DELTA ~ DELTA+1 END; 00057600
|
|
COMPLETE: NONSPACERTOG ~ T.[1:1] = 0; 00057700
|
|
ELBAT[NXTELBT] ~ ABS(T); 00057800
|
|
IF NXTELBT ~ NXTELBT+1 > 74 00057900
|
|
THEN BEGIN 00058000
|
|
MOVE(10,ELBAT[65],ELBAT); 00058100
|
|
I~ I-65; 00058200
|
|
P~ P-65; 00058300
|
|
NXTELBT ~ 10 END END; 00058400
|
|
ELBAT[NXTELBT+1] ~ REAL( NOT FALSE); 00058500
|
|
TABLE ~ ELBAT[P].CLASS END; 00058600
|
|
INTEGER IDCTR; 00058700
|
|
FORMAT FC(I8,A8," CLASS=",I3,"; ADDRESS =",I5,"; INCR =",I4,00058800
|
|
"; LINK =",I5,"."); 00058900
|
|
REAL PROCEDURE TAKE(L); VALUE L; REAL L; 00059000
|
|
TAKE ~ INFO[L.LINKR,L.LINKC]; 00059100
|
|
REAL PROCEDURE STEPI; 00059200
|
|
STEPI ~ ELCLASS ~ TABLE(I~I+1); 00059300
|
|
PROCEDURE STEPIT; ELCLASS ~ TABLE(I~I+1); 00059400
|
|
PROCEDURE PUT(A)"INTO"(B); VALUE A,B; REAL A,B; 00059500
|
|
INFO[B.LINKR,B.LINKC] ~ A; 00059600
|
|
PROCEDURE PUTSEQ(S,I); VALUE I; REAL S,I; 00059700
|
|
MOVE(1,S,INFO[I.LINKR,I.LINKC]); 00059800
|
|
REAL TYPE; INTEGER INDENT; DEFINE IDMAX = LABELID#; 00059900
|
|
PROCEDURE ENDCOMMENT; BEGIN ENDTOG~TRUE; 00060000
|
|
DELTA ~ DELTA-1; 00060100
|
|
A[0] ~ BEGINARRAY[DELTA]; 00060200
|
|
MOVE(1,CURRSEQ,A[1]); 00060300
|
|
WRITE(CODAL,2,A[*]); 00060400
|
|
DO UNTIL STEPI } UNTILV AND ELCLASS { ENDV OR NOT ENDTOG; ENDTOG~FALSE 00060500
|
|
END; 00060600
|
|
ARRAY HOLDER[0:20]; 00060700
|
|
DEFINE 00060800
|
|
QA = HOLDER[ 0]#, 00060900
|
|
QB = HOLDER[ 1]#, 00061000
|
|
QC = HOLDER[ 2]#, 00061100
|
|
QD = HOLDER[ 3]#, 00061200
|
|
QE = HOLDER[ 4]#, 00061300
|
|
QF = HOLDER[ 5]#, 00061400
|
|
QG = HOLDER[ 6]#, 00061500
|
|
QH = HOLDER[ 7]#, 00061600
|
|
QI = HOLDER[ 8]#, 00061700
|
|
QJ = HOLDER[10]#, 00061800
|
|
QK = HOLDER[11]#, 00061900
|
|
QL = HOLDER[12]#, 00062000
|
|
QM = HOLDER[13]#, 00062100
|
|
QN = HOLDER[15]#, 00062200
|
|
QP = HOLDER[17]#, 00062300
|
|
QQ = HOLDER[18]#; 00062400
|
|
REAL PROCEDURE MAX(A,B); VALUE A,B; REAL A,B; 00062500
|
|
MAX ~ IF A > B THEN A ELSE B; 00062600
|
|
REAL PROCEDURE MIN(A,B); VALUE A,B; REAL A,B; 00062700
|
|
MIN ~ IF A < B THEN A ELSE B; 00062800
|
|
ARRAY FLOWARRAY[0:13]; 00062900
|
|
REAL FLOWCTR,LL,RL,LLBOO,RLBOO,CENTER,OLL,ORL,LINEPLACE,OLDLINEPLACE; 00063000
|
|
BOOLEAN CENTERTOG,BLANKTOG,STRMTOG,BOOTOG; 00063100
|
|
REAL FUDGE; 00063200
|
|
SAVE ARRAY LINEACCUM[0:1022]; 00063300
|
|
PROCEDURE WRITERECORD(LINES,L,R,Q,N); VALUE LINES,Q,N; 00063400
|
|
BOOLEAN LINES; REAL L,R,Q,N; 00063500
|
|
BEGIN 00063600
|
|
STREAM PROCEDURE MOVECHAR(L,Q,N,F); VALUE Q,N; 00063700
|
|
BEGIN LOCAL Q1; 00063800
|
|
DI ~ LOC Q1; DI ~ DI+7; 00063900
|
|
SI ~ LOC Q; SI ~ SI+6; DS ~ CHR; 00064000
|
|
SI ~ L; Q1(SI ~ SI+32;SI~SI+32;); SI ~ SI+Q; 00064100
|
|
DI ~ F; DS ~ N CHR; 00064200
|
|
END; 00064300
|
|
IF DOKLUDGE THEN R ~ RLBOO ~ MAX(R,N DIV 2 + CENTER + 4|RL - 1);00064400
|
|
FLOWARRAY[0] ~ CENTER-(N-1) DIV 2-1; 00064500
|
|
FLOWARRAY[1] ~ N; 00064600
|
|
IF LINES THEN BEGIN 00064700
|
|
FLOWARRAY[2] ~ LLBOO; 00064800
|
|
FLOWARRAY[3] ~ RLBOO; 00064900
|
|
IF LLBOO } 0 THEN FLOWARRAY[2] ~+(LL~LL-1)|4+LLBOO+1; 00065000
|
|
IF RLBOO } 0 THEN FLOWARRAY[3] ~-(RL~RL-1)|4+RLBOO-1; 00065100
|
|
END; 00065200
|
|
IF FLOWTOG THEN BEGIN 00065300
|
|
IF LINES THEN 00065400
|
|
FLOWARRAY[4] ~ REAL(LL!OLL)|2+REAL(RL!ORL); 00065500
|
|
MOVECHAR(LINEACCUM[0],Q,N,FLOWARRAY[5]); 00065600
|
|
WRITE (FLOW, 14, FLOWARRAY[*]); 00065700
|
|
FLOWCTR ~ FLOWCTR+1; 00065800
|
|
END; 00065900
|
|
IF LINES THEN BEGIN 00066000
|
|
OLL ~ LL; ORL ~ RL; 00066100
|
|
LLBOO ~ RLBOO ~ -1; 00066200
|
|
END; 00066300
|
|
L ~ MIN(L,CENTER-(N-1) DIV 2 - 4|LL-1); 00066400
|
|
R ~ MAX(R,CENTER+N DIV 2 + 4|RL-1); 00066500
|
|
END WRITERECORD; 00066600
|
|
PROCEDURE WRITELINE(LMAR,RMAR); REAL LMAR,RMAR; 00066700
|
|
BEGIN INTEGER T1,T2,Q; 00066800
|
|
DEFINE M = T1#,N = T2#; 00066900
|
|
REAL STREAM PROCEDURE FIND(L,Q,M); VALUE Q,M; 00067000
|
|
BEGIN LOCAL Q1; LABEL K; 00067100
|
|
DI ~ LOC Q1; DI ~ DI+7; 00067200
|
|
SI ~ LOC Q; SI ~ SI+6; DS ~ CHR; 00067300
|
|
TALLY ~ 0; SI ~ L; SI ~ SI-1; 00067400
|
|
Q1(SI ~ SI+32; SI ~ SI+32); SI ~ SI+Q; SI~ SI+M; 00067500
|
|
K: IF SC = ALPHA THEN 00067600
|
|
BEGIN TALLY ~ TALLY+1; SI ~ SI-1; GO TO K END; 00067700
|
|
FIND ~ TALLY END; 00067800
|
|
IF CENTERTOG THEN 00067900
|
|
BEGIN CENTERTOG ~ FALSE; 00068000
|
|
T1 ~ (MAX(LINEPLACE,OLDLINEPLACE)-REAL(BOOTOG)|12) DIV 8; 00068100
|
|
BOOTOG ~ FALSE; 00068200
|
|
T2 ~ 2|(LL-RL)+60-CENTER; 00068300
|
|
CENTER ~ MIN(T1,ABS(T2))|SIGN(T2)+CENTER 00068400
|
|
END; 00068500
|
|
IF BLANKTOG THEN 00068600
|
|
BEGIN CENTER ~ 2|(LL-RL+FUDGE)+60; 00068700
|
|
LMAR ~ MIN(LMAR,CENTER+4|LL); 00068800
|
|
RMAR ~ MAX(RMAR,CENTER-4|RL); 00068900
|
|
END; 00069000
|
|
FUDGE ~ 0; 00069100
|
|
M ~ MIN(120-4|(LL+RL),56); 00069200
|
|
M ~ MIN(LINEPLACE DIV (LINEPLACE DIV M + 1) +5,M); 00069300
|
|
DO BEGIN IF Q+M < LINEPLACE THEN 00069400
|
|
BEGIN N ~-FIND(LINEACCUM,Q,M)+M; 00069500
|
|
IF N { 0 THEN N ~ M; 00069600
|
|
FLOWARRAY[2] ~ FLOWARRAY[3] ~ -1; 00069700
|
|
FLOWARRAY[4] ~ 0; 00069800
|
|
WRITERECORD(FALSE,LMAR,RMAR,Q,N); 00069900
|
|
Q ~ Q+N; 00070000
|
|
END ELSE BEGIN 00070100
|
|
WRITERECORD(TRUE,LMAR,RMAR,Q,LINEPLACE-Q); 00070200
|
|
Q ~ Q+M END END UNTIL Q } LINEPLACE; 00070300
|
|
BLANKTOG ~ FALSE; 00070400
|
|
OLDLINEPLACE ~ LINEPLACE; 00070500
|
|
LINEPLACE ~ 0; 00070600
|
|
END WRITELINE; 00070700
|
|
PROCEDURE PUSH(Q); REAL Q; 00070800
|
|
BEGIN 00070900
|
|
REAL STREAM PROCEDURE P(Q,N,L); VALUE N; 00071000
|
|
BEGIN LOCAL N1,C; 00071100
|
|
DI ~ LOC N1; DI ~ DI+7; SI ~ LOC N; SI ~ SI+6; DS ~ CHR; 00071200
|
|
SI ~ Q; SI ~ SI+2; DI ~ LOC P; DI ~ DI+7; DS ~ CHR; 00071300
|
|
DI ~ L; N1(DI ~ DI+32; DI ~ DI+32); DI ~ DI+N; DS ~ P CHR; 00071400
|
|
END; 00071500
|
|
IF LINEPLACE+Q.[12:6]<8184 THEN 00071600
|
|
LINEPLACE ~ P(Q,LINEPLACE,LINEACCUM)+LINEPLACE; 00071700
|
|
END PUSH; 00071800
|
|
PROCEDURE PUSHANDWR(Q,L,R); REAL Q,L,R; 00071900
|
|
BEGIN PUSH(Q); WRITELINE(L,R); END PUSHANDWR; 00072000
|
|
PROCEDURE ORDINARY(S); VALUE S; REAL S; 00072100
|
|
BEGIN REAL ELSECTR; LABEL L; 00072200
|
|
REAL PCOUNT; 00072300
|
|
WHILE(ELCLASS < UNTILV OR ELCLASS > SEMICOLON) 00072400
|
|
AND ELCLASS!S OR PCOUNT>0 DO 00072500
|
|
L: BEGIN PUSH(ACCUM[1]); 00072600
|
|
IF ELCLASS = IFV THEN ELSECTR ~ ELSECTR+1; 00072700
|
|
IF ELCLASS=FORV THEN PCOUNT~PCOUNT+1 ELSE IF ELCLASS=DOV THEN PCOUNT~ 00072800
|
|
PCOUNT-1; 00072900
|
|
NST ~ NONSPACERTOG; 00073000
|
|
STEPIT; 00073100
|
|
IF NST AND NONSPACERTOG THEN PUSH(QE); 00073200
|
|
END; 00073300
|
|
IF ELCLASS = ELSEV THEN ELSECTR ~ ELSECTR-1; 00073400
|
|
IF ELSECTR } 0AND ELCLASS = ELSEV THEN GO TO L; 00073500
|
|
IF NOT(NST AND NONSPACERTOG) AND LINEPLACE ! 0 THEN PUSH(QE); 00073600
|
|
END ORDINARY; 00073700
|
|
PROCEDURE TIL(V); VALUE V; REAL V; 00073800
|
|
BEGIN REAL ELSECTR; 00073900
|
|
DO BEGIN 00074000
|
|
WHILE ELCLASS ! V DO 00074100
|
|
BEGIN PUSH(ACCUM[1]); 00074200
|
|
NST ~ NONSPACERTOG; 00074300
|
|
STEPIT; 00074400
|
|
IF NST AND NONSPACERTOG THEN PUSH(QE); 00074500
|
|
IF ELCLASS = IFV THEN ELSECTR ~ ELSECTR+1; 00074600
|
|
IF ELCLASS = ELSEV THEN ELSECTR ~ ELSECTR-1; 00074700
|
|
END; 00074800
|
|
ELCLASS ~ 0; 00074900
|
|
END UNTIL ELSECTR = 0 ; 00075000
|
|
STEPIT; 00075100
|
|
END TIL; 00075200
|
|
PROCEDURE STMT(L,R); REAL L,R; FORWARD; 00075300
|
|
PROCEDURE BOOSTMT(L,R,V); VALUE V; REAL L,R,V; 00075400
|
|
BEGIN 00075500
|
|
STEPIT; 00075600
|
|
PUSH(QI); 00075700
|
|
TIL(V); 00075800
|
|
RL ~ RL+1; 00075900
|
|
CENTERTOG ~ BOOTOG ~ TRUE; 00076000
|
|
PUSHANDWR(QC,L,R); 00076100
|
|
CENTERTOG ~ BOOTOG ~ TRUE; 00076200
|
|
PUSHANDWR(QB,L,R); 00076300
|
|
PUSHANDWR(QJ,L,R); 00076400
|
|
PUSHANDWR(QB,L,R); 00076500
|
|
STMT(L,R); 00076600
|
|
END BOOSTMT; 00076700
|
|
PROCEDURE WHILESTMT(L,R); REAL L,R; 00076800
|
|
BEGIN REAL TL,TR,T; 00076900
|
|
LL ~ LL+1; TL ~ 120; 00077000
|
|
PUSHANDWR(QK,TL,TR); 00077100
|
|
PUSHANDWR(QB,TL,TR); 00077200
|
|
BOOSTMT(TL,TR,DOV); 00077300
|
|
LLBOO ~ TL; 00077400
|
|
PUSHANDWR(QB,TL,TR); 00077500
|
|
FUDGE ~ REAL(BLANKTOG ~ TRUE); 00077600
|
|
PUSHANDWR(QE,TL,TR); 00077700
|
|
RLBOO ~ TR; 00077800
|
|
PUSHANDWR(QB,TL,TR); 00077900
|
|
PUSHANDWR(QB,TL,TR); 00078000
|
|
PUSHANDWR(QH,TL,TR); 00078100
|
|
L ~ MIN(L,TL); 00078200
|
|
R ~ MAX(R,TR); 00078300
|
|
END WHILESTMT; 00078400
|
|
PROCEDURE FILLSTMT(L,R); REAL L,R; 00078500
|
|
BEGIN TIL(WITHV); 00078600
|
|
WRITELINE(L,R); 00078700
|
|
PUSHANDWR(QB,L,R); 00078800
|
|
I ~ I-1; 00078900
|
|
DO IF STEPI=ADOP THEN STEPIT UNTIL STEPI}UNTILV AND ELCLASS{SEMICOLON; 00079000
|
|
END FILLSTMT; 00079100
|
|
PROCEDURE FORSTMT(L,R); REAL L,R; 00079200
|
|
BEGIN REAL TL,TR; 00079300
|
|
REAL C; 00079400
|
|
TL ~ 120; 00079500
|
|
TIL(DOV); CENTERTOG ~ TRUE; 00079600
|
|
WRITELINE(L,R); 00079700
|
|
CENTERTOG ~ TRUE; 00079800
|
|
PUSHANDWR(QB,L,R); 00079900
|
|
RL ~ RL+1; LL ~ LL+1; 00080000
|
|
PUSHANDWR(QB,TL,TR); 00080100
|
|
PUSHANDWR(QB,TL,TR); 00080200
|
|
C ~ CENTER; 00080300
|
|
STMT(TL,TR); 00080400
|
|
LLBOO ~ TL; RLBOO ~ TR; 00080500
|
|
PUSHANDWR(QB,TL,TR); 00080600
|
|
CENTER ~ C; 00080700
|
|
PUSHANDWR(QB,TL,TR); 00080800
|
|
L ~ MIN(L,TL); 00080900
|
|
R ~ MAX(R,TR); 00081000
|
|
END FORSTMT; 00081100
|
|
PROCEDURE LOOPSTMT(L,R); REAL L,R; 00081200
|
|
BEGIN LABEL EL; 00081300
|
|
REAL TL,TR,C; 00081400
|
|
TL ~ 120; 00081500
|
|
PUSH(QL); 00081600
|
|
PUSH(ACCUM[1]); 00081700
|
|
PUSH(QE); 00081800
|
|
CENTERTOG ~ TRUE; 00081900
|
|
PUSHANDWR(QM,L,R); 00082000
|
|
CENTERTOG ~ TRUE; 00082100
|
|
PUSHANDWR(QB,L,R); 00082200
|
|
LL ~ LL+1; RL ~ RL+1; 00082300
|
|
PUSHANDWR(QB,TL,TR); 00082400
|
|
PUSHANDWR(QB,TL,TR); 00082500
|
|
C ~ CENTER; 00082600
|
|
STEPIT; STEPIT; 00082700
|
|
STEPIT; 00082800
|
|
LLBOO ~ TL; RLBOO ~ TR; 00082900
|
|
PUSHANDWR(QB,TL,TR); 00083000
|
|
CENTER ~ C; 00083100
|
|
PUSHANDWR(QB,L,R); 00083200
|
|
L ~ MIN(L,TL); 00083300
|
|
R ~ MAX(R,TR); 00083400
|
|
END LOOPSTMT; 00083500
|
|
PROCEDURE DOSTMT(L,R); REAL L,R; 00083600
|
|
BEGIN REAL TL,TR; 00083700
|
|
TL ~ 120; 00083800
|
|
STEPIT; 00083900
|
|
RL ~ RL+1; 00084000
|
|
PUSHANDWR(QA,TL,TR); 00084100
|
|
PUSHANDWR(QB,TL,TR); 00084200
|
|
STMT(TL,TR); 00084300
|
|
STEPIT; 00084400
|
|
PUSH(QI); 00084500
|
|
ORDINARY(300); 00084600
|
|
PUSH(QC); 00084700
|
|
RLBOO ~ TR; DOKLUDGE ~ TRUE; 00084800
|
|
WRITELINE(TL,TR); 00084900
|
|
CENTERTOG ~ BOOTOG ~ TRUE; 00085000
|
|
DOKLUDGE ~ FALSE ; 00085100
|
|
PUSHANDWR(QB,L,R); 00085200
|
|
PUSHANDWR(QJ,L,R); 00085300
|
|
PUSHANDWR(QB,L,R); 00085400
|
|
L ~ MIN(L,TL); 00085500
|
|
R ~ MAX(R,TR); 00085600
|
|
END BOSTMT; 00085700
|
|
PROCEDURE COMPOUNDTAIL(L,R); REAL L,R; 00085800
|
|
BEGIN LABEL EL; 00085900
|
|
EL: STMT(L,R); 00086000
|
|
IF ELCLASS = SEMICOLON THEN 00086100
|
|
BEGIN STEPIT; 00086200
|
|
GO TO EL 00086300
|
|
END; 00086400
|
|
ENDCOMMENT; 00086500
|
|
END; 00086600
|
|
PROCEDURE LABELR(L,R); REAL L,R; 00086700
|
|
BEGIN 00086800
|
|
IF NOT STRMTOG THEN 00086900
|
|
BEGIN GT1 ~ TAKE(ELBAT[I]); 00087000
|
|
GT1 ~ GT1.INCR+ELBAT[I].LINK; 00087100
|
|
PUTSEQ(CURRSEQ,GT1); 00087200
|
|
END; 00087300
|
|
PUSH(ACCUM[1]); 00087400
|
|
STEPIT; 00087500
|
|
PUSH(ACCUM[1]); 00087600
|
|
STEPIT; 00087700
|
|
PUSH(QN); 00087800
|
|
GT4 ~ LINEPLACE; 00087900
|
|
FOR GT1 ~ 2 STEP 1 UNTIL GT4 DO PUSH(QE); 00088000
|
|
WRITELINE(L,R); 00088100
|
|
PUSHANDWR(QB,L,R); 00088200
|
|
END LABELR; 00088300
|
|
PROCEDURE IFSTMT(L,R); REAL L,R; 00088400
|
|
BEGIN REAL TL1,TR1,TL2,TR2; 00088500
|
|
BOOLEAN B; 00088600
|
|
TL1 ~ TL2 ~ 120; 00088700
|
|
BOOSTMT(TL1,TR1,THENV); 00088800
|
|
IF ELCLASS ! ELSEV AND NOT BLANKTOG THEN 00088900
|
|
BEGIN RLBOO ~ TR1; 00089000
|
|
PUSHANDWR(QA,TL1,TR1); 00089100
|
|
END 00089200
|
|
ELSE BEGIN 00089300
|
|
B ~ NOT BLANKTOG; 00089400
|
|
IF NOT BLANKTOG THEN 00089500
|
|
BEGIN LL ~ LL+1; 00089600
|
|
PUSHANDWR(QB,TL1,TR1); 00089700
|
|
TL2 ~ CENTER -4|LL+1; 00089800
|
|
END; 00089900
|
|
FUDGE ~ REAL(BLANKTOG ~ TRUE); 00090000
|
|
PUSHANDWR(QE,TL2,TR1); 00090100
|
|
RLBOO ~ TR1; 00090200
|
|
PUSHANDWR(QB,TL1,TR1); 00090300
|
|
PUSHANDWR(QB,TL2,TR2); 00090400
|
|
PUSHANDWR(QH,TL2,TR2); 00090500
|
|
IF ELCLASS = ELSEV THEN 00090600
|
|
BEGIN STEPIT; 00090700
|
|
STMT(TL2,TR2); 00090800
|
|
IF B THEN BEGIN 00090900
|
|
LLBOO ~ TL2; 00091000
|
|
PUSHANDWR(QK,TL2,TR2); 00091100
|
|
END; 00091200
|
|
END; 00091300
|
|
TL1 ~ MIN(TL1,TL2); 00091400
|
|
TR1 ~ MAX(TR1,TR2); 00091500
|
|
END; 00091600
|
|
IF NOT BLANKTOG THEN PUSHANDWR(QB,TL1,TR1); 00091700
|
|
L ~ MIN(L,TL1); 00091800
|
|
R ~ MAX(R,TR1); 00091900
|
|
END IFSTMT; 00092000
|
|
PROCEDURE GOSTMT(L,R); REAL L,R; 00092100
|
|
BEGIN REAL T,T1,T2,GT1; 00092200
|
|
REAL STREAM PROCEDURE CONVERT(N); VALUE N; 00092300
|
|
BEGIN SI ~ LOC N; DI ~ LOC N; DS ~ 8 DEC; 00092400
|
|
DI ~ LOC CONVERT; DI ~ DI+2; DS ~ LIT "2"; 00092500
|
|
SI ~ LOC N; SI ~ SI+6; 00092600
|
|
IF SC = "0" THEN 00092700
|
|
BEGIN DS ~ LIT " "; SI ~ SI+1; DS ~ CHR END 00092800
|
|
ELSE DS ~ 2 CHR; 00092900
|
|
END; 00093000
|
|
IF STEPI = TOV THEN STEPIT; 00093100
|
|
IF ELCLASS ! SWITCHID THEN 00093200
|
|
BEGIN PUSHANDWR(QB,L,R); 00093300
|
|
PUSH(QF); 00093400
|
|
ORDINARY(300); 00093500
|
|
PUSHANDWR(QG,L,R); 00093600
|
|
PUSHANDWR(QE,L,R); 00093700
|
|
PUSHANDWR(QE,L,R); 00093800
|
|
BLANKTOG ~ TRUE; 00093900
|
|
END ELSE BEGIN T ~ ELBAT[I].LINK+TAKE(ELBAT[I]).INCR+2; 00094000
|
|
PUSH(ACCUM[1]); STEPIT; T2~ 1; 00094100
|
|
ORDINARY(300); 00094200
|
|
CENTERTOG ~ TRUE; 00094300
|
|
WRITELINE(L,R); 00094400
|
|
CENTERTOG ~ TRUE; 00094500
|
|
WHILE GT1 ~ TAKE(T) ! 0 DO 00094600
|
|
BEGIN PUSHANDWR(QB,L,R); 00094700
|
|
PUSH(QF); 00094800
|
|
PUSH(INFO[GT1.LINKR, GT1.LINKC+1]); 00094900
|
|
PUSH(QP); 00095000
|
|
GT1 ~ CONVERT(T2); 00095100
|
|
PUSH(GT1); 00095200
|
|
GT4 ~ LINEPLACE; 00095300
|
|
FOR GT1 ~ 8 STEP 1 UNTIL GT4 DO 00095400
|
|
PUSH(QE); 00095500
|
|
WRITELINE(L,R); 00095600
|
|
T ~ T+1; T2 ~ T2+1; 00095700
|
|
PUSHANDWR(QB,L,R); 00095800
|
|
END; 00095900
|
|
PUSHANDWR(QB,L,R); 00096000
|
|
PUSHANDWR(QH,L,R); 00096100
|
|
END END GOSTMT; 00096200
|
|
PROCEDURE BLOCK(A,B,C,D); VALUE A,B; REAL A,C,D; BOOLEAN B; FORWARD; 00096300
|
|
PROCEDURE STMT(L,R); REAL L,R; 00096400
|
|
BEGIN LABEL AGAIN,EL,EXIT; 00096500
|
|
REAL T; 00096600
|
|
AGAIN: IF ELCLASS = IFV THEN BEGIN IFSTMT(L,R); GO EXIT END; 00096700
|
|
IF ELCLASS = GOV THEN BEGIN GOSTMT(L,R); GO EXIT END; 00096800
|
|
IF ELCLASS = DOV THEN BEGIN DOSTMT(L,R); GO EXIT END; 00096900
|
|
IF ELCLASS = WHILEV THEN BEGIN WHILESTMT(L,R); GO EXIT END; 00097000
|
|
IF ELCLASS = FORV THEN BEGIN FORSTMT(L,R); GO EXIT END; 00097100
|
|
IF ELCLASS = FILLV THEN BEGIN FILLSTMT(L,R); GO EXIT END; 00097200
|
|
IF ELCLASS = LABELID THEN 00097300
|
|
EL: BEGIN LABELR(L,R); GO AGAIN END; 00097400
|
|
IF ELCLASS = BEGINV THEN 00097500
|
|
BEGIN IF TABLE(I+1) = DECLARATOR THEN 00097600
|
|
IF TABLE(I-1) = COLON THEN 00097700
|
|
BEGIN PUT(TAKE(ELBAT[I-2])&2[16:37:11],ELBAT[I-2]); 00097800
|
|
BLOCK(ELBAT[I-2],FALSE,L,R); 00097900
|
|
END ELSE BLOCK(0,FALSE,L,R) 00098000
|
|
ELSE BEGIN STEPIT; COMPOUNDTAIL(L,R) END; 00098100
|
|
GO TO EXIT END; 00098200
|
|
IF STRMTOG THEN 00098300
|
|
BEGIN RESULT ~ 6; 00098400
|
|
SCANNER; 00098500
|
|
IF GT1 ~ EXAMIN(NCR) = ":" THEN GO TO EL; 00098600
|
|
IF GT1 = "(" AND ELCLASS ! RELEASEV THEN 00098700
|
|
BEGIN LOOPSTMT(L,R); GO EXIT END; 00098800
|
|
T ~ ELCLASS; 00098900
|
|
ORDINARY(RTPAREN); 00099000
|
|
IF T = RELEASEV THEN 00099100
|
|
BEGIN PUSH(ACCUM[1]); STEPIT; PUSH(QE) END; 00099200
|
|
END ELSE ORDINARY(300); 00099300
|
|
IF LINEPLACE ! 0 THEN 00099400
|
|
BEGIN LINEPLACE ~ LINEPLACE-1; 00099500
|
|
WRITELINE(L,R); 00099600
|
|
PUSHANDWR(QB,L,R) END; 00099700
|
|
EXIT: END STMT; 00099800
|
|
REAL 00099900
|
|
STREAM PROCEDURE PRINTNDX(ALF,TYPE,SEQ,LINE,INDENT); 00100000
|
|
BEGIN 00100100
|
|
LOCAL L,A; 00100200
|
|
DI~ INDENT; SI ~ LINE; DS ~ WDS; SI ~ SEQ; DS~WDS; L ~ DI; 00100300
|
|
DI ~ LOC A; DI ~ DI+7; SI~ ALF; SI~ SI+10; DS ~CHR; 00100400
|
|
TALLY~TALLY+A; 00100500
|
|
DI ~ L; DS ~ A CHR; DS ~ 1 LIT "("; L ~ DI; 00100600
|
|
DI ~ LOC A; DI ~DI+7; SI~TYPE; SI~ SI+10; DS ~ CHR; 00100700
|
|
TALLY~TALLY+A; 00100800
|
|
DI ~ L; DS ~ A CHR; DS ~ 1 LIT ")"; 00100900
|
|
TALLY ~ TALLY+2; PRINTNDX~ TALLY END; 00101000
|
|
PROCEDURE PURGE(BACKTO,P,PRNT); VALUE BACKTO,P,PRNT; 00101100
|
|
REAL BACKTO,P; BOOLEAN PRNT; 00101200
|
|
BEGIN 00101300
|
|
PROCEDURE ALPHALATE(P); VALUE P; REAL P; 00101400
|
|
BEGIN REAL STREAM PROCEDURE COMPARE(A,B,COUNT); VALUE COUNT; 00101500
|
|
BEGIN SI ~A; SI~SI+11; DI~B;DI~DI+11; 00101600
|
|
IF COUNT SC < DC THEN TALLY~1 ELSE BEGIN SI~SI-COUNT; 00101700
|
|
DI~DI-COUNT; IF COUNT SC = DC THEN TALLY ~2 END ;00101800
|
|
COMPARE~TALLY END; 00101900
|
|
REAL CP,C,CG,GL,PGL,B; LABEL L; 00102000
|
|
PGL~4; GL~ TAKE(PGL).LINK; 00102100
|
|
CP ~ TAKE(P.LINK+1).[12:6] ; 00102200
|
|
L: CG~ TAKE(GL+1).[12:6]; 00102300
|
|
C ~ IF CP > CG THEN CG ELSE CP; 00102400
|
|
B ~ COMPARE(INFO[P.LINKR,P.LINKC], 00102500
|
|
INFO[GL.LINKR,GL.LINKC],C); 00102600
|
|
IF B = 1 OR ( B=2 AND CP < CG) THEN 00102700
|
|
BEGIN PUT(TAKE(PGL)&P [35:35:13],PGL); 00102800
|
|
PUT(TAKE(P )&GL[35:35:13],P ); END 00102900
|
|
ELSE BEGIN PGL ~ GL; GL ~ TAKE(GL).LINK; GO TO L; 00103000
|
|
END END ; 00103100
|
|
FILL INFO [0,*] WITH OCT20040000,OCT21400000000,0, 00103200
|
|
"5BLOCK",6,"1 0000",0,OCT21400000000; 00103300
|
|
GT1 ~ TAKE(P); 00103400
|
|
GT2 ~ GT1.INCR+P.LINK; 00103500
|
|
IF PREVL > BACKTO THEN BEGIN 00103600
|
|
IF PRNT AND INDEXTOG THEN 00103700
|
|
BEGIN PUT(RECORDCOUNT,GT2+1); RCF~RECORDCOUNT; END; 00103800
|
|
WHILE PREVL > BACKTO DO BEGIN 00103900
|
|
GT1 ~ TAKE(PREVL); 00104000
|
|
GT2 ~ GT1.INCR+ PREVL; 00104100
|
|
IF PRNT THEN 00104200
|
|
IF INDEXTOG THEN ALPHALATE(PREVL); 00104300
|
|
GT2 ~ TAKE(PREVL+1); 00104400
|
|
GT3 ~ GT2.[4:8]; 00104500
|
|
GT2 ~ GT2&0[1:1:11]; 00104600
|
|
STACKHEAD[GT2 MOD 125] ~ GT1.LINK; 00104700
|
|
AVAIL ~ PREVL; 00104800
|
|
PREVL ~ PREVL - GT3 END; 00104900
|
|
IF INDEXTOG THEN 00105000
|
|
IF PRNT THEN BEGIN J ~4; J~TAKE(J); 00105100
|
|
WHILE TAKE(J).LINK ! 0 DO BEGIN GT1~ TAKE(J); 00105200
|
|
GT4~TAKE(GT1).LINK; 00105300
|
|
GT2~GT1.INCR+J; 00105400
|
|
GT3~ PRINTNDX( 00105500
|
|
INFO[J.LINKR,J.LINKC], 00105600
|
|
INFO[GT1.[16:3],GT1.[19: 8]], 00105700
|
|
INFO[GT2.LINKR,GT2.LINKC], 00105800
|
|
INFO[(GT2+1).LINKR,(GT2+1).LINKC],A[1]); 00105900
|
|
A[0] ~ GT3+512|GT4; RECORDCOUNT ~ RECORDCOUNT+1; 00106000
|
|
WRITE(CODE, 20, A[*]); 00106100
|
|
J~GT1.LINK; 00106200
|
|
END END ; 00106300
|
|
INDENT ~ INDENT-4 END; END; 00106400
|
|
PROCEDURE ENTER; 00106500
|
|
BEGIN 00106600
|
|
ACCUM[0] ~ STACKHEAD[SCRAM]&(COUNT+18)[27:37:8] 00106700
|
|
&1 [2:41:7] & TYPE[16:37:11]; 00106800
|
|
ENTERIT; 00106900
|
|
PUTSEQ(CURRSEQ,AVAIL); 00107000
|
|
PUT(0,AVAIL+1); 00107100
|
|
AVAIL ~ AVAIL +2 END; 00107200
|
|
PROCEDURE WRITEFLOW(V); VALUE V; REAL V; 00107300
|
|
BEGIN REAL I,A; 00107400
|
|
DEFINE FINAL = LINEACCUM#, MASK = LINEACCUM[16]#; 00107500
|
|
REAL C,N; 00107600
|
|
BOOLEAN L,R; 00107700
|
|
STREAM PROCEDURE CENTER(C,N,FLOW); VALUE C,N; 00107800
|
|
BEGIN DI ~ C; SI ~ FLOW; DS ~ N CHR END; 00107900
|
|
STREAM PROCEDURE PLACE(P,W); VALUE P,W; 00108000
|
|
BEGIN DI ~ P; SI ~ LOC W; SI ~ SI+7; DS ~ CHR END; 00108100
|
|
REAL STREAM PROCEDURE LEFTLINE(S); VALUE S; 00108200
|
|
BEGIN LABEL L; 00108300
|
|
SI ~ S; DI ~ S; DI ~ DI+1; 00108400
|
|
L: SI ~ SI-1; DI ~ DI-2; 00108500
|
|
IF SC = " " THEN BEGIN DS ~ LIT "."; GO TO L END; 00108600
|
|
LEFTLINE~SI END; 00108700
|
|
REAL STREAM PROCEDURE RIGHTLINE(S); VALUE S; 00108800
|
|
BEGIN LABEL L; 00108900
|
|
SI ~ S; DI ~ S; 00109000
|
|
L: IF SC = " " THEN 00109100
|
|
BEGIN SI ~ SI+1; DS ~ LIT "."; GO TO L END; 00109200
|
|
RIGHTLINE ~ SI END; 00109300
|
|
REAL STREAM PROCEDURE P(N); VALUE N; 00109400
|
|
BEGIN LOCAL L,Q; 00109500
|
|
DI ~ LOC L; SI ~ LOC N; DI ~ DI+7; SI ~ SI+6; DS ~ CHR; 00109600
|
|
SI ~ Q; L(SI ~ SI+32; SI ~ SI+32); SI ~ SI+N; P ~ SI END; 00109700
|
|
REAL STREAM PROCEDURE MKABS(A); 00109800
|
|
BEGIN DI ~ A; MKABS ~ DI; 4(DI ~ DI+32); 00109900
|
|
15(DS ~ 8 LIT " ") END; 00110000
|
|
LINE[15] ~ 1; 00110100
|
|
IF SOURCETOG AND LISTOG AND NOT TIME THEN BEGIN TIME~TRUE;TIMEIT(BUG)END00110200
|
|
;IF SOURCETOG THEN 00110300
|
|
BEGIN IF TAPETOG THEN WRITE(TTAPE,16,LINE[*]); 00110400
|
|
IF LISTOG THEN 00110500
|
|
BEGIN BLANKOUT(LINE[0]); 00110600
|
|
WRITE(BUG[PAGE],15,LINE[*]); 00110700
|
|
END; 00110800
|
|
END; 00110900
|
|
IF FLOWTOG THEN BEGIN 00111000
|
|
PUSHANDWR(QB,0,0); 00111100
|
|
PUSHANDWR(QB,0,0); 00111200
|
|
N ~ FLOWARRAY[1]; 00111300
|
|
LLBOO ~ FLOWARRAY[2]; 00111400
|
|
RLBOO ~ FLOWARRAY[3]; 00111500
|
|
L ~ BOOLEAN(FLOWARRAY[4] DIV 2); 00111600
|
|
R ~ BOOLEAN(FLOWARRAY[4]); 00111700
|
|
IF LLBOO } 0 THEN PLACE(P(LLBOO)+A+16,"."); 00111800
|
|
IF RLBOO } 0 THEN PLACE(P(RLBOO)+A+16,"."); 00111900
|
|
MOVE(15,MASK,FINAL); 00112000
|
|
IF L THEN LL ~ LEFTLINE(P(C)+A); 00112100
|
|
IF R THEN RL ~ RIGHTLINE(P(C+N)+A); 00112200
|
|
CENTER (P(C)+A,N,FLOWARRAY[5]); 00112300
|
|
WRITE(CODE,15,FINAL[*]); 00112400
|
|
IF LLBOO < 0 AND L THEN PLACE(LL+16," "); 00112500
|
|
IF RLBOO < 0 AND R THEN PLACE(RL+16," "); 00112600
|
|
END; 00112700
|
|
FOR I ~ - 2 STEP 1 UNTIL V DO 00112800
|
|
BEGIN READ REVERSE (CODE,15,LINE[*]); 00112900
|
|
LINE[15] ~ 2 + REAL(V = I); 00113000
|
|
IF TAPETOG THEN WRITE(TTAPE,16,LINE[*]); 00113100
|
|
IF LISTOG THEN IF PAGETOG THEN WRITE(BUG, 15, LINE[*]) ELSE 00113200
|
|
WRITE (BUG,15,LINE[*]) ; 00113300
|
|
END; 00113400
|
|
IF LISTOG THEN WRITE (BUG[PAGE]) ; 00113500
|
|
00113600
|
|
END; 00113700
|
|
END WRITEFLOW; 00113800
|
|
PROCEDURE PROCEDUREDEC; 00113900
|
|
BEGIN INTEGER FLOWCTROLD,CENTEROLD,LLOLD,RLOLD,OLDOLDLINEPLACE,T; 00114000
|
|
LABEL L; 00114100
|
|
FLOWCTROLD ~ FLOWCTR; 00114200
|
|
CENTEROLD ~ CENTER; 00114300
|
|
LLOLD ~ LL; 00114400
|
|
RLOLD ~ RL; 00114500
|
|
OLDOLDLINEPLACE ~ OLDLINEPLACE; 00114600
|
|
CENTER ~ 60; 00114700
|
|
OLL ~ LL ~ ORL ~ RL ~ OLDLINEPLACE ~ 0; 00114800
|
|
PUSHANDWR(ACCUM[1],0,0); 00114900
|
|
FOR T ~ 1 STEP 1 UNTIL OLDLINEPLACE DO PUSH(QB); 00115000
|
|
WRITELINE(0,0); 00115100
|
|
PUSHANDWR(QB,0,0); 00115200
|
|
PUSHANDWR(QB,0,0); 00115300
|
|
ENTER; 00115400
|
|
IF ELBAT[I-2].ADDRESS = STREAMV THEN 00115500
|
|
BEGIN STRMTOG ~ TRUE; 00115600
|
|
DO UNTIL STEPI = BEGINV; 00115700
|
|
WHILE STEPI = DECLARATOR OR ACCUM[1] = "5LOCAL" DO 00115800
|
|
DO UNTIL STEPI = SEMICOLON; 00115900
|
|
COMPOUNDTAIL(120,0); 00116000
|
|
STRMTOG ~ FALSE; 00116100
|
|
END ELSE 00116200
|
|
BEGIN DO UNTIL STEPI = SEMICOLON; 00116300
|
|
IF STEPI = VALUEV THEN 00116400
|
|
BEGIN DO UNTIL STEPI = SEMICOLON; STEPIT END; 00116500
|
|
IF ELCLASS = DECLARATOR THEN 00116600
|
|
BEGIN I ~ I-1; 00116700
|
|
L: BLOCK(PREVL,TRUE,120,0); 00116800
|
|
END ELSE BEGIN 00116900
|
|
IF ELCLASS = BEGINV THEN 00117000
|
|
IF TABLE(I+1) = DECLARATOR THEN GO TO L; 00117100
|
|
T ~ PREVL; 00117200
|
|
STMT(0120,0); 00117300
|
|
PURGE(T,T,TRUE); 00117400
|
|
END END; 00117500
|
|
IF ELBAT[I-1].ADDRESS ! FORWARDV 00117600
|
|
THEN WRITEFLOW(FLOWCTR-FLOWCTROLD) 00117700
|
|
ELSE IF FLOWTOG THEN SPACE(FLOW,FLOWCTROLD-FLOWCTR); 00117800
|
|
FLOWCTR ~ FLOWCTROLD; 00117900
|
|
CENTER ~ CENTEROLD; 00118000
|
|
LL ~ OLL ~ LLOLD; 00118100
|
|
RL ~ ORL ~ RLOLD; 00118200
|
|
OLDLINEPLACE ~ OLDOLDLINEPLACE; 00118300
|
|
END PROCEDUREDEC; 00118400
|
|
PROCEDURE BLOCK(P,SOP,L,R); VALUE P,SOP; REAL P,L,R; BOOLEAN SOP; 00118500
|
|
BEGIN 00118600
|
|
INTEGER PARENCNT,BRACKCNT,BEGINCNT, BACKTO; 00118700
|
|
LABEL START,ARRAYL,DEFINEL,PROCEDUREL,FORWARDL,EXIT,LEBAL,00118800
|
|
SWITCHL,IOL,IOL1,REALETC,MISCEL; 00118900
|
|
SWITCH DECSWTCH ~ 00119000
|
|
MISCEL, 00119100
|
|
MISCEL, 00119200
|
|
REALETC, 00119300
|
|
REALETC, 00119400
|
|
REALETC, 00119500
|
|
REALETC, 00119600
|
|
LEBAL, 00119700
|
|
MISCEL, 00119800
|
|
IOL1, 00119900
|
|
IOL, 00120000
|
|
IOL, 00120100
|
|
MISCEL, 00120200
|
|
SWITCHL, 00120300
|
|
PROCEDUREL, 00120400
|
|
ARRAYL, 00120500
|
|
IOL1, 00120600
|
|
IOL1, 00120700
|
|
MISCEL, 00120800
|
|
FORWARDL, 00120900
|
|
DEFINEL; 00121000
|
|
IF P=0 THEN BEGIN TYPE ~ 2; COUNT~1; 00121100
|
|
ACCUM[1]~ "190000" + "30000"; 00121200
|
|
SCRAM ~ ACCUM[1] MOD 125; 00121300
|
|
ENTER; P ~ PREVL END ; 00121400
|
|
BACKTO ~ PREVL; INDENT ~ INDENT+4; 00121500
|
|
IF ELCLASS = BEGINV THEN SOP ~ FALSE; 00121600
|
|
START: IF STEPI = DECLARATOR THEN 00121700
|
|
BEGIN WHILE STEPI = DECLARATOR DO; 00121800
|
|
TYPE ~ ELBAT[I-1]; 00121900
|
|
GO TO DECSWTCH[TYPE.ADDRESS] END; 00122000
|
|
IF ELCLASS = BEGINV THEN IF TABLE(I+1)=DECLARATOR AND SOP 00122100
|
|
THEN BEGIN SOP~ FALSE; GO TO START END; 00122200
|
|
IF SOP THEN STMT(L,R) ELSE COMPOUNDTAIL(L,R); 00122300
|
|
PURGE(BACKTO,P,TRUE); GO TO EXIT; 00122400
|
|
FORWARDL: PURGE(BACKTO-1,P,FALSE); GO TO EXIT; 00122500
|
|
MISCEL: WHILE STEPI ! SEMICOLON DO; GO TO START; 00122600
|
|
DEFINEL: ENTER; WHILE STEPI ! CROSSHATCH DO; 00122700
|
|
IF STEPI = SEMICOLON THEN GO TO START; 00122800
|
|
STEPIT; 00122900
|
|
GO TO DEFINEL; 00123000
|
|
PROCEDUREL: IF SOP THEN GO TO REALETC; 00123100
|
|
PROCEDUREDEC; GO TO START; 00123200
|
|
REALETC: ENTER; 00123300
|
|
IF STEPI = SEMICOLON THEN GO TO START; 00123400
|
|
STEPIT; 00123500
|
|
GO TO REALETC; 00123600
|
|
LEBAL: ENTER; PUT(TAKE(PREVL)&LABELID[2:41:7],PREVL); 00123700
|
|
IF STEPI = SEMICOLON THEN GO TO START; 00123800
|
|
STEPIT; GO TO LEBAL; 00123900
|
|
ARRAYL: ENTER; 00124000
|
|
IF STEPI = COMMA THEN BEGIN STEPIT; GO TO ARRAYL END; 00124100
|
|
BRACKCNT ~ 0; 00124200
|
|
DO BEGIN 00124300
|
|
IF ELCLASS = LFTBRKET 00124400
|
|
THEN BRACKCNT ~ BRACKCNT+1 00124500
|
|
ELSE IF ELCLASS = RTBRKET 00124600
|
|
THEN BRACKCNT ~ BRACKCNT-1; 00124700
|
|
STEPIT END UNTIL BRACKCNT = 0 ; 00124800
|
|
IF ELCLASS = SEMICOLON THEN GO TO START; 00124900
|
|
STEPIT; 00125000
|
|
GO TO ARRAYL; 00125100
|
|
IOL: TYPE ~ ELBAT[I-2]; 00125200
|
|
IOL1: ENTER; 00125300
|
|
IF ELBAT[I-2].ADDRESS = SWITCHV AND TABLE(I+1) ! COMMA 00125400
|
|
THEN GO TO MISCEL; 00125500
|
|
PARENCNT ~ 0; 00125600
|
|
IF STEPI = COMMA THEN BEGIN STEPIT; GO TO IOL1 END; 00125700
|
|
IF ELCLASS = SEMICOLON THEN GO TO START; I ~ I-1; 00125800
|
|
DO UNTIL STEPI = LEFTPAREN; I ~ I -1; 00125900
|
|
DO IF STEPI =LEFTPAREN 00126000
|
|
THEN PARENCNT ~ PARENCNT+1 00126100
|
|
ELSE IF ELCLASS = RTPAREN THEN PARENCNT ~ PARENCNT-1 00126200
|
|
UNTIL PARENCNT = 0; 00126300
|
|
IF STEPI = SEMICOLON THEN GO TO START; 00126400
|
|
STEPIT; 00126500
|
|
GO TO IOL1; 00126600
|
|
SWITCHL: IF SOP THEN GO TO IOL1; ENTER; 00126700
|
|
PUT(TAKE(PREVL)&SWITCHID[2:41:7],PREVL); 00126800
|
|
WHILE STEPI ! SEMICOLON DO 00126900
|
|
BEGIN STEPIT; 00127000
|
|
PUT(ELBAT[I],AVAIL); 00127100
|
|
AVAIL ~ AVAIL+1 00127200
|
|
END; 00127300
|
|
PUT(0,AVAIL); 00127400
|
|
AVAIL ~ AVAIL+1; 00127500
|
|
GO TO START; 00127600
|
|
EXIT: END BLOCK; 00127700
|
|
FILL INFO[0,*] WITH 0, OCT011400000000,0; 00127800
|
|
LASTUSED ~ -2; 00127900
|
|
READACARD; 00128000
|
|
LISTOG ~ INDEXTOG ~ FLOWTOG ~ SOURCETOG ~ FALSE; 00128100
|
|
AVAIL ~ 451; PREVL ~ 450; 00128200
|
|
NXTELBT ~ 1; 00128300
|
|
FILL CURRSEQA[*] WITH 0,0," "; 00128400
|
|
FILL HOLDER[*] WITH 00128500
|
|
"3 O<00", % QA= 0 00128600
|
|
"1.0000", % QB= 1 00128700
|
|
"59.NO.", % QC= 2 00128800
|
|
"1;0000", % QD= 3 00128900
|
|
"1 0000", % QE= 4 00129000
|
|
"2~~000", % QF= 5 00129100
|
|
"2 000", % QG= 6 00129200
|
|
"1V0000", % QH= 7 00129300
|
|
"6 ", " 0000000", % QI= 8 00129400
|
|
"3YES00", % QJ=10 00129500
|
|
"3>O 00", % QK=11 00129600
|
|
"4FOR 0", % QL=12 00129700
|
|
"6LOOPS", " 0000000", % QM=13 00129800
|
|
"6....>", "O0000000", % QN=15 00129900
|
|
"3~.~00", % QP=17 00130000
|
|
"1|0000", % QQ = 18 00130100
|
|
0; 00130200
|
|
FILL TEN[*] WITH 00130300
|
|
OCT1771110463422054, 00130400
|
|
OCT1761332600326467, 00130500
|
|
OCT1751621340414205, 00130600
|
|
OCT1742165630517247, 00130700
|
|
OCT1732623176643120, 00130800
|
|
OCT1723370036413744, 00130900
|
|
OCT1714266046116735, 00131000
|
|
OCT1705343457542525, 00131100
|
|
OCT1676634373473252, 00131200
|
|
OCT1651040347241213, 00131300
|
|
OCT1641250441111455, 00131400
|
|
OCT1631522551333770, 00131500
|
|
OCT1622047303622767, 00131600
|
|
OCT1612461164567564, 00131700
|
|
OCT1603175421725521, 00131800
|
|
OCT1574034726313046, 00131900
|
|
OCT1565044113775657, 00132000
|
|
OCT1556255136775233, 00132100
|
|
OCT1547730366574502, 00132200
|
|
OCT1521171646433362, 00132300
|
|
OCT1511430220142257, 00132400
|
|
OCT1501736264172732, 00132500
|
|
OCT1472325741231521, 00132600
|
|
OCT1463013331500045, 00132700
|
|
OCT1453616220020057, 00132800
|
|
OCT1444561664024072, 00132900
|
|
OCT1435716241031111, 00133000
|
|
OCT1427301711237333, 00133100
|
|
OCT1401116227350722, 00133200
|
|
OCT1371341675243107, 00133300
|
|
OCT1361632254513731, 00133400
|
|
OCT1352200727636717, 00133500
|
|
OCT1342641115606502, 00133600
|
|
OCT1333411341150223, 00133700
|
|
OCT1324313631402270, 00133800
|
|
OCT1315376577702746, 00133900
|
|
OCT1306676337663537, 00134000
|
|
OCT1261045602764047, 00134100
|
|
OCT1251257143561061, 00134200
|
|
OCT1241532774515275, 00134300
|
|
OCT1232061573640554, 00134400
|
|
OCT1222476132610706, 00134500
|
|
OCT1213215561353071, 00134600
|
|
OCT1204061115645707, 00134700
|
|
OCT1175075341217270, 00134800
|
|
OCT1166314631463146, 00134900
|
|
OCT1141000000000000, 00135000
|
|
OCT1131200000000000, 00135100
|
|
OCT1121440000000000, 00135200
|
|
OCT1111750000000000, 00135300
|
|
OCT1102342000000000, 00135400
|
|
OCT1073032400000000, 00135500
|
|
OCT1063641100000000, 00135600
|
|
OCT1054611320000000, 00135700
|
|
OCT1045753604000000, 00135800
|
|
OCT1037346545000000, 00135900
|
|
OCT1011124027620000, 00136000
|
|
OCT0001351035564000, 00136100
|
|
OCT0011643245121000, 00136200
|
|
OCT0022214116345200, 00136300
|
|
OCT0032657142036440, 00136400
|
|
OCT0043432772446150, 00136500
|
|
OCT0054341571157602, 00136600
|
|
OCT0065432127413543, 00136700
|
|
OCT0076740555316473, 00136800
|
|
OCT0111053071060221, 00136900
|
|
OCT0121265707274266, 00137000
|
|
OCT0131543271153343, 00137100
|
|
OCT0142074147406234, 00137200
|
|
OCT0152513201307703, 00137300
|
|
OCT0163236041571663, 00137400
|
|
OCT0174105452130240, 00137500
|
|
OCT0205126764556310, 00137600
|
|
OCT0216354561711772, 00137700
|
|
OCT0231004771627437, 00137800
|
|
OCT0241206170175347, 00137900
|
|
OCT0251447626234641, 00138000
|
|
OCT0261761573704011, 00138100
|
|
OCT0272356132665013, 00138200
|
|
OCT0303051561442216, 00138300
|
|
OCT0313664115752661, 00138400
|
|
OCT0324641141345435, 00138500
|
|
OCT0336011371636745, 00138600
|
|
OCT0347413670206536, 00138700
|
|
OCT0361131664625027, 00138800
|
|
OCT0371360241772234, 00138900
|
|
OCT0401654312370703, 00139000
|
|
OCT0412227375067064, 00139100
|
|
OCT0422675274304701, 00139200
|
|
OCT0433454553366062, 00139300
|
|
OCT0444367706263476, 00139400
|
|
OCT0455465667740415, 00139500
|
|
OCT0467003245730521, 00139600
|
|
OCT0501060411731665, 00139700
|
|
OCT0511274514320242, 00139800
|
|
OCT0521553637404312, 00139900
|
|
OCT0532106607305375, 00140000
|
|
OCT0542530351166674, 00140100
|
|
OCT0553256443424453, 00140200
|
|
OCT0564132154331566, 00140300
|
|
OCT0575160607420123, 00140400
|
|
OCT0606414751324150, 00140500
|
|
OCT0621012014361120, 00140600
|
|
OCT0631214417455344, 00140700
|
|
OCT0641457523370635, 00140800
|
|
OCT0651773450267005, 00140900
|
|
OCT0662372362344606, 00141000
|
|
OCT0673071057035747, 00141100
|
|
OCT0703707272645341, 00141200
|
|
OCT0714671151416632, 00141300
|
|
OCT0726047403722400, 00141400
|
|
OCT0737461304707100, 00141500
|
|
OCT0751137556607072, 00141600
|
|
OCT0761367512350710, 00141700
|
|
OCT0771665435043072; 00141800
|
|
FILL INFO[1,*] WITH 00141900
|
|
OCT0, 00142000
|
|
OCT1000000000000602, 00142100
|
|
"7COMME", 00142200
|
|
"NT000000", 00142300
|
|
OCT0340000010000000, 00142400
|
|
"4TRUE0", 00142500
|
|
OCT0340000000000427, 00142600
|
|
"5FALSE", 00142700
|
|
OCT1160000000000000, 00142800
|
|
"3NOT00", 00142900
|
|
OCT0530000000000000, 00143000
|
|
"2IF000", 00143100
|
|
OCT0540000000000416, 00143200
|
|
"2GO000", 00143300
|
|
OCT0410000000000000, 00143400
|
|
"4READ0", 00143500
|
|
OCT0420000000000441, 00143600
|
|
"5WRITE", 00143700
|
|
OCT0550000000000000, 00143800
|
|
"7RELEA", 00143900
|
|
"SE000000", 00144000
|
|
OCT0430000000000000, 00144100
|
|
"3FOR00", 00144200
|
|
OCT0440000000000520, 00144300
|
|
"5WHILE", 00144400
|
|
OCT0450000000000000, 00144500
|
|
"2DO000", 00144600
|
|
OCT0460000000000000, 00144700
|
|
"5UNTIL", 00144800
|
|
OCT0470000000000000, 00144900
|
|
"4ELSE0", 00145000
|
|
OCT0500000000000000, 00145100
|
|
"3END00", 00145200
|
|
OCT0520000000000000, 00145300
|
|
"4FILL0", 00145400
|
|
OCT0560000000000000, 00145500
|
|
"5BEGIN", 00145600
|
|
OCT0570000010000000, 00145700
|
|
"3OWN00", 00145800
|
|
OCT0570000020000000, 00145900
|
|
"4SAVE0", 00146000
|
|
OCT0570000050000000, 00146100
|
|
"5ALPHA", 00146200
|
|
OCT0570000040000000, 00146300
|
|
"4REAL0", 00146400
|
|
OCT0570000030000523, 00146500
|
|
"7BOOLE", 00146600
|
|
"AN000000", 00146700
|
|
OCT0570000060000000, 00146800
|
|
"7INTEG", 00146900
|
|
"ER000000", 00147000
|
|
0, 00147100
|
|
"6DOUBL", 00147200
|
|
"E0000000", 00147300
|
|
OCT0570000070000000, 00147400
|
|
"5LABEL", 00147500
|
|
OCT0570000100000000, 00147600
|
|
"4DUMP0", 00147700
|
|
OCT0570000110000000, 00147800
|
|
"4LIST0", 00147900
|
|
OCT0570000120000000, 00148000
|
|
"3OUT00", 00148100
|
|
OCT0570000130000000, 00148200
|
|
"2IN000", 00148300
|
|
OCT0570000140000000, 00148400
|
|
"7MONIT", 00148500
|
|
"OR000000", 00148600
|
|
OCT0570000150000000, 00148700
|
|
"6SWITC", 00148800
|
|
"H0000000", 00148900
|
|
OCT0570000160000451, 00149000
|
|
"9PROCE", 00149100
|
|
"DURE0000", 00149200
|
|
OCT0570000170000406, 00149300
|
|
"5ARRAY", 00149400
|
|
OCT0570000200000542, 00149500
|
|
"6FORMA", 00149600
|
|
"T0000000", 00149700
|
|
OCT0570000210000000, 00149800
|
|
"4FILE0", 00149900
|
|
OCT0570000230000000, 00150000
|
|
"7FORWA", 00150100
|
|
"RD000000", 00150200
|
|
OCT0570000240000000, 00150300
|
|
"6DEFIN", 00150400
|
|
"E0000000", 00150500
|
|
OCT1020000000000000, 00150600
|
|
"5VALUE", 00150700
|
|
OCT1050000000000000, 00150800
|
|
"4STEP0", 00150900
|
|
OCT1110000000000000, 00151000
|
|
"4WITH0", 00151100
|
|
OCT1120000000000000, 00151200
|
|
"4THEN0", 00151300
|
|
OCT1130000000000000, 00151400
|
|
"2TO000", 00151500
|
|
OCT1210002030000000, 00151600
|
|
"3EQV00", 00151700
|
|
OCT1220000000000000, 00151800
|
|
"3IMP00", 00151900
|
|
OCT1230000430000554, 00152000
|
|
"2OR000", 00152100
|
|
OCT1240001030000000, 00152200
|
|
"3AND00", 00152300
|
|
OCT1270006000000000, 00152400
|
|
"3DIV00", 00152500
|
|
OCT1270016000000000, 00152600
|
|
"3MOD00", 00152700
|
|
OCT0570000220000000, 00152800
|
|
"6STREA", 00152900
|
|
"M0000000", 00153000
|
|
OCT0110000000040000, 00153100
|
|
"3SIN00", 00153200
|
|
12, 00153300
|
|
OCT0110000000040000, 00153400
|
|
"3COS00", 00153500
|
|
13, 00153600
|
|
OCT0110000002040000, 00153700
|
|
"4SIGN0", 00153800
|
|
8, 00153900
|
|
OCT0110000003060000, 00154000
|
|
"6ENTIE", 00154100
|
|
"R0000000", 00154200
|
|
9, 00154300
|
|
OCT0110000001040606, 00154400
|
|
"3ABS00", 00154500
|
|
7, 00154600
|
|
OCT0110000000040470, 00154700
|
|
"4SQRT0", 00154800
|
|
11, 00154900
|
|
OCT0110000000060000, 00155000
|
|
"6ARCTA", 00155100
|
|
"N0000000", 00155200
|
|
14, 00155300
|
|
OCT0110000000040000, 00155400
|
|
"2LN000", 00155500
|
|
15, 00155600
|
|
OCT0110000004040000, 00155700
|
|
"3ZIP00", 00155800
|
|
10, 00155900
|
|
OCT0110000000040000, 00156000
|
|
"3EXP00", 00156100
|
|
16, 00156200
|
|
OCT0600000600040000, 00156300
|
|
"2SI000", 00156400
|
|
OCT0610001040040000, 00156500
|
|
"2DI000", 00156600
|
|
OCT0620001460040000, 00156700
|
|
"2CI000", 00156800
|
|
OCT0630001630040000, 00156900
|
|
"5TALLY", 00157000
|
|
OCT0640000530040000, 00157100
|
|
"2DS000", 00157200
|
|
OCT0650000150040000, 00157300
|
|
"4SKIP0", 00157400
|
|
OCT0660001620040000, 00157500
|
|
"4JUMP0", 00157600
|
|
OCT0670000740040000, 00157700
|
|
"2DB000", 00157800
|
|
OCT0700000500040000, 00157900
|
|
"2SB000", 00158000
|
|
OCT0710000260060000, 00158100
|
|
"6TOGGL", 00158200
|
|
"E0000000", 00158300
|
|
OCT0720000730040000, 00158400
|
|
"2SC000", 00158500
|
|
OCT0730001160040000, 00158600
|
|
"3LOC00", 00158700
|
|
OCT0740001170040000, 00158800
|
|
"2DC000", 00158900
|
|
OCT0750001430040000, 00159000
|
|
"5LOCAL", 00159100
|
|
OCT0760000340040000, 00159200
|
|
"3LIT00", 00159300
|
|
OCT0770001036440000, 00159400
|
|
"3SET00", 00159500
|
|
OCT0770001066540000, 00159600
|
|
"5RESET", 00159700
|
|
OCT0770001020540000, 00159800
|
|
"3WDS00", 00159900
|
|
OCT0770001357740000, 00160000
|
|
"3CHR00", 00160100
|
|
OCT0770001057340000, 00160200
|
|
"3ADD00", 00160300
|
|
OCT0770001617240000, 00160400
|
|
"3SUB00", 00160500
|
|
OCT0770000727640000, 00160600
|
|
"3ZON00", 00160700
|
|
OCT0770000417440000, 00160800
|
|
"3NUM00", 00160900
|
|
OCT0770000766740000, 00161000
|
|
"3OCT00", 00161100
|
|
OCT0770000176600000, 00161200
|
|
"3DEC00", 00161300
|
|
OCT0; 00161400
|
|
FILL SPECIAL[*] WITH 00161500
|
|
OCT3140000000000000, COMMENT #; 00161600
|
|
OCT2000000000100000, COMMENT @; 00161700
|
|
OCT0000000000000000, COMMENT ; 00161800
|
|
OCT3060000000120000, COMMENT :; 00161900
|
|
OCT1250000450002763, COMMENT >; 00162000
|
|
OCT1250000250002662, COMMENT }; 00162100
|
|
OCT3260000000000000, COMMENT +; 00162200
|
|
OCT0000000000000000, COMMENT ; 00162300
|
|
OCT3040000000060000, COMMENT .; 00162400
|
|
OCT3010000000000000, COMMENT [; 00162500
|
|
OCT3200000000000000, COMMENT &; 00162600
|
|
OCT2400000000000000, COMMENT (; 00162700
|
|
OCT1250010450003571, COMMENT <; 00162800
|
|
OCT1170000000000000, COMMENT ~; 00162900
|
|
OCT3270000000000000, COMMENT |; 00163000
|
|
OCT0000000000000000, COMMENT ; 00163100
|
|
OCT0000000000040000, COMMENT $; 00163200
|
|
OCT3300000000000000, COMMENT *; 00163300
|
|
OCT3260000000000000, COMMENT -; 00163400
|
|
OCT3100000000160000, COMMENT ); 00163500
|
|
OCT2510000000000000, COMMENT SEMICOLON; 00163600
|
|
OCT1250010250003470, COMMENT {; 00163700
|
|
OCT0000000000000000, COMMENT ; 00163800
|
|
OCT3270000000000000, COMMENT /; 00163900
|
|
OCT3030000000000000, COMMENT ,; 00164000
|
|
OCT0000000000020000, COMMENT %; 00164100
|
|
OCT1250001050002561, COMMENT !; 00164200
|
|
OCT1250011050002460, COMMENT =; 00164300
|
|
OCT3070000000000000, COMMENT ]; 00164400
|
|
OCT0000000000140000, COMMENT "; OCT0, OCT0; 00164500
|
|
FILL STACKHEAD[*] WITH 257, 00164600
|
|
318,291,393,326, 0,287,277,293,304,356,350, 0, 0, 0,362,285, 00164700
|
|
358, 0, 0,314, 0,373, 0, 0, 0,329,348, 0, 0, 0, 0, 0, 00164800
|
|
0, 0, 0,380,301, 0, 0, 0, 0, 0, 0, 0, 0, 0,396,299, 00164900
|
|
367,331, 0,260, 0, 0, 0,383, 0, 0, 0, 0, 0, 0, 0,316, 00165000
|
|
281, 0, 0, 0, 0, 0, 0, 0, 0, 0,376, 0,344,323, 0, 0, 00165100
|
|
0,264, 0, 0, 0,283, 0,268, 0, 0,266, 0, 0,320, 0, 0, 00165200
|
|
0,370, 0,342,295,334, 0, 0,360,352, 0, 0, 0,310, 0, 0, 00165300
|
|
0, 0, 0, 0,346, 0,274, 0, 0, 0,272, 0; 00165400
|
|
LISTOG~ SOURCETOG~ FLOWTOG~ INDEXTOG~ TRUE; 00165500
|
|
WRITE(CODAL,*,-1,-1); 00165600
|
|
QC ~ QC +"30000"; 00165700
|
|
WRITE(CODE, 20, A[*]); 00165800
|
|
FLOWCTR ~ 0; 00165900
|
|
LLBOO ~ RLBOO ~ -1; 00166000
|
|
CENTER ~ 60; 00166100
|
|
WRITE(FLOW, 14, A[*]); 00166200
|
|
RECORDCOUNT~1; 00166300
|
|
IF LASTUSED=-2 THEN LASTUSED~-1; 00166400
|
|
DO UNTIL STEPI = BEGINV; STMT(120,0); 00166500
|
|
WRITEFLOW(FLOWCTR); 00166600
|
|
IF TAPIN THEN CLOSE(TAPE,RELEASE); 00166700
|
|
CLOSE(CARD,RELEASE); 00166800
|
|
REWIND(FLOW); 00166900
|
|
LINE[0] ~ IMC+2; LINE[15] ~ 9; 00167000
|
|
IF TAPETOG THEN BEGIN 00167100
|
|
WRITE(TTAPE,16,LINE[*]); 00167200
|
|
REWIND(TTAPE); 00167300
|
|
END; 00167400
|
|
A[0] ~ IMC+2; 00167500
|
|
WRITE(CODE, 20, A[*]); 00167600
|
|
DELTA ~ 0; 00167700
|
|
DELTA ~ DELTA - 2; 00167800
|
|
IF DELTA < 0 THEN GO TO L101; 00167900
|
|
GO TO L102; 00168000
|
|
END; 00168100
|
|
IF A[0] > BEGINARRAY[DELTA] THEN 00168200
|
|
DELTA ~ DELTA+2; 00168300
|
|
MOVE(2,A,BEGINARRAY[DELTA]); 00168400
|
|
GO TO L103; 00168500
|
|
L101:REWIND(CODAL); 00168600
|
|
L104: READ REVERSE(CODE, 20, A[*]); 00168700
|
|
GT1 ~ 0; 00168800
|
|
L105: IF TAPETOG THEN 00168900
|
|
BEGIN READ( TTAPE, 16, B[*]); 00169000
|
|
IF B[15] = 9 THEN GO TO L106; 00169100
|
|
IF B[15] < 2 THEN 00169200
|
|
BEGIN IF A[0] = B[0] THEN MOVE(1,A[1],B[14]); 00169300
|
|
IF A[0] < B[0] THEN GT1 ~ 2; 00169400
|
|
BLANKOUT(B[0]); 00169500
|
|
END; 00169600
|
|
WRITE(ALDOC,16,B[*]); 00169700
|
|
IF LISTOG AND NOT TIME THEN BEGIN TIME~ TRUE; TIMEIT(BUG) END; 00169800
|
|
FOR I ~ 1 STEP 1 UNTIL RCF DO 00169900
|
|
BEGIN READ(CODE, 20, A[*]); 00170000
|
|
WRITE(EDOC, 20, A[*]); 00170100
|
|
END; 00170200
|
|
LINE[15] ~ 4; 00170300
|
|
RECORDCOUNT ~ RCF-1; 00170400
|
|
INDENT ~ 2; 00170500
|
|
GT1 ~ 1; 00170600
|
|
LB: IF INDENT=2 THEN READ(CODE,20,A[*]) 00170700
|
|
ELSE BEGIN RECORDCOUNT ~ RECORDCOUNT + 1; 00170800
|
|
READ(EDOC, 20, A[*]); 00170900
|
|
END; 00171000
|
|
RCF ~ A[1]; 00171100
|
|
GT1 ~ A[0] DIV 512; 00171200
|
|
PRINTHEN(LINE[0], A[0], INDENT DIV 2); 00171300
|
|
IF TAPETOG THEN WRITE(ALDOC,16,LINE[*]); 00171400
|
|
IF LISTOG THEN WRITE(BUG, 15, LINE[*]); 00171500
|
|
IF RCF = 0 THEN 00171600
|
|
LC: BEGIN IF GT1 ! 0 THEN GO TO LB; 00171700
|
|
END ELSE BEGIN B[INDENT] ~ RECORDCOUNT; 00171800
|
|
B[INDENT+1] ~ GT1; 00171900
|
|
GT1 ~ 1; 00172000
|
|
RCF ~ RCF-1; 00172100
|
|
INDENT ~ INDENT+2; 00172200
|
|
END; 00172300
|
|
SPACE(EDOC,RCF-RECORDCOUNT); 00172400
|
|
RECORDCOUNT ~ RCF; 00172500
|
|
GO TO LC; 00172600
|
|
END; 00172700
|
|
EXIT:IF TIME THEN TIMEIT(BUG); END. 00172800
|
|
00172900
|