1 / P?S/8 BLOCK-TO-BLOCK COPY SYSTEM 2 3 / P?S/8 BLOCK-ORIENTED FACILITY FOR COPY/COMPARISON OF CONTIGUOUS SETS OF 4 / BLOCKS ON ANY LOGICAL UNIT OF ANY NON-SYSTEM HANDLER. 5 6 / LAST EDIT: 08-APR-1987 01:00:00 CJL 7 8 / MUST BE ASSEMBLED WITH '/J' SWITCH SET. 9 10 / PROGRAM USAGE EXAMPLE. 11 12 / .[R ]BLKCPY[OPTIONAL INPUT FILES][OPTION SWITCHES] 13 14 / BLKCPY V10F PROGRAM ANNOUNCEMENT 15 / *SYS7:0-577 19 20 / PROGRAM OPTIONS. 21 22 / /B USE HARDCOPY-ORIENTED BACKSPACE FOR COMMAND EDITING. DEFAULT IS 23 / SCREEN-ORIENTED BACKSPACE. 24 25 / /C ATTEMPT TO USE MORE MEMORY. IF AVAILABLE, MORE MEMORY WILL BE USED 26 / FOR LARGER BUFFERS DURING THE COPY/COMPARISON. THIS OPTION ALLOWS 27 / THE USE OF THE PARTIAL FIELD AVAILABLE BEYOND THE NORMAL MAXIMUM 28 / CORE SIZE OF ADJUSTABLE SIZE SYSTEMS SUCH AS THE "RX01." SHOULD 29 / THE CORE SIZE BE SET TO AN ENTIRE FIELD OR MORE BELOW AVAILABLE 30 / MAXIMUM SIZE, AN ENTIRE ADDITIONAL FIELD WILL BE USED FOR BUFFER 31 / SPACE. GENERALLY THE COPY/COMPARISON TAKES LESS TIME IF LARGER BUFFERS 32 / ARE USED. THE DEFAULT OPERATION IS TO DETERMINE THE BUFFER SIZE 33 / PURELY FROM THE CURRENT LOGICAL CORE SIZE. 34 35 / /D DO NOT DISPLAY COMMAND GUIDES. DEFAULT IS TO DISPLAY THE COMMAND 36 / GUIDES WHICH EXPLICITLY SHOW THE BLOCK EXTENTS IMPLIED BY THE LATEST 37 / COMMAND. 38 39 / /N DO NOT VERIFY THE COPIED DATA. DEFAULT IS TO VERIFY THE DATA. IGNORED 40 / IN COMPARISON COMMANDS. 41 42 / /O OVERRIDE THE MESSAGE "ARE YOU SURE?" ISSUED AFTER EVERY COMMAND. 43 / DEFAULT IS TO WAIT FOR USER RESPONSE ('Y' OR 'N') FROM THE CONSOLE. 44 45 / /U FOLD KEYBOARD INPUT TO UPPER-CASE AS IT IS TYPED IN. DEFAULT IS TO 46 / ALLOW LOWER-CASE. INTERPRETATION OF INPUT IS ALWAYS CASELESS. OUTPUT 47 / WILL ALSO BE TOTALLY UPPER-CASE IF THIS OPTION IS SELECTED. 48 49 / /W WORD UPDATE MODE. CONTINUE AT NEXT WORD DURING MISMATCH FAILURES 50 / OF COMPARISON OPERATION WHEN SKIPPING PAST LATEST PROBLEM (WORD). 51 / DEFAULT IS TO IGNORE REST OF AFFECTED BLOCK AND CONTINUE AT FIRST 52 / WORD OF NEXT BLOCK (NEXT HIGHER COMPATIBLE BLOCK IF COMPARING UNLIKE 53 / BLOCK SIZE DEVICES). 54 / FILE CONSIDERATIONS. 55 56 / FILES PASSING INPUT FILES TO BLKCPY CAUSES COMMAND INPUT TO BE TAKEN FROM 57 / THE CONTENTS OF THE FILES. AT END OF ALL PASSED INPUT FILES, INPUT 58 / REVERTS TO THE CONSOLE. THE "$" CHARACTER MAY BE PLACED AT THE END 59 / OF THE LAST INPUT FILE IN LIEU OF THE CHARACTER TO EXIT BLKCPY 60 / AUTOMATICALLY. ALL OUTPUT FILES ARE IGNORED AND ONLY SERVE TO WASTE 61 / SPACE IN THE FILE LIST. ALL DEVICES ASSOCIATED WITH THE FILES MUST 62 / REMAIN RESIDENT DURING THE FILES-DRIVEN OPERATION. ALL YES/NO 63 / QUESTIONS MUST BE ANSWERED AT THE CONSOLE (SEE /O). 64 65 / COMMAND LINE OPTIONS. 66 67 / =NNNN LENGTH OF BLOCKS TO COPY/COMPARE. MUST BE GIVEN UNLESS A RANGE IS 68 / SPECIFIED. 69 70 / -NNNN UPPER RANGE BLOCK. THE COPY/COMPARISON SHOULD BE PERFORMED UPON 71 / THE BLOCKS RANGING FROM THE PREVIOUS STARTING BLOCK THROUGH BLOCK 72 / NNNN. THIS FORM OF RANGE SPECIFICATION MAY BE APPLIED TO EITHER 73 / INPUT OR OUTPUT. NOT ALLOWED IN COMBINATION WITH EITHER ANOTHER 74 / (INPUT OR OUTPUT) RANGE OR AN "=" LENGTH SPECIFICATION. 75 76 / USER COMMANDS CAN TAKE SEVERAL FORMS: 77 78 / COPYING COMMANDS. 79 80 / *SYS7:0-577SYS7:0-577 OUTPUT DETERMINES RANGE 89 90 / *SYS0:0-577>SYS7:0 INPUT DETERMINES RANGE 91 92 / *SYS0:0>SYS7:0=600 LENGTH PARAMETER GIVEN EXPLICITLY 93 94 / THE DIRECTION OF TRANSFER IS DETERMINED BY WHETHER "<" OR ">" IS USED. 95 96 / COMPARISON COMMANDS. 97 98 / *SYS0:0-577!SYS7:0 FIRST INPUT DETERMINES RANGE 99 100 / *SYS0:0!SYS7:0-577 SECOND INPUT DETERMINES RANGE 101 102 / *SYS0:0!SYS7:0=600 LENGTH PARAMETER GIVEN EXPLICITLY 103 104 / THE "=" PARAMETER CAN BE GIVEN ANYWHERE ON THE COMMAND LINE EXCEPT WITHIN 105 / THE 'DEVU:BLOCK' CONSTRUCTION. 106 / SPECIAL HANDLER CONSIDERATIONS. 107 108 / WHEN DEALING WITH SPECIAL HANDLERS (PDP-10 DECTAPE, LAP6-DIAL LINCTAPE, 109 / ETC.), THE LENGTH OR RANGE OF BLOCKS TO COPY/COMPARE REFERS TO THE ACTUAL 110 / NUMBER OF BLOCKS SPECIFIED RELATIVE TO THE DEVICE ON THE SAME SIDE OF THE 111 / I/O SEPARATOR ("<", ">" OR "!"). CONSEQUENTLY, THE NUMBER OF BLOCKS ACTUALLY 112 / INVOLVED RELATIVE TO THE DEVICE ON THE OPPOSITE SIDE OF THE I/O SEPARATOR 113 / WILL DEPEND ON THE INTER-DEVICE BLOCK SIZE RATIO. IN THE FOLLOWING EXAMPLE: 114 115 / *SYS0:0DTP1:1077 132 133 / WILL YIELD AN I/O ERROR AS LTD0: BLOCK THREE AND THE FIRST HALF OF BLOCK 134 / FOUR WILL GO TO DTP1: BLOCK 1101 (HIGHEST AVAILABLE BLOCK ON THAT DEVICE), 135 / BUT THE SECOND HALF OF LTD0: BLOCK FOUR WILL ATTEMPT TO TRANSFER TO DTP1: 136 / BLOCK 1102 (NON-EXISTENT BLOCK) YIELDING AN I/O ERROR. A PROPER COMMAND 137 / USAGE WOULD BE: 138 139 / *LTD0:0>DTP1:1077-1101 140 141 / THIS WILL ASK FOR TWO PAGES FROM LTD0: BLOCK THREE, AND A SINGLE PAGE FROM 142 / LTD0: BLOCK FOUR TO COMPLETE THE THREE PAGE WRITE ON DTP1: BLOCK 1101. 143 144 / WHEN REVERSING THE DIRECTION OF TRANSFER, THE BLOCK LIMITS (OR RANGE IF 145 / "=NNNN" FORM IS USED) SHOULD STAY ON THE SAME SIDE OF THE SEPARATOR. THE 146 / FOLLOWING COMMAND WILL SUCCESSFULLY COPY THE SAME DATA BACK TO THE LTD0: 147 / DEVICE: 148 149 / *DTP1:1077-1101>LTD0:0 150 151 / SINCE THE ACTUAL NUMBER OF BLOCKS TRANSFERRED IS STILL DETERMINED BY THE 152 / DTP1: HANDLER. 153 / RESTRICTIONS. 154 155 / THE SYSTEM BOOTSTRAP UNIT MUST REMAIN RESIDENT UNTIL THE COPY/COMPARE STARTS 156 / (JUST AFTER THE "ARE YOU SURE? " QUESTION IS ASKED). THIS, IN TURN, REQUIRES 157 / THE USER TO NOT INVOKE /O IF ANY DISMOUNTING OF THE SYSTEM DEVICE IS REQUIRED, 158 / AS THIS PREVENTS THE PAUSE FOR USER RESPONSE REQUIRED TO SYNCHRONIZE SUCH 159 / DEVICE MOUNTS. THE RESTRICTION DOES NOT APPLY IF EITHER OF THE DEVICES "SYS" 160 / OR "NUL" (SEE BELOW) ARE CHOSEN FOR ALL "DEVU:BLOCK" CONSTRUCTIONS. 161 162 / REPEATING THE LATEST OPERATION BY USE OF <^R>, OR A SIMILAR OPERATION USING 163 / THE SAME EXACT HANDLERS, WILL OBVIATE THE REQUIRED RESIDENCE OF THE SYSTEM 164 / DEVICE, AS THE SAME HANDLERS ARE USED FOR THE SAME PURPOSE. A NEW OPERATION 165 / REQUIRES THE SYSTEM DEVICE TO BE MOUNTED, AS EACH OPERATION IS DYNAMICALLY 166 / ALLOCATED FOR THE BEST THROUGHPUT. 167 168 / AS A CONVENIENCE TO THE USER, A HANDLER KNOWN AS "SYS" IS PROVIDED AND IS 169 / ALSO MADE PERMANENTLY RESIDENT WHICH PREVENTS THE ABOVE-MENTIONED OVERHEAD 170 / AND DISMOUNT RESPONSIBILITY (NON-/O REQUIREMENT). THIS HANDLER ADDRESSES 171 / THE SYSTEM LOGICAL UNITS BY PASSING ITS PARAMETERS TO THE SYSTEM HANDLER 172 / ITSELF. SINCE THE SYSTEM HANDLER PROVIDES NO ERROR RECOVERY TO A CALLING 173 / PROGRAM, THE USER MUST INTERACT WITH THE SYSTEM HANDLER IN THE NORMAL FASHION 174 / (HALT, RETRY OR OVERLAY ERROR MESSAGE) AS NECESSARY. ANY RETURN TO BLKCPY 175 / IS PERCEIVED AS ERROR-FREE, AND THUS ALL ERROR RECOVERY PROCEDURES DOCUMENTED 176 / HERE DO NOT APPLY WHEN USING THE "SYS" HANDLER. 177 178 / CALLING THE "SYS" HANDLER WITH LOGICAL UNITS 0-7 APPENDED CORRESPONDS TO 179 / ACCESSING LOGICAL UNITS 0-7 THROUGH THE SYSTEM HANDLER. ANY ANOMALIES CAUSED 180 / BY THE SYSTEM HANDLER UNIT ARE PURELY WITHIN THE DOMAIN OF THE SYSTEM HANDLER. 181 / THE USER IS REFERRED TO SPECIFIC SYSTEM HANDLER DOCUMENTATION. NO ATTEMPT 182 / IS MADE TO LIMIT THE BLOCK RANGE APPLIED TO THE HANDLER, SO THIS ALSO IS 183 / GOVERNED BY THE CONSTRAINTS OF THE HANDLER ITSELF AND IS BEYOND THE SCOPE 184 / AND CONTROL OF THIS PROGRAM. FOR EXAMPLE: USING THE "RX01" SYSTEM HANDLER 185 / WILL MAP ALL UNITS FROM 4-7 INTO 0-3 WITHOUT REPORTING AN ERROR. DEPENDING 186 / ON HARDWARE CONFIGURATION, FURTHER MAPPING OF UNITS 2-3 INTO UNITS 0-1 MAY 187 / OCCUR. ATTEMPTS TO ACCESS BLOCKS BEYOND 1733 (ON RX01 OR RX02, OR 3667 ON 188 / RX03 WITH DOUBLE-SIDED DISKETTE INSERTED) WILL CAUSE A "HIGH TRACK" ERROR 189 / TO BE REPORTED BY THE HANDLER ITSELF. 190 191 / TO ALLOW FOR READ-CHECKING OF A DEVICE, A "NUL" HANDLER IS PROVIDED, AND 192 / ALSO MADE PERMANENTLY RESIDENT. THE "NUL" HANDLER WILL ALWAYS RETURN 193 / SUCCESSFULLY ON ANY READ TO ANY UNIT OR BLOCK. "NUL" HANDLER BLOCK SIZE 194 / IS CONSIDERED TO BE 128 WORDS/BLOCK. READING FROM THE "NUL" HANDLER (NUL0-7) 195 / WILL RESULT IN ZEROED DATA BEING READ, WHICH IS USEFUL FOR CLEARING OUTPUT 196 / DEVICE BLOCKS. 197 198 / IF INPUT FILES CONTAINING COMMANDS ARE PASSED, THE DEVICES ASSOCIATED WITH 199 / THESE FILES MUST ALWAYS REMAIN RESIDENT DURING THE FILES-DRIVEN PORTION OF 200 / THE BLKCPY SESSION. THE USER MUST RESPOND TO YES/NO QUESTIONS SUCH AS "ARE 201 / YOU SURE" (ASSUMING NON-/O USAGE), OR ERROR MESSAGES GENERATED BY PROBLEMATIC 202 / TRANSFERS, ON THE SYSTEM CONSOLE. ALL INPUT (INCLUDING COMMAND STRINGS) 203 / REVERTS TO THE CONSOLE AFTER ALL INPUT FILES' CONTENTS HAVE BEEN PROCESSED. 204 / COMMAND FORMATTING AND STYLE NOTES. 205 206 / SINCE BLKCPY COMMANDS ARE POTENTIALLY CONFUSING TO THE USER AND SUBTLETIES 207 / SUCH AS AN INVERTED DIRECTION OF TRANSFER HAVE SUCH DIRE CONSEQUENCES, THE 208 / USER IS ENCOURAGED TO DEVELOP A DISTINCTIVE STYLE WHEN USING BLKCPY TO PREVENT 209 / MISHAPS. TOWARDS THIS END, SEVERAL COSMETIC FEATURES EXIST WITHIN BLKCPY: 210 211 / A) BLKCPY ALLOWS COMMANDS TO BE PARTIAL OR TOTAL COMMENTS. ANY PORTION 212 / OF A COMMAND LINE STARTING WITH A SLASH ("/") CHARACTER IS CONSIDERED 213 / TO BE A COMMENT. THIS IS ESPECIALLY USEFUL WHEN CREATING COMMAND 214 / FILES FOR BATCH-ORIENTED USAGE. 215 216 / B) BLANK (NULL) LINES ARE FREELY ALLOWED FOR SPACING COMMANDS APART 217 / TO AID CLARITY. 218 219 / C) SPACE AND HORIZONTAL TAB CHARACTERS ARE FREELY ALLOWED ANYWHERE 220 / WITHIN A COMMAND TO AID CLARITY. THE HORIZONTAL TAB WILL ECHO AS 221 / A SPACE CHARACTER WITHIN THE BLKCPY COMMAND; THE USER IS ENCOURAGED 222 / TO USE HORIZONTAL TAB CHARACTERS WITHIN ANY COMMAND FILE TO AID 223 / UNDERSTANDING OF THE BLKCPY SESSION IMPLIED BY THE CONTENTS OF THE 224 / COMMAND FILE. 225 226 / D) SEVERAL KNOWN OPERATING SYSTEMS FOR OTHER COMPUTERS FORCE THE PERSONAL 227 / PREFERENCE OF THE IMPLEMENTORS UPON THE USER WITH REGARD TO SUCH 228 / AS THE IMPLIED DIRECTION OF MOVEMENT OF DATA WITHIN THE COMMAND 229 / STRUCTURE OF THE SYSTEM. IN KEEPING WITH OTHER P?S/8 CONVENTIONS, 230 / BLKCPY ALLOWS THE USER'S OWN PREFERENCE TO DETERMINE THIS (USE OF 231 / "<" OR ">" AS NECESSARY). IT IS HOPED THAT THE USER'S OWN ROUTINE 232 / USAGE OF BLKCPY WILL PREVENT ACCIDENTAL REVERSAL PROBLEMS OF THIS 233 / NATURE. 234 235 / E) BLKCPY FORCES NO PREFERENCE FOR UPPER OR LOWER CASE CHARACTERS. 236 / THE USER MAY ENTER EITHER CASE WHERE APPLICABLE AS ACTUAL COMMAND 237 / INTERPRETATION IS TOTALLY CASELESS. AT THE USER'S OPTION, ALL INPUT 238 / WILL BE "FOLDED" TO UPPER CASE AS IT IS TYPED IN (SEE /U DESCRIPTION). 239 240 / F) THE COMMAND GUIDE FEATURE EXPLICITLY STATES THE OBJECTIVE OF ANY 241 / COMMAND TO ASSIST THE USER IN DETERMINING COMMAND ERRORS. THE 242 / CONFIRMING QUESTION (ARE YOU SURE?) GIVES THE USER A FINAL OPPORTUNITY 243 / TO CANCEL ANY COMMAND. BOTH OF THESE FEATURES ARE AVAILABLE FROM 244 / THE COMMAND FILE MODE (AND ARE DEFAULT). USAGE OF COMMAND FILES 245 / (OPTIONALLY) IN CONJUNCTION WITH COMMAND GUIDES AND/OR CONFIRMATIONS 246 / BRINGS THE SAFEST USAGE OF BLKCPY TO THE NOVICE OR CASUAL USER. 247 / AUTOMATIC EXIT CAPABILITY IS OPTIONALLY AVAILABLE FROM COMMAND FILES 248 / BY TERMINATING ANY LINE WITH A DOLLAR SIGN ("$") CHARACTER WHICH 249 / WILL BE INTERPRETED AS AN CHARACTER CAUSING BLKCPY TO EXIT 250 / AFTER CONCLUDING THE LATEST COMMAND. 251 252 / G) EXTENSIVE DIAGNOSTIC MESSAGES ASSIST THE USER IN DETERMINING 253 / SYNTACTIC ERRORS WHEN USING BLKCPY. 254 / IMPLEMENTATION NOTES AND CUSTOMIZATION. 255 256 / IT MAY BE DESIRABLE TO CUSTOMIZE ANY PARTICULAR COPY OF BLKCPY TO THE USER'S 257 / OWN PREFERENCE REGARDING CERTAIN SWITCHES. FOR EXAMPLE, A SOPHISTICATED 258 / USER MAY PREFER TO DELETE THE COMMAND GUIDE FEATURE, OR EVEN THE "ARE YOU 259 / SURE?" SEQUENCE INVOKED ON EVERY COMMAND. OPTION SWITCHES CONTROLLING THESE 260 / AND OTHER ASPECTS OF BLKCPY ARE AVAILABLE TO CUSTOMIZE THE OPERATIONS OF 261 / THE PROGRAM, BUT THESE REQUIRE THE USER TO INVOKE FAVORED OPTIONS REPEATEDLY. 262 263 / SEVERAL KNOWN OPERATING SYSTEMS SUPPORT "PATCHED" VERSIONS OF SYSTEM PROGRAMS 264 / WHICH EFFECTIVELY FORCE THE EFFECT OF OPTION SWITCHES WHETHER EXPLICITLY 265 / GIVEN OR NOT. THIS PREVENTS THE POSSIBILITY OF USING THE PROGRAM IN THE 266 / ORIGINAL WAY AS THERE IS NO METHOD TO REVERT THE ENFORCED OPTION. 267 268 / TO OVERCOME THIS LIMITATION, THE USER CAN PATCH THE FIRST THREE WORDS OF 269 / THE CORE IMAGE OF BLKCPY ITSELF WITH A "MASK" (EACH BIT CORRESPONDS TO AN 270 / OPTION SWITCH SERIALLY FROM /A-/Z FOLLOWED BY /0-/9). THIS MASKING VALUE 271 / WILL BE USED TO "REVERSE" THE EFFECT OF THE SPECIFIED SWITCH. FOR EXAMPLE: 272 / SETTING RELATIVE WORD ZERO OF THE CORE IMAGE OF BLKCPY TO 0400 WILL REVERSE 273 / THE /D OPTION. THIS WOULD REQUIRE THE USER TO INVOKE /D IF THE COMMAND 274 / GUIDES WERE DESIRED, OPPOSITE TO NORMAL CONVENTION. ALL SWITCHES CAN BE 275 / "REVERSED" ACCORDINGLY (INCLUDING OPTION SWITCHES IGNORED BY BLKCPY!). 276 / THE RESULTANT CUSTOMIZED COPY OF BLKCPY OPERATES IN A TOTALLY CONVENTIONAL 277 / MANNER; ONLY THE METHOD OF PASSING SWITCH OPTIONS CHANGES. 278 / PROGRAM MESSAGES. 279 280 / COPY FINISHED [WITH ERRORS] 281 282 / THE LATEST COPY COMMAND HAS BEEN COMPLETED. IF ANY ERRORS WERE 283 / UNCORRECTED, THE ERROR APPENDAGE IS ALSO GIVEN. 284 285 / COMPARISON FINISHED [WITH ERRORS] 286 287 / THE LATEST COMPARISON COMMAND HAS BEEN COMPLETED. IF ANY ERRORS 288 / WERE UNCORRECTED, OR DATA DIFFERENCES WERE DETECTED, THE ERROR 289 / APPENDAGE IS ALSO GIVEN. 290 291 / COPY FAILED! 292 293 / THE USER OPTED TO ABORT THE COPY OPERATION INSTEAD OF RETRYING OR 294 / POSSIBLY SKIPPING PAST AN I/O ERROR. THE COMMAND WAS NOT (COMPLETELY) 295 / CARRIED OUT. 296 297 / COMPARISON ERROR! 298 299 / WHILE COMPARING THE SPECIFIED SETS OF CONTIGUOUS BLOCKS, A MISMATCH 300 / OCCURRED BETWEEN TWO CORRESPONDING WORDS. BOTH WORDS ARE REPORTED 301 / IN THE FORM OF DEVU:BBBB.OOOO /VVVV WHERE OOOO IS THE RELATIVE OFFSET 302 / WITHIN THE BLOCK BBBB ON UNIT U OF DEVICE DEV, AND VVVV IS THE DATA 303 / VALUE OF THE WORD. OPTIONS AT THIS POINT ARE TO: 304 305 / 1A) (/W NOT INVOKED) SKIP PAST BLOCK (Y/N) TO BYPASS 306 / THE PROBLEM BLOCK. 307 308 / 1B) (/W INVOKED) SKIP TO NEXT WORD (Y/N) TO BYPASS THE 309 / PROBLEM WORD. 310 311 / FAILING TO TAKE THIS OPTION WILL YIELD THE "COMPARISON FAILED!" MESSAGE. 312 313 / COMPARISON FAILED! 314 315 / THE USER OPTED TO ABORT THE COMPARISON OPERATION INSTEAD OF RETRYING 316 / OR POSSIBLY SKIPPING PAST AN I/O ERROR OR MISMATCH. THE COMMAND 317 / WAS NOT (COMPLETELY) CARRIED OUT. 318 / INPUT ERROR ON DEVU:BBBB! 319 320 / AN INPUT READ ERROR OCCURRED WHILE ATTEMPTING TO READ BLOCK BBBB 321 / ON UNIT U OF DEVICE DEV. OPTIONS AT THIS POINT ARE TO: 322 323 / 1) RETRY (Y/N) TO RETRY THE READ. 324 325 / 2A) (COPY ONLY) WRITE DUMMY BLOCK (Y/N) TO WRITE A DUMMY 326 / BLOCK ON THE OUTPUT DEVICE AT THE CORRESPONDING 327 / BLOCK WHERE THE ORIGINAL DATA WAS INTENDED. 328 329 / 2B) (COMPARISON ONLY) SKIP PAST BLOCK (Y/N) TO BYPASS 330 / THE PROBLEM BLOCK. 331 332 / TAKING ANY OPTION BUT 1) WILL CAUSE THE ERROR APPENDAGE TO APPEAR 333 / WHEN (IF) THE COPY/COMPARISON COMPLETES. REJECTING ALL OPTIONS WILL 334 / YIELD THE "COPY FAILED!" OR "COMPARISON FAILED!" MESSAGE. 335 336 / OUTPUT ERROR ON DEVU:BBBB! 337 338 / AN OUTPUT WRITE ERROR OCCURRED WHILE ATTEMPTING TO WRITE BLOCK BBBB 339 / ON UNIT U OF DEVICE DEV. OPTIONS AT THIS POINT ARE TO: 340 341 / 1) RETRY (Y/N) TO RETRY THE WRITE. 342 343 / 2) SKIP PAST BLOCK (Y/N) TO BYPASS THE PROBLEM BLOCK. 344 345 / TAKING ANY OPTION BUT 1) WILL CAUSE THE ERROR APPENDAGE TO APPEAR 346 / WHEN (IF) THE COPY OPERATION COMPLETES. REJECTING ALL OPTIONS WILL 347 / YIELD THE "COPY FAILED!" MESSAGE. 348 349 / REPEATING LATEST OPERATION 350 351 / <^R> WAS HIT AT THE COMMAND PROMPT OR DURING A COPY/COMPARISON. 352 / THE OPERATION IS TOTALLY RESTARTED. IF THE ASSOCIATED MEDIA ARE 353 / CHANGED BEFORE RESTARTING, MULTIPLE DISK COPY/COMPARISON CAN BE 354 / INVOKED WITH A SINGLE KEYSTROKE PER OPERATION. 355 356 / VERIFY ERROR ON DEVU:BBBB! 357 358 / AFTER WRITING THE DATA TO THE OUTPUT DEVICE AND SUCCESSFULLY READING 359 / IT BACK, A WORD BY WORD COMPARISON IS MADE FOR EVERY BLOCK BETWEEN 360 / THE SOURCE AND DESTINATION DEVICE (UNLESS /N WAS INVOKED). THIS 361 / ERROR INDICATES A DISCREPANCY BETWEEN THE SOURCE DATA AND THE 362 / DESTINATION DATA, AND IS STATED AS AN ERROR ON THE DESTINATION DEVICE 363 / DEV UNIT U AT BLOCK BBBB. OPTIONS AT THIS POINT ARE TO: 364 365 / 1) RETRY (Y/N) TO RETRY THE WRITE AND SUBSEQUENT READ 366 / OPERATION. 367 368 / 2) SKIP PAST BLOCK (Y/N) TO BYPASS THE PROBLEM BLOCK. 369 370 / TAKING ANY OPTION BUT 1) WILL CAUSE THE ERROR APPENDAGE TO APPEAR 371 / WHEN (IF) THE COPY OPERATION COMPLETES. REJECTING ALL OPTIONS WILL 372 / YIELD THE "COPY FAILED!" FAILURE MESSAGE. 373 / VERIFY READ ERROR ON DEVU:BBBB! 374 375 / A READ ERROR OCCURRED WHILE ATTEMPTING TO READ BLOCK BBBB ON UNIT 376 / U OF DEVICE DEV JUST AFTER THE DATA WAS WRITTEN (NOT PERFORMED IF 377 / /N INVOKED). THE OUTPUT DEVICE REPORTED NO ERROR WHILE WRITING THE 378 / DATA, BUT THE DATA CANNOT BE READ BACK FOR VERIFICATION PURPOSES. 379 / OPTIONS AT THIS POINT ARE TO: 380 381 / 1) RETRY (Y/N) TO RETRY THE WRITE AND SUBSEQUENT READ 382 / OPERATION. 383 384 / 2) SKIP PAST BLOCK (Y/N) TO BYPASS THE PROBLEM BLOCK. 385 386 / TAKING ANY OPTION BUT 1) WILL CAUSE THE ERROR APPENDAGE TO APPEAR 387 / WHEN (IF) THE COPY OPERATION COMPLETES. REJECTING ALL OPTIONS WILL 388 / YIELD THE "COPY FAILED!" FAILURE MESSAGE. 389 / ERROR RECOVERY (ALL EXAMPLES ASSUME /D, /O INVOKED FOR BREVITY). 390 391 / RECOVERING FROM INPUT ERRORS. 392 393 / SEVERAL EXAMPLES OF USER ERROR RECOVERY FROM INPUT ERRORS: 394 395 / *DTA1:0DTA0:0 /USER INVOKES COPY COMMAND 404 / INPUT ERROR ON DTA1:0001! /INPUT ERROR OCCURS 405 / RETRY? NO! /USER OPTS TO NOT RETRY 406 / WRITE DUMMY BLOCK? NO! /USER OPTS TO NOT WRITE DUMMY DATA 407 / COPY FAILED! /COPY DOES NOT FINISH 408 409 / *DTA1:0!DTA0:0=2702 /USER INVOKES COMPARISON COMMAND 410 / INPUT ERROR ON DTA1:0001! /INPUT ERROR OCCURS 411 / RETRY? NO! /USER OPTS TO NOT RETRY 412 / SKIP PAST PROBLEM BLOCK? YES! /USER OPTS TO SKIP THE BLOCK 413 / COMPARISON FINISHED [WITH ERRORS] /COMPARISON FINISHES 414 415 / RECOVERING FROM OUTPUT ERRORS. 416 417 / SEVERAL EXAMPLES OF USER ERROR RECOVERY FROM OUTPUT ERRORS: 418 419 / *DTA1:0DTA1:0 /USER INVOKES COPY COMMAND 425 / OUTPUT ERROR ON DTA1:0000! /OUTPUT ERROR OCCURS 426 / RETRY? NO! /USER OPTS TO NOT RETRY 427 / SKIP PAST PROBLEM BLOCK? YES! /USER OPTS TO SKIP THE BLOCK 428 / COPY FINISHED [WITH ERRORS] /COPY FINISHES 429 / RECOVERING FROM VERIFY ERRORS. 430 431 / SEVERAL EXAMPLES OF USER ERROR RECOVERY FROM VERIFY ERRORS: 432 433 / *DTA1:0DTA1:0-2701 /USER INVOKES COPY COMMAND 442 / VERIFY ERROR ON DTA1:0000! /VERIFY ERROR OCCURS 443 / RETRY? YES! /USER OPTS TO RETRY 444 / VERIFY ERROR ON DTA1:0000! /ERROR PERSISTS 445 / RETRY? NO! /USER OPTS NOT TO RETRY 446 / SKIP PAST PROBLEM BLOCK? NO! /USER OPTS NOT TO SKIP PAST THE BLOCK 447 / COPY FAILED! /COPY DOES NOT FINISH 448 449 / RECOVERING FROM VERIFY READ ERRORS. 450 451 / SEVERAL EXAMPLES OF USER ERROR RECOVERY FROM VERIFY READ ERRORS: 452 453 / *DTA1:0-2701DTA1:0 /USER INVOKES COPY COMMAND 459 / VERIFY READ ERROR ON DTA1:0000! /VERIFY READ ERROR OCCURS 460 / RETRY? YES! /USER OPTS TO RETRY 461 / VERIFY READ ERROR ON DTA1:0000! /ERROR PERSISTS 462 / RETRY? NO! /USER OPTS NOT TO RETRY 463 / SKIP PAST PROBLEM BLOCK? YES! /USER OPTS TO SKIP THE BLOCK 464 / COPY FINISHED [WITH ERRORS] /COPY FINISHES 465 / RECOVERING FROM COMPARISON ERRORS. 466 467 / SEVERAL EXAMPLES OF USER ERROR RECOVERY FROM COMPARISON ERRORS. 468 469 / (/W NOT INVOKED IN FOLLOWING EXAMPLE.) 470 471 / *DTA1:0-2701!DTA0:0 /USER INVOKES COMPARISON COMMAND 472 / COMPARISON ERROR! /COMPARISON ERROR OCCURRS 473 / DTA1:0000.0001 /1234 DTA0:0000.0001 /4567 /BOTH VALUES REPORTED 474 / SKIP PAST PROBLEM BLOCK? YES /USER OPTS TO SKIP THE BLOCK 475 / COMPARISON FINISHED [WITH ERRORS] /COMPARISON FINISHES 476 477 / (/W INVOKED IN FOLLOWING EXAMPLES.) 478 479 / *DTA1:0!DTA0:0-2701 /USER INVOKES COMPARISON COMMAND 480 / COMPARISON ERROR! /COMPARISON ERROR OCCURRS 481 / DTA1:0000.0001 /1234 DTA0:0000.0001 /4567 /BOTH VALUES REPORTED 482 / SKIP TO NEXT WORD? YES /USER OPTS TO SKIP THE WORD 483 / DTA1:2701.0177 /4321 DTA0:2701.0177 /7654 /BOTH VALUES REPORTED 484 / SKIP TO NEXT WORD? YES /USER OPTS TO SKIP THE WORD 485 / COMPARISON FINISHED [WITH ERRORS] /COMPARISON FINISHES 486 487 / *DTA1:0!DTA0:0=2702 /USER INVOKES COMPARISON COMMAND 488 / COMPARISON ERROR! /COMPARISON ERROR OCCURRS 489 / DTA1:0000.0001 /1234 DTA0:0000.0001 /4567 /BOTH VALUES REPORTED 490 / SKIP TO NEXT WORD? NO /USER OPTS NOT TO SKIP THE WORD 491 / COMPARISON FAILED! /COMPARISON DOES NOT FINISH 492 / COMMAND ERROR MESSAGES. 493 494 / INVALID COMMAND - BAD DEVICE UNIT 495 496 / A LOGICAL UNIT "0"-"7" WAS NOT FOUND AFTER THE DEVICE NAME. 497 498 / INVALID COMMAND - MISSING DEVICE UNIT 499 500 / A LOGICAL UNIT "0"-"7" WAS NOT FOUND AFTER THE DEVICE NAME AND BEFORE 501 / THE NEXT SPECIFICATION TERMINATOR ("<", ">", "!" OR ). 502 503 / INVALID COMMAND - MISSING LENGTH PARAMETER 504 505 / AN "=" WAS GIVEN WITHOUT THE LENGTH PARAMETER. 506 507 / INVALID COMMAND - MISSING BLOCK NUMBER 508 509 / THE BLOCK NUMBER AFTER "DEVU:" WAS NOT PRESENT. 510 511 / INVALID COMMAND - MISSING COLON 512 513 / THE ":" CHARACTER AFTER THE DEVICE UNIT IS NOT PRESENT. THIS CHARACTER 514 / MUST BE PRESENT TO SEPARATE THE UNIT AND BLOCK NUMBER. 515 516 / INVALID COMMAND - MISSING LOWER RANGE BLOCK 517 518 / THE "-BBBB" CONSTRUCTION WAS GIVEN TO SPECIFY AN UPPER RANGE BLOCK 519 / BUT NOT ADJACENT TO "DEVU:BBBB" WHICH IS THE REQUIRED POSITION FOR 520 / THIS OPTION. 521 522 / INVALID COMMAND - MISSING UPPER RANGE BLOCK 523 524 / THE "-" FOR AN UPPER RANGE BLOCK CONSTRUCTION WAS GIVEN, BUT THE 525 / UPPER BLOCK NUMBER IS MISSING. 526 527 / INVALID COMMAND - MULTIPLE I/O SEPARATORS 528 529 / THERE MUST BE EXACTLY ONE "<", ">", OR "!" CHARACTERS WITHIN A VALID 530 / COMMAND. EITHER MORE THAN ONE OCCURANCE OR MIXED USAGE OF THESE 531 / SOURCE/DESTINATION SEPARATORS WAS GIVEN. 532 533 / INVALID COMMAND - MULTIPLE LENGTH/RANGE SPECIFICATIONS 534 535 / THERE MUST BE EXACTLY ONE RANGE SPECIFICATION OR "=" LENGTH PARAMETER. 536 / EITHER MORE THAN ONE OCCURANCE OR MIXED USAGE OF THESE SPECIFICATIONS 537 / WAS GIVEN. 538 539 / INVALID COMMAND - MISSING DEVICE NAME 540 541 / THE DEVICE NAME WHICH STARTS THE "DEVU:BBBB" CONSTRUCTION WAS MISSING. 542 / INVALID COMMAND - NO I/O SEPARATORS 543 544 / NEITHER "<", ">", NOR "!" COULD BE FOUND IN THE COMMAND. THERE MUST 545 / BE EXACTLY ONE OF THESE IN A VALID COMMAND. 546 547 / INVALID COMMAND - NO LENGTH/RANGE SPECIFICATIONS 548 549 / NEITHER AN "=" NOR "-" CONSTRUCTION COULD BE FOUND IN THE COMMAND. 550 / THERE MUST BE EXACTLY ONE OF THESE IN A VALID COMMAND. 551 552 / DEV NOT AVAILABLE 553 554 / DEVICE "DEV" IS NOT AVAILABLE TO THIS PROGRAM. USE AVAILABLE DEVICES 555 / FOR COPY/COMPARISON OPERATIONS. 556 557 / CANNOT REPEAT LATEST OPERATION! 558 559 / NEW COMMAND INPUT HAS OCCURRED. THE PREVIOUS COMMAND IS LOST AND 560 / CANNOT BE REPEATED. TO REPEAT A COMMAND, RESPOND WITH <^R> AT THE 561 / COMMAND PROMPT INSTEAD OF A COMMAND LINE. INPUTTING <^R> WILL ALSO 562 / ABORT A COMMAND IN PROGRESS AND REPEAT IT FROM THE BEGINNING. 563 564 / INSUFFICIENT MEMORY FOR REQUESTED OPERATION! 565 566 / INSUFFICIENT MEMORY EXISTS TO ACCOMODATE THE REQUESTED COMMAND BECAUSE 567 / THE ASSOCIATED HANDLER(S) AND INPUT/OUTPUT (AND VERIFY) BUFFER(S) 568 / CANNOT FIT IN AVAILABLE MEMORY. USE /C TO ACCESS ADDITIONAL MEMORY 569 / IF AVAILABLE, ELSE USE OTHER (SMALLER) HANDLERS IF APPLICABLE. THE 570 / "SYS" AND "NUL" HANDLERS (EFFECTIVELY ZERO LENGTH) ALWAYS ALLOW 571 / FOR ENOUGH MEMORY TO CARRY OUT ANY COPY/COMPARISON OPERATION; THEY 572 / ARE NOT SUBJECT TO THIS ERROR MESSAGE. 573 574 / FUNCTION EXCEEDS DEVICE LIMITS! 575 576 / THE LATEST COMMAND ATTEMPTS A COPY/COMPARISON OPERATION BETWEEN 577 / UNLIKE BLOCK SIZE DEVICES. DUE TO HANDLER RESTRICTIONS, A BLOCK 578 / LARGER THAN 4095 (7777 OCTAL) CANNOT BE ACCOMODATED ON ANY HANDLER; 579 / THE LATEST COMMAND ATTEMPTS TO VIOLATE THIS UPPER LIMIT. 580 581 / NOTE: IT IS ALSO POSSIBLE THAT THE ATTEMPTED TRANSFER MIGHT NOT 582 / BE FEASABLE EVEN IF THIS MESSAGE IS NOT ISSUED. CONSULT SPECIFIC 583 / HANDLER DOCUMENTATION TO DETERMINE INTER-DEVICE TRANSFER LIMITATIONS. 584 / ALL LIKE BLOCK SIZE REQUESTS WILL ALWAYS CORRECTLY FUNCTION UP TO 585 / THE LIMITS OF THE (SMALLER) DEVICE. 586 / SPECIAL CONTROL CHARACTERS. 587 588 / CERTAIN CHARACTERS HAVE MEANING TO THE PROGRAM IN GENERAL AND OTHERS ONLY 589 / TO THE COMMAND PROCESSOR (THESE ARE MARKED WITH "*"): 590 591 / EXIT TO THE MONITOR; DON'T TERMINATE BATCH. 592 593 / <^A> SAME AS . 594 595 / <^B> SAME AS <^A>. 596 597 / <^C> EXIT TO MONITOR; PRINT "^C"; TERMINATE BATCH. 598 599 / * BACKSPACE OVER PREVIOUS CHARACTER IN COMMAND LINE. 600 / IF AT PROMPT, A CHARACTER WILL BE SENT IF 601 / ATTEMPTING TO BACKUP TOO FAR. 602 603 / * SAME AS . 604 605 / * SAME AS . 606 607 / * VIEW CURRENT COMMAND LINE BUFFER WITHOUT TERMINATING 608 / THE COMMAND. 609 610 / * TERMINATE COMMAND INPUT AND START COMMAND. WHEN 611 / COMMAND IS DONE, RESTART THE PROGRAM. 612 613 / * OR * TERMINATE COMMAND INPUT AND START COMMAND. DENOTED 614 / BY ECHOING "$" WITHOUT , . EXIT THE PROGRAM 615 / WHEN CURRENT COMMAND IS DONE. 616 617 / <^U>* IGNORE CURRENT COMMAND LINE AND RESTART COMMAND 618 / LINE PROCESSOR. 619 620 / <^P> ABORT CURRENT OPERATION AND RESTART THE PROGRAM. 621 622 / <^R> REPEAT LAST OPERATION; NOT ALLOWED IF THE USER ENTERS 623 / A NEW COMMAND. CAUSES RESTART OF CURRENT COMMAND 624 / IF PRESSED DURING COPY/COMPARISON OPERATION. 625 626 / <^S> PAUSE PROGRAM UNTIL <^Q> ISSUED FROM TERMINAL OR 627 / USER. THIS IS USED IN THE CONVENTIONAL WAY TO PREVENT 628 / TERMINAL DATA OVERRUN, BUT CAN ACTUALLY PAUSE THE 629 / COPY/COMPARISON OPERATION AS WELL. 630 631 / <^Q> RELEASE PROGRAM TO CONTINUE EXECUTION AND/OR MESSAGE 632 / PRINTING. 633 634 / INPUTTING A MAXIMUM WIDTH COMMAND LINE (MORE THAN ADEQUATE FOR ANY REASONABLE 635 / COMMAND) WILL CAUSE FURTHER INPUT TO BE IGNORED AND THE CHARACTER 636 / TO BE ECHOED. THE COMMAND SHOULD THEN BE TERMINATED WITH OR OR 637 / A BACKSPACE OPERATION SHOULD BE PERFORMED. 638 / DEFINITIONS. 639 640 COPREV= "F&77 /REVISION OF COPY PROGRAM 641 COPVER= 12 /VERSION OF COPY PROGRAM 642 HANDBLK=0122 /HANDLER INFORMATION BLOCK 643 IACS= 6163 /LOAD LINC-8 "S" REGISTER 644 INCON= 0031 /EQUATED FROM CONSOLE! 645 JMSC= JMS . /CURRENT PAGE JMS INSTRUCTION 646 LDA= 1000 /LOAD ACCUMULATOR ON PDP-12 647 LINC= 6141 /GOT L...MODE IF PDP-12 648 MAXHND= 40 /LARGEST PAGE COUNT IN A FULL-SIZE (FIELD) BUFFER 649 NL0001= CLA IAC /LOAD AC WITH 0001 650 NL0002= CLA CLL CML RTL /LOAD AC WITH 0002 651 NL2000= CLA CLL CML RTR /LOAD AC WITH 2000 652 NL4000= CLA CLL CML RAR /LOAD AC WITH 4000 653 NL5777= CLA CLL CMA RTR /LOAD AC WITH 5777 654 NL7775= CLA CLL CMA RTL /LOAD AC WITH 7775 655 NL7777= CLA CMA /LOAD AC WITH 7777 656 OUTCON= 0033 /EQUATED FROM CONSOLE! 657 PDP= 0002 /GOTO GOODY MODE IF PDP-12 658 SBOOT= 7600 /SYSTEM BOOTSTRAP ADDRESS 659 SBTFUN= 7602 /SYSTEM BOOTSTRAP FUNCTION 660 SCR= 0340 /SCALE RIGHT ON PDP-12 661 SCRSIZE=7611 /SYSTEM CORE SIZE WORD 662 SFILES= 7757 /FILES PASSES HERE 663 SOUTFLS=7607 /OUTPUT FILE COUNT PASSED HERE 664 SWAL= 7604 /SWITCHES /A-/L 665 SWMX= 7605 /SWITCHES /M-/X 666 SYSIO= 7640 /SYSTEM I/O ENTRY 667 TTY= 0003 /CONSOLE TTY: DEVICE CODE 668 WRITE= 4000 /SYSIO WRITE BIT 669 670 / DEPENDENT DEFINITIONS. 671 672 JMSSYSI=SYSIO&177+JMSC /CALL TO SYSIO FROM ITS PAGE 673 KEYCODE=TTY^10+6000 /SKELETON KEYBOARD CODE 674 PRTCODE=TTY+1^10+6000 /SKELETON TELEPRINTER CODE 675 676 KCCIOT= KEYCODE+2 /CLEAR KEYBOARD FLAG, AC, SET READER RUN 677 KRBIOT= KEYCODE+6 /CLEAR KEYBOARD FLAG, LOAD CHARACTER INTO AC, 678 /SET READER RUN 679 KRSIOT= KEYCODE+4 /OR CHARACTER INTO AC, DON'T CLEAR KEYBOARD FLAG 680 KSFIOT= KEYCODE+1 /SKIP ON KEYBOARD FLAG 681 TLSIOT= PRTCODE+6 /LOAD OUTPUT BUFFER, CLEAR FLAG 682 TSFIOT= PRTCODE+1 /SKIP ON OUTPUT FLAG 683 684 / DEVICE TABLE OFFSET DEFINITIONS. 685 686 BOFFSET=3 /BLOCK ENTRY OFFSET 687 EOFFSET=5 /ENTRY POINT OFFSET 688 LOFFSET=4 /HANDLER LENGTH OFFSET 689 *0 /START AT THE BEGINNING 690 691 XORSWS= . /XOR VALUES FOR OPTION SWITCHES HERE 692 693 000000 0000 CNTRLBL,0/.-. /LOOP CONTROL BLOCK 694 000001 0000 ESCAPSW,0/.-. / COMMAND TERMINATION SWITCH 695 000002 0000 GBTEMP, 0/.-. /TEMPORARY FOR GET A BUFFER ROUTINE, ETC. 696 000003 0000 GETPTR, .-. /COMMAND BUFFER POINTER 697 000004 0000 NAMPTR, .-. /DEVICE NAME POINTER 698 000005 0000 VERCNT, .-. /VERIFY COUNTER, ETC. 699 000006 0001 VERSW, 1 /VERIFY (WRITE WITH READ-VERIFY) SWITCH 700 000007 0000 VOSW, .-. /VERIFY-ONLY (NO COPY) SWITCH 701 702 *10 /DEFINE AUTO-INDEX AREA 703 704 000010 0000 XR1, .-. /AUTO-INDEX NUMBER ONE 705 000011 0000 XR2, .-. /AUTO-INDEX NUMBER TWO 706 000012 0000 XR3, .-. /AUTO-INDEX NUMBER THREE 707 000013 0000 XR4, .-. /AUTO-INDEX NUMBER FOUR 708 000014 0000 CMECNT, .-. /COMPARE ERROR RETRY COUNT 709 000015 0000 INCHAR, .-. /INPUT BUFFER 710 000016 0000 INECNT, .-. /INPUT ERROR RETRY COUNT 711 000017 0000 OTECNT, .-. /OUTPUT ERROR RETRY COUNT 712 *20 /GET PAST AUTO-INDEX AREA 713 714 000020 0000 BCSW, .-. /COPY/COMPARE ERRORS SWITCH 715 000021 0000 BLKFLG, .-. /INPUT/OUTPUT BLOCK CONTROL FLAG 716 000022 0000 BLOCK, .-. /BLOCK NUMBER 717 000023 0000 BSTFL1, .-. /FIRST BEST FIELD 718 000024 0000 BSTFL2, .-. /SECOND BEST FIELD 719 000025 0000 DEVLATE,.-. /LATEST ENTRY POINTER 720 000026 0000 DEVNUMB,.-. /RELATIVE DEVICE NUMBER 721 000027 0000 DEVPTR, .-. /DEVICE ENTRY POINTER 722 000030 5200 DIVSOR, INITIALIZE/.-. /DIVISOR; INITIALIZED FOR STARTUP 723 000031 7756 GFLPTR, SFILES-1 /FILE POINTER 724 000032 0000 GIVPTR, .-. /BUFFER POINTER 725 000033 0000 HI, .-. /HIGH-ORDER TEMPORARY 726 000034 0000 INDEV, .-. /INPUT DEVICE ADDRESS FOR I/O CALLS 727 000035 0000 INDLEN, .-. /INPUT DEVICE LENGTH 728 000036 0000 INEND, .-. /LAST INPUT BLOCK 729 000037 0000 INFLD, .-.^10 /INPUT BUFFER FIELD 730 000040 0000 INFO, .-. /DEVICE BLOCK-SIZE INFORMATION WORD 731 000041 0000 ININFO, .-. /INPUT HANDLER BLOCK-SIZE INFORMATION WORD 732 000042 0000 IOSW, 0 /ONE-AT-A-TIME MODE SWITCH 733 000043 0000 LENGTH, .-. /-(COPY LENGTH) 734 000044 0000 LFLAG, .-. /COPY LENGTH (SIZE) SCANNED SWITCH 735 000045 0000 LO, .-. /LOW-ORDER TEMPORARY 736 000046 0000 LSCAN, .-. /"<" SCAN COUNTER 737 000047 0000 MAXIO, .-. /MAXIMUM BLOCK COUNT PER ITERATION 738 000050 0000 NAMCNT, .-. /NAME CHARACTER COUNTER 739 000051 0000 OTDLEN, .-. /OUTPUT DEVICE LENGTH 740 000052 0000 OTINFO, .-. /OUTPUT HANDLER BLOCK-SIZE INFORMATION WORD 741 000053 0000 OUTDEV, .-. /OUTPUT DEVICE ADDRESS FOR I/O CALLS 742 000054 0000 OUTEND, .-. /LAST OUTPUT BLOCK 743 000055 0000 QUO, .-. /QUOTIENT 744 000056 0000 REM, .-. /REMAINDER 745 000057 0100 SCRCASE,100 /ALPHABETIC CASE 746 000060 0000 SCRCHAR,.-. /LATEST OUTPUT CHARACTER 747 000061 0000 SCRPTR, .-. /MESSAGE POINTER 748 000062 0000 SINBLK, .-. /FIRST INPUT BLOCK SAVED HERE 749 000063 4000 SINDNUM,4000 /INPUT DEVICE NUMBER SAVED HERE 750 000064 0000 SIZINFO,.-. /CONTROLLING BLOCK SIZE (NEGATED) 751 000065 4001 SOTDNUM,4001 /OUTPUT DEVICE NUMBER SAVED HERE 752 000066 0000 SOUTBLK,.-. /FIRST OUTPUT BLOCK SAVED HERE 753 000067 4000 SVOSW, 4000 /VERIFY-ONLY SWITCH SAVED HERE 754 000070 0000 TABLUNI,.-. /SYSTEM LOGICAL UNIT WHERE DEVICE TABLE, HANDLERS EXIST 755 000071 0000 UNIT, .-. /UNIT NUMBER 756 000072 0000 UPDATE, .-. /LOOP UPDATE FACTOR 757 000073 0000 VERFLD, .-.^10 /VERIFY BUFFER FIELD 758 / I/O ARGUMENTS. 759 760 / THE DEVICE NUMBERS AND UNITS MUST BE POSITIONED BEFORE THEIR CORRESPONDING 761 / I/O CALLS FOR PROPER OPERATION OF THE "DVBLPRT" ROUTINE. 762 763 000074 0000 INDNUM, .-. /INPUT DEVICE NUMBER 764 000075 0000 INUNIT, .-. /INPUT DEVICE UNIT 765 766 000076 0000 INADR, .-. /INPUT TRANSFER ADDRESS 767 000077 0000 INFUN, .-. /INPUT FUNCTION WORD 768 000100 0000 INBLK, .-. /INPUT BLOCK 769 770 000101 0000 OTDNUM, .-. /OUTPUT DEVICE NUMBER 771 000102 0000 OTUNIT, .-. /OUTPUT DEVICE UNIT 772 773 000103 0000 OUTADR, .-. /OUTPUT TRANSFER ADDRESS 774 000104 0000 OUTFUN, .-. /OUTPUT FUNCTION WORD 775 000105 0000 OUTBLK, .-. /OUTPUT BLOCK 776 777 / VERIFY ARGUMENTS. 778 779 000106 0000 VERADR, .-. /VERIFY TRANSFER ADDRESS 780 000107 0000 VERFUN, .-. /VERIFY FUNCTION WORD 781 000110 0000 VERBLK, .-. /VERIFY INPUT BLOCK 782 PAGE 783 784 IFNZRO .&177 785 786 BLKCPY= . /BLKCPY STARTS HERE 787 788 000200 0400 BLKCPY, 400 /CONSTANT 0400; HERE IN CASE WE'RE CHAINED TO 789 000201 5430 COPZAP, JMP I DIVSOR/(INITIAL)/**** NORMAL **** TLSIOT **** CONSOLE **** 0000 790 000202 4577 RESTART,JMS I [CRLF] /DO A , 791 000203 4777 RESTA1, JMS I (GETCMD) /GET COMMAND INPUT 792 000204 1074 TAD INDNUM /GET INPUT DEVICE NUMBER 793 000205 4776 JMS I (LENSET) /GET INPUT DEVICE LENGTH 794 000206 3035 DCA INDLEN /STASH IT 795 000207 1074 TAD INDNUM /GET INPUT DEVICE NUMBER 796 000210 7041 CIA /INVERT IT FOR TESTING 797 000211 1101 TAD OTDNUM /COMPARE TO OUTPUT DEVICE NUMBER 798 000212 7650 SNA CLA /SKIP IF DIFFERENT 799 000213 5216 JMP CLRLENGTH /JUMP IF THEY MATCH 800 000214 1101 TAD OTDNUM /GET OUTPUT DEVICE NUMBER 801 000215 4776 JMS I (LENSET) /GET OUTPUT DEVICE LENGTH 802 000216 3051 CLRLENG,DCA OTDLEN /STASH IT 803 000217 1007 TAD VOSW /GET VERIFY-ONLY SWITCH 804 000220 7041 CIA /INVERT IT FOR TESTING 805 000221 1067 TAD SVOSW /COMPARE TO PREVIOUS VALUE 806 000222 7640 SLNZAP, SZA CLA /**** NOT /N **** SKP CLA 807 000223 5236 JMP BUFCALC /JUMP IF DIFFERENT 808 000224 1074 TAD INDNUM /GET CURRENT INPUT DEVICE NUMBER 809 000225 7041 CIA /INVERT FOR TEST 810 000226 1063 TAD SINDNUM /COMPARE TO PREVIOUS VALUE 811 000227 7640 SZA CLA /SKIP IF IT MATCHES 812 000230 5236 JMP BUFCALC /ELSE FORGET IT 813 000231 1101 TAD OTDNUM /GET CURRENT OUTPUT DEVICE NUMBER 814 000232 7041 CIA /INVERT FOR TEST 815 000233 1065 TAD SOTDNUM /COMPARE TO PREVIOUS VALUE 816 000234 7650 SNA CLA /SKIP IF IT DIFFERS 817 000235 5244 JMP DOITOK /JUMP IF THEY BOTH MATCH 818 000236 4775 BUFCALC,JMS I (HBSETUP) /SETUP HANDLERS, BUFFERS 819 000237 7410 SKP /COULDN'T DO IT 820 000240 5244 JMP DOITOK /NO PROBLEM 821 000241 4576 JMS I [ESCRIBE] /TELL THEM 822 000242 4727 NGMSG /WHAT THEY ASK IS IMPOSSIBLE 823 000243 5202 JMP RESTART /FORGET IT 824 000244 1007 DOITOK, TAD VOSW /GET VERIFY-ONLY SWITCH 825 000245 3067 DCA SVOSW /SAVE FOR NEXT TIME 826 000246 1074 TAD INDNUM /GET INPUT DEVICE NUMBER 827 000247 3063 DCA SINDNUM /SAVE FOR NEXT TIME 828 000250 1101 TAD OTDNUM /GET OUTPUT DEVICE NUMBER 829 000251 3065 DCA SOTDNUM /SAVE FOR NEXT TIME 830 000252 1041 TAD ININFO /GET INPUT BLOCK-SIZE WORD 831 000253 4774 JMS I (BLKCALCULATE) /CALCULATE INPUT TRANSFER LENGTH-1 832 000254 1100 TAD INBLK /ADD ON FIRST INPUT BLOCK 833 000255 3036 DCA INEND /SAVE LAST INPUT BLOCK 834 000256 1052 TAD OTINFO /GET OUTPUT BLOCK-SIZE WORD 835 000257 4774 JMS I (BLKCALCULATE) /CALCULATE OUTPUT TRANSFER LENGTH-1 836 000260 1105 TAD OUTBLK /ADD ON FIRST OUTPUT BLOCK 837 000261 3054 DCA OUTEND /SAVE LAST OUTPUT BLOCK 838 000262 1575 TAD I [SWAL] /GET /A-/L SWITCHES 839 000263 0200 AND BLKCPY/(400) /JUST /D BIT 840 000264 7640 SZA CLA /SKIP IF OFF 841 000265 5312 JMP TESTO /JUMP IF ON 842 000266 1007 TAD VOSW /GET VERIFY-ONLY SWITCH 843 000267 7640 SZA CLA /SKIP IF COPYING 844 000270 5303 JMP CMPGUIDE /JUMP IF VERIFYING 845 000271 4576 JMS I [ESCRIBE] /GIVE THEM 846 000272 4251 COPMSG /"COPY" MESSAGE 847 000273 1046 TAD LSCAN /GET "<" SCAN INDICATOR 848 000274 7650 SNA CLA /SKIP IF "OUTPUTOUTPUT" FORM WAS GIVEN 850 000276 4360 JMS OTTOOT /PRINT OUTPUT STUFF NOW 851 000277 4574 JMS I [SCRIBE] /GIVE THEM 852 000300 4304 FROMSG /"FROM" MESSAGE 853 000301 4350 JMS INTOIN /PRINT INPUT STUFF NOW 854 000302 5311 JMP GUIDCOMMON /CONTINUE THERE 855 856 000303 4576 CMPGUID,JMS I [ESCRIBE] /GIVE THEM 857 000304 4243 COMMSG /"COMPARE" MESSAGE 858 000305 4350 COPYTO, JMS INTOIN /PRINT INPUT STUFF NOW 859 000306 4574 JMS I [SCRIBE] /GIVE THEM 860 000307 4424 TOMSG /"TO" MESSAGE 861 000310 4360 JMS OTTOOT /PRINT OUTPUT STUFF NOW 862 000311 4577 GUIDCOM,JMS I [CRLF] /DO A , 863 000312 1573 TESTO, TAD I [SWMX] /GET /M-/X SWITCHES 864 000313 0373 AND (1000) /JUST /O BIT 865 000314 7640 SZA CLA /SKIP IF OFF 866 000315 5323 JMP DOIT /JUMP IF ON 867 000316 4576 JMS I [ESCRIBE] /GIVE THEM THE 868 000317 4353 RUSMSG /"ARE YOU SURE?" MESSAGE 869 000320 4572 JMS I [YORNO] /GET RESPONSE 870 000321 7410 SKP /YES, DON'T ABORT 871 000322 5203 JMP RESTA1 /NO, JUST FORGET IT 872 000323 3331 DOIT, DCA RHIT /ALLOW <^R> 873 000324 1100 TAD INBLK /GET NEW INPUT BLOCK 874 000325 3062 DCA SINBLK /SAVE IT FOR NEXT TIME 875 000326 1105 TAD OUTBLK /GET NEW OUTPUT BLOCK 876 000327 3066 DCA SOUTBLK /SAVE IT FOR NEXT TIME 877 000330 5344 JMP RESTA2 /CONTINUE THERE 878 / COMES HERE IF <^R> HIT. 879 880 000331 7410 RHIT, SKP /**** <^R> ALLOWED **** 0000 881 000332 5336 JMP RGOOD /JUMP IF <^R> ALLOWED 882 000333 4574 JMS I [SCRIBE] /TELL THEM THAT 883 000334 4777 NORMSG /THEY CAN'T DO THAT 884 000335 5202 JMP RESTART /AND THEN RESTART 885 886 / COMES HERE IF <^R> HIT AND THE REPEAT OPERATION SHOULD BE ALLOWED. 887 888 000336 1062 RGOOD, TAD SINBLK /GET SAVED FIRST INPUT BLOCK 889 000337 3100 DCA INBLK /RESTORE IT 890 000340 1066 TAD SOUTBLK /GET SAVED FIRST OUTPUT BLOCK 891 000341 3105 DCA OUTBLK /RESTORE IT 892 000342 4576 JMS I [ESCRIBE] /TELL THEM THAT 893 000343 4325 REPMSG /WE ARE REPEATING 894 000344 3000 RESTA2, DCA CNTRLBLK /CLEAR CONTROL BLOCK 895 000345 7240 NL7777 /INDICATE LACK OF 896 000346 3020 DCA BCSW /ERRORS (SO FAR) 897 000347 5772 JMP I (IORESET) /GO START IT UP 898 899 000350 0000 INTOIN, .-. /INPUT PARTICULARS PRINT ROUTINE 900 000351 4571 JMS I [DVBLPRT] /GIVE THEM INPUT 901 000352 0073 INDNUM-1 /"DEVU:BLOCK" 902 000353 1371 TAD ("-&177) /GET "-" 903 000354 4570 JMS I [P7CH] /PRINT IT 904 000355 1036 TAD INEND /GET LAST INPUT BLOCK 905 000356 4567 JMS I [PRTOCT] /PRINT IT 906 000357 5750 JMP I INTOIN /RETURN 907 908 000360 0000 OTTOOT, .-. /OUTPUT PARTICULARS PRINT ROUTINE 909 000361 4571 JMS I [DVBLPRT] /GIVE THEM OUTPUT 910 000362 0100 OTDNUM-1 /"DEVU:BLOCK" 911 000363 1371 TAD ("-&177) /GET "-" 912 000364 4570 JMS I [P7CH] /PRINT IT 913 000365 1054 TAD OUTEND /GET LAST OUTPUT BLOCK 914 000366 4567 JMS I [PRTOCT] /PRINT IT 915 000367 5760 JMP I OTTOOT /RETURN 916 917 000371 0055 PAGE 000372 0543 000373 1000 000374 2200 000375 3400 000376 1744 000377 2400 918 / MAIN I/O LOOP. 919 920 000400 1000 IOLOOP, TAD CNTRLBLK /GET CONTROL BLOCK 921 000401 7100 CLL /CLEAR LINK FOR TEST 922 000402 1043 TAD LENGTH /COMPARE TO UPPER LIMIT 923 000403 7430 SZL /SKIP IF NOT DONE YET 924 000404 5347 JMP IODONE /FORGET IT 925 000405 1072 TAD UPDATE /ADD ON CURRENT UPDATE FACTOR 926 000406 7420 SNL /SKIP IF THAT WOULD BE TOO FAR 927 000407 5213 JMP IOK /JUMP IF NOT 928 000410 7041 CIA /INVERT AND 929 000411 1072 TAD UPDATE /SUBTRACT FROM UPDATE FACTOR 930 000412 3072 DCA UPDATE /SAVE NEW SMALLER UPDATE FACTOR 931 000413 7200 IOK, CLA /CLEAN UP 932 000414 1100 TAD INBLK /GET CURRENT INPUT BLOCK 933 000415 4777 JMS I (DISPLAY) /DISPLAY IT 934 000416 7346 NL7775 /SETUP THE 935 000417 3016 DCA INECNT /INPUT ERROR RETRY COUNT 936 000420 4776 INPAGN, JMS I (CHKUP) /CHECK FOR <^C>, ETC. 937 000421 1041 TAD ININFO /GET INPUT BLOCK-SIZE WORD 938 000422 4566 JMS I [GETSIZE] /GET ADJUSTED PAGE BITS 939 000423 0000 INUPDAT,.-. /INPUT UPDATE FACTOR 940 000424 1037 TAD INFLD /ADD ON TRANSFER FIELD BITS 941 000425 1075 TAD INUNIT /ADD ON INPUT LOGICAL UNIT 942 000426 3077 DCA INFUN /STORE IN FUNCTION WORD 943 000427 0000 INCFLD, .-. /WILL BE CIF INPUT HANDLER FIELD 944 000430 4434 JMS I INDEV /CALL INPUT HANDLER 945 000431 0076 INADR /ARGUMENT POINTER 946 000432 5775 JMP I (INERROR) /BARF! 947 000433 1052 INPAST, TAD OTINFO /GET OUTPUT BLOCK-SIZE WORD 948 000434 4566 JMS I [GETSIZE] /GET ADJUSTED PAGE BITS 949 000435 0000 OTUPDAT,.-. /OUTPUT UPDATE FACTOR 950 000436 1165 TAD [WRITE] /ADD ON WRITE BIT 951 000437 1037 TAD INFLD /ADD ON TRANSFER FIELD BITS 952 000440 1102 TAD OTUNIT /ADD ON OUTPUT LOGICAL UNIT 953 000441 3104 DCA OUTFUN /STORE IN FUNCTION WORD 954 000442 7346 NL7775 /SETUP THE 955 000443 3014 DCA CMECNT /COMPARE ERROR RETRY COUNT 956 000444 7346 VERAGN, NL7775 /SETUP THE 957 000445 3017 DCA OTECNT /OUTPUT ERROR RETRY COUNT 958 000446 4776 OUTAGN, JMS I (CHKUP) /CHECK FOR <^C>, ETC. 959 000447 1105 TAD OUTBLK /GET CURRENT OUTPUT BLOCK 960 000450 4777 JMS I (DISPLAY) /DISPLAY IT 961 000451 1007 TAD VOSW /GET VERIFY-ONLY SWITCH 962 000452 7640 SZA CLA /SKIP IF OFF 963 000453 5260 JMP OTBYPASS /BYPASS WRITING IF ON 964 000454 0000 OTCFLD, .-. /WILL BE CIF OUTPUT HANDLER FIELD 965 000455 4453 JMS I OUTDEV /CALL OUTPUT HANDLER 966 000456 0103 OUTADR /ARGUMENT POINTER 967 000457 5774 JMP I (OTERROR) /BARF! 968 000460 4776 OTBYPAS,JMS I (CHKUP) /CHECK FOR <^C>, ETC. 969 000461 1104 TAD OUTFUN /GET OUTPUT FUNCTION 970 000462 0373 AND (3707) /JUST PAGE, UNIT BITS 971 000463 1073 TAD VERFLD /ADD ON VERIFY FIELD 972 000464 3107 DCA VERFUN /STORE VERIFY FUNCTION 973 000465 1105 TAD OUTBLK /GET OUTPUT BLOCK 974 000466 3110 DCA VERBLK /USE FOR VERIFY ALSO 975 000467 1006 TAD VERSW /GET VERIFY SWITCH 976 000470 1007 TAD VOSW /ALSO VERIFY-ONLY SWITCH 977 000471 7650 SNA CLA /SKIP IF EITHER SET 978 000472 5323 JMP VERPAST /JUMP IF NOT VERIFYING 979 000473 0000 VECFLD, .-. /WILL BE CIF OUTPUT HANDLER FIELD 980 000474 4453 JMS I OUTDEV /CALL VERIFY HANDLER 981 000475 0106 VERADR /ARGUMENT POINTER 982 000476 5772 JMP I (CMERROR) /BARF! 983 000477 4566 JMS I [GETSIZE] /GET ADJUSTED PAGE COUNT 984 000500 0000 .-. /DUMMY TO BE STORED INTO 985 000501 7104 CLL RAL /TURN INTO WORD COUNT 986 000502 7041 CIA /INVERT AND 987 000503 3005 DCA VERCNT /SAVE AS VERIFY COUNT 988 000504 7240 NL7777 /BACKUP 989 000505 1103 TAD OUTADR /POINT TO 990 000506 3010 DCA XR1 /OUTPUT BUFFER 991 000507 7240 NL7777 /BACKUP 992 000510 1106 TAD VERADR /POINT TO 993 000511 3011 DCA XR2 /VERIFY BUFFER 994 000512 6201 CMPLUP, CDF 00 /**** CHANGED IF ADDITIONAL MEMORY USED **** 995 000513 1410 TAD I XR1 /GET A WORD 996 000514 7041 CIA /INVERT FOR TESTING 997 000515 6201 VERCDF, CDF 00 /**** CHANGED IF ADDITIONAL MEMORY USED **** 998 000516 1411 TAD I XR2 /COMPARE TO CORRESPONDING WORD 999 000517 7640 SZA CLA /SKIP IF IT MATCHES 1000 000520 5771 JMP I (CMPERROR) /ELSE COMPLAIN 1001 000521 2005 NEXTWD, ISZ VERCNT /DONE YET? 1002 000522 5312 JMP CMPLUP /NO, KEEP GOING 1003 000523 6201 VERPAST,CDF 00 /BACK TO FIELD ZERO 1004 000524 1100 TAD INBLK /\ 1005 000525 1223 TAD INUPDATE / >UPDATE INPUT BLOCK 1006 000526 3100 DCA INBLK // 1007 000527 1105 TAD OUTBLK /\ 1008 000530 1235 TAD OTUPDATE / >UPDATE OUTPUT BLOCK 1009 000531 3105 DCA OUTBLK // 1010 000532 1000 TAD CNTRLBLK /GET CONTROL BLOCK 1011 000533 1072 TAD UPDATE /UPDATE IT 1012 000534 7450 SNA /MORE TO GO? 1013 000535 5347 JMP IODONE /NO, WE'RE DONE 1014 000536 3000 DCA CNTRLBLK /YES, STORE BACK 1015 000537 1042 TAD IOSW /ARE WE IN ONE-AT-A-TIME MODE? 1016 000540 7640 SZA CLA /SKIP IF NOT 1017 000541 2042 ISZ IOSW /ARE WE DONE WITH ONE-AT-A-TIME MODE? 1018 000542 5200 JMP IOLOOP /NO, JUST KEEP GOING 1019 000543 1047 IORESET,TAD MAXIO /YES, RESET TO THE 1020 000544 3072 DCA UPDATE /NORMAL UPDATE FACTOR 1021 000545 3042 DCA IOSW /CLEAR CRAWL MODE FOR TOTAL RESET FROM HERE 1022 000546 5200 JMP IOLOOP /KEEP GOING 1023 / COMES HERE WHEN I/O COMPLETES. 1024 1025 000547 1007 IODONE, TAD VOSW /GET VERIFY-ONLY SWITCH 1026 000550 7640 SZA CLA /SKIP IF OFF 1027 000551 5355 JMP VODONE /JUMP IF ON 1028 000552 4576 JMS I [ESCRIBE] /TELL THEM 1029 000553 4200 CDNMSG /THEY FINISHED THE COPY 1030 000554 5357 JMP DONECOMMON /CONTINUE THERE 1031 1032 000555 4576 VODONE, JMS I [ESCRIBE] /TELL THEM 1033 000556 4427 VDNMSG /THEY FINISHED THE VERIFY 1034 000557 1020 DONECOM,TAD BCSW /GET BADNESS SWITCH 1035 000560 7640 SZA CLA /SKIP IF BAD 1036 000561 5364 JMP NOPROBLEM /JUMP IF NOT 1037 000562 4574 JMS I [SCRIBE] /TELL THEM 1038 000563 4504 WERMSG /ERRORS OCCURRED 1039 000564 1001 NOPROBL,TAD ESCAPSW /GET SWITCH 1040 000565 7640 SZA CLA /SKIP IF OFF 1041 000566 5564 JMP I [SBOOT] /ELSE EXIT NOW 1042 1043 / SINCE THEY WANT TO DO ANOTHER ONE, RESTART. 1044 1045 000567 5563 JMP I [RESTART] /GO RESTART IT 1046 1047 000571 0715 PAGE 000572 0675 000573 3707 000574 0655 000575 0600 000576 1606 000577 0725 1048 / COMES HERE ON INPUT ERROR. 1049 1050 000600 2016 INERROR,ISZ INECNT /TOO MANY ERRORS? 1051 000601 5777 JMP I (INPAGN) /NO, KEEP GOING 1052 000602 4344 JMS IOCHK /CHECK IF IN ONE-AT-A-TIME MODE 1053 000603 4576 JMS I [ESCRIBE] /TELL THEM 1054 000604 4310 IERMSG /THEY HAVE AN INPUT ERROR 1055 000605 4776 JMS I (REPORT) /PRINT OUT THE PARTICULARS 1056 000606 0073 INDNUM-1 /OF THEIR PROBLEM 1057 000607 4775 JMS I (ASKRETRY) /ASK FOR A RETRY 1058 000610 5774 JMP I (IOLOOP) /TRY, TRY AGAIN 1059 000611 1007 TAD VOSW /ARE WE JUST VERIFYING? 1060 000612 7640 SZA CLA /SKIP IF NOT 1061 000613 5266 JMP VRDCOMMON /JUMP IF SO 1062 000614 4574 JMS I [SCRIBE] /TELL THEM ABOUT 1063 000615 4467 WDBMSG /DUMMY BLOCK OPTION 1064 000616 4572 JMS I [YORNO] /GET RESPONSE 1065 000617 5231 JMP WDMBLK /YES, GO DO IT 1066 000620 1007 FAILURE,TAD VOSW /GET VERIFY MODE SWITCH 1067 000621 7640 SZA CLA /SKIP IF COPYING 1068 000622 5226 JMP VERFAIL /JUMP IF VERIFYING 1069 000623 4574 JMS I [SCRIBE] /TELL THEM 1070 000624 4216 CFAMSG /COPY FAILED 1071 000625 5563 JMP I [RESTART] /GO TRY AGAIN 1072 1073 000626 4574 VERFAIL,JMS I [SCRIBE] /TELL THEM 1074 000627 4443 VFAMSG /VERIFY FAILED 1075 000630 5563 JMP I [RESTART] /GO TRY AGAIN 1076 1077 / COMES HERE TO FAKE INPUT WITH A DUMMY BLOCK IMAGE. 1078 1079 000631 7240 WDMBLK, NL7777 /-1 1080 000632 1076 TAD INADR /POINT AT 1081 000633 3010 DCA XR1 /INPUT BUFFER 1082 000634 1162 TAD [-10] /SETUP THE 1083 000635 3016 DCA INECNT /REPEAT COUNT 1084 000636 1161 DUMLUP, TAD [-20] /SETUP THE WORD COUNT 1085 000637 3005 DCA VERCNT /FOR ONE MESSAGE'S WORTH 1086 000640 1373 TAD (DUMMSG-1) /POINT TO 1087 000641 3011 DCA XR2 /THE DUMMY MESSAGE 1088 000642 6201 DMLOOP, CDF 00 /GOTO MESSAGE FIELD 1089 000643 1411 TAD I XR2 /GET A DUMMY WORD 1090 000644 6201 DMBCDF, CDF 00 /**** CHANGED IF MORE MEMORY USED **** 1091 000645 3410 DCA I XR1 /STORE IN INPUT BUFFER 1092 000646 2005 ISZ VERCNT /DONE WITH THIS MESSAGE? 1093 000647 5242 JMP DMLOOP /NO, GO BACK 1094 000650 2016 ISZ INECNT /FINISHED WITH ENTIRE BLOCK? 1095 000651 5236 JMP DUMLUP /NO, GO BACK 1096 000652 6201 CDF 00 /BACK TO OUR FIELD 1097 000653 3020 DCA BCSW /INDICATE ERRORS 1098 000654 5772 JMP I (INPAST) /PRETEND WE GOT INPUT 1099 / COMES HERE ON OUTPUT ERROR. 1100 1101 000655 2017 OTERROR,ISZ OTECNT /TOO MANY ERRORS? 1102 000656 5771 JMP I (OUTAGN) /NO, TRY AGAIN 1103 000657 4344 JMS IOCHK /CHECK IF IN ONE-AT-A-TIME MODE 1104 000660 4576 JMS I [ESCRIBE] /TELL THEM 1105 000661 4320 OERMSG /THEY HAVE AN OUTPUT ERROR 1106 000662 4776 JMS I (REPORT) /PRINT OUT THE PARTICULARS 1107 000663 0100 OTDNUM-1 /OF THEIR PROBLEM 1108 000664 4775 JMS I (ASKRETRY) /ASK FOR A RETRY 1109 000665 5770 JMP I (VERAGN) /TRY, TRY AGAIN 1110 000666 4574 VRDCOMM,JMS I [SCRIBE] /TELL THEM ABOUT 1111 000667 4366 SKPBMSG /THE SKIP BLOCK OPTION 1112 000670 4572 JMS I [YORNO] /GET RESPONSE 1113 000671 7410 SKP /SKIP IF YES 1114 000672 5220 JMP FAILURE /JUMP IF NO 1115 000673 3020 DCA BCSW /INDICATE ERRORS 1116 000674 5767 JMP I (VERPAST) /CONTINUE PAST ACTUAL I/O 1117 1118 / COMES HERE ON COMPARE I/O ERROR. 1119 1120 000675 2014 CMERROR,ISZ CMECNT /TOO MANY ERRORS? 1121 000676 5770 JMP I (VERAGN) /NO, TRY AGAIN 1122 000677 4344 JMS IOCHK /CHECK IF IN ONE-AT-A-TIME MODE 1123 000700 1007 TAD VOSW /GET VERIFY-ONLY SWITCH 1124 000701 7640 SZA CLA /SKIP IF COPYING 1125 000702 5306 JMP VRDERROR /JUMP IF VERIFYING 1126 000703 4576 JMS I [ESCRIBE] /TELL THEM THEY HAVE 1127 000704 4457 VREMSG /VERIFY READ ERROR 1128 000705 5310 JMP CMECOMMON /CONTINUE THERE 1129 1130 000706 4576 VRDERRO,JMS I [ESCRIBE] /TELL THEM THEY HAVE 1131 000707 4310 IERMSG /INPUT READ ERROR 1132 000710 4776 CMECOMM,JMS I (REPORT) /PRINT OUT THE PARTICULARS 1133 000711 0100 OTDNUM-1 /OF THEIR PROBLEM 1134 000712 4775 JMS I (ASKRETRY) /ASK FOR A RETRY 1135 000713 5772 JMP I (INPAST) /TRY, TRY AGAIN 1136 000714 5266 JMP VRDCOMMON /CONTINUE THERE IF NOT 1137 1138 / COMES HERE ON COMPARE DATA ERROR. 1139 1140 000715 6201 CMPERRO,CDF 00 /ENSURE FIELD ZERO 1141 000716 4344 JMS IOCHK /CHECK IF IN ONE-AT-A-TIME MODE 1142 000717 1007 TAD VOSW /GET VERIFY-ONLY SWITCH 1143 000720 7640 SZA CLA /SKIP IF COPYING 1144 000721 5766 JMP I (VCMPERROR) /JUMP IF VERIFYING 1145 000722 4576 JMS I [ESCRIBE] /TELL THEM THEY HAVE 1146 000723 4211 CERMSG /A DATA COMPARE ERROR 1147 000724 5310 JMP CMECOMMON /CONTINUE THERE 1148 000725 0000 DISPLAY,.-. /BLOCK DISPLAY ROUTINE 1149 000726 3005 DCA VERCNT /SAVE PASSED BLOCK NUMBER 1150 000727 1005 TAD VERCNT /GET IT BACK 1151 000730 6163 IACS /LOAD LINC-8 "S" REGISTER 1152 000731 7200 CLA /CLEAN UP 1153 000732 6141 LINC /GOT L...MODE IF PDP-12, STOP THE TAPES IF LINC-8 1154 000733 1000 LDA; VERCNT /GET THE PASSED VALUE AGAIN 000734 0005 1155 000735 0354 SCR 14 /PUT INTO MQ 1156 000736 0002 PDP /BACK TO GOODY MODE 1157 000737 7200 CLA /CLEAN UP 1158 000740 1005 TAD VERCNT /GET IT AGAIN 1159 000741 7421 MQL /LOAD MQ DIRECTLY IF EAE OR PDP-8/E OR BETTER 1160 000742 7200 CLA /CLEAN UP IF PDP-8/L OR WORSE 1161 000743 5725 JMP I DISPLAY /RETURN 1162 1163 000744 0000 IOCHK, .-. /I/O MODE CHECK ROUTINE 1164 000745 7200 CLA /CLEAN UP 1165 000746 1042 TAD IOSW /GET CURRENT MODE 1166 000747 7640 SZA CLA /SKIP IF NORMAL MODE NOW 1167 000750 5744 JMP I IOCHK /RETURN IF ALREADY IN ONE-AT-A-TIME MODE 1168 000751 1047 TAD MAXIO /GET CURRENT MAXIMUM 1169 000752 7041 CIA /INVERT AND 1170 000753 3042 DCA IOSW /STORE AS CRAWL COUNT 1171 000754 7201 NL0001 /SETUP FOR 1172 000755 3072 DCA UPDATE /MINIMUM UPDATE 1173 000756 5774 JMP I (IOLOOP) /START AGAIN WITH MINIMUM TRANSFER THIS TIME 1174 1175 000766 1000 PAGE 000767 0523 000770 0444 000771 0446 000772 0433 000773 4254 000774 0400 000775 2057 000776 2111 000777 0420 1176 / COMES HERE ON DATA COMPARE ERROR IN VERIFY-ONLY MODE. 1177 1178 001000 4576 VCMPERR,JMS I [ESCRIBE] /TELL THEM ABOUT 1179 001001 4227 CMERMSG /DATA COMPARE ERROR 1180 001002 1100 TAD INBLK /GET CURRENT INPUT BLOCK 1181 001003 3272 DCA PRTOFFSET /SAVE IT 1182 001004 4256 JMS GBSETUP /SETUP OFFSET AND PAGE COUNT 1183 001005 1041 TAD ININFO /GET INPUT BLOCK SIZE WORD 1184 001006 4560 JMS I [MOD] /MODULATE PAGE COUNT PER THIS DEVICE 1185 001007 1100 TAD INBLK /GET CURRENT INPUT BLOCK 1186 001010 1055 TAD QUO /ADD ON BLOCK OFFSET 1187 001011 3100 DCA INBLK /STORE IN ARGUMENT LIST 1188 001012 4571 JMS I [DVBLPRT] /PRINT OUT THE 1189 001013 0073 INDNUM-1 /INPUT DEVU:BBBB 1190 001014 1272 TAD PRTOFFSET /RESTORE THE ORIGINAL 1191 001015 3100 DCA INBLK /INPUT BLOCK 1192 001016 4272 JMS PRTOFFSET /PRINT RELATIVE WORD OFFSET 1193 001017 1010 TAD XR1 /GET INPUT POINTER 1194 001020 4311 JMS PRTVALUE /PRINT CONTENTS OF OFFENDING WORD 1195 001021 0512 CMPLUP /CDF INPUT FIELD THERE 1196 001022 1157 TAD [" &177] /GET A 1197 001023 4570 JMS I [P7CH] /PRINT IT 1198 001024 1157 TAD [" &177] /GET A 1199 001025 4570 JMS I [P7CH] /PRINT IT 1200 001026 1105 TAD OUTBLK /GET CURRENT OUTPUT (SECOND INPUT) BLOCK 1201 001027 3272 DCA PRTOFFSET /SAVE IT 1202 001030 4256 JMS GBSETUP /SETUP OFFSET AND PAGE COUNT 1203 001031 1052 TAD OTINFO /GET OUTPUT (SECOND INPUT) BLOCK SIZE WORD 1204 001032 4560 JMS I [MOD] /MODULATE PAGE COUNT PER THIS DEVICE 1205 001033 1105 TAD OUTBLK /GET CURRENT OUTPUT (SECOND INPUT) BLOCK 1206 001034 1055 TAD QUO /ADD ON BLOCK OFFSET 1207 001035 3105 DCA OUTBLK /STORE IN ARGUMENT LIST 1208 001036 4571 JMS I [DVBLPRT] /PRINT OUT THE OUTPUT 1209 001037 0100 OTDNUM-1 /(SECOND INPUT) DEVU:BBBB 1210 001040 1272 TAD PRTOFFSET /RESTORE THE ORIGINAL 1211 001041 3105 DCA OUTBLK /OUTPUT (SECOND INPUT) BLOCK 1212 001042 4272 JMS PRTOFFSET /PRINT RELATIVE WORD OFFSET 1213 001043 1011 TAD XR2 /GET OUTPUT (SECOND INPUT) POINTER 1214 001044 4311 JMS PRTVALUE /PRINT CONTENTS OF OFFENDING WORD 1215 001045 0515 VERCDF /CDF OUTPUT (SECOND INPUT) FIELD THERE 1216 001046 4577 JMS I [CRLF] /DO A , 1217 001047 4574 JMS I [SCRIBE] /GIVE THEM THE NEXT BLOCK (OR WORD) MESSAGE 1218 001050 4366 WZAP1, SKPBMSG /**** /W **** SKPWMSG 1219 001051 4572 JMS I [YORNO] /GET RESPONSE 1220 001052 7410 SKP /SKIP IF YES 1221 001053 5777 JMP I (FAILURE) /JUMP IF NO 1222 001054 3020 DCA BCSW /INDICATE ERRORS 1223 001055 5773 JMP I WZAP2 /GO DO NEXT 1224 001056 0000 GBSETUP,.-. /OFFSET AND PAGE COUNT SETUP ROUTINE 1225 001057 1103 TAD OUTADR /GET BUFFER ADDRESS 1226 001060 7041 CIA /-BUFFER ADDRESS 1227 001061 1010 TAD XR1 /NOW HAVE RELATIVE OFFSET 1228 001062 3045 DCA LO /SAVE IT FOR OTHERS 1229 001063 1045 TAD LO /GET IT BACK 1230 001064 0164 AND [7600] /JUST PAGE BITS 1231 001065 7106 CLL RTL;RTL;RTL /TURN INTO PAGE COUNT 001066 7006 001067 7006 1232 001070 3002 DCA GBTEMP /SETUP MODULATION ROUTINE ARGUMENT 1233 001071 5656 JMP I GBSETUP /RETURN 1234 1235 001072 0000 PRTOFFS,.-. /PRINT BLOCK OFFSET ROUTINE 1236 001073 1376 TAD (".&177) /GET A "." 1237 001074 4570 JMS I [P7CH] /PRINT IT 1238 001075 1002 TAD GBTEMP /GET WHOLE PAGE COUNT 1239 001076 7112 CLL RTR;RTR;RTR /TURN INTO WORD COUNT 001077 7012 001100 7012 1240 001101 7041 CIA /NEGATE 1241 001102 1045 TAD LO /NOW HAVE RELATIVE OFFSET 1242 001103 4567 JMS I [PRTOCT] /PRINT IT 1243 001104 1157 TAD [" &177] /GET A 1244 001105 4570 JMS I [P7CH] /PRINT IT 1245 001106 1375 TAD ("/&177) /GET A "/" 1246 001107 4570 JMS I [P7CH] /PRINT IT 1247 001110 5672 JMP I PRTOFFSET /RETURN 1248 1249 001111 0000 PRTVALU,.-. /PRINT CONTENTS ROUTINE 1250 001112 3033 DCA HI /SAVE PASSED ADDRESS 1251 001113 1711 TAD I PRTVALUE /GET ADDRESS OF CDF INSTRUCTION 1252 001114 3320 DCA PRTCDF /STASH IT 1253 001115 1720 TAD I PRTCDF /GET THE CDF INSTRUCTION 1254 001116 3320 DCA PRTCDF /STORE IN-LINE 1255 001117 2311 ISZ PRTVALUE /BUMP PAST ARGUMENT 1256 001120 0000 PRTCDF, .-. /WILL BE CDF BUFFER FIELD 1257 001121 1433 TAD I HI /GET THE WORD 1258 001122 6201 CDF 00 /BACK TO FIELD ZERO 1259 001123 4567 JMS I [PRTOCT] /PRINT THE VALUE 1260 001124 5711 JMP I PRTVALUE /RETURN 1261 / SPECIAL CHARACTER TABLE. 1262 1263 001125 7601 CHTBL, -177; BACKSP / 001126 3275 1264 001127 7602 -176; GOTESC /176 001130 3240 1265 001131 7603 -175; GOTESC /175 001132 3240 1266 001133 7641 -137; BACKSP /UNDERSCORE 001134 3275 1267 001135 7745 -33; GOTESC / 001136 3240 1268 001137 7753 -"U!300;DELETL /<^U> 001140 3246 1269 001141 7763 -"M!300;GOTCR / 001142 3254 1270 001143 7766 -"J!300;LFVIEW / 001144 3257 1271 001145 7767 -"I!300;GOTHT / 001146 3221 1272 001147 7770 -"H!300;BACKSP / 001150 3275 1273 001151 0000 0 /THIS ENDS THE LIST 1274 1275 / SPECIAL RUBOUT CHARACTER TABLE. 1276 1277 001152 7601 RUBTBL, -177; RUBAGN / 001153 3320 1278 001154 7641 -137; RUBAGN /UNDERSCORE 001155 3320 1279 001156 7770 -"H!300;RUBAGN / 001157 3320 1280 001160 0000 0 /THIS ENDS THE LIST 1281 1282 / FIELD BUFFER AVAILABILITY TABLE; COPIED TO WORK AREA FOR DYNAMIC ALLOCATION. 1283 1284 001161 0010 FIELD0, SBOOT-AVAIL%200 /FIELD ZERO AVAILABLE BUFFER 1285 001162 0000 FIELD1, 0 /**** UPDATED IF AVAILABLE **** 1286 001163 0000 FIELD2, 0 /**** UPDATED IF AVAILABLE **** 1287 001164 0000 FIELD3, 0 /**** UPDATED IF AVAILABLE **** 1288 001165 0000 FIELD4, 0 /**** UPDATED IF AVAILABLE **** 1289 1290 / FIELD ALLOCATION WORK AREA. 1291 1292 001166 0000 WORK0, ZBLOCK 5 /WORK AREA 001167 0000 001170 0000 001171 0000 001172 0000 1293 1294 WORKEND=. /END OF WORK AREA 1295 1296 001173 0523 WZAP2, VERPAST /**** /W **** NEXTWD 1297 1298 001175 0057 PAGE 001176 0056 001177 0620 1299 / CHARACTER UNPACKING ROUTINE FOR P?S/8 INPUT FILES. INPUT REVERTS TO CONSOLE 1300 / AT . 1301 1302 001200 0000 GIVCHR, .-. /GIVE ME A CHARACTER ROUTINE 1303 001201 5602 JMP I GIVTRIM /GO WHERE YOU HAVE TO 1304 1305 001202 1226 GIVTRIM,GIVEOF /EXIT ROUTINE; INITIALIZED FOR FIRST FILE 1306 001203 0156 AND [77] /JUST SIX-BIT 1307 001204 7450 SNA /? 1308 001205 5222 JMP GIVEOL /YES 1309 001206 1377 TAD (-"$!200) /IS IT "$"? 1310 001207 7450 SNA /SKIP IF OTHER 1311 001210 1376 TAD (33-"$+" -1-100-37) /CONVERT "$" TO 1312 001211 1375 TAD (-37+"$-200) /IS IT ? 1313 001212 7450 SNA /SKIP IF NOT 1314 001213 1374 TAD ("I&37-100-37) /CONVERT TO ASCII 1315 001214 7510 SPA /IS IT ALPHABETIC? 1316 001215 1155 TAD [100] /YES, ADD ON ASCII BIT 1317 001216 1373 TAD (37) /RESTORE THE CHARACTER TO SEVEN-BIT 1318 001217 3015 GIVEXIT,DCA INCHAR /SAVE IT 1319 001220 1015 TAD INCHAR /GET IT BACK 1320 001221 5600 JMP I GIVCHR /RETURN TO MAIN CALLER 1321 1322 001222 1372 GIVEOL, TAD (GVRSET) /SETUP THE 1323 001223 3202 DCA GIVTRIM /ALIGNED EXIT 1324 001224 1154 TAD ["M&37] /GET A 1325 001225 5217 JMP GIVEXIT /CONTINUE THERE 1326 1327 001226 2031 GIVEOF, ISZ GFLPTR /BUMP TO NEXT FILE 1328 001227 1431 TAD I GFLPTR /GET THE FILE ARGUMENT 1329 001230 7450 SNA /END OF LIST? 1330 001231 5267 JMP GIVEOTEXT /YES, GO FINISH UP 1331 001232 0162 AND [7770] /NO, ISOLATE BLOCK BITS 1332 001233 3262 DCA GIVBLK /STORE IN-LINE 1333 001234 1431 TAD I GFLPTR /GET FILE ARGUMENT AGAIN 1334 001235 0153 AND [7] /JUST UNIT BITS 1335 001236 1155 TAD [1^100] /MAKE INTO ONE BLOCK READ 1336 001237 3261 DCA GIVFUN /STORE IN-LINE 1337 001240 5257 JMP GIVEOB /CONTINUE THERE 1338 001241 1432 GIVBAK, TAD I GIVPTR /GET A PAIR 1339 001242 7450 SNA /? 1340 001243 5226 JMP GIVEOF /YES 1341 001244 7012 RTR;RTR;RTR /MOVE DOWN THE HIGH-ORDER 001245 7012 001246 7012 1342 001247 4202 JMS GIVTRIM /AND CONVERT IT TO SEVEN-BIT 1343 001250 1432 TAD I GIVPTR /GET IT AGAIN 1344 001251 4202 JMS GIVTRIM /CONVERT LOW-ORDER TO SEVEN-BIT 1345 001252 2032 GVRSET, ISZ GIVPTR /BUMP TO NEXT 1346 001253 1032 TAD GIVPTR /GET CURRENT POINTER 1347 001254 1371 TAD (-GIVBUFFER-200) /COMPARE TO LIMIT 1348 001255 7640 SZA CLA /SKIP IF BUFFER EXCEEDED 1349 001256 5241 JMP GIVBAK /ELSE KEEP GOING 1350 001257 4552 GIVEOB, JMS I [SYSIO] /CALL I/O ROUTINES 1351 001260 1400 GIVBPT, GIVBUFFER /TRANSFER ADDRESS 1352 001261 0100 GIVFUN, 1^100+.-. /UNIT BITS WILL BE FILLED IN 1353 001262 0000 GIVBLK, .-. /BLOCK NUMBER WILL BE FILLED IN 1354 001263 2262 ISZ GIVBLK /BUMP FOR NEXT TIME 1355 001264 1260 TAD GIVBPTR/(GIVBUFFER) /RESET THE 1356 001265 3032 DCA GIVPTR /BUFFER POINTER 1357 001266 5241 JMP GIVBAK /KEEP GOING 1358 1359 001267 1370 GIVEOTX,TAD (JMS I [INPUT]) /RESTORE THE 1360 001270 3767 DCA I (GETINP) /INPUT ROUTINE 1361 001271 5767 JMP I (GETINP) /CONTINUE THERE 1362 1363 / COMMAND INPUT BUFFER. 1364 1365 001272 0000 COMBUFF,ZBLOCK 74 /COMMAND STORED HERE 001273 0000 001274 0000 001275 0000 001276 0000 001277 0000 001300 0000 001301 0000 001302 0000 001303 0000 001304 0000 001305 0000 001306 0000 001307 0000 001310 0000 001311 0000 001312 0000 001313 0000 001314 0000 001315 0000 001316 0000 001317 0000 001320 0000 001321 0000 001322 0000 001323 0000 001324 0000 001325 0000 001326 0000 001327 0000 001330 0000 001331 0000 001332 0000 001333 0000 001334 0000 001335 0000 001336 0000 001337 0000 001340 0000 001341 0000 001342 0000 001343 0000 001344 0000 001345 0000 001346 0000 001347 0000 001350 0000 001351 0000 001352 0000 001353 0000 001354 0000 001355 0000 001356 0000 001357 0000 001360 0000 001361 0000 001362 0000 001363 0000 001364 0000 001365 0000 1366 001366 0000 COMBEND,0 /ROOM FOR FINAL DELIMITER 1367 1368 001367 3205 PAGE 001370 4551 001371 6200 001372 1252 001373 0037 001374 7652 001375 0005 001376 7667 001377 7734 1369 1370 GIVBUFF=. /FILE INPUT BUFFER 1371 *GIVBUFFER+200 /GET PAST FILE BUFFER 1372 1373 / SUPPORT ROUTINES. 1374 1375 001600 0000 INPUT, .-. /INPUT ROUTINE 1376 001601 4206 JMS CHKUP /CHECK FOR INPUT 1377 001602 1015 TAD INCHAR /WAS THERE ANY? 1378 001603 7450 SNA /SKIP IF SO 1379 001604 5201 JMP .-3 /ELSE WAIT FOR IT 1380 001605 5600 JMP I INPUT /RETURN 1381 1382 001606 0000 CHKUP, .-. /CHECK FOR <^P>, <^C>, ETC. 1383 001607 4233 JMS CTLCTST /TEST FOR <^C>, ETC. 1384 001610 7440 SZA /SKIP IF NOTHING THERE 1385 001611 1377 TAD (-"Q!300) /ELSE COMPARE TO <^Q> 1386 001612 7450 SNA /SKIP IF SOMETHING ELSE 1387 001613 5231 JMP CHKCLR /IGNORE <^Q> 1388 001614 7001 IAC /TAD (-"P+"Q)/IS IT <^P>? 1389 001615 7450 SNA /SKIP IF NOT 1390 001616 5272 JMP PHIT /JUMP IF SO 1391 001617 1376 TAD (-"R+"P) /IS IT <^R>? 1392 001620 7450 SNA /SKIP IF NOT 1393 001621 5550 JMP I [RHIT] /JUMP IF SO 1394 001622 1147 TAD [-"S+"R] /IS IT <^S>? 1395 001623 7640 SZA CLA /SKIP IF SO 1396 001624 5606 JMP I CHKUP /RETURN IF NOT 1397 001625 4233 JMS CTLCTST /WAIT FOR <^Q> 1398 001626 1377 TAD (-"Q!300) /IS IT <^Q>? 1399 001627 7640 SZA CLA /SKIP IF SO 1400 001630 5225 JMP .-3 /GO BACK IF NOT 1401 001631 3015 CHKCLR, DCA INCHAR /CLEAR INPUT BUFFER 1402 001632 5606 JMP I CHKUP /RETURN 1403 1404 001633 0000 CTLCTST,.-. /CHECK FOR <^C>, ETC. 1405 001634 7200 CLA /CLEAN UP 1406 001635 6031 CHKKSF, KSFIOT /**** CONSOLE **** CIF MCS+10 1407 001636 5633 CHKJMP, JMP I CTLCTST /**** CONSOLE **** JMS INCON 1408 001637 6034 CHKKRS, KRSIOT/OR KRBIOT /**** CONSOLE **** JMP I CTLCTST 1409 001640 0146 AND [177] /JUST SEVEN BITS 1410 001641 3015 DCA INCHAR /SAVE IT 1411 001642 7346 NL7775 /-3 1412 001643 1015 TAD INCHAR /COMPARE TO LATEST 1413 001644 7450 SNA /SKIP IF NOT <^C> 1414 001645 2775 ISZ I (SCRSIZE) /ELSE SET SOFT INDICATOR 1415 001646 7750 SPA SNA CLA /SKIP IF <^D> OR HIGHER 1416 001647 5564 JMP I [SBOOT] /ELSE GO SAVE LAST BUFFER AND LEAVE 1417 001650 6032 CHKKCC, KCCIOT/OR 0000 /**** CONSOLE **** 0000 1418 001651 1015 TAD INCHAR /GET THE CHARACTER 1419 001652 5633 JMP I CTLCTST /RETURN 1420 001653 0000 P7CH, .-. /SEVEN-BIT OUTPUT ROUTINE 1421 001654 3367 DCA P7TEMP /SAVE PASSED VALUE 1422 001655 4206 P7AGN, JMS CHKUP /CHECK FOR <^C>, ETC. 1423 001656 1367 TAD P7TEMP /GET THE CHARACTER 1424 001657 4263 JMS P7OUT /TRY TO OUTPUT IT 1425 001660 5255 JMP P7AGN /CHECK INPUT WHILE WAITING 1426 001661 4206 JMS CHKUP /CHECK FOR <^C>, ETC. 1427 001662 5653 JMP I P7CH /RETURN 1428 1429 001663 0000 P7OUT, .-. /SEVEN BIT I/O ROUTINE 1430 001664 6041 P7TSF, TSFIOT /**** CONSOLE **** CIF MCS+10 1431 001665 5663 P7JMP, JMP I P7OUT /**** CONSOLE **** JMS OUTCON 1432 001666 6046 P7TLS, TLSIOT /**** CONSOLE **** JMP I P7OUT 1433 001667 7600 CLA!400 /CLEAN UP 1434 001670 2263 ISZ P7OUT /BUMP RETURN ADDRESS 1435 001671 5663 JMP I P7OUT /RETURN 1436 1437 / COMES HERE IF <^P> HIT. 1438 1439 001672 1145 PHIT, TAD ["^&177] /GET AN "^" 1440 001673 4263 JMS P7OUT /PRINT IT 1441 001674 5273 JMP .-1 /WAIT FOR IT 1442 001675 1374 TAD ("P&177) /GET A "P" 1443 001676 4263 JMS P7OUT /PRINT IT 1444 001677 5276 JMP .-1 /WAIT FOR IT 1445 001700 5563 JMP I [RESTART] /RESTART 1446 1447 001701 0000 CRLF, .-. /, ROUTINE 1448 001702 7200 CLA /CLEAN UP FOR DIRTY CALLERS 1449 001703 1154 TAD ["M&37] /GET A 1450 001704 4570 JMS I [P7CH] /GO PRINT IT 1451 001705 1373 TAD ("J&37) /GET A 1452 001706 4570 JMS I [P7CH] /GO PRINT IT 1453 001707 5701 JMP I CRLF /RETURN 1454 1455 001710 0000 ESCRLF, .-. / SWITCH TEST ROUTINE 1456 001711 7200 CLA /CLEAN UP JUST IN CASE 1457 001712 1001 TAD ESCAPSW /GET INDICATOR 1458 001713 7700 SMA CLA /SKIP IF SET TO INITIAL VALUE 1459 001714 5710 JMP I ESCRLF /RETURN IF SET TO SECOND VALUE OR NOT SET AT ALL 1460 001715 7332 NL2000 /SET SECOND VALUE 1461 001716 3001 DCA ESCAPSW /STORE NEW INDICATOR FOR NEXT TIME 1462 001717 4577 JMS I [CRLF] /DO A , NOW 1463 001720 5710 JMP I ESCRLF /RETURN 1464 1465 / ROTATE THREE LEFT ROUTINE. 1466 1467 001721 0000 RTL3, .-. /ROTATE THREE LEFT 1468 001722 7106 CLL RTL;RAL /MOVE THREE TO THE LEFT 001723 7004 1469 001724 5721 JMP I RTL3 /RETURN 1470 / OCTAL PRINTOUT ROUTINE. 1471 1472 001725 0000 PRTOCT, .-. /OCTAL PRINT ROUTINE 1473 001726 3344 DCA LENSET /SAVE PASSED VALUE 1474 001727 1372 TAD (-4) /SETUP THE 1475 001730 3357 DCA VERCHK /DIGIT COUNT 1476 001731 1344 OCTLUP, TAD LENSET /GET THE VALUE 1477 001732 4544 JMS I [RTL3] /MOVE UP ONE DIGIT 1478 001733 3344 DCA LENSET /STORE BACK 1479 001734 1344 TAD LENSET /GET IT AGAIN 1480 001735 7004 RAL /ADJUST LATEST TO LOW-ORDER 1481 001736 0153 AND [7] /JUST LATEST DIGIT 1482 001737 1143 TAD ["0&177] /MAKE IT ASCII 1483 001740 4570 JMS I [P7CH] /PRINT IT 1484 001741 2357 ISZ VERCHK /DONE YET? 1485 001742 5331 JMP OCTLUP /NO, KEEP GOING 1486 001743 5725 JMP I PRTOCT /YES, RETURN 1487 1488 / DEVICE LENGTH SET ROUTINE; RETURNS ZERO LENGTH IF DEVICE IS "SYS" OR "NUL". 1489 1490 001744 0000 LENSET, .-. /DEVICE LENGTH ROUTINE 1491 001745 7440 SZA /IS IT DEVICE NUMBER ZERO (SYS)? 1492 001746 1147 TAD [-1] /NO, TRY DEVICE NUMBER ONE (NUL) 1493 001747 7450 SNA /SKIP IF NOT DEVICE "SYS" OR DEVICE "NUL" 1494 001750 5744 JMP I LENSET /JUST RETURN ZERO LENGTH 1495 001751 7001 IAC /RESTORE ORIGINAL VALUE 1496 001752 4544 JMS I [RTL3] /*10 1497 001753 1371 TAD (DTABLE+LOFFSET)/POINT AT LENGTH ELEMENT 1498 001754 3005 DCA VERCNT /STASH THE POINTER 1499 001755 1405 TAD I VERCNT /GET THE LENGTH 1500 001756 5744 JMP I LENSET /RETURN 1501 1502 001757 0000 VERCHK, .-. /CHECK IF VERIFYING ROUTINE 1503 001760 1007 TAD VOSW /GET VERIFY-ONLY SWITCH 1504 001761 7650 SNA CLA /SKIP IF VERIFYING 1505 001762 7332 NL2000 /ELSE SETUP /N BIT MASK 1506 001763 0573 AND I [SWMX] /GET /N BIT IF ALLOWED 1507 001764 7650 SNA CLA /SKIP IF /N SET AND NOT IN VERIFY-ONLY MODE 1508 001765 2357 ISZ VERCHK /BUMP RETURN IF /N NOT SET OR IN VERIFY-ONLY MODE 1509 001766 5757 JMP I VERCHK /RETURN EITHER WAY 1510 1511 001767 0000 P7TEMP, .-. /TEMPORARY FOR OUTPUT 1512 1513 001771 5204 PAGE 001772 7774 001773 0012 001774 0120 001775 7611 001776 7776 001777 7757 1514 / MESSAGE PRINTING ROUTINE WITH SPECIAL CONSIDERATION. 1515 1516 002000 0000 ESCRIBE,.-. /SCRIBE WITH ROUTINE 1517 002001 4542 JMS I [ESCRLF] /CHECK IF , NEEDED HERE 1518 002002 1200 TAD ESCRIBE /GET OUR CALLER 1519 002003 3205 DCA SCRIBE /MAKE IT THEIRS 1520 002004 7410 SKP /DON'T EXECUTE HEADER! 1521 1522 / MESSAGE PRINTING ROUTINE. 1523 1524 002005 0000 SCRIBE, .-. /MESSAGE PRINT ROUTINE 1525 002006 7200 CLA /JUST IN CASE 1526 002007 1605 TAD I SCRIBE /GET MESSAGE POINTER 1527 002010 3061 DCA SCRPTR /STASH IT 1528 002011 2205 ISZ SCRIBE /BUMP PAST ARGUMENT 1529 002012 1377 TAD (140) /INITIALIZE TO LOWER-CASE 1530 002013 3057 CASZP1, DCA SCRCASE /**** /U **** CLA!400 1531 002014 1461 SCRLUP, TAD I SCRPTR /GET LEFT HALF-WORD 1532 002015 7012 RTR;RTR;RTR /MOVE OVER 002016 7012 002017 7012 1533 002020 4225 JMS SCRPRNT /PRINT IT 1534 002021 1461 TAD I SCRPTR /GET RIGHT HALF-WORD 1535 002022 4225 JMS SCRPRNT /PRINT IT 1536 002023 2061 ISZ SCRPTR /BUMP TO NEXT PAIR 1537 002024 5214 JMP SCRLUP /KEEP GOING 1538 1539 002025 0000 SCRPRNT,.-. /CHARACTER PRINT ROUTINE 1540 002026 0156 AND [77] /JUST SIX-BIT 1541 002027 7450 SNA /END OF MESSAGE? 1542 002030 5605 JMP I SCRIBE /YES, RETURN TO ORIGINAL CALLER 1543 002031 3060 DCA SCRCHAR /NO, SAVE FOR NOW 1544 002032 1060 TAD SCRCHAR /GET IT BACK 1545 002033 1376 TAD (-"%!200) /IS IT "%"? 1546 002034 7450 SNA /SKIP IF NOT 1547 002035 5250 JMP SCRCRLF /JUMP IF IT MATCHES 1548 002036 1153 TAD [-"^+100+"%] /IS IT "^" 1549 002037 7650 SNA CLA /SKIP IF NOT 1550 002040 5252 JMP SCRFLIP /JUMP IF IT MATCHES 1551 002041 1060 TAD SCRCHAR /GET THE CHARACTER 1552 002042 0157 AND [40] /DOES CASE MATTER? 1553 002043 7650 SNA CLA /SKIP IF NOT 1554 002044 1057 TAD SCRCASE /ELSE GET PREVAILING CASE 1555 002045 1060 TAD SCRCHAR /GET THE CHARACTER 1556 002046 4570 JMS I [P7CH] /PRINT THE CHARACTER 1557 002047 5625 JMP I SCRPRNT /RETURN 1558 1559 002050 4577 SCRCRLF,JMS I [CRLF] /DO A , 1560 002051 5625 JMP I SCRPRNT /RETURN 1561 1562 002052 1057 SCRFLIP,TAD SCRCASE /GET CURRENT CASE 1563 002053 7041 CIA /INVERT IT 1564 002054 1375 TAD (140+100) /ADD SUM OF POSSIBLE VALUES 1565 002055 3057 CASZP2, DCA SCRCASE /**** /U **** CLA!400 1566 002056 5625 JMP I SCRPRNT /RETURN 1567 002057 0000 ASKRETR,.-. /ASK FOR RETRY ROUTINE 1568 002060 4574 JMS I [SCRIBE] /GIVE THEM 1569 002061 4346 RETMSG /THE RETRY REQUEST 1570 002062 4572 JMS I [YORNO] /GET RESPONSE 1571 002063 7410 SKP /YES, DON'T BUMP 1572 002064 2257 ISZ ASKRETRY /BUMP RETURN ADDRESS IF NO 1573 002065 5657 JMP I ASKRETRY /RETURN EITHER WAY 1574 1575 002066 0000 YORNO, .-. /YES OR NO ROUTINE 1576 002067 4551 YNAGN, JMS I [INPUT] /GET A CHARACTER 1577 002070 0374 AND (137) /MAKE IT CASE-LESS 1578 002071 1373 TAD (-"Y!200) /IS IT "Y"? 1579 002072 7450 SNA /SKIP IF NOT 1580 002073 5302 JMP ISYES /JUMP IF IT MATCHES 1581 002074 1372 TAD (-"N+"Y) /IS IT "N"? 1582 002075 7650 SNA CLA /SKIP IF NOT 1583 002076 5305 JMP ISNO /JUMP IF IT MATCHES 1584 002077 1153 TAD ["G&37] /GET A 1585 002100 4570 JMS I [P7CH] /RING IT 1586 002101 5267 JMP YNAGN /TRY AGAIN 1587 1588 002102 4574 ISYES, JMS I [SCRIBE] /TELL THEM 1589 002103 4516 YESMSG /YES 1590 002104 5666 JMP I YORNO /TAKE FIRST RETURN 1591 1592 002105 4574 ISNO, JMS I [SCRIBE] /TELL THEM 1593 002106 4314 NOMSG /NO 1594 002107 2266 ISZ YORNO /BUMP RETURN ADDRESS 1595 002110 5666 JMP I YORNO /TAKE SKIP RETURN 1596 1597 002111 0000 REPORT, .-. /ERROR REPORTING ROUTINE 1598 002112 4574 JMS I [SCRIBE] /TELL THEM 1599 002113 4275 EONMSG /COMMON MESSAGE 1600 002114 1711 TAD I REPORT /GET IN-LINE POINTER 1601 002115 3317 DCA REPINLINE /STORE IN-LINE 1602 002116 4571 JMS I [DVBLPRT] /PRINT "DEVU:BLOCK" 1603 002117 0000 REPINLI,.-. /WILL BE PASSED POINTER ARGUMENT 1604 002120 1371 TAD ("!&177) /GET A "!" 1605 002121 4570 JMS I [P7CH] /PRINT IT 1606 002122 4577 JMS I [CRLF] /DO A , 1607 002123 2311 ISZ REPORT /BUMP PAST POINTER ARGUMENT 1608 002124 5711 JMP I REPORT /RETURN 1609 002125 0000 MOD, .-. /MODULATION ROUTINE 1610 002126 4541 JMS I [SIZESETUP] /SETUP DIVISOR FROM PASSED INFORMATION WORD 1611 002127 1002 TAD GBTEMP /GET DIVIDEND 1612 002130 4540 JMS I [DIVIDE] /DIVIDE BY DIVISOR 1613 002131 7200 CLA /CLEAN UP 1614 002132 1030 TAD DIVSOR /GET THE DIVISOR 1615 002133 7041 CIA /INVERT IT 1616 002134 3002 DCA GBTEMP /USE FOR COUNTING UP 1617 002135 1055 TAD QUO /GET QUOTIENT 1618 002136 2002 ISZ GBTEMP /DONE ENOUGH? 1619 002137 5335 JMP .-2 /NO, GO GET IT AGAIN 1620 002140 3002 DCA GBTEMP /SAVE MODULATED RESULT 1621 002141 5725 JMP I MOD /RETURN 1622 1623 002142 0000 GETSIZE,.-. /GET SIZE OF LATEST TRANSFER IN PAGES 1624 002143 4541 JMS I [SIZESETUP] /SETUP DIVISOR FROM PASSED INFORMATION WORD 1625 002144 1064 TAD SIZINFO /GET SIZE FACTOR 1626 002145 3002 DCA GBTEMP /SETUP THE COUNTER 1627 002146 1072 TAD UPDATE /GET BLOCK UPDATE FACTOR 1628 002147 2002 ISZ GBTEMP /DONE ENOUGH 1629 002150 5346 JMP .-2 /NO, DO IT AGAIN 1630 002151 3002 DCA GBTEMP /SAVE IT 1631 002152 1002 TAD GBTEMP /GET IT BACK 1632 002153 4540 JMS I [DIVIDE] /DIVIDE BY SETUP DIVISOR 1633 002154 3742 DCA I GETSIZE /STORE QUOTIENT 1634 002155 2342 ISZ GETSIZE /BUMP PAST ARGUMENT 1635 002156 1056 TAD REM /GET REMAINDER 1636 002157 7041 CIA /INVERT IT 1637 002160 7440 SZA /SKIP IF REMAINDER IS ZERO 1638 002161 1030 TAD DIVSOR /ELSE CREATE ROUNDUP FACTOR 1639 002162 1002 TAD GBTEMP /GET ORIGINAL PAGE COUNT 1640 002163 7106 CLL RTL;RTL;RTL /TURN INTO PAGE BITS (FOR FUNCTION WORD) 002164 7006 002165 7006 1641 002166 0137 AND [3700] /JUST PAGE BITS 1642 002167 5742 JMP I GETSIZE /RETURN WITH ADJUSTED BLOCKS*(PAGES/BLOCK) 1643 1644 002171 0041 PAGE 002172 0013 002173 7647 002174 0137 002175 0240 002176 7733 002177 0140 1645 / BLOCK COUNT CALCULATION ROUTINE. 1646 1647 002200 0000 BLKCALC,.-. /BLOCK COUNT CALCULATION ROUTINE 1648 002201 4541 JMS I [SIZESETUP] /CALCULATE DIVISOR FROM PASSED INFORMATION WORD 1649 002202 3045 DCA LO /CLEAR LOW-ORDER 1650 002203 3033 DCA HI /CLEAR HIGH-ORDER 1651 002204 1064 TAD SIZINFO /GET PREVAILING BLOCK-SIZE 1652 002205 3002 DCA GBTEMP /USE AS COUNTER IN MULTIPLYING 1653 002206 1043 MUYLUP, TAD LENGTH /GET COPY LENGTH (NEGATED) 1654 002207 7141 CLL CIA /WANT POSITIVE FORM (LINK SETS IF 4K) 1655 002210 1045 TAD LO /ADD ON LOW-ORDER 1656 002211 3045 DCA LO /STORE BACK 1657 002212 7004 RAL /GET CARRY 1658 002213 1033 TAD HI /ADD ON HIGH-ORDER 1659 002214 3033 DCA HI /STORE BACK 1660 002215 2002 ISZ GBTEMP /DONE ENOUGH? 1661 002216 5206 JMP MUYLUP /NO, KEEP GOING 1662 1663 / NOW HAVE TOTAL PAGES IN HI, LO. 1664 1665 002217 3055 DCA QUO /CLEAR LOW-ORDER QUOTIENT 1666 002220 3056 DCA REM /CLEAR HIGH-ORDER QUOTIENT 1667 002221 1030 DVILUP, TAD DIVSOR /GET LOW-ORDER DIVISOR 1668 002222 7141 CLL CIA /WANT NEGATIVE FORM WITH CLEAR LINK 1669 002223 1045 TAD LO /SUBTRACT FROM LOW-ORDER 1670 002224 3045 DCA LO /STORE BACK LOW-ORDER 1671 002225 7004 RAL /GET CARRY 1672 002226 1147 TAD [7777] /ADD ON HIGH-ORDER DIVISOR 1673 002227 1033 TAD HI /SUBTRACT FROM HIGH-ORDER 1674 002230 3033 DCA HI /STORE BACK 1675 002231 7420 SNL /SKIP IF MORE TO DO 1676 002232 5237 JMP DIVDONE /JUMP IF DONE 1677 002233 2055 ISZ QUO /BUMP UP LOW-ORDER QUOTIENT 1678 002234 7410 SKP /SKIP NEXT IF NO OVERFLOW 1679 002235 2056 ISZ REM /ELSE BUMP HIGH-ORDER QUOTIENT 1680 002236 5221 JMP DVILUP /KEEP GOING 1681 1682 002237 1045 DIVDONE,TAD LO /GET CURRENT LOW-ORDER 1683 002240 1030 TAD DIVSOR /RESTORE ONE DIVISOR'S WORTH 1684 002241 7640 SZA CLA /SKIP IF DIVIDE WAS EXACT 1685 002242 2055 ISZ QUO /ELSE ROUNDUP LOW-ORDER QUOTIENT 1686 002243 7410 SKP /SKIP NEXT IF NO OVERFLOW 1687 002244 2056 ISZ REM /ELSE BUMP HIGH-ORDER QUOTIENT 1688 002245 7340 NL7777 CLL /SET BACKUP FACTOR WITH CLEAR LINK 1689 002246 1055 TAD QUO /GET LOW-ORDER QUOTIENT 1690 002247 3055 DCA QUO /STORE BACK 1691 002250 7004 RAL /GET CARRY 1692 002251 1147 TAD [7777] /ADD ON HIGH-ORDER BACKUP FACTOR 1693 002252 1056 TAD REM /ADD ON HIGH-ORDER QUOTIENT 1694 002253 7640 SZA CLA /SKIP IF QUOTIENT-1 IS LESS THAN 4K 1695 002254 5257 JMP OVFL /JUMP IF NOT 1696 002255 1055 TAD QUO /GET LOW-ORDER QUOTIENT-1 1697 002256 5600 JMP I BLKCALCULATE /RETURN 1698 / COMES HERE IF CALCULATION IS TOO LARGE. 1699 1700 002257 4576 OVFL, JMS I [ESCRIBE] /TELL THEM 1701 002260 5112 OVFLMSG /TRANSFER IS IMPOSSIBLY LARGE 1702 002261 5563 JMP I [RESTART] /RESTART 1703 1704 / DEVICE NAME-UNIT-":"-BLOCK PRINT ROUTINE. 1705 1706 002262 0000 DVBLPRT,.-. /"DEVU:BLOCK" PRINT ROUTINE 1707 002263 1662 TAD I DVBLPRT /GET IN-LINE POINTER 1708 002264 3012 DCA XR3 /STASH IT 1709 002265 1412 TAD I XR3 /GET THE DEVICE NUMBER 1710 002266 4544 JMS I [RTL3] /*10 1711 002267 1377 TAD (DTABLE-1) /POINT AT 1712 002270 3013 DCA XR4 /DEVICE NAME 1713 002271 1413 TAD I XR4 /GET FIRST DEVICE NAME CHARACTER 1714 002272 4570 JMS I [P7CH] /PRINT IT 1715 002273 1413 TAD I XR4 /GET SECOND DEVICE NAME CHARACTER 1716 002274 4570 JMS I [P7CH] /PRINT IT 1717 002275 1413 TAD I XR4 /GET THIRD DEVICE NAME CHARACTER 1718 002276 4570 JMS I [P7CH] /PRINT IT 1719 002277 1412 TAD I XR3 /GET THE UNIT 1720 002300 1143 TAD ["0&177] /MAKE IT ASCII 1721 002301 4570 JMS I [P7CH] /PRINT IT 1722 002302 1136 TAD [":&177] /GET A ":" 1723 002303 4570 JMS I [P7CH] /PRINT IT 1724 002304 2012 ISZ XR3 /BUMP TO ADDRESS 1725 002305 2012 ISZ XR3 /BUMP TO FUNCTION WORD 1726 002306 1412 TAD I XR3 /GET THE BLOCK NUMBER 1727 002307 4567 JMS I [PRTOCT] /PRINT IT 1728 002310 2262 ISZ DVBLPRT /BUMP PAST POINTER ARGUMENT 1729 002311 5662 JMP I DVBLPRT /RETURN 1730 1731 002312 0000 SIZESET,.-. /BLOCK-SIZE SETUP ROUTINE 1732 002313 0164 AND [7600] /JUST BLOCK-SIZE BITS 1733 002314 7106 CLL RTL;RTL;RTL /MOVE DOWN 002315 7006 002316 7006 1734 002317 7001 IAC /MAKE ORIGIN ONE 1735 002320 3030 DCA DIVSOR /STORE AS DIVISOR 1736 002321 5712 JMP I SIZESETUP /RETURN 1737 002322 0000 DMATCH, .-. /DEVICE NAME MATCH ROUTINE 1738 002323 3026 DCA DEVNUMBER /CLEAR DEVICE NUMBER 1739 002324 1376 TAD (DTABLE) /INITIALIZE THE POINTER TO 1740 002325 3025 DMAGAIN,DCA DEVLATEST /LATEST TABLE ENTRY 1741 002326 4535 JMS I [NAMSETUP] /SETUP NAME PARAMETERS 1742 002327 1025 TAD DEVLATEST /GET LATEST TRIAL POINTER 1743 002330 3027 DCA DEVPTR /SET IT UP 1744 002331 1404 DMALUP, TAD I NAMPTR /GET A NAME WORD 1745 002332 7041 CIA /INVERT FOR TEST 1746 002333 1427 TAD I DEVPTR /COMPARE TO TABLE ENTRY WORD 1747 002334 7640 SZA CLA /SKIP IF IT MATCHES 1748 002335 5344 JMP DMDIFFERENT /JUMP IF NOT 1749 002336 2004 ISZ NAMPTR /BUMP TO NEXT NAME WORD 1750 002337 2027 ISZ DEVPTR /BUMP TO NEXT TABLE WORD 1751 002340 2050 ISZ NAMCNT /CHECKED ALL YET? 1752 002341 5331 JMP DMALUP /NO, GO BACK 1753 002342 1026 TAD DEVNUMBER /GET RELATIVE TABLE ENTRY NUMBER 1754 002343 5722 JMP I DMATCH /RETURN 1755 1756 002344 1425 DMDIFFE,TAD I DEVLATEST /GET LATEST ENTRY 1757 002345 7640 SZA CLA /SKIP IF AT END OF TABLE 1758 002346 5351 JMP DMNEXT /ELSE KEEP GOING 1759 002347 7240 NL7777 /SET BAD VALUE 1760 002350 5722 JMP I DMATCH /RETURN 1761 1762 002351 2026 DMNEXT, ISZ DEVNUMBER /BUMP COUNT TO NEXT ENTRY 1763 002352 1025 TAD DEVLATEST /GET LATEST POINTER 1764 002353 1134 TAD [10] /BUMP TO NEXT ENTRY 1765 002354 5325 JMP DMAGAIN /CONTINUE THERE 1766 1767 002355 0000 DIVIDE, .-. /DIVIDE ROUTINE 1768 002356 3056 DCA REM /SAVE DIVIDEND 1769 002357 3055 DCA QUO /CLEAR QUOTIENT 1770 002360 1056 TAD REM /GET DIVIDEND BACK 1771 002361 7161 STL CIA /INVERT 1772 002362 7410 SKP /DON'T BUMP FIRST TIME 1773 002363 2055 DIVLUP, ISZ QUO /BUMP UP QUOTIENT 1774 002364 1030 TAD DIVSOR /ADD ON DIVISOR 1775 002365 7470 SNA SZL /UNDERFLOW? 1776 002366 5363 JMP DIVLUP /NO, KEEP GOING 1777 002367 7041 CIA /YES, INVERT IT BACK 1778 002370 1030 TAD DIVSOR /RESTORE LOST VALUE 1779 002371 3056 DCA REM /SAVE AS REMAINDER 1780 002372 1055 TAD QUO /GET THE QUOTIENT 1781 002373 5755 JMP I DIVIDE /RETURN 1782 1783 002376 5200 PAGE 002377 5177 1784 / BLOCK COMMAND DECODER ROUTINE. 1785 1786 / CALL WITH: 1787 1788 / JMS I (GETCMD) /CALL ROUTINE 1789 1790 / RETURNS: 1791 1792 / INBLK /FIRST INPUT BLOCK 1793 / INDNUM /INPUT DEVICE NUMBER 1794 / ININFO /INPUT HANDLER BLOCK-SIZE INFORMATION WORD 1795 / INUNIT /INPUT DEVICE UNIT 1796 / OTDNUM /OUTPUT DEVICE NUMBER 1797 / OTINFO /OUTPUT HANDLER BLOCK-SIZE INFORMATION WORD 1798 / OTUNIT /OUTPUT DEVICE UNIT 1799 / OUTBLK /FIRST OUTPUT BLOCK 1800 1801 / SETS: 1802 1803 / BLKFLG /INPUT/OUTPUT BLOCK CONTROL FLAG: 1804 /0= INPUT CONTROLS BLOCK-SIZE, 1805 /1= OUTPUT CONTROLS BLOCK-SIZE 1806 / LENGTH /-(LENGTH) OF COPY 1807 / ESCAPSW /0= , 4000= TERMINATED COMMAND 1808 / VOSW /0= COPY, 1= VERIFY-ONLY (I/O SEPARATOR IS "!") 1809 1810 002400 0000 GETCMD, .-. /GET COMMAND ROUTINE 1811 002401 7200 CMDAGN, CLA /CLEAN UP 1812 002402 4777 JMS I (GETBUFFER) /GET THE INPUT BUFFER TYPED IN 1813 002403 1133 TAD [COMBUFFER] /POINT TO THE 1814 002404 3003 DCA GETPTR /INPUT BUFFER 1815 002405 4776 JMS I (GETCHR) /GET FIRST VIABLE CHARACTER 1816 002406 7650 SNA CLA /SKIP IF SOMETHING THERE 1817 002407 5315 JMP NULLINPUT /JUMP IF NOT 1818 002410 1375 TAD (SKP) /RESET THE 1819 002411 3550 DCA I [RHIT] /<^R> ROUTINE 1820 002412 3363 DCA RSCAN /INITIALIZE 1821 002413 3046 DCA LSCAN /THE 1822 002414 3361 DCA ESCAN /SCAN 1823 002415 3362 DCA MSCAN /COUNTERS 1824 002416 3021 DCA BLKFLG /ASSUME INPUT CONTROLS THE BLOCK SIZE 1825 002417 3007 DCA VOSW /ASSUME NORMAL COPY, NOT VERIFY-ONLY 1826 / WE PRESCAN THE COMMAND TO ASCERTAIN ITS OVERALL TYPE. COPY COMMANDS ARE 1827 / ALLOWED TO BE EITHER "OUTPUTOUTPUT." VERIFY-ONLY COMMANDS 1828 / ARE "FIRST!SECOND." COPY LENGTH CAN BE SET BY EITHER "BLOCK-BLOCK" ON EITHER 1829 / INPUT OR OUTPUT (NOT BOTH) OR WITH "=LENGTH" PLACED ANYWHERE IN THE COMMAND. 1830 1831 002420 4776 PRESCAN,JMS I (GETCHR) /GET A CHARACTER 1832 002421 7450 SNA /END OF BUFFER? 1833 002422 5244 JMP ENDSCAN /YES, WE'RE DONE WITH PRESCAN 1834 002423 1374 TAD (-">!200) /IS IT ">"? 1835 002424 7450 SNA /SKIP IF NOT 1836 002425 2363 ISZ RSCAN /ELSE BUMP UP COUNT 1837 002426 1373 TAD (-"<+">) /IS IT "<"? 1838 002427 7450 SNA /SKIP IF NOT 1839 002430 2046 ISZ LSCAN /ELSE BUMP UP COUNT 1840 002431 1132 TAD [-"-+"<] /IS IT "-"? 1841 002432 7450 SNA /SKIP IF NOT 1842 002433 2362 ISZ MSCAN /ELSE BUMP UP COUNT 1843 002434 1161 TAD [-"=+"-] /IS IT "="? 1844 002435 7450 SNA /SKIP IF NOT 1845 002436 2361 ISZ ESCAN /ELSE BUMP UP COUNT 1846 002437 1372 TAD (-"!+"=) /IS IT "!"? 1847 002440 7650 SNA CLA /SKIP IF NOT 1848 002441 2007 ISZ VOSW /ELSE BUMP UP COUNT 1849 002442 2003 ISZ GETPTR /BUMP TO NEXT 1850 002443 5220 JMP PRESCAN /KEEP GOING 1851 1852 / THE PRESCAN IS OVER; WE NOW CAN TELL WHAT TYPE OF COMMAND THIS IS AND VALIDATE 1853 / ITS FORM. CHECK IF I/O SEPARATOR AND LENGTH SPECIFICATION ARE CORRECT. 1854 1855 002444 7240 ENDSCAN,NL7777 /-1 1856 002445 1046 TAD LSCAN /ADD ON "<" COUNT 1857 002446 1363 TAD RSCAN /ADD ON ">" COUNT 1858 002447 1007 TAD VOSW /ADD ON "!" COUNT 1859 002450 7440 SZA /SKIP IF EXACTLY ONE OF ABOVE 1860 002451 5301 JMP SEPCOMPLAIN /COMPLAIN ABOUT BOTCHED SEPARATORS 1861 002452 7240 NL7777 /-1 1862 002453 1362 TAD MSCAN /ADD ON "-" COUNT 1863 002454 1361 TAD ESCAN /ADD ON "=" COUNT 1864 002455 7440 SZA /SKIP IF EXACTLY ONE OF ABOVE 1865 002456 5307 JMP LENCOMPLAIN /COMPLAIN ABOUT BOTCHED LENGTH/RANGE SPECIFICATION 1866 002457 1133 TAD [COMBUFFER] /RESET THE 1867 002460 3003 DCA GETPTR /BUFFER POINTER 1868 002461 4771 JMS I (SCAN) /SCAN FIRST "DEVU:BLOCK" 1869 002462 1046 TAD LSCAN /GET "<" INDICATOR 1870 002463 7650 SNA CLA /SKIP IF SET 1871 002464 5267 JMP DOIN /MUST BE ">" OR "!" 1872 002465 4333 JMS SETOUT /STORE OTUNIT, OUTBLK, OTDNUM 1873 002466 5270 JMP DOMORE /CONTINUE THERE 1874 / MUST BE "INPUT>OUTPUT" OR "FIRST!SECOND." 1875 1876 002467 4321 DOIN, JMS SETIN /STORE INUNIT, INBLK, INDNUM 1877 002470 2003 DOMORE, ISZ GETPTR /BUMP POINTER PAST DELIMITER 1878 002471 4771 JMS I (SCAN) /GET SECOND "DEVU:BLOCK" 1879 002472 1046 TAD LSCAN /GET "<" INDICATOR 1880 002473 7640 SZA CLA /SKIP IF NOT SET 1881 002474 5277 JMP DOIN2 /MUST BE "<" 1882 002475 4333 JMS SETOUT /STORE OTUNIT, OUTBLK, OTDNUM 1883 002476 7410 SKP /DON'T DO IT AGAIN! 1884 002477 4321 DOIN2, JMS SETIN /STORE INUNIT, INBLK, INDNUM 1885 002500 5600 JMP I GETCMD /RETURN 1886 1887 / COMES HERE IF NOT EXACTLY ONE I/O SEPARATOR. 1888 1889 002501 7710 SEPCOMP,SPA CLA /SKIP IF TOO MANY SEPARATORS 1890 002502 5305 JMP MISSEPARATOR /JUMP IF NONE 1891 002503 4350 JMS COMPLAIN /COMPLAIN OF 1892 002504 4662 MULSEPARATORS /TOO MANY SEPARATORS 1893 1894 002505 4350 MISSEPA,JMS COMPLAIN /COMPLAIN OF 1895 002506 5053 NULSEPARATORS /NO SEPARATORS 1896 1897 / COMES HERE IF NOT EXACTLY ONE LENGTH/RANGE SPECIFICATION. 1898 1899 002507 7710 LENCOMP,SPA CLA /SKIP IF TOO MANY SPECIFIERS 1900 002510 5313 JMP MISSPECIFICATION/JUMP IF NONE 1901 002511 4350 JMS COMPLAIN /COMPLAIN OF 1902 002512 4700 MULSPECIFICATIONS /TOO MANY SPECIFICATIONS 1903 1904 002513 4350 MISSPEC,JMS COMPLAIN /COMPLAIN OF 1905 002514 5066 NULSPECIFICATIONS /NO SPECIFICATIONS 1906 1907 / COMES HERE IF NULL INPUT BUFFER. 1908 1909 002515 1001 NULLINP,TAD ESCAPSW /GET TERMINATION INDICATOR 1910 002516 7650 SNA CLA /SKIP IF WAS USED 1911 002517 5201 JMP CMDAGN /JUST GET ANOTHER BUFFER 1912 002520 5564 JMP I [SBOOT] /EXIT TO MONITOR 1913 1914 002521 0000 SETIN, .-. /SET INPUT PARAMETERS ROUTINE 1915 002522 1071 TAD UNIT /GET CURRENT UNIT 1916 002523 3075 DCA INUNIT /STORE IT 1917 002524 1022 TAD BLOCK /GET CURRENT BLOCK 1918 002525 3100 DCA INBLK /STORE IT 1919 002526 1026 TAD DEVNUMBER /GET DEVICE NUMBER 1920 002527 3074 DCA INDNUM /STORE IT 1921 002530 1040 TAD INFO /GET INFORMATION WORD 1922 002531 3041 DCA ININFO /STORE IT 1923 002532 5721 JMP I SETIN /RETURN 1924 002533 0000 SETOUT, .-. /SET OUTPUT PARAMETERS ROUTINE 1925 002534 1071 TAD UNIT /GET CURRENT UNIT 1926 002535 3102 DCA OTUNIT /STORE IT 1927 002536 1022 TAD BLOCK /GET CURRENT BLOCK 1928 002537 3105 DCA OUTBLK /STORE IT 1929 002540 1026 TAD DEVNUMBER /GET DEVICE NUMBER 1930 002541 3101 DCA OTDNUM /STORE IT 1931 002542 1040 TAD INFO /GET INFORMATION WORD 1932 002543 3052 DCA OTINFO /STORE IT 1933 002544 1044 TAD LFLAG /GET LENGTH-FOUND FLAG 1934 002545 7640 SZA CLA /SKIP IF OFF 1935 002546 2021 ISZ BLKFLG /INDICATE OUTPUT CONTROL OF BLOCK SIZE 1936 002547 5733 JMP I SETOUT /RETURN 1937 1938 002550 0000 COMPLAI,.-. /GRIPING ROUTINE 1939 002551 4576 JMS I [ESCRIBE] /TELL THEM 1940 002552 4555 INVMSG /OPENING MESSAGE 1941 002553 1750 TAD I COMPLAIN /GET ARGUMENT 1942 002554 3356 DCA .+2 /STORE IN-LINE 1943 002555 4574 JMS I [SCRIBE] /TELL THEM 1944 002556 0000 .-. /THIS MESSAGE 1945 002557 4577 NAENTRY,JMS I [CRLF] /DO A , 1946 002560 5201 JMP CMDAGN /GO RESTART THE DECODER 1947 1948 002561 0000 ESCAN, .-. /"=" COUNTER 1949 002562 0000 MSCAN, .-. /"-" COUNTER 1950 002563 0000 RSCAN, .-. /">" COUNTER 1951 1952 002571 2600 PAGE 002572 0034 002573 0002 002574 7702 002575 7410 002576 3000 002577 3200 1953 002600 0000 SCAN, .-. /SCAN "DEVU:BLOCK", ETC. ROUTINE 1954 002601 3347 DCA BLKSW /INDICATE WE DIDN'T SCAN THE BLOCK PART YET 1955 002602 3044 DCA LFLAG /LENGTH NOT FOUND YET 1956 002603 4535 JMS I [NAMSETUP] /SETUP DEVICE NAME BUFFER STUFF 1957 002604 3404 DCA I NAMPTR /CLEAR A WORD 1958 002605 2004 ISZ NAMPTR /BUMP TO NEXT 1959 002606 2050 ISZ NAMCNT /DONE YET? 1960 002607 5204 JMP .-3 /NO, KEEP GOING 1961 002610 4777 SCNLUP, JMS I (ENDTEST) /ARE WE DONE WITH THIS ONE? 1962 002611 5260 JMP SCNTEST /YES, TEST IF WE GOT ANYTHING 1963 002612 4776 JMS I (GETCHR) /NO, GET A CHARACTER 1964 002613 1375 TAD (-"-!200) /IS IT "-"? 1965 002614 7450 SNA /SKIP IF NOT 1966 002615 5265 JMP GOTMINUS /JUMP IF SO 1967 002616 1161 TAD [-"=+"-] /IS IT "="? 1968 002617 7650 SNA CLA /SKIP IF NOT 1969 002620 5301 JMP GOTEQUALS /JUMP IF SO 1970 002621 4535 JMS I [NAMSETUP] /SETUP DEVICE NAME BUFFER STUFF 1971 002622 4776 NAMLUP, JMS I (GETCHR) /GET A CHARACTER 1972 002623 1374 TAD (-"[!200) /ADD ON UPPER LIMIT 1973 002624 7100 CLL /CLEAR LINK FOR TEST 1974 002625 1373 TAD ("[-"A) /ADD ON RANGE 1975 002626 7620 SNL CLA /SKIP IF VALID 1976 002627 5236 JMP NAMATCH /JUMP IF NOT 1977 002630 4776 JMS I (GETCHR) /GET THE CHARACTER 1978 002631 3404 DCA I NAMPTR /STORE IN NAME BUFFER 1979 002632 2004 ISZ NAMPTR /BUMP TO NEXT 1980 002633 2003 ISZ GETPTR /BUMP TO NEXT CHARACTER 1981 002634 2050 ISZ NAMCNT /DONE MAXIMUM (3) YET? 1982 002635 5222 JMP NAMLUP /NO, GO BACK 1983 002636 4772 NAMATCH,JMS I (DMATCH) /DOES IT MATCH A TABLE ELEMENT? 1984 002637 7510 SPA /SKIP IF SO 1985 002640 5307 JMP NAMENF /JUMP IF NOT 1986 002641 4771 JMS I (ENTSETUP) /GET ENTRY POINT WORD 1987 002642 0164 AND [7600] /JUST BLOCK-SIZE BITS 1988 002643 3040 DCA INFO /SAVE INFO 1989 002644 4770 JMS I (GETDIGIT) /GET DEVICE UNIT NUMBER 1990 002645 5325 JMP BADUNIT /WASN'T RIGHT 1991 002646 3071 DCA UNIT /STORE IT 1992 002647 4776 JMS I (GETCHR) /GET NEXT CHARACTER 1993 002650 1367 TAD (-":!200) /COMPARE TO ":" 1994 002651 7640 SZA CLA /SKIP IF IT MATCHES 1995 002652 5333 JMP BADCOLON /JUMP IF NOT 1996 002653 4766 JMS I (GETNUMBER) /GET THE BLOCK NUMBER 1997 002654 5335 JMP BADBLK /THEY SCREWED THAT UP! 1998 002655 3022 DCA BLOCK /STORE IT 1999 002656 2347 ISZ BLKSW /ALLOW "BLOCK-BLOCK" RANGE FORM 2000 002657 5210 JMP SCNLUP /KEEP GOING 2001 2002 / COMES HERE IF WE GOT SOMETHING (OR NOTHING!). 2003 2004 002660 1765 SCNTEST,TAD I (NAMBUFFER) /ANYTHING THERE? 2005 002661 7640 SZA CLA /SKIP IF NOT 2006 002662 5600 JMP I SCAN /RETURN IF OK 2007 / COMES HERE IF THERE IS NO DEVICE NAME. 2008 2009 002663 4764 NONAME, JMS I (COMPLAIN) /COMPLAIN OF 2010 002664 4762 NODEV /NO DEVICE NAME 2011 2012 / COMES HERE IF "-" FOUND. 2013 2014 002665 4766 GOTMINU,JMS I (GETNUMBER) /GET THE UPPER BLOCK 2015 002666 5277 JMP NOHIGH /WASN'T ANY 2016 002667 7040 CMA /INVERT AND 2017 002670 1022 TAD BLOCK /ADD ON LOWER VALUE 2018 002671 3043 DCA LENGTH /STORE AS FINAL LENGTH 2019 002672 1347 TAD BLKSW /GET OUR SWITCH 2020 002673 7640 SZA CLA /SKIP IF WE SHOULDN'T HAVE DONE THAT 2021 002674 5305 JMP MINOK /ELSE JUST KEEP GOING 2022 002675 4764 JMS I (COMPLAIN) /COMPLAIN OF 2023 002676 4620 MISSLR /MISSING LOWER RANGE BLOCK 2024 2025 / COMES HERE IF UPPER BLOCK WAS BAD. 2026 2027 002677 4764 NOHIGH, JMS I (COMPLAIN) /COMPLAIN OF 2028 002700 4641 MISSUR /MISSING UPPER RANGE BLOCK 2029 2030 / COMES HERE IF "=" FOUND. 2031 2032 002701 4766 GOTEQUA,JMS I (GETNUMBER) /GET THE LENGTH 2033 002702 5337 JMP MISSEQUALS /WASN'T ANY 2034 002703 7041 CIA /INVERT IT 2035 002704 3043 DCA LENGTH /STORE AS FINAL LENGTH 2036 002705 2044 MINOK, ISZ LFLAG /INDICATE LENGTH WAS FOUND 2037 002706 5210 JMP SCNLUP /KEEP GOING 2038 2039 / COMES HERE IF WE CAN'T MATCH A DEVICE NAME FROM THE TABLE. 2040 2041 002707 0765 NAMENF, AND I (NAMBUFFER) /GET FIRST CHARACTER 2042 002710 7650 SNA CLA /SKIP IF VALID 2043 002711 5263 JMP NONAME /JUMP IF NOT 2044 002712 4542 JMS I [ESCRLF] /CHECK IF EXTRA , NEEDED 2045 002713 4535 JMS I [NAMSETUP] /SETUP DEVICE NAME PARAMETERS 2046 002714 1404 PNMLUP, TAD I NAMPTR /GET A NAME CHARACTER 2047 002715 7440 SZA /SKIP IF 2048 002716 4570 JMS I [P7CH] /PRINT IT 2049 002717 2004 ISZ NAMPTR /BUMP TO NEXT 2050 002720 2050 ISZ NAMCNT /DONE ALL? 2051 002721 5314 JMP PNMLUP /NO, GO BACK 2052 002722 4574 JMS I [SCRIBE] /TELL THEM 2053 002723 5024 NOTAVL /THEY CAN'T HAVE THAT DEVICE 2054 002724 5763 JMP I (NAENTRY) /KEEP GOING 2055 / COMES HERE IF WE COULDN'T GET THE DEVICE UNIT. 2056 2057 002725 7640 BADUNIT,SZA CLA /WAS THERE ANYTHING? 2058 002726 5331 JMP BDUNIT /YES, BUT IT WAS JUNK 2059 002727 4764 JMS I (COMPLAIN) /NO, COMPLAIN OF 2060 002730 5036 NOUNIT /NO DEVICE UNIT 2061 2062 002731 4764 BDUNIT, JMS I (COMPLAIN) /COMPLAIN OF 2063 002732 4522 BDEVUNIT /BAD DEVICE UNIT 2064 2065 / COMES HERE IF ":" IS MISSING. 2066 2067 002733 4764 BADCOLO,JMS I (COMPLAIN) /COMPLAIN OF 2068 002734 4607 MISSCOLON /MISSING COLON 2069 2070 / COMES HERE IF WE COULDN'T GET THE BLOCK NUMBER. 2071 2072 002735 4764 BADBLK, JMS I (COMPLAIN) /COMPLAIN OF 2073 002736 4571 MISSBLOCK /MISSING BLOCK NUMBER 2074 2075 / COMES HERE IF NO PARAMETER AFTER "=". 2076 2077 002737 4764 MISSEQU,JMS I (COMPLAIN) /COMPLAIN OF 2078 002740 4535 EQUMISSING /MISSING EQUALS PARAMETER 2079 2080 002741 0000 NAMSETU,.-. /DEVICE NAME SETUP ROUTINE 2081 002742 7346 NL7775 /SETUP THE 2082 002743 3050 DCA NAMCNT /NAME COUNT 2083 002744 1365 TAD (NAMBUFFER) /POINT TO THE 2084 002745 3004 DCA NAMPTR /NAME BUFFER 2085 002746 5741 JMP I NAMSETUP /RETURN 2086 2087 002747 0000 BLKSW, .-. /BLOCK-SCANNED SWITCH 2088 2089 / DEVICE NAME BUFFER. 2090 2091 002750 0000 NAMBUFF,ZBLOCK 3 /DEVICE NAME FORMED HERE 002751 0000 002752 0000 2092 2093 002763 2557 PAGE 002764 2550 002765 2750 002766 3017 002767 7706 002770 3041 002771 3756 002772 2322 002773 0032 002774 7645 002775 7723 002776 3000 002777 3135 2094 / GET A CHARACTER ROUTINE. 2095 2096 003000 0000 GETCHR, .-. /GET A CHARACTER ROUTINE 2097 003001 7610 SKP CLA /CLEAN UP AND DON'T DO IT YET 2098 003002 2003 GETCAGN,ISZ GETPTR /BUMP TO NEXT 2099 003003 1403 TAD I GETPTR /GET A CHARACTER 2100 003004 1377 TAD (-"/!200) /COMPARE TO "/" 2101 003005 7450 SNA /SKIP IF OTHER 2102 003006 5600 JMP I GETCHR /RETURN ZERO 2103 003007 1132 TAD [-" +"/] /COMPARE TO 2104 003010 7450 SNA /SKIP IF DIFFERENT 2105 003011 5202 JMP GETCAGN /ELSE TOSS IT 2106 003012 1376 TAD (-140+" -200) /COMPARE TO LOWER-CASE LIMIT 2107 003013 7510 SPA /SKIP IF LOWER-CASE 2108 003014 1157 TAD [40] /DON'T FOLD UPPER-CASE 2109 003015 1155 TAD [100] /RESTORE THE CHARACTER 2110 003016 5600 JMP I GETCHR /RETURN 2111 2112 / GET A NUMBER ROUTINE. 2113 2114 003017 0000 GETNUMB,.-. /GET A NUMBER ROUTINE 2115 003020 2003 ISZ GETPTR /BUMP TO NEXT CHARACTER 2116 003021 3355 DCA GDIGITS /CLEAR DIGIT COUNT 2117 003022 3357 GETNAGN,DCA GNUM /CLEAR OR SAVE LATEST NUMBER 2118 003023 4241 JMS GETDIGIT /GET A DIGIT 2119 003024 5233 JMP GDTEST /WASN'T ANY 2120 003025 3356 DCA GLATEST /SAVE IT 2121 003026 1357 TAD GNUM /GET THE VALUE 2122 003027 4544 JMS I [RTL3] /MOVE UP 2123 003030 1356 TAD GLATEST /ADD ON LATEST 2124 003031 2355 ISZ GDIGITS /BUMP DIGIT COUNT 2125 003032 5222 JMP GETNAGN /KEEP GOING 2126 2127 003033 7200 GDTEST, CLA /CLEAN UP 2128 003034 1355 TAD GDIGITS /ANY DIGITS? 2129 003035 7640 SZA CLA /SKIP IF NONE 2130 003036 2217 ISZ GETNUMBER /ELSE TAKE SKIP RETURN 2131 003037 1357 TAD GNUM /GET THE VALUE 2132 003040 5617 JMP I GETNUMBER /RETURN 2133 2134 003041 0000 GETDIGI,.-. /GET A DIGIT ROUTINE 2135 003042 4335 JMS ENDTEST /TEST IF AT DELIMITER 2136 003043 5641 JMP I GETDIGIT /FORGET IT 2137 003044 4200 JMS GETCHR /GET A CHARACTER 2138 003045 1375 TAD (-"8!200) /ADD ON UPPER LIMIT 2139 003046 7100 CLL /CLEAR LINK FOR TEST 2140 003047 1134 TAD ["8-"0] /ADD ON RANGE 2141 003050 7420 SNL /SKIP IF VALID 2142 003051 5255 JMP BADDIGIT /JUMP IF NOT 2143 003052 2241 ISZ GETDIGIT /TAKE SKIP RETURN 2144 003053 2003 ISZ GETPTR /BUMP TO NEXT CHARACTER 2145 003054 7410 SKP /DON'T SET BAD VALUE 2146 003055 7240 BADDIGI,NL7777 /INDICATE BAD DIGIT 2147 003056 5641 JMP I GETDIGIT /RETURN 2148 / HANDLER BUFFER ALLOCATION ROUTINE. 2149 2150 / ALLOCATES A BUFFER FOR A HANDLER BASED ON BEST FIT CONSIDERATIONS. 2151 2152 / CALL WITH: 2153 2154 / L=0 /EXCLUDE PAGE ZERO FROM CONSIDERATION (NOT ATTEMPTING 2155 / /A SINGLE FULL-SIZE HANDLER) 2156 2157 / OR 2158 2159 / L=1 /FULL-SIZE HANDLER (40 PAGES) IS BEING ATTEMPTED 2160 2161 / TAD (HANDLERLENGTH) /AC CONTAINS PAGE-SIZE OF HANDLER (ZERO IS INNOCUOUS) 2162 / JMS I (BESTFIT) /CALL ROUTINE 2163 2164 / RETURNS: 2165 2166 / POSITIVE VALUE OF FIELD NUMBER WHERE BEST FIT OCCURS; ELEMENT SIZE HAS BEEN 2167 / REDUCED TO REFLECT ALLOCATION. 2168 2169 / OR 2170 2171 / NEGATIVE IF ALLOCATION IS IMPOSSIBLE. 2172 2173 003057 0000 BESTFIT,.-. /BEST FIT HANDLER ROUTINE 2174 003060 7450 SNA /ZERO LENGTH HANDLER? 2175 003061 5657 JMP I BESTFIT /YES, JUST RETURN ZERO 2176 003062 3351 DCA BFLENGTH /SAVE DESIRED LENGTH 2177 003063 7420 SNL /40 PAGES? 2178 003064 7201 NL0001 /NO, SET FIELD ZERO SWITCH 2179 003065 3352 DCA BFL0SW /SAVE EITHER WAY 2180 003066 7420 SNL /40 PAGES? 2181 003067 7240 NL7777 /NO, SET PAGE ZERO EXCLUSION VALUE 2182 003070 3354 DCA BFPZEXCLUDE /SAVE EITHER WAY 2183 003071 1131 TAD [WORK0] /SETUP THE 2184 003072 3002 DCA GBTEMP /WORK POINTER 2185 003073 7330 NL4000 /SETUP THE BAD 2186 003074 3353 DCA BFNUMBER /DEFAULT FIELD NUMBER 2187 003075 7352 NL5777 /SETUP THE DEFAULT 2188 003076 3350 DCA BFIT /BEST FIT SIZE 2189 003077 1130 TAD [WORK0-WORKEND] /SETUP THE 2190 003100 3005 DCA VERCNT /LIST COUNT 2191 003101 1354 BFLOOP, TAD BFPZEXCLUDE /GET EXCLUSION SWITCH 2192 003102 1352 TAD BFL0SW /GET FIELD ZERO SWITCH 2193 003103 1402 TAD I GBTEMP /GET LATEST ELEMENT 2194 003104 7041 CIA /INVERT FOR TEST 2195 003105 1351 TAD BFLENGTH /COMPARE TO DESIRED LENGTH 2196 003106 7540 SMA SZA /SKIP IF POSSIBLE 2197 003107 5326 JMP BFNEXT /JUMP IF NOT 2198 003110 7041 CIA /INVERT REMAINDER 2199 003111 1350 TAD BFIT /COMPARE TO PREVAILING WASTE 2200 003112 7500 SMA /SKIP IF LESS WASTEFUL 2201 003113 5326 JMP BFNEXT /ELSE FORGET IT 2202 003114 7041 CIA /INVERT AGAIN 2203 003115 1350 TAD BFIT /LOWER WASTE VALUE 2204 003116 3350 DCA BFIT /STORE NEW LESS WASTEFUL VALUE 2205 003117 1351 TAD BFLENGTH /GET DESIRED LENGTH 2206 003120 7041 CIA /INVERT IT 2207 003121 1402 TAD I GBTEMP /REMOVE FROM LIST ELEMENT 2208 003122 3402 DCA I GBTEMP /STORE IN LIST 2209 003123 1002 TAD GBTEMP /GET THE POINTER 2210 003124 1127 TAD [-WORK0] /MAKE IT RELATIVE 2211 003125 3353 DCA BFNUMBER /SAVE BEST FIELD NUMBER 2212 003126 7200 BFNEXT, CLA /CLEAN UP 2213 003127 3352 DCA BFL0SW /NO LONGER IN FIELD ZERO 2214 003130 2002 ISZ GBTEMP /BUMP TO NEXT ELEMENT 2215 003131 2005 ISZ VERCNT /DONE ALL YET? 2216 003132 5301 JMP BFLOOP /NO, KEEP GOING 2217 003133 1353 TAD BFNUMBER /GET BEST FITTING FIELD 2218 003134 5657 JMP I BESTFIT /RETURN 2219 2220 003135 0000 ENDTEST,.-. /TEST FOR DELIMITER ROUTINE 2221 003136 4200 JMS GETCHR /GET A CHARACTER 2222 003137 7440 SZA /SKIP IF END OF BUFFER 2223 003140 1374 TAD (-">!200) /IS IT ">"? 2224 003141 7440 SZA /SKIP IF SO 2225 003142 1373 TAD (-"<+">) /IS IT "<"? 2226 003143 7440 SZA /SKIP IF SO 2227 003144 1372 TAD (-"!+"<) /IS IT "!"? 2228 003145 7640 SZA CLA /SKIP IF ANY DELIMITER 2229 003146 2335 ISZ ENDTEST /ELSE BUMP RETURN ADDRESS 2230 003147 5735 JMP I ENDTEST /RETURN EITHER WAY 2231 2232 003150 0000 BFIT, .-. /WASTE FACTOR 2233 003151 0000 BFLENGT,.-. /DESIRED LENGTH 2234 003152 0000 BFL0SW, .-. /FIELD ZERO SWITCH 2235 003153 0000 BFNUMBE,.-. /BEST FIT FIELD NUMBER 2236 003154 0000 BFPZEXC,.-. /PAGE ZERO EXCLUSION SWITCH 2237 003155 0000 GDIGITS,.-. /DIGIT COUNTER 2238 003156 0000 GLATEST,.-. /LATEST DIGIT 2239 003157 0000 GNUM, .-. /NUMBER TEMPORARY 2240 003172 0033 PAGE 003173 0002 003174 7702 003175 7710 003176 7700 003177 7721 2241 / GET INPUT BUFFER ROUTINE. 2242 2243 003200 0000 GETBUFF,.-. /GET INPUT BUFFER 2244 003201 1133 GRESTAR,TAD [COMBUFFER] /RESET THE 2245 003202 3003 DCA GETPTR /OUTPUT POINTER 2246 003203 1377 TAD ("*&177) /GET PROMPTING "*" 2247 003204 4570 JMS I [P7CH] /PRINT IT 2248 003205 4776 GETINP, JMS I (GIVCHR) /**** **** JMS I [INPUT] 2249 003206 4344 GOTINPU,JMS CMDSUB /TRY TO FIND 2250 003207 1124 CHTBL-1 /SPECIAL CHARACTERS 2251 003210 1126 TAD [-40] /COMPARE LATEST TO CONTROL CHARACTER 2252 003211 7710 SPA CLA /SKIP IF GREATER 2253 003212 5235 JMP GCMBEEP /IGNORE BAD CONTROL CHARACTERS 2254 003213 1015 TAD INCHAR /GET THE CHARACTER 2255 003214 1152 TAD [-140] /COMPARE TO LOWER-CASE LIMIT 2256 003215 7000 GCMZAP, NOP /**** /U **** SPA 2257 003216 1157 TAD [40] /RESTORE CASE 2258 003217 1155 TAD [100] /RESTORE THE CHARACTER 2259 003220 7410 SKP /DON'T DO STUFF! 2260 003221 1157 GOTHT, TAD [" &177] / BECOMES 2261 003222 3002 DCA GBTEMP /SAVE IT 2262 003223 1003 TAD GETPTR /GET OUTPUT POINTER 2263 003224 1375 TAD (-COMBEND) /COMPARE TO BUFFER LIMIT 2264 003225 7700 SMA CLA /SKIP IF NOT AT END YET 2265 003226 5235 JMP GCMBEEP /JUMP IF IT IS 2266 003227 1002 TAD GBTEMP /GET THE CHARACTER 2267 003230 3403 DCA I GETPTR /STORE IN THE BUFFER 2268 003231 2003 ISZ GETPTR /BUMP THE POINTER 2269 003232 1002 TAD GBTEMP /GET THE CHARACTER 2270 003233 4570 JMS I [P7CH] /PRINT IT 2271 003234 5205 JMP GETINPUT /KEEP GOING 2272 2273 / COMES HERE ON BAD INPUT OR FULL BUFFER. 2274 2275 003235 1153 GCMBEEP,TAD [7] /GET A 2276 003236 4570 JMS I [P7CH] /RING IT 2277 003237 5205 JMP GETINPUT /KEEP GOING 2278 2279 / COMES HERE ON ANY CHARACTER 2280 2281 003240 1374 GOTESC, TAD ("$&177) /GET A "$" 2282 003241 4570 JMS I [P7CH] /PRINT IT 2283 003242 3403 DCA I GETPTR /DELIMIT THE BUFFER 2284 003243 7330 NL4000 /INDICATE SEEN 2285 003244 3001 CRENTRY,DCA ESCAPSW /STORE THE SWITCH 2286 003245 5600 JMP I GETBUFFER /RETURN 2287 2288 / COMES HERE ON <^U>. 2289 2290 003246 1145 DELETL, TAD ["^&177] /GET AN "^" 2291 003247 4570 JMS I [P7CH] /PRINT IT 2292 003250 1373 TAD ("U&177) /GET A "U" 2293 003251 4570 JMS I [P7CH] /PRINT IT 2294 003252 4577 JMS I [CRLF] /DO A , 2295 003253 5201 JMP GRESTART /RESTART 2296 / COMES HERE ON . 2297 2298 003254 3403 GOTCR, DCA I GETPTR /DELIMIT THE BUFFER 2299 003255 4577 JMS I [CRLF] /DO A , 2300 003256 5244 JMP CRENTRY /CONTINUE THERE 2301 2302 / COMES HERE ON . 2303 2304 003257 4577 LFVIEW, JMS I [CRLF] /DO A , 2305 003260 1377 TAD ("*&177) /GET THE PROMPT CHARACTER 2306 003261 4570 JMS I [P7CH] /PRINT IT 2307 003262 1133 TAD [COMBUFFER] /RESET THE 2308 003263 3002 DCA GBTEMP /BUFFER POINTER 2309 003264 1002 PRBLUP, TAD GBTEMP /GET THE POINTER VALUE 2310 003265 7041 CIA /INVERT FOR TEST 2311 003266 1003 TAD GETPTR /COMPARE TO MAIN POINTER 2312 003267 7650 SNA CLA /SKIP IF NOT THERE YET 2313 003270 5205 JMP GETINPUT /JUMP IF DONE PRINTING THE BUFFER 2314 003271 1402 TAD I GBTEMP /GET THE CURRENT CHARACTER 2315 003272 4570 JMS I [P7CH] /PRINT IT 2316 003273 2002 ISZ GBTEMP /BUMP TO NEXT 2317 003274 5264 JMP PRBLUP /KEEP GOING 2318 2319 / COMES HERE ON ANY BACKSPACING CHARACTER. 2320 2321 003275 7240 BACKSP, NL7777 /-1 2322 003276 1003 TAD GETPTR /BACKUP THE POINTER 2323 003277 3002 DCA GBTEMP /SAVE FOR NOW 2324 003300 1002 TAD GBTEMP /GET IT BACK 2325 003301 1372 TAD (-COMBUFFER) /COMPARE TO LOWER LIMIT 2326 003302 7710 SPA CLA /SKIP IF OK 2327 003303 5235 JMP GCMBEEP /COMPLAIN IF TOO FAR BACK 2328 003304 5316 BZAP, JMP HARDRUBOUT /**** NOT /B **** 0000 2329 003305 1002 TAD GBTEMP /GET UPDATED VALUE 2330 003306 3003 DCA GETPTR /USE IT IN POINTER 2331 003307 1134 TAD ["H&37] /GET 2332 003310 4570 JMS I [P7CH] /PRINT IT 2333 003311 1157 TAD [" &177] /GET A 2334 003312 4570 JMS I [P7CH] /PRINT IT 2335 003313 1134 TAD ["H&37] /GET 2336 003314 4570 JMS I [P7CH] /PRINT IT 2337 003315 5205 JMP GETINPUT /KEEP GOING 2338 / COMES HERE IF BACKSPACING ON HARD-COPY TERMINAL. 2339 2340 003316 1371 HARDRUB,TAD ("\&177) /GET DELIMITER 2341 003317 4570 JMS I [P7CH] /PRINT IT 2342 003320 7240 RUBAGN, NL7777 /BACKUP 2343 003321 1003 TAD GETPTR /GET THE POINTER 2344 003322 3002 DCA GBTEMP /SAVE UPDATED VALUE 2345 003323 1002 TAD GBTEMP /GET IT BACK 2346 003324 1372 TAD (-COMBUFFER) /COMPARE TO LOWER LIMIT 2347 003325 7710 SPA CLA /SKIP IF OK 2348 003326 5336 JMP RUBDONE /JUMP IF TOO FAR 2349 003327 1002 TAD GBTEMP /GET THE NEW VALUE 2350 003330 3003 DCA GETPTR /STORE IT 2351 003331 1403 TAD I GETPTR /GET THE OLD CHARACTER 2352 003332 4570 JMS I [P7CH] /PRINT IT 2353 003333 4551 JMS I [INPUT] /GET FURTHER INPUT HERE 2354 003334 4344 JMS CMDSUB /CHECK IF A 2355 003335 1151 RUBTBL-1 /BACKSPACING CHARACTER 2356 003336 3002 RUBDONE,DCA GBTEMP /STORE LATEST OR 2357 003337 1371 TAD ("\&177) /GET TRAILING DELIMITER 2358 003340 4570 JMS I [P7CH] /PRINT IT 2359 003341 1002 TAD GBTEMP /GET THE LATEST (OR ) 2360 003342 3015 DCA INCHAR /APPEAR TO HAVE INPUT 2361 003343 5206 JMP GOTINPUT /GO USE IT THERE 2362 2363 003344 0000 CMDSUB, .-. /COMMAND TABLE SEARCH ROUTINE 2364 003345 7200 CLA /CLEAN UP 2365 003346 1744 TAD I CMDSUB /GET THE INLINE POINTER 2366 003347 3002 DCA GBTEMP /STASH IT 2367 003350 2344 ISZ CMDSUB /BUMP PAST POINTER 2368 003351 2002 GCMLUP, ISZ GBTEMP /BUMP TO NEXT 2369 003352 1402 TAD I GBTEMP /GET AN ENTRY 2370 003353 2002 ISZ GBTEMP /BUMP TO NEXT 2371 003354 7450 SNA /END OF TABLE? 2372 003355 5364 JMP GCMEND /YES, FORGET IT 2373 003356 1015 TAD INCHAR /COMPARE TO LATEST 2374 003357 7640 SZA CLA /SKIP IF IT MATCHES 2375 003360 5351 JMP GCMLUP /JUMP IF NOT 2376 003361 1402 TAD I GBTEMP /GET THE ADDRESS 2377 003362 3002 DCA GBTEMP /STASH IT 2378 003363 5402 JMP I GBTEMP /GO THERE 2379 2380 003364 1015 GCMEND, TAD INCHAR /GET THE CHARACTER BACK 2381 003365 5744 JMP I CMDSUB /RETURN 2382 2383 003371 0134 PAGE 003372 6506 003373 0125 003374 0044 003375 6412 003376 1200 003377 0052 2384 / HANDLER, BUFFER SETUP ROUTINE. 2385 2386 / CALL WITH: 2387 2388 / INDNUM, OTDNUM ALREADY SET TO THEIR RESPECTIVE VALUES (0 IF "SYS") 2389 / INDLEN, OTDLEN ALREADY SET TO THEIR RESPECTIVE VALUES (0 IF "SYS") 2390 2391 / JMS I (HBSETUP) /CALL ROUTINE 2392 / CANT BE DONE /RETURNS HERE IF REQUESTED COMBINATION CAN'T FIT 2393 / GOOD RETURN /RETURNS HERE WITH HANDLERS LOADED IF NECESSARY 2394 /AND I/O BUFFERS MAXIMIZED 2395 2396 003400 0000 HBSETUP,.-. /HANDLER, BUFFER SETUP ROUTINE 2397 2398 / WE FIRST ATTEMPT TO ALLOCATE EACH OF THE I/O HANDLERS, INPUT AND OUTPUT (OR 2399 / VERIFY), INDEPENDENTLY ON A "BEST FIT" BASIS, THE LARGER OF THE HANDLERS 2400 / FIRST AS THIS IS ORDINARILY THE BEST WAY. 2401 2402 003401 7240 NL7777 /ASSUME WE CANNOT GET 2403 003402 3047 DCA MAXIO /ANY USABLE LENGTH 2404 003403 4777 JMS I (WORKSETUP) /SETUP WORK AREA 2405 003404 1035 TAD INDLEN /GET INPUT HANDLER LENGTH 2406 003405 7041 CIA /INVERT FOR TESTING 2407 003406 1051 TAD OTDLEN /COMPARE TO OUTPUT HANDLER LENGTH 2408 003407 7700 SMA CLA /SKIP IF INPUT HANDLER IS LARGER 2409 003410 5220 JMP OTFIRST /ELSE ALLOCATE OUTPUT FIRST 2410 003411 1035 TAD INDLEN /GET INPUT HANDLER LENGTH 2411 003412 4776 JMS I (FITSEPARATE) /ALLOCATE IT AND HOPEFULLY COME BACK 2412 003413 3775 DCA I (INHFLD) /STORE BEST FIT FIELD NUMBER 2413 003414 1051 TAD OTDLEN /GET OUTPUT HANDLER LENGTH 2414 003415 4776 JMS I (FITSEPARATE) /ALLOCATE IT AND HOPEFULLY COME BACK 2415 003416 3774 DCA I (OTHFLD) /STORE BEST FIT FIELD NUMBER 2416 003417 5226 JMP SEPACOMMON /CONTINUE THERE 2417 2418 / THE OUTPUT HANDLER IS LARGER, SO ALLOCATE IT FIRST. 2419 2420 003420 1051 OTFIRST,TAD OTDLEN /GET OUTPUT HANDLER LENGTH 2421 003421 4776 JMS I (FITSEPARATE) /ALLOCATE IT AND HOPEFULLY COME BACK 2422 003422 3774 DCA I (OTHFLD) /STORE BEST FIT FIELD NUMBER 2423 003423 1035 TAD INDLEN /GET INPUT HANDLER LENGTH 2424 003424 4776 JMS I (FITSEPARATE) /ALLOCATE IT AND HOPEFULLY COME BACK 2425 003425 3775 DCA I (INHFLD) /STORE BEST FIT FIELD NUMBER 2426 / AT THIS POINT, THE WORK TABLE CONTAINS THE AVAILABLE PAGE COUNT FOR ALL 2427 / VIABLE FIELD ENTRIES AFTER THE HANDLER LENGTHS HAVE BEEN SUBTRACTED ON A 2428 / BEST FIT BASIS. WE MUST NOW FIND THE LARGEST REMAINING BUFFER SPACE (TWO 2429 / BUFFERS ARE REQUIRED IF EITHER COPYING WITH VERIFY (NOT /N), OR VERIFY-ONLY, 2430 / ELSE ONLY ONE). 2431 2432 003426 4773 SEPACOM,JMS I (BESTBUFFER) /FIND THE BEST (TWO) BUFFER(S) 2433 003427 7550 SPA SNA /DID WE GET ANY? 2434 003430 5236 JMP TRYTOGETHER /NO, FORGET IT 2435 003431 3047 DCA MAXIO /SAVE MAXIMUM BUFFER SIZE ACHIEVED 2436 003432 1023 TAD BSTFL1 /GET FIRST FIELD NUMBER 2437 003433 3317 DCA IOBFLD /SAVE AS I/O FIELD 2438 003434 1024 TAD BSTFL2 /GET SECOND FIELD NUMBER 2439 003435 3337 DCA VEBFLD /SAVE AS VERIFY FIELD 2440 2441 / WE NEXT ATTEMPT TO ALLOCATE THE SUM TOTAL PAGE LENGTH OF BOTH HANDLERS IN 2442 / ONE FIELD (ADJACENT BUFFERS) AS THIS WILL PRODUCE OPTIMUM RESULTS IN CERTAIN 2443 / CASES. IT IS POSSIBLE FOR THIS METHOD TO FAIL IF THE HANDLERS CAN'T ACTUALLY 2444 / FIT TOGETHER IN ONE FIELD! 2445 2446 / COMES HERE (FROM FITSEPARATE) IF EITHER HANDLER COULDN'T BE ALLOCATED VIA 2447 / THE FORMER METHOD (IT IS LIKELY THE CURRENT METHOD WILL ALSO FAIL LEADING TO 2448 / THE USER ERROR MESSAGE REGARDING INSUFFICIENT MEMORY). 2449 2450 003436 7240 TRYTOGE,NL7777 /ASSUME THE TOGETHER 2451 003437 3354 DCA TOGMAXIO /METHOD WILL FAIL 2452 003440 4777 JMS I (WORKSETUP) /SETUP THE WORK AREA 2453 003441 1035 TAD INDLEN /GET THE INPUT HANDLER LENGTH 2454 003442 1051 TAD OTDLEN /ADD ON OUTPUT/VERIFY HANDLER LENGTH 2455 003443 7100 CLL /DOUBLET LENGTH IS ORDINARY CASE EVEN IF 40 PAGES 2456 003444 4525 JMS I [BESTFIT] /ATTEMPT TO ALLOCATE BOTH HANDLERS TOGETHER 2457 003445 7510 SPA /DID THEY FIT? 2458 003446 5260 JMP TESTBOTH /NO, GO FIND OUT IF THE FIRST METHOD WORKED 2459 003447 3352 DCA TOGFLD /YES, SAVE THEIR COMMON BEST FIT FIELD NUMBER 2460 003450 4773 JMS I (BESTBUFFER) /GET BEST (TWO) BUFFER(S) 2461 003451 7550 SPA SNA /DID WE GET ANY? 2462 003452 5260 JMP TESTBOTH /NO, FORGET IT 2463 003453 3354 DCA TOGMAXIO /SAVE THIS CASE'S SIZE 2464 003454 1023 TAD BSTFL1 /GET FIRST FIELD NUMBER 2465 003455 3353 DCA TOGIOFLD /SAVE FOR I/O BUFFER 2466 003456 1024 TAD BSTFL2 /GET SECOND FIELD NUMBER 2467 003457 3355 DCA TOGVEFLD /SAVE FOR VERIFY BUFFER 2468 2469 / WE NOW TEST IF AT LEAST ONE OF THE CASES WORKED, ELSE IT CAN'T BE DONE! 2470 2471 003460 7326 TESTBOT,NL0002 /SET MAGIC SUM 2472 003461 1047 TAD MAXIO /ADD ON FIRST CASE SIZE 2473 003462 1354 TAD TOGMAXIO /ADD ON SECOND CASE SIZE 2474 003463 7650 SNA CLA /SKIP IF OTHER THAN BOTH LOSERS 2475 003464 5600 JMP I HBSETUP /ALAS, TAKE IMMEDIATE RETURN IF IT COULDN'T BE DONE 2476 003465 4777 JMS I (WORKSETUP) /SETUP THE WORK AREA AGAIN 2477 003466 4772 JMS I (TOGORSEPARATE) /USE BETTER CASE'S PARAMETERS 2478 / WE NOW ACTUALLY ALLOCATE THE INPUT HANDLER BUFFER. 2479 2480 003467 4771 JMS I (INSETUP) /GET INPUT HANDLER LOADED AND INPUT POINTER SET 2481 003470 1775 TAD I (INHFLD) /GET INPUT HANDLER FIELD 2482 003471 4544 JMS I [RTL3] /MOVE UP TO FIELD BITS 2483 003472 1370 TAD (CIF) /TURN INTO CIF HANDLER FIELD INSTRUCTION 2484 003473 3767 DCA I (INCFLD) /STORE IN-LINE 2485 003474 1074 TAD INDNUM /GET INPUT DEVICE NUMBER 2486 003475 7041 CIA /INVERT FOR TEST 2487 003476 1101 TAD OTDNUM /COMPARE TO OUTPUT DEVICE NUMBER 2488 003477 7640 SZA CLA /SKIP IF IT MATCHES 2489 003500 5306 JMP DIFFOUT /JUMP IF NOT 2490 003501 1775 TAD I (INHFLD) /GET INPUT FIELD 2491 003502 3774 DCA I (OTHFLD) /MAKE IT OUTPUT FIELD AS WELL 2492 003503 1034 TAD INDEV /GET INPUT POINTER 2493 003504 3053 DCA OUTDEV /MAKE IT OUTPUT POINTER AS WELL 2494 003505 7410 SKP /DON'T DO OUTPUT HANDLER 2495 003506 4766 DIFFOUT,JMS I (OTSETUP) /SETUP OUTPUT HANDLER AND LOAD IT 2496 003507 1774 TAD I (OTHFLD) /GET OUTPUT FIELD NUMBER 2497 003510 4544 JMS I [RTL3] /MOVE UP TO FIELD BITS 2498 003511 1370 TAD (CIF) /TURN INTO CIF HANDLER FIELD INSTRUCTION 2499 003512 3765 DCA I (OTCFLD) /STORE IN-LINE 2500 003513 1765 TAD I (OTCFLD) /GET IT BACK 2501 003514 3764 DCA I (VECFLD) /STORE IN VERIFY CODE ALSO 2502 003515 1047 TAD MAXIO /GET THE MAXIMUM BUFFER SIZE 2503 003516 4763 JMS I (BUFSETUP) /ALLOCATE IT 2504 003517 0000 IOBFLD, .-. /IN I/O FIELD 2505 003520 3076 DCA INADR /SAVE INPUT BUFFER BASE ADDRESS 2506 003521 1317 TAD IOBFLD /GET THE INPUT FIELD NUMBER 2507 003522 4544 JMS I [RTL3] /MOVE UP TO FIELD BITS 2508 003523 3037 DCA INFLD /STORE AS INPUT FIELD 2509 003524 1037 TAD INFLD /GET IT BACK 2510 003525 1124 TAD [CDF] /FORM CDF INPUT BUFFER INSTRUCTION 2511 003526 3762 DCA I (CMPLUP) /STORE IN COMPARE ROUTINE 2512 003527 1762 TAD I (CMPLUP) /GET IT BACK 2513 003530 3761 DCA I (DMBCDF) /STORE IN DUMMY BLOCK ROUTINE 2514 003531 1076 TAD INADR /GET INPUT ADDRESS 2515 003532 3103 DCA OUTADR /MAKE IT OUTPUT ADDRESS AS WELL 2516 003533 4523 JMS I [VERCHK] /ARE WE VERIFYING? 2517 003534 5347 JMP NOVBUFFER /NO, FORGET IT 2518 003535 1047 TAD MAXIO /GET MAXIMUM BUFFER SIZE 2519 003536 4763 JMS I (BUFSETUP) /ALLOCATE IT 2520 003537 0000 VEBFLD, .-. /IN VERIFY FIELD 2521 003540 3106 DCA VERADR /SAVE AS VERIFY BUFFER BASE ADDRESS 2522 003541 1337 TAD VEBFLD /GET VERIFY FIELD NUMBER 2523 003542 4544 JMS I [RTL3] /MOVE UP TO FIELD BITS 2524 003543 3073 DCA VERFLD /SAVE AS VERIFY FIELD 2525 003544 1073 TAD VERFLD /GET IT BACK 2526 003545 1124 TAD [CDF] /FORM CDF VERIFY FIELD INSTRUCTION 2527 003546 3760 DCA I (VERCDF) /STORE IN-LINE 2528 003547 2200 NOVBUFF,ISZ HBSETUP /BUMP TO GOOD RETURN 2529 003550 4757 JMS I (MAXSETUP) /SETUP MAXIMUM BLOCK UPDATE FACTOR 2530 003551 5600 JMP I HBSETUP /RETURN TO CALLER 2531 003552 0000 TOGFLD, .-. /DOUBLET HANDLER BUFFER FIELD 2532 003553 0000 TOGIOFL,.-. /DOUBLET I/O FIELD NUMBER 2533 003554 0000 TOGMAXI,.-. /MAXIMUM BUFFER LENGTH FOR DOUBLET CASE 2534 003555 0000 TOGVEFL,.-. /DOUBLET VERIFY FIELD NUMBER 2535 2536 003557 3716 PAGE 003560 0515 003561 0644 003562 0512 003563 3672 003564 0473 003565 0454 003566 3635 003567 0427 003570 6202 003571 3600 003572 4015 003573 4054 003574 3640 003575 3603 003576 4036 003577 4000 2537 003600 0000 INSETUP,.-. /INPUT HANDLER SETUP ROUTINE 2538 003601 1035 TAD INDLEN /GET INPUT HANDLER LENGTH 2539 003602 4272 JMS BUFSETUP /GET THE BUFFER ADDRESS 2540 003603 0000 INHFLD, .-. /WILL BE INPUT HANDLER FIELD NUMBER 2541 003604 3343 DCA HNDADR /SAVE AS BASE ADDRESS OF HANDLER 2542 003605 1074 TAD INDNUM /GET INPUT HANDLER NUMBER 2543 003606 4350 JMS BLKSETUP /GET BLOCK WHERE THE HANDLER RESIDES 2544 003607 3345 DCA HNDBLK /STORE AS BASE BLOCK OF HANDLER 2545 003610 7240 NL7777 /-1 2546 003611 1074 TAD INDNUM /GET INPUT DEVICE NUMBER 2547 003612 7740 SMA SZA CLA /SKIP IF IT IS "SYS" OR "NUL" 2548 003613 5216 JMP LOADIN /ELSE GO READ IT IN 2549 003614 1377 TAD (SYSPAGE) /POINT TO PRELOADED HANDLER 2550 003615 5226 JMP INHCOMMON /CONTINUE THERE 2551 2552 003616 1035 LOADIN, TAD INDLEN /GET INPUT HANDLER LENGTH 2553 003617 7006 RTL;RTL;RTL /MOVE TO PAGE BITS 003620 7006 003621 7006 2554 003622 0137 AND [3700] /ISOLATE PAGE BITS 2555 003623 3002 DCA GBTEMP /STASH FOR NOW 2556 003624 1776 TAD I (INHFLD) /GET HANDLER FIELD NUMBER 2557 003625 4335 JMS HNDREAD /GO READ IN THE HANDLER 2558 003626 3005 INHCOMM,DCA VERCNT /SAVE HANDLER BASE FOR NOW 2559 003627 1074 TAD INDNUM /GET INPUT DEVICE NUMBER 2560 003630 4356 JMS ENTSETUP /GET ENTRY POINT OFFSET 2561 003631 0146 AND [177] /JUST ENTRY POINT BITS 2562 003632 1005 TAD VERCNT /ADD ON HANDLER BASE 2563 003633 3034 DCA INDEV /SAVE AS INPUT DEVICE POINTER 2564 003634 5600 JMP I INSETUP /RETURN 2565 003635 0000 OTSETUP,.-. /OUTPUT SETUP ROUTINE 2566 003636 1051 TAD OTDLEN /GET OUTPUT HANDLER LENGTH 2567 003637 4272 JMS BUFSETUP /ALLOCATE THE HANDLER BUFFER 2568 003640 0000 OTHFLD, .-. /WILL BE OUTPUT HANDLER FIELD NUMBER 2569 003641 3343 DCA HNDADR /SAVE AS OUTPUT HANDLER BASE ADDRESS 2570 003642 1101 TAD OTDNUM /GET OUTPUT DEVICE NUMBER 2571 003643 4350 JMS BLKSETUP /GET OUTPUT DEVICE HANDLER BLOCK 2572 003644 3345 DCA HNDBLK /STORE IN-LINE 2573 003645 7240 NL7777 /-1 2574 003646 1101 TAD OTDNUM /GET THE OUTPUT DEVICE NUMBER 2575 003647 7740 SMA SZA CLA /SKIP IF IT IS "SYS" OR "NUL" 2576 003650 5253 JMP LOADOUT /JUMP IF NOT 2577 003651 1377 TAD (SYSPAGE) /POINT AT RESIDENT HANDLER 2578 003652 5263 JMP OTHCOMMON /CONTINUE THERE 2579 2580 003653 1051 LOADOUT,TAD OTDLEN /GET OUTPUT HANDLER LENGTH 2581 003654 7006 RTL;RTL;RTL /MOVE UP TO PAGE BITS 003655 7006 003656 7006 2582 003657 0137 AND [3700] /JUST PAGE BITS 2583 003660 3002 DCA GBTEMP /STASH FOR NOW 2584 003661 1240 TAD OTHFLD /GET THE FIELD NUMBER 2585 003662 4335 JMS HNDREAD /GO READ IN THE HANDLER 2586 003663 3005 OTHCOMM,DCA VERCNT /STORE FOR NOW 2587 003664 1101 TAD OTDNUM /GET OUTPUT DEVICE NUMBER 2588 003665 4356 JMS ENTSETUP /GET ENTRY POINT VALUE 2589 003666 0146 AND [177] /JUST ENTRY POINT BITS 2590 003667 1005 TAD VERCNT /ADD ON BASE ADDRESS 2591 003670 3053 DCA OUTDEV /STORE HANDLER POINTER 2592 003671 5635 JMP I OTSETUP /RETURN 2593 / BUFFER SETUP ROUTINE. 2594 2595 / ALLOCATES A BUFFER OF AC-PASSED SIZE IN THE FIELD PASSED INLINE. 2596 2597 / THE WORK TABLE ELEMENT IS REDUCED BY THIS SIZE AND THE BUFFER ADDRESS PASSED 2598 / BACK IN THE AC. TO PREVENT HANDLER-RELATED PROBLEMS, THE BUFFER IS ALLOCATED 2599 / FROM THE REAR OF THE FIELD. 2600 2601 / CALL WITH: 2602 2603 / TAD (BUFSIZE) /AC CONTAINS BUFFER SIZE (ZERO IS INNOCUOUS) 2604 /FLDNO, .-. /FIELD NUMBER 2605 / RETURNS BUFFER ADDRESS IN AC 2606 2607 003672 0000 BUFSETU,.-. /BUFFER SETUP ROUTINE 2608 003673 3005 DCA VERCNT /SAVE PASSED COUNT 2609 003674 1672 TAD I BUFSETUP /GET FIELD NUMBER 2610 003675 1131 TAD [WORK0] /POINT TO CORRESPONDING ELEMENT IN TABLE 2611 003676 3002 DCA GBTEMP /STASH THE POINTER 2612 003677 1672 TAD I BUFSETUP /GET THE IN-LINE FIELD AGAIN 2613 003700 7650 SNA CLA /SKIP IF NOT FIELD ZERO 2614 003701 1375 TAD (AVAIL) /ELSE USE FIELD ZERO AVAILABLE ADDRESS AS BASE 2615 003702 3350 DCA BLKSETUP /SAVE BASE ADDRESS OF FIELD'S AVAILABLE SPACE 2616 003703 1005 TAD VERCNT /GET DESIRED COUNT 2617 003704 7041 CIA /WANT NEGATIVE FORM 2618 003705 1402 TAD I GBTEMP /REMOVE FROM AVAILABLE COUNT 2619 003706 3402 DCA I GBTEMP /STORE BACK 2620 003707 1402 TAD I GBTEMP /GET REDUCED VALUE 2621 003710 7112 CLL RTR;RTR;RTR /*200 003711 7012 003712 7012 2622 003713 1350 TAD BLKSETUP /ADD ON BUFFER BASE 2623 003714 2272 ISZ BUFSETUP /SKIP PAST ARGUMENT 2624 003715 5672 JMP I BUFSETUP /RETURN 2625 2626 003716 0000 MAXSETU,.-. /MAXIO SETUP ROUTINE 2627 003717 1021 TAD BLKFLG /GET BLOCK CONTROL FLAG 2628 003720 7010 RAR /MOVE TO LINK 2629 003721 7630 SZL CLA /SKIP IF INPUT IN CONTROL 2630 003722 1052 TAD OTINFO /ELSE USE OUTPUT INFORMATION WORD 2631 003723 7420 SNL /SKIP IF OUTPUT IN CONTROL 2632 003724 1041 TAD ININFO /ELSE USE INPUT INFORMATION WORD 2633 003725 4541 JMS I [SIZESETUP] /SETUP SIZE DIVISOR 2634 003726 1030 TAD DIVSOR /GET THE DIVISOR 2635 003727 7041 CIA /WANT NEGATIVE FORM 2636 003730 3064 DCA SIZINFO /SAVE FOR OTHERS 2637 003731 1047 TAD MAXIO /GET CURRENT PAGE MAXIMUM 2638 003732 4540 JMS I [DIVIDE] /MAKE IT BLOCK MAXIMUM 2639 003733 3047 DCA MAXIO /STORE IT 2640 003734 5716 JMP I MAXSETUP /RETURN 2641 / HANDLER READ-IN ROUTINE. 2642 2643 003735 0000 HNDREAD,.-. /HANDLER READ ROUTINE 2644 003736 4544 JMS I [RTL3] /MOVE UP PASSED VALUE TO FIELD BITS 2645 003737 1002 TAD GBTEMP /ADD ON PAGE BITS 2646 003740 1070 TAD TABLUNIT /ADD ON UNIT BITS 2647 003741 3344 DCA HNDFUN /STORE IN FUNCTION WORD 2648 003742 4552 JMS I [SYSIO] /CALL I/O ROUTINES TO READ IN THE HANDLER 2649 003743 0000 HNDADR, .-. /HANDLER BUFFER ADDRESS 2650 003744 0000 HNDFUN, .-. /FUNCTION WORD 2651 003745 0000 HNDBLK, .-. /BLOCK NUMBER 2652 003746 1343 TAD HNDADR /POINT TO HANDLER BASE 2653 003747 5735 JMP I HNDREAD /RETURN 2654 2655 003750 0000 BLKSETU,.-. /BLOCK NUMBER SETUP ROUTINE 2656 003751 4544 JMS I [RTL3] /PASSED OFFSET*10 2657 003752 1374 TAD (DTABLE+BOFFSET)/POINT TO BLOCK NUMBER 2658 003753 3002 DCA GBTEMP /STASH THE POINTER 2659 003754 1402 TAD I GBTEMP /GET THE BLOCK NUMBER 2660 003755 5750 JMP I BLKSETUP /RETURN 2661 2662 003756 0000 ENTSETU,.-. /ENTRY POINT SETUP ROUTINE 2663 003757 4544 JMS I [RTL3] /PASSED OFFSET*10 2664 003760 1373 TAD (DTABLE+EOFFSET)/POINT TO ENTRY POINT WORD 2665 003761 3002 DCA GBTEMP /STASH THE POINTER 2666 003762 1402 TAD I GBTEMP /GET THE ENTRY POINT WORD 2667 003763 5756 JMP I ENTSETUP /RETURN 2668 2669 003773 5205 PAGE 003774 5203 003775 5600 003776 3603 003777 5400 2670 / WORK AREA SETUP ROUTINE. 2671 2672 004000 0000 WORKSET,.-. /WORK AREA SETUP ROUTINE 2673 004001 7240 NL7777 /BACKUP 2674 004002 1131 TAD [WORK0] /POINT TO 2675 004003 3011 DCA XR2 /WORK AREA 2676 004004 1377 TAD (FIELD0-1) /POINT TO 2677 004005 3010 DCA XR1 /PRIME TABLE 2678 004006 1130 TAD [WORK0-WORKEND] /SETUP THE 2679 004007 3005 DCA VERCNT /MOVE COUNT 2680 004010 1410 WRKLUP, TAD I XR1 /GET A WORD 2681 004011 3411 DCA I XR2 /PUT A WORD 2682 004012 2005 ISZ VERCNT /DONE YET? 2683 004013 5210 JMP WRKLUP /NO, KEEP GOING 2684 004014 5600 JMP I WORKSETUP /YES, RETURN 2685 2686 004015 0000 TOGORSE,.-. /TOGETHER OR SEPARATE DECISION ROUTINE 2687 004016 1776 TAD I (TOGMAXIO) /GET TOGETHER CASE BUFFER LENGTH 2688 004017 7041 CIA /INVERT FOR TESTING 2689 004020 1047 TAD MAXIO /COMPARE TO SEPARATE CASE LENGTH 2690 004021 7700 SMA CLA /SKIP IF TOGETHER CASE IS BETTER 2691 004022 5615 JMP I TOGORSEPARATE /ELSE JUST RETURN 2692 2693 / SUBSTITUTE THE DOUBLET CASE VALUES FOR THE (ASSUMED CORRECT) SEPARATE VALUES. 2694 2695 004023 1775 TAD I (TOGFLD) /GET HANDLER FIELD NUMBER 2696 004024 3774 DCA I (INHFLD) /USE FOR INPUT HANDLER 2697 004025 1775 TAD I (TOGFLD) /GET HANDLER FIELD NUMBER 2698 004026 3773 DCA I (OTHFLD) /USE FOR OUTPUT/VERIFY HANDLER ALSO 2699 004027 1776 TAD I (TOGMAXIO) /GET BUFFER(S) SIZE 2700 004030 3047 DCA MAXIO /USE AS MAXIMUM SIZE 2701 004031 1772 TAD I (TOGIOFLD) /GET I/O FIELD 2702 004032 3771 DCA I (IOBFLD) /STASH IT 2703 004033 1770 TAD I (TOGVEFLD) /GET VERIFY FIELD 2704 004034 3767 DCA I (VEBFLD) /STASH IT 2705 004035 5615 JMP I TOGORSEPARATE /RETURN 2706 / SEPARATE CASE BEST FIT SETUP ROUTINE. 2707 2708 004036 0000 FITSEPA,.-. /BEST FIT SETUP ROUTINE 2709 004037 7450 SNA /ZERO LENGTH CASE? 2710 004040 5636 JMP I FITSEPARATE /YES, JUST RETURN ZERO 2711 004041 3005 DCA VERCNT /NO, SAVE IT FOR NOW 2712 004042 1005 TAD VERCNT /GET IT BACK 2713 004043 1126 TAD [-MAXHND] /COMPARE TO LARGEST VALUE 2714 004044 7100 CLL /CLEAR LINK FOR TEST 2715 004045 7650 SNA CLA /SKIP IF NOT LARGEST VALUE 2716 004046 7120 STL /ELSE SET LINK FOR LARGEST VALUE TEST 2717 004047 1005 TAD VERCNT /GET LENGTH AGAIN 2718 004050 4525 JMS I [BESTFIT] /TRY TO FIT IT IN 2719 004051 7510 SPA /SKIP IF IT MADE IT 2720 004052 5766 JMP I (TRYTOGETHER) /BYPASS ALL CALLERS IF NOT 2721 004053 5636 JMP I FITSEPARATE /RETURN WITH FIELD IT BEST FITS IN 2722 2723 / BEST PAIR OF BUFFERS ROUTINE. 2724 2725 / CALL WITH: 2726 2727 / WORK TABLE CURRENTLY CONTAINS AVAILABLE BUFFER SIZES. 2728 2729 / JMS I (BESTBUFFER) /CALL ROUTINE 2730 2731 / RETURNS SIZE OF (2) LARGEST BUFFERS. 2732 2733 / BSTFL1 CONTAINS FIRST FIELD CONTAINING LARGEST BUFFER. 2734 / BSTFL2 CONTAINS SECOND FIELD ALSO CONTAINING LARGEST BUFFER (MEANINGLESS IF 2735 / NO VERIFICATION BUFFER REQUIRED). 2736 2737 004054 0000 BESTBUF,.-. /BEST BUFFER ROUTINE 2738 004055 4312 JMS BIGONE /GET LARGEST ONE IN LIST 2739 004056 3023 DCA BSTFL1 /SAVE IT 2740 004057 4523 JMS I [VERCHK] /ARE WE VERIFYING? 2741 004060 5302 JMP USEONE /NO, ONE IS ENOUGH 2742 004061 1740 TAD I BESTPTR /GET THE BEST ONE 2743 004062 3342 DCA SIZE1 /SAVE IT 2744 004063 7240 NL7777 /OBLITERATE 2745 004064 3740 DCA I BESTPTR /THE BEST ONE 2746 004065 4312 JMS BIGONE /GET SECOND BEST ONE 2747 004066 3024 DCA BSTFL2 /SAVE IT 2748 004067 1342 TAD SIZE1 /GET FIRST SIZE 2749 004070 7110 CLL RAR /%2 2750 004071 7041 CIA /INVERT FOR TEST 2751 004072 1740 TAD I BESTPTR /COMPARE TO SECOND BEST 2752 004073 7700 SMA CLA /SKIP IF FIRST%2 IS LARGER 2753 004074 5302 JMP USEONE /JUMP IF NOT 2754 004075 1023 TAD BSTFL1 /GET FIRST ONE 2755 004076 3024 DCA BSTFL2 /USE FOR BOTH 2756 004077 1342 TAD SIZE1 /GET FIRST SIZE 2757 004100 7110 CLL RAR /%2 2758 004101 7410 SKP /DON'T USE OTHER CASE! 2759 004102 1740 USEONE, TAD I BESTPTR /GET BEST AVAILABLE SIZE 2760 004103 3002 DCA GBTEMP /SAVE FOR NOW 2761 004104 1041 TAD ININFO /GET INPUT INFORMATION WORD 2762 004105 4560 JMS I [MOD] /MAKE SIZE MODULO (INPUT FACTOR) 2763 004106 1052 TAD OTINFO /GET OUTPUT INFORMATION WORD 2764 004107 4560 JMS I [MOD] /MAKE SIZE MODULO (OUTPUT FACTOR) 2765 004110 1002 TAD GBTEMP /GET MODULATED RESULT 2766 004111 5654 JMP I BESTBUFFER /RETURN 2767 2768 004112 0000 BIGONE, .-. /FIND LARGEST IN LIST ROUTINE 2769 004113 7240 NL7777 /SETUP THE 2770 004114 3002 DCA GBTEMP /DUMMY VALUE 2771 004115 1131 TAD [WORK0] /POINT AT THE 2772 004116 3341 DCA BIGPTR /WORKING LIST 2773 004117 1130 TAD [WORK0-WORKEND] /SETUP THE 2774 004120 3005 DCA VERCNT /LIST COUNT 2775 004121 1741 BIGLUP, TAD I BIGPTR /GET A WORD 2776 004122 7041 CIA /INVERT FOR TEST 2777 004123 1002 TAD GBTEMP /COMPARE TO PREVAILING VALUE 2778 004124 7700 SMA CLA /SKIP IF LARGER 2779 004125 5332 JMP BIGNEXT /JUMP IF NOT 2780 004126 1741 TAD I BIGPTR /GET LATEST 2781 004127 3002 DCA GBTEMP /MAKE IT THE LARGEST SO FAR 2782 004130 1341 TAD BIGPTR /GET THE POINTER 2783 004131 3340 DCA BESTPTR /STASH IT 2784 004132 2341 BIGNEXT,ISZ BIGPTR /BUMP TO NEXT 2785 004133 2005 ISZ VERCNT /DONE ALL? 2786 004134 5321 JMP BIGLUP /NO, KEEP GOING 2787 004135 1340 TAD BESTPTR /GET THE POINTER 2788 004136 1127 TAD [-WORK0] /MAKE IT RELATIVE 2789 004137 5712 JMP I BIGONE /RETURN 2790 2791 004140 0000 BESTPTR,.-. /POINTER TO LARGEST ELEMENT 2792 004141 0000 BIGPTR, .-. /POINTER TO LIST 2793 004142 0000 SIZE1, .-. /SIZE OF LARGEST BUFFER 2794 2795 004166 3436 PAGE 004167 3537 004170 3555 004171 3517 004172 3553 004173 3640 004174 3603 004175 3552 004176 3554 004177 1160 2796 / MESSAGES. 2797 2798 004200 3603 CDNMSG, TEXT "^C^OPY ^F^INISHED" 004201 3617 004202 2031 004203 4036 004204 0636 004205 1116 004206 1123 004207 1005 004210 0400 2799 004211 3626 CERMSG, TEXT "^V^ERIFY^" 004212 3605 004213 2211 004214 0631 004215 3600 2800 004216 3603 CFAMSG, TEXT "^C^OPY ^F^AILED!^" 004217 3617 004220 2031 004221 4036 004222 0636 004223 0111 004224 1405 004225 0441 004226 3600 2801 004227 3603 CMERMSG,TEXT "^C^OMPARISON ^E^RROR!%^" 004230 3617 004231 1520 004232 0122 004233 1123 004234 1716 004235 4036 004236 0536 004237 2222 004240 1722 004241 4145 004242 3600 2802 004243 3603 COMMSG, TEXT "^C^OMPARE ^" 004244 3617 004245 1520 004246 0122 004247 0540 004250 3600 2803 004251 3603 COPMSG, TEXT "^C^OPY " 004252 3617 004253 2031 004254 4000 2804 004255 3611 DUMMSG, TEXT "^I AM A DUMMY BLOCK, NOT DATA!!" 004256 4001 004257 1540 004260 0140 004261 0425 004262 1515 004263 3140 004264 0214 004265 1703 004266 1354 004267 4016 004270 1724 004271 4004 004272 0124 004273 0141 004274 4100 2805 004275 4036 EONMSG, TEXT " ^E^RROR ON ^" 004276 0536 004277 2222 004300 1722 004301 4017 004302 1640 004303 3600 2806 004304 4006 FROMSG, TEXT " FROM ^" 004305 2217 004306 1540 004307 3600 2807 004310 3611 IERMSG, TEXT "^I^NPUT" 004311 3616 004312 2025 004313 2400 2808 004314 3616 NOMSG, TEXT "^N^O!%^" 004315 3617 004316 4145 004317 3600 2809 004320 3617 OERMSG, TEXT "^O^UTPUT^" 004321 3625 004322 2420 004323 2524 004324 3600 2810 004325 3622 REPMSG, TEXT "^R^EPEATING ^L^ATEST ^O^PERATION%" 004326 3605 004327 2005 004330 0124 004331 1116 004332 0740 004333 3614 004334 3601 004335 2405 004336 2324 004337 4036 004340 1736 004341 2005 004342 2201 004343 2411 004344 1716 004345 4500 2811 004346 3622 RETMSG, TEXT "^R^ETRY? " 004347 3605 004350 2422 004351 3177 004352 4000 2812 004353 3601 RUSMSG, TEXT "^A^RE ^Y^OU ^S^URE? ^" 004354 3622 004355 0540 004356 3631 004357 3617 004360 2540 004361 3623 004362 3625 004363 2205 004364 7740 004365 3600 2813 004366 3623 SKPBMSG,TEXT "^S^KIP ^P^AST ^P^ROBLEM ^B^LOCK? " 004367 3613 004370 1120 004371 4036 004372 2036 004373 0123 004374 2440 004375 3620 004376 3622 004377 1702 004400 1405 004401 1540 004402 3602 004403 3614 004404 1703 004405 1377 004406 4000 2814 004407 3623 SKPWMSG,TEXT "^S^KIP TO ^N^EXT ^W^ORD? " 004410 3613 004411 1120 004412 4024 004413 1740 004414 3616 004415 3605 004416 3024 004417 4036 004420 2736 004421 1722 004422 0477 004423 4000 2815 004424 4024 TOMSG, TEXT " TO ^" 004425 1740 004426 3600 2816 004427 3603 VDNMSG, TEXT "^C^OMPARISON ^F^INISHED" 004430 3617 004431 1520 004432 0122 004433 1123 004434 1716 004435 4036 004436 0636 004437 1116 004440 1123 004441 1005 004442 0400 2817 004443 3603 VFAMSG, TEXT "^C^OMPARISON ^F^AILED!^" 004444 3617 004445 1520 004446 0122 004447 1123 004450 1716 004451 4036 004452 0636 004453 0111 004454 1405 004455 0441 004456 3600 2818 004457 3626 VREMSG, TEXT "^V^ERIFY ^R^EAD" 004460 3605 004461 2211 004462 0631 004463 4036 004464 2236 004465 0501 004466 0400 2819 004467 3627 WDBMSG, TEXT "^W^RITE ^D^UMMY ^B^LOCK? " 004470 3622 004471 1124 004472 0540 004473 3604 004474 3625 004475 1515 004476 3140 004477 3602 004500 3614 004501 1703 004502 1377 004503 4000 2820 004504 4036 WERMSG, TEXT " ^[^WITH ^E^RRORS^]" 004505 3336 004506 2711 004507 2410 004510 4036 004511 0536 004512 2222 004513 1722 004514 2336 004515 3500 2821 004516 3631 YESMSG, TEXT "^Y^ES!%" 004517 3605 004520 2341 004521 4500 2822 / ERROR MESSAGES. 2823 2824 004522 3602 BDEVUNI,TEXT "^B^AD ^D^EVICE ^U^NIT" 004523 3601 004524 0440 004525 3604 004526 3605 004527 2611 004530 0305 004531 4036 004532 2536 004533 1611 004534 2400 2825 004535 3615 EQUMISS,TEXT "^M^ISSING ^L^ENGTH ^P^ARAMETER^" 004536 3611 004537 2323 004540 1116 004541 0740 004542 3614 004543 3605 004544 1607 004545 2410 004546 4036 004547 2036 004550 0122 004551 0115 004552 0524 004553 0522 004554 3600 2826 004555 3611 INVMSG, TEXT "^I^NVALID ^C^OMMAND - ^" 004556 3616 004557 2601 004560 1411 004561 0440 004562 3603 004563 3617 004564 1515 004565 0116 004566 0440 004567 5540 004570 3600 2827 004571 3615 MISSBLO,TEXT "^M^ISSING ^B^LOCK ^N^UMBER^" 004572 3611 004573 2323 004574 1116 004575 0740 004576 3602 004577 3614 004600 1703 004601 1340 004602 3616 004603 3625 004604 1502 004605 0522 004606 3600 2828 004607 3615 MISSCOL,TEXT "^M^ISSING ^C^OLON" 004610 3611 004611 2323 004612 1116 004613 0740 004614 3603 004615 3617 004616 1417 004617 1600 2829 004620 3615 MISSLR, TEXT "^M^ISSING ^L^OWER ^R^ANGE ^B^LOCK" 004621 3611 004622 2323 004623 1116 004624 0740 004625 3614 004626 3617 004627 2705 004630 2240 004631 3622 004632 3601 004633 1607 004634 0540 004635 3602 004636 3614 004637 1703 004640 1300 2830 004641 3615 MISSUR, TEXT "^M^ISSING ^U^PPER ^R^ANGE ^B^LOCK" 004642 3611 004643 2323 004644 1116 004645 0740 004646 3625 004647 3620 004650 2005 004651 2240 004652 3622 004653 3601 004654 1607 004655 0540 004656 3602 004657 3614 004660 1703 004661 1300 2831 004662 3615 MULSEP, TEXT "^M^ULTIPLE ^I/O S^EPARATORS" 004663 3625 004664 1424 004665 1120 004666 1405 004667 4036 004670 1157 004671 1740 004672 2336 004673 0520 004674 0122 004675 0124 004676 1722 004677 2300 2832 004700 3615 MULSPEC,TEXT "^M^ULTIPLE ^L^ENGTH/^R^ANGE ^S^PECIFICATIONS^" 004701 3625 004702 1424 004703 1120 004704 1405 004705 4036 004706 1436 004707 0516 004710 0724 004711 1057 004712 3622 004713 3601 004714 1607 004715 0540 004716 3623 004717 3620 004720 0503 004721 1106 004722 1103 004723 0124 004724 1117 004725 1623 004726 3600 2833 004727 3611 NGMSG, TEXT "^I^NSUFFICIENT ^M^EMORY FOR ^R^EQUESTED ^O^PERATION!^" 004730 3616 004731 2325 004732 0606 004733 1103 004734 1105 004735 1624 004736 4036 004737 1536 004740 0515 004741 1722 004742 3140 004743 0617 004744 2240 004745 3622 004746 3605 004747 2125 004750 0523 004751 2405 004752 0440 004753 3617 004754 3620 004755 0522 004756 0124 004757 1117 004760 1641 004761 3600 2834 004762 3615 NODEV, TEXT "^M^ISSING ^D^EVICE ^N^AME" 004763 3611 004764 2323 004765 1116 004766 0740 004767 3604 004770 3605 004771 2611 004772 0305 004773 4036 004774 1636 004775 0115 004776 0500 2835 004777 4536 NORMSG, TEXT "%^C^ANNOT ^R^EPEAT ^L^ATEST ^O^PERATION!%" 005000 0336 005001 0116 005002 1617 005003 2440 005004 3622 005005 3605 005006 2005 005007 0124 005010 4036 005011 1436 005012 0124 005013 0523 005014 2440 005015 3617 005016 3620 005017 0522 005020 0124 005021 1117 005022 1641 005023 4500 2836 005024 4036 NOTAVL, TEXT " ^N^OT ^A^VAILABLE^" 005025 1636 005026 1724 005027 4036 005030 0136 005031 2601 005032 1114 005033 0102 005034 1405 005035 3600 2837 005036 3615 NOUNIT, TEXT "^M^ISSING ^D^EVICE ^U^NIT" 005037 3611 005040 2323 005041 1116 005042 0740 005043 3604 005044 3605 005045 2611 005046 0305 005047 4036 005050 2536 005051 1611 005052 2400 2838 005053 3616 NULSEP, TEXT "^N^O ^I/O S^EPARATORS" 005054 3617 005055 4036 005056 1157 005057 1740 005060 2336 005061 0520 005062 0122 005063 0124 005064 1722 005065 2300 2839 005066 3616 NULSPEC,TEXT "^N^O ^L^ENGTH/^R^ANGE ^S^PECIFICATIONS^" 005067 3617 005070 4036 005071 1436 005072 0516 005073 0724 005074 1057 005075 3622 005076 3601 005077 1607 005100 0540 005101 3623 005102 3620 005103 0503 005104 1106 005105 1103 005106 0124 005107 1117 005110 1623 005111 3600 2840 005112 3606 OVFLMSG,TEXT "^F^UNCTION ^E^XCEEDS ^D^EVICE ^L^IMITS!" 005113 3625 005114 1603 005115 2411 005116 1716 005117 4036 005120 0536 005121 3003 005122 0505 005123 0423 005124 4036 005125 0436 005126 0526 005127 1103 005130 0540 005131 3614 005132 3611 005133 1511 005134 2423 005135 4100 2841 PAGE /ENSURE GOOD ALIGNMENT 2842 2843 DTABLE= . /DEVICE TABLE LOADED HERE 2844 2845 SYSPAGE=DTABLE+200 /"SYS" HANDLER LOADED HERE 2846 2847 AVAIL= SYSPAGE+200 /AVAILABLE SPACE FOR BUFFERS, ETC. 2848 / ONCE-ONLY INITIALIZATION. 2849 2850 005200 1777 INITIAL,TAD I (P7TLS) /GET "TLSIOT" 2851 005201 3776 DCA I (COPZAP) /MAKE IT RESTART WITH "TLSIOT", NOT COME TO US 2852 005202 4775 JMS I (XORSW) /SETUP USER PREFERENCE SWITCH SETTINGS 2853 005203 1573 TAD I [SWMX] /GET /M-/X SWITCHES 2854 005204 0134 AND [10] /JUST /U BIT 2855 005205 7650 SNA CLA /SKIP IF SET 2856 005206 5215 JMP IOCHEK /JUMP IF NOT 2857 005207 1164 TAD [CLA!400] /GET A "CLA" INSTRUCTION 2858 005210 3774 DCA I (CASZP1) /PREVENT CASE CHANGE 2859 005211 1164 TAD [CLA!400] /GET A "CLA" INSTRUCTION 2860 005212 3773 DCA I (CASZP2) /PREVENT CASE CHANGE 2861 005213 1372 TAD (SPA) /GET AN "SPA" 2862 005214 3771 DCA I (GCMZAP) /PREVENT LOWER-CASE INPUT 2863 005215 1564 IOCHEK, TAD I [SBOOT] /GET BOOTSTRAP INSTRUCTION 2864 005216 1370 TAD (-JMSSYSIO) /COMPARE TO POSSIBLE VALUE 2865 005217 7650 SNA CLA /SKIP IF DIFFERENT 2866 005220 5224 JMP CHKCOVRLAY /JUMP IF IT MATCHES 2867 005221 2767 ISZ I (CHKKRS) /TURN "KRSIOT" 2868 005222 2767 ISZ I (CHKKRS) /INTO "KRBIOT" 2869 005223 3766 DCA I (CHKKCC) /DESTROY "KCCIOT" 2870 005224 7326 CHKCOVR,NL0002 /SET "C" BIT MASK 2871 005225 0765 AND I (SCRSIZE) /GET THE BIT 2872 005226 7650 SNA CLA /SKIP IF "C" BIT SET 2873 005227 5252 JMP NOCON /JUMP IF NOT 2874 005230 3776 DCA I (COPZAP) /DESTROY "TLSIOT" 2875 005231 1765 TAD I (SCRSIZE) /GET THE CORE SIZE WORD 2876 005232 7012 RTR;RAR /MOVE OVER AND 005233 7010 2877 005234 0364 AND (70) /ISOLATE MCS BITS 2878 005235 1363 TAD (CIF 10) /TURN INTO "CIF MCS+10" 2879 005236 3762 DCA I (P7TSF) /STORE OVER "TSFIOT" 2880 005237 1761 TAD I (P7JMP) /GET "JMP I P7OUT" 2881 005240 3777 DCA I (P7TLS) /STORE OVER "TLSIOT" 2882 005241 1360 TAD (JMS OUTCON) /GET OUTPUT CALL 2883 005242 3761 DCA I (P7JMP) /STORE OVER "JMP I P7OUT" 2884 005243 1762 TAD I (P7TSF) /GET "CIF MCS+10" 2885 005244 3757 DCA I (CHKKSF) /STORE OVER "KSFIOT" 2886 005245 1756 TAD I (CHKJMP) /GET "JMP I CTLCTST" 2887 005246 3767 DCA I (CHKKRS) /STORE OVER "KRSIOT" ("KRBIOT") 2888 005247 1355 TAD (JMS INCON) /GET INPUT CALL 2889 005250 3756 DCA I (CHKJMP) /STORE OVER "JMP I CTLCTST" 2890 005251 3766 DCA I (CHKKCC) /DESTROY "KCCIOT" 2891 005252 4574 NOCON, JMS I [SCRIBE] /GIVE THEM THE 2892 005253 1524 ANNMSG /ANNOUNCEMENT MESSAGE 2893 005254 7332 NL2000 /SET /N MASK 2894 005255 0573 AND I [SWMX] /GET THE BIT 2895 005256 7640 SZA CLA /SKIP IF OFF 2896 005257 5263 JMP CLRVERIFY /JUMP IF ON 2897 005260 1262 TAD CLRSKP/(SKP CLA)/GET ZAP VALUE 2898 005261 3754 DCA I (SLNZAP) /PREVENT VERIFY-ONLY SWITCH CONSIDERATION 2899 005262 7610 CLRSKP, SKP CLA /ENSURE VERIFICATION 2900 005263 3006 CLRVERI,DCA VERSW /PREVENT VERIFICATION 2901 005264 1765 TAD I (SCRSIZE) /GET CORE SIZE WORD 2902 005265 0364 AND (70) /JUST LCS BITS 2903 005266 7450 SNA /SKIP IF SOMETHING THERE 2904 005267 5320 JMP TEST7K /JUMP IF NOT 2905 005270 1126 TAD [-40] /CHECK FOR 20K 2906 005271 7500 SMA /SKIP IF LESS AVAILABLE 2907 005272 5325 JMP GOT20K /JUMP IF 20K OR MORE 2908 005273 1134 TAD [-30+40] /CHECK FOR 16K 2909 005274 7450 SNA /SKIP IF OTHER 2910 005275 5306 JMP GOT16K /JUMP IF 16K 2911 005276 1134 TAD [-20+30] /CHECK FOR 12K 2912 005277 7650 SNA CLA /SKIP IF 8K 2913 005300 5313 JMP GOT12K /JUMP IF 12K 2914 005301 4753 GOT8K, JMS I (TESTMORE) /CHECK IF MORE AVAILABLE 2915 005302 5334 JMP SET8K /NO MORE, WE HAVE 8K 2916 005303 5313 JMP GOT12K /EXTRA FIELD AVAILABLE, USE 12K 2917 005304 1352 GOT11K, TAD (30) /3/4 FIELD AVAILABLE 2918 005305 5333 JMP SET11K /CONTINUE THERE 2919 2920 005306 4753 GOT16K, JMS I (TESTMORE) /CHECK IF MORE AVAILABLE 2921 005307 5330 JMP SET16K /NO MORE, WE HAVE 16K 2922 005310 5326 JMP SET20K /EXTRA FIELD AVAILABLE, USE 20K 2923 005311 1352 GOT19K, TAD (30) /3/4 FIELD AVAILABLE 2924 005312 5327 JMP SET19K /CONTINUE THERE 2925 2926 005313 4753 GOT12K, JMS I (TESTMORE) /CHECK IF MORE AVAILABLE 2927 005314 5332 JMP SET12K /NO MORE, WE HAVE 12K 2928 005315 5306 JMP GOT16K /EXTRA FIELD AVAILABLE, USE 16K 2929 005316 1352 GOT15K, TAD (30) /3/4 FIELD AVAILABLE 2930 005317 5331 JMP SET15K /CONTINUE THERE 2931 2932 005320 4753 TEST7K, JMS I (TESTMORE) /TEST FOR MORE MEMORY 2933 005321 5336 JMP SET4K /NO MORE, WE HAVE 4K 2934 005322 5301 JMP GOT8K /EXTRA FIELD AVAILABLE, USE 8K 2935 005323 1352 GOT7K, TAD (30) /3/4 FIELD AVAILABLE 2936 005324 5335 JMP SET7K /CONTINUE THERE 2937 2938 005325 7200 GOT20K, CLA /CLEAN UP 2939 005326 1157 SET20K, TAD [40] /GET WHOLE FIELD VALUE 2940 005327 3751 SET19K, DCA I (FIELD4) /STASH FIELD FOUR VALUE 2941 005330 1157 SET16K, TAD [40] /GET WHOLE FIELD VALUE 2942 005331 3750 SET15K, DCA I (FIELD3) /STASH FIELD THREE VALUE 2943 005332 1157 SET12K, TAD [40] /GET WHOLE FIELD VALUE 2944 005333 3747 SET11K, DCA I (FIELD2) /STASH FIELD TWO VALUE 2945 005334 1157 SET8K, TAD [40] /GET WHOLE FIELD VALUE 2946 005335 3746 SET7K, DCA I (FIELD1) /STASH FIELD ONE VALUE 2947 005336 5745 SET4K, JMP I (MORINIT) /CONTINUE THERE 2948 005345 1400 PAGE 005346 1162 005347 1163 005350 1164 005351 1165 005352 0030 005353 1442 005354 0222 005355 4031 005356 1636 005357 1635 005360 4033 005361 1665 005362 1664 005363 6212 005364 0070 005365 7611 005366 1650 005367 1637 005370 3540 005371 3215 005372 7510 005373 2055 005374 2013 005375 1503 005376 0201 005377 1666 2949 *GIVBUFFER /OVER FILE INPUT BUFFER 2950 2951 / INITIALIZATION CONTINUES HERE. 2952 2953 001400 7332 MORINIT,NL2000 /SET /B MASK 2954 001401 0575 AND I [SWAL] /GET /B BIT 2955 001402 7650 SNA CLA /SKIP IF SET 2956 001403 3777 DCA I (BZAP) /CLEAR HARDCOPY MODE IF NOT SET 2957 001404 7326 NL0002 /SETUP /W MASK 2958 001405 0573 AND I [SWMX] /GET THE /W BIT 2959 001406 7650 SNA CLA /SKIP IF SET 2960 001407 5214 JMP SETPOINTER /JUMP IF NOT 2961 001410 1376 TAD (SKPWMSG) /CHANGE THE 2962 001411 3775 DCA I (WZAP1) /MESSAGE POINTER 2963 001412 1374 TAD (NEXTWD) /CHANGE THE 2964 001413 3773 DCA I (WZAP2) /NEXT ADDRESS POINTER 2965 001414 1772 SETPOIN,TAD I (SOUTFLS) /GET OUTPUT FILE COUNT 2966 001415 1031 TAD GFLPTR /UPDATE FILE POINTER 2967 001416 3031 DCA GFLPTR /STORE IT BACK 2968 001417 1771 TAD I (SBTFUN) /GET SYSTEM BOOTSTRAP UNIT 2969 001420 0153 AND [7] /JUST UNIT BITS 2970 001421 3070 DCA TABLUNIT /STORE AS DEVICE HANDLER LOAD UNIT 2971 001422 1070 TAD TABLUNIT /GET DEVICE LOAD UNIT 2972 001423 1155 TAD [1^100] /TURN INTO READ FUNCTION 2973 001424 3227 DCA DTBFUN /STORE IN-LINE 2974 001425 4552 JMS I [SYSIO] /CALL I/O ROUTINES 2975 001426 5200 DTABLE /HANDLER TABLE BUFFER 2976 001427 0100 DTBFUN, 1^100+.-. /UNIT BITS WILL BE FILLED IN 2977 001430 0122 HANDBLK /BLOCK NUMBER 2978 001431 1227 TAD DTBFUN /GET READ FUNCTION 2979 001432 3237 DCA SYSFUN /STORE IN-LINE 2980 001433 1770 TAD I (DTABLE+BOFFSET)/GET FIRST BLOCK ENTRY ("SYS" IS FIRST) 2981 001434 3240 DCA SYSBLK /STORE IN-LINE 2982 001435 4552 JMS I [SYSIO] /CALL I/O ROUTINES 2983 001436 5400 SYSPAGE /BUFFER FOR HANDLERS 2984 001437 0100 SYSFUN, 1^100+.-. /UNIT BITS WILL BE FILLED IN 2985 001440 0000 SYSBLK, .-. /BLOCK NUMBER WILL BE FILLED IN 2986 001441 5563 JMP I [RESTART] /GO START IT UP 2987 001442 0000 TESTMOR,.-. /TEST FOR MEMORY ROUTINE 2988 001443 1575 TAD I [SWAL] /GET /A-/L SWITCHES 2989 001444 0367 AND (1000) /JUST /C SWITCH 2990 001445 7650 MORZAP, SNA CLA /**** ZAPPED **** CLA!400 2991 001446 5642 JMP I TESTMORE /FORGET IT 2992 001447 1164 TAD [CLA!400] /GET "CLA" INSTRUCTION 2993 001450 3245 DCA MORZAP /EFFECTIVELY PREVENT SUBSEQUENT CALL 2994 001451 1766 TAD I (SCRSIZE) /GET CORE SIZE WORD 2995 001452 0365 AND (70) /JUST LCS BITS 2996 001453 7041 CIA /INVERT FOR TESTS 2997 001454 3320 DCA LCSTEMP /SAVE FOR LATER 2998 001455 1766 TAD I (SCRSIZE) /GET THE CORE SIZE WORD AGAIN 2999 001456 7012 RTR;RAR /MOVE DOWN AND 001457 7010 3000 001460 0365 AND (70) /ISOLATE MCS BITS 3001 001461 1320 TAD LCSTEMP /COMPARE TO LCS VALUE 3002 001462 7750 SPA SNA CLA /SKIP IF MCS>LCS 3003 001463 5266 JMP PHYTEST /ELSE TRY PCS BITS 3004 001464 2242 SOMENTR,ISZ TESTMORE /BUMP RETURN ADDRESS 3005 001465 5642 JMP I TESTMORE /TAKE SKIP RETURN 3006 3007 001466 7326 PHYTEST,NL0002 /SETUP "C" BIT MASK 3008 001467 0766 AND I (SCRSIZE) /GET THE BIT 3009 001470 7650 SNA CLA /SKIP IF CONSOLE PRESENT 3010 001471 1766 TAD I (SCRSIZE) /GET CORE SIZE WORD AGAIN 3011 001472 7012 RTR;RTR;RTR /MOVE DOWN AND 001473 7012 001474 7012 3012 001475 0365 AND (70) /ISOLATE PCS BITS 3013 001476 1320 TAD LCSTEMP /COMPARE TO LCS VALUE 3014 001477 7750 SPA SNA CLA /SKIP IF PCS>LCS (LCS=MCS HERE) 3015 001500 5642 JMP I TESTMORE /FORGET IT 3016 001501 2242 ISZ TESTMORE /TAKE EXTRA SKIP RETURN 3017 001502 5264 JMP SOMENTRY /CONTINUE THERE 3018 3019 001503 0000 XORSW, .-. /XOR OPTION SWITCH ROUTINE 3020 001504 1722 XORLUP, TAD I SWPTR /GET A SWITCH WORD 3021 001505 0721 AND I OPTPTR /AND AGAINST OPTION WORD 3022 001506 7041 CIA /INVERT 3023 001507 7104 CLL RAL /*2 3024 001510 1722 TAD I SWPTR /ADD ON SWITCH WORD 3025 001511 1721 TAD I OPTPTR /ADD ON OPTION WORD 3026 001512 3722 DCA I SWPTR /STORE XOR-ED VALUE 3027 001513 2322 ISZ SWPTR /BUMP TO NEXT 3028 001514 2321 ISZ OPTPTR /BUMP TO NEXT 3029 001515 2323 ISZ SWCNT /DONE ALL YET? 3030 001516 5304 JMP XORLUP /NO, KEEP GOING 3031 001517 5703 JMP I XORSW /YES, RETURN 3032 001520 0000 LCSTEMP,.-. /TEMPORARY 3033 001521 0000 OPTPTR, XORSWS /OPTION WORD POINTER 3034 001522 7604 SWPTR, SWAL /PASSED SWITCHES POINTER 3035 001523 7775 SWCNT, -3 /OPTION WORD COUNT 3036 3037 001524 4536 ANNMSG, TEXT "%^BLKCPY V" /OPENING MESSAGE 001525 0214 001526 1303 001527 2031 001530 4026 3038 001531 6160 COPVERSION%12^66+COPVERSION+6060/ 3039 001532 3606 "^^100+COPREVISION / 3040 001533 3600 TEXT "^" /THIS ENDS THE MESSAGE 3041 3042 001565 0070 PAGE 001566 7611 001567 1000 001570 5203 001571 7602 001572 7607 001573 1173 001574 0521 001575 1050 001576 4407 001577 3304 3043 000123 1757 $ /THAT'S ALL FOLK! 000124 6201 000125 3057 000126 7740 000127 6612 000130 7773 000131 1166 000132 0017 000133 1272 000134 0010 000135 2741 000136 0072 000137 3700 000140 2355 000141 2312 000142 1710 000143 0060 000144 1721 000145 0136 000146 0177 000147 7777 000150 0331 000151 1600 000152 7640 000153 0007 000154 0015 000155 0100 000156 0077 000157 0040 000160 2125 000161 7760 000162 7770 000163 0202 000164 7600 000165 4000 000166 2142 000167 1725 000170 1653 000171 2262 000172 2066 000173 7605 000174 2005 000175 7604 000176 2000 000177 1701 ANNMSG 1524 ASKRET 2057 AVAIL 5600 BACKSP 3275 BADBLK 2735 BADCOL 2733 BADDIG 3055 BADUNI 2725 BCSW 0020 BDEVUN 4522 BDUNIT 2731 BESTBU 4054 BESTFI 3057 BESTPT 4140 BFIT 3150 BFL0SW 3152 BFLENG 3151 BFLOOP 3101 BFNEXT 3126 BFNUMB 3153 BFPZEX 3154 BIGLUP 4121 BIGNEX 4132 BIGONE 4112 BIGPTR 4141 BLKCAL 2200 BLKCPY 0200 BLKFLG 0021 BLKSET 3750 BLKSW 2747 BLOCK 0022 BOFFSE 0003 BSTFL1 0023 BSTFL2 0024 BUFCAL 0236 BUFSET 3672 BZAP 3304 CASZP1 2013 CASZP2 2055 CDNMSG 4200 CERMSG 4211 CFAMSG 4216 CHKCLR 1631 CHKCOV 5224 CHKJMP 1636 CHKKCC 1650 CHKKRS 1637 CHKKSF 1635 CHKUP 1606 CHTBL 1125 CLRLEN 0216 CLRSKP 5262 CLRVER 5263 CMDAGN 2401 CMDSUB 3344 CMECNT 0014 CMECOM 0710 CMERMS 4227 CMERRO 0675 CMPERR 0715 CMPGUI 0303 CMPLUP 0512 CNTRLB 0000 COMBEN 1366 COMBUF 1272 COMMSG 4243 COMPLA 2550 COPMSG 4251 COPREV 0006 COPVER 0012 COPYTO 0305 COPZAP 0201 CRENTR 3244 CRLF 1701 CTLCTS 1633 DELETL 3246 DEVLAT 0025 DEVNUM 0026 DEVPTR 0027 DIFFOU 3506 DISPLA 0725 DIVDON 2237 DIVIDE 2355 DIVLUP 2363 DIVSOR 0030 DMAGAI 2325 DMALUP 2331 DMATCH 2322 DMBCDF 0644 DMDIFF 2344 DMLOOP 0642 DMNEXT 2351 DOIN 2467 DOIN2 2477 DOIT 0323 DOITOK 0244 DOMORE 2470 DONECO 0557 DTABLE 5200 DTBFUN 1427 DUMLUP 0636 DUMMSG 4255 DVBLPR 2262 DVILUP 2221 ENDSCA 2444 ENDTES 3135 ENTSET 3756 EOFFSE 0005 EONMSG 4275 EQUMIS 4535 ESCAN 2561 ESCAPS 0001 ESCRIB 2000 ESCRLF 1710 FAILUR 0620 FIELD0 1161 FIELD1 1162 FIELD2 1163 FIELD3 1164 FIELD4 1165 FITSEP 4036 FROMSG 4304 GBSETU 1056 GBTEMP 0002 GCMBEE 3235 GCMEND 3364 GCMLUP 3351 GCMZAP 3215 GDIGIT 3155 GDTEST 3033 GETBUF 3200 GETCAG 3002 GETCHR 3000 GETCMD 2400 GETDIG 3041 GETINP 3205 GETNAG 3022 GETNUM 3017 GETPTR 0003 GETSIZ 2142 GFLPTR 0031 GIVBAK 1241 GIVBLK 1262 GIVBPT 1260 GIVBUF 1400 GIVCHR 1200 GIVEOB 1257 GIVEOF 1226 GIVEOL 1222 GIVEOT 1267 GIVEXI 1217 GIVFUN 1261 GIVPTR 0032 GIVTRI 1202 GLATES 3156 GNUM 3157 GOT11K 5304 unreferenced GOT12K 5313 GOT15K 5316 unreferenced GOT16K 5306 GOT19K 5311 unreferenced GOT20K 5325 GOT7K 5323 unreferenced GOT8K 5301 GOTCR 3254 GOTEQU 2701 GOTESC 3240 GOTHT 3221 GOTINP 3206 GOTMIN 2665 GRESTA 3201 GUIDCO 0311 GVRSET 1252 HANDBL 0122 HARDRU 3316 HBSETU 3400 HI 0033 HNDADR 3743 HNDBLK 3745 HNDFUN 3744 HNDREA 3735 IACS 6163 IERMSG 4310 INADR 0076 INBLK 0100 INCFLD 0427 INCHAR 0015 INCON 0031 INDEV 0034 INDLEN 0035 INDNUM 0074 INECNT 0016 INEND 0036 INERRO 0600 INFLD 0037 INFO 0040 INFUN 0077 INHCOM 3626 INHFLD 3603 ININFO 0041 INITIA 5200 INPAGN 0420 INPAST 0433 INPUT 1600 INSETU 3600 INTOIN 0350 INUNIT 0075 INUPDA 0423 INVMSG 4555 IOBFLD 3517 IOCHEK 5215 IOCHK 0744 IODONE 0547 IOK 0413 IOLOOP 0400 IORESE 0543 IOSW 0042 ISNO 2105 ISYES 2102 JMSC 4200 JMSSYS 4240 KCCIOT 6032 KEYCOD 6030 KRBIOT 6036 unreferenced KRSIOT 6034 KSFIOT 6031 LCSTEM 1520 LDA 1000 LENCOM 2507 LENGTH 0043 LENSET 1744 LFLAG 0044 LFVIEW 3257 LINC 6141 LO 0045 LOADIN 3616 LOADOU 3653 LOFFSE 0004 LSCAN 0046 MAXHND 0040 MAXIO 0047 MAXSET 3716 MINOK 2705 MISSBL 4571 MISSCO 4607 MISSEP 2505 MISSEQ 2737 MISSLR 4620 MISSPE 2513 MISSUR 4641 MOD 2125 MORINI 1400 MORZAP 1445 MSCAN 2562 MULSEP 4662 MULSPE 4700 MUYLUP 2206 NAENTR 2557 NAMATC 2636 NAMBUF 2750 NAMCNT 0050 NAMENF 2707 NAMLUP 2622 NAMPTR 0004 NAMSET 2741 NEXTWD 0521 NGMSG 4727 NL0001 7201 NL0002 7326 NL2000 7332 NL4000 7330 NL5777 7352 NL7775 7346 NL7777 7240 NOCON 5252 NODEV 4762 NOHIGH 2677 NOMSG 4314 NONAME 2663 NOPROB 0564 NORMSG 4777 NOTAVL 5024 NOUNIT 5036 NOVBUF 3547 NULLIN 2515 NULSEP 5053 NULSPE 5066 OCTLUP 1731 OERMSG 4320 OPTPTR 1521 OTBYPA 0460 OTCFLD 0454 OTDLEN 0051 OTDNUM 0101 OTECNT 0017 OTERRO 0655 OTFIRS 3420 OTHCOM 3663 OTHFLD 3640 OTINFO 0052 OTSETU 3635 OTTOOT 0360 OTUNIT 0102 OTUPDA 0435 OUTADR 0103 OUTAGN 0446 OUTBLK 0105 OUTCON 0033 OUTDEV 0053 OUTEND 0054 OUTFUN 0104 OVFL 2257 OVFLMS 5112 P7AGN 1655 P7CH 1653 P7JMP 1665 P7OUT 1663 P7TEMP 1767 P7TLS 1666 P7TSF 1664 PDP 0002 PHIT 1672 PHYTES 1466 PNMLUP 2714 PRBLUP 3264 PRESCA 2420 PRTCDF 1120 PRTCOD 6040 PRTOCT 1725 PRTOFF 1072 PRTVAL 1111 QUO 0055 REM 0056 REPINL 2117 REPMSG 4325 REPORT 2111 RESTA1 0203 RESTA2 0344 RESTAR 0202 RETMSG 4346 RGOOD 0336 RHIT 0331 RSCAN 2563 RTL3 1721 RUBAGN 3320 RUBDON 3336 RUBTBL 1152 RUSMSG 4353 SBOOT 7600 SBTFUN 7602 SCAN 2600 SCNLUP 2610 SCNTES 2660 SCR 0340 SCRCAS 0057 SCRCHA 0060 SCRCRL 2050 SCRFLI 2052 SCRIBE 2005 SCRLUP 2014 SCRPRN 2025 SCRPTR 0061 SCRSIZ 7611 SEPACO 3426 SEPCOM 2501 SET11K 5333 SET12K 5332 SET15K 5331 SET16K 5330 SET19K 5327 SET20K 5326 SET4K 5336 SET7K 5335 SET8K 5334 SETIN 2521 SETOUT 2533 SETPOI 1414 SFILES 7757 SINBLK 0062 SINDNU 0063 SIZE1 4142 SIZESE 2312 SIZINF 0064 SKPBMS 4366 SKPWMS 4407 SLNZAP 0222 SOMENT 1464 SOTDNU 0065 SOUTBL 0066 SOUTFL 7607 SVOSW 0067 SWAL 7604 SWCNT 1523 SWMX 7605 SWPTR 1522 SYSBLK 1440 SYSFUN 1437 SYSIO 7640 SYSPAG 5400 TABLUN 0070 TEST7K 5320 TESTBO 3460 TESTMO 1442 TESTO 0312 TLSIOT 6046 TOGFLD 3552 TOGIOF 3553 TOGMAX 3554 TOGORS 4015 TOGVEF 3555 TOMSG 4424 TRYTOG 3436 TSFIOT 6041 TTY 0003 UNIT 0071 UPDATE 0072 USEONE 4102 VCMPER 1000 VDNMSG 4427 VEBFLD 3537 VECFLD 0473 VERADR 0106 VERAGN 0444 VERBLK 0110 VERCDF 0515 VERCHK 1757 VERCNT 0005 VERFAI 0626 VERFLD 0073 VERFUN 0107 VERPAS 0523 VERSW 0006 VFAMSG 4443 VODONE 0555 VOSW 0007 VRDCOM 0666 VRDERR 0706 VREMSG 4457 WDBMSG 4467 WDMBLK 0631 WERMSG 4504 WORK0 1166 WORKEN 1173 WORKSE 4000 WRITE 4000 WRKLUP 4010 WZAP1 1050 WZAP2 1173 XORLUP 1504 XORSW 1503 XORSWS 0000 XR1 0010 XR2 0011 XR3 0012 XR4 0013 YESMSG 4516 YNAGN 2067 YORNO 2066