From 1a9dabe230e2ee9393234b80dfb3429956cae7a9 Mon Sep 17 00:00:00 2001 From: Paul Kimpel Date: Wed, 8 Aug 2012 22:30:39 +0000 Subject: [PATCH] Commit final ALGOL/ESPOL/ALGOLXEM comparison and proofreading pass; commit B5500 Powers-of-Ten generator and results used in proofing Algol and ESPOL source. --- SYMBOL/ALGOL.alg_m | 303 +- SYMBOL/ESPOL.alg_m | 5980 +++++++++++++++++++------------------- tools/B5500.POWTEN.alg_m | 24 + tools/EMODE.POWTEN.dat_m | 116 + tools/xem/ALGOLXEM.alg_m | 192 +- 5 files changed, 3385 insertions(+), 3230 deletions(-) create mode 100644 tools/B5500.POWTEN.alg_m create mode 100644 tools/EMODE.POWTEN.dat_m diff --git a/SYMBOL/ALGOL.alg_m b/SYMBOL/ALGOL.alg_m index 02d9016..637d5b4 100644 --- a/SYMBOL/ALGOL.alg_m +++ b/SYMBOL/ALGOL.alg_m @@ -127,7 +127,7 @@ ERROR NUMBER ROUTINE:ERROR MESSAGE 00002000 TO ANOTHER. IF THE QUANTITY IS A PROCEDURE NAME OR 00073000 AN OWN VARIABLE THIS RESTRICTION IS RELAXED. 00074000 102 AEXP: CONDITIONAL EXPRESSION IS NOT OF ARITHMETIC TYPEH 00075000 - 103 PRIMARY: PRIMARY MAY NOT BEING WITH A QUANTITY OF THIS 00076000 + 103 PRIMARY: PRIMARY MAY NOT BEGIN WITH A QUANTITY OF THIS 00076000 TYPE. 00077000 104 ANYWHERE: MISSING RIGHT PARENTHESIS. 00078000 105 ANYWHERE: MISSING LEFT PARENTHESIS. 00079000 @@ -144,9 +144,9 @@ ERROR NUMBER ROUTINE:ERROR MESSAGE 00002000 TIONAL) MAY BEGIN WITH A DECLARATOR. 00090000 113 PARSE: EITHER THE SYTAX OR THE RANGE OF THE LITERALS FOR 00091000 A CONCATENATE OPERATOR IS INCORRECT. 00092000 - 114 DOTSYNTAX: EITHER THE SYNTAX OR THE RANGE OF THE LITERALS 00093000 + 114 DOTSYNTAX: EITHER THE SYNTAX OR THE RANGE OF THE LITERALS00093000 FOR A PARTIAL WORD DESIGNATOR IS INCORRECT. 00094000 - 115 DEXP: THE EXPRESSION IS NOT OF DESIGNATIONAL TYPE 00095000 + 115 DEXP: THE EXPRESSION IS NOT OF DESIGNATIONAL TYPE. 00095000 116 IFCLAUSE: MISSING THEN. 00096000 117 BANA: MISSING LEFT BRAKET. 00097000 118 BANA: MISSING RIGHT BRAKET. 00098000 @@ -207,11 +207,11 @@ ERROR NUMBER ROUTINE:ERROR MESSAGE 00002000 153 FORSTMT: MISSING UNTIL OR WHILE IN STEP ELEMENT. 00153000 154 FORSTMT: MISSING DO IN FOR CLAUSE. 00154000 155 IFEXP: MISSING ELSE 00155000 - 156 LISTELEMENT: A DESIGNATIONAL EXPRESSION MAY NOT BE A LIST 00156000 + 156 LISTELEMENT: A DESIGNATIONAL EXPRESSION MAY NOT BE A LIST00156000 ELEMENT. 00157000 - 157 LISTELEMENT: A ROW DESIGNATOR MAY NOT BE A LISTELEMENT 00158000 + 157 LISTELEMENT: A ROW DESIGNATOR MAY NOT BE A LIST ELEMENT. 00158000 158 LISTELEMENT: MISSING RIGHT BRAKET IN GROUP OF ELEMENTS 00159000 - 159 PROCSTMT: ILLEGAL USE OF PROCEDURE OF FUNCTION IDENTIFIER00160000 + 159 PROCSTMT: ILLEGAL USE OF PROCEDURE OR FUNCTION IDENTIFIER00160000 160 PURGE: DECLARED LABEL DOES NOT OCCUR. 00161000 161 PURGE: DECLARED FORWARD PROCEDURE DOES NOT OCCUR. 00162000 162 PURGE: DECLARED SWITCH FORWARD DOES NOT OCCUR. 00162500 @@ -255,7 +255,7 @@ ERROR NUMBER ROUTINE:ERROR MESSAGE 00002000 256 RELEASES: MISSING PARENTHESIS OR FILE IDENTIFIER IS NOT 00187000 A FORMAL PARAMETER. 00188000 257 GOTOS,LABELS,OR JUMPS: LABEL SPECIFIED IS NOT ON THE SAME 00189000 - NEXT LEVEL AS A PRECEDING APPEARANCE OF THE 00190000 + NEST LEVEL AS A PRECEDING APPEARANCE OF THE 00190000 LABEL. 00191000 258 LABELS: MISSING :. 00192000 259 LABELS: LABEL APPEARS MORE THAN ONCE. 00193000 @@ -268,7 +268,7 @@ ERROR NUMBER ROUTINE:ERROR MESSAGE 00002000 266 IFS: MISSING THEN INIF STATEMENT. 00200000 267 FREDFIX: THERE ARE GO TO STATEMENTS IN WHICH THE LABEL IS 00201000 UNDEFINED. 00202000 - 268 EMITO: A REPEAT INDEX } 64 WAS SPECIFIED OR TOO MANY 00203000 + 268 EMITC: A REPEAT INDEX }64 WAS SPECIFIED OR TOO MANY 00203000 FORMAL PARAMETERS,LOCALS AND LABELS. 00204000 269 TABLE: A CONSTANT IS SPECIFIED WHICH IS TOO LARGE 00205000 OR TOO SMALL. 00206000 @@ -288,7 +288,7 @@ ERROR NUMBER ROUTINE:ERROR MESSAGE 00002000 295 FILEATTRIBUTEHANDLER: FILE ATTRIBUTE MUST BE LEFT MOST 00211551 IN A LEFT PART LIST. 00211552 300 FILLSTMT: THE IDENTIFIER FOLLOWING "FILL" IS NOT 00212000 - AN ARRAY IDENTIFER. 00213000 + AN ARRAY IDENTIFIER. 00213000 301 FILLSTMT: MISSING "WITH" IN FILL STATEMENT. 00214000 302 FILLSTMT: IMPROPER FILL ELEMENT. 00215000 303 FILLSTMT: NON-OCTAL CHARACTER IN OCTAL FILL. 00216000 @@ -450,7 +450,7 @@ BEGIN COMMENT OUTERMOST BLOCK; 00500000 INTEGER ERRORCOUNT; COMMENT NUMBER OF ERROR MSGS. MCP WILL TYPE 00501000 SYNTX ERR AT EOJ IF THIS IS NON-ZERO. MUST BE @R+25; 00502000 INTEGER SAVETIME; COMMENT SAVE-FACTOR FOR CODE FILE, GIVEN BY MCP. 00503000 - IF COMPILER & GO =0.FOR SYNTAX, =-1. MUST BE AT R+26;00504000 + IF COMPILE & GO =0, FOR SYNTAX, =-1. MUST BE AT R+26;00504000 INTEGER CARDNUMBER; % SEQ # OF CARD BEING PROCESSED. 00504100 INTEGER CARDCOUNT; % NUMBER OF CARDS PROCESSED. 00504150 INTEGER LASTADDRESS; 00504200 @@ -566,7 +566,7 @@ DEFINE CHECKTOG = OPTIONWORD.[CHECKBIT:1] #, 01001210 LISTPTOG = OPTIONWORD.[LISTPBIT:1] #, 01001280 MCPTOG = OPTIONWORD.[MCPBIT:1] #, 01001290 MERGETOG = OPTIONWORD.[MERGEBIT:1] #, 01001300 - NESTTOG = OPTIONWORD.[NESTBIT:1] #, 01001310 + NESTOG = OPTIONWORD.[NESTBIT:1] #, 01001310 NEWTOG = OPTIONWORD.[NEWBIT:1] #, 01001320 NEWINCL = OPTIONWORD.[NEWINCLBIT:1] #, 01001330 OMITTING = OPTIONWORD.[OMITBIT:1] #, 01001340 @@ -712,10 +712,10 @@ DEFINE % %116-01007400 ARRAY BEGINSTACK[0:255]; INTEGER BSPOINT; 01007600 BOOLEAN DEFINING; 01007650 COMMENT INFO CONTAINS ALL THE INFORMATION ABOUT A GIVEN IDENTIFIER 01008000 - OR RESERVED WORD. THE FIRST WORD OF A GIVEN ENTRY IS 01009000 - THE INTERNAL CODE (OR ELBAT WORD AS IT IS USUALLY 01010000 - CALLED). THE SECOND WORD CONTAINS THE FORWARD BIT (IN 01011000 - [1:1]) FOR PROCEDURES. THE LINK TO PREVIOUS ENTRY (IN 01012000 + OR RESERVED WORD. THE FIRST WORD OF A GIVEN ENTRY IS 01009000 + THE INTERNAL CODE ( OR ELBAT WORD AS IT IS USUALLY 01010000 + CALLED). THE SECOND WORD CONTAINS THE FORWARD BIT (IN 01011000 + [1:1]) FOR PROCEDURES, THE LINK TO PREVIOUS ENTRY (IN 01012000 [4:8]). THE NUMBER OF CHARACTORS IN THE ALPHA REPRESENTA- 01013000 TION (IN [12:6]), AND THE FIRST 5 CHARACTERS OF ALPHA. 01014000 SUCCEDING WORDS CONTAIN THE REMAINING CHARACTORS OF ALPHA,01015000 @@ -729,7 +729,7 @@ DEFINE % %116-01007400 ALPHA, FILLED IN WITH ZEROS FROM THE RIGHT IF NEEDED. 01023000 THIS NUMBER IS CALLED THE SCRAMBLE NUMBER OR INDEX. 01024000 THE FIRST ROW OF INFO IS USED FOR OTHER PURPOSES. THE 01025000 - RESERVED WORDS OCCUPY THE SECOND ROW, IT IS FILLED DURING 01026000 + RESERVED WORDS OCCUPY THE SECOND ROW. IT IS FILLED DURING 01026000 INITIALIZATION; 01027000 COMMENT INFO FORMAT 01028000 FOLLOWING IS A DESCRIPTION OF THE FORMAT OF ALL TYPES OF ENTRIES 01029000 @@ -743,7 +743,7 @@ COMMENT INFO FORMAT 01028000 THE LINK FIELD OF THE ELBAT WORD IN INFO IS DIFFERENT FROM 01037000 THAT OF THE ENTRY IN ELBAT PUT IN BY TABLE.THE ENTRY IN ELBAT 01038000 POINTS TO ITS OWN LOCATION (RELATIVE) IN INFO. 01039000 - THE LINK IN INFO POINTS TO THE PREVIOUS ENTRY E.G.. THE 01040000 + THE LINK IN INFO POINTS TO THE PREVIOUS ENTRY E.G.,THE 01040000 LINK FROM STACKHEAD WHICH THE CURRENT ENTRY REPLACED. 01041000 FOR SIMPLICITY,I WILL CONSIDER INFO TO BE A ONE DIMENSIONAL 01042000 ARRAY,SO THAT THE BREAKING UP OF THE LINKS INTO ROW AND COLUMN 01043000 @@ -759,11 +759,11 @@ COMMENT INFO FORMAT 01028000 THEN A IS ENTERED AS FOLLOWS:(ASSUME AN ELBAT WORD T HAS BEEN 01053000 CONSTRUCTED FOR A) 01054000 T.LINK~ S[L]. (WHICH IS ZERO AT FIRST). 01055000 - INFO[NEXTINFO]~T, S[L]~NEXTINFO. 01056000 + INFO[NEXTINFO]~T. S[L]~NEXTINFO. 01056000 NEXTINFO~NEXTINFO+NUMBER OF WORDS IN THIS 01057000 ENTRY. 01058000 NOW S[L] POINTS TO THE ENTRY FOR A IN INFO AND THE ENTRY 01059000 - ITSELF CONTAINS THE STOP FLAG ZERO 01060000 + ITSELF CONTAINS THE STOP FLAG ZERO. 01060000 B IS ENTERED SIMILARLY TO A. 01061000 NOW S[L] POINTS TO THE ENTRY FOR B AND IT POINTS TO THE 01062000 ENTRY FOR A. 01063000 @@ -772,12 +772,12 @@ COMMENT INFO FORMAT 01028000 POINTS TO A. 01066000 THE SECOND WORD OF EACH ENTRY IN INFO IS MADE UP AS FOLLOWS: 01067000 FWDPT =[1:1],THIS TELLS WHETHER A PROCEDURE WAS DECLARED 01068000 - FORWARD.IT IS RESET AT THE TIME OF ITS ACTUAL 01069000 + FORWARD. IT IS RESET AT THE TIME OF ITS ACTUAL 01069000 FULL DECLARATION. 01070000 PURPT =[4:8] THIS GIVES A DECREMENT WHICH GIVES THE RELATIVE 01071000 - INDEX TO THE PREVIOUS INFO ENTRY WHEN SUBSTRACTED 01072000 + INDEX TO THE PREVIOUS INFO ENTRY WHEN SUBTRACTED 01072000 FROM THE CURRENT ENTRY INDEX. 01073000 - [12:6] TELLS THE NUMBER OF CHARACTERS IN THE ENTRY,(<64) 01074000 + [12:6] TELLS THE NUMBER OF CHARACTERS IN THE ENTRY.(<64) 01074000 [18:30] CONTAINS THE FIRST FIVE ALPHA CHARACTERS OF THE ENTRY 01075000 AND SUCCEEDING WORDS CONTAIN ALL OVERFLOW IF NEEDED. 01076000 THESE WORDS CONTAIN 8 CHARACTERS EACH,LEFT JUSTIFIED. 01077000 @@ -787,7 +787,7 @@ COMMENT INFO FORMAT 01028000 I+1 = OP6SYMBO (P DEPENDS ON PREVIOUS ENTRY) 01081000 I+2 = L 01082000 I+3 = ELBATWRD (MADE FOR X) 01083000 - I+4 = O31X 01084000 + I+4 = 031X 01084000 THIS SHOWS THAT INFO[I-P] WOULD POINT TO THE BEGINNING OF 01085000 THE ENTRY BEFORE SYMBOL, AND 01086000 INFO[I+3-3] POINTS TO THE ENTRY FOR SYMBOL. 01087000 @@ -816,7 +816,7 @@ COMMENT INFO FORMAT 01028000 TO BE ADDED TO THE SUBSCRIPT IN INDEXING OR 01110000 SUBTRACTED. 01111000 [35:11] =11 BIT ADDRESS OF LOWER BOUND,IF THE LOWER BOUND 01112000 - REQUIRES A PRT OR STACK CELL.OTHERWISE THE BIT 01113000 + REQUIRES A PRT OR STACK CELL,OTHERWISE THE BIT 01113000 35 IS IGNORED AND THE NEXT TEN BITS([36:10]) 01114000 REPRESENT THE ACTUAL VALUE OF THE LOWER BOUND 01115000 [46:2] =00 OR 10 DEPENDING ON WHETHER THE [35:11] VALUE 01116000 @@ -825,7 +825,7 @@ COMMENT INFO FORMAT 01028000 THE FIRST WORD OF ADDITIONAL INFO CONTAINS THE NUMBER OF 01119000 PARAMETERS [40:8] 01120000 IF A STREAM PROCEDURE THEN THIS WORD CONTAINS ALSO IN 01121000 - [13:11] ENDING PRT ADDRESS FOR LABELS. 01122000 + [13:11] ENDING PRT ADDRESS FOR LABELS, 01122000 [ 7:6] NO OF LABELS REQUIRING PRT ADDRESSES, AND [1:6] NUMBER 01123000 OF LOCALS. 01124000 SUCCEEDING WORDS (ONE FOR EACH FORMAL PARAMETER,IN ORDER 01125000 @@ -863,19 +863,19 @@ COMMENT INFO FORMAT 01028000 NBITF =[27:6]#, % NUMBER OF BITS FOR FIELD ID.%117-01154300 LINKR =[35: 5]#, 01155000 LINKC =[40: 8]#; 01156000 - COMMENT THESE DEFINES ARE USED TO PICK APART THE ELBAT WORD, 01157000 + COMMENT THESE DEFINES ARE USED TO PICK APART THE ELBAT WORD. 01157000 MON IS THE BIT WHICH IS TURNED ON IF: 01158000 1. THE QUANTITY IS TO BE MONITORED, OR 01158100 2. THE QUANTITY IS A PARAMETRIC DEFINE AND NOT 01158200 A DEFINE WITHOUT PARAMETERS. 01158300 CLASS IS THE PRINCIPAL IDENTIFICATION OF A GIVEN 01159000 - QUANTITY. 01160000 + QUANTITY. 01160000 FORMAL IS THE BIT WHICH IS ON IF THE QUANTITY IS A FORMAL 01161000 - PARAMETER. 01162000 - V0 IS THE VALUE-OWN BIT. IF FORMAL = 1 THEN THE BIT 01163000 - DISTINGUISHES VALUE PARAMETERS FROM OTHERS. IF 01164000 - FORMAL = 0 THEN THE BIT DISTINGUISHES OWN VARIABLES 01165000 - FROM OTHERS. 01166000 + PARAMETER. 01162000 + VO IS THE VALUE-OWN BIT. IF FORMAL = 1 THEN THE BIT 01163000 + DISTINGUISHES VALUE PARAMETERS FROM OTHERS. IF 01164000 + FORMAL = 0 THEN THE BIT DISTINGUISHES OWN VARIABLES 01165000 + FROM OTHERS. 01166000 LVL GIVES THE LEVEL AT WHICH A QUANTITY WAS DECLARED. 01167000 ADDRESS GIVES THE STACK OR PRT ADDRESS. 01168000 DYNAM IS USED INSTEAD OF LVL AND ADDRESS FOR DEFINE AND 01168100 @@ -888,7 +888,7 @@ COMMENT INFO FORMAT 01028000 NEEDED, RELATIVE TO THE LOCATION IN INFO. 01170000 LINK CONTAINS A LINK TO THE LOCATION IN INFO IF THE 01171000 QUANTITY LIES IN ELBAT, OTHERWISE IT LINKS TO THE 01172000 - NEXT ITEM IN THE STACK, ZERO IS AN END FLAG. 01173000 + NEXT ITEM IN THE STACK. ZERO IS AN END FLAG. 01173000 LINKR AND LINKC ARE SUBDIVISIONS OF LINK.; 01174000 COMMENT CLASSES FOR ALL QUANTITIES - OCTAL CLASS IS IN COMMENT; 01175000 COMMENT CLASSES FOR IDENTIFIERS; 01176000 @@ -899,8 +899,8 @@ COMMENT INFO FORMAT 01028000 LISTID =04#, COMMENT 004; 01181000 FRMTID =05#, COMMENT 005; 01182000 SUPERFRMTID =06#, COMMENT 006; 01183000 - FILEID =07#, COMMENT 006; 01184000 - SUPERFILEID =08#, COMMENT 007; 01185000 + FILEID =07#, COMMENT 007; 01184000 + SUPERFILEID =08#, COMMENT 010; 01185000 SWITCHID =09#, COMMENT 011; 01186000 PROCID =10#, COMMENT 012; 01187000 INTRNSICPROCID =11#, COMMENT 013; 01188000 @@ -930,7 +930,7 @@ COMMENT INFO FORMAT 01028000 LEFTPAREN =34#, COMMENT 042; 01212000 COMMENT CLASSES FOR ALL DECLARATORS; 01213000 DECLARATORS =35#, COMMENT 043; 01214000 - COMMENT CLASSES FOR STATEMENT BEGINNERS; 01215000 + COMMENT CLASSES FOR STATEMENT BEGINNERS 01215000 READV =36#, COMMENT 044; 01216000 WRITEV =37#, COMMENT 045; 01217000 SPACEV =38#, COMMENT 046; 01218000 @@ -1028,8 +1028,8 @@ DEFINE ADES=0#,LDES=2#,PDES=1#,CHAR=3#; 01299000 ARRAY FILEATTRIBUTES[0:30] ; 01303500 ALPHA ARRAY ACCUM[0:10]; 01304000 COMMENT ACCUM HOLDS THE ALPHA AND CHARACTER COUNT OF THE LAST 01305000 - SCANNER ITEM IN A FORM COMPATIBLE WITH ITS APPEARANCE 01306000 - IN INFO. THAT IS ACCUM[1] = 00NAAAAA, ACCUM[I] , I> 1. 01307000 + SCANNED ITEM IN A FORM COMPATIBLE WITH ITS APPEARANCE 01306000 + IN INFO. THAT IS ACCUM[1] = 00NAAAAA, ACCUM[I] , I> 1, 01307000 HAS ANY ADDITIONAL CHARACTERS. ACCUM[0] IS USED FOR 01308000 THE ELBAT WORD BY THE ENTER ROUTINES; 01309000 ARRAY STACKHEAD,SUPERSTACK[0:124]; %WF 01310000 @@ -1065,9 +1065,9 @@ ARRAY FILEATTRIBUTES[0:30] ; 01303500 INTEGER LASTELCLASS; 01329100 COMMENT LASTELCLASS IS SET TO PREV ELCLASS BY NEXTENT; 01329200 INTEGER FCR, NCR, LCR,TLCR,CLCR; 01330000 - INTEGER MAXTCLR; 01331000 + INTEGER MAXTLCR; 01331000 COMMENT FCR CONTAINS ABSOLUTE ADDRESS OF THE FIRST CHARACTOR OF 01332000 - THE CARD IMAGE CURRENTLY BEING SCANNED. NCR THE ADDRESS 01333000 + THE CARD IMAGE CURRENTLY BEING SCANNED, NCR THE ADDRESS 01333000 OF THE NEXT CHARACTOR TO BE SCANNED, AND LCR THE LAST 01334000 CHARACTOR (COLUMN 73). TLCR AND CLCR CONTAIN ADDRESS OF 01335000 THE LAST CHARACTER IN THE TAPE AND CARD BUFFERS. MAXTLCR 01336000 @@ -1155,7 +1155,7 @@ INTEGER SGNO;COMMENT THIS IS THE CURRENT SEGMENT NUMBER; 01370000 AS SPECIFIED BY "L". 01373000 IF DEBUGTOG IS TRUE, COP, WOP, AND POP ARE FILLED 01374000 THE BCD FOR THE OPERATORS,OTHERWISE THEY ARE NOT USED; 01375000 - REAL LASTENTRY ; 01376000 + REAL LASTENTRY ; 01376000 COMMENT LASTENTRY IS USED BY EMITNUM AND CONSTANTCLEAN. IT POINTS 01377000 INTO INFO[0,*] AT THE NEXT AVAILABLE CELL FOR CONSTANTS; 01378000 BOOLEAN MRCLEAN ; 01379000 @@ -1167,17 +1167,17 @@ INTEGER SGNO;COMMENT THIS IS THE CURRENT SEGMENT NUMBER; 01370000 INTEGER GTI1; 01384500 COMMENT THESE VARIABLES ARE USED FOR TEMPORARY STORAGE; 01385000 INTEGER RESULT; 01386000 - COMMENT THIS VARIALE IS USED FOR A DUAL PURPOSE BY THE TABLE 01387000 + COMMENT THIS VARIABLE IS USED FOR A DUAL PURPOSE BY THE TABLE 01387000 ROUTINE AND THE SCANNER. THE TABLE ROUTINE USES THIS 01388000 VARIABLE TO SPECIFY SCANNER OPERATIONS AND THE SCANNER 01389000 USES IT TO INFORM THE TABLE ROUTINE OF THE ACTION TAKEN; 01390000 INTEGER LASTUSED; 01391000 COMMENT LASTUSED IS A VARIABLE THAT CONTROLS THE ACTION OF 01392000 - READACARD. THE ROUTINE WHICH READS CARDS AND INITIALIZES 01393000 + READACARD, THE ROUTINE WHICH READS CARDS AND INITIALIZES 01393000 OR PREPARES THE CARD FOR THE SCANNER. 01394000 LASTUSED LAST CARD READ FROM 01394500 -------- ------------------- 01394600 - 1 CARD READ ONLY, NO TAPE. 01395000 + 1 CARD READER ONLY, NO TAPE. 01395000 2 CARD READER, TAPE AND CARD MERGE. 01396000 3 TAPE, TAPE AND CARD MERGE. 01397000 4 INITIALIZATION ONLY, CARD ONLY. 01398000 @@ -1185,12 +1185,12 @@ INTEGER SGNO;COMMENT THIS IS THE CURRENT SEGMENT NUMBER; 01370000 6 TAPE - MAKCAST, MERGING. 01398200 ; 01398300 BOOLEAN LINKTOG; 01399000 - COMMENT LINKTOG IS FALSE IF THE LAST THING EMITTED IS A LINK. 01400000 + COMMENT LINKTOG IS FALSE IF THE LAST THING EMITTED IS A LINK, 01400000 OTHERWISE IT IS TRUE; 01401000 INTEGER LEVEL,FRSTLEVEL,SUBLEVEL,MODE; 01402000 COMMENT THESE VARIABLES ARE MAINTAINED BY THE BLOCK ROUTINE TO KEEP 01403000 TRACK OF LEVELS OF DEFINITION. LEVEL GIVES THE DEPTH OF 01404000 - NESTING IN DEFINITION. WHERE EACH BLOCK AND EACH PROCEDURE01405000 + NESTING IN DEFINITION, WHERE EACH BLOCK AND EACH PROCEDURE01405000 GIVES RISE TO A NEW LEVEL. SUBLEVEL GIVES THE LEVEL OF 01406000 THE PARAMETERS OF THE PROCEDURE CURRENTLY BEING COMPILED. 01407000 FRSTLEVEL IS THE LEVEL OF THE PARAMETERS OF THE MOST 01408000 @@ -1211,8 +1211,8 @@ INTEGER SGNO;COMMENT THIS IS THE CURRENT SEGMENT NUMBER; 01370000 BOOLEAN ERRORTOG; 01412000 COMMENT ERRORTOG IS TRUE IF MESSAGES ARE CURRENTLY ACCEPTABLE TO THE01413000 ERROR ROUTINES. ERRORCOUNT IS THE COUNT OF ERROR MSSGS; 01414000 -BOOLEAN ENDTOG; COMMENT ENDTOG TELLS THE TABLE TO ALLOW 01415000 - COMMENT TO BE PASSED BACK TO COMPOUNDTAIL; 01416000 +BOOLEAN ENDTOG; COMMENT ENDTOG TELLS THE TABLE TO ALLOW 01415000 + COMMENT TO BE PASSED BACK TO COMPOUNDTAIL; 01416000 BOOLEAN STREAMTOG; % STREAMTOG IS TRUE IF WE ARE COMPILING A 01416500 % STREAM STATEMENT IN ALGOL, TSPOL, OR ESPOL: 01417000 % IT IS USED TO CONTROL COUMPOUNDTAIL. 01417500 @@ -1221,13 +1221,13 @@ BOOLEAN STREAMTOG; % STREAMTOG IS TRUE IF WE ARE COMPILING A 01416500 % AN ALPHA (BCL) STRING (SEE "TABLE" PROCEDURE). 01419000 DEFINE FS = 1#, FP = 2#, FL = 3#, FR = 4#, FA = 5#, 01420000 FI = 6#, FIO = 7#; 01420500 - COMMENT THESE DEFINES ARE USED WHEN CALLING THE VARIABLE ROUTINE, 01421000 + COMMENT THESE DEFINES ARE USED WHEN CALLING THE VARIABLE ROUTINE. 01421000 THEIR PURPOSES IS TO TELL VARIABLE WHO IS CALLING. 01422000 THEIR MEANING IS: 01423000 - FS MEANS FROM STATEMENT. 01424000 - FP MEANS FROM PRIMARY. 01425000 - FL MEANS FROM LIST. 01426000 - FR MEANS FROM FOR. 01427000 + FS MEANS FROM STATEMENT, 01424000 + FP MEANS FROM PRIMARY, 01425000 + FL MEANS FROM LIST, 01426000 + FR MEANS FROM FOR, 01427000 FIO MEANS FROM IODEC. 01427250 FA MEANS FROM ACTUALPARAPART. 01427500 FI MEANS FUNNY CALL FROM STATUS (IMPFUN); 01427600 @@ -1295,25 +1295,25 @@ INTEGER NEXTTEXT; % NEDEX OF NEXT DEFINE TEXT 01481400 JUMPLEVEL; COMMENT NUMBER OF LEVELS TO BE JUMPED OUT; 01485000 COMMENT THE REALS ABOVE ARE FOR STREAM STATEMENT; 01486000 ARRAY MACRO[0:35]; 01487000 - COMMENT MACRO IS FILLED WITH SYLLABLES FOR STREAM STATEMENT; 01488000 + COMMENT MACRO IS FILLED WITH SYLLABLES FOR STREAM STATEMENT; 01488000 REAL P, COMMENT CONTAINS NUMBER OF FORMALS FOR STREAM PROCS; 01489000 - Z; COMMENT CONTAINS 1ST WORD OF INFO FOR STREAM FUNCTIONS; 01490000 -SAVE ALPHA ARRAY DEFINEARRAY[0:34]; 01491000 - COMMENT THESE VARIABLES ARE USED TO CONTROL ACTION OF THE DEFINE. 01492000 - DEFINECTR COUNTS DEPTH OF NESTING OF DEFINE-# PAIRS. 01493000 - THE CROSSHATCH PART OF THE TABLE ROUTINE USES DEFINECTR 01494000 - TO DETERMINE THE MEANING OF A CROSSHATCH. DEFINEINDEX IS 01495000 - THE NEXT AVAILABLE CELL IN THE DEFINEARRAY. THE DEFINE- 01496000 - ARRAY HOLDS THE ALPHA OF THE DEFINE BEING RECREATED AND 01497000 - THE PREVIOUS VALUES OF LASTUSED, LCR, AND NCR; 01498000 -INTEGER BEGINCTR; 01499000 - COMMENT BEGINCTR GIVES THE NUMBER OF UNMATCHED BEGINS. IT IS USED 01500000 - FOR ERROR CONTROL ONLY; 01501000 -INTEGER DIALA,DIALB; 01502000 - COMMENT THESE VARIABLES GIVE THE LAST VALUE TO WHICH A AND B WERE 01503000 - DIALED. THIS GIVES SOME LOCAL OPTIMIZATION. EMITD 01504000 - WORRIES ABOUT THIS. OTHER ROUTINES CAUSE A LOSS OF MEMORY 01505000 - BY SETTING DIALA AND DIALB TO ZERO; 01506000 + Z; COMMENT CONTAINS 1ST WORD OF INFO FOR STREAM FUNCTIONS; 01490000 + SAVE ALPHA ARRAY DEFINEARRAY[0:34]; 01491000 + COMMENT THESE VARIABLES ARE USED TO CONTROL ACTION OF THE DEFINE. 01492000 + DEFINECTR COUNTS DEPTH OF NESTING OF DEFINE-# PAIRS. 01493000 + THE CROSSHATCH PART OF THE TABLE ROUTINE USES DEFINECTR 01494000 + TO DETERMINE THE MEANING OF A CROSSHATCH. DEFINEINDEX IS 01495000 + THE NEXT AVAILABLE CELL IN THE DEFINEARRAY. THE DEFINE- 01496000 + ARRAY HOLDS THE ALPHA OF THE DEFINE BEING RECREATED AND 01497000 + THE PREVIOUS VALUES OF LASTUSED, LCR, AND NCR; 01498000 + INTEGER BEGINCTR; 01499000 + COMMENT BEGINCTR GIVES THE NUMBER OF UNMATCHED BEGINS. IT IS USED01500000 + FOR ERROR CONTROL ONLY; 01501000 + INTEGER DIALA,DIALB; 01502000 + COMMENT THESE VARIABLES GIVE THE LAST VALUE TO WHICH A AND B WERE 01503000 + DIALED. THIS GIVES SOME LOCAL OPTIMIZATION. EMITD 01504000 + WORRIES ABOUT THIS. OTHER ROUTINES CAUSE A LOSS OF MEMORY01505000 + BY SETTING DIALA AND DIALB TO ZERO; 01506000 01507000 01508000 01509000 @@ -1332,7 +1332,7 @@ INTEGER DIALA,DIALB; 01502000 BOOLEAN RRB1; COMMENT RRB1---RRBN ARE BOOLEAN VARIABLES THAT SERVE THE 01522000 SAME FUNCTION AS RR1---RRN FOR REAL VARIABLES. SEE 01523000 COMMENT AT RR1; 01524000 - BOOLEAN RRB2; COMMENT SEE COMMENT AT RRB1 DECLARATION; 01525000 + BOOLEAN RRB2; COMMENT SEE COMMENT AT RRB1 DECLARATION; 01525000 DEFINE ARRAYMONFILE = [27:11]#; COMMENT ARRAYMONFILE IS THE DEFINE FOR 01526000 THE ADDRESS OF THE FILE DESCRIPTOR IN 01527000 THE FIRST WORD OF ADDITIONAL INFO; 01528000 @@ -1380,7 +1380,7 @@ INTEGER DA; 01559020 FILE IN CASTC(1,BUFFSIZE); 01561040 SWITCH FILE LIBRARY~CASTA,CASTB,CASTC; 01561050 FILE OUT REMOTE 19 (2,10); 01561055 -SAVE ARRAY CBUF,TBUFF[0:9]; % INPUT BUFFERS. 01561056 +SAVE ARRAY CBUFF,TBUFF[0:9]; % INPUT BUFFERS. 01561056 BOOLEAN REMOTOG; 01561060 ARRAY LIBARRAY[0:24]; % LIBARRAY IS USED TO KEEP INFORMATION AS 01561065 % TO LAST COMPILED LIBRARY SEQUENCE NUMBERS. 01561070 @@ -1534,8 +1534,8 @@ INTEGER NCII; COMMENT THIS CONTAINS THE COUNT OF CONSTANTS 01624000 PROCEDURE UNHOOK;FORWARD; 01626000 PROCEDURE MAKEUPACCUM;FORWARD; 01627000 DEFINE PURPT=[4:8]#,SECRET=2#; 01628000 - COMMENT THESE DEFINES GIVE THE NAMES OF THE WORD MODE OPERATORS. THE 01629000 - NUMBERS REFERS TO THE APPROPRIATE SECTION OF THE PRODUCT SPECS. THE01630000 + COMMENT THESE DEFINES GIVE THE NAMES OF THE WORD MODE OPERATORS. THE 01629000 + NUMBERS REFER TO THE APPROPRIATE SECTION OF THE PRODUCT SPECS. THE 01630000 FULL NAME IS ALSO GIVEN; 01631000 DEFINE 01632000 ADD = 16#, COMMENT (0101) 7.4.2.1 ADD; 01633000 @@ -1712,7 +1712,7 @@ L: 01764000 IF SC=""" THEN 01765000 BEGIN 01766000 SI:=SI+1; DI:=LCR; DS:=1 LIT"""; % STOPPER FOR SCAN 01767000 - NCR:=SI; % TEMP, STORAGE. SINCE NCR IS "LOCAL" TO GETVOID. 01768000 + NCR:=SI; % TEMP. STORAGE, SINCE NCR IS "LOCAL" TO GETVOID. 01768000 8(IF SC=""" THEN JUMP OUT ELSE 01769000 BEGIN TALLY:=TALLY+1; SI:=SI+1 END); 01770000 END 01771000 @@ -1746,12 +1746,17 @@ PROCEDURE DATIME; 01820000 N1:=CODE.MFID; N2:=CODE.FID; 01828500 WRITE(LINE, 01829000 $ SET OMIT = NOT ALGOL 01829900 + , %120-01835700 @@ -1879,7 +1884,7 @@ COMMENT OCTIZE REFORMATS ACCUM FOR OCTAL CONSTANTS; 02001836 BOOLEAN STREAM PROCEDURE OCTIZE(S,D,SKP,CNT); VALUE SKP,CNT; 02001838 BEGIN 02001840 SI:=S; SI:=SI+3; DI:=D; SKP(DS:=3 RESET); % RIGHT JUSTIFY. 02001842 - CNT(IF SC}"8"THEN TALLY:=1 ELSE IF SC<"0"THEN TALLY:=1; SKIP 3 SB; 02001844 + CNT(IF SC}"8" THEN TALLY:=1 ELSE IF SC<"0" THEN TALLY:=1; SKIP 3 SB;02001844 3(IF SB THEN DS:=SET ELSE DS:=RESET; SKIP SB)); 02001846 % 02001848 % 02001850 @@ -1916,8 +1921,8 @@ COMMENT TURNONSTOPLIGHT TURNS THE LIGHT "RED" ON THE "CORNER". 02007000 I.E., THE PURPOSE OF THIS ROUTINE IS TO INSERT A PER- 02008000 CENT SIGN IN COLUMN 73 AS AN END OF CARD SENTINEL FOR 02009000 THE SCANNER; 02010000 - STREAM PROCEDURE TURNONSTOPLIGHT(RED,CORNER); VALUE RED,CORNER; 02011000 - BEGIN DI:=CORNER; SI:=LOC CORNER; SI:=SI-1; DS:=CHR END; 02012000 +STREAM PROCEDURE TURNONSTOPLIGHT(RED,CORNER); VALUE RED,CORNER; 02011000 + BEGIN DI:=CORNER; SI:=LOC CORNER; SI:=SI-1; DS:=CHR END; 02012000 COMMENT ADDER COMPUTES SEQUENCE NUMBERS FOR LIBRARY FUNCTIONS. 02013010 IT WILL EITHER ADD THE NUMBER IN SUM TO THE NUMBER IS SEQLOC STORING 02013020 THE RESULT IN SEQLOC OR SUBTRACT THE NUMBER IN SUM FROM THE 02013030 @@ -2149,14 +2154,14 @@ BOOLEAN PROCEDURE BOOLEXP; FORWARD; 02065600 PROCEDURE SCANNER; 02066000 BEGIN 02066500 COMMENT "SCAN" IS THE STREAM PROCEDURE WHICH DOES THE ACTUAL SCANNING. 02067000 - IT IS DRIVEN BY A SMALL WORD MODE PROCEDURE CALLED "SCANNER". 02067500 + IT IS DRIVEN BY A SMALL WORD MODE PROCEDURE CALLED "SCANNER", 02067500 WHICH CHECKS FOR A QUANTITY BEING BROKEN ACROSS A CARD. "SCAN" 02068000 IS CONTROLLED BY A VARIABLE CALLED "RESULT". "SCAN" ALSO 02068500 - INFORMS THE WORLD OF ITS ACTION BY MEANS OF THE SAME VARIABLE. 02069000 + INFORMS THE WORLD OF ITS ACTION BY MEANS OF THE SAME VARIABLE, 02069000 HENCE THE VARIABLE "RESULT" IS PASSED BY BOTH NAME AND VALUE. 02069500 THE MEANING OF "RESULT" AS INPUT IS: 02070000 VALUE MEANING 02070500 - ===== ========================================= 02071000 + ===== ======================================== 02071000 0 INITIAL CODE - DEBLANK AND START TO FETCH THE 02071500 NEXT QUANTITY. 02072000 1 CONTINUE BUILDING AN IDENTIFIER (INTERRUPTED BY 02072500 @@ -2174,7 +2179,7 @@ COMMENT "SCAN" IS THE STREAM PROCEDURE WHICH DOES THE ACTUAL SCANNING. 02067000 7 DEBLANK ONLY. 02078500 THE MEANING OF "RESULT" AS OUTPUT IS: 02079000 VALUE MEANING 02079500 - ===== ======================================= 02080000 + ===== ======================================== 02080000 1 AN IDENTIFIER WAS BUILT. 02080500 2 A SPECIAL CHARACTER WAS OBTAINED. 02081000 3 A NUMBER (INTEGER) WAS BUILT. 02081500 @@ -2254,11 +2259,11 @@ NUMBERS: 02117000 IF SC <"0"THEN JUMP OUT TO EXIT; SI:=SI+1); 02118500 GO ERROR; 02119000 EXIT: 02119500 - ST1:=TALLY; % "ST1" CONTAINS THE NUMBER OF CHARACTERS WE ARE 02120000 + ST1:=TALLY; % "ST1" CONTAINS NUMBER OF CHARACTERS WE ARE 02120000 % GOING TO MOVE INTO THE "ACCUMULATOR". 02120500 TALLY:=TALLY+COUNTV; ST2:=TALLY; 02121000 DI:=COUNT; SI:=LOC ST2; DS:=WDS; 02121500 -COMMENT THIS CODE UPDATED "COUNT'; 02122000 +COMMENT THIS CODE UPDATED "COUNT"; 02122000 DI:=ACCUM; SI:=SI-3; DS:=3 CHR; 02122500 COMMENT THIS CODE PLACES "COUNT" IN "ACCUM" AS WELL; 02123000 DI:=DI+COUNTV; % POSITION "DI" PAST CHARACTERS ALREADY 02123500 @@ -2283,7 +2288,7 @@ L: 02128000 READACARD; 02133500 NORELEASE:=FALSE; 02134000 END; 02134500 - GO TO L; % GO DIRECTLY TO L, DO NOT PASS GO. 02135500 + GO TO L; % GO DIRECTLY TO L, DO NOT PASS GO, 02135500 % DO NOT COLLECT $200. 02136000 END; 02136500 END SCANNER; 02137000 @@ -2328,7 +2333,7 @@ REAL STREAM PROCEDURE COMPARE(TAPE,CARD); VALUE TAPE,CARD; 02188000 SI := SI-8; DI := DI-8; TALLY := 1; 02189250 IF 8 SC = DC THEN TALLY := 2 02189500 END; 02189750 - COMPARE := TALLY; 02190000 + COMPARE := TALLY 02190000 END COMPARE; 02190250 PROCEDURE OUTPUTSOURCE; 02190500 BEGIN 02190750 @@ -2505,7 +2510,7 @@ COMPAR: 02224250 EXIT: 02225000 NCR := FCR:= LCR - 9; 02225250 COMMENT SETS UP NCR AND FCR; 02225500 - IF CHECKTOG AND EXAMIN(FCR)!"$" THEN %$=CARDS DON"T COUNT. 02225750 + IF CHECKTOG AND EXAMIN(FCR)!"$" THEN %$-CARDS DON"T COUNT. 02225750 IF COMPARE(MKABS(INFO[LASTSEQROW,LASTSEQUENCE]),LCR)=1 THEN 02226000 IF SEQERRTOG THEN BEGIN FLAG(610); 02226250 NUMSEQUENCEERRORS:=NUMSEQUENCEERRORS+1;END 02226300 @@ -2735,7 +2740,7 @@ COMMENT DOLLARCARD HANDLES THE COMPILER CONTROL CARDS. 02282000 THE NUMBER OF USER DEFINED OPTIONS ALLOWED CAN BE 02301000 CHANGED BY CHANGING THE DEFINE "OPARSIZE". 02302000 THE VARIABLE "OPTIONWORD" CONTAINS THE CURRENT TRUE OR FALSE 02303000 - SETTING OF ALL THE COMPILER-DEFINED OPTIONS, ONE BIT PER 02304000 + SETTING OF ALL OF THE COMPILER-DEFINED OPTIONS, ONE BIT PER 02304000 OPTION. 02305000 ; 02306000 BOOLEAN PROCEDURE FINDOPTION(BIT); VALUE BIT; INTEGER BIT; 02307000 @@ -2770,7 +2775,7 @@ XMODE1: % NOT FIRST OPTION AND NOT BEING SET, RESET, OR POPPED. 02333000 OPTIONS[OPINX+1]:=REAL(TRUE); 02334000 IF XBIT9 THEN 02813000 @@ -3282,7 +3287,7 @@ IPART: TCOUNT:=FSAVE:=0; C:=CONVERT; 02758000 RESULT:=0; SCANNER; 02820000 IF RESULT ! 3 THEN FLAG (47); COMMENT NOT A NUMBER; 02821000 Q:=ACCUM[1]; 02822000 - IF GT1:=T:=(IF T="-" THEN -CONVERT ELSE CONVERT)<-46 OR 02823000 + IF GT1:=T:=(IF T="-"THEN -CONVERT ELSE CONVERT)<-46 OR 02823000 T>69 THEN FLAG(269) 02824000 ELSE BEGIN 02825000 T:=TEN[ABS(GT3:=T-FSAVE)]; 02826000 @@ -3517,7 +3522,7 @@ ELSE BEGIN 02950000 COMMENT LOOK FOR BOOLEAN OPERATORS, THEN OPTIONS; 02963500 T:= IF Q="3NOT00" THEN NOTOP 02964000 ELSE IF Q="3AND00" THEN ANDOP 02964500 - ELSE IF Q="3OR000" THEN OROP 02965000 + ELSE IF Q="2OR000" THEN OROP 02965000 ELSE IF Q="3EQV00" THEN EQVOP 02965500 ELSE 0; 02966000 IF T!0 THEN BATMAN.CLASS:=T 02966500 @@ -3618,7 +3623,7 @@ INTEGER PROCEDURE GETSPACE(S,L); VALUE S,L; 03051000 PROCEDURE FORSTMT; FORWARD; 03052000 03053000 PROCEDURE E; FORWARD; 03054000 -PROCEDURE ENTRY(TYPE); VALUE TYPE; REAL TYPE; FORWARD; 03055000 +PROCEDURE ENTRY(TYPE); VALUE TYPE;REAL TYPE; FORWARD; 03055000 PROCEDURE FORMATGEN;FORWARD; 03056000 PROCEDURE EXPLICITFORMAT; FORWARD; 03056100 BOOLEAN PROCEDURE FORMATPHRASE; FORWARD; 03056200 @@ -3658,7 +3663,7 @@ PROCEDURE HANDLETHETAILENDOFAREADORSPACESTATEMENT; FORWARD; 03084000 COMMENT EMITO EMIT AN OPERATOR; 04005000 PROCEDURE EMITO(OPERATOR); VALUE OPERATOR; INTEGER OPERATOR; 04006000 EMIT(1&OPERATOR[36:38:10]); 04007000 - COMMENT EMITC IS PRIMARILY FOR USE BY STRMSTMT TO EMIT CHARACTER MODE 04008000 + COMMENT EMITC IS PRIMARILY FOR USE BY STRMSTMT TO EMIT CHARACTOR MODE 04008000 OPERATORS. HOWEVER IT ALSO HANDLES DIA, DIB, AND TRB; 04009000 PROCEDURE EMITC(REPEAT,OPERATOR); VALUE REPEAT,OPERATOR; 04010000 INTEGER REPEAT,OPERATOR; 04011000 @@ -3732,8 +3737,8 @@ PROCEDURE EMITC(REPEAT,OPERATOR); VALUE REPEAT,OPERATOR; 04010000 STACKCT ~ 0; %A 04078500 EMITO(DEL) END END EMITUP; 04079000 COMMENT ADJUST ADJUST L TO THE BEGINING OF A WORD AND FILLS IN THE 04080000 - INERVENING SPACE WITH NOPS, IT CHECKS STREAMTOG TO DECIDE 04081000 - WHICH SORT OF NOP TO USE; 04082000 + INERVENING SPACE WITH NOPS. IT CHECKS STREAMTOG TO DECIDE 04081000 + WHICH SORT OF NOP TO USE; 04082000 PROCEDURE ADJUST; 04083000 BEGIN 04084000 DIALA ~ DIALB ~ 0; 04085000 @@ -3796,7 +3801,7 @@ PROCEDURE EMITC(REPEAT,OPERATOR); VALUE REPEAT,OPERATOR; 04010000 49(DS ~ 2 LIT " "); 04137000 END ; 04138000 COMMENT EMITWORD PLACES THE PARAMETER,"WORD",INTO EDOC. IF 04139000 - DEBUGGING IS REQUIRED. "L" AND "WORD" ARE OUTPUT ON 04140000 + DEBUGGING IS REQUIRED, "L" AND "WORD" ARE OUTPUT ON 04140000 THE PRINTER FILE IN OCTAL FORMAT. ; 04141000 PROCEDURE EMITWORD (WORD); VALUE WORD; REAL WORD; 04142000 BEGIN 04143000 @@ -3812,11 +3817,11 @@ PROCEDURE EMITC(REPEAT,OPERATOR); VALUE REPEAT,OPERATOR; 04010000 COMMENT CONSTANTCLEAN IS CALLED AFTER AN UNCONDITIONAL BRANCH HAS 04153000 BEEN EMITTED. IF ANY CONSTANTS HAVE BEEN ACCUMULATED BY 04154000 EMITNUM IN INFO[0,*], CONSTANTCLEAN WILL FIX THE CHAIN 04155000 - OF C-RELATIVE OPDC S LEFT BY EMITNUM, IF C-RELATIVE 04156000 + OF C-RELATIVE OPDC S LEFT BY EMITNUM. IF C-RELATIVE 04156000 ADDRESSING IS IMPOSSIBLE (I.E. THE ADDRESS 04157000 IF GREATER THAN 127 WORDS) THEN THE CONSTANT ALONG WITH 04158000 - THE 1ST LINK OF THE OPDC CHAIN IS ENTERED IN INFO. 04159000 - AT PURGE TIME THE REMAINING OPDC S ARE EMITTED WITH 04160000 + THE 1ST LINK OF THE OPDC CHAIN IS ENTERED IN INFO. 04159000 + AT PURGE TIME THE REMAINING OPDC S ARE EMITTED WITH 04160000 F -RELATIVE ADDRESSING AND CODE EMITTED TO STORE THE 04161000 CONSTANTS INTO THE PROPER F-RELATIVE CELLS. ; 04162000 PROCEDURE CONSTANTCLEAN ; 04163000 @@ -3841,17 +3846,17 @@ PROCEDURE EMITC(REPEAT,OPERATOR); VALUE REPEAT,OPERATOR; 04010000 LINK~GET(L); 04182000 CREL ~ TRUE; 04183000 EMITV(D + 768); 04184000 - END UNTIL L~ LINK = 4095 ; 04185000 + END UNTIL L~ LINK = 4095 ; 04185000 ALLTHU: L ~ TEMPL; 04186000 IF CREL THEN EMITWORD( INFO[0,255-J ]); 04187000 END; 04188000 LASTENTRY ~ 0; 04189000 END ; 04190000 COMMENT EMITNUM HANDLES THE EMISSION OF CODE FOR CONSTANTS,BOTH 04191000 - EXPLICIT AND IMPLICIT, IN EVERY CASE,EMITNUM WILL 04192000 + EXPLICIT AND IMPLICIT. IN EVERY CASE,EMITNUM WILL 04192000 PRODUCE CODE TO GET THE DESIRED CONSTANT ON TOP OF 04193000 THE STACK. IF THE NUMBER IS A LITERAL A SIMPLE LITC 04194000 - SYLLABLE IS PRODUCED, HOWEVER,NON-LITERALS ARE KEPT 04195000 + SYLLABLE IS PRODUCED. HOWEVER,NON-LITERALS ARE KEPT 04195000 IN THE ZERO-TH ROW OF INFO WITH THE SYLLABLE 04196000 POSITION,L. THE FIRST EMITNUM ON A PARTICULAR 04197000 CONSTANT CAUSES THE VALUES OF L AND THE CONSTANT 04198000 @@ -3908,7 +3913,7 @@ PROCEDURE EMITC(REPEAT,OPERATOR); VALUE REPEAT,OPERATOR; 04010000 COMMENT PACK IS A STREAM PROCEDURE WHICH INSERTS THE SYLLABLE 04265000 INTO THE EDOC ARRAY. THE SPECIFIC ELEMENT OF EDOC 04266000 IS PRECISILY = EDOC[(L DIV 4) DIV 128,(< DIV 4)MOD 128] 04267000 - SYLLABLE POSITION=(L MOD 4 ). WHERE L IS THE SYLLABLE 04268000 + SYLLABLE POSITION=(L MOD 4 ), WHERE L IS THE SYLLABLE 04268000 NUMBER RELATIVE TO THE BEGINNING OF THE SEGMENT; 04269000 STREAM PROCEDURE PACK(WORD,POSITION,SYLLABLE); 04270000 VALUE POSITION,SYLLABLE; 04271000 @@ -3916,7 +3921,7 @@ PROCEDURE EMITC(REPEAT,OPERATOR); VALUE REPEAT,OPERATOR; 04010000 DI~WORD ; DI ~ DI+POSITION ; DI ~ DI+POSITION; 04273000 SI~LOC SYLLABLE ; SI~SI+6; 04274000 DS~2 CHR ; 04275000 - END PACK ; 04276000 + END PACK ; 04276000 PROCEDURE DEBUG(S); 04277000 VALUE S; REAL S ; 04278000 IF STREAMTOG THEN 04279000 @@ -3956,7 +3961,7 @@ PROCEDURE EMITC(REPEAT,OPERATOR); VALUE REPEAT,OPERATOR; 04010000 COMMENT EMITD EMITS THE DIA,DIB,TRB SEQUENCE OF CODE. THE 04305000 PREVIOUS SETTING OF THE G-H AND K-V REGISTERS IS COMPARED 04306000 THE CURRENT . IF THE G-H,K-V OR BOTH ARE ALREADY SET THEN 04307000 - THE APPROIATE SYLLABLES(S) ARE OMITTED 04308000 + THE APPROIATE SYLLABLE(S) ARE OMITTED 04308000 IF 0 BITS ARE TO BE TRANSFERED THEN NO SYLLABLES ARE 04309000 EMITTED ; 04310000 PROCEDURE EMITD(A,B,T); VALUE A,B,T ; INTEGER A,B,T; 04311000 @@ -4120,7 +4125,7 @@ IF PUNCHTOG THEN 05048000 END 05060000 END END FLAG; 05101000 LABEL ENDOFITALL; 05101100 -COMMENT ERR. IS THE SAME AS FLAG EXCEPT THAT IT MAKES AN ATTEMPT TO 05102000 + COMMENT ERR,IS THE SAME AS FLAG EXCEPT THAT IT MAKES AN ATTEMPT TO 05102000 RECOVER FROM ERROR SITUATIONS BY SEARCHING FOR A 05103000 SEMICOLON, END, OR BEGIN; 05104000 PROCEDURE ERR(ERRNUM); VALUE ERRNUM; INTEGER ERRNUM; 05105000 @@ -4136,8 +4141,8 @@ PROCEDURE ERR(ERRNUM); VALUE ERRNUM; INTEGER ERRNUM; 05105000 PROCEDURE CHECKER(ELBATWORD); VALUE ELBATWORD; REAL ELBATWORD; 05113000 BEGIN 05114000 IF MODE } 2 THEN 05115000 - IF GTI1 ~ ELBATWORD.LVL } FRSTLEVEL THEN 05116000 - IF GTI1 < SUBLEVEL THEN 05117000 + IF GT1 ~ ELBATWORD.LVL } FRSTLEVEL THEN 05116000 + IF GT1 < SUBLEVEL THEN 05117000 IF ELBATWORD.[9:2] ! 1 05118000 THEN BEGIN FLAG(101); ERRORTOG ~ TRUE END 05119000 END CHECKER; 05120000 @@ -4357,7 +4362,7 @@ BOOLEAN PROCEDURE RANGE(LOWER,UPPER); 05297000 UPPER AND SETS RANGE TO TRUE OR FALSE ACCORDINGLY. THE ITEMS 05302000 CLASS MUST BE IN ELCLASS; 05303000 RANGE~ELCLASS } LOWER AND ELCLASS { UPPER; 05304000 - COMMENT GET OBTAINS A SYLLABLE FROM EDOC. THE ARRAY INTO WHICH CODE IS 05305000 + COMMENT GET OBTAINS A SYLLABLE FROM EDOC, THE ARRAY INTO WHICH CODE IS 05305000 EMITTED; 05306000 INTEGER PROCEDURE GET(L); VALUE L; REAL L; 05307000 BEGIN 05308000 @@ -4535,9 +4540,9 @@ INTEGER PROCEDURE GETSPACE(PERMANENT,L); VALUE PERMANENT,L; 05331000 COMPILED. IT ALSO HANDLES THE CASE OF A CONCATENATE 06026000 WHERE ACTUALPARAPART CAUSED THE VARIABLE ROUTINE TO 06027000 COMPILE ONLY PART OF A PRIMARY. MOST OF THE WORK OF 06028000 - SIMPARITH IS DONE BY ARITHCOMP. AN ARTIFIAL ROUTINE 06029000 + SIMPARITH IS DONE BY ARITHCOMP, AN ARTIFIAL ROUTINE 06029000 WHICH DOES THE HIERARCHY ANALYSIS USING RECURSION. 06030000 - ARITHOCMP IS A SUBROUTINE ONLY TO GET THIS RECURSION; 06031000 + ARITHCOMP IS A SUBROUTINE ONLY TO GET THIS RECURSION; 06031000 PROCEDURE SIMPARITH; 06032000 BEGIN 06033000 WHILE ELCLASS = AMPERSAND 06034000 @@ -5741,7 +5746,7 @@ PARENCHECK: 07471500 IF ELCLASS=RTPAREN THEN STEPIT ELSE ERR(104); 07471750 EXIT: 07472000 END RELSESTMT; 07472250 - COMMENT DOTSTMT HANDLES THE DO STATEMENT; 07481000 + COMMENT DOSTMT HANDLES THE DO STATEMENT; 07481000 PROCEDURE DOSTMT; 07482000 BEGIN INTEGER TL; 07483000 DIALA ~ DIALB ~ 0; 07484000 @@ -6348,7 +6353,7 @@ PROCEDURE KLUDGE(T); VALUE T; INTEGER T; 07930000 BEGIN 08009000 OWN REAL B,STMTSTART,REGO,RETURNSTORE,ADDRES,V,VRET, 08010000 BRET; 08011000 - OWN BOOLEAN SIGNA,SIGNB,SIGNC, INT, 08012000 + OWN BOOLEAN SIGNA,SIGNB,SIGNC, INT, 08012000 CONSTANA,CONSTANB,CONSTANC; 08013000 DEFINE SIMPLEB = SIGNC#, FORMALV = SIGNA#, 08014000 SIMPLEV = CONSTANA#, A = V#, Q = REGO#, 08015000 @@ -6410,13 +6415,13 @@ PROCEDURE KLUDGE(T); VALUE T; INTEGER T; 07930000 ERR(REAL(T ! 0) | 51 + 100); 08059000 INT ~ GT1 = 3; 08060000 SIMPI ~ T { INTID END SIMPI; 08061000 - COMMENT STORE EMITS THE CODE FOR THE STORE INTO THE FOR INDEX; 08062000 + COMMENT STORE EMITS THE CODE FOR THE STORE INTO THE FOR INDEX; 08062000 PROCEDURE STORE(S); VALUE S; BOOLEAN S; 08063000 BEGIN 08064000 IF FORMALV THEN BEGIN EMITO(XCH); S ~ FALSE END 08065000 ELSE BEGIN 08066000 EMITL(ADDRES); 08067000 - IF ADDRES > 1023 THEN EMITO(PRTE) END; 08068000 + IF ADDRES > 1023 THEN EMITO(PRTE) END; 08068000 T ~ (REAL(S)+1)|16; 08069000 EMITO((IF INT THEN T+512 ELSE 4|T)+4) END STORE; 08070000 COMMENT CALL EFFECTS A CALL ON THE INDEX; 08071000 @@ -6514,7 +6519,7 @@ PROCEDURE KLUDGE(T); VALUE T; INTEGER T; 07930000 IF LISTMODE THEN LISTELEMENT ELSE STMT; 08163000 08164000 IF NUMLE THEN BEGIN 08165000 - EMITV(RETURNSTORE + FOOT); EMITO(BBW) END 08166000 + EMITV(RETURNSTORE ~ FOOT); EMITO(BBW) END 08166000 ELSE BEGIN 08167000 EMITB(BBW,BUMPL,BACKFIX); RETURNSTORE ~ 0 END; 08168000 STMTSTART ~ FORWARDBRANCH; B ~ L; 08169000 @@ -7836,7 +7841,7 @@ COMMENT START FILLING TABLES NEEDED TO COMPILE A PROGRAM; 09040100 OCT0703707272645341, OCT0714671151416632, OCT0726047403722400, 09078000 OCT0737461304707100, OCT0751137556607072, OCT0761367512350710, 09079000 OCT0771665435043073; 09080000 -COMMENT THIS IS THE FULL FOR THE SECOND ROW OF INFO: 09081000 +COMMENT THIS IS THE FILL FOR THE SECOND ROW OF INFO: 09081000 THE FIRST ITEMS ARE STREAM RESERVED WORDS, 09082000 THEN ORDINARY RESERVED WORDS, 09083000 THEN INTRINSIC FUNCTIONS; 09084000 @@ -8614,7 +8619,7 @@ END END END PROGRAM; 09420000 ONLY CAUSES AN UNSETUP; 10227000 PROCEDURE DEFINEGEN(MACRO,J); VALUE MACRO,J; BOOLEAN MACRO; REAL J; 10228000 BEGIN 10229000 - OWN INTEGER CHARCOUNT, REMCOUNT; 10230000 + OWN INTEGER CHARCOUNT, REMCOUNT; 10230000 COMMENT CHARCOUNT CONTAINS NUMBER OFCHARACTORS OF THE DEFINE THAT WE10231000 HAVE PUT INTO INFO. REMCOUNT CONTAINS NUMBER OF CHARACT- 10232000 ORS REMAINING IN THIS ROW OF INFO; 10233000 @@ -8672,7 +8677,7 @@ STREAMTOG~TRUE; 10260100 IF K~K-1<0 THEN GO FINAL ELSE GO PACKIN; 10264400 IF ELCLASS=SEMICOLON THEN 10264410 BEGIN FLAG(142); GO TO FINAL END ELSE GO PACKIN 10264420 - END; 10264500 + END; 10264500 IF RESULT = 1 THEN IF J ! 0 THEN 10264600 FOR N ~ 1 STEP 1 UNTIL J DO 10264650 BEGIN 10264700 @@ -11502,7 +11507,7 @@ L1: 15092000 END; %116-15116200 %A 15117000 END ; 15118000 - IF P1 ! FP THEN BEGIN ERR(202); GO TO EXIT END; 15119000 + IF P1! FP THEN BEGIN ERR(202); GO TO EXIT END; 15119000 COMMENT 202 VARIABLE- A VARIABLE APPEARS WHICH IS NOT FOLLOWED * 15120000 BY A LEFT ARROW OR PERIOD *;15121000 COMMENT 201 VARIABLE- A PARTIAL WORD DESIGNATOR IS NOT THE * 15122000 @@ -11562,7 +11567,7 @@ COMMENT 201 VARIABLE- A PARTIAL WORD DESIGNATOR IS NOT THE * 15122000 IF FIRST SUBSCRIPT THEN VN ELSE CDC,EXP, 15176000 XCH,~. 15177000 6. ADD THE SEQUENCE: 15178000 - IF FIRST SUBSCRIPT THEN VN ELSE CDC,DUP,LOD. 15179000 + IF FIRST SUBSCRIPT THEN VN ELSE CDC,DUP,LOD, 15179000 EXP,T, XCH,~. 15180000 EXP,T,~,ZEROL,ETC. HAVE SAME MEANINGS AS DEFINED IN 15181000 SIMPLE VARIABLE BLOCK. ; 15182000 @@ -11651,7 +11656,7 @@ COMMENT **** MONITOR FUNCTION M1 GOES HERE ; 15238000 IF J+STLB ! THENUMBEROFDECLAREDDIMENSIONS THEN 15255000 BEGIN ERR(203);GO EXIT END; 15256000 COMMENT 203 VARIABLE- THE NUMBER OF SUBSCRIPTS USED IN A ROW * 15257000 - ROW DESIGNATOR DOES NOT MATCH THE ARRAY * 15258000 + ROW DESIGNATER DOES NOT MATCH THE ARRAY * 15258000 DECLARATION. *;15259000 IF STEPI ! RTBRKET THEN 15260000 BEGIN ERR(204);GO EXIT END; 15261000 @@ -11824,8 +11829,8 @@ COMMENT THIS SECTION GENERATES CODE FOR STREAM PROCEDURES; 16000000 TRP = 60#, COMMENT 7.5.2.2 TRANSFER PROGRAM CHARACTERS ; 16019000 BSS = 3#, COMMENT 7.5.6.6 SKIP SOURCE BIT ; 16020000 BSD = 2#, COMMENT 7.5.6.5 SKIP DESTINATION BITS ; 16021000 - SEC = 34#, COMMENT 7.5.10.1 SET COUNT ; 16022000 - JNS = 38#; COMMENT 7.5.5.7 JUMP OUT LOOP ; 16023000 + SEC = 34#, COMMENT 7.5.10.1 SET COUNT ; 16022000 + JNS = 38#; COMMENT 7.5.5.7 JUMP OUT LOOP ; 16023000 COMMENT FIXC EMITS BASICLY FORWARD JUMPS. HOWEVER IN THE CASE 16024000 OF INSTRUCTIONS INTERPTED AS JUMPS BECAUSE OF A CRF ON 16025000 A VALUE = 0 AND THE JUMP } 64 SYLLABLES A JFW 1 AND 16026000 @@ -11916,7 +11921,7 @@ F~GET( S); 16033000 ARE FIXED BY FAKING TOTOS INTO COMPILING THE REQUIRED 16111000 JUMPS. 16112000 FINALLY THE BNS IS FIXED,IF REQUIRED,AND NEST LEVEL 16113000 - AND JOINFO RESOTRED TO THEIR ORIGINAL VALUES. ; 16114000 + AND JOINFO RESTORED TO THEIR ORIGINAL VALUES. ; 16114000 PROCEDURE NESTS; 16115000 BEGIN 16116000 LABEL EXIT; 16117000 @@ -11985,7 +11990,7 @@ PROCEDURE LABELS; 16156000 FIRST THE TEST IS COMPILED. NOTE THAT IN THE 16179000 CONSTRUCTS "SC RELOP DC" AND "SC RELOP STRING" THAT 16180000 THE SYLLABLE EMITTED IS FETCHED FROM ONE OF TWO FIELDS 16181000 - IN THE ELBAT WORD FOR THE RELATIONAL OPERATOR, OTHERWISE 16182000 + IN THE ELBAT WORD FOR THE RELATIONAL OPERATOR. OTHERWISE 16182000 THE CODE IS EMITTED STRAIGHTAWAY. 16183000 A TEST IS MADE TO SEE WHETHER THE STATEMENT AFTER THE 16184000 "THEN" COULD POSSIBLY BE LONGER THAN 63 SYLLABLES,AND IF 16185000 @@ -12067,7 +12072,7 @@ IFTOG: IF STEPI!THENV THEN BEGIN ERR(266); GO EXIT END; 16217000 GO TOS IN THE CASE OF FORWARD JUMPS. 16245000 FINALLY, IF THE NEST LEVEL IS DEFINED THEN IT IS CHECKED 16246000 AGAINST THE CURRENT LEVEL MINUS THE NUMBER OF LEVELS TO 16247000 - BE JUMPED OUT, OTHERWISE,NEST LEVEL IS DEFINED. ; 16248000 + BE JUMPED OUT. OTHERWISE,NEST LEVEL IS DEFINED. ; 16248000 PROCEDURE GOTOS; 16249000 BEGIN 16250000 LABEL EXIT; 16251000 @@ -12119,11 +12124,11 @@ PROCEDURE RELEASES; 16281000 THE VARIABLE "INDEX" IS COMPUTED,DEPENDING UPON WHICH 16297000 CASE EXISTS,SUCH THAT ARRAY ELEMENT "MACRO[INDEX]"CONTAINS16298000 THE CODE TO BE EMITTED. 16299000 - EACH ELEMENT OF MACRO HAS 1-3 SYLLABES ORDERED FROM 16300000 - RIGHT TO LEFT, UNUSED SYLLABLES MUST = 0. EACH MACRO 16301000 + EACH ELEMENT OF MACRO HAS 1-3 SYLLABLES ORDERED FROM 16300000 + RIGHT TO LEFT, UNUSED SYLLABLES MUST = 0. EACH MACRO 16301000 MAY REQUIRE AT MOST ONE REPEAT PART. 16302000 IN THIS PROCEDURE,INDEXS,THE VARIABLE "ADDR" CONTAINS THE 16303000 - PROPER REPEAT PART BY THE TIME THE LABEL "GENERATE' IS 16304000 + PROPER REPEAT PART BY THE TIME THE LABEL "GENERATE" IS 16304000 ENCOUNTERED. THE SYLLABLES ARE FETCHED FROM MACRO[TYPE] 16305000 ONE AT A TIME AND IF THE REPEAT PART ! 0 THEN"ADDR" IS 16306000 USED AS THE REPEAT PART,THUS BUILDING A SYLLABLE WITH 16307000 @@ -12168,7 +12173,7 @@ PROCEDURE INDEXS; 16311000 ADDR ~ ELBAT[I].ADDRESS; 16344000 GENERATE: 16345000 IF MACRO[INDEX]= 0 THEN 16346000 - L: BEGIN ERR(250); GO TO EXIT END; 16347000 + L: BEGIN ERR(250);GO TO EXIT END; 16347000 J ~ 8; TCLASS ~0 ; 16348000 L1: MOVECHARACTERS(2,MACRO[INDEX],J~J-2,TCLASS,6 ); 16349000 IF TCLASS!0 THEN 16350000 @@ -12177,7 +12182,7 @@ PROCEDURE INDEXS; 16311000 GO TO L1 16353000 END; 16354000 EXIT:END INDEXS ; 16355000 - COMMENT DSS COMPILES DESINTATION STREAM STATEMENTS. 16356000 + COMMENT DSS COMPILES DESTINATION STREAM STATEMENTS. 16356000 DS~ LIT"STRING" IS HANDLED AS A SPECIAL CASE BECAUE THE 16357000 STRING MUST BE SCANED FROM RIGHT TO LEFT,REPEATEDLY IF 16358000 NECESSARY, AND EMITTED TO THE PROGRAM STREAM. IN 16359000 @@ -12208,19 +12213,19 @@ PROCEDURE DSS; 16362000 EMITC(ADDR,TRP); 16383000 IF STEPI!STRING AND ELCLASS!STRNGCON AND %111-16384000 ELCLASS ! LITNO AND ELCLASS ! NONLITNO THEN %111-16384100 - BEGIN ERR(255); GO TO EXIT END; 16384500 + BEGIN ERR(255);GO TO EXIT END; 16384500 IF ELCLASS = LITNO OR ELCLASS = NONLITNO THEN %111-16384700 MOVECHARACTERS(COUNT:=IF ADDR < 8 THEN ADDR ELSE 8, 16384800 C,8-COUNT,ACCUM[1],3); %111-16384900 IF ADDR MOD 2 ! 0 THEN 16385000 BEGIN 16386000 - EMIT(ACCUM[1].[18:6]); J ~ 1; 16387000 + EMIT(ACCUM[1].[18:6]); J ~ 1; 16387000 END ; 16388000 FOR K ~J+2 STEP 2 UNTIL ADDR DO 16389000 BEGIN 16390000 FOR L ~6,7 DO 16391000 MOVECHARACTERS(1,ACCUM[1],2+(IF J~J+1>COUNT THEN J~1 16392000 - ELSE J),T,L ); 16393000 + ELSE J),T,L ); 16393000 EMIT(T); 16394000 END END 16395000 ELSE 16396000 @@ -12262,7 +12267,7 @@ PROCEDURE JUMPS; 16431000 BEGIN 16432000 JUMPLEVEL~1; 16433000 IF STEPI!DECLARATORS THEN FLAG(261); 16434000 - IF STEPI!LITNO THEN JUMPLEVEL~ ELBAT[I].ADDRESS 16435000 + IF STEPI = LITNO THEN JUMPLEVEL~ ELBAT[I].ADDRESS 16435000 ELSE BEGIN 16436000 IF ELCLASS! TOV AND ELCLASS! STLABID THEN 16437000 BEGIN 16438000 @@ -12279,8 +12284,8 @@ PROCEDURE JUMPS; 16431000 ELBAT[I~ I-1]~ TAKE(JOINFO)&JOINFO[35:35:13]; 16449000 END; I~I-1 ; 16450000 END; 16451000 - FOR GT1~1 STEP 1 UNTIL JUMPLEVEL DO 16452000 - EMIT( JNS); 16453000 + FOR GT1~ 1 STEP 1 UNTIL JUMPLEVEL DO 16452000 + EMIT( JNS); 16453000 GOTOS; 16454000 END JUMPS; 16455000 COMMENT STREAMSTMT ENVOKES THE APPROPRIATE PROCEDURE TO HANDLE 16456000 diff --git a/SYMBOL/ESPOL.alg_m b/SYMBOL/ESPOL.alg_m index be5a357..e6548be 100644 --- a/SYMBOL/ESPOL.alg_m +++ b/SYMBOL/ESPOL.alg_m @@ -28,7 +28,7 @@ ERROR NUMBER ROUTINE:ERROR MESSAGE 00002000 IDENTIFIER NOT APPEARING IN 00006000 FORMAL PARAMETER PART. 00007000 003 BLOCK: NON-IDENTIFIER APPEARS IN IDENTIFIER 00008000 - LIST DECLARATION. 00009000 + LIST OF DECLARATION. 00009000 004 PROCEDUREDEC: STREAM PROCEDURE DECLARATION 00010000 PRECEDED BY ILLEGAL DECLARATOR. 00011000 005 PROCEDUREDEC: PROCEDURE DECLARATION PRECEDED 00012000 @@ -54,7 +54,7 @@ ERROR NUMBER ROUTINE:ERROR MESSAGE 00002000 016 ARRAYDEC: ARRAY ID IN DECLARATION NOT FOLLOWED 00032000 BY [ . 00033000 017 ARRAYDEC: LOWER BOUND IN ARRAY DEC NOT 00034000 - FOLLOWED BY :. 00035000 + FOLLOWED BY : . 00035000 018 ARRAYDEC: BOUND PAIR LIST NOT FOLLOWED BY ]. 00036000 019 ARRAYSPEC: ILLEGAL LOWER BOUND DESIGNATOR IN 00037000 ARRAY SPECIFICATION. 00038000 @@ -66,7 +66,7 @@ ERROR NUMBER ROUTINE:ERROR MESSAGE 00002000 IDENTIFIER(THE WORD PROCEDURE LEFT 00044000 OUT). 00045000 023 BLOCK: DECLARATOR PRECEDED ILLEGALLY BY 00046000 - ANOTHER DECLARATION. 00047000 + ANOTHER DECLARATOR. 00047000 024 PROCEDUREDEC: LABEL CANNOT BE PASSED TO FUNCTION. 00048000 025 BLOCK: DECLARATOR OR SPECIFIER ILLEGALLY 00049000 PRECEDED BY OWN OR SAVE OR SOME 00050000 @@ -74,7 +74,7 @@ ERROR NUMBER ROUTINE:ERROR MESSAGE 00002000 026 FILEDEC: MISSING ( IN FILE DEC. 00052000 027 FILEDEC: NO. OF BUFFERS IN FILE DEC MUST BE 00053000 AN UNSIGNED INTEGER. 00054000 - 028 FILEDEC: ILLEGAL BUFFER PART OF SAVE FACTOR 00055000 + 028 FILEDEC: ILLEGAL BUFFER PART OR SAVE FACTOR 00055000 IN FILE DEC. 00056000 029 FILEDEC: MISSING ) IN FILE DEC. 00057000 030 PROCEDUREDEC: PROCEDURE TYPE AT ACTUAL DECLARATION 00058000 @@ -86,13 +86,13 @@ ERROR NUMBER ROUTINE:ERROR MESSAGE 00002000 034 SWITCHFILEDEC:MISSING ~ AFTER FILED. 00064000 035 SWITCHFILEDEC:NON FILE ID APPEARING IN DECLARATION 00065000 OF SWITCHFILE. 00066000 - 036 SUPERFORMATDEC:FORMAT ID NOT FOLLOWED BY ~ . 00067000 - 037 SUPERFORMATDEC:MISSING ( AT START OF FORMAT PHRASE . 00068000 - 038 SUPERFORMATDEC:FORMAT SEGMENT > 1022 WORDS. 00069000 + 036 SUPERFORMATDEC:FORMAT ID NOT FOLLOWED BY ~ . 00067000 + 037 SUPERFORMATDEC:MISSING ( AT START OF FORMATPHRASE . 00068000 + 038 SUPERFORMATDEC:FORMAT SEGMENT >1022 WORDS. 00069000 040 SEGMENT: SAVE CODE EXCEEDS 4080 WHICH KERNEL CAN H/L 00069100 -050 ANYWHERE: OUT OF RANGE OF C RELATIVE ADDRESSING FOR CONSTANT 00069500 -051 BLOCK : ILLEGAL F RELATIVE ADDRESS EXP IN DECLARATION 00069510 -052 BLOCK: PROCEDURE WHOSE BODY IS NOT A BLOCK 00069520 +050 ANYWHERE: OUT OF RANGE OF C RELATIVE ADDRESSING FOR CONSTANT 00069500 +051 BLOCK : ILLEGAL F RELATIVE ADDRESS EXP IN DECLARATION 00069510 +052 BLOCK: PROCEDURE WHOSE BODY NOT A BLOCK 00069520 053 ARRAYDEC: CANT FIND RIGHT BRACKET IN SAVE ARRAY DEC 00069530 054 ARRAYDEC: FILL PART OF SAVE ARRAY DEC LONGER THAN SIZE 00069540 056 ARRAYDEC: ILLEGAL DIMENSION INDICATOR IN ARRAY DEC 00069560 @@ -102,25 +102,25 @@ ERROR NUMBER ROUTINE:ERROR MESSAGE 00002000 100 ANYWHERE: UNDECLARED IDENTIFIER. 00070000 101 CHECKER: AN ATTEMPT HAS BEEN MADE TO ADDRESS AN 00071000 IDENTIFIER WHICH IS LOCAL TO ONE PROCEDURE AND GLOBAL00072000 - TO ANOTHER. IF THE QUANTITY IS A PROCEDURE NAME OR 00073000 + TO ANOTHER. IF THE QUANTITY IS A PROCEDURE NAME OR 00073000 AN OWN VARIABLE THIS RESTRICTION IS RELAXED. 00074000 - 102 AEXP: CONDITIONAL EXPRESSION IS NOT OF ARITHMETIC TYPE 00075000 + 102 AEXP: CONDITIONAL EXPRESSION IS NOT OF ARITHMETIC TYPEH 00075000 103 PRIMARY: PRIMARY MAY NOT BEGIN WITH A QUANTITY OF THIS 00076000 TYPE. 00077000 104 ANYWHERE: MISSING RIGHT PARENTHESIS. 00078000 105 ANYWHERE: MISSING LEFT PARENTHESIS. 00079000 106 PRIMARY: PRIMARY MAY NOT START WITH DECLARATOR. 00080000 107 BEXP: THE EXPRESSION IS NOT OF BOOLEAN TYPE. 00081000 - 108 EXPRSS: A RELATION MAY NOT AVE CONDITIONAL EXPRESSIONS 00082000 + 108 EXPRSS: A RELATION MAY NOT HAVE CONDITIONAL EXPRESSIONS 00082000 AS THE ARITHMETIC EXPRESSIONS. 00083000 - 109 BODSEC,SIMPBOD, AND BODCOMP: THE PRIMARY IS NOT BOOLEAN. 00084000 - 110 BODCOMP: A NON-BOOLEAN OPERATOR OCCURS IN A BOOLEAN 00085000 + 109 BOOSEC,SIMBOO, AND BOOCOMP: THE PRIMARY IS NOT BOOLEAN. 00084000 + 110 BOOCOMP: A NON-BOOLEAN OPERATOR OCCURS IN A BOOLEAN 00085000 EXPRESSION. 00086000 - 111 BOOPRIM: 00087000 + 111 BOOPRIM: NO EXPRESSION (ARITHMETIC, BOOLEAN, OR DESIGNA- 00087000 TIONAL) MAY BEGIN WITH A QUANTITY OF THIS TYPE. 00088000 112 BOOPRIM: NO EXPRESSION (ARITHMETIC, BOOLEAN, OR DESIGNA- 00089000 - TIONAL) MAY BEGIN WITH A DECLARATION. 00090000 - 113 PARSE: EITHER THE SYNTAX OR THE RANGE OF THE LITERALS FOR00091000 + TIONAL) MAY BEGIN WITH A DECLARATOR. 00090000 + 113 PARSE: EITHER THE SYTAX OR THE RANGE OF THE LITERALS FOR 00091000 A CONCATENATE OPERATOR IS INCORRECT. 00092000 114 DOTSYNTAX: EITHER THE SYNTAX OR THE RANGE OF THE LITERALS00093000 FOR A PARTIAL WORD DESIGNATOR IS INCORRECT. 00094000 @@ -152,7 +152,7 @@ ERROR NUMBER ROUTINE:ERROR MESSAGE 00002000 130 RELSESTMT: NO FILE NAME. 00120000 131 DOSTMT: MISSING UNTIL. 00121000 132 WHILESTMT: MISSING DO. 00122000 - 133 LABELR: MISSING COLON. 00123000 + 133 LABELR: MISSING C OLON. 00123000 134 LABELR: THE LABEL WAS NOT DECLARED IN THIS BLOCK. 00124000 135 LABELR: THE LABEL HAS ALREADY OCCURED. 00125000 136 FORMATPHRASE: IMPROPER FORMAT EDITING PHRASE. 00126000 @@ -163,8 +163,8 @@ ERROR NUMBER ROUTINE:ERROR MESSAGE 00002000 139 TABLE: DEFINE IS NESTED MORE THAN EIGHT DEEP. 00131000 140 NEXTENT: AN INTEGER IN A FORMAT IS GREATER THAN 1023. 00132000 141 SCANNER: INTEGER OR IDENTIFIER HAS MORE THAN 63 00133000 - CHARACTERS 00134000 - 142 DEFINEGEN: A DEFINE CONTAINS MORE THAN 2047 CHARACTERS 00135000 + CHARACTORS. 00134000 + 142 DEFINEGEN: A DEFINE CONTAINS MORE THAN 2047 CHARACTORS 00135000 (BLANK SUPPRESSED). 00136000 143 COMPOUNDTAIL: EXTRA END. 00137000 144 STMT: NO STATEMENT MAY START WITH THIS TYPE IDENTIFIER. 00138000 @@ -188,17 +188,17 @@ ERROR NUMBER ROUTINE:ERROR MESSAGE 00002000 156 LISTELEMENT: A DESIGNATIONAL EXPRESSION MAY NOT BE A LIST00156000 ELEMENT. 00157000 157 LISTELEMENT: A ROW DESIGNATOR MAY NOT BE A LIST ELEMENT. 00158000 - 158 LISTELEMENT: MISSING RIGHT BRACKET IN GROUP OF ELEMENTS. 00159000 + 158 LISTELEMENT: MISSING RIGHT BRAKET IN GROUP OF ELEMENTS 00159000 159 PROCSTMT: ILLEGAL USE OF PROCEDURE OR FUNCTION IDENTIFIER00160000 160 PURGE: DECLARED LABEL DOES NOT OCCUR. 00161000 161 PURGE: DECLARED FORWARD PROCEDURE DOES NOT OCCUR. 00162000 - 163 ZIPSTMT: MISSING COMMA IN ZIP STATEMENT 00163000 - 163 FORMATPHRASE: THE WIDTH OF A FIELD IS MORE THAN 63. 00164000 - 200 EMIT: SEGMENT TOO LARGE ( > 4093 SYLLABLES). 00165000 + 163 ZIPSTMT: MISSING COMMA IN ZIP STATEMENT 00163000 + 163 FORMATPHRASE: THE WIDTH OF A FIELD IS MORE THAN 63. 00164000 + 200 EMIT: SEGMENT TOO LARGE ( > 4093SYLLABLES). 00165000 201 SIMPLE VARIABLE: PARTIAL WORD DESIGNATOR NOT LEFT-MOST 00166000 IN A LEFT PART LIST. 00167000 - 202 SIMPLE VARIABLE: MISSING . OR + . 00168000 - 203 SUBSCRIPTED VARIABLE: WRONG NUMBER OF SUBSCRIPTS IN A NON 00169000 + 202 SIMPLE VARIABLE: MISSING . OR ~ . 00168000 + 203 SUBSCRIPTED VARIABLE: WRONG NUMBER OF SUBSCRIPTS IN A ROW 00169000 DESIGNATOR. 00170000 204 SUBSCRIPTED VARIABLE: MISSING ] IN A ROW DESIGNATOR. 00171000 205 SUBSCRIPTED VARIABLE: A ROW DESIGNATOR APPEARS OUTSIDE OF 00172000 @@ -208,22 +208,22 @@ ERROR NUMBER ROUTINE:ERROR MESSAGE 00002000 208 SUBSCRIPTED VARIABLE: WRONG NUMBER OF SUBSCRIPTS. 00176000 209 SUBSCRIPTED VARIABLE: PARTIAL WORD DESIGNATOR NOT LEFT- 00177000 MOST IN A LEFT PART LIST. 00178000 - 210 SUBSCRIPTED VARIABLE: MISSING . OR + . 00179000 + 210 SUBSCRIPTED VARIABLE: MISSING , OR ~ . 00179000 211 VARIABLE: PROCEDURE ID USED OUTSIDE OF SCOPE IN LEFT PART.00180000 250 STREAM STMT:ILLEGAL STREAM STATEMENT. 00181000 251 ANY STREAM STMT PROCEDURE: MISSING ~. 00182000 252 INDEX: MISSING + OR - . 00183000 253 INDEX: MISSING NUMBER OR STREAM VARIABLE. 00184000 254 EMITC: NUMBER>63 OR NUMBER OF LABELS+LOCALS+FORMALS>63. 00185000 - 255 DSS: MISSING START IN DS~ LIT STATEMENT. 00186000 + 255 DSS: MISSING STRING IN DS~ LIT STATEMENT. 00186000 256 RELEASES: MISSING PARENTHESIS OR FILE IDENTIFIER IS NOT 00187000 A FORMAL PARAMETER. 00188000 - 257 GOTOS,LABELS OR JUMPS: LABEL SPECIFIED IS NOT ON THE SAME 00189000 + 257 GOTOS,LABELS,OR JUMPS: LABEL SPECIFIED IS NOT ON THE SAME 00189000 NEST LEVEL AS A PRECEDING APPEARANCE OF THE 00190000 LABEL. 00191000 258 LABELS: MISSING :. 00192000 259 LABELS: LABEL APPEARS MORE THAN ONCE. 00193000 - 260 GOTOS: MISSING LABEL IN A GO TO OR JUMP OUT STATEMENT. 00194000 + 260 GOTOS: MISSING LABEL IN A GO TO OR JUMP OUT TO STATEMENT. 00194000 261 JUMPS: MISSING OUT IN JUMP OUT STATEMENT. 00195000 262 NESTS: MISSING PARENTHESIS. 00196000 263 IFS:MISSING SC IN IF STATEMENT. 00197000 @@ -233,7 +233,7 @@ ERROR NUMBER ROUTINE:ERROR MESSAGE 00002000 267 FREDFIX: THERE ARE GO TO STATEMENTS IN WHICH THE LABEL IS 00201000 UNDEFINED. 00202000 268 EMITC: A REPEAT INDEX }64 WAS SPECIFIED OR TOO MANY 00203000 - FORMAL PARAMETERS,LOCALS AND LABELS 00204000 + FORMAL PARAMETERS,LOCALS AND LABELS. 00204000 269 TABLE: A CONSTANT IS SPECIFIED WHICH IS TOO LARGE 00205000 OR TOO SMALL. 00206000 281 DBLSTMT: MISSING (. 00207000 @@ -256,12 +256,12 @@ ERROR NUMBER ROUTINE:ERROR MESSAGE 00002000 MONITOR LIST ELEMENT. 00223000 404 MERRIMAC:IMPROPER NUMBER OF SUBSCRIPTS IN MONITOR LIST 00224000 ELEMENT. 00225000 - 405 MERRIMAC:LABEL OR SWITCH MONITORED AT IMPROPER LEVEL. 00226000 + 405 MERRIMAC:LABEL OR SWITCH MONITORED AT IMPROPER LAVEL. 00226000 406 MERRIMAC:IMPROPER MONITOR LIST ELEMENT. 00227000 - 407 MERRIMAC:MISSING RIGHT PARENTHESIS IN MONITOR DECLARATION 00228000 + 407 MERRIMAC:MISSING RIGHT PARENTHESIS IN MONITOR DECLARATION.00228000 408 MERRIMAC:IMPROPER MONITOR DECLARATION DELIMITER. 00229000 409 DMUP:MISSING FILE IDENTIFIER IN DUMP DECLARATION. 00230000 - 410 DMUP:MISSING LEFT PARENTHESIS IN DUMP DECLARATION 00231000 + 410 DMUP:MISSING LEFT PARENTHESIS IN DUMP DECLARATION. 00231000 411 DMUP:SUBSCRIPTED VARIABLE IN DUMP LIST HAS WRONG NUMBER OF00232000 SUBSCRIPTS. 00233000 412 DMUP:SUBSCRIPTED VARIABLE IN DUMP LIST HAS WRONG NUMBER OF00234000 @@ -271,7 +271,7 @@ ERROR NUMBER ROUTINE:ERROR MESSAGE 00002000 415 DMUP:MORE THAN 100 LABELS APPEAR AS DUMP LIST ELEMENTS 00238000 IN ONE DUMP DECLARATION. 00239000 416 DMUP:ILLEGAL DUMP LIST ELEMENT DELIMITER. 00240000 - 417 DMUP:ILLEGAL DUMP LABEL IN DUMP DECLARATION. 00241000 + 417 DMUP:MISSING DUMP LABEL IN DUMP DECLARATION. 00241000 418 DMUP:MISSING COLON IN DUMP DECLARATION. 00242000 419 DMUP:IMPROPER DUMP DECLARATION DELIMITER. 00243000 420 READSTMT:MISSING LEFT PARENTHESIS IN READ STATEMENT. 00244000 @@ -279,7 +279,7 @@ ERROR NUMBER ROUTINE:ERROR MESSAGE 00002000 STATEMENT. 00246000 422 READSTMT:MISSING FILE IN READ STATEMENT. 00247000 423 READSTMT:IMPROPER RELEASE INDICATOR. 00248000 - 424 READSTMT:IMPROPER FILE DELIMITER IN READ STATEMENT. 00249000 + 424 READSTMT:IMPROPER FILE DELIMITER IN READ STATEMENT 00249000 425 READSTMT:IMPROPER FORMAT DELIMITER IN READ STATEMENT. 00250000 426 READSTMT:IMPROPER DELIMITER FOR SECOND PARAMETER IN READ 00251000 STATEMENT. 00252000 @@ -287,13 +287,13 @@ ERROR NUMBER ROUTINE:ERROR MESSAGE 00002000 428 READSTMT:IMPROPER ROW DESIGNATOR DELIMITER IN READ 00254000 STATEMENT. 00255000 429 READSTMT:MISSING ROW DESIGNATOR IN READ STATEMENT. 00256000 - 430 READSTMT:IMPROPER DELIMITER PRECEDING THE LIST IN A READ 00257000 + 430 READSTMT:IMPROPER DELIMITER PRECEEDING THE LIST IN A READ 00257000 STATEMENT. 00258000 431 HANDLETHETAILENDOFAREADORSPACESTATEMENT:IMPROPER END OF 00259000 FILE LABEL IN READ OR SPACE STATEMENT. 00260000 432 HANDLETHETAILENDOFAREADORSPACESTATEMENT:IMPROPER PARITY 00261000 LABEL IN READ OR SPACE STATEMENT. 00262000 - 433 HANDLETHETAILENDOFAREADORSPACESTATEMENT:MISSING 00263000 + 433 HANDLETHETAILENDOFAREADORSPACESTATEMENT:MISSING RIGHT 00263000 BRACKET IN READ OR SPACE STATEMENT. 00264000 434 SPACESTMT:MISSING LEFT PARENTHESIS IN SPACE STATEMENT. 00265000 435 SPACESTMT:IMPROPER FILE IDENTIFIER IN SPACE STATEMENT. 00266000 @@ -318,7 +318,7 @@ ERROR NUMBER ROUTINE:ERROR MESSAGE 00002000 448 WRITESTMT:IMPROPER LIST DELIMITER IN A WRITE STATEMENT. 00285000 449 READSTMT:IMPROPER LIST DELIMITER IN A READ STATEMENT. 00286000 450 LOCKSTMT:MISSING LEFT PARENTHESIS IN A LOCK STATEMENT. 00287000 - 451 LOCKSTMT:IMPROPER FIEL PART IN A LOCK STATEMENT. 00288000 + 451 LOCKSTMT:IMPROPER FILE PART IN A LOCK STATEMENT. 00288000 452 LOCKSTMT:MISSING COMMA IN A LOCK STATEMENT. 00289000 453 LOCKSTMT:IMPROPER UNIT DISPOSITION PART IN A LOCK 00290000 STATEMENT. 00291000 @@ -328,15 +328,15 @@ ERROR NUMBER ROUTINE:ERROR MESSAGE 00002000 457 CLOSESTMT:MISSING COMMA IN A CLOSE STATEMENT. 00295000 458 CLOSESTMT:IMPROPER UNIT DISPOSITION PART IN A CLOSE 00296000 STATEMENT. 00297000 - 459 CLOSESTMT: 00298000 - 460 RWNDSTMT:MISSING LEFT PARENTHESES IN A REWIND STATEMENT. 00299000 + 459 CLOSESTMT:MISSING RIGHT PARENTHESIS IN A CLOSE STATEMENT. 00298000 + 460 RWNDSTMT:MISSING LEFT PARENTHESIS IN A REWIND STATEMENT. 00299000 461 RWNDSTMT:IMPROPER FILE PART IN A REWIND STATEMENT. 00300000 462 RWNDSTMT:MISSING RIGHT PARENTHESIS IN A REWIND STATEMENT. 00301000 463 BLOCK:A MONITOR DECLARATION APPEARS IN THE SPECIFICATION 00302000 PART OF A PROCEDURE. 00303000 464 BLOCK:A DUMP DECLARATION APPEARS IN THE SPECIFICATION PART00304000 OF A PROCEDURE. 00305000 - 465 INLINE: MISSING PARAMETER IDENTIFIER IN INSIDE STREAM 00305001 + 465 INLINE: MISSING PARAMETER IDENTIFIER IN INLINE STREAM 00305001 STATEMENT PARAMETER LIST. 00305002 500 .ID: NEEDS DOUBLE PERIOD FOR PRTE IF PAST 512 00305100 520 TABLE: STRING LONGER THAN ONE WORD (48 BITS). 00305200 @@ -352,11 +352,11 @@ ERROR NUMBER ROUTINE:ERROR MESSAGE 00002000 ; 00490000 BEGIN COMMENT OUTERMOST BLOCK; 00500000 INTEGER ERRORCOUNT; COMMENT NUMBER OF ERROR MSGS. MCP WILL TYPE 00501000 - SYNTAX ERR AT EOJ IF THIS IS NON-ZERO, MUST BE @R+25;00502000 - INTEGER SAVETIME; COMMENT SAVE-FACTOR FOR CODE FILE,GIVEN BY MCP. 00503000 + SYNTX ERR AT EOJ IF THIS IS NON-ZERO. MUST BE @R+25; 00502000 + INTEGER SAVETIME; COMMENT SAVE-FACTOR FOR CODE FILE, GIVEN BY MCP. 00503000 IF COMPILE & GO =0, FOR SYNTAX, =-1. MUST BE AT R+26;00504000 - INTEGER CARDNUMBER; % SEQ # OF CARD BEING PROCESSED. 00504100 - INTEGER CARDCOUNT; % NUMBER OF CARDS PROCESSED, 00504150 +INTEGER CARDNUMBER; % SEQ # OF CARD BEING PROCESSED. 00504100 +INTEGER CARDCOUNT; % NUMBER OF CARDS PROCESSED. 00504150 BOOLEAN BUILDLINE; 00504700 COMMENT RR1-RR11 ARE USED IN SOME PROCEDURES IN 00505000 PLACE OF LOCALS TO SAVE STACK SPACE; 00506000 @@ -364,103 +364,103 @@ BEGIN COMMENT OUTERMOST BLOCK; 00500000 COMMENT SOME OF THE RRI ARE USED TO PASS FILE INFORMATION 00508000 TO THE MAIN BLOCK; 00509000 COMMENT EXAMIN RETURNS THE CHARACTER AT ABSOLUTE ADDRESS NCR; 00510000 - REAL STREAM PROCEDURE EXAMIN(NCR); VALUE NCR; 00511000 - BEGIN SI~NCR;DI~LOC EXAMIN;DI~DI+7; DS~CHR END; 00512000 - INTEGER STREAM PROCEDURE GETF(Q);VALUE Q; 00523000 - BEGIN SI~LOC GETF; SI~SI-7;DI~LOC Q;DI~DI+5; 00524000 - SKIP 3 DB; 9(IF SB THEN DS~SET ELSE DS~RESET; SKIP SB); 00525000 - DI~LOC Q;SI~Q;DS~WDS;SI~Q;GETF~SI 00526000 - END GETF; 00527000 - COMMENT START SETTING UP FILE PARAMETERS; 00528000 - IF EXAMIN(RR11~GETF(3)+"Y08") !12 THEN RR1~5 ELSE 00529000 - BEGIN RR1~2;RR2~150 END; 00530000 - IF EXAMIN(RR11+5) ! 12 THEN RR3~4 ELSE 00531000 - BEGIN RR3~2; RR4~150 END; 00532000 - IF EXAMIN(RR11+10)=12 THEN 00533000 - BEGIN RR5~2;RR6~10;RR7~150 END ELSE 00534000 - BEGIN RR5~1;RR6~56;RR7~10 END; 00535000 - IF EXAMIN(RR11+15)=12 THEN 00536000 - BEGIN RR8~10;RR9~150 END ELSE 00537000 - BEGIN RR8~56;RR9~10 END; 00538000 - BEGIN COMMENT MAIN BLOCK; 01000000 - INTEGER OPINX; % USED FOR INDEXING INTO OPTIONS ARRAY. 01000800 - BOOLEAN SETTING; % USED BY DOLLARCARD FOR OPTIONS SETTING. 01000802 - INTEGER NEWINX, ADDVALUE, BASENUM, TOTALNO; 01000860 - DEFINE OPARSIZE = 200 #; 01000902 - ARRAY OPTIONS[0:OPARSIZE]; 01000904 - BOOLEAN OPTIONWORD; 01000910 - DEFINE CHECKBIT = 1#, 01000920 - DEBUGBIT = 2#, 01000930 - DECKBIT = 3#, 01000940 - FORMATBIT = 4#, 01000950 - INTBIT = 5#, 01000960 - LISTABIT = 6#, 01000970 - LISTBIT = 7#, 01000980 - LISTPBIT = 8#, 01000990 - MCPBIT = 9#, 01001000 - MERGEBIT = 10#, 01001010 - NESTBIT = 11#, 01001020 - NEWBIT = 12#, 01001030 - NEWINCLBIT = 13#, 01001040 - OMITBIT = 14#, 01001050 - PRINTDOLLARBIT = 15#, 01001060 - PRTBIT = 16#, 01001070 - PUNCHBIT = 17#, 01001080 - PURGEBIT = 18#, 01001090 - SEGSBIT = 19#, 01001100 - SEQBIT = 20#, 01001110 - SEQERRBIT = 21#, 01001120 - SINGLBIT = 22#, 01001130 - STUFFBIT = 23#, 01001140 - VOIDBIT = 24#, 01001150 - VOIDTBIT = 25#, 01001160 - USEROPINX = 26#; 01001170 - COMMENT IF A NEW COMPILER-DEFINED OPTION IS ADDED, CHANGE USEROPINX 01001180 - AND ADD OPTION IN DEFINES ELOW, IN DOLLARCARD, AND IN 01001190 - FILL STATEMENT IN INITIALIZATION OF COMPILER; 01001200 - DEFINE CHECKTOG = OPTIONWORD.[CHECKBIT:1] #, 01001210 - DEBUGTOG = OPTIONWORD.[DEBUGBIT:1] #, 01001220 - DECKTOG = OPTIONWORD.[DECKBIT:1] #, 01001230 - FORMATOG = OPTIONWORD.[FORMATBIT:1] #, 01001240 - INTOG = OPTIONWORD.[INTBIT:1] #, 01001250 - LISTATOG = OPTIONWORD.[LISTABIT:1] #, 01001260 - LISTOG = OPTIONWORD.[LISTBIT:1] #, 01001270 - LISTPTOG = OPTIONWORD.[LISTPBIT:1] #, 01001280 - MCPTOG = OPTIONWORD.[MCPBIT:1] #, 01001290 - MERGETOG = OPTIONWORD.[MERGEBIT:1] #, 01001300 - NESTOG = OPTIONWORD.[NESTBIT:1] #, 01001310 - NEWTOG = OPTIONWORD.[NEWBIT:1] #, 01001320 - NEWINCL = OPTIONWORD.[NEWINCLBIT:1] #, 01001330 - OMITTING = OPTIONWORD.[OMITBIT:1] #, 01001340 - PRINTDOLLARTOG = OPTIONWORD.[PRINTDOLLARBIT:1] #, 01001350 - PRTOG = OPTIONWORD.[PRTBIT:1] #, 01001360 - PUNCHTOG = OPTIONWORD.[PUNCHBIT:1] #, 01001370 - PURGETOG = OPTIONWORD.[PURGEBIT:1] #, 01001380 - SEGSTOG = OPTIONWORD.[SEGSBIT:1] #, 01001390 - SEQTOG = OPTIONWORD.[SEQBIT:1] #, 01001400 -COMMENT SEQTOG INDICATES RESEQUENCING IS TO BE DONE; 01001410 - SEQERRTOG = OPTIONWORD.[SEQERRBIT:1] #, 01001420 - SINGLTOG = OPTIONWORD.[SINGLBIT:1] #, 01001430 - STUFFTOG = OPTIONWORD.[STUFFBIT:1] #, 01001440 - VOIDING = OPTIONWORD.[VOIDBIT:1] #, 01001450 - VOIDTAPE = OPTIONWORD.[VOIDTBIT] #, 01001460 - DUMMY = #; 01001470 - BOOLEAN NOHEADING; % TRUE IF DATIME HAS NOT YET BEEN CALLED. 01001480 - BOOLEAN NEWBASE; % NEW BASENUM FOUND ON A NEW $-CARD. 01001490 - BOOLEAN LASTCRDPATCH; % NORMALLY FALSE, SET TO TRUE WHEN THE 01001500 - % LAST CARD FROM SYMBOLIC LIBRARY READ 01001510 - % IS PATCHED FROM THE CARD READER. 01001520 - INTEGER XMODE; % TELLS DOLLARCARD HOW TO SET OPTIONS. 01001530 - BOOLEAN DOLLARTOG; % TRUE IF SCANNING A DOLLAR CARD. 01001540 - INTEGER ERRMAX; % COMPILATION STOPS IF EXCEEDED. 01001550 - BOOLEAN SEQXEQTOG; % GIVE SEQ. NO. WHEN DS-ING OBJ. 01001560 +REAL STREAM PROCEDURE EXAMIN(NCR); VALUE NCR; 00511000 + BEGIN SI~NCR;DI~LOC EXAMIN;DI~DI+7; DS~CHR END; 00512000 +INTEGER STREAM PROCEDURE GETF(Q);VALUE Q; 00523000 + BEGIN SI~LOC GETF; SI~SI-7;DI~LOC Q;DI~DI+5; 00524000 + SKIP 3 DB; 9(IF SB THEN DS~SET ELSE DS~RESET; SKIP SB); 00525000 + DI~LOC Q;SI~Q;DS~WDS;SI~Q;GETF~SI 00526000 + END GETF; 00527000 +COMMENT START SETTING UP FILE PARAMETERS; 00528000 + IF EXAMIN(RR11~GETF(3)+"Y08") !12 THEN RR1~5 ELSE 00529000 + BEGIN RR1~2;RR2~150 END; 00530000 + IF EXAMIN(RR11+5) !12 THEN RR3~4 ELSE 00531000 + BEGIN RR3~2; RR4~150 END; 00532000 + IF EXAMIN(RR11+10)=12 THEN 00533000 + BEGIN RR5~2;RR6~10;RR7~150 END ELSE 00534000 + BEGIN RR5~1;RR6~56;RR7~10 END; 00535000 + IF EXAMIN(RR11+15)=12 THEN 00536000 + BEGIN RR8~10;RR9~150 END ELSE 00537000 + BEGIN RR8~56;RR9~10 END; 00538000 +BEGIN COMMENT MAIN BLOCK; 01000000 +INTEGER OPINX; % USED FOR INDEXING INTO OPTIONS ARRAY. 01000800 +BOOLEAN SETTING; % USED BY DOLLARCARD FOR AN OPTION"S SETTING 01000802 + INTEGER NEWINX, ADDVALUE, BASENUM, TOTALNO; 01000860 +DEFINE OPARSIZE = 200 #; 01000902 +ARRAY OPTIONS[0:OPARSIZE]; 01000904 +BOOLEAN OPTIONWORD; 01000910 +DEFINE CHECKBIT = 1#, 01000920 + DEBUGBIT = 2#, 01000930 + DECKBIT = 3#, 01000940 + FORMATBIT = 4#, 01000950 + INTBIT = 5#, 01000960 + LISTABIT = 6#, 01000970 + LISTBIT = 7#, 01000980 + LISTPBIT = 8#, 01000990 + MCPBIT = 9#, 01001000 + MERGEBIT = 10#, 01001010 + NESTBIT = 11#, 01001020 + NEWBIT = 12#, 01001030 + NEWINCLBIT = 13#, 01001040 + OMITBIT = 14#, 01001050 + PRINTDOLLARBIT = 15#, 01001060 + PRTBIT = 16#, 01001070 + PUNCHBIT = 17#, 01001080 + PURGEBIT = 18#, 01001090 + SEGSBIT = 19#, 01001100 + SEQBIT = 20#, 01001110 + SEQERRBIT = 21#, 01001120 + SINGLBIT = 22#, 01001130 + STUFFBIT = 23#, 01001140 + VOIDBIT = 24#, 01001150 + VOIDTBIT = 25#, 01001160 + USEROPINX = 26#; 01001170 +COMMENT IF A NEW COMPILER-DEFINED OPTION IS ADDED, CHANGE USEROPINX 01001180 + AND ADD OPTION IN DEFINES BELOW, IN DOLLARCARD, AND IN 01001190 + FILL STATEMENT IN INITIALIZATION OF COMPILER; 01001200 +DEFINE CHECKTOG = OPTIONWORD.[CHECKBIT:1] #, 01001210 + DEBUGTOG = OPTIONWORD.[DEBUGBIT:1] #, 01001220 + DECKTOG = OPTIONWORD.[DECKBIT:1] #, 01001230 + FORMATOG = OPTIONWORD.[FORMATBIT:1] #, 01001240 + INTOG = OPTIONWORD.[INTBIT:1] #, 01001250 + LISTATOG = OPTIONWORD.[LISTABIT:1] #, 01001260 + LISTOG = OPTIONWORD.[LISTBIT:1] #, 01001270 + LISTPTOG = OPTIONWORD.[LISTPBIT:1] #, 01001280 + MCPTOG = OPTIONWORD.[MCPBIT:1] #, 01001290 + MERGETOG = OPTIONWORD.[MERGEBIT:1] #, 01001300 + NESTOG = OPTIONWORD.[NESTBIT:1] #, 01001310 + NEWTOG = OPTIONWORD.[NEWBIT:1] #, 01001320 + NEWINCL = OPTIONWORD.[NEWINCLBIT:1] #, 01001330 + OMITTING = OPTIONWORD.[OMITBIT:1] #, 01001340 + PRINTDOLLARTOG = OPTIONWORD.[PRINTDOLLARBIT:1] #, 01001350 + PRTOG = OPTIONWORD.[PRTBIT:1] #, 01001360 + PUNCHTOG = OPTIONWORD.[PUNCHBIT:1] #, 01001370 + PURGETOG = OPTIONWORD.[PURGEBIT:1] #, 01001380 + SEGSTOG = OPTIONWORD.[SEGSBIT:1] #, 01001390 + SEQTOG = OPTIONWORD.[SEQBIT:1] #, 01001400 +COMMENT SEQTOG INDICATES RESEQUENCING IS TO BE DONE; 01001410 + SEQERRTOG = OPTIONWORD.[SEQERRBIT:1] #, 01001420 + SINGLTOG = OPTIONWORD.[SINGLBIT:1] #, 01001430 + STUFFTOG = OPTIONWORD.[STUFFBIT:1] #, 01001440 + VOIDING = OPTIONWORD.[VOIDBIT:1] #, 01001450 + VOIDTAPE = OPTIONWORD.[VOIDTBIT:1] #, 01001460 + DUMMY = #; 01001470 +BOOLEAN NOHEADING; % TRUE IF DATIME HAS NOT BEEN CALLED. 01001480 +BOOLEAN NEWBASE; % NEW BASENUM FOUND ON A NEW $-CARD. 01001490 +BOOLEAN LASTCRDPATCH; % NORMALLY FALSE, SET TO TRUE WHEN THE 01001500 + % LAST CARD FROM SYMBOLIC LIBRARY READ 01001510 + % IS PATCHED FROM THE CARD READER. 01001520 +INTEGER XMODE; % TELLS DOLLARCARD HOW TO SET OPTIONS. 01001530 +BOOLEAN DOLLARTOG; % TRUE IF SCANNING A DOLLAR CARD. 01001540 +INTEGER ERRMAX; % COMPILATION STOPS IF EXCEEDED. 01001550 +BOOLEAN SEQXEQTOG; % GIVE SEQ. NO. WHEN DS-ING OBJ. 01001560 BOOLEAN LISTER; % LISTOG OR LISTATOG OR DEBUGTOG. 01001570 ALPHA MEDIUM; % INPUT IS: T,C,P,CA,CB,CC. 01001580 INTEGER MYCLASS; % USED IN DOLLARCARD EVALUATION. 01001590 REAL BATMAN; % USED IN DOLLARCARD EVALUATION. 01001600 -ARRAY SPECIAL[0:31]; 01003000 - COMMENT THIS ARRAY HOLDS THE INTERNAL CODE FOR THE SPECIAL 01004000 - CHARACTERS: IT IS FILLED DURING INITIALIZATION. 01005000 + ARRAY SPECIAL[0:31]; 01003000 + COMMENT THIS ARRAY HOLDS THE INTERNAL CODE FOR THE SPECIAL 01004000 + CHARACTORS: IT IS FILLED DURING INITIALIZATION; 01005000 01006000 ARRAY INFO [0:127,0:255]; 01007000 COMMENT INFO CONTAINS ALL THE INFORMATION ABOUT A GIVEN IDENTIFIER 01008000 @@ -468,29 +468,29 @@ ARRAY INFO [0:127,0:255]; 01007000 THE INTERNAL CODE ( OR ELBAT WORD AS IT IS USUALLY 01010000 CALLED). THE SECOND WORD CONTAINS THE FORWARD BIT (IN 01011000 [1:1]) FOR PROCEDURES, THE LINK TO PREVIOUS ENTRY (IN 01012000 - [4:8]), THE NUMBER OF CHARACTERS IN THE ALPHA REPRESENTA- 01013000 + [4:8]). THE NUMBER OF CHARACTORS IN THE ALPHA REPRESENTA- 01013000 TION (IN [12:6]), AND THE FIRST 5 CHARACTERS OF ALPHA. 01014000 SUCCEDING WORDS CONTAIN THE REMAINING CHARACTORS OF ALPHA,01015000 FOLLOWED BY ANY ADDITIONAL INFORMATION. THE ELBAT WORD 01016000 AND THE ALPHA FOR ANY QUANTITY ARE NOT SPLIT ACROSS A ROW 01017000 - OF INFO. FOR PURPOSES OF FINDING AN IDENTIFIER OR 01018000 + OF INFO. FOR PURPOSES OF FINDING AN IDENTIFIER OR 01018000 RESERVED WORD THE QUANTITIES ARE SCATTERED INTO 125 01019000 - DIFERENT LISTS OR STACKS. WHICH STACK CONTAINS A QUANTITY 01020000 + DIFERENT LISTS OR STACKES. WHICH STACK CONTAINS A QUANTITY01020000 IS GIVEN BY TAKING NAAAAA MOD 125 WHERE N IS THE NUMBER 01021000 - OF CHARACTERS AND AAAAA IS THE FIRST 5 CHARACTERS OF 01022000 + OF CHARACTORS AND AAAAA IS THE FIRST 5 CHARACTORS OF 01022000 ALPHA, FILLED IN WITH ZEROS FROM THE RIGHT IF NEEDED. 01023000 THIS NUMBER IS CALLED THE SCRAMBLE NUMBER OR INDEX. 01024000 THE FIRST ROW OF INFO IS USED FOR OTHER PURPOSES. THE 01025000 - RESERVED WORD OCCUPY THE SECOND ROW. IT IS FILLED DURING 01026000 + RESERVED WORDS OCCUPY THE SECOND ROW. IT IS FILLED DURING 01026000 INITIALIZATION; 01027000 -COMMENT INFO FORMAT 01028000 - FOLLOWING IS A DESCRIPTION OF THE FORMAT OF ALL TYPES OF ENTIRES 01029000 +COMMENT INFO FORMAT 01028000 + FOLLOWING IS A DESCRIPTION OF THE FORMAT OF ALL TYPES OF ENTRIES 01029000 ENTERED IN INFO: 01030000 THE FIRST WORD OF ALL ENTRIES IS THE ELBAT WORD. 01031000 THE INCR FIELD ([27:8]) CONTAINS AN INCREMENT WHICH WHEN 01032000 - ADDED TO THE CURRENT INDEX INTO INFO YELDS AN INDEX TO ANY 01033000 + ADDED TO THE CURRENT INDEX INTO INFO YELDSAN INDEX TO ANY 01033000 ADDITIONAL INFO (IF ANY) FOR THIS ENTRY. 01034000 - E.G. IF THE INDEX IS IX THEN INFO[(IX+INCR).LINKR,(IX+INCR). 01035000 + E.G. IF THE INDEX IS IX THEN INFO[(IX+INCR).LINKR,(IX+INCR). 01035000 LINKC] WILL CONTAIN THE FIRST WORD OF ADDITIONAL INFO. 01036000 THE LINK FIELD OF THE ELBAT WORD IN INFO IS DIFFERENT FROM 01037000 THAT OF THE ENTRY IN ELBAT PUT IN BY TABLE.THE ENTRY IN ELBAT 01038000 @@ -506,22 +506,22 @@ COMMENT INFO FORMAT 01028000 THIS STACKHEAD INDEX. LET THIS STACKHEAD LOCATION BE 01048000 S[L] 01049000 NOW THE DECLARATION 01050000 - BEGIN REAL A,BC IS ENCOUNTERED 01051000 + BEGIN REAL A,B,C IS ENCOUNTERED 01051000 IF THE NEXT AVAILABLE INFO SPACE IS CALLED NEXTINFO 01052000 THEN A IS ENTERED AS FOLLOWS:(ASSUME AN ELBAT WORD T HAS BEEN 01053000 CONSTRUCTED FOR A) 01054000 - T,LINK~ S[L]. (WHICH IS ERO AT FIRST). 01055000 + T.LINK~ S[L]. (WHICH IS ZERO AT FIRST). 01055000 INFO[NEXTINFO]~T. S[L]~NEXTINFO. 01056000 NEXTINFO~NEXTINFO+NUMBER OF WORDS IN THIS 01057000 ENTRY. 01058000 NOW S[L] POINTS TO THE ENTRY FOR A IN INFO AND THE ENTRY 01059000 ITSELF CONTAINS THE STOP FLAG ZERO. 01060000 - B IS ENTERED SIMILARILY TO A. 01061000 - NOW S[L} POINTS TO THE ENTRY FOR B AND IT POINTS TO THE 01062000 + B IS ENTERED SIMILARLY TO A. 01061000 + NOW S[L] POINTS TO THE ENTRY FOR B AND IT POINTS TO THE 01062000 ENTRY FOR A. 01063000 - SIMILARILY,AFTER C IS ENTERED 01064000 - S[L] POINTS TO C,WHOSE ENTRY PONTS TO B WHOSE ENTRY 01065000 - POINTS TO A. 01066000 + SIMILARLY,AFTER C IS ENTERED 01064000 + S[L] POINTS TO C,WHOSE ENTRY POINTS TO B WHOSE ENTRY 01065000 + POINTS TO A. 01066000 THE SECOND WORD OF EACH ENTRY IN INFO IS MADE UP AS FOLLOWS: 01067000 FWDPT =[1:1],THIS TELLS WHETHER A PROCEDURE WAS DECLARED 01068000 FORWARD. IT IS RESET AT THE TIME OF ITS ACTUAL 01069000 @@ -530,55 +530,55 @@ COMMENT INFO FORMAT 01028000 INDEX TO THE PREVIOUS INFO ENTRY WHEN SUBTRACTED 01072000 FROM THE CURRENT ENTRY INDEX. 01073000 [12:6] TELLS THE NUMBER OF CHARACTERS IN THE ENTRY.(<64) 01074000 - [18:30] CONTAINS THE FIRST FIVE ALPA CHARACTERS OF THE ENTRY 01075000 + [18:30] CONTAINS THE FIRST FIVE ALPHA CHARACTERS OF THE ENTRY 01075000 AND SUCCEEDING WORDS CONTAIN ALL OVERFLOW IF NEEDED. 01076000 THESE WORDS CONTAIN 8 CHARACTERS EACH,LEFT JUSTIFIED. 01077000 THUS,AN ENTRY FOR SYMBOL FOLLOWED BY AN ENTRY 01078000 FOR X WOULD APPEAR AS FOLLOWS: 01079000 - INFO[I] = ELBATWRD (MADE FOR SYMBOL) 01080000 - I+1 = OP6SYMBO (P DEPENDS ON PREVIOUS ENTRY) 01081000 - I+2 = L 01082000 - I+3 = ELBATWRD (MADE FOR X) 01083000 - I+4 = 031X 01084000 - THIS SHOWS THAT INFO[I-P] WOULD POINT TO THE BEGINNING OF 01085000 - THE ENTRY BEFORE SYMBOL, AND 01086000 - INFO[I+3-3] POINTS TO THE ENTRY FOR SYMBOL. 01087000 - ALL ENTRIES OF IDENTIFIERS HAVE THE INFORMATION DESCRIBED ABOVE 01088000 - THAT IS,THE ELBAT WORD FOLLOWED BY THE WORD CONTAINING THE FIRST 01089000 - FIVE CHARACTERS OF ALPHA,AND ANY ADDITIONAL WORDS OF ALPHA IF 01090000 - NECESSARY. 01091000 - THIS IS SUFFICIENT FOR ENTRIES OF THE FOLLOWING TYPES, 01092000 - REAL 01093000 - BOOLEAN 01094000 - INTEGER 01095000 - ALPHA 01096000 - FILE 01097000 - FORMAT 01098000 - LIST 01099000 - OTHER ENTRIES REQUIRE ADDITIONAL INFORMATION. 01100000 - ARRAYS: 01101000 - THE FIRST WORD OF ADDITIONAL INFO CONTAINS THE NUMBER OF 01102000 - DIMENSIONS(IN THE LOW ORDER PART),[40:8] 01103000 - EACH SUCCEEDING WORD CONTAINS INFORMATION ABOUT EACH LOWER 01104000 - BOUND IN ORDER OF APPEARANCE,ONE WORD FOR EACH LOWER BOUND. 01105000 - THESE WORDS ARE MADE UP AS FOLLOWS: 01106000 - [23:12] =ADD OPERATOR SYLLABLE (0101) OR 01107000 - SUB OPERATOR SYLLABLE (0301) CORRESPONDING 01108000 - RESPECTIVELY TO WHETHER THE LOWER BOUND IS 01109000 - TO BE ADDED TO THE SUBSCRIPT IN INDEXING OR 01110000 - SUBTRACTED. 01111000 - [35:11] =11 BIT ADDRESS OF LOWER BOUND,IF THE LOWER BOUND 01112000 - REQUIRES A PRT OR STACK CELL,OTHERWISE THE BIT 01113000 - 35 IS IGNORED AND THE NEXT TEN BITS([36:10]) 01114000 - REPRESENT THE ACTUAL VALUE OF THE LOWER BOUND 01115000 - [46:2] =00 OR 10 DEPENDING ON WHETHER THE [35:11] VALUE 01116000 - IS LITERAL OR OPERAND RESPECTIVELY. 01117000 + INFO[I] = ELBATWRD (MADE FOR SYMBOL) 01080000 + I+1 = OP6SYMBO (P DEPENDS ON PREVIOUS ENTRY) 01081000 + I+2 = L 01082000 + I+3 = ELBATWRD (MADE FOR X) 01083000 + I+4 = 031X 01084000 + THIS SHOWS THAT INFO[I-P] WOULD POINT TO THE BEGINNING OF 01085000 + THE ENTRY BEFORE SYMBOL, AND 01086000 + INFO[I+3-3] POINTS TO THE ENTRY FOR SYMBOL. 01087000 + ALL ENTRIES OF IDNETIFIERS HAVE THE INFORMATION DESCRIBED ABOVE 01088000 + THAT IS,THE ELBAT WORD FOLLOWED BY THE WORD CONTAING THE FIRST 01089000 + FIVE CHARACTERS OF ALPHA,AND ANY ADDITIONAL WORDS OF ALPHA IF 01090000 + NECESSARY. 01091000 + THIS IS SUFFICIENT FOR ENTRIES OF THE FOLLOWING TYPES, 01092000 + REAL 01093000 + BOOLEAN 01094000 + INTEGER 01095000 + ALPHA 01096000 + FILE 01097000 + FORMAT 01098000 + LIST 01099000 + OTHER ENTRIES REQUIRE ADDITIONAL INFORMATION. 01100000 + ARRAYS: 01101000 + THE FIRST WORD OF ADDITIONAL INFO CONTAINS THE NUMBER OF 01102000 + DIMENSIONS(IN THE LOW ORDER PART).[40:8] 01103000 + EACH SUCCEEDING WORD CONTAINS INFORMATION ABOUT EACH LOWER 01104000 + BOUND IN ORDER OF APPEARANCE,ONE WORD FOR EACH LOWER BOUND. 01105000 + THESE WORDS ARE MADE UP AS FOLLOWS: 01106000 + [23:12] =ADD OPERATOR SYLLABLE (0101) OR 01107000 + SUB OPERATOR SYLLABLE (0301) CORRESPONDING 01108000 + RESPECTIVELY TO WHETHER THE LOWER BOUND IS 01109000 + TO BE ADDED TO THE SUBSCRIPT IN INDEXING OR 01110000 + SUBTRACTED. 01111000 + [35:11] =11 BIT ADDRESS OF LOWER BOUND,IF THE LOWER BOUND 01112000 + REQUIRES A PRT OR STACK CELL,OTHERWISE THE BIT 01113000 + 35 IS IGNORED AND THE NEXT TEN BITS([36:10]) 01114000 + REPRESENT THE ACTUAL VALUE OF THE LOWER BOUND 01115000 + [46:2] =00 OR 10 DEPENDING ON WHETHER THE [35:11] VALUE 01116000 + IS A LITERAL OR OPERAND,RESPECTIVELY. 01117000 PROCEDURES: 01118000 THE FIRST WORD OF ADDITIONAL INFO CONTAINS THE NUMBER OF 01119000 PARAMETERS [40:8] 01120000 IF A STREAM PROCEDURE THEN THIS WORD CONTAINS ALSO IN 01121000 [13:11] ENDING PRT ADDRESS FOR LABELS, 01122000 - [ 7:6] NO OF LABELS REQUIRING PRT ADDRESSES,AND [1:6] NUMBER 01123000 + [ 7:6] NO OF LABELS REQUIRING PRT ADDRESSES, AND [1:6] NUMBER 01123000 OF LOCALS. 01124000 SUCCEEDING WORDS (ONE FOR EACH FORMAL PARAMETER,IN ORDER 01125000 OF APPEARANCE IN FORMAL PARAPART) ARE 01126000 @@ -595,8 +595,8 @@ COMMENT INFO FORMAT 01028000 AT DECLARATION TIME THE ADDITIONAL INFO CONTAINS 0. THE SIGN 01137000 BIT TELLS WHETHER OR NOT THE DEFINITION POINT HAS BEEN REACHED. 01138000 IF SIGN = 0, THEN [36:12] CONTAINS AN ADDRESS IN CODEARRAY OF A 01139000 - LIST OF FORWARD REFERENCE TO THIS LABEL. THE END OF LIST FLAG IS 01140000 - 0. IF SIGN =9, THEN [36:12] CONTAINS L FOR THIS LABEL. 01141000 + LIST OF FORWARD REFERENCES TO THIS LABEL. THE END OF LIST FLAG IS01140000 + 0. IF SIGN =0, THEN [36:12] CONTAINS L FOR THIS LABEL. 01141000 SWITCHES: 01142000 THE FIELD [36:12] CONTAINS L FOR THE BEGINNING OF SWITCH DECLAR- 01143000 ATION. [24:12] CONTAINS L FOR FIRST SIMPLE REFERENCE TO SWITCH. 01144000 @@ -611,7 +611,7 @@ COMMENT INFO FORMAT 01028000 INCR =[27: 8]#, 01153000 LINK =[35:13]#, 01154000 LINKR =[35: 5]#, 01155000 - LINKC =[40: 8]#, 01156000 + LINKC =[40: 8]#; 01156000 COMMENT THESE DEFINES ARE USED TO PICK APART THE ELBAT WORD. 01157000 MON IS THE BIT WHICH IS ON IF THE QUANTITY IS MONITORED. 01158000 CLASS IS THE PRINCIPAL IDENTIFICATION OF A GIVEN 01159000 @@ -734,26 +734,26 @@ COMMENT INFO FORMAT 01028000 ADDOP =96#, COMMENT 140; 01278000 MULOP =97#, COMMENT 141; 01278500 % STRING =99#, COMMENT 143; 01278600 - COMMENT SUBCLASSES FOR DECLARATIONS (KEPT IN ADDRESS); 01279000 - OWNV =01#, COMMENT 01; 01280000 - SAVEV =02#, COMMENT 02; 01281000 - BOOV =03#, COMMENT 03; 01282000 - REALV =04#, COMMENT 04; 01283000 - ALFAV =05#, COMMENT 05; 01284000 - INTV =05#, COMMENT 05; 01285000 - LABELV =07#, COMMENT 07; 01286000 - DUMPV =08#, COMMENT 10; 01287000 - SUBV =09#, COMMENT 11; 01288000 - OUTV =10#, COMMENT 12; 01289000 - INV =11#, COMMENT 13; 01290000 - MONITORV =12#, COMMENT 14; 01291000 - SWITCHV =13#, COMMENT 15; 01292000 - PROCV =14#, COMMENT 16; 01293000 - ARRAYV =15#, COMMENT 17; 01294000 - NAMEV =16#, COMMENT 20; 01295000 - FILEV =17#, COMMENT 21; 01296000 - STREAMV =18#, COMMENT 22; 01297000 - DEFINEV =19#, COMMENT 23; 01298000 + COMMENT SUBCLASSES FOR DECLARATORS (KEPT IN ADDRESS); 01279000 + OWNV =01#, COMMENT 01; 01280000 + SAVEV =02#, COMMENT 02; 01281000 + BOOV =03#, COMMENT 03; 01282000 + REALV =04#, COMMENT 04; 01283000 + ALFAV =05#, COMMENT 05; 01284000 + INTV =05#, COMMENT 05; 01285000 + LABELV =07#, COMMENT 07; 01286000 + DUMPV =08#, COMMENT 10; 01287000 + SUBV =09#, COMMENT 11; 01288000 + OUTV =10#, COMMENT 12; 01289000 + INV =11#, COMMENT 13; 01290000 + MONITORV =12#, COMMENT 14; 01291000 + SWITCHV =13#, COMMENT 15; 01292000 + PROCV =14#, COMMENT 16; 01293000 + ARRAYV =15#, COMMENT 17; 01294000 + NAMEV =16#, COMMENT 20; 01295000 + FILEV =17#, COMMENT 21; 01296000 + STREAMV =18#, COMMENT 22; 01297000 + DEFINEV =19#, COMMENT 23; 01298000 DEFINE DDES = 8#, 01299000 ADES = 28#, 01299010 PDES = 29#, 01299020 @@ -765,48 +765,50 @@ DEFINE DDES = 8#, 01299000 MAXINTRINSIC = 150#, % USED IN BUILDING INTABLE @ 09414120 01299400 INTRINSICADR = (MAXINTRINSIC DIV 30)#; % RESERVES SEG FOR INTABLE01299500 REAL TIME1; 01300000 -BOOLEAN ASTOG; 01300100 -BOOLEAN SAF; 01300200 -INTEGER SCRAM; 01301000 - COMMENT SCRAM CONTAINS THEN SCRAMBLE INDEX FOR THE LAST IDENTIFIER 01302000 - OR RESERVED WORD SCANNED; 01303000 -ALPHA ARRAY ACCUM[0:10]; 01304000 - COMMENT ACCUM HOLDS THE ALPHA AND CHARACTER COUNT OF THE LAST 01305000 - SCANNED ITEM IN A FORM COMPATIBLE WITH ITS APPEARANCE 01306000 - IN INFO, THAT IS ACCUM[1] = 00NAAAAA, ACCUM[I] , I> 1, 01307000 - HAS ANY ADDITIONAL CHARACTERS. ACCUM[0] IS USED FOR 01308000 - THE ELBIT WORD BY THE ENTER ROUTINES; 01309000 + BOOLEAN ASTOG; 01300100 + BOOLEAN SAF; 01300200 + INTEGER SCRAM; 01301000 + COMMENT SCRAM CONTAINS THE SCRAMBLE INDEX FOR THE LAST IDENTIFIER 01302000 + OR RESERVED WORD SCANNED; 01303000 + ALPHA ARRAY ACCUM[0:10]; 01304000 + COMMENT ACCUM HOLDS THE ALPHA AND CHARACTER COUNT OF THE LAST 01305000 + SCANNED ITEM IN A FORM COMPATIBLE WITH ITS APPEARANCE 01306000 + IN INFO. THAT IS ACCUM[1] = 00NAAAAA, ACCUM[I] , I> 1, 01307000 + HAS ANY ADDITIONAL CHARACTERS. ACCUM[0] IS USED FOR 01308000 + THE ELBAT WORD BY THE ENTER ROUTINES; 01309000 ARRAY STACKHEAD[0:125]; 01310000 COMMENT STACKHEAD[N] CONTAINS AN INDEX INTO INFO GIVING THE TOP 01311000 - ITEM IN THE N-TH STACK; 01312000 -INTEGER COUNT; 01313000 - COMMENT COUNT CONTAINS THE NUMBER OF CHARACTERS OF THE LAST ITEM 01314000 - SCANNED; 01315000 -ALPHA Q; 01316000 - COMMENT Q CONTAINS ACCUM[1] FOR THE LAST IDENTIFIER OR RESERVED 01317000 + ITEM IN THE N-TH STACK; 01312000 + INTEGER COUNT; 01313000 + COMMENT COUNT CONTAINS THE NUMBER OF CHARACTORS OF THE LAST ITEM 01314000 + SCANNED; 01315000 + ALPHA Q; 01316000 + COMMENT Q CONTAINS ACCUM[1] FOR THE LAST IDENTIFIER OR RESERVED 01317000 WORD SCANNED; 01318000 -ARRAY ELBAT[0:75]; INTEGER I, NXTELBT; 01319000 - COMMENT ELBAT IS AN ARRAY HOLDING ELBAT WORDS FOR RECENTLY SCANNED 01320000 - QUANTITIES. THE TABLE ROUTINE MAINTAINS THIS ARRAY. 01321000 - (ELBAT IS TABLE SPELLED BACKWARDS.) THE TABLE ROUTINE 01322000 - GUARANTIES THAT ELBAT ALWAYS CONTAINS THE ELBAT WORDS 01323000 - FOR THE LAST 10 QUANTITIES SCANNED. NXTELBT IS AN INDEX 01324000 - POINTING TO TE NEXT AVAILABLE WORD IN ELBAT. I IS AN 01325000 - INDEX USED BY THE REST OF THE COMPILER TO FETCH THINGS 01326000 - FROM ELBAT. I IS ALSO MAINTAINED BY THE TABLE ROUTINE; 01327000 -INTEGER ELCLASS; 01328000 - COMMENT ELCLASS USUALLY CONTAINS ELBAT[I].CLASS; 01329000 -INTEGER FCR, NCR, LCR,TLCR,CLCR; 01330000 -INTEGER MAXTLCR; 01331000 - COMMENT FCR CONTAINS ABSOLUTE ADDRESS OF THE FIRST CHARACTER OF 01332000 - THE CARD IMAGE CURRENTLY BEING SCANNED, NCR THE ADDRESS 01333000 - OF THE NEXT CHARACTER TO BE SCANNED, AND LCR THE LAST 01334000 - CHARACTOR IN THE TAPE AND CARD BUFFERS. MAXTLCR 01335000 - IS THE MAXIMUM OF TLCR WHEN THE INPUT IS BLOCKED; 01336000 + ARRAY ELBAT[0:75]; INTEGER I, NXTELBT; 01319000 + COMMENT ELBAT IS AN ARRAY HOLDING ELBAT WORDS FOR RECENTLY SCANNED 01320000 + QUANTITIES. THE TABLE ROUTINE MAINTAINS THIS ARRAY. 01321000 + (ELBAT IS TABLE SPELLED BACKWARDS.) THE TABLE ROUTINE 01322000 + GUARANTIES THAT ELBAT ALWAYS CONTAINS THE ELBAT WORDS 01323000 + FOR THE LAST 10 QUANTITIES SCANNED. NXTELBT IS AN INDEX 01324000 + POINTING TO THE NEXT AVAILABLE WORD IN ELBAT. I IS AN 01325000 + INDEX USED BY THE REST OF THE COMPILER TO FETCH THINGS 01326000 + FROM ELBAT. I IS ALSO MAINTAINED BY THE TABLE ROUTINE; 01327000 + INTEGER ELCLASS; 01328000 + COMMENT ELCLASS USUALLY CONTAINS ELBAT[I].CLASS; 01329000 + INTEGER FCR, NCR, LCR,TLCR,CLCR; 01330000 + INTEGER MAXTLCR; 01331000 + COMMENT FCR CONTAINS ABSOLUTE ADDRESS OF THE FIRST CHARACTOR OF 01332000 + THE CARD IMAGE CURRENTLY BEING SCANNED, NCR THE ADDRESS 01333000 + OF THE NEXT CHARACTOR TO BE SCANNED, AND LCR THE LAST 01334000 + CHARACTOR (COLUMN 73). TLCR AND CLCR CONTAIN ADDRESS OF 01335000 + THE LAST CHARACTER IN THE TAPE AND CARD BUFFERS. MAXTLCR 01336000 + IS THE MAXIMUM OF TLCR WHEN THE INPUT IS BLOCKED; 01337000 ARRAY TEN[-46:69]; 01340000 - DEFINE PRTBASE=129#,PRTOP=896#; COMMENT PAGE AND TOP OF PRT; 01341000 -ARRAY PRT[PRTBASE:PRTOP]; 01342000 -INTEGER DISKADR,CORADR; COMMENT GLOBALS FOR PROGDESCBLOK; 01343000 + 01341000 + DEFINE PRTBASE=129#,PRTOP=896#; COMMENT PAGE AND TOP OF PRT; 01342000 +ARRAY PRT[PRTBASE:PRTOP]; 01343000 +INTEGER DISKADR,CORADR; COMMENT GLOBALS FOR PROGDESCBLDR; 01344000 INTEGER SGAVL;COMMENT NEXT AVAILABLE SEGMENT NUMBER; 01369000 INTEGER SGNO;COMMENT THIS IS THE CURRENT SEGMENT NUMBER; 01370000 ARRAY COP,WOP[0:127]; 01371000 @@ -814,71 +816,71 @@ INTEGER SGNO;COMMENT THIS IS THE CURRENT SEGMENT NUMBER; 01370000 AS SPECIFIED BY "L". 01373000 IF THE DEBUGTOG IS TRUE COP AND WOP ARE FILLED WITH 01374000 THE BCD FOR THE OPERATORS,OTHERWISE THEY ARE NOT USED; 01375000 -REAL LASTENTRY ; 01376000 - COMMENT LASTENTRY IS USED BY EMITNUM AND CONSTANTCLEAN. IT POINTS 01377000 - INTO INFO[0,*] AT THE NEXT AVAILABLE CELL FOR CONSTANTS; 01378000 -BOOLEAN MRCLEAN; 01379000 - COMMENT NO CONSTANCLEAN ACTION TAKES PLACE WHILE MRCLEAN IS 01380000 - FALSE, THIS FEATURE IS USED BY BLOCK BECAUSE OF THE 01381000 - POSSIBILITY THE CONSTANTCLEAN WILL USE INFO[NEXTINFO] 01382000 - DURING AN ARRAY DECLARATION ; 01383000 -REAL GT1,T2,GT3,GT4,GT5; 01384000 -INTEGER GTI1; 01384500 - COMMENT THESE VARIABLES ARE USED FOR TEMPORARY STORAGE; 01385000 -INTEGER RESULT; 01386000 - COMMENT THIS VARIABLE IS USED FOR A DUAL PURPOSE BY THE TABLE 01387000 - ROUTINE AND THE SCANNER. THE TABLE ROUTINE USES THIS 01388000 - VARIABLE TO SPECIFY SCANNER OPERATIONS AND THE SCANNER 01389000 - USES IT TO INFORM THE TABLE ROUTINE OF THE ACTION TAKEN; 01390000 -INTEGER LASTUSED; 01391000 - COMMENT LASTUSED IS A VARIABLE THAT CONTROLS THE ACTION OF 01392000 - READCARD, THE ROUTINE WHICH READS CARDS AND INITIALIZES 01393000 - OR PREPARES THE CARD FOR THE SCANNER. 01394000 - LASTUSED LAST CARD READ FROM 01394500 - -------- ------------------- 01394600 - 1 CARD READER ONLY, NO TAPE 01395000 - 2 CARD READER, TAPE AND CARD MERGE 01396000 - 3 TAPE, TAPE AND CARD MERGE 01397000 - 4 INITIALIZATION ONLY, CARD ONLY. 01398000 -; 01398300 -BOOLEAN LINKTOG; 01399000 - COMMENT LINKTOG IS FALSE IF THE LAST THING EMITTED IS A LINK, 01400000 - OTHERWIDE IT IS TRUE; 01401000 -INTEGER LEVEL,FRSTLEVEL,SUBLEVEL,MODE; 01402000 - COMMENT THESE VARIABLES ARE MAINTAINED BY THE BLOCK ROUTINE TO KEEP 01403000 - TRACK OF LEVELS OF DEFINITION. LEVEL GIVES THE DEPTH OF 01404000 - NESTING IN DEFINITION, WHERE EACH BLOCK AND EACH PROCEDURE 01405000 - GIVES RISE TO A NEW LEVEL. SUBLEVEL GIVES THE LEVEL OF 01406000 - THE PARAMETERS OF THE PROCEDURE CURRENTLY BEING COMPILED. 01407000 - FRSTLEVEL IS THE LEVEL OF THE PARAMETERS OF THE MOST 01408000 - GLOBAL OF THE PROCEDURES CURRENTLY BEING COMPILED. MODE 01409000 - IS THE CURRENT DEPTH OF THE PROCEDURE IN WHICH WE ARE 01410000 - NESTED (AT COMPILE TIME); 01411000 -BOOLEAN ERRORTOG; 01412000 - COMMENT ERRORTOG IS TRUE IF MESSAGES ARE CURRENTLY ACCEPTABLE TO THE 01413000 - ERROR ROUTINES, ERRORCOUNT IS THE COUNT OF ERROR MESSAGES;01414000 + REAL LASTENTRY ; 01376000 + COMMENT LASTENTRY IS USED BY EMITNUM AND CONSTANTCLEAN. IT POINTS 01377000 + INTO INFO[0,*] AT THE NEXT AVAILABLE CELL FOR CONSTANTS; 01378000 + BOOLEAN MRCLEAN ; 01379000 + COMMENT NO CONSTANTCLEAN ACTION TAKES PLACE WHILE MRCLEAN IS 01380000 + FALSE. THIS FEATURE IS USED BY BLOCK BECAUSE OF THE 01381000 + POSSIBILITY THAT CONSTANTCLEAN WILL USE INFO[NEXTINFO] 01382000 + DURING AN ARRAY DECLARATION ; 01383000 + REAL GT1,GT2,GT3,GT4,GT5; 01384000 + INTEGER GTI1; 01384500 + COMMENT THESE VARIABLES ARE USED FOR TEMPORARY STORAGE; 01385000 + INTEGER RESULT; 01386000 + COMMENT THIS VARIABLE IS USED FOR A DUAL PURPOSE BY THE TABLE 01387000 + ROUTINE AND THE SCANNER. THE TABLE ROUTINE USES THIS 01388000 + VARIABLE TO SPECIFY SCANNER OPERATIONS AND THE SCANNER 01389000 + USES IT TO INFORM THE TABLE ROUTINE OF THE ACTION TAKEN; 01390000 + INTEGER LASTUSED; 01391000 + COMMENT LASTUSED IS A VARIABLE THAT CONTROLS THE ACTION OF 01392000 + READACARD, THE ROUTINE WHICH READS CARDS AND INITIALIZES 01393000 + OR PREPARES THE CARD FOR THE SCANNER. 01394000 + LASTUSED LAST CARD READ FROM 01394500 + -------- ------------------- 01394600 + 1 CARD READER ONLY, NO TAPE. 01395000 + 2 CARD READER, TAPE AND CARD MERGE. 01396000 + 3 TAPE, TAPE AND CARD MERGE. 01397000 + 4 INITIALIZATION ONLY, CARD ONLY. 01398000 + ; 01398300 + BOOLEAN LINKTOG; 01399000 + COMMENT LINKTOG IS FALSE IF THE LAST THING EMITTED IS A LINK, 01400000 + OTHERWISE IT IS TRUE; 01401000 + INTEGER LEVEL,FRSTLEVEL,SUBLEVEL,MODE; 01402000 + COMMENT THESE VARIABLES ARE MAINTAINED BY THE BLOCK ROUTINE TO KEEP 01403000 + TRACK OF LEVELS OF DEFINITION. LEVEL GIVES THE DEPTH OF 01404000 + NESTING IN DEFINITION, WHERE EACH BLOCK AND EACH PROCEDURE01405000 + GIVES RISE TO A NEW LEVEL. SUBLEVEL GIVES THE LEVEL OF 01406000 + THE PARAMETERS OF THE PROCEDURE CURRENTLY BEING COMPILED. 01407000 + FRSTLEVEL IS THE LEVEL OF THE PARAMETERS OF THE MOST 01408000 + GLOBAL OF THE PROCEDURES CURRENTLY BEING COMPILED. MODE 01409000 + IS THE CURRENT DEPTH OF THE PROCEDURE IN WHICH WE ARE 01410000 + NESTED (AT COMPILE TIME); 01411000 + BOOLEAN ERRORTOG; 01412000 + COMMENT ERRORTOG IS TRUE IF MESSAGES ARE CURRENTLY ACCEPTABLE TO THE01413000 + ERROR ROUTINES. ERRORCOUNT IS THE COUNT OF ERROR MSSGS; 01414000 BOOLEAN ENDTOG; COMMENT ENDTOG TELLS THE TABLE TO ALLOW 01415000 COMMENT TO BE PASSED BACK TO COMPOUNDTAIL; 01416000 -BOOLEAN STREAMTOG; 01417000 - COMMENT STREAMTOG IS TRUE IF WE ARE COMPILING A STREAM STATEMENT. IT01418000 - IS USED TO CONTROL COMPOUNDTAIL; 01419000 -DEFINE FS = 1#, FP = 2#, FL = 3#, FR=4#; 01420000 - COMMENT THESE DEFINES ARE USED WHEN CALLING THE VARIABLE ROUTINE. 01421000 - THEIR PURPOSES IS TO TELL VARIABLE WHO IS CALLING. 01422000 - THEIR MEANING IS: 01423000 - FS MEANS FROM STATEMENT, 01424000 - FP MEANS FROM PRIMARY, 01425000 - FL MEANS FROM LIST, 01426000 - FR MEANS FROM FOR; 01427000 -INTEGER L; 01428000 - COMMENT L IS THE LOCATION OF THE NEXT SYLLABLE TO BE EMITTED; 01429000 -DEFINE BLOCKCTR = 16#, JUNK = 17 #, XITR = 18 #, LSTRTN = 19#; 01430000 -DEFINE ATYPE =3#, BTYPE=ATYPE#,DTYPE=ATYPE#; 01452000 -BOOLEAN TB1; 01457000 - COMMENT TB1 IS A TEMPORARY BOOLEAN VARIABLE; 01458000 -INTEGER JUMPCTR; 01459000 + BOOLEAN STREAMTOG; 01417000 + COMMENT STREAMTOG IS TRUE IF WE ARE COMPILING STREAM STATEMENT. IT 01418000 + IS USED TO CONTROL COMPOUNDTAIL; 01419000 + DEFINE FS = 1#, FP = 2#, FL = 3#, FR=4#; 01420000 + COMMENT THESE DEFINES ARE USED WHEN CALLING THE VARIABLE ROUTINE. 01421000 + THEIR PURPOSES IS TO TELL VARIABLE WHO IS CALLING. 01422000 + THEIR MEANING IS: 01423000 + FS MEANS FROM STATEMENT, 01424000 + FP MEANS FROM PRIMARY, 01425000 + FL MEANS FROM LIST, 01426000 + FR MEANS FROM FOR; 01427000 + INTEGER L; 01428000 + COMMENT L IS THE LOCATION OF THE NEXT SYLLABLE TO BE EMITTED; 01429000 + DEFINE BLOCKCTR = 16#, JUNK = 17 #, XITR = 18 #, LSTRTN = 19#; 01430000 + DEFINE ATYPE =3#, BTYPE=ATYPE#,DTYPE=ATYPE#; 01452000 + BOOLEAN TB1; 01457000 + COMMENT TB1 IS A TEMPORARY BOOLEAN VARIABLE; 01458000 + INTEGER JUMPCTR; 01459000 COMMENT JUMPCTR IS A VARIABLE USED FOR COMMUNICATION BETWEEN BLOCK 01460000 - AND GENGO. IT GIVES HIGHEST LEVEL TO WHICH JUMP HAS 01461000 + AND GENGO. IT GIVES HIGHEST LEVEL TO WHICH A JUMP HAS 01461000 BEEN MADE FROM WITHIN A THE PRESENTLY BEING COMPILED 01462000 SEGMENT. THE BLOCK COMPILES CODE TO INCREMENT AND DECRE- 01463000 MENT THE BLOCKCTR ON THE BASIS OF JUMPCTR AT COMPLETION 01464000 @@ -889,44 +891,44 @@ INTEGER JUMPCTR; 01459000 01469000 01470000 REAL STLB; 01471000 - COMMENT STLB IS USED BY VARIABLE AND ACTULAPARAPART TO COMMUNICATE 01472000 + COMMENT STLB IS USED BY VARIABLE AND ACTUALPARAPART TO COMMUNICATE 01472000 THE LOWER BOUND INFORMATION FOR THE LAST DIMENSION OF THE 01473000 ARRAY INVOLVED IN A ROW DESIGNATOR. THE FORMAT OF THE 01474000 INFORMATION IS THAT OF INFO. STLB IS ALSO SOMETIMES USED 01475000 FOR TEMPORARY STORAGE; 01476000 -DEFINE BUMPL = L+L+2#; 01477000 +DEFINE BUMPL = L~L+2#; 01477000 COMMENT BUMPL IS USED MOSTLY TO PREPARE A FORWARD JUMP; 01478000 DEFINE IDMAX = LABELID#; 01479000 COMMENT IDMAX IS THE MAXIMUM CLASS NUMBER FOR IDENTIFIERS; 01480000 INTEGER DEFINECTR,DEFINEINDEX; 01481000 REAL JOINFO, COMMENT POINTS TO PSEUDO LABEL FOR JUMP OUTS; 01482000 LPRT, COMMENT SHOWS LOCATION OF THE LAST LABEL IN THE PRT ; 01483000 - NEXTLEVEL, COMMENT COUNTS NESTING FOR GO AND JUMP OUTS; 01484000 + NESTLEVEL, COMMENT COUNTS NESTING FOR GO TO AND JUMP OUTS; 01484000 JUMPLEVEL; COMMENT NUMBER OF LEVELS TO BE JUMPED OUT; 01485000 -COMMENT THE REALS ABOVE ARE FOR STREAM STATEMENT; 01486000 -ARRAY MACRO[0:35]; 01487000 + COMMENT THE REALS ABOVE ARE FOR STREAM STATEMENT; 01486000 + ARRAY MACRO[0:35]; 01487000 COMMENT MACRO IS FILLED WITH SYLLABLES FOR STREAM STATEMENT; 01488000 -REAL P, COMMENT CONTAINS NUMBER OF FORMATS FOR STREAM PROCS; 01489000 - Z; COMMENT CONTAINS 1ST WORD OF INFO FOR STREAM FUNCTIONS; 01490000 +REAL P, COMMENT CONTAINS NUMBER OF FORMALS FOR STREAM PROCS; 01489000 + Z; COMMENT CONTAINS 1ST WORD OF INFO FOR STREAM FUNCTIONS; 01490000 ARRAY NEWTAPBUF[0:9]; 01490510 SAVE ARRAY DEFINEARRAY[0:23]; 01491000 COMMENT THESE VARIABLES ARE USED TO CONTROL ACTION OF THE DEFINE. 01492000 - DEFINECTR COUNTS DEPTH OF NESTING OF DEFINE=# PAIRS. 01493000 + DEFINECTR COUNTS DEPTH OF NESTING OF DEFINE-# PAIRS. 01493000 THE CROSSHATCH PART OF THE TABLE ROUTINE USES DEFINECTR 01494000 TO DETERMINE THE MEANING OF A CROSSHATCH. DEFINEINDEX IS 01495000 THE NEXT AVAILABLE CELL IN THE DEFINEARRAY. THE DEFINE- 01496000 ARRAY HOLDS THE ALPHA OF THE DEFINE BEING RECREATED AND 01497000 THE PREVIOUS VALUES OF LASTUSED, LCR, AND NCR; 01498000 -INTEGER BEGINCTR; 01499000 - COMMENT BEGINCTR GIVES THE NUMBER OF UNMATCHED BEGINS. IT IS USED 01500000 - FOR ERROR CONTROL ONLY; 01501000 + INTEGER BEGINCTR; 01499000 + COMMENT BEGINCTR GIVES THE NUMBER OF UNMATCHED BEGINS. IT IS USED01500000 + FOR ERROR CONTROL ONLY; 01501000 INTEGER DIALA,DIALB; 01502000 COMMENT THESE VARIABLES GIVE THE LAST VALUE TO WHICH A AND B WERE 01503000 DIALED. THIS GIVES SOME LOCAL OPTIMIZATION. EMITD 01504000 - WORRIES ABOUT THIS. OTHER ROUTINES CAUSE A LOSS OF MEMORY 01505000 + WORRIES ABOUT THIS. OTHER ROUTINES CAUSE A LOSS OF MEMORY01505000 BY SETTING DIALA AND DIALB TO ZERO; 01506000 -BOOLEAN RRB1; COMMENT RRB1--RRBN ARE BOOLEAN VARIABLES THAT SERVE THE 01522000 - SAME FUNCTION AS RR1--RRN FOR REAL VARIABLES. SEE 01523000 +BOOLEAN RRB1; COMMENT RRB1---RRBN ARE BOOLEAN VARIABLES THAT SERVE THE 01522000 + SAME FUNCTION AS RR1---RRN FOR REAL VARIABLES. SEE 01523000 COMMENT AT RR1; 01524000 BOOLEAN RRB2; COMMENT SEE COMMENT AT RRB1 DECLARATION; 01525000 DEFINE ARRAYMONFILE = [27:11]#; COMMENT ARRAYMONFILE IS THE DEFINE FOR 01526000 @@ -948,7 +950,7 @@ DEFINE SWITMONFILE = [13:11]#; COMMENT SWITMONFILE DESIGNATES THE BIT 01539000 ADDRESS FOR LABELS; 01542000 DEFINE FUNCMONFILE = [27:11]#; COMMENT FUNCMONFILE DESIGNATES THE BIT 01543000 POSITION IN THE FIRST WORD OF ADDITIONAL 01544000 - INFO THAT CONTAINS THE MONITOR ILE 01545000 + INFO THAT CONTAINS THE MONITOR FILE 01545000 ADDRESS FOR LABELS; 01546000 DEFINE DUMPEE = [2:11]#; COMMENT THE DUMPEE FIELD IN THE FIRST 01547000 ADDITIONAL WORD OF INFO FOR LABELS CONTAINS 01548000 @@ -958,27 +960,27 @@ DEFINE DUMPEE = [2:11]#; COMMENT THE DUMPEE FIELD IN THE FIRST 01547000 DEFINE DUMPOR = [24:11]#; COMMENT THE DUMPOR FIELD IN THE FIRST 01552000 ADDITIONAL WORD OF INFO FOR LABELS CONTAINS 01553000 THE ADDRESS OF THE ROUTINE THAT IS GENERATED 01554000 - FROM THE DUMP DECLARATION THAT IN TURN CALLS 01555000 + FROM THE DUMP DECLARATION THAT IN TURN CALLS 01555000 THE PRINTI ROUTINE; 01556000 DEFINE SUBOP=48#; 01556500 - FILE OUT CODE DISK SERIAL(1:1)(1,1023); 01556900 + FILE OUT CODE DISK SERIAL[1:1](1,1023); 01556900 FILE IN CARD(RR1,10,RR2); 01557000 FILE OUT LINE DISK SERIAL[20:2400](RR3,15,RR4,SAVE 10); 01558000 ARRAY LIN[0:20]; COMMENT PRINT OUTPUT BUILT IN LIN; 01559010 INTEGER DA; 01559020 SAVE FILE OUT NEWTAPE DISK SERIAL[20:2400](RR5,RR6,RR7,SAVE 1); 01560000 -FILE IN TAPE "OCRDING"(2,RR8,RR9); 01561000 +FILE IN TAPE "OCRDIMG"(2,RR8,RR9); 01561000 SAVE ARRAY CBUFF,TBUFF[0:9]; % INPUT BUFFERS. 01561056 FILE OUT CODISK DISK SERIAL [20:600] (2,30,300); 01561300 FILE OUT DISK DISK [1:2100] "MCP""DISK"(3,30,300,SAVE 99); 01561400 -DEFINE MCPTYPE = 63#, 01561410 - DCINTYPE = 62#, 01561420 - TSSINTYPE = 61#; 01561430 +DEFINE MCPTYPE = 63#, 01561410 + DCINTYPE = 62#, 01561420 + TSSINTYPE = 61#; 01561430 COMMENT ESPOL CODE FILES ARE UNIQUELY TYPED IN THEIR FILE 01561440 HEADERS. HEADER[4],[36:6] IS THE FIELD USED TO CONTAIN 01561450 THE TYPE; 01561460 FILE OUT DECK 0 (2,10); 01561500 -FIEL STUFF DISK SERIAL[20:150](2,10,30,SAVE 15); 01561600 +FILE STUFF DISK SERIAL[20:150](2,10,30,SAVE 15); 01561600 ARRAY TWXA[0:16]; 01561700 REAL C; 01562000 COMMENT C CONTAINS ACTUAL VALUE OF LAST CONSTANT SCANNED; 01563000 @@ -1003,20 +1005,20 @@ ARRAY TWXA[0:16]; 01561700 01581000 01582000 01583000 -REAL FOULED; 01583100 + REAL FOULED; 01583100 01584000 -BOOLEAN 01585000 - FUNCTOG, COMMENT TELLS WHETHER PROCEDURE BEING DECLARED IS A 01586000 - FUNCTION; 01587000 - P2, COMMENT GENERALLY TELLS WHETHER OWN WAS SEEN; 01588000 - P3, COMMENT TELLS WHETHER SAVE WAS SEEN; 01589000 - VONF, COMMENT VALUE OR OWN FIELD OF ELBAT WORD; 01590000 - FORMALF, COMMENT FORMAL FIELD OF ELBAT WORD; 01591000 - PTOG, COMMENT TELLS THAT FORMAL PARAPART IS BEING PROCESSED;01592000 + BOOLEAN 01585000 + FUNCTOG, COMMENT TELLS WHETHER PROCEDURE BEING DECLARED IS A 01586000 + FUNCTION; 01587000 + P2, COMMENT GENERALY TELLS WHETHER OWN WAS SEEN; 01588000 + P3, COMMENT TELLS WHETHER SAVE WAS SEEN; 01589000 + VONF, COMMENT VALUE OR OWN FIELD OF ELBAT WORD; 01590000 + FORMALF, COMMENT FORMAL FIELD OF ELBAT WORD; 01591000 + PTOG, COMMENT TELLS THAT FORMAL PARAPART IS BEING PROCESSD;01592000 SPECTOG, 01593000 - STOPENTRY, COMMENT THIS MAKES THE ENTRY PROCEDURE ENTER ONLY 01594000 - ONE IO AND THEN EXIT; 01595000 - AJUMP; COMMENT TELL WHETHER A JUMP IS HANGING; 01596000 + STOPENTRY, COMMENT THIS MAKES THE ENTRY PROCEDURE ENTER ONLY 01594000 + ONE ID AND THEN EIXT; 01595000 + AJUMP; COMMENT TELLS WHETHER A JUMP IS HANGING; 01596000 BOOLEAN STOPDEFINE; 01597000 INTEGER MAXSAVE; 01598000 COMMENT THIS CONTAINS THE SIZE OF THE MAXIMUM SAVE ARRAY 01599000 @@ -1027,26 +1029,26 @@ INTEGER MAXSAVE; 01598000 ADDRSF, COMMENT ADDRESS IN LOW ORDER 11 BITS; 01604000 LEVELF, COMMENT LVL IN LOW ORDER 5 BITS; 01605000 LINKF, COMMENT LINK IN LOW ORDER 13 BITS; 01606000 - INCRF, COMMENT INCR ON LOW ORDER 8 BITS; 01607000 + INCRF, COMMENT INCR CN LOW ORDER 8 BITS; 01607000 PROINFO, COMMENT CONTAINS ELBAT WORD FOR PROCEDURE BEING 01608000 DECLARED; 01609000 G, COMMENT GLOBAL TEMPORARY FOR BLOCK; 01610000 TYPEV, COMMENT USED TO CARRY CLASS OF IDENTIFIER 01611000 BEING DECLARED; 01612000 - PROADD, COMMENT CONTAINS ADDRESS OF PROCEDURE BEING 01613000 + PROADO, COMMENT CONTAINS ADDRESS OF PROCEDURE BEING 01613000 DECLARED; 01614000 MARK , COMMENT CONTAINS INDEX INTO INFO WHERE FIRST WORD 01615000 OF ADDITIONAL INFO FOR A PROCEDURE ENTRY; 01616000 PJ, COMMENT FORMAL PARAMETER COUNTER; 01617000 J, COMMENT ARRAY COUNTER; 01618000 LASTINFO, COMMENT INDEX TO LAST ENTRY IN INFO; 01619000 - NEXTINFO, COMMENT INDEX FOR NEXT ENTRY IN INFO; 01620000 + NEXTINFO, COMMENT INDEX FOR NEXT ENTRYIN INFO; 01620000 FIRSTX, COMMENT RELATIVE ADD OF FIRST EXECUTABLE CODE 01621000 IN BLOCK,INITIALIZED TO 4095 EACH TIME; 01622000 SAVEL; COMMENT SAVE LOCATION FOR FIXUPS IN BLOCK; 01623000 INTEGER NCII; COMMENT THIS CONTAINS THE COUNT OF CONSTANTS 01624000 ENTERED IN INFO AT ANY GIVEN TIME; 01625000 -PROCEDURE UNHOOK; FORWARD; 01626000 +PROCEDURE UNHOOK;FORWARD; 01626000 PROCEDURE MAKEUPACCUM;FORWARD; 01627000 DEFINE PURPT=[4:8]#,SECRET=2#; 01628000 COMMENT THESE DEFINES GIVE THE NAMES OF THE WORD MODE OPERATORS. THE 01629000 @@ -1069,7 +1071,7 @@ DEFINE PURPT=[4:8]#,SECRET=2#; 01628000 LBU = 790#, COMMENT(6131) 7.4.5.7 GO BACKWARD (WORD); 01646000 GEQ = 21#, COMMENT (0125) 7.4.4.2 GREATER THAN OR EQUAL TO; 01647000 LFC = 294#, COMMENT(2231) 7.4.5.8 GO FORWARD CONDITIONAL; 01648000 - LFU = 806#, COMMENT(6231) 7.4.5.6 GO FORWARD (WORD); 01649000 + LFU = 806#, COMMENT(6231) 7.4.5.6 GO FORWARD (WORD); 01649000 GTR = 37#, COMMENT (0225) 7.4.4.1 GREATER THAN; 01650000 IDV = 384#, COMMENT (3001) 7.4.2.5 INTEGER DIVIDE; 01651000 INX = 24#, COMMENT (0141) 7.4.10.2 INDEX; 01652000 @@ -1082,12 +1084,12 @@ DEFINE PURPT=[4:8]#,SECRET=2#; 01628000 LOR = 35#, COMMENT (0215) 7.4.3.2 LOGICAL OR; 01659000 LQV = 131#, COMMENT (1015) 7.4.3.3 LOGICAL EQUIVALENCE; 01660000 LSS = 549#, COMMENT (4225) 7.4.4.5 LESS THAN; 01661000 - MKS = 72#, COMMENT (0441) 7.4.8.1 MARK STACK 01662000 - MUL = 64#, COMMENT (0401) 7.4.2.3 MULTIPLY 01663000 + MKS = 72#, COMMENT (0441) 7.4.8.1 MARK STACK; 01662000 + MUL = 64#, COMMENT (0401) 7.4.2.3 MULTIPLY; 01663000 NEQ = 69#, COMMENT (0425) 7.4.4.6 NOT EQUAL TO; 01664000 NOP = 11#, COMMENT (0055) 7.4.7.1 NO OPERATION; 01665000 PRL = 18#, COMMENT (0111) 7.4.10.6 PROGRAM RELEASE; 01666000 - PRTE= 12#, COMMENT (0061) 7.4.10.0 EXTEND PRT; 01667000 + PRTE= 12#, COMMENT (0061) 7.4.10.9 EXTEND PRT; 01667000 RDV = 896#, COMMENT (7001) 7.4.2.6 REMAINDER DIVIDE; 01668000 RTN = 39#, COMMENT (0235) 7.4.8.3 RETURN NORMAL; 01669000 RTS = 167#, COMMENT (1235) 7.4.8.4 RETURN SPECIAL; 01670000 @@ -1096,16 +1098,16 @@ DEFINE PURPT=[4:8]#,SECRET=2#; 01628000 STD = 68#, COMMENT (0421) 7.4.6.1 STORE DESTRUCTIVE; 01673000 SUB = 48#, COMMENT (0301) 7.4.2.2 SUBTRACT; 01674000 XCH = 133#, COMMENT (1025) 7.4.9.1 EXCHANGE; 01675000 - XIT = 71#, COMMENT (0435) 7.4.9.2 EXIT; 01676000 + XIT = 71#, COMMENT (0435) 7.4.8.2 EXIT; 01676000 ZP1 = 322#, COMMENT (2411) 7.4.10.8 CONDITIONAL HALT; 01677000 SCI =1003#, COMMENT (7655) SCAN OUT INITIALIZE; 01677050 SAN =1004#, COMMENT (7661) SYSTEM ATTENTION NEEDED 01677100 SCS =1019#, COMMENT (7755) SCAN OUT STOP; 01677150 -COMMENT THESE DEFINES ARE USED BY EMITD; 01678000 -DEFINE 01679000 + COMMENT THESE DEFINES ARE USED BY EMITD; 01678000 + DEFINE 01679000 DIA = 45#, COMMENT (XX55) 7.4.7.1 DIAL A; 01680000 DIB = 49#, COMMENT (XX61) 7.4.7.2 DIAL B; 01681000 - TRB = 53#, COMMENT (XX65) 7.4.7.3 TRANSFER BITS; 01682000 + TRB = 53#; COMMENT (XX65) 7.4.7.3 TRANSFER BITS; 01682000 REAL MAXSTACK,STACKCTR; 01683000 INTEGER MAXROW; 01684000 COMMENT THIS CONTAINS THE MAXIMUM ROW SIZE OF ALL NON-SAVE 01685000 @@ -1113,7 +1115,7 @@ INTEGER MAXROW; 01684000 INTEGER SEGSIZEMAX; COMMENT CONTAINS MAX SEGMENT SIZE; 01687000 INTEGER F; 01688000 REAL NLO,NHI,TLO,THI; 01689000 - BOOLEAN OPTOG; 01690000 + BOOLEAN DPTOG; 01690000 COMMENT THE ABOVE THINGS ARE TEMP STORAGE FOR DOUBLE NOS;01691000 BOOLEAN DOLLAR2TOG; 01691500 DEFINE FZERO=896#; 01692000 @@ -1135,15 +1137,15 @@ ARRAY GTA1[0:10]; 01697000 DEFINE ALPHASIZE = [12:6]#; COMMENT ALPHASIZE IS THE DEFINE FOR THE BIT01707000 POSITION IN THE SECOND WORD OF INFO WHICH 01708000 CONTAINS THE LENGTH OF ALPHA; 01709000 -DEFINE EDOCINDEX = L.[36:3],L.[39:7]#; COMMENT EDOCINDEX S THE WORD 01710000 +DEFINE EDOCINDEX = L.[36:3],L.[39:7]#; COMMENT EDOCINDEX IS THE WORD 01710000 PORTION OF L SPLIT INTO A ROW AND01711000 COLUMN INDEX FOR EDOC; 01712000 DEFINE CPLUS1 = 769#; COMMENT SEE COMMENT AT CPLUS2 DEFINE; 01713000 DEFINE CPLUS2 = 770#; COMMENT CPLUS1 AND CPLUS2 ARE EXPLICIT CONSTANTS 01714000 - USED IN THE GENERATION OF CRELATIVE CODE; 01715000 + USED IN THE GENERATION OF C-RELATIVE CODE; 01715000 PROCEDURE FLAG(ERRNUM); VALUE ERRNUM; INTEGER ERRNUM; FORWARD; 01716000 - ALPHA PROCEDURE B2D(B); VALUE B;REAL B; FORWARD; 01717000 - REAL PROCEDURE TAKE(W) VALUE W; INTEGER W; FORWARD; 01717700 + ALPHA PROCEDURE B2D(B); VALUE B; REAL B; FORWARD; 01717000 + REAL PROCEDURE TAKE(W); VALUE W; INTEGER W; FORWARD; 01717700 BOOLEAN MACROID; 01717800 REAL PROCEDURE FIXDEFINEINFO(T); VALUE T; REAL T; FORWARD; 01717900 PROCEDURE ERR (ERRNUM); VALUE ERRNUM; INTEGER ERRNUM; FORWARD; 01718000 @@ -1174,24 +1176,24 @@ L: 01764000 IF SC="%" THEN GO TO EXIT; % STILL NO RANGE. 01764500 IF SC=""" THEN 01765000 BEGIN 01766000 - SI:=SI+1; DI:=LCR; DS:=1 LIT """; % STOPPER FOR SCAN 01767000 + SI:=SI+1; DI:=LCR; DS:=1 LIT"""; % STOPPER FOR SCAN 01767000 NCR:=SI; % TEMP. STORAGE, SINCE NCR IS "LOCAL" TO GETVOID. 01768000 8(IF SC=""" THEN JUMP OUT ELSE 01769000 - BEGIN TALLY:=TALLY+1; SI:=SI+1; END); 01770000 + BEGIN TALLY:=TALLY+1; SI:=SI+1 END); 01770000 END 01771000 ELSE BEGIN 01772000 NCR:=SI; % TEMP. STORAGE, SINCE NCR IS "LOCAL" TO GETVOID. 01773000 - DI:=LCR; DS:=1 LIT " "; % STOPPER FOR SCAN 01774000 + DI:=LCR; DS:=1 LIT" "; % STOPPER FOR SCAN 01774000 8(IF SC=" " THEN JUMP OUT ELSE 01775000 BEGIN TALLY:=TALLY+1; SI:=SI+1 END); 01776000 END; 01777000 - SI:=NCR; DI:=VP; DI:=CI+8; % RESTORE POINTERS. 01780000 - N:= TALLY; DI~DI-N; CD:=N CHR; 01781000 + SI:=NCR; DI:=VP; DI:=DI+8; % RESTORE POINTERS. 01780000 + N:=TALLY; DI:=DI-N; DS:=N CHR; 01781000 EXIT: 01782000 END OF GETVOID; 01784000 -REAL VOIDCR,VOIDPLACE,VOIDTCR,VOIDPLACE; 01785000 +REAL VOIDCR,VOIDPLACE,VOIDTCR,VOIDTPLACE; 01785000 FORMAT 01800000 - BUG(X24,4(A4,X2)); 01802000 + BUG(X24,4(A4,X2)); 01802000 PROCEDURE DATIME; 01820000 BEGIN 01821000 INTEGER H,MIN,Q; ALPHA N1,N2; 01822000 @@ -1205,33 +1207,33 @@ PROCEDURE DATIME; 01820000 WRITE(LINE, 01829000 9 OR ENDTOG THEN GO COMPLETE; 02680000 - NHI:NLO:=0; 02681000 + NHI:=NLO:=0; 02681000 C:=0; GO FPART; 02682000 ATSIGN: 02683000 - RESULT:=0; SCANNER % SCAN PAST "@". 02684000 - IF CONT>17 THEN GO ARGH; % 16 CHARS, + "@". 02685000 + RESULT:=0; SCANNER; % SCAN PAST "@". 02684000 + IF COUNT>17 THEN GO ARGH; % 16 CHARS, + "@". 02685000 IF OCTIZE(ACCUM[1],C,17-COUNT,COUNT-1) THEN 02686000 BEGIN Q:=ACCUM[1]; FLAG(521); GO SCANAGAIN END; 02686500 GO NUMBEREND; 02687000 @@ -2100,7 +2102,7 @@ MOVEIT: 02704000 T.CLASS:=STRNGCON; 02705100 GO COMPLETE; 02705200 COMMENT CROSSHATCH HANDLES TWO SITUATIONS: 02707000 - THE CROSSHATCH AT THE END OF DEFINE DECLARATIONS AND 02708000 + THE CROSSHATCH AT END OF DEFINE DECLARATIONS AND 02708000 THE CROSSHATCH AT END OF ALPHA REPRESENTING DEFINED IDS. 02709000 THE TWO CASES ARE PROCESSED DIFFERENTLY. THE FIRST CASE 02710000 MERELY PLACES THE CROSSHATCH IN ELBAT. THE SECOND CASE 02711000 @@ -2126,10 +2128,10 @@ DOLLAR: COMMENT THIS CODE HANDLES CONTROL CARDS; 02729000 DOLLARCARD; 02730000 PERCENT: IF NCR ! FCR THEN READACARD; 02731000 GO SCANAGAIN; 02737000 -COMMENT: MOST PERCENT DIGNS ACTING AT END OF CARD SENTINELS GET TO 02738000 - PERCENT. PERCENT READS THE NEXT CARD AND STARTS OVER. A 02739000 +COMMENT MOST PERCENT SIGNS ACTING AS END OF CARD SENTINELS GET TO 02738000 + PERCENT. PERCENT READS THE NEXT CARD AND STARTS OVER. A 02739000 SIDE EFFECT IS THAT ALL CHARACTERS ON A CARD ARE IGNORED 02740000 - AFTER A FREE PERCENT SIGN (ONE NOT EMBEDDED IN A STRING OR 02741000 + AFTER A FREE PERCENT SIGN (ONE NOT IMBEDDED IN A STRING OR 02741000 COMMENT); 02742000 COMMENT MIGHT BE FUNNY COMMA - HANDLE HERE; 02743000 RTPAREN: RESULT:=7; SCANNER; 02744000 @@ -2137,13 +2139,13 @@ RTPAREN: RESULT:=7; SCANNER; 02744000 BEGIN 02746000 RESULT:=0; SCANNER; 02747000 DO BEGIN 02748000 - RESULT:=5; SCANNER; 02749000 + RESULT:=5; SCANNER 02749000 END UNTIL EXAMIN(NCR) = """; 02750000 RESULT:=0; SCANNER; 02751000 RESULT:=7; SCANNER; 02752000 - IF EXAMIN(NCR) ! "(" THEN GO TO ARGH; 02753000 - RESULT:=0; SCANNER; Q:=ACCUM[1]; 02754000 - T:=SPACIAL[24]; 02755000 + IF EXAMIN(NCR) ! "(" THEN GO ARGH; 02753000 + RESULT:=0; SCANNER; Q:=ACCUM[1]; 02754000 + T:=SPECIAL[24] 02755000 END; 02756000 RESULT:=2; GO COMPLETE; 02757000 IPART: TCOUNT:=0; C:=CONVERT; 02758000 @@ -2151,17 +2153,17 @@ IPART: TCOUNT:=0; C:=CONVERT; 02758000 % IF DEFINECTR=0 THEN 02760000 % IF (C=3 OR C=4) AND EXAMIN(NCR)=""" THEN %OCTAL OR HEX STRING.02761000 % BEGIN INTEGER SIZ; 02762000 -% RESULT:=5; SCANNER; %SKIP QUOTE. 02763000 -% COUNT:=Q; 02764000 +% RESULT:=5; SCANNER; % SKIP QUOTE. 02763000 +% COUNT:=0; 02764000 % DO BEGIN 02765000 % RESULT:=5; SCANNER; 02766000 % IF COUNT > SIZ:=48 DIV C THEN % > 1 WORD LONG. 02767000 -% BEGIN ERR(420); GO SCANAGAIN END; 02768000 +% BEGIN ERR(520); GO SCANAGAIN END; 02768000 % END UNTIL EXAMIN(NCR)="""; 02769000 % Q:=ACCUM[1]; RESULT:=5; SCANNER; COUNT:=COUNT-1; 02770000 -% IF C=3 THEN % OCTAL STRING 02771000 +% IF C=3 THEN % OCTAL STRING. 02771000 % IF OCTIZE(ACCUM[1],ACCUM[4],16-COUNT,COUNT) THEN 02772000 -% FLAG(521) % NON OCTAL CHARACATER IN STRING. 02773000 +% FLAG(521) % NON OCTAL CHARACTER IN STRING. 02773000 % ELSE ELSE IF HEXIZE(ACCUM[1],ACCUM[4],12-COUNT,COUNT) THEN 02774000 % FLAG(521); % NON CHARACTER IN HEX STRING. 02775000 % IF COUNT < SIZ THEN 02776000 @@ -2177,7 +2179,7 @@ IPART: TCOUNT:=0; C:=CONVERT; 02758000 IF EXAMIN(NCR)="." THEN 02786000 BEGIN 02787000 RESULT:=0; SCANNER; 02788000 - C:=1.0X C; 02789000 + C:=1.0| C; 02789000 FPART: TCOUNT:=COUNT; 02790000 IF EXAMIN(NCR){9 THEN 02791000 BEGIN 02792000 @@ -2208,25 +2210,25 @@ EPART: TCOUNT:=COUNT; 02810000 END; 02818000 RESULT:=0; SCANNER; 02820000 Q:=ACCUM[1]; 02822000 - IF GT1:=T:=(IF T="-"THEN -CONVERT ELSE CONVERT){46 OR 02823000 - T>69 THEN FLAG(269); 02824000 + IF GT1:=T:=(IF T="-"THEN -CONVERT ELSE CONVERT)<-46 OR 02823000 + T>69 THEN FLAG(269) 02824000 ELSE BEGIN 02825000 T:=TEN[T]; 02826000 IF ABS(0&C[42:3:6]&C[1:2:1]+0&T[42:3:6]&T[1:2:1] 02827000 - +12) >63 THEN FLAG(269) 02828000 + + 12) >63 THEN FLAG(269) 02828000 ELSE IF DPTOG THEN 02829000 IF GT1<0 THEN 02830000 BEGIN 02831000 GT1:=-GT1; 02832000 - DOUBLE(NHI.NLO,TEN[GT1 MOD 12],0,/,:=,NHI,NLO); 02833000 + DOUBLE(NHI,NLO,TEN[GT1 MOD 12],0,/,:=,NHI,NLO); 02833000 FOR GT2:=12 STEP 12 UNTIL GT1 DO 02834000 DOUBLE(NHI,NLO,TEN[12],0,/,:=,NHI,NLO); 02835000 - END; 02836000 + END 02836000 ELSE BEGIN 02837000 - DOUBLE(NHI,NLO,TEN[GT1 MOD 12],0,*,:=,NHI,NLO); 02838000 + DOUBLE(NHI,NLO,TEN[GT1 MOD 12],0,|,:=,NHI,NLO); 02838000 FOR GT2:=12 STEP 12 UNTIL GT1 DO 02839000 - DOUBLE( NHI,NLO,TEN[12],0,*,:=,NHI,NLO); 02840000 - END; 02841000 + DOUBLE( NHI,NLO,TEN[12],0,|,:=,NHI,NLO); 02840000 + END 02841000 ELSE C:=C|T; 02842000 END; 02843000 END; 02844000 @@ -2241,12 +2243,12 @@ FINISHNUMBER: 02847000 COMMENT THE CODE BETWEEN IDENT AND COMPOST DOES A LOOKUP IN INFO. 02853000 IF QUANTITY IS NOT FOUND THE ELBAT WORD EXPECTS TO BE 02854000 ZERO. THE SCRAMBLE FOR APPROPRIATE STACK IS FIRST THING 02855000 - TO BE DONE, THEN THE LOOP BETWEEN COMPOST AND 02859000 + TO BE DONE. THEN THE LOOP BETWEEN COMPOST AND 02859000 ROSE IS ENTERED. THE LAST THING DONE FOR ANY 02860000 IDENTIFIER WHICH IS FOUND IS TO STUFF THE LOCATION 02861000 - OF THE ELBATWORD IN INFO INTO THE LINFILED. THIS 02862000 + OF THE ELBATWORD IN INFO INTO THE LINK FIELD. THIS 02862000 ALLOWS REFERENCE BACK TO INFO FOR ADDITIONAL DATA, 02863000 - SHOULD THIS BE REQUIRED. 02864000 + SHOULD THIS BE REQUIRED. ; 02864000 IDENT: T:=STACKHEAD[SCRAM:=(Q:=ACCUM[1])MOD 125]; 02865000 ROSE: GT1:=T.LINKR; 02875000 IF(GT2:=T.LINKC)+GT1= 0 THEN 02876000 @@ -2254,7 +2256,7 @@ ROSE: GT1:=T.LINKR; 02875000 IF T = INFO[GT1, GT2] THEN BEGIN 02877010 T:=0; GO TO COMPLETE END; 02877020 T:=INFO[GT1,GT2]; 02878000 - IF INFO[GT1,GT2+1]&0[1:1:11] ! 0 THEN GOTO ROSE; 02879000 + IF INFO[GT1,GT2+1]&0[1:1:11] ! Q THEN GO ROSE; 02879000 IF COUNT { 5 THEN GO COMPOST ; 02880000 IF NOT EQUAL(COUNT-5,ACCUM[2],INFO[GT1,GT2+2])THEN GO ROSE; 02881000 COMPOST: T:=T>1[35:43:5]>2[40:40:8]; 02882000 @@ -2262,15 +2264,15 @@ COMMENT CHECK HERE FOR COMMENTS AND DEFINED IDS; 02883000 IF NOT ENDTOG THEN 02884000 BEGIN 02885000 IF GT1:=T.CLASS = COMMENTV THEN 02886000 - BEGIN 02887000 - WHILE EXAMIN(NCR) ! ";" DO 02888000 - BEGIN RESULT:=6; COUNT:=0; SCANNER; END; 02889000 - RESULT:=0;SCANNER;GO SCANAGAIN 02890000 - END; 02891000 + BEGIN 02887000 + WHILE EXAMIN(NCR) ! ";" DO 02888000 + BEGIN RESULT:=6; COUNT:=0; SCANNER END; 02889000 + RESULT:=0;SCANNER;GO SCANAGAIN 02890000 + END 02891000 END; 02892000 IF STOPDEFINE THEN GO COMPLETE; 02893000 IF GT1 ! DEFINEDID THEN GO COMPLETE; 02894000 -COMMENT SETUP FOR DEFINED IDS - SEE DEFINEGEN FOR MORE DETALS; 02895000 +COMMENT SETUP FOR DEFINED IDS - SEE DEFINEGEN FOR MORE DETAILS; 02895000 IF T.ADDRESS!0 THEN T:=FIXDEFINEINFO(T); 02896000 IF DEFINEINDEX = 24 THEN 02898000 BEGIN FLAG(139);GO ARGH END; 02899000 @@ -2284,36 +2286,36 @@ COMMENT SETUP FOR DEFINED IDS - SEE DEFINEGEN FOR MORE DETALS; 02895000 COMPLETE: 02909000 ELBAT[NXTELBT]:=T; 02910000 STOPDEFINE:=FALSE; COMMENT ALLOW DEFINES AGAIN; 02911000 - IF NXTELBT:=NXTELBT + 1 > 74 THEN 02912000 + IF NXTELBT:=NXTELBT+1 > 74 THEN 02912000 IF NOT MACROID THEN 02913000 BEGIN 02914000 -COMMENT ELBAT IS FUL: ADJUST IT; 02915000 +COMMENT ELBAT IS FULL: ADJUST IT; 02915000 MOVE(10,ELBAT[65],ELBAT); 02916000 I:=I-65; P:=P-65; NXTELBT:=10; 02917000 END 02918000 END; 02919000 - IF TABLE:=ELBAT[P].CLASS ! COMMENTV THEN 02920000 + IF TABLE:=ELBAT[P].CLASS = COMMENTV THEN 02920000 BEGIN 02921000 COMMENT SPECIAL HANDLING OF CONSTANTS FOR SAKE OF FOR STATEMENTS; 02922000 C:=INFO[0,ELBAT[P].ADDRESS]; 02923000 ELBAT[P].CLASS:=TABLE:=NONLITNO 02924000 END; 02925000 - STOPDEFINE:=FALSE; COMMENT ALLOW DEFINE; 02926000 + STOPDEFINE:=FALSE; COMMENT ALLOW DEFINE; 02926000 END TABLE ; 02927000 -BOOLEAN PROCEDURE BOOLPRIM; FORWARD; 02955000 -PROCEDURE BOOLCOMP(B); BOOLEAN B; FORWARD; 02955500 -INTEGER PROCEDURE NEXT; 02956000 - BEGIN 02956500 - LABEL EXIT; 02957000 - INTEGER T; 02957500 - DEFINE ERROR = BEGIN FLAG(603); GO EXIT END#; 02958000 - SKAN; 02958500 - IF RESULT=3 THEN ERROR; % NUMBERS NOT ALLOWED. 02959000 - IF RESULT=2 THEN % SPECIAL CHARACTER. 02959500 - BEGIN 02960000 - T:=IF Q="1,0000" OR Q="1%0000" THEN 20 % FAKE OUT BOOLEXP. 02960500 - ELSE ((T:=Q.[18:6]-2) & T[42:41:3]); 02961000 - IF T=11 OR T=19 OR T=20 THEN BATMAN:=SPACIAL[T] % (,),OR ; 02961500 + BOOLEAN PROCEDURE BOOLPRIM; FORWARD; 02955000 + PROCEDURE BOOLCOMP(B); BOOLEAN B; FORWARD; 02955500 + INTEGER PROCEDURE NEXT; 02956000 + BEGIN 02956500 + LABEL EXIT; 02957000 + INTEGER T; 02957500 + DEFINE ERROR = BEGIN FLAG(603); GO EXIT END#; 02958000 + SKAN; 02958500 + IF RESULT=3 THEN ERROR; % NUMBERS NOT ALLOWED. 02959000 + IF RESULT=2 THEN % SPECIAL CHARACTER. 02959500 + BEGIN 02960000 + T:=IF Q="1,0000" OR Q="1%0000" THEN 20 % FAKE OUT BOOLEXP.02960500 + ELSE ((T:=Q.[18:6]-2) & T[42:41:3]); 02961000 + IF T=11 OR T=19 OR T=20 THEN BATMAN:=SPECIAL[T] % (,),OR ;02961500 ELSE FLAG(603); 02962000 GO EXIT 02962500 END SPECIAL CHARACTERS; 02963000 @@ -2324,7 +2326,7 @@ COMMENT LOOK FOR BOOLEAN OPERATORS, THEN OPTIONS; 02963500 ELSE IF Q="3EQV00" THEN EQVOP 02965500 ELSE 0; 02966000 IF T!0 THEN BATMAN.CLASS:=T 02966500 - ELSE BATMAN:=1 & BOOID[2:17] & REAL(FINDOPTION(1))[1:1]; % OPTION. 02967000 + ELSE BATMAN:=1 & BOOID[2:7] & REAL(FINDOPTION(1))[1:1]; % OPTION. 02967000 EXIT: 02967500 NEXT:=MYCLASS:=BATMAN.CLASS; 02968000 END NEXT; 02968500 @@ -2333,7 +2335,7 @@ EXIT: 02967500 BOOLEAN B; 02970000 B:=BOOLPRIM; 02970500 WHILE MYCLASS}EQVOP AND MYCLASS{ANDOP DO BOOLCOMP(B); 02971000 - BOOLEXP:=B; 02971500 + BOOLEXP:=B 02971500 END BOOLEXP; 02972000 BOOLEAN PROCEDURE BOOLPRIM; 02972500 BEGIN 02973000 @@ -2348,7 +2350,7 @@ EXIT: 02967500 ELSE IF MYCLASS!BOOID THEN FLAG(601) 02977500 ELSE B:=BATMAN<0; 02978000 IF KNOT THEN B:=NOT B; SKIPIT; 02978500 - BOOLPRIM:=B; 02979000 + BOOLPRIM:=B 02979000 END BOOLPRIM; 02979500 PROCEDURE BOOLCOMP(B); BOOLEAN B; 02980000 BEGIN 02980500 @@ -2362,8 +2364,8 @@ EXIT: 02967500 ELSE (B EQV T); 02984500 END BOOLCOMP; 02985000 % 02985500 -COMMENT################################################################ 02986000 - FORWARD DECLARATIONS 02986500 +COMMENT#################################################################02986000 + FORWARD DECLARATIONS 02986500 #######################################################################;02987000 % 02987500 PROCEDURE AEXP; FORWARD; 03001000 @@ -2380,9 +2382,9 @@ COMMENT################################################################ 02986000 INTEGER PROCEDURE IFEXP; FORWARD; 03013000 PROCEDURE PARSE; FORWARD; 03014000 PROCEDURE DOT; FORWARD; 03015000 - PROCEDURE IFCLAUSE; FORWARD; 03018000 - INTEGER PROCEDURE GET(SYLLABLE);VALUE SYLLABLE; REAL SYLLABLE; FORWARD;03019000 - INTEGER PROCEDURE GNAT(L); VALUE L; REAL L; FORWARD; 03020000 + PROCEDURE IFCLAUSE; FORWARD; 03018000 +INTEGER PROCEDURE GET(SYLLABLE);VALUE SYLLABLE; REAL SYLLABLE; FORWARD; 03019000 +INTEGER PROCEDURE GNAT(L); VALUE L; REAL L; FORWARD; 03020000 PROCEDURE PANA; FORWARD; 03021000 PROCEDURE IFSTMT; FORWARD; 03022000 PROCEDURE GOGEN(LABELBAT,BRANCHTYPE); 03023000 @@ -2396,7 +2398,7 @@ COMMENT################################################################ 02986000 PROCEDURE CONSTANTCLEAN; FORWARD; 03034000 PROCEDURE SCATTERELBAT; FORWARD; 03035000 PROCEDURE EMITB(BRANCH,FROM,TOWARDS); VALUE BRANCH,FROM,TOWARDS; 03036000 - INTEGER BRANCH,FROM TOWARDS; FORWARD; 03037000 + INTEGER BRANCH,FROM,TOWARDS; FORWARD; 03037000 PROCEDURE VARIABLE(FROM); INTEGER FROM; FORWARD; 03038000 PROCEDURE IMPFUN; FORWARD; 03039000 PROCEDURE RIGHT(L); VALUE L; INTEGER L; FORWARD; 03039500 @@ -2416,9 +2418,9 @@ INTEGER PROCEDURE GETSPACE(S,L); VALUE S,L; 03051000 INTEGER L; BOOLEAN S; FORWARD; 03051001 PROCEDURE FORSTMT; FORWARD; 03052000 REAL PROCEDURE TAKE(INDEX); VALUE INDEX; INTEGER INDEX; FORWARD; 03053000 -PROCEDURE E; FORWARD; 03054000 +PROCEDURE E; FORWARD; 03054000 PROCEDURE ENTRY(TYPE); VALUE TYPE;REAL TYPE; FORWARD; 03055000 -PROCEDURE PUTNBUMP(P1); VALUE P1; REAL P1; FORWARD; 03057000 +PROCEDURE PUTNBUMP(P1); VALUE P1; REAL P1; FORWARD; 03057000 PROCEDURE JUMPCHKNX; FORWARD; 03058000 PROCEDURE JUMPCHKX; FORWARD; 03059000 PROCEDURE DBLSTMT; FORWARD; 03060000 @@ -2439,215 +2441,215 @@ REAL TYPEV;FORWARD; 03071000 COMMENT EMITO EMIT AN OPERATOR; 04005000 PROCEDURE EMITO(OPERATOR); VALUE OPERATOR; INTEGER OPERATOR; 04006000 EMIT(1&OPERATOR[36:38:10]); 04007000 - COMMENT EMITC IS PRIMARILY FOR USE BY STRMSTMT TO EMIT CHARCTER MODE 04008000 + COMMENT EMITC IS PRIMARILY FOR USE BY STRMSTMT TO EMIT CHARACTOR MODE 04008000 OPERATORS. HOWEVER IT ALSO HANDLES DIA, DIB, AND TRB; 04009000 PROCEDURE EMITC(REPEAT,OPERATOR); VALUE REPEAT,OPERATOR; 04010000 INTEGER REPEAT,OPERATOR; 04011000 BEGIN 04012000 IF REPEAT}64 THEN FLAG(268); 04013000 EMIT(OPERATOR&REPEAT[36:42:6]) END EMITC; 04014000 - COMMENT EMITV EMITS AN OPERAND CALL. IF THE ADDRES SIS FOR THE SECOND 04015000 + COMMENT EMITV EMITS AN OPERAND CALL. IF THE ADDRESS IS FOR THE SECOND 04015000 HALF OF THE PRT, THEN IT ALSO EMITS A PRTE; 04016000 PROCEDURE EMITV(ADDRESS); VALUE ADDRESS; INTEGER ADDRESS; 04017000 - BEGIN IF ADDRESS > 1023 THEN EMITO(PRTE); 04018000 - EMIT(2 & ADDRESS [36:38:10]) END EMITV; 04019000 -COMMENT EMITN EMITS A DESCRIPTOR CALL. IF THE ADDDRESS IS FOR THE 04020000 - SECOND HALF OF THE PRT, THEN IT ALSO EMITS A PRTE; 04021000 -PROCEDURE EMITN(ADDRESS); VALUE ADDRESS; INTEGER ADDRESS ; 04022000 - BEGIN IF ADDRESS > 1023 THEN EMITO(PRTE); 04023000 - EMIT(3 & ADDRESS[36:38:10]) END EMITN; 04024000 -COMMENT EMITPAIR EMITS A LITC ADDRESS FOLLOWED BY OPERATOR. IF THE 04025000 - ADDRESS IS FOR THE SECOND HALF OF THE PRT, THEN IT ALSO 04026000 - EMITS PRTE; 04027000 -PROCEDURE EMITPAIR(ADDRESS,OPERATOR); 04028000 - VALUE ADDRESS,OPERATOR; 04029000 - INTEGER ADDRESS,OPERATOR; 04030000 - BEGIN 04031000 - EMITL(ADDRESS); 04032000 - IF ADDRESS > 1023 THEN EMITO(PRTE); 04033000 - EMITO(OPERATOR) END EMITPAIR; 04034000 - COMMENT ADJUST ADJUST L TO THE BEGINNING OF A WORD AND FILLS IN THE 04080000 - INTERVENING SPACE WITH NOPS. IT CHECKS STREAMTOG TO DECIDE04081000 + BEGIN IF ADDRESS > 1023 THEN EMITO(PRTE); 04018000 + EMIT(2 & ADDRESS [36:38:10]) END EMITV; 04019000 + COMMENT EMITN EMITS A DESCRIPTOR CALL. IF THE ADDRESS IS FOR THE 04020000 + SECOND HALF OF THE PRT, THEN IT ALSO EMITS A PRTE; 04021000 + PROCEDURE EMITN(ADDRESS); VALUE ADDRESS; INTEGER ADDRESS; 04022000 + BEGIN IF ADDRESS > 1023 THEN EMITO(PRTE); 04023000 + EMIT(3 & ADDRESS [36:38:10]) END EMITN; 04024000 + COMMENT EMITPAIR EMITS A LITC ADDRESS FOLLOWED BY OPERATOR. IF THE 04025000 + ADDRESS IS FOR THE SECOND HALF OF THE PRT, THEN IT ALSO 04026000 + EMITS PRTE; 04027000 + PROCEDURE EMITPAIR(ADDRESS,OPERATOR); 04028000 + VALUE ADDRESS,OPERATOR; 04029000 + INTEGER ADDRESS,OPERATOR; 04030000 + BEGIN 04031000 + EMITL(ADDRESS); 04032000 + IF ADDRESS > 1023 THEN EMITO(PRTE); 04033000 + EMITO(OPERATOR) END EMITPAIR; 04034000 + COMMENT ADJUST ADJUST L TO THE BEGINING OF A WORD AND FILLS IN THE 04080000 + INERVENING SPACE WITH NOPS. IT CHECKS STREAMTOG TO DECIDE 04081000 WHICH SORT OF NOP TO USE; 04082000 PROCEDURE ADJUST; 04083000 - BEGIN 04084000 + BEGIN 04084000 04085000 WHILE L.[46:2]!0 DO EMIT(45); 04086000 END ADJUST; 04087000 PROCEDURE EMITLNG; 04098000 BEGIN LABEL E; 04099000 IF NOT LINKTOG THEN GO TO E; 04100000 - COMMENT GO TO E IF LAST THIN IS A LINK; 04101000 + COMMENT GO TO E IF LAST THING IS A LINK; 04101000 IF GET(L) ! 0 THEN GO TO E; 04102000 COMMENT EITHER LAST EXPRESSION WAS CONDITIONAL OR THERE IS NO 04103000 LNG OR RELATIONAL OPERATOR; 04104000 - IF GT1 ~ GET(L-1) == 77 THEN L ~ L - 1; 04105000 + IF GT1 ~ GET(L-1) = 77 THEN L ~ L-1 04105000 COMMENT LAST THING WAS AN LNG - SO CANCEL IT; 04106000 ELSE IF GT1.[42:6]=21 AND GT1.[37:2]=0 THEN % AHA 04107000 COMMENT LAST THING WAS A RELATIONAL; 04108000 - BEGIN L~L-1; EMITO(REAL(BOOLEAN(GT1.[36:10]) EQV 04109000 - BOOLEAN(IF GT1.[40:2] = 0 THEN 511 ELSE 463))) 04110000 - COMMENT NEGATE THE RELATIONAL; END ELSE 04111000 - E: EMITO(LNG) END EMITLNG 04112000 - COMMENT EMITB EMITS A BRANCH OPERATOR AND ITS ASSOCIATED NUMBER; 04113000 -PROCEDURE EMITB(BRANCH,FROM,TOWARDS); 04114000 - VALUE BRANCH,FROM TOWARDS; 04115000 - INTEGER BRANCH,FROM,TOWARDS; 04116000 - BEGIN 04117000 - INTEGER TL; 04118000 - TL ~ L; 04119000 + BEGIN L~L-1; EMITO(REAL(BOOLEAN(GT1.[36:10]) EQV 04109000 + BOOLEAN(IF GT1.[40:2] = 0 THEN 511 ELSE 463))) 04110000 + COMMENT NEGATE THE RELATIONAL; END ELSE 04111000 + E: EMITO(LNG) END EMITLNG; 04112000 + COMMENT EMITB EMITS A BRANCH OPERATOR AND ITS ASSOCIATED NUMBER; 04113000 + PROCEDURE EMITB(BRANCH,FROM,TOWARDS); 04114000 + VALUE BRANCH,FROM,TOWARDS; 04115000 + INTEGER BRANCH,FROM,TOWARDS; 04116000 + BEGIN 04117000 + INTEGER TL; 04118000 + TL ~ L; 04119000 IF TOWARDS > FOULED THEN FOULED ~ TOWARDS; 04119500 - L ~ FROM - 2; 04120000 - GT1 ~ TOWARDS-FROM; 04120100 - IF TOWARDS.[46:2] = 0 04120200 - THEN BEGIN 04120300 - BRANCH ~ BRANCH&1[39:47:1]; 04120400 - GT1 ~ TOWARDS DIV 4 - (FROM-1) DIV 4 END; 04120500 - EMITNUM(ABS(GT1)); 04121000 - EMITO(BRANCH&(REAL(GT1} 0)+1)[42:46:2]); 04122000 + L ~ FROM-2; 04120000 + GT1 ~ TOWARDS-FROM; 04120100 + IF TOWARDS.[46:2] = 0 04120200 + THEN BEGIN 04120300 + BRANCH ~ BRANCH&1[39:47:1]; 04120400 + GT1 ~ TOWARDS DIV 4 - (FROM-1) DIV 4 END; 04120500 + EMITNUM(ABS(GT1)); 04121000 + EMITO(BRANCH&(REAL(GT1} 0)+1)[42:46:2]); 04122000 04123000 - L ~ TL 04124000 - END EMITB; 04125000 - COMMENT DEBUGWORD FORMATS TWO FIELDS FOR DEBUGGING OUTPUT IN 04126000 - OCTAL, NAMELY : 04127000 - 1. 4 CHARACTERS FOR THE L REGISTER, 04128000 - 2.16 CHARACTERS FOR THE WORD BEING EMITTED. ; 04129000 -STREAM PROCEDURE DEBUGWORD( SEQ,CODE,FEIL); VALUE SEQ,CODE ; 04130000 - BEGIN 04131000 - DI~FEIL; SI~ LOC SEQ; SI~ SI+4; DS ~ 4 CHR; 04132000 - DS ~ 2 LIT" "; 04133000 - SI ~ LOC CODE ; 04134000 - 16( DS ~ 3 RESET; 3( IF SB THEN DS~SET ELSE 04135000 - DS ~ RESET ; SKIP 1 SB)); 04136000 - 29(DS ~ 2 LIT" " ); 04137000 - END ; 04138000 - COMMENT EMITWORD PLACES THE PARAMETER,"WORD",INTO EDOC. IF 04139000 - DEBUGGING IS REQUIRED, "L" AND "WORD" ARE OUPTUT ON 04140000 - THE PRINTER FILE IN OCTAL FORAMT. ; 04141000 + L ~ TL 04124000 + END EMITB; 04125000 + COMMENT DEBUGWORD FORMATS TWO FIELDS FOR DEBUGGING OUTPUT IN 04126000 + OCTAL, NAMELY : 04127000 + 1. 4 CHARACTERS FOR THE L REGISTER. 04128000 + 2.16 CHARACTERS FOR THE WORD BEING EMITTED. ; 04129000 + STREAM PROCEDURE DEBUGWORD( SEQ,CODE,FEIL); VALUE SEQ,CODE ; 04130000 + BEGIN 04131000 + DI~FEIL; SI~ LOC SEQ; SI~ SI+4; DS ~ 4 CHR; 04132000 + DS ~ 2 LIT" "; 04133000 + SI ~ LOC CODE ; 04134000 + 16( DS ~ 3 RESET; 3( IF SB THEN DS~SET ELSE 04135000 + DS ~ RESET ; SKIP 1 SB)); 04136000 + 29(DS ~ 2 LIT" " ); 04137000 + END ; 04138000 + COMMENT EMITWORD PLACES THE PARAMETER,"WORD",INTO EDOC. IF 04139000 + DEBUGGING IS REQUIRED, "L" AND "WORD" ARE OUTPUT ON 04140000 + THE PRINTER FILE IN OCTAL FORMAT. ; 04141000 PROCEDURE EMITWORD (WORD); VALUE WORD; REAL WORD; 04142000 - BEGIN 04143000 - ADJUST; 04144000 - IF L} 4088 THEN BEGIN ERR(200); L~0; END 04145000 - ELSE BEGIN 04146000 - MOVE(1,WORD, CODE(L DIV 4+1)); 04147000 - IF DEBUGTOG THEN 04148000 - BEGIN DEBUGWORD(B2D(L),WORD,LIN); 04149000 - WRITELINE END; 04150000 - FOULED ~ L ~ L+4; END 04151000 - END EMITWORD; 04152000 - COMMENT CONSTANTCLEAN IS CALLED AFTER AN UNCONDITIONAL BRANCH HAS 04153000 - BEEN EMITTED. IF ANY CONSTANTS HAVE BEEN ACCUMULATED BY 04154000 - EMITNUM IN INFO[0,*], CONSTANTCLEAN WILL FIX THE CHAIN 04155000 - OF C-RELATIVE OPDC S LEFT BY EMITNUM. IF C-RELATIVE 04156000 - ADDRESSING IS IMPOSSIBLE (E.E. THE ADDRESS 04157000 - IF GREATER THAN 127 WORDS) THEN THE CONSTANT ALONG WIHT 04158000 - THE 1ST LINK OF THE OPDC CHAIN IS ENTERED IN INFO. 04159000 - AT PURGE TIME THE REMAINING OPDC S ARE EMITTED WITH 04160000 - F -RELATIVE ADDRESSING AND CODE EMITTED TO STORE THE 04161000 - CONSTANTS INTO THE PROPER F-RELATIVE CELLS. ; 04162000 -PROCEDURE CONSTANTCLEAN ; 04163000 - IF MRCLEAN THEN 04164000 - BEGIN 04165000 - INTEGER J,TEMPL,D,LINK; 04166000 - BOOLEAN CREL; 04167000 - LABEL ALLTHU ; 04168000 + BEGIN 04143000 + ADJUST; 04144000 + IF L} 4088 THEN BEGIN ERR(200); L~0; END 04145000 + ELSE BEGIN 04146000 + MOVE(1,WORD, CODE(L DIV 4+1)); 04147000 + IF DEBUGTOG THEN 04148000 + BEGIN DEBUGWORD(B2D(L),WORD,LIN); 04149000 + WRITELINE END; 04150000 + FOULED ~ L ~ L+4; END 04151000 + END EMITWORD; 04152000 + COMMENT CONSTANTCLEAN IS CALLED AFTER AN UNCONDITIONAL BRANCH HAS 04153000 + BEEN EMITTED. IF ANY CONSTANTS HAVE BEEN ACCUMULATED BY 04154000 + EMITNUM IN INFO[0,*], CONSTANTCLEAN WILL FIX THE CHAIN 04155000 + OF C-RELATIVE OPDC S LEFT BY EMITNUM. IF C-RELATIVE 04156000 + ADDRESSING IS IMPOSSIBLE (I.E. THE ADDRESS 04157000 + IF GREATER THAN 127 WORDS) THEN THE CONSTANT ALONG WITH 04158000 + THE 1ST LINK OF THE OPDC CHAIN IS ENTERED IN INFO. 04159000 + AT PURGE TIME THE REMAINING OPDC S ARE EMITTED WITH 04160000 + F -RELATIVE ADDRESSING AND CODE EMITTED TO STORE THE 04161000 + CONSTANTS INTO THE PROPER F-RELATIVE CELLS. ; 04162000 + PROCEDURE CONSTANTCLEAN ; 04163000 + IF MRCLEAN THEN 04164000 + BEGIN 04165000 + INTEGER J,TEMPL,D,LINK; 04166000 + BOOLEAN CREL; 04167000 + LABEL ALLTHU ; 04168000 04169000 - FOR J ~ 1 STEP 2 UNTIL LASTENTRY DO 04170000 - BEGIN 04171000 - ADJUST; TEMPL~L; L~INFO[0,255-J+1); 04172000 - CREL ~ FALSE; 04173000 - DO BEGIN 04174000 - IF D~(TEMPL-L+3)DIV 4}128 THEN 04175000 - IF MODE ! 0 THEN 04175500 + FOR J ~ 1 STEP 2 UNTIL LASTENTRY DO 04170000 + BEGIN 04171000 + ADJUST; TEMPL~L; L~INFO[0,255-J+1]; 04172000 + CREL ~ FALSE; 04173000 + DO BEGIN 04174000 + IF D~(TEMPL-L+3)DIV 4}128 THEN 04175000 + IF MODE ! 0 THEN 04175500 BEGIN FLAG(50); GO TO ALLTHU END; 04176000 04177000 04178000 04179000 04180000 04181000 - LINK~GET(L); 04182000 - CREL ~ TRUE; 04183000 - IF MODE ! 0 THEN EMITV(D+/68) ELSE 04184000 - EMITV(REAL(TEMPL}2048)|1024+TEMPL DIV 4); 04184500 - END UNTIL L~ LINK = 4095 ; 04185000 - ALLTHU: L~ TEMPL; 04186000 - IF CREL THEN EMITWORD( INFO[0,255-J ]); 04187000 - END; 04188000 - LASTENTRY ~ 0; 04189000 - END ; 04190000 - COMMENT EMITNUM HANDLES THE EMISSION OF CODE FOR CONSTANTS,BOTH 04191000 - EXPLICIT AND IMPLICIT. IN EVERY CASE,EMITNUM WILL 04192000 - PRODUCE CODE TO GET THE DESIRED CONSTANT ON TOP OF 04193000 - THE STACK. IF THE NUMBER IS A LITERAL A SIMPLE LITC 04194000 - SYLLABLE IS PRODUCED. HOWEVER,NON-LITERALS ARE KEPT 04195000 - IN THE ZERO-TH ROW OF INFO WITH THE SYLLABLE 04196000 - POSITION,L. THE FIRST EMITNUM ON A PARTICULAR 04197000 - CONSTANT CASUES THE VALUES OF L AND THE CONSTANT 04198000 - TO BE STORED IN INFO[0,*] (NOTE:ITEMS ARE STORED 04199000 - IN REVERSE STARTING WITH INFO[0,255],ETC.). THEN 04200000 - ITS THE JOB OF CONSTANTCLEAN TO EMIT THE ACTUAL 04201000 - OPDC (SEE CONSTANTCLEAN PROCEDURE FOR DETAILS) ; 04202000 -PROCEDURE EMITNUM( C ); VALUE C; REAL C; 04203000 - BEGIN LABEL FINISHED,FOUND ; REAL N; 04204000 - IF C.[1:37]=0 THEN EMITL(C) 04205000 - ELSE 04206000 - BEGIN 04207000 - FOULED ~ L; 04207500 - FOR N ~ 1 STEP 2 UNTIL LASTENTRY DO 04208000 - IF INFO[0,255-N] = C THEN GO TO FOUND; 04209000 - INFO[0,255 -LASTENTRY] ~ L; 04210000 - INFO[9,255 -LASTENTRY-1]~ C ; 04211000 - EMITN(1023); 04212000 + LINK~GET(L); 04182000 + CREL ~ TRUE; 04183000 + IF MODE ! 0 THEN EMITV(D+768) ELSE 04184000 + EMITV(REAL(TEMPL}2048)|1024+TEMPL DIV 4); 04184500 + END UNTIL L~ LINK = 4095 ; 04185000 + ALLTHU: L ~ TEMPL; 04186000 + IF CREL THEN EMITWORD( INFO[0,255-J ]); 04187000 + END; 04188000 + LASTENTRY ~ 0; 04189000 + END ; 04190000 + COMMENT EMITNUM HANDLES THE EMISSION OF CODE FOR CONSTANTS,BOTH 04191000 + EXPLICIT AND IMPLICIT. IN EVERY CASE,EMITNUM WILL 04192000 + PRODUCE CODE TO GET THE DESIRED CONSTANT ON TOP OF 04193000 + THE STACK. IF THE NUMBER IS A LITERAL A SIMPLE LITC 04194000 + SYLLABLE IS PRODUCED. HOWEVER,NON-LITERALS ARE KEPT 04195000 + IN THE ZERO-TH ROW OF INFO WITH THE SYLLABLE 04196000 + POSITION,L. THE FIRST EMITNUM ON A PARTICULAR 04197000 + CONSTANT CAUSES THE VALUES OF L AND THE CONSTANT 04198000 + TO BE STORED IN INFO[0,*] (NOTE:ITEMS ARE STORED 04199000 + IN REVERSE STARTING WITH INFO[0,255],ETC.). THEN 04200000 + ITS THE JOB OF CONSTANTCLEAN TO EMIT THE ACTUAL 04201000 + OPDC (SEE CONSTANTCLEAN PROCEDURE FOR DETAILS) ; 04202000 + PROCEDURE EMITNUM( C ); VALUE C; REAL C; 04203000 + BEGIN LABEL FINISHED,FOUND ; REAL N; 04204000 + IF C.[1:37]=0 THEN EMITL(C) 04205000 + ELSE 04206000 + BEGIN 04207000 + FOULED ~ L; 04207500 + FOR N ~ 1 STEP 2 UNTIL LASTENTRY DO 04208000 + IF INFO[0,255-N] = C THEN GO TO FOUND ; 04209000 + INFO[0,255 -LASTENTRY] ~ L; 04210000 + INFO[0,255 -LASTENTRY-1]~ C ; 04211000 + EMITN(1023); 04212000 IF MODE=0 THEN EMITO(NOP); 04212100 - LINKTOG~FALSE; 04213000 - IF LASTENTRY ~ LASTENTRY+2 } 128 THEN 04214000 - BEGIN 04215000 - C ~ BUMPL; 04216000 - CONSTANTCLEAN; 04217000 - EMITB(BFW,C,L); 04218000 - END; 04219000 - GO TO FINISHED; 04220000 - FOUND: EMIT(INFO[0,255 -N+1]); 04221000 - LINKTOG~FALSE; 04222000 - INFO[0,255-N+1]~ L-1; 04223000 - IF MODE=0 THEN EMITO(NOP); 04223100 - END; 04224000 - FINISHED:END EMITNUM ; 04225000 - COMMENT SEARCH PERFORMS A BINARY SEARCH ON THE COP AND WOP 04226000 - ARRAYS. GIVEN THE OPERATOR BITS SEARCH YIELDS THE BCD 04227000 - MNEUMONIC FOR THAT OPERATOR. IF THE OPERATOR CANNOT 04228000 - BE FOUND SEARCH YIELDS BLANKS. 04229000 - NOTE: DIA,DIB,RTRB ARE RETURNED AS BLANKS. ; 04230000 -ALPHA PROCEDURE SEARCH (Q,KEY); VALUE KEY;; ARRAY Q[0]; REAL KEY ; 04231000 - BEGIN LABEL L; 04232000 - COMMENT GT1 AND GT2 ARE INITIALIZED ASSUMING THAT Q IS ORDERED 04233000 - BY PAIRS (ARGUMENT,FUNCTION,ARGUMENT,FUNCTION,ETC.) 04234000 - AND THAT THE FIRST ARGUMENT IS IN Q[4]. FURTHERMORE 04235000 - THE LENGTH OF Q IS 128. ; 04236000 - INTEGER N,I ; 04237000 - N ~ 64 ; 04238000 - FOR I ~ 66 STEP IF Q[I]1 THEN FILLIT(LIN,PORS,GS,0,INFO[N.LINKR,N.LINKC]) 05325470 ELSE FILLIT(LIN,PORS,GS,ABS(N),N); 05325480 IF NOHEADING THEN DATIME; WRITELINE; 05325490 @@ -3081,7 +3083,7 @@ ELSE FILLIT(LIN,PORS,GS,ABS(N),N); 05325480 COMMENT GETSPACE MAKES ASSIGNMENTS TO VARIABLES AND DESCRIPTORS IN 05326000 THE STACK AND PRT. PERMANENT TELLS WHETHER IT IS A 05327000 PERMANENTLY ASSIGNED CELL (ALWAYS IN PRT) OR NOT. NON 05328000 - PERMENENT CELLS ARE EITHER IN STACK OR PRT ACORDING TO 05329000 + PERMANENT CELLS ARE EITHER IN STACK OR PRT ACCORDING TO 05329000 MODE. CARE IS TAKEN TO REUSE NON PERMANENT PRT CELLS; 05330000 INTEGER PROCEDURE GETSPACE(PERMANENT,L); VALUE PERMANENT,L; 05331000 BOOLEAN PERMANENT; INTEGER L; 05333000 @@ -3089,8 +3091,8 @@ INTEGER PROCEDURE GETSPACE(PERMANENT,L); VALUE PERMANENT,L; 05331000 STREAM PROCEDURE DOIT(C,A,I,S); VALUE C,A; 05334100 BEGIN LOCAL N; 05334200 DI~S; DS~8 LIT" "; SI~S; DS~9 WDS; 05334300 - SI~I; SI~SI+2;DI~LOC N; DI~DI+7; DS~CHR; 05334400 - DI~S;SI~LOC C; 2(DS~4 DEC); 05334500 + SI~I; SI~SI+2; DI~LOC N; DI~DI+7; DS~CHR; 05334400 + DI~S; SI~LOC C; 2(DS~4 DEC); 05334500 SI~I; SI~SI+3; DS~N CHR; 05334600 END; 05334700 BOOLEAN M,Q; 05343000 @@ -3108,7 +3110,7 @@ IF NOT(STREAMTOG AND (LEVEL>2))THEN 05344400 ELSE 05344590 BEGIN GS~0;I~I-1 END; 05344600 IF STEPI!LITNO THEN FLAG(51); 05344610 - IF ELBAT[I],ADDRESS}512 THEN GS~1024; 05344615 + IF ELBAT[I].ADDRESS}512 THEN GS~1024; 05344615 GS~GS+ELBAT[I].ADDRESS 05344620 END 05344630 ELSE 05344640 @@ -3116,7 +3118,7 @@ IF NOT(STREAMTOG AND (LEVEL>2))THEN 05344400 GS~ELBAT[I].ADDRESS; 05344660 IF GS=0 THEN FLAG(51); 05344661 IF GS}FZERO AND GS{1023 THEN GS~-GS; 05344662 - IF STEPI!ADOP THEN I~I-1ELSE 05344670 + IF STEPI!ADOP THEN I~I-1 ELSE 05344670 BEGIN 05344680 STEPIT; 05344690 GS~ELBAT[I].ADDRESS+ 05344700 @@ -3138,47 +3140,47 @@ IF NOT(STREAMTOG AND (LEVEL>2))THEN 05344400 IF NOT M THEN 05350140 DOIT(LABELID,GS,INFO[(ELBAT[I]).LINKR, 05350160 (ELBAT[I].LINKC+1)],TWXA[0]) ELSE 05350180 - DOIT(KLASSF,GS,INFO[(LASTINFO+1),LINKR,(LASTINFO+1),LINKC]05350200 + DOIT(KLASSF,GS,INFO[(LASTINFO+1).LINKR,(LASTINFO+1).LINKC]05350200 ,TWXA[0]); WRITE(STUFF,10,TWXA[*]) END; END 05350300 ELSE BEGIN 05369000 IF STACKCTR > 767 THEN FLAG(149); 05370000 STACKCTR ~ (GS ~ STACKCTR)+1; Q ~ FALSE; 05371000 GO TO EXIT END; 05372000 - L2: IF GS } 512 THEN GS + GS+1024; 05373000 + L2: IF GS } 512 THEN GS ~ GS+1024; 05373000 Q ~ TRUE; 05374000 - EXIT: GETSPACE ~ GS; 05375000 - IF GS}NEXTCTR AND GS 1023 THEN GS ~ GS-1024; 05376000 - IF PRTOG THEN WRITEPRT(IF Q THEN "PRT " ELSE "STACK",L,B2D(GS)); 05376100 - END GETSPACE; 05378000 -REAL PROCEDURE DEPTH(I); VALUE I; REAL I; 05400000 - BEGIN REAL J,K,T,S,M; 05401000 - IF T~NESTPRT[I]<0 THEN 05402000 - BEGIN DEPTH~CALL[T.[22:13]-1].[35:13]; 05402100 - IF NESTPRT[I].[2:1]=0 THEN NESTCUR~NESTCUR+1; 05402200 - NESTPTR[I].[2:1]~1; 05402300 - END 05402400 - ELSE IF T.[9:13]!0 THEN DEPTH~T.[9:13] 05403000 - ELSE BEGIN M~0; NESTPRT[I]~-T; 05404000 - J~T.[22:13]; K~CALL[J-1].[22:13]; 05405000 - FOR J~J STEP 1 UNTIL K DO 05406000 - IF S~DEPTH(CALL[J])>M THEN M~S; 05407000 - M~DEPTH+M+CALL[T.[22:13]-1].[35:13]; 05409000 + IF PRTOG THEN WRITEPRT(IF Q THEN "PRT " ELSE "STACK",L,B2D(GS)); 05376100 + END GETSPACE; 05378000 + REAL PROCEDURE DEPTH(I); VALUE I; REAL I; 05400000 + BEGIN REAL J,K,T,S,M; 05401000 + IF T~NESTPRT[I]<0 THEN 05402000 + BEGIN DEPTH~CALL[T.[22:13]-1].[35:13]; 05402100 + IF NESTPRT[I].[2:1]=0 THEN NESTCUR~NESTCUR+1; 05402200 + NESTPRT[I].[2:1]~1; 05402300 + END 05402400 + ELSE IF T.[9:13]!0 THEN DEPTH~T.[9:13] 05403000 + ELSE BEGIN M~0; NESTPRT[I]~-T; 05404000 + J~T.[22:13]; K~CALL[J-1].[22:13]; 05405000 + FOR J~J STEP 1 UNTIL K DO 05406000 + IF S~DEPTH(CALL[J])>M THEN M~S; 05407000 + M~DEPTH~M+CALL[T.[22:13]-1].[35:13]; 05409000 IF NESTCUR!0 THEN 05409100 - IF NESTPTR[I].[2:1]=0 THEN ELSE 05409200 + IF NESTPRT[I].[2:1]=0 THEN ELSE 05409200 BEGIN T~T&M[9:35:13]; NESTCUR~NESTCUR-1 END 05409300 ELSE T~T&M[9:35:13]; 05409400 - NESTPTR[I]~T; 05409500 + NESTPRT[I]~T; 05409500 END; 05410000 END; 05411000 -PROCEDURE NESTSORT(L,U); VALUE L,U; REAL L,U; FORWARD; 05411100 -PROCEDURE SORTNEST; 05412000 - BEGIN ARRAY A[0:14]; 05413000 - REAL I,J,K,T; 05414000 - REAL P,Q; 05414100 + PROCEDURE NESTSORT(L,U); VALUE L,U; REAL L,U; FORWARD; 05411100 + PROCEDURE SORTNEST; 05412000 + BEGIN ARRAY A[0:14]; 05413000 + REAL I,J,K,T; 05414000 + REAL P,Q; 05414100 STREAM PROCEDURE NESTFORM(I,N,L,A) VALUE I,N; 05415000 BEGIN LOCAL S; 05416000 - D1~A; 15(DS~8 LIT " "); 05417000 + DI~A; 15(DS~8 LIT " "); 05417000 DI~LOC S; DI~DI+7; SI~L; SI~SI+10; DS~CHR; 05418000 DI~A; DI~DI+I; A~DI; 05419000 DI~DI+6; DS~ S CHR; 05420000 @@ -3186,356 +3188,356 @@ PROCEDURE SORTNEST; 05412000 DI~A; DS~3 FILL; 05422000 END; 05423000 FOR I~PRTBASE STEP 1 UNTIL PRTOP DO 05424000 - IF NESTPTR[I]!0 THEN 05425000 - BEGIN SORTPRT[Q]~1;Q~Q+1 END; 05425100 + IF NESTPRT[I]!0 THEN 05425000 + BEGIN SORTPRT[Q]~I; Q~Q+1 END; 05425100 NESTSORT(0,Q~Q-1); 05425200 FOR P~0 STEP 1 UNTIL Q DO 05425300 - BEGIN I~SORTPRT[P]; T~NESTPTR[I]; 05425400 - NESTFORM(0,DEPTH(I),INFO[T.LINKR,T.LINKC),A); 05426000 + BEGIN I~SORTPRT[P]; T~NESTPRT[I]; 05425400 + NESTFORM(0,DEPTH(I),INFO[T.LINKR,T.LINKC],A); 05426000 WRITE(LINE[DBL],15,A[*]); 05427000 J~T.[22:13]; K~CALL[J-1].[22:13]; 05428000 FOR J~J STEP 1 UNTIL K DO 05429000 BEGIN I~CALL[J]; 05430000 - T~NESTPTR[I]; 05430500 + T~NESTPRT[I]; 05430500 NESTFORM(32,DEPTH(I),INFO[T.LINKR,T.LINKC],A); 05431000 WRITE(LINE,15,A[*]); 05432000 END; 05433000 WRITE(LINE[DBL]); 05434000 END; 05435000 END; 05436000 -PROCEDURE NESTSORT(L,U); VALUE L,U; REAL L,U; 05437000 - BEGIN REAL I,J,K,M; 05438000 - LABEL AGAIN,TOP,BOTTOM,EXIT; 05439000 - IF L!U THEN 05440000 - BEGIN M~ (U+L) DIV 2; 05441000 - NESTSORT(L,M); 05442000 - NESTSORT(M1:,U); 05443000 - I~K+L; J~M+1 05444000 - AGAIN: IF I>M THEN GO TO TOP; 05445000 - IF J>U THEN GO TO BOTTOM; 05446000 - GT1~NESTPTR[SORTPRT[I].[33:15]].LINK; 05447000 - GT2~NESTPTR[SORTPRT[J].[33:15]].LINK; 05448000 - IF INFO[GT1.LINKR,(GT1+1).LINKC].[18:30]{ 05449000 - INFO[GT2.LINKR,(GT2+1).LINKC).[18:30] THEN 05450000 - GO TO BOTTOM; 05451000 - TOP: SORTPRT[K].[18:15]~SORTPTR[J]; 05452000 - J~J+1; 05453000 - IF K~K+1{U THEN GO TO AGAIN ELSE GO TO EXIT; 05454000 - BOTTOM: SORTPRT[K].[18:15]~SORTPRT[I]; 05455000 - I~I+1; 05456000 - IF K~K+1{U THEN GO TO AGAIN ELSE GO TO EXIT; 05457000 - EXIT: FOR I~L STEP 1 UNTIL U DO 05458000 - SORTPTR[I]~SORTPTR[I].[18:15]; 05459000 - END; 05460000 - END; 05461000 -COMMENT ROUTINES IN THIS SECTION COMPILE CODE FOR ALL EXPRESSIONS; 06000000 -COMMENT AEXP IS THE ARITHEMTIC EXPRESSION ROUTINE; 06001000 -PROCEDURE AEXP; 06002000 - BEGIN 06003000 - IF ELCLASS = IFV 06004000 - THEN BEGIN IF IFEXP ! ATYPE THEN ERROR(102) END 06005000 - ELSE BEGIN ARITHSEC; SIMPARITH END 06006000 - END AEXP; 06007000 -COMMENT ARITHSEC COMPILES FIRST PRIMARY IN AN ARITHMETIC EXPRESSIONS. 06008000 - IN PARICULAR IT HANDLES P, +P, -P AND -P|Q WHERE P 06009000 - AND Q ARE PRIMARIES; 06010000 -PROCEDURE ARITHSEC; 06011000 - BEGIN 06012000 - IF ELCLASS = ADOP 06013000 - THEN BEGIN 06014000 - STEPIT; 06015000 - IF ELBAT[I-1].ADDRESS ! SUB THEN PRIMARY 06016000 - ELSE BEGIN 06017000 - PRIMARY; 06018000 - ENDTOG ~ LINKTOG; EMITO(CHS); 06021000 - LINKTOG ~ ENDTOG; ENDTOG ~ FALSE END END 06022000 - ELSE PRIMARY END ARITHSEC; 06023000 - COMMENT SIMPARITH COMILES SIMPLE ARITHMETIC EXPRESSIONS ON THE 06024000 - ASSUMPTION THAT AN ARITHMETIC PRIMARY HAS ALREADY BEEN 06025000 - COMPILED. IT ALSO HANDLES THE CASE OF A CONCATENATE 06026000 - WHERE ACTUALPARAPART CAUSED THE VARIABLE ROUTINE TO 06027000 - COMPILE ONLY PAT OF A PRIMARY. MOST OF THE WORK OF 06028000 - SIMPARITH IS DOEN BY ARITHCOMP, AN ARTIFICIAL ROUTINE 06029000 - WHICH DOES THE HIERARCHY ANALYSIS USING RECURSION. 06030000 - ARITHCOMP IS A SUBROUTINE ONLY TO GET THIS RECURSION; 06031000 -PROCEDURE SIMPARITH; 06032000 - BEGIN 06033000 - WHILE ELCLASS = AMPERSAND 06034000 - DO BEGIN STEPIT; PRIMARY; PARSE END; 06035000 - WHILE ELCLASS }EQVOP DO ARITHCOMP END; 06036000 -COMMENT ARITHCOMP IS THE GUTS OF THE ARITHMETIC EXPRESSION ROUTINE 06037000 - ANALYSIS. IT CALLS PRIMARY AT APPROPRIATE TIMES AND 06038000 - EMITS THE ARITHMETIC OPERATORS. THE HIERARCHY ANALYSIS 06039000 - IS OPBTAINED BY RECURSION; 06040000 -PROCEDURE ARITHCOMP; 06041000 - BEGIN INTEGER OPERATOR, OPCLASS; 06042000 - DO BEGIN 06043000 - OPERATOR ~ 1 & ELBAT[I] [36:7:10]; 06044000 - COMMENT THIS SETS UP THE OPERATOR WHICH WILL BE EMITTED. THE HIGH 06045000 - ORDER TEN BITS OF THE OPERATOR ARE LOCATED IN [17:10] 06046000 - OF THE ELBAT WORD; 06047000 - OPCLASS ~ ELCLASS; 06048000 - STEPIT; PRIMARY; 06049000 - BEGIN 06051000 - WHILE OPCLASS < ELCLASS DO ARITHCOMP; 06052000 - COMMENT THE CLASSES ARE ARRANGED IN ORDER OF HIERARCHY; 06053000 - EMIT(OPERATOR); 06054000 - EMIT(0); L ~ L-1; 06054100 - STACKCT ~ 1; 06054150 - END; 06054200 - END UNTIL OPCLASS ! ELCLASS END ARITHCOMP; 06055000 - INTEGER PROCEDURE EXPRSS; BEGIN AEXP; EXPRSS ~ ATYPE END; 06057000 -PROCEDURE POLISH(EXPECT); VALUE EXPECT; REAL EXPECT; 06060000 - BEGIN LABEL EXIT; 06061000 - LABEL EL; 06061900 - REAL COUNT,T1, T2; 06062000 - BOOLEAN S; 06063000 - REAL SSS; INTEGER Z; 06063500 - STREAM PROCEDURE WRITEOUT(C,N,L); VALUE C,N; 06064000 - BEGIN DI ~ L; DS ~ 2 LIT "S="; 06065000 - SI ~ LOC C; SI ~ SI+7; DS ~ CHR; 06066000 - SI ~ LOC N; DS ~ DEC; 06067000 - 58(DS~2LIT " "); 06067500 - END; 06068000 - SSS~ STACKCTR; 06068500 - IF STEPI ! LEFTPAREN THEN GO TO EXIT; 06069000 - DO BEGIN 06070000 - IF STEPI } OPERATORS THEN 06071000 - BEGIN T1 ~ (T2 ~ ELBAT[I]).ADDRESS; 06072000 - S ~ S OR COUNT - T2.[11:3] < 0; 06074000 - COUNT ~ T2.[14:2]+COUNT-2; 06075000 - IF ELCLASS } OPERATOR THEN 06076000 - BEGIN IF T1 ! 0 THEN EMITO(T1); 06077000 - ELSE BEGIN 06078000 - T1 ~ T2.LINK+2; 06079000 - T2 ~ T2.INCR+T1; 06080000 - FOR T1 ~ T1 STEP 1 UNTIL T2 DO 06081000 - EMIT(TAKE(T1)); 06082000 - END; 06083000 - END ELSE BEGIN T2 ~ ELCLASS; 06084000 - IF STEPI ! LITNO THEN 06085000 - BEGIN ERR(500); GO TO EXIT END; 06086000 - IF T2 = BITOP THEN EMIT(T1&C 06087000 - [36:42:6]) ELSE 06088000 - IF T2 =HEXOP THEN EMIT(T1& 06089000 - (T2~C DIV 6)[36:45:3]&(C-T2|6) 06090000 - [39:45:3]) ELSE 06091000 - IF T2 = ISOLATE THEN 06092000 - BEGIN T2 + C; 06093000 - IF STEPI ! LITNO 06094000 - THEN BEGIN ERR(500); 06095000 - GO TO EXIT END; 06096000 + PROCEDURE NESTSORT(L,U); VALUE L,U; REAL L,U; 05437000 + BEGIN REAL I,J,K,M; 05438000 + LABEL AGAIN,TOP,BOTTOM,EXIT; 05439000 + IF L!U THEN 05440000 + BEGIN M~ (U+L) DIV 2; 05441000 + NESTSORT(L,M); 05442000 + NESTSORT(M+1,U); 05443000 + I~K~L; J~M+1 05444000 + AGAIN: IF I>M THEN GO TO TOP; 05445000 + IF J>U THEN GO TO BOTTOM; 05446000 + GT1~NESTPRT[SORTPRT[I].[33:15]].LINK; 05447000 + GT2~NESTPRT[SORTPRT[J].[33:15]].LINK; 05448000 + IF INFO[GT1.LINKR,(GT1+1).LINKC].[18:30]{ 05449000 + INFO[GT2.LINKR,(GT2+1).LINKC].[18:30] THEN 05450000 + GO TO BOTTOM; 05451000 + TOP: SORTPRT[K].[18:15]~SORTPRT[J]; 05452000 + J~J+1; 05453000 + IF K~K+1{U THEN GO TO AGAIN ELSE GO TO EXIT; 05454000 + BOTTOM: SORTPRT[K].[18:15]~SORTPRT[I]; 05455000 + I~I+1; 05456000 + IF K~K+1{U THEN GO TO AGAIN ELSE GO TO EXIT; 05457000 + EXIT: FOR I~L STEP 1 UNTIL U DO 05458000 + SORTPRT[I]~SORTPRT[I].[18:15]; 05459000 + END; 05460000 + END; 05461000 + COMMENT ROUTINES IN THIS SECTION COMPILE CODE FOR ALL EXPRESSIONS;06000000 + COMMENT AEXP IS THE ARITHMETIC EXRESSION ROUTINE; 06001000 + PROCEDURE AEXP; 06002000 + BEGIN 06003000 + IF ELCLASS = IFV 06004000 + THEN BEGIN IF IFEXP ! ATYPE THEN ERR(102) END 06005000 + ELSE BEGIN ARITHSEC; SIMPARITH END 06006000 + END AEXP; 06007000 + COMMENT ARITHSEC COMPILES FIRST PRIMARY IN AN ARITHMETIC EXPRESSION. 06008000 + IN PARTICULAR IT HANDLES P, +P, -P, AND -P*Q WHERE P 06009000 + AND Q ARE PRIMARIES; 06010000 + PROCEDURE ARITHSEC; 06011000 + BEGIN 06012000 + IF ELCLASS = ADOP 06013000 + THEN BEGIN 06014000 + STEPIT; 06015000 + IF ELBAT[I-1].ADDRESS ! SUB THEN PRIMARY 06016000 + ELSE BEGIN 06017000 + PRIMARY; 06018000 + ENDTOG ~ LINKTOG; EMITO(CHS); 06021000 + LINKTOG ~ ENDTOG; ENDTOG ~ FALSE END END 06022000 + ELSE PRIMARY END ARITHSEC; 06023000 + COMMENT SIMPARITH COMPILES SIMPLE ARITHMETIC EXPRESSIONS ON THE 06024000 + ASSUMPTION THAT AN ARITHMETIC PRIMARY HAS ALREADY BEEN 06025000 + COMPILED. IT ALSO HANDLES THE CASE OF A CONCATENATE 06026000 + WHERE ACTUALPARAPART CAUSED THE VARIABLE ROUTINE TO 06027000 + COMPILE ONLY PART OF A PRIMARY. MOST OF THE WORK OF 06028000 + SIMPARITH IS DONE BY ARITHCOMP, AN ARTIFIAL ROUTINE 06029000 + WHICH DOES THE HIERARCHY ANALYSIS USING RECURSION. 06030000 + ARITHCOMP IS A SUBROUTINE ONLY TO GET THIS RECURSION; 06031000 + PROCEDURE SIMPARITH; 06032000 + BEGIN 06033000 + WHILE ELCLASS = AMPERSAND 06034000 + DO BEGIN STEPIT; PRIMARY; PARSE END; 06035000 + WHILE ELCLASS } EQVOP DO ARITHCOMP END; 06036000 + COMMENT ARITHCOMP IS THE GUTS OF THE ARITHMETIC EXPRESSION ROUTINE 06037000 + ANALYSIS. IT CALLS PRIMARY AT APPROPRIATE TIMES AND 06038000 + EMITS THE ARITHMETIC OPERATORS. THE HIERARCHY ANALYSIS 06039000 + IS OBTAINED BY RECURSION; 06040000 + PROCEDURE ARITHCOMP; 06041000 + BEGIN INTEGER OPERATOR, OPCLASS; 06042000 + DO BEGIN 06043000 + OPERATOR ~ 1 & ELBAT[I] [36:17:10]; 06044000 + COMMENT THIS SETS UP THE OPERATOR WHICH WILL BE EMITTED. THE HIGH 06045000 + ORDER TEN BITS OF THE OPERATOR ARE LOCATED IN [17:10] 06046000 + OF THE ELBAT WORD; 06047000 + OPCLASS ~ ELCLASS; 06048000 + STEPIT; PRIMARY; 06049000 + BEGIN 06051000 + WHILE OPCLASS < ELCLASS DO ARITHCOMP; 06052000 + COMMENT THE CLASSES ARE ARRANGED IN ORDER OF HIERARCHY; 06053000 + EMIT(OPERATOR); 06054000 + EMIT(0); L ~ L-1; 06054100 + STACKCT ~ 1; 06054150 + END; 06054200 + END UNTIL OPCLASS ! ELCLASS END ARITHCOMP; 06055000 + INTEGER PROCEDURE EXPRSS; BEGIN AEXP; EXPRSS ~ ATYPE END; 06057000 + PROCEDURE POLISHER(EXPECT); VALUE EXPECT; REAL EXPECT; 06060000 + BEGIN LABEL EXIT; 06061000 + LABEL EL; 06061900 + REAL COUNT,T1, T2; 06062000 + BOOLEAN S; 06063000 + REAL SSS; INTEGER Z; 06063500 + STREAM PROCEDURE WRITEOUT(C,N,L); VALUE C,N; 06064000 + BEGIN DI ~ L; DS ~ 2 LIT "S="; 06065000 + SI ~ LOC C; SI ~ SI+7; DS ~ CHR; 06066000 + SI ~ LOC N; DS ~ DEC; 06067000 + 58(DS~2LIT " "); 06067500 + END; 06068000 + SSS~ STACKCTR; 06068500 + IF STEPI ! LEFTPAREN THEN GO TO EXIT; 06069000 + DO BEGIN 06070000 + IF STEPI } OPERATORS THEN 06071000 + BEGIN T1 ~ (T2 ~ ELBAT[I]).ADDRESS; 06072000 + S ~ S OR COUNT - T2.[11:3] < 0; 06074000 + COUNT ~ T2.[14:2]+COUNT-2; 06075000 + IF ELCLASS } OPERATOR THEN 06076000 + BEGIN IF T1 ! 0 THEN EMITO(T1); 06077000 + ELSE BEGIN 06078000 + T1 ~ T2.LINK+2; 06079000 + T2 ~ T2.INCR+T1; 06080000 + FOR T1 ~ T1 STEP 1 UNTIL T2 DO 06081000 + EMIT(TAKE(T1)); 06082000 + END; 06083000 + END ELSE BEGIN T2 ~ ELCLASS; 06084000 + IF STEPI ! LITNO THEN 06085000 + BEGIN ERR(500); GO TO EXIT END; 06086000 + IF T2 = BITOP THEN EMIT(T1&C 06087000 + [36:42:6]) ELSE 06088000 + IF T2 =HEXOP THEN EMIT(T1& 06089000 + (T2~C DIV 6)[36:45:3]&(C-T2|6) 06090000 + [39:45:3]) ELSE 06091000 + IF T2 = ISOLATE THEN 06092000 + BEGIN T2 + C; 06093000 + IF STEPI ! LITNO 06094000 + THEN BEGIN ERR(500); 06095000 + GO TO EXIT END; 06096000 06097000 06098000 06099000 - EMIT(Z~((T2+C-1)DIV 6-C DIV 06099100 - 6+1)|512+(48-T2-C)MOD 6|64+ 06099200 - 37); 06100000 - END END; 06101000 - STEPIT; 06102000 - S ~ S OR COUNT < 0; 06103000 - END ELSE BEGIN 06104000 - IF ELCLASS = LABELID THEN 06104100 - BEGIN T1:=2; 06104200 - EL: GT4 ~ TAKE(T2~GIT(ELBAT[I])); 06104300 - PUT(L,T2); 06104400 - IF GT4 = 0 THEN GT4 ~ L; 06104500 - IF (GT4:=L-GT4)DIV 4 } 128 THEN 06104510 - BEGIN GT4:=0;FLAG(50);END; 06104520 - EMIT(GT4|4+T1); 06104600 - STEPIT; 06104700 - END ELSE 06104800 - IF ELCLASS ! PERIOD THEN AEXP ELSE BEGIN 06105000 - T2~0; 06106000 - IF STEPI=PERIOD THEN 06106100 - BEGIN T2~1; STEPIT END; 06106200 - IF ELCLASS>IDMAX THEN 06106300 - BEGIN ERR(500); GO TO EXIT END; 06107000 - IF ELCLASS = LABELID THEN 06107100 - BEGIN T1 ~ 0; GO TO EL END; 06107200 - IF T1 ~ ELBAT[I].ADDRESS = 0 THEN 06108000 - BEGIN ERR(100); GO TO EXIT END; 06109000 - EMITL(T1); 06110000 - IF T1>1023 THEN 06110100 - IF T2=0THEN FLAG(500) 06110200 - ELSE EMITO(PRTE); 06110300 - STEPIT; 06111000 - END; COUNT ~ COUNT+1; 06112000 - END; 06113000 - END UNTIL ELCLASS ! COMMA; 06114000 - IF ELCLASS ! RTPAREN THEN 06115000 - BEGIN ERR(104); GO TO EXIT END; 06116000 - STEPIT; 06117000 - IF FALSE THEN 06118000 - BEGIN COUNT ~ COUNT-EXPECT; 06119000 - WRITEOUT(IF COUNT < 0 THEN "-" ELSE 06120000 - IF COUNT = 0 THEN " " ELSE "+", 06121000 - ABS(COUNT),LIN[0]); 06122000 - WRITELINE; 06123000 - END; 06124000 - EXIT: STACKCTR ~ SSS; END; 06125000 -PROCEDURE PRIMARY; 06126000 - BEGIN LABEL 06127000 - L1, L2, L3, L4, L5, L6, L7, L8, L9, L10, 06128000 - L11, L12, L13, L14, L15, L16, L17, L18, L19, L20, 06129000 - L21, L22, L23, L24, L25, L26, L27, L28, L29, L30, 06130000 - L31, L32, L33, L34, L35, L36, L37, L38, L39; 06131000 - SWITCH S ~ 06132000 - L1, L2, L3, L4, L5, L6, L7, L8, L9, L10, 06133000 - L11, L12, L13, L14, L15, L16, L17, L18, L19, L20, 06134000 - L21, L22, L23, L24, L25, L26, L27, L28, L29, L30, 06135000 - L31, L32, L33, L34, L35, L36, L37, L38, L39; 06136000 - LABEL EXIT,RP,LDOT,LAMPER; 06137000 - GO TO S[ELCLASS]; 06138000 - IF ELCLASS = LFTBRKET THEN 06139000 - BEGIN STEPIT; VARIABLE(FL); 06140000 - IF ELCLASS ! RTBRKET THEN 06141000 - BEGIN ERR(118); GO TO EXIT END; 06142000 - STEPIT; 06143000 - GO TO LDOT; 06144000 - END; 06145000 - IF ELCLASS = NOTOP THEN 06146000 - BEGIN STEPIT; PRIMARY; 06147000 - EMITLNG; EMIT(0); L~L-1; 06148000 - GO TO EXIT; 06149000 - END; 06150000 - IF ELCLASS = UNKNOWNID THEN ERR(100); 06151000 -L1:L2:L3:L4:L5:L6:L8:L9:L10:L12:L13:L16:L17:L20,L21:L24:L25:L28:L29: 06152000 -L32: 06153000 - ERR(103); GO TO EXIT; 06154000 - L7: 06155000 - SUBHAND(FALSE); GO TO LDOT; 06156000 - L11: 06157000 - IMPFUN; STACKCT ~ STACKCT-1; GO TO LDOT; 06158000 - L14:L15: 06159000 - STRMPROCSTMT; GO TO LDOT; 06160000 - L18:L19: 06161000 - PROCSTMT(FALSE); GO TO LDOT; 06162000 - L22:L23:L26:L27:L30:L31: 06163000 - VARIABLE(FP); GO TO LAMPER; 06164000 - L33:L35: 06165000 - EMIT(0&ELBAT[I] [36:17:10]); STEPIT; GO TO LAMPER; 06166000 - L34:L36: 06167000 - EMITNUM(C); STEPIT; GO TO LAMPER; 06168000 - L38: 06169000 - POLISHER(1); GO TO LDOT; 06170000 - L39: 06171000 - STEPIT; PRIMARY; STACKCT ~ STACKCT -1; 06172000 - EMITO(LOD); GOTO LDOT; 06172500 - L37: 06173000 - STEPIT; AEXP; 06174000 - STACKCT ~ STACKCT -1; 06174500 - IF ELCLASS ! RTPAREN THEN 06175000 - BEGIN ERR(104); GO TO EXIT END; 06176000 - STEPIT; 06177000 - LDOT:DOT: 06178000 - LAMPER: 06179000 - STACKCT ~ STACKCT +1; 06179500 - WHILE ELCLASS = AMPERSAND DO 06180000 - BEGIN STEPIT; PRIMARY; PARSE END; 06181000 -EXIT: END PRIMARY; 06182000 -PROCEDURE IMPFUN; 06183000 - BEGIN REAL T1,T2; 06184000 - T1 ~ (T2 ~ ELBAT[I]).ADDRESS; 06185000 - PANA; 06186000 - IF T1 ! 0 THEN EMITO(T1); 06187000 - ELSE BEGIN 06188000 - T1 ~ T2.LINK+T2.INCR+1; 06189000 - T2 ~ T2.LINK+2; 06190000 - FOR T2 ~ T2 STEP 1 UNTIL T1 DO EMIT(TAKE(T2)); 06191000 - END; 06192000 - END; 06193000 -PROCEDURE SUBHAND(FROM); VALUE FROM; BOOLEAN FROM; 06194000 - BEGIN LABEL EXIT; 06195000 - REAL T1; 06196000 - T1 ~ TAKEFRST; 06197000 - IF ELCLASS ! SUBID AND FROM THEN 06198000 - BEGIN IF STEPI ! ASSIGNOP THEN 06199000 - BEGIN FLAG(503); GO TO EXIT END; 06200000 - STEPIT; 06201000 - AEXP; 06202000 - EMITO(XCH); 06203000 - GO TO EXIT; 06204000 - END; 06205000 - EMITL((L+6) DIV 4-(T1.[24:12]-1) DIV 4); 06206000 - EMITB(BBW,BUMPL,T1.[36:12]); 06207000 - STEPIT; 06208000 - ADJUST; 06208500 -EXIT: END SUBHAND; 06209000 -COMMENT IFEXP COMPILES CONDITIONAL EXPRESSIONS. IT REPORTS THE TYPE 06292000 - OF THE EXPRESSIONS AS EXPRSS REPORTS; 06293000 -INTEGER PROCEDURE IFEXP; 06294000 - BEGIN INTEGER TYPE,THENBRANCH,ELSEBRANCH; 06295000 - IFCLAUSE; 06296000 - STACKCT ~ 0; 06296500 - THENBRANCH ~ BUMPL; 06297000 - COMMENT SAVE L FOR LATER FIXUP; 06298000 - IFEXP ~ TYPE ~ EXPRSS; COMMENT COMPILE 1ST EXPRSS; 06299000 - STACKCT ~ 0; 06299500 - ELSEBRANCH ~ BUMPL; 06300000 - EMITB(BFC,THENBRANCH,L); 06301000 - IF ELCLASS ! ELSEV THEN ERR(155) ELSE BEGIN 06302000 - STEPIT; 06303000 - AEXP; STACKCT ~ 1; 06305000 - COMMENT THIS COMPILES PROPER TYPE SECOND EXPRSS; 06306000 - EMITB(BFW,ELSEBRANCH,L); 06307000 - EMIT(1); L ~ L-1; 06308000 - COMMENT THIS IS USED BY EMITLNG TO CLEANUP CODE. COMPARE WITH 06309000 - BOOSEC, BOOCOMP, AND RELATION; 06310000 - END END IFEXP; 06311000 -COMMENT PARSE COMPILES CODE FOR THE CONCATENATE; 06312000 -PROCEDURE PARSE; 06313000 - BEGIN INTEGER FIRST,SECOND,THIRD; 06314000 - LABEL EXIT; 06315000 - IF ELCLASS = LFTBRKET THEN 06316000 - IF STEPI = LITNO THEN 06317000 - IF STEPI = COLON THEN 06318000 - IF STEPI = LITNO THEN 06319000 - IF STEPI = COLON THEN 06320000 - IF STEPI = LITNO THEN 06321000 - IF STEPI = RTBRKET THEN 06322000 - COMMENT IF TEST ARE PASSED THEN SYNTAX IS CORRECT; 06323000 - IF (FIRST ~ ELBAT[I-5].ADDRESS) | 06324000 - (SECOND ~ ELBAT[I-3].ADDRESS) | 06325000 - (THIRD ~ ELBAT[I-1].ADDRESS) ! 0 THEN 06326000 - IF FIRST + THIRD {48 THEN 06327000 - IF SECOND+ THIRD {48 THEN 06328000 - COMMENT IF TEST ARE PASSED THEN RANGES OF LITERALS ARE O.K.; 06329000 - BEGIN 06330000 - STEPIT; 06331000 - EMITD(SECOND,FIRST,THIRD); 06332000 - STACKCT ~ 1; 06332500 - GO TO EXIT END; 06333000 - ERR(113); COMMENT ERROR IF SYNTAX OR RANGE FAILS; 06334000 - EXIT: END PARSE; 06335000 -COMMENT DOT COMPILES CODE FOR PARTIAL WORD DESIGNATORS, EXCEPT FOR 06336000 - THOSE CASES HANDLED BY THE VARIABLE ROUTINE; 06337000 -PROCEDURE DOT; 06338000 - BEGIN INTEGER FIRST,SECOND; LABEL EXIT; 06339000 - IF ELCLASS = PERIOD THEN BEGIN 06340000 - IF DOTSYNTAX(FIRST,SECOND) THEN GO TO EXIT; 06341000 + EMIT(Z~((T2+C-1)DIV 6-C DIV 06099100 + 6+1)|512+(48-T2-C)MOD 6|64+ 06099200 + 37); 06100000 + END END; 06101000 + STEPIT; 06102000 + S ~ S OR COUNT < 0; 06103000 + END ELSE BEGIN 06104000 + IF ELCLASS = LABELID THEN 06104100 + BEGIN T1:=2; 06104200 + EL: GT4 ~ TAKE(T2~GIT(ELBAT[I])); 06104300 + PUT(L,T2); 06104400 + IF GT4 = 0 THEN GT4 ~ L; 06104500 + IF (GT4:=L-GT4)DIV 4 } 128 THEN 06104510 + BEGIN GT4:=0;FLAG(50);END; 06104520 + EMIT(GT4|4+T1); 06104600 + STEPIT; 06104700 + END ELSE 06104800 + IF ELCLASS ! PERIOD THEN AEXP ELSE BEGIN 06105000 + T2~0; 06106000 + IF STEPI=PERIOD THEN 06106100 + BEGIN T2~1; STEPIT END; 06106200 + IF ELCLASS>IDMAX THEN 06106300 + BEGIN ERR(500); GO TO EXIT END; 06107000 + IF ELCLASS = LABELID THEN 06107100 + BEGIN T1 ~ 0; GO TO EL END; 06107200 + IF T1 ~ ELBAT[I].ADDRESS = 0 THEN 06108000 + BEGIN ERR(100); GO TO EXIT END; 06109000 + EMITL(T1); 06110000 + IF T1>1023 THEN 06110100 + IF T2=0THEN FLAG(500) 06110200 + ELSE EMITO(PRTE); 06110300 + STEPIT; 06111000 + END; COUNT ~ COUNT+1; 06112000 + END; 06113000 + END UNTIL ELCLASS ! COMMA; 06114000 + IF ELCLASS ! RTPAREN THEN 06115000 + BEGIN ERR(104); GO TO EXIT END; 06116000 + STEPIT; 06117000 + IF FALSE THEN 06118000 + BEGIN COUNT ~ COUNT-EXPECT; 06119000 + WRITEOUT(IF COUNT < 0 THEN "-" ELSE 06120000 + IF COUNT = 0 THEN " " ELSE "+", 06121000 + ABS(COUNT),LIN[0]); 06122000 + WRITELINE; 06123000 + END; 06124000 + EXIT: STACKCTR ~ SSS; END; 06125000 + PROCEDURE PRIMARY; 06126000 + BEGIN LABEL 06127000 + L1, L2, L3, L4, L5, L6, L7, L8, L9, L10, 06128000 + L11, L12, L13, L14, L15, L16, L17, L18, L19, L20, 06129000 + L21, L22, L23, L24, L25, L26, L27, L28, L29, L30, 06130000 + L31, L32, L33, L34, L35, L36, L37, L38, L39; 06131000 + SWITCH S ~ 06132000 + L1, L2, L3, L4, L5, L6, L7, L8, L9, L10, 06133000 + L11, L12, L13, L14, L15, L16, L17, L18, L19, L20, 06134000 + L21, L22, L23, L24, L25, L26, L27, L28, L29, L30, 06135000 + L31, L32, L33, L34, L35, L36, L37, L38, L39; 06136000 + LABEL EXIT,RP,LDOT,LAMPER; 06137000 + GO TO S[ELCLASS]; 06138000 + IF ELCLASS = LFTBRKET THEN 06139000 + BEGIN STEPIT; VARIABLE(FL); 06140000 + IF ELCLASS ! RTBRKET THEN 06141000 + BEGIN ERR(118); GO TO EXIT END; 06142000 + STEPIT; 06143000 + GO TO LDOT; 06144000 + END; 06145000 + IF ELCLASS = NOTOP THEN 06146000 + BEGIN STEPIT; PRIMARY; 06147000 + EMITLNG; EMIT(0); L~L-1; 06148000 + GO TO EXIT; 06149000 + END; 06150000 + IF ELCLASS = UNKNOWNID THEN ERR(100); 06151000 + L1:L2:L3:L4:L5:L6:L8:L9:L10:L12:L13:L16:L17:L20,L21:L24:L25:L28:L29: 06152000 + L32: 06153000 + ERR(103); GO TO EXIT; 06154000 + L7: 06155000 + SUBHAND(FALSE); GO TO LDOT; 06156000 + L11: 06157000 + IMPFUN; STACKCT ~ STACKCT-1; GO TO LDOT; 06158000 + L14:L15: 06159000 + STRMPROCSTMT; GO TO LDOT; 06160000 + L18:L19: 06161000 + PROCSTMT(FALSE); GO TO LDOT; 06162000 + L22:L23:L26:L27:L30:L31: 06163000 + VARIABLE(FP); GO TO LAMPER; 06164000 + L33:L35: 06165000 + EMIT(0&ELBAT[I] [36:17:10]); STEPIT; GO TO LAMPER; 06166000 + L34:L36: 06167000 + EMITNUM(C); STEPIT; GO TO LAMPER; 06168000 + L38: 06169000 + POLISHER(1); GO TO LDOT; 06170000 + L39: 06171000 + STEPIT; PRIMARY; STACKCT ~ STACKCT-1; 06172000 + EMITO(LOD); GO TO LDOT; 06172500 + L37: 06173000 + STEPIT; AEXP; 06174000 + STACKCT ~ STACKCT-1; 06174500 + IF ELCLASS ! RTPAREN THEN 06175000 + BEGIN ERR(104); GO TO EXIT END; 06176000 + STEPIT; 06177000 + LDOT:DOT; 06178000 + LAMPER: 06179000 + STACKCT ~ STACKCT +1; 06179500 + WHILE ELCLASS = AMPERSAND DO 06180000 + BEGIN STEPIT; PRIMARY; PARSE END; 06181000 + EXIT: END PRIMARY; 06182000 + PROCEDURE IMPFUN; 06183000 + BEGIN REAL T1,T2; 06184000 + T1 ~ (T2 ~ ELBAT[I]).ADDRESS; 06185000 + PANA; 06186000 + IF T1 ! 0 THEN EMITO(T1); 06187000 + ELSE BEGIN 06188000 + T1 ~ T2.LINK+T2.INCR+1; 06189000 + T2 ~ T2.LINK+2; 06190000 + FOR T2 ~ T2 STEP 1 UNTIL T1 DO EMIT(TAKE(T2)); 06191000 + END; 06192000 + END; 06193000 + PROCEDURE SUBHAND(FROM); VALUE FROM; BOOLEAN FROM; 06194000 + BEGIN LABEL EXIT; 06195000 + REAL T1; 06196000 + T1 ~ TAKEFRST; 06197000 + IF ELCLASS ! SUBID AND FROM THEN 06198000 + BEGIN IF STEPI ! ASSIGNOP THEN 06199000 + BEGIN FLAG(503); GO TO EXIT END; 06200000 + STEPIT; 06201000 + AEXP; 06202000 + EMITO(XCH); 06203000 + GO TO EXIT; 06204000 + END; 06205000 + EMITL((L+6) DIV 4-(T1.[24:12]-1) DIV 4); 06206000 + EMITB(BBW,BUMPL,T1.[36:12]); 06207000 + STEPIT; 06208000 + ADJUST; 06208500 + EXIT: END SUBHAND; 06209000 + COMMENT IFEXP COMPILES CONDITIONAL EXPRESSIONS. IT REPORTS THE TYPE 06292000 + OF EXPRESSIONS AS EXPRSS REPORTS; 06293000 + INTEGER PROCEDURE IFEXP; 06294000 + BEGIN INTEGER TYPE,THENBRANCH,ELSEBRANCH; 06295000 + IFCLAUSE; 06296000 + STACKCT ~ 0; 06296500 + THENBRANCH ~ BUMPL; 06297000 + COMMENT SAVE L FOR LATER FIXUP; 06298000 + IFEXP ~ TYPE ~ EXPRSS; COMMENT COMPILE 1ST EXPRSS; 06299000 + STACKCT ~ 0; 06299500 + ELSEBRANCH ~ BUMPL; 06300000 + EMITB(BFC,THENBRANCH,L); 06301000 + IF ELCLASS ! ELSEV THEN ERR(155) ELSE BEGIN 06302000 + STEPIT; 06303000 + AEXP; STACKCT ~ 1; 06305000 + COMMENT THIS COMPILES PROPER TYPE SECOND EXPRSS; 06306000 + EMITB(BFW,ELSEBRANCH,L); 06307000 + EMIT(1); L ~ L-1; 06308000 + COMMENT THIS IS USED BY EMITLNG TO CLEANUP CODE. COMPARE WITH 06309000 + BOOSEC, BOOCOMP, AND RELATION; 06310000 + END END IFEXP; 06311000 + COMMENT PARSE COMPILES CODE FOR THE CONCATENATE; 06312000 + PROCEDURE PARSE; 06313000 + BEGIN INTEGER FIRST,SECOND,THIRD; 06314000 + LABEL EXIT; 06315000 + IF ELCLASS = LFTBRKET THEN 06316000 + IF STEPI = LITNO THEN 06317000 + IF STEPI = COLON THEN 06318000 + IF STEPI = LITNO THEN 06319000 + IF STEPI = COLON THEN 06320000 + IF STEPI = LITNO THEN 06321000 + IF STEPI = RTBRKET THEN 06322000 + COMMENT IF TEST ARE PASSED THEN SYNTAX IS CORRECT; 06323000 + IF (FIRST ~ ELBAT[I-5].ADDRESS) | 06324000 + (SECOND ~ ELBAT[I-3].ADDRESS) | 06325000 + (THIRD ~ ELBAT[I-1].ADDRESS) ! 0 THEN 06326000 + IF FIRST + THIRD { 48 THEN 06327000 + IF SECOND+ THIRD { 48 THEN 06328000 + COMMENT IF TEST ARE PASSED THEN RANGES OF LITERALS ARE O.K.; 06329000 + BEGIN 06330000 + STEPIT; 06331000 + EMITD(SECOND,FIRST,THIRD); 06332000 + STACKCT ~ 1; 06332500 + GO TO EXIT END; 06333000 + ERR(113); COMMENT ERROR IF SYNTAX OR RANGE FAILS; 06334000 + EXIT: END PARSE; 06335000 + COMMENT DOT COMPILES CODE FOR PARTIAL WORD DESIGNATORS, EXCEPT FOR 06336000 + THOSE CASES HANDLED BY THE VARIABLE ROUTINE; 06337000 + PROCEDURE DOT; 06338000 + BEGIN INTEGER FIRST,SECOND; LABEL EXIT; 06339000 + IF ELCLASS = PERIOD THEN BEGIN 06340000 + IF DOTSYNTAX(FIRST,SECOND) THEN GO TO EXIT; 06341000 06342000 06343000 - EMITI(0,FIRST,SECOND); 06344000 - STEPIT; 06345000 - EXIT: END END DOT; 06346000 -PROCEDURE IFCLAUSE; 06409000 - BEGIN STEPIT; BEXP; 06410000 - IF ELCLASS ! THENV THEN ERR(116) ELSE STEPIT END IFCLAUS;06411000 -COMMENT PANA COMPILES THE CONSTRUCT: (); 06412000 -PROCEDURE PANA; 06413000 - BEGIN 06414000 - IF STEPI ! LEFTPAREN THEN ERR(105) 06415000 - ELSE BEGIN STEPIT; AEXP; IF ELCLASS ! RTPAREN THEN 06416000 - ERR(104) ELSE STEPIT END END PANA; 06417000 -COMMENT BANA COMPILES THE CONSTRUCT: []; 06418000 -PROCEDURE BANA; 06419000 - BEGIN 06420000 - IF STEPI ! LFTBRKET THEN ERR(117) 06421000 - ELSE BEGIN STEPIT; AEXP; IF ELCLASS ! RTBRKET THEN 06422000 - ERR(118) ELSE STEPIT END END BANA ; 06423000 + EMITI(0,FIRST,SECOND); 06344000 + STEPIT; 06345000 + EXIT: END END DOT; 06346000 + PROCEDURE IFCLAUSE; 06409000 + BEGIN STEPIT; BEXP; 06410000 + IF ELCLASS ! THENV THEN ERR(116)ELSE STEPIT END IFCLAUS;06411000 + COMMENT PANA COMPILES THE CONSTRUCT: (); 06412000 + PROCEDURE PANA; 06413000 + BEGIN 06414000 + IF STEPI ! LEFTPAREN THEN ERR(105) 06415000 + ELSE BEGIN STEPIT; AEXP; IF ELCLASS ! RTPAREN THEN 06416000 + ERR(104) ELSE STEPIT END END PANA; 06417000 + COMMENT BANA COMPILES THE CONSTRUCT: []; 06418000 + PROCEDURE BANA; 06419000 + BEGIN 06420000 + IF STEPI ! LFTBRKET THEN ERR(117) 06421000 + ELSE BEGIN STEPIT; AEXP; IF ELCLASS ! RTBRKET THEN 06422000 + ERR(118) ELSE STEPIT END END BANA ; 06423000 COMMENT THIS SECTION CONTAINS THE STATEMENT ROUTINES; 07000000 - COMMENT COMPOUNDTAIL COMPILES COMPOUNDTAILS. IT ALSO ELIMINATES 07001000 + COMMENT COMPOUNDTAIL COMPILES COMPOUNDTAILS. IT ALSO ELIMINATES 07001000 COMMENTS FOLLOWING ENDS. AFTER ANY ERROR, ERROR MESSAGES 07002000 ARE SUPPRESSED. COMPOUNDTAIL IS PARTIALLY RESPONSIBLE 07003000 FOR RESTORING THE ABILITY TO WRITE ERROR MESSAGES. SOME 07004000 @@ -3543,7 +3545,7 @@ PROCEDURE BANA; 06419000 PROCEDURE COMPOUNDTAIL; 07006000 BEGIN LABEL ANOTHER; 07007000 I ~ I-1; BEGINCTR ~ BEGINCTR+1; 07008000 -ANOTHER: ERRORTOG ~ TRUE; COMMENT ALLOW ERROR MESSAGES; 07009000 + ANOTHER: ERRORTOG ~ TRUE; COMMENT ALLOW ERROR MESSAGES; 07009000 STEPIT; 07010000 IF STREAMTOG THEN STREAMSTMT ELSE STMT; 07011000 IF ELCLASS = SEMICOLON THEN GO TO ANOTHER; 07012000 @@ -3565,13 +3567,13 @@ FCR:= (LCR:=MKABS(CBUFF[9]))-9; 07025010 FCR:= (LCR:=MKABS(TBUFF[9]))-9 END; 07025030 IF ELCLASS = PERIOD THEN 07026000 BEGIN 07027000 - GT5 ~ "NO;END,"&"E"[1:43:5]; 07028000 - MOVE(1,GT5,CBUFF[0]); 07029000 - LASTUSED~4; 07030000 - ELBAT[I~I-2] ~SPECIAL[20]; 07031000 - ELCLASS ~ SEMICOLON END; 07032000 - END COMPOUNDTAIL; 07033000 - REAL AXNUM 07034000 + GT5 ~ "ND;END."&"E"[1:43:5]; 07028000 + MOVE(1,GT5,CBUFF[0]); 07029000 + LASTUSED~4; 07030000 + ELBAT[I~I-2] ~SPECIAL[20]; 07031000 + ELCLASS ~ SEMICOLON END 07032000 + END COMPOUNDTAIL; 07033000 + REAL AXNUM; 07034000 PROCEDURE ACTUALPARAPART(SBIT,INDEX); VALUE SBIT,INDEX; 07035000 BOOLEAN SBIT; REAL INDEX; 07036000 BEGIN LABEL EXIT,COMMON,ANOTHER,POL; 07037000 @@ -3585,7 +3587,7 @@ FCR:= (LCR:=MKABS(TBUFF[9]))-9 END; 07025030 END; 07038700 BOOLEAN VBIT,IDBIT; 07039000 PCTR ~ 1; 07040000 - ANOTHER: ACLASS ~ STEPI&0[47:47:1]; 07041000 + ANOTHER: ACLASS ~ STEPI&0[47:47:1]; 07041000 STACKCT ~ 0; 07041200 GT1 ~ TAKE(INDEX+PCTR); 07042000 VBIT ~ BOOLEAN(GT1.VO); 07043000 @@ -3658,189 +3660,189 @@ FCR:= (LCR:=MKABS(TBUFF[9]))-9 END; 07025030 BEGIN ERR(128); GO TO EXIT END; 07099000 STEPIT; 07100000 STACKCT ~ 0; 07100500 -EXIT: END ACTUAL PARAPART; 07101000 -PROCEDURE PROCSTMT(FROM); VALUE FROM; BOOLEAN FROM; 07391000 - BEGIN 07392000 - REAL HOLE,ADDRESS; 07393000 - REAL J; LABEL OK; 07393100 - LABEL EXIT; 07394000 - SCATTERELBAT; 07395000 - HOLE~ ELBAT[I]; 07396000 - ADDRESS ~ ADDRSF; 07397000 - IF NESTOG THEN 07397100 - IF MODE!0 THEN 07397200 - IF TABLE(I+1)!ASSIGNOP THEN 07397210 - BEGIN FOR J~CALLINFO STEP 1 UNTIL CALLX DO 07397300 - IF CALL[J]=ADDRESS THEN GO TO OK; 07397400 - CALL[CALLX~CALLX+1]~ADDRESS; 07397500 - OK: END; 07397600 - CHECKER(HOLE); 07398000 - IF ELCLASS !PROCID THEN 07399000 - IF NOT FORMALF THEN 07400000 - IF TABLE(I+1) = ASSIGNOP THEN 07401000 - BEGIN VARIABLE(2-REAL(FROM)); GO TO EXIT END; 07402000 - COMMENT CALL VARIABLE TO HANDLE THIS ASSIGNMENT OPERATION; 07403000 - IF ELCLASS ! PROCID EQV FROM 07404000 - THEN BEGIN ERR(159); GO TO EXIT END; 07405000 - COMMENT IT IS PROCEDURE IF AND ONLY IF WE COME FORM STMT; 07406000 - STEPIT; 07407000 - EMITO(MKS); 07408000 - IF ELCLASS = LEFTPAREN 07409000 - THEN ACTUALPARAPART(FALSE,GIT(HOLE)) 07410000 - ELSE IF FORMALF THEN L ~ L-1; 07411000 - ELSE IF TAKE(GIT(HOLE)).NODIMPART!0 THEN ERR(128); 07412000 - EMITV(ADDRESS); 07413000 -EXIT: END PROCSTMT; 07425000 -PROCEDURE STRMPROCSTMT; 07426000 - BEGIN REAL WHOLE,FIX,T1; 07427000 + EXIT: END ACTUAL PARAPART; 07101000 + PROCEDURE PROCSTMT(FROM); VALUE FROM; BOOLEAN FROM; 07391000 + BEGIN 07392000 + REAL HOLE,ADDRESS; 07393000 + REAL J; LABEL OK; 07393100 + LABEL EXIT; 07394000 + SCATTERELBAT; 07395000 + HOLE~ ELBAT[I]; 07396000 + ADDRESS ~ ADDRSF; 07397000 + IF NESTOG THEN 07397100 + IF MODE!0 THEN 07397200 + IF TABLE(I+1)!ASSIGNOP THEN 07397210 + BEGIN FOR J~CALLINFO STEP 1 UNTIL CALLX DO 07397300 + IF CALL[J]=ADDRESS THEN GO TO OK; 07397400 + CALL[CALLX~CALLX+1]~ADDRESS; 07397500 + OK: END; 07397600 + CHECKER(HOLE); 07398000 + IF ELCLASS ! PROCID THEN 07399000 + IF NOT FORMALF THEN 07400000 + IF TABLE(I+1) = ASSIGNOP THEN 07401000 + BEGIN VARIABLE(2-REAL(FROM)); GO TO EXIT END; 07402000 + COMMENT CALL VARIABLE TO HANDLE THIS ASSIGNMENT OPERATION; 07403000 + IF ELCLASS ! PROCID EQV FROM 07404000 + THEN BEGIN ERR(159); GO TO EXIT END; 07405000 + COMMENT IT IS PROCEDURE IF AND ONLY WE COME FORM STMT; 07406000 + STEPIT; 07407000 + EMITO(MKS); 07408000 + IF ELCLASS = LEFTPAREN 07409000 + THEN ACTUALPARAPART(FALSE,GIT(HOLE)) 07410000 + ELSE IF FORMALF THEN L ~ L-1; 07411000 + ELSE IF TAKE(GIT(HOLE)).NODIMPART!0 THEN ERR(128); 07412000 + EMITV(ADDRESS); 07413000 + EXIT: END PROCSTMT; 07425000 + PROCEDURE STRMPROCSTMT; 07426000 + BEGIN REAL WHOLE,FIX,T1; 07427000 07428000 07429000 - WHOLE ~ ELBAT[I]; FIX ~ -1; 07430000 - IF ELCLASS ! STRPROCID THEN EMIT(0); 07431000 - IF WHOLE. LVL ! 1 THEN 07432000 - BEGIN FIX ~ L; L ~ L+1 END; 07433000 - EMITO(MKS); 07434000 - T1 ~ TAKEFRST.[1:6]; 07435000 - FOR GT1 ~ 1 STEP 1 UNTIL T1 DO EMIT(0); 07436000 - IF STEPI ! LEFTPAREN THEN ERR(128) 07437000 - ELSE BEGIN ACTUALPARAPART(TRUE,GIT(WHOLE)); 07438000 - IF FIX < 0 THEN EMITV(WHOLE,ADDRESS) 07439000 - ELSE BEGIN T1 ~ L; L ~ FIX; 07440000 - WHOLE ~ TAKE(GIT(WHOLE)); 07441000 - EMITNUM(T1+2-WHOLE.[16:12]); 07442000 - L ~ T1; 07443000 - EMITB(BBW,BUMPL,WHOLE.[28:12]); 07444000 - END; 07445000 - END END STRMPROCSTMT; 07446000 -INTEGER PROCEDURE BAE; 07458000 - BEGIN BAE ~ BUMPL; CONSTANTCLEAN; ADJUST END BAE; 07459000 -COMMENT RELSESTMT COMPILES THE RELEASE STATEMENT; 07460000 -COMMENT DOSTMT HANDLES THE DO STATEMENT; 07481000 -PROCEDURE DOSTMT; 07482000 - BEGIN INTEGER TL; 07483000 - FOULED ~ L; 07483500 + WHOLE ~ ELBAT[I]; FIX ~ -1; 07430000 + IF ELCLASS ! STRPROCID THEN EMIT(0); 07431000 + IF WHOLE. LVL ! 1 THEN 07432000 + BEGIN FIX ~ L; L ~ L+1 END; 07433000 + EMITO(MKS); 07434000 + T1 ~ TAKEFRST.[1:6]; 07435000 + FOR GT1 ~ 1 STEP 1 UNTIL T1 DO EMIT(0); 07436000 + IF STEPI ! LEFTPAREN THEN ERR(128) 07437000 + ELSE BEGIN ACTUALPARAPART(TRUE,GIT(WHOLE)); 07438000 + IF FIX < 0 THEN EMITV(WHOLE.ADDRESS) 07439000 + ELSE BEGIN T1 ~ L; L ~ FIX; 07440000 + WHOLE ~ TAKE(GIT(WHOLE)); 07441000 + EMITNUM(T1+2-WHOLE.[16:12]); 07442000 + L ~ T1; 07443000 + EMITB(BBW,BUMPL,WHOLE.[28:12]); 07444000 + END; 07445000 + END END STRMPROCSTMT; 07446000 + INTEGER PROCEDURE BAE; 07458000 + BEGIN BAE ~ BUMPL; CONSTANTCLEAN; ADJUST END BAE; 07459000 + COMMENT RELSESTMT COMPILES THE RELEASE STATEMENT; 07460000 + COMMENT DOSTMT HANDLES THE DO STATEMENT; 07481000 + PROCEDURE DOSTMT; 07482000 + BEGIN INTEGER TL; 07483000 + FOULED ~ L; 07483500 07484000 - STEPIT; T1~L; STMT; IF ELCLASS !UNTILV THEN ERR(131) 07485000 - ELSE BEGIN 07486000 - STEPIT; BEXP; EMITB(BBC,BUMPL,TL) END 07487000 - END DOSTMT; 07488000 -COMMENT WHILESTMT COMPILES THE WHILE STATEMENT; 07489000 -PROCEDURE WHILESTMT; 07490000 - BEGIN INTEGER BACK,FRONT; 07491000 - FOULED ~ L; 07491500 + STEPIT; TL~L; STMT; IF ELCLASS ! UNTILV THEN ERR(131)07485000 + ELSE BEGIN 07486000 + STEPIT; BEXP; EMITB(BBC,BUMPL,TL) END 07487000 + END DOSTMT; 07488000 + COMMENT WHILESTMT COMPILES THE WHILE STATEMENT; 07489000 + PROCEDURE WHILESTMT; 07490000 + BEGIN INTEGER BACK,FRONT; 07491000 + FOULED ~ L; 07491500 07492000 - STEPIT; BACK ~ L; BEXP; FRONT ~ BUMPL; 07493000 - IF ELCLASS ! DOV THEN ERR(132) ELSE 07494000 - BEGIN STEPIT; STMT; EMITB(BBW,BUMPL,BACK); 07495000 - CONSTANTCLEAN; EMITB(BFC,FRONT,L) END END WHILESTMT; 07496000 -COMMENT GOSTMT COMPILES GO TO STATEMENTS. GOSTMT LOOKS AT THE 07497000 - EXPRESSION. IF IT IS SIMPLE ENOUGH WE GO DIRECTLY, 07498000 - OTHERWISE A CALL ON THE MCP IS GENERATED IN ORDER TO GET 07499000 - STORAGE RETURNED. SEE DEXP AND GENGO; 07500000 -PROCEDURE GOSTMT; 07501000 - BEGIN 07502000 - REAL ELBW; 07503000 - LABEL GOMCP,EXIT; 07504000 - IF STEPI = TOV THEN STEPIT; 07505000 - IF ELCLASS = LABELID THEN TB1 ~ TRUE 07506000 - ELSE IF ELCLASS = SWITCHID THEN TB1 ~ FALSE 07507000 - ELSE BEGIN IF ELCLASS = POLISHV THEN 07511000 - BEGIN POLISHER(1); EMITO(BFW) END 07512000 - ELSE ERR(501); 07513000 - GO TO EXIT; 07514000 - END; 07515000 - IF NOT LOCAL(ELBAT[I]) THEN 07516000 - BEGIN 07516100 - IF TB1 THEN 07516200 - BEGIN EMITV(GNAT(ELBAT[I])); 07516300 - EMITO(BFW); 07516400 - STEPIT; 07516500 - GO TO EXIT END; 07516600 - BEGIN ERR(501); GO TO EXIT END; 07517000 - END; 07517500 - IF TB1 THEN BEGIN GOGEN(ELBAT[I],BFW); STEPIT; 07518000 - CONSTANTCLEAN; GO EXIT END 07519000 - ELSE BEGIN 07520000 - ELBW ~ ELBAT[I]; 07521000 + STEPIT; BACK ~ L; BEXP; FRONT ~ BUMPL; 07493000 + IF ELCLASS ! DOV THEN ERR(132) ELSE 07494000 + BEGIN STEPIT; STMT; EMITB(BBW,BUMPL,BACK); 07495000 + CONSTANTCLEAN; EMITB(BFC,FRONT,L) END END WHILESTMT; 07496000 + COMMENT GOSTMT COMPILES GO TO STATEMENTS. GOSTMT LOOKS AT THE 07497000 + EXPRESSION. IF IT IS SIMPLE ENOUGH WE GO DIRECTLY. 07498000 + OTHERWISE A CALL ON THE MCP IS GENERATED IN ORDER TO GET 07499000 + STORAGE RETURNED. SEE DEXP AND GENGO; 07500000 + PROCEDURE GOSTMT; 07501000 + BEGIN 07502000 + REAL ELBW; 07503000 + LABEL GOMCP,EXIT; 07504000 + IF STEPI = TOV THEN STEPIT; 07505000 + IF ELCLASS = LABELID THEN TB1 ~ TRUE 07506000 + ELSE IF ELCLASS = SWITCHID THEN TB1 ~ FALSE 07507000 + ELSE BEGIN IF ELCLASS = POLISHV THEN 07511000 + BEGIN POLISHER(1); EMITO(BFW) END 07512000 + ELSE ERR(501); 07513000 + GO TO EXIT 07514000 + END; 07515000 + IF NOT LOCAL(ELBAT[I]) THEN 07516000 + BEGIN 07516100 + IF TB1 THEN 07516200 + BEGIN EMITV(GNAT(ELBAT[I])); 07516300 + EMITO(BFW); 07516400 + STEPIT; 07516500 + GO TO EXIT END; 07516600 + BEGIN ERR(501); GO TO EXIT END; 07517000 + END; 07517500 + IF TB1 THEN BEGIN GOGEN(ELBAT[I],BFW); STEPIT; 07518000 + CONSTANTCLEAN; GO EXIT END 07519000 + ELSE BEGIN 07520000 + ELBW ~ ELBAT[I]; 07521000 07522000 - BANA; 07523000 - EMITO(DUP); 07524000 - EMITO(ADD); 07525000 - EMITO(BFW); 07526000 - GT3 ~ TAKE(GT4~GIT(ELBW))+GT4; 07527000 - FOR GT4 ~ GT4+1 STEP 1 UNTIL GT3 DO 07528000 - GOGEN(TAKE(GT4),BFW); 07529000 - END; 07530000 -EXIT: END GOSTMT; 07531000 -PROCEDURE GOGEN(LABELBAT,BRANCHTYPE); 07535000 - VALUE LABELBAT,BRANCHTYPE; 07536000 - REAL LABELBAT,BRANCHTYPE; 07537000 - BEGIN 07538000 - IF BOOLEAN(GT1~TAKE(GT2~GIT(LABELBAT))).[1:1] 07539000 - THEN EMITB(BRANCHTYPE,BUMPL,GT1.[36:12]) 07540000 - COMMENT LABELR SETS THE SIGN OF THE ADDITIONAL INFO FOR A LABEL 07541000 - NEGATIVE WHEN THE LABEL IS ENCOUNTERED. SO THIS MEANS 07542000 - THAT WE NOW KNOW WHERE TO GO; 07543000 - ELSE BEGIN EMIT(GT1); EMIT(BRANCHTYPE); 07544000 - PUT(GT1&L(36:36:12],GT2) END END GOGEN; 07545000 -COMMENT SIMPGO IS USED ONLY BY THE IF STMT ROUTINE. IT DETERMINES IF 07546000 - A STATEMENT IS A SIMPLE GO TO STATEMENT; 07547000 -BOOLEAN PROCEDURE SIMPGO; 07548000 - BEGIN LABEL EXIT; 07549000 - IF ELCLASS = GOV 07550000 - THEN BEGIN 07551000 - IF STEPI = TOV THEN STEPIT; 07552000 - IF ELCLASS = LABELID THEN 07553000 - IF LOCAL(ELBAT[I]) THEN 07554000 - BEGIN SIMPGO ~ TRUE; GO EXIT END; 07555000 - I ~ I-1; ELCLASS ~ GOV END; 07556000 - EXIT: END SIMPGO; 07557000 -COMMENT IFSTMT COMPILES IF STATEMENTS. SPECIAL CARE IS TAKEN TO 07558000 - OPTIMIZE CODE IN THE NEIGHBOURHOOD OF THE JUMPS. TO SOME 07559000 - EXTENT SUPPERFULOUS BRANCHING IS AVOIDED; 07560000 -PROCEDURE IFSTMT; 07561000 - BEGIN REAL T1,T2; LABEL EXIT; 07562000 - IFCLAUSE; 07563000 - IF SIMPGO 07564000 - THEN BEGIN 07565000 - T1 ~ ELBAT[I]; 07566000 - IF STEPI = ELSEV 07567000 - THEN BEGIN 07568000 - STEPI; 07569000 - IF SIMPGO 07570000 - THEN BEGIN 07571000 - GOGEN(ELBAT[I],BFC); GOGEN(T1,BFW); 07572000 - STEPIT; GO TO EXIT END ELSE BEGIN EMITLNG;GOGEN(T1,BFC); 07573000 - STMT ; GO TO EXIT END END ; 07574000 - EMITLNG; GOGEN(T1,BFC); 07575000 - GO EXIT END; 07576000 - T1 ~ BUMPL; STMT; 07577000 - IF ELCLASS ! ELSEV THEN 07578000 - BEGIN IF L-T1>1023 THEN ADJUST; EMITB(BFC,T1,L); 07579000 - GO EXIT END; 07579100 - STEPIT; 07580000 - IF SIMPGO 07581000 - THEN BEGIN 07582000 - T2 ~ L; L ~T1-2;GOGEN(ELBAT[I],BFC); L ~ T2; 07583000 - STEPIT; GO EXIT END; 07584000 - T2 ~ BUMPL; CONSTANTCLEAN; 07585000 - IF L-T1>1023 THEN ADJUST; EMITB(BFC,T1,L); STMT; 07585100 - IF L-T2>1023 THEN ADJUST; EMITB(BFW,T2,L); 07586000 -EXIT: END IFSTMT; 07587000 - COMMENT LABELR HANDLES LABELED STATEMENTS. IT PIUTS L INTO THE 07588000 + BANA; 07523000 + EMITO(DUP); 07524000 + EMITO(ADD); 07525000 + EMITO(BFW); 07526000 + GT3 ~ TAKE(GT4~GIT(ELBW))+GT4; 07527000 + FOR GT4 ~ GT4+1 STEP 1 UNTIL GT3 DO 07528000 + GOGEN(TAKE(GT4),BFW); 07529000 + END; 07530000 + EXIT: END GOSTMT; 07531000 + PROCEDURE GOGEN(LABELBAT,BRANCHTYPE); 07535000 + VALUE LABELBAT,BRANCHTYPE; 07536000 + REAL LABELBAT,BRANCHTYPE; 07537000 + BEGIN 07538000 + IF BOOLEAN(GT1~TAKE(GT2~GIT(LABELBAT))).[1:1] 07539000 + THEN EMITB(BRANCHTYPE,BUMPL,GT1.[36:12]) 07540000 + COMMENT LABELR SETS THE SIGN OF THE ADDITIONAL INFO FOR A LABEL 07541000 + NEGATIVE WHEN THE LABEL IS ENCOUNTERED. SO THIS MEANS 07542000 + THAT WE NOW KNOW WHERE TO GO; 07543000 + ELSE BEGIN EMIT(GT1); EMIT(BRANCHTYPE); 07544000 + PUT(GT1&L[36:36:12],GT2) END END GOGEN; 07545000 + COMMENT SIMPGO IS USED ONLY BY THE IF STMT ROUTINE. IT DETERMINES IF 07546000 + A STATEMENT IS A SIMPLE GO TO STATEMENT; 07547000 + BOOLEAN PROCEDURE SIMPGO; 07548000 + BEGIN LABEL EXIT; 07549000 + IF ELCLASS = GOV 07550000 + THEN BEGIN 07551000 + IF STEPI = TOV THEN STEPIT; 07552000 + IF ELCLASS = LABELID THEN 07553000 + IF LOCAL(ELBAT[I]) THEN 07554000 + BEGIN SIMPGO ~ TRUE; GO EXIT END; 07555000 + I ~ I-1; ELCLASS ~ GOV END; 07556000 + EXIT: END SIMPGO; 07557000 + COMMENT IFSTMT COMPILES IF STATEMENTS. SPECIAL CARE IS TAKEN TO 07558000 + OPTIMIZE CODE IN THE NEIGHBORHOOD OF THE JUMPS. TO SOME 07559000 + EXTENT SUPPERFULOUS BRANCHING IS AVOIDED; 07560000 + PROCEDURE IFSTMT; 07561000 + BEGIN REAL T1,T2; LABEL EXIT; 07562000 + IFCLAUSE; 07563000 + IF SIMPGO 07564000 + THEN BEGIN 07565000 + T1 ~ ELBAT[I]; 07566000 + IF STEPI = ELSEV 07567000 + THEN BEGIN 07568000 + STEPIT; 07569000 + IF SIMPGO 07570000 + THEN BEGIN 07571000 + GOGEN(ELBAT[I],BFC); GOGEN(T1,BFW); 07572000 + STEPIT; GO TO EXIT END ELSE BEGIN EMITLNG;GOGEN(T1,BFC); 07573000 + STMT ; GO TO EXIT END END ; 07574000 + EMITLNG; GOGEN(T1,BFC); 07575000 + GO EXIT END; 07576000 + T1 ~ BUMPL; STMT; 07577000 + IF ELCLASS ! ELSEV THEN 07578000 + BEGIN IF L-T1>1023 THEN ADJUST; EMITB(BFC,T1,L); 07579000 + GO EXIT END; 07579100 + STEPIT; 07580000 + IF SIMPGO 07581000 + THEN BEGIN 07582000 + T2 ~ L; L ~T1-2;GOGEN(ELBAT[I],BFC); L ~ T2; 07583000 + STEPIT; GO EXIT END; 07584000 + T2 ~ BUMPL; CONSTANTCLEAN; 07585000 + IF L-T1>1023 THEN ADJUST; EMITB(BFC,T1,L); STMT; 07585100 + IF L-T2>1023 THEN ADJUST; EMITB(BFW,T2,L); 07586000 + EXIT: END IFSTMT; 07587000 + COMMENT LABELR HANDLES LABELED STATEMENTS. IT PUTS L INTO THE 07588000 ADDITIONAL INFO AND MAKES ITS SIGN NEGATIVE. IT COMPILES 07589000 AT THE SAME TIME ALL THE PREVIOUS FORWARD REFERENCES SET 07590000 UP FOR IT BY GOGEN. (THE ADDITIONAL INFO LINKS TO A LIST 07591000 IN THE CODE ARRAY OF ALL FORWARD REFERENCES); 07592000 PROCEDURE LABELR; 07593000 - BEGIN LABEL EXIT, ROUND; 07594000 + BEGIN LABEL EXIT, ROUND; 07594000 DEFINE ELBATWORD=RR9#,LINK=GT2#,INDEX=GT3#,ADDITIONAL 07595000 =GT4#,NEXTLINK=GT5#; 07596000 REAL OLDL; 07596500 DO BEGIN OLDL ~ L; 07597000 IF STEPI ! COLON THEN 07597500 BEGIN ERR(133); GO TO EXIT END; 07598000 - IF NOT LOCAL(ELBATWORD + ELBAT[I-1]) 07599000 + IF NOT LOCAL(ELBATWORD ~ ELBAT[I-1]) 07599000 THEN BEGIN FLAG(134); GO TO ROUND END; 07600000 IF STEPI = COLON THEN 07600100 BEGIN I ~ I-1; ADJUST END ELSE 07600200 @@ -3889,7 +3891,7 @@ DEFINE ELBATWORD=RR9#,LINK=GT2#,INDEX=GT3#,ADDITIONAL 07595000 PUT(-ADDITIONAL&L[36:36:12],INDEX); 07610000 ROUND: ERRORTOG ~ TRUE END UNTIL STEPI ! LABELID; 07645000 EXIT: END LABELR; 07646000 -PROCEDURE FILLSTMT(SIZE)); VALUE SIZE; INTEGER SIZE; 07647000 +PROCEDURE FILLSTMT(SIZE); VALUE SIZE; INTEGER SIZE; 07647000 BEGIN 07647500 COMMENT "COCT" PERFORMS THE OCTAL CONVERT FOR THE FILL STATEMENT. 07648000 IF THERE ARE ANY NON-OCTAL DIGITS, THIS PROCEDURE RETURNS 07648500 @@ -3897,24 +3899,24 @@ COMMENT "COCT" PERFORMS THE OCTAL CONVERT FOR THE FILL STATEMENT. 07648000 RESET AND IGNORED AND ERROR NUMBER 303 IS PRINTED. "COCT" 07649500 ALLOWS FLAG BITS TO BE SET, WHEREAS "OCTIZE" DOES NOT. 07650000 N NUMBER OF CHARACTERS TO BE CONVERTED. 07650500 - SKBIT NUMBER OF ITS TO SKIP BEFORE STARTING CONVERSION. 07651000 + SKBIT NUMBER OF BITS TO SKIP BEFORE STARTING CONVERSION. 07651000 THIS IS BECAUSE THE NO. OF CHARS. MAY BE LESS THAN 07651500 8 AND IT MUST BE RIGHT JUSTIFIED IN CD(CODEFILE). 07652000 ACC ADDRESS OF THE ACCUM WHERE ALPHA INFO IS KEPT. 07652500 ; 07653000 REAL STREAM PROCEDURE COCT(N,SKBIT,ACC,CD);VALUE N,SKBIT; 07653500 BEGIN 07654000 - SI:=ACC; SI:=SI+6; DI:=CD; DS:=8 LIT"00000000"; 07654500 + SI:=ACC; SI:=SI+6; DI:=CD; DS:=8 LIT"00000000"; 07654500 DI:=CD ; SKIP SKBIT DB;TALLY:=1; 07655000 N(IF SC>"7"THEN TALLY:=0; SKIP 3 SB; 07655500 - 3(IF SB THEN DS:=1 SET ELSE SKIP 1 DB;SKIP 1 SB)); 07656000 - COCT:=TALLY; 07656500 + 3(IF SB THEN DS:=1 SET ELSE SKIP 1 DB; SKIP 1 SB)); 07656000 + COCT:=TALLY 07656500 END COCT; 07657000 - REAL T2; 07657500 + REAL T2; 07657500 LABEL L1; 07658000 STREAM PROCEDURE ZEERO(D); 07658500 BEGIN 07659000 - DI:=0;DS:=8 LIT"00000000"; 07659500 + DI:=D;DS:=8 LIT"00000000"; 07659500 SI:=D;31(32(DS:=WDS)); DS:=30 WDS; 07660000 END ZEERO; 07660500 STREAMTOG:=BOOLEAN(2); 07661000 @@ -3930,21 +3932,21 @@ ELSE BEGIN 07662500 IF ELCLASS=ADOP AND 07666000 (STEPI=NONLITNO OR ELCLASS=LITNO) THEN 07666500 C:=C & ELBAT[I-1][1:21:1] 07667000 - ELSE BEGIN ERROR(302); GO TO L1 END; 07667500 - IF ELCLASS=STRNGCON AND COUNT=8 THEN 07668000 - MOVECHARACTERS(8,ACCUM[1],3,CODE(T2),0) 07668500 - ELSE MOVE(1,C,CODE(T2)) 07669000 - END 07669500 - ELSE IF COUNT{19 AND ACCUM[1].[18:18]="OCT" THEN 07670000 - BEGIN 07670500 - IF COCT(COUNT-3,48-(COUNT-3)|3,ACCUM[1], 07671000 - CODE(T2))=0 THEN FLAG(303) 07671500 - END 07672000 - ELSE BEGIN ERROR(302); GO TO L1 END; 07672500 - IF STEPI!COMMA THEN GO TO L1 07673000 - END; 07673500 - ERROR(54); 07674000 - END; 07674500 + ELSE BEGIN ERROR(302); GO TO L1 END; 07667500 + IF ELCLASS=STRNGCON AND COUNT=8 THEN 07668000 + MOVECHARACTERS(8,ACCUM[1],3,CODE(T2),0) 07668500 + ELSE MOVE(1,C,CODE(T2)) 07669000 + END 07669500 + ELSE IF COUNT{19 AND ACCUM[1].[18:18]="OCT" THEN 07670000 + BEGIN 07670500 + IF COCT(COUNT-3,48-(COUNT-3)|3,ACCUM[1], 07671000 + CODE(T2))=0 THEN FLAG(303) 07671500 + END 07672000 + ELSE BEGIN ERROR(302); GO TO L1 END; 07672500 + IF STEPI!COMMA THEN GO TO L1 07673000 + END; 07673500 + ERROR(54); 07674000 + END; 07674500 L1: 07675000 RIGHT(SIZE|4); 07675500 STREAMTOG:=FALSE; 07676000 @@ -3968,7 +3970,7 @@ L1: 07675000 L51, L52, L53, L54; 07725000 LABEL AGAIN,EXIT; 07726000 STACKCT ~ 0; 07726990 - AGAIN: GO TO S[ELCLASS]; 07727000 + AGAIN: GO TO S[ELCLASS]; 07727000 IF ELCLASS = COLON THEN 07727010 BEGIN STEPIT; GT1 ~ L; 07727020 IF ELCLASS = COLON THEN 07727030 @@ -3981,8 +3983,8 @@ L1: 07675000 GO TO AGAIN; 07727100 END; 07727110 IF ELCLASS = 0 THEN FLAG(100); FLAG(145); 07728000 -L1:L2:L3:L4:L5:L6;L9:L11:L13:L14:L15:L16;L17:L20:L21:L25:L28:L29:L24: 07729000 -L33:L34:L35:L36;L37:L39: 07730000 + L1:L2:L3:L4:L5:L6:L9:L11:L13:L14:L15:L16:L17:L20:L21:L25:L28:L29:L24: 07729000 +L33:L34:L35:L36:L37:L39: 07730000 ERR(144); GO TO EXIT; 07731000 L7:L8: 07732000 SUBHAND(TRUE); GO TO EXIT; 07733000 @@ -4002,7 +4004,7 @@ L33:L34:L35:L36;L37:L39: 07730000 FLAG(146); 07747000 IF TABLE(I-2) = ENDV AND MODE > 0 THEN 07748000 BEGIN I ~ I-2; ELCLASS ~ ENDV; GO TO EXIT END; 07749000 - I ~ I-1; ERRORTOG ~ TRUE;BLOCK(FALSE); 07750000 + I ~ I-1; ERRORTOG ~ TRUE; BLOCK(FALSE); 07750000 ELCLASS ~ TABLE(I~I-1); GO TO EXIT; 07751000 L42: 07752000 DBLSTMT; GO TO EXIT; 07753000 @@ -4021,14 +4023,14 @@ L33:L34:L35:L36;L37:L39: 07730000 L54: 07766000 IF STEPI = DECLARATORS THEN 07767000 BEGIN 07768000 - IF ELBAT[I].ADDRESS = STREAMV THEN IF STEPI = % 6 07768100 - LEFTPAREN THEN % 6 07768110 - BEGIN % 6 07768120 + IF ELBAT[I].ADDRESS = STREAMV THEN IF STEPI = % 6 07768100 + LEFTPAREN THEN % 6 07768110 + BEGIN % 6 07768120 ELCLASS~TABLE(I~I-1) ; 07768130 COMPOUNDTAIL ; 07768140 GO TO EXIT ; 07768160 - END ELSE I ~ I - 1; % 6 07768170 - I ~ I - 1; % 6 07768180 + END ELSE I ~ I - 1; % 6 07768170 + I ~ I - 1; % 6 07768180 BLOCK(FALSE); END ELSE COMPOUNDTAIL; 07768200 L46:L47:L48:L50: 07769000 L49:L41: 07770000 @@ -4039,210 +4041,210 @@ L33:L34:L35:L36;L37:L39: 07730000 BEGIN EMIT(ELBAT[I-1].ADDRESS>1[41:47:1]>1[36:44:3]); 07995000 STEPIT 07996000 END SCOPE STATEMENT; 07997000 -PROCEDURE FORSTMT; 08008000 - BEGIN 08009000 - OWN REAL B,STMTSTART,REGO,RETURNSTORE,ADDRES,V,VRET, 08010000 - BRET; 08011000 - OWN BOOLEAN SIGNA,SIGNB,SIGNC, INT, 08012000 - CONSTANA,CONSTANB,CONSTANC; 08013000 - DEFINE SIMPLEB = SIGNC#, FORMALV = SIGNA#, 08014000 - SIMPLEV = CONSTANA#, A = V #, Q = REGO#, 08015000 - OPDC = TRUE#, DESC = FALSE#, K = BRET#; 08016000 - LABEL EXIT; 08017000 -COMMENT PLUG EMITS EITHER AN OPERAND CALL ON A VARIABLE OR A CALL ON A 08018000 - CONSTANT DEPENDING ON THE REQUIREMENTS; 08019000 -PROCEDURE PLUG(C,A); VALUE C,A; REAL A; BOOLEAN C; 08020000 - IF C THEN EMITNUM(A) ELSE EMITV(A,ADDRESS); 08021000 -COMMENT SIMPLE DETERMINES IF AN ARITHMETIC EXPRESSION IS + OR - A 08022000 - CONSTANT OR A SIMPLE VARIABLE. IT MAKES A THROUGH REPORT 08023000 - ON ITS ACTIVITY. IT ALSO MAKES PROVISION FOR THE RESCAN 08024000 - OF ELBAT (THIS IS THE ACTION WITH K - SEE CODE IN THE 08025000 - TABLE ROUTINE FOR FURTHER DETAILS); 08026000 -BOOLEAN PROCEDURE SIMPLE(B,A,S); BOOLEAN B,S; REAL A; 08027000 - BEGIN 08028000 - S ~ IF STEPI ! ADOP THEN FALSE ELSE ELBAT[I].ADDRESS 08029000 + PROCEDURE FORSTMT; 08008000 + BEGIN 08009000 + OWN REAL B,STMTSTART,REGO,RETURNSTORE,ADDRES,V,VRET, 08010000 + BRET; 08011000 + OWN BOOLEAN SIGNA,SIGNB,SIGNC, INT, 08012000 + CONSTANA,CONSTANB,CONSTANC; 08013000 + DEFINE SIMPLEB = SIGNC#, FORMALV = SIGNA#, 08014000 + SIMPLEV = CONSTANA#, A = V#, Q = REGO#, 08015000 + OPDC = TRUE#, DESC = FALSE#, K = BRET#; 08016000 + LABEL EXIT; 08017000 + COMMENT PLUG EMITS EITHER AN OPERAND CALL ON A VARIABLE OR A CALL ON A 08018000 + CONSTANT DEPENDING ON THE REQUIREMENTS; 08019000 + PROCEDURE PLUG(C,A); VALUE C,A; REAL A; BOOLEAN C; 08020000 + IF C THEN EMITNUM(A) ELSE EMITV(A,ADDRESS); 08021000 + COMMENT SIMPLE DETERMINES IF AN ARITHMETIC EXPRESSION IS + OR - A 08022000 + CONSTANT OR A SIMPLE VARIABLE. IT MAKES A THROUGH REPORT 08023000 + ON ITS ACTIVITY. IT ALSO MAKES PROVISION FOR THE RESCAN 08024000 + OF ELBAT (THIS IS THE ACTION WITH K - SEE CODE IN THE 08025000 + TABLE ROUTINE FOR FURTHER DETAILS); 08026000 + BOOLEAN PROCEDURE SIMPLE(B,A,S); BOOLEAN B,S; REAL A; 08027000 + BEGIN 08028000 + S ~ IF STEPI ! ADOP THEN FALSE ELSE ELBAT[I].ADDRESS 08029000 = SUB; 08030000 - IF ELCLASS = ADOP THEN STEPIT; 08031000 - IF ELCLASS } NONLITNO AND ELCLASS { STRNGCON 08032000 - THEN BEGIN K ~ K+1; SIMPLE ~ TRUE; 08033000 - ELBAT[I] ~ 0&COMMENTV(2:41:7]&K[16:37:11]; 08034000 - INFO[0,K] ~ A + C; B ~ TRUE END 08035000 - ELSE BEGIN 08036000 - B ~ FALSE; A ~ ELBAT[I]; 08037000 - SIMPLE ~ REALID { ELCLASS AND ELCLASS { INTID END; 08038000 - STEPIT END SIMPLE; 08039000 -COMMENT TEST EMITS THE STEP-UNTIL ELEMENT TST; 08040000 -PROCEDURE TEST; 08041000 - BEGIN 08042000 - IF NOT CONSTANB THEN 08043000 - BEGIN EMITO(SUB); IF SIMPLEB THEN EMITV(B,ADDRESS) 08044000 - ELSE BEGIN 08045000 - EMITL(2+L-BRET); 08046000 - EMITB(BBW,BUMPL,B); 08047000 - END; 08048000 - EMITO(MUL); EMIT(0) END; 08049000 - EMITO(IF SIGNB THEN GEQ ELSE LEQ); EMIT (0); L~L-1; 08050000 - END TEST; 08051000 -BOOLEAN PROCEDURE SIMPI(ALL); VALUE ALL; REAL ALL; 08052000 - BEGIN 08053000 - CHECKER(VRET~ALL); 08054000 - ADDRES ~ ALL.ADDRESS; 08055000 - FORMALV ~ ALL.[9:2] = 2; 08056000 - IF T ~ ALL.CLASS > INTARRAYID OR T < BOOID OR 08057000 - GT1 ~ (T.BOOID) MOD 4 < 1 THEN 08058000 - ERR(REAL(T ! 0) | 51 + 100); 08059000 - INT ~ GT1 = 2; 08060000 - SIMPI ~ T { INTID END SIMPI; 08061000 -COMMENT STORE EMITS THE CODE FOR THE STORE INTO THE FOR INDEX; 08062000 -PROCEDURE STORE(S); VALUE S; BOOLEAN S; 08063000 - BEGIN 08064000 - IF FORMALLY THEN BEGIN EMITO(XCH); S ~ FALSE END 08065000 - ELSE BEGIN 08066000 - EMITL(ADDRES); 08067000 - IF ADDRES > 1023 THEN EMITO(PRTE) END; 08068000 - T ~ (REAL(S)+1)|16; 08069000 - EMITO((IF INT THEN T+512 ELSE 4|T)+4) END STORE; 08070000 -COMMENT CALL EFFECTS A CALL ON THE INDEX; 08071000 -PROCEDURE CALL(S); VALUE S; BOOLEAN S; 08072000 - BEGIN 08073000 - IF SIMPLEV 08074000 - THEN IF S THEN EMITV(ADDRES) ELSE EMITN(ADDRES) 08075000 - ELSE BEGIN 08076000 - EMITL(2+L-VRET); 08077000 - EMITB(BBW,BUMPL,V); 08078000 - IF S THEN EMITO(LOD) END END CALL; 08079000 -PROCEDURE FORLIST(NUMLE); VALUE NUMLE; BOOLEAN NUMLE; 08080000 - BEGIN 08081000 -PROCEDURE FIX(STORE,BACK,FORWART,START); 08082000 - VALUE STORE,BACK,FORWART,START; 08083000 - REAL STORE,BACK,FORWART,START; 08084000 - BEGIN 08085000 - EMITB(GET(FORWART-1),FORWART,START); 08086000 - IF RETURNSTORE ! 0 08087000 - THEN BEGIN 08088000 - L ~ STORE; EMITNUM(B-BACK); 08089000 - EMITPAIR(RETURNSTORE,STD) END END FIX; 08090000 - INTEGER BACKFIX, FORWARDBRANCH, FOOT, STOREFIX; 08091000 - LABEL BRNCH,EXIT; 08092000 - STOREFIX ~ L; Q ~ REAL(MOD=0)+3; 08093000 - FOR K ~ 1 STEP 1 UNTIL Q DO EMITO(NOP); 08094000 - IF NUMLE 08095000 - THEN BEGIN 08096000 - BACKFIX ~ L; 08097000 - IF FORMALLY THEN CALL(DESC) END 08098000 - ELSE BACKFIX ~ V + REAL(SIMPLEV)-1; 08099000 + IF ELCLASS = ADOP THEN STEPIT; 08031000 + IF ELCLASS } NONLITNO AND ELCLASS { STRNGCON 08032000 + THEN BEGIN K ~ K+1; SIMPLE ~ TRUE; 08033000 + ELBAT[I] ~ 0&COMMENTV[2:41:7]&K[16:37:11]; 08034000 + INFO[0,K] ~ A ~ C; B ~ TRUE END 08035000 + ELSE BEGIN 08036000 + B ~ FALSE; A ~ ELBAT[I]; 08037000 + SIMPLE ~ REALID { ELCLASS AND ELCLASS { INTID END; 08038000 + STEPIT END SIMPLE; 08039000 + COMMENT TEST EMITS THE STEP-UNTIL ELEMENT TEST; 08040000 + PROCEDURE TEST; 08041000 + BEGIN 08042000 + IF NOT CONSTANB THEN 08043000 + BEGIN EMITO(SUB); IF SIMPLEB THEN EMITV(B.ADDRESS) 08044000 + ELSE BEGIN 08045000 + EMITL(2+L-BRET); 08046000 + EMITB(BBW,BUMPL,B); 08047000 + END; 08048000 + EMITO(MUL); EMIT(0) END; 08049000 + EMITO(IF SIGNB THEN GEQ ELSE LEQ); EMIT (0); L~L-1 08050000 + END TEST; 08051000 + BOOLEAN PROCEDURE SIMPI(ALL); VALUE ALL; REAL ALL; 08052000 + BEGIN 08053000 + CHECKER(VRET~ALL); 08054000 + ADDRES ~ ALL.ADDRESS; 08055000 + FORMALV ~ ALL.[9:2] = 2; 08056000 + IF T ~ ALL.CLASS > INTARRAYID OR T < BOOID OR 08057000 + GT1 ~ (T-BOOID) MOD 4 < 1 THEN 08058000 + ERR(REAL(T ! 0) | 51 + 100); 08059000 + INT ~ GT1 = 2; 08060000 + SIMPI ~ T { INTID END SIMPI; 08061000 + COMMENT STORE EMITS THE CODE FOR THE STORE INTO THE FOR INDEX; 08062000 + PROCEDURE STORE(S); VALUE S; BOOLEAN S; 08063000 + BEGIN 08064000 + IF FORMALV THEN BEGIN EMITO(XCH); S ~ FALSE END 08065000 + ELSE BEGIN 08066000 + EMITL(ADDRES); 08067000 + IF ADDRES > 1023 THEN EMITO(PRTE) END; 08068000 + T ~ (REAL(S)+1)|16; 08069000 + EMITO((IF INT THEN T+512 ELSE 4|T)+4) END STORE; 08070000 + COMMENT CALL EFFECTS A CALL ON THE INDEX; 08071000 + PROCEDURE CALL(S); VALUE S; BOOLEAN S; 08072000 + BEGIN 08073000 + IF SIMPLEV 08074000 + THEN IF S THEN EMITV(ADDRES) ELSE EMITN(ADDRES) 08075000 + ELSE BEGIN 08076000 + EMITL(2+L-VRET); 08077000 + EMITB(BBW,BUMPL,V); 08078000 + IF S THEN EMITO(LOD) END END CALL; 08079000 + PROCEDURE FORLIST(NUMLE); VALUE NUMLE; BOOLEAN NUMLE; 08080000 + BEGIN 08081000 + PROCEDURE FIX(STORE,BACK,FORWART,START); 08082000 + VALUE STORE,BACK,FORWART,START; 08083000 + REAL STORE,BACK,FORWART,START; 08084000 + BEGIN 08085000 + EMITB(GET(FORWART-1),FORWART,START); 08086000 + IF RETURNSTORE ! 0 08087000 + THEN BEGIN 08088000 + L ~ STORE; EMITNUM(B-BACK); 08089000 + EMITPAIR(RETURNSTORE,STD) END END FIX; 08090000 + INTEGER BACKFIX, FORWARDBRANCH, FOOT, STOREFIX; 08091000 + LABEL BRNCH,EXIT; 08092000 + STOREFIX ~ L; Q ~ REAL(MODE=0)+3; 08093000 + FOR K ~ 1 STEP 1 UNTIL Q DO EMITO(NOP); 08094000 + IF NUMLE 08095000 + THEN BEGIN 08096000 + BACKFIX ~ L; 08097000 + IF FORMALV THEN CALL(DESC) END 08098000 + ELSE BACKFIX ~ V + REAL(SIMPLEV)-1; 08099000 08100000 - AEXP; 08101000 - COMMENT PICK UP FIRST ARITHMETIC EXPRESSION; 08102000 - IF ELCLASS = STEPV 08103000 - THEN BEGIN 08104000 - COMMENT HERE WE HAVE A STEP ELEMENT; 08105000 - BACKFIX ~ BUMPL; 08106000 - COMMENT LEAVE ROOM FOR FORWARD JUMP; 08107000 - IF FORMALLY THEN CALL(DESC); CALL(OPDC); 08108000 - COMMENT FETCH INDEX; 08109000 - IF I > 70 THEN BEGIN NXTELBT ~ 1; I ~ 0 END 08110000 - ELSE REGO ~ I; 08111000 - IF SIMPLEB ~ SIMPLE(CONSTANB,B,SIGNB) AND 08112000 - (ELCLASS = UNTILV OR ELCLASS = WHILEV) 08113000 - THEN BEGIN 08114000 - COMMENT WE HAVE A SIMPLE STEP FUNCTION; 08115000 - PLUG(CONSTANB ,B); 08116000 - END ELSE BEGIN 08117000 - COMMENT THE STEP FUNCTION IS NOT SIMPLE: WE CONSTRUCT A 08118000 - SUBROUTINE; 08119000 - I ~ IF I < 4 THEN 0 ELSE REGO; STEPIT; 08120000 - SIGNB ~ CONSTANB ~ FALSE; 08121000 - EMIT(0); B ~ L; 08122000 - AEXP; EMITO(XCH); 08123000 - BRET ~ L; 08124000 - EMITO(BFW) END; 08125000 - EMITO(REAL(SIGNB)|32+ADD); 08126000 - EMITB(BFW,BACKFIX,L); 08127000 - IF ELCLASS = UNTILV 08128000 - THEN BEGIN COMMENT STEP-UNTIL ELEMENT; 08129000 - STORE(TRUE); IF FORMALV THEN CALL(OPDC); 08130000 - STEPIT; AEXP; TEST END 08131000 - ELSE BEGIN COMMENT STEP-WHILE ELEMENT; 08132000 - IF ELCLASS ! WHILEV THEN 08133000 - BEGIN ERR(153); GO TO EXIT END; 08134000 - STEPIT; STORE(FALSE); BEXP END END 08135000 - ELSE BEGIN 08136000 - COMMENT WE DO NOT HAVE A STEP ELEMENT; 08137000 - STORE(FALSE); 08138000 - IF ELCLASS = WHILEV 08139000 - THEN BEGIN 08140000 - COMMENT WE HAVE A WHILE ELEMENT 08141000 - STEPIT; BEXP END 08142000 - ELSE BEGIN 08143000 - COMMENT ONE EXPRESSION ELEMENT; 08144000 - IF ELCLASS ! COMMA THEN BEGIN 08145000 - EMITB(BFW,BUMPL,L+2); BACKFIX ~ L END 08146000 - ELSE BACKFIX ~ L + 2; 08147000 - L ~ L + 1; EMIT(BFW); GO TO BRNCH END END; 08148000 - COMMENT THIS IS THE COMMON POINT; 08149000 - IF ELCLASS = COMMA THEN EMITLNG; L ~ L + 1; 08150000 - EMIT(BFC); 08151000 -BRANCH: FORWARDBRANCH ~ L; DIALA ~ DIALB ~ 0; 08152000 - IF ELCLASS = COMMA 08153000 - THEN BEGIN 08154000 - STEPIT; 08155000 - FORLIST(TRUE); 08156000 - FIX(STOREFIX,BACKFIX,FORWARDBRANCH,STMTSTART) END 08157000 - ELSE BEGIN 08158000 - IF ELCLASS ! DOV 08159000 - THEN BEGIN ERR(154); REGO~L; GO EXIT END; 08160000 - STEPIT; 08161000 - IF NUMLE THEN FOOT := GETSPACE(FALSE,-1); % TEMP. 08162000 - STMT; 08163000 + AEXP; 08101000 + COMMENT PICK UP FIRST ARITHMETIC EXPRESSION; 08102000 + IF ELCLASS = STEPV 08103000 + THEN BEGIN 08104000 + COMMENT HERE WE HAVE A STEP ELEMENT; 08105000 + BACKFIX ~ BUMPL; 08106000 + COMMENT LEAVE ROOM FOR FORWARD JUMP; 08107000 + IF FORMALV THEN CALL(DESC); CALL(OPDC); 08108000 + COMMENT FETCH INDEX; 08109000 + IF I > 70 THEN BEGIN NXTELBT ~ 1; I ~ 0 END 08110000 + ELSE REGO ~ I; 08111000 + IF SIMPLEB ~ SIMPLE(CONSTANB,B,SIGNB) AND 08112000 + (ELCLASS = UNTILV OR ELCLASS = WHILEV) 08113000 + THEN BEGIN 08114000 + COMMENT WE HAVE A SIMPLE STEP FUNCTION; 08115000 + PLUG(CONSTANB ,B); 08116000 + END ELSE BEGIN 08117000 + COMMENT THE STEP FUNCTION IS NOT SIMPLE: WE CONSTRUCT A 08118000 + SUBROUTINE; 08119000 + I ~ IF I < 4 THEN 0 ELSE REGO; STEPIT; 08120000 + SIGNB ~ CONSTANB ~ FALSE; 08121000 + EMIT(0); B ~ L; 08122000 + AEXP; EMITO(XCH); 08123000 + BRET ~ L; 08124000 + EMITO(BFW) END; 08125000 + EMITO(REAL(SIGNB)|32+ADD); 08126000 + EMITB(BFW,BACKFIX,L); 08127000 + IF ELCLASS = UNTILV 08128000 + THEN BEGIN COMMENT STEP-UNTIL ELEMENT; 08129000 + STORE(TRUE); IF FORMALV THEN CALL(OPDC); 08130000 + STEPIT; AEXP; TEST END 08131000 + ELSE BEGIN COMMENT STEP-WHILE ELEMENT; 08132000 + IF ELCLASS ! WHILEV THEN 08133000 + BEGIN ERR(153); GO TO EXIT END; 08134000 + STEPIT; STORE(FALSE); BEXP END END 08135000 + ELSE BEGIN 08136000 + COMMENT WE DO NOT HAVE A STEP ELEMENT; 08137000 + STORE(FALSE); 08138000 + IF ELCLASS = WHILEV 08139000 + THEN BEGIN 08140000 + COMMENT WE HAVE A WHILE ELEMENT; 08141000 + STEPIT; BEXP END 08142000 + ELSE BEGIN 08143000 + COMMENT ONE EXPRESSION ELEMENT; 08144000 + IF ELCLASS ! COMMA THEN BEGIN 08145000 + EMITB(BFW,BUMPL,L+2); BACKFIX ~ L END 08146000 + ELSE BACKFIX ~ L + 2; 08147000 + L ~ L+1; EMIT(BFW); GO TO BRNCH END END; 08148000 + COMMENT THIS IS THE COMMON POINT; 08149000 + IF ELCLASS = COMMA THEN EMITLNG; L ~ L+1; 08150000 + EMIT(BFC); 08151000 + BRNCH: FORWARDBRANCH ~ L; DIALA ~ DIALB ~ 0; 08152000 + IF ELCLASS = COMMA 08153000 + THEN BEGIN 08154000 + STEPIT; 08155000 + FORLIST(TRUE); 08156000 + FIX(STOREFIX,BACKFIX,FORWARDBRANCH,STMTSTART) END 08157000 + ELSE BEGIN 08158000 + IF ELCLASS ! DOV 08159000 + THEN BEGIN ERR(154); REGO~L; GO EXIT END; 08160000 + STEPIT; 08161000 + IF NUMLE THEN FOOT := GETSPACE(FALSE,-1); % TEMP. 08162000 + STMT; 08163000 08164000 - IF NUMLE THEN BEGIN 08165000 - EMITV(RETURNSTORE ~ FOOT); EMITO(BBW) END 08166000 - ELSE BEGIN 08167000 - EMITB(BBW,BUMPL,BACKFIX); RETURNSTORE ~ 0 END; 08168000 - STMTSTART ~ FORWARDBRANCH; B ~ L; 08169000 - CONSTANTCLEAN; REGO ~ L; 08170000 - FIX(STOREFIX,BACKFIX,FORWARDBRANCH,L) END; 08171000 -EXIT: END FORLIST; 08172000 -REAL T1,T2,T2,T4; 08173000 - NXTELBT ~ 1; I ~ 0; 08174000 - STEPIT; 08175000 - IF SIMPI(VRET+ELBAT[I]) 08176000 - THEN BEGIN 08177000 - IF STEPI ! ASSIGNOP THEN BEGIN ERR(152); GO EXIT END; 08178000 - T1 ~ L; IF FORMALV THEN EMITN(ADDRES); 08179000 - K ~ 0; 08180000 - IF SIMPLE(CONSTANA,A,SIGNA) THEN 08181000 - IF ELCLASS = STEPV THEN 08182000 - IF SIMPLE(CONSTANB,B,SIGNB) THEN 08183000 - IF ELCLASS = UNTILV THEN 08184000 - IF SIMPLE(CONSTANC,Q,SIGNC) THEN 08185000 - IF ELCLASS = DOV THEN 08186000 - BEGIN 08187000 - PLUG(CONSTANA,A); 08188000 - IF SIGNA THEN EMITO(CHS); 08189000 - RETURNSTORE ~ BUMPL; ADJUST; CONSTANTCLEAN; 08190000 - STMTSTART ~ L; 08191000 - STEPIT; 08192000 - T1 ~ ((((4096 | RETURNSTORE+STMTSTART)X2+ 08193000 - REAL(CONSTANB))|2+ 08194000 - REAL(CONSTANC))|2+ 08195000 - REAL(SIGNB))|2+ 08196000 - REAL(SIGNC); 08197000 - T2 ~ VRET; 08198000 - T3 ~ B; 08199000 - T4 ~ Q; 08200000 - STMT; 08201000 - SIGNC ~ BOOLEAN(T1.[47:1]); 08202000 - SIGNB ~ BOOLEAN(T1.[46:1]); 08203000 - CONSTANC ~ BOOLEAN(T1.[45:1]); 08204000 - CONSTANB ~ BOOLEAN(T1.[44:1]); 08205000 - STMTSTART ~ T1.[20:12]; 08206000 - RETURNSTORE ~ T1.[20:12]; 08207000 - VRET ~ T2; 08208000 - B ~ T3; 08209000 - Q ~ T4; 08210000 - SIMPLEV ~ SIMPI(VRET); 08211000 + IF NUMLE THEN BEGIN 08165000 + EMITV(RETURNSTORE ~ FOOT); EMITO(BBW) END 08166000 + ELSE BEGIN 08167000 + EMITB(BBW,BUMPL,BACKFIX); RETURNSTORE ~ 0 END; 08168000 + STMTSTART ~ FORWARDBRANCH; B ~ L; 08169000 + CONSTANTCLEAN; REGO ~ L; 08170000 + FIX(STOREFIX,BACKFIX,FORWARDBRANCH,L) END; 08171000 + EXIT: END FORLIST; 08172000 + REAL T1,T2,T3,T4; 08173000 + NXTELBT ~ 1; I ~ 0; 08174000 + STEPIT; 08175000 + IF SIMPI(VRET~ELBAT[I]) 08176000 + THEN BEGIN 08177000 + IF STEPI ! ASSIGNOP THEN BEGIN ERR(152); GO EXIT END;08178000 + T1 ~ L; IF FORMALV THEN EMITN(ADDRES); 08179000 + K ~ 0; 08180000 + IF SIMPLE(CONSTANA,A,SIGNA) THEN 08181000 + IF ELCLASS = STEPV THEN 08182000 + IF SIMPLE(CONSTANB,B,SIGNB) THEN 08183000 + IF ELCLASS = UNTILV THEN 08184000 + IF SIMPLE(CONSTANC,Q,SIGNC) THEN 08185000 + IF ELCLASS = DOV THEN 08186000 + BEGIN 08187000 + PLUG(CONSTANA,A); 08188000 + IF SIGNA THEN EMITO(CHS); 08189000 + RETURNSTORE ~ BUMPL; ADJUST; CONSTANTCLEAN; 08190000 + STMTSTART ~ L; 08191000 + STEPIT; 08192000 + T1 ~ ((((4096 | RETURNSTORE+STMTSTART)|2+ 08193000 + REAL(CONSTANB))|2+ 08194000 + REAL(CONSTANC))|2+ 08195000 + REAL(SIGNB))|2+ 08196000 + REAL(SIGNC); 08197000 + T2 ~ VRET; 08198000 + T3 ~ B; 08199000 + T4 ~ Q; 08200000 + STMT; 08201000 + SIGNC ~ BOOLEAN(T1.[47:1]); 08202000 + SIGNB ~ BOOLEAN(T1.[46:1]); 08203000 + CONSTANC ~ BOOLEAN(T1.[45:1]); 08204000 + CONSTANB ~ BOOLEAN(T1.[44:1]); 08205000 + STMTSTART ~ T1.[32:12]; 08206000 + RETURNSTORE ~ T1.[20:12]; 08207000 + VRET ~ T2; 08208000 + B ~ T3; 08209000 + Q ~ T4; 08210000 + SIMPLEV~ SIMPI(VRET); 08211000 IF FORMALV THEN EMITN(ADDRES); EMITV(ADDRES); 08212000 PLUG(CONSTANB,B); 08213000 EMITO(IF SIGNB THEN SUB ELSE ADD); 08214000 @@ -4262,20 +4264,20 @@ REAL T1,T2,T2,T4; 08173000 VARIABLE(FR); EMITO(XCH); VRET ~ L; EMITO(BFW); 08228000 IF ELCLASS!ASSIGNOP THEN BEGIN ERR(152); GO EXIT END;08229000 END; 08230000 - STEPIT; FORLIST(FALSE); L + REGO; 08231000 - EXIT: K ~ 0 END FORSTMT; 08232000 + STEPIT; FORLIST(FALSE); L ~ REGO; 08231000 + EXIT: K ~ 0 END FORSTMT; 08232000 REAL PROCEDURE REED; 08999000 BEGIN 08999025 LABEL EOF; INTEGER I,J,K; 08999050 STREAM PROCEDURE MOVE(N,F,T); VALUE N,T; 08999075 - BEGIN SI:=F; DI:=T;DS:=N WDS END MOVE; 08999100 + BEGIN SI:=F; DI:=T; DS:=N WDS END MOVE; 08999100 J:=-1; 08999125 READ(CODISK[NO])[EOF]; 08999150 REED:=I:=FETCH(MKABS(CODISK(1))); 08999175 K:=MKABS(CODE(0))-1); 08999200 WHILE I-J>30 DO 08999225 BEGIN 08999250 - MOVE(30,CODISK(0),K); K:=K+30;J:=J+30; 08999275 + MOVE(30,CODISK(0),K); K:=K+30; J:=J+30; 08999275 READ(CODISK); 08999300 END; 08999325 MOVE(I-J,CODISK(0),K); 08999350 @@ -4297,7 +4299,7 @@ PROCEDURE RIGHT(L); VALUE L; INTEGER L; 08999450 J:=J+30; 08999750 END; 08999775 END RIGHT; 08999800 - COMMENT THE PROGRAM ROUITNE DOES THE INITIALIZATION AND THE WRAPUP 09000000 + COMMENT THE PROGRAM ROUTINE DOES THE INITIALIZATION AND THE WRAPUP 09000000 FOR THE REST OF THE COMPILER. THE MAIN PROGRAM OF THE COMPILER09001000 IS SIMPLY A CALL ON THE PROGRAM ROUTINE; 09002000 PROCEDURE PROGRAM; 09003000 @@ -4306,21 +4308,21 @@ PROCEDURE RIGHT(L); VALUE L; INTEGER L; 08999450 BEGIN DI~LOC WD; DS~ SET;SI~ LOC WD; DI~TOLOC;DS~WDS END; 09006000 DEFINE STARTINTRSC=426#; 09024000 LABEL L1; 09025000 - LISTOG=LISTER=BOOLEAN(1-ERRORCOUNT.[46:1]]; 09028000 + LISTOG:=LISTER:=BOOLEAN(1-ERRORCOUNT.[46:1]); 09028000 COMMENT LISTOG IS NOT SET BY DEFAULT ON TIMESHARING; 09028010 NOHEADING := TRUE; 09028050 ERRORCOUNT := 0; 09028900 - ERRMAX:=999; % MAY BE CHANGED IN DOLLARCARD, 09028910 - BASENUM=10000; ADDVALUE:=1000; NEWBASE:=TRUE; 09028920 + ERRMAX:=999; % MAY BE CHANGED IN DOLLARCARD. 09028910 + BASENUM:=10000; ADDVALUE:=1000; NEWBASE:=TRUE; 09028920 COMMENT DEFAULT VALUES FOR "$SEQ" OPTION; 09028930 - LASTUSED := 4;% FOR INITILAIZATION. 09029000 + LASTUSED := 4; % FOR INITIALIZATION. 09029000 NEXTINFO ~ LASTINFO ~ LASTSEQROW|256+LASTSEQUENCE+1; 09033000 PUTNBUMP(0); 09034000 - GT1 ~ -" "; 09034100 + GT1 ~ -" "; 09034100 MDESC(GT1,INFO[LASTSEQROW,LASTSEQUENCE]); 09034200 BLANKET(0,INFO[LASTSEQROW,LASTSEQUENCE]); % FOR "$ CHECK".09034500 READACARD; % INITIALIZATION OF NCR,FCR, AND LCR, AND 09035000 - % READS FIRST CARDINTO CARD BUFFER. 09036000 + % READS FIRST CARD INTO CARD BUFFER. 09036000 LASTUSED := 1; % ASSUMES CARD ONLY UNTIL TOLD DIFFERENTLY.09037000 NXTELBT ~ 1; 09038000 PRTI~PRTIMAX~PRTBASE; 09039000 @@ -4331,7 +4333,7 @@ COMMENT START FILLING TABLES NEEDED TO COMPILE A PROGRAM; 09040100 OCT1742165630517247, OCT1732623176643120, OCT1723370036413744, 09043000 OCT1714266046116735, OCT1705343457542525, OCT1676634373473252, 09044000 OCT1651040347241213, OCT1641250441111455, OCT1631522551333770, 09045000 - OCT1622047303622767, OCT1612451164567564, OCT1603175421725521, 09046000 + OCT1622047303622767, OCT1612461164567564, OCT1603175421725521, 09046000 OCT1574034726313046, OCT1565044113775657, OCT1556255136775233, 09047000 OCT1547730366574502, OCT1521171646433362, OCT1511430220142257, 09048000 OCT1501736264172732, OCT1472325741231521, OCT1463013331500045, 09049000 @@ -4367,71 +4369,71 @@ COMMENT START FILLING TABLES NEEDED TO COMPILE A PROGRAM; 09040100 OCT0737461304707100, OCT0751137556607072, OCT0761367512350710, 09079000 OCT0771665435043072; 09080000 COMMENT THIS IS THE FILL FOR THE SECOND ROW OF INFO: 09081000 - THE FIRST ITEMS ARE STREAM RESERVED WORDS, 09082000 - THEN ORDINARY RESERVED WORDS, 09083000 - THEN INTRINSIC FUNCTONS; 09084000 + THE FIRST ITEMS ARE STREAM RESERVED WORDS, 09082000 + THEN ORDINARY RESERVED WORDS, 09083000 + THEN INTRINSIC FUNCTIONS; 09084000 FILL INFO[1,*] WITH 09085000 - OCT0670000600000002, "2SI000", %256 09086000 - OCT0700001040000002, "2DI000", %258 09087000 - OCT0710001460000002, "2CI000", %260 09088000 - OCT0720001630000002, "5TALLY", %262 09089000 - OCT0730000530000002, "2DS000", %264 09090000 - OCT0740000150000002, "4SKIP0", %266 09091000 - OCT0750001620000002, "4JUMP0", %268 09092000 - OCT0760000740000002, "2DB000", %270 09093000 - OCT0770000500000002, "2SB000", %272 09094000 - OCT1010000730000002, "2SC000", %274 09095000 - OCT1020001160000002, "3LOC00", %276 09096000 - OCT1030001170000002, "2DC000", %278 09097000 - OCT1040001430000002, "5LOCAL", %280 09098000 - OCT1050000340000002, "3LIT00", %282 09099000 - OCT1060001036400002, "3SET00", %284 09100000 - OCT1060001066500002, "5RESET", %286 09101000 - OCT1060001020500002, "3WDS00", %288 09102000 - OCT1060001357700002, "3CHR00", %290 09103000 - OCT1060001057300002, "3ADD00", %292 09104000 - OCT1060001617200002, "3SUB00", %294 09105000 - OCT1060000727600002, "3ZON00", %296 09106000 - OCT1060000417500002, "3NUM00", %298 09107000 - OCT1060000766700002, "3OCT00", %300 09108000 - OCT1060000176600002, "3DEC00", %302 09109000 - OCT1004000260000003, "6TOGGL", "E0000000", %304 09110000 - OCT0130311060000002, "3ABS00", %307 09110001 - OCT1360441030000002, "3AND00", %309 09112000 - OCT0500000170000002, "5ARRAY", %311 09112100 - OCT0660000000000002, "5BEGIN", %313 09112200 - OCT0500000040000003, "7BOOLE", "AN000000", %315 09112300 - OCT1070000000000003, "7COMME", "NT000000", %318 09112400 - OCT0500000230000003, "6DEFIN", "E0000000", %321 09112500 - OCT1410446000000002, "3DIV00", %324 09112600 - OCT0550000000000002, "2DO000", %326 09112700 - OCT0520000000000003, "6DOUBL", "E0000000", %328 09112800 - OCT0570000000000002, "4ELSE0", %331 09112900 - OCT0600000000000002, "3END00", %333 09113000 - OCT1340442030000002, "3EQV00", %335 09113100 - OCT0410000000000002, "5FALSE", %337 09113200 - OCT0130310030000002, "4FLAG0", %339 09113300 - OCT0530000000000002, "3FOR00", %341 09113400 - OCT1100000000000003, "7FORWA", "RD000000", %343 09113500 - OCT0640000000000002, "2GO000", %346 09113600 - OCT0130316060320002, "4HUNT0", %348 09113700 - OCT0630000000000002, "2IF000", %350 09113800 - OCT0500000040000002, "4REAL0", %352 09113900 - OCT0500000050000003, "7INTEG", "ER000000", %354 09114000 - OCT0500000070000002, "5LABEL", %357 09114100 - OCT0360002000000003, "6MEMOR", "Y ", %359 09114200 - OCT1410456000000002, "3MOD00", %362 09114300 - OCT0500000140000003, "7MONT0", "OR ", %364 09114400 - OCT0130301060000002, "4NABS0", %367 09114500 - OCT0500000200000002, "4NAME0", %369 09114600 - OCT0130304030000002, "5NFLAG", %371 09114700 - OCT1320300230000002, "3NOT00", %373 09114800 - OCT1250440430000002, "2OR000", %375 09114900 - OCT0500000020000002, "4SAVE0", %377 09115000 - OCT0500000010000002, "3OWN00", %379 09115100 - OCT0460000000000003, "6POLIS", "H ", %381 09115200 - OCT0500000160000003, "9PROCE", "DURE ", %384 09115300 - OCT0130300000160011, "4SIGN0", %387 09115400 + OCT0670000600000002, "2SI000", %256 09086000 + OCT0700001040000002, "2DI000", %258 09087000 + OCT0710001460000002, "2CI000", %260 09088000 + OCT0720001630000002, "5TALLY", %262 09089000 + OCT0730000530000002, "2DS000", %264 09090000 + OCT0740000150000002, "4SKIP0", %266 09091000 + OCT0750001620000002, "4JUMP0", %268 09092000 + OCT0760000740000002, "2DB000", %270 09093000 + OCT0770000500000002, "2SB000", %272 09094000 + OCT1010000730000002, "2SC000", %274 09095000 + OCT1020001160000002, "3LOC00", %276 09096000 + OCT1030001170000002, "2DC000", %278 09097000 + OCT1040001430000002, "5LOCAL", %280 09098000 + OCT1050000340000002, "3LIT00", %282 09099000 + OCT1060001036400002, "3SET00", %284 09100000 + OCT1060001066500002, "5RESET", %286 09101000 + OCT1060001020500002, "3WDS00", %288 09102000 + OCT1060001357700002, "3CHR00", %290 09103000 + OCT1060001057300002, "3ADD00", %292 09104000 + OCT1060001617200002, "3SUB00", %294 09105000 + OCT1060000727600002, "3ZON00", %296 09106000 + OCT1060000417500002, "3NUM00", %298 09107000 + OCT1060000766700002, "3OCT00", %300 09108000 + OCT1060000176600002, "3DEC00", %302 09109000 + OCT1004000260000003, "6TOGGL", "E0000000", %304 09110000 + OCT0130311060000002, "3ABS00", %307 09110001 + OCT1360441030000002, "3AND00", %309 09112000 + OCT0500000170000002, "5ARRAY", %311 09112100 + OCT0660000000000002, "5BEGIN", %313 09112200 + OCT0500000040000003, "7BOOLE", "AN000000", %315 09112300 + OCT1070000000000003, "7COMME", "NT000000", %318 09112400 + OCT0500000230000003, "6DEFIN", "E0000000", %321 09112500 + OCT1410446000000002, "3DIV00", %324 09112600 + OCT0550000000000002, "2DO000", %326 09112700 + OCT0520000000000003, "6DOUBL", "E0000000", %328 09112800 + OCT0570000000000002, "4ELSE0", %331 09112900 + OCT0600000000000002, "3END00", %333 09113000 + OCT1340442030000002, "3EQV00", %335 09113100 + OCT0410000000000002, "5FALSE", %337 09113200 + OCT0130310030000002, "4FLAG0", %339 09113300 + OCT0530000000000002, "3FOR00", %341 09113400 + OCT1100000000000003, "7FORWA", "RD ", %343 09113500 + OCT0640000000000002, "2GO000", %346 09113600 + OCT0130316060320002, "4HUNT0", %348 09113700 + OCT0630000000000002, "2IF000", %350 09113800 + OCT0500000040000002, "4REAL0", %352 09113900 + OCT0500000050000003, "7INTEG", "ER000000", %354 09114000 + OCT0500000070000002, "5LABEL", %357 09114100 + OCT0360002000020003, "6MEMOR", "Y ", %359 09114200 + OCT1410456000000002, "3MOD00", %362 09114300 + OCT0500000140000003, "7MONIT", "OR ", %364 09114400 + OCT0130301060000002, "4NABS0", %367 09114500 + OCT0500000200000002, "4NAME0", %369 09114600 + OCT0130304030000002, "5NFLAG", %371 09114700 + OCT1320300230000002, "3NOT00", %373 09114800 + OCT1350440430000002, "2OR000", %375 09114900 + OCT0500000020000002, "4SAVE0", %377 09115000 + OCT0500000010000002, "3OWN00", %379 09115100 + OCT0460000000000003, "6POLIS", "H ", %381 09115200 + OCT0500000160000003, "9PROCE", "DURE ", %384 09115300 + OCT0130300000160011, "4SIGN0", %387 09115400 OCT2025, COMMENT DUP ; 09115500 OCT0000, COMMENT LITC 0; 09115600 OCT0425, COMMENT NEQ ; 09115700 @@ -4439,134 +4441,134 @@ COMMENT THIS IS THE FILL FOR THE SECOND ROW OF INFO: 09081000 OCT0155, COMMENT DIA 1; 09115900 OCT0161, COMMENT DIB 1; 09116000 OCT0165, COMMENT TRB 1; 09116100 - OCT1110000000000002, "4STEP0", %396 09116200 - OCT0500000220000003, "6STREA", "M ", %398 09116300 - OCT0500000110000003, "#SUBRO", "UTINE ", %401 09116400 - OCT0500000150000003, "6SWITC", "H ", %404 09116500 - OCT1120000000000002, "4THEN0", %407 09116600 - OCT1130000000000002, "2TO000", %409 09116700 - OCT0410000010000002, "4TRUE0", %411 09116800 - OCT0560000000000002, "5UNTIL", %413 09116900 - OCT1140000000000002, "5VALUE", %415 09117000 - OCT0540000000000002, "5WHILE", %417 09117100 - OCT1310440200000002, "3ADD00", %419 09117200 - OCT1310240270000002, "3BRT00", %421 09117300 - OCT1310453050000002, "3CCX00", %423 09117400 - OCT1310442500000002, "3CDC00", %425 09117500 - OCT1310457050000002, "3CFX00", %427 09117600 - OCT1310302060000002, "3CHS00", %429 09117700 - OCT1310440500000002, "3COC00", %431 09117800 - OCT1310242020000002, "3COM00", %433 09117900 - OCT1310302060000002, "3CSB00", %435 09118000 - OCT1310240120000002, "3DEL00", %437 09118100 - OCT1260100550000002, "3DIA00", %439 09118200 - OCT1260100610000002, "3DIB00", %441 09118300 - OCT1310344050000002, "3DUP00", %443 09118400 - OCT1310451050000002, "3EQL00", %445 09118500 - OCT1310443050000002, "3FCX00", %447 09118600 - OCT1310447050000002, "3FFX00", %449 09118700 - OCT1310440250000002, "3GEQ00", %451 09118800 - OCT1310440450000002, "3GTR00", %453 09118900 - OCT1310104420000002, "3HLB00", %455 09119000 - OCT1310104420000002, "3HP200", %457 09119050 - OCT1310446000000002, "3IDV00", %459 09119100 - OCT1310251020000002, "3IIO00", %461 09119200 - OCT1310250220000002, "3INA00", %463 09119300 - OCT1310250420000002, "3INB00", %465 09119400 - OCT1310100420000002, "3INT00", %467 09119500 - OCT1310440300000002, "3INX00", %469 09119600 - OCT1310244220000002, "3IOR00", %471 09119700 - OCT1310250220000002, "3IP100", %473 09119800 - OCT1310250420000002, "3IP200", %475 09119900 - OCT1310145060000002, "3IPS00", %477 09120000 - OCT1310410240000002, "3ISD00", %479 09120100 - OCT1310450440000002, "3ISN00", %481 09120200 - OCT1310100420000002, "3ITI00", %483 09120300 - OCT1310450250000002, "3LEQ00", %485 09120400 - OCT1310505300000002, "3LLL00", %487 09120500 - OCT1310441030000002, "3LND00", %489 09120600 - OCT1310300230000002, "3LNG00", %491 09120700 - OCT1310304040000002, "3LOD00", %493 09120800 - OCT1310440430000002, "3LOR00", %495 09120900 - OCT1310442030000002, "3LQV00", %497 09121000 - OCT1310450450000002, "3LSS00", %499 09121100 - OCT1310101100000002, "3MKS00", %501 09121200 - OCT1310441000000002, "3MUL00", %503 09121300 - OCT1310441050000002, "3NEQ00", %505 09121400 - OCT1310100130000002, "3NDP00", %507 09121500 - OCT0650006550000002, "6SCOPO", "N......."; %509 09121600 + OCT1110000000000002, "4STEP0", %396 09116200 + OCT0500000220000003, "6STREA", "M ", %398 09116300 + OCT0500000110000003, "#SUBRO", "UTINE ", %401 09116400 + OCT0500000150000003, "6SWITC", "H ", %404 09116500 + OCT1120000000000002, "4THEN0", %407 09116600 + OCT1130000000000002, "2TO000", %409 09116700 + OCT0410000010000002, "4TRUE0", %411 09116800 + OCT0560000000000002, "5UNTIL", %413 09116900 + OCT1140000000000002, "5VALUE", %415 09117000 + OCT0540000000000002, "5WHILE", %417 09117100 + OCT1310440200000002, "3ADD00", %419 09117200 + OCT1310240270000002, "3BRT00", %421 09117300 + OCT1310453050000002, "3CCX00", %423 09117400 + OCT1310442500000002, "3CDC00", %425 09117500 + OCT1310457050000002, "3CFX00", %427 09117600 + OCT1310302060000002, "3CHS00", %429 09117700 + OCT1310440500000002, "3COC00", %431 09117800 + OCT1310242020000002, "3COM00", %433 09117900 + OCT1310302060000002, "3CSB00", %435 09118000 + OCT1310240120000002, "3DEL00", %437 09118100 + OCT1260100550000002, "3DIA00", %439 09118200 + OCT1260100610000002, "3DIB00", %441 09118300 + OCT1310344050000002, "3DUP00", %443 09118400 + OCT1310451050000002, "3EQL00", %445 09118500 + OCT1310443050000002, "3FCX00", %447 09118600 + OCT1310447050000002, "3FFX00", %449 09118700 + OCT1310440250000002, "3GEQ00", %451 09118800 + OCT1310440450000002, "3GTR00", %453 09118900 + OCT1310104420000002, "3HLB00", %455 09119000 + OCT1310104420000002, "3HP200", %457 09119050 + OCT1310446000000002, "3IDV00", %459 09119100 + OCT1310251020000002, "3IIO00", %461 09119200 + OCT1310250220000002, "3INA00", %463 09119300 + OCT1310250420000002, "3INB00", %465 09119400 + OCT1310100420000002, "3INI00", %467 09119500 + OCT1400440300000002, "3INX00", %469 09119600 + OCT1310244220000002, "3IOR00", %471 09119700 + OCT1310250220000002, "3IP100", %473 09119800 + OCT1310250420000002, "3IP200", %475 09119900 + OCT1310145060000002, "3IPS00", %477 09120000 + OCT1310410240000002, "3ISD00", %479 09120100 + OCT1310450440000002, "3ISN00", %481 09120200 + OCT1310100420000002, "3ITI00", %483 09120300 + OCT1310450250000002, "3LEQ00", %485 09120400 + OCT1310505300000002, "3LLL00", %487 09120500 + OCT1310441030000002, "3LND00", %489 09120600 + OCT1310300230000002, "3LNG00", %491 09120700 + OCT1310304040000002, "3LOD00", %493 09120800 + OCT1310440430000002, "3LOR00", %495 09120900 + OCT1310442030000002, "3LQV00", %497 09121000 + OCT1310450450000002, "3LSS00", %499 09121100 + OCT1310101100000002, "3MKS00", %501 09121200 + OCT1310441000000002, "3MUL00", %503 09121300 + OCT1310441050000002, "3NEQ00", %505 09121400 + OCT1310100130000002, "3NOP00", %507 09121500 + OCT0650006550000002, "6SCOPO", "N......."; %509 09121600 FILL INFO[2,*] WITH 09121650 - OCT131030000020004., "3RDF00", %512 09121700 + OCT131030000020004., "3RDF00", %512 09121700 OCT0000, COMMENT LITC 0; 09121800 OCT2141, COMMENT FXS ; 09121900 - OCT131030000020004., "3RDS00", %516 09122000 + OCT131030000020004., "3RDS00", %516 09122000 OCT0004, COMMENT LITC 1; 09122100 OCT2141, COMMENT FXS ; 09122200 - OCT1310456000000002, "3RDV00", %520 09122300 - OCT1310304030000002, "3RFB00", %522 09122400 - OCT1310240470000002, "3RND00", %524 09122500 - OCT1310145060000002, "3RRR00", %526 09122600 - OCT1310311060000002, "3RSB00", %528 09122700 - OCT1310242470000002, "3RSP00", %530 09122800 - OCT1310141020000002, "3RTM00", %532 09122900 - OCT1310240470000002, "3RTN00", %534 09123000 - OCT1310141020000002, "3RTR00", %536 09123100 - OCT1310242470000002, "3RTS00", %538 09123200 - OCT1310310030000002, "3SFB00", %540 09123300 - OCT1310442040000002, "3SND00", %542 09123400 - OCT1310301060000002, "3SSB00", %544 09123500 - OCT1310316060000002, "3SSF00", %546 09123600 - OCT1310301060000002, "3SSN00", %548 09123700 - OCT1310311060000002, "3SSP00", %550 09123800 - OCT1310401040000002, "3STD00", %552 09123900 - OCT1310240000020004, "3STF00", %554 09124000 + OCT1310456000000002, "3RDV00", %520 09122300 + OCT1310304030000002, "3RFB00", %522 09122400 + OCT1310240470000002, "3RND00", %524 09122500 + OCT1310145060000002, "3RRR00", %526 09122600 + OCT1310311060000002, "3RSB00", %528 09122700 + OCT1310242470000002, "3RSP00", %530 09122800 + OCT1310141020000002, "3RTM00", %532 09122900 + OCT1310240470000002, "3RTN00", %534 09123000 + OCT1310141020000002, "3RTR00", %536 09123100 + OCT1310242470000002, "3RTS00", %538 09123200 + OCT1310310030000002, "3SFB00", %540 09123300 + OCT1310442040000002, "3SND00", %542 09123400 + OCT1310301060000002, "3SSB00", %544 09123500 + OCT1310316060000002, "3SSF00", %546 09123600 + OCT1310301060000002, "3SSN00", %548 09123700 + OCT1310311060000002, "3SSP00", %550 09123800 + OCT1310401040000002, "3STD00", %552 09123900 + OCT1310240000020004, "3STF00", %554 09124000 OCT0010, COMMENT LITC 2; 09124100 OCT2141, COMMENT FXS ; 09124200 - OCT1310442040000002, "3STN00", %558 09124300 - OCT1310240000020004, "3STS00", %560 09124400 + OCT1310442040000002, "3STN00", %558 09124300 + OCT1310240000020004, "3STS00", %560 09124400 OCT0014, COMMENT LITC 3; 09124500 OCT2141, COMMENT FXS ; 09124600 - OCT1310440600000002, "3SUB00", %564 09124700 - OCT1310344060000002, "3TFB00", %566 09124800 - OCT1270440650000002, "3TFR00", %568 09124900 - OCT1310155060000002, "3TIO00", %570 09125000 - OCT1310344060000002, "3TOP00", %572 09125050 - OCT1270440650000002, "3TRB00", %574 09125100 - OCT1300300000000002, "3VFI00", %576 09125200 - OCT1310502050000002, "3XCH00", %578 09125300 - OCT1310101070000002, "3XIT00", %580 09125400 - OCT1310105020000002, "3ZIP00", %582 09125500 - OCT1310105020000002, "3ZP100", %584 09125600 - OCT1270500750000002, "3CFE00", %586 09125700 - OCT1270500750000002, "3FCE00", %588 09125800 - OCT1270500710000002, "3CFL00", %590 09125900 - OCT1270500710000002, "3FCL00", %592 09126000 - OCT1310440210000002, "3DLA00", %594 09126100 - OCT1310440210000002, "3ADL00", %596 09126200 - OCT1310440610000002, "3DLS00", %598 09126300 - OCT1310440610000002, "3SDL00", %600 09126400 - OCT1310441010000002, "3DLM00", %602 09126500 - OCT1310441010000002, "3MDL00", %604 09126600 - OCT1310442010000002, "3DLD00", %606 09126700 - OCT1310442010000002, "3DDL00", %608 09126800 - OCT0460000000000002, "1P0000", %610 09126900 - OCT0360002000020002, "1M0000", %612 09127000 - OCT1310240000020004, "3PRL00", %614 09127100 + OCT1310440600000002, "3SUB00", %564 09124700 + OCT1310344060000002, "3TFB00", %566 09124800 + OCT1270440650000002, "3TFR00", %568 09124900 + OCT1310155060000002, "3TIO00", %570 09125000 + OCT1310344060000002, "3TOP00", %572 09125050 + OCT1270440650000002, "3TRB00", %574 09125100 + OCT1300300000000002, "3VFI00", %576 09125200 + OCT1310502050000002, "3XCH00", %578 09125300 + OCT1310101070000002, "3XIT00", %580 09125400 + OCT1310105020000002, "3ZIP00", %582 09125500 + OCT1310105020000002, "3ZP100", %584 09125600 + OCT1270500750000002, "3CFE00", %586 09125700 + OCT1270500750000002, "3FCE00", %588 09125800 + OCT1270500710000002, "3CFL00", %590 09125900 + OCT1270500710000002, "3FCL00", %592 09126000 + OCT1310440210000002, "3DLA00", %594 09126100 + OCT1310440210000002, "3ADL00", %596 09126200 + OCT1310440610000002, "3DLS00", %598 09126300 + OCT1310440610000002, "3SDL00", %600 09126400 + OCT1310441010000002, "3DLM00", %602 09126500 + OCT1310441010000002, "3MDL00", %604 09126600 + OCT1310442010000002, "3DLD00", %606 09126700 + OCT1310442010000002, "3DDL00", %608 09126800 + OCT0460000000000002, "1P0000", %610 09126900 + OCT0360002000020002, "1M0000", %612 09127000 + OCT1310240000020004, "3PRL00", %614 09127100 OCT0111, COMMENT PRL; 09127200 OCT0055, COMMENT NOP; 09127300 - OCT0650006610000003, "7SCOPO", "FF......", %618 09127400 - OCT0030000000040003, "2LB.00", "[# ", %621 09127500 - OCT0030000000040003, "2RB.00", "]# ", %624 09127600 - OCT0030000000040003, "3GTR00", "># ", %627 09127700 - OCT0030000000040003, "3GEQ00", "}# ", %630 09127800 - OCT0030000000040003, "3EQL00", "=# ", %633 09127900 - OCT0030000000040003, "3NEQ00", "!# ", %636 09128000 - OCT0030000000040003, "3LEQ00", "{# ", %639 09128100 - OCT0030000000040003, "3LSS00", "<# ", %642 09128200 - OCT0030000000040003, "5TIME0", "|# ", %645 09128300 - OCT1310117530000002, "3SCI00", %688 09128400 - OCT1310117540000002, "3SAN00", %650 09128500 - OCT1310157730000002, "3SCS00", %652 09128600 + OCT0650006610000003, "7SCOPO", "FF......", %618 09127400 + OCT0030000000040003, "2LB000", "[# ", %621 09127500 + OCT0030000000040003, "2RB000", "]# ", %624 09127600 + OCT0030000000040003, "3GTR00", "># ", %627 09127700 + OCT0030000000040003, "3GEQ00", "}# ", %630 09127800 + OCT0030000000040003, "3EQL00", "=# ", %633 09127900 + OCT0030000000040003, "3NEQ00", "!# ", %636 09128000 + OCT0030000000040003, "3LEQ00", "{# ", %639 09128100 + OCT0030000000040003, "3LSS00", "<# ", %642 09128200 + OCT0030000000040003, "5TIMES", "|# ", %645 09128300 + OCT1310117530000002, "3SCI00", %688 09128400 + OCT1310117540000002, "3SAN00", %650 09128500 + OCT1310157730000002, "3SCS00", %652 09128600 09128700 09128800 09128900 @@ -4615,95 +4617,96 @@ COMMENT THIS IS THE FILL FOR THE SECOND ROW OF INFO: 09081000 09133200 09133300 09133400 + 09133450 09133500 09133600 -0; % END OF INFO FILL. 09133700 - FOR GT2~256 STEP GT1.LINK WHILE NOT BOOLEAN(GT1.FORMAL) DO 09133800 - PUT((GT1~TAKE(GT2))>2[35:35:13],GT2); 09133900 - FOR GT1~GT2 STEP GT2.LINK WHILE GT2.LINK!0 DO 09134000 - PUT((GT2~TAKE(GT1))&STACKHEAD[T3~TAKE(GT1+1).[12:36] 09134100 - MOD 125][35:35:13],STACKHEAD[GT3]+GT1); 09134200 -COMMENT THIS IS THE FILL FOR SPECIAL CHARACTERS; 09197000 -FILL SPECIAL[*] WITH 09198000 - OCT1200000000200000, COMMENT #; OCT0000000000100000, COMMENT @; 09199000 - OCT0000000000000000, OCT1160000000120000, COMMENT :; 09200000 - OCT1370440450002763, COMMENT >; OCT1370440250002662, COMMENT }; 09201000 - OCT1400440200000000, COMMENT +; OCT0000000000000000, 09202000 - OCT1220000000060000, COMMENT .; OCT1210000000000000, COMMENT [; 09203000 - OCT1250000000000000, COMMENT &; OCT0450000000000000, COMMENT (; 09204000 - OCT1370450450003571, COMMENT <; OCT1330401040000000, COMMENT ~; 09205000 - OCT1410441000000000, COMMENT |; OCT0000000000000000, 09206000 - OCT0000000000040000, COMMENT $; OCT0470000000000000, COMMENT *; 09207000 - OCT1400440600000000, COMMENT -; OCT1240000000160000, COMMENT ); 09208000 - OCT0620000000000000, COMMENT .,; OCT1370450250003470, COMMENT {; 09209000 - OCT0000000000000000, OCT1410442000000000, COMMENT .; 09210000 - OCT1170000000000000, COMMENT ,; OCT0000000000020000, COMMENT %; 09211000 - OCT1370441050002561, COMMENT !; OCT1370451050002460, COMMENT =; 09212000 - OCT1230000000000000, COMMENT ]; OCT0000000000140000, COMMENT "; 09213000 - 0,0; 09214000 - FILL MACRO[*] WITH 09215000 - OCT0131, COMMENT SFS A 00 ; 09216000 - OCT0116, COMMENT SFD A 01 ; 09217000 - OCT0000, COMMENT SYNTAX ERROR02 ; 09218000 - OCT0140, COMMENT INC A 03 ; 09219000 - OCT0130, COMMENT SRS A 04 ; 09220000 - OCT0117, COMMENT SRD A 05 ; 09221000 - OCT0000, COMMENT SYNTAX ERROR06 ; 09222000 - OCT0000, COMMENT SYNTAX ERROR07 ; 09223000 - OCT00310143, COMMENT CRF A, SFS 008 ; 09224000 - OCT00160143, COMMENT CRF A, SFD 009 ; 09225000 - OCT00470143, COMMENT CRF A, JFN 0 10 ; 09226000 - OCT00400143, COMMENT CRF A, INC 011 ; 09227000 - OCT00300143, COMMENT CRF A, SRS 012 ; 09228000 - OCT00170143 COMMENT CRF A, SRD 013 ; 09229000 - OCT0000, COMMENT SYNTAX ERROR14 ; 09230000 - OCT0000, COMMENT SYNTAX ERROR15 ; 09231000 - OCT0153, COMMENT RSA A 16 ; 09232000 - OCT0104, COMMENT RDA A 17 ; 09233000 - OCT0150, COMMENT RCA A 18 ; 09234000 - OCT00420130042, COMMENT SEC 0, CRF A, SEC 0 19 ; 09235000 - OCT0122, COMMENT SES A 20 ; 09236000 - OCT0106, COMMENT SED A 21 ; 09237000 - OCT0000, COMMENT SYNTAX ERROR22 ; 09238000 - OCT0000, COMMENT SYNTAX ERROR23 ; 09239000 - OCT0056, COMMENT TSA 0 24 ; 09240000 - OCT0000, COMMENT SYNTAX ERROR25 ; 09241000 - OCT0000, COMMENT SYNTAX ERROR26 ; 09242000 - OCT0000, COMMENT SYNTAX ERROR27 ; 09243000 - OCT0000, COMMENT SYNTAX ERROR28 ; 09244000 - OCT0007, COMMENT TDA 0 29 ; 09245000 - OCT0000, COMMENT SYNTAX ERROR30 ; 09246000 - OCT0000, COMMENT SYNTAX ERROR31 ; 09247000 - OCT0115, COMMENT SSA A 32 ; 09248000 - OCT0114, COMMENT SDA A 33 ; 09249000 - OCT0154, COMMENT SCA A 34 ; 09250000 - OCT0141, COMMENT STC A 35 ; 09251000 -FILL OPTIONS[*] WITH "5CHECK",0, % 0,1 09251208 - "6DEBUG",0, % 2,3 09251212 - "4DECK0",0, % 4,5 09251214 - "6FORMA",0, % 6,7 09251216 - "9INTRI",0, % 8,9 09251218 - "5LISTA",0, % 10,11 09251220 - "4LIST0",0, % 12,13 09251224 - "5LISTP",0, % 14,15 09251228 - "3MCP00",0, % 15,17 09251230 - "4TAPEA",0, % 16,19 09251232 - "5NEST0",0, % 20,21 09251234 - "3NEW00",0, % 22,23 09251236 - "7NEWIN",0, % 24,25 09251240 - "4OMIT0",0, % 26,27 09251244 - "1$0000",0, % 28,29 09251248 - "3PRT00",0, % 30,31 09251252 - "5PUNCH",0, % 32,33 09251256 - "5PURGE",0, % 34,35 09251260 - "4SEGS0",0, % 35,37 09251264 - "3SEQ00",0, % 38,39 09251268 - "6SEQER",0, % 40,41 09251272 - "6SINGL",0, % 42,43 09251276 - "5STUFF",0, % 44,45 09251378 - "4VOID0",0, % 45,47 09251380 - "5VOIDT",0, % 48,49 09251384 -0; 09251388 + 0; % END OF INFO FILL. 09133700 + FOR GT2~256 STEP GT1.LINK WHILE NOT BOOLEAN(GT1.FORMAL) DO 09133800 + PUT((GT1~TAKE(GT2))>2[35:35:13],GT2); 09133900 + FOR GT1~GT2 STEP GT2.LINK WHILE GT2.LINK!0 DO 09134000 + PUT((GT2~TAKE(GT1))&STACKHEAD[GT3~TAKE(GT1+1).[12:36] 09134100 + MOD 125][35:35:13],STACKHEAD[GT3]~GT1); 09134200 + COMMENT THIS IS THE FILL FOR THE SPECIAL CHARACTORS; 09197000 + FILL SPECIAL[*] WITH 09198000 + OCT1200000000200000, COMMENT #; OCT0000000000100000, COMMENT @; 09199000 + OCT0000000000000000, OCT1160000000120000, COMMENT :; 09200000 + OCT1370440450002763, COMMENT >; OCT1370440250002662, COMMENT }; 09201000 + OCT1400440200000000, COMMENT +; OCT0000000000000000, 09202000 + OCT1220000000060000, COMMENT .; OCT1210000000000000, COMMENT [; 09203000 + OCT1250000000000000, COMMENT &; OCT0450000000000000, COMMENT (; 09204000 + OCT1370450450003571, COMMENT <; OCT1330401040000000, COMMENT ~; 09205000 + OCT1410441000000000, COMMENT |; OCT0000000000000000, 09206000 + OCT0000000000040000, COMMENT $; OCT0470000000000000, COMMENT *; 09207000 + OCT1400440600000000, COMMENT -; OCT1240000000160000, COMMENT ); 09208000 + OCT0620000000000000, COMMENT .,; OCT1370450250003470, COMMENT {; 09209000 + OCT0000000000000000, OCT1410442000000000, COMMENT /; 09210000 + OCT1170000000000000, COMMENT ,; OCT0000000000020000, COMMENT %; 09211000 + OCT1370441050002561, COMMENT !; OCT1370451050002460, COMMENT =; 09212000 + OCT1230000000000000, COMMENT ]; OCT0000000000140000, COMMENT "; 09213000 + 0,0; 09214000 + FILL MACRO[*] WITH 09215000 + OCT0131, COMMENT SFS A 00 ; 09216000 + OCT0116, COMMENT SFD A 01 ; 09217000 + OCT0000, COMMENT SYNTAX ERROR02 ; 09218000 + OCT0140, COMMENT INC A 03 ; 09219000 + OCT0130, COMMENT SRS A 04 ; 09220000 + OCT0117, COMMENT SRD A 05 ; 09221000 + OCT0000, COMMENT SYNTAX ERROR06 ; 09222000 + OCT0000, COMMENT SYNTAX ERROR07 ; 09223000 + OCT00310143, COMMENT CRF A, SFS 008 ; 09224000 + OCT00160143, COMMENT CRF A, SFD 009 ; 09225000 + OCT00470143, COMMENT CRF A, JFW 0 10 ; 09226000 + OCT00400143, COMMENT CRF A, INC 011 ; 09227000 + OCT00300143, COMMENT CRF A, SRS 012 ; 09228000 + OCT00170143, COMMENT CRF A, SRD 013 ; 09229000 + OCT0000, COMMENT SYNTAX ERROR14 ; 09230000 + OCT0000, COMMENT SYNTAX ERROR15 ; 09231000 + OCT0153, COMMENT RSA A 16 ; 09232000 + OCT0104, COMMENT RDA A 17 ; 09233000 + OCT0150, COMMENT RCA A 18 ; 09234000 + OCT004201430042, COMMENT SEC 0, CRF A, SEC 0 19 ; 09235000 + OCT0122, COMMENT SES A 20 ; 09236000 + OCT0106, COMMENT SED A 21 ; 09237000 + OCT0000, COMMENT SYNTAX ERROR22 ; 09238000 + OCT0000, COMMENT SYNTAX ERROR23 ; 09239000 + OCT0056, COMMENT TSA 0 24 ; 09240000 + OCT0000, COMMENT SYNTAX ERROR25 ; 09241000 + OCT0000, COMMENT SYNTAX ERROR26 ; 09242000 + OCT0000, COMMENT SYNTAX ERROR27 ; 09243000 + OCT0000, COMMENT SYNTAX ERROR28 ; 09244000 + OCT0007, COMMENT TDA 0 29 ; 09245000 + OCT0000, COMMENT SYNTAX ERROR30 ; 09246000 + OCT0000, COMMENT SYNTAX ERROR31 ; 09247000 + OCT0115, COMMENT SSA A 32 ; 09248000 + OCT0114, COMMENT SDA A 33 ; 09249000 + OCT0154, COMMENT SCA A 34 ; 09250000 + OCT0141; COMMENT STC A 35 ; 09251000 +FILL OPTIONS[*] WITH "5CHECK",0, % 0,1 09251208 + "6DEBUG",0, % 2,3 09251212 + "4DECK0",0, % 4,5 09251214 + "6FORMA",0, % 6,7 09251216 + "9INTRI",0, % 8,9 09251218 + "5LISTA",0, % 10,11 09251220 + "4LIST0",0, % 12,13 09251224 + "5LISTP",0, % 14,15 09251228 + "3MCP00",0, % 16,17 09251230 + "4TAPE0",0, % 18,19 09251232 + "4NEST0",0, % 20,21 09251234 + "3NEW00",0, % 22,23 09251236 + "7NEWIN",0, % 24,25 09251240 + "4OMIT0",0, % 26,27 09251244 + "1$0000",0, % 28,29 09251248 + "3PRT00",0, % 30,31 09251252 + "5PUNCH",0, % 32,33 09251256 + "5PURGE",0, % 34,35 09251260 + "4SEGS0",0, % 36,37 09251264 + "3SEQ00",0, % 38,39 09251268 + "6SEQER",0, % 40,41 09251272 + "6SINGL",0, % 42,43 09251276 + "5STUFF",0, % 44,45 09251378 + "4VOID0",0, % 46,47 09251380 + "5VOIDT",0, % 48,49 09251384 + 0; 09251388 DO UNTIL STEPI = BEGINV; 09252000 GT1 ~-" "; 09253000 INTOG ~ INTOG AND TRUE; % 09253050 @@ -4718,28 +4721,28 @@ FILL OPTIONS[*] WITH "5CHECK",0, % 0,1 09251208 IF NEWTOG THEN LOCK(NEWTAPE,*); 09282500 IF T~((L+3)DIV 4) + CORADR > 4080 THEN FLAG(040); 09282600 IF NOT NOHEADING THEN % PRINT THESE THINGS IF ANY 09362000 - BEGIN % LISTING HAS BEEN DONE. 09363000 + BEGIN % LISTING HAS BEEN DONE. 09363000 STREAM PROCEDURE PAN(T,FIEL,NER,LSQ); VALUE NER,T; 09364000 BEGIN DI ~ FIEL; 44(DS~2LIT" "); 09365000 SI ~ LSQ; DS ~ WDS; SI ~FIEL; DS ~ 3 WDS; 09366000 DI ~ FIEL; DS~ 28 LIT"NUMBER OF ERRORS DETECTED = "; 09367000 - SI ~ LOC NER;DS~3DEC; DS~22 LIT ". COMPILATION TIME = "; 09368000 + SI ~ LOC NER; DS ~ 3 DEC; DS ~ 22 LIT ". COMPILATION TIME = "; 09368000 SI ~ LOC T; DS ~ 4 DEC; DS + 9 LIT " SECONDS."; END; 09369000 -STREAM PROCEDURE PEN(FIL,PRTSIZ,BASE,CODE,DISK); 09370000 +STREAM PROCEDURE PEN(FIL,PRTSIZ,BASE,CORE,DISK); 09370000 VALUE PRTSIZ,BASE,CORE,DISK; 09371000 - BEGIN DI~FIL; DS ~ 0 LIT"PRT SIZE="; SI~LOC PRTSIZ; 09372000 + BEGIN DI~FIL; DS ~ 9 LIT"PRT SIZE="; SI~LOC PRTSIZ; 09372000 DS ~ 3 DEC; DS~14 LIT" BASE ADDRESS="; 09373000 SI~LOC BASE; DS~4 DEC; DS~10 LIT" CORE REQ="; 09374000 SI~LOC CORE; DS~4 DEC; DS~10 LIT" DISK REQ="; 09375000 SI~LOC DISK; DS~5 DEC; DS~61 LIT " "; 09376000 - END PEN; 09377000 - STREAM PROCEDURE FINALAX(LINE,N,SEQ); VALUE N; 09378000 + END PEN; 09377000 + STREAM PROCEDURE FINALAX(LINE,N,SEQ); VALUE N; 09378000 BEGIN DS ~ LINE; 15(DS ~ 8 LIT " "); 09379000 DI ~ LINE; DS ~ 31 LIT "NUMBER OF ACCIDENTAL ENTRIES = "; 09380000 SI ~ LOC N; DS ~ 3 DEC; DI ~ DI+8; 09381000 SI ~ SEQ; SI ~ SI-16; DS ~ 8 CHR; 09382000 END; 09383000 - IF AXNUM ! 0 THEN 09384000 + IF AXNUM !0 THEN 09384000 BEGIN 09384050 FINALAX(LIN[0],AXNUM,INFO[LASTSEQROW,LASTSEQUENCE]); 09384100 WRITELINE; 09384500 @@ -4751,67 +4754,67 @@ STREAM PROCEDURE PEN(FIL,PRTSIZ,BASE,CODE,DISK); 09370000 PEN(LIN[0],PRTIMAX,T:=(L+3)DIV 4,T:=CORADR+T, 09388000 ((T+29)DIV 30+DISKADR)|30); 09389000 WRITELINE; 09389500 - LOCK(LINE,RELEASE);END; 09390000 + LOCK(LINE,RELEASE); END; 09390000 IF ERRORCOUNT ! 0 THEN I~0/0 ELSE 09391000 BEGIN 09392000 - ARRAY SAVINFO[0:31],0:255], 09392300 - INFO[0:200,0:255]; % FOR LARGE MCP-S. 09392500 + ARRAY SAVINFO[0:31,0:255], 09392300 + INFO[0:200,0:255]; % FOR LARGE MCP"S. 09392500 INTEGER SAVNDX,NONSAVNDX,N; 09393000 INTEGER Q,J,K,M; 09393010 BOOLEAN TSSTOG; REAL T; 09393020 REAL PROCEDURE PUSHER(GRINCH,GOT,XMAS); VALUE XMAS; REAL XMAS; 09393050 - ARRAY GOT[0]; ARRAY GRINCH[0,0]; 09393060 + ARRAY GOT[0]; ARRAY GRINCH [0,0]; 09393060 BEGIN 09393070 REAL WHO,WHAT; 09393080 DEFINE LINKR = [32:8]#; 09393090 % 09393100 - IF WHO:=XMAS.LINKC { 255 THEN 09393110 + IF WHO:=XMAS.LINKC { 225 THEN 09393110 BEGIN 09393120 - MOVE(30,GRINCH[XMAS,LINKR,WHO],GOT[0]); 09393130 + MOVE(30,GRINCH[XMAS.LINKR,WHO],GOT[0]); 09393130 PUSHER:=XMAS + 30; 09393140 END 09393150 ELSE BEGIN 09393160 - MOVE(WHAT:=256-WHO,GRINCH[XMAS,LINKR,WHO],GOT[0]); 09393170 + MOVE(WHAT:=256-WHO,GRINCH[XMAS.LINKR,WHO],GOT[0]); 09393170 XMAS:=XMAS + WHAT; 09393180 MOVE(WHO:=30-WHAT, GRINCH[XMAS.LINKR,0], GOT[WHAT]); 09393190 PUSHER:=XMAS + WHO; 09393200 END; 09393220 END PUSHER; 09393230 PROCEDURE PUSHEE(GRINCH,N,B,Y); VALUE N,B,Y; REAL N,B,Y; 09393240 - ARRAY GRINCH[0,0]; 09393250 - BEGIN 09393260 - REAL I,J,X; 09393270 - DEFINE LINKR = [32:8]#; 09393280 - J:=Y; 09393290 - I:=B + N; 09393300 - WHILE B < I DO 09393310 - BEGIN 09393320 - IF Y:=B.LINKC { 255 THEN 09393330 - BEGIN 09393340 - MOVE(30,CODE(J),GRINCH[B.LINKR,Y]); 09393350 - J:=J + 30; 09393360 - B:=B + 30; 09393370 - END 09393380 - ELSE BEGIN 09393390 - MOVE(X:=256-Y,CODE(J),GRINCH[B.LINKR,Y]); 09393400 - B:=B + X; 09393410 - J:=J + X; 09393420 - MOVE(Y:=30-X,CODE(J),GRINCH[B.LINKR,0]); 09393430 - B:=B + Y; 09393440 - J:=J + Y; 09393450 - END; 09393460 - END; 09393470 - END PUSHEE; 09393480 + ARRAY GRINCH[0,0]; 09393250 + BEGIN 09393260 + REAL I,J,X; 09393270 + DEFINE LINKR = [32:8]#; 09393280 + J:=Y; 09393290 + I:=B + N; 09393300 + WHILE B < I DO 09393310 + BEGIN 09393320 + IF Y:=B.LINKC { 225 THEN 09393330 + BEGIN 09393340 + MOVE(30,CODE(J),GRINCH[B.LINKR,Y]); 09393350 + J:=J + 30; 09393360 + B:=B + 30; 09393370 + END 09393380 + ELSE BEGIN 09393390 + MOVE(X:=256-Y,CODE(J),GRINCH[B.LINKR,Y]); 09393400 + B:=B + X; 09393410 + J:=J + X; 09393420 + MOVE(Y:=30-X,CODE(J),GRINCH[B.LINKR,0]); 09393430 + B:=B + Y; 09393440 + J:=J + Y; 09393450 + END; 09393460 + END; 09393470 + END PUSHEE; 09393480 STREAM PROCEDURE FIXHDR(F,N); VALUE N; 09393700 BEGIN SI~F; SI~SI-24; DS~LOC F; DS~WDS; 09393710 SI~F; 14(SI~SI+8); DI~LOC F; DS~WDS; 09393720 - DI~F; DS~DI+38; SI~ LOC N; 09393730 + DI~F; DI~DI+38; SI~ LOC N; 09393730 SI~SI+7; DS~CHR; 09393740 END FIXHDR; 09393750 LABEL EOF; 09394000 IF NOT INTOG THEN 09394100 BEGIN 09394200 - L~(L+3)DIV 4;COMMENT L~NUM. OF WORDS IN OUTER BLOCK; 09395000 + L~(L+3)DIV 4; COMMENT L~NUM. OF WORDS IN OUTER BLOCK;09395000 FILL SAVINFO[0,*] WITH 09395100 OCT7700000000000015, 09395200 OCT0253010477527705, 09395300 @@ -4836,21 +4839,21 @@ STREAM PROCEDURE FIXHDR(F,N); VALUE N; 09393700 END; 09408000 END UNTIL FALSE; 09412000 EOF: N~(SAVNDX+29) DIV 30; COMMENT NUMBER OF DISK SEGMENTS09413000 - OCCUPIED BY SAVE PROCEDURES AND ARAYS; 09414000 + OCCUPIED BY SAVE PROCEDURES AND ARRAYS; 09414000 IF INTOG AND NOT DECKTOG THEN 09414010 BEGIN % INTRINSIC FUNCTION OPTION 09414020 FOR J:=USEROPINX STEP 2 UNTIL OPARSIZE DO % IS TIMESHARING SET 09414022 IF OPTIONS[J] = "@TIMES" THEN 09414024 BEGIN TSSTOG:=BOOLEAN(OPTIONS[J+1]); J:=OPARSIZE END; 09414026 I ~ PRTBASE + 1; J ~ 0; 09414030 - DO IF GT1 ~ PRT[I] ! 0 THEN 09414040 + DO IF GT1 ~ PRT[I] !0 THEN 09414040 BEGIN 09414050 - J ~ J + 1; 09414060 - SAVINFO[J,LINKR,J.LINKC] ~ 09414070 + J ~ J+1; 09414060 + SAVINFO[J.LINKR,J.LINKC] ~ 09414070 0>1[8:8:10] 09414080 >1[33:18:15]; 09414090 - END UNTIL I:=I + 1 } PRTIMAX; 09414100 - SAVINFO[0,0] ~ J; % # OF INTRINSICS 09414110 + END UNTIL I:=I +1 } PRTIMAX; 09414100 + SAVINFO[0,0] ~ J; % # OF INTRINSICS 09414110 SAVNDX ~ MAXINTRINSIC; 09414120 END ELSE BEGIN 09414130 I~PRTBASE; DO IF GT1~PRT[I]!0 THEN 09415000 @@ -4863,7 +4866,7 @@ STREAM PROCEDURE FIXHDR(F,N); VALUE N; 09393700 MDESC(0&1[2:47:1],SAVINFO[D,PRTBASE-1]); 09419100 SAVNDX ~ 30 | N; 09420000 END; 09420010 - I ~ 0 ; J ~ -1; 09420020 + I ~ 0; J ~ -1; 09420020 09420100 IF NOT DECKTOG THEN 09421000 BEGIN 09421500 @@ -4900,305 +4903,306 @@ STREAM PROCEDURE FIXHDR(F,N); VALUE N; 09393700 OCT0441070001000062, 09444000 OCT0040413100000000, 09445000 OCT0001000000000101; 09446000 - WRITE(DEC,10,ELBAT[*]); 09447000 + WRITE(DECK,10,ELBAT[*]); 09447000 ELBAT[0] ~0&REAL(DECKTOG)[1:19:17]; 09447010 FOR I ~ 0 STEP 1 UNTIL Q DO 09447020 BEGIN K ~ STACKHEAD[I].[23:15]; 09447030 M ~ STACKHEAD[I].[38:10]; 09447040 FOR J ~ 0 STEP 8 UNTIL M DO BEGIN 09447050 - MOVE(8,INFO[J+K).LINKR,(J+K).LINKC], 09447060 + MOVE(8,INFO[(J+K).LINKR,(J+K).LINKC], 09447060 ELBAT [1]); 09447070 ELBAT[9] ~ B2D(J)&"310"[1:31:17]; 09447080 WRITE(DECK,10,ELBAT[*]) END; 09447090 END; 09447100 END END END PROGRAM; 09448000 -COMMENT THIS SECTION CONTAINS GENERATORS USED BY THE BLOCK ROUTINE; 10000000 -PROCEDURE DEFINEGEN(MACRO,J); VALUE MACRO,J; BOOLEAN MACRO; REAL J; 10228000 - BEGIN 10229000 - OWN INTEGER CHARCOUNT, REMCOUNT; 10230000 - COMMENT CHARCOUNT CONTAINS NUMBER OFCHARACTORS OF THE DEFINE THAT WE 10231000 - HAVE PUT INTO INFO. REMCOUNT CONTAINS NUMBER OF CHARACT- 10232000 - ORS REMAINING IN THIS ROW OF INFO; 10233000 -PROCEDURE PUTOGETHER(CHAR); REAL CHAR; 10234000 - BEGIN 10235000 -STREAM PROCEDURE PACKINFO(INFO,ISKIP,COUNT,ASKIP,ACCUM); 10236000 - VALUE ISKIP,COUNT,ASKIP; 10237000 - BEGIN DI ~ INFO; DI ~ DI + ISKIP; 10238000 - SI ~ ACCUM;SI ~ SI+ASKIP; SI ~ SI+3; 10239000 - DS ~ COUNT CHR END PACKINFO; 10240000 - INTEGER COUNT,SKIPCOUNT; 10241000 - IF (COUNT ~ CHAR.[12:6]) + CHARCOUNT > 2047 10242000 - THEN BEGIN FLAG(142); TB1~ TRUE END 10243000 - ELSE BEGIN 10244000 - IF COUNT > REMCOUNT 10245000 - THEN BEGIN 10246000 - SKIPCOUNT ~ COUNT-(COUNT~REMCOUNT); 10247000 - REMCOUNT ~ 2047 END 10248000 - ELSE REMCOUNT ~ REMCOUNT-COUNT 10249000 - GT1 ~ CHARCOUNT DIV 8 + NEXTINFO; 10250000 - PACKINFO(INFO[GT1.LINKR,GT1.LINKC],CHARCOUNT.[45:3], 10251000 - COUNT,0,CHAR); 10252000 - IF SKIPCOUNT ! 0 THEN 10253000 - PACKINFO(INFO[NEXTINFO.LINKR+1,0],0,SKIPCOUNT, 10254000 - COUNT,CHAR); 10255000 - CHARCOUNT ~ CHARCOUNT+SKIPCOUNT+COUNT END 10256000 - END PUTOGETHER 10257000 -STREAM PROCEDURE SCAN(D,S,Q,N,J); VALUE J,N,Q; 10257100 - BEGIN DI~D;DI~DI+11;SI~S;SI~SI+3; 10257200 - IF N SC=DC THEN 10257300 - IF SC>"0" THEN 10257400 - BEGIN DI~LOC J; DI~DI+7; 10257500 - IF SC{DC THEN 10257600 - BEGIN J~SI;DI~J;SI~LOC Q;SI~SI+6;DS~CHR; 10257700 - DS~S;DI~DI+2;DS~CHR; 10257800 - END END END; 10257900 - INTEGER LASTRESULT; 10258000 - REAL K,N,ELCLASS; 10258100 - DEFINE I=NXTELBT#; 10258200 - LABEL FINAL,PACKIN; 10258300 - LABEL BACK,SKSC,EXIT; 10259000 - TB1~ FALSE; 10260000 - CHARCOUNT~(NEXTINFO-LASTINFO)|8; 10261000 - DEFINECTR ~ 1; LASTRESULT ~ 2; 10262000 - REMCOUNT ~ (256 - NEXTINFO MOD 256) | 8; 10263000 - NEXTINFO~LASTINFO; 10263100 - IF J!0 THEN N~TAKE(LASTINFO+1).[12:6]; 10263110 - K~0; 10263200 -BACK: STOPDEFINE~TRUE; 10263300 - ELCLASS~TABLE(NXTELBT); 10263400 -SKSC: NXTELBT~NXTELBT-1; 10263500 - IF MACRO THEN 10263600 - BEGIN IF ELCLASS=COMMA THEN 10263700 - IF K=0 THEN 10263800 -FINAL: BEGIN PUTOGETHER("1#0000"); GO TO EXIT END 10263900 - ELSE GO PACKIN; 10264000 - IF ELCLASS=LEFTPAREN OR ELCLASS=LFTBRKET THEN 10264100 - BEGIN K~K+1; GO TO PACKIN END; 10264200 - IF ELCLASS=RTPAREN OR ELCLASS=RTBRKET THEN 10264300 - IF K~K-1<0 THEN GO FINAL ELSE GO PACKIN; 10264400 - IF ELCLASS=SEMICOLON THEN 10264410 - BEGIN FLAG(142);GO TO FINAL END ELSE GO PACKIN 10264420 - END; 10264500 - IF J!0 THEN 10264600 - IF ACCUM[1].[12:6]-1=N THEN 10264700 - SCAN(INFO[LASTINFO, LINKR ,LASTINFO, LINKC], 10264800 - ACCUM[1],N+770,N,J); 10264900 -PACKIN: 10264910 - IF RESULT = 4 10265000 - THEN BEGIN 10266000 - COMMENT INSERT " MARKS - 2130706432 IS DECIMAL FOR 1"0000; 10267000 - PUTOGETHER(2130706432); 10268000 - PUTOGETHER(ACCUM[1]); 10269000 - PUTOGETHER(2130706432) END 10270000 - ELSE BEGIN 10271000 - IF BOOLEAN(RESULT) AND BOOLEAN(LASTRESULT) 10272000 - THEN PUTOGETHER("1 0000"); COMMENT INSERT BLANK; 10273000 - PUTOGETHER(ACCUM[1]) END; 10274000 - IF TB1 THEN GO TO EXIT; 10275000 - LASTRESULT ~ RESULT; 10276000 - IF MACRO THEN GO TO BACK; 10276500 - IF ELCLASS=DECLARATORS AND ELBAT[I].ADDRESS = DEFINEV 10277000 - THEN BEGIN DEFINECTR ~ DEFINECTR+1; GO BACK END; 10278000 - IF ELCLASS ! CROSSHATCH THEN GO BACK; 10279000 - IF DEFINECTR ! 1 10280000 - THEN BEGIN STOPDEFINE ~ TRUE; 10281000 - IF ELCLASS~TABLE(I)!COMMA THEN 10282000 - DEFINECTR~DEFINECTR-1; GO SKSC END; 10283000 -EXIT: DEFINECTR~ 0; 10284000 - NEXTINFO ~(CHARCOUNT+7) DIV 8+NEXTINFO; 10285000 - END DEFINEGEN; 10286000 -PROCEDURE DBLSTMT; 12002000 - BEGIN 12003000 - REAL S,T; 12004000 - LABEL L1,L2,L3,EXIT; 12005000 - S~0; 12006000 - IF STEPI!LEFTPAREN THEN ERR(281); 12007000 - ELSE 12008000 -L1: BEGIN 12009000 - IF STEPI=COMMA THEN 12010000 - BEGIN 12011000 - OPTOG~TRUE; 12012000 - IF STEPI=ADOP THEN STEPIT; 12013000 - EMITNUM(NLO); 12014000 - EMITNUM(IF ELBAT[I-1].ADDRESS =SUB THEN -NHI ELSE NHI); 12015000 - OPTOG~FALSE; 12016000 - STEPIT; 12017000 - GO TO L2; 12018000 - END; 12019000 - IF TABLE(I+1)=COMMA THEN 12020000 - BEGIN 12021000 - IF ELCLASS=ADOP OR ELCLASS=MULOP THEN 12022000 - BEGIN 12023000 - EMITO(ELBAT[I].ADDRESS+1); 12024000 - IF S~S-1{0 THEN FLAG(282); STEPIT; 12025000 - GO TO L3 12026000 - END; 12027000 - IF ELCLASS=ASSIGNOP THEN 12028000 - BEGIN 12029000 - IF S!1 THEN FLAG(283); S~0; STEPIT; 12030000 - DO 12031000 - BEGIN 12032000 - IF ELCLASS !COMMA THEN BEGIN ERR(284);GO EXIT END; 12033000 - STEPIT; 12034000 - IF ELCLASS{INTID AND ELCLASS}REALID THEN 12035000 - BEGIN EMITN(ELBAT[I].ADDRESS); STEPIT END 12036000 - ELSE VARIABLE(FL); 12037000 - EMITO(STD) END UNTIL S~S+1=2 ; 12038000 - IF ELCLASS!RTPAREN THEN ERR(285) ELSE STEPIT; 12039000 - GO TO EXIT; 12040000 - END; 12041000 - IF ELCLASS{INTID AND ELCLASS}BOOID THEN 12042000 - BEGIN 12043000 - CHECKER(T~ELBAT[I]); 12044000 - STEPIT;STEPIT; 12045000 - AEXP; 12046000 - EMITV(T.ADDRESS); 12047000 - GO TO L2; 12048000 - END; 12049000 - END ; 12050000 - AEXP; 12051000 - IF ELCLASS!COMMA THEN BEGIN ERR(284);GO EXIT 12052000 + COMMENT THIS SECTION CONTAINS GENERATORS USED BY THE BLOCK ROUTINE; 10000000 + PROCEDURE DEFINEGEN(MACRO,J); VALUE MACRO,J; BOOLEAN MACRO; REAL J; 10228000 + BEGIN 10229000 + OWN INTEGER CHARCOUNT, REMCOUNT; 10230000 + COMMENT CHARCOUNT CONTAINS NUMBER OFCHARACTORS OF THE DEFINE THAT WE10231000 + HAVE PUT INTO INFO. REMCOUNT CONTAINS NUMBER OF CHARACT- 10232000 + ORS REMAINING IN THIS ROW OF INFO; 10233000 + PROCEDURE PUTOGETHER(CHAR); REAL CHAR; 10234000 + BEGIN 10235000 + STREAM PROCEDURE PACKINFO(INFO,ISKIP,COUNT,ASKIP,ACCUM); 10236000 + VALUE ISKIP,COUNT,ASKIP; 10237000 + BEGIN DI ~ INFO; DI ~ DI+ISKIP; 10238000 + SI ~ ACCUM;SI ~ SI+ASKIP; SI ~ SI+3; 10239000 + DS ~ COUNT CHR END PACKINFO; 10240000 + INTEGER COUNT,SKIPCOUNT; 10241000 + IF (COUNT ~ CHAR.[12:6]) + CHARCOUNT > 2047 10242000 + THEN BEGIN FLAG(142); TB1~ TRUE END 10243000 + ELSE BEGIN 10244000 + IF COUNT > REMCOUNT 10245000 + THEN BEGIN 10246000 + SKIPCOUNT ~ COUNT-(COUNT~REMCOUNT); 10247000 + REMCOUNT ~ 2047 END 10248000 + ELSE REMCOUNT ~ REMCOUNT-COUNT; 10249000 + GT1 ~ CHARCOUNT DIV 8 + NEXTINFO; 10250000 + PACKINFO(INFO[GT1.LINKR,GT1.LINKC],CHARCOUNT.[45:3], 10251000 + COUNT,0,CHAR); 10252000 + IF SKIPCOUNT ! 0 THEN 10253000 + PACKINFO(INFO[NEXTINFO.LINKR+1,0],0,SKIPCOUNT, 10254000 + COUNT,CHAR); 10255000 + CHARCOUNT ~ CHARCOUNT+SKIPCOUNT+COUNT END 10256000 + END PUTOGETHER; 10257000 + STREAM PROCEDURE SCAN(D,S,Q,N,J); VALUE J,N,Q; 10257100 + BEGIN DI~D;DI~DI+11;SI~S;SI~SI+3; 10257200 + IF N SC=DC THEN 10257300 + IF SC>"0" THEN 10257400 + BEGIN DI~LOC J; DI~DI+7; 10257500 + IF SC{DC THEN 10257600 + BEGIN J~SI;DI~J;SI~LOC Q;SI~SI+6;DS~CHR; 10257700 + DI~S;DI~DI+2;DS~CHR; 10257800 + END END END; 10257900 + INTEGER LASTRESULT; 10258000 + REAL K,N,ELCLASS; 10258100 + DEFINE I=NXTELBT#; 10258200 + LABEL FINAL,PACKIN; 10258300 + LABEL BACK,SKSC,EXIT; 10259000 + TB1~ FALSE; 10260000 + CHARCOUNT~(NEXTINFO-LASTINFO)|8; 10261000 + DEFINECTR ~ 1; LASTRESULT ~ 2; 10262000 + REMCOUNT ~ (256 - NEXTINFO MOD 256) | 8; 10263000 + NEXTINFO~LASTINFO; 10263100 + IF J!0 THEN N~TAKE(LASTINFO+1).[12:6]; 10263110 + K~0; 10263200 + BACK: STOPDEFINE~TRUE; 10263300 + ELCLASS~TABLE(NXTELBT); 10263400 + SKSC: NXTELBT~NXTELBT-1; 10263500 + IF MACRO THEN 10263600 + BEGIN IF ELCLASS=COMMA THEN 10263700 + IF K=0 THEN 10263800 + FINAL: BEGIN PUTOGETHER("1#0000"); GO TO EXIT END 10263900 + ELSE GO PACKIN; 10264000 + IF ELCLASS=LEFTPAREN OR ELCLASS=LFTBRKET THEN 10264100 + BEGIN K~K+1; GO TO PACKIN END; 10264200 + IF ELCLASS=RTPAREN OR ELCLASS=RTBRKET THEN 10264300 + IF K~K-1<0 THEN GO FINAL ELSE GO PACKIN; 10264400 + IF ELCLASS=SEMICOLON THEN 10264410 + BEGIN FLAG(142); GO TO FINAL END ELSE GO PACKIN 10264420 + END; 10264500 + IF J!0 THEN 10264600 + IF ACCUM[1].[12:6]-1=N THEN 10264700 + SCAN(INFO[LASTINFO. LINKR ,LASTINFO. LINKC], 10264800 + ACCUM[1],N+770,N,J); 10264900 + PACKIN: 10264910 + IF RESULT = 4 10265000 + THEN BEGIN 10266000 + COMMENT INSERT " MARKS - 2130706432 IS DECIMAL FOR 1"0000; 10267000 + PUTOGETHER(2130706432); 10268000 + PUTOGETHER(ACCUM[1]); 10269000 + PUTOGETHER(2130706432) END 10270000 + ELSE BEGIN 10271000 + IF BOOLEAN(RESULT) AND BOOLEAN(LASTRESULT) 10272000 + THEN PUTOGETHER("1 0000"); COMMENT INSERT BLANK; 10273000 + PUTOGETHER(ACCUM[1]) END; 10274000 + IF TB1 THEN GO TO EXIT; 10275000 + LASTRESULT ~ RESULT; 10276000 + IF MACRO THEN GO BACK; 10276500 + IF ELCLASS=DECLARATORS AND ELBAT[I].ADDRESS = DEFINEV10277000 + THEN BEGIN DEFINECTR ~ DEFINECTR+1; GO BACK END; 10278000 + IF ELCLASS ! CROSSHATCH THEN GO BACK; 10279000 + IF DEFINECTR ! 1 10280000 + THEN BEGIN STOPDEFINE ~ TRUE; 10281000 + IF ELCLASS~TABLE(I)!COMMA THEN 10282000 + DEFINECTR~DEFINECTR-1; GO SKSC END; 10283000 + EXIT: DEFINECTR~ 0; 10284000 + NEXTINFO ~(CHARCOUNT+7) DIV 8+NEXTINFO; 10285000 + END DEFINEGEN; 10286000 + PROCEDURE DBLSTMT; 12002000 + BEGIN 12003000 + REAL S,T; 12004000 + LABEL L1,L2,L3,EXIT; 12005000 + S~0; 12006000 + IF STEPI!LEFTPAREN THEN ERR(281) 12007000 + ELSE 12008000 + L1: BEGIN 12009000 + IF STEPI=COMMA THEN 12010000 + BEGIN 12011000 + DPTOG~TRUE; 12012000 + IF STEPI=ADOP THEN STEPIT; 12013000 + EMITNUM(NLO); 12014000 + EMITNUM(IF ELBAT[I-1].ADDRESS =SUB THEN -NHI ELSE NHI); 12015000 + DPTOG~FALSE; 12016000 + STEPIT; 12017000 + GO TO L2; 12018000 + END; 12019000 + IF TABLE(I+1)=COMMA THEN 12020000 + BEGIN 12021000 + IF ELCLASS=ADOP OR ELCLASS=MULOP THEN 12022000 + BEGIN 12023000 + EMITO(ELBAT[I].ADDRESS+1); 12024000 + IF S~S-1{0 THEN FLAG(282); STEPIT; 12025000 + GO TO L3; 12026000 + END; 12027000 + IF ELCLASS=ASSIGNOP THEN 12028000 + BEGIN 12029000 + IF S!1 THEN FLAG(283); S~0; STEPIT; 12030000 + DO 12031000 + BEGIN 12032000 + IF ELCLASS !COMMA THEN BEGIN ERR(284);GO EXIT END; 12033000 + STEPIT; 12034000 + IF ELCLASS{INTID AND ELCLASS}REALID THEN 12035000 + BEGIN EMITN(ELBAT[I].ADDRESS); STEPIT END 12036000 + ELSE VARIABLE(FL); 12037000 + EMITO(STD) END UNTIL S~S+1=2 ; 12038000 + IF ELCLASS!RTPAREN THEN ERR(285) ELSE STEPIT; 12039000 + GO TO EXIT; 12040000 + END; 12041000 + IF ELCLASS{INTID AND ELCLASS}BOOID THEN 12042000 + BEGIN 12043000 + CHECKER(T~ELBAT[I]); 12044000 + STEPIT;STEPIT; 12045000 + AEXP; 12046000 + EMITV(T.ADDRESS); 12047000 + GO TO L2; 12048000 + END; 12049000 + END ; 12050000 + AEXP; 12051000 + IF ELCLASS!COMMA THEN BEGIN ERR(284);GO EXIT 12052000 END; 12053000 - STEPIT; AEXP; EMITO(XCH); 12054000 - L2: S~S+1; 12055000 - L3: IF ELCLASS!COMMA THEN BEGIN ERR(284);GO TO EXIT END; 12056000 - GO TO L1; 12057000 - EXIT:END 12058000 - END DBLSTMT; 12059000 -REAL PROCEDURE FIXDEFINEINFO(T); VALUE T; REAL T; 12101000 - BEGIN REAL K,S,P,J,EL; 12102000 - STREAM PROCEDURE SET(S,D,K,E); VALUE K,E; 12103000 - BEGIN SI~S;SI~SI+11;DI~D;DI~DI+3;DS~K CHR; 12104000 - SI~LOC E; SI~SI+6; DS~2 CHR; 12105000 - END; 12106000 - MACROID~TRUE; 12107000 - P~(FIXDEFINEINFO~T).ADDRESS; 12108000 - K~COUNT; 12109000 - S~SCRAM; 12110000 - STREAMTOG~TRUE & STREAMTOG[1:3:45] ; 12110100 - STOPDEFINE~TRUE; 12111000 - EL~TABLE(NXTELBT); 12112000 - NXTELBT~NXTELBT-1; 12113000 - IF EL!LEFTPAREN AND EL!LFTBRKET THEN 12114000 - FLAG(141); 12115000 - ELSE DO BEGIN J~J+1; 12116000 - SET(INFO[T.LINKR,T.LINKC],ACCUM[1],K,64|J+12); 12117000 - ACCUM[1].[12:6]~K+2; 12118000 - ACCUM[0]~0; 12119000 - ACCUM[0].CLASS~DEFINEDID; 12120000 - COUNT~K+2; 12121000 - SCRAM~ACCUM[1] MOD 125; 12122000 - E; 12123000 - DEFINEGEN(TRUE,0); 12124000 - END UNTIL EL~ELBAT[NXTELBT].CLASS!COMMA; 12125000 - IF EL!RTPAREN AND EL!RTBRKET OR J!P THEN FLAG(141); 12126000 - MACROID~FALSE; 12127000 - STREAMTOG~STREAMTOG.[1:45] ; 12127100 - END; 12128000 -PROCEDURE SCATTERELBAT; 13197000 - BEGIN 13198000 - REAL T; 13199000 - T ~ ELBAT[I]; 13200000 - KLASSF ~ T.CLASS; 13201000 - FORMALF ~ BOOLEAN(T.VO); 13202000 - VONF ~ BOOLEAN(T.VO); 13203000 - LEVELF ~ T.LVL; 13204000 - ADDRSF ~ T.ADDRESS; 13205000 - INCRF ~ T.INCR; 13206000 - LINKF ~ T.LINK; 13207000 - END SCATTERELBAT; 13208000 -PROCEDURE CHKSDB; 13209000 + STEPIT; AEXP; EMITO(XCH); 12054000 + L2: S~S+1; 12055000 + L3: IF ELCLASS!COMMA THEN BEGIN ERR(284);GO TO EXIT END; 12056000 + GO TO L1; 12057000 + EXIT:END 12058000 + END DBLSTMT; 12059000 + REAL PROCEDURE FIXDEFINEINFO(T); VALUE T; REAL T; 12101000 + BEGIN REAL K,S,P,J,EL; 12102000 + STREAM PROCEDURE SET(S,D,K,E); VALUE K,E; 12103000 + BEGIN SI~S;SI~SI+11;DI~D;DI~DI+3;DS~K CHR; 12104000 + SI~LOC E; SI~SI+6; DS~2 CHR; 12105000 + END; 12106000 + MACROID~TRUE; 12107000 + P~(FIXDEFINEINFO~T).ADDRESS; 12108000 + K~COUNT; 12109000 + S~SCRAM; 12110000 + STREAMTOG~TRUE & STREAMTOG[1:3:45] ; 12110100 + STOPDEFINE~TRUE; 12111000 + EL~TABLE(NXTELBT); 12112000 + NXTELBT~NXTELBT-1; 12113000 + IF EL!LEFTPAREN AND EL!LFTBRKET THEN 12114000 + FLAG(141); 12115000 + ELSE DO BEGIN J~J+1; 12116000 + SET(INFO[T.LINKR,T.LINKC],ACCUM[1],K,64|J+12); 12117000 + ACCUM[1].[12:6]~K+2; 12118000 + ACCUM[0]~0; 12119000 + ACCUM[0].CLASS~DEFINEDID; 12120000 + COUNT~K+2; 12121000 + SCRAM~ACCUM[1] MOD 125; 12122000 + E; 12123000 + DEFINEGEN(TRUE,0); 12124000 + END UNTIL EL~ELBAT[NXTELBT].CLASS!COMMA; 12125000 + IF EL!RTPAREN AND EL!RTBRKET OR J!P THEN FLAG(141); 12126000 + MACROID~FALSE; 12127000 + STREAMTOG~STREAMTOG.[1:45] ; 12127100 + END; 12128000 + PROCEDURE SCATTERELBAT; 13197000 + BEGIN 13198000 + REAL T; 13199000 + T ~ ELBAT[I]; 13200000 + KLASSF ~ T.CLASS; 13201000 + FORMALF ~ BOOLEAN(T.FORMAL); 13202000 + VONF ~ BOOLEAN(T.VO); 13203000 + LEVELF ~ T.LVL; 13204000 + ADDRSF ~ T.ADDRESS; 13205000 + INCRF ~ T.INCR; 13206000 + LINKF ~ T.LINK; 13207000 + END SCATTERELBAT; 13208000 +PROCEDURE CHKSOB; 13209000 IF GTA1[J~J-1]!0 THEN FLAG(23); 13210000 DEFINE 13211000 ADDC=532480#, 13212000 SUBC=1581056#, 13213000 EMITSTORE=EMITPAIR#; 13214000 PROCEDURE PURGE(STOPPER); 13215000 - VALUE STOPPER; 13216000 - REAL STOPPER; 13217000 + VALUE STOPPER; 13216000 + REAL STOPPER; 13217000 BEGIN 13218000 INTEGER POINTER; 13219000 LABEL RECOV; DEFINE ELCLASS = KLASSF#; 13220000 REAL J,N,OCR,TL,ADD; 13221000 - POINTER~LASTINFO; 13222000 - WHILE POINTER } STOPPER 13223000 - DO 13224000 - BEGIN 13225000 - IF ELCLASS~(GT1~TAKE(POINTER)).CLASS=NONLITNO 13226000 - THEN BEGIN 13227000 - NCII~NCII-1; 13228000 - EMITNUM(TAKE(POINTER,1)); 13229000 - EMITSTORE(MAXSTACK,STD); 13230000 - MAXSTACK~(G~MAXSTACK)+1); 13231000 - J~L; L~GT1.LINK; 13232000 - DO 13233000 - BEGIN 13234000 - GT4~GET(L); 13235000 - EMITV(G); 13236000 - END 13237000 - UNTIL (L~GT4)=4095; 13238000 - L~J; 13239000 - POINTER~POINTER-GT1.INCR 13240000 - END 13241000 - ELSE 13242000 - BEGIN 13243000 - IF NOT BOOLEAN(GT1.FORMAL) 13244000 - THEN BEGIN 13245000 - IF ELCLASS = LABELID 13246000 - THEN BEGIN 13247000 - ADD ~ GT1.ADDRESS; 13248000 - IF NOT BOOLEAN(OCR~TAKE(GIT(POINTER))).[1:1] 13249000 - THEN IF OCR.[36:12 ! 0 OR ADD ! 0 13250000 - THEN BEGIN GT1 ~ 160; GO TO RECOV END; 13251000 - IF ADD ! 0 THEN 13252000 - PROGDESCBLDR(ADD,TRUE,OCR.[36:10],LDES) END 13252500 - ELSE IF FALSE 13253000 - THEN BEGIN 13254000 - IF TAKE(POINTER+1) < 0 13255000 - THEN BEGIN GT1 ~ 162; GO TO RECOV END; 13256000 - OCR ~(J ~ TAKE(GIT(POINTER))).[24:12]; 13257000 - N ~ GET( (J~J.[36:12])+4); TL ~ L; 13258000 - IF ADD ~ GT1.ADDRESS ! 0 13259000 - THEN BEGIN 13260000 - IF OCR = 0 13261000 - THEN BEGIN L~OCR-2; CALLSWITCH(POINTER); EMITO(BFW);END; 13262000 - L~J+11; EMITL(15); EMITO(RTS); 13263000 - FOR J ~ 4 STEP 4 UNTIL N 13264000 - DO BEGIN 13265000 - EMITL(GNAT(GET(L)|4096+GET(L+1))); 13266000 - EMITO(RTS) END END 13267000 - ELSE BEGIN 13268000 - L ~ J+13; 13269000 - FOR J ~ 4 STEP 4 UNTIL N 13270000 - DO BEGIN 13271000 - GT1 ~ GET(L)|4096+GET(L+1); 13272000 - GOGEN(GT1,BFW) END;END; 13273000 - L ~ TL END 13277000 - ELSE IF ELCLASS } PROCID AND ELCLASS { INTPROCID 13278000 - THEN IF TAKE(POINTER+1) <0 13279000 - THEN BEGIN GT1 ~ 16; 13280000 + POINTER~LASTINFO; 13222000 + WHILE POINTER } STOPPER 13223000 + DO 13224000 + BEGIN 13225000 + IF ELCLASS~(GT1~TAKE(POINTER)).CLASS=NONLITNO 13226000 + THEN BEGIN 13227000 + NCII~NCII-1; 13228000 + EMITNUM(TAKE(POINTER+1)); 13229000 + EMITSTORE(MAXSTACK,STD); 13230000 + MAXSTACK~(G~MAXSTACK)+1; 13231000 + J~L; L~GT1.LINK; 13232000 + DO 13233000 + BEGIN 13234000 + GT4~GET(L); 13235000 + EMITV(G) 13236000 + END 13237000 + UNTIL (L~GT4)=4095; 13238000 + L~J; 13239000 + POINTER~POINTER-GT1.INCR 13240000 + END 13241000 + ELSE 13242000 + BEGIN 13243000 + IF NOT BOOLEAN(GT1.FORMAL) 13244000 + THEN BEGIN 13245000 + IF ELCLASS = LABELID 13246000 + THEN BEGIN 13247000 + ADD ~ GT1.ADDRESS; 13248000 + IF NOT BOOLEAN(OCR~TAKE(GIT(POINTER))).[1:1] 13249000 + THEN IF OCR.[36:12] ! 0 OR ADD ! 0 13250000 + THEN BEGIN GT1 ~ 160; GO TO RECOV END; 13251000 + IF ADD ! 0 THEN 13252000 + PROGDESCBLDR(ADD,TRUE,OCR.[36:10],LDES) END 13252500 + ELSE IF FALSE 13253000 + THEN BEGIN 13254000 + IF TAKE(POINTER+1) < 0 13255000 + THEN BEGIN GT1 ~ 162; GO TO RECOV END; 13256000 + OCR ~(J ~ TAKE(GIT(POINTER))).[24:12]; 13257000 + N ~ GET( (J~J.[36:12])+4); TL ~ L; 13258000 + IF ADD ~ GT1.ADDRESS ! 0 13259000 + THEN BEGIN 13260000 + 13261000 + IF OCR ! 0 13262000 + THEN BEGIN L~OCR-2; CALLSWITCH(POINTER); EMITO(BFW);END; 13263000 + L~J+11; EMITL(15); EMITO(RTS); 13264000 + FOR J ~ 4 STEP 4 UNTIL N 13265000 + DO BEGIN 13266000 + EMITL(GNAT(GET(L)|4096+GET(L+1))); 13267000 + EMITO(RTS) END END 13268000 + ELSE BEGIN 13269000 + L ~ J+13; 13270000 + FOR J ~ 4 STEP 4 UNTIL N 13271000 + DO BEGIN 13272000 + GT1 ~ GET(L)|4096+GET(L+1); 13273000 + GOGEN(GT1,BFW) END;END; 13274000 + L ~ TL END 13277000 + ELSE IF ELCLASS } PROCID AND ELCLASS { INTPROCID 13278000 + THEN IF TAKE(POINTER+1) < 0 13279000 + THEN BEGIN GT1 ~ 161; 13280000 RECOV: MOVE(9,INFO[POINTER.LINKR,POINTER.LINKC],ACCUM);13281000 Q ~ ACCUM[1]; FLAG(GT1); ERRORTOG ~ TRUE END 13282000 END; 13283000 GT2~TAKE(POINTER+1); 13284000 GT3~GT2.PURPT; 13285000 STACKHEAD[(0>2[12:12:36])MOD 125]~TAKE(POINTER).LINK; 13286000 - POINTER~POINTER-GT3; 13287000 + POINTER~POINTER-GT3 13287000 END 13288000 END ; 13289000 LASTINFO~POINTER; 13290000 - NEXTINFO~STOPPER; 13291000 + NEXTINFO~STOPPER 13291000 END; 13292000 PROCEDURE E; 13293000 COMMENT 13294000 E IS THE PROCEDURE WHICH PLACES AN ENTRY IN INFO AND 13295000 HOOKS IT INTO STACKHEAD. THE PREVIOUS STACKHEAD LINK 13296000 - IS SAVED IN THE LINK OF THE ELTAB WORD IN THE NEW ENTRY 13297000 - E PREVENTS AN ENTRY FORM OVERFLOWING A ROW,STARTING AT THEN 13298000 - BEGINNING OF THE NEXT ROW ISNECESSARY ; 13299000 + IS SAVED IN THE LINK OF THE ELBAT WORD IN THE NEW ENTRY 13297000 + E PREVENTS AN ENTRY FROM OVERFLOWING A ROW,STARTING AT THE 13298000 + BEGINNING OF THE NEXT ROW IF NECESSARY ;13299000 BEGIN 13300000 REAL WORDCOUNT,RINX; 13301000 - IF RINX~(NEXTINFO~WORDCOUNT~(COUNT+18)DIV 8 ).LINKR ! 13302000 + IF RINX~(NEXTINFO+WORDCOUNT~(COUNT+18)DIV 8 ).LINKR ! 13302000 NEXTINFO.LINKR 13303000 THEN BEGIN PUT(125&(RINX|256-NEXTINFO)[27:40:8],NEXTINFO); 13304000 NEXTINFO~256|RINX END; 13305000 @@ -5213,17 +5217,17 @@ THEN BEGIN PUT(125&(RINX|256-NEXTINFO)[27:40:8],NEXTINFO); 13304000 ACCUM[1].PURPT~NEXTINFO-LASTINFO; 13309000 MOVE(WORDCOUNT,ACCUM,INFO[NEXTINFO.LINKR,NEXTINFO.LINKC]); 13310000 LASTINFO~NEXTINFO; 13311000 - NEXTINFO~NEXTINFO~WORDCOUNT 13312000 + NEXTINFO~NEXTINFO+WORDCOUNT 13312000 END; 13313000 -PROCEDURE ENTRY(TYPE) 13314000 +PROCEDURE ENTRY(TYPE); 13314000 VALUE TYPE; 13315000 REAL TYPE; 13316000 COMMENT 13317000 ENTRY ASSUMES THAT I IS POINTING AT AN IDENTIFIER WHICH 13318000 IS BEING DECLARED AND MAKES UP THE ELBAT ENTRY FOR IT 13319000 - ACCORD TO TYPE .IF THE ENTRY IS AN ARRAY AND NOT 13320000 - A SPECIFICATION THEN A DESCRIPTOR IS PLACED ON THE STACK 13321000 - FOR THE UPCOMING COMMUNICATE TO GET STORAGE FOR THE ARRAY(S) ; 13322000 + ACCORD TO TYPE .IF THE ENTRY IS AN ARRAY AND NOT 13320000 + A SPECIFICATION THEN A DESCRIPTOR IS PLACED IN THE STACK 13321000 + FOR THE UPCOMING COMMUNICATE TO GET STORAGE FOR THE ARRAY(S) ;13322000 BEGIN 13323000 J~0;I~I-1; 13324000 DO 13325000 @@ -5256,17 +5260,17 @@ COMMENT 13317000 13350000 UNTIL STEPI!COMMA OR STOPENTRY; GTA1[0]~J 13351000 END; 13352000 - PROCEDURE UNHOOK; 13353000 + PROCEDURE UNHOOK; 13353000 COMMENT 13354000 - UNHOOK ASSUMES THAT THE WORD IN ELBAT[I} POINTS TO A PSEUDO ENTRY 13355000 - FOR APARAMETER,ITS JOB IS TO UNKOOK THAT FALSE ENTRY SO THAT 13356000 - E WILL WORK ASNORMAL. 13357000 + UNHOOK ASSUMES THAT THE WORD IN ELBAT[I] POINTS TO A PSUEDO ENTRY 13355000 + FOR APARAMETER.ITS JOB IS TO UNHOOK THAT FALSE ENTRY SO THAT 13356000 + E WILL WORK AS NORMAL. ;13357000 BEGIN 13358000 REAL LINKT,A,LINKP; 13359000 LABEL L; 13360000 LINKT~STACKHEAD[SCRAM] ; LINKP~ELBAT[I].LINK; 13361000 - IF LINK=LINKP THEN STACKHEAD[SCRAM]~TAKE(LINKT).LINK 13362000 - ELSE 13363000 + IF LINKT=LINKP THEN STACKHEAD[SCRAM]~TAKE(LINKT).LINK 13362000 + ELSE 13363000 L: IF A~TAKE(LINKT).LINK=LINKP 13364000 THEN PUT((TAKE(LINKT))&(TAKE(A))[35:35:13],LINKT) 13365000 ELSE BEGIN LINKT~A; GO TO L END; 13366000 @@ -5276,7 +5280,7 @@ PROCEDURE MAKEUPACCUM; 13368000 IF PTOG 13370000 THEN GT1~LEVELF ELSE GT1~LEVEL; 13371000 ACCUM[0]~ ABS(ELBAT[I] & KLASSF[2:41:7] & REAL(FORMALF)[9:47:1] 13372000 - & REAL(VONF)[10:47:1] & GT1[11:43:] &ADDRSF[16:37:11] 13373000 + & REAL(VONF)[10:47:1] & GT1[11:43:5] &ADDRSF[16:37:11]13373000 ) 13374000 END; 13375000 PROCEDURE ARRAE; 13376000 @@ -5299,20 +5303,20 @@ PROCEDURE ARRAE; 13376000 BEGIN 13393000 SAVEINFO~ELBAT[I].ADDRESS; 13394000 IF STEPI!RTBRKET THEN FLAG(53); 13395000 - FILLSTMT(SAVEINFO); 13396000 + FILLSTMT(SAVEINFO); 13396000 SAVEINFO~1; 13397000 END 13398000 - ELSE 13399000 + ELSE 13399000 BEGIN IF ELCLASS!ASTRISK THEN FLAG(56); 13400000 SAVEINFO~1; 13401000 WHILE STEPI!RTBRKET DO 13402000 BEGIN IF ELCLASS!COMMA AND 13403000 STEPI!ASTRISK THEN FLAG(56); 13404000 SAVEINFO~SAVEINFO+1 13405000 - END; STEPIT; 13406000 + END;STEPIT; 13406000 13407000 -END; PUT(TAKE(LASTINFO)&SAVEINFO[27:4018],LASTINFO); 13408000 -J ~ 1 ; GTA1[0] ~ 0 ; 13408500 +END; PUT(TAKE(LASTINFO)&SAVEINFO[27:40:8],LASTINFO); 13408000 +J ~ 1 ; GTA1[0] ~ 0 ; 13408500 IF ELCLASS=COMMA THEN BEGIN STEPIT;GO TO BETA1 END 13409000 END ARRAE; 13410000 PROCEDURE PUTNBUMP(X); 13589000 @@ -5320,13 +5324,13 @@ IF ELCLASS=COMMA THEN BEGIN STEPIT;GO TO BETA1 END 13409000 REAL X; 13591000 BEGIN 13592000 INFO[NEXTINFO.LINKR,NEXTINFO.LINKC]~X; 13593000 - NEXTINFO~NEXTINFO+1; 13594000 + NEXTINFO~NEXTINFO+1 13594000 END ; 13595000 PROCEDURE JUMPCHKX; 13596000 -COMMENT THIS PROCEDURE IS CALLED AT THE START OFANY EXECUTABLE CODE 13597000 - WHICH THE BLOCKMIGHT EMIT.IT DETERMINES WHETHER ANY JUMPS 13598000 - ARROUND NONEXECUTABLE CODE MAY BE WAITING AND WHEER IT 13599000 - IF THE FIRST EXECUTABLE CODE; 13600000 +COMMENT THIS PROCEDURE IS CALLED AT THE START OF ANY EXECUTABLE CODE 13597000 + WHICH THE BLOCK MIGHT EMIT.IT DETERMINES WHETHER ANY JUMPS 13598000 + ARROUND NONEXECUTABLE CODE MAY BE WAITING AND WHETHER IT 13599000 + IS THE FIRST EXECUTABLE CODE; 13600000 IF NOT SPECTOG THEN 13601000 BEGIN 13602000 IF AJUMP 13603000 @@ -5340,16 +5344,16 @@ BEGIN 13602000 ADJUST; 13611000 FIRSTX~L; 13612000 END; 13613000 - AJUMP~FALSE; 13614000 + AJUMP~FALSE 13614000 END; 13615000 PROCEDURE JUMPCHKNX; 13616000 -COMMENT JUMPCHNX DETERMINES WHETHER ANY EXECUTABLE CODE HAS BEEN 13617000 - EMITTED AND IF SO WHETHER IT WAS JUTS PREVIOUS TO THE 13618000 +COMMENT JUMPCHKNX DETERMINES WHETHER ANY EXECUTABLE CODE HAS BEEN 13617000 + EMITTED AND IF SO WHETHER IT WAS JUST PREVIOUS TO THE 13618000 NON EXECUTABLE ABOUT TO BE EMITTED.IF BOTH THEN L IS BUMPED 13619000 AND SAVED FOR A LATER BRANCH; 13620000 IF NOT SPECTOG THEN 13621000 BEGIN 13622000 - IF FIRST!4095 13623000 + IF FIRSTX!4095 13623000 THEN 13624000 BEGIN 13625000 IF NOT AJUMP 13626000 @@ -5364,8 +5368,8 @@ PROCEDURE SEGMENTSTART(SAVECODE);VALUE SAVECODE;BOOLEAN SAVECODE; 13632000 BEGIN 13634000 LABEL L1; 13635000 DI:=FIEL; DS:=8 LIT" "; 13636000 - SI:=FIEL; DS:=9WDS; DI:=DI-3; 13637000 - SAVECODE(DS:=38 LIT "START OF SAVE SEGMENT; BASE ADDRESS ="; 13638000 + SI:=FIEL; DS:=9 WDS; DI:=DI-3; 13637000 + SAVECODE(DS:=38 LIT "START OF SAVE SEGMENT; BASE ADDRESS = "; 13638000 JUMP OUT TO L1); 13639000 DS:=38 LIT " START OF REL SEGMENT; DISK ADDRESS = "; 13640000 L1: 13641000 @@ -5385,16 +5389,16 @@ PROCEDURE SEGMENT(SIZE,FR); VALUE SIZE,FR; INTEGER SIZE,FR; 13657000 BEGIN 13663000 DI:=FIEL; DS:=8 LIT" "; 13665000 SI:=FIEL; DS:=14 WDS; 13667000 - DI:=DI-16; DS:=6 LIT"SIZE="; 13668000 + DI:=DI-16; DS:=6 LIT"SIZE= "; 13668000 SI:=LOC SIZE; DS:=4 DEC; DS:=6 LIT" WORDS" 13670000 END PRINT; 13673000 STREAM PROCEDURE DOIT(C,A,I,S,F,W); VALUE C,A,F,W; 13673100 BEGIN LOCAL N; 13673150 DI:=S; DS:=8 LIT" "; SI:=S; DS:=9 WDS; 13673200 - DI:=DI-8; SI:=LOC W;DS:=4 DEC; 13673250 - SI:=I;SI:=SI+10;DI:=LOC N; DI:=DI+7; DS:=CHR; 13673300 - DI:=S;SI:=LOC F; SI:=SI+7; DS:=CHR; SI:=LOC C; 13673350 - DS:=3 DEC; DS:=4 DEC; SI:=I; SI:=SI+11;DS:=N CHR; 13673400 + DI:=DI-8; SI:=LOC W; DS:=4 DEC; 13673250 + SI:=I; SI:=SI+10;DI:=LOC N; DI:=DI+7; DS:=CHR; 13673300 + DI:=S; SI:=LOC F; SI:=SI+7; DS:=CHR; SI:=LOC C; 13673350 + DS:=3 DEC; DS:=4 DEC;SI:=I; SI:=SI+11;DS:=N CHR; 13673400 END DOIT; 13673450 IF LISTER OR SEGSTOG THEN 13674000 BEGIN 13674500 @@ -5406,16 +5410,16 @@ PROCEDURE SEGMENT(SIZE,FR); VALUE SIZE,FR; INTEGER SIZE,FR; 13657000 KLASSF:=TAKE(PROINFO).CLASS; 13677200 IF FR > 1024 THEN FR~FR-1024; 13677250 DOIT(KLASSF,FR,INFO[PROINFO.LINKR,PROINFO.LINKC], 13677300 - TWXA[0],SAF,TWXA[*]); 13677400 + TWXA[0],SAF,SIZE); 13677400 WRITE(STUFF,10,TWXA[*]); 13677500 END; 13677600 - IF SIZE>SEGSIZEMAX THEN SEGSIZEMAX:=SIZE; 13678000 - END SEGMENT; 13681000 + IF SIZE>SEGSIZEMAX THEN SEGSIZEMAX:=SIZE; 13678000 + END SEGMENT; 13681000 STREAM PROCEDURE MOVECODE(EDOC,TEDOC); 13683000 BEGIN LOCAL T1,T2,T3; 13684000 SI~EDOC;T1~SI; 13685000 SI~TEDOC;T2~SI; 13686000 - SI~LOC EDOC 13687000 + SI~LOC EDOC; 13687000 SI~SI+3; 13688000 DI~LOC T3; 13689000 DI~DI+5; 13690000 @@ -5424,7 +5428,7 @@ PROCEDURE SEGMENT(SIZE,FR); VALUE SIZE,FR; INTEGER SIZE,FR; 13657000 SI~ LOC EDOC; 13693000 DI~ LOC T2; 13694000 DS~ 5 CHR; 13695000 - 3(IF SB THEN DS~1 SET ELSE DS~1 RESET; SKIP 1 SB); 13696000 + 3(IF SB THEN DS~1 SET ELSE DS~1 RESET;SKIP 1 SB); 13696000 DI~T3; 13697000 SI~LOC T2; 13698000 DS~WDS; 13699000 @@ -5433,8 +5437,8 @@ PROCEDURE SEGMENT(SIZE,FR); VALUE SIZE,FR; INTEGER SIZE,FR; 13657000 SKIP 3 DB; 13702000 SI~LOC EDOC; 13703000 SI~SI+3; 13704000 - 15(IF SB THEN DS~1 SET ELSE DS~1 RESET;SKIP 1 SB); 13705000 - SI~LOC TEDOC; 13706000 + 15(IF SB THEN DS~1 SET ELSE DS~ 1 RESET;SKIP 1 SB); 13705000 + SI~ LOC TEDOC; 13706000 DI~ LOC T1; 13707000 DS~ 5 CHR; 13708000 3(IF SB THEN DS~1 SET ELSE DS~1 RESET;SKIP 1 SB); 13709000 @@ -5442,75 +5446,75 @@ PROCEDURE SEGMENT(SIZE,FR); VALUE SIZE,FR; INTEGER SIZE,FR; 13657000 SI~LOC T1; 13711000 DS~WDS; 13712000 END; 13713000 - PROCEDURE ENTER(TYPE); 13714000 - VALUE TYPE; 13715000 - REAL TYPE; 13716000 - BEGIN 13717000 - G~GTA1[J=J-1]; 13718000 - IF NOT SPECTOG 13719000 - THEN 13720000 - BEGIN 13721000 - IF NOT P2 13722000 - THEN IF P2~(G=OWNV) 13723000 - THEN G~GTA1[J~J-1]; 13724000 - IF NOT P3 13725000 - THEN IF P3~(G=SAVEV) 13726000 - THEN G~GTA1[J~J-1] 13727000 - END; 13728000 - IF G!0 THEN FLAG(25) ELSE ENTRY(TYPE) 13729000 - END; 13730000 - PROCEDURE HTTEDAP(GOTSTORAGE,RELAD,STOPPER,PRTAD); 13731000 - VALUE GOTSTORAGE,RELAD,STOPPER,PRTAD 13732000 - BOOLEAN GOTSTORAGE; 13733000 - REAL RELAD,STOPPER,PRTAD; 13734000 - BEGIN 13735000 - IF FUNCTOG 13736000 - THEN 13737000 - BEGIN 13738000 - EMITV(513); 13739000 - EMITO(RTN); 13740000 - END 13741000 - ELSE 13742000 - EMITO(XIT); 13743000 - CONSTANTCLEAN; 13744000 - PURGE(STOPPER); 13745000 - MOVE(1,CODE(0),Z); PROGDESCBLDR(PRTAD,BOOLEAN(Z),(L+3)DIV 4,PDES);13746000 - END HTTEDAP; 13747000 - PROCEDURE INLINE; 13748000 - BEGIN 13749000 - INTEGER SN,LN,P,LS,J; BOOLEAN MKST; 13750000 + PROCEDURE ENTER(TYPE); 13714000 + VALUE TYPE; 13715000 + REAL TYPE; 13716000 + BEGIN 13717000 + G~GTA1[J~J-1]; 13718000 + IF NOT SPECTOG 13719000 + THEN 13720000 + BEGIN 13721000 + IF NOT P2 13722000 + THEN IF P2~(G=OWNV) 13723000 + THEN G~GTA1[J~J-1]; 13724000 + IF NOT P3 13725000 + THEN IF P3~(G=SAVEV) 13726000 + THEN G~GTA1[J~J-1] 13727000 + END; 13728000 + IF G!0 THEN FLAG(25) ELSE ENTRY(TYPE) 13729000 + END; 13730000 +PROCEDURE HTTEOAP(GOTSTORAGE,RELAD,STOPPER,PRTAD); 13731000 + VALUE GOTSTORAGE,RELAD,STOPPER,PRTAD; 13732000 + BOOLEAN GOTSTORAGE; 13733000 + REAL RELAD,STOPPER,PRTAD; 13734000 + BEGIN 13735000 + IF FUNCTOG 13736000 + THEN 13737000 + BEGIN 13738000 + EMITV(513); 13739000 + EMITO(RTN) 13740000 + END 13741000 + ELSE 13742000 + EMITO(XIT); 13743000 + CONSTANTCLEAN; 13744000 + PURGE(STOPPER); 13745000 + MOVE(1,CODE(0),Z); PROGDESCBLDR(PRTAD,BOOLEAN(Z),(L+3)DIV 4,PDES); 13746000 + END HTTEOAP; 13747000 +PROCEDURE INLINE; 13748000 + BEGIN 13749000 + INTEGER SN,LN,P,LS,J; BOOLEAN MKST; 13750000 BOOLEAN FLIPFLOP; 13750500 - INTEGER PN; 13750600 - LABEL L1,L2,L3; 13751000 - PN~1 ; 13751100 - FLIPFLOP~INLINETOG~TRUE;P~0;MKST~FALSE;LS~L;EMITO(NOP); 13752000 - IF STEPI!LEFTPAREN THEN FLAG(59); 13753000 - IF TABLE(I+1)=COLON THEN BEGIN STEPIT;GO TO L2 END ; 13753100 - L1: IF STEPI>IDMAX THEN BEGIN FLAG(465); GO TO L2 END ; 13754000 - ACCUM[0]~0&P[16:37:11]&LOCLID[2:41:7]&SCRAM[35:35:13]; 13755000 - E;IF FLIPFLOP THEN BEGIN FLIPFLOP~FALSE;LN~SN~LASTINFO END; 13755500 - IF STEPI=COMMA OR ELCLASS=COLON OR ELCLASS=RTPAREN 13756000 - THEN BEGIN I~I-2;STEPIT END 13757000 - ELSE IF ELCLASS!ASSIGNOP THEN FLAG(60) ELSE STEPIT; 13758000 - AEXP; 13759000 - L2: IF ELCLASS=COLON THEN 13760000 - BEGIN IF MKST THEN FLAG(99); MKST~TRUE; EMITO(MKS); P~P+2; 13761000 - IF TABLE(I+1)!RTPAREN THEN GO TO L1; STEPIT 13761100 - ;PN~2; 13761110 - END ELSE P~P+1; 13761200 - IF ELCLASS=COMMA THEN GO TO L1; 13762000 - IF ELCLASS!RTPAREN THEN FLAG(61); 13763000 - IF NOT MKST THEN 13764000 - BEGIN J~L;L~LS;EMITO(MKS);L~J END; 13765000 - IF STEPI ! SEMICOLON THEN FLAG(2); 13766000 - EMITO(584); 13766100 + INTEGER PN; 13750600 + LABEL L1,L2,L3; 13751000 + PN~1 ; 13751100 + FLIPFLOP~INLINETOG~TRUE;P~0;MKST~FALSE;LS~L;EMITO(NOP); 13752000 + IF STEPI!LEFTPAREN THEN FLAG(59); 13753000 + IF TABLE(I+1)=COLON THEN BEGIN STEPIT;GO TO L2 END ; 13753100 +L1: IF STEPI>IDMAX THEN BEGIN FLAG(465); GO TO L2 END ; 13754000 + ACCUM[0]~0&P[16:37:11]&LOCLID[2:41:7]&SCRAM[35:35:13]; 13755000 + E;IF FLIPFLOP THEN BEGIN FLIPFLOP~FALSE;LN~SN~LASTINFO END; 13755500 + IF STEPI=COMMA OR ELCLASS=COLON OR ELCLASS=RTPAREN 13756000 + THEN BEGIN I~I-2;STEPIT END 13757000 + ELSE IF ELCLASS!ASSIGNOP THEN FLAG(60) ELSE STEPIT; 13758000 + AEXP; 13759000 + L2: IF ELCLASS=COLON THEN 13760000 + BEGIN IF MKST THEN FLAG(99); MKST~TRUE; EMITO(MKS); P~P+2; 13761000 + IF TABLE(I+1)!RTPAREN THEN GO TO L1; STEPIT 13761100 + ;PN~2; 13761110 + END ELSE P~P+1; 13761200 + IF ELCLASS=COMMA THEN GO TO L1; 13762000 + IF ELCLASS!RTPAREN THEN FLAG(61); 13763000 + IF NOT MKST THEN 13764000 + BEGIN J~L;L~LS;EMITO(MKS);L~J END; 13765000 + IF STEPI ! SEMICOLON THEN FLAG(62); 13766000 + EMITO(584); 13766100 13766200 13766300 13766400 13766500 - L3:ELBAT[I]~TAKE(SN);SCATTERELBAT;ADDRSF~P~-ADDRSF; 13767000 + L3:ELBAT[I]~TAKE(SN);SCATTERELBAT;ADDRSF~P-ADDRSF; 13767000 PUT(ELBAT[I]&ADDRSF[16:37:11]&STACKHEAD[LINKF][33:33:15],SN); 13768000 - STACKHEAD[LINKF]~SN; SN~SN~INCRF; 13769000 + STACKHEAD[LINKF]~SN; SN~SN+INCRF; 13769000 IF ADDRSF!PN THEN GO TO L3 ; 13770000 INLINETOG~ FALSE; 13770500 PN~NEXTINFO; 13770600 @@ -5530,7 +5534,7 @@ COMMENT SOP IS TRUE IF THE BLOCK WAS CALLED BY ITSELF THROUGH THE 14004000 ALL DECLARATIONS,DOING NECESSARY BOOKKEEPING REGARDING EACH 14008000 BLOCK, AND SUPPLYING THE SCANNER WITH ALL NECESSARY INFORMATION 14009000 ABOUT DECLARED IDENTIFIERS. 14010000 - IT ALSO WRITES EACH SEGMENT INTO THE PCT; 14011000 + IT ALSO WRITES EACH SEGMENT ONTO THE PCT; 14011000 BEGIN 14012000 LABEL OWNERR,SAVERR,BOOLEANDEC,REALDEC,ALPHADEC,INTEGERDEC, 14013000 LABELDEC,DUMPDEC,SUBDEC,OUTDEC,INDEC,MONITORDEC, 14014000 @@ -5547,13 +5551,13 @@ DEFINE NLOCS=10#,LOCBEGIN=PRTI#, 14022000 14024000 BOOLEAN GOTSTORAGE; 14025000 INTEGER PINFOO,BLKAD; 14026000 - COMMENT LOCALTO BLOCK TO SAVE WHERE A PROCEDURE IS ENTERED 14027000 + COMMENT LOCAL TO BLOCK TO SAVE WHERE A PROCEDURE IS EMTERED 14027000 IN INFO; 14028000 REAL MAXSTACKO,LASTINFOT,RELAD,LO,TSUBLEVEL,STACKCTRO; 14029000 INTEGER SGNOO,LOLD,SAVELO,PRTIO,NINFOO; 14030000 INTEGER NCIIO; 14031000 INTEGER PROAD ; 14032000 - INTEGER FIRSTXD; 14033000 + INTEGER FIRSTXO; 14033000 BOOLEAN FUNCTOGO,AJUMPO; 14034000 BEGINCTR~BEGINCTR+1; 14035000 IF SOP 14036000 @@ -5563,7 +5567,7 @@ BOOLEAN FUNCTOGO,AJUMPO; 14034000 CONSTANTCLEAN; 14040000 EMITB(BFW,GT1,L) 14041000 END 14042000 - END 14043000 + END 14043000 ELSE BEGIN BLKAD:=GETSPACE(TRUE,-6); % SEG. DESCR. 14044000 14045000 14046000 @@ -5571,11 +5575,11 @@ BOOLEAN FUNCTOGO,AJUMPO; 14034000 END; 14048000 14049000 14050000 - FIRSTXD~FIRSTX; 14051000 + FIRSTXO~FIRSTX; 14051000 FIRSTX~0; 14052000 LEVEL~LEVEL+1; 14053000 LOLD~L;FUNCTOGO~FUNCTOG;AJUMPO~AJUMP;PRTIO~PRTI;SGNOO~SGNO; 14054000 - SAVELO~LEVEL;AJUMP~FALSE; L~0;NINFOO~NEXTINFO; 14055000 + SAVELO~SAVEL;AJUMP~FALSE; L~0;NINFOO~NEXTINFO; 14055000 NCIIO~NCII; 14056000 NCII~0; 14057000 STACKCTRO~STACKCTR; 14058000 @@ -5586,7 +5590,7 @@ START: IF TABLE(I)!SEMICOLON 14063000 THEN 14064000 BEGIN 14065000 FLAG(0); 14066000 - I~-1 14067000 + I~I-1 14067000 END; 14068000 GTA1[0]~J~0; 14069000 IF SPECTOG 14070000 @@ -5610,25 +5614,25 @@ START: IF TABLE(I)!SEMICOLON 14063000 IF BUP ! BUP:=BUP- TAKE(BUP + 1).PURPT THEN 14088000 GO TO GETLP 14089000 END; 14090000 - TYPEV~G,CLASS; 14091000 + TYPEV~G.CLASS; 14091000 G.ADDRESS~F~F+1; 14115000 PUT(G,BUP); G.INCR~GT1; 14116000 PUT(G,MARK+PJ) 14117000 ;BUP~BUP-TAKE(BUP+1).PURPT 14118000 - END 14119000 - UNTIL PJ~PJ-1=0 14120000 - END; 14121000 - SPECTOG~FALSE; 14122000 - GO TO HF 14123000 - END 14124000 - END; 14125000 - STACKCT ~ 0; 14125500 - WHILE STEPI=DECLARATORS 14126000 - DO 14127000 - BEGIN 14128000 - GTA1[J~J+1]~ELBAT[I].ADDRESS; 14129000 - STOPDEFINE~ERRORTOG~TRUE; 14130000 - END; 14131000 + END 14119000 + UNTIL PJ~PJ-1=0 14120000 + END; 14121000 + SPECTOG~FALSE; 14122000 + GO TO HF 14123000 + END 14124000 + END; 14125000 + STACKCT ~ 0; 14125500 + WHILE STEPI=DECLARATORS 14126000 + DO 14127000 + BEGIN 14128000 + GTA1[J~J+1]~ELBAT[I].ADDRESS; 14129000 + STOPDEFINE~ERRORTOG~TRUE; 14130000 + END; 14131000 IF J =0 THEN GO TO CALLSTATEMENT; 14132000 P2~P3~FALSE; 14133000 GO TO DECLSW[GTA1[J]]; 14134000 @@ -5656,7 +5660,7 @@ INTEGERDEC:P3~TRUE;ENTER(INTID);GO TO START; 14141000 DUMPDEC:IF SPECTOG 14149000 THEN BEGIN COMMENT ERROR 464 MEANS A DUMP DECLARATION 14150000 APPEARS IN THE SPECIFICATION PART OF A 14151000 - PROCEDURE 14152000 + PROCEDURE; 14152000 FLAG(464); 14153000 END; 14154000 DO UNTIL FALSE; 14155000 @@ -5675,7 +5679,7 @@ NAMEDEC: IF T1~GTA1[J~J-1]!ARRAYV THEN J~J+1; 14161000 END 14161090 ELSE 14161100 14161110 - TYPEV~NAMEID+T1-REALV; 14161120 + TYPEV~NAMEID+T1-REALV; 14161120 ENTER(TYPEV); GO TO START; 14162000 SUBDEC: 14163000 BEGIN REAL TYPEV,T; 14163500 @@ -5714,7 +5718,7 @@ LABELDEC:IF SPECTOG AND FUNCTOG THEN FLAG(24); 14187000 STOPDEFINE~TRUE; 14192000 STEPIT; 14193000 ENTRY(LABELID); 14194000 - PUTNBUMP(0); 14195000 + PUTNBUMP(0) 14195000 END 14196000 UNTIL ELCLASS!COMMA; 14197000 STOPENTRY~STOPGSP~FALSE; 14198000 @@ -5737,7 +5741,7 @@ SWITCHDEC: 14200000 UNTIL STEPI!COMMA; 14223000 14223500 PUT(GT1,GT2); 14224000 - STOPENTRY ~ STOPGSP + FALSE; 14251000 + STOPENTRY ~ STOPGSP ~ FALSE; 14251000 END SWITCHDEC; 14252000 GO TO START; 14253000 DEFINEDEC: 14254000 @@ -5754,14 +5758,14 @@ GO TO START; 14253000 DO 14256000 BEGIN 14257000 STOPDEFINE~TRUE; 14258000 - STEPIT; MOVE(0,ACCUM[1],GTA1); 14259000 + STEPIT; MOVE(9,ACCUM[1],GTA1); 14259000 K~COUNT+1; J~GTA1[0]; ENTRY(DEFINEDID); 14259010 GTA1[0]~J+"100000"; J~0; 14259015 IF ELCLASS=LEFTPAREN OR ELCLASS=LFTBRKET THEN 14259020 BEGIN 14259030 DO BEGIN STOPDEFINE~TRUE; 14259060 STEPIT; 14259070 - IF (J~J+1)>0 OR PARM(ACCUM[1],GTA1,K,J) OR 14259080 + IF (J~J+1)>9 OR PARM(ACCUM[1],GTA1,K,J) OR 14259080 K>62 THEN BEGIN ERR(141); GO TO START END; 14259090 STOPDEFINE~TRUE; 14259100 END UNTIL STEPI!COMMA; 14259110 @@ -5801,7 +5805,7 @@ PROCEDUREDEC: 14270000 THEN FLAG(004); 14286000 IF NOT SPECTOG THEN 14287000 FUNCTOG~TRUE; 14288000 - CHKSDB; 14289000 + CHKSOB 14289000 END END 14290000 ELSE 14291000 IF G=SAVEV OR G=0 THEN TYPEV~PROCID 14292000 @@ -5818,7 +5822,7 @@ PROCEDUREDEC: 14270000 MODE~MODE+1; 14303000 LO~PROINFO; 14304000 SCATTERELBAT; 14305000 -COMMENT CHECK TO SEE IF DECLARED FORWARD PREVIOUSLY ; 14306000 +COMMENT CHECK TO SEE IF DECLARED FORWARD PREVIOUSLY ;14306000 IF LEVELF=LEVEL 14307000 THEN 14308000 BEGIN 14309000 @@ -5832,10 +5836,10 @@ COMMENT CHECK TO SEE IF DECLARED FORWARD PREVIOUSLY ; 14306000 ELSE 14317000 BEGIN STOPENTRY~TRUE; P2~TRUE; 14318000 STOPGSP~LEVEL>1 AND STREAMTOG; 14318500 - ENTRY(TYPEV); MARK~NETINFO;PUTNBUMP(0); 14319000 + ENTRY(TYPEV); MARK~NEXTINFO;PUTNBUMP(0); 14319000 STOPGSP~FALSE; 14319500 PROINFO~TAKE(LASTINFO)& LASTINFO[35:35:13];PROAD~ADDRSF; 14320000 - P2~STOPENTRY~FALSE; 14321000 + P2~STOPENTRY~FALSE 14321000 END; 14322000 PJ~0; LEVEL~LEVEL+1; 14323000 IF STREAMTOG THEN STREAMWORDS; 14324000 @@ -5851,7 +5855,7 @@ COMMENT: THE FOLLOWING 8 STATEMENTS FOOL THE SCANNER AND BLOCK,PUTTING 14327000 IF FWDTOG THEN 14333100 BEGIN 14333200 IF GT1:=TAKE(MARK).[40:8] ! PJ THEN FLAG(48); % WRONG 14333300 - % NUMBER OF PARAMETERES. WE DON"T WANT TO CLOBBER INFO. 14333400 + % NUMBER OF PARAMETERS. WE DON"T WANT TO CLOBBER INFO. 14333400 END 14333500 ELSE 14333600 PUT(PJ,MARK); 14334000 @@ -5873,18 +5877,18 @@ COMMENT MARK PARAMETERS VALUE IF THERE IS A VALUE PART; 14340000 THEN 14350000 FLAG(010); 14351000 G~TAKE(ELBAT[I]); 14352000 - PUT(G&1[10:47:1],ELBAT[1]) 14353000 + PUT(G&1[10:47:1],ELBAT[I]) 14353000 END 14354000 UNTIL 14355000 STEPI!COMMA; 14356000 - IF ELCLASS!SEMICOLON THEN 14357000 + IF ELCLASS!SEMICOLON 14357000 THEN FLAG(011) 14358000 - ELSE STEPIT; 14359000 + ELSE STEPIT 14359000 END;I~I-1; 14360000 IF STREAMTOG 14361000 THEN 14362000 BEGIN 14363000 - BUP~PJ; SPECTOG~TRUE;GO TO START; 14364000 + BUP~PJ; SPECTOG~TRUE;GO TO START1 14364000 END 14365000 ELSE 14366000 BEGIN 14367000 @@ -5901,35 +5905,35 @@ START2: END; 14376000 THEN 14378000 GO TO START; 14379000 COMMENT IF SPECTOG IS ON THEN THE BLOCK WILL PROCESS THE SPECIFICATION 14380000 - PART SIMILARY TO DECLARATIONS WITH A FEW NECESSARY VARAITIONS; 14381000 + PART SIMILARY TO DECLARATIONS WITH A FEW NECESSARY VARIATIONS; 14381000 HF: 14382000 - BEGIN 14383000 - LABEL START STOP; 14384000 - DEFINE TESTLEV = LEVEL>2 #; 14384100 - IF STREAMTOG 14385000 - THEN BEGIN 14386000 - IF TESTLEV THEN JUMPCHKNX ELSE SEGMENTSTART(TRUE);PJ~P; 14387000 - PTOG~FALSE; 14388000 - PUT(TAKE(GIT(PROINFO))&L[28:36:12],GIT(PROINFO)); 14388100 - IF TESTLEV THEN BEGIN EMITO(584); END; 14389000 - IF STEPI=BEGINV 14393000 - THEN 14394000 - BEGIN 14395000 - WHILE STEPI=DECLARATORS OR ELCLASS=LOCALV 14396000 - DO 14397000 - BEGIN 14398000 - IF ELBAT[I].ADDRESS=LABELV 14399000 - THEN 14400000 - BEGIN 14401000 - STOPDEFINE~STOPGSP~STOPENTRY~TRUE; 14402000 - DO BEGIN STOPDEFINE~TRUE;STEPIT;ENTRY(STLABID);PUTNBUMP(0) END UNTIL 14403000 - ELCLASS!COMMA;STOPGSP~STOPENTRY~FALSE 14404000 + BEGIN 14383000 + LABEL START,STOP; 14384000 + DEFINE TESTLEV = LEVEL>2 #; 14384100 + IF STREAMTOG 14385000 + THEN BEGIN 14386000 + IF TESTLEV THEN JUMPCHKNX ELSE SEGMENTSTART(TRUE);PJ~P; 14387000 + PTOG~FALSE; 14388000 + PUT(TAKE(GIT(PROINFO))&L[28:36:12],GIT(PROINFO)); 14388100 + IF TESTLEV THEN BEGIN EMITO(584); END; 14389000 + IF STEPI=BEGINV 14393000 + THEN 14394000 + BEGIN 14395000 + WHILE STEPI=DECLARATORS OR ELCLASS=LOCALV 14396000 + DO 14397000 + BEGIN 14398000 + IF ELBAT[I].ADDRESS=LABELV 14399000 + THEN 14400000 + BEGIN 14401000 + STOPDEFINE~STOPGSP~STOPENTRY~TRUE; 14402000 + DO BEGIN STOPDEFINE~TRUE;STEPIT;ENTRY(STLABID);PUTNBUMP(0) END UNTIL14403000 + ELCLASS!COMMA;STOPGSP~STOPENTRY~FALSE 14404000 END 14405000 - ELSE 14406000 - BEGIN 14407000 - I~I+1; 14408000 - ENTRY(LOCLID) 14409000 - END 14410000 + ELSE 14406000 + BEGIN 14407000 + I~I+1; 14408000 + ENTRY(LOCLID) 14409000 + END 14410000 END; 14411000 IF FUNCTOG THEN 14411100 PUT((Z~TAKE(PROINFO))&LOCLID[2:41:7] & 14411200 @@ -5943,7 +5947,7 @@ HF: 14382000 (PJ+2+REAL(TESTLEV))[16:37:11],PROINFO); 14415300 STREAMSTMT; 14415400 END; 14415500 - COMMENT THE FOLLOWING BLOCK CNSTITUTES THE STREAM PROCEDURE PURGE; 14416000 + COMMENT THE FOLLOWING BLOCK CONSTITUTES THE STREAM PROCEDURE PURGE; 14416000 BEGIN 14417000 REAL NLOC,NLAB; 14418000 DEFINE SES=18#,SED=6#,TRW=5#; 14419000 @@ -5965,7 +5969,7 @@ HF: 14382000 ELSE 14435000 BEGIN 14436000 IF GT1.ADDRESS!0 THEN NLAB~NLAB+1; 14437000 - IF(GT3~TAKE(GIT(J))).LASTGT!0 AND GT3.LOC = 0 THEN 14438000 + IF(GT3~TAKE(GIT(J))).LASTGT!0 AND GT3.LOC =0 THEN 14438000 BEGIN 14439000 MOVE(9,INFO[0,J],ACCUM[0]); 14440000 Q~ACCUM[1]; 14441000 @@ -5974,7 +5978,7 @@ HF: 14382000 END; 14444000 END; 14445000 G~(GT2+TAKE(J+1)).PURPT; 14446000 - IF GT1.[2:18] ! STLABID|2+1 THEN 14447000 + IF GT1.[2:8] ! STLABID|2+1 THEN 14447000 STACKHEAD[(0>2[12:12:36])MOD 125]~TAKE(J).LINK; 14448000 END UNTIL J~J-G{1; 14449000 14450000 @@ -5991,7 +5995,7 @@ PUT(TAKE(MARK)&NLOC[1:42:6]&L[16:36:12]&P[40:40:8],MARK); 14451200 END; 14461400 IF LISTER AND FORMATOG THEN SPACEITDOWN; 14461500 END; 14462000 - LASTINFO~LASTINFOT;NETINFO~MARK+P+1; 14463000 + LASTINFO~LASTINFOT;NEXTINFO~MARK+P+1; 14463000 END 14464000 ELSE 14465000 BEGIN 14466000 @@ -6004,8 +6008,8 @@ PUT(TAKE(MARK)&NLOC[1:42:6]&L[16:36:12]&P[40:40:8],MARK); 14451200 END 14473000 ELSE 14474000 BEGIN 14475000 - PROADD~PROAD; 14476000 - TSUBLEVEL~SUBLEVEL;SUBLEVEL~LEVEL ;STACKCTRO~STACKCTR; 14477000 + PROADO~PROAD; 14476000 + TSUBLEVEL~SUBLEVEL;SUBLEVEL~LEVEL ;STACKCTRO~STACKCTR; 14477000 IF MODE=1 THEN FRSTLEVEL~LEVEL;STACKCTR~513+REAL(FUNCTOG); 14478000 IF ELCLASS = BEGINV THEN 14479000 BEGIN 14481000 @@ -6013,10 +6017,10 @@ PUT(TAKE(MARK)&NLOC[1:42:6]&L[16:36:12]&P[40:40:8],MARK); 14451200 NEXTCTR~STACKCTR; 14481200 BLOCK(TRUE); 14482000 ; PURGE(PINFOO); 14483000 - IF NEXTOG THEN 14483100 + IF NESTOG THEN 14483100 BEGIN GT1~TAKE(PROINFO).ADDRESS; 14483200 NESTPRT[GT1]~0&PROINFO[35:35:13]&CALLINFO[22:35:13]; 14483300 - CALL(CALLINFO-1]~(TAKE(GIT(PROINFO))+NESTCTR-511)& 14483400 + CALL[CALLINFO-1]~(TAKE(GIT(PROINFO))+NESTCTR-511)& 14483400 CALLX[22:35:13]; 14483500 END; 14483600 L~0; 14483700 @@ -6025,7 +6029,7 @@ PUT(TAKE(MARK)&NLOC[1:42:6]&L[16:36:12]&P[40:40:8],MARK); 14451200 FLAG(052); 14486000 RELAD~L ; 14487000 STMT; 14488000 - HTTEDAP(FALSE,RELAD,PINFOO,PROAD); 14489000 + HTTEOAP(FALSE,RELAD,PINFOO,PROAD); 14489000 END; 14490000 STOP: 14491000 SUBLEVEL~TSUBLEVEL; 14492000 @@ -6059,27 +6063,27 @@ START:END; 14503000 BEGIN 14518000 ELBAT[I].CLASS~SEMICOLON; 14519000 BEGINCTR~BEGINCTR+1; 14520000 - GO TO START; 14521000 - END; 14522000 + GO TO START 14521000 + END 14522000 ELSE 14523000 COMPOUNDTAIL 14524000 END; 14525000 FUNCTOG~FUNCTOGO; 14599000 - IF SOP THEN HTTEDAP(FALSE,FIRSTX,NINFOO,BLKAD) 14600000 - ELSE BEGIN IF NEXTOG THEN SORTNEST; PURGE(NINFOO); END; 14601000 + IF SOP THEN HTTEOAP(FALSE,FIRSTX,NINFOO,BLKAD) 14600000 + ELSE BEGIN IF NESTOG THEN SORTNEST; PURGE(NINFOO); END; 14601000 SEGMENT((L+3)DIV 4,PROADD); 14602000 IF LEVEL>1 THEN RIGHT(L); 14603000 IF LEVEL ~ LEVEL-1 = 0 THEN CONSTANTCLEAN; 14604000 14605000 AJUMP~AJUMPO; 14606000 14607000 - FIRSTX~FIRSTXD; 14608000 + FIRSTX~FIRSTXO; 14608000 SAVEL~SAVELO; 14609000 STACKCTR~STACKCTRO; 14610000 14611000 14612000 END BLOCK; 14613000 -COMMENT THIS SECTION CONTAINS THE VARIABLE ROUTINE AND ITS SIDEKICKS; 15000000 + COMMENT THIS SECTION CONTAINS THE VARIABLE ROUTINE AND ITS SIDEKICKS; 15000000 15001000 15002000 15003000 @@ -6116,67 +6120,67 @@ COMMENT THIS SECTION CONTAINS THE VARIABLE ROUTINE AND ITS SIDEKICKS; 15000000 15036000 15037000 15038000 -COMMENT THE FOLLOWING BLOCK HANDLES THE FOLLOWING CASES 15039000 - OF SIMPLE VARIABLES: 15040000 - 1. V ~ EXP ,WHERE V IS FORMAL-CAL BY NAME. 15041000 - 2. V ~ EXP ,ALL V EXCEPT FORMAL NAME. 15042000 - 3. V.[S:L] ~ EXP ,WHERE V IS FORMAL-CALL BY NAME. 15043000 - 4. V.[S:L] ~ EXP ,ALL V EXCEPT FORMAL-NAME. 15044000 - 5. V.[S:L] ,ALL V. 15045000 - 6, V ,ALL V. 15046000 - CODE EMITED FOR THE ABOVE CASES IS AS FOLLOWS: 15047000 - 1. VN,EXP,M*,XCH,~. 15048000 - 2. EXP,M*,VL,~. 15049000 - 3. VN,DIP,CDC,EXP,T,M*,XCH,~. 15050000 - 4. VV,EXP,T,M*,VL,~ 15051000 - 5. ZEROL,VV,T . 15052000 - 6. VV . 15053000 - WHERE VN = DESC V 15054000 - EXP= ARITH, OR BOOLEAN EXPRESSION,AS REQUIRED. 15055000 - M* = CALL ON MONITOR ROUTINE,IF REQUIRED. 15056000 - VL = LITC V 15057000 - VV = OPDC V 15058000 - ~ = STORE INSTRUCTION(ISD,ISN,SND OR STD). 15059000 - T = BIT TRANSFER CODE(DIA,DIB,TRB). 15060000 - ZEROL = LITC 0 15061000 - DUP,CDC,CH = THE INSTRUCTIONS DUP,CDC,AND XCH. 15062000 - OF COURSE, EXP WILL CAUSE RECURSION,IN GENERAL,AND THUS 15063000 - THE PARAMETER P1 AND THE LOCALS CAN NOT BE HANDLED IN A 15064000 - GLOBAL FASHION. 15065000 - THE PARAMETER P1 IS USED TO TELL THE VARIABLE ROUTINE 15066000 - WHO CALLED IT. SOME OF THE CODE GENERATION AND SOME 15067000 - SYNTAX CHECKS DEPEND UPON A PARTICLAR VALUE OF P1 . 15068000 - ; 15069000 -PROCEDURE VARIABLE(P1); INTEGER P1; 15070000 - BEGIN 15071000 - REAL TALL, COMMENT ELBAT WORD FOR VARIABLE; 15072000 - T1 , COMMENT 1ST INTEGER OF PARTIAL WORD SYNTAX; 15073000 - T2 , COMMENT 2ND INTEGER OF PARTIAL WORD SYNTX; 15074000 - J ; COMMENT SUBSCRIPT COUNTER; 15075000 - LABEL EXIT,L1,LAST,NEXT,JAZZ,ITUP,CLASS; 15076000 - DEFINE FORMALNAME=[9:2]=2#, LONGID=NAMEID#; 15076100 - BOOLEAN SPCLMON; 15076200 - TALL~ELBAT[I] ; 15077000 - IF ELCLASS { INTPROCID THEN 15078000 - BEGIN 15079000 - IF TALL.LINK !PROINFO.LINK THEN 15080000 - BEGIN ERR(211); GO TO EXIT END; 15081000 + COMMENT THE FOLLOWING BLOCK HANDLES THE FOLLOWING CASES 15039000 + OF SIMPLE VARIABLES: 15040000 + 1. V ~ EXP ,WHERE V IS FORMAL-CALL BY NAME. 15041000 + 2. V ~ EXP ,ALL V EXCEPT FORMAL-NAME. 15042000 + 3. V.[S:L] ~ EXP ,WHERE V IS FORMAL-CALL BY NAME. 15043000 + 4. V.[S:L] ~ EXP ,ALL V EXCEPT FORMAL-NAME. 15044000 + 5. V.[S:L] ,ALL V. 15045000 + 6. V ,ALL V. 15046000 + CODE EMITED FOR THE ABOVE CASES IS AS FOLLOWS: 15047000 + 1. VN,EXP,M*,XCH,~. 15048000 + 2. EXP,M*,VL,~. 15049000 + 3. VN,DUP,COC,EXP,T,M*,XCH,~. 15050000 + 4. VV,EXP,T,M*,VL,~. 15051000 + 5. ZEROL,VV,T . 15052000 + 6. VV . 15053000 + WHERE VN = DESC V 15054000 + EXP= ARITH, OR BOOLEAN EXPRESSION,AS REQUIRED. 15055000 + M* = CALL ON MONITOR ROUTINE,IF REQUIRED. 15056000 + VL = LITC V 15057000 + VV = OPDC V 15058000 + ~ = STORE INSTRUCTION(ISD,ISN,SND OR STD). 15059000 + T = BIT TRANSFER CODE(DIA,DIB,TRB). 15060000 + ZEROL = LITC 0 15061000 + DUP,COC,XCH = THE INSTRUCTIONS DUP,COC,AND XCH. 15062000 + OF COURSE, EXP WILL CAUSE RECURSION,IN GENERAL,AND THUS 15063000 + THE PARAMETER P1 AND THE LOCALS CAN NOT BE HANDLED IN A 15064000 + GLOBAL FASHION. 15065000 + THE PARAMETER P1 IS USED TO TELL THE VARIABLE ROUTINE 15066000 + WHO CALLED IT. SOME OF THE CODE GENERATION AND SOME 15067000 + SYNTAX CHECKS DEPEND UPON A PARTICULAR VALUE OF P1 . 15068000 + ; 15069000 + PROCEDURE VARIABLE(P1); INTEGER P1; 15070000 + BEGIN 15071000 + REAL TALL, COMMENT ELBAT WORD FOR VARIABLE; 15072000 + T1 , COMMENT 1ST INTEGER OF PARTIAL WORD SYNTAX; 15073000 + T2 , COMMENT 2ND INTEGER OF PARTIAL WORD SYNTAX; 15074000 + J ; COMMENT SUBSCRIPT COUNTER ; 15075000 + LABEL EXIT,L1,LAST,NEXT,JAZZ,ITUP,LASS; 15076000 + DEFINE FORMALNAME=[9:2]=2#, LONGID=NAMEID#; 15076100 + BOOLEAN SPCLMON; 15076200 + TALL~ELBAT[I] ; 15077000 + IF ELCLASS { INTPROCID THEN 15078000 + BEGIN 15079000 + IF TALL.LINK !PROINFO.LINK THEN 15080000 + BEGIN ERR(211); GO TO EXIT END; 15081000 COMMENT 211 VARIABLE-FUNCTION IDENTIFIER USED OUTSIDE OF ITS SCOPE*; 15082000 TALL~TALL &(ELCLASS+4)[2:41:7] & 513[16:37:11]; 15083000 - END; 15084000 + END 15084000 ELSE CHECKER(TALL); 15085000 - IF TALL.CLASS {INTID THEN 15086000 + IF TALL.CLASS { INTID THEN 15086000 BEGIN 15087000 15088000 15089000 IF STEPI= ASSIGNOP THEN 15090000 BEGIN STACKCT ~ 1; 15091000 - IF TALL.FORMALNAME THEN 15092000 + L1: IF TALL.FORMALNAME THEN 15092000 BEGIN 15093000 EMITN(TALL.ADDRESS); 15094000 - IF T1!0 THEN BEGIN EMITO(DUP);EMITO(CDC) END; 15095000 - END; 15096000 - ELSE IF T1!0 THEN EMITV(TALL,ADDRESS) 15097000 + IF T1!0 THEN BEGIN EMITO(DUP);EMITO(COC) END; 15095000 + END 15096000 + ELSE IF T1!0 THEN EMITV(TALL.ADDRESS) 15097000 ; STACKCT ~ REAL(T1!0); STEPIT; 15098000 AEXP; 15099000 EMITD(48-T2 ,T1 ,T2); 15100000 @@ -6195,15 +6199,15 @@ COMMENT 211 VARIABLE-FUNCTION IDENTIFIER USED OUTSIDE OF ITS SCOPE*; 15082000 ELSE 15109000 BEGIN 15110000 IF P1=FL THEN BEGIN 15110100 - IF ELCLASS < AMPERSAND THEN EMITN(TALL,ADDRESS) 15110200 - ELSE EMITV(TALL,ADDRESS); 15110300 + IF ELCLASS < AMPERSAND THEN EMITN(TALL.ADDRESS) 15110200 + ELSE EMITV(TALL.ADDRESS); 15110300 GO TO EXIT END; 15110400 IF ELCLASS= PERIOD THEN 15111000 - BEGIN IF DOTSYNTAX(T1,T2) THEN GO TO EXIT; 15112000 + BEGIN IF DOTSYNTAX(T1,T2) THEN GO TO EXIT ; 15112000 IF STEPI=ASSIGNOP THEN 15113000 - IF P1~- FS THEN 15114000 - BEGIN ERR(201);GO TO EXIT END 15115000 - ELSE GO TO L1 15116000 + IF P1! FS THEN 15114000 + BEGIN ERR(201);GO TO EXIT END 15115000 + ELSE GO TO L1 15116000 15117000 END ; 15118000 IF P1! FP THEN BEGIN ERR(202); GO TO EXIT END; 15119000 @@ -6219,38 +6223,38 @@ COMMENT 201 VARIABLE- A PARTIAL WORD DESIGNATOR IS NOT THE * 15122000 IF TALL.CLASS!LABELID THEN 15128100 COMMENT THE FOLLOWING BLOCK HANDLES THESE CASES OF SUBSCRIPTED 15129000 VARIABLES: 15130000 - 1. V[*] ,ROW DESIGNATOR FOR SINGLE DIMENSION. 15131000 + 1. V[*] ,ROW DESIGNATOR FOR SINGLE-DIMENSION. 15131000 2. V[R,*] ,ROW DESIGNATOR FOR MULTI-DIMENSION. 15132000 3. V[R] ,ARRAY ELEMENT,NAME OR VALUE. 15133000 4. V[R].[S:L] ,PARTIAL WORD DESIGNATOR, VALUE. 15134000 5. V[R] ~ ,ASSIGNMENT TO ARRAY ELEMENT. 15135000 6. V[R].[S:L] ~ ,ASSIGNMENT TO PARTIAL WORD,LEFT-MOST. 15136000 - R IS A K-ORDER SUBSCRIPT LIST,I.E R=R1,R2,...,RK. 15137000 + R IS A K-ORDER SUBSCRIPT LIST,I.E. R= R1,R2,...,RK. 15137000 IN THE CASE OF NO MONITORING ON V, THE FOLLOWING CODE 15138000 IS EMITTED FOR THE ABOVE CASES: 15139000 1. CASE #1 IS A SPECIAL CASE OF #2,NAMELY,SINGLE 15140000 DIMENSION. THE CODE EMITTED IS: 15141000 VL,LOD . 15142000 - EXECUTION: PLACES ARRAY DESCRIPTOR IN REG A. 15143000 + EXECUTION: PLACES ARRAY DESCRIPTER IN REG A. 15143000 2. THIS CODE IS BASIC TO THE SUBSCRIPTION PROCESS.15144000 EACH SUBSCRIPT GENERATES THE FOLLOWING SEQUENCE15145000 OF CODE: 15146000 AEXP,L*,IF FIRST SUBSCRIPT THEN VN ELSE CDC 15147000 ,LOD. 15148000 FOR A K-ORDER SUBSCRIPTION,K-1 SEQUENCE ARE 15149000 - PRODUCED. THE AEXP IN EACH SEQUENCE REFERES TO 15150000 + PRODUCED. THE AEXP IN EACH SEQUENCE REFERS TO 15150000 THE CODE PRODUCED BY THE ARITHMETIC EXPRESSION 15151000 PROCEDURE FOR THE ACTUAL SUBSCRIPT EXPRESSIONS,15152000 - L* REFERS TO THE CODE PRODUCED FOR SUBTRACTING 15153000 - NON-ZERO LOWER BOUNDS FORM SUBSCRIPT 15154000 + [* REFERS TO THE CODE PRODUCED FOR SUBTRACTING 15153000 + NON-ZERO LOWER BOUNDS FROM THE SUBSCRIPT 15154000 EXPRESSION(L* YIELDS NO CODE FOR ZERO BOUNDS). 15155000 EXECUTION: PLACES ARRAY ROW DESCRIPTOR IN REG A15156000 . THE SPECIFIC ROW DEPENDS UPON THE 15157000 VALUES OF THE K-1 SUBSCRIPTS. 15158000 FOR THE REMAINING CASES, 15159000 - SEQUENCES OF CODE ARE EMITTED AS IN CASE #2. 15160000 + SEQUENCES OF CODE ARE EMITED AS IN CASE #2. 15160000 HOWEVER,THE ACTUAL SEQUENCES ARE: 15161000 - ONCE SEQUENCE,(AEXP,L*),FOR THE 1ST SUBSCRIPT.15162000 + ONE SEQUENCE ,(AEXP,L*),FOR THE 1ST SUBSCRIPT.15162000 K-1 SEQUENCES,(IF FIRST SUBSCRIPT THEN VN 15163000 ELSE CDC,LOD,AEXP,L*), FOR THE REMAINING 15164000 SUBSCRIPTS,IF K>1. 15165000 @@ -6258,19 +6262,19 @@ COMMENT 201 VARIABLE- A PARTIAL WORD DESIGNATOR IS NOT THE * 15122000 AND ADDITION CODE,PARTICULAR TO EACH CASE,IS 15167000 EMITTED. 15168000 3. ADD THE SEQUENCE: 15169000 - IF FIRST SUBSCRIPT THEN VV ELSE CDC. 15170000 + IF FIRST SUBSCRIPT THEN VV ELSE COC. 15170000 EXECUTION: THE ARRAY ELEMENT IS PUT IN REG A. 15171000 4. ADD THE SEQUENCE: 15172000 - IF FIRST SUBSCRIPT THE VV ELSE CDC,ZEROL, 15173000 - XCH,T 15174000 + IF FIRST SUBSCRIPT THEN VV ELSE COC,ZEROL. 15173000 + XCH,T. 15174000 5. ADD THE SEQUENCE: 15175000 - IF FIRST SUBSCRIPT THEN N ELSE CDC,EXP, 15176000 - XCH,~. 15177000 - 6. ADD SEQUENCE: 15178000 + IF FIRST SUBSCRIPT THEN VN ELSE CDC,EXP, 15176000 + XCH,~. 15177000 + 6. ADD THE SEQUENCE: 15178000 IF FIRST SUBSCRIPT THEN VN ELSE CDC,DUP,LOD, 15179000 EXP,T, XCH,~. 15180000 - EXP,T,~,ZEROL,ETC. HAVE SAME MEANINGS AS DEFNED IN 15181000 - SIMPLE VARIABLE BLOCK. ; 15182000 + EXP,T,~,ZEROL,ETC. HAVE SAME MEANINGS AS DEFINED IN 15181000 + SIMPLE VARIABLE BLOCK. ; 15182000 BEGIN 15183000 15184000 15184100 @@ -6284,17 +6288,17 @@ COMMENT 201 VARIABLE- A PARTIAL WORD DESIGNATOR IS NOT THE * 15122000 IF DOTSYNTAX(T1,T2) THEN GO TO EXIT; 15233005 IF STEPI = ASSIGNOP THEN 15233006 BEGIN 15233007 - IF P1!FS THEN BEGIN ERR(209); GO EXIT END; 15233008 + IF P1!FS THEN BEGIN ERR(209); GO EXIT END; 15233008 IF TALL.CLASS { INTARRAYID THEN 15233009 BEGIN EMITPAIR(TALL.ADDRESS,LOD) END 15233010 ELSE EMITN(TALL.ADDRESS); STACKCT ~ STACKCT+1; 15233011 -JAZZ: STEPIT; AEXP; 15233012 + JAZZ: STEPIT; AEXP; 15233012 EMITD(48-T2,T1,T2); 15233013 EMITPAIR(TALL.ADDRESS, 15233014 IF P1=FS THEN STD ELSE SND); 15233015 STACKCT ~ 0; END 15233016 ELSE BEGIN 15233017 -ITUP: EMITI(TALL,T1,T2); 15233018 + ITUP: EMITI(TALL,T1,T2); 15233018 15233019 15233020 15233021 @@ -6318,21 +6322,21 @@ COMMENT 203 VARIABLE- THE NUMBER OF SUBSCRIPTS USED IN A ROW * 15257000 BEGIN ERR(204);GO EXIT END; 15261000 COMMENT 204 VARIABLE- COMPILER EXPECTS A ] IN A ROW DESIGNATER *;15262000 15263000 -COMMENT 205 VARIABLE- A ROW DESIGNATER APPEARS OUSTIDE OF A FILL * 15264000 +COMMENT 205 VARIABLE- A ROW DESIGNATER APPEARS OUTSIDE OF A FILL * 15264000 STATEMENT OR ACTUAL PARAMETER LIST. *;15265000 IF J=0 THEN 15266000 EMITPAIR(TALL.ADDRESS,LOD); 15267000 STLB~0; 15273000 STEPIT; 15274000 GO TO EXIT; 15275000 - END OF ROW DESIGNATER PORTION ; 15276000 - IF ELCLASS=LITNO AND ELBAT[1].ADDRESS=0 AND TABLE(I+1)=RTBRKET 15276010 + END OF ROW DESIGNATOR PORTION ; 15276000 + IF ELCLASS=LITNO AND ELBAT[I].ADDRESS=0 AND TABLE(I+1)=RTBRKET 15276010 AND TALL.CLASS}NAMEID THEN 15276020 BEGIN 15276030 I~I+1; 15276040 IF STEPI=ASSIGNOP THEN BEGIN 15276050 -LASS: IF T1!0 THEN EMITV(TALL.ADDRESS); 15276060 - STEPIT; AEXP; EMITD(48-72,T1,T2); 15276070 + LASS: IF T1!0 THEN EMITV(TALL.ADDRESS); 15276060 + STEPIT; AEXP; EMITD(48-T2,T1,T2); 15276070 EMITN(TALL.ADDRESS); 15276080 EMITO(IF TALL.CLASS!NAMEID THEN 15276090 IF P1=FS THEN ISD ELSE ISN ELSE 15276100 @@ -6347,25 +6351,25 @@ LASS: IF T1!0 THEN EMITV(TALL.ADDRESS); 15276060 END; 15276180 IF P1=FS THEN BEGIN ERR(210); GO EXIT END; 15276190 15276200 - EMITI(IF P1=FL THEN TALL ELSE TALL&REALID[2:41;7],T1,T2); 15276210 + EMITI(IF P1=FL THEN TALL ELSE TALL&REALID[2:41:7],T1,T2); 15276210 15276220 GO TO EXIT; 15276230 END; 15276240 AEXP; 15277000 STACKCT ~ 1; 15278000 J ~ J + 1; 15280000 - IF ELCLASS = COMMA THEN 15287000 - BEGIN 15288000 -COMMENT ***** MONITOR FUNCTION M4 GOES HERE ; 15289000 - IF J = 1 THEN EMITV(TALL.ADDRESS) ELSE EMITO(CDC); 15290000 + IF ELCLASS = COMMA THEN 15287000 + BEGIN 15288000 +COMMENT ***** MONITOR FUNCTION M4 GOES HERE ; 15289000 + IF J = 1 THEN EMITV(TALL.ADDRESS) ELSE EMITO(COC); 15290000 15291000 GO TO NEXT; 15292000 END OF SUBSCRIPT COMMA HANDLER ; 15293000 IF ELCLASS ! RTBRKET THEN BEGIN ERR(206);GO EXIT END; 15294000 -COMMENT 206 VARIABLE- MISSING RIGHT BRAKCET ON SUBSCRIPTED VARIABLE*; 15295000 +COMMENT 206 VARIABLE- MISSING RIGHT BRACKET ON SUBSCRIPTED VARIABLE*; 15295000 GT1~IF TALL.CLASS}NAMEID THEN 1 ELSE TALL.INCR; 15295100 IF J!GT1 THEN 15296000 - BEGIN ERR(208);GO TO EXIT END; 15297000 + BEGIN ERR(208);GO TO EXIT END; 15297000 COMMENT 208 VARIABLE- NUMBER OF SUBSCRIPTS DOES NOT MATCH WITH * 15298000 ARRAY DECLARATION. *;15299000 IF STEPI = ASSIGNOP THEN 15300000 @@ -6380,7 +6384,7 @@ COMMENT 208 VARIABLE- NUMBER OF SUBSCRIPTS DOES NOT MATCH WITH * 15298000 EMITO(XCH); 15309000 IF TALL.ADDRESS>1023 THEN EMITI(PRTE); 15310000 EMITO(IF TALL.CLASS MOD 2 = INTARRAYID MOD 2 THEN 15333000 - IF P1 = FS THEN ISD ELSE ISN ELSE 15334000 + IF P1 = FS THEN ISD ELSE ISN ELSE 15334000 IF P1=FS THEN STD ELSE SND); 15335000 STACKCT ~ 0; 15335500 P1~0 ; 15336000 @@ -6391,7 +6395,7 @@ COMMENT 208 VARIABLE- NUMBER OF SUBSCRIPTS DOES NOT MATCH WITH * 15298000 IF DOTSYNTAX(T1,T2) THEN GO TO EXIT; 15341000 IF STEPI = ASSIGNOP THEN IF P1=FS THEN GO TO LAST 15342000 ELSE BEGIN ERR(209); GO EXIT END; 15343000 - IF J!1 THEN EMITO(CDC) ELSE IF TALL.CLASS } LONGID THEN 15344000 + IF J!1 THEN EMITO(COC) ELSE IF TALL.CLASS } LONGID THEN 15344000 BEGIN EMITN(TALL.ADDRESS);EMITO(INX);EMITO(LOD) END 15344100 ELSE EMITV(TALL.ADDRESS); 15344200 END 15345000 @@ -6403,19 +6407,19 @@ COMMENT ***** MONITOR FUNCTION M10 GOES HERE ; 15347000 THEN IF TALL.CLASS } LONGID THEN 15351000 BEGIN 15351100 EMITN(TALL.ADDRESS); EMITO(INX); 15351200 - IF SPCLMON THEN EMITO(LOD) L 15351300 - END ELSE IF SPCLMON 15351400 - THEN EMITV(TALL.ADDRESS) 15352000 - ELSE EMITN(TALL.ADDRESS) 15353000 - ELSE EMITO(IF SPCLMON 15354000 + IF SPCLMON THEN EMITO(LOD) ; 15351300 + END ELSE IF SPCLMON 15351400 + THEN EMITV(TALL.ADDRESS) 15352000 + ELSE EMITN(TALL.ADDRESS) 15353000 + ELSE EMITO(IF SPCLMON 15354000 THEN COC 15355000 ELSE CDC); 15356000 - IF P1 =FS THEN ERR(210); 15364000 - GO TO EXIT; 15365000 - END; 15366000 - IF P1=FS THEN BEGIN ERR(210); GO TO EXIT END ; 15367000 -COMMENT 210 VARIABLE-MISSING LEFT ARROW OR PERIOD. *; 15368000 - STACKCT ~0; 15369000 + IF P1 =FS THEN ERR(210); 15364000 + GO TO EXIT; 15365000 + END; 15366000 + IF P1=FS THEN BEGIN ERR(210); GO TO EXIT END ; 15367000 +COMMENT 210 VARIABLE-MISSING LEFT ARROW OR PERIOD. *;15368000 + STACKCT ~ 0; 15369000 IF T1 ! 0 THEN BEGIN EMITI(0,T1,T2); P1 ~ 0 END; 15370000 END OF SUBSCRIPTED VARIABLES 15376000 ELSE 15376100 @@ -6423,13 +6427,13 @@ COMMENT 210 VARIABLE-MISSING LEFT ARROW OR PERIOD. *; 15368000 T1:=TAKE(T2:=GIT(TALL)); 15376300 PUT(L,T2); 15376400 IF T1=0 THEN T1:=L; 15376500 - IF (T1~L-T1) DIV 4 > 127 THEN BEGIN T1~0;FLAG(50) END; 15376600 + IF (T1~L-T1) DIV 4 > 127 THEN BEGIN T1~0;FLAG(50);END; 15376600 EMIT(T1|4+3); 15376700 STEPIT; 15376800 END OF LABELID; 15376900 EXIT : END OF THE VARIABLE ROUTINE; 15377000 COMMENT THIS SECTION GENERATES CODE FOR STREAM PROCEDURES; 16000000 -COMMENT DO LABEL DECS UPON APPEARANCE OF LABEL ; 16000050 +COMMENT DO LABEL DECS UPON APPEARANCE OF LABEL ; 16000050 PROCEDURE DECLARELABEL ; 16000100 BEGIN 16000200 KLASSF ~ STLABID; 16000300 @@ -6438,131 +6442,131 @@ PROCEDURE DECLARELABEL ; 16000100 MAKEUPACCUM; E; PUTNBUMP(0); 16000600 ELBAT[I] ~ ACCUM[0]& LASTINFO[35:35:13]; 16000700 END; 16000800 - PROCEDURE STREAMSTMT; 16001000 + PROCEDURE STREAMSTMT ; 16001000 BEGIN 16002000 DEFINE LFTPAREN=LEFTPAREN#,LOC=[36:12]#,LASTGT=[24:12]#, 16003000 - LOCFLD=36:36:13#,LGTFLD=24:24:12#; 16004000 + LOCFLD=36:36:12#,LGTFLD=24:24:12#; 16004000 DEFINE LEVEL=LVL#,ADDOP=ADOP#; 16005000 DEFINE 16006000 - JFW = 39#, COMMENT 7.5.5.1 JUMP FORWARAD UNCONDITIONAL ;16007000 - RCA = 40#, COMMENT 7.5.7.6 RECALL CONTROL ADDRESS ;16008000 - JRV = 47#, COMMENT 7.5.5.2 JUMP REVERSE UNCONDITIONAL ;16009000 - CRF = 35#, COMMENT 7.5.10.6 CALL REPEAT FIELD ;16010000 - BNS - 42#, COMMENT 7.5.5.5 BEGIN LOOP ;16011000 - NOP = 1#, COMMENT ;16012000 - ENS = 41#, COMMENT 7.5.5.6 END LOOP ;16013000 - TAN = 30#, COMMENT 7.5.3.7 END LOOP ;16014000 - BIT = 31#, COMMENT 7.5.3.8 TEST FOR ALPHAMERIC ;16015000 - JFC = 37#, COMMENT 7.5.5.3 TEST BIT ;16016000 - SED = 06#, COMMENT 7.5.7.8 SET DESTINATION ADDRESS ;16017000 - RSA = 43#, COMMENT 7.5.7.4 RECALL SOURCE ADDRESS ;16018000 - TRP = 60#, COMMENT 7.5.2.2 TRANSFER PROGRAM CHARACTERS ;16019000 - BSS = 3#, COMMENT 7.5.6.6 SKIP SOURCE BIT ;16020000 - BSD = 2#, COMMENT 7.5.8.5 SKIP DESTINATION BITS ;16021000 - SEC = 34#, COMMENT 7.5.10.1 SET COUNT ; 16022000 - JNS = 38#; COMMENT 7.5.5.7 JUMP OUT LOOP ;16023000 + JFW = 39#, COMMENT 7.5.5.1 JUMP FORWARD UNCONDITIONAL ; 16007000 + RCA = 40#, COMMENT 7.5.7.6 RECALL CONTROL ADDRESS ; 16008000 + JRV = 47#, COMMENT 7.5.5.2 JUMP REVERSE UNCONDITIONAL ; 16009000 + CRF = 35#, COMMENT 7.5.10.6 CALL REPEAT FIELD ; 16010000 + BNS = 42#, COMMENT 7.5.5.5 BEGIN LOOP ; 16011000 + NOP = 1#, COMMENT ; 16012000 + ENS = 41#, COMMENT 7.5.5.6 END LOOP ; 16013000 + TAN = 30#, COMMENT 7.5.3.7 TEST FOR ALPHAMERIC ; 16014000 + BIT = 31#, COMMENT 7.5.3.8 TEST BIT ; 16015000 + JFC = 37#, COMMENT 7.5.5.3 JUMP FORWARD CONDITIONAL ; 16016000 + SED = 06#, COMMENT 7.5.7.8 SET DESTINATION ADDRESS ; 16017000 + RSA = 43#, COMMENT 7.5.7.4 RECALL SOURCE ADDRESS ; 16018000 + TRP = 60#, COMMENT 7.5.2.2 TRANSFER PROGRAM CHARACTERS ; 16019000 + BSS = 3#, COMMENT 7.5.6.6 SKIP SOURCE BIT ; 16020000 + BSD = 2#, COMMENT 7.5.6.5 SKIP DESTINATION BITS ; 16021000 + SEC = 34#, COMMENT 7.5.10.1 SET COUNT ; 16022000 + JNS = 38#; COMMENT 7.5.5.7 JUMP OUT LOOP ; 16023000 PROCEDURE ADJUST;; 16023100 - COMMENT FIXC EMIST BASICALY FORWARD JUMPS.HOWEVER IN THE CASE 16024000 - OF INSTRUCTIONS INTERPTED AS JUMPS BECAUSE OF A CRF ON 16025000 - A VALUE = 0 AND THE JUMP } 64 SYLLABLES A JFW 1 AND 16026000 - A RCA L (L IS STACK ADDRESS OF A PSEUDO LABEL WHCIH 16027000 - MUST ALSO BE MANUFACTURED) IS EMITTED. ; 16028000 -PROCEDURE FIXC(S); VALUE S; REAL S; 16029000 - BEGIN 16030000 - REAL SAVL,D,F; 16031000 - IF D~ (SAVL~L) - (L~S)-1 { 63 THEN EMITC(D,GET(S)) 16032000 - ELSE FLAG(700); 16033000 - L~SAVL ; 16034000 - END FIXC ; 16057000 - COMMENT EMITJUMP IS CALLED BY GOTOS AND JUMPCHAIN. 16058000 - THIS ROUTINE WILL EMIT A JUMP IF THE DISTANCE IS { 63 16059000 - SYLLABLES ,OTHERWISE, IT GETS A PRT CELL AND STUFFS THE 16060000 - STACK ADDRESS INTO THE LABEL ENTRY IN INFO AND EMITS AN 16061000 - RCA ON THIS STACK CELL. AT EXECUTION TIMEACTUAL PARAPART 16062000 - INSURES US THAT THIS CELL WILL CONATIN A LABEL DESCRIPTOR 16063000 - POINTING TO OUR LABEL IN QUESTION. ; 16064000 -PROCEDURE EMITJUMP( E); VALUE E; REAL E; 16065000 - BEGIN 16066000 - REAL T,D; 16067000 - REAL ADDR; 16068000 - IF ABS( 16069000 - D~(T~TAKE(GIT(E)),LOC)-L-1)}64 THEN 16070000 - FLAG(700); 16071000 - ELSE EMITC(D,IF D <0 THEN JRV ELSE JFW); 16079000 - END EMIT JUMP; 16080000 - COMMENT WHEN JUMPCHAIN IS CALLED THERE IS A LINKEDLIST IN THE CODE 16081000 - ARRAY WHERE JFWS MUST BE PLACED. THE 1ST LINK IS PINTED 16082000 - TO BY THE LOC FIELD OF EACH LABEL ENTRY IN INFO.THE LAST 16083000 - LINK IS = 4096. ; 16084000 -PROCEDURE JUMPCHAIN( E); VALUE E;REAL E; 16085000 - BEGIN 16086000 - REAL SAVL ,LINK; 16087000 - SAVL ~ L; 16088000 - L ~ TAKE(GIT(E)).LASTGT; 16089000 - WHILE L! 4095 DO 16090000 - BEGIN 16091000 - LINK ~ GET(L); 16092000 - EMITJUMP( E); 16093000 - L ~ LINK 16094000 - END; 16095000 - L~SAVL; 16096000 - END JUMPCHAIN ; 16097000 - COMMENT NESTS COMPILES THE NEXT STATEMENT. 16098000 - A VARIABLE NEXT CAUSE THE CODE, 16099000 - CRF V, BNS 0 ,NOP,NOP, TO BE GENERATED INITIALLY. 16100000 - AT THE RIGHT PAREN THE BNS IS FIXED WIHT THE LENGTH OF 16101000 - THE NEXT (NUMBER OF SYLLABLES) IF THE LENGTH {63,OTHERWISE 16102000 - IT IS FIXED WITH A 1 AND THE NOPS REPLACED WIHT JFW 1, 16103000 - RCA P. THIS IS DONE BECASUE THE VALUE OF V AT EXECUTION 16104000 - MAY = 0 AND THIS CODE CAUSES A JUMP AROUND THEN NEXT. 16105000 - JUMPOUT INFO IS REMEMBERED IN A RECURSIVE CELL AND 16106000 - NEXT LEVEL INCREASED BY ONE. 16107000 - WHEN THE RIGHT PAEN IS EACHED,(IF THE STATEMENTS IN 16108000 - THE NEXT COMPILED), JOINFO IS CHECKED FOR THE EXISTANCE 16109000 - OF JUMPOUT STATEMENTS IN THE NEST,IF SO,THE THE JUMPS 16110000 - ARE FIXED BY FAKING TOTOS INTO COMPILING THE REQUIRED 16111000 - JUMPS. 16112000 - FINALLY THE BNS IS FIXED,IF REQUIRED,AND NEST LEVEL 16113000 - AND JOINFO RESTORED TO THEIR OIGINAL VALUE. ; 16114000 -PROCEDURE NEXT; 16115000 - BEGIN 16116000 - LABEL EXIT; 16117000 - REAL JOINT,BNSFIX; 16118000 - IF ELCLASS!LITNO THEN 16119000 - BEGIN 16120000 - EMITC(ELBAT[1].ADDRESS,CRF); BNSFIX~ L; 16121000 - EMIT(BNS); 16122000 - END 16123000 - ELSE EMITC(ELBAT[I].ADDRESS,BNS); 16124000 - IF STEPI ! LFTPAREN THEN BEGIN ERR(262);GO TO EXIT END; 16125000 - NEXTLEVEL~NEXTLEVEL + 1; 16126000 - JOINT ~ JOINFO; 16127000 - JOINFO ~ 0; 16128000 - DO BEGIN 16129000 - STEPIT; ERRORTOG ~ TRUE; STREAMSTMT 16130000 - END UNTIL ELCLASS ! SEMICOLON ; 16131000 - IF ELCLASS ! RTPAREN THEN BEGIN ERR(262);GO TO EXIT END; 16132000 - EMIT ( ENS); 16133000 - IF JOINFO ! 0 THEN 16134000 - BEGIN 16135000 - COMMENT PREPARE TO CALL JUMPCHAIN FORJUMPOUS; 16136000 - ADJUST; 16137000 - PUT(TAKE(GIT(JOINFO))&L[LOCFLD],GIT(JOINFO)); 16138000 - JUMPCHAIN(TAKE(JOINFO)&JOINFO[35:35:13]); 16139000 - END; 16140000 - IF BNSFIX ! 0 THEN FIXC(BNSFIX); 16141000 - NEXTLEVEL ~ NEXTLEVEL-1; 16142000 - JOINFO ~ JOINT ; 16143000 - EXIT: END NESTS ; 16144000 - COMMENT LABELS HANDLES STREAM LABELS. 16145000 + COMMENT FIXC EMITS BASICLY FORWARD JUMPS. HOWEVER IN THE CASE 16024000 + OF INSTRUCTIONS INTERPTED AS JUMPS BECAUSE OF A CRF ON 16025000 + A VALUE = 0 AND THE JUMP } 64 SYLLABLES A JFW 1 AND 16026000 + A RCA L (L IS STACK ADDRESS OF A PSEUDO LABEL WHICH 16027000 + MUST ALSO BE MANUFACTURED) IS EMITTED. ; 16028000 + PROCEDURE FIXC(S); VALUE S; REAL S; 16029000 + BEGIN 16030000 + REAL SAVL,D,F; 16031000 + IF D~ (SAVL~L) - (L~S)-1 { 63 THEN EMITC(D,GET(S)) 16032000 + ELSE FLAG(700); 16033000 + L~SAVL ; 16034000 + END FIXC ; 16057000 + COMMENT EMITJUMP IS CALLED BY GOTOS AND JUMPCHAIN. 16058000 + THIS ROUTINE WILL EMIT A JUMP IF THE DISTANCE IS { 63 16059000 + SYLLABLES ,OTHERWISE, IT GETS A PRT CELL AND STUFFS THE 16060000 + STACK ADDRESS INTO THE LABEL ENTRY IN INFO AND EMITS AN 16061000 + RCA ON THIS STACK CELL. AT EXECUTION TIME ACTUAL PARAPART 16062000 + INSURES US THAT THIS CELL WILL CONATIN A LABEL DESCRIPTOR 16063000 + POINTING TO OUR LABEL IN QUESTION. ; 16064000 + PROCEDURE EMITJUMP( E); VALUE E; REAL E; 16065000 + BEGIN 16066000 + REAL T,D; 16067000 + REAL ADDR; 16068000 + IF ABS( 16069000 + D~(T~TAKE(GIT(E)).LOC)-L-1)}64 THEN 16070000 + FLAG(700); 16071000 + ELSE EMITC(D,IF D <0 THEN JRV ELSE JFW); 16079000 + END EMIT JUMP; 16080000 + COMMENT WHEN JUMPCHAIN IS CALLED THERE IS A LINKEDLIST IN THE CODE16081000 + ARRAY WHERE JFWS MUST BE PLACED. THE 1ST LINK IS POINTED 16082000 + TO BY THE LOC FIELD OF EACH LABEL ENTRY IN INFO. THE LAST 16083000 + LINK IS = 4096. ; 16084000 + PROCEDURE JUMPCHAIN( E); VALUE E;REAL E; 16085000 + BEGIN 16086000 + REAL SAVL ,LINK; 16087000 + SAVL ~ L; 16088000 + L ~ TAKE(GIT(E)).LASTGT ; 16089000 + WHILE L! 4095 DO 16090000 + BEGIN 16091000 + LINK ~ GET(L); 16092000 + EMITJUMP( E); 16093000 + L ~ LINK 16094000 + END; 16095000 + L~SAVL; 16096000 + END JUMPCHAIN ; 16097000 + COMMENT NESTS COMPILES THE NEST STATEMENT. 16098000 + A VARIABLE NEST INDEX CAUSES THE CODE, 16099000 + CRF V, BNS 0 ,NOP,NOP, TO BE GENERATED INITIALLY. 16100000 + AT THE RIGHT PAREN THE BNS IS FIXED WITH THE LENGTH OF 16101000 + THE NEST (NUMBER OF SYLLABLES) IF THE LENGTH {63,OTHERWISE16102000 + IT IS FIXED WITH A 1 AND THE NOPS REPLACED WITH JFW 1, 16103000 + RCA P. THIS IS DONE BECAUSE THE VALUE OF V AT EXECUTION 16104000 + MAY = 0 AND THIS CODE CAUSES A JUMP AROUND THE NEST. 16105000 + JUMPOUT INFO IS REMEMBERED IN A RECURSIVE CELL AND 16106000 + NEST LEVEL INCREASED BY ONE. 16107000 + WHEN THE RIGHT PAREN IS REACHED,(IF THE STATEMENTS IN 16108000 + THE NEST COMPILED), JOINFO IS CHECKED FOR THE EXISTANCE 16109000 + OF JUMPOUT STATEMENTS IN THE NEST,IF SO,THE THE JUMPS 16110000 + ARE FIXED BY FAKING TOTOS INTO COMPILING THE REQUIRED 16111000 + JUMPS. 16112000 + FINALLY THE BNS IS FIXED,IF REQUIRED,AND NEST LEVEL 16113000 + AND JOINFO RESTORED TO THEIR ORIGINAL VALUES. ; 16114000 + PROCEDURE NESTS; 16115000 + BEGIN 16116000 + LABEL EXIT; 16117000 + REAL JOINT,BNSFIX; 16118000 + IF ELCLASS!LITNO THEN 16119000 + BEGIN 16120000 + EMITC(ELBAT[I].ADDRESS,CRF); BNSFIX~ L; 16121000 + EMIT(BNS); 16122000 + END 16123000 + ELSE EMITC(ELBAT[I].ADDRESS,BNS); 16124000 + IF STEPI ! LFTPAREN THEN BEGIN ERR(262); GO TO EXIT END; 16125000 + NESTLEVEL~NESTLEVEL + 1; 16126000 + JOINT ~ JOINFO; 16127000 + JOINFO ~ 0; 16128000 + DO BEGIN 16129000 + STEPIT; ERRORTOG ~ TRUE; STREAMSTMT 16130000 + END UNTIL ELCLASS ! SEMICOLON ; 16131000 + IF ELCLASS ! RTPAREN THEN BEGIN ERR(262);GO TO EXIT END; 16132000 + EMIT ( ENS); 16133000 + IF JOINFO ! 0 THEN 16134000 + BEGIN 16135000 + COMMENT PREPARE TO CALL JUMPCHAIN FORJUMPOUTS; 16136000 + ADJUST; 16137000 + PUT(TAKE(GIT(JOINFO))&L[LOCFLD],GIT(JOINFO)); 16138000 + JUMPCHAIN(TAKE(JOINFO)&JOINFO[35:35:13]); 16139000 + END; 16140000 + IF BNSFIX ! 0 THEN FIXC(BNSFIX); 16141000 + NESTLEVEL ~ NESTLEVEL-1; 16142000 + JOINFO ~ JOINT ; 16143000 + EXIT: END NESTS ; 16144000 + COMMENT LABELS HANDLES STREAM LABELS. 16145000 ALL LABELS ARE ADJUSTED TO THE BEGINING OF THE NEXT 16146000 - WORD (IN THE PROGRAM STREAM). 16147000 - IF A GOT TO HAS NOT BEEN ENCOUNTERED BEFORE THE LABEL 16148000 + WORD (IN THE PROGRAMSTREAM). 16147000 + IF A GO TO HAS NOT BEEN ENCOUNTERED BEFORE THE LABEL 16148000 THEN THE NEST LEVEL FIELD IS ENTERED AND THE DEFINED BIT, 16149000 - [1:1], SETTO ONE.FOR DEFINED LABLES,IF WHERE A GO TO 16150000 + [1:1], SET TO ONE. FOR DEFINED LABELS,IF WHERE A GO TO 16150000 HAS APPEARED, A CHECK IS MADE THAT THE CURRENT NEST LEVEL 16151000 MATCHES THE LEVEL OF THE LABEL. 16152000 - MULTIPLE OCCURANCES ARE ALSO CHECED FOR AND FLAGGED. 16153000 + MULTIPLE OCCURANCES ARE ALSO CHECKED FOR AND FLAGGED. 16153000 FINALLY,JUMPCHAIN IS CALLED TO FIX UP ANY FORWARD GO TOS 16154000 AND GET A PRT LOCATION FOR ANY JUMPS }64 SYLLABLES. ; 16155000 PROCEDURE LABELS; 16156000 @@ -6576,7 +6580,7 @@ PROCEDURE LABELS; 16156000 IF TAKE(GT2~GIT(GT1)).LOC ! 0 THEN FLAG(259); 16163000 IF GT1>0 THEN 16164000 BEGIN 16165000 - PUT(-(TAKE(GT1)&NESTLEVEL[11:43:50),GT1); 16166000 + PUT(-(TAKE(GT1)&NESTLEVEL[11:43:5]),GT1); 16166000 PUT(-L,GT2) 16167000 END 16168000 ELSE 16169000 @@ -6588,103 +6592,103 @@ PROCEDURE LABELS; 16156000 END 16175000 ; STEPIT; 16176000 END LABELS ; 16177000 - COMMENT IFS COMPILES IF STATEMENTS. 16178000 - FIRST THE TEST IS COMPILED. NOTE THAT IN THE 16179000 - CONSTRUCTS "SC RELOP DC" AND "SC RELOP STIRNG" THAT 16180000 - THE SYLLABLE EMITTED IS FETCHED FOR ONE OF TWO FIELDS 16181000 - IN THE ELBAT WORD FOR THE RELATIONAL OPERATOR. OTHERWISE 16182000 - THE CODE IS EMITTED STRAIGHTAWAY. 16183000 - A TEST IS MADE TO SEE WHETHER THE STATEMENT AFTER THE 16184000 - "THEN" COULD POSSIBLY BE LONGER THAT 63 SYLLABLES,AND IF 16185000 - SO, Z NOPS ARE EMITTED FOR FIXC IN CASE A RCA WILL HAVE 16186000 - TO BE GENERATED. 16187000 - THIS PROCEDURE DOES NO OPTIMIZATION IN THE CASES 16188000 - IF THEN GO TO L,IF THEN STATEMENT ELSE GOTO L,OR 16189000 - IF THEN GOTO L1 ELSE GO TO L2 ; 16190000 -PROCEDURE IFS; BEGIN 16191000 - DEFINE COMPARECODE=[42:6]#,TESTCODE=[36:6]#; 16192000 - LABEL IFSB,IFTOG,IFSC,EXIT; 16193000 - SWITCH IFSW ~ IFSB,IFTOG,IFSC; 16194000 - REAL ADDR,FIX1,FIX2 ; 16195000 - ADDR~1 ; 16196000 - GO TO IFSW[STEPI -SBV+1] ; 16197000 - IF ELCLASS=LOCLID THEN 16198000 - BEGIN 16199000 - EMITC(ELBAT[1].ADDRESS,CRF); 16200000 - ADDR~0; 16201000 - END 16202000 - ELSE 16203000 - IF ELCLASS=LITNO THEN ADDR ~ ELBAT[I].ADDRESS 16204000 - ELSE BEGIN ERR(250); GO TO EXIT END; 16205000 - IF STEPI ! SCV THEN BEGIN ERR(263);GO TO EXIT END; 16206000 - IFSC: IF STEPI ! RELOP THEN BEGIN ERR(264);GO TO EXIT END; 16207000 - IF STEPI = DCV THEN EMITC( ADDR,ELBAT[I-1].COMPARECODE); 16208000 - ELSE 16209000 - IF ELCLASS = STRNGCON THEN 16210000 - EMITC(ACCUM[1].[18:6],ELBAT[I-1].TESTCODE) 16211000 - ELSE 16212000 - IF ELCLASS=LITNO THEN EMITC(C,ELBAT[I-1].TESTCODE) ELSE 16212500 - IF ELCLASS{IDMAX AND Q="5ALPHA" THEN EMITC(17,TAN) 16213000 - ELSE BEGIN ERR(265); GO TO EXIT END; 16214000 - GO TO IFTOG ; 16215000 - IFSB: EMITC(1,BIT); 16216000 -IFTOG: IF STEP ! THENV THEN BEGIN ERR(266); GO TO EXIT END; 16217000 - FIX1 ~ L; 16218000 - EMIT(JFC); 16219000 - IF STEPI!ELSEV THEN% 16220000 - STREAMSTMT; 16229000 - IF ELCLASS=ELSEV THEN 16230000 - BEGIN 16231000 - FIX2 ~ L; EMIT(JFW); 16232000 - FIXC(FIX1); 16233000 - STEPIT; 16234000 - STREAMSTMT; 16235000 - FIXC(FIX2); 16236000 - END 16237000 - ELSE FIXC(FIX1); 16238000 - EXIT:END IFS ; 16239000 - COMMENT GOTOS HANDLES GO TO AND THE LAST PART OF JUMP OUT TO 16240000 - STATEMENTS. 16241000 - IF THE LABEL HAS BEEN ENCOUNTERED THEN EMITJUMP IS CALLED 16242000 - AN PRODUCES A JRV OR RCA IN THE CASE OF JUMPS}64 SYLLABL 16243000 - ES. OTHERWISE, A LINK IS EMITTED POINTING ANY PREVIOUS 16244000 - GO TOS IN THE CASE OF FORWARD JUMPS. 16245000 - FINALLY, IF THE NEXT LEVEL IS DEFINED THEN T IS CHECKED 16246000 - AGAINST THE CURRENT LEVEL MINUS THE NUMBER OF LEVELS TO 16247000 - BE JUMPED OUT. OHERWISE,NEST LEVEL IS DEFINED. ; 16248000 -PROCEDURE GOTOS; 16249000 - BEGIN 16250000 - LABEL EXIT; 16251000 - IF STEPI !TOV THEN I~I-1 ; 16252000 - IF STEPI ! STLABID THEN ELCLASS { IDMAX THEN 16253000 - DECLARELABEL ELSE BEGIN ERR(260); GO TO EXIT END; 16253100 - IF(GT2~TAKE(GIT(GT1~ELBAT[I]))).MON=1 16254000 - OR GT2.LOC!0 THEN EMITJUMP(GT1) 16255000 - ELSE 16256000 - BEGIN PUT(0&L[24:36:12],GIT(GT1)); 16257000 - IF GT1>0 THEN 16258000 - BEGIN 16259000 - PUT(-(TAKE(GT1)&(NEXTLEVEL-JUMPLEVEL)[11:43:5]),GT1); 16260000 - EMITN(1023); 16261000 - END 16262000 - ELSE 16263000 - BEGIN 16264000 - IF GT1.LEVEL ! NEXTLEVEL-JUMPLEVEL THEN FLAG(257); 16265000 - EMIT(GT2.LASTGT); 16266000 - END; 16267000 - END; 16268000 - JUMPLEVEL~0 ; 16269000 - EXIT: END GOTOS ; 16270000 - COMMENT RELEASES COMPILES THE STREAM RELEASE STATEMENT. 16271000 - THE CODE GENERATED IS : 16272000 - SED FILE 16273000 - RSA 0. 16274000 - AT EXECUTION TIME THIS CAUSES AN INVALID ADDRESS WHICH IS 16275000 - INTERPETED BY THE MCP TO MEAN RELEASE THE FILE POINTED TO 16276000 - BY THE DESTINATION ADDRESS. 16277000 - TEMONITOR BIT IS SET IN INFO FOR THE LOCAL VARIABLE SO 16278000 - THAT ACTUAL PARAPART MAY BE INFORMED LATER THAT A FILE 16279000 - MUST BE PASSED FOR THIS FORMAL PARAMETER; 16280000 + COMMENT IFS COMPILES IF STATEMENTS. 16178000 + FIRST THE TEST IS COMPILED. NOTE THAT IN THE 16179000 + CONSTRUCTS "SC RELOP DC" AND "SC RELOP STRING" THAT 16180000 + THE SYLLABLE EMITTED IS FETCHED FROM ONE OF TWO FIELDS 16181000 + IN THE ELBAT WORD FOR THE RELATIONAL OPERATOR. OTHERWISE 16182000 + THE CODE IS EMITTED STRAIGHTAWAY. 16183000 + A TEST IS MADE TO SEE WHETHER THE STATEMENT AFTER THE 16184000 + "THEN" COULD POSSIBLY BE LONGER THAN 63 SYLLABLES,AND IF 16185000 + SO, Z NOPS ARE EMITTED FOR FIXC IN CASE A RCA WILL HAVE 16186000 + TO BE GENERATED. 16187000 + THIS PROCEDURE DOES NO OPTIMAZATION IN THE CASES 16188000 + IF THEN GO TO L,IF THEN STATEMENT ELSE GO TO L, OR 16189000 + IF THEN GO TO L1 ELSE GO TO L2 ; 16190000 + PROCEDURE IFS; BEGIN 16191000 + DEFINE COMPARECODE=[42:6]#,TESTCODE=[36:6]#; 16192000 + LABEL IFSB,IFTOG,IFSC,EXIT; 16193000 + SWITCH IFSW ~ IFSB,IFTOG,IFSC; 16194000 + REAL ADDR,FIX1,FIX2 ; 16195000 + ADDR~1 ; 16196000 + GO TO IFSW[STEPI -SBV+1] ; 16197000 + IF ELCLASS=LOCLID THEN 16198000 + BEGIN 16199000 + EMITC(ELBAT[I].ADDRESS,CRF); 16200000 + ADDR~0; 16201000 + END 16202000 + ELSE 16203000 + IF ELCLASS=LITNO THEN ADDR ~ ELBAT[I].ADDRESS 16204000 + ELSE BEGIN ERR(250); GO TO EXIT END; 16205000 + IF STEPI ! SCV THEN BEGIN ERR(263);GO TO EXIT END; 16206000 + IFSC: IF STEPI ! RELOP THEN BEGIN ERR(264);GO TO EXIT END; 16207000 + IF STEPI = DCV THEN EMITC( ADDR,ELBAT[I-1].COMPARECODE); 16208000 + ELSE 16209000 + IF ELCLASS = STRNGCON THEN 16210000 + EMITC(ACCUM[1].[18:6],ELBAT[I-1].TESTCODE) 16211000 + ELSE 16212000 + IF ELCLASS=LITNO THEN EMITC(C,ELBAT[I-1].TESTCODE) ELSE 16212500 + IF ELCLASS{IDMAX AND Q="5ALPHA" THEN EMITC(17,TAN) 16213000 + ELSE BEGIN ERR(265); GO TO EXIT END; 16214000 + GO TO IFTOG ; 16215000 + IFSB: EMITC(1,BIT); 16216000 + IFTOG: IF STEP ! THENV THEN BEGIN ERR(266); GO TO EXIT END; 16217000 + FIX1 ~ L; 16218000 + EMIT(JFC); 16219000 + IF STEPI!ELSEV THEN% 16220000 + STREAMSTMT; 16229000 + IF ELCLASS= ELSEV THEN 16230000 + BEGIN 16231000 + FIX2 ~ L; EMIT(JFW); 16232000 + FIXC(FIX1); 16233000 + STEPIT; 16234000 + STREAMSTMT; 16235000 + FIXC(FIX2); 16236000 + END 16237000 + ELSE FIXC(FIX1); 16238000 + EXIT:END IFS ; 16239000 + COMMENT GOTOS HANDLES GO TO AND THE LAST PART OF JUMP OUT TO 16240000 + STATEMENTS. 16241000 + IF THE LABEL HAS BEEN ENCOUNTERED THEN EMITJUMP IS CALLED 16242000 + AN PRODUCES A JRV OR RCA IN THE CASE OF JUMPS}64 SYLLABL 16243000 + ES. OTHERWISE, A LINK IS EMITTED POINTING ANY PREVIOUS 16244000 + GO TOS IN THE CASE OF FORWARD JUMPS. 16245000 + FINALLY, IF THE NEST LEVEL IS DEFINED THEN IT IS CHECKED 16246000 + AGAINST THE CURRENT LEVEL MINUS THE NUMBER OF LEVELS TO 16247000 + BE JUMPED OUT. OTHERWISE,NEST LEVEL IS DEFINED. ; 16248000 + PROCEDURE GOTOS; 16249000 + BEGIN 16250000 + LABEL EXIT; 16251000 + IF STEPI !TOV THEN I~I-1 ; 16252000 + IF STEPI ! STLABID THEN ELCLASS { IDMAX THEN 16253000 + DECLARELABEL ELSE BEGIN ERR(260); GO TO EXIT END; 16253100 + IF(GT2~TAKE(GIT(GT1~ELBAT[I]))).MON=1 16254000 + OR GT2.LOC!0 THEN EMITJUMP(GT1) 16255000 + ELSE 16256000 + BEGIN PUT(0&L[24:36:12],GIT(GT1)); 16257000 + IF GT1>0 THEN 16258000 + BEGIN 16259000 + PUT(-(TAKE(GT1)&(NESTLEVEL-JUMPLEVEL)[11:43:5]),GT1);16260000 + EMITN(1023); 16261000 + END 16262000 + ELSE 16263000 + BEGIN 16264000 + IF GT1.LEVEL ! NESTLEVEL-JUMPLEVEL THEN FLAG(257); 16265000 + EMIT(GT2.LASTGT); 16266000 + END; 16267000 + END; 16268000 + JUMPLEVEL~0 ; 16269000 + EXIT: END GOTOS ; 16270000 + COMMENT RELEASES COMPILES THE STREAM RELEASE STATEMENT. 16271000 + THE CODE GENERATED IS : 16272000 + SED FILE 16273000 + RSA 0. 16274000 + AT EXECUTION TIME THIS CAUSES AN INVALID ADDRESS WHICH IS 16275000 + INTERPETED BY THE MCP TO MEAN RELEASE THE FILE POINTED TO 16276000 + BY THE DESTINATION ADDRESS. 16277000 + THE MONITOR BIT IS SET IN INFO FOR THE LOCAL VARIABLE SO 16278000 + THAT ACUTAL PARAPART MAY BE INFORMED LATER THAT A FILE 16279000 + MUST BE PASSED FOR THIS FORMAL PARAMETER; 16280000 16281000 16282000 16283000 @@ -6694,27 +6698,27 @@ PROCEDURE GOTOS; 16249000 16287000 16288000 16289000 - COMMENT INDXS COMPILE STATEMENTS BEGINNING WITH SI,DI,CI,TALLY 16290000 - OR LOCALIDS . 16291000 - THREE CASES PRESENT THEMSELVES, 16292000 - LETING X BE EITHER OF SI,DI,CI OR TALLY, THEY ARE: 16293000 - CASE I LOCLID ~ X 16294000 - CASE II X ~ X ... 16295000 - CASE III X ~ EITHER LOC,LOCLID,SC OR DC. 16296000 - THE VARIABLE "INDEX" IS COMPUTED,DEPENDING UPON WHICH 16297000 - CASE EXISTS,SUCH THAT ARRAY ELEMENT "MACRO[INDEX]"CONTAINS 16298000 - THE CODE TO BE EMITTED. 16299000 - EACH ELEMENT OF MACRO HAS 1-3 SYLLABLES ORDERED FROM 16300000 - RGHT TO LEFT. UNUSED SYLLABLES MUST = 0. EACH MACRO 16301000 - MAY REQUIRE AT MOST ONE REPEAT PART. 16302000 - IN THIS PROCEDURE,INDEXS,THE VARIBALE "ADDR" CONTAINS THE 16303000 - PROPER REPEAT PART BY THE TIME THE LABEL "GENERATE" IS 16304000 - ENCOUNTERED, THE SYLLABLES ARE FETCHED FROM MACRO[TYPE] 16305000 - ONE AT A TIME AND IF THE RPEAT PART ! 0 THEN"ADDR" IS 16306000 - USED AS THE REPEAT PART,THUS BUILDING A SYLLABLE WITH 16307000 - THE PROPER ADDRESS AND OPERATOR . 16308000 - NOTE: IF MACRO[TYPE] = 0 THEN THIS SIGNIFIES A SYNTAX 16309000 - ERROR. ; 16310000 + COMMENT INDEXS COMPILE STATEMENTS BEGINING WITH SI,DI,CI,TALLY 16290000 + OR LOCALIDS . 16291000 + THREE CASES PRESENT THEMSELVES, 16292000 + LETING X BE EITHER OF SI,DI,CI OR TALLY, THEY ARE: 16293000 + CASE I LOCLID ~ X 16294000 + CASE II X ~ X ... 16295000 + CASE III X ~ EITHER LOC,LOCLID,SC OR DC. 16296000 + THE VARIABLE "INDEX" IS COMPUTED,DEPENDING UPON WHICH 16297000 + CASE EXISTS,SUCH THAT ARRAY ELEMENT "MACRO[INDEX]"CONTAINS16298000 + THE CODE TO BE EMITTED. 16299000 + EACH ELEMENT OF MACRO HAS 1-3 SYLLABLES ORDERED FROM 16300000 + RIGHT TO LEFT, UNUSED SYLLABLES MUST = 0. EACH MACRO 16301000 + MAY REQUIRE AT MOST ONE REPEAT PART. 16302000 + IN THIS PROCEDURE,INDEXS,THE VARIABLE "ADDR" CONTAINS THE 16303000 + PROPER REPEAT PART BY THE TIME THE LABEL "GENERATE" IS 16304000 + ENCOUNTERED. THE SYLLABLES ARE FETCHED FROM MACRO[TYPE] 16305000 + ONE AT A TIME AND IF THE REPEAT PART ! 0 THEN"ADDR" IS 16306000 + USED AS THE REPEAT PART,THUS BUILDING A SYLLABLE WITH 16307000 + THE PROPER ADDRESS AND OPERATOR . 16308000 + NOTE: IF MACRO[TYPE] = 0 THEN THIS SIGNIFIES A SYNTAX 16309000 + ERROR. ; 16310000 PROCEDURE INDEXS; 16311000 BEGIN 16312000 LABEL EXIT,GENERATE,L,L1; 16313000 @@ -6757,36 +6761,36 @@ PROCEDURE INDEXS; 16311000 IF TCLASS!0 THEN 16350000 BEGIN 16351000 EMITC(IF TCLASS}64 THEN ADDR ELSE 0,TCLASS); 16352000 - GO TO L; 16353000 + GO TO L1 16353000 END; 16354000 - EXIT:END INDEXS; 16355000 - COMMENT DSS COMPILES DESTINATION STREAM SATEMENTS. 16356000 - DS~ LIT"STRING" IS HANDLED AS A SPECIAL CASE BECAUSE THE 16357000 - STRING MUST BE SCANNED FROM RIGHT TO LEFT,REPEATEDLY IF 16358000 - NECESSARY, AND EMITTED TOT HE PROGRAM STREAM. IN 16359000 - ALL OTHER CASES,THE ELBAT WORD CONTAINS THE OPERATOR IN 16360000 - THE OPCODE FIELD ; 16361000 + EXIT:END INDEXS ; 16355000 + COMMENT DSS COMPILES DESTINATION STREAM STATEMENTS. 16356000 + DS~ LIT"STRING" IS HANDLED AS A SPECIAL CASE BECAUE THE 16357000 + STRING MUST BE SCANED FROM RIGHT TO LEFT,REPEATEDLY IF 16358000 + NECESSARY, AND EMITTED TO THE PROGRAM STREAM. IN 16359000 + ALL OTHER CASES,THE ELBAT WORD CONTAINS THE OPERATOR IN 16360000 + THE OPCODE FIELD ; 16361000 PROCEDURE DSS; 16362000 BEGIN 16363000 INTEGER ADDR,J,K,L,T; 16364000 - LABEL EXIT.L1; 16365000 + LABEL EXIT,L1; 16365000 DEFINE OPCODE=[27:6]#; 16366000 IF STEPI ! ASSIGNOP THEN BEGIN ERR(251); GO TO EXIT END; 16367000 IF STEPI = LOCLID THEN 16368000 BEGIN 16369000 - EMITC(ELBAT[I].ADDRESS,CRF ); 16370000 + EMITC(ELBAT[I].ADDRESS,CRF); 16370000 ADDR~ 0; 16371000 - IF STEPI = LITV THEN GO TO L; 16372000 + IF STEPI = LITV THEN GO TO L1 16372000 END 16373000 ELSE IF ELCLASS= LITNO THEN 16374000 BEGIN 16375000 ADDR ~ ELBAT[I].ADDRESS; STEPIT ; 16376000 END 16377000 ELSE ADDR ~ 1 ; 16378000 - IF Q = "4FILL0" THEN EMITC(ADDR,10) ELSE %E 16378500 + IF Q = "4FILL0" THEN EMITC(ADDR,10) ELSE %E 16378500 IF ELCLASS = TRNSFER THEN EMITC(ADDR,ELBAT[1].OPCODE) 16379000 ELSE 16380000 - IF ELCLASS = LIT THEN 16381000 + IF ELCLASS = LITV THEN 16381000 BEGIN 16382000 EMITC(ADDR,TRP); 16383000 IF STEPI!STRNGCON THEN 16384000 @@ -6800,19 +6804,19 @@ PROCEDURE DSS; 16362000 FOR L ~6,7 DO 16391000 MOVECHARACTERS(1,ACCUM[1],2+(IF J~J+1>COUNT THEN J~1 16392000 ELSE J),T,L ); 16393000 - EMIT (T); 16394000 + EMIT(T); 16394000 END END 16395000 ELSE 16396000 L1: ERR(250); 16397000 EXIT:END DSS ; 16398000 - COMMENT SKIPS COMPILES THE SKIP BIT STATEMENT. 16399000 - IF THE REPEAT INDEX IS A LOCALID THEN A CRF IS EITTED. 16400000 - A BSS OR BSD IS EMITTED FOR SKIP SOURCE BITS (SB) 16401000 - OR SKIP DESTINATION ITS (DB) RESPECTIVELY ; 16402000 + COMMENT SKIPS COMPILES THE SKIP BIT STATEMENT. 16399000 + IF THE REPEAT INDEX IS A LOCALID THEN A CRF IS EMITTED. 16400000 + A BSS OR BSD IS THEN EMITTED FOR SKIP SOURCE BITS (SB) 16401000 + OR SKIP DESTINATION BITS (DB) RESPECTIVELY ; 16402000 PROCEDURE SKIPS ; 16403000 BEGIN 16404000 REAL ADDR; 16405000 - IF STEPI - LOCLID THEN 16406000 + IF STEPI = LOCLID THEN 16406000 BEGIN 16407000 EMITC(ELBAT[I].ADDRESS,CRF); ADDR~0; STEPIT; 16408000 END 16409000 @@ -6821,27 +6825,27 @@ PROCEDURE SKIPS ; 16403000 ADDR~ ELBAT[I].ADDRESS; STEPIT 16412000 END 16413000 ELSE ADDR ~ 1 ; 16414000 - IF ELCLASS =SBV THEN EMITC(ADDR,BSS); 16415000 + IF ELCLASS =SBV THEN EMITC(ADDR,BSS) 16415000 ELSE 16416000 IF ELCLASS =DBV THEN EMITC(ADDR,BSD) 16417000 ELSE ERR(250); 16418000 END SKIPS ; 16419000 - COMMENT JUMPS COMPILES JUMP OUT AND JUMP OUT TO STATEMENTS. 16420000 - JUMP OUT TO STATEMENTS CASUSE JUMP LEVEL TO BE SET TO 16421000 - THE NUMBER OF LEVELS SPECIFIED. THEN THIS NUMBER OF 16422000 - JNS ARE EMITTED AND GOTOS IS CALLED TO COMPILE THE 16423000 - JUMP INSTRUCTION. 16424000 - SIMPLE JUMP OUTS ARE HANDLES BY EMITTING ONE JNS,ENTERING 16425000 - A PSEUDO STLABID IN NFO AND SETTING ELBAT[I] SUCH THAT 16426000 - THE GOTOS PROCEDURE WILL PERFORM THE ACTION OF SETTING 16427000 - UP THE LINKS FOR LATER FIX UPS. THE NEST STATEMENT CAUSES 16428000 - THE FIX UPS(IF EMITTING OF JUMP INSTRUCTIONS) BY CALLING 16429000 - GO TOS WHEN THE RIGHT PAREN IN ENCOUNTERED. ; 16430000 + COMMENT JUMPS COMPILES JUMP OUT AND JUMP OUT TO STATEMENTS. 16420000 + JUMP OUT TO STATEMENTS CAUSE JUMP LEVEL TO BE SET TO 16421000 + THE NUMBER OF LEVELS SPECIFIED. THEN THIS NUMBER OF 16422000 + JNS ARE EMITTED AND GOTOS IS CALLED TO COMPILE THE 16423000 + JUMP INSTRUCTION. 16424000 + SIMPLE JUMP OUTS ARE HANDLED BY EMITTING ONE JNS,ENTERING 16425000 + A PSEUDO STLABID IN INFO AND SETTING ELBAT[I] SUCH THAT 16426000 + THE GOTOS PROCEDURE WILL PERFORM THE ACTION OF SETTING 16427000 + UP THE LINKS FOR LATER FIX UPS. THE NEST STATEMENT CAUSES 16428000 + THESE FIX UPS(IF EMITTING OF JUMP INSTRUCTIONS) BY CALLING16429000 + GO TOS WHEN THE RIGHT PAREN IS ENCOUNTERED. ; 16430000 PROCEDURE JUMPS; 16431000 BEGIN 16432000 JUMPLEVEL~1; 16433000 IF STEPI!DECLARATORS THEN IF ACCUM[1]!"3OUT00" THEN 16434000 - FLAG(261); 16434100 + FLAG(261); 16434100 IF STEPI = LITNO THEN JUMPLEVEL~ ELBAT[I].ADDRESS 16435000 ELSE BEGIN 16436000 IF ELCLASS! TOV AND ELCLASS! STLABID THEN 16437000 @@ -6852,7 +6856,7 @@ PROCEDURE JUMPS; 16431000 JOINFO ~ NEXTINFO ; 16442000 PUTNBUMP(STACKHEAD[0],LINK&(STLABID|2+1) 16443000 [2:40:8]&2[27:40:8 ]); 16444000 - PUTNBUMP(0&(JOINFO~LASTINFO )[ 4:40:8]); 16445000 + PUTNBUMP(0&(JOINFO-LASTINFO )[ 4:40:8]); 16445000 PUTNBUMP (0); 16446000 LASTINFO ~ JOINFO; 16447000 END; 16448000 @@ -6863,49 +6867,49 @@ PROCEDURE JUMPS; 16431000 EMIT( JNS); 16453000 GOTOS; 16454000 END JUMPS; 16455000 - COMMENT STREAMSTMT ENVOKES THE APPROPRIATE PROCEDUE TO HANDLE 16456000 - THE VARIOUS AND SUNDRY STREAM PROCEDURE STATEMENTS. 16457000 - THE STATEMENTS ARE BROKEN DOWN AS FOLLOWS: 16458000 - IDENTIFIED BY PROCEDUE ENVOKED 16459000 - END GO TO FINI 16460000 - SEMICOLON GO TO FINI 16461000 - ) GO TO FINI 16462000 - IF IFS 16463000 - GO GOTOS 16464000 - RELEASE RELEASES 16465000 - BEGIN COMPOUNDTAIL 16466000 - SI,DI,CI,TALLY,LOCALID INDEXS 16467000 - DS DSS 16468000 - SKIP SKIPS 16469000 - JUMP JUMPS 16470000 - LABELID LABELS 16471000 - LITERAL NO.,LOCALID( NESTS 16472000 - UPON EXITING,STREAMSTMT ASSURES THAT "I" POINTS TO 16473000 - THE SEMICOLON ,END OR ) IN SYNTACTICALLY CORRECT PROGRAMS; 16474000 - LABEL L,L1,L2,L3,L4,L5,L6,L7,L8,L9,L10,EXIT,FINI,START; 16475000 - SWITCH TYPE ~ FINI,L,FINI,L3,L4,L5,L6,L7,L7,L7,L7,L8,L9,L10; 16476000 - START: GO TO TYPE[ ELCLASS-ENDV+1]; 16477000 - IF ELCLASS= RTPAREN THEN GOT TO FINI ; 16478000 - IF ELCLASS=STLABID THEN GO TO L2 ; 16479000 - 16480000 - IF ELCLASS , I, REAL(POW)); 00101100120807PK + POW:= * MUX 10.0; 00101200 + END FOR I; 00101300120807PK + 00101400120807PK +POW:= 1.0; 00101500120807PK +FOR I:= -1 STEP -1 UNTIL -47 DO 00101600120807PK + BEGIN 00101700120807PK + POW:= */10.0; 00101800120807PK + WRITE (DISK, , I, REAL(POW)); 00101900120807PK + END FOR I; 00102000120807PK + 00190000 +CLOSE(DISK, CRUNCH); 00190100 +END. 00999900 diff --git a/tools/EMODE.POWTEN.dat_m b/tools/EMODE.POWTEN.dat_m new file mode 100644 index 0000000..6dbf001 --- /dev/null +++ b/tools/EMODE.POWTEN.dat_m @@ -0,0 +1,116 @@ +-47 OCT0000000000000000, +-46 OCT1771110463422054, +-45 OCT1761332600326467, +-44 OCT1751621340414205, +-43 OCT1742165630517247, +-42 OCT1732623176643120, +-41 OCT1723370036413744, +-40 OCT1714266046116735, +-39 OCT1705343457542525, +-38 OCT1676634373473252, +-37 OCT1651040347241213, +-36 OCT1641250441111455, +-35 OCT1631522551333770, +-34 OCT1622047303622767, +-33 OCT1612461164567564, +-32 OCT1603175421725521, +-31 OCT1574034726313046, +-30 OCT1565044113775657, +-29 OCT1556255136775233, +-28 OCT1547730366574502, +-27 OCT1521171646433362, +-26 OCT1511430220142257, +-25 OCT1501736264172732, +-24 OCT1472325741231521, +-23 OCT1463013331500045, +-22 OCT1453616220020057, +-21 OCT1444561664024072, +-20 OCT1435716241031111, +-19 OCT1427301711237333, +-18 OCT1401116227350722, +-17 OCT1371341675243107, +-16 OCT1361632254513731, +-15 OCT1352200727636717, +-14 OCT1342641115606502, +-13 OCT1333411341150223, +-12 OCT1324313631402270, +-11 OCT1315376577702746, +-10 OCT1306676337663537, + -9 OCT1261045602764047, + -8 OCT1251257143561061, + -7 OCT1241532774515275, + -6 OCT1232061573640554, + -5 OCT1222476132610707, + -4 OCT1213215561353071, + -3 OCT1204061115645707, + -2 OCT1175075341217270, + -1 OCT1166314631463146, + 0 OCT1141000000000000, + 1 OCT1131200000000000, + 2 OCT1121440000000000, + 3 OCT1111750000000000, + 4 OCT1102342000000000, + 5 OCT1073032400000000, + 6 OCT1063641100000000, + 7 OCT1054611320000000, + 8 OCT1045753604000000, + 9 OCT1037346545000000, + 10 OCT1011124027620000, + 11 OCT0001351035564000, + 12 OCT0011643245121000, + 13 OCT0022214116345200, + 14 OCT0032657142036440, + 15 OCT0043432772446150, + 16 OCT0054341571157602, + 17 OCT0065432127413543, + 18 OCT0076740555316473, + 19 OCT0111053071060221, + 20 OCT0121265707274266, + 21 OCT0131543271153343, + 22 OCT0142074147406234, + 23 OCT0152513201307703, + 24 OCT0163236041571663, + 25 OCT0174105452130240, + 26 OCT0205126764556310, + 27 OCT0216354561711772, + 28 OCT0231004771627437, + 29 OCT0241206170175347, + 30 OCT0251447626234641, + 31 OCT0261761573704011, + 32 OCT0272356132665013, + 33 OCT0303051561442216, + 34 OCT0313664115752661, + 35 OCT0324641141345435, + 36 OCT0336011371636745, + 37 OCT0347413670206536, + 38 OCT0361131664625027, + 39 OCT0371360241772234, + 40 OCT0401654312370703, + 41 OCT0412227375067064, + 42 OCT0422675274304701, + 43 OCT0433454553366062, + 44 OCT0444367706263476, + 45 OCT0455465667740415, + 46 OCT0467003245730521, + 47 OCT0501060411731665, + 48 OCT0511274514320242, + 49 OCT0521553637404312, + 50 OCT0532106607305375, + 51 OCT0542530351166674, + 52 OCT0553256443424453, + 53 OCT0564132154331566, + 54 OCT0575160607420123, + 55 OCT0606414751324150, + 56 OCT0621012014361120, + 57 OCT0631214417455344, + 58 OCT0641457523370635, + 59 OCT0651773450267005, + 60 OCT0662372362344606, + 61 OCT0673071057035747, + 62 OCT0703707272645341, + 63 OCT0714671151416632, + 64 OCT0726047403722400, + 65 OCT0737461304707100, + 66 OCT0751137556607072, + 67 OCT0761367512350710, + 68 OCT0771665435043073, diff --git a/tools/xem/ALGOLXEM.alg_m b/tools/xem/ALGOLXEM.alg_m index 29ca448..e84c6fa 100644 --- a/tools/xem/ALGOLXEM.alg_m +++ b/tools/xem/ALGOLXEM.alg_m @@ -128,7 +128,7 @@ ERROR NUMBER ROUTINE:ERROR MESSAGE 00025000 TO ANOTHER. IF THE QUANTITY IS A PROCEDURE NAME OR 00127000=00073000= AN OWN VARIABLE THIS RESTRICTION IS RELAXED. 00128000=00074000= 102 AEXP: CONDITIONAL EXPRESSION IS NOT OF ARITHMETIC TYPEH 00129000=00075000= - 103 PRIMARY: PRIMARY MAY NOT BEING WITH A QUANTITY OF THIS 00130000=00076000= + 103 PRIMARY: PRIMARY MAY NOT BEGIN WITH A QUANTITY OF THIS 00130000=00076000= TYPE. 00131000=00077000= 104 ANYWHERE: MISSING RIGHT PARENTHESIS. 00132000=00078000= 105 ANYWHERE: MISSING LEFT PARENTHESIS. 00133000=00079000= @@ -147,7 +147,7 @@ ERROR NUMBER ROUTINE:ERROR MESSAGE 00025000 A CONCATENATE OPERATOR IS INCORRECT. 00146000=00092000= 114 DOTSYNTAX: EITHER THE SYNTAX OR THE RANGE OF THE LITERALS 00147000=00093000= FOR A PARTIAL WORD DESIGNATOR IS INCORRECT. 00148000=00094000= - 115 DEXP: THE EXPRESSION IS NOT OF DESIGNATIONAL TYPE 00149000=00095000= + 115 DEXP: THE EXPRESSION IS NOT OF DESIGNATIONAL TYPE. 00149000=00095000= 116 IFCLAUSE: MISSING THEN. 00150000=00096000= 117 BANA: MISSING LEFT BRAKET. 00151000=00097000= 118 BANA: MISSING RIGHT BRAKET. 00152000=00098000= @@ -210,7 +210,7 @@ ERROR NUMBER ROUTINE:ERROR MESSAGE 00025000 155 IFEXP: MISSING ELSE 00209000=00155000= 156 LISTELEMENT: A DESIGNATIONAL EXPRESSION MAY NOT BE A LIST 00210000=00156000= ELEMENT. 00211000=00157000= - 157 LISTELEMENT: A ROW DESIGNATOR MAY NOT BE A LISTELEMENT 00212000=00158000= + 157 LISTELEMENT: A ROW DESIGNATOR MAY NOT BE A LIST ELEMENT 00212000=00158000= 158 LISTELEMENT: MISSING RIGHT BRAKET IN GROUP OF ELEMENTS 00213000=00159000= 159 PROCSTMT: ILLEGAL USE OF PROCEDURE OR FUNCTION IDENTIFIER00214000 160 PURGE: DECLARED LABEL DOES NOT OCCUR. 00215000=00161000= @@ -256,7 +256,7 @@ ERROR NUMBER ROUTINE:ERROR MESSAGE 00025000 256 RELEASES: MISSING PARENTHESIS OR FILE IDENTIFIER IS NOT 00255000=00187000= A FORMAL PARAMETER. 00256000=00188000= 257 GOTOS,LABELS,OR JUMPS: LABEL SPECIFIED IS NOT ON THE SAME 00257000=00189000= - NEXT LEVEL AS A PRECEDING APPEARANCE OF THE 00258000=00190000= + NEST LEVEL AS A PRECEDING APPEARANCE OF THE 00258000=00190000= LABEL. 00259000=00191000= 258 LABELS: MISSING :. 00260000=00192000= 259 LABELS: LABEL APPEARS MORE THAN ONCE. 00261000=00193000= @@ -269,7 +269,7 @@ ERROR NUMBER ROUTINE:ERROR MESSAGE 00025000 266 IFS: MISSING THEN INIF STATEMENT. 00268000=00200000= 267 FREDFIX: THERE ARE GO TO STATEMENTS IN WHICH THE LABEL IS 00269000=00201000= UNDEFINED. 00270000=00202000= - 268 EMITO: A REPEAT INDEX >= 64 WAS SPECIFIED OR TOO MANY 00271000=00203000= + 268 EMITC: A REPEAT INDEX >= 64 WAS SPECIFIED OR TOO MANY 00271000=00203000= FORMAL PARAMETERS,LOCALS AND LABELS. 00272000=00204000= 269 TABLE: A CONSTANT IS SPECIFIED WHICH IS TOO LARGE 00273000=00205000= OR TOO SMALL. 00274000=00206000= @@ -289,7 +289,7 @@ ERROR NUMBER ROUTINE:ERROR MESSAGE 00025000 295 FILEATTRIBUTEHANDLER: FILE ATTRIBUTE MUST BE LEFT MOST 00288000=00211551= IN A LEFT PART LIST. 00289000=00211552= 300 FILLSTMT: THE IDENTIFIER FOLLOWING "FILL" IS NOT 00290000=00212000= - AN ARRAY IDENTIFER. 00291000=00213000= + AN ARRAY IDENTIFIER. 00291000=00213000= 301 FILLSTMT: MISSING "WITH" IN FILL STATEMENT. 00292000=00214000= 302 FILLSTMT: IMPROPER FILL ELEMENT. 00293000=00215000= 303 FILLSTMT: NON-OCTAL CHARACTER IN OCTAL FILL. 00294000=00216000= @@ -454,7 +454,7 @@ INTEGER 00505000 SYNTX ERR AT EOJ IF THIS IS NON-ZERO. MUST BE @R+25; 00520000=00502000= INTEGER 00525000=00503000= SAVETIME; COMMENT SAVE-FACTOR FOR CODE FILE, GIVEN BY MCP. 00530000 - IF COMPILER & GO =0.FOR SYNTAX, =-1. MUST BE AT R+26;00540000=00504000= + IF COMPILE & GO =0, FOR SYNTAX, =-1. MUST BE AT R+26;00540000=00504000= INTEGER 00545000=00504100= CARDNUMBER; % SEQ # OF CARD BEING PROCESSED. 00550000=00504100= INTEGER 00555000=00504150= @@ -1025,8 +1025,9 @@ PROCEDURE STREAMTRANSFERCHRQQ(MBASE, SBASE, N); 00800400 SBASE[SREG]:= BREG; 00803800 KREG:= 0; 00803900 SREG:= *+1; 00804000 - IF NC > 0 THEN 00804100 - BREG:= SBASE[SREG]; 00804200 + IF NC < 8 THEN % RELOAD B IF PARTIAL WORD LEFT 00804100 + IF NC > 0 THEN 00804150 + BREG:= SBASE[SREG]; 00804200 END; 00804300 END WHILE; 00804400 00804500 @@ -1087,8 +1088,9 @@ PROCEDURE STREAMSMEARLITQQ(SBASE, N, CHAR); 00807600 SBASE[SREG]:= BREG; 00810000 KREG:= 0; 00810100 SREG:= *+1; 00810200 - IF NC > 0 THEN 00810300 - BREG:= SBASE[SREG]; 00810400 + IF NC < 8 THEN % RELOAD B IF PARTIAL WORD LEFT 00810300 + IF NC > 0 THEN 00810350 + BREG:= SBASE[SREG]; 00810400 END; 00810500 END WHILE; 00810600 00810700 @@ -1128,8 +1130,9 @@ PROCEDURE STREAMTRANSFERLITQQ(SBASE, N, S); 00811500 SBASE[SREG]:= BREG; 00814100 KREG:= 0; 00814200 SREG:= *+1; 00814300 - IF NC > 0 THEN 00814400 - BREG:= SBASE[SREG]; 00814500 + IF NC < 8 THEN % RELOAD B IF PARTIAL WORD LEFT 00814400 + IF NC > 0 THEN 00814450 + BREG:= SBASE[SREG]; 00814500 END; 00814600 END WHILE; 00814700 00814800 @@ -1256,8 +1259,9 @@ PROCEDURE STREAMTRANSFERFILLQQ(SBASE, N); 00824300 SBASE[SREG]:= BREG; 00826900 KREG:= 0; 00827000 SREG:= *+1; 00827100 - IF NC > 0 THEN 00827200 - BREG:= SBASE[SREG]; 00827300 + IF NC < 8 THEN % RELOAD B IF PARTIAL WORD LEFT 00827200 + IF NC > 0 THEN 00827250 + BREG:= SBASE[SREG]; 00827300 END; 00827400 END 00827500 ELSE 00827600 @@ -1355,8 +1359,9 @@ PROCEDURE STREAMSETDBQQ(SBASE, N, TRUTH); 00835600 SBASE[SREG]:= BREG; 00838300 KREG:= 0; 00838400 SREG:= *+1; 00838500 - IF NC > 0 THEN 00838600 - BREG:= SBASE[SREG]; 00838700 + IF NC < 8 THEN % RELOAD B IF PARTIAL WORD LEFT 00838600 + IF NC > 0 THEN 00838650 + BREG:= SBASE[SREG]; 00838700 END; 00838800 END; 00838900 END WHILE; 00839000 @@ -1848,7 +1853,7 @@ COMMENT IF A NEW COMPILER-DEFINED OPTION IS ADDED, CHANGE USEROPINX 01565000 LISTPTOG = OPTIONWORD.[LISTPBIT:1] #, 01620000=01001290= MCPTOG = OPTIONWORD.[MCPBIT:1] #, 01625000=01001300= MERGETOG = OPTIONWORD.[MERGEBIT:1] #, 01630000=01001310= - NESTTOG = OPTIONWORD.[NESTBIT:1] #, 01635000=01001320= + NESTOG = OPTIONWORD.[NESTBIT:1] #, 01635000=01001320= NEWTOG = OPTIONWORD.[NEWBIT:1] #, 01640000=01001330= NEWINCL = OPTIONWORD.[NEWINCLBIT:1] #, 01645000=01001340= OMITTING = OPTIONWORD.[OMITBIT:1] #, 01650000=01001350= @@ -2036,7 +2041,7 @@ XLUN; % THIS VARIABLE CONTROLS THE ASSIGNING OF 02295000 OR RESERVED WORD. THE FIRST WORD OF A GIVEN ENTRY IS 02575000=01009000= THE INTERNAL CODE (OR ELBAT WORD AS IT IS USUALLY 02580000=01010000= CALLED). THE SECOND WORD CONTAINS THE FORWARD BIT (IN 02585000=01011000= - [46:1]) FOR PROCEDURES. THE LINK TO PREVIOUS ENTRY (IN 02590000=01012000= + [46:1]) FOR PROCEDURES, THE LINK TO PREVIOUS ENTRY (IN 02590000=01012000= [43:8]). THE NUMBER OF CHARACTORS IN THE ALPHA REPRESENTA-02595000=01013000= TION (IN [35:6]), AND THE FIRST 5 CHARACTERS OF ALPHA. 02600000=01014000= SUCCEDING WORDS CONTAIN THE REMAINING CHARACTORS OF ALPHA,02605000=01015000= @@ -2050,7 +2055,7 @@ XLUN; % THIS VARIABLE CONTROLS THE ASSIGNING OF 02295000 ALPHA, FILLED IN WITH ZEROS FROM THE RIGHT IF NEEDED. 02645000=01023000= THIS NUMBER IS CALLED THE SCRAMBLE NUMBER OR INDEX. 02650000=01024000= THE FIRST ROW OF INFO IS USED FOR OTHER PURPOSES. THE 02655000=01025000= - RESERVED WORDS OCCUPY THE SECOND ROW, IT IS FILLED DURING 02660000=01026000= + RESERVED WORDS OCCUPY THE SECOND ROW. IT IS FILLED DURING 02660000=01026000= INITIALIZATION; 02665000=01027000= 02670000=01028000= COMMENT INFO FORMAT 02675000=01028000= @@ -2065,7 +2070,7 @@ COMMENT INFO FORMAT 02675000 THE LINK FIELD OF THE ELBAT WORD IN INFO IS DIFFERENT FROM 02720000=01037000= THAT OF THE ENTRY IN ELBAT PUT IN BY TABLE.THE ENTRY IN ELBAT 02725000=01038000= POINTS TO ITS OWN LOCATION (RELATIVE) IN INFO. 02730000=01039000= - THE LINK IN INFO POINTS TO THE PREVIOUS ENTRY E.G.. THE 02735000=01040000= + THE LINK IN INFO POINTS TO THE PREVIOUS ENTRY E.G., THE 02735000=01040000= LINK FROM STACKHEAD WHICH THE CURRENT ENTRY REPLACED. 02740000=01041000= FOR SIMPLICITY,I WILL CONSIDER INFO TO BE A ONE DIMENSIONAL 02745000=01042000= ARRAY,SO THAT THE BREAKING UP OF THE LINKS INTO ROW AND COLUMN 02750000=01043000= @@ -2081,11 +2086,11 @@ COMMENT INFO FORMAT 02675000 THEN A IS ENTERED AS FOLLOWS:(ASSUME AN ELBAT WORD T HAS BEEN 02800000=01053000= CONSTRUCTED FOR A) 02805000=01054000= T.LINK:= S[L]. (WHICH IS ZERO AT FIRST). 02810000=01055000= - INFO[NEXTINFO]:=T, S[L]:=NEXTINFO. 02815000=01056000= + INFO[NEXTINFO]:=T. S[L]:=NEXTINFO. 02815000=01056000= NEXTINFO:=NEXTINFO+NUMBER OF WORDS IN THIS 02820000=01057000= ENTRY. 02825000=01058000= NOW S[L] POINTS TO THE ENTRY FOR A IN INFO AND THE ENTRY 02830000=01059000= - ITSELF CONTAINS THE STOP FLAG ZERO 02835000=01060000= + ITSELF CONTAINS THE STOP FLAG ZERO. 02835000=01060000= B IS ENTERED SIMILARLY TO A. 02840000=01061000= NOW S[L] POINTS TO THE ENTRY FOR B AND IT POINTS TO THE 02845000=01062000= ENTRY FOR A. 02850000=01063000= @@ -2097,9 +2102,9 @@ COMMENT INFO FORMAT 02675000 FORWARD.IT IS RESET AT THE TIME OF ITS ACTUAL 02880000=01069000= FULL DECLARATION. 02885000=01070000= PURPT =[43:8] THIS GIVES A DECREMENT WHICH GIVES THE RELATIVE 02890000=01071000= - INDEX TO THE PREVIOUS INFO ENTRY WHEN SUBSTRACTED 02895000=01072000= + INDEX TO THE PREVIOUS INFO ENTRY WHEN SUBTRACTED 02895000=01072000= FROM THE CURRENT ENTRY INDEX. 02900000=01073000= - [35:6] TELLS THE NUMBER OF CHARACTERS IN THE ENTRY,(<64) 02905000=01074000= + [35:6] TELLS THE NUMBER OF CHARACTERS IN THE ENTRY.(<64) 02905000=01074000= [29:30] CONTAINS THE FIRST FIVE ALPHA CHARACTERS OF THE ENTRY 02910000=01075000= AND SUCCEEDING WORDS CONTAIN ALL OVERFLOW IF NEEDED. 02915000=01076000= THESE WORDS CONTAIN 8 CHARACTERS EACH,LEFT JUSTIFIED. 02920000=01077000= @@ -2109,7 +2114,7 @@ COMMENT INFO FORMAT 02675000 I+1 = OP6SYMBO (P DEPENDS ON PREVIOUS ENTRY) 02940000=01081000= I+2 = L 02945000=01082000= I+3 = ELBATWRD (MADE FOR X) 02950000=01083000= - I+4 = O31X 02955000=01084000= + I+4 = 031X 02955000=01084000= THIS SHOWS THAT INFO[I-P] WOULD POINT TO THE BEGINNING OF 02960000=01085000= THE ENTRY BEFORE SYMBOL, AND 02965000=01086000= INFO[I+3-3] POINTS TO THE ENTRY FOR SYMBOL. 02970000=01087000= @@ -2138,7 +2143,7 @@ COMMENT INFO FORMAT 02675000 TO BE ADDED TO THE SUBSCRIPT IN INDEXING OR 03085000=01110000= SUBTRACTED. 03090000=01111000= [12:11] =11 BIT ADDRESS OF LOWER BOUND,IF THE LOWER BOUND 03095000=01112000= - REQUIRES A PRT OR STACK CELL.OTHERWISE THE BIT 03100000=01113000= + REQUIRES A PRT OR STACK CELL,OTHERWISE THE BIT 03100000=01113000= 35 IS IGNORED AND THE NEXT TEN BITS([11:10]) 03105000=01114000= REPRESENT THE ACTUAL VALUE OF THE LOWER BOUND 03110000=01115000= [1:2] =00 OR 10 DEPENDING ON WHETHER THE [12:11] VALUE 03115000=01116000= @@ -2147,7 +2152,7 @@ COMMENT INFO FORMAT 02675000 THE FIRST WORD OF ADDITIONAL INFO CONTAINS THE NUMBER OF 03130000=01119000= PARAMETERS [7:8] 03135000=01120000= IF A STREAM PROCEDURE THEN THIS WORD CONTAINS ALSO IN 03140000=01121000= - [34:11] ENDING PRT ADDRESS FOR LABELS. 03145000=01122000= + [34:11] ENDING PRT ADDRESS FOR LABELS, 03145000=01122000= [40:6] NO OF LABELS REQUIRING PRT ADDRESSES, AND [46:6] NUMBER 03150000=01123000= OF LOCALS. 03155000=01124000= SUCCEEDING WORDS (ONE FOR EACH FORMAL PARAMETER,IN ORDER 03160000=01125000= @@ -2189,7 +2194,7 @@ COMMENT INFO FORMAT 02675000 LINKR = [12:5] #, 03340000=01156000= LINKC = [7:8] #; 03345000=01156000= 03350000=01157000= - COMMENT THESE DEFINES ARE USED TO PICK APART THE ELBAT WORD, 03355000=01157000= + COMMENT THESE DEFINES ARE USED TO PICK APART THE ELBAT WORD. 03355000=01157000= MON IS THE BIT WHICH IS TURNED ON IF: 03360000=01158000= 1. THE QUANTITY IS TO BE MONITORED, OR 03365000=01158100= 2. THE QUANTITY IS A PARAMETRIC DEFINE AND NOT 03370000=01158200= @@ -2198,7 +2203,7 @@ COMMENT INFO FORMAT 02675000 QUANTITY. 03385000=01160000= FORMAL IS THE BIT WHICH IS ON IF THE QUANTITY IS A FORMAL 03390000=01161000= PARAMETER. 03395000=01162000= - V0 IS THE VALUE-OWN BIT. IF FORMAL = 1 THEN THE BIT 03400000=01163000= + VO IS THE VALUE-OWN BIT. IF FORMAL = 1 THEN THE BIT 03400000=01163000= DISTINGUISHES VALUE PARAMETERS FROM OTHERS. IF 03405000=01164000= FORMAL = 0 THEN THE BIT DISTINGUISHES OWN VARIABLES 03410000=01165000= FROM OTHERS. 03415000=01166000= @@ -2214,7 +2219,7 @@ COMMENT INFO FORMAT 02675000 NEEDED, RELATIVE TO THE LOCATION IN INFO. 03465000=01170000= LINK CONTAINS A LINK TO THE LOCATION IN INFO IF THE 03470000=01171000= QUANTITY LIES IN ELBAT, OTHERWISE IT LINKS TO THE 03475000=01172000= - NEXT ITEM IN THE STACK, ZERO IS AN END FLAG. 03480000=01173000= + NEXT ITEM IN THE STACK. ZERO IS AN END FLAG. 03480000=01173000= LINKR AND LINKC ARE SUBDIVISIONS OF LINK.; 03485000=01174000= 03490000=01175000= COMMENT CLASSES FOR ALL QUANTITIES - OCTAL CLASS IS IN COMMENT; 03495000=01175000= @@ -2227,8 +2232,8 @@ COMMENT INFO FORMAT 02675000 LISTID = 04 #, COMMENT 004; 03530000=01181000= FRMTID = 05 #, COMMENT 005; 03535000=01182000= SUPERFRMTID = 06 #, COMMENT 006; 03540000=01183000= - FILEID = 07 #, COMMENT 006; 03545000=01184000= - SUPERFILEID = 08 #, COMMENT 007; 03550000=01185000= + FILEID = 07 #, COMMENT 007; 03545000=01184000= + SUPERFILEID = 08 #, COMMENT 010; 03550000=01185000= SWITCHID = 09 #, COMMENT 011; 03555000=01186000= PROCID = 10 #, COMMENT 012; 03560000=01187000= INTRNSICPROCID = 03565000=01188000= @@ -2262,7 +2267,7 @@ COMMENT INFO FORMAT 02675000 COMMENT CLASSES FOR ALL DECLARATORS; 03705000=01213000= DECLARATORS = 35 #, COMMENT 043; 03710000=01214000= 03715000=01215000= - COMMENT CLASSES FOR STATEMENT BEGINNERS; 03720000=01215000= + COMMENT CLASSES FOR STATEMENT BEGINNERS 03720000=01215000= READV = 36 #, COMMENT 044; 03725000=01216000= WRITEV = 37 #, COMMENT 045; 03730000=01217000= SPACEV = 38 #, COMMENT 046; 03735000=01218000= @@ -2373,8 +2378,8 @@ COMMENT INFO FORMAT 02675000 ALPHA ARRAY 04260000=01304000= ACCUM[0:10]; 04265000=01304000= COMMENT ACCUM HOLDS THE ALPHA AND CHARACTER COUNT OF THE LAST 04270000=01305000= - SCANNER ITEM IN A FORM COMPATIBLE WITH ITS APPEARANCE 04275000=01306000= - IN INFO. THAT IS ACCUM[1] = 00NAAAAA, ACCUM[I] , I> 1. 04280000=01307000= + SCANNED ITEM IN A FORM COMPATIBLE WITH ITS APPEARANCE 04275000=01306000= + IN INFO. THAT IS ACCUM[1] = 00NAAAAA, ACCUM[I] , I> 1, 04280000=01307000= HAS ANY ADDITIONAL CHARACTERS. ACCUM[0] IS USED FOR 04285000=01308000= THE ELBAT WORD BY THE ENTER ROUTINES; 04290000=01309000= ARRAY 04295000=01310000= @@ -2427,7 +2432,7 @@ COMMENT INFO FORMAT 02675000 ARRAY REFERENCE 04540000 SBUFF[0]; % CURRENT SOURCE INPUT BUFFER 04540100 COMMENT FCR CONTAINS ABSOLUTE ADDRESS OF THE FIRST CHARACTOR OF 04545000=01332000= - THE CARD IMAGE CURRENTLY BEING SCANNED. NCR THE ADDRESS 04550000=01333000= + THE CARD IMAGE CURRENTLY BEING SCANNED, NCR THE ADDRESS 04550000=01333000= OF THE NEXT CHARACTOR TO BE SCANNED, AND LCR THE LAST 04555000=01334000= CHARACTOR (COLUMN 73). CLCR CONTAIN ADDRESS OF 04560000=01335000= THE LAST CHARACTER IN THE CARD BUFFERS; 04565000=01336000= @@ -2556,18 +2561,18 @@ COMMENT THE CONTENTS OF RELATIVE DISK SEGMENT ZERO OF THE CODE FILE ARE:04950000 COMMENT THESE VARIABLES ARE USED FOR TEMPORARY STORAGE; 05200000=01385000= INTEGER 05205000=01386000= RESULT; 05210000=01386000= - COMMENT THIS VARIALE IS USED FOR A DUAL PURPOSE BY THE TABLE 05215000=01387000= + COMMENT THIS VARIABLE IS USED FOR A DUAL PURPOSE BY THE TABLE 05215000=01387000= ROUTINE AND THE SCANNER. THE TABLE ROUTINE USES THIS 05220000=01388000= VARIABLE TO SPECIFY SCANNER OPERATIONS AND THE SCANNER 05225000=01389000= USES IT TO INFORM THE TABLE ROUTINE OF THE ACTION TAKEN; 05230000=01390000= INTEGER 05235000=01391000= LASTUSED; 05240000=01391000= COMMENT LASTUSED IS A VARIABLE THAT CONTROLS THE ACTION OF 05245000=01392000= - READACARD. THE ROUTINE WHICH READS CARDS AND INITIALIZES 05250000=01393000= + READACARD, THE ROUTINE WHICH READS CARDS AND INITIALIZES 05250000=01393000= OR PREPARES THE CARD FOR THE SCANNER. 05255000=01394000= LASTUSED LAST CARD READ FROM 05260000=01394500= -------- ------------------- 05265000=01394600= - 1 CARD READ ONLY, NO TAPE. 05270000=01395000= + 1 CARD READER ONLY, NO TAPE. 05270000=01395000= 2 CARD READER, TAPE AND CARD MERGE. 05275000=01396000= 3 TAPE, TAPE AND CARD MERGE. 05280000=01397000= 4 INITIALIZATION ONLY, CARD ONLY. 05285000=01398000= @@ -2576,7 +2581,7 @@ COMMENT THE CONTENTS OF RELATIVE DISK SEGMENT ZERO OF THE CODE FILE ARE:04950000 ; 05300000=01398300= BOOLEAN 05305000=01399000= LINKTOG; 05310000=01399000= - COMMENT LINKTOG IS FALSE IF THE LAST THING EMITTED IS A LINK. 05315000=01400000= + COMMENT LINKTOG IS FALSE IF THE LAST THING EMITTED IS A LINK, 05315000=01400000= OTHERWISE IT IS TRUE; 05320000=01401000= INTEGER 05325000=01402000= LEVEL, 05330000=01402000= @@ -2584,7 +2589,7 @@ COMMENT THE CONTENTS OF RELATIVE DISK SEGMENT ZERO OF THE CODE FILE ARE:04950000 SUBLEVEL, 05340000=01402000= MODE; 05345000=01402000= COMMENT THESE VARIABLES ARE MAINTAINED BY THE BLOCK ROUTINE TO KEEP 05350000=01403000= - TRACK OF LEVELS OF DEFINITION. LEVEL GIVES THE DEPTH OF 05355000=01404000= + TRACK OF LEVELS OF DEFINITION, LEVEL GIVES THE DEPTH OF 05355000=01404000= NESTING IN DEFINITION. WHERE EACH BLOCK AND EACH PROCEDURE05360000=01405000= GIVES RISE TO A NEW LEVEL. SUBLEVEL GIVES THE LEVEL OF 05365000=01406000= THE PARAMETERS OF THE PROCEDURE CURRENTLY BEING COMPILED. 05370000=01407000= @@ -2628,13 +2633,13 @@ COMMENT THE CONTENTS OF RELATIVE DISK SEGMENT ZERO OF THE CODE FILE ARE:04950000 FA = 5 #, 05560000=01420500= FI = 6 #, 05565000=01420500= FIO = 7 #; 05570000=01420500= - COMMENT THESE DEFINES ARE USED WHEN CALLING THE VARIABLE ROUTINE, 05575000=01421000= + COMMENT THESE DEFINES ARE USED WHEN CALLING THE VARIABLE ROUTINE. 05575000=01421000= THEIR PURPOSES IS TO TELL VARIABLE WHO IS CALLING. 05580000=01422000= THEIR MEANING IS: 05585000=01423000= - FS MEANS FROM STATEMENT. 05590000=01424000= - FP MEANS FROM PRIMARY. 05595000=01425000= - FL MEANS FROM LIST. 05600000=01426000= - FR MEANS FROM FOR. 05605000=01427000= + FS MEANS FROM STATEMENT, 05590000=01424000= + FP MEANS FROM PRIMARY, 05595000=01425000= + FL MEANS FROM LIST, 05600000=01426000= + FR MEANS FROM FOR, 05605000=01427000= FIO MEANS FROM IODEC. 05610000=01427250= FA MEANS FROM ACTUALPARAPART. 05615000=01427500= FI MEANS FUNNY CALL FROM STATUS (IMPFUN); 05620000=01427600= @@ -2803,7 +2808,7 @@ COMMENT THE CONTENTS OF RELATIVE DISK SEGMENT ZERO OF THE CODE FILE ARE:04950000 CODE(KIND=DISK, MAXRECSIZE=30, FRAMESIZE=48, 06475000=01556200= AREAS=20, AREASIZE=CHUNK, FILEUSE=OUT, PROTECTION=SAVE); 06475100 FILE 06480000=01557000= - CARD(KIND=READER, DEPENDENTSPECS, FILEUSE=IN); 06485000=01557000= + CARD(KIND=DISK, DEPENDENTSPECS, FILEUSE=IN); 06485000=01557000= FILE 06490000=01559000= LINE(KIND=PRINTER, MAXRECSIZE=20, FRAMESIZE=48, FILEUSE=OUT); 06492000 ARRAY 06495000=01559010= @@ -2928,8 +2933,8 @@ COMMENT THE CONTENTS OF RELATIVE DISK SEGMENT ZERO OF THE CODE FILE ARE:04950000 PURPT = [43:8] #, 07690000=01628000= SECRET = 2 #; 07695000=01628000= 07700000=01629000= - COMMENT THESE DEFINES GIVE THE NAMES OF THE WORD MODE OPERATORS. THE 07705000=01629000= - NUMBERS REFERS TO THE APPROPRIATE SECTION OF THE PRODUCT SPECS. THE07710000=01630000= + COMMENT THESE DEFINES GIVE THE NAMES OF THE WORD MODE OPERATORS. THE 07705000=01629000= + NUMBERS REFER TO THE APPROPRIATE SECTION OF THE PRODUCT SPECS. THE 07710000=01630000= FULL NAME IS ALSO GIVEN; 07715000=01631000= DEFINE 07720000=01632000= ADD = 16#, COMMENT (0101) 7.4.2.1 ADD; 07725000=01633000= @@ -3526,14 +3531,14 @@ COMMENT EQUAL COMPARES COUNT CHARACTERS LOCATED AT A AND B FOR 12665000 BEGIN 12785000=02066500= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%12790000=02067000= COMMENT "SCNN" IS THE STREAM PROCEDURE WHICH DOES THE ACTUAL SCANNING. 12795000=02067000= - IT IS DRIVEN BY A SMALL WORD MODE PROCEDURE CALLED "SCANNER". 12800000=02067500= + IT IS DRIVEN BY A SMALL WORD MODE PROCEDURE CALLED "SCANNER", 12800000=02067500= WHICH CHECKS FOR A QUANTITY BEING BROKEN ACROSS A CARD. "SCNN" 12805000=02068000= IS CONTROLLED BY A VARIABLE CALLED "RESULT". "SCNN" ALSO 12810000=02068500= - INFORMS THE WORLD OF ITS ACTION BY MEANS OF THE SAME VARIABLE. 12815000=02069000= + INFORMS THE WORLD OF ITS ACTION BY MEANS OF THE SAME VARIABLE, 12815000=02069000= HENCE THE VARIABLE "RESULT" IS PASSED BY BOTH NAME AND VALUE. 12820000=02069500= THE MEANING OF "RESULT" AS INPUT IS: 12825000=02070000= VALUE MEANING 12830000=02070500= - ===== ========================================= 12835000=02071000= + ===== ========================================== 12835000=02071000= 0 INITIAL CODE - DEBLANK AND START TO FETCH THE 12840000=02071500= NEXT QUANTITY. 12845000=02072000= 1 CONTINUE BUILDING AN IDENTIFIER (INTERRUPTED BY 12850000=02072500= @@ -3551,7 +3556,7 @@ COMMENT "SCNN" IS THE STREAM PROCEDURE WHICH DOES THE ACTUAL SCANNING. 12795000 7 DEBLANK ONLY. 12910000=02078500= THE MEANING OF "RESULT" AS OUTPUT IS: 12915000=02079000= VALUE MEANING 12920000=02079500= - ===== ======================================= 12925000=02080000= + ===== ======================================== 12925000=02080000= 1 AN IDENTIFIER WAS BUILT. 12930000=02080500= 2 A SPECIAL CHARACTER WAS OBTAINED. 12935000=02081000= 3 A NUMBER (INTEGER) WAS BUILT. 12940000=02081500= @@ -3685,12 +3690,12 @@ COMMENT IF WE ARRIVE AT ERROR WE HAVE MORE THAN 63 CHARACTERS 13505000 END; 13535500 GO ERROR; 13540000=02119000= EXIT: 13545000=02120000= - ST1:= TALLY; % "ST1" CONTAINS THE NUMBER OF CHARACTERS WE ARE 13550000=02120000= + ST1:= TALLY; % "ST1" CONTAINS NUMBER OF CHARACTERS WE ARE 13550000=02120000= % GOING TO MOVE INTO THE "ACCUMULATOR". 13555000=02120500= STREAMINCTALLY(COUNTV); 13560000=02121000= ST2:= TALLY; 13565000=02121000= COUNT:= ST2; 13570000=02121500= -COMMENT THIS CODE UPDATED "COUNT'; 13590000=02122000= +COMMENT THIS CODE UPDATED "COUNT"; 13590000=02122000= STREAMSETDI(ACCUM, AX); 13595000=02122500= STREAMSETLOCSI(ST2); 13600000=02122500= STREAMSKIPSI(+5); 13600100=02122500= @@ -3713,7 +3718,7 @@ L: SCNN(SBUFF, NCR, COUNT, ACCUM, 1, 63-COUNT, RESULT, RESULT, COUNT, 13700000 IF NCR = LCR THEN 13710000=02129500= BEGIN 13715000=02130000= READACARD; 13720000=02130500= - GO TO L; % GO DIRECTLY TO L, DO NOT PASS GO. 13760000=02135500= + GO TO L; % GO DIRECTLY TO L, DO NOT PASS GO, 13760000=02135500= % DO NOT COLLECT $200. 13765000=02136000= END; 13770000=02136500= END SCANNER; 13775000=02137000= @@ -3805,7 +3810,7 @@ COMMENT COMPARE COMPARES SEQUENCE NUMBERS OF TAPE AND CARD. IF 14085000 IF STREAMCOMPAREEQL(8) THEN 14165000=02189500= TALLY:= 2 14170000=02189750= END; 14175000=02189750= - COMPARE:= TALLY; 14180000=02190000= + COMPARE:= TALLY 14180000=02190000= END COMPARE; 14185000=02190250= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%14186000 PROCEDURE OUTPUTSOURCE; 14190000=02190500= @@ -3968,7 +3973,7 @@ COMPAR: 15540000 ; 15545000=02224500= EXIT: 15565000=02225250= NCR:= FCR:= LCR-9; COMMENT SETS UP NCR AND FCR; 15570000=02225250= - IF CHECKTOG AND EXAMIN(SBUFF, FCR) ^= 6"$" THEN %$=CARDS DON"T COUNT15585000=02225750= + IF CHECKTOG AND EXAMIN(SBUFF, FCR) ^= 6"$" THEN %$-CARDS DON"T COUNT15585000=02225750= IF COMPARE(INFO[LASTSEQROW,*], LASTSEQUENCE, SBUFF, LCR) = 1 THEN 15590000=02226000= IF SEQERRTOG THEN 15595000=02226250= BEGIN 15600000=02226250= @@ -4193,7 +4198,7 @@ COMMENT DOLLARCARD HANDLES THE COMPILER CONTROL CARDS. 17235000 THE NUMBER OF USER DEFINED OPTIONS ALLOWED CAN BE 17330000=02301000= CHANGED BY CHANGING THE DEFINE "OPARSIZE". 17335000=02302000= THE VARIABLE "OPTIONWORD" CONTAINS THE CURRENT TRUE OR FALSE 17340000=02303000= - SETTING OF ALL THE COMPILER-DEFINED OPTIONS, ONE BIT PER 17345000=02304000= + SETTING OF ALL OF THE COMPILER-DEFINED OPTIONS, ONE BIT PER 17345000=02304000= OPTION. 17350000=02305000= ; 17355000=02306000= BOOLEAN PROCEDURE FINDOPTION(BIT); 17360000=02307000= @@ -4265,7 +4270,7 @@ FOUND: 17435000 OPTIONWORD:= OPTIONWORD & TRUE[XBIT:1]; 17685000=02335000= GO ALONG; 17690000=02336000= XMODE2: 17695000=02337000= - % RESET. 17700000=02337000= + % RESET; 17700000=02337000= OPTIONS[OPINX+1]:= REAL(FALSE & SETTING[46:45:46]); 17705000=02338000= IF XBIT < USEROPINX THEN 17710000=02339000= OPTIONWORD:= OPTIONWORD & FALSE[XBIT:1]; 17715000=02339000= @@ -4614,8 +4619,9 @@ WHATISIT: 19710000 BEGIN 19765000=02589000= SKAN; 19770000=02590000= IF RESULT = 3 THEN 19775000=02591000= - ADDVALUE:= CONV(ACCUM, 1, 0, ACCUM[1].[35:6]); 19780000=02592000= - FLAG(600); % NUMBER EXPECTED. 19785000=02593000= + ADDVALUE:= CONV(ACCUM, 1, 0, ACCUM[1].[35:6]) 19780000=02592000= + ELSE 19784000=02593000= + FLAG(600); % NUMBER EXPECTED. 19785000=02593000= END; 19790000=02594000= GO SKANAGAIN; 19795000=02595000= END; 19800000=02596000= @@ -4642,10 +4648,10 @@ COMMENT TABLE IS THE ROUTINE THAT MOST CODE IN THE COMPILER 19895000 THE RESULT RETURNED IS THE CLASS OF THE ITEM DESIRED. 19905000=02607000= TABLE MAINTAINS THE VARIABLES I AND NXTELBT AND THE ARRAY 19910000=02608000= ELBAT. ELBAT AND I ARE PRINCIPAL VARIABLES USED FOR 19915000=02609000= - COMMUNICATION BETWEEN TABLE AND THE OUTSIDE WORLD. NXTELBT 19920000=02610000= - IS ALMOST EXCLUSIVELY USED BY TABLE. ALTHOUGH AN OCCASION- 19925000=02611000= + COMUNICATION BETWEEN TABLE AND THE OUTSIDE WORLD. NXTELBT 19920000=02610000= + IS ALMOST EXCLUSIVELY USED BY TABLE, ALTHOUGH AN OCCASION- 19925000=02611000= AL OTHER USE IS MADE IN ORDER TO FORGET THAT SOMETHING WAS 19930000=02612000= - SCANNED. (SEE. FOR EXAMPLE, COMPOUNDTAIL). FOR FURTHER 19935000=02613000= + SCANNED. (SEE, FOR EXAMPLE, COMPOUNDTAIL). FOR FURTHER 19935000=02613000= GENERAL DISCUSSION SEE THE DECLARATION OF THESE VARIABLES. 19940000=02614000= THE PARAMETER P IS THE ACTUAL INDEX OF THE QUANTITY 19945000=02615000= DESIRED (USUALLY I-1,I, OR I+1). 19950000=02616000= @@ -5386,7 +5392,7 @@ COMMENT LOOK FOR BOOLEAN OPERATORS, THEN OPTIONS; 23365000 IF Q = 6"3AND00" THEN 23390000=02964500= ANDOP 23395000=02965000= ELSE 23400000=02965000= - IF Q = 6"3OR000" THEN 23405000=02965000= + IF Q = 6"2OR000" THEN 23405000=02965000= OROP 23410000=02965500= ELSE 23415000=02965500= IF Q = 6"3EQV00" THEN 23420000=02965500= @@ -5828,7 +5834,7 @@ COMMENT#################################################################23780000 EMIT(1 & OPERATOR[11:9:10]); 25600000=04007000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%25605000=04007000= 25610000=04008000= - COMMENT EMITC IS PRIMARILY FOR USE BY STRMSTMT TO EMIT CHARACTER MODE 25615000=04008000= + COMMENT EMITC IS PRIMARILY FOR USE BY STRMSTMT TO EMIT CHARACTOR MODE 25615000=04008000= OPERATORS. HOWEVER IT ALSO HANDLES DIA, DIB, AND TRB; 25620000=04009000= PROCEDURE EMITC(REPEAT, OPERATOR); 25625000=04010000= VALUE 25630000=04010000= @@ -5966,7 +5972,7 @@ COMMENT#################################################################23780000 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%26290000=04079000= 26295000=04080000= COMMENT ADJUST ADJUST L TO THE BEGINING OF A WORD AND FILLS IN THE 26300000=04080000= - INERVENING SPACE WITH NOPS, IT CHECKS STREAMTOG TO DECIDE 26305000=04081000= + INERVENING SPACE WITH NOPS. IT CHECKS STREAMTOG TO DECIDE 26305000=04081000= WHICH SORT OF NOP TO USE; 26310000=04082000= PROCEDURE ADJUST; 26315000=04083000= BEGIN 26320000=04084000= @@ -6081,7 +6087,7 @@ COMMENT#################################################################23780000 END; 26765000=04138000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%26766000 COMMENT EMITWORD PLACES THE PARAMETER,"WORD",INTO EDOC. IF 26770000=04139000= - DEBUGGING IS REQUIRED. "L" AND "WORD" ARE OUTPUT ON 26775000=04140000= + DEBUGGING IS REQUIRED, "L" AND "WORD" ARE OUTPUT ON 26775000=04140000= THE PRINTER FILE IN OCTAL FORMAT. ; 26780000=04141000= PROCEDURE EMITWORD(WORD); 26785000=04142000= VALUE 26790000=04142000= @@ -6107,7 +6113,7 @@ COMMENT#################################################################23780000 COMMENT CONSTANTCLEAN IS CALLED AFTER AN UNCONDITIONAL BRANCH HAS 26890000=04153000= BEEN EMITTED. IF ANY CONSTANTS HAVE BEEN ACCUMULATED BY 26895000=04154000= EMITNUM IN INFO[0,*], CONSTANTCLEAN WILL FIX THE CHAIN 26900000=04155000= - OF C-RELATIVE OPDC S LEFT BY EMITNUM, IF C-RELATIVE 26905000=04156000= + OF C-RELATIVE OPDC S LEFT BY EMITNUM. IF C-RELATIVE 26905000=04156000= ADDRESSING IS IMPOSSIBLE (I.E. THE ADDRESS 26910000=04157000= IF GREATER THAN 127 WORDS) THEN THE CONSTANT ALONG WITH 26915000=04158000= THE 1ST LINK OF THE OPDC CHAIN IS ENTERED IN INFO. 26920000=04159000= @@ -6157,10 +6163,10 @@ COMMENT#################################################################23780000 END; 27140000=04190000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%27145000=04190000= COMMENT EMITNUM HANDLES THE EMISSION OF CODE FOR CONSTANTS,BOTH 27150000=04191000= - EXPLICIT AND IMPLICIT, IN EVERY CASE,EMITNUM WILL 27155000=04192000= + EXPLICIT AND IMPLICIT. IN EVERY CASE,EMITNUM WILL 27155000=04192000= PRODUCE CODE TO GET THE DESIRED CONSTANT ON TOP OF 27160000=04193000= THE STACK. IF THE NUMBER IS A LITERAL A SIMPLE LITC 27165000=04194000= - SYLLABLE IS PRODUCED, HOWEVER,NON-LITERALS ARE KEPT 27170000=04195000= + SYLLABLE IS PRODUCED. HOWEVER,NON-LITERALS ARE KEPT 27170000=04195000= IN THE ZERO-TH ROW OF INFO WITH THE SYLLABLE 27175000=04196000= POSITION,L. THE FIRST EMITNUM ON A PARTICULAR 27180000=04197000= CONSTANT CAUSES THE VALUES OF L AND THE CONSTANT 27185000=04198000= @@ -6252,7 +6258,7 @@ L: SEARCH:= Q[I+1]; 27555000 COMMENT PACK IS A STREAM PROCEDURE WHICH INSERTS THE SYLLABLE 27615000=04265000= INTO THE EDOC ARRAY. THE SPECIFIC ELEMENT OF EDOC 27620000=04266000= IS PRECISILY = EDOC[(L DIV 4) DIV 128,(< DIV 4)MOD 128] 27625000=04267000= - SYLLABLE POSITION=(L MOD 4 ). WHERE L IS THE SYLLABLE 27630000=04268000= + SYLLABLE POSITION=(L MOD 4 ), WHERE L IS THE SYLLABLE 27630000=04268000= NUMBER RELATIVE TO THE BEGINNING OF THE SEGMENT; 27635000=04269000= PROCEDURE PACK(WORD, WX, POSITION, SYLLABLE); 27640000=04270000= VALUE 27645000=04271000= @@ -6325,7 +6331,7 @@ L: SEARCH:= Q[I+1]; 27555000 COMMENT EMITD EMITS THE DIA,DIB,TRB SEQUENCE OF CODE. THE 27935000=04305000= PREVIOUS SETTING OF THE G-H AND K-V REGISTERS IS COMPARED 27940000=04306000= THE CURRENT . IF THE G-H,K-V OR BOTH ARE ALREADY SET THEN 27945000=04307000= - THE APPROIATE SYLLABLES(S) ARE OMITTED 27950000=04308000= + THE APPROIATE SYLLABLE(S) ARE OMITTED 27950000=04308000= IF 0 BITS ARE TO BE TRANSFERED THEN NO SYLLABLES ARE 27955000=04309000= EMITTED ; 27960000=04310000= PROCEDURE EMITD(A, B, T); 27965000=04311000= @@ -6628,7 +6634,7 @@ EXIT: 28625000 LABEL 29430000=05101100= ENDOFITALL; 29435000=05101100= 29440000=05102000= -COMMENT ERR. IS THE SAME AS FLAG EXCEPT THAT IT MAKES AN ATTEMPT TO 29445000=05102000= + COMMENT ERR,IS THE SAME AS FLAG EXCEPT THAT IT MAKES AN ATTEMPT TO 29445000=05102000= RECOVER FROM ERROR SITUATIONS BY SEARCHING FOR A 29450000=05103000= SEMICOLON, END, OR BEGIN; 29455000=05104000= PROCEDURE ERR(ERRNUM); 29460000=05105000= @@ -6662,8 +6668,8 @@ COMMENT ERR. IS THE SAME AS FLAG EXCEPT THAT IT MAKES AN ATTEMPT TO 29445000 ELBATWORD; 29600000=05113000= BEGIN 29605000=05114000= IF MODE >= 2 THEN 29610000=05115000= - IF GTI1:= ELBATWORD.LVL >= FRSTLEVEL THEN 29615000=05116000= - IF GTI1 < SUBLEVEL THEN 29620000=05117000= + IF GT1:= ELBATWORD.LVL >= FRSTLEVEL THEN 29615000=05116000= + IF GT1 < SUBLEVEL THEN 29620000=05117000= IF ELBATWORD.[38:2] ^= 1 THEN 29625000=05119000= BEGIN 29630000=05119000= FLAG(101); 29635000=05119000= @@ -7054,7 +7060,7 @@ EXIT: 31300000 RANGE:= ELCLASS >= LOWER AND ELCLASS <= UPPER; 31450000=05304000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%31455000=05304000= 31460000=05305000= - COMMENT GET OBTAINS A SYLLABLE FROM EDOC. THE ARRAY INTO WHICH CODE IS 31465000=05305000= + COMMENT GET OBTAINS A SYLLABLE FROM EDOC, THE ARRAY INTO WHICH CODE IS 31465000=05305000= EMITTED; 31470000=05306000= INTEGER PROCEDURE GET(L); 31475000=05307000= VALUE 31480000=05307000= @@ -7476,9 +7482,9 @@ EXIT: 32735000 COMPILED. IT ALSO HANDLES THE CASE OF A CONCATENATE 33440000=06026000= WHERE ACTUALPARAPART CAUSED THE VARIABLE ROUTINE TO 33445000=06027000= COMPILE ONLY PART OF A PRIMARY. MOST OF THE WORK OF 33450000=06028000= - SIMPARITH IS DONE BY ARITHCOMP. AN ARTIFIAL ROUTINE 33455000=06029000= + SIMPARITH IS DONE BY ARITHCOMP, AN ARTIFIAL ROUTINE 33455000=06029000= WHICH DOES THE HIERARCHY ANALYSIS USING RECURSION. 33460000=06030000= - ARITHOCMP IS A SUBROUTINE ONLY TO GET THIS RECURSION; 33465000=06031000= + ARITHCOMP IS A SUBROUTINE ONLY TO GET THIS RECURSION; 33465000=06031000= PROCEDURE SIMPARITH; 33470000=06032000= BEGIN 33475000=06033000= WHILE ELCLASS = AMPERSAND DO 33480000=06035000= @@ -9819,7 +9825,7 @@ EXIT: 45090000 END RELSESTMT; 45095000=07472250= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%45100000=07472250= 45105000=07481000= - COMMENT DOTSTMT HANDLES THE DO STATEMENT; 45110000=07481000= + COMMENT DOSTMT HANDLES THE DO STATEMENT; 45110000=07481000= PROCEDURE DOSTMT; 45115000=07482000= BEGIN 45120000=07483000= INTEGER 45125000=07483000= @@ -11356,7 +11362,7 @@ EXIT: 50860000 STMT; 52710000=08163000= IF NUMLE THEN 52715000=08165000= BEGIN 52720000=08165000= - EMITV(RETURNSTORE+FOOT); 52725000=08166000= + EMITV(RETURNSTORE:= FOOT); 52725000=08166000= EMITO(BBW) 52730000=08166000= END 52735000=08167000= ELSE 52740000=08167000= @@ -13435,7 +13441,7 @@ COMMENT START FILLING TABLES NEEDED TO COMPILE A PROGRAM; 62890000 3"0737461304707100", 3"0751137556607072", 3"0761367512350710", 63005000=09080000= 3"0771665435043073"; 63010000=09080000= 63015000=09081000= -COMMENT THIS IS THE FULL FOR THE SECOND ROW OF INFO: 63020000=09081000= +COMMENT THIS IS THE FILL FOR THE SECOND ROW OF INFO: 63020000=09081000= THE FIRST ITEMS ARE STREAM RESERVED WORDS, 63025000=09082000= THEN ORDINARY RESERVED WORDS, 63030000=09083000= THEN INTRINSIC FUNCTIONS; 63035000=09084000= @@ -18667,7 +18673,7 @@ COMMENT 201 VARIABLE- A PARTIAL WORD DESIGNATOR IS NOT THE * 88950000 IF FIRST SUBSCRIPT THEN VN ELSE CDC,EXP, 89220000=15176000= XCH,~. 89225000=15177000= 6. ADD THE SEQUENCE: 89230000=15178000= - IF FIRST SUBSCRIPT THEN VN ELSE CDC,DUP,LOD. 89235000=15179000= + IF FIRST SUBSCRIPT THEN VN ELSE CDC,DUP,LOD, 89235000=15179000= EXP,T, XCH,~. 89240000=15180000= EXP,T,~,ZEROL,ETC. HAVE SAME MEANINGS AS DEFINED IN 89245000=15181000= SIMPLE VARIABLE BLOCK. ; 89250000=15182000= @@ -18811,7 +18817,7 @@ COMMENT **** MONITOR FUNCTION M1 GOES HERE ; 89760000 END; 89940000=15256000= 89945000=15257000= COMMENT 203 VARIABLE- THE NUMBER OF SUBSCRIPTS USED IN A ROW * 89950000=15257000= - ROW DESIGNATOR DOES NOT MATCH THE ARRAY * 89955000=15258000= + ROW DESIGNATER DOES NOT MATCH THE ARRAY * 89955000=15258000= DECLARATION. *;89960000=15259000= IF STEPI ^= RTBRKET THEN 89965000=15260000= BEGIN 89970000=15261000= @@ -19202,7 +19208,7 @@ COMMENT THIS SECTION GENERATES CODE FOR STREAM PROCEDURES; 91075000 ARE FIXED BY FAKING TOTOS INTO COMPILING THE REQUIRED 91900000=16111000= JUMPS. 91905000=16112000= FINALLY THE BNS IS FIXED,IF REQUIRED,AND NEST LEVEL 91910000=16113000= - AND JOINFO RESOTRED TO THEIR ORIGINAL VALUES. ; 91915000=16114000= + AND JOINFO RESTORED TO THEIR ORIGINAL VALUES. ; 91915000=16114000= PROCEDURE NESTS; 91920000=16115000= BEGIN 91925000=16116000= LABEL 91930000=16117000= @@ -19297,7 +19303,7 @@ COMMENT THIS SECTION GENERATES CODE FOR STREAM PROCEDURES; 91075000 FIRST THE TEST IS COMPILED. NOTE THAT IN THE 92375000=16179000= CONSTRUCTS "SC RELOP DC" AND "SC RELOP STRING" THAT 92380000=16180000= THE SYLLABLE EMITTED IS FETCHED FROM ONE OF TWO FIELDS 92385000=16181000= - IN THE ELBAT WORD FOR THE RELATIONAL OPERATOR, OTHERWISE 92390000=16182000= + IN THE ELBAT WORD FOR THE RELATIONAL OPERATOR. OTHERWISE 92390000=16182000= THE CODE IS EMITTED STRAIGHTAWAY. 92395000=16183000= A TEST IS MADE TO SEE WHETHER THE STATEMENT AFTER THE 92400000=16184000= "THEN" COULD POSSIBLY BE LONGER THAN 63 SYLLABLES,AND IF 92405000=16185000= @@ -19437,7 +19443,7 @@ COMMENT THIS SECTION GENERATES CODE FOR STREAM PROCEDURES; 91075000 GO TOS IN THE CASE OF FORWARD JUMPS. 93075000=16245000= FINALLY, IF THE NEST LEVEL IS DEFINED THEN IT IS CHECKED 93080000=16246000= AGAINST THE CURRENT LEVEL MINUS THE NUMBER OF LEVELS TO 93085000=16247000= - BE JUMPED OUT, OTHERWISE,NEST LEVEL IS DEFINED. ; 93090000=16248000= + BE JUMPED OUT. OTHERWISE,NEST LEVEL IS DEFINED. ; 93090000=16248000= PROCEDURE GOTOS; 93095000=16249000= BEGIN 93100000=16250000= LABEL 93105000=16251000= @@ -19503,11 +19509,11 @@ COMMENT THIS SECTION GENERATES CODE FOR STREAM PROCEDURES; 91075000 THE VARIABLE "INDEX" IS COMPUTED,DEPENDING UPON WHICH 93405000=16297000= CASE EXISTS,SUCH THAT ARRAY ELEMENT "MACRO[INDEX]"CONTAINS93410000=16298000= THE CODE TO BE EMITTED. 93415000=16299000= - EACH ELEMENT OF MACRO HAS 1-3 SYLLABES ORDERED FROM 93420000=16300000= + EACH ELEMENT OF MACRO HAS 1-3 SYLLABLES ORDERED FROM 93420000=16300000= RIGHT TO LEFT, UNUSED SYLLABLES MUST = 0. EACH MACRO 93425000=16301000= MAY REQUIRE AT MOST ONE REPEAT PART. 93430000=16302000= IN THIS PROCEDURE,INDEXS,THE VARIABLE "ADDR" CONTAINS THE 93435000=16303000= - PROPER REPEAT PART BY THE TIME THE LABEL "GENERATE' IS 93440000=16304000= + PROPER REPEAT PART BY THE TIME THE LABEL "GENERATE" IS 93440000=16304000= ENCOUNTERED. THE SYLLABLES ARE FETCHED FROM MACRO[TYPE] 93445000=16305000= ONE AT A TIME AND IF THE REPEAT PART ^= 0 THEN"ADDR" IS 93450000=16306000= USED AS THE REPEAT PART,THUS BUILDING A SYLLABLE WITH 93455000=16307000= @@ -19592,7 +19598,7 @@ COMMENT THIS SECTION GENERATES CODE FOR STREAM PROCEDURES; 91075000 EXIT: 93840000=16355000= END INDEXS; 93845000=16355000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%93850000=16355000= - COMMENT DSS COMPILES DESINTATION STREAM STATEMENTS. 93855000=16356000= + COMMENT DSS COMPILES DESTINATION STREAM STATEMENTS. 93855000=16356000= DS:= LIT"STRING" IS HANDLED AS A SPECIAL CASE BECAUE THE 93860000=16357000= STRING MUST BE SCANED FROM RIGHT TO LEFT,REPEATEDLY IF 93865000=16358000= NECESSARY, AND EMITTED TO THE PROGRAM STREAM. IN 93870000=16359000= @@ -19721,7 +19727,7 @@ COMMENT THIS SECTION GENERATES CODE FOR STREAM PROCEDURES; 91075000 JUMPLEVEL:= 1; 94440000=16433000= IF STEPI ^= DECLARATORS THEN 94445000=16434000= FLAG(261); 94450000=16434000= - IF STEPI ^= LITNO THEN 94455000=16435000= + IF STEPI = LITNO THEN 94455000=16435000= JUMPLEVEL:= ELBAT[I].ADDRESS 94460000=16436000= ELSE 94465000=16436000= BEGIN 94470000=16436000=