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
+ , 01832500
TIME(6),DATER(TIME(5)),12|REAL(Q:=H MOD 12=0)+Q, 01833000
Q:=MIN MOD 10+(MIN DIV 10)|64, 01834000
- IF H}12THEN "PM." ELSE "AM.", 01835000
+ IF H}12 THEN "PM." ELSE "AM.", 01835000
N1.[6:6],N1,N2.[6:6],N2); 01835500
IF MERGETOG THEN % INDICATE NAME OF SOURCE FILE. %120-01835600
WRITE(LINE,, %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
, 01832500
+ ," ",A6,"DAY, ",O,", ",I2,":",A2,X1,A3, 01832000
+ ////X45,A1,A6,"/",A1,A6,/X45,15("=")//>, 01832500
TIME(6),DATER(TIME(5)),12|REAL(Q:=H MOD 12=0)+Q, 01833000
Q:=MIN MOD 10+(MIN DIV 10)|64, 01834000
IF H}12 THEN "PM." ELSE "AM.", 01835000
N1.[6:6],N1,N2.[6:6],N2); 01835500
NOHEADING:=FALSE; 01836000
END OF DATIME; 01837000
-COMMENT THIS SECTION CONTAINS ALL CODE PERTAINENT TO READING CARDS 02000000
- AND SCANNING THEM; 02001000
+ COMMENT THIS SECTION CONTAINS ALL CODE PERTAINENT TO READING CARDS 02000000
+ AND SCANNING THEM; 02001000
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+4; 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
- 3(IF SB THEN DS:=SET ELSE DS:=RESET; SKIP SN)); 02001846
+ SI:=S; SI:=SI+4; 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
+ 3(IF SB THEN DS:=SET ELSE DS:=RESET; SKIP SB)); 02001846
SI:=D; IF SB THEN 02001848
BEGIN TALLY:=1; DI:=D; DS:=RESET END; % PREVENT FLAG BIT. 02001850
- OCTIZE:=TALLY; % "1" = NON OCTAL CHARACTER OR FLAG IT. 02001852
+ OCTIZE:=TALLY; % "1" = NON OCTAL CHARACTER OR FLAG BIT. 02001852
END OCTIZE; 02001854
COMMENT HEXIZE REFORMATS ACCUM FOR HEXADECIMAL CONSTANTS; 02001856
BOOLEAN STREAM PROCEDURE HEXIZE(S,D,SKP,CNT); VALUE SKP,CNT; 02001858
BEGIN LOCAL T1,T2,TEMP2,TEMP1; LABEL AGIN; 02001860
COMMENT LOCAL VARIABLES ARE LOCATED IN REVERSE ORDER FROM THE 02001862
WAY THEY ARE DECLARED IN STREAM PROCEDURES; 02001864
- DI:=LOC TEMP1; CNT(DS:=LIT"1"); % IN CASE A CHAR=A,B,C,D,OR F, 02001866
- SI:=S; SI:=SI+3; DI:=LOC TEMP1; % WE MAY OVERFLOW INTO TEMPS. 02001868
+ DI:=LOC TEMP1; CNT(DS:=LIT"1"); % IN CASE A CHAR=A,B,C,D,OR F. 02001866
+ SI:=S; SI:=SI+3; DI:=LOC TEMP1; % WE MAY OVERFLOW INTO TEMP2. 02001868
CNT(IF SC<"0" THEN IF SC}"A" THEN IF SC{"F" THEN % WORK HARD. 02001870
BEGIN 02001872
T1:=SI; T2:=DI; DI:=T1; SI:=T2; % FLIP, MAN. 02001874
@@ -1239,56 +1241,56 @@ COMMENT LOCAL VARIABLES ARE LOCATED IN REVERSE ORDER FROM THE 02001862
DS:=1 ADD; DI:=DI-1; SKIP 2 DB; DS:=1 SET; SKIP 3 DB; 02001878
GO AGIN; 02001880
END; 02001882
- IF SC<"0" THEN TALLY:="1"; DS:=CHR; % < 0 = NON-HEX CHARACTER. 02001884
+ IF SC<"0" THEN TALLY:=1; DS:=CHR; % < 0 = NON-HEX CHARACTER. 02001884
AGIN: 02001886
); 02001888
SI:=LOC TEMP1; DI:=D; SKP(DS:=4 RESET); % RIGHT ADJUST CONSTANT. 02001890
CNT(SKIP 2 SB; 02001892
- 4(IF SB THEN DS:=SET ELSE DS:=RESET; SKIP S));% FINAL CONVERT. 02001894
+ 4(IF SB THEN DS:=SET ELSE DS:=RESET; SKIP SB));% FINAL CONVERT. 02001894
SI:=D; IF SB THEN 02001895
BEGIN TALLY:=1; DI:=D; DS:=RESET END; % PREVENT FLAG BIT. 02001896
HEXIZE:=TALLY; % "1" IF PROGRAMMER GOOFED. 02001897
END HEXIZE; 02001898
-COMMENT PUTSEQNO PUTS THE SEQUENCE NUMBER OF THE CARD-IMAGE 02002000
- CURRENTLY BEING SCANNED INTO THE INFO TABLE IN CASE 02003000
- IT IS NEEDED FOR FUTURE REFERENCE; 02004000
+COMMENT PUTSEQNO PUTS THE SEQUENCE NUMBER OF THE CARD-IMAGE 02002000
+ CURRENTLY BEING SCANNED INTO THE INFO TABLE IN CASE 02003000
+ IT IS NEEDED FOR FUTURE REFERENCE; 02004000
STREAM PROCEDURE PUTSEQNO(INFO,LCR); VALUE LCR; 02005000
BEGIN DI:=INFO; SI:=LCR; DS:=WDS; END PUTSEQNO; 02006000
-COMMENT TURNONSTOPLIGHT TURNS ON THE LIGHT "RED" ON THE "CORNER". 02007000
- I.E., THE PURPOSE OF THIS ROUTINE S TO INSERT A PER- 02008000
- CENT SIGN IN COLUMN 73 AS AN END OF CARD SENTINEL FOR 02009000
- THE SCANNER; 02010000
+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
COMMENT WRITNEW TRANSFERS THE CARD IMAGE TO THE NEWTAPE BUFFER 02014000
- AND REPORTS IF THE CARD MIGHT BE A CONTROL CARD; 02015000
-BOOLEAN STREAM PROCEDURE WRITNEW(NEW,FCR); VALUE FCR; 02016000
- BEGIN SI ~ FCR;IF SC ! "$" THEN TALLY ~ 1; 02017000
- DI~NEW;DS~10 WDS; 02018000
- WRITNEW ~ TALLY END WRITNEW; 02020000
- COMMENT MKABS CONVERTS A DESCRIPTOR TO AN ABSOLUTE ADDRESS; 02021000
-REAL STREAM PROCEDURE MKABS(A); 02022000
- BEGIN D1 ~ A; MKABS ~ DI END MKABS; 02023000
+ AND REPORTS IF THE CARD MIGHT BE CONTROL CARD; 02015000
+ BOOLEAN STREAM PROCEDURE WRITNEW(NEW,FCR); VALUE FCR; 02016000
+ BEGIN SI ~ FCR; IF SC ! "$" THEN TALLY ~ 1; 02017000
+ DI~NEW;DS~10 WDS; 02018000
+ WRITNEW ~ TALLY END WRITNEW; 02020000
+ COMMENT MKABS CONVERTS A DESCRIPTOR TO AN ABSOLUTE ADDRESS; 02021000
+ REAL STREAM PROCEDURE MKABS(A); 02022000
+ BEGIN D1 ~ A; MKABS ~ DI END MKABS; 02023000
REAL STREAM PROCEDURE CONV(ACCUM,SKP,N);VALUE SKP,N; 02041000
BEGIN 02042000
- SI~ ACCUM; SI~SI+SKP;SI~SI+3;DI~LOC CONV;05~ N OCT 02043000
+ SI~ ACCUM; SI~SI+SKP;SI~SI+3;DI~LOC CONV;DS~N OCT 02043000
END; 02044000
-STREAM PROCEDURE MOVECHARACTERS(N,SORCE,SSKIP,DEST,DSKIP); 02045000
- VALUE N,SSKIP,DSKIP; 02046000
- BEGIN 02047000
- SI~SORCE ; DI ~ DEST; 02048000
- SI~SI+SSKIP; DI~ DI+DSKIP ; 02049000
- DS ~ N CHR ; 02050000
- END ; 02051000
-COMMENT MOVECHARACTERS MOVES N CHARACTERS FROM THE SSKIP-TH CHAR IN 02052000
- "SORCE" TO THE DSKIP-TH CHAR IN "DEST". ; 02053000
-STREAM PROCEDURE MOVE(W)"WORDS FROM"(A)"TO"(B); VALUE W; 02054000
- BEGIN SI ~ A; DI ~ B; DS + W WDS END; 02055000
-STREAM PROCEDURE RESIZE(FIEL); 02056000
-BEGIN LOCAL T; 02057000
- SI~FIEL; DI~LOC T; DS~WDS; 02058000
-SI~T;DI~FIEL;DI~DI+1; SKIP 2 DB; DS~10 SET 02059000
-END; 02060000
+ STREAM PROCEDURE MOVECHARACTERS(N,SORCE,SSKIP,DEST,DSKIP); 02045000
+ VALUE N,SSKIP,DSKIP; 02046000
+ BEGIN 02047000
+ SI~SORCE ; DI~DEST; 02048000
+ SI~SI+SSKIP; DI~ DI+DSKIP ; 02049000
+ DS ~ N CHR ; 02050000
+ END ; 02051000
+ COMMENT MOVECHARACTERS MOVES N CHARACTERS FROM THE SSKIP-TH CHAR IN 02052000
+ "SORCE" TO THE DSKIP-TH CHAR IN "DEST". ; 02053000
+ STREAM PROCEDURE MOVE(W)"WORDS FROM"(A)"TO"(B); VALUE W; 02054000
+ BEGIN SI ~ A; DI ~ B; DS ~ W WDS END; 02055000
+ STREAM PROCEDURE RESIZE(FIEL); 02056000
+ BEGIN LOCAL T; 02057000
+ SI~FIEL; DI~LOC T; DS~WDS; 02058000
+ SI~T;DI~FIEL;DI~DI+1; SKIP 2 DB; DS~10 SET 02059000
+ END; 02060000
COMMENT EQUAL COMPARES COUNT CHARACTERS LOCATED AT A AND B FOR 02061000
EQUALITY. THIS ROUTINE IS USED IN THE LOOK-UP OF ALPHA 02061500
QUANTITIES IN THE DIRECTORY; 02062000
@@ -1308,20 +1310,20 @@ COMMENT "SCAN" IS THE STREAM PROCEDURE WHICH DOES THE ACTUAL SCANNING. 02067000
IS CONTROLLED BY A VARIABLE CALLED "RESULT". "SCAN" ALSO 02068500
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
+ THE MEANING OF "RESULT" AS INPUT IS: 02070000
VALUE MEANING 02070500
===== ======================================== 02071000
0 INITIAL CODE - DEBLANK AND START TO FETCH THE 02071500
NEXT QUANTITY. 02072000
1 CONTINUE BUILDING AN IDENTIFIER (INTERRUPTED BY 02072500
END-OF-CARD BREAK). 02073000
- 2 LAST QUANTITY BUILT WAS SPECIAL CHARACTER, HENCE, 02073500
+ 2 LAST QUANTITY BUILT WAS SPECIAL CHARACTER. HENCE, 02073500
EXIT (INTERRUPTION BY END-OF-CARD BREAK IS NOT 02074000
- IMPORTANT) 02074500
+ IMPORTANT). 02074500
3 CONTINUE BUILDING A NUMBER (INTERRUPTED BY END-OF- 02075000
CARD BREAK). 02075500
- 4 LAST THING WAS AN ERROR (COUNT EXCEEDED 63), HENCE,02076000
- EXIT (INTERRUPTION BE END-OF-CARD BREAK NOT 02076500
+ 4 LAST THING WAS AN ERROR (COUNT EXCEEDED 63). HENCE,02076000
+ EXIT (INTERRUPTION BY END-OF-CARD BREAK NOT 02076500
IMPORTANT). 02077000
5 GET NEXT CHARACTER AND EXIT. 02077500
6 SCAN A COMMENT. 02078000
@@ -1338,13 +1340,13 @@ COMMENT "SCAN" IS THE STREAM PROCEDURE WHICH DOES THE ACTUAL SCANNING. 02067000
"COUNT" IS THE VARIABLE THAT GIVES THE NUMBER OF CHARACTERS 02083500
"SCAN" HAS PUT INTO THE "ACCUMULATOR". SINCE "SCAN" NEEDS 02084000
THE VALUE SO THAT IT CAN PUT MORE CHARACTERS INTO THE "ACCUM- 02084500
- ULATOR" AND NEEDS TO UPDATE "COUNT" FOR THE OUTSIDE WORLD, 02085000
+ ULATOR" AND NEEDS TO UPDATE "COUNT" FOR THE OUTSIDE WORLD. 02085000
"COUNT" IS PASSED BY BOTH NAME AND VALUE. IT IS ALSO 02085500
- CONVENIENT TO HAVE (63-COUNT). THIS IS CALLED "COMCOUNT", 02086000
+ CONVENIENT TO HAVE (63-COUNT). THIS IS CALLED "COMCOUNT". 02086000
"NCR" (NEXT CHARACTER TO BE SCANNED) IS ALSO PASSED BY 02086500
NAME AND VALUE SO THAT IT MAY BE UPDATED. 02087000
"ST1" AND "ST2" ARE TEMPORARY STORAGES WHICH ARE EXPLICITLY 02087500
- PASSED TO "SCAN" IN ORDER TO OBTAIN THE MOST USEFUL STACK 02088000
+ PASSED TO "SCAN" IN ORDER TO OBTAIN THE MOST USEFULL STACK 02088000
ARRANGEMENT. 02088500
; 02089000
STREAM PROCEDURE SCAN(NCR,COUNTV,ACCUM,COMCOUNT,RESULT,RESULTV, 02089500
@@ -1390,7 +1392,7 @@ COMMENT CHARACTERS BETWEEN % AND SEMICOLON ARE HANDLED BY WORD- 02108500
END; 02109500
GO FINIS; 02110000
IDBLDR: 02110500
- TALLY:=63; DS=LIT "1"; 02111000
+ TALLY:=63; DS:=LIT "1"; 02111000
COMCOUNT(TALLY:=TALLY+1; 02111500
IF SC=ALPHA THEN SI:=SI+1 ELSE JUMP OUT TO EXIT); 02112000
TALLY:=TALLY+1; 02112500
@@ -1398,7 +1400,7 @@ IDBLDR: 02110500
BEGIN 02113500
ERROR: 02114000
DI:=DI-1; DS:=LIT "4"; GO EXIT; 02114500
- END; 02115000
+ END 02115000
ELSE GO EXIT; 02115500
COMMENT IF WE ARRIVE AT ERROR WE HAVE MORE THAN 63 CHARACTERS 02116000
IN AN IDENTIFIER OR NUMBER; 02116500
@@ -1423,23 +1425,23 @@ FINIS: 02125500
DI:=NCR; ST1:=SI; SI:=LOC ST1; DS:=WDS; 02126000
COMMENT RESET "NCR" TO LOCATION OF NEXT CHARACTER TO BE SCANNED; 02126500
END OF SCAN; 02127000
- LABEL L; 02127500
+ LABEL L;% 02127500
L: 02128000
- SCAN(NCR,COUNT,ACCUM[1],63-COUNT,RESULT, 02128500
- RESULT,COUNT,0,NCR,0); 02129000
- IF NCR=LCR THEN 02129500
- BEGIN 02130000
- READACARD; 02130500
- GO TO L; % GO DIRECTLY TO L, DO NOT PASS GO, 02135500
- % DO NOT COLLECT $200; 02136000
- END; 02136500
- END SCANNER; 02137000
+ SCAN(NCR,COUNT,ACCUM[1],63-COUNT,RESULT, 02128500
+ RESULT,COUNT,0,NCR,0); 02129000
+ IF NCR=LCR THEN 02129500
+ BEGIN 02130000
+ READACARD; 02130500
+ GO TO L; % GO DIRECTLY TO L, DO NOT PASS GO, 02135500
+ % DO NOT COLLECT $200. 02136000
+ END; 02136500
+ END SCANNER; 02137000
DEFINE WRITELINE = IF SINGLTOG THEN WRITE(LINE,15,LIN[*]) 02181000
- ELSE WRITE(LINE[DBL],15,LIN[*])#, 02181250
+ ELSE WRITE(LINE[DBL],15,LIN[*])#, 02181250
PRINTCARD = BEGIN 02182500
- EDITLINE(LIN,FCR,L DIV 4,L,[4612],MEDIUM,OMITTING); 02182750
+ EDITLINE(LIN,FCR,L DIV 4,L,[46:2],MEDIUM,OMITTING); 02182750
IF NOHEADING THEN DATIME; WRITELINE; 02183000
- END#; 02183250
+ END #; 02183250
STREAM PROCEDURE EDITLINE(LINE,NCR,R,L,SYMBOL,OMIT); 02183500
VALUE NCR,R,L,SYMBOL,OMIT; 02183750
BEGIN 02184000
@@ -1457,9 +1459,9 @@ STREAM PROCEDURE EDITLINE(LINE,NCR,R,L,SYMBOL,OMIT); 02183500
COMMENT COMPARE COMPARES SEQUENCE NUMBERS OF TAPE AND CARD. IF 02187250
TAPE IS SMALLER THEN RESULT = 0 ELSE IF CARD IS SMALLER 02187500
RESULT = 1 ELSE RESULT = 2; 02187750
-REAL STREAM PROCEDURE(TAPE,CARD); VALUE TAPE,CARD; 02188000
+REAL STREAM PROCEDURE COMPARE(TAPE,CARD); VALUE TAPE,CARD; 02188000
BEGIN 02188250
- SI:= TAPE; DI := CARD; 02188500
+ SI := TAPE; DI := CARD; 02188500
IF 8 SC } DC THEN 02188750
BEGIN 02189000
SI := SI-8; DI := DI-8; TALLY := 1; 02189250
@@ -1493,11 +1495,11 @@ LTAPE: 02195500
AWAY: 02196250
END OUTPUTSOURCE; 02196500
PROCEDURE READACARD; 02196750
-COMMENT READACARD READS CARD FROM EITHER THE CARD READER OR THE 02197000
- TAPE MERGING AS REQUESTED AND CREATING A NEW TAPE AND 02197250
- LISTING IF REQUESTED. READACARD ALSO INSERTS A PERCENT 02197500
- SIGN AS AN END OF CARD SENTINEL IN COLUMN 73 AND SETS 02197750
- FCR,NCR,LCR,TLCR, AND CLCR; 02198000
+COMMENT READACARD READS CARDS FROM EITHER THE CARD READER OR THE 02197000
+ TAPE MERGING AS REQUESTED AND CREATING A NEW TAPE AND 02197250
+ LISTING IF REQUESTED. READACARD ALSO INSERTS A PERCENT 02197500
+ SIGN AS AN END OF CARD SENTINEL IN COLUMN 73 AND SETS 02197750
+ FCR,NCR,LCR,TLCR, AND CLCR; 02198000
BEGIN 02198250
PROCEDURE READTAPE; 02198500
BEGIN 02201500
@@ -1511,52 +1513,52 @@ DEFINEARRAY[34]:="9999" & "9999"[1:25:23]; 02202040
TLCR:= MKABS(DEFINEARRAY[34]); 02202050
PUTSEQNO (DEFINEARRAY[33],TLCR-8); 02202060
TURNONSTOPLIGHT("%", TLCR-8); 02202070
-ENDREADTAPE: 02202250
- END READTAPE; 02202500
- PROCEDURE SEQCOMPARE(TLCR,CLCR, LIB); VALUE LIB; BOOLEAN LIB; 02202750
- REAL TLCR, CLCR ; 02203000
- BEGIN 02203250
- MEDIUM:="C "; % CARD READER. 02203500
- IF GT1:=COMPARE(TLCR,CLCR)=0 THEN % TAPE HAS LOW SEQUENCE NUMB02203750
- BEGIN 02204000
- LCR:=TLCR; LASTUSED:=3; 02204250
- MEDIUM:="T "; % TAPE INPUT. 02204500
- END 02204750
- ELSE BEGIN 02205000
- IF GT1 ! 1 THEN % TAPE AND CARD HAVE SAME SEQ 02205250
- BEGIN 02205500
- MEDIUM:="P "; % CARD PATCHES TAPE. 02205750
- READTAPE; 02206000
- END; 02206250
- LCR:=CLCR; 02206500
- LASTUSED:=2; 02206750
- END; 02207000
- END OF SEQCOMPARE; 02207250
- LABEL CARDONLY, CARDLAST, TAPELAST, EXIT, FIRSTTIME, 02207500
- EOF, USETHESWITCH, 02207750
- COMPAR, TESTVOID, XIT; 02208000
- SWITCH USESSWITCH:=CARDONLY,CARDLAST,TAPELAST,FIRSTTIME; 02208250
- IF ERRORCOUNT}ERRMAX THEN ERR(611); % ERR LIMIT EXCEEDED - STOP. 02208500
-USETHESWITCH: 02208750
- DOLLAR2TOG:=FALSE; 02209000
- GO TO USESSWITCH(LASTUSED); 02209250
- MOVE(1,INFO[LASTUSED,LINKR,LASTUSED,LINKC], 02209500
- DEFINEARRAY[DEFINEINDEX-2]); 02209750
- LASTUSED := LASTUSED + 1; 02210000
- NCR := LCR-1; 02210250
- GO TO XIT; 02210500
-FIRSTTIME: 02210750
- READ(CARD,10,CBUFF[*]); 02211000
- FCR:=NCR:=(LCR:=MKABS(CBUFF[9]))-9; 02211250
+ENDREADTAPE: 02202080
+ END READTAPE; 02202250
+ PROCEDURE SEQCOMPARE(TLCR,CLCR, LIB); VALUE LIB; BOOLEAN LIB; 02202500
+ REAL TLCR, CLCR ; 02202750
+ BEGIN 02203000
+ MEDIUM:="C "; % CARD READER. 02203250
+ IF GT1:=COMPARE(TLCR,CLCR)=0 THEN % TAPE HAS LOW SEQUENCE NUMB02203500
+ BEGIN 02203750
+ LCR:=TLCR; LASTUSED:=3; 02204000
+ MEDIUM:="T "; % TAPE INPUT. 02204250
+ END 02204500
+ ELSE BEGIN 02204750
+ IF GT1 ! 1 THEN % TAPE AND CARD HAVE SAME SEQ 02205000
+ BEGIN 02205250
+ MEDIUM:="P "; % CARD PATCHES TAPE. 02205500
+ READTAPE; 02208500
+ END; 02208750
+ LCR:=CLCR; 02209000
+ LASTUSED:=2; 02209250
+ END; 02209500
+ END OF SEQCOMPARE; 02209750
+ LABEL CARDONLY, CARDLAST, TAPELAST, EXIT, FIRSTTIME, 02210000
+ EOF, USETHESWITCH, 02210250
+ COMPAR, TESTVOID, XIT; 02210500
+ SWITCH USESWITCH:=CARDONLY,CARDLAST,TAPELAST,FIRSTTIME; 02210750
+ IF ERRORCOUNT}ERRMAX THEN ERR(611); % ERR LIMIT EXCEEDED - STOP. 02211500
+USETHESWITCH: 02211750
+ DOLLAR2TOG:=FALSE; 02211800
+ GO TO USESWITCH[LASTUSED]; 02212000
+ MOVE(1,INFO[LASTUSED.LINKR,LASTUSED.LINKC], 02212250
+ DEFINEARRAY[DEFINEINDEX-2]); 02212500
+ LASTUSED := LASTUSED + 1; 02212750
+ NCR := LCR-1; 02213000
+ GO TO XIT; 02213250
+FIRSTTIME: 02213500
+ READ(CARD,10,CBUFF[*]); 02213750
+ FCR:=NCR:=(LCR:=MKABS(CBUFF[9]))-9; 02214000
MEDIUM:="C "; 02214100
IF EXAMIN(FCR)!"$" AND LISTER THEN PRINTCARD; 02214200
- PUTSEQNO(INFO[LASTSEQROW,LASTSEQUENCE],LR); 02214250
- TURNONSTOPLIGHT("%",LR); 02214500
+ PUTSEQNO(INFO[LASTSEQROW,LASTSEQUENCE],LCR); 02214250
+ TURNONSTOPLIGHT("%",LCR); 02214500
GO XIT; 02214750
COMMENT WE HAVE JUST INITIALIZED CARD INPUT; 02215000
CARDONLY: 02215250
- READ(CARD,1,CBUFF[*]); 02215500
- LR := MKABS(CBUFF[9]); GO EXIT; 02215750
+ READ(CARD,10,CBUFF[*]); 02215500
+ LCR := MKABS(CBUFF[9]); GO EXIT; 02215750
CARDLAST: 02216000
READ(CARD,10,CBUFF[*])[EOF]; 02216250
CLCR := MKABS(CBUFF[9]); 02216500
@@ -1569,17 +1571,17 @@ EOF: 02217000
TURNONSTOPLIGHT("%",CLCR-8); 02218250
% 02218400
GO COMPAR; 02218500
-COMMENT THIS RELEASE THE PREVIOUS CARD FORM THE CARD READER AND 02218750
+COMMENT THIS RELEASES THE PREVIOUS CARD FROM THE CARD READER AND 02218750
SETS UP CLCR; 02219000
TAPELAST: 02219250
READTAPE; 02219500
-COMMENT THIS RELEASES THE PREVIOUS CARD FORM TAPE AND SETS UP TLCR; 02219750
+COMMENT THIS RELEASES THE PREVIOUS CARD FROM TAPE AND SETS UP TLCR; 02219750
COMPAR: 02224250
SEQCOMPARE(TLCR,CLCR,FALSE); 02224500
EXIT: 02225000
NCR := FCR:= LCR - 9; 02225250
COMMENT SETS UP NCR AND FCR; 02225500
- IF EXAMIN(FCR)!"$" THEN % $-CARDS CONT"T COUNT. 02225750
+ IF EXAMIN(FCR)!"$" THEN % $-CARDS DON"T COUNT. 02225750
IF COMPARE(MKABS(INFO[LASTSEQROW,LASTSEQUENCE]),LCR)=1 THEN 02226000
BEGIN 02226250
FLAG(610); % SEQUENCE ERROR. 02226500
@@ -1592,7 +1594,7 @@ COMMENT SETS UP NCR AND FCR; 02225500
IF VOIDTCR!0 THEN 02228125
IF COMPARE(LCR,VOIDTCR)=0 THEN GO USETHESWITCH; 02228150
END; 02228175
- IF EXAMIN(FCR)="$" THEN 02228350
+ IF EXAMIN(FCR)="$" THEN 02228250
BEGIN 02228500
IF LISTPTOG OR PRINTDOLLARTOG THEN PRINTCARD; 02228750
NCR:=NCR+32768; DOLLARCARD; 02229000
@@ -1627,10 +1629,10 @@ REAL PROCEDURE CONVERT; 02248000
BEGIN REAL T; INTEGER N; 02249000
TLO~0; THI~ 02250000
T~ CONV(ACCUM[1],TCOUNT,N~(COUNT-TCOUNT)MOD 8); 02251000
- FOR N~ TCOUNT~N STEP 8 UNTIL COUNT- 1 DO 02252000
+ FOR N~ TCOUNT+N STEP 8 UNTIL COUNT- 1 DO 02252000
IF DPTOG THEN 02253000
BEGIN 02254000
- DOUBLE(THI,TLO,100000000.0,0,|,CONV(ACCUM[1],N,8),0,+,~,~,02255000
+ DOUBLE(THI,TLO,100000000.0,0,|,CONV(ACCUM[1],N,8),0,+,~, 02255000
THI,TLO); 02256000
T~THI; 02257000
END ELSE 02258000
@@ -1641,7 +1643,7 @@ REAL STREAM PROCEDURE FETCH(F); VALUE F; 02262000
BEGIN SI:=F; SI:=SI-8; DI:=LOC FETCH; DS:=WDS END FETCH; 02263000
PROCEDURE DUMPINFO; 02264000
BEGIN 02264050
- ARRAY A[0:14]; INTEGER JEDEN.DWA; 02264100
+ ARRAY A[0:14]; INTEGER JEDEN,DWA; 02264100
STREAM PROCEDURE OCTALWORDS(S,D,N); VALUE N; 02264400
BEGIN 02264450
SI:=S; DI:=D; 02264500
@@ -1689,19 +1691,19 @@ COMMENT DOLLARCARD HANDLES THE COMPILER CONTROL CARDS. 02282000
02286000
WORD CONTAINS 02287000
---- -------- 02288000
- 1 ENTRY FORM ACCUM[1]: 00XZZZZ, WHERE 02289000
+ 1 ENTRY FROM ACCUM[1]: 00XZZZZ, WHERE 02289000
X IS THE SIZE OF THE ID AND 02290000
ZZZZZ IS THE FIRST FIVE CHARS OF THE ID. 02291000
- 2 PUSH-DOWN, 47 BIT TACK CONTAINING THE 02292000
+ 2 PUSH-DOWN, 47-BIT STACK CONTAINING THE 02292000
HISTORY OF THE SETTINGS OF THIS OPTION. 02293000
02294000
- IN "FINDOPTION", ALL COMPILER DEFINED OPTIONS ARE USUALLY 02295000
+ IN "FINDOPTION", ALL COMPILER-DEFINED OPTIONS ARE USUALLY 02295000
LOCATED BASED UPON A UNIQUE NUMBER ASSIGNED TO EACH. 02296000
FOR ALL USER-DEFINED OPTIONS, A SEQUENTIAL TABLE SEARCH IS 02297000
INITIATED USING "USEROPINX" AS THE INITIAL INDEX INTO THE 02298000
- "OPTIONS" ARRAY. IF THE NUMBER OF COMPILER DEFINED OPTIONS 02299000
+ "OPTIONS" ARRAY. IF THE NUMBER OF COMPILER-DEFINED OPTIONS 02299000
IS CHANGED, THEN "USEROPINX" MUST BE ACCORDINGLY CHANGED. 02300000
- THE NUMBER OF USER DEFINE OPTIONS ALLOWED CAN BE 02301000
+ 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 OF THE COMPILER-DEFINED OPTIONS, ONE BIT PER 02304000
@@ -1733,11 +1735,11 @@ PROCEDURE DOLLARCARD; 02319000
SWITCH SW:=XMODE0,XMODE1,XMODE2,XMODE3,XMODE4; 02326000
SETTING:=FINDOPTION(XBIT); SKAN; 02327000
GO SW[XMODE+1]; 02328000
-XMODE0: % FIRST OPTION ON CARD, BUTNOT SET, RESET OR POP. 02329000
+XMODE0: % FIRST OPTION ON CARD, BUT NOT SET, RESET, OR POP. 02329000
OPTIONWORD:=BOOLEAN(0); 02330000
FOR SAVEINX:=1 STEP 2 UNTIL OPARSIZE DO OPTIONS[SAVEINX]:=0; 02331000
XMODE:=LASTUSED:=1; % CARD INPUT ONLY. 02332000
-XMODE1: % NOT FIRST OPTION AND NOT BEING SET, RESET OR POPPED. 02333000
+XMODE1: % NOT FIRST OPTION AND NOT BEING SET, RESET, OR POPPED. 02333000
OPTIONS[OPINX+1]:=REAL(TRUE); 02334000
IF XBIT9 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=