1 /1.1 OS8 BINARY MAP (BITMAP) V4 2 / 3 / 4 / 5 / 6 / 7 / 8 / 9 / 10 / 11 /COPYRIGHT (C) 1972,1973,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 /NO CHANGES MADE FOR OS/8 V3C 46 47 VERSION= 4 48 SUBVER= 01 /LOCATED AT "VERLOC" AS 60+VERSION^100+SUBVER 49 50 XR= 10 51 LOADXR= 11 52 XFIELD= 20 /HOLDS FIELD WE ARE "STORING" INTO 53 ORIGIN= 21 /HOLDS CURRENT ORIGIN 54 OUT= 22 55 B1= 23 56 B3= 24 57 C1= 25 58 COLCTR= 27 59 WD= 30 60 WD1= 31 61 WD2= 32 62 FILPTR= 33 63 FLDNO= 35 64 65 /OS/8 EQUIVALENCES 66 67 MPARAM= 7643 68 JSBITS= 7746 69 MIFILE= 7617 70 PTP= 20 71 DCB= 7760 72 73 /BUFFER AND DEVICE HANDLER ASSIGNMENTS 74 75 OUCTL= 4200 76 OUBUF= 6000 77 OUDEVH= 6400 78 FIELD 1 79 *2000 80 81 012000 5205 BITMAP, JMP CALLCD 82 012001 5210 JMP NOCD /CHAINED ENTRY POINT 83 012002 1777 NEXTCD, TAD I (MPARAM-1 84 012003 7710 SPA CLA 85 012004 5776 JMP I (BUILD /ALTMODE TERMINATES INPUT, STARTS OUTPUT 86 012005 4775 CALLCD, JMS I (200 87 012006 0005 5 /COMMAND DECODE 88 012007 0216 0216 /DEFAULT EXTENSION IS .BN 89 012010 1374 NOCD, TAD (LDRPCH 90 012011 3022 DCA OUT 91 012012 2232 ISZ ONCE 92 012013 5222 JMP CDCOOL 93 012014 7346 CLA CLL CMA RTL 94 012015 6201 CDF 0 95 012016 0773 AND I (JSBITS /REMOVE "DON'T CARE ABOUT CD AREA" BIT 96 012017 3773 DCA I (JSBITS 97 012020 6211 CDF 10 98 012021 4772 JMS I (CTINIT 99 012022 1771 CDCOOL, TAD I (MPARAM+1 100 012023 0370 AND (100 101 012024 7640 SZA CLA /IS /R SWITCH ON? 102 012025 4772 JMS I (CTINIT /YES - RE-INITIALIZE LOADER TABLES 103 012026 7400 LD7400, 7400 104 012027 1367 TAD (MIFILE 105 012030 3033 DCA FILPTR 106 012031 5766 JMP I (NEWFIL 107 012032 7777 ONCE, -1 108 /SUBROUTINE TO "LOAD" A WORD. 109 /INCREMENTS TWO-BIT QUANTITY CORRESPONDING TO THE WORD. 110 /FIELD 0 IS MAPPED INTO WORDS 00000-01377,FIELD 1 INTO 01400-02777 111 /FIELDS 4-7 ARE MAPPED INTO 20000-25777 112 113 012033 0000 LOADWD, 0 /ENTER WITH LOW 4 BITS OF ORIGIN IN AC 114 012034 7104 CLL RAL 115 012035 1365 TAD (BITTBL-1 116 012036 3011 DCA LOADXR 117 012037 1411 TAD I LOADXR /GET WORD IN THE 3-WORD SET 118 012040 3305 DCA LDOFST /(WHICH MAPS 16 WORDS) 119 012041 1411 TAD I LOADXR /GET THE LOW ORDER BIT OF THE PAIR 120 012042 3306 DCA LDBIT /WHICH MAPS THIS WORD 121 012043 1021 TAD ORIGIN /NOW FIND OUT WHICH TRIPLEWORD TO USE 122 012044 7006 RTL 123 012045 7006 RTL 124 012046 0364 AND (7407 125 012047 1020 TAD XFIELD 126 012050 7006 RTL 127 012051 7006 RTL 128 012052 6201 CDF 0 129 012053 7006 RTL 130 012054 7004 RAL 131 012055 7430 SZL 132 012056 6221 CDF20Y, CDF 20 /NOP'ED IF NO FIELD 2 IN MACHINE 133 012057 7112 CLL RTR /FIELDS 4-7 MAPPED IN FIELD 2 134 012060 3307 DCA LTEMP 135 012061 1307 TAD LTEMP 136 012062 7104 CLL RAL 137 012063 1307 TAD LTEMP 138 012064 1305 TAD LDOFST 139 012065 3307 DCA LTEMP 140 012066 1306 TAD LDBIT 141 012067 7104 CLL RAL 142 012070 1306 TAD LDBIT 143 012071 0707 AND I LTEMP 144 012072 7650 SNA CLA /IF COUNT IS AT 3 (MAX), 145 012073 5633 JMP I LOADWD /DON'T INCREMENT IT 146 012074 1306 TAD LDBIT 147 012075 7041 CIA 148 012076 1707 TAD I LTEMP 149 012077 3707 DCA I LTEMP 150 012100 6214 RDF 151 012101 6211 CDF 10 152 012102 7640 SZA CLA 153 012103 3763 DCA I (F4FLAG /SEARCH FIELD 2 IF WE STORED THERE 154 012104 5633 JMP I LOADWD 155 012105 0000 LDOFST, 0 156 012106 0000 LDBIT, 0 157 012107 0000 LTEMP, 0 158 /BIT TABLE FOR MAPPING 159 160 012110 0000 BITTBL, 0;2000;0;400;0;100;0;20;0;4;0;1 012111 2000 012112 0000 012113 0400 012114 0000 012115 0100 012116 0000 012117 0020 012120 0000 012121 0004 012122 0000 012123 0001 161 012124 0001 1;2000;1;400;1;100;1;20;1;4;1;1 012125 2000 012126 0001 012127 0400 012130 0001 012131 0100 012132 0001 012133 0020 012134 0001 012135 0004 012136 0001 012137 0001 162 012140 0002 2;2000;2;400;2;100;2;20;2;4;2;1 012141 2000 012142 0002 012143 0400 012144 0002 012145 0100 012146 0002 012147 0020 012150 0002 012151 0004 012152 0002 012153 0001 163 012163 3420 PAGE 012164 7407 012165 2107 012166 2200 012167 7617 012170 0100 012171 7644 012172 2736 012173 7746 012174 2620 012175 0200 012176 3400 012177 7642 164 012200 1377 NEWFIL, TAD (7001 165 012201 3217 DCA HANDLR 166 012202 1433 TAD I FILPTR 167 012203 0376 AND (7760 168 012204 7440 SZA /LENGTH OF 256 BLOCKS IMPLIES AT LEAST 256 169 012205 1375 TAD (17 170 012206 7132 CLL CML RTR 171 012207 7012 RTR 172 012210 3336 DCA RCDCNT 173 012211 1433 TAD I FILPTR 174 012212 2033 ISZ FILPTR 175 012213 7450 SNA 176 012214 5774 JMP I (NEXTCD /FILE POINTER = 0 MEANS NO MORE INPUT FILES 177 012215 4773 JMS I (200 178 012216 0001 1 /ASSIGN 179 012217 7001 HANDLR, 7001 /LOAD INTO 7000 IF NOT ALREADY LOADED 180 012220 5772 JMP I (IOERR 181 012221 1433 TAD I FILPTR 182 012222 3264 DCA RECNO 183 012223 2033 ISZ FILPTR 184 012224 7240 CLA CMA 185 012225 3333 DCA CHCNT 186 012226 3332 DCA REOF 187 012227 1771 TAD I (MPARAM /TEST FOR /I 188 012230 0370 AND (10 189 012231 7650 SNA CLA 190 012232 5767 JMP I (LOADER /I IS NOT ON 191 012233 5766 JMP I (OERR /NO! 192 012234 0000 GETCH, 0 /GET-NEXT-INPUT-CHARACTER ROUTINE 193 012235 4765 JMS I (CTCTST 194 012236 2300 ISZ JMPGET 195 012237 2333 ISZ CHCNT 196 012240 5300 JMPX, JMP JMPGET 197 012241 1332 TAD REOF 198 012242 7640 SZA CLA 199 012243 5634 JMP I GETCH /EOF REACHED BEFORE LOGICAL END - ERROR 200 012244 7100 CLL 201 012245 1336 TAD RCDCNT 202 012246 1364 TAD (6 203 012247 7420 SNL 204 012250 3336 DCA RCDCNT 205 012251 7430 SZL 206 012252 2332 ISZ REOF 207 012253 7172 CLL CMA CML RTR 208 012254 7012 RTR 209 012255 7012 RTR 210 012256 1363 TAD (1411 211 012257 3262 DCA RCTL 212 012260 6202 CIF 0 213 012261 4617 JMS I HANDLR 214 012262 0000 RCTL, 0 /READ RECORDS INTO FIELD 1 215 012263 4000 PBUFFR, BUFFER 216 012264 0000 RECNO, 0 217 012265 5326 JMP RERROR 218 012266 1264 TAD RECNO 219 012267 1364 TAD (6 220 012270 3264 DCA RECNO 221 012271 1362 TAD (-4401 222 012272 3333 DCA CHCNT 223 012273 1263 TAD PBUFFR 224 012274 3334 DCA CHPTR 225 012275 1240 TAD JMPX 226 012276 3300 DCA JMPGET 227 012277 5235 JMP GETCH+1 228 012300 5300 JMPGET, JMP . 229 012301 5322 JMP CHAR1 230 012302 5316 JMP CHAR2 231 012303 1240 TAD JMPX 232 012304 3300 DCA JMPGET 233 012305 1734 TAD I CHPTR 234 012306 0361 AND (7400 235 012307 7112 CLL RTR 236 012310 7012 RTR 237 012311 1335 TAD CHTMP 238 012312 7012 RTR 239 012313 7012 RTR 240 012314 2334 ISZ CHPTR 241 012315 5323 JMP GCHCOM 242 012316 1734 CHAR2, TAD I CHPTR 243 012317 0361 AND (7400 244 012320 3335 DCA CHTMP 245 012321 2334 ISZ CHPTR 246 012322 1734 CHAR1, TAD I CHPTR 247 012323 0360 GCHCOM, AND (377 248 012324 2234 ISZ GETCH 249 012325 5634 JMP I GETCH 250 012326 7710 RERROR, SPA CLA 251 012327 5772 JMP I (IOERR /AN ACTUAL READ ERROR - AMAZING! 252 012330 2332 ISZ REOF 253 012331 5266 JMP RECNO+2 254 012332 0000 REOF, 0 255 012333 0000 CHCNT, 0 256 012334 0000 CHPTR, 0 257 012335 0000 CHTMP, 0 258 012336 0000 RCDCNT, 0 259 012337 0000 ZTST, 0 /TEST A BLOCK OF THE BITMAP FOR ALL ONES 260 012340 3024 DCA B3 /LENGTH OF THE BLOCK IN AC 261 012341 1011 TAD LOADXR 262 012342 3010 DCA XR 263 012343 7240 STA 264 012344 4757 JMS I (XCDF 265 012345 0410 AND I XR 266 012346 2024 ISZ B3 267 012347 5345 JMP .-2 268 012350 6211 CDF 10 269 012351 7040 CMA 270 012352 7440 SZA 271 012353 5737 JMP I ZTST 272 012354 1010 TAD XR 273 012355 3011 DCA LOADXR /UPDATE LOADXR IF ALL ZEROES 274 012356 5737 JMP I ZTST 275 012357 3540 PAGE 012360 0377 012361 7400 012362 3377 012363 1411 012364 0006 012365 3334 012366 2730 012367 2411 012370 0010 012371 7643 012372 2652 012373 0200 012374 2002 012375 0017 012376 7760 012377 7001 276 012400 4273 ITSOVR, JMS ASSEMB /GET THE CHECKSUM 277 012401 7041 CIA 278 012402 1332 TAD LCKSUM 279 012403 7640 SZA CLA /IS IT GOOD? 280 012404 5777 JMP I (BADCKS /NO 281 012405 1776 TAD I (MPARAM+1 282 012406 0264 AND L40 283 012407 7650 SNA CLA /IF /S IS NOT SET, 284 012410 5775 JMP I (NEWFIL /ONLY ONE PROGRAM PER FILE. 285 012411 3332 LOADER, DCA LCKSUM 286 012412 4337 JMS GETFLD 287 012413 3020 DCA XFIELD 288 012414 1374 TAD (200 289 012415 3021 DCA ORIGIN /INITIALIZE FOR PROGRAM 290 012416 4773 JMS I (GETCH 291 012417 5775 JMP I (NEWFIL 292 012420 7450 SNA 293 012421 5216 JMP .-3 294 012422 1372 TAD (-200 /FIND SOME LEADER 295 012423 7640 SZA CLA 296 012424 5212 JMP LOADER+1 297 012425 4773 LEADER, JMS I (GETCH 298 012426 5775 JMP I (NEWFIL 299 012427 7450 SNA 300 012430 5212 JMP LOADER+1 301 012431 1372 TAD (-200 /FIND END OF LEADER 302 012432 7450 SNA 303 012433 5225 JMP LEADER 304 012434 7500 NEWWD, SMA /FIELD SETTING? 305 012435 5302 JMP FIELDW /YES 306 012436 1374 TAD (200 307 012437 3031 DCA WD1 /STORE 1ST CHAR 308 012440 4773 JMS I (GETCH 309 012441 5771 JMP I (BADINP 310 012442 3032 DCA WD2 /2D CHAR 311 012443 4773 JMS I (GETCH 312 012444 5771 JMP I (BADINP 313 012445 1372 TAD (-200 /IF THIS IS LEADER, WE HAVE THE CHECKSUM 314 012446 7450 SNA 315 012447 5200 JMP ITSOVR 316 012450 3030 DCA WD 317 012451 4273 JMS ASSEMB 318 012452 7420 SNL /ORIGIN OR DATA? 319 012453 5256 JMP DATAWD /DATA 320 012454 3021 DCA ORIGIN 321 012455 5265 JMP GETNXT 322 012456 7200 DATAWD, CLA 323 012457 1021 TAD ORIGIN 324 012460 0370 AND (17 325 012461 4767 JMS I (LOADWD /GO SET THE CORRECT BIT(S) 326 012462 6211 CDF 10 327 012463 2021 ISZ ORIGIN 328 012464 0040 L40, 40 329 012465 1031 GETNXT, TAD WD1 330 012466 1032 TAD WD2 331 012467 1332 TAD LCKSUM 332 012470 3332 DCA LCKSUM 333 012471 1030 TAD WD 334 012472 5234 JMP NEWWD 335 336 012473 0000 ASSEMB, 0 337 012474 1031 TAD WD1 338 012475 7106 CLL RTL 339 012476 7006 RTL 340 012477 7006 RTL 341 012500 1032 TAD WD2 342 012501 5673 JMP I ASSEMB 343 344 012502 1366 FIELDW, TAD (-32 345 012503 7450 SNA 346 012504 5333 JMP CTLZ 347 012505 1365 TAD (-46 348 012506 7510 SPA 349 012507 5325 JMP NOTXP 350 012510 3031 DCA WD1 351 012511 1031 TAD WD1 352 012512 0364 AND (7 353 012513 7640 SZA CLA 354 012514 5325 JMP NOTXP 355 012515 1031 TAD WD1 356 012516 0363 AND (70 357 012517 3020 DCA XFIELD 358 012520 4773 JMS I (GETCH 359 012521 5771 JMP I (BADINP 360 012522 1372 TAD (-200 361 012523 7440 SZA 362 012524 5234 JMP NEWWD 363 012525 7200 NOTXP, CLA 364 012526 1332 TAD LCKSUM 365 012527 7650 SNA CLA 366 012530 5211 JMP LOADER 367 012531 5771 JMP I (BADINP 368 012532 0000 LCKSUM, 0 369 370 012533 1332 CTLZ, TAD LCKSUM 371 012534 7640 SZA CLA 372 012535 5771 JMP I (BADINP 373 012536 5775 JMP I (NEWFIL 374 012537 0000 GETFLD, 0 /ROUTINE TO CHECK FOR OPTION 0-7 375 012540 3025 DCA C1 /AND RETURN LOWEST-NUMBERED VALUE 376 012541 1762 TAD I (MPARAM+2 377 012542 0361 AND (1774 378 012543 7450 SNA 379 012544 5737 JMP I GETFLD 380 012545 7006 RTL 381 012546 7004 RAL 382 012547 2025 ISZ C1 383 012550 7420 SNL 384 012551 5346 JMP .-3 385 012552 7240 CLA CMA 386 012553 1025 TAD C1 387 012554 7106 CLL RTL 388 012555 7004 RAL 389 012556 5737 JMP I GETFLD 390 012561 1774 PAGE 012562 7645 012563 0070 012564 0007 012565 7732 012566 7746 012567 2033 012570 0017 012571 2661 012572 7600 012573 2234 012574 0200 012575 2200 012576 7644 012577 2670 391 012600 0000 ERPCH, 0 392 012601 0377 AND (77 /GET LOW ORDER 6 BITS 393 012602 7440 SZA 394 012603 5213 JMP NZCHAR 395 012604 4226 JMS ERR 396 012605 5440 FILMSG, TEXT /, FILE 0/ 012606 0611 012607 1405 012610 4060 012611 0000 397 012612 5776 JMP I (BITMAP 398 012613 1375 NZCHAR, TAD (240 399 012614 0377 AND (77 400 012615 1375 TAD (240 401 012616 4422 JMS I OUT /PRINT 402 012617 5600 JMP I ERPCH /AND RETURN 403 404 012620 0000 LDRPCH, 0 405 012621 6046 TLS 406 012622 6041 TSF 407 012623 5222 JMP .-1 408 012624 7200 CLA 409 012625 5620 JMP I LDRPCH 410 411 012626 0000 ERR, 0 412 012627 7200 CLA 413 012630 6211 CDF 10 414 012631 1774 TAD I (FILPTR /ZERO CHAR GETS REPLACED BY "FILE #" 415 012632 1373 TAD (322 /MAGIC NUMBER 416 012633 7130 CLL CML RAR /AC NOW CONTAINS " #" 417 012634 3210 DCA FILMSG+3 418 012635 1626 ERRLUP, TAD I ERR 419 012636 7450 SNA 420 012637 5250 JMP EOMESG /MESSAGE MUST BE EVEN NUMBER OF CHARS LONG 421 012640 7012 RTR 422 012641 7012 RTR 423 012642 7012 RTR 424 012643 4200 JMS ERPCH 425 012644 1626 TAD I ERR 426 012645 4200 JMS ERPCH 427 012646 2226 ISZ ERR 428 012647 5235 JMP ERRLUP 429 012650 4772 EOMESG, JMS I (ECRLF 430 012651 5626 JMP I ERR /RETURN 431 012652 4226 IOERR, JMS ERR 432 012653 1157 TEXT %I/O ERROR% 012654 1740 012655 0522 012656 2217 012657 2200 433 012660 5776 JMP I (BITMAP 434 012661 4226 BADINP, JMS ERR 435 012662 0201 TEXT /BAD INPUT/ 012663 0440 012664 1116 012665 2025 012666 2400 436 012667 5776 JMP I (BITMAP 437 012670 4226 BADCKS, JMS ERR 438 012671 4002 TEXT / BAD CHECKSUM/ 012672 0104 012673 4003 012674 1005 012675 0313 012676 2325 012677 1500 439 012700 5776 JMP I (BITMAP 440 012701 4226 NULERR, JMS ERR 441 012702 1617 TEXT /NO INPUT/ 012703 4011 012704 1620 012705 2524 012706 0000 442 012707 5776 JMP I (BITMAP 443 012710 1371 OUTERR, TAD (LDRPCH 444 012711 3022 DCA OUT 445 012712 4226 JMS ERR 446 012713 0522 TEXT /ERROR ON OUTPUT DEVICE/ 012714 2217 012715 2240 012716 1716 012717 4017 012720 2524 012721 2025 012722 2440 012723 0405 012724 2611 012725 0305 012726 0000 447 012727 5770 JMP I (CALLCD 448 012730 4226 OERR, JMS ERR 449 012731 1617 TEXT %NO /I!% 012732 4057 012733 1141 012734 0000 450 012735 5776 JMP I (BITMAP 451 012736 0000 CTINIT, 0 452 012737 7332 CLA CLL CML RTR 453 012740 3025 DCA C1 454 012741 3023 DCA B1 455 012742 3000 DCA 0 /STRAIGHT-8 CROCK 456 012743 6201 CTINLP, CDF 0 457 012744 7240 CLA CMA 458 012745 3423 DCA I B1 459 012746 6221 CDF20X, CDF 20 460 012747 7240 STA 461 012750 3423 DCA I B1 462 012751 5356 JMP CTFLD2 /*** THIS INSTR SKIPPED IF 8K PDP-8!!! 463 012752 3346 DCA CDF20X /DUE TO BUG IN EXTENDED MEMORY CONTROLLER 464 012753 1227 TAD ERR+1 /A CLA 465 012754 6211 CDF 10 466 012755 3767 DCA I (CDF20Y 467 012756 2023 CTFLD2, ISZ B1 468 012757 2025 ISZ C1 469 012760 5343 JMP CTINLP 470 012761 6211 CDF 10 471 012762 5736 JMP I CTINIT 472 012767 2056 PAGE 012770 2005 012771 2620 012772 3762 012773 0322 012774 0033 012775 0240 012776 2000 012777 0077 473 /GENERAL OUTPUT ROUTINES 474 475 /JMS I (OOPEN INITIALIZES THE OUTPUT ROUTINE 476 /ERROR RETURN AC>0 IF NO OUTPUT DEVICE/FILE, AC<0 IF ERROR 477 478 /JMS I (OCHAR OUTPUTS A CHARACTER 479 /ERROR RETURN OUTPUT ERROR OR TOO MUCH OUTPUT 480 481 /JMS I (OCLOSE CLOSES THE OUTPUT FILE 482 /ERROR RETURN FILE TOO LARGE TO BE CLOSED OR OUTPUT ERROR 483 484 /JMS I (OTYPE RETURNS DCB WORD OF OUTPUT DEVICE IN AC 485 486 487 488 /PARAMETERS NEEDED: 489 490 /OUBUF= ADDRESS OF OUTPUT BUFFER 491 /OUCTL= OUTPUT BUFFER CONTROL WORD (MUST BE NEGATIVE) 492 /OUDEVH= ADDRESS OF PAGE FOR OUTPUT HANDLER 493 494 /ASSUMES I/O MONITOR IS RESIDENT IN CORE. 495 /CAN BE CALLED FROM ANY FIELD WITH BUFFERS IN ANY FIELD. 496 497 OUFLD= OUCTL&70 498 013000 0000 OOPEN, 0 499 013001 7600 OU7600, 7600 500 013002 1344 TAD OU7601 501 013003 3226 DCA OUBLK 502 013004 1377 TAD (OUDEVH+1 503 013005 3221 DCA OUHNDL 504 013006 6211 CDF 10 505 013007 1776 TAD I (7604 506 013010 7450 SNA /IF OUTPUT HAS NO EXTENSION, 507 013011 1375 TAD (1520 /GIVE IT THE EXTENSION .MP 508 013012 3776 DCA I (7604 509 013013 1601 OUASGN, TAD I OU7600 /GET DEVICE NUMBER WORD OF OUTPUT FILE ENTRY 510 013014 0374 AND (17 /STRIP OFF ANY LENGTH INFO 511 013015 7450 SNA /IS THERE AN OUTPUT DEVICE? 512 013016 5245 JMP USETTY /NO - INHIBIT OUTPUT 513 013017 4773 JMS I (200 514 013020 0001 1 /ASSIGN, FETCH HANDLER 515 013021 0000 OUHNDL, 0 /OUTPUT DEVICE HANDLER ENTRY 516 013022 7402 HLT /HUH? 517 013023 1601 OUENTR, TAD I OU7600 518 013024 4773 JMS I (200 519 013025 0003 3 /ENTER OUTPUT FILE 520 013026 7601 OUBLK, 7601 /REPLACED WITH STARTING BLOCK 521 013027 0000 OUELEN, 0 /REPLACED WITH LENGTH OF HOLE 522 013030 5235 JMP OEFAIL /FAILED - MAYBE WE ASKED TOO MUCH 523 013031 3345 DCA OUCCNT 524 013032 4772 JMS I (OUSETP 525 013033 6213 CDF CIF 10 /RESTORE CALLING FIELDS 526 013034 5600 JMP I OOPEN 527 013035 1601 OEFAIL, TAD I OU7600 528 013036 0371 AND (7760 /GET REQUESTED LENGTH 529 013037 7650 SNA CLA /WAS IT AN INDEFINITE REQUEST 530 013040 5770 JMP I (OUTERR /YES - CANNOT ENTER THE FILE 531 013041 1601 TAD I OU7600 532 013042 0374 AND (17 /MAKE THE REQUESTED LENGTH ZERO 533 013043 3601 DCA I OU7600 534 013044 5223 JMP OUENTR /TRY, TRY AGAIN 535 013045 3251 USETTY, DCA TTYNO 536 013046 4773 JMS I (200 537 013047 0012 12 538 013050 5524 5524 539 013051 0000 TTYNO, 0 540 013052 0000 0 541 013053 7402 HLT /NO TELETYPE! 542 013054 1251 TAD TTYNO 543 013055 3601 DCA I OU7600 544 013056 5213 JMP OUASGN 545 013057 0000 OUTDMP, 0 546 013060 3305 DCA OUCTLW /STORE THE CONTROL WORD 547 013061 6211 CDF 10 548 013062 1345 TAD OUCCNT 549 013063 7450 SNA 550 013064 2305 ISZ OUCTLW 551 013065 1226 TAD OUBLK 552 013066 3307 DCA OUREC /COMPUTE THE STARTING BLOCK NUMBER OF THIS TRANSFER 553 013067 1305 TAD OUCTLW 554 013070 7106 CLL RTL 555 013071 7006 RTL 556 013072 7006 RTL 557 013073 0374 AND (17 /COMPUTE THE NUMBER OF RECORDS 558 013074 1345 TAD OUCCNT /UPDATE THE NUMBER OF BLOCKS IN THE FILE 559 013075 3345 DCA OUCCNT 560 013076 1345 TAD OUCCNT 561 013077 7120 CLL CML 562 013100 1227 TAD OUELEN 563 013101 7660 SNL SZA CLA /DOES THE LENGTH EXCEED THE GIVEN LENGTH? 564 013102 5770 JMP I (OUTERR /YES - SIGNAL OUTPUT ERROR 565 013103 6202 CIF 0 566 013104 4621 JMS I OUHNDL 567 013105 0000 OUCTLW, 0 568 013106 6000 OUBUF 569 013107 0000 OUREC, 0 570 013110 5770 JMP I (OUTERR 571 013111 5657 JMP I OUTDMP 572 013112 0000 OCLOSE, 0 573 013113 6211 CDF 10 574 013114 4767 JMS I (OTYPE 575 013115 0366 AND (770 576 013116 1371 TAD (-PTP /CHECK FOR PAPER TAPE PUNCH OUTPUT 577 013117 7640 SZA CLA /AND SKIP ^Z OUTPUT IF TRUE 578 013120 1365 TAD (232 /OUTPUT A ^Z 579 013121 4764 JMS I (OCHAR 580 013122 4764 JMS I (OCHAR 581 013123 4764 FILLLP, JMS I (OCHAR 582 013124 4767 JMS I (OTYPE /GET TYPE OF OUTPUT DEVICE 583 013125 7710 SPA CLA 584 013126 1363 TAD (100 /IF ITS A DIRECTORY DEVICE FORCE A RECORD 585 013127 1362 TAD (77 /BOUNDARY - OTHERWISE A HALF-RECORD 586 013130 0761 AND I (OUDWCT 587 013131 7640 SZA CLA /UP TO THE BOUNDARY YET? 588 013132 5323 JMP FILLLP /NO - FILL WITH ZEROS 589 013133 1761 TAD I (OUDWCT /GET DOUBLEWORD COUNT LEFT 590 013134 1373 TAD (OUCTL&3700 591 013135 7450 SNA /A FULL WRITE LEFT? 592 013136 5341 JMP NODUMP /YES - DON'T DO IT - THE ^Z IS ALREADY OUT 593 013137 1360 TAD (4000+OUFLD /PUT IN THE FIELD BITS AND THE WRITE BIT 594 013140 4257 JMS OUTDMP 595 013141 1601 NODUMP, TAD I OU7600 /GET THE DEVICE NUMBER 596 013142 4773 JMS I (200 597 013143 0004 4 /CLOSE THE OUTPUT FILE 598 013144 7601 OU7601, 7601 /POINTER TO THE OUTPUT FILE NAME 599 013145 0000 OUCCNT, 0 600 013146 5770 JMP I (OUTERR 601 013147 6213 CDF CIF 10 /RESTORE CALLING FIELDS 602 013150 5712 JMP I OCLOSE 603 013160 4000 PAGE 013161 3264 013162 0077 013163 0100 013164 3210 013165 0232 013166 0770 013167 3265 013170 2710 013171 7760 013172 3200 013173 0200 013174 0017 013175 1520 013176 7604 013177 6401 604 OUCTMP= OUCTL&3700 605 013200 0000 OUSETP, 0 /ROUTINE TO INITIALIZE CHARACTER POINTERS 606 013201 1377 TAD (-OUCTMP /GET SIZE OF BUFFER IN DOUBLEWORDS 607 013202 3264 DCA OUDWCT 608 013203 1376 TAD (OUBUF 609 013204 3262 DCA OUPTR /INITIALIZE WORD POINTER 610 013205 1263 TAD OUJMPE 611 013206 3220 DCA OUJMP /INITIALIZE THREE-WAY CHARACTER SWITCH 612 013207 5600 JMP I OUSETP 613 614 013210 0000 OCHAR, 0 615 013211 0375 AND (377 616 013212 3260 DCA OUTEMP 617 013213 6214 RDF 618 013214 1343 TAD CDIF0 619 013215 3256 DCA OUCRET 620 013216 6201 CDF OUFLD /SET DATA FIELD TO BUFFER'S FIELD 621 013217 2220 ISZ OUJMP /BUMP THE CHARACTER SWITCH 622 013220 7402 OUJMP, HLT /THREE WAY CHARACTER SWITCH 623 013221 5254 JMP OCHAR1 624 013222 5251 JMP OCHAR2 625 013223 1260 OCHAR3, TAD OUTEMP 626 013224 7106 CLL RTL 627 013225 7006 RTL 628 013226 0374 AND (7400 629 013227 1661 TAD I OUPOLD 630 013230 3661 DCA I OUPOLD /UPDATE FIRST WORD OF TWO WITH HIGH 631 013231 1260 TAD OUTEMP /ORDER 4 BITS OF THIRD CHAR 632 013232 7112 CLL RTR 633 013233 7012 RTR 634 013234 7010 RAR 635 013235 0374 AND (7400 636 013236 1662 TAD I OUPTR 637 013237 3662 DCA I OUPTR /UPDATE SECOND WORD FROM LOW ORDER 4 BITS 638 013240 1263 TAD OUJMPE 639 013241 3220 DCA OUJMP /RESET SWITCH 640 013242 2262 ISZ OUPTR 641 013243 2264 ISZ OUDWCT /BUMP DOUBLEWORD COUNTER EVERY 3 CHARS 642 013244 5256 JMP OUCRET 643 013245 1373 TAD (OUCTL /LOAD CONTROL WORD FOR A FULL WRITE 644 013246 4772 JMS I (OUTDMP /DUMP THE BUFFER 645 013247 4200 JMS OUSETP /RE-INITIALIZE THE POINTERS 646 013250 5256 JMP OUCRET 647 013251 1262 OCHAR2, TAD OUPTR 648 013252 3261 DCA OUPOLD /SAVE POINTER TO FIRST WORD OF TWO 649 013253 2262 ISZ OUPTR /BUMP WORD POINTER TO SECOND WORD 650 013254 1260 OCHAR1, TAD OUTEMP 651 013255 3662 DCA I OUPTR 652 013256 7402 OUCRET, HLT /RESTORE CALLING FIELDS 653 013257 5610 JMP I OCHAR 654 013260 0000 OUTEMP, 0 655 013261 0000 OUPOLD, 0 656 013262 0000 OUPTR, 0 657 013263 5220 OUJMPE, JMP OUJMP 658 013264 0000 OUDWCT, 0 659 013265 0000 OTYPE, 0 660 013266 6214 RDF 661 013267 1343 TAD CDIF0 662 013270 3277 DCA OTRTN 663 013271 6211 CDF 10 664 013272 1777 TAD I (7600 665 013273 0371 AND (17 666 013274 1370 TAD (DCB-1 667 013275 3260 DCA OUTEMP 668 013276 1660 TAD I OUTEMP 669 013277 7402 OTRTN, HLT 670 013300 5665 JMP I OTYPE 671 672 013301 0000 DOBITS, 0 673 013302 3024 DCA B3 674 013303 4767 JMS I (XCDF 675 013304 1411 TAD I LOADXR 676 013305 6211 CDF 10 677 013306 3023 DCA B1 678 013307 1023 BITLP, TAD B1 679 013310 7106 CLL RTL 680 013311 3023 DCA B1 681 013312 1023 TAD B1 682 013313 7064 CMA CML RAL 683 013314 0366 AND (3 684 013315 1365 TAD (260 685 013316 4422 JMS I OUT 686 013317 2027 ISZ COLCTR 687 013320 1027 TAD COLCTR 688 013321 0364 AND (7 689 013322 7640 SZA CLA 690 013323 5331 JMP BITISZ 691 013324 1763 TAD I (TTOFLG 692 013325 7650 SNA CLA /IF OUTPUT IS NOT TO TTY, 693 013326 1362 TAD (240 /PUT A SPACE AFTER EVERY GROUP OF 8 694 013327 7440 SZA 695 013330 4422 JMS I OUT 696 013331 2024 BITISZ, ISZ B3 697 013332 5307 JMP BITLP 698 013333 5701 JMP I DOBITS 699 013334 0000 CTCTST, 0 700 013335 1361 TAD (200 701 013336 6034 KRS 702 013337 1360 TAD (-203 703 013340 7650 SNA CLA /IS THE TELETYPE BUFFER A ^C 704 013341 6031 KSF /WITH THE TELETYPE FLAG ON? 705 013342 5734 JMP I CTCTST /NO 706 013343 6203 CDIF0, CDF CIF 0 /YES - GO TO MONITOR 707 013344 5757 JMP I (7605 /THROUGH THE "DON'T SAVE CORE" RETURN 708 709 013357 7605 PAGE 013360 7575 013361 0200 013362 0240 013363 3770 013364 0007 013365 0260 013366 0003 013367 3540 013370 7757 013371 0017 013372 3057 013373 4200 013374 7400 013375 0377 013376 6000 013377 7600 710 013400 7240 BUILD, STA 711 013401 3337 DCA SOMTHN 712 013402 1377 TAD (-10 713 013403 3035 DCA FLDNO 714 013404 1233 TAD MAPSKP 715 013405 3217 DCA F4SKP /INITIALIZE ONCE-ONLY SKIP 716 013406 1035 FLDLP, TAD FLDNO 717 013407 0376 AND (4 718 013410 7106 CLL RTL 719 013411 1375 TAD (CDF 720 013412 3341 DCA CDFX /STORE A CDF 0 OR CDF 20 721 013413 1035 TAD FLDNO 722 013414 7012 RTR 723 013415 7730 SZL SPA CLA /IF FLDNO IS 0 OR 4, 724 013416 5224 JMP NOT04 /INITIALIZE LOADXR TO 0 725 013417 7410 F4SKP, SKP 726 013420 5232 F4FLAG, JMP MAPOVR /ZEROED IF INFO IN FIELD 2 727 013421 3217 DCA F4SKP 728 013422 7240 STA 729 013423 3011 DCA LOADXR 730 013424 1374 NOT04, TAD (-1400 731 013425 4773 JMS I (ZTST 732 013426 7640 SZA CLA /FIELD EMPTY? 733 013427 5242 JMP NONEMP /NO 734 013430 2035 FLDISZ, ISZ FLDNO 735 013431 5206 JMP FLDLP 736 013432 2337 MAPOVR, ISZ SOMTHN /WAS THERE ANY INPUT? 737 013433 7410 MAPSKP, SKP 738 013434 5772 JMP I (NULERR 739 013435 4771 JMS I (ECRLF 740 013436 4771 JMS I (ECRLF 741 013437 4770 JMS I (OCLOSE 742 013440 6203 CDF CIF 0 743 013441 5767 JMP I (7605 744 745 013442 2337 NONEMP, ISZ SOMTHN /HAVE WE OUTPUT ANYTHING YET? 746 013443 5255 JMP NOTFST 747 013444 4766 JMS I (OOPEN /NO - OPEN OUTPUT FILE NOW 748 013445 4765 JMS I (OTYPE 749 013446 7650 SNA CLA /SET MODE OF OUTPUT - /T INVERTS 750 013447 1364 TAD (20 /NORMAL TTY/NO TYY DISTINCTION 751 013450 1763 TAD I (MPARAM+1 752 013451 0364 AND (20 753 013452 3762 DCA I (TTOFLG 754 013453 1361 TAD (OCHAR 755 013454 3022 DCA OUT 756 013455 4760 NOTFST, JMS I (EJECT1 /PAGE HEADING 757 013456 1357 TAD (-100 758 013457 3336 DCA PAGECT 759 013460 1035 PAGELP, TAD FLDNO 760 013461 1356 TAD (270 761 013462 4422 JMS I OUT 762 013463 1336 TAD PAGECT 763 013464 0355 AND (70 764 013465 7112 CLL RTR 765 013466 7010 RAR 766 013467 1354 TAD (260 /OUTPUT LOC (HIGH 3 DIGITS) AT LEFT MARGIN 767 013470 4422 JMS I OUT 768 013471 1336 TAD PAGECT 769 013472 0353 AND (7 770 013473 1354 TAD (260 771 013474 4422 JMS I OUT 772 013475 1354 TAD (260 773 013476 4422 JMS I OUT 774 013477 1354 TAD (260 775 013500 4422 JMS I OUT 776 013501 1352 TAD (240 777 013502 4422 JMS I OUT 778 013503 3027 DCA COLCTR 779 013504 1351 TAD (-14 780 013505 4773 JMS I (ZTST /IF ALL 64 WORDS ARE ZERO, 781 013506 7650 SNA CLA 782 013507 5322 JMP NO1ND0 /DON'T PRINT LINE 783 013510 1350 TAD (-4 784 013511 3337 DCA SOMTHN 785 013512 1347 DOBTLP, TAD (-6 786 013513 4746 JMS I (DOBITS /OUTPUT 4 TRIPLEWORDS FOR 64 LOCATIONS 787 013514 1347 TAD (-6 788 013515 4746 JMS I (DOBITS 789 013516 1350 TAD (-4 790 013517 4746 JMS I (DOBITS 791 013520 2337 ISZ SOMTHN 792 013521 5312 JMP DOBTLP 793 013522 4771 NO1ND0, JMS I (ECRLF 794 013523 7201 CLA IAC 795 013524 0336 AND PAGECT 796 013525 7640 SZA CLA 797 013526 4771 JMS I (ECRLF /SKIP A LINE EVERY PDP-8 PAGE 798 013527 1336 TAD PAGECT 799 013530 1345 TAD (41 800 013531 7650 SNA CLA 801 013532 4760 JMS I (EJECT1 /NEW PAGE AT LOCATION 4000 802 013533 2336 ISZ PAGECT 803 013534 5260 JMP PAGELP 804 013535 5230 JMP FLDISZ 805 013536 0000 PAGECT, 0 806 013537 0000 SOMTHN, 0 807 808 013540 0000 XCDF, 0 809 013541 7402 CDFX, HLT 810 013542 5740 JMP I XCDF 811 013545 0041 PAGE 013546 3301 013547 7772 013550 7774 013551 7764 013552 0240 013553 0007 013554 0260 013555 0070 013556 0270 013557 7700 013560 3600 013561 3210 013562 3770 013563 7644 013564 0020 013565 3265 013566 3000 013567 7605 013570 3112 013571 3762 013572 2701 013573 2337 013574 6400 013575 6201 013576 0004 013577 7770 812 013600 0000 EJECT1, 0 813 013601 1035 TAD FLDNO 814 013602 1377 TAD (4070 815 013603 3224 DCA FLDNUM 816 013604 1370 TAD TTOFLG 817 013605 7640 SZA CLA /TELETYPE STYLE OUTPUT? 818 013606 5346 JMP EJKTTY /YES 819 013607 1376 TAD (214 /NO - FORM FEED 820 013610 4422 JMS I OUT 821 013611 4775 PRTFLD, JMS I (ERR 822 013612 4002 TEXT / BITMAP V/ 013613 1124 013614 1501 013615 2040 013616 4026 013617 0000 823 *.-1 824 013617 6401 VERLOC, 60+VERSION^100+SUBVER /V5A, ETC... 825 013620 4040 TEXT / FIELD/ 013621 4006 013622 1105 013623 1404 013624 0000 826 *.-1 827 013624 4060 FLDNUM, TEXT / 0/ 013625 0000 828 013626 4362 JMS ECRLF 829 013627 1370 TAD TTOFLG 830 013630 7650 SNA CLA /IF NOT TTY OUTPUT, 831 013631 5344 JMP EJKLPT /DON'T PRINT HORIZONTAL GUIDE 832 833 013632 4775 JMS I (ERR 834 013633 4040 TEXT / 0000000011111111222222223333333344444444555555556666666677777777/ 013634 4040 013635 4040 013636 6060 013637 6060 013640 6060 013641 6060 013642 6161 013643 6161 013644 6161 013645 6161 013646 6262 013647 6262 013650 6262 013651 6262 013652 6363 013653 6363 013654 6363 013655 6363 013656 6464 013657 6464 013660 6464 013661 6464 013662 6565 013663 6565 013664 6565 013665 6565 013666 6666 013667 6666 013670 6666 013671 6666 013672 6767 013673 6767 013674 6767 013675 6767 013676 0000 835 013677 4775 JMS I (ERR 836 013700 4040 TEXT / 0123456701234567012345670123456701234567012345670123456701234567/ 013701 4040 013702 4040 013703 6061 013704 6263 013705 6465 013706 6667 013707 6061 013710 6263 013711 6465 013712 6667 013713 6061 013714 6263 013715 6465 013716 6667 013717 6061 013720 6263 013721 6465 013722 6667 013723 6061 013724 6263 013725 6465 013726 6667 013727 6061 013730 6263 013731 6465 013732 6667 013733 6061 013734 6263 013735 6465 013736 6667 013737 6061 013740 6263 013741 6465 013742 6667 013743 0000 837 013744 4362 EJKLPT, JMS ECRLF 838 013745 5600 JMP I EJECT1 839 013746 1374 EJKTTY, TAD (-13 840 013747 3361 DCA EJKTMP 841 013750 4362 JMS ECRLF 842 013751 2361 ISZ EJKTMP 843 013752 5365 JMP ECRLFX 844 013753 4775 JMS I (ERR 845 013754 5555 TEXT /----/ 013755 5555 013756 0000 846 013757 4362 JMS ECRLF 847 013760 5211 JMP PRTFLD 848 013761 0000 EJKTMP, 0 849 850 013762 0000 ECRLF, 0 851 013763 1373 TAD (215 852 013764 4422 JMS I OUT 853 013765 1372 ECRLFX, TAD (212 854 013766 4422 JMS I OUT 855 013767 5762 JMP I ECRLF 856 857 013770 0000 TTOFLG, 0 /20 IF TTY-STYLE OUTPUT 858 013772 0212 PAGE 013773 0215 013774 7765 013775 2626 013776 0214 013777 4070 859 BUFFER=. 860 $-$-$ ASSEMB 2473 B1 0023 B3 0024 BADCKS 2670 BADINP 2661 BITISZ 3331 BITLP 3307 BITMAP 2000 BITTBL 2110 BUFFER 4000 BUILD 3400 C1 0025 CALLCD 2005 CDCOOL 2022 CDF20X 2746 CDF20Y 2056 CDFX 3541 CDIF0 3343 CHAR1 2322 CHAR2 2316 CHCNT 2333 CHPTR 2334 CHTMP 2335 COLCTR 0027 CTCTST 3334 CTFLD2 2756 CTINIT 2736 CTINLP 2743 CTLZ 2533 DATAWD 2456 DCB 7760 DOBITS 3301 DOBTLP 3512 ECRLF 3762 ECRLFX 3765 EJECT1 3600 EJKLPT 3744 EJKTMP 3761 EJKTTY 3746 EOMESG 2650 ERPCH 2600 ERR 2626 ERRLUP 2635 F4FLAG 3420 F4SKP 3417 FIELDW 2502 FILLLP 3123 FILMSG 2605 FILPTR 0033 FLDISZ 3430 FLDLP 3406 FLDNO 0035 FLDNUM 3624 GCHCOM 2323 GETCH 2234 GETFLD 2537 GETNXT 2465 HANDLR 2217 IOERR 2652 ITSOVR 2400 JMPGET 2300 JMPX 2240 JSBITS 7746 L40 2464 LCKSUM 2532 LD7400 2026 unreferenced LDBIT 2106 LDOFST 2105 LDRPCH 2620 LEADER 2425 LOADER 2411 LOADWD 2033 LOADXR 0011 LTEMP 2107 MAPOVR 3432 MAPSKP 3433 MIFILE 7617 MPARAM 7643 NEWFIL 2200 NEWWD 2434 NEXTCD 2002 NO1ND0 3522 NOCD 2010 NODUMP 3141 NONEMP 3442 NOT04 3424 NOTFST 3455 NOTXP 2525 NULERR 2701 NZCHAR 2613 OCHAR 3210 OCHAR1 3254 OCHAR2 3251 OCHAR3 3223 unreferenced OCLOSE 3112 OEFAIL 3035 OERR 2730 ONCE 2032 OOPEN 3000 ORIGIN 0021 OTRTN 3277 OTYPE 3265 OU7600 3001 OU7601 3144 OUASGN 3013 OUBLK 3026 OUBUF 6000 OUCCNT 3145 OUCRET 3256 OUCTL 4200 OUCTLW 3105 OUCTMP 0200 OUDEVH 6400 OUDWCT 3264 OUELEN 3027 OUENTR 3023 OUFLD 0000 OUHNDL 3021 OUJMP 3220 OUJMPE 3263 OUPOLD 3261 OUPTR 3262 OUREC 3107 OUSETP 3200 OUT 0022 OUTDMP 3057 OUTEMP 3260 OUTERR 2710 PAGECT 3536 PAGELP 3460 PBUFFR 2263 PRTFLD 3611 PTP 0020 RCDCNT 2336 RCTL 2262 RECNO 2264 REOF 2332 RERROR 2326 SOMTHN 3537 SUBVER 0001 TTOFLG 3770 TTYNO 3051 USETTY 3045 VERLOC 3617 unreferenced VERSIO 0004 WD 0030 WD1 0031 WD2 0032 XCDF 3540 XFIELD 0020 XR 0010 ZTST 2337