UTILITY
IDENT UTILITY UTILITY 1
TITLE MISCELLANEOUS SUBROUTINES UTILITY 2
* FOR A LISTING OF THE SNODEF COMDECK, CALLED BELOW, SEE MAINLUP. UTILITY 3
LIST -L UTILITY 4
*CALL,SNODEF UTILITY 5
LIST L UTILITY 6
* ERROR UTILITY 7
EXT RTERROR UTILITY 8
EXT ERR1,ERR2,ERR3,ERR4,ERR5,ERR6,ERR7,ERR8,ERR9 UTILITY 9
EXT ERR10,ERR11,ERR13,ERR14,ERR15,ERR16,ERR17,ERR18,ERR19 UTILITY 10
EXT ERR20,ERR21,ERR22,ERR23,ERR24,ERR26,ERR27,ERR28 UTILITY 11
EXT ERR29,ERR30,ERR31,ERR32,ERR35,ERR36,ERR37,ERR38,ERR39 UTILITY 12
EXT ERR40,ERR41,ERR42,ERR43,ERR44,ERR48,ERR49 UTILITY 13
EXT ERR50,ERR52,ERR53,ERR55,ERR56 UTILITY 14
* MAINLUP UTILITY 15
EXT NEXTMIC,SNDMIC,FAIL UTILITY 16
EXT CHEK,SCATS,MCOPTBL,JPB1 UTILITY 17
EXT CTSFSS0,CALL0 UTILITY 18
* IO UTILITY 19
EXT INPUT,OUTPUT,CLOSOUT UTILITY 20
* STORMAN UTILITY 21
EXT PUSHSTK,RESERVE,MORFREE,GETSTAK,GRBCOLL,RESHB UTILITY 22
EXT FREEHB UTILITY 23
* UTILITY UTILITY 24
ENTRY ITOS,SSTOS,STOSFX6,PTOPX4,ICX1X6,ZROX7,SSTOSF,ITOSF UTILITY 25
ENTRY ITOSFTP,SOPERND,X1VALUE,FREESVD,SASSIGN,INDRCT,INDRX UTILITY 26
ENTRY SEARCH,FREESTR,UCAT UTILITY 27
ENTRY DECFIL,SCHHBC UTILITY 28
ENTRY RTOSF,TEN,TENTH UTILITY 29
ENTRY TEN,TENTH UTILITY 30
* PATMAT UTILITY 31
EXT PRDPM,DOLPM,ENDEXPM,ALTPM,EXPPM,ARBPM,LENPM,POSPM UTILITY 32
EXT RPOSPM,TABPM,REMPM,BALPM,FAILPM,FENCEPM,ABORTPM UTILITY 33
EXT ARBNOPM,STARPM,LITPM,ANYPM,NTANYPM,SPANPM,BREAKPM UTILITY 34
* UTILITY 35
* EXPECTED LENGTH OF A PATTERN/2: UTILITY 36
BUFF3 EQU 20 UTILITY 37
EJECT UTILITY 38
* ITOS UTILITY 39
* ROUTINE MUST BE CALLED WITH INTEGER TOP OPERAND. IT UTILITY 40
* WILL BE REMOVED AND REPLACED WITH A NORMALIZED STRING (S) UTILITY 41
* X1,X2,X3,X4,X6,X7,B1 UTILITY 42
* UTILITY 43
ITOS NO UTILITY 44
+ SA0 10 . RESERVE FOR WORST CASE, TEN UTILITY 45
RJ RESERVE . DIGITS AND A SIGN UTILITY 46
SA1 B6-11 . B6 HAS BEEN INCREASED UTILITY 47
RJ ICX1X6 . CONVERT INTEGER TO STRING UTILITY 48
MX2 54 . MASK 1 CHAR LONG UTILITY 49
SB1 A1 UTILITY 50
NG X7,ITOS1 . IF THE NUMBER WAS NEGATIVE UTILITY 51
SB6 B6-1 . FIRST CHAR IS A - UTILITY 52
EQ ITOS3 . UTILITY 53
ITOS1 SX7 1R- UTILITY 54
ITOS2 SA7 B1 . LOOP, STORE NEXT CHAR UTILITY 55
SB1 B1+1 UTILITY 56
ITOS3 LX6 6 . UNPACK NEXT CHAR UTILITY 57
BX7 -X2*X6 . LOOP IF NOT ZERO UTILITY 58
ZR X7,ITOS4 . OR ELEVENTH DIGIT UTILITY 59
NE B1,B6,ITOS2 UTILITY 60
ITOS4 SX1 A1-B1 . -(BYPASS LENGTH-1) TO X1 UTILITY 61
SB6 B1 . STACK TOP UTILITY 62
SX1 X1-1 UTILITY 63
SX7 STY UTILITY 64
LX7 55 UTILITY 65
BX1 -X1 UTILITY 66
BX7 X1+X7 UTILITY 67
SA7 B6 . S TYPE HEADING UTILITY 68
EQ ITOS UTILITY 69
* UTILITY 70
* SSTOS UTILITY 71
* THIS ROUTINE BREAKS DOWN A STRING OF LENGTH B5 INTO UTILITY 72
* CHARACTERS. THE LAST CHARACTER, IF ANY, WILL BE STORED AT UTILITY 73
* B6-1. X1 IS THE ADDRESS OF THE FIRST WORD OF THE STRING. UTILITY 74
* X0,X1,X2,X3,X7,B5 UTILITY 75
* UTILITY 76
* UTILITY 77
SSTOS1 SA2 X1 .NO,THIS IS NOT THE ENTRY UTILITY 78
SX1 X2 . LINK TO NEXT WORD UTILITY 79
BX2 X0*X2 . MASK LINK OFF, THIS WILL PRODUCE UTILITY 80
SSTOS2 LX2 6 . A ZERO CHARACTER AT THE UTILITY 81
BX7 -X3*X2 . END OF THE WORD UTILITY 82
ZR X7,SSTOS1 UTILITY 83
SA7 B6-B5 UTILITY 84
SB5 B5-1 . DECREASE LENGTH UTILITY 85
SSTOS3 NE B5,B0,SSTOS2 . GO BACK IF NOT ZERO UTILITY 86
* UTILITY 87
SSTOS NO .ENTER HERE UTILITY 88
+ MX0 42 . SET UP MASKS UTILITY 89
MX3 54 UTILITY 90
NE B5,B0,SSTOS1 UTILITY 91
EQ SSTOS UTILITY 92
* UTILITY 93
* STOSFX6 UTILITY 94
* THE FOLLOWING SUBROUTINE ASSIGNS A STRING TO A LIST UTILITY 95
* STRUCTURE. B2 POINTS TO THE FIRST, B3 TO THE LAST CHARACTER UTILITY 96
* UPON ENTRY. THE SVD OF THE CREATED LIST WILL BE PUT UTILITY 97
* INTO X6 UTILITY 98
* X0,X1,X2,X6,B2,B3,B1 UTILITY 99
* UTILITY 100
STOSFX6 NO UTILITY 101
+ SB2 B2-1 UTILITY 102
SX1 B7 . FIRST IN LIST UTILITY 103
LX1 24 UTILITY 104
SX6 B3-B2 . STRING LENGTH UTILITY 105
BX0 X1+X6 UTILITY 106
EQ STOSF3 UTILITY 107
STOSF1 SX6 B0+0 UTILITY 108
SB1 42 UTILITY 109
STOSF2 EQ B2,B3,STOSF5 . ASSEMBLE SEVEN CHARACTERS UTILITY 110
SB2 B2+1 . LEFT JUSTIFIED ZERO FILL UTILITY 111
LX6 6 UTILITY 112
SA2 B2 UTILITY 113
BX6 X6+X2 UTILITY 114
SB1 B1-6 UTILITY 115
NE B1,B0,STOSF2 UTILITY 116
EQ B2,B3,STOSF5 UTILITY 117
LX6 18 UTILITY 118
BX6 X1+X6 . ADD A POINTER TO THE WORD UTILITY 119
SA6 B7 . AND STORE IT UTILITY 120
SB7 X1 UTILITY 121
STOSF3 SA1 B7+0 . GET NEXT FREE WORD UTILITY 122
NZ X1,STOSF4 UTILITY 123
RJ MORFREE . END OF FREE CHAIN HAS BEEN MET UTILITY 124
STOSF4 SX1 X1 UTILITY 125
EQ STOSF1 UTILITY 126
STOSF5 LX6 18 UTILITY 127
LX6 B1,X6 . LEFT JUSTIFY LAST WORD UTILITY 128
SA6 B7 UTILITY 129
SB7 X1 UTILITY 130
LX0 36 UTILITY 131
SX6 A6 UTILITY 132
LX6 18 UTILITY 133
BX6 X0+X6 . FORM SVD IN X6 UTILITY 134
EQ STOSFX6 . AND RETURN UTILITY 135
* UTILITY 136
* PTOPX4 UTILITY 137
* WHEN CALLING THIS SUBROUTINE, X4 MUST POINT TO A CELL WHERE UTILITY 138
* A P TYPE SVD CAN BE FOUND. THE PATTERN WILL BE LOADED TO THE UTILITY 139
* STACK FROM B6+1 TOWARD HIGH CORE. B6 WILL BE INCREASED UTILITY 140
* TO POINT TO THE END WHILE THE ORIGINAL VALUE IS SAVED IN B3 UTILITY 141
* A0 IS SET TO THE LENGTH OF THE PATTERN UTILITY 142
* X0,X1,X2,X4,X7,B2,B3,A0 UTILITY 143
* UTILITY 144
PTOPX4 NO UTILITY 145
PTOP1 SA1 X4 . TAKE SVD AFRESH UTILITY 146
SB3 B6 UTILITY 147
SA2 MAXSTAK UTILITY 148
SB2 X2 UTILITY 149
MX0 33 UTILITY 150
SB2 B0-B2 UTILITY 151
PTOP2 SA2 X1 . NEXT WORD IN LIST UTILITY 152
SX1 X2 UTILITY 153
SB6 B6+1 UTILITY 154
GE B6,B2,PTOP3 . OUT OF SPACE, WE ARE IN TROUBLE UTILITY 155
BX7 X2*X0 . CONVERT PATTERN WORD INTO UTILITY 156
LX7 18 . PM OPERATION FORMAT UTILITY 157
SA7 B6 UTILITY 158
NZ X1,PTOP2 . LOOP IF NOT END OF LIST UTILITY 159
SA0 B6-B3 UTILITY 160
EQ PTOPX4 UTILITY 161
PTOP3 SB6 B6+BUFF3 . WE DO NOT HAVE ANY INFORMATION UTILITY 162
SA0 B6-B3 UTILITY 163
RJ GETSTAK . HOW LONG THE PATTERN WILL BE, SO UTILITY 164
SB6 B3 . WE REQUEST A REASONABLE AMOUNT UTILITY 165
EQ PTOP1 . AND TRY AGAIN. NOTE THAT THE LIST UTILITY 166
. STRUCTURE MIGHT HAVE CHANGED. UTILITY 167
* UTILITY 168
* UTILITY 169
* ROUTINE TO CONVERT AN INTEGER IN X1 INTO A DISPLAY CODED UTILITY 170
* STRING IN X6. THE RESULT IS THE ABS VALUE LEFT JUSTIFIED UTILITY 171
* WITH ZERO FILL. UTILITY 172
* X1,X2,X3,X6,X7,B1 UTILITY 173
* UTILITY 174
ICX1X6 NO UTILITY 175
+ BX7 X1 . SAVE OLD SIGN UTILITY 176
PL X1,IC1 . UTILITY 177
BX1 -X1 . ABS VALUE UTILITY 178
IC1 BX6 X6-X6 . INITIALIZE RESULT UTILITY 179
SA2 TEN UTILITY 180
PX1 X1 UTILITY 181
IC2 FX3 X1/X2 . LOOP, X3 IS THE NUMBER UTILITY 182
UX3 B3,X3 . LESS THE LAST DIGIT UTILITY 183
LX3 B3,X3 UTILITY 184
PX4 X3 UTILITY 185
NX4 X4 UTILITY 186
FX4 X4*X2 UTILITY 187
FX4 X1-X4 UTILITY 188
UX4 B3,X4 UTILITY 189
LX4 B3,X4 UTILITY 190
SX4 X4+1R0 UTILITY 191
BX6 X6+X4 UTILITY 192
LX6 54 UTILITY 193
PX1 X3 UTILITY 194
SX0 X0+1 . COUNT NUMBER OF DIGITS UTILITY 195
NZ X3,IC2 . LOOP IF THERE ARE MORE DIGITS UTILITY 196
EQ ICX1X6 UTILITY 197
TEN DATA 10.0 UTILITY 198
* UTILITY 199
* X1,X2 UTILITY 200
ZROX7 NO UTILITY 201
+ SA1 B7 UTILITY 202
BX7 X7-X7 UTILITY 203
NZ X1,ZROX7A UTILITY 204
RJ MORFREE UTILITY 205
ZROX7A SA7 A1 . CREATE A NULL STRING VALUE UTILITY 206
SB7 X1 . AND RETURN ITS SVD IN X7 UTILITY 207
SX1 A1 UTILITY 208
SX7 A1 UTILITY 209
LX1 18 UTILITY 210
BX1 X1+X7 UTILITY 211
SX7 SSTY UTILITY 212
LX7 55 UTILITY 213
BX7 X1+X7 UTILITY 214
EQ ZROX7 UTILITY 215
* SSTOSF UTILITY 216
* COPY THE SS STRING WITH SVD IN X2, AND RETURN THE UTILITY 217
* SF TYPE SVD OF THE COPY IN X6 UTILITY 218
* X0,X1,X2,X6,X7 UTILITY 219
* UTILITY 220
SSTOSF NO UTILITY 221
+ MX0 18 UTILITY 222
SX6 B7 UTILITY 223
LX0 54 UTILITY 224
BX0 X2*X0 . LENGTH AND FIRST TO X6 UTILITY 225
BX6 X0+X6 UTILITY 226
MX0 42 UTILITY 227
EQ SSTOSF2 UTILITY 228
SSTOSF1 SA2 X2 . NEXT WORD IN SS UTILITY 229
BX7 X0*X2 UTILITY 230
SX2 X2 UTILITY 231
SB7 X1 UTILITY 232
ZR X2,SSTOSF3 . BRANCH IF END LIST UTILITY 233
BX7 X7+X1 UTILITY 234
SA7 A1 UTILITY 235
SSTOSF2 SA1 B7 . NEXT FREE WORD TO X1 UTILITY 236
ZR X1,SSTOSF4 . BRANCH IF END OF FREE LIST UTILITY 237
SX1 X1 UTILITY 238
EQ SSTOSF1 UTILITY 239
SSTOSF3 SX1 A1 UTILITY 240
SA7 A1 UTILITY 241
LX1 18 UTILITY 242
BX6 X6+X1 UTILITY 243
EQ SSTOSF UTILITY 244
SSTOSF4 RJ MORFREE UTILITY 245
SX1 X1 UTILITY 246
EQ SSTOSF1 UTILITY 247
* ITOSF UTILITY 248
* CONVERT INTEGER IN X1 INTO SF FORM. RETURN SVD IN X6. UTILITY 249
* X0,X1,X2,X3,X4,X6,X7,B1,B3 UTILITY 250
* UTILITY 251
ITOSF4 SX4 A1 UTILITY 252
SA6 A1 . STORE LAST WORD UTILITY 253
LX4 18 UTILITY 254
BX6 X7+X4 . ADD LWA TO THE SVD UTILITY 255
ITOSF DATA 0 . ENTRY POINT UTILITY 256
BX0 X0-X0 . INITIALIZE CHARACTER COUNT UTILITY 257
RJ ICX1X6 . CONVERT INTEGER INTO DISPLAY UTILITY 258
BX3 X3-X3 . INITIALIZE SIGN TO POSITIVE UTILITY 259
MX2 54 UTILITY 260
SX1 B7+0 . FIRST FOR SVD UTILITY 261
PL X7,ITOSF1 . BRANCH IF POSITIVE UTILITY 262
SX4 1R- UTILITY 263
BX3 -X2*X6 . 10TH DIGIT MAY OVERFLOW TO X3 UTILITY 264
BX6 X6*X2 UTILITY 265
LX4 54 UTILITY 266
LX6 54 UTILITY 267
LX3 36 UTILITY 268
BX6 X6+X4 . INSERT - SIGN UTILITY 269
SX0 X0+1 . BUMP CHARACTER COUNT UTILITY 270
ITOSF1 SB3 X0-7 UTILITY 271
LX0 36 . ADD NUMBER OF CHARACTERS TO SVD UTILITY 272
BX7 X1+X0 . UTILITY 273
ITOSF2 SA1 B7+0 . GET A FREE WORD UTILITY 274
NZ X1,ITOSF3 UTILITY 275
RJ MORFREE UTILITY 276
ITOSF3 SB7 X1 UTILITY 277
SX1 X1 UTILITY 278
GE B0,B3,ITOSF4 . BRANCH IF THE NUMBER FITS INTO A UTILITY 279
MX0 42 . SINGLE WORD UTILITY 280
BX2 -X0*X6 . OTHERWISE STORE THE FIRST SEVEN UTILITY 281
BX6 X0*X6 . CHARACTERS UTILITY 282
BX6 X6+X1 . AND REPEAT THE LOOP WITH THE UTILITY 283
SA6 A1 . REMAINING ONES UTILITY 284
LX2 42 UTILITY 285
BX6 X2+X3 UTILITY 286
SB3 B0-B3 . MAKE B3 NEGATIVE (ZERO IS OK) UTILITY 287
EQ ITOSF2 UTILITY 288
ITOSFTP SA1 B6-1 . CONVERT TOP ENTRY IN UTILITY 289
RJ ITOSF . STACK FROM I TO SF UTILITY 290
SX7 2 UTILITY 291
SA6 B6-1 UTILITY 292
SA7 B6 UTILITY 293
JP B1 UTILITY 294
* UTILITY 295
HALF DATA 0.5 UTILITY 296
ONE DATA 1.0 UTILITY 297
TENTO13 DATA 1.0E13 UTILITY 298
* UTILITY 299
RTOSF0 ZR B5,RTOSF02 . STORE WORD UTILITY 300
SB5 B5-6 UTILITY 301
RTOSF01 LX6 6 UTILITY 302
BX6 X0+X6 UTILITY 303
SA0 A0+1 . CHARACTER COUNT UTILITY 304
JP B4 UTILITY 305
RTOSF02 LX6 18 UTILITY 306
SB5 36 UTILITY 307
SA1 B7 UTILITY 308
NZ X1,RTOSF03 UTILITY 309
RJ MORFREE UTILITY 310
RTOSF03 SX1 X1 UTILITY 311
SB7 X1 UTILITY 312
BX6 X1+X6 UTILITY 313
SA6 A1 UTILITY 314
BX6 X6-X6 UTILITY 315
EQ RTOSF01 UTILITY 316
RTOSF DATA 0 . REAL IN X1 TO SVD IN X6 UTILITY 317
SX7 B7 . START OF FREE CHAIN UTILITY 318
SA2 MINHS UTILITY 319
BX6 X6-X6 . X6 WILL BE CHARACTER BUFFER UTILITY 320
SA7 X2 UTILITY 321
SB5 42 . BIT COUNT FOR XHARACTER BUFFER UTILITY 322
SA0 B0 . CHARACTER COUNT UTILITY 323
SB2 B0 . SCALE FACTOR UTILITY 324
NX4 X1 UTILITY 325
SB3 13 . SIGNIFICANT DIGIT COUNT UTILITY 326
ZR X4,RTOSF6 . ZERO IS ALREADY NORMALIZED. UTILITY 327
PL X1,RTOSF1 UTILITY 328
SX0 1R- UTILITY 329
BX4 -X4 UTILITY 330
SB4 RTOSF1 UTILITY 331
EQ RTOSF0 . OUTPUT MINUS SIGN UTILITY 332
RTOSF1 SA2 ONE UTILITY 333
SA1 TENTH UTILITY 334
SA3 TEN UTILITY 335
RTOSF2 FX0 X4-X2 UTILITY 336
NG X0,RTOSF3 . R < 1.0 UTILITY 337
RX4 X4/X3 UTILITY 338
SB2 B2+1 UTILITY 339
EQ RTOSF2 UTILITY 340
RTOSF3 FX0 X4-X1 UTILITY 341
PL X0,RTOSF4 UTILITY 342
RX4 X3*X4 UTILITY 343
SB2 B2-1 UTILITY 344
EQ RTOSF3 UTILITY 345
RTOSF4 SA1 TENTO13 UTILITY 346
RX5 X4*X1 UTILITY 347
SA4 HALF UTILITY 348
FX4 X4+X5 UTILITY 349
UX4 B1,X4 UTILITY 350
LX4 B1,X4 UTILITY 351
PX4 X4 UTILITY 352
NX4 X4 UTILITY 353
RX4 X4/X1 UTILITY 354
FX1 X4-X2 UTILITY 355
NG X1,RTOSF45 UTILITY 356
RX4 X4/X3 UTILITY 357
SB2 B2+1 UTILITY 358
RTOSF45 LE B2,B0,RTOSF6 . R WAS < 1.0 UTILITY 359
SB4 RTOSF5 UTILITY 360
RTOSF5 ZR B2,RTOSF8 . INTEGER PART CONVERTED UTILITY 361
SB2 B2-1 UTILITY 362
SB3 B3-1 UTILITY 363
NG B3,RTOSF7 . OUTPUT A ZERO UTILITY 364
FX5 X4*X3 . R*10.0 UTILITY 365
UX0 X5,B1 UTILITY 366
LX0 X0,B1 UTILITY 367
PX7 X0 UTILITY 368
SX0 X0+1R0 UTILITY 369
NX7 X7 UTILITY 370
FX4 X5-X7 UTILITY 371
NX4 X4 UTILITY 372
EQ RTOSF0 . OUTPUT DIGIT UTILITY 373
RTOSF6 SB4 RTOSF8 UTILITY 374
RTOSF7 SX0 1R0 UTILITY 375
EQ RTOSF0 UTILITY 376
RTOSF8 SX0 1R. UTILITY 377
SB4 RTOSF9 UTILITY 378
EQ RTOSF0 UTILITY 379
RTOSF9 SB2 B2+1 UTILITY 380
LE B2,B0,RTOSF7 . OUTPUT A ZERO UTILITY 381
LE B3,B0,RTOSF10 . FINISHED UTILITY 382
SB3 B3-1 UTILITY 383
FX5 X4*X3 . R*10.0 UTILITY 384
UX0 X5,B1 UTILITY 385
LX0 X0,B1 UTILITY 386
PX7 X0 UTILITY 387
SX0 X0+1R0 UTILITY 388
NX7 X7 UTILITY 389
FX4 X5-X7 UTILITY 390
NX4 X4 UTILITY 391
NZ X4,RTOSF0 . FINISHED UTILITY 392
SB4 RTOSF10 UTILITY 393
EQ RTOSF0 UTILITY 394
RTOSF10 SA2 MINHS UTILITY 395
ZR X6,RTOSF12 . NO CHARS TO STORE UTILITY 396
SB5 B5+18 UTILITY 397
LX6 B5,X6 UTILITY 398
SA1 B7 UTILITY 399
NZ X1,RTOSF11 UTILITY 400
RJ MORFREE UTILITY 401
RTOSF11 SA6 A1+0 UTILITY 402
SB7 X1+0 UTILITY 403
RTOSF12 SA1 X2 . FWA UTILITY 404
SX6 A6 . LWA UTILITY 405
LX6 18 UTILITY 406
BX6 X1+X6 UTILITY 407
SX5 A0 . CHAR COUNT UTILITY 408
LX5 36 UTILITY 409
BX6 X5+X6 UTILITY 410
BX7 X7-X7 UTILITY 411
SA7 A1 . ZERO XWDREL UTILITY 412
EQ RTOSF . RETURN UTILITY 413
TENTH DATA 0.1E0 . =.1 UTILITY 414
TITLE OPERAND TO THE TOP OF THE STACK UTILITY 415
X1VALUE SX4 X1+0 UTILITY 416
SX6 X1+0 UTILITY 417
SB1 SNDMIC UTILITY 418
SA6 UA . SAVE ADDRESS FOR PMCHEK UTILITY 419
* RETURN IS IN B1 UTILITY 420
SOPERND SA1 X4 . SVD OF OPERAND TO X1 UTILITY 421
SA2 OPRNDWD . SWITCH ON TYPE (CF. CHEK) UTILITY 422
BX3 X1 UTILITY 423
AX1 55 UTILITY 424
LX1 2 UTILITY 425
SB4 X1 UTILITY 426
MX0 56 UTILITY 427
AX2 B4,X2 UTILITY 428
BX2 -X0*X2 UTILITY 429
SB3 X2+0 UTILITY 430
JP B3+OPRNDSW UTILITY 431
* UTILITY 432
OPRNDWD SWITCH OPRNDSW,0,0,1,1,4,4,4,2,8,7,7,7,0,5,6 UTILITY 433
* UTILITY 434
+ MX0 5 . 0, C UTILITY 435
BX6 X3 UTILITY 436
EQ OPRNDR1 UTILITY 437
+ MX0 5 . 1, SS,SI UTILITY 438
BX6 X4 UTILITY 439
EQ OPRNDR1 UTILITY 440
+ MX0 5 . 2, I UTILITY 441
BX6 X3 UTILITY 442
LX6 6 . EXTEND THE SIGN UTILITY 443
AX6 6 UTILITY 444
EQ OPRNDR1 UTILITY 445
+ MX0 5 . 4, PS,PE,PA UTILITY 446
BX6 X0*X3 UTILITY 447
EQ OPRNDP UTILITY 448
+ SA0 B1 . 5, IN UTILITY 449
BX5 X4 UTILITY 450
EQ OPRNDIN UTILITY 451
+ EQ OPRNDOT . 6, OUT UTILITY 452
+ MX0 5 . 7, A,D,N UTILITY 453
MX7 59 UTILITY 454
JP OPRNDST UTILITY 455
+ SA1 X3+0 . 8, R UTILITY 456
MX0 5 UTILITY 457
BX6 X1 UTILITY 458
OPRNDR1 SA0 2 . RESERVE 2 LOCATIONS IN THE STACK UTILITY 459
RJ RESERVE UTILITY 460
OPRNDR2 SX2 A0 UTILITY 461
BX7 X0*X3 . HEADING TO X7 UTILITY 462
SA6 B6-1 . STORE SECONDARY WORD FROM X6 UTILITY 463
BX7 X7+X2 UTILITY 464
SA7 B6 UTILITY 465
JP B1+0 . RETURN UTILITY 466
* UTILITY 467
OPRNDP AX3 36 . PATTERN TYPE OPERAND UTILITY 468
SX3 X3 . PARAMETER TO X3 UTILITY 469
RJ PTOPX4 . LOAD PATTERN TO THE STACK UTILITY 470
LX3 18 UTILITY 471
SA0 A0+1 . RESERVE ONE WORD FOR HEADING UTILITY 472
BX6 X6+X3 UTILITY 473
SB6 B3 . B3 AND A0 GOT THEIR VALUES UTILITY 474
SX3 A0 . IN PTOPX4 UTILITY 475
RJ RESERVE UTILITY 476
BX6 X6+X3 UTILITY 477
SA6 B6 . STORE HEADING UTILITY 478
JP B1+0 . RETURN UTILITY 479
* UTILITY 480
OPRNDIN RJ FREESVD . OPERAND INPUT ASSOCIATED UTILITY 481
SB3 X5 UTILITY 482
RJ INPUT . CALL INPUT UTILITY 483
SX4 X5+0 UTILITY 484
SB1 A0+0 . RESTORE REGISTERS UTILITY 485
OPRNDOT SA0 2 . ALSO FOR OUTPUT UTILITY 486
RJ RESERVE UTILITY 487
SA1 X4 . MAKE A COPY OF THE RESULTING UTILITY 488
SA2 X1 . STRING AND USE ITS SF TYPE UTILITY 489
RJ SSTOSF . DESCRIPTION INSTEAD UTILITY 490
BX3 X3-X3 UTILITY 491
EQ OPRNDR2 UTILITY 492
* UTILITY 493
OPRNDST BX6 X3 UTILITY 494
AX3 18 . UNPACK BASE POINTER UTILITY 495
SX1 X3 UTILITY 496
LX3 18 UTILITY 497
ZR X1,OPRNDR1 . BRANCH IF SIMPLE NAME UTILITY 498
SA1 X1 UTILITY 499
IX7 X1-X7 . INCREMENT REF. COUNT UTILITY 500
SX2 X7 UTILITY 501
SA7 A1 UTILITY 502
PL X2,OPRNDR1 . BRANCH IF NO OVERFLOW UTILITY 503
MX0 42 UTILITY 504
MX7 43 . KEEP REF. COUNT AT 377777B UTILITY 505
BX1 X1*X0 UTILITY 506
BX7 -X7+X1 UTILITY 507
SA7 A1 UTILITY 508
JP OPRNDR1 UTILITY 509
TITLE ASSIGNMENT TO A SIMPLE VARIABLE UTILITY 510
* FREESVD UTILITY 511
* RELEASE OBJECTS REFERENCED BY THE SVD, SO IT CAN BE UTILITY 512
* DESTROYED. UTILITY 513
* PARAM: X3 POINTS TO THE SVD UTILITY 514
* RESULTS: X4 THE SVD SHIFTED LEFT 5 (TRACE BIT TO SIGN) UTILITY 515
* B4 IS NEGATIVE IFF SVD IS INTY/OUTTY UTILITY 516
* IF X3 POINTS TO AN EMPTY VALUE CELL, FREESVD SETS B4=0 AND RETURNS. UTILITY 517
* X0,X1,X2,X4,X7,B3,B4 UTILITY 518
* UTILITY 519
* UTILITY 520
FREESVD NO UTILITY 521
+ SA1 X3 . SVD TO BE FREED TO X1 UTILITY 522
SA2 FSVDWD UTILITY 523
MX0 56 UTILITY 524
SB4 B0 . ENSURE B4 IS NON-NEGATIVE IN CASE UTILITY 525
ZR X1,FREESVD . VALUE CELL IS EMPTY UTILITY 526
BX4 X1 . SWITCH ON TYPE (CF. CHEK) UTILITY 527
AX1 55 UTILITY 528
LX1 2 UTILITY 529
SB4 X1 UTILITY 530
AX2 B4,X2 UTILITY 531
BX2 -X0*X2 UTILITY 532
SB3 X2 UTILITY 533
JP B3+FSVDSW UTILITY 534
* UTILITY 535
FSVDWD SWITCH FSVDSW,0,0,4,0,4,4,4,1,0,2,1,1,1,3,3 UTILITY 536
* UTILITY 537
+ SX7 B7 . 0, R UTILITY 538
SB7 X4 UTILITY 539
SA7 X4+0 UTILITY 540
FSVD0 LX4 5 . 1, I,C UTILITY 541
SB4 B0 UTILITY 542
EQ FREESVD UTILITY 543
+ EQ FSVD1 . 2, A,D,N UTILITY 544
+ SB4 B0-B4 . 3, IN,OUT UTILITY 545
SA4 X4+0 UTILITY 546
+ SX7 B7 . 3, SS,PS,PE,PA UTILITY 547
SB7 X4 UTILITY 548
AX4 18 UTILITY 549
SA7 X4 UTILITY 550
LX4 18+5 UTILITY 551
EQ FREESVD UTILITY 552
* RELEASE A,D, OR N USING THE RECURSIVE FREESTR UTILITY 553
FSVD1 SB3 X3 UTILITY 554
BX4 X3 . SAVE X3 UTILITY 555
RJ FREESTR UTILITY 556
BX3 X4 UTILITY 557
SA4 X4 UTILITY 558
EQ FSVD0 UTILITY 559
* UTILITY 560
* SASSIGN UTILITY 561
* B2 POINTS TO THE STACK HEADING OF A VALUE, WHICH UTILITY 562
* WILL BE ASSIGNED TO THE VARIABLE AT X3. UTILITY 563
* THE CONTENTS OF THE STACK ENTRY MUST BE DISCARDED AFTER THE UTILITY 564
* ASSIGNMENT UTILITY 565
* X3,X5,B1,B2 ARE SAVED UTILITY 566
* UTILITY 567
SASSIGN NO UTILITY 568
+ MX0 56 UTILITY 569
SA1 B2 . FETCH HEADING OF THE VALUE UTILITY 570
SA2 SASGNWD . TO BE ASSIGNED UTILITY 571
BX4 X1 . SWITCH ON ITS TYPE UTILITY 572
AX1 55 UTILITY 573
LX1 2 UTILITY 574
SB3 X1 UTILITY 575
AX2 B3,X2 UTILITY 576
BX2 -X0*X2 UTILITY 577
SB3 X2 UTILITY 578
JP B3+SASGNSW UTILITY 579
* UTILITY 580
SASGNWD SWITCH SASGNSW,4,0,1,12,11,11,11,6,14,9,9,9,9,0,0 UTILITY 581
* UTILITY 582
+ SB3 X4 . 0, S UTILITY 583
SB3 B2-B3 UTILITY 584
EQ SASGNS UTILITY 585
SA4 B2-1 . 1, SS UTILITY 586
SA2 X4+0 UTILITY 587
RJ SSTOSF UTILITY 588
EQ SASGNSF UTILITY 589
+ SA2 B2-1 . 4, SF UTILITY 590
BX6 X2 UTILITY 591
EQ SASGNSF UTILITY 592
+ SX2 ITY . 6, I UTILITY 593
SA1 B2-1 UTILITY 594
SASGNI1 LX2 55 UTILITY 595
MX0 6 UTILITY 596
BX1 -X0*X1 UTILITY 597
BX6 X1+X2 UTILITY 598
EQ SASGN2 UTILITY 599
+ SA1 B2-1 . 9, A,D,N,C UTILITY 600
BX6 X1 UTILITY 601
JP SASGN2 UTILITY 602
+ EQ SASGNP . 11, P UTILITY 603
+ SA4 B2-1 . 12, SI UTILITY 604
SA1 X4+1 UTILITY 605
SX2 ITY UTILITY 606
EQ SASGNI1 UTILITY 607
+ SA2 B2-1 . 14, R UTILITY 608
SA1 B7 UTILITY 609
BX6 X2 UTILITY 610
NZ X1,SASGNR1 . GET A FREE WORD AND STORE UTILITY 611
RJ MORFREE . THE REAL VALUE THERE UTILITY 612
SASGNR1 SB7 X1 UTILITY 613
SA6 A1 UTILITY 614
SX7 A1-2 UTILITY 615
IX6 X7+X4 UTILITY 616
EQ SASGN2 UTILITY 617
SASGNIO SA1 X3 . I/O ASSOCIATED UTILITY 618
SB4 B4+INTY*4 UTILITY 619
SA6 X1 . PERFORM ASSIGNMENT UTILITY 620
* UTILITY 621
* TRACER CODE HERE TOO UTILITY 622
* UTILITY 623
TRACER2 EQ B0,B4,SASSIGN . READY IF INPUT UTILITY 624
BX1 X6 . TEST TYPE TO BE OUTPUT UTILITY 625
AX6 55 UTILITY 626
SX6 X6-SSTY . CHECK FOR STRING TYPE UTILITY 627
NZ X6,SASGNO1 UTILITY 628
SASGNO2 SB3 X3 UTILITY 629
RJ OUTPUT . CALL OUTPUT UTILITY 630
EQ SASSIGN . AND RETURN UTILITY 631
* UTILITY 632
SASGNO1 SB4 X3 . TEST TYPE TO BE OUTPUT UTILITY 633
LX1 6 . MASK VALUE PART OFF UTILITY 634
SX7 X6-ITY+SSTY UTILITY 635
NZ X7,ERR52 . ERROR IF NOT INTEGER UTILITY 636
SB2 A6 . SAVE X3,A6 UTILITY 637
AX1 6 . EXTEND THE SIGN UTILITY 638
RJ ITOSF . CONVERT IT INTO STRING UTILITY 639
SX0 SSTY UTILITY 640
LX0 55 UTILITY 641
SX3 B4 UTILITY 642
BX6 X6+X0 . STORE SS TYPE RESULT UTILITY 643
SA6 B2 UTILITY 644
EQ SASGNO2 . GO AND OUTPUT IT UTILITY 645
* UTILITY 646
SASGNS SB2 B2-1 . PROCESS S TYPE UTILITY 647
SB3 B3+1 . BY CONVERTING IT INTO SF FORM UTILITY 648
RJ STOSFX6 UTILITY 649
SASGNSF SX0 SSTY . PROCESS SF TYPE UTILITY 650
LX0 55 UTILITY 651
BX6 X6+X0 . MERGE IN SS TYPE UTILITY 652
* SVD TO BE ASSIGNED TO X3 IS IN X6 NOW... UTILITY 653
SASGN2 RJ FREESVD UTILITY 654
SASGN3 LT B4,B0,SASGNIO . BRANCH IF INTY/OUTTY UTILITY 655
SA6 X3 . PERFORM ACTUAL ASSIGNMENT UTILITY 656
PL X4,SASSIGN . RETURN IF NO TRACING UTILITY 657
* TRACER CODE MAY BE INSERTED HERE UTILITY 658
* UTILITY 659
* UTILITY 660
SASGNP MX0 5 . PROCESS P TYPE UTILITY 661
SB3 X4 UTILITY 662
SX1 B7 . FIRST UTILITY 663
BX7 X0*X4 UTILITY 664
MX0 42 UTILITY 665
AX4 18 . PARAMETER OF PA UTILITY 666
SB3 B2-B3 UTILITY 667
BX7 X7+X1 . PACK FIRST AND TYPE TO X7 UTILITY 668
BX4 -X0*X4 UTILITY 669
SB3 B3+1 UTILITY 670
LX4 36 UTILITY 671
SASGNP1 SA1 B7+0 . GET NEXT FREE WORD UTILITY 672
NZ X1,SASGNP2 UTILITY 673
RJ MORFREE UTILITY 674
SASGNP2 SA2 B3+0 . FETCH PATTERN WORD UTILITY 675
LX2 42 UTILITY 676
BX6 X2*X0 . CONVERT IT INTO LIST FORMAT UTILITY 677
SB3 B3+1 UTILITY 678
EQ B2,B3,SASGNP3 . END LOOP UTILITY 679
SX1 X1 UTILITY 680
SB7 X1 UTILITY 681
BX6 X6+X1 . ADD LINK TO THE WORD UTILITY 682
SA6 A1 . AND STORE UTILITY 683
EQ SASGNP1 UTILITY 684
SASGNP3 SA6 A1 . STORE LAST WORD WITH 0 LINK UTILITY 685
SB7 X1 UTILITY 686
SX1 A1 UTILITY 687
BX7 X7+X4 UTILITY 688
LX1 18 . PACK PA PARAMETER AND LAST UTILITY 689
BX6 X7+X1 . INTO THE DESCRIPTOR UTILITY 690
EQ SASGN2 . GO TO ASSIGN IT UTILITY 691
* UTILITY 692
* UTILITY 693
TITLE INDIRECT SEARCH UTILITY 694
* GO INDIRECT THROUGH TOP OPERAND, RETURN UTILITY 695
* ABS ADDRESS OF VARIABLE IN X1 UTILITY 696
* TOP OPERAND IS DESTROYED UTILITY 697
* UTILITY 698
INDRCT NO UTILITY 699
+ SA2 INDCWD . SWITCH ON THE TYPE OF TOPOPERAND UTILITY 700
SB3 INDCSW UTILITY 701
EQ CHEK UTILITY 702
* UTILITY 703
INDCWD SWITCH INDCSW,5,4,6,6,0,0,0,3,0,0,0,1,0,0,0 UTILITY 704
* UTILITY 705
+ ERROR 33 . 0, P,A,D,C,R UTILITY 706
+ SA1 B6-1 . 1, N UTILITY 707
SB6 B6-2 . RETURN NAME AND REMOVE TOPOPERAND UTILITY 708
SX1 X1 UTILITY 709
EQ INDRCT UTILITY 710
+ RJ ITOS . 3, I UTILITY 711
+ RJ SCATS . 4, S UTILITY 712
+ SA4 B6-1 . 5, SF UTILITY 713
EQ INDR1 UTILITY 714
+ SA4 B6-1 . 6, SS,SI UTILITY 715
SA4 X4+0 UTILITY 716
INDR1 SX0 VARTYP . SET UP SEARCH CALL FOR A VARIABLE UTILITY 717
RJ INDRX UTILITY 718
NE B3,B0,INDR8 UTILITY 719
RJ ZROX7 . ASSIGN NULL VALUE UTILITY 720
SX1 X3+1 . IF NEW VARIABLE UTILITY 721
SA7 X3+1 UTILITY 722
INDR8 SB6 B6-2 UTILITY 723
NE B4,B0,INDRCT . END IF NOT SF UTILITY 724
SX7 B7 UTILITY 725
SB7 X4 UTILITY 726
AX4 18 UTILITY 727
SA7 X4 UTILITY 728
EQ INDRCT UTILITY 729
* UTILITY 730
* FIND HBWN WITH TYPE AS INDICATED IN X0, AND NAME AS UTILITY 731
* INDICATED BY THE STRING WITH SVD IN X4 AND AT THE TOP UTILITY 732
* OF THE STACK. UTILITY 733
* PARAM: B4 = 0 IFF TOP OF STACK IS SF UTILITY 734
* X4 SVD UTILITY 735
* RESULT: X1 POINTS TO THE VALUE WORD OF THE HBWN UTILITY 736
* B3 = 0 IFF IT IS A NEW HBWN UTILITY 737
* UTILITY 738
INDRX NO UTILITY 739
+ BX1 X4 UTILITY 740
SB5 X4 UTILITY 741
AX1 36 UTILITY 742
LX0 55 UTILITY 743
SB3 X1 . LENGTH TO B3 UTILITY 744
SX5 X1 UTILITY 745
LX5 36 UTILITY 746
BX5 X5+X0 . PREPARE HBWN WORD 0 UTILITY 747
EQ B3,B0,ERR27 . ERROR IF NULL STRING UTILITY 748
RJ SEARCH UTILITY 749
NZ X1,INDRX . BRANCH IF FOUND UTILITY 750
SX1 B3+6 . 6 IS TO ROUND OFF UTILITY 751
PX1 X1 UTILITY 752
SB5 A2 . SAVE ADDRESS OF X2 UTILITY 753
SA4 SEVEN UTILITY 754
FX1 X1/X4 UTILITY 755
UX6 X1,B2 UTILITY 756
LX6 X6,B2 . NUMBER OF WORDS FOR THE NAME UTILITY 757
BX4 X2 . SAVE LAST HASH LIST WORD UTILITY 758
SB1 X6+2 . ALLOW FOR HEADING AND VALUE WORD UTILITY 759
RJ RESHB UTILITY 760
SX0 B3 . BASE FOR THE NEW HB UTILITY 761
BX7 X0+X4 UTILITY 762
NG X4,INDR2 UTILITY 763
NG X3,INDR2 UTILITY 764
LX7 30 UTILITY 765
INDR2 SA7 B5 . UPDATE HASH LIST UTILITY 766
SA4 B6-1 . FETCH OPERAND AFRESH UTILITY 767
SX3 B3 . HB BASE TO X3 UTILITY 768
EQ B0,B4,INDR5 . BYPASS IF SF UTILITY 769
SA4 X4+0 UTILITY 770
INDR5 SX1 X3+3 UTILITY 771
SX6 X4 UTILITY 772
INDR6 SA2 X6 . NEXT WORD UTILITY 773
SX6 X2+0 UTILITY 774
BX7 X2-X6 UTILITY 775
ZR X6,INDR7 . END OF LIST UTILITY 776
BX7 X7+X1 UTILITY 777
SA7 X1-1 . STORE WORD IN STATIC UTILITY 778
SX1 X1+1 UTILITY 779
EQ INDR6 UTILITY 780
INDR7 SA7 X1-1 . STORE LAST WORD UTILITY 781
IX7 X1-X3 UTILITY 782
LX7 18 UTILITY 783
BX6 X5+X7 UTILITY 784
SX1 X3+1 UTILITY 785
SA6 X3 . STORE HEADING UTILITY 786
SB3 B0 . INDICATE NEW RECORD IN B3 UTILITY 787
EQ INDRX UTILITY 788
* UTILITY 789
SEVEN DATA 7.0 . NUMBER OF CHARACTERS IN A WORD UTILITY 790
TITLE SEARCH ROUTINE UTILITY 791
* FIND HBWN WITH TYPE X0 AND NAME AS INDICATED BY UTILITY 792
* THE LIST STARTING AT B5. B3 CONTAINS THE NUMBER OF UTILITY 793
* CHARACTERS IN THE NAME. IF B3 IS NEGATIVE, NO SEARCH UTILITY 794
* IS DONE AND THE HASH CODE IS RETURNED IN X2. UTILITY 795
* RESULTS: X1 =0 IF NO HBWN WAS FOUND OR UTILITY 796
* X1 POINTS TO THE VALUE WORD OF THE HBWN UTILITY 797
* X2(A2) AND X3 RETURN INFORMATION NECESSARY UTILITY 798
* FOR INSERTING A NEW HBWN INTO THE HASH LIST. UTILITY 799
* X0,X1,X2,X3,X6,X7,B2,B3,B5 UTILITY 800
* UTILITY 801
SEARCH NO UTILITY 802
+ MX7 42 . X7 IS A MASK AND A FLAG UTILITY 803
BX2 X2-X2 UTILITY 804
SB2 B5 UTILITY 805
MX6 2 UTILITY 806
LX6 58 UTILITY 807
BX6 X0*X6 . BYPASS IF TYPE IS NOT INTEGER UTILITY 808
NZ X6,SEARCH1 . OR REAL CONSTANT UTILITY 809
SA2 B5 UTILITY 810
MX7 12 UTILITY 811
BX2 -X7*X2 . MASK 48 BITS OFF UTILITY 812
BX7 X7-X7 . SET FLAG UTILITY 813
EQ SEARCH2 UTILITY 814
SEARCH1 SA1 B2 . OTHERWISE EXOR THE WORDS IN UTILITY 815
SB2 X1+0 . THE NAME TOGETHER UTILITY 816
BX2 X2-X1 UTILITY 817
NE B2,B0,SEARCH1 UTILITY 818
BX2 X2*X7 . AND MASK 42 BITS OFF UTILITY 819
LX2 42 UTILITY 820
SEARCH2 SA3 HASHLWD . THE HASH FUNCTION IS A SIMPLE UTILITY 821
PX2 X2 . INTEGER DIVISION UTILITY 822
FX1 X2/X3 UTILITY 823
UX1 X1,B2 UTILITY 824
LX1 X1,B2 UTILITY 825
PX1 X1 UTILITY 826
NX1 X1 UTILITY 827
FX3 X1*X3 UTILITY 828
FX2 X2-X3 UTILITY 829
UX2 X2,B2 UTILITY 830
LX3 X2,B2 . HASHTABLE INDEX TO X3 UTILITY 831
LX3 59 UTILITY 832
MX6 5 UTILITY 833
SA2 X3+HASHTBL . START OF THE LIST OF HBWN-S UTILITY 834
NG X3,SEARCHA . OR HBL-S WITH THIS HASH CODE UTILITY 835
LX2 30 . TO X2 UTILITY 836
SEARCHA LT B3,B0,SEARCH . RETURN HASH CODE ONLY UTILITY 837
SEARCH3 SX1 X2 . SEARCH LOOP UTILITY 838
ZR X1,SEARCH . END OF THE CHAIN RETURN NOT FOUND UTILITY 839
SA2 X1 UTILITY 840
BX3 X2 UTILITY 841
AX3 36 UTILITY 842
SB2 X3 . CHECK LENGTH OF NAME UTILITY 843
NE B2,B3,SEARCH3 UTILITY 844
BX3 X0-X2 UTILITY 845
BX3 X3*X6 . CHECK TYPE UTILITY 846
NZ X3,SEARCH3 UTILITY 847
SB2 A2+2 UTILITY 848
PL X7,SEARCH5 . BYPASS IF INTEGER OR REAL CONST. UTILITY 849
SX1 B5+0 UTILITY 850
SEARCH4 SX1 X1 UTILITY 851
ZR X1,SEARCH3 . END OF THE NAME UTILITY 852
SA3 B2 UTILITY 853
SA1 X1 . NEXT WORD IN NAME UTILITY 854
SB2 X3 UTILITY 855
BX3 X1-X3 UTILITY 856
BX3 X3*X7 . COMPARE THE CHARACTERS ONLY UTILITY 857
NZ X3,SEARCH3 UTILITY 858
NE B0,B2,SEARCH4 . THERE ARE MORE WORDS UTILITY 859
SX1 X1+0 UTILITY 860
NZ X1,SEARCH3 UTILITY 861
SEARCH6 SX1 A2+1 . RETURN FOUND UTILITY 862
EQ SEARCH UTILITY 863
SEARCH5 SA1 B5 . FOR CONSTANTS COMPARE VALUES UTILITY 864
SA3 B2 UTILITY 865
BX3 X1-X3 UTILITY 866
NZ X3,SEARCH3 UTILITY 867
EQ SEARCH6 UTILITY 868
* UTILITY 869
* UTILITY 870
* UCAT UTILITY 871
* CONCATENATE THE STRING WITH (SS OR SF) SVD IN X6 UTILITY 872
* TO THE SF STRING WITH SVD AT MINHS, AND LEAVE UTILITY 873
* THE SVD OF THE RESULT AT MINHS. IF THE ARGUMENT IS UTILITY 874
* SF, IT WILL BE RELEASED. UTILITY 875
* PARAM: X6 CONTAINS THE SVD OF THE RIGHT OPERAND UTILITY 876
* ALL REGISTERS ARE DESTROYED EXCEPT A0,A5,B6,B7 UTILITY 877
* UTILITY 878
UCAT DATA 0 UTILITY 879
SA1 MINHS UTILITY 880
SA4 X1+0 . SVD OF LEFT OPERAND UTILITY 881
SA6 X1+1 . STORE SVD OF RIGHT OP UTILITY 882
AX4 18 UTILITY 883
SB5 UCATR . RETURN ADDRESS UTILITY 884
SA4 X4 . FETCH LAST WORD OF LEFT OPERAND UTILITY 885
BX2 X6 . PARAMETERS FOR CTSFSS0 UTILITY 886
SB3 B0 UTILITY 887
JP CTSFSS0 . PERFORM CONCATENATION UTILITY 888
UCATR SA1 MINHS UTILITY 889
SA7 X3 . STORE LAST WORD UTILITY 890
SA4 X1 . LEFT OPERAND UTILITY 891
SA2 X1+1 . RIGHT OPERAND UTILITY 892
BX1 X2 UTILITY 893
AX2 55 UTILITY 894
NZ X2,UCAT1 . RELEASE RIGHT OP IF SF UTILITY 895
SX7 B7 UTILITY 896
BX2 X1 UTILITY 897
SB7 X1 UTILITY 898
AX2 18 UTILITY 899
SA7 X2+0 UTILITY 900
UCAT1 AX1 36 . LENGTH OF RIGHT OP UTILITY 901
BX1 -X0*X1 . MX0 42 IN SUBROUTINE UTILITY 902
LX3 18 . ADDRESS OF LAST WORD UTILITY 903
LX0 18 UTILITY 904
LX1 36 UTILITY 905
BX6 X0*X4 UTILITY 906
IX6 X1+X6 . TOTAL LENGTH UTILITY 907
BX6 X6+X3 . PACK LAST INTO RESULT SVD UTILITY 908
SA6 A4 . STORE RESULT UTILITY 909
JP UCAT UTILITY 910
* UTILITY 911
EJECT UTILITY 912
* UTILITY 913
* FREESTR UTILITY 914
* RELEASE VALUE DESCRIBED IN SVD. THIS SUBROUTINE IS UTILITY 915
* SLOW AND SHOULD BE USED TO RELEASE STRUCTURES. UTILITY 916
* SINCE THE RELEASE OF ONE ELEMENT IN A STRUCTURE MAY UTILITY 917
* TRIGGER THE RELEASE OF ANOTHER STRUCTURE, A RECURSIVE UTILITY 918
* ALGORITHM SIMILAR TO THE ONE IN WSVD IS EMPLOYED UTILITY 919
* X3, B3 AND B4 HAVE THE SAME ASSIGNMENT AS B1, B2 AND B3 UTILITY 920
* IN WSVD. UTILITY 921
* PARAM: B3 POINTS TO THE SVD UTILITY 922
* X0,X1,X2,X3,X7,B3,B4 UTILITY 923
* UTILITY 924
FREESTR DATA 0 UTILITY 925
SB4 B3+1 . SEE ALSO WSVD UTILITY 926
SX3 -1 UTILITY 927
* UTILITY 928
FSTRA SA1 B3 . FETCH NEXT SVD UTILITY 929
BX2 X1 . DISPATCH ON TYPE UTILITY 930
AX1 55 UTILITY 931
SX7 B7 . PREPARE FOR LIST RELEASE UTILITY 932
SX0 X1-ITY UTILITY 933
NG X0,FSTRB . LIST STRUCTURE UTILITY 934
ZR X0,FSTRC . IGNORE INTEGER UTILITY 935
SX0 X1-RTY UTILITY 936
ZR X0,FSTRE . REAL NUMBER (IN LS) UTILITY 937
SX0 X1-CTY UTILITY 938
NG X0,FSTRD . BRANCH IF ATY, DTY OR NTY UTILITY 939
ZR X0,FSTRC . IGNORE CODE UTILITY 940
* RELEASE INTY/OUTTY UTILITY 941
BX1 X2 UTILITY 942
RJ DECFIL . DECREMENT FILE REF. COUNT UTILITY 943
SB7 X2 . RELEASE VALUE SVD UTILITY 944
SA2 X2 UTILITY 945
SA7 B7 UTILITY 946
SX7 B7 UTILITY 947
* UTILITY 948
FSTRB SB7 X2 . RELEASE LIST STRUCTURE UTILITY 949
AX2 18 UTILITY 950
SA7 X2+0 UTILITY 951
FSTRC SB3 B3+1 UTILITY 952
LT B3,B4,FSTRA . PROCEED TO NEXT SVD IF NOT END UTILITY 953
NG X3,FREESTR . EXIT IF OUTERMOST LEVEL UTILITY 954
* UTILITY 955
* RESTORE B3 TO POINT TO WORD 0 OF CURRENT BLOCK UTILITY 956
SA1 X3 UTILITY 957
AX1 18 UTILITY 958
SB3 X1 UTILITY 959
* RETURN STORAGE FROM B3 TO B4-1 TO FREE HEAP BLOCK POOL UTILITY 960
RJ FREEHB UTILITY 961
* RESTORE OLD X3, B3 AND B4 UTILITY 962
SB3 X3 . RESTORE OLD B3 UTILITY 963
SA1 X3 . FETCH SVD AT X3 UTILITY 964
LX1 24 UTILITY 965
SX3 X1 . RESTORE OLD X3 FROM F3 UTILITY 966
NG X3,FREESTR . EXIT IF OUTERMOST LEVEL UTILITY 967
SA1 X1 . FETCH OLD SVD UTILITY 968
AX1 18 UTILITY 969
SA2 X1 . WORD 0 OF OLD STRUCTURE UTILITY 970
AX2 18 UTILITY 971
SA1 X2 UTILITY 972
SB4 X1 . SIZE OF OLD STRUCTURE TO B4 UTILITY 973
SB4 B4+A2 UTILITY 974
JP FSTRC UTILITY 975
* UTILITY 976
* FIND WORD 0 OF STRUCTURE REFERENCED BY ATY, DTY OR NTY UTILITY 977
FSTRD LX2 60-18 UTILITY 978
SX1 X2 UTILITY 979
ZR X1,FSTRC . IGNORE SIMPLE VARIABLE NAME UTILITY 980
SA1 X1 . WORD 0 TO X1 UTILITY 981
MX0 1 UTILITY 982
LX0 60-2 UTILITY 983
BX7 X1*X0 UTILITY 984
ZR X7,FSTRC . IGNORE BLOCK IF ALREADY FREE UTILITY 985
MX0 59 . =-1 UTILITY 986
IX7 X1+X0 . DECREMENT REFERENCE COUNT UTILITY 987
SX0 X7 UTILITY 988
SA7 A1 UTILITY 989
NZ X0,FSTRC . IGNORE IF REF. COUNT NOT ZERO UTILITY 990
SX0 5 . MASK TO CHANGE 10111 INTO 10010 UTILITY 991
LX0 60-5 . FRETYP IS 10010 UTILITY 992
BX7 X7-X0 . MAKE CURRENT BLOCK LOOK FREE UTILITY 993
SA7 A1 UTILITY 994
LX2 60-18 UTILITY 995
MX0 42 UTILITY 996
BX3 -X0*X3 . PACK X3 INTO F3 OF SVD UTILITY 997
BX7 X0*X2 UTILITY 998
BX7 X7+X3 UTILITY 999
LX7 36 UTILITY 1000
SX3 B3 . NEW X3 UTILITY 1001
SA7 B3 UTILITY 1002
AX1 18 UTILITY 1003
SA2 X1 . SIZE OF NEW STRUCTURE TO X2 UTILITY 1004
SB3 A1 . ADDRESS OF WORD 0 UTILITY 1005
SB4 B3+X2 . ADDRESS OF LAST WORD+1 UTILITY 1006
JP FSTRC UTILITY 1007
* UTILITY 1008
* RELEASE LS FOR RTY... UTILITY 1009
FSTRE SA7 X2 UTILITY 1010
SB7 X2 UTILITY 1011
EQ FSTRC UTILITY 1012
EJECT UTILITY 1013
* UTILITY 1014
* DECFIL UTILITY 1015
* CODE TO RELEASE BUFFER OF INTY/OUTTY SVD UTILITY 1016
* PARAM: X1,F2 POINTS TO WORD 0 OF A FILTYP HB UTILITY 1017
* RESULT: X7 CONTAINS B7 UTILITY 1018
* X0,X1,X7 UTILITY 1019
DECFIL DATA 0 UTILITY 1020
MX0 59 . =-1 UTILITY 1021
AX1 18 UTILITY 1022
SA1 X1+1 . FETCH REF. COUNT UTILITY 1023
IX7 X1+X0 . DECREMENT IT UTILITY 1024
SX1 X7 UTILITY 1025
SA7 A1 UTILITY 1026
NZ X1,DECFIL1 UTILITY 1027
RJ SCHHBC . SCHEDULE HBC IF HIT 0 UTILITY 1028
DECFIL1 SX7 B7 UTILITY 1029
EQ DECFIL UTILITY 1030
* UTILITY 1031
* SCHHBC UTILITY 1032
* SCHEDULE A HEAP BLOCK COMPACTION AT THE END OF THE UTILITY 1033
* CURRENT RULE. UTILITY 1034
* X1,X7 UTILITY 1035
* UTILITY 1036
SCHHBC DATA 0 UTILITY 1037
SA1 STATWD UTILITY 1038
SX7 STATHBC . SET HBC BIT IN STATUS UTILITY 1039
BX7 X7+X1 UTILITY 1040
SA7 A1 UTILITY 1041
SX7 0 . SET INTERRUPT UTILITY 1042
SA7 INTRPT UTILITY 1043
EQ SCHHBC UTILITY 1044
END UTILITY 1045