1 / P?S/8 FILE MAINTAINENCE UTILITY 2 3 / LAST EDIT: 06-OCT-1987 23:00:00 CJL 4 5 / MUST BE ASSEMBLED WITH '/J' SWITCH SET. 6 7 / P?S/8 FILE MAINTAINENCE UTILITY FOR FIXED-LENGTH FILES (FILMAN). 8 9 / SUPPORTED FUNCTIONS: 10 11 / DEVICE UNIT TO DEVICE UNIT FILE COPYING WITH OPTIONAL SINGLE QUERY MODE. 12 13 / SINGLE DEVICE UNIT FILE KILLING WITH OPTIONAL SINGLE QUERY MODE. 14 15 / SINGLE DEVICE UNIT CATALOG EMPTYING. 16 17 / INVOKED MODE (OPTION(S) INVOKED IN THE COMMAND LINE) AND RESPONSE MODE 18 / (USER IS PROMPTED FOR ALL OPTIONS) OPERATIONS ARE AVAILABLE. THE USE OF 19 / MULTI-CHARACTER OPTIONS UNIQUE TO FILMAN CAUSES INVOKED MODE OPERATION. 20 / RESPONSE MODE OPERATION IS AVAILABLE EITHER ALTERNATIVELY TO OR IN CONJUNCTION 21 / WITH INVOKED MODE OPERATION. 22 23 / DOCUMENTATION NOTE: 24 25 / ALL CHARACTERS ENCLOSED IN SQUARE BRACKETS ARE OPTIONAL AND SERVE ONLY TO 26 / EMBELLISH THE COMMAND. 27 / COMMAND LINE DESCRIPTION. 28 29 / .[R ]FILMAN (SWITCH OPTIONS) (MULTI-CHARACTER OPTIONS) ( OR ) 30 31 / PROGRAM NAME FIELD DESCRIPTION. 32 33 / CURRENT P?S/8 KEYBOARD MONITOR CONVENTIONS ALLOW FOR INVOKING A SYSTEM 34 / PROGRAM OR UTILITY BY USE OF THE "R" COMMAND FOLLOWED BY THE PROGRAM NAME. 35 / THIS UTILITY IS ALWAYS CALLED "FILMAN" AND THIS PROGRAM NAME MUST PRECEDE 36 / ALL OTHER OPTIONS. AS OF THE CURRENT IMPLEMENTATION, THERE IS NO ANOMALY 37 / BETWEEN "FILMAN" AND ANY OTHER KEYBOARD MONITOR COMMAND (FIRST TWO LETTERS 38 / WOULD BE "FI") THUS THE "R" COMMAND MAY BE OMITTED. THE USE OF THE "R" COMMAND 39 / TO THE P?S/8 KEYBOARD MONITOR GENERALLY CAUSES SLIGHTLY MORE SYSTEM OVERHEAD 40 / WITH SUPERIOR SYNTAX ERROR MESSAGES (AND OTHER FEATURES IRRELEVANT TO FILMAN) 41 / BUT IN NO WAY AFFECTS THE OPERATION OF THE FILMAN UTILITY. THE STANDARD 42 / IMPLEMENTATION RESTRICTION APPLIES: THE SYSTEM DIRECTORY ENTRY FOR FILMAN 43 / MUST BE IN THE FIRST HALF OF THE SYSTEM DIRECTORY TO ALLOW THE "R" COMMAND 44 / TO BE OMITTED. THIS IS THE INTENDED IMPLEMENTATION; SYSTEMS PROGRAMMERS 45 / ARE ADVISED TO OBEY THIS CONVENTION TO ALLOW CONSISTENCY OF USAGE WITH 46 / DOCUMENTATION! (THE PROGRAM NAME MAY BE CHANGED IF NECESSARY AS THE INTERNAL 47 / CODING OF THE PROGRAM DOES NOT CHECK FOR ANY SPECIFIC PROGRAM NAME DURING 48 / THE COMMAND SCAN) 49 50 / AS OF THE CURRENT IMPLEMENTATION OF THE KEYBOARD MONITOR, THE "RU" (USUALLY 51 / DESCRIBED AS "RUN") COMMAND IS IDENTICAL TO THE "R" COMMAND AND MAY BE USED 52 / ALTERNATIVELY TO INVOKE FILMAN. 53 54 / SWITCH OPTION DESCRIPTION. 55 56 / SWITCH OPTIONS TAKE THE FORM OF ONE OF THE FOLLOWING: 57 58 / A) A SLASH ("/") CHARACTER FOLLOWED BY A SINGLE OPTION 59 / LETTER/DIGIT FOR EACH OPTION INVOKED. LETTERS ARE IN THE 60 / RANGE "A"-"Z". DIGITS ARE IN THE RANGE "0"-"9". 61 62 / B) AN OPTION GROUP CONSISTING OF A LEFT PARENTHESIS ("(") 63 / FOLLOWED BY A GROUP OF AT LEAST ONE OPTION LETTER/DIGIT 64 / OPTIONALLY FOLLOWED BY A RIGHT PARENTHESIS (")"). LETTERS 65 / ARE IN THE RANGE "A"-"Z". DIGITS ARE IN THE RANGE "0"-"9". 66 / THE SLASH ("/") CHARACTER MUST BE OMITTED. THE RIGHT 67 / PARENTHESIS (")") MUST BE PRESENT UNLESS THE OPTION GROUP 68 / APPEARS LAST ON THE COMMAND LINE. 69 / MULTI-CHARACTER OPTION DESCRIPTION. 70 71 / MULTI-CHARACTER OPTIONS TAKE THE FORM OF A SLASH ("/") CHARACTER FOLLOWED 72 / BY A NAME FIELD CONSISTING OF AT LEAST TWO LETTERS FOLLOWED BY A COLON (":") 73 / CHARACTER FOLLOWED BY AN OPTION VALUE (ALSO KNOWN AS A QUALIFIER). WITHIN 74 / THE NAME FIELD, ADDITIONAL LETTERS/DIGITS ARE ALLOWED TO IMMEDIATELY FOLLOW 75 / THE TWO REQUIRED LETTERS FOR EMBELLISHMENT PURPOSES. THE OPTION VALUE WILL 76 / BE REQUIRED TO CONFORM TO ONE OF THE FOLLOWING: 77 78 / A) ALPHABETIC OPTION VALUES WHICH CONSIST OF ONE LETTER IN 79 / THE RANGE "A"-"Z" OPTIONALLY FOLLOWED BY ADDITIONAL 80 / LETTERS/DIGITS FOR EMBELLISHMENT PURPOSES. ALPHABETIC OPTION 81 / VALUES ARE USED TO DETERMINE OPERATING MODE, AND FILE DATA 82 / TYPE. QUERY AND VERIFY OPTIONS REQUIRE SPECIFIC Y[ES] OR 83 / N[O] VALUES. 84 85 / B) NUMERIC OPTION VALUES WHICH CONSIST OF A SINGLE DIGIT IN 86 / THE RANGE "0"-"7". NUMERIC OPTION VALUES ARE USED TO SET 87 / THE VARIOUS SYSTEM UNITS 0-7 CORRESPONDING TO THE DEVICES 88 / "SYS0:"-"SYS7:" FOR THE INPUT, OUTPUT AND UNIT OPTIONS. 89 90 / C) STRING OPTION VALUES CONSIST OF A SERIES OF VALID FILE NAME 91 / CHARACTERS (THE LETTERS FROM "A"-"Z", THE DIGITS "0"-"9", 92 / "[", "\", "]", AND "^") AND/OR THE SPECIAL CHARACTERS "*", 93 / "?" AND ".". IMBEDDED SPACE AND TAB CHARACTERS WILL BE IGNORED. 94 / THE STRING OPTION VALUE IS USED WITH THE NAME OPTION TO 95 / SPECIFY A SEARCH STRING FOR FILE NAME MATCHING. IF ANY 96 / CHARACTER OTHER THAN THE ABOVE IS USED WITHIN THE STRING, 97 / ALL FILE NAMES WILL FAIL TO MATCH. 98 99 / TERMINATOR DESCRIPTION. 100 101 / THE NORMAL COMMAND LINE TERMINATOR. THE COMMAND EXECUTES 102 / EITHER INVOKED MODE OR RESPONSE MODE AS REQUIRED. UNLESS 103 / THE /S OPTION IS INVOKED, ADDITIONAL RESPONSE MODE OPERATIONS 104 / OCCUR UNTIL USER EXIT TO THE KEYBOARD MONITOR. 105 106 / IF THE COMMAND LINE IS TERMINATED WITH AN ACTIVE 107 / CHARACTER, FILMAN WILL AUTOMATICALLY EXIT TO THE KEYBOARD 108 / MONITOR AFTER ONE INVOKED MODE OR RESPONSE MODE OPERATION 109 / AS REQUIRED. SEE THE KEYBOARD MONITOR "SET" COMMAND FOR 110 / THE DEFINITION OF ACTIVE CHARACTERS. 111 / COMMAND LINE RESTRICTIONS. 112 113 / ALTHOUGH SPACES AND TABS ARE NOT ALLOWED WITHIN THE PROGRAM NAME FIELD 114 / ("FILMAN"), MULTI-CHARACTER OPTIONS (SUCH AS THE EMBELLISHED "VERIFY"), 115 / OR MULTI-CHARACTER OPTION VALUES (SUCH AS THE EMBELLISHED "EVERYTHING"), 116 / THESE CHARACTERS MAY BE USED FREELY BETWEEN ALL COMMAND FIELDS TO SEPARATE 117 / COMPLETE PARAMETERS. SPACES AND TABS ARE ALLOWED BETWEEN SWITCH OPTIONS 118 / USING THE INDIVIDUAL SLASH ("/") FORM, BUT NOT BETWEEN OPTIONS WITHIN AN 119 / OPTION GROUP. SPACES AND TABS ARE ALSO ALLOWED BEFORE AND AFTER THE COLON 120 / (":") CHARACTER OF THE MULTI-CHARACTER OPTIONS, AS WELL AS WITHIN STRING 121 / OPTION VALUES. 122 123 / THE SPECIAL CHARACTER "." MAY BE GIVEN AT THE END OF THE SEARCH STRING 124 / OPTIONALLY FOLLOWED BY AN ADDITIONAL STRING USING ALL OTHER VALID SEARCH 125 / CHARACTERS; THE "." CHARACTER ITSELF MUST NOT BE REPEATED TO PREVENT AN 126 / ERROR MESSAGE. THE "." CHARACTER IS USED TO INDICATE AN "EXTENSION" (ALSO 127 / KNOWN AS A "QUALIFIED NAME"), WHICH IS NOT IMPLEMENTED AT THIS TIME. DUE 128 / TO CURRENT IMPLEMENTATION RESTRICTIONS, THE P?S/8 FILE NAME STRUCTURE IS 129 / LIMITED TO AT MOST SIX CHARACTERS WITHOUT EXTENSION, SO THE SCOPE OF USEFUL 130 / COMMANDS MUST BE LIMITED TO THIS AMOUNT. THE EXTENSION STRING (IF GIVEN) 131 / WILL BE IGNORED, OTHER THAN VALIDATION OF ITS SYNTAX. FUTURE IMPLEMENTATION 132 / PLANS FOR P?S/8 INCLUDE UPGRADING THE FILE NAMES TO A FORM: 133 134 / LONGASSEMBLYFILE.MAC8 16 CHARACTER FILE NAMES WITH 4 CHARACTER EXTENSIONS 135 136 / DUE TO P?S/8 MONITOR RESTRICTIONS, ALL SWITCH OPTIONS MUST PRECEDE ANY 137 / MULTI-CHARACTER OPTIONS. SPACES AND TABS ARE NOT ALLOWED AFTER THE SLASH 138 / ("/) IN THE FIRST OF ANY MULTI-CHARACTER OPTIONS. SEE THE DESCRIPTION OF 139 / INVOKED MODE OPERATIONS FOR ANY ADDITIONAL RESTRICTIONS. 140 / SWITCH OPTIONS. 141 142 / /B USE HARDCOPY-ORIENTED BACKSPACE FOR COMMAND EDITING. DEFAULT 143 / IS SCREEN-ORIENTED BACKSPACE. 144 145 / /C ATTEMPT TO UTILIZE MORE CORE. IF AVAILABLE, A PARTIAL (3K) 146 / OR FULL (4K) FIELD OF ADDITIONAL MEMORY WILL BE USED TO 147 / ACCELERATE ALL OPERATIONS. THIS OPTION IS ONLY NECESSARY 148 / ON SYSTEMS WHERE THE CURRENT LOGICAL CORE SIZE IS 4K AND 149 / MORE IS ACTUALLY AVAILABLE. 150 151 / /E EMPTYING OF THE SPECIFIED CATALOG UNIT WILL OCCUR. INVOKING 152 / THIS OPTION OVERRIDES THE DEFAULT OPERATION OF UNIT TO UNIT 153 / COPYING. IF /Y IS NOT INVOKED, THE USER WILL BE PROMPTED 154 / WITH "ARE YOU SURE? " REQUIRING A Y(ES)/N(O) RESPONSE BEFORE 155 / THE CATALOG IS ACTUALLY EMPTIED. EQUIVALENT TO MO[DE]:E[MPTY]. 156 157 / /I INVOKED MODE OPERATION WILL OCCUR. DEFAULT IS RESPONSE MODE 158 / OPERATION ONLY. SINCE USE OF ANY MULTI-CHARACTER OPTION 159 / IMPLIES INVOKED MODE, /I IS ONLY REQUIRED WHEN ALL PARAMETERS 160 / OF INVOKED MODE OPERATION ARE DEFAULTED. (SEE DEFAULT 161 / PARAMETERS FOR INVOKED MODE OPERATION.) 162 163 / /K FILES WILL BE KILLED FROM THE SPECIFIED CATALOG UNIT. INVOKING 164 / THIS OPTION OVERRIDES THE DEFAULT OPERATION OF UNIT TO UNIT 165 / COPYING. IF /Y IS NOT INVOKED, THE USER WILL BE PROMPTED 166 / WITH "ARE YOU SURE? " REQUIRING A Y(ES)/N(O) RESPONSE BEFORE 167 / THE FILES ARE ACTUALLY KILLED FROM THE CATALOG. INVOKING 168 / THE QUERY MODE WILL ALLOW ALL ELEGIBLE FILES TO BE KILLED 169 / INDIVIDUALLY. EQUIVALENT TO MO[DE]:K[ILL]. SEE /Q. 170 171 / /N NO VERIFICATION WILL BE PERFORMED. DEFAULT IS TO VERIFY 172 / ALL WRITE OPERATIONS. EQUIVALENT TO VE[RIFY]:N[O]. 173 174 / /O OVERRIDE FILE TYPE IDENTIFICATION. THIS ALLOWS ALL FILES 175 / TO BE CONSIDERED (AS IN TY[PE]:E[VERYTHING]), BUT PREVENTS 176 / FILE TYPE IDENTIFICATION. EQUIVALENT TO TY[PE]:O[VERRIDE]. 177 / OPERATIONS ARE GENERALLY FASTER THAN WHEN INVOKING OTHER 178 / FILE TYPES (A[SCII], B[INARY], C[OMBINED], E[VERYTHING]), 179 / AS THE FILES ARE NOT READ FOR CONTENT VALIDATION. 180 181 / /Q INDIVIDUAL QUERY MODE IS USED. ALL ELEGIBLE FILES WILL BE 182 / COPIED (MO[DE]:C[OPY] WHICH IS DEFAULT) OR KILLED (/K OR 183 / MO[DE]:K[ILL]) SUBJECT TO A Y(ES) OR N(O) RESPONSE TYPED 184 / ON THE SYSTEM CONSOLE. EQUIVALENT TO QU[ERY]:Y[ES]. THE 185 / QUERY MODE CAN BE REVERSED DURING ALL FILMAN OPERATIONS 186 / BY PRESSING <^R> ON THE SYSTEM CONSOLE. 187 188 / /S SINGLE OPERATION OPTION. FILMAN TERMINATES AFTER THE FIRST 189 / OPERATION (EITHER INVOKED MODE OR RESPONSE MODE). EQUIVALENT 190 / TO TERMINATING THE COMMAND LINE WITH . 191 192 / /U OUTPUT IN UPPER-CASE ONLY. DEFAULT IS UPPER/LOWER CASE OUTPUT. 193 / /Y USED TO EFFECTIVELY ANSWER "YES" TO THE "ARE YOU SURE? " 194 / QUERY OF /E (MO[DE]:E[MPTY]) OR /K (MO[DE]:K[ILL]). THE 195 / QUERY WILL NOT BE ISSUED. 196 197 / MULTI-CHARACTER OPTIONS. 198 199 / IN[PUT]:I I=INPUT UNIT FOR COPY OPERATION. THE INPUT UNIT CAN BE ANY 200 / SYSTEM LOGICAL UNIT FROM 0-7. THIS OPTION CAN BE INVOKED 201 / IN COMBINATION WITH MO[DE]:C[OPY] (DEFAULT) AND MUST NOT 202 / BE COMBINED WITH MO[DE]:K[ILL] OR MO[DE]:E[MPTY]. IT MAY 203 / NOT BE COMBINED WITH U[NIT]:U. ILLEGAL COMBINATIONS WILL 204 / YIELD THE ERROR MESSAGE "UNIT AND MODE CONFLICT!". 205 206 / MO[DE]:M M=C[OPY] (DEFAULT) OR K[ILL] OR E[MPTY] OR Q[UIT]. FILES 207 / WILL BE COPIED OR KILLED OR ENTIRELY REMOVED AS NECESSARY. 208 / INVOKING /K IS IDENTICAL TO MO[DE]:K[ILL]. INVOKING /E IS 209 / IDENTICAL TO MO[DE]:E[MPTY]. MO[DE]:Q[UIT] CAUSES EXIT TO 210 / THE MONITOR EFFECTIVELY NULLIFYING THE COMMAND. 211 212 / NA[ME]:STRING OPTIONAL SEARCH STRING TO LIMIT FILES TO BE COPIED (DEFAULT 213 / OPERATION OR MO[DE]:C[OPY]) OR KILLED (/K OR MO[DE]:K[ILL]) 214 / TO THOSE FILES "MATCHING" THE SEARCH STRING. THE SEARCH 215 / STRING CAN CONSIST OF ANY COMBINATION OF VALID P?S/8 216 / FIXED-LENGTH FILE NAME CHARACTERS ("A"-"Z", "0"-"9", "[", 217 / "\", "]", "^") AND THE "WILD-CARD" CHARACTERS ("*", "?"), 218 / AND AT MOST A SINGLE OCCURRENCE OF THE EXTENSION CHARACTER 219 / ("."). THE "?" MATCHES ANY SINGLE CHARACTER IN A FILE NAME 220 / WHICH MUST BE PRESENT, UNLESS THE "?" (OR A SERIES OF "?" 221 / CHARACTERS) IS RIGHT-MOST IN THE SEARCH STRING IN WHICH 222 / CASE THE CORRESPONDING FILE NAME CHARACTERS MAY BE NON-EXISTANT 223 / IF NECESSARY. THIS ALLOWS THE USE OF EXCESS "?" CHARACTERS 224 / WHEN MATCHING LEADING PORTIONS OF FILE NAMES (THE COMMAND 225 / MAY CONTAIN EXTRA RIGHT-MOST "?" CHARACTERS WHICH ARE 226 / EFFECTIVELY IGNORED). THE "*" MATCHES AN ARBITRARY NUMBER 227 / OF FILE NAME CHARACTERS FROM NONE THROUGH THE ENTIRE NAME 228 / IF NECESSARY. A SINGLE OCCURRENCE OF THE SPECIAL CHARACTER 229 / (".") MAY OPTIONALLY BE GIVEN AT THE END OF THE SEARCH STRING 230 / OPTIONALLY FOLLOWED BY AN ADDITIONAL STRING USING ALL OTHER 231 / VALID SEARCH CHARACTERS (THE "." AND EXTENSION STRING WILL 232 / BE IGNORED). IMBEDDED SPACE AND TAB CHARACTERS ARE IGNORED. 233 / MAXIMUM SEARCH STRING LENGTH IS 36 CHARACTERS. 234 235 / OU[TPUT]:O O=OUTPUT UNIT. THE OUTPUT UNIT CAN BE ANY SYSTEM LOGICAL 236 / UNIT FROM 0-7. THIS OPTION CAN BE INVOKED IN COMBINATION 237 / WITH MO[DE]:C[OPY] (DEFAULT) AND MUST NOT BE COMBINED WITH 238 / MO[DE]:K[ILL] OR MO[DE]:E[MPTY]. IT MAY NOT BE COMBINED 239 / WITH U[NIT]:U. ILLEGAL COMBINATIONS WILL YIELD THE ERROR 240 / MESSAGE "UNIT AND MODE CONFLICT!". IF THE OUTPUT UNIT IS 241 / IDENTICAL TO THE INPUT UNIT (O=I) THEN IN-PLACE COPYING 242 / WILL OCCUR. THIS IS USEFUL (IN CONJUNCTION WITH THE INDIVIDUAL 243 / QUERY MODE) TO INVESTIGATE THE DATA TYPE OF FILES WITHOUT 244 / NECESSARILY PERFORMING ANY EFFECTIVE COPYING OPERATIONS. 245 / QU[ERY]:Q Q=Y[ES] OR N[O]. IF QU[ERY]:Y[ES] IS INVOKED, THE USER WILL 246 / BE REQUIRED TO RESPOND Y(ES) OR N(O) FOR EACH ELEGIBLE FILE 247 / TO BE COPIED (MO[DE]:C[OPY]) OR KILLED (MO[DE]:K[ILL]). 248 / INVOKING /Q IS EQUIVALENT TO QU[ERY]:Y[ES]. 249 250 / TY[PE]:T T=DATA TYPE OF FILE (SEE BELOW). 251 252 / UN[IT]:U U=UNIT FOR FILE KILLING (MO[DE]:K[ILL]) OR CATALOG EMPTYING 253 / (MO[DE]:E[MPTY]). THIS OPTION MUST NOT BE INVOKED IN 254 / COMBINATION WITH IN[PUT]:I OR OU[TPUT]:O OR MO[DE]:C[OPY]. 255 / ILLEGAL COMBINATIONS WILL YIELD THE ERROR MESSAGE "UNIT 256 / AND MODE CONFLICT!". 257 258 / VE[RIFY]:V V=Y[ES] OR N[O]. ALL WRITE OPERATIONS ARE VERIFIED IF 259 / VE[RIFY]:Y[ES] IS INVOKED (DEFAULT). VE[RIFY]:N[O] IS GENERALLY 260 / FASTER AT THE EXPENSE OF RELIABILITY. INVOKING /N IS EQUIVALENT 261 / TO VE[RIFY]:N[O]. 262 263 / FILE DATA TYPES. 264 265 / A[SCII] ONLY VALID ASCII FILES WILL BE CONSIDERED. 266 / B[INARY] ONLY VALID BINARY FILES WILL BE CONSIDERED. 267 / C[OMBINED] COMBINATION OF A AND B. 268 / E[VERYTHING] EVERYTHING WILL BE ALLOWED. 269 / O[VERRIDE] GENERALLY THE SAME AS E[VERYTHING], HOWEVER, NO FILE TYPING 270 / IS PERFORMED. THIS IS GENERALLY FASTER AS THE FILES WILL 271 / NOT BE READ FOR TYPE VALIDATION. 272 273 / ASSUMING OVERRIDE IS NOT IN EFFECT, ALL EXISTENT FILES ARE READ AND TYPE 274 / VALIDATED. ALL FILES ELEGIBLE UNDER THE PREVAILING FILE DATA TYPE WILL BE 275 / REPORTED ON THE CONSOLE TERMINAL DURING THE PREVAILING OPERATION. THE FILE 276 / IDENTIFICATION WILL CONSIST OF: 277 278 / FILE IS VALID ASCII TYPE. 279 / FILE IS VALID BINARY TYPE. 280 / FILE IS UNKNOWN TYPE (AVAILABLE ONLY IF FILE TYPE E[VERYTHING] 281 / IS USED). 282 / INVOKED MODE OPERATIONS. 283 284 / THE USE OF /I OR ANY MULTI-CHARACTER OPTIONS CAUSES INVOKED MODE OPERATIONS. 285 / INVOKED MODE OPERATIONS TAKE ALL PARAMETERS FROM THE COMMAND LINE ONLY AND 286 / CAN BE USED UNATTENDED IF DESIRED. QUERY RESPONSES ARE REQUIRED FROM THE 287 / CONSOLE TERMINAL ONLY IF INVOKED IN THE COMMAND LINE. THIS ALLOWS UNATTENDED 288 / BATCH OPERATIONS IF DESIRED, OR USER QUERY REGARDING FILE DISPOSITION AND 289 / CATALOG EMPTYING FROM THE CONSOLE TERMINAL WHILE RUNNING A BATCH JOB. RESPONSE 290 / MODE OPERATIONS CAN BE ALLOWED OR PREVENTED AS NECESSARY. 291 292 / INVOKED MODE OPERATION ALLOWS THE USER TO COMPLETELY SPECIFY ALL PARAMETERS 293 / ON THE COMMAND LINE IN A CONCISE FORM. ALL PARAMETERS NOT SPECIFIED ARE 294 / SUBJECT TO THE FOLLOWING DEFAULTS: 295 296 / MODE:COPY FILES WILL BE COPIED FROM THE SPECIFIED INPUT UNIT TO THE 297 / SPECIFIED OUTPUT UNIT. 298 299 / INPUT:B THE INPUT FILES ARE LOCATED ON UNIT: . 300 301 / OUTPUT:U THE OUTPUT FILES ARE TO BE COPIED TO UNIT: . SINCE MOST SYSTEMS SUPPORT A UNIT 1 AND BOOTSTRAP 303 / TO UNIT 0, THIS GENERALLY MEANS THE DEFAULT COPY WILL BE 304 / FROM UNIT 0 TO UNIT 1. 305 306 / TYPE:EVERYTHING ALL FILE TYPES ARE ELEGIBLE FOR COPYING AND WILL BE IDENTIFIED 307 / AS TO FILE TYPE (, , ). 308 309 / NAME:* ALL FILE NAMES ARE ELEGIBLE FOR COPYING. 310 311 / QUERY:NO THE FILES WILL BE COPIED WITHOUT USER QUERY. 312 313 / VERIFY:YES ALL FILES COPIED WILL BE WRITTEN AND VERIFIED. 314 315 / UNIT:U ASSUMING MO[DE]:K[ILL] OR MO[DE]:E[MPTY] IS INVOKED, THE 316 / FILES TO BE REMOVED ARE LOCATED ON UNIT: . 318 / INVOKED MODE COMMAND LINE RESTRICTIONS. 319 320 / IT IS RECOMMENDED THAT THE USER POSITION MO[DE]:M AS THE FIRST MULTI-CHARACTER 321 / OPTION ON THE COMMAND LINE FOR INVOKED MODE OPERATION. ALL OTHER 322 / MULTI-CHARACTER OPTIONS ARE ALLOWED TO BE FIRST ON THE COMMAND LINE SUBJECT 323 / TO THE FOLLOWING: 324 325 / CERTAIN MULTI-CHARACTER OPTIONS GIVEN FIRST ON THE COMMAND LINE NULLIFY 326 / THE EFFECT OF CERTAIN SWITCH OPTIONS DUE TO ANOMALY WITHIN THE P?S/8 KEYBOARD 327 / MONITOR ROUTINES. THE FOLLOWING COMBINATIONS ARE NOT ALLOWED: 328 329 / FIRST MULTI-CHARACTER OPTION SWITCH OPTION 330 331 / /NA[ME]:STRING /N 332 333 / /OU[TPUT]:O /O 334 335 / /UN[IT]:U /U 336 337 / IN ADDITION, /Q WILL BE IGNORED IF QU[ERY]:Q IS USED, AS THE MULTI-CHARACTER 338 / OPTION HAS PRIORITY OVER THE SWITCH OPTION. 339 340 / ALL OTHER MULTI-CHARACTER OPTIONS CAN BE FIRST ON THE COMMAND LINE; THERE 341 / IS NO ORDERING RESTRICTION REGARDING THE REST OF THE MULTI-CHARACTER OPTIONS 342 / ON THE COMMAND LINE. MULTIPLE USAGE OF PARAMETERS IS ALLOWED; ALL BUT THE 343 / LAST ARE IGNORED. 344 345 / EXAMPLES OF INVOKED MODE OPERATION. 346 347 / FILE COPY. 348 349 / .FILMAN/MODE:COPY/INPUT:4/OUTPUT:6/TYPE:EVERYTHING/VERIFY:YES/QUERY:NO/NAME:*$ 350 / FILES COPIED: 351 352 / SYS4:FOOBAR => SYS6:FOOBAR [OK] 353 / SYS4:FOO => SYS6:FOO [OK] 354 / SYS4:BAR => SYS6:BAR [OK] 355 356 / 3 FILES COPIED 357 358 / THIS COMMAND COPIES ALL FILES FROM UNIT 4 TO UNIT 6 WITH VERIFICATION. ALL 359 / FILE TYPES WERE ELEGIBLE AS WERE ALL FILE NAMES. NO USER QUERY WAS REQUIRED. 360 / THE "$" AT THE END OF THE COMMAND LINE SIGNIFIES USE OF AN ACTIVE 361 / CHARACTER WHICH PREVENTED RESPONSE MODE OPERATIONS AND CAUSED EXIT TO THE 362 / MONITOR. 363 / FILE KILL. 364 365 / .FILMAN/S/MODE:KILL/UNIT:7/TYPE:COMBINED/QUERY:YES/NAME:F* 366 367 / FILES KILLED: 368 369 / SYS7:FEWBAR ? YES! [OK] 370 / SYS7:FOOB ? NO! 371 / SYS7:FBAR ? NO! 372 373 / ARE YOU SURE? YES! 374 375 / 1 FILE KILLED 376 377 / THIS COMMAND KILLS ALL ASCII AND BINARY FILES ON SYSTEM UNIT 7 WHOSE NAMES 378 / START WITH "F" SUBJECT TO USER QUERY. THE CATALOG WILL BE RE-WRITTEN WITH 379 / VERIFICATION BY DEFAULT. SINCE /Y WAS NOT INVOKED, THE USER WAS QUERIED 380 / WHETHER TO ACTUALLY KILL THE FILE(S). SINCE /S WAS INVOKED, RESPONSE MODE 381 / OPERATION WAS PREVENTED AND FILMAN EXITS TO THE MONITOR. 382 383 / CATALOG EMPTY. 384 385 / .FILMAN/MODE:EMPTY/UNIT:2 386 387 / CATALOG OF SYS2: TO BE EMPTIED (84 FILES CURRENTLY) 388 389 / ARE YOU SURE? YES! 390 391 / CATALOG OF SYS2: NOW EMPTY (84 FREE SLOTS) 392 393 / MODE: ^C 394 395 / THIS COMMAND EMPTIES THE CATALOG ON UNIT 2. THE CATALOG WILL BE RE-WRITTEN 396 / WITH VERIFICATION BY DEFAULT. SINCE /Y WAS NOT INVOKED, THE USER WAS QUERIED 397 / WHETHER TO ACTUALLY EMPTY THE CATALOG. RESPONSE MODE OPERATION WAS INITIATED 398 / AND THE USER EXITS TO THE MONITOR VIA <^C>. 399 / RESPONSE MODE OPERATIONS. 400 401 / ASSUMING NO MULTI-CHARACTER OPTIONS OR /I, FILMAN WILL INITIATE RESPONSE 402 / MODE OPERATIONS. IF INVOKED MODE OPERATIONS OCCUR, AND THE COMMAND LINE 403 / WAS NOT TERMINATED BY AN ACTIVE CHARACTER, AND /S WAS NOT INVOKED, 404 / RESPONSE MODE OPERATION WILL COMMENCE AFTER THE INVOKED MODE OPERATION HAS 405 / COMPLETED. IF ANY OPERATION (INVOKED OR RESPONSE) IS TERMINATED PREMATURELY 406 / BY <^P> PRESSED ON THE SYSTEM CONSOLE TERMINAL, RESPONSE MODE OPERATION 407 / WILL BE INITIATED. 408 409 / RESPONSE MODE OPERATION GIVES THE USER INDIVIDUAL PROMPTS FOR EACH PARAMETER 410 / WHICH AGGREGATE TO THE SAME INFORMATION USED WITH INVOKED MODE OPERATION. 411 / THERE ARE NO DEFAULTS, HENCE ALL QUESTIONS MUST BE ANSWERED. RESPONSE MODE 412 / OPERATION LOOPS INDEFINITELY UNTIL USER EXIT, THUS REPEATED OPERATIONS ARE 413 / POSSIBLE. 414 415 / RESPONSE MODE OPERATIONS ARE IDENTICAL TO THOSE SUPPORTED BY INVOKED MODE 416 / OPERATION: COPY, KILL, EMPTY, AND QUIT. USING THE QUIT MODE IS AN OPTIONAL 417 / WAY TO EXIT TO THE MONITOR. ALL RESPONSE MODE OPERATIONS ARE SUBJECT TO 418 / THE FOLLOWING SWITCH OPTIONS INVOKED ON THE COMMAND LINE: 419 420 / /B USE HARDCOPY-ORIENTED BACKSPACE FOR COMMAND EDITING. DEFAULT IS 421 / SCREEN-ORIENTED BACKSPACE. 422 423 / /C THE CORE SIZE HAS BEEN INCREASED IF POSSIBLE. ALL OPERATIONS EXECUTE 424 / AS QUICKLY AS POSSIBLE. 425 426 / /N NO VERIFICATION OF WRITE OPERATIONS WILL BE DONE. ALSO OCCURS IF 427 / VE[RIFY]:N[O] WAS USED IN THE OPTIONAL INVOKED MODE OPERATION PRIOR 428 / TO THE RESPONSE MODE OPERATION(S). 429 430 / /Q USER QUERY GIVEN FOR EACH ELEGIBLE FILE. A Y(ES) OR N(O) RESPONSE 431 / IS REQUIRED FOR EVERY FILE TRANSACTION. ALSO OCCURS IF QU[ERY]:Y[ES] 432 / WAS USED IN THE OPTIONAL INVOKED MODE OPERATION PRIOR TO THE RESPONSE 433 / MODE OPERATION(S). 434 435 / /S ASSUMING NO INVOKED MODE OPERATION, THERE WILL BE ONLY ONE RESPONSE 436 / MODE OPERATION FOLLOWED BY EXIT TO THE MONITOR. ALSO OCCURS IF THE 437 / COMMAND LINE WAS TERMINATED BY AN ACTIVE CHARACTER. 438 439 / /U OUTPUT IN UPPER-CASE ONLY. MESSAGES FROM FILMAN WILL BE FORCED TO 440 / UPPER-CASE. 441 442 / /Y PREVENT THE "ARE YOU SURE? " QUERY ASSOCIATED WITH KILL AND EMPTY 443 / MODES. 444 445 / ALL OTHER OPTION SWITCHES AND MULTI-CHARACTER OPTIONS ARE IGNORED DURING 446 / RESPONSE MODE OPERATIONS. 447 448 / THE FIRST USAGE OF RESPONSE MODE CAUSES THE PROGRAM ANNOUNCEMENT MESSAGE 449 / INCLUDING THE VERSION AND REVISION, ETC. (THIS WILL NOT OCCUR IF INVOKED 450 / MODE OPERATION PRECEDES RESPONSE MODE.) 451 / RESPONSE MODE OPERATIONS REQUIRE A SINGLE CHARACTER RESPONSE (EXCEPT THE 452 / "NAME: " OPTION WHICH ALLOWS UP TO 36 CHARACTERS) FOLLOWED BY OR . 453 / IF THE OPTION CHOSEN IS INVALID, AN ERROR MESSAGE WILL BE ISSUED. IF 454 / APPLICABLE, THE OPTION WILL BE EMBELLISHED AUTOMATICALLY TO A FULL WORD 455 / RESPONSE. FOR EXAMPLE: THE "TYPE: " QUERY WOULD PRINT "EVERYTHING" WHEN 456 / THE USER TYPED "E". THE USE OF ESCAPE ON ANY RESPONSE WILL CAUSE FILMAN 457 / TO EXIT AFTER COMPLETING THE LATEST OPERATION. 458 459 / RESPONSE MODE OPERATION MUST EXIT VIA USER INPUT AND CANNOT BE USED 460 / UNATTENDED. THE USUAL BATCH CONSIDERATIONS APPLY: IF , <^A>, <^B>, 461 / OR <^C> IS PRESSED ON THE SYSTEM CONSOLE TERMINAL, FILMAN WILL EXIT TO THE 462 / MONITOR. IF EXIT WAS VIA <^C>, AND FILMAN WAS RUNNING UNDER BATCH, THE BATCH 463 / JOB WILL TERMINATE AND EXIT TO THE MONITOR. 464 465 / EXAMPLES OF RESPONSE MODE OPERATION. 466 467 / FILE COPY. 468 469 / .FILMAN(QCUNS) 470 471 / P?S/8 FILE MAINTAINENCE UTILITY VERSION 10A 472 473 / MODE: COPY 474 475 / INPUT: 0 476 477 / OUTPUT: 1 478 479 / TYPE: EVERYTHING 480 481 / NAME: * 482 483 / FILES COPIED: 484 485 / SYS0:FOOBAR ? YES! => SYS1:FOOBAR 486 / SYS0:BARFOO ? YES! => SYS1:BARFOO 487 / SYS0:NOTKOP ? NO! 488 / SYS0:FEWBAR ? YES! => SYS1:FEWBAR 489 490 / 3 FILES COPIED 491 492 / THIS COMMAND ATTEMPTS TO ACQUIRE MORE CORE TO RUN IN. FILES ARE COPIED FROM 493 / UNIT 0 TO UNIT 1 WITH USER QUERY WITH ALL PROGRAM OUTPUT IN UPPER-CASE. 494 / ALL FILE TYPES AND ALL FILE NAMES ARE ELEGIBLE TO BE COPIED. NO FILE WRITE 495 / VERIFICATION WILL BE PERFORMED, SO THERE ARE NO "[OK]" MESSAGES TO CONFIRM 496 / THE CORRECT FILE CONTENTS. SINCE /S WAS INVOKED, THE PROGRAM EXITS TO THE 497 / MONITOR AFTER ONE OPERATION. 498 / FILE KILL. 499 500 / .FILMAN/Q 501 502 / P?S/8 FILE MAINTAINENCE UTILITY VERSION 10A 503 504 / MODE: KILL 505 506 / UNIT: 4 507 508 / TYPE: BINARY 509 510 / NAME: *BA* 511 512 / FILES KILLED: 513 514 / SYS4:FOOBAR ? YES! [OK] 515 / SYS4:BAR ? NO! 516 / SYS4:BATCH ? NO! 517 518 / 1 FILE KILLED 519 520 / MODE: ^C 521 522 / THIS COMMAND KILLS ALL BINARY FILES ON UNIT 4 WHOSE NAMES HAVE "BA" IMBEDDED 523 / WITHIN THEM SUBJECT TO USER QUERY. THE CATALOG WILL BE RE-WRITTEN WITH 524 / VERIFICATION BY DEFAULT. EXIT IS VIA <^C> TO THE MONITOR. 525 526 / CATALOG EMPTY. 527 528 / .R FILMAN 529 530 / P?S/8 FILE MAINTAINENCE UTILITY VERSION 10A 531 532 / MODE: EMPTY 533 534 / UNIT: 5 535 536 / CATALOG OF SYS5: TO BE EMPTIED (1 FILE CURRENTLY) 537 538 / ARE YOU SURE? YES! 539 540 / CATALOG OF SYS2: NOW EMPTY (84 FREE SLOTS) 541 542 / MODE: QUIT 543 544 / THIS COMMAND EMPTIES THE CATALOG ON UNIT 5. THE CATALOG WILL BE RE-WRITTEN 545 / WITH VERIFICATION BY DEFAULT. SINCE /Y WAS NOT INVOKED, THE USER WAS QUERIED 546 / WHETHER TO ACTUALLY EMPTY THE CATALOG. THE USER EXITS TO THE MONITOR VIA 547 / THE QUIT MODE. 548 / PROGRAM EXIT CONDITIONS. 549 550 / THE /S OPTION OR COMMAND LINE TERMINATION WITH AN ACTIVE CHARACTER 551 / CAUSES AUTOMATIC EXIT AFTER ONE COMPLETE OPERATION. IF THIS OPERATION IS 552 / TERMINATED PREMATURELY BY THE USER PRESSING <^P> ON THE SYSTEM CONSOLE 553 / TERMINAL, RESPONSE MODE WILL BE (RE)STARTED TO ATTEMPT A COMPLETE OPERATION. 554 / IF THE OPERATION COMPLETES, FILMAN WILL THEN EXIT TO THE MONITOR. 555 556 / ASSUMING /S OR COMMAND LINE TERMINATION WITH AN ACTIVE CHARACTER ARE 557 / NOT IN EFFECT, THE FOLLOWING WILL APPLY: 558 559 / A) IF INVOKED MODE IS REQUESTED, THEN RESPONSE MODE WILL FOLLOW THE 560 / COMPLETION OF THE INVOKED MODE OPERATION (UNLESS MO[DE]:Q[UIT] WAS 561 / REQUESTED, WHICH EFFECTIVELY CAUSES NO OPERATION TO BE PERFORMED 562 / AND AUTOMATICALLY EXITS TO THE MONITOR). 563 564 / B) IF RESPONSE MODE IS REQUESTED, THEN RESPONSE MODE WILL RESTART 565 / AUTOMATICALLY FOLLOWING THE COMPLETION OF THE PREVIOUS RESPONSE 566 / MODE OPERATION. 567 568 / C) RESPONSE MODE WILL LOOP INDEFINITELY UNTIL USER EXIT. SEE BELOW 569 / FOR METHODS OF TERMINATION BY THE USER. 570 571 / IMPROPER COMMAND LINES MAY BE REJECTED BY THE KEYBOARD MONITOR FOR REASONS 572 / CONCERNING THE OVERALL COMMAND STRUCTURE BUT NOT RELATED TO THE 573 / MULTI-CHARACTER OPTIONS, IF ANY. FILMAN WILL AUTOMATICALLY EXIT AFTER ISSUING 574 / ERROR MESSAGES CONCERNING EITHER IMPROPERLY FORMATTED MULTI-CHARACTER OPTIONS, 575 / OR IMPROPER CONTENTS OF ANY MULTI-CHARACTER OPTION OR OPTION VALUE, OR OPTION 576 / CONFLICT AS NECESSARY. NO OPERATION WILL BE PERFORMED IF ANY COMMAND ERROR 577 / IS DETECTED. 578 579 / USER TERMINATION METHODS. 580 581 / IN THE RESPONSE MODE, THE USER CAN CAUSE FILMAN TO EXIT BY USING THE VALUE: 582 / Q(UIT) TO THE "MODE:" PROMPT AT THE BEGINNING OF EACH RESPONSE MODE CYCLE. 583 / IN ADDITION, ALL FILMAN OPERATING PHASES MAY BE EXIT VIA ONE OF THE FOLLOWING: 584 585 / A) THE USER MAY PRESS <^P> ON THE SYSTEM CONSOLE TERMINAL. THIS CAUSES 586 / PREMATURE COMPLETION OF THE CURRENT OPERATION INCLUDING CLOSING 587 / ANY OPEN CATALOGS IF NECESSARY. FILMAN THEN RESTARTS IN RESPONSE 588 / MODE (UNLESS AN ACTIVE CHARACTER COMMAND TERMINATION OR /S 589 / IS IN EFFECT, IN WHICH CASE FILMAN EXITS TO THE KEYBOARD MONITOR). 590 591 / B) THE USER MAY PRESS ON THE SYSTEM CONSOLE TERMINAL. THIS 592 / CAUSES PREMATURE COMPLETION OF THE CURRENT OPERATION. NO CATALOG 593 / UPDATE IS PERFORMED, THUS VARIOUS CATALOG ENTRIES COULD BE MISSING 594 / OR OBSOLETE DEPENDING ON THE ACTIONS OF THE CURRENT COMMAND. THIS 595 / METHOD OF TERMINATION SHOULD BE CONSIDERED A "HASTY" EXIT UNLESS 596 / THE LATEST OPERATION HAS BEEN COMPLETED AND FILMAN IS CURRENTLY 597 / IDLE WAITING FOR USER INPUT. WHEN THE USER PRESSES ON THE 598 / SYSTEM CONSOLE, FILMAN EXITS TO THE KEYBOARD MONITOR. 599 600 / C) THE USER MAY PRESS <^A> ON THE SYSTEM CONSOLE TERMINAL. RESULTS 601 / ARE IDENTICAL TO PRESSING . 602 / D) THE USER MAY PRESS <^B> ON THE SYSTEM CONSOLE TERMINAL. RESULTS 603 / ARE IDENTICAL TO PRESSING . 604 605 / E) THE USER MAY PRESS <^C> ON THE SYSTEM CONSOLE TERMINAL. RESULTS 606 / ARE IDENTICAL TO PRESSING WITH THE FOLLOWING ADDITIONAL 607 / CONSIDERATION: IF FILMAN WAS EXECUTING UNDER BATCH CONTROL, THE 608 / BATCH JOB IS ALSO TERMINATED. THE KEYBOARD MONITOR WILL ACKNOWLEDGE 609 / ALL PROGRAM EXITS VIA <^C> BY PRINTING A "^C" MESSAGE ALONG WITH 610 / A BATCH ABORT MESSAGE IF APPLICABLE. 611 612 / OUTPUT CATALOG CONSIDERATIONS. 613 614 / BY MULTIPLE USAGES OF THE KEYBOARD MONITOR KI(LL) COMMAND, IT IS POSSIBLE 615 / TO ACCUMULATE A SERIES OF DANGLING "" SLOTS AT THE END OF THE USER 616 / CATALOG. SHOULD ANY COPY OR KILL OPERATION BE INVOKED, THE END OF THE CATALOG 617 / WILL BE COMPRESSED AS NECESSARY TO REMOVE THESE EXTRANEOUS ENTRIES. FILMAN 618 / WILL REWRITE THE OUTPUT CATALOG EVEN IF NO OTHER FILE OPERATION OCCURRED. 619 / OPTIMIZATION OF THIS OPERATION INCLUDES PREVENTING THE OUTPUT CATALOG WRITE 620 / IF EITHER NO CHANGES WERE MADE TO THE CATALOG OR (USING THE COPY OPERATION) 621 / THE SLOTS WERE USED FOR FILES WITH IDENTICAL NAMES PRIOR TO THE COPY. 622 / USER QUERY METHODS. 623 624 / THE DEFAULT MODE OF OPERATION OF FILE COPYING (MO[DE]:C[OPY]) OR 625 / FILE KILLING (MO[DE]:K[ILL]) IS TO ALLOW ALL ELEGIBLE FILES TO BE 626 / ACTED UPON UNIMPEDED (AND IS EQUIVALENT TO QU[ERY]:N[O]). THIS CAN 627 / BE INITIALLY CHANGED BY INVOKING /Q (OR QU[ERY]:Y[ES]) TO FORCE 628 / USER QUERY (Y(ES)/N(O)) FOR THE DISPOSITION OF EVERY ELEGIBLE FILE. 629 / PRESSING <^R> (ACKNOWLEDGED BY PRINTING: ^R) ON THE SYSTEM CONSOLE 630 / WILL "REVERSE" THE STATE OF USER QUERY FOR SUBSEQUENT FILES (AND 631 / MAY BE CONTINUALLY REVERSED IF DESIRED). 632 633 / THIS CAN BE USEFUL IN SITUATIONS WHERE THE USER IS UNSURE OF THE 634 / IMPLICATION OF THE LATEST OPERATION (SUCH AS KILLING A GROUP OF 635 / FILES). QUERY MODE IS INVOKED TO ALLOW KILLING FILES CAUTIOUSLY 636 / UNTIL CONFIDENCE IS GAINED IN THE ACCURACY OF THE INTENDED COMMAND. 637 / FOR EXAMPLE: 638 639 / .FILMAN/S/MODE:KILL/UNIT:0/NAME:TP*/QUERY:YES 640 641 / FILES KILLED: 642 643 / SYS0:TPB ? NO! USER QUERY WITH N(O) RESPONSE 644 / SYS0:TP1 ? YES! [OK] USER QUERY WITH Y(ES) RESPONSE 645 / SYS0:TP2 ? YES! [OK] USER QUERY WITH Y(ES) RESPONSE 646 / SYS0:TP3 ? YES! [OK] USER QUERY WITH Y(ES) RESPONSE 647 / SYS0:TP4 ? ^RYES! [OK] USER PRESSED <^R>Y FOR LAST Y(ES) RESPONSE 648 / SYS0:TP5 [OK] NO FURTHER QUERIES 649 / SYS0:TP6 [OK] 650 / SYS0:TP7 [OK] 651 / SYS0:TP8 [OK] 652 / SYS0:TP9 [OK] 653 654 / 9 FILES KILLED 655 656 / AT THE FIFTH QUERY THE USER REVERSED THE QUERY MODE THEN RESPONDED 657 / Y(ES) TO THE FIFTH QUERY. ALL SUBSEQUENT FILE KILLING WAS DONE 658 / WITHOUT QUERY. 659 660 / THE REVERSAL OF QUERY MODE MAY ALSO BE USED TO IMPOSE QUERY MODE 661 / ON ONLY A PORTION OF A LONG FILE KILLING/COPYING OPERATION OR TO 662 / ACTIVATE/DEACTIVATE QUERY MODE AS NECESSARY TO REMEDY AN ALREADY 663 / INITIATED COMMAND NOW KNOWN TO BE INCORRECT REGARDING QUERY MODE. 664 / FOR EXAMPLE: 665 666 / .R FILMAN /Q WAS OMITTED UNINTENTIONALLY 667 668 / MODE: ^RCOPY USER PRESSED <^R>C 669 670 / THE USER ENABLED QUERY MODE BEFORE ACTUALLY COPYING THE FILES TO 671 / REMEDY THE INADVERTENT OMISSION OF /Q. 672 / INVOKED COMMAND ERROR MESSAGES. 673 674 / ALL INVOKED COMMAND ERRORS ARE FATAL AND ARE ONE OF THE FOLLOWING: 675 676 / IMPROPER FILE TYPE! 677 678 / AN ATTEMPT WAS MADE TO INVOKE A TY[PE]: PARAMETER WITH AN IMPROPER 679 / VALUE (OTHER THAN A[SCII], B[INARY], C[OMBINED], E[VERYTHING], OR 680 / O[VERRIDE]). ONLY VALID FILE TYPES ARE ALLOWED. 681 682 / IMPROPER MODE! 683 684 / AN ATTEMPT WAS MADE TO INVOKE A MO[DE]: PARAMETER WITH AN IMPROPER 685 / OPERATION VALUE (OTHER THAN C[OPY], K[ILL], E[MPTY], OR Q[UIT]). 686 / ONLY VALID MODE VALUES ARE ALLOWED. 687 688 / IMPROPER UNIT! 689 690 / AN ATTEMPT WAS MADE TO INVOKE A UN[IT]:U OR IN[PUT]:I OR OU[TPUT]:O 691 / PARAMETER WITH A VALUE OUTSIDE OF THE RANGE OF 0-7. ONLY VALID UNIT 692 / PARAMETERS ARE ALLOWED. 693 694 / INVALID PARAMETER! 695 696 / AN ATTEMPT WAS MADE TO USE A NON-EXISTANT OR IMPROPERLY FORMED 697 / MULTI-CHARACTER OPTION. USE ONLY VALID PARAMETERS WHEN USING INVOKED 698 / MODE OPERATIONS. 699 700 / MULTIPLE PERIOD CHARACTERS IN SEARCH STRING! 701 702 / MORE THAN ONE PERIOD CHARACTER WAS PASSED IN THE SEARCH STRING. 703 / ONLY ONE PERIOD CHARACTER IS ALLOWED IN THE SEARCH STRING TO 704 / SEPARATE THE FILE NAME STRING FROM THE EXTENSION STRING. 705 706 / SEARCH STRING TOO LONG! 707 708 / AN ATTEMPT WAS MADE TO USE A SEARCH STRING WHICH WAS TOO MANY 709 / CHARACTERS LONG. MAXIMUM SEARCH STRING LENGTH IS 36 CHARACTERS. 710 711 / UNIT AND MODE CONFLICT! 712 713 / AN INVOKED MODE OPERATION WAS ATTEMPTED WHERE THE UN[IT]:U PARAMETER 714 / WAS USED WITH MO[DE]:C[OPY] OR IN[PUT]:I AND OU[TPUT]:O WERE USED 715 / WITH MO[DE]:K[ILL] OR MO[DE]:E[MPTY]. INPUT AND OUTPUT UNITS MUST 716 / BE USED ONLY WITH COPY MODE AND THE UNIT SPECIFICATION MUST ONLY 717 / BE USED WITH KILL OR EMPTY MODES. 718 719 / YES/NO VALUE REQUIRED! 720 721 / AN ATTEMPT WAS MADE TO INVOKE EITHER QU[ERY]:Q OR VE[RIFY]:V WITH 722 / AN IMPROPER VALUE. ONLY Y[ES] OR N[O] ARE VALID VALUES FOR THESE 723 / PARAMETERS. 724 / RESPONSE MODE ERROR MESSAGES. 725 726 / INVALID RESPONSE MODE PARAMETERS MAY LEAD TO THE FOLLOWING ERROR MESSAGES: 727 728 / INVALID FILE TYPE! 729 730 / THE USER ATTEMPTED AN INVALID FILE TYPE. ONLY A(SCII), B(INARY), 731 / E(VERYTHING), OR O(VERRIDE) ARE ALLOWED. RESPOND TO THE REPEATED 732 / QUERY WITH A PROPER FILE TYPE. 733 734 / INVALID MODE! 735 736 / THE USER ATTEMPTED AN INVALID MODE TYPE. ONLY C(OPY), K(ILL), E(MPTY), 737 / OR Q(UIT) ARE ALLOWED. RESPOND TO THE REPEATED QUERY WITH A PROPER 738 / MODE TYPE. 739 740 / INVALID UNIT NUMBER! 741 742 / THE USER ATTEMPTED AN INVALID UNIT NUMBER DURING A UNIT-ORIENTED 743 / QUERY ("INPUT: ", "OUTPUT: ", OR "UNIT: "). ONLY THE DIGITS "0" 744 / THROUGH "7" (CORRESPONDING TO SYS0: THROUGH SYS7:) ARE VALID. RESPOND 745 / TO THE REPEATED QUERY WITH A VALID UNIT NUMBER. 746 747 / MULTIPLE PERIOD CHARACTERS IN SEARCH STRING! 748 749 / MORE THAN ONE PERIOD CHARACTER WAS PASSED IN THE SEARCH STRING. 750 / ONLY ONE PERIOD CHARACTER IS ALLOWED IN THE SEARCH STRING TO 751 / SEPARATE THE FILE NAME STRING FROM THE EXTENSION STRING. 752 753 / ERROR MESSAGES COMMON TO INVOKED AND RESPONSE MODES. 754 755 / INVALID CATALOG! 756 757 / THE USER ATTEMPTED TO USE AN UNINITIALIZED OR OTHERWISE INVALID 758 / CATALOG ON AN ACCESSIBLE LOGICAL UNIT. TOTAL INITIALIZATION OF A 759 / CATALOG DEVICE IS NECESSARY BEFORE USING FILMAN AND IS BEYOND THE 760 / SCOPE OF THIS UTILITY. SEE P?S/8 SYSTEM DIRECTORY INITIALIZATION 761 / PROCEDURES ELSEWHERE. 762 / VERIFICATION MESSAGES. 763 764 / THESE MESSAGES CONCERN VERIFICATION ERRORS CAUSED BY I/O FAILURE DURING 765 / WRITE OR SUBSEQUENT VERIFY READ OPERATIONS (ASSUMING /N OR VE[RIFY]:N[O] 766 / IS NOT IN EFFECT): 767 768 / CATALOG VERIFY ERROR! 769 770 / THE LATEST CATALOG TO BE WRITTEN WAS READ BACK AND FAILED TO VERIFY 771 / CORRECTLY. THE USER WILL BE QUERIED FOR A POSSIBLE RETRY OF THE 772 / ENTIRE WRITE AND VERIFY OPERATION. IF THE OPERATION DOES NOT FINISH 773 / PROPERLY, AN ERROR MESSAGE WILL BE ISSUED: "CATALOG CORRUPTED!" 774 / INDICATING THE PROBABLE CORRUPTION OF THE SYSTEM UNIT WHERE THE 775 / AFFECTED FILES RESIDE. CORRECTIVE MEASURES MAY INCLUDE HARDWARE 776 / MAINTAINENCE OR MEDIA REFORMATTING, ETC. 777 778 / FILE VERIFY ERROR! 779 780 / THE LATEST FILE TO BE WRITTEN WAS READ BACK AND FAILED TO VERIFY 781 / CORRECTLY. THE USER WILL BE QUERIED FOR A POSSIBLE RETRY OF THE 782 / ENTIRE WRITE AND VERIFY OPERATION. IF THE OPERATION DOES NOT FINISH 783 / PROPERLY, THE USER IS ADVISED OF THE POSSIBLE CORRUPTION OF THE 784 / SECTION OF THE SYSTEM UNIT WHERE THE AFFECTED FILE RESIDES. CORRECTIVE 785 / MEASURES MAY INCLUDE HARDWARE MAINTAINENCE OR MEDIA REFORMATTING, ETC. 786 787 / IMPLEMENTATION NOTES AND CUSTOMIZATION. 788 789 / IT MAY BE DESIRABLE TO CUSTOMIZE ANY PARTICULAR COPY OF FILMAN TO THE USER'S 790 / OWN PREFERENCE REGARDING CERTAIN SWITCHES. FOR EXAMPLE, A USER MAY PREFER 791 / TO OVERRIDE THE "ARE YOU SURE? " QUERY ASSOCIATED WITH THE KILL AND EMPTY 792 / OPERATIONS. OPTION SWITCHES CONTROLLING THIS AND OTHER ASPECTS OF FILMAN 793 / ARE AVAILABLE TO CUSTOMIZE THE OPERATIONS OF THE PROGRAM, BUT THESE REQUIRE 794 / THE USER TO INVOKE FAVORED OPTIONS REPEATEDLY. 795 796 / SEVERAL KNOWN OPERATING SYSTEMS SUPPORT "PATCHED" VERSIONS OF SYSTEM PROGRAMS 797 / WHICH EFFECTIVELY FORCE THE EFFECT OF OPTION SWITCHES WHETHER EXPLICITLY 798 / GIVEN OR NOT. THIS PREVENTS THE POSSIBILITY OF USING THE PROGRAM IN THE 799 / ORIGINAL WAY AS THERE IS NO METHOD TO REVERT THE ENFORCED OPTION. 800 801 / TO OVERCOME THIS LIMITATION, THE USER CAN PATCH THE FIRST THREE WORDS OF 802 / THE CORE IMAGE OF FILMAN ITSELF WITH A "MASK" (EACH BIT CORRESPONDS TO AN 803 / OPTION SWITCH SERIALLY FROM /A-/Z FOLLOWED BY /0-/9). THIS MASKING VALUE 804 / WILL BE USED TO "REVERSE" THE EFFECT OF THE SPECIFIED SWITCH. FOR EXAMPLE: 805 / SETTING RELATIVE WORD TWO OF THE CORE IMAGE OF FILMAN TO 4000 WILL REVERSE 806 / THE /Y OPTION. THIS WOULD REQUIRE THE USER TO INVOKE /Y IF THE 807 / "ARE YOU SURE? " QUERY WERE DESIRED, OPPOSITE TO NORMAL CONVENTION. ALL 808 / SWITCHES CAN BE "REVERSED" ACCORDINGLY (INCLUDING OPTION SWITCHES IGNORED 809 / BY FILMAN!). THE RESULTANT CUSTOMIZED COPY OF FILMAN OPERATES IN A TOTALLY 810 / CONVENTIONAL MANNER; ONLY THE METHOD OF PASSING SWITCH OPTIONS CHANGES. 811 / CORE LAYOUT FOR THE FILMAN PROGRAM. 812 813 / 00000-02377 RESIDENT PROGRAM CODE 814 815 / 02400-02777 OUTPUT CATALOG BUFFER 816 817 / 03000-06777 FILE READ/WRITE BUFFER FOR COPYING OR IDENTIFICATION 818 819 / 03000-04177 SWAPPED CODE 820 821 / 04200-04577 OUTPUT CATALOG VERIFY BUFFER 822 823 / 05200-05577 ONCE-ONLY STARTUP CODE 824 825 / 06776-06777 INPUT CATALOG BUFFER SEAM (IF 4K) 826 827 / 07000-07177 INPUT CATALOG BUFFER (FIRST HALF) 828 829 / 07200-07377 INPUT CATALOG BUFFER (SECOND HALF IF 6K) 830 831 / 07200-07377 FILE VERIFY BUFFER (IF 4K) 832 833 / 07400-07577 STRING BUFFER, STACK 834 835 / 07000-07577 ONCE-ONLY STARTUP CODE 836 837 / 07600-07777 P?S/8 MONITOR I/O ROUTINES 838 839 / 10000-13777 FILE VERIFY BUFFER (IF 6K) 840 841 / 14000-77777 UNUSED (P?S/8 I/O ROUTINES OR CONSOLE OVERLAY MAY BE PRESENT) 842 843 / ALL RUNNING CODE IS INTIALLY LOADED 2600 HIGHER THAN ASSEMBLED TO ALLOW 844 / FILMAN TO PROCESS THE KEYBOARD MONITOR COMMAND BUFFER. THE ONCE-ONLY CODE 845 / IS LOADED INTO ABSOLUTE ADDRESS SPACE. THE ONCE-ONLY CODE MODIFIES AND 846 / RELOCATES THE RUNNING CODE AS NECESSARY. IF RESPONSE MODE OPERATIONS ARE 847 / NEEDED SUBSEQUENTLY, A PORTION OF THE PROGRAM WILL BE SWAPPED INTO ABSOLUTE 848 / ADDRESS SPACE AS REQUIRED. 849 / EQUATED SYMBOLS. 850 851 // SYMBOLS FROM P?S/8. 852 853 CATADR= 7000 /CATALOG ADDRESS NORMALLY 854 CATCORE=0150 /CONSTANT 7000 855 COLUMN= 0123 /COLUMN COUNTER 856 DIR= 0015 /DIRECTORY BLOCK 857 FILBEG= 3000 /FILE BUFFER 858 GETHAF= 0104 /GET A HALF-WORD 859 GETNDX= 0026 /GET HALF-WORD INDEX 860 INCON= 0031 /EQUATED FROM CONSOLE! 861 L10= 0174 /CONSTANT 0010 862 L200= 0105 /CONSTANT 0200 863 L40= 0046 /CONSTANT 0040 864 L7600= 0113 /CONSTANT 7600 865 L77= 0103 /CONSTANT 0077 866 NAME= 0054 /SCAN A NAME ROUTINE 867 OUTCON= 0033 /EQUATED FROM CONSOLE! 868 PSCRSIZ=0170 /POINTER TO SYSTEM CORE SIZE WORD 869 PUTBASE=0131 /PUT HALF-WORD BASE 870 PUTHAF= 0132 /PUT A HALF-WORD 871 PUTNDX= 0060 /PUT HALF-WORD INDEX 872 SBLOCK= 7635 /LOAD BLOCK IN SYSTEM LOADER 873 SBOOT= 7600 /SYSTEM BOOSTRAP ADDRESS 874 SBTFUN= 7602 /SYSTEM BOOTSTRAP UNIT WORD 875 SCRSIZE=7611 /MONITOR CORE SIZE WORD 876 SFUN= 7634 /SYSTEM LOADER FUNCTION WORD 877 SWAL= 7604 /SWITCHES /A-/L HERE 878 SWMX= 7605 /SWITCHES /M-/X HERE 879 SWY9= 7606 /SWITCHES Y, Z, 0-9 HERE 880 SYSIO= 7640 /SYSTEM I/O ENTRY 881 TEMP1= 0100 /MONITOR TEMPORARY 882 TSPACE= 0110 /TEST FOR A SPACE 883 TTY= 0003 /CONSOLE DEVICE CODE 884 WRITE= 4000 /SYSIO WRITE BIT 885 XR1= 0016 /AUTO-INDEX NUMBER ONE 886 887 // OTHER DEFINITIONS. 888 889 FNMLEN= 6 /FILE NAME LENGTH 890 JMPC= JMP . /CURRENT PAGE JMP INSTRUCTION 891 JMSC= JMS . /CURRENT PAGE JMS INSTRUCTION 892 NL0001= CLA IAC /LOAD AC WITH 0001 893 NL0002= CLA CLL CML RTL /LOAD AC WITH 0002 894 NL2000= CLA CLL CML RTR /LOAD AC WITH 2000 895 NL3777= CLA CLL CMA RAR /LOAD AC WITH 3777 896 NL4000= CLA CLL CML RAR /LOAD AC WITH 4000 897 NL5777= CLA CLL CMA RTR /LOAD AC WITH 5777 898 NL7775= CLA CLL CMA RTL /LOAD AC WITH 7775 899 NL7776= CLA CLL CMA RAL /LOAD AC WITH 7776 900 NL7777= CLA CMA /LOAD AC WITH 7777 901 REVISIO="A&77 /REVISION LETTER 902 STRLEN= 44 /36 CHARACTERS MAXIMUM IN SEARCH STRING 903 VERBUFF=0000 /VERIFY BUFFER IF 6K 904 VERSION=12 /VERSION NUMBER 905 V4KBUFF=CATADR+200 /FILES VERIFIED HERE IF 4K 906 907 / DEPENDENT DEFINITIONS. 908 909 JMSSYSI=SYSIO&177+JMSC /CALL TO SYSIO FROM ITS PAGE 910 KEYCODE=TTY^10+6000 /SKELETON KEYBOARD CODE 911 PRTCODE=TTY+1^10+6000 /SKELETON TELEPRINTER CODE 912 913 KCCIOT= KEYCODE+2 /CLEAR KEYBOARD FLAG, AC, SET READER RUN 914 KRBIOT= KEYCODE+6 /CLEAR KEYBOARD FLAG, LOAD CHARACTER INTO AC, 915 /SET READER RUN 916 KRSIOT= KEYCODE+4 /OR CHARACTER INTO AC, DON'T CLEAR KEYBOARD FLAG 917 KSFIOT= KEYCODE+1 /SKIP ON KEYBOARD FLAG 918 TLSIOT= PRTCODE+6 /LOAD OUTPUT BUFFER, CLEAR FLAG 919 TSFIOT= PRTCODE+1 /SKIP ON OUTPUT FLAG 920 PAGE 13 /OVER THE KEYBOARD MONITOR 921 922 PZ, RELOC 0 /WHERE THIS LOADS EVENTUALLY 923 924 *0 /START AT THE BEGINNING 925 926 XORSWS= . /XOR VALUES FOR OPTION SWITCHES HERE 927 928 000000* 0000 BLKCNT, 0/.-. /BLOCK COUNTER 929 000001* 0000 FLAGS, 0/.- /LOADING FLAGS 930 000002* 0000 FNM1, 0/.-. /FILE 931 000003* 0000 FNM2, .-. /NAMES 932 000004* 0000 FNM3, .-. /HERE 933 000005* 0007 L7, 7 /CONSTANT 0007; HIGH-ORDER ZERO ENDS THE FILE NAME 934 000006* 0000 GRPCNT, .-. /GROUP COUNTER 935 000007* 0000 WRDCNT, .-. /WORD COUNTER 936 937 *10 /DEFINE AUTO-INDEX AREA 938 939 IFNZRO 10-. 940 000010* 0177 L177, 177 /CONSTANT 0177 941 000011* 0000 FRSTSW, .-. /FIRST FILE SWITCH 942 000012* 0000 XR2, .-. /OUTPUT AUTO-INDEX 943 000013* 0000 XR3, .-. /BINARY AUTO-INDEX 944 000014* 3326 ICBLK, STRBF2-1 /LATEST INPUT FILE BLOCK; PRELOADED FOR STARTUP 945 000015* 7553 OCBLK, STRBUFFER-1 /LATEST OUTPUT FILE BLOCK; PRELOADED FOR STARTUP 946 000016* 0000 XR1, .-. /INPUT AUTO-INDEX 947 000017* 0000 P7TEMP, .-. /OUTPUT TEMPORARY 948 949 *20 /GET PAST AUTO-INDEX AREA 950 951 000020* 0000 BUFPTR, .-. /BUFFER POINTER FOR VERIFYING 952 000021* 0000 CHAR, .-. /INPUT BUFFER 953 000022* 0000 ESCAPSW,.-. / TERMINATOR SWITCH 954 000023* 0000 FCNT, .-. /FILE COUNT 955 000024* 5003 FILTYPE,4003!1000 /FILE TYPE: 1, 2, 3, 4003 OR 6003; 956 /1000 INDICATES DEFAULT IN EFFECT 957 000025* 0000 GTBASE, .-. /GET HALF-WORD BASE 958 000026* 0000 GTINDX, .-. /GET HALF-WORD INDEX 959 000027* 0000 ICSW, .-. /INPUT CATALOG OPEN SWITCH 960 000030* 0000 INCHAR, .-. /INPUT CHARACTER 961 000031* 4000 INUNIT, 4000 /INPUT UNIT FOR COPY 962 000032* 0000 FMASK, .-. /LATEST FILE TYPE: 1, 2, 4000 (OR 2000) 963 000033* 0000 LATLINE,.-. /LATEST LINE POINTER 964 000034* 0000 LATNUM, .-. /LATEST LINE NUMBER 965 000035* 7611 LSCRSIZ,SCRSIZE /POINTER TO SCRSIZE 966 000036* 0000 NUMPTR, .-. /TEMPORARY FOR ASCII VALIDATION 967 000037* 0000 OCSW, .-. /OUTPUT CATALOG OPEN SWITCH 968 000040* 4000 OTUNIT, 4000 /OUTPUT UNIT FOR COPY 969 000041* 0000 PARLMT, .-. /PAIR LIMIT 970 000042* 1657 PSCRIBE,SCRIBE /POINTER TO SCRIBE ROUTINE 971 000043* 0000 QUERYSW,0 /QUERY FOR FILES SWITCH; PRELOADED FOR NO QUERY 972 000044* 0000 TEMP, .-. /TEMPORARY 973 000045* 0000 TEMP2, .-. /TEMPORARY 974 000046* 0000 TXTPTR, .-. /TEXT UNPACKING POINTER 975 000047* 0000 TYPFIL, .-. /PARTICULAR FILE TYPE 976 000050* 4000 UNIT, 4000 /UNIT FOR KILL, EMPTY 977 000051* 1154 UPADDR, CHKCLR /<^P> ADDRESS 978 000052* 0100 VERARG, 1^100 /VERIFY ARGUMENT WORD **** 6K **** 20^100+10 979 000053* 0000 VERPTR, .-. /POINTER FOR VERIFYING 980 000054* 7777 VERSW, -1 /VERIFICATION SWITCH 981 982 / OUTPUT I/O ROUTINE. 983 984 000055* 0000 P7OUT, .-. /SEVEN BIT I/O ROUTINE 985 000056* 6041 P7TSF, TSFIOT /**** CONSOLE **** CIF MCS+10 986 000057* 5455 P7JMP, JMP I P7OUT /**** CONSOLE **** JMS OUTCON 987 000060* 6046 P7TLS, TLSIOT /**** CONSOLE **** JMP I P7OUT 988 000061* 7600 L7600A, CLA!400 /CLEAN UP 989 000062* 2055 ISZ P7OUT /BUMP RETURN ADDRESS 990 000063* 5455 JMP I P7OUT /TAKE SKIP RETURN 991 992 / INPUT I/O ROUTINE. 993 994 000064* 0000 CTLCTST,.-. /CHECK FOR <^C>, ETC. ROUTINE 995 000065* 7700 L7700, 7700 /CONSTANT 7700; THIS CLEARS THE AC 996 000066* 7400 L7400, NOP!400 /CONSTANT 7400; THIS CAN BE SKIPPED 997 000067* 6031 CHKKSF, KSFIOT /**** CONSOLE **** CIF MCS+10 998 000070* 5464 CHKJMP, JMP I CTLCTST /**** CONSOLE **** JMS INCON 999 000071* 6034 CHKKRS, KRSIOT/OR KRBIOT /**** CONSOLE **** JMP I CTLCTST 1000 000072* 0010 L10A, AND L177/[177] /JUST SEVEN-BIT 1001 000073* 3030 DCA INCHAR /STASH THE CHARACTER 1002 000074* 7346 NL7775 /-3 1003 000075* 1030 TAD INCHAR /COMPARE TO LATEST 1004 000076* 7450 SNA /SKIP IF NOT <^C> 1005 000077* 2435 ISZ I LSCRSIZ/[SCRSIZ]/ELSE SET SOFT INDICATOR 1006 000100* 7750 SPA SNA CLA /SKIP IF <^D> OR GREATER 1007 000101* 5461 JMP I L7600A/[SBOOT] /ELSE LEAVE 1008 000102* 6032 CHKKCC, KCCIOT/OR 0000 /**** CONSOLE **** 0000 1009 000103* 1030 TAD INCHAR /GET THE CHARACTER 1010 000104* 5464 JMP I CTLCTST /RETURN 1011 PAGE 1012 1013 / INVOKED MODE COPY/KILL COMMON CODE STARTS HERE. 1014 1015 000200* 4577 FILELUP,JMS I [CRLF] /DO A , 1016 000201* 4576 FILUP2, JMS I [CHKUP] /CHECK FOR <^C>, ETC. 1017 000202* 4575 JMS I [GNIFILE] /GET NEXT INPUT FILE 1018 000203* 5350 JMP FILCLOSE /END OF INPUT CATALOG 1019 000204* 3221 DCA INBLK /STORE BLOCK NUMBER IN-LINE 1020 000205* 7332 NL2000 /TAD (20^100)/SETUP PAGE BITS 1021 000206* 1031 TAD INUNIT /ADD ON INPUT UNIT 1022 000207* 3220 DCA INFUN /STORE FUNCTION WORD IN-LINE 1023 000210* 4777 JMS I (FILTER) /CHECK IF WE ACCEPT THIS FILE NAME 1024 000211* 5201 JMP FILUP2 /JUMP IF NOT 1025 000212* 7332 NL2000 /SET OVERRIDE BIT MASK 1026 000213* 0024 AND FILTYPE /GET THE OVERRIDE BIT 1027 000214* 7410 CKZAP1, SKP /**** KILLING **** SZA CLA 1028 000215* 5222 JMP NOREAD /JUMP IF NOT READING FOR CONTENT 1029 000216* 4574 JMS I [SYSIO] /CALL I/O ROUTINES 1030 000217* 3000 FILBEG /FILE BUFFER 1031 000220* 2000 INFUN, 20^100+.-. /UNIT BITS WILL BE FILLED IN 1032 000221* 0000 INBLK, .-. /BLOCK NUMBER WILL BE FILLED IN 1033 000222* 4776 NOREAD, JMS I (VALID8) /GO CLASSIFY FILE 1034 000223* 0024 AND FILTYPE /AND AGAINST DESIRED TYPES 1035 000224* 7650 SNA CLA /SKIP IF A DESIRED FILE 1036 000225* 5201 JMP FILUP2 /JUMP IF NOT 1037 000226* 2011 ISZ FRSTSW /IT IS THE FIRST FILE? 1038 000227* 5232 JMP NOT1 /JUMP IF NOT FILE NUMBER ONE 1039 000230* 4442 JMS I PSCRIBE/[SCRIBE]/GIVE THEM THE FILE MESSAGE 1040 000231* 2232 CKZAP2, FLCPMSG /**** KILLING **** FLKLMSG 1041 000232* 1031 NOT1, TAD INUNIT /GET INPUT UNIT 1042 000233* 4775 JMS I (FNAMPRT) /PRINT OUT THE COMPLETE FILE NAME 1043 000234* 1043 TAD QUERYSW /GET QUERY SWITCH 1044 000235* 7700 SMA CLA /SKIP IF SET 1045 000236* 5244 JMP NOQUERY /JUMP IF NOT 1046 000237* 4442 JMS I PSCRIBE/[SCRIBE]/GO PRINT THE 1047 000240* 1767 QUBLMSG /"? " SEPARATOR 1048 000241* 4573 JMS I [YESORNO] /GET RESPONSE 1049 000242* 7410 SKP /SKIP IF YES 1050 000243* 5200 JMP FILELUP /JUMP IF NO 1051 000244* 4774 NOQUERY,JMS I (GOCHOLE) /FIND AN OUTPUT SLOT 1052 000245* 5346 JMP OUTFULL /WASN'T ANY MORE ROOM IN OUTPUT CATALOG 1053 000246* 3273 DCA OUTBLK /STORE BLOCK NUMBER IN-LINE 1054 000247* 1040 TAD OTUNIT /GET OUTPUT UNIT 1055 000250* 1172 TAD [20^100+WRITE] /ADD ON WRITE FUNCTION 1056 000251* 3272 DCA OUTFUN /STORE FUNCTION WORD IN-LINE 1057 000252* 5263 CKZAP3, JMP COPFILE /**** KILLING **** NL7775 1058 000253* 1012 TAD XR2 /BACKUP TO BEGINNING 1059 000254* 3012 DCA XR2 /OF THE NAME ENTRY 1060 000255* 7240 NL7777 /GET DELETE VALUE 1061 000256* 3412 DCA I XR2 /DELETE FILE NAME FIRST PAIR 1062 000257* 3412 DCA I XR2 /CLEAR FILE NAME SECOND PAIR 1063 000260* 3412 DCA I XR2 /CLEAR FILE NAME THIRD PAIR 1064 000261* 2037 ISZ OCSW /INDICATE WE WROTE ON OUTPUT CATALOG 1065 000262* 5336 JMP KILCOMMON /CONTINUE THERE 1066 1067 000263* 4442 COPFILE,JMS I PSCRIBE/[SCRIBE]/GO PRINT THE 1068 000264* 2304 PTRMSG /" =>" SEPARATOR 1069 000265* 1040 TAD OTUNIT /GET THE OUTPUT UNIT 1070 000266* 4775 JMS I (FNAMPRT) /PRINT OUT THE COMPLETE FILE NAME 1071 000267* 4576 OUTAGN, JMS I [CHKUP] /CHECK FOR <^C>, ETC. 1072 000270* 4574 JMS I [SYSIO] /CALL I/O ROUTINES 1073 000271* 3000 FILBEG /FILE BUFFER 1074 000272* 6000 OUTFUN, 20^100+WRITE+.-. /UNIT BITS WILL BE FILLED IN 1075 000273* 0000 OUTBLK, .-. /BLOCK NUMBER WILL BE FILLED IN 1076 000274* 1054 TAD VERSW /GET VERIFY SWITCH 1077 000275* 7700 SMA CLA /SKIP IF VERIFY ON 1078 000276* 5340 JMP NOVERIFY /JUMP IF VERIFY OFF 1079 000277* 1171 TAD [FILBEG] /SETUP THE 1080 000300* 3020 DCA BUFPTR /DATA POINTER 1081 000301* 1040 TAD OTUNIT /GET OUTPUT UNIT 1082 000302* 1052 TAD VERARG /ADD ON PAGE AND FIELD BITS 1083 000303* 3314 DCA VERFUN /STORE IN-LINE 1084 000304* 1273 TAD OUTBLK /GET OUTPUT BLOCK NUMBER 1085 000305* 3315 DCA VERBLK /STORE IN-LINE AS VERIFY BLOCK NUMBER 1086 000306* 1170 V6KZP1, TAD [-20] /**** 6K **** NL7777 1087 000307* 3044 DCA TEMP /SETUP VERIFY BLOCK COUNTER 1088 000310* 1313 VERNEXT,TAD VERCORE /SETUP THE 1089 000311* 3053 DCA VERPTR /COMPARE POINTER 1090 000312* 4574 JMS I [SYSIO] /CALL I/O ROUTINES 1091 000313* 7200 VERCORE,V4KBUFFER /**** 6K **** VERBUFFER (0000) 1092 000314* 0100 VERFUN, 1^100+.-. /UNIT BITS WILL BE FILLED IN **** 6K **** 20^100+10+.-. 1093 000315* 0000 VERBLK, .-. /BLOCK NUMBER WILL BE FILLED IN 1094 000316* 1061 V6KZP2, TAD L7600A/[-1^200] /**** 6K **** NL4000 /TAD (-20^200) 1095 000317* 3045 DCA TEMP2 /SETUP THE VERIFY WORD COUNTER 1096 000320* 6201 VERLUP, CDF 00 /**** 6K **** CDF 10 1097 000321* 1453 TAD I VERPTR /GET A WORD 1098 000322* 7041 CIA /INVERT FOR TESTING 1099 000323* 6201 CDF 00 /BACK TO FIELD ZERO 1100 000324* 1420 TAD I BUFPTR /COMPARE TO ORIGINAL DATA WORD 1101 000325* 7640 SZA CLA /SKIP IF IT MATCHES 1102 000326* 5342 JMP VERBAD /JUMP IF NOT 1103 000327* 2020 ISZ BUFPTR /BUMP TO NEXT WORD 1104 000330* 2053 ISZ VERPTR /BUMP TO NEXT WORD 1105 000331* 2045 ISZ TEMP2 /DONE ALL WORDS? 1106 000332* 5320 JMP VERLUP /NO, KEEP GOING 1107 000333* 2315 ISZ VERBLK /BUMP TO NEXT BLOCK 1108 000334* 2044 ISZ TEMP /DONE ALL BLOCKS? 1109 000335* 5310 JMP VERNEXT /NO, KEEP GOING 1110 000336* 4442 KILCOMM,JMS I PSCRIBE/[SCRIBE]/GIVE THEM THE 1111 000337* 2300 OKMSG /"OK" MESSAGE 1112 000340* 2023 NOVERIF,ISZ FCNT /BUMP FILE COUNT 1113 000341* 5200 JMP FILELUP /GO DO NEXT FILE 1114 1115 / COMES HERE ON FILE COPY VERIFY ERROR. 1116 1117 000342* 4773 VERBAD, JMS I (ASKRETRY) /ASK FOR RETRY 1118 000343* 2356 VFBDMSG /TELL THEM FILE WAS BAD WITH THIS 1119 000344* 5267 JMP OUTAGN /TRY AGAIN 1120 1121 / THEY WILL ACCEPT THE BAD FILE. 1122 1123 000345* 5200 JMP FILELUP /GO DO NEXT FILE 1124 1125 / COMES HERE IF OUTPUT CATALOG IS FULL PREVENTING THE LATEST COPY. 1126 1127 000346* 4442 OUTFULL,JMS I PSCRIBE/[SCRIBE]/TELL THEM 1128 000347* 2206 CATFLMSG /OUTPUT CATALOG IS FULL 1129 000350* 1011 FILCLOS,TAD FRSTSW /GET FIRST TIME SWITCH 1130 000351* 7700 SMA CLA /SKIP IF NONE WERE DONE 1131 000352* 0000 CKZAP4, 0000 /**** KILLING **** JMS I [RUSURE] 1132 000353* 7410 SKP /SKIP IF YES 1133 000354* 5364 JMP CHKDONE /JUMP IF NO 1134 000355* 4567 JMS I [OCLOSE] /CLOSE OUTPUT CATALOG 1135 000356* 1011 TAD FRSTSW /GET FIRST TIME SWITCH 1136 000357* 7700 SMA CLA /SKIP IF NONE WERE DONE 1137 000360* 4577 JMS I [CRLF] /DO A , 1138 000361* 4566 JMS I [FCPRT] /PRINT FILE COUNT 1139 000362* 4442 JMS I PSCRIBE/[SCRIBE]/GIVE THEM THE FINISH MESSAGE 1140 000363* 2221 CKZAP5, COPYMSG /**** KILLING **** KILLMSG 1141 000364* 4565 CHKDONE,JMS I [DONECHK] /CHECK IF WE'RE DONE 1142 000365* 4574 JMS I [SYSIO] /CALL I/O ROUTINES 1143 000366* 3000 PFMRES2,FMRES2 /TRANSFER BUFFER 1144 000367* 0500 RESFUN, RESCNT^100+.-. /FUNCTION WORD; UNIT BITS WILL BE FILLED IN 1145 000370* 0014 RESBLK, FMRES2%200 /BLOCK NUMBER; ABSOLUTE START OF FILMAN WILL BE ADDED ON 1146 000371* 5766 JMP I PFMRES2/(FMRES2)/CONTINUE THERE 1147 1148 000373* 1561 PAGE 000374* 1400 000375* 1057 000376* 0747 000377* 2000 1149 000400* 0000 GETBUFF,.-. /GET A BUFFER ROUTINE 1150 000401* 7430 SZL /SKIP IF ONE CHARACTER BUFFER 1151 000402* 1377 TAD (STRLENGTH-1) /ELSE USE FULL BUFFER 1152 000403* 1376 TAD (STACK+1) /NOW HAVE ADDRESS OF HIGHEST LOCATION ALLOWED 1153 000404* 7041 CIA /WANT NEGATIVE FORM 1154 000405* 3025 DCA GTBASE /STORE AS BUFFER LIMIT 1155 000406* 4351 GRESTAR,JMS PPRINT /PRINT PROMPTING MESSAGE 1156 000407* 1066 TAD L7400/[STACK] /RESET THE 1157 000410* 3020 DCA BUFPTR /OUTPUT POINTER 1158 000411* 4564 GETINPU,JMS I [INPUT] /GET A CHARACTER 1159 000412* 4327 GOTINPU,JMS CMDSUB /TRY TO FIND 1160 000413* 3647 CHTBL-1 /SPECIAL CHARACTERS 1161 000414* 1163 TAD [-40] /COMPARE LATEST TO CONTROL CHARACTER 1162 000415* 7710 SPA CLA /SKIP IF GREATER 1163 000416* 5240 JMP GCMBEEP /IGNORE BAD CONTROL CHARACTERS 1164 000417* 1030 TAD INCHAR /GET THE CHARACTER 1165 000420* 1174 TAD [-140] /COMPARE TO LOWER-CASE LIMIT 1166 000421* 7510 GCMZAP, SPA /**** NOT /U **** NOP!400 1167 000422* 1162 TAD [40] /RESTORE CASE 1168 000423* 1161 TAD [100] /RESTORE THE CHARACTER 1169 000424* 7410 SKP /DON'T DO STUFF! 1170 000425* 1162 GOTHT, TAD [" &177] / BECOMES 1171 000426* 3355 DCA GBTEMP /SAVE IT 1172 000427* 1020 TAD BUFPTR /GET OUTPUT POINTER 1173 000430* 1025 TAD GTBASE /COMPARE TO BUFFER LIMIT 1174 000431* 7700 SMA CLA /SKIP IF NOT AT END YET 1175 000432* 5240 JMP GCMBEEP /JUMP IF IT IS 1176 000433* 1355 TAD GBTEMP /GET THE CHARACTER 1177 000434* 3420 DCA I BUFPTR /STORE IN THE BUFFER 1178 000435* 2020 ISZ BUFPTR /BUMP THE POINTER 1179 000436* 1355 TAD GBTEMP /GET THE CHARACTER 1180 000437* 7410 SKP /PRINT IT, DON'T BEEP 1181 1182 / COMES HERE ON BAD INPUT OR FULL BUFFER. 1183 1184 000440* 1005 GCMBEEP,TAD L7/[7] /GET A 1185 000441* 4560 JMS I [P7CH] /RING IT 1186 000442* 5211 JMP GETINPUT /KEEP GOING 1187 1188 / COMES HERE ON ANY CHARACTER 1189 1190 000443* 7330 GOTESC, NL4000 /INDICATE SEEN 1191 000444* 3022 GOTCR, DCA ESCAPSW /STORE THE SWITCH 1192 000445* 3420 DCA I BUFPTR /DELIMIT THE BUFFER 1193 000446* 1020 TAD BUFPTR /GET THE POINTER 1194 000447* 1157 TAD [-STACK] /CHECK IF POINTING AT BEGINNING OF BUFFER 1195 000450* 7750 SPA SNA CLA /SKIP IF PAST BEGINNING 1196 000451* 5240 JMP GCMBEEP /ELSE COMPLAIN 1197 000452* 2200 ISZ GETBUFFER /BUMP PAST ARGUMENT 1198 000453* 5600 JMP I GETBUFFER /RETURN 1199 / COMES HERE ON <^U>. 1200 1201 000454* 1156 DELETL, TAD ["^&177] /GET AN "^" 1202 000455* 4560 JMS I [P7CH] /PRINT IT 1203 000456* 1375 TAD ("U&177) /GET A "U" 1204 000457* 4560 JMS I [P7CH] /PRINT IT 1205 000460* 5206 JMP GRESTART /RESTART 1206 1207 / COMES HERE ON . 1208 1209 000461* 4351 LFVIEW, JMS PPRINT /PRINT OUT PROMPTING MESSAGE AGAIN 1210 000462* 1066 TAD L7400/[STACK] /SETUP THE 1211 000463* 3355 DCA GBTEMP /POINTER 1212 000464* 1355 PRBLUP, TAD GBTEMP /GET THE POINTER 1213 000465* 7041 CIA /INVERT FOR TESTING 1214 000466* 1020 TAD BUFPTR /COMPARE TO BUFFER POINTER 1215 000467* 7650 SNA CLA /SKIP IF NOT THERE YET 1216 000470* 5211 JMP GETINPUT /JUMP IF AT CURRENT END 1217 000471* 1755 TAD I GBTEMP /GET LATEST CHARACTER 1218 000472* 4560 JMS I [P7CH] /PRINT IT 1219 000473* 2355 ISZ GBTEMP /BUMP TO NEXT 1220 000474* 5264 JMP PRBLUP /KEEP GOING 1221 1222 / COMES HERE ON ANY BACKSPACING CHARACTER. 1223 1224 000475* 4357 BACKSP, JMS RUBCHK /CHECK WHERE WE ARE IN BUFFER 1225 000476* 5240 JMP GCMBEEP /COMPLAIN IF TOO FAR BACK 1226 000477* 5307 BZAP, JMP HARDRUBOUT /**** NOT /B **** 0000 1227 000500* 1072 TAD L10A/["H&37] /GET 1228 000501* 4560 JMS I [P7CH] /PRINT IT 1229 000502* 1162 TAD [" &177] /GET A 1230 000503* 4560 JMS I [P7CH] /PRINT IT 1231 000504* 1072 TAD L10A/["H&37] /GET 1232 000505* 4560 JMS I [P7CH] /PRINT IT 1233 000506* 5211 JMP GETINPUT /KEEP GOING 1234 1235 / COMES HERE IF BACKSPACING ON HARD-COPY TERMINAL. 1236 1237 000507* 1374 HARDRUB,TAD ("\&177) /GET DELIMITER 1238 000510* 4560 JMS I [P7CH] /PRINT IT 1239 000511* 2020 ISZ BUFPTR /COMPENSATE FOR REDUNDANT CHECK 1240 000512* 4357 RUBAGN, JMS RUBCHK /CHECK WHERE WE ARE IN BUFFER 1241 000513* 5321 JMP RUBDONE /JUMP IF TOO FAR 1242 000514* 1420 TAD I BUFPTR /GET THE OLD CHARACTER 1243 000515* 4560 JMS I [P7CH] /PRINT IT 1244 000516* 4564 JMS I [INPUT] /GET FURTHER INPUT HERE 1245 000517* 4327 JMS CMDSUB /CHECK IF A 1246 000520* 3674 RUBTBL-1 /BACKSPACING CHARACTER 1247 000521* 3355 RUBDONE,DCA GBTEMP /STORE LATEST OR 1248 000522* 1374 TAD ("\&177) /GET TRAILING DELIMITER 1249 000523* 4560 JMS I [P7CH] /PRINT IT 1250 000524* 1355 TAD GBTEMP /GET THE LATEST (OR ) 1251 000525* 3030 DCA INCHAR /APPEAR TO HAVE INPUT 1252 000526* 5212 JMP GOTINPUT /GO USE IT THERE 1253 000527* 0000 CMDSUB, .-. /COMMAND TABLE SEARCH ROUTINE 1254 000530* 7200 CLA /CLEAN UP 1255 000531* 1727 TAD I CMDSUB /GET THE INLINE POINTER 1256 000532* 3355 DCA GBTEMP /STASH IT 1257 000533* 2327 ISZ CMDSUB /BUMP PAST POINTER 1258 000534* 2355 GCMLUP, ISZ GBTEMP /BUMP TO NEXT 1259 000535* 1755 TAD I GBTEMP /GET AN ENTRY 1260 000536* 2355 ISZ GBTEMP /BUMP TO NEXT 1261 000537* 7450 SNA /END OF TABLE? 1262 000540* 5347 JMP GCMEND /YES, FORGET IT 1263 000541* 1030 TAD INCHAR /COMPARE TO LATEST 1264 000542* 7640 SZA CLA /SKIP IF IT MATCHES 1265 000543* 5334 JMP GCMLUP /JUMP IF NOT 1266 000544* 1755 TAD I GBTEMP /GET THE ADDRESS 1267 000545* 3355 DCA GBTEMP /STASH IT 1268 000546* 5755 JMP I GBTEMP /GO THERE 1269 1270 000547* 1030 GCMEND, TAD INCHAR /GET THE CHARACTER BACK 1271 000550* 5727 JMP I CMDSUB /RETURN 1272 1273 000551* 0000 PPRINT, .-. /PROMPT PRINT ROUTINE 1274 000552* 1600 TAD I GETBUFFER /GET MESSAGE ADDRESS 1275 000553* 3355 DCA GBTEMP /STORE IN-LINE 1276 000554* 4442 JMS I PSCRIBE/[SCRIBE]/CALL MESSAGE PRINT ROUTINE 1277 000555* 0000 GBTEMP, .-. /WILL BE PASSED MESSAGE ADDRESS 1278 000556* 5751 JMP I PPRINT /RETURN 1279 1280 000557* 0000 RUBCHK, .-. /RUBOUT CHECK ROUTINE 1281 000560* 7240 NL7777 /-1 1282 000561* 1020 TAD BUFPTR /BACKUP THE POINTER 1283 000562* 3355 DCA GBTEMP /SAVE FOR NOW 1284 000563* 1355 TAD GBTEMP /GET IT BACK 1285 000564* 1157 TAD [-STACK] /COMPARE TO LOWER LIMIT 1286 000565* 7710 SPA CLA /SKIP IF OK 1287 000566* 5757 JMP I RUBCHK /RETURN IMMEDIATE IF NOT 1288 000567* 1355 TAD GBTEMP /GET UPDATED VALUE 1289 000570* 3020 DCA BUFPTR /USE IT IN POINTER 1290 000571* 2357 ISZ RUBCHK /BUMP RETURN ADDRESS 1291 000572* 5757 JMP I RUBCHK /TAKE SKIP RETURN 1292 1293 000574* 0134 PAGE 000575* 0125 000576* 7401 000577* 0043 1294 / P?S/8 ASCII FILE VALIDATOR. 1295 1296 / CHECKS FOR VALID POINTERS. 1297 / CHECKS FOR VALID LINE NUMBERS. 1298 / CHECKS FOR AND DUMMY POINTERS. 1299 / CHECKS FOR VALID SEQUENCES. 1300 1301 / TAKES SKIP RETURN IF AND ONLY IF FILE IS VALID SIX-BIT ASCII. 1302 1303 000600* 0000 VALASC, .-. /VALIDATE ASCII 1304 000601* 1555 TAD I [FILBEG+3776] /GET FREE TEXT POINTER 1305 000602* 4340 JMS RNGCHK /VALIDATE VALUE 1306 000603* 1554 TAD I [FILBEG+3777] /GET FREE LINE NUMBER PAIR POINTER 1307 000604* 4340 JMS RNGCHK /VALIDATE ITS VALUE ALSO 1308 000605* 1555 TAD I [FILBEG+3776] /GET TEXT POINTER 1309 000606* 7041 CIA /INVERT FOR TEST 1310 000607* 1554 TAD I [FILBEG+3777] /COMPARE TO LINE NUMBER VALUE 1311 000610* 7710 SPA CLA /SKIP IF POSSIBLE 1312 000611* 5600 JMP I VALASC /BARF 1313 000612* 1555 TAD I [FILBEG+3776] /GET TEXT POINTER AGAIN 1314 000613* 3044 DCA TEMP /STASH IT 1315 000614* 1444 TAD I TEMP /GET WORD 1316 000615* 7640 SZA CLA /SKIP IF ACTUALLY 1317 000616* 5600 JMP I VALASC /BARF 1318 000617* 1554 TAD I [FILBEG+3777] /GET PAIR POINTER 1319 000620* 3044 DCA TEMP /STASH IT 1320 000621* 1444 TAD I TEMP /GET PAIR'S FREE TEXT POINTER 1321 000622* 7041 CIA /INVERT FOR TEST 1322 000623* 1555 TAD I [FILBEG+3776] /COMPARE TO ALREADY VERIFIED VALUE 1323 000624* 7640 SZA CLA /SKIP IF THEY MATCH 1324 000625* 5600 JMP I VALASC /BARF IF THEY DON'T 1325 000626* 2044 ISZ TEMP /BUMP TO LINE NUMBER 1326 000627* 1444 TAD I TEMP /GET THE DUMMY LINE NUMBER 1327 000630* 7101 CLL IAC /SEE IF 7777 1328 000631* 7620 SNL CLA /SKIP IF SO 1329 000632* 5600 JMP I VALASC /BARF IF NOT 1330 000633* 1554 TAD I [FILBEG+3777] /GET DUMMY PAIR POINTER ADDRESS 1331 000634* 7041 CIA /INVERT NOW, SAVE TIME LATER 1332 000635* 3041 DCA PARLMT /SAVE FOR TESTING 1333 000636* 1155 TAD [FILBEG+3774+2] /SETUP THE 1334 000637* 3036 DCA NUMPTR /INITIAL REVERSE POINTER 1335 000640* 7344 NUMLUP, NL7776 /\ 1336 000641* 1036 TAD NUMPTR / >BACKUP TO PREVIOUS PAIR 1337 000642* 3036 DCA NUMPTR // 1338 000643* 1036 TAD NUMPTR /GET THE POINTER VALUE 1339 000644* 4340 JMS RNGCHK /PREVENT DEVIOUS PROBLEMS! 1340 000645* 1036 TAD NUMPTR /GET IT AGAIN 1341 000646* 1041 TAD PARLMT /COMPARE TO LIMIT 1342 000647* 7450 SNA /SKIP IF NOT AT END OF FILE 1343 000650* 5336 JMP FILOK /JUMP IF SO 1344 000651* 7710 SPA CLA /SKIP IF POSSIBLE VALUE 1345 000652* 5600 JMP I VALASC /IMPOSSIBLE VALUE OF POINTER IN THIS FILE 1346 000653* 1036 TAD NUMPTR /GET LATEST PAIR POINTER 1347 000654* 3044 DCA TEMP /SAVE ADJUSTED POINTER 1348 000655* 1444 TAD I TEMP /GET THE TEXT POINTER 1349 000656* 4340 JMS RNGCHK /VALIDATE IT 1350 000657* 1044 TAD TEMP /GET THE POINTER TO TEXT POINTER 1351 000660* 7001 IAC /BUMP TO LINE NUMBER POINTER 1352 000661* 3045 DCA TEMP2 /SAVE FOR LATER 1353 000662* 1036 TAD NUMPTR /GET THE POINTER AGAIN 1354 000663* 1377 TAD (-FILBEG-3774) /IS IT THE FIRST PAIR? 1355 000664* 7650 SNA CLA /SKIP IF NOT 1356 000665* 5327 JMP SPCCHK /JUMP IF SO 1357 000666* 1444 TAD I TEMP /GET THE TEXT POINTER 1358 000667* 7141 CLL CIA /INVERT FOR TEST 1359 000670* 1033 TAD LATLIN /COMPARE TO PREVIOUS TEXT POINTER 1360 000671* 7630 SZL CLA /SKIP IF HIGHER 1361 000672* 5600 JMP I VALASC /COMPLAIN OF NON-SEQUENCED TEXT 1362 000673* 1445 TAD I TEMP2 /GET OUR LINE NUMBER 1363 000674* 7141 CLL CIA /INVERT FOR TEST 1364 000675* 1034 TAD LATNUM /COMPARE TO PREVIOUS LINE NUMBER 1365 000676* 7630 SZL CLA /SKIP IF OURS IS LARGER 1366 000677* 5600 JMP I VALASC /BARF ON OUT OF SEQUENCE NUMBERS 1367 000700* 1444 SPECIN, TAD I TEMP /GET OUR TEXT POINTER 1368 000701* 7041 CIA /INVERT IT FOR TEST 1369 000702* 1046 TAD TXTPTR /COMPARE TO UNPACKING POINTER 1370 000703* 7640 SZA CLA /SKIP IF THEY MATCH 1371 000704* 5600 JMP I VALASC /BARF IF EXTRA LINES IN FILE! 1372 000705* 1446 SRCHZER,TAD I TXTPTR /GET A PAIR FROM OUR TEXT LINE 1373 000706* 7450 SNA /? 1374 000707* 5600 JMP I VALASC /YES, BUT IN THE WRONG PLACE! 1375 000710* 0065 AND L7700/[7700] /JUST LEFT HALF 1376 000711* 7650 SNA CLA /? 1377 000712* 5321 JMP FNDZERO /YES 1378 000713* 1446 TAD I TXTPTR /NO, GET IT AGAIN 1379 000714* 0153 AND [77] /JUST RIGHT HALF 1380 000715* 7650 SNA CLA /? 1381 000716* 5321 JMP FNDZERO /YES 1382 000717* 2046 ISZ TXTPTR /NO, BUMP TO NEXT PAIR 1383 000720* 5305 JMP SRCHZERO /TRY AGAIN 1384 000721* 2046 FNDZERO,ISZ TXTPTR /BUMP TO BEGINNING OF NEXT LINE 1385 000722* 1444 TAD I TEMP /GET OUR TEXT POINTER 1386 000723* 3033 DCA LATLIN /SAVE FOR NEXT ROUND OF TESTS 1387 000724* 1445 TAD I TEMP2 /GET OUR LINE NUMBER 1388 000725* 3034 DCA LATNUM /SAVE IT FOR NEXT TIME ALSO 1389 000726* 5240 JMP NUMLUP /GO CHECK ANOTHER LINE 1390 1391 000727* 1444 SPCCHK, TAD I TEMP /GET THE TEXT POINTER 1392 000730* 1376 TAD (-FILBEG) /IS IT AT THE BEGINNING? 1393 000731* 7640 SZA CLA /SKIP IF SO 1394 000732* 5600 JMP I VALASC /BARF 1395 000733* 1171 TAD [FILBEG] /SETUP THE 1396 000734* 3046 DCA TXTPTR /UNPACKING POINTER 1397 000735* 5300 JMP SPECIN /CONTINUE THERE 1398 1399 000736* 2200 FILOK, ISZ VALASC /BUMP TO GOOD RETURN 1400 000737* 5600 JMP I VALASC /AND CELEBRATE 1401 1402 000740* 0000 RNGCHK, .-. /VALID RANGE CHECK ROUTINE 1403 000741* 1375 TAD (-FILBEG-3775) /SUBTRACT BASE 1404 000742* 7100 CLL /CLEAR LINK FOR TEST 1405 000743* 1374 TAD (3775) /ADD ON VALID RANGE 1406 000744* 7620 SNL CLA /SKIP IF IN RANGE 1407 000745* 5600 JMP I VALASC /COMPLAIN IF NOT 1408 000746* 5740 JMP I RNGCHK /OK TO GO ON 1409 1410 000747* 0000 VALID8, .-. /FILE TYPE VALIDATION ROUTINE 1411 000750* 7332 NL2000 /SETUP OVERRIDE MASK 1412 000751* 0024 AND FILTYPE /GET THE BIT 1413 000752* 7440 SZA /SKIP IF NORMAL 1414 000753* 5357 JMP VALOVERRIDE /JUMP IF OVERRIDE IN EFFECT 1415 000754* 4200 JMS VALASC /CHECK IF FILE IS ASCII 1416 000755* 5362 JMP NOTASC /JUMP IF NOT 1417 000756* 7201 NL0001 /INDICATE ASCII FILE TYPE 1418 000757* 3032 VALOVER,DCA FMASK /STORE FILE TYPE MASK 1419 000760* 1032 TAD FMASK /GET IT BACK 1420 000761* 5747 JMP I VALID8 /RETURN 1421 1422 000762* 4773 NOTASC, JMS I (VALBIN) /CHECK IF FILE IS BINARY 1423 000763* 7330 NL4000 /NOT BINARY FILE 1424 000764* 7450 SNA /SKIP IF NOT BINARY 1425 000765* 7326 NL0002 /ELSE INDICATE SO 1426 000766* 5357 JMP VALOVERRIDE /CONTINUE THERE 1427 1428 000767* 3623 SYSMSG, TEXT "^SYS^" 000770* 3123 000771* 3600 1429 1430 000773* 1000 PAGE 000774* 3775 000775* 1003 000776* 5000 000777* 1004 1431 / BINARY FILE VALIDATOR. 1432 1433 / CHECKS FOR *200 AND ITS FLAG BITS. 1434 / CHECKS FOR WITHIN 20 BLOCKS. 1435 / CHECKS ANY FIELD SETTINGS FOR 6201 FORM. 1436 1437 / TAKES SKIP RETURN ONLY IF FILE IN CORE IS VALID P?S/8 BINARY. 1438 1439 001000* 0000 VALBIN, .-. /VALIDATE BINARY 1440 001001* 7330 NL4000 /GET GOOD BITS VALUE 1441 001002* 1571 TAD I [FILBEG] /COMPARE TO FIRST WORD OF FILE 1442 001003* 0172 AND [6000] /JUST GOOD BITS 1443 001004* 7640 SZA CLA /SKIP IF OK 1444 001005* 5600 JMP I VALBIN /BARF 1445 001006* 1777 TAD I (FILBEG+1) /GET FIRST ORIGIN 1446 001007* 1061 TAD L7600A/[-200] /COMPARE TO STANDARD VALUE 1447 001010* 7640 SZA CLA /SKIP IF VALID 1448 001011* 5600 JMP I VALBIN /BARF 1449 001012* 1376 TAD (FILBEG-1) /SETUP THE 1450 001013* 3013 DCA XR3 /BUFFER POINTER 1451 001014* 1170 TAD [-20] /SETUP THE 1452 001015* 3000 DCA BLKCNT /BLOCK COUNT 1453 001016* 1375 NEWREC, TAD (-22) /SETUP THE 1454 001017* 3006 DCA GRPCNT /GROUP COINT 1455 001020* 1152 NEWGRP, TAD [-6] /SETUP THE 1456 001021* 3007 DCA WRDCNT /WORD COUNT 1457 001022* 1413 TAD I XR3 /GET A FLAG WORD 1458 001023* 7110 CLL RAR /DO INITIAL ADJUSTMENT 1459 001024* 7410 SKP /NOT THIS TIME! 1460 001025* 1001 GRPLUP, TAD FLAGS /GET FLAG WORD 1461 001026* 7006 RTL /SHIFT IT 1462 001027* 3001 DCA FLAGS /SAVE IT BACK 1463 001030* 1001 TAD FLAGS /GET IT BACK AGAIN 1464 001031* 7710 SPA CLA /LOAD WORD OR ORIGIN? 1465 001032* 5245 JMP EOFCHK /NO, TRY FOR AND FIELD 1466 001033* 2013 ISZ XR3 /YES, THROW IT AWAY 1467 001034* 2007 NXTWRD, ISZ WRDCNT /DONE WITH THIS GROUP? 1468 001035* 5225 JMP GRPLUP /NO, GO BACK FOR MORE 1469 001036* 2006 ISZ GRPCNT /DONE WITH THIS BLOCK? 1470 001037* 5220 JMP NEWGRP /NO, KEEP GOING 1471 001040* 2013 ISZ XR3 /YES, THROW AWAY 1472 001041* 2013 ISZ XR3 /THE DUMMY WORDS 1473 001042* 2000 ISZ BLKCNT /DONE WITH THE FILE? 1474 001043* 5216 JMP NEWREC /NO, GO DO ANOTHER BLOCK 1475 001044* 5600 JMP I VALBIN /YES, FILE HAS NO ! 1476 1477 001045* 7630 EOFCHK, SZL CLA /? 1478 001046* 5251 JMP FLDCHK /NO, CHECK OUT FIELD SETTING 1479 001047* 2200 ISZ VALBIN /YES, BUMP TO GOOD RETURN 1480 001050* 5600 JMP I VALBIN /TELL THEM THE GOOD NEWS 1481 001051* 1413 FLDCHK, TAD I XR3 /GET THE FIELD SETTING 1482 001052* 0374 AND (7603) /REMOVE FIELD AND BANK BITS 1483 001053* 1373 TAD (-CDF) /COMPARE TO CDF BASE VALUE 1484 001054* 7650 SNA CLA /SKIP IF DIFFERENT 1485 001055* 5234 JMP NXTWRD /JUMP IF OK 1486 001056* 5600 JMP I VALBIN /TAKE BAD RETURN 1487 1488 001057* 0000 FNAMPRT,.-. /FILE NAME PRINT ROUTINE 1489 001060* 4551 JMS I [UNITPRT] /PRINT PASSED UNIT 1490 001061* 1150 TAD [FNM1] /POINT TO 1491 001062* 3025 DCA GTBASE /FILE NAME 1492 001063* 3026 DCA GTINDX /CLEAR INDEX 1493 001064* 4547 FNAMLP, JMS I [GETHALF] /GET A CHARACTER 1494 001065* 7450 SNA /END OF NAME? 1495 001066* 5275 JMP IDCHECK /YES 1496 001067* 1162 TAD [40] /\ 1497 001070* 0153 AND [77] / >MAKE IT SEVEN-BIT 1498 001071* 1162 TAD [40] // 1499 001072* 4560 JMS I [P7CH] /PRINT IT 1500 001073* 2026 ISZ GTINDX /BUMP TO NEXT 1501 001074* 5264 JMP FNAMLP /KEEP GOING 1502 1503 001075* 7332 IDCHECK,NL2000 /SET OVERRIDE BIT MASK 1504 001076* 0032 AND FMASK /GET THE BIT 1505 001077* 7640 SZA CLA /SKIP IF FILE TYPE IS KNOWN 1506 001100* 5657 JMP I FNAMPRT /ELSE RETURN NOW 1507 001101* 4442 JMS I PSCRIBE/[SCRIBE]/GIVE THEM THE 1508 001102* 1762 BBRKMSG /" <" MESSAGE 1509 001103* 7344 NL7776 /SETUP THE MASK 1510 001104* 0032 AND FMASK /GET THE EVERYTHING AND BINARY BITS 1511 001105* 7510 SPA /SKIP IF NOT EVERYTHING TYPE 1512 001106* 5314 JMP PRTUNKNOWN /JUMP IF EVERYTHING ONLY TYPE 1513 001107* 7650 SNA CLA /SKIP IF BINARY 1514 001110* 5317 JMP PRTASCII /MUST BE ASCII 1515 001111* 4442 JMS I PSCRIBE/[SCRIBE]/GIVE THEM THE 1516 001112* 2203 BNMSG /"BNRY>" MESSAGE 1517 001113* 5657 JMP I FNAMPRT /RETURN 1518 1519 001114* 4442 PRTUNKN,JMS I PSCRIBE/[SCRIBE]/GIVE THEM THE 1520 001115* 2307 QUMSG /"UNKN>" MESSAGE 1521 001116* 5657 JMP I FNAMPRT /RETURN 1522 1523 001117* 4442 PRTASCI,JMS I PSCRIBE/[SCRIBE]/GIVE THEM THE 1524 001120* 2200 ASMSG /"ASCI>" MESSAGE 1525 001121* 5657 JMP I FNAMPRT /RETURN 1526 / INPUT ROUTINE. 1527 1528 001122* 0000 CHKUP, .-. /INPUT AND CHECK FOR <^C>, ETC. ROUTINE 1529 001123* 4064 JMS CTLCTST /CHECK FOR <^C>, ETC. 1530 001124* 7450 SNA /SKIP IF ANYTHING THERE 1531 001125* 5354 JMP CHKCLR /ELSE FORGET IT 1532 001126* 1170 TAD [-"P!300] /IS IT <^P>? 1533 001127* 7450 SNA /SKIP IF NOT 1534 001130* 5345 JMP DOUP /JUMP IF SO 1535 001131* 1372 TAD (-"S+"P) /IS IT <^S>? 1536 001132* 7450 SNA /SKIP IF OTHER 1537 001133* 5350 JMP QWAIT /JUMP IF IT MATCHES 1538 001134* 7001 IAC /TAD (-"R+"S)/IS IT <^R>? 1539 001135* 7640 SZA CLA /SKIP IF SO 1540 001136* 5722 JMP I CHKUP /RETURN IF NOT 1541 001137* 7330 NL4000 /SET INVERSION BIT 1542 001140* 1043 TAD QUERYSW /REVERSE QUERY STATE 1543 001141* 3043 DCA QUERYSW /STORE BACK 1544 001142* 1371 TAD ("R&177) /GET AN "R" 1545 001143* 4356 JMS UPRINT /PRINT "^R" 1546 001144* 5354 JMP CHKCLR /OBLITERATE THE CHARACTER 1547 1548 001145* 1370 DOUP, TAD ("P&177) /GET A "P" 1549 001146* 4356 JMS UPRINT /PRINT "^P" 1550 001147* 5451 JMP I UPADDR /GO WHERE YOU SHOULD 1551 1552 001150* 4064 QWAIT, JMS CTLCTST /GET ANOTHER CHARACTER AND CHECK FOR <^C>, ETC. 1553 001151* 1146 TAD [-"Q!300] /IS IT <^Q>? 1554 001152* 7640 SZA CLA /SKIP IF SO 1555 001153* 5350 JMP QWAIT /JUMP IF NOT 1556 001154* 3030 CHKCLR, DCA INCHAR /OBLITERATE THE CHARACTER 1557 001155* 5722 JMP I CHKUP /RETURN 1558 1559 001156* 0000 UPRINT, .-. /"^" CHARACTER PRINT ROUTINE 1560 001157* 3200 DCA VALBIN /STORE PASSED VALUE 1561 001160* 1156 TAD ["^&177] /GET AN "^" 1562 001161* 4055 JMS P7OUT /PRINT IT 1563 001162* 5361 JMP .-1 /WAIT FOR IT 1564 001163* 1200 TAD VALBIN /GET PASSED VALUE 1565 001164* 4055 JMS P7OUT /PRINT IT 1566 001165* 5364 JMP .-1 /WAIT FOR IT 1567 001166* 5756 JMP I UPRINT /RETURN 1568 1569 001170* 0120 PAGE 001171* 0122 001172* 7775 001173* 1577 001174* 7603 001175* 7756 001176* 2777 001177* 3001 1570 001200* 0000 GNIFILE,.-. /GET NEXT INPUT FILE ROUTINE 1571 001201* 1027 TAD ICSW /IS INPUT CATALOG ALREADY LOADED AND ACTIVE? 1572 001202* 7540 SMA SZA /SKIP IF NOT 1573 001203* 5261 JMP ICIN /JUMP IF SO 1574 001204* 7700 SMA CLA /SKIP IF INPUT CATALOG IS LOADED 1575 001205* 4354 JMS ICLODE /GO LOAD THE INPUT CATALOG 1576 001206* 7201 NL0001 /INDICATE THE 1577 001207* 3027 DCA ICSW /INPUT CATALOG IS ACTIVE 1578 001210* 1154 TAD [CATADR-1] /SETUP THE 1579 001211* 3016 DCA XR1 /BUFFER POINTER 1580 001212* 1777 TAD I (CATADR+377) /GET FIRST BLOCK 1581 001213* 3014 DCA ICBLK /SETUP FILE BLOCK 1582 001214* 1016 ICLOOP, TAD XR1 /GET THE POINTER 1583 001215* 1376 TAD (-CATADR-176+1) /COMPARE TO DANGEROUS VALUE 1584 001216* 7640 I6KZAP, SZA CLA /**** 6K **** CLA!400 1585 001217* 5240 JMP ICOK /JUMP IF NOT AT DANGER POINT 1586 001220* 1054 TAD VERSW /GET VERIFY SWITCH 1587 001221* 7700 SMA CLA /SKIP IF WE ARE VERIFYING 1588 001222* 5240 JMP ICOK /JUMP IF NOT 1589 001223* 1775 TAD I (CATADR+176) /GET FIRST ENDANGERED WORD 1590 001224* 3555 DCA I [CATADR+176-200] /MOVE IN FRONT OF BUFFER 1591 001225* 1774 TAD I (CATADR+177) /GET SECOND ENDANGERED WORD 1592 001226* 3554 DCA I [CATADR+177-200] /MOVE IN FRONT OF BUFFER 1593 001227* 1031 TAD INUNIT /GET INPUT UNIT 1594 001230* 1161 TAD [1^100] /ADD ON READ BITS 1595 001231* 3234 DCA ICFUN2 /STORE IN-LINE 1596 001232* 4574 JMS I [SYSIO] /CALL I/O ROUTINES 1597 001233* 7000 CATADR /CATALOG BUFFER 1598 001234* 0100 ICFUN2, 1^100+.-. /UNIT BITS WILL BE FILLED IN 1599 001235* 0016 DIR+1 /SECOND CATALOG BLOCK 1600 001236* 1373 TAD (CATADR+176-200-1) /RESET THE 1601 001237* 3016 DCA XR1 /BUFFER POINTER 1602 001240* 1416 ICOK, TAD I XR1 /GET A WORD 1603 001241* 7450 SNA /IS IT THE END OF THE CATALOG? 1604 001242* 5600 JMP I GNIFILE /YES, TAKE IMMEDIATE RETURN 1605 001243* 7040 CMA /INVERT THE VALUE FOR HOLE TESTING 1606 001244* 7450 SNA /SKIP IF NOT A HOLE 1607 001245* 5257 JMP ICHOLE /JUMP IF A HOLE 1608 001246* 7040 CMA /INVERT BACK 1609 001247* 3002 DCA FNM1 /USE AS FIRST NAME PAIR 1610 001250* 1416 TAD I XR1 /GET SECOND WORD 1611 001251* 3003 DCA FNM2 /USE AS SECOND NAME PAIR 1612 001252* 1416 TAD I XR1 /GET THIRD WORD 1613 001253* 3004 DCA FNM3 /USE AS THIRD NAME PAIR 1614 001254* 1014 TAD ICBLK /GET INPUT FILE BLOCK 1615 001255* 2200 ISZ GNIFILE /BUMP TO GOOD RETURN 1616 001256* 5600 JMP I GNIFILE /RETURN TO CALLER 1617 / COMES HERE IF A FREE SLOT (HOLE) FOUND IN THE DIRECTORY. 1618 1619 001257* 2016 ICHOLE, ISZ XR1 /BUMP PAST 1620 001260* 2016 ISZ XR1 /REST OF ENTRY 1621 001261* 7200 ICIN, CLA /CLEAN UP 1622 001262* 1014 TAD ICBLK /\ 1623 001263* 1145 TAD [20] / >UPDATE TO NEXT FILE BLOCK 1624 001264* 3014 DCA ICBLK // 1625 001265* 5214 JMP ICLOOP /KEEP GOING 1626 1627 001266* 0000 CRLF, .-. /, ROUTINE 1628 001267* 1372 TAD ("M&37) /GET A 1629 001270* 4560 JMS I [P7CH] /PRINT IT 1630 001271* 1371 TAD ("J&37) /GET A 1631 001272* 4560 JMS I [P7CH] /PRINT IT 1632 001273* 5666 JMP I CRLF /RETURN 1633 1634 001274* 0000 DECPRT, .-. /TWO-DIGIT DECIMAL PRINT ROUTINE 1635 001275* 7450 SNA /ZERO PASSED? 1636 001276* 5325 JMP DECNO /YES 1637 001277* 3044 DCA TEMP /SAVE NON-ZERO VALUE 1638 001300* 3045 DCA TEMP2 /CLEAR QUOTIENT 1639 001301* 1044 DECLUP, TAD TEMP /GET THE VALUE 1640 001302* 1370 TAD (-12) /REMOVE TEN 1641 001303* 7510 SPA /SKIP IF MORE TO DO 1642 001304* 5310 JMP DECOUT /JUMP IF NOT 1643 001305* 3044 DCA TEMP /STORE UPDATED VALUE 1644 001306* 2045 ISZ TEMP2 /BUMP QUOTIENT 1645 001307* 5301 JMP DECLUP /KEEP GOING 1646 1647 001310* 1371 DECOUT, TAD (12) /RESTORE REMAINDER 1648 001311* 3044 DCA TEMP /SAVE FOR NOW 1649 001312* 1045 TAD TEMP2 /GET QUOTIENT 1650 001313* 7450 SNA /SKIP IF SIGNIFICENT 1651 001314* 5317 JMP DEC2 /JUMP IF NOT 1652 001315* 1144 TAD ["0&177] /MAKE IT ASCII 1653 001316* 4560 JMS I [P7CH] /PRINT IT 1654 001317* 1044 DEC2, TAD TEMP /GET LOW-ORDER DIGIT 1655 001320* 1144 TAD ["0&177] /MAKE IT ASCII 1656 001321* 4560 JMS I [P7CH] /PRINT IT 1657 001322* 1162 DECXIT, TAD [" &177] /GET A 1658 001323* 4560 JMS I [P7CH] /PRINT IT 1659 001324* 5674 JMP I DECPRT /RETURN 1660 1661 001325* 4442 DECNO, JMS I PSCRIBE/[SCRIBE]/GIVE THEM 1662 001326* 1365 NONMSG /THE NO MESSAGE 1663 001327* 5322 JMP DECXIT /FINISH IT THERE 1664 001330* 0000 FCPRT, .-. /FILE COUNT PRINT ROUTINE 1665 001331* 1023 TAD FCNT /GET FILE COUNT 1666 001332* 4543 JMS I [PRMVAL] /PRINT OUT THE COUNT 1667 001333* 2226 FILMSG /AND THE FILE(S) MESSAGE 1668 001334* 1162 TAD [" &177] /GET A 1669 001335* 4560 JMS I [P7CH] /PRINT IT 1670 001336* 5730 JMP I FCPRT /RETURN 1671 1672 001337* 0000 GETHALF,.-. /GET A HALF-WORD ROUTINE 1673 001340* 1026 TAD GTINDX /GET HALF-WORD INDEX 1674 001341* 7110 CLL RAR /SHIFT WHICH HALF BIT INTO LINK 1675 001342* 1025 TAD GTBASE /ADD BASE TO INDEX/2 1676 001343* 3044 DCA TEMP /SAVE POINTER 1677 001344* 1444 TAD I TEMP /GET BOTH HALVES 1678 001345* 7430 SZL /SKIP IF EVEN HALF WANTED 1679 001346* 5352 JMP .+4 /ELSE LEAVE IT ALONE 1680 001347* 7012 RTR;RTR;RTR /GET EVEN HALF 001350* 7012 001351* 7012 1681 001352* 0153 AND [77] /JUST SIX BITS 1682 001353* 5737 JMP I GETHALF /RETURN 1683 1684 001354* 0000 ICLODE, .-. /LOAD INPUT CATALOG ROUTINE 1685 001355* 1031 TAD INUNIT /GET INPUT UNIT 1686 001356* 1142 TAD [2^100] /ADD ON READ BITS 1687 001357* 3362 DCA ICFUN /STORE IN-LINE 1688 001360* 4574 JMS I [SYSIO] /CALL I/O ROUTINES 1689 001361* 7000 CATADR /CATALOG BUFFER 1690 001362* 0200 ICFUN, 2^100+.-. /UNIT BITS WILL BE FILLED IN 1691 001363* 0015 DIR /CATALOG BLOCK 1692 001364* 5754 JMP I ICLODE /RETURN 1693 1694 001365* 3616 NONMSG, TEXT "^NO" 001366* 1700 1695 1696 001370* 7766 PAGE 001371* 0012 001372* 0015 001373* 6775 001374* 7177 001375* 7176 001376* 0603 001377* 7377 1697 001400* 0000 GOCHOLE,.-. /GET OUTPUT CATALOG SLOT (HOLE) ROUTINE 1698 001401* 1037 TAD OCSW /DO WE HAVE AN OUTPUT CATALOG? 1699 001402* 7640 SZA CLA /SKIP IF NOT 1700 001403* 5215 JMP OCIN /JUMP IF SO 1701 001404* 1040 TAD OTUNIT /GET OUTPUT UNIT 1702 001405* 1142 TAD [2^100] /ADD ON READ BITS 1703 001406* 3211 DCA OCFUN /STORE IN-LINE 1704 001407* 4574 JMS I [SYSIO] /CALL I/O ROUTINES 1705 001410* 2400 OCBUFFER /OUTPUT CATALOG BUFFER 1706 001411* 0200 OCFUN, 2^100+.-. /UNIT BITS WILL BE FILLED IN 1707 001412* 0015 DIR /CATALOG BLOCK 1708 001413* 7350 NL3777 /INDICATE THAT CATALOG 1709 001414* 3037 DCA OCSW /HAS BEEN READ IN 1710 001415* 1141 OCIN, TAD [OCBUFFER-1] /SETUP THE 1711 001416* 3012 DCA XR2 /SEARCH POINTER 1712 001417* 1540 TAD I [OCBUFFER+377] /GET FIRST BLOCK OF CATALOG 1713 001420* 3015 DCA OCBLK /SET IT UP 1714 001421* 1412 OCSRCH, TAD I XR2 /GET FIRST NAME PAIR 1715 001422* 7450 SNA /END OF CATALOG? 1716 001423* 5253 JMP OCEND /YES 1717 001424* 7041 CIA /NO, INVERT FOR TESTING 1718 001425* 1002 TAD FNM1 /COMPARE TO FIRST FILE NAME PAIR 1719 001426* 7640 SZA CLA /SKIP IF IT MATCHES 1720 001427* 5245 JMP NOMAT1 /JUMP IF NOT 1721 001430* 1412 TAD I XR2 /GET SECOND NAME PAIR 1722 001431* 7041 CIA /INVERT FOR TESTING 1723 001432* 1003 TAD FNM2 /COMPARE TO SECOND FILE NAME PAIR 1724 001433* 7640 SZA CLA /SKIP IF IT MATCHES 1725 001434* 5246 JMP NOMAT2 /JUMP IF NOT 1726 001435* 1412 TAD I XR2 /GET THIRD NAME PAIR 1727 001436* 7041 CIA /INVERT FOR TESTING 1728 001437* 1004 TAD FNM3 /COMPARE TO THIRD FILE NAME PAIR 1729 001440* 7640 SZA CLA /SKIP IF IT MATCHES 1730 001441* 5247 JMP NOMAT3 /JUMP IF NOT 1731 001442* 1015 TAD OCBLK /GET FILE BLOCK 1732 001443* 2200 ISZ GOCHOLE /BUMP TO GOOD RETURN 1733 001444* 5600 JMP I GOCHOLE /RETURN TO CALLER 1734 1735 001445* 2012 NOMAT1, ISZ XR2 /BUMP PAST TWO PAIRS 1736 001446* 2012 NOMAT2, ISZ XR2 /BUMP PAST ONE PAIR 1737 001447* 1015 NOMAT3, TAD OCBLK /GET OUTPUT FILE BLOCK 1738 001450* 1145 TAD [20] /UPDATE TO NEXT FILE 1739 001451* 3015 DCA OCBLK /STORE BACK 1740 001452* 5221 JMP OCSRCH /GO TRY AGAIN 1741 001453* 1141 OCEND, TAD [OCBUFFER-1] /SETUP THE 1742 001454* 3012 DCA XR2 /SEARCH POINTER 1743 001455* 1012 OCNXTSL,TAD XR2 /GET THE CURRENT POINTER 1744 001456* 1777 TAD I (OCBUFFER+375) /COMPARE TO LIMIT 1745 001457* 1137 TAD [CATADR-OCBUFFER+1] /ADJUST FOR OUR BUFFER AND AUTO-INDEX 1746 001460* 7700 SMA CLA /SKIP IF STILL SOME ROOM 1747 001461* 5600 JMP I GOCHOLE /TAKE IMMEDIATE RETURN IF NONE 1748 001462* 1412 TAD I XR2 /GET FIRST NAME PAIR 1749 001463* 7450 SNA /END OF CATALOG? 1750 001464* 5273 JMP OCSLOT /YES, USE IT AS A SLOT 1751 001465* 7040 CMA /INVERT IT 1752 001466* 7650 SNA CLA /SKIP IF NOT A HOLE 1753 001467* 5273 JMP OCSLOT /USE HOLE AS A SLOT 1754 001470* 2012 ISZ XR2 /BUMP TO 1755 001471* 2012 ISZ XR2 /NEXT ENTRY 1756 001472* 5255 JMP OCNXTSLOT /KEEP LOOKING 1757 1758 001473* 1012 OCSLOT, TAD XR2 /GET SEARCH POINTER 1759 001474* 3045 DCA TEMP2 /STASH IT 1760 001475* 1002 TAD FNM1 /GET FIRST FILE NAME PAIR 1761 001476* 3445 DCA I TEMP2 /STASH IN CATALOG 1762 001477* 1003 TAD FNM2 /GET SECOND FILE NAME PAIR 1763 001500* 3412 DCA I XR2 /STASH IN CATALOG 1764 001501* 1004 TAD FNM3 /GET THIRD FILE NAME PAIR 1765 001502* 3412 DCA I XR2 /STASH IN CATALOG 1766 001503* 2037 ISZ OCSW /INDICATE WE WROTE ON THE CATALOG 1767 001504* 5215 JMP OCIN /CONTINUE THERE 1768 / OUTPUT CATALOG CLOSE ROUTINE. 1769 1770 001505* 0000 OCLOSE, .-. /OUTPUT CATALOG CLOSE 1771 001506* 4776 JMS I (OCFIX) /REMOVE EXTRANEOUS ENDING HOLES 1772 001507* 1037 TAD OCSW /GET OUTPUT CATALOG SWITCH 1773 001510* 7700 SMA CLA /SKIP IF WE WROTE SOMETHING 1774 001511* 5705 JMP I OCLOSE /RETURN IF NOT 1775 001512* 1040 TAD OTUNIT /GET OUTPUT UNIT 1776 001513* 1136 TAD [2^100+WRITE] /NOW HAVE WRITE FUNCTION 1777 001514* 3317 DCA OCFUN2 /STORE IN-LINE 1778 001515* 4574 OCWRITE,JMS I [SYSIO] /CALL I/O ROUTINES 1779 001516* 2400 OCBUFPT,OCBUFFER /OUTPUT CATALOG BUFFER 1780 001517* 4200 OCFUN2, 2^100+WRITE+.-. /UNIT BITS WILL BE FILLED IN 1781 001520* 0015 DIR /CATALOG BLOCK 1782 001521* 1054 TAD VERSW /ARE WE VERIFYING? 1783 001522* 7700 SMA CLA /SKIP IF SO 1784 001523* 5705 JMP I OCLOSE /RETURN IF NOT 1785 001524* 1040 TAD OTUNIT /GET OUTPUT UNIT 1786 001525* 1142 TAD [2^100] /FORM READ FUNCTION 1787 001526* 3331 DCA OCFUN3 /STORE IN-LINE 1788 001527* 4574 JMS I [SYSIO] /CALL I/O ROUTINES 1789 001530* 4200 OCVBFPT,OCVBUFFER /OUTPUT CATALOG VERIFY BUFFER 1790 001531* 0200 OCFUN3, 2^100+.-. /UNIT BITS WILL BE FILLED IN 1791 001532* 0015 DIR /CATALOG BLOCK 1792 001533* 1316 TAD OCBUFPTR/(OCBUFFER) /SETUP THE 1793 001534* 3020 DCA BUFPTR /BUFFER POINTER 1794 001535* 1330 TAD OCVBFPTR/(OCVBUFFER) /SETUP THE 1795 001536* 3053 DCA VERPTR /VERIFY POINTER 1796 001537* 1066 TAD L7400/[-2^200] /SETUP THE 1797 001540* 3044 DCA TEMP /VERIFY COUNT 1798 001541* 1420 VCLOOP, TAD I BUFPTR /GET A WORD 1799 001542* 7041 CIA /INVERT IT 1800 001543* 1453 TAD I VERPTR /COMPARE TO VERIFY WORD 1801 001544* 7640 SZA CLA /SKIP IF OK 1802 001545* 5353 JMP VCBAD /JUMP IF NOT 1803 001546* 2020 ISZ BUFPTR /BUMP TO NEXT 1804 001547* 2053 ISZ VERPTR /BUMP TO NEXT 1805 001550* 2044 ISZ TEMP /TESTED ALL YET? 1806 001551* 5341 JMP VCLOOP /NO, KEEP GOING 1807 001552* 5705 JMP I OCLOSE /RETURN 1808 1809 / COMES HERE ON OUTPUT CATALOG VERIFY ERROR. 1810 1811 001553* 4361 VCBAD, JMS ASKRETRY /ASK FOR A RETRY 1812 001554* 2337 VCBDMSG /WITH THIS MESSAGE 1813 001555* 5315 JMP OCWRITE /YES, TRY AGAIN 1814 001556* 4442 JMS I PSCRIBE/[SCRIBE] /TELL THEM 1815 001557* 2263 OCBDMSG /CATALOG IS CORRUPTED 1816 001560* 5705 JMP I OCLOSE /RETURN 1817 001561* 0000 ASKRETR,.-. /ASK FOR RETRY ROUTINE 1818 001562* 1761 TAD I ASKRETRY /GET PASSED MESSAGE ARGUMENT 1819 001563* 3366 DCA ASKRARG /STORE IN-LINE 1820 001564* 2361 ISZ ASKRETRY /BUMP PAST ARGUMENT 1821 001565* 4442 JMS I PSCRIBE/[SCRIBE]/PRINT THE 1822 001566* 0000 ASKRARG,.-. /PASSED MESSAGE 1823 001567* 4442 JMS I PSCRIBE/[SCRIBE]/ASK FOR 1824 001570* 2312 RTRYMSG /A RETRY 1825 001571* 4573 JMS I [YESORNO] /GET REPLY 1826 001572* 7410 SKP /YES, DON'T 1827 001573* 2361 ISZ ASKRETRY /BUMP RETURN ADDRESS 1828 001574* 4577 JMS I [CRLF] /DO A , 1829 001575* 5761 JMP I ASKRETRY /RETURN EITHER WAY 1830 1831 001576* 1600 PAGE 001577* 2775 1832 001600* 0000 OCFIX, .-. /OUTPUT CATALOG FIXUP ROUTINE 1833 001601* 1141 OCFLP1, TAD [OCBUFFER-1] /SETUP THE 1834 001602* 3012 DCA XR2 /SEARCH POINTER 1835 001603* 1412 OCFLP2, TAD I XR2 /GET A NAME PAIR 1836 001604* 7450 SNA /END OF CATALOG? 1837 001605* 5600 JMP I OCFIX /YES, RETURN 1838 001606* 7040 OCFLP3, CMA /INVERT FOR TESTING 1839 001607* 7640 SZA CLA /SKIP IF THIS IS A HOLE 1840 001610* 5223 JMP OCFNEXT /JUMP IF NOT 1841 001611* 1012 TAD XR2 /GET THE SEARCH POINTER 1842 001612* 3045 DCA TEMP2 /SAVE IT 1843 001613* 2012 ISZ XR2 /BUMP TO 1844 001614* 2012 ISZ XR2 /NEXT ENTRY 1845 001615* 1412 TAD I XR2 /GET FIRST PAIR OF NEXT ENTRY 1846 001616* 7440 SZA /SKIP IF THIS IS END OF CATALOG 1847 001617* 5206 JMP OCFLP3 /JUMP IF NOT 1848 001620* 3445 DCA I TEMP2 /MAKE OUR ENTRY THE END OF CATALOG 1849 001621* 2037 ISZ OCSW /INDICATE WE WROTE ON THE CATALOG 1850 001622* 5201 JMP OCFLP1 /GO DO IT AGAIN 1851 1852 001623* 2012 OCFNEXT,ISZ XR2 /BUMP TO 1853 001624* 2012 ISZ XR2 /NEXT ENTRY 1854 001625* 5203 JMP OCFLP2 /KEEP GOING 1855 1856 001626* 0000 YESORNO,.-. /YES OR NO ROUTINE 1857 001627* 4564 YNAGN, JMS I [INPUT] /GET A CHARACTER 1858 001630* 0135 AND [137] /MAKE IT CASE-LESS 1859 001631* 1377 TAD (-"Y!200) /IS IT "Y"? 1860 001632* 7450 SNA /SKIP IF NOT 1861 001633* 5242 JMP ISYES /JUMP IF IT MATCHES 1862 001634* 1376 TAD (-"N+"Y) /IS IT "N"? 1863 001635* 7650 SNA CLA /SKIP IF NOT 1864 001636* 5245 JMP ISNO /JUMP IF IT MATCHES 1865 001637* 1005 TAD L7/["G&37] /GET A 1866 001640* 4560 JMS I [P7CH] /RING IT 1867 001641* 5227 JMP YNAGN /TRY AGAIN 1868 1869 001642* 4442 ISYES, JMS I PSCRIBE/[SCRIBE]/TELL THEM 1870 001643* 2374 YESMSG /YES 1871 001644* 5626 JMP I YESORNO /TAKE FIRST RETURN 1872 1873 001645* 4442 ISNO, JMS I PSCRIBE/[SCRIBE]/TELL THEM 1874 001646* 1764 NOMSG /NO 1875 001647* 2226 ISZ YESORNO /BUMP RETURN ADDRESS 1876 001650* 5626 JMP I YESORNO /TAKE SKIP RETURN 1877 1878 001651* 0000 INPUT, .-. /INPUT ROUTINE 1879 001652* 4576 JMS I [CHKUP] /TRY TO GET A CHARACTER 1880 001653* 1030 TAD INCHAR /GET THE CHARACTER 1881 001654* 7450 SNA /SKIP IF ANYTHING CAME IN 1882 001655* 5252 JMP .-3 /WAIT FOR SOMETHING 1883 001656* 5651 JMP I INPUT /RETURN WITH IT 1884 / MESSAGE PRINTING ROUTINE. 1885 1886 001657* 0000 SCRIBE, .-. /MESSAGE PRINT ROUTINE 1887 001660* 7200 CLA /JUST IN CASE 1888 001661* 1657 TAD I SCRIBE /GET MESSAGE POINTER 1889 001662* 3333 DCA SCRPTR /STASH IT 1890 001663* 2257 ISZ SCRIBE /BUMP PAST ARGUMENT 1891 001664* 1375 TAD (140) /INITIALIZE TO LOWER-CASE 1892 001665* 3331 CASZP1, DCA SCRCASE /**** /U **** CLA!400 1893 001666* 1733 SCRLUP, TAD I SCRPTR /GET LEFT HALF-WORD 1894 001667* 7012 RTR;RTR;RTR /MOVE OVER 001670* 7012 001671* 7012 1895 001672* 4277 JMS SCRPRNT /PRINT IT 1896 001673* 1733 TAD I SCRPTR /GET RIGHT HALF-WORD 1897 001674* 4277 JMS SCRPRNT /PRINT IT 1898 001675* 2333 ISZ SCRPTR /BUMP TO NEXT PAIR 1899 001676* 5266 JMP SCRLUP /KEEP GOING 1900 1901 001677* 0000 SCRPRNT,.-. /CHARACTER PRINT ROUTINE 1902 001700* 0153 AND [77] /JUST SIX-BIT 1903 001701* 7450 SNA /END OF MESSAGE? 1904 001702* 5657 JMP I SCRIBE /YES, RETURN TO ORIGINAL CALLER 1905 001703* 3332 DCA SCRCHAR /NO, SAVE FOR NOW 1906 001704* 1332 TAD SCRCHAR /GET IT BACK 1907 001705* 1374 TAD (-"%!200) /IS IT "%"? 1908 001706* 7450 SNA /SKIP IF NOT 1909 001707* 5322 JMP SCRCRLF /JUMP IF IT MATCHES 1910 001710* 1005 TAD L7/[-"^+100+"%] /IS IT "^" 1911 001711* 7650 SNA CLA /SKIP IF NOT 1912 001712* 5324 JMP SCRFLIP /JUMP IF IT MATCHES 1913 001713* 1332 TAD SCRCHAR /GET THE CHARACTER 1914 001714* 0162 AND [40] /DOES CASE MATTER? 1915 001715* 7650 SNA CLA /SKIP IF NOT 1916 001716* 1331 TAD SCRCASE /ELSE GET PREVAILING CASE 1917 001717* 1332 TAD SCRCHAR /GET THE CHARACTER 1918 001720* 4560 JMS I [P7CH] /PRINT THE CHARACTER 1919 001721* 5677 JMP I SCRPRNT /RETURN 1920 1921 001722* 4577 SCRCRLF,JMS I [CRLF] /DO A , 1922 001723* 5677 JMP I SCRPRNT /RETURN 1923 1924 001724* 1331 SCRFLIP,TAD SCRCASE /GET CURRENT CASE 1925 001725* 7041 CIA /INVERT IT 1926 001726* 1373 TAD (140+100) /ADD SUM OF POSSIBLE VALUES 1927 001727* 3331 CASZP2, DCA SCRCASE /**** /U **** CLA!400 1928 001730* 5677 JMP I SCRPRNT /RETURN 1929 1930 001731* 0100 SCRCASE,100 /ALPHABETIC CASE 1931 001732* 0000 SCRCHAR,.-. /LATEST OUTPUT CHARACTER 1932 001733* 0000 SCRPTR, .-. /MESSAGE POINTER 1933 001734* 0000 DONECHK,.-. /CHECK FOR DONE ROUTINE 1934 001735* 7410 DONEZAP,SKP /**** /S OR TERMINATOR **** 0000 1935 001736* 5461 JMP I L7600A/[SBOOT] /GOODBYE! 1936 001737* 5734 JMP I DONECHK /RETURN 1937 1938 / OUTPUT ROUTINE. 1939 1940 001740* 0000 P7CH, .-. /SEVEN BIT OUTPUT ROUTINE 1941 001741* 3017 DCA P7TEMP /SAVE PASSED VALUE 1942 001742* 4576 P7AGN, JMS I [CHKUP] /CHECK FOR <^C>, ETC. 1943 001743* 1017 TAD P7TEMP /GET THE CHARACTER 1944 001744* 4055 JMS P7OUT /TRY TO OUTPUT IT 1945 001745* 5342 JMP P7AGN /TRY INPUT WHILE WAITING 1946 001746* 4576 JMS I [CHKUP] /CHECK FOR <^C>, ETC. 1947 001747* 5740 JMP I P7CH /RETURN 1948 1949 001750* 0000 RUSURE, .-. /ARE YOU SURE ROUTINE 1950 001751* 7410 YZAP, SKP /**** /Y **** 0000 1951 001752* 5750 JMP I RUSURE /RETURN IF /Y 1952 001753* 4442 JMS I PSCRIBE/[SCRIBE]/ASK THEM 1953 001754* 2323 RUSMSG /IF THEY ARE SURE 1954 001755* 4573 JMS I [YESORNO] /GET RESPONSE 1955 001756* 7410 SKP /YES, DON'T 1956 001757* 2350 ISZ RUSURE /BUMP RETURN 1957 001760* 4577 JMS I [CRLF] /DO A , 1958 001761* 5750 JMP I RUSURE /RETURN EITHER WAY 1959 1960 001762* 4074 BBRKMSG,TEXT " <^" 001763* 3600 1961 001764* 3616 NOMSG, TEXT "^N^O!" 001765* 3617 001766* 4100 1962 001767* 7740 QUBLMSG,TEXT "? ^" 001770* 3600 1963 1964 001773* 0240 PAGE 001774* 7733 001775* 0140 001776* 0013 001777* 7647 1965 / STRING MATCHING ROUTINE. 1966 1967 / TAKES SKIP RETURN IF FNAME MATCHES SEARCH STRING, ELSE TAKES IMMEDIATE RETURN. 1968 1969 002000* 0000 FILTER, .-. /NAME MATCHING ROUTINE 1970 002001* 1066 TAD L7400/[STACK] /SETUP THE 1971 002002* 3372 DCA STKPTR /STACK POINTER 1972 002003* 3366 DCA FINDEX /CLEAR NAME INDEX 1973 002004* 3371 DCA SINDEX /CLEAR SEARCH STRING INDEX 1974 002005* 4210 JMS SEARCH /SEARCH THE STRING FOR A MATCH 1975 002006* 2200 ISZ FILTER /BUMP TO MATCHING RETURN 1976 002007* 5600 JMP I FILTER /RETURN EITHER WAY 1977 1978 002010* 0000 SEARCH, .-. /SEARCH STRING ROUTINE 1979 002011* 1134 SRCHNXT,TAD [STRBUFFER] /POINT TO 1980 002012* 3025 DCA GTBASE /SEARCH STRING 1981 002013* 1371 TAD SINDEX /GET LATEST SEARCH STRING INDEX 1982 002014* 3026 DCA GTINDX /SET IT UP 1983 002015* 4547 JMS I [GETHALF] /GET A SEARCH STRING CHARACTER 1984 002016* 7440 SZA /SKIP IF 1985 002017* 1377 TAD (-".!200) /ELSE TEST IF EXTENSION DELIMITER 1986 002020* 7450 SNA /SKIP IF NEITHER 1987 002021* 5246 JMP CHKNAME /JUMP IF EITHER 1988 002022* 1146 TAD [-"?+".] /COMPARE TO "?" 1989 002023* 7450 SNA /SKIP IF OTHER 1990 002024* 5254 JMP QMATCH /JUMP IF IT MATCHES 1991 002025* 1376 TAD (-"*+"?) /COMPARE TO "*" 1992 002026* 7450 SNA /SKIP IF OTHER 1993 002027* 5261 JMP DOSTAR /JUMP IF IT MATCHES 1994 002030* 1375 TAD ("*&77) /GET RESTORING VALUE 1995 002031* 3370 DCA SCHAR /SAVE FOR NOW 1996 1997 / CHECK IF CURRENTLY AT END OF NAME STRING. IF THERE ARE NO MORE NAME CHARACTERS 1998 / TO MATCH THIS LATEST SEARCH STRING CHARACTER, THEN A MATCH IS IMPOSSIBLE. 1999 2000 002032* 1366 TAD FINDEX /GET CURRENT NAME INDEX 2001 002033* 1152 TAD [-FNMLEN] /COMPARE TO UPPER LIMIT 2002 002034* 7700 SMA CLA /SKIP IF LESS 2003 002035* 5311 JMP NOMATCH /JUMP IF TOO FAR 2004 002036* 4313 JMS GETNMCH /GET LATEST FILE NAME CHARACTER 2005 002037* 7041 CIA /INVERT FOR TESTING 2006 002040* 1370 TAD SCHAR /COMPARE TO SEARCH STRING CHARACTER 2007 002041* 7640 SZA CLA /SKIP IF IT MATCHES 2008 002042* 5311 JMP NOMATCH /JUMP IF IT DIDN'T 2009 002043* 2366 ISZ FINDEX /BUMP TO NEXT NAME CHARACTER 2010 002044* 2371 MATQENT,ISZ SINDEX /BUMP TO NEXT SEARCH STRING CHARACTER 2011 002045* 5211 JMP SRCHNXT /KEEP GOING 2012 / COMES HERE IF AT END OF SEARCH STRING. THERE MUST NOT BE ANY FILE NAME 2013 / CHARACTERS LEFT (UNLESS THERE WAS NO STRING AT ALL!). 2014 2015 002046* 1371 CHKNAME,TAD SINDEX /GET SEARCH STRING INDEX 2016 002047* 7640 SZA CLA /SKIP IF NO SEARCH STRING 2017 002050* 4313 JMS GETNMCH /ELSE GET LATEST FILE NAME CHARACTER 2018 002051* 7650 SNA CLA /SKIP IF STILL MORE NAME CHARACTERS 2019 002052* 5610 JMP I SEARCH /RETURN IF AT FILE NAME END 2020 2021 / SINCE THERE ARE MORE CHARACTERS IN THE FILE NAME, IT DIDN'T MATCH. 2022 2023 002053* 5311 JMP NOMATCH /CONTINUE THERE 2024 2025 / COMES HERE IF LATEST SEARCH STRING CHARACTER IS "?"; THE CHARACTER 2026 / AUTOMATICALLY MATCHES. HOWEVER, SINCE WE ALLOW EXTRA "?" CHARACTERS ON THE 2027 / RIGHT, WE MUST NOT ADVANCE THE SEARCH PAST ACTUAL CHARACTERS IN THE FILE 2028 / NAME STRING. 2029 2030 002054* 1366 QMATCH, TAD FINDEX /GET CURRENT INDEX 2031 002055* 1152 TAD [-FNMLEN] /COMPARE TO UPPER LIMIT 2032 002056* 7710 SPA CLA /SKIP IF TOO FAR 2033 002057* 2366 ISZ FINDEX /BUMP PAST THIS NOW MATCHED CHARACTER 2034 002060* 5244 JMP MATQENTRY /CONTINUE THERE 2035 / COMES HERE IF LATEST SEARCH STRING CHARACTER IS "*". AN INDEFINITE NUMBER 2036 / OF CHARACTERS (INCLUDING ZERO) MATCHES THIS POSITION. WE ASSUME A NULL LENGTH 2037 / AT FIRST. SHOULD THIS FAIL TO MATCH, WE BUMP PAST A SINGLE CHARACTER AT 2038 / A TIME UNTIL A MATCH OCCURS. SHOULD THE FILE NAME STRING RUN OUT OF CHARACTERS 2039 / BEFORE THE REST OF THE SEARCH STRING IS SATISFIED, THE FILE NAME DOESN'T 2040 / MATCH. IF FURTHER (POSSIBLY RECURSIVE) CHARACTER MATCHES OCCUR TO THE END 2041 / OF THE SEARCH STRING, THE FILE NAME MATCHES. 2042 2043 002061* 2371 DOSTAR, ISZ SINDEX /BUMP PAST "*" 2044 002062* 1371 STARAGN,TAD SINDEX /GET SEARCH STRING INDEX 2045 002063* 4322 PUSH /SAVE ON STACK 2046 002064* 1366 TAD FINDEX /GET FILE NAME INDEX 2047 002065* 4322 PUSH /SAVE ON STACK 2048 002066* 1210 TAD SEARCH /GET CALLING ADDRESS 2049 002067* 4322 PUSH /SAVE ON STACK 2050 002070* 4210 JMS SEARCH /TRY TO MATCH THE REST OF THE NAME STRING 2051 002071* 7240 NL7777 /DID MATCH, SET OR 2052 002072* 3367 DCA MATSW /CLEAR MATCH FLAG 2053 002073* 4326 POP /GET OUR CALLER 2054 002074* 3210 DCA SEARCH /RESTORE IT 2055 002075* 4326 POP /GET FORMER NAME INDEX 2056 002076* 3366 DCA FINDEX /RESTORE IT 2057 002077* 4326 POP /GET FORMER STRING INDEX 2058 002100* 3371 DCA SINDEX /RESTORE IT 2059 002101* 2367 ISZ MATSW /DID WE MATCH? 2060 002102* 7410 SKP /SKIP IF NOT 2061 002103* 5610 JMP I SEARCH /RETURN IF SO 2062 002104* 2366 ISZ FINDEX /BUMP TO NEXT CHARACTER 2063 002105* 1366 TAD FINDEX /GET NEW INDEX VALUE 2064 002106* 1152 TAD [-FNMLEN] /COMPARE TO UPPER LIMIT 2065 002107* 7750 SPA SNA CLA /SKIP IF TOO FAR 2066 002110* 5262 JMP STARAGN /TRY TO MATCH IT AGAIN 2067 002111* 2210 NOMATCH,ISZ SEARCH /BUMP TO BAD RETURN 2068 002112* 5610 JMP I SEARCH /TAKE FAILURE RETURN TO CURRENT CALLER 2069 2070 002113* 0000 GETNMCH,.-. /GET LATEST FILE NAME CHARACTER 2071 002114* 1150 TAD [FNM1] /POINT TO 2072 002115* 3025 DCA GTBASE /FILE NAME 2073 002116* 1366 TAD FINDEX /GET CURRENT NAME INDEX 2074 002117* 3026 DCA GTINDX /SET IT UP 2075 002120* 4547 JMS I [GETHALF] /GET LATEST NAME CHARACTER 2076 002121* 5713 JMP I GETNMCH /RETURN 2077 2078 002122* 0000 PUSHA, .-. /STACK PUSH ROUTINE 2079 002123* 3772 DCA I STKPTR /STORE ON STACK 2080 002124* 2372 ISZ STKPTR /BUMP FOR NEXT TIME 2081 002125* 5722 JMP I PUSHA /RETURN 2082 2083 002126* 0000 POPA, .-. /STACK POP ROUTINE 2084 002127* 7240 NL7777 /\ 2085 002130* 1372 TAD STKPTR / >BACKUP THE STACK POINTER 2086 002131* 3372 DCA STKPTR // 2087 002132* 1772 TAD I STKPTR /GET THE VALUE OFF THE STACK 2088 002133* 5726 JMP I POPA /RETURN 2089 002134* 0000 PRMVAL, .-. /PRINT MESSAGE AND VALUE ROUTINE 2090 002135* 3326 DCA POPA /SAVE PASSED VALUE 2091 002136* 1326 TAD POPA /GET IT BACK 2092 002137* 4774 JMS I (DECPRT) /PRINT IT 2093 002140* 1734 TAD I PRMVAL /GET PASSED MESSAGE ARGUMENT 2094 002141* 3344 DCA PRMVARGUMENT /STORE IN-LINE 2095 002142* 2334 ISZ PRMVAL /BUMP PAST ARGUMENT 2096 002143* 4442 JMS I PSCRIBE/[SCRIBE]/CALL MESSAGE PRINT ROUTINE 2097 002144* 0000 PRMVARG,.-. /WILL BE PASSED MESSAGE ADDRESS 2098 002145* 7240 NL7777 /-1 2099 002146* 1326 TAD POPA /COMPARE TO PASSED VALUE 2100 002147* 7650 SNA CLA /SKIP IF OTHER THAN ONE 2101 002150* 5734 JMP I PRMVAL /RETURN IF ONLY ONE 2102 002151* 4442 JMS I PSCRIBE/[SCRIBE]/GIVE THEM 2103 002152* 2336 SMSG /AN "S" 2104 002153* 5734 JMP I PRMVAL /RETURN 2105 2106 002154* 0000 UNITPRT,.-. /UNIT PRINT ROUTINE 2107 002155* 3326 DCA POPA /SAVE PASSED UNIT VALUE 2108 002156* 4442 JMS I PSCRIBE/[SCRIBE]/GIVE THEM THE 2109 002157* 0767 SYSMSG /"SYS" MESSAGE 2110 002160* 1326 TAD POPA /GET THE UNIT 2111 002161* 1144 TAD ["0&177] /MAKE IT ASCII 2112 002162* 4560 JMS I [P7CH] /PRINT IT 2113 002163* 1373 TAD (":&177) /GET A ":" 2114 002164* 4560 JMS I [P7CH] /PRINT IT 2115 002165* 5754 JMP I UNITPRT /RETURN 2116 2117 002166* 0000 FINDEX, .-. /FILE NAME INDEX 2118 002167* 0000 MATSW, .-. /LATEST TERM MATCHED SWITCH 2119 002170* 0000 SCHAR, .-. /LATEST SEARCH STRING CHARACTER FOR EXACT MATCH 2120 002171* 0000 SINDEX, .-. /SEARCH STRING INDEX 2121 002172* 0000 STKPTR, .-. /STACK POINTER 2122 2123 / NEW INSTRUCTION DEFINITIONS. 2124 2125 POP= JMS POPA /POP VALUE FROM STACK 2126 PUSH= JMS PUSHA /PUSH VALUE ONTO STACK 2127 2128 002173* 0072 PAGE 002174* 1274 002175* 0052 002176* 0025 002177* 7722 2129 / TEXT MESSAGES. 2130 2131 002200* 0123 ASMSG, TEXT "ASCI>" 002201* 0311 002202* 7600 2132 /BBRKMS,TEXT " <^" 2133 002203* 0216 BNMSG, TEXT "BNRY>" 002204* 2231 002205* 7600 2134 002206* 4545 CATFLMS,TEXT "%%^C^ATALOG ^F^ULL!%^" 002207* 3603 002210* 3601 002211* 2401 002212* 1417 002213* 0740 002214* 3606 002215* 3625 002216* 1414 002217* 4145 002220* 3600 2135 002221* 3603 COPYMSG,TEXT "^C^OPIED%" 002222* 3617 002223* 2011 002224* 0504 002225* 4500 2136 002226* 3606 FILMSG, TEXT "^F^ILE^" 002227* 3611 002230* 1405 002231* 3600 2137 002232* 3606 FLCPMSG,TEXT "^F^ILES ^C^OPIED:%%" 002233* 3611 002234* 1405 002235* 2340 002236* 3603 002237* 3617 002240* 2011 002241* 0504 002242* 7245 002243* 4500 2138 002244* 3606 FLKLMSG,TEXT "^F^ILES ^K^ILLED:%%" 002245* 3611 002246* 1405 002247* 2340 002250* 3613 002251* 3611 002252* 1414 002253* 0504 002254* 7245 002255* 4500 2139 002256* 3613 KILLMSG,TEXT "^K^ILLED%" 002257* 3611 002260* 1414 002261* 0504 002262* 4500 2140 /NOMSG, TEXT "^N^O!" 2141 /NONMSG,TEXT "^NO" 2142 002263* 4536 OCBDMSG,TEXT "%^C^ATALOG ^C^ORRUPTED!%^" 002264* 0336 002265* 0124 002266* 0114 002267* 1707 002270* 4036 002271* 0336 002272* 1722 002273* 2225 002274* 2024 002275* 0504 002276* 4145 002277* 3600 2143 002300* 3640 OKMSG, TEXT "^ [OK]^" 002301* 3317 002302* 1335 002303* 3600 2144 002304* 4075 PTRMSG, TEXT " => ^" 002305* 7640 002306* 3600 2145 /QUBLMS,TEXT "? ^" 2146 002307* 2516 QUMSG, TEXT "UNKN>" 002310* 1316 002311* 7600 2147 002312* 4536 RTRYMSG,TEXT "%^R^ETRY (^Y/N)? " 002313* 2236 002314* 0524 002315* 2231 002316* 4050 002317* 3631 002320* 5716 002321* 5177 002322* 4000 2148 002323* 4536 RUSMSG, TEXT "%^A^RE ^Y^OU ^S^URE? " 002324* 0136 002325* 2205 002326* 4036 002327* 3136 002330* 1725 002331* 4036 002332* 2336 002333* 2522 002334* 0577 002335* 4000 2149 002336* 2300 SMSG, TEXT "S" 2150 /SYSMSG,TEXT "^SYS^" 2151 002337* 4536 VCBDMSG,TEXT "%^C^ATALOG ^V^ERIFY ^E^RROR!%" 002340* 0336 002341* 0124 002342* 0114 002343* 1707 002344* 4036 002345* 2636 002346* 0522 002347* 1106 002350* 3140 002351* 3605 002352* 3622 002353* 2217 002354* 2241 002355* 4500 2152 002356* 4545 VFBDMSG,TEXT "%%^F^ILE ^V^ERIFY ^E^RROR!%" 002357* 3606 002360* 3611 002361* 1405 002362* 4036 002363* 2636 002364* 0522 002365* 1106 002366* 3140 002367* 3605 002370* 3622 002371* 2217 002372* 2241 002373* 4500 2153 002374* 3631 YESMSG, TEXT "^Y^ES!^" 002375* 3605 002376* 2341 002377* 3600 2154 2155 PAGE /END OF CODE THAT DOESN'T SWAP 2156 2157 NOPUNCH /FOOL THE ASSEMBLER 2158 2159 002400* 0000 OCBUFFE,ZBLOCK 2^200 /OUTPUT CATALOG BUFFER HERE 002401* 0000 002402* 0000 002403* 0000 002404* 0000 002405* 0000 002406* 0000 002407* 0000 002410* 0000 002411* 0000 002412* 0000 002413* 0000 002414* 0000 002415* 0000 002416* 0000 002417* 0000 002420* 0000 002421* 0000 002422* 0000 002423* 0000 002424* 0000 002425* 0000 002426* 0000 002427* 0000 002430* 0000 002431* 0000 002432* 0000 002433* 0000 002434* 0000 002435* 0000 002436* 0000 002437* 0000 002440* 0000 002441* 0000 002442* 0000 002443* 0000 002444* 0000 002445* 0000 002446* 0000 002447* 0000 002450* 0000 002451* 0000 002452* 0000 002453* 0000 002454* 0000 002455* 0000 002456* 0000 002457* 0000 002460* 0000 002461* 0000 002462* 0000 002463* 0000 002464* 0000 002465* 0000 002466* 0000 002467* 0000 002470* 0000 002471* 0000 002472* 0000 002473* 0000 002474* 0000 002475* 0000 002476* 0000 002477* 0000 002500* 0000 002501* 0000 002502* 0000 002503* 0000 002504* 0000 002505* 0000 002506* 0000 002507* 0000 002510* 0000 002511* 0000 002512* 0000 002513* 0000 002514* 0000 002515* 0000 002516* 0000 002517* 0000 002520* 0000 002521* 0000 002522* 0000 002523* 0000 002524* 0000 002525* 0000 002526* 0000 002527* 0000 002530* 0000 002531* 0000 002532* 0000 002533* 0000 002534* 0000 002535* 0000 002536* 0000 002537* 0000 002540* 0000 002541* 0000 002542* 0000 002543* 0000 002544* 0000 002545* 0000 002546* 0000 002547* 0000 002550* 0000 002551* 0000 002552* 0000 002553* 0000 002554* 0000 002555* 0000 002556* 0000 002557* 0000 002560* 0000 002561* 0000 002562* 0000 002563* 0000 002564* 0000 002565* 0000 002566* 0000 002567* 0000 002570* 0000 002571* 0000 002572* 0000 002573* 0000 002574* 0000 002575* 0000 002576* 0000 002577* 0000 002600* 0000 002601* 0000 002602* 0000 002603* 0000 002604* 0000 002605* 0000 002606* 0000 002607* 0000 002610* 0000 002611* 0000 002612* 0000 002613* 0000 002614* 0000 002615* 0000 002616* 0000 002617* 0000 002620* 0000 002621* 0000 002622* 0000 002623* 0000 002624* 0000 002625* 0000 002626* 0000 002627* 0000 002630* 0000 002631* 0000 002632* 0000 002633* 0000 002634* 0000 002635* 0000 002636* 0000 002637* 0000 002640* 0000 002641* 0000 002642* 0000 002643* 0000 002644* 0000 002645* 0000 002646* 0000 002647* 0000 002650* 0000 002651* 0000 002652* 0000 002653* 0000 002654* 0000 002655* 0000 002656* 0000 002657* 0000 002660* 0000 002661* 0000 002662* 0000 002663* 0000 002664* 0000 002665* 0000 002666* 0000 002667* 0000 002670* 0000 002671* 0000 002672* 0000 002673* 0000 002674* 0000 002675* 0000 002676* 0000 002677* 0000 002700* 0000 002701* 0000 002702* 0000 002703* 0000 002704* 0000 002705* 0000 002706* 0000 002707* 0000 002710* 0000 002711* 0000 002712* 0000 002713* 0000 002714* 0000 002715* 0000 002716* 0000 002717* 0000 002720* 0000 002721* 0000 002722* 0000 002723* 0000 002724* 0000 002725* 0000 002726* 0000 002727* 0000 002730* 0000 002731* 0000 002732* 0000 002733* 0000 002734* 0000 002735* 0000 002736* 0000 002737* 0000 002740* 0000 002741* 0000 002742* 0000 002743* 0000 002744* 0000 002745* 0000 002746* 0000 002747* 0000 002750* 0000 002751* 0000 002752* 0000 002753* 0000 002754* 0000 002755* 0000 002756* 0000 002757* 0000 002760* 0000 002761* 0000 002762* 0000 002763* 0000 002764* 0000 002765* 0000 002766* 0000 002767* 0000 002770* 0000 002771* 0000 002772* 0000 002773* 0000 002774* 0000 002775* 0000 002776* 0000 002777* 0000 2160 2161 ENPUNCH /UN-FOOL THE ASSEMBLER 2162 2163 *. /OUTPUT CURRENT ORIGIN 2164 / THE FOLLOWING CODE IS SWAPPED IN TO PERFORM RESPONSE MODE COMMANDS. 2165 2166 003000* 7410 FMRES2, SKP /DON'T 2167 003001* 4577 FMRES3, JMS I [CRLF] /DO A , 2168 003002* 4533 JMS I [DOSETUP] /SETUP FOR MODE QUERY 2169 003003* 3001 FMRES3 /<^P> ADDRESS 2170 003004* 7100 CLL /INDICATE ONE CHARACTER BUFFER 2171 003005* 4557 JMS I [GETBUFFER] /GET BUFFERED COMMAND 2172 003006* 4071 MODMSG /QUERY MESSAGE 2173 003007* 4532 JMS I [GETALPHA] /GET COMMAND LETTER 2174 003010* 4777 JMS I (VALMODE) /VALIDATE MODE 2175 003011* 7450 SNA /SKIP IF OK 2176 003012* 5223 JMP MODEBD /JUMP IF NOT 2177 003013* 7510 SPA /SKIP IF NOT "QUIT" MODE 2178 003014* 5230 JMP RESQUIT /JUMP IF "QUIT" MODE 2179 003015* 1376 TAD (JMP I RESTABL)/SETUP TABLE JUMP 2180 003016* 3217 DCA RESTABLE /STORE IN-LINE 2181 003017* 5617 RESTABL,JMP I RESTABL+.-. /WILL BE PROPER JUMP 2182 003020* 3034 RESCOPY /RESPONSE MODE COPY 2183 003021* 3142 RESKILL /RESPONSE MODE KILL 2184 003022* 3053 RESEMPTY /RESPONSE MODE EMPTY 2185 2186 003023* 7240 MODEBD, NL7777 /INDICATE NO CHECKING 2187 003024* 4775 JMS I (LINFINISH) /FINISH RESPONSE LINE 2188 003025* 4442 JMS I PSCRIBE/[SCRIBE]/TELL THEM 2189 003026* 4057 MBADMSG /MODE WAS BAD 2190 003027* 5200 JMP FMRES2 /GO DO IT AGAIN 2191 2192 / RESPONSE MODE QUIT COMMAND. 2193 2194 003030* 4442 RESQUIT,JMS I PSCRIBE/[SCRIBE]/GIVE THEM THE 2195 003031* 4160 UITMSG /(Q)UIT MESSAGE 2196 003032* 4775 JMS I (LINFINISH) /FINISH RESPONSE LINE 2197 003033* 5461 JMP I L7600A/[SBOOT] /GOODBYE! 2198 2199 / RESPONSE MODE COPY COMMAND. 2200 2201 003034* 4442 RESCOPY,JMS I PSCRIBE/[SCRIBE]/FINISH THE 2202 003035* 4117 OPYMSG /COMMAND VERB 2203 003036* 4775 JMS I (LINFINISH) /FINISH RESPONSE LINE 2204 003037* 4774 JMS I (GTUNIT) /GET UNIT NUMBER 2205 003040* 4051 INPMSG /WITH INPUT MESSAGE 2206 003041* 3031 DCA INUNIT /SAVE AS INPUT UNIT 2207 003042* 4774 JMS I (GTUNIT) /GET UNIT NUMBER 2208 003043* 4121 OUTPMSG /WITH OUTPUT MESSAGE 2209 003044* 3040 DCA OTUNIT /SAVE AS OUTPUT UNIT 2210 003045* 4773 JMS I (GETYPE) /GET FILE TYPE 2211 003046* 4772 JMS I (GETNAME) /GET FILE NAME MASK 2212 2213 / INVOKED MODE COPY COMMAND. 2214 2215 003047* 4771 DOCOPY, JMS I (CKZAP) /CALL COMMON ZAP ROUTINE 2216 003050* 3307 COPYZAP /ZAP LIST POINTER 2217 003051* 7100 CLL /INDICATE CATALOGS INITIALIZE 2218 003052* 5770 JMP I (DOCENTRY) /CONTINUE THERE 2219 / RESPONSE MODE EMPTY COMMAND. 2220 2221 003053* 4442 RESEMPT,JMS I PSCRIBE/[SCRIBE]/FINISH THE 2222 003054* 3766 MPTMSG /COMMAND VERB 2223 003055* 4775 JMS I (LINFINISH) /FINISH RESPONSE LINE 2224 003056* 4774 JMS I (GTUNIT) /GET UNIT NUMBER 2225 003057* 4162 UNITMSG /WITH UNIT MESSAGE 2226 003060* 3050 DCA UNIT /STASH THE VALUE 2227 2228 / INVOKED MODE EMPTY COMMAND. 2229 2230 003061* 4533 DOEMPTY,JMS I [DOSETUP] /SETUP FOR EMPTY OPERATION 2231 003062* 3001 FMRES3 /<^P> ADDRESS 2232 003063* 4531 JMS I [CATSETUP] /DO EMPTY, KILL COMMON SETUP 2233 003064* 4575 DOEMPLP,JMS I [GNIFILE] /GET A FILE 2234 003065* 5272 JMP MTEOCATALOG /AREN'T ANY MORE 2235 003066* 7200 CLA /THROW AWAY BLOCK 2236 003067* 2023 ISZ FCNT /COUNT THIS FILE 2237 003070* 5264 JMP DOEMPLP /GO GET ANOTHER ONE 2238 003071* 5337 JMP BADCATALOG /SHOULDN'T GET HERE! 2239 2240 003072* 4767 MTEOCAT,JMS I (CATMOVE) /MOVE AND CHECK CATALOG 2241 003073* 4442 JMS I PSCRIBE/[SCRIBE]/TELL THEM 2242 003074* 3756 CNOWMSG /HOW CATALOG CURRENTLY IS 2243 003075* 1050 TAD UNIT /GET DESIGNATED UNIT 2244 003076* 4551 JMS I [UNITPRT] /PRINT UNIT TO BE EMPTIED 2245 003077* 4442 JMS I PSCRIBE/[SCRIBE]/GIVE THEM 2246 003100* 4141 TOBEMSG /THE BRIDGING MESSAGE 2247 003101* 4566 JMS I [FCPRT] /PRINT OUT CURRENT FILE COUNT 2248 003102* 4442 JMS I PSCRIBE/[SCRIBE]/GIVE THEM THE 2249 003103* 4000 CURMSG /END BRIDGING MESSAGE 2250 003104* 4530 JMS I [RUSURE] /FIND OUT IF THEY REALLY MEAN IT 2251 003105* 7410 SKP /SKIP IF YES 2252 003106* 5335 JMP EMPDONE /JUMP IF NO 2253 003107* 4442 JMS I PSCRIBE/[SCRIBE]/GIVE THEM THE 2254 003110* 3756 CNOWMSG /BRIDGING MESSAGE 2255 003111* 1050 TAD UNIT /GET DESIGNATED UNIT 2256 003112* 4551 JMS I [UNITPRT] /PRINT UNIT TO BE EMPTIED 2257 003113* 4442 JMS I PSCRIBE/[SCRIBE]/GIVE THEM THE 2258 003114* 4076 MTMSG /NOW EMPTY MESSAGE 2259 003115* 1217 TAD RESTABLE /GET SLOT COUNT BACK 2260 003116* 7112 CLL RTR;RTR /CONVERT TO SLOT COUNT 003117* 7012 2261 003120* 4543 JMS I [PRMVAL] /PRINT THE COUNT 2262 003121* 4132 SLTMSG /WITH THIS MESSAGE 2263 003122* 4442 JMS I PSCRIBE/[SCRIBE]/GIVE THEM 2264 003123* 3754 CLSMSG /CLOSING MESSAGE 2265 003124* 1141 TAD [OCBUFFER-1] /SETUP THE 2266 003125* 3016 DCA XR1 /BUFFER POINTER 2267 003126* 1366 TAD (-2^200+3) /SETUP THE 2268 003127* 3044 DCA TEMP /CLEAR COUNT 2269 003130* 3416 DCA I XR1 /CLEAR A WORD 2270 003131* 2044 ISZ TEMP /DONE YET? 2271 003132* 5330 JMP .-2 /NO, KEEP GOING 2272 003133* 2037 ISZ OCSW /INDICATE WE WROTE ON THE CATALOG 2273 003134* 4567 JMS I [OCLOSE] /WRITE IT OUT 2274 003135* 4565 EMPDONE,JMS I [DONECHK] /CHECK IF WE ARE NOW DONE 2275 003136* 5200 JMP FMRES2 /CONTINUE THERE 2276 2277 / COMES HERE IF CATALOG IS DEFECTIVE. 2278 2279 003137* 4442 BADCATA,JMS I PSCRIBE/[SCRIBE]/TELL THEM 2280 003140* 3704 BDCTMSG /CATALOG IS BAD 2281 003141* 5461 JMP I L7600A/[SBOOT] /GOODBYE! 2282 2283 / RESPONSE MODE KILL COMMAND. 2284 2285 003142* 4442 RESKILL,JMS I PSCRIBE/[SCRIBE]/FINISH THE 2286 003143* 4044 ILLMSG /COMMAND VERB 2287 003144* 4775 JMS I (LINFINISH) /FINISH RESPONSE LINE 2288 003145* 4774 JMS I (GTUNIT) /GET UNIT NUMBER 2289 003146* 4162 UNITMSG /WITH UNIT MESSAGE 2290 003147* 3050 DCA UNIT /STASH THE VALUE 2291 003150* 4773 JMS I (GETYPE) /GET FILE TYPE 2292 003151* 4772 JMS I (GETNAME) /GET FILE NAME MASK 2293 003152* 5765 JMP I (DOKILL) /GO DO THE FILE KILL 2294 2295 003165* 3200 PAGE 003166* 7403 003167* 3213 003170* 3210 003171* 3251 003172* 3400 003173* 3463 003174* 3535 003175* 3562 003176* 5617 003177* 3624 2296 / INVOKED MODE KILL COMMAND. 2297 2298 003200* 4531 DOKILL, JMS I [CATSETUP] /DO EMPTY, KILL COMMON SETUP 2299 003201* 4777 JMS I (ICLODE) /LOAD INPUT CATALOG 2300 003202* 7330 NL4000 /INDICATE THAT 2301 003203* 3027 DCA ICSW /INPUT CATALOG IS LOADED BUT INACTIVE 2302 003204* 4213 JMS CATMOVE /MOVE AND CHECK CATALOG 2303 003205* 4251 JMS CKZAP /CALL COMMON ZAP ROUTINE 2304 003206* 3322 KILLZAP /ZAP LIST POINTER 2305 003207* 7120 STL /INDICATE KILL MODE 2306 003210* 4533 DOCENTR,JMS I [DOSETUP] /CALL SETUP; L=0 FOR COPY, L=1 FOR KILL 2307 003211* 0350 FILCLOSE /<^P> ADDRESS 2308 003212* 5776 JMP I (FILELUP) /GO DO IT THERE 2309 2310 003213* 0000 CATMOVE,.-. /CATALOG MOVE AND CHECK ROUTINE 2311 003214* 7350 NL3777 /INDICATE THE 2312 003215* 3037 DCA OCSW /OUTPUT CATALOG IS LOADED 2313 003216* 1154 TAD [CATADR-1] /POINT TO 2314 003217* 3016 DCA XR1 /INPUT CATALOG 2315 003220* 1141 TAD [OCBUFFER-1] /POINT TO 2316 003221* 3012 DCA XR2 /OUTPUT CATALOG 2317 003222* 1066 TAD L7400/[-2^200] /SETUP THE 2318 003223* 3044 DCA TEMP /MOVE COUNT 2319 003224* 1416 CATMVLP,TAD I XR1 /GET A WORD 2320 003225* 3412 DCA I XR2 /PUT A WORD 2321 003226* 2044 ISZ TEMP /DONE YET? 2322 003227* 5224 JMP CATMVLP /NO, KEEP GOING 2323 003230* 1540 TAD I [OCBUFFER+377] /GET FIRST BLOCK OF CATALOG 2324 003231* 7450 SNA /SKIP IF POSSIBLE 2325 003232* 5775 JMP I (BADCATALOG) /JUMP IF NOT 2326 003233* 7041 CIA /INVERT FOR COUNT 2327 003234* 1774 TAD I (OCBUFFER+376) /NOW HAVE CATALOG BLOCK COUNT 2328 003235* 3773 DCA I (RESTABLE) /SAVE FOR NOW 2329 003236* 1773 TAD I (RESTABLE) /GET IT BACK 2330 003237* 0372 AND (4017) /CHECK FOR BAD BITS 2331 003240* 7640 SZA CLA /SKIP IF OK 2332 003241* 5775 JMP I (BADCATALOG) /JUMP IF NOT 2333 003242* 5613 JMP I CATMOVE /RETURN 2334 2335 003243* 0000 CATSETU,.-. /EMPTY, KILL CATALOG SETUP ROUTINE 2336 003244* 1050 TAD UNIT /GET COMMON UNIT 2337 003245* 3031 DCA INUNIT /USE FOR INPUT 2338 003246* 1050 TAD UNIT /GET COMMON UNIT 2339 003247* 3040 DCA OTUNIT /USE FOR OUTPUT 2340 003250* 5643 JMP I CATSETUP /RETURN 2341 003251* 0000 CKZAP, .-. /COPY/KILL ZAP ROUTINE 2342 003252* 1651 TAD I CKZAP /GET LIST POINTER 2343 003253* 3044 DCA TEMP /STASH IT 2344 003254* 1371 TAD (CKZADR-1) /POINT TO 2345 003255* 3016 DCA XR1 /ADDRESS LIST 2346 003256* 1416 CKZPLUP,TAD I XR1 /GET AN ADDRESS 2347 003257* 7450 SNA /END OF LIST? 2348 003260* 5651 JMP I CKZAP /RETURN IF SO 2349 003261* 3045 DCA TEMP2 /STASH LATEST ADDRESS 2350 003262* 1444 TAD I TEMP /GET ZAP VALUE 2351 003263* 3445 DCA I TEMP2 /ZAP IT IN 2352 003264* 2044 ISZ TEMP /BUMP TO NEXT VALUE 2353 003265* 5256 JMP CKZPLUP /KEEP GOING 2354 2355 003266* 0000 DOSETUP,.-. /SETUP ROUTINE FOR COPY, KILL, ETC. 2356 003267* 7420 SNL /CALLED BY KILL? 2357 003270* 3027 DCA ICSW /NO, CLEAR INPUT CATALOG SWITCH 2358 003271* 7420 SNL /CALLED BY KILL? 2359 003272* 3037 DCA OCSW /NO, CLEAR OUTPUT CATALOG SWITCH 2360 003273* 7240 NL7777 /SETUP THE 2361 003274* 3011 DCA FRSTSW /FIRST TIME SWITCH 2362 003275* 3023 DCA FCNT /CLEAR THE FILE COUNT 2363 003276* 1666 TAD I DOSETUP /GET THE PASSED ARGUMENT 2364 003277* 3051 DCA UPADDR /STORE AS <^P> ADDRESS 2365 003300* 2266 ISZ DOSETUP /BUMP PAST ARGUMENT 2366 003301* 5666 JMP I DOSETUP /RETURN 2367 2368 003302* 0000 GETALPH,.-. /GET ALPHABETIC FROM STRING BUFFER 2369 003303* 1466 TAD I L7400/[STACK] /GET CHARACTER FROM HEAD OF BUFFER 2370 003304* 0135 AND [137] /MAKE IT CASELESS 2371 003305* 1065 TAD L7700/[-100] /MAKE IT SIX-BIT 2372 003306* 5702 JMP I GETALPHA /RETURN 2373 2374 / COPY ZAP LIST. 2375 2376 003307* 7410 COPYZAP,SKP /READ 2377 003310* 2232 FLCPMSG /COPIED MESSAGE 2378 003311* 5263 COPFILE&177+JMPC /COPYING 2379 003312* 0000 0000 /COPYING DOESN'T CHECK 2380 003313* 2221 COPYMSG /COPY DONE MESSAGE 2381 2382 / COPY/KILL ADDRESS ZAP ADDRESS LIST. 2383 2384 003314* 0214 CKZADR, CKZAP1 /READ/NOREAD ADDRESS 2385 003315* 0231 CKZAP2 /KILLED/COPIED MESSAGE ADDRESS 2386 003316* 0252 CKZAP3 /KILL/COPY BRANCH 2387 003317* 0352 CKZAP4 /CALL RUSURE/NONE ADDRESS 2388 003320* 0363 CKZAP5 /COPY/KILL DONE MESSAGE ADDRESS 2389 003321* 0000 0 /THIS ENDS THE LIST 2390 / KILL ZAP LIST. 2391 2392 003322* 7640 KILLZAP,SZA CLA /NO READ 2393 003323* 2244 FLKLMSG /KILLED MESSAGE 2394 003324* 7346 NL7775 /KILLING 2395 003325* 4530 JMS I [RUSURE] /KILLING CHECKS 2396 003326* 2256 KILLMSG /KILL DONE MESSAGE 2397 2398 003327* 0000 STRBF2, 0 /INITIALIZED HEADER OF PARSING STRING BUFFER 2399 2400 003330* 0000 XORSW, .-. /OPTION SWITCH XOR ROUTINE 2401 003331* 1746 XORLUP, TAD I SWPTR /GET A SWITCH WORD 2402 003332* 0745 AND I OPTPTR /AND AGAINST OPTION WORD 2403 003333* 7041 CIA /INVERT 2404 003334* 7104 CLL RAL /*2 2405 003335* 1746 TAD I SWPTR /ADD ON SWITCH WORD 2406 003336* 1745 TAD I OPTPTR /ADD ON OPTION WORD 2407 003337* 3746 DCA I SWPTR /STORE XOR-ED VALUE 2408 003340* 2346 ISZ SWPTR /BUMP TO NEXT 2409 003341* 2345 ISZ OPTPTR /BUMP TO NEXT 2410 003342* 2347 ISZ XORCNT /DONE ALL YET? 2411 003343* 5331 JMP XORLUP /NO, KEEP GOING 2412 003344* 5730 JMP I XORSW /YES, RETURN 2413 2414 003345* 2600 OPTPTR, XORSWS+PZ /OPTION WORD POINTER 2415 003346* 7604 SWPTR, SWAL /PASSED SWITCHES POINTER 2416 003347* 7775 XORCNT, -3 /OPTION WORD COUNTER 2417 2418 003350* 0000 ZBLOCK STRLENGTH%2+1+STRBF2-. /REST OF PARSING STRING BUFFER 003351* 0000 2419 2420 003371* 3313 PAGE 003372* 4017 003373* 3017 003374* 2776 003375* 3137 003376* 0200 003377* 1354 2421 003400* 0000 GETNAME,.-. /GET NAME ROUTINE 2422 003401* 7344 NL7776 /SETUP THE 2423 003402* 3335 DCA GTUNIT /POINT COUNTER 2424 / STL /INDICATE 36 CHARACTER BUFFER 2425 003403* 4557 JMS I [GETBUFFER] /GET BUFFERED RESPONSE 2426 003404* 4106 NAMMSG /QUERY MESSAGE 2427 003405* 1066 TAD L7400/[STACK] /SETUP THE 2428 003406* 3053 DCA VERPTR /BUFFER POINTER 2429 003407* 3026 DCA GTINDX /CLEAR OUTPUT INDEX 2430 003410* 1453 GETNMLP,TAD I VERPTR /GET A CHARACTER 2431 003411* 7450 SNA /SKIP IF NOT 2432 003412* 5227 JMP GETNMEOLINE /JUMP IF 2433 003413* 1377 TAD (-".!200) /COMPARE TO "." 2434 003414* 7450 SNA /SKIP IF OTHER 2435 003415* 5253 JMP GCHKPNT /JUMP IF IT MATCHES 2436 003416* 1127 GPOINT, TAD [-" +".] /COMPARE TO (OR CONVERTED ) 2437 003417* 7450 SNA /SKIP IF OTHER 2438 003420* 5251 JMP GETADVANCE /JUMP IF IT MATCHES 2439 003421* 1065 TAD L7700/[-140+" -200] /COMPARE TO LOWER-CASE LIMIT 2440 003422* 7510 SPA /SKIP IF LOWER-CASE 2441 003423* 1162 TAD [" &177] /RESTORE UPPER-CASE 2442 003424* 0153 AND [77] /MAKE IT SIX-BIT 2443 003425* 7450 SNA /SKIP IF NOT AT-SIGN OR ACCENT 2444 003426* 5251 JMP GETADVANCE /IGNORE AT-SIGN OR ACCENT 2445 003427* 3044 GETNMEO,DCA TEMP /SAVE THE CHARACTER 2446 003430* 1026 TAD GTINDX /GET OUTPUT INDEX 2447 003431* 7110 CLL RAR /DIVIDE BY TWO 2448 003432* 1134 TAD [STRBUFFER] /POINT TO CURRENT OUTPUT WORD 2449 003433* 3045 DCA TEMP2 /STASH THE POINTER 2450 003434* 1445 TAD I TEMP2 /GET OLD VALUE 2451 003435* 0065 AND L7700/[7700] /JUST LEFT HALF 2452 003436* 1044 TAD TEMP /GET NEW HALF 2453 003437* 7430 SZL /SKIP IF NEW ONE IS LEFT HALF 2454 003440* 5244 JMP .+4 /JUMP IF NEW ONE IS RIGHT HALF 2455 003441* 7006 RTL;RTL;RTL /MOVE NEW ONE TO LEFT HALF 003442* 7006 003443* 7006 2456 003444* 3445 DCA I TEMP2 /STORE LATEST (PAIR) 2457 003445* 2026 ISZ GTINDX /BUMP OUTPUT INDEX FOR NEXT TIME 2458 003446* 1044 TAD TEMP /GET LATEST CHARACTER 2459 003447* 7650 SNA CLA /SKIP IF NOT 2460 003450* 5261 JMP GETNEND /JUMP IF 2461 003451* 2053 GETADVA,ISZ VERPTR /BUMP TO NEXT CHARACTER 2462 003452* 5210 JMP GETNMLP /KEEP GOING 2463 2464 003453* 2335 GCHKPNT,ISZ GTUNIT /TOO MANY POINTS? 2465 003454* 5216 JMP GPOINT /NO, KEEP GOING 2466 003455* 4577 JMS I [CRLF] /DO A , 2467 003456* 4442 JMS I PSCRIBE/[SCRIBE] /YES, COMPLAIN OF 2468 003457* 4007 DPERR /TOO MANY POINTS 2469 003460* 5663 JMP I GETYPE /TRY AGAIN 2470 2471 003461* 4362 GETNEND,JMS LINFINISH /FINISH COMMAND LINE 2472 003462* 5600 JMP I GETNAME /RETURN 2473 003463* 0000 GETYPE, .-. /GET FILE TYPE ROUTINE 2474 003464* 7100 TYPAGN, CLL /INDICATE ONE CHARACTER BUFFER 2475 003465* 4557 JMS I [GETBUFFER] /GET BUFFERED RESPONSE 2476 003466* 4153 TYPMSG /QUERY MESSAGE 2477 003467* 4532 JMS I [GETALPHA] /GET COMMAND LETTER 2478 003470* 4526 JMS I [VALFTYPE] /VALIDATE FILE TYPE 2479 003471* 7450 SNA /SKIP IF OK 2480 003472* 5330 JMP BDTYPE /JUMP IF NOT 2481 003473* 3024 DCA FILTYPE /SAVE FILE TYPE 2482 003474* 7332 NL2000 /SETUP MASK 2483 003475* 0024 AND FILTYPE /GET OVERRIDE BIT 2484 003476* 7640 SZA CLA /SKIP IF OFF 2485 003477* 5324 JMP PROVERRIDE /JUMP IF ON 2486 003500* 1024 TAD FILTYPE /GET TYPE WORD AGAIN 2487 003501* 7500 SMA /SKIP IF EVERYTHING ALLOWED 2488 003502* 5306 JMP TYAORB /JUMP IF OTHERWISE 2489 003503* 4442 JMS I PSCRIBE/[SCRIBE]/GIVE THEM THE 2490 003504* 4173 VERYMSG /(E)VERYTHING MESSAGE 2491 003505* 5326 JMP TYPFEXT /CONTINUE THERE 2492 2493 003506* 7110 TYAORB, CLL RAR /MOVE ASCII BIT TO LINK 2494 003507* 7650 SNA CLA /SKIP IF BINARY OR COMBINED 2495 003510* 5316 JMP PRSCII /JUMP IF ASCII ONLY 2496 003511* 7420 SNL /SKIP IF COMBINED 2497 003512* 5321 JMP PRINARY /JUMP IF BINARY ONLY 2498 003513* 4442 JMS I PSCRIBE/[SCRIBE]/GIVE THEM THE 2499 003514* 4113 OMBMSG /(C)OMBINED MESSAGE 2500 003515* 5326 JMP TYPFEXT /CONTINUE THERE 2501 2502 003516* 4442 PRSCII, JMS I PSCRIBE/[SCRIBE]/GIVE THEM THE 2503 003517* 4127 SCIIMSG /(A)SCII MESSAGE 2504 003520* 5326 JMP TYPFEXT /CONTINUE THERE 2505 2506 003521* 4442 PRINARY,JMS I PSCRIBE/[SCRIBE]/GIVE THEM THE 2507 003522* 4046 INARMSG /(B)INARY MESSAGE 2508 003523* 5326 JMP TYPFEXT /CONTINUE THERE 2509 2510 003524* 4442 PROVERR,JMS I PSCRIBE/[SCRIBE]/GIVE THEM THE 2511 003525* 4167 VERRMSG /(O)VERRIDE MESSAGE 2512 003526* 4362 TYPFEXT,JMS LINFINISH /FINISH THE LINE 2513 003527* 5663 JMP I GETYPE /RETURN 2514 2515 / COMES HERE IF FILE TYPE RESPONSE IS BAD. 2516 2517 003530* 7240 BDTYPE, NL7777 /INDICATE NO CHECKING 2518 003531* 4362 JMS LINFINSH /FINISH RESPONSE LINE 2519 003532* 4442 JMS I PSCRIBE/[SCRIBE]/TELL THEM 2520 003533* 3736 BDTPMSG /TYPE WAS BAD 2521 003534* 5264 JMP TYPAGN /GO DO IT AGAIN 2522 003535* 0000 GTUNIT, .-. /GET UNIT NUMBER ROUTINE 2523 003536* 1735 TAD I GTUNIT /GET MESSAGE ARGUMENT 2524 003537* 3343 DCA GTBFARG /STORE IN-LINE 2525 003540* 2335 ISZ GTUNIT /BUMP PAST ARGUMENT 2526 003541* 7100 GTUAGN, CLL /INDICATE ONE CHARACTER INPUT BUFFER 2527 003542* 4557 JMS I [GETBUFFER] /GET BUFFERED RESPONSE 2528 003543* 0000 GTBFARG,.-. /QUERY MESSAGE PASSED HERE 2529 003544* 1466 TAD I L7400/[STACK] /GET CHARACTER FROM HEAD OF BUFFER 2530 003545* 1366 TAD L7710/(-"8!200) /SUBTRACT UPPER LIMIT 2531 003546* 7100 CLL /CLEAR LINK FOR TEST 2532 003547* 1072 TAD L10A/["8-"0] /ADD ON RANGE 2533 003550* 7420 SNL /SKIP IF OK 2534 003551* 5356 JMP BADIGIT /JUMP IF NOT 2535 003552* 3343 DCA GTBFARG /SAVE FOR NOW 2536 003553* 4362 JMS LINFINSH /FINISH COMMAND LINE 2537 003554* 1343 TAD GTBFARG /GET THE VALUE 2538 003555* 5735 JMP I GTUNIT /RETURN 2539 2540 003556* 4362 BADIGIT,JMS LINFINISH /FINISH RESPONSE LINE 2541 003557* 4442 JMS I PSCRIBE/[SCRIBE]/TELL THEM 2542 003560* 3717 BDIGMSG /THEY GOOFED 2543 003561* 5341 JMP GTUAGN /GO DO IT AGAIN 2544 2545 003562* 0000 LINFINI,.-. /LINE FINISH ROUTINE 2546 003563* 3044 DCA TEMP /SAVE PASSED VALUE 2547 003564* 2044 ISZ TEMP /WAS IT -1? 2548 003565* 1022 TAD ESCAPSW /NO, GET FLAG 2549 003566* 7710 L7710, SPA CLA /SKIP IF NOT SET 2550 003567* 3525 DCA I [DONEZAP] /PREVENT RESTART 2551 003570* 1022 TAD ESCAPSW /GET FLAG 2552 003571* 7700 SMA CLA /SKIP IF SET 2553 003572* 5375 JMP CREXIT /JUMP IF NOT 2554 003573* 1124 TAD ["$&177] /GET A "$" 2555 003574* 4560 JMS I [P7CH] /PRINT IT 2556 003575* 4577 CREXIT, JMS I [CRLF] /DO A , 2557 003576* 5762 JMP I LINFINISH /RETURN 2558 2559 003577* 7722 PAGE 2560 / FILE TYPE AND MODE VALIDATION ROUTINES. USED BY ONCE-ONLY COMMAND PARSING 2561 / CODE WITH KEYBOARD MONITOR PRESENT. ALSO USED BY RESPONSE MODE SWAPPED CODE. 2562 2563 003600* 0000 VALFTYP,.-. /VALIDATE FILE TYPE ROUTINE 2564 003601* 3224 DCA VALMODE /SAVE PASSED VALUE 2565 003602* 1224 TAD VALMODE /GET IT BACK 2566 003603* 1377 TAD (-"O!300) /COMPARE TO "O" 2567 003604* 7450 SNA /SKIP IF OTHER 2568 003605* 5221 JMP GOTO /JUMP IF IT MATCHES 2569 003606* 1376 TAD (-"E+"O) /COMPARE TO "E" 2570 003607* 7450 SNA /SKIP IF OTHER 2571 003610* 5222 JMP GOTE /JUMP IF IT MATCHES 2572 003611* 1375 TAD (-"C+"E) /COMPARE TO "C" 2573 003612* 7440 SZA /SKIP IF IT MATCHES 2574 003613* 7001 IAC /TAD (-"B+"C)/COMPARE TO "B" 2575 003614* 7440 SZA /SKIP IF EITHER 2576 003615* 7001 IAC /TAD (-"A+"B)/COMPARE TO "A" 2577 003616* 7650 SNA CLA /SKIP IF NOT "A", "B", OR "C" 2578 003617* 1224 TAD VALMODE /USE ORIGINAL VALUE IF "A", "B", OR "C" 2579 003620* 5600 JMP I VALFTYPE /RETURN 2580 2581 003621* 7332 GOTO, NL2000 /SET OVERRIDE BIT 2582 003622* 1374 GOTE, TAD (4003) /SET ALL TYPE BITS 2583 003623* 5600 JMP I VALFTYPE /RETURN 2584 2585 003624* 0000 VALMODE,.-. /MODE VALIDATION ROUTINE 2586 003625* 1373 TAD (-"Q!300) /COMPARE TO "Q" 2587 003626* 7450 SNA /SKIP IF OTHER 2588 003627* 5243 JMP GOTQ /JUMP IF IT MATCHES 2589 003630* 1372 TAD (-"C+"Q) /COMPARE TO "C" 2590 003631* 7450 SNA /SKIP IF OTHER 2591 003632* 5246 JMP GOTC /JUMP IF IT MATCHES 2592 003633* 1272 TAD L7770/(-"K+"C) /COMPARE TO "K" 2593 003634* 7450 SNA /SKIP IF OTHER 2594 003635* 5245 JMP GOTK /JUMP IF IT MATCHES 2595 003636* 1371 TAD (-"E+"K) /COMPARE TO "E" 2596 003637* 7450 SNA /SKIP IF OTHER 2597 003640* 5244 JMP GOTEMPTY /JUMP IF IT MATCHES 2598 003641* 7346 NL7775 /SET BAD VALUE 2599 003642* 7410 SKP /DON'T DO "Q" VALUE 2600 003643* 7330 GOTQ, NL4000 /SET NEGATIVE VALUE FOR "Q" 2601 003644* 7001 GOTEMPT,IAC /SET 3 FOR "E" 2602 003645* 7001 GOTK, IAC /SET 2 FOR "K" 2603 003646* 7001 GOTC, IAC /SET 1 FOR "C" 2604 003647* 5624 JMP I VALMODE /RETURN 2605 2606 / N.B. VALFTYPE AND VALMODE ARE CALLED WITH PAGE ZERO UNCERTAIN! 2607 / SPECIAL CHARACTER TABLE. 2608 2609 003650* 7601 CHTBL, -177; BACKSP / 003651* 0475 2610 003652* 7602 -176; GOTESC /176 003653* 0443 2611 003654* 7603 -175; GOTESC /175 003655* 0443 2612 003656* 7641 -137; BACKSP /UNDERSCORE 003657* 0475 2613 003660* 7745 -33; GOTESC / 003661* 0443 2614 003662* 7753 -"U!300;DELETL /<^U> 003663* 0454 2615 003664* 7763 -"M!300;GOTCR / 003665* 0444 2616 003666* 7766 -"J!300;LFVIEW / 003667* 0461 2617 003670* 7767 -"I!300;GOTHT / 003671* 0425 2618 003672* 7770 L7770, -"H!300;BACKSP / 003673* 0475 2619 003674* 0000 0 /THIS ENDS THE LIST 2620 2621 / SPECIAL RUBOUT CHARACTER TABLE. 2622 2623 003675* 7601 RUBTBL, -177; RUBAGN / 003676* 0512 2624 003677* 7641 -137; RUBAGN /UNDERSCORE 003700* 0512 2625 003701* 7770 -"H!300;RUBAGN / 003702* 0512 2626 003703* 0000 0 /THIS ENDS THE LIST 2627 / SWAPPED TEXT MESSAGES. 2628 2629 003704* 4536 BDCTMSG,TEXT "%^I^NVALID ^C^ATALOG!" 003705* 1136 003706* 1626 003707* 0114 003710* 1104 003711* 4036 003712* 0336 003713* 0124 003714* 0114 003715* 1707 003716* 4100 2630 003717* 4536 BDIGMSG,TEXT "%^I^NVALID ^U^NIT ^N^UMBER!%^" 003720* 1136 003721* 1626 003722* 0114 003723* 1104 003724* 4036 003725* 2536 003726* 1611 003727* 2440 003730* 3616 003731* 3625 003732* 1502 003733* 0522 003734* 4145 003735* 3600 2631 003736* 4536 BDTPMSG,TEXT "%^I^NVALID ^F^ILE ^T^YPE!%^" 003737* 1136 003740* 1626 003741* 0114 003742* 1104 003743* 4036 003744* 0636 003745* 1114 003746* 0540 003747* 3624 003750* 3631 003751* 2005 003752* 4145 003753* 3600 2632 003754* 5145 CLSMSG, TEXT ")%^" 003755* 3600 2633 003756* 4536 CNOWMSG,TEXT "%^C^ATALOG OF ^" 003757* 0336 003760* 0124 003761* 0114 003762* 1707 003763* 4017 003764* 0640 003765* 3600 2634 003766* 1520 MPTMSG, TEXT "MPTY^" 003767* 2431 003770* 3600 2635 2636 003771* 0006 PAGE 003772* 0016 003773* 7757 003774* 4003 003775* 0002 003776* 0012 003777* 7761 2637 004000* 3603 CURMSG, TEXT "^C^URRENTLY)%" 004001* 3625 004002* 2222 004003* 0516 004004* 2414 004005* 3151 004006* 4500 2638 004007* 4536 DPERR, TEXT "%^M^ULTIPLE ^P^ERIOD ^C^HARACTERS IN ^S^EARCH ^S^TRING!%^" 004010* 1536 004011* 2514 004012* 2411 004013* 2014 004014* 0540 004015* 3620 004016* 3605 004017* 2211 004020* 1704 004021* 4036 004022* 0336 004023* 1001 004024* 2201 004025* 0324 004026* 0522 004027* 2340 004030* 1116 004031* 4036 004032* 2336 004033* 0501 004034* 2203 004035* 1040 004036* 3623 004037* 3624 004040* 2211 004041* 1607 004042* 4145 004043* 3600 2639 004044* 1114 ILLMSG, TEXT "ILL" 004045* 1400 2640 004046* 1116 INARMSG,TEXT "INARY" 004047* 0122 004050* 3100 2641 004051* 4536 INPMSG, TEXT "%^I^NPUT: ^" 004052* 1136 004053* 1620 004054* 2524 004055* 7240 004056* 3600 2642 004057* 4536 MBADMSG,TEXT "%^I^NVALID ^M^ODE!%" 004060* 1136 004061* 1626 004062* 0114 004063* 1104 004064* 4036 004065* 1536 004066* 1704 004067* 0541 004070* 4500 2643 004071* 4536 MODMSG, TEXT "%^M^ODE: " 004072* 1536 004073* 1704 004074* 0572 004075* 4000 2644 /MPTMSG,TEXT "MPTY^" 2645 004076* 4016 MTMSG, TEXT " NOW ^E^MPTY (^" 004077* 1727 004100* 4036 004101* 0536 004102* 1520 004103* 2431 004104* 4050 004105* 3600 2646 004106* 4536 NAMMSG, TEXT "%^N^AME: " 004107* 1636 004110* 0115 004111* 0572 004112* 4000 2647 004113* 1715 OMBMSG, TEXT "OMBINED" 004114* 0211 004115* 1605 004116* 0400 2648 004117* 1720 OPYMSG, TEXT "OPY" 004120* 3100 2649 004121* 4536 OUTPMSG,TEXT "%^O^UTPUT: " 004122* 1736 004123* 2524 004124* 2025 004125* 2472 004126* 4000 2650 004127* 2303 SCIIMSG,TEXT "SCII^" 004130* 1111 004131* 3600 2651 004132* 3606 SLTMSG, TEXT "^F^REE ^S^LOT" 004133* 3622 004134* 0505 004135* 4036 004136* 2336 004137* 1417 004140* 2400 2652 004141* 4024 TOBEMSG,TEXT " TO BE ^E^MPTIED (^" 004142* 1740 004143* 0205 004144* 4036 004145* 0536 004146* 1520 004147* 2411 004150* 0504 004151* 4050 004152* 3600 2653 004153* 4536 TYPMSG, TEXT "%^T^YPE: " 004154* 2436 004155* 3120 004156* 0572 004157* 4000 2654 004160* 2511 UITMSG, TEXT "UIT" 004161* 2400 2655 004162* 4536 UNITMSG,TEXT "%^U^NIT: " 004163* 2536 004164* 1611 004165* 2472 004166* 4000 2656 004167* 2605 VERRMSG,TEXT "VERRIDE" 004170* 2222 004171* 1104 004172* 0500 2657 004173* 2605 VERYMSG,TEXT "VERYTHING" 004174* 2231 004175* 2410 004176* 1116 004177* 0700 2658 2659 PAGE 2660 2661 RESEND= . /END OF CODE TO BE MOVED 2662 2663 RESCNT= RESEND-FMRES2%200 /PAGE COUNT OF SWAPPED SECTION 2664 2665 OCVBUFF=. /OUTPUT CATALOG VERIFY BUFFER 2666 000124* 0044 FIELD 0 /THIS WILL DUMP THE LITERALS 000125* 1735 000126* 3600 000127* 0016 000130* 1750 000131* 3243 000132* 3302 000133* 3266 000134* 7554 000135* 0137 000136* 4200 000137* 4401 000140* 2777 000141* 2377 000142* 0200 000143* 2134 000144* 0060 000145* 0020 000146* 7757 000147* 1337 000150* 0002 000151* 2154 000152* 7772 000153* 0077 000154* 6777 000155* 6776 000156* 0136 000157* 0400 000160* 1740 000161* 0100 000162* 0040 000163* 7740 000164* 1651 000165* 1734 000166* 1330 000167* 1505 000170* 7760 000171* 3000 000172* 6000 000173* 1626 000174* 7640 000175* 1200 000176* 1122 000177* 1266 2667 2668 *RESEND /RESTORE ORIGIN 2669 2670 RELOC /TURN OFF RELOCATION 2671 IFNZRO .&177 2672 2673 FILMAN= . /FILMAN SYSTEM STARTS HERE 2674 2675 007000 7000 FILMAN, NOP /HERE IN CASE WE'RE CHAINED TO 2676 007001 4777 JMS I (XORSW+PZ) /XOR OPTION SWITCHES BEFORE SWITCH SCAN 2677 007002 7326 NL0002 /SET /K BIT MASK 2678 007003 0776 AND I (SWAL) /GET /K BIT 2679 007004 7640 SZA CLA /SKIP IF NOT SET 2680 007005 5213 JMP SETKILL /JUMP IF SET 2681 007006 1776 TAD I (SWAL) /GET SWITCHES /A-/L 2682 007007 0105 AND L200/[200] /JUST /E BIT 2683 007010 7650 SNA CLA /SKIP IF /E BIT SET 2684 007011 5214 JMP SETCOPY /JUMP IF NOT SET 2685 007012 7001 SETEMPT,IAC /SET EMPTY VALUE 2686 007013 7001 SETKILL,IAC /SET KILL VALUE 2687 007014 7001 SETCOPY,IAC /SET COPY VALUE 2688 007015 3775 DCA I (MODE) /SAVE MODE VALUE 2689 2690 / IF THE COMMAND BUFFER WAS COMPLETELY PARSED, THEN NO MULTI-CHARACTER OPTIONS 2691 / WERE PASSED AND GETNDX POINTS TO . IF GETNDX POINTS TO A NON- 2692 / CHARACTER, THEN EITHER GARBAGE WAS GIVEN OR A MULTI-CHARACTER OPTION WAS 2693 / ACCIDENTALLY SCANNED AS A SWITCH OPTION. WE MUST NULLIFY THE EFFECT OF THE 2694 / SWITCH THUS SET. THERE ARE SEVERAL ANOMALOUS SITUATIONS: 2695 2696 / /N SET AND /NAME:STRING IS PASSED AS FIRST MULTI-CHARACTER OPTION. 2697 2698 / /O SET AND /OUTPUT:O IS PASSED AS FIRST MULTI-CHARACTER OPTION. 2699 2700 / /Q SET AND /QUERY:Q IS PASSED AS FIRST MULTI-CHARACTER OPTION. 2701 2702 / /U SET AND /UNIT:U IS PASSED AS FIRST MULTI-CHARACTER OPTION. 2703 2704 / IN ALL CASES (EXCEPT /Q) THE SWITCH WILL HAVE TO BE FORCED OFF. THE /Q CASE 2705 / IS OBVIATED BY DEMANDING THAT /QUERY:Q TAKES PRECEDENCE OVER /Q. 2706 2707 / ALL OTHER SWITCHES ACCIDENTALLY SET BY FIRST MULTI-CHARACTER OPTIONS BEING 2708 / PARSED AS OPTION SWITCHES ARE IGNORED BY FILMAN. 2709 007016 4504 BADMODE,JMS I GETHAF/[XGETHAF]/GET LAST CHARACTER SCANNED 2710 007017 7650 BADNESS,SNA CLA /SKIP IF NOT 2711 007020 5774 TYPBAD, JMP I (TSTEIK) /JUMP IF 2712 007021 7344 UNIBARF,NL7776 /\ 2713 007022 1026 YNOBAD, TAD GETNDX / >BACKUP TO POTENTIAL "/" 2714 007023 3026 DCA GETNDX // 2715 007024 2226 NXTOPT, ISZ PARSW /BUMP UP POSITION INDICATOR 2716 007025 4510 JMS I TSPACE/[XTSPACE]/IGNORE AND 2717 007026 7777 PARSW, 0-1 /PARSE POSITION SWITCH; THIS CAN BE SKIPPED 2718 007027 4504 JMS I GETHAF/[XGETHAF]/GET A CHARACTER 2719 007030 7450 SNA /SKIP IF NOT 2720 007031 5773 JMP I (GOTONE) /JUMP IF 2721 007032 1372 TAD (-"/!200) /COMPARE TO "/" 2722 007033 7640 SZA CLA /SKIP IF IT MATCHES 2723 007034 5771 JMP I (BADSPEC) /JUMP IF NOT 2724 007035 2026 ISZ GETNDX /BUMP TO NEXT 2725 007036 4510 JMS I TSPACE/[XTSPACE]/IGNORE AND 2726 007037 4454 JMS I NAME/[XNAME] /PARSE OFF A NAME 2727 007040 5771 JMP I (BADSPEC) /WASN'T A NAME 2728 2729 / NAME IS GOOD, SO ATTEMPT TO PROCESS IT AS A MULTI-CHARACTER OPTION. 2730 2731 007041 5770 JMP I (OPTGO) /CONTINUE THERE 2732 2733 / INPUT:I OPTION. 2734 2735 007042 4767 INSPEC, JMS I (GETUNIT) /GET THE UNIT NUMBER 2736 007043 3766 DCA I (INUNIT+PZ) /STASH IT 2737 007044 5224 JMP NXTOPT /GO DO NEXT 2738 2739 / MODE:M OPTION. 2740 2741 007045 4765 MODSPEC,JMS I (GETSPEC) /GET VALUE 2742 007046 4764 JMS I (VALMODE+PZ) /CHECK IF VALID MODE 2743 007047 7450 SNA /SKIP IF VALID MODE 2744 007050 5253 JMP MODEBAD /JUMP IF BAD MODE 2745 007051 3775 DCA I (MODE) /SAVE MODE TYPE 2746 007052 5224 JMP NXTOPT /KEEP GOING 2747 2748 007053 3216 MODEBAD,DCA BADMODE /INDICATE MODE ERROR 2749 007054 5763 JMP I (MEMCHK) /CONTINUE THERE 2750 / NAME:STRING OPTION. 2751 2752 007055 1362 NAMSPEC,TAD (STRBF2+PZ) /POINT TO 2753 007056 3131 DCA PUTBASE /STRING STORAGE 2754 007057 3060 DCA PUTNDX /CLEAR OUTPUT INDEX 2755 007060 4510 SMVLUP, JMS I TSPACE/[XTSPACE]/IGNORE AND 2756 007061 4504 JMS I GETHAF/[XGETHAF]/GET A CHARACTER 2757 007062 7440 SZA /SKIP IF 2758 007063 1372 TAD (-"/!200) /ELSE COMPARE TO "/" 2759 007064 7450 SNA /SKIP IF OTHER 2760 007065 5300 JMP STRFINISH /JUMP IF EITHER 2761 007066 7001 IAC /TAD (-".+"/)/COMPARE TO "." 2762 007067 7650 SNA CLA /SKIP IF OTHER 2763 007070 2344 ISZ PNTCNT /ELSE COUNT THIS ONE 2764 007071 4504 JMS I GETHAF/[XGETHAF]/GET THE CHARACTER 2765 007072 4532 JMS I PUTHAF/[XPUTHAF]/PUT IN STRING BUFFER 2766 007073 2026 ISZ GETNDX /BUMP INPUT INDEX 2767 007074 2060 ISZ PUTNDX /BUMP OUTPUT INDEX 2768 007075 2343 ISZ DANGER /TOO MANY CHARACTERS? 2769 007076 5260 JMP SMVLUP /NO, KEEP GOING 2770 007077 5763 JMP I (MEMCHK) /YES, FORGET IT 2771 2772 007100 4532 STRFINI,JMS I PUTHAF/[XPUTHAF]/ENSURE IN STRING BUFFER 2773 007101 4761 JMS I (PARTEST) /TEST IF WE ARE FIRST OPTION 2774 007102 7352 NL5777 /SETUP MASK 2775 007103 0760 AND I (SWMX) /REMOVE /N BIT 2776 007104 3760 OUTSENT,DCA I (SWMX) /STORE BACK OTHERS 2777 007105 5224 JMP NXTOPT /GO DO NEXT 2778 2779 / OUTPUT:O OPTION. 2780 2781 007106 4767 OUTSPEC,JMS I (GETUNIT) /GET THE UNIT NUMBER 2782 007107 3757 DCA I (OTUNIT+PZ) /STASH IT 2783 007110 4761 JMS I (PARTEST) /TEST IF WE ARE FIRST OPTION 2784 007111 1760 TAD I (SWMX) /GET SWITCHES /M-/X 2785 007112 0356 AND (6777) /REMOVE /O BIT 2786 007113 5304 JMP OUTSENTRY /CONTINUE THERE 2787 2788 / QUERY:Q OPTION. 2789 2790 007114 4765 QUESPEC,JMS I (GETSPEC) /GET THE VALUE 2791 007115 4755 JMS I (YORNO) /CHECK FOR YES/NO 2792 007116 3754 DCA I (QUERYSW+PZ) /STORE RESULT FOR LATER 2793 007117 3753 DCA I (TESTQ) /PREVENT /Q CHECK LATER 2794 007120 5224 JMP NXTOPT /GO DO NEXT 2795 / TYPE:T OPTION. 2796 2797 007121 4765 TYPSPEC,JMS I (GETSPEC) /GET THE VALUE 2798 007122 4752 JMS I (VALFTYPE+PZ) /CHECK FOR VALID FILE TYPE 2799 007123 7450 SNA /SKIP IF OK 2800 007124 5327 JMP BADTYP /JUMP IF NOT 2801 007125 3751 DCA I (FILTYPE+PZ) /STORE FILE TYPE 2802 007126 5224 JMP NXTOPT /GO DO NEXT 2803 2804 007127 3220 BADTYP, DCA TYPBAD /INDICATE BAD TYPE 2805 007130 5763 JMP I (MEMCHK) /CONTINUE THERE 2806 2807 / UNIT:U OPTION. 2808 2809 007131 4767 UNISPEC,JMS I (GETUNIT) /GET THE UNIT NUMBER 2810 007132 3750 DCA I (UNIT+PZ) /STASH IT 2811 007133 4761 JMS I (PARTEST) /CHECK IF FIRST OPTION 2812 007134 1760 TAD I (SWMX) /GET SWITCHES /M-/X 2813 007135 0347 AND (7767) /REMOVE /U BIT 2814 007136 5304 JMP OUTSENTRY /CONTINUE THERE 2815 2816 / VERIFY:V OPTION. 2817 2818 007137 4765 VERSPEC,JMS I (GETSPEC) /GET THE VALUE 2819 007140 4755 JMS I (YORNO) /CHECK FOR YES/NO 2820 007141 3746 DCA I (VERSW+PZ) /STASH THE VALUE 2821 007142 5224 JMP NXTOPT /GO DO NEXT 2822 2823 007143 7733 DANGER, -STRLENGTH-1 /DANGER COUNT FOR STRING LENGTH 2824 007144 3776 PNTCNT, 4000-2 /DANGER COUNT FOR "." CHARACTERS 2825 007146 2654 PAGE 007147 7767 007150 2650 007151 2624 007152 6400 007153 7243 007154 2643 007155 5504 007156 6777 007157 2640 007160 7605 007161 5477 007162 6127 007163 7211 007164 6424 007165 5451 007166 2631 007167 5463 007170 5422 007171 7200 007172 7721 007173 7204 007174 7201 007175 7554 007176 7604 007177 6130 2826 / COMES HERE ON ALL COMMAND FORMAT ERRORS. 2827 2828 007200 3777 BADSPEC,DCA I (BADNESS) /INDICATE WE WILL EVENTUALLY COMPLAIN 2829 007201 1776 TSTEIK, TAD I (SWAL) /GET SWITCHES /A-/L 2830 007202 0375 AND (212) /JUST /E, /I, /K BITS 2831 007203 7640 SZA CLA /SKIP IF NONE SET 2832 007204 7240 GOTONE, NL7777 /SET INVOKED MODE VALUE 2833 007205 3774 DCA I (IMSW) /STORE THE INVOKED MODE SWITCH 2834 007206 1123 TSTESC, TAD COLUMN /GET MONITOR'S COLUMN COUNTER 2835 007207 7440 SZA /SKIP IF AT NEW LINE 2836 007210 3773 DCA I (DONEZAP+PZ) /ACTIVE TERMINATOR MEANS ONCE ONLY 2837 007211 1570 MEMCHK, TAD I PSCRSIZE/[SCRSIZE] /GET SOFTWARE CORE SIZE WORD 2838 007212 0372 AND (70) /JUST LCS BITS 2839 007213 7650 SNA CLA /SKIP IF SOME AVAILABLE 2840 007214 5217 JMP TESTC /JUMP IF NOT 2841 007215 4771 GOT6K, JMS I (ZAP6K) /SETUP FOR 6K OPERATION 2842 007216 5237 JMP TESTS /CONTINUE THERE 2843 2844 007217 1776 TESTC, TAD I (SWAL) /GET SWITCHES /A-/L 2845 007220 7006 RTL /MOVE /C BIT TO AC[0] 2846 007221 7700 SMA CLA /SKIP IF /C BIT SET 2847 007222 5237 JMP TESTS /JUMP IF NOT 2848 007223 1570 TAD I PSCRSIZE/[SCRSIZE] /GET SOFTWARE CORE SIZE WORD AGAIN 2849 007224 0370 AND (700) /JUST MCS BITS 2850 007225 7640 SZA CLA /SKIP IF NO MORE MEMORY THERE 2851 007226 5215 JMP GOT6K /JUMP IF ANY MORE 2852 007227 7326 NL0002 /SETUP THE "C" BIT MASK 2853 007230 0570 AND I PSCRSIZE/[SCRSIZE] /GET THE BIT 2854 007231 7640 SZA CLA /SKIP IF CONSOLE NOT PRESENT 2855 007232 5237 JMP TESTS /JUMP IF CONSOLE PRESENT 2856 007233 1570 TAD I PSCRSIZE/[SCRSIZE] /GET THE SOFTWARE CORE SIZE WORD AGAIN 2857 007234 0150 AND CATCORE/[7000] /JUST PCS BITS 2858 007235 7640 SZA CLA /SKIP IF 4K MACHINE 2859 007236 5215 JMP GOT6K /JUMP IF SOME MEMORY AVAILABLE 2860 007237 1767 TESTS, TAD I (SWMX) /GET SWITCHES /M-/X 2861 007240 0046 AND L40/[40] /JUST /S BIT 2862 007241 7640 SZA CLA /SKIP IF NOT SET 2863 007242 3773 DCA I (DONEZAP+PZ) /CAUSE SINGLE RUN 2864 007243 1767 TESTQ, TAD I (SWMX) /**** /QUERY:Q FOUND **** 0000 2865 007244 0105 AND L200/[200] /JUST /Q BIT 2866 007245 7650 SNA CLA /SKIP IF SET 2867 007246 5251 JMP TESTN /JUMP IF NOT 2868 007247 7240 NL7777 /SETUP QUERY VALUE 2869 007250 3766 DCA I (QUERYSW+PZ) /STASH IT FOR LATER 2870 007251 7332 TESTN, NL2000 /SETUP /N BIT MASK 2871 007252 0767 AND I (SWMX) /GET /N BIT 2872 007253 7650 SNA CLA /SKIP IF SET 2873 007254 5257 JMP MOVMAN /JUMP IF NOT 2874 007255 7201 NL0001 /GET NO-VERIFY VALUE 2875 007256 3765 DCA I (VERSW+PZ) /STASH IT FOR LATER 2876 007257 1744 MOVMAN, TAD I FROMPTR /GET A WORD 2877 007260 3746 DCA I TOPTR /PUT A WORD 2878 007261 2344 ISZ FROMPTR /BUMP TO NEXT 2879 007262 2346 ISZ TOPTR /BUMP TO NEXT 2880 007263 2345 ISZ MOVCNT /DONE YET? 2881 007264 5257 JMP MOVMAN /NO, KEEP GOING 2882 007265 1767 TESTU, TAD I (SWMX) /GET SWITCHES /M-/X 2883 007266 0072 AND L10A/[10] /JUST /U BIT 2884 007267 7650 SNA CLA /SKIP IF SET 2885 007270 5276 JMP UNOT /JUMP IF NOT SET 2886 007271 1061 TAD L7600A/[CLA!400]/GET CLA INSTRUCTION 2887 007272 3764 DCA I (CASZP1) /PREVENT LOWER-CASE 2888 007273 1061 TAD L7600A/[CLA!400]/GET CLA INSTRUCTION 2889 007274 3763 DCA I (CASZP2) /PREVENT LOWER-CASE 2890 007275 5300 JMP TESTB /CONTINUE THERE 2891 2892 007276 1066 UNOT, TAD L7400/[NOP!400] /GET NOP INSTRUCTION 2893 007277 3762 DCA I (GCMZAP) /ALLOW LOWER-CASE 2894 007300 7332 TESTB, NL2000 /SET /B BIT MASK 2895 007301 0776 AND I (SWAL) /GET /B BIT 2896 007302 7650 SNA CLA /SKIP IF SET 2897 007303 3761 DCA I (BZAP) /ELSE USE SCREEN RUBOUT 2898 007304 1760 TESTY, TAD I (SWY9) /GET SWITCHES /Y-/9 2899 007305 7710 SPA CLA /SKIP IF /Y NOT SET 2900 007306 3757 DCA I (YZAP) /PREVENT "ARE YOU SURE? " SEQUENCE 2901 007307 1461 TAD I L7600A/[SBOOT] /GET BOOTSTRAP INSTRUCTION 2902 007310 1356 TAD (-JMSSYSIO) /COMPARE TO POSSIBLE VALUE 2903 007311 7650 SNA CLA /SKIP IF DIFFERENT 2904 007312 5316 JMP CHKCOVRLAY /JUMP IF IT MATCHES 2905 007313 2071 ISZ CHKKRS /TURN "KRSIOT" 2906 007314 2071 ISZ CHKKRS /INTO "KRBIOT" 2907 007315 3102 DCA CHKKCC /DESTROY "KCCIOT" 2908 007316 7326 CHKCOVR,NL0002 /SET "C" BIT MASK 2909 007317 0435 AND I LSCRSIZ/[SCRSIZ]/GET THE "C" BIT 2910 007320 7650 SNA CLA /SKIP IF SET 2911 007321 5755 JMP I (CHKERRORS) /JUMP IF NOT 2912 007322 1435 TAD I LSCRSIZ/[SCRSIZ]/GET CORE SIZE WORD AGAIN 2913 007323 7012 RTR;RAR /MOVE OVER AND 007324 7010 2914 007325 0372 AND (70) /ISOLATE MCS BITS 2915 007326 1354 TAD (CIF 10) /FORM "CIF MCS+10" 2916 007327 3056 DCA P7TSF /STORE OVER "TSFIOT" 2917 007330 1057 TAD P7JMP /GET "JMP I P7OUT" 2918 007331 3060 DCA P7TLS /STORE OVER "TLSIOT" 2919 007332 1353 TAD (JMS OUTCON) /GET OUTPUT CALL 2920 007333 3057 DCA P7JMP /STORE OVER "JMP I P7OUT" 2921 007334 1056 TAD P7TSF /GET "CIF MCS+10" 2922 007335 3067 DCA CHKKSF /STORE OVER "KSFIOT" 2923 007336 1070 TAD CHKJMP /GET "JMP I CTLCTST" 2924 007337 3071 DCA CHKKRS /STORE OVER "KRSIOT" OR "KRBIOT" 2925 007340 1352 TAD (JMS INCON) /GET INPUT CALL 2926 007341 3070 DCA CHKJMP /STORE OVER "JMP I CTLCTST" 2927 007342 3102 DCA CHKKCC /DESTROY "KCCIOT" 2928 007343 5755 JMP I (CHKERRORS) /CONTINUE THERE 2929 007344 2600 FROMPTR,PZ /WHERE FILMAN IS NOW 2930 007345 3600 MOVCNT, -RESEND /COUNT OF WORDS TO MOVE 2931 007346 0000 TOPTR, 0000 /WHERE FILMAN GOES 2932 2933 007352 4031 PAGE 007353 4033 007354 6212 007355 7400 007356 3540 007357 1751 007360 7606 007361 0477 007362 0421 007363 1727 007364 1665 007365 2654 007366 2643 007367 7605 007370 0700 007371 5521 007372 0070 007373 4535 007374 5536 007375 0212 007376 7604 007377 7017 2934 007400 1777 CHKERRO,TAD I (BADNESS) /GET BADNESS INDICATOR 2935 007401 7640 SZA CLA /SKIP IF BAD 2936 007402 5205 JMP CHKUNIT /JUMP IF NOT 2937 007403 4776 JMS I (CSCRIBE) /GO COMPLAIN OF 2938 007404 5302 IPMSG /INVALID PARAMETERS 2939 2940 007405 7344 CHKUNIT,NL7776 /-2 2941 007406 1354 UNITEMP,TAD MODE /COMPARE TO MODE 2942 007407 7710 SPA CLA /SKIP IF KILL OR EMPTY 2943 007410 5323 JMP COPCHK /JUMP IF MIGHT BE COPY 2944 007411 1031 TAD INUNIT /GET INPUT UNIT 2945 007412 1040 TAD OTUNIT /GET OUTPUT UNIT 2946 007413 7620 SNL CLA /SKIP IF BOTH ARE DEFAULTED 2947 007414 5331 JMP UNICONFLICT /JUMP IF AT LEAST ONE WAS SPECIFIED 2948 007415 1775 UNITOK, TAD I (SBTFUN) /GET BOOTSTRAP UNIT WORD 2949 007416 0005 AND L7/[7] /JUST UNIT BITS 2950 007417 1374 TAD (4000) /ADD ON INVERSION BIT 2951 007420 3206 DCA UNITEMP /STASH IT FOR NOW 2952 007421 1031 TAD INUNIT /GET INPUT UNIT 2953 007422 1206 TAD UNITEMP /ADD ON SYSTEM UNIT 2954 007423 7500 SMA /SKIP IF UNIT WAS SPECIFIED 2955 007424 3031 DCA INUNIT /ELSE STORE DEFAULT INPUT UNIT 2956 007425 7200 CLA /CLEAN UP 2957 007426 1206 TAD UNITEMP /GET SYSTEM UNIT 2958 007427 7110 CLL RAR /MOVE OVER 2959 007430 7024 CML RAL /INVERT AND MOVE BACK 2960 007431 3206 DCA UNITEMP /SAVE FOR LATER 2961 007432 1040 TAD OTUNIT /GET OUTPUT UNIT 2962 007433 1206 TAD UNITEMP /ADD ON XOR-ED SYSTEM UNIT 2963 007434 7500 SMA /SKIP IF UNIT WAS SPECIFIED 2964 007435 3040 DCA OTUNIT /ELSE STORE DEFAULT OUTPUT UNIT 2965 007436 7200 CLA /CLEAN UP 2966 007437 1050 TAD UNIT /GET KILL/EMPTY UNIT 2967 007440 1206 TAD UNITEMP /ADD ON XOR-ED SYSTEM UNIT 2968 007441 7500 SMA /SKIP IF UNIT WAS SPECIFIED 2969 007442 3050 DCA UNIT /ELSE STORE DEFAULT KILL/EMPTY UNIT 2970 007443 7200 CLA /CLEAN UP 2971 007444 1773 TAD I (BADMODE) /GET BAD MODE INDICATOR 2972 007445 7640 SZA CLA /SKIP IF BAD 2973 007446 5251 JMP CHKTYP /JUMP IF OK 2974 007447 4776 JMS I (CSCRIBE) /GO COMPLAIN OF 2975 007450 5233 BDMDMSG /BAD MODE 2976 2977 007451 1772 CHKTYP, TAD I (TYPBAD) /GET BAD TYPE INDICATOR 2978 007452 7640 SZA CLA /SKIP IF BAD 2979 007453 5256 JMP CHKUNT /JUMP IF OK 2980 007454 4776 JMS I (CSCRIBE) /GO COMPLAIN OF 2981 007455 5340 TYBDMSG /BAD TYPE 2982 2983 007456 1771 CHKUNT, TAD I (UNIBARF) /GET BAD UNIT INDICATOR 2984 007457 7640 SZA CLA /SKIP IF BAD 2985 007460 5263 JMP CHKYNO /JUMP IF OK 2986 007461 4776 JMS I (CSCRIBE) /GO COMPLAIN OF 2987 007462 5246 BDUNMSG /BAD UNIT VALUE 2988 007463 1770 CHKYNO, TAD I (YNOBAD) /GET BAD YES/NO INDICATOR 2989 007464 7640 SZA CLA /SKIP IF BAD 2990 007465 5270 JMP CHKDANGER /JUMP IF OK 2991 007466 4776 JMS I (CSCRIBE) /GO COMPLAIN OF 2992 007467 5261 BDYNMSG /BAD YES/NO VALUE 2993 2994 007470 1767 CHKDANG,TAD I (DANGER) /GET DANGER INDICATOR 2995 007471 7710 SPA CLA /SKIP IF TOO BIG 2996 007472 5275 JMP CHKPNTS /JUMP IF OK 2997 007473 4776 JMS I (CSCRIBE) /GO COMPLAIN OF 2998 007474 5317 STLMSG /STRING LENGTH ERROR 2999 3000 007475 1766 CHKPNTS,TAD I (PNTCNT) /GET "." COUNTER 3001 007476 7700 SMA CLA /SKIP IF TOO MANY OF THEM 3002 007477 5302 JMP TESTO /JUMP IF OK 3003 007500 4776 JMS I (CSCRIBE) /GO COMPLAIN OF 3004 007501 4007 DPERR /TOO MANY POINTS 3005 3006 007502 1024 TESTO, TAD FILTYPE /GET FILE TYPE 3007 007503 0365 AND (1000) /JUST INITIAL CONDITION BIT 3008 007504 7450 SNA /SKIP IF SET 3009 007505 5313 JMP CHKSTART /JUMP IF NOT 3010 007506 0764 AND I (SWMX) /GET /O BIT 3011 007507 7650 SNA CLA /SKIP IF /O BIT SET 3012 007510 5313 JMP CHKSTART /JUMP IF NOT 3013 007511 1363 TAD (6003) /SET OVERRIDE VALUE 3014 007512 3024 DCA FILTYPE /STORE AS NEW FILE TYPE 3015 007513 1762 CHKSTAR,TAD I (SFUN) /GET OUR LOAD FUNCTION WORD 3016 007514 0005 AND L7/[7] /JUST UNIT BITS 3017 007515 1761 TAD I (RESFUN) /ADD ON FUNCTION BITS 3018 007516 3761 DCA I (RESFUN) /STORE COMPOSITE 3019 007517 1760 TAD I (SBLOCK) /GET OUR LOAD BLOCK 3020 007520 1757 TAD I (RESBLK) /ADD ON OVERLAY OFFSET 3021 007521 3757 DCA I (RESBLK) /STORE COMPOSITE 3022 007522 5756 JMP I (STARTIT) /CONTINUE THERE 3023 3024 / COMES HERE IF CHECKING FOR COPY MODE CONFLICTS, ETC. 3025 3026 007523 1354 COPCHK, TAD MODE /GET THE OPERATION MODE 3027 007524 7710 SPA CLA /SKIP IF COPY 3028 007525 5215 JMP UNITOK /JUMP IF QUIT "MODE" 3029 007526 1050 TAD UNIT /GET KILL/EMPTY UNIT 3030 007527 7710 SPA CLA /SKIP IF NOT DEFAULTED 3031 007530 5215 JMP UNITOK /JUMP IF STILL UNTOUCHED 3032 007531 4776 UNICONF,JMS I (CSCRIBE) /GO COMPLAIN OF 3033 007532 5356 UCONMSG /MODE/UNIT CONFLICT 3034 / MULTI-CHARACTER OPTION DISPATCH TABLE. 3035 3036 007533 6662 SPECS, -"I^100-"N+300; INSPEC /INPUT 007534 7042 3037 007535 6261 -"M^100-"O+300; MODSPEC /MODE 007536 7045 3038 007537 6177 -"N^100-"A+300; NAMSPEC /NAME 007540 7055 3039 007541 6053 -"O^100-"U+300; OUTSPEC /OUTPUT 007542 7106 3040 007543 5653 -"Q^100-"U+300; QUESPEC /QUERY 007544 7114 3041 007545 5347 -"T^100-"Y+300; TYPSPEC /TYPE 007546 7121 3042 007547 5262 -"U^100-"N+300; UNISPEC /UNIT 007550 7131 3043 007551 5173 -"V^100-"E+300; VERSPEC /VERIFY 007552 7137 3044 007553 0000 0 /THIS ENDS THE LIST 3045 3046 007554 0000 MODE, .-. /PROGRAM MODE 3047 3048 007556 5400 PAGE 007557 0370 007560 7635 007561 0367 007562 7634 007563 6003 007564 7605 007565 1000 007566 7144 007567 7143 007570 7022 007571 7021 007572 7020 007573 7016 007574 4000 007575 7602 007576 5443 007577 7017 3049 *OCBUFFER+PZ /OVER UNUSED SPACE 3050 3051 / ONCE-ONLY TEXT MESSAGES. 3052 3053 / ANNOUNCEMENT MESSAGE. 3054 3055 005200 4536 BLURB, TEXT "%^P?S/8 F^ILE ^M^AINTAINENCE" /ANNOUNCEMENT MESSAGE 005201 2077 005202 2357 005203 7040 005204 0636 005205 1114 005206 0540 005207 3615 005210 3601 005211 1116 005212 2401 005213 1116 005214 0516 005215 0305 3056 005216 4036 TEXT " ^U^TILITY ^V^ERSION" /CONTINUATION OF MESSAGE 005217 2536 005220 2411 005221 1411 005222 2431 005223 4036 005224 2636 005225 0522 005226 2311 005227 1716 3057 005230 4061 VERSION%12+4060 / 3058 005231 6001 VERSION%12^12^7777+VERSION+"0^100+REVISION / 3059 005232 4500 TEXT "%" /THIS ENDS THE MESSAGE 3060 3061 / FATAL ERROR MESSAGES. 3062 3063 005233 4536 BDMDMSG,TEXT "%^I^MPROPER ^M^ODE!%^" /IMPROPER MODE MESSAGE 005234 1136 005235 1520 005236 2217 005237 2005 005240 2240 005241 3615 005242 3617 005243 0405 005244 4145 005245 3600 3064 005246 4536 BDUNMSG,TEXT "%^I^MPROPER ^U^NIT!%^" 005247 1136 005250 1520 005251 2217 005252 2005 005253 2240 005254 3625 005255 3616 005256 1124 005257 4145 005260 3600 3065 005261 4536 BDYNMSG,TEXT "%^Y^ES/^N^O ^V^ALUE ^R^EQUIRED!%^" 005262 3136 005263 0523 005264 5736 005265 1636 005266 1740 005267 3626 005270 3601 005271 1425 005272 0540 005273 3622 005274 3605 005275 2125 005276 1122 005277 0504 005300 4145 005301 3600 3066 005302 4536 IPMSG, TEXT "%^I^NVALID ^P^ARAMETER!%^" 005303 1136 005304 1626 005305 0114 005306 1104 005307 4036 005310 2036 005311 0122 005312 0115 005313 0524 005314 0522 005315 4145 005316 3600 3067 005317 4536 STLMSG, TEXT "%^S^EARCH ^S^TRING ^T^OO ^L^ONG!%" 005320 2336 005321 0501 005322 2203 005323 1040 005324 3623 005325 3624 005326 2211 005327 1607 005330 4036 005331 2436 005332 1717 005333 4036 005334 1436 005335 1716 005336 0741 005337 4500 3068 005340 4536 TYBDMSG,TEXT "%^I^MPROPER ^F^ILE ^T^YPE!%" 005341 1136 005342 1520 005343 2217 005344 2005 005345 2240 005346 3606 005347 3611 005350 1405 005351 4036 005352 2436 005353 3120 005354 0541 005355 4500 3069 005356 4536 UCONMSG,TEXT "%^U^NIT AND ^M^ODE ^C^ONFLICT!%" 005357 2536 005360 1611 005361 2440 005362 0116 005363 0440 005364 3615 005365 3617 005366 0405 005367 4036 005370 0336 005371 1716 005372 0614 005373 1103 005374 2441 005375 4500 3070 PAGE 3071 3072 / COMES HERE TO FINISH ONCE-ONLY CODE. 3073 3074 005400 2336 STARTIT,ISZ IMSW /INVOKED MODE? 3075 005401 5217 JMP RESMODE /NO, USE RESPONSE MODE 3076 005402 1777 TAD I (MODE) /GET THE MODE 3077 005403 7510 SPA /SKIP IF NOT "QUIT" 3078 005404 5461 JMP I L7600A/[SBOOT] /LEAVE IF "QUIT" MODE 3079 005405 1213 TAD COMTABLE/(JMP I COMTABL)/TURN INTO TABLE JUMP 3080 005406 3213 DCA COMTABLE /STORE IN-LINE 3081 005407 1414 SMOVLUP,TAD I ICBLK /GET A WORD FROM TEMPORARY BUFFER 3082 005410 3415 DCA I OCBLK /STORE IN STRING BUFFER 3083 005411 2337 ISZ STMCNT /DONE ALL YET? 3084 005412 5207 JMP SMOVLUP /NO, KEEP GOING 3085 005413 5613 COMTABL,JMP I COMTABLE+.-. /WILL BE PROPER JUMP 3086 005414 3047 DOCOPY /POINTER TO INVOKED COPY ROUTINE 3087 005415 3200 DOKILL /POINTER TO INVOKED KILL ROUTINE 3088 005416 3061 DOEMPTY /POINTER TO INVOKED EMPTY ROUTINE 3089 3090 005417 4442 RESMODE,JMS I PSCRIBE/[SCRIBE] /GIVE THEM 3091 005420 5200 BLURB /ANNOUNCEMENT MESSAGE 3092 005421 5776 JMP I (FMRES2) /CONTINUE THERE 3093 3094 / ONCE-ONLY SUPPORT ROUTINES. USED WITH KEYBOARD MONITOR PRESENT. 3095 3096 / MULTI-CHARACTER OPTION DISPATCH ROUTINE. 3097 3098 005422 1375 OPTGO, TAD (SPECS-2) /POINT TO PARAMETER LIST 3099 005423 3016 DCA XR1 /STASH THE POINTER 3100 005424 2016 CMDLUP, ISZ XR1 /BUMP PAST ROUTINE ADDRESS 3101 005425 1416 TAD I XR1 /GET A TRIAL VALUE 3102 005426 7450 SNA /SKIP IF NOT END OF LIST 3103 005427 5774 JMP I (BADSPEC) /JUMP IF END OF LIST 3104 005430 1100 TAD TEMP1 /COMPARE TO OPTION 3105 005431 7640 SZA CLA /SKIP IF IT MATCHES 3106 005432 5224 JMP CMDLUP /JUMP IF NOT 3107 005433 1416 TAD I XR1 /GET THE ADDRESS 3108 005434 3277 DCA PARTEST /SET IT UP 3109 005435 4504 JMS I GETHAF/[XGETHAF] /GET THE DELIMITER 3110 005436 1373 TAD (-":!200) /COMPARE TO ":" 3111 005437 7640 SZA CLA /SKIP IF IT MATCHES 3112 005440 5774 JMP I (BADSPEC) /JUMP IF NOT 3113 005441 2026 ISZ GETNDX /BUMP PAST ":" 3114 005442 5677 JMP I PARTEST /GO PROCESS LATEST OPTION 3115 005443 0000 CSCRIBE,.-. /CONSOLE-ORIENTED PRINT ROUTINE 3116 005444 1643 TAD I CSCRIBE /GET OUR PASSED ARGUMENT 3117 005445 3772 DCA I (SBOOT-1) /STORE IN CURIOUS PLACE 3118 005446 1372 TAD (SBOOT-1) /POINT TO CURIOUS PLACE 3119 005447 3442 DCA I PSCRIBE/[SCRIBE]/SO IT WILL USE IT 3120 005450 5771 JMP I (SCRIBE+1) /CONTINUE THERE 3121 3122 005451 0000 GETSPEC,.-. /GET AN OPTION VALUE ROUTINE 3123 005452 4510 JMS I TSPACE/[XTSPACE]/IGNORE AND 3124 005453 4454 JMS I NAME/[XNAME] /PARSE OFF ENTIRE NAME 3125 005454 5774 JMP I (BADSPEC) /WASN'T A NAME 3126 005455 1100 TAD TEMP1 /GET FIRST PAIR 3127 005456 7012 RTR;RTR;RTR /WANT LEFT HALF 005457 7012 005460 7012 3128 005461 0103 AND L77/[77] /JUST ONE CHARACTER 3129 005462 5651 JMP I GETSPEC /RETURN 3130 3131 005463 0000 GETUNIT,.-. /GET UNIT NUMBER ROUTINE 3132 005464 4510 JMS I TSPACE/[XTSPACE]/IGNORE AND 3133 005465 4504 JMS I GETHAF/[XGETHAF]/GET A CHARACTER 3134 005466 2026 ISZ GETNDX /BUMP TO NEXT 3135 005467 1370 TAD (-"8!200) /ADD ON UPPER LIMIT 3136 005470 7100 CLL /CLEAR LINK FOR TEST 3137 005471 1174 TAD L10/("8-"0) /ADD ON RANGE 3138 005472 7430 SZL /SKIP IF BAD 3139 005473 5663 JMP I GETUNIT /RETURN WITH GOOD VALUE 3140 005474 7200 CLA /CLEAN UP 3141 005475 3767 DCA I (UNIBARF) /INDICATE UNIT PROBLEM 3142 005476 5766 JMP I (MEMCHK) /CONTINUE THERE 3143 3144 005477 0000 PARTEST,.-. /PARSE POSITION TEST 3145 005500 1765 TAD I (PARSW) /GET CURRENT VALUE 3146 005501 7640 SZA CLA /SKIP IF FIRST 3147 005502 5764 JMP I (NXTOPT) /GO DO NEXT OPTION IF NOT FIRST 3148 005503 5677 JMP I PARTEST /RETURN IF FIRST 3149 3150 005504 0000 YORNO, .-. /TEST FOR YES/NO ROUTINE 3151 005505 1363 TAD (-"Y!300) /COMPARE TO "Y" 3152 005506 7440 SZA /SKIP IF IT MATCHES 3153 005507 5312 JMP TESTNO /JUMP IF NOT 3154 005510 7240 LNL7777,NL7777 /INDICATE "YES" 3155 005511 5704 JMP I YORNO /RETURN 3156 3157 005512 1362 TESTNO, TAD (-"N+"Y) /COMPARE TO "N" 3158 005513 7640 SZA CLA /SKIP IF IT MATCHES 3159 005514 5317 JMP BADYN /JUMP IF NOT 3160 005515 7201 NL0001 /INDICATE "NO" 3161 005516 5704 JMP I YORNO /RETURN 3162 3163 005517 3761 BADYN, DCA I (YNOBAD) /INDICATE PROBLEM 3164 005520 5766 JMP I (MEMCHK) /CONTINUE THERE 3165 005521 0000 ZAP6K, .-. /6K OPERATION ROUTINE 3166 005522 1113 TAD L7600/[CLA!400] /SETUP THE 6K 3167 005523 3760 DCA I (I6KZAP+PZ) /INPUT FILE ROUTINE 3168 005524 1357 TAD (20^100+10) /SETUP THE 3169 005525 3756 DCA I (VERARG+PZ) /VERIFY ARGUMENT WORD 3170 005526 1310 TAD LNL7777/(NL7777)/SETUP THE 3171 005527 3755 DCA I (V6KZP1+PZ) /BLOCK COUNTER 3172 / TAD (VERBUFFER) /SETUP THE VERIFY 3173 005530 3754 DCA I (VERCORE+PZ) /BUFFER ARGUMENT 3174 005531 1353 TAD (NL4000) /SETUP THE 3175 005532 3752 DCA I (V6KZP2+PZ) /COMPARE COUNTER 3176 005533 1351 TAD (CDF 10) /SETUP THE 3177 005534 3750 DCA I (VERLUP+PZ) /COMPARE LOOP 3178 005535 5721 JMP I ZAP6K /RETURN 3179 3180 005536 0000 IMSW, .-. /INVOKED MODE SWITCH; -1=INVOKED MODE OPERATION 3181 005537 7755 STMCNT, -STRLENGTH%2!4000-1 /STRING MOVE COUNT 3182 3183 005550 3120 PAGE 005551 6211 005552 3116 005553 7330 005554 3113 005555 3106 005556 2652 005557 2010 005560 4016 005561 7022 005562 0013 005563 7747 005564 7024 005565 7026 005566 7211 005567 7021 005570 7710 005571 1660 005572 7577 005573 7706 005574 7200 005575 7531 005576 3000 005577 7554 3184 *7400 /WHERE THIS GOES 3185 3186 IFNZRO 7400-. 3187 STACK, *STRLENGTH^3+. /PUSHDOWN STACK 3188 3189 STRBUFF,*STRLENGTH%2+1+. /SEARCH STRING BUFFER 3190 3191 STREND= . /END OF SEARCH STRING BUFFER 3192 3193 $ /THAT'S ALL FOLK! ASKRAR 1566 ASKRET 1561 ASMSG 2200 BACKSP 0475 BADCAT 3137 BADIGI 3556 BADMOD 7016 BADNES 7017 BADSPE 7200 BADTYP 7127 BADYN 5517 BBRKMS 1762 BDCTMS 3704 BDIGMS 3717 BDMDMS 5233 BDTPMS 3736 BDTYPE 3530 BDUNMS 5246 BDYNMS 5261 BLKCNT 0000 BLURB 5200 BNMSG 2203 BUFPTR 0020 BZAP 0477 CASZP1 1665 CASZP2 1727 CATADR 7000 CATCOR 0150 CATFLM 2206 CATMOV 3213 CATMVL 3224 CATSET 3243 CHAR 0021 unreferenced CHKCLR 1154 CHKCOV 7316 CHKDAN 7470 CHKDON 0364 CHKERR 7400 CHKJMP 0070 CHKKCC 0102 CHKKRS 0071 CHKKSF 0067 CHKNAM 2046 CHKPNT 7475 CHKSTA 7513 CHKTYP 7451 CHKUNI 7405 CHKUNT 7456 CHKUP 1122 CHKYNO 7463 CHTBL 3650 CKZADR 3314 CKZAP 3251 CKZAP1 0214 CKZAP2 0231 CKZAP3 0252 CKZAP4 0352 CKZAP5 0363 CKZPLU 3256 CLSMSG 3754 CMDLUP 5424 CMDSUB 0527 CNOWMS 3756 COLUMN 0123 COMTAB 5413 COPCHK 7523 COPFIL 0263 COPYMS 2221 COPYZA 3307 CREXIT 3575 CRLF 1266 CSCRIB 5443 CTLCTS 0064 CURMSG 4000 DANGER 7143 DEC2 1317 DECLUP 1301 DECNO 1325 DECOUT 1310 DECPRT 1274 DECXIT 1322 DELETL 0454 DIR 0015 DOCENT 3210 DOCOPY 3047 DOEMPL 3064 DOEMPT 3061 DOKILL 3200 DONECH 1734 DONEZA 1735 DOSETU 3266 DOSTAR 2061 DOUP 1145 DPERR 4007 EMPDON 3135 EOFCHK 1045 ESCAPS 0022 FCNT 0023 FCPRT 1330 FILBEG 3000 FILCLO 0350 FILELU 0200 FILMAN 7000 unreferenced FILMSG 2226 FILOK 0736 FILTER 2000 FILTYP 0024 FILUP2 0201 FINDEX 2166 FLAGS 0001 FLCPMS 2232 FLDCHK 1051 FLKLMS 2244 FMASK 0032 FMRES2 3000 FMRES3 3001 FNAMLP 1064 FNAMPR 1057 FNDZER 0721 FNM1 0002 FNM2 0003 FNM3 0004 FNMLEN 0006 FROMPT 7344 FRSTSW 0011 GBTEMP 0555 GCHKPN 3453 GCMBEE 0440 GCMEND 0547 GCMLUP 0534 GCMZAP 0421 GETADV 3451 GETALP 3302 GETBUF 0400 GETHAF 0104 GETHAL 1337 GETINP 0411 GETNAM 3400 GETNDX 0026 GETNEN 3461 GETNMC 2113 GETNME 3427 GETNML 3410 GETSPE 5451 GETUNI 5463 GETYPE 3463 GNIFIL 1200 GOCHOL 1400 GOT6K 7215 GOTC 3646 GOTCR 0444 GOTE 3622 GOTEMP 3644 GOTESC 0443 GOTHT 0425 GOTINP 0412 GOTK 3645 GOTO 3621 GOTONE 7204 GOTQ 3643 GPOINT 3416 GRESTA 0406 GRPCNT 0006 GRPLUP 1025 GTBASE 0025 GTBFAR 3543 GTINDX 0026 GTUAGN 3541 GTUNIT 3535 HARDRU 0507 I6KZAP 1216 ICBLK 0014 ICFUN 1362 ICFUN2 1234 ICHOLE 1257 ICIN 1261 ICLODE 1354 ICLOOP 1214 ICOK 1240 ICSW 0027 IDCHEC 1075 ILLMSG 4044 IMSW 5536 INARMS 4046 INBLK 0221 INCHAR 0030 INCON 0031 INFUN 0220 INPMSG 4051 INPUT 1651 INSPEC 7042 INUNIT 0031 IPMSG 5302 ISNO 1645 ISYES 1642 JMPC 5200 JMSC 4200 JMSSYS 4240 KCCIOT 6032 KEYCOD 6030 KILCOM 0336 KILLMS 2256 KILLZA 3322 KRBIOT 6036 unreferenced KRSIOT 6034 KSFIOT 6031 L10 0174 L10A 0072 L177 0010 L200 0105 L40 0046 L7 0005 L7400 0066 L7600 0113 L7600A 0061 L77 0103 L7700 0065 L7710 3566 L7770 3672 LATLIN 0033 LATNUM 0034 LFVIEW 0461 LINFIN 3562 LNL777 5510 LSCRSI 0035 MATQEN 2044 MATSW 2167 MBADMS 4057 MEMCHK 7211 MODE 7554 MODEBA 7053 MODEBD 3023 MODMSG 4071 MODSPE 7045 MOVCNT 7345 MOVMAN 7257 MPTMSG 3766 MTEOCA 3072 MTMSG 4076 NAME 0054 NAMMSG 4106 NAMSPE 7055 NEWGRP 1020 NEWREC 1016 NL0001 7201 NL0002 7326 NL2000 7332 NL3777 7350 NL4000 7330 NL5777 7352 NL7775 7346 NL7776 7344 NL7777 7240 NOMAT1 1445 NOMAT2 1446 NOMAT3 1447 NOMATC 2111 NOMSG 1764 NONMSG 1365 NOQUER 0244 NOREAD 0222 NOT1 0232 NOTASC 0762 NOVERI 0340 NUMLUP 0640 NUMPTR 0036 NXTOPT 7024 NXTWRD 1034 OCBDMS 2263 OCBLK 0015 OCBUFF 2400 OCBUFP 1516 OCEND 1453 OCFIX 1600 OCFLP1 1601 OCFLP2 1603 OCFLP3 1606 OCFNEX 1623 OCFUN 1411 OCFUN2 1517 OCFUN3 1531 OCIN 1415 OCLOSE 1505 OCNXTS 1455 OCSLOT 1473 OCSRCH 1421 OCSW 0037 OCVBFP 1530 OCVBUF 4200 OCWRIT 1515 OKMSG 2300 OMBMSG 4113 OPTGO 5422 OPTPTR 3345 OPYMSG 4117 OTUNIT 0040 OUTAGN 0267 OUTBLK 0273 OUTCON 0033 OUTFUL 0346 OUTFUN 0272 OUTPMS 4121 OUTSEN 7104 OUTSPE 7106 P7AGN 1742 P7CH 1740 P7JMP 0057 P7OUT 0055 P7TEMP 0017 P7TLS 0060 P7TSF 0056 PARLMT 0041 PARSW 7026 PARTES 5477 PFMRES 0366 PNTCNT 7144 POP 4326 POPA 2126 PPRINT 0551 PRBLUP 0464 PRINAR 3521 PRMVAL 2134 PRMVAR 2144 PROVER 3524 PRSCII 3516 PRTASC 1117 PRTCOD 6040 PRTUNK 1114 PSCRIB 0042 PSCRSI 0170 PTRMSG 2304 PUSH 4322 PUSHA 2122 PUTBAS 0131 PUTHAF 0132 PUTNDX 0060 PZ 2600 QMATCH 2054 QUBLMS 1767 QUERYS 0043 QUESPE 7114 QUMSG 2307 QWAIT 1150 RESBLK 0370 RESCNT 0005 RESCOP 3034 RESEMP 3053 RESEND 4200 RESFUN 0367 RESKIL 3142 RESMOD 5417 RESQUI 3030 RESTAB 3017 REVISI 0001 RNGCHK 0740 RTRYMS 2312 RUBAGN 0512 RUBCHK 0557 RUBDON 0521 RUBTBL 3675 RUSMSG 2323 RUSURE 1750 SBLOCK 7635 SBOOT 7600 SBTFUN 7602 SCHAR 2170 SCIIMS 4127 SCRCAS 1731 SCRCHA 1732 SCRCRL 1722 SCRFLI 1724 SCRIBE 1657 SCRLUP 1666 SCRPRN 1677 SCRPTR 1733 SCRSIZ 7611 SEARCH 2010 SETCOP 7014 SETEMP 7012 unreferenced SETKIL 7013 SFUN 7634 SINDEX 2171 SLTMSG 4132 SMOVLU 5407 SMSG 2336 SMVLUP 7060 SPCCHK 0727 SPECIN 0700 SPECS 7533 SRCHNX 2011 SRCHZE 0705 STACK 7400 STARAG 2062 STARTI 5400 STKPTR 2172 STLMSG 5317 STMCNT 5537 STRBF2 3327 STRBUF 7554 STREND 7577 unreferenced STRFIN 7100 STRLEN 0044 SWAL 7604 SWMX 7605 SWPTR 3346 SWY9 7606 SYSIO 7640 SYSMSG 0767 TEMP 0044 TEMP1 0100 TEMP2 0045 TESTB 7300 TESTC 7217 TESTN 7251 TESTNO 5512 TESTO 7502 TESTQ 7243 TESTS 7237 TESTU 7265 unreferenced TESTY 7304 unreferenced TLSIOT 6046 TOBEMS 4141 TOPTR 7346 TSFIOT 6041 TSPACE 0110 TSTEIK 7201 TSTESC 7206 unreferenced TTY 0003 TXTPTR 0046 TYAORB 3506 TYBDMS 5340 TYPAGN 3464 TYPBAD 7020 TYPFEX 3526 TYPFIL 0047 unreferenced TYPMSG 4153 TYPSPE 7121 UCONMS 5356 UITMSG 4160 UNIBAR 7021 UNICON 7531 UNISPE 7131 UNIT 0050 UNITEM 7406 UNITMS 4162 UNITOK 7415 UNITPR 2154 UNOT 7276 UPADDR 0051 UPRINT 1156 V4KBUF 7200 V6KZP1 0306 V6KZP2 0316 VALASC 0600 VALBIN 1000 VALFTY 3600 VALID8 0747 VALMOD 3624 VALOVE 0757 VCBAD 1553 VCBDMS 2337 VCLOOP 1541 VERARG 0052 VERBAD 0342 VERBLK 0315 VERBUF 0000 unreferenced VERCOR 0313 VERFUN 0314 VERLUP 0320 VERNEX 0310 VERPTR 0053 VERRMS 4167 VERSIO 0012 VERSPE 7137 VERSW 0054 VERYMS 4173 VFBDMS 2356 WRDCNT 0007 WRITE 4000 XORCNT 3347 XORLUP 3331 XORSW 3330 XORSWS 0000 XR1 0016 XR2 0012 XR3 0013 YESMSG 2374 YESORN 1626 YNAGN 1627 YNOBAD 7022 YORNO 5504 YZAP 1751 ZAP6K 5521