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