COMPILR
IDENT COMPILR COMPILR 1
TITLE COMPILER COMPILR 2
* FOR A LISTING OF THE SNODEF COMDECK, CALLED BELOW, SEE MAINLUP. COMPILR 3
LIST -L COMPILR 4
*CALL,SNODEF COMPILR 5
LIST L COMPILR 6
EJECT COMPILR 7
* ERROR COMPILR 8
EXT FATBUMP,RTERROR COMPILR 9
* MAINLUP COMPILR 10
* THE FOLLOWING IS A COPY OF MICOP TABLE IN MAINLUP COMPILR 11
* TO DEFINE THE MICRO OPERATION CODES COMPILR 12
* COMPILR 13
MACRO MICOP,PARAM COMPILR 14
IF -DEF,CC,1 COMPILR 15
CC SET -1 COMPILR 16
CC SET CC+1 COMPILR 17
PARAM EQU CC COMPILR 18
ENDM COMPILR 19
* COMPILR 20
XNOOP MICOP COMPILR 21
XCATCHK MICOP COMPILR 22
XALTCHK MICOP COMPILR 23
XPMCHK MICOP COMPILR 24
XASCHK MICOP COMPILR 25
XMCHEK MICOP COMPILR 26
XDCHEK MICOP COMPILR 27
XCONCAT MICOP COMPILR 28
XALT MICOP COMPILR 29
XADD MICOP COMPILR 30
XSUBTR MICOP COMPILR 31
XUNADD MICOP COMPILR 32
XUNSUB MICOP COMPILR 33
XMULT MICOP COMPILR 34
XDIV MICOP COMPILR 35
XEXP MICOP COMPILR 36
XPM MICOP COMPILR 37
XPRD MICOP COMPILR 38
XDOL MICOP COMPILR 39
XSTAR MICOP COMPILR 40
XASGN MICOP COMPILR 41
XASGNPM MICOP COMPILR 42
XSUBCM MICOP COMPILR 43
XPARAM MICOP COMPILR 44
XSKIP MICOP COMPILR 45
XINDRCN MICOP COMPILR 46
XINDRCV MICOP COMPILR 47
XNOEND MICOP COMPILR 48
XZERO MICOP COMPILR 49
XNULL MICOP COMPILR 50
XARRAY MICOP COMPILR 51
XARRAYN MICOP COMPILR 52
XARRAYV MICOP COMPILR 53
XCALL MICOP COMPILR 54
XNAME MICOP COMPILR 55
XOPRND MICOP COMPILR 56
XGOX EQU CC COMPILR 57
XGOS MICOP COMPILR 58
XGOF MICOP COMPILR 59
XGOTO MICOP COMPILR 60
XGOTOT MICOP COMPILR 61
XGOTOC MICOP COMPILR 62
XGOREL MICOP COMPILR 63
XNOFAIL MICOP COMPILR 64
* COMPILR 65
EXT MCOPTBL COMPILR 66
* UTILITY COMPILR 67
EXT ITOS,SSTOS,STOSFX6,PTOPX4,ICX1X6,ZROX7,SSTOSF,ITOSF COMPILR 68
EXT ITOSFTP,SOPERND,X1VALUE,FREESVD,SASSIGN,INDRCT,INDRX COMPILR 69
EXT SEARCH,FREESTR COMPILR 70
EXT DECFIL,SCHHBC COMPILR 71
EXT TENTH,TEN COMPILR 72
* STORMAN COMPILR 73
EXT PUSHSTK,RESERVE,MORFREE,GETSTAK,GRBCOLL,RESHB COMPILR 74
* POST COMPILR 75
EXT POST0,SMESS COMPILR 76
* IO COMPILR 77
EXT ABT,BLANKS COMPILR 78
EXT CALLCIO,CALLRCL,PEEKWD,GETWD,SKIPWDS,PUTWD,CHKOUTB COMPILR 79
EXT CLOSE1 COMPILR 80
* PROCS COMPILR 81
EXT LUNDFWD COMPILR 82
* COMPILR COMPILR 83
ENTRY PRIORJ,ST1 COMPILR 84
ENTRY DATE,TIME COMPILR 85
ENTRY PASS1,NEWUNIT,GETNEXT COMPILR 86
ENTRY P2TRCS,P2TRCT,P3TRCS,P3TRCT,P4TRCS,P4TRCT COMPILR 87
* COMPILR 88
* DECLARE SOME PARAMETERS COMPILR 89
* COMPILR 90
BUFF5 EQU 400B . SPACE REQUESTED BY THE COMPILER COMPILR 91
LINPPG EQU 56 . LINES AVAILABLE/PAGE COMPILR 92
TITLE PASS 2 CONTROL TABLE COMPILR 93
* COMPILR 94
* PASS 2 STATE-MACHINE STATES COMPILR 95
* COMPILR 96
ST1 EQU 0 COMPILR 97
ST2 EQU 4 COMPILR 98
ST3 EQU 8 COMPILR 99
ST4 EQU 12 COMPILR 100
ST5 EQU 16 COMPILR 101
ST6 EQU 20 COMPILR 102
ST7 EQU 24 COMPILR 103
ST8 EQU 28 COMPILR 104
ST9 EQU 32 COMPILR 105
ST10 EQU 36 COMPILR 106
ST11 EQU 40 COMPILR 107
ST12 EQU 44 COMPILR 108
ST13 EQU 48 COMPILR 109
ST14 EQU 52 COMPILR 110
ST15 EQU 56 COMPILR 111
* COMPILR 112
* PASS 2 OPERAND SITUATIONS COMPILR 113
* COMPILR 114
OPSVAR EQU -1 . IDENTIFIER OPERAND COMPILR 115
OPSLIT EQU -2 . LITERAL STRING COMPILR 116
OPSINT EQU -3 . INTEGER CONSTANT COMPILR 117
OPSREAL EQU -4 . REAL CONSTANT COMPILR 118
OPSEXP EQU -5 . EXPRESSION AS OPERAND COMPILR 119
OPSSPEC EQU -6 . ARRAY OR FUNCTION OPERAND COMPILR 120
* COMPILR 121
* SOME PASS 2 INPUT VALUES COMPILR 122
* COMPILR 123
P2VAR EQU OPSVAR . IDENTIFIER COMPILR 124
P2LIT EQU OPSLIT . LITERAL STRING COMPILR 125
P2INT EQU OPSINT . INTEGER CONSTANT COMPILR 126
P2REAL EQU OPSREAL . REAL CONSTANT COMPILR 127
* COMPILR 128
MACRO HEAD,X,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O COMPILR 129
X EQU *-P2TBL COMPILR 130
VFD 4/O,4/N,4/M,4/L,4/K,4/J,4/I,4/H,4/G,4/F,4/E,4/D,4/C,4/B,4COMPILR 131
,/A COMPILR 132
ENDM COMPILR 133
* COMPILR 134
TAIL MACRO A,B,C,D,E COMPILR 135
VFD 8/A,8/B,8/C,18/D,18/E COMPILR 136
ENDM COMPILR 137
* COMPILR 138
EJECT COMPILR 139
P2TBL EQU *-1 COMPILR 140
P2PLUS HEAD 0,0,13,13,0,0,0,0,1,1,2,2,0,0,2 COMPILR 141
TAIL 176B,0,P3PLUS,ST10,OUTP2 COMPILR 142
TAIL 176B,0,P3PLUS,ST12,OUTP2 COMPILR 143
P2MINUS HEAD 0,0,10,10,0,0,0,0,1,1,2,2,0,0,2 COMPILR 144
TAIL 176B,0,P3MIN,ST10,OUTP2 COMPILR 145
TAIL 176B,0,P3MIN,ST12,OUTP2 COMPILR 146
P2MULT HEAD 0,0,7,7,0,0,0,0,1,1,2,2,0,0,2 COMPILR 147
TAIL 176B,0,P3MULT,ST10,OUTP2 COMPILR 148
TAIL 176B,0,P3MULT,ST12,OUTP2 COMPILR 149
P2DIV HEAD 0,0,4,4,0,0,0,0,1,1,2,2,0,0,2 COMPILR 150
TAIL 176B,0,P3DIV,ST10,OUTP2 COMPILR 151
TAIL 176B,0,P3DIV,ST12,OUTP2 COMPILR 152
P2EXP HEAD 0,0,1,1,0,0,0,0,2,2,3,3,0,0,2 COMPILR 153
TAIL 176B,0,0,0,ACT2 COMPILR 154
TAIL 176B,0,P3EXP,ST10,OUTP2 COMPILR 155
TAIL 176B,0,P3EXP,ST12,OUTP2 COMPILR 156
P2UNPL HEAD 0,0,0,0,0,0,0,0,1,0,2,0,0,0,2 COMPILR 157
TAIL 200B,0,P3UNPL,ST10,OUTP2 COMPILR 158
TAIL 200B,0,P3UNPL,ST12,OUTP2 COMPILR 159
P2UNMIN HEAD 0,0,0,0,0,0,0,0,1,0,2,0,0,0,2 COMPILR 160
TAIL 200B,0,P3UNMIN,ST10,OUTP2 COMPILR 161
TAIL 200B,0,P3UNMIN,ST12,OUTP2 COMPILR 162
P2USTAR HEAD 0,0,0,0,0,0,0,0,0,0,1,1,0,0,1 COMPILR 163
TAIL 200B,ST12,P3STAR,ST4,ACT3 COMPILR 164
P2PRD HEAD 0,0,7,7,0,0,0,0,0,0,1,1,0,0,1 COMPILR 165
TAIL 176B,ST12,P3PRD,ST4,ACT3 COMPILR 166
P2DOL HEAD 0,0,5,5,0,0,0,0,0,0,1,1,0,0,1 COMPILR 167
TAIL 176B,ST12,P3DOL,ST4,ACT3 COMPILR 168
P2ALT HEAD 0,0,3,3,0,0,0,0,0,0,1,1,0,0,1 COMPILR 169
TAIL 176B,0,P3ALT,ST11,OUTP2 COMPILR 170
P2BLANK HEAD 2,3,1,1,0,0,4,0,5,5,6,6,0,0,6 COMPILR 171
TAIL 176B,0,0,0,ACT2 COMPILR 172
TAIL 300B,0,P3LABEL,ST2,ACT4 COMPILR 173
TAIL 176B,ST5,P3PM,ST11,ACT5 COMPILR 174
TAIL 200B,0,0,ST7,PASS2 COMPILR 175
TAIL 176B,0,P3CAT,ST9,OUTP2 COMPILR 176
TAIL 176B,0,P3CAT,ST11,OUTP2 COMPILR 177
P2UNPRD HEAD 0,1,2,0,0,0,0,0,3,3,4,4,0,0,4 COMPILR 178
TAIL 200B,ST2,P3NAME,ST4,ACT20 COMPILR 179
TAIL 200B,0,P3NAME,ST4,OUTP2 COMPILR 180
TAIL 200B,ST10,P3NAME,ST4,ACT3 COMPILR 181
TAIL 200B,ST12,P3NAME,ST4,ACT3 COMPILR 182
P2UNDOL HEAD 0,5,1,1,0,0,0,2,3,3,4,4,0,0,4 COMPILR 183
TAIL 200B,0,P3INDR,ST3,OUTP2 COMPILR 184
TAIL 200B,ST7,P3BGTT,ST3,ACT6 COMPILR 185
TAIL 200B,ST10,P3INDR,ST3,ACT3 COMPILR 186
TAIL 200B,ST12,P3INDR,ST3,ACT3 COMPILR 187
TAIL 200B,ST2,P3INDR,ST3,ACT21 COMPILR 188
P2LFTPR HEAD 0,7,1,5,0,0,2,0,3,3,4,4,0,0,4 COMPILR 189
TAIL 300B,ST3,P3LFTPR,ST9,ACT9 COMPILR 190
TAIL 300B,0,P3COND,ST8,OUTP2 COMPILR 191
TAIL 300B,ST10,P3LFTPR,ST9,ACT9 COMPILR 192
TAIL 300B,ST12,P3LFTPR,ST11,ACT9 COMPILR 193
TAIL 100B,ST3,P3LFTPR,ST9,ACT9 COMPILR 194
P2LFTBR HEAD 0,1,2,2,0,0,3,0,4,4,5,5,0,0,5 COMPILR 195
TAIL 374B,ST2,0,ST3,ACT8 COMPILR 196
TAIL 100B,ST3,0,0,ACT13 COMPILR 197
TAIL 300B,ST7,P3BGTC,ST4,ACT14 COMPILR 198
TAIL 100B,ST10,0,0,ACT13 COMPILR 199
TAIL 100B,ST12,0,0,ACT13 COMPILR 200
P2RGTPR HEAD 0,0,14,14,0,0,0,1,2,2,2,2,3,0,15 COMPILR 201
TAIL 100B,0,P3GT,ST7,OUTP2 COMPILR 202
TAIL 176B,0,0,0,ACT11 COMPILR 203
TAIL 176B,0,P3CALL,0,ACT17 COMPILR 204
P2COMMA HEAD 0,0,10,10,0,0,0,0,12,12,12,12,1,2,11 COMPILR 205
TAIL 176B,ST13,P3PARAM,ST15,ACT3 COMPILR 206
TAIL 176B,ST14,P3SUBCM,ST9,ACT3 COMPILR 207
P2RGTBR HEAD 0,0,7,7,0,0,0,0,9,9,9,9,0,1,9 COMPILR 208
TAIL 176B,0,P3RGTBR,0,ACT17 COMPILR 209
P2EQUAL HEAD 0,1,5,5,2,0,0,0,7,7,7,7,0,0,7 COMPILR 210
TAIL 102B,ST6,P3ASGN,ST15,ACT3 COMPILR 211
TAIL 176B,ST6,P3PMA,ST15,ACT18 COMPILR 212
P2CLN HEAD 1,7,2,2,5,6,0,0,4,4,4,4,0,0,3 COMPILR 213
TAIL 301B,0,P3LABEL,ST7,ACT4 COMPILR 214
TAIL 177B,0,0,0,ACT2 COMPILR 215
TAIL 376B,0,0,0,ACT12 COMPILR 216
TAIL 176B,0,0,0,ACT16 COMPILR 217
TAIL 176B,0,P3CLN2,ST7,OUTP2 COMPILR 218
TAIL 176B,0,P3CLN1,ST7,OUTP2 COMPILR 219
TAIL 302B,0,P3CLN2,ST7,OUTP2 COMPILR 220
P2SMCLN HEAD 2,3,4,4,1,5,6,0,7,7,7,7,0,0,8 COMPILR 221
TAIL 177B,0,P3RULE2,ST1,OUTP2 COMPILR 222
TAIL 301B,0,0,0,ACT19 COMPILR 223
TAIL 376B,0,P3RULE2,ST1,OUTP2 COMPILR 224
TAIL 176B,0,0,0,ACT2 COMPILR 225
TAIL 176B,0,P3RULE1,ST1,OUTP2 COMPILR 226
TAIL 200B,0,P3RULE3,ST1,OUTP2 COMPILR 227
TAIL 176B,0,0,0,ACT16 COMPILR 228
TAIL 376B,0,0,0,ACT12 COMPILR 229
AUXPR TAIL 100B,ST13,P3BCALL,ST15,ACT3 COMPILR 230
AUXBR TAIL 100B,ST14,P3LFTBR,ST9,ACT3 COMPILR 231
P2END HEAD 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 COMPILR 232
TAIL 377B,0,P3END,0,OUTP2 COMPILR 233
AUXERR EQU *-P2TBL COMPILR 234
P2ERR3 HEAD 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3 COMPILR 235
+ TAIL 376B,0,0,0,ERRACT3 COMPILR 236
P2ERR2 HEAD 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 COMPILR 237
+ TAIL 376B,0,0,0,ERRACT2 COMPILR 238
P2ERR1 HEAD 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 COMPILR 239
+ TAIL 376B,0,0,0,ERRACT1 COMPILR 240
* COMPILR 241
TITLE PASS3 CONTROL TABLE COMPILR 242
* COMPILR 243
* PASS 3 OPERATOR PRIORITIES COMPILR 244
* COMPILR 245
PRIORA EQU 10 . UNARY $, UNARY ., UNARY *, $, . COMPILR 246
PRIORB EQU 9 . ** COMPILR 247
PRIORC EQU 8 . *, / COMPILR 248
PRIORD EQU 7 . +, -, UNARY +, UNARY - COMPILR 249
PRIORE EQU 6 . CONCATENATION COMPILR 250
PRIORF EQU 5 . ALTERNATION, COMMA, ), ! COMPILR 251
PRIORG EQU 4 . (, ", PATTERN MATCH, END GO TO COMPILR 252
PRIORH EQU 3 . =, ASSIGNPM, GO TO COMPILR 253
PRIORI EQU 2 . :, SEMICOLON COMPILR 254
PRIORJ EQU 1 . STACK BASE COMPILR 255
* COMPILR 256
MACRO TABLE,A,B,C,D,E,F COMPILR 257
A EQU *-P3TBL COMPILR 258
VFD 6/B,12/C,6/D,18/E,18/F COMPILR 259
ENDM COMPILR 260
* COMPILR 261
P3TBL EQU *-1 COMPILR 262
P3RULE1 TABLE 20B,0,PRIORI,0,ARULE1 COMPILR 263
P3RULE2 TABLE 20B,0,PRIORI,XSKIP,ARULE1 COMPILR 264
P3RULE3 TABLE 40B,0,0,0,ARULE1 COMPILR 265
P3RULE4 TABLE 40B,0,0,0,ARULE4 COMPILR 266
P3BCALL TABLE 40B,0,PRIORG,0,ABCALL COMPILR 267
P3LFTBR TABLE 42B,0,PRIORG,XARRAY,ALFTBR COMPILR 268
P3INDR TABLE 40B,XINDRCV,PRIORA,0,STACKX4 COMPILR 269
P3NAME TABLE 50B,0,PRIORA,0,STACKX4 COMPILR 270
P3PM TABLE 20B,XPM,PRIORG,XPMCHK,APM COMPILR 271
P3ASGN TABLE 44B,XASGN,PRIORH,0,AASGN COMPILR 272
P3PMA TABLE 22B,XASGNPM,PRIORH,0,0 COMPILR 273
P3CLN1 TABLE 20B,0,PRIORI,0,PASS3 COMPILR 274
P3CLN2 TABLE 20B,0,PRIORI,XSKIP,PASS3 COMPILR 275
P3UNPL TABLE 2B,XUNADD,PRIORD,XZERO,0 COMPILR 276
P3UNMIN TABLE 2B,XUNSUB,PRIORD,XZERO,0 COMPILR 277
P3PLUS TABLE 22B,XADD,PRIORD,XASCHK,0 COMPILR 278
P3MIN TABLE 22B,XSUBTR,PRIORD,XASCHK,0 COMPILR 279
P3MULT TABLE 22B,XMULT,PRIORC,XMCHEK,0 COMPILR 280
P3DIV TABLE 22B,XDIV,PRIORC,XDCHEK,0 COMPILR 281
P3EXP TABLE 22B,XEXP,PRIORB,XPMCHK,0 COMPILR 282
P3STAR TABLE 16B,XSTAR,PRIORA,0,0 COMPILR 283
P3CAT TABLE 22B,XCONCAT,PRIORE,XCATCHK,0 COMPILR 284
P3ALT TABLE 22B,XALT,PRIORF,XALTCHK,0 COMPILR 285
P3DOL TABLE 36B,XDOL,PRIORA,0,0 COMPILR 286
P3PRD TABLE 36B,XPRD,PRIORA,0,0 COMPILR 287
P3NULL TABLE 0B,0,0,XNULL,PASS3 COMPILR 288
P3PARAM TABLE 20B,0,PRIORF,XPARAM,APARAM COMPILR 289
P3SUBCM TABLE 20B,0,PRIORF,XSUBCM,PASS3 COMPILR 290
P3CALL TABLE 20B,0,PRIORF,0,ACALL COMPILR 291
P3RGTBR TABLE 20B,0,PRIORF,0,ARGTBR COMPILR 292
P3LFTPR TABLE 2B,0,PRIORG,0,0 COMPILR 293
P3RGTPR TABLE 20B,0,PRIORF,0,ARGTPR COMPILR 294
P3END TABLE 40B,0,0,0,AEND COMPILR 295
P3COND TABLE 40B,0,0,0,ACOND COMPILR 296
P3BGTT TABLE 40B,0,PRIORH,0,ABGTT COMPILR 297
P3BGTC EQU P3BGTT COMPILR 298
P3GT TABLE 40B,0,0,0,AGT COMPILR 299
P3GTT TABLE 20B,0,PRIORG,XGOTOT,AGTT COMPILR 300
P3GTC TABLE 20B,0,PRIORG,XGOTOC,AGTT COMPILR 301
P3LABEL TABLE 40B,0,0,0,ALABEL COMPILR 302
* COMPILR 303
P3ENDUN EQU P3CLN1 COMPILR 304
* COMPILR 305
TITLE PASS1: MACROS COMPILR 306
* MACRO TO FETCH NEXT CHARACTER INTO X.XREG (DEFAULT = X.2) COMPILR 307
* FROM THOSE IN X4. COMPILR 308
* COMPILR 309
FETCH MACRO ONEMPTY,XREG COMPILR 310
NG B4,ONEMPTY COMPILR 311
IFC EQ,/XREG// COMPILR 312
AX2 X4,B4 COMPILR 313
BX2 -X0*X2 COMPILR 314
ELSE COMPILR 315
AX.XREG X4,B4 COMPILR 316
BX.XREG -X0*X.XREG COMPILR 317
ENDIF COMPILR 318
SB4 B4-6 COMPILR 319
ENDM COMPILR 320
* COMPILR 321
P1TBL MACRO VAL,FLAGS,ALTVAL,SADD COMPILR 322
IFC EQ,/SADD// COMPILR 323
VFD 6/FLAGS,18/0,18/ALTVAL,18/VAL COMPILR 324
ELSE COMPILR 325
VFD 6/FLAGS,18/SADD-PASS1,18/ALTVAL,18/VAL COMPILR 326
ENDIF COMPILR 327
ENDM COMPILR 328
* COMPILR 329
* DEFINE P1TAB FLAG VALUES; 'P1F.' SYMBOLS ARE AMOUNTS TO SHIFT TO COMPILR 330
* LEFT JUSTIFY THE CORRESPONDING FLAG BIT. COMPILR 331
* COMPILR 332
SLB EQU 1S5 . SUPPRESS LEADING BLANKS COMPILR 333
P1F.SLB EQU 0 COMPILR 334
BUO EQU 1S4 . BINARY/UNARY OPERATOR COMPILR 335
P1F.BUO EQU 1 COMPILR 336
IDC EQU 1S3 . IDENTIFIER CHARACTER COMPILR 337
P1F.IDC EQU 2 COMPILR 338
DIG EQU 1S2 . DIGIT COMPILR 339
P1F.DIG EQU 3 COMPILR 340
TITLE PASS1: CONTROL TABLE COMPILR 341
P1TAB BSS 0 COMPILR 342
* COMPILR 343
P1ESC P1TBL -ESCAPE,SLB COMPILR 344
COMPILR 345
DUP 26 A THROUGH Z COMPILR 346
P1TBL -ID,IDC COMPILR 347
ENDD COMPILR 348
COMPILR 349
DUP 10 0 THROUGH 9 COMPILR 350
P1TBL -INT,IDC+DIG COMPILR 351
ENDD COMPILR 352
COMPILR 353
P1TBL P2UNPL,BUO,P2PLUS + COMPILR 354
P1TBL P2UNMIN,BUO,P2MINUS - COMPILR 355
P1TBL -STAR,BUO,P2MULT,SPC.STAR * COMPILR 356
P1TBL -SLASH,BUO,P2DIV,SPC.SLSH / COMPILR 357
P1TBL -LPAREN,,P2LFTPR ( COMPILR 358
P1TBL P2RGTPR,SLB ) COMPILR 359
P1TBL P2UNDOL,BUO,P2DOL $ COMPILR 360
P1TBL -SUPPRESS,SLB,P2EQUAL = COMPILR 361
P1TBL -BLANK BLANK COMPILR 362
P1TBL -SUPPRESS,SLB,P2COMMA , COMPILR 363
P1TBL -PERIOD,IDC+BUO,P2PRD,SPC.PRD . COMPILR 364
P1TBL P2ERR1 # COMPILR 365
P1TBL -SUPPRESS,,P2LFTBR " COMPILR 366
P1TBL P2RGTBR,SLB ! COMPILR 367
P1TBL -SUPPRESS,SLB,P2CLN : COMPILR 368
P1TBL -LIT NOT EQUAL COMPILR 369
P1TBL P2ERR1 _ COMPILR 370
P1TBL P2ERR2,BUO,P2ALT ] COMPILR 371
P1TBL P2ERR1 & COMPILR 372
P1TBL -LIT @ COMPILR 373
COMPILR 374
DUP 6 ? < > [ \ % COMPILR 375
P1TBL P2ERR1 COMPILR 376
ENDD COMPILR 377
COMPILR 378
P1TBL -SEMI,SLB SEMICOLON COMPILR 379
COMPILR 380
P1EXPON P1TBL P2ERR2,BUO,P2EXP ** COMPILR 381
* COMPILR 382
P1ESCWD VFD 6/0,18/END-PASS1,18/EOSEND-PASS1,18/SEMI-PASS1 COMPILR 383
COMPILR 384
P1EOS EQU 0*100B+0*1 . COMPILR 385
P1EOSEND EQU 0*100B+18*1 . COMPILR 386
P1END EQU 0*100B+36*1 . COMPILR 387
TITLE PASS1: MAIN LOOP COMPILR 388
* COMPILR 389
* COMPILR 390
PASS1 BSS 0 COMPILR 391
* COMPILR 392
SA1 STATWD COMPILR 393
LX1 60-4 COMPILR 394
PL X1,P1LOOPMT COMPILR 395
TRACE . TURN ON TRACE COMPILR 396
TRACE LIST . AND SET MODE TO -LIST- COMPILR 397
* COMPILR 398
P1LOOPMT RJ PASS0 . FILL X4, THE CHARACTER BUFFER COMPILR 399
JP P1LOOP . (PASS0 SETS X0 = HOLE 6) COMPILR 400
* COMPILR 401
P1OUTBLK SX1 P2BLANK COMPILR 402
P1BOUTX1 SB4 B4+6 . BACK UP 1 CHARACTER AND COMPILR 403
P1OUTX1 RJ PASS2 . OUTPUT THE VALUE IN X1 COMPILR 404
SA4 CURWD . RESET THE CHARACTER BUFFER, COMPILR 405
SX0 -CHMASK . AND THE CHARACTER MASK COMPILR 406
P1LOOP FETCH P1LOOPMT . SET X2 = NEXT CHARACTER COMPILR 407
ZR X2,P1LOOPA . SKIP IF AT AND OF LINE COMPILR 408
SA3 P0STWD COMPILR 409
UX3 B2,X3 . GRAB COUNT OF WHOLE WORDS COMPILR 410
SX6 B2 COMPILR 411
LX6 18 COMPILR 412
SX3 B4+6 . GET COLUMN WITHIN CURRENT WORD COMPILR 413
BX6 X6+X3 COMPILR 414
LX6 18 . POSITION WORD COMPILR 415
SA6 ARROWD COMPILR 416
P1LOOPA SA3 P1TAB+X2 COMPILR 417
NOINPUT SX1 X3 . SET X1 = VAL FIELD OF P1TAB ENTRY COMPILR 418
PL X1,P1OUTX1 . OUTPUT THE TOKEN IN X1 COMPILR 419
SB5 X1 . VALUE FIELD COMPILR 420
SB5 -B5 . CONTAINED COMPLEMENT COMPILR 421
JP B5 . OF ACTION ADDRESS COMPILR 422
* COMPILR 423
SUPMT NO COMPILR 424
BX6 X3 COMPILR 425
SA6 P1TEMP1 COMPILR 426
RJ PASS0 . REPLENISH X4 COMPILR 427
SA3 P1TEMP1 COMPILR 428
* COMPILR 429
* SUPPRESS TRAILING BLANKS. COMPILR 430
* COMPILR 431
SUPPRESS FETCH SUPMT COMPILR 432
SUPNOINP IFCH ( ),SUPPRESS . SKIP BLANKS COMPILR 433
AX3 18 COMPILR 434
SX1 X3 . SET X1 = ALTVAL FIELD OF P1TAB ENT COMPILR 435
JP P1BOUTX1 . BACK UP 1 CHARACTER AND OUTPUT X1 COMPILR 436
* COMPILR 437
BLANKMT RJ PASS0 . REPLENISH X4 COMPILR 438
* COMPILR 439
* PROCESS A BLANK. COMPILR 440
* COMPILR 441
BLANK FETCH BLANKMT COMPILR 442
IFCH ( ),BLANK . SKIP MULTIPLE BLANKS COMPILR 443
SA3 P1TAB+X2 COMPILR 444
* BX5 X3 COMPILR 445
* LX5 P1F.SLB . NOTE SYMBOL = 0 COMPILR 446
* NG X5,NOINPUT COMPILR 447
NG X3,NOINPUT . = , : ) ! COMPILR 448
BX5 X3 COMPILR 449
LX5 P1F.BUO COMPILR 450
PL X5,P1OUTBLK . NOT A BINARY/UNARY OPERATOR COMPILR 451
IS.BINUN FETCH IS.BU.MT COMPILR 452
IFCH ( ),SUPPRESS . TRAILING BLANK => BINARY OPERATOR COMPILR 453
BX5 X3 COMPILR 454
AX5 18+18 . RIGHT ADJUST AND EXTRACT COMPILR 455
SB5 X5 . THE SPECIAL ACTION ADDRESS FIELD COMPILR 456
NZ B5,P1JPB5 . DO SPECIAL ACTION FOR COMPOSITE OP COMPILR 457
SX6 X3 . VALUE FIELD (CONTAINS UNARY OP) COMPILR 458
P1OUTUX6 SA6 P1TEMP1 . SAVE UNARY TOKEN COMPILR 459
SB4 B4+6 . BACK UP 1 CHARACTER COMPILR 460
SX1 P2BLANK COMPILR 461
RJ PASS2 COMPILR 462
SA1 P1TEMP1 . OUTPUT COMPILR 463
JP P1OUTX1 . SAVED TOKEN COMPILR 464
* COMPILR 465
IS.BU.MT BX6 X3 COMPILR 466
SA6 P1TEMP1 COMPILR 467
RJ PASS0 . REPLENISH X4 COMPILR 468
SA3 P1TEMP1 COMPILR 469
JP IS.BINUN COMPILR 470
* COMPILR 471
* FOLLOWING ARE THE SPECIAL ACTIONS FOR * / AND PERIOD: COMPILR 472
* COMPILR 473
SPC.STAR IFCH *,EXPON . ** IS EXPONENTIATION COMPILR 474
SX6 P2USTAR . OUTPUT COMPILR 475
JP P1OUTUX6 . COMPILR 476
* COMPILR 477
SPC.SLSH IFCH /,ALT . // IS SYNONYM FOR ] COMPILR 478
CHK.RBR IFCH ),RIGHTBR . /) IS SYNONYM FOR ! COMPILR 479
SX1 P2CLN . / IS SYNONYM FOR : COMPILR 480
JP P1BOUTX1 . NOTE COLON SUPPRESSES LEADING BLNKSCOMPILR 481
* COMPILR 482
SPC.PRD SA3 P1TAB+X2 . COMPILR 483
LX3 P1F.DIG . MARKS START COMPILR 484
NG X3,REALA . OF REAL NUMBER COMPILR 485
SX6 P2UNPRD . OUTPUT COMPILR 486
JP P1OUTUX6 . COMPILR 487
* COMPILR 488
EXPON SA3 P1EXPON . FETCH (EXTENDED) P1TAB ENTRY COMPILR 489
JP IS.BINUN . CHECK FOR TRAILING BLANKS, ETC. COMPILR 490
* COMPILR 491
ALT SA3 P1TAB+1R] COMPILR 492
JP IS.BINUN COMPILR 493
* COMPILR 494
RIGHTBR SX1 P2RGTBR COMPILR 495
JP P1OUTX1 . (NOTE: ! SUPPRESSES LEADING BLANKS)COMPILR 496
* COMPILR 497
STARMT RJ PASS0 . REPLENISH X4 COMPILR 498
* COMPILR 499
* PROCESS STAR NOT FOLLOWING A BLANK. COMPILR 500
* COMPILR 501
STAR FETCH STARMT COMPILR 502
IFCH *,UNEXPON . RECALL ** IS EXPONENTIATION COMPILR 503
SX1 P2USTAR COMPILR 504
JP P1BOUTX1 . BACK UP 1 CHARACTER AND OUTPUT X1 COMPILR 505
* COMPILR 506
UNEXPON SX1 P2ERR2 . COMPILR 507
JP P1OUTX1 COMPILR 508
* COMPILR 509
SLASHMT RJ PASS0 . REPLENISH X4 COMPILR 510
* COMPILR 511
* PROCESS SLASH NOT FOLLOWING A BLANK. COMPILR 512
* COMPILR 513
SLASH FETCH SLASHMT COMPILR 514
IFNCH /,CHK.RBR COMPILR 515
SX1 P2ERR2 . RECALL // MEANS ] COMPILR 516
JP P1OUTX1 COMPILR 517
* COMPILR 518
LPARENMT RJ PASS0 . REPLENISH X4 COMPILR 519
SA3 P1TAB+1R( . RESET X3 COMPILR 520
* COMPILR 521
* PROCESS LEFT PARENTHESIS. COMPILR 522
* COMPILR 523
LPAREN FETCH LPARENMT COMPILR 524
IFNCH /,SUPNOINP . SUPPRESS POSSIBLE TRAILING BLANKS COMPILR 525
SA3 P1TAB+1R" . (/ IS SYNONYM FOR " COMPILR 526
JP SUPPRESS . SUPPRESS TRAILING BLANKS COMPILR 527
* COMPILR 528
PERIODMT RJ PASS0 . REPLENISH X4 COMPILR 529
* COMPILR 530
* PROCESS PERIOD NOT FOLLOWING A BLANK. COMPILR 531
* COMPILR 532
PERIOD FETCH PERIODMT . SET X2 = NEXT CHARACTER COMPILR 533
SA3 P1TAB+X2 . PERIOD FOLLOWED COMPILR 534
LX3 P1F.DIG . BY DIGIT MARKS COMPILR 535
NG X3,REALB . START OF REAL NUMBER COMPILR 536
SX1 P2UNPRD COMPILR 537
JP P1BOUTX1 . BACK UP 1 CHAR AND OUTPUT X1 COMPILR 538
* COMPILR 539
ESCAPEMT RJ PASS0 COMPILR 540
* COMPILR 541
* COMPILR 542
* PROCESS CHARACTER. COMPILR 543
* COMPILR 544
ESCAPE FETCH ESCAPEMT COMPILR 545
SA1 P1ESCWD . CHARACTER FOLLOWING COMPILR 546
SB2 X2 . IS SHIFT COUNT COMPILR 547
AX1 B2,X1 . TO RIGHT ADJUST THE COMPILR 548
SB5 X1+0 . CORRESPONDING ACTION COMPILR 549
P1JPB5 JP PASS1+B5 . ADDRESS IN P1ESCWD COMPILR 550
* COMPILR 551
EOSEND SA1 RULENO COMPILR 552
SX6 X1+1 COMPILR 553
SA6 RULENO . STORE UPDATED STATEMENT COUNTER COMPILR 554
SX1 P2SMCLN COMPILR 555
RJ PASS2 COMPILR 556
END SX1 P2END COMPILR 557
JP P1OUTX1 COMPILR 558
* COMPILR 559
* PROCESS A SEMICOLON. COMPILR 560
* COMPILR 561
SEMI SA1 RULENO COMPILR 562
SX6 X1+1 COMPILR 563
SA6 RULENO COMPILR 564
SX1 P2SMCLN COMPILR 565
JP P1OUTX1 COMPILR 566
TITLE PASS1: BUILDING HEAP BLOCKS WITH STRINGS (ID, INT, LIT) COMPILR 567
* THE PROCESSING OF IDENTIFIERS, STRING LITERALS, AND NUMERIC (INTEGER COMPILR 568
* AND REAL) CONSTANTS INVOLVES MAKING ENTRIES IN THE COMPILER STATIC COMPILR 569
* STORAGE. HOWEVER, PASS1 DOES NOT UPDATE MAXSTAT ; IT PLACES AN COMPILR 570
* ENTRY IN STATIC BEGINNING AT (MAXSTAT) AND OUTPUTS AN APPROPRIATE COMPILR 571
* TOKEN ( P2VAR , P2LIT , ETC.) PASS3 INCREMENTS MAXSTAT IF THE COMPILR 572
* OPERAND HAS NOT BEEN PREVIOUSLY ENCOUNTERED. COMPILR 573
* COMPILR 574
* PASS1 MANIPULATES A VARIABLE P1MAX WHILE BUILDING A HEAP STORAGE COMPILR 575
* ENTRY CONTAINING A STRING (ID, LIT, INT); P1MAX CONTAINS THE COMPILR 576
* ADDRESS FOR THE NEXT STRING WORD. TSTBUMP IS A ROUTINE WHICH TESTS COMPILR 577
* FOR ROOM TO ADVANCE P1MAX ; IT CALLS BUMP IF NECESSARY. COMPILR 578
* COMPILR 579
* MACRO TO INITIALIZE P1MAX AND THE HEAP BLOCK-WITH-STRING-BUILDING COMPILR 580
* REGISTERS -- B2, B3, AND X5. COMPILR 581
* COMPILR 582
INITHBWS MACRO OFFSET COMPILR 583
SA1 MAXSTAT COMPILR 584
SX6 X1+OFFSET . ADDRESS FOR FIRST STRING WORD COMPILR 585
SA6 P1MAX COMPILR 586
SB2 B0 . INITIALIZE B2 = CLENGTH COMPILR 587
BX5 X5-X5 . INITIALIZE X5 = 7-CHARACTER BUFFER COMPILR 588
SB3 42 . INITIALIZE B3 = BITS LEFT IN X5 COMPILR 589
ENDM COMPILR 590
* COMPILR 591
* TSTBUMP COMPILR 592
* COMPILR 593
* RETURNS: X0 = HOLE 6 (AS USED BY THE FETCH MACRO OF PASS1) COMPILR 594
* A2,X2 = P1MAX,(P1MAX) = NEXT ADDRESS FOR STRING WORD COMPILR 595
* X6 = (P1MAX)+1 COMPILR 596
* SAVES: X3, X5, X5, B2, B3, B4, B5, AND THE PASS2-3-4 REGISTERS COMPILR 597
* COMPILR 598
TSTBUMP BSSZ 1 . ENTRY/EXIT COMPILR 599
TB1 SX1 B6 COMPILR 600
NG B6,TB2 COMPILR 601
BX1 -X1 COMPILR 602
TB2 SA2 P1MAX COMPILR 603
SX6 X2+1 COMPILR 604
IX1 X6+X1 COMPILR 605
MX0 60-6 COMPILR 606
NG X1,TSTBUMP COMPILR 607
RJ BUMP . GET MORE ROOM COMPILR 608
JP TB1 . RESET X0, A2-X2, X6 AND EXIT COMPILR 609
* COMPILR 610
* PUTCH PUTS THE CHARACTER IN X2 INTO THE BUFFER X5 AFTER STORING X5 COMPILR 611
* AND UPDATING P1MAX IF NECESSARY (ALSO UPDATES B2 AND B3). COMPILR 612
* COMPILR 613
* SAVES: X0 = HOLE 6, X3, X4, B4, AND THE PASS2-3-4 REGISTERS COMPILR 614
* COMPILR 615
PUTCH1 LX5 CHSIZ . PUT COMPILR 616
BX5 X5+X2 . CHARACTER COMPILR 617
SB3 B3-CHSIZ . INTO BUFFER COMPILR 618
PUTCH BSSZ 1 . ENTRY/EXIT COMPILR 619
SB2 B2+1 . INCREMENT CLENGTH COMPILR 620
NG B2,STRLONG COMPILR 621
NZ B3,PUTCH1 . STILL ROOM IN X5 COMPILR 622
SB3 42-CHSIZ . RESET THE BIT COUNTER COMPILR 623
LX5 18 . LEFT JUSTIFY THE CHARACTERS COMPILR 624
SB5 X2 . SAVE NEW CHARACTER COMPILR 625
RJ TSTBUMP . DOES SA2 P1MAX; SX6 X2+1 ... COMPILR 626
SA6 A2 . UPDATE P1MAX COMPILR 627
BX7 X5+X6 . COMBINE CHARACTERS AND LINK COMPILR 628
SA7 X2 . STORE STRING WORD COMPILR 629
SX5 B5 . NOW BUFFER CONTAINS 1 CHARACTER COMPILR 630
JP PUTCH . RETURN COMPILR 631
* COMPILR 632
* FINHBWS: COMPILR 633
* (1) BACKS UP THE CHAR POINTER, B4, SINCE ID, LIT, AND INT ALL COMPILR 634
* TOUCH AN EXTRA CHARACTER; COMPILR 635
* (2) STORES THE LAST STRING WORD, (X5); COMPILR 636
* (3) STORES THE HEAP BLOCK HEADER; COMPILR 637
* AND (4) RETURNS X1=CLENGTH, X2=LAST, AND X4=(MAXSTAT) COMPILR 638
* COMPILR 639
* PARAMETER: B5 = HEAP STORAGE TYPE COMPILR 640
* COMPILR 641
* SAVES: X3 COMPILR 642
* COMPILR 643
FINHBWS BSSZ 1 . ENTRY/EXIT COMPILR 644
SB4 B4+6 . BACK UP 1 CHARACTER COMPILR 645
RJ TSTBUMP COMPILR 646
SB3 B3+18 . COMPUTE SHIFT COMPILR 647
LX7 B3,X5 . TO LEFT JUSTIFY (X5) COMPILR 648
SA7 X2 . STORE STRING WORD (WITH ZERO LINK) COMPILR 649
SX5 B5 . (VAR, LIT, OR INT)TYP COMPILR 650
LX5 1+18 COMPILR 651
SX1 B2 . CLENGTH IS COMPILR 652
BX7 X5+X1 . F3 OF HS HEADER FOR VAR,LIT,INT COMPILR 653
LX7 18 COMPILR 654
SA4 MAXSTAT COMPILR 655
IX6 X6-X4 . BYPASS = (P1MAX) - (MAXSTAT) + 1 COMPILR 656
BX7 X7+X6 . IS F2 COMPILR 657
LX7 18 COMPILR 658
SA7 X4 COMPILR 659
JP FINHBWS . RETURN COMPILR 660
TITLE PASS1: IDENTIFIER PROCESSING COMPILR 661
* ::= ] COMPILR 662
* ::= ] ] . COMPILR 663
* COMPILR 664
ID INITHBWS 2 . ROOM FOR VARTYP HEADER, VALUE SVDCOMPILR 665
JP IDPUTCH . JUMP INTO MAIN LOOP COMPILR 666
* COMPILR 667
IDMT PX6 B3,X5 . SAVE STRING BUFFER, BIT COUNTER COMPILR 668
SX7 B2 . SAVE CLENGTH COMPILR 669
SA6 P1TEMP1 COMPILR 670
SA7 P1TEMP2 COMPILR 671
RJ PASS0 . REPLENISH X4 COMPILR 672
SA1 P1TEMP1 COMPILR 673
SA2 P1TEMP2 COMPILR 674
NO COMPILR 675
UX5 B3,X1 . RESTORE B3, X5 COMPILR 676
SB2 X2+0 . RESTORE B2 COMPILR 677
IDLOOP FETCH IDMT . SET X2 = NEXT CHARACTER COMPILR 678
SA3 P1TAB+X2 COMPILR 679
NO COMPILR 680
LX3 P1F.IDC COMPILR 681
PL X3,IDEND . NOT AN COMPILR 682
IDPUTCH RJ PUTCH . ADD CHAR IN X2 TO THE STRING COMPILR 683
JP IDLOOP COMPILR 684
* COMPILR 685
IDEND SB5 VARTYP . HEAP STORAGE TYPE COMPILR 686
RJ FINHBWS COMPILR 687
SX1 P2VAR . OUTPUT COMPILR 688
JP P1OUTX1 . COMPILR 689
TITLE PASS1: LITERAL PROCESSING COMPILR 690
* ::= ] COMPILR 691
* ::= , I = 1, 2 COMPILR 692
* ::= REPLACED BY > COMPILR 694
* ::= ' COMPILR 695
* ::= @ COMPILR 696
* COMPILR 697
LIT INITHBWS 2 . ROOM FOR LITTYP HEADER, SSTY SVDCOMPILR 698
SX3 X2+0 . SAVE COMPILR 699
SX7 1 . SIGNAL PASS0 THAT COMPILR 700
SA7 P1LTFLG . WE ARE INSIDE A LITERAL NOW COMPILR 701
JP LITLOOP COMPILR 702
* COMPILR 703
LITLPMT PX6 B3,X5 . SAVE STRING BUFFER, BIT COUNTER COMPILR 704
SX7 B2 COMPILR 705
LX7 18 COMPILR 706
BX7 X7+X3 . SAVE CLENGTH, COMPILR 707
SA6 P1TEMP1 COMPILR 708
SA7 P1TEMP2 COMPILR 709
RJ PASS0 . REPLENISH X4 = INPUT BUFFER COMPILR 710
SA1 P1TEMP1 COMPILR 711
SA2 P1TEMP2 COMPILR 712
UX5 B3,X1 . RESTORE B3, X5 COMPILR 713
SX3 X2 . RESTORE X3 COMPILR 714
AX2 18 COMPILR 715
SB2 X2 . RESTORE B2 COMPILR 716
LITLOOP FETCH LITLPMT . SET X2 = NEXT CHARACTER COMPILR 717
* SX6 X2-P1ESC+P1TAB . IS CODE 00B COMPILR 718
* ZR X6,LITEOS COMPILR 719
ZR X2,LITEOS . ERROR - NO CLOSING QUOTE COMPILR 720
NO COMPILR 721
BX7 X2-X3 COMPILR 722
ZR X7,LITQUOTE . ENCOUNTERED COMPILR 723
LITPUTCH RJ PUTCH . ADD CHAR IN X2 TO THE STRING COMPILR 724
JP LITLOOP COMPILR 725
* COMPILR 726
LITQUOMT PX6 B3,X5 . SAVE B3, X5, COMPILR 727
SX7 B2 . B2, COMPILR 728
LX7 18 . AND COMPILR 729
BX7 X7+X3 . X3 COMPILR 730
SA6 P1TEMP1 COMPILR 731
SA7 P1TEMP2 COMPILR 732
RJ PASS0 . REPLENISH X4 COMPILR 733
SA1 P1TEMP1 COMPILR 734
SA2 P1TEMP2 COMPILR 735
UX5 B3,X1 . RESTORE B3, X5, COMPILR 736
SX3 X2 . X3, COMPILR 737
AX2 18 . AND COMPILR 738
SB2 X2 . B2 COMPILR 739
LITQUOTE FETCH LITQUOMT . SET X2 = NEXT CHARACTER COMPILR 740
BX7 X3-X2 . OUTPUT COMPILR 741
ZR X7,LITPUTCH . FOR COMPILR 742
LITEND SB5 LITTYP . HS TYPE COMPILR 743
RJ FINHBWS . SETS X1, X2, X4 TO (RESPECTIVELY): COMPILR 744
SX7 SSTY COMPILR 745
LX7 1+18 COMPILR 746
BX7 X7+X1 . CLENGTH, COMPILR 747
LX7 18 COMPILR 748
BX7 X7+X2 . LAST, COMPILR 749
SX6 X4+2 . AND (MAXSTAT) COMPILR 750
LX7 18 COMPILR 751
BX7 X7+X6 . FIRST = F1 COMPILR 752
SA7 X4+1 . STORE SSTY SVD COMPILR 753
SX1 P2LIT . OUTPUT COMPILR 754
JP LITEXIT . COMPILR 755
* COMPILR 756
LITEOS SB4 B4+6 . BACK UP OVER CHARACTER COMPILR 757
SX1 P2ERR3 . COMPILR 758
LITEXIT SX7 0 . SIGNAL PASS0 THAT COMPILR 759
SA7 P1LTFLG . WE ARE NO LONGER WITHIN A LITERALCOMPILR 760
JP P1OUTX1 COMPILR 761
TITLE PASS1: INTEGER PROCESSING COMPILR 762
* ::= COMPILR 763
* ::= ] COMPILR 764
* COMPILR 765
INTSKPMT RJ PASS0 . REPLENISH X4 COMPILR 766
INTSKPLZ FETCH INTSKPMT . SET X2 = NEXT CHARACTER COMPILR 767
INT IFCH 0,INTSKPLZ . SKIP LEADING ZEROS COMPILR 768
INITHBWS 3 . ROOM FOR INTTYP HEADER, SITY COMPILR 769
* SVD, INTEGER COMPILR 770
SX3 0 . INITIALIZE VAL() = 0 COMPILR 771
JP INTNOINP COMPILR 772
* COMPILR 773
* COMPILR 774
INTLPMT PX6 B3,X5 . SAVE B3, X5, COMPILR 775
SX7 B2 . B2, COMPILR 776
SA6 P1TEMP1 COMPILR 777
SA7 P1TEMP2 COMPILR 778
BX6 X3 . AND X3 COMPILR 779
SA6 P1TEMP3 COMPILR 780
RJ PASS0 . REPLENISH X4 COMPILR 781
SA1 P1TEMP1 COMPILR 782
SA2 P1TEMP2 COMPILR 783
SA3 P1TEMP3 . RESTORE X3, COMPILR 784
SB2 X2 . B2, COMPILR 785
UX5 B3,X1 . AND B3, X5 COMPILR 786
INTLOOP FETCH INTLPMT . SET C2 = NEXT CHARACTER COMPILR 787
INTNOINP SA1 P1TAB+X2 COMPILR 788
LX1 P1F.DIG COMPILR 789
PL X1,INTEND . NOT A COMPILR 790
SX6 X2-1R0 . CONVERT TO BINARY COMPILR 791
SB5 10 COMPILR 792
EQ B2,B5,INTLONG . WE WILL TREAT THE INTEGER AS A COMPILR 793
* LITERAL STRING, BUT STILL KEEP COMPILR 794
* THE BINARY IN CASE IT IS A REAL COMPILR 795
INTACCUM SX7 10 COMPILR 796
PX7 X7 . SET X7 = 10.0 COMPILR 797
PX6 X6 . FLOAT THE COMPILR 798
DX3 X7*X3 . VAL(INTEGER) := 10 * VAL(INTEGER) COMPILR 799
OR X3,INTOR . OUT OF RANGE COMPILR 800
FX3 X3+X6 . ADD IN VAL() COMPILR 801
OR X3,INTOR . OUT OF RANGE COMPILR 802
RJ PUTCH . ADD CHARACTER TO THE STRING COMPILR 803
JP INTLOOP COMPILR 804
* COMPILR 805
INTOR SA7 -1 KLUDGE KLUDGE KLUDGE KLUDGE COMPILR 806
STRLONG EQU INTOR GE KLUDGE KLUDGE KLUDGE COMPILR 807
* COMPILR 808
INTLONG SA1 MAXSTAT COMPILR 809
SA1 X1+3 . FIRST WORD OF SITY STRING COMPILR 810
MX7 59 . =-1 COMPILR 811
IX7 X1+X7 . ADJUST LINK COMPILR 812
SA7 A1-1 COMPILR 813
SX7 A1+0 COMPILR 814
SA7 P1MAX . SET P1MAX AS IF IN LIT CODE COMPILR 815
JP INTACCUM . (WE MAY BE IN A REAL CONSTANT) COMPILR 816
* COMPILR 817
INTEND IFCH .,REAL . PROCESS REAL CONSANT COMPILR 818
SB5 10 COMPILR 819
GT B2,B5,LITEND . TREAT LONG INTEGER AS STRING LIT COMPILR 820
NZ B2,INTEND1 . VAL(INTEGER) > 0 COMPILR 821
SX5 1R0 . IN CASE INTEGER WAS ALL ZEROS, COMPILR 822
SB3 42-CHSIZ . UNSUPPRESS EXACTLY COMPILR 823
SB2 1 . 1 ZERO CHARACTER COMPILR 824
INTEND1 SB5 INTTYP . HS TYPE COMPILR 825
RJ FINHBWS . RETURNS X1, X2, X4 = COMPILR 826
SX6 SITY COMPILR 827
LX6 1+18 COMPILR 828
BX6 X6+X1 . CLENGTH, COMPILR 829
LX6 18 COMPILR 830
BX6 X6+X2 . LAST = (P1MAX), COMPILR 831
SX5 X4+3 . AND (MAXSTAT) COMPILR 832
LX6 18 COMPILR 833
BX6 X6+X5 . FIRST = (MAXSTAT) + 3 COMPILR 834
SA6 X4+1 . STORE SITY SVD COMPILR 835
UX7 B0,X3 . UNFLOAT THE INTEGER AND COMPILR 836
SA7 X4+2 . STORE FOLLOWING THE SVD COMPILR 837
SX1 P2INT . OUTPUT COMPILR 838
JP P1OUTX1 . COMPILR 839
TITLE PASS1: REAL NUMBER PROCESSING COMPILR 840
REALA SX1 P2BLANK COMPILR 841
RJ PASS2 COMPILR 842
REALB SB4 B4+6 . BACK UP ONE CHARACTER COMPILR 843
SX3 0 . INITIALIZE RESULT = 0 COMPILR 844
* COMPILR 845
REAL SA1 TENTH . =0.1E0 COMPILR 846
BX5 X1 X5 WILL HOLD SCALE FACTOR FOR ND COMPILR 847
NX3 X3 . NORMALIZE THE INTEGRAL PART COMPILR 848
REAL1 FETCH REAL1MT,6 COMPILR 849
SA2 P1TAB+X6 COMPILR 850
SX6 X6-1R0 COMPILR 851
PX6 X6 COMPILR 852
LX2 P1F.DIG COMPILR 853
PL X2,REAL2 . TERMINATOR FOUND COMPILR 854
NX6 X6 COMPILR 855
FX6 X6*X5 . SCALE DIGIT COMPILR 856
FX3 X3+X6 . ADD TO TOTAL COMPILR 857
FX5 X1*X5 NEXT POWER TO SCALE BY COMPILR 858
EQ REAL1 COMPILR 859
REAL2 SA1 MAXSTAT COMPILR 860
SB4 B4+6 . BACK UP ONE CHARACTER COMPILR 861
BX7 X3 COMPILR 862
SA7 X1+2 COMPILR 863
SX2 A7 ADDRESS OF BINARY COMPILR 864
SX7 RTY COMPILR 865
LX7 55 COMPILR 866
BX7 X2+X7 COMPILR 867
SA7 X1+1 COMPILR 868
SX7 REALTYP COMPILR 869
LX7 37 COMPILR 870
SX2 3 COMPILR 871
BX7 X2+X7 ADD IN ITEM BYPASS COMPILR 872
LX7 18 COMPILR 873
SA7 X1 REAL NUMBER DESCRIPTOR COMPILR 874
SX1 P2REAL COMPILR 875
JP P1OUTX1 COMPILR 876
* COMPILR 877
REAL1MT BX6 X3 COMPILR 878
SA6 P1TEMP1 . SAVE REAL NUMBER COMPILR 879
BX6 X5 COMPILR 880
SA6 P1TEMP2 . SAVE SCALE FACTOR COMPILR 881
RJ PASS0 COMPILR 882
SA3 P1TEMP2 COMPILR 883
BX5 X3 . RESTORE X5 WITHOUT USING A5 COMPILR 884
SA3 P1TEMP1 COMPILR 885
SA1 TENTH COMPILR 886
EQ REAL1 COMPILR 887
TITLE PASS2 COMPILR 888
ZEND SB7 0 . SET OPERAND SITUATION TO ZERO COMPILR 889
* COMPILR 890
PASS2 NO . ENTRY TO PASS2 COMPILR 891
P2TRCT NG X1,OPRACT . CHANGED IF TESTOUTPUT TO EQ P2TRC COMPILR 892
LT B1,B0,INSKIP . BRANCH IF AFTER ERROR COMPILR 893
ACT1 SA2 X1+P2TBL . FETCH TABLEWORD COMPILR 894
MX0 56 COMPILR 895
AX2 B1,X2 . SECONDARY WORD INDEX DEPENDS ON COMPILR 896
BX2 -X0*X2 . THE STATE (B1) COMPILR 897
SB2 X2 COMPILR 898
EQ B0,B2,SYXERR . SYNTAX ERROR IF IT IS ZERO COMPILR 899
SA2 A2+B2 COMPILR 900
AX4 B7,X2 . BRANCH IF OPERAND SITUATION IS COMPILR 901
PL X4,OPRERR1 . NOT ALLOWED COMPILR 902
ACT1A SB3 X2 . ACTION TO B3 COMPILR 903
AX2 18 COMPILR 904
SB1 X2+0 . NEW STATE TO B1 COMPILR 905
JP B3+0 . SWITCH TO ACTION COMPILR 906
* COMPILR 907
OPRACT NE B0,B7,OPRERR2 . ERROR, DELIMITER IS MISSING COMPILR 908
SB7 X1 COMPILR 909
EQ PASS2 . NEW OPERAND SITUATION TO B7 COMPILR 910
OUTP2 LX2 34 . OUTPUT OUTPART AND RETURN COMPILR 911
AX2 52 COMPILR 912
SX1 X2 COMPILR 913
OUTX1 ZR X1,ZEND COMPILR 914
RJ PASS3 COMPILR 915
EQ ZEND COMPILR 916
* COMPILR 917
ACT2 BSS 0 COMPILR 918
* COMPILR 919
DESTACK SA3 A0 . RESTORE STATE AND ACTION FROM COMPILR 920
* . THE STACK COMPILR 921
SA0 A0+1 COMPILR 922
SB3 X3 COMPILR 923
AX3 18 COMPILR 924
SB1 X3 COMPILR 925
JP B3+0 . SWITCH TO ACTION COMPILR 926
* COMPILR 927
ACT3 SX7 ACT1 COMPILR 928
STAKOUT SB2 OUTP2 COMPILR 929
STACKX7 BX6 X2 . SET X6 TO STACKPART OF THE COMPILR 930
LX6 26 . SECONDARY TABLEWORD COMPILR 931
AX6 52 COMPILR 932
STACKP2 LX6 18 . STACK X6 AND X7, RETURN TO B2 COMPILR 933
SA0 A0-1 COMPILR 934
BX6 X6+X7 COMPILR 935
SB3 A0 . CHECK BUMPING AGAINST PASS3 COMPILR 936
SB3 A5-B3 . STACK COMPILR 937
SA6 A0+0 COMPILR 938
GE B3,B0,FATBUMP COMPILR 939
JP B2+0 COMPILR 940
* COMPILR 941
ACT4 NE B0,B7,OUTP2 . BLANK IN STATE 1 COMPILR 942
EQ PASS2 COMPILR 943
* COMPILR 944
ACT5 SX7 B7+0 . BLANK IN STATE 2 COMPILR 945
SA7 TSTPMOP COMPILR 946
EQ ACT3 COMPILR 947
* COMPILR 948
ACT6 SX7 ACT7 . $ IN CONDITION COMPILR 949
EQ STAKOUT COMPILR 950
ACT7 SX0 X1-P2RGTPR COMPILR 951
NZ X0,SYXERR1 COMPILR 952
SX1 P3GTT COMPILR 953
EQ OUTX1 COMPILR 954
* COMPILR 955
ACT8 SB2 ACT1 . WEIRD CHARACTER IN STATE2 COMPILR 956
SX7 ACT1 COMPILR 957
EQ STACKX7 COMPILR 958
* COMPILR 959
ACT9 SX7 ACT10 . LEFT PARANTHESES ACTION COMPILR 960
EQ B0,B7,STAKOUT . NO OPERAND COMPILR 961
SB2 ACT9A . IDENTIFIER OPERAND COMPILR 962
ACT9B SX7 PASS2 COMPILR 963
EQ STACKX7 COMPILR 964
ACT9A SA2 AUXPR COMPILR 965
EQ ACT1A COMPILR 966
ACT10 SX0 X1-P2RGTPR . CHECK MATCHING RIGHT COMPILR 967
NZ X0,SYXERR2 COMPILR 968
SX1 P3RGTPR COMPILR 969
RJ PASS3 COMPILR 970
SB7 OPSEXP COMPILR 971
EQ PASS2 COMPILR 972
* COMPILR 973
ACT11 EQU DESTACK . RIGHT PARANTHESES ACTION COMPILR 974
* COMPILR 975
ACT12 NE B0,B7,ACT11 . TERMINATOR IN STATE 15 COMPILR 976
SB1 X1+0 . WITHOUT OPERAND COMPILR 977
SX1 P3NULL . SAVE X1 IN B1 COMPILR 978
RJ PASS3 . OUTPUT P3NULL COMPILR 979
SX1 B1 . RESTORE X1 (LAST INPUT BYTE) COMPILR 980
SB7 OPSSPEC COMPILR 981
EQ DESTACK COMPILR 982
* COMPILR 983
ACT13 SB2 ACT13A . LEFT BRACKET ACTION COMPILR 984
EQ ACT9B COMPILR 985
ACT13A SA2 AUXBR COMPILR 986
EQ ACT1A COMPILR 987
* COMPILR 988
ACT14 SX5 ACT15 . LEFT BRACKET AMONG CONDITIONS COMPILR 989
SX1 P3COND COMPILR 990
BX0 X2 COMPILR 991
RJ PASS3 . OUTPUT P3COND COMPILR 992
BX7 X5 . PASS 3 SAVES X5,X0 IN THIS COMPILR 993
BX2 X0 . PARTICULAR CASE COMPILR 994
EQ STAKOUT COMPILR 995
ACT15 SX0 X1-P2RGTBR COMPILR 996
NZ X0,SYXERR3 COMPILR 997
SX1 P3GTC COMPILR 998
EQ OUTX1 COMPILR 999
* COMPILR 1000
ACT16 EQU DESTACK . COMPILR 1001
* COMPILR 1002
ACT17 LX2 34 . END OF PARAMETER OR SUBSCRIPT COMPILR 1003
AX2 52 . LIST COMPILR 1004
SB1 X1 . SAVE X1 COMPILR 1005
SX1 X2 COMPILR 1006
RJ PASS3 . OUTPUT OUTPART COMPILR 1007
SX1 B1+0 . RESTORE X1 COMPILR 1008
ACT17A SB7 OPSSPEC . COMPILR 1009
EQ DESTACK COMPILR 1010
* COMPILR 1011
ACT18 SA3 TSTPMOP . EQUAL SIGN IN STATE 5 COMPILR 1012
SX0 X3-OPSVAR . LEFT OPERAND OF PM COMPILR 1013
ZR X0,ACT3 . CAN BE VARIABLE OR SPEC COMPILR 1014
SX0 X3-OPSSPEC COMPILR 1015
ZR X0,ACT3 COMPILR 1016
EQ OPRERR3 COMPILR 1017
* COMPILR 1018
ACT19 EQ B0,B7,ACT19A . SEMICOLON IN STATE 1 COMPILR 1019
SX1 P3LABEL COMPILR 1020
RJ PASS3 COMPILR 1021
ACT19A SX1 P3RULE4 COMPILR 1022
EQ OUTX1 COMPILR 1023
* COMPILR 1024
ACT20 SX7 ACT20A . NAME OPERATOR IN STATE 2 COMPILR 1025
EQ STAKOUT COMPILR 1026
ACT20A SB1 X1+0 . SAVE X1 COMPILR 1027
SX1 P3ENDUN COMPILR 1028
RJ PASS3 . OUTPUT END UNARY OPERATOR COMPILR 1029
SB7 OPSEXP COMPILR 1030
SX1 B1+0 COMPILR 1031
SB1 ST2 COMPILR 1032
EQ ACT1 COMPILR 1033
ACT21 SX7 ACT21A . INDIRECT OPERATOR IN STATE 2 COMPILR 1034
EQ STAKOUT COMPILR 1035
ACT21A SB1 X1+0 COMPILR 1036
SX1 P3ENDUN COMPILR 1037
RJ PASS3 . OUTPUT END UNARY OPERATOR COMPILR 1038
SX1 B1+0 . RESTORE X1 COMPILR 1039
SB7 OPSSPEC COMPILR 1040
SB1 ST2 COMPILR 1041
EQ ACT1 COMPILR 1042
* COMPILR 1043
P2TRCS EQ P2TRC COMPILR 1044
P2TRC SX7 2 . TEST OUTPUT COMPILR 1045
RJ TRC COMPILR 1046
NG X1,OPRACT . INSTRUCTIONS DISPLACED BY COMPILR 1047
LT B1,B0,INSKIP . TEST OUTPUT CALL COMPILR 1048
EQ ACT1 COMPILR 1049
TITLE PASS3 COMPILR 1050
PASS3 NO . ENTRY TO PASS 3 COMPILR 1051
P3TRCT SA4 X1+P3TBL . FETCH TABLEWORD COMPILR 1052
NG X4,PASS3A . BRANCH IF ACTION FIRST COMPILR 1053
P3TRC1 BX1 X4 . (CHANGED IF TESTOUTPUT. COMPILR 1054
LX1 1 COMPILR 1055
PL X1,P3OUT COMPILR 1056
RJ OUTST . OUTST IF BIT IS SET COMPILR 1057
P3OUT BX5 X4 COMPILR 1058
AX5 18 COMPILR 1059
SX6 X5 COMPILR 1060
P3OUTA ZR X6,PASS3B . OUTPUT OUTPART UNLESS IT IS ZERO COMPILR 1061
RJ PASS4 COMPILR 1062
PASS3B BX5 X4 COMPILR 1063
LX5 4 COMPILR 1064
PL X5,PASS3A . BRANCH IF BIT IS SET COMPILR 1065
STACKX4 BX6 X4 COMPILR 1066
SA6 A5+1 . STACK TABLEWORD COMPILR 1067
SB2 A0 COMPILR 1068
SB2 A5-B2 . CHECK BUMPING AGAINST PASS 2 COMPILR 1069
SA5 A6 . STACK COMPILR 1070
LT B2,B0,PASS3 . AND RETURN COMPILR 1071
EQ FATBUMP COMPILR 1072
P3TRCS EQ P3TRC COMPILR 1073
P3TRC SX7 3 . TEST OUTPUT COMPILR 1074
RJ TRC COMPILR 1075
SA4 X1+P3TBL COMPILR 1076
PL X4,P3TRC1 COMPILR 1077
PASS3A SB2 X4 COMPILR 1078
JP B2+0 COMPILR 1079
* COMPILR 1080
EJECT COMPILR 1081
GETVAR NO COMPILR 1082
+ SA2 MAXSTAT . SET UP SEARCH CALL COMPILR 1083
SB5 X2+2 COMPILR 1084
SA3 X2 COMPILR 1085
BX5 X2 COMPILR 1086
BX0 X3 COMPILR 1087
AX3 36 COMPILR 1088
SB3 X3 COMPILR 1089
RJ SEARCH COMPILR 1090
NZ X1,GETVAR . LOOK UP OPERAND COMPILR 1091
RJ SCHLINK COMPILR 1092
SB2 OPSVAR COMPILR 1093
NE B2,B7,GETVAR COMPILR 1094
SA2 VARLINK . IF VARIABLE LINK IT TO A CHAIN COMPILR 1095
MX6 1 . SO AT THE END IT CAN BE COMPILR 1096
BX7 X2+X6 . INITIALIZED TO A NULL VALUE COMPILR 1097
SX6 X1 COMPILR 1098
SA7 X1 COMPILR 1099
SA6 A2+0 COMPILR 1100
EQ GETVAR COMPILR 1101
* COMPILR 1102
SCHLINK NO COMPILR 1103
+ SA1 X5 . SET UP LINKAGE IF OPERAND COMPILR 1104
AX1 18 . WAS NOT FOUND COMPILR 1105
SB2 X1 COMPILR 1106
SX6 X5+B2 COMPILR 1107
BX7 X2+X5 COMPILR 1108
NG X2,SCHL1 COMPILR 1109
NG X3,SCHL1 COMPILR 1110
LX7 30 COMPILR 1111
SCHL1 SA7 A2+0 COMPILR 1112
SA6 MAXSTAT COMPILR 1113
SX1 X5+1 COMPILR 1114
EQ SCHLINK COMPILR 1115
* COMPILR 1116
SCHLBL NO COMPILR 1117
+ SA2 MAXSTAT . SET UP SEARCH CALL COMPILR 1118
SA3 X2 COMPILR 1119
BX5 X2 COMPILR 1120
MX7 5 COMPILR 1121
BX7 -X7*X3 . MASK VARTYP OFF COMPILR 1122
SB5 X2+2 COMPILR 1123
SX0 LBLTYP COMPILR 1124
AX3 36 COMPILR 1125
LX0 55 . LABEL TYPE TO X0 COMPILR 1126
SB3 X3 COMPILR 1127
BX7 X7+X0 . MERGE LBLTYP IN COMPILR 1128
SA7 A3 COMPILR 1129
RJ SEARCH COMPILR 1130
NZ X1,SCHLBL . RETURN IF FOUND COMPILR 1131
RJ SCHLINK COMPILR 1132
SA2 LUNDFWD COMPILR 1133
BX7 X2 COMPILR 1134
SA7 X1 . UNDEFINED COMPILR 1135
JP SCHLBL COMPILR 1136
* COMPILR 1137
OUTST NO COMPILR 1138
+ SB2 OPSREAL . BYPASS IF OPERAND IS EXPRESSION COMPILR 1139
LT B7,B2,OUTST3 . OR SPEC COMPILR 1140
RJ GETVAR COMPILR 1141
OUTST2 SX6 XOPRND . OUTPUT OPERAND COMPILR 1142
LX1 18 COMPILR 1143
BX6 X1+X6 COMPILR 1144
RJ PASS4 COMPILR 1145
OUTST3 BX1 X4 COMPILR 1146
MX0 54 COMPILR 1147
AX1 36 COMPILR 1148
BX2 -X0*X1 . THE PRIORITY OF THE OPERATOR COMPILR 1149
SB5 X2+0 . TO B5 COMPILR 1150
SA5 A5+0 . TOP ELEMENT IN THE STACK TO X5 COMPILR 1151
OUTST4 LX5 24 COMPILR 1152
MX0 54 COMPILR 1153
BX2 -X0*X5 COMPILR 1154
SB3 X2 . PRIORITY OF TOP OPERATOR COMPILR 1155
LT B3,B5,OUTST . IF SMALLER , EXIT COMPILR 1156
BX6 X6-X6 COMPILR 1157
LX5 38 . IF NOT NAME, STAR ETC. COMPILR 1158
PL X5,OUTST7 . THEN BYPASS COMPILR 1159
RJ GIVENM COMPILR 1160
LX5 1 . BRANCH IF LAST MICOP IS COMPILR 1161
BX6 X6-X6 COMPILR 1162
PL X2,OUTST5 . NOT AN OPERAND COMPILR 1163
PL X5,OUTST5 COMPILR 1164
SA1 B6 . ONLY FOR STAR, PRD OR DOL COMPILR 1165
AX1 18 COMPILR 1166
SX6 X1 COMPILR 1167
SB6 B6+1 COMPILR 1168
SB6 B0-B6 COMPILR 1169
OUTST8 LX6 18 COMPILR 1170
OUTST5 MX0 48 COMPILR 1171
AX5 45 . OUTPUT TOP OPERATOR COMPILR 1172
BX0 -X0*X5 COMPILR 1173
BX6 X0+X6 COMPILR 1174
ZR X6,OUTST6 . UNLESS ZERO COMPILR 1175
RJ PASS4 COMPILR 1176
OUTST6 SA5 A5-1 COMPILR 1177
EQ OUTST4 COMPILR 1178
OUTST7 LX5 1 . JUMP BACK IF NOT ASSIGN COMPILR 1179
PL X5,OUTST5 COMPILR 1180
BX6 X5 COMPILR 1181
LX6 21 . ADDRESS OF ASSIGN TO X6 COMPILR 1182
AX6 42 COMPILR 1183
EQ OUTST8 COMPILR 1184
* COMPILR 1185
GIVENM NO COMPILR 1186
+ LT B6,B0,GIVENM1 . BYPASS IF LAST MICOP WAS A XCALL COMPILR 1187
SA1 B6 COMPILR 1188
MX0 53 COMPILR 1189
SA2 X1+MCOPTBL COMPILR 1190
LX2 37 . EXCHANGE LAST MICOP BY ITS COMPILR 1191
MX6 42 . NAME ALTERNATIVE COMPILR 1192
BX7 -X0*X2 COMPILR 1193
BX6 X6*X1 COMPILR 1194
BX7 X6+X7 COMPILR 1195
SA7 B6 COMPILR 1196
BX6 X6-X6 . X6 MUST BE STILL ZERO COMPILR 1197
EQ GIVENM COMPILR 1198
GIVENM1 MX2 1 . IF XCALL, SET CHECK NAME BIT COMPILR 1199
SA1 B0-B6 COMPILR 1200
LX2 59 COMPILR 1201
BX6 X1+X2 COMPILR 1202
SA6 A1 COMPILR 1203
EQ GIVENM COMPILR 1204
EJECT COMPILR 1205
ARULE4 SX6 XNOOP . EMPTY RULE COMPILR 1206
RJ PASS4 COMPILR 1207
ARULE1 GE B6,B0,ARULEA . SET NEW RULE BIT ON LAST MICOP COMPILR 1208
SB6 B0-B6 COMPILR 1209
ARULEA SA1 B6 COMPILR 1210
MX0 1 COMPILR 1211
BX6 X0+X1 COMPILR 1212
BX7 X7-X7 COMPILR 1213
SA6 A1 COMPILR 1214
SB6 B0-B6 . NEXT MICOP INTO NEW WORD COMPILR 1215
SA7 TESTCND COMPILR 1216
EQ PASS3 COMPILR 1217
* COMPILR 1218
ARGTPR SA5 A5-1 . RIGHT PARANTHESES, REMOVE TOP COMPILR 1219
EQ PASS3 . OPERATOR COMPILR 1220
* COMPILR 1221
ALFTBR RJ GETVAR . LEFT BRACKET COMPILR 1222
BX5 X4 COMPILR 1223
AX5 18 COMPILR 1224
LX1 18 COMPILR 1225
SX6 X5 COMPILR 1226
BX6 X1+X6 COMPILR 1227
EQ P3OUTA COMPILR 1228
* COMPILR 1229
APM SB2 OPSREAL . PATTERN MATCH COMPILR 1230
LT B7,B2,STACKX4 . BRANCH IF LEFT OP NOT SIMPLE COMPILR 1231
SA1 -B6 COMPILR 1232
BX6 X1 . SET ADDRESS PART OF PMCHECK TO COMPILR 1233
AX1 18 . OPERAND ADDRESS COMPILR 1234
SX1 X1 COMPILR 1235
LX1 36 COMPILR 1236
BX6 X1+X6 COMPILR 1237
SA6 A1 COMPILR 1238
EQ STACKX4 COMPILR 1239
* COMPILR 1240
AASGN SX0 B7-OPSVAR COMPILR 1241
ZR X0,AASGN1 COMPILR 1242
RJ OUTST COMPILR 1243
RJ GIVENM COMPILR 1244
EQ STACKX4 COMPILR 1245
AASGN1 RJ GETVAR COMPILR 1246
LX1 18 COMPILR 1247
BX4 X1+X4 COMPILR 1248
EQ STACKX4 COMPILR 1249
* COMPILR 1250
ABCALL SA2 MAXSTAT . BEGIN CALL ACTION COMPILR 1251
SX0 3 . CALLTYP EQORED WITH VARTYPE COMPILR 1252
SB5 X2+2 COMPILR 1253
LX0 55 COMPILR 1254
SA3 X2 . LOOK UP FUNCTION COMPILR 1255
BX7 X3-X0 COMPILR 1256
BX5 X2 COMPILR 1257
BX0 X7 COMPILR 1258
AX3 36 COMPILR 1259
SA7 A3 COMPILR 1260
SB3 X3 COMPILR 1261
RJ SEARCH COMPILR 1262
NZ X1,ABCALL1 COMPILR 1263
RJ SCHLINK . IF NEW, INITIALIZE TO UNDEFINED COMPILR 1264
SX7 UNDFTYP COMPILR 1265
LX7 55 COMPILR 1266
SA7 X1 COMPILR 1267
ABCALL1 SA2 X1 . CLEAR NOT USED BIT COMPILR 1268
LX1 18 COMPILR 1269
MX0 42 COMPILR 1270
BX7 X2 COMPILR 1271
PL X2,ABCALL2 . UNLESS IT IS NOT STANDARD COMPILR 1272
MX2 1 COMPILR 1273
LX2 60-1 COMPILR 1274
BX7 -X2*X7 COMPILR 1275
SA7 A2+0 COMPILR 1276
ABCALL2 BX4 X4+X1 . STACK AN ENTRY WITH X1 AND 0 COUNT COMPILR 1277
BX4 X0*X4 COMPILR 1278
EQ STACKX4 COMPILR 1279
* COMPILR 1280
APARAM SA5 A5 . PARAMETER COMMA COMPILR 1281
SX0 1 . INCREASE NUMBER OF PARAMETERS COMPILR 1282
IX6 X5+X0 . BY ONE COMPILR 1283
SA6 A5 COMPILR 1284
EQ PASS3 COMPILR 1285
* COMPILR 1286
ACALL SA1 A5 . END CALL COMPILR 1287
SA5 A5-1 COMPILR 1288
MX2 42 COMPILR 1289
SX0 X1+1 . NO OF PARAMS TO X0 COMPILR 1290
LX2 18 COMPILR 1291
BX1 -X2*X1 . FUNCTION NAME TO X1 COMPILR 1292
LX0 36 COMPILR 1293
SX2 XCALL COMPILR 1294
BX6 X0+X1 COMPILR 1295
BX6 X2+X6 COMPILR 1296
RJ PASS4 . OUTPUT MICOP COMPILR 1297
SB6 B0-B6 . NEXT MICOP INTO NEW WORD COMPILR 1298
EQ PASS3 COMPILR 1299
* COMPILR 1300
ARGTBR SA5 A5-1 . RIGHT BRACKET COMPILR 1301
SX6 XARRAYV COMPILR 1302
RJ PASS4 COMPILR 1303
EQ PASS3 COMPILR 1304
* COMPILR 1305
ALABEL RJ SCHLBL . LOOK UP LABEL COMPILR 1306
SA2 X1 . CPD TO X2 COMPILR 1307
MX0 42 COMPILR 1308
BX7 X2 COMPILR 1309
AX7 55 COMPILR 1310
* SX7 X7-LPRGDFTY . NOTE LPRGDFTY = 0 COMPILR 1311
ZR X7,ERRLBL . ERROR, LABEL IS ALREADY DEFINED COMPILR 1312
* THE ADDRESS OF THE LABELED MICOP IS COMPUTED COMPILR 1313
* RELATIVE TO PRGBASE: -B6-1-PRGBASE COMPILR 1314
SX7 B0-B6 . B6 IS NEGATIVE COMPILR 1315
SA2 PRGBASE COMPILR 1316
SX6 X1 COMPILR 1317
SX7 X7-1 COMPILR 1318
IX7 X7-X2 COMPILR 1319
BX7 -X0*X7 COMPILR 1320
SA3 LBLLINK . PUT HALF-FINISHED LABEL ON COMPILR 1321
LX3 18 . A LIST COMPILR 1322
BX7 X7+X3 COMPILR 1323
SA6 A3 COMPILR 1324
SA7 X1 COMPILR 1325
JP PASS3 . RETURN COMPILR 1326
* COMPILR 1327
* NOTE THAT THE FOLLOWING CODE SAVES X0 AND X5. THIS FEATURE IS COMPILR 1328
* USED ELSEWHERE IN THE CODE (ACT14). COMPILR 1329
* COMPILR 1330
ACOND SA2 TESTCND . AFTER A CONDITION COMPILR 1331
SX3 3B . SET MASK TO NEITHER S NOR F COMPILR 1332
SX4 X3 COMPILR 1333
EQ B7,B0,ACOND1 COMPILR 1334
AX3 1 . SET MASK TO NO S COMPILR 1335
SA1 MAXSTAT COMPILR 1336
SX7 1RF COMPILR 1337
SA1 X1+2 COMPILR 1338
SX6 1RS COMPILR 1339
LX1 6 COMPILR 1340
BX6 X6-X1 COMPILR 1341
ZR X6,ACOND1 . BRANCH IF S COMPILR 1342
LX3 1 . SET MASK TO NO F COMPILR 1343
BX7 X7-X1 COMPILR 1344
ZR X7,ACOND1 COMPILR 1345
SX1 P2RGTPR COMPILR 1346
EQ ERRCND1 COMPILR 1347
ACOND1 SX2 X2 . CHECK PREVIOUS CONDITION (IF ANY) COMPILR 1348
BX7 X2+X3 . AGAINST MASK COMPILR 1349
SX6 X2 COMPILR 1350
BX2 X2*X3 COMPILR 1351
ZR X6,ACOND3 . SECOND GO TO IS UNCONDITIONAL COMPILR 1352
SX3 X4 COMPILR 1353
ACOND3 LX3 18 COMPILR 1354
BX7 X3+X7 . PRESENT CONDITION TO X7 COMPILR 1355
SA7 A2 COMPILR 1356
ZR X2,PASS3 COMPILR 1357
ACOND2 SX1 P2RGTPR . PREPARE FOR ERROR COMPILR 1358
EQ ERRCND2 . ERRORNEOUS CONDITION COMPILR 1359
* COMPILR 1360
AGT RJ SCHLBL COMPILR 1361
SA2 TESTCND COMPILR 1362
LX1 18 . OUTPUT A GOF, GOS OR GO TO COMPILR 1363
SX6 XGOX . MICOP DEPENDING THE CONDITION COMPILR 1364
AX2 18 COMPILR 1365
IX6 X6+X2 COMPILR 1366
BX6 X6+X1 COMPILR 1367
RJ PASS4 COMPILR 1368
SB6 B0-B6 COMPILR 1369
EQ PASS3 COMPILR 1370
* COMPILR 1371
* BEGIN GOTO TOP EXPRESSION: COMPILR 1372
* DEPENDING ON THE CONDITION, THE FOLLOWING MICRO COMPILR 1373
* SEQUENCES ARE GENERATED: COMPILR 1374
* UNCONDITIONAL: GOF *+1, NOFAIL COMPILR 1375
* S: NOFAIL COMPILR 1376
* F: GOREL BYPASS, GOF *+1, NOFAIL COMPILR 1377
* COMPILR 1378
ABGTT SA2 TESTCND COMPILR 1379
AX2 18 COMPILR 1380
BX2 -X2 COMPILR 1381
SX5 X2+3B COMPILR 1382
ZR X5,ABGTT2 . BRANCH IF UNCONDITIONAL COMPILR 1383
LX5 60-1 COMPILR 1384
PL X5,ABGTT1 . BRANCH IF S COMPILR 1385
LX5 19 COMPILR 1386
SX6 XGOREL . A RELATIVE JUMP WILL BE STORED COMPILR 1387
RJ PASS4 . INSTEAD OF THIS MICOP BY AGTT COMPILR 1388
SA3 PRGBASE COMPILR 1389
SX2 B6 COMPILR 1390
MX0 42 COMPILR 1391
IX3 X3-X2 . RELATIVE MICOP ADDRESS TO X3 COMPILR 1392
BX4 X0*X4 . FORM AN ENTRY USING COMPILR 1393
BX4 X4+X3 . CONDITION CODE AND ADDRESS IN X4 COMPILR 1394
BX4 X4+X5 COMPILR 1395
ABGTT2 MX6 1 COMPILR 1396
SX7 XGOF . OUTPUT GOF *+1 COMPILR 1397
LX6 36 COMPILR 1398
BX6 X6+X7 COMPILR 1399
RJ PASS4 COMPILR 1400
ABGTT1 SX6 XNOFAIL . OUTPUT MICOP TO CHECK COMPILR 1401
RJ PASS4 . AN EVENTUAL FAILURE IN THE COMPILR 1402
EQ STACKX4 . FOLLOWING EXPRESSION COMPILR 1403
* COMPILR 1404
AGTT SA1 A5 COMPILR 1405
SA5 A5-1 . REMOVE TOP OPERATOR COMPILR 1406
SB3 X1 COMPILR 1407
AX1 18 COMPILR 1408
SB2 X1 COMPILR 1409
EQ B0,B2,PASS3 . READY IF UNCONDITIONAL OR S COMPILR 1410
* NOW SET X3 := ABS(B6)-PRGBASE+B3, THE ADDRESS OF THE GOREL COMPILR 1411
SA1 PRGBASE COMPILR 1412
SB2 B0-B6 COMPILR 1413
BX2 -X1 COMPILR 1414
SX3 X2+B6 COMPILR 1415
GE B6,B0,AGTT1 COMPILR 1416
SX3 X2+B2 . REL ADDRESS TO X3 COMPILR 1417
AGTT1 SX3 X3+B3 COMPILR 1418
SX6 XGOREL . RELATIVE JUMP TO X6 COMPILR 1419
MX7 42 COMPILR 1420
BX3 -X7*X3 COMPILR 1421
LX3 18 COMPILR 1422
BX6 X6+X3 COMPILR 1423
SB3 B0-B3 COMPILR 1424
* STORE GOREL AT PRGBASE-B3 COMPILR 1425
SA6 X1+B3 COMPILR 1426
JP PASS3 COMPILR 1427
* COMPILR 1428
EJECT COMPILR 1429
TITLE PASS4 COMPILR 1430
PASS4 NO COMPILR 1431
P4TRCT SA1 X6+MCOPTBL . FETCH TABLE ENTRY COMPILR 1432
NO COMPILR 1433
LX1 40 COMPILR 1434
P4TRC1 NG X1,PASS4B . BRANCH IF LOW ORDER ONLY COMPILR 1435
GE B6,B0,PASS4C COMPILR 1436
SA2 MAXSTAT COMPILR 1437
SB6 B6+1 . B6 IS NEGATIVE COMPILR 1438
SB2 X2+B6 . STORE MICOP IN LOW ORDER BITS COMPILR 1439
SA6 B0-B6 COMPILR 1440
LT B2,B0,PASS4 . CHECK BUMPING AGAINST STATIC COMPILR 1441
PASS4A RJ BUMP COMPILR 1442
EQ PASS4 COMPILR 1443
PASS4C SA1 B6 . STORE MICOP IN HIGH ORDER BITS COMPILR 1444
SX2 X6 COMPILR 1445
AX6 18 COMPILR 1446
LX2 54 . OPERATION TO X2 COMPILR 1447
LX6 36 . ADDRESS TO X6 COMPILR 1448
BX6 X6+X2 COMPILR 1449
SB6 B0-B6 . NEXT MICOP INTO NEW WORD COMPILR 1450
BX6 X6+X1 COMPILR 1451
SA6 B0-B6 COMPILR 1452
EQ PASS4 COMPILR 1453
PASS4B GE B6,B0,PASS4D . STORE MICOP IN LOW ORDER BITS COMPILR 1454
SB6 B0-B6 COMPILR 1455
PASS4D SA2 MAXSTAT COMPILR 1456
SB6 B6-1 COMPILR 1457
SB2 X2 COMPILR 1458
SA6 B6 COMPILR 1459
LT B2,B6,PASS4 COMPILR 1460
EQ PASS4A COMPILR 1461
* X5 SHOULD REALLY BE SAVED HERE *** COMPILR 1462
P4TRCS EQ P4TRC COMPILR 1463
P4TRC SX7 4 COMPILR 1464
BX1 X6 COMPILR 1465
BX6 X4 COMPILR 1466
SA6 P4SVX4 COMPILR 1467
SX6 B5+0 COMPILR 1468
SA6 P4SVB5 COMPILR 1469
RJ TRC COMPILR 1470
SA2 P4SVB5 COMPILR 1471
BX6 X1 COMPILR 1472
SB5 X2 COMPILR 1473
SA1 X1+MCOPTBL COMPILR 1474
LX1 40 COMPILR 1475
SA4 P4SVX4 COMPILR 1476
EQ P4TRC1 COMPILR 1477
* COMPILR 1478
INSKIP SA2 X1+P2TBL+1 COMPILR 1479
SX3 X1-AUXERR COMPILR 1480
LX2 7 COMPILR 1481
SB7 B0 COMPILR 1482
PL X3,PASS2 COMPILR 1483
PL X2,PASS2 COMPILR 1484
NG X1,PASS2 . IGNORE OPERAND COMPILR 1485
SB1 ST1 COMPILR 1486
SA5 BGP3STK COMPILR 1487
SA0 BGP2STK COMPILR 1488
EQ ACT1 COMPILR 1489
* COMPILR 1490
ERRACT1 SX2 WERRACT1 COMPILR 1491
EQ ERRACT COMPILR 1492
ERRACT2 SX2 WERRACT2 COMPILR 1493
EQ ERRACT COMPILR 1494
ERRACT3 SX2 WERRACT3 COMPILR 1495
EQ ERRACT COMPILR 1496
ERRCND1 SX2 WERRCND1 COMPILR 1497
EQ ERRACT COMPILR 1498
ERRCND2 SX2 WERRCND2 COMPILR 1499
EQ ERRACT COMPILR 1500
ERRLBL SX2 WERRLBL COMPILR 1501
SX1 P2RGTPR COMPILR 1502
EQ ERRACT COMPILR 1503
OPRERR1 SX2 WOPRERR1 COMPILR 1504
EQ ERRACT COMPILR 1505
OPRERR2 SX2 WOPRERR2 COMPILR 1506
EQ ERRACT COMPILR 1507
OPRERR3 SX2 WOPRERR3 COMPILR 1508
EQ ERRACT COMPILR 1509
SYXERR SX2 WSYXERR COMPILR 1510
EQ ERRACT COMPILR 1511
SYXERR1 SX2 WSYXERR1 COMPILR 1512
EQ ERRACT COMPILR 1513
SYXERR2 SX2 WSYXERR2 COMPILR 1514
EQ ERRACT COMPILR 1515
SYXERR3 SX2 WSYXERR3 COMPILR 1516
ERRACT SA3 ARROWD . FETCH ERROR DISPLACEMENTS COMPILR 1517
BX7 X2+X3 COMPILR 1518
SA2 ARROWM . FIND WHERE TO STORE MESSAGE POINTECOMPILR 1519
ERRT NG X2,INSKIP . NO MORE ROOM FOR MESSAGES COMPILR 1520
ZR X2,ERRMES . GO TO STORE MESSAGE COMPILR 1521
SA2 A2+1 . NEXT SLOT IN MESSAGE TABLE COMPILR 1522
EQ ERRT COMPILR 1523
ERRMES SA7 A2 . STORE MESSAGE COMPILR 1524
SA2 ERRCNT COMPILR 1525
SX7 X2+1 COMPILR 1526
SA7 A2 . COUNT THE ERROR COMPILR 1527
SB1 -1 COMPILR 1528
EQ INSKIP COMPILR 1529
* COMPILR 1530
AEND SX6 XNOEND COMPILR 1531
RJ PASS4 COMPILR 1532
SX6 XNOEND COMPILR 1533
RJ PASS4 . THE WORD FOR THIS EXTRA END WILL COMPILR 1534
* BE USED FOR THE CODE HEADING COMPILR 1535
SA1 NXTWRD . BRANCH IF NOT COMPILATION COMPILR 1536
PL X1,AEND6 . FROM CARDS COMPILR 1537
SA5 P1ERFLG COMPILR 1538
SB4 X5 . SAVE THE ERROR FLAG COMPILR 1539
* ANNOUNCE SUCCESSFUL COMPILATION ONLY IF NO ERRORS AND LIST NOT OFF. COMPILR 1540
GT B4,B0,ABT1 . COMPILATION ERRORS COMPILR 1541
STREAM OUTSTRM COMPILR 1542
ZR B4,AEND1 . LIST CURRENTLY OFF COMPILR 1543
BX5 X5-X5 COMPILR 1544
RJ PUTFIRST . PRINT BLANK LINE COMPILR 1545
SA2 SMESS COMPILR 1546
SA4 SMESS+1 COMPILR 1547
SA5 SMESS+2 . ISSUE MESSAGE INTO OUTPUT COMPILR 1548
BX6 X2 COMPILR 1549
RJ PUTWD COMPILR 1550
BX6 X4 COMPILR 1551
RJ PUTWD COMPILR 1552
BX6 X5 COMPILR 1553
RJ PUTWD COMPILR 1554
SA5 LC . CHECK IF ALREADY AT END OF PAGE COMPILR 1555
ZR X5,AEND1 COMPILR 1556
SA5 NEWPAGE . MAKE OUTPUT FROM PROGRAM COMPILR 1557
BX6 X5 . BEGIN ON A NEW PAGE COMPILR 1558
RJ PUTWD COMPILR 1559
AEND1 RJ CLOSE1 . WRITE EOR IF ANY LISTING WAS OUTPUTCOMPILR 1560
SA1 SCALL COMPILR 1561
BX6 X1 COMPILR 1562
SA6 1 COMPILR 1563
+ SA1 1 COMPILR 1564
NZ X1,* COMPILR 1565
EQ POST0 . NOW RELOCATE THE CODE COMPILR 1566
AEND6 SA5 ARROWM . CHECK FOR COMPILER ERRORS COMPILR 1567
ZR X5,POST0 . NO COMPILATION ERRORS COMPILR 1568
SB5 -51 COMPILR 1569
EQ RTERROR COMPILR 1570
ABT1 STREAM OUTSTRM COMPILR 1571
BX5 X5-X5 COMPILR 1572
RJ PUTFIRST . BLANK LINE COMPILR 1573
SA1 ERRCNT COMPILR 1574
RJ ICX1X6 . CHANGE BINARY IN X1 TO STRING IN X6COMPILR 1575
* COMPILR 1576
* TAKE STRING LEFT JUSTIFIED IN X6, RIGHT JUSTIFY IT IN THE COMPILR 1577
* LEFTMOST 30 BITS, WITH BLANK FILL AT BEGINNING COMPILR 1578
* COMPILR 1579
MX2 24 COMPILR 1580
LX2 60-6 COMPILR 1581
MX5 6 . CHARACTER MASK COMPILR 1582
LX5 36 COMPILR 1583
SA4 LBLANK COMPILR 1584
ABT2 BX3 X6*X5 . RIGHTMOST POSITION COMPILR 1585
NZ X3,ABT3 . NUMBER IS RIGHT JUSTIFIED COMPILR 1586
AX6 6 COMPILR 1587
BX6 X6*X2 . MASK OUT POSSIBLE SIGN EXTENSION COMPILR 1588
BX6 X6+X4 . INSERT BLANK COMPILR 1589
EQ ABT2 COMPILR 1590
ABT3 SA2 ERRMSG COMPILR 1591
MX5 30 COMPILR 1592
BX2 -X5*X2 . GET READY TO INSERT NUMBER COMPILR 1593
BX6 X6+X2 COMPILR 1594
SA6 ERRMSG . STORE MESSAGE WITH NUMBER INSERTED COMPILR 1595
RJ PUTWD . SEND MESSAGE TO OUTPUT COMPILR 1596
SA2 ERRMSG+1 COMPILR 1597
SA4 ERRMSG+2 COMPILR 1598
BX6 X2 COMPILR 1599
RJ PUTWD COMPILR 1600
BX6 X4 COMPILR 1601
RJ PUTWD COMPILR 1602
SA1 ECALL . ISSUE MESSAGE TO DAYFILE ALSO COMPILR 1603
BX6 X1 COMPILR 1604
SA6 1 COMPILR 1605
+ SA1 1 COMPILR 1606
NZ X1,* COMPILR 1607
EQ ABT . GO ABORT JOB NOW COMPILR 1608
* COMPILR 1609
ECALL VFD 18/3LMSG,42/ERRMSG COMPILR 1610
ERRMSG DIS ,$ COMPILATION ERROR(S) $ COMPILR 1611
LBLANK VFD 6/1H ,54/0 COMPILR 1612
NEWPAGE DATA 2L1 ******* 1
* COMPILR 1614
TITLE COMPILATION TIME FIELDLENGTH REQUEST COMPILR 1615
* BUMP IS CALLED WHENEVER THE COMPILER RUNS OUT OF STORAGE COMPILR 1616
* X0,X1,X2,X6,X7 COMPILR 1617
* COMPILR 1618
BUMP DATA 0 COMPILR 1619
SA1 COMPB7 COMPILR 1620
SX0 B7 COMPILR 1621
SB7 X1 . START OF FREE CHAIN COMPILR 1622
SA1 FRSTWRD . ENTRY IN THE STACK COMPILR 1623
SA2 NXTWRD COMPILR 1624
NG X2,BUMP3 COMPILR 1625
SX6 B7 COMPILR 1626
SB7 X1 COMPILR 1627
BUMP2 SA1 X1 . FREE THE TRANSLATED SOURCE COMPILR 1628
SX1 X1+0 . STRING COMPILR 1629
BX7 X1-X2 COMPILR 1630
NZ X7,BUMP2 COMPILR 1631
SA6 A1 COMPILR 1632
BX7 X1 . STORE LINK AT SPECIAL COMPILR 1633
SA1 MINHS . HS LOCATION COMPILR 1634
SA7 X1 COMPILR 1635
BUMP3 SX6 B6 . SAVE LAST MICOP ADDRESS COMPILR 1636
BX7 X7-X7 COMPILR 1637
SA2 MAXSTAT . DELIMIT HS BY 0 WORD, COMPILR 1638
SA2 X2 . CONTENTS WILL BE RESTORED BELOW COMPILR 1639
SA7 A2 COMPILR 1640
SA1 MAXSTAK COMPILR 1641
SB6 X1+1 COMPILR 1642
SB6 B0-B6 . STACK TOP COMPILR 1643
SX7 A0 . SAVE PASS 2 STACK POINTER COMPILR 1644
SA0 BUFF5 . REQUEST MORE STACK SPACE COMPILR 1645
RJ RESERVE COMPILR 1646
SA1 MAXSTAK COMPILR 1647
SA0 X7 . RESTORE PASS 2 STACK POINTER COMPILR 1648
BX7 X2 COMPILR 1649
SA2 MAXSTAT COMPILR 1650
SA7 X2 COMPILR 1651
SX7 B7 COMPILR 1652
SA7 COMPB7 COMPILR 1653
* MOVE THE COMBINED MICOP AND SS AREAS TOWARD HIGH COMPILR 1654
* CORE AS FAR AS POSSIBLE, TO EXTEND CS COMPILR 1655
SB6 B6-BUFF5 . B7 = DISP = -(MAXSTAK+1) - COMPILR 1656
SB7 X1+1 . (B6-BUFF5) COMPILR 1657
SB7 B0-B7 . B5 = LENGTH = B6-BUFF5-MAXSTAT COMPILR 1658
SB7 B7-B6 COMPILR 1659
BX1 -X2 COMPILR 1660
SB6 X1+B6 COMPILR 1661
BUMP4 SA1 X2+B6 . PUSH THE STACK AND MICOPS COMPILR 1662
SB6 B6-1 . INTO THE NEW AREA COMPILR 1663
BX7 X1 COMPILR 1664
SA7 A1+B7 COMPILR 1665
GE B6,B0,BUMP4 COMPILR 1666
SA1 PRGBASE COMPILR 1667
SX7 X1+B7 COMPILR 1668
SA7 A1 COMPILR 1669
SB6 X6 COMPILR 1670
GE B6,B0,BUMP5 COMPILR 1671
SB7 B0-B7 COMPILR 1672
BUMP5 SB6 B6+B7 . RESTORE MICOP ADDRESS COMPILR 1673
SB7 X0 . RESTORE OPSIT COMPILR 1674
SA1 NXTWRD COMPILR 1675
NG X1,BUMP COMPILR 1676
SA2 MINHS . RESTORE SOURCE STRING POINTER COMPILR 1677
SA2 X2+0 COMPILR 1678
BX6 X6-X6 COMPILR 1679
BX7 X2 COMPILR 1680
SA6 A2 COMPILR 1681
SA7 A1 COMPILR 1682
SA7 FRSTWRD COMPILR 1683
EQ BUMP COMPILR 1684
TITLE PASS0 COMPILR 1685
* COMPILR 1686
P0EXIT NG B4,P0XFER . NO CHARACTERS TO RETURN, GO AGAIN COMPILR 1687
SX0 -77B . =HOLE 6 COMPILR 1688
* COMPILR 1689
PASS0 BSSZ 1 . ENTRY/EXIT COMPILR 1690
P0XFER SA2 P0STWD . FETCH COMPILR 1691
SB2 X2+0 . CO-ROUTINE LINK COMPILR 1692
JP B2 . AND TRANSFER COMPILR 1693
* COMPILR 1694
* COMPILR 1695
* LINE BEGINS A STATEMENT, COMMENT, OR DIRECTIVE. COMPILR 1696
* COMPILR 1697
NEWUNIT0 RJ PRINERR . PRINT ANY PENDING ERROR MESSAGES COMPILR 1698
NEWUNIT STREAM INSTRM COMPILR 1699
MX5 6 COMPILR 1700
+ RJ GETWD . GET NEXT WORD IN X1 (SAVES X5) COMPILR 1701
- VFD 30/ENDPRG1 . END-OF-RECORD REACHED COMPILR 1702
SA4 P1ERFLG . FLAG=0 => NO LIST COMPILR 1703
BX2 X5*X1 . EXTRACT FIRST CHARACTER COMPILR 1704
LX2 6 . OF NEW LINE COMPILR 1705
IFCH *,COMMENT COMPILR 1706
IFCH -,DIRECTIV COMPILR 1707
* COMPILR 1708
* A NEW STATEMENT BEGINS. COMPILR 1709
* COMPILR 1710
ZR X4,INSTMT1 . DO NOT LIST THE STATEMENT NUMBER COMPILR 1711
BX0 X0-X0 . INITIALIZE CHAR COUNT = 0 COMPILR 1712
BX6 X1 . SAVE THE COMPILR 1713
SA6 CURWD . SOURCE WORD COMPILR 1714
SA1 RULENO . CONVERT BINARY TO COMPILR 1715
RJ ICX1X6 . LJZF CODED DECIMAL IN X6 COMPILR 1716
SA1 P0FILLTB+X0 . WITH LENGTH ADDED TO (X0) COMPILR 1717
BX5 X6+X1 . BLANK FILLED STATEMENT NO. TO X5 COMPILR 1718
LX5 60-6 . LEFT JUSTIFY A BLANK FOR CARR. CTL.COMPILR 1719
RJ PUTFIRST . LIST FIRST WORD OF THE NEW LINE COMPILR 1720
SA1 CURWD COMPILR 1721
JP INSTMT1 COMPILR 1722
* COMPILR 1723
BSS 0 . FORCE UPPER COMPILR 1724
P0FILLTB EQU *-1 COMPILR 1725
I SET 9 COMPILR 1726
DUP 5 . EXPECTED LOG10(STMT. NO.) [ 5 COMPILR 1727
B2DMIC MICRO I,1,/123456789/ . CONVERT SYMBOL VALUE TO CHARACTER COMPILR 1728
DATA 'B2DMIC'R . RIGHT-JUSTIFIED BLANKS COMPILR 1729
I SET I-1 COMPILR 1730
ENDD COMPILR 1731
* COMPILR 1732
* COMPILR 1733
* LIST A COMMENT LINE OF UP TO 90 CHARACTERS, PRECEDED BY 10 BLANKS. COMPILR 1734
* COMPILR 1735
COMMENT ZR X4,SKIPLINE . NO LIST, SKIP THIS LINE COMPILR 1736
SA2 BLANKS COMPILR 1737
BX7 X1 COMPILR 1738
BX5 X2 COMPILR 1739
SA7 CURWD . SAVE FIRST WORD OF COMMENT LINE COMPILR 1740
NO COMPILR 1741
SB4 B2 . SAVE INPUT STREAM POINTER COMPILR 1742
RJ PUTFIRST . PRINT 10 SPACES COMPILR 1743
SA1 CURWD COMPILR 1744
SB3 9 . (90 CHARS/LINE)/(10CHARS/WD) COMPILR 1745
* . = 9 WDS/LINE COMPILR 1746
SX5 7777B COMPILR 1747
SB5 B2+0 . SAVE OUTPUT STREAM PTR COMPILR 1748
COMMENTL BX6 X1 COMPILR 1749
RJ PUTWD COMPILR 1750
SB3 B3-1 COMPILR 1751
BX1 X5*X6 COMPILR 1752
SB2 B4 . RESTORE INPUT STREAM POINTER COMPILR 1753
ZR X1,NEWUNIT . END OF LINE IMAGE, ALL DONE COMPILR 1754
ZR B3,COMMENTE . PRINT EOL AND SKIP COMPILR 1755
+ RJ GETWD COMPILR 1756
- VFD 30/ENDPRG1 . END OF RECORD, OUTPUT END SYMBOL COMPILR 1757
SB2 B5 . RESET STREAM TO OUTPUT COMPILR 1758
JP COMMENTL COMPILR 1759
* COMPILR 1760
COMMENTE BX6 X6-X6 . WORD WITH ZERO BYTE COMPILR 1761
SB2 B5 . OUTPUT STREAM POINTER COMPILR 1762
RJ PUTWD COMPILR 1763
SB2 B4+0 . RESTORE INPUT STREAM POINTER COMPILR 1764
* COMPILR 1765
SKIPLINE RJ SKIPWDS . B2, X1 ARE SET TO STREAM, CUR. WORDCOMPILR 1766
- VFD 30/ENDPRG1 COMPILR 1767
JP NEWUNIT COMPILR 1768
* COMPILR 1769
* COMPILR 1770
* PROCESS A DIRECTIVE. COMPILR 1771
* COMPILR 1772
DIRECTIV BX2 X1 COMPILR 1773
LX2 6 . EXTRACT SECOND COMPILR 1774
BX2 X5*X2 . CHARACTER OF COMPILR 1775
LX2 6 . INPUT WORD COMPILR 1776
* COMPILR 1777
IFCH E,EJECT . SKIP LISTING TO NEW PAGE COMPILR 1778
IFCH S,SPACE . PRINT BLANK LINE COMPILR 1779
IFCH U,UNLIST . SUPPRESS LISTING COMPILR 1780
IFCH L,LIST . SET LIST MODE COMPILR 1781
* COMPILR 1782
JP COMMENT . TREAT UNKNOWN DIRECTIVE AS A COMMENCOMPILR 1783
* COMPILR 1784
EJECT ZR X4,SKIPLINE . IGNORE DIRECTIVE IF LIST SUPPRESSEDCOMPILR 1785
SX6 0 . SET REMAINING LINES COUNT = 0, COMPILR 1786
SA6 LC . FORCING NEXT OUTPUT TO NEW PAGE COMPILR 1787
JP SKIPLINE . SKIP REST OF DIRECTIVE LINE COMPILR 1788
* COMPILR 1789
SPACE RJ SKIPWDS COMPILR 1790
- VFD 30/*+1 COMPILR 1791
ZR X4,NEWUNIT . IGNORE DIRECTIVE IF LIST SUPPRESSEDCOMPILR 1792
STREAM OUTSTRM COMPILR 1793
BX5 X5-X5 COMPILR 1794
RJ PUTFIRST . PRINT BLANK LINE COMPILR 1795
JP NEWUNIT COMPILR 1796
* COMPILR 1797
UNLIST SX6 0 . FLAG VALUE FOR NO LIST COMPILR 1798
JP LSTUNLST COMPILR 1799
* COMPILR 1800
LIST SX6 -1 . FLAG VALUE FOR LIST COMPILR 1801
LSTUNLST SB3 X4 . RECALL X4 CONTAINS LIST FLAG COMPILR 1802
GT B3,B0,SKIPLINE . ERROR MODE, IGNORE LIST DIRECTIVE COMPILR 1803
SA6 A4 . STORE NEW LIST MODE COMPILR 1804
JP SKIPLINE . SKIP REST OF DIRECTIVE LINE COMPILR 1805
* COMPILR 1806
* COMPILR 1807
* AT THE BEGINNING OF A CONTINUATION LINE. COMPILR 1808
* COMPILR 1809
NEWLINE RJ PRINERR . PRINT ANY PENDING ERROR MESSAGES COMPILR 1810
SA1 P1ERFLG . FLAG IS ZERO FOR NO LIST COMPILR 1811
ZR X1,NEWLINNL . NO LIST COMPILR 1812
SA2 BLANKS . =10H COMPILR 1813
BX5 X2 . WE MUST NOT CLOBBER A5 COMPILR 1814
RJ PUTFIRST . LIST 10 SPACES TO BEGIN NEW LINE COMPILR 1815
NEWLINNL STREAM INSTRM COMPILR 1816
+ RJ GETWD COMPILR 1817
- VFD 30/400000B+* . (EOR IS IMPOSSIBLE) COMPILR 1818
SB4 54-6 . TENTATIVE SHIFT COUNT COMPILR 1819
MX3 60-2*6 COMPILR 1820
BX4 -X3*X1 COMPILR 1821
NZ X4,INSTMTCK . X1 CONTAINS 9 OR 10 CHARS COMPILR 1822
SX5 PHYSEOL . ZERO BYTE ENCOUNTERED COMPILR 1823
BX4 X1 COMPILR 1824
LX4 6 . LEFT JUSTIFY THE ACTUAL TEXT CHARSCOMPILR 1825
STREAM OUTSTRM,2 . (DO NOT CLOBBER X1 NOW) COMPILR 1826
SX2 1 . INITIALIZE COLUMN INCREMENT COMPILR 1827
JP INSTMTZB . GO PROCESS ZERO BYTE COMPILR 1828
* COMPILR 1829
* COMPILR 1830
* IN THE MIDST OF A LINE OF STATEMENTS. COMPILR 1831
* COMPILR 1832
INSTMT STREAM INSTRM COMPILR 1833
+ RJ GETWD . GET NEXT WORD IN X1 COMPILR 1834
- VFD 30/*+1 . (END-OF-RECORD RETURNS X1 = 0) COMPILR 1835
INSTMT1 SB4 54 . TENTATIVE SHIFT COUNT COMPILR 1836
INSTMTCK STREAM OUTSTRM,2 . (DO NOT CLOBBER X1 NOW) COMPILR 1837
BX4 X1 COMPILR 1838
SX2 10 . TENTATIVE COLUMN INCREMENT COMPILR 1839
SX5 INSTMT . AND STATE COMPILR 1840
MX3 60-6 . EXTRACT LAST COMPILR 1841
BX3 -X3*X1 . CHARACTER COMPILR 1842
NZ X3,INSTMT10 . 10 CHARACTERS PRESENT COMPILR 1843
MX3 60-2*6 . EXTRACT COMPILR 1844
BX3 -X3*X1 . LAST BYTE COMPILR 1845
NZ X3,INSTMT9 . NOT A ZERO BYTE COMPILR 1846
SX5 PHYSEOL . ZERO BYTE ENCOUNTERED COMPILR 1847
SX2 0 . INITIALIZE COLUMN INCREMENT COMPILR 1848
INSTMTZB MX3 6 COMPILR 1849
SB4 -6 COMPILR 1850
ISZBL BX6 X3*X4 COMPILR 1851
ZR X6,INSTMT10 . X4 CONTAINS (B4+6)/6 CHARACTERS COMPILR 1852
LX4 6 COMPILR 1853
SB4 B4+6 COMPILR 1854
SX2 X2+1 COMPILR 1855
JP ISZBL COMPILR 1856
* COMPILR 1857
* THE BUFFER WORD CONTAINS NINE CHARACTERS, PRESUMABLY INDICATING A COMPILR 1858
* NONSTANDARD, ODD-LENGTH SCOPE UNIT RECORD; THE NEXT BUFFER WORD WILLCOMPILR 1859
* THUS CONTAIN ALL ZEROS. COMPILR 1860
* COMPILR 1861
INSTMT9 LX4 60-6 . RIGHT JUSTIFY THE CHARACTERS, COMPILR 1862
SB4 B4-6 . AND REDUCE THE SHIFT COUNT COMPILR 1863
* COMPILR 1864
INSTMT10 SA3 P0STWD COMPILR 1865
UX3 B3,X3 . SET B3 = OLD COLUMN NUMBER COMPILR 1866
SB3 B3+X2 COMPILR 1867
SA2 P1ERFLG . FLAG=0 => NO LIST COMPILR 1868
SB5 B3-72 COMPILR 1869
BX6 X1 COMPILR 1870
PL B5,LOGEOL . LOGICAL END-OF-LINE REACHED COMPILR 1871
PX7 B3,X5 . PACK NEW COLUMN NUMBER, STATE COMPILR 1872
SA7 A3 . STORE UPDATED STATE WORD COMPILR 1873
BX7 X4 COMPILR 1874
SA7 CURWD COMPILR 1875
ZR X2,P0EXIT . NO LIST, ALL FINISHED COMPILR 1876
RJ PUTWD . (SAVES X4) COMPILR 1877
JP P0EXIT . RETURN COMPILR 1878
* COMPILR 1879
* COMPILR 1880
* THE PHYSICAL END-OF-LINE (ZERO BYTE) HAS BEEN REACHED. IN THIS STATECOMPILR 1881
* WE SUPPLY TRAILING BLANKS THROUGH COLUMN 72 IF PASS1 IS IN THE MIDST COMPILR 1882
* OF A QUOTED LITERAL. OTHERWISE LOGICAL EOL PROCESSING IS INITIATED. COMPILR 1883
* COMPILR 1884
PHYSEOL SA1 P1LTFLG . FLAG=0 => NOT INSIDE A LITERAL COMPILR 1885
NZ X1,PHYSEOLB . SUPPLY TRAILING BLANKS COMPILR 1886
SB4 -6 . SET B4,X4 TO INDICATE COMPILR 1887
SX4 0 . ZERO CHARACTERS, AND COMPILR 1888
JP LOGEOLP . PROCESS LOGICAL EOL COMPILR 1889
* COMPILR 1890
* IF TRAILING BLANKS ARE TO BE SUPPLIED, THEY ARE SENT 10 AT A TIME COMPILR 1891
* UNTIL COLUMN 72 IS REACHED. NOTE THAT WHEN THE CODE BELOW TRANSFERS COMPILR 1892
* INTO LOGEOL , X4 CONTAINS NOT MORE THAN 8 CHARACTERS, LEAVING ROOM COMPILR 1893
* FOR THE EOS WHICH MAY BE APPENDED. COMPILR 1894
* COMPILR 1895
PHYSEOLB UX6 B3,X2 . RECALL X2 CONTAINS P0STWD COMPILR 1896
SB5 B3+10 . INCREMENT COLUMN NUMBER COMPILR 1897
MX0 60-6 COMPILR 1898
SB4 54 . TENTATIVE SHIFT COUNT COMPILR 1899
SA4 BLANKS COMPILR 1900
SB3 B5-72 COMPILR 1901
GT B3,B0,PHYSEOLX . 10 BLANKS WOULD BE TOO MANY COMPILR 1902
PHYSEOLC PX7 B5,X6 COMPILR 1903
SA7 P0STWD . STORE UPDATED STATE WORD COMPILR 1904
BX6 X4 COMPILR 1905
SA6 CURWD COMPILR 1906
JP PASS0 . RETURN (B4 IS NON-NEGATIVE) COMPILR 1907
* COMPILR 1908
* BEFORE TRANSFERRING INTO LOGEOL WE MUST COMPUTE THE SHIFT COUNT ANDCOMPILR 1909
* CLEAR (AT LEAST) TWO POSITIONS IN X4 AS PER THE CLAIM MADE IN THE COMPILR 1910
* PREVIOUS COMMENT. COMPILR 1911
* COMPILR 1912
PHYSEOLX SB2 B3-1 COMPILR 1913
ZR B2,PHYSEOLY COMPILR 1914
SB3 B3+B3 . SET B3 = 2 * (NO. OF EXTRA CHARS.) COMPILR 1915
SB5 B3+B3 COMPILR 1916
SB3 B5+B3 . 6 * N COMPILR 1917
SB4 B4-B3 . NOW -6 [ B4 [ 36 COMPILR 1918
MX5 12 . ENSURE ROOM COMPILR 1919
BX4 -X5*X4 . FOR A SUFFIXED EOS COMPILR 1920
JP LOGEOLP COMPILR 1921
* COMPILR 1922
PHYSEOLY SB4 B4-6 COMPILR 1923
SB5 B5-1 COMPILR 1924
JP PHYSEOLC COMPILR 1925
* COMPILR 1926
* COMPILR 1927
* LOGICAL END-OF-LINE (COLUMN 72) REACHED. COMPILR 1928
* COMPILR 1929
LOGEOL SB3 X5-PHYSEOL . SAVE HANDLE TO THE STATE COMPILR 1930
MX0 2*6 COMPILR 1931
BX4 X0*X1 . COLUMNS 71 AND 72 COMPILR 1932
BX5 -X0*X1 . COLS. 73 THROUGH 80 COMPILR 1933
SB4 X2 . SET B4 = LIST FLAG, ZERO => NO LISTCOMPILR 1934
ZR B4,LOGEOL1 . SKIP LISTING COLUMNS 71 AND UP COMPILR 1935
ZR X5,LOGEOL72 . NO CHARACTERS PAST THE 72-ND COMPILR 1936
SA3 BLANKS . =10H COMPILR 1937
BX1 -X0*X3 . =8R COMPILR 1938
BX3 X0*X3 . =2L COMPILR 1939
BX6 X4+X1 COMPILR 1940
BX5 X3+X5 COMPILR 1941
RJ PUTWD . LIST COLS. 71,72 (SAVE B3,B4,X4,X5)COMPILR 1942
BX6 X5 . SET X6 = COLUMNS 73 THROUGH 80 COMPILR 1943
LOGEOL72 RJ PUTWD . LIST (X6) COMPILR 1944
LOGEOL1 ZR B3,LOGEOL2 . END OF PHYSICAL LINE ALREADY SEEN COMPILR 1945
SB3 B2 . SAVE OUTPUT STREAM POINTER COMPILR 1946
STREAM INSTRM COMPILR 1947
+ RJ GETWD COMPILR 1948
- VFD 30/LOGEOL2 COMPILR 1949
BX6 X1 . SAVE COLS. 81 THROUGH 90 COMPILR 1950
+ RJ SKIPWDS . MOVE UP TO ZERO BYTE COMPILR 1951
- VFD 30/*+1 . IGNORE END OF RECORD COMPILR 1952
ZR B4,LOGEOL2 . NO LIST COMPILR 1953
MX0 60-2*6 COMPILR 1954
BX5 -X0*X6 COMPILR 1955
SB2 B3 . RESTORE OUTPUT STREAM POINTER COMPILR 1956
RJ PUTWD . LIST 81 THRU 90 AS 91 THRU 100 COMPILR 1957
ZR X5,LOGEOL2 . LAST WORD HAD ZERO BYTE COMPILR 1958
BX6 X6-X6 COMPILR 1959
RJ PUTWD COMPILR 1960
LOGEOL2 LX4 12 COMPILR 1961
SB4 6 COMPILR 1962
* COMPILR 1963
* NOW WE PEEK INTO THE BUFFER TO SEE WHETHER THE CURRENT LINE IS COMPILR 1964
* CONTINUED; IF NOT AN EOS SYMBOL SHOULD BE APPENDED TO THE CURRENT COMPILR 1965
* LINE. COMPILR 1966
* COMPILR 1967
LOGEOLP STREAM INSTRM COMPILR 1968
+ RJ PEEKWD COMPILR 1969
- VFD 30/LOGEOLEP . END-OF-RECORD MEANS NOT CONTINUED COMPILR 1970
SX0 -77B COMPILR 1971
LX1 6 COMPILR 1972
BX2 -X0*X1 COMPILR 1973
SX6 NEWLINE . TENTATIVE NEXT STATE COMPILR 1974
IFCH .,LOGEOLX . YES, IT IS TO BE CONTINUED COMPILR 1975
IFCH +,LOGEOLX . ALTERNATE CONTINUATION CHARACTER COMPILR 1976
SX6 NEWUNIT0 COMPILR 1977
LOGEOLNC LX4 6+6 COMPILR 1978
* SX7 P1EOS . COMPILR 1979
* BX4 X4+X7 . NOTE: SYMBOL = 0 COMPILR 1980
SB4 B4+6+6 . APPEND SYMBOL COMPILR 1981
LOGEOLX PX6 B0,X6 . PACK COLUMN NUMBER = 0, STATE COMPILR 1982
BX7 X4 COMPILR 1983
SA6 P0STWD COMPILR 1984
SA7 CURWD COMPILR 1985
JP P0EXIT . RETURN COMPILR 1986
* COMPILR 1987
LOGEOLEP SX6 ENDPRG . NEXT STATE COMPILR 1988
JP LOGEOLNC . APPEND EOS COMPILR 1989
* COMPILR 1990
* COMPILR 1991
* THE END OF THE SOURCE HAS BEEN REACHED. COMPILR 1992
* COMPILR 1993
ENDPRG RJ PRINERR COMPILR 1994
ENDPRG1 SX4 P1END . COMPILR 1995
BX7 X4 COMPILR 1996
MX0 60-6 COMPILR 1997
SA7 CURWD COMPILR 1998
SB4 6 COMPILR 1999
* COMPILR 2000
SA1 INSTRM COMPILR 2001
SA1 X1+FI.FET+FET.LFN COMPILR 2002
MX6 1 COMPILR 2003
LX6 60-FS.EOR COMPILR 2004
BX6 -X6*X1 . CLEAR END-OF-RECORD STATUS COMPILR 2005
SA6 A1 . FROM THE INPUT FILE COMPILR 2006
* COMPILR 2007
JP PASS0 . RETURN (B4 IS NON-NEGATIVE) COMPILR 2008
* COMPILR 2009
* COMPILR 2010
* HERE WE FETCH THE NEXT STRING WORD WHEN COMPILING VIA COMPILE(). COMPILR 2011
* COMPILR 2012
GETNEXT SA1 NXTWRD . FETCH ADDRESS OF NEXT WORD COMPILR 2013
SB4 36 . TENTATIVE RIGHT SHIFT COUNT COMPILR 2014
SA4 X1 . FETCH THE WORD COMPILR 2015
SX6 X4 COMPILR 2016
SA6 A1 . UPDATE NXTWRD COMPILR 2017
MX0 60-6 COMPILR 2018
LX4 60-18 COMPILR 2019
NZ X6,GETNEXTY . NOT TO END OF STRING COMPILR 2020
GETNEXTL BX1 -X0*X4 COMPILR 2021
NZ X1,GETNEXTX . THE CHARACTERS ARE RJZF COMPILR 2022
LX4 60-6 COMPILR 2023
SB4 B4-6 COMPILR 2024
EQ GETNEXTL COMPILR 2025
* COMPILR 2026
GETNEXTX SB4 B4+6+6 COMPILR 2027
SX7 P1EOSEND . COMPILR 2028
LX4 6+6 COMPILR 2029
BX4 X4+X7 COMPILR 2030
GETNEXTY NO COMPILR 2031
BX7 X4 COMPILR 2032
SA7 CURWD COMPILR 2033
JP PASS0 . RETURN COMPILR 2034
* COMPILR 2035
* COMPILR 2036
* COMPILER INTERPASS TRACE ROUTINE. COMPILR 2037
* COMPILR 2038
TRC DATA 0 COMPILR 2039
BX5 X1 COMPILR 2040
BX6 X6-X6 COMPILR 2041
STREAM OUTSTRM COMPILR 2042
SB3 X7 . SAVE BLANK-WORD COUNT COMPILR 2043
RJ PUTWD . GUARANTEE ZERO BYTE COMPILR 2044
SA2 BLANKS COMPILR 2045
BX6 X2 COMPILR 2046
SX4 X5 COMPILR 2047
TRC1 SB3 B3-1 COMPILR 2048
RJ PUTWD COMPILR 2049
NZ B3,TRC1 COMPILR 2050
MX0 57 COMPILR 2051
MX3 60-6 COMPILR 2052
SX2 1R% COMPILR 2053
NG X4,TRC3 COMPILR 2054
TRC2 BX2 -X0*X4 COMPILR 2055
AX4 3 COMPILR 2056
SX2 X2+1R0 COMPILR 2057
TRC3 BX6 X3*X6 COMPILR 2058
BX6 X2+X6 COMPILR 2059
LX6 54 COMPILR 2060
NZ X4,TRC2 COMPILR 2061
RJ PUTWD COMPILR 2062
BX1 X5 COMPILR 2063
EQ TRC COMPILR 2064
* COMPILR 2065
* COMPILR 2066
* PUTFIRST LISTS THE FIRST WORD OF A LINE OF THE COMPILATION LISTING. COMPILR 2067
* IT INCREMENTS TEH LINE COUNTER AND, IF NECESSARY, STARTS A NEW PATE COMPILR 2068
* WITH THE HEADING. THE GIVEN WORD IS OUTPUT, AND CHKOUTB IS CALLED COMPILR 2069
* TO DECIDE WHETHER AN ASYNCHRONOUS WRITE COMMAND SHOULD BE ISSUED YET.COMPILR 2070
* COMPILR 2071
* PARAMETER: X5 = WORD TO BE LISTED COMPILR 2072
* COMPILR 2073
* SAVES: A0,A5,B1,B4,B6,B7,X5 COMPILR 2074
* COMPILR 2075
PUTFRST1 SX7 X2-1 . DECREMENT COUNT OF COMPILR 2076
SA7 A2+0 . LINES REMAINING, THIS PAGE COMPILR 2077
PUTFRST2 RJ PUTWD . OUTPUT THE GIVEN WORD COMPILR 2078
RJ CHKOUTB COMPILR 2079
PUTFIRST BSSZ 1 . ENTRY/EXIT COMPILR 2080
STREAM OUTSTRM . SET B2 = OUTPUT FILE BLOCK WORD 0 COMPILR 2081
BX6 X5 COMPILR 2082
SA2 LC COMPILR 2083
NZ X2,PUTFRST1 . ROOM FOR ANOTHER LINE EXISTS COMPILR 2084
SA1 PAGENO COMPILR 2085
SX7 LINPPG-3 . RESET COMPILR 2086
SA7 A2 . LINE COUNTER COMPILR 2087
SX7 X1+1 . ADVANCE COMPILR 2088
SA7 A1 . PAGE NUMBER COMPILR 2089
SB5 TITLE-ENDTITL . -(LENGTH OF TITLE) COMPILR 2090
RJ ICX1X6 . (SAVES B2,B5,X5) COMPILR 2091
SA6 PAGE . NOTE: (X6) ARE LJZF COMPILR 2092
PUTFRSTL SA1 ENDTITL+B5 . PRINT COMPILR 2093
BX6 X1 . TITLE"I!, COMPILR 2094
SB5 B5+1 . I = 1, 2, ..., N, COMPILR 2095
RJ PUTWD . WHERE COMPILR 2096
NG B5,PUTFRSTL . N = ENDTITL-TITLE COMPILR 2097
BX6 X6-X6 . PRINT BLANK LINE COMPILR 2098
RJ PUTWD . AFTER HEADING COMPILR 2099
BX6 X5 COMPILR 2100
JP PUTFRST2 COMPILR 2101
* COMPILR 2102
* COMPILR 2103
* PRINERR COMPILR 2104
* COMPILR 2105
PRINERR BSSZ 1 . ENTRY/EXIT COMPILR 2106
SA1 ARROWM . ARE THERE ANY ERROR MESSAGES COMPILR 2107
ZR X1,PRINERR . NO ERRORS TO PRINT COMPILR 2108
SX6 B6 . B6 MUST BE SAVED COMPILR 2109
PX6 B7,X6 . MUST ALSO SAVE B7 COMPILR 2110
SA6 SB6PR COMPILR 2111
SX6 A5 . A5 MUST BE SAVED COMPILR 2112
PX6 B1,X6 . B1 MUST ALSO BE SAVED COMPILR 2113
SA6 SB1PR COMPILR 2114
BX5 X5-X5 COMPILR 2115
RJ PUTFIRST . OUTPUT BLANK LINE COMPILR 2116
SA5 =10H **ERROR** COMPILR 2117
RJ PUTFIRST . PRINT **ERROR** COMPILR 2118
SB7 0 COMPILR 2119
SA1 ARROWM . REFETCH FIRST ERROR MESSAGE COMPILR 2120
PRERR SB6 X1 . ADDRESS OF ERROR MESSAGE COMPILR 2121
AX1 18 COMPILR 2122
SB4 X1 . COLUMN WITHIN LAST WORD COMPILR 2123
AX1 18 COMPILR 2124
SB1 X1 . WHOLE WORDS COMPILR 2125
NE B7,PRERR2 . ACCOUNT FOR PRINTING **ERROR** COMPILR 2126
SB1 B1-10 . ACCOUNT FOR PRINTING **ERROR** COMPILR 2127
PRERR2 SB5 -B1 COMPILR 2128
SB5 B5+50 . PRINT ERROR MESSAGE FAR TO RIGHT COMPILR 2129
SA5 BLANKS . WORD OF 10 BLANKS COMPILR 2130
BX6 X5 COMPILR 2131
PRERRB LE B1,PRERRA COMPILR 2132
RJ PUTWD . SEND APPROPRIATE NUMBER OF BLANKS COMPILR 2133
SB1 B1-10 . DECREMENT COUNT OF BLANK WORKS COMPILR 2134
EQ PRERRB COMPILR 2135
PRERRA SA5 ARROW . BLANKS ALL PRINTED COMPILR 2136
LX6 B4,X5 . POSITION ARROW UNDER ERROR COMPILR 2137
RJ PUTWD . SEND THE ARROR COMPILR 2138
PRERRB2 LE B5,PRERRM COMPILR 2139
SA5 BLANKS COMPILR 2140
BX6 X5 COMPILR 2141
RJ PUTWD COMPILR 2142
SB5 B5-10 COMPILR 2143
EQ PRERRB2 COMPILR 2144
PRERRM SA5 B6 . FETCH FIRST WORD OF MESSAGE COMPILR 2145
BX6 X5 COMPILR 2146
RJ PUTWD COMPILR 2147
SA5 A5+1 COMPILR 2148
BX6 X5 COMPILR 2149
RJ PUTWD COMPILR 2150
SA5 A5+1 COMPILR 2151
BX6 X5 COMPILR 2152
RJ PUTWD COMPILR 2153
SA5 A5+1 COMPILR 2154
BX6 X5 COMPILR 2155
RJ PUTWD . SEND LAST WORD OF MESSAGE COMPILR 2156
MX7 0 COMPILR 2157
SA7 ARROWM+B7 . ZERO THE ENTRY IN ERROR MESSAGE TABCOMPILR 2158
SB7 B7+1 . LOOK FOR ANOTHER MESSAGE COMPILR 2159
SA1 ARROWM+B7 COMPILR 2160
ZR X1,PRERRE . FINISHED WITH ERROR MESSAGES COMPILR 2161
PL X1,PRERR . MORE MESSAGES COMPILR 2162
PRERRE BX5 X5-X5 COMPILR 2163
RJ PUTFIRST . OUTPUT BLANK LINE COMPILR 2164
RJ PUTFIRST . AND ANOTHER ONE COMPILR 2165
SX6 1 COMPILR 2166
SA6 P1ERFLG COMPILR 2167
SA1 SB6PR COMPILR 2168
UX1 B7,X1 . RESTORE B7 COMPILR 2169
SB6 X1 . RESTORE B6 COMPILR 2170
SA1 SB1PR COMPILR 2171
UX1 B1,X1 . RESTORE B1 COMPILR 2172
SA5 X1 . LIKEWISE A5 COMPILR 2173
JP PRINERR . RETURN COMPILR 2174
* COMPILR 2175
ERRCNT DATA 0 COMPILR 2176
SB1PR BSSZ 1 . SAVE B1 WHILE PRINTING ERRORS COMPILR 2177
SB6PR BSSZ 1 . SAVE B6 WHILE PRINTING ERRORS COMPILR 2178
ARROW DATA 10H @ COMPILR 2179
ARROWM BSSZ 5 . TABLE FOR COMPILE TIME ERROR MESSAGCOMPILR 2180
DATA -1 . END OF TABLE COMPILR 2181
* COMPILR 2182
WERRACT1 DIS ,$ CHARACTER ALLOWED ONLY IN LITERALS $ COMPILR 2183
WERRACT2 DIS ,$ THIS OPERATOR CANNOT BE UNARY $ COMPILR 2184
WERRACT3 DIS ,$ ODD NUMBER OF QUOTES $ COMPILR 2185
WERRCND1 DIS ,$ ILLEGAL GOTO PART $ COMPILR 2186
WERRCND2 DIS ,$ ILLEGAL COMBINATION IN GOTO PART $ COMPILR 2187
WERRLBL DIS ,$ LABEL ALREADY DEFINED $ COMPILR 2188
WOPRERR1 DIS ,$ ERRONEOUS OPERATOR $ COMPILR 2189
WOPRERR2 DIS ,$ BLANK OR DELIMITER IS MISSING $ COMPILR 2190
WOPRERR3 DIS ,$ LEFT OPERAND OF PATMAT IS NOT A VAR $ COMPILR 2191
WSYXERR DIS ,$ SYNTAX ERROR $ COMPILR 2192
WSYXERR1 DIS ,$ UNBALANCED PARENS IN GOTO $ COMPILR 2193
WSYXERR2 DIS ,$ UNBALANCED PARENS IN EXPRESSION $ COMPILR 2194
WSYXERR3 DIS ,$ UNBALANCED BRACKETS $ COMPILR 2195
* COMPILR 2196
* COMPILR 2197
SCALL VFD 18/3LMSG,42/SMESS COMPILR 2198
TITLE DATA 10H1CAL S N COMPILR 2199
DATA 10HO B O L M COMPILR 2200
DATA 10HK II.1C COMPILR 2201
DATE DATA 10HDD MMM YY COMPILR 2202
TIME DATA 10H HH:MM:SS COMPILR 2203
DATA 10H PAGE COMPILR 2204
PAGE DATA 0 COMPILR 2205
ENDTITL BSS 0 COMPILR 2206
* COMPILR 2207
* COMPILR 2208
END COMPILR 2209