| 1 | / OS/8 F4 LOADER, V24A |
| 2 | / |
| 3 | / |
| 4 | / |
| 5 | / |
| 6 | / |
| 7 | / |
| 8 | / |
| 9 | // |
| 10 | / |
| 11 | / |
| 12 | / |
| 13 | / |
| 14 | /COPYRIGHT (C) 1974, 1975 |
| 15 | /DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. |
| 16 | / |
| 17 | / |
| 18 | / |
| 19 | /THIS SOFTWARE IS FURNISHED UNDER A LICENSE FOR USE ONLY ON A |
| 20 | /SINGLE COMPUTER SYSTEM AND MAY BE COPIED ONLY WITH THE INCLU- |
| 21 | /SION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE, OR ANT OTHER |
| 22 | /COPIES THEREOF, MAY NOT BR PROVIDED OR OTHERWISE MADE AVAILABLE |
| 23 | /TO ANY OTHER PERSON EXCEPT FOR USE ON SUCH SYSTEM AND TO ONE WHO |
| 24 | /AGREES TO THESE LICENSE TERMS. TITLE TO AND OWNERSHIP OF THE |
| 25 | /SOFTWARE SHALL AT ALL TIMES REMAIN IN DEC. |
| 26 | / |
| 27 | / |
| 28 | /THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT |
| 29 | /NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL |
| 30 | /EQUIPMRNT COROPATION. |
| 31 | / |
| 32 | /DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS |
| 33 | /SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC. |
| 34 | / |
| 35 | / |
| 36 | / |
| 37 | / |
| 38 | / |
| 39 | / |
| 40 | \f/ |
| 41 | / FIXES FOR V23 J.K. 1975 |
| 42 | / |
| 43 | / .CORE ROUTINE- RECONIZE CORE RESTRICTION |
| 44 | / |
| 45 | / |
| 46 | / |
| 47 | / CHAMGES FOR OS/8 V3D AND OS/78 BY P.T. |
| 48 | / .CHANGED VERSION NUMBER TO 24A |
| 49 | / .PUT IN NEW DATE ALGORITHM |
| 50 | / |
| 51 | / |
| 52 | VERNUM=24 |
| 53 | PATCH="A |
| 54 | |
| 55 | ESDPG= 7400 /START OF ESD REFERENCE PG IN FIELD 1 |
| 56 | LHDR= 7200 /WD0 IN CORE OF LDR HDR IN FIELD 1 |
| 57 | OS8SWS= 7643 |
| 58 | OSJSWD= 7746 |
| 59 | OS8DCB= 7760 |
| 60 | OSDATE= 7666 |
| 61 | AC7776= CLL STA RAL |
| 62 | AC7775= CLL STA RTL |
| 63 | AC4000= CLA STL RAR |
| 64 | AC2000= CLA STL RTR |
| 65 | AC0002= CLA STL RTL |
| 66 | |
| 67 | / PASS0 DEFINITIONS |
| 68 | / ----- ----------- |
| 69 | |
| 70 | MCTTBL= 6000 /MODULE COUNT TABLE BASE |
| 71 | OVTLEN= 2^20^7+2+1 /2 WORDS/OVERLAY, 2 FOR MAIN & 1 FGL |
| 72 | OVLTBL= MCTTBL-OVTLEN /(FGL = FOR GOOD LUCK) |
| 73 | MODTBL= 21^7+MCTTBL+3 /START OF MODULE TABLE |
| 74 | NUMMOD= 7200-MODTBL%3 /NUMBER OF ENTRIES IN MODULE TABLE |
| 75 | PTRIO= NDX6 /FLD1;INIT SET TO 7617-1 |
| 76 | RALFBF= 7000 /FLD1;BLK TO READ"ESD"FOR FILE CHK |
| 77 | \f/LOADER IMAGE HEADER BLOCK DUMMY SECTION |
| 78 | |
| 79 | NOPUNCH |
| 80 | *LHDR |
| 81 | 2 /LOADER IMAGE FILE ID |
| 82 | QRTSWP, ZBLOCK 2 /SWAPPER ARGS TO LOAD AND START USER MAIN |
| 83 | QHGHAD, ZBLOCK 2 /HIGHEST ADDRESS USED BY THIS PROGRAM |
| 84 | QVERNO, 0 /LOADER VERSION NUMBER |
| 85 | QDPFLG, 0 /"D.P. HARDWARE REQUIRED" FLAG |
| 86 | QUSRLV, ZBLOCK 40 /USER OVERLAY LEVEL DSRN INFO |
| 87 | LDBUFS, ZBLOCK 50 /PASS2 BUFFER POINTERS |
| 88 | ENPUNCH |
| 89 | |
| 90 | |
| 91 | /RTS ENTRY POINTS |
| 92 | /** SOME OF THESE MAY CHANGE IN FUTURE VERSIONS OF RTS ** |
| 93 | /** (I HOPE NOT) |
| 94 | |
| 95 | JARGER= 204 |
| 96 | JBAK= 210 |
| 97 | JDATE= 203 |
| 98 | JDEF= 213 |
| 99 | JDISMS= 412 |
| 100 | JENDF= 211 |
| 101 | JEOFSW= 16 |
| 102 | JEXIT= 223 |
| 103 | JHANG= 524 |
| 104 | JIDLE= 227 |
| 105 | JINT= 403 |
| 106 | JRDAO= 217 |
| 107 | JREADO= 221 |
| 108 | JRENDO= 206 |
| 109 | JRETRN= 235 |
| 110 | JREW= 212 |
| 111 | JRSVO= 207 |
| 112 | JRUO= 215 |
| 113 | JSWAP= 222 |
| 114 | JT812= 225 |
| 115 | JUERR= 204 |
| 116 | JWDAO= 216 |
| 117 | JWRITO= 220 |
| 118 | JWUO= 214 |
| 119 | \f *0 |
| 120 | TMP0, 0 /TMP0-TMP4 FOR GEN. USE |
| 121 | TMP1, 0 |
| 122 | TMP2, 0 |
| 123 | TMP3, 0 |
| 124 | |
| 125 | *10 /INDEX REGISTERS |
| 126 | NDX0, 0 |
| 127 | NDX1, 0 |
| 128 | NDX2, 0 |
| 129 | NDX3, 0 |
| 130 | NDX4, 0 |
| 131 | NDX5, 0 |
| 132 | NDX6, 0 |
| 133 | NDX7, OVLTBL-1 /POINTER INTO OVERLAY LENGTH TABLE |
| 134 | |
| 135 | USR, 200 /USR CALL: COULD BE 200 OR 7700 |
| 136 | PPACK, PACK /CHANGED TO TTYO BY ERROR ROUTINE |
| 137 | IOFLG, 0 |
| 138 | SYMTM3, SYMTBL-3 |
| 139 | ORGFLG, 0 |
| 140 | RFPTR1, 0 |
| 141 | GPTR, 0 |
| 142 | LBPTR, 0 |
| 143 | TRPCNT, 0 |
| 144 | P2FLG, 0 |
| 145 | CZFLG, 0 |
| 146 | F1FLG, 0 |
| 147 | S8FLG, 0 |
| 148 | OVRFLO, -1 |
| 149 | SWITZ, -1 |
| 150 | SVMAIN, -4 /0 IF /S SPECIFIED |
| 151 | DPFLG, 0 |
| 152 | |
| 153 | \f/MORE PAGE ZERO LOCATIONS |
| 154 | GTYP, 0 |
| 155 | EPTR, 0 |
| 156 | EPT2, 0 |
| 157 | ETYP, 0 |
| 158 | BPTR, 0 |
| 159 | BPT2, 0 |
| 160 | REFPTR, 0 |
| 161 | RLEN, 0 |
| 162 | FTMP0, 0;0 |
| 163 | RBLK, 0 |
| 164 | FATAL, 0 |
| 165 | BP, LDBUFS /POINTER INTO PASS2 BUFFER ARRAY |
| 166 | A1, 1;0 /CURRENT ADDRESS IN FIELDS 1-7 |
| 167 | LNONUM, 0 |
| 168 | LBCNT, 0 |
| 169 | BLKCNT, 0 |
| 170 | TRAPV, 0;0 |
| 171 | BLKSIZ, 0 |
| 172 | BSECTP, 0 /POINTER INTO BINARY SECTION TABLE (PASS 2) |
| 173 | OUTINH, 0 |
| 174 | BLKBEG, 0 |
| 175 | NEWBLK, 0 |
| 176 | NEWLEN, 0 |
| 177 | MCNT, 0 |
| 178 | MBGCNT, 0 |
| 179 | TMP4, 0 |
| 180 | TMP5, 0 |
| 181 | PAGE |
| 182 | \f/LOADER STARTS AT 200 |
| 183 | |
| 184 | ISZ .+2 /NON-CHAIN ENTRY |
| 185 | JMP I .+1 /CHAIN ENTRY |
| 186 | START |
| 187 | |
| 188 | /COME HERE TO READ/WRITE THE LOADER IMAGE. |
| 189 | |
| 190 | LDRIO, 0 /AC=4000 FOR WRITE, 0 FOR READ |
| 191 | DCA LDRIOC /STORE READ/WRITE |
| 192 | JMS I (NEWBUF |
| 193 | TAD BP |
| 194 | DCA LDRIOA |
| 195 | ISZ LDRIOA |
| 196 | TAD I LDRIOA |
| 197 | DCA LDRIOB /BLOCK # |
| 198 | ISZ LDRIOA |
| 199 | TAD I LDRIOA /NUMBER OF BLOCKS LEFT IN SECTION |
| 200 | SPA SNA |
| 201 | JMP LDRIOR /NULL BUFFER - JUST IN CASE |
| 202 | TAD [-4 |
| 203 | SMA |
| 204 | CLA /IF >4 BLOCKS LEFT ONLY DO 4 |
| 205 | TAD [4 |
| 206 | CLL RTR |
| 207 | RTR |
| 208 | RTR |
| 209 | TAD LDRIOC /ADD READ/WRITE |
| 210 | CDF 0 |
| 211 | TAD I (OUTFLD |
| 212 | TAD (-CDF |
| 213 | DCA LDRIOC /STORE R/W + BLOCK COUNT + FLD BITS |
| 214 | TAD BLKBEG |
| 215 | DCA LDRIOA |
| 216 | JMS I [IOHAN /DF MUST BE 0 HERE! |
| 217 | LIMGU /LOADER IMAGE FILE |
| 218 | LDRIOC, 0 |
| 219 | LDRIOA, 0 |
| 220 | LDRIOB, 0 |
| 221 | CDF 10 |
| 222 | LDRIOR, CLA |
| 223 | JMP I LDRIO |
| 224 | \fSETBGX, 0 |
| 225 | CLA IAC |
| 226 | TAD GPTR |
| 227 | JMS SETBPT /EXTREMELY COMMON SEQUENCE |
| 228 | JMP I SETBGX |
| 229 | |
| 230 | SETBPT, 0 |
| 231 | DCA BPTR /STORE BPTR |
| 232 | CLA IAC |
| 233 | TAD BPTR |
| 234 | DCA BPT2 /AND PTR TO NEXT WD |
| 235 | JMP I SETBPT |
| 236 | ORGMSG, TEXT /ILLEGAL ORIGIN/ |
| 237 | SYMMSG, TEXT /OVER SYMB/ |
| 238 | IOMSG, TEXT %LOADER I/O ERROR% |
| 239 | ENTMSG, TEXT %OS/8 ENTER ERROR% |
| 240 | PAGE |
| 241 | \f/TTYHAN- TTY HANDLER FOR OUTPUT OF ANY MESSAGE IN ANY FIELD. |
| 242 | / MESSAGE MUST BE FIELD CONTAINED & TERMINATE WITH 0 |
| 243 | / HANDLER CAN BE CALLED ACROSS FLDS WITH AC CLR. |
| 244 | / RTN WITH"IF & DF" SET TO CALLING FLD. |
| 245 | / |
| 246 | / CALL CDF X /X=FLD OF CALLER*10 |
| 247 | / CIF Y /Y=FLD OF TTYHAN*10 |
| 248 | / JMS TTYHAN |
| 249 | / CDF Z /Z=FLD OF MESS.BUF |
| 250 | / BUFADR /MESS BUF. ADDR. |
| 251 | / |
| 252 | TTYHAN, 0 |
| 253 | TAD (6203 /SETUP MICRO INSTR |
| 254 | RDF /CDF & CIF FOR RTN |
| 255 | DCA CRLFF+1 |
| 256 | TAD I TTYHAN /SET UP FLD OF |
| 257 | DCA TTYCDF /MESS BUF |
| 258 | ISZ TTYHAN |
| 259 | CMA |
| 260 | TAD I TTYHAN /SET UP MESS BUFF ADDR-1 |
| 261 | DCA MESADR |
| 262 | ISZ TTYHAN |
| 263 | DCA MESADR+1 |
| 264 | TTYCDF, 0 |
| 265 | JMS CRLF |
| 266 | TTYLP, ISZ MESADR+1 |
| 267 | JMP .+3 |
| 268 | TAD I MESADR |
| 269 | JMP HAF |
| 270 | ISZ MESADR |
| 271 | CLA CMA |
| 272 | DCA MESADR+1 |
| 273 | TAD I MESADR |
| 274 | RTR |
| 275 | RTR |
| 276 | RTR |
| 277 | HAF, AND [77 |
| 278 | SNA |
| 279 | JMP CRLFF |
| 280 | TAD [240 |
| 281 | AND [77 |
| 282 | TAD [240 |
| 283 | JMS TTYO |
| 284 | JMP TTYLP |
| 285 | CRLFF, JMS CRLF |
| 286 | 0 |
| 287 | JMP I TTYHAN |
| 288 | MESADR, 0 |
| 289 | 0 |
| 290 | \fRTNOS8, 0 /HERE ON PASS1 FATAL ERROR |
| 291 | STA |
| 292 | CDF 10 |
| 293 | DCA I (OVLTBL /PRINT SYMBOL MAP W/O OVERLAY LENGTH TABLE |
| 294 | DOMAP, JMS I (SYMMAP |
| 295 | CDF |
| 296 | TAD I RTNOS8 /ADDR OF TTY |
| 297 | DCA .+3 /MSG |
| 298 | JMS I [TTYHAN |
| 299 | CDF |
| 300 | 0 |
| 301 | TAD (TTYO |
| 302 | DCA PPACK /FAKE OUT SYMBOL PRINTER |
| 303 | TAD LNONUM |
| 304 | DCA GTYP /PUT LEVEL AND OVERLAY IN GTYP |
| 305 | JMS I (CVLOVL /OUTPUT LEVEL AND OVERLAY |
| 306 | AC7775 |
| 307 | DCA TMP5 /PRINT 3 DIGIT FILE-WITHIN-OVERLAY |
| 308 | TAD MCNT |
| 309 | TAD MBGCNT |
| 310 | IAC |
| 311 | CLL RTL |
| 312 | RAL |
| 313 | JMS I (CVRT |
| 314 | JMS CRLF /OUTPUT CRLF AFTERWARDS |
| 315 | JMP I .+1 /RTN TO |
| 316 | 7605 /OS8 |
| 317 | |
| 318 | LDRNAM, 1;0617;2224;2216;1404 /SYS:FORTRN.LD |
| 319 | ZBLOCK 5 /NO DEFAULT SYMBOL MAP DEVICE |
| 320 | |
| 321 | TTYO, 0 |
| 322 | TLS |
| 323 | TSF |
| 324 | JMP .-1 |
| 325 | CLA |
| 326 | JMP I TTYO |
| 327 | / |
| 328 | CRLF, 0 |
| 329 | TAD (215 |
| 330 | JMS TTYO |
| 331 | TAD (212 |
| 332 | JMS TTYO |
| 333 | JMP I CRLF |
| 334 | \f/OS8ER- USED WHEN AN OS/8 ERROR OCCURS WHICH IS FATAL |
| 335 | |
| 336 | OS8ER, 0 |
| 337 | CDF 0 |
| 338 | JMS I [TTYHAN |
| 339 | CDF 0 /FLD OF MESS BUF |
| 340 | SYSERR /ADR OFMESS BUF |
| 341 | JMP I [7605 /RTN TO OS8 |
| 342 | |
| 343 | SYSERR, TEXT /SYSTEM ERROR/ |
| 344 | TYTBL, 4040 /CHARS FOR SMAP |
| 345 | 0530 /EX (EXTERN) |
| 346 | 4040 /GOOD TYPES ARE |
| 347 | 4040 /SPACES |
| 348 | 1505 /ME (MUL ENTRY) |
| 349 | 1523 /MS (MUL SECTN) |
| 350 | 4040 /GEN 8MOD SECT |
| 351 | 4040 /8MOD COM SECT |
| 352 | 4040 /8MOD F1 SECT |
| 353 | PAGE |
| 354 | \f/IOHAN- I/O HANDLER 1)FETCHES A OS8 DEVICE HANDLER; |
| 355 | / 2)CHKS FOR E.O.FILE;3)ISSUES CALL TO THE HANDLER. |
| 356 | / RTN TO CALLER WITH "IOFLG" SET IF |
| 357 | / NUM OF BLKS TRANSF LESS THAN REQ AMT. |
| 358 | / CAN BE CALLED FROM ANY FLD |
| 359 | / IF AC=0,DO ALL OF THE ABOVE. |
| 360 | / IF AC=DEV NUM,DO ONLY "FETCH"PART |
| 361 | / |
| 362 | / CALL CDF X |
| 363 | / CIF Y |
| 364 | / JMS IOHAN |
| 365 | / ADDR /PTR TO UNIT,LEN,STBLK OF FILE IN FLD 1 |
| 366 | / ARG(1)/OS8 ARG: FCN CTRL WD |
| 367 | / ARG(2)/ " : TRNASF BUF ADR |
| 368 | / ARG(3)/ " : REL STBLK OF TRANSF |
| 369 | / |
| 370 | IOHAN, 0 |
| 371 | DCA UNITSV /SAV DEV NUM IF ONE |
| 372 | DCA IOFLG /CLR FLG |
| 373 | RDF |
| 374 | TAD P6201 |
| 375 | DCA GETCDF+1 |
| 376 | TAD P6203 /SETUP CIF & CDF FOR |
| 377 | RDF /RTN JMP |
| 378 | DCA RTNIO |
| 379 | /FETCH A DEV HANDLER OR LOOKUP ENTRY PT |
| 380 | /IF DESIRED HANDLER IS IN CORE |
| 381 | TAD UNITSV /GET DEV NUM IF ONE |
| 382 | SNA CLA /JUST A FETCH? |
| 383 | JMP .+3 /NO |
| 384 | JMS INQIRE /YES |
| 385 | JMP RTNIO |
| 386 | TAD I IOHAN /GET PTR TO UNIT(DEV NUM) |
| 387 | DCA ULSADR |
| 388 | CDF 10 |
| 389 | TAD I ULSADR /GET DEV NUM |
| 390 | AND [17 |
| 391 | SNA |
| 392 | JMS I [OS8ER |
| 393 | DCA UNITSV |
| 394 | JMS INQIRE |
| 395 | /CHK FOR E.O.FILE |
| 396 | ISZ IOHAN |
| 397 | JMS GETCDF |
| 398 | TAD I IOHAN /GET FCN CTRL WD |
| 399 | CLL RTL /NUM OF PAGES IS CONVRTED |
| 400 | RTL /TO NUM BLKS & PUT |
| 401 | RTL /IN BITS 8-11 |
| 402 | AND [17 |
| 403 | DCA TMP0 /NUM BLKS TO TRANSF |
| 404 | \f/SETUP FCN CTRL WD; TRANSF BUF ADR; & ABS STBLK OF TRANSF |
| 405 | /FOR OS8 CALL TO HANDLER |
| 406 | TAD I IOHAN /FCN CTRL WD |
| 407 | DCA FCNWD |
| 408 | ISZ IOHAN |
| 409 | TAD I IOHAN /TRANSF BUF ADR |
| 410 | DCA FCNWD+1 |
| 411 | ISZ IOHAN |
| 412 | TAD I IOHAN /GET REL STBLK & BUILD |
| 413 | TAD TMP0 /ABS STBLK |
| 414 | CIA CLL |
| 415 | ISZ ULSADR |
| 416 | CDF 10 |
| 417 | TAD I ULSADR /FILE LEN-(REL STB+NUM BLKS) |
| 418 | SNL SZA /E.O.FILE CONDITION? |
| 419 | JMP .+3 /YES |
| 420 | CLA /NO |
| 421 | JMP SETSBN |
| 422 | TAD TMP0 |
| 423 | SMA SZA /ANY BLKS TO TRANSF? |
| 424 | JMP IOH /YES |
| 425 | CLA /NO |
| 426 | /CHK IF FILE LEN=0; IF SO DO SEQ STUFF |
| 427 | TAD I ULSADR |
| 428 | SNA CLA /SEQ DEV? |
| 429 | JMP IOH+1 /YES |
| 430 | CMA /NO,=-1 IF NUM BLKS TRANSF L.T. REQ |
| 431 | DCA IOFLG |
| 432 | JMP RTNIO |
| 433 | IOH, DCA TMP0 /THIS NUM OF BLKS |
| 434 | /UPDATE FCN CTRL WD IN OS8 CALL |
| 435 | TAD FCNWD |
| 436 | AND (4077 /REMOVE REQ NUM OF PGS |
| 437 | DCA FCNWD /& PUT IN THE |
| 438 | TAD TMP0 /ALTERED NUM |
| 439 | CLL RTR |
| 440 | RTR |
| 441 | RTR |
| 442 | TAD FCNWD |
| 443 | DCA FCNWD |
| 444 | CMA /=-1 IF NUM BLKS TRANSF L.T. REQ |
| 445 | DCA IOFLG |
| 446 | /SETUP STARTING BLK NUMBER |
| 447 | / |
| 448 | SETSBN, ISZ ULSADR |
| 449 | CDF 10 |
| 450 | TAD I ULSADR /GET ABS STBLK |
| 451 | JMS GETCDF /GET DF |
| 452 | TAD I IOHAN /ADD REL STBLK |
| 453 | DCA FCNWD+2 |
| 454 | TAD I IOHAN /UPDATE REL STBLK |
| 455 | TAD TMP0 /BY NUM BLKS OF TRANSF |
| 456 | DCA I IOHAN |
| 457 | \f/CALL TO THE HANDLER |
| 458 | P6203, CIF CDF 0 /IOHAN & OS8 DEV HAN IN FLD 0 |
| 459 | KSF /CHK FOR CTRLC |
| 460 | JMP .+5 |
| 461 | KRS |
| 462 | TAD (-203 |
| 463 | SNA CLA |
| 464 | JMP I [7605 |
| 465 | JMS I IOENT |
| 466 | FCNWD, 0 |
| 467 | 0 |
| 468 | 0 |
| 469 | JMP HNDERR /ERROR RETURN OF CALL |
| 470 | ISZ IOHAN |
| 471 | RTNIO, 0 /CIF INSTR |
| 472 | JMP I IOHAN |
| 473 | IOENT, 0 |
| 474 | ULSADR, 0 |
| 475 | UNITSV, 0 |
| 476 | / |
| 477 | GETCDF, 0 |
| 478 | 0 |
| 479 | JMP I GETCDF |
| 480 | |
| 481 | HNDERR, JMS I [RTNOS8 |
| 482 | IOMSG |
| 483 | \f/INQIRE- DETERMINE IF DESIRED DEV HANDLER IS IN CORE |
| 484 | / & IF SO,GET ITS ENTRY PT |
| 485 | DVTBL=7647 |
| 486 | INQIRE, 0 |
| 487 | CDF 10 |
| 488 | TAD UNITSV |
| 489 | TAD (DVTBL-1 |
| 490 | DCA IOENT /ADR OF ENRTY PT IN RESID. TBL |
| 491 | TAD I IOENT /GET ENTRY PT IF ONE |
| 492 | DCA IOENT |
| 493 | TAD IOENT |
| 494 | SZA CLA /DEV HAN WAS IN CORE? |
| 495 | JMP I INQIRE /YES |
| 496 | TAD (7201 /NO |
| 497 | DCA P6201+4 |
| 498 | TAD UNITSV /GET DEV NUM BK |
| 499 | P6201, CDF 0 |
| 500 | CIF 10 |
| 501 | JMS I USR |
| 502 | 1 |
| 503 | 0 |
| 504 | JMS I [OS8ER |
| 505 | TAD .-2 |
| 506 | DCA IOENT |
| 507 | JMP I INQIRE |
| 508 | PAGE |
| 509 | \fNXTESD, 0 |
| 510 | ISZ EPTR /ADV PTR TO |
| 511 | ISZ EPTR /WD 0 OF |
| 512 | TAD EPTR /NEXT ENTRY |
| 513 | AND [377 /IF AT BLK |
| 514 | SNA CLA /BOUNDARY |
| 515 | TAD [4 /BUMP IT FOUR |
| 516 | TAD EPTR |
| 517 | JMS I [SETEPT |
| 518 | TAD [3 /CHECK FOR |
| 519 | TAD EPTR /END OF |
| 520 | DCA TMP0 /ESD |
| 521 | TAD I TMP0 /TYPE WD |
| 522 | AND [17 /TO AC B8-B11 |
| 523 | SZA /LAST ESD? |
| 524 | ISZ NXTESD /NO |
| 525 | DCA ETYP /SAVE TYPE |
| 526 | JMP I NXTESD |
| 527 | \fADVOVR, 0 /UPDATE PASS1 PASS2 ARGS |
| 528 | ISZ MCNT /MORE MODS IN THIS OVR? |
| 529 | JMP SAMOVR /YES |
| 530 | JMS NXTOVR /SET ARGS FOR NEXT OVER |
| 531 | JMP EOLVL /RTN HERE= END OF LEVEL |
| 532 | TAD P2FLG /DOING PASS2 ? |
| 533 | SMA CLA |
| 534 | JMP BY10 /NO |
| 535 | TAD (2 /GET NEW LDR |
| 536 | TAD BSECTP /IMAGE REL BLK |
| 537 | DCA TMP0 /FOR NEXT OVR |
| 538 | TAD TMP0 |
| 539 | DCA NDX0 |
| 540 | TAD I NDX0 /LENGTH OF OVERLAY |
| 541 | TAD I TMP0 /PLUS OLD RELATIVE BLOCK |
| 542 | DCA I TMP0 /EQUALS NEW RELATIVE BLOCK |
| 543 | BY10, TAD LNONUM /ADD 1 TO BITS |
| 544 | TAD (20 /4-7 OF LEVEL |
| 545 | DCA LNONUM /AND OVR LAY NUM |
| 546 | JMP SAMOVR |
| 547 | EOLVL, JMS NXTOVR /GET NXT OVR NEW LEVEL |
| 548 | JMP SAMOV4 /HERE=END OF ALL LEVELS |
| 549 | TAD LNONUM /ADD 1 TO |
| 550 | AND [3400 /THE LEVEL |
| 551 | TAD (400 /BITS (1-3) |
| 552 | DCA LNONUM /AND CLEAR THE OVR BITS |
| 553 | TAD P2FLG |
| 554 | SMA CLA /DOING PASS2 ? |
| 555 | JMP BY7 /NO |
| 556 | TAD [4 |
| 557 | TAD BSECTP /UPDATE BIN SECTION PTR |
| 558 | DCA BSECTP |
| 559 | JMP SAMOVR |
| 560 | \fBY7, ISZ I (LEVSYM+2 /SET THE INTERNAL LEVEL SYMBOL TO LEVLN+1 |
| 561 | TAD (LEVSYM /ENTER NEW |
| 562 | JMS I [LOOK /LEVEL SYMBOL INTO GST |
| 563 | TAD [4 |
| 564 | TAD LNONUM /SET TYPE |
| 565 | DCA I GPTR /TO PROG SECTION |
| 566 | IAC /SET PTR TO |
| 567 | TAD GPTR /NEW LEVEL |
| 568 | DCA I [LVPTR |
| 569 | LEVRND, TAD I BPT2 |
| 570 | CLL |
| 571 | TAD [377 /ROUND UP OLD LEVEL |
| 572 | AND [7400 /TO A BLOCK BOUNDARY |
| 573 | SZL |
| 574 | ISZ I BPTR /MIND THE CARRIES! |
| 575 | DCA I BPT2 |
| 576 | SAMOVR, TAD [3 /ADV PTR TO |
| 577 | TAD RFPTR1 /NXT RALF |
| 578 | DCA RFPTR1 /MODULE |
| 579 | JMP I ADVOVR |
| 580 | SAMOV4, ISZ ADVOVR /BUMP RETURN |
| 581 | TAD P2FLG |
| 582 | SPA CLA |
| 583 | JMP SAMOVR /SKIP ROUNDUP IF PASS 2 |
| 584 | JMS I (LEVLUP /MERGE OVERLAY SIZE INTO LEVEL SIZE |
| 585 | JMP LEVRND /AND RND UP LAST LEVEL |
| 586 | \fNXTOVR, 0 /HERE AT END OF OVERLAY |
| 587 | ISZ MTBL /GET NUM OF |
| 588 | TAD I MTBL /MOD IN NXT |
| 589 | SNA /OVR |
| 590 | JMP I NXTOVR /=END OF LEVEL |
| 591 | DCA MBGCNT |
| 592 | TAD MBGCNT |
| 593 | CIA |
| 594 | DCA MCNT |
| 595 | TAD P2FLG |
| 596 | SMA CLA |
| 597 | JMS I (LEVLUP /SET CUR. LEVL =MAX (CUR LEVL, CURNT OVR) |
| 598 | ISZ NXTOVR /RTN P+1 IF |
| 599 | JMP I NXTOVR /NOT END OF LEVEL |
| 600 | |
| 601 | |
| 602 | SETCNT, 0 |
| 603 | TAD (MCTTBL+1 /PTR TO MOD |
| 604 | DCA MTBL /COUNT TBL |
| 605 | TAD I MTBL /-NUM IN |
| 606 | DCA MBGCNT |
| 607 | TAD MBGCNT |
| 608 | CIA /MAIN |
| 609 | DCA MCNT |
| 610 | TAD (MODTBL+3 /PTR TO TOP |
| 611 | DCA RFPTR1 /OF MOD TBL |
| 612 | DCA I (OVRSIZ |
| 613 | DCA I (OVRSIZ+1 |
| 614 | JMP I SETCNT |
| 615 | MTBL, 0 |
| 616 | PAGE |
| 617 | \f/LOOKUP OR ENTER A SYMBOL INTO |
| 618 | /GLOBAL SYMBOL TABLE (GST). PTR |
| 619 | /TO SYMBOL IN FIELD 1 IS IN |
| 620 | /AC. USUALLY ITS AN ESD. |
| 621 | /RTN P+1=NO MATCH |
| 622 | /RTN P+2=MATCH |
| 623 | |
| 624 | LOOK, 0 |
| 625 | DCA TMP0 /PTR TO SYM |
| 626 | CDF 10 |
| 627 | TAD I TMP0 /SELECT |
| 628 | RTR /BUCKET |
| 629 | RTR /A-Z, SPACE |
| 630 | RTR /OR POUND |
| 631 | AND [77 |
| 632 | TAD (BUCKET-1 /PTR TO BUCKET |
| 633 | LOP5, DCA TMP1 /PTR TO PREV ENTRY |
| 634 | TAD I TMP1 /PTR TO NEXT ENTRY |
| 635 | SNA /0=BUCKET BOTTOM |
| 636 | JMP HOOKIN /NO MATCH |
| 637 | IAC /APPEND SYMBOL |
| 638 | DCA GPTR /LOOK FOR |
| 639 | AC7775 /3 WORD MATCH |
| 640 | DCA TMP2 |
| 641 | TAD TMP0 |
| 642 | DCA EPTR |
| 643 | YUCCH, TAD I EPTR |
| 644 | CIA CLL |
| 645 | TAD I GPTR |
| 646 | SZA CLA |
| 647 | JMP YECCH /SYMBOLS DIFFER |
| 648 | ISZ EPTR |
| 649 | ISZ GPTR |
| 650 | ISZ TMP2 /ALL MATCH? |
| 651 | JMP YUCCH /NO |
| 652 | ISZ LOOK /BUMP RTN |
| 653 | SETTYP, TAD I EPTR /GET ESD TYPE |
| 654 | AND [17 |
| 655 | DCA ETYP |
| 656 | CLA IAC |
| 657 | TAD EPTR |
| 658 | JMS I [SETEPT /BUMP EPTR AND SET EPT2 |
| 659 | TAD I EPTR /GET ESD NUM |
| 660 | RTR /IN B1-B7 |
| 661 | RTR /AND SET |
| 662 | AND (177 /REFERENCE |
| 663 | TAD (ESDPG /POINTER |
| 664 | DCA REFPTR |
| 665 | TAD I GPTR /SET GST |
| 666 | AND [17 /TYPE |
| 667 | DCA GTYP /FIELD BITS OF |
| 668 | TAD I EPTR /VALUE WORDS |
| 669 | AND [7 /CLR |
| 670 | DCA I EPTR /HI 9 |
| 671 | JMP I LOOK |
| 672 | \fYECCH, SZL /IS NEW GUY LESS THAN GST ENTRY? |
| 673 | JMP HOOKIN /YES HOOK-IN HERE |
| 674 | TAD I TMP1 |
| 675 | JMP LOP5 /TRY NEXT |
| 676 | HOOKIN, TAD I TMP1 /GET FWD LINK |
| 677 | DCA I NDX4 /TO NEXT INTO |
| 678 | TAD NDX4 /NEW. PUT FWD |
| 679 | DCA I TMP1 /LINK TO NEW INTO PREV. |
| 680 | TAD TMP0 /3 SYM |
| 681 | DCA EPTR /INTO GST |
| 682 | AC7775 |
| 683 | DCA TMP2 |
| 684 | TAD I EPTR |
| 685 | DCA I NDX4 |
| 686 | ISZ EPTR |
| 687 | ISZ TMP2 |
| 688 | JMP .-4 |
| 689 | ISZ NDX4 /SET PTR TO |
| 690 | TAD NDX4 /WORD 4 (TYPE) |
| 691 | DCA GPTR /OF GST |
| 692 | ISZ NDX4 /SET PTR TO NEXT |
| 693 | ISZ NDX4 /FREE ENTRY |
| 694 | TAD [7 /SEE IF |
| 695 | TAD NDX4 /GST IS FULL |
| 696 | TAD ENDSYM /END OF GST |
| 697 | SPA SNA CLA |
| 698 | JMP SETTYP /ITS OK |
| 699 | JMS I [RTNOS8 /SYMBOL TABLE |
| 700 | SYMMSG /OVER FLOW |
| 701 | ENDSYM, 1-OVLTBL |
| 702 | |
| 703 | SETEPT, 0 |
| 704 | DCA EPTR |
| 705 | CLA IAC |
| 706 | TAD EPTR |
| 707 | DCA EPT2 /SET PTR TO BOTH WDS OF DBLWD |
| 708 | JMP I SETEPT |
| 709 | \fGETTYP, 0 /ADV GST PTR |
| 710 | TAD [7 /TO WD 4 OF |
| 711 | TAD GPTR /ENTRY |
| 712 | DCA GPTR /CHECK FOR |
| 713 | TAD GPTR |
| 714 | TAD ENDSYM |
| 715 | SMA CLA |
| 716 | JMP I GETTYP |
| 717 | TAD I GPTR /END OF GST. |
| 718 | SZA CLA /IF NOT END, |
| 719 | ISZ GETTYP /ISZ RETURN. |
| 720 | JMP I GETTYP |
| 721 | |
| 722 | OLINE, 0 /OUTPUT A LINE OF TEXT TO THE SYMBOL MAP |
| 723 | DCA TMP5 |
| 724 | OLINLP, TAD I TMP5 |
| 725 | JMS I (HAFWD |
| 726 | TAD I TMP5 |
| 727 | ISZ TMP5 |
| 728 | AND [77 |
| 729 | SZA CLA |
| 730 | JMP OLINLP |
| 731 | JMS I [PCRLF /DOUBLE SPACE AFTERWARDS |
| 732 | JMS I [PCRLF |
| 733 | JMP I OLINE |
| 734 | PAGE |
| 735 | \f/HERE TO OUTPUT SYMBOL MAP |
| 736 | /EACH SYMBOL IN GST IS 7 WORDS LONG |
| 737 | /THE FORMAT IS: |
| 738 | /WD0 PTR TO NEXT ALPHABETICAL SYMBOL |
| 739 | /WD1 SYMBOL NAME IN PACKED SIX BIT |
| 740 | /WD2 ASCII. 00 IS INTERPRETED AS SPACE |
| 741 | /WD3 SIX CHARS MAX PER SYMBOL |
| 742 | /WD4 B0=1=TRAP VECT SYMBOL ON PASS1 OR |
| 743 | / B0=1=PASS2 ERROR, B1-B3=LEVEL NUM |
| 744 | / (0-7) B4-B7=OVERLAY NUM (0-17) |
| 745 | / B8-B11=TYPE. TYPE FORMAT IS: |
| 746 | / 0=END OF ESD TBL (NA TO LDR) |
| 747 | / 1=ENTRY POINT |
| 748 | / 2=EXTERN |
| 749 | / 3=COMMON SECTION |
| 750 | / 4=PROGRAM SECTION |
| 751 | / 5=MULTIPLE ENTRY POINT |
| 752 | / 6=MULTIPLE SECTION |
| 753 | / 7=GENERAL 8-MODE SECTION |
| 754 | / 10=FIELD1 8-M0DE SECTION |
| 755 | / 11=COMMON PG0 8-MODE SECTION |
| 756 | / 12-17=UNDEFINED |
| 757 | / |
| 758 | /WD5 B0-B8=PTR TO PARENT SYMBOL (0R 0) |
| 759 | / ON PASS1 =TRAP VECTOR DISPLACEMENT |
| 760 | / ON PASS2 |
| 761 | / B9-B11=FIELD BITS OF SYMBOL |
| 762 | /WD6 ADDR BITS OF SYMBOL |
| 763 | |
| 764 | /OUTPUT FORMAT OF MAP IS: |
| 765 | / |
| 766 | /SYMBOL VALUE LEVEL OVRNUM TYPE(*) |
| 767 | / |
| 768 | /THE TYPE COLUMN IS EITHER 2 BLANKS OR |
| 769 | /EX=EXTERN |
| 770 | /ME=MULTIPLE ENTRY POINT |
| 771 | /MS=MULTIPLE SECTION |
| 772 | /ASTERISK MEANS SOME TYPE OF ILLEGAL |
| 773 | /REFERENCE TO A SYMBOL AND USUALLY |
| 774 | /MEANS A LOADER ORIGINATED TRAP HAS |
| 775 | /BEEN GENERATED SOMEWHERE IN THE BINARY |
| 776 | /E.G. SUBR GROG AT LEVEL 2 CALLS SUBR |
| 777 | /COLUMBO AT LEVEL 1. A USER 7 TRAP |
| 778 | /WOULD BE GENERATED IN SUBR GROG, AND |
| 779 | /THE SYMBOL COLUMBO WOULD HAVE AN |
| 780 | /ASTERISK ASIDE OF IT IN THE TYPE |
| 781 | /COLUMN |
| 782 | \fSYMMAP, 0 |
| 783 | CDF |
| 784 | TAD I (LDRNAM+5 /MAP UNIT |
| 785 | SNA /IS IT 0 ? |
| 786 | JMP NOMAP /YES, NO MAP TO OUTPUT |
| 787 | JMS I [IOHAN /FETCH HANDLER |
| 788 | TAD I (LDRNAM+5 /ENTER OUTPUT |
| 789 | CIF 10 |
| 790 | JMS I USR |
| 791 | 3 |
| 792 | MPBLK, LDRNAM+6 |
| 793 | 0 |
| 794 | JMP ENTERR /WHOOPS WE HAVE AN ENTER ERROR |
| 795 | TAD I (LDRNAM+5 |
| 796 | AND [17 |
| 797 | CDF 10 |
| 798 | DCA I (SMAPU /STORE SYMBOL MAP UNIT |
| 799 | TAD (SMAPU /SYMMAP ARGS |
| 800 | DCA NDX0 /FOR I/O |
| 801 | TAD MPBLK+1 /LENGTH |
| 802 | CIA |
| 803 | DCA I NDX0 |
| 804 | TAD MPBLK |
| 805 | DCA I NDX0 |
| 806 | TAD (BUCKET /START AT 1ST |
| 807 | DCA RLEN /BUCKET (A) |
| 808 | TAD (-42 /DO UP UNTIL BUT NOT INCL. |
| 809 | DCA RBLK /POUND SIGN |
| 810 | AC7775 /INIT PACK ARGS |
| 811 | DCA FATAL |
| 812 | TAD (RALFBF |
| 813 | DCA TMP4 |
| 814 | TAD SM600 |
| 815 | DCA BLKCNT |
| 816 | JMS I [PCRLF |
| 817 | TAD (TLINE |
| 818 | JMS I (OLINE |
| 819 | TAD (STLINE |
| 820 | JMS I (OLINE /OUTPUT TITLE AND SUBTITLE |
| 821 | TAD I RLEN /1ST SYM |
| 822 | LOP10, DCA GPTR |
| 823 | TAD GPTR /ANY MORE IN |
| 824 | SZA /THIS BUCKET ? |
| 825 | JMP JOUSYM /YES |
| 826 | ISZ RLEN /NXT BUCKET |
| 827 | ISZ RBLK /DONE ALL |
| 828 | JMP LOP10-1 /NO |
| 829 | ISZ SWITZ /BEEN HERE BEF? |
| 830 | JMP DUNMP /YES ALL DONE |
| 831 | CLA CMA /SET FOR JUST |
| 832 | DCA RBLK /POUND SYMS |
| 833 | TAD SVMAIN |
| 834 | SNA /DO ONLY #MAIN? |
| 835 | JMP LOP10-1 /NO - DO ALL # SYMBOLS |
| 836 | PRMAIN, CLA /** REPLACED WITH JMS I (OUTSYM ** |
| 837 | \fDUNMP, TAD [-4 /OUT PUT |
| 838 | DCA TMP5 /THE HIGHEST LOCATION |
| 839 | TAD A1 /USED BY THE PROGRAM |
| 840 | TAD (4060 /FLD BITS |
| 841 | JMS HAFWD |
| 842 | TAD A1+1 |
| 843 | JMS I (CVRT |
| 844 | TAD (HLINE |
| 845 | JMS I (OLINE /PRINT " = HIGHEST LOC USED" |
| 846 | JMS I (PROVLY /PRINT OVERLAY TABLE |
| 847 | SM600, CLA /** AC NOT 0 ON RETURN** |
| 848 | TAD (214 |
| 849 | JMS I PPACK |
| 850 | TAD (232 /CTRL Z |
| 851 | OUFILP, JMS I PPACK |
| 852 | TAD BLKCNT /HAVE WE FILLED |
| 853 | TAD [600 /A BLOCK UP COMPLETELY? |
| 854 | SZA CLA |
| 855 | JMP OUFILP /NO |
| 856 | CDF /CLOSE SYMMAP |
| 857 | TAD I (SYLST /AC=LENGTH |
| 858 | DCA SMPCLN |
| 859 | TAD I (LDRNAM+5 /MAP UNIT |
| 860 | CIF 10 |
| 861 | JMS I USR |
| 862 | 4 |
| 863 | LDRNAM+6 |
| 864 | SMPCLN, 0 |
| 865 | JMS I [OS8ER |
| 866 | NOMAP, CDF 10 |
| 867 | JMP I SYMMAP |
| 868 | JOUSYM, JMS I (OUTSYM |
| 869 | TAD I GPTR /NEXT SYM TO DO |
| 870 | JMP LOP10 |
| 871 | \fHAFWD, 0 /OUTPUT THE 2 6 BIT ASCII CHARS IN AC |
| 872 | DCA TMP3 |
| 873 | TAD TMP3 /LEFT HALF 1ST |
| 874 | RTR |
| 875 | RTR |
| 876 | RTR |
| 877 | JMS SIXTO8 |
| 878 | TAD TMP3 |
| 879 | JMS SIXTO8 |
| 880 | JMP I HAFWD |
| 881 | |
| 882 | SIXTO8, 0 /CVRT AC FROM |
| 883 | AND [77 /6 TO 8 BIT ASCII |
| 884 | SZA |
| 885 | TAD [240 /TURN ZEROS TO BLANKS |
| 886 | AND [77 |
| 887 | TAD [240 |
| 888 | JMS I PPACK /PUT IN BUFF IN PS/8 FORMAT |
| 889 | JMP I SIXTO8 |
| 890 | |
| 891 | ENTERR, DCA I (DOMAP /CANCEL SYMBOL MAP FROM RTNOS8 |
| 892 | JMS I [RTNOS8 /AS WE MASY HAVE COME FROM SYMMAP |
| 893 | ENTMSG |
| 894 | PAGE |
| 895 | \f/PACK ASCII IN AC INTO OUTPUT BUFF IN |
| 896 | /OS/8 3 WORD FORMAT TO 2 12 BIT WORDS |
| 897 | |
| 898 | PACK, 0 |
| 899 | ISZ FATAL /3RD WORD ? |
| 900 | JMP ONEOR2 /NO |
| 901 | DCA TMP0 /SAVE CHAR |
| 902 | AC7776 /BU BUFF PTR |
| 903 | TAD TMP4 |
| 904 | DCA TMP4 |
| 905 | AC7775 |
| 906 | DCA FATAL /RESET CNTR |
| 907 | JMS ROL /POSITION HI |
| 908 | DCA I TMP4 |
| 909 | ISZ TMP4 |
| 910 | JMS ROL /POSITION LO |
| 911 | ONEOR2, DCA I TMP4 |
| 912 | ISZ TMP4 |
| 913 | ISZ BLKCNT /BLOCK FULL ? |
| 914 | JMP I PACK /NO |
| 915 | JMS WRBUF |
| 916 | TAD SBPTR |
| 917 | DCA TMP4 /RESET ARGS |
| 918 | TAD (-600 |
| 919 | DCA BLKCNT |
| 920 | JMP I PACK |
| 921 | |
| 922 | ROL, 0 |
| 923 | TAD TMP0 /3RD CHAR |
| 924 | RTL /POSITION |
| 925 | RTL /BITS |
| 926 | DCA TMP0 /SAV FOR NXT CALL ON LO |
| 927 | TAD TMP0 |
| 928 | AND [7400 |
| 929 | TAD I TMP4 /ADD IN OLDY |
| 930 | JMP I ROL |
| 931 | |
| 932 | WRBUF, 0 /WRITE OUT |
| 933 | CDF /SYM MAP |
| 934 | JMS I [IOHAN /BUFFER |
| 935 | SMAPU /ADDR OF SYM U |
| 936 | 200^1!4000!10 /1 BLK OF FLD 1 |
| 937 | SBPTR, 7000 /1ST ADDR |
| 938 | SYLST, 0 /REL BLK |
| 939 | CDF 10 |
| 940 | JMP I WRBUF |
| 941 | \fCVRT, 0 /CONVERT AC TO |
| 942 | DCA CVRTMP /ASCII NUM |
| 943 | TAD TMP5 /-NUM OF DIGITS |
| 944 | DCA TMP1 /TO CONVERT |
| 945 | LOP7, TAD CVRTMP /CVRT LEFT TO |
| 946 | RTL /RIGHT |
| 947 | RAL /3 BITS PER |
| 948 | DCA CVRTMP /DIGIT |
| 949 | TAD CVRTMP |
| 950 | RAL |
| 951 | AND [7 |
| 952 | TAD (260 |
| 953 | JMS I PPACK |
| 954 | ISZ TMP1 /ENOUGH ? |
| 955 | JMP LOP7 /NO |
| 956 | JMS I (HAFWD /OUTPUT A PAIR |
| 957 | JMP I CVRT /OF SPACES |
| 958 | |
| 959 | OUTSYM, 0 /DO ONE SYMBOL |
| 960 | DCA NDX1 /ADDRESS IN AC ON ENTRY |
| 961 | AC7775 |
| 962 | DCA TMP2 |
| 963 | TAD I NDX1 /SYMBOL IS 1ST |
| 964 | JMS I (HAFWD |
| 965 | ISZ TMP2 |
| 966 | JMP .-3 |
| 967 | TAD I NDX1 /SAVE |
| 968 | DCA GTYP /TYPE |
| 969 | TAD I NDX1 /FLD OF SYMBOL |
| 970 | JMS PR15 |
| 971 | JMS CVLOVL /CONVERT ADDR, LEVEL, OVERLAY |
| 972 | TAD GTYP /NOW DO TYPE |
| 973 | AND (17 /ITS B8-B11 |
| 974 | TAD (TYTBL-1 /PTR TO TBL OF |
| 975 | DCA TMP0 /CHAR PAIRS FOR |
| 976 | CDF 0 |
| 977 | TAD I TMP0 /TYPE EG EX FOR |
| 978 | CDF 10 |
| 979 | JMS I (HAFWD /EXTERN |
| 980 | TAD GTYP /IF ERROR WAS |
| 981 | SPA CLA /FOUND DURING PASS2 B0 OF TYPE=1 EG ILLEGAL SUBR CALL. * ON MAP INDICATES |
| 982 | TAD (12 /PASS2 ERROR |
| 983 | TAD [240 |
| 984 | JMS I PPACK |
| 985 | JMS PCRLF |
| 986 | JMP I OUTSYM |
| 987 | |
| 988 | CVRTMP, 0 |
| 989 | \fCVLOVL, 0 |
| 990 | CLA CMA |
| 991 | DCA TMP5 /DO LEVEL NUM |
| 992 | TAD GTYP /ITS B1-B3 OF |
| 993 | RAL /OF TYPE WORD |
| 994 | JMS CVRT |
| 995 | AC7776 /DO OVER NUM |
| 996 | DCA TMP5 /ITS B4-B7 OF |
| 997 | TAD GTYP /TYPE WORD |
| 998 | RTL /POSITION INTO |
| 999 | AND (1700 /HI 2 DIGITS |
| 1000 | JMS CVRT |
| 1001 | JMP I CVLOVL |
| 1002 | |
| 1003 | PCRLF, 0 |
| 1004 | TAD (215 /EOL |
| 1005 | JMS I PPACK |
| 1006 | TAD (212 |
| 1007 | JMS I PPACK |
| 1008 | JMP I PCRLF |
| 1009 | |
| 1010 | PR15, 0 |
| 1011 | AND [7 |
| 1012 | TAD (4060 |
| 1013 | JMS I (HAFWD |
| 1014 | TAD [-4 /NOW DO ADDR OF |
| 1015 | DCA TMP5 /SYMBOL |
| 1016 | TAD I NDX1 |
| 1017 | JMS CVRT |
| 1018 | JMP I PR15 |
| 1019 | PAGE |
| 1020 | \f/PASS 2 OF LOADER - TRANSFORMS BINARIES INTO LOADER IMAGE FILE |
| 1021 | |
| 1022 | PASS2, DCA LNONUM /SET FOR MAIN |
| 1023 | JMS I (BLDTV /BUILD TRAP VECTOR |
| 1024 | TAD LBCNT /PROCESS LIBR |
| 1025 | CIA /MODULES 1ST |
| 1026 | SNA /ANY TO DO? |
| 1027 | JMP BY12 /NO |
| 1028 | DCA LBCNT /=-NUM TO DO |
| 1029 | TAD LBPTR /PTR TO 1ST |
| 1030 | DCA RFPTR1 /LIBR MOD |
| 1031 | JMS SETREF /INIT RELOC ARGS AND PROCESS TXT |
| 1032 | TAD [3 /ADV TO NXT |
| 1033 | TAD RFPTR1 /LIBR MOD. |
| 1034 | DCA RFPTR1 |
| 1035 | ISZ LBCNT /DONE LIBR? |
| 1036 | JMP .-5 /NO |
| 1037 | BY12, JMS I (SETCNT /SET ARGS TO PROCESS USER MODS. |
| 1038 | JMS SETREF /DO 1 MOD |
| 1039 | JMS I (ADVOVR /ADVANCE ARGS |
| 1040 | JMP .-2 /RTN HERE IF MORE TO DO |
| 1041 | JMS I (WRALL /WRITE OUT ALL THE RESIDENT BIN BLOCKS |
| 1042 | \f/END OF PASS 2 - RETURN TO OS8 OR CHAIN TO RSYS |
| 1043 | |
| 1044 | TAD (7616 |
| 1045 | DCA NDX0 |
| 1046 | TAD I (LIMGU /SAVE UNIT AND BLOCK OF LOADER IMAGE |
| 1047 | DCA I NDX0 /FILE IN CD AREA IN CASE WE CHAIN |
| 1048 | TAD I (LIMGU+2 |
| 1049 | DCA I NDX0 /TO THE RUN-TIME-SYSTEM |
| 1050 | DCA I NDX0 /A PRECAUTION |
| 1051 | CDF 0 |
| 1052 | CIF 10 |
| 1053 | JMS I USR |
| 1054 | 10 /LOCK USR IN |
| 1055 | TAD (200 |
| 1056 | DCA USR |
| 1057 | TAD I (LDRNAM |
| 1058 | CIF 10 |
| 1059 | JMS I USR |
| 1060 | 4 |
| 1061 | LDRNAM+1 /CLOSE LOADER IMAGE FILE |
| 1062 | LDCLEN, 0 |
| 1063 | JMS I [OS8ER /OOPS! |
| 1064 | JMS I (SYMMAP /PRINT SYMBOL TABLE IF REQUESTED |
| 1065 | TAD I (OS8SWS |
| 1066 | CDF 0 |
| 1067 | AND (40 /TEST /G SWITCH |
| 1068 | SNA CLA |
| 1069 | JMP I [7605 /NOT ON - RETURN TO OS8 |
| 1070 | CLA IAC |
| 1071 | CHAIN, CIF 10 |
| 1072 | JMS I USR |
| 1073 | CHCODE, 2 |
| 1074 | RTSNAM /LOOKUP RTS |
| 1075 | 0 |
| 1076 | JMP NORTS |
| 1077 | TAD (6 |
| 1078 | DCA CHCODE /CHANGE LOOKUP TO CHAIN |
| 1079 | JMP CHAIN |
| 1080 | |
| 1081 | NORTS, DCA I (LDRNAM+5 /KILL SECOND STORAGE MAP |
| 1082 | JMS I [RTNOS8 |
| 1083 | RTSMSG |
| 1084 | RTSNAM, 0622;2423;0000;2326 /FRTS.SV |
| 1085 | \fSETREF, 0 |
| 1086 | JMS I (RDRLES /GET MODULE ESD TABLE |
| 1087 | AC7776 |
| 1088 | DCA EPTR |
| 1089 | LOP12, JMS I .+4 /GET NXTESD |
| 1090 | JMP BY11 /ALL DONE |
| 1091 | TAD EPTR /LOOK UP |
| 1092 | JMS I [LOOK /SYMBOL |
| 1093 | NXTESD |
| 1094 | CLA CMA /IGNORE ESD IF |
| 1095 | TAD ETYP /ITS AN ENTRY |
| 1096 | SNA CLA /POINT |
| 1097 | JMP LOP12 /IGNORE |
| 1098 | TAD GPTR /PUT ADDR OF |
| 1099 | DCA I REFPTR /GST SYM IN |
| 1100 | JMP LOP12 /ESD REF. PAGE |
| 1101 | BY11, CDF 0 /COMPUTE 1ST |
| 1102 | TAD EPTR /TEXT BLK |
| 1103 | AND [7400 |
| 1104 | CLL RTL |
| 1105 | RTL |
| 1106 | RAL |
| 1107 | IAC |
| 1108 | DCA I (TXTBLK |
| 1109 | CLA CMA /SET CNT TO -1 |
| 1110 | DCA BLKCNT /TO KICK OFF 1ST TXT READ |
| 1111 | TAD RFPTR1 /PTR TO |
| 1112 | DCA I (TXTBLK-3 /RALF MOD |
| 1113 | CDF 10 |
| 1114 | JMS I (TXTSCN /RELOCATE |
| 1115 | JMP I SETREF /TEXT |
| 1116 | PAGE |
| 1117 | \fBLDTV, 0 /BUILD UP |
| 1118 | TAD TRPCNT /TRAP VECTOR |
| 1119 | SNA CLA /ANY TO DO? |
| 1120 | JMP I BLDTV /NO |
| 1121 | TAD .+2 /GET BASE |
| 1122 | JMS I [LOOK /ADDR OF |
| 1123 | TRPSYM /TRAP VECT |
| 1124 | ISZ GPTR |
| 1125 | TAD I GPTR |
| 1126 | DCA TMP0 |
| 1127 | ISZ GPTR |
| 1128 | TAD I GPTR |
| 1129 | DCA TMP1 |
| 1130 | TAD TMP0 /FOR SUBR |
| 1131 | DCA TRAPV /TRPVEC |
| 1132 | TAD TMP1 |
| 1133 | DCA TRAPV+1 |
| 1134 | JMS NEWORG /PROCESS NEW ORIGIN |
| 1135 | DCA TRPCNT /WILL BE USED TO MARK GST SYMS |
| 1136 | TAD .+2 /THAT HAVE A VECTOR ENTRY |
| 1137 | JMS I [LOOK /GET SWAPPER |
| 1138 | SWPSYM /ADDR |
| 1139 | ISZ GPTR |
| 1140 | ISZ GPTR |
| 1141 | TAD I GPTR |
| 1142 | DCA RFPTR1 |
| 1143 | \f TAD SYMTM3 /SCAN GST |
| 1144 | LOP11, DCA GPTR /FOR ALL |
| 1145 | JMS I [GETTYP /TRAP SYMS |
| 1146 | JMP I BLDTV /ALL DONE |
| 1147 | TAD I GPTR /IF TYPE WD |
| 1148 | SMA CLA /B0=1, THEN SYMBOL NEEDS A VECTOR ENTRY |
| 1149 | JMP LOP11+1 /TRY NEXT 1ST WD OF ENTRY IS |
| 1150 | TAD (3000 /TRAP3 |
| 1151 | JMS I [PUTBIN |
| 1152 | TAD RFPTR1 /NXT IS |
| 1153 | JMS I [PUTBIN /SWAP ADDR |
| 1154 | CLL CML CLA RAR /CLR B0 |
| 1155 | TAD I GPTR /OF TYPE WD |
| 1156 | DCA I GPTR |
| 1157 | TAD I GPTR |
| 1158 | ISZ GPTR |
| 1159 | RTL |
| 1160 | RTL |
| 1161 | DCA TMP0 /HAVE TO MUSH SOME BITS AROUND: |
| 1162 | TAD TMP0 /OVERLAY NUMBER MOVES FROM B4-7 TO B0-3 |
| 1163 | AND [7400 |
| 1164 | DCA TMP1 /LEVEL NUMBER MOVES FROM B1-3 TO B6-8 |
| 1165 | TAD TMP0 |
| 1166 | RTL |
| 1167 | RTL |
| 1168 | AND (70 |
| 1169 | TAD TMP1 |
| 1170 | TAD I GPTR /ADD FLD BITS TO MESS |
| 1171 | JMS I [PUTBIN |
| 1172 | TAD TRPCNT /ADV VECT |
| 1173 | TAD (10 /ENTRY NUM |
| 1174 | DCA TRPCNT /COUNTER |
| 1175 | TAD I GPTR /TAG HI 9 |
| 1176 | TAD TRPCNT /OF GST SYM |
| 1177 | DCA I GPTR /WD5 WITH TV ENTRY NUMBER |
| 1178 | ISZ GPTR |
| 1179 | TAD I GPTR /ENTER |
| 1180 | JMS I [PUTBIN /ADDR |
| 1181 | AC7776 |
| 1182 | TAD GPTR |
| 1183 | JMP LOP11 /FOR THIS SYM |
| 1184 | \fNEWORG, 0 |
| 1185 | TAD BSECTP |
| 1186 | JMS I [SETEPT /SET PTR TO CURRENT SECTION |
| 1187 | TAD I EPT2 |
| 1188 | CIA CLL |
| 1189 | TAD TMP1 |
| 1190 | DCA TMP3 |
| 1191 | TAD TMP3 |
| 1192 | AND (6000 |
| 1193 | DCA TMP2 /DO A DOUBLE PRECISION SUBTRACT |
| 1194 | CML RAL |
| 1195 | TAD I EPTR |
| 1196 | CIA CLL |
| 1197 | TAD TMP0 |
| 1198 | SPA |
| 1199 | JMP BADORG /OUT OF RANGE |
| 1200 | CLL RAR |
| 1201 | TAD TMP2 /COMBINE AND SHIFT RIGHT 8 |
| 1202 | RAL |
| 1203 | RTL |
| 1204 | RTL /(I.E. LEFT 5) |
| 1205 | DCA TMP2 |
| 1206 | TAD TMP2 |
| 1207 | ISZ EPT2 |
| 1208 | TAD I EPT2 /ADD TO RELATIVE BLOCK OF SECTION |
| 1209 | DCA NEWBLK |
| 1210 | ISZ EPT2 |
| 1211 | TAD TMP2 |
| 1212 | CIA |
| 1213 | TAD I EPT2 |
| 1214 | SPA |
| 1215 | JMP BADORG /ORIGIN OUT OF RANGE |
| 1216 | DCA NEWLEN |
| 1217 | JMS I (NEWBB /GET BUFFER USING NEWBLK AND NEWLEN |
| 1218 | TAD TMP3 |
| 1219 | AND (1777 |
| 1220 | TAD BLKBEG |
| 1221 | DCA BLKSIZ /FORM POINTER INTO PROPER BUFFER |
| 1222 | JMP I NEWORG |
| 1223 | BADORG, JMS I [RTNOS8 |
| 1224 | ORGMSG /ORIGIN OUT OF CURRENT FILE LIMITS |
| 1225 | JMP I NEWORG |
| 1226 | PAGE |
| 1227 | \fPROVLY, 0 /ROUTINE TO PRINT OVERLAY INFO IN SYMBOL MAP |
| 1228 | JMS I [PCRLF |
| 1229 | TAD (OTLINE |
| 1230 | JMS I (OLINE |
| 1231 | TAD (OVLTBL-1 |
| 1232 | DCA NDX1 |
| 1233 | PROVLP, TAD I NDX1 /GET ENTRY |
| 1234 | SPA /TEBLE ENDS WITH -1 |
| 1235 | JMP I PROVLY |
| 1236 | DCA GTYP |
| 1237 | TAD [240 |
| 1238 | JMS I PPACK |
| 1239 | JMS I (CVLOVL /PRINT LEVEL AND OVERLAY |
| 1240 | TAD GTYP |
| 1241 | JMS I (PR15 /PRINT 15-BIT LENGTH |
| 1242 | JMS I [PCRLF |
| 1243 | JMP PROVLP |
| 1244 | |
| 1245 | RDRLES, 0 /READ A |
| 1246 | TAD RFPTR1 /PTR TO RALF |
| 1247 | DCA RLARG-1 /MOD |
| 1248 | DCA RLARG+2 /STRT AT BLK 0 |
| 1249 | CDF /AND READ |
| 1250 | JMS I [IOHAN /3 BLKS INTO |
| 1251 | 0 /10000-11400 |
| 1252 | RLARG, 200^3!10 |
| 1253 | 0 |
| 1254 | 0 |
| 1255 | CDF 10 |
| 1256 | JMP I RDRLES |
| 1257 | \f/STARTING WITH THE LATEST, |
| 1258 | /WRITE OUT ALL CORE RESIDENT |
| 1259 | /BINARY BUFFERS |
| 1260 | |
| 1261 | WRALL, 0 |
| 1262 | TAD BP |
| 1263 | IAC /PTR TO |
| 1264 | DCA TMP0 /CURNT BLK |
| 1265 | TAD I TMP0 |
| 1266 | SNA CLA /ALL DONE ? |
| 1267 | JMP I WRALL /YES |
| 1268 | AC4000 |
| 1269 | JMS I (LDRIO /WRITE IT |
| 1270 | TAD I BP |
| 1271 | SNA |
| 1272 | JMP I WRALL |
| 1273 | DCA BP |
| 1274 | JMP WRALL+1 |
| 1275 | |
| 1276 | NOTREL, JMS I [RTNOS8 |
| 1277 | RELMSG |
| 1278 | |
| 1279 | RELMSG, TEXT /BAD INPUT FILE/ |
| 1280 | |
| 1281 | RTSMSG, TEXT /NO FRTS/ |
| 1282 | \fMERGE, 0 |
| 1283 | JMS I (GETTXT /COMBINE TXT |
| 1284 | DCA FTMP0 /PAIR WITH |
| 1285 | JMS I (GETTXT /PAIR WHOSE |
| 1286 | DCA FTMP0+1 /ADDR IS IN BPTR |
| 1287 | CLL |
| 1288 | TAD I BPT2 |
| 1289 | TAD FTMP0+1 |
| 1290 | DCA TMP1 |
| 1291 | RAL |
| 1292 | TAD I BPTR |
| 1293 | TAD FTMP0 |
| 1294 | AND [7 |
| 1295 | DCA TMP0 |
| 1296 | TAD FTMP0 /GET THE OPCODE OR WHATEVER |
| 1297 | AND [7770 /IS IN THE HIGH 9 BITS |
| 1298 | TAD TMP0 /AND COMBINE THEM WITH THE RELOCATED ADDRESS |
| 1299 | JMS I [PUTBIN /AND OUTPUT THE MESS |
| 1300 | TAD TMP1 |
| 1301 | JMS I [PUTBIN /DON'T FORGET WORD 2 |
| 1302 | JMP I MERGE |
| 1303 | |
| 1304 | GETCTL, 0 /GET TEXT |
| 1305 | JMS I (GETTXT /CTRL WORD |
| 1306 | DCA TMP0 /B4-B11 |
| 1307 | TAD TMP0 /IS TYPE |
| 1308 | AND [377 /INDICATOR |
| 1309 | DCA REFPTR /SOMETIMES |
| 1310 | TAD REFPTR /ITS AN ESD. |
| 1311 | TAD (ESDPG /WHEN IT IS, |
| 1312 | DCA GPTR /GPTR PNTS |
| 1313 | TAD I GPTR /TO THE |
| 1314 | DCA GPTR /CORRESPONDING GST SYM (WORD 4) |
| 1315 | JMS I [SETBGX /AND BPTR POINTS TO THE VALUE |
| 1316 | TAD TMP0 /TEXT TYPE |
| 1317 | RTL /IS IN |
| 1318 | RTL /B0-B3 |
| 1319 | RAL /PUT IN |
| 1320 | AND [17 /AC8-AC11 |
| 1321 | TAD GETCTL |
| 1322 | DCA GETCTL /USE IT TO BUMP RETURN ADDRESS |
| 1323 | JMP I GETCTL |
| 1324 | PAGE |
| 1325 | \f/COME HERE ON ORIGIN OR WHEN CROSSING |
| 1326 | /AN AREA BOUNDARY TO SELECT A BINARY |
| 1327 | /CORE BUFFER FOR A NEW LOADER IMAGE |
| 1328 | /AREA. THE BINARY BUFFER TABLE |
| 1329 | /ASSOCIATES CORE BUFFERS TO LOADER |
| 1330 | /IMAGE AREAS. |
| 1331 | |
| 1332 | /EACH ENTRY HAS FOUR WORDS - THEY CONTAIN: |
| 1333 | |
| 1334 | /WORD 1 POINTER TO BUFFER OF NEXT EARLIEST REFERENCE |
| 1335 | /WORD 2 RELATIVE BLOCK NUMBER (0 IF UNUSED) |
| 1336 | /WORD 3 NUMBER OF BLOCKS LEFT UNTIL END OF SECTION |
| 1337 | /WORD 4 BUFFER ADDRESS AND FIELD |
| 1338 | |
| 1339 | /EACH ENTRY MAPS FROM 1 TO 4 BLOCKS (400 TO 2000 OCTAL WORDS) FROM THE |
| 1340 | /ADDRESSES GENERATED BY THE LOADER ONTO THE LOADER IMAGE FILE. |
| 1341 | /THE RELATIVE BLOCK NUMBERS ARE ALWAYS OF THE FORM S+4N, WHERE |
| 1342 | /S IS THE RELATIVE BLOCK NUMBER OF THE NEAREST BINARY SECTION |
| 1343 | / (A BINARY SECTION IS AN OVERLAY OR "MAIN"). |
| 1344 | |
| 1345 | /THE BUFFERS ARE ORGANIZED AS A CHAIN IN ORDER OF REFERENCE, |
| 1346 | /WITH WORD 1 BEING THE LINK TO THE NEXT EARLIEST BUFFER. IN CASE |
| 1347 | /A BUFFER NEEDS TO BE WRITTEN THE CHAIN IS TRAVERSED AND THE LAST BUFFER |
| 1348 | /WRITTEN OUT, SINCE IT WAS THE LEAST RECENTLY ACCESSED. |
| 1349 | \fNEWBB, 0 /ENTER WITH NEW |
| 1350 | TAD BP |
| 1351 | DCA NDX5 /SAVE CURRENT "MOST RECENT" BUFFER |
| 1352 | TAD I NDX5 |
| 1353 | CIA |
| 1354 | TAD NEWBLK /CHECK WHETHER THE BUFFER WE WANT |
| 1355 | SNA CLA /IS THE CURRENT BUFFER |
| 1356 | JMP QUIKIE /YES - SAVE GRIEF |
| 1357 | NEWBB4, TAD BP /MAKE THE CURNT |
| 1358 | DCA BPPREV /BUFFER THE PREVIOUS BUFF |
| 1359 | TAD I BP /MAK THE BUF OF |
| 1360 | DCA BP /NEXT EARLIEST REFERENCE THE NEW CURNT BUFF |
| 1361 | TAD BP /GET THE PTR TO |
| 1362 | IAC /LDR IMAGE BLK |
| 1363 | DCA CURBLK /IN THIS BUFF |
| 1364 | TAD I CURBLK /HAVE WE SCANNED |
| 1365 | CIA /IS NEWBLK |
| 1366 | TAD NEWBLK /IN CORE |
| 1367 | SNA CLA /? |
| 1368 | JMP GOTBLK /YES |
| 1369 | TAD I BP /ARE WE AT THE |
| 1370 | SZA CLA /BUFFER OF EARLIEST REF? |
| 1371 | JMP NEWBB4 /NO DO NEXT |
| 1372 | STL /INITIALIZE LINK AS FLAG |
| 1373 | TAD I CURBLK /IS THERE A |
| 1374 | SNA CLA /BLK TO WRITE? |
| 1375 | JMP VIRGIN /NO - NONE TO READ, EITHER |
| 1376 | AC4000 |
| 1377 | JMS I (LDRIO /YES WRITE IT |
| 1378 | CLL /SET FLAG THAT BUFFER WAS WRITTEN |
| 1379 | VIRGIN, TAD NEWBLK |
| 1380 | DCA I CURBLK |
| 1381 | ISZ CURBLK |
| 1382 | TAD NEWLEN /STORE NEW BLOCK # AND LENGTH |
| 1383 | DCA I CURBLK /IN BUFFER CONTROL WORD |
| 1384 | RAR /GET "VIRGIN FLAG" |
| 1385 | DCA NEWBUF |
| 1386 | TAD MAXBLK |
| 1387 | CMA CLL |
| 1388 | TAD NEWBLK /CHECK IF THE BLOCK WE'RE MAPPING |
| 1389 | SNL CLA /IS LARGER THAN ANY OTHER SO FAR - |
| 1390 | JMP .+3 /IF SO WE DON'T HAVE TO READ IT |
| 1391 | TAD NEWBLK |
| 1392 | DCA MAXBLK /UPDATE MAXBLK |
| 1393 | TAD NEWBUF /LINK = MAX FLAG, SIGN = VIRGIN FLAG |
| 1394 | SNL SMA CLA /IF NEITHER IS ON, |
| 1395 | JMS I (LDRIO /READ THE BLOCKS INTO THE BUFFER |
| 1396 | GOTBLK, TAD I BP |
| 1397 | DCA I BPPREV /BREAK NEW BUFFER OUT OF THE CHAIN |
| 1398 | STA |
| 1399 | TAD NDX5 /NDX5 CONTAINS PTR TO OLD "MOST RECENT" + 1 |
| 1400 | DCA I BP /MAKE NEW BUFFER THE BUFFER OF LATEST REFERENCE |
| 1401 | QUIKIE, JMS NEWBUF /SET UP FOR PUTBIN |
| 1402 | JMP I NEWBB /AND RETURN |
| 1403 | \f/COME HERE TO CUMPUTE A 15 BIT |
| 1404 | /BUFFER ADDRESS FROM AN ENTRY |
| 1405 | /IN THE BINARY BUFFER TABLE. |
| 1406 | |
| 1407 | NEWBUF, 0 |
| 1408 | TAD [3 |
| 1409 | TAD BP |
| 1410 | DCA OUTFLD |
| 1411 | TAD I OUTFLD /LOAD ADRESS AND FIELD |
| 1412 | AND (7600 |
| 1413 | DCA BLKBEG |
| 1414 | TAD I OUTFLD |
| 1415 | AND (70 |
| 1416 | TAD (CDF |
| 1417 | DCA OUTFLD /DECOMPOSE INTO ADDRESS AND CDF |
| 1418 | JMP I NEWBUF |
| 1419 | |
| 1420 | BPPREV, 0 |
| 1421 | MAXBLK, 0 |
| 1422 | \f/COME HERE TO STORE 1 WORD |
| 1423 | /IN SOME BINARY OUTPUT BUFFER |
| 1424 | |
| 1425 | PUTBIN, 0 |
| 1426 | DCA TMP2 /SAVE DATA |
| 1427 | TAD ORGFLG /N.E. 0 MEANS |
| 1428 | SZA CLA /INHIBIT |
| 1429 | JMP I PUTBIN /BINARY OUTPUT BECAUSE OF NEW ORIGIN |
| 1430 | TAD OUTINH /N.E. 0 MEANS |
| 1431 | SNA CLA /INHIBIT BIN OUT BECAUSE OF BAD ORIGIN |
| 1432 | JMP OUTFLD /ITS OK |
| 1433 | TAD I OUTINH /SET B0 OF |
| 1434 | RAL /OFFENDING GST |
| 1435 | CLL CML RAR /SYMBOL |
| 1436 | DCA I OUTINH /SEE SUBR REORG |
| 1437 | JMP I PUTBIN /FOR DEFINITION OF C(OUTINH) |
| 1438 | OUTFLD, 0 /CDF X |
| 1439 | TAD TMP2 /STORE IT |
| 1440 | DCA I BLKSIZ /AWAY |
| 1441 | CDF 10 /RESTORE FLD |
| 1442 | ISZ BLKSIZ /BUMP PTR |
| 1443 | TAD BLKBEG |
| 1444 | CIA |
| 1445 | TAD BLKSIZ /HAVE WE |
| 1446 | AND (1777 /CROSSED A |
| 1447 | SZA CLA /BLK BOUND? |
| 1448 | JMP I PUTBIN /NO |
| 1449 | TAD NEWBLK |
| 1450 | TAD [4 |
| 1451 | DCA NEWBLK |
| 1452 | TAD NEWLEN |
| 1453 | TAD [-4 |
| 1454 | DCA NEWLEN /BUMP BLOCK NUMBER AND REMAINING BLOCKS |
| 1455 | JMS NEWBB /SELECT A NEW BUFFER |
| 1456 | TAD BLKBEG |
| 1457 | DCA BLKSIZ /RE-INITIALIZE WORD POINTER |
| 1458 | JMP I PUTBIN |
| 1459 | CURBLK, 0 |
| 1460 | PAGE |
| 1461 | \f/COME HERE TO SCAN AND RELOCATE |
| 1462 | /THE TEXT OF AN ENTIRE MODULE |
| 1463 | |
| 1464 | TXTSCN, 0 /SET CTRL WD |
| 1465 | JMS I (GETCTL /ARGS. RTN TO .+1,2,3, OR 4 |
| 1466 | JMP RELC2 /SPECIAL TYPE |
| 1467 | JMP RELC6 /DIRECT COPY |
| 1468 | JMP REORG /NEW ORIGIN |
| 1469 | TAD I GPTR /RELOCATE FPP |
| 1470 | AND [17 /PAIR |
| 1471 | DCA TMP0 /GST SYM TYPE |
| 1472 | AC7776 /IS RELOCATION |
| 1473 | TAD TMP0 /WITH RESPECT |
| 1474 | SZA CLA /TO GST EXTERN? |
| 1475 | JMP BY2 /NO |
| 1476 | SETTRP, JMS GETTXT /BAD TEXT. |
| 1477 | CLA |
| 1478 | JMS GETTXT /IGNORE RELOCATION AND MAKE AN ERROR TRAP |
| 1479 | CLA |
| 1480 | TAD (3000 /=TRAP3 |
| 1481 | JMS I [PUTBIN |
| 1482 | TAD (JUERR /RTS ERROR |
| 1483 | JMS I [PUTBIN /TRAP SUBR |
| 1484 | BY2M5, TAD I GPTR /SET ILLEGAL |
| 1485 | RAL /REFERENCE |
| 1486 | CLL CML RAR /BIT IN |
| 1487 | DCA I GPTR /GST TYPE WD |
| 1488 | JMP TXTSCN+1 /DO NEXT |
| 1489 | BY2, TAD (-5 /RELOCATE TO |
| 1490 | TAD TMP0 /A MULTIPLE |
| 1491 | SNA CLA /ENTRY? |
| 1492 | JMP SETTRP /YES |
| 1493 | TAD I GPTR /CHECK FOR LEGALITY OF REFERENCE |
| 1494 | AND (0360 /WITH RESPECT TO LEVEL AND OVERLAY NUMBER |
| 1495 | DCA TMP1 / = GST OVER NUM |
| 1496 | TAD LNONUM /=CURNT MOD |
| 1497 | AND [3400 /LEVEL NUM |
| 1498 | DCA TMP2 |
| 1499 | TAD I GPTR |
| 1500 | AND [3400 |
| 1501 | SNA /RELOCATE TO MAIN? |
| 1502 | JMP RELC /YES, ITS OK |
| 1503 | CIA /IS RELOCATION |
| 1504 | TAD TMP2 /ACROSS LEVELS |
| 1505 | SZA /? |
| 1506 | JMP TSTTRP /YES |
| 1507 | TAD LNONUM /=CURRENT MOD |
| 1508 | AND (0360 /OVER NUM |
| 1509 | CIA |
| 1510 | TAD TMP1 /WITHIN LEVL CALL IS LEGAL ONLY |
| 1511 | SNA CLA /IF WITHIN OVR ALSO. |
| 1512 | JMP RELC /ITS OK |
| 1513 | \f /** TSTTRP REPLACED BY "SKP CLA" IF /U SPECIFIED |
| 1514 | TSTTRP, SMA CLA /NOT OK - IS X LEVL LO TO HI? |
| 1515 | JMP SETTRP /NO |
| 1516 | TAD I BPTR /TRAP VECT |
| 1517 | TAD [7770 /SUBTRACT 1 FROM ENTRY NUM |
| 1518 | AND [7770 /IN HIGH 9 BITS OF GST WD 5 |
| 1519 | CLL RAR /DIV BY 2 TO GET ENTRY NUM * 4 |
| 1520 | TAD TRAPV+1 /LINK IS 0 |
| 1521 | DCA I (SYMX+1 /STORE VECTOR ENTRY ADDRESS |
| 1522 | RAL |
| 1523 | TAD TRAPV /IN SYMX AS A DOUBLEWORD |
| 1524 | DCA I (SYMX |
| 1525 | TAD (SYMX |
| 1526 | JMS I [SETBPT /COMBINE IT WITH TXT PAIR |
| 1527 | JMS I (MERGE /I.E. RELOCATE TO TRAP VECT |
| 1528 | TAD FTMP0 |
| 1529 | AND [7 |
| 1530 | SNA |
| 1531 | TAD FTMP0+1 |
| 1532 | SNA CLA /WERE LOW ORDER 15 BITS OF TXT=0? |
| 1533 | JMP TXTSCN+1 /YES, ITS OK |
| 1534 | JMP BY2M5 /SET ILL REF BIT. NOTE TRAP IS NOT GENERATED |
| 1535 | |
| 1536 | RELC, JMS I (MERGE /MAKE FPP PAIR AND STORE IN BIN BUFFER |
| 1537 | JMP TXTSCN+1 /DO NEXT |
| 1538 | RELC2, TAD REFPTR /CHK IND. |
| 1539 | SNA CLA /FOR SPECIAL TYPE |
| 1540 | JMP I TXTSCN /0=END OF TEXT |
| 1541 | JMP TXTSCN+1 /1=IGNORE 1 WORD OF TEXT |
| 1542 | RELC6, TAD REFPTR /IND HOLDS |
| 1543 | CIA /NUM OF WDS |
| 1544 | DCA REFPTR /TO COPY |
| 1545 | JMS GETTXT |
| 1546 | JMS I [PUTBIN |
| 1547 | ISZ REFPTR |
| 1548 | JMP .-3 |
| 1549 | JMP TXTSCN+1 |
| 1550 | REORG, ISZ ORGFLG /SET INHIBIT BIN OUT FLG |
| 1551 | JMS I (MERGE /GET NEW ORIGIN |
| 1552 | TAD I GPTR /SEE IF |
| 1553 | AND (3760 /ORIGIN IS |
| 1554 | CIA /TO A DIFFERENT |
| 1555 | TAD LNONUM /BINARY SECTION |
| 1556 | SZA CLA /? |
| 1557 | TAD GPTR /YES - SET INHIBIT/ERROR FLAG |
| 1558 | SNA |
| 1559 | JMS I (NEWORG /NO - SET UP NEW ORIGIN |
| 1560 | DCA OUTINH |
| 1561 | DCA ORGFLG |
| 1562 | JMP TXTSCN+1 |
| 1563 | \fGETTXT, 0 /GET ONE WORD OF TEXT FROM THE BUFFER |
| 1564 | ISZ BLKCNT |
| 1565 | JMP RDTCDF |
| 1566 | CDF /TO READ IN |
| 1567 | JMS I [IOHAN /RALF TEXT |
| 1568 | 0 /PTR TO UNIT |
| 1569 | 200^4!10 /OR 200^17!20 |
| 1570 | 0 |
| 1571 | TXTBLK, 2 |
| 1572 | TAD .-2 /SET TXT |
| 1573 | DCA RBLK /BUF PTR |
| 1574 | TAD TXTWDS /-NUM OF |
| 1575 | DCA BLKCNT /WDS-1 IN |
| 1576 | RDTCDF, CDF 10 /OR CDF 20 |
| 1577 | TAD I RBLK |
| 1578 | CDF 10 |
| 1579 | ISZ RBLK |
| 1580 | JMP I GETTXT /RETURN |
| 1581 | TXTWDS, -2000 /OR -7400 |
| 1582 | PAGE |
| 1583 | \f/ENTER A SYMBOL INTO GST. PTR TO ESD |
| 1584 | /SYMBOL IS IN AC |
| 1585 | |
| 1586 | JMP I PUTSYM /FOR XPAGE RTN |
| 1587 | PUTSYM, 0 |
| 1588 | JMS I [LOOK /LOOKUP SYMBOL |
| 1589 | JMP I (NOMAT /NEW SYMBOL DISPOSITION |
| 1590 | /TYPE OF MATCH 2 EXTERNS, 2 COMMONS, ETC. |
| 1591 | /ETYP HOLDS SYM TYPE FOR ESD GTYP HOLDS GST TYPE |
| 1592 | |
| 1593 | TAD (5 |
| 1594 | DCA TMP0 /FOR ME,MS |
| 1595 | TAD ETYP |
| 1596 | TAD (-7 |
| 1597 | SPA |
| 1598 | TAD (2 |
| 1599 | TAD [4 |
| 1600 | RAR CLL |
| 1601 | CMA |
| 1602 | DCA TMP2 |
| 1603 | CML CMA /GET -1 |
| 1604 | TAD GTYP /RESTR LNK, GET GST TYP-1 |
| 1605 | RAL |
| 1606 | TAD (MYSTIC /GET ADDR OF 4 CODES |
| 1607 | DCA TMP1 |
| 1608 | CDF 0 |
| 1609 | TAD I TMP1 /GET 4 CODES |
| 1610 | CDF 10 |
| 1611 | CTST, ISZ TMP2 /WHICH CODE ? |
| 1612 | JMP SHFT3 /NOT THIS 1 |
| 1613 | AND [7 |
| 1614 | TAD T2J /PICK UP JMP I |
| 1615 | DCA .+1 |
| 1616 | 0 |
| 1617 | T2J, JMP I .+1 |
| 1618 | ISCOM3 /FORT COMM N FLD1 SECTION |
| 1619 | PUTSYM-1 /ESD IS EXT JUST EXIT |
| 1620 | REP /GST IS EXT GO REPLACE |
| 1621 | MULENT /MULTIPLE ENTS |
| 1622 | ISCOM /2 F COMMS OR 2 COMMZS OR 2 FLD1S |
| 1623 | BADDY /MULTIPLE SECTS |
| 1624 | BADDY /UNDEF TYPES |
| 1625 | BADDY |
| 1626 | BADDY |
| 1627 | SHFT3, RAR |
| 1628 | RTR |
| 1629 | JMP CTST |
| 1630 | \fBADDY, TAD MCNT |
| 1631 | TAD MBGCNT |
| 1632 | DCA MTMCNT /SAVE PARAMS FOR ERROR MESSAGE LATER |
| 1633 | CLA IAC |
| 1634 | TAD LNONUM /MULTIPLE SECTION |
| 1635 | DCA FATAL |
| 1636 | ISZ TMP0 /IS FATAL |
| 1637 | MULENT, TAD I GPTR /SET TYPE TO |
| 1638 | AND (7760 /5 FOR MUL ENT |
| 1639 | TAD TMP0 /OR 6 FOR |
| 1640 | DCA I GPTR /MUL. SECTION |
| 1641 | JMP I PUTSYM |
| 1642 | |
| 1643 | ISCOM3, TAD (11 /F COMM N FLD1 (RITE9=11) |
| 1644 | DCA I GPTR /SET TYP TO F1 |
| 1645 | ISZ F1FLG |
| 1646 | ISCOM, JMS I [SETBGX |
| 1647 | TAD BPTR /UPDATE |
| 1648 | DCA I REFPTR /ESD REFERENCE PTR |
| 1649 | JMS I (MAXCOM /PUT LARGER OF 2 COMMONS INTO |
| 1650 | JMP I PUTSYM /GST WORDS 5 AND 6 |
| 1651 | MTMCNT, 0 |
| 1652 | \f/THE FOLOWING TABLE IS USED TO |
| 1653 | /DISPOSITION SYMBOL MATCHES BETWEEN |
| 1654 | /A RALF ESD AND A GST SYMBOL |
| 1655 | /EACH DIGIT IN THE TABLE IS AN INDEX |
| 1656 | /INTO A TABLE THAT IS USED TO CALL |
| 1657 | /ROUTINES TO HANDLE THE VARIOUS TYPES |
| 1658 | /OF MATCHES: |
| 1659 | / 0=FORT COMMON AND FLD1 SECTION |
| 1660 | / 1=ANY MATCH WITH ESD EXTERN |
| 1661 | / 2=ANY MATCH WITH GST EXTERN |
| 1662 | / 3=MULTIPLE ENTRY POINTS |
| 1663 | / 4=2 FORT COMMONS OR 2 FIELD1 |
| 1664 | / SECTIONS OR 2 COMMZ SECTS |
| 1665 | / 5=MULTIPLE SECTIONS |
| 1666 | / 6-7=UNDEFINED AND HALT |
| 1667 | / |
| 1668 | /THE FIRST 2 WORDS COVER ALL POSSIBLE |
| 1669 | /MATCHES WITH GST TYPE 1, THE SECOND |
| 1670 | /TWO WORDS ARE FOR GST TYPE 2 ETC |
| 1671 | /THE 4 DIGITS IN THE FIRST WORD OF |
| 1672 | /ANY PAIR CORRESPOND TO ESD TYPES |
| 1673 | /11,7,3,1 RESPECTIVELY |
| 1674 | /ESD CORRESPONDENCE FOR THE 2ND WORD |
| 1675 | /IS 12,10,4,2 |
| 1676 | /ESD TYPE 12 IS UNDEFINED |
| 1677 | |
| 1678 | MYSTIC, 5553 /G1 E(11,7,3,1) |
| 1679 | 7551 /E(12,10,4,2) |
| 1680 | 2222 /G2 E(11,7,3,1) |
| 1681 | 7221 /E(12,10,4,2) |
| 1682 | 0545 /G3 |
| 1683 | 7551 |
| 1684 | 5555 /G4 |
| 1685 | 7551 |
| 1686 | 5553 /G5 |
| 1687 | 7551 |
| 1688 | 5555 /G6 |
| 1689 | 7551 |
| 1690 | 5555 /G7 |
| 1691 | 7551 |
| 1692 | 5555 /G10 |
| 1693 | 7451 |
| 1694 | 4505 /G11 |
| 1695 | 7551 |
| 1696 | \f |
| 1697 | ESDSCN, 0 |
| 1698 | CLL STA RTL /-3 |
| 1699 | TAD I (0 |
| 1700 | SZA CLA |
| 1701 | JMP I (NOTREL /NOT RALF MODULES - NASTY! |
| 1702 | TAD I (2 /CHK FOR DP |
| 1703 | SPA CLA /HARDWARE REQUIRED |
| 1704 | ISZ DPFLG /ISZ=YES |
| 1705 | AC7776 /ENTER ESD OF MODULE |
| 1706 | DCA EPTR /INTO GST. ESD STARTS AT 10000 |
| 1707 | JMS I (NXTESD /GET NXT 1 |
| 1708 | JMP I ESDSCN /NO MORE |
| 1709 | TAD EPTR |
| 1710 | JMS PUTSYM /ENTER IT |
| 1711 | JMP .-4 /DO ANOTHER |
| 1712 | |
| 1713 | MSMSG, TEXT /MULT SECT/ |
| 1714 | CORMSG, TEXT /OVER CORE/ |
| 1715 | LIMSG, TEXT /OVER IMAG/ |
| 1716 | MNMSG, TEXT /NO MAIN/ |
| 1717 | PAGE |
| 1718 | \f/CONTINUATION OF SUB PUTSYM |
| 1719 | |
| 1720 | REP, DCA GTYP |
| 1721 | AC7775 /REPLACE GST |
| 1722 | TAD ETYP /EXTERN |
| 1723 | SNA /IS IT A REF TO COMMON? |
| 1724 | JMP MNSECN /YES |
| 1725 | TAD M4 /IS IT A REF |
| 1726 | SMA CLA /8 MODE SECN ? |
| 1727 | JMP NOMAT |
| 1728 | TAD I GPTR /NO CHK FOR |
| 1729 | AND [3400 /CROSS LEVEL |
| 1730 | CIA /REFERENCE |
| 1731 | DCA TMP0 /COMPARE WITH |
| 1732 | TAD LNONUM /CURNT LEVEL |
| 1733 | AND [3400 |
| 1734 | SNA /DOING MAIN ? |
| 1735 | JMP NOMAT /YES DONT CHK FOR TRAP ENTRY |
| 1736 | TAD TMP0 |
| 1737 | SNA CLA /X LEVEL? |
| 1738 | JMP NOMAT |
| 1739 | ISZ TRPCNT /YES BUMP TRAP VECTOR COUNTER |
| 1740 | AC4000 /SET B0=1, GST SYM WILL GO IN TRAP VECTOR |
| 1741 | NOMAT, DCA GTYP |
| 1742 | TAD ETYP /ENTER GST |
| 1743 | TAD (.+3-1 /WORDS 4,5,6. |
| 1744 | DCA TMP0 /DISPATCH ESD |
| 1745 | JMP I TMP0 /TYPE 1,2,3,4 |
| 1746 | JMP ENTMN2 /ENTRY POINT |
| 1747 | JMP ENTMN /EXTERN |
| 1748 | JMP MNSECN /COMMON SECN |
| 1749 | JMP PRGSCN /PROGRAM SECN |
| 1750 | M4, -4 |
| 1751 | M7, -7 |
| 1752 | JMP MNS8 /GEN 8 MODE SCT |
| 1753 | JMP MNCZ /COMM 8 MODE |
| 1754 | JMP MNF1 /FLD1 8 MODE |
| 1755 | \fPRGSCN, TAD LNONUM |
| 1756 | AND [3400 /IS IT A MAIN |
| 1757 | SNA CLA /? |
| 1758 | JMP MNSECN /YES |
| 1759 | TAD I [OVRSIZ |
| 1760 | DCA TMP0 |
| 1761 | TAD I [OVRSIZ+1 |
| 1762 | DCA TMP1 /SAVE OLD OVERLAY SIZE |
| 1763 | CLL |
| 1764 | TAD I EPT2 |
| 1765 | TAD TMP1 |
| 1766 | DCA I [OVRSIZ+1 |
| 1767 | RAL |
| 1768 | TAD I EPTR |
| 1769 | TAD TMP0 |
| 1770 | DCA I [OVRSIZ /SET OVLY SIZE = OVLY SIZE + SECTION SIZE |
| 1771 | TAD TMP0 |
| 1772 | DCA I EPTR |
| 1773 | TAD TMP1 |
| 1774 | DCA I EPT2 /SET SECTION SIZE = OLD OVERLAY SIZE |
| 1775 | TAD GPTR /PUT ADDR OF |
| 1776 | IAC /GST WD5 OF |
| 1777 | DCA I REFPTR /SECTION SYM INTO ESD REFERENCE PAGE |
| 1778 | ENTM2, TAD [LVPTR /SET REFERENCE |
| 1779 | DCA REFPTR /TO PARENT SYM =WD5 OF #YLVLN |
| 1780 | ENTMN, TAD LNONUM /=CURNT OVRLAY AND CURNT LEVEL NUM |
| 1781 | JMP MNSEC5 |
| 1782 | \fENTMN2, TAD LNONUM /SEE IF ENTRY |
| 1783 | AND [3400 /POINT IS IN |
| 1784 | SNA CLA /MAIN? |
| 1785 | JMP ENTMN /YES |
| 1786 | TAD I REFPTR /IS PARENT |
| 1787 | JMS I [SETBPT /REFERENCE TO |
| 1788 | CLA CMA /COMMON? |
| 1789 | TAD REFPTR /LOOK FOR |
| 1790 | DCA TMP0 /TYPE CODE 3 |
| 1791 | AC7775 |
| 1792 | TAD I TMP0 |
| 1793 | SNA |
| 1794 | JMP ENTMN /YES, HANDLE LIKE A MAIN ENTRY POINT |
| 1795 | TAD M4 /IS IT A REF |
| 1796 | SNA CLA /TO AN 8 SECT? |
| 1797 | JMP MNSEC5 /YES HANDLE LIKE MAIN |
| 1798 | CLL |
| 1799 | TAD I BPT2 |
| 1800 | TAD I EPT2 |
| 1801 | DCA I EPT2 /SET OVR ENT = OVR ENT + OVR |
| 1802 | RAL |
| 1803 | TAD I BPTR |
| 1804 | AND [7 /WATCH HIGH-ORDER BITS |
| 1805 | TAD I EPTR |
| 1806 | DCA I EPTR |
| 1807 | JMP ENTM2 /SIZE OF SECTION |
| 1808 | MNF1, ISZ F1FLG /SET FOR NE TO |
| 1809 | JMP MNSECN /0 SO DO8S WILL |
| 1810 | MNCZ, ISZ CZFLG /KNOW THESE |
| 1811 | JMP MNSECN /TYPES OF SECTS |
| 1812 | \fMNS8, ISZ S8FLG /EXIST AND WILL FIT THEM INTO CORE |
| 1813 | MNSECN, TAD GPTR /PUT ADDR OF |
| 1814 | IAC /GST WD5 OF |
| 1815 | DCA I REFPTR /SECTION SYM INTO ESD REFERENCE PAGE |
| 1816 | TAD (SYMX+1 /THIS VALUE |
| 1817 | DCA REFPTR /YIELDS 0 IN HI 9 WD 5 OF GST SYM |
| 1818 | MNSEC5, TAD ETYP /SYM TYPE TO AC8-11. AC MAY HAVE |
| 1819 | TAD GTYP /LEVEL AND OVR BITS (AC1-7) ALREADY SET |
| 1820 | DCA I GPTR /GST WD4 HOLDS SYMBOL TYPE |
| 1821 | JMS I [SETBGX /SET BPTR TO GST WORD |
| 1822 | DCA TMP0 /PREPARE FOR DIVISION BY 7 |
| 1823 | TAD I REFPTR |
| 1824 | TAD (2-SYMTBL /GET OFFSET FROM SYMTBL |
| 1825 | TAD M7 |
| 1826 | ISZ TMP0 |
| 1827 | SMA |
| 1828 | JMP .-3 /DIVIDE BY REPEATED SUBTRACTION |
| 1829 | STA /AC IS NOT NECESSARILY ZERO! |
| 1830 | TAD TMP0 |
| 1831 | CLL RTL /ROTATE SYMBOL NUMBER INTO AC BITS 0-8 |
| 1832 | RAL |
| 1833 | TAD I EPTR /AND INSERT IT INTO THE ADDRESS |
| 1834 | DCA I BPTR /DOUBLEWORD TO FORM THE GST |
| 1835 | TAD I EPT2 /ADDRESS DOUBLEWORD |
| 1836 | DCA I BPT2 |
| 1837 | JMP I .+1 |
| 1838 | PUTSYM-1 |
| 1839 | PAGE |
| 1840 | \fSTPAS1, DCA I NDX0 /ZERO OUT GST |
| 1841 | ISZ STCNT /NDX0 SET UP BY PASS0 |
| 1842 | JMP STPAS1 |
| 1843 | JMS I (SETCNT /SET MOD CNTS |
| 1844 | JMS I (RDRLES /READ A RALF ESD |
| 1845 | JMS I (ESDSCN /PROCESS IT |
| 1846 | JMS I (ADVOVR /UPDATE COUNTS |
| 1847 | JMP .-3 /DO NEXT |
| 1848 | TAD LIBRSW |
| 1849 | SNA CLA /LIBRARY SEARCH POSSIBLE? |
| 1850 | JMP I (DOCORE /NO - SKIP IT |
| 1851 | TAD SYMTM3 /TOP OF |
| 1852 | DCA GPTR /GST |
| 1853 | TAD RFPTR1 /1ST FREE |
| 1854 | DCA LBPTR /ENTRY IN MODULE TBL THIS IS WHERE LIBR MODULES WILL GO |
| 1855 | JMS I (GETEXT /GET AN |
| 1856 | JMP .+3 /EXTERN |
| 1857 | LOP4, JMS I (GETEXT |
| 1858 | TAD RESFLG /=1 IF |
| 1859 | DCA IOFLG /LIBR CAT IS ENTIRELY CORE RES |
| 1860 | DCA LBREC /SET I/O FOR |
| 1861 | DCA LSTBLK /BLK 0 OF LIBRARY |
| 1862 | DCA RBLK /SET REL BLK |
| 1863 | DCA RLEN /AND LENGTH |
| 1864 | JMP BY3 /TO 0 |
| 1865 | NXTENT, TAD NDX1 /ADV TO |
| 1866 | AND [-4 /NXT ENTRY |
| 1867 | TAD (2 /BUT GET |
| 1868 | DCA NDX1 /LENGTH OF |
| 1869 | JMS I (GETLEN /PREV ONE 1ST |
| 1870 | ISZ NUMENT /MORE IN CORE? |
| 1871 | JMP BY3+1 /YES |
| 1872 | TAD IOFLG /END OF |
| 1873 | SZA CLA /CATALOGUE? |
| 1874 | JMP LOP4 /YES, NO MATCH ON THIS EXTERN |
| 1875 | BY3, JMS RDLBR /GET NEXT |
| 1876 | TAD [-4 /CAT. BLKS |
| 1877 | TAD GPTR /LOOK FOR |
| 1878 | DCA NDX0 /LIBR MATCH |
| 1879 | AC7775 |
| 1880 | DCA TMP0 |
| 1881 | \fLBFLD, CDF 0 /CDF 20 IF GREATER THAN 8K CORE |
| 1882 | TAD I NDX1 |
| 1883 | CDF 10 |
| 1884 | CMA /IS IT THE END |
| 1885 | SNA /OF CAT ? |
| 1886 | JMP LOP4 /YES |
| 1887 | IAC |
| 1888 | TAD I NDX0 |
| 1889 | SZA CLA /MATCH 1? |
| 1890 | JMP NXTENT /NO TRY NXT LIBR ENTRY |
| 1891 | ISZ TMP0 /ALL MATCH? |
| 1892 | JMP LBFLD /NO |
| 1893 | JMS I (GETLEN /UPDATE RBLK, |
| 1894 | CLA CMA /RLEN |
| 1895 | TAD RFPTR1 /ENTER MOD |
| 1896 | DCA NDX0 /INTO TBL |
| 1897 | TAD I (MODTBL /LIBR UNIT |
| 1898 | DCA I NDX0 |
| 1899 | TAD RLEN /LENGTH OF |
| 1900 | DCA I NDX0 /MODULE |
| 1901 | TAD I (MODTBL+2 /STARTING BLOCK OF LIBRARY, + |
| 1902 | TAD RBLK / RELATIVE BLOCK OF MODULE = |
| 1903 | DCA I NDX0 / ABSOLUTE BLK OF MOD |
| 1904 | ISZ LBCNT /=NUM OF LIBR MOD IN MAIN |
| 1905 | TAD GPTR /SAVE GST |
| 1906 | DCA LSTBLK /PTR |
| 1907 | JMS I (RDRLES /READ IN ESD |
| 1908 | DCA LNONUM /SET FOR MAIN |
| 1909 | JMS I (ESDSCN /PROCESS ESD |
| 1910 | TAD [3 /ADV MODULE |
| 1911 | TAD RFPTR1 /TBL PTR |
| 1912 | DCA RFPTR1 |
| 1913 | TAD LSTBLK |
| 1914 | DCA GPTR |
| 1915 | ISZ MLEFT /MOD TBL FULL? |
| 1916 | JMP LOP4 /NO DO SOME MORE |
| 1917 | JMP I (DOCORE |
| 1918 | |
| 1919 | LIBRSW, 0 /NON-ZERO IF LIBRARY SEARCH POSSIBLE |
| 1920 | STCNT, SYMTBL-OVLTBL |
| 1921 | \fRDLBR, 0 |
| 1922 | TAD IOFLG /IS THIS |
| 1923 | SZA CLA /THE END |
| 1924 | JMP ENDLB /OF CAT.? |
| 1925 | CDF /NO |
| 1926 | JMS I [IOHAN /READ SOME |
| 1927 | MODTBL /MORE |
| 1928 | LBARG, 200^5 /OR 200^17!20 |
| 1929 | LB0BUF /OR 0 |
| 1930 | LBREC, 0 /REL CAT BLK |
| 1931 | TAD LBREC /GET -NUM OF |
| 1932 | CIA /BLKS READ, |
| 1933 | TAD LSTBLK /AND COMPUTE |
| 1934 | DCA TMP0 /THE NUM OF |
| 1935 | TAD (-100 /ENTRIES IN |
| 1936 | ISZ TMP0 /CORE. THERE |
| 1937 | JMP .-2 /ARE 100 PER |
| 1938 | DCA OLDCNT /BLOCK |
| 1939 | TAD LBREC /UPDATE |
| 1940 | DCA LSTBLK /LSTBLK |
| 1941 | ENDLB, TAD OLDCNT |
| 1942 | DCA NUMENT |
| 1943 | CLA CMA /SET PTR TO |
| 1944 | TAD LBARG+1 /1ST ENTRY |
| 1945 | DCA NDX1 |
| 1946 | CDF 10 |
| 1947 | JMP I RDLBR |
| 1948 | LSTBLK, 0 |
| 1949 | MLEFT, 0 |
| 1950 | RESFLG, 1 |
| 1951 | NUMENT, 0 |
| 1952 | OLDCNT, 0 |
| 1953 | PAGE |
| 1954 | |
| 1955 | \f/END OF PASS 1 - FIT EVERYTHING INTO CORE |
| 1956 | |
| 1957 | DOCORE, TAD TRPCNT |
| 1958 | SNA CLA |
| 1959 | JMP LOP3-3 /NO OVRS |
| 1960 | TAD (TRPSYM /ENTER TRAP |
| 1961 | JMS I [LOOK /VECT. SYM |
| 1962 | TAD [4 /ITS A |
| 1963 | DCA I GPTR /MAIN SECN |
| 1964 | ISZ GPTR /GST WD6 |
| 1965 | ISZ GPTR /HOLDS LENGTH |
| 1966 | TAD TRPCNT /GET SIZE OF |
| 1967 | RTL CLL /TRAP VECTOR |
| 1968 | DCA I GPTR /= NUMBER OF ENTRIES * 4 |
| 1969 | JMS I (DO8S /GO DO ALL 8 MODE SECTIONS |
| 1970 | TAD SYMTM3 /ALLOCATE |
| 1971 | DCA GPTR /CORE FOR |
| 1972 | LOP3, JMS I [GETTYP /ALL MAIN NON 8 MODE |
| 1973 | JMP DUNMN /SECTIONS |
| 1974 | AC7775 /4=PROG |
| 1975 | TAD I GPTR /SECN, 3=COMMON |
| 1976 | RAR CLL |
| 1977 | SNA CLA |
| 1978 | JMS I (FIT /GO FIT SECN |
| 1979 | JMP LOP3 |
| 1980 | \fDUNMN, STA |
| 1981 | DCA I NDX7 /TERMINATE OVERLAY LENGTH LIST |
| 1982 | TAD A1 |
| 1983 | DCA I (OVLTBL /STORE ENTRY FOR LEVEL 0 |
| 1984 | TAD A1+1 |
| 1985 | DCA I (OVLTBL+1 |
| 1986 | TAD A1+1 |
| 1987 | CLL |
| 1988 | TAD [377 |
| 1989 | AND [7400 |
| 1990 | SZL |
| 1991 | ISZ A1 /(WATCH CARRY!) |
| 1992 | DCA A1+1 /DITTO FOR NON-FIELD 0 |
| 1993 | CLA IAC /WILL HOLD |
| 1994 | DCA BLKCNT /SIZE OF LOADER IMAGE |
| 1995 | TAD (1460 /RESET INT. |
| 1996 | DCA I (LEVSYM+2 /#YLVLN SYM |
| 1997 | TAD (QUSRLV-1 /WHERE OVRLAY |
| 1998 | DCA NDX3 /DSRN INFO GOES IN LHDR |
| 1999 | CLA IAC |
| 2000 | DCA I NDX3 /USER MAIN IS LEVEL 0 |
| 2001 | TAD (10 |
| 2002 | DCA I NDX3 /SET UP LOADING INFORMATION FOR USER MAIN |
| 2003 | STA /IN THE USRLV TABLE JUST LIKE |
| 2004 | TAD A1 /ANY OTHER OVERLAY LEVEL |
| 2005 | CLL RAR |
| 2006 | TAD A1+1 /LENGTH HAS TO BE COMPUTED FROM |
| 2007 | RAL /CORE LENGTH |
| 2008 | RTL |
| 2009 | RTL |
| 2010 | DCA TMP0 |
| 2011 | CLA IAC |
| 2012 | DCA I NDX3 /USER MAIN FIRST THING IN LDR IMAGE |
| 2013 | TAD TMP0 |
| 2014 | DCA I NDX3 |
| 2015 | TAD TMP0 |
| 2016 | \fLOP6, TAD BLKCNT /UPDATE LENGTH |
| 2017 | DCA BLKCNT /OF LDR IMAGE |
| 2018 | ISZ I (LEVSYM+2 /NEXT LEVEL |
| 2019 | TAD (LEVSYM /LOOKUP |
| 2020 | ISZ NLVL |
| 2021 | JMS I [LOOK /#YLVLN |
| 2022 | JMP DUNLVL /DONE ALL OVR LEVELS |
| 2023 | JMS I (FIT /FIT LEVEL |
| 2024 | ISZ GPTR /IN CORE |
| 2025 | TAD I NDX3 /NUMBER OF OVERLAYS ON THIS LEVEL - ALSO |
| 2026 | CIA /SERVES AS AN INDICATOR TO THE RUN-TIME |
| 2027 | DCA TMP0 /SYSTEM THAT THIS LEVEL IS INITIALLY |
| 2028 | TAD I GPTR /UNINHABITED. |
| 2029 | AND [7 /GET FIELD BITS |
| 2030 | CLL RTL |
| 2031 | RAL |
| 2032 | ISZ GPTR |
| 2033 | TAD I GPTR /AND ADDRESS BITS |
| 2034 | DCA I NDX3 /PUT-EM OUT |
| 2035 | TAD BLKCNT /STARTING BLOCK OF LEVEL |
| 2036 | DCA I NDX3 |
| 2037 | TAD BLKSIZ |
| 2038 | DCA I NDX3 /LENGTH OF A SINGLE OVERLAY IN THE LEVEL |
| 2039 | TAD BLKSIZ /(NUM OF OVRS)* |
| 2040 | ISZ TMP0 /NUM OF BLKS |
| 2041 | JMP .-2 /AC=LENGTH OF LEVEL |
| 2042 | JMP LOP6 /DO NEXT LEVEL |
| 2043 | NLVL, 0 |
| 2044 | \fDUNLVL, CLA /AC NOT ZERO! |
| 2045 | TAD SYMTM3 /NOW RESOLVE |
| 2046 | DCA GPTR /ALL OTHER SYMBOLS |
| 2047 | LP1, JMS I [GETTYP |
| 2048 | JMP I (ALLDN1 /ALL DONE |
| 2049 | JMS I [SETBGX /SET BPTR TO GST WD5 |
| 2050 | TAD I BPTR |
| 2051 | AND [7770 |
| 2052 | SNA |
| 2053 | JMP LP1 /NO RELATIVE SYMBOL - DON'T RELOCATE |
| 2054 | DCA EPTR |
| 2055 | TAD EPTR /FIGURE OUT THE SYMBOL TABLE ADDRESS |
| 2056 | CLL RTR /OF THE RELATIVE SYMBOL BY |
| 2057 | STL CMA RAR /TAKING 7 * THE RELATIVE SYMBOL NUMBER |
| 2058 | TAD EPTR /IN BITS 0-8 AND ADDING IN THE BASE |
| 2059 | TAD (SYMTBL-1 /ADDRESS OF THE SYMBOL TABLE |
| 2060 | JMS I [SETEPT |
| 2061 | TAD I EPT2 |
| 2062 | CLL |
| 2063 | TAD I BPT2 |
| 2064 | DCA I BPT2 |
| 2065 | RAL |
| 2066 | TAD I BPTR |
| 2067 | AND [7 /THROW AWAY THE OLD RELATIVE SYMBOL # |
| 2068 | TAD I EPTR |
| 2069 | DCA I BPTR /AND PERFORM THE RELOCATION |
| 2070 | JMP LP1 /DO AGAIN |
| 2071 | PAGE |
| 2072 | \fALLDN1, TAD A1 |
| 2073 | DCA I (QHGHAD /SAVE HIGHEST PROGRAM ADDRESS |
| 2074 | TAD A1+1 /SO THAT RTS WILL KNOW HOW MUCH ROOM |
| 2075 | DCA I (QHGHAD+1 /IT HAS FOR BUFFERS & THINGS |
| 2076 | TAD FATAL /ANY MULTIPLE |
| 2077 | SNA /SECTIONS? |
| 2078 | JMP NOMSCT /NO |
| 2079 | DCA LNONUM |
| 2080 | CDF 0 |
| 2081 | TAD I (MTMCNT |
| 2082 | DCA MBGCNT /RESTORE ERROR PARAMETERS |
| 2083 | CDF 10 |
| 2084 | JMS I [RTNOS8 |
| 2085 | MSMSG |
| 2086 | NOMSCT, TAD (SASYM /GET STRT |
| 2087 | JMS I [LOOK /ADDR MAIN |
| 2088 | SKP /NO MAIN |
| 2089 | JMP .+3 |
| 2090 | JMS I [RTNOS8 |
| 2091 | MNMSG |
| 2092 | TAD SVMAIN /IF .NE. SET TO |
| 2093 | SZA /POINT TO GST |
| 2094 | TAD GPTR /FOR PND MAIN |
| 2095 | DCA SVMAIN /FOR /S THINGS IN SYMMAP RT. |
| 2096 | CDF 0 |
| 2097 | TAD I (JOUSYM |
| 2098 | DCA I (PRMAIN /ENABLING PRINTING OF #MAIN ON ERRORS |
| 2099 | CDF 10 |
| 2100 | ISZ GPTR |
| 2101 | TAD I GPTR /MAKE SWAPPER CONTROL WORD |
| 2102 | DCA I (QRTSWP /LEVEL 0, OVERLAY 0 IS MAIN |
| 2103 | ISZ GPTR |
| 2104 | TAD I GPTR /12 BIT ADDR |
| 2105 | DCA I (QRTSWP+1 |
| 2106 | TAD DPFLG /N.E. MEANS LDR IMAGE NEEDS DP HRDWRE |
| 2107 | DCA I (QDPFLG /RETAIN INFO IN LHDR FOR PASS3 |
| 2108 | \f CDF 0 /FETCH LDR |
| 2109 | TAD I (LDRNAM /IMAGE |
| 2110 | JMS I [IOHAN /HANDLER |
| 2111 | TAD BLKCNT |
| 2112 | CLL RTL /SINCE WE KNOW THE LENGTH OF THE |
| 2113 | SZL SPA /LDR IMAGE FILE, TELL IT TO THE USR |
| 2114 | CLA /(UNLESS ITS >255) |
| 2115 | RTL |
| 2116 | SZL |
| 2117 | CLA |
| 2118 | TAD I (LDRNAM /OPEN LDR |
| 2119 | CIF 10 /IMAGE |
| 2120 | JMS I USR |
| 2121 | 3 |
| 2122 | LDRBLK, LDRNAM+1 |
| 2123 | LDRLEN, 0 |
| 2124 | JMP I (ENTERR |
| 2125 | TAD BLKCNT /SEE IF LDR |
| 2126 | STL /IMAGE WILL |
| 2127 | TAD LDRLEN /FIT ON |
| 2128 | SZL SNA CLA /TENTATIVE FILE |
| 2129 | JMP .+3 /IT FITS |
| 2130 | JMS I [RTNOS8 /OUTPUT FILE |
| 2131 | LIMSG /TOO SMALL |
| 2132 | TAD BLKCNT /CLOSE LDR |
| 2133 | DCA I (LDCLEN /IMAGE FILE |
| 2134 | TAD (LIMGU-1 /PASS2 |
| 2135 | DCA NDX0 |
| 2136 | TAD I (LDRNAM |
| 2137 | CDF 10 |
| 2138 | AND [17 |
| 2139 | DCA I NDX0 /UNIT |
| 2140 | TAD BLKCNT |
| 2141 | DCA I NDX0 /LENGTH |
| 2142 | TAD LDRBLK |
| 2143 | DCA I NDX0 /STRT BLK |
| 2144 | CDF 0 |
| 2145 | JMS I [IOHAN |
| 2146 | LIMGU /WRITE OUT LOADER IMAGE HEADER BLOCK |
| 2147 | 4210 |
| 2148 | LHDR |
| 2149 | 0 /IN RELATIVE BLOCK 0 OF LOADER IMAGE FILE |
| 2150 | CDF 10 |
| 2151 | \f/SET UP TABLE THAT RELATES |
| 2152 | /BINARY SECTINS TO LDR |
| 2153 | /IMAGE RELATIVE BLOCK NUMS. |
| 2154 | /1 DBL WD AND 2 SINGLE-WD ARGUMENTS PER |
| 2155 | /SECTION (15 BIT ADDR, RELATIVE |
| 2156 | /BLOCK, AND LENGTH). THERE ARE |
| 2157 | /8 SECTIONS |
| 2158 | /(MAIN, LEVL1,....,LEVL7) |
| 2159 | /TABLE STARTS AT LHDR AND |
| 2160 | /IS USED BY SUBR NEWORG |
| 2161 | |
| 2162 | TAD (LHDR-1 |
| 2163 | DCA NDX1 |
| 2164 | TAD (QUSRLV /NOW DO THE |
| 2165 | DCA NDX0 /8 LEVELS |
| 2166 | TAD [-10 |
| 2167 | DCA TMP0 |
| 2168 | SETSLP, TAD I NDX0 |
| 2169 | DCA BSECTP |
| 2170 | TAD BSECTP |
| 2171 | CLL RTR |
| 2172 | RAR |
| 2173 | AND [7 |
| 2174 | DCA I NDX1 /FIRST COMES 15-BIT ADDRESS |
| 2175 | TAD BSECTP |
| 2176 | AND [7400 |
| 2177 | DCA I NDX1 |
| 2178 | TAD I NDX0 |
| 2179 | DCA I NDX1 /THEN RELATIVE BLOCK NUMBER |
| 2180 | TAD I NDX0 |
| 2181 | DCA I NDX1 /THEN LENGTH |
| 2182 | ISZ NDX0 /SKIP OVER NEXT OVERLAY COUNT |
| 2183 | ISZ TMP0 |
| 2184 | JMP SETSLP |
| 2185 | TAD (LHDR /PTR TO TOP |
| 2186 | DCA BSECTP /OF TABLE |
| 2187 | CLA CMA /SET FLG |
| 2188 | DCA P2FLG /FOR SUBR ADVOVR |
| 2189 | JMP I .+1 |
| 2190 | PASS2 |
| 2191 | PAGE |
| 2192 | \fDO8S, 0 /DO 8 SECTIONS |
| 2193 | TAD CZFLG /ANY 8 MODE |
| 2194 | SZA CLA /COMMONS ? |
| 2195 | JMS FIT8S /GO FIT IT |
| 2196 | TAD F1FLG /ANY 8 MODE |
| 2197 | SNA CLA /FIELD 1 ? |
| 2198 | JMP .+3 /NO |
| 2199 | STA |
| 2200 | JMS FIT8S |
| 2201 | TAD S8FLG /ANY GEN 8 MODE |
| 2202 | SNA CLA /SECTIONS ? |
| 2203 | JMP I DO8S /NO ALL DONE |
| 2204 | TAD [7770 /THIS WILL |
| 2205 | DCA OVRFLO /INHIBIT FLD1 OVER FLOW ERR |
| 2206 | CLA IAC |
| 2207 | JMS FIT8S |
| 2208 | JMP I DO8S |
| 2209 | |
| 2210 | /FIT 8 MODE SECTIONS |
| 2211 | |
| 2212 | FIT8S, 0 |
| 2213 | TAD [7770 |
| 2214 | DCA STYPE /-8M0DE SECT TYPE (7-11) |
| 2215 | TAD SYMTM3 /SEARCH GST FOR |
| 2216 | DCA GPTR /8 MODE SECTNS |
| 2217 | F8SECT, JMS I [GETTYP |
| 2218 | JMP I FIT8S /ALL DONE |
| 2219 | TAD STYPE |
| 2220 | TAD I GPTR |
| 2221 | SZA CLA /8 SECTION ? |
| 2222 | JMP F8SECT /NO |
| 2223 | JMS I [SETBGX |
| 2224 | TAD I BPT2 |
| 2225 | TAD (177 /ROUND SECTION LENGTH |
| 2226 | AND (7600 /TO A PAGE BOUNDARY |
| 2227 | DCA I BPT2 |
| 2228 | JMS I (FIT /NOW FIT IT |
| 2229 | TAD OVRFLO /SEE IF FLD1 |
| 2230 | TAD A1 /IS OVR FLOWED **** |
| 2231 | SPA SNA CLA /? |
| 2232 | JMP F8SECT /DO ANOTHER |
| 2233 | TOOBIG, JMS I [RTNOS8 |
| 2234 | CORMSG /PRINT ERROR & GO AWAY |
| 2235 | STYPE, 0 |
| 2236 | \fFIT, 0 /FIT SECTION |
| 2237 | JMS I [SETBGX /SET BPTR TO POINT TO GST WD5 |
| 2238 | TAD I BPT2 |
| 2239 | AND [7400 |
| 2240 | CLL RAL |
| 2241 | TAD I BPTR |
| 2242 | RTL |
| 2243 | RTL /GET LENGTH OF SEGMENT IN BLOCKS |
| 2244 | DCA BLKSIZ |
| 2245 | TAD I BPT2 |
| 2246 | CLL |
| 2247 | TAD A1+1 |
| 2248 | DCA TMP5 |
| 2249 | TAD A1+1 |
| 2250 | DCA I BPT2 |
| 2251 | TAD TMP5 |
| 2252 | DCA A1+1 /SET BPTR = A1 |
| 2253 | RAL /WHILE SETTING A1 = A1 + BPTR |
| 2254 | TAD I BPTR |
| 2255 | TAD A1 |
| 2256 | DCA TMP5 |
| 2257 | TAD TMP5 |
| 2258 | AND [7770 |
| 2259 | SZA CLA /IF NEW ADDRESS IS > 77777, |
| 2260 | JMP TOOBIG /THE THING WILL NEVER FIT |
| 2261 | TAD A1 |
| 2262 | DCA I BPTR |
| 2263 | TAD TMP5 |
| 2264 | DCA A1 |
| 2265 | JMP I FIT /RETURN |
| 2266 | \fLEVLUP, 0 /LEVEL = MAX (LEVEL, OVRSIZ); OVRSIZ=0 |
| 2267 | TAD I [OVRSIZ |
| 2268 | TAD LNONUM |
| 2269 | DCA I NDX7 /RECORD THE SIZE OF THIS OVERLAY |
| 2270 | TAD I [OVRSIZ+1 /FOR THE SYMBOL MAP PRINTOUT |
| 2271 | DCA I NDX7 |
| 2272 | TAD [OVRSIZ |
| 2273 | JMS I [SETEPT |
| 2274 | TAD I [LVPTR |
| 2275 | JMS I [SETBPT |
| 2276 | JMS MAXCOM |
| 2277 | DCA I EPT2 |
| 2278 | DCA I EPTR |
| 2279 | JMP I LEVLUP |
| 2280 | |
| 2281 | MAXCOM, 0 /BPTR = MAX (EPTR, BPTR) |
| 2282 | TAD I EPTR |
| 2283 | CIA CLL |
| 2284 | TAD I BPTR |
| 2285 | SZA CLA /CHECK HIGH-ORDER WORDS FIRST |
| 2286 | JMP .+4 /THEY DIFFER |
| 2287 | TAD I EPT2 |
| 2288 | CIA CLL |
| 2289 | TAD I BPT2 /USE LOW ORDER WORDS IF HIGH ORDERS ARE = |
| 2290 | SZL CLA /IS EPTR > BPTR? |
| 2291 | JMP I MAXCOM /NO - EXIT |
| 2292 | TAD I EPTR |
| 2293 | DCA I BPTR |
| 2294 | TAD I EPT2 |
| 2295 | DCA I BPT2 /YES - BPTR=EPTR |
| 2296 | JMP I MAXCOM |
| 2297 | \fGETLEN, 0 |
| 2298 | CDF 0 /OR CDF 20 |
| 2299 | TAD I NDX1 /LEN OF ENTRY |
| 2300 | CDF 10 |
| 2301 | SNA /=0 MEANS LENGTH HAS ALREADY |
| 2302 | JMP I GETLEN /BEEN COMPUTED. NE 0 MEANS |
| 2303 | DCA TMP0 /ENTRY POINT IS THE 1ST IN A NEW MODULE |
| 2304 | TAD RLEN /UPDATE REL |
| 2305 | TAD RBLK /BLOCK AND |
| 2306 | DCA RBLK /LENGTH OF |
| 2307 | TAD TMP0 /NEW MODULE |
| 2308 | DCA RLEN |
| 2309 | JMP I GETLEN |
| 2310 | |
| 2311 | GETEXT, 0 /LOOK FOR GST |
| 2312 | JMS I [GETTYP /EXTERN |
| 2313 | JMP I (DOCORE /END OF GST |
| 2314 | TAD I GPTR /TYPE WD TO AC |
| 2315 | AND [17 /B8-B11 |
| 2316 | RTR CLL /2=EXTERN |
| 2317 | SZA CLA /GOT ONE? |
| 2318 | JMP .-6 /NO, RETRY |
| 2319 | JMP I GETEXT |
| 2320 | PAGE |
| 2321 | |
| 2322 | LB0BUF= . |
| 2323 | \f/START OF PROGRAM |
| 2324 | |
| 2325 | START, ISZ XSTRT /IF CHAINED TO |
| 2326 | CIF CDF 10 |
| 2327 | CLL STA RAL |
| 2328 | AND I (7643 /AND OUT THE /L SWITCH |
| 2329 | DCA I (7643 |
| 2330 | JMP I .+1 |
| 2331 | XSTRT, PASS0 |
| 2332 | \f/THIS SUBROUTINE SHOULD RESIDE IN THE |
| 2333 | /FIELD 0 I/O BUFFER SINCE IT |
| 2334 | /EXECUTES ONLY ONCE |
| 2335 | /SUBROUTINE TO DETERMINE CORE SIZE |
| 2336 | / |
| 2337 | /THIS WORKS ON ANY PDP-8 FAMILY COMPUTER. |
| 2338 | /THE VALUE,FROM 1 TO 10(OCTAL) OF THE 1ST NON-EXISTENT |
| 2339 | /MEMORY FLD IS RETURNED IN THE AC. |
| 2340 | / |
| 2341 | /NOTE--THIS ROUTN MUST BE PLACED IN FLD 0 |
| 2342 | / |
| 2343 | CORE, 0 |
| 2344 | TAD (6203 |
| 2345 | RDF |
| 2346 | DCA CORTN |
| 2347 | CDF 0 |
| 2348 | TAD I (7777 |
| 2349 | AND COR70 |
| 2350 | SNA |
| 2351 | JMP CORELP |
| 2352 | CLL RTR |
| 2353 | RAR |
| 2354 | JMP CORTN |
| 2355 | CORELP, CDF 0 /NEEDED FOR PDP-8L |
| 2356 | TAD TRYFLD /GET FLD TO TST |
| 2357 | CLL RTL |
| 2358 | RAL |
| 2359 | AND COR70 /MASK USEFUL BITS |
| 2360 | TAD CORELP |
| 2361 | DCA .+1 /SET UP CDF TO FLD |
| 2362 | 0 |
| 2363 | TAD I CORLOC /SAV CURRENT CONTENTS |
| 2364 | NOP /HACK FOR PDP-8 |
| 2365 | DCA .-3 |
| 2366 | TAD .-2 /7000 IS A GOOD PATTERN |
| 2367 | DCA I CORLOC |
| 2368 | COR70, 70 /HACK FOR PDP-8.,NO-OP |
| 2369 | TAD I CORLOC /TRY TO READ BK 7000 |
| 2370 | 7400 /HACK FOR PDP-8,.NO-OP |
| 2371 | TAD .-1 /GUARD AGAINST WRAP AROUND |
| 2372 | TAD CORLOC+1 /TAD 1400 |
| 2373 | SZA CLA |
| 2374 | JMP .+5 /NON EXISTENT FLD EXIT |
| 2375 | TAD COR70-6 /RESTORE CONTENS DESTROYED |
| 2376 | DCA I CORLOC |
| 2377 | ISZ TRYFLD /TRY NXT HIGHER FLD |
| 2378 | JMP CORELP |
| 2379 | TAD TRYFLD |
| 2380 | TAD (-1 |
| 2381 | CORTN, 0 |
| 2382 | JMP I CORE |
| 2383 | CORLOC, COR70+2 /ADR TO TST IN EACH FLD |
| 2384 | 1400 /7000+7400+1400=0 |
| 2385 | TRYFLD, 1 /CURRENT FLD TO TST |
| 2386 | PAGE |
| 2387 | \f *6600 |
| 2388 | DATCHG, 0 /FIND THE MONTH/YEAR |
| 2389 | CLL RTR /THIS CODE FINDS THE MONTH |
| 2390 | RAR /BY CALCULATING THE ADDRESS |
| 2391 | AND (777 /OF THE CORRECT MONTH |
| 2392 | CLL RTR /IN THE TABLE OF MONTHS |
| 2393 | RTR |
| 2394 | AND (36 |
| 2395 | TAD (MONTHS-3 /HAVE THE ADDRESS OF MONTH-1 |
| 2396 | DCA NDX2 /SAVE IT IN FIELD 0, PAGE 0 |
| 2397 | CDF 0 /CHANGE DATA FIELD TO 0 |
| 2398 | TAD I NDX2 /GET FIRST 2 CHARS. OF MONTH |
| 2399 | CDF 10 /CHANGE DATA FIELD TO 1 |
| 2400 | DCA I (LDATE+2 /INSERT INTO THE TEXT LINE |
| 2401 | CDF 0 /CHANGE DATA FIELD TO 0 |
| 2402 | TAD I NDX2 /GET LAST 2 CHARS. OF MONTH |
| 2403 | CDF 10 /CHANGE DATA FIELD TO 1 |
| 2404 | DCA I (LDATE+3 /INSERT INTO THE TEXT LINE |
| 2405 | TAD I (OSDATE /GET THE DATE--FIND THE YEAR |
| 2406 | AND (7 /GET THE YEAR OFFSET BITS |
| 2407 | DCA I (YRTEMP /STORE THEM AWAY |
| 2408 | CDF 0 /CHANGE DATA FIELD TO 0 |
| 2409 | TAD I (7777 /GET THE DATE EXTENSION BITS |
| 2410 | CDF 10 /CHANGE DATA FIELD TO 1 |
| 2411 | AND (600 /MASK TO GET BITS 3 AND 4 |
| 2412 | CLL RTR /ROTATE TO GET THEM INTO |
| 2413 | RTR /BIT POSITIONS 7 AND 8 |
| 2414 | TAD (106 /GET THE NEW BASE YEAR |
| 2415 | TAD I (YRTEMP /ADD THE YEAR OFFSET BITS |
| 2416 | CIF 10 /CHANGE THE DATA FIELD TO 1 |
| 2417 | JMP I DATCHG /HAVE THE YEAR |
| 2418 | \fGETDAT, 0 |
| 2419 | TAD I (YRTEMP /GET THE YEAR |
| 2420 | AND (7700 /MASK AND ROTATE |
| 2421 | CLL RTR /TO GET THE FIRST |
| 2422 | RTR /DIGIT (IN SIXBIT) |
| 2423 | RTR |
| 2424 | TAD (5500 /STICK A HYPHEN IN FRONT |
| 2425 | DCA I (LDATE+4 /PUT IN THE TEXT LINE |
| 2426 | TAD I (YRTEMP /GET THE YEAR AGAIN |
| 2427 | AND (77 /MASK AND ROTATE TO |
| 2428 | CLL RTL /GET THE SECOND DIGIT |
| 2429 | RTL /(IN SIXBIT) |
| 2430 | RTL |
| 2431 | TAD (40 /STICK A SPACE AFTER IT |
| 2432 | CIF 10 /CHANGE INSTRUCTION FIELD TO 1 |
| 2433 | JMP I GETDAT |
| 2434 | \fMONTHS, 5512;0116 /-JAN |
| 2435 | 5506;0502 /-FEB |
| 2436 | 5515;0122 /-MAR |
| 2437 | 5501;2022 /-APR |
| 2438 | 5515;0131 /-MAY |
| 2439 | 5512;2516 /-JUN |
| 2440 | 5512;2514 /-JUL |
| 2441 | 5501;2507 /-AUG |
| 2442 | 5523;0520 /-SEP |
| 2443 | 5517;0324 /-OCT |
| 2444 | 5516;1726 /-NOV |
| 2445 | 5504;0503 /-DEC |
| 2446 | PAGE |
| 2447 | \f FIELD 1 |
| 2448 | /PAGE 0 FLD1 TAGS FOR PASS0 |
| 2449 | /(PASS 0 LIVES WITH THE USR RESIDENT) |
| 2450 | |
| 2451 | NMCTS= 20 |
| 2452 | MODCNT= 21 |
| 2453 | LVLCNT= 22 |
| 2454 | OVRCNT= 23 |
| 2455 | PTRULS= 24 |
| 2456 | MXFLD= 25 |
| 2457 | \f *2000 |
| 2458 | |
| 2459 | /START OF GLOBAL SYMBOL TABLE |
| 2460 | /BUCKET COMES FIRST, INTERNAL |
| 2461 | /SYMBOLS AND FIELD 1 CONSTANTS ARE |
| 2462 | /HERE ALSO. GST RUNS FROM |
| 2463 | /SYMTBL TO OVLTBL-1 |
| 2464 | |
| 2465 | BUCKET, AAAAAA;0;0;0;EEEEEE;0 /A,B,C,D,E,F |
| 2466 | 0;0;0;0;0;0 /G-L |
| 2467 | 0;0;0;0;0;0 /M-R |
| 2468 | 0;0;0;0;0;0 /S-X |
| 2469 | 0;0 /Y,Z |
| 2470 | 0;0;0;0;0 /UNUSED BUCKETS MUST BE 0 |
| 2471 | 0 /SPACE (FOR BLANK COMMON) |
| 2472 | 0;0 |
| 2473 | POUND /POUND SIGN FOR INTERNAL SYMBOLS, ALL ARE OF THE FORM (POUND XXXXX) |
| 2474 | \fTRPSYM, TEXT '#YTRAP' |
| 2475 | 0 /TRAP VECTOR |
| 2476 | LEVSYM, TEXT '#YLVL0' |
| 2477 | 0 /OVERLAY LEVEL |
| 2478 | SWPSYM, TEXT '#SWAP' |
| 2479 | 0;0 |
| 2480 | SASYM, TEXT '#MAIN' |
| 2481 | 0;0 /STARTING ADDRESS |
| 2482 | |
| 2483 | /TITLE LINE FOR LOADER MAP |
| 2484 | |
| 2485 | TLINE, TEXT 'LOADER V' |
| 2486 | *.-1 |
| 2487 | LXX, VERNUM&70^7+VERNUM+6060 /VERNUM IN SIXBIT |
| 2488 | PATCH&77^100+40 /PATCH LEVEL |
| 2489 | LDATE, TEXT ' NO-DA -TE ' |
| 2490 | STLINE, TEXT 'SYMBOL VALUE LVL OVLY' |
| 2491 | HLINE, TEXT '= 1ST FREE LOCATION' |
| 2492 | OTLINE, TEXT 'LVL OVLY LENGTH' |
| 2493 | SMAPU, ZBLOCK 3 /SYMMAP UNIT, LENGTH, ST BLK # |
| 2494 | LIMGU, ZBLOCK 3 /LDR IMG " |
| 2495 | OVRSIZ, 0;0 |
| 2496 | LVPTR, OVRSIZ |
| 2497 | SYMX, 1;SYMTBL-2 |
| 2498 | \f/SYSTEM SYMBOL TABLE |
| 2499 | |
| 2500 | AAAAAA, 0 |
| 2501 | TEXT /ARGERR/ |
| 2502 | *.-1 |
| 2503 | 1;0 |
| 2504 | JARGER |
| 2505 | |
| 2506 | EEEEEE, 0 |
| 2507 | TEXT /EXIT/ |
| 2508 | 1;0 |
| 2509 | JEXIT |
| 2510 | |
| 2511 | POUND, .+7 |
| 2512 | TEXT /#ARGER/ |
| 2513 | *.-1 |
| 2514 | 1;0 |
| 2515 | JARGER |
| 2516 | .+7 |
| 2517 | TEXT /#BAK/ |
| 2518 | 1;0 |
| 2519 | JBAK |
| 2520 | .+7 |
| 2521 | TEXT /#DATE/ |
| 2522 | 1;0 |
| 2523 | JDATE |
| 2524 | .+7 |
| 2525 | TEXT /#DEF/ |
| 2526 | 1;0 |
| 2527 | JDEF |
| 2528 | .+7 |
| 2529 | TEXT /#DISMS/ |
| 2530 | *.-1 |
| 2531 | 1;0 |
| 2532 | JDISMS |
| 2533 | .+7 |
| 2534 | TEXT /#ENDF/ |
| 2535 | 1;0 |
| 2536 | JENDF |
| 2537 | .+7 |
| 2538 | TEXT /#EOFSW/ |
| 2539 | *.-1 |
| 2540 | 1;0 |
| 2541 | JEOFSW |
| 2542 | .+7 |
| 2543 | TEXT /#EXIT/ |
| 2544 | 1;0 |
| 2545 | JEXIT |
| 2546 | .+7 |
| 2547 | TEXT /#HANG/ |
| 2548 | 1;0 |
| 2549 | JHANG |
| 2550 | .+7 |
| 2551 | TEXT /#IDLE/ |
| 2552 | 1;0 |
| 2553 | JIDLE |
| 2554 | .+7 |
| 2555 | TEXT /#INT/ |
| 2556 | 1;0 |
| 2557 | JINT |
| 2558 | .+7 |
| 2559 | TEXT /#RDAO/ |
| 2560 | 1;0 |
| 2561 | JRDAO |
| 2562 | .+7 |
| 2563 | TEXT /#READO/ |
| 2564 | *.-1 |
| 2565 | 1;0 |
| 2566 | JREADO |
| 2567 | .+7 |
| 2568 | TEXT /#RENDO/ |
| 2569 | *.-1 |
| 2570 | 1;0 |
| 2571 | JRENDO |
| 2572 | .+7 |
| 2573 | TEXT /#RETRN/ |
| 2574 | *.-1 |
| 2575 | 1;0 |
| 2576 | JRETRN |
| 2577 | .+7 |
| 2578 | TEXT /#REW/ |
| 2579 | 1;0 |
| 2580 | JREW |
| 2581 | .+7 |
| 2582 | TEXT /#RSVO/ |
| 2583 | 1;0 |
| 2584 | JRSVO |
| 2585 | .+7 |
| 2586 | TEXT /#RUO/ |
| 2587 | 1;0 |
| 2588 | JRUO |
| 2589 | .+7 |
| 2590 | TEXT /#SWAP/ |
| 2591 | 1;0 |
| 2592 | JSWAP |
| 2593 | .+7 |
| 2594 | TEXT /#T812/ |
| 2595 | 1;0 |
| 2596 | JT812 |
| 2597 | .+7 |
| 2598 | TEXT /#UE/ |
| 2599 | 0 |
| 2600 | 1;0 |
| 2601 | JUERR |
| 2602 | .+7 |
| 2603 | TEXT /#WDAO/ |
| 2604 | 1;0 |
| 2605 | JWDAO |
| 2606 | .+7 |
| 2607 | TEXT /#WRITO/ |
| 2608 | *.-1 |
| 2609 | 1;0 |
| 2610 | JWRITO |
| 2611 | 0 /LAST ONE |
| 2612 | TEXT /#WUO/ |
| 2613 | 1;0 |
| 2614 | JWUO |
| 2615 | SYMTBL, 0 /START OF GST |
| 2616 | \f/PASS0- THIS IS THE BEGINNING OF PASS0 |
| 2617 | |
| 2618 | PASS0, JMP .+4 /NORMAL ENTRY PT |
| 2619 | DCA CDSW /CHAINED TO ENTRY PT - NO DECODE 1ST TIME |
| 2620 | TAD (7616 |
| 2621 | DCA PTRIO |
| 2622 | TAD (-10 |
| 2623 | DCA LVLCNT /SET LEVEL AND OVERLAY COUNTERS |
| 2624 | DCA OVRCNT |
| 2625 | CIF 0 |
| 2626 | JMS I (CORE /DETERMINE CORE SIZE |
| 2627 | DCA MXFLD |
| 2628 | JMS I (CORMOV |
| 2629 | CDF 0 |
| 2630 | 0-1 |
| 2631 | CDF 0 |
| 2632 | LB0BUF-1 /MOVE LOWER FIELD 0 TO A SAFE PLACE |
| 2633 | -2000 |
| 2634 | CDF 0 |
| 2635 | TAD I (OSJSWD /GET JOB STATUS WORD |
| 2636 | AND (376 /CLEAR DESIRED FLAGS |
| 2637 | TAD (3403 /SET NO RESTART, USR AND CD AREAS CLEAR |
| 2638 | DCA I (OSJSWD /AS WELL AS BATCH FLAG |
| 2639 | CDF 10 |
| 2640 | TAD I (OSDATE |
| 2641 | SNA |
| 2642 | JMP NODATE |
| 2643 | CLL RTR /ROTATE AND MASK TO GET THE DAY |
| 2644 | RAR |
| 2645 | AND (37 |
| 2646 | JMS MAKSXB /CONVERT TO SIXBIT |
| 2647 | DCA I (LDATE+1 /PUT THE DAY INTO THE TEXT LINE |
| 2648 | TAD I (OSDATE /GET THE DATE---FIND MONTH |
| 2649 | CIF 0 /CHANGE DATA FIELD TO 0 |
| 2650 | JMS I (DATCHG /FIND THE MONTH/YEAR |
| 2651 | JMS MAKSXB /CONVERT THE YEAR TO SIXBIT |
| 2652 | DCA YRTEMP /STORE IT AWAY |
| 2653 | CIF 0 /CHANGE INSTRUC. FIELD TO 0 |
| 2654 | JMS I (GETDAT /PRINT THE YEAR |
| 2655 | DCA I (LDATE+5 /PUT REST OF YEAR IN TEXT LINE |
| 2656 | \f/SET UP OTHER POINTERS TO MODULE TABLES |
| 2657 | |
| 2658 | NODATE, TAD (-NUMMOD |
| 2659 | DCA I (MCTTBL |
| 2660 | TAD (MCTTBL+1 |
| 2661 | DCA NMCTS /INITIALIZE MODULE CT TBL PTR |
| 2662 | TAD (MODTBL+2 |
| 2663 | DCA PTRULS /INITIALIZE MODULE TBL PTR |
| 2664 | DCA MODCNT |
| 2665 | DCA I (MODTBL /CLEAR LIBRARY UNIT |
| 2666 | DCA I NMCTS /CLEAR FOR 1ST LEVEL MODULE COUNTS |
| 2667 | CDSW, JMP I (RALFLP /ZEROED IF CHAINED TO |
| 2668 | JMP I (DECO |
| 2669 | |
| 2670 | MAKSXB, 0 |
| 2671 | DCA TMP0 |
| 2672 | DCA TMP1 |
| 2673 | TAD TMP0 |
| 2674 | TAD (-12 |
| 2675 | ISZ TMP1 |
| 2676 | SMA |
| 2677 | JMP .-3 /SUBTRACT 10 IN A LOOP |
| 2678 | TAD (5772 /AS GOOD A NUMBER AS ANY |
| 2679 | DCA TMP0 |
| 2680 | TAD TMP1 |
| 2681 | CLL RTL |
| 2682 | RTL |
| 2683 | RTL /GET THE TENS DIGIT INTO POSITION |
| 2684 | TAD TMP0 |
| 2685 | JMP I MAKSXB |
| 2686 | YRTEMP, 0 |
| 2687 | PAGE |
| 2688 | \f/DECODE COMMAND DECODER INPUT |
| 2689 | |
| 2690 | RALFLP, JMS I (200 |
| 2691 | 5 /COMMAND DECODE |
| 2692 | 2214 /.RL DEFAULT EXTENSION |
| 2693 | TAD (7616 |
| 2694 | DCA PTRIO |
| 2695 | TAD I (OS8SWS+1 |
| 2696 | AND (40 |
| 2697 | CDF 0 |
| 2698 | SZA CLA /IS /S SWITCH ON? |
| 2699 | DCA I (SVMAIN+LB0BUF /CLEAR (RELOCATED) SVMAIN |
| 2700 | DECO, CDF 10 /FOR FULL SYMBOL MAP LISTING |
| 2701 | TAD I (7600 /CHK FOR LOADER IMAGE FILE |
| 2702 | SNA /OUTPUT FILE? |
| 2703 | JMP SM /NO |
| 2704 | AND (0017 /MUST BE AN "MS" DEV |
| 2705 | TAD (OS8DCB-1 |
| 2706 | DCA TMP0 |
| 2707 | TAD I TMP0 |
| 2708 | SPA CLA /IS IT? |
| 2709 | JMP .+4 /YES |
| 2710 | SM1, TAD (DEVERR /NO,ERR |
| 2711 | JMS I (ERORR |
| 2712 | JMP RALFLP |
| 2713 | TAD I P7604 |
| 2714 | SNA |
| 2715 | TAD (1404 /.LD |
| 2716 | DCA I P7604 /INTO EXTENSION IF NONE SPECIFIED |
| 2717 | JMS I (CORMOV /MOVE LOADER IMAGE FILE NAME |
| 2718 | CDF 10 |
| 2719 | 7600-1 |
| 2720 | CDF 0 /INTO FIELD 0 |
| 2721 | LDRNAM+LB0BUF-1 |
| 2722 | -5 |
| 2723 | SM, TAD I (7605 /CHK FOR SYM MAP FILE |
| 2724 | SNA |
| 2725 | JMP SM2 /NONE |
| 2726 | AND (17 |
| 2727 | TAD (OS8DCB-1 |
| 2728 | DCA TMP0 |
| 2729 | TAD I TMP0 |
| 2730 | RAL /LOOK AT "READ ONLY" BIT IN DCB |
| 2731 | SPA CLA |
| 2732 | JMP SM1 /ERROR - NO GOOD FOR OUTPUT |
| 2733 | TAD I (7611 |
| 2734 | SNA |
| 2735 | TAD (1423 /.LS DEFAULT MAP EXTENSION |
| 2736 | DCA I (7611 |
| 2737 | JMS I (CORMOV /MOVE SYMMAP FILE NAME INTO FIELD 0 |
| 2738 | CDF 10 |
| 2739 | P7604, 7605-1 |
| 2740 | CDF 0 |
| 2741 | LDRNAM+LB0BUF+4 |
| 2742 | -5 |
| 2743 | \f/COLLECT INPUT FILES |
| 2744 | |
| 2745 | SM2, TAD I (OS8SWS |
| 2746 | CLL RAR |
| 2747 | SZL CLA / IS /L SWITCH ON? |
| 2748 | JMP LIBRAR /YES - THIS IS A LIBRARY FILE |
| 2749 | FILELP, TAD I PTRIO |
| 2750 | SNA |
| 2751 | JMP FINLIN /NO MORE INPUT FILES |
| 2752 | DCA TMP0 |
| 2753 | TAD TMP0 |
| 2754 | AND (17 |
| 2755 | ISZ PTRULS |
| 2756 | DCA I PTRULS /STORE UNIT NUMBER |
| 2757 | TAD TMP0 |
| 2758 | AND (7760 |
| 2759 | CLL RTR |
| 2760 | RTR |
| 2761 | TAD (7400 |
| 2762 | CIA |
| 2763 | ISZ PTRULS |
| 2764 | DCA I PTRULS /STORE LENGTH |
| 2765 | TAD I PTRIO |
| 2766 | ISZ PTRULS |
| 2767 | DCA I PTRULS /STORE STARTING BLOCK NUMBER |
| 2768 | ISZ MODCNT |
| 2769 | JMP FILELP /CONTINUE |
| 2770 | |
| 2771 | FINLIN, JMS I (CORDSW /CHECK C AND O SWITCHES |
| 2772 | TAD I (OS8SWS |
| 2773 | AND (40 |
| 2774 | SZA CLA /IF THE /G SWITCH IS ON |
| 2775 | JMP I (EOPAS0 /ITS THE END |
| 2776 | TAD I (OS8SWS-1 |
| 2777 | SPA CLA /IF AN ALTMODE TERMINATED THE LINE, |
| 2778 | JMP I (EOPAS0 /DITTO |
| 2779 | TAD (-MCTTBL-1 |
| 2780 | TAD NMCTS |
| 2781 | SZA CLA /ARE WE STILL IN THE MAIN SECTION? |
| 2782 | JMS I (UPDMOD /NO - UPDATE OVERLAY & MODULE COUNTS |
| 2783 | JMP RALFLP |
| 2784 | \fLIBRAR, TAD I PTRIO |
| 2785 | AND (17 |
| 2786 | DCA I (MODTBL /STORE LIBRARY PARAMETERS |
| 2787 | TAD I PTRIO /NEGLECTING LENGTH, WHICH WILL |
| 2788 | DCA I (MODTBL+2 /BE FILLED IN LATER |
| 2789 | TAD I PTRIO |
| 2790 | SNA CLA |
| 2791 | JMP FINLIN /ONLY ONE FILE ALLOWED ON THE LINE |
| 2792 | TAD (MIERR |
| 2793 | JMP SM1+1 /OTHERWISE ITS MIXED INPUT |
| 2794 | PAGE |
| 2795 | \f/UPDMOD- UPDATE MODULE COUNT TBL |
| 2796 | |
| 2797 | UPDMOD,0 |
| 2798 | CLL |
| 2799 | TAD MODCNT /UPDATE -NUM OF |
| 2800 | TAD I (MCTTBL /UNUSED MODULES |
| 2801 | DCA I (MCTTBL |
| 2802 | SZL |
| 2803 | JMP MAXRLF /MAX NUMBER EXCEEDED |
| 2804 | ISZ OVRCNT /BUMP OVERLAY NUMBER |
| 2805 | SKPCLA, SKP CLA |
| 2806 | JMP MAXOVL /MORE THAN 16 OVERLAYS IN A LEVEL |
| 2807 | TAD MODCNT /UPDATE +NUM OF |
| 2808 | TAD I NMCTS /MODULES IN LAST LEVEL |
| 2809 | SNA /**** |
| 2810 | JMP I UPDMOD |
| 2811 | DCA I NMCTS |
| 2812 | ISZ NMCTS /ADV PTR TO NXT LOC |
| 2813 | DCA I NMCTS /ZERO THE NXT LOC IN PREPARATION |
| 2814 | DCA MODCNT /CLR CNT FOR NXT LEVEL |
| 2815 | JMP I UPDMOD |
| 2816 | |
| 2817 | /CORDSW- LOOK FOR SWS C AND O |
| 2818 | |
| 2819 | CORDSW, 0 |
| 2820 | TAD I (OS8SWS+1 |
| 2821 | AND (10 |
| 2822 | SNA CLA /CHECK FOR /U SWITCH |
| 2823 | JMP CHKCSW |
| 2824 | CDF 0 |
| 2825 | TAD SKPCLA /INHIBIT LEVEL CHECKING |
| 2826 | DCA I (TSTTRP |
| 2827 | CDF 10 |
| 2828 | CHKCSW, TAD I (OS8SWS |
| 2829 | RTL |
| 2830 | SPA CLA |
| 2831 | JMP I (RALFLP |
| 2832 | TAD I (OS8SWS+1 |
| 2833 | RTL |
| 2834 | SMA CLA |
| 2835 | JMP I CORDSW |
| 2836 | |
| 2837 | /O-SWITCH |
| 2838 | |
| 2839 | JMS UPDMOD |
| 2840 | ISZ NMCTS /ADV PTR FOR NXT GUY |
| 2841 | DCA I NMCTS /CLR FOR NXT LEVEL MOD CNT |
| 2842 | TAD (-21 |
| 2843 | DCA OVRCNT |
| 2844 | ISZ LVLCNT /BUMP LEVEL COUNTER |
| 2845 | JMP I (RALFLP |
| 2846 | TAD (MXLERR |
| 2847 | JMP MAXRLF+1 /TOO MANY LEVELS |
| 2848 | \fMAXRLF, TAD (MXRERR |
| 2849 | JMS ERORR |
| 2850 | CDF CIF 0 |
| 2851 | JMP I (7605 |
| 2852 | MAXOVL, TAD (MXOERR |
| 2853 | JMP MAXRLF+1 |
| 2854 | |
| 2855 | /ERORR- PRINTS OUT ERROR MESSAGES OF A |
| 2856 | / BUFR LOCATED IN FLD1 |
| 2857 | / ENTER WITN ADR OF BUFR IN AC |
| 2858 | / |
| 2859 | ERORR, 0 |
| 2860 | DCA BFADR |
| 2861 | CDF 10 /CALL TTYHAN |
| 2862 | JMS I (CORMOV |
| 2863 | CDF 0 |
| 2864 | LB0BUF-1 /MOVE LOWER FIELD 0 BACK |
| 2865 | CDF 0 /SO WE CAN USE THE MESSAGE HANDLER |
| 2866 | 0-1 |
| 2867 | -2000 |
| 2868 | CIF 0 |
| 2869 | JMS I (TTYHAN |
| 2870 | CDF 10 |
| 2871 | BFADR, 0 |
| 2872 | JMP I ERORR |
| 2873 | \fMIERR, TEXT /MIXED INPUT/ |
| 2874 | DEVERR, TEXT /BAD OUTPUT DEVICE/ |
| 2875 | MXRERR, TEXT /TOO MANY RALF FILES/ |
| 2876 | MXLERR, TEXT /TOO MANY LEVELS/ |
| 2877 | MXOERR, TEXT /TOO MANY OVERLAYS/ |
| 2878 | PAGE |
| 2879 | \f/PASS1, PASS2 INITIALIZATION |
| 2880 | |
| 2881 | EOPAS0, JMS I (UPDMOD /BUMP COUNTS FOR LAST LINE OF INPUT |
| 2882 | ISZ NMCTS |
| 2883 | DCA I NMCTS /PUT IN A DOUBLE ZERO AT THE END |
| 2884 | JMS I (CORMOV |
| 2885 | CDF 0 |
| 2886 | LB0BUF-1 |
| 2887 | CDF 0 |
| 2888 | 0-1 /MOVE LOWER FIELD 0 BACK INTO PLACE |
| 2889 | -2000 |
| 2890 | TAD I (MODTBL |
| 2891 | SZA CLA /USER-SPECIFIED LIBRARY? |
| 2892 | JMP RDLIBH /YES |
| 2893 | CLA IAC |
| 2894 | JMS I (200 |
| 2895 | 2 /LOOKUP |
| 2896 | LIBRY |
| 2897 | 0 |
| 2898 | JMP NOLIB /FORLIB.RL NOT FOUND |
| 2899 | TAD .-3 /GET STARTING BLOCK |
| 2900 | DCA I (MODTBL+2 |
| 2901 | CLA IAC |
| 2902 | DCA I (MODTBL /STORE UNIT AND BLOCK # |
| 2903 | RDLIBH, STL RTR |
| 2904 | DCA I (MODTBL+1 /JUST TO BE CAREFUL |
| 2905 | CIF 0 |
| 2906 | JMS I (IOHAN /READ BLOCK 0 OF THE LIBRARY CATALOG |
| 2907 | MODTBL |
| 2908 | 0210 |
| 2909 | PLB, RALFBF |
| 2910 | 0 |
| 2911 | STA |
| 2912 | TAD I PLB |
| 2913 | SNA CLA /IS IT AN HONEST - TO - GOD LIBRARY? |
| 2914 | JMP .+4 /YES |
| 2915 | NOLIB, DCA I (MODTBL |
| 2916 | DCA I (MODTBL+2 |
| 2917 | DCA I (RALFBF+3 /ZERO COUNT WORD IN BUFFER |
| 2918 | TAD I (RALFBF+3 |
| 2919 | DCA I (MODTBL+1 /STORE LENGTH OF CATALOGUE |
| 2920 | TAD (LHDR-1 |
| 2921 | DCA NDX0 |
| 2922 | TAD (-400 |
| 2923 | DCA TMP0 |
| 2924 | DCA I NDX0 /0 OUT |
| 2925 | ISZ TMP0 /LDR HDR |
| 2926 | JMP .-2 /GET PAGE 0 |
| 2927 | \f/PASS1 INITIALIZATION CONTINUED |
| 2928 | |
| 2929 | TAD I (MCTTBL /UNUSED |
| 2930 | DCA TMP2 /MODULES |
| 2931 | TAD (MCTTBL+2 /GET NUMBER OF OVERLAYS |
| 2932 | DCA NDX0 / IN EACH LEVEL |
| 2933 | TAD (QUSRLV+4 /WHERE THE |
| 2934 | DCA TMP0 /CNTS GO IN |
| 2935 | JMP BY0 /LDR HDR BLK |
| 2936 | LOP0, ISZ I TMP0 /INCREMENT NUMBER OF OVERLAYS IN THIS LEVEL |
| 2937 | TAD I NDX0 |
| 2938 | SZA CLA /END OF LEVEL? |
| 2939 | JMP LOP0 /NO |
| 2940 | TAD (4 /THIS LEVEL |
| 2941 | TAD TMP0 |
| 2942 | DCA TMP0 |
| 2943 | BY0, DCA I TMP0 /RESET CNT |
| 2944 | TAD I NDX0 /0,0 ENDS |
| 2945 | SZA CLA /MOD CNT TBL |
| 2946 | JMP LOP0 /DO MORE PTR TO |
| 2947 | TAD I (MODTBL+1 /GET LENGTH OF LIBRARY CATALOG |
| 2948 | DCA TMP4 /BLOCKS |
| 2949 | TAD TMP2 /CHK FOR MAX |
| 2950 | SZA CLA /NUM OF RALFS 0=MOD TBL IS FULL |
| 2951 | TAD I (MODTBL /CHK FOR NO |
| 2952 | CDF |
| 2953 | DCA I (LIBRSW /LIBRARY AND SET SWITCH ACCORDINGLY |
| 2954 | TAD TMP2 /-NUM LEFT |
| 2955 | DCA I (MLEFT /OF RALF MODS |
| 2956 | TAD (SYMTBL-1 /PTR TO TOP |
| 2957 | DCA I (NDX4 /OF GST |
| 2958 | TAD I (OSJSWD |
| 2959 | AND (7377 /KILL "BATCH PROTECTED" FLAG |
| 2960 | DCA I (OSJSWD |
| 2961 | \f AC7776 /IS THERE |
| 2962 | TAD MXFLD /GREATER THAN 12K OF CORE |
| 2963 | SPA SNA CLA /? |
| 2964 | JMP LS16K /NO |
| 2965 | TAD (200^12!30 /SET TXT I/O |
| 2966 | DCA I (TXTBLK-2 /BUFFS UP IN FLD 3 |
| 2967 | TAD (-5000 /-WDCNT (12 |
| 2968 | DCA I (TXTWDS /BLKS) |
| 2969 | TAD (6231 /CDF 30 |
| 2970 | DCA I (RDTCDF |
| 2971 | LS16K, TAD (7700 /USR IS NOT |
| 2972 | DCA I (USR /IN CORE |
| 2973 | CDF 10 |
| 2974 | JMP I (INIBFS |
| 2975 | LIBRY, 0617;2214;1102;2214 /FORLIB.RL |
| 2976 | PAGE |
| 2977 | \f/THIS IS THE INITIAL BINARY BUFFER TABLE |
| 2978 | |
| 2979 | R= LDBUFS-BUFTAB |
| 2980 | |
| 2981 | BUFTAB, .+4+R; 0; 0; 3200 /03200-05177 |
| 2982 | B8KPT, .+4+R; 0; 0; 5200 /05200-07177 |
| 2983 | .+4+R; 0; 0; 0020 /20000-21777 |
| 2984 | B12KPT, .+4+R; 0; 0; 2020 /22000-23777 |
| 2985 | B16KPT, .+4+R; 0; 0; 4020 /24000-25777 |
| 2986 | .+4+R; 0; 0; 0040 /40000-41777 |
| 2987 | B20KPT, .+4+R; 0; 0; 2040 /42000-43777 |
| 2988 | .+4+R; 0; 0; 4040 /44000-45777 |
| 2989 | .+4+R; 0; 0; 0050 /5000-51777 |
| 2990 | 0; 0; 0; 2050 /52000-53777 |
| 2991 | \fINIBFS, TAD MXFLD |
| 2992 | TAD (JMP STBPTR-1 |
| 2993 | DCA .+1 |
| 2994 | HLT /DISPATCH ON NUMBER OF FIELDS |
| 2995 | STBPTR, DCA B8KPT |
| 2996 | DCA B12KPT |
| 2997 | DCA B16KPT |
| 2998 | DCA B20KPT |
| 2999 | NOP |
| 3000 | NOP /NOT SET UP TO USE MORE THAN 24K |
| 3001 | NOP |
| 3002 | JMS I (CORMOV |
| 3003 | CDF 10 |
| 3004 | BUFTAB-1 /MOVE THE BINARY BUFFER TABLE |
| 3005 | CDF 10 |
| 3006 | LDBUFS-1 /INTO A SAFE PLACE |
| 3007 | -50 |
| 3008 | CDF 0 |
| 3009 | TAD LVLCNT /SET -NUM OF |
| 3010 | TAD (11 /LEVELS |
| 3011 | CIA |
| 3012 | DCA I (NLVL |
| 3013 | TAD (-5 /NUM OF LIBR |
| 3014 | DCA TMP2 /BLKS FOR 8K |
| 3015 | CLA CMA |
| 3016 | TAD MXFLD |
| 3017 | SNA CLA /GREATER THAN 8K CORE? |
| 3018 | JMP TO8K /NO SET LIBR ARGS |
| 3019 | DCA I (LBARG+1 |
| 3020 | TAD (200^12!20 /12 BLKS FLD2 |
| 3021 | DCA I (LBARG |
| 3022 | TAD (6221 /CDF 20 |
| 3023 | DCA I (LBFLD |
| 3024 | TAD (6221 |
| 3025 | DCA I (GETLEN+1 |
| 3026 | TAD (-12 |
| 3027 | DCA TMP2 |
| 3028 | TO8K, TAD TMP2 /WILL LIBR |
| 3029 | TAD TMP4 /BE CORE |
| 3030 | SMA SZA CLA /RESIDENT? |
| 3031 | DCA I (RESFLG /NO |
| 3032 | TAD (SYMTBL-1 |
| 3033 | DCA I (NDX0 |
| 3034 | \f CDF 10 |
| 3035 | TAD (ESDPG-1 /ENTER DEFAULT |
| 3036 | DCA NDX0 /VALUES FOR |
| 3037 | TAD (-200 /ESD REF PAGE |
| 3038 | DCA TMP0 /IT SAVES |
| 3039 | TAD (SYMTBL+5 /PROBLEMS WITH |
| 3040 | DCA I NDX0 /EXTERNS |
| 3041 | ISZ TMP0 |
| 3042 | JMP .-3 |
| 3043 | CLA STL RTL |
| 3044 | DCA I (LHDR /STORE LOADER IMAGE CODE IN HEADER |
| 3045 | TAD (VERNUM |
| 3046 | DCA I (QVERNO /STORE LOADER VERSION NUMBER |
| 3047 | CIF 0 |
| 3048 | JMP I (STPAS1 |
| 3049 | PAGE |
| 3050 | \f/CORMOV- A CORE MOVE FOR A CHUNK OF CORE IN |
| 3051 | / ANY FLD TO ANY FLD. |
| 3052 | / |
| 3053 | / CALL JMS CORMOV |
| 3054 | / CDF Z1 /Z1=FROM FLD |
| 3055 | / ADDR1 /ADDR OF (1ST LOC-1) |
| 3056 | / CDF Z2 /Z2=TO FLD |
| 3057 | / ADDR2 /ADDR OF (1ST LOC-1) |
| 3058 | / -N /-OCT NUM OF WDS TO MOV |
| 3059 | / |
| 3060 | CORMOV, 0 |
| 3061 | CLA CMA |
| 3062 | TAD CORMOV |
| 3063 | DCA NDX0 |
| 3064 | TAD I NDX0 |
| 3065 | DCA TOCDF-2 |
| 3066 | TAD I NDX0 |
| 3067 | DCA NDX1 |
| 3068 | TAD I NDX0 |
| 3069 | DCA TOCDF |
| 3070 | TAD I NDX0 |
| 3071 | DCA NDX2 |
| 3072 | TAD I NDX0 |
| 3073 | DCA TMP0 |
| 3074 | 0 |
| 3075 | TAD I NDX1 |
| 3076 | TOCDF, 0 |
| 3077 | DCA I NDX2 |
| 3078 | ISZ TMP0 |
| 3079 | JMP TOCDF-2 |
| 3080 | CDF 10 |
| 3081 | JMP I NDX0 /RTN |
| 3082 | |
| 3083 | $$$$$ |
| 3084 | \f |