1 / BINARY LOADER UTILITY FOR P?S/8 5 XLIST ON 6 7 / LAST EDIT: 17-DEC-1986 23:00:00 CJL 8 9 / MAY BE ASSEMBLED WITH '/J' SWITCH SET. 10 11 / THIS ASSEMBLY COVERS THE "START", "BIN", AND "GET" SYSTEM PROGRAMS. 12 13 / ALL THREE SYSTEM PROGRAMS SHARE ONE CORE IMAGE AND ARE ACTUALLY 14 / DIFFERENT ENTRY POINTS INTO A COMMON PROGRAM. SEVERAL INTERNAL 15 / SUBROUTINES ARE COMMON TO ALL PROGRAMS. THE BIN PROGRAM IS THE BASIS FOR 16 / THE OTHER TWO PROGRAMS AS "GET" IS MERELY A SHORTHAND ALTERNATIVE TO 17 / USING "BIN", AND "START" IS AN ALTERNATIVE TO SELF START FROM EITHER 18 / "BIN" OR "GET". 19 / START SYSTEM DESCRIPTION. 20 21 / START LOADS THE FIELD ZERO SCRATCH AREA (BLOCK 0020-56) INTO 22 / 00000-07577, AND THEN STARTS AT LOCATION 00200 UNLESS STARTING OPTIONS 23 / ARE USED. 24 25 / IT IS THE USER'S RESPONSIBILITY TO PRELOAD ANY EXTENDED MEMORY SEGMENTS 26 / OF THE PROGRAM (IF ANY) BY OTHER MEANS BEFORE USING "START." THE USUAL 27 / METHOD WOULD BE TO "GET" ALL BINARIES, THEN TO "START", AS THE MONITOR 28 / DOES NOT VIOLATE ANY EXTENDED MEMORY BEYOND ANY AREAS POSSIBLY RESERVED 29 / BY HANDLER EXTENSIONS OR THE "CONSOLE" OVERLAY. 30 31 / START OPTIONS. 32 33 / =NNNN START AT THIS ADDRESS IN THE DESIGNATED FIELD INSTEAD OF 0200 34 / (DEFAULT FIELD IS ZERO). 35 / /1 CHANGE STARTING FIELD FROM ZERO TO ONE. 36 / /2 CHANGE STARTING FIELD FROM ZERO TO TWO. 37 / /3 CHANGE STARTING FIELD FROM ZERO TO THREE. 38 / /4 CHANGE STARTING FIELD FROM ZERO TO FOUR. 39 / /5 CHANGE STARTING FIELD FROM ZERO TO FIVE. 40 / /6 CHANGE STARTING FIELD FROM ZERO TO SIX. 41 / /7 CHANGE STARTING FIELD FROM ZERO TO SEVEN. 42 43 / THE LOWEST OF /1-/7 WILL BE CHOSEN IGNORING ANY MULTIPLE SWITCHES FROM 44 / THAT GROUP. THIS ALLOWS /2-/7 TO BE AVAILABLE OPTIONS TO A PROGRAM 45 / STARTING IN FIELD ONE, ETC. 46 47 / IF THE STARTING FIELD IS DEFAULTED TO FIELD ZERO (BY NOT USING /1-/7), 48 / THE SYSTEM LOADER IS FORMATTED NORMALLY. IF THE STARTING FIELD IS 1-7, 49 / THE SYSTEM LOADER IS MODIFIED TO: 50 51 / *7632 /WHERE SYSTEM LOADER IS 52 53 / SLOAD, JMS SYSIO /CALL I/O ROUTINES 54 / SCORE, 0000 /TRANSFER STARTS AT 0000 55 / SFUN, 37^100+.-. /UNIT BITS WILL BE FILLED IN 56 / SBLOCK, 0020 /DEFAULT CORE IMAGE BLOCK 57 / STFLD, CIF CDF 00+.-. /FIELD WILL BE FILLED IN 58 / SYSTART,JMP I SPARM /GO START IT UP THROUGH THERE 59 60 / IF AN EXTENDED FIELD START IS SPECIFIED, THE SYSTEM EQUALS PARAMETER 61 / WORD WILL BE FORCED TO THE STARTING ADDRESS EVEN IF NONE WAS GIVEN, 62 / I. E. THE EQUALS PARAMETER WILL BE 0200 IF NONE WERE GIVEN WHILE 63 / NORMALLY IT WOULD BE 7777. 64 65 / IF A FIELD ZERO START IS SPECIFIED, THE SYSTEM EQUALS PARAMETER WILL BE 66 / PASSED AS IS; NOT STATING ANY EXPLICIT ADDRESS YIELDS 7777 IN 007756. 67 68 / ALL OTHER OPTIONS, SWITCHES, FILES, ETC. ARE PASSED TO THE USER PROGRAM. 69 70 / START CAN BE ACCOMPLISHED FROM A WRITE-PROTECTED SYSTEM DEVICE TO ALLOW 71 / FOR SAFETY WHEN DEBUGGING A NEW PROGRAM (SEE "GET"). 72 / BIN SYSTEM DESCRIPTION. 73 74 / BIN IS A UTILITY FOR MANIPULATION OF BINARY PAPER TAPES AND BINARY FILES. 75 76 / BIN HAS FOUR BASIC INTERNAL MODES OF OPERATION: 77 78 / MODE (A) LOADING PAPER TAPES DIRECTLY INTO MEMORY. 79 / MODE (B) LOADING INPUT FILES DIRECTLY INTO MEMORY. 80 / MODE (C) CREATING BINARY OUTPUT FILES FROM PAPER TAPES. 81 / MODE (D) PUNCHING BINARY PAPER TAPES FROM INPUT FILES. 82 83 / EACH MODE OF OPERATION HAS ITS OWN OPTIONS; SEVERAL SWITCH OPTIONS HAVE 84 / ANALOGOUS MEANINGS IN DIFFERENT MODES. 85 86 / TO DISTINGUISH THE VARIOUS MODES THE FOLLOWING CONVENTIONS APPLY: 87 88 / THE /P OPTION ALWAYS IMPLIES PAPER TAPE INPUT OR OUTPUT AND PRECLUDES 89 / MODE (B) AND MODE (D); MODE (A) AND MODE (C) ARE DISTINGUISHED FROM EACH 90 / OTHER BY THE PRESENCE OF PASSED OUTPUT FILES WHICH FORCES MODE (C). FOR 91 / THE PURPOSES OF THE ABOVE, THE PRESENCE OF THE /B OR /D OR /G OR /U OPTIONS 92 / IMPLY PASSED OUTPUT FILES IF NO EXPLICIT ONES WERE GIVEN. IN THE ABSENCE 93 / OF /P, /W ALWAYS FORCES MODE (D). THE COMBINATION OF /B, /D, /G, /U CREATES 94 / A DEFAULT LIST OF FILES ACCORDING TO THE FOLLOWING RULES: 95 96 / /B USE %:[BOOTSTRAP UNIT] AS THE (FIRST) FILE. 97 / /D IMPLIES /B ALSO USE $:[BOOTSTRAP UNIT] AS THE SECOND FILE. 98 / /G IMPLIES /B ALSO CHAINING BACK TO BIN IF MODE (C). 99 / /U IMPLIES /B ALSO CHANGE THE UNIT(S) TO [BOOTSTRAP UNIT XOR ONE]. 100 101 / MODE (A): LOADING VALID BINARY PAPER TAPES INTO MEMORY. 102 103 / THIS MODE IMPLEMENTS AN OPTIMIZED VERSION OF DEC'S PAPER TAPE BINARY LOADER. 104 105 / ALL DEC OPTIONS NOT RELATED TO THE READING OF THE SWITCH REGISTER HAVE BEEN 106 / RETAINED INCLUDING MOST NOTABLY THE ABILITY TO DELETE SECTIONS OF TAPE 107 / FRAMED BY RUBOUT CHARACTERS. (A FEATURE OF EARLY PAPER TAPE ASSEMBLERS 108 / WAS THE OUTPUTTING OF ERROR MESSAGES FRAMED BY RUBOUT CHARACTERS. IF THE 109 / OUTPUT WAS PUNCHED ON A TELETYPE, THEN THE PAPER TAPE COULD CONTAIN 110 / IMBEDDED FRAMED ERROR MESSAGES. THEY WILL PROPERLY BE IGNORED.) 111 / USING THIS MODE CAUSES A PAPER TAPE BIN LOADER AND RIM LOADER TO APPEAR 112 / IN THE LAST PAGE OF MEMORY ALONG WITH THE SYSTEM BOOTSTRAP. THIS METHOD 113 / WILL WORK WITH ALL KNOWN VALID BINARY PAPER TAPES EXCEPT THOSE WHICH 114 / ASSUME THE SOMEWHAT ILLEGAL CONVENTION THAT EITHER: 115 116 / A) THE "OFFICAL" DEC LOADER IS LOADING THE PROGRAM AND CERTAIN WORDS 117 / IN THE LAST PAGE OF MEMORY ARE THEREFORE AVAILABLE. THIS OFTEN YIELDS 118 / CLOBBERING OF THE BOOTSTRAP AT 007600 BY THE OFFENDING PROGRAM. 119 120 / B) THE "OFFICIAL" DEC LOADER IS LOADING THE PROGRAM AND CERTAIN WORDS 121 / WITHIN THE LOADER ITSELF CAN BE MODIFIED FOR SELF-STARTING AND 122 / OTHER RELATED PURPOSES. THIS COULD EVEN FAIL WHEN USING THE DEC 123 / "OFFICAL" LOADER! (SEVERAL KNOWN PROGRAMS ACTUALLY MODIFY THE DEC 124 / LOADER IN ANTICIPATION OF SELF STARTING. ONE KNOWN PROGRAM ACTUALLY 125 / ATTEMPTS TO DETERMINE IF THERE WAS A CHECKSUM ERROR DURING ITS 126 / LOADING PROCESS AND WILL ALLOW RELOADING IF AN ERROR IS DETECTED. 127 / IF NO ERROR, IT RESTORES THE LOADER AND SELF STARTS. THIS SITUATION 128 / IS PATENTLY ABSURD AS THERE IS NO WAY TO PREVENT THE ERROR FROM 129 / BEING IN THE LOADING IN OF THOSE WORDS WHICH OVERLAY THE LOADER 130 / ITSELF, AS OPPOSED TO ELSEWHERE IN THE LOADING, THUS UNPREDICTABLE 131 / RESULTS ARE POSSIBLE!) 132 133 / IT SHOULD ALSO BE POINTED OUT THAT DEC HAS SUPPORTED AT LEAST THREE KNOWN 134 / INCOMPATIBLE VERSIONS OF ITS "OFFICAL" LOADER AND THE ABOVE IRREGULAR 135 / PROGRAMS CAN'T NECESSARILY LOAD FROM ANY ONE PARTICULAR DEC LOADER. 136 137 / THE ONLY ITEM NOT AVAILABLE IN THE P?S/8 LOADER IS THE SWITCH REGISTER 138 / OPTION. THE P?S/8 BIN VERSION CANNOT CHOOSE THE INPUT DEVICE FOR LOADING 139 / FROM THE SWITCH REGISTER. THIS IS NOT SEEN AS A PROBLEM AS THE USER SELECTS 140 / THE INPUT DEVICE ON THE COMMAND LINE OF THE MONITOR. IT ONLY MEANS THAT THE 141 / CHOICE OF INPUT OPTIONS FEATURE AFTER CONTROL IS PASSED TO THE PAPER TAPE 142 / LOADER IS DELETED; IT WOULD APPEAR THAT CHANGING DEVICES IN MID-LOAD IS 143 / UNLIKELY, AS THE USER WOULD PROBABLY CHOOSE THE FASTER INPUT DEVICE 144 / (HIGH-SPEED READER) IF AVAILABLE. 145 146 / AS IN THE DEC LOADERS, THE LOADER HALTS AT THE END OF A PAPER TAPE LOAD. 147 / THE AC SHOULD BE ZERO ELSE A CHECKSUM ERROR WAS DETECTED AND THE LOAD IS 148 / INVALID. IF THE LOADER WAS NOT VIOLATED (A POSSIBILITY!), IT CAN BE 149 / RESTARTED EITHER BY HITTING CONTINUE OR RESTARTING AT 007777 AS IN THE 150 / DEC LOADERS. 151 152 / DEC PAPER TAPE SYSTEMS ALSO SUPPORT A RIM LOADER WITH FIXED INPUT DEVICE. 153 / THE RIM LOADER RESIDES NEXT TO THE BIN LOADER AND STARTS AT 007756. THE 154 / P?S/8 VERSION IS TOTALLY COMPATIBLE WITH THE DEC RIM LOADER AND INCLUDES 155 / CHOICE OF INPUT DEVICE AT THE COMMAND LINE OF THE MONITOR; EITHER LOADER 156 / CAN BE CHOSEN BY COMMAND, ALONG WITH THE INITIAL DATA FIELD OF LOADING 157 / WHICH CAN ONLY BE CHOSEN BY FRONT PANEL MANIPULATION IN THE DEC PROGRAMS. 158 159 / SHOULD MANUAL RESTART OF EITHER LOADER BE DESIRED AFTER LOADING AT LEAST 160 / ONE PAPER TAPE, THEN THE FOLLOWING COMPATIBLE CONVENTIONS APPLY: 161 162 / A) BOOTSTRAP AT 007600. THE ONLY RESTRICTION IS TO CLEAR THE DATA FIELD. 163 / B) START THE BINARY LOADER AT 007777. 164 / C) START THE RIM LOADER AT 007756. 165 / BIN MODE (A) OPTIONS. 166 167 / /F USE HIGH-SPEED READER (DEVICE 01) AS INPUT DEVICE FOR EITHER LOADER. 168 / /H FILL ALL UNPROTECTED MEMORY WITH HLT INSTRUCTIONS (7402) BEFORE 169 / STARTING THE PAPER TAPE LOADER (P?S/8 CORE SIZE PROTECTION APPLIES). 170 / /P LOAD BINARY PAPER TAPES (MUST BE PRESENT TO INDICATE MODE (A)). 171 / /R USE RIM LOADER (DEFAULT IS BIN LOADER). 172 / /Z ZERO ALL UNPROTECTED MEMORY BEFORE STARTING THE PAPER TAPE LOADER 173 / (P?S/8 CORE SIZE PROTECTION APPLIES). 174 / /1 INITIAL LOADING INTO FIELD ONE (DEFAULT IS ZERO). 175 / /2 SAME AS ABOVE ONLY INITIAL LOADING INTO FIELD TWO. 176 / /3 SAME AS ABOVE ONLY INITIAL LOADING INTO FIELD THREE. 177 / /4 SAME AS ABOVE ONLY INITIAL LOADING INTO FIELD FOUR. 178 / /5 SAME AS ABOVE ONLY INITIAL LOADING INTO FIELD FIVE. 179 / /6 SAME AS ABOVE ONLY INITIAL LOADING INTO FIELD SIX. 180 / /7 SAME AS ABOVE ONLY INITIAL LOADING INTO FIELD SEVEN. 181 182 / IN MODE (A), ANY INPUT FILES PASSED ARE IGNORED. 183 184 / 007600-007642 WILL CONTAIN THE SYSTEM BOOTSTRAP CODE TAKEN FROM THE SLURP 185 / LOADER INITIALIZED AS NECESSARY. 186 187 / MODE (A) INPUT DEVICE IS EITHER THE HIGH-SPEED READER (/F) OR THE SYSTEM 188 / CONSOLE IF IT IS EQUIPPED WITH A COMPATIBLE READER. THIS UTILITY DOES NOT 189 / SUPPORT CONSOLE OVERLAY DEVICES FOR PAPER TAPE INPUT, HOWEVER APPROPRIATE 190 / MESSAGES (PRIMARILY IN OTHER MODES) WILL OUTPUT TO THE LOGICAL CONSOLE 191 / DEVICE IF APPLICABLE. 192 193 / IF /H OR /Z ARE IN EFFECT, THEN THE FIELD ZERO MEMORY SPACE WILL NOT BE 194 / COMPLETELY INITIALIZED. THE DISCREPANCY IS VERSION-DEPENDENT AND IS 195 / APPROXIMATELY 007570-007577. THE EXACT VALUES ARE ALSO DEPENDENT ON /H 196 / VERSUS /Z. 197 198 / WHEN LOADING BINARY PAPER TAPES WITH THE BIN LOADER, FIELD SETTINGS 199 / PRESENT ON THE TAPES WILL OVERRIDE THE INITIAL LOADING FIELD. 200 / MODE (B): LOADING BINARY INPUT FILES INTO MEMORY. 201 202 / MODE (B) IS THE DEFAULT MODE OF OPERATION AS IT IS INDICATED BY LACK OF 203 / PAPER TAPE ORIENTED SWITCH OPTIONS. 204 205 / LOADING OF BINARY FILES IS ACCOMPLISHED BY ONE OF TWO METHODS: 206 207 / 1) A "VIRTUAL" LOADER (/V) IS AVAILABLE WHICH PSEUDO-LOADS AN AREA OF 208 / MEMORY WHICH IS PROTECTED BY THE LOADER INTO A SCRATCH AREA ON THE 209 / SYSTEM DEVICE LOCATED IMMEDIATELY AFTER THE BIN SYSTEM PROGRAM 210 / ITSELF. THIS LOADER CANNOT WORK ON A WRITE-PROTECTED DEVICE (WHICH 211 / COULD BE DANGEROUS WHEN USING A NON-DEBUGGED NEW PROGRAM! SEE "GET" 212 / AND "START" FOR A SOLUTION TO THIS PROBLEM). THE SCRATCH AREA WILL 213 / BE LOADED OVER THE VIRTUAL LOADER AREA OF MEMORY AT THE END OF THE 214 / LOADING PROCESS. THE LOADER IS PROTECTED FROM ACCIDENTAL (OR 215 / OTHERWISE!) LOADING OVER 007600 AND MAKES THE LOADING OF THIS AREA 216 / AVAILABLE ON THE SYSTEM DEVICE (SEE VIRTUAL LOADER DOCUMENTATION 217 / FOR A SUGGESTED METHOD OF RETRIEVING THIS PAGE). THE VIRTUAL LOADER 218 / VALIDATES EACH FILE AS IT LOADS AND CAN BE INTERRUPTED/SUSPENDED 219 / BY THE STANDARD SET OF CONTROL CHARACTERS FROM THE SYSTEM CONSOLE: 220 221 / <^S> SUSPEND LOADING UNTIL <^Q> PRESSED. 222 / <^Q> RESUME LOADING. 223 / ABORT LOADING AND RETURN TO THE MONITOR. 224 / <^A> SAME AS . 225 / <^B> SAME AS . 226 / <^C> ABORT LOADING AND RETURN TO THE MONITOR; ABORT BATCH 227 / OPERATIONS IF APPLICABLE. 228 229 / INVALID FILES PASSED TO THE VIRTUAL LOADER WILL YIELD THE ERROR MESSAGE: 230 231 / INVALID INPUT FILE! 232 233 / AS THE STANDARD SYSTEM I/O ROUTINES ARE USED DURING THE LOADING 234 / PROCESS, ANY I/O ERRORS ARE SUBJECT TO THE PREVAILING ERROR HANDLING 235 / (HALT/HANG ON ERROR WITH MANUAL RESTART/AUTOMATIC RETRY, CONSOLE 236 / OVERLAY). 237 / 2) A "SLURP" LOADER IS PROVIDED BY DEFAULT ON SOME SYSTEMS (WHEN NOT 238 / AVAILABLE, THE VIRTUAL (/V) LOADER WILL BE USED INSTEAD.) WHICH HAS 239 / A DIFFERENT SET OF TRADEOFFS: 240 241 / THE "SLURP" LOADER REPLACES THE SYSTEM I/O ROUTINES IN THE LAST 242 / PAGE OF MEMORY DURING THE LOADING PROCESS (THE /I OPTION EXISTS TO 243 / RELOAD THE DISPLACED SYSTEM I/O ROUTINES AFTER LOADING). THE "SLURP" 244 / LOADER DOES NOT WRITE ON THE SYSTEM DEVICE AND IS THEREFORE SAFER 245 / TO USE WHEN DEBUGGING A NEW (AND POTENTIALLY DANGEROUS!) PROGRAM. 246 / IT GENERALLY RUNS CONSIDERABLY FASTER THAN THE VIRTUAL LOADER WHEN 247 / BOTH ARE AVAILABLE. ERROR RECOVERY OF THE SLURP LOADER HOWEVER, IS 248 / SEVERELY LIMITED AND, ACCORDING TO THE PARTICULAR WORKINGS OF EACH 249 / VERSION, MAY BE IMPOSSIBLE; SEVERAL SLURP LOADERS HALT ON DETECTED 250 / ERROR; PRESSING CONTINUE AFTER THIS HALT IS IMPLEMENTATION DEPENDENT. 251 / SOME SLURP LOADER VERSIONS IGNORE (CERTAIN) ERRORS. SOME SLURP 252 / LOADERS "HANG UP" WHEN AN ERROR OCCURS. 253 254 / THE "SLURP" LOADER IGNORES BINARY FILE VALIDITY AND CAN PRODUCE 255 / UNPREDICTABLE RESULTS WHEN PASSING OTHER FORMAT FILES. THE "SLURP" 256 / LOADER CANNOT BE INTERRUPTED BY CONSOLE CONTROL CHARACTERS. THE 257 / "SLURP" LOADER IS NOT PROTECTED FROM LOADING OVER ITSELF! 258 259 / THE SLURP LOADER CONTAINS A STAND-ALONE BOOTSTRAP TO THE SYSTEM 260 / DEVICE WHICH WILL OCCUPY 007600-007642 WHEN INITIALIZED. THIS CODE 261 / WILL BE USED IN MODE (A) AS THE SYSTEM BOOTSTRAP BECAUSE IT IS 262 / SMALL ENOUGH TO CO-EXIST WITH THE BIN AND RIM LOADERS. AS IN ALL 263 / BOOTSTRAP PROCEDURES, USE OF THE SLURP LOADER'S BOOTSTRAP CODE 264 / COULD CAUSE FAILURE TO BOOTSTRAP THE SYSTEM; THIS IS GENERALLY NOT 265 / RESTARTABLE. THIS IS NOT AS RELIABLE AS RESTARTING THE SYSTEM AT 266 / 007600 WHEN THE SYSTEM I/O ROUTINES ARE RESIDENT AS IS THE CASE 267 / WITH THE VIRTUAL LOADER. 268 269 / THE "SLURP" LOADER ALWAYS SUPPORTS THE /I OPTION TO RELOAD THE 270 / SYSTEM I/O ROUTINES AFTER LOADING. THIS IS ACCOMPLISHED BY PASSING 271 / AN INTERNAL FILE TO THE SLURP LOADER FROM THE SYSTEM DEVICE WHICH 272 / IS PARTICULAR TO THE SLURP LOADER, WHICH MODIFIES IT INTO A LOADING 273 / ROUTINE FOR THE SYSTEM I/O ROUTINES. NO USER MEMORY IS VIOLATED 274 / DURING THIS PROCESS. SINCE THE SYSTEM I/O ROUTINES ARE LOADED, BUT 275 / NOT INITIALIZED BY THIS PROCESS, THE SYSTEM CORE SIZE WORD IS NOT 276 / COMPLETELY ACCURATE AFTER RELOADING. IF THE USER IS CONCERNED WITH 277 / THE CONTENTS OF THE SYSTEM'S PARAMETER WORDS, THIS IS THE WRONG 278 / METHOD TO USE (SEE "GET" THEN "START", "R %", "R $" OR "ODT" FOR 279 / SEVERAL SOLUTIONS TO THIS PROBLEM). 280 281 / ALL OTHER ASPECTS OF THE SYSTEM I/O ROUTINES ARE VALID, INCLUDING 282 / THE POTENTIALLY MORE RELIABLE BOOTSTRAP PROCEDURE. IF A CONSOLE 283 / OVERLAY IS PRESENTLY INSTALLED ON THE SYSTEM, THE "SLURP" LOADER 284 / AND /I OPTION WILL AUTOMATICALLY BE "UPGRADED" TO /V INSTEAD. IF 285 / /I IS IN EFFECT, THE FILE LIMIT IS LOWERED TO SIXTEEN INPUT FILES 286 / AS OPPOSED TO THE NORMAL SEVENTEEN AS THE /I OPTION IS PASSED AS 287 / A "FILE" TO THE SLURP LOADER. 288 / BIN MODE (B) OPTIONS. 289 290 / USE SLURP LOADER IF AVAILABLE (ELSE USE VIRTUAL LOADER AS IN /V) 291 / TO LOAD %:[BOOTSTRAP UNIT]. PROGRAM HALTS IN A DEVICE-DEPENDENT 292 / ADDRESS BETWEEN 07643-07755 WITH CLEAR AC. ANY OTHER HALT INDICATES 293 / A BAD LOAD. MANUAL START OF USER PROGRAM IS REQUIRED. 294 / /B SAME AS PASSING NO OPTIONS. USED TO ESTABLISH %:[BOOTSTRAP UNIT] 295 / AS THE FILE TO BE LOADED. THIS OPTION IS IGNORED IF INPUT FILES 296 / ARE PASSED. OUTPUT FILES ARE IGNORED IN MODE (B) AND HAVE NO BEARING 297 / ON THIS OPTION. 298 / /D SAME AS /B ALSO LOAD $:[BOOTSTRAP UNIT] AS A SECOND FILE. 299 / /G SAME AS /B. 300 / /H FILL ALL UNPROTECTED MEMORY WITH HLT INSTRUCTIONS (7402) BEFORE 301 / STARTING THE LOADER (P?S/8 CORE SIZE PROTECTION APPLIES). 302 / /I RELOAD SYSTEM I/O ROUTINES AFTER SLURP LOADER IS DONE LOADING. IF 303 / NO STARTING ADDRESS IS SPECIFIED, IT IS DEFAULTED TO 007776 WHEN 304 / INVOKING /I. STARTING AT 007632 WILL SAVE FIELD ZERO IN THE DEFAULT 305 / SCRATCH AREA ("%" AND "$" FILE AREA) AND RELOAD THE MONITOR. ANY 306 / ATTEMPT TO USE ANY OTHER STARTING ADDRESS OR FIELD WITH THE /I 307 / OPTION WHILE A CONSOLE OVERLAY IS IN EFFECT WILL FORCE THE /V OPTION 308 / AND IGNORE /I. 309 / /U SAME AS /B BUT CHANGES THE FILE(S) TO %:[BOOTSTRAP UNIT XOR ONE] 310 / (AND $:[BOOTSTRAP UNIT XOR ONE] IF /D). 311 / /V USE VIRTUAL LOADER INSTEAD OF "SLURP" LOADER. IF NO STARTING ADDRESS 312 / IS SPECIFIED, IT IS DEFAULTED TO 007776 WHEN INVOKING /V. STARTING 313 / AT 007632 WILL SAVE FIELD ZERO IN THE DEFAULT SCRATCH AREA ("%" 314 / AND "$" FILE AREA) AND RELOAD THE MONITOR. 315 / /Z ZERO ALL UNPROTECTED MEMORY BEFORE STARTING THE LOADER (P?S/8 CORE 316 / SIZE PROTECTION APPLIES). 317 / =NNNN STARTUP USER PROGRAM AT NNNN IN DESIGNATED FIELD WITH CLEAR AC. IF 318 / FIELD SWITCHES NOT USED, DEFAULT IS FIELD ZERO. ANY HALT OTHER THAN 319 / THE LOADER HALT IS USER'S RESPONSIBILITY. 320 / /1 START AT NNNN AS ABOVE ONLY IN FIELD ONE (1NNNN). THIS OPTION IS 321 / IGNORED UNLESS =NNNN IS GIVEN. 322 / /2 SAME AS ABOVE ONLY USE FIELD TWO. 323 / /3 SAME AS ABOVE ONLY USE FIELD THREE. 324 / /4 SAME AS ABOVE ONLY USE FIELD FOUR. 325 / /5 SAME AS ABOVE ONLY USE FIELD FIVE. 326 / /6 SAME AS ABOVE ONLY USE FIELD SIX. 327 / /7 SAME AS ABOVE ONLY USE FIELD SEVEN. 328 329 / PASSING EXPLICIT INPUT FILES CAUSES /B, /D, /G, /U TO BE IGNORED. 330 331 / PASSED OUTPUT FILES ARE ALWAYS IGNORED AS IF NOT PASSED AND SERVE ONLY 332 / TO WASTE SPACE IN THE FILE LIST. 333 334 / IF THE /I OPTION IS INVOKED AND IN EFFECT, THEN ONLY UP TO SIXTEEN FILES 335 / WILL BE LOADED. NORMALLY THIS LIMIT IS SEVENTEEN; THE KEYBOARD MONITOR 336 / NORMALLY PREVENTS ATTEMPTS TO PASS TOO MANY FILES, BUT CANNOT FORESEE THIS 337 / SITUATION. 338 / IF THE "SLURP" LOADER IS IN EFFECT, THEN USING /H OR /Z WILL NOT COMPLETELY 339 / AFFECT THE FIELD ZERO USER MEMORY SPACE. THE DISCREPANCY IS 340 / VERSION-DEPENDENT AND IS APPROXIMATELY 007570-007577. THE EXACT VALUES ARE 341 / ALSO DEPENDENT ON /H VERSUS /Z. 342 343 / IF /V IS IN EFFECT, THE FOLLOWING ADDITIONAL CONDITIONS APPLY: 344 345 / A) /H OR /Z OPERATIONS WILL COMPLETELY FILL THE FIELD ZERO MEMORY 346 / SPACE WITH THE APPROPRIATE CONSTANT (7402 OR 0000). 347 / B) THE LOADER WILL REQUIRE WRITE-ENABLE ON THE SYSTEM DEVICE FROM 348 / WHICH "BIN" (OR "GET") WAS INVOKED. 349 / C) THE LOADER WILL BE SENSITIVE TO <^S>/<^Q>, , <^A>, <^B> AND 350 / <^C> ACCORDING TO THEIR STANDARD MEANINGS. 351 / D) THE LOADER WILL CHECK THE PASSED FILES FOR BINARY VALIDITY. IF ANY 352 / FILES ARE INVALID, AN ERROR MESSAGE WILL BE PRINTED AND THE LOADING 353 / PROCESS AUTOMATICALLY TERMINATED RETURNING CONTROL TO THE MONITOR. 354 / E) AN IMAGE OF 005200-007777 WILL BE CREATED ON THE SYSTEM DEVICE ON 355 / THE 12 BLOCKS FOLLOWING THE "BIN" PROGRAM ITSELF. THE INTENDED 356 / LOADING OF 007600 (IF ANY) WILL BE AVAILABLE AFTER THE LOADING 357 / PROCESS IS COMPLETED FOR ANY TENTATIVE PURPOSE. 358 / F) THE CONSOLE DEVICE FOR ALL CONTROL INPUT AND MESSAGE OUTPUT WILL 359 / BE THE STANDARD SYSTEM CONSOLE DEVICE INCLUDING ANY CONSOLE OVERLAY. 360 / IF THE CONSOLE OVERLAY IS PRESENT, ALL I/O ERRORS ARE GOVERNED BY 361 / THE OVERLAY. 362 / G) WARNING: NO ATTEMPT IS MADE TO PROTECT THE OVERLAY OR ANY EXTENDED 363 / HANDLER CODE IN UPPER MEMORY! 364 / MODE (C) CREATING BINARY OUTPUT FILES FROM VALID BINARY PAPER TAPES. 365 366 / THE USER MUST PASS SUFFICIENT FILES TO BIN FOR MODE (C) TO BE EFFECTIVE. 367 / INSUFFICIENT OUTPUT FILES WILL YIELD AN OVERFLOW MESSAGE AND ABORT BACK TO 368 / THE MONITOR WITH THE CONVERSION FROM PAPER TAPE TO FILES INCOMPLETE. THE 369 / UTILITY WILL GIVE A REPORT OF THE COUNT OF FILES CREATED TO ASSIST THE USER 370 / IN POSSIBLY DISCARDING EXCESS OUTPUT FILES. 371 372 / IF THE USER INVOKES THE CHAINING OPTION (/G), THE EXCESS FILE ARGUMENTS 373 / WILL BE DELETED FROM THE FILE LIST BEFORE CHAINING BACK TO A NEW COPY OF 374 / THE "BIN" PROGRAM. 375 376 / OTHER MESSAGES INCLUDE: 377 378 / A) COMPLAINT OF CHECKSUM ERROR ON PAPER TAPE. THIS IS A FATAL ERROR 379 / AND ABORTS THE CONVERSION PROCESS, RETURNING TO THE MONITOR. 380 / B) REPORT OF PAPER TAPE END-OF-FILE. THE USER WILL THEN BE PROMPTED 381 / REGARDING ANY ADDITIONAL PAPER TAPES TO BE LOADED AT THIS TIME TO 382 / HAVE THEIR CONTENTS APPENDED TO THE CONTENTS OF THE OUTPUT FILES. 383 / A "Y" (FOR YES) OR "N" (FOR NO) RESPONSE IS REQUIRED AT THIS POINT. 384 / SHOULD THE CONSOLE DEVICE CURRENTLY BE DEFINED AS A TELETYPE-LIKE 385 / DEVICE WITH A READER, AND THE PAPER TAPE INPUT DEVICE IS THE CONSOLE 386 / ITSELF (DEVICE 03), THEN THE CONTROL CHARACTERS NORMALLY ASSOCIATED 387 / WITH CONTROLLING THE PROGRAM ARE DISABLED, AS THE READER ITSELF MAY 388 / ACCIDENTLY INPUT CONTROL CHARACTERS WHILE THE TAPE MOVES PAST THE 389 / END-OF-FILE POINT. IF THIS IS THE CASE, THE PROGRAM CAN ONLY BE 390 / TERMINATED WITH A NO RESPONSE AT THIS POINT, OR BY MANUALLY 391 / RESTARTING THE MONITOR AT 007600. 392 / MODE (C) OPTIONS. 393 394 / /B OUTPUT TO %:[BOOTSTRAP UNIT]. THIS OPTION IS IGNORED IF OUTPUT 395 / FILES ARE EXPLICITLY PASSED. 396 / /D SAME AS /B AND ADDITIONALLY OUTPUT TO $:[BOOTSTRAP UNIT] AS A 397 / SECOND FILE IF NEEDED. 398 / /F INPUT DEVICE FOR PAPER TAPES IS THE HIGH-SPEED READER (01). 399 / DEFAULT IS THE CONSOLE DEVICE EQUIPPED WITH A PAPER TAPE READER 400 / (03). IF A CONSOLE OVERLAY IS PRESENT, THE DEFAULT DEVICE DOES 401 / NOT CHANGE. 402 / /G SAME AS /B; ALSO CHAINING OPTION. REMOVE /P FROM THE OPTION LIST 403 / AND MAKE THE CURRENT OUTPUT FILE LIST INTO AN INPUT FILE LIST. IF 404 / /W ALSO PASSED, THEN THE CREATED FILES WILL BE PUNCHED (SEE MODE 405 / (D)). IF /W IS NOT PASSED, THEN THE CREATED FILES WILL BE LOADED 406 / (SEE MODE (B)). ALL APPROPRIATE OPTIONS TO MODE (B) OR MODE (D) 407 / APPLY. "GET/P" IS AN APPLICATION OF MODE (C) FOLLOWED BY CHAINING 408 / BACK IN MODE (B). 409 / /P MUST BE PRESENT IN MODE (C). 410 / /R INPUT FORMAT IS RIM PAPER TAPE. DEFAULT IS BIN PAPER TAPE. 411 / /U SAME AS /B BUT CHANGES THE FILE(S) TO %:[BOOTSTRAP UNIT XOR ONE] 412 / (AND $:[BOOTSTRAP UNIT XOR ONE] IF /D). 413 / /1 INITIAL LOADING FIELD IN OUTPUT FILES IS FIELD ONE (DEFAULT IS ZERO). 414 / /2 SAME AS ABOVE ONLY INITIAL LOADING FIELD IS TWO. 415 / /3 SAME AS ABOVE ONLY INITIAL LOADING FIELD IS THREE. 416 / /4 SAME AS ABOVE ONLY INITIAL LOADING FIELD IS FOUR. 417 / /5 SAME AS ABOVE ONLY INITIAL LOADING FIELD IS FIVE. 418 / /6 SAME AS ABOVE ONLY INITIAL LOADING FIELD IS SIX. 419 / /7 SAME AS ABOVE ONLY INITIAL LOADING FIELD IS SEVEN. 420 421 / IF EXPLICIT OUTPUT FILES ARE PASSED, /B, /D, AND /U ARE IGNORED. THE 422 / DEFAULT FILE ASPECT OF /G WILL BE IGNORED; THE CHAINING ACTION WILL APPLY. 423 424 / IF /G IS INVOKED, THEN ONLY THOSE OUTPUT FILES NEEDED ARE PASSED BACK AS 425 / INPUT FILES TO THE CHAINED COPY OF BIN. ALL OTHER FILES, INCLUDING INPUT 426 / FILES ARE IGNORED. ALL DISTINCT OPTIONS OF MODE (B) OR MODE (D) WILL BE 427 / PASSED TO THE CHAINED COPY; THEY ARE IGNORED BY THE MODE (C) PHASE OF 428 / THE UTILITY. 429 430 / WHEN CREATING FILES FROM BINARY PAPER TAPES, FIELD SETTINGS PRESENT ON THE 431 / TAPES WILL OVERRIDE THE INITIAL LOADING FIELD. 432 / MODE (D) PUNCHING BINARY PAPER TAPES FROM VALID BINARY INPUT FILES. 433 434 / THE USER PASSES BINARY FILES TO THE BIN UTILITY IN MODE (D). THE FILES ARE 435 / VALIDATED AND PUNCHED ON THE SELECTED PUNCH DEVICE. IF ANY FILE IS INVALID, 436 / AN ERROR MESSAGE WILL BE ISSUED AND THE PROCESS ABORTED, RETURNING TO THE 437 / MONITOR. 438 439 / ALL STANDARD CONSOLE CONSIDERATIONS APPLY INCLUDING THE USUAL CONTROL 440 / CHARACTERS (<^S>/<^Q>, , <^A>, <^B>, <^C>). 441 442 / INVOKING THIS UTILITY MULTIPLE TIMES CAN PRODUCE A MULTI-FILE PAPER TAPE 443 / IF THE PUNCH FLAG IS NOT CLEARED BETWEEN USAGES. THE FLAG WILL BE TIMED OUT 444 / AND FORCED ON BY PUNCHING A CHARACTER IF NECESSARY (ONLY NEEDED IF 445 / POWER-CLEAR HAS OCCURRED SINCE LAST PUNCH USAGE). THIS CAN ONLY BE DONE ON 446 / THE HIGH-SPEED PUNCH (OR CONSOLE TELETYPE PUNCH WITH A CONSOLE OVERLAY 447 / ENABLED TO AN ALTERNATE DEVICE). 448 449 / MODE (D) OPTIONS. 450 451 / /B INPUT IS %:[BOOTSTRAP UNIT]. THIS IS THE DEFAULT FILE IF NO OTHER 452 / INPUT FILE IS SPECIFIED. 453 / /D SAME AS /B AND ADDITIONALLY USE $:[BOOTSTRAP UNIT] AS SECOND 454 / INPUT FILE. 455 / /F USE HIGH-SPEED PUNCH (DEVICE 02) AS PAPER TAPE OUTPUT DEVICE. 456 / DEFAULT IS THE CONSOLE TELETYPE EQUIPPED WITH A PAPER TAPE PUNCH 457 / (DEVICE 04). 458 / /G SAME AS /B. 459 / /R OUTPUT IN RIM FORMAT; DEFAULT IS BIN FORMAT. 460 / /U SAME AS /B EXCEPT FILE(S) ARE %:[BOOTSTRAP UNIT XOR ONE] (AND 461 / $:[BOOTSTRAP UNIT XOR ONE] IF /D). 462 / /W MUST BE PRESENT FOR MODE (D). IF NO INPUT FILES SPECIFIED, USE 463 / %:[BOOTSTRAP UNIT]. 464 465 / IF EXPLICIT INPUT FILES ARE PASSED, IGNORE /B, /D, /G, AND /U. 466 467 / IF A CONSOLE OVERLAY IS IN EFFECT, THE DEFAULT OUTPUT DEVICE IS STILL 468 / ASSUMED TO BE DEVICE 04 WITH A PAPER TAPE PUNCH INSTALLED. 469 470 / ALL OUTPUT FILES ARE IGNORED. 471 472 / IF RIM FORMAT OUTPUT IS SELECTED, A CHECKSUM IS ALSO PUNCHED WHICH LOOKS 473 / (TO RIM) LIKE AN EXTRA DATA WORD. THIS ALLOWS BINARY LOADERS TO LOAD AND 474 / VALIDATE PAPER TAPES CREATED BY THIS UTILITY. TO PREVENT DESTRUCTION OF THE 475 / LAST WORD ON THE TAPE, ALWAYS INCLUDE AN ORIGIN SETTING AT THE END OF THE 476 / INPUT FILE(S) TO A NEUTRAL LOCATION TO ACCOMODATE THE CHECKSUM. 477 478 / ALL FIELD SETTINGS ARE IGNORED IN RIM MODE. 479 / GET SYSTEM DESCRIPTION. 480 481 / "GET" IS A SHORT-HAND METHOD OF SPECIFYING SEVERAL OPTIONS TO "BIN". 482 483 / THE PRIMARY PURPOSE OF "GET" IS TO LOAD BINARY INPUT, SAVE A COPY OF 484 / FIELD ZERO IN THE SYSTEM SCRATCH AREA (%:[BOOTSTRAP UNIT, $:[BOOTSTRAP UNIT]) 485 / AND THEN RELOAD THE MONITOR TO ALLOW OTHER OPERATIONS TO PROCEED (START, 486 / R $, R %, ODT, BSAVE, ETC.). THIS AFFORDS THE USER THE OPPORTUNITY TO 487 / WRITE-PROTECT THE SYSTEM DEVICE BEFORE STARTING UP UNPREDICTABLE 488 / (UN-DEBUGGED!) PROGRAMS AND THUS BE PROTECTED FROM UNEXPECTED RESULTS. 489 490 / THE FOLLOWING OPTIONS ARE FORCED: 491 492 / /1 THROUGH /7 ARE REMOVED. 493 / /W IS REMOVED. 494 / /G IS FORCED ON TO ALLOW CHAINING IN CASE THE USER INVOKES /P. 495 / =NNNN IS FORCED TO 7632, THE ADDRESS OF THE SYSTEM LOADER WHERE A 496 / CORE SAVE ROUTINE IS LOCATED. 497 / /I IS FORCED ON TO RELOAD THE SYSTEM I/O ROUTINES BEFORE SAVING THE 498 / COPY OF FIELD ZERO. EVEN IF A CONSOLE OVERLAY IS PRESENT, THIS IS ALLOWED, 499 / AS THE OVERLAY WILL BE RELOADED AFTER THE MONITOR IS RELOADED. 500 501 / THE FOLLOWING OPTIONS ARE AVAILABLE THOUGH NOT FORCED: 502 503 / IF /P IS INVOKED, MODE (C) OPERATIONS WILL HAPPEN FIRST, WITH THE 504 / PREVAILING LIST OF OUTPUT FILES (/B, /D, /G, /U CREATED IF NECESSARY) THEN 505 / MODIFIED INTO AN INPUT FILE LIST ON THE CHAIN BACK FOR THE MODE (B) 506 / OPERATIONS. 507 / /V IS ALLOWED IF DESIRED (N. B. THIS MAY BE THE DEFAULT IF THE PARTICULAR 508 / SYSTEM DOESN'T SUPPORT A SLURP LOADER!). 509 / /H AND /Z ARE ALLOWED. 510 / /R AND /F ARE ALLOWED AND MEANINGFUL IF /P IS USED. 511 / /SINCE /1-/7 ARE REMOVED, THESE OPTIONS ARE NOT AVAILABLE TO MODE (C) 512 / OPERATIONS WHEN INVOKED FROM "GET" WITH /P. THIS CAN ONLY BE ACCOMPLISHED 513 / VIA TWO DIFFERENT COMMANDS: "BIN [OUTPUT FILES]

OR FIELD BIT 605 000014* 0000 FLAGS, .-. /BINARY FLAG WORD 606 000015* 0000 RNEWLOC,.-. /RIM NEW LOCATION COUNTER 607 000016* 2141 TXR, VUNLST-1 /TEMPORARY INDEX REGISTER; INITIALIZED FOR BSTART 608 609 *20 /GET PAST AUTO-INDEX AREA 610 611 / SLURP LOADER AND BOOTSTRAP INITIALIZE ROUTINE. 612 613 000020* 7032 BINIT, VERSION^100+REVISION /INITIALIZE SLURP ROUTINE 614 000021* 7326 NL0002 /SETUP "C" BIT MASK 615 000022* 0577 AND I [SCRSIZE] /GET THE BIT 616 000023* 7650 SNA CLA /SKIP IF SET 617 000024* 5031 JMP BINIT2 /JUMP IF NOT 618 000025* 1576 TAD I [P7TSF+VOFF2] /GET "CIF MCS+10" 619 000026* 3027 DCA BCHECK /STORE IN-LINE 620 000027* 0000 BCHECK, .-. /BINARY PUNCH CHECKSUM; WILL BE CIF MCS+10 WHEN NEEDED 621 000030* 4100 JMS CONOFF /TURN OFF OVERLAY 622 000031* 0000 BINIT2, ZBLOCK BINITLN /AMPLE SPACE FOR SPECIAL DEVICE INITIALIZATION 000032* 0000 000033* 0000 000034* 0000 000035* 0000 000036* 0000 000037* 0000 000040* 0000 000041* 0000 000042* 0000 000043* 0000 000044* 0000 000045* 0000 000046* 0000 000047* 0000 000050* 0000 623 000051* 5420 JMP I BINIT /RETURN 624 625 / DEFAULT FILE LIST (USED ONLY IF NECESSARY). 626 627 000052* 0020 BFILE1, BINADR+.-. /BOOTSTRAP UNIT BITS WILL BE FILLED IN 628 /**** /U **** XOR ONE 629 000053* 0000 BFILE2, 0000+.-. /**** /D **** DOLBLK+BOOTSTRAP UNIT BITS 630 /**** /U **** XOR ONE 631 000054* 0000 0000 /THIS DEFINITELY ENDS THE LIST 632 633 / STARTING ADDRESS FOR VARIOUS LOADERS. 634 635 000055* 1513 BINGO, BAUTO+BPOFF /P AND OUTPUT FILES STARTING ADDRESS 636 /**** /P AND /R AND OUTPUT FILES **** BWORD2+BPOFF 637 /**** /P AND NO OUTPUT FILES **** BAUTO 638 /**** /P AND /R AND NO OUTPUT FILES **** RIMBEG 639 / SYSTEM LOADER IMAGE FOR "START". 640 641 STLOAD, RELOC SLOAD /WHERE THIS WILL EXECUTE 642 643 SLOAD, STRLOC= STLOAD-. /RELOCATION FACTOR FOR SYSTEM LOADER IMAGE 644 645 007632* 4240 SLOAD, JMS SYSIO /CALL I/O ROUTINES TO LOAD SCRATCH AREA 646 007633* 0000 SCORE, 0000 /TRANSFER ADDRESS; START AT 00000 647 007634* 3700 SFUN, 37^100+.-. /READ FUNCTION; UNIT BITS WILL BE FILLED IN 648 007635* 0020 SBLOCK, BINADR /BLOCK NUMBER FOR BINARY SCRATCH AREA 649 007636* 5637 STFLD, JMP I SYSTART /GO START IT UP 650 007637* 0000 SYSTART,.-. /**** /1-/7 **** JMP I SPARM 651 652 RELOC .+STRLOC /RESTORE OUR ORIGIN 653 PAGE 654 655 / THE BIN SYSTEM PROGRAM STARTS HERE. 656 657 IFNZRO .&177 658 IFNZRO .-200 659 660 BSTART= . /START OF BIN SYSTEM 661 662 000200* 0013 BBINLEN,BINLEN /LENGTH OF BIN SYSTEM; HERE IN CASE CHAINED TO 663 000201* 1577 TAD I [SCRSIZE] /GET CORE SIZE WORD 664 000202* 0175 AND [70] /JUST CURRENT CORE SIZE BITS IN AC[6-8] 665 000203* 7112 CLL RTR /MOVE DOWN TO AC[9-11] AND 666 000204* 7170 STL CMA RAR /FORM ONE'S COMPLEMENT COUNT 667 000205* 3001 DCA BCORCNT /SETUP /H, /Z FIELD COUNTER 668 000206* 1777 TAD I (SBLOCK) /GET OUR LOADING BLOCK 669 000207* 1376 TAD (BINLEN-VOFFSET)/CALCULATE MYTHICAL BASE BLOCK 670 000210* 3775 DCA I (VBASE+VOFF2) /STORE VIRTUAL BASE BLOCK 671 000211* 1777 TAD I (SBLOCK) /GET OUR LOADING BLOCK AGAIN 672 000212* 1200 TAD BBINLEN/(BINLEN)/CALCULATE LOWEST EXISTANT VIRTUAL BLOCK 673 000213* 3774 DCA I (VMBLOCK+VSOFF) /SETUP FOR FINAL LOADING LATER 674 000214* 1774 TAD I (VMBLOCK+VSOFF) /GET FINAL LOADING BLOCK BACK 675 000215* 3773 DCA I (VLOC+VOFF1) /SETUP VIRTUAL CLEARING/HALTING BLOCK ARGUMENT 676 000216* 1774 TAD I (VMBLOCK+VSOFF) /GET FINAL LOADING BLOCK AGAIN 677 000217* 3772 DCA I (VBLOC+VOFF2) /SETUP VIRTUAL DUMPING ROUTINE 678 679 / SETUP "BIN" UNIT BITS IN FUNCTION CALLS, ETC. FOR /V LOADER. 680 681 000220* 1416 UNITLP, TAD I TXR /GET A LOCATION REQUIRING OUR UNIT BITS 682 000221* 7510 SPA /END OF LIST? 683 000222* 5231 JMP CONSETUP /YES, GO DO OTHER FIXUPS 684 000223* 3000 DCA BZIP /NO, STASH THE ADDRESS 685 000224* 1574 TAD I [SFUN] /GET OUR LOAD FUNCTION 686 000225* 0173 AND [7] /JUST UNIT BITS 687 000226* 1400 TAD I BZIP /GET FUNCTION BITS FROM ADDRESS 688 000227* 3400 DCA I BZIP /STASH COMPOSITE 689 000230* 5220 JMP UNITLP /GO BACK FOR MORE 690 000231* 0572 CONSETU,AND I [SBOOT] /GET BOOTSTRAP INSTRUCTION 691 000232* 1371 TAD (-JMSSYSIO) /COMPARE TO POSSIBLE VALUE 692 000233* 7650 SNA CLA /SKIP IF OTHER 693 000234* 5240 JMP CHKCOVRLAY /JUMP IF IT MATCHES 694 000235* 2742 ISZ I PCHKKRS/(CHKKRS+VOFF2) /MAKE "KRSIOT" 695 000236* 2742 ISZ I PCHKKRS/(CHKKRS+VOFF2) /INTO "KRBIOT" 696 000237* 3770 DCA I (CHKKCC+VOFF2) /DESTROY "KCCIOT" 697 000240* 7326 CHKCOVR,NL0002 /SET "C" BIT MASK 698 000241* 0577 AND I [SCRSIZE] /GET THE "C" BIT 699 000242* 7650 SNA CLA /SKIP IF OVERLAY PRESENT 700 000243* 5256 JMP BTESTZ /JUMP IF NOT 701 000244* 1577 TAD I [SCRSIZE] /GET THE CORE SIZE WORD 702 000245* 7012 RTR;RAR /MOVE OVER MCS BITS 000246* 7010 703 000247* 0175 AND [70] /ISOLATE MCS BITS 704 000250* 1367 TAD (CIF 10) /TURN INTO "CIF MCS+10" 705 000251* 3766 DCA I (CHKKSF+VOFF2) /STORE OVER "KSFIOT" 706 000252* 1766 TAD I (CHKKSF+VOFF2) /GET "CIF MCS+10" BACK 707 000253* 3576 DCA I [P7TSF+VOFF2] /STORE OVER "TSFIOT" 708 000254* 3770 DCA I (CHKKCC+VOFF2) /DESTROY "KCCIOT" 709 / TAD (BCONLST-1) /POINT AT OUR LIST 710 / JMS I [BREPLC] /GO DO CONSOLE OVERLAY ZAPS 711 000255* 5331 JMP BREPL2 /DO IT THIS WAY! 712 713 / COMES BACK HERE AFTER DOING CONSOLE ZAPS. 714 715 000256* 7332 BTESTZ, NL2000 /CHECK FOR /Z 716 000257* 0571 AND I [SWY9] /AND JUST /Z 717 000260* 7640 SZA CLA /SKIP IF OFF 718 000261* 3765 DCA I (BZSET) /MAKE ZAP INDICATING /Z 719 000262* 1570 BTESTH, TAD I [SWAL] /CHECK FOR /H 720 000263* 0364 AND (20) /AND JUST /H 721 000264* 7650 SNA CLA /SKIP IF SET 722 000265* 3763 DCA I (BHSET) /MAKE ZAP INDICATING NO /H 723 000266* 4567 JMS I [TSTFLD] /TEST FOR STARTING FIELD 724 / SETUP DEFAULT FILE LIST IN CASE /B, /D, /G, /U. 725 726 000267* 4566 JMS I [GBUNIT] /GET BOOTSTRAP UNIT 727 000270* 1364 TAD (BINADR) /GET SCRATCH BLOCK BITS 728 000271* 3052 DCA BFILE1 /STORE AS FIRST DEFAULT FILE 729 000272* 1565 BTESTU, TAD I [SWMX] /CHECK FOR /U 730 000273* 0164 AND [10] /AND JUST /U 731 000274* 7650 SNA CLA /SKIP IF SET 732 000275* 5304 JMP DSETUP /JUMP IF NOT 733 000276* 1052 TAD BFILE1 /GET FIRST DEFAULT FILE 734 000277* 7110 CLL RAR /MOVE LOW-ORDER TO LINK 735 000300* 7024 CML RAL /INVERT AND RESTORE 736 000301* 3052 DCA BFILE1 /SAVE BACK XOR-ED UNIT 737 000302* 1362 TAD (NL7777) /FORCE DEFAULT FILE LIST 738 000303* 3761 DCA I (BFORCE) /IF NECESSARY 739 000304* 1052 DSETUP, TAD BFILE1 /GET FIRST DEFAULT FILE 740 000305* 1364 TAD (DOLBLK-BINADR) /UPDATE TO SECOND DEFAULT FILE 741 000306* 3000 DCA BZIP /SAVE IN CASE NEEDED 742 000307* 1570 BTESTD, TAD I [SWAL] /CHECK FOR /D 743 000310* 0163 AND [400] /BUT ONLY /D 744 000311* 7650 SNA CLA /SKIP IF SET 745 000312* 5316 JMP BTESTR /TEST FOR /R 746 000313* 1362 TAD (NL7777) /FORCE DEFAULT FILE LIST 747 000314* 3761 DCA I (BFORCE) /IF NECESSARY 748 000315* 1000 TAD BZIP /GET SECOND DEFAULT FILE 749 000316* 3053 BTESTR, DCA BFILE2 /SETUP (OR ZERO) SECOND FILE 750 000317* 1565 TAD I [SWMX] /CHECK FOR /R 751 000320* 0162 AND [100] /JUST /R 752 000321* 7640 SZA CLA /SKIP IF OFF 753 000322* 1360 TAD (RMLIST-1) /PASS REPLACEMENT LIST ADDRESS IF ON 754 000323* 4561 JMS I [BREPLC] /CALL ZAPPING ROUTINE 755 000324* 5757 JMP I (BTESTF) /CONTINUE THERE 756 757 000325* 0256 BREPLC, BTESTZ /REPLACEMENT ROUTINE; INITIALIZED FOR CONSOLE ZAPS 758 000326* 7450 SNA /ANY LIST PASSED? 759 000327* 5725 JMP I BREPLC /NO, FORGET IT 760 000330* 3010 DCA BXR /YES, SAVE ZAP LIST ADDRESS 761 000331* 1410 BREPL2, TAD I BXR /GET ADDRESS TO BE ZAPPED 762 000332* 7450 SNA /END OF LIST? 763 000333* 5725 JMP I BREPLC /YES, RETURN 764 000334* 3000 DCA BZIP /NO, STASH THE ADDRESS 765 000335* 1410 TAD I BXR /GET REPLACEMENT VALUE 766 000336* 3400 DCA I BZIP /ZAP IT IN 767 000337* 5331 JMP BREPL2 /KEEP GOING 768 / CONSOLE OVERLAY REPLACEMENT LIST. 769 770 000340* 2471 BCONLST,CHKJMP+VOFF2 /WAS "JMP I CTLCTST" 771 000341* 4031 JMS INCON /MAKE IT CALL INPUT ROUTINE 772 000342* 2472 PCHKKRS,CHKKRS+VOFF2 /WAS "KRSIOT" OR "KRBIOT" 773 000343* 5666 CTLCTST&177+JMPIC /MAKE IT "JMP I CTLCTST" 774 000344* 2513 P7JMP+VOFF2 /WAS "JMP P7AGN" 775 000345* 4033 JMS OUTCON /MAKE IT CALL OUTPUT ROUTINE 776 000346* 2514 P7TLS+VOFF2 /WAS "TLSIOT" 777 000347* 5310 P7AGN&177+JMPC /MAKE IT "JMP P7AGN" 778 000350* 0000 0000 /THIS ENDS THE LIST 779 780 000357* 0431 PAGE 000360* 1276 000361* 0446 000362* 7240 000363* 1202 000364* 0020 000365* 1203 000366* 2470 000367* 6212 000370* 2503 000371* 3540 000372* 2404 000373* 2204 000374* 2151 000375* 2526 000376* 7766 000377* 7635 781 / THE START SYSTEM PROGRAM STARTS HERE. 782 783 IFNZRO .&177 784 785 START= . /START SYSTEM STARTS HERE 786 787 000400* 0051 PBFILE1,BFILE1-1 /POINTER TO DEFAULT FILE LIST; HERE IN CASE CHAINED TO 788 000401* 4567 JMS I [TSTFLD] /TEST FOR STARTING FIELD 789 000402* 1560 TAD I [SPARM] /GET STARTING ADDRESS 790 000403* 7040 CMA /INVERT FOR TESTING 791 000404* 7450 SNA /SKIP IF ANY WAS GIVEN 792 000405* 1377 TAD (-200-1) /ELSE USE 000200 BY DEFAULT 793 000406* 7040 CMA /NOW HAVE ORIGINAL OR 000200 794 000407* 3063 DCA SYSTART+STRLOC /STORE STARTING ADDRESS 795 000410* 1002 TAD BFIELD /GET STARTING FIELD 796 000411* 7450 SNA /SKIP IF EXTENDED FIELD START 797 000412* 5221 JMP STROK /JUMP IF NORMAL FIELD ZERO START 798 000413* 1376 TAD (CIF CDF 00) /TURN INTO STARTING FIELD INSTRUCTION 799 000414* 3062 DCA STFLD+STRLOC /STORE IN SYSTEM LOADER IMAGE 800 000415* 1063 TAD SYSTART+STRLOC /GET STARTING ADDRESS 801 000416* 3560 DCA I [SPARM] /STORE IN EQUALS PARAMETER WORD 802 000417* 1375 TAD (SPARM&177+JMPIC) /MAKE IT DO 803 000420* 3063 DCA SYSTART+STRLOC /"JMP I SPARM" INSTEAD 804 000421* 4566 STROK, JMS I [GBUNIT] /GET BOOTSTRAP UNIT 805 000422* 1060 TAD SFUN+STRLOC/[37^100] /ADD ON PAGE BITS 806 000423* 3060 DCA SFUN+STRLOC /STORE IN SYSTEM LOADER IMAGE 807 000424* 4557 JMS I [BMOVE] /\ 808 000425* 0056 STLOAD / \MOVE DOWN THE 809 000426* 7632 SLOAD / /SYSTEM LOADER 810 000427* 7772 SLOAD-SYSIO // 811 000430* 5556 JMP I [SLOAD] /GO START IT UP 812 813 000431* 1570 BTESTF, TAD I [SWAL] /CHECK FOR /F 814 000432* 0162 AND [100] /AND ONLY /F 815 000433* 7640 SZA CLA /SKIP IF OFF 816 000434* 1374 TAD (HILIST-1) /GET REPLACEMENT LIST ADDRESS IF ON 817 000435* 4561 JMS I [BREPLC] /CALL ZAPPING ROUTINE 818 000436* 1565 BTESTP, TAD I [SWMX] /CHECK FOR /P 819 000437* 0163 AND [400] /AND JUST /P 820 000440* 7650 SNA CLA /SKIP IF SET 821 000441* 5326 JMP BFILD /LOAD BINARY FILES 822 000442* 1555 TAD I [SOUTFLS] /GET NUMBER OF OUTPUT FILES 823 000443* 7640 SZA CLA /SKIP IF NONE 824 000444* 5253 JMP BMVBIP /MOVE DOWN BIP OVERLAYS 825 000445* 1570 TAD I [SWAL] /CHECK FOR /B OR /G 826 000446* 0373 BFORCE, AND (2040) /**** /D OR /U **** NL7777 827 000447* 7650 SNA CLA /SKIP IF DEFAULT FILES 828 000450* 5303 JMP BLODE /JUST DO PAPER TAPE LOADING 829 000451* 1200 TAD PBFILE1/(BFILE1-1) /POINT OUTPUT FILE HANDLER 830 000452* 3003 DCA BFPTR /TO INTERNAL LIST 831 000453* 1555 BMVBIP, TAD I [SOUTFLS] /GET NUMBER OF OUTPUT FILES AGAIN 832 000454* 1160 TAD [SFILES-1] /MOVE UP TO POINT 833 000455* 3016 DCA TXR /TO FIRST INPUT FILE 834 000456* 3416 DCA I TXR /DESTROY INPUT FILES 835 000457* 7326 NL0002 /SETUP "C" BIT MASK 836 000460* 0577 AND I [SCRSIZE] /GET THE BIT 837 000461* 7640 BMVZAP, SZA CLA /SKIP IF NO OVERLAY **** /F **** CLA!400 838 000462* 3554 DCA I [CBPLIST] /PREVENT CONTROL CHARACTER DESTRUCTION 839 000463* 1372 TAD (BPLIST-1) /GO DO 840 000464* 4561 JMS I [BREPLC] /BIN ZAPS 841 000465* 4771 JMS I (BCLEAR) /SETUP FOR BIN FILE 842 000466* 3272 DCA BLDMZP /PREVENT BAD REAL DATA FIELD 843 000467* 1002 BLDMOR, TAD BFIELD /GET OPTIONAL FIELD SWITCH 844 000470* 1301 TAD BEXFLD /ADD ON CDF INSTRUCTION 845 000471* 3770 DCA I (BMTEM+BPOFF) /PUT IN LOADER TEMPORARY FOR BIN OR RIM 846 000472* 1770 BLDMZP, TAD I (BMTEM+BPOFF) /**** /P AND OUTPUT FILES **** 0000 847 000473* 3301 DCA BEXFLD /PUT IT IN-LINE FOR RIM OR BIN LOADER 848 000474* 6032 RDINIT, KCCIOT /**** /F **** RFC 849 000475* 1055 TAD BINGO /GET OUR STARTING ADDRESS 850 000476* 3777 DCA I (BLDST) /SETUP HALTING/CLEARING ROUTINE IN CASE /H OR /Z 851 000477* 7410 BHZAP, SKP /**** /P AND NO FILES AND /H OR /Z **** 0000 852 000500* 5553 JMP I [BFILIT] /CLEAR/HALT CORE BEFORE STARTING 853 000501* 6201 BEXFLD, CDF 00+.-. /**** /P AND OUTPUT FILES **** 0000 854 000502* 5455 JMP I BINGO /STARTUP BIN (OR RIM) 855 856 000503* 2055 BLODE, ISZ BINGO /UPDATE STARTING ADDRESS 857 000504* 2370 ISZ (BMTEM+BPOFF) /UPDATE POINTER 858 000505* 2367 ISZ (BPAGE-SBOOT) /DONE YET? 859 000506* 5303 JMP BLODE /NO, GO BACK 860 000507* 7410 RIMZAP, SKP /**** /R **** 0000 861 000510* 2055 ISZ BINGO /FIELD INTERCEPT ROUTINE NOT USED IF RIM LOADING 862 000511* 4766 JMS I (SLURPREAD) /READ IN SLURP BLOCK TO GET THE BOOTSTRAP 863 000512* 4020 JMS BINIT /INITIALIZE SLURP BOOTSTRAP 864 000513* 4557 JMS I [BMOVE] /\ 865 000514* 2600 SLUPAGE / \ 866 000515* 7600 SBOOT / \ 867 000516* 7735 -BBLEN / \MOVE DOWN BOOTSTRAP AND 868 000517* 4557 JMS I [BMOVE] / /THE BIN AND RIM LOADERS 869 000520* 1443 BEGG+BPOFF / / 870 000521* 7643 BEGG / / 871 000522* 7643 BEGG // 872 000523* 7240 NL7777 /INDICATE PAPER TAPE LOADING 873 000524* 4552 JMS I [BHZ] /CHECK FOR /H OR /Z 874 000525* 5267 JMP BLDMOR /GET STARTING FIELD AND BEGIN LOADING 875 000526* 1555 BFILD, TAD I [SOUTFLS] /GET NUMBER OF OUTPUT FILES 876 000527* 1347 TAD PSFILES/(SFILES) /MOVE UP POINTER 877 000530* 7500 SMA /SKIP IF STILL SOME INPUT FILES 878 000531* 5345 JMP BNOINF /ALL OUTPUT, NO INPUT 879 000532* 3000 DCA BZIP /SAVE AS POINTER 880 000533* 1160 TAD [SFILES-1] /SETUP THE 881 000534* 3016 DCA TXR /INPUT POINTER 882 000535* 1400 BFMLUP, TAD I BZIP /\ 883 000536* 3416 DCA I TXR / >MOVE DOWN THE INPUT FILES 884 000537* 2000 ISZ BZIP // 885 000540* 5335 JMP BFMLUP /GO BACK 'TIL DONE 886 000541* 3416 DCA I TXR /SETUP INDICATOR 887 000542* 1747 TAD I PSFILES/(SFILES) /GET FIRST INPUT FILE 888 000543* 7640 SZA CLA /SKIP IF NONE 889 000544* 5351 JMP BMOVEV /JUMP IF ANY 890 000545* 4557 BNOINF, JMS I [BMOVE] /\ 891 000546* 0052 BFILE1 / \MOVE DOWN THE DEFAULT FILES (/B, 892 000547* 7757 PSFILES,SFILES / //D, /G, /U, ETC. ALREADY DONE) 893 000550* 7775 -3 // 894 000551* 4557 BMOVEV, JMS I [BMOVE] /\ 895 000552* 2200 VPAGE / \MOVE DOWN 896 000553* 7200 VLOAD / /V LOADER 897 000554* 7414 VLOAD-VEND // 898 000555* 1560 TAD I [SPARM] /GET EQUALS PARAMETER 899 000556* 7040 CMA /INVERT FOR TESTING 900 000557* 7640 SZA CLA /SKIP IF NO STARTING ADDRESS SPECIFIED 901 000560* 1002 TAD BFIELD /GET FIELD SETTING 902 000561* 1376 TAD (CIF CDF 00) /TURN INTO STARTING FIELD INSTRUCTION 903 000562* 3551 DCA I [VCIF] /STORE IN /V LOADER 904 000563* 5765 JMP I (BTESTW) /CONTINUE THERE 905 906 000565* 0616 PAGE /END OF PAGE FOR NOW 000566* 0735 000567* 1600 000570* 1551 000571* 2117 000572* 1261 000573* 2040 000574* 1307 000575* 5756 000576* 6203 000577* 7577 907 / THE GET SYSTEM PROGRAM STARTS HERE. 908 909 IFNZRO .&177 910 911 GET= . /GET SYSTEM STARTS HERE 912 913 000600* 0050 B50, 50 /CONSTANT 0050; HERE IN CASE CHAINED TO 914 000601* 1570 TAD I [SWAL] /GET /A-/L SWITCHES 915 000602* 0377 AND (7727) /REMOVE /G, /I 916 000603* 1200 TAD B50/(50) /FORCE THEM ON 917 000604* 3570 DCA I [SWAL] /STORE BACK 918 000605* 7346 NL7775 /SETUP MASK 919 000606* 0565 AND I [SWMX] /SAVE ALL BUT /W 920 000607* 3565 DCA I [SWMX] /STORE BACK 921 000610* 1571 TAD I [SWY9] /GET /Y-/9 SWITCHES 922 000611* 0376 AND (7003) /REMOVE /1-/7 923 000612* 3571 DCA I [SWY9] /STORE BACK 924 000613* 1156 TAD [SLOAD] /GET NEW STARTING ADDRESS 925 000614* 3560 DCA I [SPARM] /FORCE START IN SYSTEM LOADER 926 000615* 5405 JMP I CURORG/[BSTART] /GO STARTUP THE BIN SYSTEM 927 928 000616* 7326 BTESTW, NL0002 /CHECK FOR /W 929 000617* 0565 AND I [SWMX] /AND JUST /W 930 000620* 7640 SZA CLA /SKIP IF NOT SET 931 000621* 5775 JMP I (BSETPUNCHFLAG) /JUMP IF SET 932 000622* 1565 TAD I [SWMX] /CHECK FOR /V 933 000623* 0150 AND [4] /AND JUST /V 934 000624* 7640 SZA CLA /SKIP IF NOT SET 935 000625* 5302 JMP BSLSHV /JUMP IF SET 936 000626* 4335 JMS SLURPREAD /READ IN SLURP LOADER 937 000627* 1774 TAD I (SLPSA&177+SLUPAGE) /GET STARTING ADDRESS 938 000630* 7450 SNA /SKIP IF A SLURP LOADER PRESENT 939 000631* 5302 JMP BSLSHV /JUMP IF NOT 940 000632* 3004 DCA BSLPGO /SAVE STARTING ADDRESS 941 000633* 1570 TAD I [SWAL] /CHECK FOR /I 942 000634* 0164 AND [10] /AND JUST /I 943 000635* 7650 SNA CLA /SKIP IF ON 944 000636* 5265 JMP BNOI /JUMP IF OFF 945 000637* 7326 NL0002 /SETUP "C" BIT MASK 946 000640* 0577 AND I [SCRSIZE] /GET THE "C" BIT 947 000641* 7650 SNA CLA /SKIP IF OVERLAY ON 948 000642* 5252 JMP ALLOWI /ELSE JUST ALLOW /I 949 000643* 1571 TAD I [SWY9] /GET /Y-/9 950 000644* 0373 AND (774) /JUST /1-/7 951 000645* 7650 SNA CLA /SKIP IF ANY OF THESE SET 952 000646* 1560 TAD I [SPARM] /ELSE GET EQUALS PARAMETER 953 000647* 1372 TAD (-SLOAD) /COMPARE TO MAGIC VALUE 954 000650* 7640 SZA CLA /SKIP IF IT MATCHES 955 000651* 5302 JMP BSLSHV /ELSE FORGET IT 956 000652* 3771 ALLOWI, DCA I (SFILES+20) /CLEAR LAST POTENTIAL FILE 957 000653* 1754 TAD I BIPTR /GET A FILE 958 000654* 7650 SNA CLA /END OF LIST? 959 000655* 5260 JMP BFINDI /YES, GO STICK IT IN 960 000656* 2354 ISZ BIPTR /BUMP TO NEXT 961 000657* 5253 JMP .-4 /NO, GO BACK 962 000660* 4566 BFINDI, JMS I [GBUNIT] /GET BOOTSTRAP UNIT 963 000661* 1270 TAD IBLK/(IBLOCK) /ADD ON BLOCK BITS 964 000662* 3754 DCA I BIPTR /PUT INTO FILE LIST 965 000663* 4324 JMS CHEKST /CHECK IF PARAMETER PASSED 966 000664* 7776 BISTRT /PUT IN THIS ADDRESS IF NONE 967 000665* 1770 BNOI, TAD I (SPARM&177+SLUPAGE) /GET DEFAULT STARTING ADDRESS OF SLURP LOADER 968 000666* 3270 DCA IBLK /STORE IN-LINE 969 000667* 4324 JMS CHEKST /CHECK FOR LACK OF PARAMETER 970 000670* 0060 IBLK, IBLOCK /WILL BE BERR WHEN NEEDED 971 000671* 4020 JMS BINIT /INITIALIZE SLURP LOADER 972 000672* 4557 JMS I [BMOVE] /\ 973 000673* 2600 SLUPAGE / \MOVE DOWN 974 000674* 7600 SBOOT / /SLURP LOADER 975 000675* 7622 SBOOT-SPARM // 976 000676* 1551 TAD I [VCIF] /GET STARTING FIELD'S FINAL VALUE 977 000677* 3767 DCA I (BCIF) /PUT IT INTO SLURP LOADER 978 BSLPSTA,/NL0000 /INDICATE WE ARE CALLING 979 000700* 4552 JMS I [BHZ] /CHECK FOR /H OR /Z 980 000701* 5404 JMP I BSLPGO /START THE SLURP OR /V LOADER 981 982 000702* 4557 BSLSHV, JMS I [BMOVE] /\ 983 000703* 2147 VSLOAD / \MOVE DOWN THE 984 000704* 7604 SWAL / /LAST I/O CALL 985 000705* 7774 SWAL-SDATE // 986 000706* 4557 JMS I [BMOVE] /\ 987 000707* 2153 SLVRES / \RESTORE CORE 988 000710* 7632 SLOAD / /SAVE ABILITY 989 000711* 7772 SLOAD-SYSIO // 990 000712* 4566 JMS I [GBUNIT] /GET BOOTSTRAP UNIT 991 000713* 1574 TAD I [SFUN] /ADD ON WRITE FUNCTION 992 000714* 3574 DCA I [SFUN] /STORE IT BACK 993 000715* 4324 JMS CHEKST /CHECK FOR STARTING ADDRESS 994 000716* 7776 BISTRT /PUT IN THIS ADDRESS IF NONE 995 000717* 1366 TAD (-VLOAD) /PREVENT DESTRUCTION OF 996 000720* 3765 DCA I (BCLCNT+FIRELOC) /V IN CASE /H OR /Z 997 000721* 1364 TAD (VLOAD) /UPDATE THE 998 000722* 3004 DCA BSLPGO /STARTING ADDRESS 999 000723* 5300 JMP BSLPSTART /NOW FINISH UP AS DID SLURP LOADER 1000 1001 000724* 0000 CHEKST, .-. /CHECK FOR PASSED STARTING ADDRESS 1002 000725* 1560 TAD I [SPARM] /GET PARAMETER 1003 000726* 7040 CMA /INVERT FOR TESTING 1004 000727* 7640 SLSYSIO,SZA CLA /SKIP IF IT WAS DEFAULT 1005 000730* 5333 JMP CHKEXT /ELSE RETURN 1006 000731* 1724 TAD I CHEKST /GET NEW VALUE 1007 000732* 3560 DCA I [SPARM] /STORE IT 1008 000733* 2324 CHKEXT, ISZ CHEKST /BUMP PAST ARGUMENT 1009 000734* 5724 JMP I CHEKST /RETURN 1010 000735* 0000 SLURPRE,.-. /SLURP LOADER READ ROUTINE 1011 000736* 4566 JMS I [GBUNIT] /GET BOOTSTRAP UNIT 1012 000737* 1162 TAD [1^100] /ADD ON READ FUNCTION 1013 000740* 3343 DCA SLURFUN /STORE IN-LINE 1014 000741* 4727 JMS I SLSYSIO/(SYSIO) /CALL I/O ROUTINES 1015 000742* 2600 SLUPAGE /BUFFER 1016 000743* 0000 SLURFUN,.-. /FUNCTION WORD; UNIT BITS WILL BE FILLED IN 1017 000744* 0100 SLPBLK /BLOCK 1018 000745* 1763 SLMILP, TAD I (SFILES&177+SLUPAGE) /GET AN INITIALIZING WORD 1019 000746* 3031 DCA BINIT2 /STORE IT 1020 000747* 2346 ISZ .-1 /BUMP TO NEXT 1021 000750* 2363 ISZ (SFILES&177+SLUPAGE) /BUMP THE POINTER 1022 000751* 2362 ISZ (-BINITLN) /DONE YET? 1023 000752* 5345 JMP SLMILP /NO, KEEP GOING 1024 000753* 5735 JMP I SLURPREAD /YES, RETURN 1025 1026 000754* 7757 BIPTR, SFILES /FILE POINTER TO FIND /I BLOCK SLOT 1027 1028 000762* 7760 PAGE 000763* 2757 000764* 7200 000765* 1343 000766* 0600 000767* 7746 000770* 2756 000771* 7777 000772* 0146 000773* 0774 000774* 2777 000775* 1000 000776* 7003 000777* 7727 1029 001000* 1570 BSETPUN,TAD I [SWAL] /GET /A-/L 1030 001001* 0162 AND [100] /JUST /F 1031 001002* 7650 SNA CLA /SKIP IF SET 1032 001003* 5207 JMP BTSTCONSOLE /JUMP IF NOT 1033 001004* 6021 PSF /FLAG UP? 1034 001005* 6026 PLS /NO, SET IT 1035 001006* 5217 JMP BPUN /CONTINUE THERE 1036 1037 001007* 6041 BTSTCON,TSFIOT /FLAG UP? 1038 001010* 7410 SKP /SKIP IF NOT 1039 001011* 5217 JMP BPUN /JUMP IF SO 1040 001012* 2000 ISZ BZIP /WAIT FOR 1041 001013* 5212 JMP .-1 /AWHILE 1042 001014* 2335 ISZ BSCRIBE /WAITING LONG ENOUGH? 1043 001015* 5207 JMP BTSTCONSOLE /NO, KEEP WAITING 1044 001016* 6046 TLSIOT /YES, JUST SET THE FLAG 1045 001017* 3027 BPUN, DCA BCHECK /START PUNCH ROUTINE WITH CLEAR CHECKSUM 1046 001020* 4325 JMS BLEED /PUT IN A LEADER 1047 001021* 4777 BPUNLP, JMS I (VGIMME) /GET A WORD 1048 001022* 5225 JMP BTSTEOF /WORD IS OR FIELD 1049 001023* 4240 JMS BPUTWD /PUNCH DATA OR ORIGIN SETTING 1050 001024* 5221 JMP BPUNLP /KEEP GOING 1051 1052 001025* 7420 BTSTEOF,SNL /SKIP IF FIELD SETTING 1053 001026* 5233 JMP BWEOF /JUMP IF 1054 001027* 0175 AND [70] /JUST FIELD BITS 1055 001030* 4304 BRMFLD, JMS BFRAME /**** /R **** SKP CLA 1056 001031* 0300 300 /PUNCH A FIELD SETTING 1057 001032* 5221 JMP BPUNLP /KEEP GOING 1058 1059 001033* 3261 BWEOF, DCA RIMEND /PREVENT RIM PROBLEMS 1060 001034* 1027 TAD BCHECK /GET CHECKSUM 1061 001035* 4240 JMS BPUTWD /PUNCH IT 1062 001036* 4325 JMS BLEED /PUT OUT A TRAILER 1063 001037* 5572 JMP I [SBOOT] /BOOTSTRAP 1064 1065 001040* 0000 BPUTWD, .-. /PUT A WORD ROUTINE 1066 001041* 3325 DCA BLEED /SAVE WORD 1067 001042* 7000 BPTRIM, NOP /**** /R **** JMP RIMCHK 1068 001043* 7430 SZL /SKIP IF DATA 1069 001044* 1162 TAD [100] /ADD ON ORIGIN FLAG 1070 001045* 3276 DCA BCODE /SAVE FLAG VALUE 1071 001046* 1325 RIMOUT, TAD BLEED /GET PASSED WORD 1072 001047* 4267 RIMOT2, JMS BOUTPUT /PUNCH IT OUT 1073 001050* 5640 JMP I BPUTWD /RETURN 1074 001051* 7430 RIMCHK, SZL /DATA? 1075 001052* 5264 JMP SETORG /NO, HANDLE ORIGIN SETTING 1076 001053* 1162 TAD [100] /YES, SETUP AUTO-ORIGIN 1077 001054* 3276 DCA BCODE /TO CURRENT LOCATION 1078 001055* 1015 TAD RNEWLOC /GET CURRENT VALUE 1079 001056* 4267 JMS BOUTPUT /OUTPUT IT 1080 001057* 2015 ISZ RNEWLOC /BUMP TO NEXT 1081 001060* 0015 B15, 15 /CONSTANT 0015; HERE IN CASE IT SKIPS 1082 001061* 5246 RIMEND, JMP RIMOUT /**** **** 0000 1083 001062* 1027 TAD BCHECK /GET UPDATED CHECKSUM VALUE 1084 001063* 5247 JMP RIMOT2 /GO OUTPUT THAT VALUE INSTEAD OF PREVIOUS 1085 1086 001064* 1325 SETORG, TAD BLEED /GET LATEST VALUE 1087 001065* 3015 DCA RNEWLOC /SAVE AS CURRENT ORIGIN 1088 001066* 5640 JMP I BPUTWD /DON'T PUNCH IT, JUST RETURN 1089 1090 001067* 0000 BOUTPUT,.-. /WORD OUTPUT ROUTINE 1091 001070* 3000 DCA BZIP /SAVE PASSED VALUE 1092 001071* 1000 TAD BZIP /GET IT BACK 1093 001072* 7012 RTR;RTR;RTR /GET HIGH-ORDER HALF 001073* 7012 001074* 7012 1094 001075* 4304 JMS BFRAME /OUTPUT IT 1095 001076* 0000 BCODE, .-. /100=ORIGIN, 000=DATA 1096 001077* 1000 TAD BZIP /GET LOW-ORDER HALF 1097 001100* 4304 JMS BFRAME /OUTPUT IT 1098 001101* 0000 000 /ALWAYS 0000 1099 001102* 3276 DCA BCODE /CLEAR FOR OTHERS 1100 001103* 5667 JMP I BOUTPUT /RETURN 1101 1102 001104* 0000 BFRAME, .-. /PAPER TAPE OUTPUT 1103 001105* 0147 AND [77] /JUST 6-BIT 1104 001106* 1704 TAD I BFRAME /GET CODE (ORIGIN, ETC.) 1105 001107* 3014 DCA FLAGS /SAVE TEMPORARILY 1106 001110* 1014 TAD FLAGS /GET IT BACK 1107 001111* 1172 TAD [7600] /CHECK IF WE CHECKSUM 1108 001112* 7710 SPA CLA /SKIP IF NO 1109 001113* 1014 TAD FLAGS /ADD IT IN IF YES 1110 001114* 1027 TAD BCHECK /GET CURRENT CHECKSUM ALSO 1111 001115* 3027 DCA BCHECK /SAVE IT BACK 1112 001116* 4776 PUNLUP, JMS I (CHKUP) /CHECK FOR <^C>, ETC. 1113 001117* 1014 TAD FLAGS /RESTORE AC 1114 001120* 6041 LOPUN, TSFIOT /**** /F **** PSF 1115 001121* 5316 JMP PUNLUP /CHECK WHILE WAITING 1116 001122* 6046 TLSIOT /**** /F **** PLS 1117 001123* 4776 JMS I (CHKUP) /CHECK FOR <^C>, ETC. 1118 001124* 5704 JMP I BFRAME /EXECUTE HARMLESS ARGUMENT AND RETURN 1119 001125* 0000 BLEED, .-. /LEADER/TRAILER ROUTINE 1120 001126* 1225 TAD BTSTEOF/(-360) /SETUP FOR 2 FOOT LEADER 1121 001127* 3276 DCA BCODE /SAVE AS COUNTER 1122 001130* 4304 JMS BFRAME /PUNCH 1 FRAME 1123 001131* 0200 200 /OF LEADER TRAILER 1124 001132* 2276 ISZ BCODE /DONE YET? 1125 001133* 5330 JMP .-3 /NO, GO BACK 1126 001134* 5725 JMP I BLEED /YES, RETURN 1127 1128 001135* 7766 BSCRIBE,-12 /SCRIBE ROUTINE; INITIALIZED FOR PUNCH TIME OUT 1129 001136* 1260 TAD B15/("M&37) /\ 1130 001137* 4775 JMS I (P7CH+VOFF2) / \PRINT A 1131 001140* 1146 TAD ["J&37] / /AND A 1132 001141* 4775 JMS I (P7CH+VOFF2) // 1133 001142* 1735 BCHRLP, TAD I BSCRIBE /GET THE FIRST PAIR 1134 001143* 7012 RTR;RTR;RTR /GET HIGH-ORDER HALF 001144* 7012 001145* 7012 1135 001146* 4353 JMS BCROUT /OUTPUT IT 1136 001147* 1735 TAD I BSCRIBE /GET THE PAIR AGAIN 1137 001150* 2335 ISZ BSCRIBE /PUSH UP POINTER FOR NEXT PAIR 1138 001151* 4353 JMS BCROUT /OUTPUT LOW-ORDER HALF 1139 001152* 5342 JMP BCHRLP /DO NEXT PAIR 1140 1141 001153* 0000 BCROUT, .-. 1142 001154* 0147 AND [77] /JUST SIX-BIT 1143 001155* 7450 SNA /SKIP ON GOOD CHARACTER 1144 001156* 5735 JMP I BSCRIBE /WE FOUND THE END OF MESSAGE 1145 001157* 1145 TAD [40] /\ 1146 001160* 0147 AND [77] / >CONVERT TO SEVEN BIT ASCII 1147 001161* 1145 TAD [40] // 1148 001162* 4775 JMS I (P7CH+VOFF2) /PRINT IT 1149 001163* 5753 JMP I BCROUT /RETURN 1150 1151 001175* 2506 PAGE 001176* 7447 001177* 7255 1152 001200* 0000 BHZ, .-. /ROUTINE TO CHECK /H OR /Z 1153 001201* 3000 DCA BZIP /SAVE CALL INDICATOR 1154 001202* 5220 BHSET, JMP BCTFLD /**** NOT /H **** 0000 1155 001203* 5600 BZSET, JMP I BHZ /**** /Z **** 0000 1156 001204* 3341 DCA BFILL+FIRELOC /ZERO CORE INSTEAD OF HALTING IT 1157 001205* 5220 JMP BCTFLD /GO DO IT 1158 1159 001206* 4544 BZOOM, JMS I [CHKUP+VOFF2] /CHECK FOR <^C> PERIODICALLY 1160 001207* 6211 BNXFLD, CDF 10 /GOTO NEXT FIELD 1161 001210* 1341 TAD BFILL+FIRELOC /\ 1162 001211* 3742 DCA I BCORPT+FIRELOC / \FILL A FIELD WITH 1163 001212* 2342 ISZ BCORPT+FIRELOC / /7402/0000 'TIL DONE 1164 001213* 5210 JMP .-3 // 1165 001214* 1207 TAD BNXFLD /\ 1166 001215* 1164 TAD [10] / >SETUP FOR NEXT FIELD 1167 001216* 3207 DCA BNXFLD // 1168 001217* 6201 CDF 00 /DO THIS NOW TO PREVENT HAVOC LATER 1169 001220* 2001 BCTFLD, ISZ BCORCNT /DONE ALL FIELDS? 1170 001221* 5206 JMP BZOOM /NO, GO BACK AND DO ANOTHER 1171 001222* 2000 ISZ BZIP /WHO CALLED? 1172 001223* 5237 JMP BFLEND /FINISH UP FOR FILE LOADING 1173 001224* 1002 TAD BFIELD /GET OPTIONAL FIELD SWITCH 1174 001225* 1351 TAD BHZCDF+FIRELOC /ADD ON CDF INSTRUCTION 1175 001226* 3351 DCA BHZCDF+FIRELOC /PUT IN LINE FOR LATER 1176 001227* 3234 DCA BFLNDZP /DON'T STARTUP YET 1177 001230* 4557 BMVCLR, JMS I [BMOVE] /\ 1178 001231* 1341 BFILL+FIRELOC / \MOVE DOWN ROUTINE TO 1179 001232* 7565 BFILL / /CLEAR/HALT FIELD ZERO 1180 001233* 7765 BFILL-SBOOT // 1181 001234* 5553 BFLNDZP,JMP I [BFILIT] /**** /P AND NO OUTPUT FILES **** 0000 1182 001235* 3777 DCA I (BHZAP) /MAKE IT DO SO LATER 1183 001236* 5600 JMP I BHZ /JUST RETURN NOW 1184 1185 001237* 3653 BFLEND, DCA I ENDFLD/(VLOAD) /IN CASE /V 1186 001240* 1004 TAD BSLPGO /GET PROPER STARTING ADDRESS 1187 001241* 3353 DCA BLDST+FIRELOC /FOR THE CORRECT FILE LOADER 1188 001242* 5230 JMP BMVCLR /CONTINUE THERE 1189 001243* 0000 TSTFLD, .-. /TEST FOR /1-/7 1190 001244* 1571 TAD I [SWY9] /Y, /Z, /0-/9 1191 001245* 7106 CLL RTL /INITIALIZE FOR SHIFT 1192 001246* 7004 NXTFLD, RAL /SHIFT NEXT TEST BIT 1193 001247* 7510 SPA /THIS ONE SET? 1194 001250* 5253 JMP ENDFLD /YES 1195 001251* 2002 ISZ BFIELD /DONE ALL YET? 1196 001252* 5246 JMP NXTFLD /NO, GO BACK 1197 001253* 7200 ENDFLD, CLA /CLEAN UP 1198 001254* 1002 TAD BFIELD /GET COUNT 1199 001255* 0173 AND [7] /JUST GOOD BITS 1200 001256* 7106 CLL RTL /MOVE UP 1201 001257* 7004 RAL /TO FIELD BITS 1202 001260* 3002 DCA BFIELD /SAVE IT 1203 001261* 5643 JMP I TSTFLD /RETURN 1204 1205 / BINARY PAPER TAPE TO OUTPUT FILES REPLACEMENT LIST. 1206 1207 001262* 1504 BPLIST, BIPZP1+BPOFF; JMP I [BINEND]/FINISH UP WITH CHECKSUM IN AC 001263* 5543 1208 001264* 1526 BIPZP2+BPOFF; JMP I [BININT]/OUTPUT PREVIOUS WORD 001265* 5542 1209 001266* 1572 RIMZP1+BPOFF; JMP I [RIMINT]/OUTPUT LATEST WORD IF /R 001267* 5541 1210 001270* 1565 RIMZP2+BPOFF; JMP I [RIMLED]/INTERCEPT LEADER/TRAILER IF /R 001271* 5540 1211 001272* 7456 CBPLIST,CTLZP1; CLA!400 /MAKE IT IGNORE <^S> **** ZAPPED **** 0000 001273* 7600 1212 001274* 7475 CTLZP2; CTLXIT&177+JMPC /MAKE IT IGNORE <^C> 001275* 5304 1213 001276* 0000 0000 /END OF PAPER TAPE CHANGE LIST 1214 1215 / RIM FORMAT REPLACEMENT LIST. 1216 1217 001277* 1030 RMLIST, BRMFLD; SKP CLA /NO FIELD SETTINGS ON RIM TAPE 001300* 7610 1218 001301* 1042 BPTRIM; RIMCHK&177+JMPC /AUTO-ORIGIN ENABLE 001302* 5251 1219 001303* 0055 BINGO; BWORD2+BPOFF /USE RIM STARTING ADDRESS 001304* 1555 1220 001305* 0507 RIMZAP; 0000 /ALLOW NORMAL RIM LOADER IF NEEDED 001306* 0000 1221 001307* 0000 0000 /THIS ENDS THE LIST 1222 / HIGH-SPEED READER/PUNCH REPLACEMENT LIST. 1223 1224 001310* 0474 HILIST, RDINIT; RFC /WAS "KCCIOT" 001311* 6014 1225 001312* 1472 BNREAD+1+BPOFF; RSF /WAS "KSFIOT" 001313* 6011 1226 001314* 1474 BNREAD+3+BPOFF; RFC RRB /WAS "KRBIOT" 001315* 6016 1227 001316* 1506 BBEGIN+BPOFF; RFC /WAS "KCCIOT" 001317* 6014 1228 001320* 1556 RIMBEG+BPOFF; RFC /WAS "KCCIOT" 001321* 6014 1229 001322* 1557 RIMBG1+BPOFF; RSF /WAS "KSFIOT" 001323* 6011 1230 001324* 1561 RIMBG1+2+BPOFF; RFC RRB /WAS "KRBIOT" 001325* 6016 1231 001326* 1567 RIMZP2+2+BPOFF; RSF /WAS "KSFIOT" 001327* 6011 1232 001330* 1571 RIMZP2+4+BPOFF; RRB /WAS "KRSIOT" 001331* 6012 1233 001332* 1120 LOPUN; PSF /WAS "TSFIOT" 001333* 6021 1234 001334* 1122 LOPUN+2; PLS /WAS "TLSIOT" 001335* 6026 1235 001336* 0461 BMVZAP; CLA!400 /PREVENT CONTROL CHARACTER DESTRUCTION 001337* 7600 1236 001340* 0000 0000 /END OF "/F" LIST 1237 1238 001377* 0477 HERE, PAGE /END OF PAGE FOR NOW 1239 *HERE /RESET ORIGIN 1240 1241 HERE, RELOC SBOOT-13 /WHERE THIS ULTIMATELY EXECUTES 1242 1243 FIRELOC=HERE-. /RELOCATION FACTOR FOR FILL ROUTINE 1244 1245 007565* 7402 BFILL, HLT /**** /Z **** 0000 1246 007566* 0000 BCORPT, 0000 /FILLING POINTER 1247 007567* 0211 BCLCNT, -. /**** /V **** -VLOAD 1248 1249 007570* 2366 ISZ BCORPT /BUMP TO NEXT 1250 007571* 1365 BFILIT, TAD BFILL /GET FILLER WORD 1251 007572* 3766 DCA I BCORPT /STORE IT 1252 007573* 2367 ISZ BCLCNT /DONE ALL YET? 1253 007574* 5370 JMP BFILIT-1 /NO, GO BACK 1254 007575* 6201 BHZCDF, CDF 00 /**** /P AND NO OUTPUT FILES AND /1-/7 **** CDF 10-70 1255 007576* 5777 JMP I BLDST /STARTUP THE APPROPRIATE LOADER, ETC. 1256 1257 007577* 1513 BLDST, BAUTO+BPOFF /P AND FILES STARTUP ADDRESS 1258 /**** /P AND /R AND OUTPUT FILES **** BWORD2+BPOFF 1259 /**** /P AND NO OUTPUT FILES **** BAUTO 1260 /**** /P AND /R AND NO OUTPUT FILES **** RIMBEG 1261 /**** FILE LOADING **** BREAD 1262 /**** /V FILE LOADING **** VLOAD 1263 1264 SBOOT, RELOC .+FIRELOC /RESTORE OUR ORIGIN 1265 PAGE 1266 1267 BPAGE= . /BINARY (PAPER TAPE) LOADER PAGE 1268 1269 001400* 0000 BMOVE, .-. /MOVE ROUTINE 1270 001401* 7240 NL7777 /BACK UP FOR AUTO INDEX 1271 001402* 1600 TAD I BMOVE /GET FIRST ARGUMENT 1272 001403* 3016 DCA TXR /SET UP FROM INDEX REGISTER 1273 001404* 2200 ISZ BMOVE /PUSH UP POINTER 1274 001405* 7240 NL7777 /BACK UP FOR AUTO INDEX 1275 001406* 1600 TAD I BMOVE /GET SECOND ARGUMENT 1276 001407* 3010 DCA BXR /SET UP TO INDEX REGISTER 1277 001410* 2200 ISZ BMOVE /PUSH UP POINTER 1278 001411* 1600 TAD I BMOVE /GET THIRD ARGUMENT 1279 001412* 3000 DCA BZIP /SET UP TWO'S COMPLEMENT COUNT 1280 001413* 2200 ISZ BMOVE /PUSH UP POINTER FOR THE RETURN 1281 001414* 1416 BMOVLP, TAD I TXR /GET A WORD 1282 001415* 3410 DCA I BXR /NOW PUT IT AWAY 1283 001416* 2000 ISZ BZIP /DONE YET? 1284 001417* 5214 JMP BMOVLP /NO, GO DO SOME MORE 1285 001420* 5600 JMP I BMOVE /YES, RETURN 1286 1287 001421* 0000 BFLDCHK,.-. /FIELD SETTING ROUTINE 1288 001422* 1351 TAD BMTEM+BPOFF /GET POTENTIAL FIELD SETTING 1289 001423* 7650 SNA CLA /SKIP IF PRESENT 1290 001424* 5621 JMP I BFLDCHK /ELSE RETURN 1291 001425* 4537 JMS I [DANGIT] /CHECK IF ROOM STILL EXISTS 1292 001426* 7321 NL0001 STL /SET FIELD BITS 1293 001427* 3013 DCA EOFBIT /SAVE IN FIELD FLAG 1294 001430* 1351 TAD BMTEM+BPOFF /GET THE NEW FIELD SETTING 1295 001431* 3011 DCA CURFLD /STASH IT 1296 001432* 1011 TAD CURFLD /GET IT BACK 1297 001433* 4536 JMS I [BINOUT] /PUNCH IT WITH LINK ON 1298 001434* 3013 DCA EOFBIT /RESET THE FLAG 1299 001435* 3351 DCA BMTEM+BPOFF /ZERO THE FIELD SETTING 1300 001436* 5621 JMP I BFLDCHK /RETURN 1301 1302 001437* 0000 GBUNIT, .-. /GET BOOTSTRAP UNIT ROUTINE 1303 001440* 1535 TAD I [SBTFUN] /GET THE BOOTSTRAP UNIT WORD 1304 001441* 0173 AND [7] /ISOLATE THE UNIT BITS 1305 001442* 5637 JMP I GBUNIT /RETURN 1306 1307 ZBLOCK BPAGE+BBLEN-. /EMPTY SPACE 1308 1309 / THE FIRST 43 WORDS OF THE SLURP LOADER (FOR USE AS A BOOTSTRAP), ALONG 1310 / WITH THE REST OF THIS PAGE WILL BE MOVED TO 007600 FOR PAPER TAPE 1311 / STAND-ALONE OPTIONS (/P, /R, ETC.). 1312 1313 BHERE, RELOC .-BPAGE+SBOOT /WHERE THIS WILL BE LOADED 1314 1315 BPOFF= BHERE-. /RELOCATION FACTOR FOR PAPER TAPE LOADER 1316 /DEC PAPER TAPE BINARY AND RIM LOADERS FOR PAPER TAPE INPUT ZAPPED FOR BIP 1317 /(OR RIP) AS NECESSARY. 1318 1319 /ROUTINE TO EXTRACT ERRORS, FIELD SETTINGS, AND LEADER/TRAILER 1320 1321 007643* 0000 BEGG, .-. /HISTORICAL NAME 1322 007644* 4271 BEGG1, JMS BNREAD /GET A FRAME 1323 007645* 1305 TAD BNHLT /TEST FOR A 1324 007646* 7750 SPA SNA CLA /SKIP IF YES 1325 007647* 5255 BNLINE, JMP BGOOD /JUMP IF NO 1326 007650* 1247 TAD BNLINE /GET CURRENT INSTRUCTION 1327 007651* 7041 CIA /INVERT 1328 007652* 1353 TAD BMAGIC /ADD ON SUM OF BOTH 1329 007653* 3247 DCA BNLINE /STORE IT BACK 1330 007654* 5244 JMP BEGG1 /GET MORE CHARACTERS 1331 1332 007655* 1350 BGOOD, TAD BCHAR /\ 1333 007656* 0265 AND BN300/(300) / \ 1334 007657* 1307 TAD BN7600/(-200) / >CHECK FOR DATA OR ORIGIN, INCREMENT RETURN IF SO 1335 007660* 7510 SPA / / 1336 007661* 2243 ISZ BEGG // 1337 007662* 7750 SPA SNA CLA /RETURN IF NOT FIELD SETTING 1338 007663* 5643 JMP I BEGG /RETURN IF LEADER/TRAILER, SKIP RETURN IF DATA OR ORIGIN 1339 007664* 1350 TAD BCHAR /\ 1340 007665* 0300 BN300, AND BFMASK/(70) / \ 1341 007666* 1301 TAD BNCDF/(CDF) / >PROCESS FIELD SETTINGS 1342 007667* 3351 DCA BMTEM / / 1343 007670* 5244 JMP BEGG1 // 1344 1345 007671* 0000 BNREAD, .-. /INPUT ROUTINE 1346 007672* 6031 KSFIOT /**** /F **** RSF 1347 007673* 5272 JMP .-1 /WAIT FOR INPUT 1348 007674* 6036 KRBIOT /**** /F **** RFC RRB 1349 007675* 3350 DCA BCHAR /SAVE FRAME 1350 007676* 1350 TAD BCHAR /GET IT BACK 1351 007677* 5671 JMP I BNREAD /RETURN 1352 1353 IFNZRO .&177-100 1354 007700* 0070 BFMASK, 70 /HARMLESS AND 1355 007701* 6201 BNCDF, CDF 00 /CDF CONSTANT 1356 1357 007702* 4341 BEND, JMS BASEMB /TRAILER FOUND, ASSEMBLE LAST WORD 1358 007703* 7041 CIA /INVERT FOR CHECKSUM COMPARISON 1359 007704* 1352 BIPZP1, TAD BCHKSM /**** /P AND FILES **** JMP I [BINEND] 1360 007705* 7402 BNHLT, HLT /AC EQUALS ZERO IF NO ERRORS 1361 007706* 6032 BBEGIN, KCCIOT /**** /F **** RFC 1362 007707* 7600 BN7600, 7600 /CLEAN UP IN CASE HSR: 1363 007710* 6214 RDF /\ 1364 007711* 1301 TAD BNCDF/(CDF) / >SETUP INITIAL LOADING FIELD 1365 007712* 3351 DCA BMTEM // 1366 007713* 4243 BAUTO, JMS BEGG /GET A FRAME 1367 007714* 5313 JMP .-1 /IGNORE LEADER 1368 007715* 3352 BEGO, DCA BCHKSM /ZERO CHECKSUM, ADD ON IF RE-ENTERED 1369 007716* 1351 TAD BMTEM /SET UP 1370 007717* 3327 DCA BLODIT /DESIRED FIELD 1371 007720* 1350 TAD BCHAR /SAVE AS 1372 007721* 3354 DCA BWORD1 /FIRST FRAME 1373 007722* 4271 JMS BNREAD /GET NEXT 1374 007723* 3355 DCA BWORD2 /SAVE AS SECOND FRAME 1375 007724* 4243 JMS BEGG /GET NEXT FRAME 1376 007725* 5302 JMP BEND /TRAILER, GO FINISH UP 1377 007726* 4341 BIPZP2, JMS BASEMB /**** /P AND FILES **** JMP I [BININT] 1378 007727* 7402 BLODIT, HLT /CDF INTO LOADING FIELD 1379 007730* 7420 SNL /SKIP IF ORIGIN SETTING 1380 007731* 3776 DCA I RORG /STORE THE WORD IF DATA 1381 007732* 2376 ISZ RORG /PUSH POINTER 1382 007733* 7430 SZL /NO NOP NEEDED; SKIP IF ORIGIN 1383 007734* 3376 DCA RORG /SAVE ORIGIN 1384 007735* 1354 BCHEX, TAD BWORD1 /NOT RICE, CORN OR WHEAT 1385 007736* 1355 TAD BWORD2 /ADD LATEST WORDS 1386 007737* 1352 TAD BCHKSM /AND CHECKSUM 1387 007740* 5315 JMP BEGO /ACCUMULATE AND DO NEXT 1388 1389 007741* 0000 BASEMB, .-. /ASSEMBLE A WORD FROM 2 FRAMES 1390 007742* 1354 TAD BWORD1 /GET FIRST FRAME 1391 007743* 7106 CLL RTL /\ 1392 007744* 7006 RTL / >SHIFT LEFT 6 1393 007745* 7006 RTL // 1394 007746* 1355 TAD BWORD2 /ADD ON SECOND FRAME 1395 007747* 5741 JMP I BASEMB /RETURN 1396 1397 007750* 0000 BCHAR, .-. /INPUT BUFFER 1398 007751* 0000 BMTEM, .-. /FIELD TEMPORARY 1399 007752* 0000 BCHKSM, .-. /CHECKSUM 1400 007753* 2521 BMAGIC, BGOOD&177+BEGG1-SBOOT+JMPC+JMPC /SUM OF FLIP-FLOPPING INSTRUCTIONS 1401 007754* 0000 BWORD1, .-. /FRAME 1 TEMPORARY 1402 007755* 4534 BWORD2, JMS I [BFLDCHK] /FRAME 2 TEMPORARY; INITIALIZED FOR 1403 /RIM LOADER FIELD CHECK IF INTERCEPTING 1404 /RIM INPUT AND OUTPUTTING TO FILES 1405 1406 / THE RIM LOADER FOLLOWS. 1407 / LOW OR HIGH-SPEED RIM LOADER. 1408 1409 007756* 6032 RIMBEG, KCCIOT /**** /F **** RFC 1410 007757* 6031 RIMBG1, KSFIOT /**** /F **** RSF 1411 007760* 5357 JMP RIMBG1 /WAIT FOR DEVICE 1412 007761* 6036 KRBIOT /**** /F **** RFC RRB 1413 007762* 7106 CLL RTL /MOVE HIGH-ORDER OF FRAME 1414 007763* 7006 RTL /INTO HIGH-ORDER BITS 1415 007764* 7510 SPA /SKIP IF NOT LEADER/TRAILER 1416 007765* 5374 RIMZP2, JMP RIMCLR /**** /P /AND /R AND FILES **** JMP I [RIMLED] 1417 007766* 7006 RTL /MOVE FRAME INTO HIGH-ORDER SIX BITS 1418 007767* 6031 KSFIOT /**** /F **** RSF 1419 007770* 5367 JMP .-1 /WAIT FOR DEVICE 1420 007771* 6034 KRSIOT /**** /F **** RRB 1421 007772* 7420 RIMZP1, SNL /**** /P AND /R AND FILES **** JMP I [RIMINT] 1422 007773* 3776 DCA I RORG /LOAD A WORD 1423 007774* 3376 RIMCLR, DCA RORG /SET UP ORIGIN SETTING 1424 007775* 5356 RIMRET, JMP RIMBEG /GO BACK FOR MORE 1425 1426 007776* 0000 RORG, .-. /LOCATION COUNTER FOR RIM 1427 1428 007777* 5306 JMP BBEGIN /START BINARY LOADER 1429 1430 RELOC .-BEGG+BHERE /RESTORE OUR ORIGIN 1431 / RIM LOADER COMES HERE IF ZAPPED FOR RIM TO P?S/8 CONVERSION. 1432 1433 001600* 3015 RIMINT, DCA RNEWLOC /SAVE LATEST DATA WORD 1434 001601* 3226 DCA RLDRZP /PROVE WE'VE BEEN HERE BEFORE 1435 001602* 7420 SNL /LINK=1 IF ORIGIN SETTING 1436 001603* 5216 JMP RDATA /DATA WORD TO BE LOADED 1437 001604* 1365 TAD ROLDLOC /\ 1438 001605* 7040 CMA / >IS NEW ORIGIN ONE MORE THAN OLD ORIGIN? 1439 001606* 1015 TAD RNEWLOC // 1440 001607* 7650 SNA CLA /SKIP IF NOT 1441 001610* 5222 JMP RNXTORG /JUMP IF IT IS 1442 001611* 1015 TAD RNEWLOC /SET UP NEXT 1443 001612* 3365 DCA ROLDLOC /ORIGIN COMPARISON 1444 001613* 4537 JMS I [DANGIT] /CHECK FOR END OF ROOM 1445 001614* 7120 STL /INDICATE ORIGIN 1446 001615* 7410 SKP /CHECKED ALREADY BUT LINK IS SET FOR SURE 1447 001616* 4537 RDATA, JMS I [DANGIT] /CHECK FOR END OF ROOM 1448 001617* 1015 TAD RNEWLOC /LINK IS CLEAR IF DATA, SET IF ORIGIN 1449 001620* 4536 JMS I [BINOUT] /PUT IN A GOOD WORD 1450 001621* 5406 JMP I RRMRET /RETURN TO RIM LOADER 1451 1452 001622* 1015 RNXTORG,TAD RNEWLOC /SET UP NEXT 1453 001623* 3365 DCA ROLDLOC /ORIGIN COMPARISON 1454 001624* 5406 RIMBAK, JMP I RRMRET /RETURN TO RIM LOADER 1455 1456 / RIM LOADER COMES HERE ON LEADER/TRAILER IF RIM TO P?S/8 MODE. 1457 1458 001625* 7200 RIMLED, CLA /THROW AWAY LEADER 1459 001626* 5406 RLDRZP, JMP I RRMRET /**** LEADER AND OTHER DATA FOUND **** 0000 1460 001627* 1224 TAD RIMBAK /RESTORE 1461 001630* 3226 DCA RLDRZP /INSTRUCTION 1462 001631* 5244 JMP RFLCLS /FINISH UP 1463 1464 / BIN LOADER COMES HERE IF ZAPPED FOR BIN TO P?S/8 CONVERSION. 1465 1466 001632* 4534 BININT, JMS I [BFLDCHK] /ONCE ONLY 1467 001633* 3232 DCA BININT /DESTROY CALL 1468 001634* 4537 JMS I [DANGIT] /CHECK FOR END OF ROOM 1469 001635* 4777 JMS I (BASEMB+BPOFF) /ASSEMBLE THE WORD 1470 001636* 4536 JMS I [BINOUT] /PUNCH OUT THE WORD 1471 001637* 4534 JMS I [BFLDCHK] /CHECK FOR NEW FIELD SETTING 1472 001640* 5776 JMP I (BCHEX+BPOFF) /GO BACK FOR MORE 1473 1474 001641* 1775 BINEND, TAD I (BCHKSM+BPOFF) /ADD ON ACCUMULATED COUNT 1475 001642* 7640 SZA CLA /SKIP COMPLAINT ON ZERO CHECKSUM 1476 001643* 5353 JMP BADSUM /BAD CHECKSUM 1477 001644* 4533 RFLCLS, JMS I [BSCRIBE] /TELL ALL THE PEOPLE THAT YOU SEE 1478 001645* 0411 TEXT "DISABLE READER!" 001646* 2301 001647* 0214 001650* 0540 001651* 2205 001652* 0104 001653* 0522 001654* 4100 1479 001655* 4533 JMS I [BSCRIBE] /FOLLOW ME, FOLLOW ME DOWN 1480 001656* 1517 TEXT "MORE TAPES?" 001657* 2205 001660* 4024 001661* 0120 001662* 0523 001663* 7700 1481 001664* 4544 WAITIN, JMS I [CHKUP+VOFF2] /GET A CHARACTER 1482 001665* 1774 TAD I (INCHAR+VOFF2) /GET THE INPUTTED VALUE 1483 001666* 1373 TAD (-"Y!200) /COMPARE TO "Y" 1484 001667* 7440 SZA /SKIP IF YES 1485 001670* 5275 JMP BTRYNO /MAYBE NO 1486 001671* 4533 JMS I [BSCRIBE] /SAY "YES" 1487 001672* 3105 TEXT "YES" /YES 001673* 2300 1488 001674* 5772 JMP I (RDINIT) /RESTART BIN OR RIM 1489 1490 001675* 1371 BTRYNO, TAD (-"N+"Y) /TRY "N" 1491 001676* 7640 SZA CLA /SKIP IF NO 1492 001677* 5264 JMP WAITIN /TRY YES AGAIN 1493 001700* 4533 JMS I [BSCRIBE] /SAY "NO!" 1494 001701* 1617 TEXT "NO!" /NO! 001702* 4100 1495 001703* 7301 CLA CLL IAC /END OF FILE 1496 001704* 3013 DCA EOFBIT /TO FLAG 1497 001705* 4536 JMS I [BINOUT] /\ 1498 001706* 2012 ISZ DANGER / >WRITE OUT A FILE 1499 001707* 5305 JMP .-2 // 1500 001710* 4533 JMS I [BSCRIBE] /TELL HOW MANY FILES 1501 001711* 4060 BFLNUM, TEXT " 0 FILES CREATED." 001712* 4006 001713* 1114 001714* 0523 001715* 4003 001716* 2205 001717* 0124 001720* 0504 001721* 5600 1502 001722* 1570 BTESTG, TAD I [SWAL] /\ 1503 001723* 0145 AND [40] / \GO FURTHER 1504 001724* 7650 SNA CLA / /IF /G OPTION SET 1505 001725* 5572 JMP I [SBOOT] // 1506 001726* 1565 TAD I [SWMX] /\ 1507 001727* 0370 AND (-400-1) / >DESTROY PAPER TAPE SWITCH /P 1508 001730* 3565 DCA I [SWMX] // 1509 001731* 3555 DCA I [SOUTFLS] /DESTROY OUTPUT FILES SO THEY ARE INPUT FILES 1510 001732* 2003 ISZ BFPTR /BUMP PAST LAST FILE USED 1511 001733* 3403 DCA I BFPTR /CREATE END OF LIST 1512 001734* 1003 TAD BFPTR /GET THE POINTER 1513 001735* 7740 SMA SZA CLA /SKIP IF USING PASSED FILES 1514 001736* 1367 TAD (BFILE1-SFILES) /ELSE USE DEFAULT LIST 1515 001737* 1160 TAD [SFILES-1] /USE FILE LIST ADDRESS 1516 001740* 3003 DCA BFPTR /SETUP THE INPUT POINTER 1517 001741* 1160 TAD [SFILES-1] /SETUP THE 1518 001742* 3010 DCA BXR /OUTPUT POINTER 1519 001743* 2003 BGLOOP, ISZ BFPTR /BUMP TO NEXT FILE 1520 001744* 1403 TAD I BFPTR /GET A FILE ARGUMENT 1521 001745* 7450 SNA /END OF LIST? 1522 001746* 5351 JMP BGEND /YES, FINISH UP 1523 001747* 3410 DCA I BXR /NO, STASH IT IN NEW LIST 1524 001750* 5343 JMP BGLOOP /KEEP GOING 1525 1526 001751* 3410 BGEND, DCA I BXR /CREATE FINAL END OF LIST 1527 001752* 5556 JMP I [SLOAD] /BACK TO THE SYSTEM LOADER 1528 1529 001753* 4533 BADSUM, JMS I [BSCRIBE] /COMPLAIN OF 1530 001754* 0310 TEXT "CHECKSUM ERROR!" /CHECKSUM ERROR 001755* 0503 001756* 1323 001757* 2515 001760* 4005 001761* 2222 001762* 1722 001763* 4100 1531 001764* 5572 JMP I [SBOOT] /BOOTSTRAP 1532 1533 001765* 0000 ROLDLOC,.-. /RIM LOADER OLD LOCATION COUNTER 1534 1535 001767* 0073 PAGE 001770* 7377 001771* 0013 001772* 0474 001773* 7647 001774* 2525 001775* 1552 001776* 1535 001777* 1541 1536 002000* 0000 BINOUT, .-. /BINARY OUTPUT OF P?S FILES 1537 002001* 3000 DCA BZIP /SAVE PASSED ARGUMENT 1538 002002* 1013 TAD EOFBIT /CHECK FOR FIELD OR ORIGIN 1539 002003* 7640 BS1, SZA CLA /SKIP IF ORIGIN 1540 002004* 5213 JMP BNCOMN /FIELD SETTING 1541 002005* 1000 TAD BZIP /UPDATE TO 1542 002006* 7430 SZL /SKIP IF NOT ORIGIN 1543 002007* 3005 DCA CURORG /NEW ORIGIN 1544 002010* 7620 SNL CLA /SKIP IF ORIGIN 1545 002011* 2005 ISZ CURORG /INCREMENT ORIGIN FOR NEW DATA 1546 002012* 0540 BC1, "E-300^100+" -200 /HARMLESS AND JUST IN CASE IT SKIPS 1547 002013* 1000 BNCOMN, TAD BZIP /GET BACK ARGUMENT 1548 002014* 3410 DCA I BXR /PUT INTO BUFFER 1549 002015* 1014 TAD FLAGS /\ 1550 002016* 7006 RTL / \UPDATE FLAGS 1551 002017* 1013 TAD EOFBIT / /ACCORDINGLY 1552 002020* 3014 DCA FLAGS // 1553 002021* 7420 SNL /DONE SIX YET? 1554 002022* 5275 JMP BNOXIT /NO, JUST RETURN 1555 002023* 1010 TAD BXR /\ 1556 002024* 1377 TAD (7772) / \ 1557 002025* 3000 DCA BZIP / >PUT AWAY COMPLETE FLAG WORD 1558 002026* 1014 TAD FLAGS / / 1559 002027* 3400 DCA I BZIP // 1560 002030* 2010 ISZ BXR /BUMP PAST NEXT FLAG WORD 1561 002031* 2345 ISZ GRPCNT /DONE A WHOLE BLOCK (22 GROUPS) YET? 1562 002032* 5273 JMP NEWFLG /NO 1563 002033* 2010 ISZ BXR /BUMP PAST 1564 002034* 2010 ISZ BXR /TWO DUMMY WORDS 1565 002035* 1160 TAD [-22] /RESET 1566 002036* 3345 DCA GRPCNT /GROUP COUNT 1567 002037* 2344 ISZ BLKCNT /DONE A WHOLE FILE (20 BLOCKS) YET? 1568 002040* 5273 JMP NEWFLG /NO 1569 002041* 2003 ISZ BFPTR /BUMP TO NEXT FILE 1570 002042* 1403 TAD I BFPTR /GET IT 1571 002043* 0376 AND (7770) /JUST BLOCK BITS 1572 002044* 7450 SNA / 1573 002045* 5301 JMP TOMANY /YES, COMPLAIN 1574 002046* 3256 DCA BBLOCK /SAVE IN-LINE 1575 002047* 1403 TAD I BFPTR /GET UNIT BITS 1576 002050* 0173 AND [7] /MASK 'EM OFF 1577 002051* 1375 TAD (20^100+WRITE) /ADD ON WRITE 20 BLOCKS 1578 002052* 3255 DCA BWRFUN /PUT IN CALL 1579 002053* 4603 JMS I BS1/(SYSIO) /\ 1580 002054* 3000 BFLSPC, FILBEG / \WRITE 1581 002055* 6000 BWRFUN, 20^100+WRITE+.-. / /1 FILE 1582 002056* 0020 BBLOCK, BINADR // 1583 002057* 2346 ISZ BNMFLS /SKIP IF FIRST FILE 1584 002060* 1374 TAD ("S-" -100) /ELSE ADD ON "S" 1585 002061* 1212 TAD BC1 /TO BLURB 1586 002062* 3773 DCA I (BFLNUM+3) /PUT IN NICE MESSAGE 1587 002063* 2772 ISZ I (BFLNUM) /\ 1588 002064* 1772 TAD I (BFLNUM) / \ 1589 002065* 0146 AND [12] / \ 1590 002066* 1371 TAD (-12) / \UPDATE NUMBER 1591 002067* 7650 SNA CLA / /OF OUTPUTTED FILES 1592 002070* 1370 TAD (2066) / / 1593 002071* 1772 TAD I (BFLNUM) / / 1594 002072* 3772 DCA I (BFLNUM) // 1595 002073* 7201 NEWFLG, NL0001 /RESET FLAGS 1596 002074* 3014 DCA FLAGS /IRRELEVANT IF JUST WRITING OUT FILE 1597 002075* 1554 BNOXIT, TAD I [CBPLIST] /GET POSSIBLY ZAPPED VALUE 1598 002076* 7650 SNA CLA /SKIP IF NOT ZAPPED 1599 002077* 4544 JMS I [CHKUP+VOFF2] /WE CAN CHECK FOR <^C>, ETC. 1600 002100* 5600 JMP I BINOUT /RETURN 1601 1602 002101* 4533 TOMANY, JMS I [BSCRIBE] /COMPLAIN OF 1603 002102* 2417 TEXT "TOO BIG" /BINARY OVERFLOW 002103* 1740 002104* 0211 002105* 0700 1604 002106* 5572 JMP I [SBOOT] /BOOTSTRAP 1605 1606 002107* 0000 DANGIT, .-. /ROUTINE TO CHECK FOR IMPENDING DISASTER 1607 002110* 2012 ISZ DANGER /IS DANGER AT THE DOOR? 1608 002111* 5707 JMP I DANGIT /NO, JUST RETURN 1609 002112* 7301 CLA CLL IAC /SET BIT 1610 002113* 3013 DCA EOFBIT /INTO FLAG 1611 002114* 4200 JMS BINOUT /PUNCH FINAL WORD AS 1612 002115* 4317 JMS BCLEAR /SETUP FOR NEXT FILE 1613 002116* 5310 JMP DANGIT+1 /TRY AGAIN 1614 1615 002117* 0000 BCLEAR, .-. /CLEAR ROUTINE TO INITALIZE FILES 1616 002120* 3013 DCA EOFBIT /ZERO FLAG 1617 002121* 1254 TAD BFLSPC /RESET INDEX 1618 002122* 3010 DCA BXR /REGISTER AGAIN 1619 002123* 1367 TAD (200) /PUT IN 1620 002124* 3410 DCA I BXR /*200 1621 002125* 1011 TAD CURFLD /PUT IN 1622 002126* 3410 DCA I BXR /FIELD (UPDATED FROM PREVIOUS FILE) 1623 002127* 1005 TAD CURORG /PUT OUT THE 1624 002130* 3410 DCA I BXR /NEW-OLD ORIGIN 1625 002131* 1366 TAD (-20) /RESET 1626 002132* 3344 DCA BLKCNT /BLOCK COUNT 1627 002133* 1160 TAD [-22] /RESET 1628 002134* 3345 DCA GRPCNT /GROUP COUNT 1629 002135* 1365 TAD (4503) /RESET 1630 002136* 3012 DCA DANGER /DANGEROUS COUNT 1631 002137* 1364 TAD (0156) /INDICATE BINARY 1632 002140* 3014 DCA FLAGS /WORDS SO FAR 1633 002141* 5717 JMP I BCLEAR /RETURN 1634 / LOAD UNIT FIXUP LIST FOR VIRTUAL LOADER. 1635 1636 002142* 2150 VUNLST, VMFUN+VSOFF /RELOAD SCRATCH AREA 1637 002143* 2203 VWDCNT+VOFF1 /INITIALIZE SCRATCH AREA TO 0000 OR 7402 1638 002144* 2403 BLKCNT, VBFUN+VOFF2 /VIRTUAL WRITE ROUTINE 1639 002145* 2427 GRPCNT, VBFUN2+VOFF2 /VIRTUAL READ ROUTINE 1640 002146* 7777 BNMFLS, -1 /FILE COUNT; THIS ENDS THE LIST 1641 1642 002164* 0156 VSLOAD, PAGE /END OF PAGE FOR NOW 002165* 4503 002166* 7760 002167* 0200 002170* 2066 002171* 7766 002172* 1711 002173* 1714 002174* 7763 002175* 6000 002176* 7770 002177* 7772 1643 1644 / VIRTUAL LOADER RELOAD ARGUMENTS. 1645 1646 *VSLOAD /RESET ORIGIN 1647 1648 VSLOAD, RELOC SWAL /WHERE THIS GOES LATER 1649 1650 SWAL, VSOFF= VSLOAD-SWAL /RELOCATION DEFINITION 1651 1652 007604* 5200 VMCORE, VOUTBF /READ INTO HERE 1653 007605* 1200 VMFUN, SBOOT-VOUTBF%200^100+.-./UNIT BITS WILL BE FILLED IN 1654 007606* 0000 VMBLOCK,.-./BINBLK+BINLEN /WILL BE FIRST VIRTUAL BLOCK 1655 007607* 5374 JMP VST /GO FINISH IT THERE 1656 1657 RELOC VSOFF+. /RESTORE OUR ORIGIN 1658 1659 / SYSTEM LOADER IMAGE. 1660 1661 SLVRES, RELOC SLOAD /IMAGE OF SYSTEM LOADER 1662 1663 007632* 4240 SLOAD, JMS SYSIO /CALL I/O ROUTINES 1664 007633* 0000 SCORE, 0000 /TRANSFER ADDRESS 1665 007634* 4000 SFUN, WRITE+.-. /UNIT BITS WILL BE FILLED IN 1666 007635* 0020 SBLOCK, BINADR /WRITE INTO BINARY SCRATCH AREA 1667 007636* 5637 JMP I SYSTART /GO START IT UP 1668 007637* 7600 SYSTART,SBOOT /THROUGH HERE 1669 1670 RELOC .-SLOAD+SLVRES /RESTORE OUR ORIGIN 1671 PAGE 1672 1673 / /V OPTION CORE IMAGE BINARY LOADER. 1674 1675 / THE /V OPTION ALLOWS DEVICE-INDEPENDENT BINARY LOADING BY CREATING A CORE 1676 / IMAGE ON THE MASS-STORAGE DEVICE OF THE CODE CORRESPONDING TO THE AREAS OF 1677 / MEMORY FORBIDDEN TO DIRECT LOADING DUE TO BOOTSTRAP CONVENTIONS AND THE 1678 / LOADER ITSELF; ALL OTHER LOCATIONS ARE DIRECTLY LOADABLE INCLUDING ALL OF 1679 / FIELDS 1-7. 1680 1681 / VIRTUAL LOADER RESTRICTIONS. 1682 1683 / THE LOADER DOES NOT CHECK IN EXTENDED MEMORY FOR OVERLAYS, EXTENDED HANDLERS, 1684 / ETC., SO THE USER MUST PREVENT ACCIDENTAL LOADING OVER THESE AREAS. LOCATIONS 1685 / 007600-007777 ARE NOT LOADED DIRECTLY. HOWEVER, THAT DATA IS AVAILABLE ON THE 1686 / MASS STORAGE DEVICE (AT BLOCK "BINBLK+BINLEN+12"). THE FOLLOWING CODE IS AN 1687 / EXAMPLE OF A WAY TO RETRIEVE IT: 1688 1689 VPAGE, NOPUNCH /FOOL THE ASSEMBLER 1690 1691 *6000 /ARBITRARY STARTING ADDRESS 1692 1693 006000* 7600 COUNT, SBOOT /CLEANS UP AC, ALSO USED AS A COUNTER/POINTER 1694 006001* 1777 TAD I (SWMX) /GET SYSTEM LOAD FUNCTION WORD 1695 006002* 0376 AND (7) /JUST UNIT BITS 1696 006003* 1375 TAD (1^100+UFLD) /MAKE INTO ONE PAGE READ INTO FIELD ZERO 1697 006004* 3212 DCA UFUN /STORE IN-LINE 1698 006005* 1774 TAD I (SWY9) /GET SYSTEM LOAD BLOCK NUMBER 1699 006006* 1373 TAD (SBOOT-VOUTBF%200) /ADD ON OFFSET 1700 006007* 3213 DCA UBLK /STORE IN-LINE 1701 006010* 4772 JMS I (SYSIO) /CALL I/O ROUTINES 1702 006011* 7000 UCORE, UBUFF /PASS BUFFER ADDRESS 1703 006012* 0170 UFUN, 1^100+UFLD+.-. /UNIT BITS FILLED IN 1704 006013* 0000 UBLK, .-. /BLOCK FILLED IN 1705 006014* 6271 UMOVE, CDF UFLD /GOTO BUFFER FIELD 1706 006015* 1611 TAD I UCORE /GET A WORD 1707 006016* 6201 CDF 00 /BACK TO OUR FIELD 1708 006017* 3600 DCA I COUNT /PUT A WORD 1709 006020* 2211 ISZ UCORE /BUMP TO NEXT 1710 006021* 2200 ISZ COUNT /DONE ALL YET? 1711 006022* 5214 JMP UMOVE /NO, GO BACK 1712 1713 / 007600-007777 NOW CONTAINS USER CODE; SYSTEM I/O ROUTINES ARE DESTROYED! 1714 1715 UBUFF= 7000 /ARBITRARY USER BUFFER ADDRESS 1716 UFLD= 0070 /ARBITARY USER FIELD 1717 1718 006172* 7640 PAGE /DUMP LITERALS NOW 006173* 0012 006174* 7606 006175* 0170 006176* 0007 006177* 7605 1719 / THIS COMPLETES LOADING OF 007600-007777. NOTICE THAT THIS REQUIRES A ONE 1720 / PAGE BUFFER SUPPLIED BY THE USER. THE SYSTEM I/O ROUTINES ARE DESTROYED 1721 / IN THE PROCESS AS THEY ARE THE FORMER OCCUPANTS OF 007600-007777! 1722 1723 / NOTE: IT IS POSSIBLE TO OVERLAY THE SYSTEM I/O ROUTINES DIRECTLY, BUT THIS 1724 / IS TO BE DISCOURAGED BY ANYONE OTHER THAN A P?S/8 SYSTEMS PROGRAMMER 1725 / THOROUGHLY FAMILIAR WITH THE PARTICULAR COPY OF THE SYSTEM I/O ROUTINES 1726 / IN USE AT THE TIME, AS ANY OTHER ATTEMPT TO DO THIS WILL MOST CERTAINLY 1727 / FAIL (THIS DOES NOT IMPLY THAT A P?S/8 SYSTEMS PROGRAMMER WILL NECESSARILY 1728 / SUCCEED (MARIO DENOBILI)!) 1729 1730 / VIRTUAL LOADER CORE LAYOUT FOR FIELD ZERO. 1731 1732 / 000000-005177 ------------------------ FREE FOR NORMAL LOADING 1733 1734 / 005200-005377 BLOCK BINBLK+BINLEN+00 OUTPUT BUFFER 1735 / 005400-005577 BLOCK BINBLK+BINLEN+01 OUTPUT BUFFER 1736 / 005600-005777 BLOCK BINBLK+BINLEN+02 OUTPUT BUFFER 1737 / 006000-006177 BLOCK BINBLK+BINLEN+03 OUTPUT BUFFER 1738 / 006200-006377 BLOCK BINBLK+BINLEN+04 INPUT BUFFER 1739 / 006400-006577 BLOCK BINBLK+BINLEN+05 INPUT BUFFER 1740 / 006600-006777 BLOCK BINBLK+BINLEN+06 INPUT BUFFER 1741 / 007000-007177 BLOCK BINBLK+BINLEN+07 INPUT BUFFER 1742 / 007200-007377 BLOCK BINBLK+BINLEN+10 FIRST PAGE OF /V LOADER 1743 / 007400-007577 BLOCK BINBLK+BINLEN+11 SECOND PAGE OF /V LOADER 1744 / 007600-007777 BLOCK BINBLK+BINLEN+12 SYSTEM I/O ROUTINES 1745 / ------------- BLOCK BINBLK+BINLEN+13 SYSTEM RELICS 1746 1747 / BLOCK NUMBERS REFER TO THE BLOCK WHERE THE CORE IMAGE FOR THAT PART OF 1748 / CORE WILL BE STORED UNTIL LATER CORE IMAGE LOADING. 1749 1750 / IMPLEMENTATION NOTE: 1751 1752 / THE /V CODE CONTAINS CONSOLE INPUT AND OUTPUT ROUTINES ACCESSED BY 1753 / SEVERAL PARTS OF THE UTILITY. THESE ROUTINES CAN BE USED IN THEIR 1754 / LOADED (NOT RELOCATED) POSITIONS AS WELL AS THEIR RELOCATED POSITIONS 1755 / WHEN THE /V CODE IS MOVED TO ITS ASSEMBLED ADDRESS. 1756 1757 *VPAGE /RESTORE OUR ORIGIN 1758 1759 ENPUNCH /RESTORE BINARY OUTPUT 1760 VPAGE, RELOC 4^200+VINBUF /WHERE THIS EXECUTES 1761 1762 VLOAD, VOFF1= VPAGE-VLOAD /RELOCATION DEFINITION 1763 1764 / IF /H OR /Z IS IN EFFECT, THE SCRATCH AREA PAST "BIN" WILL BE INITIALIZED. 1765 1766 IFNZRO .&177 1767 IFNZRO CLA-. 1768 007200* 5206 VLOAD, JMP VNXTWD /**** /H OR /Z **** 0000 1769 007201* 4700 VRECCT, JMS I VSYSIO/(SYSIO) /RECORD COUNT 1770 007202* 0000 VGRPCT, 0000 /GROUP COUNT 1771 007203* 5400 VWDCNT, 14^100+WRITE+.-. /WORD COUNTER 1772 007204* 0000 VLOC, .-. /LOCATION COUNTER 1773 1774 007205* 3204 VNWLOC, DCA VLOC /SAVE NEW ORIGIN 1775 007206* 4255 VNXTWD, JMS VGIMME /GIMME A WORD 1776 007207* 5220 JMP VEOF / OR FIELD SETTING 1777 007210* 7430 SZL /ORIGIN? 1778 007211* 5205 JMP VNWLOC /YES 1779 007212* 5232 VCDF, JMP VCHECK /OR CDF N (N=10-70) 1780 007213* 3604 VOK, DCA I VLOC /LOAD THE WORD 1781 007214* 6201 VOK2, CDF 00 /BACK TO FIELD ZERO 1782 007215* 2204 ISZ VLOC /BUMP TO NEXT LOCATION 1783 007216* 7000 VV7000, 7000 /CONSTANT 7000; HERE IN CASE IT SKIPS 1784 007217* 5206 JMP VNXTWD /GO GET ANOTHER 1785 1786 007220* 7420 VEOF, SNL /? 1787 007221* 5230 JMP VEOLOD /YES, GO FINISH UP 1788 007222* 0377 AND (70) /AND OFF FIELD BITS 1789 007223* 7450 SNA /FIELD ZERO? 1790 007224* 1376 TAD (VCHECK&177+JMPC-CDF) /YES, MAKE IT CHECK 1791 007225* 1214 TAD VOK2/(CDF) /ADD ON CDF INSTRUCTION 1792 007226* 3212 DCA VCDF /PUT INLINE 1793 007227* 5206 JMP VNXTWD /GET ANOTHER WORD 1794 1795 007230* 3775 VEOLOD, DCA I (VZONK) /MAKE IT FINISH THE LOAD 1796 007231* 5774 JMP I (VWRITE) /GO WRITE THE LAST BUFFER 1797 1798 007232* 3350 VCHECK, DCA VGETWD /SAVE WORD 1799 007233* 1204 TAD VLOC /CHECK LOCATION COUNTER 1800 007234* 1373 TAD (-VOUTBF) /AGAINST LIMIT 1801 007235* 7630 SZL CLA /OK? 1802 007236* 5241 JMP VFIXIT /NO, FIXUP 1803 007237* 1350 TAD VGETWD /RESTORE THE WORD 1804 007240* 5213 JMP VOK /CONTINUE THERE 1805 / IF THE ADDRESS IS IN THE PROTECTED AREA, A CALCULATION IS MADE TO 1806 / DETERMINE IF THE WORD FALLS INTO THE CURRENT VIRTUAL BUFFER: 1807 / 5200-6177, 6200-7177, 7200-7777. 1808 1809 / IF THE ADDRESS FALLS INTO THE CURRENT BUFFER, IT IS ADJUSTED TO THE PROPER 1810 / RELATIVE VALUE AND THE WORD IS LOADED. IF IT BELONGS WITH A DIFFERENT 1811 / BUFFER, THE CURRENT BUFFER MUST BE WRITTEN AND THE NEW BUFFER READ IN. THIS 1812 / WILL THEN ALLOW THE WORD TO BE LOADED. 1813 1814 007241* 1772 VFIXIT, TAD I (VLOW) /GET CURRENT LIMIT 1815 007242* 7041 CIA /INVERT IT 1816 007243* 1204 TAD VLOC /ADD ON PROBLEMATIC LOCATION 1817 007244* 7120 STL /SET LINK FOR TEST 1818 007245* 1216 TAD VV7000/(-1000) /ADD ON RANGE 1819 007246* 7420 SNL /IS IT WITHIN LIMITS? 1820 007247* 5774 JMP I (VWRITE) /NO, GO FIX IT 1821 007250* 1371 TAD (VOUTBF+1000) /CALCULATE BUFFER ADDRESS 1822 007251* 3255 DCA VGIMME /STASH IT 1823 007252* 1350 TAD VGETWD /GET THE DATA WORD 1824 007253* 3655 DCA I VGIMME /STORE IT IN BUFFER 1825 007254* 5214 JMP VOK2 /CONTINUE THERE 1826 007255* 0000 VGIMME, .-. /GET ME A WORD ROUTINE 1827 007256* 2203 ISZ VWDCNT /BUMP WORD COUNTER 1828 007257* 5320 JMP VGRPLP /GET NEXT WORD 1829 007260* 2202 ISZ VGRPCT /BUMP GROUP COUNT 1830 007261* 5313 JMP VNWGRP /GET NEXT GROUP 1831 007262* 2200 ISZ VLOAD /THROW AWAY 1832 007263* 2200 ISZ VLOAD /TWO WORDS 1833 007264* 2201 ISZ VRECCT /DONE FOUR BLOCKS YET? 1834 007265* 5311 JMP VNWREC /NO, GET ANOTHER ONE 1835 007266* 4770 VNWBUF, JMS I (CHKUP) /CHECK FOR <^C> PERIODICALLY 1836 007267* 4700 JMS I VSYSIO/(SYSIO) /READ SOME BLOCKS 1837 007270* 6200 VBUFF, VINBUF /INTO INPUT BUFFER 1838 007271* 0400 VFUN, 4^100+.-. /4 BLOCKS WORTH 1839 007272* 0000 VBLOCK, .-. /BLOCK NUMBER 1840 007273* 7410 VZAP, SKP /NORMALLY CHECK 1841 007274* 5302 JMP VFILOK /DON'T CHECK IF WE GET HERE 1842 007275* 3273 DCA VZAP /PREVENT CHECKING NEXT TIME 1843 007276* 1614 TAD I VOK2/(VINBUF+1) /GET DEFAULT ORIGIN 1844 007277* 1367 TAD (-200) /COMPARE TO CORRECT VALUE 1845 007300* 7640 VSYSIO, SZA CLA /SKIP IF OK 1846 007301* 5766 JMP I (VBDPRT) /JUMP IF NOT 1847 007302* 1272 VFILOK, TAD VBLOCK /UP THE BLOCK 1848 007303* 1365 TAD (4) /NUMBER BY 4 1849 007304* 3272 DCA VBLOCK /AND RESTORE IT 1850 007305* 1364 TAD (-4) /GET A MINUS 4 1851 007306* 3201 DCA VRECCT /INTO RECORD COUNT 1852 007307* 1270 TAD VBUFF /RESET 1853 007310* 3200 DCA VLOAD /BUFFER POINTER 1854 007311* 1363 VNWREC, TAD (-22) /RESET 1855 007312* 3202 DCA VGRPCT /GROUP COUNT 1856 007313* 1362 VNWGRP, TAD (-6) /RESET 1857 007314* 3203 DCA VWDCNT /WORD COUNTER 1858 007315* 4350 JMS VGETWD /GET A WORD 1859 007316* 7110 CLL RAR /FIXUP FOR FIRST TIME 1860 007317* 7410 VSKP, SKP /DON'T GET IT AGAIN 1861 007320* 1354 VGRPLP, TAD VRLBTS /GET FLAG WORD 1862 007321* 7006 RTL /ROL IT AROUND 1863 007322* 3354 DCA VRLBTS /SAVE IT 1864 007323* 1354 TAD VRLBTS /GET IT AGAIN 1865 007324* 7710 SPA CLA / OR FIELD? 1866 007325* 5331 JMP VEOFLD /YES 1867 007326* 2255 ISZ VGIMME /BUMP RETURN ADDRESS 1868 007327* 4350 VFELD, JMS VGETWD /GET THE WORD 1869 007330* 5655 JMP I VGIMME /RETURN 1870 007331* 7430 VEOFLD, SZL /? 1871 007332* 5327 JMP VFELD /NO, GET A FIELD SETTING 1872 007333* 2355 ISZ VILPTR /BUMP TO NEXT FILE 1873 007334* 1755 TAD I VILPTR /GET NEXT FILE ARGUMENT 1874 007335* 7450 SNA /? 1875 007336* 5655 JMP I VGIMME /RETURN WITH LINK CLEAR TO INDICATE 1876 007337* 0361 AND (7) /JUST UNIT BITS 1877 007340* 1360 TAD (4^100) /ADD ON READ OF 4 BLOCKS 1878 007341* 3271 DCA VFUN /PUT INTO CALL 1879 007342* 1755 TAD I VILPTR /GET FILE ARGUMENT AGAIN 1880 007343* 0357 AND (7770) /JUST BLOCK BITS 1881 007344* 3272 DCA VBLOCK /SAVE AS BLOCK NUMBER 1882 007345* 1317 TAD VSKP/(SKP) /FORCE THE 1883 007346* 3273 DCA VZAP /VALIDITY CHECK 1884 007347* 5266 JMP VNWBUF /GO READ IT IN 1885 1886 007350* 0000 VGETWD, .-. /GET A WORD FROM THE BUFFER 1887 007351* 1600 TAD I VLOAD /ONE WORD, PLEASE 1888 007352* 2200 ISZ VLOAD /BUMP POINTER FOR NEXT TIME 1889 007353* 5750 JMP I VGETWD /RETURN 1890 1891 007354* 1000 VRLBTS, 1000 /FLAG BITS; INITIALIZED FOR NEW FILE 1892 007355* 7756 VILPTR, SFILES-1 /FILE POINTER 1893 1894 IFNZRO VINBUF+1-CDF 00 1895 1896 007357* 7770 PAGE 007360* 0400 007361* 0007 007362* 7772 007363* 7756 007364* 7774 007365* 0004 007366* 7517 007367* 7600 007370* 7447 007371* 6200 007372* 7530 007373* 2600 007374* 7401 007375* 7406 007376* 7031 007377* 0070 1897 VLOAD2, RELOC .+VOFF1 /RESTORE OUR ORIGIN 1898 1899 VPAGE2, RELOC VLOAD2 /WHERE THIS EXECUTES 1900 1901 VLOAD2, VOFF2= VPAGE2-VLOAD2 /RELOCATION DEFINITION 1902 1903 IFNZRO .&177 1904 007400* 7000 V7000, -4^200 /CONSTANT 7000 1905 1906 / COMES HERE TO DUMP A VIRTUAL BUFFER AND READ IN A NEW ONE. 1907 1908 007401* 4662 VWRITE, JMS I VVSYSIO/(SYSIO) /CALL I/O ROUTINES 1909 007402* 5200 VOUTBF /WRITE THE OUTPUT BUFFER 1910 007403* 4400 VBFUN, 4^100+WRITE+.-. /UNIT BITS WILL BE FILLED IN 1911 007404* 0000 VBLOC, .-. /SCRATCH BLOCK WILL BE FILLED IN 1912 007405* 4247 JMS CHKUP /CHECK FOR <^C>, ETC. 1913 007406* 7410 VZONK, SKP /**** END OF LOAD **** 0000 1914 007407* 5233 JMP VEOL2 /CONTINUE THERE AT END OF LOAD 1915 007410* 1734 TAD I VVLOC/(VLOC) /GET LOCATION COUNTER 1916 007411* 1267 TAD VV7600/(-200) /BACKUP ONE PAGE 1917 007412* 0200 VV200, AND V7000/(7000) /JUST MAJOR PAGE BITS 1918 007413* 1212 TAD VV200 /ADD ON ONE PAGE 1919 007414* 3330 DCA VLOW /SAVE NEW LOWER LIMIT 1920 007415* 1330 TAD VLOW /GET IT BACK 1921 007416* 7106 CLL RTL;RTL;RTL /%200 007417* 7006 007420* 7006 1922 007421* 1326 TAD VBASE /ADD ON BASE BLOCK 1923 007422* 3204 DCA VBLOC /STORE IN WRITE CALLER 1924 007423* 1204 TAD VBLOC /GET IT BACK 1925 007424* 3230 DCA VBLOC2 /STORE IN READ CALLER 1926 007425* 4662 JMS I VVSYSIO/(SYSIO) /CALL I/O ROUTINES 1927 007426* 5200 VOUTBF /READ INTO OUTPUT BUFFER 1928 007427* 0400 VBFUN2, 4^100+.-. /UNIT BITS WILL BE FILLED IN 1929 007430* 0000 VBLOC2, .-. /SCRATCH BLOCK WILL BE FILLED IN 1930 007431* 4247 JMS CHKUP /CHECK FOR <^C>, ETC. 1931 007432* 5733 JMP I VVFIXIT/(VFIXIT)/CONTINUE THERE 1932 1933 / COMES HERE AFTER WRITING OUT LAST BUFFER. 1934 1935 007433* 1243 VEOL2, TAD VCIF /GET A WORD 1936 007434* 3727 DCA I VDOPTR /PUT A WORD 1937 007435* 2233 ISZ VEOL2 /BUMP GET INSTRUCTION 1938 007436* 2327 ISZ VDOPTR /DONE YET? 1939 007437* 5233 JMP VEOL2 /NO, KEEP GOING 1940 007440* 1332 TAD VSWAL/(SWAL) /GET PHONEY CALLING LOCATION 1941 007441* 3662 DCA I VVSYSIO/(SYSIO) /STORE IN I/O HEADER 1942 007442* 5735 JMP I VVSYS1/(SYSIO+1)/GO START IT UP 1943 / THESE WORDS ARE MOVED TO 007774-007777 AT END OF LOAD. 1944 1945 VCIF, RELOC VST /WHERE THEY GO 1946 1947 007774* 6203 VST, CIF CDF 00+.-. /STARTING FIELD BITS WILL BE FILLED IN 1948 007775* 5756 JMP I SPARM /START THROUGH EQUALS PARAMETER 1949 007776* 7402 BISTRT, HLT /DEFAULT STARTING ADDRESS 1950 007777* 5376 JMP BISTRT /JUST IN CASE 1951 1952 RELOC .+VCIF-VST /RESET OUR ORIGIN 1953 1954 007447* 0000 CHKUP, .-. /<^C>, ETC. CHECKUP ROUTINE 1955 007450* 4266 JMS CTLCTST /CHECK FOR <^C>, ETC. 1956 007451* 7440 SZA /SKIP IF NOTHING CAME IN 1957 007452* 1337 TAD V7757/(-"Q!300) /ELSE COMPARE TO <^Q> 1958 007453* 7450 SNA /SKIP IF SOMETHING ELSE 1959 007454* 5264 JMP CHKCLR /ELSE IGNORE IT 1960 007455* 1363 TAD V7776/(-"S+"Q) /IS IT <^S>? 1961 007456* 7640 CTLZP1, SZA CLA /**** DISABLED **** CLA!400 1962 007457* 5647 JMP I CHKUP /RETURN IF NOT 1963 007460* 4266 JMS CTLCTST /GET ANOTHER CHARACTER 1964 007461* 1337 TAD V7757/(-"Q!300) /IS IT <^Q>? 1965 007462* 7640 VVSYSIO,SZA CLA /SKIP IF SO 1966 007463* 5260 JMP .-3 /JUMP IF NOT 1967 007464* 3325 CHKCLR, DCA INCHAR /OBLITERATE <^Q> 1968 007465* 5647 JMP I CHKUP /RETURN 1969 1970 007466* 0000 CTLCTST,.-. /CHECK FOR <^C>, ETC. 1971 007467* 7600 VV7600, CLA!400 /CLEAN UP 1972 007470* 6031 CHKKSF, KSFIOT /**** CONSOLE **** CIF MCS+10 1973 007471* 5666 CHKJMP, JMP I CTLCTST /**** CONSOLE **** JMS INCON 1974 007472* 6034 CHKKRS, KRSIOT/OR KRBIOT /**** CONSOLE **** JMP I CTLCTST 1975 007473* 0336 AND V177/(177) /JUST SEVEN BITS 1976 007474* 3325 DCA INCHAR /STASH IT 1977 007475* 7346 CTLZP2, NL7775 /**** DISABLED **** JMP CTLXIT 1978 007476* 1325 TAD INCHAR /COMPARE TO LATEST CHARACTER 1979 007477* 7450 SNA /SKIP IF NOT <^C> 1980 007500* 2731 ISZ I VSCRSIZE/(SCRSIZE) /ELSE INDICATE <^C> HIT 1981 007501* 7750 SPA SNA CLA /SKIP IF NOT <^C> OR LESS 1982 007502* 5667 JMP I VV7600/(SBOOT) /ELSE GO TO THE MONITOR 1983 007503* 6032 CHKKCC, KCCIOT/OR 0000 /**** CONSOLE **** 0000 1984 007504* 1325 CTLXIT, TAD INCHAR /GET THE CHARACTER 1985 007505* 5666 JMP I CTLCTST /RETURN 1986 1987 007506* 0000 P7CH, .-. /SEVEN-BIT OUTPUT ROUTINE 1988 007507* 3230 DCA VBLOC2 /SAVE PASSED VALUE 1989 007510* 4247 P7AGN, JMS CHKUP /CHECK FOR <^C>, ETC. 1990 007511* 1230 TAD VBLOC2 /GET THE VALUE BACK 1991 007512* 6041 P7TSF, TSFIOT /**** CONSOLE **** CIF MCS+10 1992 007513* 5310 P7JMP, JMP P7AGN /**** CONSOLE **** JMS OUTCON 1993 007514* 6046 P7TLS, TLSIOT /**** CONSOLE **** JMP P7AGN 1994 007515* 4247 JMS CHKUP /CHECK FOR <^C>, ETC. 1995 007516* 5706 JMP I P7CH /RETURN 1996 007517* 1340 VBDPRT, TAD VBDMSG /GET A CHARACTER 1997 007520* 7510 SPA /PART OF MESSAGE? 1998 007521* 5667 JMP I VV7600/(SBOOT) /NO, BYE, BYE! 1999 007522* 4306 JMS P7CH /YES, PRINT IT 2000 007523* 2317 ISZ VBDPRT /BUMP TO NEXT 2001 007524* 5317 JMP VBDPRT /GO DO ANOTHER ONE 2002 2003 007525* 0000 INCHAR, .-. /INPUT BUFFER 2004 007526* 0000 VBASE, .-./BINBLK+13-25 /THIS WILL BE FILLED IN! 2005 007527* 7774 VDOPTR, VST /WHERE TO PUT THE STARTUP CODE 2006 007530* 5200 VLOW, VOUTBF /LOWER LIMIT VALUE 2007 007531* 7611 VSCRSIZ,SCRSIZE /POINTER TO CORE SIZE WORD 2008 007532* 7604 VSWAL, SWAL /WHERE SYSIO THINKS IT GOT CALLED FROM! 2009 007533* 7241 VVFIXIT,VFIXIT /POINTER TO VFIXIT ROUTINE 2010 007534* 7204 VVLOC, VLOC /POINTER TO LOCATION COUNTER 2011 007535* 7641 VVSYS1, SYSIO+1 /POINTER TO FIRST WORD OF SYSTEM I/O ROUTINES 2012 007536* 0177 V177, 177 /CONSTANT 0177 2013 007537* 7757 V7757, 7757 /CONSTANT 7757 2014 2015 007540* 0111 VBDMSG, "I&177 /INVALID FILE MESSAGE 2016 007541* 0156 "N&177+40 2017 007542* 0166 "V&177+40 2018 007543* 0141 "A&177+40 2019 007544* 0154 "L&177+40 2020 007545* 0151 "I&177+40 2021 007546* 0144 "D&177+40 2022 007547* 0040 " &177 2023 007550* 0111 "I&177 2024 007551* 0156 "N&177+40 2025 007552* 0160 "P&177+40 2026 007553* 0165 "U&177+40 2027 007554* 0164 "T&177+40 2028 007555* 0040 " &177 2029 007556* 0106 "F&177 2030 007557* 0151 "I&177+40 2031 007560* 0154 "L&177+40 2032 007561* 0145 "E&177+40 2033 007562* 0041 "!&177 2034 2035 007563* 7776 V7776, 7776 /CONSTANT 7776; THIS ENDS THE MESSAGE 2036 2037 VEND= . /END OF /V LOADER TO BE RELOCATED 2038 /MUST BE 7565 OR LESS TO AVOID CONFLICT 2039 /WITH /H, /Z ROUTINE 2040 2041 IFNZRO BFILL-VEND&4000 2042 2043 RELOC .-VLOAD2+VPAGE2 /RESTORE OUR ORIGIN 2044 PAGE 2045 2046 / SLURP LOADER READ IN HERE. 2047 2048 SLUPAGE,IFNZRO .%200-BINLEN 2049 2050 NOPUNCH 2051 2052 SLUPAGE,RELOC SBOOT /WHERE THIS EXECUTES 2053 2054 007600* 0000 SBOOT, ZBLOCK BBLEN /BOOTSTRAP PORTION OF SLURP LOADER 007601* 0000 007602* 0000 007603* 0000 007604* 0000 007605* 0000 007606* 0000 007607* 0000 007610* 0000 007611* 0000 007612* 0000 007613* 0000 007614* 0000 007615* 0000 007616* 0000 007617* 0000 007620* 0000 007621* 0000 007622* 0000 007623* 0000 007624* 0000 007625* 0000 007626* 0000 007627* 0000 007630* 0000 007631* 0000 007632* 0000 007633* 0000 007634* 0000 007635* 0000 007636* 0000 007637* 0000 007640* 0000 007641* 0000 007642* 0000 2055 2056 007643* 0000 ZBLOCK BCIF-. /REST OF SLURP LOADER 007644* 0000 007645* 0000 007646* 0000 007647* 0000 007650* 0000 007651* 0000 007652* 0000 007653* 0000 007654* 0000 007655* 0000 007656* 0000 007657* 0000 007660* 0000 007661* 0000 007662* 0000 007663* 0000 007664* 0000 007665* 0000 007666* 0000 007667* 0000 007670* 0000 007671* 0000 007672* 0000 007673* 0000 007674* 0000 007675* 0000 007676* 0000 007677* 0000 007700* 0000 007701* 0000 007702* 0000 007703* 0000 007704* 0000 007705* 0000 007706* 0000 007707* 0000 007710* 0000 007711* 0000 007712* 0000 007713* 0000 007714* 0000 007715* 0000 007716* 0000 007717* 0000 007720* 0000 007721* 0000 007722* 0000 007723* 0000 007724* 0000 007725* 0000 007726* 0000 007727* 0000 007730* 0000 007731* 0000 007732* 0000 007733* 0000 007734* 0000 007735* 0000 007736* 0000 007737* 0000 007740* 0000 007741* 0000 007742* 0000 007743* 0000 007744* 0000 007745* 0000 2057 2058 007746* 0000 BCIF, .-. /CIF CDF STARTUP FIELD GOES HERE 2059 2060 007747* 0000 ZBLOCK SPARM-. /REST OF SLURP LOADER 007750* 0000 007751* 0000 007752* 0000 007753* 0000 007754* 0000 007755* 0000 2061 2062 007756* 7742 SPARM, BERR /DEFAULT STARTING ADDRESS 2063 2064 SFILES, RELOC BINIT2 /WHERE THIS EXECUTES 2065 2066 000031* 0000 BINIT2, ZBLOCK BINITLN /BOOTSTRAP UNIT INITIALIZATION CODE 000032* 0000 000033* 0000 000034* 0000 000035* 0000 000036* 0000 000037* 0000 000040* 0000 000041* 0000 000042* 0000 000043* 0000 000044* 0000 000045* 0000 000046* 0000 000047* 0000 000050* 0000 2067 2068 RELOC SFILES+BINITLN /RESTORE ORIGIN 2069 2070 007777* 7665 SLPSA, BREAD /SLURP LOADER STARTING ADDRESS; ZERO MEANS NO LOADER 2071 2072 / TYPICAL VALUES. 2073 2074 BERR= 7742 /DEFAULT SAFE STARTING ADDRESS 2075 BREAD= 7665 /STARTING ADDRESS OF LOADER 2076 2077 RELOC .+SLUPAGE-SBOOT /RESET OUR ORIGIN 2078 2079 ENPUNCH 2080 000133* 1135 FIELD 0 /DUMP PAGE ZERO LITERALS NOW 000134* 1421 000135* 7602 000136* 2000 000137* 2107 000140* 1625 000141* 1600 000142* 1632 000143* 1641 000144* 2447 000145* 0040 000146* 0012 000147* 0077 000150* 0004 000151* 7443 000152* 1200 000153* 7571 000154* 1272 000155* 7607 000156* 7632 000157* 1400 000160* 7756 000161* 0325 000162* 0100 000163* 0400 000164* 0010 000165* 7605 000166* 1437 000167* 1243 000170* 7604 000171* 7606 000172* 7600 000173* 0007 000174* 7634 000175* 0070 000176* 2512 000177* 7611 2081 2082 RELOC /TURN OFF RELOCATION 2083 2084 $ /THAT'S ALL FOLK! ALLOWI 0652 B15 1060 B50 0600 BADSUM 1753 BASEMB 7741 BAUTO 7713 BBEGIN 7706 BBINLE 0200 BBLEN 0043 BBLOCK 2056 BC1 2012 BCHAR 7750 BCHECK 0027 BCHEX 7735 BCHKSM 7752 BCHRLP 1142 BCIF 7746 BCLCNT 7567 BCLEAR 2117 BCODE 1076 BCONLS 0340 BCORCN 0001 BCORPT 7566 BCROUT 1153 BCTFLD 1220 BEGG 7643 BEGG1 7644 BEGO 7715 BEND 7702 BERR 7742 BEXFLD 0501 BFIELD 0002 BFILD 0526 BFILE1 0052 BFILE2 0053 BFILIT 7571 BFILL 7565 BFINDI 0660 BFLDCH 1421 BFLEND 1237 BFLNDZ 1234 BFLNUM 1711 BFLSPC 2054 BFMASK 7700 BFMLUP 0535 BFORCE 0446 BFPTR 0003 BFRAME 1104 BGEND 1751 BGLOOP 1743 BGOOD 7655 BHERE 1443 BHSET 1202 BHZ 1200 BHZAP 0477 BHZCDF 7575 BINADR 0020 BINEND 1641 BINGEN 4000 BINGO 0055 BININT 1632 BINIT 0020 BINIT2 0031 BINITL 0020 BINLEN 0013 BINOUT 2000 BIPTR 0754 BIPZP1 7704 BIPZP2 7726 BISTRT 7776 BLDMOR 0467 BLDMZP 0472 BLDST 7577 BLEED 1125 BLKCNT 2144 BLODE 0503 BLODIT 7727 BMAGIC 7753 BMOVE 1400 BMOVEV 0551 BMOVLP 1414 BMTEM 7751 BMVBIP 0453 BMVCLR 1230 BMVZAP 0461 BN300 7665 BN7600 7707 BNCDF 7701 BNCOMN 2013 BNHLT 7705 BNLINE 7647 BNMFLS 2146 BNOI 0665 BNOINF 0545 BNOXIT 2075 BNREAD 7671 BNXFLD 1207 BOUTPU 1067 BPAGE 1400 BPLIST 1262 BPOFF 1600 BPTRIM 1042 BPUN 1017 BPUNLP 1021 BPUTWD 1040 BREAD 7665 BREPL2 0331 BREPLC 0325 BRMFLD 1030 BS1 2003 BSCRIB 1135 BSETPU 1000 BSLPGO 0004 BSLPST 0700 BSLSHV 0702 BSTART 0200 BTESTD 0307 unreferenced BTESTF 0431 BTESTG 1722 unreferenced BTESTH 0262 unreferenced BTESTP 0436 unreferenced BTESTR 0316 BTESTU 0272 unreferenced BTESTW 0616 BTESTZ 0256 BTRYNO 1675 BTSTCO 1007 BTSTEO 1025 BWEOF 1033 BWORD1 7754 BWORD2 7755 BWRFUN 2055 BXR 0010 BZIP 0000 BZOOM 1206 BZSET 1203 CBPLIS 1272 CHEKST 0724 CHKCLR 7464 CHKCOV 0240 CHKEXT 0733 CHKJMP 7471 CHKKCC 7503 CHKKRS 7472 CHKKSF 7470 CHKUP 7447 CONOFF 0100 CONSET 0231 COUNT 6000 CTLCTS 7466 CTLXIT 7504 CTLZP1 7456 CTLZP2 7475 CURFLD 0011 CURORG 0005 DANGER 0012 DANGIT 2107 DOLBLK 0040 DSETUP 0304 ENDFLD 1253 EOFBIT 0013 FILBEG 3000 FIRELO 1554 FLAGS 0014 GBUNIT 1437 GET 0600 unreferenced GRPCNT 2145 HERE 1341 HILIST 1310 IBLK 0670 IBLOCK 0060 INCHAR 7525 INCON 0031 JMPC 5200 JMPIC 5600 JMSC 4200 JMSSYS 4240 KCCIOT 6032 KRBIOT 6036 KRSIOT 6034 KSFIOT 6031 LOPUN 1120 NEWFLG 2073 NL0001 7201 NL0002 7326 NL2000 7332 NL7775 7346 NL7777 7240 NXTFLD 1246 OFF 0001 ON 0000 OUTCON 0033 P7AGN 7510 P7CH 7506 P7JMP 7513 P7TLS 7514 P7TSF 7512 PBFILE 0400 PCHKKR 0342 PSFILE 0547 PUNLUP 1116 RDATA 1616 RDINIT 0474 REVISI 0032 RFLCLS 1644 RIMBAK 1624 RIMBEG 7756 RIMBG1 7757 RIMCHK 1051 RIMCLR 7774 RIMEND 1061 RIMINT 1600 RIMLED 1625 RIMOT2 1047 RIMOUT 1046 RIMRET 7775 RIMZAP 0507 RIMZP1 7772 RIMZP2 7765 RLDRZP 1626 RMLIST 1277 RNEWLO 0015 RNXTOR 1622 ROLDLO 1765 RORG 7776 RRMRET 0006 SBLOCK 7635 SBOOT 7600 SBTFUN 7602 SCORE 7633 unreferenced SCRSIZ 7611 SDATE 7610 SETORG 1064 SFILES 7757 SFUN 7634 SLMILP 0745 SLOAD 7632 SLPBLK 0100 SLPSA 7777 SLSYSI 0727 SLUPAG 2600 SLURFU 0743 SLURPR 0735 SLVRES 2153 SOUTFL 7607 SPARM 7756 START 0400 unreferenced STFLD 7636 STLOAD 0056 STRLOC 0224 STROK 0421 SWAL 7604 SWMX 7605 SWY9 7606 SYSIO 7640 SYSTAR 7637 TLSIOT 6046 TOMANY 2101 TSFIOT 6041 TSTFLD 1243 TTY 0003 TXR 0016 UBLK 6013 UBUFF 7000 UCORE 6011 UFLD 0070 UFUN 6012 UMOVE 6014 UNITLP 0220 V177 7536 V7000 7400 V7757 7537 V7776 7563 VBASE 7526 VBDMSG 7540 VBDPRT 7517 VBFUN 7403 VBFUN2 7427 VBLOC 7404 VBLOC2 7430 VBLOCK 7272 VBUFF 7270 VCDF 7212 VCHECK 7232 VCIF 7443 VDOPTR 7527 VEND 7564 VEOF 7220 VEOFLD 7331 VEOL2 7433 VEOLOD 7230 VERSIO 0070 VFELD 7327 VFILOK 7302 VFIXIT 7241 VFUN 7271 VGETWD 7350 VGIMME 7255 VGRPCT 7202 VGRPLP 7320 VILPTR 7355 VINBUF 6200 VLOAD 7200 VLOAD2 7400 VLOC 7204 VLOW 7530 VMBLOC 7606 VMCORE 7604 unreferenced VMFUN 7605 VNWBUF 7266 VNWGRP 7313 VNWLOC 7205 VNWREC 7311 VNXTWD 7206 VOFF1 3000 VOFF2 3000 VOFFSE 0025 VOK 7213 VOK2 7214 VOUTBF 5200 VPAGE 2200 VPAGE2 2400 VRECCT 7201 VRLBTS 7354 VSCRSI 7531 VSKP 7317 VSLOAD 2147 VSOFF 2343 VST 7774 VSWAL 7532 VSYSIO 7300 VUNLST 2142 VV200 7412 VV7000 7216 VV7600 7467 VVFIXI 7533 VVLOC 7534 VVSYS1 7535 VVSYSI 7462 VWDCNT 7203 VWRITE 7401 VZAP 7273 VZONK 7406 WAITIN 1664 WRITE 4000