INIT
IDENT INIT INIT 1
TITLE INITIALIZATION INIT 2
* FOR A LISTING OF THE SNODEF COMDECK, CALLED BELOW, SEE MAINLUP. INIT 3
LIST -L INIT 4
*CALL,SNODEF INIT 5
LIST L INIT 6
*LOWCORE INIT 7
EXT HBCSTAT INIT 8
* INIT 9
* ERROR INIT 10
EXT FILEWD,SJCALL INIT 11
EXT MSGOUT INIT 12
* MAINLUP INIT 13
EXT LUNDF,LRET,LFRET,LNRET,LEND INIT 14
EXT END. INIT 15
* UTILITY INIT 18
EXT SEARCH INIT 19
* IO INIT 20
EXT ABT. INIT 21
EXT OPEN INIT 22
* PROCS INIT 23
EXT CALENDR,TOD,DATE,TIME INIT 24
EXT VALID INIT 25
EXT WROVLAY INIT 26
* COMPILR INIT 27
EXT PASS1 INIT 28
EXT PRIORJ,ST1 INIT 29
EXT P2TRCS,P2TRCT,P3TRCS,P3TRCT,P4TRCS,P4TRCT INIT 30
* INIT INIT 31
ENTRY SNOBOL INIT 32
ENTRY STNDREL INIT 33
ENTRY STNPRL INIT 34
TITLE HEAP STORAGE SKELETON INIT 35
HSBASE DATA 0 . (THIS WORD IS XWRD) INIT 36
DATA 0 INIT 37
* DUMMY FREE BLOCK INIT 38
VFD 5/FRETYP,19/0,18/0,18/* . F3 MUST BE SET INIT 39
STNDREL EQU 3 INIT 40
FREELEN$ SET 5 . SPACE FOR END OF FL AND STACK INIT 41
. BUT WE PLAY IT SAFE INIT 42
* INIT 43
* INIT 44
* PREDEFINED I/O ASSOCIATED VARIABLES INIT 45
* INIT 46
VFD 5/VARTYP,19/5,18/3,18/0 INPUT INIT 47
INPSVD VFD 5/INTY,1/0,18/80,18/0,18/0 INIT 48
DATA 5LINPUT INIT 49
FREELEN$ SET FREELEN$+1 . NULL FOR INPUT INIT 50
VFD 5/VARTYP,19/6,18/3,18/0 OUTPUT INIT 51
OUTPSVD VFD 5/OUTTY,1/0,18/1R ,18/0,18/0 INIT 52
DATA 6LOUTPUT INIT 53
FREELEN$ SET FREELEN$+1 . NULL FOR OUTPUT INIT 54
* INIT 55
* INIT 56
* PREDEFINED LABELS INIT 57
* INIT 58
VFD 5/LBLTYP,19/6,18/3,18/0 INIT 59
VFD 5/LRETY,55/LRET INIT 60
DATA 6LRETURN INIT 61
INIT 62
VFD 5/LBLTYP,19/7,18/3,18/0 INIT 63
VFD 5/LFRETY,55/LFRET INIT 64
DATA 7LFRETURN INIT 65
INIT 66
VFD 5/LBLTYP,19/7,18/3,18/0 INIT 67
VFD 5/LNRETY,55/LNRET INIT 68
DATA 7LNRETURN INIT 69
INIT 70
VFD 5/LBLTYP,19/3,18/3,18/0 INIT 71
VFD 5/LENDTY,55/LEND INIT 72
DATA 3LEND INIT 73
* INIT 74
* INIT 75
* PREDEFINED PATTERN VALUED VARIABLES INIT 76
* INIT 77
PATTERN MACRO NAME INIT 78
LOCAL FIRST,LAST,CLENGTH INIT 79
VFD 5/VARTYP,1/0,18/CLENGTH,18/LAST+1-FIRST+2,18/0 INIT 80
VFD 1/1,41/0,18/=X_NAME_PM INIT 81
PERMSTR NAME,FIRST,LAST,CLENGTH INIT 82
FREELEN$ SET FREELEN$+1 INIT 83
ENDM INIT 84
* INIT 85
PATTERN ABORT INIT 86
PATTERN ARB INIT 87
PATTERN BAL INIT 88
PATTERN FAIL INIT 89
PATTERN FENCE INIT 90
PATTERN REM INIT 91
* INIT 92
* INIT 93
* PREDEFINED PROCEDURES INIT 94
* INIT 95
PROC MACRO NAME,ENDQ,ENTRY,NRET INIT 96
LOCAL FIRST,LAST,CLENGTH,NR INIT 97
VFD 5/CALLTYP,1/0,18/CLENGTH,18/LAST+1-FIRST+2,18/0 INIT 98
IFC NE,/ENTRY// INIT 99
ENTR MICRO 1,,/ENTRY/ INIT 100
ELSE INIT 101
ENTR MICRO 1,,/Q_NAME/ INIT 102
ENDIF INIT 103
IFC NE,/NRET// INIT 104
NR EQU 1 INIT 105
ELSE INIT 106
NR EQU 0 INIT 107
ENDIF INIT 108
VFD 1/1,1/LASTPROC,1/NR,9/0,18/=X_ENDQ,12/*-HSBASE+LAST+1-FIRINIT 109
,ST+2,18/=X_'ENTR' INIT 110
PERMSTR NAME,FIRST,LAST,CLENGTH INIT 111
ENDM INIT 112
* INIT 113
LASTPROC SET 1 . THIS BIT IS SET FOR ALL BUT LAST INIT 114
* INIT 115
STNPRL EQU *-HSBASE INIT 116
* INIT 117
PROC CODE,CMPLQ,QCMPL INIT 118
PROC APPLY,CMPLQ,,NRET INIT 119
IFNE TRCFLG,0,1 INIT 120
PROC TRC,TRCQ INIT 121
PROC ITEM,ITEMQ,,NRET INIT 122
PROC FAMILY,SELCTQ,QBASE INIT 123
PROC SELECTOR,SELCTQ,QSELCT INIT 124
PROC PARAM,PARAMQ INIT 125
PROC RIGHT,RIGHTQ INIT 126
PROC LEFT,RIGHTQ INIT 127
PROC FIRST,RESTQ INIT 128
PROC REST,RESTQ INIT 129
PROC NEXTVAR,NEXTVQ,QNEXTV INIT 130
PROC FREEZE,FREEZEQ INIT 131
PROC ALPHABET,ALPHAQ,QALPHA INIT 132
PROC STLIMIT,MAXLNQ,QSTLIM INIT 133
PROC STCOUNT,MAXLNQ,QSTCNT INIT 134
PROC MAXLNGTH,MAXLNQ,QMAXLN INIT 135
PROC PROTOTYPE,PROTQ,QPROT INIT 136
PROC DATA,DATAQ INIT 137
PROC LGT,LGTQ INIT 138
PROC FNCLEVEL,FLVQ,QFLV INIT 139
PROC DATATYPE,DTQ,QDT INIT 140
PROC TYPE,DTQ INIT 141
PROC EORLEVEL,EORLQ,QEORL INIT 142
PROC ENDGROUP,EFRWQ,QENDFIL INIT 143
PROC REWIND,EFRWQ INIT 144
PROC DETACH,IOQ INIT 145
PROC INPUT,IOQ INIT 146
PROC OUTPUT,IOQ INIT 147
PROC EOI,EOIQ INIT 148
PROC TIME,TDCQ,QCLOCK INIT 149
PROC DATE,TDCQ INIT 150
PROC CLOCK,TDCQ,QTIME INIT 151
IFNE TSS,0,1 INIT 152
PROC IN,INQ INIT 153
IFNE TSS,0,2 INIT 154
PROC OUT,REMARKQ,QREMARK INIT 155
IFNE ,,1 INIT 156
PROC REMARK,REMARKQ INIT 157
PROC ARRAY,ARRAYQ INIT 158
PROC CONVERT,CNVTQ,QCNVT INIT 159
PROC IDENT,COMPQ INIT 160
PROC DIFFER,COMPQ INIT 161
PROC DEFINE,DEFINEQ INIT 162
PROC ARBNO,ARBNOQ INIT 163
PROC ANCHOR,ANCHORQ INIT 164
PROC TRIM,TRIMQ INIT 165
PROC ANY,ANYQ INIT 166
PROC NOTANY,ANYQ INIT 167
PROC BREAK,ANYQ INIT 168
PROC SPAN,ANYQ INIT 169
PROC EQ,EQQ INIT 170
PROC NE,EQQ INIT 171
PROC GT,EQQ INIT 172
PROC GE,EQQ INIT 173
PROC LT,EQQ INIT 174
PROC LE,EQQ INIT 175
PROC RTAB,PATQ INIT 176
PROC TAB,PATQ INIT 177
PROC RPOS,PATQ INIT 178
PROC POS,PATQ INIT 179
PROC LEN,PATQ INIT 180
PROC SIZE,SIZEQ INIT 181
PROC GRAB,IFQ INIT 182
PROC HBC,IFQ INIT 183
* INIT 184
LASTPROC SET 0 . THE LAST PROC IN THIS LIST IS NEXT INIT 185
PROC IF,IFQ INIT 186
* INIT 187
* INIT 188
* INITIAL FILE BLOCK SKELETONS INIT 189
* INIT 190
INFILE VFD 5/FILTYP,55/0 . HEAP BLOCK HEADER INIT 191
VFD 2/1,40/0,18/1 . INPUT FILE, REFERENCE COUNT INIT 192
DATA 0LINPUT . FET : LFN INIT 193
BSSZ 4 . FIRST,IN,OUT,LIMIT INIT 194
* INIT 195
OUTFILE VFD 5/FILTYP,55/0 . HEAP BLOKC HEADER INIT 196
VFD 1/1,41/0,18/2 . WRITE DONE, REF COUNT INIT 197
DATA 0LOUTPUT . FET : LFN INIT 198
BSSZ 4 . FIRST,IN,OUT,LIMIT INIT 199
OUTLEN EQU *-OUTFILE INIT 200
* INIT 201
* INIT 202
* THIS CODE COMPLETES THE INITIALIZATION OF HEAP STORAGE BY MOVING THE INIT 203
* INITIAL CONTENTS OF THE OUTPUT FILE BLOCK TO ITS CORRECT LOCATION. INIT 204
* OVERLAYING NO LONGER NEEDED INITIALIZATION CODE. THE INPUT AND OUTPUTINIT 205
* FILES ARE OPENED, ADDITIONALLY. INIT 206
* INIT 207
FIXFILES STREAM OUTSTRM . DESTINATION FOR OUTPUT BLOCK TO B2 INIT 208
SB1 OUTLEN-1 . (NUMBER OF WORDS TO MOVE) - 1 INIT 209
FIXFLP SA1 OUTFILE+B1 INIT 210
BX6 X1 INIT 211
SA6 B2+B1 INIT 212
SB1 B1-1 INIT 213
PL B1,FIXFLP INIT 214
INIT 215
* NOW OPEN THE INPUT AND OUTPUT FILES. INIT 216
* INIT 217
STREAM INSTRM INIT 218
RJ OPEN INIT 219
STREAM OUTSTRM INIT 220
RJ OPEN INIT 221
* INIT 222
* TRANSFER CONTROL TO THE COMPILER: INIT 223
SB1 0 . INITIALIZE PASS 2 STATE TO ST1 INIT 224
JP PASS1 . START THE COMPILATION INIT 225
INIT 226
FIXERR IFGE *,INFILE+1+1+FET.LEN+101B INIT 227
ERR FIXFILES MAY CLOBBER ITSELF INIT 228
FIXERR ENDIF INIT 229
EJECT INIT 230
TITLE INITIALIZATION CODE INIT 231
* THIS CODE PERFORMS MISCELLANEOUS INITIALIZATION DUTIES, INCLUDING: INIT 232
* INIT 233
* 1) MOVING THE FIELD LENGTH SIZE, PLACED IN REGISTER A0 BY SCOPE, INIT 234
* INTO A CELL FOR THE STORAGE MANAGER. INIT 235
* INIT 236
* 2) PROCESSING THE CONTROL STATEMENT. INIT 237
* INIT 238
* 3) INITIALIZING THE OUTPUT FILE (USED BY THE INTERPRETOR AND THE INIT 239
* COMPILER) AND THE INPUT FILE (USED BY THE COMPILER). INIT 240
* INIT 241
* 4) PLACING THE CURRENT TIME ADN DATE, FETCHED FROM SCOPE, INTO THE INIT 242
* COMPILER-S LISTING TITLE LINE. INIT 243
INIT 244
SNOBOL SX6 A0 . SAVE INITIAL FL INIT 245
SA6 FIELDLN . FOR THE STORAGE MANAGER INIT 246
RJ GN . SKIP PROGRAM NAME INIT 247
* INIT 248
* INIT 249
* INIT 250
* THE MAINLOOP COLLECTS A PARAMETER OF THE FORM: KEYWORD OF KEYWORD=VALINIT 251
* IT SETS X3 TO THE KEYWORD AND X6 TO THE VALUE (DEFAULT = 0). INIT 252
* INIT 253
CCLOOP RJ GN . RETURNS PARAM. IN X6, DELIM. IN X2 INIT 254
BX3 X6 INIT 255
BX6 X6-X6 INIT 256
IFNCH =,CCX . USE DEFAULT VAL UNLESS DELIM IS = INIT 257
RJ GN . GET VALUE INIT 258
CCX MX0 CHSIZ INIT 259
BX2 X0*X3 . FIRST CHARACTER OF KEYWORD TO X2 INIT 260
LX2 CHSIZ INIT 261
* INIT 262
IFCH I,CCINP . INPUT FILE INIT 263
IFCH L,CCOUTP . LISTING FILE INIT 264
IFCH O,CCOUTP . =O= IS SYNONYM FOR =L= INIT 265
IFCH B,CCBUFF . BUFFER SIZE INIT 266
IFCH F,CCFLLIM . FIELD LENGTH LIMIT INIT 267
IFCH E,CCEOVLY . ERROR OVERLAY RESIDENCY INIT 268
IFCH H,CCHBC INIT 269
IFNE TRCFLG,0 INIT 270
IFCH Q,CCDBG . MACHINE LANGUAGE TRACE CONTROL INIT 271
ENDIF INIT 272
IFCH T,CCTRC . COMPILER INTERMEDIATE OUTPUT INIT 273
IFCH J,CCUPPER . PATCH UPPER HALFWORD INIT 274
IFCH K,CCLOWER . PATCH LOWER HALFWORD INIT 275
IFCH R,CCFREQ . FREQUENCY FOR MEMORY-STATE CHECKER INIT 276
IFCH S,CCSTAT . SPECIAL STATUS WORD INIT 277
IFCH V,CCOVLAY INIT 278
* INIT 279
BX7 X3 INIT 280
SA7 UKWRD INIT 281
SX5 UKMESS INIT 282
CALL CCERR,B2,CCLOOP . (NON FATAL ERROR) INIT 283
* INIT 284
UKMESS DATA 10HUNKNOWN KE INIT 285
DATA 10HYWORD, IGN INIT 286
DATA 10HORED- INIT 287
UKWRD DATA 0 INIT 288
* INIT 289
* INIT 290
* INPUT FILE (DEFAULT IS 'INPUT') INIT 291
* INIT 292
CCINP SB1 INFILE+FI.FET+FET.LFN INIT 293
JP CCFILCHK INIT 294
* INIT 295
* INIT 296
* OUTPUT FILE (DEFAULT IS 'OUTPUT'; L=0 MEANS NO LISTING) INIT 297
* INIT 298
CCOUTP SB1 OUTFILE+FI.FET+FET.LFN INIT 299
BX2 X0*X6 . EXTRACT FIRST CHARACTER INIT 300
LX2 6 . OF VALUE WORD INIT 301
IFNCH 0,CCFILCHK INIT 302
SX6 0 . SUPPRESS INIT 303
SA6 P1ERFLG . LISTING INIT 304
* INIT 305
* INIT 306
CCFILCHK ZR X6,CCLOOP . USE DEFAULT FILE NAME INIT 307
SA6 IFWRD INIT 308
RJ VALID . SAVES B1,B7,X0,A1-X1, SETS X6 TO INIT 309
ZR X6,CCFCHKE . ZERO IF NOT A GOOD FILE NAME INIT 310
SA6 B1 INIT 311
JP CCLOOP INIT 312
* INIT 313
CCFCHKE SX5 IFMESS . ILLEGAL FILE NAME INIT 314
CALL CCERR,B2,CCLOOP . (NON FATAL ERROR) INIT 315
* INIT 316
IFMESS DATA 10HILLEGAL FI INIT 317
DATA 10HLE NAME, D INIT 318
DATA 10HEFAULT ASS INIT 319
DATA 10HUMED- INIT 320
IFWRD DATA 0 INIT 321
* INIT 322
* INIT 323
* BUFFERSIZE DECLARATION (MUST BE NOT LESS THAN 101B). INIT 324
* INIT 325
CCBUFF CALL OCT2BIN . (OCTAL) STRING IN X6 => BINARY INIT 326
SX6 X7-101B . IN X7 INIT 327
NG X6,CCBFSZE INIT 328
SA7 BUFFSIZ INIT 329
JP CCLOOP INIT 330
* INIT 331
CCBFSZE SX7 101B INIT 332
SA7 BUFFSIZ INIT 333
SX5 BSMESS INIT 334
CALL CCERR,B2,CCLOOP . (NON FATAL ERROR) INIT 335
* INIT 336
BSMESS DIS ,?BUFFER SIZE TOO SMALL, 101B ASSUMED.? INIT 337
* INIT 338
* INIT 339
* FIELD LENGTH LIMIT DECLARATION INIT 340
* INIT 341
CCFLLIM CALL OCT2BIN . (OCTAL) STRING IN X6 => BINARY INIT 342
SA7 FLDLM . IN X7 INIT 343
JP CCLOOP INIT 344
* INIT 345
* INIT 346
* ERROR OVERLAY RESIDENCY (SYSTEM LIBRARY IF NO 'E' PARAMETER; INIT 347
* FROM FILE F IF 'E=F' PARAMETER; INIT 348
* FROM FILE SNOJOB IF 'E' PARAMETER). INIT 349
* INIT 350
CCEOVLY SA2 FILEWD . PARAMETER WORD FOR FILE LOAD INIT 351
BX7 X2 INIT 352
SA7 SJCALL+1 INIT 353
SB1 SJCALL INIT 354
JP CCFILCHK INIT 355
* INIT 356
* INIT 357
* H PARAMETER CONTROLS HEAP BLOCK COMPACTION INIT 358
* ZERO MEANS TO NOT DO ANY HBC INIT 359
* PHASES 1-5 ARE: 10B,20B,40B,100B,200B INIT 360
* INIT 361
* EACH FLAG CAN BE SET INDEPENDENTLY OF THE OTHERS INIT 362
* INIT 363
CCHBC CALL OCT2BIN INIT 364
SA7 HBCSTAT INIT 365
JP CCLOOP INIT 366
IFNE TRCFLG,0 INIT 367
* INIT 368
* INIT 369
* MACHINE LANGUAGE TRACING CONTROL INIT 370
* INIT 371
CCDBG TRACE . TURN ON TRACE INIT 372
TRACE LIST . WITH LISTING INIT 373
JP CCLOOP INIT 374
ENDIF INIT 375
* INIT 376
* INIT 377
* COMPILER INTERMEDIATE OUTPUT INIT 378
* INIT 379
CCTRC SA2 P2TRCS . PASS2 TRACE SOURCE INIT 380
SA3 P3TRCS . PASS3 INIT 381
BX6 X2 INIT 382
BX7 X3 INIT 383
SA6 P2TRCT . PASS2 TRACE TARGET INIT 384
SA7 P3TRCT . PASS3 INIT 385
SA2 P4TRCS . PASS4 TRACE SOURCE INIT 386
BX6 X2 INIT 387
SA6 P4TRCT . TARGET INIT 388
JP CCLOOP INIT 389
* INIT 390
* INIT 391
* KLUDGE PATCH FACILITY INIT 392
* A PARAMETER OF THE FORM: (J OR K)AAAAAA=VVVVVVVVVV, WHERE THE A-S ANDINIT 393
* V-S ARE OCTAL DIGITS, IMPLIES REPLACING THE UPPER OR LOWER HALF INIT 394
* (CORRESPONDING TO J OR K RESPECTIVELY) OF THE CELL ADDRESSED BY INIT 395
* AAAAAA WITH VVVVVVVVVV. BEWARE; NO CHECKING IS DONE. INIT 396
CCUPPER SB2 30 . FLAG UPPER HALFWORD INIT 397
JP CCPATCH INIT 398
CCLOWER SB2 0 . FLAG LOWER HALFWORD INIT 399
CCPATCH SA6 CCPATMP . SAVE VVVVVVVVVV INIT 400
BX6 -X0*X3 INIT 401
LX6 CHSIZ . LEFT JUSTIFY AAAAAA IN X6 INIT 402
CALL OCT2BIN . LEAVES BINARY IN X7 INIT 403
SA1 X7 . FETCH ADDRESSED WORD INIT 404
SA2 CCPATMP INIT 405
BX6 X2 INIT 406
CALL OCT2BIN . CONVERT VALUE (SAVES A1/X1, B2) INIT 407
MX5 60-30 INIT 408
LX1 X1,B2 . RIGHT JUSTIFY SELECTED HALFWORD INIT 409
BX6 X5*X1 . CLEAR OLD VALUE INIT 410
BX6 X6+X7 . AND INSERT NEW ONE INIT 411
LX6 X6,B2 . REPOSITION THE WORD INIT 412
SA6 A1 . AND REPLACE IN MEMORY INIT 413
JP CCLOOP . DONE INIT 414
CCPATMP DATA 0 INIT 415
* INIT 416
* INIT 417
* FREQUENCY FOR MEMORY-STATE CHECKS INIT 418
* INIT 419
CCFREQ CALL OCT2BIN . STRING IN X6 => BINARY IN X7 INIT 420
SA7 FREQWD INIT 421
JP CCLOOP INIT 422
* INIT 423
* INIT 424
* STATUS WORD INIT 425
* INIT 426
CCSTAT CALL OCT2BIN . STRING IN X6 => BINARY IN X7 INIT 427
SA7 STATWD INIT 428
JP CCLOOP INIT 429
* INIT 430
* INIT 431
* WRITE ABSOLUTE OVERLAY ON SPECIFIED FILE (DEFAULT = 'SNOBOL') INIT 432
* INIT 433
CCOVLAY SA4 =0LSNOBOL INIT 434
ZR X6,CCOVLAY1 . USE DEFAULT FILE NAME INIT 435
SA6 IFWRD INIT 436
RJ VALID INIT 437
ZR X6,CCFCHKE . INVALID FILE NAME SPECIFIED INIT 438
BX4 X6 INIT 439
CCOVLAY1 SA2 =0LSNOBOL . PROGRAM NAME INIT 440
SX3 SNOBOL . ENTRY POINT INIT 441
SX5 LIMIT . LWA+1 TO WIRTE INIT 442
RJ WROVLAY INIT 443
JP END. . TERMINATE EXECUTION INIT 444
* INIT 445
* INIT 446
* OCT2BIN CONVERTS AN OCTAL STRING, IN X6, TO A BINARY INTEGER, IN X7.INIT 447
* IT USES, ADDITIONALLY, X4 AND X5, AND RETURNS TO THE ADDRESS IN B1, INIT 448
* UNLESS IT FINDS A NONOCTAL DIGIT (IN WHICH CASE IT JUMPS TO 'CCERROR')INIT 449
INIT 450
OCT2BIN SX7 0 . INITIALIZE RESULT INIT 451
SA6 NOWRD INIT 452
OCT2BINL BX5 X0*X6 . EXTRACT INIT 453
BX6 -X0*X6 . NEXT CHARACTER INIT 454
ZR X5,OCT2BINR . DONE INIT 455
LX5 6 INIT 456
LX6 6 INIT 457
LX7 3 . OLD TOTAL * 8 INIT 458
SX5 X5-1R0 INIT 459
NG X5,OCTERR . ALPHABETIC CHARACTER INIT 460
SX4 X5+1R0-1R8 INIT 461
PL X4,OCTERR . SPECIAL CHARACTER INIT 462
BX7 X7+X5 INIT 463
JP OCT2BINL INIT 464
OCT2BINR JP B1 . RETURN INIT 465
* INIT 466
OCTERR SX5 NOMESS . NON OCTAL CHARACTER IN NUMBER INIT 467
CALL CCERR,B2,ABT. . (FATAL ERROR) INIT 468
* INIT 469
NOMESS DATA 10HNON OCTAL INIT 470
DATA 10HCHARACTER INIT 471
DATA 10HIN NUMBER, INIT 472
DATA 10HABORTING- INIT 473
NOWRD DATA 0 INIT 474
* INIT 475
* INIT 476
* CCERR: ISSUE CONTROL CARD ERROR MESSAGE INIT 477
* INIT 478
* PARAMETERS: X5 = MESSAGE ADDRESS, B2 = RETURN INIT 479
* INIT 480
CCERR SA1 1 . MAKE SURE INIT 481
NZ X1,CCERR . RA+1 IS CLEAR INIT 482
SX6 CCEMESS INIT 483
CALL MSGOUT INIT 484
SX6 X5 INIT 485
CALL MSGOUT,,B2 INIT 486
* INIT 487
CCEMESS DIS ,?SNOBOL CONTROL CARD ERROR.? INIT 488
* INIT 489
* INIT 490
MAXFLERR SX5 MFMESS . MAX FL HAS BEEN EXCEEDED INIT 491
CALL CCERR,B2,ABT. . (FATAL ERROR) INIT 492
* INIT 493
MFMESS DIS ,?THE MAXIMUM FIELD LENGTH HAS BEEN EXCEEDED.? INIT 494
* INIT 495
* INIT 496
* GN GETS THE NEXT WORD FROM THE CONTROL CARD AND RETURNS IT IN X6. AINIT 497
* WORD IS A SEQUENCE OF LETTERS, DIGITS, AND ASTERISKS, FOLLOWED BY A INIT 498
* DELIMITER CHARACTER, WHICH GN RETURNS IN X2. IF THE DELIMITER IS INIT 499
* ')' OR '.', THEN THE NEXT TIME GN IS CALLED, IT IMMEDIATELY INIT 500
* TRANSFERS TO 'CCEND'. INIT 501
* A PERIOD IS ASSUMED IF THERE IS NO CONTROL CARD TERMINATOR. INIT 502
INIT 503
GN BSSZ 1 . ENTRY/EXIT INIT 504
SA1 GNDATA INIT 505
NG X1,CCEND . LAST CALL ENCOUNTERED END OF CC INIT 506
UX5 B2,X1 . SHIFT COUNT TO B2, WORD PTR TO X5 INIT 507
SA1 X5 . FETCH NEXT IMAGE WORD INIT 508
SX0 CHMASK INIT 509
SX6 0 . INITIALIZE OUTPUT BUFFER INIT 510
SB3 60-CHSIZ . INITIALIZE OUTPUT COUNTER INIT 511
* INIT 512
GNGETC PL B2,GNGETC1 . STILL CHARACTERS IN X1 INIT 513
SX5 X5+1 INIT 514
SA1 X5 INIT 515
SB2 60-CHSIZ INIT 516
* INIT 517
GNGETC1 AX2 X1,B2 INIT 518
BX2 X0*X2 . NEXT CHARACTER INIT 519
SB2 B2-CHSIZ INIT 520
* INIT 521
ZR X2,GNENDCC . END OF CONTROL CARD INIT 522
SX7 X2-1R+ INIT 523
PL X7,GNDELIM . NOT A LETTER OR A DIGIT INIT 524
GNAPPEND LX2 X2,B3 . NOTE B3 MUST BE NON-NEGATIVE INIT 525
BX6 X6+X2 INIT 526
SB3 B3-CHSIZ INIT 527
JP GNGETC INIT 528
* INIT 529
GNDELIM IFCH ( ),GNGETC . IGNORE BLANKS INIT 530
* INIT 531
IFCH .,GNENDCC . DOT IS CONTROL CARD TERMINATOR INIT 532
IFCH ),GNENDCC . (LIKEWISE RIGHT PAREN.) INIT 533
* INIT 534
PX7 B2,X5 INIT 535
SA7 GNDATA INIT 536
JP GN INIT 537
* INIT 538
GNENDCC SX7 -1 INIT 539
SA7 GNDATA INIT 540
SX2 1R. INIT 541
JP GN INIT 542
* INIT 543
* INIT 544
GNDATA VFD 12/2000B+60-CHSIZ,30/0,18/70B INIT 545
* INIT 546
* INIT 547
CCEND BSS 0 INIT 548
INIT 549
CALL CALENDR . DATE => X6 INIT 550
SA6 DATE . STORE INTO COMPILER TITLE INIT 551
CALL TOD . TIME OF DAY => X6 INIT 552
LX6 60-2*6 . LEFT JUSTIFY IT INIT 553
SA6 TIME INIT 554
* INIT 555
* INIT 556
* NOW WE CREATE TWO HEAP BLOCKS OF TYPE FILE, ONE FOR INPUT AND ONE FORINIT 557
* OUTPUT. THE FIRST BLOCK WILL START AT 'BUFFBASE', AND THE SECOND WILLINIT 558
* FOLLOW IMMEDITELY. THE LENGTHS DEPEND ON C(BUFFSIZE). THE VARIABLESINIT 559
* INSTRM AND OUTSTRM ARE SET TO POINT TO WORD 0 OF THEIR RESPECTIVE INIT 560
* BLOKCS, AND THE VARIABLE FILLIST IS SET TO POINT TO A CHAIN OF THE INIT 561
* BLOCKS, LINKED THROUGH THERI F2 FIELDS. INIT 562
* THE OUTPUT FIEL BLOCK CAN'T BE INITIALIZED YET, SINCE THE FILE BLOCKSINIT 563
* OVERLAY THE INITIALIZATION CODE. THUS THE ARRAY OUTFILE IS INITIALIINIT 564
* AND LATER IS MOVED TO THE CORRECT LOCATION BY THE CODE FIXFILES. INIT 565
INIT 566
SA1 BUFFSIZ INIT 567
SX2 1+1+FET.LEN+X1 . LENGTH(HEADER+REF COUNT+FET+BUFFER)INIT 568
IX6 X2+X2 INIT 569
SX6 INFILE+X6 INIT 570
SA6 MAXHS . INITIALIZE MAXHS INIT 571
SX6 FILTYP INIT 572
LX6 1+18+18 INIT 573
BX6 X6+X2 . PUT BYPASS INTO SVD INIT 574
LX6 18 INIT 575
SX3 INFILE+X2 . OUTPUT FILE BLOCK FOLLOWS INPUT INIT 576
BX7 X6+X3 . HEACER FOR INPUT FILE LINKS TO INIT 577
SA7 INFILE INIT 578
SA6 OUTFILE . HEADER FOR OUTPUT FILE LINKS TO ZERINIT 579
SX6 INFILE INIT 580
SA6 INSTRM INIT 581
SA6 FILLIST INIT 582
LX6 18 INIT 583
SA2 INPSVD INIT 584
BX6 X2+X6 INIT 585
SA6 A2 INIT 586
SX6 X3 INIT 587
SA6 OUTSTRM INIT 588
LX6 18 INIT 589
SA2 OUTPSVD INIT 590
BX6 X2+X6 INIT 591
SA6 A2 INIT 592
SX6 INFILE+FI.BUF . START OF INPUT BUFFER INIT 593
SA6 INFILE+FI.FET+FET.IN INIT 594
SA6 INFILE+FI.FET+FET.OUT INIT 595
SX5 FET.SZ . PSEUDO FET LENGTH INIT 596
LX5 18 INIT 597
BX7 X5+X6 INIT 598
SA7 INFILE+FI.FET+FET.FRST INIT 599
IX6 X6+X1 . FIRST + LENGTH = LIMIT INIT 600
SA6 INFILE+FI.FET+FET.LIM INIT 601
* INIT 602
SX6 X3+FI.BUF . START OF OUTPUT BUFFER INIT 603
SA6 OUTFILE+FI.FET+FET.IN INIT 604
SA6 OUTFILE+FI.FET+FET.OUT INIT 605
BX7 X5+X6 . PSEUDO FET LENGTH INIT 606
SA7 OUTFILE+FI.FET+FET.FRST INIT 607
IX6 X6+X1 . FIRST + LENGTH = LIMIT INIT 608
SA6 OUTFILE+FI.FET+FET.LIM INIT 609
* INIT 610
* INIT 611
* NOW CHECK THAT A SUFFICIENT FL EXISTS, REQUESTING MORE IF NECESSARY, INIT 612
* BUT NOT MORE THAN FLDLM . THE VALUE OF THE SYMBOL FREELEN$ IS THE IINIT 613
* INITIAL AMOUNT OF LIST STORAGE NEEDED; MAXHS CONTAINS INIT 614
* THE ADDRESS OF THE FIRST CELL NOT NEEDED BY STATIC STORAGE. INIT 615
* INIT 616
SA1 FIELDLN . CURRENT FL INIT 617
SA2 MAXHS INIT 618
SX6 X2+FREELEN$ . NECESSARY FL INIT 619
IX1 X1-X6 INIT 620
PL X1,FL.OK . CURRENT IS SUFFICIENT INIT 621
SA1 FLDLM . FL LIMIT INIT 622
IX1 X1-X6 INIT 623
NG X1,MAXFLERR . MAX FL HAS BEEN EXCEEDED INIT 624
SA2 RFLP ******* 1
BX7 X6+X2 ******* 2
RMT ******* 3
RFLP VFD 24/0LRFLP,36/0 ******* 4
RMT ******* 5
SA7 1 INIT 630
+ SA1 1 INIT 631
NZ X1,* INIT 632
* INIT 633
* INIT 634
FL.OK BSS 0 ... INIT 635
EJECT INIT 636
PRE3 SA2 FIELDLN INIT 637
SB1 -1 INIT 638
SB7 X2 INIT 639
SX7 HSBASE INIT 640
SX6 HSBASE+2 . INITIALIZE DUMMY FREE BLOCK INIT 641
SA6 FHBLRP INIT 642
SA1 X6 INIT 643
LX6 36 INIT 644
BX6 X1+X6 INIT 645
SA6 X1 INIT 646
SA7 MINHS . INITIALIZE MINHS INIT 647
SB4 X7+STNDREL INIT 648
INIT1 SA1 B4 . LOOP TO FIND HASH CODES FOR INIT 649
BX0 X1 . STANDARD VARIABLES AND PROCEDURES INIT 650
AX1 18 INIT 651
SX5 A1 INIT 652
SB4 X1+B4 INIT 653
AX1 18 INIT 654
SB5 A1+2 . FWA OF THE NAME INIT 655
SB3 X1 INIT 656
EQ B3,B0,INIT4 INIT 657
RJ SEARCH INIT 658
BX7 X5+X2 INIT 659
NG X2,INIT1A . UPDATE HASH CHAIN INIT 660
NG X3,INIT1A INIT 661
LX7 30 INIT 662
INIT1A SA7 A2 INIT 663
AX0 55 INIT 664
SX0 X0-VARTYP+37B . BRANCH IF FUNCTION OR LABEL INIT 665
NZ X0,INIT1 INIT 666
SA1 X5+1 INIT 667
NG X1,INIT3 . BRANCH IF ARB, BAL, REM ETC. INIT 668
BX7 X7-X7 INIT 669
SB7 B7+B1 INIT 670
SA7 B7 INIT 671
SX0 SSTY INIT 672
SX6 B7 INIT 673
LX0 55 . INPUT OR OUTPUT INITIALIZED TO INIT 674
LX6 18 . A NULL STRING VALUE INIT 675
SX7 B7 INIT 676
BX7 X7+X6 INIT 677
SB7 B7+B1 INIT 678
BX7 X7+X0 INIT 679
SX6 B7 INIT 680
SA7 B7 INIT 681
BX6 X6+X1 INIT 682
INIT2 SA6 A1 INIT 683
EQ INIT1 INIT 684
INIT3 SB7 B7+B1 INIT 685
MX0 12 INIT 686
LX1 48 INIT 687
BX7 X0*X1 INIT 688
LX7 60-18 . SHIFT INTO LS PATTERN WORD FORM INIT 689
SA7 B7 INIT 690
SX6 B7 INIT 691
SX7 B7 INIT 692
LX6 18 INIT 693
SX0 PSTY INIT 694
LX0 55 INIT 695
BX6 X7+X6 INIT 696
BX6 X0+X6 INIT 697
EQ INIT2 INIT 698
* SET UP THE COMPILER STORAGE INIT 699
INIT4 SA1 MAXHS . SET DURING FILE INITIALIZATION INIT 700
BX7 X1 INIT 701
SA7 MAXSTAT . CURRENT TOP OF COMPILER HS INIT 702
BX6 X6-X6 INIT 703
SX7 B7+B1 INIT 704
SA7 COMPB7 INIT 705
SA6 X7 . LAST WORD OF FL INIT 706
BX6 -X7 INIT 707
SA6 MAXSTAK . NOTE NEGATIVE REPRESENTATION INIT 708
SX7 X7+B1 INIT 709
BX6 X6-X6 INIT 710
SA6 X7 . BOTTOM OF THE STACK INIT 711
SA7 PRGBASE . BASE FOR THE OBJECT PROGRAM INIT 712
SA7 MINSTAK INIT 713
* PREPARE FOR COMPILATION INIT 714
SB6 X7 INIT 715
SX7 PRIORJ INIT 716
LX7 36 INIT 717
SB6 B0-B6 INIT 718
SA5 BGP3STK INIT 719
SA0 BGP2STK INIT 720
SA7 A5 INIT 721
SB7 B0 . INITIALIZE PASS 2 OPSIT INIT 722
JP FIXFILES INIT 723
* INIT 724
* INIT 725
LIMIT END SNOBOL INIT 726