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