mirror of
https://github.com/retro-software/B5500-software.git
synced 2026-01-21 17:54:42 +00:00
12084 lines
1.1 MiB
12084 lines
1.1 MiB
%#######################################################################00005000=00001000=
|
|
% 00010000=00001010=
|
|
% B-5700 ESPOL COMPILER 00015000=00001020=
|
|
% MARK XVI.0.00 00020000=00001030=
|
|
% OCT 1, 1974 00025000=00001040=
|
|
% 00030000=00001050=
|
|
%#######################################################################00035000=00001060=
|
|
% 00040000=00001070=
|
|
COMMENT: * TITLE: B5500/B5700 MARK XVI SYSTEM RELEASE * 00045000=00001072=
|
|
* FILE ID: SYMBOL/ESPOL TAPE ID: SYMBOL1/FILE000 * 00050000=00001073=
|
|
* THIS MATERIAL IS PROPRIETARY TO BURROUGHS CORPORATION * 00055000=00001074=
|
|
* AND IS NOT TO BE REPRODUCED, USED, OR DISCLOSED * 00060000=00001075=
|
|
* EXCEPT IN ACCORDANCE WITH PROGRAM LICENSE OR UPON * 00065000=00001076=
|
|
* WRITTEN AUTHORIZATION OF THE PATENT DIVISION OF * 00070000=00001077=
|
|
* BURROUGHS CORPORATION, DETROIT, MICHIGAN 48232 * 00075000=00001078=
|
|
* * 00080000=00001079=
|
|
* COPYRIGHT (C) 1971, 1972, 1974 * 00085000=00001080=
|
|
* BURROUGHS CORPORATION * 00090000=00001081=
|
|
* AA320206 AA393180 AA332366 *; 00095000=00001082=
|
|
00100000=00001110=
|
|
COMMENT#################################################################00105000=00001110=
|
|
ERROR MESSAGES 00110000=00001120=
|
|
########################################################################00115000=00001130=
|
|
% 00120000=00001140=
|
|
ERROR NUMBER ROUTINE:ERROR MESSAGE 00125000=00002000=
|
|
000 BLOCK: DECLARATION NOT FOLLOWED BY SEMICOLON. 00130000=00003000=
|
|
001 BLOCK: IDENTIFIER DECLARED TWICE IN SAME BLOCK. 00135000=00004000=
|
|
002 PROCEDUREDEC: SPECIFICATION PART CONTAINS 00140000=00005000=
|
|
IDENTIFIER NOT APPEARING IN 00145000=00006000=
|
|
FORMAL PARAMETER PART. 00150000=00007000=
|
|
003 BLOCK: NON-IDENTIFIER APPEARS IN IDENTIFIER 00155000=00008000=
|
|
LIST OF DECLARATION. 00160000=00009000=
|
|
004 PROCEDUREDEC: STREAM PROCEDURE DECLARATION 00165000=00010000=
|
|
PRECEDED BY ILLEGAL DECLARATOR. 00170000=00011000=
|
|
005 PROCEDUREDEC: PROCEDURE DECLARATION PRECEDED 00175000=00012000=
|
|
BY ILLEGAL DECLARATOR. 00180000=00013000=
|
|
006 PROCEDUREDEC: PROCEDURE IDENTIFIER USED BEFORE 00185000=00014000=
|
|
IN SAME BLOCK(NOT FORWARD). 00190000=00015000=
|
|
007 PROCEDUREDEC: PROCEDURE IDENTIFIER NOT FOLLOWED 00195000=00016000=
|
|
BY ( OR SEMICOLON IN PROCEDURE 00200000=00017000=
|
|
DECLARATION. 00205000=00018000=
|
|
008 PROCEDUREDEC: FORMAL PARAMETER LIST NOT FOLLOWED 00210000=00019000=
|
|
BY ). 00215000=00020000=
|
|
009 PROCEDUREDEC: FORMAL PARAMETER PART NOT FOLLOWED 00220000=00021000=
|
|
BY SEMICOLON. 00225000=00022000=
|
|
010 PROCEDUREDEC: VALUE PART CONTAINS IDENTIFIER 00230000=00023000=
|
|
WHICH DID NOT APPEAR IN FORMAL 00235000=00024000=
|
|
PARAPART. 00240000=00025000=
|
|
011 PROCEDUREDEC: VALUE PART NOT ENDED BY SEMICOLON. 00245000=00026000=
|
|
012 PROCEDUREDEC: MISSING OR ILLEGAL SPECIFICATION 00250000=00027000=
|
|
PART. 00255000=00028000=
|
|
013 PROCEDUREDEC: OWN USED IS ARRAY SPECIFICATION. 00260000=00029000=
|
|
014 PROCEDUREDEC: SAVE USED IN ARRAY SPECIFICATION. 00265000=00030000=
|
|
015 BLOCK: DECLARATION PRECEDED BY ILLEGAL DECLARATOR. 00270000=00031000=
|
|
016 ARRAYDEC: ARRAY ID IN DECLARATION NOT FOLLOWED 00275000=00032000=
|
|
BY [ . 00280000=00033000=
|
|
017 ARRAYDEC: LOWER BOUND IN ARRAY DEC NOT 00285000=00034000=
|
|
FOLLOWED BY : . 00290000=00035000=
|
|
018 ARRAYDEC: BOUND PAIR LIST NOT FOLLOWED BY ]. 00295000=00036000=
|
|
019 ARRAYSPEC: ILLEGAL LOWER BOUND DESIGNATOR IN 00300000=00037000=
|
|
ARRAY SPECIFICATION. 00305000=00038000=
|
|
020 BLOCK: OWN APPEARS IMMEDIATELY BEFORE 00310000=00039000=
|
|
IDENTIFIER(NO TYPE). 00315000=00040000=
|
|
021 BLOCK: SAVE APPEARS IMMEDIATELY BEFORE 00320000=00041000=
|
|
IDENTIFIER(NO TYPE). 00325000=00042000=
|
|
022 BLOCK: STREAM APPEARS IMMEDIATELY BEFORE 00330000=00043000=
|
|
IDENTIFIER(THE WORD PROCEDURE LEFT 00335000=00044000=
|
|
OUT). 00340000=00045000=
|
|
023 BLOCK: DECLARATOR PRECEDED ILLEGALLY BY 00345000=00046000=
|
|
ANOTHER DECLARATOR. 00350000=00047000=
|
|
024 PROCEDUREDEC: LABEL CANNOT BE PASSED TO FUNCTION. 00355000=00048000=
|
|
025 BLOCK: DECLARATOR OR SPECIFIER ILLEGALLY 00360000=00049000=
|
|
PRECEDED BY OWN OR SAVE OR SOME 00365000=00050000=
|
|
OTHER DECLARATOR. 00370000=00051000=
|
|
026 FILEDEC: MISSING ( IN FILE DEC. 00375000=00052000=
|
|
027 FILEDEC: NO. OF BUFFERS IN FILE DEC MUST BE 00380000=00053000=
|
|
AN UNSIGNED INTEGER. 00385000=00054000=
|
|
028 FILEDEC: ILLEGAL BUFFER PART OR SAVE FACTOR 00390000=00055000=
|
|
IN FILE DEC. 00395000=00056000=
|
|
029 FILEDEC: MISSING ) IN FILE DEC. 00400000=00057000=
|
|
030 PROCEDUREDEC: PROCEDURE TYPE AT ACTUAL DECLARATION 00405000=00058000=
|
|
TIME DIFFERENT THAN AT FORWARD DEC. 00410000=00059000=
|
|
031 LISTDEC: MISSING ( IN LISTDEC. 00415000=00060000=
|
|
032 FORMATDEC: MISSING ( IN FORMAT DEC. 00420000=00061000=
|
|
033 SWITCHDEC: SWITCH DEC DOES NOT HAVE ~ OR 00425000=00062000=
|
|
FORWARD AFTER IDENTIFIER. 00430000=00063000=
|
|
034 SWITCHFILEDEC:MISSING ~ AFTER FILED. 00435000=00064000=
|
|
035 SWITCHFILEDEC:NON FILE ID APPEARING IN DECLARATION 00440000=00065000=
|
|
OF SWITCHFILE. 00445000=00066000=
|
|
036 SUPERFORMATDEC:FORMAT ID NOT FOLLOWED BY ~ . 00450000=00067000=
|
|
037 SUPERFORMATDEC:MISSING ( AT START OF FORMATPHRASE . 00455000=00068000=
|
|
038 SUPERFORMATDEC:FORMAT SEGMENT >1022 WORDS. 00460000=00069000=
|
|
040 SEGMENT: SAVE CODE EXCEEDS 4080 WHICH KERNEL CAN H/L 00465000=00069100=
|
|
050 ANYWHERE: OUT OF RANGE OF C RELATIVE ADDRESSING FOR CONSTANT 00470000=00069500=
|
|
051 BLOCK : ILLEGAL F RELATIVE ADDRESS EXP IN DECLARATION 00475000=00069510=
|
|
052 BLOCK: PROCEDURE WHOSE BODY NOT A BLOCK 00480000=00069520=
|
|
053 ARRAYDEC: CANT FIND RIGHT BRACKET IN SAVE ARRAY DEC 00485000=00069530=
|
|
054 ARRAYDEC: FILL PART OF SAVE ARRAY DEC LONGER THAN SIZE 00490000=00069540=
|
|
056 ARRAYDEC: ILLEGAL DIMENSION INDICATOR IN ARRAY DEC 00495000=00069560=
|
|
057 SEGMENTSTART:SAVE STORAGE NOT ALLOWED WITH INTRINSIC OPTION 00500000=00069570=
|
|
098 IOSTMT: ILLEGAL SPECIFIER IN SCOPE STMT: MUST BE >=15. 00505000=00069580=
|
|
099 INLINE: EXTRA : IN STREAM HEAD. 00510000=00069590=
|
|
100 ANYWHERE: UNDECLARED IDENTIFIER. 00515000=00070000=
|
|
101 CHECKER: AN ATTEMPT HAS BEEN MADE TO ADDRESS AN 00520000=00071000=
|
|
IDENTIFIER WHICH IS LOCAL TO ONE PROCEDURE AND GLOBAL00525000=00072000=
|
|
TO ANOTHER. IF THE QUANTITY IS A PROCEDURE NAME OR 00530000=00073000=
|
|
AN OWN VARIABLE THIS RESTRICTION IS RELAXED. 00535000=00074000=
|
|
102 AEXP: CONDITIONAL EXPRESSION IS NOT OF ARITHMETIC TYPEH 00540000=00075000=
|
|
103 PRIMARY: PRIMARY MAY NOT BEGIN WITH A QUANTITY OF THIS 00545000=00076000=
|
|
TYPE. 00550000=00077000=
|
|
104 ANYWHERE: MISSING RIGHT PARENTHESIS. 00555000=00078000=
|
|
105 ANYWHERE: MISSING LEFT PARENTHESIS. 00560000=00079000=
|
|
106 PRIMARY: PRIMARY MAY NOT START WITH DECLARATOR. 00565000=00080000=
|
|
107 BEXP: THE EXPRESSION IS NOT OF BOOLEAN TYPE. 00570000=00081000=
|
|
108 EXPRSS: A RELATION MAY NOT HAVE CONDITIONAL EXPRESSIONS 00575000=00082000=
|
|
AS THE ARITHMETIC EXPRESSIONS. 00580000=00083000=
|
|
109 BOOSEC,SIMBOO, AND BOOCOMP: THE PRIMARY IS NOT BOOLEAN. 00585000=00084000=
|
|
110 BOOCOMP: A NON-BOOLEAN OPERATOR OCCURS IN A BOOLEAN 00590000=00085000=
|
|
EXPRESSION. 00595000=00086000=
|
|
111 BOOPRIM: NO EXPRESSION (ARITHMETIC, BOOLEAN, OR DESIGNA- 00600000=00087000=
|
|
TIONAL) MAY BEGIN WITH A QUANTITY OF THIS TYPE. 00605000=00088000=
|
|
112 BOOPRIM: NO EXPRESSION (ARITHMETIC, BOOLEAN, OR DESIGNA- 00610000=00089000=
|
|
TIONAL) MAY BEGIN WITH A DECLARATOR. 00615000=00090000=
|
|
113 PARSE: EITHER THE SYTAX OR THE RANGE OF THE LITERALS FOR 00620000=00091000=
|
|
A CONCATENATE OPERATOR IS INCORRECT. 00625000=00092000=
|
|
114 DOTSYNTAX: EITHER THE SYNTAX OR THE RANGE OF THE LITERALS00630000=00093000=
|
|
FOR A PARTIAL WORD DESIGNATOR IS INCORRECT. 00635000=00094000=
|
|
115 DEXP: THE EXPRESSION IS NOT OF DESIGNATIONAL TYPE. 00640000=00095000=
|
|
116 IFCLAUSE: MISSING THEN. 00645000=00096000=
|
|
117 BANA: MISSING LEFT BRAKET. 00650000=00097000=
|
|
118 BANA: MISSING RIGHT BRAKET. 00655000=00098000=
|
|
119 COMPOUNDTAIL: MISSING SEMICOLON OR END. 00660000=00099000=
|
|
120 COMPOUNDTAIL: MISSING END. 00665000=00100000=
|
|
121 ACTUALPARAPART: AN INDEXED FILE MAY BE PASSED BY NAME 00670000=00101000=
|
|
ONLY AND ONLY TO A STREAM PROCEDURE - THE STREAM 00675000=00102000=
|
|
PROCEDURE MAY NOT DO A RELEASE ON THIS TYPE PARA- 00680000=00103000=
|
|
METER. 00685000=00104000=
|
|
122 ACTUALPARAPART: STREAM PROCEDURE MAY NOT HAVE AN 00690000=00105000=
|
|
EXPRESSION PASSED TO IT BY NAME. 00695000=00106000=
|
|
123 ACTUALPARAPART: THE ACTUAL AND FORMAL PARAMETERS DO NOT 00700000=00107000=
|
|
AGREE AS TO TYPE. 00705000=00108000=
|
|
124 ACTUALPARAPART: ACTUAL AND FORMAL ARRAYS DO NOT HAVE SAME00710000=00109000=
|
|
NUMBER OF DIMENSIONS. 00715000=00110000=
|
|
125 ACTUALPARAPART: STREAM PROCEDURES MAY NOT BE PASSED AS A 00720000=00111000=
|
|
PARAMETER TO A PROCEDURE. 00725000=00112000=
|
|
126 ACTUALPARAPART: NO ACTUAL PARAMETER MAY BEGIN WITH A 00730000=00113000=
|
|
QUANTITY OF THIS TYPE. 00735000=00114000=
|
|
127 ACTUALPARAPART: THIS TYPE QUANTITY MAY NOT BE PASSED TO A00740000=00115000=
|
|
STREAM PROCEDURE. 00745000=00116000=
|
|
128 ACTUALPARAPART: EITHER ACTUAL AND FORMAL PARAMETERS DO 00750000=00117000=
|
|
NOT AGREE AS TO NUMBER, OR EXTRA RIGHT PARENTHESIS. 00755000=00118000=
|
|
129 ACTUALPARAPART: ILLEGAL PARAMETER DELIMITER. 00760000=00119000=
|
|
130 RELSESTMT: NO FILE NAME. 00765000=00120000=
|
|
131 DOSTMT: MISSING UNTIL. 00770000=00121000=
|
|
132 WHILESTMT: MISSING DO. 00775000=00122000=
|
|
133 LABELR: MISSING C OLON. 00780000=00123000=
|
|
134 LABELR: THE LABEL WAS NOT DECLARED IN THIS BLOCK. 00785000=00124000=
|
|
135 LABELR: THE LABEL HAS ALREADY OCCURED. 00790000=00125000=
|
|
136 FORMATPHRASE: IMPROPER FORMAT EDITING PHRASE. 00795000=00126000=
|
|
137 FORMATPHRASE: A FORMAT EDITING PHRASE DOES NOT HAVE AN 00800000=00127000=
|
|
INTEGER WHERE AN INTEGER IS REQUIRED. 00805000=00128000=
|
|
138 FORMATPHRASE: THE WIDTH IS TOO SMALL IN E OR F EDITING 00810000=00129000=
|
|
PHRASE. 00815000=00130000=
|
|
139 TABLE: DEFINE IS NESTED MORE THAN EIGHT DEEP. 00820000=00131000=
|
|
140 NEXTENT: AN INTEGER IN A FORMAT IS GREATER THAN 1023. 00825000=00132000=
|
|
141 SCANNER: INTEGER OR IDENTIFIER HAS MORE THAN 63 00830000=00133000=
|
|
CHARACTORS. 00835000=00134000=
|
|
142 DEFINEGEN: A DEFINE CONTAINS MORE THAN 2047 CHARACTORS 00840000=00135000=
|
|
(BLANK SUPPRESSED). 00845000=00136000=
|
|
143 COMPOUNDTAIL: EXTRA END. 00850000=00137000=
|
|
144 STMT: NO STATEMENT MAY START WITH THIS TYPE IDENTIFIER. 00855000=00138000=
|
|
145 STMT: NO STATEMENT MAY START WITH THIS TYPE QUANTITY. 00860000=00139000=
|
|
146 STMT: NO STATEMENT MAY START WITH A DECLARATOR - MAY BE 00865000=00140000=
|
|
A MISSING END OF A PROCEDURE OR A MISPLACED 00870000=00141000=
|
|
DECLARATION. 00875000=00142000=
|
|
147 SWITCHGEN: MORE THAN 256 EXPRESSIONS IN A SWITCH 00880000=00143000=
|
|
DECLARATION. 00885000=00144000=
|
|
148 GETSPACE: MORE THAN 1023 PROGRAM REFERENCE TABLE CELLS 00890000=00145000=
|
|
ARE REQUIRED FOR THIS PROGRAM. 00895000=00146000=
|
|
149 GETSPACE: MORE THAN 255 STACK CELLS ARE REQUIRED FOR THIS00900000=00147000=
|
|
PROCEDURE. 00905000=00148000=
|
|
150 ACTUALPARAPART: CONSTANTS MAY NOT BE PASSED BY NAME TO 00910000=00149000=
|
|
STREAM PROCEDURES. 00915000=00150000=
|
|
151 FORSTMT: IMPROPER FOR INDEX VARIABLE. 00920000=00151000=
|
|
152 FORSTMT: MISSING LEFT ARROW FOLLOWING INDEX VARIABLE. 00925000=00152000=
|
|
153 FORSTMT: MISSING UNTIL OR WHILE IN STEP ELEMENT. 00930000=00153000=
|
|
154 FORSTMT: MISSING DO IN FOR CLAUSE. 00935000=00154000=
|
|
155 IFEXP: MISSING ELSE 00940000=00155000=
|
|
156 LISTELEMENT: A DESIGNATIONAL EXPRESSION MAY NOT BE A LIST00945000=00156000=
|
|
ELEMENT. 00950000=00157000=
|
|
157 LISTELEMENT: A ROW DESIGNATOR MAY NOT BE A LIST ELEMENT. 00955000=00158000=
|
|
158 LISTELEMENT: MISSING RIGHT BRAKET IN GROUP OF ELEMENTS 00960000=00159000=
|
|
159 PROCSTMT: ILLEGAL USE OF PROCEDURE OR FUNCTION IDENTIFIER00965000=00160000=
|
|
160 PURGE: DECLARED LABEL DOES NOT OCCUR. 00970000=00161000=
|
|
161 PURGE: DECLARED FORWARD PROCEDURE DOES NOT OCCUR. 00975000=00162000=
|
|
163 ZIPSTMT: MISSING COMMA IN ZIP STATEMENT 00980000=00163000=
|
|
163 FORMATPHRASE: THE WIDTH OF A FIELD IS MORE THAN 63. 00985000=00164000=
|
|
200 EMIT: SEGMENT TOO LARGE ( > 4093SYLLABLES). 00990000=00165000=
|
|
201 SIMPLE VARIABLE: PARTIAL WORD DESIGNATOR NOT LEFT-MOST 00995000=00166000=
|
|
IN A LEFT PART LIST. 01000000=00167000=
|
|
202 SIMPLE VARIABLE: MISSING . OR ~ . 01005000=00168000=
|
|
203 SUBSCRIPTED VARIABLE: WRONG NUMBER OF SUBSCRIPTS IN A ROW 01010000=00169000=
|
|
DESIGNATOR. 01015000=00170000=
|
|
204 SUBSCRIPTED VARIABLE: MISSING ] IN A ROW DESIGNATOR. 01020000=00171000=
|
|
205 SUBSCRIPTED VARIABLE: A ROW DESIGNATOR APPEARS OUTSIDE OF 01025000=00172000=
|
|
AN ACTUAL PARAMETER LIST OR FILL STATEMENT. 01030000=00173000=
|
|
206 SUBSCRIPTED VARIABLE: MISSING ]. 01035000=00174000=
|
|
207 SUBSCRIPTED VARIABLE: MISSING [. 01040000=00175000=
|
|
208 SUBSCRIPTED VARIABLE: WRONG NUMBER OF SUBSCRIPTS. 01045000=00176000=
|
|
209 SUBSCRIPTED VARIABLE: PARTIAL WORD DESIGNATOR NOT LEFT- 01050000=00177000=
|
|
MOST IN A LEFT PART LIST. 01055000=00178000=
|
|
210 SUBSCRIPTED VARIABLE: MISSING , OR ~ . 01060000=00179000=
|
|
211 VARIABLE: PROCEDURE ID USED OUTSIDE OF SCOPE IN LEFT PART.01065000=00180000=
|
|
250 STREAM STMT:ILLEGAL STREAM STATEMENT. 01070000=00181000=
|
|
251 ANY STREAM STMT PROCEDURE: MISSING ~. 01075000=00182000=
|
|
252 INDEX: MISSING + OR - . 01080000=00183000=
|
|
253 INDEX: MISSING NUMBER OR STREAM VARIABLE. 01085000=00184000=
|
|
254 EMITC: NUMBER>63 OR NUMBER OF LABELS+LOCALS+FORMALS>63. 01090000=00185000=
|
|
255 DSS: MISSING STRING IN DS~ LIT STATEMENT. 01095000=00186000=
|
|
256 RELEASES: MISSING PARENTHESIS OR FILE IDENTIFIER IS NOT 01100000=00187000=
|
|
A FORMAL PARAMETER. 01105000=00188000=
|
|
257 GOTOS,LABELS,OR JUMPS: LABEL SPECIFIED IS NOT ON THE SAME 01110000=00189000=
|
|
NEST LEVEL AS A PRECEDING APPEARANCE OF THE 01115000=00190000=
|
|
LABEL. 01120000=00191000=
|
|
258 LABELS: MISSING :. 01125000=00192000=
|
|
259 LABELS: LABEL APPEARS MORE THAN ONCE. 01130000=00193000=
|
|
260 GOTOS: MISSING LABEL IN A GO TO OR JUMP OUT TO STATEMENT. 01135000=00194000=
|
|
261 JUMPS: MISSING OUT IN JUMP OUT STATEMENT. 01140000=00195000=
|
|
262 NESTS: MISSING PARENTHESIS. 01145000=00196000=
|
|
263 IFS:MISSING SC IN IF STATEMENT. 01150000=00197000=
|
|
264 IFS: MISSING RELATIONAL IN IF STATEMENT. 01155000=00198000=
|
|
265 IFS: MISSING ALPHA,DC OR STRING IN IF STATEMENT. 01160000=00199000=
|
|
266 IFS: MISSING THEN INIF STATEMENT. 01165000=00200000=
|
|
267 FREDFIX: THERE ARE GO TO STATEMENTS IN WHICH THE LABEL IS 01170000=00201000=
|
|
UNDEFINED. 01175000=00202000=
|
|
268 EMITC: A REPEAT INDEX >=64 WAS SPECIFIED OR TOO MANY 01180000=00203000=
|
|
FORMAL PARAMETERS,LOCALS AND LABELS. 01185000=00204000=
|
|
269 TABLE: A CONSTANT IS SPECIFIED WHICH IS TOO LARGE 01190000=00205000=
|
|
OR TOO SMALL. 01195000=00206000=
|
|
281 DBLSTMT: MISSING (. 01200000=00207000=
|
|
282 DBLSTMT: TOO MANY OPERATORS. 01205000=00208000=
|
|
283 DBLSTMT: TOO MANY OPERANDS. 01210000=00209000=
|
|
284 DBLSTMT: MISSING , . 01215000=00210000=
|
|
285 DBLSTMT: MISSING ) . 01220000=00211000=
|
|
300 FILLSTMT: THE IDENTIFIER FOLLOWING "FILL" IS NOT 01225000=00212000=
|
|
AN ARRAY IDENTIFIER. 01230000=00213000=
|
|
301 FILLSTMT: MISSING "WITH" IN FILL STATEMENT. 01235000=00214000=
|
|
302 FILLSTMT: IMPROPER FILL ELEMENT. 01240000=00215000=
|
|
303 FILLSTMT: NON-OCTAL CHARACTER IN OCTAL FILL. 01245000=00216000=
|
|
304 FILLSTMT: IMPROPER ARRAY ROW DESIGNATOR IN FILL. 01250000=00217000=
|
|
305 FILLSTMT: DATA IN FILL EXCEEDS 1023 WORDS. 01255000=00218000=
|
|
306 FILLSTMT: ODD NUMBER OF PARENTHESES IN FILL. 01260000=00218110=
|
|
400 MERRIMAC:MISSING FILE ID IN MONITOR DEC. 01265000=00219000=
|
|
401 MERRIMAC:MISSING LEFT PARENTHESIS IN MONITOR DEC. 01270000=00220000=
|
|
402 MERRIMAC:IMPROPER SUBSCRIPT FOR MONITOR LIST ELEMENT. 01275000=00221000=
|
|
403 MERRIMAC:IMPROPER SUBSCRIPT EXPRESSION DELIMITER IN 01280000=00222000=
|
|
MONITOR LIST ELEMENT. 01285000=00223000=
|
|
404 MERRIMAC:IMPROPER NUMBER OF SUBSCRIPTS IN MONITOR LIST 01290000=00224000=
|
|
ELEMENT. 01295000=00225000=
|
|
405 MERRIMAC:LABEL OR SWITCH MONITORED AT IMPROPER LAVEL. 01300000=00226000=
|
|
406 MERRIMAC:IMPROPER MONITOR LIST ELEMENT. 01305000=00227000=
|
|
407 MERRIMAC:MISSING RIGHT PARENTHESIS IN MONITOR DECLARATION.01310000=00228000=
|
|
408 MERRIMAC:IMPROPER MONITOR DECLARATION DELIMITER. 01315000=00229000=
|
|
409 DMUP:MISSING FILE IDENTIFIER IN DUMP DECLARATION. 01320000=00230000=
|
|
410 DMUP:MISSING LEFT PARENTHESIS IN DUMP DECLARATION. 01325000=00231000=
|
|
411 DMUP:SUBSCRIPTED VARIABLE IN DUMP LIST HAS WRONG NUMBER OF01330000=00232000=
|
|
SUBSCRIPTS. 01335000=00233000=
|
|
412 DMUP:SUBSCRIPTED VARIABLE IN DUMP LIST HAS WRONG NUMBER OF01340000=00234000=
|
|
SUBSCRIPTS. 01345000=00235000=
|
|
413 DMUP:IMPROPER ARRAY DUMP LIST ELEMENT. 01350000=00236000=
|
|
414 DMUP:ILLEGAL DUMP LIST ELEMENT. 01355000=00237000=
|
|
415 DMUP:MORE THAN 100 LABELS APPEAR AS DUMP LIST ELEMENTS 01360000=00238000=
|
|
IN ONE DUMP DECLARATION. 01365000=00239000=
|
|
416 DMUP:ILLEGAL DUMP LIST ELEMENT DELIMITER. 01370000=00240000=
|
|
417 DMUP:MISSING DUMP LABEL IN DUMP DECLARATION. 01375000=00241000=
|
|
418 DMUP:MISSING COLON IN DUMP DECLARATION. 01380000=00242000=
|
|
419 DMUP:IMPROPER DUMP DECLARATION DELIMITER. 01385000=00243000=
|
|
420 READSTMT:MISSING LEFT PARENTHESIS IN READ STATEMENT. 01390000=00244000=
|
|
421 READSTMT:MISSING LEFT PARENTHESIS IN READ REVERSE 01395000=00245000=
|
|
STATEMENT. 01400000=00246000=
|
|
422 READSTMT:MISSING FILE IN READ STATEMENT. 01405000=00247000=
|
|
423 READSTMT:IMPROPER RELEASE INDICATOR. 01410000=00248000=
|
|
424 READSTMT:IMPROPER FILE DELIMITER IN READ STATEMENT 01415000=00249000=
|
|
425 READSTMT:IMPROPER FORMAT DELIMITER IN READ STATEMENT. 01420000=00250000=
|
|
426 READSTMT:IMPROPER DELIMITER FOR SECOND PARAMETER IN READ 01425000=00251000=
|
|
STATEMENT. 01430000=00252000=
|
|
427 READSTMT:IMPROPER ROW DESIGNATOR IN READ STATEMENT. 01435000=00253000=
|
|
428 READSTMT:IMPROPER ROW DESIGNATOR DELIMITER IN READ 01440000=00254000=
|
|
STATEMENT. 01445000=00255000=
|
|
429 READSTMT:MISSING ROW DESIGNATOR IN READ STATEMENT. 01450000=00256000=
|
|
430 READSTMT:IMPROPER DELIMITER PRECEEDING THE LIST IN A READ 01455000=00257000=
|
|
STATEMENT. 01460000=00258000=
|
|
431 HANDLETHETAILENDOFAREADORSPACESTATEMENT:IMPROPER END OF 01465000=00259000=
|
|
FILE LABEL IN READ OR SPACE STATEMENT. 01470000=00260000=
|
|
432 HANDLETHETAILENDOFAREADORSPACESTATEMENT:IMPROPER PARITY 01475000=00261000=
|
|
LABEL IN READ OR SPACE STATEMENT. 01480000=00262000=
|
|
433 HANDLETHETAILENDOFAREADORSPACESTATEMENT:MISSING RIGHT 01485000=00263000=
|
|
BRACKET IN READ OR SPACE STATEMENT. 01490000=00264000=
|
|
434 SPACESTMT:MISSING LEFT PARENTHESIS IN SPACE STATEMENT. 01495000=00265000=
|
|
435 SPACESTMT:IMPROPER FILE IDENTIFIER IN SPACE STATEMENT. 01500000=00266000=
|
|
436 SPACESTMT:MISSING COMMA IN SPACE STATEMENT. 01505000=00267000=
|
|
437 SPACESTMT:MISSING RIGHT PARENTHESIS IN SPACE STATEMENT. 01510000=00268000=
|
|
438 WRITESTMT:MISSING LEFT PARENTHESIS IN A WRITE STATEMENT. 01515000=00269000=
|
|
439 WRITESTMT:IMPROPER FILE IDENTIFIER IN A WRITE STATEMENT. 01520000=00270000=
|
|
440 WRITESTMT:IMPROPER DELIMITER FOR FIRST PARAMETER IN A 01525000=00271000=
|
|
WRITE STATEMENT. 01530000=00272000=
|
|
441 WRITESTMT:MISSING RIGHT BRACKET IN CARRIAGE CONTROL PART 01535000=00273000=
|
|
OF A WRITE STATEMENT. 01540000=00274000=
|
|
442 WRITESTMT:ILLEGAL CARRIAGE CONTROL DELIMITER IN A WRITE 01545000=00275000=
|
|
STATEMENT. 01550000=00276000=
|
|
443 WRITESTMT:IMPROPER SECOND PARAMETER DELIMITER IN WRITE 01555000=00277000=
|
|
STATEMENT. 01560000=00278000=
|
|
444 WRITESTMT:IMPROPER ROW DESIGNATOR IN A WRITE STATEMENT. 01565000=00279000=
|
|
445 WRITESTMT:MISSING RIGHT PARENTHESIS AFTER A ROW DESIGNATOR01570000=00280000=
|
|
IN A WRITE STATEMENT. 01575000=00281000=
|
|
446 WRITESTMT:MISSING ROW DESIGNATOR IN A WRITE STATEMENT. 01580000=00282000=
|
|
447 WRITESTMT:IMPROPER DELIMITER PRECEEDING A LIST IN A WRITE 01585000=00283000=
|
|
STATEMENT. 01590000=00284000=
|
|
448 WRITESTMT:IMPROPER LIST DELIMITER IN A WRITE STATEMENT. 01595000=00285000=
|
|
449 READSTMT:IMPROPER LIST DELIMITER IN A READ STATEMENT. 01600000=00286000=
|
|
450 LOCKSTMT:MISSING LEFT PARENTHESIS IN A LOCK STATEMENT. 01605000=00287000=
|
|
451 LOCKSTMT:IMPROPER FILE PART IN A LOCK STATEMENT. 01610000=00288000=
|
|
452 LOCKSTMT:MISSING COMMA IN A LOCK STATEMENT. 01615000=00289000=
|
|
453 LOCKSTMT:IMPROPER UNIT DISPOSITION PART IN A LOCK 01620000=00290000=
|
|
STATEMENT. 01625000=00291000=
|
|
454 LOCKSTMT:MISSING RIGHT PARENTHESIS IN A LOCK STATEMENT. 01630000=00292000=
|
|
455 CLOSESTMT:MISSING LEFT PARENTHESIS IN A CLOSE STATEMENT. 01635000=00293000=
|
|
456 CLOSESTMT:IMPROPER FILE PART IN A CLOSE STATEMENT. 01640000=00294000=
|
|
457 CLOSESTMT:MISSING COMMA IN A CLOSE STATEMENT. 01645000=00295000=
|
|
458 CLOSESTMT:IMPROPER UNIT DISPOSITION PART IN A CLOSE 01650000=00296000=
|
|
STATEMENT. 01655000=00297000=
|
|
459 CLOSESTMT:MISSING RIGHT PARENTHESIS IN A CLOSE STATEMENT. 01660000=00298000=
|
|
460 RWNDSTMT:MISSING LEFT PARENTHESIS IN A REWIND STATEMENT. 01665000=00299000=
|
|
461 RWNDSTMT:IMPROPER FILE PART IN A REWIND STATEMENT. 01670000=00300000=
|
|
462 RWNDSTMT:MISSING RIGHT PARENTHESIS IN A REWIND STATEMENT. 01675000=00301000=
|
|
463 BLOCK:A MONITOR DECLARATION APPEARS IN THE SPECIFICATION 01680000=00302000=
|
|
PART OF A PROCEDURE. 01685000=00303000=
|
|
464 BLOCK:A DUMP DECLARATION APPEARS IN THE SPECIFICATION PART01690000=00304000=
|
|
OF A PROCEDURE. 01695000=00305000=
|
|
465 INLINE: MISSING PARAMETER IDENTIFIER IN INLINE STREAM 01700000=00305001=
|
|
STATEMENT PARAMETER LIST. 01705000=00305002=
|
|
500 .ID: NEEDS DOUBLE PERIOD FOR PRTE IF PAST 512 01710000=00305100=
|
|
520 TABLE: STRING LONGER THAN ONE WORD (48 BITS). 01715000=00305200=
|
|
521 TABLE: STRING CONTAINS A NON-PERMISSIBLE CHARACTER. 01720000=00305300=
|
|
600 DOLLARCARD: NUMBER EXPECTED. 01725000=00400000=
|
|
601 DOLLARCARD: OPTION IDENTIFIER EXPECTED. 01730000=00401000=
|
|
602 DOLLARCARD: TOO MANY USER-DEFINED OPTIONS. 01735000=00403000=
|
|
603 DOLLARCARD: UNRECOGNIZED WORD OR CHARACTER. 01740000=00404000=
|
|
604 DOLLARCARD: MISMATCHED PARENTHESES. 01745000=00405000=
|
|
605 DOLLARCARD: $ IN CARD COLUMN 1 FOR OMIT CARD 01750000=00406000=
|
|
610 READACARD: SEQUENCE ERROR. 01755000=00410000=
|
|
611 READACARD: ERROR LIMIT HAS BEEN EXCEEDED. 01760000=00411000=
|
|
; 01765000=00490000=
|
|
BEGIN 01770000=00500000=
|
|
COMMENT OUTERMOST BLOCK; 01775000=00500000=
|
|
INTEGER 01780000=00501000=
|
|
ERRORCOUNT; COMMENT NUMBER OF ERROR MSGS. MCP WILL TYPE 01790000=00501000=
|
|
SYNTX ERR AT EOJ IF THIS IS NON-ZERO. MUST BE @R+25; 01795000=00502000=
|
|
INTEGER 01800000=00503000=
|
|
SAVETIME; COMMENT SAVE-FACTOR FOR CODE FILE, GIVEN BY MCP. 01810000=00503000=
|
|
IF COMPILE & GO =0, FOR SYNTAX, =-1. MUST BE AT R+26;01815000=00504000=
|
|
INTEGER 01820000=00504100=
|
|
CARDNUMBER; % SEQ # OF CARD BEING PROCESSED. 01825000=00504100=
|
|
INTEGER 01830000=00504150=
|
|
CARDCOUNT; % NUMBER OF CARDS PROCESSED. 01835000=00504150=
|
|
BOOLEAN 01840000=00504700=
|
|
BUILDLINE; 01845000=00504700=
|
|
COMMENT RR1-RR11 ARE USED IN SOME PROCEDURES IN 01850000=00505000=
|
|
PLACE OF LOCALS TO SAVE STACK SPACE; 01855000=00506000=
|
|
REAL 01860000=00507000=
|
|
RR1, 01865000=00507000=
|
|
RR2, 01870000=00507000=
|
|
RR3, 01875000=00507000=
|
|
RR4, 01880000=00507000=
|
|
RR5, 01885000=00507000=
|
|
RR6, 01890000=00507000=
|
|
RR7, 01895000=00507000=
|
|
RR8, 01900000=00507000=
|
|
RR9, 01905000=00507000=
|
|
RR10, 01910000=00507000=
|
|
RR11; 01915000=00507000=
|
|
02000000
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02000100
|
|
%% STREAM PROCEDURE EMULATION & BIC TRANSLATION MODULE %%02000200
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02000300
|
|
02000400
|
|
DEFINE 02000500
|
|
WOFF = [14:15] #, % STREAM INDEX WORD OFFSET 02000600
|
|
COFF = [17:3] #, % STREAM INDEX CHAR OFFSET 02000700
|
|
STREAMLOCALS = ARRAY REFERENCE MBASE, SBASE[0] #; 02000800
|
|
02015000
|
|
REAL 02015100
|
|
AREG, % STREAM SOURCE WORD BUFFER 02015200
|
|
YREG, % STREAM SOURCE CHAR BUFFER 02015300
|
|
MREG, % STREAM SOURCE WORD INDEX 02015400
|
|
GREG, % STREAM SOURCE CHAR INDEX 02015500
|
|
HREG, % STREAM SOURCE BIT INDEX 02015600
|
|
BREG, % STREAM DEST WORD 02015700
|
|
ZREG, % STREAM DEST CHAR BUFFER 02015800
|
|
NREG, % STREAM DEST ALIGNMENT INDEX 02015900
|
|
SREG, % STREAM DEST WORD INDEX 02016000
|
|
KREG, % STREAM DEST CHAR INDEX 02016100
|
|
VREG, % STREAM DEST BIT INDEX 02016200
|
|
TALLY; % STREAM TALLY REGISTER 02016300
|
|
02017000
|
|
BOOLEAN 02017100
|
|
TFFF; % TRUE/FALSE FLIP-FLOP 02017200
|
|
02018000
|
|
ARRAY 02018100
|
|
STREAMTEMPS[0:15], % STREAM TEMP SOURCE 02018200
|
|
STREAMTEMPD[0:15], % STREAM TEMP DESTINATION 02018300
|
|
EBCDICBUFF[0:21]; % EBCDIC I/O BUFFER 02018400
|
|
02030000
|
|
VALUE ARRAY 02030100
|
|
BICCOLLATE ( % INDEX BY INTERNAL CODE TO GET COLLATION VALUE 02030200
|
|
3"65", % 00 0 DIGIT-ZERO 02030300
|
|
3"66", % 01 1 02030310
|
|
3"67", % 02 2 02030320
|
|
3"70", % 03 3 02030330
|
|
3"71", % 04 4 02030340
|
|
3"72", % 05 5 02030350
|
|
3"73", % 06 6 02030360
|
|
3"74", % 07 7 02030370
|
|
3"75", % 10 8 02030380
|
|
3"76", % 11 9 02030390
|
|
3"23", % 12 # 02030400
|
|
3"24", % 13 @ 02030410
|
|
3"77", % 14 ? 02030420
|
|
3"25", % 15 : 02030430
|
|
3"26", % 16 > 02030440
|
|
3"27", % 17 } GEQ 02030450
|
|
3"30", % 20 + 02030460
|
|
3"31", % 21 A 02030470
|
|
3"32", % 22 B 02030480
|
|
3"33", % 23 C 02030490
|
|
3"34", % 24 D 02030500
|
|
3"35", % 25 E 02030510
|
|
3"36", % 26 F 02030520
|
|
3"37", % 27 G 02030530
|
|
3"40", % 30 H 02030540
|
|
3"41", % 31 I 02030550
|
|
3"01", % 32 . 02030560
|
|
3"02", % 33 [ 02030570
|
|
3"06", % 34 & 02030580
|
|
3"03", % 35 ( 02030590
|
|
3"04", % 36 < 02030600
|
|
3"05", % 37 ~ LEFT-ARROW 02030610
|
|
3"42", % 40 | TIMES 02030620
|
|
3"43", % 41 J 02030630
|
|
3"44", % 42 K 02030640
|
|
3"45", % 43 L 02030650
|
|
3"46", % 44 M 02030660
|
|
3"47", % 45 N 02030670
|
|
3"50", % 46 O LETTER-O 02030680
|
|
3"51", % 47 P 02030690
|
|
3"52", % 50 Q 02030700
|
|
3"53", % 51 R 02030710
|
|
3"07", % 52 $ 02030720
|
|
3"10", % 53 * 02030730
|
|
3"14", % 54 - 02030740
|
|
3"11", % 55 ) 02030750
|
|
3"12", % 56 ; 02030760
|
|
3"13", % 57 { LEQ 02030770
|
|
3"00", % 60 BLANK 02030780
|
|
3"15", % 61 / 02030790
|
|
3"55", % 62 S 02030800
|
|
3"56", % 63 T 02030810
|
|
3"57", % 64 U 02030820
|
|
3"60", % 65 V 02030830
|
|
3"61", % 66 W 02030840
|
|
3"62", % 67 X 02030850
|
|
3"63", % 70 Y 02030860
|
|
3"64", % 71 Z 02030870
|
|
3"16", % 72 , 02030880
|
|
3"17", % 73 % 02030890
|
|
3"54", % 74 ! NEQ 02030900
|
|
3"20", % 75 = 02030910
|
|
3"21", % 76 ] 02030920
|
|
3"22"); % 77 " 02030930
|
|
02040000
|
|
TRUTHSET 02040100
|
|
BICALPHA( % STREAM PROCEDURE "SC IN ALPHA" CHARACTER SET 02040200
|
|
48"11" OR % 21 A 02043000
|
|
48"12" OR % 22 B 02043010
|
|
48"13" OR % 23 C 02043020
|
|
48"14" OR % 24 D 02043030
|
|
48"15" OR % 25 E 02043040
|
|
48"16" OR % 26 F 02043050
|
|
48"17" OR % 27 G 02043060
|
|
48"18" OR % 30 H 02043070
|
|
48"19" OR % 31 I 02043080
|
|
48"21" OR % 41 J 02043090
|
|
48"22" OR % 42 K 02043100
|
|
48"23" OR % 43 L 02043110
|
|
48"24" OR % 44 M 02043120
|
|
48"25" OR % 45 N 02043130
|
|
48"26" OR % 46 O LETTER-O 02043140
|
|
48"27" OR % 47 P 02043150
|
|
48"28" OR % 50 Q 02043160
|
|
48"29" OR % 51 R 02043170
|
|
48"32" OR % 62 S 02043180
|
|
48"33" OR % 63 T 02043190
|
|
48"34" OR % 64 U 02043200
|
|
48"35" OR % 65 V 02043210
|
|
48"36" OR % 66 W 02043220
|
|
48"37" OR % 67 X 02043230
|
|
48"38" OR % 70 Y 02043240
|
|
48"39" OR % 71 Z 02043250
|
|
48"00" OR % 00 0 DIGIT-ZERO 02043260
|
|
48"01" OR % 01 1 02043270
|
|
48"02" OR % 02 2 02043280
|
|
48"03" OR % 03 3 02043290
|
|
48"04" OR % 04 4 02043300
|
|
48"05" OR % 05 5 02043310
|
|
48"06" OR % 06 6 02043320
|
|
48"07" OR % 07 7 02043330
|
|
48"08" OR % 10 8 02043340
|
|
48"09" OR % 11 9 02043350
|
|
48"0C"); % 14 ? 02043360
|
|
02045000
|
|
TRANSLATETABLE 02045100
|
|
BICTOEBCDIC ( % 02045200
|
|
EBCDIC TO 48"FF", 02045300
|
|
48"00" TO "0", % DIGIT-ZERO 02045310
|
|
48"01" TO "1", 02045320
|
|
48"02" TO "2", 02045330
|
|
48"03" TO "3", 02045340
|
|
48"04" TO "4", 02045350
|
|
48"05" TO "5", 02045360
|
|
48"06" TO "6", 02045370
|
|
48"07" TO "7", 02045380
|
|
48"08" TO "8", 02045390
|
|
48"09" TO "9", 02045400
|
|
48"0A" TO "#", 02045410
|
|
48"0B" TO "@", 02045420
|
|
48"0C" TO "?", 02045430
|
|
48"0D" TO ":", 02045440
|
|
48"0E" TO ">", 02045450
|
|
48"0F" TO "}", % GEQ 02045460
|
|
48"10" TO "+", 02045470
|
|
48"11" TO "A", 02045480
|
|
48"12" TO "B", 02045490
|
|
48"13" TO "C", 02045500
|
|
48"14" TO "D", 02045510
|
|
48"15" TO "E", 02045520
|
|
48"16" TO "F", 02045530
|
|
48"17" TO "G", 02045540
|
|
48"18" TO "H", 02045550
|
|
48"19" TO "I", 02045560
|
|
48"1A" TO ".", 02045570
|
|
48"1B" TO "[", 02045580
|
|
48"1C" TO "&", 02045590
|
|
48"1D" TO "(", 02045600
|
|
48"1E" TO "<", 02045610
|
|
48"1F" TO "~", % LEFT-ARROW 02045620
|
|
48"20" TO "|", % TIMES 02045630
|
|
48"21" TO "J", 02045640
|
|
48"22" TO "K", 02045650
|
|
48"23" TO "L", 02045660
|
|
48"24" TO "M", 02045670
|
|
48"25" TO "N", 02045680
|
|
48"26" TO "O", % LETTER-O 02045690
|
|
48"27" TO "P", 02045700
|
|
48"28" TO "Q", 02045710
|
|
48"29" TO "R", 02045720
|
|
48"2A" TO "$", 02045730
|
|
48"2B" TO "*", 02045740
|
|
48"2C" TO "-", 02045750
|
|
48"2D" TO ")", 02045760
|
|
48"2E" TO ";", 02045770
|
|
48"2F" TO "{", % LEQ 02045780
|
|
48"30" TO " ", % BLANK 02045790
|
|
48"31" TO "/", 02045800
|
|
48"32" TO "S", 02045810
|
|
48"33" TO "T", 02045820
|
|
48"34" TO "U", 02045830
|
|
48"35" TO "V", 02045840
|
|
48"36" TO "W", 02045850
|
|
48"37" TO "X", 02045860
|
|
48"38" TO "Y", 02045870
|
|
48"39" TO "Z", 02045880
|
|
48"3A" TO ",", 02045890
|
|
48"3B" TO "%", 02045900
|
|
48"3C" TO "!", % NEQ 02045910
|
|
48"3D" TO "=", 02045920
|
|
48"3E" TO "]", 02045930
|
|
48"3F" TO """), % QUOTE 02045940
|
|
EBCDICTOBIC ( 02046000
|
|
EBCDIC TO 48"0C", % 6"?" 02046100
|
|
"0" TO 48"00", % DIGIT-ZERO 02046200
|
|
"1" TO 48"01", 02046210
|
|
"2" TO 48"02", 02046220
|
|
"3" TO 48"03", 02046230
|
|
"4" TO 48"04", 02046240
|
|
"5" TO 48"05", 02046250
|
|
"6" TO 48"06", 02046260
|
|
"7" TO 48"07", 02046270
|
|
"8" TO 48"08", 02046280
|
|
"9" TO 48"09", 02046290
|
|
"#" TO 48"0A", 02046300
|
|
"@" TO 48"0B", 02046310
|
|
"?" TO 48"0C", 02046320
|
|
":" TO 48"0D", 02046330
|
|
">" TO 48"0E", 02046340
|
|
"}" TO 48"0F", % GEQ 02046350
|
|
"+" TO 48"10", 02046360
|
|
"A" TO 48"11", 02046370
|
|
"B" TO 48"12", 02046380
|
|
"C" TO 48"13", 02046390
|
|
"D" TO 48"14", 02046400
|
|
"E" TO 48"15", 02046410
|
|
"F" TO 48"16", 02046420
|
|
"G" TO 48"17", 02046430
|
|
"H" TO 48"18", 02046440
|
|
"I" TO 48"19", 02046450
|
|
"." TO 48"1A", 02046460
|
|
"[" TO 48"1B", 02046470
|
|
"&" TO 48"1C", 02046480
|
|
"(" TO 48"1D", 02046490
|
|
"<" TO 48"1E", 02046500
|
|
"~" TO 48"1F", % LEFT-ARROW 02046510
|
|
"|" TO 48"20", % TIMES 02046520
|
|
"J" TO 48"21", 02046530
|
|
"K" TO 48"22", 02046540
|
|
"L" TO 48"23", 02046550
|
|
"M" TO 48"24", 02046560
|
|
"N" TO 48"25", 02046570
|
|
"O" TO 48"26", % LETTER-O 02046580
|
|
"P" TO 48"27", 02046590
|
|
"Q" TO 48"28", 02046600
|
|
"R" TO 48"29", 02046610
|
|
"$" TO 48"2A", 02046620
|
|
"*" TO 48"2B", 02046630
|
|
"-" TO 48"2C", 02046640
|
|
")" TO 48"2D", 02046650
|
|
";" TO 48"2E", 02046660
|
|
"{" TO 48"2F", % LEQ 02046670
|
|
" " TO 48"30", % BLANK 02046680
|
|
"/" TO 48"31", 02046690
|
|
"S" TO 48"32", 02046700
|
|
"T" TO 48"33", 02046710
|
|
"U" TO 48"34", 02046720
|
|
"V" TO 48"35", 02046730
|
|
"W" TO 48"36", 02046740
|
|
"X" TO 48"37", 02046750
|
|
"Y" TO 48"38", 02046760
|
|
"Z" TO 48"39", 02046770
|
|
"," TO 48"3A", 02046780
|
|
"%" TO 48"3B", 02046790
|
|
"!" TO 48"3C", % NEQ 02046800
|
|
"=" TO 48"3D", 02046810
|
|
"]" TO 48"3E", 02046820
|
|
""" TO 48"3F"); % QUOTE 02046830
|
|
02050000
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02050100
|
|
DEFINE STREAMSETSI(A, X) = 02050200
|
|
BEGIN COMMENT 02050300
|
|
SETS THE SOURCE INDEX REGISTERS TO AN ARRAY. EMULATES RSA. 02050400
|
|
; 02050500
|
|
MBASE:= A; 02050600
|
|
MREG:= (X).WOFF; 02050700
|
|
GREG:= (X).COFF; 02050800
|
|
HREG:= 0; 02050900
|
|
END STREAMSETSI #; 02051000
|
|
02051100
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02051200
|
|
DEFINE STREAMSETLOCSI(WD) = 02051300
|
|
BEGIN COMMENT 02051400
|
|
SETS THE SOURCE INDEX REGISTERS TO A SCALAR, WHICH IS STORED 02051500
|
|
AND OPERATED ON IN STREAMTEMPS[*]. EMULATES RSA. 02051600
|
|
; 02051700
|
|
STREAMTEMPS[0]:= (WD); 02051800
|
|
MBASE:= STREAMTEMPS; 02051900
|
|
MREG:= GREG:= HREG:= 0; 02052000
|
|
END STREAMSETLOCSI #; 02052100
|
|
02052200
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02052300
|
|
DEFINE STREAMGETSI = 02052400
|
|
COMMENT 02052500
|
|
STREAMGETSI CONSTRUCTS A BINARY WORD FROM THE SOURCE INDEX 02052600
|
|
REGISTERS. EMULATES SSA (SORT OF). 02052700
|
|
; 02052800
|
|
(0 & (MREG)WOFF & (GREG)COFF) #; 02052900
|
|
02053000
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02053100
|
|
DEFINE STREAMGETSC = 02053200
|
|
COMMENT 02053300
|
|
STREAMGETSC RETURNS THE CURRENT SOURCE CHARACTER. MOSTLY USED 02053400
|
|
INTERNAL TO THE STREAM EMULATION PROCEDURES. 02053500
|
|
; 02053600
|
|
(MBASE[MREG].[47-GREG*6:6]) #; 02053700
|
|
02053800
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02053900
|
|
DEFINE STREAMTESTSB = 02054000
|
|
COMMENT 02054100
|
|
TESTS THE BIT AT THE CURRENT SOURCE INDEX AND RETURNS TRUE 02054200
|
|
IF IT IS SET. DOES NOT ADVANCE THE SOURCE INDEX. EMULATES BIT. 02054300
|
|
; 02054400
|
|
(TFFF:= BOOLEAN(MBASE[MREG].[47-GREG*6-HREG:1])) #; 02054500
|
|
02054600
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02054700
|
|
DEFINE STREAMADJUSTSICHAR = 02054800
|
|
BEGIN COMMENT 02054900
|
|
ADJUSTS THE SOURCE INDEX FORWARD TO THE NEXT CHARACTER BOUNDARY, 02055000
|
|
IF NECESSARY. USED INTERALLY BY THE EMULATION PROCEDURES. 02055100
|
|
; 02055200
|
|
IF HREG > 0 THEN 02055300
|
|
BEGIN 02055400
|
|
HREG:= 0; 02055500
|
|
IF GREG < 7 THEN 02055600
|
|
GREG:= *+1 02055700
|
|
ELSE 02055800
|
|
BEGIN 02055900
|
|
GREG:= 0; 02056000
|
|
MREG:= *+1; 02056100
|
|
END; 02056200
|
|
END; 02056300
|
|
END STREAMADJUSTSICHAR #; 02056400
|
|
02056500
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02056600
|
|
DEFINE STREAMADJUSTSIWORD = 02056700
|
|
BEGIN COMMENT 02056800
|
|
ADJUSTS THE SOURCE INDEX FORWARD TO THE NEXT WORD BOUNDARY, 02056900
|
|
IF NECESSARY. USED INTERNALLY BY THE EMULATION PROCEDURES. 02057000
|
|
; 02057100
|
|
IF GREG > 0 OR HREG > 0 THEN 02057200
|
|
BEGIN 02057300
|
|
GREG:= HREG:= 0; 02057400
|
|
MREG:= *+1; 02057500
|
|
END; 02057600
|
|
END STREAMADJUSTSIWORD #; 02057700
|
|
02060000
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02060100
|
|
DEFINE STREAMSETDI(A, X) = 02060200
|
|
BEGIN COMMENT 02060300
|
|
SETS THE DESTINATION INDEX REGISTERS TO AN ARRAY. EMULATES RDA. 02060400
|
|
; 02060500
|
|
SBASE:= A; 02060600
|
|
SREG:= (X).WOFF; 02060700
|
|
KREG:= (X).COFF; 02060800
|
|
VREG:= 0; 02060900
|
|
END STREAMSETDI #; 02061000
|
|
02061100
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02061200
|
|
DEFINE STREAMSETLOCDI(WD) = 02061300
|
|
BEGIN COMMENT 02061400
|
|
SETS THE DESTINATION INDEX REGISTERS TO A SCALAR, WHICH IS STORED 02061500
|
|
AND OPERATED ON IN STREAMTEMPD[*]. EMULATES RDA. 02061600
|
|
; 02061700
|
|
STREAMTEMPD[0]:= (WD); 02061800
|
|
SBASE:= STREAMTEMPD; 02061900
|
|
SREG:= KREG:= VREG:= 0; 02062000
|
|
END STREAMSETLOCDI #; 02062100
|
|
02062200
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02062300
|
|
DEFINE STREAMGETDI = 02062400
|
|
COMMENT 02062500
|
|
STREAMGETSI CONSTRUCTS A BINARY WORD FROM THE DESTINATION INDEX 02062600
|
|
REGISTERS. EMULATES SDA (SORT OF). 02062700
|
|
; 02062800
|
|
(0 & (SREG)WOFF & (KREG)COFF) #; 02062900
|
|
02063000
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02063100
|
|
DEFINE STREAMGETDC = 02063200
|
|
COMMENT 02063300
|
|
STREAMGETSC RETURNS THE CURRENT DESTINATION CHARACTER. MOSTLY 02063400
|
|
USED INTERNAL TO THE STREAM EMULATION PROCEDURES. 02063500
|
|
; 02063600
|
|
(SBASE[SREG].[47-KREG*6:6]) #; 02063700
|
|
02063800
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02063900
|
|
DEFINE STREAMADJUSTDICHAR = 02064000
|
|
BEGIN COMMENT 02064100
|
|
ADJUSTS THE DESTINATION INDEX FORWARD TO THE NEXT CHARACTER 02064200
|
|
BOUNDARY, IF NECESSARY. USED INTERALLY BY THE EMULATION 02064300
|
|
PROCEDURES. 02064400
|
|
; 02064500
|
|
IF VREG > 0 THEN 02064600
|
|
BEGIN 02064700
|
|
VREG:= 0; 02064800
|
|
IF KREG < 7 THEN 02064900
|
|
KREG:= *+1 02065000
|
|
ELSE 02065100
|
|
BEGIN 02065200
|
|
KREG:= 0; 02065300
|
|
SREG:= *+1; 02065400
|
|
END; 02065500
|
|
END; 02065600
|
|
END STREAMADJUSTDICHAR #; 02065700
|
|
02065800
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02065900
|
|
DEFINE STREAMADJUSTDIWORD = 02066000
|
|
BEGIN COMMENT 02066100
|
|
ADJUSTS THE DESTINATON INDEX FORWARD TO THE NEXT WORD BOUNDARY, 02066200
|
|
IF NECESSARY. USED INTERNALLY BY THE EMULATION PROCEDURES. 02066300
|
|
; 02066400
|
|
IF KREG > 0 OR VREG > 0 THEN 02066500
|
|
BEGIN 02066600
|
|
KREG:= VREG:= 0; 02066700
|
|
SREG:= *+1; 02066800
|
|
END; 02066900
|
|
END STREAMADJUSTDIWORD #; 02067000
|
|
02070000
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02070100
|
|
DEFINE STREAMSETTALLY(V) = 02070200
|
|
BEGIN COMMENT 02070300
|
|
SETS THE TALLY REGISTER TO THE LOW-ORDER 6 BITS OF "V". 02070400
|
|
EMULATES SEC. 02070500
|
|
; 02070600
|
|
TALLY:= (V).[5:6]; 02070700
|
|
END #; 02070800
|
|
02070900
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02071000
|
|
DEFINE STREAMINCTALLY(V) = 02071100
|
|
BEGIN COMMENT 02071200
|
|
INCREMENTS THE TALLY REGISTER BY THE LOW-ORDER 6 BITS OF "V", 02071300
|
|
TRUNCATING THE RESULT TO 6 BITS (WHICH IS ALL THE TALLY HOLDS). 02071400
|
|
EMULATES INC. 02071500
|
|
; 02071600
|
|
STREAMSETTALLY(TALLY+(V).[5:6]); 02071700
|
|
END #; 02071800
|
|
02071900
|
|
$ BEGINSEGMENT 02072000
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02072100
|
|
PROCEDURE STREAMSKIPSI(CHARS); 02072200
|
|
VALUE CHARS; 02072300
|
|
REAL CHARS; 02072400
|
|
BEGIN COMMENT 02072500
|
|
INCREMENTS THE SOURCE INDEX FORWARD OR BACKWARD BY THE 02072600
|
|
SPECIFIED NUMBER OF CHARACTERS. EMULATES SFS/SRS, BUT IS NOT 02072700
|
|
LIMITED TO A COUNT OF 63. 02072800
|
|
; 02072900
|
|
REAL 02073000
|
|
X; 02073100
|
|
02073200
|
|
STREAMADJUSTSICHAR; 02073300
|
|
X:= (GREG.[2:3] & (MREG)[17:15]) + CHARS; 02073400
|
|
MREG:= X.[17:15]; 02073500
|
|
GREG:= X.[2:3]; 02073600
|
|
END STREAMSKIPSI; 02073700
|
|
02073800
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02073900
|
|
PROCEDURE STREAMSKIPDI(CHARS); 02074000
|
|
VALUE CHARS; 02074100
|
|
REAL CHARS; 02074200
|
|
BEGIN COMMENT 02074300
|
|
INCREMENTS THE DESTINATION INDEX FORWARD OR BACKWARD BY THE 02074400
|
|
SPECIFIED NUMBER OF CHARACTERS. EMULATES SFD/SRD, BUT IS NOT 02074500
|
|
LIMITED TO A COUNT OF 63. 02074600
|
|
; 02074700
|
|
REAL 02074800
|
|
X; 02074900
|
|
02075000
|
|
STREAMADJUSTDICHAR; 02075100
|
|
X:= (KREG.[2:3] & (SREG)[17:15]) + CHARS; 02075200
|
|
SREG:= X.[17:15]; 02075300
|
|
KREG:= X.[2:3]; 02075400
|
|
END STREAMSKIPDI; 02075500
|
|
02075600
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02075700
|
|
DEFINE STREAMLOADDIFROMDC = 02075800
|
|
STREAMLOADDIFROMDCQQ(SBASE) #; 02075900
|
|
PROCEDURE STREAMLOADDIFROMDCQQ(SBASE); 02076000
|
|
ARRAY SBASE[0]; 02076100
|
|
BEGIN COMMENT 02076200
|
|
LOADS THE VALUE OF THE DESTINATION INDEX FROM THE CURRENT 02076300
|
|
LOCATION OF THE DESTINATION INDEX. EMULATES TDA (SORT OF). 02076400
|
|
; 02076500
|
|
STREAMADJUSTDICHAR; 02076600
|
|
VREG:= STREAMGETDC; 02076700
|
|
STREAMSKIPDI(+1); 02076800
|
|
VREG:= STREAMGETDC & (VREG)[11:6]; 02076900
|
|
STREAMSKIPDI(+1); 02077000
|
|
VREG:= STREAMGETDC & (VREG)[17:6]; 02077100
|
|
KREG:= VREG.COFF; 02077200
|
|
SREG:= VREG.WOFF; 02077300
|
|
VREG:= 0; 02077400
|
|
END STREAMLOADDIFROMDC; 02077500
|
|
02100000
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02100100
|
|
DEFINE STREAMTRANSFERCHR(N) = 02100200
|
|
STREAMTRANSFERCHRQQ(MBASE, SBASE, N) #; 02100300
|
|
PROCEDURE STREAMTRANSFERCHRQQ(MBASE, SBASE, N); 02100400
|
|
VALUE N; 02100500
|
|
ARRAY MBASE, SBASE[0]; 02100600
|
|
REAL N; 02100700
|
|
BEGIN COMMENT 02100800
|
|
TRANSFERS "N" 6-BIT CHARACTERS FROM SOURCE TO DESTINATION. 02100900
|
|
EMULATES TRS, BUT IS NOT LIMITED TO A COUNT OF 63. 02101000
|
|
; 02101100
|
|
REAL 02101200
|
|
NC; % CHARS LEFT TO TRANSFER 02101300
|
|
02101400
|
|
STREAMADJUSTSICHAR; 02101500
|
|
AREG:= MBASE[MREG]; 02101600
|
|
STREAMADJUSTDICHAR; 02101700
|
|
BREG:= SBASE[SREG]; 02101800
|
|
NC:= N; 02101900
|
|
WHILE NC > 0 DO 02102000
|
|
BEGIN 02102100
|
|
BREG:= * & AREG[47-KREG*6 : 47-GREG*6 : 6]; 02102200
|
|
NC:= *-1; 02102300
|
|
IF GREG < 7 THEN 02102400
|
|
GREG:= *+1 02102500
|
|
ELSE 02102600
|
|
BEGIN 02102700
|
|
GREG:= 0; 02102800
|
|
MREG:= *+1; 02102900
|
|
IF NC > 0 THEN 02103000
|
|
AREG:= MBASE[MREG]; 02103100
|
|
END; 02103200
|
|
02103300
|
|
IF KREG < 7 THEN 02103400
|
|
KREG:= *+1 02103500
|
|
ELSE 02103600
|
|
BEGIN 02103700
|
|
SBASE[SREG]:= BREG; 02103800
|
|
KREG:= 0; 02103900
|
|
SREG:= *+1; 02104000
|
|
IF NC < 8 THEN % RELOAD B IF PARTIAL WORD LEFT 02104100
|
|
IF NC > 0 THEN 02104200
|
|
BREG:= SBASE[SREG]; 02104300
|
|
END; 02104400
|
|
END WHILE; 02104500
|
|
02104600
|
|
IF KREG > 0 THEN 02104700
|
|
SBASE[SREG]:= BREG; 02104800
|
|
END STREAMTRANSFERCHR; 02104900
|
|
02105000
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02105100
|
|
DEFINE STREAMTRANSFERWDS(N) = 02105200
|
|
STREAMTRANSFERWDSQQ(MBASE, SBASE, N) #; 02105300
|
|
PROCEDURE STREAMTRANSFERWDSQQ(MBASE, SBASE, N); 02105400
|
|
VALUE N; 02105500
|
|
ARRAY MBASE, SBASE[0]; 02105600
|
|
REAL N; 02105700
|
|
BEGIN COMMENT 02105800
|
|
TRANSFERS "N" 48-BIT WORDS FROM SOURCE TO DESTINATION. 02105900
|
|
EMULATES TRW, BUT IS NOT LIMITED TO A COUNT OF 63. 02106000
|
|
; 02106100
|
|
STREAMADJUSTSIWORD; 02106200
|
|
STREAMADJUSTDIWORD; 02106300
|
|
IF N = 1 THEN 02106400
|
|
SBASE[SREG]:= MBASE[MREG] 02106500
|
|
ELSE 02106600
|
|
REPLACE POINTER(SBASE[SREG],0) BY 02106700
|
|
POINTER(MBASE[MREG],0) FOR N WORDS; 02106800
|
|
02106900
|
|
SREG:= *+N; 02107000
|
|
MREG:= *+N; 02107100
|
|
END STREAMTRANSFERWDS; 02107200
|
|
02107300
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02107400
|
|
DEFINE STREAMSMEARLIT(N, CHAR) = 02107500
|
|
STREAMSMEARLITQQ(SBASE, N, CHAR) #; 02107600
|
|
PROCEDURE STREAMSMEARLITQQ(SBASE, N, CHAR); 02107700
|
|
VALUE N, CHAR; 02107800
|
|
ARRAY SBASE[0]; 02107900
|
|
REAL N, CHAR; 02108000
|
|
BEGIN COMMENT 02108100
|
|
REPETITIVELY TRANSFERS THE 6-BIT CHARACTER "CHAR" TO THE 02108200
|
|
DESTINATION "N" TIMES. USED WHERE TRP MIGHT BE EXECUTED, BUT 02108300
|
|
FOR THE SPECIAL CASE OF A 1-CHARACTER PATTERN. THIS ROUTINE IS 02108400
|
|
FUNCTIONALLY EQUIVALENT TO STREAMTRANSFERLIT(1, CHAR) WHEN N=1. 02108500
|
|
; 02108600
|
|
REAL 02108700
|
|
NC; % CHARS LEFT TO SMEAR 02108800
|
|
02108900
|
|
STREAMADJUSTDICHAR; 02109000
|
|
BREG:= SBASE[SREG]; 02109100
|
|
NC:= N; 02109200
|
|
WHILE NC > 0 DO 02109300
|
|
BEGIN 02109400
|
|
BREG:= * & CHAR[47-KREG*6 : 5 : 6]; 02109500
|
|
NC:= *-1; 02109600
|
|
IF KREG < 7 THEN 02109700
|
|
KREG:= *+1 02109800
|
|
ELSE 02109900
|
|
BEGIN 02110000
|
|
SBASE[SREG]:= BREG; 02110100
|
|
KREG:= 0; 02110200
|
|
SREG:= *+1; 02110300
|
|
IF NC < 8 THEN % RELOAD B IF PARTIAL WORD LEFT 02110400
|
|
IF NC > 0 THEN 02110500
|
|
BREG:= SBASE[SREG]; 02110600
|
|
END; 02110700
|
|
END WHILE; 02110800
|
|
02110900
|
|
IF KREG > 0 THEN 02111000
|
|
SBASE[SREG]:= BREG; 02111100
|
|
END STREAMSMEARLIT; 02111200
|
|
02111300
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02111400
|
|
DEFINE STREAMTRANSFERLIT(N, S) = 02111500
|
|
STREAMTRANSFERLITQQ(SBASE, N, S) #; 02111600
|
|
PROCEDURE STREAMTRANSFERLITQQ(SBASE, N, S); 02111700
|
|
VALUE N, S; 02111800
|
|
ARRAY SBASE[0]; 02111900
|
|
REAL N, S; % N MUST BE <= 8, S IS RIGHT-JUSTIFIED IN ITS WORD 02112000
|
|
BEGIN COMMENT 02112100
|
|
TRANSFERS A LITERAL STRING OF 6-BIT CHARACTERS IN "S" TO THE 02112200
|
|
DESTINATION. "N" IS THE NUMBER OF CHARACTERS TO TRANSFER, WHICH 02112300
|
|
IS LIMITED TO 8. "S" IS CONSIDERED TO BE IN THE "N" LOW-ORDER 02112400
|
|
CHARACTERS OF THE "S" WORD. SORT OF EMULATES TRP, EXCEPT THE 02112500
|
|
SOURCE ISN'T REALLY IN THE PROGRAM STRING AND IS LIMITED TO 02112600
|
|
A 48-BIT SOURCE STRING. CALL MULTIPLE TIMES FOR LONGER STRINGS. 02112700
|
|
; 02112800
|
|
REAL 02112900
|
|
NC; 02113000
|
|
02113100
|
|
STREAMADJUSTDICHAR; 02113200
|
|
BREG:= SBASE[SREG]; 02113300
|
|
NC:= N; 02113400
|
|
WHILE NC > 0 DO 02113500
|
|
BEGIN 02113600
|
|
BREG:= * & (S)[47-KREG*6 : NC*6-1 : 6]; 02113700
|
|
NC:= *-1; 02113800
|
|
IF KREG < 7 THEN 02113900
|
|
KREG:= *+1 02114000
|
|
ELSE 02114100
|
|
BEGIN 02114200
|
|
SBASE[SREG]:= BREG; 02114300
|
|
KREG:= 0; 02114400
|
|
SREG:= *+1; 02114500
|
|
IF NC < 8 THEN % RELOAD B IF PARTIAL WORD LEFT 02114600
|
|
IF NC > 0 THEN 02114700
|
|
BREG:= SBASE[SREG]; 02114800
|
|
END; 02114900
|
|
END WHILE; 02115000
|
|
02115100
|
|
IF KREG > 0 THEN 02115200
|
|
SBASE[SREG]:= BREG; 02115300
|
|
END STREAMTRANSFERLIT; 02115400
|
|
02115500
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02115600
|
|
DEFINE STREAMTRANSFERDEC(N) = 02115700
|
|
STREAMTRANSFERDECQQ(MBASE, SBASE, N) #; 02115800
|
|
PROCEDURE STREAMTRANSFERDECQQ(MBASE, SBASE, N); 02115900
|
|
VALUE N; 02116000
|
|
ARRAY MBASE, SBASE[0]; 02116100
|
|
REAL N; 02116200
|
|
BEGIN COMMENT 02116300
|
|
CONVERTS THE WORD AT THE SOURCE INDEX TO "N" DECIMAL DIGITS AND 02116400
|
|
TRANSFERS THEM TO THE DESTINATION AS 6-BIT CHARACTER CODES. 02116500
|
|
EMULATES OCV. LIMITED TO 8-DIGIT CONVERSION. 02116600
|
|
; 02116700
|
|
REAL 02116800
|
|
DIGITS; 02116900
|
|
02117000
|
|
STREAMADJUSTSIWORD; 02117100
|
|
STREAMADJUSTDICHAR; 02117200
|
|
IF N = 0 THEN 02117300
|
|
TFFF:= TRUE 02117400
|
|
ELSE 02117500
|
|
BEGIN 02117600
|
|
IF N > 8 THEN 02117700
|
|
N:= 8; 02117800
|
|
02117900
|
|
AREG:= MBASE[MREG]; 02118000
|
|
IF AREG = 0 THEN 02118100
|
|
AREG:= 0 % WIPE OUT ANY SIGN BIT 02118200
|
|
ELSE 02118300
|
|
DIGITS:= SCALERIGHTF(AREG.[38:39], 12); 02118400
|
|
02118500
|
|
MREG:= *+1; 02118600
|
|
TFFF:= (DIGITS.[47:(12-N)*4] = 0); % TRUE => NO DECIMAL OVERFLOW 02118700
|
|
WHILE N > 1 DO 02118800
|
|
BEGIN 02118900
|
|
STREAMSMEARLIT(1, DIGITS.[N*4-1:4]); 02119000
|
|
N:= *-1; 02119100
|
|
END WHILE; 02119200
|
|
02119300
|
|
STREAMSMEARLIT(1, DIGITS.[3:4] & (AREG)[5:46:1]); % SET THE SIGN 02119400
|
|
END; 02119500
|
|
END STREAMTRANSFERDEC; 02119600
|
|
02119700
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02119800
|
|
DEFINE STREAMTRANSFEROCT(N) = 02119900
|
|
STREAMTRANSFEROCTQQ(MBASE, SBASE, N) #; 02120000
|
|
PROCEDURE STREAMTRANSFEROCTQQ(MBASE, SBASE, N); 02120100
|
|
VALUE N; 02120200
|
|
ARRAY MBASE, SBASE[0]; 02120300
|
|
REAL N; 02120400
|
|
BEGIN COMMENT 02120500
|
|
CONVERTS "N" 6-BIT CHARACTERS FROM THE SOURCE TO A BINARY VALUE 02120600
|
|
AND STORES THE RESULT AT THE DESTINATION WORD. EMULATES ICV. 02120700
|
|
LIMITED TO 8-DIGIT CONVERSION. 02120800
|
|
; 02120900
|
|
REAL 02121000
|
|
VAL; 02121100
|
|
02121200
|
|
STREAMADJUSTDIWORD; 02121300
|
|
STREAMADJUSTSICHAR; 02121400
|
|
AREG:= MBASE[MREG]; 02121500
|
|
IF N > 8 THEN 02121600
|
|
N:= 8; 02121700
|
|
02121800
|
|
WHILE N > 0 DO 02121900
|
|
BEGIN 02122000
|
|
VAL:= VAL*10 + AREG.[45-GREG*6:4]; 02122100
|
|
N:= *-1; 02122200
|
|
IF N = 0 THEN 02122300
|
|
IF AREG.[47-GREG*6:2] = 2 THEN % SIGN IS NEGATIVE 02122400
|
|
IF VAL ^= 0 THEN 02122500
|
|
VAL:= -VAL; 02122600
|
|
02122700
|
|
IF GREG < 7 THEN 02122800
|
|
GREG:= *+1 02122900
|
|
ELSE 02123000
|
|
BEGIN 02123100
|
|
GREG:= 0; 02123200
|
|
MREG:= *+1; 02123300
|
|
IF N > 0 THEN 02123400
|
|
AREG:= MBASE[MREG]; 02123500
|
|
END; 02123600
|
|
END WHILE; 02123700
|
|
02123800
|
|
SBASE[SREG]:= VAL; 02123900
|
|
SREG:= *+1; 02124000
|
|
END STREAMTRANSFEROCT; 02124100
|
|
02124200
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02124300
|
|
DEFINE STREAMTRANSFERFILL(N) = 02124400
|
|
STREAMTRANSFERFILLQQ(SBASE, N) #; 02124500
|
|
PROCEDURE STREAMTRANSFERFILLQQ(SBASE, N); 02124600
|
|
VALUE N; 02124700
|
|
ARRAY SBASE[0]; 02124800
|
|
REAL N; 02124900
|
|
BEGIN COMMENT 02125000
|
|
PERFORMS LEADING-ZERO SUPPRESSION STARTING AT THE DESTINATION 02125100
|
|
INDEX LOCATION. LEAVES THE DESTINATION INDEX POINTING TO THE 02125200
|
|
FIRST NON-SUPPRESSED CHARACTER. EMULATES TBN. 02125300
|
|
; 02125400
|
|
REAL 02125500
|
|
NC; % CHARS LEFT TO EXAMINE 02125600
|
|
02125700
|
|
STREAMADJUSTDICHAR; 02125800
|
|
TFFF:= TRUE; 02125900
|
|
BREG:= SBASE[SREG]; 02126000
|
|
NC:= N; 02126100
|
|
WHILE NC > 0 DO 02126200
|
|
BEGIN 02126300
|
|
IF BICCOLLATE[STREAMGETDC] <= BICCOLLATE[6"0"] THEN 02126400
|
|
BEGIN 02126500
|
|
BREG:= * & (6" ")[47-KREG*6 : 5 : 6]; 02126600
|
|
NC:= *-1; 02126700
|
|
IF KREG < 7 THEN 02126800
|
|
KREG:= *+1 02126900
|
|
ELSE 02127000
|
|
BEGIN 02127100
|
|
SBASE[SREG]:= BREG; 02127200
|
|
KREG:= 0; 02127300
|
|
SREG:= *+1; 02127400
|
|
IF NC < 8 THEN % RELOAD B IF PARTIAL WORD LEFT 02127500
|
|
IF NC > 0 THEN 02127600
|
|
BREG:= SBASE[SREG]; 02127700
|
|
END; 02127800
|
|
END 02127900
|
|
ELSE 02128000
|
|
BEGIN 02128100
|
|
NC:= 0; 02128200
|
|
TFFF:= FALSE; 02128300
|
|
IF KREG > 0 THEN 02128400
|
|
SBASE[SREG]:= BREG; 02128500
|
|
END; 02128600
|
|
END WHILE; 02128700
|
|
END STREAMTRANSFERFILL; 02128800
|
|
02130000
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02130100
|
|
PROCEDURE STREAMSKIPSB(N); 02130200
|
|
VALUE N; 02130300
|
|
REAL N; 02130400
|
|
BEGIN COMMENT 02130500
|
|
INCREMENTS THE SOURCE INDEX FORWARD BY "N" BITS. 02130600
|
|
EMULATES BSS. 02130700
|
|
; 02130800
|
|
THRU N DO 02130900
|
|
BEGIN 02131000
|
|
IF HREG < 5 THEN 02131100
|
|
HREG:= *+1 02131200
|
|
ELSE 02131300
|
|
BEGIN 02131400
|
|
HREG:= 0; 02131500
|
|
IF GREG < 7 THEN 02131600
|
|
GREG:= *+1 02131700
|
|
ELSE 02131800
|
|
BEGIN 02131900
|
|
GREG:= 0; 02132000
|
|
MREG:= *+1; 02132100
|
|
END; 02132200
|
|
END; 02132300
|
|
END THRU; 02132400
|
|
END STREAMSKIPSB; 02132500
|
|
02132600
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02132700
|
|
PROCEDURE STREAMSKIPDB(N); 02132800
|
|
VALUE N; 02132900
|
|
REAL N; 02133000
|
|
BEGIN COMMENT 02133100
|
|
INCREMENTS THE DESTINATION INDEX FORWARD BY "N" BITS. 02133200
|
|
EMULATES BSD. 02133300
|
|
; 02133400
|
|
THRU N DO 02133500
|
|
BEGIN 02133600
|
|
IF VREG < 5 THEN 02133700
|
|
VREG:= *+1 02133800
|
|
ELSE 02133900
|
|
BEGIN 02134000
|
|
VREG:= 0; 02134100
|
|
IF KREG < 7 THEN 02134200
|
|
KREG:= *+1 02134300
|
|
ELSE 02134400
|
|
BEGIN 02134500
|
|
KREG:= 0; 02134600
|
|
SREG:= *+1; 02134700
|
|
END; 02134800
|
|
END; 02134900
|
|
END THRU; 02135000
|
|
END STREAMSKIPDB; 02135100
|
|
02135200
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02135300
|
|
DEFINE STREAMSETDB(N, TRUTH) = 02135400
|
|
STREAMSETDBQQ(SBASE, N, TRUTH) #; 02135500
|
|
PROCEDURE STREAMSETDBQQ(SBASE, N, TRUTH); 02135600
|
|
VALUE N, TRUTH; 02135700
|
|
ARRAY SBASE[0]; 02135800
|
|
REAL N; 02135900
|
|
REAL TRUTH; 02136000
|
|
BEGIN COMMENT 02136100
|
|
SETS OR RESETS "N" DESTINATION BITS, DEPENDING ON "TRUTH". 02136200
|
|
EMULATES BIR/BIS. 02136300
|
|
; 02136400
|
|
REAL 02136500
|
|
NC; 02136600
|
|
02136700
|
|
BREG:= SBASE[SREG]; 02136800
|
|
NC:= N; 02136900
|
|
WHILE NC > 0 DO 02137000
|
|
BEGIN 02137100
|
|
BREG:= * & (TRUTH)[47-KREG*6-VREG:1]; 02137200
|
|
NC:= *-1; 02137300
|
|
IF VREG < 5 THEN 02137400
|
|
VREG:= *+1 02137500
|
|
ELSE 02137600
|
|
BEGIN 02137700
|
|
VREG:= 0; 02137800
|
|
IF KREG < 7 THEN 02137900
|
|
KREG:= *+1 02138000
|
|
ELSE 02138100
|
|
BEGIN 02138200
|
|
SBASE[SREG]:= BREG; 02138300
|
|
KREG:= 0; 02138400
|
|
SREG:= *+1; 02138500
|
|
IF NC < 8 THEN % RELOAD B IF PARTIAL WORD LEFT 02138600
|
|
IF NC > 0 THEN 02138700
|
|
BREG:= SBASE[SREG]; 02138800
|
|
END; 02138900
|
|
END; 02139000
|
|
END WHILE; 02139100
|
|
02139200
|
|
IF VREG > 0 OR KREG > 0 THEN 02139300
|
|
SBASE[SREG]:= BREG; 02139400
|
|
END STREAMSETDB; 02139500
|
|
02150000
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02150100
|
|
DEFINE STREAMCOMPARELSS(N) = 02150200
|
|
STREAMCOMPARELSSQQ(MBASE, SBASE, N) #; 02150300
|
|
BOOLEAN PROCEDURE STREAMCOMPARELSSQQ(MBASE, SBASE, N); 02150400
|
|
VALUE N; 02150500
|
|
ARRAY MBASE, SBASE[0]; 02150600
|
|
REAL N; 02150700
|
|
BEGIN COMMENT 02150800
|
|
COMPARES "N" CHARACTERS BETWEEN SOURCE AND DESTINATION FOR A 02150900
|
|
LESS-THAN CONDITION. ADVANCES BOTH INDEXES BY "N". 02151000
|
|
EMULATES CLS. 02151100
|
|
; 02151200
|
|
STREAMADJUSTSICHAR; 02151300
|
|
STREAMADJUSTDICHAR; 02151400
|
|
TFFF:= FALSE; 02151500
|
|
WHILE N > 0 DO 02151600
|
|
BEGIN 02151700
|
|
IF STREAMGETSC = STREAMGETDC THEN 02151800
|
|
BEGIN 02151900
|
|
STREAMSKIPSI(+1); 02152000
|
|
STREAMSKIPDI(+1); 02152100
|
|
N:= *-1; 02152200
|
|
END 02152300
|
|
ELSE 02152400
|
|
BEGIN 02152500
|
|
IF BICCOLLATE[STREAMGETSC] < BICCOLLATE[STREAMGETDC] THEN 02152600
|
|
TFFF:= TRUE; 02152700
|
|
02152800
|
|
STREAMSKIPSI(+N); 02152900
|
|
STREAMSKIPDI(+N); 02153000
|
|
N:= 0; 02153100
|
|
END; 02153200
|
|
END WHILE; 02153300
|
|
02153400
|
|
STREAMCOMPARELSSQQ:= TFFF; 02153500
|
|
END STREAMCOMPARELSS; 02153600
|
|
02160000
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02160100
|
|
DEFINE STREAMCOMPAREEQL(N) = 02160200
|
|
STREAMCOMPAREEQLQQ(MBASE, SBASE, N) #; 02160300
|
|
BOOLEAN PROCEDURE STREAMCOMPAREEQLQQ(MBASE, SBASE, N); 02160400
|
|
VALUE N; 02160500
|
|
ARRAY MBASE, SBASE[0]; 02160600
|
|
REAL N; 02160700
|
|
BEGIN COMMENT 02160800
|
|
COMPARES "N" CHARACTERS BETWEEN SOURCE AND DESTINATION FOR AN 02160900
|
|
EQUAL CONDITION. ADVANCES BOTH INDEXES BY "N". 02161000
|
|
EMULATES CEQ. 02161100
|
|
; 02161200
|
|
STREAMADJUSTSICHAR; 02161300
|
|
STREAMADJUSTDICHAR; 02161400
|
|
TFFF:= TRUE; 02161500
|
|
WHILE N > 0 DO 02161600
|
|
BEGIN 02161700
|
|
IF STREAMGETSC = STREAMGETDC THEN % COLLATING SEQ IS IMMATERIAL 02161800
|
|
BEGIN 02161900
|
|
STREAMSKIPSI(+1); 02162000
|
|
STREAMSKIPDI(+1); 02162100
|
|
N:= *-1; 02162200
|
|
END 02162300
|
|
ELSE 02162400
|
|
BEGIN 02162500
|
|
TFFF:= FALSE; 02162600
|
|
STREAMSKIPSI(+N); 02162700
|
|
STREAMSKIPDI(+N); 02162800
|
|
N:= 0; 02162900
|
|
END; 02163000
|
|
END WHILE; 02163100
|
|
02163200
|
|
STREAMCOMPAREEQLQQ:= TFFF; 02163300
|
|
END STREAMCOMPAREEQL; 02163400
|
|
02175000
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02175100
|
|
DEFINE STREAMCOMPAREGEQ(N) = 02175200
|
|
STREAMCOMPAREGEQQQ(MBASE, SBASE, N) #; 02175300
|
|
BOOLEAN PROCEDURE STREAMCOMPAREGEQQQ(MBASE, SBASE, N); 02175400
|
|
VALUE N; 02175500
|
|
ARRAY MBASE, SBASE[0]; 02175600
|
|
REAL N; 02175700
|
|
BEGIN COMMENT 02175800
|
|
COMPARES "N" CHARACTERS BETWEEN SOURCE AND DESTINATION FOR A 02175900
|
|
GREATER-THAN-OR-EQUAL CONDITION. ADVANCES BOTH INDEXES BY "N". 02176000
|
|
EMULATES CEG. 02176100
|
|
; 02176200
|
|
STREAMADJUSTSICHAR; 02176300
|
|
STREAMADJUSTDICHAR; 02176400
|
|
TFFF:= TRUE; 02176500
|
|
WHILE N > 0 DO 02176600
|
|
BEGIN 02176700
|
|
IF STREAMGETSC = STREAMGETDC THEN 02176800
|
|
BEGIN 02176900
|
|
STREAMSKIPSI(+1); 02177000
|
|
STREAMSKIPDI(+1); 02177100
|
|
N:= *-1; 02177200
|
|
END 02177300
|
|
ELSE 02177400
|
|
BEGIN 02177500
|
|
IF BICCOLLATE[STREAMGETSC] < BICCOLLATE[STREAMGETDC] THEN 02177600
|
|
TFFF:= FALSE; 02177700
|
|
02177800
|
|
STREAMSKIPSI(+N); 02177900
|
|
STREAMSKIPDI(+N); 02178000
|
|
N:= 0; 02178100
|
|
END; 02178200
|
|
END WHILE; 02178300
|
|
02178400
|
|
STREAMCOMPAREGEQQQ:= TFFF; 02178500
|
|
END STREAMCOMPAREGEQ; 02178600
|
|
02180000
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02180100
|
|
DEFINE STREAMSCLSS(CHR) = 02180200
|
|
STREAMSCLSSQQ(MBASE, CHR) #; 02180300
|
|
BOOLEAN PROCEDURE STREAMSCLSSQQ(MBASE, CHR); 02180400
|
|
VALUE CHR; 02180500
|
|
ARRAY MBASE[0]; 02180600
|
|
REAL CHR; 02180700
|
|
BEGIN COMMENT 02180800
|
|
COMPARES THE CURRENT SOURCE CHARACTER AGAINST "CHR" FOR A 02180900
|
|
LESS-THAN CONDITION. DOES NOT ADVANCE THE SOURCE INDEX. 02181000
|
|
EMULATES TLS. 02181100
|
|
; 02181200
|
|
STREAMADJUSTSICHAR; 02181300
|
|
STREAMSCLSSQQ:= TFFF:= (BICCOLLATE[STREAMGETSC] < BICCOLLATE[CHR]); 02181400
|
|
END STREAMSCLSS; 02181500
|
|
02181600
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02181700
|
|
DEFINE STREAMSCLEQ(CHR) = 02181800
|
|
STREAMSCLEQQQ(MBASE, CHR) #; 02181900
|
|
BOOLEAN PROCEDURE STREAMSCLEQQQ(MBASE, CHR); 02182000
|
|
VALUE CHR; 02182100
|
|
ARRAY MBASE[0]; 02182200
|
|
REAL CHR; 02182300
|
|
BEGIN COMMENT 02182400
|
|
COMPARES THE CURRENT SOURCE CHARACTER AGAINST "CHR" FOR A 02182500
|
|
LESS-THAN CONDITION. DOES NOT ADVANCE THE SOURCE INDEX. 02182600
|
|
EMULATES TLS. 02182700
|
|
; 02182800
|
|
STREAMADJUSTSICHAR; 02182900
|
|
STREAMSCLEQQQ:= TFFF:= (BICCOLLATE[STREAMGETSC] < BICCOLLATE[CHR]); 02183000
|
|
END STREAMSCLEQ; 02183100
|
|
02183200
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02183300
|
|
DEFINE STREAMSCEQL(CHR) = 02183400
|
|
STREAMSCEQLQQ(MBASE, CHR) #; 02183500
|
|
BOOLEAN PROCEDURE STREAMSCEQLQQ(MBASE, CHR); 02183600
|
|
VALUE CHR; 02183700
|
|
ARRAY MBASE[0]; 02183800
|
|
REAL CHR; 02183900
|
|
BEGIN COMMENT 02184000
|
|
COMPARES THE CURRENT SOURCE CHARACTER AGAINST "CHR" FOR AN 02184100
|
|
EQUAL CONDITION. DOES NOT ADVANCE THE SOURCE INDEX. 02184200
|
|
EMULATES TEQ. 02184300
|
|
; 02184400
|
|
STREAMADJUSTSICHAR; 02184500
|
|
STREAMSCEQLQQ:= TFFF:= (STREAMGETSC=CHR); % COLLATING SEQ IMMATERIAL 02184600
|
|
END STREAMSCEQL; 02184700
|
|
02184800
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02184900
|
|
DEFINE STREAMSCNEQ(CHR) = 02185000
|
|
STREAMSCNEQQQ(MBASE, CHR) #; 02185100
|
|
BOOLEAN PROCEDURE STREAMSCNEQQQ(MBASE, CHR); 02185200
|
|
VALUE CHR; 02185300
|
|
ARRAY MBASE[0]; 02185400
|
|
REAL CHR; 02185500
|
|
BEGIN COMMENT 02185600
|
|
COMPARES THE CURRENT SOURCE CHARACTER AGAINST "CHR" FOR A 02185700
|
|
NOT-EQUAL CONDITION. DOES NOT ADVANCE THE SOURCE INDEX. 02185800
|
|
EMULATES TNE. 02185900
|
|
; 02186000
|
|
STREAMADJUSTSICHAR; 02186100
|
|
STREAMSCNEQQQ:= TFFF:= (STREAMGETSC^=CHR); % COLLATING SEQ IMMATERIAL 02186200
|
|
END STREAMSCNEQ; 02186300
|
|
02186400
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02186500
|
|
DEFINE STREAMSCGEQ(CHR) = 02186600
|
|
STREAMSCGEQQQ(MBASE, CHR) #; 02186700
|
|
BOOLEAN PROCEDURE STREAMSCGEQQQ(MBASE, CHR); 02186800
|
|
VALUE CHR; 02186900
|
|
ARRAY MBASE[0]; 02187000
|
|
REAL CHR; 02187100
|
|
BEGIN COMMENT 02187200
|
|
COMPARES THE CURRENT SOURCE CHARACTER AGAINST "CHR" FOR A 02187300
|
|
GREATER-THAN-OR-EQUAL CONDITION. DOES NOT ADVANCE THE SOURCE 02187400
|
|
INDEX. EMULATES TEG. 02187500
|
|
; 02187600
|
|
STREAMADJUSTSICHAR; 02187700
|
|
STREAMSCGEQQQ:= TFFF:= (BICCOLLATE[STREAMGETSC] >= BICCOLLATE[CHR]); 02187800
|
|
END STREAMSCGEQ; 02187900
|
|
02188000
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02188100
|
|
DEFINE STREAMSCGTR(CHR) = 02188200
|
|
STREAMSCGTRQQ(MBASE, CHR) #; 02188300
|
|
BOOLEAN PROCEDURE STREAMSCGTRQQ(MBASE, CHR); 02188400
|
|
VALUE CHR; 02188500
|
|
ARRAY MBASE[0]; 02188600
|
|
REAL CHR; 02188700
|
|
BEGIN COMMENT 02188800
|
|
COMPARES THE CURRENT SOURCE CHARACTER AGAINST "CHR" FOR A 02188900
|
|
GREATER-THAN CONDITION. DOES NOT ADVANCE THE SOURCE INDEX. 02189000
|
|
EMULATES TGR. 02189100
|
|
; 02189200
|
|
STREAMADJUSTSICHAR; 02189300
|
|
STREAMSCGTRQQ:= TFFF:= (BICCOLLATE[STREAMGETSC] > BICCOLLATE[CHR]); 02189400
|
|
END STREAMSCGTR; 02189500
|
|
02190000
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02190100
|
|
DEFINE STREAMSCALPHA = 02190200
|
|
STREAMSCALPHAQQ(MBASE) #; 02190300
|
|
BOOLEAN PROCEDURE STREAMSCALPHAQQ(MBASE); 02190400
|
|
ARRAY MBASE[0]; 02190500
|
|
BEGIN COMMENT 02190600
|
|
TESTS THE CURRENT SOURCE CHARACTER FOR MEMBERSHIP IN THE "ALPHA" 02190700
|
|
SET (0-9, A-Z, AND ODDLY, "?"). DOES NOT ADVANCE THE SOURCE INDEX.02190800
|
|
EMULATES TAN. 02190900
|
|
; 02191000
|
|
STREAMADJUSTSICHAR; 02191100
|
|
STREAMSCALPHAQQ:= TFFF:= (STREAMGETSC IN BICALPHA); 02191200
|
|
END STREAMSCALPHA; 02191300
|
|
$ ENDSEGMENT 02199900
|
|
02200000
|
|
$ BEGINSEGMENT 02200100
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02200200
|
|
PROCEDURE PACKEBCDICTOBIC(S, SX, D, DX, N); 02200300
|
|
VALUE SX, DX, N; 02200400
|
|
ARRAY S, D[0]; 02200500
|
|
REAL SX, DX, N; 02200600
|
|
BEGIN COMMENT 02200700
|
|
PACKS 8-BIT EBCDIC CHARACTERS TO 6-BIT BIC CHARACTERS FROM 02200800
|
|
ARRAY S TO ARRAY D. SX IS THE 8-BIT CHARACTER OFFSET INTO S AND 02200900
|
|
DX IS THE 6-BIT CHARACTER OFFSET INTO D. N IS THE NUMBER OF 02201000
|
|
CHARACTERS TO PACK. PACKING PROCEEDS IN A FORWARD DIRECTION SO 02201100
|
|
THAT SOURCE AND DESTINATION CAN REFER TO THE SAME LOCATION. 02201200
|
|
THE SOURCE DATA IS UNCONDITIONALLY OVERWRITTEN WITH 8-BIT BIC. 02201300
|
|
; 02201400
|
|
REAL 02201500
|
|
NC, % NR CHARS LEFT TO PACK 02201600
|
|
SA, % SOURCE ACCUMULATOR WORD, 02201700
|
|
SB, % SOURCE BIT NBR 02201800
|
|
SW, % SOURCE WORD INDEX 02201900
|
|
DA, % DESTINATION ACCUMULATOR WORD 02202000
|
|
DB, % DESTINATION BIT NBR 02202100
|
|
DW; % DESTINATION WORD INDEX 02202200
|
|
02202300
|
|
SW:= SX DIV 6; 02202400
|
|
SB:= 45-(SX MOD 6)*8; 02202500
|
|
DW:= DX DIV 8; 02202600
|
|
DB:= 47-(DX MOD 8)*6; 02202700
|
|
REPLACE POINTER(S[SX],8) BY POINTER(S[SX],8) FOR N WITH EBCDICTOBIC; 02202800
|
|
SA:= S[SW]; 02202900
|
|
DA:= D[DW]; 02203000
|
|
NC:= N; 02203100
|
|
WHILE NC > 0 DO 02203200
|
|
BEGIN 02203300
|
|
DA:= * & (SA)[DB:SB:6]; 02203400
|
|
NC:= *-1; 02203500
|
|
IF NC > 0 THEN 02203600
|
|
BEGIN 02203700
|
|
IF SB > 7 THEN 02203800
|
|
SB:= *-8 02203900
|
|
ELSE 02204000
|
|
BEGIN 02204100
|
|
SB:= 45; 02204200
|
|
SA:= S[SW:= *+1]; 02204300
|
|
END; 02204400
|
|
02204500
|
|
IF DB > 5 THEN 02204600
|
|
DB:= *-6 02204700
|
|
ELSE 02204800
|
|
BEGIN 02204900
|
|
D[DW]:= DA; 02205000
|
|
DB:= 47; 02205100
|
|
DA:= D[DW:= *+1]; 02205200
|
|
END; 02205300
|
|
END; 02205400
|
|
END WHILE; 02205500
|
|
02205600
|
|
D[DW]:= DA; 02205700
|
|
END PACKEBCDICTOBIC; 02205800
|
|
02205900
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02206000
|
|
PROCEDURE UNPACKBICTOEBCDIC(S, SX, D, DX, N); 02206100
|
|
VALUE SX, DX, N; 02206200
|
|
ARRAY S, D[0]; 02206300
|
|
REAL SX, DX, N; 02206400
|
|
BEGIN COMMENT 02206500
|
|
UNPACKS 6-BIT BIC CHARACTERS TO 8-BIT EBCDIC CHARACTERS FROM 02206600
|
|
ARRAY S TO ARRAY D. SX IS THE 6-BIT CHARACTER OFFSET INTO S AND 02206700
|
|
DX IS THE 8-BIT CHARACTER OFFSET INTO D. N IS THE NUMBER OF 02206800
|
|
CHARACTERS TO UNPACK. UNPACKING PROCEEDS IN A REVERSE DIRECTION 02206900
|
|
SO THAT SOURCE AND DESTINATION CAN REFER TO THE SAME LOCATION. 02207000
|
|
; 02207100
|
|
REAL 02207200
|
|
NC, % NR CHARS LEFT TO UNPACK 02207300
|
|
SA, % SOURCE ACCUMULATOR WORD, 02207400
|
|
SB, % SOURCE BIT NBR 02207500
|
|
SW, % SOURCE WORD INDEX 02207600
|
|
DA, % DESTINATION ACCUMULATOR WORD 02207700
|
|
DB, % DESTINATION BIT NBR 02207800
|
|
DW; % DESTINATION WORD INDEX 02207900
|
|
02208000
|
|
SW:= (SX+N-1) DIV 8; 02208100
|
|
SB:= 47-((SX+N-1) MOD 8)*6; 02208200
|
|
DW:= (DX+N-1) DIV 6; 02208300
|
|
DB:= 47-((DX+N-1) MOD 6)*8; 02208400
|
|
SA:= S[SW]; 02208500
|
|
DA:= D[DW]; 02208600
|
|
NC:= N; 02208700
|
|
WHILE NC > 0 DO 02208800
|
|
BEGIN 02208900
|
|
DA:= * & (SA.[SB:6])[DB:8]; 02209000
|
|
NC:= *-1; 02209100
|
|
IF NC > 0 THEN 02209200
|
|
BEGIN 02209300
|
|
IF SB < 47 THEN 02209400
|
|
SB:= *+6 02209500
|
|
ELSE 02209600
|
|
BEGIN 02209700
|
|
SB:= 5; 02209800
|
|
SA:= S[SW:= *-1]; 02209900
|
|
END; 02210000
|
|
02210100
|
|
IF DB < 47 THEN 02210200
|
|
DB:= *+8 02210300
|
|
ELSE 02210400
|
|
BEGIN 02210500
|
|
D[DW]:= DA; 02210600
|
|
DB:= 7; 02210700
|
|
DA:= D[DW:= *-1]; 02210800
|
|
END; 02210900
|
|
END; 02211000
|
|
END WHILE; 02211100
|
|
02211200
|
|
D[DW]:= DA; 02211300
|
|
REPLACE POINTER(D[DX],8) BY POINTER(D[DX],8) FOR N WITH BICTOEBCDIC; 02211400
|
|
END UNPACKBICTOEBCDIC; 02211500
|
|
02220000
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02220100
|
|
REAL PROCEDURE BIC2EBC(B); 02220200
|
|
VALUE B; 02220300
|
|
REAL B; 02220400
|
|
BEGIN COMMENT 02220500
|
|
CONVERTS THE LOW-ORDER SIX 6-BIT BIC CHARACTERS IN W TO THEIR 02220600
|
|
8-BIT EBCDIC EQUIVALENTS AND RETURNS THE RESULTING WORD. 02220700
|
|
; 02220800
|
|
02220900
|
|
EBCDICBUFF[0]:= B.[5:6] & (B)[13:11:6] & (B)[21:17:6] & (B)[29:23:6] 02221000
|
|
& (B)[37:29:6] & (B)[45:35:6]; 02221100
|
|
REPLACE POINTER(EBCDICBUFF,8) BY 02221200
|
|
POINTER(EBCDICBUFF,8) FOR 6 WITH BICTOEBCDIC; 02221300
|
|
BIC2EBC:= EBCDICBUFF[0]; 02221400
|
|
END BIC2EBC; 02221500
|
|
$ ENDSEGMENT 02221600
|
|
02265000
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02265100
|
|
%% END STREAM PROCEDURE EMULATION MODULE %%02265200
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02265300
|
|
02267000=00510000=
|
|
COMMENT EXAMIN RETURNS THE CHARACTER AT ABSOLUTE ADDRESS NCR; 02267100=00510000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02267200=00511000=
|
|
REAL PROCEDURE EXAMIN(A, NCR); 02267300=00511000=
|
|
VALUE 02267400=00511000=
|
|
NCR; 02267500=00511000=
|
|
REAL 02267600
|
|
NCR; 02267700
|
|
ARRAY 02267800
|
|
A[0]; 02267900
|
|
BEGIN 02268000=00512000=
|
|
STREAMLOCALS; 02268100
|
|
STREAMSETSI(A, NCR); 02268200=00512000=
|
|
EXAMIN:= STREAMGETSC; 02268300=00512000=
|
|
END; 02268400=00512000=
|
|
02270000=00528000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02270100
|
|
%% INNER BLOCK OF COMPILER %%02270200
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%02270300
|
|
BEGIN 02270400=01000000=
|
|
COMMENT MAIN BLOCK; 02270500=01000000=
|
|
INTEGER 02275000=01000800=
|
|
OPINX; % USED FOR INDEXING INTO OPTIONS ARRAY. 02280000=01000800=
|
|
BOOLEAN 02285000=01000802=
|
|
SETTING; % USED BY DOLLARCARD FOR AN OPTION"S SETTING 02290000=01000802=
|
|
INTEGER 02295000=01000860=
|
|
NEWINX, 02300000=01000860=
|
|
ADDVALUE, 02305000=01000860=
|
|
BASENUM, 02310000=01000860=
|
|
TOTALNO; 02315000=01000860=
|
|
DEFINE 02320000=01000902=
|
|
OPARSIZE = 200 #; 02325000=01000902=
|
|
ARRAY 02330000=01000904=
|
|
OPTIONS[0:OPARSIZE]; 02335000=01000904=
|
|
BOOLEAN 02340000=01000910=
|
|
OPTIONWORD; 02345000=01000910=
|
|
DEFINE 02350000=01000920=
|
|
CHECKBIT = 1 #, 02355000=01000930=
|
|
DEBUGBIT = 2 #, 02360000=01000940=
|
|
DECKBIT = 3 #, 02365000=01000950=
|
|
FORMATBIT = 4 #, 02370000=01000960=
|
|
INTBIT = 5 #, 02375000=01000970=
|
|
LISTABIT = 6 #, 02380000=01000980=
|
|
LISTBIT = 7 #, 02385000=01000990=
|
|
LISTPBIT = 8 #, 02390000=01001000=
|
|
MCPBIT = 9 #, 02395000=01001010=
|
|
MERGEBIT = 10 #, 02400000=01001020=
|
|
NESTBIT = 11 #, 02405000=01001030=
|
|
NEWBIT = 12 #, 02410000=01001040=
|
|
NEWINCLBIT = 13 #, 02415000=01001050=
|
|
OMITBIT = 14 #, 02420000=01001060=
|
|
PRINTDOLLARBIT = 02425000=01001060=
|
|
15 #, 02430000=01001070=
|
|
PRTBIT = 16 #, 02435000=01001080=
|
|
PUNCHBIT = 17 #, 02440000=01001090=
|
|
PURGEBIT = 18 #, 02445000=01001100=
|
|
SEGSBIT = 19 #, 02450000=01001110=
|
|
SEQBIT = 20 #, 02455000=01001120=
|
|
SEQERRBIT = 21 #, 02460000=01001130=
|
|
SINGLBIT = 22 #, 02465000=01001140=
|
|
STUFFBIT = 23 #, 02470000=01001150=
|
|
VOIDBIT = 24 #, 02475000=01001160=
|
|
VOIDTBIT = 25 #, 02480000=01001170=
|
|
USEROPINX = 26 #; 02485000=01001170=
|
|
02490000=01001180=
|
|
COMMENT IF A NEW COMPILER-DEFINED OPTION IS ADDED, CHANGE USEROPINX 02495000=01001180=
|
|
AND ADD OPTION IN DEFINES BELOW, IN DOLLARCARD, AND IN 02500000=01001190=
|
|
FILL STATEMENT IN INITIALIZATION OF COMPILER; 02505000=01001200=
|
|
DEFINE 02510000=01001210=
|
|
CHECKTOG = OPTIONWORD.[CHECKBIT:1] #, 02515000=01001220=
|
|
DEBUGTOG = OPTIONWORD.[DEBUGBIT:1] #, 02520000=01001230=
|
|
DECKTOG = OPTIONWORD.[DECKBIT:1] #, 02525000=01001240=
|
|
FORMATOG = OPTIONWORD.[FORMATBIT:1] #, 02530000=01001250=
|
|
INTOG = OPTIONWORD.[INTBIT:1] #, 02535000=01001260=
|
|
LISTATOG = OPTIONWORD.[LISTABIT:1] #, 02540000=01001270=
|
|
LISTOG = OPTIONWORD.[LISTBIT:1] #, 02545000=01001280=
|
|
LISTPTOG = OPTIONWORD.[LISTPBIT:1] #, 02550000=01001290=
|
|
MCPTOG = OPTIONWORD.[MCPBIT:1] #, 02555000=01001300=
|
|
MERGETOG = OPTIONWORD.[MERGEBIT:1] #, 02560000=01001310=
|
|
NESTOG = OPTIONWORD.[NESTBIT:1] #, 02565000=01001320=
|
|
NEWTOG = OPTIONWORD.[NEWBIT:1] #, 02570000=01001330=
|
|
NEWINCL = OPTIONWORD.[NEWINCLBIT:1] #, 02575000=01001340=
|
|
OMITTING = OPTIONWORD.[OMITBIT:1] #, 02580000=01001350=
|
|
PRINTDOLLARTOG = 02585000=01001350=
|
|
OPTIONWORD.[PRINTDOLLARBIT:1] #, 02590000=01001360=
|
|
PRTOG = OPTIONWORD.[PRTBIT:1] #, 02595000=01001370=
|
|
PUNCHTOG = OPTIONWORD.[PUNCHBIT:1] #, 02600000=01001380=
|
|
PURGETOG = OPTIONWORD.[PURGEBIT:1] #, 02605000=01001390=
|
|
SEGSTOG = OPTIONWORD.[SEGSBIT:1] #, 02610000=01001400=
|
|
SEQTOG = OPTIONWORD.[SEQBIT:1] #, 02615000=01001410=
|
|
COMMENT SEQTOG INDICATES RESEQUENCING IS TO BE DONE; 02620000=01001410=
|
|
SEQERRTOG = OPTIONWORD.[SEQERRBIT:1] #, 02625000=01001430=
|
|
SINGLTOG = OPTIONWORD.[SINGLBIT:1] #, 02630000=01001440=
|
|
STUFFTOG = OPTIONWORD.[STUFFBIT:1] #, 02635000=01001450=
|
|
VOIDING = OPTIONWORD.[VOIDBIT:1] #, 02640000=01001460=
|
|
VOIDTAPE = OPTIONWORD.[VOIDTBIT:1] #, 02645000=01001470=
|
|
DUMMY = #; 02650000=01001470=
|
|
BOOLEAN 02655000=01001480=
|
|
NOHEADING; % TRUE IF DATIME HAS NOT BEEN CALLED. 02660000=01001480=
|
|
BOOLEAN 02665000=01001490=
|
|
NEWBASE; % NEW BASENUM FOUND ON A NEW $-CARD. 02670000=01001490=
|
|
INTEGER 02695000=01001530=
|
|
XMODE; % TELLS DOLLARCARD HOW TO SET OPTIONS. 02700000=01001530=
|
|
BOOLEAN 02705000=01001540=
|
|
DOLLARTOG; % TRUE IF SCANNING A DOLLAR CARD. 02710000=01001540=
|
|
INTEGER 02715000=01001550=
|
|
ERRMAX; % COMPILATION STOPS IF EXCEEDED. 02720000=01001550=
|
|
BOOLEAN 02725000=01001560=
|
|
SEQXEQTOG; % GIVE SEQ. NO. WHEN DS-ING OBJ. 02730000=01001560=
|
|
BOOLEAN 02735000=01001570=
|
|
LISTER; % LISTOG OR LISTATOG OR DEBUGTOG. 02740000=01001570=
|
|
ALPHA 02745000=01001580=
|
|
MEDIUM; % INPUT IS: T,C,P,CA,CB,CC. 02750000=01001580=
|
|
INTEGER 02755000=01001590=
|
|
MYCLASS; % USED IN DOLLARCARD EVALUATION. 02760000=01001590=
|
|
REAL 02765000=01001600=
|
|
BATMAN; % USED IN DOLLARCARD EVALUATION. 02770000=01001600=
|
|
ARRAY 02775000=01003000=
|
|
SPECIAL[0:31]; 02780000=01003000=
|
|
COMMENT THIS ARRAY HOLDS THE INTERNAL CODE FOR THE SPECIAL 02785000=01004000=
|
|
CHARACTORS: IT IS FILLED DURING INITIALIZATION; 02790000=01005000=
|
|
ARRAY 02795000=01007000=
|
|
INFO[0:127, 0:255]; 02800000=01007000=
|
|
COMMENT INFO CONTAINS ALL THE INFORMATION ABOUT A GIVEN IDENTIFIER 02805000=01008000=
|
|
OR RESERVED WORD. THE FIRST WORD OF A GIVEN ENTRY IS 02810000=01009000=
|
|
THE INTERNAL CODE ( OR ELBAT WORD AS IT IS USUALLY 02815000=01010000=
|
|
CALLED). THE SECOND WORD CONTAINS THE FORWARD BIT (IN 02820000=01011000=
|
|
[46:1]) FOR PROCEDURES, THE LINK TO PREVIOUS ENTRY (IN 02825000=01012000=
|
|
[43:8]). THE NUMBER OF CHARACTORS IN THE ALPHA REPRESENTA-02830000=01013000=
|
|
TION (IN [35:6]), AND THE FIRST 5 CHARACTERS OF ALPHA. 02835000=01014000=
|
|
SUCCEDING WORDS CONTAIN THE REMAINING CHARACTORS OF ALPHA,02840000=01015000=
|
|
FOLLOWED BY ANY ADDITIONAL INFORMATION. THE ELBAT WORD 02845000=01016000=
|
|
AND THE ALPHA FOR ANY QUANTITY ARE NOT SPLIT ACROSS A ROW 02850000=01017000=
|
|
OF INFO. FOR PURPOSES OF FINDING AN IDENTIFIER OR 02855000=01018000=
|
|
RESERVED WORD THE QUANTITIES ARE SCATTERED INTO 125 02860000=01019000=
|
|
DIFERENT LISTS OR STACKES. WHICH STACK CONTAINS A QUANTITY02865000=01020000=
|
|
IS GIVEN BY TAKING NAAAAA MOD 125 WHERE N IS THE NUMBER 02870000=01021000=
|
|
OF CHARACTORS AND AAAAA IS THE FIRST 5 CHARACTORS OF 02875000=01022000=
|
|
ALPHA, FILLED IN WITH ZEROS FROM THE RIGHT IF NEEDED. 02880000=01023000=
|
|
THIS NUMBER IS CALLED THE SCRAMBLE NUMBER OR INDEX. 02885000=01024000=
|
|
THE FIRST ROW OF INFO IS USED FOR OTHER PURPOSES. THE 02890000=01025000=
|
|
RESERVED WORDS OCCUPY THE SECOND ROW. IT IS FILLED DURING 02895000=01026000=
|
|
INITIALIZATION; 02900000=01027000=
|
|
02905000=01028000=
|
|
COMMENT INFO FORMAT 02910000=01028000=
|
|
FOLLOWING IS A DESCRIPTION OF THE FORMAT OF ALL TYPES OF ENTRIES 02915000=01029000=
|
|
ENTERED IN INFO: 02920000=01030000=
|
|
THE FIRST WORD OF ALL ENTRIES IS THE ELBAT WORD. 02925000=01031000=
|
|
THE INCR FIELD ([20:8]) CONTAINS AN INCREMENT WHICH WHEN 02930000=01032000=
|
|
ADDED TO THE CURRENT INDEX INTO INFO YELDSAN INDEX TO ANY 02935000=01033000=
|
|
ADDITIONAL INFO (IF ANY) FOR THIS ENTRY. 02940000=01034000=
|
|
E.G. IF THE INDEX IS IX THEN INFO[(IX+INCR).LINKR,(IX+INCR). 02945000=01035000=
|
|
LINKC] WILL CONTAIN THE FIRST WORD OF ADDITIONAL INFO. 02950000=01036000=
|
|
THE LINK FIELD OF THE ELBAT WORD IN INFO IS DIFFERENT FROM 02955000=01037000=
|
|
THAT OF THE ENTRY IN ELBAT PUT IN BY TABLE.THE ENTRY IN ELBAT 02960000=01038000=
|
|
POINTS TO ITS OWN LOCATION (RELATIVE) IN INFO. 02965000=01039000=
|
|
THE LINK IN INFO POINTS TO THE PREVIOUS ENTRY E.G.,THE 02970000=01040000=
|
|
LINK FROM STACKHEAD WHICH THE CURRENT ENTRY REPLACED. 02975000=01041000=
|
|
FOR SIMPLICITY,I WILL CONSIDER INFO TO BE A ONE DIMENSIONAL 02980000=01042000=
|
|
ARRAY,SO THAT THE BREAKING UP OF THE LINKS INTO ROW AND COLUMN 02985000=01043000=
|
|
WILL NOT DETRACT FROM THE DISCUSSION. 02990000=01044000=
|
|
ASSUME THAT THREE IDENTIFIERS A,B,AND C "SCRAMBLE" INTO 02995000=01045000=
|
|
THE SAME STACKHEAD LOCATION IN THE ORDER OF APPEARANCE. 03000000=01046000=
|
|
FURTHER ASSUME THERE ARE NO OTHER ENTRIES CONNECTED TO 03005000=01047000=
|
|
THIS STACKHEAD INDEX. LET THIS STACKHEAD LOCATION BE 03010000=01048000=
|
|
S[L] 03015000=01049000=
|
|
NOW THE DECLARATION 03020000=01050000=
|
|
BEGIN REAL A,B,C IS ENCOUNTERED 03025000=01051000=
|
|
IF THE NEXT AVAILABLE INFO SPACE IS CALLED NEXTINFO 03030000=01052000=
|
|
THEN A IS ENTERED AS FOLLOWS:(ASSUME AN ELBAT WORD T HAS BEEN 03035000=01053000=
|
|
CONSTRUCTED FOR A) 03040000=01054000=
|
|
T.LINK:= S[L]. (WHICH IS ZERO AT FIRST). 03045000=01055000=
|
|
INFO[NEXTINFO]:=T. S[L]:=NEXTINFO. 03050000=01056000=
|
|
NEXTINFO:=NEXTINFO+NUMBER OF WORDS IN THIS 03055000=01057000=
|
|
ENTRY. 03060000=01058000=
|
|
NOW S[L] POINTS TO THE ENTRY FOR A IN INFO AND THE ENTRY 03065000=01059000=
|
|
ITSELF CONTAINS THE STOP FLAG ZERO. 03070000=01060000=
|
|
B IS ENTERED SIMILARLY TO A. 03075000=01061000=
|
|
NOW S[L] POINTS TO THE ENTRY FOR B AND IT POINTS TO THE 03080000=01062000=
|
|
ENTRY FOR A. 03085000=01063000=
|
|
SIMILARLY,AFTER C IS ENTERED 03090000=01064000=
|
|
S[L] POINTS TO C,WHOSE ENTRY POINTS TO B WHOSE ENTRY 03095000=01065000=
|
|
POINTS TO A. 03100000=01066000=
|
|
THE SECOND WORD OF EACH ENTRY IN INFO IS MADE UP AS FOLLOWS: 03105000=01067000=
|
|
FWDPT =[46:1],THIS TELLS WHETHER A PROCEDURE WAS DECLARED 03110000=01068000=
|
|
FORWARD. IT IS RESET AT THE TIME OF ITS ACTUAL 03115000=01069000=
|
|
FULL DECLARATION. 03120000=01070000=
|
|
PURPT =[43:8] THIS GIVES A DECREMENT WHICH GIVES THE RELATIVE 03125000=01071000=
|
|
INDEX TO THE PREVIOUS INFO ENTRY WHEN SUBTRACTED 03130000=01072000=
|
|
FROM THE CURRENT ENTRY INDEX. 03135000=01073000=
|
|
[35:6] TELLS THE NUMBER OF CHARACTERS IN THE ENTRY.(<64) 03140000=01074000=
|
|
[29:30] CONTAINS THE FIRST FIVE ALPHA CHARACTERS OF THE ENTRY 03145000=01075000=
|
|
AND SUCCEEDING WORDS CONTAIN ALL OVERFLOW IF NEEDED. 03150000=01076000=
|
|
THESE WORDS CONTAIN 8 CHARACTERS EACH,LEFT JUSTIFIED. 03155000=01077000=
|
|
THUS,AN ENTRY FOR SYMBOL FOLLOWED BY AN ENTRY 03160000=01078000=
|
|
FOR X WOULD APPEAR AS FOLLOWS: 03165000=01079000=
|
|
INFO[I] = ELBATWRD (MADE FOR SYMBOL) 03170000=01080000=
|
|
I+1 = OP6SYMBO (P DEPENDS ON PREVIOUS ENTRY) 03175000=01081000=
|
|
I+2 = L 03180000=01082000=
|
|
I+3 = ELBATWRD (MADE FOR X) 03185000=01083000=
|
|
I+4 = 031X 03190000=01084000=
|
|
THIS SHOWS THAT INFO[I-P] WOULD POINT TO THE BEGINNING OF 03195000=01085000=
|
|
THE ENTRY BEFORE SYMBOL, AND 03200000=01086000=
|
|
INFO[I+3-3] POINTS TO THE ENTRY FOR SYMBOL. 03205000=01087000=
|
|
ALL ENTRIES OF IDNETIFIERS HAVE THE INFORMATION DESCRIBED ABOVE 03210000=01088000=
|
|
THAT IS,THE ELBAT WORD FOLLOWED BY THE WORD CONTAING THE FIRST 03215000=01089000=
|
|
FIVE CHARACTERS OF ALPHA,AND ANY ADDITIONAL WORDS OF ALPHA IF 03220000=01090000=
|
|
NECESSARY. 03225000=01091000=
|
|
THIS IS SUFFICIENT FOR ENTRIES OF THE FOLLOWING TYPES, 03230000=01092000=
|
|
REAL 03235000=01093000=
|
|
BOOLEAN 03240000=01094000=
|
|
INTEGER 03245000=01095000=
|
|
ALPHA 03250000=01096000=
|
|
FILE 03255000=01097000=
|
|
FORMAT 03260000=01098000=
|
|
LIST 03265000=01099000=
|
|
OTHER ENTRIES REQUIRE ADDITIONAL INFORMATION. 03270000=01100000=
|
|
ARRAYS: 03275000=01101000=
|
|
THE FIRST WORD OF ADDITIONAL INFO CONTAINS THE NUMBER OF 03280000=01102000=
|
|
DIMENSIONS(IN THE LOW ORDER PART).[7:8] 03285000=01103000=
|
|
EACH SUCCEEDING WORD CONTAINS INFORMATION ABOUT EACH LOWER 03290000=01104000=
|
|
BOUND IN ORDER OF APPEARANCE,ONE WORD FOR EACH LOWER BOUND. 03295000=01105000=
|
|
THESE WORDS ARE MADE UP AS FOLLOWS: 03300000=01106000=
|
|
[24:12] =ADD OPERATOR SYLLABLE (0101) OR 03305000=01107000=
|
|
SUB OPERATOR SYLLABLE (0301) CORRESPONDING 03310000=01108000=
|
|
RESPECTIVELY TO WHETHER THE LOWER BOUND IS 03315000=01109000=
|
|
TO BE ADDED TO THE SUBSCRIPT IN INDEXING OR 03320000=01110000=
|
|
SUBTRACTED. 03325000=01111000=
|
|
[12:11] =11 BIT ADDRESS OF LOWER BOUND,IF THE LOWER BOUND 03330000=01112000=
|
|
REQUIRES A PRT OR STACK CELL,OTHERWISE THE BIT 03335000=01113000=
|
|
35 IS IGNORED AND THE NEXT TEN BITS([11:10]) 03340000=01114000=
|
|
REPRESENT THE ACTUAL VALUE OF THE LOWER BOUND 03345000=01115000=
|
|
[1:2] =00 OR 10 DEPENDING ON WHETHER THE [12:11] VALUE 03350000=01116000=
|
|
IS A LITERAL OR OPERAND,RESPECTIVELY. 03355000=01117000=
|
|
PROCEDURES: 03360000=01118000=
|
|
THE FIRST WORD OF ADDITIONAL INFO CONTAINS THE NUMBER OF 03365000=01119000=
|
|
PARAMETERS [7:8] 03370000=01120000=
|
|
IF A STREAM PROCEDURE THEN THIS WORD CONTAINS ALSO IN 03375000=01121000=
|
|
[34:11] ENDING PRT ADDRESS FOR LABELS, 03380000=01122000=
|
|
[40:6] NO OF LABELS REQUIRING PRT ADDRESSES, AND [46:6] NUMBER 03385000=01123000=
|
|
OF LOCALS. 03390000=01124000=
|
|
SUCCEEDING WORDS (ONE FOR EACH FORMAL PARAMETER,IN ORDER 03395000=01125000=
|
|
OF APPEARANCE IN FORMAL PARAPART) ARE 03400000=01126000=
|
|
ELBAT WORDS SPECIFYING TYPE OF EACH PARAMETER AND WHETHER 03405000=01127000=
|
|
VALUE OR NOT([37:1]). 03410000=01128000=
|
|
THE ADDRESS([31:11]) IS THE F- ADDRESS FOR EACH. 03415000=01129000=
|
|
IF THE PARAMETER IS AN ARRAY THEN THE INCR FIELD([20:8]) 03420000=01130000=
|
|
CONTAINS THE NUMBER OF DIMENSIONS,OTHERWISE INCR IS MEANINGLESS. 03425000=01131000=
|
|
LINK([12:13]) IS MEANINGLESS. 03430000=01132000=
|
|
IF A STREAM PROCEDURE THEN THE CLASS OF EACH PARAMETER IS 03435000=01133000=
|
|
THAT OF LOCAL ID OR FILE ID, DEPENDING ON WHETHER OR NOT A RELEASE03440000=01134000=
|
|
IS DONE IN THE STREAM PROCEDURE. 03445000=01135000=
|
|
LABELS: 03450000=01136000=
|
|
AT DECLARATION TIME THE ADDITIONAL INFO CONTAINS 0. THE SIGN 03455000=01137000=
|
|
BIT TELLS WHETHER OR NOT THE DEFINITION POINT HAS BEEN REACHED. 03460000=01138000=
|
|
IF SIGN = 0, THEN [11:12] CONTAINS AN ADDRESS IN CODEARRAY OF A 03465000=01139000=
|
|
LIST OF FORWARD REFERENCES TO THIS LABEL. THE END OF LIST FLAG IS03470000=01140000=
|
|
0. IF SIGN =0, THEN [11:12] CONTAINS L FOR THIS LABEL. 03475000=01141000=
|
|
SWITCHES: 03480000=01142000=
|
|
THE FIELD [11:12] CONTAINS L FOR THE BEGINNING OF SWITCH DECLAR- 03485000=01143000=
|
|
ATION. [23:12] CONTAINS L FOR FIRST SIMPLE REFERENCE TO SWITCH. 03490000=01144000=
|
|
IF SWITCH IS NOT SIMPLE, IT IS MARKED FORMAL. HERE SIMPLE MEANS 03495000=01145000=
|
|
NO POSSIBILITY OF JUMPING OUT OF A BLOCK. ;03500000=01146000=
|
|
DEFINE 03505000=01147000=
|
|
MON = [46:1] #, 03510000=01148000=
|
|
CLASS = [45:7] #, 03515000=01149000=
|
|
FORMAL = [38:1] #, 03520000=01150000=
|
|
VO = [37:1] #, 03525000=01151000=
|
|
LVL = [36:5] #, 03530000=01152000=
|
|
ADDRESS = [31:11] #, 03535000=01153000=
|
|
INCR = [20:8] #, 03540000=01154000=
|
|
LINK = [12:13] #, 03545000=01155000=
|
|
LINKR = [12:5] #, 03550000=01156000=
|
|
LINKC = [7:8] #; 03555000=01156000=
|
|
03560000=01157000=
|
|
COMMENT THESE DEFINES ARE USED TO PICK APART THE ELBAT WORD. 03565000=01157000=
|
|
MON IS THE BIT WHICH IS ON IF THE QUANTITY IS MONITORED. 03570000=01158000=
|
|
CLASS IS THE PRINCIPAL IDENTIFICATION OF A GIVEN 03575000=01159000=
|
|
QUANTITY. 03580000=01160000=
|
|
FORMAL IS THE BIT WHICH IS ON IF THE QUANTITY IS A FORMAL 03585000=01161000=
|
|
PARAMETER. 03590000=01162000=
|
|
VO IS THE VALUE-OWN BIT. IF FORMAL = 1 THEN THE BIT 03595000=01163000=
|
|
DISTINGUISHES VALUE PARAMETERS FROM OTHERS. IF 03600000=01164000=
|
|
FORMAL = 0 THEN THE BIT DISTINGUISHES OWN VARIABLES 03605000=01165000=
|
|
FROM OTHERS. 03610000=01166000=
|
|
LVL GIVES THE LEVEL AT WHICH A QUANTITY WAS DECLARED. 03615000=01167000=
|
|
ADDRESS GIVES THE STACK OR PRT ADDRESS. 03620000=01168000=
|
|
INCR GIVES A RELATIVE LINK TO ANY ADDITIONAL INFORMATION 03625000=01169000=
|
|
NEEDED, RELATIVE TO THE LOCATION IN INFO. 03630000=01170000=
|
|
LINK CONTAINS A LINK TO THE LOCATION IN INFO IF THE 03635000=01171000=
|
|
QUANTITY LIES IN ELBAT, OTHERWISE IT LINKS TO THE 03640000=01172000=
|
|
NEXT ITEM IN THE STACK. ZERO IS AN END FLAG. 03645000=01173000=
|
|
LINKR AND LINKC ARE SUBDIVISIONS OF LINK.; 03650000=01174000=
|
|
03655000=01175000=
|
|
COMMENT CLASSES FOR ALL QUANTITIES - OCTAL CLASS IS IN COMMENT; 03660000=01175000=
|
|
COMMENT CLASSES FOR IDENTIFIERS; 03665000=01176000=
|
|
DEFINE 03670000=01177000=
|
|
UNKNOWNID = 00 #, COMMENT 000; 03675000=01177000=
|
|
STLABID = 01 #, COMMENT 001; 03680000=01178000=
|
|
LOCLID = 02 #, COMMENT 002; 03685000=01179000=
|
|
DEFINEDID = 03 #, COMMENT 003; 03690000=01180000=
|
|
LISTID = 04 #, COMMENT 004; 03695000=01181000=
|
|
FRMTID = 05 #, COMMENT 005; 03700000=01182000=
|
|
SUPERFRMTID = 06 #, COMMENT 006; 03705000=01183000=
|
|
REALSUBID = 07 #, COMMENT 007; 03710000=01184000=
|
|
SUBID = 08 #, COMMENT 010; 03715000=01185000=
|
|
SWITCHID = 09 #, COMMENT 011; 03720000=01186000=
|
|
PROCID = 10 #, COMMENT 012; 03725000=01187000=
|
|
INTRNSICPROCID = 03730000=01188000=
|
|
11 #, COMMENT 013; 03735000=01188000=
|
|
STRPROCID = 12 #, COMMENT 014; 03740000=01189000=
|
|
BOOSTRPROCID = 13 #, COMMENT 015; 03745000=01190000=
|
|
REALSTRPROCID = 14 #, COMMENT 016; 03750000=01191000=
|
|
ALFASTRPROCID = 15 #, COMMENT 017; 03755000=01192000=
|
|
INTSTRPROCID = 15 #, COMMENT 017; 03760000=01193000=
|
|
BOOPROCID = 17 #, COMMENT 021; 03765000=01194000=
|
|
REALPROCID = 18 #, COMMENT 022; 03770000=01195000=
|
|
ALFAPROCID = 19 #, COMMENT 023; 03775000=01196000=
|
|
INTPROCID = 19 #, COMMENT 023; 03780000=01197000=
|
|
BOOID = 21 #, COMMENT 025; 03785000=01198000=
|
|
REALID = 22 #, COMMENT 026; 03790000=01199000=
|
|
ALFAID = 23 #, COMMENT 027; 03795000=01200000=
|
|
INTID = 23 #, COMMENT 027; 03800000=01201000=
|
|
BOOARRAYID = 25 #, COMMENT 031; 03805000=01202000=
|
|
REALARRAYID = 26 #, COMMENT 032; 03810000=01203000=
|
|
ALFAARRAYID = 27 #, COMMENT 033; 03815000=01204000=
|
|
INTARRAYID = 27 #, COMMENT 033; 03820000=01205000=
|
|
NAMEID = 30 #, COMMENT 036; 03825000=01205200=
|
|
INTNAMEID = 31 #, COMMENT 037; 03830000=01205400=
|
|
LABELID = 32 #, COMMENT 040; 03835000=01206000=
|
|
03840000=01207000=
|
|
COMMENT CLASSES FOR PRIMARY BEGINNERS; 03845000=01207000=
|
|
TRUTHV = 33 #, COMMENT 041; 03850000=01208000=
|
|
NONLITNO = 34 #, COMMENT 042; 03855000=01209000=
|
|
LITNO = 35 #, COMMENT 043; 03860000=01210000=
|
|
STRNGCON = 36 #, COMMENT 044; 03865000=01211000=
|
|
LEFTPAREN = 37 #, COMMENT 045; 03870000=01212000=
|
|
POLISHV = 38 #, COMMENT 046; 03875000=01212100=
|
|
ASTRISK = 39 #, COMMENT 047; 03880000=01212200=
|
|
03885000=01213000=
|
|
COMMENT CLASS FOR ALL DECLARATORS; 03890000=01213000=
|
|
DECLARATORS = 40 #, COMMENT 050; 03895000=01214000=
|
|
03900000=01215000=
|
|
COMMENT CLASSES FOR STATEMENT BEGINNERS 03905000=01215000=
|
|
DOUBLEV =42#, COMMENT 052; 03910000=01222000=
|
|
FORV = 43 #, COMMENT 053; 03915000=01223000=
|
|
WHILEV = 44 #, COMMENT 054; 03920000=01224000=
|
|
DOV = 45 #, COMMENT 055; 03925000=01225000=
|
|
UNTILV = 46 #, COMMENT 056; 03930000=01226000=
|
|
ELSEV = 47 #, COMMENT 057; 03935000=01227000=
|
|
ENDV = 48 #, COMMENT 060; 03940000=01228000=
|
|
SEMICOLON = 50 #, COMMENT 062; 03945000=01230000=
|
|
IFV = 51 #, COMMENT 063; 03950000=01231000=
|
|
GOV = 52 #, COMMENT 064; 03955000=01232000=
|
|
IOCLASS = 53 #, COMMENT 065; 03960000=01233000=
|
|
BEGINV = 54 #, COMMENT 066; 03965000=01234000=
|
|
03970000=01235000=
|
|
COMMENT CLASSES FOR STREAM RESERVED WORDS; 03975000=01235000=
|
|
SIV = 55 #, COMMENT 067; 03980000=01236000=
|
|
DIQ = 56 #, COMMENT 070; 03985000=01237000=
|
|
CIV = 57 #, COMMENT 071; 03990000=01238000=
|
|
TALLYV = 58 #, COMMENT 072; 03995000=01239000=
|
|
DSV = 59 #, COMMENT 073; 04000000=01240000=
|
|
SKIPV = 60 #, COMMENT 074; 04005000=01241000=
|
|
JUMPV = 61 #, COMMENT 075; 04010000=01242000=
|
|
DBV = 62 #, COMMENT 076; 04015000=01243000=
|
|
SBV = 63 #, COMMENT 077; 04020000=01244000=
|
|
TOGGLEV = 64 #, COMMENT 100; 04025000=01245000=
|
|
SCV = 65 #, COMMENT 101; 04030000=01246000=
|
|
LOCV = 66 #, COMMENT 102; 04035000=01247000=
|
|
DCV = 67 #, COMMENT 103; 04040000=01248000=
|
|
LOCALV = 68 #, COMMENT 104; 04045000=01249000=
|
|
LITV = 69 #, COMMENT 105; 04050000=01250000=
|
|
TRNSFER = 70 #, COMMENT 106; 04055000=01251000=
|
|
04060000=01252000=
|
|
COMMENT CLASSES FOR VARIOUS MISCELLANEOUS QUANTITIES; 04065000=01252000=
|
|
COMMENTV = 71 #, COMMENT 107; 04070000=01253000=
|
|
FORWARDV = 72 #, COMMENT 110; 04075000=01254000=
|
|
STEPV = 73 #, COMMENT 111; 04080000=01255000=
|
|
THENV = 74 #, COMMENT 112; 04085000=01256000=
|
|
TOV = 75 #, COMMENT 113; 04090000=01257000=
|
|
VALUEV = 76 #, COMMENT 114; 04095000=01258000=
|
|
WITHV = 77 #, COMMENT 115; 04100000=01259000=
|
|
COLON = 78 #, COMMENT 116; 04105000=01260000=
|
|
COMMA = 79 #, COMMENT 117; 04110000=01261000=
|
|
CROSSHATCH = 80 #, COMMENT 120; 04115000=01262000=
|
|
LFTBRKET = 81 #, COMMENT 121; 04120000=01263000=
|
|
PERIOD = 82 #, COMMENT 122; 04125000=01264000=
|
|
RTBRKET = 83 #, COMMENT 123; 04130000=01265000=
|
|
RTPAREN = 84 #, COMMENT 124; 04135000=01266000=
|
|
AMPERSAND = 85 #, COMMENT 125; 04140000=01266500=
|
|
04145000=01267000=
|
|
COMMENT CLASSES FOR OPERATORS; 04150000=01267000=
|
|
HEXOP = 86 #, COMMENT 126; 04155000=01268000=
|
|
BITOP = 87 #, COMMENT 127; 04160000=01269000=
|
|
ISOLATE = 88 #, COMMENT 130; 04165000=01270000=
|
|
OPERATOR = 89 #, COMMENT 131; 04170000=01271000=
|
|
NOTOP = 90 #, COMMENT 132; 04175000=01272000=
|
|
ASSIGNOP = 91 #, COMMENT 133; 04180000=01273000=
|
|
EQVOP = 92 #, COMMENT 134; 04185000=01274000=
|
|
OROP = 93 #, COMMENT 135; 04190000=01275000=
|
|
ANDOP = 94 #, COMMENT 136; 04195000=01276000=
|
|
RELOP = 95 #, COMMENT 137; 04200000=01277000=
|
|
ADDOP = 96 #, COMMENT 140; 04205000=01278000=
|
|
MULOP = 97 #, COMMENT 141; 04210000=01278500=
|
|
% STRING =99#, COMMENT 143; 04215000=01278600=
|
|
COMMENT SUBCLASSES FOR DECLARATORS (KEPT IN ADDRESS); 04220000=01279000=
|
|
OWNV = 01 #, COMMENT 01; 04225000=01280000=
|
|
SAVEV = 02 #, COMMENT 02; 04230000=01281000=
|
|
BOOV = 03 #, COMMENT 03; 04235000=01282000=
|
|
REALV = 04 #, COMMENT 04; 04240000=01283000=
|
|
ALFAV = 05 #, COMMENT 05; 04245000=01284000=
|
|
INTV = 05 #, COMMENT 05; 04250000=01285000=
|
|
LABELV = 07 #, COMMENT 07; 04255000=01286000=
|
|
DUMPV = 08 #, COMMENT 10; 04260000=01287000=
|
|
SUBV = 09 #, COMMENT 11; 04265000=01288000=
|
|
OUTV = 10 #, COMMENT 12; 04270000=01289000=
|
|
INV = 11 #, COMMENT 13; 04275000=01290000=
|
|
MONITORV = 12 #, COMMENT 14; 04280000=01291000=
|
|
SWITCHV = 13 #, COMMENT 15; 04285000=01292000=
|
|
PROCV = 14 #, COMMENT 16; 04290000=01293000=
|
|
ARRAYV = 15 #, COMMENT 17; 04295000=01294000=
|
|
NAMEV = 16 #, COMMENT 20; 04300000=01295000=
|
|
FILEV = 17 #, COMMENT 21; 04305000=01296000=
|
|
STREAMV = 18 #, COMMENT 22; 04310000=01297000=
|
|
DEFINEV = 19 #, COMMENT 23; 04315000=01298000=
|
|
DEFINEDDES = 8 #, 04320000=01299010=
|
|
ADES = 28 #, 04325000=01299020=
|
|
PDES = 29 #, 04330000=01299030=
|
|
LDES = 30 #, 04335000=01299040=
|
|
CHAR = 31 #, 04340000=01299100=
|
|
FACTOP = ASTRISK #, 04345000=01299200=
|
|
OPERATORS = HEXOP #, 04350000=01299300=
|
|
FILEID = 0 #, 04355000=01299400=
|
|
MAXINTRINSIC = 150 #, 04360000=01299400=
|
|
% USED IN BUILDING INTABLE @ 09414120 04365000=01299400=
|
|
INTRINSICADR = (MAXINTRINSIC DIV 30) #; % RESERVES SEG FOR INTABLE04370000=01299500=
|
|
REAL 04375000=01300000=
|
|
TIME1; 04380000=01300000=
|
|
BOOLEAN 04385000=01300100=
|
|
ASTOG; 04390000=01300100=
|
|
BOOLEAN 04395000=01300200=
|
|
SAF; 04400000=01300200=
|
|
INTEGER 04405000=01301000=
|
|
SCRAM; 04410000=01301000=
|
|
COMMENT SCRAM CONTAINS THE SCRAMBLE INDEX FOR THE LAST IDENTIFIER 04415000=01302000=
|
|
OR RESERVED WORD SCANNED; 04420000=01303000=
|
|
ALPHA ARRAY 04425000=01304000=
|
|
ACCUM[0:10]; 04430000=01304000=
|
|
COMMENT ACCUM HOLDS THE ALPHA AND CHARACTER COUNT OF THE LAST 04435000=01305000=
|
|
SCANNED ITEM IN A FORM COMPATIBLE WITH ITS APPEARANCE 04440000=01306000=
|
|
IN INFO. THAT IS ACCUM[1] = 00NAAAAA, ACCUM[I] , I> 1, 04445000=01307000=
|
|
HAS ANY ADDITIONAL CHARACTERS. ACCUM[0] IS USED FOR 04450000=01308000=
|
|
THE ELBAT WORD BY THE ENTER ROUTINES; 04455000=01309000=
|
|
ARRAY 04460000=01310000=
|
|
STACKHEAD[0:125]; 04465000=01310000=
|
|
COMMENT STACKHEAD[N] CONTAINS AN INDEX INTO INFO GIVING THE TOP 04470000=01311000=
|
|
ITEM IN THE N-TH STACK; 04475000=01312000=
|
|
INTEGER 04480000=01313000=
|
|
COUNT; 04485000=01313000=
|
|
COMMENT COUNT CONTAINS THE NUMBER OF CHARACTORS OF THE LAST ITEM 04490000=01314000=
|
|
SCANNED; 04495000=01315000=
|
|
ALPHA 04500000=01316000=
|
|
Q; 04505000=01316000=
|
|
COMMENT Q CONTAINS ACCUM[1] FOR THE LAST IDENTIFIER OR RESERVED 04510000=01317000=
|
|
WORD SCANNED; 04515000=01318000=
|
|
ARRAY 04520000=01319000=
|
|
ELBAT[0:75]; 04525000=01319000=
|
|
INTEGER 04530000=01319000=
|
|
I, 04535000=01319000=
|
|
NXTELBT; 04540000=01319000=
|
|
COMMENT ELBAT IS AN ARRAY HOLDING ELBAT WORDS FOR RECENTLY SCANNED 04545000=01320000=
|
|
QUANTITIES. THE TABLE ROUTINE MAINTAINS THIS ARRAY. 04550000=01321000=
|
|
(ELBAT IS TABLE SPELLED BACKWARDS.) THE TABLE ROUTINE 04555000=01322000=
|
|
GUARANTIES THAT ELBAT ALWAYS CONTAINS THE ELBAT WORDS 04560000=01323000=
|
|
FOR THE LAST 10 QUANTITIES SCANNED. NXTELBT IS AN INDEX 04565000=01324000=
|
|
POINTING TO THE NEXT AVAILABLE WORD IN ELBAT. I IS AN 04570000=01325000=
|
|
INDEX USED BY THE REST OF THE COMPILER TO FETCH THINGS 04575000=01326000=
|
|
FROM ELBAT. I IS ALSO MAINTAINED BY THE TABLE ROUTINE; 04580000=01327000=
|
|
INTEGER 04585000=01328000=
|
|
ELCLASS; 04590000=01328000=
|
|
COMMENT ELCLASS USUALLY CONTAINS ELBAT[I].CLASS; 04595000=01329000=
|
|
INTEGER 04600000=01330000=
|
|
FCR, 04605000=01330000=
|
|
NCR, 04610000=01330000=
|
|
LCR, 04615000=01330000=
|
|
CLCR; 04625000=01330000=
|
|
ARRAY REFERENCE 04630000
|
|
SBUFF[0]; % CURRENT SOURCE INPUT BUFFER 04635100
|
|
COMMENT FCR CONTAINS ABSOLUTE ADDRESS OF THE FIRST CHARACTOR OF 04640000=01332000=
|
|
THE CARD IMAGE CURRENTLY BEING SCANNED, NCR THE ADDRESS 04645000=01333000=
|
|
OF THE NEXT CHARACTOR TO BE SCANNED, AND LCR THE LAST 04650000=01334000=
|
|
CHARACTOR (COLUMN 73). CLCR CONTAIN ADDRESS OF 04655000=01335000=
|
|
THE LAST CHARACTER IN THE CARD BUFFERS; 04660000=01336000=
|
|
ARRAY 04670000=01340000=
|
|
TEN[-46:69]; 04675000=01340000=
|
|
DEFINE 04680000=01342000=
|
|
PRTBASE = 129 #, 04685000=01342000=
|
|
PRTOP = 896 #; COMMENT PAGE AND TOP OF PRT; 04690000=01342000=
|
|
ARRAY 04700000=01343000=
|
|
PRT[PRTBASE:PRTOP]; 04705000=01343000=
|
|
INTEGER 04710000=01344000=
|
|
DISKADR, 04715000=01344000=
|
|
CORADR; COMMENT GLOBALS FOR PROGDESCBLDR; 04720000=01344000=
|
|
INTEGER 04730000=01369000=
|
|
SGAVL; COMMENT NEXT AVAILABLE SEGMENT NUMBER; 04735000=01369000=
|
|
INTEGER 04745000=01370000=
|
|
SGNO; COMMENT THIS IS THE CURRENT SEGMENT NUMBER; 04750000=01370000=
|
|
ARRAY 04760000=01371000=
|
|
COP, 04765000=01371000=
|
|
WOP[0:127]; 04770000=01371000=
|
|
COMMENT THE EMIT ROUTINES PLACE EACH SYLLABLE INTO THE EDOC ARRAY 04775000=01372000=
|
|
AS SPECIFIED BY "L". 04780000=01373000=
|
|
IF THE DEBUGTOG IS TRUE COP AND WOP ARE FILLED WITH 04785000=01374000=
|
|
THE BCD FOR THE OPERATORS,OTHERWISE THEY ARE NOT USED; 04790000=01375000=
|
|
REAL 04795000=01376000=
|
|
LASTENTRY; 04800000=01376000=
|
|
COMMENT LASTENTRY IS USED BY EMITNUM AND CONSTANTCLEAN. IT POINTS 04805000=01377000=
|
|
INTO INFO[0,*] AT THE NEXT AVAILABLE CELL FOR CONSTANTS; 04810000=01378000=
|
|
BOOLEAN 04815000=01379000=
|
|
MRCLEAN; 04820000=01379000=
|
|
COMMENT NO CONSTANTCLEAN ACTION TAKES PLACE WHILE MRCLEAN IS 04825000=01380000=
|
|
FALSE. THIS FEATURE IS USED BY BLOCK BECAUSE OF THE 04830000=01381000=
|
|
POSSIBILITY THAT CONSTANTCLEAN WILL USE INFO[NEXTINFO] 04835000=01382000=
|
|
DURING AN ARRAY DECLARATION ; 04840000=01383000=
|
|
REAL 04845000=01384000=
|
|
GT1, 04850000=01384000=
|
|
GT2, 04855000=01384000=
|
|
GT3, 04860000=01384000=
|
|
GT4, 04865000=01384000=
|
|
GT5; 04870000=01384000=
|
|
INTEGER 04875000=01384500=
|
|
GTI1; 04880000=01384500=
|
|
COMMENT THESE VARIABLES ARE USED FOR TEMPORARY STORAGE; 04885000=01385000=
|
|
INTEGER 04890000=01386000=
|
|
RESULT; 04895000=01386000=
|
|
COMMENT THIS VARIABLE IS USED FOR A DUAL PURPOSE BY THE TABLE 04900000=01387000=
|
|
ROUTINE AND THE SCANNER. THE TABLE ROUTINE USES THIS 04905000=01388000=
|
|
VARIABLE TO SPECIFY SCANNER OPERATIONS AND THE SCANNER 04910000=01389000=
|
|
USES IT TO INFORM THE TABLE ROUTINE OF THE ACTION TAKEN; 04915000=01390000=
|
|
INTEGER 04920000=01391000=
|
|
LASTUSED; 04925000=01391000=
|
|
COMMENT LASTUSED IS A VARIABLE THAT CONTROLS THE ACTION OF 04930000=01392000=
|
|
READACARD, THE ROUTINE WHICH READS CARDS AND INITIALIZES 04935000=01393000=
|
|
OR PREPARES THE CARD FOR THE SCANNER. 04940000=01394000=
|
|
LASTUSED LAST CARD READ FROM 04945000=01394500=
|
|
-------- ------------------- 04950000=01394600=
|
|
1 CARD READER ONLY, NO TAPE. 04955000=01395000=
|
|
2 CARD READER, TAPE AND CARD MERGE. 04960000=01396000=
|
|
3 TAPE, TAPE AND CARD MERGE. 04965000=01397000=
|
|
4 INITIALIZATION ONLY, CARD ONLY. 04970000=01398000=
|
|
; 04975000=01398300=
|
|
BOOLEAN 04980000=01399000=
|
|
LINKTOG; 04985000=01399000=
|
|
COMMENT LINKTOG IS FALSE IF THE LAST THING EMITTED IS A LINK, 04990000=01400000=
|
|
OTHERWISE IT IS TRUE; 04995000=01401000=
|
|
INTEGER 05000000=01402000=
|
|
LEVEL, 05005000=01402000=
|
|
FRSTLEVEL, 05010000=01402000=
|
|
SUBLEVEL, 05015000=01402000=
|
|
MODE; 05020000=01402000=
|
|
COMMENT THESE VARIABLES ARE MAINTAINED BY THE BLOCK ROUTINE TO KEEP 05025000=01403000=
|
|
TRACK OF LEVELS OF DEFINITION. LEVEL GIVES THE DEPTH OF 05030000=01404000=
|
|
NESTING IN DEFINITION, WHERE EACH BLOCK AND EACH PROCEDURE05035000=01405000=
|
|
GIVES RISE TO A NEW LEVEL. SUBLEVEL GIVES THE LEVEL OF 05040000=01406000=
|
|
THE PARAMETERS OF THE PROCEDURE CURRENTLY BEING COMPILED. 05045000=01407000=
|
|
FRSTLEVEL IS THE LEVEL OF THE PARAMETERS OF THE MOST 05050000=01408000=
|
|
GLOBAL OF THE PROCEDURES CURRENTLY BEING COMPILED. MODE 05055000=01409000=
|
|
IS THE CURRENT DEPTH OF THE PROCEDURE IN WHICH WE ARE 05060000=01410000=
|
|
NESTED (AT COMPILE TIME); 05065000=01411000=
|
|
BOOLEAN 05070000=01412000=
|
|
ERRORTOG; 05075000=01412000=
|
|
COMMENT ERRORTOG IS TRUE IF MESSAGES ARE CURRENTLY ACCEPTABLE TO THE05080000=01413000=
|
|
ERROR ROUTINES. ERRORCOUNT IS THE COUNT OF ERROR MSSGS; 05085000=01414000=
|
|
BOOLEAN 05090000=01415000=
|
|
ENDTOG; COMMENT ENDTOG TELLS THE TABLE TO ALLOW 05095000=01415000=
|
|
COMMENT TO BE PASSED BACK TO COMPOUNDTAIL; 05105000=01416000=
|
|
BOOLEAN 05110000=01417000=
|
|
STREAMTOG; 05115000=01417000=
|
|
COMMENT STREAMTOG IS TRUE IF WE ARE COMPILING STREAM STATEMENT. IT 05120000=01418000=
|
|
IS USED TO CONTROL COMPOUNDTAIL; 05125000=01419000=
|
|
DEFINE 05130000=01420000=
|
|
FS = 1 #, 05135000=01420000=
|
|
FP = 2 #, 05140000=01420000=
|
|
FL = 3 #, 05145000=01420000=
|
|
FR = 4 #; 05150000=01420000=
|
|
COMMENT THESE DEFINES ARE USED WHEN CALLING THE VARIABLE ROUTINE. 05155000=01421000=
|
|
THEIR PURPOSES IS TO TELL VARIABLE WHO IS CALLING. 05160000=01422000=
|
|
THEIR MEANING IS: 05165000=01423000=
|
|
FS MEANS FROM STATEMENT, 05170000=01424000=
|
|
FP MEANS FROM PRIMARY, 05175000=01425000=
|
|
FL MEANS FROM LIST, 05180000=01426000=
|
|
FR MEANS FROM FOR; 05185000=01427000=
|
|
INTEGER 05190000=01428000=
|
|
L; 05195000=01428000=
|
|
COMMENT L IS THE LOCATION OF THE NEXT SYLLABLE TO BE EMITTED; 05200000=01429000=
|
|
DEFINE 05205000=01430000=
|
|
BLOCKCTR = 16 #, 05210000=01430000=
|
|
JUNK = 17 #, 05215000=01430000=
|
|
XITR = 18 #, 05220000=01430000=
|
|
LSTRTN = 19 #; 05225000=01430000=
|
|
DEFINE 05230000=01452000=
|
|
ATYPE = 3 #, 05235000=01452000=
|
|
BTYPE = ATYPE #, 05240000=01452000=
|
|
DTYPE = ATYPE #; 05245000=01452000=
|
|
BOOLEAN 05250000=01457000=
|
|
TB1; 05255000=01457000=
|
|
COMMENT TB1 IS A TEMPORARY BOOLEAN VARIABLE; 05260000=01458000=
|
|
INTEGER 05265000=01459000=
|
|
JUMPCTR; 05270000=01459000=
|
|
COMMENT JUMPCTR IS A VARIABLE USED FOR COMMUNICATION BETWEEN BLOCK 05275000=01460000=
|
|
AND GENGO. IT GIVES HIGHEST LEVEL TO WHICH A JUMP HAS 05280000=01461000=
|
|
BEEN MADE FROM WITHIN A THE PRESENTLY BEING COMPILED 05285000=01462000=
|
|
SEGMENT. THE BLOCK COMPILES CODE TO INCREMENT AND DECRE- 05290000=01463000=
|
|
MENT THE BLOCKCTR ON THE BASIS OF JUMPCTR AT COMPLETION 05295000=01464000=
|
|
OF COMPILATION OF A SEGMENT - I.E. THE BLOCKCTR IS TALLIED 05300000=01465000=
|
|
IF LEVEL = JUMPCTR; 05305000=01466000=
|
|
REAL 05310000=01471000=
|
|
STLB; 05315000=01471000=
|
|
COMMENT STLB IS USED BY VARIABLE AND ACTUALPARAPART TO COMMUNICATE 05320000=01472000=
|
|
THE LOWER BOUND INFORMATION FOR THE LAST DIMENSION OF THE 05325000=01473000=
|
|
ARRAY INVOLVED IN A ROW DESIGNATOR. THE FORMAT OF THE 05330000=01474000=
|
|
INFORMATION IS THAT OF INFO. STLB IS ALSO SOMETIMES USED 05335000=01475000=
|
|
FOR TEMPORARY STORAGE; 05340000=01476000=
|
|
DEFINE 05345000=01477000=
|
|
BUMPL = L:= L+2 #; 05350000=01477000=
|
|
COMMENT BUMPL IS USED MOSTLY TO PREPARE A FORWARD JUMP; 05355000=01478000=
|
|
DEFINE 05360000=01479000=
|
|
IDMAX = LABELID #; 05365000=01479000=
|
|
COMMENT IDMAX IS THE MAXIMUM CLASS NUMBER FOR IDENTIFIERS; 05370000=01480000=
|
|
INTEGER 05375000=01481000=
|
|
DEFINECTR, 05380000=01481000=
|
|
DEFINEINDEX; 05385000=01481000=
|
|
REAL 05390000=01482000=
|
|
JOINFO, COMMENT POINTS TO PSEUDO LABEL FOR JUMP OUTS; 05395000=01482000=
|
|
LPRT, COMMENT SHOWS LOCATION OF THE LAST LABEL IN THE PRT ; 05400000=01483000=
|
|
NESTLEVEL, COMMENT COUNTS NESTING FOR GO TO AND JUMP OUTS; 05405000=01484000=
|
|
JUMPLEVEL; COMMENT NUMBER OF LEVELS TO BE JUMPED OUT; 05410000=01485000=
|
|
05420000=01486000=
|
|
COMMENT THE REALS ABOVE ARE FOR STREAM STATEMENT; 05425000=01486000=
|
|
ARRAY 05430000=01487000=
|
|
MACRO[0:35]; 05435000=01487000=
|
|
COMMENT MACRO IS FILLED WITH SYLLABLES FOR STREAM STATEMENT; 05440000=01488000=
|
|
REAL 05445000=01489000=
|
|
P, COMMENT CONTAINS NUMBER OF FORMALS FOR STREAM PROCS; 05450000=01489000=
|
|
Z; COMMENT CONTAINS 1ST WORD OF INFO FOR STREAM FUNCTIONS; 05455000=01490000=
|
|
ARRAY 05465000=01490510=
|
|
DEFINEARRAY[0:23]; % >>>>> can 0:23 be right ?? SB 0:34 ?? <<<<< 05475000=01491000=
|
|
COMMENT THESE VARIABLES ARE USED TO CONTROL ACTION OF THE DEFINE. 05480000=01492000=
|
|
DEFINECTR COUNTS DEPTH OF NESTING OF DEFINE-# PAIRS. 05485000=01493000=
|
|
THE CROSSHATCH PART OF THE TABLE ROUTINE USES DEFINECTR 05490000=01494000=
|
|
TO DETERMINE THE MEANING OF A CROSSHATCH. DEFINEINDEX IS 05495000=01495000=
|
|
THE NEXT AVAILABLE CELL IN THE DEFINEARRAY. THE DEFINE- 05500000=01496000=
|
|
ARRAY HOLDS THE ALPHA OF THE DEFINE BEING RECREATED AND 05505000=01497000=
|
|
THE PREVIOUS VALUES OF LASTUSED, LCR, AND NCR; 05510000=01498000=
|
|
INTEGER 05515000=01499000=
|
|
BEGINCTR; 05520000=01499000=
|
|
COMMENT BEGINCTR GIVES THE NUMBER OF UNMATCHED BEGINS. IT IS USED05525000=01500000=
|
|
FOR ERROR CONTROL ONLY; 05530000=01501000=
|
|
INTEGER 05535000=01502000=
|
|
DIALA, 05540000=01502000=
|
|
DIALB; 05545000=01502000=
|
|
COMMENT THESE VARIABLES GIVE THE LAST VALUE TO WHICH A AND B WERE 05550000=01503000=
|
|
DIALED. THIS GIVES SOME LOCAL OPTIMIZATION. EMITD 05555000=01504000=
|
|
WORRIES ABOUT THIS. OTHER ROUTINES CAUSE A LOSS OF MEMORY05560000=01505000=
|
|
BY SETTING DIALA AND DIALB TO ZERO; 05565000=01506000=
|
|
BOOLEAN 05570000=01522000=
|
|
RRB1; COMMENT RRB1---RRBN ARE BOOLEAN VARIABLES THAT SERVE THE 05575000=01522000=
|
|
SAME FUNCTION AS RR1---RRN FOR REAL VARIABLES. SEE 05585000=01523000=
|
|
COMMENT AT RR1; 05590000=01524000=
|
|
BOOLEAN 05595000=01525000=
|
|
RRB2; COMMENT SEE COMMENT AT RRB1 DECLARATION; 05600000=01525000=
|
|
DEFINE 05610000=01526000=
|
|
ARRAYMONFILE = [20:11] #; COMMENT ARRAYMONFILE IS THE DEFINE FOR 05615000=01526000=
|
|
THE ADDRESS OF THE FILE DESCRIPTOR IN 05625000=01527000=
|
|
THE FIRST WORD OF ADDITIONAL INFO; 05630000=01528000=
|
|
DEFINE 05635000=01529000=
|
|
SVARMONFILE = [10:11] #; COMMENT MONITORFILE IS THE DEFINE FOR 05640000=01529000=
|
|
THE ADDRESS OF THE FILE DESCRIPTOR IN 05650000=01530000=
|
|
INFO FOR MONITORED SIMPLE VARIABLES; 05655000=01531000=
|
|
DEFINE 05660000=01532000=
|
|
NODIMPART = [7:8] #;COMMENT THE FIRST ADDITIONAL WORD OF INFO 05665000=01532000=
|
|
FOR ARRAYS CONTAINS THE NUMBER OF DIMENSIONS05675000=01533000=
|
|
IN NODIMPART; 05680000=01534000=
|
|
DEFINE 05685000=01535000=
|
|
LABLMONFILE = [34:11] #; COMMENT LABLMONFILE DESIGNATES THE BIT 05690000=01535000=
|
|
POSITION IN THE FIRST WORD OF ADDITIONAL 05700000=01536000=
|
|
INFO THAT CONTAINS THE MONITOR FILE 05705000=01537000=
|
|
ADDRESS FOR LABELS; 05710000=01538000=
|
|
DEFINE 05715000=01539000=
|
|
SWITMONFILE = [34:11] #; COMMENT SWITMONFILE DESIGNATES THE BIT 05720000=01539000=
|
|
POSITION IN THE FIRST WORD OF ADDITIONAL 05730000=01540000=
|
|
INFO THAT CONTAINS THE MONITOR FILE 05735000=01541000=
|
|
ADDRESS FOR LABELS; 05740000=01542000=
|
|
DEFINE 05745000=01543000=
|
|
FUNCMONFILE = [20:11] #; COMMENT FUNCMONFILE DESIGNATES THE BIT 05750000=01543000=
|
|
POSITION IN THE FIRST WORD OF ADDITIONAL 05760000=01544000=
|
|
INFO THAT CONTAINS THE MONITOR FILE 05765000=01545000=
|
|
ADDRESS FOR LABELS; 05770000=01546000=
|
|
DEFINE 05775000=01547000=
|
|
DUMPEE = [45:11] #; 05780000=01547000=
|
|
COMMENT THE DUMPEE FIELD IN THE FIRST 05785000=01547000=
|
|
ADDITIONAL WORD OF INFO FOR LABELS CONTAINS 05790000=01548000=
|
|
THE ADDRESS OF THE COUNTER THAT IS INCREMENTED 05795000=01549000=
|
|
EACH TIME THE LABEL IS PASSED IF THAT LABEL 05800000=01550000=
|
|
APPEARS IN A DUMP DECLARATION; 05805000=01551000=
|
|
DEFINE 05810000=01552000=
|
|
DUMPOR = [23:11] #; 05815000=01552000=
|
|
COMMENT THE DUMPOR FIELD IN THE FIRST 05820000=01552000=
|
|
ADDITIONAL WORD OF INFO FOR LABELS CONTAINS 05825000=01553000=
|
|
THE ADDRESS OF THE ROUTINE THAT IS GENERATED 05830000=01554000=
|
|
FROM THE DUMP DECLARATION THAT IN TURN CALLS 05835000=01555000=
|
|
THE PRINTI ROUTINE; 05840000=01556000=
|
|
DEFINE 05845000=01556500=
|
|
SUBOP = 48 #; 05850000=01556500=
|
|
ARRAY 05855000=01556900=
|
|
CODEBUFF[0:1023]; % CODE BUFFER (WAS A FILE) 05860000=01556900=
|
|
FILE 05865000=01557000=
|
|
CARD(KIND=DISK, DEPENDENTSPECS, FILEUSE=IN); 05870000=01557000=
|
|
FILE 05875000=01558000=
|
|
LINE(KIND=PRINTER, MAXRECSIZE=20, FRAMESIZE=48, FILEUSE=OUT); 05880000=01558000=
|
|
ARRAY 05885000=01559010=
|
|
LIN[0:20]; COMMENT PRINT OUTPUT BUILT IN LIN; 05890000=01559010=
|
|
INTEGER 05900000=01559020=
|
|
DA; 05905000=01559020=
|
|
INTEGER 05910000
|
|
CARDRECSIZE, % FRAMESIZE UNITS 05910100
|
|
CODELENGTH; % LENGTH OF DATA IN CODE[*] 05910500
|
|
ARRAY 05911000=01561056=
|
|
CBUFF[0:9]; % INPUT BUFFER. 05912000
|
|
FILE 05930000=01561300=
|
|
CODISK(KIND=DISK, MAXRECSIZE=30, BLOCKSIZE=300, FRAMESIZE=48, 05935000=01561300=
|
|
AREAS=20, AREASIZE=600); 05936000
|
|
FILE 05940000=01561400=
|
|
DISK(KIND=DISK, MAXRECSIZE=30, BLOCKSIZE=300, FRAMESIZE=48, 05945000=01561400=
|
|
AREAS=1, AREASIZE=2100, PROTECTION=SAVE, TITLE="MCP/DISK."); 05946000=01561400=
|
|
DEFINE 05950000=01561410=
|
|
MCPTYPE = 63 #, 05955000=01561420=
|
|
DCINTYPE = 62 #, 05960000=01561430=
|
|
TSSINTYPE = 61 #; 05965000=01561430=
|
|
05970000=01561440=
|
|
COMMENT ESPOL CODE FILES ARE UNIQUELY TYPED IN THEIR FILE 05975000=01561440=
|
|
HEADERS. HEADER[4].[11:6] IS THE FIELD USED TO CONTAIN 05980000=01561450=
|
|
THE TYPE; 05985000=01561460=
|
|
FILE 05990000=01561500=
|
|
DECK(KIND=DISK, MAXRECSIZE=10, BLOCKSIZE=300, FRAMESIZE=48, 05995000=01561500=
|
|
AREAS=20, AREASIZE=990, PROTECTION=SAVE); 05995100
|
|
FILE 06000000=01561600=
|
|
STUFF(KIND=DISK, MAXRECSIZE=10, BLOCKSIZE=30, FRAMESIZE=48, 06005000=01561600=
|
|
AREAS=20, AREASIZE=150, PROTECTION=SAVE); 06006000
|
|
ARRAY 06010000=01561700=
|
|
TWXA[0:16]; 06015000=01561700=
|
|
REAL 06020000=01562000=
|
|
C; 06025000=01562000=
|
|
COMMENT C CONTAINS ACTUAL VALUE OF LAST CONSTANT SCANNED; 06030000=01563000=
|
|
REAL 06035000=01564000=
|
|
T; 06040000=01564000=
|
|
COMMENT T IS A TEMPORARY CELL; 06045000=01565000=
|
|
INTEGER 06050000=01566000=
|
|
TCOUNT; 06055000=01566000=
|
|
REAL 06060000=01566010=
|
|
STACKCT; 06065000=01566010=
|
|
COMMENT TCOUNT IS A VARIABLE WHICH HOLDS A PREVIOUS VALUE OF COUNT 06070000=01567000=
|
|
FOR THE USE OF CONVERT; 06075000=01568000=
|
|
DEFINE 06080000=01569000=
|
|
LASTSEQUENCE = 145 #, 06085000=01570000=
|
|
LASTSEQROW = 2 #; 06090000=01570000=
|
|
REAL 06095000=01583100=
|
|
FOULED; 06100000=01583100=
|
|
BOOLEAN 06105000=01586000=
|
|
FUNCTOG, COMMENT TELLS WHETHER PROCEDURE BEING DECLARED IS A 06110000=01586000=
|
|
FUNCTION; 06115000=01587000=
|
|
P2, COMMENT GENERALY TELLS WHETHER OWN WAS SEEN; 06120000=01588000=
|
|
P3, COMMENT TELLS WHETHER SAVE WAS SEEN; 06125000=01589000=
|
|
VONF, COMMENT VALUE OR OWN FIELD OF ELBAT WORD; 06130000=01590000=
|
|
FORMALF, COMMENT FORMAL FIELD OF ELBAT WORD; 06135000=01591000=
|
|
PTOG, COMMENT TELLS THAT FORMAL PARAPART IS BEING PROCESSD;06140000=01592000=
|
|
SPECTOG, 06145000=01594000=
|
|
STOPENTRY, COMMENT THIS MAKES THE ENTRY PROCEDURE ENTER ONLY 06150000=01594000=
|
|
ONE ID AND THEN EIXT; 06155000=01595000=
|
|
AJUMP; COMMENT TELLS WHETHER A JUMP IS HANGING; 06160000=01596000=
|
|
BOOLEAN 06170000=01597000=
|
|
STOPDEFINE; 06175000=01597000=
|
|
INTEGER 06180000=01598000=
|
|
MAXSAVE; 06185000=01598000=
|
|
COMMENT THIS CONTAINS THE SIZE OF THE MAXIMUM SAVE ARRAY 06190000=01599000=
|
|
DECLARED. IT IS USED TO HELP DETERMINE STORAGE REQUIREMENTS 06195000=01600000=
|
|
FOR THE PROGRAM PARAMETER BLOCK FOR THE OBJECT PROGRAM; 06200000=01601000=
|
|
REAL 06205000=01603000=
|
|
KLASSF, COMMENT CLASS IN LOW ORDER 7 BITS; 06210000=01603000=
|
|
ADDRSF, COMMENT ADDRESS IN LOW ORDER 11 BITS; 06215000=01604000=
|
|
LEVELF, COMMENT LVL IN LOW ORDER 5 BITS; 06220000=01605000=
|
|
LINKF, COMMENT LINK IN LOW ORDER 13 BITS; 06225000=01606000=
|
|
INCRF, COMMENT INCR CN LOW ORDER 8 BITS; 06230000=01607000=
|
|
PROINFO, COMMENT CONTAINS ELBAT WORD FOR PROCEDURE BEING 06235000=01608000=
|
|
DECLARED; 06240000=01609000=
|
|
G, COMMENT GLOBAL TEMPORARY FOR BLOCK; 06245000=01610000=
|
|
TYPEV, COMMENT USED TO CARRY CLASS OF IDENTIFIER 06250000=01611000=
|
|
BEING DECLARED; 06255000=01612000=
|
|
PROADO, COMMENT CONTAINS ADDRESS OF PROCEDURE BEING 06260000=01613000=
|
|
DECLARED; 06265000=01614000=
|
|
MARK, COMMENT CONTAINS INDEX INTO INFO WHERE FIRST WORD 06270000=01615000=
|
|
OF ADDITIONAL INFO FOR A PROCEDURE ENTRY; 06275000=01616000=
|
|
PJ, COMMENT FORMAL PARAMETER COUNTER; 06280000=01617000=
|
|
J, COMMENT ARRAY COUNTER; 06285000=01618000=
|
|
LASTINFO, COMMENT INDEX TO LAST ENTRY IN INFO; 06290000=01619000=
|
|
NEXTINFO, COMMENT INDEX FOR NEXT ENTRYIN INFO; 06295000=01620000=
|
|
FIRSTX, COMMENT RELATIVE ADD OF FIRST EXECUTABLE CODE 06300000=01621000=
|
|
IN BLOCK,INITIALIZED TO 4095 EACH TIME; 06305000=01622000=
|
|
SAVEL; COMMENT SAVE LOCATION FOR FIXUPS IN BLOCK; 06310000=01623000=
|
|
INTEGER 06320000=01624000=
|
|
NCII; COMMENT THIS CONTAINS THE COUNT OF CONSTANTS 06325000=01624000=
|
|
ENTERED IN INFO AT ANY GIVEN TIME; 06335000=01625000=
|
|
PROCEDURE UNHOOK; 06340000=01626000=
|
|
FORWARD; 06345000=01626000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%06350000=01626000=
|
|
PROCEDURE MAKEUPACCUM; 06355000=01627000=
|
|
FORWARD; 06360000=01627000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%06365000=01627000=
|
|
DEFINE 06370000=01628000=
|
|
PURPT = [43:8] #, 06375000=01628000=
|
|
SECRET = 2 #; 06380000=01628000=
|
|
06385000=01629000=
|
|
COMMENT THESE DEFINES GIVE THE NAMES OF THE WORD MODE OPERATORS. THE 06390000=01629000=
|
|
NUMBERS REFER TO THE APPROPRIATE SECTION OF THE PRODUCT SPECS. THE 06395000=01630000=
|
|
FULL NAME IS ALSO GIVEN; 06400000=01631000=
|
|
DEFINE 06405000=01632000=
|
|
ADD = 16#, COMMENT (0101) 7.4.2.1 ADD; 06410000=01633000=
|
|
BBC = 22#, COMMENT (0131) 7.4.5.4 BRANCH BACKWARD CONDITIONAL;06415000=01634000=
|
|
BBW = 534#, COMMENT (4131) 7.4.5.2 BRANCH BACKWARD; 06420000=01635000=
|
|
BFC = 38#, COMMENT (0231) 7.4.5.3 BRANCH FORWARD CONDITIONAL; 06425000=01636000=
|
|
BFW = 550#, COMMENT (4231) 7.4.5.1 BRANCH FORWARD; 06430000=01637000=
|
|
CDC = 168#, COMMENT (1241) 7.4.10.4 CONSTRUCT DESCRIPTOR CALL; 06435000=01638000=
|
|
CHS = 134#, COMMENT (1031) 7.4.7.11 CHANGE SIGN; 06440000=01639000=
|
|
COC = 40#, COMMENT (0241) 7.4.10.3 CONSTRUCT OPERAND CALL; 06445000=01640000=
|
|
COM = 130#, COMMENT (1011) 7.4.10.5 COMMUNICATION OPERATOR; 06450000=01641000=
|
|
DEL = 10#, COMMENT (0045) 7.4.9.3 DELETE; 06455000=01642000=
|
|
DUP = 261#, COMMENT (2025) 7.4.9.2 DUPLICATE; 06460000=01643000=
|
|
EQL = 581#, COMMENT (4425) 7.4.4.3 EQUAL; 06465000=01644000=
|
|
LBC = 278#, COMMENT(2131) 7.4.5.9 GO BACKWARD CONDITIONAL; 06470000=01645000=
|
|
LBU = 790#, COMMENT(6131) 7.4.5.7 GO BACKWARD (WORD); 06475000=01646000=
|
|
GEQ = 21#, COMMENT (0125) 7.4.4.2 GREATER THAN OR EQUAL TO; 06480000=01647000=
|
|
LFC = 294#, COMMENT(2231) 7.4.5.8 GO FORWARD CONDITIONAL; 06485000=01648000=
|
|
LFU = 806#, COMMENT(6231) 7.4.5.6 GO FORWARD (WORD); 06490000=01649000=
|
|
GTR = 37#, COMMENT (0225) 7.4.4.1 GREATER THAN; 06495000=01650000=
|
|
IDV = 384#, COMMENT (3001) 7.4.2.5 INTEGER DIVIDE; 06500000=01651000=
|
|
INX = 24#, COMMENT (0141) 7.4.10.2 INDEX; 06505000=01652000=
|
|
ISD = 532#, COMMENT (4121) 7.4.6.3 INTEGER STORE DESTRUCTIVE; 06510000=01653000=
|
|
ISN = 548#, COMMENT (4221) 7.4.6.4 INTEGER STORE NON-DESTRUCT; 06515000=01654000=
|
|
LEQ = 533#, COMMENT (4125) 7.4.4.4 LESS THAN OR EQUAL TO; 06520000=01655000=
|
|
LND = 67#, COMMENT (0415) 7.4.3.1 LOGICAL AND; 06525000=01656000=
|
|
LNG = 19#, COMMENT (0115) 7.4.3.4 LOGICAL NEGATE; 06530000=01657000=
|
|
LOD = 260#, COMMENT (2021) 7.4.10.1 LOAD OPERATOR; 06535000=01658000=
|
|
LOR = 35#, COMMENT (0215) 7.4.3.2 LOGICAL OR; 06540000=01659000=
|
|
LQV = 131#, COMMENT (1015) 7.4.3.3 LOGICAL EQUIVALENCE; 06545000=01660000=
|
|
LSS = 549#, COMMENT (4225) 7.4.4.5 LESS THAN; 06550000=01661000=
|
|
MKS = 72#, COMMENT (0441) 7.4.8.1 MARK STACK; 06555000=01662000=
|
|
MUL = 64#, COMMENT (0401) 7.4.2.3 MULTIPLY; 06560000=01663000=
|
|
NEQ = 69#, COMMENT (0425) 7.4.4.6 NOT EQUAL TO; 06565000=01664000=
|
|
NOP = 11#, COMMENT (0055) 7.4.7.1 NO OPERATION; 06570000=01665000=
|
|
PRL = 18#, COMMENT (0111) 7.4.10.6 PROGRAM RELEASE; 06575000=01666000=
|
|
PRTE= 12#, COMMENT (0061) 7.4.10.9 EXTEND PRT; 06580000=01667000=
|
|
RDV = 896#, COMMENT (7001) 7.4.2.6 REMAINDER DIVIDE; 06585000=01668000=
|
|
RTN = 39#, COMMENT (0235) 7.4.8.3 RETURN NORMAL; 06590000=01669000=
|
|
RTS = 167#, COMMENT (1235) 7.4.8.4 RETURN SPECIAL; 06595000=01670000=
|
|
SND = 132#, COMMENT (1021) 7.4.6.2 STORE NON-DESTRUCTIVE; 06600000=01671000=
|
|
SSP = 582#, COMMENT (4431) 7.4.7.10 SET SIGN PLUS; 06605000=01672000=
|
|
STD = 68#, COMMENT (0421) 7.4.6.1 STORE DESTRUCTIVE; 06610000=01673000=
|
|
SUB = 48#, COMMENT (0301) 7.4.2.2 SUBTRACT; 06615000=01674000=
|
|
XCH = 133#, COMMENT (1025) 7.4.9.1 EXCHANGE; 06620000=01675000=
|
|
XIT = 71#, COMMENT (0435) 7.4.8.2 EXIT; 06625000=01676000=
|
|
ZP1 = 322#, COMMENT (2411) 7.4.10.8 CONDITIONAL HALT; 06630000=01677000=
|
|
SCI =1003#, COMMENT (7655) SCAN OUT INITIALIZE; 06635000=01677050=
|
|
SAN =1004#, COMMENT (7661) SYSTEM ATTENTION NEEDED 06640000=01677100=
|
|
SCS =1019#, COMMENT (7755) SCAN OUT STOP; 06645000=01677150=
|
|
COMMENT THESE DEFINES ARE USED BY EMITD; 06650000=01678000=
|
|
DEFINE 06655000=01679000=
|
|
DIA = 45#, COMMENT (XX55) 7.4.7.1 DIAL A; 06660000=01680000=
|
|
DIB = 49#, COMMENT (XX61) 7.4.7.2 DIAL B; 06665000=01681000=
|
|
TRB = 53#; COMMENT (XX65) 7.4.7.3 TRANSFER BITS; 06670000=01682000=
|
|
REAL 06675000=01683000=
|
|
MAXSTACK, 06680000=01683000=
|
|
STACKCTR; 06685000=01683000=
|
|
INTEGER 06690000=01684000=
|
|
MAXROW;COMMENT THIS CONTAINS THE MAXIMUM ROW SIZE OF ALL NON-SAVE 06695000=01684000=
|
|
ARRAYS DECLARED. ITS USE IS LIKE THAT OF MAXSAVE; 06705000=01686000=
|
|
INTEGER 06710000=01687000=
|
|
SEGSIZEMAX; COMMENT CONTAINS MAX SEGMENT SIZE; 06715000=01687000=
|
|
INTEGER 06725000=01688000=
|
|
F; 06730000=01688000=
|
|
REAL 06735000=01689000=
|
|
NLO, 06740000=01689000=
|
|
NHI, 06745000=01689000=
|
|
TLO, 06750000=01689000=
|
|
THI; 06755000=01689000=
|
|
BOOLEAN 06760000=01690000=
|
|
DPTOG; COMMENT THE ABOVE THINGS ARE TEMP STORAGE FOR DOUBLE NOS;06765000=01690000=
|
|
BOOLEAN 06775000=01691500=
|
|
DOLLAR2TOG; 06780000=01691500=
|
|
DEFINE 06785000=01692000=
|
|
FZERO = 896 #; 06790000=01692000=
|
|
REAL 06795000=01693000=
|
|
T1, 06800000=01693000=
|
|
T2, 06805000=01693000=
|
|
N, 06810000=01693000=
|
|
K, 06815000=01693000=
|
|
AKKUM; 06820000=01693000=
|
|
BOOLEAN 06825000=01694000=
|
|
STOPGSP; 06830000=01694000=
|
|
INTEGER 06835000=01695000=
|
|
BUP; 06840000=01695000=
|
|
BOOLEAN 06845000=01695500=
|
|
INLINETOG; 06850000=01695500=
|
|
COMMENT UNIQUE GLOBAL TEMP FOR BLOCK; 06855000=01696000=
|
|
ARRAY 06860000=01697000=
|
|
GTA1[0:10]; 06865000=01697000=
|
|
BOOLEAN ARRAY 06870000=01698000=
|
|
SPRT[0:31]; 06875000=01698000=
|
|
COMMENT SPRT IS TO BE CONSIDERED TO BE AN ARRAY OF 32 32 BIT 06880000=01699000=
|
|
FIELDS. THE 32 BITS ARE IN THE LOW ORDER PART OF EACH 06885000=01700000=
|
|
WORD. THE BIT IS ON IF AND ONLY IF THE CORRESPONDING 06890000=01701000=
|
|
PRT CELL HAS A PERMANENT ASSIGNMENT; 06895000=01702000=
|
|
INTEGER 06900000=01703000=
|
|
PRTI, 06905000=01703000=
|
|
PRTIMAX; 06910000=01703000=
|
|
COMMENT PRTIMAX GIVES NEXT PRT CELL AVAILABLE FOR PERMANENT ASSIGN-06915000=01704000=
|
|
MENT. PRTI GIVES NEXT PRT CELL POSSIBLY AVAILABLE FOR 06920000=01705000=
|
|
TEMPORARY ASSIGNMENT; 06925000=01706000=
|
|
DEFINE 06930000=01707000=
|
|
ALPHASIZE = [35:6] #; 06935000=01707000=
|
|
COMMENT ALPHASIZE IS THE DEFINE FOR THE BIT06940000=01707000=
|
|
POSITION IN THE SECOND WORD OF INFO WHICH 06945000=01708000=
|
|
CONTAINS THE LENGTH OF ALPHA; 06950000=01709000=
|
|
DEFINE 06955000=01710000=
|
|
EDOCINDEX = L.[11:3], L.[8:7] #; 06960000=01710000=
|
|
COMMENT EDOCINDEX IS THE WORD 06965000=01710000=
|
|
PORTION OF L SPLIT INTO A ROW AND06970000=01711000=
|
|
COLUMN INDEX FOR EDOC; 06975000=01712000=
|
|
DEFINE 06980000=01713000=
|
|
CPLUS1 = 769 #; 06985000=01713000=
|
|
COMMENT SEE COMMENT AT CPLUS2 DEFINE; 06990000=01713000=
|
|
DEFINE 06995000=01714000=
|
|
CPLUS2 = 770 #; 07000000=01714000=
|
|
COMMENT CPLUS1 AND CPLUS2 ARE EXPLICIT CONSTANTS 07005000=01714000=
|
|
USED IN THE GENERATION OF C-RELATIVE CODE; 07010000=01715000=
|
|
PROCEDURE FLAG(ERRNUM); 07015000=01716000=
|
|
VALUE 07020000=01716000=
|
|
ERRNUM; 07025000=01716000=
|
|
INTEGER 07030000=01716000=
|
|
ERRNUM; 07035000=01716000=
|
|
FORWARD; 07040000=01716000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%07045000=01716000=
|
|
ALPHA PROCEDURE B2D(B); 07050000=01717000=
|
|
VALUE 07055000=01717000=
|
|
B; 07060000=01717000=
|
|
REAL 07065000=01717000=
|
|
B; 07070000=01717000=
|
|
FORWARD; 07075000=01717000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%07080000=01717000=
|
|
REAL PROCEDURE TAKE(W); 07085000=01717700=
|
|
VALUE 07090000=01717700=
|
|
W; 07095000=01717700=
|
|
INTEGER 07100000=01717700=
|
|
W; 07105000=01717700=
|
|
FORWARD; 07110000=01717700=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%07115000=01717700=
|
|
BOOLEAN 07120000=01717800=
|
|
MACROID; 07125000=01717800=
|
|
REAL PROCEDURE FIXDEFINEINFO(T); 07130000=01717900=
|
|
VALUE 07135000=01717900=
|
|
T; 07140000=01717900=
|
|
REAL 07145000=01717900=
|
|
T; 07150000=01717900=
|
|
FORWARD; 07155000=01717900=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%07160000=01717900=
|
|
PROCEDURE ERR(ERRNUM); 07165000=01718000=
|
|
VALUE 07170000=01718000=
|
|
ERRNUM; 07175000=01718000=
|
|
INTEGER 07180000=01718000=
|
|
ERRNUM; 07185000=01718000=
|
|
FORWARD; 07190000=01718000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%07195000=01718000=
|
|
INTEGER PROCEDURE GIT(L); 07200000=01719000=
|
|
VALUE 07205000=01719000=
|
|
L; 07210000=01719000=
|
|
REAL 07215000=01719000=
|
|
L; 07220000=01719000=
|
|
FORWARD; 07225000=01719000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%07230000=01719000=
|
|
ARRAY 07235000=01720000=
|
|
CALLA[0:31, 0:255]; 07240000=01720000=
|
|
DEFINE 07245000=01721000=
|
|
CALL[CALL1] = CALLA[(GT3:= CALL1).LINKR, GT3.LINKC] #; 07250000=01721000=
|
|
REAL 07255000=01722000=
|
|
CALLX, 07260000=01722000=
|
|
CALLINFO, 07265000=01722000=
|
|
NESTCTR, 07270000=01722000=
|
|
NESTCUR; 07275000=01722000=
|
|
BOOLEAN 07280000=01723000=
|
|
NESTOG; 07285000=01723000=
|
|
ARRAY 07290000=01724000=
|
|
NESTPRT[PRTBASE:PRTOP]; 07295000=01724000=
|
|
ARRAY 07300000=01725000=
|
|
SORTPRT[0:PRTOP-PRTBASE]; 07305000=01725000=
|
|
07310000=01737300=
|
|
COMMENT "BLANKET" BLANKS OUT N+1 WORDS IN "THERE"; 07315000=01737300=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%07316000
|
|
DEFINE BLANKET(N, THERE) = 07320000=01737350=
|
|
BEGIN 07325000
|
|
REPLACE POINTER(THERE,0) BY 6" " FOR (N)+1 WORDS; 07330000
|
|
END BLANKET #; 07360000=01737500=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%07362000
|
|
PROCEDURE CHANGESEQ(VAL, BUFF, OLDSEQ); 07365000=01741200=
|
|
VALUE 07366000=01741200=
|
|
VAL, OLDSEQ; 07368000=01741200=
|
|
ARRAY 07370000
|
|
BUFF[0]; 07372000
|
|
REAL 07374000
|
|
VAL, OLDSEQ; 07376000
|
|
BEGIN 07378000=01741300=
|
|
STREAMLOCALS; 07380000
|
|
STREAMSETDI(BUFF, OLDSEQ); 07382000=01741400=
|
|
STREAMSETLOCSI(VAL); 07384000=01741400=
|
|
STREAMTRANSFERDEC(8); 07386000=01741500=
|
|
END CHANGESEQ; 07400000=01741300=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%07402000
|
|
DEFINE SEQUENCEERROR(L) = 07405000=01742100=
|
|
BEGIN 07410000=01742110=
|
|
REPLACE POINTER(L,8) BY 07415000=01742110=
|
|
6"SEQUENCE", 6" ERROR "; 07420000=01742110=
|
|
END SEQUENCEERROR #; 07425000=01742110=
|
|
FORMAT 07670000=01802000=
|
|
BUG(X24, 4(A4, X2)); 07675000=01802000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%07676000
|
|
PROCEDURE DATIME; 07680000=01820000=
|
|
BEGIN 07685000=01821000=
|
|
INTEGER 07690000=01822000=
|
|
H, 07695000=01822000=
|
|
MN, 07700000=01822000=
|
|
Q; 07705000=01822000=
|
|
REAL 07710000=01822000=
|
|
N1, 07715000=01822000=
|
|
N2; 07720000=01822000=
|
|
POINTER 07725000
|
|
P; 07730000
|
|
H:= TIME1 DIV 216000; 07780000=01828000=
|
|
MN:= (TIME1 DIV 3600) MOD 60; 07785000=01828000=
|
|
REPLACE P:POINTER(EBCDICBUFF,8) BY DISK.TITLE; 07790000=01828500=
|
|
N2:= MIN(OFFSET(P)-1, 118); 07795000=01828500=
|
|
WRITE(LINE, 07800000=01835500=
|
|
<X18, 6"BURROUGHS B-5700 ESPOLXEM COMPILER MARK ", 07802000
|
|
"XVI.0.00" 07805000=01835500=
|
|
," ",A6,"DAY, ",I4,"-",A2,"-",A2,", ",I2,":",A2,X1,A3, 07806000=01832000=
|
|
////X*,A*,/X*,*("=")//>, 07808000
|
|
CASE (N1:= TIME(7)).[5:6] OF (" SUN", " MON", 07810000=01834000=
|
|
" TUES", "WEDNES", " THURS", " FRI", " SATUR"), 07812000
|
|
N1.[47:12], (N1:= TIME(15)).[47:16], N1.[31:16], 07814000
|
|
12*REAL(Q:=H MOD 12=0)+Q, 07816000
|
|
"00" & (MN MOD 10)[3:4] & (MN DIV 10)[11:4], 07818000=01834000=
|
|
IF H >= 12 THEN "PM." ELSE "AM.", 07820000=01835000=
|
|
(120-N2) DIV 2, N2, POINTER(EBCDICBUFF,8), 07825000=01835550=
|
|
(120-N2) DIV 2, N2); 07826000
|
|
NOHEADING:= FALSE; 07830000=01836000=
|
|
END OF DATIME; 07835000=01837000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%07840000=01837000=
|
|
07845000=02000000=
|
|
COMMENT THIS SECTION CONTAINS ALL CODE PERTAINENT TO READING CARDS 07850000=02000000=
|
|
AND SCANNING THEM; 07855000=02001000=
|
|
07860000=02001836=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%07862000
|
|
COMMENT OCTIZE REFORMATS ACCUM FOR OCTAL CONSTANTS; 07865000=02001836=
|
|
BOOLEAN PROCEDURE OCTIZE(S, SX, D, DX, SKP, CNT); 07870000=02001838=
|
|
VALUE 07872000=02001838=
|
|
SX, DX, SKP, CNT; 07874000=02001838=
|
|
ARRAY 07876000
|
|
S, D[0]; 07878000
|
|
REAL 07880000
|
|
SX, DX, SKP, CNT; 07882000
|
|
BEGIN 07884000=02001840=
|
|
STREAMLOCALS; 07886000
|
|
TALLY:= 0; 07888000
|
|
STREAMSETSI(S, SX); 07890000=02001842=
|
|
STREAMSKIPSI(+3); 07892000=02001842=
|
|
STREAMSETDI(D, DX); 07894000=02001842=
|
|
THRU SKP DO 07896000=02001842=
|
|
STREAMSETDB(3, 0); % RIGHT JUSTIFY. 07898000
|
|
07900000
|
|
THRU CNT DO 07902000=02001846=
|
|
BEGIN 07904000
|
|
IF STREAMSCGEQ(6"8") THEN 07906000
|
|
TALLY:= 1 07908000
|
|
ELSE 07910000
|
|
IF STREAMSCLSS(6"0") THEN 07912000
|
|
TALLY:= 1; 07914000
|
|
07916000
|
|
STREAMSKIPSB(3); 07918000=02001846=
|
|
THRU 3 DO 07920000
|
|
BEGIN 07922000
|
|
IF STREAMTESTSB THEN 07924000
|
|
STREAMSETDB(1, 1) 07926000
|
|
ELSE 07928000
|
|
STREAMSETDB(1, 0); 07930000
|
|
07932000
|
|
STREAMSKIPSB(1); 07934000
|
|
END; 07936000
|
|
END THRU; 07938000
|
|
07940000=02001850=
|
|
OCTIZE:= BOOLEAN(TALLY); % "1" = NON OCTAL CHARACTER. 07942000=02001852=
|
|
END OCTIZE; 07970000=02001854=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%07976000
|
|
COMMENT HEXIZE REFORMATS ACCUM FOR HEXADECIMAL CONSTANTS; 07980000=02001856=
|
|
BOOLEAN PROCEDURE HEXIZE(S, SX, D, DX, SKP, CNT); 07985000=02001858=
|
|
VALUE 07990000=02001858=
|
|
SX, DX, SKP, CNT; 07992000=02001858=
|
|
ARRAY 07994000=02001858=
|
|
S, D[0]; 07996000
|
|
REAL 07998000
|
|
SX, DX, SKP, CNT; 08000000
|
|
BEGIN 08002000=02001860=
|
|
STREAMLOCALS; 08004000
|
|
REAL 08006000=02001860=
|
|
T1, 08008000
|
|
T2, 08010000
|
|
TEMP2, 08012000
|
|
TEMP1; 08014000
|
|
LABEL 08016000=02001860=
|
|
AGIN; 08018000=02001860=
|
|
COMMENT LOCAL VARIABLES ARE LOCATED IN REVERSE ORDER FROM THE 08035000=02001862=
|
|
WAY THEY ARE DECLARED IN STREAM PROCEDURES; 08040000=02001864=
|
|
TALLY:= 0; 08042000
|
|
STREAMSETDI(STREAMTEMPD, 0); 08044000=02001866=
|
|
THRU CNT DO 08046000=02001866=
|
|
STREAMSMEARLIT(1, 6"1"); % IN CASE A CHAR=A,B,C,D,OR F. 08048000
|
|
08050000
|
|
STREAMSETSI(S, SX); 08052000=02001868=
|
|
STREAMSKIPSI(+3); 08054000=02001868=
|
|
STREAMSETDI(STREAMTEMPD, 0); 08056000=02001868=
|
|
THRU CNT DO 08058000=02001870=
|
|
BEGIN 08060000
|
|
IF STREAMSCLSS(6"0") THEN 08062000
|
|
IF STREAMSCGEQ(6"A") THEN 08064000
|
|
IF STREAMSCLEQ(6"F") THEN 08066000
|
|
BEGIN % WORK HARD. 08068000=02001870=
|
|
T1:= STREAMGETSI; 08070000=02001874=
|
|
T2:= STREAMGETDI; 08072000
|
|
STREAMSETDI(S, T1); 08074000
|
|
STREAMSETSI(STREAMTEMPD, T2); % FLIP, MAN. 08076000
|
|
STREAMSETDB(3, 0); 08078000=02001876=
|
|
STREAMSETSI(S, T1); 08080000
|
|
STREAMSETDI(STREAMTEMPD, T2); % FLIP BACK. 08082000
|
|
STREAMSMEARLIT(1, STREAMGETSC+STREAMGETDC); % DS:= 1 ADD ?? 08084000=02001882=
|
|
STREAMSKIPDI(-1); 08086000
|
|
STREAMSKIPDB(2); 08088000
|
|
STREAMSETDB(1, 1); 08090000
|
|
STREAMSKIPDB(3); 08092000
|
|
GO AGIN; 08094000
|
|
END; 08096000=02001882=
|
|
08098000
|
|
IF STREAMSCLSS(6"0") THEN 08100000=02001884=
|
|
TALLY:= 1; 08102000=02001884=
|
|
08104000
|
|
STREAMTRANSFERCHR(1); % < 0 = NON-HEX CHARACTER.08106000=02001884=
|
|
AGIN: 08108000=02001888=
|
|
END THRU; 08110000=02001888=
|
|
08112000
|
|
STREAMSETSI(STREAMTEMPD, 0); 08114000=02001890=
|
|
STREAMSETDI(D, DX); 08116000=02001890=
|
|
THRU SKP DO 08118000=02001890=
|
|
STREAMSETDB(4, 0); % RIGHT ADJUST CONSTANT. 08120000
|
|
08122000
|
|
THRU CNT DO 08124000=02001894=
|
|
BEGIN 08126000
|
|
STREAMSKIPSB(2); 08128000
|
|
THRU 4 DO 08130000
|
|
BEGIN 08132000
|
|
IF STREAMTESTSB THEN 08134000
|
|
STREAMSETDB(1, 1) 08136000
|
|
ELSE 08138000
|
|
STREAMSETDB(1, 0); 08140000
|
|
08142000
|
|
STREAMSKIPDB(1); 08144000
|
|
END; 08146000
|
|
END; 08148000
|
|
% FINAL CONVERT. 08150000=02001894=
|
|
HEXIZE:= BOOLEAN(TALLY); % "1" IF PROGRAMMER GOOFED. 08152000=02001896=
|
|
END HEXIZE; 08190000=02001898=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%08196000
|
|
COMMENT PUTSEQNO PUTS THE SEQUENCE NUMBER OF THE CARD-IMAGE 08200000=02002000=
|
|
CURRENTLY BEING SCANNED INTO THE INFO TABLE IN CASE 08205000=02003000=
|
|
IT IS NEEDED FOR FUTURE REFERENCE; 08210000=02004000=
|
|
PROCEDURE PUTSEQNO(INFO, IX, BUFF, LCR); 08215000=02005000=
|
|
VALUE 08216000=02005000=
|
|
IX, LCR; 08218000=02005000=
|
|
ARRAY 08220000
|
|
INFO, BUFF[0]; 08222000
|
|
REAL 08224000
|
|
IX, LCR; 08226000
|
|
BEGIN 08228000=02006000=
|
|
STREAMLOCALS; 08230000
|
|
STREAMSETDI(INFO, IX); 08232000=02006000=
|
|
STREAMSETSI(BUFF, LCR); 08234000=02006000=
|
|
STREAMTRANSFERWDS(1); 08236000=02006000=
|
|
END PUTSEQNO; 08250000=02006000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%08256000
|
|
COMMENT TURNONSTOPLIGHT TURNS THE LIGHT "RED" ON THE "CORNER". 08260000=02007000=
|
|
I.E., THE PURPOSE OF THIS ROUTINE IS TO INSERT A PER- 08265000=02008000=
|
|
CENT SIGN IN COLUMN 73 AS AN END OF CARD SENTINEL FOR 08270000=02009000=
|
|
THE SCANNER; 08275000=02010000=
|
|
PROCEDURE TURNONSTOPLIGHT(RED, BUFF, CORNER); 08280000=02011000=
|
|
VALUE 08282000=02011000=
|
|
RED, CORNER; 08284000=02011000=
|
|
ARRAY 08286000
|
|
BUFF[0]; 08288000
|
|
REAL 08290000
|
|
RED, CORNER; 08292000
|
|
BEGIN 08294000=02012000=
|
|
STREAMLOCALS; 08296000
|
|
STREAMSETDI(BUFF, CORNER); 08298000=02012000=
|
|
STREAMSETLOCSI(RED); 08300000=02012000=
|
|
STREAMSKIPSI(+7); 08302000=02012000=
|
|
STREAMTRANSFERCHR(1); 08304000=02012000=
|
|
END; 08325000=02012000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%08432000
|
|
REAL PROCEDURE CONV(ACCUM, AX, SKP, N); 08435000=02041000=
|
|
VALUE 08436000=02001831=
|
|
AX, SKP, N; 08438000=02001831=
|
|
ARRAY 08440000
|
|
ACCUM[0]; 08442000
|
|
REAL 08444000
|
|
AX, SKP, N; 08446000
|
|
BEGIN 08448000=02001832=
|
|
STREAMLOCALS; 08450000
|
|
STREAMSETSI(ACCUM, AX); 08452000=02001833=
|
|
STREAMSKIPSI(+SKP); 08454000=02001833=
|
|
STREAMSKIPSI(+3); 08456000=02001833=
|
|
STREAMSETDI(STREAMTEMPD, 0); 08458000=02001833=
|
|
STREAMTRANSFEROCT(N); 08460000=02001834=
|
|
CONV:= STREAMTEMPD[0]; 08462000
|
|
END; 08490000=02044000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%08492000
|
|
PROCEDURE MOVECHARACTERS(N, SORCE, SX, SK, DEST, DX, DK); 08494000=02045000=
|
|
VALUE 08496000=02046000=
|
|
N, SX, SK, DX, DK; 08498000=02046000=
|
|
REAL 08500000
|
|
N, SX, SK, DX, DK; 08502000
|
|
ARRAY 08504000
|
|
SORCE, DEST[0]; 08506000
|
|
BEGIN 08508000=02047000=
|
|
STREAMLOCALS; 08510000
|
|
STREAMSETDI(DEST, DX); 08512000=02048000=
|
|
STREAMSETSI(SORCE, SX); 08514000=02049000=
|
|
STREAMSKIPSI(+SK); 08516000=02049000=
|
|
STREAMSKIPDI(+DK); 08518000=02049000=
|
|
STREAMTRANSFERCHR(N); 08520000=02049000=
|
|
END; 08550000=02051000=
|
|
08555000=02052000=
|
|
COMMENT MOVECHARACTERS MOVES N CHARACTERS FROM THE SSKIP-TH CHAR IN 08560000=02052000=
|
|
"SORCE" TO THE DSKIP-TH CHAR IN "DEST". ; 08565000=02053000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%08566000
|
|
PROCEDURE MOVE(W)"WORDS FROM"(A, AX)"TO"(B, BX); 08570000=02054000=
|
|
VALUE 08575000=02054000=
|
|
W, AX, BX; 08580000=02054000=
|
|
ARRAY 08585000=02055000=
|
|
A, B[0]; 08586000
|
|
REAL 08588000
|
|
W, AX, BX; 08590000
|
|
BEGIN 08592000=02055000=
|
|
REPLACE POINTER(B[BX],0) BY POINTER(A[AX],0) FOR (W) WORDS; 08594000=02055000=
|
|
END; 08605000=02055000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%08672000
|
|
COMMENT EQUAL COMPARES COUNT CHARACTERS LOCATED AT A AND B FOR 08675000=02061000=
|
|
EQUALITY. THIS ROUTINE IS USED IN THE LOOK-UP OF ALPHA 08680000=02061500=
|
|
QUANTITIES IN THE DIRECTORY; 08685000=02062000=
|
|
BOOLEAN PROCEDURE EQUAL(COUNT, A, AX, B, BX); 08690000=02062500=
|
|
VALUE 08692000=02062500=
|
|
COUNT, AX, BX; 08694000=02062500=
|
|
REAL 08696000
|
|
COUNT, AX, BX; 08698000
|
|
ARRAY 08700000
|
|
A, B[0]; 08702000
|
|
BEGIN 08704000=02063000=
|
|
STREAMLOCALS; 08706000
|
|
STREAMSETSI(A, AX); 08708000=02063500=
|
|
STREAMSETDI(B, BX); 08710000=02063500=
|
|
EQUAL:= STREAMCOMPAREEQL(COUNT); 08712000=02064000=
|
|
END EQUAL; 08740000=02064500=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%08742000
|
|
PROCEDURE READACARD; 08745000=02065000=
|
|
FORWARD; 08750000=02065000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%08755000=02065000=
|
|
PROCEDURE DOLLARCARD; 08760000=02065500=
|
|
FORWARD; 08765000=02065500=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%08770000=02065500=
|
|
BOOLEAN PROCEDURE BOOLEXP; 08775000=02065600=
|
|
FORWARD; 08780000=02065600=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%08785000=02065600=
|
|
PROCEDURE SCANNER; 08790000=02066000=
|
|
BEGIN 08795000=02066500=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%08800000=02067000=
|
|
COMMENT "SCNN" IS THE STREAM PROCEDURE WHICH DOES THE ACTUAL SCANNING. 08805000=02067000=
|
|
IT IS DRIVEN BY A SMALL WORD MODE PROCEDURE CALLED "SCANNER", 08810000=02067500=
|
|
WHICH CHECKS FOR A QUANTITY BEING BROKEN ACROSS A CARD. "SCNN" 08815000=02068000=
|
|
IS CONTROLLED BY A VARIABLE CALLED "RESULT". "SCNN" ALSO 08820000=02068500=
|
|
INFORMS THE WORLD OF ITS ACTION BY MEANS OF THE SAME VARIABLE, 08825000=02069000=
|
|
HENCE THE VARIABLE "RESULT" IS PASSED BY BOTH NAME AND VALUE. 08830000=02069500=
|
|
THE MEANING OF "RESULT" AS INPUT IS: 08835000=02070000=
|
|
VALUE MEANING 08840000=02070500=
|
|
===== ======================================== 08845000=02071000=
|
|
0 INITIAL CODE - DEBLANK AND START TO FETCH THE 08850000=02071500=
|
|
NEXT QUANTITY. 08855000=02072000=
|
|
1 CONTINUE BUILDING AN IDENTIFIER (INTERRUPTED BY 08860000=02072500=
|
|
END-OF-CARD BREAK). 08865000=02073000=
|
|
2 LAST QUANTITY BUILT WAS SPECIAL CHARACTER. HENCE, 08870000=02073500=
|
|
EXIT (INTERRUPTION BY END-OF-CARD BREAK IS NOT 08875000=02074000=
|
|
IMPORTANT). 08880000=02074500=
|
|
3 CONTINUE BUILDING A NUMBER (INTERRUPTED BY END-OF- 08885000=02075000=
|
|
CARD BREAK). 08890000=02075500=
|
|
4 LAST THING WAS AN ERROR (COUNT EXCEEDED 63). HENCE,08895000=02076000=
|
|
EXIT (INTERRUPTION BY END-OF-CARD BREAK NOT 08900000=02076500=
|
|
IMPORTANT). 08905000=02077000=
|
|
5 GET NEXT CHARACTER AND EXIT. 08910000=02077500=
|
|
6 SCAN A COMMENT. 08915000=02078000=
|
|
7 DEBLANK ONLY. 08920000=02078500=
|
|
THE MEANING OF "RESULT" AS OUTPUT IS: 08925000=02079000=
|
|
VALUE MEANING 08930000=02079500=
|
|
===== ======================================== 08935000=02080000=
|
|
1 AN IDENTIFIER WAS BUILT. 08940000=02080500=
|
|
2 A SPECIAL CHARACTER WAS OBTAINED. 08945000=02081000=
|
|
3 A NUMBER (INTEGER) WAS BUILT. 08950000=02081500=
|
|
"SCNN" PUTS ALL STUFF SCANNED (EXCEPT FOR COMMENTS AND 08955000=02082000=
|
|
DISCARDED BLANKS) INTO "ACCUM" (CALLED "ACCUMULATOR" 08960000=02082500=
|
|
FOR THE REST OF THIS DISCUSSION). 08965000=02083000=
|
|
"COUNT" IS THE VARIABLE THAT GIVES THE NUMBER OF CHARACTERS 08970000=02083500=
|
|
"SCNN" HAS PUT INTO THE "ACCUMULATOR". SINCE "SCNN" NEEDS 08975000=02084000=
|
|
THE VALUE SO THAT IT CAN PUT MORE CHARACTERS INTO THE "ACCUM- 08980000=02084500=
|
|
ULATOR" AND NEEDS TO UPDATE "COUNT" FOR THE OUTSIDE WORLD. 08985000=02085000=
|
|
"COUNT" IS PASSED BY BOTH NAME AND VALUE. IT IS ALSO 08990000=02085500=
|
|
CONVENIENT TO HAVE (63-COUNT). THIS IS CALLED "COMCOUNT". 08995000=02086000=
|
|
"NCR" (NEXT CHARACTER TO BE SCANNED) IS ALSO PASSED BY 09000000=02086500=
|
|
NAME AND VALUE SO THAT IT MAY BE UPDATED. 09005000=02087000=
|
|
"ST1" AND "ST2" ARE TEMPORARY STORAGES WHICH ARE EXPLICITLY 09010000=02087500=
|
|
PASSED TO "SCNN" IN ORDER TO OBTAIN THE MOST USEFULL STACK 09015000=02088000=
|
|
ARRANGEMENT. 09020000=02088500=
|
|
; 09025000=02089000=
|
|
PROCEDURE SCNN(SBUFF, NCR, COUNTV, ACCUM, AX, COMCOUNT, 09030000=02090000=
|
|
RESULT, RESULTV, COUNT, ST2, NCRV, ST1); 09035000=02090000=
|
|
VALUE 09040000=02090500=
|
|
COUNTV, AX, COMCOUNT, RESULTV, ST2, NCRV, ST1; 09045000=02090500=
|
|
ARRAY 09050000
|
|
SBUFF, ACCUM[0]; 09055000
|
|
REAL 09060000
|
|
NCR, COUNTV, AX, COMCOUNT, RESULT, RESULTV, COUNT, ST2, NCRV, ST1;09065000
|
|
BEGIN 09075000=02091000=
|
|
STREAMLOCALS; 09076000
|
|
LABEL 09080000=02091500=
|
|
DEBLANK, 09085000=02091500=
|
|
DEBLANKONLY, 09086000
|
|
NUMBERS, 09090000=02091500=
|
|
IDBLDR, 09095000=02091500=
|
|
GNC, 09100000=02091500=
|
|
K, 09105000=02091500=
|
|
EXIT, 09110000=02091500=
|
|
FINIS, 09115000=02091500=
|
|
L, 09120000=02091500=
|
|
ERROR, 09125000=02092000=
|
|
COMMENTS, 09130000=02092000=
|
|
COMMANTS; 09135000=02092000=
|
|
TALLY:= 0; 09140000
|
|
STREAMSETSI(SBUFF, NCRV); 09145000=02092500=
|
|
COMMENT SETUP "DI" FOR A CHANGE IN "RESULT" AND "SI" FOR A LOOK AT 09160000=02093000=
|
|
THE BUFFER; 09165000=02093500=
|
|
GO TO CASE RESULTV OF ( % SWITCH ON VALUE OF RESULT; 09166000=02094000=
|
|
DEBLANK, % 0 IS INITIAL CODE. 09168000=02094500=
|
|
IDBLDR, % 1 IS ID CODE. 09170000=02095000=
|
|
FINIS, % 2 IS SPECIAL CHARACTER CODE. 09172000=02095500=
|
|
NUMBERS, % 3 IS NUMBER CODE. 09174000=02096000=
|
|
FINIS, % 4 IS ERROR CODE. 09176000=02096500=
|
|
GNC, % 5 IS GET NEXT CHARACTER CODE. 09178000=02097000=
|
|
COMMANTS, % 6 IS COMMENT CODE. 09180000=02097500=
|
|
DEBLANKONLY);% 7 IS DEBLANK ONLY CODE. 09182000=02098000=
|
|
DEBLANKONLY: 09184000
|
|
IF STREAMSCEQL(6" ") THEN 09186000=02098500=
|
|
K: 09220000=02099000=
|
|
BEGIN 09225000=02099000=
|
|
STREAMSKIPSI(+1); 09230000=02101000=
|
|
IF STREAMSCEQL(6" ") THEN 09235000=02101000=
|
|
GO K 09240000=02099000=
|
|
END; 09245000=02099000=
|
|
GO FINIS; 09250000=02099500=
|
|
DEBLANK: 09255000=02100500=
|
|
IF STREAMSCEQL(6" ") THEN 09260000=02100500=
|
|
L: 09265000=02101000=
|
|
BEGIN 09270000=02101000=
|
|
STREAMSKIPSI(+1); 09275000=02101000=
|
|
IF STREAMSCEQL(6" ") THEN 09280000=02101000=
|
|
GO L 09285000=02101000=
|
|
END; 09290000=02101000=
|
|
09295000=02101500=
|
|
COMMENT IF WE ARRIVE HERE WE HAVE A NON-BLANK CHARACTER; 09300000=02101500=
|
|
NCRV:= STREAMGETSI; 09305000=02102000=
|
|
IF STREAMSCGEQ(6"0") THEN 09310000=02102500=
|
|
GO NUMBERS; 09315000=02102500=
|
|
IF STREAMSCALPHA THEN 09320000=02103000=
|
|
GO IDBLDR; 09325000=02103000=
|
|
09330000=02103500=
|
|
COMMENT IF WE ARRIVE HERE WE HAVE A SPECIAL CHARACTER (OR GNC); 09335000=02103500=
|
|
GNC: 09340000=02104500=
|
|
RESULT:= 6"2"; 09345000=02104500=
|
|
TALLY:= 1; 09350000=02104500=
|
|
STREAMSKIPSI(+1); 09355000=02104500=
|
|
GO EXIT; 09360000=02104500=
|
|
COMMANTS: 09365000=02105500=
|
|
IF STREAMSCNEQ(6";") THEN 09370000=02105500=
|
|
BEGIN 09375000=02106000=
|
|
COMMENTS: 09380000=02107000=
|
|
STREAMSKIPSI(+1); 09385000=02107000=
|
|
IF STREAMSCGTR(6"%") THEN 09390000=02107500=
|
|
GO COMMENTS; 09395000=02107500=
|
|
IF STREAMSCLSS(6";") THEN 09400000=02108000=
|
|
GO COMMENTS; 09405000=02108000=
|
|
09410000=02108500=
|
|
COMMENT CHARACTERS BETWEEN % AND SEMICOLON ARE HANDLED BY WORD- 09415000=02108500=
|
|
MODE PART OF COMMENT ROUTINE; 09420000=02109000=
|
|
END; 09425000=02109500=
|
|
GO FINIS; 09430000=02110000=
|
|
IDBLDR: 09435000=02111000=
|
|
TALLY:= 63; 09440000=02111000=
|
|
RESULT:= 6"1"; 09442000=02111000=
|
|
THRU COMCOUNT DO 09444000=02112000=
|
|
BEGIN 09446000
|
|
STREAMINCTALLY(+1); 09448000
|
|
IF STREAMSCALPHA THEN 09450000
|
|
STREAMSKIPSI(+1) 09452000
|
|
ELSE 09454000
|
|
GO EXIT 09456000=02112000=
|
|
END; 09458000
|
|
STREAMINCTALLY(+1); 09460000=02112500=
|
|
IF STREAMSCALPHA THEN 09462000=02113000=
|
|
BEGIN 09470000=02113500=
|
|
ERROR: 09475000=02114500=
|
|
RESULT:= 6"4"; 09485000=02114500=
|
|
GO EXIT; 09490000=02114500=
|
|
END 09495000=02115500=
|
|
ELSE 09500000=02115500=
|
|
GO EXIT; 09505000=02115500=
|
|
COMMENT IF WE ARRIVE AT ERROR WE HAVE MORE THAN 63 CHARACTERS 09515000=02116000=
|
|
IN AN IDENTIFIER OR NUMBER; 09520000=02116500=
|
|
NUMBERS: 09525000=02117500=
|
|
TALLY:= 63; 09530000=02117500=
|
|
RESULT:= 6"3"; 09535000=02117500=
|
|
THRU COMCOUNT DO 09536000=02118500=
|
|
BEGIN 09538000=02118500=
|
|
STREAMINCTALLY(+1); 09540000
|
|
IF STREAMSCLSS(6"0") THEN 09542000
|
|
GO EXIT; 09544000
|
|
STREAMSKIPSI(+1) 09546000
|
|
END; 09548000
|
|
GO ERROR; 09550000=02119000=
|
|
EXIT: 09555000=02120000=
|
|
ST1:= TALLY; % "ST1" CONTAINS NUMBER OF CHARACTERS WE ARE 09560000=02120000=
|
|
% GOING TO MOVE INTO THE "ACCUMULATOR". 09565000=02120500=
|
|
STREAMINCTALLY(COUNTV); 09570000=02121000=
|
|
ST2:= TALLY; 09575000=02121000=
|
|
COUNT:= ST2; 09580000=02121500=
|
|
COMMENT THIS CODE UPDATED "COUNT"; 09600000=02122000=
|
|
STREAMSETDI(ACCUM, AX); 09605000=02122500=
|
|
STREAMSETLOCSI(ST2); 09610000=02122500=
|
|
STREAMSKIPSI(+5); 09615000=02122500=
|
|
STREAMTRANSFERCHR(3); 09620000=02122500=
|
|
COMMENT THIS CODE PLACES "COUNT" IN "ACCUM" AS WELL; 09625000=02123000=
|
|
STREAMSKIPDI(+COUNTV); % POSITION "DI" PAST CHARACTERS ALREADY 09630000=02123500=
|
|
% IN THE "ACCUMULATOR", IF ANY. 09635000=02124000=
|
|
STREAMSETSI(SBUFF, NCRV); 09640000=02124500=
|
|
STREAMTRANSFERCHR(ST1); 09645000=02124500=
|
|
COMMENT MOVE CHARACTERS INTO "ACCUM"; 09655000=02125000=
|
|
FINIS: 09660000=02126000=
|
|
NCR:= STREAMGETSI; 09665000=02126000=
|
|
COMMENT RESET "NCR" TO LOCATION OF NEXT CHARACTER TO BE SCANNED; 09690000=02126500=
|
|
END OF SCNN; 09695000=02127000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%09696000
|
|
LABEL 09700000=02127500=
|
|
L; % 09705000=02127500=
|
|
L: SCNN(SBUFF, NCR, COUNT, ACCUM, 1, 63-COUNT, RESULT, RESULT, COUNT, 09710000=02129000=
|
|
0, NCR, 0); 09715000=02129000=
|
|
IF NCR = LCR THEN 09720000=02129500=
|
|
BEGIN 09725000=02130000=
|
|
READACARD; 09730000=02130500=
|
|
GO TO L; % GO DIRECTLY TO L, DO NOT PASS GO, 09735000=02135500=
|
|
% DO NOT COLLECT $200. 09740000=02136000=
|
|
END; 09745000=02136500=
|
|
END SCANNER; 09750000=02137000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%09755000=02137000=
|
|
DEFINE 09760000=02181000=
|
|
WRITELINE = BEGIN 09762000=02181000=
|
|
UNPACKBICTOEBCDIC(LIN, 0, EBCDICBUFF, 0, 15*8); 09764000
|
|
IF SINGLTOG THEN 09766000
|
|
WRITE(LINE, 20, EBCDICBUFF[*]) 09768000=02181250=
|
|
ELSE 09770000=02181250=
|
|
WRITE(LINE[SPACE 2], 20, EBCDICBUFF[*]) 09772000=02181500=
|
|
END #, 09774000
|
|
PRINTCARD = BEGIN 09785000=02182500=
|
|
EDITLINE(LIN, SBUFF, FCR, L DIV 4, 09790000=02182750=
|
|
L.[1:2], MEDIUM, OMITTING); 09792000
|
|
IF NOHEADING THEN 09805000=02183000=
|
|
DATIME; 09810000=02183000=
|
|
WRITELINE; 09815000=02183000=
|
|
END #; 09820000=02183250=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%09822000
|
|
PROCEDURE EDITLINE(LINE, SBUFF, NCR, R, L, SYMBOL, OMIT); 09825000=02183500=
|
|
VALUE 09830000=02183750=
|
|
NCR, R, L, SYMBOL, OMIT; 09832000=02183750=
|
|
ARRAY 09834000
|
|
LINE[0], SBUFF[0]; 09836000
|
|
REAL 09838000
|
|
NCR, R, L, SYMBOL; 09840000
|
|
BOOLEAN 09842000
|
|
OMIT; 09855000
|
|
BEGIN 09860000=02184000=
|
|
STREAMLOCALS; 09862000
|
|
STREAMSETDI(LINE, 0); 09865000=02184250=
|
|
STREAMSMEARLIT(16, 6" "); 09870000=02184250=
|
|
STREAMSETSI(SBUFF, NCR); 09875000=02184500=
|
|
STREAMTRANSFERWDS(9); 09880000=02184500=
|
|
STREAMSMEARLIT(8, 6" "); 09885000=02184750=
|
|
STREAMTRANSFERWDS(1); % SEQUENCE NUMBER. 09890000=02185000=
|
|
STREAMSMEARLIT(1, 6" "); 09895000=02185250=
|
|
STREAMSETLOCSI(SYMBOL); 09900000=02185250=
|
|
STREAMSKIPSI(+6); 09905000=02185250=
|
|
STREAMTRANSFERCHR(2); 09910000=02185500=
|
|
STREAMSMEARLIT(1, 6" "); 09915000=02185500=
|
|
STREAMSETLOCSI(R); 09920000=02185750=
|
|
STREAMTRANSFERDEC(4); 09925000=02185750=
|
|
STREAMSMEARLIT(1, 6":"); 09930000=02185750=
|
|
STREAMSETLOCSI(L); 09935000=02186000=
|
|
STREAMTRANSFERDEC(1); 09940000=02186000=
|
|
STREAMSMEARLIT(1, 6" "); 09945000=02186250=
|
|
THRU REAL(OMIT) DO 09950000=02186750=
|
|
BEGIN 09951000
|
|
STREAMSKIPDI(-12); 09952000
|
|
STREAMTRANSFERLIT(8, 6" OMIT"); 09953000
|
|
END; 09954000
|
|
END EDITLINE; 09955000=02187000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%09962000
|
|
COMMENT COMPARE COMPARES SEQUENCE NUMBERS OF TAPE AND CARD. IF 09965000=02187250=
|
|
TAPE IS SMALLER THEN RESULT = 0 ELSE IF CARD IS SMALLER 09970000=02187500=
|
|
RESULT = 1 ELSE RESULT = 2; 09975000=02187750=
|
|
REAL PROCEDURE COMPARE(TAPE, TX, CARD, CX); 09980000=02188000=
|
|
VALUE 09982000=02188000=
|
|
TX, CX; 09984000=02188000=
|
|
ARRAY 09986000
|
|
TAPE, CARD[0]; 09988000
|
|
REAL 09990000
|
|
TX, CX; 09992000
|
|
BEGIN 10005000=02188250=
|
|
STREAMLOCALS; 10006000
|
|
TALLY:= 0; 10008000
|
|
STREAMSETSI(TAPE, TX); 10010000=02188500=
|
|
STREAMSETDI(CARD, CX); 10015000=02188500=
|
|
IF STREAMCOMPAREGEQ(8) THEN 10020000=02188750=
|
|
BEGIN 10025000=02189000=
|
|
STREAMSKIPSI(-8); 10030000=02189250=
|
|
STREAMSKIPDI(-8); 10035000=02189250=
|
|
TALLY:= 1; 10040000=02189250=
|
|
IF STREAMCOMPAREEQL(8) THEN 10045000=02189500=
|
|
TALLY:= 2 10050000=02189750=
|
|
END; 10055000=02189750=
|
|
COMPARE:= TALLY 10060000=02190250=
|
|
END COMPARE; 10065000=02190250=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%10066000
|
|
PROCEDURE OUTPUTSOURCE; 10070000=02190500=
|
|
BEGIN 10075000=02190750=
|
|
LABEL 10080000=02191000=
|
|
LCARD, 10085000=02191000=
|
|
LTAPE, 10090000=02191000=
|
|
AWAY; 10095000=02191000=
|
|
SWITCH 10100000=02191250=
|
|
SW:= LCARD, 10105000=02191250=
|
|
LCARD, 10110000=02191250=
|
|
LTAPE, 10115000=02191250=
|
|
AWAY, 10120000=02191250=
|
|
LCARD, 10125000=02191250=
|
|
LTAPE; 10130000=02191250=
|
|
IF SEQTOG THEN % RESEQUENCING. 10135000=02191500=
|
|
BEGIN 10140000=02191750=
|
|
IF TOTALNO = -10 OR NEWBASE THEN 10145000=02192000=
|
|
BEGIN 10150000=02192250=
|
|
NEWBASE:= FALSE; 10155000=02192500=
|
|
GTI1:= TOTALNO:= BASENUM 10160000=02192750=
|
|
END 10165000=02193000=
|
|
ELSE 10170000=02193000=
|
|
GTI1:= TOTALNO:= TOTALNO+ADDVALUE; 10175000=02193000=
|
|
CHANGESEQ(GTI1, SBUFF, LCR); 10180000=02193250=
|
|
END; 10185000=02193500=
|
|
IF OMITTING THEN 10205000=02194250=
|
|
IF NOT LISTATOG THEN 10210000=02194250=
|
|
GO AWAY; 10215000=02194250=
|
|
GO SW[LASTUSED]; 10220000=02194500=
|
|
LCARD: 10225000=02195000=
|
|
IF LISTER OR LISTPTOG THEN 10230000=02195000=
|
|
PRINTCARD; 10235000=02195000=
|
|
GO AWAY; 10240000=02195250=
|
|
LTAPE: 10245000=02195750=
|
|
IF LISTER THEN 10250000=02195750=
|
|
PRINTCARD; 10255000=02195750=
|
|
% GO AWAY; 10260000=02196000=
|
|
AWAY: 10265000=02196500=
|
|
END OUTPUTSOURCE; 10270000=02196500=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%10275000=02196500=
|
|
PROCEDURE READACARD; 10280000=02196750=
|
|
COMMENT READACARD READS CARDS FROM EITHER THE CARD READER OR THE 10290000=02197000=
|
|
TAPE MERGING AS REQUESTED AND CREATING A NEW TAPE AND 10295000=02197250=
|
|
LISTING IF REQUESTED. READACARD ALSO INSERTS A PERCENT 10300000=02197500=
|
|
SIGN AS AN END OF CARD SENTINEL IN COLUMN 73 AND SETS 10305000=02197750=
|
|
FCR,NCR,LCR,TLCR, AND CLCR; 10310000=02198000=
|
|
BEGIN 10315000=02198250=
|
|
LABEL 10545000=02210000=
|
|
CARDONLY, 10550000=02210000=
|
|
CARDLAST, 10555000=02210000=
|
|
TAPELAST, 10560000=02210000=
|
|
EXIT, 10565000=02210000=
|
|
FIRSTTIME, 10570000=02210250=
|
|
EOF, 10575000=02210250=
|
|
USETHESWITCH, 10580000=02210500=
|
|
COMPAR, 10585000=02210500=
|
|
XIT; 10595000=02210500=
|
|
SWITCH 10600000=02210750=
|
|
USESWITCH:= CARDONLY, 10605000=02210750=
|
|
CARDLAST, 10610000=02210750=
|
|
TAPELAST, 10615000=02210750=
|
|
FIRSTTIME; 10620000=02210750=
|
|
IF ERRORCOUNT >= ERRMAX THEN 10625000=02211500=
|
|
ERR(611); % ERR LIMIT EXCEEDED - STOP. 10630000=02211500=
|
|
USETHESWITCH: 10635000=02211800=
|
|
DOLLAR2TOG:= FALSE; 10640000=02211800=
|
|
GO TO USESWITCH[LASTUSED]; 10645000=02212000=
|
|
MOVE(1, INFO[LASTUSED.LINKR,*], LASTUSED.LINKC, 10650000=02212500=
|
|
DEFINEARRAY, DEFINEINDEX-2); 10655000=02212500=
|
|
LASTUSED:= LASTUSED+1; 10660000=02212750=
|
|
NCR:= LCR-1; 10665000=02213000=
|
|
GO TO XIT; 10670000=02213250=
|
|
FIRSTTIME: 10675000=02213750=
|
|
READ(CARD, CARDRECSIZE, EBCDICBUFF[*]); 10680000=02213750=
|
|
PACKEBCDICTOBIC(EBCDICBUFF, 0, CBUFF, 0, 10*8); 10682000
|
|
FCR:= NCR:= (LCR:= 9)-9; 10685000=02214000=
|
|
SBUFF:= CBUFF; 10686000
|
|
MEDIUM:= 6"C "; 10690000=02214100=
|
|
IF EXAMIN(SBUFF, FCR) ^= 6"$" AND LISTER THEN 10695000=02214200=
|
|
PRINTCARD; 10700000=02214200=
|
|
PUTSEQNO(INFO[LASTSEQROW,*], LASTSEQUENCE, SBUFF, LCR); 10705000=02214250=
|
|
TURNONSTOPLIGHT(6"%", SBUFF, LCR); 10710000=02214500=
|
|
GO XIT; 10715000=02214750=
|
|
10720000=02215000=
|
|
COMMENT WE HAVE JUST INITIALIZED CARD INPUT; 10725000=02215000=
|
|
CARDONLY: 10730000=02215500=
|
|
READ(CARD, CARDRECSIZE, EBCDICBUFF[*]); 10735000=02215500=
|
|
PACKEBCDICTOBIC(EBCDICBUFF, 0, CBUFF, 0, 10*8); 10736000
|
|
LCR:= 9; 10740000=02215750=
|
|
SBUFF:= CBUFF; 10742000
|
|
GO EXIT; 10745000=02215750=
|
|
CARDLAST: 10750000=02216250=
|
|
READ(CARD, CARDRECSIZE, EBCDICBUFF[*])[EOF]; 10755000=02216250=
|
|
PACKEBCDICTOBIC(EBCDICBUFF, 0, CBUFF, 0, 10*8); 10756000
|
|
CLCR:= 9; 10760000=02216500=
|
|
SBUFF:= CBUFF; 10762000
|
|
GO COMPAR; 10765000=02216750=
|
|
EOF: 10770000=02217250=
|
|
DEFINEARRAY[25]:= 6"ND;END."&6"E"[46:4:5]; 10775000=02217250=
|
|
DEFINEARRAY[34]:= 6"9999"&6"9999"[46:22:23]; 10780000=02217500=
|
|
CLCR:= 34; 10785000=02217750=
|
|
SBUFF:= DEFINEARRAY; 10786000
|
|
PUTSEQNO(DEFINEARRAY, 33, SBUFF, CLCR-8); 10790000=02218000=
|
|
TURNONSTOPLIGHT(6"%", DEFINEARRAY, CLCR-8); 10795000=02218250=
|
|
% 10800000=02218400=
|
|
GO COMPAR; 10805000=02218500=
|
|
COMMENT THIS RELEASES THE PREVIOUS CARD FROM THE CARD READER AND 10815000=02218750=
|
|
SETS UP CLCR; 10820000=02219000=
|
|
TAPELAST: 10825000=02219500=
|
|
MYSELF.STATUS:= VALUE(TERMINATED); 10830000=02219500=
|
|
GO TO COMPAR; 10835000=02219750=
|
|
COMMENT THIS RELEASES THE PREVIOUS CARD FROM TAPE AND SETS UP TLCR; 10840000=02219750=
|
|
COMPAR: 10845000=02224500=
|
|
; 10850000=02224500=
|
|
EXIT: 10855000=02225250=
|
|
NCR:= FCR:= LCR-9; COMMENT SETS UP NCR AND FCR; 10860000=02225250=
|
|
IF EXAMIN(SBUFF, FCR) ^= 6"$" THEN % $-CARDS DON"T COUNT. 10875000=02225750=
|
|
IF COMPARE(INFO[LASTSEQROW,*], LASTSEQUENCE, SBUFF, LCR) = 1 THEN 10880000=02226000=
|
|
BEGIN 10885000=02226250=
|
|
FLAG(610); % SEQUENCE ERROR. 10890000=02226500=
|
|
SEQUENCEERROR(LIN); 10895000=02226750=
|
|
END; 10900000=02227000=
|
|
CARDNUMBER:= CONV(INFO[LASTSEQROW,*], LASTSEQUENCE-1, 5, 8); 10905000=02228000=
|
|
IF EXAMIN(SBUFF, FCR) = 6"$" THEN 10950000=02228250=
|
|
BEGIN 10955000=02228500=
|
|
IF LISTPTOG OR PRINTDOLLARTOG THEN 10960000=02228750=
|
|
PRINTCARD; 10965000=02228750=
|
|
NCR:= NCR+32768; % INC BY ONE CHAR 10970000=02229000=
|
|
DOLLARCARD; 10975000=02229000=
|
|
10980000=02229250=
|
|
COMMENT DONT FORGET THAT NCR IS NOT WORD MODE, BUT CHAR. MODE POINTER; 10985000=02229250=
|
|
GO USETHESWITCH; 10990000=02229500=
|
|
END; 10995000=02229750=
|
|
IF EXAMIN(SBUFF, FCR) = 6" " THEN 11000000=02230000=
|
|
IF DOLLAR2TOG:= EXAMIN(SBUFF, FCR+32768) = 6"$" THEN 11005000=02230100=
|
|
BEGIN 11010000=02230250=
|
|
OUTPUTSOURCE; 11015000=02230500=
|
|
NCR:= NCR+65536; % SCAN PAST " $" (CHARACTER MODE). 11020000=02230750=
|
|
DOLLARCARD; 11025000=02231000=
|
|
END; 11030000=02231250=
|
|
CARDCOUNT:= CARDCOUNT+1; 11115000=02234500=
|
|
IF DOLLAR2TOG THEN 11120000=02234600=
|
|
GO USETHESWITCH; 11125000=02234600=
|
|
PUTSEQNO(INFO[LASTSEQROW,*], LASTSEQUENCE, SBUFF, LCR); 11130000=02234750=
|
|
OUTPUTSOURCE; 11135000=02235000=
|
|
IF OMITTING THEN 11140000=02235250=
|
|
GO USETHESWITCH; 11145000=02235250=
|
|
% 11150000=02235500=
|
|
TURNONSTOPLIGHT(6"%", SBUFF, LCR); 11155000=02235750=
|
|
XIT: 11160000=02238000=
|
|
END READACARD; 11165000=02238000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%11170000=02238000=
|
|
REAL PROCEDURE CONVERT; 11175000=02248000=
|
|
BEGIN 11180000=02249000=
|
|
REAL 11185000=02249000=
|
|
T; 11190000=02249000=
|
|
INTEGER 11195000=02249000=
|
|
N; 11200000=02249000=
|
|
TLO:= 0; 11205000=02250000=
|
|
THI:= T:= CONV(ACCUM, 1, TCOUNT, N:= (COUNT-TCOUNT) MOD 8); 11210000=02251000=
|
|
FOR N:= TCOUNT+N STEP 8 UNTIL COUNT-1 DO 11215000=02252000=
|
|
IF DPTOG THEN 11220000=02253000=
|
|
BEGIN 11225000=02254000=
|
|
THI:= FIRSTWORD( 11230000=02256000=
|
|
DOUBLE(THI, TLO)*100000000.0 + CONV(ACCUM, 1, N, 8), TLO); 11235000=02256000=
|
|
T:= THI; 11240000=02257000=
|
|
END 11245000=02259000=
|
|
ELSE 11250000=02259000=
|
|
T:= T*100000000+CONV(ACCUM, 1, N, 8); 11255000=02259000=
|
|
CONVERT:= T; 11260000=02260000=
|
|
END; 11265000=02261000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%11322000
|
|
PROCEDURE DUMPINFO; 11325000=02264000=
|
|
BEGIN 11330000=02264050=
|
|
ARRAY 11335000=02264100=
|
|
A[0:14]; 11340000=02264100=
|
|
INTEGER 11345000=02264100=
|
|
JEDEN, 11350000=02264100=
|
|
DWA; 11355000=02264100=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%11356000
|
|
PROCEDURE OCTALWORDS(S, SX, D, DX, N); 11360000=02264400=
|
|
VALUE 11362000=02264400=
|
|
SX, DX, N; 11364000=02264400=
|
|
ARRAY 11366000
|
|
S, D[0]; 11368000
|
|
REAL 11370000
|
|
SX, DX, N; 11372000
|
|
BEGIN 11375000=02264450=
|
|
STREAMLOCALS; 11376000
|
|
STREAMSETSI(S, SX); 11377000=02264500=
|
|
STREAMSETDI(D, DX); 11378000=02264500=
|
|
THRU N DO 11379000=02264600=
|
|
BEGIN 11380000
|
|
THRU 2 DO 11381000
|
|
BEGIN 11382000
|
|
THRU 8 DO 11383000
|
|
BEGIN 11384000
|
|
STREAMSETDB(3, 0); 11385000
|
|
THRU 3 DO 11386000
|
|
BEGIN 11387000=02264600=
|
|
IF STREAMTESTSB THEN 11388000
|
|
STREAMSETDB(1, 1) 11389000
|
|
ELSE 11390000
|
|
STREAMSETDB(1, 0); 11391000
|
|
11392000
|
|
STREAMSKIPSB(1); 11393000
|
|
END; 11394000
|
|
END; 11395000
|
|
11396000
|
|
STREAMSMEARLIT(1, 6" "); 11397000
|
|
END; 11398000
|
|
11399000
|
|
STREAMSMEARLIT(2, 6" "); 11400000
|
|
END; 11401000
|
|
END OF OCTALWORDS; 11405000=02264650=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%11406000
|
|
PROCEDURE ALPHAWORDS(S, SX, D, DX, N); 11410000=02264700=
|
|
VALUE 11412000=02264700=
|
|
SX, DX, N; 11414000=02264700=
|
|
ARRAY 11416000
|
|
S, D[0]; 11418000
|
|
REAL 11420000
|
|
SX, DX, N; 11422000
|
|
BEGIN 11425000=02264750=
|
|
STREAMLOCALS; 11426000
|
|
STREAMSETSI(S, SX); 11427000=02264800=
|
|
STREAMSETDI(D, DX); 11428000=02264800=
|
|
THRU N DO 11429000=02264850=
|
|
BEGIN 11430000
|
|
THRU 2 DO 11431000
|
|
BEGIN 11432000
|
|
THRU 4 DO 11433000
|
|
BEGIN 11434000
|
|
STREAMSMEARLIT(1, 6" "); 11435000
|
|
STREAMTRANSFERCHR(1) 11436000
|
|
END; 11437000
|
|
11438000
|
|
STREAMSMEARLIT(1, 6" ") 11439000
|
|
END; 11440000
|
|
11441000
|
|
STREAMSMEARLIT(2, 6" ") 11442000
|
|
END; 11443000=02264850=
|
|
END OF ALPHAWORDS; 11450000=02264900=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%11452000
|
|
IF NOHEADING THEN 11455000=02264950=
|
|
DATIME; 11460000=02264950=
|
|
WRITE(LINE[SPACE 2], < //"ELBAT">); 11465000=02264950=
|
|
FOR JEDEN:= 0 STEP 6 UNTIL 71 DO 11470000=02265000=
|
|
BEGIN 11475000=02265050=
|
|
BLANKET(14, A); 11480000=02265100=
|
|
OCTALWORDS(ELBAT, JEDEN, A, 0, 6); 11485000=02265100=
|
|
UNPACKBICTOEBCDIC(A, 0, EBCDICBUFF, 0, 15*8); 11486000
|
|
WRITE(LINE[SPACE 2], 20, EBCDICBUFF[*]); 11490000=02265150=
|
|
END; 11495000=02265200=
|
|
BLANKET(14, A); 11500000=02265250=
|
|
OCTALWORDS(ELBAT, 72, A, 0, 4); 11505000=02265250=
|
|
UNPACKBICTOEBCDIC(A, 0, EBCDICBUFF, 0, 15*8); 11506000
|
|
WRITE(LINE[SPACE 2], 20, EBCDICBUFF[*]); 11510000=02265300=
|
|
FOR JEDEN:= 0 STEP 1 UNTIL NEXTINFO DIV 256 DO 11515000=02265350=
|
|
BEGIN 11520000=02265400=
|
|
WRITE(LINE[SPACE 2], < //"INFO[", I2, ",*]">, JEDEN); 11525000=02265450=
|
|
FOR DWA:= 0 STEP 6 UNTIL 251 DO 11530000=02265500=
|
|
BEGIN 11535000=02265550=
|
|
BLANKET(14, A); 11540000=02265600=
|
|
ALPHAWORDS(INFO[JEDEN,*], DWA, A, 0, 6); 11545000=02265600=
|
|
UNPACKBICTOEBCDIC(A, 0, EBCDICBUFF, 0, 15*8); 11546000
|
|
WRITE(LINE, 20, EBCDICBUFF[*]); 11550000=02265650=
|
|
BLANKET(14, A); 11555000=02265700=
|
|
OCTALWORDS(INFO[JEDEN,*], DWA, A, 0, 6); 11560000=02265700=
|
|
UNPACKBICTOEBCDIC(A, 0, EBCDICBUFF, 0, 15*8); 11562000
|
|
WRITE(LINE[SPACE 2], 20, EBCDICBUFF[*]); 11565000=02265750=
|
|
END; 11570000=02265800=
|
|
BLANKET(14, A); 11575000=02265850=
|
|
ALPHAWORDS(INFO[JEDEN,*], 252, A, 0, 4); 11580000=02265850=
|
|
UNPACKBICTOEBCDIC(A, 0, EBCDICBUFF, 0, 15*8); 11582000
|
|
WRITE(LINE, 20, EBCDICBUFF[*]); 11585000=02265900=
|
|
BLANKET(14, A); 11590000=02265950=
|
|
OCTALWORDS(INFO[JEDEN, *], 252, A, 0, 4); 11595000=02265950=
|
|
UNPACKBICTOEBCDIC(A, 0, EBCDICBUFF, 0, 15*8); 11596000
|
|
WRITE(LINE[SPACE 2], 20, EBCDICBUFF[*]); 11600000=02266000=
|
|
END; 11605000=02266050=
|
|
END OF DUMPINFO; 11610000=02266100=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%11615000=02266100=
|
|
DEFINE 11620000=02277000=
|
|
SKAN = BEGIN 11625000=02277000=
|
|
COUNT:= RESULT:= ACCUM[1]:= 0; 11630000=02278000=
|
|
SCANNER; 11635000=02279000=
|
|
Q:= ACCUM[1]; 11640000=02280000=
|
|
END #; 11645000=02281000=
|
|
11650000=02282000=
|
|
COMMENT DOLLARCARD HANDLES THE COMPILER CONTROL CARDS. 11655000=02282000=
|
|
ALL COMPILER- AND USER-DEFINED OPTIONS ARE KEPT 11660000=02283000=
|
|
IN THE ARRAY "OPTIONS". 11665000=02284000=
|
|
EACH OPTION HAS A TWO-WORD ENTRY: 11670000=02285000=
|
|
11675000=02286000=
|
|
WORD CONTAINS 11680000=02287000=
|
|
---- -------- 11685000=02288000=
|
|
1 ENTRY FROM ACCUM[1]: 00XZZZZ, WHERE 11690000=02289000=
|
|
X IS THE SIZE OF THE ID AND 11695000=02290000=
|
|
ZZZZZ IS THE FIRST FIVE CHARS OF THE ID. 11700000=02291000=
|
|
2 PUSH-DOWN, 47-BIT STACK CONTAINING THE 11705000=02292000=
|
|
HISTORY OF THE SETTINGS OF THIS OPTION. 11710000=02293000=
|
|
11715000=02294000=
|
|
IN "FINDOPTION", ALL COMPILER-DEFINED OPTIONS ARE USUALLY 11720000=02295000=
|
|
LOCATED BASED UPON A UNIQUE NUMBER ASSIGNED TO EACH. 11725000=02296000=
|
|
FOR ALL USER-DEFINED OPTIONS, A SEQUENTIAL TABLE SEARCH IS 11730000=02297000=
|
|
INITIATED USING "USEROPINX" AS THE INITIAL INDEX INTO THE 11735000=02298000=
|
|
"OPTIONS" ARRAY. IF THE NUMBER OF COMPILER-DEFINED OPTIONS 11740000=02299000=
|
|
IS CHANGED, THEN "USEROPINX" MUST BE ACCORDINGLY CHANGED. 11745000=02300000=
|
|
THE NUMBER OF USER DEFINED OPTIONS ALLOWED CAN BE 11750000=02301000=
|
|
CHANGED BY CHANGING THE DEFINE "OPARSIZE". 11755000=02302000=
|
|
THE VARIABLE "OPTIONWORD" CONTAINS THE CURRENT TRUE OR FALSE 11760000=02303000=
|
|
SETTING OF ALL OF THE COMPILER-DEFINED OPTIONS, ONE BIT PER 11765000=02304000=
|
|
OPTION. 11770000=02305000=
|
|
; 11775000=02306000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%11776000
|
|
BOOLEAN PROCEDURE FINDOPTION(BIT); 11780000=02307000=
|
|
VALUE 11785000=02307000=
|
|
BIT; 11790000=02307000=
|
|
INTEGER 11795000=02307000=
|
|
BIT; 11800000=02307000=
|
|
BEGIN 11805000=02308000=
|
|
LABEL 11810000=02309000=
|
|
FOUND; 11815000=02309000=
|
|
REAL 11820000=02310000=
|
|
ID; 11825000=02310000=
|
|
OPINX:= 2*BIT-4; 11830000=02311000=
|
|
WHILE ID:= OPTIONS[OPINX:= OPINX+2] ^= 0 DO 11835000=02312000=
|
|
IF Q = ID THEN 11840000=02313000=
|
|
GO FOUND; 11845000=02313000=
|
|
OPTIONS[OPINX]:= Q;% NEW USER-DEFINED OPTION. 11850000=02314000=
|
|
FOUND: 11855000=02316000=
|
|
IF OPINX+1 > OPARSIZE THEN 11860000=02316000=
|
|
FLAG(602) 11865000=02316000=
|
|
ELSE % TOO MANY USER OPTIONS 11870000=02316000=
|
|
FINDOPTION:= BOOLEAN(OPTIONS[OPINX+1]); 11875000=02317000=
|
|
END FINDOPTION; 11880000=02318000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%11885000=02318000=
|
|
PROCEDURE DOLLARCARD; 11890000=02319000=
|
|
BEGIN 11895000=02320000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%11896000
|
|
PROCEDURE RESTORESEQNUM(A, LCR, INFO, IX); 11900000=02320200=
|
|
VALUE 11905000=02320200=
|
|
LCR, IX; 11910000=02320200=
|
|
ARRAY 11911000
|
|
A, INFO[0]; 11912000
|
|
REAL 11913000
|
|
LCR, IX; 11914000
|
|
BEGIN 11915000=02320400=
|
|
STREAMLOCALS; 11916000
|
|
STREAMSETDI(A, LCR); 11920000=02320600=
|
|
STREAMSETSI(INFO, IX); 11925000=02320600=
|
|
STREAMTRANSFERWDS(1); 11930000=02320600=
|
|
END; 11935000=02320800=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%11936000
|
|
PROCEDURE SWITCHIT(XBIT); 11940000=02321000=
|
|
VALUE 11945000=02321000=
|
|
XBIT; 11950000=02321000=
|
|
INTEGER 11955000=02321000=
|
|
XBIT; 11960000=02321000=
|
|
BEGIN 11965000=02322000=
|
|
BOOLEAN 11970000=02323000=
|
|
B, 11975000=02323000=
|
|
T; 11980000=02323000=
|
|
INTEGER 11985000=02324000=
|
|
SAVEINX; 11990000=02324000=
|
|
LABEL 11995000=02325000=
|
|
XMODE0, 12000000=02325000=
|
|
XMODE1, 12005000=02325000=
|
|
XMODE2, 12010000=02325000=
|
|
XMODE3, 12015000=02325000=
|
|
XMODE4, 12020000=02325000=
|
|
ALONG; 12025000=02325000=
|
|
SWITCH 12030000=02326000=
|
|
SW:= XMODE0, 12035000=02326000=
|
|
XMODE1, 12040000=02326000=
|
|
XMODE2, 12045000=02326000=
|
|
XMODE3, 12050000=02326000=
|
|
XMODE4; 12055000=02326000=
|
|
SETTING:= FINDOPTION(XBIT); 12060000=02327000=
|
|
SKAN; 12065000=02327000=
|
|
GO SW[XMODE+1]; 12070000=02328000=
|
|
XMODE0: 12075000=02329000=
|
|
% FIRST OPTION ON CARD, BUT NOT SET, RESET, OR POP. 12080000=02329000=
|
|
OPTIONWORD:= BOOLEAN(0); 12085000=02330000=
|
|
FOR SAVEINX:= 1 STEP 2 UNTIL OPARSIZE DO 12090000=02331000=
|
|
OPTIONS[SAVEINX]:= 0; 12095000=02331000=
|
|
XMODE:= LASTUSED:= 1; % CARD INPUT ONLY. 12100000=02332000=
|
|
XMODE1: 12105000=02333000=
|
|
% NOT FIRST OPTION AND NOT BEING SET, RESET, OR POPPED. 12110000=02333000=
|
|
OPTIONS[OPINX+1]:= REAL(TRUE); 12115000=02334000=
|
|
IF XBIT < USEROPINX THEN 12120000=02335000=
|
|
OPTIONWORD:= OPTIONWORD & TRUE[XBIT:1]; 12125000=02335000=
|
|
GO ALONG; 12130000=02336000=
|
|
XMODE2: 12135000=02337000=
|
|
% RESET; 12140000=02337000=
|
|
OPTIONS[OPINX+1]:= REAL(FALSE & SETTING[46:45:46]); 12145000=02338000=
|
|
IF XBIT < USEROPINX THEN 12150000=02339000=
|
|
OPTIONWORD:= OPTIONWORD & FALSE[XBIT:1]; 12155000=02339000=
|
|
GO ALONG; 12160000=02340000=
|
|
XMODE3: 12165000=02341000=
|
|
% SET. 12170000=02341000=
|
|
SAVEINX:= OPINX; % REMEMBER OPTION WE ARE SETTING. 12175000=02342000=
|
|
B:= 12180000=02343000=
|
|
IF Q = 6"1=0000" THEN 12185000=02343000=
|
|
BOOLEXP 12190000=02343000=
|
|
ELSE 12195000=02343000=
|
|
TRUE; 12200000=02343000=
|
|
OPTIONS[SAVEINX+1]:= REAL(B & SETTING[46:46]); 12205000=02352000=
|
|
IF XBIT < USEROPINX THEN 12210000=02353000=
|
|
OPTIONWORD:= OPTIONWORD & B[XBIT:1]; 12215000=02353000=
|
|
GO ALONG; 12220000=02354000=
|
|
XMODE4: 12225000=02355000=
|
|
% POP. 12230000=02355000=
|
|
OPTIONS[OPINX+1]:= REAL(B:= SETTING.[46:46]); 12235000=02356000=
|
|
IF XBIT < USEROPINX THEN 12240000=02357000=
|
|
OPTIONWORD:= OPTIONWORD & B[XBIT:1]; 12245000=02357000=
|
|
ALONG: 12250000=02359000=
|
|
END SWITCHIT; 12255000=02359000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%12260000=02359000=
|
|
LABEL 12265000=02360000=
|
|
EXIT, 12270000=02360000=
|
|
AGAIN, 12275000=02360000=
|
|
SKANAGAIN, 12280000=02360000=
|
|
LENGTH1, 12285000=02360000=
|
|
LENGTH2, 12290000=02360000=
|
|
LENGTH3, 12295000=02360000=
|
|
LENGTH4, 12300000=02361000=
|
|
LENGTH5, 12305000=02361000=
|
|
LENGTH6, 12310000=02361000=
|
|
LENGTH7, 12315000=02361000=
|
|
LENGTH8, 12320000=02361000=
|
|
LENGTH9, 12325000=02362000=
|
|
WHATISIT, 12330000=02363000=
|
|
CARDOPTION, 12335000=02363000=
|
|
MERGEOPTION; 12340000=02363000=
|
|
SWITCH 12345000=02364000=
|
|
OPTIONLENGTH:= LENGTH1, 12350000=02364000=
|
|
WHATISIT, 12355000=02364000=
|
|
LENGTH3, 12360000=02364000=
|
|
LENGTH4, 12365000=02364000=
|
|
LENGTH5, 12370000=02365000=
|
|
LENGTH6, 12375000=02365000=
|
|
LENGTH7, 12380000=02365000=
|
|
WHATISIT, 12385000=02365000=
|
|
LENGTH9, 12390000=02365000=
|
|
WHATISIT; 12395000=02365000=
|
|
INTEGER 12400000=02365100=
|
|
SRESULT, 12405000=02365100=
|
|
SCOUNT; 12410000=02365100=
|
|
DOLLARTOG:= TRUE; 12425000=02366000=
|
|
MOVE(10, ACCUM, 0, DEFINEARRAY, 0); % SAVE INFORMATION FOR 12430000=02366100=
|
|
SCOUNT:= COUNT; 12435000=02366200=
|
|
SRESULT:= RESULT; % "TABLE" TO RESUME SCAN. 12440000=02366200=
|
|
XMODE:= 0; 12445000=02367000=
|
|
PUTSEQNO(INFO[LASTSEQROW,*], LASTSEQUENCE, SBUFF, LCR); 12450000=02368000=
|
|
TURNONSTOPLIGHT(6"%", SBUFF, LCR); 12455000=02369000=
|
|
SKANAGAIN: 12460000=02371000=
|
|
SKAN; 12465000=02371000=
|
|
AGAIN: 12470000=02373000=
|
|
GO OPTIONLENGTH[MIN(COUNT, 10)]; 12475000=02373000=
|
|
LENGTH1: 12480000=02375000=
|
|
IF Q = 6"1%0000" THEN 12485000=02375000=
|
|
GO EXIT; 12490000=02375000=
|
|
IF Q = 6"1$0000" THEN 12495000=02376000=
|
|
BEGIN 12500000=02377000=
|
|
SWITCHIT(PRINTDOLLARBIT); 12505000=02377000=
|
|
GO AGAIN 12510000=02377000=
|
|
END; 12515000=02377000=
|
|
IF Q = 6"1,0000" THEN 12520000=02378000=
|
|
GO SKANAGAIN; 12525000=02378000=
|
|
GO WHATISIT; 12530000=02379000=
|
|
LENGTH2: 12535000=02380000=
|
|
% NO OPTIONS OF THIS LENGTH ARE CURRENTLY IMPLEMENTED. 12540000=02380000=
|
|
LENGTH3: 12545000=02382000=
|
|
IF Q = 6"3SET00" THEN 12550000=02382000=
|
|
BEGIN 12555000=02383000=
|
|
XMODE:= 3; 12560000=02383000=
|
|
GO SKANAGAIN 12565000=02383000=
|
|
END; 12570000=02383000=
|
|
IF Q = 6"3POP00" THEN 12575000=02384000=
|
|
BEGIN 12580000=02385000=
|
|
XMODE:= 4; 12585000=02385000=
|
|
GO SKANAGAIN 12590000=02385000=
|
|
END; 12595000=02385000=
|
|
IF Q = 6"3NEW00" THEN 12600000=02386000=
|
|
BEGIN 12605000=02387000=
|
|
FLAG(601); % NEWTAPE IS DISABLED. 12610000=02388000=
|
|
GO AGAIN; 12625000=02390000=
|
|
END; 12630000=02391000=
|
|
IF Q = 6"3SEQ00" THEN 12635000=02392000=
|
|
BEGIN 12640000=02393000=
|
|
SWITCHIT(SEQBIT); 12645000=02393000=
|
|
GO AGAIN 12650000=02393000=
|
|
END; 12655000=02393000=
|
|
IF Q = 6"3PRT00" THEN 12660000=02394000=
|
|
BEGIN 12665000=02395000=
|
|
SWITCHIT(PRTBIT); 12670000=02395000=
|
|
GO AGAIN 12675000=02395000=
|
|
END; 12680000=02395000=
|
|
IF Q = 6"3MCP00" THEN 12685000=02396000=
|
|
BEGIN 12690000=02397000=
|
|
SWITCHIT(MCPBIT); 12695000=02397000=
|
|
GO AGAIN 12700000=02397000=
|
|
END; 12705000=02397000=
|
|
GO WHATISIT; 12710000=02398000=
|
|
LENGTH4: 12715000=02400000=
|
|
IF Q = 6"4LIST0" THEN 12720000=02400000=
|
|
BEGIN 12725000=02401000=
|
|
SWITCHIT(LISTBIT); 12730000=02402000=
|
|
GO AGAIN; 12735000=02404000=
|
|
END; 12740000=02405000=
|
|
IF Q = 6"4VOID0" THEN 12745000=02406000=
|
|
BEGIN 12750000=02407000=
|
|
FLAG(601); % VOID IS DISABLED. 12755000=02408000=
|
|
GO AGAIN; 12820000=02418000=
|
|
END; 12825000=02419000=
|
|
IF Q = 6"4OMIT0" THEN 12830000=02420000=
|
|
BEGIN 12835000=02421000=
|
|
IF NOT DOLLAR2TOG THEN 12840000=02421000=
|
|
BEGIN 12845000=02421000=
|
|
PRINTCARD; 12850000=02421000=
|
|
FLAG(605); 12855000=02421000=
|
|
END; 12860000=02421000=
|
|
SWITCHIT(OMITBIT); 12865000=02421100=
|
|
GO AGAIN 12870000=02421100=
|
|
END; 12875000=02421100=
|
|
IF Q = 6"4CARD0" THEN 12880000=02422000=
|
|
BEGIN 12885000=02423000=
|
|
FLAG(601); % MERGE MODE IS DISABLED. 12890000=02424000=
|
|
CARDOPTION: 12930000=02430000=
|
|
LASTUSED:= 1; 12935000=02430000=
|
|
GO AGAIN; 12940000=02431000=
|
|
END; 12945000=02432000=
|
|
IF Q = 6"4TAPE0" THEN 12950000=02433000=
|
|
BEGIN 12955000=02434000=
|
|
FLAG(601); % MERGE MODE IS DISABLED. 12960000=02435000=
|
|
IF NOT MERGETOG THEN 12965000=02436000=
|
|
GO CARDOPTION; 12970000=02436000=
|
|
MERGEOPTION: 12975000=02438000=
|
|
LASTUSED:= 2; % NEXT CARD IS READ FROM READER. 12980000=02438000=
|
|
GO AGAIN; 13180000=02460000=
|
|
END; 13185000=02461000=
|
|
IF Q = 6"4PAGE0" THEN 13190000=02462000=
|
|
BEGIN 13195000=02463000=
|
|
IF LISTER THEN 13200000=02464000=
|
|
WRITE(LINE[SKIP 1]); 13205000=02464000=
|
|
GO SKANAGAIN; 13210000=02465000=
|
|
END; 13215000=02466000=
|
|
IF Q = 6"4INFO0" THEN 13220000=02467000=
|
|
BEGIN 13225000=02468000=
|
|
DUMPINFO; 13230000=02468000=
|
|
GO SKANAGAIN 13235000=02468000=
|
|
END; 13240000=02468000=
|
|
IF Q = 6"4SEGS0" THEN 13245000=02469000=
|
|
BEGIN 13250000=02470000=
|
|
SWITCHIT(SEGSBIT); 13255000=02470000=
|
|
GO AGAIN 13260000=02470000=
|
|
END; 13265000=02470000=
|
|
IF Q = 6"4NEST0" THEN 13270000=02471000=
|
|
BEGIN 13275000=02472000=
|
|
SWITCHIT(NESTBIT); 13280000=02472000=
|
|
GO AGAIN 13285000=02472000=
|
|
END; 13290000=02472000=
|
|
IF Q = 6"4DECK0" THEN 13295000=02473000=
|
|
BEGIN 13300000=02474000=
|
|
SWITCHIT(DECKBIT); 13305000=02474000=
|
|
GO AGAIN 13310000=02474000=
|
|
END; 13315000=02474000=
|
|
GO WHATISIT; 13320000=02475000=
|
|
LENGTH5: 13325000=02477000=
|
|
IF Q = 6"5RESET" THEN 13330000=02477000=
|
|
BEGIN 13335000=02478000=
|
|
XMODE:= 2; 13340000=02478000=
|
|
GO SKANAGAIN 13345000=02478000=
|
|
END; 13350000=02478000=
|
|
IF Q = 6"5LISTP" THEN 13355000=02479000=
|
|
BEGIN 13360000=02480000=
|
|
SWITCHIT(LISTPBIT); 13365000=02480000=
|
|
GO AGAIN; 13370000=02480000=
|
|
END; 13375000=02480000=
|
|
IF Q = 6"5VOIDT" THEN 13380000=02481000=
|
|
BEGIN 13385000=02482000=
|
|
FLAG(601); % VOIDT IS DISABLED. 13390000=02483000=
|
|
GO AGAIN; 13430000=02493000=
|
|
END; 13435000=02494000=
|
|
IF Q = 6"5CHECK" THEN 13440000=02495000=
|
|
BEGIN 13445000=02496000=
|
|
SWITCHIT(CHECKBIT); 13450000=02496000=
|
|
GO AGAIN 13455000=02496000=
|
|
END; 13460000=02496000=
|
|
IF Q = 6"5LIMIT" THEN 13465000=02497000=
|
|
BEGIN 13470000=02498000=
|
|
SKAN; 13475000=02499000=
|
|
IF RESULT ^= 3 THEN % SHOULD BE NUMBER. 13480000=02500000=
|
|
BEGIN 13485000=02501000=
|
|
FLAG(600); 13490000=02501000=
|
|
GO AGAIN 13495000=02501000=
|
|
END; 13500000=02501000=
|
|
ERRMAX:= CONV(ACCUM, 1, 0, ACCUM[1].[35:6]); 13505000=02502000=
|
|
GO SKANAGAIN; 13510000=02503000=
|
|
END; 13515000=02504000=
|
|
IF Q = 6"5PUNCH" THEN 13520000=02505000=
|
|
BEGIN 13525000=02506000=
|
|
FLAG(601); % PUNCH IS DISABLED. 13530000=02506000=
|
|
GO AGAIN; 13535000=02506000=
|
|
END; 13540000=02506000=
|
|
IF Q = 6"5PURGE" THEN 13545000=02507000=
|
|
BEGIN 13550000=02508000=
|
|
SWITCHIT(PURGEBIT); 13555000=02508000=
|
|
GO AGAIN; 13560000=02508000=
|
|
END; 13565000=02508000=
|
|
IF Q = 6"5LISTA" THEN 13570000=02509000=
|
|
BEGIN 13575000=02510000=
|
|
SWITCHIT(LISTABIT); 13580000=02511000=
|
|
GO AGAIN; 13585000=02513000=
|
|
END; 13590000=02514000=
|
|
IF Q = 6"5STUFF" THEN 13595000=02515000=
|
|
BEGIN 13600000=02516000=
|
|
SWITCHIT(STUFFBIT); 13605000=02516000=
|
|
GO AGAIN; 13610000=02516000=
|
|
END; 13615000=02516000=
|
|
GO WHATISIT; 13620000=02517000=
|
|
LENGTH6: 13625000=02519000=
|
|
IF Q = 6"6SEQER" THEN 13630000=02519000=
|
|
BEGIN 13635000=02520000=
|
|
SWITCHIT(SEQERRBIT); 13640000=02520000=
|
|
GO AGAIN 13645000=02520000=
|
|
END; 13650000=02520000=
|
|
IF Q = 6"6SINGL" THEN 13655000=02521000=
|
|
BEGIN 13660000=02522000=
|
|
SWITCHIT(SINGLBIT); 13665000=02522000=
|
|
GO AGAIN 13670000=02522000=
|
|
END; 13675000=02522000=
|
|
IF Q = 6"6SEQXE" THEN 13680000=02523000=
|
|
BEGIN 13685000=02524000=
|
|
SEQXEQTOG:= XMODE ^= 2 AND XMODE ^= 4 OR SEQXEQTOG; %NEVER RESET. 13690000=02525000=
|
|
IF BUILDLINE.[2:1] THEN 13695000=02526000=
|
|
BUILDLINE:= TRUE; 13700000=02526000=
|
|
GO SKANAGAIN; 13705000=02527000=
|
|
END; 13710000=02528000=
|
|
IF Q = 6"6DEBUG" THEN 13715000=02529000=
|
|
BEGIN 13720000=02530000=
|
|
SWITCHIT(DEBUGBIT); 13725000=02531000=
|
|
IF DEBUGTOG THEN 13730000=02533000=
|
|
IF WOP[0] = 0 THEN 13735000=02534000=
|
|
BEGIN 13740000=02535000=
|
|
FILL WOP[*] WITH "LITC", 6" ", "OPDC", 6"DESC", 13745000=02536100=
|
|
11,6"NOP ", 12,6"PRT ", 13,6"DEL ", 16,6"ADD ", 18,6"PRL ", 19,6"LNG ",13760000=02539000=
|
|
21,6"GEQ ", 22,6"BBC ", 24,6"INX ", 35,6"LOR ", 37,6"GTR ", 38,6"BFC ",13765000=02540000=
|
|
39,6"RTN ", 40,6"COC ", 48,6"SUB ", 64,6"MUL ", 67,6"LND ", 68,6"STD ",13770000=02541000=
|
|
69,6"NEQ ", 71,6"XIT ", 72,6"MKS ",128,6"DIV ",130,6"COM ",131,6"LQV ",13775000=02542000=
|
|
132,6"SND ",133,6"XCH ",134,6"CHS ",167,6"RTS ",168,6"CDC ",260,6"LOD ",13780000=02543000=
|
|
261,6"DUP ",278,6"LBC ",294,6"LFC ",322,6"ZP1 ",384,6"IDV ",532,6"ISD ",13785000=02544000=
|
|
533,6"LEQ ",534,6"BBW ",548,6"ISN ",549,6"LSS ",550,6"BFW ",581,6"EQL ",13790000=02545000=
|
|
582,6"SSP ",790,6"LBU ",806,6"LFU ",896,6"RDV ", 13795000=02546000=
|
|
1003,6"SCI ",1004,6"SAN ",1019,6"SCS ", 13800000=02547000=
|
|
1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023, 13805000=02548000=
|
|
1023,1023,1023,1023,1023,1023,1023,1023,1023,1023,1023, 1023; 13810000=02549000=
|
|
FILL COP[*] WITH % CHARACTER MODE MNEMONICS 13815000=02550000=
|
|
0,6" ",0,0, 13820000=02551000=
|
|
0,6"EXC ", 2,6"BSD ", 3,6"BSS ", 4,6"RDA ", 5,6"TRW ", 6,6"SED ", 13825000=02552000=
|
|
7,6"TDA ",12,6"SDA ",13,6"SSA ",14,6"SFD ",15,6"SRD ",18,6"SES ", 13830000=02553000=
|
|
20,6"TEQ ",21,6"TNE ",22,6"TEG ",23,6"TGR ",24,6"SRS ",25,6"SFS ", 13835000=02554000=
|
|
28,6"TEL ",29,6"TLS ",30,6"TAN ",31,6"BIT ",32,6"INC ",33,6"STC ", 13840000=02555000=
|
|
34,6"SEC ",35,6"CRF ",36,6"JNC ",37,6"JFC ",38,6"JNS ",39,6"JFW ", 13845000=02556000=
|
|
40,6"RCA ",41,6"ENS ",42,6"BNS ",43,6"RSA ",44,6"SCA ",45,6"JRC ", 13850000=02557000=
|
|
46,6"TSA ",47,6"JRV ",48,6"CEQ ",49,6"CNE ",50,6"CEG ",51,6"CGR ", 13855000=02558000=
|
|
52,6"BIT ",53,6"BIR ",54,6"OCV ",55,6"ICV ",56,6"CEL ",57,6"CLS ", 13856000
|
|
58,6"FSU ",59,6"FAD ",60,6"TRP ",61,6"TRN ",62,6"TRZ ",63,6"TRS ", 13860000=02559000=
|
|
64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0; 13865000=02560000=
|
|
END; 13870000=02563000=
|
|
GO AGAIN; 13875000=02564000=
|
|
END; 13880000=02565000=
|
|
IF Q = 6"6FORMA" THEN 13885000=02566000=
|
|
BEGIN 13890000=02567000=
|
|
SWITCHIT(FORMATBIT); 13895000=02567000=
|
|
GO AGAIN; 13900000=02567000=
|
|
END; 13905000=02567000=
|
|
GO WHATISIT; 13910000=02568000=
|
|
LENGTH7: 13915000=02570000=
|
|
% IF Q = 6"7INCLU" THEN 13920000=02570000=
|
|
% BEGIN DOLLARCARD:=STARTINCLUDING; GO EXIT; END; 13925000=02571000=
|
|
% IF Q = 6"7INCLN" THEN 13930000=02572000=
|
|
% BEGIN SWITCHIT(NEWINCLBIT); GO AGAIN; END; 13935000=02573000=
|
|
LENGTH8: 13940000=02574000=
|
|
% NO OPTIONS OF THIS LENGTH ARE CURRENTLY IMPLEMENTED. 13945000=02574000=
|
|
LENGTH9: 13950000=02576000=
|
|
IF Q = 6"9INTRI" THEN 13955000=02576000=
|
|
BEGIN 13960000=02576500=
|
|
INTOG:= XMODE ^= 2 AND XMODE ^= 4 OR INTOG; % NEVER RESET. 13965000=02577000=
|
|
GO SKANAGAIN; 13970000=02577250=
|
|
END; 13975000=02577500=
|
|
WHATISIT: 13980000=02579000=
|
|
IF RESULT = 3 THEN 13985000=02579000=
|
|
BEGIN 13990000=02580000=
|
|
BASENUM:= CONV(ACCUM, 1, 0, ACCUM[1].[35:6]); 13995000=02581000=
|
|
TOTALNO:= -10; 14000000=02582000=
|
|
NEWBASE:= TRUE; 14005000=02583000=
|
|
GO SKANAGAIN; 14010000=02584000=
|
|
END; 14015000=02585000=
|
|
IF RESULT = 2 THEN 14020000=02586000=
|
|
BEGIN 14025000=02587000=
|
|
IF Q = 6"1+0000" THEN 14030000=02588000=
|
|
BEGIN 14035000=02589000=
|
|
SKAN; 14040000=02590000=
|
|
IF RESULT = 3 THEN 14045000=02591000=
|
|
ADDVALUE:= CONV(ACCUM, 1, 0, ACCUM[1].[35:6]) 14050000=02593000=
|
|
ELSE 14055000=02593000=
|
|
FLAG(600); % NUMBER EXPECTED. 14060000=02593000=
|
|
END; 14065000=02594000=
|
|
GO SKANAGAIN; 14070000=02595000=
|
|
END; 14075000=02596000=
|
|
14080000=02597000=
|
|
COMMENT DID NOT RECOGNIZE OPTION; 14085000=02597000=
|
|
IF RESULT ^= 1 THEN % NOT AN IDENTIFIER. 14090000=02598000=
|
|
BEGIN 14095000=02599000=
|
|
FLAG(601); 14100000=02599000=
|
|
GO SKANAGAIN 14105000=02599000=
|
|
END; 14110000=02599000=
|
|
SWITCHIT(USEROPINX); % USEROPINX MEANS A USER-DEFINED OPTION. 14115000=02600000=
|
|
GO AGAIN; 14120000=02601000=
|
|
EXIT: 14125000=02602500=
|
|
LISTER:= DEBUGTOG OR LISTOG OR LISTATOG; 14130000=02602500=
|
|
MOVE(10, DEFINEARRAY, 0, ACCUM, 0); % RESTORE INFORMATION FOR 14135000=02602600=
|
|
COUNT:= SCOUNT; 14140000=02602700=
|
|
RESULT:= SRESULT; % "TABLE" TO RESUME SCAN. 14145000=02602700=
|
|
RESTORESEQNUM(SBUFF, LCR, INFO[LASTSEQROW,*], LASTSEQUENCE); 14150000=02602800=
|
|
% FOR VOID TESTS 14155000=02602800=
|
|
DOLLARTOG:= FALSE; 14160000=02603000=
|
|
END DOLLARCARD; 14165000=02604000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%14170000=02604000=
|
|
14175000=02605000=
|
|
COMMENT TABLE IS THE ROUTINE THAT MOST CODE IN THE COMPILER 14180000=02605000=
|
|
USES WHEN IT IS DESIRED TO SCAN ANOTHER LOGICAL QUANTITY. 14185000=02606000=
|
|
THE RESULT RETURNED IS THE CLASS OF THE ITEM DESIRED. 14190000=02607000=
|
|
TABLE MAINTAINS THE VARIABLES I AND NXTELBT AND THE ARRAY 14195000=02608000=
|
|
ELBAT. ELBAT AND I ARE PRINCIPAL VARIABLES USED FOR 14200000=02609000=
|
|
COMUNICATION BETWEEN TABLE AND THE OUTSIDE WORLD. NXTELBT 14205000=02610000=
|
|
IS ALMOST EXCLUSIVELY USED BY TABLE, ALTHOUGH AN OCCASION- 14210000=02611000=
|
|
AL OTHER USE IS MADE IN ORDER TO FORGET THAT SOMETHING WAS 14215000=02612000=
|
|
SCANNED. (SEE, FOR EXAMPLE, COMPOUNDTAIL). FOR FURTHER 14220000=02613000=
|
|
GENERAL DISCUSSION SEE THE DECLARATION OF THESE VARIABLES. 14225000=02614000=
|
|
THE PARAMETER P IS THE ACTUAL INDEX OF THE QUANTITY 14230000=02615000=
|
|
DESIRED (USUALLY I-1,I, OR I+1). 14235000=02616000=
|
|
THE GENERAL PLAN OF TABLE IS THIS: 14240000=02617000=
|
|
I) IF P < NXTELBAT GO ON TO III). 14245000=02618000=
|
|
II) PROCESS ONE QUANTITY. 14250000=02619000=
|
|
A) SCAN. 14255000=02620000=
|
|
B) TEST FOR IDENTIFIER, NUMBER, OR SPECIAL CHARACTER. 14260000=02621000=
|
|
1) IDENTIFIER - LOOKUP IN DIRECTORY AND PROCESS 14265000=02622000=
|
|
IN SPECIAL MANNER IF COMMENT OR DEFINED ID. 14270000=02623000=
|
|
2) NUMBER - PROCESS INTEGER PART, FRACTIONAL PART, 14275000=02624000=
|
|
AND EXPONENT PART. 14280000=02625000=
|
|
3) TEST IF SPECIAL CHARACTER REQUIRES SPECIAL 14285000=02626000=
|
|
PROCESSING - OTHERWISE GET ELBAT WORD FROM 14290000=02627000=
|
|
SPECIAL. 14295000=02628000=
|
|
C) LOAD ELBAT AND INCREMENT NXTELBT. 14300000=02629000=
|
|
D) IF ELBAT IS FULL ADJUST ELBAT, NXTELBT, I, AND P. 14305000=02630000=
|
|
E) GO BACK TO I). 14310000=02631000=
|
|
III) RETURN WITH CLASS OF ELBAT[P]. 14315000=02632000=
|
|
FURTHER DETAILS ARE GIVEN IN BODY OF TABLE. 14320000=02633000=
|
|
; 14325000=02634000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%14326000
|
|
INTEGER PROCEDURE TABLE(P); 14330000=02635000=
|
|
VALUE 14335000=02635000=
|
|
P; 14340000=02635000=
|
|
INTEGER 14345000=02635000=
|
|
P; 14350000=02635000=
|
|
BEGIN 14355000=02636000=
|
|
LABEL 14360000=02637000=
|
|
PERCENT, 14365000=02637000=
|
|
SPECIALCHAR, 14370000=02637000=
|
|
COMPLETE, 14375000=02637000=
|
|
COLON, 14380000=02637000=
|
|
DOT, 14385000=02637000=
|
|
ATSIGN, 14390000=02637000=
|
|
QUOTE, 14395000=02638000=
|
|
STRNGXT, 14400000=02638000=
|
|
MOVEIT, 14405000=02638000=
|
|
ARGH, 14410000=02638000=
|
|
FINISHNUMBER, 14415000=02639000=
|
|
SCANAGAIN, 14420000=02639000=
|
|
FPART, 14425000=02639000=
|
|
EPART, 14430000=02639000=
|
|
IPART, 14435000=02639000=
|
|
IDENT, 14440000=02639000=
|
|
ROSE, 14445000=02639000=
|
|
COMPOST, 14450000=02639000=
|
|
DOLLAR, 14455000=02639000=
|
|
RTPAREN, 14460000=02640000=
|
|
CROSSHATCH, 14465000=02640000=
|
|
NUMBEREND; 14470000=02640000=
|
|
SWITCH 14475000=02641000=
|
|
SPECIALSWITCH:= PERCENT, 14480000=02641000=
|
|
DOLLAR, 14485000=02641000=
|
|
DOT, 14490000=02641000=
|
|
ATSIGN, 14495000=02641000=
|
|
COLON, 14500000=02641000=
|
|
QUOTE, 14505000=02642000=
|
|
RTPAREN, 14510000=02642000=
|
|
CROSSHATCH; 14515000=02642000=
|
|
SWITCH 14520000=02643000=
|
|
RESULTSWITCH:= IDENT, 14525000=02643000=
|
|
SPECIALCHAR, 14530000=02643000=
|
|
IPART; 14535000=02643000=
|
|
WHILE P >= NXTELBT DO 14540000=02645000=
|
|
BEGIN 14545000=02645000=
|
|
SCANAGAIN: 14550000=02647000=
|
|
COUNT:= RESULT:= ACCUM[1]:= 0; 14555000=02647000=
|
|
SCANNER; 14560000=02647000=
|
|
GO RESULTSWITCH[RESULT]; 14565000=02648000=
|
|
ARGH: 14570000=02650000=
|
|
Q:= ACCUM[1]; 14575000=02650000=
|
|
FLAG(141); 14580000=02650000=
|
|
GO SCANAGAIN; 14585000=02650000=
|
|
SPECIALCHAR: 14590000=02652000=
|
|
GT1:= ACCUM[1].[29:6]-2; 14595000=02652000=
|
|
ENDTOG:= GT1 = 57 AND ENDTOG; % 57+2 = "%" 14600000=02653000=
|
|
COMMENT OBTAIN ACTUAL CHARACTER FROM ACCUM; 14610000=02654000=
|
|
T:= SPECIAL[GT1 & GT1[5:6:3]]; 14615000=02655000=
|
|
COMMENT NOTICE COMPRESSION TECHNIQUE USED TO SHORTEN TABLE OF 14625000=02656000=
|
|
ELBAT WORDS FOR SPECIAL CHARACTERS; 14630000=02657000=
|
|
IF GT1:= T.INCR = 0 THEN 14635000=02658000=
|
|
GO COMPLETE; 14640000=02658000=
|
|
GO SPECIALSWITCH[GT1]; 14645000=02659000=
|
|
COMMENT INCR FIELD OF SPECIAL CHARACTER IS NON-ZERO FOR SPECIAL 14655000=02660000=
|
|
CHARACTERS REQUIRING SPECIAL HANDLING. INCR IS SWITCHED 14660000=02661000=
|
|
ON TO OBTAIN DISCRIMINATION; 14665000=02662000=
|
|
COLON: 14670000=02663000=
|
|
RESULT:= 7; 14675000=02663000=
|
|
SCANNER; COMMENT ELIMINATE BLANKS - CHECKING 14680000=02663000=
|
|
FOR := IN PLACE OF ~ ; 14690000=02664000=
|
|
IF EXAMIN(SBUFF, NCR) = 6"=" THEN 14695000=02665000=
|
|
BEGIN 14700000=02666000=
|
|
RESULT:= 0; 14705000=02666000=
|
|
SCANNER; 14710000=02666000=
|
|
T:= SPECIAL[13] 14715000=02666000=
|
|
END; 14720000=02666000=
|
|
RESULT:= 2; 14725000=02667000=
|
|
GO COMPLETE; 14730000=02667000=
|
|
DOT: 14735000=02680000=
|
|
IF EXAMIN(SBUFF, NCR) > 9 OR ENDTOG THEN 14740000=02680000=
|
|
GO COMPLETE; 14745000=02680000=
|
|
NHI:= NLO:= 0; 14750000=02681000=
|
|
C:= 0; 14755000=02682000=
|
|
GO FPART; 14760000=02682000=
|
|
ATSIGN: 14765000=02684000=
|
|
RESULT:= 0; 14770000=02684000=
|
|
SCANNER; % SCAN PAST "@". 14775000=02684000=
|
|
IF COUNT > 17 THEN 14780000=02685000=
|
|
GO ARGH; % 16 CHARS, + "@". 14785000=02685000=
|
|
IF OCTIZE(ACCUM, 1, C, 17-COUNT, COUNT-1) THEN 14790000=02686000=
|
|
BEGIN 14795000=02686500=
|
|
Q:= ACCUM[1]; 14800000=02686500=
|
|
FLAG(521); 14805000=02686500=
|
|
GO SCANAGAIN 14810000=02686500=
|
|
END; 14815000=02686500=
|
|
GO NUMBEREND; 14820000=02687000=
|
|
14825000=02689000=
|
|
COMMENT DOT AND ATSIGN ENTER NUMBER CONVERSION AT CORRECT SPOT; 14830000=02689000=
|
|
QUOTE: 14835000=02691000=
|
|
COUNT:= 0; 14840000=02691000=
|
|
T:= 14845000=02692000=
|
|
IF STREAMTOG THEN 14850000=02692000=
|
|
63 14855000=02692500=
|
|
ELSE 14860000=02692500=
|
|
IF REAL(STREAMTOG) > 1 THEN 14865000=02692500=
|
|
8 14870000=02692500=
|
|
ELSE 14875000=02692500=
|
|
7; 14880000=02692500=
|
|
DO BEGIN 14885000=02693000=
|
|
RESULT:= 5; 14890000=02694000=
|
|
SCANNER; 14895000=02694000=
|
|
IF COUNT > T THEN 14900000=02695000=
|
|
BEGIN 14905000=02696000=
|
|
Q:= ACCUM[1]; 14910000=02696000=
|
|
FLAG(520); 14915000=02696000=
|
|
GO SCANAGAIN 14920000=02696000=
|
|
END; 14925000=02696000=
|
|
END 14930000=02697000=
|
|
UNTIL EXAMIN(SBUFF, NCR) = 6"""; 14935000=02697000=
|
|
Q:= ACCUM[1]; 14940000=02698000=
|
|
RESULT:= 5; 14945000=02698000=
|
|
SCANNER; 14950000=02698000=
|
|
COUNT:= COUNT-1; 14955000=02698000=
|
|
IF COUNT < 0 THEN 14960000=02699000=
|
|
COUNT:= COUNT+64; 14965000=02699000=
|
|
ACCUM[1]:= Q; 14970000=02700000=
|
|
RESULT:= 4; 14975000=02700000=
|
|
STRNGXT: 14980000=02701000=
|
|
T:= C:= 0; 14985000=02701000=
|
|
IF COUNT < 8 THEN 14990000=02703000=
|
|
MOVEIT: 14995000=02705000=
|
|
BEGIN 14995500
|
|
EBCDICBUFF[0]:= C; 14996000
|
|
MOVECHARACTERS(COUNT, ACCUM, 1, 3, EBCDICBUFF, 0, 8-COUNT); 15000000=02705000=
|
|
C:= EBCDICBUFF[0]; 15002000
|
|
END; 15004000
|
|
T.CLASS:= STRNGCON; 15005000=02705100=
|
|
GO COMPLETE; 15010000=02705200=
|
|
15015000=02707000=
|
|
COMMENT CROSSHATCH HANDLES TWO SITUATIONS: 15020000=02707000=
|
|
THE CROSSHATCH AT END OF DEFINE DECLARATIONS AND 15025000=02708000=
|
|
THE CROSSHATCH AT END OF ALPHA REPRESENTING DEFINED IDS. 15030000=02709000=
|
|
THE TWO CASES ARE PROCESSED DIFFERENTLY. THE FIRST CASE 15035000=02710000=
|
|
MERELY PLACES THE CROSSHATCH IN ELBAT. THE SECOND CASE 15040000=02711000=
|
|
CAUSES AN EXIT FROM SCANNING THE ALPHA FOR THE DEFINED ID. 15045000=02712000=
|
|
FOR A FULL DISCUSSION SEE DEFINEGEN; 15050000=02713000=
|
|
CROSSHATCH: 15055000=02715000=
|
|
IF DEFINECTR ^= 0 THEN 15060000=02715000=
|
|
GO COMPLETE; 15065000=02715000=
|
|
PUTSEQNO(EBCDICBUFF, 0, SBUFF, LCR); 15070000=02716000=
|
|
GT1:= EBCDICBUFF[0]; % COMPENSATE FOR SCALAR PARAM 15072000
|
|
TURNONSTOPLIGHT(0, SBUFF, LCR); 15075000=02717000=
|
|
IF DEFINEINDEX = 0 THEN 15080000=02718000=
|
|
GO ARGH; 15085000=02718000=
|
|
LCR:= (GT1:= DEFINEARRAY[DEFINEINDEX-1]) DIV 262144; 15090000=02719000=
|
|
NCR:= GT1 MOD 262144; 15095000=02720000=
|
|
GT2:= 0 & (T:= DEFINEARRAY[DEFINEINDEX:= DEFINEINDEX-3])[14:29:15]15100000=02721000=
|
|
; 15105000=02721000=
|
|
LASTUSED:= T.[14:15]; 15110000=02722000=
|
|
FOR GT1:= 1 STEP 1 UNTIL GT2 DO 15115000=02723000=
|
|
BEGIN 15120000=02723500=
|
|
STACKHEAD[(T:= TAKE(LASTINFO+1)).[35:36] MOD 125]:= 15125000=02725000=
|
|
TAKE(LASTINFO).LINK; 15130000=02725000=
|
|
LASTINFO:= (NEXTINFO:= LASTINFO)-T.PURPT; 15135000=02726000=
|
|
END; 15140000=02727000=
|
|
GO SCANAGAIN; 15145000=02728000=
|
|
DOLLAR: 15150000=02729000=
|
|
COMMENT THIS CODE HANDLES CONTROL CARDS; 15155000=02729000=
|
|
15160000=02730000=
|
|
DOLLARCARD; 15165000=02730000=
|
|
PERCENT: 15170000=02731000=
|
|
IF NCR ^= FCR THEN 15175000=02731000=
|
|
READACARD; 15180000=02731000=
|
|
GO SCANAGAIN; 15185000=02737000=
|
|
15190000=02738000=
|
|
COMMENT MOST PERCENT SIGNS ACTING AS END OF CARD SENTINELS GET TO 15195000=02738000=
|
|
PERCENT. PERCENT READS THE NEXT CARD AND STARTS OVER. A 15200000=02739000=
|
|
SIDE EFFECT IS THAT ALL CHARACTERS ON A CARD ARE IGNORED 15205000=02740000=
|
|
AFTER A FREE PERCENT SIGN (ONE NOT IMBEDDED IN A STRING OR 15210000=02741000=
|
|
COMMENT); 15215000=02742000=
|
|
15220000=02743000=
|
|
COMMENT MIGHT BE FUNNY COMMA - HANDLE HERE; 15225000=02743000=
|
|
RTPAREN: 15230000=02744000=
|
|
RESULT:= 7; 15235000=02744000=
|
|
SCANNER; 15240000=02744000=
|
|
IF EXAMIN(SBUFF, NCR) = 6""" THEN 15245000=02745000=
|
|
BEGIN 15250000=02746000=
|
|
RESULT:= 0; 15255000=02747000=
|
|
SCANNER; 15260000=02747000=
|
|
DO BEGIN 15265000=02748000=
|
|
RESULT:= 5; 15270000=02749000=
|
|
SCANNER 15275000=02750000=
|
|
END 15280000=02750000=
|
|
UNTIL EXAMIN(SBUFF, NCR) = 6"""; 15285000=02750000=
|
|
RESULT:= 0; 15290000=02751000=
|
|
SCANNER; 15295000=02751000=
|
|
RESULT:= 7; 15300000=02752000=
|
|
SCANNER; 15305000=02752000=
|
|
IF EXAMIN(SBUFF, NCR) ^= 6"(" THEN 15310000=02753000=
|
|
GO ARGH; 15315000=02753000=
|
|
RESULT:= 0; 15320000=02754000=
|
|
SCANNER; 15325000=02754000=
|
|
Q:= ACCUM[1]; 15330000=02754000=
|
|
T:= SPECIAL[24] 15335000=02756000=
|
|
END; 15340000=02756000=
|
|
RESULT:= 2; 15345000=02757000=
|
|
GO COMPLETE; 15350000=02757000=
|
|
IPART: 15355000=02758000=
|
|
TCOUNT:= 0; 15360000=02758000=
|
|
C:= CONVERT; 15365000=02758000=
|
|
% RESULT:=7; SCANNER; % DEBLANK. 15370000=02759000=
|
|
% IF DEFINECTR=0 THEN 15375000=02760000=
|
|
% IF (C=3 OR C=4) AND EXAMIN(NCR)=""" THEN %OCTAL OR HEX STRING.15380000=02761000=
|
|
% BEGIN INTEGER SIZ; 15385000=02762000=
|
|
% RESULT:=5; SCANNER; % SKIP QUOTE. 15390000=02763000=
|
|
% COUNT:=0; 15395000=02764000=
|
|
% DO BEGIN 15400000=02765000=
|
|
% RESULT:=5; SCANNER; 15405000=02766000=
|
|
% IF COUNT > SIZ:=48 DIV C THEN % > 1 WORD LONG. 15410000=02767000=
|
|
% BEGIN ERR(520); GO SCANAGAIN END; 15415000=02768000=
|
|
% END UNTIL EXAMIN(NCR)="""; 15420000=02769000=
|
|
% Q:=ACCUM[1]; RESULT:=5; SCANNER; COUNT:=COUNT-1; 15425000=02770000=
|
|
% IF C=3 THEN % OCTAL STRING. 15430000=02771000=
|
|
% IF OCTIZE(ACCUM[1],ACCUM[4],16-COUNT,COUNT) THEN 15435000=02772000=
|
|
% FLAG(521) % NON OCTAL CHARACTER IN STRING. 15440000=02773000=
|
|
% ELSE ELSE IF HEXIZE(ACCUM[1],ACCUM[4],12-COUNT,COUNT) THEN 15445000=02774000=
|
|
% FLAG(521); % NON CHARACTER IN HEX STRING. 15450000=02775000=
|
|
% IF COUNT < SIZ THEN 15455000=02776000=
|
|
% BEGIN 15460000=02777000=
|
|
% C:=ACCUM[4]; GO FINISHNUMBER; 15465000=02778000=
|
|
% END; 15470000=02779000=
|
|
% T.INCR:=COUNT:=8; T.CLASS:=STRING; 15475000=02780000=
|
|
% MOVECHARACTERS(8,ACCUM[4],0,ACCUM[1],3); 15480000=02781000=
|
|
% GO COMPLETE; 15485000=02782000=
|
|
% END OCTAL OR HEX STRING; 15490000=02783000=
|
|
IF DPTOG THEN 15495000=02784000=
|
|
BEGIN 15500000=02785000=
|
|
NHI:= THI; 15505000=02785000=
|
|
NLO:= TLO; 15510000=02785000=
|
|
END; 15515000=02785000=
|
|
IF EXAMIN(SBUFF, NCR) = 6"." THEN 15520000=02786000=
|
|
BEGIN 15525000=02787000=
|
|
RESULT:= 0; 15530000=02788000=
|
|
SCANNER; 15535000=02788000=
|
|
C:= 1.0*C; 15540000=02789000=
|
|
FPART: 15545000=02790000=
|
|
TCOUNT:= COUNT; 15550000=02790000=
|
|
IF EXAMIN(SBUFF, NCR) <= 9 THEN 15555000=02791000=
|
|
BEGIN 15560000=02792000=
|
|
RESULT:= 0; 15565000=02793000=
|
|
SCANNER; 15570000=02793000=
|
|
IF DPTOG THEN 15575000=02794000=
|
|
BEGIN 15580000=02795000=
|
|
THI:= FIRSTWORD( 15585000=02797000=
|
|
DOUBLE(CONVERT, TLO)/TEN[(COUNT-TCOUNT) MOD 12], TLO); 15590000=02797000=
|
|
FOR T:= 12 STEP 12 UNTIL COUNT-TCOUNT DO 15595000=02798000=
|
|
THI:= FIRSTWORD(DOUBLE(THI, TLO)/TEN[12], TLO); 15600000=02799000=
|
|
NHI:= FIRSTWORD(DOUBLE(THI, TLO) + DOUBLE(NHI, NLO), NLO); 15605000=02800000=
|
|
C:= NHI 15610000=02802000=
|
|
END 15615000=02803000=
|
|
ELSE 15620000=02803000=
|
|
C:= TEN[TCOUNT-COUNT]*CONVERT+C; 15625000=02803000=
|
|
END 15630000=02805000=
|
|
END; 15635000=02805000=
|
|
RESULT:= 7; 15640000=02806000=
|
|
SCANNER; 15645000=02806000=
|
|
IF EXAMIN(SBUFF, NCR) = 6"@" THEN 15650000=02807000=
|
|
BEGIN 15655000=02808000=
|
|
RESULT:= 0; 15660000=02809000=
|
|
SCANNER; 15665000=02809000=
|
|
EPART: 15670000=02810000=
|
|
TCOUNT:= COUNT; 15675000=02810000=
|
|
C:= C*1.0; 15680000=02811000=
|
|
RESULT:= 7; 15685000=02812000=
|
|
SCANNER; 15690000=02812000=
|
|
IF T:= EXAMIN(SBUFF, NCR) > 9 THEN 15695000=02813000=
|
|
BEGIN 15700000=02815000=
|
|
RESULT:= 0; 15705000=02816000=
|
|
SCANNER; 15710000=02816000=
|
|
TCOUNT:= COUNT; 15715000=02817000=
|
|
END; 15720000=02818000=
|
|
RESULT:= 0; 15725000=02820000=
|
|
SCANNER; 15730000=02820000=
|
|
Q:= ACCUM[1]; 15735000=02822000=
|
|
IF GT1:= T:= (IF T = 6"-" THEN-CONVERT ELSE CONVERT) < -46 OR T 15740000=02824000=
|
|
> 69 15745000=02824000=
|
|
THEN 15750000=02824000=
|
|
FLAG(269) 15755000=02825000=
|
|
ELSE 15760000=02825000=
|
|
BEGIN 15765000=02825000=
|
|
T:= TEN[T]; 15770000=02826000=
|
|
IF ABS(0 & C[5:44:6] & C[46:45:1]+0 & T[5:44:6] 15775000=02828000=
|
|
& T[46:45:1]+12) > 63 15780000=02828000=
|
|
THEN 15785000=02828000=
|
|
FLAG(269) 15790000=02829000=
|
|
ELSE 15795000=02829000=
|
|
IF DPTOG THEN 15800000=02829000=
|
|
IF GT1 < 0 THEN 15805000=02830000=
|
|
BEGIN 15810000=02831000=
|
|
GT1:= -GT1; 15815000=02832000=
|
|
NHI:= FIRSTWORD(DOUBLE(NHI, NLO)/TEN[GT1 MOD 12], NLO); 15820000=02833000=
|
|
FOR GT2:= 12 STEP 12 UNTIL GT1 DO 15830000=02834000=
|
|
NHI:= FIRSTWORD(DOUBLE(NHI, NLO)/TEN[12], NLO); 15835000=02835000=
|
|
END 15840000=02837000=
|
|
ELSE 15845000=02837000=
|
|
BEGIN 15850000=02837000=
|
|
NHI:= FIRSTWORD(DOUBLE(NHI, NLO)*TEN[GT1 MOD 12], NLO); 15855000=02838000=
|
|
FOR GT2:= 12 STEP 12 UNTIL GT1 DO 15865000=02839000=
|
|
NHI:= FIRSTWORD(DOUBLE(NHI, NLO)*TEN[12], NLO); 15870000=02840000=
|
|
END 15875000=02842000=
|
|
ELSE 15880000=02842000=
|
|
C:= C*T; 15885000=02842000=
|
|
END; 15890000=02843000=
|
|
END; 15895000=02844000=
|
|
NUMBEREND: 15900000=02846000=
|
|
Q:= ACCUM[1]; 15905000=02846000=
|
|
RESULT:= 3; 15910000=02846000=
|
|
FINISHNUMBER: 15915000=02848000=
|
|
T:= 0; 15920000=02848000=
|
|
IF C.[46:37] = 0 THEN 15925000=02849000=
|
|
BEGIN 15930000=02850000=
|
|
T.CLASS:= LITNO; 15935000=02850000=
|
|
T.ADDRESS:= C 15940000=02850000=
|
|
END 15945000=02851000=
|
|
ELSE 15950000=02851000=
|
|
T.CLASS:= NONLITNO; 15955000=02851000=
|
|
GO COMPLETE; 15960000=02852000=
|
|
15965000=02853000=
|
|
COMMENT THE CODE BETWEEN IDENT AND COMPOST DOES A LOOKUP IN INFO. 15970000=02853000=
|
|
IF QUANTITY IS NOT FOUND THE ELBAT WORD EXPECTS TO BE 15975000=02854000=
|
|
ZERO. THE SCRAMBLE FOR APPROPRIATE STACK IS FIRST THING 15980000=02855000=
|
|
TO BE DONE. THEN THE LOOP BETWEEN COMPOST AND 15985000=02859000=
|
|
ROSE IS ENTERED. THE LAST THING DONE FOR ANY 15990000=02860000=
|
|
IDENTIFIER WHICH IS FOUND IS TO STUFF THE LOCATION 15995000=02861000=
|
|
OF THE ELBATWORD IN INFO INTO THE LINK FIELD. THIS 16000000=02862000=
|
|
ALLOWS REFERENCE BACK TO INFO FOR ADDITIONAL DATA, 16005000=02863000=
|
|
SHOULD THIS BE REQUIRED. ; 16010000=02864000=
|
|
IDENT: 16015000=02865000=
|
|
T:= STACKHEAD[SCRAM:= (Q:= ACCUM[1]) MOD 125]; 16020000=02865000=
|
|
ROSE: 16025000=02875000=
|
|
GT1:= T.LINKR; 16030000=02875000=
|
|
IF (GT2:= T.LINKC)+GT1 = 0 THEN 16035000=02876000=
|
|
BEGIN 16040000=02877000=
|
|
T:= 0; 16045000=02877000=
|
|
GO COMPLETE 16050000=02877000=
|
|
END; 16055000=02877000=
|
|
IF T = INFO[GT1, GT2] THEN 16060000=02877010=
|
|
BEGIN 16065000=02877010=
|
|
T:= 0; 16070000=02877020=
|
|
GO TO COMPLETE 16075000=02877020=
|
|
END; 16080000=02877020=
|
|
T:= INFO[GT1, GT2]; 16085000=02878000=
|
|
IF INFO[GT1, GT2+1] & 0[46:46:11] ^= Q THEN 16090000=02879000=
|
|
GO ROSE; 16095000=02879000=
|
|
IF COUNT <= 5 THEN 16100000=02880000=
|
|
GO COMPOST; 16105000=02880000=
|
|
IF NOT EQUAL(COUNT-5, ACCUM, 2, INFO[GT1,*], GT2+2) THEN 16110000=02881000=
|
|
GO ROSE; 16115000=02881000=
|
|
COMPOST: 16120000=02882000=
|
|
T:= T & GT1[12:4:5] & GT2[7:7:8]; 16125000=02882000=
|
|
16130000=02883000=
|
|
COMMENT CHECK HERE FOR COMMENTS AND DEFINED IDS; 16135000=02883000=
|
|
IF NOT ENDTOG THEN 16140000=02884000=
|
|
BEGIN 16145000=02885000=
|
|
IF GT1:= T.CLASS = COMMENTV THEN 16150000=02886000=
|
|
BEGIN 16155000=02887000=
|
|
WHILE EXAMIN(SBUFF, NCR) ^= 6";" DO 16160000=02888000=
|
|
BEGIN 16165000=02889000=
|
|
RESULT:= 6; 16170000=02889000=
|
|
COUNT:= 0; 16175000=02889000=
|
|
SCANNER 16180000=02889000=
|
|
END; 16185000=02889000=
|
|
RESULT:= 0; 16190000=02890000=
|
|
SCANNER; 16195000=02890000=
|
|
GO SCANAGAIN 16200000=02891000=
|
|
END 16205000=02892000=
|
|
END; 16210000=02892000=
|
|
IF STOPDEFINE THEN 16215000=02893000=
|
|
GO COMPLETE; 16220000=02893000=
|
|
IF GT1 ^= DEFINEDID THEN 16225000=02894000=
|
|
GO COMPLETE; 16230000=02894000=
|
|
16235000=02895000=
|
|
COMMENT SETUP FOR DEFINED IDS - SEE DEFINEGEN FOR MORE DETAILS; 16240000=02895000=
|
|
IF T.ADDRESS ^= 0 THEN 16245000=02896000=
|
|
T:= FIXDEFINEINFO(T); 16250000=02896000=
|
|
IF DEFINEINDEX = 24 THEN 16255000=02898000=
|
|
BEGIN 16260000=02899000=
|
|
FLAG(139); 16265000=02899000=
|
|
GO ARGH 16270000=02899000=
|
|
END; 16275000=02899000=
|
|
DEFINEARRAY[DEFINEINDEX]:= LASTUSED & T.ADDRESS[29:14:15]; 16280000=02900000=
|
|
LASTUSED:= GIT(T); 16285000=02901000=
|
|
DEFINEARRAY[DEFINEINDEX+2]:= 262144*LCR+NCR; 16290000=02902000=
|
|
LCR:= (NCR:= DEFINEINDEX+1)+1; 16295000=02903000=
|
|
SBUFF:= DEFINEARRAY; % SWITCH SOURCE TO DEFINEARRAY 16296000
|
|
PUTSEQNO(EBCDICBUFF, 0, SBUFF, LCR); 16300000=02904000=
|
|
GT4:= EBCDICBUFF[0]; % COMPENSATE FOR SCALAR PARAM 16302000
|
|
TURNONSTOPLIGHT(6"%", SBUFF, LCR); 16305000=02905000=
|
|
DEFINEINDEX:= DEFINEINDEX+3; 16310000=02905000=
|
|
GO PERCENT; 16315000=02906000=
|
|
COMPLETE: 16320000=02910000=
|
|
ELBAT[NXTELBT]:= T; 16325000=02910000=
|
|
STOPDEFINE:= FALSE; COMMENT ALLOW DEFINES AGAIN; 16330000=02911000=
|
|
IF NXTELBT:= NXTELBT+1 > 74 THEN 16340000=02912000=
|
|
IF NOT MACROID THEN 16345000=02913000=
|
|
BEGIN 16350000=02914000=
|
|
16355000=02915000=
|
|
COMMENT ELBAT IS FULL: ADJUST IT; 16360000=02915000=
|
|
MOVE(10, ELBAT, 65, ELBAT, 0); 16365000=02916000=
|
|
I:= I-65; 16370000=02917000=
|
|
P:= P-65; 16375000=02917000=
|
|
NXTELBT:= 10; 16380000=02917000=
|
|
END 16385000=02919000=
|
|
END; 16390000=02919000=
|
|
IF TABLE:= ELBAT[P].CLASS = COMMENTV THEN 16395000=02920000=
|
|
BEGIN 16400000=02921000=
|
|
16405000=02922000=
|
|
COMMENT SPECIAL HANDLING OF CONSTANTS FOR SAKE OF FOR STATEMENTS; 16410000=02922000=
|
|
C:= INFO[0, ELBAT[P].ADDRESS]; 16415000=02923000=
|
|
ELBAT[P].CLASS:= TABLE:= NONLITNO 16420000=02925000=
|
|
END; 16425000=02925000=
|
|
STOPDEFINE:= FALSE; COMMENT ALLOW DEFINE; 16430000=02926000=
|
|
END TABLE; 16440000=02927000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%16445000=02927000=
|
|
BOOLEAN PROCEDURE BOOLPRIM; 16450000=02955000=
|
|
FORWARD; 16455000=02955000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%16460000=02955000=
|
|
PROCEDURE BOOLCOMP(B); 16465000=02955500=
|
|
BOOLEAN 16470000=02955500=
|
|
B; 16475000=02955500=
|
|
FORWARD; 16480000=02955500=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%16485000=02955500=
|
|
INTEGER PROCEDURE NEXT; 16490000=02956000=
|
|
BEGIN 16495000=02956500=
|
|
LABEL 16500000=02957000=
|
|
EXIT; 16505000=02957000=
|
|
INTEGER 16510000=02957500=
|
|
T; 16515000=02957500=
|
|
DEFINE 16520000=02958000=
|
|
ERROR = BEGIN 16525000=02958000=
|
|
FLAG(603); 16530000=02958000=
|
|
GO EXIT 16535000=02958000=
|
|
END #; 16540000=02958000=
|
|
SKAN; 16545000=02958500=
|
|
IF RESULT = 3 THEN 16550000=02959000=
|
|
ERROR; % NUMBERS NOT ALLOWED. 16555000=02959000=
|
|
IF RESULT = 2 THEN % SPECIAL CHARACTER. 16560000=02959500=
|
|
BEGIN 16565000=02960000=
|
|
T:= 16570000=02960500=
|
|
IF Q = 6"1,0000" OR Q = 6"1%0000" THEN 16575000=02960500=
|
|
20 % FAKE OUT BOOLEXP.16580000=02960500=
|
|
ELSE 16585000=02961000=
|
|
((T:= Q.[29:6]-2) & T[5:6:3]); 16590000=02961000=
|
|
IF T = 11 OR T = 19 OR T = 20 THEN 16595000=02961500=
|
|
BATMAN:= SPECIAL[T] % (,),OR ;16600000=02961500=
|
|
ELSE 16605000=02962000=
|
|
FLAG(603); 16610000=02962000=
|
|
GO EXIT 16615000=02963000=
|
|
END SPECIAL CHARACTERS; 16620000=02963000=
|
|
16625000=02963500=
|
|
COMMENT LOOK FOR BOOLEAN OPERATORS, THEN OPTIONS; 16630000=02963500=
|
|
T:= 16635000=02964000=
|
|
IF Q = 6"3NOT00" THEN 16640000=02964000=
|
|
NOTOP 16645000=02964500=
|
|
ELSE 16650000=02964500=
|
|
IF Q = 6"3AND00" THEN 16655000=02964500=
|
|
ANDOP 16660000=02965000=
|
|
ELSE 16665000=02965000=
|
|
IF Q = 6"2OR000" THEN 16670000=02965000=
|
|
OROP 16675000=02965500=
|
|
ELSE 16680000=02965500=
|
|
IF Q = 6"3EQV00" THEN 16685000=02965500=
|
|
EQVOP 16690000=02966000=
|
|
ELSE 16695000=02966000=
|
|
0; 16700000=02966000=
|
|
IF T ^= 0 THEN 16705000=02966500=
|
|
BATMAN.CLASS:= T 16710000=02967000=
|
|
ELSE 16715000=02967000=
|
|
BATMAN:= 1 & BOOID[45:7] & REAL(FINDOPTION(1))[46:1]; % OPTION. 16720000=02967000=
|
|
EXIT: 16725000=02968000=
|
|
NEXT:= MYCLASS:= BATMAN.CLASS; 16730000=02968000=
|
|
END NEXT; 16735000=02968500=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%16740000=02968500=
|
|
BOOLEAN PROCEDURE BOOLEXP; 16745000=02969000=
|
|
BEGIN 16750000=02969500=
|
|
BOOLEAN 16755000=02970000=
|
|
B; 16760000=02970000=
|
|
B:= BOOLPRIM; 16765000=02970500=
|
|
WHILE MYCLASS >= EQVOP AND MYCLASS <= ANDOP DO 16770000=02971000=
|
|
BOOLCOMP(B); 16775000=02971000=
|
|
BOOLEXP:= B 16780000=02972000=
|
|
END BOOLEXP; 16785000=02972000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%16790000=02972000=
|
|
BOOLEAN PROCEDURE BOOLPRIM; 16795000=02972500=
|
|
BEGIN 16800000=02973000=
|
|
BOOLEAN 16805000=02973500=
|
|
B, 16810000=02973500=
|
|
KNOT; 16815000=02973500=
|
|
DEFINE 16820000=02974000=
|
|
SKIPIT = MYCLASS:= NEXT #; 16825000=02974000=
|
|
IF KNOT:= (NEXT = NOTOP) THEN 16830000=02974500=
|
|
SKIPIT; 16835000=02974500=
|
|
IF MYCLASS = LEFTPAREN THEN 16840000=02975000=
|
|
BEGIN 16845000=02975500=
|
|
B:= BOOLEXP; 16850000=02976000=
|
|
IF MYCLASS ^= RTPAREN THEN 16855000=02976500=
|
|
FLAG(604); 16860000=02976500=
|
|
END 16865000=02977500=
|
|
ELSE 16870000=02977500=
|
|
IF MYCLASS ^= BOOID THEN 16875000=02977500=
|
|
FLAG(601) 16880000=02978000=
|
|
ELSE 16885000=02978000=
|
|
B:= BATMAN < 0; 16890000=02978000=
|
|
IF KNOT THEN 16895000=02978500=
|
|
B:= NOT B; 16900000=02978500=
|
|
SKIPIT; 16905000=02978500=
|
|
BOOLPRIM:= B 16910000=02979500=
|
|
END BOOLPRIM; 16915000=02979500=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%16920000=02979500=
|
|
PROCEDURE BOOLCOMP(B); 16925000=02980000=
|
|
BOOLEAN 16930000=02980000=
|
|
B; 16935000=02980000=
|
|
BEGIN 16940000=02980500=
|
|
REAL 16945000=02981000=
|
|
OPCLASS; 16950000=02981000=
|
|
BOOLEAN 16955000=02981500=
|
|
T; 16960000=02981500=
|
|
OPCLASS:= MYCLASS; 16965000=02982000=
|
|
T:= BOOLPRIM; 16970000=02982500=
|
|
WHILE OPCLASS < MYCLASS DO 16975000=02983000=
|
|
BOOLCOMP(T); 16980000=02983000=
|
|
B:= 16985000=02983500=
|
|
IF OPCLASS = ANDOP THEN 16990000=02983500=
|
|
(B AND T) 16995000=02984000=
|
|
ELSE 17000000=02984000=
|
|
IF OPCLASS = OROP THEN 17005000=02984000=
|
|
(B OR T) 17010000=02984500=
|
|
ELSE 17015000=02984500=
|
|
(B EQV T); 17020000=02984500=
|
|
END BOOLCOMP; 17025000=02985000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%17030000=02985000=
|
|
% 17035000=02985500=
|
|
17040000=02986000=
|
|
COMMENT#################################################################17045000=02986000=
|
|
FORWARD DECLARATIONS 17050000=02986500=
|
|
#######################################################################;17055000=02987000=
|
|
% 17060000=02987500=
|
|
PROCEDURE AEXP; 17065000=03001000=
|
|
FORWARD; 17070000=03001000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%17075000=03001000=
|
|
PROCEDURE ARITHSEC; 17080000=03002000=
|
|
FORWARD; 17085000=03002000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%17090000=03002000=
|
|
PROCEDURE SIMPARITH; 17095000=03003000=
|
|
FORWARD; 17100000=03003000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%17105000=03003000=
|
|
PROCEDURE ARITHCOMP; 17110000=03004000=
|
|
FORWARD; 17115000=03004000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%17120000=03004000=
|
|
PROCEDURE PRIMARY; 17125000=03005000=
|
|
FORWARD; 17130000=03005000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%17135000=03005000=
|
|
DEFINE 17140000=03006000=
|
|
BEXP = AEXP #; 17145000=03006000=
|
|
INTEGER PROCEDURE EXPRSS; 17150000=03007000=
|
|
FORWARD; 17155000=03007000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%17160000=03007000=
|
|
PROCEDURE POLISHER(EXPECT); 17165000=03009000=
|
|
VALUE 17170000=03009000=
|
|
EXPECT; 17175000=03009000=
|
|
REAL 17180000=03009000=
|
|
EXPECT; 17185000=03009000=
|
|
FORWARD; 17190000=03009000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%17195000=03009000=
|
|
PROCEDURE INLINE; 17200000=03010000=
|
|
FORWARD; 17205000=03010000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%17210000=03010000=
|
|
PROCEDURE SUBHAND(FROM); 17215000=03011000=
|
|
VALUE 17220000=03011000=
|
|
FROM; 17225000=03011000=
|
|
BOOLEAN 17230000=03011000=
|
|
FROM; 17235000=03011000=
|
|
FORWARD; 17240000=03011000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%17245000=03011000=
|
|
PROCEDURE IOSTMT; 17250000=03012000=
|
|
FORWARD; 17255000=03012000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%17260000=03012000=
|
|
INTEGER PROCEDURE IFEXP; 17265000=03013000=
|
|
FORWARD; 17270000=03013000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%17275000=03013000=
|
|
PROCEDURE PARSE; 17280000=03014000=
|
|
FORWARD; 17285000=03014000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%17290000=03014000=
|
|
PROCEDURE DOT; 17295000=03015000=
|
|
FORWARD; 17300000=03015000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%17305000=03015000=
|
|
PROCEDURE IFCLAUSE; 17310000=03018000=
|
|
FORWARD; 17315000=03018000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%17320000=03018000=
|
|
INTEGER PROCEDURE GET(SYLLABLE); 17325000=03019000=
|
|
VALUE 17330000=03019000=
|
|
SYLLABLE; 17335000=03019000=
|
|
REAL 17340000=03019000=
|
|
SYLLABLE; 17345000=03019000=
|
|
FORWARD; 17350000=03019000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%17355000=03019000=
|
|
INTEGER PROCEDURE GNAT(L); 17360000=03020000=
|
|
VALUE 17365000=03020000=
|
|
L; 17370000=03020000=
|
|
REAL 17375000=03020000=
|
|
L; 17380000=03020000=
|
|
FORWARD; 17385000=03020000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%17390000=03020000=
|
|
PROCEDURE PANA; 17395000=03021000=
|
|
FORWARD; 17400000=03021000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%17405000=03021000=
|
|
PROCEDURE IFSTMT; 17410000=03022000=
|
|
FORWARD; 17415000=03022000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%17420000=03022000=
|
|
PROCEDURE GOGEN(LABELBAT, BRANCHTYPE); 17425000=03023000=
|
|
VALUE 17430000=03024000=
|
|
LABELBAT, 17435000=03024000=
|
|
BRANCHTYPE; 17440000=03024000=
|
|
REAL 17445000=03025000=
|
|
LABELBAT, 17450000=03025000=
|
|
BRANCHTYPE; 17455000=03025000=
|
|
FORWARD; 17460000=03025000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%17465000=03025000=
|
|
BOOLEAN PROCEDURE SIMPGO; 17470000=03026000=
|
|
FORWARD; 17475000=03026000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%17480000=03026000=
|
|
PROCEDURE STMT; 17485000=03027000=
|
|
FORWARD; 17490000=03027000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%17495000=03027000=
|
|
PROCEDURE EMIT(SYLLABLE); 17500000=03028000=
|
|
VALUE 17505000=03028000=
|
|
SYLLABLE; 17510000=03028000=
|
|
REAL 17515000=03028000=
|
|
SYLLABLE; 17520000=03028000=
|
|
FORWARD; 17525000=03028000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%17530000=03028000=
|
|
PROCEDURE PROCSTMT(FROM); 17535000=03029000=
|
|
VALUE 17540000=03029000=
|
|
FROM; 17545000=03029000=
|
|
BOOLEAN 17550000=03029000=
|
|
FROM; 17555000=03029000=
|
|
FORWARD; 17560000=03029000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%17565000=03029000=
|
|
PROCEDURE STRMPROCSTMT; 17570000=03030000=
|
|
FORWARD; 17575000=03030000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%17580000=03030000=
|
|
PROCEDURE CONSTANTCLEAN; 17585000=03034000=
|
|
FORWARD; 17590000=03034000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%17595000=03034000=
|
|
PROCEDURE SCATTERELBAT; 17600000=03035000=
|
|
FORWARD; 17605000=03035000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%17610000=03035000=
|
|
PROCEDURE EMITB(BRANCH, FROM, TOWARDS); 17615000=03036000=
|
|
VALUE 17620000=03036000=
|
|
BRANCH, 17625000=03036000=
|
|
FROM, 17630000=03036000=
|
|
TOWARDS; 17635000=03036000=
|
|
REAL 17640000=03037000=
|
|
BRANCH, 17645000=03037000=
|
|
FROM, 17650000=03037000=
|
|
TOWARDS; 17655000=03037000=
|
|
FORWARD; 17660000=03037000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%17665000=03037000=
|
|
PROCEDURE VARIABLE(FROM); 17670000=03038000=
|
|
INTEGER 17675000=03038000=
|
|
FROM; 17680000=03038000=
|
|
FORWARD; 17685000=03038000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%17690000=03038000=
|
|
PROCEDURE IMPFUN; 17695000=03039000=
|
|
FORWARD; 17700000=03039000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%17705000=03039000=
|
|
PROCEDURE RIGHT(L); 17710000=03039500=
|
|
VALUE 17715000=03039500=
|
|
L; 17720000=03039500=
|
|
INTEGER 17725000=03039500=
|
|
L; 17730000=03039500=
|
|
FORWARD; 17735000=03039500=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%17740000=03039500=
|
|
PROCEDURE STREAMSTMT; 17745000=03040000=
|
|
FORWARD; 17750000=03040000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%17755000=03040000=
|
|
PROCEDURE SEGMENTSTART(B); 17760000=03041000=
|
|
VALUE 17765000=03041000=
|
|
B; 17770000=03041000=
|
|
BOOLEAN 17775000=03041000=
|
|
B; 17780000=03041000=
|
|
FORWARD; 17785000=03041000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%17790000=03041000=
|
|
PROCEDURE SEGMENT(SIZE, FR); 17795000=03042000=
|
|
VALUE 17800000=03042000=
|
|
SIZE, 17805000=03042000=
|
|
FR; 17810000=03042000=
|
|
INTEGER 17815000=03042000=
|
|
SIZE, 17820000=03042000=
|
|
FR; 17825000=03042000=
|
|
FORWARD; 17830000=03042000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%17835000=03042000=
|
|
INTEGER PROCEDURE BAE; 17840000=03046000=
|
|
FORWARD; 17845000=03046000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%17850000=03046000=
|
|
PROCEDURE PROGDESCBLDR(A, B, C, D); 17855000=03047000=
|
|
VALUE 17860000=03047000=
|
|
A, 17865000=03047000=
|
|
B, 17870000=03047000=
|
|
C, 17875000=03047000=
|
|
D; 17880000=03047000=
|
|
INTEGER 17885000=03047100=
|
|
A, 17890000=03047100=
|
|
C, 17895000=03047100=
|
|
D; 17900000=03047100=
|
|
BOOLEAN 17905000=03047100=
|
|
B; 17910000=03047100=
|
|
FORWARD; 17915000=03047100=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%17920000=03047100=
|
|
PROCEDURE BANA; 17925000=03048000=
|
|
FORWARD; 17930000=03048000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%17935000=03048000=
|
|
PROCEDURE EMITNUM(A); 17940000=03049000=
|
|
VALUE 17945000=03049000=
|
|
A; 17950000=03049000=
|
|
REAL 17955000=03049000=
|
|
A; 17960000=03049000=
|
|
FORWARD; 17965000=03049000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%17970000=03049000=
|
|
PROCEDURE EMITD(A, B, T); 17975000=03050000=
|
|
VALUE 17980000=03050000=
|
|
A, 17985000=03050000=
|
|
B, 17990000=03050000=
|
|
T; 17995000=03050000=
|
|
INTEGER 18000000=03050000=
|
|
A, 18005000=03050000=
|
|
B, 18010000=03050000=
|
|
T; 18015000=03050000=
|
|
FORWARD; 18020000=03050000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%18025000=03050000=
|
|
INTEGER PROCEDURE GETSPACE(S, L); 18030000=03051000=
|
|
VALUE 18035000=03051000=
|
|
S, 18040000=03051000=
|
|
L; 18045000=03051000=
|
|
INTEGER 18050000=03051001=
|
|
L; 18055000=03051001=
|
|
BOOLEAN 18060000=03051001=
|
|
S; 18065000=03051001=
|
|
FORWARD; 18070000=03051001=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%18075000=03051001=
|
|
PROCEDURE FORSTMT; 18080000=03052000=
|
|
FORWARD; 18085000=03052000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%18090000=03052000=
|
|
REAL PROCEDURE TAKE(INDEX); 18095000=03053000=
|
|
VALUE 18100000=03053000=
|
|
INDEX; 18105000=03053000=
|
|
INTEGER 18110000=03053000=
|
|
INDEX; 18115000=03053000=
|
|
FORWARD; 18120000=03053000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%18125000=03053000=
|
|
PROCEDURE E; 18130000=03054000=
|
|
FORWARD; 18135000=03054000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%18140000=03054000=
|
|
PROCEDURE ENTRY(TYPE); 18145000=03055000=
|
|
VALUE 18150000=03055000=
|
|
TYPE; 18155000=03055000=
|
|
REAL 18160000=03055000=
|
|
TYPE; 18165000=03055000=
|
|
FORWARD; 18170000=03055000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%18175000=03055000=
|
|
PROCEDURE PUTNBUMP(P1); 18180000=03057000=
|
|
VALUE 18185000=03057000=
|
|
P1; 18190000=03057000=
|
|
REAL 18195000=03057000=
|
|
P1; 18200000=03057000=
|
|
FORWARD; 18205000=03057000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%18210000=03057000=
|
|
PROCEDURE JUMPCHKNX; 18215000=03058000=
|
|
FORWARD; 18220000=03058000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%18225000=03058000=
|
|
PROCEDURE JUMPCHKX; 18230000=03059000=
|
|
FORWARD; 18235000=03059000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%18240000=03059000=
|
|
PROCEDURE DBLSTMT; 18245000=03060000=
|
|
FORWARD; 18250000=03060000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%18255000=03060000=
|
|
PROCEDURE BLOCK(S); 18260000=03067000=
|
|
VALUE 18265000=03067000=
|
|
S; 18270000=03067000=
|
|
BOOLEAN 18275000=03067000=
|
|
S; 18280000=03067000=
|
|
FORWARD; 18285000=03067000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%18290000=03067000=
|
|
PROCEDURE PURGE(STOPPER); 18295000=03068000=
|
|
VALUE 18300000=03068000=
|
|
STOPPER; 18305000=03068000=
|
|
REAL 18310000=03068000=
|
|
STOPPER; 18315000=03068000=
|
|
FORWARD; 18320000=03068000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%18325000=03068000=
|
|
PROCEDURE ENTER(TYPEV); 18330000=03069000=
|
|
VALUE 18335000=03070000=
|
|
TYPEV; 18340000=03070000=
|
|
REAL 18345000=03071000=
|
|
TYPEV; 18350000=03071000=
|
|
FORWARD; 18355000=03071000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%18360000=03071000=
|
|
18365000=04000000=
|
|
COMMENT THIS SECTION CONTAINS THE EMITTERS. THEY ARE THE AGENTS WHICH 18370000=04000000=
|
|
ACTUALLY PRODUCE CODE AND DEBUGING OUTPUT; 18375000=04001000=
|
|
18380000=04002000=
|
|
COMMENT EMITL EMITS A LIT CALL; 18385000=04002000=
|
|
PROCEDURE EMITL(LITERAL); 18390000=04003000=
|
|
VALUE 18395000=04003000=
|
|
LITERAL; 18400000=04003000=
|
|
REAL 18405000=04003000=
|
|
LITERAL; 18410000=04003000=
|
|
EMIT(0 & LITERAL[11:9:10]); 18415000=04004000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%18420000=04004000=
|
|
18425000=04005000=
|
|
COMMENT EMITO EMIT AN OPERATOR; 18430000=04005000=
|
|
PROCEDURE EMITO(OPERATOR); 18435000=04006000=
|
|
VALUE 18440000=04006000=
|
|
OPERATOR; 18445000=04006000=
|
|
REAL 18450000=04006000=
|
|
OPERATOR; 18455000=04006000=
|
|
EMIT(1 & OPERATOR[11:9:10]); 18460000=04007000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%18465000=04007000=
|
|
18470000=04008000=
|
|
COMMENT EMITC IS PRIMARILY FOR USE BY STRMSTMT TO EMIT CHARACTOR MODE 18475000=04008000=
|
|
OPERATORS. HOWEVER IT ALSO HANDLES DIA, DIB, AND TRB; 18480000=04009000=
|
|
PROCEDURE EMITC(REPEAT, OPERATOR); 18485000=04010000=
|
|
VALUE 18490000=04010000=
|
|
REPEAT, 18495000=04010000=
|
|
OPERATOR; 18500000=04010000=
|
|
REAL 18505000=04011000=
|
|
REPEAT, 18510000=04011000=
|
|
OPERATOR; 18515000=04011000=
|
|
BEGIN 18520000=04012000=
|
|
IF REPEAT >= 64 THEN 18525000=04013000=
|
|
FLAG(268); 18530000=04013000=
|
|
EMIT(OPERATOR & REPEAT[11:5:6]) 18535000=04014000=
|
|
END EMITC; 18540000=04014000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%18545000=04014000=
|
|
18550000=04015000=
|
|
COMMENT EMITV EMITS AN OPERAND CALL. IF THE ADDRESS IS FOR THE SECOND 18555000=04015000=
|
|
HALF OF THE PRT, THEN IT ALSO EMITS A PRTE; 18560000=04016000=
|
|
PROCEDURE EMITV(ADDRESS); 18565000=04017000=
|
|
VALUE 18570000=04017000=
|
|
ADDRESS; 18575000=04017000=
|
|
REAL 18580000=04017000=
|
|
ADDRESS; 18585000=04017000=
|
|
BEGIN 18590000=04018000=
|
|
IF ADDRESS > 1023 THEN 18595000=04018000=
|
|
EMITO(PRTE); 18600000=04018000=
|
|
EMIT(2 & ADDRESS[11:9:10]) 18605000=04019000=
|
|
END EMITV; 18610000=04019000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%18615000=04019000=
|
|
18620000=04020000=
|
|
COMMENT EMITN EMITS A DESCRIPTOR CALL. IF THE ADDRESS IS FOR THE 18625000=04020000=
|
|
SECOND HALF OF THE PRT, THEN IT ALSO EMITS A PRTE; 18630000=04021000=
|
|
PROCEDURE EMITN(ADDRESS); 18635000=04022000=
|
|
VALUE 18640000=04022000=
|
|
ADDRESS; 18645000=04022000=
|
|
REAL 18650000=04022000=
|
|
ADDRESS; 18655000=04022000=
|
|
BEGIN 18660000=04023000=
|
|
IF ADDRESS > 1023 THEN 18665000=04023000=
|
|
EMITO(PRTE); 18670000=04023000=
|
|
EMIT(3 & ADDRESS[11:9:10]) 18675000=04024000=
|
|
END EMITN; 18680000=04024000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%18685000=04024000=
|
|
18690000=04025000=
|
|
COMMENT EMITPAIR EMITS A LITC ADDRESS FOLLOWED BY OPERATOR. IF THE 18695000=04025000=
|
|
ADDRESS IS FOR THE SECOND HALF OF THE PRT, THEN IT ALSO 18700000=04026000=
|
|
EMITS PRTE; 18705000=04027000=
|
|
PROCEDURE EMITPAIR(ADDRESS, OPERATOR); 18710000=04028000=
|
|
VALUE 18715000=04029000=
|
|
ADDRESS, 18720000=04029000=
|
|
OPERATOR; 18725000=04029000=
|
|
REAL 18730000=04030000=
|
|
ADDRESS, 18735000=04030000=
|
|
OPERATOR; 18740000=04030000=
|
|
BEGIN 18745000=04031000=
|
|
EMITL(ADDRESS); 18750000=04032000=
|
|
IF ADDRESS > 1023 THEN 18755000=04033000=
|
|
EMITO(PRTE); 18760000=04033000=
|
|
EMITO(OPERATOR) 18765000=04034000=
|
|
END EMITPAIR; 18770000=04034000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%18775000=04034000=
|
|
18780000=04080000=
|
|
COMMENT ADJUST ADJUST L TO THE BEGINING OF A WORD AND FILLS IN THE 18785000=04080000=
|
|
INERVENING SPACE WITH NOPS. IT CHECKS STREAMTOG TO DECIDE 18790000=04081000=
|
|
WHICH SORT OF NOP TO USE; 18795000=04082000=
|
|
PROCEDURE ADJUST; 18800000=04083000=
|
|
BEGIN 18805000=04084000=
|
|
WHILE L.[1:2] ^= 0 DO 18810000=04086000=
|
|
EMIT(45); 18815000=04086000=
|
|
END ADJUST; 18820000=04087000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%18825000=04087000=
|
|
PROCEDURE EMITLNG; 18830000=04098000=
|
|
BEGIN 18835000=04099000=
|
|
LABEL 18840000=04099000=
|
|
E; 18845000=04099000=
|
|
IF NOT LINKTOG THEN 18850000=04100000=
|
|
GO TO E; 18855000=04100000=
|
|
COMMENT GO TO E IF LAST THING IS A LINK; 18860000=04101000=
|
|
IF GET(L) ^= 0 THEN 18865000=04102000=
|
|
GO TO E; 18870000=04102000=
|
|
COMMENT EITHER LAST EXPRESSION WAS CONDITIONAL OR THERE IS NO 18875000=04103000=
|
|
LNG OR RELATIONAL OPERATOR; 18880000=04104000=
|
|
IF GT1:= GET(L-1) = 77 THEN 18885000=04105000=
|
|
L:= L-1 18890000=04106000=
|
|
COMMENT LAST THING WAS AN LNG - SO CANCEL IT; 18895000=04106000=
|
|
ELSE 18900000=04107000=
|
|
IF GT1.[5:6] = 21 AND GT1.[10:2] = 0 THEN % AHA 18905000=04107000=
|
|
COMMENT LAST THING WAS A RELATIONAL; 18910000=04108000=
|
|
BEGIN 18915000=04109000=
|
|
L:= L-1; 18920000=04109000=
|
|
EMITO(REAL(BOOLEAN(GT1.[11:10]) EQV 18925000=04111000=
|
|
BOOLEAN(IF GT1.[7:2] = 0 THEN 511 ELSE 463))) 18930000=04111000=
|
|
COMMENT NEGATE THE RELATIONAL; 18935000=04111000=
|
|
END 18940000=04112000=
|
|
ELSE 18945000=04112000=
|
|
E: EMITO(LNG) 18950000=04112000=
|
|
END EMITLNG; 18955000=04112000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%18960000=04112000=
|
|
COMMENT EMITB EMITS A BRANCH OPERATOR AND ITS ASSOCIATED NUMBER; 18965000=04113000=
|
|
PROCEDURE EMITB(BRANCH, FROM, TOWARDS); 18970000=04114000=
|
|
VALUE 18975000=04115000=
|
|
BRANCH, 18980000=04115000=
|
|
FROM, 18985000=04115000=
|
|
TOWARDS; 18990000=04115000=
|
|
REAL 18995000=04116000=
|
|
BRANCH, 19000000=04116000=
|
|
FROM, 19005000=04116000=
|
|
TOWARDS; 19010000=04116000=
|
|
BEGIN 19015000=04117000=
|
|
INTEGER 19020000=04118000=
|
|
TL; 19025000=04118000=
|
|
TL:= L; 19030000=04119000=
|
|
IF TOWARDS > FOULED THEN 19035000=04119500=
|
|
FOULED:= TOWARDS; 19040000=04119500=
|
|
L:= FROM-2; 19045000=04120000=
|
|
GT1:= TOWARDS-FROM; 19050000=04120100=
|
|
IF TOWARDS.[1:2] = 0 THEN 19055000=04120300=
|
|
BEGIN 19060000=04120300=
|
|
BRANCH:= BRANCH & 1[8:0:1]; 19065000=04120400=
|
|
GT1:= TOWARDS DIV 4-(FROM-1) DIV 4 19070000=04120500=
|
|
END; 19075000=04120500=
|
|
EMITNUM(ABS(GT1)); 19080000=04121000=
|
|
EMITO(BRANCH & (REAL(GT1 >= 0)+1)[5:1:2]); 19085000=04122000=
|
|
L:= TL 19090000=04125000=
|
|
END EMITB; 19095000=04125000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%19100000=04125000=
|
|
COMMENT DEBUGWORD FORMATS TWO FIELDS FOR DEBUGGING OUTPUT IN 19105000=04126000=
|
|
OCTAL, NAMELY : 19110000=04127000=
|
|
1. 4 CHARACTERS FOR THE L REGISTER. 19115000=04128000=
|
|
2.16 CHARACTERS FOR THE WORD BEING EMITTED. ; 19120000=04129000=
|
|
PROCEDURE DEBUGWORD(SEQ, CODE, FEIL); 19121000=04130000=
|
|
VALUE 19122000=04130000=
|
|
SEQ, CODE; 19124000=04130000=
|
|
REAL 19126000
|
|
SEQ, CODE; 19128000
|
|
ARRAY 19130000
|
|
FEIL[0]; 19132000
|
|
BEGIN 19145000=04131000=
|
|
STREAMLOCALS; 19146000
|
|
STREAMSETDI(FEIL, 0); 19148000=04132000=
|
|
STREAMSETLOCSI(SEQ); 19150000=04132000=
|
|
STREAMSKIPSI(+4); 19152000=04132000=
|
|
STREAMTRANSFERCHR(4); 19154000=04132000=
|
|
STREAMTRANSFERLIT(2, 6" "); 19156000=04133000=
|
|
STREAMSETLOCSI(CODE); 19158000=04134000=
|
|
THRU 16 DO 19180000=04136000=
|
|
BEGIN 19180200
|
|
STREAMSETDB(3, 0); 19180400
|
|
THRU 3 DO 19180600
|
|
BEGIN 19180800
|
|
IF STREAMTESTSB THEN 19181000
|
|
STREAMSETDB(1, 1) 19181200
|
|
ELSE 19181400
|
|
STREAMSETDB(1, 0); 19181600
|
|
19181800
|
|
STREAMSKIPSB(1); 19182000
|
|
END 19182200
|
|
END; 19182400
|
|
19182600
|
|
THRU 29 DO 19185000=04137000=
|
|
BEGIN 19186000
|
|
STREAMSMEARLIT(2, 6" ") 19187000
|
|
END; 19188000
|
|
END; 19190000=04138000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%19192000
|
|
COMMENT EMITWORD PLACES THE PARAMETER,"WORD",INTO EDOC. IF 19195000=04139000=
|
|
DEBUGGING IS REQUIRED, "L" AND "WORD" ARE OUTPUT ON 19200000=04140000=
|
|
THE PRINTER FILE IN OCTAL FORMAT. ; 19205000=04141000=
|
|
PROCEDURE EMITWORD(WORD); 19210000=04142000=
|
|
VALUE 19215000=04142000=
|
|
WORD; 19220000=04142000=
|
|
REAL 19225000=04142000=
|
|
WORD; 19230000=04142000=
|
|
BEGIN 19235000=04143000=
|
|
ADJUST; 19240000=04144000=
|
|
IF L >= 4088 THEN 19245000=04145000=
|
|
BEGIN 19250000=04145000=
|
|
ERR(200); 19255000=04145000=
|
|
L:= 0; 19260000=04145000=
|
|
END 19265000=04146000=
|
|
ELSE 19270000=04146000=
|
|
BEGIN 19275000=04146000=
|
|
CODE[L DIV 4+1]:= WORD; 19280000=04147000=
|
|
IF DEBUGTOG THEN 19285000=04148000=
|
|
BEGIN 19290000=04149000=
|
|
DEBUGWORD(B2D(L), WORD, LIN); 19295000=04149000=
|
|
WRITELINE 19300000=04150000=
|
|
END; 19305000=04150000=
|
|
FOULED:= L:= L+4; 19310000=04151000=
|
|
END 19315000=04152000=
|
|
END EMITWORD; 19320000=04152000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%19325000=04152000=
|
|
COMMENT CONSTANTCLEAN IS CALLED AFTER AN UNCONDITIONAL BRANCH HAS 19330000=04153000=
|
|
BEEN EMITTED. IF ANY CONSTANTS HAVE BEEN ACCUMULATED BY 19335000=04154000=
|
|
EMITNUM IN INFO[0,*], CONSTANTCLEAN WILL FIX THE CHAIN 19340000=04155000=
|
|
OF C-RELATIVE OPDC S LEFT BY EMITNUM. IF C-RELATIVE 19345000=04156000=
|
|
ADDRESSING IS IMPOSSIBLE (I.E. THE ADDRESS 19350000=04157000=
|
|
IF GREATER THAN 127 WORDS) THEN THE CONSTANT ALONG WITH 19355000=04158000=
|
|
THE 1ST LINK OF THE OPDC CHAIN IS ENTERED IN INFO. 19360000=04159000=
|
|
AT PURGE TIME THE REMAINING OPDC S ARE EMITTED WITH 19365000=04160000=
|
|
F -RELATIVE ADDRESSING AND CODE EMITTED TO STORE THE 19370000=04161000=
|
|
CONSTANTS INTO THE PROPER F-RELATIVE CELLS. ; 19375000=04162000=
|
|
PROCEDURE CONSTANTCLEAN; 19380000=04163000=
|
|
IF MRCLEAN THEN 19385000=04164000=
|
|
BEGIN 19390000=04165000=
|
|
INTEGER 19395000=04166000=
|
|
J, 19400000=04166000=
|
|
TEMPL, 19405000=04166000=
|
|
D, 19410000=04166000=
|
|
LINK; 19415000=04166000=
|
|
BOOLEAN 19420000=04167000=
|
|
CREL; 19425000=04167000=
|
|
LABEL 19430000=04168000=
|
|
ALLTHU; 19435000=04168000=
|
|
FOR J:= 1 STEP 2 UNTIL LASTENTRY DO 19440000=04170000=
|
|
BEGIN 19445000=04171000=
|
|
ADJUST; 19450000=04172000=
|
|
TEMPL:= L; 19455000=04172000=
|
|
L:= INFO[0, 255-J+1]; 19460000=04172000=
|
|
CREL:= FALSE; 19465000=04173000=
|
|
DO BEGIN 19470000=04174000=
|
|
IF D:= (TEMPL-L+3) DIV 4 >= 128 THEN 19475000=04175000=
|
|
IF MODE ^= 0 THEN 19480000=04175500=
|
|
BEGIN 19485000=04176000=
|
|
FLAG(50); 19490000=04176000=
|
|
GO TO ALLTHU 19495000=04176000=
|
|
END; 19500000=04176000=
|
|
LINK:= GET(L); 19505000=04182000=
|
|
CREL:= TRUE; 19510000=04183000=
|
|
IF MODE ^= 0 THEN 19515000=04184000=
|
|
EMITV(D+768) 19520000=04184000=
|
|
ELSE 19525000=04184000=
|
|
EMITV(REAL(TEMPL >= 2048)*1024+TEMPL DIV 4); 19530000=04184500=
|
|
END 19535000=04185000=
|
|
UNTIL L:= LINK = 4095; 19540000=04185000=
|
|
ALLTHU: 19545000=04186000=
|
|
L:= TEMPL; 19550000=04186000=
|
|
IF CREL THEN 19555000=04187000=
|
|
EMITWORD(INFO[0, 255-J]); 19560000=04187000=
|
|
END; 19565000=04188000=
|
|
LASTENTRY:= 0; 19570000=04189000=
|
|
END; 19575000=04190000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%19580000=04190000=
|
|
COMMENT EMITNUM HANDLES THE EMISSION OF CODE FOR CONSTANTS,BOTH 19585000=04191000=
|
|
EXPLICIT AND IMPLICIT. IN EVERY CASE,EMITNUM WILL 19590000=04192000=
|
|
PRODUCE CODE TO GET THE DESIRED CONSTANT ON TOP OF 19595000=04193000=
|
|
THE STACK. IF THE NUMBER IS A LITERAL A SIMPLE LITC 19600000=04194000=
|
|
SYLLABLE IS PRODUCED. HOWEVER,NON-LITERALS ARE KEPT 19605000=04195000=
|
|
IN THE ZERO-TH ROW OF INFO WITH THE SYLLABLE 19610000=04196000=
|
|
POSITION,L. THE FIRST EMITNUM ON A PARTICULAR 19615000=04197000=
|
|
CONSTANT CAUSES THE VALUES OF L AND THE CONSTANT 19620000=04198000=
|
|
TO BE STORED IN INFO[0,*] (NOTE:ITEMS ARE STORED 19625000=04199000=
|
|
IN REVERSE STARTING WITH INFO[0,255],ETC.). THEN 19630000=04200000=
|
|
ITS THE JOB OF CONSTANTCLEAN TO EMIT THE ACTUAL 19635000=04201000=
|
|
OPDC (SEE CONSTANTCLEAN PROCEDURE FOR DETAILS) ; 19640000=04202000=
|
|
PROCEDURE EMITNUM(C); 19645000=04203000=
|
|
VALUE 19650000=04203000=
|
|
C; 19655000=04203000=
|
|
REAL 19660000=04203000=
|
|
C; 19665000=04203000=
|
|
BEGIN 19670000=04204000=
|
|
LABEL 19675000=04204000=
|
|
FINISHED, 19680000=04204000=
|
|
FOUND; 19685000=04204000=
|
|
REAL 19690000=04204000=
|
|
N; 19695000=04204000=
|
|
IF C.[46:37] = 0 THEN 19700000=04205000=
|
|
EMITL(C) 19705000=04206000=
|
|
ELSE 19710000=04206000=
|
|
BEGIN 19715000=04207000=
|
|
FOULED:= L; 19720000=04207500=
|
|
FOR N:= 1 STEP 2 UNTIL LASTENTRY DO 19725000=04208000=
|
|
IF INFO[0, 255-N] = C THEN 19730000=04209000=
|
|
GO TO FOUND; 19735000=04209000=
|
|
INFO[0, 255-LASTENTRY]:= L; 19740000=04210000=
|
|
INFO[0, 255-LASTENTRY-1]:= C; 19745000=04211000=
|
|
EMITN(1023); 19750000=04212000=
|
|
IF MODE = 0 THEN 19755000=04212100=
|
|
EMITO(NOP); 19760000=04212100=
|
|
LINKTOG:= FALSE; 19765000=04213000=
|
|
IF LASTENTRY:= LASTENTRY+2 >= 128 THEN 19770000=04214000=
|
|
BEGIN 19775000=04215000=
|
|
C:= BUMPL; 19780000=04216000=
|
|
CONSTANTCLEAN; 19785000=04217000=
|
|
EMITB(BFW, C, L); 19790000=04218000=
|
|
END; 19795000=04219000=
|
|
GO TO FINISHED; 19800000=04220000=
|
|
FOUND: 19805000=04221000=
|
|
EMIT(INFO[0, 255-N+1]); 19810000=04221000=
|
|
LINKTOG:= FALSE; 19815000=04222000=
|
|
INFO[0, 255-N+1]:= L-1; 19820000=04223000=
|
|
IF MODE = 0 THEN 19825000=04223100=
|
|
EMITO(NOP); 19830000=04223100=
|
|
END; 19835000=04224000=
|
|
FINISHED: 19840000=04225000=
|
|
END EMITNUM; 19845000=04225000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%19850000=04225000=
|
|
COMMENT SEARCH PERFORMS A BINARY SEARCH ON THE COP AND WOP 19855000=04226000=
|
|
ARRAYS, GIVEN THE OPERATOR BITS SEARCH YIELDS THE BCD 19860000=04227000=
|
|
MNEUMONIC FOR THAT OPERATOR. IF THE OPERATOR CANNOT 19865000=04228000=
|
|
BE FOUND SEARCH YIELDS BLANKS. 19870000=04229000=
|
|
NOTE: DIA,DIB,TRB ARE RETURNED AS BLANKS. ; 19875000=04230000=
|
|
ALPHA PROCEDURE SEARCH(Q, KEY); 19880000=04231000=
|
|
VALUE 19885000=04231000=
|
|
KEY; 19890000=04231000=
|
|
ARRAY 19895000=04231000=
|
|
Q[0]; 19900000=04231000=
|
|
REAL 19905000=04231000=
|
|
KEY; 19910000=04231000=
|
|
BEGIN 19915000=04232000=
|
|
LABEL 19920000=04232000=
|
|
L; 19925000=04232000=
|
|
COMMENT GT1 AND GT2 ARE INITIALIZED ASSUMMING THAT Q IS ORDERED 19930000=04233000=
|
|
BY PAIRS (ARGUMENT,FUNCTION,ARGUMENT,FUNCTION,ETC.) 19935000=04234000=
|
|
AND THAT THE FIRST ARGUMENT IS IN Q[4]. FURTHERMORE 19940000=04235000=
|
|
THE LENGTH OF Q IS 128. ; 19945000=04236000=
|
|
INTEGER 19950000=04237000=
|
|
N, 19955000=04237000=
|
|
I; 19960000=04237000=
|
|
N:= 64; 19965000=04238000=
|
|
FOR I:= 66 STEP IF Q[I] < KEY THEN 19970000=04239000=
|
|
N 19975000=04239000=
|
|
ELSE 19980000=04239000=
|
|
-N WHILE N:= N DIV 2 >= 1 19985000=04240000=
|
|
DO 19990000=04240000=
|
|
IF Q[I] = KEY THEN 19995000=04241000=
|
|
GO TO L; 20000000=04241000=
|
|
I:= 0; COMMENT ARGUMENT NOT FOUND,SEARCH=Q[1] ; 20005000=04242000=
|
|
L: SEARCH:= Q[I+1]; 20015000=04243000=
|
|
END SEARCH; 20020000=04244000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%20025000=04244000=
|
|
COMMENT B2D CONVERTS THE FOUR LOW ORDER OCTAL DIGITS TO BCD 20030000=04245000=
|
|
CODE ; 20035000=04246000=
|
|
ALPHA PROCEDURE B2D(B); 20040000=04247000=
|
|
VALUE 20045000=04247000=
|
|
B; 20050000=04247000=
|
|
REAL 20055000=04247000=
|
|
B; 20060000=04247000=
|
|
B2D:= 0 & B[2:2:3] & B[8:5:3] & B[14:8:3] & B[20:11:3]; 20065000=04248000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%20070000=04248000=
|
|
COMMENT PACK IS A STREAM PROCEDURE WHICH INSERTS THE SYLLABLE 20075000=04265000=
|
|
INTO THE EDOC ARRAY. THE SPECIFIC ELEMENT OF EDOC 20080000=04266000=
|
|
IS PRECISILY = EDOC[(L DIV 4) DIV 128,(< DIV 4)MOD 128] 20085000=04267000=
|
|
SYLLABLE POSITION=(L MOD 4 ), WHERE L IS THE SYLLABLE 20090000=04268000=
|
|
NUMBER RELATIVE TO THE BEGINNING OF THE SEGMENT; 20095000=04269000=
|
|
DEFINE PACK(WORD, WX, POSITION, SYLLABLE) = 20100000=04270000=
|
|
BEGIN 20120000=04272000=
|
|
WORD[(WX)]:= * & (SYLLABLE)[47-(POSITION)*12:12]; 20125000=04273000=
|
|
END PACK #; 20155000=04276000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%20160000=04277000=
|
|
COMMENT DEBUG PRINTS OUT OBJECT CODE IF "DEBUGN" IS SET; 20165000=04277000=
|
|
PROCEDURE DEBUG(S); 20170000=04277500=
|
|
VALUE 20175000=04277500=
|
|
S; 20180000=04277500=
|
|
REAL 20185000=04277500=
|
|
S; 20190000=04277500=
|
|
BEGIN 20195000=04278000=
|
|
REAL 20200000=04278000=
|
|
T1; 20205000=04278000=
|
|
IF SINGLTOG THEN 20210000=04278500=
|
|
WRITE(LINE, BUG, BIC2EBC(B2D(L)), 20215000=04282500=
|
|
BIC2EBC(IF STREAMTOG THEN SEARCH(COP, S.[5:6]) 20220000=04282500=
|
|
ELSE IF T1:= S.[1:2] = 1 THEN SEARCH(WOP, S.[11:10]) 20222000
|
|
ELSE WOP[T1]), 20225000=04282500=
|
|
BIC2EBC(IF STREAMTOG THEN B2D(S.[11:6]) 20230000=04282500=
|
|
ELSE IF T1 = 1 THEN WOP[1] ELSE B2D(S.[11:10])), 20235000=04282500=
|
|
BIC2EBC(B2D(S))) 20236000
|
|
ELSE 20240000=04282500=
|
|
WRITE(LINE, BUG, BIC2EBC(B2D(L)), 20245000=04285500=
|
|
BIC2EBC(IF STREAMTOG THEN SEARCH(COP, S.[5:6]) 20250000=04285500=
|
|
ELSE IF T1:= S.[1:2] = 1 THEN SEARCH(WOP, S.[11:10]) 20255000=04285500=
|
|
ELSE WOP[T1]), 20260000=04285500=
|
|
BIC2EBC(IF STREAMTOG THEN B2D(S.[11:6]) 20262000
|
|
ELSE IF T1 = 1 THEN WOP[1] ELSE B2D(S.[11:10])), 20264000
|
|
BIC2EBC(B2D(S))); 20265000=04285500=
|
|
END DEBUG; 20270000=04286000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%20275000=04286000=
|
|
COMMENT EMIT PLACES SYLLABLES INTO EDOC, CALLS DEBUG FOR 20280000=04288000=
|
|
DEBUGGING OUTPUT ON THE PRINTER, AND CHECKS FOR SEGMENTS 20285000=04289000=
|
|
GREATER THAN 4093 SYLLABLES. ; 20290000=04290000=
|
|
PROCEDURE EMIT(S); 20295000=04291000=
|
|
VALUE 20300000=04291000=
|
|
S; 20305000=04291000=
|
|
REAL 20310000=04291000=
|
|
S; 20315000=04291000=
|
|
BEGIN 20320000=04292000=
|
|
IF L < 4088 THEN 20325000=04293000=
|
|
BEGIN 20330000=04294000=
|
|
LINKTOG:= TRUE; 20335000=04295000=
|
|
PACK(CODE, L DIV 4+1, L.[1:2], S); 20340000=04296000=
|
|
IF DEBUGTOG THEN 20345000=04297000=
|
|
DEBUG(S); 20350000=04297000=
|
|
L:= L+1; 20355000=04298000=
|
|
END 20360000=04300000=
|
|
ELSE 20365000=04300000=
|
|
BEGIN 20370000=04300000=
|
|
ERROR(200); 20375000=04300000=
|
|
L:= 1; 20380000=04300000=
|
|
END; 20385000=04300000=
|
|
COMMENT 200 EMIT - SEGMENT GREATER THAN 4093 SYLLABLES *; 20390000=04301000=
|
|
END EMIT; 20395000=04302000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%20400000=04302000=
|
|
COMMENT EMITD EMITS THE DIA,DIB,TRB SEQUENCE OF CODE. THE 20405000=04305000=
|
|
PREVIOUS SETTING OF THE G-H AND K-V REGISTERS IS COMPARED 20410000=04306000=
|
|
THE CURRENT . IF THE G-H,K-V OR BOTH ARE ALREADY SET THEN 20415000=04307000=
|
|
THE APPROIATE SYLLABLE(S) ARE OMITTED 20420000=04308000=
|
|
IF 0 BITS ARE TO BE TRANSFERED THEN NO SYLLABLES ARE 20425000=04309000=
|
|
EMITTED ; 20430000=04310000=
|
|
PROCEDURE EMITD(A, B, T); 20435000=04311000=
|
|
VALUE 20440000=04311000=
|
|
A, 20445000=04311000=
|
|
B, 20450000=04311000=
|
|
T; 20455000=04311000=
|
|
INTEGER 20460000=04311000=
|
|
A, 20465000=04311000=
|
|
B, 20470000=04311000=
|
|
T; 20475000=04311000=
|
|
BEGIN 20480000=04311010=
|
|
LABEL 20485000=04311010=
|
|
EXIT, 20490000=04311010=
|
|
NORMAL; 20495000=04311010=
|
|
REAL 20500000=04311020=
|
|
Q; 20505000=04311020=
|
|
IF T = 15 THEN 20510000=04311030=
|
|
BEGIN 20515000=04311040=
|
|
IF A = 33 THEN 20520000=04311050=
|
|
Q:= 512 20525000=04311060=
|
|
ELSE 20530000=04311060=
|
|
IF A ^= 18 THEN 20535000=04311060=
|
|
GO TO NORMAL; 20540000=04311060=
|
|
IF B = 18 THEN 20545000=04311070=
|
|
Q:= Q+256 20550000=04311080=
|
|
ELSE 20555000=04311080=
|
|
IF B ^= 33 THEN 20560000=04311080=
|
|
GO TO NORMAL; 20565000=04311080=
|
|
EMITO(Q+197); COMMENT -- THIS GETS OUT FIXED FIELD; 20570000=04311090=
|
|
GO TO EXIT; 20580000=04311100=
|
|
END; 20585000=04311110=
|
|
NORMAL: 20590000=04312000=
|
|
IF T ^= 0 THEN 20595000=04312000=
|
|
BEGIN 20600000=04313000=
|
|
EMIT(((DIALA:= A) DIV 6)*512+(A:= A MOD 6)*64+DIA); 20605000=04315000=
|
|
EMIT(((DIALB:= B) DIV 6)*512+(B:= B MOD 6)*64+DIB); 20610000=04317000=
|
|
EMIT(TRB+64*T); 20615000=04318000=
|
|
END EMITD; 20620000=04322000=
|
|
EXIT: 20625000=04322100=
|
|
END; 20630000=04322100=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%20635000=04322100=
|
|
PROCEDURE EMITI(E, A, B); 20640000=04500000=
|
|
VALUE 20645000=04500000=
|
|
E, 20650000=04500000=
|
|
A, 20655000=04500000=
|
|
B; 20660000=04500000=
|
|
REAL 20665000=04500000=
|
|
E, 20670000=04500000=
|
|
A, 20675000=04500000=
|
|
B; 20680000=04500000=
|
|
BEGIN 20685000=04501000=
|
|
LABEL 20690000=04501000=
|
|
EXIT, 20695000=04501000=
|
|
IZ; 20700000=04501000=
|
|
INTEGER 20705000=04502000=
|
|
S, 20710000=04502000=
|
|
T1, 20715000=04502000=
|
|
T2; 20720000=04502000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%20722000
|
|
PROCEDURE EMIT21(E, B); 20725000=04503000=
|
|
VALUE 20730000=04503000=
|
|
E, 20735000=04503000=
|
|
B; 20740000=04503000=
|
|
REAL 20745000=04504000=
|
|
E; 20750000=04504000=
|
|
BOOLEAN 20755000=04505000=
|
|
B; 20760000=04505000=
|
|
BEGIN 20765000=04506000=
|
|
IF E = 0 THEN 20770000=04506000=
|
|
BEGIN 20775000=04507000=
|
|
IF B THEN 20780000=04507000=
|
|
EMITO(XCH); 20785000=04507000=
|
|
END 20790000=04508000=
|
|
ELSE 20795000=04508000=
|
|
BEGIN 20800000=04508000=
|
|
GT1:= E.ADDRESS; 20805000=04508000=
|
|
IF E:= E.CLASS <= INTID THEN 20810000=04509000=
|
|
EMITV(GT1) 20815000=04522000=
|
|
ELSE 20820000=04522000=
|
|
IF E <= INTARRAYID THEN 20825000=04522000=
|
|
EMITPAIR(GT1, LOD) 20830000=04523000=
|
|
ELSE 20835000=04523000=
|
|
EMITN(GT1) 20840000=04525000=
|
|
END 20845000=04526000=
|
|
END; 20850000=04526000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%20855000=04526000=
|
|
IF B = 0 THEN 20860000=04526100=
|
|
BEGIN 20865000=04526200=
|
|
EMIT21(E, FALSE); 20870000=04526200=
|
|
GO TO EXIT 20875000=04526200=
|
|
END; 20880000=04526200=
|
|
IF STACKCT ^= 0 THEN 20885000=04527000=
|
|
GO TO IZ; 20890000=04527000=
|
|
IF B = 15 THEN 20895000=04528000=
|
|
BEGIN 20900000=04529000=
|
|
IF A = 33 THEN 20905000=04529000=
|
|
BEGIN 20910000=04530000=
|
|
EMIT21(E, FALSE); 20915000=04530000=
|
|
EMIT(0); 20920000=04531000=
|
|
EMITO(INX); 20925000=04531000=
|
|
GO TO EXIT; 20930000=04532000=
|
|
END; 20935000=04533000=
|
|
IF A = 18 THEN 20940000=04534000=
|
|
BEGIN 20945000=04535000=
|
|
EMIT(0); 20950000=04535000=
|
|
EMIT21(E, TRUE); 20955000=04536000=
|
|
EMITO(197); 20960000=04537000=
|
|
GO TO EXIT; 20965000=04538000=
|
|
END; 20970000=04539000=
|
|
GO TO IZ; 20975000=04540000=
|
|
END; 20980000=04541000=
|
|
IF B <= 10 AND A+B = 48 THEN 20985000=04542000=
|
|
BEGIN 20990000=04543000=
|
|
EMIT21(E, FALSE); 20995000=04543000=
|
|
EMITL(2**B-1); 21000000=04544000=
|
|
EMITO(LND); 21005000=04545000=
|
|
GO TO EXIT; 21010000=04546000=
|
|
END; 21015000=04547000=
|
|
IZ: IF(S:= (48-A-B) MOD 6)+B <= 39 THEN 21020000=04548000=
|
|
BEGIN 21025000=04549000=
|
|
EMIT21(E, FALSE); 21030000=04549000=
|
|
EMIT(T2:= (T1:= A DIV 6)*512+(A MOD 6)*64+DIA); 21035000=04550000=
|
|
EMIT(((A+B-1) DIV 6-T1+1)*512+64*S+37); 21040000=04551000=
|
|
GO TO EXIT; 21045000=04552000=
|
|
END; 21050000=04553000=
|
|
EMIT(0); 21055000=04554000=
|
|
EMIT21(E, TRUE); 21060000=04555000=
|
|
EMITD(A, 48-B, B); 21065000=04556000=
|
|
EXIT: 21070000=04558000=
|
|
END; 21075000=04558000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%21080000=04558000=
|
|
21085000=05000000=
|
|
COMMENT THIS SECTION CONTAINS MISCELLANEOUS SERVICE ROUTINES; 21090000=05000000=
|
|
21095000=05001000=
|
|
COMMENT STEPI AND STEPIT ARE SHORT CALLS ON TABLE; 21100000=05001000=
|
|
PROCEDURE STEPIT; 21105000=05002000=
|
|
ELCLASS:= TABLE(I:= I+1); 21110000=05002000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%21115000=05002000=
|
|
INTEGER PROCEDURE STEPI; 21120000=05003000=
|
|
STEPI:= ELCLASS:= TABLE(I:= I+1); 21125000=05003000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%21130000=05003000=
|
|
21135000=05004000=
|
|
COMMENT TAKE FETCHS A WORD FROM INFO; 21140000=05004000=
|
|
REAL PROCEDURE TAKE(INDEX); 21145000=05005000=
|
|
VALUE 21150000=05005000=
|
|
INDEX; 21155000=05005000=
|
|
INTEGER 21160000=05005000=
|
|
INDEX; 21165000=05005000=
|
|
TAKE:= INFO[INDEX.LINKR, INDEX.LINKC]; 21170000=05006000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%21175000=05006000=
|
|
21180000=05007000=
|
|
COMMENT PUT PLACES A WORD INTO INFO; 21185000=05007000=
|
|
PROCEDURE PUT(WORD, INDEX); 21190000=05008000=
|
|
VALUE 21195000=05008000=
|
|
WORD, 21200000=05008000=
|
|
INDEX; 21205000=05008000=
|
|
REAL 21210000=05008000=
|
|
WORD, 21215000=05008000=
|
|
INDEX; 21220000=05008000=
|
|
INFO[INDEX.LINKR, INDEX.LINKC]:= WORD; 21225000=05009000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%21230000=05009000=
|
|
21235000=05010000=
|
|
COMMENT FLAG FLAGS ERROR MESSAGES, COUNTS THEM AND SUPRESS FUTURE 21240000=05010000=
|
|
ERROR MESSAGES UNTIL THE COMPILER THINKS IT HAS RECOVERED;21245000=05011000=
|
|
PROCEDURE FLAG(ERRNUM); 21250000=05012000=
|
|
VALUE 21255000=05012000=
|
|
ERRNUM; 21260000=05012000=
|
|
REAL % B5500 DIDN'T INTEGERIZE PARAM ON CALL? 21265000=05012000=
|
|
ERRNUM; 21270000=05012000=
|
|
BEGIN 21275000=05013000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%21276000
|
|
COMMENT WRITERROR IS THE STREAM PROCEDURE WHICH ACTUALLY PRODUCES 21280000=05014000=
|
|
THE ERROR MESSAGE ON THE PRINTER; 21285000=05015000=
|
|
PROCEDURE WRITERROR( 21290000=05016000=
|
|
ERRNUM, ACCUM, AX, LINE, COUNT, LSTSEQ, QX); 21292000=05016000=
|
|
VALUE 21294000=05017000=
|
|
ERRNUM, AX, COUNT, QX; 21296000=05017000=
|
|
REAL 21298000
|
|
ERRNUM, AX, COUNT, QX; 21300000
|
|
ARRAY 21302000
|
|
ACCUM, LINE, LSTSEQ[0]; 21304000
|
|
BEGIN 21310000=05018000=
|
|
STREAMLOCALS; 21312000
|
|
STREAMSETDI(LINE, 0); 21315000=05019000=
|
|
STREAMSMEARLIT(44*2, 6" "); COMMENT CLEAR BUFFER; 21320000=05019000=
|
|
STREAMSETSI(LSTSEQ, QX); 21330000=05020000=
|
|
STREAMSKIPSI(-8); 21335000=05020000=
|
|
STREAMTRANSFERWDS(1); 21340000=05020000=
|
|
STREAMSETSILINE, 0); 21345000=05021000=
|
|
STREAMTRANSFERWDS(2); 21350000=05021000=
|
|
STREAMSMEARLIT(4*2, 6"X"); COMMENT SET RIGHT MARGIN FLAG; 21355000=05022000=
|
|
STREAMSETSI(LSTSEQ, QX); 21365000=05023000=
|
|
STREAMSETDI(LSTSEQ, QX); 21370000=05023000=
|
|
STREAMSKIPDI(-8); 21375000=05023000=
|
|
STREAMTRANSFERWDS(1); 21380000=05023000=
|
|
STREAMSETDI(LINE, 0); 21385000=05024000=
|
|
STREAMSKIPDI(+8); COMMENT INDENT MESSAGE; 21390000=05024000=
|
|
STREAMTRANSFERLIT(6, 6"ERROR "); 21400000=05025000=
|
|
STREAMTRANSFERLIT(6, 6"NUMBER "); 21402000
|
|
STREAMSETLOCSI(ERRNUM); 21405000=05026000=
|
|
STREAMTRANSFERDEC(3); COMMENT CONVERT ERRNUM; 21410000=05026000=
|
|
STREAMTRANSFERLIT(4, 6" -- "); 21420000=05027000=
|
|
STREAMSETSI(ACCUM, AX); 21425000=05028000=
|
|
STREAMSKIPSI(+3); 21430000=05028000=
|
|
STREAMTRANSFERCHR(COUNT); 21435000=05028000=
|
|
COMMENT PLACE ALPHA IN BUFFER; 21440000=05029000=
|
|
STREAMSMEARLIT(1, 6".") 21445000=05031000=
|
|
END WRITERROR; 21450000=05031000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%21452000
|
|
IF ERRORTOG THEN % DO NOTHING IF WE SUPPRESS MSSGS. 21455000=05032000=
|
|
BEGIN 21460000=05033000=
|
|
SPECTOG:= FALSE; 21465000=05034000=
|
|
ERRORCOUNT:= ERRORCOUNT+1; COMMENT COUNT ERRORS; 21470000=05035000=
|
|
IF NOT LISTER THEN 21480000=05036000=
|
|
BEGIN 21485000=05037000=
|
|
EDITLINE(LIN, SBUFF, FCR, L DIV 4, L.[1:2], MEDIUM, 0); 21490000=05038000=
|
|
MOVE(1, INFO[LASTSEQROW,*], LASTSEQUENCE, LIN, 12); 21495000=05039500=
|
|
IF NOHEADING THEN 21500000=05039600=
|
|
DATIME; 21505000=05039600=
|
|
WRITELINE; 21510000=05039600=
|
|
END; 21515000=05041000=
|
|
COMMENT PRINT CARDIMAGE IF WE ARE NOT LISTING; 21520000=05042000=
|
|
ACCUM[1]:= Q; COMMENT RESTORE ACCUMULATOR; 21525000=05043000=
|
|
WRITERROR(ERRNUM, ACCUM, 1, LIN[*], Q.[35:6], 21535000=05045000=
|
|
INFO[LASTSEQROW,*], LASTSEQUENCE); 21540000=05045000=
|
|
IF NOT NOHEADING THEN 21545000=05046000=
|
|
WRITELINE; 21550000=05046000=
|
|
ERRORTOG:= FALSE; COMMENT INHIBIT MESSAGES; 21555000=05047000=
|
|
END 22195000=05101000=
|
|
END FLAG; 22200000=05101000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%22205000=05101000=
|
|
LABEL 22210000=05101100=
|
|
ENDOFITALL; 22215000=05101100=
|
|
22220000=05102000=
|
|
COMMENT ERR,IS THE SAME AS FLAG EXCEPT THAT IT MAKES AN ATTEMPT TO 22225000=05102000=
|
|
RECOVER FROM ERROR SITUATIONS BY SEARCHING FOR A 22230000=05103000=
|
|
SEMICOLON, END, OR BEGIN; 22235000=05104000=
|
|
PROCEDURE ERR(ERRNUM); 22240000=05105000=
|
|
VALUE 22245000=05105000=
|
|
ERRNUM; 22250000=05105000=
|
|
INTEGER 22255000=05105000=
|
|
ERRNUM; 22260000=05105000=
|
|
BEGIN 22265000=05106000=
|
|
FLAG(ERRNUM); 22270000=05106000=
|
|
I:= I-1; 22275000=05107000=
|
|
IF ERRNUM = 200 THEN 22280000=05107100=
|
|
MYSELF.STATUS:= VALUE(TERMINATED); % SEGMENT TOO LARGE 22285000=05107100=
|
|
IF ERRNUM = 611 THEN 22290000=05107200=
|
|
MYSELF.STATUS:= VALUE(TERMINATED); % ERRMAX EXCEEDED 22295000=05107200=
|
|
DO 22300000=05108000=
|
|
IF STEPI = BEGINV THEN 22305000=05108000=
|
|
STMT 22310000=05109000=
|
|
UNTIL ELCLASS = ENDV OR ELCLASS = SEMICOLON 22315000=05109000=
|
|
END ERR; 22320000=05109000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%22325000=05109000=
|
|
DEFINE 22330000=05110000=
|
|
ERROR = ERR #; 22335000=05110000=
|
|
COMMENT ERROR IS A SYNONM FOR ERR; 22340000=05110000=
|
|
22345000=05111000=
|
|
COMMENT CHECKER IS A SMALL PROCEDURE THAT CHECKS TO SEE THAT THE 22350000=05111000=
|
|
UPLEVEL ADDRESSING CONVENTIONS ARE OBEYED; 22355000=05112000=
|
|
PROCEDURE CHECKER(ELBATWORD); 22360000=05113000=
|
|
VALUE 22365000=05113000=
|
|
ELBATWORD; 22370000=05113000=
|
|
REAL 22375000=05113000=
|
|
ELBATWORD; 22380000=05113000=
|
|
BEGIN 22385000=05114000=
|
|
IF MODE >= 2 THEN 22390000=05115000=
|
|
IF GT1:= ELBATWORD.LVL >= FRSTLEVEL THEN 22395000=05116000=
|
|
IF GT1 < SUBLEVEL THEN 22400000=05117000=
|
|
IF ELBATWORD.[38:2] ^= 1 THEN 22405000=05119000=
|
|
BEGIN 22410000=05119000=
|
|
FLAG(101); 22415000=05119000=
|
|
ERRORTOG:= TRUE 22420000=05119000=
|
|
END 22425000=05120000=
|
|
END CHECKER; 22430000=05120000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%22435000=05120000=
|
|
COMMENT GIT IS USED TO OBTAIN THE INDEX TO ADDITIONAL INFORMATION 22440000=05121000=
|
|
GIVEN THE LINK TO THE ELBAT WORD; 22445000=05122000=
|
|
INTEGER PROCEDURE GIT(L); 22450000=05123000=
|
|
VALUE 22455000=05123000=
|
|
L; 22460000=05123000=
|
|
REAL 22465000=05123000=
|
|
L; 22470000=05123000=
|
|
GIT:= TAKE(L).INCR+L.LINK; 22475000=05124000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%22480000=05124000=
|
|
22485000=05125000=
|
|
COMMENT GNAT IS USED TO OBTAIN THE PRT ADDRESS OF A GIVEN DESCRIPTOR. 22490000=05125000=
|
|
IF THE ADDRESS HAS NOT BEEN ASSIGNED, THEN IT USES 22495000=05126000=
|
|
GETSPACE TO OBTAIN THE PRT ADDRESS; 22500000=05127000=
|
|
INTEGER PROCEDURE GNAT(L); 22505000=05128000=
|
|
VALUE 22510000=05128000=
|
|
L; 22515000=05128000=
|
|
REAL 22520000=05128000=
|
|
L; 22525000=05128000=
|
|
BEGIN 22530000=05129000=
|
|
REAL 22535000=05130000=
|
|
A; 22540000=05130000=
|
|
IF GNAT:= (A:= TAKE(L)).ADDRESS = 0 THEN 22545000=05132000=
|
|
PUT(A & (GNAT:= GETSPACE(TRUE, L.LINK+1))[31:10:11], L) 22550000=05133000=
|
|
END GNAT; 22555000=05133000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%22560000=05133000=
|
|
REAL PROCEDURE TAKEFRST; 22565000=05188000=
|
|
TAKEFRST:= TAKE(ELBAT[I].LINK+ELBAT[I].INCR); 22570000=05189000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%22575000=05189000=
|
|
22580000=05196000=
|
|
COMMENT STUFFF DIALS THE F-REGISTER INTO THE F-REGISTER FIELD OF A 22585000=05196000=
|
|
DESCRIPTOR. THE DESCRIPTOR REMAINS ON THE TOP OF THE 22590000=05197000=
|
|
STACK; 22595000=05198000=
|
|
PROCEDURE STUFFF(ADDRESS); 22600000=05199000=
|
|
VALUE 22605000=05199000=
|
|
ADDRESS; 22610000=05199000=
|
|
INTEGER 22615000=05199000=
|
|
ADDRESS; 22620000=05199000=
|
|
BEGIN 22625000=05200000=
|
|
EMITPAIR(ADDRESS, LOD); 22630000=05201000=
|
|
EMITN(512); 22635000=05202000=
|
|
EMITD(33, 18, 15) 22640000=05203000=
|
|
END STUFFF; 22645000=05203000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%22650000=05203000=
|
|
22655000=05204000=
|
|
COMMENT LOCAL IS USED TO SEE WHETHER OR NOT A LABEL IS LOCAL TO OUR 22660000=05204000=
|
|
PRESENT CODE; 22665000=05205000=
|
|
BOOLEAN PROCEDURE LOCAL(ELBATWORD); 22670000=05206000=
|
|
VALUE 22675000=05207000=
|
|
ELBATWORD; 22680000=05207000=
|
|
REAL 22685000=05207000=
|
|
ELBATWORD; 22690000=05207000=
|
|
BEGIN 22695000=05208000=
|
|
IF ELBATWORD.LVL = LEVEL AND NOT BOOLEAN(ELBATWORD.FORMAL) THEN 22700000=05209000=
|
|
LOCAL:= TRUE 22705000=05210000=
|
|
END LOCAL; 22710000=05210000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%22715000=05210000=
|
|
22720000=05211000=
|
|
COMMENT PASSFORMAT COMPILES CODE THAT PASSES A FORMAT. TWO ITEMS ARE 22725000=05211000=
|
|
PASSED - THE ARRAY REFERENCING FORMAT TABLE AND THE 22730000=05212000=
|
|
STARTING INDEX. THE ROUTINE HANDLES SUPERFORMATS ALSO; 22735000=05213000=
|
|
PROCEDURE PASSFORMAT; 22740000=05214000=
|
|
BEGIN 22745000=05215000=
|
|
INTEGER 22750000=05215000=
|
|
ADRES; 22755000=05215000=
|
|
CHECKER(ELBAT[I]); 22760000=05216000=
|
|
ADRES:= ELBAT[I].ADDRESS; 22765000=05217000=
|
|
IF BOOLEAN(ELBAT[I].FORMAL) THEN 22770000=05219000=
|
|
BEGIN 22775000=05219000=
|
|
EMITV(ADRES); 22780000=05219000=
|
|
ADRES:= ADRES-1 22785000=05219000=
|
|
END 22790000=05220000=
|
|
ELSE 22795000=05220000=
|
|
BEGIN 22800000=05220000=
|
|
IF TABLE(I) = SUPERFRMTID THEN 22805000=05222000=
|
|
EMITL(TAKEFRST) 22810000=05222000=
|
|
ELSE 22815000=05222000=
|
|
EMITL(ELBAT[I].INCR) 22820000=05223000=
|
|
END; 22825000=05223000=
|
|
IF TABLE(I) = SUPERFRMTID THEN 22830000=05225000=
|
|
BEGIN 22835000=05225000=
|
|
BANA; 22840000=05225000=
|
|
I:= I-1; 22845000=05225000=
|
|
EMITO(SSP); 22850000=05226000=
|
|
EMITO(ADD); 22855000=05226000=
|
|
EMITV(ADRES) 22860000=05226000=
|
|
END; 22865000=05226000=
|
|
EMITPAIR(ADRES, LOD) 22870000=05227000=
|
|
END PASSFORMAT; 22875000=05227000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%22880000=05227000=
|
|
22885000=05228000=
|
|
COMMENT STREAMWORDS EITHER RESERVES OR UNRESERVES STREAM RESERVED 22890000=05228000=
|
|
WORDS - IT COMPLEMENTS THEIR STATE; 22895000=05229000=
|
|
PROCEDURE STREAMWORDS; 22900000=05230000=
|
|
BEGIN 22905000=05231000=
|
|
GT1:= 0; 22910000=05231000=
|
|
DO BEGIN 22915000=05232000=
|
|
INFO[1, GT1].LINK:= 22920000=05233000=
|
|
STACKHEAD[GT2:= (T:= INFO[1, GT1]).ADDRESS]; 22925000=05233000=
|
|
STACKHEAD[GT2]:= T.LINK; 22930000=05234000=
|
|
GT1:= GT1+2; 22935000=05235000=
|
|
END 22940000=05236000=
|
|
UNTIL BOOLEAN(T.FORMAL) 22945000=05236000=
|
|
END STREAMWORDS; 22950000=05236000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%22955000=05236000=
|
|
PROCEDURE PROGDESCBLDR(PRTADR, SAV, SIZE, TYPE); 22960000=05245000=
|
|
VALUE 22965000=05246000=
|
|
PRTADR, 22970000=05246000=
|
|
SAV, 22975000=05246000=
|
|
SIZE, 22980000=05246000=
|
|
TYPE; 22985000=05246000=
|
|
INTEGER 22990000=05247000=
|
|
PRTADR, 22995000=05247000=
|
|
SIZE, 23000000=05247000=
|
|
TYPE; 23005000=05247000=
|
|
BOOLEAN 23010000=05247000=
|
|
SAV; 23015000=05247000=
|
|
BEGIN 23020000=05247500=
|
|
PRTADR:= PRTADR.[9:10]; 23025000=05247500=
|
|
IF SAV THEN 23030000=05248000=
|
|
BEGIN 23035000=05248000=
|
|
PRT[PRTADR]:= (IF TYPE = LDES THEN SIZE ELSE CORADR) & 23040000=05249000=
|
|
SIZE[39:19:10] & TYPE[46:4:5] & 3[41:1:2]; 23045000=05249000=
|
|
IF TYPE ^= LDES THEN 23050000=05250000=
|
|
CORADR:= CORADR+SIZE; 23055000=05250000=
|
|
END 23060000=05252000=
|
|
ELSE 23065000=05252000=
|
|
BEGIN 23070000=05252000=
|
|
PRT[PRTADR]:= 0 & DISKADR[29:14:15] & SIZE[39:9:10] & 23075000=05253000=
|
|
TYPE[46:4:5] 23075100
|
|
& 1[41:1:2]; 23080000=05253000=
|
|
DISKADR:= (SIZE+29) DIV 30+DISKADR; 23085000=05254000=
|
|
END; 23090000=05254500=
|
|
END PROGDESCBLDR; 23095000=05255000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%23100000=05255000=
|
|
23105000=05267000=
|
|
COMMENT DOTSYNTAX ANALYSES THE SYNTAX OF A PARTIAL WORD DESIGNATOR. 23110000=05267000=
|
|
IT REPORTS IF AN ERROR IS FOUND. IT RETURNS WITH THE 23115000=05268000=
|
|
LITERALS INVOLVED; 23120000=05269000=
|
|
BOOLEAN PROCEDURE DOTSYNTAX(FIRST, SECOND); 23125000=05270000=
|
|
INTEGER 23130000=05271000=
|
|
FIRST, 23135000=05271000=
|
|
SECOND; 23140000=05271000=
|
|
BEGIN 23145000=05272000=
|
|
LABEL 23150000=05273000=
|
|
EXIT; 23155000=05273000=
|
|
IF STEPI = LFTBRKET THEN 23160000=05274000=
|
|
IF STEPI = LITNO THEN 23165000=05275000=
|
|
IF STEPI = COLON THEN 23170000=05276000=
|
|
IF STEPI = LITNO THEN 23175000=05277000=
|
|
IF STEPI = RTBRKET THEN 23180000=05278000=
|
|
COMMENT IF TESTS ARE PASSED THEN SYNTAX IS CORRECT; 23185000=05279000=
|
|
IF(FIRST:= ELBAT[I-3].ADDRESS)* 23190000=05281000=
|
|
(SECOND:= ELBAT[I-1].ADDRESS) ^= 0 23195000=05281000=
|
|
THEN 23200000=05281000=
|
|
IF FIRST+SECOND <= 48 THEN 23205000=05282000=
|
|
COMMENT IF TESTS ARE PASSED THEN RANGES OF LITERALS ARE O.K.; 23210000=05283000=
|
|
GO TO EXIT; 23215000=05284000=
|
|
ERR(114); COMMENT ERROR IF SYNTAX OR RANGE FAILS; 23220000=05285000=
|
|
DOTSYNTAX:= TRUE; 23230000=05286000=
|
|
EXIT: 23235000=05286000=
|
|
END DOTSYNTAX; 23240000=05286000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%23245000=05286000=
|
|
BOOLEAN PROCEDURE RANGE(LOWER, UPPER); 23250000=05297000=
|
|
VALUE 23255000=05298000=
|
|
LOWER, 23260000=05298000=
|
|
UPPER; 23265000=05298000=
|
|
REAL 23270000=05299000=
|
|
LOWER, 23275000=05299000=
|
|
UPPER; 23280000=05299000=
|
|
COMMENT RANGE TESTS THE CLASS OF THE ITEM IN ELBAT[I] TO SEE IF 23285000=05300000=
|
|
IT IS GREATER THAN OR EQUAL TO LOWER OR LESS THAN OR EQUAL TO 23290000=05301000=
|
|
UPPER AND SETS RANGE TO TRUE OR FALSE ACCORDINGLY. THE ITEMS 23295000=05302000=
|
|
CLASS MUST BE IN ELCLASS; 23300000=05303000=
|
|
RANGE:= ELCLASS >= LOWER AND ELCLASS <= UPPER; 23305000=05304000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%23310000=05304000=
|
|
23315000=05305000=
|
|
COMMENT GET OBTAINS A SYLLABLE FROM EDOC, THE ARRAY INTO WHICH CODE IS 23320000=05305000=
|
|
EMITTED; 23325000=05306000=
|
|
INTEGER PROCEDURE GET(L); 23330000=05307000=
|
|
VALUE 23335000=05307000=
|
|
L; 23340000=05307000=
|
|
REAL 23345000=05307000=
|
|
L; 23350000=05307000=
|
|
BEGIN 23355000=05308000=
|
|
GET:= CODE[L DIV 4+1].[47-(L.[1:2])*12:12]; 23420000=05312000=
|
|
END GET; 23425000=05312000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%23430000=05312000=
|
|
23435000=05313000=
|
|
COMMENT CALL SWITCH PERFORMS THE FINAL MESS OF GETTING A PROPER DE- 23440000=05313000=
|
|
SCRIPTOR TO THE TOP OF THE STACK; 23445000=05314000=
|
|
PROCEDURE CALLSWITCH(H); 23450000=05315000=
|
|
VALUE 23455000=05315000=
|
|
H; 23460000=05315000=
|
|
REAL 23465000=05315000=
|
|
H; 23470000=05315000=
|
|
BEGIN 23475000=05316000=
|
|
EMITV(GNAT(H)); 23480000=05316000=
|
|
EMITO(PRTE); 23485000=05316000=
|
|
EMITO(LOD) 23490000=05316000=
|
|
END CALLSWITCH; 23495000=05316000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%23500000=05316000=
|
|
PROCEDURE WRITEPRT(PORS, N, GS); 23505000=05325010=
|
|
VALUE 23510000=05325010=
|
|
PORS, 23515000=05325010=
|
|
N, 23520000=05325010=
|
|
GS; 23525000=05325010=
|
|
INTEGER 23530000=05325010=
|
|
PORS, 23535000=05325010=
|
|
N, 23540000=05325010=
|
|
GS; 23545000=05325010=
|
|
BEGIN 23550000=05325020=
|
|
LABEL 23555000=05325030=
|
|
EXIT; 23560000=05325030=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%23562000
|
|
PROCEDURE FILLIT(LIN, PORS, CELL, N, ID, IDX); 23565000=05325040=
|
|
VALUE 23566000=05325050=
|
|
PORS, CELL, N, IDX; 23568000=05325050=
|
|
ARRAY 23570000
|
|
LIN, ID[0]; 23572000
|
|
REAL PORS, CELL, N, IDX; 23574000
|
|
BEGIN 23590000=05325060=
|
|
STREAMLOCALS; 23592000
|
|
REAL 23595000=05325070=
|
|
COUNT; 23596000
|
|
LABEL 23600000=05325080=
|
|
M0, 23605000=05325080=
|
|
M1, 23610000=05325080=
|
|
M2, 23615000=05325080=
|
|
M3, 23620000=05325080=
|
|
M4, 23625000=05325080=
|
|
M5, 23630000=05325080=
|
|
M6, 23635000=05325080=
|
|
M7, 23640000=05325080=
|
|
XIT, 23645000=05325080=
|
|
JUMPOUT; 23646000
|
|
23648000
|
|
STREAMSETLOCSI(PORS); 23650000=05325090=
|
|
STREAMSKIPSI(+3); 23655000=05325090=
|
|
STREAMSETDI(LIN, 0); % "PRT" OR "STACK". 23660000=05325090=
|
|
IF STREAMSCEQL(6"P") THEN 23665000=05325100=
|
|
BEGIN 23670000=05325110=
|
|
STREAMTRANSFERCHR(3); 23675000=05325110=
|
|
STREAMSMEARLIT(1, 6"("); 23680000=05325110=
|
|
END 23685000=05325120=
|
|
ELSE 23690000=05325120=
|
|
BEGIN 23695000=05325120=
|
|
STREAMTRANSFERCHR(5); 23700000=05325130=
|
|
STREAMSMEARLIT(1, 6"("); 23705000=05325130=
|
|
STREAMSETLOCSI(CELL); 23710000=05325130=
|
|
STREAMSKIPSI(+5); 23715000=05325130=
|
|
IF STREAMSCGEQ(6"6") THEN 23720000=05325140=
|
|
STREAMTRANSFERLIT(2, 6"F-") 23725000=05325140=
|
|
ELSE 23730000=05325140=
|
|
STREAMTRANSFERLIT(2, 6"F+"); 23735000=05325140=
|
|
23736000
|
|
COUNT:= STREAMGETDI; 23740000=05325150=
|
|
STREAMSETLOCDI(CELL); 23745000=05325150=
|
|
STREAMSKIPDI(+4); 23750000=05325150=
|
|
STREAMSETDB(11, 0); 23755000=05325160=
|
|
CELL:= STREAMTEMPD[0]; 23756000
|
|
STREAMSETDI(LIN, COUNT); 23760000=05325160=
|
|
END; 23765000=05325170=
|
|
23766000
|
|
STREAMSETLOCSI(CELL); 23770000=05325180=
|
|
STREAMSKIPSI(+4); 23775000=05325180=
|
|
TALLY:= 4; % LOCATION. 23780000=05325180=
|
|
THRU 3 DO 23785000=05325190=
|
|
BEGIN 23786000
|
|
IF STREAMSCEQL(6"0") THEN % DONT PRINT LEADING ZEROES. 23788000
|
|
BEGIN 23790000=05325200=
|
|
STREAMSKIPSI(+1); 23792000
|
|
STREAMINCTALLY(+63); % DECREMENT TALLY 23794000
|
|
END 23795000=05325200=
|
|
ELSE 23796000
|
|
GO JUMPOUT 23797000=05325200=
|
|
END; 23798000
|
|
23800000
|
|
JUMPOUT: 23802000
|
|
COUNT:= TALLY; 23805000=05325210=
|
|
STREAMTRANSFERCHR(COUNT); 23810000=05325210=
|
|
TALLY:= 0; 23815000=05325210=
|
|
COUNT:= TALLY; 23820000=05325210=
|
|
STREAMTRANSFERLIT(4, 6") = "); 23825000=05325220=
|
|
CELL:= STREAMGETDI; % SAVE OUR PLACE. 23830000=05325220=
|
|
GO TO CASE N OF ( 23835000=05325230=
|
|
M0, 23840000=05325240=
|
|
M1, 23845000=05325250=
|
|
M2, 23850000=05325260=
|
|
M3, 23855000=05325270=
|
|
M4, 23860000=05325280=
|
|
M5, 23865000=05325290=
|
|
M6, 23870000=05325300=
|
|
M7); 23875000=05325310=
|
|
M0: STREAMSETSI(ID, IDX); 23880000=05325320=
|
|
STREAMSKIPSI(+2); 23885000=05325320=
|
|
STREAMSETLOCDI(COUNT); 23890000=05325320=
|
|
STREAMSKIPDI(+7); 23895000=05325330=
|
|
STREAMTRANSFERCHR(1); 23900000=05325330=
|
|
COUNT:= STREAMTEMPD[0]; 23902000
|
|
STREAMSETDI(LIN, CELL); 23905000=05325330=
|
|
STREAMTRANSFERCHR(COUNT); 23910000=05325330=
|
|
GO XIT; 23915000=05325340=
|
|
M1: STREAMSETDI(LIN, CELL); 23920000=05325330=
|
|
STREAMTRANSFERLIT(8, 6"*TEMPORA"); 23925000=05325350=
|
|
STREAMTRANSFERLIT(8, 6"RY STORA"); 23926000
|
|
STREAMTRANSFERLIT(3, 6"GE*"); 23928000
|
|
GO XIT; 23930000=05325350=
|
|
M2: STREAMSETDI(LIN, CELL); 23935000=05325360=
|
|
STREAMTRANSFERLIT(8, 6"*LIST, L"); 23940000=05325370=
|
|
STREAMTRANSFERLIT(8, 6"ABEL, OR"); 23941000
|
|
STREAMTRANSFERLIT(8, 6" SEGMENT"); 23942000
|
|
STREAMTRANSFERLIT(8, 6" DESCRIP"); 23943000
|
|
STREAMTRANSFERLIT(4, 6"TOR*"); 23944000
|
|
GO XIT; 23945000=05325370=
|
|
M3: STREAMSETDI(LIN, CELL); 23950000=05325380=
|
|
STREAMTRANSFERLIT(8, 6"*CASE ST"); 23955000=05325380=
|
|
STREAMTRANSFERLIT(8, 6"ATEMENT "); 23956000
|
|
STREAMTRANSFERLIT(8, 6"DESCRIPT"); 23957000
|
|
STREAMTRANSFERLIT(3, 6"OR*"); 23958000
|
|
GO XIT; 23960000=05325380=
|
|
M4: STREAMSETDI(LIN, CELL); 23965000=05325390=
|
|
STREAMTRANSFERLIT(8, 6"*FORMAT "); 23970000=05325390=
|
|
STREAMTRANSFERLIT(8, 6"DESCRIPT"); 23972000
|
|
STREAMTRANSFERLIT(3, 6"OR*"); 23974000
|
|
GO XIT; 23975000=05325390=
|
|
M5: STREAMSETDI(LIN, CELL); 23980000=05325400=
|
|
STREAMTRANSFERLIT(8, 6"*OUTER B"); 23985000=05325400=
|
|
STREAMTRANSFERLIT(8, 6"LOCK DES"); 23986000
|
|
STREAMTRANSFERLIT(8, 6"CRIPTOR*"); 23988000
|
|
GO XIT; 23990000=05325400=
|
|
M6: STREAMSETDI(LIN, CELL); 23995000=05325410=
|
|
STREAMTRANSFERLIT(8, 6"*SEGMENT"); 24000000=05325410=
|
|
STREAMTRANSFERLIT(8, 6" DESCRIP"); 24002000
|
|
STREAMTRANSFERLIT(4, 6"TOR*"); 24004000
|
|
GO XIT; 24005000=05325410=
|
|
M7: STREAMSETDI(LIN, CELL); 24010000=05325420=
|
|
STREAMTRANSFERLIT(8, 6"*LABEL D"); 24015000=05325420=
|
|
STREAMTRANSFERLIT(8, 6"ESCRIPTO"); 24016000
|
|
STREAMTRANSFERLIT(2, 6"R*"); 24018000
|
|
XIT: 24020000=05325440=
|
|
END FILLIT; 24025000=05325440=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%24026000
|
|
BLANKET(14, LIN); 24030000=05325450=
|
|
IF N = 1 THEN 24035000=05325460=
|
|
FILLIT(LIN, PORS, GS, 0, ACCUM, 1) 24040000=05325470=
|
|
ELSE 24045000=05325470=
|
|
IF N > 1 THEN 24050000=05325470=
|
|
FILLIT(LIN, PORS, GS, 0, INFO[N.LINKR,*], N.LINKC) 24055000=05325480=
|
|
ELSE 24060000=05325480=
|
|
FILLIT(LIN, PORS, GS, ABS(N), EBCDICBUFF, -1); % ID NOT USED 24065000=05325480=
|
|
IF NOHEADING THEN 24070000=05325490=
|
|
DATIME; 24075000=05325490=
|
|
WRITELINE; 24080000=05325490=
|
|
END WRITEPRT; 24085000=05325500=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%24090000=05325500=
|
|
24095000=05326000=
|
|
COMMENT GETSPACE MAKES ASSIGNMENTS TO VARIABLES AND DESCRIPTORS IN 24100000=05326000=
|
|
THE STACK AND PRT. PERMANENT TELLS WHETHER IT IS A 24105000=05327000=
|
|
PERMANENTLY ASSIGNED CELL (ALWAYS IN PRT) OR NOT. NON 24110000=05328000=
|
|
PERMANENT CELLS ARE EITHER IN STACK OR PRT ACCORDING TO 24115000=05329000=
|
|
MODE. CARE IS TAKEN TO REUSE NON PERMANENT PRT CELLS; 24120000=05330000=
|
|
INTEGER PROCEDURE GETSPACE(PERMANENT, L); 24125000=05331000=
|
|
VALUE 24130000=05331000=
|
|
PERMANENT, 24135000=05331000=
|
|
L; 24140000=05331000=
|
|
BOOLEAN 24145000=05333000=
|
|
PERMANENT; 24150000=05333000=
|
|
INTEGER 24155000=05333000=
|
|
L; 24160000=05333000=
|
|
BEGIN 24165000=05334000=
|
|
LABEL 24170000=05334000=
|
|
L1, 24175000=05334000=
|
|
L2, 24180000=05334000=
|
|
EXIT; 24185000=05334000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%24186000
|
|
PROCEDURE DOIT(C, A, I, IX, S); 24190000=05334100=
|
|
VALUE 24195000=05334100=
|
|
C, A, IX; 24200000=05334100=
|
|
REAL 24201000
|
|
C, A, IX; 24202000
|
|
ARRAY 24203000
|
|
I, S[0]; 24205000=05334100=
|
|
BEGIN 24210000=05334200=
|
|
STREAMLOCALS; 24212000
|
|
REAL 24215000=05334200=
|
|
N; 24216000
|
|
24218000
|
|
STREAMSETDI(S, 0); 24220000=05334300=
|
|
STREAMSMEARLIT(8, 6" "); 24225000=05334300=
|
|
STREAMSETSI(S, 0); 24230000=05334300=
|
|
STREAMTRANSFERWDS(9); 24235000=05334300=
|
|
STREAMSETSI(I, IX); 24240000=05334400=
|
|
STREAMSKIPSI(+2); 24245000=05334400=
|
|
STREAMSETLOCDI(N); 24250000=05334400=
|
|
STREAMSKIPDI(+7); 24255000=05334400=
|
|
STREAMTRANSFERCHR(1); 24260000=05334400=
|
|
N:= STREAMTEMPD[0]; 24262000
|
|
STREAMSETDI(S, 0); 24265000=05334500=
|
|
STREAMSETLOCSI(C); 24270000=05334500=
|
|
THRU 2 DO 24275000=05334500=
|
|
STREAMTRANSFERDEC(4); 24276000
|
|
24278000
|
|
STREAMSETSI(I, IX); 24280000=05334600=
|
|
STREAMSKIPSI(+3); 24285000=05334600=
|
|
STREAMTRANSFERCHR(N); 24290000=05334600=
|
|
END; 24295000=05334700=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%24296000
|
|
BOOLEAN 24300000=05343000=
|
|
M, 24305000=05343000=
|
|
Q; 24310000=05343000=
|
|
INTEGER 24315000=05344000=
|
|
ROW, 24320000=05344000=
|
|
COL, 24325000=05344000=
|
|
GS; 24330000=05344000=
|
|
IF NOT (STREAMTOG AND(LEVEL > 2)) THEN 24335000=05344400=
|
|
IF STEPI = RELOP THEN 24340000=05344500=
|
|
BEGIN 24345000=05344510=
|
|
IF STEPI > IDMAX THEN 24350000=05344530=
|
|
BEGIN 24355000=05344540=
|
|
IF ELCLASS = ADOP THEN 24360000=05344560=
|
|
IF ELBAT[I].ADDRESS = SUBOP THEN 24365000=05344580=
|
|
GS:= FZERO 24370000=05344580=
|
|
ELSE 24375000=05344580=
|
|
GS:= 512; 24380000=05344580=
|
|
BEGIN 24385000=05344600=
|
|
GS:= 0; 24390000=05344600=
|
|
I:= I-1 24395000=05344600=
|
|
END; 24400000=05344600=
|
|
IF STEPI ^= LITNO THEN 24405000=05344610=
|
|
FLAG(51); 24410000=05344610=
|
|
IF ELBAT[I].ADDRESS >= 512 THEN 24415000=05344615=
|
|
GS:= 1024; 24420000=05344615=
|
|
GS:= GS+ELBAT[I].ADDRESS 24425000=05344630=
|
|
END 24430000=05344650=
|
|
ELSE 24435000=05344650=
|
|
BEGIN 24440000=05344650=
|
|
GS:= ELBAT[I].ADDRESS; 24445000=05344660=
|
|
IF GS = 0 THEN 24450000=05344661=
|
|
FLAG(51); 24455000=05344661=
|
|
IF GS >= FZERO AND GS <= 1023 THEN 24460000=05344662=
|
|
GS:= -GS; 24465000=05344662=
|
|
IF STEPI ^= ADOP THEN 24470000=05344670=
|
|
I:= I-1 24475000=05344670=
|
|
ELSE 24480000=05344670=
|
|
BEGIN 24485000=05344680=
|
|
STEPIT; 24490000=05344690=
|
|
GS:= ELBAT[I].ADDRESS+ 24495000=05344720=
|
|
(IF ELBAT[I-1].ADDRESS = SUBOP THEN-GS ELSE+GS); 24500000=05344720=
|
|
END; 24505000=05344730=
|
|
GS:= ABS(GS); 24510000=05344740=
|
|
END; 24515000=05344750=
|
|
Q:= GS < 512 OR GS > 1023; 24520000=05344750=
|
|
GO TO EXIT 24525000=05344770=
|
|
END 24530000=05344770=
|
|
ELSE 24535000=05344770=
|
|
I:= I-1; 24540000=05344770=
|
|
IF MODE = 0 OR PERMANENT THEN 24545000=05346000=
|
|
BEGIN 24550000=05346000=
|
|
IF PRTIMAX > 1023 THEN 24555000=05347000=
|
|
FLAG(148); 24560000=05347000=
|
|
IF ASTOG THEN 24565000=05348000=
|
|
FLAG(505); 24570000=05348000=
|
|
PRTI:= PRTIMAX:= (GS:= PRTIMAX)+1; 24575000=05350000=
|
|
IF STUFFTOG THEN 24580000=05350100=
|
|
IF(M:= (LEVEL = 1 AND KLASSF > 19)) OR 24585000=05350120=
|
|
(LEVEL >= 3 AND ELBAT[I].CLASS = LABELID) 24590000=05350120=
|
|
THEN 24595000=05350120=
|
|
BEGIN 24600000=05350120=
|
|
IF NOT M THEN 24605000=05350140=
|
|
DOIT(LABELID, GS, 24610000=05350180=
|
|
INFO[(ELBAT[I]).LINKR,*], (ELBAT[I].LINKC+1), TWXA[*]) 24615000=05350180=
|
|
ELSE 24620000=05350180=
|
|
DOIT(KLASSF, GS, 24625000=05350300=
|
|
INFO[(LASTINFO+1).LINKR,*], (LASTINFO+1).LINKC, TWXA[*]); 24630000=05350300=
|
|
WRITE(STUFF, 10, TWXA[*]) 24635000=05350300=
|
|
END; 24640000=05350300=
|
|
END 24645000=05369000=
|
|
ELSE 24650000=05369000=
|
|
BEGIN 24655000=05369000=
|
|
IF STACKCTR > 767 THEN 24660000=05370000=
|
|
FLAG(149); 24665000=05370000=
|
|
STACKCTR:= (GS:= STACKCTR)+1; 24670000=05371000=
|
|
Q:= FALSE; 24675000=05371000=
|
|
GO TO EXIT 24680000=05372000=
|
|
END; 24685000=05372000=
|
|
L2: IF GS >= 512 THEN 24690000=05373000=
|
|
GS:= GS+1024; 24695000=05373000=
|
|
Q:= TRUE; 24700000=05374000=
|
|
EXIT: 24705000=05375000=
|
|
GETSPACE:= GS; 24710000=05375000=
|
|
IF GS >= NESTCTR AND GS < FZERO THEN 24715000=05375100=
|
|
NESTCTR:= GS+1; 24720000=05375100=
|
|
IF GS > 1023 THEN 24725000=05376000=
|
|
GS:= GS-1024; 24730000=05376000=
|
|
IF PRTOG THEN 24735000=05376100=
|
|
WRITEPRT(IF Q THEN 6"PRT " ELSE 6"STACK", L, B2D(GS)); 24740000=05376100=
|
|
END GETSPACE; 24745000=05378000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%24750000=05378000=
|
|
REAL PROCEDURE DEPTH(I); 24755000=05400000=
|
|
VALUE 24760000=05400000=
|
|
I; 24765000=05400000=
|
|
REAL 24770000=05400000=
|
|
I; 24775000=05400000=
|
|
BEGIN 24780000=05401000=
|
|
REAL 24785000=05401000=
|
|
J, 24790000=05401000=
|
|
K, 24795000=05401000=
|
|
T, 24800000=05401000=
|
|
S, 24805000=05401000=
|
|
M; 24810000=05401000=
|
|
IF T:= NESTPRT[I] < 0 THEN 24815000=05402000=
|
|
BEGIN 24820000=05402100=
|
|
DEPTH:= CALL[T.[25:13]-1].[12:13]; 24825000=05402100=
|
|
IF NESTPRT[I].[45:1] = 0 THEN 24830000=05402200=
|
|
NESTCUR:= NESTCUR+1; 24835000=05402200=
|
|
NESTPRT[I].[45:1]:= 1; 24840000=05402300=
|
|
END 24845000=05403000=
|
|
ELSE 24850000=05403000=
|
|
IF T.[38:13] ^= 0 THEN 24855000=05403000=
|
|
DEPTH:= T.[38:13] 24860000=05404000=
|
|
ELSE 24865000=05404000=
|
|
BEGIN 24870000=05404000=
|
|
M:= 0; 24875000=05404000=
|
|
NESTPRT[I]:= -T; 24880000=05404000=
|
|
J:= T.[25:13]; 24885000=05405000=
|
|
K:= CALL[J-1].[25:13]; 24890000=05405000=
|
|
FOR J:= J STEP 1 UNTIL K DO 24895000=05406000=
|
|
IF S:= DEPTH(CALL[J]) > M THEN 24900000=05407000=
|
|
M:= S; 24905000=05407000=
|
|
M:= DEPTH:= M+CALL[T.[25:13]-1].[12:13]; 24910000=05409000=
|
|
IF NESTCUR ^= 0 THEN 24915000=05409100=
|
|
IF NESTPRT[I].[45:1] = 0 THEN 24920000=05409200=
|
|
ELSE 24925000=05409300=
|
|
BEGIN 24930000=05409300=
|
|
T:= T & M[38:12:13]; 24935000=05409300=
|
|
NESTCUR:= NESTCUR-1 24940000=05409300=
|
|
END 24945000=05409400=
|
|
ELSE 24950000=05409400=
|
|
T:= T & M[38:12:13]; 24955000=05409400=
|
|
NESTPRT[I]:= T; 24960000=05409500=
|
|
END; 24965000=05410000=
|
|
END; 24970000=05411000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%24975000=05411000=
|
|
PROCEDURE NESTSORT(L, U); 24980000=05411100=
|
|
VALUE 24985000=05411100=
|
|
L, 24990000=05411100=
|
|
U; 24995000=05411100=
|
|
REAL 25000000=05411100=
|
|
L, 25005000=05411100=
|
|
U; 25010000=05411100=
|
|
FORWARD; 25015000=05411100=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%25020000=05411100=
|
|
PROCEDURE SORTNEST; 25025000=05412000=
|
|
BEGIN 25030000=05413000=
|
|
ARRAY 25035000=05413000=
|
|
A[0:14]; 25040000=05413000=
|
|
REAL 25045000=05414000=
|
|
I, 25050000=05414000=
|
|
J, 25055000=05414000=
|
|
K, 25060000=05414000=
|
|
T; 25065000=05414000=
|
|
REAL 25070000=05414100=
|
|
P, 25075000=05414100=
|
|
Q; 25080000=05414100=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%25082000
|
|
PROCEDURE NESTFORM(I, N, L, LX, A); 25085000=05415000=
|
|
VALUE 25085500
|
|
I, N, LX; 25086000
|
|
REAL 25086500
|
|
I, N, LX; 25087000
|
|
ARRAY 25087500
|
|
L, A[0]; 25088000
|
|
BEGIN 25090000=05416000=
|
|
STREAMLOCALS; 25092000
|
|
REAL 25095000=05416000=
|
|
S, 25096000
|
|
TEMP; 25097000
|
|
25098000
|
|
STREAMSETDI(A, 0); 25100000=05417000=
|
|
STREAMSMEARLIT(15*8, 6" "); 25105000=05417000=
|
|
STREAMSETLOCDI(S); 25110000=05418000=
|
|
STREAMSKIPDI(+7); 25115000=05418000=
|
|
STREAMSETSI(L, LX); 25120000=05418000=
|
|
STREAMSKIPSI(+10); 25125000=05418000=
|
|
STREAMTRANSFERCHR(1); 25130000=05418000=
|
|
S:= STREAMTEMPD[0]; 25132000
|
|
STREAMSETDI(A, 0); 25135000=05419000=
|
|
STREAMSKIPDI(+I); 25140000=05419000=
|
|
TEMP:= STREAMGETDI; 25145000=05419000=
|
|
STREAMSKIPDI(+6); 25150000=05420000=
|
|
STREAMTRANSFERCHR(S); 25155000=05420000=
|
|
STREAMSETDI(A, TEMP); 25160000=05421000=
|
|
STREAMSETLOCSI(N); 25165000=05421000=
|
|
STREAMTRANSFERDEC(4); 25170000=05421000=
|
|
STREAMSETDI(A, TEMP); 25175000=05422000=
|
|
STREAMTRANSFERFILL(3); 25180000=05422000=
|
|
END; 25185000=05423000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%25186000
|
|
FOR I:= PRTBASE STEP 1 UNTIL PRTOP DO 25190000=05424000=
|
|
IF NESTPRT[I] ^= 0 THEN 25195000=05425000=
|
|
BEGIN 25200000=05425100=
|
|
SORTPRT[Q]:= I; 25205000=05425100=
|
|
Q:= Q+1 25210000=05425100=
|
|
END; 25215000=05425100=
|
|
NESTSORT(0, Q:= Q-1); 25220000=05425200=
|
|
FOR P:= 0 STEP 1 UNTIL Q DO 25225000=05425300=
|
|
BEGIN 25230000=05425400=
|
|
I:= SORTPRT[P]; 25235000=05425400=
|
|
T:= NESTPRT[I]; 25240000=05425400=
|
|
NESTFORM(0, DEPTH(I), INFO[T.LINKR,*], T.LINKC, A); 25245000=05426000=
|
|
UNPACKBICTOEBCDIC(A, 0, EBCDICBUFF, 0, 15*8); 25245100
|
|
WRITE(LINE[SPACE 2], 20, EBCDICBUFF[*]); 25250000=05427000=
|
|
J:= T.[25:13]; 25255000=05428000=
|
|
K:= CALL[J-1].[25:13]; 25260000=05428000=
|
|
FOR J:= J STEP 1 UNTIL K DO 25265000=05429000=
|
|
BEGIN 25270000=05430000=
|
|
I:= CALL[J]; 25275000=05430000=
|
|
T:= NESTPRT[I]; 25280000=05430500=
|
|
NESTFORM(32, DEPTH(I), INFO[T.LINKR,*], T.LINKC, A); 25285000=05431000=
|
|
UNPACKBICTOEBCDIC(A, 0, EBCDICBUFF, 0, 15*8); 25285100
|
|
WRITE(LINE, 20, EBCDICBUFF[*]); 25290000=05432000=
|
|
END; 25295000=05433000=
|
|
WRITE(LINE[SPACE 2]); 25300000=05434000=
|
|
END; 25305000=05435000=
|
|
END; 25310000=05436000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%25315000=05436000=
|
|
PROCEDURE NESTSORT(L, U); 25320000=05437000=
|
|
VALUE 25325000=05437000=
|
|
L, 25330000=05437000=
|
|
U; 25335000=05437000=
|
|
REAL 25340000=05437000=
|
|
L, 25345000=05437000=
|
|
U; 25350000=05437000=
|
|
BEGIN 25355000=05438000=
|
|
REAL 25360000=05438000=
|
|
I, 25365000=05438000=
|
|
J, 25370000=05438000=
|
|
K, 25375000=05438000=
|
|
M; 25380000=05438000=
|
|
LABEL 25385000=05439000=
|
|
AGAIN, 25390000=05439000=
|
|
TOP, 25395000=05439000=
|
|
BOTTOM, 25400000=05439000=
|
|
EXIT; 25405000=05439000=
|
|
IF L ^= U THEN 25410000=05440000=
|
|
BEGIN 25415000=05441000=
|
|
M:= (U+L) DIV 2; 25420000=05441000=
|
|
NESTSORT(L, M); 25425000=05442000=
|
|
NESTSORT(M+1, U); 25430000=05443000=
|
|
I:= K:= L; 25435000=05444000=
|
|
J:= M+1 AGAIN: 25440000=05445000=
|
|
IF I > M THEN 25445000=05445000=
|
|
GO TO TOP; 25450000=05445000=
|
|
IF J > U THEN 25455000=05446000=
|
|
GO TO BOTTOM; 25460000=05446000=
|
|
GT1:= NESTPRT[SORTPRT[I].[14:15]].LINK; 25465000=05447000=
|
|
GT2:= NESTPRT[SORTPRT[J].[14:15]].LINK; 25470000=05448000=
|
|
IF INFO[GT1.LINKR, (GT1+1).LINKC].[29:30] <= 25475000=05450000=
|
|
INFO[GT2.LINKR, (GT2+1).LINKC].[29:30] 25480000=05450000=
|
|
THEN 25485000=05450000=
|
|
GO TO BOTTOM; 25490000=05451000=
|
|
TOP: 25495000=05452000=
|
|
SORTPRT[K].[29:15]:= SORTPRT[J]; 25500000=05452000=
|
|
J:= J+1; 25505000=05453000=
|
|
IF K:= K+1 <= U THEN 25510000=05454000=
|
|
GO TO AGAIN 25515000=05454000=
|
|
ELSE 25520000=05454000=
|
|
GO TO EXIT; 25525000=05454000=
|
|
BOTTOM: 25530000=05455000=
|
|
SORTPRT[K].[29:15]:= SORTPRT[I]; 25535000=05455000=
|
|
I:= I+1; 25540000=05456000=
|
|
IF K:= K+1 <= U THEN 25545000=05457000=
|
|
GO TO AGAIN 25550000=05457000=
|
|
ELSE 25555000=05457000=
|
|
GO TO EXIT; 25560000=05457000=
|
|
EXIT: 25565000=05458000=
|
|
FOR I:= L STEP 1 UNTIL U DO 25570000=05458000=
|
|
SORTPRT[I]:= SORTPRT[I].[29:15]; 25575000=05459000=
|
|
END; 25580000=05460000=
|
|
END; 25585000=05461000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%25590000=05461000=
|
|
25595000=06000000=
|
|
COMMENT ROUTINES IN THIS SECTION COMPILE CODE FOR ALL EXPRESSIONS;25600000=06000000=
|
|
25605000=06001000=
|
|
COMMENT AEXP IS THE ARITHMETIC EXRESSION ROUTINE; 25610000=06001000=
|
|
PROCEDURE AEXP; 25615000=06002000=
|
|
BEGIN 25620000=06003000=
|
|
IF ELCLASS = IFV THEN 25625000=06005000=
|
|
BEGIN 25630000=06005000=
|
|
IF IFEXP ^= ATYPE THEN 25635000=06005000=
|
|
ERR(102) 25640000=06006000=
|
|
END 25645000=06006000=
|
|
ELSE 25650000=06006000=
|
|
BEGIN 25655000=06006000=
|
|
ARITHSEC; 25660000=06006000=
|
|
SIMPARITH 25665000=06006000=
|
|
END 25670000=06007000=
|
|
END AEXP; 25675000=06007000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%25680000=06007000=
|
|
25685000=06008000=
|
|
COMMENT ARITHSEC COMPILES FIRST PRIMARY IN AN ARITHMETIC EXPRESSION. 25690000=06008000=
|
|
IN PARTICULAR IT HANDLES P, +P, -P, AND -P*Q WHERE P 25695000=06009000=
|
|
AND Q ARE PRIMARIES; 25700000=06010000=
|
|
PROCEDURE ARITHSEC; 25705000=06011000=
|
|
BEGIN 25710000=06012000=
|
|
IF ELCLASS = ADOP THEN 25715000=06014000=
|
|
BEGIN 25720000=06014000=
|
|
STEPIT; 25725000=06015000=
|
|
IF ELBAT[I-1].ADDRESS ^= SUB THEN 25730000=06016000=
|
|
PRIMARY 25735000=06017000=
|
|
ELSE 25740000=06017000=
|
|
BEGIN 25745000=06017000=
|
|
PRIMARY; 25750000=06018000=
|
|
ENDTOG:= LINKTOG; 25755000=06021000=
|
|
EMITO(CHS); 25760000=06021000=
|
|
LINKTOG:= ENDTOG; 25765000=06022000=
|
|
ENDTOG:= FALSE 25770000=06022000=
|
|
END 25775000=06023000=
|
|
END 25780000=06023000=
|
|
ELSE 25785000=06023000=
|
|
PRIMARY 25790000=06023000=
|
|
END ARITHSEC; 25795000=06023000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%25800000=06023000=
|
|
25805000=06024000=
|
|
COMMENT SIMPARITH COMPILES SIMPLE ARITHMETIC EXPRESSIONS ON THE 25810000=06024000=
|
|
ASSUMPTION THAT AN ARITHMETIC PRIMARY HAS ALREADY BEEN 25815000=06025000=
|
|
COMPILED. IT ALSO HANDLES THE CASE OF A CONCATENATE 25820000=06026000=
|
|
WHERE ACTUALPARAPART CAUSED THE VARIABLE ROUTINE TO 25825000=06027000=
|
|
COMPILE ONLY PART OF A PRIMARY. MOST OF THE WORK OF 25830000=06028000=
|
|
SIMPARITH IS DONE BY ARITHCOMP, AN ARTIFIAL ROUTINE 25835000=06029000=
|
|
WHICH DOES THE HIERARCHY ANALYSIS USING RECURSION. 25840000=06030000=
|
|
ARITHCOMP IS A SUBROUTINE ONLY TO GET THIS RECURSION; 25845000=06031000=
|
|
PROCEDURE SIMPARITH; 25850000=06032000=
|
|
BEGIN 25855000=06033000=
|
|
WHILE ELCLASS = AMPERSAND DO 25860000=06035000=
|
|
BEGIN 25865000=06035000=
|
|
STEPIT; 25870000=06035000=
|
|
PRIMARY; 25875000=06035000=
|
|
PARSE 25880000=06035000=
|
|
END; 25885000=06035000=
|
|
WHILE ELCLASS >= EQVOP DO 25890000=06036000=
|
|
ARITHCOMP 25895000=06036000=
|
|
END; 25900000=06036000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%25905000=06036000=
|
|
25910000=06037000=
|
|
COMMENT ARITHCOMP IS THE GUTS OF THE ARITHMETIC EXPRESSION ROUTINE 25915000=06037000=
|
|
ANALYSIS. IT CALLS PRIMARY AT APPROPRIATE TIMES AND 25920000=06038000=
|
|
EMITS THE ARITHMETIC OPERATORS. THE HIERARCHY ANALYSIS 25925000=06039000=
|
|
IS OBTAINED BY RECURSION; 25930000=06040000=
|
|
PROCEDURE ARITHCOMP; 25935000=06041000=
|
|
BEGIN 25940000=06042000=
|
|
INTEGER 25945000=06042000=
|
|
OPERATOR, 25950000=06042000=
|
|
OPCLASS; 25955000=06042000=
|
|
DO BEGIN 25960000=06043000=
|
|
OPERATOR:= 1 & ELBAT[I][11:30:10]; 25965000=06044000=
|
|
COMMENT THIS SETS UP THE OPERATOR WHICH WILL BE EMITTED. THE HIGH 25970000=06045000=
|
|
ORDER TEN BITS OF THE OPERATOR ARE LOCATED IN [30:10] 25975000=06046000=
|
|
OF THE ELBAT WORD; 25980000=06047000=
|
|
OPCLASS:= ELCLASS; 25985000=06048000=
|
|
STEPIT; 25990000=06049000=
|
|
PRIMARY; 25995000=06049000=
|
|
BEGIN 26000000=06051000=
|
|
WHILE OPCLASS < ELCLASS DO 26005000=06052000=
|
|
ARITHCOMP; 26010000=06052000=
|
|
COMMENT THE CLASSES ARE ARRANGED IN ORDER OF HIERARCHY; 26015000=06053000=
|
|
EMIT(OPERATOR); 26020000=06054000=
|
|
EMIT(0); 26025000=06054100=
|
|
L:= L-1; 26030000=06054100=
|
|
STACKCT:= 1; 26035000=06054150=
|
|
END; 26040000=06054200=
|
|
END 26045000=06055000=
|
|
UNTIL OPCLASS ^= ELCLASS 26050000=06055000=
|
|
END ARITHCOMP; 26055000=06055000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%26060000=06055000=
|
|
INTEGER PROCEDURE EXPRSS; 26065000=06057000=
|
|
BEGIN 26070000=06057000=
|
|
AEXP; 26075000=06057000=
|
|
EXPRSS:= ATYPE 26080000=06057000=
|
|
END; 26085000=06057000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%26090000=06057000=
|
|
PROCEDURE POLISHER(EXPECT); 26095000=06060000=
|
|
VALUE 26100000=06060000=
|
|
EXPECT; 26105000=06060000=
|
|
REAL 26110000=06060000=
|
|
EXPECT; 26115000=06060000=
|
|
BEGIN 26120000=06061000=
|
|
LABEL 26125000=06061000=
|
|
EXIT; 26130000=06061000=
|
|
LABEL 26135000=06061900=
|
|
EL; 26140000=06061900=
|
|
REAL 26145000=06062000=
|
|
COUNT, 26150000=06062000=
|
|
T1, 26155000=06062000=
|
|
T2; 26160000=06062000=
|
|
BOOLEAN 26165000=06063000=
|
|
S; 26170000=06063000=
|
|
REAL 26175000=06063500=
|
|
SSS; 26180000=06063500=
|
|
INTEGER 26185000=06063500=
|
|
Z; 26190000=06063500=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%26192000
|
|
PROCEDURE WRITEOUT(C, N, L, LX); 26195000=06064000=
|
|
VALUE 26200000=06064000=
|
|
C, N, LX; 26205000=06064000=
|
|
REAL 26210000=06064000=
|
|
C, N, LX; 26211000
|
|
ARRAY 26212000
|
|
L[0]; 26213000
|
|
BEGIN 26215000=06065000=
|
|
STREAMLOCALS; 26216000
|
|
STREAMSETDI(L, LX); 26220000=06065000=
|
|
STREAMTRANSFERLIT(2, 6"S="); 26225000=06065000=
|
|
STREAMSETLOCSI(C); 26230000=06066000=
|
|
STREAMSKIPSI(+7); 26235000=06066000=
|
|
STREAMTRANSFERCHR(1); 26240000=06066000=
|
|
STREAMSETLOCSI(N); 26245000=06067000=
|
|
STREAMTRANSFERDEC(1); 26250000=06067000=
|
|
STREAMSMEARLIT(58*2, 6" "); 26255000=06067500=
|
|
END; 26260000=06068000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%26262000
|
|
SSS:= STACKCTR; 26265000=06068500=
|
|
IF STEPI ^= LEFTPAREN THEN 26270000=06069000=
|
|
GO TO EXIT; 26275000=06069000=
|
|
DO BEGIN 26280000=06070000=
|
|
IF STEPI >= OPERATORS THEN 26285000=06071000=
|
|
BEGIN 26290000=06072000=
|
|
T1:= (T2:= ELBAT[I]).ADDRESS; 26295000=06072000=
|
|
S:= S OR COUNT-T2.[36:3] < 0; 26300000=06074000=
|
|
COUNT:= T2.[33:2]+COUNT-2; 26305000=06075000=
|
|
IF ELCLASS >= OPERATOR THEN 26310000=06076000=
|
|
BEGIN 26315000=06077000=
|
|
IF T1 ^= 0 THEN 26320000=06077000=
|
|
EMITO(T1); 26325000=06077000=
|
|
BEGIN 26330000=06078000=
|
|
T1:= T2.LINK+2; 26335000=06079000=
|
|
T2:= T2.INCR+T1; 26340000=06080000=
|
|
FOR T1:= T1 STEP 1 UNTIL T2 DO 26345000=06081000=
|
|
EMIT(TAKE(T1)); 26350000=06082000=
|
|
END; 26355000=06083000=
|
|
END 26360000=06084000=
|
|
ELSE 26365000=06084000=
|
|
BEGIN 26370000=06084000=
|
|
T2:= ELCLASS; 26375000=06084000=
|
|
IF STEPI ^= LITNO THEN 26380000=06085000=
|
|
BEGIN 26385000=06086000=
|
|
ERR(500); 26390000=06086000=
|
|
GO TO EXIT 26395000=06086000=
|
|
END; 26400000=06086000=
|
|
IF T2 = BITOP THEN 26405000=06087000=
|
|
EMIT(T1 & C[11:5:6]) 26410000=06088000=
|
|
ELSE 26415000=06088000=
|
|
IF T2 = HEXOP THEN 26420000=06089000=
|
|
EMIT(T1 & (T2:= C DIV 6)[11:2:3] & (C-T2*6)[8:2:3]) 26425000=06091000=
|
|
ELSE 26430000=06091000=
|
|
IF T2 = ISOLATE THEN 26435000=06092000=
|
|
BEGIN 26440000=06093000=
|
|
T2+C; 26445000=06093000=
|
|
IF STEPI ^= LITNO THEN 26450000=06095000=
|
|
BEGIN 26455000=06095000=
|
|
ERR(500); 26460000=06095000=
|
|
GO TO EXIT 26465000=06096000=
|
|
END; 26470000=06096000=
|
|
EMIT(Z:= ((T2+C-1) DIV 6-C DIV 6+1)*512+(48-T2-C) 26475000=06100000=
|
|
MOD 6*64+37); 26480000=06100000=
|
|
END 26485000=06101000=
|
|
END; 26490000=06101000=
|
|
STEPIT; 26495000=06102000=
|
|
S:= S OR COUNT < 0; 26500000=06103000=
|
|
END 26505000=06104000=
|
|
ELSE 26510000=06104000=
|
|
BEGIN 26515000=06104000=
|
|
IF ELCLASS = LABELID THEN 26520000=06104100=
|
|
BEGIN 26525000=06104200=
|
|
T1:= 2; 26530000=06104200=
|
|
EL: GT4:= TAKE(T2:= GIT(ELBAT[I])); 26535000=06104300=
|
|
PUT(L, T2); 26540000=06104400=
|
|
IF GT4 = 0 THEN 26545000=06104500=
|
|
GT4:= L; 26550000=06104500=
|
|
IF(GT4:= L-GT4) DIV 4 >= 128 THEN 26555000=06104510=
|
|
BEGIN 26560000=06104520=
|
|
GT4:= 0; 26565000=06104520=
|
|
FLAG(50); 26570000=06104520=
|
|
END; 26575000=06104520=
|
|
EMIT(GT4*4+T1); 26580000=06104600=
|
|
STEPIT; 26585000=06104700=
|
|
END 26590000=06105000=
|
|
ELSE 26595000=06105000=
|
|
IF ELCLASS ^= PERIOD THEN 26600000=06105000=
|
|
AEXP 26605000=06105000=
|
|
ELSE 26610000=06105000=
|
|
BEGIN 26615000=06105000=
|
|
T2:= 0; 26620000=06106000=
|
|
IF STEPI = PERIOD THEN 26625000=06106100=
|
|
BEGIN 26630000=06106200=
|
|
T2:= 1; 26635000=06106200=
|
|
STEPIT 26640000=06106200=
|
|
END; 26645000=06106200=
|
|
IF ELCLASS > IDMAX THEN 26650000=06106300=
|
|
BEGIN 26655000=06107000=
|
|
ERR(500); 26660000=06107000=
|
|
GO TO EXIT 26665000=06107000=
|
|
END; 26670000=06107000=
|
|
IF ELCLASS = LABELID THEN 26675000=06107100=
|
|
BEGIN 26680000=06107200=
|
|
T1:= 0; 26685000=06107200=
|
|
GO TO EL 26690000=06107200=
|
|
END; 26695000=06107200=
|
|
IF T1:= ELBAT[I].ADDRESS = 0 THEN 26700000=06108000=
|
|
BEGIN 26705000=06109000=
|
|
ERR(100); 26710000=06109000=
|
|
GO TO EXIT 26715000=06109000=
|
|
END; 26720000=06109000=
|
|
EMITL(T1); 26725000=06110000=
|
|
IF T1 > 1023 THEN 26730000=06110100=
|
|
IF T2 = 0 THEN 26735000=06110200=
|
|
FLAG(500) 26740000=06110300=
|
|
ELSE 26745000=06110300=
|
|
EMITO(PRTE); 26750000=06110300=
|
|
STEPIT; 26755000=06111000=
|
|
END; 26760000=06112000=
|
|
COUNT:= COUNT+1; 26765000=06112000=
|
|
END; 26770000=06113000=
|
|
END 26775000=06114000=
|
|
UNTIL ELCLASS ^= COMMA; 26780000=06114000=
|
|
IF ELCLASS ^= RTPAREN THEN 26785000=06115000=
|
|
BEGIN 26790000=06116000=
|
|
ERR(104); 26795000=06116000=
|
|
GO TO EXIT 26800000=06116000=
|
|
END; 26805000=06116000=
|
|
STEPIT; 26810000=06117000=
|
|
IF FALSE THEN 26815000=06118000=
|
|
BEGIN 26820000=06119000=
|
|
COUNT:= COUNT-EXPECT; 26825000=06119000=
|
|
WRITEOUT(IF COUNT < 0 THEN 6"-" ELSE IF COUNT = 0 THEN 6" " ELSE 26830000=06122000=
|
|
6"+", ABS(COUNT), LIN, 0); 26835000=06122000=
|
|
WRITELINE; 26840000=06123000=
|
|
END; 26845000=06124000=
|
|
EXIT: 26850000=06125000=
|
|
STACKCTR:= SSS; 26855000=06125000=
|
|
END; 26860000=06125000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%26865000=06125000=
|
|
PROCEDURE PRIMARY; 26870000=06126000=
|
|
BEGIN 26875000=06127000=
|
|
LABEL 26880000=06128000=
|
|
L1, 26885000=06128000=
|
|
L2, 26890000=06128000=
|
|
L3, 26895000=06128000=
|
|
L4, 26900000=06128000=
|
|
L5, 26905000=06128000=
|
|
L6, 26910000=06128000=
|
|
L7, 26915000=06128000=
|
|
L8, 26920000=06128000=
|
|
L9, 26925000=06128000=
|
|
L10, 26930000=06129000=
|
|
L11, 26935000=06129000=
|
|
L12, 26940000=06129000=
|
|
L13, 26945000=06129000=
|
|
L14, 26950000=06129000=
|
|
L15, 26955000=06129000=
|
|
L16, 26960000=06129000=
|
|
L17, 26965000=06129000=
|
|
L18, 26970000=06129000=
|
|
L19, 26975000=06129000=
|
|
L20, 26980000=06130000=
|
|
L21, 26985000=06130000=
|
|
L22, 26990000=06130000=
|
|
L23, 26995000=06130000=
|
|
L24, 27000000=06130000=
|
|
L25, 27005000=06130000=
|
|
L26, 27010000=06130000=
|
|
L27, 27015000=06130000=
|
|
L28, 27020000=06130000=
|
|
L29, 27025000=06130000=
|
|
L30, 27030000=06131000=
|
|
L31, 27035000=06131000=
|
|
L32, 27040000=06131000=
|
|
L33, 27045000=06131000=
|
|
L34, 27050000=06131000=
|
|
L35, 27055000=06131000=
|
|
L36, 27060000=06131000=
|
|
L37, 27065000=06131000=
|
|
L38, 27070000=06131000=
|
|
L39; 27075000=06131000=
|
|
SWITCH 27080000=06132000=
|
|
S:= L1, 27085000=06133000=
|
|
L2, 27090000=06133000=
|
|
L3, 27095000=06133000=
|
|
L4, 27100000=06133000=
|
|
L5, 27105000=06133000=
|
|
L6, 27110000=06133000=
|
|
L7, 27115000=06133000=
|
|
L8, 27120000=06133000=
|
|
L9, 27125000=06133000=
|
|
L10, 27130000=06134000=
|
|
L11, 27135000=06134000=
|
|
L12, 27140000=06134000=
|
|
L13, 27145000=06134000=
|
|
L14, 27150000=06134000=
|
|
L15, 27155000=06134000=
|
|
L16, 27160000=06134000=
|
|
L17, 27165000=06134000=
|
|
L18, 27170000=06134000=
|
|
L19, 27175000=06134000=
|
|
L20, 27180000=06135000=
|
|
L21, 27185000=06135000=
|
|
L22, 27190000=06135000=
|
|
L23, 27195000=06135000=
|
|
L24, 27200000=06135000=
|
|
L25, 27205000=06135000=
|
|
L26, 27210000=06135000=
|
|
L27, 27215000=06135000=
|
|
L28, 27220000=06135000=
|
|
L29, 27225000=06135000=
|
|
L30, 27230000=06136000=
|
|
L31, 27235000=06136000=
|
|
L32, 27240000=06136000=
|
|
L33, 27245000=06136000=
|
|
L34, 27250000=06136000=
|
|
L35, 27255000=06136000=
|
|
L36, 27260000=06136000=
|
|
L37, 27265000=06136000=
|
|
L38, 27270000=06136000=
|
|
L39; 27275000=06136000=
|
|
LABEL 27280000=06137000=
|
|
EXIT, 27285000=06137000=
|
|
RP, 27290000=06137000=
|
|
LDOT, 27295000=06137000=
|
|
LAMPER; 27300000=06137000=
|
|
REAL 27302000
|
|
TVAR; % FOR VARIABLE() NAME PARAM 27304000
|
|
GO TO S[ELCLASS]; 27305000=06138000=
|
|
IF ELCLASS = LFTBRKET THEN 27310000=06139000=
|
|
BEGIN 27315000=06140000=
|
|
STEPIT; 27320000=06140000=
|
|
TVAR:= FL; 27322000
|
|
VARIABLE(TVAR); 27325000=06140000=
|
|
IF ELCLASS ^= RTBRKET THEN 27330000=06141000=
|
|
BEGIN 27335000=06142000=
|
|
ERR(118); 27340000=06142000=
|
|
GO TO EXIT 27345000=06142000=
|
|
END; 27350000=06142000=
|
|
STEPIT; 27355000=06143000=
|
|
GO TO LDOT; 27360000=06144000=
|
|
END; 27365000=06145000=
|
|
IF ELCLASS = NOTOP THEN 27370000=06146000=
|
|
BEGIN 27375000=06147000=
|
|
STEPIT; 27380000=06147000=
|
|
PRIMARY; 27385000=06147000=
|
|
EMITLNG; 27390000=06148000=
|
|
EMIT(0); 27395000=06148000=
|
|
L:= L-1; 27400000=06148000=
|
|
GO TO EXIT; 27405000=06149000=
|
|
END; 27410000=06150000=
|
|
IF ELCLASS = UNKNOWNID THEN 27415000=06151000=
|
|
ERR(100); 27420000=06151000=
|
|
L1: 27425000=06152000=
|
|
L2: 27430000=06152000=
|
|
L3: 27435000=06152000=
|
|
L4: 27440000=06152000=
|
|
L5: 27445000=06152000=
|
|
L6: 27450000=06152000=
|
|
L8: 27455000=06152000=
|
|
L9: 27460000=06152000=
|
|
L10: 27465000=06152000=
|
|
L12: 27470000=06152000=
|
|
L13: 27475000=06152000=
|
|
L16: 27480000=06152000=
|
|
L17: 27485000=06152000=
|
|
L20: 27490000=06154000=
|
|
L21: 27490500
|
|
L24: 27491000
|
|
L25: 27491500
|
|
L28: 27492000
|
|
L29: 27492500
|
|
L32: 27493000
|
|
ERR(103); 27493500
|
|
GO TO EXIT; 27495000=06154000=
|
|
L7: SUBHAND(FALSE); 27500000=06156000=
|
|
GO TO LDOT; 27505000=06156000=
|
|
L11: 27510000=06158000=
|
|
IMPFUN; 27515000=06158000=
|
|
STACKCT:= STACKCT-1; 27520000=06158000=
|
|
GO TO LDOT; 27525000=06158000=
|
|
L14: 27530000=06159000=
|
|
L15: 27535000=06160000=
|
|
STRMPROCSTMT; 27540000=06160000=
|
|
GO TO LDOT; 27545000=06160000=
|
|
L18: 27550000=06161000=
|
|
L19: 27555000=06162000=
|
|
PROCSTMT(FALSE); 27560000=06162000=
|
|
GO TO LDOT; 27565000=06162000=
|
|
L22: 27570000=06163000=
|
|
L23: 27575000=06163000=
|
|
L26: 27580000=06163000=
|
|
L27: 27585000=06163000=
|
|
L30: 27590000=06163000=
|
|
L31: 27595000=06164000=
|
|
TVAR:= FP; 27596000
|
|
VARIABLE(TVAR); 27600000=06164000=
|
|
GO TO LAMPER; 27605000=06164000=
|
|
L33: 27610000=06165000=
|
|
L35: 27615000=06166000=
|
|
EMIT(0 & ELBAT[I][11:30:10]); 27620000=06166000=
|
|
STEPIT; 27625000=06166000=
|
|
GO TO LAMPER; 27630000=06166000=
|
|
L34: 27635000=06167000=
|
|
L36: 27640000=06168000=
|
|
EMITNUM(C); 27645000=06168000=
|
|
STEPIT; 27650000=06168000=
|
|
GO TO LAMPER; 27655000=06168000=
|
|
L38: 27660000=06170000=
|
|
POLISHER(1); 27665000=06170000=
|
|
GO TO LDOT; 27670000=06170000=
|
|
L39: 27675000=06172000=
|
|
STEPIT; 27680000=06172000=
|
|
PRIMARY; 27685000=06172000=
|
|
STACKCT:= STACKCT-1; 27690000=06172000=
|
|
EMITO(LOD); 27695000=06172500=
|
|
GO TO LDOT; 27700000=06172500=
|
|
L37: 27705000=06174000=
|
|
STEPIT; 27710000=06174000=
|
|
AEXP; 27715000=06174000=
|
|
STACKCT:= STACKCT-1; 27720000=06174500=
|
|
IF ELCLASS ^= RTPAREN THEN 27725000=06175000=
|
|
BEGIN 27730000=06176000=
|
|
ERR(104); 27735000=06176000=
|
|
GO TO EXIT 27740000=06176000=
|
|
END; 27745000=06176000=
|
|
STEPIT; 27750000=06177000=
|
|
LDOT: 27755000=06178000=
|
|
DOT; 27760000=06178000=
|
|
LAMPER: 27765000=06179500=
|
|
STACKCT:= STACKCT+1; 27770000=06179500=
|
|
WHILE ELCLASS = AMPERSAND DO 27775000=06180000=
|
|
BEGIN 27780000=06181000=
|
|
STEPIT; 27785000=06181000=
|
|
PRIMARY; 27790000=06181000=
|
|
PARSE 27795000=06181000=
|
|
END; 27800000=06181000=
|
|
EXIT: 27805000=06182000=
|
|
END PRIMARY; 27810000=06182000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%27815000=06182000=
|
|
PROCEDURE IMPFUN; 27820000=06183000=
|
|
BEGIN 27825000=06184000=
|
|
REAL 27830000=06184000=
|
|
T1, 27835000=06184000=
|
|
T2; 27840000=06184000=
|
|
T1:= (T2:= ELBAT[I]).ADDRESS; 27845000=06185000=
|
|
PANA; 27850000=06186000=
|
|
IF T1 ^= 0 THEN 27855000=06187000=
|
|
EMITO(T1); 27860000=06187000=
|
|
ELSE 27865000=06188000=
|
|
BEGIN 27870000=06188000=
|
|
T1:= T2.LINK+T2.INCR+1; 27875000=06189000=
|
|
T2:= T2.LINK+2; 27880000=06190000=
|
|
FOR T2:= T2 STEP 1 UNTIL T1 DO 27885000=06191000=
|
|
EMIT(TAKE(T2)); 27890000=06191000=
|
|
END; 27895000=06192000=
|
|
END; 27900000=06193000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%27905000=06193000=
|
|
PROCEDURE SUBHAND(FROM); 27910000=06194000=
|
|
VALUE 27915000=06194000=
|
|
FROM; 27920000=06194000=
|
|
BOOLEAN 27925000=06194000=
|
|
FROM; 27930000=06194000=
|
|
BEGIN 27935000=06195000=
|
|
LABEL 27940000=06195000=
|
|
EXIT; 27945000=06195000=
|
|
REAL 27950000=06196000=
|
|
T1; 27955000=06196000=
|
|
T1:= TAKEFRST; 27960000=06197000=
|
|
IF ELCLASS ^= SUBID AND FROM THEN 27965000=06198000=
|
|
BEGIN 27970000=06199000=
|
|
IF STEPI ^= ASSIGNOP THEN 27975000=06199000=
|
|
BEGIN 27980000=06200000=
|
|
FLAG(503); 27985000=06200000=
|
|
GO TO EXIT 27990000=06200000=
|
|
END; 27995000=06200000=
|
|
STEPIT; 28000000=06201000=
|
|
AEXP; 28005000=06202000=
|
|
EMITO(XCH); 28010000=06203000=
|
|
GO TO EXIT; 28015000=06204000=
|
|
END; 28020000=06205000=
|
|
EMITL((L+6) DIV 4-(T1.[23:12]-1) DIV 4); 28025000=06206000=
|
|
EMITB(BBW, BUMPL, T1.[11:12]); 28030000=06207000=
|
|
STEPIT; 28035000=06208000=
|
|
ADJUST; 28040000=06208500=
|
|
EXIT: 28045000=06209000=
|
|
END SUBHAND; 28050000=06209000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%28055000=06209000=
|
|
28060000=06292000=
|
|
COMMENT IFEXP COMPILES CONDITIONAL EXPRESSIONS. IT REPORTS THE TYPE 28065000=06292000=
|
|
OF EXPRESSIONS AS EXPRSS REPORTS; 28070000=06293000=
|
|
INTEGER PROCEDURE IFEXP; 28075000=06294000=
|
|
BEGIN 28080000=06295000=
|
|
INTEGER 28085000=06295000=
|
|
TYPE, 28090000=06295000=
|
|
THENBRANCH, 28095000=06295000=
|
|
ELSEBRANCH; 28100000=06295000=
|
|
IFCLAUSE; 28105000=06296000=
|
|
STACKCT:= 0; 28110000=06296500=
|
|
THENBRANCH:= BUMPL; 28115000=06297000=
|
|
COMMENT SAVE L FOR LATER FIXUP; 28120000=06298000=
|
|
IFEXP:= TYPE:= EXPRSS; COMMENT COMPILE 1ST EXPRSS; 28125000=06299000=
|
|
STACKCT:= 0; 28135000=06299500=
|
|
ELSEBRANCH:= BUMPL; 28140000=06300000=
|
|
EMITB(BFC, THENBRANCH, L); 28145000=06301000=
|
|
IF ELCLASS ^= ELSEV THEN 28150000=06302000=
|
|
ERR(155) 28155000=06302000=
|
|
ELSE 28160000=06302000=
|
|
BEGIN 28165000=06302000=
|
|
STEPIT; 28170000=06303000=
|
|
AEXP; 28175000=06305000=
|
|
STACKCT:= 1; COMMENT THIS COMPILES PROPER TYPE SECOND EXPRSS; 28180000=06305000=
|
|
EMITB(BFW, ELSEBRANCH, L); 28190000=06307000=
|
|
EMIT(1); 28195000=06308000=
|
|
L:= L-1; 28200000=06308000=
|
|
COMMENT THIS IS USED BY EMITLNG TO CLEANUP CODE. COMPARE WITH 28205000=06309000=
|
|
BOOSEC, BOOCOMP, AND RELATION; 28210000=06310000=
|
|
END 28215000=06311000=
|
|
END IFEXP; 28220000=06311000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%28225000=06311000=
|
|
28230000=06312000=
|
|
COMMENT PARSE COMPILES CODE FOR THE CONCATENATE; 28235000=06312000=
|
|
PROCEDURE PARSE; 28240000=06313000=
|
|
BEGIN 28245000=06314000=
|
|
INTEGER 28250000=06314000=
|
|
FIRST, 28255000=06314000=
|
|
SECOND, 28260000=06314000=
|
|
THIRD; 28265000=06314000=
|
|
LABEL 28270000=06315000=
|
|
EXIT; 28275000=06315000=
|
|
IF ELCLASS = LFTBRKET THEN 28280000=06316000=
|
|
IF STEPI = LITNO THEN 28285000=06317000=
|
|
IF STEPI = COLON THEN 28290000=06318000=
|
|
IF STEPI = LITNO THEN 28295000=06319000=
|
|
IF STEPI = COLON THEN 28300000=06320000=
|
|
IF STEPI = LITNO THEN 28305000=06321000=
|
|
IF STEPI = RTBRKET THEN 28310000=06322000=
|
|
COMMENT IF TEST ARE PASSED THEN SYNTAX IS CORRECT; 28315000=06323000=
|
|
IF(FIRST:= ELBAT[I-5].ADDRESS)* 28320000=06325000=
|
|
(SECOND:= ELBAT[I-3].ADDRESS)* 28325000=06326000=
|
|
(THIRD:= ELBAT[I-1].ADDRESS) ^= 0 28330000=06326000=
|
|
THEN 28335000=06326000=
|
|
IF FIRST+THIRD <= 48 THEN 28340000=06327000=
|
|
IF SECOND+THIRD <= 48 THEN 28345000=06328000=
|
|
COMMENT IF TEST ARE PASSED THEN RANGES OF LITERALS ARE O.K.; 28350000=06329000=
|
|
BEGIN 28355000=06330000=
|
|
STEPIT; 28360000=06331000=
|
|
EMITD(SECOND, FIRST, THIRD); 28365000=06332000=
|
|
STACKCT:= 1; 28370000=06332500=
|
|
GO TO EXIT 28375000=06333000=
|
|
END; 28380000=06333000=
|
|
ERR(113); COMMENT ERROR IF SYNTAX OR RANGE FAILS; 28385000=06334000=
|
|
EXIT: 28395000=06335000=
|
|
END PARSE; 28400000=06335000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%28405000=06335000=
|
|
28410000=06336000=
|
|
COMMENT DOT COMPILES CODE FOR PARTIAL WORD DESIGNATORS, EXCEPT FOR 28415000=06336000=
|
|
THOSE CASES HANDLED BY THE VARIABLE ROUTINE; 28420000=06337000=
|
|
PROCEDURE DOT; 28425000=06338000=
|
|
BEGIN 28430000=06339000=
|
|
INTEGER 28435000=06339000=
|
|
FIRST, 28440000=06339000=
|
|
SECOND; 28445000=06339000=
|
|
LABEL 28450000=06339000=
|
|
EXIT; 28455000=06339000=
|
|
IF ELCLASS = PERIOD THEN 28460000=06340000=
|
|
BEGIN 28465000=06340000=
|
|
IF DOTSYNTAX(FIRST, SECOND) THEN 28470000=06341000=
|
|
GO TO EXIT; 28475000=06341000=
|
|
EMITI(0, FIRST, SECOND); 28480000=06344000=
|
|
STEPIT; 28485000=06345000=
|
|
EXIT: 28490000=06346000=
|
|
END 28495000=06346000=
|
|
END DOT; 28500000=06346000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%28505000=06346000=
|
|
PROCEDURE IFCLAUSE; 28510000=06409000=
|
|
BEGIN 28515000=06410000=
|
|
STEPIT; 28520000=06410000=
|
|
BEXP; 28525000=06410000=
|
|
IF ELCLASS ^= THENV THEN 28530000=06411000=
|
|
ERR(116) 28535000=06411000=
|
|
ELSE 28540000=06411000=
|
|
STEPIT 28545000=06411000=
|
|
END IFCLAUS; 28550000=06411000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%28555000=06411000=
|
|
28560000=06412000=
|
|
COMMENT PANA COMPILES THE CONSTRUCT: (<ARIT. EXP.>); 28565000=06412000=
|
|
PROCEDURE PANA; 28570000=06413000=
|
|
BEGIN 28575000=06414000=
|
|
IF STEPI ^= LEFTPAREN THEN 28580000=06415000=
|
|
ERR(105) 28585000=06416000=
|
|
ELSE 28590000=06416000=
|
|
BEGIN 28595000=06416000=
|
|
STEPIT; 28600000=06416000=
|
|
AEXP; 28605000=06416000=
|
|
IF ELCLASS ^= RTPAREN THEN 28610000=06416000=
|
|
ERR(104) 28615000=06417000=
|
|
ELSE 28620000=06417000=
|
|
STEPIT 28625000=06417000=
|
|
END 28630000=06417000=
|
|
END PANA; 28635000=06417000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%28640000=06417000=
|
|
28645000=06418000=
|
|
COMMENT BANA COMPILES THE CONSTRUCT: [<ARITH. EXP.>]; 28650000=06418000=
|
|
PROCEDURE BANA; 28655000=06419000=
|
|
BEGIN 28660000=06420000=
|
|
IF STEPI ^= LFTBRKET THEN 28665000=06421000=
|
|
ERR(117) 28670000=06422000=
|
|
ELSE 28675000=06422000=
|
|
BEGIN 28680000=06422000=
|
|
STEPIT; 28685000=06422000=
|
|
AEXP; 28690000=06422000=
|
|
IF ELCLASS ^= RTBRKET THEN 28695000=06422000=
|
|
ERR(118) 28700000=06423000=
|
|
ELSE 28705000=06423000=
|
|
STEPIT 28710000=06423000=
|
|
END 28715000=06423000=
|
|
END BANA; 28720000=06423000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%28725000=06423000=
|
|
28730000=07000000=
|
|
COMMENT THIS SECTION CONTAINS THE STATEMENT ROUTINES; 28735000=07000000=
|
|
28740000=07001000=
|
|
COMMENT COMPOUNDTAIL COMPILES COMPOUNDTAILS. IT ALSO ELIMINATES 28745000=07001000=
|
|
COMMENTS FOLLOWING ENDS. AFTER ANY ERROR, ERROR MESSAGES 28750000=07002000=
|
|
ARE SUPPRESSED. COMPOUNDTAIL IS PARTIALLY RESPONSIBLE 28755000=07003000=
|
|
FOR RESTORING THE ABILITY TO WRITE ERROR MESSAGES. SOME 28760000=07004000=
|
|
CARE IS ALSO TAKEN TO PREVENT READING BEYOND THE "END."; 28765000=07005000=
|
|
PROCEDURE COMPOUNDTAIL; 28770000=07006000=
|
|
BEGIN 28775000=07007000=
|
|
LABEL 28780000=07007000=
|
|
ANOTHER; 28785000=07007000=
|
|
I:= I-1; 28790000=07008000=
|
|
BEGINCTR:= BEGINCTR+1; 28795000=07008000=
|
|
ANOTHER: 28800000=07009000=
|
|
ERRORTOG:= TRUE; COMMENT ALLOW ERROR MESSAGES; 28805000=07009000=
|
|
STEPIT; 28815000=07010000=
|
|
IF STREAMTOG THEN 28820000=07011000=
|
|
STREAMSTMT 28825000=07011000=
|
|
ELSE 28830000=07011000=
|
|
STMT; 28835000=07011000=
|
|
IF ELCLASS = SEMICOLON THEN 28840000=07012000=
|
|
GO TO ANOTHER; 28845000=07012000=
|
|
IF ELCLASS ^= ENDV THEN 28850000=07014000=
|
|
BEGIN 28855000=07014000=
|
|
ERR(119); 28860000=07015000=
|
|
GO TO ANOTHER 28865000=07015000=
|
|
END; 28870000=07015000=
|
|
ENDTOG:= TRUE; 28875000=07016000=
|
|
DO 28880000=07017000=
|
|
STOPDEFINE:= TRUE 28885000=07018000=
|
|
UNTIL STEPI <= ENDV AND ELCLASS >= UNTILV OR NOT ENDTOG; 28890000=07019000=
|
|
ENDTOG:= FALSE; 28895000=07020000=
|
|
IF BEGINCTR:= BEGINCTR-1 ^= 0 EQV ELCLASS = PERIOD THEN 28900000=07022000=
|
|
BEGIN 28905000=07022000=
|
|
IF BEGINCTR = 0 THEN 28910000=07023000=
|
|
BEGIN 28915000=07024000=
|
|
FLAG(143); 28920000=07024000=
|
|
BEGINCTR:= 1; 28925000=07024000=
|
|
GO ANOTHER 28930000=07024000=
|
|
END; 28935000=07024000=
|
|
FLAG(120); 28940000=07025000=
|
|
FCR:= (LCR:= 9)-9; 28945000=07025010=
|
|
SBUFF:= CBUFF; 28946000
|
|
IF LISTER THEN 28950000=07025020=
|
|
PRINTCARD; 28955000=07025020=
|
|
END; 28965000=07025030=
|
|
IF ELCLASS = PERIOD THEN 28970000=07026000=
|
|
BEGIN 28975000=07027000=
|
|
GT5:= 6"ND;END."&6"E"[46:4:5]; 28980000=07028000=
|
|
CBUFF[0]:= GT5; 28985000=07029000=
|
|
LASTUSED:= 4; 28990000=07030000=
|
|
ELBAT[I:= I-2]:= SPECIAL[20]; 28995000=07031000=
|
|
ELCLASS:= SEMICOLON 29000000=07032000=
|
|
END 29005000=07033000=
|
|
END COMPOUNDTAIL; 29010000=07033000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%29015000=07033000=
|
|
REAL 29020000=07034000=
|
|
AXNUM; 29025000=07034000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%29026000
|
|
PROCEDURE ACTUALPARAPART(SBIT, INDEX); 29030000=07035000=
|
|
VALUE 29035000=07035000=
|
|
SBIT, 29040000=07035000=
|
|
INDEX; 29045000=07035000=
|
|
BOOLEAN 29050000=07036000=
|
|
SBIT; 29055000=07036000=
|
|
REAL 29060000=07036000=
|
|
INDEX; 29065000=07036000=
|
|
BEGIN 29070000=07037000=
|
|
LABEL 29075000=07037000=
|
|
EXIT, 29080000=07037000=
|
|
COMMON, 29085000=07037000=
|
|
ANOTHER, 29090000=07037000=
|
|
POL; 29095000=07037000=
|
|
REAL 29100000=07038000=
|
|
PCTR, 29105000=07038000=
|
|
SCLASS, 29110000=07038000=
|
|
ACLASS, 29115000=07038000=
|
|
TVAR; 29115500
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%29116000
|
|
PROCEDURE WRITEAX(LINE, ACCUM, AX, N, SEQ, SX); 29120000=07038100=
|
|
VALUE 29125000=07038100=
|
|
AX, N, SX; 29130000=07038100=
|
|
ARRAY 29131000
|
|
LINE, ACCUM, SEQ[0]; 29132000
|
|
REAL 29133000
|
|
AX, N, SX; 29134000
|
|
BEGIN 29135000=07038200=
|
|
STREAMLOCALS; 29136000
|
|
STREAMSETDI(LINE, 0); 29140000=07038200=
|
|
STREAMSMEARLIT(15*8, 6" "); 29145000=07038200=
|
|
STREAMSETDI(LINE, 0); 29150000=07038300=
|
|
STREAMSETSI(SEQ, SX); 29155000=07038300=
|
|
STREAMSKIPSI(-16); 29160000=07038300=
|
|
STREAMTRANSFERWDS(1); 29165000=07038300=
|
|
STREAMSKIPDI(+4); 29170000=07038400=
|
|
STREAMTRANSFERLIT(8, 6"ACCIDENT"); 29175000=07038400=
|
|
STREAMTRANSFERLIT(8, 6"AL ENTRY"); 29176000
|
|
STREAMTRANSFERLIT(4, 6" AT "); 29178000
|
|
STREAMSETSI(ACCUM, AX); 29180000=07038500=
|
|
STREAMSKIPSI(+3); 29185000=07038500=
|
|
STREAMTRANSFERCHR(N); 29190000=07038500=
|
|
STREAMSETSI(SEQ, SX); 29195000=07038600=
|
|
STREAMSETDI(SEQ, SX); 29200000=07038600=
|
|
STREAMSKIPDI(-16); 29205000=07038600=
|
|
STREAMTRANSFERWDS(1); 29210000=07038600=
|
|
END; 29215000=07038700=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%29216000
|
|
BOOLEAN 29220000=07039000=
|
|
VBIT, 29225000=07039000=
|
|
IDBIT; 29230000=07039000=
|
|
PCTR:= 1; 29235000=07040000=
|
|
ANOTHER: 29240000=07041000=
|
|
ACLASS:= STEPI & 0[0:0:1]; 29245000=07041000=
|
|
STACKCT:= 0; 29250000=07041200=
|
|
GT1:= TAKE(INDEX+PCTR); 29255000=07042000=
|
|
VBIT:= BOOLEAN(GT1.VO); 29260000=07043000=
|
|
SCLASS:= GT1.CLASS & 0[0:0:1]; 29265000=07044000=
|
|
IF VBIT THEN 29270000=07045000=
|
|
BEGIN 29275000=07045000=
|
|
AEXP; 29280000=07045000=
|
|
GO TO COMMON 29285000=07045000=
|
|
END; 29290000=07045000=
|
|
IF SBIT THEN 29295000=07046000=
|
|
SCLASS:= NAMEID; 29300000=07046000=
|
|
IDBIT:= BOOID < ACLASS AND ACLASS < LABELID; 29305000=07047000=
|
|
IF SCLASS = NAMEID THEN 29310000=07048000=
|
|
BEGIN 29315000=07049000=
|
|
IF IDBIT THEN 29320000=07050000=
|
|
BEGIN 29322000
|
|
TVAR:= FL; 29324000
|
|
VARIABLE(TVAR); 29325000=07050000=
|
|
END; 29326000
|
|
POL: 29330000=07052000=
|
|
IF ELCLASS = POLISHV THEN 29335000=07052000=
|
|
POLISHER(1) 29340000=07053000=
|
|
ELSE 29345000=07053000=
|
|
ERR(IF ELCLASS = 0 THEN 0 ELSE 123); 29350000=07053000=
|
|
GO TO COMMON; 29355000=07054000=
|
|
END; 29360000=07055000=
|
|
IF SCLASS = REALARRAYID THEN 29365000=07056000=
|
|
IF ACLASS = REALARRAYID THEN 29370000=07057000=
|
|
BEGIN 29375000=07058000=
|
|
TVAR:= FL; 29376000
|
|
VARIABLE(TVAR); 29380000=07058000=
|
|
GO TO COMMON 29385000=07058000=
|
|
END 29390000=07059000=
|
|
ELSE 29395000=07059000=
|
|
GO TO POL; 29400000=07059000=
|
|
IF SCLASS ^= REALID THEN 29405000=07060000=
|
|
BEGIN 29410000=07061000=
|
|
FLAG(503); 29415000=07061000=
|
|
AEXP; 29420000=07062000=
|
|
ERRORTOG:= TRUE; 29425000=07063000=
|
|
GO TO COMMON; 29430000=07064000=
|
|
END; 29435000=07065000=
|
|
GT1:= TABLE(I+1); 29440000=07066000=
|
|
IF GT1 = COMMA OR GT1 = RTPAREN THEN 29445000=07067000=
|
|
BEGIN 29450000=07068000=
|
|
IF IDBIT THEN 29455000=07068000=
|
|
BEGIN 29460000=07069000=
|
|
IF ACLASS = REALID AND BOOLEAN(ELBAT[I].FORMAL) THEN 29465000=07070000=
|
|
BEGIN 29470000=07070000=
|
|
CHECKER(ELBAT[I]); 29475000=07070500=
|
|
EMITPAIR(ELBAT[I], ADDRESS, LOD); 29480000=07071000=
|
|
STEPIT; 29485000=07072000=
|
|
END 29490000=07073000=
|
|
ELSE 29495000=07073000=
|
|
BEGIN 29496000
|
|
TVAR:= FL; 29498000
|
|
VARIABLE(TVAR); 29500000=07073000=
|
|
END; 29502000
|
|
GO TO COMMON 29505000=07074000=
|
|
END; 29510000=07074000=
|
|
IF ELCLASS <= STRNGCON AND ELCLASS > LABELID THEN 29515000=07076000=
|
|
BEGIN 29520000=07076000=
|
|
PRIMARY; 29525000=07076000=
|
|
GOTO COMMON 29530000=07076000=
|
|
END; 29535000=07076000=
|
|
END; 29540000=07077000=
|
|
EMITO(NOP); 29545000=07078000=
|
|
EMITO(NOP); 29550000=07078000=
|
|
SCLASS:= L; 29555000=07079000=
|
|
ADJUST; 29560000=07080000=
|
|
ACLASS:= L.[11:10]; 29565000=07081000=
|
|
IF IDBIT THEN 29570000=07082000=
|
|
BEGIN 29575000=07083000=
|
|
TVAR:= FL; 29576000
|
|
VARIABLE(TVAR); 29580000=07083000=
|
|
IF ELCLASS < AMPERSAND THEN 29585000=07084000=
|
|
GO TO COMMON; 29590000=07084000=
|
|
SIMPARITH; 29595000=07085000=
|
|
END 29600000=07086000=
|
|
ELSE 29605000=07086000=
|
|
AEXP; 29610000=07086000=
|
|
IF LISTER THEN 29615000=07086100=
|
|
BEGIN 29620000=07086200=
|
|
ACCUM[1]:= Q; 29625000=07086200=
|
|
WRITEAX 29630000=07086400=
|
|
(LIN, ACCUM, 1, Q.[35:6], INFO[LASTSEQROW,*], LASTSEQUENCE); 29635000=07086400=
|
|
WRITELINE; 29645000=07086500=
|
|
END; 29650000=07086600=
|
|
AXNUM:= AXNUM+1; 29655000=07086700=
|
|
EMITO(RTS); 29660000=07087000=
|
|
EMITB(BFW, SCLASS, L); 29665000=07088000=
|
|
EMITNUM(ACLASS); 29670000=07089000=
|
|
EMITPAIR(TAKE(PROINFO).ADDRESS, LOD); 29675000=07090000=
|
|
EMITO(INX); 29680000=07091000=
|
|
EMITN(512); 29685000=07092000=
|
|
EMITD(33, 18, 15); 29690000=07093000=
|
|
EMIT(0); 29695000=07093100=
|
|
EMITD(5, 5, 1); 29700000=07093200=
|
|
COMMON: 29705000=07094000=
|
|
PCTR:= PCTR+1; 29710000=07094000=
|
|
IF ELCLASS = COMMA THEN 29715000=07095000=
|
|
GO TO ANOTHER; 29720000=07095000=
|
|
IF ELCLASS ^= RTPAREN THEN 29725000=07096000=
|
|
BEGIN 29730000=07097000=
|
|
ERR(129); 29735000=07097000=
|
|
GO TO EXIT 29740000=07097000=
|
|
END; 29745000=07097000=
|
|
IF TAKE(INDEX).NODIMPART+1 ^= PCTR THEN 29750000=07098000=
|
|
BEGIN 29755000=07099000=
|
|
ERR(128); 29760000=07099000=
|
|
GO TO EXIT 29765000=07099000=
|
|
END; 29770000=07099000=
|
|
STEPIT; 29775000=07100000=
|
|
STACKCT:= 0; 29780000=07100500=
|
|
EXIT: 29785000=07101000=
|
|
END ACTUAL PARAPART; 29790000=07101000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%29795000=07101000=
|
|
PROCEDURE PROCSTMT(FROM); 29800000=07391000=
|
|
VALUE 29805000=07391000=
|
|
FROM; 29810000=07391000=
|
|
BOOLEAN 29815000=07391000=
|
|
FROM; 29820000=07391000=
|
|
BEGIN 29825000=07392000=
|
|
REAL 29830000=07393000=
|
|
HOLE, 29835000=07393000=
|
|
ADDRESS, 29840000=07393000=
|
|
TVAR; 29842000
|
|
REAL 29845000=07393100=
|
|
J; 29850000=07393100=
|
|
LABEL 29855000=07393100=
|
|
OK; 29860000=07393100=
|
|
LABEL 29865000=07394000=
|
|
EXIT; 29870000=07394000=
|
|
SCATTERELBAT; 29875000=07395000=
|
|
HOLE:= ELBAT[I]; 29880000=07396000=
|
|
ADDRESS:= ADDRSF; 29885000=07397000=
|
|
IF NESTOG THEN 29890000=07397100=
|
|
IF MODE ^= 0 THEN 29895000=07397200=
|
|
IF TABLE(I+1) ^= ASSIGNOP THEN 29900000=07397210=
|
|
BEGIN 29905000=07397300=
|
|
FOR J:= CALLINFO STEP 1 UNTIL CALLX DO 29910000=07397300=
|
|
IF CALL[J] = ADDRESS THEN 29915000=07397400=
|
|
GO TO OK; 29920000=07397400=
|
|
CALL[CALLX:= CALLX+1]:= ADDRESS; 29925000=07397500=
|
|
OK: 29930000=07397600=
|
|
END; 29935000=07397600=
|
|
CHECKER(HOLE); 29940000=07398000=
|
|
IF ELCLASS ^= PROCID THEN 29945000=07399000=
|
|
IF NOT FORMALF THEN 29950000=07400000=
|
|
IF TABLE(I+1) = ASSIGNOP THEN 29955000=07401000=
|
|
BEGIN 29960000=07402000=
|
|
TVAR:= 2-REAL(FROM); 29962000
|
|
VARIABLE(TVAR); 29965000=07402000=
|
|
GO TO EXIT 29970000=07402000=
|
|
END; 29975000=07402000=
|
|
COMMENT CALL VARIABLE TO HANDLE THIS ASSIGNMENT OPERATION; 29980000=07403000=
|
|
IF ELCLASS ^= PROCID EQV FROM THEN 29985000=07405000=
|
|
BEGIN 29990000=07405000=
|
|
ERR(159); 29995000=07405000=
|
|
GO TO EXIT 30000000=07405000=
|
|
END; 30005000=07405000=
|
|
COMMENT IT IS PROCEDURE IF AND ONLY WE COME FORM STMT; 30010000=07406000=
|
|
STEPIT; 30015000=07407000=
|
|
EMITO(MKS); 30020000=07408000=
|
|
IF ELCLASS = LEFTPAREN THEN 30025000=07410000=
|
|
ACTUALPARAPART(FALSE, GIT(HOLE)) 30030000=07411000=
|
|
ELSE 30035000=07411000=
|
|
IF FORMALF THEN 30040000=07411000=
|
|
L:= L-1; 30045000=07411000=
|
|
ELSE 30050000=07412000=
|
|
IF TAKE(GIT(HOLE)).NODIMPART ^= 0 THEN 30055000=07412000=
|
|
ERR(128); 30060000=07412000=
|
|
EMITV(ADDRESS); 30065000=07413000=
|
|
EXIT: 30070000=07425000=
|
|
END PROCSTMT; 30075000=07425000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%30080000=07425000=
|
|
PROCEDURE STRMPROCSTMT; 30085000=07426000=
|
|
BEGIN 30090000=07427000=
|
|
REAL 30095000=07427000=
|
|
WHOLE, 30100000=07427000=
|
|
FIX, 30105000=07427000=
|
|
T1; 30110000=07427000=
|
|
WHOLE:= ELBAT[I]; 30115000=07430000=
|
|
FIX:= -1; 30120000=07430000=
|
|
IF ELCLASS ^= STRPROCID THEN 30125000=07431000=
|
|
EMIT(0); 30130000=07431000=
|
|
IF WHOLE.LVL ^= 1 THEN 30135000=07432000=
|
|
BEGIN 30140000=07433000=
|
|
FIX:= L; 30145000=07433000=
|
|
L:= L+1 30150000=07433000=
|
|
END; 30155000=07433000=
|
|
EMITO(MKS); 30160000=07434000=
|
|
T1:= TAKEFRST.[46:6]; 30165000=07435000=
|
|
FOR GT1:= 1 STEP 1 UNTIL T1 DO 30170000=07436000=
|
|
EMIT(0); 30175000=07436000=
|
|
IF STEPI ^= LEFTPAREN THEN 30180000=07437000=
|
|
ERR(128) 30185000=07438000=
|
|
ELSE 30190000=07438000=
|
|
BEGIN 30195000=07438000=
|
|
ACTUALPARAPART(TRUE, GIT(WHOLE)); 30200000=07438000=
|
|
IF FIX < 0 THEN 30205000=07439000=
|
|
EMITV(WHOLE.ADDRESS) 30210000=07440000=
|
|
ELSE 30215000=07440000=
|
|
BEGIN 30220000=07440000=
|
|
T1:= L; 30225000=07440000=
|
|
L:= FIX; 30230000=07440000=
|
|
WHOLE:= TAKE(GIT(WHOLE)); 30235000=07441000=
|
|
EMITNUM(T1+2-WHOLE.[31:12]); 30240000=07442000=
|
|
L:= T1; 30245000=07443000=
|
|
EMITB(BBW, BUMPL, WHOLE.[19:12]); 30250000=07444000=
|
|
END; 30255000=07445000=
|
|
END 30260000=07446000=
|
|
END STRMPROCSTMT; 30265000=07446000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%30270000=07446000=
|
|
INTEGER PROCEDURE BAE; 30275000=07458000=
|
|
BEGIN 30280000=07459000=
|
|
BAE:= BUMPL; 30285000=07459000=
|
|
CONSTANTCLEAN; 30290000=07459000=
|
|
ADJUST 30295000=07459000=
|
|
END BAE; 30300000=07459000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%30305000=07459000=
|
|
30310000=07460000=
|
|
COMMENT RELSESTMT COMPILES THE RELEASE STATEMENT; 30315000=07460000=
|
|
30320000=07481000=
|
|
COMMENT DOSTMT HANDLES THE DO STATEMENT; 30325000=07481000=
|
|
PROCEDURE DOSTMT; 30330000=07482000=
|
|
BEGIN 30335000=07483000=
|
|
INTEGER 30340000=07483000=
|
|
TL; 30345000=07483000=
|
|
FOULED:= L; 30350000=07483500=
|
|
STEPIT; 30355000=07485000=
|
|
TL:= L; 30360000=07485000=
|
|
STMT; 30365000=07485000=
|
|
IF ELCLASS ^= UNTILV THEN 30370000=07485000=
|
|
ERR(131) 30375000=07486000=
|
|
ELSE 30380000=07486000=
|
|
BEGIN 30385000=07486000=
|
|
STEPIT; 30390000=07487000=
|
|
BEXP; 30395000=07487000=
|
|
EMITB(BBC, BUMPL, TL) 30400000=07487000=
|
|
END 30405000=07488000=
|
|
END DOSTMT; 30410000=07488000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%30415000=07488000=
|
|
30420000=07489000=
|
|
COMMENT WHILESTMT COMPILES THE WHILE STATEMENT; 30425000=07489000=
|
|
PROCEDURE WHILESTMT; 30430000=07490000=
|
|
BEGIN 30435000=07491000=
|
|
INTEGER 30440000=07491000=
|
|
BACK, 30445000=07491000=
|
|
FRONT; 30450000=07491000=
|
|
FOULED:= L; 30455000=07491500=
|
|
STEPIT; 30460000=07493000=
|
|
BACK:= L; 30465000=07493000=
|
|
BEXP; 30470000=07493000=
|
|
FRONT:= BUMPL; 30475000=07493000=
|
|
IF ELCLASS ^= DOV THEN 30480000=07494000=
|
|
ERR(132) 30485000=07494000=
|
|
ELSE 30490000=07494000=
|
|
BEGIN 30495000=07495000=
|
|
STEPIT; 30500000=07495000=
|
|
STMT; 30505000=07495000=
|
|
EMITB(BBW, BUMPL, BACK); 30510000=07495000=
|
|
CONSTANTCLEAN; 30515000=07496000=
|
|
EMITB(BFC, FRONT, L) 30520000=07496000=
|
|
END 30525000=07496000=
|
|
END WHILESTMT; 30530000=07496000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%30535000=07496000=
|
|
30540000=07497000=
|
|
COMMENT GOSTMT COMPILES GO TO STATEMENTS. GOSTMT LOOKS AT THE 30545000=07497000=
|
|
EXPRESSION. IF IT IS SIMPLE ENOUGH WE GO DIRECTLY. 30550000=07498000=
|
|
OTHERWISE A CALL ON THE MCP IS GENERATED IN ORDER TO GET 30555000=07499000=
|
|
STORAGE RETURNED. SEE DEXP AND GENGO; 30560000=07500000=
|
|
PROCEDURE GOSTMT; 30565000=07501000=
|
|
BEGIN 30570000=07502000=
|
|
REAL 30575000=07503000=
|
|
ELBW; 30580000=07503000=
|
|
LABEL 30585000=07504000=
|
|
GOMCP, 30590000=07504000=
|
|
EXIT; 30595000=07504000=
|
|
IF STEPI = TOV THEN 30600000=07505000=
|
|
STEPIT; 30605000=07505000=
|
|
IF ELCLASS = LABELID THEN 30610000=07506000=
|
|
TB1:= TRUE 30615000=07507000=
|
|
ELSE 30620000=07507000=
|
|
IF ELCLASS = SWITCHID THEN 30625000=07507000=
|
|
TB1:= FALSE 30630000=07511000=
|
|
ELSE 30635000=07511000=
|
|
BEGIN 30640000=07511000=
|
|
IF ELCLASS = POLISHV THEN 30645000=07511000=
|
|
BEGIN 30650000=07512000=
|
|
POLISHER(1); 30655000=07512000=
|
|
EMITO(BFW) 30660000=07512000=
|
|
END 30665000=07513000=
|
|
ELSE 30670000=07513000=
|
|
ERR(501); 30675000=07513000=
|
|
GO TO EXIT 30680000=07515000=
|
|
END; 30685000=07515000=
|
|
IF NOT LOCAL(ELBAT[I]) THEN 30690000=07516000=
|
|
BEGIN 30695000=07516100=
|
|
IF TB1 THEN 30700000=07516200=
|
|
BEGIN 30705000=07516300=
|
|
EMITV(GNAT(ELBAT[I])); 30710000=07516300=
|
|
EMITO(BFW); 30715000=07516400=
|
|
STEPIT; 30720000=07516500=
|
|
GO TO EXIT 30725000=07516600=
|
|
END; 30730000=07516600=
|
|
BEGIN 30735000=07517000=
|
|
ERR(501); 30740000=07517000=
|
|
GO TO EXIT 30745000=07517000=
|
|
END; 30750000=07517000=
|
|
END; 30755000=07517500=
|
|
IF TB1 THEN 30760000=07518000=
|
|
BEGIN 30765000=07518000=
|
|
GOGEN(ELBAT[I], BFW); 30770000=07518000=
|
|
STEPIT; 30775000=07518000=
|
|
CONSTANTCLEAN; 30780000=07519000=
|
|
GO EXIT 30785000=07519000=
|
|
END 30790000=07520000=
|
|
ELSE 30795000=07520000=
|
|
BEGIN 30800000=07520000=
|
|
ELBW:= ELBAT[I]; 30805000=07521000=
|
|
BANA; 30810000=07523000=
|
|
EMITO(DUP); 30815000=07524000=
|
|
EMITO(ADD); 30820000=07525000=
|
|
EMITO(BFW); 30825000=07526000=
|
|
GT3:= TAKE(GT4:= GIT(ELBW))+GT4; 30830000=07527000=
|
|
FOR GT4:= GT4+1 STEP 1 UNTIL GT3 DO 30835000=07528000=
|
|
GOGEN(TAKE(GT4), BFW); 30840000=07529000=
|
|
END; 30845000=07530000=
|
|
EXIT: 30850000=07531000=
|
|
END GOSTMT; 30855000=07531000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%30860000=07531000=
|
|
PROCEDURE GOGEN(LABELBAT, BRANCHTYPE); 30865000=07535000=
|
|
VALUE 30870000=07536000=
|
|
LABELBAT, 30875000=07536000=
|
|
BRANCHTYPE; 30880000=07536000=
|
|
REAL 30885000=07537000=
|
|
LABELBAT, 30890000=07537000=
|
|
BRANCHTYPE; 30895000=07537000=
|
|
BEGIN 30900000=07538000=
|
|
IF BOOLEAN(GT1:= TAKE(GT2:= GIT(LABELBAT))).[46:1] THEN 30905000=07540000=
|
|
EMITB(BRANCHTYPE, BUMPL, GT1.[11:12]) 30910000=07541000=
|
|
COMMENT LABELR SETS THE SIGN OF THE ADDITIONAL INFO FOR A LABEL 30915000=07541000=
|
|
NEGATIVE WHEN THE LABEL IS ENCOUNTERED. SO THIS MEANS 30920000=07542000=
|
|
THAT WE NOW KNOW WHERE TO GO; 30925000=07543000=
|
|
ELSE 30930000=07544000=
|
|
BEGIN 30935000=07544000=
|
|
EMIT(GT1); 30940000=07544000=
|
|
EMIT(BRANCHTYPE); 30945000=07544000=
|
|
PUT(GT1 & L[11:11:12], GT2) 30950000=07545000=
|
|
END 30955000=07545000=
|
|
END GOGEN; 30960000=07545000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%30965000=07545000=
|
|
30970000=07546000=
|
|
COMMENT SIMPGO IS USED ONLY BY THE IF STMT ROUTINE. IT DETERMINES IF 30975000=07546000=
|
|
A STATEMENT IS A SIMPLE GO TO STATEMENT; 30980000=07547000=
|
|
BOOLEAN PROCEDURE SIMPGO; 30985000=07548000=
|
|
BEGIN 30990000=07549000=
|
|
LABEL 30995000=07549000=
|
|
EXIT; 31000000=07549000=
|
|
IF ELCLASS = GOV THEN 31005000=07551000=
|
|
BEGIN 31010000=07551000=
|
|
IF STEPI = TOV THEN 31015000=07552000=
|
|
STEPIT; 31020000=07552000=
|
|
IF ELCLASS = LABELID THEN 31025000=07553000=
|
|
IF LOCAL(ELBAT[I]) THEN 31030000=07554000=
|
|
BEGIN 31035000=07555000=
|
|
SIMPGO:= TRUE; 31040000=07555000=
|
|
GO EXIT 31045000=07555000=
|
|
END; 31050000=07555000=
|
|
I:= I-1; 31055000=07556000=
|
|
ELCLASS:= GOV 31060000=07556000=
|
|
END; 31065000=07556000=
|
|
EXIT: 31070000=07557000=
|
|
END SIMPGO; 31075000=07557000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%31080000=07557000=
|
|
31085000=07558000=
|
|
COMMENT IFSTMT COMPILES IF STATEMENTS. SPECIAL CARE IS TAKEN TO 31090000=07558000=
|
|
OPTIMIZE CODE IN THE NEIGHBORHOOD OF THE JUMPS. TO SOME 31095000=07559000=
|
|
EXTENT SUPPERFULOUS BRANCHING IS AVOIDED; 31100000=07560000=
|
|
PROCEDURE IFSTMT; 31105000=07561000=
|
|
BEGIN 31110000=07562000=
|
|
REAL 31115000=07562000=
|
|
T1, 31120000=07562000=
|
|
T2; 31125000=07562000=
|
|
LABEL 31130000=07562000=
|
|
EXIT; 31135000=07562000=
|
|
IFCLAUSE; 31140000=07563000=
|
|
IF SIMPGO THEN 31145000=07565000=
|
|
BEGIN 31150000=07565000=
|
|
T1:= ELBAT[I]; 31155000=07566000=
|
|
IF STEPI = ELSEV THEN 31160000=07568000=
|
|
BEGIN 31165000=07568000=
|
|
STEPIT; 31170000=07569000=
|
|
IF SIMPGO THEN 31175000=07571000=
|
|
BEGIN 31180000=07571000=
|
|
GOGEN(ELBAT[I], BFC); 31185000=07572000=
|
|
GOGEN(T1, BFW); 31190000=07572000=
|
|
STEPIT; 31195000=07573000=
|
|
GO TO EXIT 31200000=07573000=
|
|
END 31205000=07573000=
|
|
ELSE 31210000=07573000=
|
|
BEGIN 31215000=07573000=
|
|
EMITLNG; 31220000=07573000=
|
|
GOGEN(T1, BFC); 31225000=07573000=
|
|
STMT; 31230000=07574000=
|
|
GO TO EXIT 31235000=07574000=
|
|
END 31240000=07574000=
|
|
END; 31245000=07574000=
|
|
EMITLNG; 31250000=07575000=
|
|
GOGEN(T1, BFC); 31255000=07575000=
|
|
GO EXIT 31260000=07576000=
|
|
END; 31265000=07576000=
|
|
T1:= BUMPL; 31270000=07577000=
|
|
STMT; 31275000=07577000=
|
|
IF ELCLASS ^= ELSEV THEN 31280000=07578000=
|
|
BEGIN 31285000=07579000=
|
|
IF L-T1 > 1023 THEN 31290000=07579000=
|
|
ADJUST; 31295000=07579000=
|
|
EMITB(BFC, T1, L); 31300000=07579000=
|
|
GO EXIT 31305000=07579100=
|
|
END; 31310000=07579100=
|
|
STEPIT; 31315000=07580000=
|
|
IF SIMPGO THEN 31320000=07582000=
|
|
BEGIN 31325000=07582000=
|
|
T2:= L; 31330000=07583000=
|
|
L:= T1-2; 31335000=07583000=
|
|
GOGEN(ELBAT[I], BFC); 31340000=07583000=
|
|
L:= T2; 31345000=07583000=
|
|
STEPIT; 31350000=07584000=
|
|
GO EXIT 31355000=07584000=
|
|
END; 31360000=07584000=
|
|
T2:= BUMPL; 31365000=07585000=
|
|
CONSTANTCLEAN; 31370000=07585000=
|
|
IF L-T1 > 1023 THEN 31375000=07585100=
|
|
ADJUST; 31380000=07585100=
|
|
EMITB(BFC, T1, L); 31385000=07585100=
|
|
STMT; 31390000=07585100=
|
|
IF L-T2 > 1023 THEN 31395000=07586000=
|
|
ADJUST; 31400000=07586000=
|
|
EMITB(BFW, T2, L); 31405000=07586000=
|
|
EXIT: 31410000=07587000=
|
|
END IFSTMT; 31415000=07587000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%31420000=07587000=
|
|
31425000=07588000=
|
|
COMMENT LABELR HANDLES LABELED STATEMENTS. IT PUTS L INTO THE 31430000=07588000=
|
|
ADDITIONAL INFO AND MAKES ITS SIGN NEGATIVE. IT COMPILES 31435000=07589000=
|
|
AT THE SAME TIME ALL THE PREVIOUS FORWARD REFERENCES SET 31440000=07590000=
|
|
UP FOR IT BY GOGEN. (THE ADDITIONAL INFO LINKS TO A LIST 31445000=07591000=
|
|
IN THE CODE ARRAY OF ALL FORWARD REFERENCES); 31450000=07592000=
|
|
PROCEDURE LABELR; 31455000=07593000=
|
|
BEGIN 31460000=07594000=
|
|
LABEL 31465000=07594000=
|
|
EXIT, 31470000=07594000=
|
|
ROUND; 31475000=07594000=
|
|
DEFINE 31480000=07595000=
|
|
ELBATWORD = RR9 #, 31485000=07595000=
|
|
LINK = GT2 #, 31490000=07595000=
|
|
INDEX = GT3 #, 31495000=07595000=
|
|
ADDITIONAL = GT4 #, 31500000=07596000=
|
|
NEXTLINK = GT5 #; 31505000=07596000=
|
|
REAL 31510000=07596500=
|
|
OLDL; 31515000=07596500=
|
|
DO BEGIN 31520000=07597000=
|
|
OLDL:= L; 31525000=07597000=
|
|
IF STEPI ^= COLON THEN 31530000=07597500=
|
|
BEGIN 31535000=07598000=
|
|
ERR(133); 31540000=07598000=
|
|
GO TO EXIT 31545000=07598000=
|
|
END; 31550000=07598000=
|
|
IF NOT LOCAL(ELBATWORD:= ELBAT[I-1]) THEN 31555000=07600000=
|
|
BEGIN 31560000=07600000=
|
|
FLAG(134); 31565000=07600000=
|
|
GO TO ROUND 31570000=07600000=
|
|
END; 31575000=07600000=
|
|
IF STEPI = COLON THEN 31580000=07600100=
|
|
BEGIN 31585000=07600200=
|
|
I:= I-1; 31590000=07600200=
|
|
ADJUST 31595000=07600200=
|
|
END 31600000=07600300=
|
|
ELSE 31605000=07600300=
|
|
IF ELCLASS = LITNO THEN 31610000=07600300=
|
|
L:= 4*C 31615000=07600300=
|
|
ELSE 31620000=07600300=
|
|
IF ELCLASS = ASTRISK THEN 31625000=07600400=
|
|
BEGIN 31630000=07600410=
|
|
IF MODE ^= 0 OR ASTOG THEN 31635000=07600410=
|
|
FLAG(505); 31640000=07600420=
|
|
ASTOG:= TRUE; 31645000=07600430=
|
|
L:= 4*PRTI; 31650000=07600440=
|
|
END 31655000=07600500=
|
|
ELSE 31660000=07600500=
|
|
I:= I-2; 31665000=07600500=
|
|
IF STEPI ^= COLON THEN 31670000=07600600=
|
|
BEGIN 31675000=07600700=
|
|
ERR(133); 31680000=07600700=
|
|
GO TO EXIT 31685000=07600700=
|
|
END; 31690000=07600700=
|
|
IF L < OLDL THEN 31695000=07600800=
|
|
BEGIN 31700000=07600900=
|
|
FLAG(504); 31705000=07600900=
|
|
GO TO ROUND 31710000=07600900=
|
|
END; 31715000=07600900=
|
|
GT1:= TABLE(I+1); 31720000=07600950=
|
|
LINK:= (ADDITIONAL:= TAKE(INDEX:= GIT(ELBATWORD))).[11:12]; 31725000=07602000=
|
|
IF ADDITIONAL < 0 THEN 31730000=07603000=
|
|
BEGIN 31735000=07604000=
|
|
FLAG(135); 31740000=07604000=
|
|
GO TO ROUND 31745000=07604000=
|
|
END; 31750000=07604000=
|
|
FOULED:= L; 31755000=07604010=
|
|
IF TABLE(I+1) = COLON THEN 31760000=07604020=
|
|
BEGIN 31765000=07604030=
|
|
IF LINK ^= 0 THEN 31770000=07604040=
|
|
BEGIN 31775000=07604040=
|
|
OLDL:= L; 31780000=07604040=
|
|
DO BEGIN 31785000=07604050=
|
|
NEXTLINK:= GET(LINK); 31790000=07604050=
|
|
L:= LINK; 31795000=07604060=
|
|
IF OLDL.[11:10]-L.[11:10] >= 128 THEN 31800000=07604068=
|
|
FLAG(50) 31805000=07604068=
|
|
ELSE 31810000=07604068=
|
|
EMIT(OLDL-LINK & 0[1:1:2]+0 & NEXTLINK[1:1:2]+3072);31815000=07604080=
|
|
L:= L-1; 31825000=07604085=
|
|
END 31830000=07604090=
|
|
UNTIL LINK:= LINK-NEXTLINK DIV 4 = L; 31835000=07604090=
|
|
L:= OLDL; 31840000=07604100=
|
|
END; 31845000=07604100=
|
|
STEPIT; 31850000=07604100=
|
|
DO 31855000=07604110=
|
|
IF STEPI <= STRNGCON AND ELCLASS >= NONLITNO THEN 31860000=07604120=
|
|
EMITWORD(C) 31865000=07604130=
|
|
ELSE 31870000=07604130=
|
|
BEGIN 31875000=07604130=
|
|
ERR(500); 31880000=07604130=
|
|
I:= I-1 31885000=07604130=
|
|
END 31890000=07604140=
|
|
UNTIL STEPI ^= COMMA; 31895000=07604140=
|
|
I:= I-1; 31900000=07604150=
|
|
END 31905000=07605000=
|
|
ELSE 31910000=07605000=
|
|
WHILE LINK ^= 0 DO 31915000=07606000=
|
|
BEGIN 31920000=07606000=
|
|
NEXTLINK:= GET(LINK-2); 31925000=07607000=
|
|
IF L-LINK > 1023 THEN 31930000=07607100=
|
|
ADJUST; 31935000=07607100=
|
|
EMITB(GET(LINK-1), LINK, L); 31940000=07608000=
|
|
LINK:= NEXTLINK 31945000=07609000=
|
|
END; 31950000=07609000=
|
|
PUT(-ADDITIONAL & L[11:11:12], INDEX); 31955000=07610000=
|
|
ROUND: 31960000=07645000=
|
|
ERRORTOG:= TRUE 31965000=07645000=
|
|
END 31970000=07645000=
|
|
UNTIL STEPI ^= LABELID; 31975000=07645000=
|
|
EXIT: 31980000=07646000=
|
|
END LABELR; 31985000=07646000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%31990000=07646000=
|
|
PROCEDURE FILLSTMT(SIZE); 31995000=07647000=
|
|
VALUE 32000000=07647000=
|
|
SIZE; 32005000=07647000=
|
|
INTEGER 32010000=07647000=
|
|
SIZE; 32015000=07647000=
|
|
BEGIN 32020000=07647500=
|
|
32025000=07648000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%32026000
|
|
COMMENT "COCT" PERFORMS THE OCTAL CONVERT FOR THE FILL STATEMENT. 32030000=07648000=
|
|
IF THERE ARE ANY NON-OCTAL DIGITS, THIS PROCEDURE RETURNS 32035000=07648500=
|
|
A ZERO AND THEN THE 3 LOW-ORDER BITS OF THE BAD DIGIT ARE 32040000=07649000=
|
|
RESET AND IGNORED AND ERROR NUMBER 303 IS PRINTED. "COCT" 32045000=07649500=
|
|
ALLOWS FLAG BITS TO BE SET, WHEREAS "OCTIZE" DOES NOT. 32050000=07650000=
|
|
N NUMBER OF CHARACTERS TO BE CONVERTED. 32055000=07650500=
|
|
SKBIT NUMBER OF BITS TO SKIP BEFORE STARTING CONVERSION. 32060000=07651000=
|
|
THIS IS BECAUSE THE NO. OF CHARS. MAY BE LESS THAN 32065000=07651500=
|
|
8 AND IT MUST BE RIGHT JUSTIFIED IN CD(CODEFILE). 32070000=07652000=
|
|
ACC ADDRESS OF THE ACCUM WHERE ALPHA INFO IS KEPT. 32075000=07652500=
|
|
; 32080000=07653000=
|
|
REAL PROCEDURE COCT(N, SKBIT, ACC, AX, CD, CX); 32085000=07653500=
|
|
VALUE 32095000=07653500=
|
|
N, SKBIT, AX, CX; 32100000=07653500=
|
|
REAL 32105000=07653500=
|
|
N, SKBIT, AX, CX; 32106000
|
|
ARRAY 32107000
|
|
ACC, CD[0]; 32108000
|
|
BEGIN 32110000=07654000=
|
|
STREAMLOCALS; 32112000
|
|
STREAMSETSI(ACC, AX); 32115000=07654500=
|
|
STREAMSKIPSI(+6); 32120000=07654500=
|
|
STREAMSETDI(CD, CX); 32125000=07654500=
|
|
STREAMTRANSFERLIT(8, 6"00000000"); 32130000=07654500=
|
|
STREAMSETDI(CD, CX); 32135000=07655000=
|
|
STREAMSKIPDB(SKBIT); 32140000=07655000=
|
|
TALLY:= 1; 32145000=07655000=
|
|
THRU N DO 32150000=07656000=
|
|
BEGIN 32151000
|
|
IF STREAMSCGTR(6"7") THEN 32152000
|
|
TALLY:= 0; 32153000
|
|
STREAMSKIPSB(3); 32154000
|
|
THRU 3 DO 32155000=07656000=
|
|
BEGIN 32155500
|
|
IF STREAMTESTSB THEN 32156000
|
|
STREAMSETDB(1) 32156500
|
|
ELSE 32157000
|
|
STREAMSKIPDB(1); 32157500
|
|
STREAMSKIPSB(1); 32158000
|
|
END; 32158500
|
|
END; 32159000
|
|
32159500
|
|
COCT:= TALLY 32160000=07657000=
|
|
END COCT; 32165000=07657000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%32166000
|
|
REAL 32170000=07657500=
|
|
T2; 32175000=07657500=
|
|
LABEL 32180000=07658000=
|
|
L1; 32185000=07658000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%32186000
|
|
DEFINE ZEERO(D, DX) = 32190000=07658500=
|
|
BEGIN 32195000=07659000=
|
|
REPLACE POINTER(D[DX],0) BY 6"00000000" FOR 31*32+30+1 WORDS; 32200000
|
|
END ZEERO #; 32225000=07660500=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%32226000
|
|
STREAMTOG:= BOOLEAN(2); 32230000=07661000=
|
|
SEGMENTSTART(TRUE); 32235000=07661500=
|
|
IF STEPI ^= ASSIGNOP THEN 32240000=07662000=
|
|
ZEERO(CODE, 1) 32245000=07662500=
|
|
ELSE 32250000=07662500=
|
|
BEGIN 32255000=07662500=
|
|
FOR T2:= 1 STEP 1 UNTIL SIZE DO 32260000=07663000=
|
|
BEGIN 32265000=07663500=
|
|
IF STEPI > IDMAX THEN 32270000=07664000=
|
|
BEGIN 32275000=07664500=
|
|
IF ELCLASS ^= LITNO AND ELCLASS ^= NONLITNO THEN 32280000=07665000=
|
|
IF ELCLASS ^= STRNGCON THEN 32285000=07665500=
|
|
IF ELCLASS = ADOP AND(STEPI = NONLITNO OR ELCLASS = LITNO)32290000=07666500=
|
|
THEN 32295000=07666500=
|
|
C:= C & ELBAT[I-1][46:26:1] 32300000=07667500=
|
|
ELSE 32305000=07667500=
|
|
BEGIN 32310000=07667500=
|
|
ERROR(302); 32315000=07667500=
|
|
GO TO L1 32320000=07667500=
|
|
END; 32325000=07667500=
|
|
IF ELCLASS = STRNGCON AND COUNT = 8 THEN 32330000=07668000=
|
|
MOVECHARACTERS(8, ACCUM, 1, 3, CODE, T2, 0) 32335000=07669000=
|
|
ELSE 32340000=07669000=
|
|
CODE[T2]:= C 32345000=07669500=
|
|
END 32350000=07670000=
|
|
ELSE 32355000=07670000=
|
|
IF COUNT <= 19 AND ACCUM[1].[29:18] = 6"OCT" THEN 32360000=07670000=
|
|
BEGIN 32365000=07670500=
|
|
IF COCT(COUNT-3, 48-(COUNT-3)*3, ACCUM, 1, CODE, T2) = 0 32370000=07671500=
|
|
THEN 32375000=07671500=
|
|
FLAG(303) 32380000=07672500=
|
|
END 32385000=07672500=
|
|
ELSE 32390000=07672500=
|
|
BEGIN 32395000=07672500=
|
|
ERROR(302); 32400000=07672500=
|
|
GO TO L1 32405000=07672500=
|
|
END; 32410000=07672500=
|
|
IF STEPI ^= COMMA THEN 32415000=07673000=
|
|
GO TO L1 32420000=07673500=
|
|
END; 32425000=07673500=
|
|
ERROR(54); 32430000=07674000=
|
|
END; 32435000=07674500=
|
|
L1: RIGHT(SIZE*4); 32440000=07675500=
|
|
STREAMTOG:= FALSE; 32445000=07676000=
|
|
SEGMENT(SIZE, 0); 32450000=07676500=
|
|
PROGDESCBLDR(ADDRSF, TRUE, SIZE, DDES); 32455000=07677000=
|
|
END FILLSTMT; 32460000=07677500=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%32465000=07677500=
|
|
PROCEDURE STMT; 32470000=07711000=
|
|
BEGIN 32475000=07712000=
|
|
REAL 32476000
|
|
TVAR; 32478000
|
|
LABEL 32480000=07713000=
|
|
L1, 32485000=07713000=
|
|
L2, 32490000=07713000=
|
|
L3, 32495000=07713000=
|
|
L4, 32500000=07713000=
|
|
L5, 32505000=07713000=
|
|
L6, 32510000=07713000=
|
|
L7, 32515000=07713000=
|
|
L8, 32520000=07713000=
|
|
L9, 32525000=07713000=
|
|
L10, 32530000=07714000=
|
|
L11, 32535000=07714000=
|
|
L12, 32540000=07714000=
|
|
L13, 32545000=07714000=
|
|
L14, 32550000=07714000=
|
|
L15, 32555000=07714000=
|
|
L16, 32560000=07714000=
|
|
L17, 32565000=07714000=
|
|
L18, 32570000=07714000=
|
|
L19, 32575000=07714000=
|
|
L20, 32580000=07715000=
|
|
L21, 32585000=07715000=
|
|
L22, 32590000=07715000=
|
|
L23, 32595000=07715000=
|
|
L24, 32600000=07715000=
|
|
L25, 32605000=07715000=
|
|
L26, 32610000=07715000=
|
|
L27, 32615000=07715000=
|
|
L28, 32620000=07715000=
|
|
L29, 32625000=07715000=
|
|
L30, 32630000=07716000=
|
|
L31, 32635000=07716000=
|
|
L32, 32640000=07716000=
|
|
L33, 32645000=07716000=
|
|
L34, 32650000=07716000=
|
|
L35, 32655000=07716000=
|
|
L36, 32660000=07716000=
|
|
L37, 32665000=07716000=
|
|
L38, 32670000=07716000=
|
|
L39, 32675000=07716000=
|
|
L40, 32680000=07717000=
|
|
L41, 32685000=07717000=
|
|
L42, 32690000=07717000=
|
|
L43, 32695000=07717000=
|
|
L44, 32700000=07717000=
|
|
L45, 32705000=07717000=
|
|
L46, 32710000=07717000=
|
|
L47, 32715000=07717000=
|
|
L48, 32720000=07717000=
|
|
L49, 32725000=07717000=
|
|
L50, 32730000=07718000=
|
|
L51, 32735000=07718000=
|
|
L52, 32740000=07718000=
|
|
L53, 32745000=07718000=
|
|
L54; 32750000=07718000=
|
|
SWITCH 32755000=07719000=
|
|
S:= L1, 32760000=07720000=
|
|
L2, 32765000=07720000=
|
|
L3, 32770000=07720000=
|
|
L4, 32775000=07720000=
|
|
L5, 32780000=07720000=
|
|
L6, 32785000=07720000=
|
|
L7, 32790000=07720000=
|
|
L8, 32795000=07720000=
|
|
L9, 32800000=07720000=
|
|
L10, 32805000=07721000=
|
|
L11, 32810000=07721000=
|
|
L12, 32815000=07721000=
|
|
L13, 32820000=07721000=
|
|
L14, 32825000=07721000=
|
|
L15, 32830000=07721000=
|
|
L16, 32835000=07721000=
|
|
L17, 32840000=07721000=
|
|
L18, 32845000=07721000=
|
|
L19, 32850000=07721000=
|
|
L20, 32855000=07722000=
|
|
L21, 32860000=07722000=
|
|
L22, 32865000=07722000=
|
|
L23, 32870000=07722000=
|
|
L24, 32875000=07722000=
|
|
L25, 32880000=07722000=
|
|
L26, 32885000=07722000=
|
|
L27, 32890000=07722000=
|
|
L28, 32895000=07722000=
|
|
L29, 32900000=07722000=
|
|
L30, 32905000=07723000=
|
|
L31, 32910000=07723000=
|
|
L32, 32915000=07723000=
|
|
L33, 32920000=07723000=
|
|
L34, 32925000=07723000=
|
|
L35, 32930000=07723000=
|
|
L36, 32935000=07723000=
|
|
L37, 32940000=07723000=
|
|
L38, 32945000=07723000=
|
|
L39, 32950000=07723000=
|
|
L40, 32955000=07724000=
|
|
L41, 32960000=07724000=
|
|
L42, 32965000=07724000=
|
|
L43, 32970000=07724000=
|
|
L44, 32975000=07724000=
|
|
L45, 32980000=07724000=
|
|
L46, 32985000=07724000=
|
|
L47, 32990000=07724000=
|
|
L48, 32995000=07724000=
|
|
L49, 33000000=07724000=
|
|
L50, 33005000=07725000=
|
|
L51, 33010000=07725000=
|
|
L52, 33015000=07725000=
|
|
L53, 33020000=07725000=
|
|
L54; 33025000=07725000=
|
|
LABEL 33030000=07726000=
|
|
AGAIN, 33035000=07726000=
|
|
EXIT; 33040000=07726000=
|
|
STACKCT:= 0; 33045000=07726990=
|
|
AGAIN: 33050000=07727000=
|
|
GO TO S[ELCLASS]; 33055000=07727000=
|
|
IF ELCLASS = COLON THEN 33060000=07727010=
|
|
BEGIN 33065000=07727020=
|
|
STEPIT; 33070000=07727020=
|
|
GT1:= L; 33075000=07727020=
|
|
IF ELCLASS = COLON THEN 33080000=07727030=
|
|
BEGIN 33085000=07727040=
|
|
ADJUST; 33090000=07727040=
|
|
I:= I-1 33095000=07727040=
|
|
END 33100000=07727050=
|
|
ELSE 33105000=07727050=
|
|
IF ELCLASS = LITNO THEN 33110000=07727050=
|
|
L:= 4*C 33115000=07727060=
|
|
ELSE 33120000=07727060=
|
|
I:= I-1; 33125000=07727060=
|
|
IF L < GT1 OR STEPI ^= COLON THEN 33130000=07727070=
|
|
BEGIN 33135000=07727080=
|
|
ERR(504); 33140000=07727080=
|
|
GO TO EXIT 33145000=07727080=
|
|
END; 33150000=07727080=
|
|
STEPIT; 33155000=07727090=
|
|
GO TO AGAIN; 33160000=07727100=
|
|
END; 33165000=07727110=
|
|
IF ELCLASS = 0 THEN 33170000=07728000=
|
|
FLAG(100); 33175000=07728000=
|
|
FLAG(145); 33180000=07728000=
|
|
L1: 33185000=07729000=
|
|
L2: 33190000=07729000=
|
|
L3: 33195000=07729000=
|
|
L4: 33200000=07729000=
|
|
L5: 33205000=07729000=
|
|
L6: 33210000=07729000=
|
|
L9: 33215000=07729000=
|
|
L11: 33220000=07729000=
|
|
L13: 33225000=07729000=
|
|
L14: 33230000=07729000=
|
|
L15: 33235000=07729000=
|
|
L16: 33240000=07729000=
|
|
L17: 33245000=07729000=
|
|
L20: 33250000=07729000=
|
|
L21: 33255000=07729000=
|
|
L25: 33260000=07729000=
|
|
L28: 33265000=07729000=
|
|
L29: 33270000=07729000=
|
|
L24: 33275000=07730000=
|
|
L33: 33280000=07730000=
|
|
L34: 33285000=07730000=
|
|
L35: 33290000=07730000=
|
|
L36: 33295000=07730000=
|
|
L37: 33300000=07730000=
|
|
L39: 33305000=07731000=
|
|
ERR(144); 33310000=07731000=
|
|
GO TO EXIT; 33315000=07731000=
|
|
L7: 33320000=07732000=
|
|
L8: SUBHAND(TRUE); 33325000=07733000=
|
|
GO TO EXIT; 33330000=07733000=
|
|
L10: 33335000=07734000=
|
|
L18: 33340000=07734000=
|
|
L19: 33345000=07735000=
|
|
PROCSTMT(TRUE); 33350000=07735000=
|
|
GO TO EXIT; 33355000=07735000=
|
|
L12: 33360000=07737000=
|
|
STRMPROCSTMT; 33365000=07737000=
|
|
GO TO EXIT; 33370000=07737000=
|
|
L22: 33375000=07738000=
|
|
L23: 33380000=07738000=
|
|
L26: 33385000=07738000=
|
|
L27: 33390000=07738000=
|
|
L30: 33395000=07738000=
|
|
L31: 33400000=07739000=
|
|
TVAR:= FS; 33402000
|
|
VARIABLE(TVAR); 33405000=07739000=
|
|
GO TO EXIT; 33410000=07739000=
|
|
L32: 33415000=07741000=
|
|
LABELR; 33420000=07741000=
|
|
GO TO AGAIN; 33425000=07741000=
|
|
L38: 33430000=07743000=
|
|
POLISHER(0); 33435000=07743000=
|
|
GO TO EXIT; 33440000=07743000=
|
|
L40: 33445000=07745000=
|
|
IF ELBAT[I].ADDRESS = STREAMV THEN 33450000=07745000=
|
|
BEGIN 33455000=07746000=
|
|
INLINE; 33460000=07746000=
|
|
GO TO EXIT 33465000=07746000=
|
|
END; 33470000=07746000=
|
|
FLAG(146); 33475000=07747000=
|
|
IF TABLE(I-2) = ENDV AND MODE > 0 THEN 33480000=07748000=
|
|
BEGIN 33485000=07749000=
|
|
I:= I-2; 33490000=07749000=
|
|
ELCLASS:= ENDV; 33495000=07749000=
|
|
GO TO EXIT 33500000=07749000=
|
|
END; 33505000=07749000=
|
|
I:= I-1; 33510000=07750000=
|
|
ERRORTOG:= TRUE; 33515000=07750000=
|
|
BLOCK(FALSE); 33520000=07750000=
|
|
ELCLASS:= TABLE(I:= I-1); 33525000=07751000=
|
|
GO TO EXIT; 33530000=07751000=
|
|
L42: 33535000=07753000=
|
|
DBLSTMT; 33540000=07753000=
|
|
GO TO EXIT; 33545000=07753000=
|
|
L43: 33550000=07755000=
|
|
FORSTMT; 33555000=07755000=
|
|
GO TO EXIT; 33560000=07755000=
|
|
L44: 33565000=07757000=
|
|
WHILESTMT; 33570000=07757000=
|
|
GO TO EXIT; 33575000=07757000=
|
|
L45: 33580000=07759000=
|
|
DOSTMT; 33585000=07759000=
|
|
GO TO EXIT; 33590000=07759000=
|
|
L51: 33595000=07761000=
|
|
IFSTMT; 33600000=07761000=
|
|
GO TO EXIT; 33605000=07761000=
|
|
L52: 33610000=07763000=
|
|
GOSTMT; 33615000=07763000=
|
|
GO TO EXIT; 33620000=07763000=
|
|
L53: 33625000=07765000=
|
|
IOSTMT; 33630000=07765000=
|
|
GO TO EXIT; 33635000=07765000=
|
|
L54: 33640000=07767000=
|
|
IF STEPI = DECLARATORS THEN 33645000=07767000=
|
|
BEGIN 33650000=07768000=
|
|
IF ELBAT[I].ADDRESS = STREAMV THEN 33655000=07768100=
|
|
IF STEPI = LEFTPAREN THEN % 6 33660000=07768100=
|
|
BEGIN % 6 33675000=07768120=
|
|
ELCLASS:= TABLE(I:= I-1); 33680000=07768130=
|
|
COMPOUNDTAIL; 33685000=07768140=
|
|
GO TO EXIT; 33690000=07768160=
|
|
END 33695000=07768170=
|
|
ELSE 33700000=07768170=
|
|
I:= I-1; % 6 33705000=07768170=
|
|
I:= I-1; % 6 33710000=07768180=
|
|
BLOCK(FALSE); 33715000=07768200=
|
|
END 33720000=07768200=
|
|
ELSE 33725000=07768200=
|
|
COMPOUNDTAIL; 33730000=07768200=
|
|
L46: 33735000=07769000=
|
|
L47: 33740000=07769000=
|
|
L48: 33745000=07769000=
|
|
L50: 33750000=07770000=
|
|
L49: 33755000=07770000=
|
|
L41: 33760000=07771000=
|
|
EXIT: 33765000=07771000=
|
|
END STMT; 33770000=07771000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%33775000=07771000=
|
|
PROCEDURE IOSTMT; 33780000=07993000=
|
|
IF(GT1:= ELBAT[I].ADDRESS > 15 THEN ERR(98) 33785000=07994000=
|
|
ELSE 33790000=07994000=
|
|
BEGIN 33795000=07995000=
|
|
EMIT(ELBAT[I-1].ADDRESS & GT1[6:0:1] & GT1[11:3:3]); 33800000=07995000=
|
|
STEPIT 33805000=07997000=
|
|
END SCOPE STATEMENT; 33810000=07997000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%33815000=07997000=
|
|
PROCEDURE FORSTMT; 33820000=08008000=
|
|
BEGIN 33825000=08009000=
|
|
OWN REAL 33830000=08010000=
|
|
B, 33835000=08010000=
|
|
STMTSTART, 33840000=08010000=
|
|
REGO, 33845000=08010000=
|
|
RETURNSTORE, 33850000=08010000=
|
|
ADDRES, 33855000=08010000=
|
|
V, 33860000=08010000=
|
|
VRET, 33865000=08011000=
|
|
BRET; 33870000=08011000=
|
|
OWN BOOLEAN 33875000=08012000=
|
|
SIGNA, 33880000=08012000=
|
|
SIGNB, 33885000=08012000=
|
|
SIGNC, 33890000=08012000=
|
|
INT, 33895000=08013000=
|
|
CONSTANA, 33900000=08013000=
|
|
CONSTANB, 33905000=08013000=
|
|
CONSTANC; 33910000=08013000=
|
|
DEFINE 33915000=08014000=
|
|
SIMPLEB = SIGNC #, 33920000=08014000=
|
|
FORMALV = SIGNA #, 33925000=08015000=
|
|
SIMPLEV = CONSTANA #, 33930000=08015000=
|
|
A = V #, 33935000=08015000=
|
|
Q = REGO #, 33940000=08016000=
|
|
OPDC = TRUE #, 33945000=08016000=
|
|
DESC = FALSE #, 33950000=08016000=
|
|
K = BRET #; 33955000=08016000=
|
|
LABEL 33960000=08017000=
|
|
EXIT; 33965000=08017000=
|
|
33970000=08018000=
|
|
COMMENT PLUG EMITS EITHER AN OPERAND CALL ON A VARIABLE OR A CALL ON A 33975000=08018000=
|
|
CONSTANT DEPENDING ON THE REQUIREMENTS; 33980000=08019000=
|
|
PROCEDURE PLUG(C, A); 33985000=08020000=
|
|
VALUE 33990000=08020000=
|
|
C, 33995000=08020000=
|
|
A; 34000000=08020000=
|
|
REAL 34005000=08020000=
|
|
A; 34010000=08020000=
|
|
BOOLEAN 34015000=08020000=
|
|
C; 34020000=08020000=
|
|
IF C THEN 34025000=08021000=
|
|
EMITNUM(A) 34030000=08021000=
|
|
ELSE 34035000=08021000=
|
|
EMITV(A.ADDRESS); 34040000=08021000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%34045000=08021000=
|
|
34050000=08022000=
|
|
COMMENT SIMPLE DETERMINES IF AN ARITHMETIC EXPRESSION IS + OR - A 34055000=08022000=
|
|
CONSTANT OR A SIMPLE VARIABLE. IT MAKES A THROUGH REPORT 34060000=08023000=
|
|
ON ITS ACTIVITY. IT ALSO MAKES PROVISION FOR THE RESCAN 34065000=08024000=
|
|
OF ELBAT (THIS IS THE ACTION WITH K - SEE CODE IN THE 34070000=08025000=
|
|
TABLE ROUTINE FOR FURTHER DETAILS); 34075000=08026000=
|
|
BOOLEAN PROCEDURE SIMPLE(B, A, S); 34080000=08027000=
|
|
BOOLEAN 34085000=08027000=
|
|
B, 34090000=08027000=
|
|
S; 34095000=08027000=
|
|
REAL 34100000=08027000=
|
|
A; 34105000=08027000=
|
|
BEGIN 34110000=08028000=
|
|
S:= 34115000=08029000=
|
|
IF STEPI ^= ADOP THEN 34120000=08029000=
|
|
FALSE 34125000=08029000=
|
|
ELSE 34130000=08029000=
|
|
ELBAT[I].ADDRESS = SUB; 34135000=08030000=
|
|
IF ELCLASS = ADOP THEN 34140000=08031000=
|
|
STEPIT; 34145000=08031000=
|
|
IF ELCLASS >= NONLITNO AND ELCLASS <= STRNGCON THEN 34150000=08033000=
|
|
BEGIN 34155000=08033000=
|
|
K:= K+1; 34160000=08033000=
|
|
SIMPLE:= TRUE; 34165000=08033000=
|
|
ELBAT[I]:= 0 & COMMENTV[45:6:7] & K[31:10:11]; 34170000=08034000=
|
|
INFO[0, K]:= A:= C; 34175000=08035000=
|
|
B:= TRUE 34180000=08035000=
|
|
END 34185000=08036000=
|
|
ELSE 34190000=08036000=
|
|
BEGIN 34195000=08036000=
|
|
B:= FALSE; 34200000=08037000=
|
|
A:= ELBAT[I]; 34205000=08037000=
|
|
SIMPLE:= REALID <= ELCLASS AND ELCLASS <= INTID 34210000=08038000=
|
|
END; 34215000=08038000=
|
|
STEPIT 34220000=08039000=
|
|
END SIMPLE; 34225000=08039000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%34230000=08039000=
|
|
34235000=08040000=
|
|
COMMENT TEST EMITS THE STEP-UNTIL ELEMENT TEST; 34240000=08040000=
|
|
PROCEDURE TEST; 34245000=08041000=
|
|
BEGIN 34250000=08042000=
|
|
IF NOT CONSTANB THEN 34255000=08043000=
|
|
BEGIN 34260000=08044000=
|
|
EMITO(SUB); 34265000=08044000=
|
|
IF SIMPLEB THEN 34270000=08044000=
|
|
EMITV(B.ADDRESS) 34275000=08045000=
|
|
ELSE 34280000=08045000=
|
|
BEGIN 34285000=08045000=
|
|
EMITL(2+L-BRET); 34290000=08046000=
|
|
EMITB(BBW, BUMPL, B); 34295000=08047000=
|
|
END; 34300000=08048000=
|
|
EMITO(MUL); 34305000=08049000=
|
|
EMIT(0) 34310000=08049000=
|
|
END; 34315000=08049000=
|
|
EMITO(IF SIGNB THEN GEQ ELSE LEQ); 34320000=08050000=
|
|
EMIT(0); 34325000=08050000=
|
|
L:= L-1 34330000=08051000=
|
|
END TEST; 34335000=08051000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%34340000=08051000=
|
|
BOOLEAN PROCEDURE SIMPI(ALL); 34345000=08052000=
|
|
VALUE 34350000=08052000=
|
|
ALL; 34355000=08052000=
|
|
REAL 34360000=08052000=
|
|
ALL; 34365000=08052000=
|
|
BEGIN 34370000=08053000=
|
|
CHECKER(VRET:= ALL); 34375000=08054000=
|
|
ADDRES:= ALL.ADDRESS; 34380000=08055000=
|
|
FORMALV:= ALL.[38:2] = 2; 34385000=08056000=
|
|
IF T:= ALL.CLASS > INTARRAYID OR T < BOOID OR GT1:= (T-BOOID) MOD 34390000=08058000=
|
|
4 < 1 34395000=08058000=
|
|
THEN 34400000=08058000=
|
|
ERR(REAL(T ^= 0)*51+100); 34405000=08059000=
|
|
INT:= GT1 = 2; 34410000=08060000=
|
|
SIMPI:= T <= INTID 34415000=08061000=
|
|
END SIMPI; 34420000=08061000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%34425000=08061000=
|
|
34430000=08062000=
|
|
COMMENT STORE EMITS THE CODE FOR THE STORE INTO THE FOR INDEX; 34435000=08062000=
|
|
PROCEDURE STORE(S); 34440000=08063000=
|
|
VALUE 34445000=08063000=
|
|
S; 34450000=08063000=
|
|
BOOLEAN 34455000=08063000=
|
|
S; 34460000=08063000=
|
|
BEGIN 34465000=08064000=
|
|
IF FORMALV THEN 34470000=08065000=
|
|
BEGIN 34475000=08065000=
|
|
EMITO(XCH); 34480000=08065000=
|
|
S:= FALSE 34485000=08065000=
|
|
END 34490000=08066000=
|
|
ELSE 34495000=08066000=
|
|
BEGIN 34500000=08066000=
|
|
EMITL(ADDRES); 34505000=08067000=
|
|
IF ADDRES > 1023 THEN 34510000=08068000=
|
|
EMITO(PRTE) 34515000=08068000=
|
|
END; 34520000=08068000=
|
|
T:= (REAL(S)+1)*16; 34525000=08069000=
|
|
EMITO((IF INT THEN T+512 ELSE 4*T)+4) 34530000=08070000=
|
|
END STORE; 34535000=08070000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%34540000=08070000=
|
|
34545000=08071000=
|
|
COMMENT CALL EFFECTS A CALL ON THE INDEX; 34550000=08071000=
|
|
PROCEDURE CALL(S); 34555000=08072000=
|
|
VALUE 34560000=08072000=
|
|
S; 34565000=08072000=
|
|
BOOLEAN 34570000=08072000=
|
|
S; 34575000=08072000=
|
|
BEGIN 34580000=08073000=
|
|
IF SIMPLEV THEN 34585000=08075000=
|
|
IF S THEN 34590000=08075000=
|
|
EMITV(ADDRES) 34595000=08075000=
|
|
ELSE 34600000=08075000=
|
|
EMITN(ADDRES) 34605000=08076000=
|
|
ELSE 34610000=08076000=
|
|
BEGIN 34615000=08076000=
|
|
EMITL(2+L-VRET); 34620000=08077000=
|
|
EMITB(BBW, BUMPL, V); 34625000=08078000=
|
|
IF S THEN 34630000=08079000=
|
|
EMITO(LOD) 34635000=08079000=
|
|
END 34640000=08079000=
|
|
END CALL; 34645000=08079000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%34650000=08079000=
|
|
PROCEDURE FORLIST(NUMLE); 34655000=08080000=
|
|
VALUE 34660000=08080000=
|
|
NUMLE; 34665000=08080000=
|
|
BOOLEAN 34670000=08080000=
|
|
NUMLE; 34675000=08080000=
|
|
BEGIN 34680000=08081000=
|
|
PROCEDURE FIX(STORE, BACK, FORWART, START); 34685000=08082000=
|
|
VALUE 34690000=08083000=
|
|
STORE, 34695000=08083000=
|
|
BACK, 34700000=08083000=
|
|
FORWART, 34705000=08083000=
|
|
START; 34710000=08083000=
|
|
REAL 34715000=08084000=
|
|
STORE, 34720000=08084000=
|
|
BACK, 34725000=08084000=
|
|
FORWART, 34730000=08084000=
|
|
START; 34735000=08084000=
|
|
BEGIN 34740000=08085000=
|
|
EMITB(GET(FORWART-1), FORWART, START); 34745000=08086000=
|
|
IF RETURNSTORE ^= 0 THEN 34750000=08088000=
|
|
BEGIN 34755000=08088000=
|
|
L:= STORE; 34760000=08089000=
|
|
EMITNUM(B-BACK); 34765000=08089000=
|
|
EMITPAIR(RETURNSTORE, STD) 34770000=08090000=
|
|
END 34775000=08090000=
|
|
END FIX; 34780000=08090000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%34785000=08090000=
|
|
INTEGER 34790000=08091000=
|
|
BACKFIX, 34795000=08091000=
|
|
FORWARDBRANCH, 34800000=08091000=
|
|
FOOT, 34805000=08091000=
|
|
STOREFIX; 34810000=08091000=
|
|
LABEL 34815000=08092000=
|
|
BRNCH, 34820000=08092000=
|
|
EXIT; 34825000=08092000=
|
|
STOREFIX:= L; 34830000=08093000=
|
|
Q:= REAL(MODE = 0)+3; 34835000=08093000=
|
|
FOR K:= 1 STEP 1 UNTIL Q DO 34840000=08094000=
|
|
EMITO(NOP); 34845000=08094000=
|
|
IF NUMLE THEN 34850000=08096000=
|
|
BEGIN 34855000=08096000=
|
|
BACKFIX:= L; 34860000=08097000=
|
|
IF FORMALV THEN 34865000=08098000=
|
|
CALL(DESC) 34870000=08099000=
|
|
END 34875000=08099000=
|
|
ELSE 34880000=08099000=
|
|
BACKFIX:= V+REAL(SIMPLEV)-1; 34885000=08099000=
|
|
AEXP; 34890000=08101000=
|
|
COMMENT PICK UP FIRST ARITHMETIC EXPRESSION; 34895000=08102000=
|
|
IF ELCLASS = STEPV THEN 34900000=08104000=
|
|
BEGIN 34905000=08104000=
|
|
COMMENT HERE WE HAVE A STEP ELEMENT; 34910000=08105000=
|
|
BACKFIX:= BUMPL; 34915000=08106000=
|
|
COMMENT LEAVE ROOM FOR FORWARD JUMP; 34920000=08107000=
|
|
IF FORMALV THEN 34925000=08108000=
|
|
CALL(DESC); 34930000=08108000=
|
|
CALL(OPDC); 34935000=08108000=
|
|
COMMENT FETCH INDEX; 34940000=08109000=
|
|
IF I > 70 THEN 34945000=08110000=
|
|
BEGIN 34950000=08110000=
|
|
NXTELBT:= 1; 34955000=08110000=
|
|
I:= 0 34960000=08110000=
|
|
END 34965000=08111000=
|
|
ELSE 34970000=08111000=
|
|
REGO:= I; 34975000=08111000=
|
|
IF SIMPLEB:= SIMPLE(CONSTANB, B, SIGNB) AND 34980000=08114000=
|
|
(ELCLASS = UNTILV OR ELCLASS = WHILEV) 34985000=08114000=
|
|
THEN 34990000=08114000=
|
|
BEGIN 34995000=08114000=
|
|
COMMENT WE HAVE A SIMPLE STEP FUNCTION; 35000000=08115000=
|
|
PLUG(CONSTANB, B); 35005000=08116000=
|
|
END 35010000=08117000=
|
|
ELSE 35015000=08117000=
|
|
BEGIN 35020000=08117000=
|
|
COMMENT THE STEP FUNCTION IS NOT SIMPLE: WE CONSTRUCT A 35025000=08118000=
|
|
SUBROUTINE; 35030000=08119000=
|
|
I:= 35035000=08120000=
|
|
IF I < 4 THEN 35040000=08120000=
|
|
0 35045000=08120000=
|
|
ELSE 35050000=08120000=
|
|
REGO; 35055000=08120000=
|
|
STEPIT; 35060000=08120000=
|
|
SIGNB:= CONSTANB:= FALSE; 35065000=08121000=
|
|
EMIT(0); 35070000=08122000=
|
|
B:= L; 35075000=08122000=
|
|
AEXP; 35080000=08123000=
|
|
EMITO(XCH); 35085000=08123000=
|
|
BRET:= L; 35090000=08124000=
|
|
EMITO(BFW) 35095000=08125000=
|
|
END; 35100000=08125000=
|
|
EMITO(REAL(SIGNB)*32+ADD); 35105000=08126000=
|
|
EMITB(BFW, BACKFIX, L); 35110000=08127000=
|
|
IF ELCLASS = UNTILV THEN 35115000=08129000=
|
|
BEGIN COMMENT STEP-UNTIL ELEMENT; 35120000=08129000=
|
|
STORE(TRUE); 35130000=08130000=
|
|
IF FORMALV THEN 35135000=08130000=
|
|
CALL(OPDC); 35140000=08130000=
|
|
STEPIT; 35145000=08131000=
|
|
AEXP; 35150000=08131000=
|
|
TEST 35155000=08131000=
|
|
END 35160000=08132000=
|
|
ELSE 35165000=08132000=
|
|
BEGIN COMMENT STEP-WHILE ELEMENT; 35170000=08132000=
|
|
IF ELCLASS ^= WHILEV THEN 35180000=08133000=
|
|
BEGIN 35185000=08134000=
|
|
ERR(153); 35190000=08134000=
|
|
GO TO EXIT 35195000=08134000=
|
|
END; 35200000=08134000=
|
|
STEPIT; 35205000=08135000=
|
|
STORE(FALSE); 35210000=08135000=
|
|
BEXP 35215000=08135000=
|
|
END 35220000=08136000=
|
|
END 35225000=08136000=
|
|
ELSE 35230000=08136000=
|
|
BEGIN 35235000=08136000=
|
|
COMMENT WE DO NOT HAVE A STEP ELEMENT; 35240000=08137000=
|
|
STORE(FALSE); 35245000=08138000=
|
|
IF ELCLASS = WHILEV THEN 35250000=08140000=
|
|
BEGIN 35255000=08140000=
|
|
COMMENT WE HAVE A WHILE ELEMENT; 35260000=08141000=
|
|
STEPIT; 35265000=08142000=
|
|
BEXP 35270000=08142000=
|
|
END 35275000=08143000=
|
|
ELSE 35280000=08143000=
|
|
BEGIN 35285000=08143000=
|
|
COMMENT ONE EXPRESSION ELEMENT; 35290000=08144000=
|
|
IF ELCLASS ^= COMMA THEN 35295000=08145000=
|
|
BEGIN 35300000=08145000=
|
|
EMITB(BFW, BUMPL, L+2); 35305000=08146000=
|
|
BACKFIX:= L 35310000=08146000=
|
|
END 35315000=08147000=
|
|
ELSE 35320000=08147000=
|
|
BACKFIX:= L+2; 35325000=08147000=
|
|
L:= L+1; 35330000=08148000=
|
|
EMIT(BFW); 35335000=08148000=
|
|
GO TO BRNCH 35340000=08148000=
|
|
END 35345000=08148000=
|
|
END; 35350000=08148000=
|
|
COMMENT THIS IS THE COMMON POINT; 35355000=08149000=
|
|
IF ELCLASS = COMMA THEN 35360000=08150000=
|
|
EMITLNG; 35365000=08150000=
|
|
L:= L+1; 35370000=08150000=
|
|
EMIT(BFC); 35375000=08151000=
|
|
BRNCH: 35380000=08152000=
|
|
FORWARDBRANCH:= L; 35385000=08152000=
|
|
DIALA:= DIALB:= 0; 35390000=08152000=
|
|
IF ELCLASS = COMMA THEN 35395000=08154000=
|
|
BEGIN 35400000=08154000=
|
|
STEPIT; 35405000=08155000=
|
|
FORLIST(TRUE); 35410000=08156000=
|
|
FIX(STOREFIX, BACKFIX, FORWARDBRANCH, STMTSTART) 35415000=08157000=
|
|
END 35420000=08158000=
|
|
ELSE 35425000=08158000=
|
|
BEGIN 35430000=08158000=
|
|
IF ELCLASS ^= DOV THEN 35435000=08160000=
|
|
BEGIN 35440000=08160000=
|
|
ERR(154); 35445000=08160000=
|
|
REGO:= L; 35450000=08160000=
|
|
GO EXIT 35455000=08160000=
|
|
END; 35460000=08160000=
|
|
STEPIT; 35465000=08161000=
|
|
IF NUMLE THEN 35470000=08162000=
|
|
FOOT:= GETSPACE(FALSE, -1); % TEMP. 35475000=08162000=
|
|
STMT; 35480000=08163000=
|
|
IF NUMLE THEN 35485000=08165000=
|
|
BEGIN 35490000=08165000=
|
|
EMITV(RETURNSTORE:= FOOT); 35495000=08166000=
|
|
EMITO(BBW) 35500000=08166000=
|
|
END 35505000=08167000=
|
|
ELSE 35510000=08167000=
|
|
BEGIN 35515000=08167000=
|
|
EMITB(BBW, BUMPL, BACKFIX); 35520000=08168000=
|
|
RETURNSTORE:= 0 35525000=08168000=
|
|
END; 35530000=08168000=
|
|
STMTSTART:= FORWARDBRANCH; 35535000=08169000=
|
|
B:= L; 35540000=08169000=
|
|
CONSTANTCLEAN; 35545000=08170000=
|
|
REGO:= L; 35550000=08170000=
|
|
FIX(STOREFIX, BACKFIX, FORWARDBRANCH, L) 35555000=08171000=
|
|
END; 35560000=08171000=
|
|
EXIT: 35565000=08172000=
|
|
END FORLIST; 35570000=08172000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%35575000=08172000=
|
|
REAL 35580000=08173000=
|
|
T1, 35585000=08173000=
|
|
T2, 35590000=08173000=
|
|
T3, 35595000=08173000=
|
|
T4, 35600000=08173000=
|
|
TVAR; 35602000
|
|
NXTELBT:= 1; 35605000=08174000=
|
|
I:= 0; 35610000=08174000=
|
|
STEPIT; 35615000=08175000=
|
|
IF SIMPI(VRET:= ELBAT[I]) THEN 35620000=08177000=
|
|
BEGIN 35625000=08177000=
|
|
IF STEPI ^= ASSIGNOP THEN 35630000=08178000=
|
|
BEGIN 35635000=08178000=
|
|
ERR(152); 35640000=08178000=
|
|
GO EXIT 35645000=08178000=
|
|
END; 35650000=08178000=
|
|
T1:= L; 35655000=08179000=
|
|
IF FORMALV THEN 35660000=08179000=
|
|
EMITN(ADDRES); 35665000=08179000=
|
|
K:= 0; 35670000=08180000=
|
|
IF SIMPLE(CONSTANA, A, SIGNA) THEN 35675000=08181000=
|
|
IF ELCLASS = STEPV THEN 35680000=08182000=
|
|
IF SIMPLE(CONSTANB, B, SIGNB) THEN 35685000=08183000=
|
|
IF ELCLASS = UNTILV THEN 35690000=08184000=
|
|
IF SIMPLE(CONSTANC, Q, SIGNC) THEN 35695000=08185000=
|
|
IF ELCLASS = DOV THEN 35700000=08186000=
|
|
BEGIN 35705000=08187000=
|
|
PLUG(CONSTANA, A); 35710000=08188000=
|
|
IF SIGNA THEN 35715000=08189000=
|
|
EMITO(CHS); 35720000=08189000=
|
|
RETURNSTORE:= BUMPL; 35725000=08190000=
|
|
ADJUST; 35730000=08190000=
|
|
CONSTANTCLEAN; 35735000=08190000=
|
|
STMTSTART:= L; 35740000=08191000=
|
|
STEPIT; 35745000=08192000=
|
|
T1:= ((((4096*RETURNSTORE+STMTSTART)*2 + 35750000=08196000=
|
|
REAL(CONSTANB))*2 + 35752000
|
|
REAL(CONSTANC))*2 + 35755000=08197000=
|
|
REAL(SIGNB))*2 + 35756000
|
|
REAL(SIGNC); 35758000
|
|
T2:= VRET; 35760000=08198000=
|
|
T3:= B; 35765000=08199000=
|
|
T4:= Q; 35770000=08200000=
|
|
STMT; 35775000=08201000=
|
|
SIGNC:= BOOLEAN(T1.[0:1]); 35780000=08202000=
|
|
SIGNB:= BOOLEAN(T1.[1:1]); 35785000=08203000=
|
|
CONSTANC:= BOOLEAN(T1.[2:1]); 35790000=08204000=
|
|
CONSTANB:= BOOLEAN(T1.[3:1]); 35795000=08205000=
|
|
STMTSTART:= T1.[15:12]; 35800000=08206000=
|
|
RETURNSTORE:= T1.[27:12]; 35805000=08207000=
|
|
VRET:= T2; 35810000=08208000=
|
|
B:= T3; 35815000=08209000=
|
|
Q:= T4; 35820000=08210000=
|
|
SIMPLEV:= SIMPI(VRET); 35825000=08211000=
|
|
IF FORMALV THEN 35830000=08212000=
|
|
EMITN(ADDRES); 35835000=08212000=
|
|
EMITV(ADDRES); 35840000=08212000=
|
|
PLUG(CONSTANB, B); 35845000=08213000=
|
|
EMITO(IF SIGNB THEN SUB ELSE ADD); 35850000=08214000=
|
|
EMITB(BFW, RETURNSTORE, L); 35855000=08215000=
|
|
STORE(TRUE); 35860000=08216000=
|
|
IF FORMALV THEN 35865000=08217000=
|
|
CALL(OPDC); 35870000=08217000=
|
|
PLUG(CONSTANC, Q); 35875000=08218000=
|
|
IF SIGNC THEN 35880000=08219000=
|
|
EMITO(CHS); 35885000=08219000=
|
|
SIMPLEB:= TRUE; 35890000=08220000=
|
|
TEST; 35895000=08220000=
|
|
EMITLNG; 35900000=08220000=
|
|
EMITB(BBC, BUMPL, STMTSTART); 35905000=08221000=
|
|
GO TO EXIT 35910000=08222000=
|
|
END; 35915000=08222000=
|
|
I:= 2; 35920000=08223000=
|
|
K:= 0; 35925000=08223000=
|
|
SIMPLEV:= SIMPI(VRET); 35930000=08224000=
|
|
V:= T1 35935000=08225000=
|
|
END 35940000=08226000=
|
|
ELSE 35945000=08226000=
|
|
BEGIN 35950000=08226000=
|
|
EMIT(0); 35955000=08227000=
|
|
V:= L; 35960000=08227000=
|
|
SIMPLEV:= FALSE; 35965000=08227000=
|
|
FORMALV:= TRUE; 35970000=08227000=
|
|
TVAR:= FR; 35972000
|
|
VARIABLE(TVAR); 35975000=08228000=
|
|
EMITO(XCH); 35980000=08228000=
|
|
VRET:= L; 35985000=08228000=
|
|
EMITO(BFW); 35990000=08228000=
|
|
IF ELCLASS ^= ASSIGNOP THEN 35995000=08229000=
|
|
BEGIN 36000000=08229000=
|
|
ERR(152); 36005000=08229000=
|
|
GO EXIT 36010000=08229000=
|
|
END; 36015000=08229000=
|
|
END; 36020000=08230000=
|
|
STEPIT; 36025000=08231000=
|
|
FORLIST(FALSE); 36030000=08231000=
|
|
L:= REGO; 36035000=08231000=
|
|
EXIT: 36040000=08232000=
|
|
K:= 0 36045000=08232000=
|
|
END FORSTMT; 36050000=08232000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%36055000=08232000=
|
|
REAL PROCEDURE REED; 36060000=08999000=
|
|
BEGIN 36065000=08999025=
|
|
LABEL 36070000=08999050=
|
|
EOF; 36075000=08999050=
|
|
INTEGER 36080000=08999050=
|
|
I, 36085000=08999050=
|
|
K; 36095000=08999050=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%36142000
|
|
READ(CODISK, 30, CODE)[EOF]; 36150000=08999150=
|
|
REED:= I:= CODELENGTH:= CODE[0]; % CURRENT CODE BUFFER LENGTH 36155000=08999175=
|
|
REPLACE POINTER(CODE[0],0) BY POINTER(CODE[1],0) FOR (K:=29) WORDS; 36160000=08999200=
|
|
WHILE I-K > 30 DO 36165000=08999225=
|
|
BEGIN 36170000=08999250=
|
|
READ(CODISK, 30, CODE[K]); 36175000=08999275=
|
|
K:= K+30; 36180000=08999275=
|
|
END; 36195000=08999325=
|
|
READ(CODISK, I-K, CODE[K]); 36200000=08999350=
|
|
EOF: 36210000=08999425=
|
|
END REED; 36215000=08999425=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%36220000=08999425=
|
|
PROCEDURE RIGHT(L); 36225000=08999450=
|
|
VALUE 36230000=08999450=
|
|
L; 36235000=08999450=
|
|
INTEGER 36240000=08999450=
|
|
L; 36245000=08999450=
|
|
BEGIN 36250000=08999475=
|
|
INTEGER 36255000=08999500=
|
|
I, 36260000=08999500=
|
|
J; 36265000=08999500=
|
|
I:= (L+7) DIV 4; 36270000=08999525=
|
|
EBCDICBUF[0]:= I; 36275000=08999550=
|
|
REPLACE POINTER(EBCDICBUFF[1],0) BY POINTER(CODE[0],0) 36280000=08999575=
|
|
FOR (J:=29) WORDS; 36280100
|
|
WRITE(CODISK, 30, EBCDICBUFF); 36285000=08999600=
|
|
WHILE I-J > 30 DO 36295000=08999650=
|
|
BEGIN 36300000=08999675=
|
|
WRITE(CODISK, 30, CODE[J]); 36305000=08999700=
|
|
J:= J+30; 36315000=08999750=
|
|
END; 36320000=08999775=
|
|
WRITE(CODISK, I-J, CODE[J]); 36320100
|
|
END RIGHT; 36325000=08999800=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%36330000=08999800=
|
|
36335000=09000000=
|
|
COMMENT THE PROGRAM ROUTINE DOES THE INITIALIZATION AND THE WRAPUP 36340000=09000000=
|
|
FOR THE REST OF THE COMPILER. THE MAIN PROGRAM OF THE COMPILER36345000=09001000=
|
|
IS SIMPLY A CALL ON THE PROGRAM ROUTINE; 36350000=09002000=
|
|
PROCEDURE PROGRAM; 36355000=09003000=
|
|
BEGIN 36360000=09004000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%36362000
|
|
DEFINE MDESC(WD, TOLOC) = 36365000=09005000=
|
|
BEGIN 36380000=09006000=
|
|
TOLOC:= (WD) & (1)[47:1]; 36385000=09006000=
|
|
END #; 36410000=09006000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%36412000
|
|
DEFINE 36415000=09024000=
|
|
STARTINTRSC = 426 #; 36420000=09024000=
|
|
LABEL 36425000=09025000=
|
|
L1; 36430000=09025000=
|
|
LISTOG:= LISTER:= BOOLEAN(1-ERRORCOUNT.[1:1]); 36435000=09028000=
|
|
SINGLTOG:= TRUE; % DEFAULT TO SINGLE-SPACED LISTING 36436000
|
|
SAVETIME:= 30; % ON THE B5500, THE MCP WOULD SET THIS 36438000
|
|
36440000=09028010=
|
|
COMMENT LISTOG IS NOT SET BY DEFAULT ON TIMESHARING; 36445000=09028010=
|
|
NOHEADING:= TRUE; 36450000=09028050=
|
|
ERRORCOUNT:= 0; 36455000=09028900=
|
|
ERRMAX:= 999; % MAY BE CHANGED IN DOLLARCARD. 36460000=09028910=
|
|
BASENUM:= 10000; 36465000=09028920=
|
|
ADDVALUE:= 1000; 36470000=09028920=
|
|
NEWBASE:= TRUE; 36475000=09028920=
|
|
COMMENT DEFAULT VALUES FOR "$SEQ" OPTION; 36485000=09028930=
|
|
36486000
|
|
OPEN(CARD); 36487000
|
|
CARDRECSIZE:= CARD.MAXRECSIZE; 36488000
|
|
LASTUSED:= 4; % FOR INITIALIZATION. 36490000=09029000=
|
|
NEXTINFO:= LASTINFO:= LASTSEQROW*256+LASTSEQUENCE+1; 36495000=09033000=
|
|
PUTNBUMP(0); 36500000=09034000=
|
|
GT1:= -6" "; 36505000=09034100=
|
|
MDESC(GT1, INFO[LASTSEQROW, LASTSEQUENCE]); 36510000=09034200=
|
|
BLANKET(0, INFO[LASTSEQROW, LASTSEQUENCE]); % FOR "$ CHECK". 36515000=09034500=
|
|
READACARD; % INITIALIZATION OF NCR,FCR, AND LCR, AND 36520000=09035000=
|
|
% READS FIRST CARD INTO CARD BUFFER. 36525000=09036000=
|
|
LASTUSED:= 1; % ASSUMES CARD ONLY UNTIL TOLD DIFFERENTLY.36530000=09037000=
|
|
NXTELBT:= 1; 36535000=09038000=
|
|
PRTI:= PRTIMAX:= PRTBASE; 36540000=09039000=
|
|
MRCLEAN:= TRUE; 36545000=09040000=
|
|
36550000=09040100=
|
|
COMMENT START FILLING TABLES NEEDED TO COMPILE A PROGRAM; 36555000=09040100=
|
|
FILL TEN[*] WITH 3"1771110463422054", 3"1761332600326467", 36560000=09042000=
|
|
3"1751621340414205", 3"1742165630517247", 3"1732623176643120", 36565000=09043000=
|
|
3"1723370036413744", 3"1714266046116735", 3"1705343457542525", 36570000=09044000=
|
|
3"1676634373473252", 3"1651040347241213", 3"1641250441111455", 36575000=09045000=
|
|
3"1631522551333770", 3"1622047303622767", 3"1612461164567564", 36580000=09046000=
|
|
3"1603175421725521", 3"1574034726313046", 3"1565044113775657", 36585000=09047000=
|
|
3"1556255136775233", 3"1547730366574502", 3"1521171646433362", 36590000=09048000=
|
|
3"1511430220142257", 3"1501736264172732", 3"1472325741231521", 36595000=09049000=
|
|
3"1463013331500045", 3"1453616220020057", 3"1444561664024072", 36600000=09050000=
|
|
3"1435716241031111", 3"1427301711237333", 3"1401116227350722", 36605000=09051000=
|
|
3"1371341675243107", 3"1361632254513731", 3"1352200727636717", 36610000=09052000=
|
|
3"1342641115606502", 3"1333411341150223", 3"1324313631402270", 36615000=09053000=
|
|
3"1315376577702746", 3"1306676337663537", 3"1261045602764047", 36620000=09054000=
|
|
3"1251257143561061", 3"1241532774515275", 3"1232061573640554", 36625000=09055000=
|
|
3"1222476132610706", 3"1213215561353071", 3"1204061115645707", 36630000=09056000=
|
|
3"1175075341217270", 3"1166314631463146", 3"1141000000000000", 36635000=09057000=
|
|
3"1131200000000000", 3"1121440000000000", 3"1111750000000000", 36640000=09058000=
|
|
3"1102342000000000", 3"1073032400000000", 3"1063641100000000", 36645000=09059000=
|
|
3"1054611320000000", 3"1045753604000000", 3"1037346545000000", 36650000=09060000=
|
|
3"1011124027620000", 3"0001351035564000", 3"0011643245121000", 36655000=09061000=
|
|
3"0022214116345200", 3"0032657142036440", 3"0043432772446150", 36660000=09062000=
|
|
3"0054341571157602", 3"0065432127413543", 3"0076740555316473", 36665000=09063000=
|
|
3"0111053071060221", 3"0121265707274266", 3"0131543271153343", 36670000=09064000=
|
|
3"0142074147406234", 3"0152513201307703", 3"0163236041571663", 36675000=09065000=
|
|
3"0174105452130240", 3"0205126764556310", 3"0216354561711772", 36680000=09066000=
|
|
3"0231004771627437", 3"0241206170175347", 3"0251447626234641", 36685000=09067000=
|
|
3"0261761573704011", 3"0272356132665013", 3"0303051561442216", 36690000=09068000=
|
|
3"0313664115752661", 3"0324641141345435", 3"0336011371636745", 36695000=09069000=
|
|
3"0347413670206536", 3"0361131664625027", 3"0371360241772234", 36700000=09070000=
|
|
3"0401654312370703", 3"0412227375067064", 3"0422675274304701", 36705000=09071000=
|
|
3"0433454553366062", 3"0444367706263476", 3"0455465667740415", 36710000=09072000=
|
|
3"0467003245730521", 3"0501060411731665", 3"0511274514320242", 36715000=09073000=
|
|
3"0521553637404312", 3"0532106607305375", 3"0542530351166674", 36720000=09074000=
|
|
3"0553256443424453", 3"0564132154331566", 3"0575160607420123", 36725000=09075000=
|
|
3"0606414751324150", 3"0621012014361120", 3"0631214417455344", 36730000=09076000=
|
|
3"0641457523370635", 3"0651773450267005", 3"0662372362344606", 36735000=09077000=
|
|
3"0673071057035747", 3"0703707272645341", 3"0714671151416632", 36740000=09078000=
|
|
3"0726047403722400", 3"0737461304707100", 3"0751137556607072", 36745000=09079000=
|
|
3"0761367512350710", 3"0771665435043072"; 36750000=09080000=
|
|
36755000=09081000=
|
|
COMMENT THIS IS THE FILL FOR THE SECOND ROW OF INFO: 36760000=09081000=
|
|
THE FIRST ITEMS ARE STREAM RESERVED WORDS, 36765000=09082000=
|
|
THEN ORDINARY RESERVED WORDS, 36770000=09083000=
|
|
THEN INTRINSIC FUNCTIONS; 36775000=09084000=
|
|
FILL INFO[1, *] WITH 36780000=09086000=
|
|
3"0670000600000002", 6"2SI000", %256 36782000
|
|
3"0700001040000002", 6"2DI000", %258 36785000=09087000=
|
|
3"0710001460000002", 6"2CI000", %260 36790000=09088000=
|
|
3"0720001630000002", 6"5TALLY", %262 36795000=09089000=
|
|
3"0730000530000002", 6"2DS000", %264 36800000=09090000=
|
|
3"0740000150000002", 6"4SKIP0", %266 36805000=09091000=
|
|
3"0750001620000002", 6"4JUMP0", %268 36810000=09092000=
|
|
3"0760000740000002", 6"2DB000", %270 36815000=09093000=
|
|
3"0770000500000002", 6"2SB000", %272 36820000=09094000=
|
|
3"1010000730000002", 6"2SC000", %274 36825000=09095000=
|
|
3"1020001160000002", 6"3LOC00", %276 36830000=09096000=
|
|
3"1030001170000002", 6"2DC000", %278 36835000=09097000=
|
|
3"1040001430000002", 6"5LOCAL", %280 36840000=09098000=
|
|
3"1050000340000002", 6"3LIT00", %282 36845000=09099000=
|
|
3"1060001036400002", 6"3SET00", %284 36850000=09100000=
|
|
3"1060001066500002", 6"5RESET", %286 36855000=09101000=
|
|
3"1060001020500002", 6"3WDS00", %288 36860000=09102000=
|
|
3"1060001357700002", 6"3CHR00", %290 36865000=09103000=
|
|
3"1060001057300002", 6"3ADD00", %292 36870000=09104000=
|
|
3"1060001617200002", 6"3SUB00", %294 36875000=09105000=
|
|
3"1060000727600002", 6"3ZON00", %296 36880000=09106000=
|
|
3"1060000417500002", 6"3NUM00", %298 36885000=09107000=
|
|
3"1060000766700002", 6"3OCT00", %300 36890000=09108000=
|
|
3"1060000176600002", 6"3DEC00", %302 36895000=09109000=
|
|
3"1004000260000003", 6"6TOGGL", 6"E0000000", %304 36900000=09110000=
|
|
3"0130311060000002", 6"3ABS00", %307 36905000=09110001=
|
|
3"1360441030000002", 6"3AND00", %309 36910000=09112000=
|
|
3"0500000170000002", 6"5ARRAY", %311 36915000=09112100=
|
|
3"0660000000000002", 6"5BEGIN", %313 36920000=09112200=
|
|
3"0500000040000003", 6"7BOOLE", 6"AN000000", %315 36925000=09112300=
|
|
3"1070000000000003", 6"7COMME", 6"NT000000", %318 36930000=09112400=
|
|
3"0500000230000003", 6"6DEFIN", 6"E0000000", %321 36935000=09112500=
|
|
3"1410446000000002", 6"3DIV00", %324 36940000=09112600=
|
|
3"0550000000000002", 6"2DO000", %326 36945000=09112700=
|
|
3"0520000000000003", 6"6DOUBL", 6"E0000000", %328 36950000=09112800=
|
|
3"0570000000000002", 6"4ELSE0", %331 36955000=09112900=
|
|
3"0600000000000002", 6"3END00", %333 36960000=09113000=
|
|
3"1340442030000002", 6"3EQV00", %335 36965000=09113100=
|
|
3"0410000000000002", 6"5FALSE", %337 36970000=09113200=
|
|
3"0130310030000002", 6"4FLAG0", %339 36975000=09113300=
|
|
3"0530000000000002", 6"3FOR00", %341 36980000=09113400=
|
|
3"1100000000000003", 6"7FORWA", 6"RD ", %343 36985000=09113500=
|
|
3"0640000000000002", 6"2GO000", %346 36990000=09113600=
|
|
3"0130316060320002", 6"4HUNT0", %348 36995000=09113700=
|
|
3"0630000000000002", 6"2IF000", %350 37000000=09113800=
|
|
3"0500000040000002", 6"4REAL0", %352 37005000=09113900=
|
|
3"0500000050000003", 6"7INTEG", 6"ER000000", %354 37010000=09114000=
|
|
3"0500000070000002", 6"5LABEL", %357 37015000=09114100=
|
|
3"0360002000020003", 6"6MEMOR", 6"Y ", %359 37020000=09114200=
|
|
3"1410456000000002", 6"3MOD00", %362 37025000=09114300=
|
|
3"0500000140000003", 6"7MONIT", 6"OR ", %364 37030000=09114400=
|
|
3"0130301060000002", 6"4NABS0", %367 37035000=09114500=
|
|
3"0500000200000002", 6"4NAME0", %369 37040000=09114600=
|
|
3"0130304030000002", 6"5NFLAG", %371 37045000=09114700=
|
|
3"1320300230000002", 6"3NOT00", %373 37050000=09114800=
|
|
3"1350440430000002", 6"2OR000", %375 37055000=09114900=
|
|
3"0500000020000002", 6"4SAVE0", %377 37060000=09115000=
|
|
3"0500000010000002", 6"3OWN00", %379 37065000=09115100=
|
|
3"0460000000000003", 6"6POLIS", 6"H ", %381 37070000=09115200=
|
|
3"0500000160000003", 6"9PROCE", 6"DURE ", %384 37075000=09115300=
|
|
3"0130300000160011", 6"4SIGN0", %387 37080000=09115400=
|
|
3"2025", COMMENT DUP ; 37085000=09115500=
|
|
3"0000", COMMENT LITC 0; 37090000=09115600=
|
|
3"0425", COMMENT NEQ ; 37100000=09115700=
|
|
3"1025", COMMENT XCH ; 37110000=09115800=
|
|
3"0155", COMMENT DIA 1; 37120000=09115900=
|
|
3"0161", COMMENT DIB 1; 37130000=09116000=
|
|
3"0165", COMMENT TRB 1; 37140000=09116100=
|
|
3"1110000000000002", 6"4STEP0", %396 37150000=09116200=
|
|
3"0500000220000003", 6"6STREA", 6"M ", %398 37155000=09116300=
|
|
3"0500000110000003", 6"#SUBRO", 6"UTINE ", %401 37160000=09116400=
|
|
3"0500000150000003", 6"6SWITC", 6"H ", %404 37165000=09116500=
|
|
3"1120000000000002", 6"4THEN0", %407 37170000=09116600=
|
|
3"1130000000000002", 6"2TO000", %409 37175000=09116700=
|
|
3"0410000010000002", 6"4TRUE0", %411 37180000=09116800=
|
|
3"0560000000000002", 6"5UNTIL", %413 37185000=09116900=
|
|
3"1140000000000002", 6"5VALUE", %415 37190000=09117000=
|
|
3"0540000000000002", 6"5WHILE", %417 37195000=09117100=
|
|
3"1310440200000002", 6"3ADD00", %419 37200000=09117200=
|
|
3"1310240270000002", 6"3BRT00", %421 37205000=09117300=
|
|
3"1310453050000002", 6"3CCX00", %423 37210000=09117400=
|
|
3"1310442500000002", 6"3CDC00", %425 37215000=09117500=
|
|
3"1310457050000002", 6"3CFX00", %427 37220000=09117600=
|
|
3"1310302060000002", 6"3CHS00", %429 37225000=09117700=
|
|
3"1310440500000002", 6"3COC00", %431 37230000=09117800=
|
|
3"1310242020000002", 6"3COM00", %433 37235000=09117900=
|
|
3"1310302060000002", 6"3CSB00", %435 37240000=09118000=
|
|
3"1310240120000002", 6"3DEL00", %437 37245000=09118100=
|
|
3"1260100550000002", 6"3DIA00", %439 37250000=09118200=
|
|
3"1260100610000002", 6"3DIB00", %441 37255000=09118300=
|
|
3"1310344050000002", 6"3DUP00", %443 37260000=09118400=
|
|
3"1310451050000002", 6"3EQL00", %445 37265000=09118500=
|
|
3"1310443050000002", 6"3FCX00", %447 37270000=09118600=
|
|
3"1310447050000002", 6"3FFX00", %449 37275000=09118700=
|
|
3"1310440250000002", 6"3GEQ00", %451 37280000=09118800=
|
|
3"1310440450000002", 6"3GTR00", %453 37285000=09118900=
|
|
3"1310104420000002", 6"3HLB00", %455 37290000=09119000=
|
|
3"1310104420000002", 6"3HP200", %457 37295000=09119050=
|
|
3"1310446000000002", 6"3IDV00", %459 37300000=09119100=
|
|
3"1310251020000002", 6"3IIO00", %461 37305000=09119200=
|
|
3"1310250220000002", 6"3INA00", %463 37310000=09119300=
|
|
3"1310250420000002", 6"3INB00", %465 37315000=09119400=
|
|
3"1310100420000002", 6"3INI00", %467 37320000=09119500=
|
|
3"1400440300000002", 6"3INX00", %469 37325000=09119600=
|
|
3"1310244220000002", 6"3IOR00", %471 37330000=09119700=
|
|
3"1310250220000002", 6"3IP100", %473 37335000=09119800=
|
|
3"1310250420000002", 6"3IP200", %475 37340000=09119900=
|
|
3"1310145060000002", 6"3IPS00", %477 37345000=09120000=
|
|
3"1310410240000002", 6"3ISD00", %479 37350000=09120100=
|
|
3"1310450440000002", 6"3ISN00", %481 37355000=09120200=
|
|
3"1310100420000002", 6"3ITI00", %483 37360000=09120300=
|
|
3"1310450250000002", 6"3LEQ00", %485 37365000=09120400=
|
|
3"1310505300000002", 6"3LLL00", %487 37370000=09120500=
|
|
3"1310441030000002", 6"3LND00", %489 37375000=09120600=
|
|
3"1310300230000002", 6"3LNG00", %491 37380000=09120700=
|
|
3"1310304040000002", 6"3LOD00", %493 37385000=09120800=
|
|
3"1310440430000002", 6"3LOR00", %495 37390000=09120900=
|
|
3"1310442030000002", 6"3LQV00", %497 37395000=09121000=
|
|
3"1310450450000002", 6"3LSS00", %499 37400000=09121100=
|
|
3"1310101100000002", 6"3MKS00", %501 37405000=09121200=
|
|
3"1310441000000002", 6"3MUL00", %503 37410000=09121300=
|
|
3"1310441050000002", 6"3NEQ00", %505 37415000=09121400=
|
|
3"1310100130000002", 6"3NOP00", %507 37420000=09121500=
|
|
3"0650006550000002", 6"6SCOPO", 6"N......."; %509 37425000=09121600=
|
|
FILL INFO[2, *] WITH 37430000=09121700=
|
|
3"131030000020004", 6"3RDF00", %512 37432000
|
|
3"0000", COMMENT LITC 0; 37435000=09121800=
|
|
3"2141", COMMENT FXS ; 37440000=09121900=
|
|
3"131030000020004", 6"3RDS00", %516 37450000=09122000=
|
|
3"0004", COMMENT LITC 1; 37455000=09122100=
|
|
3"2141", COMMENT FXS ; 37460000=09122200=
|
|
3"1310456000000002", 6"3RDV00", %520 37470000=09122300=
|
|
3"1310304030000002", 6"3RFB00", %522 37475000=09122400=
|
|
3"1310240470000002", 6"3RND00", %524 37480000=09122500=
|
|
3"1310145060000002", 6"3RRR00", %526 37485000=09122600=
|
|
3"1310311060000002", 6"3RSB00", %528 37490000=09122700=
|
|
3"1310242470000002", 6"3RSP00", %530 37495000=09122800=
|
|
3"1310141020000002", 6"3RTM00", %532 37500000=09122900=
|
|
3"1310240470000002", 6"3RTN00", %534 37505000=09123000=
|
|
3"1310141020000002", 6"3RTR00", %536 37510000=09123100=
|
|
3"1310242470000002", 6"3RTS00", %538 37515000=09123200=
|
|
3"1310310030000002", 6"3SFB00", %540 37520000=09123300=
|
|
3"1310442040000002", 6"3SND00", %542 37525000=09123400=
|
|
3"1310301060000002", 6"3SSB00", %544 37530000=09123500=
|
|
3"1310316060000002", 6"3SSF00", %546 37535000=09123600=
|
|
3"1310301060000002", 6"3SSN00", %548 37540000=09123700=
|
|
3"1310311060000002", 6"3SSP00", %550 37545000=09123800=
|
|
3"1310401040000002", 6"3STD00", %552 37550000=09123900=
|
|
3"1310240000020004", 6"3STF00", %554 37555000=09124000=
|
|
3"0010", COMMENT LITC 2; 37560000=09124100=
|
|
3"2141", COMMENT FXS ; 37565000=09124200=
|
|
3"1310442040000002", 6"3STN00", %558 37575000=09124300=
|
|
3"1310240000020004", 6"3STS00", %560 37580000=09124400=
|
|
3"0014", COMMENT LITC 3; 37585000=09124500=
|
|
3"2141", COMMENT FXS ; 37590000=09124600=
|
|
3"1310440600000002", 6"3SUB00", %564 37600000=09124700=
|
|
3"1310344060000002", 6"3TFB00", %566 37605000=09124800=
|
|
3"1270440650000002", 6"3TFR00", %568 37610000=09124900=
|
|
3"1310155060000002", 6"3TIO00", %570 37615000=09125000=
|
|
3"1310344060000002", 6"3TOP00", %572 37620000=09125050=
|
|
3"1270440650000002", 6"3TRB00", %574 37625000=09125100=
|
|
3"1300300000000002", 6"3VFI00", %576 37630000=09125200=
|
|
3"1310502050000002", 6"3XCH00", %578 37635000=09125300=
|
|
3"1310101070000002", 6"3XIT00", %580 37640000=09125400=
|
|
3"1310105020000002", 6"3ZIP00", %582 37645000=09125500=
|
|
3"1310105020000002", 6"3ZP100", %584 37650000=09125600=
|
|
3"1270500750000002", 6"3CFE00", %586 37655000=09125700=
|
|
3"1270500750000002", 6"3FCE00", %588 37660000=09125800=
|
|
3"1270500710000002", 6"3CFL00", %590 37665000=09125900=
|
|
3"1270500710000002", 6"3FCL00", %592 37670000=09126000=
|
|
3"1310440210000002", 6"3DLA00", %594 37675000=09126100=
|
|
3"1310440210000002", 6"3ADL00", %596 37680000=09126200=
|
|
3"1310440610000002", 6"3DLS00", %598 37685000=09126300=
|
|
3"1310440610000002", 6"3SDL00", %600 37690000=09126400=
|
|
3"1310441010000002", 6"3DLM00", %602 37695000=09126500=
|
|
3"1310441010000002", 6"3MDL00", %604 37700000=09126600=
|
|
3"1310442010000002", 6"3DLD00", %606 37705000=09126700=
|
|
3"1310442010000002", 6"3DDL00", %608 37710000=09126800=
|
|
3"0460000000000002", 6"1P0000", %610 37715000=09126900=
|
|
3"0360002000020002", 6"1M0000", %612 37720000=09127000=
|
|
3"1310240000020004", 6"3PRL00", %614 37725000=09127100=
|
|
3"0111", COMMENT PRL; 37730000=09127200=
|
|
3"0055", COMMENT NOP; 37735000=09127300=
|
|
3"0650006610000003", 6"7SCOPO", 6"FF......", %618 37745000=09127400=
|
|
3"0030000000040003", 6"2LB000", 6"[# ", %621 37755000=09127500=
|
|
3"0030000000040003", 6"2RB000", 6"]# ", %624 37760000=09127600=
|
|
3"0030000000040003", 6"3GTR00", 6"># ", %627 37765000=09127700=
|
|
3"0030000000040003", 6"3GEQ00", 6"}# ", %630 37770000=09127800=
|
|
3"0030000000040003", 6"3EQL00", 6"=# ", %633 37775000=09127900=
|
|
3"0030000000040003", 6"3NEQ00", 6"!# ", %636 37780000=09128000=
|
|
3"0030000000040003", 6"3LEQ00", 6"{# ", %639 37785000=09128100=
|
|
3"0030000000040003", 6"3LSS00", 6"<# ", %642 37790000=09128200=
|
|
3"0030000000040003", 6"5TIMES", 6"|# ", %645 37795000=09128300=
|
|
3"1310117530000002", 6"3SCI00", %688 37800000=09128400=
|
|
3"1310117540000002", 6"3SAN00", %650 37805000=09128500=
|
|
3"1310157730000002", 6"3SCS00", %652 37810000=09128600=
|
|
0;% END OF INFO FILL. 37815000=09133700=
|
|
FOR GT2:= 256 STEP GT1.LINK WHILE NOT BOOLEAN(GT1.FORMAL) DO 37820000=09133800=
|
|
PUT((GT1:= TAKE(GT2)) & GT2[12:12:13], GT2); 37825000=09133900=
|
|
FOR GT1:= GT2 STEP GT2.LINK WHILE GT2.LINK ^= 0 DO 37830000=09134000=
|
|
PUT((GT2:= TAKE(GT1)) & 37835000=09134200=
|
|
STACKHEAD[GT3:= TAKE(GT1+1).[35:36] MOD 125][12:12:13], 37840000=09134200=
|
|
STACKHEAD[GT3]:= GT1); 37845000=09134200=
|
|
37850000=09197000=
|
|
COMMENT THIS IS THE FILL FOR THE SPECIAL CHARACTORS; 37855000=09197000=
|
|
FILL SPECIAL[*] WITH 37860000=09198000=
|
|
3"1200000000200000", COMMENT #; 3"0000000000100000", COMMENT @; 37865000=09199000=
|
|
3"0000000000000000", 3"1160000000120000", COMMENT :; 37870000=09200000=
|
|
3"1370440450002763", COMMENT >; 3"1370440250002662", COMMENT >=; 37875000=09201000=
|
|
3"1400440200000000", COMMENT +; 3"0000000000000000", 37880000=09202000=
|
|
3"1220000000060000", COMMENT .; 3"1210000000000000", COMMENT [; 37885000=09203000=
|
|
3"1250000000000000", COMMENT &; 3"0450000000000000", COMMENT (; 37890000=09204000=
|
|
3"1370450450003571", COMMENT <; 3"1330401040000000", COMMENT <-; 37895000=09205000=
|
|
3"1410441000000000", COMMENT x; 3"0000000000000000", 37900000=09206000=
|
|
3"0000000000040000", COMMENT $; 3"0470000000000000", COMMENT *; 37905000=09207000=
|
|
3"1400440600000000", COMMENT -; 3"1240000000160000", COMMENT ); 37910000=09208000=
|
|
3"0620000000000000", COMMENT .,; 3"1370450250003470", COMMENT <=; 37915000=09209000=
|
|
3"0000000000000000", 3"1410442000000000", COMMENT /; 37920000=09210000=
|
|
3"1170000000000000", COMMENT ,; 3"0000000000020000", COMMENT %; 37925000=09211000=
|
|
3"1370441050002561", COMMENT ^=; 3"1370451050002460", COMMENT =; 37930000=09212000=
|
|
3"1230000000000000", COMMENT ]; 3"0000000000140000", COMMENT "; 37935000=09213000=
|
|
0,0; 37940000=09214000=
|
|
FILL MACRO[*] WITH 37945000=09215000=
|
|
3"0131", COMMENT SFS A 00 ; 37950000=09216000=
|
|
3"0116", COMMENT SFD A 01 ; 37955000=09217000=
|
|
3"0000", COMMENT SYNTAX ERROR02 ; 37960000=09218000=
|
|
3"0140", COMMENT INC A 03 ; 37965000=09219000=
|
|
3"0130", COMMENT SRS A 04 ; 37970000=09220000=
|
|
3"0117", COMMENT SRD A 05 ; 37975000=09221000=
|
|
3"0000", COMMENT SYNTAX ERROR06 ; 37980000=09222000=
|
|
3"0000", COMMENT SYNTAX ERROR07 ; 37985000=09223000=
|
|
3"00310143", COMMENT CRF A, SFS 008 ; 37990000=09224000=
|
|
3"00160143", COMMENT CRF A, SFD 009 ; 37995000=09225000=
|
|
3"00470143", COMMENT CRF A, JFW 0 10 ; 38000000=09226000=
|
|
3"00400143", COMMENT CRF A, INC 011 ; 38005000=09227000=
|
|
3"00300143", COMMENT CRF A, SRS 012 ; 38010000=09228000=
|
|
3"00170143", COMMENT CRF A, SRD 013 ; 38015000=09229000=
|
|
3"0000", COMMENT SYNTAX ERROR14 ; 38020000=09230000=
|
|
3"0000", COMMENT SYNTAX ERROR15 ; 38025000=09231000=
|
|
3"0153", COMMENT RSA A 16 ; 38030000=09232000=
|
|
3"0104", COMMENT RDA A 17 ; 38035000=09233000=
|
|
3"0150", COMMENT RCA A 18 ; 38040000=09234000=
|
|
3"004201430042", COMMENT SEC 0, CRF A, SEC 0 19 ; 38045000=09235000=
|
|
3"0122", COMMENT SES A 20 ; 38050000=09236000=
|
|
3"0106", COMMENT SED A 21 ; 38055000=09237000=
|
|
3"0000", COMMENT SYNTAX ERROR22 ; 38060000=09238000=
|
|
3"0000", COMMENT SYNTAX ERROR23 ; 38065000=09239000=
|
|
3"0056", COMMENT TSA 0 24 ; 38070000=09240000=
|
|
3"0000", COMMENT SYNTAX ERROR25 ; 38075000=09241000=
|
|
3"0000", COMMENT SYNTAX ERROR26 ; 38080000=09242000=
|
|
3"0000", COMMENT SYNTAX ERROR27 ; 38085000=09243000=
|
|
3"0000", COMMENT SYNTAX ERROR28 ; 38090000=09244000=
|
|
3"0007", COMMENT TDA 0 29 ; 38095000=09245000=
|
|
3"0000", COMMENT SYNTAX ERROR30 ; 38100000=09246000=
|
|
3"0000", COMMENT SYNTAX ERROR31 ; 38105000=09247000=
|
|
3"0115", COMMENT SSA A 32 ; 38110000=09248000=
|
|
3"0114", COMMENT SDA A 33 ; 38115000=09249000=
|
|
3"0154", COMMENT SCA A 34 ; 38120000=09250000=
|
|
3"0141"; COMMENT STC A 35 ; 38125000=09251000=
|
|
FILL OPTIONS[*] WITH 6"5CHECK", 0, % 0,1 38130000=09251208=
|
|
6"6DEBUG", 0, % 2,3 38135000=09251212=
|
|
6"4DECK0", 0, % 4,5 38140000=09251214=
|
|
6"6FORMA", 0, % 6,7 38145000=09251216=
|
|
6"9INTRI", 0, % 8,9 38150000=09251218=
|
|
6"5LISTA", 0, % 10,11 38155000=09251220=
|
|
6"4LIST0", 0, % 12,13 38160000=09251224=
|
|
6"5LISTP", 0, % 14,15 38165000=09251228=
|
|
6"3MCP00", 0, % 16,17 38170000=09251230=
|
|
6"4TAPE0", 0, % 18,19 38175000=09251232=
|
|
6"4NEST0", 0, % 20,21 38180000=09251234=
|
|
6"3NEW00", 0, % 22,23 38185000=09251236=
|
|
6"7NEWIN", 0, % 24,25 38190000=09251240=
|
|
6"4OMIT0", 0, % 26,27 38195000=09251244=
|
|
6"1$0000", 0, % 28,29 38200000=09251248=
|
|
6"3PRT00", 0, % 30,31 38205000=09251252=
|
|
6"5PUNCH", 0, % 32,33 38210000=09251256=
|
|
6"5PURGE", 0, % 34,35 38215000=09251260=
|
|
6"4SEGS0", 0, % 36,37 38220000=09251264=
|
|
6"3SEQ00", 0, % 38,39 38225000=09251268=
|
|
6"6SEQER", 0, % 40,41 38230000=09251272=
|
|
6"6SINGL", 0, % 42,43 38235000=09251276=
|
|
6"5STUFF", 0, % 44,45 38240000=09251378=
|
|
6"4VOID0", 0, % 46,47 38245000=09251380=
|
|
6"5VOIDT", 0, % 48,49 38250000=09251384=
|
|
0; 38255000=09251388=
|
|
DO 38260000=09252000=
|
|
UNTIL STEPI = BEGINV; 38265000=09252000=
|
|
GT1:= -6" "; 38270000=09253000=
|
|
INTOG:= INTOG AND TRUE; % 38275000=09253050=
|
|
DISKADR:= 38280000=09253100=
|
|
IF INTOG THEN 38285000=09253100=
|
|
INTRINSICADR 38290000=09253100=
|
|
ELSE 38295000=09253100=
|
|
2; 38300000=09253100=
|
|
MDESC(GT1, INFO[LASTSEQROW, LASTSEQUENCE]); 38305000=09253500=
|
|
MDESC(GT1, INFO[LASTSEQROW, LASTSEQUENCE-1]); 38310000=09254000=
|
|
MDESC(GT1, INFO[LASTSEQROW, LASTSEQUENCE-2]); 38315000=09255000=
|
|
STMT; 38320000=09275000=
|
|
LOCK(STUFF); 38325000=09281000=
|
|
CLOSE(CARD); 38330000=09281500=
|
|
IF T:= ((L+3) DIV 4)+CORADR > 4080 THEN 38355000=09282600=
|
|
FLAG(040); 38360000=09282600=
|
|
IF NOT NOHEADING THEN % PRINT THESE THINGS IF ANY 38365000=09362000=
|
|
BEGIN % LISTING HAS BEEN DONE. 38370000=09363000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%38372000
|
|
PROCEDURE PAN(T, FIEL, FX, NER, LSQ, SX); 38375000=09364000=
|
|
VALUE 38380000=09364000=
|
|
T, FX, NER, SX; 38385000=09364000=
|
|
REAL 38390000=09364000=
|
|
T, FX, NER, SX; 38391000
|
|
ARRAY 38392000
|
|
FIEL, LSQ[0]; 38393000
|
|
BEGIN 38395000=09365000=
|
|
STREAMLOCALS; 38396000
|
|
STREAMSETDI(FIEL, FX); 38400000=09365000=
|
|
STREAMSMEARLIT(44*2, 6" "); 38405000=09365000=
|
|
STREAMSETSI(LSQ, SX); 38410000=09366000=
|
|
STREAMTRANSFERWDS(1); 38415000=09366000=
|
|
STREAMSETSI(FIEL, FX); 38420000=09366000=
|
|
STREAMTRANSFERWDS(3); 38425000=09366000=
|
|
STREAMSETDI(FIEL, FX); 38430000=09367000=
|
|
STREAMTRANSFERLIT(8, 6"NUMBER O"); 38435000=09367000=
|
|
STREAMTRANSFERLIT(8, 6"F ERRORS"); 38436000
|
|
STREAMTRANSFERLIT(8, 6" DETECTE"); 38437000
|
|
STREAMTRANSFERLIT(4, 6"D = "); 38438000
|
|
STREAMSETLOCSI(NER); 38440000=09368000=
|
|
STREAMTRANSFERDEC(3); 38445000=09368000=
|
|
STREAMTRANSFERLIT(8, 6". COMPI"); 38450000=09368000=
|
|
STREAMTRANSFERLIT(8, 6"LATION T"); 38452000
|
|
STREAMTRANSFERLIT(6, 6"IME = "); 38454000
|
|
STREAMSETLOCSI(T); 38455000=09369000=
|
|
STREAMTRANSFERDEC(4); 38460000=09369000=
|
|
STREAMTRANSFERLIT(8, 6" SECONDS"); 38465000=09369000=
|
|
STREAMTRANSFERLIT(1, 6"."); 38466000
|
|
END; 38470000=09369000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%38472000
|
|
PROCEDURE PEN(FIL, FX, PRTSIZ, BASE, CORE, DISK); 38475000=09370000=
|
|
VALUE 38480000=09371000=
|
|
FX, PRTSIZ, BASE, CORE, DISK; 38485000=09371000=
|
|
ARRAY 38486000
|
|
FIL[0]; 38488000
|
|
REAL 38490000
|
|
FX, PRTSIZ, BASE, CORE, DISK; 38492000
|
|
BEGIN 38505000=09372000=
|
|
STREAMLOCALS; 38506000
|
|
STREAMSETDI(FIL, FX); 38510000=09372000=
|
|
STREAMTRANSFERLIT(8, 6"PRT SIZE"); 38515000=09372000=
|
|
STREAMTRANSFERLIT(1, 6"="); 38516000
|
|
STREAMSETLOCSI(PRTSIZ); 38520000=09372000=
|
|
STREAMTRANSFERDEC(3); 38525000=09373000=
|
|
STREAMTRANSFERLIT(8, 6" BASE AD"); 38530000=09373000=
|
|
STREAMTRANSFERLIT(6, 6"DRESS="); 38532000
|
|
STREAMSETLOCSI(BASE); 38535000=09374000=
|
|
STREAMTRANSFERDEC(4); 38540000=09374000=
|
|
STREAMTRANSFERLIT(8, 6" CORE RE"); 38545000=09374000=
|
|
STREAMTRANSFERLIT(2, 6"Q="); 38546000
|
|
STREAMSETLOCSI(CORE); 38550000=09375000=
|
|
STREAMTRANSFERDEC(4); 38555000=09375000=
|
|
STREAMTRANSFERLIT(8, 6" DISK RE"); 38560000=09375000=
|
|
STREAMTRANSFERLIT(2, 6"Q="); 38562000
|
|
STREAMSETLOCSI(DISK); 38565000=09376000=
|
|
STREAMTRANSFERDEC(5); 38570000=09376000=
|
|
STREAMSMEARLIT(61, 6" "); 38575000=09376000=
|
|
END PEN; 38580000=09377000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%38582000
|
|
PROCEDURE FINALAX(LINE, LX, N, SEQ, SX); 38585000=09378000=
|
|
VALUE 38590000=09378000=
|
|
LX, N, SX; 38595000=09378000=
|
|
ARRAY 38596000
|
|
LINE[0]; 38597000
|
|
REAL 38598000
|
|
LX, N, SX; 38599000
|
|
BEGIN 38600000=09379000=
|
|
STREAMLOCALS; 38602000
|
|
STREAMSETDI(LINE, LX); 38605000=09379000=
|
|
STREAMSMEARLIT(15*8, 6" "); 38610000=09379000=
|
|
STREAMSETDI(LINE, LX); 38615000=09380000=
|
|
STREAMTRANSFERLIT(8, 6"NUMBER O"); 38620000=09380000=
|
|
STREAMTRANSFERLIT(8, 6"F ACCIDE"); 38621000
|
|
STREAMTRANSFERLIT(8, 6"NTAL ENT"); 38622000
|
|
STREAMTRANSFERLIT(7, 6"RIES = "); 38623000
|
|
STREAMSETLOCSI(N); 38625000=09381000=
|
|
STREAMTRANSFERDEC(3); 38630000=09381000=
|
|
STREAMSKIPDI(+8); 38635000=09381000=
|
|
STREAMSETSI(SEQ, SX); 38640000=09382000=
|
|
STREAMSKIPSI(-16); 38645000=09382000=
|
|
STREAMTRANSFERCHR(8); 38650000=09382000=
|
|
END; 38655000=09383000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%38656000
|
|
IF AXNUM ^= 0 THEN 38660000=09384000=
|
|
BEGIN 38665000=09384050=
|
|
FINALAX(LIN, 0, AXNUM, INFO[LASTSEQROW,*], LASTSEQUENCE); 38670000=09384100=
|
|
WRITELINE; 38675000=09384500=
|
|
END; 38680000=09384600=
|
|
SCRAM:= (TIME(1)-TIME1)/60; 38685000=09385000=
|
|
PAN(SCRAM, LIN, 0, ERRORCOUNT, 38690000=09386500=
|
|
INFO[LASTSEQROW,*], LASTSEQUENCE-1); 38695000=09386500=
|
|
WRITELINE; 38700000=09389000=
|
|
PEN(LIN, 0, PRTIMAX, T:= (L+3) DIV 4, T:= CORADR+T, 38702000=09389000=
|
|
((T+29) DIV 30+DISKADR)*30); 38705000=09389000=
|
|
WRITELINE; 38710000=09389500=
|
|
LOCK(LINE, CRUNCH); 38715000=09390000=
|
|
END; 38720000=09390000=
|
|
38720500
|
|
MYSELF.TASKVALUE:= ERRORCOUNT; 38721000
|
|
IF ERRORCOUNT = 0 THEN 38721500
|
|
REPLACE POINTER(EBCDICBUFF,8) BY "NO ERRORS", 0 FOR 1 38722000
|
|
ELSE 38722500
|
|
REPLACE POINTER(EBCDICBUFF,8) BY ERRORCOUNT FOR * DIGITS, 38723000
|
|
" SYNTAX ERROR", "S" FOR REAL(ERRORCOUNT^=1), 0 FOR 1; 38723500
|
|
DISPLAY(POINTER(EBCDICBUFF,8)); 38724000
|
|
38724500
|
|
IF ERRORCOUNT ^= 0 THEN 38725000=09391000=
|
|
MYSELF.STATUS:= VALUE(TERMINATED) 38730000=09391000=
|
|
ELSE 38735000=09391000=
|
|
BEGIN 38740000=09392000=
|
|
ARRAY 38745000=09392300=
|
|
SAVINFO[0:31, 0:255], 38750000=09392500=
|
|
INFO[0:200, 0:255]; % FOR LARGE MCP"S. 38755000=09392500=
|
|
INTEGER 38760000=09393000=
|
|
SAVNDX, 38765000=09393000=
|
|
NONSAVNDX, 38770000=09393000=
|
|
N; 38775000=09393000=
|
|
INTEGER 38780000=09393010=
|
|
Q, 38785000=09393010=
|
|
J, 38790000=09393010=
|
|
K, 38795000=09393010=
|
|
M; 38800000=09393010=
|
|
BOOLEAN 38805000=09393020=
|
|
TSSTOG; 38810000=09393020=
|
|
REAL 38815000=09393020=
|
|
T; 38820000=09393020=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%38822000
|
|
REAL PROCEDURE PUSHER(GRINCH, GOT, XMAS); 38825000=09393050=
|
|
VALUE 38830000=09393050=
|
|
XMAS; 38835000=09393050=
|
|
REAL 38840000=09393050=
|
|
XMAS; 38845000=09393050=
|
|
ARRAY 38850000=09393060=
|
|
GOT[0]; 38855000=09393060=
|
|
ARRAY 38860000=09393060=
|
|
GRINCH[0, 0]; 38865000=09393060=
|
|
BEGIN 38870000=09393070=
|
|
REAL 38875000=09393080=
|
|
WHO, 38880000=09393080=
|
|
WHAT; 38885000=09393080=
|
|
DEFINE 38890000=09393090=
|
|
LINKR = [15:8] #; 38895000=09393090=
|
|
% 38900000=09393100=
|
|
IF WHO:= XMAS.LINKC <= 225 THEN 38905000=09393110=
|
|
BEGIN 38910000=09393120=
|
|
MOVE(30, GRINCH[XMAS.LINKR,*], WHO, GOT, 0); 38915000=09393130=
|
|
PUSHER:= XMAS+30; 38920000=09393140=
|
|
END 38925000=09393160=
|
|
ELSE 38930000=09393160=
|
|
BEGIN 38935000=09393160=
|
|
MOVE(WHAT:= 256-WHO, GRINCH[XMAS.LINKR,*], WHO, GOT, 0); 38940000=09393170=
|
|
XMAS:= XMAS+WHAT; 38945000=09393180=
|
|
MOVE(WHO:= 30-WHAT, GRINCH[XMAS.LINKR,*], 0, GOT, WHAT); 38950000=09393190=
|
|
PUSHER:= XMAS+WHO; 38955000=09393200=
|
|
END; 38960000=09393220=
|
|
END PUSHER; 38965000=09393230=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%38970000=09393230=
|
|
PROCEDURE PUSHEE(GRINCH, N, B, Y); 38975000=09393240=
|
|
VALUE 38980000=09393240=
|
|
N, 38985000=09393240=
|
|
B, 38990000=09393240=
|
|
Y; 38995000=09393240=
|
|
REAL 39000000=09393240=
|
|
N, 39005000=09393240=
|
|
B, 39010000=09393240=
|
|
Y; 39015000=09393240=
|
|
ARRAY 39020000=09393250=
|
|
GRINCH[0, 0]; 39025000=09393250=
|
|
BEGIN 39030000=09393260=
|
|
REAL 39035000=09393270=
|
|
I, 39040000=09393270=
|
|
J, 39045000=09393270=
|
|
X; 39050000=09393270=
|
|
DEFINE 39055000=09393280=
|
|
LINKR = [15:8] #; 39060000=09393280=
|
|
J:= Y; 39065000=09393290=
|
|
I:= B+N; 39070000=09393300=
|
|
WHILE B < I DO 39075000=09393310=
|
|
BEGIN 39080000=09393320=
|
|
IF Y:= B.LINKC <= 225 THEN 39085000=09393330=
|
|
BEGIN 39090000=09393340=
|
|
MOVE(30, CODE, J, GRINCH[B.LINKR,*], Y); 39095000=09393350=
|
|
J:= J+30; 39100000=09393360=
|
|
B:= B+30; 39105000=09393370=
|
|
END 39110000=09393390=
|
|
ELSE 39115000=09393390=
|
|
BEGIN 39120000=09393390=
|
|
MOVE(X:= 256-Y, CODE, J, GRINCH[B.LINKR,*], Y); 39125000=09393400=
|
|
B:= B+X; 39130000=09393410=
|
|
J:= J+X; 39135000=09393420=
|
|
MOVE(Y:= 30-X, CODE, J, GRINCH[B.LINKR,*], 0); 39140000=09393430=
|
|
B:= B+Y; 39145000=09393440=
|
|
J:= J+Y; 39150000=09393450=
|
|
END; 39155000=09393460=
|
|
END; 39160000=09393470=
|
|
END PUSHEE; 39165000=09393480=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%39170000=09393480=
|
|
PROCEDURE FIXHDR(F, N); 39175000=09393700=
|
|
VALUE 39180000=09393700=
|
|
N; 39185000=09393700=
|
|
FILE 39185100
|
|
F; 39185200
|
|
INTEGER 39185300
|
|
N; 39185400
|
|
BEGIN 39190000=09393710=
|
|
COMMENT FIXHDR WAS ORIGINALLY A STREAM PROCEDURE THAT SET THE 39195000=09393710=
|
|
CODE FILE TYPE CODE IN HEADER[4].[11:6]. SEE LINES 01561400- 39200000=09393710=
|
|
01561460 IN THE ORIGINAL ESPOL SOURCE. 39205000=09393710=
|
|
THIS HAS NO MEANING ON E-MODE SYSTEMS, SO THIS PROCEDURE NOW 39210000=09393710=
|
|
DOES NOTHING; 39215000=09393720=
|
|
END FIXHDR; 39260000=09393750=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%39262000
|
|
LABEL 39265000=09394000=
|
|
EOF; 39270000=09394000=
|
|
IF NOT INTOG THEN 39275000=09394100=
|
|
BEGIN 39280000=09394200=
|
|
L:= (L+3) DIV 4; COMMENT L~NUM. OF WORDS IN OUTER BLOCK;39285000=09395000=
|
|
FILL SAVINFO[0, *] WITH 39295000=09395300=
|
|
3"7700000000000015", 39296000=09395300=
|
|
3"0253010477527705", 39300000=09395500=
|
|
3"0051000000000000", 39302000=09395500=
|
|
3"0441070001000062"; 39305000=09395500=
|
|
Q:= -1; 39310000=09395700=
|
|
PUSHEE(SAVEINFO, L, 4, 5); 39315000=09396000=
|
|
SAVNDX:= L; 39320000=09397000=
|
|
END; 39325000=09397100=
|
|
REWIND(CODISK); 39330000=09398000=
|
|
DO BEGIN 39335000=09399000=
|
|
IF REED = 0 THEN 39340000=09399000=
|
|
GO TO EOF; 39345000=09399000=
|
|
N:= CODELENGTH-1; 39350000=09400000=
|
|
IF BOOLEAN(CODE[0]) THEN 39355000=09401000=
|
|
BEGIN 39360000=09402000=
|
|
PUSHEE(SAVINFO, N, SAVNDX, 1); 39365000=09402100=
|
|
SAVNDX:= SAVNDX+N; 39370000=09403000=
|
|
END 39375000=09404000=
|
|
ELSE 39380000=09404000=
|
|
BEGIN 39385000=09404000=
|
|
IF DECKTOG THEN 39390000=09405000=
|
|
STACKHEAD[Q:= Q+1]:= 1024*NONSAVNDX+N; 39395000=09405500=
|
|
PUSHEE(INFO, N, NONSAVNDX, 1); 39400000=09406000=
|
|
NONSAVNDX:= ((NONSAVNDX+N+29) DIV 30)*30; 39405000=09407000=
|
|
END; 39410000=09408000=
|
|
END 39415000=09412000=
|
|
UNTIL FALSE; 39420000=09412000=
|
|
EOF: 39425000=09413000=
|
|
N:= (SAVNDX+29) DIV 30; COMMENT NUMBER OF DISK SEGMENTS39430000=09413000=
|
|
OCCUPIED BY SAVE PROCEDURES AND ARRAYS; 39440000=09414000=
|
|
IF INTOG AND NOT DECKTOG THEN 39445000=09414010=
|
|
BEGIN% INTRINSIC FUNCTION OPTION 39450000=09414020=
|
|
FOR J:= USEROPINX STEP 2 UNTIL OPARSIZE DO % IS TIMESHARING SET 39455000=09414022=
|
|
IF OPTIONS[J] = 6"@TIMES" THEN 39460000=09414024=
|
|
BEGIN 39465000=09414026=
|
|
TSSTOG:= BOOLEAN(OPTIONS[J+1]); 39470000=09414026=
|
|
J:= OPARSIZE 39475000=09414026=
|
|
END; 39480000=09414026=
|
|
I:= PRTBASE+1; 39485000=09414030=
|
|
J:= 0; 39490000=09414030=
|
|
DO 39495000=09414040=
|
|
IF GT1:= PRT[I] ^= 0 THEN 39500000=09414040=
|
|
BEGIN 39505000=09414050=
|
|
J:= J+1; 39510000=09414060=
|
|
SAVINFO[J.LINKR, J.LINKC]:= 0 & GT1[39:39:10] 39515000=09414090=
|
|
& GT1[14:29:15]; 39520000=09414090=
|
|
END 39525000=09414100=
|
|
UNTIL I:= I+1 >= PRTIMAX; 39530000=09414100=
|
|
SAVINFO[0, 0]:= J; % # OF INTRINSICS 39535000=09414110=
|
|
SAVNDX:= MAXINTRINSIC; 39540000=09414120=
|
|
END 39545000=09414130=
|
|
ELSE 39550000=09414130=
|
|
BEGIN 39555000=09414130=
|
|
I:= PRTBASE; 39560000=09415000=
|
|
DO 39565000=09415000=
|
|
IF GT1:= PRT[I] ^= 0 THEN 39570000=09415000=
|
|
BEGIN 39575000=09415500=
|
|
IF GT1.[46:5] ^= LDES THEN 39580000=09415500=
|
|
BEGIN 39585000=09416000=
|
|
IF(GT1:= GT1 & (GT1.[14:15]+L)[14:14:15]).[41:2] ^= 3 THEN39590000=09416000=
|
|
GT1:= GT1 & (GT1.[29:15]+N)[29:14:15]; 39595000=09417000=
|
|
END; 39600000=09417500=
|
|
MDESC(GT1, SAVINFO[I.LINKR, I.LINKC]); 39605000=09418000=
|
|
END 39610000=09419000=
|
|
ELSE 39615000=09419000=
|
|
SAVINFO[I.LINKR, I.LINKC]:= 0 39620000=09419000=
|
|
UNTIL I:= I+1 >= PRTIMAX; 39625000=09419000=
|
|
MDESC(0 & 1[45:0:1], SAVINFO[D, PRTBASE-1]); 39630000=09419100=
|
|
SAVNDX:= 30*N; 39635000=09420000=
|
|
END; 39640000=09420010=
|
|
I:= 0; 39645000=09420020=
|
|
J:= -1; 39650000=09420020=
|
|
IF NOT DECKTOG THEN 39655000=09421000=
|
|
BEGIN 39660000=09421500=
|
|
DO BEGIN 39665000=09423000=
|
|
I:= PUSHER(SAVINFO, ELBAT, I); 39670000=09424000=
|
|
J:= J+1; 39675000=09425000=
|
|
WRITE(DISK, 30, ELBAT[*]); 39680000=09425900=
|
|
END 39685000=09426000=
|
|
UNTIL I >= SAVNDX; 39690000=09426000=
|
|
I:= 0; 39695000=09427000=
|
|
WHILE I < NONSAVNDX DO 39700000=09427100=
|
|
BEGIN 39705000=09427200=
|
|
I:= PUSHER(INFO, ELBAT, I); 39710000=09427500=
|
|
J:= J+1; 39715000=09428000=
|
|
WRITE(DISK, 30, ELBAT[*]); 39720000=09429000=
|
|
END; 39725000=09430000=
|
|
N:= 39730000=09430050=
|
|
IF INTOG THEN 39735000=09430050=
|
|
IF TSSTOG THEN 39740000=09430050=
|
|
TSSINTYPE 39745000=09430060=
|
|
ELSE 39750000=09430060=
|
|
DCINTYPE 39755000=09430060=
|
|
ELSE 39760000=09430060=
|
|
MCPTYPE; 39765000=09430060=
|
|
FIXHDR(DISK, N); % NO EFFECT FOR MODERN MCP 39770000=09430075=
|
|
LOCK(DISK, CRUNCH); 39775000=09430100=
|
|
END 39780000=09432000=
|
|
ELSE 39785000=09432000=
|
|
BEGIN 39790000=09432000=
|
|
ELBAT[0]:= 0; 39795000=09432000=
|
|
I:= 16; 39800000=09432000=
|
|
DO BEGIN 39805000=09433000=
|
|
MOVE(8, SAVINFO[I.LINKR,*], I.LINKC, ELBAT, 1); 39810000=09433000=
|
|
ELBAT[9]:= B2D(I+96) & 1[36:0:1] & (I+96)[24:12:1]; 39815000=09434000=
|
|
WRITE(DECK, 10, ELBAT[*]); 39820000=09435000=
|
|
END 39825000=09436000=
|
|
UNTIL I:= I+8 >= SAVNDX; 39830000=09436000=
|
|
FILL ELBAT[*] WITH 0, 39835000=09439000=
|
|
3"7500000000000012", 39836000=09439000=
|
|
3"0004535530611765", 39840000=09441000=
|
|
3"7006000404210435", 39842000=09441000=
|
|
3"7700000000000015", 39845000=09443000=
|
|
3"0253010477527705", 39846000=09443000=
|
|
3"0051000004410046", 39850000=09445000=
|
|
3"0441070001000062", 39852000=09445000=
|
|
3"0040413100000000", 39855000=09446000=
|
|
3"0001000000000101"; 39856000=09446000=
|
|
WRITE(DECK, 10, ELBAT[*]); 39860000=09447000=
|
|
ELBAT[0]:= 0 & REAL(DECKTOG)[46:28:17]; 39865000=09447010=
|
|
FOR I:= 0 STEP 1 UNTIL Q DO 39870000=09447020=
|
|
BEGIN 39875000=09447030=
|
|
K:= STACKHEAD[I].[24:15]; 39880000=09447030=
|
|
M:= STACKHEAD[I].[9:10]; 39885000=09447040=
|
|
FOR J:= 0 STEP 8 UNTIL M DO 39890000=09447050=
|
|
BEGIN 39895000=09447050=
|
|
MOVE(8, INFO[(J+K).LINKR,*], (J+K).LINKC, ELBAT, 1); 39900000=09447070=
|
|
ELBAT[9]:= B2D(J) & 6"310"[46:16:17]; 39905000=09447080=
|
|
WRITE(DECK, 10, ELBAT[*]) 39910000=09447090=
|
|
END; 39915000=09447090=
|
|
END; 39920000=09447100=
|
|
END 39925000=09448000=
|
|
END 39930000=09448000=
|
|
END PROGRAM; 39935000=09448000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%39940000=09448000=
|
|
39945000=10000000=
|
|
COMMENT THIS SECTION CONTAINS GENERATORS USED BY THE BLOCK ROUTINE; 39950000=10000000=
|
|
PROCEDURE DEFINEGEN(MACRO, J); 39955000=10228000=
|
|
VALUE 39960000=10228000=
|
|
MACRO, 39965000=10228000=
|
|
J; 39970000=10228000=
|
|
BOOLEAN 39975000=10228000=
|
|
MACRO; 39980000=10228000=
|
|
REAL 39985000=10228000=
|
|
J; 39990000=10228000=
|
|
BEGIN 39995000=10229000=
|
|
OWN INTEGER 40000000=10230000=
|
|
CHARCOUNT, 40005000=10230000=
|
|
REMCOUNT; 40010000=10230000=
|
|
COMMENT CHARCOUNT CONTAINS NUMBER OFCHARACTORS OF THE DEFINE THAT WE40015000=10231000=
|
|
HAVE PUT INTO INFO. REMCOUNT CONTAINS NUMBER OF CHARACT- 40020000=10232000=
|
|
ORS REMAINING IN THIS ROW OF INFO; 40025000=10233000=
|
|
PROCEDURE PUTOGETHER(CHAR, CX); 40030000=10234000=
|
|
VALUE 40031000
|
|
CX; 40032000
|
|
ARRAY 40033000
|
|
CHAR[0]; 40034000
|
|
REAL 40035000=10234000=
|
|
CX; 40040000=10234000=
|
|
BEGIN 40045000=10235000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%40046000
|
|
PROCEDURE PACKINFO(INFO, IX, ISKIP, COUNT, ASKIP, ACCUM, AX); 40050000=10236000=
|
|
VALUE 40055000=10237000=
|
|
IX, ISKIP, COUNT, ASKIP, AX; 40060000=10237000=
|
|
ARRAY 40062000
|
|
INFO, ACCUM[0]; 40064000
|
|
REAL 40066000
|
|
IX, ISKIP, COUNT, ASKIP, AX; 40068000
|
|
BEGIN 40075000=10238000=
|
|
STREAMLOCALS; 40076000
|
|
STREAMSETDI(INFO, IX); 40080000=10238000=
|
|
STREAMSKIPDI(+ISKIP); 40085000=10238000=
|
|
STREAMSETSI(ACCUM, AX); 40090000=10239000=
|
|
STREAMSKIPSI(+ASKIP); 40095000=10239000=
|
|
STREAMSKIPSI(+3); 40100000=10239000=
|
|
STREAMTRANSFERCHR(COUNT) 40105000=10240000=
|
|
END PACKINFO; 40110000=10240000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%40112000
|
|
INTEGER 40115000=10241000=
|
|
COUNT, 40120000=10241000=
|
|
SKIPCOUNT; 40125000=10241000=
|
|
IF(COUNT:= CHAR[CX].[35:6])+CHARCOUNT > 2047 THEN 40130000=10243000=
|
|
BEGIN 40135000=10243000=
|
|
FLAG(142); 40140000=10243000=
|
|
TB1:= TRUE 40145000=10243000=
|
|
END 40150000=10244000=
|
|
ELSE 40155000=10244000=
|
|
BEGIN 40160000=10244000=
|
|
IF COUNT > REMCOUNT THEN 40165000=10246000=
|
|
BEGIN 40170000=10246000=
|
|
SKIPCOUNT:= COUNT-(COUNT:= REMCOUNT); 40175000=10247000=
|
|
REMCOUNT:= 2047 40180000=10248000=
|
|
END 40185000=10249000=
|
|
ELSE 40190000=10249000=
|
|
REMCOUNT:= REMCOUNT-COUNT; 40195000=10249000=
|
|
GT1:= CHARCOUNT DIV 8+NEXTINFO; 40200000=10250000=
|
|
PACKINFO(INFO[GT1.LINKR,*], GT1.LINKC, CHARCOUNT.[2:3], 40205000=10252000=
|
|
COUNT, 0, CHAR, CX); 40210000=10252000=
|
|
IF SKIPCOUNT ^= 0 THEN 40215000=10253000=
|
|
PACKINFO(INFO[NEXTINFO.LINKR+1,*], 0, 0, SKIPCOUNT, COUNT, 40220000=10255000=
|
|
CHAR, CX); 40225000
|
|
CHARCOUNT:= CHARCOUNT+SKIPCOUNT+COUNT 40230000=10256000=
|
|
END 40235000=10257000=
|
|
END PUTOGETHER; 40240000=10257000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%40245000=10257000=
|
|
PROCEDURE SCNN(D, DX, S, SX, Q, N, J); 40250000=10257100=
|
|
VALUE 40255000=10257100=
|
|
DX, SX, Q, N, J; 40260000=10257100=
|
|
ARRAY 40262000
|
|
D, A[0]; 40264000
|
|
REAL 40266000
|
|
DX, SX, Q, N, J; 40268000
|
|
BEGIN 40275000=10257200=
|
|
STREAMSETDI(D, DX); 40280000=10257200=
|
|
STREAMSKIPDI(+11); 40285000=10257200=
|
|
STREAMSETSI(S, SX); 40290000=10257200=
|
|
STREAMSKIPSI(+3); 40295000=10257200=
|
|
IF STREAMCOMPAREEQL(N) THEN 40300000=10257300=
|
|
IF STREAMSCGTR(6"0") THEN 40305000=10257400=
|
|
BEGIN 40310000=10257500=
|
|
STREAMSETLOCDI(J); 40315000=10257500=
|
|
STREAMSKIPDI(+7); 40320000=10257500=
|
|
IF STREAMCOMPARELEQ(1) THEN 40325000=10257600=
|
|
BEGIN 40330000=10257700=
|
|
J:= STREAMGETSI; 40335000=10257700=
|
|
STREAMSETDI(S, J); 40340000=10257700=
|
|
STREAMSETLOCSI(Q); 40345000=10257700=
|
|
STREAMSKIPSI(+6); 40350000=10257700=
|
|
STREAMTRANSFERCHR(1); 40355000=10257700=
|
|
STREAMSETDI(S, SX); 40360000=10257800=
|
|
STREAMSKIPDI(+2); 40365000=10257800=
|
|
STREAMTRANSFERCHR(1); 40370000=10257800=
|
|
END 40375000=10257900=
|
|
END 40380000=10257900=
|
|
END; 40385000=10257900=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%40386000
|
|
INTEGER 40390000=10258000=
|
|
LASTRESULT; 40395000=10258000=
|
|
REAL 40400000=10258100=
|
|
K, 40405000=10258100=
|
|
N, 40410000=10258100=
|
|
ELCLASS; 40415000=10258100=
|
|
DEFINE 40420000=10258200=
|
|
I = NXTELBT #; 40425000=10258200=
|
|
LABEL 40430000=10258300=
|
|
FINAL, 40435000=10258300=
|
|
PACKIN; 40440000=10258300=
|
|
LABEL 40445000=10259000=
|
|
BACK, 40450000=10259000=
|
|
SKSC, 40455000=10259000=
|
|
EXIT; 40460000=10259000=
|
|
TB1:= FALSE; 40465000=10260000=
|
|
CHARCOUNT:= (NEXTINFO-LASTINFO)*8; 40470000=10261000=
|
|
DEFINECTR:= 1; 40475000=10262000=
|
|
LASTRESULT:= 2; 40480000=10262000=
|
|
REMCOUNT:= (256-NEXTINFO MOD 256)*8; 40485000=10263000=
|
|
NEXTINFO:= LASTINFO; 40490000=10263100=
|
|
IF J ^= 0 THEN 40495000=10263110=
|
|
N:= TAKE(LASTINFO+1).[35:6]; 40500000=10263110=
|
|
K:= 0; 40505000=10263200=
|
|
BACK: 40510000=10263300=
|
|
STOPDEFINE:= TRUE; 40515000=10263300=
|
|
ELCLASS:= TABLE(NXTELBT); 40520000=10263400=
|
|
SKSC: 40525000=10263500=
|
|
NXTELBT:= NXTELBT-1; 40530000=10263500=
|
|
IF MACRO THEN 40535000=10263600=
|
|
BEGIN 40540000=10263700=
|
|
IF ELCLASS = COMMA THEN 40545000=10263700=
|
|
IF K = 0 THEN 40550000=10263800=
|
|
FINAL: 40555000=10263900=
|
|
BEGIN 40560000=10263900=
|
|
EBCDICBUFF[0]:= 6"1#0000"; 40562000
|
|
PUTOGETHER(EBCDICBUFF, 0); 40565000=10263900=
|
|
GO TO EXIT 40570000=10263900=
|
|
END 40575000=10264000=
|
|
ELSE 40580000=10264000=
|
|
GO PACKIN; 40585000=10264000=
|
|
IF ELCLASS = LEFTPAREN OR ELCLASS = LFTBRKET THEN 40590000=10264100=
|
|
BEGIN 40595000=10264200=
|
|
K:= K+1; 40600000=10264200=
|
|
GO TO PACKIN 40605000=10264200=
|
|
END; 40610000=10264200=
|
|
IF ELCLASS = RTPAREN OR ELCLASS = RTBRKET THEN 40615000=10264300=
|
|
IF K:= K-1 < 0 THEN 40620000=10264400=
|
|
GO FINAL 40625000=10264400=
|
|
ELSE 40630000=10264400=
|
|
GO PACKIN; 40635000=10264400=
|
|
IF ELCLASS = SEMICOLON THEN 40640000=10264410=
|
|
BEGIN 40645000=10264420=
|
|
FLAG(142); 40650000=10264420=
|
|
GO TO FINAL 40655000=10264420=
|
|
END 40660000=10264420=
|
|
ELSE 40665000=10264420=
|
|
GO PACKIN 40670000=10264500=
|
|
END; 40675000=10264500=
|
|
IF J ^= 0 THEN 40680000=10264600=
|
|
IF ACCUM[1].[35:6]-1 = N THEN 40685000=10264700=
|
|
SCNN(INFO[LASTINFO.LINKR,*], LASTINFO.LINKC, ACCUM, 1, N+770, 40690000=10264900=
|
|
N, J); 40695000=10264900=
|
|
PACKIN: 40700000=10265000=
|
|
IF RESULT = 4 THEN 40705000=10266000=
|
|
BEGIN 40710000=10266000=
|
|
COMMENT INSERT " MARKS - 2130706432 IS DECIMAL FOR 1"0000; 40715000=10267000=
|
|
EBCDICBUFF[0]:= 2130706432; 40716000
|
|
PUTOGETHER(EBCDICBUFF, 0); 40720000=10268000=
|
|
PUTOGETHER(ACCUM, 1); 40725000=10269000=
|
|
EBCDICBUFF[0]:= 2130706432; 40726000
|
|
PUTOGETHER(EBCDICBUFF, 0) 40730000=10270000=
|
|
END 40735000=10271000=
|
|
ELSE 40740000=10271000=
|
|
BEGIN 40745000=10271000=
|
|
IF BOOLEAN(RESULT) AND BOOLEAN(LASTRESULT) THEN 40750000=10273000=
|
|
BEGIN 40752000
|
|
EBCDICBUFF[0]:= 6"1 0000"; 40754000
|
|
PUTOGETHER(EBCDICBUFF, 0); COMMENT INSERT BLANK; 40755000=10273000=
|
|
END; 40760000
|
|
PUTOGETHER(ACCUM, 1) 40765000=10274000=
|
|
END; 40770000=10274000=
|
|
IF TB1 THEN 40775000=10275000=
|
|
GO TO EXIT; 40780000=10275000=
|
|
LASTRESULT:= RESULT; 40785000=10276000=
|
|
IF MACRO THEN 40790000=10276500=
|
|
GO BACK; 40795000=10276500=
|
|
IF ELCLASS = DECLARATORS AND ELBAT[I].ADDRESS = DEFINEV THEN 40800000=10278000=
|
|
BEGIN 40805000=10278000=
|
|
DEFINECTR:= DEFINECTR+1; 40810000=10278000=
|
|
GO BACK 40815000=10278000=
|
|
END; 40820000=10278000=
|
|
IF ELCLASS ^= CROSSHATCH THEN 40825000=10279000=
|
|
GO BACK; 40830000=10279000=
|
|
IF DEFINECTR ^= 1 THEN 40835000=10281000=
|
|
BEGIN 40840000=10281000=
|
|
STOPDEFINE:= TRUE; 40845000=10281000=
|
|
IF ELCLASS:= TABLE(I) ^= COMMA THEN 40850000=10282000=
|
|
DEFINECTR:= DEFINECTR-1; 40855000=10283000=
|
|
GO SKSC 40860000=10283000=
|
|
END; 40865000=10283000=
|
|
EXIT: 40870000=10284000=
|
|
DEFINECTR:= 0; 40875000=10284000=
|
|
NEXTINFO:= (CHARCOUNT+7) DIV 8+NEXTINFO; 40880000=10285000=
|
|
END DEFINEGEN; 40885000=10286000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%40890000=10286000=
|
|
PROCEDURE DBLSTMT; 40895000=12002000=
|
|
BEGIN 40900000=12003000=
|
|
REAL 40905000=12004000=
|
|
TVAR, % FOR VARIABLE() NAME PARAM 40906000
|
|
S, 40910000=12004000=
|
|
T; 40915000=12004000=
|
|
LABEL 40920000=12005000=
|
|
L1, 40925000=12005000=
|
|
L2, 40930000=12005000=
|
|
L3, 40935000=12005000=
|
|
EXIT; 40940000=12005000=
|
|
S:= 0; 40945000=12006000=
|
|
IF STEPI ^= LEFTPAREN THEN 40950000=12007000=
|
|
ERR(281) 40955000=12008000=
|
|
ELSE 40960000=12008000=
|
|
L1: 40965000=12009000=
|
|
BEGIN 40970000=12009000=
|
|
IF STEPI = COMMA THEN 40975000=12010000=
|
|
BEGIN 40980000=12011000=
|
|
DPTOG:= TRUE; 40985000=12012000=
|
|
IF STEPI = ADOP THEN 40990000=12013000=
|
|
STEPIT; 40995000=12013000=
|
|
EMITNUM(NLO); 41000000=12014000=
|
|
EMITNUM(IF ELBAT[I-1].ADDRESS = SUB THEN-NHI ELSE NHI); 41005000=12015000=
|
|
DPTOG:= FALSE; 41010000=12016000=
|
|
STEPIT; 41015000=12017000=
|
|
GO TO L2; 41020000=12018000=
|
|
END; 41025000=12019000=
|
|
IF TABLE(I+1) = COMMA THEN 41030000=12020000=
|
|
BEGIN 41035000=12021000=
|
|
IF ELCLASS = ADOP OR ELCLASS = MULOP THEN 41040000=12022000=
|
|
BEGIN 41045000=12023000=
|
|
EMITO(ELBAT[I].ADDRESS+1); 41050000=12024000=
|
|
IF S:= S-1 <= 0 THEN 41055000=12025000=
|
|
FLAG(282); 41060000=12025000=
|
|
STEPIT; 41065000=12025000=
|
|
GO TO L3; 41070000=12026000=
|
|
END; 41075000=12027000=
|
|
IF ELCLASS = ASSIGNOP THEN 41080000=12028000=
|
|
BEGIN 41085000=12029000=
|
|
IF S ^= 1 THEN 41090000=12030000=
|
|
FLAG(283); 41095000=12030000=
|
|
S:= 0; 41100000=12030000=
|
|
STEPIT; 41105000=12030000=
|
|
DO BEGIN 41110000=12032000=
|
|
IF ELCLASS ^= COMMA THEN 41115000=12033000=
|
|
BEGIN 41120000=12033000=
|
|
ERR(284); 41125000=12033000=
|
|
GO EXIT 41130000=12033000=
|
|
END; 41135000=12033000=
|
|
STEPIT; 41140000=12034000=
|
|
IF ELCLASS <= INTID AND ELCLASS >= REALID THEN 41145000=12035000=
|
|
BEGIN 41150000=12036000=
|
|
EMITN(ELBAT[I].ADDRESS); 41155000=12036000=
|
|
STEPIT 41160000=12036000=
|
|
END 41165000=12037000=
|
|
ELSE 41170000=12037000=
|
|
BEGIN 41172000
|
|
TVAR:=FL; 41174000
|
|
VARIABLE(TVAR); 41175000=12037000=
|
|
END; 41176000
|
|
EMITO(STD) 41180000=12038000=
|
|
END 41185000=12038000=
|
|
UNTIL S:= S+1 = 2; 41190000=12038000=
|
|
IF ELCLASS ^= RTPAREN THEN 41195000=12039000=
|
|
ERR(285) 41200000=12039000=
|
|
ELSE 41205000=12039000=
|
|
STEPIT; 41210000=12039000=
|
|
GO TO EXIT; 41215000=12040000=
|
|
END; 41220000=12041000=
|
|
IF ELCLASS <= INTID AND ELCLASS >= BOOID THEN 41225000=12042000=
|
|
BEGIN 41230000=12043000=
|
|
CHECKER(T:= ELBAT[I]); 41235000=12044000=
|
|
STEPIT; 41240000=12045000=
|
|
STEPIT; 41245000=12045000=
|
|
AEXP; 41250000=12046000=
|
|
EMITV(T.ADDRESS); 41255000=12047000=
|
|
GO TO L2; 41260000=12048000=
|
|
END; 41265000=12049000=
|
|
END; 41270000=12050000=
|
|
AEXP; 41275000=12051000=
|
|
IF ELCLASS ^= COMMA THEN 41280000=12052000=
|
|
BEGIN 41285000=12052000=
|
|
ERR(284); 41290000=12052000=
|
|
GO EXIT 41295000=12053000=
|
|
END; 41300000=12053000=
|
|
STEPIT; 41305000=12054000=
|
|
AEXP; 41310000=12054000=
|
|
EMITO(XCH); 41315000=12054000=
|
|
L2: S:= S+1; 41320000=12055000=
|
|
L3: IF ELCLASS ^= COMMA THEN 41325000=12056000=
|
|
BEGIN 41330000=12056000=
|
|
ERR(284); 41335000=12056000=
|
|
GO TO EXIT 41340000=12056000=
|
|
END; 41345000=12056000=
|
|
GO TO L1; 41350000=12057000=
|
|
EXIT: 41355000=12058000=
|
|
END 41360000=12059000=
|
|
END DBLSTMT; 41365000=12059000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%41370000=12059000=
|
|
REAL PROCEDURE FIXDEFINEINFO(T); 41375000=12101000=
|
|
VALUE 41380000=12101000=
|
|
T; 41385000=12101000=
|
|
REAL 41390000=12101000=
|
|
T; 41395000=12101000=
|
|
BEGIN 41400000=12102000=
|
|
REAL 41405000=12102000=
|
|
K, 41410000=12102000=
|
|
S, 41415000=12102000=
|
|
P, 41420000=12102000=
|
|
J, 41425000=12102000=
|
|
EL; 41430000=12102000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%41432000
|
|
PROCEDURE SET(S, SX, D, DX, K, E); 41435000=12103000=
|
|
VALUE 41440000=12103000=
|
|
SX, DX, K, E; 41445000=12103000=
|
|
ARRAY 41446000
|
|
S, D[0]; 41448000
|
|
REAL 41450000
|
|
SX, DX, K, E; 41452000
|
|
BEGIN 41455000=12104000=
|
|
STREAMLOCALS; 41456000
|
|
STREAMSETSI(S, SX); 41460000=12104000=
|
|
STREAMSKIPSI(+11); 41465000=12104000=
|
|
STREAMSETDI(D, DX); 41470000=12104000=
|
|
STREAMSKIPDI(+3); 41475000=12104000=
|
|
STREAMTRANSFERCHR(K); 41480000=12104000=
|
|
STREAMSETLOCSI(E); 41485000=12105000=
|
|
STREAMSKIPSI(+6); 41490000=12105000=
|
|
STREAMTRANSFERCHR(2); 41495000=12105000=
|
|
END; 41500000=12106000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%41502000
|
|
MACROID:= TRUE; 41505000=12107000=
|
|
P:= (FIXDEFINEINFO:= T).ADDRESS; 41510000=12108000=
|
|
K:= COUNT; 41515000=12109000=
|
|
S:= SCRAM; 41520000=12110000=
|
|
STREAMTOG:= TRUE & STREAMTOG[46:44:45]; 41525000=12110100=
|
|
STOPDEFINE:= TRUE; 41530000=12111000=
|
|
EL:= TABLE(NXTELBT); 41535000=12112000=
|
|
NXTELBT:= NXTELBT-1; 41540000=12113000=
|
|
IF EL ^= LEFTPAREN AND EL ^= LFTBRKET THEN 41545000=12114000=
|
|
FLAG(141); 41550000=12115000=
|
|
ELSE 41555000=12116000=
|
|
DO BEGIN 41560000=12116000=
|
|
J:= J+1; 41565000=12116000=
|
|
SET(INFO[T.LINKR,*], T.LINKC, ACCUM, 1, K, 64*J+12); 41570000=12117000=
|
|
ACCUM[1].[35:6]:= K+2; 41575000=12118000=
|
|
ACCUM[0]:= 0; 41580000=12119000=
|
|
ACCUM[0].CLASS:= DEFINEDID; 41585000=12120000=
|
|
COUNT:= K+2; 41590000=12121000=
|
|
SCRAM:= ACCUM[1] MOD 125; 41595000=12122000=
|
|
E; 41600000=12123000=
|
|
DEFINEGEN(TRUE, 0); 41605000=12124000=
|
|
END 41610000=12125000=
|
|
UNTIL EL:= ELBAT[NXTELBT].CLASS ^= COMMA; 41615000=12125000=
|
|
IF EL ^= RTPAREN AND EL ^= RTBRKET OR J ^= P THEN 41620000=12126000=
|
|
FLAG(141); 41625000=12126000=
|
|
MACROID:= FALSE; 41630000=12127000=
|
|
STREAMTOG:= STREAMTOG.[46:45]; 41635000=12127100=
|
|
END; 41640000=12128000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%41645000=12128000=
|
|
PROCEDURE SCATTERELBAT; 41650000=13197000=
|
|
BEGIN 41655000=13198000=
|
|
REAL 41660000=13199000=
|
|
T; 41665000=13199000=
|
|
T:= ELBAT[I]; 41670000=13200000=
|
|
KLASSF:= T.CLASS; 41675000=13201000=
|
|
FORMALF:= BOOLEAN(T.FORMAL); 41680000=13202000=
|
|
VONF:= BOOLEAN(T.VO); 41685000=13203000=
|
|
LEVELF:= T.LVL; 41690000=13204000=
|
|
ADDRSF:= T.ADDRESS; 41695000=13205000=
|
|
INCRF:= T.INCR; 41700000=13206000=
|
|
LINKF:= T.LINK; 41705000=13207000=
|
|
END SCATTERELBAT; 41710000=13208000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%41715000=13208000=
|
|
PROCEDURE CHKSOB; 41720000=13209000=
|
|
IF GTA1[J:= J-1] ^= 0 THEN 41725000=13210000=
|
|
FLAG(23); 41730000=13210000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%41735000=13210000=
|
|
DEFINE 41740000=13212000=
|
|
ADDC = 532480 #, 41745000=13213000=
|
|
SUBC = 1581056 #, 41750000=13214000=
|
|
EMITSTORE = EMITPAIR #; 41755000=13214000=
|
|
PROCEDURE PURGE(STOPPER); 41760000=13215000=
|
|
VALUE 41765000=13216000=
|
|
STOPPER; 41770000=13216000=
|
|
REAL 41775000=13217000=
|
|
STOPPER; 41780000=13217000=
|
|
BEGIN 41785000=13218000=
|
|
INTEGER 41790000=13219000=
|
|
POINTAH; 41795000=13219000=
|
|
LABEL 41800000=13220000=
|
|
RECOV; 41805000=13220000=
|
|
DEFINE 41810000=13220000=
|
|
ELCLASS = KLASSF #; 41815000=13220000=
|
|
REAL 41820000=13221000=
|
|
J, 41825000=13221000=
|
|
N, 41830000=13221000=
|
|
OCR, 41835000=13221000=
|
|
TL, 41840000=13221000=
|
|
ADD; 41845000=13221000=
|
|
POINTAH:= LASTINFO; 41850000=13222000=
|
|
WHILE POINTAH >= STOPPER DO 41855000=13224000=
|
|
BEGIN 41860000=13225000=
|
|
IF ELCLASS:= (GT1:= TAKE(POINTAH)).CLASS = NONLITNO THEN 41865000=13227000=
|
|
BEGIN 41870000=13227000=
|
|
NCII:= NCII-1; 41875000=13228000=
|
|
EMITNUM(TAKE(POINTAH+1)); 41880000=13229000=
|
|
EMITSTORE(MAXSTACK, STD); 41885000=13230000=
|
|
MAXSTACK:= (G:= MAXSTACK)+1; 41890000=13231000=
|
|
J:= L; 41895000=13232000=
|
|
L:= GT1.LINK; 41900000=13232000=
|
|
DO BEGIN 41905000=13234000=
|
|
GT4:= GET(L); 41910000=13235000=
|
|
EMITV(G) 41915000=13237000=
|
|
END 41920000=13238000=
|
|
UNTIL (L:= GT4) = 4095; 41925000=13238000=
|
|
L:= J; 41930000=13239000=
|
|
POINTAH:= POINTAH-GT1.INCR 41935000=13241000=
|
|
END 41940000=13243000=
|
|
ELSE 41945000=13243000=
|
|
BEGIN 41950000=13243000=
|
|
IF NOT BOOLEAN(GT1.FORMAL) THEN 41955000=13245000=
|
|
BEGIN 41960000=13245000=
|
|
IF ELCLASS = LABELID THEN 41965000=13247000=
|
|
BEGIN 41970000=13247000=
|
|
ADD:= GT1.ADDRESS; 41975000=13248000=
|
|
IF NOT BOOLEAN(OCR:= TAKE(GIT(POINTAH))).[46:1] THEN 41980000=13250000=
|
|
IF OCR.[11:12] ^= 0 OR ADD ^= 0 THEN 41985000=13251000=
|
|
BEGIN 41990000=13251000=
|
|
GT1:= 160; 41995000=13251000=
|
|
GO TO RECOV 42000000=13251000=
|
|
END; 42005000=13251000=
|
|
IF ADD ^= 0 THEN 42010000=13252000=
|
|
PROGDESCBLDR(ADD, TRUE, OCR.[11:10], LDES) 42015000=13253000=
|
|
END 42020000=13253000=
|
|
ELSE 42025000=13253000=
|
|
IF FALSE THEN 42030000=13254000=
|
|
BEGIN 42035000=13254000=
|
|
IF TAKE(POINTAH+1) < 0 THEN 42040000=13256000=
|
|
BEGIN 42045000=13256000=
|
|
GT1:= 162; 42050000=13256000=
|
|
GO TO RECOV 42055000=13256000=
|
|
END; 42060000=13256000=
|
|
OCR:= (J:= TAKE(GIT(POINTAH))).[23:12]; 42065000=13257000=
|
|
N:= GET((J:= J.[11:12])+4); 42070000=13258000=
|
|
TL:= L; 42075000=13258000=
|
|
IF ADD:= GT1.ADDRESS ^= 0 THEN 42080000=13260000=
|
|
BEGIN 42085000=13260000=
|
|
IF OCR ^= 0 THEN 42090000=13263000=
|
|
BEGIN 42095000=13263000=
|
|
L:= OCR-2; 42100000=13263000=
|
|
CALLSWITCH(POINTAH); 42105000=13263000=
|
|
EMITO(BFW); 42110000=13263000=
|
|
END; 42115000=13263000=
|
|
L:= J+11; 42120000=13264000=
|
|
EMITL(15); 42125000=13264000=
|
|
EMITO(RTS); 42130000=13264000=
|
|
FOR J:= 4 STEP 4 UNTIL N DO 42135000=13266000=
|
|
BEGIN 42140000=13266000=
|
|
EMITL(GNAT(GET(L)*4096+GET(L+1))); 42145000=13267000=
|
|
EMITO(RTS) 42150000=13268000=
|
|
END 42155000=13269000=
|
|
END 42160000=13269000=
|
|
ELSE 42165000=13269000=
|
|
BEGIN 42170000=13269000=
|
|
L:= J+13; 42175000=13270000=
|
|
FOR J:= 4 STEP 4 UNTIL N DO 42180000=13272000=
|
|
BEGIN 42185000=13272000=
|
|
GT1:= GET(L)*4096+GET(L+1); 42190000=13273000=
|
|
GOGEN(GT1, BFW) 42195000=13274000=
|
|
END; 42200000=13274000=
|
|
END; 42205000=13274000=
|
|
L:= TL 42210000=13277000=
|
|
END 42215000=13278000=
|
|
ELSE 42220000=13278000=
|
|
IF ELCLASS >= PROCID AND ELCLASS <= INTPROCID THEN 42225000=13279000=
|
|
IF TAKE(POINTAH+1) < 0 THEN 42230000=13280000=
|
|
BEGIN 42235000=13280000=
|
|
GT1:= 161; 42240000=13280000=
|
|
RECOV: 42245000=13281000=
|
|
MOVE(9, INFO[POINTAH.LINKR,*],POINTAH.LINKC, ACCUM,0);42250000=13281000=
|
|
Q:= ACCUM[1]; 42255000=13282000=
|
|
FLAG(GT1); 42260000=13282000=
|
|
ERRORTOG:= TRUE 42265000=13282000=
|
|
END 42270000=13283000=
|
|
END; 42275000=13283000=
|
|
GT2:= TAKE(POINTAH+1); 42280000=13284000=
|
|
GT3:= GT2.PURPT; 42285000=13285000=
|
|
STACKHEAD[(0 & GT2[35:35:36]) MOD 125]:= TAKE(POINTAH).LINK; 42290000=13286000=
|
|
POINTAH:= POINTAH-GT3 42295000=13288000=
|
|
END 42300000=13289000=
|
|
END; 42305000=13289000=
|
|
LASTINFO:= POINTAH; 42310000=13290000=
|
|
NEXTINFO:= STOPPER 42315000=13292000=
|
|
END; 42320000=13292000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%42325000=13292000=
|
|
PROCEDURE E; 42330000=13293000=
|
|
42335000=13294000=
|
|
COMMENT 42340000=13294000=
|
|
E IS THE PROCEDURE WHICH PLACES AN ENTRY IN INFO AND 42345000=13295000=
|
|
HOOKS IT INTO STACKHEAD. THE PREVIOUS STACKHEAD LINK 42350000=13296000=
|
|
IS SAVED IN THE LINK OF THE ELBAT WORD IN THE NEW ENTRY 42355000=13297000=
|
|
E PREVENTS AN ENTRY FROM OVERFLOWING A ROW,STARTING AT THE 42360000=13298000=
|
|
BEGINNING OF THE NEXT ROW IF NECESSARY ;42365000=13299000=
|
|
BEGIN 42370000=13300000=
|
|
REAL 42375000=13301000=
|
|
WORDCOUNT, 42380000=13301000=
|
|
RINX; 42385000=13301000=
|
|
IF RINX:= (NEXTINFO+WORDCOUNT:= (COUNT+18) DIV 8).LINKR ^= NEXTINFO.42390000=13303000=
|
|
LINKR 42395000=13304000=
|
|
THEN 42400000=13304000=
|
|
BEGIN 42405000=13304000=
|
|
PUT(125 & (RINX*256-NEXTINFO)[20:7:8], NEXTINFO); 42410000=13304000=
|
|
NEXTINFO:= 256*RINX 42415000=13305000=
|
|
END; 42420000=13305000=
|
|
IF SPECTOG THEN 42425000=13305100=
|
|
IF NOT MACROID THEN 42430000=13305200=
|
|
UNHOOK; 42435000=13305300=
|
|
ACCUM[0].INCR:= WORDCOUNT; 42440000=13307000=
|
|
IF NOT INLINETOG OR MACROID THEN 42445000=13307500=
|
|
BEGIN 42450000=13307500=
|
|
ACCUM[0].LINK:= STACKHEAD[SCRAM]; 42455000=13308000=
|
|
STACKHEAD[SCRAM]:= NEXTINFO; 42460000=13308000=
|
|
END; 42465000=13308500=
|
|
ACCUM[1].PURPT:= NEXTINFO-LASTINFO; 42470000=13309000=
|
|
MOVE(WORDCOUNT, ACCUM, 0, INFO[NEXTINFO.LINKR,*], NEXTINFO.LINKC); 42475000=13310000=
|
|
LASTINFO:= NEXTINFO; 42480000=13311000=
|
|
NEXTINFO:= NEXTINFO+WORDCOUNT 42485000=13313000=
|
|
END; 42490000=13313000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%42495000=13313000=
|
|
PROCEDURE ENTRY(TYPE); 42500000=13314000=
|
|
VALUE 42505000=13315000=
|
|
TYPE; 42510000=13315000=
|
|
REAL 42515000=13316000=
|
|
TYPE; 42520000=13316000=
|
|
42525000=13317000=
|
|
COMMENT 42530000=13317000=
|
|
ENTRY ASSUMES THAT I IS POINTING AT AN IDENTIFIER WHICH 42535000=13318000=
|
|
IS BEING DECLARED AND MAKES UP THE ELBAT ENTRY FOR IT 42540000=13319000=
|
|
ACCORD TO TYPE .IF THE ENTRY IS AN ARRAY AND NOT 42545000=13320000=
|
|
A SPECIFICATION THEN A DESCRIPTOR IS PLACED IN THE STACK 42550000=13321000=
|
|
FOR THE UPCOMING COMMUNICATE TO GET STORAGE FOR THE ARRAY(S) ;42555000=13322000=
|
|
BEGIN 42560000=13323000=
|
|
J:= 0; 42565000=13324000=
|
|
I:= I-1; 42570000=13324000=
|
|
DO BEGIN 42575000=13326000=
|
|
STOPDEFINE:= TRUE; 42580000=13327000=
|
|
STEPIT; 42585000=13327000=
|
|
SCATTERELBAT; 42590000=13327000=
|
|
IF FORMALF:= SPECTOG THEN 42595000=13329000=
|
|
BEGIN 42600000=13330000=
|
|
IF ELCLASS ^= SECRET THEN 42605000=13332000=
|
|
FLAG(002); 42610000=13332000=
|
|
BUP:= BUP+1; 42615000=13333500=
|
|
KLASSF:= TYPE; 42620000=13333500=
|
|
MAKEUPACCUM; 42625000=13333500=
|
|
E; 42630000=13333500=
|
|
J:= J+1; 42635000=13333500=
|
|
END 42640000=13336000=
|
|
ELSE 42645000=13336000=
|
|
BEGIN 42650000=13336000=
|
|
IF ELCLASS > IDMAX THEN 42655000=13338000=
|
|
IF ELCLASS = POLISHV THEN 42660000=13338000=
|
|
ELCLASS:= TYPE 42665000=13338000=
|
|
ELSE 42670000=13338000=
|
|
FLAG(3); 42675000=13338000=
|
|
IF LEVELF = LEVEL THEN 42680000=13340000=
|
|
FLAG(001); 42685000=13340000=
|
|
VONF:= P2; 42690000=13341000=
|
|
FORMALF:= PTOG; 42695000=13341100=
|
|
KLASSF:= TYPE; 42700000=13342000=
|
|
MAKEUPACCUM; 42705000=13342000=
|
|
E; 42710000=13342000=
|
|
J:= J+1; 42715000=13342000=
|
|
IF((FORMALF:= PTOG) OR (STREAMTOG AND NOT STOPGSP)) AND NOT 42720000=13343000=
|
|
P2 THEN 42725000=13344000=
|
|
ADDRSF:= PJ:= PJ+1 42735000=13345000=
|
|
ELSE 42740000=13345000=
|
|
IF STOPGSP THEN 42745000=13346000=
|
|
ADDRSF:= 0 42750000=13347000=
|
|
ELSE 42755000=13347000=
|
|
ADDRSF:= GETSPACE(P2, LASTINFO+1); 42760000=13347000=
|
|
PUT(TAKE(LASTINFO) & ADDRSF[31:10:11], LASTINFO); 42765000=13348000=
|
|
END 42770000=13351000=
|
|
END 42775000=13351000=
|
|
UNTIL STEPI ^= COMMA OR STOPENTRY; 42780000=13351000=
|
|
GTA1[0]:= J 42785000=13352000=
|
|
END; 42790000=13352000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%42795000=13352000=
|
|
PROCEDURE UNHOOK; 42800000=13353000=
|
|
42805000=13354000=
|
|
COMMENT 42810000=13354000=
|
|
UNHOOK ASSUMES THAT THE WORD IN ELBAT[I] POINTS TO A PSUEDO ENTRY 42815000=13355000=
|
|
FOR APARAMETER.ITS JOB IS TO UNHOOK THAT FALSE ENTRY SO THAT 42820000=13356000=
|
|
E WILL WORK AS NORMAL. ;42825000=13357000=
|
|
BEGIN 42830000=13358000=
|
|
REAL 42835000=13359000=
|
|
LINKT, 42840000=13359000=
|
|
A, 42845000=13359000=
|
|
LINKP; 42850000=13359000=
|
|
LABEL 42855000=13360000=
|
|
L; 42860000=13360000=
|
|
LINKT:= STACKHEAD[SCRAM]; 42865000=13361000=
|
|
LINKP:= ELBAT[I].LINK; 42870000=13361000=
|
|
IF LINKT = LINKP THEN 42875000=13362000=
|
|
STACKHEAD[SCRAM]:= TAKE(LINKT).LINK 42880000=13363000=
|
|
ELSE 42885000=13363000=
|
|
L: IF A:= TAKE(LINKT).LINK = LINKP THEN 42890000=13365000=
|
|
PUT((TAKE(LINKT)) & (TAKE(A))[12:12:13], LINKT) 42895000=13366000=
|
|
ELSE 42900000=13366000=
|
|
BEGIN 42905000=13366000=
|
|
LINKT:= A; 42910000=13366000=
|
|
GO TO L 42915000=13366000=
|
|
END; 42920000=13366000=
|
|
END; 42925000=13367000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%42930000=13367000=
|
|
PROCEDURE MAKEUPACCUM; 42935000=13368000=
|
|
BEGIN 42940000=13369000=
|
|
IF PTOG THEN 42945000=13371000=
|
|
GT1:= LEVELF 42950000=13371000=
|
|
ELSE 42955000=13371000=
|
|
GT1:= LEVEL; 42960000=13371000=
|
|
ACCUM[0]:= ABS(ELBAT[I] & KLASSF[45:6:7] & REAL(FORMALF)[38:0:1] & 42965000=13375000=
|
|
REAL(VONF)[37:0:1] & GT1[36:4:5] & ADDRSF[31:10:11]) 42970000=13375000=
|
|
END; 42975000=13375000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%42980000=13375000=
|
|
PROCEDURE ARRAE; 42985000=13376000=
|
|
BEGIN 42990000=13377000=
|
|
INTEGER 42995000=13378000=
|
|
SAVEINFO; 43000000=13378000=
|
|
LABEL 43005000=13379000=
|
|
BETA1; 43010000=13379000=
|
|
TYPEV:= REALARRAYID; 43015000=13380000=
|
|
IF T1:= GTA1[J:= J-1] = 0 THEN 43020000=13381000=
|
|
J:= J+1 43025000=13381000=
|
|
ELSE 43030000=13383000=
|
|
IF T1 = OWNV THEN 43035000=13383000=
|
|
BEGIN 43040000=13384000=
|
|
P2:= TRUE; 43045000=13385000=
|
|
IF SPECTOG THEN 43050000=13385000=
|
|
FLAG(13) 43055000=13388000=
|
|
END 43060000=13389000=
|
|
ELSE 43065000=13389000=
|
|
TYPEV:= REALARRAYID+T1-REALV; 43070000=13389000=
|
|
BETA1: 43075000=13390000=
|
|
ENTER(TYPEV); 43080000=13390000=
|
|
IF ELCLASS ^= LFTBRKET THEN 43085000=13391000=
|
|
FLAG(16); 43090000=13391000=
|
|
IF STEPI = LITNO THEN 43095000=13392000=
|
|
BEGIN 43100000=13393000=
|
|
SAVEINFO:= ELBAT[I].ADDRESS; 43105000=13394000=
|
|
IF STEPI ^= RTBRKET THEN 43110000=13395000=
|
|
FLAG(53); 43115000=13395000=
|
|
FILLSTMT(SAVEINFO); 43120000=13396000=
|
|
SAVEINFO:= 1; 43125000=13397000=
|
|
END 43130000=13400000=
|
|
ELSE 43135000=13400000=
|
|
BEGIN 43140000=13400000=
|
|
IF ELCLASS ^= ASTRISK THEN 43145000=13400000=
|
|
FLAG(56); 43150000=13400000=
|
|
SAVEINFO:= 1; 43155000=13401000=
|
|
WHILE STEPI ^= RTBRKET DO 43160000=13402000=
|
|
BEGIN 43165000=13403000=
|
|
IF ELCLASS ^= COMMA AND STEPI ^= ASTRISK THEN 43170000=13404000=
|
|
FLAG(56); 43175000=13404000=
|
|
SAVEINFO:= SAVEINFO+1 43180000=13406000=
|
|
END; 43185000=13406000=
|
|
STEPIT; 43190000=13406000=
|
|
END; 43195000=13408000=
|
|
PUT(TAKE(LASTINFO) & SAVEINFO[20:7:8], LASTINFO); 43200000=13408000=
|
|
J:= 1; 43205000=13408500=
|
|
GTA1[0]:= 0; 43210000=13408500=
|
|
IF ELCLASS = COMMA THEN 43215000=13409000=
|
|
BEGIN 43220000=13409000=
|
|
STEPIT; 43225000=13409000=
|
|
GO TO BETA1 43230000=13409000=
|
|
END 43235000=13410000=
|
|
END ARRAE; 43240000=13410000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%43245000=13410000=
|
|
PROCEDURE PUTNBUMP(X); 43250000=13589000=
|
|
VALUE 43255000=13590000=
|
|
X; 43260000=13590000=
|
|
REAL 43265000=13591000=
|
|
X; 43270000=13591000=
|
|
BEGIN 43275000=13592000=
|
|
INFO[NEXTINFO.LINKR, NEXTINFO.LINKC]:= X; 43280000=13593000=
|
|
NEXTINFO:= NEXTINFO+1 43285000=13595000=
|
|
END; 43290000=13595000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%43295000=13595000=
|
|
PROCEDURE JUMPCHKX; 43300000=13596000=
|
|
43305000=13597000=
|
|
COMMENT THIS PROCEDURE IS CALLED AT THE START OF ANY EXECUTABLE CODE 43310000=13597000=
|
|
WHICH THE BLOCK MIGHT EMIT.IT DETERMINES WHETHER ANY JUMPS 43315000=13598000=
|
|
ARROUND NONEXECUTABLE CODE MAY BE WAITING AND WHETHER IT 43320000=13599000=
|
|
IS THE FIRST EXECUTABLE CODE; 43325000=13600000=
|
|
IF NOT SPECTOG THEN 43330000=13601000=
|
|
BEGIN 43335000=13602000=
|
|
IF AJUMP THEN 43340000=13604000=
|
|
BEGIN 43345000=13605000=
|
|
ADJUST; 43350000=13605000=
|
|
EMITB(BFW, SAVEL, L) 43355000=13607000=
|
|
END 43360000=13608000=
|
|
ELSE 43365000=13608000=
|
|
IF FIRSTX = 4095 THEN 43370000=13609000=
|
|
BEGIN 43375000=13610000=
|
|
ADJUST; 43380000=13611000=
|
|
FIRSTX:= L; 43385000=13612000=
|
|
END; 43390000=13613000=
|
|
AJUMP:= FALSE 43395000=13615000=
|
|
END; 43400000=13615000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%43405000=13615000=
|
|
PROCEDURE JUMPCHKNX; 43410000=13616000=
|
|
43415000=13617000=
|
|
COMMENT JUMPCHKNX DETERMINES WHETHER ANY EXECUTABLE CODE HAS BEEN 43420000=13617000=
|
|
EMITTED AND IF SO WHETHER IT WAS JUST PREVIOUS TO THE 43425000=13618000=
|
|
NON EXECUTABLE ABOUT TO BE EMITTED.IF BOTH THEN L IS BUMPED 43430000=13619000=
|
|
AND SAVED FOR A LATER BRANCH; 43435000=13620000=
|
|
IF NOT SPECTOG THEN 43440000=13621000=
|
|
BEGIN 43445000=13622000=
|
|
IF FIRSTX ^= 4095 THEN 43450000=13624000=
|
|
BEGIN 43455000=13625000=
|
|
IF NOT AJUMP THEN 43460000=13627000=
|
|
SAVEL:= BUMPL; 43465000=13628000=
|
|
AJUMP:= TRUE 43470000=13630000=
|
|
END; 43475000=13630000=
|
|
ADJUST 43480000=13631000=
|
|
END; 43485000=13631000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%43490000=13631000=
|
|
PROCEDURE SEGMENTSTART(SAVECODE); 43495000=13632000=
|
|
VALUE 43500000=13632000=
|
|
SAVECODE; 43505000=13632000=
|
|
BOOLEAN 43510000=13632000=
|
|
SAVECODE; 43515000=13632000=
|
|
BEGIN 43520000=13632100=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%43522000
|
|
PROCEDURE PRINT(SAVECODE, ADR, FIEL); 43525000=13633000=
|
|
VALUE 43530000=13633000=
|
|
SAVECODE, ADR; 43535000=13633000=
|
|
REAL 43536000
|
|
SAVECODE, ADR; 43538000
|
|
ARRAY 43540000
|
|
FIEL[0]; 43542000
|
|
BEGIN 43545000=13634000=
|
|
STREAMLOCALS; 43546000
|
|
LABEL 43550000=13635000=
|
|
L1; 43555000=13635000=
|
|
STREAMSETDI(FIEL, 0); 43560000=13636000=
|
|
STREAMSMEARLIT(8, 6" "); 43565000=13636000=
|
|
STREAMSETSI(FIEL, 0); 43570000=13637000=
|
|
STREAMTRANSFERWDS(9); 43575000=13637000=
|
|
STREAMSKIPDI(-3); 43580000=13637000=
|
|
THRU SAVECODE DO 43585000=13639000=
|
|
BEGIN 43585500
|
|
STREAMTRANSFERLIT(8, 6"START OF"); 43586000
|
|
STREAMTRANSFERLIT(8, 6" SAVE SE"); 43586500
|
|
STREAMTRANSFERLIT(8, 6"GMENT; B"); 43587000
|
|
STREAMTRANSFERLIT(8, 6"ASE ADDR"); 43587500
|
|
STREAMTRANSFERLIT(6, 6"ESS = "); 43588000
|
|
GO TO L1 43590000=13639000=
|
|
END; 43592000
|
|
STREAMTRANSFERLIT(8, 6" START O"); 43595000=13640000=
|
|
STREAMTRANSFERLIT(8, 6"F REL SE"); 43596000
|
|
STREAMTRANSFERLIT(8, 6"GMENT; D"); 43597000
|
|
STREAMTRANSFERLIT(8, 6"ISK ADDR"); 43598000
|
|
STREAMTRANSFERLIT(6, 6"ESS = "); 43599000
|
|
L1: STREAMSETLOCSI(ADR); 43600000=13642000=
|
|
STREAMTRANSFERDEC(5); 43605000=13642000=
|
|
END PRINT; 43610000=13643000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%43612000
|
|
CODE[0]:= SAVECODE; 43615000=13651000=
|
|
IF SAVECODE AND INTOG AND NOT DECKTOG THEN 43620000=13651100=
|
|
FLAG(57); 43625000=13651100=
|
|
IF LISTER OR SEGSTOG THEN 43630000=13652000=
|
|
BEGIN 43635000=13652500=
|
|
PRINT(REAL(SAVECODE), IF SAVECODE THEN CORADR ELSE DISKADR, LIN); 43640000=13653000=
|
|
IF NOHEADING THEN 43645000=13653500=
|
|
DATIME; 43650000=13653500=
|
|
WRITELINE; 43655000=13653500=
|
|
END; 43660000=13654000=
|
|
END SEGMENTSTART; 43665000=13655000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%43670000=13655000=
|
|
PROCEDURE SEGMENT(SIZE, FR); 43675000=13657000=
|
|
VALUE 43680000=13657000=
|
|
SIZE, 43685000=13657000=
|
|
FR; 43690000=13657000=
|
|
INTEGER 43695000=13657000=
|
|
SIZE, 43700000=13657000=
|
|
FR; 43705000=13657000=
|
|
BEGIN 43710000=13660000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%43712000
|
|
PROCEDURE PRINT(SIZE, FIEL); 43715000=13661000=
|
|
VALUE 43720000=13661000=
|
|
SIZE; 43725000=13661000=
|
|
REAL 43726000
|
|
SIZE; 43727000
|
|
ARRAY 43728000
|
|
FIEL[0]; 43729000
|
|
BEGIN 43730000=13663000=
|
|
STREAMLOCALS; 43732000
|
|
STREAMSETDI(FIEL, 0); 43735000=13665000=
|
|
STREAMTRANSFERLIT(8, 6" "); 43740000=13665000=
|
|
STREAMSETSI(FIEL, 0); 43745000=13667000=
|
|
STREAMTRANSFERWDS(14); 43750000=13667000=
|
|
STREAMSKIPDI(-16); 43755000=13668000=
|
|
STREAMTRANSFERLIT(6, 6"SIZE= "); 43760000=13668000=
|
|
STREAMSETLOCSI(SIZE); 43765000=13670000=
|
|
STREAMTRANSFERDEC(4); 43770000=13670000=
|
|
STREAMTRANSFERLIT(6, 6" WORDS") 43775000=13673000=
|
|
END PRINT; 43780000=13673000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%43782000
|
|
PROCEDURE DOIT(C, A, I, IX, S, SX, F, W); 43785000=13673100=
|
|
VALUE 43790000=13673100=
|
|
C, A, IX, SX, F, W; 43795000=13673100=
|
|
REAL 43796000
|
|
C, A, IX, SX, F, W; 43798000
|
|
ARRAY 43800000
|
|
I, S[0]; 43802000
|
|
BEGIN 43815000=13673150=
|
|
STREAMLOCALS; 43816000
|
|
REAL 43820000=13673150=
|
|
N; 43822000
|
|
STREAMSETDI(S, SX); 43825000=13673200=
|
|
STREAMSMEARLIT(8, 6" "); 43830000=13673200=
|
|
STREAMSETSI(S, SX); 43835000=13673200=
|
|
STREAMTRANSFERWDS(9); 43840000=13673200=
|
|
STREAMSKIPDI(-8); 43845000=13673250=
|
|
STREAMSETLOCSI(W); 43850000=13673250=
|
|
STREAMTRANSFERDEC(4); 43855000=13673250=
|
|
STREAMSETSI(I, IX); 43860000=13673300=
|
|
STREAMSKIPSI(+10); 43865000=13673300=
|
|
STREAMSETLOCDI(N); 43870000=13673300=
|
|
STREAMSKIPDI(+7); 43875000=13673300=
|
|
STREAMTRANSFERCHR(1); 43880000=13673300=
|
|
N:= STREAMTEMPD[0]; 43882000
|
|
STREAMSETDI(S, SX); 43885000=13673350=
|
|
STREAMSETLOCSI(F); 43890000=13673350=
|
|
STREAMKIPSI(+7); 43895000=13673350=
|
|
STREAMTRANSFERCHR(1); 43900000=13673350=
|
|
STREAMSETLOCSI(C); 43905000=13673350=
|
|
STREAMTRANSFERDEC(3); 43910000=13673400=
|
|
STREAMTRANSFERDEC(4); 43915000=13673400=
|
|
STREAMSETSI(I, IX); 43920000=13673400=
|
|
STREAMSKIPSI(+11); 43925000=13673400=
|
|
STREAMTRANSFERCHR(N); 43930000=13673400=
|
|
END DOIT; 43935000=13673450=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%43936000
|
|
IF LISTER OR SEGSTOG THEN 43940000=13674000=
|
|
BEGIN 43945000=13674500=
|
|
PRINT(SIZE, LIN[*]); 43950000=13675000=
|
|
IF NOHEADING THEN 43955000=13676000=
|
|
DATIME; 43960000=13676000=
|
|
WRITELINE; 43965000=13676000=
|
|
END; 43970000=13677000=
|
|
IF STUFFTOG THEN 43975000=13677100=
|
|
IF FR > 0 THEN 43980000=13677100=
|
|
IF LEVEL > 1 THEN 43985000=13677100=
|
|
BEGIN 43990000=13677150=
|
|
KLASSF:= TAKE(PROINFO).CLASS; 43995000=13677200=
|
|
IF FR > 1024 THEN 44000000=13677250=
|
|
FR:= FR-1024; 44005000=13677250=
|
|
DOIT(KLASSF, FR, INFO[PROINFO.LINKR,*], PROINFO.LINKC, 44010000=13677400=
|
|
TWXA, 0, SAF, SIZE); 44015000=13677400=
|
|
WRITE(STUFF, 10, TWXA[*]); 44020000=13677500=
|
|
END; 44025000=13677600=
|
|
IF SIZE > SEGSIZEMAX THEN 44030000=13678000=
|
|
SEGSIZEMAX:= SIZE; 44035000=13678000=
|
|
END SEGMENT; 44040000=13681000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%44216000
|
|
PROCEDURE ENTER(TYPE); 44220000=13714000=
|
|
VALUE 44225000=13715000=
|
|
TYPE; 44230000=13715000=
|
|
REAL 44235000=13716000=
|
|
TYPE; 44240000=13716000=
|
|
BEGIN 44245000=13717000=
|
|
G:= GTA1[J:= J-1]; 44250000=13718000=
|
|
IF NOT SPECTOG THEN 44255000=13720000=
|
|
BEGIN 44260000=13721000=
|
|
IF NOT P2 THEN 44265000=13723000=
|
|
IF P2:= (G = OWNV) THEN 44270000=13724000=
|
|
G:= GTA1[J:= J-1]; 44275000=13724000=
|
|
IF NOT P3 THEN 44280000=13726000=
|
|
IF P3:= (G = SAVEV) THEN 44285000=13727000=
|
|
G:= GTA1[J:= J-1] 44290000=13728000=
|
|
END; 44295000=13728000=
|
|
IF G ^= 0 THEN 44300000=13729000=
|
|
FLAG(25) 44305000=13729000=
|
|
ELSE 44310000=13729000=
|
|
ENTRY(TYPE) 44315000=13730000=
|
|
END; 44320000=13730000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%44325000=13730000=
|
|
PROCEDURE HTTEOAP(GOTSTORAGE, RELAD, STOPPER, PRTAD); 44330000=13731000=
|
|
VALUE 44335000=13732000=
|
|
GOTSTORAGE, 44340000=13732000=
|
|
RELAD, 44345000=13732000=
|
|
STOPPER, 44350000=13732000=
|
|
PRTAD; 44355000=13732000=
|
|
BOOLEAN 44360000=13733000=
|
|
GOTSTORAGE; 44365000=13733000=
|
|
REAL 44370000=13734000=
|
|
RELAD, 44375000=13734000=
|
|
STOPPER, 44380000=13734000=
|
|
PRTAD; 44385000=13734000=
|
|
BEGIN 44390000=13735000=
|
|
IF FUNCTOG THEN 44395000=13737000=
|
|
BEGIN 44400000=13738000=
|
|
EMITV(513); 44405000=13739000=
|
|
EMITO(RTN) 44410000=13741000=
|
|
END 44415000=13743000=
|
|
ELSE 44420000=13743000=
|
|
EMITO(XIT); 44425000=13743000=
|
|
CONSTANTCLEAN; 44430000=13744000=
|
|
PURGE(STOPPER); 44435000=13745000=
|
|
Z:= CODE[0]; 44440000=13746000=
|
|
PROGDESCBLDR(PRTAD, BOOLEAN(Z), (L+3) DIV 4, PDES); 44445000=13746000=
|
|
END HTTEOAP; 44450000=13747000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%44455000=13747000=
|
|
PROCEDURE INLINE; 44460000=13748000=
|
|
BEGIN 44465000=13749000=
|
|
INTEGER 44470000=13750000=
|
|
SN, 44475000=13750000=
|
|
LN, 44480000=13750000=
|
|
P, 44485000=13750000=
|
|
LS, 44490000=13750000=
|
|
J; 44495000=13750000=
|
|
BOOLEAN 44500000=13750000=
|
|
MKST; 44505000=13750000=
|
|
BOOLEAN 44510000=13750500=
|
|
FLIPFLOP; 44515000=13750500=
|
|
INTEGER 44520000=13750600=
|
|
PN; 44525000=13750600=
|
|
LABEL 44530000=13751000=
|
|
L1, 44535000=13751000=
|
|
L2, 44540000=13751000=
|
|
L3; 44545000=13751000=
|
|
PN:= 1; 44550000=13751100=
|
|
FLIPFLOP:= INLINETOG:= TRUE; 44555000=13752000=
|
|
P:= 0; 44560000=13752000=
|
|
MKST:= FALSE; 44565000=13752000=
|
|
LS:= L; 44570000=13752000=
|
|
EMITO(NOP); 44575000=13752000=
|
|
IF STEPI ^= LEFTPAREN THEN 44580000=13753000=
|
|
FLAG(59); 44585000=13753000=
|
|
IF TABLE(I+1) = COLON THEN 44590000=13753100=
|
|
BEGIN 44595000=13753100=
|
|
STEPIT; 44600000=13753100=
|
|
GO TO L2 44605000=13753100=
|
|
END; 44610000=13753100=
|
|
L1: IF STEPI > IDMAX THEN 44615000=13754000=
|
|
BEGIN 44620000=13754000=
|
|
FLAG(465); 44625000=13754000=
|
|
GO TO L2 44630000=13754000=
|
|
END; 44635000=13754000=
|
|
ACCUM[0]:= 0 & P[31:10:11] & LOCLID[45:6:7] & SCRAM[12:12:13]; 44640000=13755000=
|
|
E; 44645000=13755500=
|
|
IF FLIPFLOP THEN 44650000=13755500=
|
|
BEGIN 44655000=13755500=
|
|
FLIPFLOP:= FALSE; 44660000=13755500=
|
|
LN:= SN:= LASTINFO 44665000=13755500=
|
|
END; 44670000=13755500=
|
|
IF STEPI = COMMA OR ELCLASS = COLON OR ELCLASS = RTPAREN THEN 44675000=13757000=
|
|
BEGIN 44680000=13757000=
|
|
I:= I-2; 44685000=13757000=
|
|
STEPIT 44690000=13757000=
|
|
END 44695000=13758000=
|
|
ELSE 44700000=13758000=
|
|
IF ELCLASS ^= ASSIGNOP THEN 44705000=13758000=
|
|
FLAG(60) 44710000=13758000=
|
|
ELSE 44715000=13758000=
|
|
STEPIT; 44720000=13758000=
|
|
AEXP; 44725000=13759000=
|
|
L2: IF ELCLASS = COLON THEN 44730000=13760000=
|
|
BEGIN 44735000=13761000=
|
|
IF MKST THEN 44740000=13761000=
|
|
FLAG(99); 44745000=13761000=
|
|
MKST:= TRUE; 44750000=13761000=
|
|
EMITO(MKS); 44755000=13761000=
|
|
P:= P+2; 44760000=13761000=
|
|
IF TABLE(I+1) ^= RTPAREN THEN 44765000=13761100=
|
|
GO TO L1; 44770000=13761100=
|
|
STEPIT; 44775000=13761110=
|
|
PN:= 2; 44780000=13761110=
|
|
END 44785000=13761200=
|
|
ELSE 44790000=13761200=
|
|
P:= P+1; 44795000=13761200=
|
|
IF ELCLASS = COMMA THEN 44800000=13762000=
|
|
GO TO L1; 44805000=13762000=
|
|
IF ELCLASS ^= RTPAREN THEN 44810000=13763000=
|
|
FLAG(61); 44815000=13763000=
|
|
IF NOT MKST THEN 44820000=13764000=
|
|
BEGIN 44825000=13765000=
|
|
J:= L; 44830000=13765000=
|
|
L:= LS; 44835000=13765000=
|
|
EMITO(MKS); 44840000=13765000=
|
|
L:= J 44845000=13765000=
|
|
END; 44850000=13765000=
|
|
IF STEPI ^= SEMICOLON THEN 44855000=13766000=
|
|
FLAG(62); 44860000=13766000=
|
|
EMITO(584); 44865000=13766100=
|
|
L3: ELBAT[I]:= TAKE(SN); 44870000=13767000=
|
|
SCATTERELBAT; 44875000=13767000=
|
|
ADDRSF:= P-ADDRSF; 44880000=13767000=
|
|
PUT(ELBAT[I] & ADDRSF[31:10:11] & STACKHEAD[LINKF][14:14:15], SN); 44885000=13768000=
|
|
STACKHEAD[LINKF]:= SN; 44890000=13769000=
|
|
SN:= SN+INCRF; 44895000=13769000=
|
|
IF ADDRSF ^= PN THEN 44900000=13770000=
|
|
GO TO L3; 44905000=13770000=
|
|
INLINETOG:= FALSE; 44910000=13770500=
|
|
PN:= NEXTINFO; 44915000=13770600=
|
|
STREAMTOG:= TRUE; 44920000=13771000=
|
|
STREAMWORDS; 44925000=13771000=
|
|
IF STEPI ^= BEGINV THEN 44930000=13771000=
|
|
STREAMSTMT 44935000=13772000=
|
|
ELSE 44940000=13772000=
|
|
BEGIN 44945000=13772000=
|
|
STEPIT; 44950000=13772000=
|
|
COMPOUNDTAIL 44955000=13772000=
|
|
END; 44960000=13772000=
|
|
STREAMTOG:= FALSE; 44965000=13773000=
|
|
PURGE(PN); 44970000=13773000=
|
|
STREAMWORDS; 44975000=13773000=
|
|
PURGE(LN); 44980000=13773000=
|
|
EMITL(16); 44985000=13773000=
|
|
END INLINE; 44990000=13774000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%44995000=13774000=
|
|
45000000=14000000=
|
|
COMMENT THIS SECTION CONTAINS THE BLOCK ROUTINE ; 45005000=14000000=
|
|
PROCEDURE BLOCK(SOP); 45010000=14001000=
|
|
VALUE 45015000=14002000=
|
|
SOP; 45020000=14002000=
|
|
BOOLEAN 45025000=14003000=
|
|
SOP; 45030000=14003000=
|
|
45035000=14004000=
|
|
COMMENT SOP IS TRUE IF THE BLOCK WAS CALLED BY ITSELF THROUGH THE 45040000=14004000=
|
|
PROCEDURE DECLARATION-OTHERWISE IT WAS CALLED BY STATEMENT. 45045000=14005000=
|
|
THE BLOCK ROUTINE IS RESPONSIBLE FOR HANDLING THE BLOCK 45050000=14006000=
|
|
STRUCTURE OF AN ALGOL PROGRAM-SEGMENTING EACH BLOCK,HANDLING 45055000=14007000=
|
|
ALL DECLARATIONS,DOING NECESSARY BOOKKEEPING REGARDING EACH 45060000=14008000=
|
|
BLOCK, AND SUPPLYING THE SCANNER WITH ALL NECESSARY INFORMATION 45065000=14009000=
|
|
ABOUT DECLARED IDENTIFIERS. 45070000=14010000=
|
|
IT ALSO WRITES EACH SEGMENT ONTO THE PCT; 45075000=14011000=
|
|
BEGIN 45080000=14012000=
|
|
LABEL 45085000=14013000=
|
|
OWNERR, 45090000=14013000=
|
|
SAVERR, 45095000=14013000=
|
|
BOOLEANDEC, 45100000=14013000=
|
|
REALDEC, 45105000=14013000=
|
|
ALPHADEC, 45110000=14013000=
|
|
INTEGERDEC, 45115000=14014000=
|
|
LABELDEC, 45120000=14014000=
|
|
DUMPDEC, 45125000=14014000=
|
|
SUBDEC, 45130000=14014000=
|
|
OUTDEC, 45135000=14014000=
|
|
INDEC, 45140000=14014000=
|
|
MONITORDEC, 45145000=14015000=
|
|
SWITCHDEC, 45150000=14015000=
|
|
PROCEDUREDEC, 45155000=14015000=
|
|
ARRAYDEC, 45160000=14015000=
|
|
NAMEDEC, 45165000=14015000=
|
|
FILEDEC, 45170000=14016000=
|
|
GOTSCHK, 45175000=14017000=
|
|
STREAMERR, 45180000=14017000=
|
|
DEFINEDEC, 45185000=14017000=
|
|
CALLSTATEMENT, 45190000=14017000=
|
|
HF, 45195000=14017000=
|
|
START; 45200000=14017000=
|
|
SWITCH 45205000=14018000=
|
|
DECLSW:= OWNERR, 45210000=14018000=
|
|
SAVERR, 45215000=14018000=
|
|
BOOLEANDEC, 45220000=14018000=
|
|
REALDEC, 45225000=14018000=
|
|
INTEGERDEC, 45230000=14018000=
|
|
ALPHADEC, 45235000=14019000=
|
|
LABELDEC, 45240000=14019000=
|
|
DUMPDEC, 45245000=14019000=
|
|
SUBDEC, 45250000=14019000=
|
|
OUTDEC, 45255000=14019000=
|
|
INDEC, 45260000=14019000=
|
|
MONITORDEC, 45265000=14020000=
|
|
SWITCHDEC, 45270000=14020000=
|
|
PROCEDUREDEC, 45275000=14020000=
|
|
ARRAYDEC, 45280000=14020000=
|
|
NAMEDEC, 45285000=14020000=
|
|
FILEDEC, 45290000=14021000=
|
|
STREAMERR, 45295000=14021000=
|
|
DEFINEDEC; 45300000=14021000=
|
|
DEFINE 45305000=14022000=
|
|
NLOCS = 10 #, 45310000=14022000=
|
|
LOCBEGIN = PRTI #, 45315000=14023000=
|
|
LBP = [11:12] #, 45320000=14023100=
|
|
SPACEITDOWN = BEGIN 45325000=14023100=
|
|
WRITE(LINE[SPACE 2]); 45330000=14023100=
|
|
WRITE(LINE[SPACE 2]) 45335000=14023100=
|
|
END #; 45340000=14023100=
|
|
BOOLEAN 45345000=14025000=
|
|
GOTSTORAGE; 45350000=14025000=
|
|
INTEGER 45355000=14026000=
|
|
PINFOO, 45360000=14026000=
|
|
BLKAD; 45365000=14026000=
|
|
COMMENT LOCAL TO BLOCK TO SAVE WHERE A PROCEDURE IS EMTERED 45370000=14027000=
|
|
IN INFO; 45375000=14028000=
|
|
REAL 45380000=14029000=
|
|
MAXSTACKO, 45385000=14029000=
|
|
LASTINFOT, 45390000=14029000=
|
|
RELAD, 45395000=14029000=
|
|
LO, 45400000=14029000=
|
|
TSUBLEVEL, 45405000=14029000=
|
|
STACKCTRO; 45410000=14029000=
|
|
INTEGER 45415000=14030000=
|
|
SGNOO, 45420000=14030000=
|
|
LOLD, 45425000=14030000=
|
|
SAVELO, 45430000=14030000=
|
|
PRTIO, 45435000=14030000=
|
|
NINFOO; 45440000=14030000=
|
|
INTEGER 45445000=14031000=
|
|
NCIIO; 45450000=14031000=
|
|
INTEGER 45455000=14032000=
|
|
PROAD; 45460000=14032000=
|
|
INTEGER 45465000=14033000=
|
|
FIRSTXO; 45470000=14033000=
|
|
BOOLEAN 45475000=14034000=
|
|
FUNCTOGO, 45480000=14034000=
|
|
AJUMPO; 45485000=14034000=
|
|
BEGINCTR:= BEGINCTR+1; 45490000=14035000=
|
|
IF SOP THEN 45495000=14037000=
|
|
BEGIN 45500000=14037000=
|
|
BLKAD:= PROADD; 45505000=14037000=
|
|
IF LASTENTRY ^= 0 THEN 45510000=14039000=
|
|
BEGIN 45515000=14039000=
|
|
GT1:= BUMPL; 45520000=14039000=
|
|
CONSTANTCLEAN; 45525000=14040000=
|
|
EMITB(BFW, GT1, L) 45530000=14042000=
|
|
END 45535000=14044000=
|
|
END 45540000=14044000=
|
|
ELSE 45545000=14044000=
|
|
BEGIN 45550000=14044000=
|
|
BLKAD:= GETSPACE(TRUE, -6); % SEG. DESCR. 45555000=14044000=
|
|
END; 45560000=14048000=
|
|
FIRSTXO:= FIRSTX; 45565000=14051000=
|
|
FIRSTX:= 0; 45570000=14052000=
|
|
LEVEL:= LEVEL+1; 45575000=14053000=
|
|
LOLD:= L; 45580000=14054000=
|
|
FUNCTOGO:= FUNCTOG; 45585000=14054000=
|
|
AJUMPO:= AJUMP; 45590000=14054000=
|
|
PRTIO:= PRTI; 45595000=14054000=
|
|
SGNOO:= SGNO; 45600000=14054000=
|
|
SAVELO:= SAVEL; 45605000=14055000=
|
|
AJUMP:= FALSE; 45610000=14055000=
|
|
L:= 0; 45615000=14055000=
|
|
NINFOO:= NEXTINFO; 45620000=14055000=
|
|
NCIIO:= NCII; 45625000=14056000=
|
|
NCII:= 0; 45630000=14057000=
|
|
STACKCTRO:= STACKCTR; 45635000=14058000=
|
|
ELBAT[I].CLASS:= SEMICOLON; 45640000=14062000=
|
|
START: 45645000=14063000=
|
|
IF TABLE(I) ^= SEMICOLON THEN 45650000=14064000=
|
|
BEGIN 45655000=14065000=
|
|
FLAG(0); 45660000=14066000=
|
|
I:= I-1 45665000=14068000=
|
|
END; 45670000=14068000=
|
|
GTA1[0]:= J:= 0; 45675000=14069000=
|
|
IF SPECTOG THEN 45680000=14071000=
|
|
BEGIN 45685000=14072000=
|
|
IF BUP = PJ THEN 45690000=14074000=
|
|
BEGIN 45695000=14075000=
|
|
BEGIN 45700000=14076000=
|
|
LABEL 45705000=14076000=
|
|
GETLP; 45710000=14076000=
|
|
IF STREAMTOG THEN 45715000=14077000=
|
|
F:= 0 45720000=14077000=
|
|
ELSE 45725000=14077000=
|
|
F:= FZERO; 45730000=14078000=
|
|
BUP:= LASTINFO; 45735000=14079000=
|
|
DO BEGIN 45740000=14081000=
|
|
IF NOT STREAMTOG THEN 45745000=14082000=
|
|
BUP:= LASTINFO; 45750000=14083000=
|
|
GETLP: 45755000=14084000=
|
|
G:= TAKE(BUP); 45760000=14084000=
|
|
IF K:= G.ADDRESS ^= PJ THEN 45765000=14086000=
|
|
BEGIN 45770000=14087000=
|
|
IF BUP ^= BUP:= BUP-TAKE(BUP+1).PURPT THEN 45775000=14088000=
|
|
GO TO GETLP 45780000=14090000=
|
|
END; 45785000=14090000=
|
|
TYPEV:= G.CLASS; 45790000=14091000=
|
|
G.ADDRESS:= F:= F+1; 45795000=14115000=
|
|
PUT(G, BUP); 45800000=14116000=
|
|
G.INCR:= GT1; 45805000=14116000=
|
|
PUT(G, MARK+PJ); 45810000=14118000=
|
|
BUP:= BUP-TAKE(BUP+1).PURPT 45815000=14119000=
|
|
END 45820000=14120000=
|
|
UNTIL PJ:= PJ-1 = 0 45825000=14121000=
|
|
END; 45830000=14121000=
|
|
SPECTOG:= FALSE; 45835000=14122000=
|
|
GO TO HF 45840000=14124000=
|
|
END 45845000=14125000=
|
|
END; 45850000=14125000=
|
|
STACKCT:= 0; 45855000=14125500=
|
|
WHILE STEPI = DECLARATORS DO 45860000=14127000=
|
|
BEGIN 45865000=14128000=
|
|
GTA1[J:= J+1]:= ELBAT[I].ADDRESS; 45870000=14129000=
|
|
STOPDEFINE:= ERRORTOG:= TRUE; 45875000=14130000=
|
|
END; 45880000=14131000=
|
|
IF J = 0 THEN 45885000=14132000=
|
|
GO TO CALLSTATEMENT; 45890000=14132000=
|
|
P2:= P3:= FALSE; 45895000=14133000=
|
|
GO TO DECLSW[GTA1[J]]; 45900000=14134000=
|
|
OWNERR: 45905000=14135000=
|
|
FLAG(20); 45910000=14135000=
|
|
J:= J+1; 45915000=14135000=
|
|
GO TO REALDEC; 45920000=14135000=
|
|
SAVERR: 45925000=14136000=
|
|
FLAG(21); 45930000=14136000=
|
|
J:= J+1; 45935000=14136000=
|
|
GO TO REALDEC; 45940000=14136000=
|
|
STREAMERR: 45945000=14137000=
|
|
IF ELCLASS = LEFTPAREN THEN % 6 45950000=14137000=
|
|
BEGIN % 6 45955000=14137100=
|
|
I:= I-1; % 6 45960000=14137200=
|
|
GO TO CALLSTATEMENT; % 6 45965000=14137300=
|
|
END; % 6 45970000=14137400=
|
|
FLAG(22); % 6 45975000=14137500=
|
|
J:= J+1; % 6 45980000=14137600=
|
|
GO TO PROCEDUREDEC; % 6 45985000=14137700=
|
|
REALDEC: 45990000=14138000=
|
|
P3:= TRUE; 45995000=14138000=
|
|
ENTER(REALID); 46000000=14138000=
|
|
GO TO START; 46005000=14138000=
|
|
ALPHADEC: 46010000=14139000=
|
|
P3:= TRUE; 46015000=14139000=
|
|
ENTER(ALFAID); 46020000=14139000=
|
|
GO TO START; 46025000=14139000=
|
|
BOOLEANDEC: 46030000=14140000=
|
|
P3:= TRUE; 46035000=14140000=
|
|
ENTER(BOOID); 46040000=14140000=
|
|
GO TO START; 46045000=14140000=
|
|
INTEGERDEC: 46050000=14141000=
|
|
P3:= TRUE; 46055000=14141000=
|
|
ENTER(INTID); 46060000=14141000=
|
|
GO TO START; 46065000=14141000=
|
|
MONITORDEC: 46070000=14142000=
|
|
IF SPECTOG THEN 46075000=14143000=
|
|
BEGIN COMMENT ERROR 463 MEANS THAT A MONITOR 46080000=14143000=
|
|
DECLARATION APPEARS IN THE SPECIFICATION 46090000=14144000=
|
|
PART OF A PROCEDURE; 46095000=14145000=
|
|
FLAG(463); 46100000=14146000=
|
|
END; 46105000=14147000=
|
|
DO 46110000=14148000=
|
|
UNTIL FALSE; % ?? REALLY ?? THIS MUST BE DEAD CODE 46115000=14148000=
|
|
DUMPDEC: 46120000=14149000=
|
|
IF SPECTOG THEN 46125000=14150000=
|
|
BEGIN COMMENT ERROR 464 MEANS A DUMP DECLARATION 46130000=14150000=
|
|
APPEARS IN THE SPECIFICATION PART OF A 46140000=14151000=
|
|
PROCEDURE; 46145000=14152000=
|
|
FLAG(464); 46150000=14153000=
|
|
END; 46155000=14154000=
|
|
DO 46160000=14155000=
|
|
UNTIL FALSE; % ?? MORE DEAD CODE ?? 46165000=14155000=
|
|
ARRAYDEC: 46170000=14156000=
|
|
ARRAE; 46175000=14156000=
|
|
GO TO START; 46180000=14156000=
|
|
FILEDEC: 46185000=14158000=
|
|
INDEC: 46190000=14158000=
|
|
OUTDEC: 46195000=14160000=
|
|
GOTSCHK: 46200000=14160000=
|
|
GOTSTORAGE:= NOT SPECTOG OR GOTSTORAGE; 46205000=14160000=
|
|
GO TO START; 46210000=14160000=
|
|
NAMEDEC: 46215000=14161000=
|
|
IF T1:= GTA1[J:= J-1] ^= ARRAYV THEN 46220000=14161000=
|
|
J:= J+1; 46225000=14161000=
|
|
TYPEV:= NAMEID; 46230000=14161010=
|
|
IF T1:= GTA1[J:= J-1] = 0 THEN 46235000=14161020=
|
|
J:= J+1 46240000=14161030=
|
|
ELSE 46245000=14161030=
|
|
IF T1 = OWNV THEN 46250000=14161050=
|
|
BEGIN 46255000=14161060=
|
|
P2:= TRUE; 46260000=14161070=
|
|
IF SPECTOG THEN 46265000=14161070=
|
|
FLAG(013); 46270000=14161080=
|
|
END 46275000=14161120=
|
|
ELSE 46280000=14161120=
|
|
TYPEV:= NAMEID+T1-REALV; 46285000=14161120=
|
|
ENTER(TYPEV); 46290000=14162000=
|
|
GO TO START; 46295000=14162000=
|
|
SUBDEC: 46300000=14163500=
|
|
BEGIN 46305000=14163500=
|
|
REAL 46310000=14163500=
|
|
TYPEV, 46315000=14163500=
|
|
T; 46320000=14163500=
|
|
IF GTA1[J:= J-1] = REALV THEN 46325000=14164000=
|
|
TYPEV:= REALSUBID 46330000=14164000=
|
|
ELSE 46335000=14164000=
|
|
TYPEV:= SUBID; 46340000=14164000=
|
|
STOPGSP:= TRUE; 46345000=14164500=
|
|
JUMPCHKNX; 46350000=14165000=
|
|
ENTRY(TYPEV); 46355000=14165000=
|
|
IF ELCLASS ^= SEMICOLON THEN 46360000=14165000=
|
|
FLAG(57); 46365000=14165000=
|
|
STOPGSP:= FALSE; 46370000=14165500=
|
|
STEPIT; 46375000=14166000=
|
|
T:= NEXTINFO; 46380000=14166500=
|
|
PUTNBUMP(L); 46385000=14167000=
|
|
STMT; 46390000=14167000=
|
|
EMITO(LFU); 46395000=14167000=
|
|
IF TYPEV = REALSUBID THEN 46400000=14167000=
|
|
IF GET(L-2) ^= 533 THEN 46405000=14168000=
|
|
FLAG(58); 46410000=14168000=
|
|
PUT(TAKE(T) & L[23:11:12], T); 46415000=14168000=
|
|
CONSTANTCLEAN; 46420000=14168500=
|
|
END; 46425000=14169000=
|
|
GO TO START; 46430000=14170000=
|
|
LABELDEC: 46435000=14187000=
|
|
IF SPECTOG AND FUNCTOG THEN 46440000=14187000=
|
|
FLAG(24); 46445000=14187000=
|
|
STOPENTRY:= STOPGSP:= TRUE; 46450000=14188000=
|
|
I:= I-1; 46455000=14189000=
|
|
DO BEGIN 46460000=14191000=
|
|
STOPDEFINE:= TRUE; 46465000=14192000=
|
|
STEPIT; 46470000=14193000=
|
|
ENTRY(LABELID); 46475000=14194000=
|
|
PUTNBUMP(0) 46480000=14196000=
|
|
END 46485000=14197000=
|
|
UNTIL ELCLASS ^= COMMA; 46490000=14197000=
|
|
STOPENTRY:= STOPGSP:= FALSE; 46495000=14198000=
|
|
GO TO START; 46500000=14199000=
|
|
SWITCHDEC: 46505000=14201000=
|
|
BEGIN 46510000=14201000=
|
|
LABEL 46515000=14202000=
|
|
START; 46520000=14202000=
|
|
INTEGER 46525000=14203000=
|
|
GT1, 46530000=14203000=
|
|
GT2, 46535000=14203000=
|
|
GT4, 46540000=14203000=
|
|
GT5; 46545000=14203000=
|
|
BOOLEAN 46550000=14204000=
|
|
TB1; 46555000=14204000=
|
|
STOPENTRY:= NOT SPECTOG; 46560000=14205000=
|
|
STOPGSP:= TRUE; 46565000=14205000=
|
|
SCATTERELBAT; 46570000=14206000=
|
|
GT1:= 0; 46575000=14206000=
|
|
TB1:= FALSE; 46580000=14206000=
|
|
ENTRY(SWITCHID); 46585000=14207000=
|
|
GT2:= NEXTINFO; 46590000=14217000=
|
|
PUTNBUMP(0); 46595000=14217000=
|
|
DO BEGIN 46600000=14219000=
|
|
IF STEPI ^= LABELID OR ELBAT[I].LVL ^= LEVEL THEN 46605000=14220000=
|
|
FLAG(63); 46610000=14220000=
|
|
PUTNBUMP(ELBAT[I]); 46615000=14221000=
|
|
GT1:= GT1+1; 46620000=14221000=
|
|
END; 46625000=14222000=
|
|
; COMMENT 46630000=14222500=
|
|
UNTIL STEPI^=COMMA; 46635000=14223000=
|
|
PUT(GT1, GT2); 46640000=14224000=
|
|
STOPENTRY:= STOPGSP:= FALSE; 46645000=14251000=
|
|
END SWITCHDEC; 46650000=14252000=
|
|
GO TO START; 46655000=14253000=
|
|
DEFINEDEC: 46660000=14254050=
|
|
BEGIN 46665000=14254050=
|
|
LABEL 46670000=14254050=
|
|
START; 46675000=14254050=
|
|
REAL 46680000=14254100=
|
|
J, 46685000=14254100=
|
|
K; 46690000=14254100=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%46692000
|
|
BOOLEAN PROCEDURE PARM(S, SX, D, K, J); 46695000=14254200=
|
|
VALUE 46705000=14254200=
|
|
SX, K, J; 46710000=14254200=
|
|
ARRAY 46712000
|
|
S, D[0]; 46714000
|
|
REAL 46716000
|
|
SX, K, J; 46718000
|
|
BEGIN 46720000=14254300=
|
|
STREAMLOCALS; 46722000
|
|
STREAMSETSI(S, SX); 46725000=14254300=
|
|
STREAMSKIPSI(+2); 46730000=14254300=
|
|
STREAMSETDI(D, 0); 46735000=14254300=
|
|
STREAMSKIPDI(+2); 46740000=14254300=
|
|
IF STREAMCOMPARENEQ(K) THEN 46745000=14254400=
|
|
TALLY:= 1; 46750000=14254500=
|
|
STREAMSETLOCDI(J); 46752000
|
|
STREAMSKIPDI(+7); 46755000=14254500=
|
|
IF STREAMCOMPARENEQ(1) THEN 46760000=14254600=
|
|
TALLY:= 1; 46765000=14254600=
|
|
PARM:= TALLY; 46770000=14254700=
|
|
END; 46775000=14254800=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%46776000
|
|
STOPENTRY:= STOPGSP:= TRUE; 46780000=14255000=
|
|
I:= I-1; 46785000=14255000=
|
|
DO BEGIN 46790000=14257000=
|
|
STOPDEFINE:= TRUE; 46795000=14258000=
|
|
STEPIT; 46800000=14259000=
|
|
MOVE(9, ACCUM, 1, GTA1, 0); 46805000=14259000=
|
|
K:= COUNT+1; 46810000=14259010=
|
|
J:= GTA1[0]; 46815000=14259010=
|
|
ENTRY(DEFINEDID); 46820000=14259010=
|
|
GTA1[0]:= J+6"100000"; 46825000=14259015=
|
|
J:= 0; 46830000=14259015=
|
|
IF ELCLASS = LEFTPAREN OR ELCLASS = LFTBRKET THEN 46835000=14259020=
|
|
BEGIN 46840000=14259030=
|
|
DO BEGIN 46845000=14259060=
|
|
STOPDEFINE:= TRUE; 46850000=14259060=
|
|
STEPIT; 46855000=14259070=
|
|
IF(J:= J+1) > 9 OR PARM(ACCUM, 1, GTA1, K, J) 46860000=14259090=
|
|
OR K > 62 46865000=14259090=
|
|
THEN 46870000=14259090=
|
|
BEGIN 46875000=14259090=
|
|
ERR(141); 46880000=14259090=
|
|
GO TO START 46885000=14259090=
|
|
END; 46890000=14259090=
|
|
STOPDEFINE:= TRUE; 46895000=14259100=
|
|
END 46900000=14259110=
|
|
UNTIL STEPI ^= COMMA; 46905000=14259110=
|
|
IF ELCLASS ^= RTPAREN AND ELCLASS ^= RTBRKET THEN 46910000=14259120=
|
|
ERR(141); 46915000=14259120=
|
|
STOPDEFINE:= TRUE; 46920000=14259130=
|
|
STEPIT; 46925000=14259140=
|
|
PUT(TAKE(LASTINFO) & J[31:10:11], LASTINFO); 46930000=14259150=
|
|
END; 46935000=14259160=
|
|
IF ELCLASS ^= RELOP THEN 46940000=14261000=
|
|
BEGIN 46945000=14262000=
|
|
FLAG(30); 46950000=14263000=
|
|
I:= I-1; 46955000=14264000=
|
|
END; 46960000=14265000=
|
|
MACROID:= TRUE; 46965000=14265900=
|
|
DEFINEGEN(FALSE, J); 46970000=14266000=
|
|
MACROID:= FALSE; 46975000=14266100=
|
|
END 46980000=14268000=
|
|
UNTIL STEPI ^= COMMA; 46985000=14268000=
|
|
START: 46990000=14269000=
|
|
STOPENTRY:= STOPGSP:= FALSE; 46995000=14269000=
|
|
END; 47000000=14269000=
|
|
GO TO START; 47005000=14269000=
|
|
PROCEDUREDEC: 47010000=14271000=
|
|
BEGIN 47015000=14271000=
|
|
LABEL 47020000=14272000=
|
|
START, 47025000=14272000=
|
|
START1; 47030000=14272000=
|
|
LABEL 47035000=14273000=
|
|
START2; 47040000=14273000=
|
|
BOOLEAN 47045000=14274000=
|
|
FWDTOG; COMMENT THIS TOGGLE IS THE FORWARD DEC INDICATOR; 47050000=14274000=
|
|
IF NOT SPECTOG THEN 47060000=14275000=
|
|
FUNCTOG:= FALSE; 47065000=14275000=
|
|
FWDTOG:= FALSE; 47070000=14276000=
|
|
MAXSTACKO:= MAXSTACK; 47075000=14277000=
|
|
IF G:= GTA1[J:= J-1] = STREAMV THEN 47080000=14279000=
|
|
BEGIN 47085000=14280000=
|
|
STREAMTOG:= TRUE; 47090000=14280000=
|
|
IF G:= GTA1[J:= J-1] = 0 THEN 47095000=14281000=
|
|
TYPEV:= STRPROCID 47100000=14282000=
|
|
ELSE 47105000=14282000=
|
|
BEGIN 47110000=14283000=
|
|
IF TYPEV:= PROCID+G > INTSTRPROCID OR 47115000=14286000=
|
|
TYPEV < BOOSTRPROCID THEN 47120000=14286000=
|
|
FLAG(004); 47125000=14286000=
|
|
IF NOT SPECTOG THEN 47130000=14287000=
|
|
FUNCTOG:= TRUE; 47135000=14288000=
|
|
CHKSOB 47140000=14290000=
|
|
END 47145000=14291000=
|
|
END 47150000=14292000=
|
|
ELSE 47155000=14292000=
|
|
IF G = SAVEV OR G = 0 THEN 47160000=14292000=
|
|
TYPEV:= PROCID 47165000=14293000=
|
|
ELSE 47170000=14293000=
|
|
IF TYPEV:= REALSTRPROCID+G < BOOPROCID 47175000=14295000=
|
|
OR TYPEV > INTPROCID THEN 47180000=14295000=
|
|
FLAG(005) 47185000=14296000=
|
|
ELSE 47190000=14296000=
|
|
BEGIN 47195000=14296000=
|
|
FUNCTOG:= TRUE; 47200000=14296000=
|
|
G:= GTA1[J:= J-1]; 47205000=14296000=
|
|
END; 47210000=14297000=
|
|
IF NOT STREAMTOG THEN 47215000=14298000=
|
|
SEGMENTSTART(G = SAVEV); 47220000=14298000=
|
|
SAF:= G = SAVEV; 47225000=14299000=
|
|
MODE:= MODE+1; 47230000=14303000=
|
|
LO:= PROINFO; 47235000=14304000=
|
|
SCATTERELBAT; 47240000=14305000=
|
|
47245000=14306000=
|
|
COMMENT CHECK TO SEE IF DECLARED FORWARD PREVIOUSLY ;47250000=14306000=
|
|
IF LEVELF = LEVEL THEN 47255000=14308000=
|
|
BEGIN 47260000=14309000=
|
|
IF G:= TAKE(LINKF+1) >= 0 THEN 47265000=14311000=
|
|
FLAG(006); 47270000=14311000=
|
|
FWDTOG:= TRUE; 47275000=14312000=
|
|
PROAD:= ADDRSF; 47280000=14313000=
|
|
PROINFO:= ELBAT[I]; 47285000=14314000=
|
|
MARK:= LINKF+INCRF; 47290000=14314000=
|
|
STEPIT; 47295000=14315000=
|
|
PUT(-G, LINKF+1); 47300000=14315000=
|
|
END 47305000=14318000=
|
|
ELSE 47310000=14318000=
|
|
BEGIN 47315000=14318000=
|
|
STOPENTRY:= TRUE; 47320000=14318000=
|
|
P2:= TRUE; 47325000=14318000=
|
|
STOPGSP:= LEVEL > 1 AND STREAMTOG; 47330000=14318500=
|
|
ENTRY(TYPEV); 47335000=14319000=
|
|
MARK:= NEXTINFO; 47340000=14319000=
|
|
PUTNBUMP(0); 47345000=14319000=
|
|
STOPGSP:= FALSE; 47350000=14319500=
|
|
PROINFO:= TAKE(LASTINFO) & LASTINFO[12:12:13]; 47355000=14320000=
|
|
PROAD:= ADDRSF; 47360000=14320000=
|
|
P2:= STOPENTRY:= FALSE 47365000=14322000=
|
|
END; 47370000=14322000=
|
|
PJ:= 0; 47375000=14323000=
|
|
LEVEL:= LEVEL+1; 47380000=14323000=
|
|
IF STREAMTOG THEN 47385000=14324000=
|
|
STREAMWORDS; 47390000=14324000=
|
|
IF ELCLASS = SEMICOLON THEN 47395000=14325000=
|
|
GO TO START1; 47400000=14325000=
|
|
IF ELCLASS ^= LEFTPAREN THEN 47405000=14326000=
|
|
FLAG(007); 47410000=14326000=
|
|
47415000=14327000=
|
|
COMMENT: THE FOLLOWING 8 STATEMENTS FOOL THE SCANNER AND BLOCK,PUTTING 47420000=14327000=
|
|
FORMAL PARAMETER ENTRIES IN THE ZERO ROW OF INFO; 47425000=14328000=
|
|
RR1:= NEXTINFO; 47430000=14329000=
|
|
LASTINFOT:= LASTINFO; 47435000=14330000=
|
|
LASTINFO:= NEXTINFO:= 1; 47440000=14330000=
|
|
PUTNBUMP(0); 47445000=14331000=
|
|
PTOG:= TRUE; 47450000=14332000=
|
|
I:= I+1; 47455000=14332000=
|
|
ENTRY(SECRET); 47460000=14333000=
|
|
IF FWDTOG THEN 47465000=14333100=
|
|
BEGIN 47470000=14333200=
|
|
IF GT1:= TAKE(MARK).[7:8] ^= PJ THEN 47475000=14333300=
|
|
FLAG(48); % WRONG 47480000=14333300=
|
|
% NUMBER OF PARAMETERS. WE DON"T WANT TO CLOBBER INFO. 47485000=14333400=
|
|
END 47490000=14334000=
|
|
ELSE 47495000=14334000=
|
|
PUT(PJ, MARK); 47500000=14334000=
|
|
P:= PJ; 47505000=14335000=
|
|
IF ELCLASS ^= RTPAREN THEN 47510000=14337000=
|
|
FLAG(008); 47515000=14337000=
|
|
IF STEPI ^= SEMICOLON THEN 47520000=14339000=
|
|
FLAG(009); 47525000=14339000=
|
|
47530000=14340000=
|
|
COMMENT MARK PARAMETERS VALUE IF THERE IS A VALUE PART; 47535000=14340000=
|
|
IF STEPI = VALUEV THEN 47540000=14342000=
|
|
BEGIN 47545000=14343000=
|
|
DO 47550000=14345000=
|
|
IF STEPI ^= SECRET THEN 47555000=14346000=
|
|
FLAG(010) 47560000=14347000=
|
|
ELSE 47565000=14347000=
|
|
BEGIN 47570000=14348000=
|
|
IF G:= ELBAT[I].ADDRESS = 0 OR G > PJ THEN 47575000=14350000=
|
|
FLAG(010); 47580000=14351000=
|
|
G:= TAKE(ELBAT[I]); 47585000=14352000=
|
|
PUT(G & 1[37:0:1], ELBAT[I]) 47590000=14354000=
|
|
END 47595000=14356000=
|
|
UNTIL STEPI ^= COMMA; 47600000=14356000=
|
|
IF ELCLASS ^= SEMICOLON THEN 47605000=14358000=
|
|
FLAG(011) 47610000=14359000=
|
|
ELSE 47615000=14359000=
|
|
STEPIT 47620000=14360000=
|
|
END; 47625000=14360000=
|
|
I:= I-1; 47630000=14360000=
|
|
IF STREAMTOG THEN 47635000=14362000=
|
|
BEGIN 47640000=14363000=
|
|
BUP:= PJ; 47645000=14364000=
|
|
SPECTOG:= TRUE; 47650000=14364000=
|
|
GO TO START1 47655000=14365000=
|
|
END 47660000=14367000=
|
|
ELSE 47665000=14367000=
|
|
BEGIN 47670000=14367000=
|
|
SPECTOG:= TRUE; 47675000=14368000=
|
|
BUP:= 0; 47680000=14369000=
|
|
IF ELCLASS ^= DECLARATORS THEN 47685000=14371000=
|
|
FLAG(012) 47690000=14372000=
|
|
END; 47695000=14372000=
|
|
START: 47700000=14373000=
|
|
PTOG:= FALSE; 47705000=14373000=
|
|
LASTINFO:= LASTINFOT; 47710000=14373000=
|
|
NEXTINFO:= 47715000=14373000=
|
|
IF FWDTOG THEN 47720000=14373000=
|
|
RR1 47725000=14373000=
|
|
ELSE 47730000=14373000=
|
|
MARK+PJ+1; 47735000=14374000=
|
|
START1: 47740000=14375000=
|
|
PINFOO:= NEXTINFO; 47745000=14375000=
|
|
START2: 47750000=14376000=
|
|
END; 47755000=14376000=
|
|
IF SPECTOG OR STREAMTOG THEN 47760000=14378000=
|
|
GO TO START; 47765000=14379000=
|
|
47770000=14380000=
|
|
COMMENT IF SPECTOG IS ON THEN THE BLOCK WILL PROCESS THE SPECIFICATION 47775000=14380000=
|
|
PART SIMILARY TO DECLARATIONS WITH A FEW NECESSARY VARIATIONS; 47780000=14381000=
|
|
HF: BEGIN 47785000=14383000=
|
|
LABEL 47790000=14384000=
|
|
START, 47795000=14384000=
|
|
STOP; 47800000=14384000=
|
|
DEFINE 47805000=14384100=
|
|
TESTLEV = LEVEL > 2 #; 47810000=14384100=
|
|
IF STREAMTOG THEN 47815000=14386000=
|
|
BEGIN 47820000=14386000=
|
|
IF TESTLEV THEN 47825000=14387000=
|
|
JUMPCHKNX 47830000=14387000=
|
|
ELSE 47835000=14387000=
|
|
SEGMENTSTART(TRUE); 47840000=14387000=
|
|
PJ:= P; 47845000=14387000=
|
|
PTOG:= FALSE; 47850000=14388000=
|
|
PUT(TAKE(GIT(PROINFO)) & L[19:11:12], GIT(PROINFO)); 47855000=14388100=
|
|
IF TESTLEV THEN 47860000=14389000=
|
|
BEGIN 47865000=14389000=
|
|
EMITO(584); 47870000=14389000=
|
|
END; 47875000=14389000=
|
|
IF STEPI = BEGINV THEN 47880000=14394000=
|
|
BEGIN 47885000=14395000=
|
|
WHILE STEPI = DECLARATORS OR ELCLASS = LOCALV DO 47890000=14397000=
|
|
BEGIN 47895000=14398000=
|
|
IF ELBAT[I].ADDRESS = LABELV THEN 47900000=14400000=
|
|
BEGIN 47905000=14401000=
|
|
STOPDEFINE:= STOPGSP:= STOPENTRY:= TRUE; 47910000=14402000=
|
|
DO BEGIN 47915000=14403000=
|
|
STOPDEFINE:= TRUE; 47920000=14403000=
|
|
STEPIT; 47925000=14403000=
|
|
ENTRY(STLABID); 47930000=14403000=
|
|
PUTNBUMP(0) 47935000=14403000=
|
|
END 47940000=14404000=
|
|
UNTIL ELCLASS ^= COMMA; 47945000=14404000=
|
|
STOPGSP:= STOPENTRY:= FALSE 47950000=14405000=
|
|
END 47955000=14407000=
|
|
ELSE 47960000=14407000=
|
|
BEGIN 47965000=14407000=
|
|
I:= I+1; 47970000=14408000=
|
|
ENTRY(LOCLID) 47975000=14410000=
|
|
END 47980000=14411000=
|
|
END; 47985000=14411000=
|
|
IF FUNCTOG THEN 47990000=14411100=
|
|
PUT((Z:= TAKE(PROINFO)) & LOCLID[45:6:7] & 47995000=14411300=
|
|
(PJ+2+REAL(TESTLEV))[31:10:11], PROINFO); 48000000=14411300=
|
|
COMPOUNDTAIL 48005000=14413000=
|
|
END 48010000=14415000=
|
|
ELSE 48015000=14415000=
|
|
BEGIN 48020000=14415000=
|
|
IF FUNCTOG THEN 48025000=14415100=
|
|
PUT((Z:= TAKE(PROINFO)) & LOCLID[45:6:7] & 48030000=14415300=
|
|
(PJ+2+REAL(TESTLEV))[31:10:11], PROINFO); 48035000=14415300=
|
|
STREAMSTMT; 48040000=14415400=
|
|
END; 48045000=14415500=
|
|
COMMENT THE FOLLOWING BLOCK CONSTITUTES THE STREAM PROCEDURE PURGE; 48050000=14416000=
|
|
BEGIN 48055000=14417000=
|
|
REAL 48060000=14418000=
|
|
NLOC, 48065000=14418000=
|
|
NLAB; 48070000=14418000=
|
|
DEFINE 48075000=14419000=
|
|
SES = 18 #, 48080000=14419000=
|
|
SED = 6 #, 48085000=14419000=
|
|
TRW = 5 #; 48090000=14419000=
|
|
DEFINE 48095000=14420000=
|
|
LOC = [11:12] #, 48100000=14420000=
|
|
LASTGT = [23:12] #; 48105000=14420000=
|
|
J:= LASTINFO; 48110000=14421000=
|
|
NLOC:= NLAB:= 0; 48115000=14422000=
|
|
DO BEGIN 48120000=14424000=
|
|
IF (GT1:= TAKE(J)).CLASS = LOCLID THEN 48125000=14425000=
|
|
BEGIN 48130000=14426000=
|
|
IF BOOLEAN(GT1.FORMAL) THEN 48135000=14427000=
|
|
BEGIN 48140000=14428000=
|
|
IF GT1 < 0 THEN 48145000=14429000=
|
|
PUT(TAKE(GT2:= MARK+P-GT1.ADDRESS+1) & 48150000=14431000=
|
|
FILEID[45:6:7], GT2); 48155000=14431000=
|
|
END 48160000=14433000=
|
|
ELSE 48165000=14433000=
|
|
NLOC:= NLOC+1; 48170000=14433000=
|
|
END 48175000=14436000=
|
|
ELSE 48180000=14436000=
|
|
BEGIN 48185000=14436000=
|
|
IF GT1.ADDRESS ^= 0 THEN 48190000=14437000=
|
|
NLAB:= NLAB+1; 48195000=14437000=
|
|
IF (GT3:= TAKE(GIT(J))).LASTGT ^= 0 AND GT3.LOC = 0 48200000=14438000=
|
|
THEN 48205000=14438000=
|
|
BEGIN 48210000=14439000=
|
|
MOVE(9, INFO[0,*], J, ACCUM, 0); 48215000=14440000=
|
|
Q:= ACCUM[1]; 48220000=14441000=
|
|
FLAG(267); 48225000=14442000=
|
|
ERRORTOG:= TRUE; 48230000=14443000=
|
|
END; 48235000=14444000=
|
|
END; 48240000=14445000=
|
|
G:= (GT2+TAKE(J+1)).PURPT; 48245000=14446000=
|
|
IF GT1.[45:8] ^= STLABID*2+1 THEN 48250000=14447000=
|
|
STACKHEAD[(0 & GT2[35:35:36]) MOD 125]:= TAKE(J).LINK; 48255000=14448000=
|
|
END 48260000=14449000=
|
|
UNTIL J:= J-G <= 1; 48265000=14449000=
|
|
IF TESTLEV THEN 48270000=14451000=
|
|
BEGIN 48275000=14451000=
|
|
EMITC(1, 0); 48280000=14451000=
|
|
EMITO(BFW) 48285000=14451000=
|
|
END 48290000=14451100=
|
|
ELSE 48295000=14451100=
|
|
EMIT(0); 48300000=14451100=
|
|
PUT(TAKE(MARK) & NLOC[46:5:6] & L[31:11:12] & P[7:7:8], 48305000=14451200=
|
|
MARK); 48310000=14451200=
|
|
IF FUNCTOG THEN 48315000=14452000=
|
|
PUT(Z, PROINFO); 48320000=14457000=
|
|
STREAMWORDS; 48325000=14460000=
|
|
STREAMTOG:= FALSE; 48330000=14461000=
|
|
IF NOT TESTLEV THEN 48335000=14461100=
|
|
BEGIN 48340000=14461100=
|
|
PROGDESCBLDR(PROAD, TRUE, (L+3) DIV 4, CHAR); 48345000=14461100=
|
|
SEGMENT((L+3) DIV 4, PROINFO.ADDRESS); 48350000=14461200=
|
|
RIGHT(L); 48355000=14461300=
|
|
L:= 0; 48360000=14461300=
|
|
END; 48365000=14461400=
|
|
IF LISTER AND FORMATOG THEN 48370000=14461500=
|
|
SPACEITDOWN; 48375000=14461500=
|
|
END; 48380000=14462000=
|
|
LASTINFO:= LASTINFOT; 48385000=14463000=
|
|
NEXTINFO:= MARK+P+1; 48390000=14463000=
|
|
END 48395000=14466000=
|
|
ELSE 48400000=14466000=
|
|
BEGIN 48405000=14466000=
|
|
IF STEPI = FORWARDV THEN 48410000=14468000=
|
|
BEGIN 48415000=14469000=
|
|
PUT(-TAKE(G:= PROINFO.LINK+1), G); 48420000=14470000=
|
|
PURGE(PINFOO); 48425000=14471000=
|
|
STEPIT 48430000=14473000=
|
|
END 48435000=14475000=
|
|
ELSE 48440000=14475000=
|
|
BEGIN 48445000=14475000=
|
|
PROADO:= PROAD; 48450000=14476000=
|
|
TSUBLEVEL:= SUBLEVEL; 48455000=14477000=
|
|
SUBLEVEL:= LEVEL; 48460000=14477000=
|
|
STACKCTRO:= STACKCTR; 48465000=14477000=
|
|
IF MODE = 1 THEN 48470000=14478000=
|
|
FRSTLEVEL:= LEVEL; 48475000=14478000=
|
|
STACKCTR:= 513+REAL(FUNCTOG); 48480000=14478000=
|
|
IF ELCLASS = BEGINV THEN 48485000=14479000=
|
|
BEGIN 48490000=14481000=
|
|
CALLINFO:= (CALLX:= CALLX+1)+1; 48495000=14481100=
|
|
NEXTCTR:= STACKCTR; 48500000=14481200=
|
|
BLOCK(TRUE); 48505000=14482000=
|
|
; 48510000=14483000=
|
|
PURGE(PINFOO); 48515000=14483000=
|
|
IF NESTOG THEN 48520000=14483100=
|
|
BEGIN 48525000=14483200=
|
|
GT1:= TAKE(PROINFO).ADDRESS; 48530000=14483200=
|
|
NESTPRT[GT1]:= 0 & PROINFO[12:12:13] & CALLINFO[25:12:13];48535000=14483300=
|
|
CALL[CALLINFO-1]:= (TAKE(GIT(PROINFO))+NESTCTR-511) & 48540000=14483500=
|
|
CALLX[25:12:13]; 48545000=14483500=
|
|
END; 48550000=14483600=
|
|
L:= 0; 48555000=14483700=
|
|
GO TO STOP 48560000=14484000=
|
|
END; 48565000=14484000=
|
|
BEGIN 48570000=14485000=
|
|
FLAG(052); 48575000=14486000=
|
|
RELAD:= L; 48580000=14487000=
|
|
STMT; 48585000=14488000=
|
|
HTTEOAP(FALSE, RELAD, PINFOO, PROAD); 48590000=14489000=
|
|
END; 48595000=14490000=
|
|
STOP: 48600000=14492000=
|
|
SUBLEVEL:= TSUBLEVEL; 48605000=14492000=
|
|
STACKCTR:= STACKCTRO; 48610000=14493000=
|
|
IF LISTER AND FORMATOG THEN 48615000=14493500=
|
|
SPACEITDOWN; 48620000=14493500=
|
|
END; 48625000=14494000=
|
|
END; 48630000=14495000=
|
|
PROINFO:= LO; 48635000=14496000=
|
|
IF JUMPCTR = LEVEL THEN 48640000=14498000=
|
|
JUMPCTR:= LEVEL-1; 48645000=14499000=
|
|
LEVEL:= LEVEL-1; 48650000=14500000=
|
|
MODE:= MODE-1; 48655000=14501000=
|
|
MAXSTACK:= MAXSTACKO; 48660000=14502000=
|
|
START: 48665000=14503000=
|
|
END; 48670000=14503000=
|
|
GO TO START; 48675000=14504000=
|
|
CALLSTATEMENT: 48680000=14505000=
|
|
FOULED:= L; 48685000=14505000=
|
|
JUMPCHKX; 48690000=14506000=
|
|
IF SOP THEN 48695000=14506000=
|
|
BEGIN 48700000=14506000=
|
|
Z:= STACKCTR-513; 48705000=14506000=
|
|
WHILE Z:= Z-1 >= 0 DO 48710000=14506500=
|
|
EMITL(0) 48715000=14506500=
|
|
END; 48720000=14506500=
|
|
IF SPECTOG THEN 48725000=14507000=
|
|
BEGIN 48730000=14507000=
|
|
FLAG(12); 48735000=14508000=
|
|
GO TO HF 48740000=14509000=
|
|
END; 48745000=14509000=
|
|
BEGINCTR:= BEGINCTR-1; 48750000=14510000=
|
|
IF ERRORTOG THEN 48755000=14512000=
|
|
COMPOUNDTAIL 48760000=14513000=
|
|
ELSE 48765000=14513000=
|
|
BEGIN 48770000=14514000=
|
|
STMT; 48775000=14515000=
|
|
IF ELCLASS:= TABLE(I+1) = DECLARATORS THEN 48780000=14517000=
|
|
BEGIN 48785000=14518000=
|
|
ELBAT[I].CLASS:= SEMICOLON; 48790000=14519000=
|
|
BEGINCTR:= BEGINCTR+1; 48795000=14520000=
|
|
GO TO START 48800000=14522000=
|
|
END 48805000=14524000=
|
|
ELSE 48810000=14524000=
|
|
COMPOUNDTAIL 48815000=14525000=
|
|
END; 48820000=14525000=
|
|
FUNCTOG:= FUNCTOGO; 48825000=14599000=
|
|
IF SOP THEN 48830000=14600000=
|
|
HTTEOAP(FALSE, FIRSTX, NINFOO, BLKAD) 48835000=14601000=
|
|
ELSE 48840000=14601000=
|
|
BEGIN 48845000=14601000=
|
|
IF NESTOG THEN 48850000=14601000=
|
|
SORTNEST; 48855000=14601000=
|
|
PURGE(NINFOO); 48860000=14601000=
|
|
END; 48865000=14601000=
|
|
SEGMENT((L+3) DIV 4, PROADD); 48870000=14602000=
|
|
IF LEVEL > 1 THEN 48875000=14603000=
|
|
RIGHT(L); 48880000=14603000=
|
|
IF LEVEL:= LEVEL-1 = 0 THEN 48885000=14604000=
|
|
CONSTANTCLEAN; 48890000=14604000=
|
|
AJUMP:= AJUMPO; 48895000=14606000=
|
|
FIRSTX:= FIRSTXO; 48900000=14608000=
|
|
SAVEL:= SAVELO; 48905000=14609000=
|
|
STACKCTR:= STACKCTRO; 48910000=14610000=
|
|
END BLOCK; 48915000=14613000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%48920000=14613000=
|
|
48925000=15000000=
|
|
COMMENT THIS SECTION CONTAINS THE VARIABLE ROUTINE AND ITS SIDEKICKS; 48930000=15000000=
|
|
COMMENT THE FOLLOWING BLOCK HANDLES THE FOLLOWING CASES 48935000=15039000=
|
|
OF SIMPLE VARIABLES: 48940000=15040000=
|
|
1. V ~ EXP ,WHERE V IS FORMAL-CALL BY NAME. 48945000=15041000=
|
|
2. V ~ EXP ,ALL V EXCEPT FORMAL-NAME. 48950000=15042000=
|
|
3. V.[S:L] ~ EXP ,WHERE V IS FORMAL-CALL BY NAME. 48955000=15043000=
|
|
4. V.[S:L] ~ EXP ,ALL V EXCEPT FORMAL-NAME. 48960000=15044000=
|
|
5. V.[S:L] ,ALL V. 48965000=15045000=
|
|
6. V ,ALL V. 48970000=15046000=
|
|
CODE EMITED FOR THE ABOVE CASES IS AS FOLLOWS: 48975000=15047000=
|
|
1. VN,EXP,M*,XCH,~. 48980000=15048000=
|
|
2. EXP,M*,VL,~. 48985000=15049000=
|
|
3. VN,DUP,COC,EXP,T,M*,XCH,~. 48990000=15050000=
|
|
4. VV,EXP,T,M*,VL,~. 48995000=15051000=
|
|
5. ZEROL,VV,T . 49000000=15052000=
|
|
6. VV . 49005000=15053000=
|
|
WHERE VN = DESC V 49010000=15054000=
|
|
EXP= ARITH, OR BOOLEAN EXPRESSION,AS REQUIRED. 49015000=15055000=
|
|
M* = CALL ON MONITOR ROUTINE,IF REQUIRED. 49020000=15056000=
|
|
VL = LITC V 49025000=15057000=
|
|
VV = OPDC V 49030000=15058000=
|
|
~ = STORE INSTRUCTION(ISD,ISN,SND OR STD). 49035000=15059000=
|
|
T = BIT TRANSFER CODE(DIA,DIB,TRB). 49040000=15060000=
|
|
ZEROL = LITC 0 49045000=15061000=
|
|
DUP,COC,XCH = THE INSTRUCTIONS DUP,COC,AND XCH. 49050000=15062000=
|
|
OF COURSE, EXP WILL CAUSE RECURSION,IN GENERAL,AND THUS 49055000=15063000=
|
|
THE PARAMETER P1 AND THE LOCALS CAN NOT BE HANDLED IN A 49060000=15064000=
|
|
GLOBAL FASHION. 49065000=15065000=
|
|
THE PARAMETER P1 IS USED TO TELL THE VARIABLE ROUTINE 49070000=15066000=
|
|
WHO CALLED IT. SOME OF THE CODE GENERATION AND SOME 49075000=15067000=
|
|
SYNTAX CHECKS DEPEND UPON A PARTICULAR VALUE OF P1 . 49080000=15068000=
|
|
; 49085000=15069000=
|
|
PROCEDURE VARIABLE(P1); 49090000=15070000=
|
|
REAL 49095000=15070000=
|
|
P1; 49100000=15070000=
|
|
BEGIN 49105000=15071000=
|
|
REAL 49110000=15072000=
|
|
TALL, COMMENT ELBAT WORD FOR VARIABLE; 49115000=15072000=
|
|
T1, COMMENT 1ST INTEGER OF PARTIAL WORD SYNTAX; 49120000=15073000=
|
|
T2, COMMENT 2ND INTEGER OF PARTIAL WORD SYNTAX; 49125000=15074000=
|
|
J; COMMENT SUBSCRIPT COUNTER ; 49130000=15075000=
|
|
LABEL 49140000=15076000=
|
|
EXIT, 49145000=15076000=
|
|
L1, 49150000=15076000=
|
|
LAST, 49155000=15076000=
|
|
NEXT, 49160000=15076000=
|
|
JAZZ, 49165000=15076000=
|
|
ITUP, 49170000=15076000=
|
|
LASS; 49175000=15076000=
|
|
DEFINE 49180000=15076100=
|
|
FORMALNAME = [38:2] = 2 #, 49185000=15076100=
|
|
LONGID = NAMEID #; 49190000=15076100=
|
|
BOOLEAN 49195000=15076200=
|
|
SPCLMON; 49200000=15076200=
|
|
TALL:= ELBAT[I]; 49205000=15077000=
|
|
IF ELCLASS <= INTPROCID THEN 49210000=15078000=
|
|
BEGIN 49215000=15079000=
|
|
IF TALL.LINK ^= PROINFO.LINK THEN 49220000=15080000=
|
|
BEGIN 49225000=15081000=
|
|
ERR(211); 49230000=15081000=
|
|
GO TO EXIT 49235000=15081000=
|
|
END; 49240000=15081000=
|
|
49245000=15082000=
|
|
COMMENT 211 VARIABLE-FUNCTION IDENTIFIER USED OUTSIDE OF ITS SCOPE*; 49250000=15082000=
|
|
TALL:= TALL & (ELCLASS+4)[45:6:7] & 513[31:10:11]; 49255000=15083000=
|
|
END 49260000=15085000=
|
|
ELSE 49265000=15085000=
|
|
CHECKER(TALL); 49270000=15085000=
|
|
IF TALL.CLASS <= INTID THEN 49275000=15086000=
|
|
BEGIN 49280000=15087000=
|
|
IF STEPI = ASSIGNOP THEN 49285000=15090000=
|
|
BEGIN 49290000=15091000=
|
|
STACKCT:= 1; 49295000=15091000=
|
|
L1: IF TALL.FORMALNAME THEN 49300000=15092000=
|
|
BEGIN 49305000=15093000=
|
|
EMITN(TALL.ADDRESS); 49310000=15094000=
|
|
IF T1 ^= 0 THEN 49315000=15095000=
|
|
BEGIN 49320000=15095000=
|
|
EMITO(DUP); 49325000=15095000=
|
|
EMITO(COC) 49330000=15095000=
|
|
END; 49335000=15095000=
|
|
END 49340000=15097000=
|
|
ELSE 49345000=15097000=
|
|
IF T1 ^= 0 THEN 49350000=15097000=
|
|
EMITV(TALL.ADDRESS); 49355000=15098000=
|
|
STACKCT:= REAL(T1 ^= 0); 49360000=15098000=
|
|
STEPIT; 49365000=15098000=
|
|
AEXP; 49370000=15099000=
|
|
EMITD(48-T2, T1, T2); 49375000=15100000=
|
|
STACKCT:= 0; 49380000=15101500=
|
|
GT1:= 49385000=15102000=
|
|
IF TALL.CLASS = INTID THEN 49390000=15102000=
|
|
IF P1 = FS THEN 49395000=15103000=
|
|
ISD 49400000=15103000=
|
|
ELSE 49405000=15103000=
|
|
ISN 49410000=15103000=
|
|
ELSE 49415000=15103000=
|
|
IF P1 = FS THEN 49420000=15104000=
|
|
STD 49425000=15104000=
|
|
ELSE 49430000=15104000=
|
|
SND; 49435000=15104000=
|
|
IF TALL.FORMALNAME THEN 49440000=15105000=
|
|
BEGIN 49445000=15106000=
|
|
EMITO(XCH); 49450000=15106100=
|
|
IF TALL.ADDRESS > 1023 THEN 49455000=15106100=
|
|
EMITO(PRTE); 49460000=15106100=
|
|
EMITO(GT1); 49465000=15106200=
|
|
END 49470000=15107000=
|
|
ELSE 49475000=15107000=
|
|
EMITPAIR(TALL.ADDRESS, GT1); 49480000=15107000=
|
|
END 49485000=15110000=
|
|
ELSE 49490000=15110000=
|
|
BEGIN 49495000=15110000=
|
|
IF P1 = FL THEN 49500000=15110100=
|
|
BEGIN 49505000=15110100=
|
|
IF ELCLASS < AMPERSAND THEN 49510000=15110200=
|
|
EMITN(TALL.ADDRESS) 49515000=15110300=
|
|
ELSE 49520000=15110300=
|
|
EMITV(TALL.ADDRESS); 49525000=15110300=
|
|
GO TO EXIT 49530000=15110400=
|
|
END; 49535000=15110400=
|
|
IF ELCLASS = PERIOD THEN 49540000=15111000=
|
|
BEGIN 49545000=15112000=
|
|
IF DOTSYNTAX(T1, T2) THEN 49550000=15112000=
|
|
GO TO EXIT; 49555000=15112000=
|
|
IF STEPI = ASSIGNOP THEN 49560000=15113000=
|
|
IF P1 ^= FS THEN 49565000=15114000=
|
|
BEGIN 49570000=15115000=
|
|
ERR(201); 49575000=15115000=
|
|
GO TO EXIT 49580000=15115000=
|
|
END 49585000=15116000=
|
|
ELSE 49590000=15116000=
|
|
GO TO L1 49595000=15118000=
|
|
END; 49600000=15118000=
|
|
IF P1 ^= FP THEN 49605000=15119000=
|
|
BEGIN 49610000=15119000=
|
|
ERR(202); 49615000=15119000=
|
|
GO TO EXIT 49620000=15119000=
|
|
END; 49625000=15119000=
|
|
49630000=15120000=
|
|
COMMENT 202 VARIABLE- A VARIABLE APPEARS WHICH IS NOT FOLLOWED * 49635000=15120000=
|
|
BY A LEFT ARROW OR PERIOD *;49640000=15121000=
|
|
49645000=15122000=
|
|
COMMENT 201 VARIABLE- A PARTIAL WORD DESIGNATOR IS NOT THE * 49650000=15122000=
|
|
LEFT-MOST OF A LEFT PART LIST *;49655000=15123000=
|
|
EMITI(TALL, T1, T2); 49660000=15124000=
|
|
END; 49665000=15126000=
|
|
END OF SIMPLE VARIABLES 49670000=15128100=
|
|
ELSE 49675000=15128100=
|
|
IF TALL.CLASS ^= LABELID THEN 49680000=15128100=
|
|
COMMENT THE FOLLOWING BLOCK HANDLES THESE CASES OF SUBSCRIPTED 49685000=15129000=
|
|
VARIABLES: 49690000=15130000=
|
|
1. V[*] ,ROW DESIGNATOR FOR SINGLE-DIMENSION. 49695000=15131000=
|
|
2. V[R,*] ,ROW DESIGNATOR FOR MULTI-DIMENSION. 49700000=15132000=
|
|
3. V[R] ,ARRAY ELEMENT,NAME OR VALUE. 49705000=15133000=
|
|
4. V[R].[S:L] ,PARTIAL WORD DESIGNATOR, VALUE. 49710000=15134000=
|
|
5. V[R] ~ ,ASSIGNMENT TO ARRAY ELEMENT. 49715000=15135000=
|
|
6. V[R].[S:L] ~ ,ASSIGNMENT TO PARTIAL WORD,LEFT-MOST. 49720000=15136000=
|
|
R IS A K-ORDER SUBSCRIPT LIST,I.E. R= R1,R2,...,RK. 49725000=15137000=
|
|
IN THE CASE OF NO MONITORING ON V, THE FOLLOWING CODE 49730000=15138000=
|
|
IS EMITTED FOR THE ABOVE CASES: 49735000=15139000=
|
|
1. CASE #1 IS A SPECIAL CASE OF #2,NAMELY,SINGLE 49740000=15140000=
|
|
DIMENSION. THE CODE EMITTED IS: 49745000=15141000=
|
|
VL,LOD . 49750000=15142000=
|
|
EXECUTION: PLACES ARRAY DESCRIPTER IN REG A. 49755000=15143000=
|
|
2. THIS CODE IS BASIC TO THE SUBSCRIPTION PROCESS.49760000=15144000=
|
|
EACH SUBSCRIPT GENERATES THE FOLLOWING SEQUENCE49765000=15145000=
|
|
OF CODE: 49770000=15146000=
|
|
AEXP,L*,IF FIRST SUBSCRIPT THEN VN ELSE CDC 49775000=15147000=
|
|
,LOD. 49780000=15148000=
|
|
FOR A K-ORDER SUBSCRIPTION,K-1 SEQUENCE ARE 49785000=15149000=
|
|
PRODUCED. THE AEXP IN EACH SEQUENCE REFERS TO 49790000=15150000=
|
|
THE CODE PRODUCED BY THE ARITHMETIC EXPRESSION 49795000=15151000=
|
|
PROCEDURE FOR THE ACTUAL SUBSCRIPT EXPRESSIONS,49800000=15152000=
|
|
[* REFERS TO THE CODE PRODUCED FOR SUBTRACTING 49805000=15153000=
|
|
NON-ZERO LOWER BOUNDS FROM THE SUBSCRIPT 49810000=15154000=
|
|
EXPRESSION(L* YIELDS NO CODE FOR ZERO BOUNDS). 49815000=15155000=
|
|
EXECUTION: PLACES ARRAY ROW DESCRIPTOR IN REG A49820000=15156000=
|
|
. THE SPECIFIC ROW DEPENDS UPON THE 49825000=15157000=
|
|
VALUES OF THE K-1 SUBSCRIPTS. 49830000=15158000=
|
|
FOR THE REMAINING CASES, 49835000=15159000=
|
|
SEQUENCES OF CODE ARE EMITED AS IN CASE #2. 49840000=15160000=
|
|
HOWEVER,THE ACTUAL SEQUENCES ARE: 49845000=15161000=
|
|
ONE SEQUENCE ,(AEXP,L*),FOR THE 1ST SUBSCRIPT.49850000=15162000=
|
|
K-1 SEQUENCES,(IF FIRST SUBSCRIPT THEN VN 49855000=15163000=
|
|
ELSE CDC,LOD,AEXP,L*), FOR THE REMAINING 49860000=15164000=
|
|
SUBSCRIPTS,IF K>1. 49865000=15165000=
|
|
AT THIS POINT, CASES #3-6 ARE DIFFERENTIATED 49870000=15166000=
|
|
AND ADDITION CODE,PARTICULAR TO EACH CASE,IS 49875000=15167000=
|
|
EMITTED. 49880000=15168000=
|
|
3. ADD THE SEQUENCE: 49885000=15169000=
|
|
IF FIRST SUBSCRIPT THEN VV ELSE COC. 49890000=15170000=
|
|
EXECUTION: THE ARRAY ELEMENT IS PUT IN REG A. 49895000=15171000=
|
|
4. ADD THE SEQUENCE: 49900000=15172000=
|
|
IF FIRST SUBSCRIPT THEN VV ELSE COC,ZEROL. 49905000=15173000=
|
|
XCH,T. 49910000=15174000=
|
|
5. ADD THE SEQUENCE: 49915000=15175000=
|
|
IF FIRST SUBSCRIPT THEN VN ELSE CDC,EXP, 49920000=15176000=
|
|
XCH,~. 49925000=15177000=
|
|
6. ADD THE SEQUENCE: 49930000=15178000=
|
|
IF FIRST SUBSCRIPT THEN VN ELSE CDC,DUP,LOD, 49935000=15179000=
|
|
EXP,T, XCH,~. 49940000=15180000=
|
|
EXP,T,~,ZEROL,ETC. HAVE SAME MEANINGS AS DEFINED IN 49945000=15181000=
|
|
SIMPLE VARIABLE BLOCK. ; 49950000=15182000=
|
|
BEGIN 49955000=15183000=
|
|
IF STEPI ^= LFTBRKET THEN 49960000=15233000=
|
|
BEGIN 49965000=15233002=
|
|
IF ELCLASS = PERIOD THEN 49970000=15233003=
|
|
BEGIN 49975000=15233004=
|
|
IF DOTSYNTAX(T1, T2) THEN 49980000=15233005=
|
|
GO TO EXIT; 49985000=15233005=
|
|
IF STEPI = ASSIGNOP THEN 49990000=15233006=
|
|
BEGIN 49995000=15233007=
|
|
IF P1 ^= FS THEN 50000000=15233008=
|
|
BEGIN 50005000=15233008=
|
|
ERR(209); 50010000=15233008=
|
|
GO EXIT 50015000=15233008=
|
|
END; 50020000=15233008=
|
|
IF TALL.CLASS <= INTARRAYID THEN 50025000=15233009=
|
|
BEGIN 50030000=15233010=
|
|
EMITPAIR(TALL.ADDRESS, LOD) 50035000=15233010=
|
|
END 50040000=15233011=
|
|
ELSE 50045000=15233011=
|
|
EMITN(TALL.ADDRESS); 50050000=15233011=
|
|
STACKCT:= STACKCT+1; 50055000=15233011=
|
|
JAZZ: 50060000=15233012=
|
|
STEPIT; 50065000=15233012=
|
|
AEXP; 50070000=15233012=
|
|
EMITD(48-T2, T1, T2); 50075000=15233013=
|
|
EMITPAIR(TALL.ADDRESS, IF P1 = FS THEN STD ELSE SND); 50080000=15233015=
|
|
STACKCT:= 0; 50085000=15233016=
|
|
END 50090000=15233017=
|
|
ELSE 50095000=15233017=
|
|
BEGIN 50100000=15233017=
|
|
ITUP: 50105000=15233018=
|
|
EMITI(TALL, T1, T2); 50110000=15233018=
|
|
END; 50115000=15233023=
|
|
GO TO EXIT; 50120000=15233024=
|
|
END; 50125000=15233025=
|
|
IF ELCLASS = ASSIGNOP THEN 50130000=15233026=
|
|
GO TO JAZZ 50135000=15233026=
|
|
ELSE 50140000=15233026=
|
|
GO TO ITUP; 50145000=15233026=
|
|
END; 50150000=15233027=
|
|
J:= 0; 50155000=15234000=
|
|
STACKCT:= 0; 50160000=15234500=
|
|
50165000=15235000=
|
|
COMMENT 207 VARIABLE-MISSING LEFT BRACKET ON SUBSCRIPTED VARIABLE *; 50170000=15235000=
|
|
NEXT: 50175000=15253000=
|
|
IF STEPI = FACTOP THEN 50180000=15253000=
|
|
BEGIN 50185000=15254000=
|
|
IF J+1 ^= TALL.INCR THEN 50190000=15255000=
|
|
BEGIN 50195000=15256000=
|
|
ERR(203); 50200000=15256000=
|
|
GO EXIT 50205000=15256000=
|
|
END; 50210000=15256000=
|
|
50215000=15257000=
|
|
COMMENT 203 VARIABLE- THE NUMBER OF SUBSCRIPTS USED IN A ROW * 50220000=15257000=
|
|
ROW DESIGNATER DOES NOT MATCH THE ARRAY * 50225000=15258000=
|
|
DECLARATION. *;50230000=15259000=
|
|
IF STEPI ^= RTBRKET THEN 50235000=15260000=
|
|
BEGIN 50240000=15261000=
|
|
ERR(204); 50245000=15261000=
|
|
GO EXIT 50250000=15261000=
|
|
END; 50255000=15261000=
|
|
50260000=15262000=
|
|
COMMENT 204 VARIABLE- COMPILER EXPECTS A ] IN A ROW DESIGNATER *;50265000=15262000=
|
|
50270000=15264000=
|
|
COMMENT 205 VARIABLE- A ROW DESIGNATER APPEARS OUTSIDE OF A FILL * 50275000=15264000=
|
|
STATEMENT OR ACTUAL PARAMETER LIST. *;50280000=15265000=
|
|
IF J = 0 THEN 50285000=15266000=
|
|
EMITPAIR(TALL.ADDRESS, LOD); 50290000=15267000=
|
|
STLB:= 0; 50295000=15273000=
|
|
STEPIT; 50300000=15274000=
|
|
GO TO EXIT; 50305000=15275000=
|
|
END OF ROW DESIGNATOR PORTION; 50310000=15276000=
|
|
IF ELCLASS = LITNO AND ELBAT[I].ADDRESS = 0 AND TABLE(I+1) = 50315000=15276010=
|
|
RTBRKET AND TALL.CLASS >= NAMEID 50320000=15276020=
|
|
THEN 50325000=15276020=
|
|
BEGIN 50330000=15276030=
|
|
I:= I+1; 50335000=15276040=
|
|
IF STEPI = ASSIGNOP THEN 50340000=15276050=
|
|
BEGIN 50345000=15276050=
|
|
LASS: 50350000=15276060=
|
|
IF T1 ^= 0 THEN 50355000=15276060=
|
|
EMITV(TALL.ADDRESS); 50360000=15276060=
|
|
STEPIT; 50365000=15276070=
|
|
AEXP; 50370000=15276070=
|
|
EMITD(48-T2, T1, T2); 50375000=15276070=
|
|
EMITN(TALL.ADDRESS); 50380000=15276080=
|
|
EMITO(IF TALL.CLASS ^= NAMEID THEN IF P1 = FS THEN ISD ELSE 50385000=15276110=
|
|
ISN ELSE IF P1 = FS THEN STD ELSE SND); 50390000=15276110=
|
|
STACKCT:= 0; 50395000=15276115=
|
|
GO TO EXIT 50400000=15276120=
|
|
END 50405000=15276140=
|
|
ELSE 50410000=15276140=
|
|
IF ELCLASS = PERIOD THEN 50415000=15276140=
|
|
BEGIN 50420000=15276140=
|
|
IF DOTSYNTAX(T1, T2) THEN 50425000=15276150=
|
|
GO TO EXIT; 50430000=15276150=
|
|
IF STEPI = ASSIGNOP THEN 50435000=15276160=
|
|
IF P1 = FS THEN 50440000=15276160=
|
|
GO TO LASS 50445000=15276170=
|
|
ELSE 50450000=15276170=
|
|
BEGIN 50455000=15276170=
|
|
ERR(209); 50460000=15276170=
|
|
GO EXIT 50465000=15276170=
|
|
END; 50470000=15276170=
|
|
END; 50475000=15276180=
|
|
IF P1 = FS THEN 50480000=15276190=
|
|
BEGIN 50485000=15276190=
|
|
ERR(210); 50490000=15276190=
|
|
GO EXIT 50495000=15276190=
|
|
END; 50500000=15276190=
|
|
EMITI 50505000=15276210=
|
|
(IF P1 = FL THEN TALL ELSE TALL & REALID[45:6:7], T1, T2); 50510000=15276210=
|
|
GO TO EXIT; 50515000=15276230=
|
|
END; 50520000=15276240=
|
|
AEXP; 50525000=15277000=
|
|
STACKCT:= 1; 50530000=15278000=
|
|
J:= J+1; 50535000=15280000=
|
|
IF ELCLASS = COMMA THEN 50540000=15287000=
|
|
BEGIN 50545000=15288000=
|
|
50550000=15289000=
|
|
COMMENT ***** MONITOR FUNCTION M4 GOES HERE ; 50555000=15289000=
|
|
IF J = 1 THEN 50560000=15290000=
|
|
EMITV(TALL.ADDRESS) 50565000=15290000=
|
|
ELSE 50570000=15290000=
|
|
EMITO(COC); 50575000=15290000=
|
|
GO TO NEXT; 50580000=15292000=
|
|
END OF SUBSCRIPT COMMA HANDLER; 50585000=15293000=
|
|
IF ELCLASS ^= RTBRKET THEN 50590000=15294000=
|
|
BEGIN 50595000=15294000=
|
|
ERR(206); 50600000=15294000=
|
|
GO EXIT 50605000=15294000=
|
|
END; 50610000=15294000=
|
|
50615000=15295000=
|
|
COMMENT 206 VARIABLE- MISSING RIGHT BRACKET ON SUBSCRIPTED VARIABLE*; 50620000=15295000=
|
|
GT1:= 50625000=15295100=
|
|
IF TALL.CLASS >= NAMEID THEN 50630000=15295100=
|
|
1 50635000=15295100=
|
|
ELSE 50640000=15295100=
|
|
TALL.INCR; 50645000=15295100=
|
|
IF J ^= GT1 THEN 50650000=15296000=
|
|
BEGIN 50655000=15297000=
|
|
ERR(208); 50660000=15297000=
|
|
GO TO EXIT 50665000=15297000=
|
|
END; 50670000=15297000=
|
|
50675000=15298000=
|
|
COMMENT 208 VARIABLE- NUMBER OF SUBSCRIPTS DOES NOT MATCH WITH * 50680000=15298000=
|
|
ARRAY DECLARATION. *;50685000=15299000=
|
|
IF STEPI = ASSIGNOP THEN 50690000=15300000=
|
|
BEGIN 50695000=15301000=
|
|
LAST: 50700000=15302000=
|
|
IF J = 1 THEN 50705000=15302000=
|
|
EMITN(TALL.ADDRESS) 50710000=15302000=
|
|
ELSE 50715000=15302000=
|
|
EMITO(CDC); 50720000=15302000=
|
|
IF TALL.CLASS >= LONGID THEN 50725000=15303000=
|
|
EMITO(INX); 50730000=15303000=
|
|
IF T1 = 0 THEN 50735000=15304000=
|
|
BEGIN 50740000=15305000=
|
|
IF P1 = FR THEN 50745000=15305000=
|
|
GO TO EXIT 50750000=15306000=
|
|
END 50755000=15306000=
|
|
ELSE 50760000=15306000=
|
|
BEGIN 50765000=15306000=
|
|
EMITO(DUP); 50770000=15306000=
|
|
EMITO(LOD) 50775000=15306000=
|
|
END; 50780000=15306000=
|
|
STEPIT; 50785000=15306000=
|
|
AEXP; 50790000=15307000=
|
|
EMITD(48-T2, T1, T2); 50795000=15308000=
|
|
EMITO(XCH); 50800000=15309000=
|
|
IF TALL.ADDRESS > 1023 THEN 50805000=15310000=
|
|
EMITI(PRTE); 50810000=15310000=
|
|
EMITO(IF TALL.CLASS MOD 2 = INTARRAYID MOD 2 THEN IF P1 = FS 50815000=15335000=
|
|
THEN ISD ELSE ISN ELSE IF P1 = FS THEN STD ELSE SND); 50820000=15335000=
|
|
STACKCT:= 0; 50825000=15335500=
|
|
P1:= 0; 50830000=15336000=
|
|
GO TO EXIT; 50835000=15337000=
|
|
END OF ASSIGNMENT STATEMENT SUBSCRIPTED VARIABLES; 50840000=15338000=
|
|
IF ELCLASS = PERIOD THEN 50845000=15339000=
|
|
BEGIN 50850000=15340000=
|
|
IF DOTSYNTAX(T1, T2) THEN 50855000=15341000=
|
|
GO TO EXIT; 50860000=15341000=
|
|
IF STEPI = ASSIGNOP THEN 50865000=15342000=
|
|
IF P1 = FS THEN 50870000=15342000=
|
|
GO TO LAST 50875000=15343000=
|
|
ELSE 50880000=15343000=
|
|
BEGIN 50885000=15343000=
|
|
ERR(209); 50890000=15343000=
|
|
GO EXIT 50895000=15343000=
|
|
END; 50900000=15343000=
|
|
IF J ^= 1 THEN 50905000=15344000=
|
|
EMITO(COC) 50910000=15344000=
|
|
ELSE 50915000=15344000=
|
|
IF TALL.CLASS >= LONGID THEN 50920000=15344000=
|
|
BEGIN 50925000=15344100=
|
|
EMITN(TALL.ADDRESS); 50930000=15344100=
|
|
EMITO(INX); 50935000=15344100=
|
|
EMITO(LOD) 50940000=15344100=
|
|
END 50945000=15344200=
|
|
ELSE 50950000=15344200=
|
|
EMITV(TALL.ADDRESS); 50955000=15344200=
|
|
END 50960000=15347000=
|
|
ELSE 50965000=15347000=
|
|
50970000=15347000=
|
|
COMMENT ***** MONITOR FUNCTION M10 GOES HERE ; 50975000=15347000=
|
|
BEGIN COMMENT MONITOR FUNCTION M10; 50980000=15348000=
|
|
SPCLMON:= P1 = FP OR ELCLASS >= AMPERSAND; 50990000=15349000=
|
|
IF J = 1 THEN 50995000=15351000=
|
|
IF TALL.CLASS >= LONGID THEN 51000000=15351000=
|
|
BEGIN 51005000=15351100=
|
|
EMITN(TALL.ADDRESS); 51010000=15351200=
|
|
EMITO(INX); 51015000=15351200=
|
|
IF SPCLMON THEN 51020000=15351300=
|
|
EMITO(LOD); 51025000=15351300=
|
|
END 51030000=15351400=
|
|
ELSE 51035000=15351400=
|
|
IF SPCLMON THEN 51040000=15352000=
|
|
EMITV(TALL.ADDRESS) 51045000=15353000=
|
|
ELSE 51050000=15353000=
|
|
EMITN(TALL.ADDRESS) 51055000=15354000=
|
|
ELSE 51060000=15354000=
|
|
EMITO(IF SPCLMON THEN COC ELSE CDC); 51065000=15356000=
|
|
IF P1 = FS THEN 51070000=15364000=
|
|
ERR(210); 51075000=15364000=
|
|
GO TO EXIT; 51080000=15365000=
|
|
END; 51085000=15366000=
|
|
IF P1 = FS THEN 51090000=15367000=
|
|
BEGIN 51095000=15367000=
|
|
ERR(210); 51100000=15367000=
|
|
GO TO EXIT 51105000=15367000=
|
|
END; 51110000=15367000=
|
|
51115000=15368000=
|
|
COMMENT 210 VARIABLE-MISSING LEFT ARROW OR PERIOD. *;51120000=15368000=
|
|
STACKCT:= 0; 51125000=15369000=
|
|
IF T1 ^= 0 THEN 51130000=15370000=
|
|
BEGIN 51135000=15370000=
|
|
EMITI(0, T1, T2); 51140000=15370000=
|
|
P1:= 0 51145000=15370000=
|
|
END; 51150000=15370000=
|
|
END OF SUBSCRIPTED VARIABLES 51155000=15376200=
|
|
ELSE 51160000=15376200=
|
|
BEGIN COMMENT LABELID; 51165000=15376200=
|
|
T1:= TAKE(T2:= GIT(TALL)); 51175000=15376300=
|
|
PUT(L, T2); 51180000=15376400=
|
|
IF T1 = 0 THEN 51185000=15376500=
|
|
T1:= L; 51190000=15376500=
|
|
IF(T1:= L-T1) DIV 4 > 127 THEN 51195000=15376600=
|
|
BEGIN 51200000=15376600=
|
|
T1:= 0; 51205000=15376600=
|
|
FLAG(50); 51210000=15376600=
|
|
END; 51215000=15376600=
|
|
EMIT(T1*4+3); 51220000=15376700=
|
|
STEPIT; 51225000=15376800=
|
|
END OF LABELID; 51230000=15376900=
|
|
EXIT: 51235000=15377000=
|
|
END OF THE VARIABLE ROUTINE; 51240000=15377000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%51245000=15377000=
|
|
51250000=16000000=
|
|
COMMENT THIS SECTION GENERATES CODE FOR STREAM PROCEDURES; 51255000=16000000=
|
|
51260000=16000050=
|
|
COMMENT DO LABEL DECS UPON APPEARANCE OF LABEL ; 51265000=16000050=
|
|
PROCEDURE DECLARELABEL; 51270000=16000100=
|
|
BEGIN 51275000=16000200=
|
|
KLASSF:= STLABID; 51280000=16000300=
|
|
VONF:= FORMALF:= FALSE; 51285000=16000400=
|
|
ADDRSF:= 0; 51290000=16000500=
|
|
MAKEUPACCUM; 51295000=16000600=
|
|
E; 51300000=16000600=
|
|
PUTNBUMP(0); 51305000=16000600=
|
|
ELBAT[I]:= ACCUM[0] & LASTINFO[12:12:13]; 51310000=16000700=
|
|
END; 51315000=16000800=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%51320000=16000800=
|
|
PROCEDURE STREAMSTMT; 51325000=16001000=
|
|
BEGIN 51330000=16002000=
|
|
DEFINE 51335000=16003000=
|
|
LFTPAREN = LEFTPAREN #, 51340000=16003000=
|
|
LOC = [11:12] #, 51345000=16003000=
|
|
LASTGT = [23:12] #, 51350000=16004000=
|
|
LOCFLD = 36:36:12 #, 51355000=16004000=
|
|
LGTFLD = 24:24:12 #; 51360000=16004000=
|
|
DEFINE 51365000=16005000=
|
|
LEVEL = LVL #, 51370000=16005000=
|
|
ADDOP = ADOP #; 51375000=16005000=
|
|
DEFINE 51380000=16006100=
|
|
JFW = 39#, COMMENT 7.5.5.1 JUMP FORWARD UNCONDITIONAL ; 51385000=16007000=
|
|
RCA = 40#, COMMENT 7.5.7.6 RECALL CONTROL ADDRESS ; 51390000=16008000=
|
|
JRV = 47#, COMMENT 7.5.5.2 JUMP REVERSE UNCONDITIONAL ; 51395000=16009000=
|
|
CRF = 35#, COMMENT 7.5.10.6 CALL REPEAT FIELD ; 51400000=16010000=
|
|
BNS = 42#, COMMENT 7.5.5.5 BEGIN LOOP ; 51405000=16011000=
|
|
NOP = 1#, COMMENT ; 51410000=16012000=
|
|
ENS = 41#, COMMENT 7.5.5.6 END LOOP ; 51415000=16013000=
|
|
TAN = 30#, COMMENT 7.5.3.7 TEST FOR ALPHAMERIC ; 51420000=16014000=
|
|
BIT = 31#, COMMENT 7.5.3.8 TEST BIT ; 51425000=16015000=
|
|
JFC = 37#, COMMENT 7.5.5.3 JUMP FORWARD CONDITIONAL ; 51430000=16016000=
|
|
SED = 06#, COMMENT 7.5.7.8 SET DESTINATION ADDRESS ; 51435000=16017000=
|
|
RSA = 43#, COMMENT 7.5.7.4 RECALL SOURCE ADDRESS ; 51440000=16018000=
|
|
TRP = 60#, COMMENT 7.5.2.2 TRANSFER PROGRAM CHARACTERS ; 51445000=16019000=
|
|
BSS = 3#, COMMENT 7.5.6.6 SKIP SOURCE BIT ; 51450000=16020000=
|
|
BSD = 2#, COMMENT 7.5.6.5 SKIP DESTINATION BITS ; 51455000=16021000=
|
|
SEC = 34#, COMMENT 7.5.10.1 SET COUNT ; 51460000=16022000=
|
|
JNS = 38#; COMMENT 7.5.5.7 JUMP OUT LOOP ; 51465000=16023000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%51466000
|
|
PROCEDURE ADJUST; 51470000=16024000=
|
|
; 51472000
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%51474000
|
|
COMMENT FIXC EMITS BASICLY FORWARD JUMPS. HOWEVER IN THE CASE 51475000=16024000=
|
|
OF INSTRUCTIONS INTERPTED AS JUMPS BECAUSE OF A CRF ON 51480000=16025000=
|
|
A VALUE = 0 AND THE JUMP >= 64 SYLLABLES A JFW 1 AND 51485000=16026000=
|
|
A RCA L (L IS STACK ADDRESS OF A PSEUDO LABEL WHICH 51490000=16027000=
|
|
MUST ALSO BE MANUFACTURED) IS EMITTED. ; 51495000=16028000=
|
|
PROCEDURE FIXC(S); 51500000=16032000=
|
|
VALUE 51500500
|
|
S; 51501000
|
|
REAL 51501500
|
|
S; 51502000
|
|
BEGIN 51502500
|
|
REAL 51503000
|
|
SAVL, 51503500
|
|
D, 51504000
|
|
F; 51504500
|
|
IF D:= (SAVL:= L)-(L:= S)-1 <= 63 THEN 51505000
|
|
EMITC(D, GET(S)) 51505500
|
|
ELSE 51506000
|
|
FLAG(700); 51506500
|
|
L:= SAVL; 51507000
|
|
END FIXC; 51507500
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%51508000
|
|
COMMENT EMITJUMP IS CALLED BY GOTOS AND JUMPCHAIN. 51515000=16058000=
|
|
THIS ROUTINE WILL EMIT A JUMP IF THE DISTANCE IS <= 63 51520000=16059000=
|
|
SYLLABLES ,OTHERWISE, IT GETS A PRT CELL AND STUFFS THE 51525000=16060000=
|
|
STACK ADDRESS INTO THE LABEL ENTRY IN INFO AND EMITS AN 51530000=16061000=
|
|
RCA ON THIS STACK CELL. AT EXECUTION TIME ACTUAL PARAPART 51535000=16062000=
|
|
INSURES US THAT THIS CELL WILL CONATIN A LABEL DESCRIPTOR 51540000=16063000=
|
|
POINTING TO OUR LABEL IN QUESTION. ; 51545000=16064000=
|
|
PROCEDURE EMITJUMP(E); 51550000=16070000=
|
|
VALUE 51551000
|
|
E; 51551500
|
|
REAL 51552000
|
|
E; 51552500
|
|
BEGIN 51553000
|
|
REAL 51554000
|
|
T, 51555000
|
|
D; 51556000
|
|
REAL 51557000
|
|
ADDR; 51558000
|
|
IF ABS(D:= (T:= TAKE(GIT(E)).LOC)-L-1) >= 64 THEN 51559000
|
|
FLAG(700) 51560000
|
|
ELSE 51561000
|
|
EMITC(D, IF D < 0 THEN JRV ELSE JFW); 51562000
|
|
END EMIT JUMP; 51563000
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%51564000
|
|
COMMENT WHEN JUMPCHAIN IS CALLED THERE IS A LINKEDLIST IN THE CODE51565000=16081000=
|
|
ARRAY WHERE JFWS MUST BE PLACED. THE 1ST LINK IS POINTED 51570000=16082000=
|
|
TO BY THE LOC FIELD OF EACH LABEL ENTRY IN INFO. THE LAST 51575000=16083000=
|
|
LINK IS = 4096. ; 51580000=16084000=
|
|
PROCEDURE JUMPCHAIN(E); 51585000=16089000=
|
|
VALUE 51585500
|
|
E; 51585600
|
|
REAL 51586000
|
|
E; 51586200
|
|
BEGIN 51586500
|
|
REAL 51587000
|
|
SAVL, 51587500
|
|
LINK; 51588000
|
|
SAVL:= L; 51588500
|
|
L:= TAKE(GIT(E)).LASTGT; 51590000=16093000=
|
|
WHILE L ^= 4095 DO 51591000
|
|
BEGIN 51592000
|
|
LINK:= GET(L); 51593000
|
|
EMITJUMP(E); 51595000=16098000=
|
|
L:= LINK 51595500
|
|
END; 51596000
|
|
L:= SAVL; 51596500
|
|
END JUMPCHAIN; 51597000
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%51597500
|
|
COMMENT NESTS COMPILES THE NEST STATEMENT. 51600000=16098000=
|
|
A VARIABLE NEST INDEX CAUSES THE CODE, 51605000=16099000=
|
|
CRF V, BNS 0 ,NOP,NOP, TO BE GENERATED INITIALLY. 51610000=16100000=
|
|
AT THE RIGHT PAREN THE BNS IS FIXED WITH THE LENGTH OF 51615000=16101000=
|
|
THE NEST (NUMBER OF SYLLABLES) IF THE LENGTH<=63,OTHERWISE51620000=16102000=
|
|
IT IS FIXED WITH A 1 AND THE NOPS REPLACED WITH JFW 1, 51625000=16103000=
|
|
RCA P. THIS IS DONE BECAUSE THE VALUE OF V AT EXECUTION 51630000=16104000=
|
|
MAY = 0 AND THIS CODE CAUSES A JUMP AROUND THE NEST. 51635000=16105000=
|
|
JUMPOUT INFO IS REMEMBERED IN A RECURSIVE CELL AND 51640000=16106000=
|
|
NEST LEVEL INCREASED BY ONE. 51645000=16107000=
|
|
WHEN THE RIGHT PAREN IS REACHED,(IF THE STATEMENTS IN 51650000=16108000=
|
|
THE NEST COMPILED), JOINFO IS CHECKED FOR THE EXISTANCE 51655000=16109000=
|
|
OF JUMPOUT STATEMENTS IN THE NEST,IF SO,THE THE JUMPS 51660000=16110000=
|
|
ARE FIXED BY FAKING TOTOS INTO COMPILING THE REQUIRED 51665000=16111000=
|
|
JUMPS. 51670000=16112000=
|
|
FINALLY THE BNS IS FIXED,IF REQUIRED,AND NEST LEVEL 51675000=16113000=
|
|
AND JOINFO RESTORED TO THEIR ORIGINAL VALUES. ; 51680000=16114000=
|
|
PROCEDURE NESTS; 51685000=16119000=
|
|
BEGIN 51685500
|
|
LABEL 51686000
|
|
EXIT; 51686500
|
|
REAL 51687000
|
|
JOINT, 51687500
|
|
BNSFIX; 51688000
|
|
IF ELCLASS ^= LITNO THEN 51688500
|
|
BEGIN 51689000
|
|
EMITC(ELBAT[I].ADDRESS, CRF); 51689500
|
|
BNSFIX:= L; 51690000
|
|
EMIT(BNS); 51690500
|
|
END 51695000=16125000=
|
|
ELSE 51696000
|
|
EMITC(ELBAT[I].ADDRESS, BNS); 51697000
|
|
IF STEPI ^= LFTPAREN THEN 51698000
|
|
BEGIN 51699000
|
|
ERR(262); 51700000=16128000=
|
|
GO TO EXIT 51701000
|
|
END; 51702000
|
|
NESTLEVEL:= NESTLEVEL+1; 51703000
|
|
JOINT:= JOINFO; 51704000
|
|
JOINFO:= 0; 51705000=16131000=
|
|
DO BEGIN 51706000
|
|
STEPIT; 51707000
|
|
ERRORTOG:= TRUE; 51708000
|
|
STREAMSTMT 51709000
|
|
END 51710000
|
|
UNTIL ELCLASS ^= SEMICOLON; 51711000
|
|
IF ELCLASS ^= RTPAREN THEN 51712000
|
|
BEGIN 51713000
|
|
ERR(262); 51714000
|
|
GO TO EXIT 51715000
|
|
END; 51716000
|
|
EMIT(ENS); 51717000
|
|
IF JOINFO ^= 0 THEN 51718000
|
|
BEGIN 51719000
|
|
COMMENT PREPARE TO CALL JUMPCHAIN FORJUMPOUTS; 51720000=16136000=
|
|
ADJUST; 51725000=16139000=
|
|
PUT(TAKE(GIT(JOINFO)) & L[LOCFLD], GIT(JOINFO)); 51726000
|
|
JUMPCHAIN(TAKE(JOINFO) & JOINFO[12:12:13]); 51727000
|
|
END; 51728000
|
|
IF BNSFIX ^= 0 THEN 51729000
|
|
FIXC(BNSFIX); 51730000
|
|
NESTLEVEL:= NESTLEVEL-1; 51731000
|
|
JOINFO:= JOINT; 51732000
|
|
EXIT: 51733000
|
|
END NESTS; 51734000
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%51735000
|
|
COMMENT LABELS HANDLES STREAM LABELS. 51740000=16145000=
|
|
ALL LABELS ARE ADJUSTED TO THE BEGINING OF THE NEXT 51745000=16146000=
|
|
WORD (IN THE PROGRAMSTREAM). 51750000=16147000=
|
|
IF A GO TO HAS NOT BEEN ENCOUNTERED BEFORE THE LABEL 51755000=16148000=
|
|
THEN THE NEST LEVEL FIELD IS ENTERED AND THE DEFINED BIT, 51760000=16149000=
|
|
[46:1], SET TO ONE. FOR DEFINED LABELS,IF WHERE A GO TO 51765000=16150000=
|
|
HAS APPEARED, A CHECK IS MADE THAT THE CURRENT NEST LEVEL 51770000=16151000=
|
|
MATCHES THE LEVEL OF THE LABEL. 51775000=16152000=
|
|
MULTIPLE OCCURANCES ARE ALSO CHECKED FOR AND FLAGGED. 51780000=16153000=
|
|
FINALLY,JUMPCHAIN IS CALLED TO FIX UP ANY FORWARD GO TOS 51785000=16154000=
|
|
AND GET A PRT LOCATION FOR ANY JUMPS >=64 SYLLABLES. ; 51790000=16155000=
|
|
PROCEDURE LABELS; 51795000=16160000=
|
|
BEGIN 51795500
|
|
REAL 51796000
|
|
GT1; 51796500
|
|
ADJUST; 51797000
|
|
GT1:= ELBAT[I]; 51797500
|
|
IF STEPI ^= COLON THEN 51798000
|
|
ERR(258) 51798500
|
|
ELSE 51799000
|
|
BEGIN 51799500
|
|
IF TAKE(GT2:= GIT(GT1)).LOC ^= 0 THEN 51800000
|
|
FLAG(259); 51805000=16166000=
|
|
IF GT1 > 0 THEN 51806000
|
|
BEGIN 51807000
|
|
PUT(-(TAKE(GT1) & NESTLEVEL[36:4:5]), GT1); 51808000
|
|
PUT(-L, GT2) 51809000
|
|
END 51810000
|
|
ELSE 51811000
|
|
BEGIN 51815000=16172000=
|
|
IF GT1.LEVEL ^= NESTLEVEL THEN 51816000
|
|
FLAG(257); 51817000
|
|
PUT((-L) & TAKE(GT2)[LGTFLD], GT2); 51818000
|
|
JUMPCHAIN(GT1); 51819000
|
|
END; 51820000
|
|
END; 51821000
|
|
STEPIT; 51822000
|
|
END LABELS; 51825000=16178000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%51826000
|
|
COMMENT IFS COMPILES IF STATEMENTS. 51830000=16178000=
|
|
FIRST THE TEST IS COMPILED. NOTE THAT IN THE 51835000=16179000=
|
|
CONSTRUCTS "SC RELOP DC" AND "SC RELOP STRING" THAT 51840000=16180000=
|
|
THE SYLLABLE EMITTED IS FETCHED FROM ONE OF TWO FIELDS 51845000=16181000=
|
|
IN THE ELBAT WORD FOR THE RELATIONAL OPERATOR. OTHERWISE 51850000=16182000=
|
|
THE CODE IS EMITTED STRAIGHTAWAY. 51855000=16183000=
|
|
A TEST IS MADE TO SEE WHETHER THE STATEMENT AFTER THE 51860000=16184000=
|
|
"THEN" COULD POSSIBLY BE LONGER THAN 63 SYLLABLES,AND IF 51865000=16185000=
|
|
SO, Z NOPS ARE EMITTED FOR FIXC IN CASE A RCA WILL HAVE 51870000=16186000=
|
|
TO BE GENERATED. 51875000=16187000=
|
|
THIS PROCEDURE DOES NO OPTIMAZATION IN THE CASES 51880000=16188000=
|
|
IF THEN GO TO L,IF THEN STATEMENT ELSE GO TO L, OR 51885000=16189000=
|
|
IF THEN GO TO L1 ELSE GO TO L2 ; 51890000=16190000=
|
|
PROCEDURE IFS; 51895000=16192000=
|
|
BEGIN 51896000
|
|
DEFINE 51898000
|
|
COMPARECODE = [5:6] #, 51900000
|
|
TESTCODE = [11:6] #; 51905000=16192000=
|
|
LABEL 51910000=16193000=
|
|
IFSB, 51915000=16193000=
|
|
IFTOG, 51920000=16193000=
|
|
IFSC, 51925000=16193000=
|
|
EXIT; 51930000=16193000=
|
|
SWITCH 51935000=16194000=
|
|
IFSW:= IFSB, 51940000=16194000=
|
|
IFTOG, 51945000=16194000=
|
|
IFSC; 51950000=16194000=
|
|
REAL 51955000=16195000=
|
|
ADDR, 51960000=16195000=
|
|
FIX1, 51965000=16195000=
|
|
FIX2; 51970000=16195000=
|
|
ADDR:= 1; 51975000=16196000=
|
|
GO TO IFSW[STEPI-SBV+1]; 51980000=16197000=
|
|
IF ELCLASS = LOCLID THEN 51985000=16198000=
|
|
BEGIN 51990000=16199000=
|
|
EMITC(ELBAT[I].ADDRESS, CRF); 51995000=16200000=
|
|
ADDR:= 0; 52000000=16201000=
|
|
END 52005000=16204000=
|
|
ELSE 52010000=16204000=
|
|
IF ELCLASS = LITNO THEN 52015000=16204000=
|
|
ADDR:= ELBAT[I].ADDRESS 52020000=16205000=
|
|
ELSE 52025000=16205000=
|
|
BEGIN 52030000=16205000=
|
|
ERR(250); 52035000=16205000=
|
|
GO TO EXIT 52040000=16205000=
|
|
END; 52045000=16205000=
|
|
IF STEPI ^= SCV THEN 52050000=16206000=
|
|
BEGIN 52055000=16206000=
|
|
ERR(263); 52060000=16206000=
|
|
GO TO EXIT 52065000=16206000=
|
|
END; 52070000=16206000=
|
|
IFSC: 52075000=16207000=
|
|
IF STEPI ^= RELOP THEN 52080000=16207000=
|
|
BEGIN 52085000=16207000=
|
|
ERR(264); 52090000=16207000=
|
|
GO TO EXIT 52095000=16207000=
|
|
END; 52100000=16207000=
|
|
IF STEPI = DCV THEN 52105000=16208000=
|
|
EMITC(ADDR, ELBAT[I-1].COMPARECODE) 52110000=16208000=
|
|
ELSE 52115000=16210000=
|
|
IF ELCLASS = STRNGCON THEN 52120000=16210000=
|
|
EMITC(ACCUM[1].[29:6], ELBAT[I-1].TESTCODE) 52125000=16212000=
|
|
ELSE 52130000=16212000=
|
|
IF ELCLASS = LITNO THEN 52135000=16212500=
|
|
EMITC(C, ELBAT[I-1].TESTCODE) 52140000=16212500=
|
|
ELSE 52145000=16212500=
|
|
IF ELCLASS <= IDMAX AND Q = 6"5ALPHA" THEN 52150000=16213000=
|
|
EMITC(17, TAN) 52155000=16214000=
|
|
ELSE 52160000=16214000=
|
|
BEGIN 52165000=16214000=
|
|
ERR(265); 52170000=16214000=
|
|
GO TO EXIT 52175000=16214000=
|
|
END; 52180000=16214000=
|
|
GO TO IFTOG; 52185000=16215000=
|
|
IFSB: 52190000=16216000=
|
|
EMITC(1, BIT); 52195000=16216000=
|
|
IFTOG: 52200000=16217000=
|
|
IF STEPI ^= THENV THEN 52205000=16217000=
|
|
BEGIN 52210000=16217000=
|
|
ERR(266); 52215000=16217000=
|
|
GO TO EXIT 52220000=16217000=
|
|
END; 52225000=16217000=
|
|
FIX1:= L; 52230000=16218000=
|
|
EMIT(JFC); 52235000=16219000=
|
|
IF STEPI ^= ELSEV THEN % 52240000=16220000=
|
|
STREAMSTMT; 52245000=16229000=
|
|
IF ELCLASS = ELSEV THEN 52250000=16230000=
|
|
BEGIN 52255000=16231000=
|
|
FIX2:= L; 52260000=16232000=
|
|
EMIT(JFW); 52265000=16232000=
|
|
FIXC(FIX1); 52270000=16233000=
|
|
STEPIT; 52275000=16234000=
|
|
STREAMSTMT; 52280000=16235000=
|
|
FIXC(FIX2); 52285000=16236000=
|
|
END 52290000=16238000=
|
|
ELSE 52295000=16238000=
|
|
FIXC(FIX1); 52300000=16238000=
|
|
EXIT: 52305000=16239000=
|
|
END IFS; 52310000=16239000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%52315000=16239000=
|
|
COMMENT GOTOS HANDLES GO TO AND THE LAST PART OF JUMP OUT TO 52320000=16240000=
|
|
STATEMENTS. 52325000=16241000=
|
|
IF THE LABEL HAS BEEN ENCOUNTERED THEN EMITJUMP IS CALLED 52330000=16242000=
|
|
AN PRODUCES A JRV OR RCA IN THE CASE OF JUMPS>=64 SYLLABL 52335000=16243000=
|
|
ES. OTHERWISE, A LINK IS EMITTED POINTING ANY PREVIOUS 52340000=16244000=
|
|
GO TOS IN THE CASE OF FORWARD JUMPS. 52345000=16245000=
|
|
FINALLY, IF THE NEST LEVEL IS DEFINED THEN IT IS CHECKED 52350000=16246000=
|
|
AGAINST THE CURRENT LEVEL MINUS THE NUMBER OF LEVELS TO 52355000=16247000=
|
|
BE JUMPED OUT. OTHERWISE,NEST LEVEL IS DEFINED. ; 52360000=16248000=
|
|
PROCEDURE GOTOS; 52365000=16249000=
|
|
BEGIN 52370000=16250000=
|
|
LABEL 52375000=16251000=
|
|
EXIT; 52380000=16251000=
|
|
IF STEPI ^= TOV THEN 52385000=16252000=
|
|
I:= I-1; 52390000=16252000=
|
|
IF STEPI ^= STLABID THEN 52395000=16253000=
|
|
ELCLASS <= IDMAX 52400000=16253000=
|
|
DECLARELABEL ELSE 52405000=16253100=
|
|
BEGIN 52410000=16253100=
|
|
ERR(260); 52415000=16253100=
|
|
GO TO EXIT 52420000=16253100=
|
|
END; 52425000=16253100=
|
|
IF (GT2:= TAKE(GIT(GT1:= ELBAT[I]))).MON = 1 OR GT2.LOC ^= 0 THEN 52430000=16255000=
|
|
EMITJUMP(GT1) 52435000=16256000=
|
|
ELSE 52440000=16256000=
|
|
BEGIN 52445000=16257000=
|
|
PUT(0 & L[23:11:12], GIT(GT1)); 52450000=16257000=
|
|
IF GT1 > 0 THEN 52455000=16258000=
|
|
BEGIN 52460000=16259000=
|
|
PUT(-(TAKE(GT1) & (NESTLEVEL-JUMPLEVEL)[36:4:5]), GT1); 52465000=16260000=
|
|
EMITN(1023); 52470000=16261000=
|
|
END 52475000=16264000=
|
|
ELSE 52480000=16264000=
|
|
BEGIN 52485000=16264000=
|
|
IF GT1.LEVEL ^= NESTLEVEL-JUMPLEVEL THEN 52490000=16265000=
|
|
FLAG(257); 52495000=16265000=
|
|
EMIT(GT2.LASTGT); 52500000=16266000=
|
|
END; 52505000=16267000=
|
|
END; 52510000=16268000=
|
|
JUMPLEVEL:= 0; 52515000=16269000=
|
|
EXIT: 52520000=16270000=
|
|
END GOTOS; 52525000=16270000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%52530000=16270000=
|
|
COMMENT RELEASES COMPILES THE STREAM RELEASE STATEMENT. 52535000=16271000=
|
|
THE CODE GENERATED IS : 52540000=16272000=
|
|
SED FILE 52545000=16273000=
|
|
RSA 0. 52550000=16274000=
|
|
AT EXECUTION TIME THIS CAUSES AN INVALID ADDRESS WHICH IS 52555000=16275000=
|
|
INTERPETED BY THE MCP TO MEAN RELEASE THE FILE POINTED TO 52560000=16276000=
|
|
BY THE DESTINATION ADDRESS. 52565000=16277000=
|
|
THE MONITOR BIT IS SET IN INFO FOR THE LOCAL VARIABLE SO 52570000=16278000=
|
|
THAT ACUTAL PARAPART MAY BE INFORMED LATER THAT A FILE 52575000=16279000=
|
|
MUST BE PASSED FOR THIS FORMAL PARAMETER; 52580000=16280000=
|
|
COMMENT INDEXS COMPILE STATEMENTS BEGINING WITH SI,DI,CI,TALLY 52585000=16290000=
|
|
OR LOCALIDS . 52590000=16291000=
|
|
THREE CASES PRESENT THEMSELVES, 52595000=16292000=
|
|
LETING X BE EITHER OF SI,DI,CI OR TALLY, THEY ARE: 52600000=16293000=
|
|
CASE I LOCLID ~ X 52605000=16294000=
|
|
CASE II X ~ X ... 52610000=16295000=
|
|
CASE III X ~ EITHER LOC,LOCLID,SC OR DC. 52615000=16296000=
|
|
THE VARIABLE "INDEX" IS COMPUTED,DEPENDING UPON WHICH 52620000=16297000=
|
|
CASE EXISTS,SUCH THAT ARRAY ELEMENT "MACRO[INDEX]"CONTAINS52625000=16298000=
|
|
THE CODE TO BE EMITTED. 52630000=16299000=
|
|
EACH ELEMENT OF MACRO HAS 1-3 SYLLABLES ORDERED FROM 52635000=16300000=
|
|
RIGHT TO LEFT, UNUSED SYLLABLES MUST = 0. EACH MACRO 52640000=16301000=
|
|
MAY REQUIRE AT MOST ONE REPEAT PART. 52645000=16302000=
|
|
IN THIS PROCEDURE,INDEXS,THE VARIABLE "ADDR" CONTAINS THE 52650000=16303000=
|
|
PROPER REPEAT PART BY THE TIME THE LABEL "GENERATE" IS 52655000=16304000=
|
|
ENCOUNTERED. THE SYLLABLES ARE FETCHED FROM MACRO[TYPE] 52660000=16305000=
|
|
ONE AT A TIME AND IF THE REPEAT PART ^= 0 THEN"ADDR" IS 52665000=16306000=
|
|
USED AS THE REPEAT PART,THUS BUILDING A SYLLABLE WITH 52670000=16307000=
|
|
THE PROPER ADDRESS AND OPERATOR . 52675000=16308000=
|
|
NOTE: IF MACRO[TYPE] = 0 THEN THIS SIGNIFIES A SYNTAX 52680000=16309000=
|
|
ERROR. ; 52685000=16310000=
|
|
PROCEDURE INDEXS; 52690000=16311000=
|
|
BEGIN 52695000=16312000=
|
|
LABEL 52700000=16313000=
|
|
EXIT, 52705000=16313000=
|
|
GENERATE, 52710000=16313000=
|
|
L, 52715000=16313000=
|
|
L1; 52720000=16313000=
|
|
INTEGER 52725000=16314000=
|
|
TCLASS, 52730000=16314000=
|
|
INDEX, 52735000=16314000=
|
|
ADDR, 52740000=16314000=
|
|
J; 52745000=16314000=
|
|
TCLASS:= ELCLASS; 52750000=16315000=
|
|
IF STEPI ^= ASSIGNOP THEN 52755000=16316000=
|
|
BEGIN 52760000=16316000=
|
|
ERR(251); 52765000=16316000=
|
|
GO TO EXIT 52770000=16316000=
|
|
END; 52775000=16316000=
|
|
IF TCLASS = LOCLID THEN 52780000=16317000=
|
|
BEGIN 52785000=16318000=
|
|
IF SIV > STEPI OR ELCLASS > TALLYV THEN 52790000=16319000=
|
|
GO TO L; 52795000=16319000=
|
|
INDEX:= 32+ELCLASS-SIV; 52800000=16320000=
|
|
ADDR:= ELBAT[I-2].ADDRESS; 52805000=16321000=
|
|
GO TO GENERATE; 52810000=16322000=
|
|
END; 52815000=16323000=
|
|
IF TCLASS = STEPI THEN 52820000=16324000=
|
|
BEGIN 52825000=16325000=
|
|
IF STEPI ^= ADDOP OR STEPI ^= LITNO AND ELCLASS ^= LOCLID THEN 52830000=16327000=
|
|
GO TO L; 52835000=16327000=
|
|
INDEX:= TCLASS-SIV+REAL(ELBAT[I-1].ADDRESS = SUB)*4+ 52840000=16330000=
|
|
REAL(ELCLASS = LOCLID)*8; 52845000=16330000=
|
|
END 52850000=16333000=
|
|
ELSE 52855000=16333000=
|
|
BEGIN 52860000=16333000=
|
|
INDEX:= TCLASS-SIV+(IF ELCLASS = LOCLID THEN 16 ELSE IF ELCLASS 52865000=16338000=
|
|
= LOCV THEN 20 ELSE IF ELCLASS = SCV THEN 24 ELSE IF ELCLASS 52870000=16338000=
|
|
= DCV THEN 28 ELSE 25); 52875000=16338000=
|
|
IF ELCLASS = LOCV THEN 52880000=16339000=
|
|
IF STEPI ^= LOCLID THEN 52885000=16340000=
|
|
GO TO L; 52890000=16340000=
|
|
IF ELCLASS = LITNO AND TCLASS = TALLYV THEN 52895000=16341000=
|
|
BEGIN 52900000=16342000=
|
|
EMITC(ELBAT[I].ADDRESS, SEC); 52905000=16342000=
|
|
GO TO EXIT 52910000=16342000=
|
|
END; 52915000=16342000=
|
|
END; 52920000=16343000=
|
|
ADDR:= ELBAT[I].ADDRESS; 52925000=16344000=
|
|
GENERATE: 52930000=16346000=
|
|
IF MACRO[INDEX] = 0 THEN 52935000=16346000=
|
|
L: 52940000=16347000=
|
|
BEGIN 52945000=16347000=
|
|
ERR(250); 52950000=16347000=
|
|
GO TO EXIT 52955000=16347000=
|
|
END; 52960000=16347000=
|
|
J:= 8; 52965000=16348000=
|
|
TCLASS:= 0; 52970000=16348000=
|
|
L1: EBCDICBUFF[0]:= TCLASS; 52975000=16349000=
|
|
MOVECHARACTERS(2, MACRO, INDEX, J:= J-2, EBCDICBUFF, 0, 6); 52976000
|
|
TCLASS:= EBCDICBUFF[0]; 52978000
|
|
IF TCLASS ^= 0 THEN 52980000=16350000=
|
|
BEGIN 52985000=16351000=
|
|
EMITC(IF TCLASS >= 64 THEN ADDR ELSE 0, TCLASS); 52990000=16352000=
|
|
GO TO L1 52995000=16354000=
|
|
END; 53000000=16354000=
|
|
EXIT: 53005000=16355000=
|
|
END INDEXS; 53010000=16355000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%53015000=16355000=
|
|
COMMENT DSS COMPILES DESTINATION STREAM STATEMENTS. 53020000=16356000=
|
|
DS:= LIT"STRING" IS HANDLED AS A SPECIAL CASE BECAUE THE 53025000=16357000=
|
|
STRING MUST BE SCANED FROM RIGHT TO LEFT,REPEATEDLY IF 53030000=16358000=
|
|
NECESSARY, AND EMITTED TO THE PROGRAM STREAM. IN 53035000=16359000=
|
|
ALL OTHER CASES,THE ELBAT WORD CONTAINS THE OPERATOR IN 53040000=16360000=
|
|
THE OPCODE FIELD ; 53045000=16361000=
|
|
PROCEDURE DSS; 53050000=16362000=
|
|
BEGIN 53055000=16363000=
|
|
INTEGER 53060000=16364000=
|
|
ADDR, 53065000=16364000=
|
|
J, 53070000=16364000=
|
|
K, 53075000=16364000=
|
|
L, 53080000=16364000=
|
|
T; 53085000=16364000=
|
|
LABEL 53090000=16365000=
|
|
EXIT, 53095000=16365000=
|
|
L1; 53100000=16365000=
|
|
DEFINE 53105000=16366000=
|
|
OPCODE = [20:6] #; 53110000=16366000=
|
|
IF STEPI ^= ASSIGNOP THEN 53115000=16367000=
|
|
BEGIN 53120000=16367000=
|
|
ERR(251); 53125000=16367000=
|
|
GO TO EXIT 53130000=16367000=
|
|
END; 53135000=16367000=
|
|
IF STEPI = LOCLID THEN 53140000=16368000=
|
|
BEGIN 53145000=16369000=
|
|
EMITC(ELBAT[I].ADDRESS, CRF); 53150000=16370000=
|
|
ADDR:= 0; 53155000=16371000=
|
|
IF STEPI = LITV THEN 53160000=16372000=
|
|
GO TO L1 53165000=16374000=
|
|
END 53170000=16374000=
|
|
ELSE 53175000=16374000=
|
|
IF ELCLASS = LITNO THEN 53180000=16374000=
|
|
BEGIN 53185000=16375000=
|
|
ADDR:= ELBAT[I].ADDRESS; 53190000=16376000=
|
|
STEPIT; 53195000=16376000=
|
|
END 53200000=16378000=
|
|
ELSE 53205000=16378000=
|
|
ADDR:= 1; 53210000=16378000=
|
|
IF Q = 6"4FILL0" THEN 53215000=16378500=
|
|
EMITC(ADDR, 10) 53220000=16378500=
|
|
ELSE %E 53225000=16378500=
|
|
IF ELCLASS = TRNSFER THEN 53230000=16379000=
|
|
EMITC(ADDR, ELBAT[1].OPCODE) 53235000=16380000=
|
|
ELSE 53240000=16380000=
|
|
IF ELCLASS = LITV THEN 53245000=16381000=
|
|
BEGIN 53250000=16382000=
|
|
EMITC(ADDR, TRP); 53255000=16383000=
|
|
IF STEPI ^= STRNGCON THEN 53260000=16384000=
|
|
BEGIN 53265000=16384500=
|
|
ERR(255); 53270000=16384500=
|
|
GO TO EXIT 53275000=16384500=
|
|
END; 53280000=16384500=
|
|
IF ADDR MOD 2 ^= 0 THEN 53285000=16385000=
|
|
BEGIN 53290000=16386000=
|
|
EMIT(ACCUM[1].[29:6]); 53295000=16387000=
|
|
J:= 1; 53300000=16387000=
|
|
END; 53305000=16388000=
|
|
FOR K:= J+2 STEP 2 UNTIL ADDR DO 53310000=16389000=
|
|
BEGIN 53315000=16390000=
|
|
FOR L:= 6, 7 DO 53320000=16391000=
|
|
BEGIN 53322000
|
|
EBCDICBUFF[0]:= T; 53324000
|
|
MOVECHARACTERS(1, ACCUM, 1, 53325000=16393000=
|
|
2+(IF J:= J+1 > COUNT THEN J:= 1 ELSE J), 53330000=16393000=
|
|
EBCDICBUFF, 0, L); 53331000
|
|
T:= EBCDICBUFF[0]; 53332000
|
|
END; 53333000
|
|
EMIT(T); 53335000=16394000=
|
|
END 53340000=16396000=
|
|
END 53345000=16397000=
|
|
ELSE 53350000=16397000=
|
|
L1: ERR(250); 53355000=16397000=
|
|
EXIT: 53360000=16398000=
|
|
END DSS; 53365000=16398000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%53370000=16398000=
|
|
COMMENT SKIPS COMPILES THE SKIP BIT STATEMENT. 53375000=16399000=
|
|
IF THE REPEAT INDEX IS A LOCALID THEN A CRF IS EMITTED. 53380000=16400000=
|
|
A BSS OR BSD IS THEN EMITTED FOR SKIP SOURCE BITS (SB) 53385000=16401000=
|
|
OR SKIP DESTINATION BITS (DB) RESPECTIVELY ; 53390000=16402000=
|
|
PROCEDURE SKIPS; 53395000=16403000=
|
|
BEGIN 53400000=16404000=
|
|
REAL 53405000=16405000=
|
|
ADDR; 53410000=16405000=
|
|
IF STEPI = LOCLID THEN 53415000=16406000=
|
|
BEGIN 53420000=16407000=
|
|
EMITC(ELBAT[I].ADDRESS, CRF); 53425000=16408000=
|
|
ADDR:= 0; 53430000=16408000=
|
|
STEPIT; 53435000=16408000=
|
|
END 53440000=16410000=
|
|
ELSE 53445000=16410000=
|
|
IF ELCLASS = LITNO THEN 53450000=16410000=
|
|
BEGIN 53455000=16411000=
|
|
ADDR:= ELBAT[I].ADDRESS; 53460000=16412000=
|
|
STEPIT 53465000=16413000=
|
|
END 53470000=16414000=
|
|
ELSE 53475000=16414000=
|
|
ADDR:= 1; 53480000=16414000=
|
|
IF ELCLASS = SBV THEN 53485000=16415000=
|
|
EMITC(ADDR, BSS) 53490000=16416000=
|
|
ELSE 53495000=16416000=
|
|
IF ELCLASS = DBV THEN 53500000=16417000=
|
|
EMITC(ADDR, BSD) 53505000=16418000=
|
|
ELSE 53510000=16418000=
|
|
ERR(250); 53515000=16418000=
|
|
END SKIPS; 53520000=16419000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%53525000=16419000=
|
|
COMMENT JUMPS COMPILES JUMP OUT AND JUMP OUT TO STATEMENTS. 53530000=16420000=
|
|
JUMP OUT TO STATEMENTS CAUSE JUMP LEVEL TO BE SET TO 53535000=16421000=
|
|
THE NUMBER OF LEVELS SPECIFIED. THEN THIS NUMBER OF 53540000=16422000=
|
|
JNS ARE EMITTED AND GOTOS IS CALLED TO COMPILE THE 53545000=16423000=
|
|
JUMP INSTRUCTION. 53550000=16424000=
|
|
SIMPLE JUMP OUTS ARE HANDLED BY EMITTING ONE JNS,ENTERING 53555000=16425000=
|
|
A PSEUDO STLABID IN INFO AND SETTING ELBAT[I] SUCH THAT 53560000=16426000=
|
|
THE GOTOS PROCEDURE WILL PERFORM THE ACTION OF SETTING 53565000=16427000=
|
|
UP THE LINKS FOR LATER FIX UPS. THE NEST STATEMENT CAUSES 53570000=16428000=
|
|
THESE FIX UPS(IF EMITTING OF JUMP INSTRUCTIONS) BY CALLING53575000=16429000=
|
|
GO TOS WHEN THE RIGHT PAREN IS ENCOUNTERED. ; 53580000=16430000=
|
|
PROCEDURE JUMPS; 53585000=16431000=
|
|
BEGIN 53590000=16432000=
|
|
JUMPLEVEL:= 1; 53595000=16433000=
|
|
IF STEPI ^= DECLARATORS THEN 53600000=16434000=
|
|
IF ACCUM[1] ^= 6"3OUT00" THEN 53605000=16434000=
|
|
FLAG(261); 53610000=16434100=
|
|
IF STEPI = LITNO THEN 53615000=16435000=
|
|
JUMPLEVEL:= ELBAT[I].ADDRESS 53620000=16436000=
|
|
ELSE 53625000=16436000=
|
|
BEGIN 53630000=16436000=
|
|
IF ELCLASS ^= TOV AND ELCLASS ^= STLABID THEN 53635000=16437000=
|
|
BEGIN 53640000=16438000=
|
|
COMMENT SIMPLE JUMP OUT STATEMENT; 53645000=16439000=
|
|
IF JOINFO = 0 THEN 53650000=16440000=
|
|
BEGIN 53655000=16441000=
|
|
JOINFO:= NEXTINFO; 53660000=16442000=
|
|
PUTNBUMP 53665000=16444000=
|
|
(STACKHEAD[0], LINK & (STLABID*2+1)[45:7:8] & 2[20:7:8]); 53670000=16444000=
|
|
PUTNBUMP(0 & (JOINFO-LASTINFO)[43:7:8]); 53675000=16445000=
|
|
PUTNBUMP(0); 53680000=16446000=
|
|
LASTINFO:= JOINFO; 53685000=16447000=
|
|
END; 53690000=16448000=
|
|
ELBAT[I:= I-1]:= TAKE(JOINFO) & JOINFO[12:12:13]; 53695000=16449000=
|
|
END; 53700000=16450000=
|
|
I:= I-1; 53705000=16450000=
|
|
END; 53710000=16451000=
|
|
FOR GT1:= 1 STEP 1 UNTIL JUMPLEVEL DO 53715000=16452000=
|
|
EMIT(JNS); 53720000=16453000=
|
|
GOTOS; 53725000=16454000=
|
|
END JUMPS; 53730000=16455000=
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%53735000=16455000=
|
|
COMMENT STREAMSTMT ENVOKES THE APPROPRIATE PROCEDURE TO HANDLE 53740000=16456000=
|
|
THE VARIOUS AND SUNDRY STREAM PROCEDURE STATEMENTS. 53745000=16457000=
|
|
THE STATEMENTS ARE BROKEN DOWN AS FOLLOWS: 53750000=16458000=
|
|
IDENTIFIED BY PROCEDURE ENVOKED 53755000=16459000=
|
|
END GO TO FINI 53760000=16460000=
|
|
SEMICOLON GO TO FINI 53765000=16461000=
|
|
) GO TO FINI 53770000=16462000=
|
|
IF IFS 53775000=16463000=
|
|
GO GOTOS 53780000=16464000=
|
|
RELEASE RELEASES 53785000=16465000=
|
|
BEGIN COMPOUNDTAIL 53790000=16466000=
|
|
SI,DI,CI,TALLY,LOCALID INDEXS 53795000=16467000=
|
|
DS DSS 53800000=16468000=
|
|
SKIP SKIPS 53805000=16469000=
|
|
JUMP JUMPS 53810000=16470000=
|
|
LABELID LABELS 53815000=16471000=
|
|
LITERAL NO.,LOCALID( NESTS 53820000=16472000=
|
|
UPON EXITING,STREAMSTMT ASSURES THAT "I" POINTS TO 53825000=16473000=
|
|
THE SEMICOLON ,END OR ) IN SYNTACICALLY CORRECT PROGRAMS; 53830000=16474000=
|
|
LABEL 53835000=16475000=
|
|
L, 53840000=16475000=
|
|
L1, 53845000=16475000=
|
|
L2, 53850000=16475000=
|
|
L3, 53855000=16475000=
|
|
L4, 53860000=16475000=
|
|
L5, 53865000=16475000=
|
|
L6, 53870000=16475000=
|
|
L7, 53875000=16475000=
|
|
L8, 53880000=16475000=
|
|
L9, 53885000=16475000=
|
|
L10, 53890000=16475000=
|
|
EXIT, 53895000=16475000=
|
|
FINI, 53900000=16475000=
|
|
START; 53905000=16475000=
|
|
SWITCH 53910000=16476000=
|
|
TYPE:= FINI, 53915000=16476000=
|
|
L, 53920000=16476000=
|
|
FINI, 53925000=16476000=
|
|
L3, 53930000=16476000=
|
|
L4, 53935000=16476000=
|
|
L5, 53940000=16476000=
|
|
L6, 53945000=16476000=
|
|
L7, 53950000=16476000=
|
|
L7, 53955000=16476000=
|
|
L7, 53960000=16476000=
|
|
L7, 53965000=16476000=
|
|
L8, 53970000=16476000=
|
|
L9, 53975000=16476000=
|
|
L10; 53980000=16476000=
|
|
START: 53985000=16477000=
|
|
GO TO TYPE[ELCLASS-ENDV+1]; 53990000=16477000=
|
|
IF ELCLASS = RTPAREN THEN 53995000=16478000=
|
|
GO TO FINI; 54000000=16478000=
|
|
IF ELCLASS = STLABID THEN 54005000=16481000=
|
|
GO TO L2; 54010000=16481000=
|
|
IF ELCLASS < IDMAX AND ELCLASS ^= LOCLID THEN 54015000=16482100=
|
|
BEGIN 54020000=16482100=
|
|
DECLARELABEL; 54025000=16482200=
|
|
GO TO L2; 54030000=16482200=
|
|
END; 54035000=16482200=
|
|
IF ELCLASS = LITNO OR ELCLASS = LOCLID AND TABLE(I+1) = LFTPAREN THEN 54040000=16482400=
|
|
GO TO L1; 54045000=16482400=
|
|
IF ELCLASS = LOCLID THEN 54050000=16482500=
|
|
GO TO L7; 54055000=16482500=
|
|
L: 54060000=16483000=
|
|
ERR(250); 54065000=16483000=
|
|
GO TO FINI; 54070000=16483000=
|
|
L1: 54075000=16484000=
|
|
NESTS; 54080000=16484000=
|
|
GO TO EXIT; 54085000=16484000=
|
|
L2: 54090000=16485000=
|
|
LABELS; 54095000=16485000=
|
|
GO TO START; 54100000=16485000=
|
|
L3: 54105000=16486000=
|
|
IFS; 54110000=16486000=
|
|
GO TO FINI; 54115000=16486000=
|
|
L4: 54120000=16487000=
|
|
GOTOS; 54125000=16487000=
|
|
GO TO EXIT; 54130000=16487000=
|
|
L5: 54135000=16489000=
|
|
L6: 54140000=16489000=
|
|
I:= I+1; 54145000=16489000=
|
|
COMPOUNDTAIL; 54150000=16489000=
|
|
GO TO FINI; 54155000=16489000=
|
|
L7: 54160000=16490000=
|
|
INDEXS; 54165000=16490000=
|
|
GO TO EXIT; 54170000=16490000=
|
|
L8: 54175000=16491000=
|
|
DSS; 54180000=16491000=
|
|
GO TO EXIT; 54185000=16491000=
|
|
L9: 54190000=16492000=
|
|
SKIPS; 54195000=16492000=
|
|
GO TO EXIT; 54200000=16492000=
|
|
L10: 54205000=16493000=
|
|
JUMPS; 54210000=16493000=
|
|
GO TO EXIT; 54215000=16493000=
|
|
EXIT: 54220000=16494000=
|
|
STEPIT; 54225000=16494000=
|
|
FINI: 54230000=16495000=
|
|
END STREAMSTMT; 54235000=16495000=
|
|
CODE[0]:= I; 54240000=16495100=
|
|
TIME1:= TIME(1); 54245000=16495200=
|
|
PROGRAM; 54250000=16495200=
|
|
ENDOFITALL: 54255000=16495210=
|
|
END MAIN BLOCK 54260000=16495300=
|
|
END. 54265000=16495300=
|