| 1 | /LIBRA: F4 LIBRARIAN, 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/LIBRA: FORTRAN IV LIBRARIAN |
| 41 | / |
| 42 | / |
| 43 | / BORN OF JUD LEONARD, UNDER THE |
| 44 | / SIGN FOR WHICH IT IS NAMED. |
| 45 | / |
| 46 | / |
| 47 | / CHANGES FOR V23 |
| 48 | / .PRINT VERSION NUMBER |
| 49 | / .ACCEPT INPUT FROM CONSOLES WITHOUT PARITY |
| 50 | / |
| 51 | / |
| 52 | / CHANGES FOR OS/8 V3D BY PAULA TIRAK |
| 53 | / .CHANGED VERSION NUMBER TO 24A |
| 54 | / .PUT IN NEW DATE ALGORITHM |
| 55 | / .NO LONGER MISNAMES THE SECOND OUTPUT FILE |
| 56 | / |
| 57 | / |
| 58 | / OS/8 CONSTANTS: |
| 59 | VERS=24 |
| 60 | PATCH="A |
| 61 | / |
| 62 | FETCH=1 |
| 63 | LOOKUP=2 |
| 64 | ENTER=3 |
| 65 | CLOSE=4 |
| 66 | DECODE=5 |
| 67 | CHAIN=6 |
| 68 | ERROR=7 |
| 69 | USRIN=10 |
| 70 | USROUT=11 |
| 71 | / |
| 72 | OUTF1=7600 /LIBRARY |
| 73 | OUTF2=7605 /CATALOG LISTING |
| 74 | OUTF3=7612 /UNUSED |
| 75 | INF=7617 |
| 76 | / |
| 77 | EQHI=7642 |
| 78 | SWATOL=7643 |
| 79 | SWMTOX=7644 |
| 80 | SWYTO9=7645 |
| 81 | EQLO=7646 |
| 82 | DHRES=7647 /HANDLER RESIDENCY TABLE |
| 83 | SYSDAT=7666 /SYSTEM DATE |
| 84 | DCTLW=7760 /DEVICE CONTROL WORD TABLE |
| 85 | / DEVICE CONTROL WORDS HAVE THE FORM: |
| 86 | / BIT 0 FILE STRUCTURED |
| 87 | / BIT 1 READ ONLY |
| 88 | / BIT 2 WRITE ONLY |
| 89 | / BITS 3-8 DEVICE TYPE |
| 90 | / BITS 9-11 DIR BLOCK OF CURRENT TENTATIVE FILE |
| 91 | / |
| 92 | / INTERNAL DEFINITIONS: |
| 93 | F0=00 |
| 94 | F1=10 |
| 95 | CATBUF=2000 /IN FIELD 1 |
| 96 | CBUFS=1 /NUMBER OF BUFFERS FOR CATALOG |
| 97 | MODBUF=2400 /LIKEWISE |
| 98 | MBUFS=12 /BUFFERS FOR MODULE |
| 99 | ODEVH=7200 /OUTPUT DEVICE HANDLER (ROOM FOR 2-PAGE) |
| 100 | IDEVH=6600 /INPUT DEVICE HANDLER |
| 101 | \f/ |
| 102 | / PAGE 0 FOR LIBRA |
| 103 | / |
| 104 | *1 |
| 105 | TMP1, 0 |
| 106 | TMP2, 0 /SOME TEMPS |
| 107 | TMP3, 0 |
| 108 | TMP4, 0 |
| 109 | TMP5, 0 |
| 110 | TMP6, 0 |
| 111 | TMP7, 0 |
| 112 | X0, 0 /AUTO-INDEX |
| 113 | X1, 0 |
| 114 | X2, 0 |
| 115 | X3, 0 |
| 116 | X4, 0 |
| 117 | X5, 0 |
| 118 | X6, 0 |
| 119 | X7, 0 |
| 120 | USR, 200 /CURRENT USR CALL ADDRESS |
| 121 | /LIBRA ASSUMES USR ALWAYS PRESENT |
| 122 | LIBDVH, ODEVH /ADDRESS OF LIBRARY DEVICE HANDLER |
| 123 | LIBU, 1 /UNIT CONTAINING LIBRARY; INITIALLY SYS: |
| 124 | CATLEN, 0 /LENGTH OF CATALOG |
| 125 | CATBLK, 0 /CURRENT CATALOG BLOCK IN CORE |
| 126 | LAVAIL, 0 /NEXT AVAILABLE LIBRARY BLOCK |
| 127 | LIBNAM, TEXT "FORLIBRL" |
| 128 | *.-1 |
| 129 | INFP, INF /CURRENT PLACE IN INPUT FILE LIST |
| 130 | MODU, 0 /UNIT CONTAINING CURRENT MODULE |
| 131 | MODDVH, IDEVH /INPUT DEVICE HANDLER ADDRESS |
| 132 | MODLEN, 0 /LENGTH OF THIS MODULE |
| 133 | MODBLK, 0 /FIRST BLOCK OF MODULE |
| 134 | INLSW, 0 /NON-ZERO IF IN LIBRARY INPUT |
| 135 | INFST, 0 /FIRST BLOCK OF INPUT FILE |
| 136 | INBLK, 0 /NEXT INPUT BLOCK NUMBER |
| 137 | THSBLK, 0 /READIN CONTROL |
| 138 | FULFLG, 0 /-1 IF CAT FULL |
| 139 | \fENAM1, 0 |
| 140 | ENAM2, 0 /HOLDER FOR ESD NAMES |
| 141 | ENAM3, 0 |
| 142 | 0 /TEXT STOPPER FOR ENAME |
| 143 | ESDCTR, 0 |
| 144 | PCAT, CATBUF /POINTER TO CURRENT CATALOG BLOCK |
| 145 | INCLUD, -1 /SW FOR NAME INCLUDED IN CATALOG |
| 146 | CHANGD, 1 /0 IF CAT BLOCK MODIFIED |
| 147 | PMOD, MODBUF /POINTER TO CURRENT MODULE BLOCK |
| 148 | / |
| 149 | TTFLAG, 0 /NON-ZERO WHEN TTY HAS INITIALIZED |
| 150 | PCHR, TTO /OUTPUT ROUTINE |
| 151 | TTPOS, 0 /TTY POSITION COUNTER |
| 152 | CATCNT, 0 |
| 153 | IOERR, 0 |
| 154 | 7421 /ERROR CODE TO MQ |
| 155 | JMP I .+1 |
| 156 | IOMES /LOG THE ERROR |
| 157 | \f/ LIBRA MAIN CONTROL |
| 158 | / |
| 159 | *177 /MAKES IT EASY TO CALL START |
| 160 | START, CDF F0 |
| 161 | JMS TTWAIT /ALLOW TTY TO COMPLETE |
| 162 | CIF F1 |
| 163 | JMS I USR |
| 164 | DECODE |
| 165 | TXTRL, 2214 /RL DEFAULT EXT |
| 166 | TAD (INF /RESET INPUT FILE POINTER |
| 167 | DCA INFP |
| 168 | TAD (TTO /AND IO DEVICE |
| 169 | DCA PCHR |
| 170 | DCA FULFLG |
| 171 | CDF F1 |
| 172 | TAD I (OUTF1 |
| 173 | SNA /NEW LIBRARY SPECIFIED? |
| 174 | JMP LASTLB /NO, USE LAST ONE |
| 175 | DCA LIBU /GET LIBRARY UNIT |
| 176 | TAD (OUTF1 |
| 177 | DCA X0 |
| 178 | TAD I X0 |
| 179 | DCA LIBNAM /MOVE |
| 180 | TAD I X0 /IN |
| 181 | DCA LIBNAM+1 /NEW |
| 182 | TAD I X0 /NAME |
| 183 | DCA LIBNAM+2 |
| 184 | TAD I X0 |
| 185 | SNA |
| 186 | TAD TXTRL /IF NO EXT, FORCE .RL |
| 187 | DCA LIBNAM+3 |
| 188 | LASTLB, TAD LIBU /REGET UNIT |
| 189 | AND (17 |
| 190 | TAD (DCTLW-1 /ADDRESS DEV CTL TABLE |
| 191 | DCA TMP1 |
| 192 | TAD I TMP1 |
| 193 | CDF F0 |
| 194 | SMA CLA /IS DEVICE FILE-STRUCTURED? |
| 195 | JMP NOTFS /NO, BOMB |
| 196 | TAD (ODEVH!1 |
| 197 | DCA OHADDR /ALLOW 2-PAGE HANDLER |
| 198 | TAD LIBU |
| 199 | AND (17 |
| 200 | CIF F1 |
| 201 | JMS I USR /GET THE HANDLER |
| 202 | FETCH |
| 203 | OHADDR, ODEVH!1 |
| 204 | JMS IOERR /YOU'RE KIDDING |
| 205 | TAD OHADDR /NOW THE REAL ADDRESS |
| 206 | DCA LIBDVH |
| 207 | JMP ZTEST |
| 208 | \fNOTFS, JMS TTOTXT |
| 209 | FLSTR-1 |
| 210 | JMS CRLF |
| 211 | JMP START |
| 212 | / |
| 213 | IOMES, CLA |
| 214 | TAD (TTO |
| 215 | DCA PCHR /ENSURE IT COMES OUT ON TTY |
| 216 | JMS TTOTXT |
| 217 | IOMSG-1 |
| 218 | JMS CRLF |
| 219 | JMP START |
| 220 | PAGE |
| 221 | \fZTEST, CDF F1 /FIND OR CREATE LIB. |
| 222 | TAD I (SWYTO9 /GET SWITCH WORD |
| 223 | AND (2000 /TEST FOR /Z |
| 224 | CDF F0 |
| 225 | SZA CLA |
| 226 | JMP NEWLIB /YES, ENTER NEW ONE |
| 227 | OLDLIB, JMS FNDLIB /LOOKUP THE LIBRARY |
| 228 | LOOKUP |
| 229 | JMP NEWLIB /COULDN'T FIND IT |
| 230 | / |
| 231 | TAD LIBBLK /FIRST BLOCK OF LIBRARY |
| 232 | DCA ZCATB |
| 233 | TAD (CBUFS+MBUFS^200!F1 |
| 234 | DCA ZCATC /READ ALL YOU CAN |
| 235 | JMS ZCAT /DO THE READ |
| 236 | CDF F1 |
| 237 | TAD I (CATBUF /LOOK AT CONTROL WORD |
| 238 | CLL RAR |
| 239 | SZA CLA /IS IT A LIBRARY? |
| 240 | JMP NOTLIB /NO, ERROR |
| 241 | TAD I (CATBUF+3 |
| 242 | CDF F0 |
| 243 | DCA CATLEN /LENGTH IN BLOCKS |
| 244 | TAD LIBBLK |
| 245 | DCA LAVAIL /WILL BE UPDATED DURING SCAN |
| 246 | TAD LAVAIL |
| 247 | DCA CATBLK /CURRENT BLOCK IN BUFFER |
| 248 | TAD CATLEN |
| 249 | CIA |
| 250 | DCA TMP2 /COUNTER |
| 251 | CSLOOP, TAD (CBUFS+MBUFS |
| 252 | TAD TMP2 |
| 253 | SMA /WILL THE REST FIT IN BUFFER? |
| 254 | JMP CSLAST /YES |
| 255 | DCA TMP2 |
| 256 | TAD (-CBUFS-MBUFS^100 |
| 257 | DCA TMP1 /ENTRIES NOW IN CORE |
| 258 | JMS SCAT /SCAN CATALOG |
| 259 | TAD ZCATB /NEXT BLOCK WE'LL READ |
| 260 | DCA CATBLK |
| 261 | JMS ZCAT /READ SOME |
| 262 | JMP CSLOOP |
| 263 | \fCSLAST, CIA /NO OF BLOCKS WE DON'T NEED |
| 264 | TAD (CBUFS+MBUFS |
| 265 | JMS R6L /NO OF ENTRIES WE CAN LOOK AT |
| 266 | CIA |
| 267 | DCA TMP1 |
| 268 | JMS SCAT /LOOK FOR END |
| 269 | FULCAT, JMS TTOTXT /RAN OFF THE END |
| 270 | CATFUL-1 |
| 271 | JMS CRLF /** |
| 272 | JMP LCLOSE |
| 273 | / |
| 274 | SCAT, 0 |
| 275 | TAD (CATBUF-1 |
| 276 | DCA X0 |
| 277 | SCLOOP, CDF F1 |
| 278 | TAD I X0 |
| 279 | CMA /TEST FOR END |
| 280 | SNA CLA |
| 281 | JMP GETINF /THAT'S IT |
| 282 | ISZ X0 |
| 283 | ISZ X0 /IGNORE REST OF NAME |
| 284 | TAD I X0 /GET LENGTH |
| 285 | TAD LAVAIL /ADD TO ST BLOCK OF FREE AREA |
| 286 | DCA LAVAIL |
| 287 | ISZ TMP1 |
| 288 | JMP SCLOOP |
| 289 | CDF F0 |
| 290 | JMP I SCAT /GO FOR NEXT BUFFER LOAD |
| 291 | / |
| 292 | NOTLIB, JMS PRLBNM /PRINT LIBRARY NAME |
| 293 | JMS TTOTXT |
| 294 | UNLIB-1 |
| 295 | JMS CRLF |
| 296 | JMP START |
| 297 | PAGE |
| 298 | \fNEWLIB, JMS FNDLIB |
| 299 | ENTER |
| 300 | JMS IOERR |
| 301 | TAD LIBU |
| 302 | AND (7760 |
| 303 | CLL RTR |
| 304 | RTR |
| 305 | SNA /DID HE GIVE A LENGTH? |
| 306 | STL RTL /NO, USE 2 |
| 307 | DCA CATLEN |
| 308 | CDF F1 |
| 309 | TAD I (EQLO /HOW MANY EXTRA BLOCKS WANTED |
| 310 | CDF F0 |
| 311 | TAD CATLEN /PLUS CATALOG REQUIREMENT |
| 312 | CLL |
| 313 | TAD LIBLEN /MINUS AVAILABLE LENGTH |
| 314 | SZL CLA /CHECK FOR ENUF ROOM |
| 315 | JMP LSZERR /NO ROOM, GIVE MESSAGE |
| 316 | / |
| 317 | / WRITE EMPTY CATALOG |
| 318 | / |
| 319 | TAD (CATBUF-1 |
| 320 | DCA X0 |
| 321 | TAD (-MBUFS-CBUFS^400 |
| 322 | DCA TMP1 |
| 323 | CDF F1 |
| 324 | DCA I X0 |
| 325 | ISZ TMP1 |
| 326 | JMP .-2 |
| 327 | TAD (CATBUF-1 /RESET FOR LATER USE |
| 328 | DCA X0 |
| 329 | CLA CMA |
| 330 | TAD CATLEN |
| 331 | SPA SNA /MORE THAN ONE? |
| 332 | JMP CATB0 /JUST ONE |
| 333 | CIA |
| 334 | ISZ ZCATB /START WITH SECOND CAT BLOCK |
| 335 | ZCLOOP, CLL |
| 336 | TAD (MBUFS+CBUFS |
| 337 | DCA TMP1 |
| 338 | SZL /FULL WRITE? |
| 339 | TAD TMP1 /NO |
| 340 | CIA |
| 341 | TAD (MBUFS+CBUFS |
| 342 | JMS R6R |
| 343 | TAD (4000!F1 |
| 344 | DCA ZCATC /SET CONTROL |
| 345 | JMS ZCAT |
| 346 | TAD TMP1 |
| 347 | SPA |
| 348 | JMP ZCLOOP /MORE TO GO |
| 349 | CATB0, CDF F1 |
| 350 | CLA IAC /1 IS LIBRARY CODE |
| 351 | DCA I X0 |
| 352 | TAD (VERS |
| 353 | DCA I X0 /MARK LIBRA VERSION # |
| 354 | TAD LIBLEN /JUST A GUESS |
| 355 | CIA |
| 356 | DCA I X0 |
| 357 | TAD CATLEN |
| 358 | DCA I X0 |
| 359 | CLA CMA /END OF CAT INDICATOR |
| 360 | DCA I X0 /MARKS FIRST AVAIL SLOT |
| 361 | CDF F0 |
| 362 | DCA CHANGD /FORCE A WRITE ON THIS ONE |
| 363 | TAD ZCATB |
| 364 | DCA LAVAIL |
| 365 | TAD LIBBLK /LIBRARY START BLOCK |
| 366 | DCA CATBLK /IS CURRENTLY IN BUFFER |
| 367 | JMP GETINF /BEGIN |
| 368 | / |
| 369 | ZCAT, 0 |
| 370 | CDF F0 |
| 371 | JMS CCHK /LOOKOUT FOR CONTROL C |
| 372 | JMS I LIBDVH |
| 373 | ZCATC, F1 |
| 374 | CATBUF |
| 375 | ZCATB, 0 |
| 376 | JMS IOERR |
| 377 | TAD ZCATC |
| 378 | JMS R6L |
| 379 | AND (17 |
| 380 | TAD ZCATB |
| 381 | DCA ZCATB |
| 382 | ISZ CHANGD /SET UNMODIFIED SW |
| 383 | JMP I ZCAT |
| 384 | JMP .-2 |
| 385 | / |
| 386 | FNDLIB, 0 |
| 387 | TAD I FNDLIB |
| 388 | DCA USRCOD |
| 389 | ISZ FNDLIB |
| 390 | TAD (LIBNAM |
| 391 | DCA LIBBLK |
| 392 | TAD LIBU |
| 393 | AND (17 |
| 394 | CIF F1 |
| 395 | JMS I USR |
| 396 | USRCOD, 0 |
| 397 | LIBBLK, LIBNAM |
| 398 | LIBLEN, 0 /NEG, REMEMBER |
| 399 | JMP I FNDLIB /COULD'T DO IT |
| 400 | TAD LIBBLK /FIRST BLOCK |
| 401 | DCA ZCATB /OF CATALOG |
| 402 | ISZ FNDLIB |
| 403 | JMP I FNDLIB |
| 404 | LSZERR, JMS TTOTXT |
| 405 | SMALL-1 |
| 406 | JMS CRLF |
| 407 | JMP START /GO FOR MORE |
| 408 | PAGE |
| 409 | \f/ |
| 410 | / SETUP POINTERS AND THINGS FOR NEXT INPUT MODULE |
| 411 | / |
| 412 | GETINF, CLA CMA |
| 413 | DCA INCLUD /SET NO-NAME-INCLUDED SW |
| 414 | TAD INLSW /ARE WE GETTING INPUT FROM A LIBR? |
| 415 | SZA CLA |
| 416 | JMP INLIB /YES-GET NEXT MODULE THEREIN |
| 417 | NXTINF, CDF F1 |
| 418 | TAD I INFP /UNIT AND LEN OF NEXT IN FILE |
| 419 | SZA /IS THERE ONE? |
| 420 | JMP FTCHIN /YES |
| 421 | TAD I (SWATOL |
| 422 | AND (1000 /TEST FOR /C |
| 423 | CDF F0 |
| 424 | SNA CLA |
| 425 | JMP LCLOSE /NO MORE |
| 426 | JMS SAVRES /PRESERVE DEV HANDLER RESIDENCY |
| 427 | JMS TTWAIT /FINISH ANY TYPING |
| 428 | CIF F1 |
| 429 | JMS I USR /NEW LINE CONTINUES OLD |
| 430 | DECODE |
| 431 | 2214 /RL DEFAULT EXT |
| 432 | 0 /DO NOT DELETE TENTATIVE FILES |
| 433 | JMS RSTRES /RESTORE RESIDENCY TABLE |
| 434 | TAD (INF |
| 435 | DCA INFP /RESET INPUT FILE POINTER |
| 436 | JMP NXTINF /TRY AGAIN |
| 437 | \fFTCHIN, DCA MODU /UNIT CONTAINING INPUT MOD |
| 438 | ISZ INFP |
| 439 | TAD I INFP |
| 440 | DCA INFST /START OF INPUT FILE |
| 441 | ISZ INFP |
| 442 | TAD INFST |
| 443 | DCA MODBLK /IN THIS CASE, FILE=MODULE |
| 444 | TAD MODU |
| 445 | AND (7760 |
| 446 | CIA |
| 447 | CLL RTR |
| 448 | RTR |
| 449 | DCA MODLEN |
| 450 | TAD (IDEVH!1 |
| 451 | DCA INDVH /TENTATIVE HANDLER ADDR |
| 452 | CDF F0 |
| 453 | TAD MODU |
| 454 | AND (17 |
| 455 | CIF F1 |
| 456 | JMS I USR |
| 457 | FETCH |
| 458 | INDVH, IDEVH!1 /TENTATIVE INPUT HANDLER ADDR |
| 459 | JMS IOERR /DON'T GIVE ME THAT |
| 460 | TAD INDVH |
| 461 | DCA MODDVH /DEVICE HANDLER ADDRESS |
| 462 | DCA THSBLK /FORCE READIN TO READ |
| 463 | LUKMOD, TAD MODBLK /FIRST BLOCK OF MODULE |
| 464 | DCA INBLK /INITIALIZE READIN |
| 465 | JMS READIN /GET FIRST BLOCK |
| 466 | CDF F1 |
| 467 | CLA CMA /-1 |
| 468 | TAD I PMOD /LOOK AT IDENTIFIER |
| 469 | CDF F0 |
| 470 | SNA |
| 471 | JMP GOTLIB /ITS A LIBRARY |
| 472 | CLL RTR |
| 473 | SZA CLA /IS IT A MODULE |
| 474 | JMP BADINF /BAD INPUT |
| 475 | TAD LIBBLK /MAKE SURE |
| 476 | CIA |
| 477 | TAD LIBLEN /THAT MODULE |
| 478 | TAD LAVAIL /FITS IN LIBRARY |
| 479 | CLL |
| 480 | SNA /CHECK FOR TOO LONG HERE TOO** |
| 481 | JMP OVFLO /IT IS TOO LONG |
| 482 | TAD MODLEN |
| 483 | SNL CLA |
| 484 | JMP NXTEBK /GO GETTUM |
| 485 | OVFLO, JMS TTOTXT |
| 486 | TOOBIG-1 |
| 487 | JMS CRLF |
| 488 | JMP GETINF |
| 489 | \fBADINF, JMS TTOTXT |
| 490 | NOTMOD-1 |
| 491 | JMS CRLF |
| 492 | JMP GETINF |
| 493 | / |
| 494 | GOTLIB, TAD MODLEN |
| 495 | SNA CLA |
| 496 | JMP LB2BIG /CAN'T DO A LOOKUP IF G. T. 255 |
| 497 | ISZ INLSW /SET IN-LIBRARY SWITCH |
| 498 | JMP INLIB |
| 499 | LB2BIG, JMS TTOTXT |
| 500 | L2BMSG-1 |
| 501 | JMS CRLF |
| 502 | JMP START |
| 503 | PAGE |
| 504 | \f/ GET NEXT MODULE FROM LIBRARY |
| 505 | / |
| 506 | INLIB, TAD INFST /START OF INPUT FILE |
| 507 | DCA INBLK /IS WHAT WE WANT |
| 508 | JMS READIN /BRING CATALOG INTO MODULE BUFFER |
| 509 | TAD (3 |
| 510 | TAD PMOD |
| 511 | DCA TMP1 |
| 512 | CDF F1 |
| 513 | TAD I TMP1 /GET CATALOG LEN |
| 514 | CIA |
| 515 | DCA TMP1 /HOLD COUNTER IN CASE OF FULL CATALOG |
| 516 | TAD INFST |
| 517 | DCA INBLK /WE WANT THE SAME ONE AGAIN |
| 518 | TAD INFST |
| 519 | DCA TMP3 /INIT ACCUMULATED MODULE START BLOCK |
| 520 | DCA MODLEN /INITAIL MOD LEN IS ZERO |
| 521 | INLSC1, JMS READIN /GET CATALOG BLOCK |
| 522 | TAD (-100 |
| 523 | DCA TMP2 /COUNT ENTRIES IN CAT BLOCK |
| 524 | INLSC2, CDF F1 |
| 525 | TAD I PMOD /LOOK FOR END-OF-CATALOG WORD |
| 526 | CMA |
| 527 | SNA CLA |
| 528 | JMP NDLSC /END OF SCAN |
| 529 | TAD (3 |
| 530 | TAD PMOD /POINT TO LENGTH |
| 531 | DCA TMP5 |
| 532 | TAD I TMP5 |
| 533 | SNA CLA /FIRST ENTRY FOR A MODULE? |
| 534 | JMP NOLEN /NO, DO NOT UPDATE |
| 535 | TAD MODLEN |
| 536 | TAD TMP3 /UPDATE MODULE STARTING BLOCK |
| 537 | DCA TMP3 |
| 538 | TAD I TMP5 /GET THIS LENGTH |
| 539 | DCA MODLEN /FOR THIS MODULE |
| 540 | NOLEN, TAD MODBLK /COMPARE LAST MODULE STARTING BLOCK |
| 541 | CMA CLL |
| 542 | TAD TMP3 /TO ACCUMULATED START BLOCK |
| 543 | SNL CLA /INTERESTING? |
| 544 | JMP NOTYET /NO |
| 545 | TAD I PMOD /YES; WAS NAME DELETED? |
| 546 | SZA CLA |
| 547 | JMP GLMOD /NO, WE'VE GOT A GOOD MODULE |
| 548 | NOTYET, TAD (4 |
| 549 | TAD PMOD /POINT TO NEXT NAME |
| 550 | DCA PMOD |
| 551 | ISZ TMP2 /END OF CAT BLOCK? |
| 552 | JMP INLSC2 /NO |
| 553 | ISZ TMP1 /YES; END OF CATALOG? |
| 554 | JMP INLSC1 /NO, GET NEW BLOCK |
| 555 | NDLSC, DCA INLSW /YES, NO LONGER IN A LIBRARY |
| 556 | JMP NXTINF /GET ANOTHER FILE |
| 557 | \fGLMOD, TAD TMP3 /GET STARTING BLOCK |
| 558 | DCA MODBLK /OF MODULE |
| 559 | JMP LUKMOD /AND GO GET THE MODULE |
| 560 | L2BMSG, TEXT "INPUT LIBRARY TOO BIG";0 |
| 561 | PAGE |
| 562 | \f/ PROCESS LOOP FOR ONE MODULE |
| 563 | / |
| 564 | NXTEBK, TAD (3 |
| 565 | TAD PMOD /ADDR OF FIRST ESD-1 |
| 566 | DCA X0 /RESET POINTER TO NAMES |
| 567 | TAD (-52 /PER BLOCK COUNT |
| 568 | DCA ESDCTR |
| 569 | ESDLUP, CDF F1 |
| 570 | TAD I X0 |
| 571 | DCA ENAM1 |
| 572 | TAD I X0 |
| 573 | DCA ENAM2 |
| 574 | TAD I X0 |
| 575 | DCA ENAM3 |
| 576 | TAD I X0 /TYPE CODE |
| 577 | CDF F0 |
| 578 | TAD (ESDTAB /DISPATCH FROM TBL |
| 579 | DCA TMP1 |
| 580 | JMP I TMP1 |
| 581 | ESDTAB, JMP ESDEND /0=END OF ESD TABLE |
| 582 | JMP DUPLUK /1=ENTRY=LOOK FOR |
| 583 | /DUPLICATE NAME |
| 584 | JMP ESDLND /2=EXTERN=IGNORE NAME |
| 585 | JMP ESDLND /3=FORT COMMON=IGNORE |
| 586 | JMP DUPLUK /4=PROG SECTION |
| 587 | HLT /5=MUL ENTRY=DOESN'T |
| 588 | /EXIST |
| 589 | HLT /6=MUL SECTION=DITTO |
| 590 | JMP DUPLUK /7=SECT8 |
| 591 | JMP ESDLND /10=COMMZ |
| 592 | JMP DUPLUK /11=FIELD1 |
| 593 | \f/ |
| 594 | / LOOK FOR DUPLICATION OF THIS ESD SYMBOL |
| 595 | / |
| 596 | DUPLUK, TAD CATLEN |
| 597 | CIA |
| 598 | DCA TMP1 /COUNT LENGTH OF CAT |
| 599 | TAD CATBLK |
| 600 | CIA |
| 601 | TAD LIBBLK /ARE WE AT FIRST BLOCK? |
| 602 | SZA CLA |
| 603 | JMS CHGCHK /CHECK FOR BLOCK MODIFIED |
| 604 | TAD LIBBLK |
| 605 | DCA NXTCAT /SETUP FOR FIRST BLOCK OF CAT |
| 606 | TAD CATLEN |
| 607 | CIA |
| 608 | DCA CATCNT |
| 609 | GETCB, JMS GCATB /GET IT |
| 610 | TAD (CATBUF-1 |
| 611 | DCA X1 |
| 612 | TAD (-100 /COUNT ENTRIES/BLOCK |
| 613 | DCA TMP2 |
| 614 | CDF F1 |
| 615 | CBSRCH, TAD I X1 /LOOK AT NAME |
| 616 | CMA |
| 617 | SNA |
| 618 | JMP CHKI /END OF CATALOG-LOOK FOR /I |
| 619 | IAC /COMPLETE THE CIA |
| 620 | TAD ENAM1 /COMPARE |
| 621 | SZA CLA |
| 622 | JMP NOMTCH |
| 623 | TAD I X1 |
| 624 | CIA |
| 625 | TAD ENAM2 |
| 626 | SZA CLA |
| 627 | JMP NOMTCH |
| 628 | TAD I X1 /LAST CHANCE |
| 629 | CIA |
| 630 | TAD ENAM3 |
| 631 | SNA CLA |
| 632 | JMP GOTMAT /EQUAL! |
| 633 | NOMTCH, TAD X1 |
| 634 | AND (-4 |
| 635 | TAD (3 /BUMP TO NEXT |
| 636 | DCA X1 |
| 637 | ISZ TMP2 |
| 638 | JMP CBSRCH |
| 639 | JMS CHGCHK /CHECK FOR MODIFIED BLOCK |
| 640 | ISZ TMP1 /END OF CATALOG? |
| 641 | JMP GETCB /NO, GET NEXT |
| 642 | JMS TTOTXT |
| 643 | CATFUL-1 |
| 644 | JMS CRLF |
| 645 | CLA CMA |
| 646 | DCA FULFLG |
| 647 | JMP ESDEND /PUT THAT, IF POSSIBLE |
| 648 | \fGOTMAT, CDF F0 |
| 649 | JMS TTOTXT |
| 650 | ENAM1-1 /PRINT THE NAME |
| 651 | JMS TTOTXT |
| 652 | NDUP-1 /WHICH TO KEEP? |
| 653 | CDF F1 |
| 654 | TAD I (SWATOL |
| 655 | CDF F0 |
| 656 | AND (10 /TEST /I |
| 657 | SNA CLA |
| 658 | JMP CHKR /NO, LOOK FOR /R |
| 659 | GMASK, JMS TTOTXT |
| 660 | KEEP-1 |
| 661 | JMS WAITOP |
| 662 | JMP ESDLND /DEFAULT TO THE OLD ONE |
| 663 | TAD (-"O |
| 664 | SNA |
| 665 | JMP ESDLND /KEEP OLD |
| 666 | IAC /IS IT "N"? |
| 667 | SZA CLA |
| 668 | JMP GMASK /TRY AGAIN |
| 669 | JMP DELTO /DELETE THE OLD |
| 670 | PAGE |
| 671 | \fCHKR, JMS CRLF |
| 672 | CDF F1 |
| 673 | TAD I (SWMTOX |
| 674 | AND (100 /TEST /R |
| 675 | SNA CLA |
| 676 | JMP ESDLND /DEFAULT:KEEP THE OLD ONE |
| 677 | DELTO, CDF F1 |
| 678 | TAD X1 |
| 679 | AND (-4 |
| 680 | CIA |
| 681 | CMA /BACK UP POINTER |
| 682 | DCA X1 |
| 683 | DCA I X1 /CLEAR |
| 684 | DCA I X1 /OLD |
| 685 | DCA I X1 /NAME |
| 686 | ISZ X1 /SKIP OVER LENGTH |
| 687 | DCA CHANGD /BLOCK HAS BEEN MODIFIED |
| 688 | JMP NXTE /ENTER AT END OF LOOP |
| 689 | NDSCN, CDF F1 |
| 690 | TAD I X1 /LOOK AT NEXT |
| 691 | CMA |
| 692 | SNA CLA |
| 693 | JMP ENDCAT /NOW WE'RE THERE |
| 694 | TAD X1 |
| 695 | TAD (3 /BUMP TO NEXT NAME |
| 696 | DCA X1 |
| 697 | NXTE, ISZ TMP2 |
| 698 | JMP NDSCN |
| 699 | JMS CHGCHK /LOOK OUT FOR CHANGES |
| 700 | ISZ CATCNT /END OF CAT ? |
| 701 | SKP |
| 702 | JMP FULCAT /NO MORE PUSSY |
| 703 | JMS GCATB |
| 704 | TAD (CATBUF-1 |
| 705 | DCA X1 |
| 706 | TAD (-100 |
| 707 | DCA TMP2 |
| 708 | JMP NDSCN |
| 709 | \fCHKI, TAD I (SWATOL /LOOK AT /I SW |
| 710 | AND (10 |
| 711 | SNA CLA |
| 712 | JMP ENDCAT /NOT SET |
| 713 | JMS TTOTXT |
| 714 | ENAM1-1 /TYPE ESD NAME |
| 715 | JMS TTOTXT |
| 716 | NCLUD-1 /INCLUDE IT? |
| 717 | IANS, JMS WAITOP |
| 718 | JMP ENDCAT /DEFAULT TO INCLUDE |
| 719 | TAD (-"Y |
| 720 | SNA |
| 721 | JMP ENDCAT /YES, INCLUDE |
| 722 | TAD ("Y-"N |
| 723 | SZA CLA /IS IT "N"? |
| 724 | JMP IANS /NO, TRY AGAIN |
| 725 | JMP ESDLND |
| 726 | ENDCAT, TAD X1 /POINT TO EMPTY SLOT |
| 727 | AND (-4 |
| 728 | CIA |
| 729 | CMA |
| 730 | DCA X1 |
| 731 | JMP INSERT |
| 732 | PAGE |
| 733 | \f/ THIS ESD GOES IN THE CATALOG |
| 734 | / |
| 735 | INSERT, CDF F1 |
| 736 | TAD ENAM1 /MOVE |
| 737 | DCA I X1 /NAME |
| 738 | TAD ENAM2 /TO |
| 739 | DCA I X1 /LIBRARY |
| 740 | TAD ENAM3 /CATALOG |
| 741 | DCA I X1 |
| 742 | ISZ INCLUD /IS THIS THE FIRST? |
| 743 | SKP |
| 744 | TAD MODLEN /YES, GET THE LENGTH |
| 745 | DCA I X1 /AND STORE 4TH WORD |
| 746 | DCA CHANGD /SET CAT MODIFIED SW |
| 747 | CLA IAC |
| 748 | TAD X1 /CHECK FOR END OF BLOCK |
| 749 | AND (377 |
| 750 | SZA CLA |
| 751 | JMP MARKND /NO, MARK END OF CAT |
| 752 | JMS CHGCHK /WRITE THIS BLOCK |
| 753 | CDF F1 |
| 754 | TAD (-400 |
| 755 | DCA TMP1 /SET COUNT FOR BLOCK LEN |
| 756 | TAD (CATBUF-1 |
| 757 | DCA X1 /SET POINTER |
| 758 | CLA CMA |
| 759 | DCA I X1 |
| 760 | ISZ TMP1 |
| 761 | JMP .-2 /CLEAR THE BLOCK |
| 762 | DCA CHANGD |
| 763 | ISZ CATBLK |
| 764 | JMP ESDLND |
| 765 | MARKND, CLA CMA |
| 766 | DCA I X1 /MARK NEW END OF CAT |
| 767 | ESDLND, CDF F0 |
| 768 | CLA STL RTL /TWO TO SKIP VALUE |
| 769 | TAD X0 |
| 770 | DCA X0 |
| 771 | ISZ ESDCTR /DONE WITH BLOCK? |
| 772 | JMP ESDLUP /NO, GET NEXT |
| 773 | JMS READIN /GET NEXT BLOK |
| 774 | JMP NXTEBK /RESET POINTERS AND CONTINUE |
| 775 | ESDEND, ISZ INCLUD /CHECK FOR ANY NAMES OUT |
| 776 | JMP CPYMOD /YES, COPY MODULE INTO LIBRARY |
| 777 | JMS TTOTXT /SORRY, DIDN'T MAKE IT |
| 778 | NONEIN-1 |
| 779 | JMS CRLF |
| 780 | ISZ FULFLG |
| 781 | JMP GETINF /TRY NEXT |
| 782 | JMP LCLOSE |
| 783 | \fCPYMOD, TAD MODBLK /GET IN FILE STRT BLOCK |
| 784 | DCA INBLK |
| 785 | TAD MODLEN |
| 786 | CIA |
| 787 | DCA TMP1 |
| 788 | TAD LAVAIL /FIRST AVAILABLE BLOCK |
| 789 | DCA NXTOBK |
| 790 | CPYLUP, JMS READIN /READ BLOCK OF INPUT |
| 791 | TAD PMOD |
| 792 | DCA PNXTOB |
| 793 | JMS I LIBDVH /CALL OUTPUT HANDLER |
| 794 | 4200!F1 |
| 795 | PNXTOB, MODBUF |
| 796 | NXTOBK, 0 /NEXT OUTPUT BLOCK NUMBER |
| 797 | JMS IOERR |
| 798 | ISZ NXTOBK /BUMP BLOCK NUMBER |
| 799 | ISZ TMP1 /CHECK LENGH |
| 800 | JMP CPYLUP |
| 801 | TAD NXTOBK |
| 802 | DCA LAVAIL /UPDATE AVAILABLE POINTER |
| 803 | JMP GETINF /GO FOR NEXT |
| 804 | PAGE |
| 805 | \fCHGCHK, 0 |
| 806 | CDF F0 /PRECAUTION |
| 807 | TAD CHANGD /HAS BLOCK BEEN MODIFIED? |
| 808 | SZA CLA |
| 809 | JMP I CHGCHK /NO, NOTHING TO DO |
| 810 | TAD CATBLK |
| 811 | DCA ZCATB /WRITE THE BLOCK |
| 812 | TAD (4200!F1 |
| 813 | DCA ZCATC |
| 814 | JMS ZCAT |
| 815 | JMP I CHGCHK /OK |
| 816 | / |
| 817 | / |
| 818 | GCATB, 0 |
| 819 | CDF F0 |
| 820 | TAD NXTCAT |
| 821 | CIA |
| 822 | TAD CATBLK /IS IT IN CORE? |
| 823 | SNA CLA |
| 824 | JMP SOEZ /YES, ITS EZ |
| 825 | TAD NXTCAT |
| 826 | CIA |
| 827 | TAD LIBBLK |
| 828 | TAD CATLEN |
| 829 | SPA SNA CLA /CHECK FOR INTERNAL ERROR |
| 830 | JMP FULCAT /** |
| 831 | TAD NXTCAT |
| 832 | DCA ZCATB |
| 833 | TAD (200!F1 /SET FOR READ |
| 834 | DCA ZCATC |
| 835 | JMS ZCAT |
| 836 | TAD NXTCAT /NEXT BLOCK |
| 837 | DCA CATBLK /IS IN CORE |
| 838 | SOEZ, ISZ NXTCAT |
| 839 | JMP I GCATB |
| 840 | NXTCAT, 0 |
| 841 | PAGE |
| 842 | \fLCLOSE, JMS CHGCHK |
| 843 | TAD USRCOD |
| 844 | TAD (-ENTER /DID WE ENTER A NEW FILE? |
| 845 | SZA CLA |
| 846 | JMP CATLST /NO, GO LIST CATALOG |
| 847 | TAD LIBBLK /GET LEN |
| 848 | CIA |
| 849 | CDF F1 |
| 850 | TAD I (EQLO /GET USER EXTENSION REQUEST |
| 851 | CDF F0 |
| 852 | TAD LAVAIL /PLUS CURRENT END |
| 853 | DCA TMP1 |
| 854 | TAD TMP1 |
| 855 | CLL |
| 856 | TAD LIBLEN /CHECK FOR POSSIBLE |
| 857 | SNL CLA |
| 858 | JMP .+4 |
| 859 | TAD LIBLEN /CAN'T GIVE ALL HE WANTS |
| 860 | CIA |
| 861 | SKP |
| 862 | TAD TMP1 |
| 863 | DCA LCLEN /SET CLOSE LENGTH |
| 864 | TAD CATLEN |
| 865 | CMA |
| 866 | TAD LCLEN /COMPARE CAT LEN TO LIB LEN |
| 867 | SPA SNA CLA |
| 868 | JMP NOLIB /THERE'S NO POINT |
| 869 | TAD LIBBLK /GET FIRST BLOCK |
| 870 | DCA NXTCAT |
| 871 | JMS GCATB |
| 872 | CDF F1 |
| 873 | TAD LCLEN /ACTUAL LIBRARY LENGTH |
| 874 | DCA I (CATBUF+2 |
| 875 | CDF F0 |
| 876 | DCA CHANGD |
| 877 | JMS CHGCHK /WRITE IT |
| 878 | TAD LIBU |
| 879 | AND (17 |
| 880 | CIF F1 |
| 881 | JMS I USR |
| 882 | CLOSE |
| 883 | LIBNAM |
| 884 | LCLEN, 0 |
| 885 | JMS IOERR |
| 886 | JMP CATLST /GO LIST THE CATALOG |
| 887 | / |
| 888 | NOLIB, JMS TTOTXT |
| 889 | WHYCLS-1 |
| 890 | JMS CRLF |
| 891 | JMP START |
| 892 | PAGE |
| 893 | \f/ LIST THE CATALOG |
| 894 | / |
| 895 | CATLST, JMS OOPEN /OPEN LISTING FILE |
| 896 | JMP START /NONE DESIRED |
| 897 | TAD (OCHAR /SETUP FOR DEVICE-INDEPENDENT |
| 898 | DCA PCHR /OUTPUT |
| 899 | TAD (214 /AT TOP OF PAGE |
| 900 | JMS I PCHR |
| 901 | JMS CRLF |
| 902 | JMS TTOTXT |
| 903 | LBV-1 |
| 904 | JMS TTOTXT |
| 905 | CATOF-1 |
| 906 | JMS PRLBNM /PRINT THE NAME |
| 907 | CDF F1 |
| 908 | TAD I (SYSDAT |
| 909 | CDF F0 |
| 910 | SNA |
| 911 | JMP NODATE /DON'T KNOW THE DATE |
| 912 | DCA TMP1 |
| 913 | JMS TTOTXT |
| 914 | ON-1 |
| 915 | CLA /THE FOLLOWING CODE GETS THE DAY |
| 916 | DCA TMP2 |
| 917 | TAD TMP1 /GET THE DATE |
| 918 | RTR /ROTATE THREE RIGHT AND MASK |
| 919 | RAR /TO GET THE DAY IN OCTAL |
| 920 | AND (37 |
| 921 | JMS MAK8BT /MAKE IT 8-BIT AND PRINT |
| 922 | DCA TMP2 |
| 923 | TAD TMP1 /GET THE DATE BACK |
| 924 | AND (7400 /MASK TO GET THE MONTH BITS |
| 925 | JMS R6R /MONTH*4 (IN OCTAL) |
| 926 | DCA TMP2 /PUT IN TEMP. VARIABLE TO SAVE IT |
| 927 | TAD TMP2 /GET IT BACK |
| 928 | \f RTR /MONTH |
| 929 | TAD TMP2 |
| 930 | TAD (MONTHS-6 |
| 931 | DCA .+2 /ADDRESS OF MONTH FROM TABLE |
| 932 | JMS TTOTXT /PUT IT IN THE TEXT LINE |
| 933 | 0 |
| 934 | TAD TMP1 /GET THE DATE---TO FIND THE YEAR |
| 935 | AND (7 /MASK TO GET THE YEAR OFFSET BITS |
| 936 | DCA TMP4 /SAVE THEM |
| 937 | DCA TMP2 |
| 938 | TAD I (7777 /GET THE DATE EXTENSION BITS |
| 939 | AND (600 |
| 940 | CLL RTR /ROTATE TO GET THEM INTO BIT |
| 941 | RTR /POSITIONS 7 AND 8 |
| 942 | TAD (106 /ADD 70(ORIGINAL BASE YEAR) |
| 943 | TAD TMP4 /ADD IN THE YEAR OFFSET BITS |
| 944 | JMS MAK8BT /MAKE 8-BIT AND PRINT |
| 945 | NODATE, JMS CRLF |
| 946 | JMP PRCAT /TITLE IS DONE, PRINT CAT |
| 947 | MAK8BT, 0 /ROUTINE TO CONVERT TO 8-BIT AND PRINT |
| 948 | CLL /FIRST CONVERT TO DECIMAL |
| 949 | CONVYR, TAD (-12 /KEEP SUBTRACTING 12 |
| 950 | SPA /HAVE THE YEAR |
| 951 | JMP GETDG1 |
| 952 | ISZ TMP2 /HOLDS THE FIRST DIGIT OF YEAR |
| 953 | JMP CONVYR |
| 954 | GETDG1, TAD (12 /GET THE SECOND DIGIT |
| 955 | DCA TMP3 /SAVE IT |
| 956 | TAD TMP2 /GET THE FIRST DIGIT |
| 957 | SNA /FIRST DIGIT IS A ZERO |
| 958 | JMP PRDIG2 /PRINT THE SECOND DIGIT |
| 959 | TAD (260 /MAKE FIRST DIGIT OF YEAR 8-BIT |
| 960 | JMS I PCHR /PRINT IT |
| 961 | PRDIG2, TAD TMP3 /GET THE SECOND DIGIT |
| 962 | TAD (260 /MAKE SECOND DIGIT OF YEAR 8-BIT |
| 963 | JMS I PCHR /PRINT IT |
| 964 | JMP I MAK8BT /RETURN |
| 965 | PAGE |
| 966 | \f/ LIST ALL ENTRIES IN THE CATALOG |
| 967 | / |
| 968 | PRCAT, TAD CATLEN |
| 969 | CIA |
| 970 | DCA TMP1 |
| 971 | TAD LIBBLK |
| 972 | DCA NXTCAT |
| 973 | CLA CMA |
| 974 | DCA TMP3 /SET LINE COUNTER |
| 975 | CATLUP, JMS GCATB |
| 976 | TAD (CATBUF-1 |
| 977 | DCA X0 |
| 978 | TAD (-100 |
| 979 | DCA TMP2 |
| 980 | CATLP2, CDF F1 |
| 981 | TAD I X0 /GET FIRST WORD OF NAME |
| 982 | SNA |
| 983 | JMP EMPTY /NOT AN ESD NAME |
| 984 | CMA |
| 985 | SNA |
| 986 | JMP NDCATL /END OF CATALOG |
| 987 | CMA /RESTORE FIRST WORD |
| 988 | JMS TTO2 /PRINT |
| 989 | JMP NDNAM /A SHORT NAME |
| 990 | CDF F1 |
| 991 | TAD I X0 |
| 992 | JMS TTO2 |
| 993 | JMP NDNAM |
| 994 | CDF F1 |
| 995 | TAD I X0 |
| 996 | JMS TTO2 |
| 997 | NOP |
| 998 | NDNAM, ISZ TMP3 /MORE ROOM ON THIS LINE? |
| 999 | JMP SAMLIN /SURE |
| 1000 | JMS CRLF |
| 1001 | TAD (-10 /SETUP FOR 8 PER LINE |
| 1002 | DCA TMP3 |
| 1003 | JMP EMPTY |
| 1004 | SAMLIN, JMS TAB /SPACE OVER TO NEXT NAME |
| 1005 | EMPTY, TAD X0 |
| 1006 | AND (-4 |
| 1007 | TAD (3 |
| 1008 | DCA X0 /POINT TO NEXT |
| 1009 | ISZ TMP2 |
| 1010 | JMP CATLP2 /GO FOR NEXT |
| 1011 | ISZ TMP1 /MORE BLOCKS? |
| 1012 | JMP CATLUP /YES |
| 1013 | JMS CRLF |
| 1014 | JMS TTOTXT |
| 1015 | CATFUL-1 |
| 1016 | NDCATL, JMS CRLF |
| 1017 | TAD (214 /EJECT PAGE |
| 1018 | JMS I PCHR |
| 1019 | JMS OCLOSE /CLOSE THE FILE |
| 1020 | JMP START |
| 1021 | PAGE |
| 1022 | \f/ USEFUL OUTPUT THINGS |
| 1023 | / |
| 1024 | TTO, 0 |
| 1025 | DCA TTOCHR |
| 1026 | JMS TTWAIT |
| 1027 | TAD (200 |
| 1028 | KRS |
| 1029 | TAD (-217 /CRTL/O CHECK |
| 1030 | SNA CLA |
| 1031 | KSF |
| 1032 | SKP |
| 1033 | JMP I TTO |
| 1034 | TAD TTOCHR |
| 1035 | TLS |
| 1036 | DCA TTFLAG |
| 1037 | JMP I TTO |
| 1038 | TTOCHR, 0 |
| 1039 | TTWAIT, 0 |
| 1040 | TAD TTFLAG |
| 1041 | SNA CLA |
| 1042 | JMP I TTWAIT |
| 1043 | JMS CCHK /BEWARE OF CTRL/C |
| 1044 | TSF |
| 1045 | JMP .-2 /WAIT TILL DONE |
| 1046 | DCA TTFLAG /CLEAR BUSY FLAG |
| 1047 | JMP I TTWAIT |
| 1048 | CCHK, 0 |
| 1049 | KSF |
| 1050 | JMP I CCHK /NOTHING TO WORRY ABOUT |
| 1051 | TAD (200 |
| 1052 | KRS |
| 1053 | TAD (-203 |
| 1054 | SNA CLA /WAS IT CONTROL C? |
| 1055 | JMP I (7600 /YES |
| 1056 | JMP I CCHK |
| 1057 | TTO2, 0 |
| 1058 | DCA TMP7 |
| 1059 | TAD TMP7 |
| 1060 | JMS R6R |
| 1061 | JMS TTO2A |
| 1062 | TAD TMP7 |
| 1063 | JMS TTO2A |
| 1064 | ISZ TTO2 |
| 1065 | JMP I TTO2 |
| 1066 | TTO2A, 0 |
| 1067 | AND (77 |
| 1068 | SNA |
| 1069 | JMP I TTO2 |
| 1070 | TAD (-40 |
| 1071 | SPA |
| 1072 | TAD (100 |
| 1073 | TAD (240 |
| 1074 | JMS I PCHR |
| 1075 | ISZ TTPOS /BUMP POSITION COUNT |
| 1076 | JMP I TTO2A |
| 1077 | \fR6R, 0 |
| 1078 | CLL RTR |
| 1079 | RTR |
| 1080 | RTR |
| 1081 | JMP I R6R |
| 1082 | R6L, 0 |
| 1083 | CLL RTL |
| 1084 | RTL |
| 1085 | RTL |
| 1086 | JMP I R6L |
| 1087 | TTOTXT, 0 |
| 1088 | CDF F0 |
| 1089 | TAD I TTOTXT |
| 1090 | DCA X7 |
| 1091 | ISZ TTOTXT /BUMP PAST POINTER |
| 1092 | TAD I X7 |
| 1093 | JMS TTO2 |
| 1094 | JMP I TTOTXT |
| 1095 | JMP .-3 |
| 1096 | CRLF, 0 |
| 1097 | DCA TTPOS /RESET POSITION |
| 1098 | TAD (215 |
| 1099 | JMS I PCHR |
| 1100 | TAD (212 |
| 1101 | JMS I PCHR |
| 1102 | JMP I CRLF |
| 1103 | TAB, 0 /PSEUDO-TAB GENERATOR |
| 1104 | TAD (240 |
| 1105 | JMS I PCHR |
| 1106 | ISZ TTPOS |
| 1107 | TAD TTPOS |
| 1108 | AND (7 |
| 1109 | SNA CLA /IS POSITION A MULTIPLE OF 8 |
| 1110 | JMP I TAB |
| 1111 | JMP TAB+1 /NO, TRY MORE |
| 1112 | PAGE |
| 1113 | \fWAITOP, 0 |
| 1114 | TAD (277 /QUESTION |
| 1115 | JMS TTO |
| 1116 | DCA RETCHR |
| 1117 | WREP, JMS TTI /WAIT FOR REPLY |
| 1118 | TAD (-215 |
| 1119 | SNA |
| 1120 | JMP DFALT |
| 1121 | TAD (215-240 /PRINTING? |
| 1122 | SPA |
| 1123 | JMP WREP /NO, TRY AGIAN |
| 1124 | TAD (240 |
| 1125 | DCA RETCHR |
| 1126 | TAD RETCHR |
| 1127 | ECHO, JMS TTO |
| 1128 | JMS TTI |
| 1129 | TAD (-215 |
| 1130 | SNA |
| 1131 | JMP GOTREP |
| 1132 | TAD (215-377 /LOOKOUT FOR RUBOUT! |
| 1133 | SNA |
| 1134 | JMP RUBOUT |
| 1135 | TAD (377 |
| 1136 | JMP ECHO |
| 1137 | RUBOUT, JMS CRLF |
| 1138 | JMP WAITOP+1 |
| 1139 | GOTREP, ISZ WAITOP /GOT A REAL ANSWER |
| 1140 | DFALT, JMS CRLF |
| 1141 | TAD RETCHR |
| 1142 | JMP I WAITOP |
| 1143 | RETCHR, 0 |
| 1144 | / |
| 1145 | TTI, 0 |
| 1146 | KSF /WAIT FOR A KEY |
| 1147 | JMP .-1 |
| 1148 | KRB |
| 1149 | AND (177 /TAKE CARE OF PARITY |
| 1150 | TAD (-3 /CTRL C? |
| 1151 | SNA |
| 1152 | JMP I (7600 /YES |
| 1153 | TAD (203 /GET ORGINIAL CHAR BACK |
| 1154 | JMP I TTI |
| 1155 | PAGE |
| 1156 | \f/ |
| 1157 | / INPUT BUFFERRER AND STUFF |
| 1158 | / |
| 1159 | READIN, 0 |
| 1160 | CDF F0 |
| 1161 | TAD INBLK |
| 1162 | TAD THSBLK /-FIRST BLOCK FOLLOWING BUFFER CONTENTS |
| 1163 | CLL |
| 1164 | TAD (MBUFS |
| 1165 | SNL /IS IT IN CORE? |
| 1166 | JMP MUSTRD /NO, WE HAVE TO DO A READ |
| 1167 | CLL RTR |
| 1168 | RTR |
| 1169 | RAR /TIMES 400 |
| 1170 | SETP, TAD (MODBUF /PLUSS BUFFER ADDR |
| 1171 | DCA PMOD /POINTS TO BLOCK |
| 1172 | ISZ INBLK /READY FOR NEXT |
| 1173 | JMP I READIN |
| 1174 | MUSTRD, CLA /THIS ONE'S HARDER |
| 1175 | TAD INBLK |
| 1176 | DCA RDBLK |
| 1177 | TAD INBLK |
| 1178 | TAD (MBUFS |
| 1179 | CIA |
| 1180 | DCA THSBLK |
| 1181 | JMS I MODDVH |
| 1182 | MBUFS^200!F1 |
| 1183 | MODBUF |
| 1184 | RDBLK, 0 |
| 1185 | JMS IOERR |
| 1186 | JMP SETP /OK |
| 1187 | \f/ ROUTINES TO SAVE AND RESTORE |
| 1188 | / DEVICE HANDLER RESIDENCY TABLE |
| 1189 | / |
| 1190 | SAVRES, 0 |
| 1191 | TAD (DHRES-1 |
| 1192 | DCA X0 |
| 1193 | TAD (SVRES-1 |
| 1194 | DCA X1 |
| 1195 | JMS MOVRES |
| 1196 | JMP I SAVRES |
| 1197 | RSTRES, 0 |
| 1198 | TAD (SVRES-1 |
| 1199 | DCA X0 |
| 1200 | TAD (DHRES-1 |
| 1201 | DCA X1 |
| 1202 | JMS MOVRES |
| 1203 | JMP I RSTRES |
| 1204 | MOVRES, 0 |
| 1205 | TAD (-17 |
| 1206 | DCA TMP1 |
| 1207 | CDF F1 |
| 1208 | TAD I X0 |
| 1209 | DCA I X1 |
| 1210 | ISZ TMP1 |
| 1211 | JMP .-3 |
| 1212 | CDF F0 |
| 1213 | JMP I MOVRES |
| 1214 | SVRES=7400 |
| 1215 | \f/ PRINT THE LIBRARY NAME |
| 1216 | / |
| 1217 | PRLBNM, 0 |
| 1218 | TAD LIBNAM |
| 1219 | JMS TTO2 /FIRST 2 CHARS |
| 1220 | JMP PREXT |
| 1221 | TAD LIBNAM+1 |
| 1222 | JMS TTO2 |
| 1223 | JMP PREXT |
| 1224 | TAD LIBNAM+2 |
| 1225 | JMS TTO2 |
| 1226 | NOP |
| 1227 | PREXT, TAD (". |
| 1228 | JMS I PCHR |
| 1229 | TAD LIBNAM+3 |
| 1230 | JMS TTO2 |
| 1231 | JMP I PRLBNM |
| 1232 | JMP I PRLBNM |
| 1233 | PAGE |
| 1234 | \f/ OUTPUT HANDLERS STOLEN FROM PIP |
| 1235 | OUFLD=F1 |
| 1236 | OUCTL=MBUFS^200!4000!F1 |
| 1237 | OUBUF=MODBUF |
| 1238 | / |
| 1239 | / INITIALIZE FOR OUTPUT |
| 1240 | / |
| 1241 | OUSETP, 0 |
| 1242 | TAD (OUCTL&3700 /BUFFER SIZE IN DBL WORDS |
| 1243 | CIA /NEGATE IT (PAL10 BLOWS) |
| 1244 | DCA OUDWCT |
| 1245 | TAD (OUBUF |
| 1246 | DCA OUPTR /INITIALIZE WORD POINTER |
| 1247 | TAD OUJMPE |
| 1248 | DCA OUJMP /INITIALIZE 3-WAY CHARACTER SWITCH |
| 1249 | JMP I OUSETP |
| 1250 | / |
| 1251 | / STORE CHARACTERS IN OUTPUT BUFFER |
| 1252 | / IN PS8 FORMAT (YOU KNOW, 3 CHARS |
| 1253 | / IN 2 WORDS THE WRONG WAY) |
| 1254 | / |
| 1255 | OCHAR, 0 |
| 1256 | AND (377 |
| 1257 | DCA OUTEMP |
| 1258 | CDF OUFLD /SET DATA FIELD TO BUFFER'S FIELD |
| 1259 | ISZ OUJMP /BUMP THE CHARACTER SWITCH |
| 1260 | OUJMP, HLT /THREE WAY CHARACTER SWITCH |
| 1261 | JMP OCHAR1 |
| 1262 | JMP OCHAR2 |
| 1263 | TAD OUTEMP |
| 1264 | CLL RTL |
| 1265 | RTL |
| 1266 | AND (7400 |
| 1267 | TAD I OUPOLD |
| 1268 | DCA I OUPOLD /UPDATE FIRST WORD OF TWO WITH HIGH |
| 1269 | /ORDER 4 BITS OF THIRD CHAR |
| 1270 | TAD OUTEMP |
| 1271 | CLL RTR |
| 1272 | RTR |
| 1273 | RAR |
| 1274 | AND (7400 |
| 1275 | TAD I OUPTR |
| 1276 | DCA I OUPTR /UPDATE 2ND WORD FROM LO 4 BITS |
| 1277 | TAD OUJMPE |
| 1278 | DCA OUJMP /RESET SWITCH |
| 1279 | ISZ OUPTR |
| 1280 | ISZ OUDWCT /BUMP COUNTER EVERY 3 CHARS |
| 1281 | JMP OUCOMN |
| 1282 | TAD (OUCTL /LOAD CONTROL WORD FOR A FULL WRITE |
| 1283 | JMS I (OUTDMP /DUMP THE BUFFER |
| 1284 | JMS OUSETP /RE-INITIALIZE THE POINTERS |
| 1285 | JMP OUCOMN |
| 1286 | OCHAR2, TAD OUPTR |
| 1287 | DCA OUPOLD /SAVE POINTER TO FIRST WORD OF TWO |
| 1288 | ISZ OUPTR /BUMP WORD POINTER TO SECOND WORD |
| 1289 | OCHAR1, TAD OUTEMP |
| 1290 | DCA I OUPTR |
| 1291 | OUCOMN, CDF F0 |
| 1292 | JMP I OCHAR |
| 1293 | OUTEMP, 0 |
| 1294 | OUPOLD, 0 |
| 1295 | OUPTR, 0 |
| 1296 | OUJMPE, JMP OUJMP |
| 1297 | OUDWCT, 0 |
| 1298 | / |
| 1299 | / MOVE OUTPUT FILE NAME TO FIELD 0 |
| 1300 | / |
| 1301 | OFNAME, 0 |
| 1302 | TAD (OUTF2 |
| 1303 | DCA X0 /NAME OF CAT LIST FILE |
| 1304 | CDF F1 |
| 1305 | TAD I X0 |
| 1306 | DCA OUFNAM /FIRST 2 CHARS |
| 1307 | TAD I X0 |
| 1308 | DCA OUFNAM+1 |
| 1309 | TAD I X0 |
| 1310 | DCA OUFNAM+2 |
| 1311 | TAD I X0 |
| 1312 | SNA |
| 1313 | TAD TXTCA /DEFAULT CAT EXT |
| 1314 | DCA OUFNAM+3 |
| 1315 | CDF F0 /RESTORE FIELD |
| 1316 | JMP I OFNAME |
| 1317 | OUFNAM, ZBLOCK 4 |
| 1318 | TXTCA, 301 |
| 1319 | PAGE |
| 1320 | \fOOPEN, 0 |
| 1321 | CDF F1 |
| 1322 | TAD I (OUTF2 /GET DEVICE CODE, LEN |
| 1323 | DCA OUELEN /HOLD IT A MO |
| 1324 | JMS I (OFNAME /GET FILE NAME INTO FIELD 0 |
| 1325 | TAD OUELEN /CHECK FOR NULL FILE |
| 1326 | SNA CLA |
| 1327 | JMP I OOPEN /NOTHING TO OPEN |
| 1328 | TAD OUNAME /RESET ENTER CALL |
| 1329 | DCA OUBLK |
| 1330 | TAD (IDEVH!1 |
| 1331 | DCA OUHNDL |
| 1332 | TAD OUELEN /THE UNIT |
| 1333 | CIF F1 |
| 1334 | JMS I USR |
| 1335 | FETCH /ASSIGN, FETCH HANDLER |
| 1336 | OUHNDL, 0 /OUTPUT DEVICE HANDLER ENTRY |
| 1337 | JMS IOERR /HUH? |
| 1338 | TAD OUELEN /UNIT AGAIN |
| 1339 | CIF F1 |
| 1340 | JMS I USR |
| 1341 | ENTER /ENTER OUTPUT FILE |
| 1342 | OUBLK, OUFNAM /REPLACED WITH STARTING BLOCK |
| 1343 | OUELEN, 0 /REPLACED WITH LENGTH OF HOLE |
| 1344 | JMS IOERR /YOU BLEW IT!!! |
| 1345 | DCA OUCCNT |
| 1346 | JMS I (OUSETP |
| 1347 | ISZ OOPEN |
| 1348 | JMP I OOPEN |
| 1349 | \fOUTDMP, 0 |
| 1350 | DCA OUCTLW /STORE THE CONTROL WORD |
| 1351 | TAD OUCCNT |
| 1352 | SNA |
| 1353 | ISZ OUCTLW |
| 1354 | TAD OUBLK |
| 1355 | DCA OUREC /COMPUTE STARTING BLOCK |
| 1356 | TAD OUCTLW |
| 1357 | JMS R6L |
| 1358 | AND (17 /COMPUTE THE NUMBER OF RECORDS |
| 1359 | TAD OUCCNT /UPDATE SIZE OF FILE |
| 1360 | DCA OUCCNT |
| 1361 | TAD OUCCNT |
| 1362 | CLL CML |
| 1363 | TAD OUELEN |
| 1364 | SNL SZA CLA /EXCEED GIVEN LENGTH ? |
| 1365 | JMS IOERR /YES - ERROR |
| 1366 | CDF F0 |
| 1367 | JMS I OUHNDL |
| 1368 | OUCTLW, 0 |
| 1369 | OUBUF |
| 1370 | OUREC, 0 |
| 1371 | JMS IOERR |
| 1372 | JMP I OUTDMP |
| 1373 | \fOCLOSE, 0 |
| 1374 | TAD (232 /OUTPUT A CTRL/Z |
| 1375 | JMS I PCHR |
| 1376 | FILLLP, JMS I PCHR |
| 1377 | TAD (77 |
| 1378 | AND I (OUDWCT |
| 1379 | SZA CLA /UP TO THE BOUNDARY YET? |
| 1380 | JMP FILLLP /NO - FILL WITH ZEROS |
| 1381 | TAD I (OUDWCT /GET DOUBLEWORD COUNT LEFT |
| 1382 | TAD (OUCTL&3700 |
| 1383 | SNA /A FULL WRITE LEFT? |
| 1384 | JMP NODUMP /YES DON'T DO IT |
| 1385 | TAD (4000!OUFLD /PUT IN FIELD AND WRITE BITS |
| 1386 | JMS OUTDMP |
| 1387 | NODUMP, CIF CDF F1 |
| 1388 | TAD I (OUTF2 |
| 1389 | CDF F0 |
| 1390 | JMS I USR |
| 1391 | CLOSE /CLOSE THE OUTPUT FILE |
| 1392 | OUNAME, OUFNAM /POINTER TO OUTPUT FILE NAME |
| 1393 | OUCCNT, 0 |
| 1394 | JMS IOERR /ERROR WHILE CLOSING - BAD!! |
| 1395 | JMP I OCLOSE /ALL DONE |
| 1396 | PAGE |
| 1397 | \f/ MESSAGES |
| 1398 | / |
| 1399 | LBV, TEXT "LIBRA V " |
| 1400 | *.-1 |
| 1401 | VMESG, VERS&70^7+VERS+6060 |
| 1402 | PATCH&77^100+40 |
| 1403 | 4000 |
| 1404 | NONEIN, TEXT "MODULE NOT INCLUDED";0 |
| 1405 | FLSTR, TEXT "LIBRARY MUST BE ON A FILE-STRUCTURED DEVICE";0 |
| 1406 | SMALL, TEXT "INSUFFICIENT SPACE FOR LIBRARY";0 |
| 1407 | NOTMOD, TEXT "INPUT NOT A MODULE";0 |
| 1408 | TOOBIG, TEXT "INPUT TOO BIG FOR LIBRARY";0 |
| 1409 | UNLIB, TEXT " IS NOT A LIBRARY";0 |
| 1410 | NDUP, TEXT " IS DUPLICATE NAME";0 |
| 1411 | KEEP, TEXT "; KEEP OLD OR NEW";0 |
| 1412 | CATFUL, TEXT "CATALOG IS FULL";0 |
| 1413 | NCLUD, TEXT ": INCLUDE";0 |
| 1414 | WHYCLS, TEXT "LIBRARY TOO SMALL FOR USE; START OVER";0 |
| 1415 | IOMSG, TEXT "I/O ERROR";0 |
| 1416 | CATOF, TEXT "CATALOG OF ";0 |
| 1417 | ON, TEXT " ON ";0 |
| 1418 | CS197, TEXT ", 197";0 |
| 1419 | MONTHS, TEXT "-JAN-@@@@@-FEB-@@@@@-MAR-@@@@" |
| 1420 | TEXT "-APR-@@@@@-MAY-@@@@@-JUN-@@@@" |
| 1421 | TEXT "-JUL-@@@@@-AUG-@@@@@-SEP-@@@@" |
| 1422 | TEXT "-OCT-@@@@@-NOV-@@@@@-DEC-@@@@" |
| 1423 | $ |
| 1424 | \f |