1 /FOTP.PA OS278 2 /ADAPTED FROM: 3 /3.3 OS/8 V3 FOTP 23-MAY-1978 4 / 5 / 6 / 7 / 8 / 9 / 10 / 11 / 12 / 13 /COPYRIGHT (C) 1974,1975,1978, 1981, 1982 BY DIGITAL EQUIPMENT CORPORATION 14 / 15 / 16 / 17 / 18 / 19 / 20 / 21 / 22 / 23 / 24 /THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE 25 /AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT 26 /CORPORATION. DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY 27 /FOR ANY ERRORS THAT MAY APPEAR IN THIS DOCUMENT. 28 / 29 /THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FURNISHED TO THE PURCHASER 30 /UNDER A LICENSE FOR USE ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED 31 /(WITH INCLUSION OF DIGITAL'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH 32 /SYSTEM, EXCEPT AS MAY OTHERWISE BE PROVIDED IN WRITING BY DIGITAL. 33 / 34 /DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE 35 /OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY 36 /DIGITAL. 37 / 38 / 39 / 40 / 41 / 42 / 43 / 44 / 45 / 46 / 47 /WITH FAILSAFE CHANGES NOV 17, 1973 R.L. 48 49 50 / FOTP (FILE ORIENTED TRANSFER PROGRAM) H.J. 51 52 53 /CORE MAP 54 55 /FROM TOP OF CORE 56 57 / FIELD 2 GETS CONDITIONALLY USED AS BUFFER 58 59 / FIELD 1 60 / 7777-7600 MONITOR 61 / 7577-4600 INCORE OUTPUT DIRECTORY 62 / 4577-2000 FOTP CODE 63 / 1777-0 RESIDENT USR 64 / 65 / FIELD 0 66 / 7777-7600 MONITOR 67 / 7577-7200 ERROR MESSAGES 68 / 7177-0 WORK AREA AS: 69 / 70 / AT TOP- OUTPUT HANDLER IF NEEDED 71 / 1 OR 2 PAGES 72 73 / INPUT HANDLER IF NEEDED 74 / 1 OR 2 PAGES 75 76 / INPUT DEVICES DIRECTORY 77 / (ONLY USED PORTION) 78 79 / THE TRANSFER BUFFER IN 8K 80 / IS WHAT EVER REMAINS. 81 82 /FIXES FOR MAINTENANCE RELEASE: (S.R. 5-AUG-75) 83 84 /1. CHANGED COPYRIGHT DATE 85 /2. INCORPORATED SEQ #1 PATCH (DSN MARCH 1975) 86 / PERMITS FOTP TO RECOVER FROM A MONITOR ERROR 6 87 / BY UNFAKING THE SYSTEM HANDLER 88 /3. UPDATED FOTP VERSION NUMBER TO V8 89 /4. ADDED SPACE FOR A PATCH LEVEL 90 /5. ALLOWED /T SWITCH TO WORK IN CONJUNCTION WITH /R 91 /6. PERMITS RENAMING A FILE TO IT'S OWN NAME 92 /7. IF NO OUTPUT DEVICE IS SPECIFIED WITH /R, 93 / ASSUME OUT DEV=INPUT DEVICE. 94 95 /8. FIXED BUG RE ADDITIONAL INFO WORDS 96 97 /CHANGES FOR SYMBIONT SUPPORT (S.R.) MARCH 26, 1978 98 99 /9. ADDED SYMBIONT SUPPORT (SET 17726 BIT 9 IF SYMBIONT RUNNING) 100 / NOTE: WHEN SYMBIONT IS RUNNING, YOU MUST NOT SET SOFTWARE CORE SIZE 101 / EQUAL TO 8K !!!!!!!!! 102 /10. DIRECTORY (TEMPORARY) FIELD 0 BUFFER NOW STARTS AT LOCATION 3. 103 104 /VERSION 4 OS78 CHANGES: 105 106 /CHANGED KEYBOARD PROCESSING ROUTINES TO OPERATE IN A VT278 WORLD. JMS 107 /TO CINTER ONLY LOOKS FOR ^C; LEAVES ANYTHING IT FOUND IN T2, AND EXITS 108 /WITH A ZERO AC. XON/XOFF (^O, ^S) ARE PROCESSED IN THE INPUT/OUTPUT 109 /HANDLER, NOT IN FOTP. 110 111 /ADDED THE PATCH FROM DSN 21.19.1 TO ALLOW FOTP TO KNOW ABOUT LARGE 112 /DIRECTORIES. 113 114 /OS278 VB0 CONVERT NULL TO SPACE IN TTY FILENAME OUTPUT ROUTINE (PNLOOP) 115 /VB1 05-JAN-83 LC SUPPORT FOR Y/N QUERY 116 /PAGE 0 LOCATIONS OS/8 USR WON'T MANGLE 117 118 PTR=20 119 CNT=21 120 INFPTR=22 121 OUHAND=23 122 INHAND=24 123 FPAGE=25 124 EPTR=26 125 INSCNT=27 126 TEMP=30 127 OKFLAG=31 128 IFCNT=32 129 BUFSIZ=33 130 INFWDS=34 131 BDPTR=35 132 GPTR1=36 133 INEOF=37 134 135 /AUTO INDEX REGISTERS USR WILL ALLOW ME TO USE TEMPORARILY 136 137 XR=10 138 XR1=11 139 XR2=12 140 141 142 /VARIOUS CONSTANTS THAT CAN BE GENERATED 143 144 AC2=CLA CLL CML RTL 145 AC4000=CLA CLL CML RAR 146 ACM2=CLA CLL CMA RAL 147 ACM3=CLA CLL CMA RTL 148 149 / LOCATIONS REFERENCED IN OS/8 150 151 ALTOPT=7642 152 OPT1=7643 153 OPT2=7644 154 DATE=7666 155 DIRKEY=7 /"DIRECTORY SEGMENT IN CORE" KEY 156 157 /SYMBOLIC FOTP LOCATIONS: 158 159 OUBUFR= 4600 /OUTPUT BUFFER - IN FIELD 1 160 INBUFR= 3 /INPUT BUFFER - IN FIELD 0 161 LSTFPG= 7000 /FIRST LOC OF LAST FREE PAGE IN FIELD 0 162 FAKHND= 200 /LOCATION OF OS/8 FAKEOUT HANDLER 163 VERSION= "B&77^100!61 /VER B1 164 SUBVER= 0 165 /LOCATED AT "VERLOC" AS 60+VERSION^100+SUBVER 166 /STARTS AT 4600 IN FIELD 1 (ONCE ONLY CODE) 167 168 /SAVE INFO: 169 170 / .LOAD FOTP(89P) 171 / .SAVE SYS FOTP;14600 172 173 FIELD 1 174 *2000 175 176 012000 4777 CDCALL, JMS I (200 /SEE WHAT THE PERSON WANTS 177 012001 0005 FIVE, 5 178 012002 5200 STAR, 5200 /IN SPECIAL MODE 179 180 012003 4776 BYPSCD, JMS I (INTERC /CATCH CALLS TO 7600 181 182 012004 1775 TAD I (7600 /SAVE USER OUTPUT DEVICE 183 012005 3774 DCA I (USEROD /-FOR LATER 184 185 186 / CHECK FOR ? IN OUTPUT SPECIFICATION 187 012006 1373 TAD (-10 /8CHARACTERS TO LOOK AT 188 012007 3021 DCA CNT /CNT HAVING -10 PUTS US AT FIRST CHAR 189 012010 1372 S1C, TAD (7605 190 012011 4771 JMS I (GTSXBT /GET A CHAR 191 012012 1370 TAD (-"?!7700 /CHECK FOR ? 192 012013 7650 SNA CLA 193 012014 5324 JMP QINO /? IN OUTPUT NOT ALLOWED 194 012015 2021 ISZ CNT 195 012016 5210 JMP S1C 196 197 / CHECK FOR EMBEDDED * IN ANY SPECIFICATION 198 199 012017 1372 TAD (7605 200 012020 3020 S4L, DCA PTR 201 012021 1373 TAD (-10 202 012022 3021 DCA CNT 203 012023 1020 ACK, TAD PTR 204 012024 4771 JMS I (GTSXBT 205 012025 1367 TAD (-"*!7700 /CHECK TO SEE IF CHARACTER * 206 012026 7640 SZA CLA /SKIP IF IT IS 207 012027 5242 JMP CNTUP /GO LOOK AT NEXT 208 012030 7326 AC2 209 012031 1021 TAD CNT /ARE WE AT EXTENSION 210 012032 7440 SZA /SKIP IF YES 211 012033 1366 TAD (6 /ARE WE AT START OF FILENAME? 212 012034 7650 SNA CLA /SKIP IF NOT 213 012035 2021 ISZ CNT /BUMP COUNT ONLY IF OK 214 012036 1020 TAD PTR /LOOK AT NEXT CHAR 215 012037 4771 JMS I (GTSXBT 216 012040 7640 SZA CLA /SKIP IF ITS NULL - OK 217 012041 5322 JMP AINO /ERROR 218 012042 2021 CNTUP, ISZ CNT /BUMP TO NEXT CHAR 219 012043 5223 JMP ACK /CONTINUE CHECKING 220 012044 1420 TAD I PTR /ANY MORE INPUT 221 012045 7650 SNA CLA /SKIP IF THERE IS 222 012046 5252 JMP NULLCK 223 012047 1201 TAD FIVE /BUMP TO NEXT ENTRY 224 012050 1020 TAD PTR 225 012051 5220 JMP S4L 226 / CHECK FOR NULL OUTPUT SPECIFICATION AND MAKE *.* 227 228 012052 1765 NULLCK, TAD I (7601 /WAS OUTPUT FILENAME GIVEN? 229 012053 7640 SZA CLA /SKIP IF NONE 230 012054 5261 JMP DIDEML 231 012055 1202 TAD STAR /PUT AN ASTERISK IN 232 012056 3765 DCA I (7601 /FILENAME 233 012057 1202 TAD STAR 234 012060 3764 DCA I (7604 /AND EXTENSION 235 236 /THIS CODE SETS A DEFAULT OUTPUT DEVICE ON DELETE 237 238 012061 1775 DIDEML, TAD I (7600 /IS AN OUTPUT DEVICE SPECIFIED? 239 012062 7440 SZA /SKIP IF NOT 240 012063 5274 JMP ODSPEC /NOTE DEVICE NUMBER IN AC 241 012064 1763 TAD I (OPT1 /CHECK FOR /D 242 012065 0362 AND (400 243 012066 7640 SZA CLA /SKIP IF NOT /D 244 012067 5273 JMP MOV /OUTPUT=INPUT 245 012070 1761 TAD I (OPT2 /V3C 246 012071 0360 AND (100 /CHECK FOR /R 247 012072 7640 SZA CLA /V3C 248 012073 1772 MOV, TAD I (7605 /WE'LL SUBSTITUTE FIRST INPUT DEVICE FOR USER 249 012074 0357 ODSPEC, AND (17 /CLEAR USER SPECIFIED LENGTH 250 012075 3775 DCA I (7600 /WE KNOW BETTER 251 252 /THE FOLLOWING BRINGS IN THE OUTPUT DEVICE HANDLER, 253 /READS THE DIRECTORY INTO CORE AND VERIFIES IT. 254 255 012076 1356 TAD (LSTFPG /SET THE FREE SPACE POINTER 256 012077 3025 DCA FPAGE /TO THE LAST FREE PAGE IN FIELD 0 257 012100 1775 TAD I (7600 /IS THERE AN OUTPUT DEVICE? 258 012101 7440 SZA /IF NO OUTPUT, DON'T FETCH HANDLER 259 012102 4755 JMS I (ASSIGN /GET THE HANDLER AND ALLOCATE ITS SPACE 260 012103 3023 DCA OUHAND /AC RETURNS HANDLER ENTRY POINT 261 012104 4754 JMS I (ODIRIN /READ IN THE OUTPUT DIRECTORY 262 012105 1372 TAD (7605 /INGIALIZE INPUT POINTER 263 264 /THIS IS THE BEGINING OF THE INPUT FILE LOOP 265 266 012106 3022 DOMOIN, DCA INFPTR /POINTER TO CURRENT INPUT 267 012107 1422 TAD I INFPTR /WHEN 0 NO MORE INPUT 268 012110 7450 SNA /SKIP IF MORE TO DO 269 012111 5753 JMP I (ENDCHK /DO END PROCESSING 270 012112 4755 JMS I (ASSIGN /ASSIGN AND ALLOCATE SPACE FOR INPUT HANDLER 271 012113 3024 DCA INHAND /AND SAVE ITS ENTRY ADDRESS 272 273 /THE FOLLOWING 2 INSTRUCTIONS HELP AVOID ALL KINDS OF 274 /PROBLEMS WITH THE MONITOR. IF A HANDLER GETS LOADED, THE 275 /MONITOR MAKES IT RESIDENT FOR OTHER PEOPLE AND DOESN'T DELETE 276 /ITS RESIDENT STATUS IF A REQUEST IS MADE FOR A NEW HANDLER 277 /TO BE LOADED OVER IT IF THE NEW HANDLER IS ALREADY RESIDENT 278 279 012114 1025 TAD FPAGE /SAVE FREE SPACE POINTER HERE 280 012115 3317 DCA SFUDG 281 012116 5752 JMP I (PG1 /LINK TO NEXT SECTION 282 283 012117 0000 SFUDG, 0 284 012120 4751 ONDERR, JMS I (ERROR 285 012121 7320 ODRERR+40 /ERROR READING OUT DIR 286 012122 4751 AINO, JMS I (ERROR 287 012123 7246 ILLA+40 /ILLEGAL * 288 012124 4751 QINO, JMS I (ERROR 289 012125 7240 ILLQ+40 /ILLEGAL ? 290 291 012126 1350 SYMPAT, TAD (5000 /DON'T PUT BUFFER OVER LOC 0 292 012127 3747 DCA I (X7400 /WHEN RUNNING A SYMBIOTE 293 012130 5746 JMP I (INIRET /RETURN FROM INIT 294 012146 4673 PAGE 012147 3151 012150 5000 012151 3705 012152 2200 012153 3506 012154 4303 012155 3200 012156 7000 012157 0017 012160 0100 012161 7644 012162 0400 012163 7643 012164 7604 012165 7601 012166 0006 012167 7726 012170 7701 012171 3230 012172 7605 012173 7770 012174 4123 012175 7600 012176 3635 012177 0200 295 /CHECK FOR NON FILE STRUCTURED INPUT 296 /WE CAN'T HANDLE IT 297 298 012200 1422 PG1, TAD I INFPTR 299 012201 1377 TAD (7757 300 012202 3030 DCA TEMP 301 012203 1430 TAD I TEMP /IS FILE STRUCTURED BIT ON 302 012204 7700 SMA CLA /SKIP IF IT IS 303 012205 5350 JMP NFIN /ERROR 304 012206 6202 CIF 0 305 012207 4424 JMS I INHAND /READ INPUT DEVICES DIRECTORY 306 012210 1400 1400 307 012211 0003 IDBUF, INBUFR 308 012212 0001 1 309 012213 5352 JMP INDERR /ERROR 310 012214 6201 CDF 0 311 012215 1611 TAD I IDBUF /MAKE SURE THAT THE 312 012216 7140 CMA CLL /DIRECTORY OF 313 012217 1776 TAD I (INBUFR+2 /THE DEVICE IS 314 012220 6211 CDF 10 /GOOD 315 012221 7420 SNL 316 012222 1375 TAD (-107 //V4: ALLOW FOTP TO RECOGNIZE UP TO 71 (D) ENTRIES 317 //IN A DIRECTORY SEGMENT. DSN 21.19.1 AUG78. 318 /(SEE COMMENT ON TEST IN ROUTINE "ODIRIN") 319 012223 7630 SZL CLA /SKIP IF ITS GOOD 320 012224 5354 JMP BIDIR /ERROR 321 322 /FIND LAST BLOCK OF DIRECTORY 323 324 012225 1376 TAD (INBUFR+2 /LINK TO NEXT SGMENT NUMBER 325 012226 3020 FNDLST, DCA PTR /SAVE IT 326 012227 6201 CDF 0 327 012230 1420 TAD I PTR /IS THERE ANOTHER SEGMENT? 328 012231 7650 SNA CLA /SKIP IF YES 329 012232 5236 JMP ATIT /NO...WE ARE POINTING TO LAST 330 012233 1020 TAD PTR /BUMP TO NEXT SEGMENT 331 012234 1374 TAD (400 332 012235 5226 JMP FNDLST /LOOK AGAIN 333 012236 1020 ATIT, TAD PTR 334 012237 0373 AND (7600 /NEW 335 012240 1374 TAD (400 /TOTAL SIZE OF IN CORE DIRECTRY 336 012241 7041 CIA /NEGATE FOR ISZ 337 012242 3021 DCA CNT 338 012243 1025 TAD FPAGE /WE ARE GOING TO PACK DIRECTORY 339 012244 1372 TAD (200 /RIGHT UP TO INPUT HANDLER SO 340 012245 1021 TAD CNT /WE GET MAX SIZE TRANSFER BUFFER 341 012246 3025 DCA FPAGE /ADJUSTED FREE CORE POINTER 342 012247 7040 CMA 343 012250 1025 TAD FPAGE 344 012251 3011 DCA XR1 /SET UP PLACE TO MOVE TO 345 012252 7326 AC2 346 012253 3012 DCA XR2 /ALWAYS COMES FROM 3 347 012254 1412 TAD I XR2 /MOVE 348 012255 3411 DCA I XR1 /IT 349 012256 2021 ISZ CNT 350 012257 5254 JMP .-3 351 /SET SAME DEVICE FLAG FLAG 4000 IF /D 352 353 012260 6211 CDF 10 354 012261 1771 TAD I (OPT1 355 012262 0374 AND (400 356 012263 7106 RTL CLL /PUT /D BIT INTO AC 0 357 012264 7004 RAL 358 012265 3347 DCA SDFLG 359 360 361 / COUNT NUMBER OF INPUTS FROM SAME DEVICE 362 /ALSO MAKE NULL INPUT FILENAMES *.* 363 /BUT ONLY IF NOT /D 364 365 012266 1022 TAD INFPTR /OK LETS GO THROUGH 366 012267 3020 DCA PTR /THE INPUT SPECIFICATIONS 367 012270 2020 GETCNT, ISZ PTR /POINT TO FILENAME WORD 368 012271 1370 TAD (3 /SET TEMP TO POINT TO EXTENSION 369 012272 1020 TAD PTR 370 012273 3030 DCA TEMP 371 012274 1347 TAD SDFLG /ARE WE DOING /D 372 012275 7450 K7450, SNA /SKIP IF YES - AC NON 0 373 012276 1420 TAD I PTR /NO /D - LOOK AT FILENAME 374 012277 7640 SZA CLA /ITS NULL PUT IN *.* 375 012300 5305 JMP NOSUB /DONT CHANGE IT 376 012301 1367 TAD (5200 /MAKE IT * 377 012302 3420 DCA I PTR 378 012303 1367 TAD (5200 /.* 379 012304 3430 DCA I TEMP 380 012305 7201 NOSUB, CLA IAC /TEMP+1 POINTS TO NEW INPUT 381 012306 1030 TAD TEMP 382 012307 3020 DCA PTR 383 /NOTE CNT WAS SET BY ISZ'ING TO ZERO 384 012310 2021 ISZ CNT /KEEP COUNT OF DEVICES IN GROUP 385 012311 1766 TAD I (OPT2 /CHECK FOR /U (UGLY SWITCH) 386 012312 0365 AND (10 387 012313 7640 SZA CLA /SKIP IN NO /U 388 012314 5322 JMP NOPTIM /WERE FORCED TO DO ONE AT A TIME 389 012315 1420 TAD I PTR /COMPARE DEVICE NUMBERS 390 012316 7041 CIA /IN A GROUPING 391 012317 1422 TAD I INFPTR 392 012320 7650 SNA CLA /SKIP IF NEW GROUP 393 012321 5270 JMP GETCNT /WE'LL DO ALL THE SAME AT ONCE 394 012322 1021 NOPTIM, TAD CNT 395 012323 7041 CIA /NEGATE COUNT 396 012324 3027 DCA INSCNT /AS NUMBER OF INPUTS TO DO AT ONCE 397 012325 1020 TAD PTR /SAVE WHERE TO CONTINUE FOR REST 398 012326 3764 DCA I (MOIN 399 /THE FOLLOWING CHECKS TO SEE IF A OPERATION 400 /IS BEING DONE FROM A DEVICE TO ITSELF 401 402 012327 1773 TAD I (7600 /GET DEVICE NUMBER 403 012330 1363 TAD (7646 /HANDLER ENTRY POINT TABLE 404 012331 3030 DCA TEMP 405 012332 1422 TAD I INFPTR /GET INPUT ENTRY POINT 406 012333 1363 TAD (7646 407 012334 3020 DCA PTR 408 012335 1420 TAD I PTR /CHECK INPUT ENTRY POINT AGAINST 409 012336 7041 CIA 410 012337 1430 TAD I TEMP /OUTPUT ENRTY POINT 411 012340 7650 SNA CLA /SKIP IF THEY ARE DIFFERENT 412 012341 2347 ISZ SDFLG /SET SAME DEVICE FLAG, AC11 413 012342 1025 TAD FPAGE /SET POINTER TO 414 012343 3035 DCA BDPTR /START OF DIRECTORY 415 012344 3346 DCA TYPFND /CLEAR FOUND FILE FLAG 416 012345 5762 JMP I (NBLOCK /LINK TO SOME MORE 417 418 012346 0000 TYPFND, 0 419 012347 0000 SDFLG, 0 /NEGATIVE MEANS /D, ODD MEANS OUTPUT DEV=INPUT DEV 420 421 012350 4761 NFIN, JMS I (ERROR 422 012351 7433 NFLEIN+40 /NON FILE STRUCTED INPUT 423 012352 4761 INDERR, JMS I (ERROR 424 012353 7300 BADIRD+40 /ERROR READING INPUT DIR 425 012354 4761 BIDIR, JMS I (ERROR 426 012355 7472 BIDIRM+40 /NOT A GOOD DIRECTORY 427 428 012361 3705 PAGE 012362 2400 012363 7646 012364 4124 012365 0010 012366 7644 012367 5200 012370 0003 012371 7643 012372 0200 012373 7600 012374 0400 012375 7671 012376 0005 012377 7757 429 /THIS IS THE SUPERQUASIFACETED DIRECTORY PATTERN MATCHING ROUTINE 430 431 /THE INPUT DIRECTORY IS SEARCHED HERE, IF A MATCH 432 /IS FOUND USING THE INPUT GROUPING 433 /GOT1 GETS CONTROL WITH -BLOCKS IN THE AC 434 435 012400 7240 NBLOCK, STA 436 012401 1035 TAD BDPTR /POINTER TO START OF DIR BLOCK 437 012402 3010 DCA XR 438 012403 6201 CDF 0 439 012404 1410 TAD I XR /GET COUNT OF NUMBER OF ENTRIES 440 012405 3352 DCA ENTCNT /SAVE LOCALLY TO AVOID HERB'S BUG 441 012406 1410 TAD I XR /GET BLOCK NUMBER FIRST FILE 442 012407 3350 DCA BLOCK 443 012410 1410 TAD I XR /NEXT SEGMENT NUMBER 444 012411 3346 DCA LFLAG /IF IT 0 WE AT END 445 012412 2010 ISZ XR /SKIP TENTATIVE FILE WORD 446 012413 1410 TAD I XR /GET -NUMBER OF INFO WORDS 447 012414 7041 CIA /MAKE POSITVE 448 012415 3034 DCA INFWDS 449 012416 1010 TAD XR /POINT TO FIRST 450 012417 7001 IAC /ENTRY 451 012420 3026 DCA EPTR 452 453 012421 1426 BLOOP, TAD I EPTR /GET FILENAME WORD 454 012422 6211 CDF 10 455 012423 7650 SNA CLA /SKIP IF FILE HERE 456 012424 5313 JMP EMPTY /NO... ITS REALLY AN EMPTY 457 012425 1027 TAD INSCNT /SET NUMBER OF INPUT TO LOOK 458 012426 3347 DCA NCNT /AT ALL AT ONCE 459 012427 3351 DCA MATFLG /CLEAR MATCH FLAG 460 012430 1022 TAD INFPTR /ADDRESS OF FIRST INPUT 461 012431 7410 SKP 462 012432 1345 MN1, TAD GPTR2 /ADDRESS OF CURRENT INPUT 463 012433 1377 TAD (5 /GTSXBT SUBR REQUIRES US TO 464 012434 3345 DCA GPTR2 /POINT TO END OF FIELD 465 012435 1026 TAD EPTR /POINT DIRECTORY POINTER TO 466 012436 1376 TAD (4 /END OF ENTRY FOR SAME REASON 467 012437 3036 DCA GPTR1 468 012440 1036 TAD GPTR1 /SET EPNEXT TO POINT TO 469 012441 1034 TAD INFWDS /MINUS NUMBER OF BLOCKS IN 470 012442 3344 DCA EPNEXT /FILE WORD 471 012443 1375 TAD (-10 /NUMBER OF CHARS TO LOOK AT 472 012444 3021 WILDNM, DCA CNT 473 012445 1345 MLP, TAD GPTR2 /OK - GET A CHARACTER FROM 474 012446 4774 JMS I (GTSXBT /STRING 475 012447 1373 TAD (-"*!7700 /IS IT AN * 476 012450 7450 SNA /SKIP IF NOT * 477 012451 5336 JMP WILDA /YEP... ITS A WILD CARD 478 012452 1372 TAD ("*-"? /IS IT A ? 479 012453 7450 SNA /SKIP IF NOT 480 012454 5267 JMP WILD /YES... FORCE MATCH ON THIS CHAR 481 012455 1371 TAD ("?&77 /RESTORE VALUE 482 012456 7041 CIA /NEGATE 483 012457 3343 DCA CHAR /AND SAVE 484 012460 1036 TAD GPTR1 /NOW GET CHAR FROM DIRECTORY 485 012461 6201 CDF 0 486 012462 4774 JMS I (GTSXBT 487 012463 6211 CDF 10 488 012464 1343 TAD CHAR /DO CHARS MATCH 489 012465 7640 SZA CLA /SKIP IF THEY DO 490 012466 5272 JMP NM1 /NO MATCH ON THIS INPUT 491 012467 2021 WILD, ISZ CNT /BUMP COUNT OF CHARS & POINTER 492 012470 5245 JMP MLP /COMPARE ALL 8 493 012471 2351 MEXT, ISZ MATFLG /A MATCH!!!!!!! 494 012472 7200 NM1, CLA /WILD CARD COMES HERE WITH ICHY AC 495 012473 2347 ISZ NCNT /HAVE WE CHECKED GROUP OF INPUTS 496 012474 5232 JMP MN1 /NO CHECK WHOLE GROUP 497 012475 1351 TAD MATFLG /HAVE THERE BEEN ANY MATCHES 498 012476 7640 SZA CLA /SKIP IF NOT 499 012477 1376 TAD (4 /WILL INVERT /V SWITCH 500 012500 1770 TAD I (OPT2 /ADD SWITCH 501 012501 0376 AND (4 /ISOLATE IT 502 012502 6201 CDF 0 503 /SKIPS IF INPUT DIRECTORY ENTRY IS NOT CANDIDATE 504 /THAT IS - IF A MATCH WAS NOT FOUND BETWEEN ANY 505 /OF THE INPUTS AND /V WAS NOT SPECIFIED OR 506 /A MATCH WAS FOUND AND /V WAS SPECIFIED 507 508 /THIS ALLOWS /V TO MEAN EVERYTHING BUT... 509 510 012503 7640 SZA CLA 511 012504 1744 TAD I EPNEXT /GET -NUMBER OF BLOCKS 512 012505 6211 CDF 10 513 012506 7440 SZA /SKIPS IF TENTATIVE OR NOT CANDIDATE 514 012507 5767 JMP I (GOT1 /PROCESS FILE 515 012510 1344 NENT, TAD EPNEXT /POINT EPTR TO BLOCK 516 012511 3026 DCA EPTR /COUNT OF FILE 517 012512 7410 SKP 518 012513 2026 EMPTY, ISZ EPTR /ON EMPTY MAKE EPTR POINT TO BLOCK COUNT 519 012514 6201 CDF 0 520 012515 1426 TAD I EPTR /GET BLOCK COUNT 521 012516 7041 CIA /MAKE POSITIVE 522 012517 1350 TAD BLOCK 523 012520 3350 DCA BLOCK /KEEP SUM 524 012521 2026 ISZ EPTR /POINT TO NEXT ENTRY 525 012522 2352 ISZ ENTCNT /BUMP THE NUMBER OF ENTRIES 526 012523 5221 JMP BLOOP /NOT DONE WITH SEGMENT 527 012524 6211 CDF 10 528 012525 1366 TAD (400 /BUMP TO NEXT SEGMENT 529 012526 1035 TAD BDPTR 530 012527 3035 DCA BDPTR 531 012530 1346 TAD LFLAG /DID WE PROCESS LAST SEGMENT 532 012531 7640 SZA CLA /SKIP IF WE DID 533 012532 5200 JMP NBLOCK /PROCESS NEW SEGNENT 534 012533 1765 TAD I (SFUDG /RESET FREE CORE POINTER 535 012534 3025 DCA FPAGE /TO PRESERVE INPUT HANDLER IF PRESENT 536 012535 5764 JMP I (SAYNON 537 538 /HANDLE WILD CARDS 539 540 012536 1021 WILDA, TAD CNT /GET CURRENT CHAR POSITION 541 012537 1363 TAD (6 /ADD SIZE OF FILENAME 542 012540 7510 SPA /SKIP IF IN EXTENSION FIELD 543 012541 5244 JMP WILDNM /THIS BUMPS TO EXTENSION 544 012542 5271 JMP MEXT /THIS MEANS IT HAS TO BE A MATCH 545 546 547 012543 0000 CHAR, 0 548 012544 0000 EPNEXT, 0 549 012545 0000 GPTR2, 0 550 012546 0000 LFLAG, 0 551 012547 0000 NCNT, 0 552 012550 0000 BLOCK, 0 553 012551 0000 MATFLG, 0 554 012552 0000 ENTCNT, 0 555 556 557 012563 0006 PAGE 012564 4044 012565 2117 012566 0400 012567 2600 012570 7644 012571 0077 012572 7753 012573 7726 012574 3230 012575 7770 012576 0004 012577 0005 558 012600 3032 GOT1, DCA IFCNT /-# OF BLOCKS IN AC 559 012601 4777 JMS I (DATCHK /VERIFY IF /C OR /O ALSO MATCH 560 012602 2776 ISZ I (TYPFND /COMES BACK IF THEY DO - 561 /TURN OFF NO FILES MSG FOR THIS INPUT GROUP 562 012603 1775 TAD I (OPT2 /CHECK FOR /T 563 012604 0374 AND (20 564 012605 7650 SNA CLA /SKIP IF /T 565 012606 1034 TAD INFWDS /SEE IF DATE PRESENT 566 012607 6201 CDF 0 567 012610 7640 SZA CLA /SKIP IF NO DATE OR /T 568 012611 1436 TAD I GPTR1 569 012612 6211 CDF 10 570 012613 7440 SZA /SKIP IF NO DATE OR /T 571 012614 3773 DCA I (DATE /GIVE MONITOR FILES DATE 572 012615 1372 TAD (-4 /MAKE 2 COPIES 573 012616 3021 DCA CNT /OF THE INPUT 574 012617 7040 CMA /FILE NAME IN 575 012620 1026 TAD EPTR /FIELD 1 TO 576 012621 3010 DCA XR /WORK WITH THEM 577 012622 1371 TAD (SPOT-1 /MAKE THEM AT SPOT 578 012623 3011 DCA XR1 /AND SPOT1 579 012624 1370 TAD (SPOT1 /SPOT1 WILL ALWAYS 580 012625 3020 DCA PTR /CONTAIN THE ORIGINAL 581 012626 6201 MOVENT, CDF 0 /AND SPOT WILL 582 012627 1410 TAD I XR /CONTAIN THE 583 012630 6211 CDF 10 /UPDATED VERSION AS 584 012631 3420 DCA I PTR /REFLECTED FROM 585 012632 1420 TAD I PTR /THE OUTPUT SPECIFICATION 586 012633 2020 ISZ PTR /- 587 012634 3411 DCA I XR1 /- 588 012635 2021 ISZ CNT /- 589 012636 5226 JMP MOVENT /- 590 012637 1767 TAD I (7601 /GET OUTPUT FILENAME 591 012640 1366 TAD (-5200 /WAS IT * 592 012641 7650 SNA CLA /SKIP IF NOT 593 012642 5251 JMP TSTEXT /YES... LEAVE FILENAME ALONE 594 012643 1767 TAD I (7601 /REPLACE INPUT NAME 595 012644 3765 DCA I (SPOT /WITH GIVEN 596 012645 1764 TAD I (7602 /OUTPUT 597 012646 3763 DCA I (SPOT+1 /SPECIFICATION 598 012647 1762 TAD I (7603 599 012650 3761 DCA I (SPOT+2 /- 600 012651 1760 TSTEXT, TAD I (7604 /SEE IF EXTENSION 601 012652 1366 TAD (-5200 /WAS * 602 012653 7650 SNA CLA /SKIP IF IT WASNT 603 012654 5257 JMP .+3 /LEAVE INPUT DEFAULT ALONE 604 012655 1760 TAD I (7604 /REPLCE EXTENSION 605 012656 3757 DCA I (SPOT+3 /WITH GIVEN EXTENSION 606 012657 3335 DCA TRFLG /CLEAR THE TRANSFER FLAG 607 012660 1775 TAD I (OPT2 /IS /R ON? 608 012661 0356 AND (100 609 012662 1755 TAD I (SDFLG /OR /D OR INPUT DEV=OUTPUT DEV? 610 012663 7450 SNA /SKIP IF ANY 611 012664 5302 JMP SETGD /WE ARE DEFINITELY OK 612 012665 7700 SMA CLA /IF /D THEN CHECK OUTPUT 613 012666 1354 TAD (SPOT1-SPOT /OTHERWISE INPUT 614 012667 4753 JMS I (LOOKUP 615 012670 5303 JMP NSETGD /NO OUTPUT FILE GIVEN 616 012671 7450 SNA /AC=BLOCK NO OF FILE OR 0 IF NONE 617 012672 5752 JMP I (NENT /NO FILE - DO NOTHING 618 012673 3030 DCA TEMP /SAVE - WE MIGHT NEED IT 619 012674 1755 TAD I (SDFLG /IF OPERATION IS TRANSFER THEN 620 /TRFLG IS SET IF FILE HAS NOT 621 /MOVED; IF /D TRFLG MUST NOT BE 622 /SET ; WE DONT CARE ABOUT 623 /RENAME - ITS IRRELEVANT. 624 012675 7700 SMA CLA /SKIP IF /D- WILL CAUSE TRFLG=0 625 012676 1030 TAD TEMP /GET THE BLOCK FILE IS NOW AT 626 012677 7041 CIA /CHECK AGAINST ORIGINAL 627 012700 1751 TAD I (BLOCK /LOCATION 628 012701 7650 SNA CLA /SKIP IF IT MOVED - NOTE THAT 629 /IF THIS SKIPS THE USER IS DOING 630 /A PLAY WITH DEATH OPERATION 631 012702 2335 SETGD, ISZ TRFLG /ENABLE TRANSFERING OF THE FILE 632 012703 1755 NSETGD, TAD I (SDFLG /SET UP TO PROMPT OR LIST 633 012704 7710 SPA CLA /SKIP IF NOT /D 634 012705 1372 TAD (SPOT-SPOT1 /USE OUTPUT NAME 635 012706 1350 TAD (SPOT1+4 /USE INPUT NAME 636 012707 4747 JMS I (PRINTE /SEE IF HE WANTS TO BE PROMPTED 637 012710 1775 FLSRSM, TAD I (OPT2 638 012711 7006 RTL /PUT /N INTO LINK 639 012712 0346 AND (400 /ISOLATE /R OPTION 640 012713 7640 SZA CLA /SKIP IF NOT /R 641 012714 5745 JMP I (RENAME /GO TO RENAME CODE 642 012715 1755 TAD I (SDFLG /CHECK FOR NO /D AND SAME DEV 643 012716 7750 SPA SNA CLA /SKIP IF NO /D AND SANE DEV 644 012717 1744 TAD I (7600 /IS THERE AN OUTPUT? 645 012720 7470 SNA SZL /SKIP IF NO /N AND OUTPUT DEV 646 /DIDNT SKIP IF NO /D AND SAME DEVICE 647 012721 5332 JMP NODEL /DONT DELETE 648 012722 4743 JMS I (FAKUSR /FAKE USR HANDLER CALLS 649 012723 4742 JMS I (200 /CALL USR 650 012724 0004 4 /CLOSE 651 012725 4255 SPOT /OUTPUT FILE NAME 652 012726 0000 0 653 012727 7610 CLA SKP /O.K. TO GET CLOSE ERROR NOW 654 012730 2741 ISZ I (WRTDIR /SIGNAL CHANGE MADE TO DIRECTRY 655 012731 4740 JMS I (UNFAK /FIXUP HANDLER ADDRESS AGAIN 656 012732 7200 NODEL, CLA 657 012733 1335 TAD TRFLG /SET AC NOT 0 IF TRANSFER GO AHEAD 658 012734 5737 JMP I (NPG /LINK TO SOME MORE 659 660 012735 0000 TRFLG, 0 661 662 663 012737 3000 PAGE 012740 3461 012741 3531 012742 0200 012743 3433 012744 7600 012745 4420 012746 0400 012747 4200 012750 4265 012751 2550 012752 2510 012753 4400 012754 0004 012755 2347 012756 0100 012757 4260 012760 7604 012761 4257 012762 7603 012763 4256 012764 7602 012765 4255 012766 2600 012767 7601 012770 4261 012771 4254 012772 7774 012773 7666 012774 0020 012775 7644 012776 2346 012777 3323 664 /THIS PAGE OF CODE PERFORMS FILE MOVES FROM 665 /INPUT TO OUTPUT 666 667 013000 7650 NPG, SNA CLA /SKIP IF WE CAN DO TRANSFER 668 013001 5350 JMP NFUNCT /GO PROCESS NEXT ENTRY 669 670 /THE FOLLOWING SMALL STRANGE PIECE OF CODE 671 /DYNAMICALLY ALLOCATES THE BUFFER ACCORDING 672 /TO THE FREE SPACE IN FIELD 0 (INCLUDING 673 /DIRECTORY SHRINKING) OR ALLOCATES 15 BLOCKS 674 /IN FIELD 2 IF ITS AVAILABLE. 675 676 013002 1351 F2C1, TAD X7400 /BECOMES TAD EPTR IF ONLY 8K 677 013003 0377 AND (7400 /CALCULATE FREE SPACE 678 013004 7104 RAL CLL /SIZE 679 013005 7006 RTL /AND SAVE 680 013006 7006 RTL /IT 681 013007 3033 DCA BUFSIZ 682 013010 1032 TAD IFCNT /SET THE OUTPUT 683 013011 7041 CIA /FILE COUNT 684 013012 3344 DCA OFCNT /AS POSITIVE NUMBER OF BLOCKS 685 013013 1344 TAD OFCNT /SET THE NUMBER 686 013014 0377 AND (7400 /OF BLOCKS 687 013015 7650 SNA CLA /UP FOR ENTER 688 013016 1344 TAD OFCNT /IF IT IS LESS 689 013017 7106 RTL CLL /THAN 256 OR 690 013020 7006 RTL /SET IT TO 0 691 013021 3030 DCA TEMP /FOR FILES GREATER THAN 256 692 013022 1376 TAD (SPOT /SET THE ADDRESS OF THE 693 013023 3241 DCA SBLKN /OUTPUT NAME 694 013024 1775 TAD I (7600 /IS THERE AN OUTPUT FILE? 695 013025 7450 SNA /SKIP IF THERE IS 696 013026 5350 JMP NFUNCT /DO NO TRANSFER 697 013027 1374 TAD (7757 /INDEX INTO TENTATIVE FILE 698 013030 3242 DCA MSIZE /TABLE IN ORDER TO 699 013031 1642 TAD I MSIZE /CLEAR OUT ANY 700 013032 0373 AND (7770 /TENTATIVE WE DONT WANT 701 013033 3642 DCA I MSIZE /THIS COMES IF AN I/O ERROR HIT 702 013034 1775 TAD I (7600 /DO THE ENTER 703 013035 4772 JMS I (FAKUSR /MAKE USR USE IN CORE HANDLER 704 013036 1030 TAD TEMP /ADD IN BLOCK COUNT 705 013037 4771 JMS I (200 706 013040 0003 3 /ENTER 707 013041 4255 SBLKN, SPOT 708 013042 0000 MSIZE, 0 709 013043 5770 JMP I (NOROOM /ENTER FAILED 710 013044 1767 TAD I (SVDATE /RESTORE REAL DATE TO MONITOR 711 013045 3766 DCA I (DATE 712 013046 4765 JMS I (UNFAK /REMOVE OUR FAKE HANDLER 713 013047 4764 JMS I (ADDINF /COPY ADDITIONAL INFO WORDS 714 013050 1032 TAD IFCNT /SEE IF ENTER SIZE 715 013051 7161 STL CIA /GIVEN BACK IS 716 013052 1242 TAD MSIZE /ENOUGH - HANDLES >255 AND 717 013053 7660 SNL SZA CLA /NON FILE STRUCTURED 718 013054 5770 JMP I (NOROOM /LENGTHS. NOT ENOUGH 719 013055 3037 DCA INEOF /CLEAR INPUT END OF FILE 720 013056 1241 TAD SBLKN /SET THE OUTPUT BLOCK NUMBER 721 013057 3327 DCA OBLCKN 722 013060 1763 TAD I (BLOCK /SET THE INPUT BLOCK NUMBER 723 013061 3307 DCA BLOCKN 724 725 /THE FOLLOWING PIECE OF CODE IS A TRICKY PIECE 726 /THAT CALCULATES THE NUMBER OF BLOCKS TO READ 727 728 013062 1032 MOVEIT, TAD IFCNT /GET THE NUMBER OF BLOCKS 729 013063 7100 CLL /ITS NEGATIVE 730 013064 1033 TAD BUFSIZ /ADD ON BUFFER SIZE 731 013065 7420 SNL /SKIP IF MORE ROOM AVAILABLE THAN NEEDED 732 013066 3032 DCA IFCNT /OTHERWISE RESAVE NEW COUNT 733 013067 7430 SZL /SKIP IF NOT AT END OF FILE 734 013070 2037 ISZ INEOF /SET END OF FILE INDICATOR 735 013071 7041 CIA /MAKES -BUFSIZ+COUNT 736 013072 1033 TAD BUFSIZ /MAKES COUNT OF NUMBER OF BLOCK 737 013073 7112 RTR CLL /BUILD THE 738 013074 7012 RTR /INPUT CONTROL 739 013075 7012 RTR /WORD 740 013076 1362 F2C2, TAD (20 /BECOMES NOP IF ONLY 8K 741 013077 3305 DCA INCTLW /SET INPUT CONTROL WORD 742 013100 4761 JMS I (CINTER /CHECK FOR ^C 743 013101 5760 JMP I (CTCDE /ABORT OPERATION 744 013102 7000 NOP //V4: DUMMY FOR COMMON ROUTINE 745 013103 6202 CIF 0 746 013104 4424 JMS I INHAND /READ INPUT HUNK 747 013105 0000 INCTLW, 0 748 013106 0000 0 749 013107 0000 BLOCKN, 0 750 013110 5757 JMP I (RDERR /WELL- SCRATCH THAT FILE 751 013111 1307 TAD BLOCKN /UPDATE BLOCK COUNT 752 013112 1033 TAD BUFSIZ 753 013113 3307 DCA BLOCKN 754 013114 7330 AC4000 /SET THE OUTPUT 755 013115 1305 TAD INCTLW /CONTROL WORD 756 013116 3325 DCA OUCTLW 757 013117 4761 JMS I (CINTER /CHECK FOR ^C 758 013120 5760 JMP I (CTCDE /ABORT OPERATION 759 013121 7000 NOP //V4: DUMMIES KEEP THE CODE STRAIGHT 760 013122 2756 ISZ I (MUSTWT /SIGNAL REAL OUTPUT DONE 761 013123 6202 CIF 0 762 013124 4423 JMS I OUHAND /WRITE A HUNK OF FILE 763 013125 0000 OUCTLW, 0 764 013126 0000 0 765 013127 0000 OBLCKN, 0 766 013130 5755 JMP I (WRTERR /WHAT A CRUMBY OUTPUT DEVICE 767 013131 1327 TAD OBLCKN /UPDATE THE 768 013132 1033 TAD BUFSIZ /OUTPUT FILE 769 013133 3327 DCA OBLCKN /BLOCK NUMBER 770 013134 1037 TAD INEOF /SEE IF THATS ALL FOLKS 771 013135 7650 SNA CLA /SKIP IF WE TRANSFERED FILE 772 013136 5262 JMP MOVEIT /DO SOME MORE 773 013137 1775 TAD I (7600 /OK - LETS MAKE IT PERMANENT 774 013140 4772 JMS I (FAKUSR /TELL USR TO USE INCORE HANDLER 775 013141 4771 JMS I (200 776 013142 0004 4 /CLOSE 777 013143 4255 SPOT 778 013144 0000 OFCNT, 0 779 013145 5754 JMP I (CLOERR /THIS IS IMPOSSIBLE (I HOPE) 780 013146 4765 JMS I (UNFAK /ENABLE SYSTEM USE OF REAL HANDLER 781 013147 2753 ISZ I (WRTDIR /SET WE CHANGED DIRECTORY FLAG 782 013150 5752 NFUNCT, JMP I (NENT /I KNOW ITS INEFFICIENT TO JUMP HERE 783 /BUT- IT'S CLEAN... 784 785 013151 7400 X7400, 7400 /CHANGES UNDER SYMBIOSIS 786 013152 2510 PAGE 013153 3531 013154 4251 013155 4035 013156 3527 013157 4024 013160 3476 013161 3600 013162 0020 013163 2550 013164 4502 013165 3461 013166 7666 013167 3530 013170 4265 013171 0200 013172 3433 013173 7770 013174 7757 013175 7600 013176 4255 013177 7400 787 /HERE COMES GOBBS AND GOBBS OF GOODY LITTLE ROUTINES 788 789 /FIRST WE HAVE A NICE LITTLE ROUTINE WHICH WILL DO 790 /HANDY LITTLE THINGS LIKE FETCH A HANDLER 791 /AND IN ADDITION ALLOCATE THE SPACE FOR IT. 792 /JUST IMAGINE THIS CAN BE YOURS FOR THE LOW LOW PRICE 793 /OF 23 INSTRUCTIONS 794 795 013200 0000 ASSIGN, 0 796 013201 3030 DCA TEMP /SAVE DEVICE NUMBER 797 013202 1030 TAD TEMP 798 013203 4777 JMS I (200 799 013204 0012 12 /INQUIRE ABOUT HANDLER 800 013205 0000 HADDR1, 0 801 013206 5776 JMP I (CLOERR /CANT HAPPEN (I HOPE) 802 013207 1205 TAD HADDR1 /DID WE GET BACK ADDRESS 803 013210 7440 SZA /SKIP IF NOT- NON-RESIDENT 804 013211 5600 JMP I ASSIGN /YES... RETURN ITS ENTRY POINT 805 013212 7410 SKP 806 013213 7001 TWOPAG, IAC /TURN ON 2-PAGE BIT 807 013214 1025 TAD FPAGE /GET FREE SPACE POINTER 808 013215 3224 DCA HADDR2 /SET FOR FETCH 809 013216 1025 TAD FPAGE /TAKE AWAY 810 013217 1375 TAD (-200 /PAGE FROM 811 013220 3025 DCA FPAGE /FREE SPACE 812 013221 1030 TAD TEMP /GET DEVICE NUMBER 813 013222 4777 JMS I (200 814 013223 0001 1 /FETCH 815 013224 0000 HADDR2, 0 816 013225 5213 JMP TWOPAG /FAILED- MUST BE 2-PAGER 817 013226 1224 TAD HADDR2 /RETURN ENTRY POINT ADDRESS 818 013227 5600 JMP I ASSIGN 819 /THIS UTILITY ROUTINE RETURNS A SIX BIT 820 /CHARACTER FROM ANY FIELD (SET ON ENTRY) 821 /FROM ADDRESS IN AC-COUNT(IN HALF WORDS) 822 823 013230 7402 GTSXBT, HLT 824 013231 7104 CLL RAL /DOUBLE POINTER ADDRESS 825 013232 1021 TAD CNT /ADD NEGATIVE DISPLACEMENT 826 013233 7030 CML RAR /GET WORD ADDRESS AGAIN 827 013234 3030 DCA TEMP /SAVE IT 828 013235 1430 TAD I TEMP /GET WORD 829 013236 7420 SNL /SKIP IF WE WANT RIGHT HALF 830 013237 4242 JMS ROTR6 /MAKE LEFT HALF RIGHT HALF 831 013240 0374 AND (77 /GET LOW SIX BITS 832 013241 5630 JMP I GTSXBT 833 834 835 013242 0000 ROTR6, 0 836 013243 7012 RTR 837 013244 7012 RTR 838 013245 7012 RTR 839 013246 5642 JMP I ROTR6 840 841 /THIS TAKES A SIX BIT CHAR IN AC AND CONVERTS 842 /IT TO ASCII TO TYPE IT 843 844 013247 7402 CONVTP, HLT 845 013250 7440 SZA /CONVERT 0 TO BLANKS 846 013251 1373 TAD (240 847 013252 0374 AND (77 848 013253 1373 TAD (240 849 013254 4772 JMS I (TYPE /TYPE IT 850 013255 5647 JMP I CONVTP 851 /TYPE TAKES A CHARACTER IN THE AC AND CALLS 852 /TTY TO TYPE IT IF ^O IS NOT IN AFFECT 853 /ALSO CHECKS FOR ^C AND ^P 854 855 013256 7402 TYPE, HLT 856 013257 3314 DCA READKB /SAVE CHARACTER 857 013260 6031 KSF //V4: ^P IS SUPPOSED TO BE ^Q. WHAT CAN I SAY? 858 013261 5273 JMP TYPE1 //V4: HANDLERS TAKE CARE OF XON/XOFF 859 013262 4771 JMS I (CINTER /CHECK FOR ^C OR ^P; PRINT & RETURN CALL +1 860 013263 5770 JMP I (CTCDE /IF EITHER IS FOUND. 861 013264 5273 JMP TYPE1 //V4: 862 013265 1367 TAD (-217 /^O? 863 013266 7650 SNA CLA /CLEARED ECHO SWITCH SAYS OK TO ECHO; CANNOT BE -1. 864 013267 3352 DCA ECHO 865 013270 1352 TECHO, TAD ECHO /IS ECHO IN EFFECT 866 013271 7650 SNA CLA /SKIP IF YES 867 013272 5656 JMP I TYPE /IGNORE CHARACTER IF ^O 868 013273 1314 TYPE1, TAD READKB /TYPE CHAR 869 013274 4276 JMS TTY 870 013275 5656 JMP I TYPE 871 872 013276 0000 TTY, 0 873 013277 3313 DCA TCHAR /SAVE CHAR 874 013300 1313 TAD TCHAR /GET CHAR BACK 875 /** NEXT 4 LOCATIONS REPLACED IF BATCH ACTIVE BY: 876 013301 6046 TTYOUT, TLS /** SKP 877 013302 6041 TSF /** 7400 /ADDRESS OF BATCH OUTPUT ROUTINE 878 013303 5302 JMP .-1 /** CIF TOPFIELD 879 013304 7200 CLA /** JMS I .-2 880 013305 1313 TAD TCHAR /GET CHAR AGAIN 881 013306 1366 TAD (-215 /IF WE JUST TYPED A C.R. TYPE 882 013307 7640 SZA CLA /A L.F. 883 013310 5676 JMP I TTY 884 013311 1365 TAD (12 885 013312 5277 JMP TTY+1 886 013313 0000 TCHAR, 0 887 888 /GET A CHARACTER FROM KEYBOARD AND 889 /CHECK FOR ^C AND ^P 890 891 013314 7402 READKB, HLT 892 013315 6031 KSF 893 013316 5315 JMP .-1 894 013317 4771 JMS I (CINTER /IS IT ^C 895 013320 5770 JMP I (CTCDE /^C OR ^P 896 013321 1764 TAD I (T2 /RETURN 8 BIT ASCII 897 013322 5714 JMP I READKB 898 /ROUTINE TO MAKE SURE USER SPECIFIED 899 //C AND /O SWITCHES CAUSE CORRECT MATCH WITH DATE 900 901 013323 0000 DATCHK, 0 902 013324 1763 TAD I (OPT1 /CHECK /C 903 013325 4337 JMS MDATE 904 013326 7000 NOP /RETURN HERE WITH AC=0 IF NO /C 905 013327 7640 SZA CLA /RETURN HERE WITH AC=0 IF DATES MATCH 906 013330 5762 JMP I (NENT /DATES DONT MATCH AND /C GIVEN 907 013331 1761 TAD I (OPT2 /CHECK /V 908 013332 4337 JMS MDATE 909 013333 7240 CMA CLA /SET AC=-1 IF NO /V 910 013334 7650 SNA CLA /RETURN HERE AC=0 IF DATES SAME 911 013335 5762 JMP I (NENT /DATES SAME WITH /V-IGNORE FILE 912 013336 5723 JMP I DATCHK /CONTINUE 913 914 013337 0000 MDATE, 0 //O AND /V ARE AC2 915 013340 7006 RTL /IS IT OPTION ON? 916 013341 7700 SMA CLA /SKIP IF IT IS 917 013342 5737 JMP I MDATE /NO- RETURN WITH 0 AC 918 013343 2337 ISZ MDATE /SKIP RETURN 919 013344 6201 CDF 0 920 013345 1436 TAD I GPTR1 /GET DATE WORD 921 013346 7041 CIA 922 013347 6211 CDF 10 923 013350 1760 TAD I (SVDATE /COMPARE WITH MONITORS, 0 IF = 924 013351 5737 JMP I MDATE 925 926 013352 0001 ECHO, 1 927 928 929 013360 3530 PAGE 013361 7644 013362 2510 013363 7643 013364 3634 013365 0012 013366 7563 013367 7561 013370 3476 013371 3600 013372 3256 013373 0240 013374 0077 013375 7600 013376 4251 013377 0200 930 /THIS IS THE CORE DEVICE HANDLER 931 /THE USR IS MADE TO COME HERE BY A CALL TO FAKUSR. 932 /THIS HANDLER SWAPS THE DESIRED BLOCK INTO 933 /THE USR AREA AND WRITES THE BLOCK BACK INTO THE 934 /INCORE DIRECTORY. 935 936 /THE CODE SET UP IN FIELD 0 TO CALL THE HANDLER IS: 937 / *FAKHND 938 / 0 /ENTRY POINT 939 / TAD FAKHND /GET RETURN ADDRESS 940 / CIF CDF 10 941 / JMP I .+1 /PLOP UP TO BODY OF HANDLER IN FIELD 1 942 / FAKBDY 943 944 945 013400 3270 FAKBDY, DCA RETLOC /SAVE ARGUMENT ADDRESS 946 013401 1670 TAD I RETLOC /GET CONTROL WORD 947 013402 7004 RAL /R/W BIT INTO LINK 948 013403 7204 CLA RAL /R/W BIT INTO AC11 949 013404 1217 TAD DCAXR1 /IF WRITE MAKE DCA XR2 ELSE XR1 950 013405 3223 DCA DCASPT /SAVE WHERE WE NEED IT 951 013406 2270 ISZ RETLOC /BUMP TO LOCATION (ALWAYS 1400 FROM USR) 952 013407 2270 ISZ RETLOC /BUMP TO BLOCK NUMBER 953 013410 1670 TAD I RETLOC /GET IT 954 013411 2270 ISZ RETLOC /BUMP TO ERROR RETURN 955 013412 2270 ISZ RETLOC /NOW TO GOOD RETURN (WE WONT FAIL) 956 013413 7112 CLL RTR /MULTIPLY BY 400(8) 957 013414 7012 RTR 958 013415 7010 RAR 959 013416 1377 TAD (4177 /ADD ON TO BEGINING OF DIRECTRY 960 013417 3011 DCAXR1, DCA XR1 /SAVE IN BOTH XR1 961 013420 1011 TAD XR1 962 013421 3012 DCA XR2 /AND XR2 963 013422 1376 TAD (1377 /NOW SAVE USR BLOCK AREA 964 013423 7402 DCASPT, HLT /IN EITHER XR1 OR XR2 (R OR W) 965 013424 1375 TAD (-400 /SET WORD TRANSFER COUNT 966 013425 3021 DCA CNT 967 013426 1412 TAD I XR2 /GET A WORD 968 013427 3411 DCA I XR1 /PUT A WORD 969 013430 2021 ISZ CNT 970 013431 5226 JMP .-3 971 013432 5670 JMP I RETLOC /GO BACK TO USR 972 /THIS ROUTINE DOES THE SETUP OF THE INCORE 973 /DIRECTORY HANDLER AND CHANGES THE REAL 974 /HANDLERS ENTRY POINT IN THE MONITOR SO THAT 975 /THE USR WILL CALL IT. 976 977 013433 0000 FAKUSR, 0 978 013434 3261 DCA UNFAK /SAVE DEVICE NUMBER 979 013435 1261 TAD UNFAK /INDEX INTO MONITORS RESIDENCY 980 013436 1374 TAD (7646 /TABLE 981 013437 3267 DCA TABAD 982 013440 1331 TAD WRTDIR /SEE IF DEVICE HAS DIRECTORY 983 013441 7710 SPA CLA /SKIP IF IT DOES 984 013442 5245 JMP NOSUBST /!!!DONT CHANGE IF NON-FILE DEV 985 013443 1373 TAD (FAKHND /PUT OUR HANDLERS ADDRESS IN 986 013444 3667 DCA I TABAD /MONITORS TABLE 987 013445 6201 NOSUBST,CDF 0 988 013446 1372 TAD (1200 /PUT IN HANDLER INTERFACE CODE 989 013447 3771 DCA I (FAKHND+1 /INTO FIELD 0 AS GIVEN ABOVE 990 013450 1370 TAD (CIF CDF 10 991 013451 3767 DCA I (FAKHND+2 992 013452 1366 TAD (5604 993 013453 3765 DCA I (FAKHND+3 994 013454 1364 TAD (FAKBDY 995 013455 3763 DCA I (FAKHND+4 996 013456 6211 CDF 10 997 013457 1261 TAD UNFAK /RETURN WITH DEVICE NUMBER IN AC 998 013460 5633 JMP I FAKUSR 999 1000 013461 0000 UNFAK, 0 1001 013462 7200 CLA /V3C 1002 013463 1023 TAD OUHAND /RESET MONITORS TABLE TO 1003 013464 3667 DCA I TABAD /POINT TO REAL HANDLER 1004 013465 3267 DCA TABAD /V3C 1005 013466 5661 JMP I UNFAK 1006 1007 013467 0000 TABAD, 0 1008 013470 0000 RETLOC, 0 1009 /ENTER HERE IF A BRANCH TO 7600 OR 7605 OCCURS 1010 1011 013471 4261 FIXDIR, JMS UNFAK /JUST IN CASE 1012 013472 7000 NOP 1013 013473 7000 NOP 1014 013474 7330 AC4000 /EITHER WAY GO BACK TO 1015 013475 3762 DCA I (ALTOPT /MONITOR BUT AFTER WE HANDLE DIRECTORY 1016 013476 1327 CTCDE, TAD MUSTWT /IS MUST WRITE SET? 1017 013477 7650 SNA CLA /SKIP IF /Q OR MUST WRITE 1018 013500 1331 TAD WRTDIR /CHECK TO SEE IF WE HAVE TO 1019 013501 7750 SPA SNA CLA /WRITE THE DIRECTORY 1020 013502 5306 JMP ENDCHK /CONTINUE 1021 013503 3331 DCA WRTDIR /KEEP OLD DIRECTORY 1022 013504 4761 JMS I (ERROR /TELL HIM 1023 013505 7573 DSVED+40 1024 1025 013506 2760 ENDCHK, ISZ I (ECHO /TURN ON ECHO 1026 013507 4332 JMS DIROUT /WRITE OUT THE OUTPUT DIRECTORY 1027 013510 4757 JMS I (RESTORE /RESTORE 7600 IN FIELD 0 1028 013511 1756 TAD I (OPT2 /GET OPTION /W 1029 013512 7012 RTR 1030 013513 7620 SNL CLA /SKIP FOR VESION NUMBER 1031 013514 5322 JMP NOVER 1032 013515 3756 DCA I (OPT2 /STOPS RECUSION WITH ^P 1033 013516 4761 JMS I (ERROR /PRINT VERSION NUMBER 1034 013517 7273 VERNO+40 1035 013520 1355 TAD (215 1036 013521 4754 JMS I (TYPE 1037 013522 1762 NOVER, TAD I (ALTOPT /GO BACK TO MONITOR? 1038 013523 7700 SMA CLA /SKIP IF YES 1039 013524 5753 JMP I (CDCALL /CALL THE CD AGAIN 1040 013525 6203 CIF CDF 0 /RETURN TO MONITOR 1041 013526 5752 JMP I (7605 1042 1043 1044 013527 0000 MUSTWT, 0 1045 013530 0000 SVDATE, 0 1046 013531 0000 WRTDIR, 0 1047 013532 0000 DIROUT, 0 /ROUTINE TO WRITE THE OUTPUT DIRECTORY 1048 013533 1331 TAD WRTDIR /AC>0 IF WE HAVE TO WRITE IT 1049 013534 7750 SPA SNA CLA /SKIP TO WRITE DIRECTORY 1050 013535 5732 JMP I DIROUT 1051 013536 6202 CIF 0 1052 013537 4423 JMS I OUHAND /WRITE DIRECTORY BACK ONTO DEVICE 1053 013540 5410 5410 1054 013541 4600 4600 1055 013542 0001 1 1056 013543 5751 JMP I (ODERR /IS HE IN TROUBLE... 1057 013544 3331 DCA WRTDIR /CLEAR WRITE DIRECTORY FLAG 1058 013545 5732 JMP I DIROUT /RETURN 1059 013551 4243 PAGE 013552 7605 013553 2000 013554 3256 013555 0215 013556 7644 013557 3663 013560 3352 013561 3705 013562 7642 013563 0204 013564 3400 013565 0203 013566 5604 013567 0202 013570 6213 013571 0201 013572 1200 013573 0200 013574 7646 013575 7400 013576 1377 013577 4177 1060 //V4: SUBROUTINE TO REPLACE CTYPE, CINTER, AND A BUNCH OF KRS-ING. 1061 /READ THE KEYBOARD; SAVE THE CHARACTER AS 8-BIT; CHECK FOR A ^C, ^O, ^P. 1062 /IF EITHER IS FOUND, ECHO AS ^CHAR; EXIT AT CALL +1 FOR ^C AND ^P. 1063 /EXIT AT CALL+2 FOR THE REST. CALLING ROUTINE DECIDES WHAT TO TO WITH 1064 /LEGIT CHAR LEFT IN T2. 1065 1066 013600 0000 CINTER, 0 1067 013601 1377 TAD (200 1068 013602 6034 KRS /BUILD AN 8-BIT CHAR FOR ANCIENT OS8 PROGRAMS. 1069 013603 0376 AND (337 /MASK OUT LOWER CASE BIT 1070 013604 3234 DCA T2 1071 013605 6032 KCC /ENABLE THE KEYBOARD SO VT278 CAN WORK 1072 013606 1234 TAD T2 1073 013607 1375 TAD (-203 1074 013610 7650 SNA CLA //V4: XON/XOFF NOT HANDLED HERE ANYMORE. /SNA 1075 013611 5222 JMP SPURGE /^C 1076 013612 2200 ISZ CINTER /TAD (3-21 1077 013613 5600 JMP I CINTER /SNA 1078 //THE COMMENTS ARE ALSO SCREWED UP-- ^P IS SUPPOSED 1079 //TO BE XON, OR ^Q, OR ASCII [2]21. 1080 1081 013614 5223 JMP SPURGE+1 /^Q 1082 013615 2200 ISZ CINTER /THE REST LEAVE AT CALL+2 1083 013616 7001 IAC 1084 013617 7640 SZA CLA 1085 013620 5600 JMP I CINTER /AND DON'T ECHO ^ SOMETHING. 1086 013621 5224 JMP SPURGE+2 1087 013622 7040 SPURGE, CMA 1088 013623 3774 DCA I (ALTOPT 1089 013624 1373 TAD ("^ 1090 013625 4772 JMS I (TTY 1091 013626 1234 TAD T2 1092 013627 1371 TAD (100 /MAKE IT PRINTABLE 1093 013630 4772 JMS I (TTY 1094 013631 1370 TAD (215 /WITH A PRETTY CRLF. 1095 013632 4772 JMS I (TTY 1096 013633 5600 JMP I CINTER /WITH A 0 AC. 1097 1098 013634 0000 T2, 0 1099 /THIS ROUTINE MODIFIES THE THE MONITOR RETURN 1100 /LOCATIONS TO COME BACK TO FOTP AND SAVES WHAT 1101 /WAS THERE SO RESTORE CAN RESTORE THEM 1102 1103 013635 0000 INTERC, 0 1104 013636 1767 TAD I (DATE 1105 013637 3766 DCA I (SVDATE /SAVE MONITOR DATE 1106 013640 6201 CDF 0 1107 013641 1765 TAD I (7600 /SAVE 7600,7601,7602,7605 1108 013642 3301 DCA SCODE /AND REPLACE WITH 1109 013643 1364 TAD (CIF CDF 10 /CIF CDF 10 1110 013644 3765 DCA I (7600 /JMP I .+1 1111 013645 1763 TAD I (7601 /FIXDIR 1112 013646 3302 DCA SCODE+1 /7605 GETS JMP 7600 1113 013647 1362 TAD (5602 /THIS ENABLES FOTP TO WRITE 1114 013650 3763 DCA I (7601 /OUT DIRECTORY AN MANUAL ABORT 1115 013651 1761 TAD I (7602 /OR IF HANDLER PICKS UP ^C 1116 013652 3303 DCA SCODE+2 /AND TRIES TO GO TO MONITOR 1117 013653 1360 TAD (FIXDIR 1118 013654 3761 DCA I (7602 1119 013655 1757 TAD I (7605 1120 013656 3304 DCA SCODE+3 1121 013657 1356 TAD (5200 1122 013660 3757 DCA I (7605 1123 013661 6211 CDF 10 1124 013662 5635 JMP I INTERC 1125 1126 /THIS ROUTINE SIMPLY RESTORES THE MONITOR 1127 /LOCATIONS TO THEIR ORIGINAL VALUE 1128 1129 013663 0000 RESTORE,0 1130 013664 1766 TAD I (SVDATE /RESTORE DATE 1131 013665 3767 DCA I (DATE 1132 013666 6201 CDF 0 1133 013667 1301 TAD SCODE 1134 013670 3765 DCA I (7600 /RESTORE LOCATIONS 1135 013671 1302 TAD SCODE+1 1136 013672 3763 DCA I (7601 1137 013673 1303 TAD SCODE+2 1138 013674 3761 DCA I (7602 1139 013675 1304 TAD SCODE+3 1140 013676 3757 DCA I (7605 1141 013677 6211 CDF 10 1142 013700 5663 JMP I RESTORE 1143 1144 013701 0000 SCODE, 0;0;0;0 013702 0000 013703 0000 013704 0000 1145 /THIS IS THE MAGIC MESSAGE PRINTER 1146 /IT IS ACTUALLY USED MORE THAN JUST FOR ERROR MESSAGES 1147 /IF THE MESSAGE ENDS WITH A % THEN THE OPERATION 1148 /IS ABORTED OTHERWISE CONTROL IS RETURNED 1149 /TO THE CALLER AND NO CRLF IS GIVEN 1150 /ALL MESSAGES COMMING THROUGH HERE ARE ECHOED 1151 1152 013705 0000 ERROR, 0 1153 013706 7300 CLA CLL /JUNK MIGHT BE IN AC 1154 013707 1755 TAD I (ECHO /SAVE ECHO STATUS SO WE CAN 1155 013710 3754 DCA I (ECTMP /RESTORE IT AFTER MESSAGE 1156 013711 2755 ISZ I (ECHO /TURN ON ECHO 1157 013712 1353 TAD (-100 /USED SO WE CAN USE GTSXBT TO 1158 013713 3021 DCA CNT /UNPACK THE MESSAGES 1159 013714 1705 PLOOP, TAD I ERROR /CONTAINS ADDRESS OF MESSAGE 1160 013715 6201 CDF 0 /IN FIELD 0 1161 013716 4752 JMS I (GTSXBT /GET CHARACTER 1162 013717 6211 CDF 10 1163 013720 1351 TAD (-45 /IS IT % 1164 013721 7450 SNA /SKIP IF NOT 1165 013722 5335 JMP CRLF /WE HIT EOM AND CALLER NO WANT CONTROL 1166 013723 1350 TAD ("%&77 /RESTORE CHARACTER 1167 013724 3340 DCA DFLAG /SAVE IT FOR LATER 1168 013725 1340 TAD DFLAG /PRINT IT, 0 PRINTS AS BLANK 1169 013726 4747 JMS I (CONVTP 1170 013727 2021 ISZ CNT /BUMP TO NEXT CHAR IN MESSAGE 1171 013730 1340 TAD DFLAG /ARE WE AT END 1172 013731 7640 SZA CLA /SKIP IF WE ARE 1173 013732 5314 JMP PLOOP /DO ANOTHER CHARACTER 1174 013733 2305 ISZ ERROR /SKIP ADDRESS OF MESSAGE 1175 013734 5705 JMP I ERROR /RETURN 1176 013735 1370 CRLF, TAD (215 /PRINT CR 1177 013736 4746 JMS I (TYPE /LF 1178 013737 5745 JMP I (ENDCHK /FINISH PROCESSING 1179 1180 013740 0000 DFLAG, 0 1181 013745 3506 PAGE 013746 3256 013747 3247 013750 0045 013751 7733 013752 3230 013753 7700 013754 4023 013755 3352 013756 5200 013757 7605 013760 3471 013761 7602 013762 5602 013763 7601 013764 6213 013765 7600 013766 3530 013767 7666 013770 0215 013771 0100 013772 3276 013773 0336 013774 7642 013775 7575 013776 0337 013777 0200 1182 /THIS ROUTINE PRINTS A FILENAME.EXTENSION 1183 1184 014000 0000 PNMSUB, 0 1185 014001 3222 DCA NMEPLC /SAVE ADDRESS OF NAME 1186 014002 1377 TAD (-10 /SET CHAR COUNT 1187 014003 3021 DCA CNT 1188 014004 1222 PNLOOP, TAD NMEPLC /GET THE SIXBIT CHAR 1189 014005 4776 JMS I (GTSXBT 1190 014006 7450 SNA /IN NULL CHAR CONVERT TO SPACE 1191 014007 1375 TAD (240 1192 014010 4774 JMS I (CONVTP /PRINT CHAR 1193 014011 1373 TAD (3 /SEE IF AT START OF 1194 014012 1021 TAD CNT /EXTENSION 1195 014013 7640 SZA CLA /SKIP IF SO 1196 014014 5217 JMP .+3 1197 014015 1372 TAD (". /PRINT THE DOT 1198 014016 4771 JMS I (TYPE 1199 014017 2021 ISZ CNT 1200 014020 5204 JMP PNLOOP /KEEP GOING 1201 014021 5600 JMP I PNMSUB 1202 1203 014022 0000 NMEPLC, 0 1204 014023 0000 ECTMP, 0 1205 1206 014024 4770 RDERR, JMS I (ERROR 1207 014025 7372 INERR+40 /ERROR READING FILE 1208 014026 1367 DYSTF1, TAD (SPOT1+4 /PRINT INPUT FILE NAME 1209 014027 4766 DYSTUF, JMS I (PNMSUB 1210 014030 1365 TAD (215 1211 014031 4771 JMS I (TYPE 1212 014032 1223 TAD ECTMP /RESTORE ECHO FLAG AS 1213 014033 3764 DCA I (ECHO /SAVED ON ENTRY TO ERROR 1214 014034 5763 JMP I (NENT /GO TO NEXT FILE 1215 014035 4770 WRTERR, JMS I (ERROR 1216 014036 7412 OUERR+40 /ERROR WRITING FILE 1217 014037 1362 POUTNM, TAD (SPOT+4 /PRINT OUTPUT FILE NAME 1218 014040 5227 JMP DYSTUF 1219 014041 4770 NORUMX, JMS I (ERROR /NOT ENOUGH ROOM FOR 1220 014042 7360 SPRBLM+40 /FILE ON OUTPUT DEVICE 1221 014043 5226 JMP DYSTF1 1222 /ROUTINE WHICH PRINTS NO FILES MSG IF NECESSARY 1223 /IT WONT PRINT MESSAGE IF ANY FILE IN A SO CALLED 1224 /INPUT GROUP MATCHES(A BUG?) 1225 1226 014044 1761 SAYNON, TAD I (TYPFND /GET INPUT MATCH FLAG 1227 014045 7640 SZA CLA /SKIP IF NOTHING MATCHED 1228 014046 5304 JMP GOBCK /DONT DO MESSAGE 1229 014047 4770 TLP, JMS I (ERROR /PRINT MESSAGE 1230 014050 7457 NOFILE+40 1231 014051 1022 TAD INFPTR /POINT TO END OF INPUT ENTRY 1232 014052 1360 TAD (5 /TO MAKE GTSXBT WORK CORRECTLY 1233 014053 3022 DCA INFPTR 1234 014054 1022 TAD INFPTR /PRINT THE FILE NAME 1235 014055 4766 JMS I (PNMSUB 1236 014056 1357 TAD (OTAB-2 /NOW PRINT /V,/C,/O IF 1237 014057 3012 DCA XR2 /ANY OF THEM SPECIFIED 1238 014060 2012 NOPT1, ISZ XR2 /FIX POINTER WHEN SWITCH NOT ON 1239 014061 1412 NOPT, TAD I XR2 /GET ADDRESS OF OPTION 1240 014062 7450 SNA /SKIP IF NOT AT END 1241 014063 5276 JMP CRIT /WE ARE AT END 1242 014064 3030 DCA TEMP 1243 014065 1430 TAD I TEMP /GET OPTION WORD 1244 014066 0412 AND I XR2 /AND WITH OPTION BIT 1245 014067 7650 SNA CLA /SKIP IF OPTION GIVEN 1246 014070 5260 JMP NOPT1 /DO ANOTHER 1247 014071 1356 TAD ("/ /PRINT / 1248 014072 4771 JMS I (TYPE 1249 014073 1412 TAD I XR2 /OPTION 1250 014074 4771 JMS I (TYPE 1251 014075 5261 JMP NOPT /DO ANOTHER 1252 014076 1365 CRIT, TAD (215 /END WITH A CRLF 1253 014077 4771 JMS I (TYPE 1254 014100 1223 TAD ECTMP /RESTORE ECHO FLAG THAT ERROR 1255 014101 3764 DCA I (ECHO /SAVED 1256 014102 2027 ISZ INSCNT /PRINT MESSAGE FOR ALL FILES 1257 014103 5247 JMP TLP /IN GROUP 1258 014104 1757 GOBCK, TAD I (USEROD /GET USER SPECIFIED DEVICE 1259 014105 7650 SNA CLA /SKIP IF HE GAVE ONE 1260 014106 1755 TAD I (SDFLG /IF HE DIDNT WE CANT HANDLE /D 1261 014107 7710 SPA CLA /SKIP IF NO /D 1262 014110 1724 TAD I MOIN /YEP. /D BETTER NOT BE ANY MORE INPUT 1263 014111 7640 SZA CLA /THERE WASN'T - O.K. 1264 014112 5315 JMP DELERR /WARN HIM OF THE SHORTCOMING 1265 014113 1324 TAD MOIN /GET SAVED INPUT POINTER 1266 014114 5754 JMP I (DOMOIN /AND DO SOME MORE INPUTS 1267 1268 014115 4770 DELERR, JMS I (ERROR 1269 014116 7520 CNTDEL+40 /MULTIPLE DEVICE DELETE 1270 014117 1365 TAD (215 1271 014120 4771 JMS I (TYPE 1272 014121 4770 JMS I (ERROR 1273 014122 7550 CNTDE2+40 1274 1275 014123 0000 USEROD, 0 1276 014124 0000 MOIN, 0 1277 /TABLE OF SWITCHES FOR "NO FILES" MESSAGE 1278 1279 014125 7644 OTAB, OPT2 1280 014126 0004 4 1281 014127 0326 "V 1282 014130 7643 OPT1 1283 014131 1000 1000 1284 014132 0303 "C 1285 014133 7644 OPT2 1286 014134 1000 1000 1287 014135 0317 "O 1288 014136 0000 0 1289 1290 014154 2106 PAGE 014155 2347 014156 0257 014157 4123 014160 0005 014161 2346 014162 4261 014163 2510 014164 3352 014165 0215 014166 4000 014167 4265 014170 3705 014171 3256 014172 0256 014173 0003 014174 3247 014175 0240 014176 3230 014177 7770 1291 /THIS ROUTINE HANDLES THE /L AND /Q OPTIONS 1292 /IF EITHER IS ON IT PRINTS THE NAME 1293 /THEN IF ITS /Q IT PRINTS A ? AND WAITS FOR 1294 /A RESPONSE. IF Y IT RETURNS, ANYTHING ELSE 1295 /AND IT GOES TO PROCESS THE NEXT DIRECTORY ENTRY 1296 1297 014200 0000 PRINTE, 0 1298 014201 3777 DCA I (NMEPLC /SAVE ADDRESS OF NAME 1299 014202 1776 TAD I (OPT1 /CHECK /L 1300 014203 7010 RAR 1301 014204 7630 SZL CLA /SKIP IF NO /L 1302 014205 5213 JMP PIT /PRINT NAME 1303 014206 1775 TAD I (OPT2 /CHECK /Q 1304 014207 0374 AND (200 1305 014210 7650 SNA CLA /SKIP IF /Q 1306 014211 5600 JMP I PRINTE /RETURN 1307 014212 2773 ISZ I (ECHO /IF /Q FORCE ECHO ON 1308 014213 1777 PIT, TAD I (NMEPLC /NOW PRINT FILENAME 1309 014214 4772 JMS I (PNMSUB 1310 014215 3031 DCA OKFLAG /CLEAR OKFLAG 1311 014216 1775 TAD I (OPT2 /WAS IT /Q? 1312 014217 0374 AND (200 1313 014220 7650 SNA CLA /SKIP IF /Q 1314 014221 5235 JMP FUNCT2 /JUST PRINT CRLF 1315 014222 1371 TAD ("? /PRINT ? 1316 014223 4770 JMS I (TYPE 1317 014224 7040 CMA /SET OKFLAG NO GOOD 1318 014225 3031 DCA OKFLAG 1319 014226 4767 JMS I (READKB /GET A CHAR 1320 014227 1366 TAD (-"Y /IS IT Y? 1321 014230 7650 SNA CLA /SKIP ON NO 1322 014231 2031 ISZ OKFLAG /IT WAS Y, SET OK AND SKIP 1323 014232 1365 TAD ("N-"Y /GET N 1324 014233 1364 TAD ("Y /GET Y 1325 014234 4770 JMS I (TYPE /ECHO IT 1326 014235 1363 FUNCT2, TAD (215 /PRINT CRLF 1327 014236 4770 JMS I (TYPE 1328 014237 1031 TAD OKFLAG /OKFLG=0 MEANS YES 1329 014240 7640 SZA CLA /SKIP IF TO PROCESS FILE 1330 014241 5762 JMP I (NFUNCT /SKIP THIS FILE 1331 014242 5600 JMP I PRINTE /RETURN 1332 1333 014243 7200 ODERR, CLA 1334 014244 3761 DCA I (WRTDIR /FIX RECURSION 1335 014245 4760 JMS I (ERROR 1336 014246 7340 ODIERR+40 /ERROR WRITING DIRECTORY 1337 014247 4760 BODIR, JMS I (ERROR 1338 014250 7505 BODORM+40 /BAD OUTPUT DIRECTORY 1339 014251 4760 CLOERR, JMS I (ERROR 1340 014252 7254 SERR+40 /SYSTEM ERROR 1341 014253 7402 HLT /DONT LET HIM CONTINUE 1342 014254 5253 JMP .-1 /IT CAN ONLY GET WORSE 1343 1344 014255 0000 SPOT, ZBLOCK 4 /ROOM FOR OUTPUT FILE NAME 014256 0000 014257 0000 014260 0000 1345 014261 0000 SPOT1, ZBLOCK 4 /ROOM FOR INPUT FILE NAME 014262 0000 014263 0000 014264 0000 1346 /CODE TO HANDLE OUT OF ROOM CONDITION ON OUTPUT DEVICE 1347 1348 014265 4757 NOROOM, JMS I (UNFAK /RESTORE THE REAL OUTPUT HANDLER 1349 014266 1776 TAD I (OPT1 1350 014267 0356 AND (100 /CHECK FOR THE /F OPTION SPECIFIED 1351 014270 7650 SNA CLA 1352 014271 5755 JMP I (NORUMX /NO - GIVE AN ERROR MESSAGE 1353 014272 4754 JMS I (DIROUT /FAILSAFING - WRITE OUT THE OUTPUT DIRECTORY 1354 014273 4760 JMS I (ERROR /PRINT THE MESSAGE 1355 014274 7612 FLSFMS+40 /"MOUNT NEXT OUTPUT VOLUME" 1356 014275 4767 JMS I (READKB /GET AN ANSWER 1357 014276 7200 CLA /ANY CHAR EXCEPT ^C OR ^P IS YES 1358 014277 1363 TAD (215 1359 014300 4770 JMS I (TYPE /PRINT CRLF 1360 014301 4303 JMS ODIRIN /READ IN THE NEW OUTPUT DIRECTORY 1361 014302 5753 JMP I (FLSRSM /RECOMPUTE THE PENDING TRANSFER. 1362 1363 014303 0000 ODIRIN, 0 /SUBROUTINE TO READ IN THE OUTPUT DIRECTORY 1364 014304 1752 TAD I (7600 /GET OUTPUT DEVICE NUMBER 1365 014305 7450 SNA /IS IT PRESENT? 1366 014306 5332 JMP NOUTFL /NO - DON'T READ OUTPUT DIRECTORY 1367 014307 1351 TAD (7757 /ADD ADDRESS OF MONITOR TABLE 1368 014310 3030 DCA TEMP /TO INDEX INTO IT 1369 014311 1430 TAD I TEMP /FILE STRUCTURED BIT IS 0 1370 014312 7700 SMA CLA /SKIP IF DIRECTORY DEVICE 1371 014313 5332 JMP NOUTFL /WE DONT WANT TO READ OR WRITE DIRECTORY 1372 014314 6202 CIF 0 1373 014315 4423 JMS I OUHAND /READ DIRECTORY 1374 014316 1410 1410 1375 014317 4600 ODBUF, OUBUFR 1376 014320 0001 1 1377 014321 5750 JMP I (ONDERR /ERROR 1378 014322 1717 TAD I ODBUF 1379 014323 7140 CMA CLL /CHECK FOR LEGAL OUTPUT DIRECTORY - FIRST 1380 014324 1747 TAD I (OUBUFR+2 /WORD OF AN OS/8 DIRECTORY IS .LT. 50 1381 014325 7420 SNL /AND THE THIRD WORD MUST BE .LT. 7, 1382 014326 1346 TAD (-107 //V4: DSN 21.19.1 AUG 78 TO ALLOW 71 ENTRIES/SEGMENT 1383 014327 7630 SZL CLA /WORDS BEING .LT. 64 1384 014330 5745 JMP I (BODIR /ERROR - CANT BE DIRECTORY 1385 014331 7410 SKP 1386 014332 7330 NOUTFL, AC4000 /WRTDIR MINUS MEANS DONT WRITE 1387 014333 3761 DCA I (WRTDIR /DIRECTORY 1388 014334 3744 DCA I (MUSTWT /CLEAR THE MUST WRITE FLAG 1389 014335 3007 DCA DIRKEY /CLEAR THE OS/8 DIRECTORY KEY 1390 014336 5703 JMP I ODIRIN /RETURN 1391 014344 3527 PAGE 014345 4247 014346 7671 014347 4602 014350 2120 014351 7757 014352 7600 014353 2710 014354 3532 014355 4041 014356 0100 014357 3461 014360 3705 014361 3531 014362 3150 014363 0215 014364 0331 014365 7765 014366 7447 014367 3314 014370 3256 014371 0277 014372 4000 014373 3352 014374 0200 014375 7644 014376 7643 014377 4022 1392 /SUBROUTINE TO DO LOOKUPS ON OUTPUT DEVICE 1393 /DOES IMMEDIATE RETURN IF NO OUTPUT DEVICE 1394 /OTHERWISE RETURNS WITH BLOCK OF FILE IN AC OR 1395 /0 IN AC MEANING NOT FOUND OR NON-FILE STRUCTURED DEVICE 1396 014400 0000 LOOKUP, 0 1397 014401 1377 TAD (SPOT /ADDRESS OF FILE NAME 1398 014402 3211 DCA PLACE 1399 014403 1776 TAD I (7600 /GET OUTPUT DEVICE 1400 014404 7450 SNA /SKIP IF PRESENT 1401 014405 5600 JMP I LOOKUP /NO OUTPUT DEVICE 1402 014406 4775 JMS I (FAKUSR /FAKE OUT THE USR 1403 014407 4774 JMS I (200 1404 014410 0002 2 /LOOKUP 1405 014411 4255 PLACE, SPOT 1406 014412 0000 0 1407 014413 3211 DCA PLACE /NOT FOUND, 0 PLACE 1408 014414 4773 JMS I (UNFAK /RESTORE RESIDENT HANDLER 1409 014415 2200 ISZ LOOKUP /SKIP RETURN 1410 014416 1211 TAD PLACE /WITH BLOCK IN AC 1411 014417 5600 JMP I LOOKUP 1412 /HERE IS WHAT WE HAVE ALL BEEN WAITING FOR 1413 1414 ////////////////////////////////////// 1415 / / 1416 / RENAME / 1417 / / 1418 ////////////////////////////////////// 1419 1420 014420 4200 RENAME, JMS LOOKUP 1421 014421 5772 JMP I (CLOERR /SUPER SYSTEM DISASTER 1422 014422 3301 DCA OBLOCK /V3C SAVE BLOCK OF NEW NAME (IF ANY) 1423 014423 1371 TAD (SPOT1-SPOT /LOOKUP INPUT FILE 1424 014424 4200 JMS LOOKUP 1425 014425 5772 JMP I (CLOERR /SUPER SYSTEM DISASTER 1426 014426 7041 CIA /LOOKUP INPUT NAME ON OUTPUT DEVICE 1427 014427 1301 TAD OBLOCK /IS IT SAME SPOT AS NEW NAME ON OUTPUT DEVICE? 1428 014430 7640 SZA CLA /V3C 1429 014431 4272 JMS EXERR /NO, MAYBE ALREADY EXISTS 1430 014432 1770 TAD I (1404 /GET ADDRESS OF FILE 1431 014433 1017 TAD 17 /FROM MONITOR BY THE 1432 014434 1367 TAD (-4 /DOCUMENTED METHOD 1433 014435 3030 DCA TEMP 1434 014436 1366 TAD (SPOT-1 /GET NEW OUTPUT NAME 1435 014437 3011 DCA XR1 1436 014440 1367 TAD (-4 /SET UP COUNT OF WORDS TO MOVE 1437 014441 3021 DCA CNT 1438 014442 1411 RNAM, TAD I XR1 /MOVE THEM 1439 014443 3430 DCA I TEMP 1440 014444 2030 ISZ TEMP 1441 014445 2021 ISZ CNT 1442 014446 5242 JMP RNAM /CONTINUE TILL DONE 1443 014447 1770 TAD I (1404 /V3C 1444 014450 7650 SNA CLA /BUT IS THERE ROOM FOR DATE? 1445 014451 5254 JMP NONUDA /NO, NO ADDITIONAL INFO WORDS 1446 014452 1765 TAD I (DATE /YES, MOVE DATE 1447 014453 3430 DCA I TEMP /INTO NEW FILENAME ENTRY 1448 014454 4257 NONUDA, JMS WRKEY /V3C 1449 014455 2764 ISZ I (WRTDIR /INDICATE DIRECTORY CHANGED 1450 014456 5763 JMP I (NFUNCT /DO NEXT FILE 1451 1452 014457 0000 WRKEY, 0 /V9 1453 014460 1007 TAD DIRKEY /GET "SEGMENT IN CORE" KEY 1454 014461 0362 AND (7 /ISOLATE SEGMENT NUMBER 1455 014462 3267 DCA SEGNO /NUMBER FOR WRITE 1456 014463 6202 CIF 0 1457 014464 4451 JMS I 51 /CALL HANDLER USR USED TO DO 1458 014465 4210 4210 /LOOKUP, THIS POINTS TO FOTPS 1459 014466 1400 1400 /INCORE DIRECTORY HANDLER 1460 014467 0000 SEGNO, 0 /REWRITE UPDATED DIRECTORY BLOCK 1461 014470 5772 JMP I (CLOERR /SYSTEM ERROR 1462 014471 5657 JMP I WRKEY 1463 014472 0000 EXERR, 0 /BLOCK NUMBERS DIFFERENT 1464 014473 1301 TAD OBLOCK /LOOK AT BLOCK NUMBER OF EXISTING FILE 1465 014474 7650 SNA CLA /DID IT REALLY EXIST? 1466 014475 5672 JMP I EXERR /NO, OK TO RENAME TO THIS NAME 1467 014476 4761 JMS I (ERROR /YES, TRYING TO RENAME TO EXISTING NAME 1468 014477 7263 RENERR+40 /FILE ALREADY EXISTS 1469 014500 5760 JMP I (POUTNM 1470 1471 014501 0000 OBLOCK, 0 /TEMPORARY, HOLDS BLOCK NUMBER OF ALREADY 1472 /EXISTING FILE WITH SAME NAME AS PROPOSED NEW NAME 1473 /ON OUT PUT DEVICE (OR 0 IF NONE) 1474 /THIS ROUTINE TRANSFERS THE ADDITIONAL 1475 /INFORMATION WORDS OF THE INPUT FILE WHEN COPYING 1476 /IT IF THERE ARE ANY 1477 1478 014502 0000 ADDINF, 0 1479 014503 7201 CLA IAC /AC=1 1480 014504 1770 TAD I (1404 /GET NUMBER OF WORDS FROM OUTPUT DIRECTORY 1481 014505 7500 SMA /SKIP IF 2 OR MORE 1482 014506 5332 JMP NOTRAN /WE DONT TOUCH IT 1483 014507 3200 DCA LOOKUP /SAVE NEGATIVE NUMBER TO MOVE 1484 014510 1200 TAD LOOKUP /ADD NUMBER TO LOC 17 1485 014511 1017 TAD 17 /TO FIND ADDR(SECOND) 1486 014512 3341 DCA PPTR1 /USE 17 1487 014513 1034 TAD INFWDS /GET NUMBER OF AIW IN INPUT 1488 014514 7041 CIA /NEGATE 1489 014515 7001 IAC /ADD 1 1490 014516 7500 SMA /SKIP IF MORE THAN 1 AIW 1491 014517 5336 JMP ZEROUT /ZERO OUTPUT AIW 1492 014520 3030 DCA TEMP /SAVE COUNT 1493 014521 2036 MOVEM, ISZ GPTR1 /BUMP PTR (1ST TIME PAST DATE) 1494 014522 6201 CDF 0 1495 014523 1436 TAD I GPTR1 /GET WORD 1496 014524 6211 ZLOOP, CDF 10 1497 014525 3741 DCA I PPTR1 /PUT IT INTO OUTPUT DIRECTORY 1498 014526 2341 ISZ PPTR1 1499 014527 2200 ISZ LOOKUP /HAS OUTPUT COUNT OVERFLOWED? 1500 014530 5334 JMP MORE /MORE OUTPUT TO DO 1501 014531 4257 JMS WRKEY /V9 1502 014532 7200 NOTRAN, CLA /EXIT 1503 014533 5702 JMP I ADDINF /WERE DONE 1504 014534 2030 MORE, ISZ TEMP /BUMP INPUT COUNT 1505 014535 5321 JMP MOVEM /IT HASNT OVERFLOWED 1506 014536 7240 ZEROUT, CLA CMA /NO MORE INPUT WORDS- 1507 014537 3030 DCA TEMP /SO FIX UP TO ZERO REST OF OUTPUT WORDS 1508 014540 5324 JMP ZLOOP /DO ALL THE OUTPUTS 1509 1510 014541 0000 PPTR1, 0 1511 014560 4037 PAGE 014561 3705 014562 0007 014563 3150 014564 3531 014565 7666 014566 4254 014567 7774 014570 1404 014571 0004 014572 4251 014573 3461 014574 0200 014575 3433 014576 7600 014577 4255 1512 /** THIS IS THE STARTING ADDRESS OF FOTP!!! 1513 1514 014600 4204 FOTP, JMS INIT /REGULAR ENTRY POINT 1515 014601 4204 JMS INIT /CHAIN ENTRY POINT 1516 014602 5777 JMP I (CDCALL /CALL COMMAND DECODER 1517 014603 5776 JMP I (BYPSCD /DONT CALL COMMAND DECODER 1518 014604 0000 INIT, 0 1519 014605 2204 ISZ INIT /DO SKIP RETURN 1520 014606 7300 CLA CLL 1521 014607 6201 CDF 0 1522 014610 1775 TAD I (7777 /GET BATCH CONTROL WORD 1523 014611 0374 AND (70 1524 014612 1261 TAD FCIF0 /FORM CIF TO BATCH FIELD 1525 014613 3305 DCA BATCIF 1526 014614 1775 TAD I (7777 1527 014615 6211 CDF 10 1528 014616 7006 RTL 1529 014617 7620 SNL CLA /BATCH RUNNING? 1530 014620 5230 JMP NOBTCH /NO 1531 014621 1303 BMOVLP, TAD BATOUT 1532 014622 3702 DCA I TTOUTP /MOVE IN SUBSTITUTE TTY OUTPUT CODE 1533 014623 2221 ISZ BMOVLP 1534 014624 2302 ISZ TTOUTP 1535 014625 2301 ISZ TTCNT4 1536 014626 5221 JMP .-5 1537 014627 7240 STA 1538 014630 3300 NOBTCH, DCA CORFUJ / =0 IF NO BATCH, -1 IF BATCH 1539 014631 1675 MOVMSG, TAD I ONCE /MOVE MSGS TO LOWER FIELD 1540 014632 6201 CDF 0 1541 014633 3676 DCA I ONLY 1542 014634 6211 CDF 10 1543 014635 1674 TAD I M1 1544 014636 6201 CDF 0 /MOVE CORE DETERMINER 1545 014637 3674 DCA I M1 /INTO FIELD 0 ALSO 1546 014640 6211 CDF 10 1547 014641 2274 ISZ M1 1548 014642 2275 ISZ ONCE 1549 014643 2276 ISZ ONLY 1550 014644 2277 ISZ CODE 1551 014645 5231 JMP MOVMSG 1552 014646 1377 TAD (2000 /SET RESTART LOCATION 1553 014647 6201 CDF 0 1554 014650 3773 DCA I (7745 1555 014651 1372 TAD (6403 /SET JSW 1556 014652 3771 DCA I (7746 1557 014653 6211 CDF 10 1558 014654 1770 TAD I (7726 1559 014655 7012 RTR 1560 014656 7010 RAR 1561 014657 7630 SZL CLA 1562 014660 5767 JMP I (SYMPAT /FIX BUFFER IF SYMBIONT IS RUNNING 1563 /IF SYMBIONT IS RUNNING, ASSUME FIELD 2 IS 1564 /ALWAYS USEABLE, HOWEVER DON'T GO ABOVE 5000 1565 /JUST IN CASE BATCH IS RUNNING 1566 014661 6202 FCIF0, CIF 0 1567 014662 4307 JMS CORE 1568 014663 1300 TAD CORFUJ /COMPUTE AMOUNT OF CORE EXCLUDING BATCH FIELD 1569 014664 1375 TAD (-1 1570 014665 7640 SZA CLA /SKIP IF WE HAVE ONLY 8K (OR 12K AND BATCH) 1571 014666 5604 JMP I INIT 1572 014667 1366 TAD (TAD EPTR /PATCH LOCATIONS IN FOTP 1573 014670 3765 DCA I (F2C1 /TO WORK WITH ONLY 8K 1574 014671 1364 TAD (NOP 1575 014672 3763 DCA I (F2C2 1576 014673 5604 INIRET, JMP I INIT /START 1577 1578 014674 4600 M1, .&7600 1579 014675 5000 ONCE, MSGS 1580 014676 7200 ONLY, LSTFPG+200 1581 014677 7400 CODE, 7400 1582 1583 014700 0000 CORFUJ, 0 1584 014701 7774 TTCNT4, -4 1585 014702 3301 TTOUTP, TTYOUT 1586 014703 7410 BATOUT, SKP /OUTPUT TO BATCH LOG 1587 014704 7400 7400 1588 014705 7402 BATCIF, HLT 1589 014706 4702 TTYOUT+1&177+4600 /JMS I .-2 1590 /SUBR TO DETERMINE MACHINE SIZE - RETURNS NUMBER OF 1591 /BANKS IN AC. 1592 /MUST RUN IN FIELD 0. 1593 1594 014707 0000 CORE, 0 1595 014710 1362 TAD C6203 1596 014711 6214 RDF 1597 014712 3355 DCA CORRTN 1598 014713 6201 CDF 0 1599 014714 1775 TAD I (7777 1600 014715 0374 AND (70 1601 014716 7450 SNA /DOES LOCATION 7777 SPECIFY CORE SIZE? 1602 014717 5323 JMP CORELP /NO 1603 014720 7112 CLL RTR /YES - BELIEVE IT. 1604 014721 7010 RAR 1605 014722 5355 JMP CORRTN 1606 014723 6201 CORELP, CDF 0 /NEEDED FOR PDP-8L 1607 014724 1361 TAD TRYFLD /GET FLD TO TST 1608 014725 7106 CLL RTL 1609 014726 7004 RAL 1610 014727 0340 AND COR70 /MASK USEFUL BITS 1611 014730 1323 TAD CORELP 1612 014731 3332 DCA .+1 /SET UP CDF TO FLD 1613 014732 0000 COR706, 0 1614 014733 1757 TAD I CORLOC /SAV CURRENT CONTENTS 1615 014734 7000 NOP /HACK FOR PDP-8 1616 014735 3332 DCA .-3 1617 014736 1334 TAD .-2 /7000 IS A GOOD PATTERN 1618 014737 3757 DCA I CORLOC 1619 014740 0070 COR70, 70 /HACK FOR PDP-8.,NO-OP 1620 014741 1757 TAD I CORLOC /TRY TO READ BK 7000 1621 014742 7400 7400 /HACK FOR PDP-8,.NO-OP 1622 014743 1342 TAD .-1 /GUARD AGAINST WRAP AROUND 1623 014744 1360 TAD CORLOC+1 /TAD 1400 1624 014745 7640 SZA CLA 1625 014746 5353 JMP .+5 /NON EXISTENT FLD EXIT 1626 014747 1332 TAD COR706 /RESTORE CONTENS DESTROYED 1627 014750 3757 DCA I CORLOC 1628 014751 2361 ISZ TRYFLD /TRY NXT HIGHER FLD 1629 014752 5323 JMP CORELP 1630 014753 7240 STA 1631 014754 1361 TAD TRYFLD 1632 014755 0000 CORRTN, 0 1633 014756 5707 JMP I CORE 1634 014757 4742 CORLOC, COR70+2 /ADR TO TST IN EACH FLD 1635 014760 1400 1400 /7000+7400+1400=0 1636 014761 0001 TRYFLD, 1 /CURRENT FLD TO TST 1637 014762 6203 C6203, 6203 1638 1639 014763 3076 PAGE 014764 7000 014765 3002 014766 1026 014767 2126 014770 7726 014771 7746 014772 6403 014773 7745 014774 0070 014775 7777 014776 2003 014777 2000 1640 /FOTP'S ERROR MESSAGES 1641 /THESE RESIDE IN FIELD 0 LOCATIONS 7200-7577 1642 1643 MSGS, 1644 1645 NOPUNCH 1646 *LSTFPG+200 1647 ENPUNCH 1648 1649 017200 1114 ILLQ, TEXT /ILLEGAL ?%/ 017201 1405 017202 0701 017203 1440 017204 7745 017205 0000 1650 017206 1114 ILLA, TEXT /ILLEGAL *%/ 017207 1405 017210 0701 017211 1440 017212 5245 017213 0000 1651 017214 2331 SERR, TEXT /SYSTEM ERROR/ 017215 2324 017216 0515 017217 4005 017220 2222 017221 1722 017222 0000 1652 017223 0114 RENERR, TEXT /ALREADY EXISTS-/ 017224 2205 017225 0104 017226 3140 017227 0530 017230 1123 017231 2423 017232 5500 1653 017233 0617 VERNO, 0617;2420;4026 /FOTP V 017234 2420 017235 4026 1654 017236 0261 VERSION //V4: "A0" 1655 017237 0000 SUBVER 1656 017240 0522 BADIRD, TEXT /ERROR READING INPUT DIRECTORY%/ 017241 2217 017242 2240 017243 2205 017244 0104 017245 1116 017246 0740 017247 1116 017250 2025 017251 2440 017252 0411 017253 2205 017254 0324 017255 1722 017256 3145 017257 0000 1657 017260 0522 ODRERR, TEXT /ERROR READING OUTPUT DIRECTORY%/ 017261 2217 017262 2240 017263 2205 017264 0104 017265 1116 017266 0740 017267 1725 017270 2420 017271 2524 017272 4004 017273 1122 017274 0503 017275 2417 017276 2231 017277 4500 1658 017300 0522 ODIERR, TEXT /ERROR WRITING OUTPUT DIRECTORY%/ 017301 2217 017302 2240 017303 2722 017304 1124 017305 1116 017306 0740 017307 1725 017310 2420 017311 2524 017312 4004 017313 1122 017314 0503 017315 2417 017316 2231 017317 4500 1659 017320 1617 SPRBLM, TEXT /NO ROOM, SKIPPING-/ 017321 4022 017322 1717 017323 1554 017324 4023 017325 1311 017326 2020 017327 1116 017330 0755 017331 0000 1660 017332 0522 INERR, TEXT /ERROR ON INPUT DEVICE-SKIPPING-/ 017333 2217 017334 2240 017335 1716 017336 4011 017337 1620 017340 2524 017341 4004 017342 0526 017343 1103 017344 0555 017345 2313 017346 1120 017347 2011 017350 1607 017351 5500 1661 017352 0522 OUERR, TEXT /ERROR ON OUTPUT DEVICE-SKIPPING-/ 017353 2217 017354 2240 017355 1716 017356 4017 017357 2524 017360 2025 017361 2440 017362 0405 017363 2611 017364 0305 017365 5523 017366 1311 017367 2020 017370 1116 017371 0755 017372 0000 1662 017373 2523 NFLEIN, TEXT /USE PIP FOR NON-FILE STRUCTURED INPUT%/ 017374 0540 017375 2011 017376 2040 017377 0617 017400 2240 017401 1617 017402 1655 017403 0611 017404 1405 017405 4023 017406 2422 017407 2503 017410 2425 017411 2205 017412 0440 017413 1116 017414 2025 017415 2445 017416 0000 1663 017417 1617 NOFILE, TEXT /NO FILES OF THE FORM:/ 017420 4006 017421 1114 017422 0523 017423 4017 017424 0640 017425 2410 017426 0540 017427 0617 017430 2215 017431 7200 1664 017432 0201 BIDIRM, TEXT /BAD INPUT DIRECTORY%/ 017433 0440 017434 1116 017435 2025 017436 2440 017437 0411 017440 2205 017441 0324 017442 1722 017443 3145 017444 0000 1665 017445 0201 BODORM, TEXT /BAD OUTPUT DIRECTORY%/ 017446 0440 017447 1725 017450 2420 017451 2524 017452 4004 017453 1122 017454 0503 017455 2417 017456 2231 017457 4500 1666 017460 0405 CNTDEL, TEXT /DELETES PERFORMED ONLY ON INPUT DEVICE GROUP 1/ 017461 1405 017462 2405 017463 2340 017464 2005 017465 2206 017466 1722 017467 1505 017470 0440 017471 1716 017472 1431 017473 4017 017474 1640 017475 1116 017476 2025 017477 2440 017500 0405 017501 2611 017502 0305 017503 4007 017504 2217 017505 2520 017506 4061 017507 0000 1667 017510 0301 CNTDE2, TEXT /CAN'T HANDLE MULTIPLE DEVICE DELETES%/ 017511 1647 017512 2440 017513 1001 017514 1604 017515 1405 017516 4015 017517 2514 017520 2411 017521 2014 017522 0540 017523 0405 017524 2611 017525 0305 017526 4004 017527 0514 017530 0524 017531 0523 017532 4500 1668 017533 1722 DSVED, TEXT /ORIGINAL DIRECTORY PRESERVED%/ 017534 1107 017535 1116 017536 0114 017537 4004 017540 1122 017541 0503 017542 2417 017543 2231 017544 4020 017545 2205 017546 2305 017547 2226 017550 0504 017551 4500 1669 017552 1517 FLSFMS, TEXT /MOUNT NEXT OUTPUT VOLUME:/ 017553 2516 017554 2440 017555 1605 017556 3024 017557 4017 017560 2524 017561 2025 017562 2440 017563 2617 017564 1425 017565 1505 017566 7200 1670 1671 FIELD 1 /SELF-STARTING BINARY LOADER STUFF FOR ABSLDR 1672 *FOTP 1673 $ AC2 7326 AC4000 7330 ACK 2023 ACM2 7344 unreferenced ACM3 7346 unreferenced ADDINF 4502 AINO 2122 ALTOPT 7642 ASSIGN 3200 ATIT 2236 BADIRD 7240 BATCIF 4705 BATOUT 4703 BDPTR 0035 BIDIR 2354 BIDIRM 7432 BLOCK 2550 BLOCKN 3107 BLOOP 2421 BMOVLP 4621 BODIR 4247 BODORM 7445 BUFSIZ 0033 BYPSCD 2003 C6203 4762 CDCALL 2000 CHAR 2543 CINTER 3600 CLOERR 4251 CNT 0021 CNTDE2 7510 CNTDEL 7460 CNTUP 2042 CODE 4677 CONVTP 3247 COR70 4740 COR706 4732 CORE 4707 CORELP 4723 CORFUJ 4700 CORLOC 4757 CORRTN 4755 CRIT 4076 CRLF 3735 CTCDE 3476 DATCHK 3323 DATE 7666 DCASPT 3423 DCAXR1 3417 DELERR 4115 DFLAG 3740 DIDEML 2061 DIRKEY 0007 DIROUT 3532 DOMOIN 2106 DSVED 7533 DYSTF1 4026 DYSTUF 4027 ECHO 3352 ECTMP 4023 EMPTY 2513 ENDCHK 3506 ENTCNT 2552 EPNEXT 2544 EPTR 0026 ERROR 3705 EXERR 4472 F2C1 3002 F2C2 3076 FAKBDY 3400 FAKHND 0200 FAKUSR 3433 FCIF0 4661 FIVE 2001 FIXDIR 3471 FLSFMS 7552 FLSRSM 2710 FNDLST 2226 FOTP 4600 FPAGE 0025 FUNCT2 4235 GETCNT 2270 GOBCK 4104 GOT1 2600 GPTR1 0036 GPTR2 2545 GTSXBT 3230 HADDR1 3205 HADDR2 3224 IDBUF 2211 IFCNT 0032 ILLA 7206 ILLQ 7200 INBUFR 0003 INCTLW 3105 INDERR 2352 INEOF 0037 INERR 7332 INFPTR 0022 INFWDS 0034 INHAND 0024 INIRET 4673 INIT 4604 INSCNT 0027 INTERC 3635 K7450 2275 unreferenced LFLAG 2546 LOOKUP 4400 LSTFPG 7000 M1 4674 MATFLG 2551 MDATE 3337 MEXT 2471 MLP 2445 MN1 2432 MOIN 4124 MORE 4534 MOV 2073 MOVEIT 3062 MOVEM 4521 MOVENT 2626 MOVMSG 4631 MSGS 5000 MSIZE 3042 MUSTWT 3527 NBLOCK 2400 NCNT 2547 NENT 2510 NFIN 2350 NFLEIN 7373 NFUNCT 3150 NM1 2472 NMEPLC 4022 NOBTCH 4630 NODEL 2732 NOFILE 7417 NONUDA 4454 NOPT 4061 NOPT1 4060 NOPTIM 2322 NOROOM 4265 NORUMX 4041 NOSUB 2305 NOSUBS 3445 NOTRAN 4532 NOUTFL 4332 NOVER 3522 NPG 3000 NSETGD 2703 NULLCK 2052 OBLCKN 3127 OBLOCK 4501 ODBUF 4317 ODERR 4243 ODIERR 7300 ODIRIN 4303 ODRERR 7260 ODSPEC 2074 OFCNT 3144 OKFLAG 0031 ONCE 4675 ONDERR 2120 ONLY 4676 OPT1 7643 OPT2 7644 OTAB 4125 OUBUFR 4600 OUCTLW 3125 OUERR 7352 OUHAND 0023 PG1 2200 PIT 4213 PLACE 4411 PLOOP 3714 PNLOOP 4004 PNMSUB 4000 POUTNM 4037 PPTR1 4541 PRINTE 4200 PTR 0020 QINO 2124 RDERR 4024 READKB 3314 RENAME 4420 RENERR 7223 RESTOR 3663 RETLOC 3470 RNAM 4442 ROTR6 3242 S1C 2010 S4L 2020 SAYNON 4044 SBLKN 3041 SCODE 3701 SDFLG 2347 SEGNO 4467 SERR 7214 SETGD 2702 SFUDG 2117 SPOT 4255 SPOT1 4261 SPRBLM 7320 SPURGE 3622 STAR 2002 SUBVER 0000 SVDATE 3530 SYMPAT 2126 T2 3634 TABAD 3467 TCHAR 3313 TECHO 3270 unreferenced TEMP 0030 TLP 4047 TRFLG 2735 TRYFLD 4761 TSTEXT 2651 TTCNT4 4701 TTOUTP 4702 TTY 3276 TTYOUT 3301 TWOPAG 3213 TYPE 3256 TYPE1 3273 TYPFND 2346 UNFAK 3461 USEROD 4123 VERNO 7233 VERSIO 0261 WILD 2467 WILDA 2536 WILDNM 2444 WRKEY 4457 WRTDIR 3531 WRTERR 4035 X7400 3151 XR 0010 XR1 0011 XR2 0012 ZEROUT 4536 ZLOOP 4524