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