| 1 | /2 OS8 PIP10 - PDP-10 CONVERSION PROGRAM V3A |
| 2 | / |
| 3 | / |
| 4 | / |
| 5 | / |
| 6 | / |
| 7 | / |
| 8 | / |
| 9 | / |
| 10 | / |
| 11 | /COPYRIGHT (C) 1974,1975 BY DIGITAL EQUIPMENT CORPORATION |
| 12 | / |
| 13 | / |
| 14 | / |
| 15 | / |
| 16 | / |
| 17 | / |
| 18 | / |
| 19 | / |
| 20 | / |
| 21 | / |
| 22 | /THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE |
| 23 | /AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT |
| 24 | /CORPORATION. DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY |
| 25 | /FOR ANY ERRORS THAT MAY APPEAR IN THIS DOCUMENT. |
| 26 | / |
| 27 | /THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FURNISHED TO THE PURCHASER |
| 28 | /UNDER A LICENSE FOR USE ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED |
| 29 | /(WITH INCLUSION OF DIGITAL'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH |
| 30 | /SYSTEM, EXCEPT AS MAY OTHERWISE BE PROVIDED IN WRITING BY DIGITAL. |
| 31 | / |
| 32 | /DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE |
| 33 | /OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY |
| 34 | /DIGITAL. |
| 35 | / |
| 36 | / |
| 37 | / |
| 38 | / |
| 39 | / |
| 40 | / |
| 41 | / |
| 42 | / |
| 43 | / |
| 44 | / |
| 45 | \f DTRB=6772 |
| 46 | DTLB=6774 |
| 47 | DTXA=6764 |
| 48 | DTCA=6762 |
| 49 | DTRA=6761 |
| 50 | DTSF=6771 |
| 51 | |
| 52 | |
| 53 | /WRITTEN BY MARK BRAMHALL 1970 |
| 54 | /MODIFIED FOR TD8E BY R. LARY 1973 |
| 55 | /DATE 75 PATCH ADDED BY S.R. AFTER 1/5/75 |
| 56 | / |
| 57 | /PIP10 IS A PIP FOR OS8 THAT HANDLES PDP-10 DECTAPES |
| 58 | / |
| 59 | /COMMAND DECODER RULES: |
| 60 | / |
| 61 | /*OUTPUT_INPUT,INPUT,... |
| 62 | / |
| 63 | /OUTPUT IS: |
| 64 | / DEV:FILE.EXT[NN] |
| 65 | / DEFAULT DEVICE IS DSK: |
| 66 | / [NN] IGNORED IF PDP-10 OUTPUT |
| 67 | / IF /L OR /F DEFAULT OUTPUT IS TTY: |
| 68 | / |
| 69 | /INPUT IS: |
| 70 | / DEV:FILE.EXT |
| 71 | / DEFAULT DEVICE IS DSK: |
| 72 | / FOLLOWING DEFAULT DEVICES ARE THE PRECEEDING DEVICE |
| 73 | / UP TO NINE (9) INPUT FILES |
| 74 | / |
| 75 | /OPTIONS ARE: |
| 76 | / /L IS LIST DIRECTORY (ONLY VALID IF PDP-10 INPUT) |
| 77 | / /F IS SHORT FORM DIRECTORY (ONLY PDP-10 INPUT) |
| 78 | / /Z IS ZERO DIRECTORY BEFORE TRANSFER (ONLY IF PDP-10 OUTPUT) |
| 79 | / /D IS DELETE OLD OUTPUT FILE BEFORE TRANSFER |
| 80 | / /B IS BINARY MODE TRANSFER (I.E. 8 BITS PER 36 BITS) |
| 81 | / /I IS IMAGE MODE TRANSFER (I.E. 3 12 BITS PER 36 BITS) |
| 82 | / /P IS PRESERVE LINE NUMBERS (DEFAULT IS TO DELETE THEM) |
| 83 | |
| 84 | |
| 85 | / MAINTENACE RELEASE FIXES: |
| 86 | |
| 87 | /1. DATE 75 STUFF |
| 88 | /2. TD8E RELIABILITY IMPROVEMENTS |
| 89 | /3. ANSI DATE OUTPUT FORMAT |
| 90 | /4. INCORPORATED PATCH BY DAVID HEMBLEN [UNITED AIRCRAFT |
| 91 | / RESEARCH LABORATORIES] TO ALLOW WRITING PDP-6 |
| 92 | / DECTAPES ON A TD8E. |
| 93 | \f/COMMAND DECODER SETS UP: |
| 94 | / |
| 95 | /AT "MOUTPU" THE LIST-- |
| 96 | / LLL LLL LLD DDD OR UUU 100 000 000 |
| 97 | / NAME (TRIMMED) NAME (EXCESS 40) |
| 98 | / NAME NAME |
| 99 | / NAME NAME |
| 100 | / EXTENSION EXTENSION |
| 101 | / 0 EXTENSION |
| 102 | / |
| 103 | / OS8 FILE OR PDP-10 FILE |
| 104 | / |
| 105 | /WHERE L IS LENGTH (8 BITS), D IS DEVICE (4 BITS), U IS UNIT (3 BITS) |
| 106 | / |
| 107 | /AT "MINPUT" THE LIST-- |
| 108 | / LLL LLL LLD DDD OR UUU 100 000 000 |
| 109 | / START BLOCK ANY BLOCK |
| 110 | / |
| 111 | / OS8 FILE OR PDP-10 FILE |
| 112 | / |
| 113 | /THE LIST ENDS WITH A ZERO (0) WORD |
| 114 | / |
| 115 | /AT "MPARAM" THE BLOCK-- |
| 116 | / ABC DEF GHI JKL |
| 117 | / MNO PQR STU VWX |
| 118 | / YZ0 123 456 789 |
| 119 | / |
| 120 | /WHICH ARE THE OPTION CHARACTERS |
| 121 | / |
| 122 | /THE = CONSTRUCTION IS NOT IMPLEMENTED |
| 123 | \f/DEFINITIONS |
| 124 | |
| 125 | VERSION= 3 /VERSION NUMBER |
| 126 | SUBVER= 01 /PATCH LEVEL |
| 127 | /LOCATED AT "VERLOC" AS 60+VERSION^100+SUBVER |
| 128 | |
| 129 | DIRECT=7000 /PDP-10 DIRECTORY BUFFER (FIELD 1) |
| 130 | IBUF10=3000 /PDP-10 INPUT BUFFER (FIELD 1) |
| 131 | INBUF=3000 /OS8 INPUT BUFFER (FIELD 1) |
| 132 | OBUF10=5000 /PDP-10 OUTPUT BUFFER (FIELD 1) |
| 133 | OUBUF=5000 /OS8 OUTPUT BUFFER (FIELD 1) |
| 134 | |
| 135 | OUDEVH=7200 /OUTPUT DEVICE (FIELD 0) |
| 136 | INDEVH=6600 /INPUT DEVICE (FIELD 0) |
| 137 | |
| 138 | INCTL=1010 /INPUT CONTROL |
| 139 | OUCTL=5010 /OUTPUT CONTROL |
| 140 | INRECS=4 /INPUT RECORDS |
| 141 | |
| 142 | MDATE=7666 /MONITOR'S DATE (FIELD 1) |
| 143 | |
| 144 | MINPUT=7617 /INPUT LIST (FIELD 1) |
| 145 | MOUTPU=7600 /OUTPUT LIST (FIELD 1) |
| 146 | MPARAM=7643 /PARAMETER LIST (FIELD 1) |
| 147 | JSBITS=7746 /0S8 JOB STATUS BITS |
| 148 | |
| 149 | DCB=7760 /DEVICE CONTROL BLOCK (FIELD 1) |
| 150 | PTP=20 /DCB VALUE OF THE PAPER TAPE PUNCH |
| 151 | \f/PAGE ZERO AND POINTERS |
| 152 | |
| 153 | *10 |
| 154 | |
| 155 | INDEX0, 0 /AUTO-INDEX REGISTERS |
| 156 | INDEX1, 0 |
| 157 | INDEX2, 0 |
| 158 | INDEX3, 0 |
| 159 | INDEX4, 0 |
| 160 | INDEX5, 0 |
| 161 | INDEX6, 0 |
| 162 | IXR, 0 /INPUT LIST INDEX REGISTER |
| 163 | |
| 164 | *20 |
| 165 | |
| 166 | UNIT10, 0 /CURRENT PDP-10 UNIT (U400) |
| 167 | |
| 168 | POINT, 0 /GENERAL POINTER |
| 169 | |
| 170 | CNTR, 0 /GENERAL COUNTER |
| 171 | |
| 172 | TEMP1, 0 /TEMPORARIES |
| 173 | TEMP2, 0 |
| 174 | TEMP3, 0 |
| 175 | TEMP4, 0 |
| 176 | TEMP5, 0 |
| 177 | TEMP6, 0 |
| 178 | |
| 179 | CHARNI, 0 /CHARACTER INPUT NUMBER |
| 180 | CHARNO, 0 /CHARACTER OUTPUT NUMBER |
| 181 | |
| 182 | OUNIT, 0 /OUTPUT UNIT |
| 183 | IUNIT, 0 /INPUT UNIT |
| 184 | |
| 185 | IBLOCK, 0 /INPUT BLOCK |
| 186 | OBLOCK, 0 /OUTPUT BLOCK |
| 187 | |
| 188 | INPUT, 0 /INPUT ROUTINE POINTER |
| 189 | OUTPUT, 0 /OUTPUT ROUTINE POINTER |
| 190 | |
| 191 | IPOINT, 0 /INPUT POINTER |
| 192 | OPOINT, 0 /OUTPUT POINTER |
| 193 | |
| 194 | SAVELN, 0 /OPTION /P SWITCH |
| 195 | |
| 196 | MODE, 0 /OPTION /I AND /B SWITCH |
| 197 | |
| 198 | WORDS, 0 /WORDS LEFT COUNTER |
| 199 | |
| 200 | DATE, 0 /TODAY'S DATE |
| 201 | |
| 202 | FREEP, 0 /POINT TO FREE SPOT |
| 203 | |
| 204 | PRINT0, 0 /PRINT ROUTINE TEMPORARIES |
| 205 | PRINT1, 0 |
| 206 | PRINT2, 0 |
| 207 | PRINT3, 0 |
| 208 | PRINTC, 0 /240 FOR LEADING SPACES |
| 209 | |
| 210 | RBFLAG, 0 /RUBOUT FLAG |
| 211 | |
| 212 | CDDEVF, 0 /DEFAULT DEVICE NAME |
| 213 | 0 |
| 214 | |
| 215 | CDNAME, 0 /FILE NAME |
| 216 | 0 |
| 217 | 0 |
| 218 | CDEXT, 0 /FILE EXTENSION |
| 219 | 0 |
| 220 | 0 /FILLER WORD |
| 221 | |
| 222 | PERSW, 0 /PERIOD SWITCH |
| 223 | |
| 224 | DEVSW, 0 /DEVICE SWITCH |
| 225 | |
| 226 | CDDEV, 0 /DEVICE |
| 227 | 0 |
| 228 | |
| 229 | INSEG, 0 /PDP-10 UNIT WITH DIRECTORY IN CORE |
| 230 | |
| 231 | PDP10D, ZBLOCK 10 /LIST OF KNOWN PDP-10 UNITS |
| 232 | |
| 233 | CDCNT, 0 /INPUT LIST COUNTER |
| 234 | |
| 235 | CDI04, 0 /POINTER SAVE |
| 236 | |
| 237 | XDSK, TEXT /DSK/ /DEFAULT DEVICE DSK: |
| 238 | |
| 239 | OCHARY, 0 /TEMPORARY |
| 240 | DVTYPE, 0 /DEVICE TYPE HOLDER |
| 241 | TDUNIT, 0 /0 OR 4000 |
| 242 | TAPFUN, 0 /DECTAPE FUNCTION |
| 243 | DATE75, 0 /1 MEANS HAD H.O. BIT ON |
| 244 | XDATE, 0 /POINTS TO EXTRA DATE BIT |
| 245 | HIDATE, 0 /HIGH-ORDER BIT OF TODAY'S DATE |
| 246 | |
| 247 | / KLUDGE FOR DATE-75 BUG: |
| 248 | / ONLY CONSIDER 1 MORE BIT OF PRECISION |
| 249 | / INSTEAD OF ALL 3 EXTRA BITS |
| 250 | / SINCE OS/8 DATE WILL RUN OUT BEFORE |
| 251 | / THAT FAILS |
| 252 | PAGE |
| 253 | \f JMP I (PIP10 /NORMAL ENTRY |
| 254 | JMS ERROR /PIP10 CANNOT BE CHAINED TO |
| 255 | ERMES0-1 |
| 256 | |
| 257 | /ERROR ROUTINES |
| 258 | |
| 259 | IOERR, JMS ERROR /I/O ERROR |
| 260 | ERMES1-1 |
| 261 | |
| 262 | NOROOM, JMS ERROR /NO ROOM IN TAPE OR DIRECTORY |
| 263 | ERMES2-1 |
| 264 | |
| 265 | NOOFIL, JMS ERROR /NO SUCH DEVICE |
| 266 | ERMES3-1 |
| 267 | |
| 268 | FNOTFD, JMS ERROR /FILE NOT FOUND |
| 269 | ERMES9-1 |
| 270 | NOT10F, JMS ERROR /NOT A PDP-10 FILE |
| 271 | ERMES4-1 |
| 272 | |
| 273 | ERDELF, JMS ERROR /ERROR DELETING A FILE |
| 274 | ERMES5-1 |
| 275 | |
| 276 | NOTPSF, JMS ERROR /NOT A OS8 FILE |
| 277 | ERMES6-1 |
| 278 | |
| 279 | NOOOFL, JMS ERROR /ERROR OPENING THE OUTPUT FILE |
| 280 | ERMES7-1 |
| 281 | |
| 282 | SYNTAX, JMS ERROR /SYNTAX ERROR |
| 283 | ERMES8-1 |
| 284 | |
| 285 | ERROR, 0 /ERROR ROUTINE |
| 286 | CLA |
| 287 | CDF |
| 288 | TAD I ERROR |
| 289 | DCA INDEX0 /POINT TO MESSAG-1 |
| 290 | TAD (ERROR3 |
| 291 | DCA OUTPUT /SET TTY: OUTPUT |
| 292 | JMS ERROR4 /PRINT THE STRING |
| 293 | JMP I (PIPCD /AND BACK TO NORMAL |
| 294 | |
| 295 | ERROR4, 0 /PRINT THE STRING POINTED BY INDEX0 |
| 296 | TAD I INDEX0 |
| 297 | DCA TEMP1 /SAVE WORD |
| 298 | TAD TEMP1 |
| 299 | RTR |
| 300 | RTR |
| 301 | RTR |
| 302 | JMS ERROR2 /BREAK IT DOWN |
| 303 | TAD TEMP1 |
| 304 | JMS ERROR2 |
| 305 | JMP ERROR4+1 /LOOP |
| 306 | |
| 307 | ERROR2, 0 |
| 308 | AND [77 /USE 6 BITS |
| 309 | SNA |
| 310 | JMP I ERROR4 /END |
| 311 | DCA TEMP2 |
| 312 | TAD TEMP2 |
| 313 | AND (40 |
| 314 | SNA CLA |
| 315 | TAD (100 |
| 316 | TAD [200 /MAKE A CHAR |
| 317 | TAD TEMP2 |
| 318 | TAD (-337 /_ IS SPECIAL |
| 319 | SNA |
| 320 | TAD (215-337 |
| 321 | TAD (337 |
| 322 | JMS ERROR7 /PUT IT |
| 323 | JMP I ERROR2 |
| 324 | |
| 325 | ERROR7, 0 |
| 326 | DCA TEMP2 |
| 327 | TAD TEMP2 |
| 328 | JMS I OUTPUT |
| 329 | TAD TEMP2 |
| 330 | TAD (-215 |
| 331 | SZA CLA |
| 332 | JMP I ERROR7 |
| 333 | TAD (212 |
| 334 | JMP ERROR7+1 |
| 335 | |
| 336 | ERROR3, 0 |
| 337 | TLS |
| 338 | TSF |
| 339 | JMP .-1 |
| 340 | CLA |
| 341 | JMP I ERROR3 |
| 342 | \f/PRINT ROUTINE |
| 343 | |
| 344 | PRINT, 0 |
| 345 | DCA PRINT0 |
| 346 | PRINT7, DCA PRINTC /SET SWITCH |
| 347 | TAD (PRINTL |
| 348 | DCA PRINT1 |
| 349 | CLL CLA CMA RTL |
| 350 | DCA PRINT3 |
| 351 | PRINT4, DCA PRINT2 |
| 352 | JMP .+3 |
| 353 | |
| 354 | DCA PRINT0 |
| 355 | ISZ PRINT2 |
| 356 | TAD PRINT0 |
| 357 | TAD I PRINT1 |
| 358 | SMA |
| 359 | JMP .-5 |
| 360 | CLA |
| 361 | ISZ PRINT1 |
| 362 | TAD PRINT2 |
| 363 | SZA |
| 364 | JMP PRINT5 /IT IS NON-ZERO |
| 365 | TAD PRINTC |
| 366 | SZA |
| 367 | JMS I OUTPUT /PRINT LEADING SPACE IF DESIRED |
| 368 | JMP PRINT6 |
| 369 | |
| 370 | PRINT5, TAD ("0 |
| 371 | JMS I OUTPUT |
| 372 | CLL CLA CML RAR |
| 373 | PRINT6, ISZ PRINT3 |
| 374 | JMP PRINT4 |
| 375 | TAD PRINT0 |
| 376 | TAD ("0 |
| 377 | JMS I OUTPUT |
| 378 | JMP I PRINT |
| 379 | PAGE |
| 380 | \f/PDP-10 DECTAPE SERVICE ROUTINE |
| 381 | / |
| 382 | /CALL: |
| 383 | / JMS READT /READ PDP-10 DECTAPE |
| 384 | / BUFFER /BUFFER ADDRESS - FIELD 1 |
| 385 | / BLOCK /BLOCK NUMBER |
| 386 | / |
| 387 | / JMS WRITET /WRITE PDP-10 DECTAPE |
| 388 | / BUFFER /BUFFER ADDRESS - FIELD 1 |
| 389 | / BLOCK /BLOCK NUMBER |
| 390 | / |
| 391 | /THE UNIT IS IN "UNIT10" |
| 392 | |
| 393 | TCON2, 2 /MUST BE AT BEGINNING OF PAGE! |
| 394 | |
| 395 | WRITET, 0 /WRITE PDP-10 DECTAPE |
| 396 | CDF /BE SURE OF FIELD 0 |
| 397 | TAD WRITET |
| 398 | STL |
| 399 | JMS I (TDIOCK /CHECK FOR TD IO |
| 400 | TAD I WRITET /GET BUFFER ADDRESS |
| 401 | DCA TBUF /AND SAVE IT |
| 402 | JMS RWTEST /TEST DIRECTION |
| 403 | WRITE2, JMS I (FLIP /REVERSE - FLIP BUFFER NOW |
| 404 | TAD (50 |
| 405 | WRITE1, DCA TAPFUN /SET FUNCTION (30=READ, 50=WRITE) |
| 406 | DTLB /SEARCH INTO FIELD 0 |
| 407 | TAD (TBLK |
| 408 | DCA I TCA /TAPE BLOCK INTO "TBLK" |
| 409 | TERR, RTL /ERROR BIT IS 0 INITIALLY |
| 410 | RAL /SHIFT END ZONE BIT INTO LINK |
| 411 | CML CLA /CLEAR REST OF THE JUNK |
| 412 | TAD [200 /'GO' BIT |
| 413 | TSTART, SNL /SKIP IF NO REVERSE DIRECTION |
| 414 | TAD [400 /'REVERSE' BIT |
| 415 | DTXA /START DRIVE GOING |
| 416 | TLOOP, JMS I (DTWAIT |
| 417 | |
| 418 | TOUT, SPA /ERROR? |
| 419 | JMP TERR /YES - CHECK IT |
| 420 | DTRA /CHECK DIRECTION |
| 421 | RTL |
| 422 | RTL /DIRECTION BIT INTO LINK |
| 423 | TMOD1, SZL CLA /'SNL CLA' IF REVERSE MODE |
| 424 | TMOD4, TAD TCON2 /'CLL CLA CMA RAL' IF REVERSE MODE |
| 425 | TAD TBLK /GET BLOCK FOUND |
| 426 | CMA |
| 427 | TAD I WRITET /GET BLOCK DESIRED |
| 428 | CMA |
| 429 | SZA CLA /SKIP IF FOUND THE BLOCK |
| 430 | JMP TSTART /NOT FOUND - GO AGAIN |
| 431 | TMOD2, SZL CLA /'SNL CLA' IF REVERSE MODE |
| 432 | JMP TSTART+1 /FOUND BUT WRONG DIRECTION - REVERSE IT |
| 433 | CLA CMA |
| 434 | TAD TBUF /GET BUFFER ADDRESS-1 |
| 435 | DCA I TCA /SET ADDRESS |
| 436 | TAD (10 |
| 437 | DTLB /SET FIELD 1 BUFFER |
| 438 | TAD TAPFUN |
| 439 | DTXA /SET READ OR WRITE |
| 440 | TAD TM600 |
| 441 | DCA I TWC /SET WORD COUNT OF 600 OCTAL WORDS |
| 442 | DTSF /FLAG? |
| 443 | JMP .-1 /NO - WAIT |
| 444 | DTRB /CHECK FOR ERRORS |
| 445 | SPA CLA |
| 446 | JMP I (IOERR /ERROR!! |
| 447 | TAD [200 |
| 448 | DTXA /STOP THE DRIVE |
| 449 | TMOD3, JMS I (FLIP /POSSIBLE FLIP AFTER READ |
| 450 | ISZ WRITET |
| 451 | JMP I WRITET /EXIT |
| 452 | |
| 453 | TCA, 7755 /DECTAPE CURRENT ADDRESS |
| 454 | TWC, 7754 /DECTAPE WORD COUNT |
| 455 | TBLK, 0 /SET TO BLOCK FOUND IN SEARCH |
| 456 | TBUF, 0 /HOLDS BUFFER ADDRESS |
| 457 | |
| 458 | /READ ENTRY POINT |
| 459 | |
| 460 | READT, 0 /PDP-10 DECTAPE READ |
| 461 | CDF /INSURE FIELD 0 |
| 462 | TAD READT |
| 463 | CLL |
| 464 | JMS I (TDIOCK /CHECK FOR TD IO |
| 465 | TAD I READT /GET BUFFER ADDRESS |
| 466 | DCA TBUF /AND SAVE IT |
| 467 | TAD READT |
| 468 | DCA WRITET /MOVE RETURN ADDRESS |
| 469 | JMS RWTEST /CHECK DIRECTION |
| 470 | NOP /NO INITIAL FLIP IF REVERSE |
| 471 | TAD (30 /READ FUNCTION |
| 472 | JMP WRITE1 /GO DO REST OF THE ROUTINE |
| 473 | \fRWTEST, 0 /CHECK DIRECTION TO READ/WRITE AND SEARCH |
| 474 | ISZ WRITET |
| 475 | JMS I (GOLDBK /GET OLD BLOCK NUMBER (NEGATIVE) |
| 476 | TAD I WRITET /GET DESIRED BLOCK |
| 477 | DCA TBLK /SAVE FOR FUTURE USE |
| 478 | SZL CLA |
| 479 | TAD (10 /FORWARD - SZL CLA |
| 480 | TAD TMOD6 /REVERSE - SNL CLA |
| 481 | DCA TMOD1 /SET UP FOR DIRECTION |
| 482 | TAD TMOD1 |
| 483 | DCA TMOD2 |
| 484 | SNL CLA |
| 485 | TAD WRITE2 /REVERSE - FLIP BUFFER AFTER |
| 486 | DCA TMOD3 /FORWARD - NO BUFFER FLIP |
| 487 | TMOD6, SNL CLA |
| 488 | TAD (7344-1200 /REVERSE - CLL CLA CMA RAL |
| 489 | TAD TMOD5 /FORWARD - TAD TCON2 |
| 490 | DCA TMOD4 /X0002 OR 17776 |
| 491 | SZL CLA |
| 492 | ISZ RWTEST /FORWARD - 2ND EXIT |
| 493 | IAC |
| 494 | SNL |
| 495 | CIA /REVERSE DIRECTION |
| 496 | TAD I WRITET |
| 497 | SPA |
| 498 | TM600, CLA /NO LOWER THAN 0 |
| 499 | DCA I TAPFUN /SET NEW LAST SERVICED BLOCK |
| 500 | TAD TBLK /REMEMBER SAVING THIS? |
| 501 | CLL |
| 502 | SMA SZA /<0 AND 0 SKIP AND HAVE LINK=0 |
| 503 | CLL CML CIA />0 BECOMES <0 AND HAS LINK=1 |
| 504 | TMOD5, TAD TCON2 |
| 505 | CLA RTR /LINK HAS SEARCH DIRECTION |
| 506 | RTR |
| 507 | TAD (10 /ADD 'SEARCH' BIT |
| 508 | DTCA DTXA /LOAD SEARCH AND DIRECTION |
| 509 | TAD UNIT10 /GET UNIT |
| 510 | DTXA /ADD UNIT (ALSO FLIPS DIRECTION) |
| 511 | JMP I RWTEST /EXIT |
| 512 | PAGE |
| 513 | \f/"OLDTBL" IS LIST OF LAST SERVICED BLOCKS |
| 514 | |
| 515 | OLDTBL, 0;0;0;0;0;0;0;0 |
| 516 | /FLIP THE BUFFER ROUTINE |
| 517 | |
| 518 | FLIP, 0 /FLIP A 600 WORD BUFFER (FIELD 1) |
| 519 | TAD I (TBUF /BUFFER START |
| 520 | DCA FLIP1 /SET START |
| 521 | TAD (577 |
| 522 | TAD I (TBUF |
| 523 | DCA FLIP2 /SET END (END=START+577) |
| 524 | TAD (-300 |
| 525 | DCA FLIP3 /SET COUNT (600/2=300) |
| 526 | CDF 10 /BUFFER IS IN FIELD 1 |
| 527 | FLIP6, TAD I FLIP1 /GET START |
| 528 | JMS FLIP4 /FLIP IT |
| 529 | DCA FLIP5 /SAVE TEMPORARILY |
| 530 | TAD I FLIP2 /GET END |
| 531 | JMS FLIP4 /FLIP IT |
| 532 | DCA I FLIP1 /PUT END INTO START |
| 533 | TAD FLIP5 |
| 534 | DCA I FLIP2 /PUT START INTO END |
| 535 | ISZ FLIP1 /BUMP POINTERS |
| 536 | CLA CMA |
| 537 | TAD FLIP2 |
| 538 | DCA FLIP2 |
| 539 | ISZ FLIP3 /DONE? |
| 540 | JMP FLIP6 /NO - LOOP |
| 541 | CDF /BACK TO FIELD 0 |
| 542 | JMP I FLIP /EXIT |
| 543 | |
| 544 | FLIP1, 0 /START POINTER |
| 545 | FLIP2, 0 /END POINTER |
| 546 | FLIP3, 0 /COUNTER |
| 547 | FLIP5, 0 /TEMPORARY |
| 548 | FLIP7, 0 /FLIPPING TEMPORARIES |
| 549 | FLIP8, 0 /" " |
| 550 | |
| 551 | FLIP4, 0 /FLIP A CELL |
| 552 | DCA FLIP7 /SAVE IT |
| 553 | TAD FLIP7 |
| 554 | RTL |
| 555 | RTL |
| 556 | AND (7 /GET ...1 |
| 557 | DCA FLIP8 /ACCUMULATE RESULT |
| 558 | TAD FLIP7 |
| 559 | RTR |
| 560 | RAR |
| 561 | AND (70 /GET ..2. |
| 562 | TAD FLIP8 |
| 563 | DCA FLIP8 /BUILD RESULT |
| 564 | TAD FLIP7 |
| 565 | AND (70 |
| 566 | CLL RTL |
| 567 | RAL /GET .3.. |
| 568 | TAD FLIP8 |
| 569 | DCA FLIP8 /BUILD RESULT |
| 570 | TAD FLIP7 |
| 571 | AND (7 |
| 572 | CLL RTR |
| 573 | RTR /GET 4... |
| 574 | TAD FLIP8 |
| 575 | CMA /GET NOT 4321 |
| 576 | JMP I FLIP4 /EXIT |
| 577 | \f/TD8E I/O ROUTINE - CALLS STANDARD ROUTINE |
| 578 | |
| 579 | TDIOCK, 0 |
| 580 | DCA TDRET /SAVE RETURN ADDR |
| 581 | RAR |
| 582 | DCA TDFUN /SAVE READ/WRITE |
| 583 | JMS I (GET10D /GET TYPE OF DECTAPE |
| 584 | TAD (-2 |
| 585 | SZA CLA |
| 586 | JMP I TDIOCK /TC08 - CONTINUE |
| 587 | TAD I TDRET |
| 588 | DCA TDBUF /SAVE BUF ADDR |
| 589 | ISZ TDRET |
| 590 | JMS GOLDBK /GET OLD BLOCK # |
| 591 | TAD I TDRET |
| 592 | CLA RAL /GET DIRECTION |
| 593 | TAD (110 /ONE BLOCK, FIELD 1 |
| 594 | TAD TDFUN |
| 595 | DCA TDFUN /SAVE FINAL FUNCTION WORD |
| 596 | JMS I (TDUSET /SET UP HANDLER |
| 597 | TAD TDUNIT |
| 598 | SPA CLA |
| 599 | TAD (DTA1-DTA0 |
| 600 | TAD (DTA0 |
| 601 | DCA TDIOCK /SET UP HANDLER ENTRY PTR |
| 602 | TAD I TDRET |
| 603 | DCA I TAPFUN |
| 604 | TAD I TAPFUN |
| 605 | DCA TDBLK |
| 606 | JMS I TDIOCK |
| 607 | TDFUN, 0 |
| 608 | TDBUF, 0 |
| 609 | TDBLK, 0 |
| 610 | JMP I (IOERR |
| 611 | ISZ TDRET |
| 612 | JMP I TDRET |
| 613 | TDRET, 0 |
| 614 | |
| 615 | GOLDBK, 0 |
| 616 | TAD UNIT10 /GET THE UNIT WE NEED |
| 617 | CLL RTL |
| 618 | RTL /SHIFT INTO BITS 9-11 |
| 619 | TAD (OLDTBL |
| 620 | DCA TAPFUN /POINT TO THIS UNIT'S POSITION |
| 621 | TAD I TAPFUN /GET LAST SERVICED BLOCK |
| 622 | CLL CIA |
| 623 | JMP I GOLDBK |
| 624 | PAGE |
| 625 | \f/GET A LINE ROUTINE |
| 626 | |
| 627 | GLINE, 0 /GET A LINE |
| 628 | TAD ["* |
| 629 | JMS I [ERROR3 /ANNOUNCE US WITH A * |
| 630 | DCA RBFLAG /RESET RUBOUT FLAG |
| 631 | TAD [LINBUF-1 |
| 632 | DCA IXR /POINT TO THE BUFFER |
| 633 | CHLOOP, KSF |
| 634 | JMP CHLOOP /WAIT FOR TTY: |
| 635 | TAD [200 |
| 636 | KRS /READ TTY: |
| 637 | DCA TEMP1 |
| 638 | KCC |
| 639 | TAD [SPADR-1 |
| 640 | DCA INDEX0 /SET LIST SEARCH |
| 641 | TAD I INDEX0 |
| 642 | SNA |
| 643 | JMP .+6 /END OF LIST |
| 644 | TAD TEMP1 |
| 645 | SNA CLA |
| 646 | JMP I INDEX0 /FOUND SO JUMP |
| 647 | ISZ INDEX0 |
| 648 | JMP .-7 /LOOP |
| 649 | |
| 650 | JMS PRNT /PRINT IT |
| 651 | CINSRT, TAD TEMP1 |
| 652 | DCA I IXR /STORE THE CHARACTER |
| 653 | TAD IXR |
| 654 | TAD (-LINBUF-100 |
| 655 | SZA CLA |
| 656 | JMP CHLOOP /GET ANOTHER CHARACTER |
| 657 | JMS CRCR |
| 658 | JMP I (SYNTAX /ERROR |
| 659 | |
| 660 | CARRET, JMS CRCR |
| 661 | CLFINI, DCA I IXR /SET END |
| 662 | DCA I IXR |
| 663 | JMP I GLINE /EXIT |
| 664 | |
| 665 | SPADR, -225;JMP CTRLU |
| 666 | -215;JMP CARRET |
| 667 | -377;JMP RUBOUT |
| 668 | -375;JMP ALTMOD |
| 669 | -376;JMP ALTMOD |
| 670 | -233;JMP ALTMOD |
| 671 | -200;JMP CHLOOP |
| 672 | -217;JMP CHLOOP |
| 673 | -337;JMP BAKARR |
| 674 | -212;JMP LFEED |
| 675 | -203;JMP CTRLC |
| 676 | 0 |
| 677 | |
| 678 | BAKARR, JMS PRNT /"_" |
| 679 | TAD ["< |
| 680 | JMP CINSRT+1 /USE "<" INSTEAD |
| 681 | |
| 682 | CTRLC, |
| 683 | CTRLU, TAD ["^ |
| 684 | JMS I [ERROR3 /CONTROL CHARACTERS |
| 685 | TAD TEMP1 |
| 686 | TAD [100 |
| 687 | CLRLIN, JMS I [ERROR3 |
| 688 | JMS CRCR |
| 689 | TAD I INDEX0 |
| 690 | SZA CLA |
| 691 | JMP GLINE+1 /NOT "^C" |
| 692 | TSF |
| 693 | JMP .-1 |
| 694 | JMP I (7605 /TO MONITOR |
| 695 | |
| 696 | CRCR, 0 |
| 697 | TAD [215 |
| 698 | DCA TEMP1 |
| 699 | JMS PRNT |
| 700 | TAD [212 |
| 701 | JMS I [ERROR3 /PRINT CR-LF |
| 702 | JMP I CRCR |
| 703 | |
| 704 | ALTMOD, TAD ["$ |
| 705 | DCA TEMP1 /ALTMODE IS "$" |
| 706 | JMS PRNT |
| 707 | JMP CLFINI /ENDS THE LINE |
| 708 | |
| 709 | RUBOUT, TAD IXR |
| 710 | TAD (1-LINBUF |
| 711 | SNA CLA |
| 712 | JMP RBSPCL /SPECIAL TREATMENT |
| 713 | TAD ("\ |
| 714 | ISZ RBFLAG |
| 715 | JMS I [ERROR3 /PRINT \ |
| 716 | CLA CMA |
| 717 | DCA RBFLAG /SET FLAG |
| 718 | TAD IXR |
| 719 | DCA TEMP2 |
| 720 | TAD I TEMP2 |
| 721 | JMS I [ERROR3 /PRINT RUBED CHAR |
| 722 | LBCKUP, CLA CMA |
| 723 | TAD IXR |
| 724 | JMP CHLOOP-1 /GO GET ANOTHER |
| 725 | |
| 726 | RBSPCL, ISZ RBFLAG |
| 727 | JMP CLRLIN+1 /NOT INTO RUBOUTS |
| 728 | TAD ("\ |
| 729 | JMP CLRLIN |
| 730 | |
| 731 | PRNT, 0 |
| 732 | ISZ RBFLAG |
| 733 | JMP .+3 |
| 734 | TAD ("\ |
| 735 | JMS I [ERROR3 /END OF RUBOUTS |
| 736 | DCA RBFLAG |
| 737 | TAD TEMP1 |
| 738 | JMS I [ERROR3 /PRINT CHAR |
| 739 | JMP I PRNT |
| 740 | |
| 741 | LFEED, JMS CRCR |
| 742 | DCA I IXR /SET END |
| 743 | TAD [LINBUF-1 |
| 744 | DCA IXR |
| 745 | TAD ["* |
| 746 | JMS I [ERROR3 |
| 747 | TAD I IXR /PRINT THE LINE |
| 748 | SNA |
| 749 | JMP LBCKUP |
| 750 | JMP .-4 |
| 751 | PAGE |
| 752 | \f/FIND A SLOT ROUTINE |
| 753 | /SLOT NUMBERS BETWEEN 0 AND 1101 |
| 754 | /RETURN WITH A 5 BIT NUMBER (1 TO 26 OCTAL) |
| 755 | / |
| 756 | /CALL: |
| 757 | / JMS FINDSL /FIND A SLOT |
| 758 | / SLOT# /SLOT NUMBER |
| 759 | / (AC) /VALUE OF SLOT RETURNED |
| 760 | / |
| 761 | /SLOT NUMBER OF 0 RETURNS 7777 |
| 762 | |
| 763 | FINDSL, 0 /FIND A SLOT |
| 764 | CLA CMA |
| 765 | TAD I FINDSL /GET SLOT NUMBER-1 |
| 766 | ISZ FINDSL |
| 767 | SPA /WAS IT 0? |
| 768 | JMP FINDSA /YES |
| 769 | JMS DIV7 /NO - DIVIDE BY 7 |
| 770 | TAD (JMP I FINDS0+7 |
| 771 | DCA DIV1 /USE REMAINDER FOR JUMPING |
| 772 | CDF 10 /BUFFER IS IN FIELD 1 |
| 773 | DIV1, HLT /TEMPORARY AND JUMP CELL |
| 774 | |
| 775 | FINDSA, CLA CMA |
| 776 | JMP I FINDSL /EXIT WITH 7777 FOR SLOT NUMBER 0 |
| 777 | |
| 778 | FINDS0, FINDS1 /JUMP TABLE |
| 779 | FINDS2 |
| 780 | FINDS3 |
| 781 | FINDS4 |
| 782 | FINDS5 |
| 783 | FINDS6 |
| 784 | FINDS7 |
| 785 | |
| 786 | /DIVIDE BY 7 ROUTINE |
| 787 | |
| 788 | DIV7, 0 /DIVIDE BY 7 |
| 789 | DCA DIV1 /SAVE IT |
| 790 | TAD (DIRECT |
| 791 | DCA POINT /POINT TO DIRECTORY |
| 792 | TAD DIV1 |
| 793 | DIV3, TAD (-7 /SUBTRACT 7'S |
| 794 | SPA |
| 795 | JMP I DIV7 /EXIT WITH REMAINDER |
| 796 | ISZ POINT /BUMP POINTER BY 3 |
| 797 | ISZ POINT |
| 798 | ISZ POINT |
| 799 | JMP DIV3 /AND LOOP |
| 800 | |
| 801 | /FIND SLOT ROUTINE #1 |
| 802 | /USE WORD 1 BITS 0-4 |
| 803 | |
| 804 | FINDS1, TAD I POINT /GET CELL |
| 805 | RTL |
| 806 | RTL |
| 807 | RTL /GET FIRST 5 BITS |
| 808 | FINDS8, AND [37 /ONLY 5 BITS |
| 809 | CDF /BACK TO FIELD 0 |
| 810 | JMP I FINDSL /AND EXIT WITH VALUE IN AC |
| 811 | |
| 812 | /FIND SLOT ROUTINE #2 |
| 813 | /USE WORD 1 BITS 5-9 |
| 814 | |
| 815 | FINDS2, TAD I POINT |
| 816 | RTR /USE BITS 5-9 |
| 817 | JMP FINDS8 |
| 818 | |
| 819 | /FIND SLOT ROUTINE #3 |
| 820 | /USE WORD 1 BITS 10-11 AND WORD 2 BITS 0-2 |
| 821 | |
| 822 | FINDS3, TAD I POINT |
| 823 | AND [3 /USE BITS 10-11 OF 1ST WORD |
| 824 | CLL RTL |
| 825 | RAL /SHIFT TO BITS 7-8 |
| 826 | DCA DIV1 /SAVE IT |
| 827 | ISZ POINT /NEXT WORD |
| 828 | TAD I POINT |
| 829 | CLL RTL |
| 830 | FINDS9, RTL /GET INTO BITS 8-11 |
| 831 | AND [17 /GET ONLY BITS 8-11 |
| 832 | TAD DIV1 /ADD OTHER BITS |
| 833 | JMP FINDS8 |
| 834 | |
| 835 | /FIND SLOT ROUTINE #4 |
| 836 | /USE WORD 2 BITS 3-7 |
| 837 | |
| 838 | FINDS4, ISZ POINT /USE 2ND WORD |
| 839 | TAD I POINT |
| 840 | RTR /USE BITS 3-7 |
| 841 | JMP FINDS2+1 |
| 842 | |
| 843 | /FIND SLOT ROUTINE #5 |
| 844 | /USE WORD 2 BITS 8-11 AND WORD 3 BIT 0 |
| 845 | |
| 846 | FINDS5, ISZ POINT /USE 2ND WORD |
| 847 | TAD I POINT |
| 848 | AND [17 |
| 849 | CLL RAL /GET BITS 7-10 |
| 850 | DCA DIV1 /AND SAVE THEM |
| 851 | ISZ POINT /NEXT WORD |
| 852 | CLL CLA CML RAR |
| 853 | AND I POINT /GET BIT 0 |
| 854 | JMP FINDS9 |
| 855 | |
| 856 | /FIND SLOT ROUTINE #6 |
| 857 | /USE WORD 2 BITS 1-5 |
| 858 | |
| 859 | FINDS6, ISZ POINT |
| 860 | ISZ POINT /USE 3RD WORD |
| 861 | TAD I POINT |
| 862 | RAL |
| 863 | JMP FINDS1+1 |
| 864 | |
| 865 | /FIND SLOT ROUTINE #7 |
| 866 | /USE WORD 3 BITS 6-10 |
| 867 | |
| 868 | FINDS7, ISZ POINT |
| 869 | ISZ POINT /USE 3RD WORD |
| 870 | TAD I POINT |
| 871 | RAR /GET RID OF LAST BIT |
| 872 | JMP FINDS8 |
| 873 | \f/DELETE A PDP-10 ENTRY |
| 874 | / |
| 875 | /CALL: |
| 876 | / (AC) /POINT TO NAME-1 (FIELD 1) |
| 877 | / JMS DELETE /DELETE A PDP-10 ENTRY |
| 878 | / -NO- /NOT FOUND |
| 879 | / -OK- /ENTRY DELETED |
| 880 | |
| 881 | DELETE, 0 /DELETE A PDP-10 ENTRY |
| 882 | JMS I (FIND /TRY TO FIND IT FIRST |
| 883 | JMP I DELETE /NOT FOUND |
| 884 | ISZ DELETE /FOUND - 2ND EXIT |
| 885 | DCA DELET1 /SAVE SLOT NUMBER |
| 886 | CLA IAC |
| 887 | DCA DELET2 /START AT SLOT 1 |
| 888 | TAD (-1101 |
| 889 | DCA DELET3 /DO 1101 SLOTS |
| 890 | JMS FINDSL /FIND A SLOT |
| 891 | DELET2, 0 /SLOT NUMBER |
| 892 | CIA |
| 893 | TAD DELET1 /IS IT ONE OF OURS? |
| 894 | SZA CLA |
| 895 | JMP DELET4 /NO |
| 896 | TAD DELET2 /YES |
| 897 | DCA .+2 /SET SLOT NUMBER AGAIN |
| 898 | JMS I (FILLSL /FILL WITH A 0 |
| 899 | 0 |
| 900 | 0 /FILL WITH A 0 |
| 901 | DELET4, ISZ DELET2 /NEXT SLOT |
| 902 | ISZ DELET3 /MORE? |
| 903 | JMP DELET2-1 /YES - LOOP |
| 904 | CDF 10 /DIRECTORY IS IN FIELD 1 |
| 905 | DCA I INDEX0 /REMEMBER "FIND" SETTING THIS UP? |
| 906 | DCA I INDEX0 /REMOVE THE FILE NAME |
| 907 | DCA I INDEX0 |
| 908 | TAD INDEX0 |
| 909 | TAD [77 |
| 910 | DCA INDEX0 /POINT TO EXTENSION |
| 911 | DCA I INDEX0 |
| 912 | DCA I INDEX0 /REMOVE EXTENSION |
| 913 | DCA I INDEX0 |
| 914 | CDF |
| 915 | JMP I DELETE /EXIT |
| 916 | |
| 917 | DELET1, 0 /HOLDS FOUND SLOT NUMBER |
| 918 | DELET3, 0 /COUNTER |
| 919 | PAGE |
| 920 | \f/FILL A SLOT ROUTINE |
| 921 | / |
| 922 | /CALL: |
| 923 | / JMS FILLSL /FILL A SLOT |
| 924 | / SLOT# /SLOT NUMBER |
| 925 | / VALUE /VALUE TO FILL SLOT WITH |
| 926 | / |
| 927 | /SLOT NUMBER 0 IS ILLEGAL! |
| 928 | |
| 929 | FILLSL, 0 /FILL A SLOT ROUTINE |
| 930 | CLA CMA |
| 931 | TAD I FILLSL /GET SLOT NUMBER-1 |
| 932 | ISZ FILLSL |
| 933 | JMS I (DIV7 /DIVIDE BY 7 |
| 934 | TAD (JMP I FILLS0+7 |
| 935 | DCA FILLS9 /USE REMAINDER FOR JUMPING |
| 936 | TAD I FILLSL /GET VALUE |
| 937 | ISZ FILLSL |
| 938 | AND [37 /5 BIT VALUE ONLY |
| 939 | CDF 10 /DIRECTORY IS IN FIELD 1 |
| 940 | FILLS9, HLT /TEMPORARY AND JUMP CELL |
| 941 | |
| 942 | /JUMP TABLE |
| 943 | |
| 944 | FILLS0, FILLS1 |
| 945 | FILLS2 |
| 946 | FILLS3 |
| 947 | FILLS4 |
| 948 | FILLS5 |
| 949 | FILLS6 |
| 950 | FILLS7 |
| 951 | |
| 952 | FILLSA, 0 /TEMPORARY |
| 953 | |
| 954 | /FILL SLOT ROUTINE #1 |
| 955 | /BITS 0-4 OF WORD 1 |
| 956 | |
| 957 | FILLS1, CLL RTR |
| 958 | RTR /VALUE INTO BITS 0-4 |
| 959 | RTR |
| 960 | DCA FILLS9 /SAVE VALUE |
| 961 | TAD I POINT |
| 962 | AND [177 /AND OFF BITS 0-4 |
| 963 | FILLS8, TAD FILLS9 /ADD IN VALUE |
| 964 | DCA I POINT /SET NEW WORD |
| 965 | CDF /BACK TO FIELD 0 |
| 966 | JMP I FILLSL /EXIT |
| 967 | |
| 968 | /FILL SLOT ROUTINE #2 |
| 969 | /BITS 5-9 OF WORD 1 |
| 970 | |
| 971 | FILLS2, CLL RTL /VALUE INTO BITS 5-9 |
| 972 | DCA FILLS9 /SAVE VALUE |
| 973 | TAD I POINT |
| 974 | AND (7603 /AND OFF BITS 5-9 |
| 975 | JMP FILLS8 |
| 976 | |
| 977 | /FILL SLOT ROUTINE #3 |
| 978 | /BITS 10-11 OF WORD 1 AND BITS 0-2 OF WORD 2 |
| 979 | |
| 980 | FILLS3, DCA FILLS9 /SAVE VALUE |
| 981 | TAD FILLS9 |
| 982 | CLL RAR |
| 983 | CLL RAR /GET BITS 10-11 |
| 984 | CLL RAR |
| 985 | DCA FILLSA /SAVE |
| 986 | TAD I POINT |
| 987 | AND (7774 /AND OFF BITS 10-11 |
| 988 | TAD FILLSA /ADD IN BITS 10-11 |
| 989 | DCA I POINT /SET NEW WORD |
| 990 | ISZ POINT /GOTO WORD 2 |
| 991 | TAD FILLS9 |
| 992 | AND [7 /GET BITS 0-2 |
| 993 | CLL RTR |
| 994 | RTR /SHIFT THEM |
| 995 | DCA FILLS9 /SAVE VALUE |
| 996 | TAD I POINT |
| 997 | AND (777 /AND OFF BITS 0-2 |
| 998 | JMP FILLS8 |
| 999 | |
| 1000 | /FILL SLOT ROUTINE #4 |
| 1001 | /BITS 3-7 OF WORD 2 |
| 1002 | |
| 1003 | FILLS4, CLL RTL |
| 1004 | RTL /SHIFT INTO POSITION |
| 1005 | DCA FILLS9 /AND SAVE |
| 1006 | ISZ POINT /USE WORD 2 |
| 1007 | TAD I POINT |
| 1008 | AND (7017 /AND OFF BITS 3-7 |
| 1009 | JMP FILLS8 |
| 1010 | |
| 1011 | /FILL SLOT ROUTINE #5 |
| 1012 | /BITS 8-11 OF WORD 2 AND BIT 0 OF WORD 3 |
| 1013 | |
| 1014 | FILLS5, DCA FILLS9 |
| 1015 | TAD FILLS9 /GET VALUE |
| 1016 | CLL RAR /GET BITS 8-11 |
| 1017 | DCA FILLSA /AND SAVE |
| 1018 | ISZ POINT /USE WORD 2 FIRST |
| 1019 | TAD I POINT |
| 1020 | AND [7760 /AND OFF BITS 8-11 |
| 1021 | TAD FILLSA /ADD IN THOSE BITS |
| 1022 | DCA I POINT /SET NEW WORD 2 |
| 1023 | ISZ POINT /NOW WORD 3 |
| 1024 | CLA IAC |
| 1025 | AND FILLS9 /GET BIT 0 |
| 1026 | CLL RTR /AND SHIFT INTO POSITION |
| 1027 | DCA FILLS9 /AND SAVE IT |
| 1028 | CLL CLA CMA RAR |
| 1029 | AND I POINT /AND OFF BIT 0 |
| 1030 | JMP FILLS8 |
| 1031 | |
| 1032 | /FILL SLOT ROUTINE #6 |
| 1033 | /BITS 1-5 OF WORD 3 |
| 1034 | |
| 1035 | FILLS6, CLL RTL |
| 1036 | RTL /SHIFT INTO POSITION |
| 1037 | RTL |
| 1038 | DCA FILLS9 /AND SAVE |
| 1039 | ISZ POINT |
| 1040 | ISZ POINT /USE WORD 3 |
| 1041 | TAD I POINT |
| 1042 | AND (4077 /AND OFF BITS 1-5 |
| 1043 | JMP FILLS8 |
| 1044 | |
| 1045 | /FILL SLOT ROUTINE #7 |
| 1046 | /BITS 6-10 OF WORD 3 |
| 1047 | /BIT 11 OF WORD 3 A 0 |
| 1048 | |
| 1049 | FILLS7, CLL RAL /SHIFT INTO POSITION |
| 1050 | DCA FILLS9 /AND SAVE |
| 1051 | ISZ POINT |
| 1052 | ISZ POINT /USE WORD 3 |
| 1053 | TAD I POINT |
| 1054 | AND [7700 /AND OFF BITS 6-11 |
| 1055 | JMP FILLS8 |
| 1056 | \fFIX75, 0 /DF 10 |
| 1057 | CDF /SET H.O. DATE WORD OF FILE |
| 1058 | TAD I (SLOTNO /ENTRY NO. OF FILE |
| 1059 | CLL RAL /*3 |
| 1060 | TAD I (SLOTNO /SINCE 1 -10 WORD= 3 -8 WORDS |
| 1061 | TAD (DIRECT-1 /POINT TO HIGH ORDER BIT OF DATE |
| 1062 | DCA FIXPTR /V3C |
| 1063 | CDF 10 |
| 1064 | STA CLL RAL /OTHER STUFF IS VERY IMPORTANT |
| 1065 | AND I FIXPTR /SO KEEP IT |
| 1066 | TAD HIDATE /OR IN THIS BIT |
| 1067 | DCA I FIXPTR /AND WRITE IT BACK |
| 1068 | JMP I FIX75 |
| 1069 | |
| 1070 | FIXPTR, 0 /POINTS TO WORD CONTAINING H.O. DATE |
| 1071 | PAGE |
| 1072 | \f/GET NEXT SLOT ROUTINE |
| 1073 | /GOES BY 5'S EITHER FORWARD OR BACKWARD |
| 1074 | / |
| 1075 | /CALL: |
| 1076 | / (AC) /CURRENT BLOCK NUMBER |
| 1077 | / JMS NEXTSL /GET NEXT SLOT |
| 1078 | / (AC) /NEXT BLOCK NUMBER |
| 1079 | / |
| 1080 | /GOES TO "NOROOM" IF DIRECTORY FULL |
| 1081 | |
| 1082 | NEXTSL, 0 /GET NEXT SLOT |
| 1083 | TAD NEXTDI /ADD IN DIRECTION FACTOR |
| 1084 | SPA |
| 1085 | JMP NEXTS2 /<0 MEANS REVERSE DIRECTION |
| 1086 | TAD [-1102 |
| 1087 | SMA |
| 1088 | JMP NEXTS2 />1101 MEANS REVERSE DIRECTION |
| 1089 | TAD (1102 |
| 1090 | DCA NEXTS1 /SET NEW BLOCK NUMBER |
| 1091 | JMS I (FINDSL /IS THIS SLOT FREE? |
| 1092 | NEXTS1, 0 /BLOCK NUMBER |
| 1093 | SZA CLA |
| 1094 | JMP NEXTS3 /NO - NOT FREE |
| 1095 | TAD NEXTS1 /FREE |
| 1096 | DCA NEXTS7+1 /SET BLOCK AGAIN |
| 1097 | NEXTS7, JMS I (FILLSL /FILL THIS SLOT THEN |
| 1098 | 0 /SLOT TO FILL |
| 1099 | SLOTNO, 0 /VALUE TO FILL WITH |
| 1100 | TAD NEXTDI |
| 1101 | SMA CLA /MAKE SURE DIRECTION IS -4 OR 4 |
| 1102 | TAD (10 |
| 1103 | TAD (-4 |
| 1104 | DCA NEXTDI |
| 1105 | TAD NEXTS7+1 /GET NEW BLOCK |
| 1106 | JMP I NEXTSL /EXIT |
| 1107 | |
| 1108 | NEXTS2, CLA /REVERSE DIRECTION |
| 1109 | TAD NEXTDI |
| 1110 | SMA CLA /SET 0 OR 1101 |
| 1111 | TAD (1101 |
| 1112 | DCA NEXTS1 /INTO BLOCK NUMBER |
| 1113 | TAD NEXTDI |
| 1114 | CIA /REVERSE DIRECTION |
| 1115 | JMP NEXTS3+1 /GO PRETEND WE FOUND A FULL SLOT |
| 1116 | |
| 1117 | NEXTS3, TAD NEXTDI |
| 1118 | SMA CLA /MAKE DIRECTION -1 OR 1 |
| 1119 | CLL CLA CMA RAL |
| 1120 | CMA |
| 1121 | DCA NEXTDI /DIRECTION IS -1 OR 1 |
| 1122 | TAD [-1102 |
| 1123 | DCA NEXTS4 /CHECK 1102 BLOCKS |
| 1124 | TAD NEXTS1 |
| 1125 | DCA NEXTS5 /SET START BLOCK |
| 1126 | JMS I (FINDSL /CHECK A SLOT |
| 1127 | NEXTS5, 0 /SLOT TO CHECK |
| 1128 | SNA CLA |
| 1129 | JMP NEXTS6 /FOUND A FREE SLOT |
| 1130 | ISZ NEXTS4 /TRY MORE? |
| 1131 | SKP /YES |
| 1132 | JMP I (NOROOM /NO - OUT OF ROOM |
| 1133 | TAD NEXTS5 |
| 1134 | TAD NEXTDI /ADD DIRECTION TO SLOT |
| 1135 | SPA |
| 1136 | JMP NEXTS2 /<0 IS TOO FAR |
| 1137 | TAD [-1102 |
| 1138 | SMA |
| 1139 | JMP NEXTS2 />1101 IS TOO FAR |
| 1140 | TAD (1102 |
| 1141 | DCA NEXTS5 /SET NEW BLOCK |
| 1142 | JMP NEXTS5-1 /KEEP GOING |
| 1143 | |
| 1144 | NEXTS6, TAD NEXTS5 /GET FREE BLOCK |
| 1145 | JMP NEXTS7-1 /AND SET IT |
| 1146 | |
| 1147 | NEXTS4, 0 /COUNTER |
| 1148 | |
| 1149 | NEXTDI, 0 /DIRECTION (5, -5, 1, -1) |
| 1150 | |
| 1151 | /MORE PDP-10 OUTPUT |
| 1152 | |
| 1153 | /OUTPUT CHARACTER #3 - BITS 9-11 WORD 2 AND BITS 0-3 WORD 3 |
| 1154 | |
| 1155 | OCHAR3, TAD OCHARY |
| 1156 | CLL RTR |
| 1157 | RTR |
| 1158 | AND [7 |
| 1159 | TAD I OPOINT |
| 1160 | DCA I OPOINT |
| 1161 | ISZ OPOINT |
| 1162 | TAD OCHARY |
| 1163 | AND [17 |
| 1164 | CLL RTR |
| 1165 | RTR |
| 1166 | RAR |
| 1167 | JMP I (OCHARD |
| 1168 | \fMONTBL, "J;"A;"N |
| 1169 | "F;"E;"B |
| 1170 | "M;"A;"R |
| 1171 | "A;"P;"R |
| 1172 | "M;"A;"Y |
| 1173 | "J;"U;"N |
| 1174 | "J;"U;"L |
| 1175 | "A;"U;"G |
| 1176 | "S;"E;"P |
| 1177 | "O;"C;"T |
| 1178 | "N;"O;"V |
| 1179 | "D;"E;"C |
| 1180 | PAGE |
| 1181 | \f/PDP-10 CHARACTER OUTPUT ROUTINE |
| 1182 | / |
| 1183 | /CALL: |
| 1184 | / (AC) /CHARACTER |
| 1185 | / JMS OCHR10 /OUTPUT TO PDP-10 |
| 1186 | / -RETURN- /O.K. RETURN |
| 1187 | |
| 1188 | OCHR10, 0 /OUTPUT TO PDP-10 |
| 1189 | DCA OCHARY /SAVE CHAR |
| 1190 | TAD MODE /IMAGE MODE? |
| 1191 | SZA |
| 1192 | JMP OC10A1 /YES /I OR /B |
| 1193 | TAD OCHARY /NO - USE 7 BITS |
| 1194 | AND [177 |
| 1195 | OC10A2, DCA OCHARY |
| 1196 | OC10A3, TAD CHARNO /GET CHAR NUMBER |
| 1197 | TAD (JMP I OCHARX |
| 1198 | DCA OCHARZ /USE TO SET UP JUMP |
| 1199 | CDF 10 /BUFFER IS IN FIELD 1 |
| 1200 | OCHARZ, 0 /JUMP TO THE ROUTINE |
| 1201 | |
| 1202 | OC10A1, SMA CLA /BINARY? |
| 1203 | JMP OC10A3 /NO |
| 1204 | TAD OCHARY /YES |
| 1205 | AND [377 |
| 1206 | JMP OC10A2 |
| 1207 | |
| 1208 | OCHARX, OCHAR0 |
| 1209 | OCHAR1 |
| 1210 | OCHAR2 |
| 1211 | OCHAR3 |
| 1212 | OCHAR4 |
| 1213 | |
| 1214 | /OUTPUT CHARACTER #0 - BITS 0-6 WORD 1 |
| 1215 | |
| 1216 | OCHAR0, TAD I [OBUF10+2 |
| 1217 | AND [177 /GET COUNT |
| 1218 | TAD (-177 |
| 1219 | SZA CLA |
| 1220 | JMP OCHARA /STILL ROOM IN BUFFER |
| 1221 | CDF /NO ROOM IN BUFFER |
| 1222 | TAD OBLOCK |
| 1223 | JMS I (NEXTSL /GET THE NEXT BLOCK NUMBER |
| 1224 | DCA OCHARZ /AND SAVE IT |
| 1225 | CDF 10 /BACK TO FIELD 1 |
| 1226 | TAD OCHARZ |
| 1227 | AND [7700 |
| 1228 | CLL RTR |
| 1229 | RTR |
| 1230 | RTR /GET LINK POINTER |
| 1231 | DCA I [OBUF10 |
| 1232 | TAD OCHARZ |
| 1233 | AND [77 |
| 1234 | CLL RTL |
| 1235 | RTL |
| 1236 | RTL |
| 1237 | TAD I [OBUF10+1 |
| 1238 | DCA I [OBUF10+1 /AND SET POINTER |
| 1239 | TAD OUNIT |
| 1240 | DCA UNIT10 /SET OUR UNIT |
| 1241 | TAD OBLOCK |
| 1242 | DCA .+3 /AND OUR BLOCK |
| 1243 | JMS I (WRITET /WRITE PDP-10 DECTAPE |
| 1244 | OBUF10 |
| 1245 | 0 /BLOCK NUMBER IS SET |
| 1246 | CDF 10 /BACK TO FIELD 1 |
| 1247 | DCA I [OBUF10 |
| 1248 | TAD I [OBUF10+1 |
| 1249 | AND [77 |
| 1250 | DCA I [OBUF10+1 /CLEAR POINTER |
| 1251 | TAD OCHARZ |
| 1252 | DCA OBLOCK /SET NEW BLOCK |
| 1253 | TAD I [OBUF10+2 |
| 1254 | AND [7400 |
| 1255 | DCA I [OBUF10+2 /ZERO COUNT |
| 1256 | TAD (OBUF10+3 |
| 1257 | DCA OPOINT /RESET POINTER |
| 1258 | OCHARA, ISZ I [OBUF10+2 /BUMP COUNT |
| 1259 | TAD MODE /IMAGE MODE? |
| 1260 | SNA |
| 1261 | JMP OCHARB /NO |
| 1262 | SMA CLA /BINARY? |
| 1263 | JMP OC10A4 /NO |
| 1264 | DCA I OPOINT /YES |
| 1265 | ISZ OPOINT |
| 1266 | DCA I OPOINT |
| 1267 | ISZ OPOINT |
| 1268 | TAD OCHARY |
| 1269 | DCA I OPOINT /SET 8 BITS |
| 1270 | ISZ OPOINT |
| 1271 | OCHARC, CDF /BACK TO FIELD 0 |
| 1272 | JMP I OCHR10 /EXIT |
| 1273 | |
| 1274 | OC10A5, ISZ OPOINT |
| 1275 | OC10A4, TAD OCHARY |
| 1276 | JMP OCHARD |
| 1277 | |
| 1278 | OCHARB, TAD OCHARY |
| 1279 | CLL RTL |
| 1280 | RTL |
| 1281 | RAL /USE BITS 0-6 |
| 1282 | OCHARD, DCA I OPOINT /SET IT |
| 1283 | ISZ CHARNO /BUMP CHARACTER NUMBER |
| 1284 | JMP OCHARC |
| 1285 | |
| 1286 | /OUTPUT CHARACTER #1 - BITS 7-11 WORD 1 AND BITS 0-1 WORD 2 |
| 1287 | |
| 1288 | OCHAR1, TAD MODE |
| 1289 | SZA CLA |
| 1290 | JMP OC10A5 |
| 1291 | TAD OCHARY |
| 1292 | CLL RAR /GET BITS 7-11 |
| 1293 | CLL RAR |
| 1294 | TAD I OPOINT |
| 1295 | DCA I OPOINT /SET WORD 1 |
| 1296 | ISZ OPOINT /NOW WORD 2 |
| 1297 | TAD OCHARY |
| 1298 | AND [3 |
| 1299 | CLL RTR |
| 1300 | RAR /GET BITS 0-1 |
| 1301 | JMP OCHARD |
| 1302 | |
| 1303 | /OUTPUT CHARACTER #2 - BITS 2-8 WORD 2 |
| 1304 | |
| 1305 | OCHAR2, TAD MODE |
| 1306 | SZA CLA |
| 1307 | JMP OC10A6 |
| 1308 | TAD OCHARY |
| 1309 | CLL RTL |
| 1310 | RAL /GET BITS 2-8 |
| 1311 | TAD I OPOINT |
| 1312 | JMP OCHARD |
| 1313 | |
| 1314 | /OUTPUT CHARACTER #4 - BITS 4-10 WORD 3 |
| 1315 | /BIT 11 WORD 3 IS 0 |
| 1316 | |
| 1317 | OCHAR4, TAD OCHARY |
| 1318 | CLL RAL /BITS 4-10 |
| 1319 | TAD I OPOINT |
| 1320 | OC10A7, DCA I OPOINT /SET WORD 3 |
| 1321 | ISZ OPOINT |
| 1322 | DCA CHARNO /RESET CHARACTER NUMBER |
| 1323 | JMP OCHARC |
| 1324 | |
| 1325 | OC10A6, ISZ OPOINT |
| 1326 | TAD OCHARY |
| 1327 | JMP OC10A7 |
| 1328 | PAGE |
| 1329 | \f/PDP-10 CHARACTER INPUT |
| 1330 | / |
| 1331 | /CALL: |
| 1332 | / JMS ICHR10 /PDP-10 INPUT |
| 1333 | / -EOF- /END OF FILE RETURN |
| 1334 | / (AC) /NORMAL RETURN - CHARACTER IN AC |
| 1335 | |
| 1336 | ICHR10, 0 /PCP-10 INPUT ROUTINE |
| 1337 | TAD CHARNI |
| 1338 | TAD (JMP I ICHARX |
| 1339 | DCA ICHARY /USE CHARACTER NUMBER TO FORM JUMP |
| 1340 | CDF 10 /BUFFER IS IN FIELD 1 |
| 1341 | ICHARY, 0 /TEMPORARY AND JUMP CELL |
| 1342 | |
| 1343 | ICHARX, ICHAR0 |
| 1344 | ICHAR1 |
| 1345 | ICHAR2 |
| 1346 | ICHAR3 |
| 1347 | ICHAR4 |
| 1348 | |
| 1349 | /INPUT CHARACTER #0 - BITS 0-6 WORD 1 |
| 1350 | |
| 1351 | ICHAR0, TAD WORDS /GET NUMBER OF WORD LEFT |
| 1352 | SZA CLA |
| 1353 | JMP ICHARA /STILL MORE WORDS LEFT |
| 1354 | TAD IBLOCK /GET NEXT BLOCK |
| 1355 | SNA |
| 1356 | JMP ICHARC+1 /NONE - EOF |
| 1357 | DCA .+5 /SET NEXT BLOCK |
| 1358 | TAD IUNIT |
| 1359 | DCA UNIT10 /SET OUR UNIT |
| 1360 | JMS I (READT /READ PDP-10 DECTAPE |
| 1361 | IBUF10 |
| 1362 | 0 /OUR BLOCK IS SET |
| 1363 | CDF 10 /BACK TO FIELD 1 |
| 1364 | TAD I [IBUF10+2 |
| 1365 | AND [177 |
| 1366 | DCA WORDS /SET NUMBER OF WORDS |
| 1367 | TAD I [IBUF10+1 |
| 1368 | RTR |
| 1369 | RTR |
| 1370 | RTR |
| 1371 | AND [77 |
| 1372 | DCA IBLOCK /SET NEXT BLOCK |
| 1373 | TAD I [IBUF10 |
| 1374 | AND [77 |
| 1375 | CLL RTL |
| 1376 | RTL |
| 1377 | RTL |
| 1378 | TAD IBLOCK |
| 1379 | DCA IBLOCK /SET NEXT BLOCK |
| 1380 | TAD (IBUF10+3 |
| 1381 | DCA IPOINT /RESET POINTER |
| 1382 | JMP ICHAR0 |
| 1383 | |
| 1384 | ICHARA, CLA CMA |
| 1385 | TAD WORDS |
| 1386 | DCA WORDS /COUNT DOWM ON NUMBER OF WORDS |
| 1387 | TAD MODE /IMAGE MODE? |
| 1388 | SNA |
| 1389 | JMP ICHARB /NO |
| 1390 | SMA CLA |
| 1391 | JMP IC10A1 |
| 1392 | ISZ IPOINT /YES |
| 1393 | ISZ IPOINT |
| 1394 | TAD I IPOINT /GET WORD 3 |
| 1395 | ISZ IPOINT |
| 1396 | AND [377 /USE 8 BITS |
| 1397 | ICHARC, ISZ ICHR10 /2ND EXIT |
| 1398 | CDF /BACK TO FIELD 0 |
| 1399 | JMP I ICHR10 /EXIT |
| 1400 | |
| 1401 | ICHARB, TAD SAVELN /PRESERVE OPTION? |
| 1402 | SZA CLA |
| 1403 | JMP ICHARF /YES |
| 1404 | CLL CLA CML RTL /NO |
| 1405 | TAD IPOINT |
| 1406 | DCA ICHARY /POINT TO WORD 3 |
| 1407 | TAD I ICHARY |
| 1408 | CLL RAR |
| 1409 | SNL CLA |
| 1410 | JMP ICHARF /WORD O.K. |
| 1411 | ISZ IPOINT |
| 1412 | ISZ IPOINT /IGNORE THIS WORD |
| 1413 | ISZ IPOINT |
| 1414 | JMP ICHAR0 |
| 1415 | |
| 1416 | ICHARF, TAD I IPOINT |
| 1417 | RTR |
| 1418 | RTR /GET BITS 0-6 |
| 1419 | RAR |
| 1420 | ICHARD, ISZ CHARNI /BUMP COUNTER |
| 1421 | AND [177 /USE 7 BITS |
| 1422 | TAD [200 /ADD BIT 8 |
| 1423 | JMP ICHARC |
| 1424 | |
| 1425 | /INPUT CHARACTER #1 - BITS 7-11 WORD 1 AND BITS 0-1 WORD 2 |
| 1426 | |
| 1427 | ICHAR1, TAD MODE |
| 1428 | SZA CLA |
| 1429 | JMP IC10A1 |
| 1430 | TAD I IPOINT |
| 1431 | AND [37 |
| 1432 | CLL RTL /GET BITS 7-11 |
| 1433 | DCA ICHARY |
| 1434 | ISZ IPOINT /USE WORD 2 NOW |
| 1435 | TAD I IPOINT |
| 1436 | CLL RTL |
| 1437 | RAL |
| 1438 | AND [3 /GET BITS 0-1 |
| 1439 | ICHARE, TAD ICHARY /ADD IN OTHER BITS |
| 1440 | JMP ICHARD |
| 1441 | |
| 1442 | /INPUT CHARACTER #2 - BITS 2-8 WORD 2 |
| 1443 | |
| 1444 | ICHAR2, TAD MODE |
| 1445 | SZA CLA |
| 1446 | JMP IC10A3 |
| 1447 | TAD I IPOINT |
| 1448 | RAR |
| 1449 | RTR /GET BITS 2-8 |
| 1450 | JMP ICHARD |
| 1451 | |
| 1452 | /INPUT CHARACTER #3 - BITS 9-11 WORD 2 AND BITS 0-3 WORD 3 |
| 1453 | |
| 1454 | ICHAR3, TAD I IPOINT |
| 1455 | AND [7 |
| 1456 | CLL RTL |
| 1457 | RTL /GET BITS 9-11 |
| 1458 | DCA ICHARY |
| 1459 | ISZ IPOINT /USE WORD 3 NOW |
| 1460 | TAD I IPOINT |
| 1461 | RTL |
| 1462 | RTL |
| 1463 | RAL |
| 1464 | AND [17 /GET BITS 0-3 |
| 1465 | JMP ICHARE |
| 1466 | |
| 1467 | /INPUT CHARACTER #4 - BITS 4-10 WORD 3 |
| 1468 | |
| 1469 | ICHAR4, DCA CHARNI /RESET CHARACTER COUNT |
| 1470 | TAD I IPOINT |
| 1471 | ISZ IPOINT |
| 1472 | RAR |
| 1473 | JMP ICHARD+1 |
| 1474 | |
| 1475 | IC10A3, DCA CHARNI |
| 1476 | SKP |
| 1477 | IC10A1, ISZ CHARNI |
| 1478 | TAD I IPOINT |
| 1479 | ISZ IPOINT |
| 1480 | JMP ICHARC |
| 1481 | PAGE |
| 1482 | \f/CLOSE A PDP-10 FILE |
| 1483 | / |
| 1484 | /CALL: |
| 1485 | / JMS CLOS10 /CLOSE A PDP-10 FILE |
| 1486 | / -RETURN- |
| 1487 | |
| 1488 | CLOS10, 0 /CLOSE A PDP-10 FILE |
| 1489 | TAD MODE /IMAGE MODE? |
| 1490 | SPA CLA |
| 1491 | JMP CLOS1A /YES - NO FILL NEEDED |
| 1492 | TAD CHARNO |
| 1493 | SNA CLA |
| 1494 | JMP CLOS1A /CHARACTER NUMBER IS 0 - FILL DONE |
| 1495 | JMS I (OCHR10 /0 FILL |
| 1496 | JMP .-4 /LOOP |
| 1497 | |
| 1498 | CLOS1A, TAD OUNIT |
| 1499 | DCA UNIT10 /SET OUR UNIT |
| 1500 | TAD OBLOCK |
| 1501 | DCA .+3 /SET THE BLOCK |
| 1502 | JMS I (WRITET /WRITE PDP-10 DECTAPE |
| 1503 | OBUF10 |
| 1504 | 0 /BLOCK IS SET |
| 1505 | TAD (MOUTPU |
| 1506 | JMS I (DELETE /DELETE THE OLD FILE |
| 1507 | NOP /O.K. IF IT IS NOT THERE |
| 1508 | TAD FREEP |
| 1509 | DCA INDEX0 /POINT TO THE FREE SPOT |
| 1510 | TAD [MOUTPU |
| 1511 | DCA INDEX1 /POINT TO THE FILE NAME |
| 1512 | CDF 10 /TO FIELD 1 |
| 1513 | TAD I INDEX1 |
| 1514 | DCA I INDEX0 |
| 1515 | TAD I INDEX1 /SET THE NAME |
| 1516 | DCA I INDEX0 |
| 1517 | TAD I INDEX1 |
| 1518 | DCA I INDEX0 |
| 1519 | TAD INDEX0 |
| 1520 | TAD [77 |
| 1521 | DCA INDEX0 /POINT TO THE EXTENSION |
| 1522 | TAD I INDEX1 |
| 1523 | DCA I INDEX0 /SET THE EXTENSION |
| 1524 | TAD I INDEX1 |
| 1525 | DCA I INDEX0 |
| 1526 | TAD DATE |
| 1527 | DCA I INDEX0 /SET THE DATE |
| 1528 | JMS I (FIX75 /V3C SET HIGH ORDER BIT TOO |
| 1529 | JMS I (WRITET /WRITE PDP-10 DECTAPE |
| 1530 | DIRECT /DIRECTORY |
| 1531 | 144 /BLOCK 100 BASE 10 |
| 1532 | JMP I CLOS10 /EXIT |
| 1533 | \f/OPEN A PDP-10 FILE FOR OUTPUT |
| 1534 | / |
| 1535 | /CALL: |
| 1536 | / JMS OOPN10 /OPEN A PDP-10 FILE |
| 1537 | / -RETURN- |
| 1538 | |
| 1539 | OOPN10, 0 /OPEN A PDP-10 FILE |
| 1540 | TAD (ZFREE-1 |
| 1541 | JMS I (FIND /FIND A FREE SPOT |
| 1542 | JMP I (NOROOM /NO ROOM LEFT |
| 1543 | DCA I (SLOTNO /SET THIS SLOT |
| 1544 | TAD INDEX0 |
| 1545 | DCA FREEP /SAVE POINTER TO FREE SPOT |
| 1546 | CLA CMA |
| 1547 | DCA I (NEXTDI /SET DIRECTION = -1 |
| 1548 | TAD (144 |
| 1549 | JMS I (NEXTSL /FIND FIRST OPEN SLOT |
| 1550 | DCA OBLOCK /AND SET IT |
| 1551 | CDF 10 |
| 1552 | TAD I [MOUTPU |
| 1553 | DCA OUNIT /SET UNIT |
| 1554 | TAD OBLOCK |
| 1555 | AND [17 |
| 1556 | CLL RTR |
| 1557 | RTR |
| 1558 | RAR |
| 1559 | DCA I [OBUF10+2 /SET FIRST BLOCK POINTER |
| 1560 | TAD OBLOCK |
| 1561 | CLL RTR |
| 1562 | RTR |
| 1563 | AND [77 |
| 1564 | DCA I [OBUF10+1 /SET FIRST BLOCK POINTER |
| 1565 | DCA I [OBUF10 /ZERO LINK POINTER |
| 1566 | DCA CHARNO /RESET CHARACTER NUMBER |
| 1567 | TAD (OBUF10+3 |
| 1568 | DCA OPOINT /RESET POINTER |
| 1569 | CDF |
| 1570 | JMP I OOPN10 /EXIT |
| 1571 | \f/OPEN PDP-10 INPUT FILE |
| 1572 | / |
| 1573 | /CALL: |
| 1574 | / (AC) /POINT TO FILE NAME-1 |
| 1575 | / JMS IOPN10 /OPEN PDP-10 INPUT FILE |
| 1576 | / -NO- /NOT THERE |
| 1577 | / (AC) /ANY BLOCK OF THE FILE |
| 1578 | |
| 1579 | IOPN10, 0 /OPEN PDP-10 INPUT FILE |
| 1580 | JMS I (FIND /FIND THE FILE |
| 1581 | JMP I IOPN10 /NOT THERE |
| 1582 | DCA IOPN1B /SAVE SLOT NUMBER |
| 1583 | TAD (143 |
| 1584 | DCA IOPN1A |
| 1585 | TAD (CLA CMA |
| 1586 | DCA IOPN1D |
| 1587 | IOPN1F, JMS I (FINDSL /FIND A SLOT |
| 1588 | IOPN1A, 0 /SLOT TO FIND |
| 1589 | CIA |
| 1590 | TAD IOPN1B /IS IT US? |
| 1591 | SNA CLA |
| 1592 | JMP IOPN1C /YES |
| 1593 | IOPN1D, CLA CMA |
| 1594 | TAD IOPN1A /BUMP BLOCK NUMBER |
| 1595 | SPA |
| 1596 | JMP IOPN1E /TOO FAR |
| 1597 | TAD [-1102 |
| 1598 | SMA |
| 1599 | JMP I IOPN10 /TOO FAR - EXIT |
| 1600 | TAD (1102 |
| 1601 | DCA IOPN1A /SET NEW BLOCK |
| 1602 | JMP IOPN1F /RETRY |
| 1603 | |
| 1604 | IOPN1B, 0 /SLOT THAT WE WANT |
| 1605 | |
| 1606 | IOPN1E, CLA |
| 1607 | TAD (CLA IAC |
| 1608 | JMP IOPN1F-1 /CHANGE DIRECTION AND RETRY |
| 1609 | |
| 1610 | IOPN1C, TAD IOPN1A |
| 1611 | CDF |
| 1612 | ISZ IOPN10 |
| 1613 | JMP I IOPN10 /EXIT |
| 1614 | PAGE |
| 1615 | \f/CONVERT OS8 DATE TO PDP-10 DATE |
| 1616 | |
| 1617 | CVDATE, 0 |
| 1618 | SNA |
| 1619 | JMP I CVDATE /0 CONVERTS TO 0 |
| 1620 | DCA TEMP1 |
| 1621 | TAD TEMP1 /V3C |
| 1622 | RTR |
| 1623 | RAR |
| 1624 | AND [37 |
| 1625 | TAD (-1 /GET DAY |
| 1626 | DCA DATE4 /V3C |
| 1627 | TAD TEMP1 |
| 1628 | AND [7 /GET OS8 YEAR (-1970) |
| 1629 | DECIMAL |
| 1630 | TAD (1970-1964 |
| 1631 | OCTAL |
| 1632 | DCA DATE1 /SAVE YEAR |
| 1633 | TAD DATE1 |
| 1634 | CLL RAL /*2 |
| 1635 | TAD DATE1 /*2+1=*3 |
| 1636 | CLL RTL /*3*4=*12 |
| 1637 | DCA DATE1 /DATE1=DATE1*12 |
| 1638 | TAD TEMP1 |
| 1639 | RTL |
| 1640 | RTL |
| 1641 | RAL |
| 1642 | AND [17 /GET MONTH |
| 1643 | TAD (-1 |
| 1644 | TAD DATE1 /ADD IN MONTH |
| 1645 | DCA DATE1 |
| 1646 | TAD DATE1 |
| 1647 | CLL RAL /*2 |
| 1648 | TAD DATE1 /*2+1=*3 |
| 1649 | DCA TEMP2 |
| 1650 | TAD TEMP2 |
| 1651 | CLL RTL /*3*4=*12 |
| 1652 | TAD TEMP2 /*12+*3=*15 |
| 1653 | CLL RAL /*15*2=*30 |
| 1654 | TAD DATE1 /*30+1=*31 |
| 1655 | TAD DATE4 /V3C ADD IN DAY |
| 1656 | DCA DATE1 /DATE1=DATE1+MONTH-1 * 31 |
| 1657 | RAL /V3C LINK NOW HAS HIGH ORDER DATE BIT |
| 1658 | DCA HIDATE /ONLY WITHIN RANGE OF OS/8 |
| 1659 | TAD DATE1 /RETURN LOW ORDER 12 BITS OF DATE |
| 1660 | JMP I CVDATE |
| 1661 | |
| 1662 | DATE1, 0 |
| 1663 | DATE4, 0 |
| 1664 | |
| 1665 | /TYPE A PDP-10 DATE |
| 1666 | \fDATE10, 0 |
| 1667 | SZL /LINK HAD HIGH ORDER BIT |
| 1668 | TAD (4 /IF ON, WANT ADDITIONAL 11 YEARS, 4 DAYS |
| 1669 | DCA DATE1 /SAVE VALUE |
| 1670 | RAL /V3C |
| 1671 | DCA DATE75 /SAVE FACT THAT NEED 'NUTHER 11 YEARS |
| 1672 | TAD (100 /V3C BASE IS (19)64 |
| 1673 | DCA DATE2 /WILL BE YEAR |
| 1674 | DATE11, TAD DATE1 |
| 1675 | SMA CLA |
| 1676 | JMP DATE12 /MUST BE POSITIVE |
| 1677 | ISZ DATE2 /BUMP YEAR |
| 1678 | TAD DATE1 |
| 1679 | TAD (-564 /-372 DECIMAL (DAYS PER YEAR) |
| 1680 | DCA DATE1 |
| 1681 | JMP DATE11 |
| 1682 | |
| 1683 | DATE12, DCA DATE3 /WILL BE MONTH |
| 1684 | TAD DATE1 /DIVIDE BY 31 |
| 1685 | TAD (-37 |
| 1686 | SPA |
| 1687 | JMP .+4 |
| 1688 | ISZ DATE3 /BUMP MONTH |
| 1689 | DCA DATE1 |
| 1690 | JMP .-6 |
| 1691 | |
| 1692 | CLA |
| 1693 | ISZ DATE1 /+1 IS DAY |
| 1694 | TAD DATE3 /DIVIDE BY 12 |
| 1695 | TAD (-14 |
| 1696 | SPA |
| 1697 | JMP .+4 |
| 1698 | ISZ DATE2 /BUMP YEAR |
| 1699 | DCA DATE3 |
| 1700 | JMP .-6 |
| 1701 | |
| 1702 | CLA |
| 1703 | TAD DATE1 |
| 1704 | TAD (-12 |
| 1705 | SMA CLA |
| 1706 | JMP DATE9 |
| 1707 | TAD ("0 |
| 1708 | JMS I OUTPUT /PRINT LEADING 0 IF NECESSARY |
| 1709 | DATE9, TAD DATE1 |
| 1710 | JMS I (PRINT /PRINT DAY |
| 1711 | TAD ("- |
| 1712 | JMS I OUTPUT |
| 1713 | TAD DATE3 |
| 1714 | TAD DATE3 |
| 1715 | TAD DATE3 /V3C MULTIPLY BY 3 |
| 1716 | TAD (MONTBL /ADD IN BASE OF MONTH NAMES |
| 1717 | DCA MONPTR /POINT TO PROPER MONTH NAME |
| 1718 | TAD I MONPTR /GET CHAR 1 |
| 1719 | JMS I OUTPUT /PRINT IT |
| 1720 | ISZ MONPTR /POINT TO NEXT CHAR |
| 1721 | TAD I MONPTR /GET CHAR 2 |
| 1722 | JMS I OUTPUT /PRINT IT |
| 1723 | ISZ MONPTR /V3C |
| 1724 | TAD I MONPTR |
| 1725 | JMS I OUTPUT |
| 1726 | TAD ("- |
| 1727 | JMS I OUTPUT |
| 1728 | TAD DATE75 /V3C |
| 1729 | SZA CLA |
| 1730 | TAD (13 /ADD 11 YEARS IF H.O. BIT ON |
| 1731 | TAD DATE2 |
| 1732 | JMS I (PRINT /PRINT YEAR |
| 1733 | JMP I DATE10 |
| 1734 | |
| 1735 | DATE2, 0 /YEAR |
| 1736 | DATE3, 0 /MONTH |
| 1737 | MONPTR, 0 /V3C POINTS TO MONTH NAME |
| 1738 | PAGE |
| 1739 | \fDECIMAL |
| 1740 | PRINTL, -1000 |
| 1741 | -100 |
| 1742 | -10 |
| 1743 | OCTAL |
| 1744 | |
| 1745 | PRINTZ, 0 /PRINT WITH LEADING SPACES |
| 1746 | DCA PRINT0 |
| 1747 | TAD PRINTZ |
| 1748 | DCA I (PRINT |
| 1749 | TAD (240 |
| 1750 | JMP I (PRINT7 |
| 1751 | |
| 1752 | /ZERO A DIRECTORY (PDP-10) |
| 1753 | |
| 1754 | ZERO10, 0 /ZERO THE PDP-10 DIRECTORY |
| 1755 | TAD I [MOUTPU |
| 1756 | AND [17 |
| 1757 | SZA CLA |
| 1758 | JMP I (NOT10F /NOT A PDP-10 |
| 1759 | TAD I [MOUTPU |
| 1760 | DCA UNIT10 /SET UNIT |
| 1761 | TAD (DIRECT-1 |
| 1762 | DCA INDEX0 /POINT TO DIRECTORY |
| 1763 | TAD (-600 |
| 1764 | DCA CNTR /COUNT OF 600 |
| 1765 | DCA I INDEX0 /ZERO THE DIRECTORY |
| 1766 | ISZ CNTR |
| 1767 | JMP .-2 /LOOP |
| 1768 | TAD (7570 |
| 1769 | DCA I (DIRECT /SAVE BLOCKS 1 AND 2 |
| 1770 | TAD (170 |
| 1771 | DCA I (DIRECT+52 /SAVE BLOCK 144 |
| 1772 | TAD (777 |
| 1773 | DCA I (DIRECT+367 /SAVE BLOCKS 1102 ON UP |
| 1774 | CLA CMA |
| 1775 | DCA I (DIRECT+370 |
| 1776 | JMS I (WRITET /WRITE PDP-10 DECTAPE |
| 1777 | DIRECT /DIRECTORY |
| 1778 | 144 /DIRECTORY BLOCK |
| 1779 | CDF 10 |
| 1780 | JMP I ZERO10 /EXIT |
| 1781 | \f/DELETE A PDP-10 FILE |
| 1782 | |
| 1783 | DELE10, 0 /DELETE A PDP-10 FILE |
| 1784 | TAD I [MOUTPU |
| 1785 | AND [17 |
| 1786 | SZA |
| 1787 | JMP DELOS8 /DELETE A OS8 FILE |
| 1788 | TAD I [MOUTPU |
| 1789 | DCA UNIT10 /SET UNIT |
| 1790 | TAD [MOUTPU |
| 1791 | CDF |
| 1792 | JMS I (DELETE /DELETE THE PDP-10 FILE |
| 1793 | JMP I (ERDELF /NOT THERE |
| 1794 | JMS I (WRITET /WRITE PDP-10 DECTAPE |
| 1795 | DIRECT |
| 1796 | 144 /DIRECTORY BLOCK |
| 1797 | JMP I DELE10 /EXIT |
| 1798 | |
| 1799 | DELOS8, CIF CDF 10 |
| 1800 | JMS I (DELPS1 /DELETE A OS8 FILE |
| 1801 | JMP I DELE10 |
| 1802 | JMP I (ERDELF /ERROR DELETING THE FILE |
| 1803 | \fPAGE |
| 1804 | |
| 1805 | /GET THE NEXT INPUT FILE |
| 1806 | |
| 1807 | NEXIFL, 0 /GET THE NEXT INPUT FILE |
| 1808 | DCA CHARNI /RESET STUFF |
| 1809 | DCA WORDS |
| 1810 | CDF 10 |
| 1811 | CLA CMA |
| 1812 | DCA I (INCHCT |
| 1813 | DCA I (INEOF |
| 1814 | TAD (INDEVH+1 |
| 1815 | DCA INDEVX |
| 1816 | TAD I IXR /GET NEXT |
| 1817 | SNA |
| 1818 | JMP NEXIF2 /E.O.F |
| 1819 | DCA IUNIT |
| 1820 | TAD I IXR |
| 1821 | DCA IBLOCK /SET START BLOCK |
| 1822 | CDF |
| 1823 | TAD IUNIT |
| 1824 | AND [17 |
| 1825 | SNA |
| 1826 | JMP NEXIF1 /PDP-10 FILE |
| 1827 | CIF 10 |
| 1828 | JMS I [200 |
| 1829 | 1 |
| 1830 | INDEVX, 0 |
| 1831 | JMP I (NOOFIL |
| 1832 | CDF 10 |
| 1833 | TAD INDEVX |
| 1834 | DCA I (INHNDL |
| 1835 | TAD IBLOCK |
| 1836 | DCA I (INREC |
| 1837 | TAD IUNIT |
| 1838 | AND [7760 |
| 1839 | SZA |
| 1840 | TAD [17 |
| 1841 | CLL CML RTR |
| 1842 | RTR |
| 1843 | DCA I (INCTR |
| 1844 | TAD (ICHRPS |
| 1845 | JMP NEXIF3 |
| 1846 | |
| 1847 | NEXIF1, TAD IUNIT |
| 1848 | DCA UNIT10 |
| 1849 | TAD IBLOCK |
| 1850 | DCA .+3 |
| 1851 | JMS I (READT |
| 1852 | IBUF10 |
| 1853 | 0 /READ ANY BLOCK |
| 1854 | CDF 10 |
| 1855 | TAD I [IBUF10+2 |
| 1856 | RTL |
| 1857 | RTL |
| 1858 | RAL |
| 1859 | AND [17 |
| 1860 | DCA IBLOCK |
| 1861 | TAD I [IBUF10+1 |
| 1862 | AND [77 |
| 1863 | CLL RTL |
| 1864 | RTL |
| 1865 | TAD IBLOCK |
| 1866 | DCA IBLOCK /SET START BLOCK |
| 1867 | TAD (ICHR10 |
| 1868 | NEXIF3, DCA INPUT /SET ROUTINE POINTER |
| 1869 | ISZ NEXIFL |
| 1870 | NEXIF2, CDF |
| 1871 | JMP I NEXIFL /EXIT |
| 1872 | |
| 1873 | ICHRPS, 0 |
| 1874 | CIF CDF 10 |
| 1875 | JMS I (ICHARP |
| 1876 | SKP |
| 1877 | ISZ ICHRPS |
| 1878 | JMP I ICHRPS |
| 1879 | |
| 1880 | OCHRPS, 0 |
| 1881 | CIF 10 |
| 1882 | JMS I (OCHARP |
| 1883 | JMP I (IOERR |
| 1884 | JMP I OCHRPS |
| 1885 | PAGE |
| 1886 | \fPIP10, CDF 10 /STARTS HERE - JUMPED TO FROM 200 |
| 1887 | DCA HIDATE /V3C |
| 1888 | TAD I (MDATE /GET TODAY'S DATE |
| 1889 | CDF |
| 1890 | JMS I (CVDATE /CONVERT IT |
| 1891 | DCA DATE /AND STORE IT |
| 1892 | TAD (3401 /UNRESTARTABLE, DOESN'T DESTROY BATCH OR USR AREA |
| 1893 | DCA I (JSBITS |
| 1894 | PIPCD, CDF |
| 1895 | JMS I (CD /COMMAND DECODE |
| 1896 | CDF 10 |
| 1897 | TAD I (MPARAM |
| 1898 | AND (2010 |
| 1899 | CLL RAL |
| 1900 | DCA MODE /SET /I SWITCH |
| 1901 | TAD I (MPARAM+1 |
| 1902 | AND (400 |
| 1903 | DCA SAVELN /SET /P SWITCH |
| 1904 | TAD I (MPARAM |
| 1905 | AND (101 |
| 1906 | SZA CLA |
| 1907 | JMP I (LIST10 /EITHER /F OR /L |
| 1908 | TAD I [MOUTPU |
| 1909 | SZA CLA |
| 1910 | JMP PIP001 /IS AN OUTPUT FILE |
| 1911 | TAD I (MINPUT |
| 1912 | SNA CLA |
| 1913 | JMP PIPCD /NO OUTPUT OR INPUT FILES |
| 1914 | JMP I (NOOOFL /INPUT, BUT NO OUTPUT |
| 1915 | |
| 1916 | PIP001, CLL CLA CML RTR |
| 1917 | AND I (MPARAM+2 |
| 1918 | SZA CLA |
| 1919 | JMS I (ZERO10 /IT IS /Z OPTION |
| 1920 | TAD (OUDEVH+1 |
| 1921 | DCA OUDEVX |
| 1922 | TAD I [MOUTPU |
| 1923 | AND [17 |
| 1924 | SZA |
| 1925 | JMP PIPB /OUTPUT IS OS8 |
| 1926 | TAD I [MOUTPU |
| 1927 | DCA UNIT10 /SET UNIT |
| 1928 | JMS I (READT |
| 1929 | DIRECT /GET DIRECTORY INTO CORE |
| 1930 | 144 |
| 1931 | PIPA, CDF 10 |
| 1932 | TAD OUDEVX |
| 1933 | DCA I (OUHNDL |
| 1934 | TAD I (MPARAM |
| 1935 | AND (400 |
| 1936 | SZA CLA |
| 1937 | JMS I (DELE10 /DELETE A PDP-10 FILE FIRST |
| 1938 | CDF 10 |
| 1939 | TAD (MINPUT-1 |
| 1940 | DCA IXR |
| 1941 | TAD I IXR |
| 1942 | SNA CLA |
| 1943 | JMP PIPCD /NO INPUT |
| 1944 | TAD (MINPUT-1 |
| 1945 | DCA IXR /SET INPUT LIST |
| 1946 | TAD I [MOUTPU |
| 1947 | AND [17 |
| 1948 | CDF |
| 1949 | SZA CLA |
| 1950 | JMP PIPC /OUTPUT IS OS8 |
| 1951 | JMS I (OOPN10 /OPEN PDP-10 OUTPUT |
| 1952 | TAD (OCHR10 |
| 1953 | PIPD, DCA OUTPUT /SET OUTPUT ROUTINE |
| 1954 | PIPE, SZA CLA /IS IT ERROR OR EOF |
| 1955 | JMP I (IOERR /ERROR |
| 1956 | JMS I (NEXIFL /GET NEXT FILE |
| 1957 | JMP PIPF /FINAL EOF |
| 1958 | JMS I INPUT /GET INPUT |
| 1959 | JMP PIPE /EOF OR ERROR |
| 1960 | JMS I OUTPUT /OUTPUT |
| 1961 | JMP .-3 /LOOP |
| 1962 | |
| 1963 | PIPC, CIF CDF 10 |
| 1964 | JMS I (OOPNPS /OPEN OS8 OUTPUT |
| 1965 | JMP I (NOOOFL |
| 1966 | TAD (OCHRPS |
| 1967 | JMP PIPD |
| 1968 | |
| 1969 | PIPB, CDF 0 |
| 1970 | CIF 10 |
| 1971 | JMS I [200 |
| 1972 | 1 /GET OS8 OUTPUT HANDLER |
| 1973 | OUDEVX, 0 |
| 1974 | JMP I (NOOFIL |
| 1975 | JMP PIPA |
| 1976 | |
| 1977 | PIPF, CDF 10 |
| 1978 | TAD I [MOUTPU /NOW CLOSE THE OUTPUT FILE |
| 1979 | AND [17 |
| 1980 | CDF |
| 1981 | SZA CLA |
| 1982 | JMP PIPG |
| 1983 | JMS I (CLOS10 |
| 1984 | JMP PIPCD |
| 1985 | |
| 1986 | PIPG, CIF CDF 10 |
| 1987 | JMS I (OCLOSE |
| 1988 | JMP I (IOERR |
| 1989 | JMP PIPCD |
| 1990 | PAGE |
| 1991 | \fLIST10, TAD (OUDEVH+1 |
| 1992 | DCA OUDEVY |
| 1993 | TAD (OUDEVH+1 |
| 1994 | DCA OUDEVZ |
| 1995 | TAD (3100 /RESET THINGS |
| 1996 | DCA LISTDV+1 |
| 1997 | TAD I [MOUTPU |
| 1998 | SZA |
| 1999 | JMP LIST11 /OUTPUT FILE EXISTS |
| 2000 | CDF 0 |
| 2001 | CIF 10 |
| 2002 | JMS I [200 |
| 2003 | 1 |
| 2004 | LISTDV, TEXT /TTY/ /LOOKUP THE TTY: |
| 2005 | OUDEVY, 0 |
| 2006 | JMP I (NOOOFL |
| 2007 | CDF 10 |
| 2008 | TAD LISTDV+1 |
| 2009 | DCA I [MOUTPU /SET TTY: DEVICE NUMBER |
| 2010 | TAD I [MOUTPU |
| 2011 | LIST11, AND [17 |
| 2012 | SNA |
| 2013 | JMP I (NOTPSF /NOT A OS8 FILE |
| 2014 | CDF 0 |
| 2015 | CIF 10 |
| 2016 | JMS I [200 |
| 2017 | 1 /LOOKUP DEVICE |
| 2018 | OUDEVZ, 0 |
| 2019 | JMP I (NOOFIL |
| 2020 | LIST12, CDF CIF 10 |
| 2021 | TAD OUDEVZ |
| 2022 | DCA I (OUHNDL |
| 2023 | JMS I (OOPNPS /OPEN OUTPUT FILE |
| 2024 | JMP I (NOOOFL |
| 2025 | TAD (OCHRPS |
| 2026 | DCA OUTPUT /SET OUTPUT ROUTINE |
| 2027 | CDF 10 |
| 2028 | TAD I (MINPUT |
| 2029 | DCA UNIT10 |
| 2030 | CDF |
| 2031 | TAD UNIT10 |
| 2032 | SNA |
| 2033 | JMP I (PIPCD /NO INPUT |
| 2034 | AND [17 |
| 2035 | SZA CLA |
| 2036 | JMP I (NOT10F |
| 2037 | JMS I (READT /READ THE DIRECTORY |
| 2038 | DIRECT |
| 2039 | 144 |
| 2040 | TAD (LISTL-1 |
| 2041 | DCA INDEX0 |
| 2042 | TAD (-40 |
| 2043 | DCA CNTR |
| 2044 | DCA I INDEX0 /CLEAR THE COUNTS |
| 2045 | ISZ CNTR |
| 2046 | JMP .-2 |
| 2047 | TAD (-1101 |
| 2048 | DCA LIST13 |
| 2049 | CLA IAC |
| 2050 | DCA LIST14 |
| 2051 | JMS I (FINDSL /FIND ALL SLOTS |
| 2052 | LIST14, 0 |
| 2053 | TAD (LISTL |
| 2054 | DCA LIST15 |
| 2055 | ISZ I LIST15 /COUNT THE NUMBER IN EACH SLOT |
| 2056 | ISZ LIST14 |
| 2057 | ISZ LIST13 |
| 2058 | JMP LIST14-1 |
| 2059 | JMS I (CRLF |
| 2060 | TAD I (LISTL |
| 2061 | JMS I (PRINTZ /PRINT FREE BLOCKS |
| 2062 | TAD (LISTM1-1 |
| 2063 | DCA INDEX0 |
| 2064 | JMS I (ERROR4 /"FREE BLOCKS" |
| 2065 | JMS I (CRLF |
| 2066 | TAD (-26 |
| 2067 | DCA LIST13 |
| 2068 | TAD (DIRECT+370 |
| 2069 | DCA INDEX6 |
| 2070 | TAD (DIRECT+2 /HIGH ORDER BIT (4096'S) OCCURS AT END OF EACH |
| 2071 | DCA XDATE /PDP-10 WORD AT BEGIN OF DIRECTORY |
| 2072 | /THIS IS END OF EVERY 3RD PDP-8 WORD |
| 2073 | LIST17, CDF 10 /MAIN LOOP |
| 2074 | TAD I INDEX6 |
| 2075 | SNA |
| 2076 | JMP I (LIST16 /DO NOT PRINT THIS BLANK ENTRY |
| 2077 | JMS I (LIST18 |
| 2078 | TAD I INDEX6 |
| 2079 | JMS I (LIST18 |
| 2080 | TAD I INDEX6 |
| 2081 | JMS I (LIST18 |
| 2082 | CDF |
| 2083 | TAD (". |
| 2084 | JMS I OUTPUT |
| 2085 | JMP I (LIST22 |
| 2086 | |
| 2087 | LIST13, 0 |
| 2088 | LIST15, 0 |
| 2089 | PAGE |
| 2090 | \fLIST22, CDF 10 |
| 2091 | TAD INDEX6 |
| 2092 | TAD [77 |
| 2093 | DCA INDEX5 |
| 2094 | TAD I INDEX5 /GET EXTENSION |
| 2095 | JMS LIST18 |
| 2096 | TAD I INDEX5 |
| 2097 | AND [7700 |
| 2098 | JMS LIST18 |
| 2099 | CLA IAC |
| 2100 | AND I (MPARAM |
| 2101 | SNA CLA |
| 2102 | JMP LIST19 /NO EXTRA IF NOT /L |
| 2103 | JMS LIST18 |
| 2104 | CDF |
| 2105 | TAD I (LIST13 |
| 2106 | TAD (LISTL+27 |
| 2107 | DCA LIST23 |
| 2108 | TAD I LIST23 /GET NUMBER OF BLOCKS |
| 2109 | JMS I (PRINTZ |
| 2110 | JMS LIST18 |
| 2111 | TAD I XDATE /V3C |
| 2112 | RAR /HIGH ORDER BIT OF DATE TO LINK |
| 2113 | CLA |
| 2114 | TAD I INDEX5 |
| 2115 | CDF |
| 2116 | JMS I (DATE10 |
| 2117 | LIST19, CDF |
| 2118 | JMS CRLF |
| 2119 | LIST20, CDF |
| 2120 | TAD XDATE /V3C |
| 2121 | TAD (3 /POINT TO NEXT DATE H.O. BIT |
| 2122 | DCA XDATE |
| 2123 | ISZ I (LIST13 |
| 2124 | JMP I (LIST17 /LOOP |
| 2125 | JMS CRLF |
| 2126 | JMP I (PIPG /CLOSE THE FILE |
| 2127 | |
| 2128 | LIST16, ISZ INDEX6 |
| 2129 | ISZ INDEX6 |
| 2130 | JMP LIST20 |
| 2131 | |
| 2132 | CRLF, 0 |
| 2133 | TAD [215 |
| 2134 | JMS I OUTPUT |
| 2135 | TAD [212 |
| 2136 | JMS I OUTPUT |
| 2137 | JMP I CRLF |
| 2138 | |
| 2139 | LIST23, 0 |
| 2140 | |
| 2141 | LIST18, 0 |
| 2142 | CDF |
| 2143 | DCA TEMP1 |
| 2144 | TAD TEMP1 |
| 2145 | RTR |
| 2146 | RTR |
| 2147 | RTR |
| 2148 | JMS LIST21 |
| 2149 | TAD TEMP1 |
| 2150 | JMS LIST21 |
| 2151 | CDF 10 |
| 2152 | JMP I LIST18 |
| 2153 | |
| 2154 | LIST21, 0 |
| 2155 | AND [77 |
| 2156 | TAD [240 |
| 2157 | JMS I OUTPUT |
| 2158 | JMP I LIST21 |
| 2159 | \f/FIND A PDP-10 ENTRY IN DIRECTORY |
| 2160 | / |
| 2161 | /CALL: |
| 2162 | / (AC) /POINT TO NAME-1 (FIELD 1) |
| 2163 | / JMS FIND /FIND A PDP-10 ENTRY |
| 2164 | / -NO- /NOT FOUND |
| 2165 | / (AC) /SLOT NUMBER IF FOUND |
| 2166 | |
| 2167 | FIND, 0 /FIND A PDP-10 FILE |
| 2168 | DCA FIND4 /SAVE POINTER |
| 2169 | TAD (DIRECT+370 |
| 2170 | DCA INDEX0 /POINT TO DIRECTORY START |
| 2171 | TAD (-26 |
| 2172 | DCA CNTR /22 DECIMAL FILES |
| 2173 | CDF 10 /DIRECTORY IS IN FIELD 1 |
| 2174 | FIND2, TAD FIND4 /GET POINTER |
| 2175 | DCA INDEX2 /POINT TO NAME,EXT |
| 2176 | TAD I INDEX0 |
| 2177 | CIA |
| 2178 | TAD I INDEX2 /CHECK WORD 1 |
| 2179 | SZA CLA |
| 2180 | JMP FIND1 /NO |
| 2181 | TAD I INDEX0 |
| 2182 | CIA |
| 2183 | TAD I INDEX2 /CHECK WORD 2 |
| 2184 | SZA CLA |
| 2185 | JMP FIND1+1 /NO |
| 2186 | TAD I INDEX0 |
| 2187 | CIA |
| 2188 | TAD I INDEX2 /CHECK WORD 3 |
| 2189 | SZA CLA |
| 2190 | JMP FIND1+2 /NO |
| 2191 | TAD INDEX0 |
| 2192 | TAD [77 |
| 2193 | DCA INDEX1 /POINT TO EXTENSIONS |
| 2194 | TAD I INDEX1 |
| 2195 | CIA |
| 2196 | TAD I INDEX2 /CHECK WORD 4 |
| 2197 | SZA CLA |
| 2198 | JMP FIND1+2 /NO |
| 2199 | TAD I INDEX1 |
| 2200 | AND [7700 |
| 2201 | CIA |
| 2202 | TAD I INDEX2 /CHECK WORD 5 |
| 2203 | SZA CLA |
| 2204 | JMP FIND1+2 /NO |
| 2205 | CLL CLA CMA RTL |
| 2206 | TAD INDEX0 |
| 2207 | DCA INDEX0 /POINT TO ENTRY AGAIN |
| 2208 | TAD CNTR |
| 2209 | TAD (27 |
| 2210 | ISZ FIND /WE FOUND IT - 2ND EXIT |
| 2211 | FIND3, CDF /BACK TO FIELD 0 |
| 2212 | JMP I FIND /EXIT |
| 2213 | |
| 2214 | FIND1, ISZ INDEX0 /EXTRA POINTER BUMPS |
| 2215 | ISZ INDEX0 |
| 2216 | ISZ CNTR /MORE FILES? |
| 2217 | JMP FIND2 /YES - LOOP |
| 2218 | JMP FIND3 /NO - NOT FOUND |
| 2219 | |
| 2220 | FIND4, 0 /POINTER TO NAME-1 |
| 2221 | PAGE |
| 2222 | \fLINBUF=. |
| 2223 | LISTL, ZBLOCK 105 |
| 2224 | |
| 2225 | LISTM1, TEXT / FREE BLOCKS PIP10 V/ |
| 2226 | VERLOC, *.-1 |
| 2227 | 60+VERSION^100+SUBVER |
| 2228 | 3700 |
| 2229 | |
| 2230 | ERMES0, TEXT /_PIP10 CANNOT BE CHAINED TO_/ |
| 2231 | ERMES1, TEXT #_I/O ERROR_# |
| 2232 | |
| 2233 | ERMES2, TEXT /_DEVICE FULL_/ |
| 2234 | |
| 2235 | ERMES3, TEXT /_NO SUCH DEVICE_/ |
| 2236 | |
| 2237 | ERMES4, TEXT /_NOT PDP-10 FILE_/ |
| 2238 | |
| 2239 | ERMES5, TEXT /_ERROR DELETING FILE_/ |
| 2240 | |
| 2241 | ERMES6, TEXT /_NOT OS8 FILE_/ |
| 2242 | |
| 2243 | ERMES7, TEXT /_OUTPUT FILE OPEN ERROR_/ |
| 2244 | |
| 2245 | ERMES8, TEXT /_SYNTAX ERROR_/ |
| 2246 | ERMES9, TEXT /_FILE NOT FOUND_/ |
| 2247 | \f/ROUTINE TO SET TD8E UNIT INFORMATION FROM UNIT10 |
| 2248 | |
| 2249 | TDUSET, 0 |
| 2250 | TAD UNIT10 |
| 2251 | CLL RTL |
| 2252 | RAL |
| 2253 | AND (7 |
| 2254 | TAD (DVCTBL |
| 2255 | DCA DVCPTR |
| 2256 | RAR |
| 2257 | DCA TDUNIT /SAVE EVEN/ODD BIT |
| 2258 | TAD (TDUTBL |
| 2259 | DCA TDUPTR |
| 2260 | TDULP, TAD I TDUPTR |
| 2261 | SNA |
| 2262 | JMP I TDUSET |
| 2263 | DCA TDUT |
| 2264 | TAD I TDUT |
| 2265 | AND (7 |
| 2266 | TAD I DVCPTR |
| 2267 | DCA I TDUT |
| 2268 | ISZ TDUPTR |
| 2269 | JMP TDULP |
| 2270 | TDUPTR, 0 |
| 2271 | TDUT, 0 |
| 2272 | DVCPTR, 0 |
| 2273 | DVCTBL, 6770;6760;6750;6740 |
| 2274 | |
| 2275 | TDUTBL, DIO01 |
| 2276 | DIO02 |
| 2277 | DIO03 |
| 2278 | DIO04 |
| 2279 | DIO05 |
| 2280 | DIO06 |
| 2281 | DIO07 |
| 2282 | DIO08 |
| 2283 | DIO09 |
| 2284 | DIO10 |
| 2285 | DIO11 |
| 2286 | DIO12 |
| 2287 | DIO13 |
| 2288 | DIO14 |
| 2289 | DIO15 |
| 2290 | DIO16 |
| 2291 | DIO17 |
| 2292 | DIO18 |
| 2293 | DIO19 |
| 2294 | DIO20 |
| 2295 | DIO21 |
| 2296 | DIO22 |
| 2297 | IOTX1 |
| 2298 | IOTX2 |
| 2299 | IOTX3 |
| 2300 | IOTX4 |
| 2301 | IOTX5 |
| 2302 | IOTX6 |
| 2303 | IOTX7 |
| 2304 | IOTX8 |
| 2305 | 0 |
| 2306 | PAGE |
| 2307 | \f/GET A CHARACTER |
| 2308 | |
| 2309 | GCH, 0 |
| 2310 | TAD I IXR /GET A CHAR |
| 2311 | TAD (-240 |
| 2312 | SNA |
| 2313 | JMP GCH+1 /IGNORE SPACES |
| 2314 | TAD (240-"/ |
| 2315 | SNA |
| 2316 | JMP SLASH |
| 2317 | TAD ("/-"( |
| 2318 | SNA |
| 2319 | JMP OPENP |
| 2320 | TAD ("( |
| 2321 | JMP I GCH /EXIT |
| 2322 | |
| 2323 | SLASH, TAD I IXR |
| 2324 | JMS SLSHCH /GET OPTION |
| 2325 | JMP GCH+1 |
| 2326 | |
| 2327 | OPENP, TAD I IXR |
| 2328 | TAD (-") |
| 2329 | SNA |
| 2330 | JMP GCH+1 /END |
| 2331 | TAD (") |
| 2332 | JMS SLSHCH /GET OPTION |
| 2333 | JMP OPENP |
| 2334 | |
| 2335 | SLSHCH, 0 |
| 2336 | SNA |
| 2337 | JMP I (SYNTAX /ERROR |
| 2338 | DCA TEMP6 |
| 2339 | TAD (MPARAM-1 |
| 2340 | DCA TEMP5 /POINT TO PARAMETERS |
| 2341 | JMS DECODE |
| 2342 | JMP I (SYNTAX |
| 2343 | SZL |
| 2344 | TAD (32 /ADD |
| 2345 | TAD (-14 |
| 2346 | ISZ TEMP5 |
| 2347 | SMA |
| 2348 | JMP .-3 /FIND DIVIDED BY 12 |
| 2349 | DCA TEMP4 |
| 2350 | CLL CML |
| 2351 | RAL |
| 2352 | ISZ TEMP4 |
| 2353 | JMP .-2 /SHIFT A BIT |
| 2354 | DCA TEMP4 /SAVE IT |
| 2355 | CDF 10 |
| 2356 | TAD TEMP4 |
| 2357 | CMA |
| 2358 | AND I TEMP5 |
| 2359 | TAD TEMP4 /OR IN THAT BIT |
| 2360 | DCA I TEMP5 |
| 2361 | CDF |
| 2362 | JMP I SLSHCH |
| 2363 | |
| 2364 | DECODE, 0 |
| 2365 | TAD TEMP6 |
| 2366 | TAD (-"9-1 |
| 2367 | CLL |
| 2368 | TAD ("9+1-"0 |
| 2369 | SZL |
| 2370 | JMP DECOD1 |
| 2371 | TAD ("0-"Z-1 |
| 2372 | CLL CML |
| 2373 | TAD ("Z-"A+1 |
| 2374 | SNL |
| 2375 | DECOD1, ISZ DECODE |
| 2376 | JMP I DECODE |
| 2377 | |
| 2378 | EXA40, 0 |
| 2379 | TAD (CDNAME |
| 2380 | DCA TEMP5 |
| 2381 | TAD (-5 |
| 2382 | DCA TEMP4 |
| 2383 | EXA401, CLL CLA CML RAR |
| 2384 | TAD I TEMP5 |
| 2385 | AND [7700 |
| 2386 | CLL RAL |
| 2387 | SZA |
| 2388 | RAR |
| 2389 | DCA TEMP3 |
| 2390 | TAD I TEMP5 |
| 2391 | TAD (40 |
| 2392 | AND [77 |
| 2393 | TAD (-40 |
| 2394 | SZA |
| 2395 | TAD (40 |
| 2396 | TAD TEMP3 |
| 2397 | DCA I TEMP5 |
| 2398 | ISZ TEMP5 |
| 2399 | ISZ TEMP4 |
| 2400 | JMP EXA401 |
| 2401 | JMP I EXA40 |
| 2402 | PAGE |
| 2403 | \f/GET A NAME ROUTINE |
| 2404 | |
| 2405 | GNAME, 0 |
| 2406 | DCA CDDEV /CLEAR AREA |
| 2407 | DCA CDDEV+1 |
| 2408 | CLA CMA |
| 2409 | DCA DEVSW /ALLOW DEVICES |
| 2410 | GNAME1, DCA CDNAME /CLEAR NAME,EXTENSION |
| 2411 | DCA CDNAME+1 |
| 2412 | DCA CDNAME+2 |
| 2413 | DCA CDEXT |
| 2414 | DCA CDEXT+1 |
| 2415 | CLA CMA |
| 2416 | DCA PERSW /ALLOW EXTENSIONS |
| 2417 | TAD (CDNAME |
| 2418 | DCA POINT /SET POINTER |
| 2419 | DCA CNTR /SET SWITCH |
| 2420 | GNAME2, JMS I (GCH /GET A CHAR |
| 2421 | DCA TEMP6 |
| 2422 | TAD TEMP6 |
| 2423 | SNA |
| 2424 | JMP GNAME6 /END |
| 2425 | TAD (-": |
| 2426 | SNA |
| 2427 | JMP GNAME5 /: IS DEVICE |
| 2428 | TAD (":-". |
| 2429 | SNA |
| 2430 | JMP GNAME4 /. IS EXTENSION |
| 2431 | TAD (". |
| 2432 | DCA TEMP6 /SAVE THE CHAR |
| 2433 | JMS I (DECODE |
| 2434 | JMP GNAME6-1 /NOT 0-9 OR A-Z IS END |
| 2435 | CLA |
| 2436 | TAD TEMP6 |
| 2437 | AND [77 /GET TRIMMED ASCII |
| 2438 | ISZ CNTR |
| 2439 | JMP GNAME3 /LEFT HALF |
| 2440 | TAD I POINT |
| 2441 | DCA I POINT /SET RIGHT HALF |
| 2442 | ISZ POINT |
| 2443 | JMP GNAME2 /LOOP |
| 2444 | |
| 2445 | GNAME3, CLL RTL |
| 2446 | RTL |
| 2447 | RTL |
| 2448 | DCA I POINT /SET LEFT HALF |
| 2449 | CLA CMA |
| 2450 | DCA CNTR |
| 2451 | TAD POINT |
| 2452 | TAD (-CDEXT-2 |
| 2453 | SZA CLA |
| 2454 | JMP GNAME2 /LOOP |
| 2455 | JMP GNAME2-1 /LOOP - IGNORE |
| 2456 | |
| 2457 | GNAME4, TAD CDNAME |
| 2458 | SZA CLA |
| 2459 | ISZ PERSW |
| 2460 | JMP I (SYNTAX /ERROR |
| 2461 | DCA CDEXT |
| 2462 | DCA CDEXT+1 /CLEAR EXTENSION |
| 2463 | TAD (CDEXT |
| 2464 | JMP GNAME2-2 /GET EXTENSION |
| 2465 | |
| 2466 | GNAME5, ISZ DEVSW |
| 2467 | JMP I (SYNTAX /ERROR |
| 2468 | ISZ PERSW |
| 2469 | JMP I (SYNTAX /ERROR |
| 2470 | TAD CDNAME |
| 2471 | SNA |
| 2472 | JMP I (SYNTAX /ERROR |
| 2473 | DCA CDDEV |
| 2474 | TAD CDNAME+1 |
| 2475 | DCA CDDEV+1 /SET DEVICE |
| 2476 | JMP GNAME1 /NOW GET THE NAME |
| 2477 | |
| 2478 | CLA |
| 2479 | GNAME6, DCA CDEXT+2 |
| 2480 | TAD CDEXT+1 |
| 2481 | AND [7700 |
| 2482 | DCA CDEXT+1 |
| 2483 | ISZ PERSW |
| 2484 | JMP I GNAME /EXIT |
| 2485 | DCA CDEXT |
| 2486 | DCA CDEXT+1 /CLEAR EXTENSION |
| 2487 | JMP I GNAME /EXIT |
| 2488 | PAGE |
| 2489 | \fCD, 0 |
| 2490 | TAD [MOUTPU-1 |
| 2491 | DCA INDEX0 |
| 2492 | TAD (-47 |
| 2493 | DCA CNTR |
| 2494 | CDF 10 |
| 2495 | DCA I INDEX0 /CLEAR AREAS |
| 2496 | ISZ CNTR |
| 2497 | JMP .-2 |
| 2498 | CDF |
| 2499 | CIF 10 |
| 2500 | JMS I [200 |
| 2501 | 13 /RESET TABLES |
| 2502 | 0 |
| 2503 | DCA INSEG /NO DIRECTORY IN CORE |
| 2504 | DCA PDP10D /NO KNOWN PDP-10 DRIVES |
| 2505 | DCA PDP10D+1 |
| 2506 | DCA PDP10D+2 |
| 2507 | DCA PDP10D+3 |
| 2508 | DCA PDP10D+4 |
| 2509 | DCA PDP10D+5 |
| 2510 | DCA PDP10D+6 |
| 2511 | DCA PDP10D+7 |
| 2512 | DCA CDCNT /ZERO INPUT COUNT |
| 2513 | JMS I (GLINE /GET A LINE |
| 2514 | TAD [LINBUF-1 |
| 2515 | DCA IXR |
| 2516 | TAD I IXR |
| 2517 | SNA |
| 2518 | JMP NOBAKB /NO "<" IS LINE |
| 2519 | TAD (-"< |
| 2520 | SZA CLA |
| 2521 | JMP .-5 |
| 2522 | TAD [LINBUF-1 |
| 2523 | DCA IXR |
| 2524 | TAD XDSK |
| 2525 | DCA CDDEVF /SET "DSK" AS DEFAULT |
| 2526 | TAD XDSK+1 |
| 2527 | DCA CDDEVF+1 |
| 2528 | JMS I (GNAME /GET THE NAME |
| 2529 | TAD TEMP6 |
| 2530 | TAD (-"[ |
| 2531 | SZA CLA |
| 2532 | JMP CDX03 /NO SIZE SPECIFIED |
| 2533 | CDX01, JMS I (GCH |
| 2534 | TAD (-"] |
| 2535 | SNA |
| 2536 | JMP CDX02 /END OF SIZE |
| 2537 | TAD ("]-"0 |
| 2538 | SPA |
| 2539 | JMP I (SYNTAX /ERROR |
| 2540 | DCA TEMP1 |
| 2541 | TAD CDEXT+2 |
| 2542 | CLL RTL |
| 2543 | TAD CDEXT+2 |
| 2544 | RAL |
| 2545 | TAD TEMP1 |
| 2546 | DCA CDEXT+2 /ADD IN NUMBER |
| 2547 | TAD TEMP1 |
| 2548 | TAD (-11 |
| 2549 | SMA SZA CLA |
| 2550 | JMP I (SYNTAX /ERROR |
| 2551 | JMP CDX01 |
| 2552 | |
| 2553 | CDX02, JMS I (GCH |
| 2554 | SKP |
| 2555 | CDX03, TAD TEMP6 |
| 2556 | TAD (-"< |
| 2557 | SZA CLA |
| 2558 | JMP I (SYNTAX /ERROR |
| 2559 | JMS I (CDOUTX /SET OUTPUT STUFF |
| 2560 | NOBAKA, TAD (MINPUT-1 |
| 2561 | DCA INDEX6 |
| 2562 | TAD XDSK |
| 2563 | DCA CDDEVF /SET DEFAULT |
| 2564 | TAD XDSK+1 |
| 2565 | DCA CDDEVF+1 |
| 2566 | TAD IXR |
| 2567 | DCA CDI04 /SAVE POINTER |
| 2568 | JMS I (GCH |
| 2569 | SNA CLA |
| 2570 | JMP I CD /NO INPUT FILES |
| 2571 | TAD CDI04 |
| 2572 | DCA IXR /RESET POINTER |
| 2573 | CDI01, JMS I (GNAME /GET A FILE |
| 2574 | ISZ DEVSW |
| 2575 | JMP CDI02 /DEVICE SPECIFIED |
| 2576 | TAD CDDEVF |
| 2577 | DCA CDDEV |
| 2578 | TAD CDDEVF+1 |
| 2579 | DCA CDDEV+1 /SET DEFAULT DEVICE |
| 2580 | CDI02, TAD CDDEV |
| 2581 | DCA CDDEVF |
| 2582 | TAD CDDEV+1 |
| 2583 | DCA CDDEVF+1 /SET NEW DEFAULT |
| 2584 | ISZ CDCNT /COUNT INPUT FILES |
| 2585 | TAD CDCNT |
| 2586 | TAD (-12 |
| 2587 | SMA CLA |
| 2588 | JMP I (SYNTAX /TOO MANY FILES |
| 2589 | JMS I (CDINX /SET INPUT STUFF |
| 2590 | TAD TEMP6 |
| 2591 | SNA |
| 2592 | JMP I CD /MAIN EXIT |
| 2593 | TAD (-", |
| 2594 | SNA CLA |
| 2595 | JMP CDI01 |
| 2596 | JMP I (SYNTAX /ERROR |
| 2597 | |
| 2598 | NOBAKB, TAD [LINBUF-1 |
| 2599 | DCA IXR |
| 2600 | JMP NOBAKA |
| 2601 | PAGE |
| 2602 | \fCDOUTX, 0 /SET OUTPUT STUFF |
| 2603 | ISZ DEVSW |
| 2604 | JMP CDOUT9 /DEVICE SPECIFIED |
| 2605 | TAD CDNAME |
| 2606 | SNA CLA |
| 2607 | JMP I CDOUTX /NO NAME AND NO DEVICE IS NOTHING |
| 2608 | TAD CDDEVF |
| 2609 | DCA CDDEV |
| 2610 | TAD CDDEVF+1 |
| 2611 | DCA CDDEV+1 /SET DEFAULT DEVICE |
| 2612 | CDOUT9, TAD (OUDEVH+1 |
| 2613 | DCA CDOUT2 /SET OUTPUT HANDLER ADDRESS |
| 2614 | TAD [MOUTPU-1 |
| 2615 | DCA INDEX6 |
| 2616 | TAD CDDEV |
| 2617 | DCA CDOUT1 |
| 2618 | TAD CDDEV+1 |
| 2619 | DCA CDOUT1+1 /SET DEVICE |
| 2620 | CIF 10 |
| 2621 | JMS I [200 |
| 2622 | 12 /FIND HANDLER |
| 2623 | CDOUT1, 0 |
| 2624 | 0 |
| 2625 | CDOUT2, 0 |
| 2626 | JMP I (NOOFIL |
| 2627 | TAD CDOUT1+1 |
| 2628 | JMS I (GTDVTP /GET DEVICE TYPE AND COMPARE WITH TC08 AND TD8E |
| 2629 | SZA CLA |
| 2630 | JMP CDOUT3 /NOT DECTAPE |
| 2631 | TAD (OUDEVH+1 |
| 2632 | DCA CDOUT5 |
| 2633 | TAD CDOUT1+1 |
| 2634 | CIF 10 |
| 2635 | JMS I [200 |
| 2636 | 1 /GET HANDLER |
| 2637 | CDOUT5, 0 |
| 2638 | JMP I (NOOFIL |
| 2639 | TAD CDOUT5 |
| 2640 | JMS SETUNT /SET UP PHYSICAL UNIT FROM HANDLER ENTRY POINT |
| 2641 | JMS I (ROCK /CHECK THE TAPE |
| 2642 | JMP CDOUT3 /NOT PDP-10 DECTAPE |
| 2643 | JMS I (EXA40 /EXCESS 40 CONVERSION |
| 2644 | TAD UNIT10 |
| 2645 | JMP CDOUT4 /SET PARAMETERS |
| 2646 | |
| 2647 | CDOUT3, DCA CDEXT+1 |
| 2648 | TAD CDEXT+2 /GET LENGTH |
| 2649 | TAD (-400 |
| 2650 | SPA CLA |
| 2651 | TAD CDEXT+2 /O.K. - USE LENGTH |
| 2652 | CLL RTL |
| 2653 | RTL |
| 2654 | AND [7760 /8 BIT LENGTH |
| 2655 | TAD CDOUT1+1 /ADD IN DEVICE NUMBER |
| 2656 | CDOUT4, CDF 10 |
| 2657 | DCA I INDEX6 /SET DEVICE |
| 2658 | TAD CDNAME |
| 2659 | DCA I INDEX6 /SET NAME |
| 2660 | TAD CDNAME+1 |
| 2661 | DCA I INDEX6 |
| 2662 | TAD CDNAME+2 |
| 2663 | DCA I INDEX6 |
| 2664 | TAD CDEXT |
| 2665 | DCA I INDEX6 |
| 2666 | TAD CDEXT+1 |
| 2667 | DCA I INDEX6 |
| 2668 | CDF |
| 2669 | JMP I CDOUTX /EXIT |
| 2670 | |
| 2671 | SETUNT, 0 |
| 2672 | STL |
| 2673 | TAD (-7607 |
| 2674 | SZA /IF IT IS 7607, |
| 2675 | TAD (7 /ITS UNIT 0 |
| 2676 | AND (7 |
| 2677 | CLL CML RTR |
| 2678 | RTR |
| 2679 | DCA UNIT10 |
| 2680 | TAD DVTYPE |
| 2681 | AND (10 |
| 2682 | SNA CLA |
| 2683 | JMP I SETUNT /TC08 - FINISHED |
| 2684 | CLL |
| 2685 | TAD UNIT10 |
| 2686 | AND (7000 /TD8E ENTRY POINTS ARE STRANGE - |
| 2687 | TAD UNIT10 /MUST ROTATE UNIT NUMBER LEFT 1 |
| 2688 | SZL |
| 2689 | TAD (1000 |
| 2690 | DCA UNIT10 |
| 2691 | JMS I (TDUSET /SET UP TD8E OPCODES |
| 2692 | JMP I SETUNT |
| 2693 | PAGE |
| 2694 | \fCDINX, 0 /SET INPUT STUFF |
| 2695 | TAD (OUDEVH+1 |
| 2696 | DCA CDIN1 |
| 2697 | TAD CDDEV |
| 2698 | DCA CDIN2 /SET DEVICE |
| 2699 | TAD CDDEV+1 |
| 2700 | DCA CDIN2+1 |
| 2701 | CIF 10 |
| 2702 | JMS I [200 |
| 2703 | 1 /GET HANDLER |
| 2704 | CDIN2, 0 |
| 2705 | 0 |
| 2706 | CDIN1, 0 |
| 2707 | JMP I (NOOFIL |
| 2708 | TAD CDIN2+1 |
| 2709 | JMS GTDVTP /COMPARE DCB ENTRY WITH TC08 OR TD8E |
| 2710 | SZA CLA |
| 2711 | JMP CDIN3 /NOT DECTAPE |
| 2712 | TAD CDIN1 |
| 2713 | JMS I (SETUNT /SET UP UNIT NUMBER |
| 2714 | JMS I (ROCK /CHECK THE TAPE |
| 2715 | JMP CDIN3 /NOT PDP-10 DECTAPE |
| 2716 | JMS I (EXA40 /DO EXCESS 40 |
| 2717 | TAD INSEG |
| 2718 | CIA |
| 2719 | TAD UNIT10 /IS DIRECTORY IN CORE? |
| 2720 | SNA CLA |
| 2721 | JMP CDIN8 /YES - NO READ |
| 2722 | TAD CDNAME |
| 2723 | SNA CLA |
| 2724 | JMP CDIN7 /NO NAME - NO READ |
| 2725 | JMS I (READT |
| 2726 | DIRECT /READ DIRECTORY |
| 2727 | 144 |
| 2728 | TAD UNIT10 |
| 2729 | DCA INSEG /SET DIRECTORY IN CORE |
| 2730 | CDIN8, TAD (-5 |
| 2731 | DCA CNTR |
| 2732 | TAD (CDNAME-1 |
| 2733 | DCA INDEX0 |
| 2734 | TAD (CDINXX-1 |
| 2735 | DCA INDEX1 |
| 2736 | TAD I INDEX0 |
| 2737 | CDF 10 |
| 2738 | DCA I INDEX1 |
| 2739 | CDF |
| 2740 | ISZ CNTR |
| 2741 | JMP .-5 |
| 2742 | TAD (CDINXX-1 |
| 2743 | JMS I (IOPN10 /OPEN THE PDP-10 FILE |
| 2744 | JMP I (FNOTFD |
| 2745 | CDIN7, DCA CDIN4 |
| 2746 | TAD UNIT10 |
| 2747 | JMP CDIN6 |
| 2748 | |
| 2749 | CDIN3, TAD (CDNAME |
| 2750 | DCA CDIN4 |
| 2751 | TAD CDNAME |
| 2752 | SNA CLA |
| 2753 | JMP CDIN9 /NO LOOKUP IF NO NAME |
| 2754 | TAD CDIN2+1 |
| 2755 | CIF 10 |
| 2756 | JMS I [200 |
| 2757 | 2 |
| 2758 | CDIN4, CDNAME /LOOKUP |
| 2759 | CDIN5, 0 |
| 2760 | JMP I (FNOTFD |
| 2761 | TAD CDIN5 |
| 2762 | TAD (400 |
| 2763 | SPA |
| 2764 | CLA |
| 2765 | CLL RTL |
| 2766 | RTL |
| 2767 | AND [7760 /GET LENGTH |
| 2768 | TAD CDIN2+1 /ADD DEVICE |
| 2769 | CDIN6, CDF 10 |
| 2770 | DCA I INDEX6 |
| 2771 | TAD CDIN4 |
| 2772 | DCA I INDEX6 /SET BLOCK STARTING |
| 2773 | CDF |
| 2774 | JMP I CDINX |
| 2775 | |
| 2776 | CDIN9, DCA CDIN4 |
| 2777 | JMP CDIN6-1 |
| 2778 | |
| 2779 | GTDVTP, 0 |
| 2780 | TAD (DCB-1 |
| 2781 | DCA TEMP1 |
| 2782 | CDF 10 |
| 2783 | TAD I TEMP1 /GET DCB ENTRY |
| 2784 | CDF |
| 2785 | DCA DVTYPE |
| 2786 | TAD DVTYPE |
| 2787 | AND (770 |
| 2788 | TAD (-210 |
| 2789 | SZA |
| 2790 | TAD (30 |
| 2791 | JMP I GTDVTP |
| 2792 | PAGE |
| 2793 | \fROCK, 0 |
| 2794 | JMS GET10D /GET ENTRY IN TAPE TYPE TABLE |
| 2795 | SNA |
| 2796 | JMP ROCK4 /UNKNOWN - ROCK IT |
| 2797 | SMA CLA |
| 2798 | ISZ ROCK |
| 2799 | JMP I ROCK /EXIT |
| 2800 | |
| 2801 | GET10D, 0 |
| 2802 | TAD UNIT10 |
| 2803 | CLL RTL |
| 2804 | RTL |
| 2805 | TAD (PDP10D |
| 2806 | DCA TEMP5 /POINT TO KNOWN TABLE |
| 2807 | TAD I TEMP5 |
| 2808 | JMP I GET10D |
| 2809 | |
| 2810 | ROCK4, CLA CMA |
| 2811 | DCA I TEMP5 |
| 2812 | TAD DVTYPE |
| 2813 | AND (10 |
| 2814 | SZA CLA /WHAT KIND OF TAPE? |
| 2815 | JMP TDCHK /TD8E |
| 2816 | TAD (OBUF10-1 |
| 2817 | DCA I (7755 |
| 2818 | TAD (10 |
| 2819 | DTLB |
| 2820 | ROCK1, RTL |
| 2821 | RAL |
| 2822 | SZL CLA |
| 2823 | TAD (-400 |
| 2824 | TAD UNIT10 |
| 2825 | TAD (210 |
| 2826 | DTCA DTXA |
| 2827 | ROCK2, JMS DTWAIT |
| 2828 | |
| 2829 | ROCK3, SPA |
| 2830 | JMP ROCK1 |
| 2831 | CLA |
| 2832 | TAD (OBUF10-1 |
| 2833 | DCA I (7755 |
| 2834 | TAD (-600 |
| 2835 | DCA I (7754 |
| 2836 | TAD (30 |
| 2837 | DTXA |
| 2838 | DTSF DTRB |
| 2839 | JMP .-1 |
| 2840 | SPA CLA |
| 2841 | JMP ROCK4 /RETRY |
| 2842 | TAD [200 |
| 2843 | DTXA /STOP DRIVE |
| 2844 | TAD I (7754 |
| 2845 | SZA CLA |
| 2846 | JMP I ROCK /OS8 UNIT |
| 2847 | CLA IAC |
| 2848 | SET10, DCA I TEMP5 |
| 2849 | ISZ ROCK |
| 2850 | JMP I ROCK /PDP-10 UNIT |
| 2851 | |
| 2852 | DTWAIT, 0 /WAIT FOR DECTAPE FLAG |
| 2853 | DTSF DTRB |
| 2854 | SKP CLA |
| 2855 | JMP I DTWAIT |
| 2856 | KSF |
| 2857 | JMP DTWAIT+1 |
| 2858 | TAD [200 |
| 2859 | KRS |
| 2860 | TAD (-203 |
| 2861 | SZA CLA |
| 2862 | JMP DTWAIT+1 |
| 2863 | TAD [200 |
| 2864 | DTXA /STOP THE TAPE |
| 2865 | JMP I [7600 |
| 2866 | |
| 2867 | TDCHK, CLA STL RTR |
| 2868 | TAD TDUNIT |
| 2869 | IOTX1, SDLC |
| 2870 | CLA |
| 2871 | IOTX2, SDRC |
| 2872 | AND (100 /CHECK FOR TAPE NOT READY |
| 2873 | SZA CLA |
| 2874 | JMP TDCHK /WAIT FOR TAPE TO COME UP |
| 2875 | TAD TDUNIT |
| 2876 | TAD (1000 |
| 2877 | IOTX3, SDLC |
| 2878 | JMS SKIP4 |
| 2879 | JMS SKIP4 |
| 2880 | IOTX4, SDSS |
| 2881 | JMP .-1 |
| 2882 | IOTX5, SDRC |
| 2883 | AND [77 |
| 2884 | TAD (-26 |
| 2885 | SZA CLA /WAIT FOR GUARD |
| 2886 | JMP IOTX4 |
| 2887 | DCA TDT |
| 2888 | TDCLP, JMS SKIP4 |
| 2889 | ISZ TDT |
| 2890 | AND [77 |
| 2891 | TAD (-51 /SEARCH FOR SOME CRAP NEAR END OF RECORD |
| 2892 | SZA CLA |
| 2893 | JMP TDCLP |
| 2894 | TAD I (UNIT |
| 2895 | IOTX6, SDLC /STOP TAPE |
| 2896 | CLA |
| 2897 | TAD TDT |
| 2898 | TAD (-611 /9 WORDS FOR GOOD LUCK |
| 2899 | SZA CLA |
| 2900 | JMP I ROCK |
| 2901 | STL RTL /SET TABLE ENTRY TO 2 FOR TD8E TAPE |
| 2902 | JMP SET10 |
| 2903 | |
| 2904 | SKIP4, 0 |
| 2905 | IOTX7, SDSQ |
| 2906 | JMP .-1 |
| 2907 | IOTX8, SDRC |
| 2908 | JMP I SKIP4 |
| 2909 | TDT, 0 |
| 2910 | PAGE |
| 2911 | FIELD 0 /DUMP PG 0 LITERALS HERE |
| 2912 | \f/TD8E DECTAPE ROUTINE |
| 2913 | /VERSION 01 |
| 2914 | |
| 2915 | /JULY 2 1971 GB/RL/EF |
| 2916 | |
| 2917 | /COPYRIGHT 1971 DIGITAL EQUIPMENT CORP. |
| 2918 | / MAYNARD, MASS. |
| 2919 | |
| 2920 | /ABSTRACT-- |
| 2921 | / THE ROUTINE DESCRIBED AND LISTED HERE IS A GENERAL |
| 2922 | /DATA HANDLER FOR THE TD8E DECTAPE SYSTEM. THE ROUTINE |
| 2923 | /CONTAINS SEARCH, READ, AND WRITE FUNCTIONS IN A FORMAT |
| 2924 | /WHICH IS COMPATIBLE WITH PS/8 DEVICE HANDLER CALLING |
| 2925 | /SEQUENCES. |
| 2926 | \f |
| 2927 | /THIS ROUTINE CAN BE RE-EDITED AND ASSEMBLED TO PRODUCE |
| 2928 | /VARIATIONS ON THE BASIC TD8E SYSTEM. ASSEMBLY PARAMETERS |
| 2929 | /CONTROL: |
| 2930 | /A) WHAT DRIVES (UNITS 0-7) WILL BE USED |
| 2931 | /B) THE ORIGIN OF THE TWO PAGE ROUTINE |
| 2932 | /C) WHAT MEMORY FIELD THE ROUTINE WILL RUN IN |
| 2933 | /D) THE SIZE OF THE DECTAPE BLOCK TO BE READ/WRITTEN |
| 2934 | |
| 2935 | /FOLLOWING ARE THE PARAMETERS SET UP FOR THE STANDARD |
| 2936 | /DEC VERSION OF THIS ROUTINE: |
| 2937 | |
| 2938 | DRIVE=10 /UNITS 0 AND 1 SELECTED |
| 2939 | ORIGIN=6200 /ENTRIES AT 6200 AND 6204 |
| 2940 | AFIELD=0 /INITIAL FIELD SETTING |
| 2941 | MFIELD=00 /AFIELD*10=MFIELD |
| 2942 | WDSBLK=600 /384 WORDS PER BLOCK |
| 2943 | |
| 2944 | /THE USE OF THE PARAMETERS IS AS FOLLOWS: |
| 2945 | |
| 2946 | / DRIVE: DRIVE DETERMINES WHICH UNITS WILL BE SELECTED |
| 2947 | / DRIVE=10 IMPLIES UNITS 0 &1 |
| 2948 | / DRIVE=20 IMPLIES UNITS 2&3 |
| 2949 | / DRIVE=30 IMPLIES UNITS 4&5 |
| 2950 | / DRIVE=40 IMPLIES UNITS 6&7 |
| 2951 | |
| 2952 | /ORIGIN: ALTERING ORIGIN CAUSES ASSEMBLY IN A DIFFERENT |
| 2953 | / MEMORY LOCATION. WHEN CHANGING ORIGIN KEEP IN MIND |
| 2954 | /THAT THIS IS A TWO PAGE ROUTINE. |
| 2955 | |
| 2956 | /AFIELD: AFIELD DETERMINES THE INITIAL FIELD SETTING FOR THE |
| 2957 | / LOADER. PERMISSIBLE VALUES FOR AFIELD ARE 0 TO 7. |
| 2958 | |
| 2959 | /MFIELD: MFIELD IS USED IN A CIF CDF MFIELD INSTRUCTION. |
| 2960 | / THE VALUE INSERTED FOR MFIELD SHOULD BE 10(8) TIMES |
| 2961 | / THE VALUE FOR AFIELD. THE PERMISSIBLE VALUES ARE 00-70. |
| 2962 | |
| 2963 | /WDSBLK: WDSBLK GOVERNS HOW MANY WORDS THE ROUTINE THINKS ARE |
| 2964 | / IN A DECTAPE BLOCK. THE STANDARD VALUE IS 201(8) OR |
| 2965 | / 128 DECIMAL. NOTE THAT THE FUNCTION WORD BIT 10 CAN |
| 2966 | / BE USED TO SUBTRACT ONE FROM WDSBLK. THE VALUE USED |
| 2967 | / FOR WDSBLK SHOULD BE THE NUMBER OF WORDS THE TAPE WAS |
| 2968 | / FORMATTED TO CONTAIN. |
| 2969 | |
| 2970 | /IF WE WANT A HANDLER FOR UNITS 2&3 TO RESIDE IN |
| 2971 | /FIELD 2 AT LOCATION 3000 AND READ/WRITE 256(10) WORDS |
| 2972 | /PER BLOCK, THE PARAMETERS WOULD BE: |
| 2973 | / DRIVE=20 |
| 2974 | / ORIGIN=3000 |
| 2975 | / AFIELD=2 |
| 2976 | / MFIELD=20 |
| 2977 | / WDSBLK=400 |
| 2978 | \f |
| 2979 | /THE CALL TO THE SUBROUTINE FOLLOWS BASICALLY THE |
| 2980 | /CALLING SEQUENCE FOR PS/8 DEVICE HANDLERS. |
| 2981 | /THE CALLING SEQUENCE IS: |
| 2982 | |
| 2983 | / CDF CURRENT |
| 2984 | / CIF MFIELD /MFIELD=FIELD ASSEMBLED IN |
| 2985 | / JMS ENTRY /ENTRY=ORIGIN (EVEN NUMBERED DRIVE |
| 2986 | /AND ORIGIN+4 FOR ODD NUMBERED DRIVE. |
| 2987 | / ARG1 |
| 2988 | / ARG2 |
| 2989 | / ARG3 |
| 2990 | / ERROR RETURN |
| 2991 | / NORMAL RETURN |
| 2992 | |
| 2993 | /THE ARGUMENTS ARE: |
| 2994 | |
| 2995 | /ARG1: FUNCTION WORD BIT0: 0=READ, 1=WRITE |
| 2996 | / BITS 1-5: # BLOCKS IN OPERATION |
| 2997 | / BITS 6-8: FIELD OF BUFFER AREA |
| 2998 | / BIT 9: UNUSED |
| 2999 | / BIT 10: # OF WORDS/BLOCK. |
| 3000 | / 0= WDSBLK, 1=WDSBLK-1 |
| 3001 | / BIT 11: 1=START FORWARD, 0=REVERSE |
| 3002 | |
| 3003 | /ARG2: BUFFER ADDRESS FOR OPERATION |
| 3004 | /ARG3: STARTING BLOCK FOR OPERATION |
| 3005 | |
| 3006 | /ERRORS: THE HANDLER DETECTS TWO TYPES OF ERRORS: |
| 3007 | /A) FATAL ERRORS- PARITY ERROR, TIMING ERROR, |
| 3008 | / TOO GREAT A BLOCK NUMBER |
| 3009 | / FATAL ERRORS TAKE ERROR RETURN WITH THE |
| 3010 | / AC=4000. |
| 3011 | /B) NON-FATAL- SELECT ERROR. |
| 3012 | / IF NO PROPER UNIT IS SELECTED, THE ERROR |
| 3013 | / RETURN IS TAKEN WITH CLEAR AC. |
| 3014 | /FATAL ERRORS TRY THREE TIMES BEFORE TAKING ERROR RETURN. |
| 3015 | /THE NORMAL RETURN IS TAKEN AFTER ALL INDICATED |
| 3016 | /BLOCKS HAVE BEEN TRANSFERRED. THE AC IS CLEAR. |
| 3017 | \f |
| 3018 | /THE TD8E IOT'S ARE: |
| 3019 | SDSS=7001-DRIVE /SKIP ON SINGLE LINE FLAG |
| 3020 | SDST=7002-DRIVE /SKIP ON TIMING ERROR |
| 3021 | SDSQ=7003-DRIVE /SKIP ON QUAD LINE FLAG |
| 3022 | SDLC=7004-DRIVE /LOAD COMMAND REGISTER |
| 3023 | SDLD=7005-DRIVE /LOAD DATA REGISTER |
| 3024 | SDRC=7006-DRIVE /READ COMMAND REGISTER |
| 3025 | SDRD=7007-DRIVE /READ DATA REGISTER |
| 3026 | |
| 3027 | /THE IOT'S IN GENERAL ARE 677X,676X,675X,AND 674X. |
| 3028 | /THE OTHERS CONTROL UNITS 2-7. |
| 3029 | |
| 3030 | BLOCK=DTA1 |
| 3031 | |
| 3032 | FIELD AFIELD |
| 3033 | *ORIGIN |
| 3034 | DTA0, 0 /ENTRY POINT FROM UNIT 0 |
| 3035 | CLA CLL /0 TO LINK |
| 3036 | JMP DTA1X |
| 3037 | C1000, 1000 |
| 3038 | DTA1, 0 /UNIT 2 ENTRY |
| 3039 | CLA CLL CML /1 TO LINK |
| 3040 | TAD DTA1 |
| 3041 | DCA DTA0 /PICK UP ARGS AT DTA0 |
| 3042 | DTA1X, RAR |
| 3043 | DCA UNIT /LINK TO UNIT POSITION |
| 3044 | RDF |
| 3045 | TAD C6203 /GET DATA FIELD AND SETUP RETURN |
| 3046 | DCA LEAVE |
| 3047 | TAD I DTA0 /GET FUNCTION WORD |
| 3048 | DIO01, SDLD /PUT FUNCTION INTO DATA REGISTER |
| 3049 | CLL RTR /AC STILL HAS FUNCTION. PUT # WORDS PER |
| 3050 | /BLOCK INTO LINK |
| 3051 | SZL CLA /KNOCK ONE OFF WDSBLK? |
| 3052 | IAC /YES |
| 3053 | TAD MWORDS |
| 3054 | DCA WCOUNT /STORE MASTER WORD COUNT |
| 3055 | ISZ DTA0 /TO BUFFER |
| 3056 | TAD I DTA0 |
| 3057 | DCA BUFF |
| 3058 | ISZ DTA0 /TO BLOCK NUMBER |
| 3059 | TAD I DTA0 |
| 3060 | DCA BLOCK |
| 3061 | ISZ DTA0 /POINT TO ERROR EXIT |
| 3062 | CIF CDF MFIELD /TO ROUTINES DATA FIELD |
| 3063 | DIO02, SDRD /GET FUNCTION INTO AC |
| 3064 | CLL RAL |
| 3065 | AND CM200 /GET # PAGES TO XFER |
| 3066 | DCA PGCT |
| 3067 | DIO03, SDRD |
| 3068 | C374, AND C70 /GET FIELD FOR XFER |
| 3069 | TAD C6203 /FORM CDF N |
| 3070 | DCA XFIELD /IF=0 AND DF=N AT XFER. |
| 3071 | CLA CLL CMA RTL |
| 3072 | DCA TRYCNT /3 ERROR TRIES |
| 3073 | TAD UNIT /TEST FOR SELECT ERROR |
| 3074 | DIO04, SDLC |
| 3075 | DIO05, SDRC |
| 3076 | AND C100 |
| 3077 | SZA CLA |
| 3078 | JMP FATAL-1 |
| 3079 | \f |
| 3080 | DIO06, SDRD /PUT FUNCT INTO XFUNCT IN SECOND PG. |
| 3081 | DCA I CXFUN |
| 3082 | TAD WCOUNT |
| 3083 | DCA I CXWCT |
| 3084 | DIO07, SDRD /GET MOTION BIT TO LINK |
| 3085 | CLL RAR |
| 3086 | JMP GO /AND START THE MOTION. |
| 3087 | DIO08, |
| 3088 | RWCOM, SDST /ANY CHECKSUM ERRORS? |
| 3089 | SZA CLA /OR CHECKSUM ERRORS? |
| 3090 | JMP TRY3 /PLEASE NOTE THAT THE LINK IS ALWAYS |
| 3091 | /SET AT RWCOM. GETCHK SETS IT. |
| 3092 | TAD PGCT /NO ERROR..FINISHED XFER? |
| 3093 | TAD CM200 |
| 3094 | SNA |
| 3095 | JMP EXIT /ALL DONE. GET OUT |
| 3096 | DCA PGCT /NEW PAGE COUNT |
| 3097 | ISZ BLOCK /NEXT BLOCK TO XFER |
| 3098 | TAD WCOUNT /FORM NEXT BUFFER ADDRESS |
| 3099 | CIA |
| 3100 | TAD BUFF |
| 3101 | DCA BUFF |
| 3102 | CLL CML /FORCES MOTION FORWARD |
| 3103 | GO, CLA CML RTR /LINK BECOMES MOTION BIT |
| 3104 | TAD C1000 |
| 3105 | TAD UNIT /PUT IN 'GO' AND UNIT # |
| 3106 | DIO09, SDLC /LOOK FOR BLOCK NO. |
| 3107 | |
| 3108 | JMS I CRDQUD /WAIT AT LEAST 6 LINES TO LOOK |
| 3109 | JMS I CRDQUD |
| 3110 | CM200, 7600 /COULD HAVE SAVED A LOC. HERE |
| 3111 | DIO10, |
| 3112 | SRCH, SDSS |
| 3113 | JMP .-1 /WAIT FOR SINGLE LINE FLAG |
| 3114 | DIO11, SDRC |
| 3115 | CLL RTL /DIRECTION TO LINK. INFO BITS |
| 3116 | /ARE SHIFTED. |
| 3117 | AND C374 /ISOLATE MARK TRACK BITS |
| 3118 | TAD M110 /IS IT END ZONE? |
| 3119 | SNA /THE LINK STAYS SAME THRU THIS |
| 3120 | JMP ENDZ |
| 3121 | TAD M20 /CHECK FOR BLOCK MARK |
| 3122 | SZA CLA |
| 3123 | JMP SRCH |
| 3124 | DIO12, SDRD /GET THE BLOCK NUMBER |
| 3125 | SZL /IF WE ARE IN REVERSE, LOOK FOR 3 |
| 3126 | /BLOCKS BEFORE TARGET BLOCK. THIS |
| 3127 | /ALLOWS TURNAROUND AND UP TO SPEED. |
| 3128 | TAD C3 /REVERSE |
| 3129 | CMA |
| 3130 | TAD BLOCK |
| 3131 | CMA /IS IT RIGHT BLOCK? |
| 3132 | SNA |
| 3133 | JMP FOUND /YES..HOORAY! |
| 3134 | M110, SZL SNA CLA /NO, BUT ARE WE HEADED FOR IT? |
| 3135 | /ABOVE SNA IS SUPERFLUOUS. |
| 3136 | JMP SRCH /YES |
| 3137 | DIO13, |
| 3138 | ENDZ, SDRC /WE ARE IN THE END ZONE |
| 3139 | CLL RTL /DIRECTION TO LINK |
| 3140 | /V3C SZL CLA /ARE WE IN REVERSE? |
| 3141 | JMP GO /YES..TURN US AROUND |
| 3142 | /IF WE ARE IN THE END ZONE GOING FORWARD, IT IS AN ERROR |
| 3143 | TRY3, CLA CLL /V3C |
| 3144 | ISZ TRYCNT |
| 3145 | JMP GO /TRY 3 TIMES |
| 3146 | JMP FATAL /LINK OFF MEANS AC=4000 ON RETURN |
| 3147 | EXIT, ISZ DTA0 |
| 3148 | CLL CML /AC=0 ON NORMAL RETURN |
| 3149 | FATAL, TAD UNIT |
| 3150 | DIO14, SDLC /STOP THE UNIT |
| 3151 | CLA CML RAR |
| 3152 | LEAVE, HLT |
| 3153 | JMP I DTA0 |
| 3154 | |
| 3155 | \f |
| 3156 | C6203, 6203 |
| 3157 | CRDQUD, RDQUAD |
| 3158 | WCOUNT, 0 |
| 3159 | BUFF, 0 |
| 3160 | MWORDS, -WDSBLK |
| 3161 | UNIT, 0 |
| 3162 | CXFUN, XFUNCT |
| 3163 | M20, -20 |
| 3164 | PGCT, 0 |
| 3165 | CXWCT, XWCT |
| 3166 | C100, 100 |
| 3167 | TRYCNT, -3 |
| 3168 | |
| 3169 | |
| 3170 | *ORIGIN+170 |
| 3171 | FOUND, SZL CLA /RIGHT BLOCK. HOW ABOUT DIRECTION? |
| 3172 | JMP GO /WRONG..TURN AROUND |
| 3173 | TAD UNIT /PUT UNIT INTO LINK |
| 3174 | CLL RAL /AC IS NOW 0 |
| 3175 | C70, 70 /********DON'T MOVE THIS!!!!****** |
| 3176 | C3, 3 |
| 3177 | TAD BUFF /GET BUFFER ADDRESS |
| 3178 | XFIELD, HLT /INTO NEXT PAGE |
| 3179 | |
| 3180 | *ORIGIN+200 |
| 3181 | |
| 3182 | CIF MFIELD |
| 3183 | DCA XBUFF /SAVE ADDRESS |
| 3184 | RAR /NOW GET UNIT # |
| 3185 | DCA XUNIT |
| 3186 | SDRC /V3C |
| 3187 | SDLC /V3C |
| 3188 | TAD XWCT |
| 3189 | DCA DWORDS /WORD COUNTER |
| 3190 | DIO15, |
| 3191 | REVGRD, SDSS |
| 3192 | JMP .-1 /LOOK FOR REVERSE GUARD |
| 3193 | DIO16, SDRC |
| 3194 | AND K77 |
| 3195 | TAD CM32 /IS IT REVERSE GUARD? |
| 3196 | SZA CLA |
| 3197 | JMP REVGRD /NO.KEEP LOOKING |
| 3198 | TAD XFUNCT /GET FUNCTION READ OR WRITE |
| 3199 | K7700, SMA CLA |
| 3200 | JMP READ /NEG. IS WRITE |
| 3201 | DIO17, |
| 3202 | WRITE, SDRC |
| 3203 | AND C300 /CHECK FOR WRITE LOCK AND SELECT ERROR |
| 3204 | CLL CML /LOCK OUT AND SELECT ARE AC 0 ERRORS |
| 3205 | SZA CLA |
| 3206 | JMP I CFATAL /FATAL ERROR. LINK MUST BE ON |
| 3207 | / JMS RDQUAD /NO ONE EVER USES THIS WORD! |
| 3208 | / CLA |
| 3209 | STA /V3C HACK FOR PDP-6 |
| 3210 | JMS WRQUAD /V3C 7777 FOR REV CHECKSUM AND SKIP OVER LOCK |
| 3211 | TAD C1400 |
| 3212 | TAD XUNIT /INITIATE WRITE MODE |
| 3213 | DIO18, SDLC |
| 3214 | CLA CMA |
| 3215 | JMS WRQUAD /PUT 77 IN REVERSE CHECKSUM |
| 3216 | CLA CMA |
| 3217 | DCA CHKSUM |
| 3218 | WRLP, TAD I XBUFF /GLORY BE! THE ACTUAL WRITE! |
| 3219 | JMS WRQUAD |
| 3220 | ISZ XBUFF /BUMP CORE POINTER |
| 3221 | K77, 77 /ABOVE MAY SKIP |
| 3222 | ISZ DWORDS /DONE THIS BLOCK? |
| 3223 | JMP WRLP /NOT YET..LOOP A WHILE |
| 3224 | TAD XFUNCT /IS THE OPERATION FOR WDSBLK PER BLOCK? |
| 3225 | CLL RTR /IF NO, WRITE A 0 WORD |
| 3226 | SZL CLA |
| 3227 | |
| 3228 | JMS WRQUAD /WRITE A WORD OF 0 |
| 3229 | JMS GETCHK /DO THE CHECK SUM |
| 3230 | JMS WRQUAD /WRITE FORWARD CHECKSUM |
| 3231 | JMS WRQUAD /ALLOW CHECKSUM TO BE WRITTEN |
| 3232 | JMS WRQUAD /V3C WRITE REST OF CHECKSUM [PDP-6] |
| 3233 | JMP I CRWCOM |
| 3234 | |
| 3235 | |
| 3236 | READ, JMS RDQUAD |
| 3237 | JMS RDQUAD |
| 3238 | JMS RDQUAD /SKIP CONTROL WORDS |
| 3239 | AND K77 |
| 3240 | TAD K7700 /TACK 7700 ONTO CHECKSUM. |
| 3241 | DCA CHKSUM /CHECKSUM ONLY LOW 6 BITS ANYWAY |
| 3242 | RDLP, JMS RDQUAD |
| 3243 | JMS EQUFUN /COMPUT CHECKSUM AS WE GO |
| 3244 | DCA I XBUFF /IT GETS CONDENSED LATER |
| 3245 | ISZ XBUFF |
| 3246 | C300, 300 /PROTECTION |
| 3247 | ISZ DWORDS /DONE THIS OP? |
| 3248 | JMP RDLP /NO SUCH LUCK |
| 3249 | TAD XFUNCT /IF OP WAS FOR WDSBLK-1, READ AND |
| 3250 | CLL RTR /CHECKSUM THE LAST TAPE WORD |
| 3251 | SNL CLA |
| 3252 | JMP RDLP2 |
| 3253 | JMS RDQUAD /NOT NEEDED FOR WDSBLK/BLOCK |
| 3254 | JMS EQUFUN /CHECKSUM IT |
| 3255 | RDLP2, JMS RDQUAD /READ CHECKSUM |
| 3256 | AND K7700 |
| 3257 | JMS EQUFUN |
| 3258 | JMS GETCHK /GET SIX BIT CHECKSUM |
| 3259 | JMP I CRWCOM |
| 3260 | |
| 3261 | WRQUAD, 0 /WRITE OUT A 12 BIT WORD |
| 3262 | JMS EQUFUN /ADD THIS TO CHECKSUM |
| 3263 | DIO19, SDSQ /SKIP ON QUADLINE FLAG |
| 3264 | JMP .-1 |
| 3265 | DIO20, SDLD /LOAD DATA ONTO BUS |
| 3266 | CLA /SDLD DOESN'T CLEAR AC |
| 3267 | JMP I WRQUAD |
| 3268 | |
| 3269 | RDQUAD, 0 /READ A 12 BIT WORD |
| 3270 | DIO21, SDSQ |
| 3271 | JMP .-1 |
| 3272 | DIO22, SDRD /READ DATA |
| 3273 | JMP I RDQUAD |
| 3274 | |
| 3275 | \f |
| 3276 | EQUFUN, 0 /COMPUTE EQUIVALENCE CHECKSUM |
| 3277 | CMA |
| 3278 | DCA EQUTMP /ACTUALLY CHECKSUMS ON DECTAPE ARE |
| 3279 | TAD EQUTMP /EQUIVALENCE OF ALL WORDS IN A RECORD |
| 3280 | AND CHKSUM /SIX BITS AT A TIME. BUT SINCE EQUIVALENCE |
| 3281 | CIA /IS ASSOCIATIVE, WE CAN DO IT 12 |
| 3282 | CLL RAL /BITS AT A TIME AND CONDENSE LATER. |
| 3283 | TAD EQUTMP /THIS ROUTINE USES THESE IDENTITIES: |
| 3284 | TAD CHKSUM /A+B=(A.XOR.B)+2*(A.AND.B) |
| 3285 | DCA CHKSUM /A.EQU.B=.NOT.(A.XOR.B)=A.XOR.(.NOT.B) |
| 3286 | TAD EQUTMP /A.EQU.B=(A+(.NOT.B))-2*(A.AND.(.NOT.B)) |
| 3287 | CMA |
| 3288 | JMP I EQUFUN |
| 3289 | |
| 3290 | GETCHK, 0 /FORM 6 BIT CHECKSUM |
| 3291 | CLA |
| 3292 | TAD CHKSUM |
| 3293 | CMA |
| 3294 | CLL RTL |
| 3295 | RTL |
| 3296 | RTL |
| 3297 | JMS EQUFUN |
| 3298 | CLA CLL CML /FORCES LINK ON AT RWCOM |
| 3299 | TAD CHKSUM |
| 3300 | AND K7700 |
| 3301 | JMP I GETCHK |
| 3302 | |
| 3303 | CFATAL, FATAL |
| 3304 | CRWCOM, RWCOM |
| 3305 | XFUNCT, 0 |
| 3306 | CM32, -32 |
| 3307 | C1400, 1400 |
| 3308 | CHKSUM, 0 |
| 3309 | DWORDS, 0 |
| 3310 | XBUFF, 0 |
| 3311 | XWCT, 0 |
| 3312 | EQUTMP, 0 |
| 3313 | XUNIT, 0 |
| 3314 | PAGE |
| 3315 | \fFIELD 1 |
| 3316 | |
| 3317 | *2000 |
| 3318 | |
| 3319 | ZFREE, ZBLOCK 5 |
| 3320 | |
| 3321 | INCTR, 0 |
| 3322 | INHNDL, 0 |
| 3323 | INPTR, 0 |
| 3324 | |
| 3325 | DELPS1, 0 |
| 3326 | JMS I (200 |
| 3327 | 4 |
| 3328 | MOUTPU+1 |
| 3329 | 0 |
| 3330 | ISZ DELPS1 |
| 3331 | CIF CDF 0 |
| 3332 | JMP I DELPS1 |
| 3333 | |
| 3334 | ICHARP, 0 |
| 3335 | ISZ INJMP |
| 3336 | ISZ INCHCT |
| 3337 | INJMPP, JMP INJMP |
| 3338 | TAD INEOF |
| 3339 | SZA CLA |
| 3340 | JMP INEXIT |
| 3341 | INGBUF, TAD INCTR |
| 3342 | CLL |
| 3343 | TAD (INRECS |
| 3344 | SNL |
| 3345 | DCA INCTR |
| 3346 | SZL |
| 3347 | ISZ INEOF |
| 3348 | CLL CML CMA RTR |
| 3349 | RTR |
| 3350 | RTR |
| 3351 | TAD (INCTL+1 |
| 3352 | DCA INCTLW |
| 3353 | CIF 0 |
| 3354 | JMS I INHNDL |
| 3355 | INCTLW, 0 |
| 3356 | INBUFP, INBUF |
| 3357 | INREC, 0 |
| 3358 | JMP INERRX |
| 3359 | INBREC, TAD INREC |
| 3360 | TAD (INRECS |
| 3361 | DCA INREC |
| 3362 | TAD INCTLW |
| 3363 | AND (7600 |
| 3364 | CLL RAL |
| 3365 | TAD INCTLW |
| 3366 | AND (7600 |
| 3367 | CMA |
| 3368 | DCA INCHCT |
| 3369 | TAD INJMPP |
| 3370 | DCA INJMP |
| 3371 | TAD INBUFP |
| 3372 | DCA INPTR |
| 3373 | JMP ICHARP+1 |
| 3374 | |
| 3375 | INERRX, ISZ INEOF |
| 3376 | SMA CLA |
| 3377 | JMP INBREC |
| 3378 | INERR, CLL CLA CML RAR |
| 3379 | JMP INEXIT |
| 3380 | |
| 3381 | INJMP, HLT |
| 3382 | JMP INCHR1 |
| 3383 | JMP INCHR2 |
| 3384 | INCHR3, TAD INJMPP |
| 3385 | DCA INJMP |
| 3386 | TAD I INPTR |
| 3387 | AND (7400 |
| 3388 | CLL RTR |
| 3389 | RTR |
| 3390 | TAD INCTLW |
| 3391 | RTR |
| 3392 | RTR |
| 3393 | ISZ INPTR |
| 3394 | JMP INCOMN |
| 3395 | |
| 3396 | INCHR2, CDF 0 |
| 3397 | TAD I (MODE |
| 3398 | CDF 10 |
| 3399 | SMA SZA CLA |
| 3400 | JMP IC8A1 |
| 3401 | TAD I INPTR |
| 3402 | AND (7400 |
| 3403 | DCA INCTLW |
| 3404 | ISZ INPTR |
| 3405 | IC8A2, TAD I INPTR |
| 3406 | INCOMN, AND (377 |
| 3407 | TAD (-232 |
| 3408 | SNA |
| 3409 | JMP INEXIT |
| 3410 | TAD (232 |
| 3411 | ISZ ICHARP |
| 3412 | INEXIT, CIF CDF 0 |
| 3413 | JMP I ICHARP |
| 3414 | |
| 3415 | INEOF, 1 |
| 3416 | INCHCT, -1 |
| 3417 | |
| 3418 | INCHR1, CDF 0 |
| 3419 | TAD I (MODE |
| 3420 | CDF 10 |
| 3421 | SPA SNA CLA |
| 3422 | JMP IC8A2 |
| 3423 | IC8A3, TAD I INPTR |
| 3424 | ISZ INPTR |
| 3425 | JMP INEXIT-1 |
| 3426 | |
| 3427 | IC8A1, TAD INJMPP |
| 3428 | DCA INJMP |
| 3429 | ISZ INCHCT |
| 3430 | JMP IC8A3 |
| 3431 | PAGE |
| 3432 | \fOOPNPS, 0 |
| 3433 | TAD (MOUTPU+1 |
| 3434 | DCA OUBLK |
| 3435 | TAD I (MOUTPU |
| 3436 | JMS I (200 |
| 3437 | 3 |
| 3438 | OUBLK, 0 |
| 3439 | OUELEN, 0 |
| 3440 | JMP OUEFAL |
| 3441 | DCA OUCCNT |
| 3442 | JMS I (OUSETP |
| 3443 | ISZ OOPNPS |
| 3444 | OUEEXT, CIF CDF 0 |
| 3445 | JMP I OOPNPS |
| 3446 | |
| 3447 | OUEFAL, TAD I (MOUTPU |
| 3448 | AND (7760 |
| 3449 | SNA CLA |
| 3450 | JMP OUEEXT |
| 3451 | TAD I (MOUTPU |
| 3452 | AND (17 |
| 3453 | DCA I (MOUTPU |
| 3454 | JMP OOPNPS+1 |
| 3455 | |
| 3456 | OUHNDL, 0 |
| 3457 | |
| 3458 | OUTDMP, 0 |
| 3459 | DCA OUCTLW |
| 3460 | TAD OUCCNT |
| 3461 | SNA |
| 3462 | ISZ OUCTLW |
| 3463 | TAD OUBLK |
| 3464 | DCA OUREC |
| 3465 | TAD OUCTLW |
| 3466 | CLL RTL |
| 3467 | RTL |
| 3468 | RTL |
| 3469 | AND (17 |
| 3470 | TAD OUCCNT |
| 3471 | DCA OUCCNT |
| 3472 | TAD OUCCNT |
| 3473 | CLL CML |
| 3474 | TAD OUELEN |
| 3475 | SNL SZA CLA |
| 3476 | JMP I OUTDMP |
| 3477 | CIF 0 |
| 3478 | JMS I OUHNDL |
| 3479 | OUCTLW, 0 |
| 3480 | OUBUF |
| 3481 | OUREC, 0 |
| 3482 | JMP I OUTDMP |
| 3483 | ISZ OUTDMP |
| 3484 | JMP I OUTDMP |
| 3485 | |
| 3486 | OCLOSE, 0 |
| 3487 | CDF 0 |
| 3488 | TAD I (MODE |
| 3489 | CDF 10 |
| 3490 | SMA SZA CLA |
| 3491 | JMP OULLLP+2 |
| 3492 | JMS I (OTYPE |
| 3493 | AND (770 |
| 3494 | TAD (-PTP |
| 3495 | SZA CLA |
| 3496 | TAD (232 |
| 3497 | JMS I (OCHARP |
| 3498 | JMP OURET |
| 3499 | JMS I (OCHARP |
| 3500 | JMP OURET |
| 3501 | OULLLP, JMS I (OCHARP |
| 3502 | JMP OURET |
| 3503 | JMS I (OTYPE |
| 3504 | SPA CLA |
| 3505 | TAD (100 |
| 3506 | TAD (77 |
| 3507 | AND I (OUDWCT |
| 3508 | SZA CLA |
| 3509 | JMP OULLLP |
| 3510 | TAD I (OUDWCT |
| 3511 | TAD (OUCTL&3700 |
| 3512 | SNA |
| 3513 | JMP OUDUMP |
| 3514 | TAD (4010 |
| 3515 | JMS OUTDMP |
| 3516 | JMP OURET |
| 3517 | OUDUMP, TAD I (MOUTPU |
| 3518 | JMS I (200 |
| 3519 | 4 |
| 3520 | MOUTPU+1 |
| 3521 | OUCCNT, 0 |
| 3522 | SKP |
| 3523 | ISZ OCLOSE |
| 3524 | OURET, CIF CDF 0 |
| 3525 | JMP I OCLOSE |
| 3526 | PAGE |
| 3527 | \fOUTEMP, 0 |
| 3528 | |
| 3529 | OUJMP, HLT |
| 3530 | JMP OCHR1 |
| 3531 | JMP OCHR2 |
| 3532 | OCHR3, TAD OUTEMP |
| 3533 | CLL RTL |
| 3534 | RTL |
| 3535 | AND (7400 |
| 3536 | TAD I OUPOLD |
| 3537 | DCA I OUPOLD |
| 3538 | TAD OUTEMP |
| 3539 | CLL RTR |
| 3540 | RTR |
| 3541 | RAR |
| 3542 | AND (7400 |
| 3543 | TAD I OUPTR |
| 3544 | OC8A1, DCA I OUPTR |
| 3545 | TAD OUJMPP |
| 3546 | DCA OUJMP |
| 3547 | ISZ OUPTR |
| 3548 | ISZ OUDWCT |
| 3549 | JMP OUCOMN |
| 3550 | TAD (OUCTL |
| 3551 | JMS I (OUTDMP |
| 3552 | JMP OUCRET |
| 3553 | JMS OUSETP |
| 3554 | JMP OUCOMN |
| 3555 | |
| 3556 | OUSETP, 0 |
| 3557 | TAD (OUCTL&3700 |
| 3558 | CIA |
| 3559 | DCA OUDWCT |
| 3560 | TAD (OUBUF |
| 3561 | DCA OUPTR |
| 3562 | TAD OUJMPP |
| 3563 | DCA OUJMP |
| 3564 | JMP I OUSETP |
| 3565 | |
| 3566 | OCHARP, 0 |
| 3567 | DCA OUTEMP |
| 3568 | RDF |
| 3569 | TAD (CIF CDF 0 |
| 3570 | DCA OUCRET |
| 3571 | CDF 0 |
| 3572 | TAD I (MODE |
| 3573 | SMA SZA CLA |
| 3574 | JMP .+4 |
| 3575 | TAD OUTEMP |
| 3576 | AND (377 |
| 3577 | DCA OUTEMP |
| 3578 | CDF 10 |
| 3579 | ISZ OUJMP |
| 3580 | OUJMPP, JMP OUJMP |
| 3581 | |
| 3582 | OCHR2, CDF 0 |
| 3583 | TAD I (MODE |
| 3584 | CDF 10 |
| 3585 | SMA SZA CLA |
| 3586 | JMP OC8A2 |
| 3587 | TAD OUPTR |
| 3588 | DCA OUPOLD |
| 3589 | ISZ OUPTR |
| 3590 | OCHR1, TAD OUTEMP |
| 3591 | DCA I OUPTR |
| 3592 | OUCOMN, ISZ OCHARP |
| 3593 | OUCRET, CIF CDF 0 |
| 3594 | JMP I OCHARP |
| 3595 | |
| 3596 | OUPOLD, 0 |
| 3597 | OUPTR, 0 |
| 3598 | OUDWCT, 0 |
| 3599 | |
| 3600 | OTYPE, 0 |
| 3601 | TAD I (MOUTPU |
| 3602 | AND (17 |
| 3603 | TAD (DCB-1 |
| 3604 | DCA OUSETP |
| 3605 | TAD I OUSETP |
| 3606 | JMP I OTYPE |
| 3607 | |
| 3608 | CDINXX, ZBLOCK 5 |
| 3609 | |
| 3610 | OC8A2, ISZ OUPTR |
| 3611 | TAD OUTEMP |
| 3612 | JMP OC8A1 |
| 3613 | PAGE |
| 3614 | \f$-$-$ |
| 3615 | \f |