1 /3 PIP FOR OS/8 MONITOR 2 / 3 / 4 / 5 / 6 / 7 / 8 / 9 / 10 / 11 /COPYRIGHT (C) 1970,1971,1972,1973,1974,1975,1977 12 /BY DIGITAL EQUIPMENT CORPORATION 13 / 14 / 15 / 16 / 17 / 18 / 19 / 20 / 21 / 22 / 23 /THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE 24 /AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT 25 /CORPORATION. DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY 26 /FOR ANY ERRORS THAT MAY APPEAR IN THIS DOCUMENT. 27 / 28 /THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FURNISHED TO THE PURCHASER 29 /UNDER A LICENSE FOR USE ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED 30 /(WITH INCLUSION OF DIGITAL'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH 31 /SYSTEM, EXCEPT AS MAY OTHERWISE BE PROVIDED IN WRITING BY DIGITAL. 32 / 33 /DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE 34 /OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY 35 /DIGITAL. 36 / 37 / 38 / 39 / 40 / 41 / 42 / 43 / 44 / 45 / 46 / 4-MAY-1977 FILE: PIP.PA OS/8 VERSION 12A 47 /RL/EF/ET.AL./S.R./E.S. 48 49 50 51 /ABSTRACT---- 52 /PIP (PERIPHERAL INTERCHANGE PROGRAM) IS A GENERAL FILE 53 /MANIPULATION PROGRAM FOR THE OS/8 PROGRAMMING SYSTEM. 54 /PIP ACCOMPLISHES DATA TRANSFERS BETWEEN ANY DEVICES IN THE OS/8 55 /CONFIGURATION. 56 57 58 /VERSION 3 MODS: 59 60 /FIXED PROBLEM WITH ONE-PAGE WRITE 61 /IN /S OR /Z, =OPTION IS TAKEN MODULO 100 (OCTAL) 62 / WITH 100, 200, ETC. MEANING USE 0 ADDITIONAL WDS. 63 /DATES STILL DON'T LINE UP 64 /'0 FREE BLOCKS' 65 /ALLOW FILLING UP DEVICE TO VERY LAST BLOCK 66 /ALLOW 7-BIT ^C 67 /ALTMODE ON CD LINE RETURNS TO MONITOR WHEN DONE 68 /NO HALT ON /L IF NO TTY HANDLER (ACTS AS NOP) 69 / /V PRINTS VERSION NUMBER FIRST TIME CALLED 70 / /O AFFIRMS /Y ON ZERO SYS OR ARE YOU SURE 71 /=NNNN ON /I OPTION SPECIFIES LENGTH TO CLOSE FILE 72 73 74 /MAINTENANCE RELEASE CHANGES: 75 76 /1. FIXED LENGTH OF ALL VARIETIES OF RF08 77 /2. ADDED RX01 TO INTERNAL LENGTH TABLES 78 /3. CHANGED VERSION NUMBER TO V10 79 /4. ADDED CHECK FOR 7-BIT CTRL/Z TO ASCII HANDLER 80 81 /E.S. DISABLED /E,/F,/L 82 /E.S. FIXED /Y OPTION PER SPR 83 84 /DETAILS OF PIP: 85 86 /PIP RUNS WITH THE USR (USER SERVICE ROUTINES) ALWAYS IN CORE. 87 /THIS ELIMINATES SWAPPING THE MONITOR. IF ANY CHANGES ARE MADE 88 /TO PIP, CARE SHOULD BE TAKEN IN USING PAGE ZERO LOCATIONS, AS 89 /THEY MUST NOT DESTROY ANY MONITOR LOCATIONS. 90 91 /CORE USED: 92 /FIELD 0 93 94 /00000-02777- OUTPUT BUFFER 95 /03000-06377- INPUT BUFFER 96 /06400-06577- USED FOR /Y COMMAND ONLY 97 /06600-07177- INPUT HANDLER 98 /07200-07577- OUTPUT HANDLER 99 100 /FIELD 1 101 102 /10000-11777- OS/8 I/O MONITOR 103 /12000-16577- EXECUTABLE CODE 104 /16600-17177- HOLDS NEW DIRECTORY SEGMENT FOR /S OPTION 105 /17200-17577- HOLDS OLD DIRECTORY SEGMENT IN /S OPTION 106 107 108 /MAJOR PIECES OF CODE AND THEIR FUNCTION (BRIEFLY). 109 /THIS IS A LIST OF ROUTINES AS THEY APPEAR PHYSICALLY, AND 110 /NOT AS THEY ARE LOGICALLY CONNECTED. 111 112 /ICHAR- GENERAL CHARACTER INPUT ROUTINE. ASSIGNS NEW 113 / DEVICE HANDLERS AS NEEDED. 114 115 /OOPEN- ENTERS A FILE ON A SPECIFIED DEVICE. 116 117 /OUTDMP- WRITES OUTPUT BUFFER TO OUTPUT DEVICE. 118 119 /OCLOSE- CLOSES FILE CREATED BY OOPEN 120 121 /OCHAR- CHARACTER OUTPUT ROUTINE. WRITES CHARACTERS 122 / TO OUTPUT BUFFER, CALLING OUTDMP WHEN FULL. 123 124 /OTYPE- USES DEVICE NUMBER IN OUTPUT AREA OF CD TO 125 / INSPECT THE DEVICE CONTROL BLOCK WORD. THIS 126 / GIVES A CODE FOR THE TYPE OF DEVICE. 127 128 /SLASHG- HANDLES I/O ERRORS. IF /G IS SET, HARD I/O 129 / ERRORS ARE IGNORED. IF /S AND /G ARE ON, A 130 / SPECIAL RETURN IS TAKEN. 131 132 /IMAGE- IMAGE MODE PROCESSOR FOR PIP. 133 134 /SQTRA- MAIN SUBROUTINE OF IMAGE MODE, AND /S OPTION. 135 136 /PIP, PIP+1- MAIN ENTRANCES TO PIP. THE CODE ON THIS PAGE 137 / INSPECTS CD OPTION WORDS AND BRANCHES TO PROPER 138 / ROUTINES. 139 140 /ASCII- THE DEFAULT TRANSFER MODE IN PIP IS ASCII. 141 142 /DELETE- DELETES FILES ON OUTPUT SIDE OF CD LIST. 143 144 /DZERO- ZEROES DIRECTORY OF FIRST OUTPUT DEVICE. 145 146 /PIPERR- ERROR ROUTINR FOR PIP. 147 148 /DIRPRE- DIRECTORY PRINTING ROUTINE. 149 150 /BINARY- BINARY MODE PROCESSOR. HANDLES ABSOLUTE AND 151 / RELOCATABLE BINARY FILES. 152 153 /ERPRNT- ERROR PRINTOUT. 154 155 /SQUISH- FILE COMPRESSION PROCESSOR. ELIMINATES 'HOLES' 156 / IN DIRECTORY OF INPUT DEVICE. 157 158 /SYSCOP- SYSTEM COPY PROCESSOR. ALLOWS TRANSFER OF THE 159 / OS/8 SYSTEM AREA. 160 /OPTIONS AVAILABLE IN PIP: 161 162 /A- ASCII TRANSFER; DEFAULT MODE 163 /B- BINARY MODE TANSFER 164 /C- DELETE TRAILING BLANKS. (ASCII MODE) 165 /D- DELETE FIRST OUTPUT FILE BEFORE PROCEEDING 166 /E- LIST INPUT DIRECTORY INCLUDING EMPTY FILES 167 /F- LIST INPUT DIRECTORY; ONLY FILE NAMES 168 /G- IGNORE ERRORS WHILE TRANSFERING 169 /I- IMAGE MODE TRANSFER 170 /L- LIST INPUT DIRECTORY; EXCLUDE EMPTY FILES 171 /O- OK TO PERFORM A SQUISH OR ZERO WITHOUT ASKING 172 /S- COMPRESS INPUT DEVICE ONTO OUTPUT DEVICE. ELIMINATES 173 / 'HOLES' ON INPUT DEVICE. 174 /T- PROVIDE SIMPLE TTY FORMATTING. (ASCII ONLY) 175 /Y- COPY OS/8 SYSTEM AREA 176 /Z- ZERO OUTPUT DEVICE DIRECTORY BEFORE PROCEEDING 177 /=N- LEAVE N WORDS EXTRA PER DIRECTORY ENTR. VALID 178 / ONLY WITH /S OR /Z. 179 /=N- WITH /I OPTION CLOSES OUTPUT FILE WITH THIS LENGTH 180 /V PRINTS VERSION # (FIRST TIME ONLY) 181 182 /COMMENTS ON THE PROGRAM: 183 184 /SINCE PIP RUNS WITH USR IN CORE, NO PAGE ZERO LITERALS 185 /CAN BE USED. THE LOCATIONS CURRENTLY USED IN 186 /FIELD 1 ON PAGE ZERO ARE: 187 188 OUTXR=10 189 INXR=11 190 TEMP1=12 191 IHNDLR=24 /HOLDS INPUT HANDLER ADDRESS 192 OHNDLR=25 /OUTPUT HANDLER ADDRESS 193 SQFLAG=26 /'SQUISH INDICATOR 194 OUWAST=27 /# WASTE WORDS ON OUTPUT 195 OUTBLK=30 196 OUDLEN=31 197 SAME=32 198 INBLK=33 199 RECCNT=34 200 201 /CONSTANTS USED BY THE DIRECTORY PRINTOUT ROUTINE (OVERLAPPING) ARE: 202 203 FLENGT=24 204 BLOKNO=25 205 DTYPE=27 206 DCOUNT=30 207 DLINK=31 208 WASTE=32 209 DDATE=33 210 ECOUNT=35 211 /PIP FOR OS/8 MONITOR 212 /EQUIVALENCES FOR GENERAL CHARACTER I/O ROUTINES 213 214 OUBUF=0 /MUST BE LOWER THAN INBUF 215 OUCTL=5400 /OUTPUT BUFFER OF 3000 WORDS 216 OUDEVH=7200 /PROVIDE ROOM FOR TWO-PAGE HANDLERS 217 INBUF=3000 218 INCTL=1600 /INPUT BUFFER OF 3400 WORDS 219 INRECS=7 220 INDEVH=6600 221 222 /PAGE 6400 IS FREE, EXCEPT DURING /Y COMMAND 223 224 /EQUIVALENCES NECESSARY TO INTERFACE WITH MONITOR 225 DCB=7760 226 MPARAM=7643 /CD PARAMETER AREA 227 OLDDIR=7 /POINTER TO MONITOR VARIABLE "OLDT9" 228 MTEMP=27 /MONITOR SCRATCH AREA ON "SYS" - ***VOLATILE*** 229 PTP=20 /INTERNAL TYPE CODE FOR PAPER TAPE PUNCH 230 XR=10 231 TEMP=20 232 CHAR=21 233 INFPTR=22 234 INEOF=23 235 236 ABUF=6601 /LINE BUFFER - 150 CHARACTERS LONG 237 SQBUF1=6600 /DIRECTORY BUFFER FOR "SQUISH" OPTION 238 SQBUF2=7200 /"" 239 240 FIELD 1 241 242 /TO ENABLE /E,/F,/L SET 243 /OS78=0 244 245 /TO DISABLE /E,/F,/L 246 IFNDEF OS78 247 248 /GENERAL CHARACTER I/O ROUTINES FOR BLEEP 249 /CALLED AS FOLLOWS: 250 251 /JMS I (IOPEN INITIALIZES THE INPUT ROUTINE 252 253 /JMS I (ICHAR READS A CHARACTER 254 /ERROR RETURN /AC>0 IF END OF FILE, AC<0 IF READ ERROR 255 256 /JMS I (OOPEN INITIALIZES THE OUTPUT ROUTINE 257 /ERROR RETURN AC>0 IF NO OUTPUT DEVICE/FILE, AC<0 IF ERROR 258 259 /JMS I (OCHAR OUTPUTS A CHARACTER 260 /ERROR RETURN OUTPUT ERROR OR TOO MUCH OUTPUT 261 262 /JMS I (OCLOSE CLOSES THE OUTPUT FILE 263 /ERROR RETURN FILE TOO LARGE TO BE CLOSED OR OUTPUT ERROR 264 265 /JMS I (OTYPE RETURNS DCB WORD OF OUTPUT DEVICE IN AC 266 267 268 269 /PARAMETERS NEEDED: 270 271 /INBUF= ADDRESS OF INPUT BUFFER 272 /INCTL= INPUT BUFFER CONTROL WORD 273 /OUBUF= ADDRESS OF OUTPUT BUFFER 274 /OUCTL= OUTPUT BUFFER CONTROL WORD (MUST BE NEGATIVE) 275 /INRECS= [INCTL/256] 276 /INDEVH= ADDRESS OF PAGE FOR INPUT HANDLER 277 /OUDEVH= ADDRESS OF PAGE FOR OUTPUT HANDLER 278 279 /ASSUMES I/O MONITOR IS RESIDENT IN CORE. 280 /CAN BE CALLED FROM ANY FIELD WITH BUFFERS IN ANY FIELD. 281 INFLD=INCTL&70 /GET FIELD OF INPUT BUFFER 282 OUFLD=OUCTL&70 /DITTO OUTPUT BUFFER 283 284 *2000 285 286 012000 7400 IN7400, 7400 287 012001 0000 IOPEN, 0 288 012002 7240 CLA CMA 289 012003 3335 DCA INCHCT /SET INCHCT TO FORCE A READ 290 012004 2023 ISZ INEOF /SET END-OF-FILE FLAG TO FORCE A NEW FILE 291 012005 1377 TAD (7617 292 012006 3022 DCA INFPTR /RESET FILE POINTER 293 012007 6214 RDF 294 012010 1246 TAD INCDIF 295 012011 3212 DCA .+1 296 012012 7402 INPTR, HLT /RESTORE CALLING FIELDS 297 012013 5601 JMP I IOPEN 298 299 012014 0000 ICHAR, 0 300 012015 7600 IN7600, 7600 301 012016 6214 RDF 302 012017 1246 TAD INCDIF 303 012020 3333 DCA INRTRN /SAVE CALLING FIELDS 304 012021 6201 INCHAR, CDF INFLD 305 012022 2302 ISZ INJMP /BUMP THREE-WAY UNPACK SWITCH 306 012023 2335 ISZ INCHCT 307 012024 5302 INJMPP, JMP INJMP 308 012025 1023 TAD INEOF 309 012026 7650 SNA CLA /DID LAST READ YIELD END-OF-FILE? 310 012027 5232 JMP INGBUF /NO - DO ANOTHER 311 012030 4335 GETNEW, JMS INNEWF /OPEN A NEW INPUT FILE 312 012031 5301 JMP EOFERR /NO FILE TO OPEN 313 012032 1201 INGBUF, TAD INCTR 314 012033 7100 CLL 315 012034 1376 TAD (INRECS 316 012035 7420 SNL 317 012036 3201 DCA INCTR /RESTORE INCTR IF IT HASN'T OVERFLOWED 318 012037 7430 SZL /IS THIS THE LAST READ? 319 012040 2023 ISZ INEOF /YES - SET END-OF-FILE FLAG 320 /NOT END-OF-FILE IF INPUT DEVICE 321 /IS NON-FILE STRUCTURED! 322 012041 7172 CLL CML CMA RTR /CONSTRUCT A CONTROL WORD FOR THE READ 323 012042 7012 RTR /FROM THE AMOUNT OF THE OVERFLOW 324 012043 7012 RTR /(IF ANY) AND THE STANDARD CONTROL WORD 325 012044 1375 TAD (INCTL+1 326 012045 3251 DCA INCTLW 327 012046 6203 INCDIF, CDF CIF 0 328 012047 6211 CDF 10 329 012050 4746 JMS I INHNDL /CALL THE DEVICE HANDLER 330 012051 0000 INCTLW, 0 331 012052 3000 INBUFP, INBUF 332 012053 0000 INREC, 0 333 012054 4774 JMS I (SLASHG /A HANDLER ERROR - SHOULD WE IGNORE? 334 012055 0020 INERRX-. /ADDRESS IF NOT 335 012056 1253 INBREC, TAD INREC 336 012057 1376 TAD (INRECS 337 012060 3253 DCA INREC /UPDATE THE RECORD NUMBER 338 012061 1251 TAD INCTLW 339 012062 0215 AND IN7600 340 012063 7104 CLL RAL 341 012064 1251 TAD INCTLW 342 012065 0215 AND IN7600 343 012066 7040 CMA 344 012067 3335 DCA INCHCT /COMPUTE THE NEW CHARACTER COUNT 345 012070 1224 TAD INJMPP 346 012071 3302 DCA INJMP /RESET THE CHARACTER SWITCH 347 012072 1252 TAD INBUFP 348 012073 3212 DCA INPTR /AND THE WORD POINTER 349 012074 5221 JMP INCHAR /GO BACK AND MAKE BELIEVE THIS NEVER HAPPENED 350 012075 2023 INERRX, ISZ INEOF /EITHER AN END-OF-FILE OR A BADDIE 351 012076 7700 SMA CLA /WHICH TYPE WAS IT? 352 012077 5256 JMP INBREC /END OF FILE - RESUME THY PROCESSING 353 012100 7330 INERR, CLA CLL CML RAR /BADDIE - GIVE ERROR RETURN WITH NEGATIVE AC 354 012101 5333 EOFERR, JMP INRTRN 355 012102 7402 INJMP, HLT /THIS IS THE THREE - WAY CHARACTER SWITCH 356 012103 5324 JMP ICHAR1 357 012104 5320 JMP ICHAR2 358 012105 1224 ICHAR3, TAD INJMPP 359 012106 3302 DCA INJMP 360 012107 1612 TAD I INPTR 361 012110 0200 IN200, AND IN7400 362 012111 7112 CLL RTR 363 012112 7012 RTR /COMBINE THE HIGH-ORDER FOUR BITS OF 364 012113 1251 TAD INCTLW 365 012114 7012 RTR /THE TWO WORD TO FORM THE THIRD CHARACTER 366 012115 7012 RTR 367 012116 2212 ISZ INPTR 368 012117 5325 JMP INCOMN 369 012120 1612 ICHAR2, TAD I INPTR 370 012121 0200 AND IN7400 371 012122 3251 DCA INCTLW /SAVE THE HIGH-ORDER BITS FOR THE THIRD CHAR 372 012123 2212 ISZ INPTR /BUMP THE WORD POINTER 373 012124 1612 ICHAR1, TAD I INPTR 374 012125 0373 INCOMN, AND (377 375 012126 1372 TAD (-232 376 012127 7450 INCTZF, SNA /IS THE CHARACTER A ^Z? 377 012130 5230 JMP GETNEW /YES - GET A NEW FILE 378 012131 1371 TAD (232 /RESTORE THE CHARACTER 379 012132 2214 ISZ ICHAR /BUMP RETURN TO NORMAL RETURN 380 012133 0000 INRTRN, 0 /RESTORE CALLING FIELDS 381 012134 5614 JMP I ICHAR /AND RETURN 382 /IOPEN IS UNNECESSARY. 383 012135 7777 INNEWF, -1 /ROUTINE TO OPEN NEW INPUT FILE 384 INCHCT=INNEWF 385 012136 6211 CDF 10 386 012137 1370 TAD (INDEVH+1 387 012140 3346 DCA INHNDL /INITIALIZE HANDLER ADDRESS 388 012141 1422 TAD I INFPTR /GET NEXT CD INPUT FILE ENTRY 389 012142 7450 SNA /ANY MORE? 390 012143 5735 JMP I INNEWF /NO - OUT OF INPUT 391 012144 4710 JMS I IN200 392 012145 0001 1 /ASSIGN, FETCH HANDLER 393 012146 0000 INHNDL, 0 394 012147 7402 HLT /HUH? 395 012150 1422 TAD I INFPTR 396 012151 0367 AND (7760 /GET LENGTH PART OF WORD 397 012152 7440 SZA /LENGTH OF 0 MEANS LENGTH >=256 398 012153 1366 TAD (17 /ADD HIGH-ORDER BITS 399 012154 7132 CLL CML RTR 400 012155 7012 RTR 401 012156 3201 DCA INCTR /STORE LENGTH OF FILE 402 012157 2022 ISZ INFPTR 403 012160 1422 TAD I INFPTR 404 012161 3253 DCA INREC /STORE STARTING RECORD NUMBER OF FILE 405 012162 2022 ISZ INFPTR 406 012163 3023 DCA INEOF /ZERO END-OF-FILE FLAG 407 012164 2335 ISZ INNEWF 408 012165 5735 JMP I INNEWF 409 INCTR=IOPEN 410 012166 0017 PAGE 012167 7760 012170 6601 012171 0232 012172 7546 012173 0377 012174 2520 012175 1601 012176 0007 012177 7617 411 012200 0000 OOPEN, 0 /OPEN OUTPUT FILE 412 012201 7600 OU7600, 7600 413 / RDF 414 / TAD OUCDIF 415 / DCA OORETN 416 012202 1351 TAD OU7601 417 012203 3222 DCA OUBLK 418 012204 1377 TAD (OUDEVH+1 419 012205 3215 DCA OUHNDL 420 012206 6211 CDF 10 421 012207 1601 TAD I OU7600 /GET DEVICE NUMBER WORD OF OUTPUT FILE ENTRY 422 012210 0376 AND (17 /STRIP OFF ANY LENGTH INFO 423 012211 7450 SNA /IS THERE AN OUTPUT DEVICE? 424 012212 5245 JMP ONOFIL /NO - INHIBIT OUTPUT 425 012213 4775 JMS I (200 426 012214 0001 1 /ASSIGN, FETCH HANDLER 427 012215 0000 OUHNDL, 0 /OUTPUT DEVICE HANDLER ENTRY 428 012216 7402 HLT /HUH? 429 012217 1601 OUENTR, TAD I OU7600 430 012220 4775 JMS I (200 431 012221 0003 3 /ENTER OUTPUT FILE 432 012222 7601 OUBLK, 7601 /REPLACED WITH STARTING BLOCK 433 012223 0000 OUELEN, 0 /REPLACED WITH LENGTH OF HOLE 434 012224 5233 JMP OEFAIL /FAILED - MAYBE WE ASKED TOO MUCH 435 012225 3352 DCA OUCCNT 436 012226 3774 DCA I (OUTINH /ZERO OUTPUT INHIBIT FLAG 437 012227 4773 JMS I (OUSETP 438 012230 2200 ISZ OOPEN 439 012231 6213 OORETN, CDF CIF 10 /RESTORE CALLING FIELDS 440 012232 5600 JMP I OOPEN 441 012233 1601 OEFAIL, TAD I OU7600 442 012234 0372 AND (7760 /GET REQUESTED LENGTH 443 012235 7650 SNA CLA /WAS IT AN INDEFINITE REQUEST 444 012236 5243 JMP ONTERR /YES - CANNOT ENTER THE FILE 445 012237 1601 TAD I OU7600 446 012240 0376 AND (17 /MAKE THE REQUESTED LENGTH ZERO 447 012241 3601 DCA I OU7600 448 012242 5217 JMP OUENTR /TRY, TRY AGAIN 449 012243 7330 ONTERR, CLA CLL CML RAR 450 012244 5231 JMP OORETN /TAKE THE ERROR RETURN WITH AC<0 451 012245 2774 ONOFIL, ISZ I (OUTINH 452 012246 5231 JMP OORETN /TAKE THE ERROR RETURN WITH AC=0 453 012247 0000 OUTDMP, 0 454 012250 3301 DCA OUCTLW /STORE THE CONTROL WORD 455 012251 6211 CDF 10 456 012252 1774 TAD I (OUTINH 457 012253 7640 SZA CLA 458 012254 5306 JMP OUNOWR 459 012255 1352 TAD OUCCNT 460 012256 7450 SNA 461 012257 2301 ISZ OUCTLW 462 012260 1222 TAD OUBLK 463 012261 3303 DCA OUREC /COMPUTE THE STARTING BLOCK NUMBER OF THIS TRANSFER 464 012262 1301 TAD OUCTLW 465 012263 7106 CLL RTL 466 012264 7006 RTL 467 012265 7006 RTL 468 012266 0376 AND (17 /COMPUTE THE NUMBER OF RECORDS 469 012267 1352 TAD OUCCNT /UPDATE THE NUMBER OF BLOCKS IN THE FILE 470 012270 3352 DCA OUCCNT 471 012271 1352 TAD OUCCNT 472 012272 7120 CLL CML 473 012273 1223 TAD OUELEN 474 012274 7660 SNL SZA CLA /DOES THE LENGTH EXCEED THE GIVEN LENGTH? 475 012275 5647 JMP I OUTDMP /YES - SIGNAL OUTPUT ERROR 476 012276 6203 OUCDIF, CDF CIF 0 477 012277 6211 CDF 10 478 012300 4615 JMS I OUHNDL 479 012301 0000 OUCTLW, 0 480 012302 0000 OUBUF 481 012303 0000 OUREC, 0 482 012304 4771 JMS I (SLASHG 483 012305 0002 .+2-. 484 012306 2247 OUNOWR, ISZ OUTDMP /BUMP OUTDMP TO NORMAL RETURN 485 012307 5647 JMP I OUTDMP 486 012310 0000 OCLOSE, 0 487 012311 6211 CDF 10 488 012312 1774 TAD I (OUTINH 489 012313 7640 SZA CLA /IS OUTPUT INHIBITED? 490 012314 5354 JMP OCISZ /YES - CLOSE IS A NOP 491 012315 4770 JMS I (OTYPE 492 012316 0367 AND (770 493 012317 1372 TAD (-PTP /CHECK FOR PAPER TAPE PUNCH OUTPUT 494 012320 7640 SZA CLA /AND SKIP ^Z OUTPUT IF TRUE 495 012321 1366 TAD (232 /OUTPUT A ^Z 496 012322 4765 JMS I (OCHAR 497 012323 5355 JMP OCRET 498 012324 4765 JMS I (OCHAR 499 012325 5355 JMP OCRET 500 012326 4765 FILLLP, JMS I (OCHAR 501 012327 5355 JMP OCRET 502 012330 4770 JMS I (OTYPE /GET TYPE OF OUTPUT DEVICE 503 012331 7710 SPA CLA 504 012332 1364 TAD (100 /IF ITS A DIRECTORY DEVICE FORCE A RECORD 505 012333 1363 TAD (77 /BOUNDARY - OTHERWISE A HALF-RECORD 506 012334 0762 AND I (OUDWCT 507 012335 7640 SZA CLA /UP TO THE BOUNDARY YET? 508 012336 5326 JMP FILLLP /NO - FILL WITH ZEROS 509 012337 1762 TAD I (OUDWCT /GET DOUBLEWORD COUNT LEFT 510 012340 1361 TAD (OUCTL&3700 511 012341 7450 SNA /A FULL WRITE LEFT? 512 012342 5346 JMP NODUMP /YES - DON'T DO IT - THE ^Z IS ALREADY OUT 513 012343 1360 TAD (4000+OUFLD /PUT IN THE FIELD BITS AND THE WRITE BIT 514 012344 4247 JMS OUTDMP 515 012345 5355 JMP OCRET /AN ERROR OCCURRED WHILE DUMPING THE BUFFER 516 012346 1601 NODUMP, TAD I OU7600 /GET THE DEVICE NUMBER 517 012347 4775 JMS I (200 518 012350 0004 4 /CLOSE THE OUTPUT FILE 519 012351 7601 OU7601, 7601 /POINTER TO THE OUTPUT FILE NAME 520 012352 0000 OUCCNT, 0 521 012353 7410 SKP /ERROR WHILE CLOSING THE FILE - BAD! 522 012354 2310 OCISZ, ISZ OCLOSE 523 012355 6213 OCRET, CDF CIF 10 /RESTORE CALLING FIELDS 524 012356 5710 JMP I OCLOSE 525 012360 4000 PAGE 012361 1400 012362 2471 012363 0077 012364 0100 012365 2410 012366 0232 012367 0770 012370 2473 012371 2520 012372 7760 012373 2400 012374 2472 012375 0200 012376 0017 012377 7201 526 012400 0000 OUSETP, 0 /ROUTINE TO INITIALIZE CHARACTER POINTERS 527 012401 1377 TAD (OUCTL&3700 /GET SIZE OF BUFFER IN DOUBLEWORDS 528 012402 7041 CIA /PAL10 IS DEFINITELY NOT NICE 529 012403 3271 DCA OUDWCT 530 / TAD (OUBUF 531 IFNZRO OUBUF /V3 532 012404 3267 DCA OUPTR /INITIALIZE WORD POINTER 533 012405 1270 TAD OUJMPE 534 012406 3223 DCA OUJMP /INITIALIZE THREE-WAY CHARACTER SWITCH 535 012407 5600 JMP I OUSETP 536 537 012410 0000 OCHAR, 0 538 012411 0376 AND (377 539 012412 3265 DCA OUTEMP 540 012413 6214 RDF 541 012414 1375 TAD (CDF CIF 0 542 012415 3263 DCA OUCRET 543 012416 1272 TAD OUTINH 544 012417 7640 SZA CLA /IS THERE AN OUTPUT FILE? 545 012420 5262 JMP OUCOMN /NO - EXIT 546 012421 6201 OUCHAR, CDF OUFLD /SET DATA FIELD TO BUFFER'S FIELD 547 012422 2223 ISZ OUJMP /BUMP THE CHARACTER SWITCH 548 012423 7402 OUJMP, HLT /THREE WAY CHARACTER SWITCH 549 012424 5260 JMP OCHAR1 550 012425 5255 JMP OCHAR2 551 012426 1265 OCHAR3, TAD OUTEMP 552 012427 7106 CLL RTL 553 012430 7006 RTL 554 012431 0374 AND (7400 555 012432 1666 TAD I OUPOLD 556 012433 3666 DCA I OUPOLD /UPDATE FIRST WORD OF TWO WITH HIGH 557 /ORDER 4 BITS OF THIRD CHAR 558 012434 1265 TAD OUTEMP 559 012435 7112 CLL RTR 560 012436 7012 RTR 561 012437 7010 RAR 562 012440 0374 AND (7400 563 012441 1667 TAD I OUPTR 564 012442 3667 DCA I OUPTR /UPDATE SECOND WORD FROM LOW ORDER 4 BITS 565 012443 1270 TAD OUJMPE 566 012444 3223 DCA OUJMP /RESET SWITCH 567 012445 2267 ISZ OUPTR 568 012446 2271 ISZ OUDWCT /BUMP DOUBLEWORD COUNTER EVERY 3 CHARS 569 012447 5262 JMP OUCOMN 570 012450 1373 TAD (OUCTL /LOAD CONTROL WORD FOR A FULL WRITE 571 012451 4772 JMS I (OUTDMP /DUMP THE BUFFER 572 012452 5263 JMP OUCRET /OUTPUT ERROR - GIVE ERROR RETURN 573 012453 4200 JMS OUSETP /RE-INITIALIZE THE POINTERS 574 012454 5262 JMP OUCOMN 575 012455 1267 OCHAR2, TAD OUPTR 576 012456 3266 DCA OUPOLD /SAVE POINTER TO FIRST WORD OF TWO 577 012457 2267 ISZ OUPTR /BUMP WORD POINTER TO SECOND WORD 578 012460 1265 OCHAR1, TAD OUTEMP 579 012461 3667 DCA I OUPTR 580 012462 2210 OUCOMN, ISZ OCHAR 581 012463 7402 OUCRET, HLT /RESTORE CALLING FIELDS 582 012464 5610 JMP I OCHAR 583 012465 0000 OUTEMP, 0 584 012466 0000 OUPOLD, 0 585 012467 0000 OUPTR, 0 586 012470 5223 OUJMPE, JMP OUJMP 587 012471 0000 OUDWCT, 0 588 012472 0000 OUTINH, 0 589 012473 0000 OTYPE, 0 590 012474 6214 RDF 591 012475 1375 TAD (CDF CIF 0 592 012476 3305 DCA OTRTN 593 012477 6211 CDF 10 594 012500 1771 TAD I (7600 595 012501 0370 AND (17 596 012502 1367 TAD (DCB-1 597 012503 3265 DCA OUTEMP 598 012504 1665 TAD I OUTEMP 599 012505 7402 OTRTN, HLT 600 012506 5673 JMP I OTYPE 601 012507 0000 CTCTST, 0 602 012510 1366 TAD (200 /V3 603 012511 6034 KRS 604 012512 1365 TAD (-203 605 012513 7650 SNA CLA /IS THE TELETYPE BUFFER A ^C 606 012514 6031 KSF /WITH THE TELETYPE FLAG ON? 607 012515 5707 JMP I CTCTST /NO 608 012516 6203 LEAVE, CDF CIF 0 /YES - GO TO MONITOR 609 012517 5771 JMP I (7600 /THROUGH THE "SAVE CORE" RETURN 610 611 012520 0000 SLASHG, 0 612 012521 3307 DCA CTCTST 613 012522 1026 TAD SQFLAG 614 012523 7640 SZA CLA /ARE WE SQUISHING? 615 012524 5764 JMP I (SQIOER /YES 616 012525 1307 TAD CTCTST 617 012526 7710 SPA CLA /ONLY IGNORE HARD ERRORS 618 012527 1763 TAD I (MPARAM 619 012530 0362 AND (40 620 012531 7640 SZA CLA / "G" SWITCH 621 012532 5720 SLGRET, JMP I SLASHG /IGNORED! 622 012533 1720 TAD I SLASHG 623 012534 1320 TAD SLASHG 624 012535 3320 DCA SLASHG /SET UP NON-IGNORE ADDRESS 625 012536 1307 TAD CTCTST 626 012537 5720 JMP I SLASHG /RETURN WITH AC RESTORED 627 628 629 IFZERO OS78 < 630 DIR, DCA DTYPE /SAVE TYPE OF REQUEST 631 TAD I (7600 632 SZA CLA /IS THERE AN OUTPUT FILE? 633 JMP I (DIRPRE /YES 634 DCA TTYDEV+1 635 JMS I (200 636 12 /ASSIGN WITHOUT FETCH 637 TTYDEV, 5524 /COMPRESSED CODE FOR "TTY" 638 0 639 0 640 JMP I (PIP /V3 WHAT - NO TELETYPE! 641 TAD TTYDEV+1 642 DCA I (7600 643 JMP I (DIRPRE 644 > 645 646 IFNZRO OS78 < 647 012540 4761 DIR, JMS I (PIPERR /TYPE OUT MESSAGE 648 012541 0014 14 649 012542 2523 DIRMSG, TEXT "USE DIRECT" 012543 0540 012544 0411 012545 2205 012546 0324 012547 0000 650 > 651 652 012561 3517 PAGE 012562 0040 012563 7643 012564 5645 012565 7575 012566 0200 012567 7757 012570 0017 012571 7600 012572 2247 012573 5400 012574 7400 012575 6203 012576 0377 012577 1400 653 /PIP PROPER BEGINS HERE 654 /********************** 655 656 /IMAGE MODE PROCESSOR FOR PIP 657 658 012600 4777 IMAGE, JMS I (FIXLEN 659 012601 4776 JMS I (OUTOPN 660 012602 4254 JMS IMTRA 661 012603 1775 IMCLOS, TAD I (OUTINH 662 012604 7640 SZA CLA /WAS THERE AN OUTPUT FILE? 663 012605 5774 JMP I (PIPCLR /NO - DON'T CLOSE IT 664 012606 4773 JMS I (OUK /GET THE LENGTH OF THE OUTPUT FILE 665 012607 3214 DCA IMCCNT 666 012610 1740 TAD I IM7600 667 012611 4772 JMS I (200 668 012612 0004 4 /CLOSE 669 012613 7601 7601 /FILE NAME 670 012614 0000 IMCCNT, 0 671 012615 5771 JMP I (AOUERR 672 012616 5774 JMP I (PIPCLR 673 674 012617 0000 ENDFUJ, 0 /PART OF DIRECTORY PRINTING ROUTINE 675 012620 4770 JMS I (PRNUM 676 012621 1367 TAD (-6 677 012622 4766 JMS I (PRWD /PRINT SIX WORDS 678 012623 0006 0006 / F 679 012624 2205 2205 /RE 680 012625 0500 0500 /E 681 012626 0214 0214 /BL 682 012627 1703 1703 /OC 683 012630 1323 1323 /KS 684 012631 4765 JMS I (PCRLF 685 012632 4765 JMS I (PCRLF /LEAVE A SPACE BETWEEN DIRECTORIES 686 012633 2023 ISZ INEOF /SIMULATE "END OF FILE" FOR INPUT ROUTINE 687 012634 7240 CLA CMA 688 012635 3764 DCA I (INCHCT /AS WELL AS "END OF BUFFER" 689 012636 5617 JMP I ENDFUJ 690 IMHNDL, /V3 691 012637 0000 SQTRA, 0 692 012640 1237 TAD SQTRA 693 012641 3254 DCA IMTRA /FAKE A CALL TO "IMTRA" 694 012642 1034 TAD RECCNT /SETTING UP THE ARGS TO DO THE SQUISHING FOR US 695 012643 3763 DCA I (INCTR 696 012644 1024 TAD IHNDLR 697 012645 3237 DCA IMHNDL 698 012646 1033 TAD INBLK 699 012647 3310 DCA IMREC 700 012650 1030 TAD OUTBLK 701 012651 3762 DCA I (OUCCNT 702 012652 3023 DCA INEOF 703 012653 5267 JMP IMRCLP 704 705 012654 0000 IMTRA, 0 706 012655 4763 JMS I (IOPEN /INITIALIZE INPUT ROUTINE 707 012656 1023 AGAIN, TAD INEOF /IOPEN ALWAYS SETS INEOF 708 012657 7650 SNA CLA /KEEP READING? 709 012660 5267 JMP IMRCLP /YES 710 /NO, OPEN NEXT FILE 711 012661 4764 IMFILP, JMS I (INNEWF /SET UP PARAMS FOR NEXT FILE 712 012662 5654 JMP I IMTRA /NO NEXT FILE 713 012663 1761 TAD I (INHNDL 714 012664 3237 DCA IMHNDL /GET DEVICE HANDLER ENTRY 715 012665 1760 TAD I (INREC 716 012666 3310 DCA IMREC /AND STARTING BLOCK NUMBER 717 012667 1763 IMRCLP, TAD I (INCTR 718 012670 7100 CLL 719 012671 1357 TAD (15 720 012672 7420 SNL /IF LINK IS ON, THERE ARE LESS THAN 16 BLOCKS LEFT 721 012673 3763 DCA I (INCTR 722 012674 7430 SZL 723 012675 2023 ISZ INEOF 724 012676 7172 CLL CML CMA RTR 725 012677 7012 RTR 726 012700 7012 RTR 727 012701 1356 TAD (3201 /FORM A FULL OR PARTIAL READ CONTROL WORD 728 012702 3306 DCA IMCTLW 729 012703 4755 JMS I (CTCTST /CHECK FOR ^C 730 012704 6202 CIF 0 731 012705 4637 JMS I IMHNDL 732 012706 0000 IMCTLW, 0 733 012707 0000 OUBUF 734 012710 0000 IMREC, 0 735 012711 4754 JMS I (SLASHG 736 012712 0011 IMERRX-. 737 012713 1310 TAD IMREC 738 012714 1357 TAD (15 739 012715 3310 DCA IMREC /UPDATE BLOCK NUMBER 740 012716 7330 CLA CLL CML RAR 741 012717 1306 TAD IMCTLW 742 012720 4753 IMOUT, JMS I (OUTDMP /WRITE OUT WHAT WE JUST READ IN 743 012721 5771 JMP I (AOUERR /WRITE ERROR - BAD! 744 012722 5256 JMP AGAIN /V3 745 012723 2023 IMERRX, ISZ INEOF /SIGNAL EOF OR WORSE 746 012724 7710 SPA CLA /WHICH ONE IS IT? 747 012725 5340 JMP IM7600 748 012726 1352 TAD (6377 /MARCH DOWN THROUGH CORE 749 012727 3021 IMEFLP, DCA CHAR /LOOKING FOR THE FIRST NON-ZERO WORD 750 012730 6201 CDF 0 751 012731 1421 TAD I CHAR 752 012732 7640 SZA CLA 753 012733 5343 JMP IMNZRO 754 012734 7340 CLA CMA CLL 755 012735 1021 TAD CHAR 756 012736 7430 SZL /IF WE GO THROUGH THE BUFFER WITHOUT A NON-ZERO WORD 757 012737 5327 JMP IMEFLP 758 012740 7600 IM7600, 7600 759 012741 4751 JMS I (PIPERR /SOMETHING IS WRONG (HANDLER SHOULD HAVE INSERTED 760 012742 0004 4 /A ^Z AT LEAST) 761 012743 6211 IMNZRO, CDF 10 762 012744 1021 TAD CHAR 763 012745 7130 CLL CML RAR 764 012746 0340 AND IM7600 765 012747 1372 TAD (200 /GET THE LENGTH OF THE USEFUL PART OF THE BUFFER 766 012750 5320 JMP IMOUT /AS AN OUTPUT CONTROL WORD AND GO OUTPUT IT 767 012751 3517 PAGE 012752 6377 012753 2247 012754 2520 012755 2507 012756 3201 012757 0015 012760 2053 012761 2146 012762 2352 012763 2001 012764 2135 012765 4142 012766 4050 012767 7772 012770 4101 012771 6535 012772 0200 012773 5326 012774 6126 012775 2472 012776 3343 012777 3700 768 /** PIP STARTS HERE (OR HERE+1 IF CHAINED TO) ** 769 770 013000 5230 PIPSA, JMP PIPCD /NORMAL ENTRY/RE-ENTRY - CALL CD 771 013001 5233 JMP NOPCD /ENTRY FROM CHAIN COMMAND - ASSUME CD AREA SET UP 772 /PART OF ASCII PROCESSOR - CLEAN UP AT END OF LINE AND END OF FILE 773 774 013002 1021 LFEED, TAD CHAR 775 013003 3410 DCA I XR /PUT THE LINE FEED IN THE LINE BUFFER 776 013004 3410 EOL, DCA I XR /MARK THE END OF USEFUL INFO 777 013005 4777 JMS I (CTCTST 778 013006 1376 TAD (ABUF-1 779 013007 3010 DCA XR /RESET BUFFER POINTER 780 013010 1410 EOLLP, TAD I XR /GET A CHARACTER FROM THE LINE BUFFER 781 013011 7450 PIPSNA, SNA /ZERO MEANS NO MORE CHARS 782 013012 5216 JMP EOFTST 783 013013 4775 JMS I (OCHAR /OUTPUT THE CHARACTER 784 013014 5774 JMP I (AOUERR 785 013015 5210 JMP EOLLP 786 013016 1314 EOFTST, TAD AEOFFG 787 013017 7650 SNA CLA /END OF INPUT ENCOUNTERED? 788 013020 5773 JMP I (ASCIGO /NO - GET NEXT LINE 789 013021 4772 ACLOSE, JMS I (OCLOSE /YES - CLOSE THE OUTPUT FILE 790 013022 5774 JMP I (AOUERR /ERROR ON CLOSE 791 013023 1771 PIP, TAD I (MPARAM-1 /V3 792 013024 7700 SMA CLA /ALTMODE TERMINATE LAST COMMAND STRING? 793 013025 5230 JMP PIPCD /NO 794 013026 6203 CDF CIF 0 /YES 795 013027 5770 JMP I (7605 /EXIT TO OS/8 WITHOUT SAVING CORE 796 013030 4767 PIPCD, JMS I (200 /OF COURSE THE MONITOR IS IN CORE! 797 013031 0005 5 /COMMAND DECODE 798 013032 0000 0 /NO ASSUMED EXTENSIONS ON INPUT 799 L20, /V3 800 013033 4776 NOPCD, JMS I (ONCE /REPLACED BY '20' BY ONCE-ONLY CODE 801 013034 4766 JMS I (SRSTOR /CLEAR /S OR /Y;READ MONITOR 802 013035 3026 DCA SQFLAG /CLEAR /S INDICATOR 803 013036 1211 TAD PIPSNA 804 013037 3765 DCA I (INCTZF /RESET INPUT SWITCH TO DETECT "^Z"'S 805 013040 1764 TAD I (MPARAM+1 806 013041 0363 AND (40 /"S" SWITCH 807 013042 7640 SZA CLA 808 013043 5762 JMP I (SQUISH /IT WAS ON - COMPRESS THE INDICATED DEVICES 809 013044 1761 TAD I (MPARAM+2 810 013045 7006 RTL 811 013046 7630 SZL CLA /"Z" SWITCH IN THE LINK 812 013047 4760 JMS I (DZERO /ZERO DIRECTORY BEFORE PROCEEDING 813 013050 1757 TAD I (MPARAM 814 013051 0356 AND (400 /"D" SWITCH 815 013052 7640 SZA CLA 816 013053 4755 JMS I (DELETE /DELETE OUTPUT FILE 817 013054 1761 TAD I (MPARAM+2 /IS /Y ON? 818 013055 7710 SPA CLA 819 013056 5754 JMP I (SYSCOP /YEP..TRANSFER SYSTEM HEAD 820 013057 1757 TAD I (MPARAM 821 013060 0353 AND (301 /"E","F" AND "L" SWITCHES 822 013061 7440 SZA /ANY ONE OF THEM ON? 823 013062 5752 JMP I (DIR /YES - LIST A DIRECTORY 824 013063 1757 TAD I (MPARAM 825 013064 7006 RTL 826 013065 0363 AND (40 /"I" SWITCH ROTATED TWO LEFT 827 013066 7640 SZA CLA 828 013067 5751 JMP I (IMAGE /IMAGE MODE TRANSFER 829 013070 1750 TAD I (7617 /MUST PRESERVE THE LINK 830 013071 7650 SNA CLA /V3 IMAGE MODE ALLOWS NO INPUT FILE 831 013072 5223 JMP PIP /TERMINATE HERE IF NO INPUT SIDE 832 013073 7630 SZL CLA /"B" SWITCH IN LINK 833 013074 5747 JMP I (BINARY /BINARY MODE TRANSFER 834 835 /DEFAULT MODE OF TRANSFER IS ASCII 836 837 013075 1764 ASCII, TAD I (MPARAM+1 838 013076 0233 AND L20 839 013077 3333 DCA COPTSW 840 013100 1333 TAD COPTSW 841 013101 4746 JMS I (ASCI2 /TEST FOR OUTPUT DEVICE 842 013102 4745 JMS I (OUTOPN 843 013103 4744 JMS I (IOPEN /OPEN THE INPUT FILES 844 013104 3314 DCA AEOFFG /ZERO THE END-OF-FILE FLAG 845 013105 4743 JMS I (LEADER 846 013106 5773 JMP I (ASCIGO 847 848 /ENTRY ON END OF INPUT 849 013107 7710 ASCEOF, SPA CLA /WAS IT END OF INPUT OR AN INPUT ERROR? 850 013110 4742 PER4, JMS I (PIPERR 851 013111 0004 4 852 013112 2314 ISZ AEOFFG /SET END-OF-INPUT FLAG 853 013113 5204 JMP EOL /PROCESS LAST LINE (IF ANY) 854 013114 0000 AEOFFG, 0 855 /SUBROUTINE TO OUTPUT RUBOUTS AFTER FORM CONTROL CHARACTERS 856 013115 0000 RUBOUT, 0 /UNLESS OUTPUT IS TO A DIRECTORY DEVICE 857 013116 3020 DCA TEMP /STORE COUNT 858 013117 4741 JMS I (OTYPE /GET TYPE OF OUTPUT DEVICE 859 013120 7710 SPA CLA 860 013121 5715 JMP I RUBOUT /DIRECTORY DEVICE - DON'T BOTHER 861 013122 1021 RBTLP, TAD CHAR 862 013123 1340 TAD (-214 863 013124 7650 SNA CLA /IS THE FORM CONTROL CHAR A FORM-FEED? 864 013125 7001 IAC /YES - OUTPUT BLANK TAPE INSTEAD 865 013126 1337 TAD (377 866 013127 3410 DCA I XR /PUT IN BUFFER 867 013130 2020 ISZ TEMP 868 013131 5322 JMP RBTLP /LOOP FOR THE REQUISITE COUNT 869 013132 5715 JMP I RUBOUT 870 013133 0000 COPTSW, 0 871 872 013134 7710 DEND, SPA CLA 873 013135 5310 JMP PER4 874 013136 5221 JMP ACLOSE 875 013137 0377 PAGE 013140 7564 013141 2473 013142 3517 013143 3531 013144 2001 013145 3343 013146 6465 013147 4401 013150 7617 013151 2600 013152 2540 013153 0301 013154 6001 013155 3401 013156 0400 013157 7643 013160 3435 013161 7645 013162 5200 013163 0040 013164 7644 013165 2127 013166 5664 013167 0200 013170 7605 013171 7642 013172 2310 013173 3200 013174 6535 013175 2410 013176 6600 013177 2507 876 *3200 877 /ASCII PROCESSOR CONTINUED 878 879 013200 1377 ASCIGO, TAD (ABUF-2 880 013201 3010 DCA XR 881 013202 3410 DCA I XR /PROTECT AGAINST NULL LINE WITH "T" OPTION 882 013203 3342 DCA COLCT /ZERO COLUMN COUNTER FOR TAB CONVERSION 883 013204 4776 ACHLP, JMS I (ICHAR /GET A CHARACTER 884 013205 5775 JMP I (ASCEOF /END OF INPUT OR WORSE 885 013206 0374 AND (177 /MASK OUT PARITY BIT 886 013207 7440 SZA /IGNORE BLANK TAPE AND LEADER/TRAILER 887 013210 1373 TAD (-177 888 013211 7450 SNA 889 013212 5204 JMP ACHLP /DITTO RUBOUTS 890 013213 1372 TAD (177-32 /V3C 891 013214 7450 SNA 892 013215 5771 JMP I (ASCPTCH /7-BIT ^Z CHECK 893 013216 1370 TAD (232 /FORCE COLUMN 8 ON 894 013217 3021 DCA CHAR 895 013220 1021 TAD CHAR 896 013221 1367 TAD (-216 897 013222 7100 CLL 898 013223 1350 TAD ASCI5 899 013224 7420 SNL /IS THE CHARACTER A FORM CONTROL CHARACTER? 900 013225 5237 JMP CINSRT /NO 901 013226 1231 TAD ASCJMP /YES - GO TO APPROPRIATE ROUTINE 902 013227 3230 DCA .+1 903 013230 7402 HLT 904 013231 5632 ASCJMP, JMP I .+1 905 013232 3251 TAB 906 013233 3002 LFEED 907 013234 3271 VTAB 908 013235 3311 FFEED 909 013236 3321 CARRET 910 013237 7600 CINSRT, 7600 /GRP 2 CLA 911 013240 1021 TAD CHAR 912 013241 3410 ADCAXR, DCA I XR /STORE THE CHARACTER IN THE LINE BUFFER 913 013242 2342 ISZ COLCT /ALWAYS BUMP THE COLUMN POINTER 914 013243 1010 TESTXR, TAD XR 915 013244 1366 TAD (-ABUF-226 916 013245 7710 SPA CLA /HAS THE BUFFER OVERFLOWED? 917 013246 5204 JMP ACHLP /NO - GET NEXT CHARACTER 918 013247 4765 JMS I (PIPERR 919 013250 0001 1 920 013251 1764 TAB, TAD I (COPTSW 921 013252 7650 SNA CLA /DO WE WANT TO CONVERT? 922 013253 5264 JMP TABRBT /NO 923 013254 1363 TABLP, TAD (240 924 013255 3410 DCA I XR /OUTPUT A SPACE 925 013256 2342 ISZ COLCT 926 013257 1342 TAD COLCT 927 013260 0362 AND (7 928 013261 7640 SZA CLA /IS THE COLUMN COUNTER A MULTIPLE OF 8? 929 013262 5254 JMP TABLP /NOT YET 930 013263 5243 JMP TESTXR /YES - CHECK BUFFER OVERFLOW 931 013264 1021 TABRBT, TAD CHAR 932 013265 3410 DCA I XR 933 013266 7240 CLA CMA 934 013267 4761 JMS I (RUBOUT /TWO RUBOUTS FOLLOW A TAB 935 013270 5243 JMP TESTXR /CHECK FOR BUFFER OVERFLOW 936 013271 1764 VTAB, TAD I (COPTSW 937 013272 7640 SZA CLA /SHOULD WE CONVERT? 938 013273 5302 JMP VTLF /YES 939 013274 1021 TAD CHAR 940 013275 3410 DCA I XR 941 013276 1360 TAD (-4 942 013277 4761 JMS I (RUBOUT /FOUR RUBOUTS AFTER A VERTICAL TAB 943 013300 5757 JMP I (EOL 944 013301 1360 FFLF, TAD (-4 /NINE LINE FEED SIMULATE A FORM FEED 945 013302 1356 VTLF, TAD (-5 /FIVE LINE FEEDS SIMULATE A VERTICAL TAB 946 013303 3020 DCA TEMP 947 013304 1355 TAD (212 948 013305 3410 DCA I XR 949 013306 2020 ISZ TEMP 950 013307 5304 JMP .-3 951 013310 5757 JMP I (EOL /FORM FEED AND VERTICAL TAB ARE LINE ENDERS 952 013311 1764 FFEED, TAD I (COPTSW 953 013312 7640 SZA CLA /SHOULD WE CONVERT? 954 013313 5301 JMP FFLF /YES 955 013314 1021 TAD CHAR 956 013315 3410 DCA I XR 957 013316 1354 TAD (-11 /NINE RUBOUTS AFTER A FORM FEED 958 013317 4761 JMS I (RUBOUT 959 013320 5757 JMP I (EOL 960 013321 1753 CARRET, TAD I (MPARAM 961 013322 7006 RTL 962 013323 7700 SMA CLA /"C" SWITCH MEANS DELETE TRAILING BLANKS FROM CARDS 963 013324 5337 JMP NOTOPT /IT WASN'T ON 964 013325 1010 TOPT, TAD XR 965 013326 3020 DCA TEMP 966 013327 1420 TAD I TEMP 967 013330 1352 TAD (-240 968 013331 7640 SZA CLA /WAS THE LAST CHAR ON THE LINE A SPACE? 969 013332 5337 JMP NOTOPT /NO 970 013333 7240 CLA CMA 971 013334 1010 TAD XR /YES - BACK UP THE LINE POINTER 972 013335 3010 DCA XR 973 013336 5325 JMP TOPT 974 013337 1021 NOTOPT, TAD CHAR 975 013340 3410 DCA I XR /STORE THE CARRIAGE RETURN IN THE BUFFER 976 013341 5243 JMP TESTXR /CARRIAGE RETURN IS NOT A LINE TERMINATOR 977 013342 0000 COLCT, 0 978 979 013343 0000 OUTOPN, 0 980 013344 4751 JMS I (OOPEN 981 013345 7700 SMA CLA 982 013346 5743 JMP I OUTOPN 983 013347 4765 JMS I (PIPERR 984 013350 0005 ASCI5, 5 985 013351 2200 PAGE 013352 7540 013353 7643 013354 7767 013355 0212 013356 7773 013357 3004 013360 7774 013361 3115 013362 0007 013363 0240 013364 3133 013365 3517 013366 0751 013367 7562 013370 0232 013371 6543 013372 0145 013373 7601 013374 0177 013375 3107 013376 2014 013377 6577 986 /SUBROUTINES CALLED BY THE REST OF PIP 987 988 013400 0770 K770, 770 /** DON'T MOVE THIS CONSTANT 989 013401 0000 DELETE, 0 990 013402 1320 TAD P7600 991 013403 3223 DCA DPFILE 992 013404 7346 CLA CLL CMA RTL 993 013405 3021 DCA CHAR /MAXIMUM OF THREE OUTPUT FILES 994 013406 1377 DELOOP, TAD (7201 995 013407 3215 DCA DLHNDL 996 013410 1623 TAD I DPFILE 997 013411 7450 SNA /DOES THIS FILE EXIST? 998 013412 5601 JMP I DELETE /THAT'S ALL 999 013413 4733 JMS I C200 1000 013414 0001 1 /ASSIGN HANDLER FOR THE DELETION 1001 013415 0000 DLHNDL, 0 1002 013416 7402 HLT 1003 013417 1623 TAD I DPFILE /RELOAD DEVICE NUMBER FOR DELETE 1004 013420 2223 ISZ DPFILE /BUMP DPFILE TO POINT TO THE FILE NAME 1005 013421 4733 JMS I C200 /DEVICE NUMBER IN AC 1006 013422 0004 DP4, 4 /CLOSE - USED AS DELETE IN THIS CASE 1007 013423 0000 DPFILE, 0 /POINTER TO FILE NAME 1008 013424 0000 0 /ZERO LENGTH FOR DELETE 1009 013425 4776 JMS I (PIPERR /FILE WASN'T THERE TO BE DELETED 1010 013426 0003 3 1011 013427 1223 TAD DPFILE 1012 013430 1222 TAD DP4 1013 013431 3223 DCA DPFILE 1014 013432 2021 ISZ CHAR 1015 013433 5206 JMP DELOOP /DELETE AS MANY FILES AS HE LISTED(UP TO 3) 1016 013434 5601 JMP I DELETE 1017 013435 0000 DZERO, 0 /SUBROUTINE TO ZERO THE DIRECTORY OF THE 1018 /FIRST OUTPUT DEVICE 1019 013436 4775 JMS I (OTYPE 1020 013437 7106 CLL RTL 1021 013440 7430 SZL /IS DEVICE READ-ONLY? 1022 013441 5313 JMP OZERR /YES - ERROR 1023 013442 7012 RTR 1024 013443 0200 AND K770 /MASK OUT DEVICE TYPE 1025 013444 7112 CLL RTR 1026 013445 7010 RAR 1027 013446 1374 TAD (DEVLEN /USE IT TO INDEX A TABLE OF DEVICE LENGTHS 1028 013447 3317 DCA PIPERR 1029 013450 1717 TAD I PIPERR 1030 013451 7450 SNA 1031 013452 5635 JMP I DZERO /DEVICE LENGTH ZERO MEANS NON-DIRECTORY DEVICE 1032 013453 3317 DCA PIPERR /STORE LENGTH 1033 013454 1377 TAD (OUDEVH+1 1034 013455 3261 DCA OZHNDL 1035 013456 1720 TAD I P7600 1036 013457 4733 JMS I C200 1037 013460 0001 1 /ASSIGN DEVICE, FETCH HANDLER 1038 013461 0000 OZHNDL, 0 1039 013462 7402 HLT 1040 013463 1773 TAD I (MPARAM+2 /IF /Y ON, DO SYSTEM ZERO 1041 013464 7710 SPA CLA 1042 013465 5274 JMP ZRO70 1043 013466 1261 TAD OZHNDL /BUT IF NOT, CHECK FOR SYSTEM ZERO 1044 013467 1372 TAD (-7607 1045 013470 7640 SZA CLA 1046 013471 5275 JMP ZRO70+1 /NOT SYSTEM FILES BEGIN AT 7 1047 013472 4771 JMS I (CONFRM /ASK IF HE'S SURE 1048 013473 6530 SYSZRO /V3 1049 013474 1370 ZRO70, TAD (61 1050 013475 1367 TAD (7 1051 013476 3766 DCA I (DFORG 1052 013477 3765 DCA I (SQFLAG /AND CLEAR OUT SQUISHES 1053 013500 1317 TAD PIPERR 1054 013501 1766 TAD I (DFORG 1055 013502 3764 DCA I (DLENGT 1056 013503 4763 JMS I (GETEQ 1057 013504 3762 DCA I (DWASTE /DEFINE # OF WASTE WORDS 1058 013505 3761 DCA I (MPARAM+3 /KILL = OPTION FOR FUTURE /I TRANSFERS 1059 013506 6202 CIF 0 1060 013507 4661 JMS I OZHNDL 1061 013510 5410 5410 /V3 OUTPUT 6 BLOCKS FROM FIELD 1 1062 013511 6200 DIRECT 1063 013512 0001 1 /ALL DIRECTORIES ARE IN RECORD 1 1064 013513 4776 OZERR, JMS I (PIPERR /ERROR WHILE ZEROING DIRECTORY 1065 013514 0002 2 1066 013515 3007 DCA OLDDIR /ZERO DIRECTORY POINTER TO FORCE A NEW READ 1067 013516 5635 JMP I DZERO 1068 013517 0000 PIPERR, 0 1069 013520 7600 P7600, 7600 /V3 CLA 1070 013521 4760 JMS I (SRSTOR /RESET 07600! 1071 013522 6211 CDF 10 /JUST IN CASE 1072 013523 1717 TAD I PIPERR /GET ARG 1073 013524 1357 TAD (ERRTBL 1074 013525 3020 DCA TEMP 1075 013526 1420 TAD I TEMP 1076 013527 4756 JMS I (ERPRNT 1077 013530 5755 JMP I (PIP /RESTART PIP 1078 1079 013531 0000 LEADER, 0 1080 013532 4775 JMS I (OTYPE 1081 013533 0200 C200, AND K770 /GET THE TYPE OF THE OUTPUT DEVICE 1082 013534 1354 TAD (-PTP /IS IT A PAPER TAPE PUNCH? 1083 013535 7640 SZA CLA 1084 013536 5731 JMP I LEADER /NO 1085 013537 1320 TAD P7600 1086 013540 3020 DCA TEMP 1087 013541 4753 JMS I (OCHAR /PUT OUT SOME LEADER 1088 013542 5752 JMP I (AOUERR 1089 013543 2020 ISZ TEMP 1090 013544 5341 JMP .-3 1091 013545 5731 JMP I LEADER 1092 013552 6535 PAGE 013553 2410 013554 7760 013555 3023 013556 4600 013557 4737 013560 5664 013561 7646 013562 6204 013563 5273 013564 6206 013565 0026 013566 6201 013567 0007 013570 0061 013571 3734 013572 0171 013573 7645 013574 3600 013575 2473 013576 3517 013577 7201 1093 /TABLE OF DEVICE LENGTHS FOR /Z OPTION 1094 1095 013600 0000 DEVLEN, 0;0;0;0;0;1520 /RK08 (1520= - DECIMAL 3248) 013601 0000 013602 0000 013603 0000 013604 0000 013605 1520 1096 013606 6001 6001;4001;2001;0001 /RF08 IN VARIOUS SIZES 013607 4001 013610 2001 013611 0001 1097 /(CHEATS A BLOCK ON LARGEST TO KEEP IT NON-ZERO) 1098 013612 7601 7601;7401;7201;7001 /DF32 IN VARIOUS SIZES 013613 7401 013614 7201 013615 7001 1099 /(CHEATS A BLOCK TO AVOID HARDWARE TROUBLE) 1100 013616 6437 6437;6437 /DECTAPE AND LINCTAPE 013617 6437 1101 013620 0000 ZBLOCK 1 /20 MAGTAPE 1102 013621 6437 6437 /21 TD8E 1103 013622 0000 0 1104 013623 1520 1520 / 1/2 OF AN RK8E IS 23 1105 013624 0000 0 /24 1106 013625 7022 7022 /25 RX01 FLOPPY DISK 1107 013626 0000 ZBLOCK 52 /ALL THE REST 013627 0000 013630 0000 013631 0000 013632 0000 013633 0000 013634 0000 013635 0000 013636 0000 013637 0000 013640 0000 013641 0000 013642 0000 013643 0000 013644 0000 013645 0000 013646 0000 013647 0000 013650 0000 013651 0000 013652 0000 013653 0000 013654 0000 013655 0000 013656 0000 013657 0000 013660 0000 013661 0000 013662 0000 013663 0000 013664 0000 013665 0000 013666 0000 013667 0000 013670 0000 013671 0000 013672 0000 013673 0000 013674 0000 013675 0000 013676 0000 013677 0000 1108 1109 1110 013700 0000 FIXLEN, 0 /ROUTINE TO ESTIMATE OUTPUT FILE LENGTH 1111 013701 1777 TAD I (7600 1112 013702 0376 AND (7760 1113 013703 7640 SZA CLA /DID THE USER PROVIDE AN ESTIMATE? 1114 013704 5700 JMP I FIXLEN /YES - USE IT 1115 013705 3021 DCA CHAR 1116 013706 1375 TAD (7617 1117 013707 3020 DCA TEMP 1118 013710 1420 FIXLP, TAD I TEMP /GET NEXT INPUT FILE 1119 013711 7450 SNA 1120 013712 5324 JMP FIXOVR /NO MORE INPUT FILES 1121 013713 0376 AND (7760 1122 013714 7141 CIA CLL /GET LENGTH AS A POSITIVE NUMBER 1123 /(LENGTH OF ZERO TURNS LINK ON) 1124 013715 1021 TAD CHAR 1125 013716 3021 DCA CHAR /UPDATE CUMULATIVE LENGTH 1126 013717 7630 SZL CLA /DID CUMULATIVE LENGTH OVERFLOW 256 BLOCKS? 1127 013720 5700 JMP I FIXLEN /YES - CAN'T ESTIMATE IT 1128 013721 2020 ISZ TEMP 1129 013722 2020 ISZ TEMP 1130 013723 5310 JMP FIXLP 1131 013724 1021 FIXOVR, TAD CHAR 1132 013725 1777 TAD I (7600 1133 013726 3777 DCA I (7600 /STICK LENGTH IN OUTPUT FILE DESCRIPTOR 1134 013727 5700 JMP I FIXLEN 1135 013730 1617 NOYES, TEXT /NO/ 013731 0000 1136 013732 3105 TEXT /YES/ 013733 2300 1137 1138 013734 0000 CONFRM, 0 1139 013735 1774 TAD I (MPARAM+1 1140 013736 7006 RTL /'O' BIT TO SIGN 1141 013737 7710 SPA CLA 1142 013740 5364 JMP GOTCON /V3 'O' MEANS OK, ASSUME 'YES' 1143 013741 1734 TAD I CONFRM /V3 1144 013742 4773 JMS I (ERPRNT 1145 013743 6031 KSF 1146 013744 5343 JMP .-1 1147 013745 4772 JMS I (CTCTST 1148 013746 6036 KRB /LOOK AT HIS REPLY 1149 013747 0371 AND (177 /IGNORE PARITY TTY 1150 013750 1370 TAD (-"Y!7600 /V3 1151 013751 7650 SNA CLA /IS IT YES? 1152 013752 2026 ISZ SQFLAG /SET SQFLAG TO 1 (NEEDED 1 LATER) 1153 013753 1026 TAD SQFLAG /USE SQFLAG AS INDEX FOR MESSAGE 1154 013754 7104 CLL RAL 1155 013755 1367 TAD (NOYES 1156 013756 4773 JMS I (ERPRNT 1157 013757 1026 TAD SQFLAG 1158 013760 7650 SNA CLA 1159 013761 5766 JMP I (PIP 1160 013762 2334 CNFMXT, ISZ CONFRM 1161 013763 5734 JMP I CONFRM 1162 1163 013764 2026 GOTCON, ISZ SQFLAG /SET SQFLAG 1164 013765 5362 JMP CNFMXT /AND TAKE SKIP EXIT 1165 013766 3023 PAGE 013767 3730 013770 7647 013771 0177 013772 2507 013773 4600 013774 7644 013775 7617 013776 7760 013777 7600 1166 /DIRECTORY PRINTER FOR PIP 1167 MDATE=7666 1168 1169 014000 4777 DIRPRE, JMS I (OUTOPN /OPEN THE OUTPUT FILE 1170 014001 1376 TAD (ABUF 1171 014002 3021 DCA CHAR /ABUF WILL BE A TEMPORARY ARRAY OF STARTING FILES 1172 014003 1375 TAD (7617 1173 014004 3020 DCA TEMP 1174 014005 1775 TAD I (7617 1175 014006 7450 SNA 1176 014007 4774 JMS I (DSKNUM 1177 014010 3775 DCA I (7617 /DEFAULT DIRECTORY IS DSK: 1178 014011 1420 DFUJLP, TAD I TEMP 1179 014012 7450 SNA /ARE WE THROUGH WITH THE INPUT DEVICES? 1180 014013 5240 JMP GETDIR /YES 1181 014014 0373 AND (17 1182 014015 3420 DCA I TEMP /ONLY THE DEVICE NUMBER IS IMPORTANT 1183 014016 1420 TAD I TEMP 1184 014017 1372 TAD (DCB-1 1185 014020 3250 DCA PRWD 1186 014021 7326 CLA CLL CML RTL 1187 014022 1020 TAD TEMP 1188 014023 3022 DCA INFPTR /THIS SERVES NO FUNCTION EXCEPT IMPROVING ERROR MESSAGES 1189 014024 1650 TAD I PRWD 1190 014025 7700 SMA CLA /IS THE DEVICE A DIRECTORY DEVICE? 1191 014026 4771 JMS I (PIPERR /NO 1192 014027 0006 6 1193 014030 2020 ISZ TEMP 1194 014031 1420 TAD I TEMP 1195 014032 3421 DCA I CHAR /SAVE THE STARTING BLOCK NUMBER 1196 014033 7201 CLA IAC 1197 014034 3420 DCA I TEMP /READ FROM THE DIRECTORY 1198 014035 2020 ISZ TEMP 1199 014036 2021 ISZ CHAR 1200 014037 5211 JMP DFUJLP 1201 014040 1376 GETDIR, TAD (ABUF 1202 014041 3021 DCA CHAR 1203 014042 4342 JMS PCRLF 1204 014043 1770 TAD I (MDATE 1205 014044 4767 JMS I (PDATE 1206 014045 4342 JMS PCRLF 1207 014046 4766 JMS I (IOPEN /RESET POINTERS - WERE GONNA FAKE OUT THOSE "GENERAL" 1208 /ROUTINES 1209 014047 5765 JMP I (NXTDIR 1210 014050 0000 PRWD, 0 /ROUTINE TO PRINT SIXBIT TEXT 1211 014051 7450 SNA /IS COUNT ZERO? 1212 014052 7040 CMA /MAKE IT ONE 1213 014053 3267 DCA PRCT /STORE COUNT 1214 014054 1650 PRWDLP, TAD I PRWD 1215 014055 7012 PR212, RTR 1216 014056 7012 RTR 1217 014057 7012 RTR 1218 014060 4270 JMS PR6BIT 1219 014061 1650 TAD I PRWD 1220 014062 4270 JMS PR6BIT 1221 014063 2250 ISZ PRWD 1222 014064 2267 ISZ PRCT 1223 014065 5254 JMP PRWDLP 1224 014066 5650 JMP I PRWD 1225 014067 0000 PRCT, 0 1226 014070 0000 PR6BIT, 0 1227 014071 0364 AND (77 1228 014072 7440 SZA 1229 014073 1363 TAD (240 /V3 1230 014074 0364 AND (77 /V3 1231 014075 1363 TAD (240 /V3 1232 014076 4762 JMS I (OCHAR 1233 014077 5761 JMP I (AOUERR 1234 014100 5670 JMP I PR6BIT 1235 014101 0000 PRNUM, 0 1236 014102 3250 DCA PRWD 1237 014103 3020 DCA TEMP 1238 014104 1360 TAD (PWRTEN 1239 014105 3342 DCA PCRLF 1240 014106 3270 PRNMLP, DCA PR6BIT 1241 014107 1742 TAD I PCRLF 1242 014110 7450 SNA 1243 014111 5336 JMP PRLAST /V3 1244 014112 7100 CLL 1245 014113 1250 TAD PRWD 1246 014114 7420 SNL 1247 014115 5321 JMP .+4 1248 014116 3250 DCA PRWD 1249 014117 2270 ISZ PR6BIT 1250 014120 5307 JMP PRNMLP+1 1251 014121 7200 CLA 1252 014122 1270 TAD PR6BIT 1253 014123 1020 TAD TEMP 1254 014124 7450 SNA 1255 014125 5334 PBLJMP, JMP PRBLNK /INCREMENTED BY PDATE TO KILL LEADING BLANKS 1256 014126 1357 TAD (260 1257 014127 4270 JMS PR6BIT 1258 014130 7330 CLA CLL CML RAR 1259 014131 3020 DCA TEMP 1260 014132 2342 ISZ PCRLF 1261 014133 5306 JMP PRNMLP 1262 014134 4270 PRBLNK, JMS PR6BIT 1263 014135 5332 JMP .-3 1264 014136 1250 PRLAST, TAD PRWD /V3 1265 014137 1357 TAD (260 /V3 1266 014140 4270 JMS PR6BIT /V3 1267 014141 5701 JMP I PRNUM /V3 1268 014142 0000 PCRLF, 0 1269 014143 1356 TAD (215 1270 014144 4762 JMS I (OCHAR 1271 014145 5761 JMP I (AOUERR 1272 014146 1255 TAD PR212 1273 014147 4762 JMS I (OCHAR 1274 014150 5761 JMP I (AOUERR 1275 014151 5742 JMP I PCRLF 1276 1277 014152 6030 PWRTEN, -1750;-144;-12;0 /V3 014153 7634 014154 7766 014155 0000 1278 014156 0215 PAGE 014157 0260 014160 4152 014161 6535 014162 2410 014163 0240 014164 0077 014165 4200 014166 2001 014167 4650 014170 7666 014171 3517 014172 7757 014173 0017 014174 4705 014175 7617 014176 6601 014177 3343 1279 /MAIN DIRECTORY PRINTING LOOP 1280 1281 014200 4777 NXTDIR, JMS I (ICHAR /FAKE, FAKE 1282 014201 5776 JMP I (DEND 1283 014202 7200 CLA /WE DON'T WANT THE CHARACTER 1284 014203 3035 DCA ECOUNT 1285 014204 1375 TAD (INBUF-1 /WE WANT THE BUFFER! 1286 014205 3010 NEWSEG, DCA XR 1287 014206 6201 CDF 0 1288 014207 1410 TAD I XR 1289 014210 3030 DCA DCOUNT /NUMBER OF ENTRIES 1290 014211 1030 TAD DCOUNT 1291 014212 7100 CLL 1292 014213 1374 TAD (100 1293 014214 7620 SNL CLA 1294 014215 4773 JMS I (PIPERR 1295 014216 0011 11 1296 014217 1410 TAD I XR 1297 014220 3025 DCA BLOKNO /FIRST BLOCK OF FILE STORAGE 1298 014221 1410 TAD I XR 1299 014222 3031 DCA DLINK /LINK TO NEXT SEGMENT 1300 014223 2010 ISZ XR /BUMP XR PAST FLAG WORD 1301 014224 1410 TAD I XR 1302 014225 3032 DCA WASTE 1303 014226 6201 NAMELP, CDF 0 1304 014227 1410 TAD I XR 1305 014230 7450 SNA /WHAT TYPE OF ENTRY IS IT? 1306 014231 5325 JMP DEMPTY /A FREE FILE 1307 014232 3264 DCA NAME1 /A PERMENANT OR TENTATIVE FILE 1308 014233 1410 TAD I XR 1309 014234 3265 DCA NAME2 1310 014235 1410 TAD I XR 1311 014236 3266 DCA NAME3 1312 014237 1410 TAD I XR 1313 014240 3275 DCA NAME4 1314 014241 1410 TAD I XR 1315 014242 3033 DCA DDATE 1316 014243 1032 TAD WASTE /COMPENSATE FOR THE DATE INCREMENT 1317 014244 7040 CMA /AND THE WASTE WORDS 1318 014245 1010 TAD XR 1319 014246 3010 DCA XR 1320 014247 1410 TAD I XR 1321 014250 7450 SNA /IS IT A TENTATIVE FILE? 1322 014251 5312 JMP ADDLEN+1 /YES - TENTATIVE FILES ARE ALWAYS IGNORED 1323 014252 7041 CIA 1324 014253 3024 DCA FLENGT /NO - STORE THE LENGTH 1325 014254 6211 CDF 10 1326 014255 1421 TAD I CHAR /GET THE STARTING FILE FOR THIS LISTING 1327 014256 7141 CIA CLL 1328 014257 1025 TAD BLOKNO 1329 014260 7620 SNL CLA /ARE WE THERE YET? 1330 014261 5311 JMP ADDLEN /NO - KEEP GOING 1331 014262 7346 CLA CLL CMA RTL 1332 014263 4772 JMS I (PRWD /PRINT THREE WORDS 1333 014264 0000 NAME1, 0 1334 014265 0000 NAME2, 0 1335 014266 0000 NAME3, 0 1336 014267 1275 TAD NAME4 1337 014270 7650 SNA CLA /IS THERE AN EXTENSION? 1338 014271 1371 TAD (-16 /NO - PRINT A BLANK 1339 014272 1370 TAD (56 /YES - PRINT A PERIOD 1340 014273 4767 JMS I (PR6BIT 1341 014274 4772 JMS I (PRWD 1342 014275 0000 NAME4, 0 /ZERO PRINTS AS TWO MORE BLANKS 1343 014276 1027 PRLNGT, TAD DTYPE 1344 014277 0374 AND (100 1345 014300 7640 SZA CLA /WAS THE LISTING SWITCH /F? 1346 014301 5310 JMP PRTCRL /YES - DON'T PRINT LENGTH 1347 014302 1024 TAD FLENGT 1348 014303 4766 JMS I (PRNUM 1349 014304 1032 TAD WASTE 1350 014305 7640 SZA CLA 1351 014306 1033 TAD DDATE 1352 014307 4765 JMS I (PDATE /PRINT THE CREATION DATE OF THE FILE 1353 014310 4764 PRTCRL, JMS I (PCRLF 1354 014311 1024 ADDLEN, TAD FLENGT 1355 014312 1025 TAD BLOKNO 1356 014313 3025 DCA BLOKNO /UPDATE BLOCK NUMBER 1357 014314 2030 ISZ DCOUNT 1358 014315 5226 JMP NAMELP /LOOP UNTIL ALL FILES ARE PROCESSED 1359 014316 1031 TAD DLINK 1360 014317 7650 SNA CLA /MULTI-SEGMENT DIRECTORY? 1361 014320 5352 JMP ENDDIR /NO - FINISH UP 1362 014321 1010 TAD XR 1363 014322 0363 AND (7400 1364 014323 1362 TAD (377 /BUMP XR TO NEXT BLOCK 1365 014324 5205 JMP NEWSEG /PROCESS NEXT LINK 1366 014325 1410 DEMPTY, TAD I XR 1367 014326 7041 CIA 1368 014327 3024 DCA FLENGT /STORE LENGTH OF FREE ENTRY 1369 014330 6211 CDF 10 1370 014331 1024 TAD FLENGT 1371 014332 1035 TAD ECOUNT 1372 014333 3035 DCA ECOUNT /BUMP COUNT OF FREE BLOCKS 1373 014334 1027 TAD DTYPE 1374 014335 0361 AND (200 1375 014336 7650 SNA CLA /IS THE /E SWITCH ON? 1376 014337 5311 JMP ADDLEN /NO - DON'T LIST FREE FILES 1377 014340 1360 TAD (-4 1378 014341 4772 JMS I (PRWD 1379 014342 7405 TEXT // 014343 1520 014344 2431 014345 7600 1380 014346 4767 JMS I (PR6BIT 1381 014347 1024 TAD FLENGT 1382 014350 4766 JMS I (PRNUM 1383 014351 5310 JMP PRTCRL 1384 014352 2021 ENDDIR, ISZ CHAR /BUMP TEMP ARRAY TO NEXT ENTRY 1385 014353 1035 TAD ECOUNT 1386 014354 4757 JMS I (ENDFUJ 1387 014355 5200 JMP NXTDIR 1388 014357 2617 PAGE 014360 7774 014361 0200 014362 0377 014363 7400 014364 4142 014365 4650 014366 4101 014367 4070 014370 0056 014371 7762 014372 4050 014373 3517 014374 0100 014375 2777 014376 3134 014377 2014 1389 /BINARY MODE PROCESSOR FOR PIP 1390 1391 014400 0360 BIN360, 360 1392 014401 4777 BINARY, JMS I (FIXLEN 1393 014402 4776 JMS I (OUTOPN 1394 014403 4775 JMS I (IOPEN 1395 014404 4774 JMS I (LEADER /PUT OUT BLANK TAPE IF HS PUNCH OUTPUT 1396 014405 4251 JMS LTCODE 1397 014406 4773 NEWTAP, JMS I (ICHAR 1398 014407 5317 JMP BEOF /END OF FILE ON INPUT 1399 014410 7450 SNA 1400 014411 5206 JMP NEWTAP /BLANK TAPE - KEEP GOING 1401 014412 1307 TAD BN7600 1402 014413 7640 SZA CLA 1403 014414 5206 JMP NEWTAP 1404 014415 4773 JMS I (ICHAR 1405 014416 5317 JMP BEOF 1406 014417 1307 TAD BN7600 1407 014420 7450 SNA 1408 014421 5215 JMP .-4 1409 014422 1225 TAD BIN200 1410 014423 3021 DCA CHAR 1411 014424 1021 TAD CHAR 1412 014425 0200 BIN200, AND BIN360 1413 014426 1372 TAD (-240 /CHECK TYPE OF TAPE 1414 014427 7450 SNA /IS IT RELOCATABLE? 1415 014430 5266 JMP RELBIN /YES 1416 014431 1371 TAD (-40 /IF A FIELD SETTING, IT'S ABSOLUTE 1417 014432 0370 AND (7700 1418 014433 7450 SNA 1419 014434 5240 JMP ABSLUT 1420 014435 1225 TAD BIN200 /CHECK FOR ORIGIN ALSO 1421 014436 7640 SZA CLA 1422 014437 5206 JMP NEWTAP /NOTHING..NEXT FRAME 1423 014440 7240 ABSLUT, CLA CMA 1424 014441 4251 JMS LTCODE 1425 014442 4323 ABSBIN, JMS RCOPY1 /COPY THIS FRAME AND READ NEXT 1426 014443 1307 TAD BN7600 1427 014444 7640 BNM140, SZA CLA /IS IT TRAILER? 1428 014445 5242 JMP ABSBIN /NO - KEEP GOING 1429 014446 7240 BEOT, CLA CMA /END OF TAPE 1430 014447 4251 JMS LTCODE /PUT OUT SHORT LEADER/TRAILER 1431 014450 5206 JMP NEWTAP /GET NEXT TAPE 1432 014451 0000 LTCODE, 0 /SUBROUTINE TO PUNCH 200 CODE 1433 014452 7500 SMA /SHORT LEADER/TRAILER? 1434 014453 4767 JMS I (OTYPE 1435 014454 7710 SPA CLA /DIRECTORY DEVICE? 1436 014455 1366 TAD (70 /YES 1437 014456 1370 TAD (-100 1438 014457 3020 DCA TEMP 1439 014460 1225 LTLOOP, TAD BIN200 1440 014461 4765 JMS I (OCHAR /OUTPUT 64 OR 8 FRAMES OF L/T CODE 1441 014462 5764 JMP I (AOUERR 1442 014463 2020 ISZ TEMP 1443 014464 5260 JMP LTLOOP 1444 014465 5651 JMP I LTCODE 1445 1446 014466 1363 RELBIN, TAD (SKP 1447 014467 3762 DCA I (INCTZF /DISABLE CONTROL-Z CHECKING ON INPUT 1448 014470 7240 CLA CMA 1449 014471 4251 JMS LTCODE /PUT OUT SHORT LEADER/TRAILER 1450 014472 1021 RELLP, TAD CHAR 1451 014473 7012 RTR 1452 014474 7012 RTR 1453 014475 0361 AND (17 1454 014476 1360 TAD (RELTBL 1455 014477 3020 DCA TEMP 1456 014500 1420 TAD I TEMP /GET DATA WORD FOR THIS FRAME 1457 014501 7540 SMA SZA /POSITIVE MEANS SPECIAL OR ERROR 1458 014502 5341 JMP RELERR 1459 014503 7450 RELSNA, SNA 1460 014504 5313 JMP RELEND /ZERO MEANS CHECKSUM FRAME 1461 014505 3020 DCA TEMP /NEGATIVE MEANS COUNT OF NUMBER OF SLAVE FRAMES 1462 014506 4323 JMS RCOPY1 1463 014507 7600 BN7600, 7600 1464 014510 2020 ISZ TEMP 1465 014511 5306 JMP .-3 /COPY THIS FRAME AND ALL SLAVE FRAMES 1466 014512 5272 JMP RELLP /GET NEXT CONTROL FRAME 1467 014513 4323 RELEND, JMS RCOPY1 /COPY THE FIRST FRAME OF THE CHECKSUM 1468 014514 4765 JMS I (OCHAR 1469 014515 5764 JMP I (AOUERR /OUTPUT THE SECOND FRAME 1470 014516 5246 JMP BEOT /END TAPE - START NEXT ONE 1471 014517 4251 BEOF, JMS LTCODE 1472 014520 4757 JMS I (OCLOSE 1473 014521 5764 JMP I (AOUERR 1474 014522 5756 JMP I (PIP 1475 014523 0000 RCOPY1, 0 /ROUTINE TO ADVANCE "CHAR" TO NEXT INPUT CHARACTER 1476 014524 1021 TAD CHAR 1477 014525 4765 JMS I (OCHAR 1478 014526 5764 JMP I (AOUERR 1479 014527 4773 JMS I (ICHAR 1480 014530 5334 JMP INEFER 1481 014531 3021 DCA CHAR 1482 014532 1021 TAD CHAR 1483 014533 5723 JMP I RCOPY1 1484 014534 7700 INEFER, SMA CLA /DETECT FATALITIES 1485 014535 4755 JMS I (PIPERR 1486 014536 0007 7 1487 014537 4755 JMS I (PIPERR /A REAL BAD READ 1488 014540 0004 4 1489 1490 014541 7110 RELERR, CLL RAR 1491 014542 7640 SZA CLA /CODE OF 1 MEANS SPECIAL 1492 014543 4755 JMS I (PIPERR /ILLEGAL RELOCATABLE INPUT 1493 014544 0010 10 1494 014545 4323 JMS RCOPY1 1495 014546 7166 CLL CML CMA RTL /MULTIPLY NAME COUNT BY -6 (APPROXIMATELY) 1496 014547 1021 TAD CHAR 1497 014550 7124 CLL CML RAL /(ACTUALLY THIS PRODUCES -6X-1 WHICH IS WHAT WE WANT) 1498 014551 5303 JMP RELSNA 1499 014555 3517 PAGE 014556 3023 014557 2310 014560 4717 014561 0017 014562 2127 014563 7410 014564 6535 014565 2410 014566 0070 014567 2473 014570 7700 014571 7740 014572 7540 014573 2014 014574 3531 014575 2001 014576 3343 014577 3700 1500 014600 0000 ERPRNT, 0 /ERROR MESSAGE PRINTOUT ROUTINE 1501 014601 3020 DCA TEMP 1502 014602 1420 ERLP, TAD I TEMP 1503 014603 7012 RTR 1504 014604 7012 RTR 1505 014605 7012 RTR 1506 014606 4213 JMS ERPCH /PRINT HIGH-ORDER CHARACTER 1507 014607 1420 TAD I TEMP 1508 014610 4213 JMS ERPCH /PRINT LOW-ORDER CHARACTER 1509 014611 2020 ISZ TEMP 1510 014612 5202 JMP ERLP 1511 1512 014613 0000 ERPCH, 0 1513 014614 0377 AND (77 1514 014615 7450 SNA 1515 014616 5243 JMP ERCRLF /0 CHARACTER TERMINATES 1516 014617 4227 JMS CHPRNT 1517 014620 5613 JMP I ERPCH 1518 014621 1376 FILENR, TAD ("# 1519 014622 4775 JMS I (TTYOUT 1520 014623 1022 TAD INFPTR /GET PTR TO CURRENT INPUT FILE 1521 014624 1374 TAD (321 /MAGIC NUMBER 1522 014625 7110 CLL RAR 1523 014626 5217 JMP FILENR-2 1524 1525 014627 0000 CHPRNT, 0 1526 014630 1373 TAD (-37 /IS IT A _? 1527 014631 7450 SNA 1528 014632 5221 JMP FILENR /YES..PRINT FILE NUMBER 1529 014633 7001 IAC 1530 014634 7450 SNA /MAYBE ^? 1531 014635 5772 JMP I (SQFILE /YEP..PRINT FILE NAME 1532 014636 7510 SPA 1533 014637 1371 TAD (100 1534 014640 1370 TAD (236 1535 014641 4775 JMS I (TTYOUT 1536 014642 5627 JMP I CHPRNT 1537 1538 014643 1367 ERCRLF, TAD (215 1539 014644 4775 JMS I (TTYOUT 1540 014645 1366 TAD (212 1541 014646 4775 JMS I (TTYOUT 1542 014647 5600 JMP I ERPRNT 1543 014650 0000 PDATE, 0 /PRINTS THE DATE 1544 014651 7450 SNA 1545 014652 5650 JMP I PDATE /NO DATE TO PRINT 1546 014653 3200 DCA ERPRNT 1547 014654 2765 ISZ I (PBLJMP 1548 014655 4764 JMS I (PR6BIT 1549 014656 1200 TAD ERPRNT 1550 014657 7106 CLL RTL 1551 014660 7006 RTL 1552 014661 7004 RAL 1553 014662 0363 AND (17 1554 014663 4762 JMS I (PRNUM 1555 014664 1361 TAD (57 1556 014665 4764 JMS I (PR6BIT 1557 014666 1200 TAD ERPRNT 1558 014667 7012 RTR 1559 014670 7010 RAR 1560 014671 0360 AND (37 1561 014672 4762 JMS I (PRNUM 1562 014673 1361 TAD (57 1563 014674 4764 JMS I (PR6BIT 1564 014675 1200 TAD ERPRNT 1565 014676 0357 AND (7 1566 014677 1356 TAD (106 1567 014700 4762 JMS I (PRNUM 1568 014701 7240 CLA CMA 1569 014702 1765 TAD I (PBLJMP 1570 014703 3765 DCA I (PBLJMP /RESET PRNUM TO PRINT LEADING SPACES 1571 014704 5650 JMP I PDATE 1572 1573 014705 0000 DSKNUM, 0 1574 014706 3312 DCA DSKNAM+1 1575 014707 4755 JMS I (200 1576 014710 0012 12 1577 014711 5723 DSKNAM, 5723 1578 014712 0000 0 1579 014713 0000 0 1580 014714 7402 HLT 1581 014715 1312 TAD DSKNAM+1 1582 014716 5705 JMP I DSKNUM 1583 014717 7776 RELTBL, -2;-2;2;-10;-2;-2;-2;2;0;2;-2;2;2;2;2;1 014720 7776 014721 0002 014722 7770 014723 7776 014724 7776 014725 7776 014726 0002 014727 0000 014730 0002 014731 7776 014732 0002 014733 0002 014734 0002 014735 0002 014736 0001 1584 1585 014737 5000 ERRTBL, ERR0 1586 014740 5014 ERR1 1587 014741 6274 ERR2 1588 014742 5030 ERR3 1589 014743 5042 ERR4 1590 014744 5054 ERR5 1591 014745 5070 ERR6 1592 014746 5110 ERR7 1593 014747 5127 ERR8 1594 014750 5145 ERR9 1595 014751 5162 ERR10 1596 014752 6233 ERR11 1597 014753 2542 IFNZRO OS78 1598 1599 014755 0200 PAGE 014756 0106 014757 0007 014760 0037 014761 0057 014762 4101 014763 0017 014764 4070 014765 4125 014766 0212 014767 0215 014770 0236 014771 0100 014772 6303 014773 7741 014774 0321 014775 5172 014776 0243 014777 0077 1600 /ERROR MESSAGE TEXT GOES HERE 1601 1602 1603 015000 1617 ERR0, TEXT /NO ROOM FOR OUTPUT FILE/ 015001 4022 015002 1717 015003 1540 015004 0617 015005 2240 015006 1725 015007 2420 015010 2524 015011 4006 015012 1114 015013 0500 1604 015014 1411 ERR1, TEXT /LINE TOO LONG IN FILE_/ 015015 1605 015016 4024 015017 1717 015020 4014 015021 1716 015022 0740 015023 1116 015024 4006 015025 1114 015026 0537 015027 0000 1605 015030 0522 ERR3, TEXT /ERROR DELETING FILE/ 015031 2217 015032 2240 015033 0405 015034 1405 015035 2411 015036 1607 015037 4006 015040 1114 015041 0500 1606 015042 1116 ERR4, TEXT /INPUT ERROR, FILE_/ 015043 2025 015044 2440 015045 0522 015046 2217 015047 2254 015050 4006 015051 1114 015052 0537 015053 0000 1607 015054 0301 ERR5, TEXT /CAN'T OPEN OUTPUT FILE/ 015055 1647 015056 2440 015057 1720 015060 0516 015061 4017 015062 2524 015063 2025 015064 2440 015065 0611 015066 1405 015067 0000 1608 015070 0405 ERR6, TEXT /DEVICE_ NOT A DIRECTORY DEVICE/ 015071 2611 015072 0305 015073 3740 015074 1617 015075 2440 015076 0140 015077 0411 015100 2205 015101 0324 015102 1722 015103 3140 015104 0405 015105 2611 015106 0305 015107 0000 1609 015110 2022 ERR7, TEXT /PREMATURE END OF FILE, FILE_/ 015111 0515 015112 0124 015113 2522 015114 0540 015115 0516 015116 0440 015117 1706 015120 4006 015121 1114 015122 0554 015123 4006 015124 1114 015125 0537 015126 0000 1610 015127 1114 ERR8, TEXT /ILLEGAL BINARY INPUT, FILE_/ 015130 1405 015131 0701 015132 1440 015133 0211 015134 1601 015135 2231 015136 4011 015137 1620 015140 2524 015141 5440 015142 0611 015143 1405 015144 3700 1611 015145 0201 ERR9, TEXT /BAD DIRECTORY ON DEVICE_/ 015146 0440 015147 0411 015150 2205 015151 0324 015152 1722 015153 3140 015154 1716 015155 4004 015156 0526 015157 1103 015160 0537 015161 0000 1612 015162 0411 ERR10, TEXT /DIRECTORY ERROR/ 015163 2205 015164 0324 015165 1722 015166 3140 015167 0522 015170 2217 015171 2200 1613 1614 1615 015172 0000 TTYOUT, 0 1616 015173 6046 TLS 1617 015174 6041 TSF 1618 015175 5374 JMP .-1 1619 015176 7200 CLA 1620 015177 5772 JMP I TTYOUT 1621 PAGE 1622 /SQUISH PROCESSOR 1623 1624 015200 4777 SQUISH, JMS I (CONFRM 1625 015201 5534 SURE /V3 1626 015202 3776 SQUISX, DCA I (OUELEN /INITIALIZE PARAMS TO FAKE OUT "IMTRA" 1627 015203 3775 DCA I (OUBLK 1628 015204 3774 DCA I (7621 /ZERO SECOND FILE FOR "INNEWF" 1629 015205 3773 DCA I (CTCFLG 1630 015206 4772 JMS I (IOPEN 1631 015207 4771 JMS I (INNEWF 1632 015210 5770 JMP I (PIP /NO INPUT 1633 015211 1367 TAD (OUDEVH+1 1634 015212 3220 DCA SOHND 1635 015213 1733 TAD I SQ7600 1636 015214 7450 SNA 1637 015215 5770 JMP I (PIP /NO OUTPUTEE, NO SQUISHEE 1638 015216 4766 JMS I (200 1639 015217 0001 1 1640 015220 0000 SOHND, 0 1641 015221 7402 HLT 1642 015222 4302 JMS INTEST 1643 015223 4765 JMS I (OTYPE 1644 015224 7112 CLL RTR 1645 015225 7010 RAR 1646 015226 0364 AND (77 1647 015227 1363 TAD (DEVLEN 1648 015230 3020 DCA TEMP 1649 015231 1420 TAD I TEMP /GET ENTRY FROM DEVICE LENGTH TABLE 1650 015232 3031 DCA OUDLEN /SAVE OUTPUT DEVICE LENGTH 1651 015233 4273 JMS GETEQ 1652 015234 3027 DCA OUWAST 1653 015235 1220 TAD SOHND 1654 015236 3025 DCA OHNDLR 1655 015237 1025 TAD OHNDLR 1656 015240 3762 DCA I (OUHNDL 1657 015241 1761 TAD I (INHNDL 1658 015242 3024 DCA IHNDLR 1659 015243 4314 JMS SETCTC 1660 015244 4773 JMS I (CTCFLG 1661 015245 6202 CIF 0 1662 015246 4424 JMS I IHNDLR 1663 015247 1400 1400 1664 015250 0000 0 1665 015251 0001 1 1666 015252 5760 JMP I (SQIDER+1 1667 015253 6202 CIF 0 1668 015254 4757 JMS I (7607 1669 015255 5400 5400 1670 015256 0000 0 1671 015257 0027 MTEMP /MOVE THE INPUT DIRECTORY TO SYS: 1672 015260 5760 JMP I (SQIDER+1 1673 015261 7201 CLA IAC 1674 015262 3756 DCA I (SQBUF2+2 1675 015263 3773 DCA I (CTCFLG 1676 015264 1220 TAD SOHND /SETUP DIRECTORY START 1677 015265 4755 JMS I (SQDTST 1678 015266 4754 JMS I (SETSAM /IF IHNDLR=OHNDLR, SAME=1 1679 015267 7240 CLA CMA 1680 015270 3753 DCA I (SQBUF2 1681 015271 3752 DCA I (OUTSEG 1682 015272 5751 JMP I (NEWOUT 1683 1684 015273 0000 GETEQ, 0 /V3 1685 015274 1750 TAD I (MPARAM+3 1686 015275 7450 SNA 1687 015276 7001 IAC 1688 015277 0364 AND (77 /CONVERT 0 TO 1 AND 100 TO 0 1689 015300 7041 CIA 1690 015301 5673 JMP I GETEQ 1691 1692 015302 0000 INTEST, 0 /TEST IF INPUT IS DIRECTORY 1693 015303 1747 TAD I (7617 1694 015304 0346 AND (17 1695 015305 1345 TAD (DCB-1 1696 015306 3020 DCA TEMP 1697 015307 1420 TAD I TEMP 1698 015310 7700 SMA CLA 1699 015311 4744 JMS I (PIPERR 1700 015312 0006 6 1701 015313 5702 JMP I INTEST 1702 1703 015314 0000 SETCTC, 0 /MODIFY 07600 TO RETURN TO SQCTLC 1704 015315 1324 TAD CDIF10 1705 015316 6201 CDF 0 1706 015317 3733 DCA I SQ7600 1707 015320 1343 TAD (5602 /JMP I .+1 1708 015321 3742 DCA I (7601 1709 015322 1341 TAD (SQCTLC 1710 015323 3740 DCA I (7602 1711 015324 6213 CDIF10, CIF CDF 10 1712 015325 5714 JMP I SETCTC 1713 015326 0000 OUK, 0 /V3 ON IMAGE MODE TRANSFER 1714 /CLOSE OUT FILE WITH = OPTION 1715 /IF NOT TOO SMALL 1716 015327 1737 TAD I (OUCCNT 1717 015330 7141 CLL CIA 1718 015331 1750 TAD I (MPARAM+3 1719 015332 7420 SNL /IS = OPTION LARGER? 1720 015333 7600 SQ7600, 7600 /RETURN OUCCNT IF IT'S LARGER 1721 015334 1737 TAD I (OUCCNT /RETURN LOW ORDER = OPTION IF IT'S LARGER 1722 015335 5726 JMP I OUK 1723 015337 2352 PAGE 015340 7602 015341 5650 015342 7601 015343 5602 015344 3517 015345 7757 015346 0017 015347 7617 015350 7646 015351 5503 015352 5641 015353 7200 015354 5543 015355 6476 015356 7202 015357 7607 015360 5626 015361 2146 015362 2215 015363 3600 015364 0077 015365 2473 015366 0200 015367 7201 015370 3023 015371 2135 015372 2001 015373 5700 015374 7621 015375 2222 015376 2223 015377 3734 1724 015400 1377 NEWIN, TAD (MTEMP-1 1725 015401 3207 DCA INSEG 1726 015402 4776 JMS I (CTCFLG 1727 015403 6202 CIF 0 1728 015404 4775 JMS I (7607 1729 015405 0210 0210 1730 015406 7200 S7200, SQBUF2 1731 015407 0000 INSEG, 0 1732 015410 5774 JMP I (SQIDER 1733 015411 3776 DCA I (CTCFLG 1734 015412 1773 TAD I (SQBUF2+1 1735 015413 3033 DCA INBLK 1736 015414 1372 TAD (SQBUF2+4 1737 015415 3011 DCA INXR 1738 015416 1411 SGETIN, TAD I INXR 1739 015417 7450 SNA 1740 015420 5331 JMP SEMPTY 1741 015421 3410 DCA I OUTXR 1742 015422 1010 TAD OUTXR 1743 015423 3333 DCA OUSAVE 1744 015424 4771 JMS I (CYWAST /COPY WASTE WORDS 1745 015425 1411 TAD I INXR 1746 015426 3034 DCA RECCNT 1747 015427 1034 TAD RECCNT 1748 015430 7450 SNA 1749 015431 5325 JMP SNULL 1750 015432 7140 CMA CLL /V3 1751 015433 1030 TAD OUTBLK 1752 015434 1031 TAD OUDLEN 1753 015435 7630 SZL CLA 1754 015436 5323 JMP SNULER 1755 015437 1034 TAD RECCNT 1756 015440 3410 DCA I OUTXR 1757 015441 7240 CLA CMA 1758 015442 1770 TAD I (SQBUF1 1759 015443 3770 DCA I (SQBUF1 1760 015444 1033 TAD INBLK 1761 015445 7041 CIA 1762 015446 1030 TAD OUTBLK 1763 015447 7650 SNA CLA 1764 015450 1032 TAD SAME 1765 015451 7650 SNA CLA 1766 015452 4767 MOVFIL, JMS I (SQTRA /MOVE THE FILE DOWN 1767 015453 1034 TAD RECCNT 1768 015454 7041 CIA 1769 015455 1030 TAD OUTBLK 1770 015456 3030 DCA OUTBLK 1771 015457 1034 TAD RECCNT 1772 015460 7041 DMTX, CIA 1773 015461 1033 TAD INBLK 1774 015462 3033 DCA INBLK 1775 015463 1010 TAD OUTXR 1776 015464 7041 CIA 1777 015465 1027 TAD OUWAST 1778 015466 1027 TAD OUWAST 1779 015467 1366 TAD (SQBUF1+365 1780 015470 7700 SMA CLA /DO WE HAVE ROOM FOR TWO MORE ENTRIES? 1781 015471 5315 JMP NEXTIN 1782 1783 /DIRECTORY SEGMENT OVERFLOW ON OUTPUT... 1784 1785 015472 2765 ISZ I (OUTSEG 1786 015473 1765 TAD I (OUTSEG 1787 015474 7001 IAC 1788 015475 3764 DCA I (SQBUF1+2 /STORE LINK TO NEXT SEGMENT 1789 015476 1764 TAD I (SQBUF1+2 1790 015477 1363 TAD (-7 1791 015500 7700 SMA CLA 1792 015501 5762 JMP I (SQIDER-1 /TOO MANY SEGMENTS 1793 015502 4761 JMS I (OUTDIR /OUTPUT THIS SEGMENT 1794 015503 1360 NEWOUT, TAD (SQBUF1-1 1795 015504 3010 DCA OUTXR /INITIALIZE XR FOR NEXT OUTPUT SEGMENT 1796 015505 3757 DCA I (OUTINH /ZAP ANY OLD OUTPUT INHIBIT FLAG 1797 015506 3410 DCA I OUTXR 1798 015507 1030 TAD OUTBLK 1799 015510 3410 DCA I OUTXR 1800 015511 3410 DCA I OUTXR 1801 015512 3410 DCA I OUTXR 1802 015513 1027 TAD OUWAST 1803 015514 3410 DCA I OUTXR 1804 015515 2606 NEXTIN, ISZ I S7200 1805 015516 5216 JMP SGETIN 1806 015517 1756 TAD I (SQBUF2+2 1807 015520 7450 SNA /ANY MORE INPUT SEGMENTS? 1808 015521 5755 JMP I (SQOVER 1809 015522 5200 JMP NEWIN 1810 015523 1354 SNULER, TAD (NOROOM 1811 015524 4753 JMS I (ERPRNT 1812 015525 7240 SNULL, CLA CMA 1813 015526 1333 TAD OUSAVE 1814 015527 3010 DCA OUTXR 1815 015530 5257 JMP DMTX-1 1816 015531 1411 SEMPTY, TAD I INXR 1817 015532 5260 JMP DMTX 1818 015533 0000 OUSAVE, 0 1819 015534 0122 SURE, TEXT /ARE YOU SURE?/ 015535 0540 015536 3117 015537 2540 015540 2325 015541 2205 015542 7700 1820 1821 015543 0000 SETSAM, 0 1822 015544 1024 TAD IHNDLR 1823 015545 7041 CIA 1824 015546 1025 TAD OHNDLR 1825 015547 7650 SNA CLA 1826 015550 7001 IAC 1827 015551 3032 DCA SAME 1828 015552 5743 JMP I SETSAM 1829 015553 4600 PAGE 015554 5735 015555 5600 015556 7202 015557 2472 015560 6577 015561 5631 015562 5624 015563 7771 015564 6602 015565 5641 015566 7165 015567 2637 015570 6600 015571 6413 015572 7204 015573 7201 015574 5625 015575 7607 015576 5700 015577 0026 1830 015600 3410 SQOVER, DCA I OUTXR 1831 015601 1031 TAD OUDLEN 1832 015602 1030 TAD OUTBLK 1833 015603 7450 SNA 1834 015604 5211 JMP CKZERO 1835 015605 3410 DCA I OUTXR 1836 015606 7240 CLA CMA 1837 015607 1777 TAD I (SQBUF1 1838 015610 3777 DCA I (SQBUF1 1839 015611 1777 CKZERO, TAD I (SQBUF1 1840 015612 7640 SZA CLA 1841 015613 5220 JMP ZEROK 1842 015614 7330 CLA CLL CML RAR 1843 015615 4231 JMS OUTDIR /READ IN LAST DIRECTORY 1844 015616 3776 DCA I (SQBUF1+2 /ZERO OUT LINK WORD 1845 015617 7410 SKP 1846 015620 2241 ZEROK, ISZ OUTSEG 1847 015621 4231 JMS OUTDIR 1848 015622 4264 ZEROKS, JMS SRSTOR 1849 015623 5775 JMP I (PIP 1850 1851 015624 3776 DCA I (SQBUF1+2 1852 015625 4231 SQIDER, JMS OUTDIR 1853 015626 4264 JMS SRSTOR 1854 015627 4774 JMS I (PIPERR 1855 015630 0012 12 1856 015631 0000 OUTDIR, 0 1857 015632 1373 TAD (4210 1858 015633 3237 DCA .+4 1859 015634 4300 JMS CTCFLG 1860 015635 6202 CIF 0 1861 015636 4425 JMS I OHNDLR 1862 015637 0000 0 1863 015640 6600 SQBUF1 1864 015641 0000 OUTSEG, 0 1865 015642 5226 JMP SQIDER+1 1866 015643 3300 DCA CTCFLG 1867 015644 5631 JMP I OUTDIR 1868 1869 015645 1372 SQIOER, TAD (IOMSG 1870 015646 4771 JMS I (ERPRNT 1871 015647 5770 JMP I (SLGRET 1872 015650 6032 SQCTLC, KCC /JUMPED TO BY CODE AT 07600 1873 015651 4767 JMS I (TSTSAM /TEST IF OPERATION IS TO ITSELF 1874 015652 1366 TAD (CTCMSG 1875 015653 4771 JMS I (ERPRNT 1876 015654 1300 TAD CTCFLG 1877 015655 7640 SZA CLA 1878 015656 5700 JMP I CTCFLG 1879 015657 1765 TAD I (MPARAM+1 /IS IT /S? 1880 015660 0364 AND (40 1881 015661 7650 SNA CLA 1882 015662 5763 JMP I (SYSCPY /NO../Y 1883 015663 5762 JMP I (MOVFIL 1884 1885 015664 0000 SRSTOR, 0 1886 015665 4761 JMS I (7700 /MAKE SURE MONITOR IS IN CORE 1887 015666 0010 10 1888 015667 3265 DCA .-2 /AND WIPE THE CALL AWAY 1889 015670 1360 TAD (4207 1890 015671 6201 CDF 0 1891 015672 3757 DCA I (7600 1892 015673 1356 TAD (5000 1893 015674 3755 DCA I (7601 1894 015675 3754 DCA I (7602 1895 015676 6211 CDF 10 1896 015677 5664 JMP I SRSTOR 1897 1898 015700 0000 CTCFLG, 0 1899 015701 5700 JMP I CTCFLG 1900 015702 2317 CTCMSG, TEXT /SORRY - NO INTERRUPTIONS/ 015703 2222 015704 3140 015705 5540 015706 1617 015707 4011 015710 1624 015711 0522 015712 2225 015713 2024 015714 1117 015715 1623 015716 0000 1901 015717 1155 IOMSG, TEXT /I-O ERROR IN ^ - CONTINUING/ 015720 1740 015721 0522 015722 2217 015723 2240 015724 1116 015725 4036 015726 4055 015727 4003 015730 1716 015731 2411 015732 1625 015733 1116 015734 0700 1902 015735 1617 NOROOM, TEXT /NO ROOM IN ^ - CONTINUING/ 015736 4022 015737 1717 015740 1540 015741 1116 015742 4036 015743 4055 015744 4003 015745 1716 015746 2411 015747 1625 015750 1116 015751 0700 1903 015754 7602 PAGE 015755 7601 015756 5000 015757 7600 015760 4207 015761 7700 015762 5452 015763 6004 015764 0040 015765 7644 015766 5702 015767 6267 015770 2532 015771 4600 015772 5717 015773 4210 015774 3517 015775 3023 015776 6602 015777 6600 1904 016000 7760 K7760, 7760 1905 016001 1224 SYSCOP, TAD K7622 /SET INFPTR IN CASE OF /Y ERROR 1906 016002 3022 DCA INFPTR /WILL FILE #1 1907 016003 4777 JMS I (SETCTC /KLUDGE UP 07600 1908 016004 1376 SYSCPY, TAD (INDEVH+1 1909 016005 3223 DCA YIHAND /SET TO ASSIGN INPUT HANDLER 1910 016006 1375 TAD (OUDEVH+1 1911 016007 3263 DCA YOHAND 1912 016010 1374 TAD (2000 1913 016011 3243 DCA K2000 /THIS MAY GET CLOBBERED READING IN DIRECT. 1914 016012 1373 TAD (10 1915 016013 3340 DCA OFSET 1916 016014 1743 TAD I K7617 1917 016015 7650 SNA CLA /IS THERE AN INPUT DEVICE? 1918 016016 2743 ISZ I K7617 /MAKE INPUT =SYS 1919 016017 4772 JMS I (INTEST /SEE IF OPERATIONS ARE TO SAME DEVICE 1920 016020 1743 TAD I K7617 1921 016021 4626 JMS I K200 /ASSIGN HANDLER 1922 016022 0001 1 1923 016023 0000 YIHAND, 0 1924 016024 7622 K7622, 7622 /THINLY DISGUISED HALT 1925 016025 1743 TAD I K7617 1926 016026 0200 K200, AND K7760 /CHECK INPUT FILE LENGTH 1927 016027 7450 SNA /IF BLANK,INPUT SYSTEM HEAD 1928 016030 5330 JMP YSOUT 1929 016031 1371 TAD (-6340 /CHECK FOR PROPER LENGTH 1930 016032 7640 SZA CLA 1931 016033 5341 JMP PER13 /ERROR..NOT SYSTEM HEAD 1932 016034 1770 TAD I (7601 /IS THERE OUTPUT DEVICE? 1933 016035 7640 SZA CLA /IF YES..WE CAN DO IMAGE XFER 1934 016036 5767 JMP I (IMGTST 1935 016037 1766 TAD I (7620 1936 016040 3245 YOUSYS, DCA YINREC /PICK UP STARTING RECORD 1937 016041 6202 CIF 0 1938 016042 4623 JMS I YIHAND /READ IN FIRST INPUT RECORDS 1939 016043 2000 K2000, 2000 /(0-15 IF SYSTEM HEAD,0-7 IF FILE) 1940 016044 0000 OUBUF 1941 016045 0000 YINREC, 0 1942 016046 5765 JMP I (PER4 /INPUT ERROR 1943 016047 1766 TAD I (7620 /IF INPUT FROM A FILE, OPEN 1944 016050 7640 SZA CLA /A HOLE FOR OUTPUT DIRECTORY 1945 016051 4764 JMS I (MOVE /DO A CORE MOVE 1946 016052 4763 JMS I (TSTHED /TEST FOR VALID SYSTEM HEAD 1947 016053 1245 TAD YINREC 1948 016054 1340 TAD OFSET /BUMP TO NEXT RECORD 1949 016055 3314 DCA NXTRD 1950 016056 1762 TAD I (7600 /IF NO OUTPUT, FORGET IT 1951 016057 7450 SNA 1952 016060 5326 JMP PIPCLR /RESET AND GO TO PIP 1953 016061 4626 JMS I K200 1954 016062 0001 1 1955 016063 0000 YOHAND, 0 1956 016064 7402 HLT /V3 1957 016065 4761 JMS I (FAKE 1958 016066 4760 JMS I (SETSAM 1959 016067 4757 JMS I (TSTIO /TEST OUTPUT. SEE IF DIRECT. DEV. 1960 016070 6202 CIF 0 1961 016071 4663 JMS I YOHAND /READ OUTPUT DIRECTORY INTO PLACE 1962 016072 1400 1400 1963 016073 0400 400 1964 016074 0001 1 1965 016075 5765 JMP I (PER4 1966 016076 6201 CDF 0 1967 016077 1756 TAD I (401 /NOW TEST FOR VALID OUTPUT DEVICE 1968 016100 6211 CDF 10 1969 016101 1355 TAD (-10 /IF LESS THAN 10, DON'T XFER 1970 016102 7710 SPA CLA 1971 016103 4754 JMS I (PIPERR 1972 016104 0011 11 1973 016105 1353 TAD (-4 1974 016106 3245 DCA YINREC /XFER COUNTER 1975 1976 016107 5321 JMP YDUMP 1977 016110 6202 YLOOP, CIF 0 1978 016111 4623 JMS I YIHAND /READ NEXT 1979 016112 3400 K3400, 3400 /16 BLOCKS 1980 016113 0000 OUBUF 1981 016114 0000 NXTRD, 0 1982 016115 5765 JMP I (PER4 1983 016116 1314 TAD NXTRD 1984 016117 1352 TAD (16 1985 016120 3314 DCA NXTRD 1986 016121 1351 YDUMP, TAD (7400 1987 016122 4750 JMS I (OUTDMP /WRITE BUFFER 1988 016123 5747 JMP I (AOUERR 1989 016124 2245 ISZ YINREC /DONE YET? 1990 016125 5310 JMP YLOOP /NOT YET..LOOP 1991 016126 4746 PIPCLR, JMS I (SRSTOR /CLEAR OUT 07600 1992 016127 5745 JMP I (PIP 1993 016130 1770 YSOUT, TAD I (7601 /HERE IF INPUT FROM SYSTEM HEAD 1994 016131 7640 SZA CLA /IS THERE AN OUTPUT FILE? 1995 016132 5744 JMP I (YTSOUT /YES, SET UP FOR IMAGE MODE 1996 016133 1312 YNOOUT, TAD K3400 /SET TO READ IN DIRECTORY 1997 016134 3243 DCA K2000 /PLUS FIRST 7 RECORDS 1998 016135 1352 TAD (16 /AND RESTART READ AT RECORD 16 1999 016136 3340 DCA OFSET 2000 016137 5240 JMP YOUSYS 2001 016140 0000 OFSET, 0 2002 2003 016141 4754 PER13, JMS I (PIPERR 2004 016142 0013 13 2005 016143 7617 K7617, 7617 /V3 2006 016144 6243 PAGE 016145 3023 016146 5664 016147 6535 016150 2247 016151 7400 016152 0016 016153 7774 016154 3517 016155 7770 016156 0401 016157 6453 016160 5543 016161 6400 016162 7600 016163 6443 016164 6207 016165 3110 016166 7620 016167 6254 016170 7601 016171 1440 016172 5302 016173 0010 016174 2000 016175 7201 016176 6601 016177 5314 2007 016200 7777 DIRECT, -1 2008 016201 0000 DFORG, 0 /FILE STORAGE 2009 016202 0000 0 2010 016203 0000 0 2011 016204 0000 DWASTE, 0 /#WASTE WORDS 2012 016205 0000 0 2013 016206 0000 DLENGT, 0 2014 2015 016207 0000 MOVE, 0 2016 016210 1377 TAD (4400 /MOVES CORE TO OPEN DIRECTORY HOLE 2017 016211 3020 DCA TEMP 2018 016212 1376 TAD (3777 2019 016213 3344 DCA MWAST 2020 016214 1375 TAD (6777 2021 016215 3267 MOVE1, DCA TSTSAM 2022 016216 6201 CDF 0 2023 016217 1744 TAD I MWAST 2024 016220 3667 DCA I TSTSAM 2025 016221 7040 CMA 2026 016222 1344 TAD MWAST 2027 016223 3344 DCA MWAST 2028 016224 7040 CMA 2029 016225 1267 TAD TSTSAM 2030 016226 2020 ISZ TEMP 2031 016227 5215 JMP MOVE1 2032 016230 7200 CLA 2033 016231 6211 CDF 10 2034 016232 5607 JMP I MOVE 2035 2036 016233 0201 ERR11, TEXT /BAD SYSTEM HEAD/ 016234 0440 016235 2331 016236 2324 016237 0515 016240 4010 016241 0501 016242 0400 2037 2038 016243 1774 YTSOUT, TAD I (7617 /O.K. SETUP CD AREA FOR IMAGE XFER 2039 016244 1373 TAD (7760 /FROM SYSTEM AREA OF INPUT DEVICE 2040 016245 3774 DCA I (7617 2041 016246 1774 TAD I (7617 2042 016247 0372 AND (17 2043 016250 1371 TAD (6360 2044 016251 3770 DCA I (7621 2045 016252 1263 TAD K7 2046 016253 3767 DCA I (7622 2047 016254 3032 IMGTST, DCA SAME /ALLOW ^C IF TO OUTPUT FILE 2048 016255 1766 TAD I (YIHAND /TEST FOT VALID SYSTEM 2049 016256 3024 DCA IHNDLR 2050 016257 6202 CIF 0 2051 016260 4424 JMS I IHNDLR 2052 016261 0200 0200 2053 016262 3400 3400 2054 016263 0007 K7, 7 2055 016264 5765 JMP I (PER4 2056 016265 4764 JMS I (TSTHED 2057 016266 5763 JMP I (IMAGE 2058 016267 0000 TSTSAM, 0 2059 016270 1032 TAD SAME /IF /Y IS TO SAME DEVICE AS INPUT (SYS) 2060 016271 7650 SNA CLA /^C GIVES MESSAGE AND RETRIES OPERATION 2061 016272 5762 JMP I (ZEROKS 2062 016273 5667 JMP I TSTSAM 2063 2064 016274 1725 ERR2, TEXT /OUTPUT ERROR/ 016275 2420 016276 2524 016277 4005 016300 2222 016301 1722 016302 0000 2065 2066 016303 3344 SQFILE, DCA MWAST 2067 016304 1761 TAD I (OUSAVE 2068 016305 3267 DCA TSTSAM /IF ERROR DURING /S 2069 016306 3204 DCA DWASTE 2070 016307 7346 CLA CLL CMA RTL 2071 016310 3207 DCA MOVE /-3 FOR FILE NAME 2072 016311 1667 SQFIL3, TAD I TSTSAM /FIRST 2 CHARS. IN NAME 2073 016312 7112 CLL RTR 2074 016313 7012 RTR 2075 016314 7012 RTR 2076 016315 0360 SQFIL5, AND (77 2077 016316 7440 SZA /IF ZERO, DON'T BOTHER 2078 016317 4757 JMS I (CHPRNT 2079 016320 2204 ISZ DWASTE /RIGHT HALF OR NEW WORD? 2080 016321 5340 JMP SQFIL4 /RIGHT HALF 2081 016322 2267 ISZ TSTSAM 2082 016323 2207 ISZ MOVE /EXHAUSTED ALL? 2083 016324 5311 JMP SQFIL3 /NOPE 2084 016325 1344 TAD MWAST /DONE WITH IT YET? 2085 016326 7640 SZA CLA 2086 016327 5756 JMP I (FILENR-1 /YES 2087 016330 1667 TAD I TSTSAM /IS THERE AN EXTENSION? 2088 016331 7650 SNA CLA 2089 016332 5756 JMP I (FILENR-1 /NO..CONTINUE ORIGINAL MSG 2090 016333 1355 TAD (256 2091 016334 4754 JMS I (TTYOUT 2092 016335 2344 ISZ MWAST /SIGNAL END 2093 016336 7240 CLA CMA 2094 016337 5310 JMP SQFIL3-1 2095 016340 7240 SQFIL4, CLA CMA 2096 016341 3204 DCA DWASTE 2097 016342 1667 TAD I TSTSAM /GET RIGHT HALF 2098 016343 5315 JMP SQFIL5 2099 016344 0000 MWAST, 0 2100 016345 3020 DCA TEMP 2101 016346 1411 TAD I INXR 2102 016347 3410 DCA I OUTXR /ROUTINE TO COPY WASTE WORDS 2103 016350 2020 ISZ TEMP 2104 016351 5346 JMP .-3 2105 016352 5744 JMP I MWAST 2106 016354 5172 PAGE 016355 0256 016356 4620 016357 4627 016360 0077 016361 5533 016362 5622 016363 2600 016364 6443 016365 3110 016366 6023 016367 7622 016370 7621 016371 6360 016372 0017 016373 7760 016374 7617 016375 6777 016376 3777 016377 4400 2107 016400 0000 FAKE, 0 2108 016401 1777 TAD I (YIHAND 2109 016402 3024 DCA IHNDLR 2110 016403 1776 TAD I (YOHAND 2111 016404 3025 DCA OHNDLR 2112 016405 3775 DCA I (OUCCNT 2113 016406 3774 DCA I (OUBLK 2114 016407 3773 DCA I (OUELEN 2115 016410 1776 TAD I (YOHAND 2116 016411 3772 DCA I (OUHNDL 2117 016412 5600 JMP I FAKE 2118 2119 016413 0000 CYWAST, 0 /ROUTINE TO COPY WASTE WORDS 2120 016414 7346 CLA CLL CMA RTL /THREE MORE FOR FILE NAME 2121 016415 4771 JMS I (MWAST /COPY THEM 2122 016416 1770 TAD I (SQBUF2+4 /NOW ADJUST I/O WASTE WORDS 2123 016417 7041 CIA 2124 016420 1027 TAD OUWAST /DIFF. BETWEEN OUT AND IN WORDS 2125 016421 7500 SMA /IF <0, MORE OUT THAN IN 2126 016422 5233 JMP CGEWST /POS. MORE IN THAN OUT (OR SAME) 2127 016423 3012 DCA TEMP1 2128 016424 1770 TAD I (SQBUF2+4 2129 016425 7440 SZA 2130 016426 4771 JMS I (MWAST /COPY ALL INPUT WORDS 2131 016427 3410 DCA I OUTXR /AND 0 ALL EXTRA OUTPUT WORDS 2132 016430 2012 ISZ TEMP1 2133 016431 5227 JMP .-2 2134 016432 5613 JMP I CYWAST 2135 016433 3012 CGEWST, DCA TEMP1 2136 016434 1027 TAD OUWAST /XFER ONLY ENOUGH OUTPUT WDS. 2137 016435 7440 SZA 2138 016436 4771 JMS I (MWAST 2139 016437 1011 TAD INXR 2140 016440 1012 TAD TEMP1 /POINT INPUT TO NEXT FILE 2141 016441 3011 DCA INXR 2142 016442 5613 JMP I CYWAST 2143 2144 016443 0000 TSTHED, 0 /TESTS FOR KEYBOARD MONITOR 2145 016444 6201 CDF 0 2146 016445 1767 TAD I (3401 2147 016446 6211 CDF 10 2148 016447 1366 TAD (-7200 2149 016450 7640 SZA CLA 2150 016451 5765 JMP I (PER13 /IF NOT CLA, NOT VALID 2151 016452 5643 JMP I TSTHED 2152 016453 0000 TSTIO, 0 /SEE IF OUTPUT IS DIRECTORY DEVICE 2153 016454 4764 JMS I (OTYPE /GET DCB WORD FOR OUTPUT 2154 016455 7700 SMA CLA /IF NOT NEG., NOT DIRECT DEVICE 2155 016456 4763 JMS I (PIPERR 2156 016457 0005 5 2157 016460 1025 TAD OHNDLR /IF OUTPUT=SYS, SET NO INTERRUPT 2158 016461 1362 TAD (171 2159 016462 7650 SNA CLA 2160 016463 2032 ISZ SAME 2161 016464 5653 JMP I TSTIO 2162 2163 016465 0000 ASCI2, 0 /SEE IF VALID ASCII OUTPUT 2164 016466 3253 DCA TSTIO 2165 016467 1761 TAD I (7600 2166 016470 7650 SNA CLA 2167 016471 5760 JMP I (PIP /NO..BACK TO PIP 2168 016472 1253 TAD TSTIO /SEE IF /C IS ON 2169 016473 7650 SNA CLA 2170 016474 4757 JMS I (FIXLEN /NO..TRY TO ESTIMATE OUTPUT 2171 016475 5665 JMP I ASCI2 2172 2173 016476 0000 SQDTST, 0 /ROUTINE TO CHECK /S DIRECTORIES 2174 016477 3200 DCA NOHND /PRESERVE POSSIBLE SYS ON OUTPUT 2175 016500 1356 TAD (7 /DEFAULT TO BLOCK 7 2176 016501 3030 DCA OUTBLK /INITIAL GUESS 2177 016502 6211 CDF 10 /NOW TRY TO READ DIRECTORY OF OUTPUT 2178 016503 4764 JMS I (OTYPE /IF NON-FILE, DON'T READ IT 2179 016504 7700 SMA CLA 2180 016505 5314 JMP P1A 2181 016506 6202 CIF 0 /COULD BE NON-FILE, HOWEVER. 2182 016507 4600 JMS I NOHND 2183 016510 0210 0210 2184 016511 1400 1400 2185 016512 0001 P1, 1 2186 016513 5755 JMP I (SQIDER+1 /ERROR IN READ 2187 016514 3007 P1A, DCA OLDDIR /WIPES ANY DIRECT. SEGMENT 2188 016515 1754 TAD I (1401 2189 016516 1353 TAD (-70 /IS OUTPUT A SYS DEVICE? 2190 016517 7650 SNA CLA 2191 016520 5325 JMP SYSDIR /YES. 2192 016521 1200 TAD NOHND /IS OUTPUT THE SYSTEM DEVICE? 2193 016522 1362 TAD (171 2194 016523 7640 SZA CLA 2195 016524 5327 JMP .+3 2196 016525 1352 SYSDIR, TAD (70 2197 016526 3030 DCA OUTBLK 2198 016527 5676 JMP I SQDTST 2199 2200 NOHND=FAKE 2201 2202 016530 3205 SYSZRO, TEXT /ZERO SYS?/ 016531 2217 016532 4023 016533 3123 016534 7700 2203 016535 7700 AOUERR, SMA CLA /WAS IT A DEVICE ERROR OR ARE WE OUT OF SPACE? 2204 016536 5341 JMP BOUERR /OUT OF SPACE 2205 016537 4763 PER2, JMS I (PIPERR 2206 016540 0002 2 2207 016541 4763 BOUERR, JMS I (PIPERR 2208 016542 0000 0 2209 2210 016543 1351 ASCPTCH,TAD (ACHLP+1 /V3C FAKE OUT ICHAR 2211 016544 3750 DCA I (ICHAR /SIMULATE CALL TO ICHAR FROM 'ACHLP' 2212 016545 5747 JMP I (GETNEW /V3C SIMULATE OCCURRENCE OF 8-BIT ^Z IN ICHAR 2213 016547 2030 PAGE 016550 2014 016551 3205 016552 0070 016553 7710 016554 1401 016555 5626 016556 0007 016557 3700 016560 3023 016561 7600 016562 0171 016563 3517 016564 2473 016565 6141 016566 0600 016567 3401 016570 7204 016571 6344 016572 2215 016573 2223 016574 2222 016575 2352 016576 6063 016577 6023 2214 /THIS IS ONCE-ONLY CODE 2215 2216 016600 0000 ONCE, 0 2217 016601 7240 STA 2218 016602 1200 TAD ONCE 2219 016603 3224 DCA ONCENF 2220 016604 1377 TAD (20 2221 016605 3624 DCA I ONCENF /RESTORE L20, DON'T ALLOW REENTRY 2222 016606 1776 TAD I (MPARAM+1 2223 016607 0375 AND (7 2224 016610 7650 SNA CLA /IS /V SET? 2225 016611 5600 JMP I ONCE /NO, RETURN 2226 016612 1374 TAD (VER /YES 2227 016613 4773 JMS I (ERPRNT /PRINT VERSION NUMBER 2228 016614 5600 JMP I ONCE /RETURN 2229 2230 016615 1723 VER, TEXT \OS/8 PIP V11A\ 016616 5770 016617 4020 016620 1120 016621 4026 016622 6161 016623 0100 2231 016624 0000 ONCENF, 0 2232 016773 4600 PAGE 016774 6615 016775 0007 016776 7644 016777 0020 2233 $ ABSBIN 4442 ABSLUT 4440 ABUF 6601 ACHLP 3204 ACLOSE 3021 ADCAXR 3241 unreferenced ADDLEN 4311 AEOFFG 3114 AGAIN 2656 AOUERR 6535 ASCEOF 3107 ASCI2 6465 ASCI5 3350 ASCIGO 3200 ASCII 3075 unreferenced ASCJMP 3231 ASCPTC 6543 BEOF 4517 BEOT 4446 BIN200 4425 BIN360 4400 BINARY 4401 BLOKNO 0025 BN7600 4507 BNM140 4444 unreferenced BOUERR 6541 C200 3533 CARRET 3321 CDIF10 5324 CGEWST 6433 CHAR 0021 CHPRNT 4627 CINSRT 3237 CKZERO 5611 CNFMXT 3762 COLCT 3342 CONFRM 3734 COPTSW 3133 CTCFLG 5700 CTCMSG 5702 CTCTST 2507 CYWAST 6413 DCB 7760 DCOUNT 0030 DDATE 0033 DELETE 3401 DELOOP 3406 DEMPTY 4325 DEND 3134 DEVLEN 3600 DFORG 6201 DFUJLP 4011 DIR 2540 DIRECT 6200 DIRMSG 2542 DIRPRE 4000 unreferenced DLENGT 6206 DLHNDL 3415 DLINK 0031 DMTX 5460 DP4 3422 DPFILE 3423 DSKNAM 4711 DSKNUM 4705 DTYPE 0027 DWASTE 6204 DZERO 3435 ECOUNT 0035 ENDDIR 4352 ENDFUJ 2617 EOFERR 2101 EOFTST 3016 EOL 3004 EOLLP 3010 ERCRLF 4643 ERLP 4602 ERPCH 4613 ERPRNT 4600 ERR0 5000 ERR1 5014 ERR10 5162 ERR11 6233 ERR2 6274 ERR3 5030 ERR4 5042 ERR5 5054 ERR6 5070 ERR7 5110 ERR8 5127 ERR9 5145 ERRTBL 4737 FAKE 6400 FFEED 3311 FFLF 3301 FILENR 4621 FILLLP 2326 FIXLEN 3700 FIXLP 3710 FIXOVR 3724 FLENGT 0024 GETDIR 4040 GETEQ 5273 GETNEW 2030 GOTCON 3764 ICHAR 2014 ICHAR1 2124 ICHAR2 2120 ICHAR3 2105 unreferenced IHNDLR 0024 IM7600 2740 IMAGE 2600 IMCCNT 2614 IMCLOS 2603 unreferenced IMCTLW 2706 IMEFLP 2727 IMERRX 2723 IMFILP 2661 unreferenced IMGTST 6254 IMHNDL 2637 IMNZRO 2743 IMOUT 2720 IMRCLP 2667 IMREC 2710 IMTRA 2654 IN200 2110 IN7400 2000 IN7600 2015 INBLK 0033 INBREC 2056 INBUF 3000 INBUFP 2052 INCDIF 2046 INCHAR 2021 INCHCT 2135 INCOMN 2125 INCTL 1600 INCTLW 2051 INCTR 2001 INCTZF 2127 INDEVH 6600 INEFER 4534 INEOF 0023 INERR 2100 unreferenced INERRX 2075 INFLD 0000 INFPTR 0022 INGBUF 2032 INHNDL 2146 INJMP 2102 INJMPP 2024 INNEWF 2135 INPTR 2012 INREC 2053 INRECS 0007 INRTRN 2133 INSEG 5407 INTEST 5302 INXR 0011 IOMSG 5717 IOPEN 2001 K200 6026 K2000 6043 K3400 6112 K7 6263 K7617 6143 K7622 6024 K770 3400 K7760 6000 L20 3033 LEADER 3531 LEAVE 2516 unreferenced LFEED 3002 LTCODE 4451 LTLOOP 4460 MDATE 7666 MOVE 6207 MOVE1 6215 MOVFIL 5452 MPARAM 7643 MTEMP 0027 MWAST 6344 NAME1 4264 NAME2 4265 NAME3 4266 NAME4 4275 NAMELP 4226 NEWIN 5400 NEWOUT 5503 NEWSEG 4205 NEWTAP 4406 NEXTIN 5515 NODUMP 2346 NOHND 6400 NOPCD 3033 NOROOM 5735 NOTOPT 3337 NOYES 3730 NXTDIR 4200 NXTRD 6114 OCHAR 2410 OCHAR1 2460 OCHAR2 2455 OCHAR3 2426 unreferenced OCISZ 2354 OCLOSE 2310 OCRET 2355 OEFAIL 2233 OFSET 6140 OHNDLR 0025 OLDDIR 0007 ONCE 6600 ONCENF 6624 ONOFIL 2245 ONTERR 2243 OOPEN 2200 OORETN 2231 OS78 0001 OTRTN 2505 OTYPE 2473 OU7600 2201 OU7601 2351 OUBLK 2222 OUBUF 0000 OUCCNT 2352 OUCDIF 2276 unreferenced OUCHAR 2421 unreferenced OUCOMN 2462 OUCRET 2463 OUCTL 5400 OUCTLW 2301 OUDEVH 7200 OUDLEN 0031 OUDWCT 2471 OUELEN 2223 OUENTR 2217 OUFLD 0000 OUHNDL 2215 OUJMP 2423 OUJMPE 2470 OUK 5326 OUNOWR 2306 OUPOLD 2466 OUPTR 2467 OUREC 2303 OUSAVE 5533 OUSETP 2400 OUTBLK 0030 OUTDIR 5631 OUTDMP 2247 OUTEMP 2465 OUTINH 2472 OUTOPN 3343 OUTSEG 5641 OUTXR 0010 OUWAST 0027 OZERR 3513 OZHNDL 3461 P1 6512 unreferenced P1A 6514 P7600 3520 PBLJMP 4125 PCRLF 4142 PDATE 4650 PER13 6141 PER2 6537 unreferenced PER4 3110 PIP 3023 PIPCD 3030 PIPCLR 6126 PIPERR 3517 PIPSA 3000 unreferenced PIPSNA 3011 PR212 4055 PR6BIT 4070 PRBLNK 4134 PRCT 4067 PRLAST 4136 PRLNGT 4276 unreferenced PRNMLP 4106 PRNUM 4101 PRTCRL 4310 PRWD 4050 PRWDLP 4054 PTP 0020 PWRTEN 4152 RBTLP 3122 RCOPY1 4523 RECCNT 0034 RELBIN 4466 RELEND 4513 RELERR 4541 RELLP 4472 RELSNA 4503 RELTBL 4717 RUBOUT 3115 S7200 5406 SAME 0032 SEMPTY 5531 SETCTC 5314 SETSAM 5543 SGETIN 5416 SLASHG 2520 SLGRET 2532 SNULER 5523 SNULL 5525 SOHND 5220 SQ7600 5333 SQBUF1 6600 SQBUF2 7200 SQCTLC 5650 SQDTST 6476 SQFIL3 6311 SQFIL4 6340 SQFIL5 6315 SQFILE 6303 SQFLAG 0026 SQIDER 5625 SQIOER 5645 SQOVER 5600 SQTRA 2637 SQUISH 5200 SQUISX 5202 unreferenced SRSTOR 5664 SURE 5534 SYSCOP 6001 SYSCPY 6004 SYSDIR 6525 SYSZRO 6530 TAB 3251 TABLP 3254 TABRBT 3264 TEMP 0020 TEMP1 0012 TESTXR 3243 TOPT 3325 TSTHED 6443 TSTIO 6453 TSTSAM 6267 TTYOUT 5172 VER 6615 VTAB 3271 VTLF 3302 WASTE 0032 XR 0010 YDUMP 6121 YIHAND 6023 YINREC 6045 YLOOP 6110 YNOOUT 6133 unreferenced YOHAND 6063 YOUSYS 6040 YSOUT 6130 YTSOUT 6243 ZEROK 5620 ZEROKS 5622 ZRO70 3474