STORMAN
IDENT STORMAN STORMAN 1
TITLE STORAGE MANAGEMENT ROUTINES STORMAN 2
* FOR A LISTING OF THE SNODEF COMDECK, CALLED BELOW, SEE MAINLUP. STORMAN 3
LIST -L STORMAN 4
*CALL,SNODEF STORMAN 5
LIST L STORMAN 6
*LOWCORE STORMAN 7
EXT ISVB1,ISVX5 STORMAN 8
EXT LSCOUNT STORMAN 9
EXT HBCSTAT STORMAN 10
* ERROR STORMAN 11
EXT RTERROR STORMAN 12
EXT ERR1,ERR2,ERR3,ERR4,ERR5,ERR6,ERR7,ERR8,ERR9 STORMAN 13
EXT ERR10,ERR11,ERR13,ERR14,ERR15,ERR16,ERR17,ERR18,ERR19 STORMAN 14
EXT ERR20,ERR21,ERR22,ERR23,ERR24,ERR26,ERR27,ERR28 STORMAN 15
EXT ERR29,ERR30,ERR31,ERR32,ERR35,ERR36,ERR37,ERR38,ERR39 STORMAN 16
EXT ERR40,ERR41,ERR42,ERR43,ERR44,ERR48,ERR49 STORMAN 17
EXT ERR50,ERR52,ERR53,ERR55,ERR56 STORMAN 18
* MAINLUP STORMAN 19
EXT CALL STORMAN 20
* STORMAN STORMAN 21
ENTRY PUSHSTK,RESERVE,MORFREE,GETSTAK,GRBCOLL,RESHB STORMAN 22
ENTRY FREEHB STORMAN 23
ENTRY HBC,SELFCHK STORMAN 24
ENTRY TOFHBL STORMAN 25
* UTILITY STORMAN 27
EXT ITOS,SSTOS,STOSFX6,PTOPX4,ICX1X6,ZROX7,SSTOSF,ITOSF STORMAN 28
EXT ITOSFTP,SOPERND,X1VALUE,FREESVD,SASSIGN,INDRCT,INDRX STORMAN 29
EXT SEARCH,FREESTR STORMAN 30
EXT DECFIL,SCHHBC STORMAN 31
* PATMAT STORMAN 32
EXT PRDPM,DOLPM,ENDEXPM,ALTPM,EXPPM,ARBPM,LENPM,POSPM STORMAN 33
EXT RPOSPM,TABPM,REMPM,BALPM,FAILPM,FENCEPM,ABORTPM STORMAN 34
EXT ARBNOPM,STARPM,LITPM,ANYPM,NTANYPM,SPANPM,BREAKPM STORMAN 35
* IO STORMAN 36
EXT CALLRCL STORMAN 37
* STORMAN 38
* STORMAN 39
* DECLARE PARAMETERS: STORMAN 40
* STORMAN 41
BUFF1 EQU 10 . MINIMUM FREE LIST REQUEST STORMAN 42
BUFF2 EQU 30 . MINIMUM NUMBER OF WORDS TO BE STORMAN 43
. RETRIEVED BY THE LSC STORMAN 44
FLDINCR EQU 1000B . FIELDLENGTH INCREMENT STORMAN 45
* STORMAN 46
* MICROS TO CREATE CONSISTENCY-CHECK INTERRUPTS: STORMAN 47
* STORMAN 48
VE MICRO 1,,/400000B+*/ STORMAN 49
VE1 MICRO 1,,/400000B+*/ STORMAN 50
VE2 MICRO 1,,/400000B+*/ STORMAN 51
VE3 MICRO 1,,/400000B+*/ STORMAN 52
VE4 MICRO 1,,/400000B+*/ STORMAN 53
EJECT STORMAN 54
* PUSHSTK STORMAN 55
* PUSH THE STACK TOWARDS HIGH CORE, B3 WORDS STORMAN 56
* X1,X7,B1,B2,A0 STORMAN 57
PUSHSTK NO STORMAN 58
+ SA0 B3 STORMAN 59
RJ RESERVE . RESERVE ENOUGH SPACE STORMAN 60
SA1 MINSTAK . BUMP MINSTAK STORMAN 61
SB2 X1 STORMAN 62
SX7 X1+B3 STORMAN 63
SB1 B6-B3 STORMAN 64
SA7 A1 STORMAN 65
PSHSTK1 SA1 B1 STORMAN 66
SB1 B1-1 STORMAN 67
BX7 X1 STORMAN 68
SA7 A1+B3 STORMAN 69
GE B1,B2,PSHSTK1 STORMAN 70
JP PUSHSTK STORMAN 71
* STORMAN 72
* RESERVE STORMAN 73
* THIS PROCEDURE RESERVES A0 WORDS IN THE STACK. B6 IS UPDATED STORMAN 74
* NOTE ESPECIALLY THAT A4 IS SAVED STORMAN 75
* X1,A0 STORMAN 76
* STORMAN 77
RESERVE NO STORMAN 78
+ SA1 MAXSTAK STORMAN 79
SB6 A0+B6 . CHECK IF NEW B6 NOT GREATER STORMAN 80
SX1 X1+B6 . OR EQUAL THAN ABS (MAXSTAK) STORMAN 81
NG X1,RESERVE . NOTE THAT MAXSTAK IS NEGATIVE STORMAN 82
RJ GETSTAK . GET STACK SPACE IF IT IS STORMAN 83
EQ RESERVE STORMAN 84
* STORMAN 85
* STORMAN 86
* SUBROUTINE MOREFREE HAS TO BE CALLED WHENEVER THE END OF THE STORMAN 87
* FREE CHAIN IS MET.( A ZERO WORD ) HALF OF THE SPACE BETWEEN STORMAN 88
* THE STACK AND DYNAMIC WILL BE RESERVED, OR IF IT IS TOO SHORT STORMAN 89
* ADDITIONAL FIELDLENGTH WILL BE REQUESTED. STORMAN 90
* X1 STORMAN 91
* STORMAN 92
MORFREE NO STORMAN 93
+ SA7 MFX7 . SAVE SOME REGISTERS STORMAN 94
SA6 MFX6 STORMAN 95
BX7 X2 STORMAN 96
SA7 MFX2 STORMAN 97
SX1 BUFF1+BUFF1 . MINIMUM STACK SPACE STORMAN 98
RJ GETLS . GET AT LEAST BUFF1 LIST WORDS STORMAN 99
SA1 MFX6 . RESTORE REGISTERS STORMAN 100
SA2 MFX7 STORMAN 101
BX6 X1 STORMAN 102
BX7 X2 STORMAN 103
SA1 B7+0 . TO ASSIST CALLING SIDE STORMAN 104
SA2 MFX2 STORMAN 105
JP MORFREE STORMAN 106
* STORMAN 107
* GETLS STORMAN 108
* GETLS IS CALLED EITHER FROM MORFREE OR GETSTAK. STORMAN 109
* IT PRODUCES AT LEAST X1 NEW LIST WORDS, A POINTER TO STORMAN 110
* THE FIRST WORD IS STORED AT B7 STORMAN 111
* X1, X2, X6, X7 STORMAN 112
* STORMAN 113
GETLS DATA 0 STORMAN 114
SX6 B0-B6 STORMAN 115
SA2 MAXSTAK STORMAN 116
IX6 X6-X2 . MAXSTAK-B6 TO X6 STORMAN 117
IX7 X6-X1 . NOTE: X1 IS AT LEAST 5 STORMAN 118
NG X7,MFLEN . STACK STORAGE NOT ENOUGH STORMAN 119
AX6 1 STORMAN 120
IX7 X2+X6 . RESERVE HALF OF IT STORMAN 121
SA7 A2 . STORE NEW MAXSTAK STORMAN 122
BX1 -X2 STORMAN 123
BX7 -X7 STORMAN 124
* CREATE FL FROM X1-1 DOWN TO X7: STORMAN 125
MFCHN SX6 X1-1 STORMAN 126
SA6 B7 . POINTER TO THE FIRST WORD STORMAN 127
SX1 X6 STORMAN 128
MFCHN1 SX6 X1-1 STORMAN 129
SA6 X1 STORMAN 130
SX1 X6 STORMAN 131
BX2 X1-X7 STORMAN 132
NZ X2,MFCHN1 STORMAN 133
SX7 B0 . END OF CHAIN WORD STORMAN 134
SA7 X1 STORMAN 135
EQ GETLS STORMAN 136
* REQUEST AT LEAST X1 MORE FIELD LENGTH STORMAN 137
MFLEN SX6 -FLDINCR+1 STORMAN 138
SA2 FIELDLN STORMAN 139
IX7 X1-X6 . ROUND X1 TO NEXT FLDINCR STORMAN 140
SA1 FLDLM STORMAN 141
BX7 X6*X7 . NEW FIELDLENGTH TO X7 STORMAN 142
IX7 X2+X7 STORMAN 143
IX1 X1-X7 STORMAN 144
NG X1,ERR17 . ERROR: MAX FIELD LENGTH HAS STORMAN 145
SX1 X7 . BEEN EXCEEDED STORMAN 146
SA7 A2 STORMAN 147
BX7 X2 SAVE OLD FL. ******* 1
SA2 RFLP ******* 2
BX6 X1+X2 RFL TO NEW FL. ******* 3
SA6 1 . CALL MEM WITH RECALL STORMAN 153
+ SA2 1 STORMAN 154
NZ X2,* . WAIT UNTIL COMPLETE STORMAN 155
JP MFCHN . GO FILL UP NEWLY ACQUIRED STORAGE STORMAN 156
RFLP VFD 24/0LRFLP,36/0 ******* 4
* STORMAN 159
MFX2 DATA 0 . REGISTER SAVE WORDS STORMAN 160
MFX6 DATA 0 STORMAN 161
MFX7 DATA 0 STORMAN 162
* STORMAN 163
* STORMAN 164
* GETSTAK PRODUCES SPACE FOR THE STACK UP TO B6. B6-A0 MUST STORMAN 165
* CONTAIN THE LAST SENSIBLE STACK ENTRY. A GARBAGE COLLECTION STORMAN 166
* WILL BE PERFORMED IF NECESSARY STORMAN 167
* A0,X1 STORMAN 168
* STORMAN 169
GETSTAK NO STORMAN 170
+ SA6 GSX6 . SAVE REGISTERS USED IN GETSTAK STORMAN 171
SA7 GSX7 STORMAN 172
SX6 B3 STORMAN 173
SX7 B4 STORMAN 174
SA6 GSB3 STORMAN 175
SA7 GSB4 STORMAN 176
BX6 X2 STORMAN 177
SX2 B7 STORMAN 178
SA6 GSX2 STORMAN 179
SX1 0 STORMAN 180
GS1 SX1 X1+1 . NUMBER OF FREE WORDS TO X1 STORMAN 181
SA2 X2 STORMAN 182
NZ X2,GS1 STORMAN 183
SB3 B7 STORMAN 184
SB7 A2 . DO AS IF FL WERE EMPTY STORMAN 185
SX6 B0-B6 STORMAN 186
SA2 MAXSTAK STORMAN 187
IX2 X6-X2 . MAXSTAK-B6 TO X2 STORMAN 188
IX1 X1+X2 . NUMBER OF POTENTIAL STACK WORDS STORMAN 189
SX2 X1-BUFF2 STORMAN 190
BX1 -X2 . IF NOT ENOUGH, GET SOME MORE STORMAN 191
PL X2,GS3 STORMAN 192
SX1 X1+5 . PLAY IT SAFE STORMAN 193
RJ GETLS STORMAN 194
GS3 SX6 B1 . SAVE REGISTERS USED IN GRBCOLL STORMAN 195
SX7 B2 STORMAN 196
SA6 GSB1 STORMAN 197
SA7 GSB2 STORMAN 198
SB7 B3 STORMAN 199
SB1 A0 STORMAN 200
SB6 B6-B1 . RESET B6 TO THE LAST ENTRY STORMAN 201
RJ GRBCOLL . COLLECT GARBAGE STORMAN 202
SB6 B6+A0 . RESTORE B6 STORMAN 203
SA1 GSX6 STORMAN 204
SA2 GSX7 . RESTORE ALL REGISTERS USED STORMAN 205
BX6 X1 STORMAN 206
BX7 X2 STORMAN 207
SA1 GSB1 STORMAN 208
SA2 GSB2 STORMAN 209
SB1 X1 STORMAN 210
SB2 X2 STORMAN 211
SA1 GSB3 STORMAN 212
SA2 GSB4 STORMAN 213
SB3 X1 STORMAN 214
SB4 X2 STORMAN 215
SA2 GSX2 STORMAN 216
EQ GETSTAK . RETURN STORMAN 217
* STORMAN 218
GSX2 EQU MFX2 STORMAN 219
GSX6 EQU MFX6 STORMAN 220
GSX7 EQU MFX7 STORMAN 221
GSB1 DATA 0 STORMAN 222
GSB2 DATA 0 STORMAN 223
GSB3 DATA 0 STORMAN 224
GSB4 DATA 0 STORMAN 225
* SAVE LOCATIONS USED BY RESHB STORMAN 226
RESHB1 DATA 0 STORMAN 227
RESHB4 DATA 0 STORMAN 228
TITLE GARBAGE COLLECTION STORMAN 229
* GARBAGE COLLECTION BEGINS WITH COUNTING THE NUMBER OF WORDS STORMAN 230
* ON THE FREE CHAIN. OUR AIM IS TO GATHER ALL FREE WORDS TO STORMAN 231
* THE LOWER PART OF THE DYNAMIC AREA THAT WE CAN DELETE THEM. STORMAN 232
* THIS CAN BE OBTAINED BY SCANNING ALL EXISTING LISTS STORMAN 233
* AND MOVING WORDS IN THE LOWER PART TO FREE WORDS IN THE STORMAN 234
* UPPER. STORMAN 235
* X1,X2,X6,X7,B1,B2,B3,B4 STORMAN 236
* STORMAN 237
GRBCOLL BSSZ 1 STORMAN 238
SA1 LSCOUNT . COUNT THIS COLLECTION STORMAN 239
SX7 X1+1 STORMAN 240
SA7 A1 STORMAN 241
+ SX2 B7 STORMAN 242
SX6 B0 STORMAN 243
SA1 MAXSTAK STORMAN 244
GRB1 SX6 X6+1 . COUNT THE NUMBER OF FREE WORDS STORMAN 245
SB3 A2 STORMAN 246
SA2 X2 STORMAN 247
NZ X2,GRB1 STORMAN 248
IX6 X6-X1 . NOTE THAT MAXSTAK IS NEGATIVE STORMAN 249
SB4 B6 STORMAN 250
SX6 X6-1 STORMAN 251
SB1 X6 . B1 IS THE LIMIT BETWEEN THE LOWER STORMAN 252
BX6 -X6 STORMAN 253
SA6 A1 STORMAN 254
BX7 X7-X7 STORMAN 255
RJ GRBFW . AND THE UPPER PARTS STORMAN 256
SB2 A2 . IF THE END OF FREE CHAIN IS IN STORMAN 257
GE B2,B1,GRB3 . THE LOWER PART, RELOCATE STORMAN 258
SX6 A1 STORMAN 259
SA6 B3 STORMAN 260
SA7 A1 STORMAN 261
RJ GRBFW STORMAN 262
GRB3 SA2 B4 . SCAN STACK FOR LS REFERENCES STORMAN 263
SB3 X2 STORMAN 264
ZR X2,GRB2 STORMAN 265
NG X2,GRB4 STORMAN 266
SB4 B4-B3 STORMAN 267
AX2 55 STORMAN 268
NZ X2,GRB3 STORMAN 269
SA2 B4+1 . SF TYPE FOUND IN STACK STORMAN 270
RJ GRBSVD STORMAN 271
JP GRB3 STORMAN 272
GRB4 SB2 B4-2 . RETURN INFORMATION IN STACK STORMAN 273
SB4 B4-B3 . SCAN STACKED LOCAL SVD-S STORMAN 274
GRB4A SA2 B2 STORMAN 275
RJ GRBSVD STORMAN 276
SB2 B2-2 STORMAN 277
LT B4,B2,GRB4A STORMAN 278
EQ GRB3 STORMAN 279
* STORMAN 280
* GRBFW SUPPLIES THE NEXT FREE LINK WHICH IS IN THE UPPER STORMAN 281
* PART. GARBAGE COLLECTION ENDS WHEN THE END WORD IS MET. STORMAN 282
* (I.E. THERE ARE NO MORE FREE WORDS IN UPPER Q.E.D.) STORMAN 283
* LOCAL TO GRBCOLL STORMAN 284
GRB5 SB7 X1+0 . NO, THIS IS NOT THE ENTRY STORMAN 285
GRBFW NO STORMAN 286
GRB6 SA1 B7 . NEXT FREE LINK STORMAN 287
ZR X1,GRBCOLL . BRANCH IF ENDWORD STORMAN 288
GE B7,B1,GRB5 . BRANCH IF IN UPPER STORMAN 289
SB7 X1+0 STORMAN 290
EQ GRB6 . LOOP IF IT IS IN LOWER STORMAN 291
* STORMAN 292
* THIS SUBROUTINE FOLLOWS A LIST STRUCTURE. IF A LINK IS STORMAN 293
* IN LOWER, IT WILL BE RELOCATED. STORMAN 294
* LOCAL TO GRBCOLL STORMAN 295
GRBLINK NO STORMAN 296
GRBL1 SB3 X2 . POINTER TO NEXT WORD STORMAN 297
EQ B0,B3,GRBLINK . BRANCH IF END LIST STORMAN 298
GRBL2 GE B3,B1,GRBL4 . BRANCH IF IN UPPER STORMAN 299
SX7 A1 STORMAN 300
MX1 42 STORMAN 301
BX1 X1*X2 . UPDATE LINK AND RELOCATE STORMAN 302
BX7 X1+X7 STORMAN 303
SA7 A2 STORMAN 304
SA2 B3 STORMAN 305
BX7 X2 STORMAN 306
SA7 A1 STORMAN 307
SA2 A7 STORMAN 308
SB3 X2 STORMAN 309
NE B0,B3,GRBL3 . IF END LIST THEN STORMAN 310
SB3 -1 . SIGNAL LAST IS RELOCATED STORMAN 311
EQ GRBLINK . AND RETURN STORMAN 312
GRBL3 RJ GRBFW STORMAN 313
EQ GRBL2 STORMAN 314
GRBL4 SA2 X2 . IN UPPER, GET NEXT WORD STORMAN 315
EQ GRBL1 STORMAN 316
* LOCAL TO GRBCOLL STORMAN 317
* STORMAN 318
* SCAN HEAP STORAGE FOR LS REFERENCES: STORMAN 319
* STORMAN 320
GRB2 SA2 MINHS . TREAT THE 2 SPECIAL WORDS FIRST STORMAN 321
SB2 X2 STORMAN 322
SA2 X2 STORMAN 323
ZR X2,GRB2A . IGNORE IF EMPTY STORMAN 324
RJ GRBSVD . IT NEED NOT BE IN SVD FORMAT STORMAN 325
GRB2A SA2 B2+1 STORMAN 326
SB2 B2+3 . B2 POINTS TO THE FIRST HB STORMAN 327
ZR X2,GRBS1 STORMAN 328
RJ GRBSVD STORMAN 329
* STORMAN 330
* B2 POINTS TO WORD 0 OF THE NEXT HEAP BLOCK OR TO STORMAN 331
* THE NEXT SVD IN A STRUCTURE STORMAN 332
* STORMAN 333
GRBS1 SA2 B2+0 STORMAN 334
ZR X2,'VE4' . ERROR IF END OF HS STORMAN 335
PL X2,GRBS3 . BRANCH IF SVD STORMAN 336
AX2 18 STORMAN 337
SX6 B2+1 STORMAN 338
SB2 X2+B2 . X2 IS BYPASS STORMAN 339
AX2 37 STORMAN 340
SX2 X2-CALLTYP+37B . BRANCH IF NOT VARIABLE OR STORMAN 341
NG X2,GRBS4 . FUNCTION NAME STORMAN 342
NZ X2,GRBS2 . BRANCH IF NOT FUNCTION STORMAN 343
SA2 X6 STORMAN 344
NG X2,GRBS1 . BRANCH IF STANDARD PROCEDURE STORMAN 345
BX1 X2 STORMAN 346
AX1 55 STORMAN 347
SX1 X1-DATATYP STORMAN 348
ZR X1,GRBS1 . BRANCH IF NOT PROC OR FIELD STORMAN 349
RJ GRBLINK . UNDF WILL BE IGNORED (F1=0) STORMAN 350
GE B3,B0,GRBS1 STORMAN 351
RJ GRBFW STORMAN 352
JP GRBS1 STORMAN 353
GRBS2 SA2 X6+0 . IF VARIABLE STORMAN 354
SB2 B2-1 . FETCH SVD IN VALUE WORD STORMAN 355
GRBS3 SB2 B2+1 STORMAN 356
RJ GRBSVD STORMAN 357
JP GRBS1 STORMAN 358
GRBS4 SX2 X2+CALLTYP-STRTYP STORMAN 359
NZ X2,GRBS1 . BRANCH IF NOT A STRUCTURE STORMAN 360
SB2 X6 STORMAN 361
EQ GRBS1 STORMAN 362
* STORMAN 363
* TREAT SVD IN X2 (A2) STORMAN 364
GRBSVD DATA 0 STORMAN 365
BX1 X2 . UNPACK THE TYPE STORMAN 366
AX1 55 STORMAN 367
SX1 X1-ITY . BRANCH IF SF, SS, STORMAN 368
NG X1,GRBSS . PS,PA OR PE STORMAN 369
SX1 X1-1 STORMAN 370
ZR X1,GRBR . R TYPE STORMAN 371
SX1 X1-5 STORMAN 372
NG X1,GRBSVD . A,D,N OR C STORMAN 373
GRBIO RJ GRBSNGL . IN OR OUT, SVD IS IN DYNAMIC STORMAN 374
SA2 B3 . STORAGE TOO STORMAN 375
GRBSS SX6 A2 STORMAN 376
RJ GRBLINK . UPDATE LIST STORMAN 377
GE B3,B0,GRBSVD STORMAN 378
MX1 42 . CHANGE LAST IF CHANGED STORMAN 379
SA2 X6 STORMAN 380
SX7 A1 STORMAN 381
LX1 18 STORMAN 382
LX7 18 STORMAN 383
BX2 X1*X2 STORMAN 384
BX7 X2+X7 STORMAN 385
SA7 A2 STORMAN 386
* GRBFW HAS TO BE CALLED WHENEVER GRBLING RETURNS A STORMAN 387
* LAST CHANGED SIGNAL STORMAN 388
RJ GRBFW STORMAN 389
JP GRBSVD STORMAN 390
GRBR RJ GRBSNGL . ACTION ON R TYPE STORMAN 391
JP GRBSVD STORMAN 392
* STORMAN 393
* LOCAL TO GRBCOLL STORMAN 394
* STORMAN 395
GRBSNGL NO STORMAN 396
+ SB3 X2 STORMAN 397
GE B3,B1,GRBSNGL . RETURN IF IN UPPER STORMAN 398
SX7 A1 STORMAN 399
MX1 42 STORMAN 400
BX1 X1*X2 . RELOCATE AND UPDATE LINK STORMAN 401
BX7 X1+X7 STORMAN 402
SA7 A2 STORMAN 403
SA2 B3 STORMAN 404
BX7 X2 STORMAN 405
SA7 A1 STORMAN 406
SB3 A1 STORMAN 407
RJ GRBFW STORMAN 408
EQ GRBSNGL STORMAN 409
* STORMAN 410
* STORMAN 411
CKSFCK BSSZ 1 STORMAN 412
SA1 STATWD STORMAN 413
MX2 1 STORMAN 414
LX2 B1,X2 STORMAN 415
BX2 X2*X1 STORMAN 416
ZR X2,CKSFCK . DON'T DO SELFCHECK STORMAN 417
RJ SELFCHK STORMAN 418
EQ CKSFCK STORMAN 419
EJECT STORMAN 420
* RESHB STORMAN 421
* THIS SUBROUTINE RESERVES A HEAP BLOCK OF SIZE B1 STORMAN 422
* FROM THE FREE POOL. IF THE POOL DOES NOT CONTAIN STORMAN 423
* ANY BLOCKS OF THE REQUIRED SIZE, OR LARGER, THE HEAP STORMAN 424
* STORAGE AREA IS EXTENDED AT THE EXPENSE OF STACK STORAGE. STORMAN 425
* A HSC IS SCHEDULED IF THE FREE POOL IS TOO FRAGMENTED STORMAN 426
* A CALL OF RESHB MAY INVOKE AN LSC. STORMAN 427
* STORMAN 428
* PARAM: B1 SIZE OF HEAP BLOCK TO BE RESERVED STORMAN 429
* RESULT: B3 POINTS TO WORD 0 OF THE RESERVED HB STORMAN 430
* X0,X1,X2,X6,X7,B2,A0 STORMAN 431
* STORMAN 432
RESHB DATA 0 STORMAN 433
RHBL0 SA2 FHBLRP . FETCH ROVING POINTER STORMAN 434
SB3 B0 STORMAN 435
BX6 X2 . END OF CIRCULAR LIST STORMAN 436
RHBL1 SA1 X2 . WORD 0 OF NEXT FREE BLOCK STORMAN 437
SX2 X1 . FORWARD POINTER STORMAN 438
LX1 60-18 STORMAN 439
SB2 X1 . SIZE OF FHB TO B2 STORMAN 440
GE B2,B1,RHBL4 . BRANCH IF FITS STORMAN 441
BX1 X2-X6 . CHECK FOR END OF LIST STORMAN 442
SB3 B3+B2 . TOTAL FREE STORAGE IN B3 STORMAN 443
NZ X1,RHBL1 STORMAN 444
* NO FIT, EXTEND HS AREA STORMAN 445
SX7 B1 . SAVE B1 AND B4 STORMAN 446
SX6 B4 STORMAN 447
SA7 RESHB1 STORMAN 448
SA6 RESHB4 STORMAN 449
LT B3,B1,RHBL2 . BRANCH IF NOT TOO FRAGMENTED STORMAN 450
RJ SCHHBC STORMAN 451
RHBL2 SA1 MAXSTAK . IF AMPLE SPACE IN SS STORMAN 452
SB3 B1+B1 STORMAN 453
SB2 X1+B6 STORMAN 454
SB2 B0-B2 STORMAN 455
GE B3,B2,RHBL3 STORMAN 456
SX1 B2 STORMAN 457
AX1 1 . TAKE HALF OF IT STORMAN 458
SB1 X1+0 STORMAN 459
RHBL3 SB3 B1 STORMAN 460
RJ PUSHSTK . PUSH THE STACK B3 WORDS TOWARD STORMAN 461
SA1 MINSTAK . HIGHER ADDRESSES STORMAN 462
SA2 MAXHS STORMAN 463
BX7 X1 STORMAN 464
SB4 X1 STORMAN 465
SA7 A2 STORMAN 466
SB3 X2 STORMAN 467
* CREATE A FREE BLOCK BETWEEN OLD MAXHS AND STORMAN 468
* MINSTAK-1. CONCATENATE WITH LAST FREE BLOCK IN HS IF ANY. STORMAN 469
SA1 MINHS STORMAN 470
SA1 X1+2 STORMAN 471
MX0 1 STORMAN 472
LX0 60-5 STORMAN 473
BX7 X1+X0 . LAST BLOCK WILL BE FREE STORMAN 474
SA7 A1 STORMAN 475
LX1 5 STORMAN 476
PL X1,RHBL3A . BRANCH IF LAST BLOCK NOT FREE STORMAN 477
SA1 B3-1 STORMAN 478
AX1 18 STORMAN 479
SB2 X1 . BYPASS FOR LAST BLOCK STORMAN 480
SA1 B3-B2 . WORD 0 OF LAST BLOCK STORMAN 481
SB3 B3-B2 STORMAN 482
RJ TOFHBL . TAKE IT OFF FHBL STORMAN 483
RHBL3A RJ INFHBL . FREE BLOCK B3-(B4-1) STORMAN 484
SA1 RESHB1 STORMAN 485
SA2 RESHB4 STORMAN 486
SB1 X1 STORMAN 487
SB4 X2 STORMAN 488
JP RHBL0 . REPEAT SEARCH STORMAN 489
* FIRST FIT: DECIDE IF EXACT FIT STORMAN 490
RHBL4 EQ B1,B2,RHBL6 . BRANCH IF EXACT FIT STORMAN 491
* NOT EXACT FIT, CREATE FHB BETWEEN A1+B1 AND A1+B2-1 STORMAN 492
SX7 A1+B1 STORMAN 493
SB2 A1+B2 STORMAN 494
SA7 FHBLRP . UPDATE FHBLRP JUST IN CASE... STORMAN 495
SB3 A1+B1 . WORD 0 OF REST TO B3 STORMAN 496
MX0 42 STORMAN 497
SX6 B2-B3 STORMAN 498
BX1 X0*X1 STORMAN 499
SB2 B2-1 STORMAN 500
LX1 18 STORMAN 501
LX6 18 STORMAN 502
BX7 X1+X6 . INSERT BYPASS INTO WORD 0 STORMAN 503
BX2 X1 STORMAN 504
SA1 X1 STORMAN 505
EQ B2,B3,RHBL5 . STORE BYPASS INTO LAST WORD STORMAN 506
SA6 B2 . UNLESS BLOCK IS 1 WORD LONG STORMAN 507
RHBL5 SA7 B3 STORMAN 508
SX0 B1 STORMAN 509
LX1 60-36 STORMAN 510
IX6 X1+X0 . UPDATE BACK(FORWARD) STORMAN 511
LX2 60-36 STORMAN 512
LX6 36 STORMAN 513
SA6 A1 STORMAN 514
SA2 X2 STORMAN 515
IX7 X2+X0 . UPDATE FORWARD (BACK) STORMAN 516
SB3 B3-B1 . RESULT TO B3 STORMAN 517
SA7 A2+0 STORMAN 518
EQ RESHB STORMAN 519
* REMOVE FROM FREE POOL COMPLETELY IF EXACT FIT STORMAN 520
RHBL6 LX1 18 STORMAN 521
SB3 A1 . RESULT TO B3 STORMAN 522
RJ TOFHBL STORMAN 523
* SET MARK BIT TO 0 IN THE IMMEDIATELY FOLLOWING HB STORMAN 524
* (WRAP AROUND AT MAXHS) STORMAN 525
SA1 B2+B3 . FETCH WORD 0 OF NEXT HB STORMAN 526
MX0 1 STORMAN 527
NZ X1,RHBL7 . BRANCH IF NOT MAXHS STORMAN 528
SA1 MINHS STORMAN 529
SA1 X1+2 . WRAP AROUND STORMAN 530
RHBL7 LX0 60-5 . MARK BIT IN X0 STORMAN 531
BX7 -X0*X1 . RESET MARK BIT AT A1 STORMAN 532
SA7 A1+0 STORMAN 533
JP RESHB STORMAN 534
* STORMAN 535
* FREEHB STORMAN 536
* RETURN BLOCK OF STORAGE TO FREE HEAP BLOCK POOL STORMAN 537
* PARAM: B3 POINTS TO WORD 0 OF BLOCK TO BE RETURNED STORMAN 538
* B4 POINTS TO THE LAST WORD+1 STORMAN 539
* X0,X1,X2,X7,B3,B4 STORMAN 540
* STORMAN 541
FREEHB DATA 0 STORMAN 542
SA1 B3 . MARK BIT IS SET IF PREVIOUS STORMAN 543
LX1 5 . BLOCK IS FREE(NEVER SET DURING HSC)STORMAN 544
PL X1,FHBA STORMAN 545
* CONCATENATE WITH PREVIOUS FREE BLOCK STORMAN 546
SA1 B3-1 . FETCH BYPASS VALUE FROM STORMAN 547
AX1 18 . PREVIOUS BLOCK STORMAN 548
BX1 -X1 STORMAN 549
SB3 B3+X1 STORMAN 550
SA1 B3 . WORD 0 OF PREVIOUS BLOCK STORMAN 551
RJ TOFHBL . REMOVE FROM FHBL STORMAN 552
FHBA SA1 B4 . CHECK IS NEXT BLOCK IS FREE STORMAN 553
AX1 55 STORMAN 554
SX1 X1-FRETYP+37B STORMAN 555
NZ X1,FHBB STORMAN 556
* CONCATENATE WITH NEXT FREE BLOCK STORMAN 557
SA1 B4 . WORD 0 OF NEXT BLOCK STORMAN 558
BX2 X1 STORMAN 559
AX2 18 STORMAN 560
SB4 B4+X2 . EXTEND THE AREA BY BYPASS STORMAN 561
RJ TOFHBL . REMOVE BLOCK FROM FHBL STORMAN 562
FHBB RJ INFHBL . INSERT THE WHOLE AREA INTO FHBL STORMAN 563
* SET MARK BIT TO 1 IN THE IMMEDIATELY FOLLOWING HB STORMAN 564
* (WRAP AROUND AT MAXHS) STORMAN 565
SA1 B4+1 . FETCH WORD 0 OF NEXT HB STORMAN 566
NZ X1,FHBC . BRANCH IF NOT MAXHS STORMAN 567
SA1 MINHS STORMAN 568
SA1 X1+2 . WRAP AROUND STORMAN 569
FHBC MX0 1 STORMAN 570
LX0 60-5 STORMAN 571
BX7 X0+X1 STORMAN 572
SA7 A1 . SET MARK BIT AT A1 STORMAN 573
JP FREEHB STORMAN 574
* STORMAN 575
* TOFHBL STORMAN 576
* TAKE A BLOCK OFF THE FREE HEAP BLOCK LIST STORMAN 577
* PARAM: X1 CONTAINS WORD 0 OF THE BLOCK TO BE TAKEN OFF STORMAN 578
* X0,X1,X2,X7 STORMAN 579
* STORMAN 580
TOFHBL DATA 0 STORMAN 581
MX0 42 STORMAN 582
SA2 X1 . WORD 0 OF NEXT BLOCK STORMAN 583
LX0 36 . MASK FOR BACK POINTER STORMAN 584
BX7 X0*X2 STORMAN 585
BX2 -X0*X1 STORMAN 586
BX7 X7+X2 . COPY BACK POINTER INTO NEXT BLOCK STORMAN 587
SA7 A2 STORMAN 588
MX0 42 STORMAN 589
SX7 X1 STORMAN 590
LX1 60-36 STORMAN 591
SA7 FHBLRP . UPDATE ROVING POINTER STORMAN 592
SA2 X1 . WORD 0 OF PREVIOUS BLOCK STORMAN 593
BX2 X0*X2 STORMAN 594
BX7 X7+X2 . COPY FORWARD POINTER INTO PREVIOUS STORMAN 595
SA7 A2 . BLOCK STORMAN 596
EQ TOFHBL STORMAN 597
* STORMAN 598
* INFHBL STORMAN 599
* INSERT BLOCK BETWEEN B3 AND B4-1 INTO THE FREE HEAP BLOCK LIST STORMAN 600
* PARAM: B3 AND STORMAN 601
* B4 DELIMIT THE AREA STORMAN 602
* X0,X1,X2,X7,B4 STORMAN 603
* STORMAN 604
INFHBL DATA 0 STORMAN 605
SA1 FHBLRP . INSERT AFTER BLOCK AT X1 STORMAN 606
SX2 FRETYP STORMAN 607
LX2 19 . ACCUMULATE NEW WORD 0 IN X2 STORMAN 608
BX2 X2+X1 . MERGE NEW BACK POINTER STORMAN 609
SA1 X1 . WORD 0 OF PREVIOUS BLOCK STORMAN 610
MX0 42 STORMAN 611
SX7 B3 . NEW FORWARD POINTER IN PREV. BLOCK STORMAN 612
BX0 X0*X1 STORMAN 613
BX7 X7+X0 STORMAN 614
SX1 X1 . ADDRESS OF NEXT BLOCK ON LIST STORMAN 615
SA7 A1 STORMAN 616
LX2 18 STORMAN 617
SX0 B4-B3 STORMAN 618
BX2 X2+X0 . MERGE NEW BYPASS VALUE STORMAN 619
LX2 18 STORMAN 620
BX7 X2+X1 . MERGE NEW FORWARD POINTER STORMAN 621
SA7 B3 . STORE NEW WORD 0 STORMAN 622
SA1 X1 . WORD 0 OF NEXT BLOCK STORMAN 623
MX0 42 STORMAN 624
SX2 B3 . NEW BACK POINTER IN NEXT BLOCK STORMAN 625
LX1 24 STORMAN 626
BX1 X0*X1 STORMAN 627
BX7 X1+X2 STORMAN 628
LX7 36 STORMAN 629
SA7 A1 STORMAN 630
SX7 B4-B3 . BYPASS VALUE TO BE STORED IN STORMAN 631
LX7 18 . LAST WORD STORMAN 632
SB4 B4-1 STORMAN 633
EQ B4,B3,INFHBL . UNLESS BLOCK IS 1 WORD LONG STORMAN 634
SA7 B4 STORMAN 635
EQ INFHBL STORMAN 636
EJECT STORMAN 637
* STORMAN 638
* SEND MESSSGE TO DAYFILE SAYING THAT A HEAP BLOCK COMPACTION IS STORMAN 639
* GOING TO TAKE PLACE STORMAN 640
* THIS WILL HELP WITH DEBUGGING STORMAN 641
HBCCALL DIS ,$ HEAP BLOCK COMPACTION CALLED$ STORMAN 642
HCALL VFD 18/3LMSG,42/HBCCALL STORMAN 643
* STORMAN 644
HBC DATA 0 STORMAN 645
SA1 HBCSTAT . DON'T DO HBC IF STORMAN 646
ZR X1,HBC . HBC STATUS WORD IS ZERO STORMAN 647
* STORMAN 648
* HBC PHASE 1 STORMAN 649
* STORMAN 650
* TURN THE MARK BITS (BIT 5) OFF ON ALL ENTRIES STORMAN 651
* IN THE HEAP STORAGE AREA STORMAN 652
* ELIMINATE SS OR SI ENTRY IN STACK, IF ANY. STORMAN 653
* STORMAN 654
SA1 1 . WAIT FOR ANY PP CALLS TO FINISH STORMAN 655
NZ X1,* STORMAN 656
SA1 HCALL . ISSUE MESSAGE TO DAYFILE STORMAN 657
BX6 X1 STORMAN 658
SA6 1 STORMAN 659
+ SA1 1 STORMAN 660
NZ X1,* STORMAN 661
* STORMAN 662
* STORMAN 663
* CHECK FOR ANY INCOMPLETE FILE REQUESTS BEFORE DOING A HEAP BLOCK STORMAN 664
* COMPACTION STORMAN 665
* STORMAN 666
SX5 1 . USED TO CHECK COMPLETE BIT IN FET STORMAN 667
STREAM FILLIST . SET B2=PTR OF FIRST FILE BLOCK STORMAN 668
HBC1 SA1 B2+FI.FET+FET.LFN . STATUS WORD OF FET STORMAN 669
BX1 X1*X5 STORMAN 670
NZ X1,HBC2 . COMPLETE BIT WAS SET STORMAN 671
SX0 -1 STORMAN 672
RJ CALLRCL . GO INTO AUTORECALL STORMAN 673
HBC2 STREAM B2 . NEXT FILE BLOCK STORMAN 674
NZ B2,HBC1 STORMAN 675
* STORMAN 676
SB1 10 STORMAN 677
RJ CKSFCK . CHECK IF DO SELFCHECK STORMAN 678
SB1 4 STORMAN 679
RJ HBCTRC . FIND OUT IF TRC THIS PHASE STORMAN 680
SA1 B6 . SS OR SI MAY APPEAR ONLY STORMAN 681
AX1 55 . AT THE TOP OF STACK STORMAN 682
SX0 X1-SSTY STORMAN 683
ZR X0,WPH1A1 . BRANCH IF SS STORMAN 684
SX0 X1-SITY STORMAN 685
WPH1A1 NZ X0,WPH1A2 . BRANCH IF NOT SI AND NOT SS STORMAN 686
SA1 B6-1 STORMAN 687
SB1 A1 STORMAN 688
SA2 X1 STORMAN 689
RJ SSTOSF . TURN IT INTO SF BY COPYING STORMAN 690
SX7 2 . SF TYPE HEADER STORMAN 691
SA6 B1 STORMAN 692
SA7 B6 STORMAN 693
* STORMAN 694
WPH1A2 MX0 1 STORMAN 695
SA1 MINHS STORMAN 696
LX0 55 . MASK FOR MARK STORMAN 697
SB2 X1+3 . START AFTER THE 3 SPECIAL ENTRIES STORMAN 698
SB5 X1+3 STORMAN 699
WPH1A SA1 B2 . WORD 0 IN NEXT ENTRY TO X1 STORMAN 700
ZR X1,WPH1B . BRANCH IF END OF HS STORMAN 701
BX7 -X0*X1 . MASK MARK OFF STORMAN 702
AX1 18 . BYPASS IS F2 EXCEPT FOR STRTYP STORMAN 703
SA7 A1 STORMAN 704
SB2 B2+X1 . TENTATIVE NEXT ENTRY STORMAN 705
AX1 55-18 STORMAN 706
SX1 X1-STRTYP+37B STORMAN 707
NZ X1,WPH1A . BRANCH IF NOT STRTYP STORMAN 708
AX7 36 . BYPASS IS F3 IF STRTYP STORMAN 709
SB2 X7+0 STORMAN 710
SB2 B2+A1 STORMAN 711
EQ WPH1A STORMAN 712
* STORMAN 713
WPH1B BSS 0 STORMAN 714
* STORMAN 715
* END PHASE 1... STORMAN 716
* STORMAN 717
RJ CHKTRC . CHECK IF CAN TURN OFF TRACE STORMAN 718
EJECT STORMAN 719
* HBC PHASE 2 STORMAN 720
* ALL POSSIBLE PLACES, WHERE REFERENCES MAY BE STORMAN 721
* FOUND ARE EXAMINED AND THE REFERENCED HEAP BLOCKS STORMAN 722
* ARE MARKED. IN PARTICULAR, STORMAN 723
* SIMPLE VARIABLE, THE SVD IS EXAMINED (SEE BELOW) STORMAN 724
* LABEL CODE HB IS MARKED IF BASE NOT 0 STORMAN 725
* PROCEDURE FORMALS AND LOCALS MARKED. STORMAN 726
* ENTRY LABEL IS MARKED STORMAN 727
* DATA CONSTRUCTOR DOPE VECTOR IS MARKED STORMAN 728
* FIELD DOPE VECTORS ARE MARKED STORMAN 729
* WHEN DOPE VECTORS ARE MARKED, ALL STORMAN 730
* FUNCTIONS REFERENCED FROM THE DOPE STORMAN 731
* VECTOR ARE MARKED, TOO. STORMAN 732
* CODE REFERENCED SIMPLE VARIABLES, STORMAN 733
* LABELS, FUNCTIONS AND LITERALS STORMAN 734
* ARE MARKED STORMAN 735
* RETURN INFO IN STACK SVD-S ARE EXAMINED STORMAN 736
* CODE BLOCK CONTAINING CALL IS STORMAN 737
* MARKED. LOCALS ARE MARKED. STORMAN 738
* OTHER STACK ENTRY SVD CONTAINED IS EXAMINED. STORMAN 739
* PATTERN STACK ENTRY VARIABLES REFERENCED BY STORMAN 740
* STARPM, DOLPM OR PRDPM ARE STORMAN 741
* MARKED IF SIMPLE. IF THE VARIABLE STORMAN 742
* IS AN ELEMENT IN A STRUCTURE AND STORMAN 743
* THE STRUCTURE IS NOT MARKED, THE STORMAN 744
* SPECIAL MARK BIT IS SET IN WORD 0 STORMAN 745
* AND A REPEAT COUNTER AT MINHS IS STORMAN 746
* INCREMENTED STORMAN 747
* STRUCTURE IF THE SPECIAL MARK BIT IS SET STORMAN 748
* THE REPEAT COUNTER IS DECREMENTED, STORMAN 749
* THE SPEC. BIT IS RESET, AN NTY REFERENCE STORMAN 750
* TO THE STRUCTURE IS CREATED AND STORMAN 751
* EXAMINED. STORMAN 752
* AT THE END OF PHASE 2 IF THE REPEAT STORMAN 753
* COUNTER IS NOT 0, THE PHASE WILL BE STORMAN 754
* REPEATED. STORMAN 755
* ATY, DTY SVD IF THE REFERENCED STRUCTURE STORMAN 756
* IS NOT MARKED THEN IT WILL BE STORMAN 757
* MARKED AND ALL SVD-S IN THE STORMAN 758
* STRUCTURE ARE EXAMINED RECURSIVELY. STORMAN 759
* DOPE VECTORS ARE MARKED STORMAN 760
* NTY SVD IF SIMPLE, VARIABLE IS MARKED, STORMAN 761
* OTHERWISE TREATED LIKE DTY STORMAN 762
* PATY, PETY, PSTY SVD TREATED LIKE PATTERN STACK ENTRY STORMAN 763
* CTY SVD CODE BLOCK IS MARKED STORMAN 764
* STORMAN 765
* STORMAN 766
SA1 MINHS . MAKE SURE THAT BOTH STORMAN 767
SA3 X1+1 . SPECIAL LOCATIONS ARE 0 STORMAN 768
SA2 X1 STORMAN 769
BX3 X3+X2 STORMAN 770
NZ X3,'VE4' STORMAN 771
SB1 5 STORMAN 772
RJ HBCTRC . FIND OUT IF TRC THIS PHASE STORMAN 773
WPH2A SA1 B5 . B5 WAS INITIALIZED EARLIER STORMAN 774
ZR X1,WPH2B . END OF HS STORMAN 775
BX7 X1 STORMAN 776
AX1 18 STORMAN 777
SB1 X1 . TENTATIVE BYPASS STORMAN 778
AX1 55-18 STORMAN 779
SX5 B5+B1 . PREPARE NEXT B5 STORMAN 780
SX0 X1-VARTYP+37B STORMAN 781
ZR X0,WPH2H . SIMPLE VARIABLE STORMAN 782
SX0 X1-LBLTYP+37B STORMAN 783
ZR X0,WPH2I . LABEL STORMAN 784
SX0 X1-CALLTYP+37B STORMAN 785
ZR X0,WPH2L . FUNCTION STORMAN 786
SX0 X1-CODTYP+37B STORMAN 787
ZR X0,WPH2P STORMAN 788
SX0 X1-STRTYP+37B STORMAN 789
SB5 X5 . START OF NEXT HB, UNLESS CURR.=STR.STORMAN 790
LX7 60-36 . RIGHT JUSTIFY F3 OF CURRENT HB HEADSTORMAN 791
NZ X0,WPH2A . NOT STRUCTURE, B5 IS SET CORRECTLY STORMAN 792
* CURRENT HB IS STRUCTURE, BYPASS IS IN F3 (NOT F2) OF HEADER STORMAN 793
SB5 A1 . RESET B5 TO START OF CURRENT HB STORMAN 794
SX2 B5 STORMAN 795
SB5 B5+X7 STORMAN 796
LX7 18 STORMAN 797
PL X7,WPH2A . BRANCH IF SPECIAL BIT IS NOT SET STORMAN 798
MX0 1 STORMAN 799
BX7 X7-X0 . REMOVE BIT STORMAN 800
LX7 18 STORMAN 801
SA7 X2 STORMAN 802
SA1 MINHS STORMAN 803
MX0 59 . =-1 STORMAN 804
SA3 X1 STORMAN 805
LX7 5 STORMAN 806
IX6 X3+X0 . DECREMENT REPEAT COUNT STORMAN 807
SX0 NTY STORMAN 808
SA6 A3 STORMAN 809
NG X7,WPH2A . BRANCH IF STRUCTURE IS ALREADY STORMAN 810
LX0 55 . MARKED STORMAN 811
LX2 18 STORMAN 812
SB2 X1+1 STORMAN 813
BX7 X2+X0 . ESSENTIALLY NTY SVD TO X7 STORMAN 814
SA7 B2 STORMAN 815
RJ WSVD . EXAMINE IT STORMAN 816
JP WPH2A STORMAN 817
* STORMAN 818
* NOW SCAN THE STACK FOR RETURN INFO AND SVD-S. STORMAN 819
* STORMAN 820
WPH2B SB5 B6+0 STORMAN 821
WPH2C SA1 B5 . NEXT STACK ENTRY HEADING STORMAN 822
ZR X1,WPH2S . BOTTOM OF THE STACK STORMAN 823
SB4 X1 . BYPASS STORMAN 824
SX5 B5-B4 . PREPARE NEXT B5 STORMAN 825
PL X1,WPH2E STORMAN 826
* IT IS AN ENTRY CONTAINING RETURN INFORMATION STORMAN 827
AX1 18 . FIND THE RETURN CODE BLOCK STORMAN 828
SB2 X1 STORMAN 829
RJ CBAS STORMAN 830
MX0 1 STORMAN 831
LX0 55 STORMAN 832
RJ WMARK . MARK CODE BLOCK STORMAN 833
SX5 B5-2 . INTITIALIZE SVD POINTER STORMAN 834
SX6 B4-1 . - SVD COUNT STORMAN 835
WPH2D SA1 X5+1 . LOCAL ADDRESS STORMAN 836
MX0 1 STORMAN 837
LX6 18 STORMAN 838
LX0 55 STORMAN 839
BX5 X5+X6 . PACK X6+X5 INTO X5 STORMAN 840
RJ WMARK . MARK LOCAL STORMAN 841
SB2 X5 STORMAN 842
RJ WSVD . EXAMINE SVD STORMAN 843
BX6 X5 STORMAN 844
SX5 X5-2 . NEW SVD POINTER STORMAN 845
AX6 18 STORMAN 846
SX6 X6-2 . NEW COUNT STORMAN 847
NZ X6,WPH2D STORMAN 848
SB5 X5+1 . POINT TO NEXT HEADER STORMAN 849
JP WPH2C . FINISHED WITH RETURN INFO STORMAN 850
* NOT RETURN: DISPATCH ON TYPE STORMAN 851
WPH2E AX1 55 . SEE AT CHEK STORMAN 852
SA2 WPH2WD STORMAN 853
LX1 2 STORMAN 854
SB3 X1 STORMAN 855
AX2 B3,X2 STORMAN 856
MX0 56 STORMAN 857
SB2 X5 . PREPARE FOR PATTERNS BELOW STORMAN 858
BX2 -X0*X2 STORMAN 859
SB3 X2 STORMAN 860
JP B3+WPH2SW STORMAN 861
* STORMAN 862
WPH2WD SWITCH WPH2SW,0,1,0,0,2,2,2,0,0,3,3,3,3,0,0 STORMAN 863
+ SB5 B5-B4 . 0, SF,I,R,SPEC STORMAN 864
JP WPH2C . NOTE JUMP AT WPH2F+1 STORMAN 865
+ MX0 1 . 1, S STORMAN 866
LX0 55 STORMAN 867
JP WPH2E1 STORMAN 868
+ MX0 1 . 2, PS,PA,PE STORMAN 869
LX0 55 STORMAN 870
JP WPH2F STORMAN 871
+ SB2 B5-1 . 4, A,D,N,C STORMAN 872
RJ WSVD STORMAN 873
SB5 X5 . NOTE HOW X5 WAS PREPARED STORMAN 874
JP WPH2C STORMAN 875
* SCAN PATTERN IN STACK FOR STARPM, PRDPM OR DOLPM STORMAN 876
WPH2F SB2 B2+1 . NEXT PATTERN WORD ADDRESS STORMAN 877
EQ B2,B5,WPH2SW STORMAN 878
SA2 B2 . NEXT PATTERN WORD STORMAN 879
SX1 X2+0 STORMAN 880
UX7 B3,X2 STORMAN 881
NG X1,WPH2F . BRANCH IF BIT TABLE STORMAN 882
ID X2,WPH2G . - IF PRD OR DOLPM STORMAN 883
NE B3,B0,WPH2F - IF NOT STARPM STORMAN 884
WPH2G SX1 X1-1 STORMAN 885
RJ WMARKP . SPECIAL REFERENCE STORMAN 886
EQ WPH2F STORMAN 887
* STORMAN 888
* MARK SOURCE OF S IF NOTED: STORMAN 889
WPH2E1 SA1 B6 STORMAN 890
AX1 18 STORMAN 891
SX1 X1+0 STORMAN 892
ZR X1,WPH2SW . BRANCH IF F2=0 STORMAN 893
RJ WMARK STORMAN 894
JP WPH2SW STORMAN 895
* STORMAN 896
* PROCESS HEAP BLOCKS STORMAN 897
* SIMPLE VARIABLE HBWN STORMAN 898
* STORMAN 899
WPH2H SB2 B5+1 . POINTER TO THE VALUE WORD STORMAN 900
RJ WSVD STORMAN 901
SB5 X5 STORMAN 902
JP WPH2A STORMAN 903
* STORMAN 904
* LABEL HBWN STORMAN 905
* STORMAN 906
WPH2I SA1 B5+1 . FETCH CPD STORMAN 907
AX1 18 STORMAN 908
SX1 X1 STORMAN 909
WPH2J ZR X1,WPH2K . BRANCH IF NOT SIMPLE LABEL STORMAN 910
MX0 1 . NOTE BRANCH AT WPH2N BELOW STORMAN 911
LX0 55 STORMAN 912
RJ WMARK . MARK CODE BLOCK STORMAN 913
WPH2K SB5 X5 STORMAN 914
JP WPH2A STORMAN 915
* STORMAN 916
* FUNCTION HBWN, DISPATCH ON FUTY STORMAN 917
* STORMAN 918
WPH2L SA1 B5+1 . FETCH FUD STORMAN 919
NG X1,WPH2K . BRANCH IF STANDARD PROCEDURE STORMAN 920
BX2 X1 . X2 POINTS TO LIST WITH F2 REFS. STORMAN 921
MX0 1 . STORMAN 922
AX1 55 . FUTY TO X1 STORMAN 923
LX0 55 . MARK BIT TO X0 STORMAN 924
ZR X1,WPH2M2 . BRANCH IF PROCEDURE STORMAN 925
UX7 B4,X1 STORMAN 926
LT B4,B0,WPH2N . BRANCH IF NOT FIELD STORMAN 927
SX2 A1+0 . START OF LIST IF FIELD STORMAN 928
WPH2M SA1 X2 . LOOP TO MARK DOPE VECTORS STORMAN 929
SX2 X1+0 . IN LIST STORMAN 930
AX1 18 . GET F2 STORMAN 931
WPH2M1 RJ WMARKDP STORMAN 932
NZ X2,WPH2M . BRANCH IF NOT LAST IN LIST STORMAN 933
SB5 X5 STORMAN 934
JP WPH2A STORMAN 935
WPH2N SX7 X1-DATATYP . FUTY IS STILL IN X1 STORMAN 936
NZ X7,WPH2K . BRANCH IF NOT DATA CONSTRUCTOR STORMAN 937
SA1 B5+1 STORMAN 938
RJ WMARKDP . MARK DOPE VECTORS STORMAN 939
SB5 X5 STORMAN 940
JP WPH2A STORMAN 941
WPH2M2 SA1 X2 . LOOP TO MARK PARAMETERS OF PROCEDURSTORMAN 942
SX2 X1+0 STORMAN 943
AX1 18 . GET F2 STORMAN 944
RJ WMARK STORMAN 945
NZ X2,WPH2M2 . BRANCH IF NOT LAST IN LIST STORMAN 946
SB5 X5 STORMAN 947
JP WPH2A STORMAN 948
* STORMAN 949
* CODE HB STORMAN 950
* NOTE THAT WMARK IS NOT USED HERE TO GAIN SPEED. STORMAN 951
* B5 POINTS ONE WORD BEYOND THE CHB STORMAN 952
* B4 - TO THE CURRENT MICOP WORD STORMAN 953
* B3 CONTAINS THE CONSTANT CALL STORMAN 954
* B1 - CONSTANT -1 STORMAN 955
* X0 - MARK BIT STORMAN 956
* STORMAN 957
WPH2P MX0 1 . PREPARE REGISTERS AS DESCRIBED STORMAN 958
SB1 -1 . ABOVE STORMAN 959
SB4 B5 STORMAN 960
LX0 55 STORMAN 961
SB5 X5 STORMAN 962
SB3 CALL STORMAN 963
WPH2Q SB4 B4-B1 . ADDRESS OF NEXT MICOP WORD STORMAN 964
GE B4,B5,WPH2A . BRANCH IF END OF CHB STORMAN 965
SA1 B4 . NEXT MICOP WORD TO X1 STORMAN 966
SB2 X1 STORMAN 967
GE B3,B2,WPH2R . JUMP IF BRANCH MICOP STORMAN 968
AX1 18 STORMAN 969
SX2 X1+B1 . MARK F2 ADDRESSED HBWN STORMAN 970
NG X2,WPH2R . UNLESS F2 LE 0 STORMAN 971
SA3 X2 STORMAN 972
NO STORMAN 973
BX7 X3+X0 STORMAN 974
SA7 A3 STORMAN 975
WPH2R AX1 18 . MARK F2 OR F3 ADDRESSED HBWN STORMAN 976
SX2 X1+B1 . UNLESS FIELD IS LE 0 STORMAN 977
NG X2,WPH2Q STORMAN 978
LX1 42 . CHECK FOR V BIT SET ON GOF BRANCHESSTORMAN 979
NG X1,WPH2Q STORMAN 980
SA4 X2 STORMAN 981
NO STORMAN 982
BX6 X4+X0 STORMAN 983
SA6 A4 STORMAN 984
EQ WPH2Q STORMAN 985
* STORMAN 986
* FINISHED STACK SCAN: TREAT A5 AS IN IMPLICIT STORMAN 987
* RETURN ADDRESS. (SEE ABOVE) STORMAN 988
* STORMAN 989
WPH2S SX1 A5 STORMAN 990
RJ CBAS STORMAN 991
MX0 1 STORMAN 992
LX0 55 STORMAN 993
RJ WMARK STORMAN 994
* STORMAN 995
* REPEAT PHASE 2 IF REPEAT COUNT IS NOT 0 STORMAN 996
SA1 MINHS STORMAN 997
BX7 X7-X7 STORMAN 998
SA2 X1 . REPEAT COUNT TO X2 STORMAN 999
SA7 X1+1 . CLEAR 2ND SPECIAL WORD STORMAN 1000
SB5 X1+2 STORMAN 1001
NZ X2,WPH2A STORMAN 1002
RJ CHKTRC . CHECK IF CAN TURN OFF TRACE STORMAN 1003
* STORMAN 1004
* END PHASE 2... STORMAN 1005
* STORMAN 1006
EJECT STORMAN 1007
* HBC PHASE 3 STORMAN 1008
* IN THE THIRD PHASE UNUSED HEAP BLOCKS ARE DELETED, STORMAN 1009
* AND F3 OF WORD 0 IN ALL USED BLOCKS IS UPDATED STORMAN 1010
* TO REFLECT THE ADDRESS OF THE BLOCK, WERE THE USED STORMAN 1011
* BLOCKS FOLLOWING EACH OTHER TIGHTLY. STORMAN 1012
* IN GENERAL, UNMARKED BLOCKS ARE UNUSED, EXCEPT STORMAN 1013
* - SIMPLE VARIABLES ARE UNUSED IF UNMARKED AND STORMAN 1014
* CONTAIN A NULL STRING STORMAN 1015
* - LABELS ARE UNUSED IF UNMARKED AND UNDEFINED STORMAN 1016
* - FUNCTIONS - - - STORMAN 1017
* FILTYP BLOCKS ARE USED UNLESS THEIR REFERENCE COUNT STORMAN 1018
* IS ZERO. STORMAN 1019
* STORMAN 1020
* B1 FUTURE BASE STORMAN 1021
* B2 CURRENT BASE STORMAN 1022
* X0 MASK FOR F3 STORMAN 1023
* STORMAN 1024
SB1 6 STORMAN 1025
RJ HBCTRC . FIND OUT IF TRC THIS PHASE STORMAN 1026
SA1 MINHS . PREPARE B1,B2 AND X0 STORMAN 1027
MX0 18 STORMAN 1028
LX0 60-6 STORMAN 1029
SB2 X1+3 STORMAN 1030
SB1 B2+0 STORMAN 1031
* STORMAN 1032
WPH3A SA1 B2 . WORD 0 OF NEXT HB STORMAN 1033
ZR X1,WPH3R . BRANCH IF END OF HS STORMAN 1034
BX2 X1 STORMAN 1035
BX7 -X0*X1 . CLEAR F3 STORMAN 1036
AX1 55 . HSTY TO X1 STORMAN 1037
LX2 5 STORMAN 1038
SX6 B1 STORMAN 1039
SX3 X1-STRTYP+37B STORMAN 1040
PL X2,WPH3E . BRANCH IF NOT MARKED STORMAN 1041
WPH3B LX2 60-5-18 . BYPASS TO X2 STORMAN 1042
NZ X3,WPH3C STORMAN 1043
SA2 X2 . GET BYPASS OF STRUCT. FROM DOPE V.STORMAN 1044
WPH3C LX6 36 . MARKED BLOCKS ARE USED STORMAN 1045
SB1 B1+X2 . THEREFORE UPDATE B1 STORMAN 1046
BX7 X7+X6 . MERGE IN FUTURE BASE STORMAN 1047
SA7 A1 STORMAN 1048
WPH3D SB2 B2+X2 . GO TO NEXT HB STORMAN 1049
EQ WPH3A STORMAN 1050
* STORMAN 1051
* FOR UNMARKED BLOCKS, DECIDE IF UNUSED STORMAN 1052
WPH3E LX2 60-5-18 STORMAN 1053
ZR X3,WPH3L STORMAN 1054
SX3 X1-FILTYP+37B . IF I/O BUFFER STORMAN 1055
ZR X3,WPH3N . BRANCH TO CHECK REF. COUNT STORMAN 1056
SX3 X1-FRETYP+37B STORMAN 1057
ZR X3,WPH3D . FREE BLOCK UNUSED STORMAN 1058
SX3 X1-CODTYP+37B . IF UNUSED CODE BLOCK STORMAN 1059
ZR X3,WPH3M . GO TAKE IT OFF CODLIST STORMAN 1060
SX3 X1-DOPTYP+37B STORMAN 1061
ZR X3,WPH3P . DOPE VECTORS UNUSED STORMAN 1062
SX3 X1-VARTYP+37B STORMAN 1063
ZR X3,WPH3K . SIMPLE VARIABLES, SEE BELOW STORMAN 1064
SX3 X1-LBLTYP+37B . CHECK FOR UNDEFINED STORMAN 1065
ZR X3,WPH3F . LABEL OR FUNCTION STORMAN 1066
SX3 X1-CALLTYP+37B STORMAN 1067
NZ X3,WPH3G STORMAN 1068
WPH3F SA3 B2+1 STORMAN 1069
AX3 55 STORMAN 1070
SX3 X3-UNDFTYP STORMAN 1071
NZ X3,WPH3C . USED IF NOT UNDEFINED STORMAN 1072
* STORMAN 1073
* UNUSED HBWN, TAKE IT OFF FROM HASH LIST STORMAN 1074
WPH3G SB4 B2 STORMAN 1075
SB5 B2+2 STORMAN 1076
BX0 X1 STORMAN 1077
LX0 55 . HBTY TO X0 STORMAN 1078
SB3 B0-B5 . NEGATIVE B3 FLAGS, NO SEARCH STORMAN 1079
RJ SEARCH . RETURN HASH CODE ONLY STORMAN 1080
* X2 CONTAINS THE HEAD OF THE HASH LIST STORMAN 1081
SA1 B4 STORMAN 1082
MX0 42 STORMAN 1083
SX7 X1 . OLD HASH LINK TO BE INSERTED STORMAN 1084
AX1 18 . INTO PREVIOUS ENTRY STORMAN 1085
WPH3H SB3 X2 . LOOP TO FIND PREVIOUS ENTRY STORMAN 1086
EQ B3,B4,WPH3I . POINT STORMAN 1087
SA2 X2 STORMAN 1088
EQ WPH3H STORMAN 1089
WPH3I BX6 X0*X2 . PREV. ENTRY AT A2 STORMAN 1090
BX7 X7+X6 . MERGE LINK STORMAN 1091
NG X2,WPH3J STORMAN 1092
NG X3,WPH3J . SHIFT IF LEFT ENTRY IN STORMAN 1093
LX7 30 . HASH TABLE STORMAN 1094
WPH3J SA7 A2 STORMAN 1095
MX0 18 . RESTORE X0 STORMAN 1096
SB2 B4 . RESTORE B2 STORMAN 1097
LX0 60-6 STORMAN 1098
BX2 X1 . BYPASS TO X2 STORMAN 1099
JP WPH3P STORMAN 1100
* STORMAN 1101
* TEST IF SIMPLE VARIABLE CONTAINS THE NULL STRING STORMAN 1102
WPH3K SA3 B2+1 . SVD TO X3 STORMAN 1103
SX4 X3 STORMAN 1104
AX3 55 STORMAN 1105
SX3 X3-SSTY STORMAN 1106
NZ X3,WPH3C . USED IF NOT SS TYPE STORMAN 1107
SA3 X4 . FETCH FIRST WORD OF THE STRING STORMAN 1108
NZ X3,WPH3C . USED IF NOT NULL STRING STORMAN 1109
BX4 X6 STORMAN 1110
SX6 B7 . ADD TO FREE LIST STORMAN 1111
SA6 A3 STORMAN 1112
SB7 A3 . RELEASE LS STORMAN 1113
BX6 X4 . RESTORE X6 STORMAN 1114
JP WPH3G . UNUSED HBWN STORMAN 1115
* STORMAN 1116
* UNPACK BYPASS FROM F3 OF WORD 0 IN STRUCTURE: STORMAN 1117
WPH3L LX2 60-18 STORMAN 1118
JP WPH3P STORMAN 1119
* STORMAN 1120
* TAKE CODTYP BLOCK OFF CODLIST STORMAN 1121
WPH3M SA1 CODLIST STORMAN 1122
WPH3M1 SB3 X1 STORMAN 1123
EQ B3,B2,WPH3M2 STORMAN 1124
SA1 B3 STORMAN 1125
EQ WPH3M1 STORMAN 1126
WPH3M2 MX6 42 . WORD POINTING TO OUR BLOCK IS AT A1STORMAN 1127
SA3 B2 STORMAN 1128
SX4 X3+0 . NEW POINTER FOR A1 STORMAN 1129
WPH3M3 BX7 X6*X1 STORMAN 1130
BX7 X7+X4 STORMAN 1131
LX6 18 STORMAN 1132
SA7 A1 STORMAN 1133
NZ X4,WPH3P . BRANCH IF LAST IN LIST NOT CHANGED STORMAN 1134
SX4 A1 . UPDATE LAST IN LIST IN F2 STORMAN 1135
LX4 18 . OF CODLIST STORMAN 1136
SA1 CODLIST STORMAN 1137
EQ WPH3M3 STORMAN 1138
* STORMAN 1139
* CHECK REFERENCE COUNT IN I/O BUFFER STORMAN 1140
WPH3N SA3 B2+FI.RFC STORMAN 1141
SX3 X3+0 STORMAN 1142
NZ X3,WPH3C . BRANCH IF BLOCK IS USED STORMAN 1143
* STORMAN 1144
* MAKE UNUSED BLOCK AT B2 WITH BYPASS X2 LOOK LIKE A STORMAN 1145
* FREE HB, SO PHASE 4 WILL IGNORE IT STORMAN 1146
WPH3P SX3 FRETYP STORMAN 1147
SX7 X2 STORMAN 1148
LX3 55 STORMAN 1149
LX7 18 STORMAN 1150
BX7 X7+X3 . ONLY THE HSTY AND BYPASS STORMAN 1151
SA7 B2 . FIELDS ARE IMPORTANT STORMAN 1152
SB2 B2+X2 STORMAN 1153
EQ WPH3A STORMAN 1154
* STORMAN 1155
WPH3R BSS 0 STORMAN 1156
RJ CHKTRC . CHECK IF CAN TURN OFF TRACE STORMAN 1157
* STORMAN 1158
* END OF PHASE 3... STORMAN 1159
* STORMAN 1160
EJECT STORMAN 1161
* HBC PHASE 4 STORMAN 1162
* IN PHASE 4 ALL REFERENCES TO HEAP STORAGE WHICH STORMAN 1163
* WERE NOT DELETED IN PHASE 3 ARE UPDATED TO POINT TO STORMAN 1164
* THE SAME RELATIVE WORD AS IN THE CONTAINING HEAP STORMAN 1165
* BLOCK BUT WITH BASE ADDRESS AS INDICATED IN F3 OF WORD 0. STORMAN 1166
* STORMAN 1167
SB1 7 STORMAN 1168
RJ HBCTRC . FIND OUT IF TRC THIS PHASE STORMAN 1169
JP WPH4T STORMAN 1170
* STORMAN 1171
WPH4A SA1 B1 . NEXT HB WORD 0 OR SVD STORMAN 1172
BX2 X1 STORMAN 1173
ZR X1,WPH4Z2 STORMAN 1174
PL X1,WPH4S STORMAN 1175
AX1 55 . HSTY TO X1 STORMAN 1176
SB2 X1 STORMAN 1177
MX0 42 . PREPARE FOR WUPF1 CALL STORMAN 1178
JP B2+WPH4A1 . DISPATCH ON HSTY STORMAN 1179
+ AX2 18 . FRETYP STORMAN 1180
SB1 B1+X2 . IGNORE FREE BLOCK SINCE IT WILL STORMAN 1181
EQ WPH4A . BE OVERWRITTEN IN PHASE 5. STORMAN 1182
+ BX1 X2 . CODTYP STORMAN 1183
AX2 18 STORMAN 1184
JP WPH4P STORMAN 1185
+ SB2 B1+1 . DOPTYP STORMAN 1186
JP WPH4K STORMAN 1187
+ BX1 X2 . FILTYP STORMAN 1188
AX2 18 STORMAN 1189
JP WPH4M STORMAN 1190
+ SB1 B1+1 . STRTYP STORMAN 1191
JP WPH4J STORMAN 1192
+ SB5 0 . REALTYP STORMAN 1193
JP WPH4B STORMAN 1194
+ SB5 -1 . INTTYP STORMAN 1195
JP WPH4B STORMAN 1196
+ DATA 0 . NOT USED STORMAN 1197
+ SB5 -2 . LITTYP STORMAN 1198
JP WPH4B STORMAN 1199
+ SA1 B1+1 . LBLTYP STORMAN 1200
JP WPH4E STORMAN 1201
+ SA1 B1+1 . CALLTYP STORMAN 1202
JP WPH4F STORMAN 1203
+ SB2 B1+1 . VARTYP =-1 STORMAN 1204
RJ WP4SVD . UPDATE SVD IN VALUE WORD STORMAN 1205
WPH4A1 SB5 2 STORMAN 1206
WPH4B MX0 42 . BASE ADDRESS FOR HSTY SWITCH STORMAN 1207
SA1 B1 STORMAN 1208
RJ WUPF1 . UPDATE HASH LINK STORMAN 1209
SA7 A1 STORMAN 1210
AX1 18 . BYPASS TO X1 STORMAN 1211
SB3 B1+X1 . PREPARE NEXT B1 STORMAN 1212
AX1 18 STORMAN 1213
SB2 X1 . FUTURE ADDRESS STORMAN 1214
EQ B1,B2,WPH4D . NO UPDATING NECESSARY STORMAN 1215
SX2 B2-B1 . BLOCK DISPLACEMENT STORMAN 1216
SB2 B1+B5 . ADDRESS OF FIRST WORD OF HBWN NAME STORMAN 1217
LT B0,B5,WPH4C . BRANCH IF HBWN STORMAN 1218
SA1 B1+1 . UPDATE SVD IF HEAP BLOCK LITERAL STORMAN 1219
IX7 X1+X2 STORMAN 1220
SA7 A1 STORMAN 1221
EQ B5,B0,WPH4D . BRANCH IF REAL STORMAN 1222
LX2 18 STORMAN 1223
IX7 X7+X2 STORMAN 1224
SA7 A1 STORMAN 1225
SB2 B2+4 . ADDRESS OF FIRST WORD OF LIT. VALUESTORMAN 1226
AX2 18 . REPOSITION DISP. FOR LITERALS STORMAN 1227
WPH4C SA1 B2 . ADD BLOCK DISPLACEMENT TO LINK STORMAN 1228
SB2 X1 STORMAN 1229
EQ B2,B0,WPH4D STORMAN 1230
IX7 X1+X2 STORMAN 1231
SA7 A1 STORMAN 1232
EQ WPH4C STORMAN 1233
WPH4D SB1 B3 STORMAN 1234
JP WPH4A STORMAN 1235
* UPDATE CPD IN VALUE WORD OF LABEL STORMAN 1236
WPH4E LX1 60-18 STORMAN 1237
SX3 X1 STORMAN 1238
ZR X3,WPH4A1 . IGNORE IF RETURN ETC. STORMAN 1239
RJ WUPF1 . SIMILAR TO TREATMENT OF STORMAN 1240
LX7 18 . CTY SVD IN WP4SVD STORMAN 1241
IX3 X2-X3 STORMAN 1242
IX7 X3+X7 STORMAN 1243
SA7 A1 STORMAN 1244
JP WPH4A1 STORMAN 1245
* UPDATE FUD IN VALUE WORD OF FUNCTION STORMAN 1246
WPH4F NG X1,WPH4A1 . IGNORE IF STANDARD PROCEDURE STORMAN 1247
BX6 X1 STORMAN 1248
AX1 55 STORMAN 1249
NZ X1,WPH4H . BRANCH IF NOT PROCEDURE STORMAN 1250
MX3 59 . LIST CONTAINS POINTERS TO WORD 0 STORMAN 1251
WPH4G SA1 X6 . NEXT ON FORMAL OR FIELD LIST STORMAN 1252
SX6 X1 . LINK TO X6 STORMAN 1253
LX1 60-18 . UPDATE F2 STORMAN 1254
IX1 X1+X3 . X3 =-1 OR 0 STORMAN 1255
RJ WUPF1 STORMAN 1256
IX7 X7-X3 STORMAN 1257
LX7 18 STORMAN 1258
SA7 A1+0 STORMAN 1259
NZ X6,WPH4G . FETCH NEXT IF NOT END OF LIST STORMAN 1260
JP WPH4A1 STORMAN 1261
WPH4H SX3 X1-FLDTYP STORMAN 1262
NZ X3,WPH4I STORMAN 1263
* UPDATE FIELD LIST USING THE LOOP ABOVE WITH X3=0 STORMAN 1264
SX6 A1 . LIST STARTS AT A1 STORMAN 1265
EQ WPH4G STORMAN 1266
WPH4I SX3 X1-DATATYP STORMAN 1267
NZ X3,WPH4A1 . IGNORE IF UNDEFINED STORMAN 1268
BX1 X6 STORMAN 1269
RJ WUPF1 . UPDATE POINTER TO DOPE VECTOR STORMAN 1270
SA7 A1 STORMAN 1271
JP WPH4A1 STORMAN 1272
* STORMAN 1273
* UPDATE WORD 0 OF A STRUCTURE. THE SVD-S CONTAINED IN STORMAN 1274
* THE STRUCTURE ARE UPDATED IN THE MAIN LOOP. (NOTE THAT STORMAN 1275
* SVD-S ARE POSITIVE, WHILE HB-S START WITH A NEGATIVE WORD) STORMAN 1276
* STORMAN 1277
WPH4J BX1 X2 STORMAN 1278
LX1 60-18 STORMAN 1279
SB2 X1 . DOPE VECTOR POINTER STORMAN 1280
* STORMAN 1281
* IF THE DOPE VECTOR (B2) FOLLOWS THE STRUCTURE (B1) IS HS, WE DO NOT STORMAN 1282
* UPDATE THE DOPE POINTER. THAT WILL BE DONE IN PHASE 5 (WPH5B). STORMAN 1283
* PHASE 5 NEEDS TO BE ABLE TO FIND THE DOPE VECTOR SO IT CAN GET THE STORMAN 1284
* BYPASS FOR THE STRUCTURE. STORMAN 1285
* STORMAN 1286
GE B2,B1,WPH4A STORMAN 1287
RJ WUPF1 . UPDATE POINTER TO DOPE VECTOR STORMAN 1288
LX7 18 STORMAN 1289
SA7 A1 STORMAN 1290
JP WPH4A STORMAN 1291
* UPDATE FIELD REFERENCE IF NOT ARRAY DOPE VECTOR STORMAN 1292
WPH4K AX2 18 . BYPASS TO X2 STORMAN 1293
SB1 B1+X2 . WORD 0 OF NEXT HEAP BLOCK STORMAN 1294
WPH4L SA1 B2 . NEXT WORD IN DOPE VECTOR STORMAN 1295
BX2 X1 STORMAN 1296
BX6 X1 STORMAN 1297
LX2 1 STORMAN 1298
NG X2,WPH4A . IGNORE IF ARRAY STORMAN 1299
RJ WUPF1V . UPDATE POINTER TO FIELD FUD STORMAN 1300
SA7 A1+0 STORMAN 1301
SB2 B2+1 STORMAN 1302
PL X6,WPH4L . REPEAT IF NOT LAST WORD STORMAN 1303
JP WPH4A STORMAN 1304
* UPDATE LINK AND FET POINTERS IN INPUT/OUTPUT BUFFER STORMAN 1305
WPH4M SB3 B1+X2 . PREPARE NEXT B1 STORMAN 1306
RJ WUPF1 . UPDATE LINK IN F1, WORD 0 STORMAN 1307
SA7 A1 STORMAN 1308
AX1 36 STORMAN 1309
SB2 X1 STORMAN 1310
SX2 B2-B1 . BLOCK DISPLACEMENT TO X2 STORMAN 1311
SB2 B1+7 STORMAN 1312
SB1 B1+3 STORMAN 1313
WPH4N SA1 B1 . UPDATE FET POINTERS IN STORMAN 1314
IX7 X1+X2 . WORD 3, 4, 5 AND 6 OF THE STORMAN 1315
SA7 A1+0 . BLOCK STORMAN 1316
SB1 B1+1 STORMAN 1317
LT B1,B2,WPH4N STORMAN 1318
JP WPH4D . RESTORE B1 FROM B3 STORMAN 1319
* UPDATE LINK AND HBWN VALUE WORD REFERENCES IN STORMAN 1320
* CODE BLOCK. THE LOOP BELOW IS SIMILAR TO THE ONE STORMAN 1321
* AT WPH2P. STORMAN 1322
WPH4P SB3 B1+X2 . PREPARE NEXT B1 STORMAN 1323
RJ WUPF1 . UPDATE LINK IN F1, WORD 0 STORMAN 1324
SB5 CALL . CONSTANT TO IDENTIFY BRANCHES STORMAN 1325
WPH4Q SB1 B1+1 . ADDRESS OF NEXT MICOP WORD STORMAN 1326
GE B1,B3,WPH4A . BRANCH IF END OF BLOCK STORMAN 1327
SA1 B1 STORMAN 1328
SB2 X1 STORMAN 1329
LX1 60-18 STORMAN 1330
SB4 X1 STORMAN 1331
GE B0,B4,WPH4R . UPDATE RIGHT MICOP ADDRESS STORMAN 1332
RJ WUPF1V . IF GT 0 STORMAN 1333
BX1 X7 STORMAN 1334
LX7 18 STORMAN 1335
SA7 A1 STORMAN 1336
WPH4R GE B5,B2,WPH4Q . NO LEFT MICOP IF BRANCH STORMAN 1337
LX1 60-18 STORMAN 1338
SB4 X1 STORMAN 1339
EQ B4,B0,WPH4Q . UPDATE LEFT MICOP ADDRESS STORMAN 1340
RJ WUPF1V . UNLESS IT IS 0 STORMAN 1341
LX7 36 STORMAN 1342
SA7 A1 STORMAN 1343
EQ WPH4Q STORMAN 1344
* UPDATE SVD, PRESUMABLY APPEARING IN A STRUCTURE STORMAN 1345
WPH4S SB2 B1 STORMAN 1346
RJ WP4SVD STORMAN 1347
SB1 B1+1 STORMAN 1348
JP WPH4A STORMAN 1349
* STORMAN 1350
* STORMAN 1351
* SCAN THE STACK FOR REFERENCES IN A LOOP STORMAN 1352
* SIMILAR TO THE ONE AT WPH2B. STORMAN 1353
* NOTE THAT UNLIKE IN PHASE 2 THIS CODE IS EXECUTED BEFORE THE STORMAN 1354
* HS SCAN, SO THAT CODLIST CAN STILL BE LOOKED UP. STORMAN 1355
* STORMAN 1356
WPH4T SB5 B6+0 STORMAN 1357
* STORMAN 1358
WPH4U SA1 B5 . NEXT STACK ENTRY HEADER STORMAN 1359
ZR X1,WPH4Z . BRANCH IF BOTTOM OF STACK STORMAN 1360
SB4 X1 . BYPASS TO B4 STORMAN 1361
PL X1,WPH4W . BRANCH IF NOT RETURN INFO. STORMAN 1362
LX1 60-18 . UNPACK RETURN ADDRESS STORMAN 1363
SB2 X1 STORMAN 1364
BX6 X1 STORMAN 1365
RJ CBAS . FIND BASE OF CODE BLOCK STORMAN 1366
SX3 X1 STORMAN 1367
MX0 42 STORMAN 1368
RJ WUPF1 STORMAN 1369
IX6 X6-X3 . UPDATE RETURN ADDRESS WITH STORMAN 1370
IX6 X6+X2 . BLOCK DISPLACEMENT STORMAN 1371
LX6 18 STORMAN 1372
SA6 B5 STORMAN 1373
SB4 B5-B4 . PREPARE TO SCAN STACKED SVD-S STORMAN 1374
SB5 B5-1 . AND SVD ADDRESSES STORMAN 1375
WPH4V MX0 42 STORMAN 1376
SA1 B5 STORMAN 1377
RJ WUPF1V . UPDATE SVD ADDRESS STORMAN 1378
SA7 B5+0 STORMAN 1379
SB2 B5-1 STORMAN 1380
SB5 B5-2 STORMAN 1381
RJ WP4SVD . UPDATE SVD STORMAN 1382
LT B4,B5,WPH4V STORMAN 1383
JP WPH4U . FINISHED WITH RETURN INFO. STORMAN 1384
WPH4W AX1 55 . NOT RETURN INFO. STORMAN 1385
SA2 WPH2WD . DISPATCH ON SETY STORMAN 1386
LX1 2 STORMAN 1387
SB3 X1 STORMAN 1388
AX2 B3,X2 STORMAN 1389
MX0 56 STORMAN 1390
BX2 -X0*X2 STORMAN 1391
SB3 X2 STORMAN 1392
JP B3+WPH4SW STORMAN 1393
* STORMAN 1394
WPH4SW SB5 B5-B4 . 0, SF,I,R,SPEC STORMAN 1395
EQ WPH4U STORMAN 1396
+ SA1 B5 . 1, S STORMAN 1397
LX1 60-18 STORMAN 1398
EQ WPH4W1 STORMAN 1399
+ SB4 B5-B4 . 2, PS,PA,PE STORMAN 1400
MX0 42 STORMAN 1401
JP WPH4X STORMAN 1402
+ SB2 B5-1 . 3, A,D,N,C STORMAN 1403
RJ WP4SVD STORMAN 1404
SB5 B5-B4 STORMAN 1405
JP WPH4U STORMAN 1406
* STORMAN 1407
* UPDATE SOURCE OF S, IF ANY STORMAN 1408
WPH4W1 SX3 X1 STORMAN 1409
MX0 42 STORMAN 1410
ZR X3,WPH4SW . BRANCH IF NO SOURCE STORMAN 1411
SA3 X1 STORMAN 1412
RJ WUPF1P . UPDATE SOURCE IN F2 STORMAN 1413
LX7 18 STORMAN 1414
SA7 B5 STORMAN 1415
JP WPH4SW STORMAN 1416
* STORMAN 1417
* SCAN PATTERN IN STACK FOR STARPM, PRDPM OR DOLPM STORMAN 1418
WPH4X SB5 B5-1 . SEE ALSO LOOP AT WPH2F STORMAN 1419
GE B4,B5,WPH4U STORMAN 1420
SA2 B5 STORMAN 1421
SX1 X2+0 STORMAN 1422
UX3 B3,X2 STORMAN 1423
NG X1,WPH4X STORMAN 1424
ID X2,WPH4Y STORMAN 1425
NE B3,B0,WPH4X STORMAN 1426
WPH4Y BX1 X2 STORMAN 1427
SA3 X1 STORMAN 1428
RJ WUPF1P . UPDATE VARIABLE REFERENCE STORMAN 1429
SA7 B5 STORMAN 1430
EQ WPH4X STORMAN 1431
* STORMAN 1432
* FINALLY, UPDATE HS REFERENCES IN THE HASH TABLE, STORMAN 1433
* IN CODLIST, FILLIST AND A5 STORMAN 1434
* STORMAN 1435
WPH4Z SX1 HASHLN-1 STORMAN 1436
SB5 X1 . NUMBER OF WORDS IN HASH TABLE STORMAN 1437
MX0 42 STORMAN 1438
WPH4Z1 SA1 B5+HASHTBL STORMAN 1439
RJ WUPF1 . UPDATE LEFT ENTRY STORMAN 1440
BX1 X7 STORMAN 1441
LX1 30 STORMAN 1442
RJ WUPF1 . UPDATE RIGHT ENTRY STORMAN 1443
LX7 30 STORMAN 1444
SA7 A1 STORMAN 1445
SB5 B5-1 STORMAN 1446
GE B5,B0,WPH4Z1 STORMAN 1447
* STORMAN 1448
SA1 CODLIST STORMAN 1449
SA4 FILLIST STORMAN 1450
RJ WUPF1 STORMAN 1451
LX7 60-18 STORMAN 1452
BX1 X7 STORMAN 1453
RJ WUPF1 . UPDATE LAST IN CODLIST STORMAN 1454
BX6 X7 STORMAN 1455
BX1 X4 STORMAN 1456
RJ WUPF1 STORMAN 1457
SA7 A4 STORMAN 1458
SB2 A5 . TREAT A5 AS A RETURN STORMAN 1459
RJ CBAS . ADDRESS AT WPH4U STORMAN 1460
LX6 18 STORMAN 1461
SA6 CODLIST . MAY STORE CODLIST NOW STORMAN 1462
SB2 X1 STORMAN 1463
RJ WUPF1 STORMAN 1464
SB3 X2 STORMAN 1465
SB3 B3-B2 STORMAN 1466
SA4 MINHS STORMAN 1467
SA1 OUTSTRM . UPDATE OUTSTRM STORMAN 1468
RJ WUPF1 STORMAN 1469
SA7 A1 STORMAN 1470
SA5 A5+B3 STORMAN 1471
SB1 X4+3 STORMAN 1472
JP WPH4A STORMAN 1473
* STORMAN 1474
WPH4Z2 BSS 0 STORMAN 1475
SA1 ISVB1 STORMAN 1476
PL X1,WPH4Z3 . XK WILL BE RESTORED FROM A5 STORMAN 1477
SA1 ISVX5 . FETCH OLD X5 STORMAN 1478
SA1 X1-1 . X5 IS CPD STORMAN 1479
AX1 36 . GET FUTURE ADDRESS OF HEAP BLOCK STORMAN 1480
SX7 X1+1 . CPD IS SECOND WORD OF BLOCK STORMAN 1481
SA7 ISVX5 . STORE THE NEW X5 STORMAN 1482
WPH4Z3 BSS 0 STORMAN 1483
RJ CHKTRC . CHECK IF CAN TURN OFF TRACE STORMAN 1484
* STORMAN 1485
* END OF PHASE 4 STORMAN 1486
* STORMAN 1487
EJECT STORMAN 1488
* HBC PHASE 5 STORMAN 1489
* PASS 5 WILL MOVE ALL USED HEAP BLOCKS TO THEIR DESTINATION STORMAN 1490
* AS DEFINED IN F3. THE ORIGINAL VALUE OF F3 IS RE- STORMAN 1491
* ESTABLISHED: STORMAN 1492
* VAR,LBL,CALL,LIT,INT TYPES: BY COUNTING THE NUMBER OF STORMAN 1493
* CHARACTERS IN THE NAME. STORMAN 1494
* STRTYP: F1 IN THE DOPE VECTOR IS COPIED TO F3 STORMAN 1495
* OTHER TYPES: F3 IS SET TO 0 STORMAN 1496
* ALL MARK BITS ARE TURNED OFF STORMAN 1497
* AFTER MOVING ALL BLOCKS, THE STACK IS MOVED SO THAT STORMAN 1498
* THE FREE SPACE IN HS WILL BE EQUAL TO THE FREE SPACE IN SS. STORMAN 1499
* MAXHS, MINSTAK, B6, ETC. ARE MODIFIED TO REFLECT THE STORMAN 1500
* REARRANGED SITUATION. HS WILL CONTAIN A SINGLE FREE STORMAN 1501
* BLOCK AT THE END. (+ THE DUMMY BLOCK) STORMAN 1502
* STORMAN 1503
SB1 8 STORMAN 1504
RJ HBCTRC . FIND OUT IF TRC THIS PHASE STORMAN 1505
SA1 MINHS STORMAN 1506
SB1 X1+3 STORMAN 1507
* STORMAN 1508
WPH5A SA1 B1 . WORD 0 OF NEXT HB STORMAN 1509
BX2 X1 STORMAN 1510
ZR X1,WPH5J . END OF HS STORMAN 1511
AX1 18 STORMAN 1512
SB2 X1 . BYPASS TO B2 STORMAN 1513
AX1 18 STORMAN 1514
SB3 X1 . FUTURE BASE TO B3 STORMAN 1515
AX1 55-36 . HSTY TO X1 STORMAN 1516
SX3 X1-INTTYP+37B STORMAN 1517
PL X3,WPH5F STORMAN 1518
SX3 X1-STRTYP+37B STORMAN 1519
ZR X3,WPH5B STORMAN 1520
SX3 X1-FRETYP+37B . DO NOT MOVE FREE BLOCK. STORMAN 1521
ZR X3,WPH5H STORMAN 1522
BX4 X4-X4 . OTHER TYPES: F3 IS SET TO 0 STORMAN 1523
SB4 B0 STORMAN 1524
JP WPH5C STORMAN 1525
* STRTYP BLOCK. GET BYPASS AND F3 FROM F1 OF DOPE VECTOR STORMAN 1526
WPH5B BX1 X2 STORMAN 1527
AX1 18 . SHIFT TO GET DOPE VECTOR POINTER STORMAN 1528
SA1 X1 STORMAN 1529
SX4 X1 STORMAN 1530
SB2 X1 STORMAN 1531
SB4 A1 STORMAN 1532
* STORMAN 1533
* IF THE DOPE VECTOR (B4) PRECEDES THE STRUCTURE (B1) IN HS, THE DOPE STORMAN 1534
* POINTER IN THE STRTYP IS CORRECT. IF NOT, THE DOPE FIELD IS UPDATEDSTORMAN 1535
* TO POINT TO THE FUTURE POSITION OF THE DOPE VECTOR. STORMAN 1536
* STORMAN 1537
LT B4,B1,WPH5B1 STORMAN 1538
MX0 42 STORMAN 1539
LX0 18 . POSITION MASK STORMAN 1540
AX1 18 . POSITION DOPE VECTOR AUX FIELD STORMAN 1541
BX1 -X0*X1 STORMAN 1542
BX2 X2*X0 STORMAN 1543
BX2 X2+X1 . UPDATE DOPE VECTOR POINTER STORMAN 1544
WPH5B1 SB4 B0 STORMAN 1545
* MOVE B2 WORDS FROM B1 TO B3. F3 OF THE FIRST WORD (X2) STORMAN 1546
* SHOULD BE SET FROM X4. B4 IS ASSUMED TO BE 0. STORMAN 1547
WPH5C MX0 41 STORMAN 1548
LX4 36 . SHIFT TO F3 POSITION STORMAN 1549
LX0 36 . F3 MASK-MARK BIT STORMAN 1550
BX7 X0*X2 . FIRST WORD IS IN X2 STORMAN 1551
BX7 X7+X4 . MERGE IN NEW F3 STORMAN 1552
SA7 B3 STORMAN 1553
NE B1,B3,WPH5E . BRANCH IF MOVE IS NECESSARY STORMAN 1554
SB5 B3+B2 STORMAN 1555
SB1 B1+B2 STORMAN 1556
EQ WPH5A STORMAN 1557
WPH5D SA1 B1+B4 . MOVE HB STORMAN 1558
NO STORMAN 1559
BX7 X1 STORMAN 1560
SA7 B3+B4 STORMAN 1561
WPH5E SB4 B4+1 STORMAN 1562
LT B4,B2,WPH5D STORMAN 1563
SB5 B3+B2 . B5 WILL BECOME THE NEW MAXHS STORMAN 1564
SB1 B1+B2 . NEXT HB STORMAN 1565
EQ WPH5A STORMAN 1566
* COUNT NUMBER OF CHARACTERS IN NAME. X3=0 IFF INTTYP STORMAN 1567
WPH5F SB4 B1+B2 STORMAN 1568
SA2 B4-1 . COUNT CHARACTERS IN THE LAST STORMAN 1569
SX6 B2-3 . WORD (OTHER WORDS CONTAIN 7) STORMAN 1570
RJ VCHCNT STORMAN 1571
NZ X3,WPH5G . NUMBER OF NAME WORDS-1 TO X6 STORMAN 1572
SX6 B2-4 STORMAN 1573
WPH5G BX5 X6 . MULTIPLY X6 BY 7 STORMAN 1574
LX6 1 STORMAN 1575
IX6 X6+X5 STORMAN 1576
LX6 1 STORMAN 1577
IX6 X6+X5 STORMAN 1578
IX4 X7+X6 . TOTAL NUMBER OF CHARS TO X4 STORMAN 1579
SA2 B1 . RESTORE FIRST WORD STORMAN 1580
SB4 B0 STORMAN 1581
JP WPH5C STORMAN 1582
* IGNORE FREE BLOCKS: STORMAN 1583
WPH5H SB1 B1+B2 STORMAN 1584
EQ WPH5A STORMAN 1585
* STORMAN 1586
* ALL BLOCKS HAVE BEEN MOVED. B5 POINTS TO THE FIRST WORD STORMAN 1587
* AFTER THE LAST USED BLOCK. STORMAN 1588
* STORMAN 1589
WPH5J SA2 MAXSTAK STORMAN 1590
SA1 MAXHS . =MINSTAK STORMAN 1591
SX3 B0-B6 STORMAN 1592
IX5 X3-X2 . X5=MAXSTAK-B6. (MAXSTAK NEG. REPR.)STORMAN 1593
SX4 B5 STORMAN 1594
IX4 X1-X4 . X4=MINHS-B5 STORMAN 1595
IX6 X5+X4 STORMAN 1596
AX6 1 . AVERAGE (X4,X5) TO X6 STORMAN 1597
SB3 B6 STORMAN 1598
IX6 X4-X6 STORMAN 1599
SB2 X1 STORMAN 1600
SB1 X6 . STACK IS TO BE DISPLACED THIS STORMAN 1601
SB6 B6-B1 . AMOUNT STORMAN 1602
SB4 B2-B1 STORMAN 1603
GE B1,B0,WPH5L STORMAN 1604
WPH5K SA1 B3 . MOVE STACK TOWARD HIGHER STORMAN 1605
NO . ADDRESSES STORMAN 1606
BX7 X1 STORMAN 1607
SA7 B3-B1 STORMAN 1608
SB3 B3-1 STORMAN 1609
GE B3,B2,WPH5K STORMAN 1610
JP WPH5M STORMAN 1611
WPH5L SA1 B2 . MOVE STACK TOWARD LOWER STORMAN 1612
NO . ADDRESSES STORMAN 1613
BX7 X1 STORMAN 1614
SA7 B2-B1 STORMAN 1615
SB2 B2+1 STORMAN 1616
GE B3,B2,WPH5L STORMAN 1617
* FIX UP POINTERS, INITIALIZE DUMMY FREE HEAP BLOCK, STORMAN 1618
* AND CREATE A FREE BLOCK BETWEEN B5 AND B4-1. STORMAN 1619
WPH5M SX7 B4 STORMAN 1620
BX6 X6-X6 STORMAN 1621
SA7 MAXHS STORMAN 1622
SA7 MINSTAK STORMAN 1623
SA1 MINHS STORMAN 1624
SX2 FRETYP . DUMMY FREE BLOCK AT MINHS+2 STORMAN 1625
SA6 X1 . FORWARD=BACK=MINHS+2 (X1) STORMAN 1626
LX2 55 . BYPASS=0 STORMAN 1627
SA6 X1+1 STORMAN 1628
SX1 X1+2 STORMAN 1629
BX7 X1 STORMAN 1630
SA7 FHBLRP STORMAN 1631
LX1 36 STORMAN 1632
BX7 X7+X1 STORMAN 1633
BX7 X7+X2 STORMAN 1634
SA7 X7 STORMAN 1635
SB3 B5 . PARAM FOR FREEHB STORMAN 1636
EQ B3,B4,WPH5N . NO ROOM FOR FREE BLOCK STORMAN 1637
* STORMAN 1638
* BEFORE MAKING FREE BLOCK, PUT DUMMY HEADER ON BLOCK THAT DOES NOT STORMAN 1639
* HAVE MARK BIT SET; A MARKED BIT COULD BE THERE FROM THE STORMAN 1640
* PREVIOUS GARBAGE COLLECTION STORMAN 1641
* STORMAN 1642
MX7 4 STORMAN 1643
SA7 B3 STORMAN 1644
RJ FREEHB STORMAN 1645
* STORMAN 1646
* END PHASE 5... STORMAN 1647
WPH5N BSS 0 STORMAN 1648
RJ CHKTRC . CHECK IF CAN TURN OFF TRACE STORMAN 1649
* STORMAN 1650
* END HEAP BLOCK COMPACTION STORMAN 1651
* STORMAN 1652
* STORMAN 1653
SX6 120B . OPEN ALTER NOREWIND CODE STORMAN 1654
MX0 60-18 . MASK FOR FILE NAME STORMAN 1655
STREAM FILLIST . B2 HAS FIRST FILE BLOCK POINTER STORMAN 1656
REOPALL RJ REOPEN STORMAN 1657
STREAM B2 . NEXT FILE BLOCK STORMAN 1658
NZ B2,REOPALL . IF ZERO, END OF FILE BLOCKS STORMAN 1659
SB1 11 STORMAN 1660
RJ CKSFCK . CHECK IF DO SELFCHECK STORMAN 1661
SB1 9 . MAYBE TRACE AFTER HBC STORMAN 1662
RJ HBCTRC STORMAN 1663
JP HBC STORMAN 1664
REOPEN BSSZ 1 . REOPEN ENTRY POINT STORMAN 1665
SA4 B2+FI.FET+FET.LFN STORMAN 1666
* STORMAN 1667
* SAVE CURRENT STATUS IN X4 STORMAN 1668
BX2 X0*X4 STORMAN 1669
BX7 X2+X6 STORMAN 1670
SA7 A4 . UPDATED FET STORMAN 1671
SA1 OPECALL STORMAN 1672
SX7 A4 . ADDRESS OF FET STORMAN 1673
BX7 X1+X7 . SET UP RA+1 CALL STORMAN 1674
SA7 1 STORMAN 1675
RWAIT SA1 1 STORMAN 1676
NZ X1,* . WAIT FOR COMPLETION STORMAN 1677
* STORMAN 1678
* REPLACE STATUS AS OF BEFORE HBC STORMAN 1679
* STORMAN 1680
BX7 X4 STORMAN 1681
SA7 A4 STORMAN 1682
JP REOPEN STORMAN 1683
* STORMAN 1684
OPECALL VFD 18/3LOPE,2/1,40/0 STORMAN 1685
* STORMAN 1686
* STORMAN 1687
* STORMAN 1688
* WHEN HBCTRC IS CALLED, B1 CONTAINS THE SHIFT FOR THE FLAG STORMAN 1689
* FOR THE PHASE NOW BEING ENTERED STORMAN 1690
* PHASE 1: 4; PHASE 2: 5; PHASE 3: 6; PHASE 6: 7; PHASE 5: 8 STORMAN 1691
* AFTER HBC: 9 STORMAN 1692
* STORMAN 1693
HBCTRC BSSZ 1 STORMAN 1694
SA1 HBCSTAT STORMAN 1695
NG X1,HBCTRC . NO TRC PACKAGE STORMAN 1696
MX2 1 STORMAN 1697
LX2 B1,X2 STORMAN 1698
BX2 X2*X1 STORMAN 1699
ZR X2,HBCTRC . DON'T TRC THIS PHASE STORMAN 1700
TRACE STORMAN 1701
TRACE LIST STORMAN 1702
EQ HBCTRC STORMAN 1703
* CHECK IF THE DEBUG PACKAGE IS IN CORE STORMAN 1704
* IF IT IS, TURN OFF TRACE STORMAN 1705
* STORMAN 1706
* STORMAN 1707
CHKTRC BSSZ 1 STORMAN 1708
SA1 HBCSTAT STORMAN 1709
NG X1,CHKTRC . TRC PACKAGE NOT IN STORMAN 1710
TRACE NOTRACE . TURN OFF TRACE STORMAN 1711
EQ CHKTRC STORMAN 1712
EJECT STORMAN 1713
* CBAS STORMAN 1714
* SUBROUTINE TO FIND THE BASE OF A CODE BLOCK STORMAN 1715
* CONTAINING THE MICOP POINTED TO BY B2. STORMAN 1716
* STORMAN 1717
* PARAM: B2 POINTER TO A MICOP STORMAN 1718
* RESULT: X1 POINTER TO WORD 0 OF CHB STORMAN 1719
* X1,B3 STORMAN 1720
* STORMAN 1721
* STORMAN 1722
CBAS DATA 0 STORMAN 1723
SA1 CODLIST STORMAN 1724
SB3 X1 STORMAN 1725
CBAS1 SA1 B3 . NEXT CHB STORMAN 1726
SB3 X1 . LINK IS F1 STORMAN 1727
EQ B3,B0,CBAS2 STORMAN 1728
LT B3,B2,CBAS1 . NOTE THAT THE LIST OF STORMAN 1729
CBAS2 SX1 A1 . CHB-S IS KEPT SORTED STORMAN 1730
EQ CBAS STORMAN 1731
* STORMAN 1732
* UTILITY ROUTINES FOR HBC PHASE 2... STORMAN 1733
* STORMAN 1734
* WMARK STORMAN 1735
* MERGE THE MARK BIT IN X0 INTO THE HB HEADER POINTED STORMAN 1736
* TO BY X1. IF X1 POINTS INTO A STRUCTURE, THE HEADER IS STORMAN 1737
* FOUND BY SCANNING BACKWARDS. STORMAN 1738
* PARAM: X0 MARK BIT STORMAN 1739
* X1 POINTER TO HB WORD 0 OR INTO STRUCTURE STORMAN 1740
* X3,X7 STORMAN 1741
* STORMAN 1742
WMARK DATA 0 STORMAN 1743
SA3 X1+0 STORMAN 1744
NG X3,WMARK2 STORMAN 1745
WMARK1 SA3 A3-1 STORMAN 1746
PL X3,WMARK1 STORMAN 1747
WMARK2 BX7 X3+X0 STORMAN 1748
SA7 A3 STORMAN 1749
EQ WMARK STORMAN 1750
* STORMAN 1751
* WMARKDP STORMAN 1752
* IF THE DOPE VECTOR IS NOT ALREADY MARKED, IT IS MARKED STORMAN 1753
* AND THE REFERENCED FUNCTIONS ARE ALSO MARKED. STORMAN 1754
* PARAM: X0 MARK BIT STORMAN 1755
* X1 POINTS TO WORD 0 OF THE DOPE VECTOR STORMAN 1756
* X1,X3,X4,X7 STORMAN 1757
WMARKDP DATA 0 STORMAN 1758
SA3 X1 STORMAN 1759
BX7 X3*X0 STORMAN 1760
NZ X7,WMARKDP . RETURN IF ALREADY MARKED STORMAN 1761
BX7 X3+X0 STORMAN 1762
SA7 A3 . MARK DOPE VECTOR STORMAN 1763
SX4 A3+0 STORMAN 1764
WMDP1 SX4 X4+1 . LOOP TO FETCH DOPE VECTOR STORMAN 1765
SA1 X4+0 . WORDS STORMAN 1766
LX1 1 STORMAN 1767
NG X1,WMARKDP . RETURN IF ARRAY DOPE STORMAN 1768
LX1 60-1 STORMAN 1769
RJ WMARK . MARK FUNCTION STORMAN 1770
PL X1,WMDP1 STORMAN 1771
JP WMARKDP . RETURN IF LAST WORD STORMAN 1772
* STORMAN 1773
* WMARKP STORMAN 1774
* PROCESS REFERENCE FROM A PATTERN AS DESCRIBED IN STORMAN 1775
* PHASE 2 COMMENTS. STORMAN 1776
* PARAM: X0 MARK BIT STORMAN 1777
* X1 VARIABLE REFERENCE FROM A PATTERN-1 STORMAN 1778
* X3,X4,X6,X7 STORMAN 1779
* STORMAN 1780
WMARKP DATA 0 STORMAN 1781
SA3 X1 STORMAN 1782
BX7 X3+X0 . PREPARE FOR MARKINK STORMAN 1783
NG X3,WMP2 . BRANCH AND MARK SIMPLE VARIABLE STORMAN 1784
WMP1 SA3 A3-1 . FIND WORD 0 OF STRUCTURE STORMAN 1785
PL X3,WMP1 STORMAN 1786
WMP1A BX7 X3*X0 STORMAN 1787
MX6 1 STORMAN 1788
NZ X7,WMARKP . RETURN IF ALREADY MARKED STORMAN 1789
LX6 18 . SET SPECIAL MARK BIT STORMAN 1790
BX7 X6+X3 STORMAN 1791
SA4 MINHS . BUMP REPEAT COUNT STORMAN 1792
SA7 A3 . DIRTY TRICK: ONLY THE SA7 A3 STORMAN 1793
SA3 X4 . IS USED BELOW TO STORE THE STORMAN 1794
SX7 X3+1 . REPEAT COUNT STORMAN 1795
* STORMAN 1796
WMP2 BX4 X3 . BRANCH BACK IF IT WAS THE STORMAN 1797
AX4 55 . FIRST ELEMENT OF A STRUCTURE STORMAN 1798
SX4 X4-STRTYP+55+37B STORMAN 1799
ZR X4,WMP1A STORMAN 1800
SA7 A3 STORMAN 1801
JP WMARKP STORMAN 1802
* STORMAN 1803
EJECT STORMAN 1804
* WSVD STORMAN 1805
* EXAMINE SVD RECURSIVELY STORMAN 1806
* THE RECURSION OF THIS SUBROUTINE IS MADE POSSIBLE STORMAN 1807
* BY THE FACT THAT THE NUMBER OF LOCAL VARIABLES (ONE-B1) STORMAN 1808
* IS EQUAL TO THE NUMBER OF UNUSED FIELDS IN SVD-S STORMAN 1809
* WHICH CAUSE RECURSION (ONE-F3 IN ATY, DYT OR NTY). STORMAN 1810
* THREE REGISTERS ARE OF MAJOR INTEREST: STORMAN 1811
* -B1, POINTS TO THE ATY, DTY OR NTY DESCRIPTOR OF THE STORMAN 1812
* STRUCTURE CURRENTLY SCANNED. IF B1 IS NEGATIVE STORMAN 1813
* THE STRUCTURE IS IN FACT A SIMPLE VARIABLE. STORMAN 1814
* THIS IS THE REGISTER WHICH IS SAVED DURING RECURSION STORMAN 1815
* -B2, POINTS TO THE CURRENT SVD. NOT SAVED. STORMAN 1816
* -B3, POINTS ONE WORD BEYOND THE LAST SVD IN THE STORMAN 1817
* CURRENT STRUCTURE. NOT SAVED. STORMAN 1818
* A5,X5,B6,B7 ARE LEFT UNALTERED STORMAN 1819
* PARAM: B2 POINTS TO AN SVD STORMAN 1820
* STORMAN 1821
* STORMAN 1822
WSVD DATA 0 STORMAN 1823
SB3 B2+1 . END OF INITIAL STRUCTURE STORMAN 1824
SB1 -1 . NEGATIVE B1 TO MARK OUTERMOST LEVELSTORMAN 1825
* STORMAN 1826
WSVDA SA1 B2 . FETCH NEXT SVD STORMAN 1827
SA4 WSVDWD . DISPATCH ON SVD TYPE STORMAN 1828
BX2 X1 . SVD TO X2, X3 STORMAN 1829
BX3 X1 STORMAN 1830
AX1 55 STORMAN 1831
LX1 2 STORMAN 1832
SB4 X1 STORMAN 1833
AX4 B4,X4 STORMAN 1834
MX0 56 STORMAN 1835
BX4 -X0*X4 STORMAN 1836
MX0 1 STORMAN 1837
SB4 X4 STORMAN 1838
LX0 55 . MARK BIT TO X0 STORMAN 1839
JP B4+WSVDSW STORMAN 1840
WSVDWD SWITCH WSVDSW,2,2,2,2,4,4,4,2,2,6,6,0,5,2,2 STORMAN 1841
+ AX3 18 . 0, N STORMAN 1842
SX1 X3 STORMAN 1843
NZ X1,WSVDC . BRANCH IF NOT SIMPLE STORMAN 1844
WSVDA1 SX1 X2 . MARK SIMPLE N OR C STORMAN 1845
RJ WMARK STORMAN 1846
WSVDB SB2 B2+1 STORMAN 1847
LT B2,B3,WSVDA . PROCEED TO NEXT SVD IF NOT END STORMAN 1848
LT B1,B0,WSVD . EXIT IF OUTERMOST LEVEL STORMAN 1849
JP WSVDG . RETURN TO PREVIOUS LEVEL STORMAN 1850
+ JP WSVDD . 4, PS,PA,PE STORMAN 1851
+ AX2 18 . 5, C STORMAN 1852
JP WSVDA1 STORMAN 1853
+ SX1 X2 . 6, A,D STORMAN 1854
RJ WMARKDP . MARK DOPE VECTOR STORMAN 1855
WSVDC MX1 18 . MASK FOR F3 TO X1 STORMAN 1856
LX1 60-6 STORMAN 1857
BX7 -X1*X2 STORMAN 1858
AX2 18 STORMAN 1859
SA2 X2 . WORD 0 OF STRUCTURE STORMAN 1860
BX4 X0*X2 STORMAN 1861
NZ X4,WSVDB . IGNORE IF ALREADY MARKED STORMAN 1862
SX4 B1 STORMAN 1863
LX4 36 STORMAN 1864
BX4 X1*X4 STORMAN 1865
BX7 X7+X4 . JAM B1 INTO F3 OF SVD STORMAN 1866
BX6 X2+X0 . MARK STRUCTURE STORMAN 1867
SA7 B2 STORMAN 1868
SA6 A2 STORMAN 1869
AX2 36 . SIZE OF STRUCTURE TO X2 STORMAN 1870
SB1 B2 .ADDRESS OF SVD AS NEW B1 STORMAN 1871
SB2 A2 . ADDRESS OF WORD 0 AS NEW B2 STORMAN 1872
SB3 B2+X2 . LAST WORD OF STRUCTURE +1 TO B3 STORMAN 1873
JP WSVDB . ADVANCE TO FIRST ELT OF STRUC STORMAN 1874
* THE FOLLOWING LOOP IS SIMILAR TO THE ONE AT WPH2F STORMAN 1875
WSVDD SA1 X2 STORMAN 1876
SX2 X1 STORMAN 1877
NG X1,WSVDF STORMAN 1878
LX1 18 STORMAN 1879
ID X1,WSVDE STORMAN 1880
UX1 B4,X1 STORMAN 1881
NE B4,B0,WSVDF STORMAN 1882
WSVDE SX1 X1-1 STORMAN 1883
RJ WMARKP STORMAN 1884
WSVDF NZ X2,WSVDD STORMAN 1885
JP WSVDB STORMAN 1886
* STORMAN 1887
* END OF CURRENT STRUCTURE, RESTORE PREVIOUS B1, B2 AND B3 STORMAN 1888
* STORMAN 1889
WSVDG SA1 B1 . FETCH SVD AT B1 STORMAN 1890
SB2 B1 . RESTORE OLD B2 STORMAN 1891
AX1 36 . RESTORE OLD B1 FROM F3 STORMAN 1892
SB1 X1 STORMAN 1893
LT B1,B0,WSVD . EXIT IF OUTERMOST LEVEL STORMAN 1894
SA1 B1 . FETCH OLD SVD STORMAN 1895
AX1 18 STORMAN 1896
SA2 X1 . WORD 0 OF OLD STRUCTURE STORMAN 1897
AX2 36 STORMAN 1898
SB3 A2 STORMAN 1899
SB3 B3+X2 . LAST WORD OF OLD STRUCTURE+1 TO B3 STORMAN 1900
JP WSVDB STORMAN 1901
* STORMAN 1902
EJECT STORMAN 1903
* STORMAN 1904
* UTILITY ROUTINES FOR HBC PHASE 4... STORMAN 1905
* WUPF1 STORMAN 1906
* UPDATE F1 POINTING TO WORD 0 OF A HB UNLESS F1=0 STORMAN 1907
* PARAM: X1 CONTAINS A WORD WITH F1 TO BE UPDATED STORMAN 1908
* X0 CONTAINS MASK FOR 1 (MX0 42) STORMAN 1909
* RESULT: X7 WILL CONTAIN X1 WITH F1 UPDATED STORMAN 1910
* X2 CONTAINS F1 (X7) STORMAN 1911
* X2,X7 STORMAN 1912
* STORMAN 1913
WUPF1 DATA 0 STORMAN 1914
BX7 X0*X1 STORMAN 1915
SX2 X1 STORMAN 1916
ZR X2,WUPF1 . RETURN IF F1=0 STORMAN 1917
SA2 X1 . WORD 0 TO X2 STORMAN 1918
AX2 36 . FUTURE ADDRESS IN F3 STORMAN 1919
BX2 -X0*X2 STORMAN 1920
BX7 X7+X2 STORMAN 1921
EQ WUPF1 STORMAN 1922
* STORMAN 1923
* WUPF1V STORMAN 1924
* UPDATE F1 POINTING TO THE VALUE WORD OF A HBWN STORMAN 1925
* REGISTER USAGE IS THE SAME AS IN WUPF1 STORMAN 1926
* STORMAN 1927
WUPF1V DATA 0 STORMAN 1928
SA2 X1-1 . WORD 0 OF HBWN TO X2 STORMAN 1929
AX2 36 STORMAN 1930
BX7 X0*X1 STORMAN 1931
SX2 X2+1 STORMAN 1932
BX7 X7+X2 STORMAN 1933
EQ WUPF1V STORMAN 1934
* STORMAN 1935
* WUPF1P STORMAN 1936
* UPDATE F1 POINTING TO AN SVD IN A SIMPLE VARIABLE STORMAN 1937
* OR IN A STRUCTURE STORMAN 1938
* REGISTER USAGE, IN ADDITION TO THE ONES IN WUPF1 STORMAN 1939
* A3 ADDRESS OF THE SVD (SA3 X1) STORMAN 1940
* X1,X2,X3,X7 STORMAN 1941
* STORMAN 1942
WUPF1P DATA 0 STORMAN 1943
WUPA SA3 A3-1 STORMAN 1944
PL X3,WUPA . FIND BASE OF HB STORMAN 1945
BX3 X1 . WORD TO BE UPDATED STORMAN 1946
SX1 A3 STORMAN 1947
RJ WUPF1 STORMAN 1948
IX3 X3+X2 . ADD NEW BASE OF HB STORMAN 1949
SX7 A3+0 . SUBTRACT OLD BASE OF HB STORMAN 1950
IX7 X3-X7 STORMAN 1951
EQ WUPF1P STORMAN 1952
* STORMAN 1953
* WP4SVD STORMAN 1954
* UPDATE SVD (NOT FOR LITERALS) STORMAN 1955
* PARAM: B2 POINTS TO THE SVD TO BE UPDATED STORMAN 1956
* X0,X1,X2,X3,X4,X7,B3 STORMAN 1957
* STORMAN 1958
WP4SVD DATA 0 STORMAN 1959
SA1 B2 STORMAN 1960
AX1 55 . TYPE OF SVD TO X1 STORMAN 1961
SX2 X1-PSTY STORMAN 1962
NG X2,WP4SVD . BRANCH IF SF,SS STORMAN 1963
SX2 X1-ITY STORMAN 1964
NG X2,WP4SD . IF PS, PA, PE STORMAN 1965
SX2 X1-ATY STORMAN 1966
NG X2,WP4SVD . IF I OR R STORMAN 1967
SX2 X1-NTY STORMAN 1968
NG X2,WP4SB . IF A OR D STORMAN 1969
SX4 X1-INTY STORMAN 1970
* UPDATE F2 IN INTY OR OUTTY (X4 GE 0) OF F2 AND F1 IN CTY, NTY STORMAN 1971
SA1 B2 . FETCH SVD AGAIN STORMAN 1972
MX0 42 STORMAN 1973
LX1 60-18 STORMAN 1974
SX3 X1 . F2 OF SVD TO X3 STORMAN 1975
ZR X3,WP4SA . BRANCH IF BASE=0 IN NTY SVD STORMAN 1976
RJ WUPF1 . UPDATE F2 STORMAN 1977
PL X4,WP4SC . THIS IS ENOUGH FOR INTY/OUTTY STORMAN 1978
LX7 18 STORMAN 1979
IX3 X2-X3 . DECREMENT F1 BY THE SAME AMOUNT STORMAN 1980
IX7 X7+X3 . NOTE THAT WUPF COULD NOT BE USED STORMAN 1981
SA7 A1 STORMAN 1982
JP WP4SVD STORMAN 1983
* UPDATE NTY POINTING TO A SIMPLE VARIABLE STORMAN 1984
WP4SA LX1 18 STORMAN 1985
RJ WUPF1 . UPDATE F1 STORMAN 1986
SA7 A1 STORMAN 1987
JP WP4SVD STORMAN 1988
* UPDATE F1 AND F2 IN ATY AND DTY STORMAN 1989
WP4SB SA1 B2 STORMAN 1990
MX0 42 STORMAN 1991
RJ WUPF1 . UPDATE F1 STORMAN 1992
BX1 X7 STORMAN 1993
LX1 60-18 STORMAN 1994
RJ WUPF1 . UPDATE F2 STORMAN 1995
WP4SC LX7 18 STORMAN 1996
SA7 A1 . STORE UPDATED SVD STORMAN 1997
JP WP4SVD STORMAN 1998
* SCAN PATTERN, UPDATE STARPM, PRDPM AND DOLPM STORMAN 1999
WP4SD SA4 B2+0 . THIS LOOP IS SIMILAR TO STORMAN 2000
WP4SE SA1 X4 . THE ONE AT WPH2F STORMAN 2001
SX4 X1 STORMAN 2002
NG X1,WP4SG STORMAN 2003
LX1 19 STORMAN 2004
ID X1,WP4SF STORMAN 2005
UX7 B3,X1 STORMAN 2006
NE B3,B0,WP4SG STORMAN 2007
WP4SF SA3 X1 STORMAN 2008
MX0 42 STORMAN 2009
RJ WUPF1P . UPDATE PM WORD IN X1 STORMAN 2010
LX7 60-19 STORMAN 2011
SA7 A1+0 STORMAN 2012
WP4SG NZ X4,WP4SE STORMAN 2013
JP WP4SVD STORMAN 2014
* STORMAN 2015
EJECT STORMAN 2016
* STORMAN 2017
* START OF SELF CHECKING... STORMAN 2018
* STORMAN 2019
SELFCHK DATA 0 STORMAN 2020
SX7 0 STORMAN 2021
SA1 MINHS STORMAN 2022
SA7 VNWLS . NUMBER OF WORDS IN LIST STORAGE STORMAN 2023
SA7 VNFHB . - FREE HEAP BLOCKS STORMAN 2024
SA7 VNCODB . - CODE BLOCKS STORMAN 2025
SA7 VNFILB . - FILE BLOCKS STORMAN 2026
SA1 X1+3 . WORD 0 OF FIRST HB STORMAN 2027
* STORMAN 2028
* THE FOLLOWING LOOP FINDS ALL HEAP BLOCKS STORMAN 2029
* FIRST WORD OF NEXT HB IS IN X1. ADDRESS IS IN A1 STORMAN 2030
* STORMAN 2031
VL1 BX2 X1 STORMAN 2032
SX7 A1 . REMEMBER LAST BLOCK STORMAN 2033
SA7 VLASTB STORMAN 2034
ZR X1,VL35 STORMAN 2035
PL X1,'VE' . NO HS TYPE STORMAN 2036
AX1 55 STORMAN 2037
SB2 X1 . DISPATCH ON HS TYPE STORMAN 2038
JP B2+VL2 STORMAN 2039
+ JP 'VE' . 17, NOT USED STORMAN 2040
+ JP 'VE' . 16, - STORMAN 2041
+ JP 'VE' . 15, - STORMAN 2042
+ SA3 VNFHB . 14, FRETYP STORMAN 2043
JP VL3 STORMAN 2044
+ AX2 18 . 13, CODTYP STORMAN 2045
SB1 X2 STORMAN 2046
JP VL5 STORMAN 2047
+ AX2 18 . 12, DOPTYP STORMAN 2048
SB1 X2 STORMAN 2049
JP VL10 STORMAN 2050
+ SB4 A1 . 11, FILTYP STORMAN 2051
JP VL18 . NO CODE TO CHECK FILTYP YET ***** STORMAN 2052
+ AX2 18 . 10, STRTYP STORMAN 2053
SA3 X2 STORMAN 2054
JP VL13 STORMAN 2055
+ AX2 18 . 7, REALTYP STORMAN 2056
SB4 A1 STORMAN 2057
JP VL15 STORMAN 2058
+ SX0 SITY . 6, INTTYP STORMAN 2059
JP VL19 STORMAN 2060
+ JP 'VE' . 5, NOT USED STORMAN 2061
+ SX0 SSTY . 4, LITTYP STORMAN 2062
JP VL20 STORMAN 2063
+ SB4 A1 . 3, LBLTYP STORMAN 2064
AX2 18 STORMAN 2065
JP VL24 STORMAN 2066
+ SB4 A1 . 2, CALLTYP STORMAN 2067
AX2 18 STORMAN 2068
JP VL26 STORMAN 2069
+ SB5 A1 . 1, VARTYP STORMAN 2070
BX5 X2 STORMAN 2071
JP VL34 STORMAN 2072
VL2 JP 'VE' . 0, NOT USED STORMAN 2073
* STORMAN 2074
* CHECK FREE HEAP BLOCK . WORD 0 IN X2, ADDR IN A1 STORMAN 2075
VL3 SX6 X3+1 STORMAN 2076
SB3 A1 STORMAN 2077
SA6 A3 . INCREMENT FREE BLOCK COUNTER STORMAN 2078
SA1 X2 STORMAN 2079
AX1 36 STORMAN 2080
SB2 X1 STORMAN 2081
AX1 55-36 STORMAN 2082
NE B3,B2,'VE' . BACK POINTER OF NEXT BLOCK STORMAN 2083
SX1 X1-FRETYP+37B . TYPE OF NEXT BLOCK ON FREE LIST STORMAN 2084
NZ X1,'VE' STORMAN 2085
AX2 18 STORMAN 2086
SX1 B3+X2 STORMAN 2087
SA1 X1-1 STORMAN 2088
AX1 18 STORMAN 2089
SX1 X1 STORMAN 2090
SX7 X2 STORMAN 2091
BX1 X1-X7 STORMAN 2092
NZ X1,'VE1' . BYPASS IN LAST WORD STORMAN 2093
SA1 A1+1 STORMAN 2094
BX4 X1 STORMAN 2095
NZ X1,VL4 . WRAP AROUND IF END OF HS STORMAN 2096
SA3 MINHS STORMAN 2097
SA4 X3+2 STORMAN 2098
VL4 LX4 5 . CHECK PREVIOUS FREE BIT SET STORMAN 2099
PL X4,'VE1' . IN IMMEDIATELY FOLLOWING BLOCK STORMAN 2100
AX2 18 STORMAN 2101
SA3 X2 STORMAN 2102
SB2 X3 STORMAN 2103
AX3 55 STORMAN 2104
NE B3,B2,'VE1' . FORWARD POINTER IN PREVIOUS BLOCK STORMAN 2105
SX3 X3-FRETYP+37B STORMAN 2106
ZR X3,VL1 . TYPE OF PREV. BLOCK ON FREE LIST STORMAN 2107
JP 'VE1' STORMAN 2108
* STORMAN 2109
* CHECK CODE HEAP BLOCK. THE FOLLOWING B REGISTERS STORMAN 2110
* CONTAIN CONSTANTS, STORMAN 2111
* B1 POINTS TO THE LAST WORD IN THE BLOCK +1 STORMAN 2112
* B3 =MAXHS STORMAN 2113
* B4 =MINHS STORMAN 2114
* B5 =CALL STORMAN 2115
* STORMAN 2116
VL5 SB1 A1+B1 . PREPARE CONSTANTS STORMAN 2117
SA2 MINHS STORMAN 2118
SB4 X2 STORMAN 2119
SB5 CALL STORMAN 2120
SA2 VNCODB . BUMP NUMBER OF CODE BLOCKS STORMAN 2121
SX7 X2+1 STORMAN 2122
SA7 A2 STORMAN 2123
SA2 MAXHS STORMAN 2124
SB3 X2 STORMAN 2125
VL6 SA1 A1+1 . NEXT MICOP WORD STORMAN 2126
SX0 A1-B1 STORMAN 2127
SB2 X1 STORMAN 2128
ZR X0,VL1 . BRANCH IF END OF CODE BLOCK STORMAN 2129
LT B5,B2,VL9 . JUMP IF NOT BRANCH MICOP STORMAN 2130
* CHECK BRANCH INSTRUCTION STORMAN 2131
AX1 18 STORMAN 2132
EQ B5,B2,VL8 . BRANCH IF CALL STORMAN 2133
SB2 X1 STORMAN 2134
GE B0,B2,VL6 . UNLESS RIGHT ADDRESS LE 0 STORMAN 2135
SX7 LBLTYP-37B . IT MUST POINT TO LABEL STORMAN 2136
VL7 SA2 X1-1 STORMAN 2137
AX2 55 STORMAN 2138
IX2 X2-X7 STORMAN 2139
ZR X2,VL6 STORMAN 2140
JP 'VE' STORMAN 2141
VL8 SX7 CALLTYP-37B . IF CALL, IT MUST POINT TO A STORMAN 2142
EQ VL7 . FUNCTION STORMAN 2143
* CHECK OTHER MICOPS STORMAN 2144
VL9 GE B2,B4,'VE' STORMAN 2145
AX1 18 STORMAN 2146
SB2 X1 STORMAN 2147
RJ VMICAD . CHECK RIGHT ADDRESS STORMAN 2148
AX1 18 STORMAN 2149
SB2 X1 STORMAN 2150
RJ VMICAD . CHECK LEFT ADDRESS STORMAN 2151
JP VL6 STORMAN 2152
* STORMAN 2153
* SUBROUTINE USED ABOVE TO CHECK LEFT AND RIGHT STORMAN 2154
* ADDRESSES IN A MICOP STORMAN 2155
VMICAD DATA 0 STORMAN 2156
GE B2,B3,'VE1' . MUST POINT TO HBWN OR HBL STORMAN 2157
EQ B2,B0,VMICAD STORMAN 2158
LT B2,B4,'VE1' STORMAN 2159
SA3 B2-1 STORMAN 2160
AX3 55 STORMAN 2161
PL X3,'VE1' STORMAN 2162
SX0 X3-REALTYP+37B STORMAN 2163
PL X0,VMICAD STORMAN 2164
JP 'VE1' STORMAN 2165
* STORMAN 2166
* CHECK ARRAY OR DATA STRUCTURE DOPE VECTOR STORMAN 2167
* X7=A1, B1=BYPASS STORMAN 2168
VL10 SA1 A1+1 . NEXT WORD IN THE VECTOR STORMAN 2169
BX2 X1 STORMAN 2170
LX1 1 STORMAN 2171
PL X1,VL11 . BRANCH IF NOT ARRAY STORMAN 2172
SX3 X2 . UPPER BOUND STORMAN 2173
AX2 18 STORMAN 2174
SX4 X2 . LOWER BOUND STORMAN 2175
AX2 18 STORMAN 2176
IX4 X3-X4 STORMAN 2177
SX3 X2 . U-L+1 STORMAN 2178
SX4 X4+1 STORMAN 2179
BX3 X3-X4 STORMAN 2180
ZR X3,VL12 STORMAN 2181
JP 'VE' STORMAN 2182
VL11 SA3 X2 . DATA DOPE VECTOR MUST STORMAN 2183
AX3 55 . POINT TO FIELD FUD-S STORMAN 2184
SX3 X3-FLDTYP STORMAN 2185
ZR X3,VL12 STORMAN 2186
SX3 X3+FLDTYP-DATATYP . OR TO DATA CONSTRUCTOR STORMAN 2187
NZ X3,'VE' STORMAN 2188
VL12 PL X2,VL10 . NOT LAST WORD IN BLOCK STORMAN 2189
SA1 A1+1 STORMAN 2190
SB1 X7+B1 . SIGN BIT MAY BE SET ONLY IN STORMAN 2191
SB1 A1-B1 . THE LAST WORD. STORMAN 2192
EQ B1,B0,VL1 STORMAN 2193
JP 'VE1' STORMAN 2194
* CHECK STRUCTURE, INCLUDING THE SVD-S OF THE ELEMENTS STORMAN 2195
* A3 = WORD 0 OF DOPE VECTOR STORMAN 2196
VL13 SB3 X3 STORMAN 2197
AX3 55 . CHECK DOPE POINTER STORMAN 2198
SX3 X3-DOPTYP+37B STORMAN 2199
NZ X3,'VE' STORMAN 2200
AX2 18 STORMAN 2201
SB2 X2 STORMAN 2202
NE B2,B3,'VE' . CHECK STRUCTURE SIZE STORMAN 2203
SX6 A1 STORMAN 2204
SX5 A1+B2 STORMAN 2205
SA6 VIPTR STORMAN 2206
* LOOP TO CHECK SVD-S BETWEEN VISTR AND VLSTR-1 STORMAN 2207
VL14 SA1 VIPTR STORMAN 2208
SX7 X1+1 STORMAN 2209
SA7 A1 STORMAN 2210
SA1 X7 STORMAN 2211
IX2 X7-X5 STORMAN 2212
PL X2,VL1 STORMAN 2213
NG X1,'VE1' STORMAN 2214
RJ VSVD STORMAN 2215
JP VL14 STORMAN 2216
* STORMAN 2217
* CHECK REAL LITERAL AND RTY SVD IN VALUE WORD STORMAN 2218
VL15 SX7 X2-3 STORMAN 2219
NZ X7,'VE' . BYPASS MUST BE 3 STORMAN 2220
SA1 A1+1 STORMAN 2221
SB1 X1-2 STORMAN 2222
AX1 55 STORMAN 2223
SX1 X1-RTY . SVD MUST BE RETY, POINTING STORMAN 2224
NE B1,B4,'VE' . TO WORD 2 STORMAN 2225
NZ X1,'VE' STORMAN 2226
* STORMAN 2227
* CHECK HASH CODE OF HBWN OR HBL AT B4 STORMAN 2228
VL16 SA1 B4 STORMAN 2229
BX0 X1 STORMAN 2230
SB5 B4+2 STORMAN 2231
SB3 B0-B5 . NEGATIVE B3 FLAGS, NO SEARCH STORMAN 2232
RJ SEARCH . RETURN HASH CODE ONLY STORMAN 2233
VL17 SB3 X2 . TRAVERSE HASH LIST STORMAN 2234
SA2 X2 STORMAN 2235
EQ B3,B4,VL18 . ENTRY IS ON THE LIST STORMAN 2236
NE B3,B0,VL17 . ERROR IS END OF LIST STORMAN 2237
JP 'VE2' STORMAN 2238
VL18 AX2 18 STORMAN 2239
SA1 B4+X2 . GO TO NEXT HB STORMAN 2240
JP VL1 STORMAN 2241
* STORMAN 2242
* CHECK INTYP AND LITTYP HBL STORMAN 2243
VL19 SA3 A1+1 STORMAN 2244
SB2 X3-3 . SVD FIRST POINTER FOR SITY STORMAN 2245
JP VL21 STORMAN 2246
VL20 SA3 A1+1 STORMAN 2247
SB2 X3-2 . SVD FIRST POINTER FOR SSTY STORMAN 2248
VL21 SB4 A1 STORMAN 2249
NE B2,B4,'VE' . CHECK FIRST POINTER STORMAN 2250
AX3 18 STORMAN 2251
AX2 18 STORMAN 2252
SB2 X3+1 STORMAN 2253
SB1 B4+X2 STORMAN 2254
NE B1,B2,'VE' . CHECK LAST POINTER STORMAN 2255
AX3 55-18 STORMAN 2256
BX3 X0-X3 . CHECK SVD TYPE STORMAN 2257
NZ X3,'VE' STORMAN 2258
SX3 X0-SITY STORMAN 2259
NZ X3,VL22 STORMAN 2260
SA3 A3+1 STORMAN 2261
* CHECK NAME PART OF HBWN OR HBL STARTING AT B4, ENDING STORMAN 2262
* AT B1. NAME STARTS AT A3+1. CHECK HASH CODE, TOO. STORMAN 2263
VL22 SA3 A3+1 STORMAN 2264
SB2 X3+0 STORMAN 2265
SB3 A3+1 STORMAN 2266
EQ B2,B0,VL23 . UNLESS LAST WORD STORMAN 2267
EQ B1,B3,'VE1' STORMAN 2268
EQ B2,B3,VL22 . IT MUST POINT TO THE NEXT STORMAN 2269
JP 'VE1' STORMAN 2270
VL23 EQ B1,B3,VL16 . LAST WORD MUST HAVE 0 POINTER STORMAN 2271
JP 'VE1' STORMAN 2272
* STORMAN 2273
* CHECK CPD IN LBL HBWN STORMAN 2274
VL24 SB1 B4+X2 . PREPARE B1 FOR VL22 STORMAN 2275
SA3 B4+1 . FETCH CPD STORMAN 2276
BX4 X3 STORMAN 2277
SB2 X3 STORMAN 2278
AX3 55 STORMAN 2279
NZ X3,VL25 . BRANCH IF SPECIAL STORMAN 2280
AX4 18 STORMAN 2281
RJ CBAS STORMAN 2282
SB2 X4 STORMAN 2283
SB3 X1 STORMAN 2284
EQ B2,B3,VL22 . CHECK IF BASE FIELD IS STORMAN 2285
JP 'VE1' . CONSISTENT STORMAN 2286
VL25 SB3 CALL . CHECK SPECIAL LABELS STORMAN 2287
LT B3,B2,'VE1' STORMAN 2288
AX4 18 STORMAN 2289
SB2 X4 STORMAN 2290
EQ B2,B0,VL22 STORMAN 2291
JP 'VE1' STORMAN 2292
* STORMAN 2293
* CHECK FUD IN FUNCTION (CALLTYP) HBWN STORMAN 2294
VL26 SB1 B4+X2 . PREPARE B1 FOR VL22 STORMAN 2295
SA3 A1+1 . FETCH FUD STORMAN 2296
BX2 X3 STORMAN 2297
BX4 X3 STORMAN 2298
AX3 55 STORMAN 2299
NZ X3,VL29 STORMAN 2300
* IT IS A PROCEDURE STORMAN 2301
BX3 X4 STORMAN 2302
AX3 18 STORMAN 2303
RJ VLIST . TRAVERSE FORMAL LIST STORMAN 2304
SB2 X7-1 STORMAN 2305
SB3 X3 STORMAN 2306
AX3 18 STORMAN 2307
GE B3,B2,'VE' . CHECK NUMBER OF FORMALS STORMAN 2308
SB2 B2+B2 STORMAN 2309
SB3 X3 STORMAN 2310
SB2 B2+1 STORMAN 2311
NE B2,B3,'VE1' . CHECK APPETITE STORMAN 2312
VL27 SA2 X4 . ADDRESSES ON FORMAL STORMAN 2313
SX4 X2 . LIST MUST POINT TO SIMPLE STORMAN 2314
AX2 18 . VARIABLES, STORMAN 2315
SA1 X2-1 STORMAN 2316
AX1 55 STORMAN 2317
ZR X4,VL28 STORMAN 2318
SX1 X1-VARTYP+37B STORMAN 2319
ZR X1,VL27 STORMAN 2320
JP 'VE' STORMAN 2321
VL28 SX1 X1-LBLTYP+37B . EXCEPT THE LAST ONE MUST STORMAN 2322
ZR X1,VL22 . POINT TO A LABEL. STORMAN 2323
JP 'VE' STORMAN 2324
* DISPATCH ON FUTY STORMAN 2325
VL29 NG X3,VL33 . BRANCH IF STANDARD PROCEDURE STORMAN 2326
SX0 X3-DATATYP STORMAN 2327
ZR X0,VL32 . - DATA CONSTRUCTOR STORMAN 2328
SX0 X3-FLDTYP STORMAN 2329
ZR X0,VL30 . - FIELD SELECTOR STORMAN 2330
SX0 X3-UNDFTYP STORMAN 2331
ZR X0,VL22 . - UNDEFINED STORMAN 2332
JP 'VE' STORMAN 2333
* CHECK FIELD FUD, X2=X4=FUD STORMAN 2334
VL30 RJ VLIST STORMAN 2335
VL31 SX3 X4 STORMAN 2336
AX4 18 STORMAN 2337
SA1 X4 . FETCH WORD 0 OF DOPE VECTOR STORMAN 2338
AX4 18 STORMAN 2339
SB2 X1 . SIZE OF STRUCTURE STORMAN 2340
AX1 55 STORMAN 2341
SX1 X1-DOPTYP+37B STORMAN 2342
NZ X1,'VE' STORMAN 2343
SB3 X4 . FIELD DISPLACEMENT STORMAN 2344
SA4 X3 STORMAN 2345
GE B3,B2,'VE' STORMAN 2346
SB3 B3+1 STORMAN 2347
SA1 A1+B3 . BACK POINTER IN DOPE VECTOR STORMAN 2348
SB3 X1-1 STORMAN 2349
NE B3,B4,'VE' STORMAN 2350
NZ X3,VL31 STORMAN 2351
JP VL22 STORMAN 2352
* CHECK DATA CONSTRUCTOR FUD STORMAN 2353
VL32 SA1 X4 . WORD 0 OF DOPE VECTOR STORMAN 2354
SB2 X1 STORMAN 2355
AX4 18 STORMAN 2356
AX1 55 STORMAN 2357
SX1 X1-DOPTYP+37B STORMAN 2358
NZ X1,'VE' STORMAN 2359
SB3 X4+1 STORMAN 2360
NE B2,B3,'VE' . CHECK NUMBER OF FIELDS STORMAN 2361
JP VL22 STORMAN 2362
* CHECK STANDARD PROCEDURE FUD STORMAN 2363
VL33 SA1 MINHS . CHECK IF MACHINE CODE STORMAN 2364
SB2 X4 . ADDRESS IS AT ALL REASONABLE STORMAN 2365
SB3 X1 STORMAN 2366
GE B0,B2,'VE' STORMAN 2367
GE B2,B3,'VE' STORMAN 2368
JP VL22 STORMAN 2369
* STORMAN 2370
* CHECK SVD IN SIMPLE VARIABLE HBWN STORMAN 2371
VL34 SA1 A1+1 STORMAN 2372
RJ VSVD . CHECK SVD IN X1 STORMAN 2373
AX5 18 STORMAN 2374
SB4 B5+0 STORMAN 2375
SB1 B4+X5 . PREPARE B4,B1 STORMAN 2376
SA3 B4+1 . GO CHECK NAME AND HASH CODE STORMAN 2377
JP VL22 STORMAN 2378
* LOOP TO SCAN THE STACK IS SIMILAR TO THE ONE AT STORMAN 2379
* WPH2B OR WPH4U STORMAN 2380
* STORMAN 2381
VL35 SB5 B6+0 STORMAN 2382
* STORMAN 2383
VL36 SA1 B5 . NEXT STACK ENTRY HEADER STORMAN 2384
ZR X1,VL43 . BRANCH IF BOTTOM OF STACK STORMAN 2385
SB4 X1 . BYPASS TO B4 STORMAN 2386
GE B0,B4,'VE' . BYPASS MUST BE NOT LESS THAN 1 STORMAN 2387
* STORMAN 2388
PL X1,VL38 . BRANCH IF NOT RETURN INFO. STORMAN 2389
AX1 18 STORMAN 2390
SA1 X1 . RETURN ADDRESS MUST POINT STORMAN 2391
SB2 CALL . TO A CALL MICOP STORMAN 2392
SB3 X1+0 STORMAN 2393
NE B2,B3,'VE' STORMAN 2394
SX5 B4-2 STORMAN 2395
SB5 B5-1 . PREPARE TO SCAN STACKED SVD-S STORMAN 2396
VL37 SA2 B5 . ADDRESS MUST POINT TO A STORMAN 2397
SA2 X2-1 . SIMPLE VARIABLE STORMAN 2398
AX2 55 STORMAN 2399
SA1 B5-1 . SVD TO X1 STORMAN 2400
SX2 X2-VARTYP+37B STORMAN 2401
NZ X2,'VE' STORMAN 2402
RJ VSVD . CHECK SVD STORMAN 2403
SB5 B5-2 STORMAN 2404
SX5 X5-2 STORMAN 2405
PL X5,VL37 STORMAN 2406
JP VL36 STORMAN 2407
VL38 AX1 55 . NOT RETURN INFO STORMAN 2408
SA2 VWD . DISPATCH ON HSTY STORMAN 2409
LX1 2 STORMAN 2410
SB3 X1 STORMAN 2411
AX2 B3,X2 STORMAN 2412
MX0 56 STORMAN 2413
BX2 -X0*X2 STORMAN 2414
SB3 X2 STORMAN 2415
JP B3+VSW STORMAN 2416
VWD SWITCH VSW,4,0,1,1,2,3,2,0,0,4,4,4,4,0,0 STORMAN 2417
+ SB5 B5-B4 . 0, S,I,R,SPEC STORMAN 2418
JP VL36 STORMAN 2419
+ JP VL39 . 1, SS,SI STORMAN 2420
+ SB4 B5-B4 . 2, PS,PE STORMAN 2421
JP VL41 STORMAN 2422
+ SA1 B5 . 3, PA STORMAN 2423
AX1 18 STORMAN 2424
JP VL40 STORMAN 2425
+ SA1 B5-1 . 4, SF,A,D,N,C STORMAN 2426
SB5 B5-B4 . NOTE ATY MAY BE 4-WORD SELECTOR ENTSTORMAN 2427
RJ VSVD STORMAN 2428
JP VL36 STORMAN 2429
* SI OR SS MAY APPEAR ONLY ON THE TOP OF THE STACK STORMAN 2430
VL39 NE B5,B6,'VE' STORMAN 2431
SA1 B5-1 . OPERAND MUST POINT TO A STORMAN 2432
SA2 X1-1 . VARIABLE OR LITERAL STORMAN 2433
RJ VVARLIT STORMAN 2434
SB5 B5-2 STORMAN 2435
JP VL36 STORMAN 2436
* CHECK PARAM FOR PA (IN X1) STORMAN 2437
VL40 SB3 X1 STORMAN 2438
GE B3,B4,'VE' . PARAM MUST BE LESS THAN BYPASS STORMAN 2439
SB4 B5-B4 . BUT GREATER THAN 0. STORMAN 2440
GE B0,B3,'VE' STORMAN 2441
* FALL THROUGH TO CHECK STARPM, ETC. (SEE VSVD3) STORMAN 2442
VL41 SB5 B5-1 STORMAN 2443
GE B4,B5,VL36 STORMAN 2444
SA1 B5 STORMAN 2445
SX2 X1+0 STORMAN 2446
UX3 B3,X1 STORMAN 2447
NG X2,VL41 STORMAN 2448
ID X1,VL42 STORMAN 2449
NE B3,B0,VL41 STORMAN 2450
VL42 SA2 X1-1 STORMAN 2451
RJ VVAR STORMAN 2452
EQ VL41 STORMAN 2453
* STORMAN 2454
* END OF LOOP TO SCAN THE STACK... STORMAN 2455
VL43 BSS 0 STORMAN 2456
* CONCLUSION OF SELF-CHECK... STORMAN 2457
* CHECK MAXHS AND MINSTAK STORMAN 2458
* STORMAN 2459
SA1 MAXHS . BOTH MUST POINT TO THE STORMAN 2460
SA2 MINSTAK . BOTTOM OF THE STACK STORMAN 2461
SB1 X1 STORMAN 2462
SB2 X2 STORMAN 2463
NE B1,B5,'VE3' STORMAN 2464
NE B2,B5,'VE3' STORMAN 2465
SA1 MINHS . CHECK SAVE LOCATIONS STORMAN 2466
SB5 X1 . FOR LISTS. (MAY BE EMPTY) STORMAN 2467
SA2 X1 STORMAN 2468
RJ VLIST STORMAN 2469
SA2 B5+1 STORMAN 2470
RJ VLIST STORMAN 2471
SX1 B5+2 . CHECK DUMMY FREE BLOCK ON STORMAN 2472
SB3 FRETYP-37B . CIRCULAR FREE HB LIST STORMAN 2473
SA4 VNFHB STORMAN 2474
BX2 X1 STORMAN 2475
SX4 X4+1 STORMAN 2476
RJ VHLIST STORMAN 2477
SA1 FHBLRP . CHECK SAME CIRCULAR LIST STARTING STORMAN 2478
BX2 X1 . AT THE ROVING POINTER STORMAN 2479
SB5 CODTYP-37B STORMAN 2480
RJ VHLIST STORMAN 2481
SA1 CODLIST . CHECK CODE LIST STORMAN 2482
BX2 X2-X2 STORMAN 2483
SB3 B5 STORMAN 2484
SA4 VNCODB STORMAN 2485
RJ VHLIST STORMAN 2486
SA1 FILLIST . CHECK FILELIST (MAY BE EMPTY) STORMAN 2487
SA4 VNFILB STORMAN 2488
BX5 X4 STORMAN 2489
JP VL44 . *********** REMOVE IF FILECHECK DONSTORMAN 2490
ZR X1,VL44 . IF LIST IS EMPTY STORMAN 2491
BX5 X5-X5 STORMAN 2492
SB3 FILTYP-37B STORMAN 2493
RJ VHLIST STORMAN 2494
VL44 NZ X5,'VE3' . NUMBER OF BLOCKS MUST BE 0 STORMAN 2495
SA4 MAXLS STORMAN 2496
SX2 B7 . TRAVERSE FREE LIST STORMAN 2497
RJ VLIST STORMAN 2498
ZR X7,'VE3' . MUST BE AT LEAST 1 WORD LONG STORMAN 2499
NZ X2,'VE3' . LAST WORD MUST BE 0 STORMAN 2500
SA3 MAXSTAK . NUMBER OF WORDS IN LS MUST STORMAN 2501
SA2 VNWLS . BE MAXLS-MAXSTAK. STORMAN 2502
IX3 X4+X3 STORMAN 2503
IX2 X2-X3 STORMAN 2504
NZ X2,'VE3' STORMAN 2505
* STORMAN 2506
* END OF SELF-CHECKING... STORMAN 2507
* STORMAN 2508
JP SELFCHK STORMAN 2509
* STORMAN 2510
EJECT STORMAN 2511
* VCHCNT STORMAN 2512
* COUNT THE NUMBER OF NONZERO CHARACTERS IN X2 STORMAN 2513
* PARAM: X2 STORMAN 2514
* RESULT: X7 STORMAN 2515
* X0,X1,X2,X7 STORMAN 2516
* STORMAN 2517
VCHCNT DATA 0 STORMAN 2518
MX0 6 STORMAN 2519
SX7 0 STORMAN 2520
VCHCA BX1 X0*X2 STORMAN 2521
ZR X1,VCHCNT STORMAN 2522
LX2 6 STORMAN 2523
SX7 X7+1 STORMAN 2524
EQ VCHCA STORMAN 2525
* STORMAN 2526
* VLIST STORMAN 2527
* TRAVERSE LIST STARTING AT X2. STORMAN 2528
* PARAM: X2 STORMAN 2529
* RESULT: X2 CONTAINS THE LAST WORD IN THE LIST STORMAN 2530
* X7 NUMBER OF WORDS IN THE LIST STORMAN 2531
* X1,X2,X6,X7,B1,B3 STORMAN 2532
* STORMAN 2533
VLIST1 SA1 VNWLS . THIS IS NOT THE ENTRY POINT STORMAN 2534
IX6 X1+X7 . INCREMENT LS WORD COUNT STORMAN 2535
SA6 A1 STORMAN 2536
VLIST DATA 0 STORMAN 2537
SA1 MAXSTAK . LS DELIMITER STORMAN 2538
BX7 X7-X7 . INIT WORD COUNT STORMAN 2539
SB2 X1 STORMAN 2540
VLIST2 SB3 X2 STORMAN 2541
EQ B3,B0,VLIST1 . RETURN IF POINTER IS 0 STORMAN 2542
SB3 B0-B3 . MAXSTAK IN NEGATIVE REPR. STORMAN 2543
LT B2,B3,'VE3' . WORD NOT IN LS STORMAN 2544
SA2 X2 . NEXT WORD ON LIST STORMAN 2545
SX7 X7+1 STORMAN 2546
EQ VLIST2 STORMAN 2547
* VVAR STORMAN 2548
* CHECK IF X1 IS A VALID VARIABLE REFERENCE STORMAN 2549
* CALL: SA2 X1-1 STORMAN 2550
* RJ VVAR STORMAN 2551
* PARAM: X1 VARIABLE REFERENCE STORMAN 2552
* RETURNS: A2 = WORD 0 OF CONTAINING HB STORMAN 2553
* B1 = 0 IFF THAT BLOCK IS VARTYP STORMAN 2554
* X2,B1 STORMAN 2555
* STORMAN 2556
VVAR0 AX2 55 STORMAN 2557
SB1 X2+B1 STORMAN 2558
NZ B1,VVAR2 . NOT SIMPLE VARIABLE STORMAN 2559
VVAR DATA 0 . ENTRY/EXIT STORMAN 2560
SB1 -VARTYP+37B . EXPECT VARTYP HB STORMAN 2561
NG X2,VVAR0 . CHECK FOR SIMPLE VARIABLE STORMAN 2562
VVAR1 SA2 A2-1 . FIND WORD 0 IN STRUCTURE STORMAN 2563
PL X2,VVAR1 STORMAN 2564
AX2 55 STORMAN 2565
VVAR2 SB1 -STRTYP+37B . EXPECT STRUCTURE HB STORMAN 2566
SX2 B1+X2 . CHECK HSTY STORMAN 2567
ZR X2,VVAR . NOTE B1 .NE. 0 STORMAN 2568
JP 'VE2' STORMAN 2569
* VVARLIT STORMAN 2570
* VERIFY THAT X1 IS A REFERENCE TO: STORMAN 2571
* A VARIABLE (STRUCTURE ELEMENT OR SIMPLE) STORMAN 2572
* OR A LITERAL (STRING OR INTEGER) STORMAN 2573
* CALL: SA2 X1-1 STORMAN 2574
* RJ VVARLIT STORMAN 2575
* USES: A2/X2, B1 STORMAN 2576
VVARLIT DATA 0 . ENTRY/EXIT STORMAN 2577
PL X2,VVL1 . X1 MUST POINT TO STRUCTURE ELEMENT STORMAN 2578
AX2 55 STORMAN 2579
SB1 X2-LITTYP+37B STORMAN 2580
ZR B1,VVARLIT . LITERAL STRING STORMAN 2581
SB1 X2-INTTYP+37B STORMAN 2582
ZR B1,VVARLIT . LITERAL INTEGER STORMAN 2583
VVL1 SA2 A2 STORMAN 2584
RJ VVAR . IF NOT LITERAL, THEN VARIABLE STORMAN 2585
JP VVARLIT STORMAN 2586
* VSVD STORMAN 2587
* CHECK SVD IN X1 STORMAN 2588
* X5,B5 ARE SAVED STORMAN 2589
* STORMAN 2590
VSVD DATA 0 STORMAN 2591
BX2 X1 STORMAN 2592
BX3 X1 STORMAN 2593
NG X1,'VE2' . SVD MUST BE POSITIVE STORMAN 2594
AX1 55 STORMAN 2595
SB1 X1 . DISPATCH ON SVTY STORMAN 2596
JP B1+VSVD1 STORMAN 2597
VSVD1 JP VSVD2 . SF STORMAN 2598
+ JP 'VE2' . S STORMAN 2599
+ JP VSVD2 . SS STORMAN 2600
+ JP VSVD2 . SI STORMAN 2601
+ BX0 X0-X0 . PS STORMAN 2602
JP VSVD3 STORMAN 2603
+ MX0 1 . PA STORMAN 2604
JP VSVD3 STORMAN 2605
+ BX0 X0-X0 . PE STORMAN 2606
JP VSVD3 STORMAN 2607
+ JP VSVD . I STORMAN 2608
+ SA1 MAXSTAK . R STORMAN 2609
JP VSVD8 STORMAN 2610
+ AX3 18 . A STORMAN 2611
SA4 X3 STORMAN 2612
JP VSVD9 STORMAN 2613
+ AX3 18 . D STORMAN 2614
SA4 X3 STORMAN 2615
JP VSVD9 STORMAN 2616
+ SX1 X2 . N STORMAN 2617
AX3 18 STORMAN 2618
JP VSVD10 STORMAN 2619
+ JP VSVD12 . C STORMAN 2620
+ SA1 MAXSTAK . IN STORMAN 2621
JP VSVD13 STORMAN 2622
+ SA1 MAXSTAK . OUT STORMAN 2623
JP VSVD13 STORMAN 2624
JP 'VE2' ***** CHARLES, WHAT IS THIS ***** STORMAN 2625
* CHECK SF, SS TYPES STORMAN 2626
VSVD2 RJ VLIST STORMAN 2627
SX7 X7-1 STORMAN 2628
NG X7,'VE2' . LIST MUST CONTAIN AT LEAST STORMAN 2629
AX3 18 . 1 WORD STORMAN 2630
SB3 X3 STORMAN 2631
SB2 A2 STORMAN 2632
NE B2,B3,'VE2' . CHECK LAST STORMAN 2633
BX6 X7 STORMAN 2634
LX7 3 . COUNT NUMBER OF CHARACTERS BY STORMAN 2635
IX6 X7-X6 . COMPUTING 7*(WORDS-1) "7 = 8 - 1!STORMAN 2636
RJ VCHCNT STORMAN 2637
AX3 18 STORMAN 2638
IX7 X7+X6 . AND ADDING THE NUMBER OF STORMAN 2639
SB3 X3 . CHARS IN THE LAST WORD STORMAN 2640
SB2 X7 STORMAN 2641
NE B2,B3,'VE2' . CHECK CLENGTH STORMAN 2642
JP VSVD STORMAN 2643
* CHECK PATTERNS. X0 IS NEGATIVE IF PA. STORMAN 2644
VSVD3 BX4 X3 STORMAN 2645
RJ VLIST STORMAN 2646
AX3 18 STORMAN 2647
SB3 X3 STORMAN 2648
SB2 A2 STORMAN 2649
AX3 18 STORMAN 2650
NE B2,B3,'VE2' . CHECK LAST STORMAN 2651
SB3 X3 STORMAN 2652
SB2 X7 STORMAN 2653
PL X0,VSVD4 STORMAN 2654
GE B3,B2,'VE2' . PARAM IN PA MUST BE LESS STORMAN 2655
GE B0,B3,'VE2' . THAN X7 BUT GREATER THAN 1 STORMAN 2656
EQ VSVD5 STORMAN 2657
VSVD4 NE B3,B0,'VE2' . PARAM=0 IN PS OR PE STORMAN 2658
* USUAL LOOP TO FIND STARPM, PRDPM AND DOLPM STORMAN 2659
* SEE ALSO WPH2F STORMAN 2660
VSVD5 SA1 X4 STORMAN 2661
SX4 X1 STORMAN 2662
NG X1,VSVD7 STORMAN 2663
LX1 19 STORMAN 2664
ID X1,VSVD6 STORMAN 2665
UX7 B2,X1 STORMAN 2666
NE B2,B0,VSVD7 STORMAN 2667
VSVD6 SA2 X1-1 STORMAN 2668
RJ VVAR STORMAN 2669
VSVD7 NZ X4,VSVD5 STORMAN 2670
JP VSVD STORMAN 2671
* CHECK REAL NUMBER (NOT LITERAL). OPERAND MUST STORMAN 2672
* BE IN LIST STORAGE. X1=MAXSTAK STORMAN 2673
VSVD8 SA4 X2 STORMAN 2674
SB3 X2 STORMAN 2675
BX1 -X1 STORMAN 2676
SB2 X1 STORMAN 2677
LT B3,B2,'VE2' STORMAN 2678
SA1 VNWLS . INCREMENT LS WORD COUNT STORMAN 2679
SX7 X1+1 STORMAN 2680
SA7 A1 STORMAN 2681
JP VSVD STORMAN 2682
* CHECK ATY AND DTY SVD. X4=WORD 0 OF STRUCTURE STORMAN 2683
VSVD9 AX4 18 . DOPE POINTER STORMAN 2684
SB1 X4 STORMAN 2685
SB2 X2 . F1 MUST BE A COPY STORMAN 2686
AX4 55-18 STORMAN 2687
NE B1,B2,'VE2' STORMAN 2688
SX4 X4-STRTYP+37B STORMAN 2689
ZR X4,VSVD . BASE MUST POINT TO A STORMAN 2690
JP 'VE2' . STRUCTURE STORMAN 2691
* CHECK NTY, X1=F1, X3=F2 OF SVD STORMAN 2692
VSVD10 SA2 X1-1 STORMAN 2693
RJ VVAR . RETURNS B1=0 IFF VARTYP HB STORMAN 2694
SB2 A2 . BASE OF HB STORMAN 2695
SB3 X3 STORMAN 2696
EQ B3,B0,VSVD11 . IF F2 IS NOT 0 STORMAN 2697
EQ B0,B1,'VE2' . NTY POINTS TO A STRUCTURE STORMAN 2698
EQ B2,B3,VSVD . AND F2=BASE STORMAN 2699
JP 'VE2' STORMAN 2700
VSVD11 EQ B0,B1,VSVD . OTHERWISE IT POINTS TO A STORMAN 2701
JP 'VE2' . SIMPLE VARIABLE STORMAN 2702
* CHECKING CTY IS SIMILAR TO VL24 STORMAN 2703
VSVD12 SB2 X3 STORMAN 2704
AX3 18 STORMAN 2705
RJ CBAS STORMAN 2706
SB2 X1 STORMAN 2707
SB3 X3 STORMAN 2708
NE B2,B3,'VE2' . VERIFY BASE STORMAN 2709
SA1 B2 STORMAN 2710
AX1 55 STORMAN 2711
SX1 X1-CODTYP+37B . MUST BE A CODE BLOCK STORMAN 2712
ZR X1,VSVD STORMAN 2713
JP 'VE2' STORMAN 2714
* STORMAN 2715
* CHECK INTY AND OUTTY, THEN CHECK SS TYPE VALUE STORMAN 2716
* X1=MAXSTAK STORMAN 2717
VSVD13 SB2 X2 STORMAN 2718
AX2 18 STORMAN 2719
BX1 -X1 STORMAN 2720
SB1 X1 STORMAN 2721
LT B2,B1,'VE2' . SS SVD MUST BE IN LS STORMAN 2722
SA4 VNWLS . INCREMENT LS WORD COUNTER STORMAN 2723
SA2 X2 STORMAN 2724
SA1 B2 . FETCH SS SVD STORMAN 2725
SX7 X4+1 STORMAN 2726
AX2 55 STORMAN 2727
SA7 A4 STORMAN 2728
SX2 X2-FILTYP+37B . F2 MUST POINT TO AN I/O STORMAN 2729
BX3 X1 . BUFFER STORMAN 2730
AX1 55 STORMAN 2731
NZ X2,'VE2' STORMAN 2732
SX1 X1-SSTY . VERIFY SS TYPE STORMAN 2733
NZ X1,'VE2' STORMAN 2734
BX2 X3 STORMAN 2735
JP VSVD2 . GO CHECK SS SVD STORMAN 2736
* STORMAN 2737
* VHLIST STORMAN 2738
* VERIFY THAT HEAP BLOCK LIST IS INTACT STORMAN 2739
* PARAM: X1 LIST HEADER (MAY NOT BE EMPTY) STORMAN 2740
* X2 END OF LIST MARK STORMAN 2741
* X4 NUMBER OF BLOCKS EXPECTED STORMAN 2742
* B3 TYPE OF BLOCKS ON THE LIST STORMAN 2743
* X1,X7,B1,B2,B4 STORMAN 2744
* STORMAN 2745
VHLIST DATA 0 STORMAN 2746
BX7 X7-X7 STORMAN 2747
SB1 X1 STORMAN 2748
SB2 X2+0 STORMAN 2749
VHL1 SA1 B1 . WORD 0 OF NEXT HB STORMAN 2750
SB1 X1 . LINK IS IN F1 STORMAN 2751
AX1 55 STORMAN 2752
SB4 X1 . HSTY TO B4 STORMAN 2753
NE B4,B3,'VE3' . WRONG TYPE STORMAN 2754
SX7 X7+1 STORMAN 2755
NE B1,B2,VHL1 . BRANCH IF NOT END STORMAN 2756
IX1 X4-X7 STORMAN 2757
ZR X1,VHLIST . BRANCH IF COUNT IS OK STORMAN 2758
JP 'VE3' STORMAN 2759
* STORMAN 2760
* STORMAN 2761
END STORMAN 2762