Commit | Line | Data |
---|---|---|
7af5ad59 PH |
1 | /12 OS8 MONITOR SYSTEM OS8 VERS. 3D |
2 | / | |
3 | / | |
4 | / | |
5 | / | |
6 | / | |
7 | / | |
8 | / | |
9 | / | |
10 | / | |
11 | /COPYRIGHT (C) 1970,1971,1972,1973,1974,1975,1977 BY DIGITAL EQUIPMENT CORPORATION | |
12 | / | |
13 | / | |
14 | / | |
15 | / | |
16 | / | |
17 | / | |
18 | / | |
19 | / | |
20 | / | |
21 | / | |
22 | /THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE | |
23 | /AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT | |
24 | /CORPORATION. DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY | |
25 | /FOR ANY ERRORS THAT MAY APPEAR IN THIS DOCUMENT. | |
26 | / | |
27 | /THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FURNISHED TO THE PURCHASER | |
28 | /UNDER A LICENSE FOR USE ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED | |
29 | /(WITH INCLUSION OF DIGITAL'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH | |
30 | /SYSTEM, EXCEPT AS MAY OTHERWISE BE PROVIDED IN WRITING BY DIGITAL. | |
31 | / | |
32 | /DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE | |
33 | /OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY | |
34 | /DIGITAL. | |
35 | / | |
36 | / | |
37 | / | |
38 | / | |
39 | / | |
40 | / | |
41 | / | |
42 | / | |
43 | / | |
44 | / | |
45 | \f/13-APRIL-1977 RL/EF/HJ/SR | |
46 | ||
47 | ||
48 | /THIS VERSION OF OS/8 IS THE BATCH OPERATING SYSTEM | |
49 | /AS WELL AS THE STANDARD KEYBOARD SYSTEM. THIS SYSTEM | |
50 | /IS EXTERNALLY COMPATIBLE WITH ALL PREVIOUS OS/8-PS/8 | |
51 | /USER PROGRAMS. HOWEVER, INTERNALLY THE SYSTEMS ARE | |
52 | /QUITE DIFFERENT. THE MARCH 1972 OS/8 WILL NOT RUN BATCH. | |
53 | /THIS VERSION IS COMPATIBLE WITH CCL. | |
54 | ||
55 | / SYMBOLIC REFERENCES TO VARIOUS OVERLAYS: | |
56 | ||
57 | MEOVLY=26 /DIRECTORY OVERFLOW OVERLAY FOR "ENTER" | |
58 | MCDREC=51 /COMMAND DECODER | |
59 | MSOVLY=54 /"SAVE W. ARGS" OVERLAY | |
60 | MSOVL2=55 /SECOND PART OF SAVE W. ARGS | |
61 | MERRTN=56 /MONITOR ERROR ROUTINE | |
62 | MRUNRC=57 /"CHAIN" OVERLAY | |
63 | ODTREC=60 /SYSTEM ODT | |
64 | MFREE=70 /BEGINNING OF FILE STORAGE | |
65 | CCB=7400 | |
66 | CSOVLY=400 | |
67 | RSOVL1=1400 | |
68 | RSOVL2=2000 | |
69 | ||
70 | VERSNO=3 | |
71 | PATCHLEV="Q | |
72 | ||
73 | /V3 CHANGES: | |
74 | ||
75 | /1. CCL SUPPORT | |
76 | /2. FIXED KILLER CLOSE BUG | |
77 | /3. ADDED VERSION NUMBER | |
78 | /4. ^U, RO TO BOL, AND LF ALL PRINT '.' AGAIN | |
79 | /5. CALL TO USR WITH CODE OF 0 GIVES ERROR | |
80 | /6. MONITOR ERROR MESSAGES NOW GIVE EXPLANATION | |
81 | /7. ENTER NOW MOVES 7 FILES TO MAKE ROOM INSTEAD OF HALF SEGMENT | |
82 | /8. DIRECTORY VERIFICATION HAS IMPROVED | |
83 | ||
84 | /V3 FIXES TO ABSLDR: | |
85 | ||
86 | /1. ALLOWED PARITY ^C | |
87 | /2. PUT IN SELF-STARTING STUFF | |
88 | /3. FIXED CCB BUG FOR 17600 | |
89 | ||
90 | /FIXES TO FIELD RELEASE | |
91 | ||
92 | /1. ABSLDR CHECKS PAGE 0 LITERALS | |
93 | /2. FIXED BUG RE MONITOR ERROR MESSAGES | |
94 | /3. ADDITIONAL INFO FIX | |
95 | /4. BATCH FIX | |
96 | ||
97 | /FIXES FOR MAINTENANCE RELEASE: | |
98 | ||
99 | /1. CHANGED VERSION NUMBER OF MONITOR TO V3M | |
100 | /2. INCORPORATED PATCH RE LOC 13121 AFTER MONITOR ERROR | |
101 | / [SEQ #1, DSN APRIL 1975] | |
102 | /3. ALLOW CHAIN TO WORK ON FULL FIELD SAVES | |
103 | / [SEQ #2, DSN JUNE 1975] | |
104 | /4. ALLOW ABSLDR/I TO WORK ON FULL FIELD CORE IMAGES | |
105 | / [SEQ #1, DSN OCTOBER 1975] | |
106 | /5. ADDED INTERNAL VERSION NUMBER TO ABSLDR AT LOCATION 2200 | |
107 | / MAINT. RELEASE VERSION # IS V4 | |
108 | /6. SET INITIAL ABSLDR DATE TO 1-NOVEMBER-1975 | |
109 | ||
110 | /V3D AND OS/78 CHANGES: | |
111 | ||
112 | /1. ACCEPT DEC STANDARD DATE FORMAT FOR INPUT (DD-MMM-YY) | |
113 | /2. CHANGED VERSION NUMBER TO V3Q | |
114 | /3. ADDED DATE/78 CHANGES | |
115 | /4. FIXED BUG ABOUT WAITING FOR TTY FLAG & BATCH | |
116 | /5. ADDED STUFF FOR LINKER [USES SOFSET] | |
117 | /6. CHANGED ABSLDR DATE TO 1-JUNE-77 | |
118 | /7. DISALLOW RUN OF PROGRAM WITH BIT 4 OF JSW ON [OS/78 ONLY] | |
119 | /8. ASSIGNED RESIDENT BITS FOR SCOPE AND OS/78 | |
120 | /9. ALLOW @ IN KBM COMMAND | |
121 | /10. COULD RUN INIT.CM ON SYSTEM START-UP | |
122 | /11. CHANGED BAD CORE IMAGE MSG TO CORE IMAGE ERR | |
123 | /12. CHANGED ABSLDR/I SO THAT IT SETS UP JSW AND SA | |
124 | \f /KEYBOARD MONITOR FOR OS/8 SYSTEM - UNCOMMENTED AT PRESENT | |
125 | ||
126 | FIELD 0 | |
127 | MTHREE=CLA CLL CMA RTL | |
128 | *200 | |
129 | PRINT, JMP I PRNAME /MUST BE AT 200 FOR BATCH | |
130 | JMP .+3 /****GETS CIF CDF N FOR BATCH***** | |
131 | TSF /****GETS JMP I .+1****** | |
132 | JMP .-1 /*GETS BOSPRT***** | |
133 | TLS | |
134 | CLA | |
135 | TAD [7000 | |
136 | DCA PRINT+1 | |
137 | JMP I PRINT | |
138 | GETNAM, 0 | |
139 | DCA NM1 | |
140 | DCA NM2 | |
141 | DCA NM3 | |
142 | DCA NM4 | |
143 | TAD [NM1 | |
144 | DCA PN | |
145 | CLA CMA | |
146 | DCA PRDSW | |
147 | GTNMX, DCA NMCT | |
148 | TAD I LXR | |
149 | TAD [-240 | |
150 | SNA | |
151 | JMP .-3 | |
152 | TAD [240 | |
153 | SKP | |
154 | GTNMLP, TAD I LXR | |
155 | DCA TMP | |
156 | TAD TMP | |
157 | TAD [-256 | |
158 | SNA | |
159 | JMP PERIOD | |
160 | TAD [-2 | |
161 | CLL | |
162 | TAD [-12 | |
163 | SNL CLA | |
164 | JMP NINSRT | |
165 | TAD [-301 | |
166 | TAD TMP | |
167 | CLL CML | |
168 | TAD [-32 | |
169 | SNL CLA | |
170 | JMP EONAME | |
171 | NINSRT, TAD NMCT | |
172 | TAD [-6 | |
173 | SMA CLA | |
174 | JMP GTNMLP | |
175 | TAD NMCT | |
176 | CLL RAR | |
177 | TAD PN | |
178 | DCA TEMP1 | |
179 | TAD TMP | |
180 | AND [77 | |
181 | SZL | |
182 | JMP .+4 | |
183 | RTL | |
184 | RTL | |
185 | RTL | |
186 | TAD I TEMP1 | |
187 | DCA I TEMP1 | |
188 | ISZ NMCT | |
189 | JMP GTNMLP | |
190 | PERIOD, ISZ PRDSW | |
191 | JMP EONAME | |
192 | ISZ PN | |
193 | TAD [4 | |
194 | JMP GTNMX | |
195 | EONAME, TAD NMCT | |
196 | SZA CLA | |
197 | ISZ GETNAM | |
198 | JMP I GETNAM | |
199 | \fPRNAME, 4000 | |
200 | TAD NM1 | |
201 | JMS PRWD | |
202 | TAD NM2 | |
203 | JMS PRWD | |
204 | TAD NM3 | |
205 | JMS PRWD | |
206 | TAD NM4 | |
207 | SNA CLA | |
208 | JMP I PRNAME | |
209 | TAD [256 | |
210 | JMS PCHAR | |
211 | TAD NM4 | |
212 | JMS PRWD | |
213 | JMP I PRNAME | |
214 | PRINLP, JMS PRWD | |
215 | ISZ PRMESG | |
216 | SKP | |
217 | IFNZRO .-330 <CCLTRB,ERRR> | |
218 | PRMESG, 0 | |
219 | CLA | |
220 | TAD I PRMESG | |
221 | SZA | |
222 | JMP PRINLP | |
223 | TSF | |
224 | JMP .-1 | |
225 | JMP I ERRET | |
226 | PRWD, 0 | |
227 | DCA TMP | |
228 | TAD TMP | |
229 | RTR | |
230 | RTR | |
231 | RTR | |
232 | JMS PCHAR | |
233 | TAD TMP | |
234 | JMS PCHAR | |
235 | JMP I PRWD | |
236 | PCHAR, 0 | |
237 | AND [77 | |
238 | SNA | |
239 | JMP I PCHAR | |
240 | TAD [240 | |
241 | AND [77 | |
242 | TAD [240 | |
243 | JMS I PCH | |
244 | JMP I PCHAR | |
245 | \fPRINTQ, JMS PRMESG | |
246 | TEXT /?/ | |
247 | 0 | |
248 | ||
249 | *367 | |
250 | KSV2A, SAVE2A | |
251 | SAVE2, TAD I LXR | |
252 | SNA /ARE THERE ARGUMENTS? | |
253 | JMP I KSV2A /NO..USE CCB | |
254 | JMS I [SHNDLR /READ IN ARGUMENT OVERLAY | |
255 | 0201 | |
256 | CSOVLY | |
257 | MSOVLY | |
258 | JMP KMONER /NORMAL RETURN IS TO 400 | |
259 | \f *400 | |
260 | KMNTRY, JMP I HANDAD /V3 | |
261 | 0 /FREE LOCATION ! | |
262 | PCRLF, JMS I [CRLF | |
263 | IFNZRO .-403 <BTCHER,XXXX> | |
264 | ||
265 | KEYMON, JMS I GLINE | |
266 | TAD [BEGLN-1 /ADDRESS REFERENCED BY INIT | |
267 | DCA LXR | |
268 | JMS I GNAME | |
269 | /V3D JMP I [PRINTQ | |
270 | XXX=[PRINTQ /NEED LITERAL IN SAME PLACE | |
271 | NOP /V3D ALLOW @ IN NAME | |
272 | JMS I [SRCH | |
273 | -123; ASSIGN | |
274 | -2301; SAVE | |
275 | -2225; RUN | |
276 | -705; GET | |
277 | -2200; R | |
278 | -2324; START | |
279 | -1704; ODT | |
280 | -0405; DEAS | |
281 | IFNZRO .-431 <SEECCL,ZZZ> | |
282 | -0401; DATE | |
283 | 0 | |
284 | JMP I .+1 | |
285 | CCLSW, PRQMRK /MODIFIED FOR CCL TO 'GETCCL' | |
286 | IFNZRO CCLSW-435 <SEECCL,ZZ> | |
287 | ||
288 | ASSIGN, TAD [12 | |
289 | JMS GDEVNO | |
290 | TAD [UDNAME-1 | |
291 | DCA TM1 | |
292 | JMS I GNAME | |
293 | JMP ASGN2+1 /NO USER DEV. DO A DEASSIGN | |
294 | TAD NM2 /SEE IF WE HASH IT | |
295 | SNA | |
296 | JMP ASGN2 /DON'T HASH..ONLY 1 OR 2 CHARS | |
297 | TAD NM1 | |
298 | RAL /LINK BECOMES 4000 IF NECESSARY | |
299 | CLA CML RAR | |
300 | TAD NM2 | |
301 | ASGN2, TAD NM1 | |
302 | JMP I [ASDONE | |
303 | \fR, DCA I [GETSW | |
304 | TAD P6203 | |
305 | JMS I [RESET | |
306 | ISZ RUNSW | |
307 | TAD [SHNDLR | |
308 | DCA HANDAD | |
309 | CLA IAC | |
310 | JMP RGETPG | |
311 | GDEVNO, 0 | |
312 | DCA ASNM1-1 | |
313 | JMS I [MINCOR | |
314 | JMS I GNAME | |
315 | JMP I [KMER4 | |
316 | TAD NM1 | |
317 | DCA ASNM1 | |
318 | TAD NM2 | |
319 | DCA ASNM1+1 | |
320 | TAD HNDLAD | |
321 | DCA HANDAD | |
322 | CIF 10 | |
323 | JMS I SYSTEM | |
324 | 1 | |
325 | ASNM1, 0;0 | |
326 | HANDAD, KMINIT /V3 | |
327 | JMP I [KMER1 | |
328 | TAD ASNM1+1 | |
329 | JMP I GDEVNO | |
330 | \fGET, TAD [SKP | |
331 | RUN, DCA I [GETSW | |
332 | TAD P6203 | |
333 | JMS I [RESET | |
334 | DCA RUNSW | |
335 | CLA IAC | |
336 | JMS GDEVNO | |
337 | RGETPG, JMS RSCOMN | |
338 | JMS I [MINCOR | |
339 | TAD SENTER | |
340 | CIF 10 | |
341 | JMS I SYSTEM | |
342 | 2 | |
343 | PGNAME, NM1 | |
344 | MOVBUF /USED AS POINTER TO FIELD 1 SR | |
345 | JMP I [KMER2 | |
346 | JMP I [RLOADR | |
347 | RSCOMN, 0 | |
348 | DCA SENTER | |
349 | TAD HANDAD | |
350 | DCA DEVHND | |
351 | JMS I GNAME | |
352 | JMP I [KMER4 | |
353 | TAD NM4 | |
354 | SNA | |
355 | TAD [2326 | |
356 | DCA NM4 | |
357 | JMP I RSCOMN | |
358 | SAVE, TAD [SAVE12 /CHANGE ERROR RETURN ADDRESS AS WE WILL DESTROY CORE | |
359 | DCA ERRET | |
360 | TAD I [JSBITS | |
361 | JMS I [RESET | |
362 | CIF 10 /MOVE THE LINE BUFFER TO 1600 DURING | |
363 | JMS I PGNAME+1 /A SAVE, AS HANDLER WIPES IT OUT | |
364 | TAD LXR /LET'S MOVE THE REGISTER AROUND | |
365 | TAD [SVLNBF-BEGLN | |
366 | DCA LXR | |
367 | TAD [1001 | |
368 | DCA HNDLAD | |
369 | CLA IAC | |
370 | JMS GDEVNO | |
371 | JMS RSCOMN | |
372 | JMP I [SAVE2 | |
373 | HNDLAD, /REPLACED WITH 1001 BY SAVE | |
374 | ||
375 | WRCTLB, 7001 /WRITE OVERLAY AND CCB | |
376 | JMS I [SHNDLR | |
377 | 4600 | |
378 | 6200 | |
379 | MTEMP+6 | |
380 | JMP KMONER | |
381 | JMP I WRCTLB | |
382 | \f *573 /LOADS SYSTEM ODT OVER THE MONITOR | |
383 | ODT, JMS I PGTOUT | |
384 | JMS I [SHNDLR | |
385 | 1001 | |
386 | 0 | |
387 | ODTREC | |
388 | /LOCATION 600 IN ODT IS A HLT (ERROR RETURN) | |
389 | \f *600 | |
390 | START, DCA TEMP1 | |
391 | DCA TEMP2 | |
392 | TAD I LXR /V3 | |
393 | SZA /V3 | |
394 | JMP I [STRTX /V3 | |
395 | TAD I [JFIELD | |
396 | DCA I [MSTCDF | |
397 | TAD I [JSBITS | |
398 | AND [1000 | |
399 | SZA CLA | |
400 | JMP I [KMER3 | |
401 | TAD I [JSBITS | |
402 | JMS I [RESET /RESET ONLY IF NO START ADR SPECIFIED | |
403 | TAD I [JSTART | |
404 | STCOMN, DCA I [MSTADR | |
405 | TSF | |
406 | JMP .-1 /WAIT FOR PRINTER TO FINISH | |
407 | JMS I PGTOUT | |
408 | TAD I [JSBITS | |
409 | SPA CLA | |
410 | JMP I [MSTCDF | |
411 | TAD [SHNDLR | |
412 | DCA I [MREAD-1 | |
413 | TAD [1000 | |
414 | DCA I [MREAD+1 | |
415 | DCA I [MREAD+2 | |
416 | TAD [MTEMP+4 | |
417 | DCA I [MREAD+3 | |
418 | TAD FUDJMP | |
419 | DCA I [MSWITC | |
420 | JMP I [MREAD | |
421 | \fMINCOR, 0 | |
422 | CIF 10 | |
423 | JMS I SYSTEM | |
424 | 10 | |
425 | CDF 10 | |
426 | DCA I [OLDT9 /ZERO OUT "DIRECTORY IN CORE" KEY | |
427 | CDF 0 | |
428 | TAD [200 | |
429 | DCA SYSTEM | |
430 | JMP I MINCOR | |
431 | RLOADR, | |
432 | RUN1, TAD I [PGNAME | |
433 | DCA FILE | |
434 | JMS I DEVHND | |
435 | 0101 | |
436 | CCB | |
437 | FILE, 0 /READ IN THE HEADER BLOCK | |
438 | JMP KMONER /ERROR WHILE READING HEADER BLOCK | |
439 | TAD I [CCB | |
440 | JMS I [CCBTST /TEST FOR VALID CORE CONTROL | |
441 | TAD I [CCB+3 /V3D | |
442 | RAL /V3D | |
443 | JMS I KRCHK /V3D CAN'T RUN SYSTEM CUSP UNDER OS78 | |
444 | TAD I [CCB+1 | |
445 | DCA I [MSTCDF | |
446 | TAD I [CCB+2 | |
447 | DCA I [MSTADR /MOVE THE STARTING ADDRESS INTO UPPER CORE | |
448 | TAD I [CCB+1 | |
449 | DCA I [JFIELD | |
450 | TAD I [CCB+2 | |
451 | DCA I [JSTART | |
452 | TAD I [CCB+3 /SET UP THE JOB INFORMATION AREA | |
453 | JMS I [RESET /AND CLEAR INFORMATION ABOUT "RUN" HANDLER | |
454 | TAD FUDJMP | |
455 | DCA I [MSWITC /SET MSWITC TO INHIBIT LOADING 7400 | |
456 | GETSW, SKP /SKP FOR GET, NOP FOR RUN | |
457 | JMP RUN2 | |
458 | TAD P6203 | |
459 | DCA I [MSTCDF | |
460 | TAD [7600 | |
461 | DCA I [MSTADR /IF A GET, SET STARTING ADDRESS TO RETURN | |
462 | /TO MONITOR | |
463 | \fRUN2, TAD I [CCB | |
464 | CLL CMA RAL /POINT TO LAST DOUBLEWORD IN CCB | |
465 | TAD [CCB+4 | |
466 | DCA TM1 /TM1 POINTS TO SEG. ADDRESS | |
467 | TAD I TM1 /STORE ADDRES TO READ POSSIBLE OVERLAY | |
468 | DCA I [MREAD+2 | |
469 | ISZ TM1 /POINT TO SEGMENT CONTROL WORD | |
470 | TAD DEVHND /IF THE HANDLER IS IN 7600, OR | |
471 | TAD [200 /IF THE SEGMENT DOES NOT LOAD OVER | |
472 | CLA RAL /7000, NO OVERLAY IS NEEDED. ALSO IF | |
473 | TAD I TM1 /THE SEGMENT IS IN FIELDS 1-7. | |
474 | AND [77 | |
475 | RUN5A, SZA CLA | |
476 | JMP I [RUN6 /NO PROBLEMS.. READ STUFF IN | |
477 | TAD I [MREAD+2 /SEE IF WE OVERLAY 7000 | |
478 | CLL CML RAR | |
479 | TAD I TM1 /ADD IN CONTROL WORD | |
480 | TAD [300 | |
481 | SPA /IF NEGATIVE, 7000 IS NOT OVERLAYED | |
482 | JMP RUN5A | |
483 | TAD [7600 /GETS 0, 100, 200, OR 300 | |
484 | SMA /IF POSITIVE READ 3 PAGE OVERLAY | |
485 | ISZ I [PGNAME+1 /POINT TO NEXT TO LAST RECORD | |
486 | TAD [300 | |
487 | DCA RDCNT | |
488 | TAD I [PGNAME+1 | |
489 | CMA /GET RECORD TO READ OVERLAY FROM | |
490 | TAD FILE | |
491 | DCA R7000 | |
492 | JMS I DEVHND /READ OVERLAY FROM THE FILE INTO PAGES | |
493 | RDCNT, 0 /BEFORE CCB | |
494 | 6200 /THEN WRITE THE WHOLE MESS OUT | |
495 | R7000, 0 | |
496 | JMP I [RERR | |
497 | JMS I [WRCTLB /WRITE OUT THE OVERLAY+CCB | |
498 | DCA .-1 /BUT ONLY ONCE!! | |
499 | ISZ RUNSW | |
500 | DCA I [MSWITC /ENABLE READ OF OVERLAY | |
501 | TAD RDCNT /SEE IF THIS SEG IS EXHAUSTED | |
502 | CIA | |
503 | TAD I TM1 | |
504 | SPA SNA | |
505 | ISZ I [CCB /ARE WE DONE ALL SEGMENTS? | |
506 | SKP /NOT YET. LOOP UNTIL DONE | |
507 | JMP I [MSWITC | |
508 | RUN5, DCA I TM1 /SAVE ALTERED CONTROL WORD | |
509 | JMP RUN2 | |
510 | \f/ASDONE, CDF 10 | |
511 | / DCA I TM1 /THIS COULD BE OPTIMIZED | |
512 | / CDF 0 | |
513 | / JMP I [KEYMON | |
514 | ||
515 | KMER1, JMS I [PRNAME /DEVICE NOT AVAILABLE | |
516 | JMS I [PRMESG | |
517 | TEXT / NOT AVAILABLE/ | |
518 | \f *1000 | |
519 | /MUST BE AT 1000 FOR BATCH | |
520 | BEGLN, 0 /LINE BUFFER COULD BECOME "@ | |
521 | "I | |
522 | "N | |
523 | "I | |
524 | "T | |
525 | KMINIT, CDF 10 /INITIALIZATION - DESTROYED BY LINE BUFFER | |
526 | ISZ I [7700 /LOC 17700=7777 IF I/O MONITOR IS KNOWN | |
527 | JMP .+3 /TO BE IN CORE, SO SET UP | |
528 | TAD [200 /THE INITIAL POINTER FOR CALLS TO THE MONITOR | |
529 | DCA SYSTEM /ACCORDINGLY | |
530 | CDF 0 | |
531 | TAD I LXR | |
532 | DCA I X1 | |
533 | ISZ TEMP2 | |
534 | JMP .-3 | |
535 | CDF 10 | |
536 | TAD MVFROM | |
537 | DCA I PDBUF | |
538 | ISZ .-2 | |
539 | ISZ PDBUF | |
540 | ISZ MVCNT | |
541 | JMP .-5 | |
542 | CDF 0 | |
543 | TAD I PDBUF+1 /SEE IF BATCH IS SET | |
544 | RAL /IF YES, GO TO PAGE 0 TO CONTINUE | |
545 | SMA CLA /IF IT ISN'T, CONTINUE NORMALLY | |
546 | JMP INTGO /NORMAL KEYBOARD SYSTEM | |
547 | DCA I RTWTPT /DON'T WAIT ON TTY FLAG IF BATCH IS RUNNING | |
548 | TAD I [JSBITS /IS BOS IN PLACE? | |
549 | AND DCBF | |
550 | SNA CLA | |
551 | JMP BATCH /NO. GO READ IT IN. | |
552 | JMP BCHGO /YES. START IT UP. | |
553 | INTGO, TAD [200 | |
554 | KRS | |
555 | TAD M203 | |
556 | SNA CLA /IS THERE A ^C IN THE READER BUFFER | |
557 | KSF /WITH THE FLAG ON? | |
558 | JMP I ERRET /NO - PRINT CRLF AND PERIOD | |
559 | JMP CLR /V3D | |
560 | /CCLADR, GETCCL /V3D DIDN'T SEEM TO BE USED | |
561 | RTWTPT, RUNTWT | |
562 | DCBF, 400 | |
563 | /START | |
564 | PMSRST, SHNDLR&177+4200 /JMS SHNDLR | |
565 | 0300 | |
566 | 7000 | |
567 | MTEMP+6 | |
568 | HLT /CONTAINS SECOND COPY OF OS/78 BIT | |
569 | CDF CIF 0 | |
570 | TCF | |
571 | /END | |
572 | MVCNT, MOVBUF-MVT3-1 | |
573 | PDBUF, MOVBUF | |
574 | \fMVFROM, NOPUNCH | |
575 | *7626 | |
576 | ENPUNCH | |
577 | MOVBUF, 7777 /USED IN BATCH SETUP | |
578 | TAD I MVT1 /MOVE THE LINE BUFFER FROM 1000 | |
579 | DCA I MVT2 /TO 1655 | |
580 | ISZ MVT1 | |
581 | ISZ MVT2 | |
582 | ISZ MVT3 | |
583 | JMP .-5 | |
584 | CIF CDF 0 | |
585 | JMP I MOVBUF | |
586 | ||
587 | MVT1, BEGLN | |
588 | MVT2, SVLNBF | |
589 | MVT3, -112 | |
590 | ||
591 | ||
592 | *1077 /V3D | |
593 | INIT, CDF 10 /V3D (INITIALIZATION) | |
594 | TAD DCBF | |
595 | DCA I ROT /RESTORE LOC 7677 TO '400' | |
596 | CDF 0 | |
597 | DCA KMINIT /END LINE WITH 0 | |
598 | TLS | |
599 | JMP I CRLF /FAKE OUT KBM AS IF USER TYPED @INIT | |
600 | ||
601 | ||
602 | CLR, KCC | |
603 | JMP I .+1 | |
604 | CTRLC | |
605 | \f *1112 | |
606 | ENPUNCH | |
607 | ||
608 | DIGTLP, TAD I LXR | |
609 | STRTX, TAD (-270 | |
610 | CLL | |
611 | TAD [10 | |
612 | DCA TMP1 /V3 | |
613 | SNL | |
614 | JMP EONUM | |
615 | /V3 ISZ DIGFLG | |
616 | JMS ROT | |
617 | JMS ROT | |
618 | JMS ROT | |
619 | TAD TEMP2 | |
620 | TAD TMP1 | |
621 | DCA TEMP2 | |
622 | JMP DIGTLP | |
623 | EONUM, TAD TEMP1 | |
624 | AND [7 | |
625 | CLL RTL | |
626 | RAL | |
627 | TAD KM6203 | |
628 | DCA I [MSTCDF | |
629 | TAD TEMP2 | |
630 | JMP I .+1 | |
631 | STCOMN | |
632 | ||
633 | ROT, 7677 /V3D NEEDED FOR INIT | |
634 | TAD TEMP2 | |
635 | CLL RAL | |
636 | DCA TEMP2 | |
637 | TAD TEMP1 | |
638 | RAL | |
639 | DCA TEMP1 | |
640 | JMP I ROT | |
641 | \fDEAS, TAD [UDNAME-1 | |
642 | DCA X1 | |
643 | TAD [-17 | |
644 | DCA TM1 | |
645 | CDF 10 | |
646 | DCA I X1 | |
647 | ISZ TM1 | |
648 | JMP .-2 | |
649 | KM6203, CDF CIF 0 | |
650 | JMP I [KEYMON | |
651 | ||
652 | ASDONE, CDF 10 /V3 | |
653 | DCA I TM1 /V3 | |
654 | JMP KM6203 /V3 | |
655 | ||
656 | ||
657 | CRLF, KEYMON+1 /V3D NEEDED FOR INIT | |
658 | TAD [215 | |
659 | DCA NM1 | |
660 | JMS I (PRNT | |
661 | TAD [212 | |
662 | JMS I PCH | |
663 | JMP I CRLF | |
664 | ||
665 | M203, -203 | |
666 | PAGE | |
667 | \f/NOTE: XR=AMFLAG ! | |
668 | ||
669 | *1200 | |
670 | /TELETYPE INPUT ROUTINE | |
671 | XGLINE, KEYMON+1 /MUST BE AT 1200 FOR BATCH & CCL | |
672 | TAD [". | |
673 | JMS I PCH | |
674 | DCA RBFLAG | |
675 | TAD [BEGLN-1 | |
676 | CHLM1, DCA LXR | |
677 | DCA AMFLAG /ZERO ALTMODE FLAG | |
678 | CHLOOP, KSF | |
679 | JMP CHLOOP | |
680 | TAD [200 | |
681 | KRS | |
682 | DCA NM1 | |
683 | KCC | |
684 | JMS SRCH | |
685 | -225;CTRLU | |
686 | -215;CARRET | |
687 | -377;RUBOUT | |
688 | -375;ALTMOD /THIS AREA GETS MODIFIED BY SET | |
689 | -376;ALTMOD | |
690 | -233;ALTMOD | |
691 | -212;LFEED | |
692 | -200;CHLOOP | |
693 | -217;CHLOOP /IGNORE ^O | |
694 | -203;CTRLC /MUST BE JUST BEFORE 0 | |
695 | /MUST BE HERE FOR CCL | |
696 | 0 | |
697 | JMS PRNT | |
698 | CINSRT, TAD NM1 | |
699 | DCA I LXR | |
700 | TAD LXR | |
701 | TAD [-BEGLN-110 | |
702 | SPA CLA | |
703 | JMP CHLOOP | |
704 | CARRET, JMS I [CRLF | |
705 | TAD LXR | |
706 | TAD [1-BEGLN | |
707 | SNA CLA | |
708 | JMP XGLINE+1 | |
709 | DCA I LXR | |
710 | DCA I LXR | |
711 | JMP I XGLINE | |
712 | \f/THIS PAGE GETS MODIFIED BY SET COMMANDS (FOR REAL SCOPE RUBOUTS) | |
713 | /**** BEWARE! *** | |
714 | ||
715 | PRNT, 0 | |
716 | ISZ RBFLAG | |
717 | JMP .+3 | |
718 | TAD ["\ | |
719 | JMS I PCH | |
720 | DCA RBFLAG | |
721 | TAD NM1 | |
722 | JMS I PCH | |
723 | JMP I PRNT | |
724 | CTRLC, | |
725 | CTRLU, TAD ["^ | |
726 | JMS I PCH | |
727 | TAD NM1 | |
728 | TAD [100 | |
729 | CLRLIN, JMS I PCH | |
730 | RBSPCL, JMS I [CRLF | |
731 | JMP XGLINE+1 | |
732 | ||
733 | ALTMOD, TAD ["$ | |
734 | DCA NM1 | |
735 | JMS PRNT | |
736 | ISZ AMFLAG /NOTE ALTMODE | |
737 | JMP CARRET+1 | |
738 | RUBOUT, TAD LXR | |
739 | TAD [1-BEGLN | |
740 | SNA CLA | |
741 | JMP RBSPCL | |
742 | TAD ["\ /MUST BE HERE | |
743 | ISZ RBFLAG | |
744 | JMS I PCH | |
745 | CLA CMA | |
746 | DCA RBFLAG | |
747 | TAD LXR | |
748 | DCA TEMP1 | |
749 | TAD I TEMP1 | |
750 | JMS I PCH | |
751 | LBCKUP, CLA CMA | |
752 | TAD LXR | |
753 | JMP CHLM1 | |
754 | \fSRCH, 0 | |
755 | TAD I SRCH | |
756 | ISZ SRCH | |
757 | SNA | |
758 | JMP I SRCH | |
759 | TAD NM1 | |
760 | SNA CLA | |
761 | JMP SFND | |
762 | ISZ SRCH | |
763 | JMP SRCH+1 | |
764 | SFND, TAD I SRCH | |
765 | DCA TEMP1 | |
766 | JMP I TEMP1 | |
767 | LFEED, JMS I [CRLF | |
768 | DCA I LXR | |
769 | TAD [". | |
770 | JMS I PCH | |
771 | TAD [BEGLN-1 | |
772 | DCA XR | |
773 | TAD I XR | |
774 | SNA | |
775 | JMP LBCKUP | |
776 | JMS I PCH | |
777 | JMP .-4 | |
778 | ||
779 | PRQMRK, JMS I [PRNAME | |
780 | JMP I [PRINTQ | |
781 | IFNZRO PRQMRK-1357 <SEECCL,ZZXX> | |
782 | ZBLOCK 1 /A FREE LOCATION! | |
783 | ||
784 | IFNZRO .-1362 <FIXCCL,ERRRR> | |
785 | ||
786 | GETCCL, TAD [6003 | |
787 | JMS I [RESET | |
788 | TAD [67 /CCL OVERLAY BLOCK IS BLOCK 67 *** | |
789 | DCA OV | |
790 | JMP DATE2 | |
791 | DATE, TAD TMP | |
792 | SNA CLA | |
793 | JMP I [CCLSW-1 /USED TO BE JMP GETCCL | |
794 | DATE2, JMS I [SHNDLR /READ IN DATE OVERLAY | |
795 | 0201 | |
796 | 0400 | |
797 | OV, MSOVL2 | |
798 | JMP KMONER | |
799 | JMP I [600 | |
800 | PAGE | |
801 | \f *1400 | |
802 | SAVE2A, JMS I [SHNDLR | |
803 | 0201 | |
804 | 400 | |
805 | MTEMP+10 | |
806 | JMP KMONER | |
807 | SAVE3, TAD [603 | |
808 | DCA XR | |
809 | TAD I [600 | |
810 | DCA TM1 | |
811 | TAD TM1 | |
812 | JMS I [CCBTST /CHECK TM1 FOR VALID CCB | |
813 | SAVE3A, ISZ XR | |
814 | TAD I XR /GET THE I/O CONTROL WORD OF THIS SEGMENT | |
815 | JMS I PROTAT /EXTRACT THE LENGTH FROM IT | |
816 | TAD CLENGT | |
817 | DCA CLENGT /UPDATE THE LENGTH OF THE FILE | |
818 | ISZ TM1 | |
819 | JMP SAVE3A /LOOP FOR ALL SEGMENTS OF THE FILE | |
820 | TAD CLENGT /USE THIS LENGTH WHEN ENTERING THE FILE | |
821 | CLL RTL | |
822 | RTL | |
823 | TAD SENTER | |
824 | CIF 10 | |
825 | JMS I SYSTEM | |
826 | 3 /ENTER | |
827 | SFILE, NM1 | |
828 | 0 /LENGHT UNIMPORTANT | |
829 | JMP SAVERR | |
830 | TAD SENTER | |
831 | CIF 10 | |
832 | JMS I SYSTEM | |
833 | 4 /CLOSE | |
834 | NM1 /NAME FOR "CLOSE" | |
835 | CLENGT, 1 /CLOSING LENGTH | |
836 | JMP SAVERR | |
837 | TAD [603 | |
838 | DCA XR | |
839 | JMS I PGTOUT /KICK THE I/O MONITOR OUT IF NECESSARY | |
840 | TAD I [JSBITS | |
841 | RAL | |
842 | CMA /IF JOB LOADS INTO LOCS 0-1777, | |
843 | SNL SMA CLA /BUT NOT INTO LOCS 10000-11777, | |
844 | JMS LOADF0 /LOAD 0-1777 INTO 10000-11777 NOW | |
845 | TAD SFILE | |
846 | DCA SWFILE | |
847 | JMS SWRITE /WRITE OUT CONTROL BLOCK | |
848 | SAVE4, TAD I XR | |
849 | DCA SADR | |
850 | CLA CLL CML RAR | |
851 | TAD I XR | |
852 | DCA SCTL | |
853 | \fSAVE5, TAD SADR | |
854 | RAL | |
855 | SZL SPA CLA /DOES THIS SEGMENT START BELOW 2000? | |
856 | JMP SAVE8 /NO - NOTHING TO WORRY ABOUT | |
857 | TAD SCTL | |
858 | AND [70 | |
859 | SZA CLA /FIELD 0? | |
860 | JMP SAVE8 /NO - SAVE AS IS | |
861 | SAVE6, JMS LOADF0 /LOAD THE FIELD 0 SAVE AREA OVER THE I/O MONITOR | |
862 | SAVE7, CLA CMA | |
863 | TAD SCTL | |
864 | CLL RAL | |
865 | TAD SADR | |
866 | RAL | |
867 | SZL SPA CLA /CHECK WHETHER UPPER LIMIT IS ABOVE 2000 | |
868 | JMP SAVE7A /IT IS - MUST MAKE 2 WRITES | |
869 | TAD SCTL /TOTALLY CONTAINED IN 0-1777 | |
870 | TAD [10 /CHANGE FIELD 0 TO FIELD 1 AND CONTINUE | |
871 | JMP SAVE8A | |
872 | SAVE7A, TAD SCTL /WRITE IN 2 PARTS - | |
873 | DCA TM1 | |
874 | TAD SADR | |
875 | CIA /FIRST PART FROM FIELD 1, EVERYTHING BELOW 2000 | |
876 | TAD [2020 | |
877 | CLL CML RAR | |
878 | DCA SCTL | |
879 | JMS SWRITE | |
880 | CLA CLL CML RTR | |
881 | DCA SADR | |
882 | TAD SCTL /SECOND PART FROM FIELD 0, EVERYTHING ABOVE 2000 | |
883 | AND [3700 | |
884 | CIA | |
885 | TAD TM1 | |
886 | SMA /FULL FIELD SAVE IN F0 MAKES THIS + | |
887 | TAD [4000 /COMPENSATE FOR THAT CASE | |
888 | SAVE8A, DCA SCTL | |
889 | SAVE8, JMS SWRITE | |
890 | ISZ I [600 | |
891 | JMP SAVE4 | |
892 | SAVE12, JMS I [SHNDLR | |
893 | 0610 | |
894 | 0 | |
895 | MONTOR /FORCE THE I/O MONITOR BACK INTO CORE | |
896 | JMP KMONER /(OY VEH!) | |
897 | CLA CMA | |
898 | CDF 10 | |
899 | DCA I [7700 /TELL THE KEYBOARD MONITOR THAT ITS IN CORE | |
900 | JMP I [7605 /*** DEPENDS ON 7605 BEING A CDF CIF 10 *** | |
901 | ||
902 | \fLOADF0, 0 | |
903 | ISZ F0OVLY /HAS THE FIELD 0 OVERLAY BEEN LOADED BEFORE? | |
904 | JMP I LOADF0 /EVIDENTLY | |
905 | JMS I [SHNDLR | |
906 | 1010 | |
907 | F0OVLY, -1 /WILL BE 0 IF WE EXECUTE THIS CODE, OF COURSE | |
908 | MTEMP+4 | |
909 | JMP KMONER | |
910 | JMP I LOADF0 | |
911 | ||
912 | SWRITE, 0 | |
913 | JMS I DEVHND | |
914 | SCTL, 4101 | |
915 | SADR, 600 | |
916 | SWFILE, 0 | |
917 | JMP SAVERR | |
918 | TAD SCTL | |
919 | JMS I PROTAT | |
920 | TAD SWFILE | |
921 | DCA SWFILE /BUMP RECORD NUMBER | |
922 | JMP I SWRITE | |
923 | SAVERR, JMS I [PRMESG | |
924 | TEXT /SAVE ERROR/ | |
925 | PROTAT, ROTAT | |
926 | \f *1600 | |
927 | KMER4, JMS I [PRMESG | |
928 | TEXT /TOO FEW ARGS/ | |
929 | CCBTST, 0 /EXAMINE COUNT WORD OF CCB FOR VALIDITY | |
930 | /ASCII AND BINARY FILES USUALLY FAIL THIS TEST | |
931 | CMA | |
932 | AND [7740 | |
933 | SNA CLA | |
934 | JMP I CCBTST /IT WAS VALID | |
935 | CIERR, TAD [7605 | |
936 | DCA ERRET /RELOAD MONITOR ON THIS ERROR | |
937 | JMS I [PRMESG /IT WASN'T - TELL THE USER | |
938 | TEXT /CORE IMAGE ERR/ | |
939 | GETOUT, 0 /SUBROUTINE TO KICK MONITOR OUT IF NECESSARY | |
940 | TAD I [JSBITS | |
941 | RAR | |
942 | CLA | |
943 | TAD SYSTEM | |
944 | SZL SPA CLA /IS THE SYSTEM IN CORE AND SHOULD IT BE? | |
945 | JMP I GETOUT | |
946 | CIF 10 /YES AND NO - KICK IT OUT | |
947 | JMS I SYSTEM | |
948 | 11 /BYE BYE | |
949 | TAD [7700 | |
950 | DCA SYSTEM | |
951 | JMP I GETOUT | |
952 | \fSVLNBF, | |
953 | KMER2, JMS I [PRNAME | |
954 | JMS I [PRMESG | |
955 | TEXT / NOT FOUND/ | |
956 | / | |
957 | /NEXT 112 LOCATIONS DESTROYED BY THE LINE BUFFER DURING A SAVE | |
958 | / | |
959 | ||
960 | RESET, 0 | |
961 | DCA I [JSBITS /MARK AREAS FOR I/O OPTOMIZATION | |
962 | JMS I [MINCOR | |
963 | CIF 10 | |
964 | JMS I SYSTEM | |
965 | 13 /RESET DEVICE HANDLERS AND OUTPUT FILES | |
966 | /V3D CDF 0 /THIS INSTRUCTION SEEMS UNNECESSARY | |
967 | JMP I RESET | |
968 | ||
969 | RCHK, 0 | |
970 | AND I RADR /V3D | |
971 | AND [200 /CAN'T ALLOW BOTH OS78 BIT AND SYSTEM CUSP BIT | |
972 | SNA CLA | |
973 | JMP I RCHK | |
974 | JMP CIERR /V3D CAN'T FALL INTO KMER3 | |
975 | /BECAUSE HAVE TO RELOAD KBM TO RESET 'PGNAME' | |
976 | KMER3, JMS I [PRMESG | |
977 | TEXT /NO!!/ | |
978 | ||
979 | RUN6, TAD I TM1 /STORE CONTROL WORD FOR LAST SEG. | |
980 | DCA I [MREAD+1 | |
981 | TAD RUNSW /IS THIS R OR RUN? | |
982 | SNA CLA | |
983 | JMS I [WRCTLB /RUN | |
984 | TAD I RFILE /V3D FOR LINKER | |
985 | DCA I RCTL /V3D SAVE BLOCK NUMBER IN 'SOFSET' | |
986 | TAD I RFILE | |
987 | RUN7, IAC | |
988 | DCA RUNFIL /STORE STARTING BLOCK NUMBER | |
989 | TAD DEVHND | |
990 | DCA I [MREAD-1 | |
991 | TAD DEVHND | |
992 | DCA RUNHND /STORE DEVICE HANDLER ENTRY IN THIS PAGE | |
993 | TAD I ADR1 | |
994 | DCA I ADR2 | |
995 | ISZ ADCNT | |
996 | JMP .-3 | |
997 | JMP I .+1 /AND GO TO IT | |
998 | RUN8&177+7400 | |
999 | ||
1000 | RFILE, FILE | |
1001 | ADCNT, RUN8&177+7600 | |
1002 | \fRUN8, ISZ I R7400 /IS THIS THE LAST PARAMETER PAIR? | |
1003 | JMP RUN9 /NO - KEEP LOADING | |
1004 | TAD RUNFIL | |
1005 | DCA I RMRD3 /MOVE THE RECORD NUMBER INTO THE FINAL READ | |
1006 | TSF | |
1007 | RUNTWT, JMP .-1 /WAIT FOR THE TELETYPE TO DIE DOWN (RF08 IS FAST!) | |
1008 | JMP I .+1 | |
1009 | MREAD /READ THE LAST SEGMENT AND START UP | |
1010 | RUN9, TAD I RUNADR | |
1011 | DCA RADR /SET UP THE LOADING ADDRESS OF THE CURRENT SEGMENT | |
1012 | ISZ RUNADR | |
1013 | TAD I RUNADR | |
1014 | DCA RCTL /AND THE READ CONTROL WORD | |
1015 | JMS I RUNHND | |
1016 | RCTL, SOFSET /V3D THESE ARE STORED INTO ONLY AFTER MOVING | |
1017 | RADR, OS78 /V3D | |
1018 | RUNFIL, 0 | |
1019 | JMP RERR /INPUT ERROR READING THE PROGRAM | |
1020 | TAD RCTL | |
1021 | JMS ROTAT /GET THE BLOCK LENGTH OF THIS SEGMENT | |
1022 | TAD RUNFIL | |
1023 | DCA RUNFIL /UPDATE THE BLOCK NUMBER FROM IT | |
1024 | ISZ RUNADR | |
1025 | JMP RUN8 /BACK FOR ANOTHER ONE | |
1026 | ||
1027 | RERR, CIF 10 | |
1028 | JMS I RU7700 | |
1029 | 7 | |
1030 | 0 /TOTALLY MEANINGLESS | |
1031 | RUNADR, CCB+4 | |
1032 | R7400, 7400 | |
1033 | RMRD3, MREAD+3 | |
1034 | RU7700, 7700 | |
1035 | RUNHND, 0 | |
1036 | IFNZRO ROTAT-SVLNBF-112&4000 <ERROR> | |
1037 | *1765 /MUST BE AT TOP OF PAGE | |
1038 | ROTAT, 0 | |
1039 | CLL RTR | |
1040 | RTR | |
1041 | RTR | |
1042 | AND RU37 | |
1043 | SNA | |
1044 | TAD RU37 | |
1045 | IAC | |
1046 | CLL RAR | |
1047 | JMP I ROTAT | |
1048 | RU37, 37 | |
1049 | \f /OVERLAY TO KEYBOARD MONITOR FOR "SAVE" WITH ARGUMENTS | |
1050 | *2000 /GOES INTO 400 | |
1051 | SAVE1A, TAD (1603 | |
1052 | DCA X1 | |
1053 | DCA TM1 | |
1054 | CDF 10 | |
1055 | DCA I [OLDT9 | |
1056 | S6203, CIF CDF 0 | |
1057 | TAD (SGETOUT-RSOVL2 /POINTER TO NEW GETOUT | |
1058 | ||
1059 | DCA PGTOUT /LIKEWISE "GETOUT" | |
1060 | JMS I [SHNDLR | |
1061 | 0210 | |
1062 | 1400 | |
1063 | MTEMP+10 /READ IN CONTROL BLOCK | |
1064 | JMP KMONER | |
1065 | JMS LXRBAK /RESET LXR TO LOOK AT FIRST CHAR | |
1066 | JMS LXRBAK | |
1067 | DCA DASHFG | |
1068 | SNUMLP, JMS SGTNUM | |
1069 | JMP SDLOOK /NO NUMBER - GET DELIMETER | |
1070 | TAD I LXR | |
1071 | TAD (-"- | |
1072 | SNA CLA | |
1073 | JMP SVDASH | |
1074 | JMS LXRBAK | |
1075 | TAD DASHFG | |
1076 | SNA CLA /WAS THERE A LOWER LIMIT? | |
1077 | JMS DASHSB /NO - SET LOWER LIMIT TO UPPER LIMIT | |
1078 | TAD TEMP1 | |
1079 | CIA CLL CML | |
1080 | TAD OLD1 | |
1081 | SZA CLA /ARE THE FIELDS THE SAME? | |
1082 | JMP KMER5 /NO - ERROR | |
1083 | TAD TEMP2 | |
1084 | AND [7600 | |
1085 | TAD [200 | |
1086 | DCA TEMP2 | |
1087 | TAD TEMP2 | |
1088 | CIA | |
1089 | TAD OLD2 | |
1090 | SZL CLA /IS UPPER LIMIT > LOWER LIMIT? | |
1091 | JMP KMER5 /NO - ERROR | |
1092 | CDF 10 | |
1093 | TAD OLD1 | |
1094 | DCA I X1 | |
1095 | TAD OLD2 | |
1096 | DCA I X1 | |
1097 | TAD TEMP2 | |
1098 | DCA I X1 /CREATE A TRIPLET(FIELD, LOW LIMIT, HIGH LIMIT) | |
1099 | /IN THE TABLE IN FIELD 1 | |
1100 | ISZ TM1 /BUMP ENTRY COUNT | |
1101 | \fSDLOOK, CDF 0 | |
1102 | TAD I LXR | |
1103 | SNA | |
1104 | JMP I (SVEND-RSOVL1 | |
1105 | TAD (-", | |
1106 | SNA | |
1107 | JMP SNUMLP-1 | |
1108 | TAD (",-"; | |
1109 | SNA | |
1110 | JMP SSTADR | |
1111 | TAD (";-"= | |
1112 | SNA CLA | |
1113 | JMP I (SSBITS-RSOVL1 | |
1114 | KMER5, JMS I [PRMESG | |
1115 | TEXT /BAD ARGS/ | |
1116 | LXRBAK, 0 | |
1117 | CLA CMA | |
1118 | TAD LXR | |
1119 | DCA LXR | |
1120 | JMP I LXRBAK | |
1121 | SVDASH, TAD DASHFG | |
1122 | SZA CLA | |
1123 | JMP KMER5 | |
1124 | ISZ DASHFG | |
1125 | JMS DASHSB | |
1126 | JMP SNUMLP | |
1127 | SSTADR, JMS SGTNUM | |
1128 | JMP KMER5 /NULL STARTING ADR - ERROR | |
1129 | TAD TEMP1 | |
1130 | AND [7 | |
1131 | CLL RTL | |
1132 | RAL | |
1133 | TAD S6203 | |
1134 | CDF 10 | |
1135 | DCA I (1601 /STORE AWAY STARTING FIELD | |
1136 | TAD TEMP2 | |
1137 | DCA I (1602 /AND STARTING ADDRESS | |
1138 | JMP SDLOOK | |
1139 | DASHSB, 0 | |
1140 | TAD TEMP1 | |
1141 | AND [7 | |
1142 | DCA OLD1 | |
1143 | TAD TEMP2 | |
1144 | AND [7600 | |
1145 | DCA OLD2 | |
1146 | JMP I DASHSB | |
1147 | DASHFG, 0 | |
1148 | OLD1, 0 | |
1149 | OLD2, 0 | |
1150 | ||
1151 | \fSGTNUM, 0 /GET A NUMBER ROUTINE | |
1152 | DCA DIGFLG /CLEAR DIGIT COLLECTED FLAG | |
1153 | DCA TEMP1 | |
1154 | DCA TEMP2 | |
1155 | JMS I (STARTX-RSOVL1 | |
1156 | JMP .+4 | |
1157 | TAD (20 | |
1158 | SNA CLA | |
1159 | JMP .-4 | |
1160 | JMS LXRBAK /SHOVE INDEX BACK | |
1161 | TAD DIGFLG /IS DIGIT PRESENT? | |
1162 | SZA CLA | |
1163 | ISZ SGTNUM | |
1164 | JMP I SGTNUM | |
1165 | PAGE | |
1166 | \f *2200 /LOADS INTO 600 | |
1167 | SSBITS, JMS I (SGTNUM-RSOVL1 | |
1168 | JMP I (KMER5-RSOVL1 | |
1169 | TAD TEMP2 | |
1170 | CDF 10 | |
1171 | DCA I (1603 | |
1172 | JMP I (SDLOOK-RSOVL1 | |
1173 | SVEND, JMS I [SHNDLR | |
1174 | 0101 | |
1175 | 0400 | |
1176 | MSOVL2 /READ IN SECOND PART OF OVERLAY | |
1177 | JMP KMONER | |
1178 | TAD TM1 | |
1179 | SNA | |
1180 | JMP I (MOVECB-RSOVL2 | |
1181 | CIA | |
1182 | CDF 10 | |
1183 | DCA I (1600 | |
1184 | /NOW SORT THE ENTRIES IN THE SEGMENT TABLE ON | |
1185 | /DECREASING FIELD AND INCREASING ADDRESS | |
1186 | /WITHIN THE FIELD. | |
1187 | TAD (1603 | |
1188 | DCA P1 | |
1189 | CLA IAC | |
1190 | TAD I (1600 | |
1191 | SNA | |
1192 | JMP I (SORTED-RSOVL2 /RIDICULOUS TO SORT ONE ITEM | |
1193 | DCA TEMP1 | |
1194 | OUTRLP, TAD (3 | |
1195 | TAD P1 | |
1196 | DCA P2 | |
1197 | TAD TEMP1 | |
1198 | DCA TEMP2 | |
1199 | INERLP, TAD P1 | |
1200 | DCA LXR | |
1201 | TAD P2 | |
1202 | DCA X1 | |
1203 | TAD I LXR | |
1204 | CIA CLL | |
1205 | TAD I X1 | |
1206 | SNA CLA | |
1207 | JMP TIE /FIELDS ARE EQUAL - SORT ON ADDRESS IN FIELD | |
1208 | SZL | |
1209 | JMP SWITCH /WRONG ORDER - SWITCH 'EM | |
1210 | TIENTY, TAD P2 | |
1211 | TAD (3 | |
1212 | DCA P2 /INDEX TO NEXT ENTRY | |
1213 | SWNTRY, ISZ TEMP2 | |
1214 | JMP INERLP | |
1215 | TAD P1 | |
1216 | TAD (3 | |
1217 | DCA P1 /ELEMENT IS IN PLACE - GO TO NEXT POSITION | |
1218 | ISZ TEMP1 | |
1219 | JMP OUTRLP | |
1220 | JMP I (SORTED-RSOVL2 /SORT COMPLETE - CHECK FOR CONSISTENCY | |
1221 | \fTIE, TAD I LXR | |
1222 | CIA CLL | |
1223 | TAD I X1 | |
1224 | SZL CLA /TEST FOR ADRESSES IN ASCENDING ORDER | |
1225 | JMP TIENTY /YES - DONT HAVE TO SWAP | |
1226 | SWITCH, JMS SWSUBR | |
1227 | JMS SWSUBR | |
1228 | JMS SWSUBR | |
1229 | CLA CLL CMA RTL | |
1230 | TAD P1 | |
1231 | DCA P1 /RESET FIRST POINTER | |
1232 | JMP SWNTRY /AND DONT BUMP 2D POINTER, AS WE HAVE JUST BUMPED IT | |
1233 | SWSUBR, 0 | |
1234 | ISZ P1 | |
1235 | ISZ P2 | |
1236 | TAD I P1 | |
1237 | DCA TM1 | |
1238 | TAD I P2 | |
1239 | DCA I P1 | |
1240 | TAD TM1 | |
1241 | DCA I P2 | |
1242 | JMP I SWSUBR | |
1243 | P1, 0 | |
1244 | P2, 0 | |
1245 | ||
1246 | \fSTARTX, 0 | |
1247 | TAD I LXR /ANYTHING LEFT? | |
1248 | SNA | |
1249 | JMP I STARTX /NO.. TAKE EMPTY RETURN | |
1250 | SKP | |
1251 | ADGTLP, TAD I LXR | |
1252 | TAD (-270 | |
1253 | CLL /SEE IF THIS IS A DIGIT | |
1254 | TAD [10 | |
1255 | SNL | |
1256 | JMP AONUM /NO.. GET OUT | |
1257 | DCA TMP1 | |
1258 | ISZ DIGFLG | |
1259 | JMS ROT2 | |
1260 | JMS ROT2 | |
1261 | JMS ROT2 | |
1262 | TAD TEMP2 | |
1263 | TAD TMP1 | |
1264 | DCA TEMP2 | |
1265 | JMP ADGTLP /KEEP LOOKING | |
1266 | AONUM, ISZ STARTX | |
1267 | JMP I STARTX | |
1268 | ||
1269 | ROT2, 0 | |
1270 | TAD TEMP2 | |
1271 | CLL RAL /WE NEED THIS BECAUSE THE HANDLER | |
1272 | DCA TEMP2 /WIPED THE FIRST COPY (MAYBE!!!) | |
1273 | TAD TEMP1 | |
1274 | RAL | |
1275 | DCA TEMP1 | |
1276 | JMP I ROT2 | |
1277 | PAGE | |
1278 | \f *2400 /LOADS INTO 400 ON TOP OF SAVE1A | |
1279 | SORTED, TAD I (1600 | |
1280 | IAC | |
1281 | SNA /IS THERE ONLY ONE ITEM IN THE LIST? | |
1282 | JMP MERGED /YES - DON'T COMPRESS FURTHER | |
1283 | DCA TEMP1 | |
1284 | TAD (1603 | |
1285 | DCA X1 | |
1286 | TAD (1606 | |
1287 | DCA LXR | |
1288 | /NOW CHECK THE SORTED FILE FOR CONSISTENCY | |
1289 | /OVERLAPPING SEGMENTS ARE ERRORS, | |
1290 | /ABUTTING SEGMENTS ARE TO BE CONDENSED IN | |
1291 | /THE INTERESTS OF SPEED | |
1292 | MRGLP, TAD I LXR | |
1293 | CIA | |
1294 | TAD I X1 | |
1295 | SZA CLA | |
1296 | JMP NOCMPR /DIFFERENT FIELDS - INCOMPARABLE | |
1297 | ISZ X1 | |
1298 | TAD I X1 | |
1299 | CIA | |
1300 | CLL | |
1301 | TAD I LXR | |
1302 | SNA CLA | |
1303 | JMP BUTTNG /UPPER LIMIT(2)=LOWER LIMIT(1) - ABUTTING SEGMENTS | |
1304 | SZL CLA | |
1305 | JMP NXTONE /UPPER LIM(2)<LOWER LIM(1) - NORMAL CASE | |
1306 | CDF 0 /UPPER LIM(2) > LOWER LIM(1) - ERROR | |
1307 | JMS I [PRMESG | |
1308 | TEXT /BAD ARGS/ | |
1309 | BUTTNG, CLA CMA | |
1310 | TAD X1 | |
1311 | DCA X1 | |
1312 | TAD I LXR | |
1313 | DCA I X1 /SET UPPER LIM(2) = UPPER LIM(1) | |
1314 | TAD X1 | |
1315 | TAD (-1777 | |
1316 | SZA CLA | |
1317 | JMP .-5 /AND COMPRESS OUT THE LOWER ENTRY | |
1318 | ISZ I (1600 /DECREMENT THE ENTRY COUNT (CAN'T OVERFLOW) | |
1319 | JMP SORTED /START OVER FROM BEGINNING | |
1320 | ||
1321 | NOCMPR, ISZ X1 | |
1322 | ISZ X1 | |
1323 | ISZ LXR | |
1324 | NXTONE, ISZ LXR | |
1325 | ISZ TEMP1 | |
1326 | JMP MRGLP /NOW ALL THAT REMAINS IS TO TRANSFORM OUR TRIPLETS | |
1327 | /INTO THE FORMAT WHICH THE RUN LOADER EXPECTS; I.E. | |
1328 | /DEVICE-HANDLER ARGUMENTS | |
1329 | \fMERGED, TAD (1603 | |
1330 | DCA LXR | |
1331 | TAD (1603 | |
1332 | DCA X1 | |
1333 | TAD I (1603 | |
1334 | AND (1777 | |
1335 | TAD (6000 | |
1336 | DCA I (1603 /INITIALIZE STATUS BITS TO NO OVERLOADS | |
1337 | TAD I (1600 | |
1338 | DCA TEMP1 | |
1339 | MERGLP, TAD I LXR | |
1340 | DCA TEMP2 | |
1341 | TAD I LXR | |
1342 | AND (7400 | |
1343 | DCA TMP1 | |
1344 | TAD TMP1 | |
1345 | DCA I X1 /STORE ADDRESS | |
1346 | TAD TMP1 | |
1347 | CIA | |
1348 | TAD I LXR /FORM UPPER LIM - LOWER LIM | |
1349 | CLL RTR | |
1350 | RTR | |
1351 | TAD TEMP2 /ADD IN FIELD | |
1352 | RAL | |
1353 | RTL /ROTATE WHOLE MESS INTO PLACE | |
1354 | DCA I X1 | |
1355 | TAD TMP1 | |
1356 | CLL RAL | |
1357 | SZL SPA CLA /IS THE LOWER LIMIT < 2000? | |
1358 | JMP NXTSEG /NO | |
1359 | TAD TEMP2 | |
1360 | RAR | |
1361 | SZA CLA /YES- IS THE FIELD 0 OR 1? | |
1362 | JMP NXTSEG /NO | |
1363 | SNL | |
1364 | IAC | |
1365 | CMA CML RTR | |
1366 | AND I (1603 /AND OUT THE PROPER OVERLOAD BIT | |
1367 | DCA I (1603 | |
1368 | NXTSEG, ISZ TEMP1 | |
1369 | JMP MERGLP | |
1370 | MOVECB, TAD (1577 | |
1371 | DCA LXR | |
1372 | TAD (577 | |
1373 | DCA X1 | |
1374 | TAD [7600 | |
1375 | DCA TEMP1 | |
1376 | CBMOVE, CDF 10 /FINAL CODE TO MOVE NEW CONTROL BLOCK | |
1377 | TAD I LXR /INTO PAGE 600 OF FIELD 0 | |
1378 | CDF 0 | |
1379 | DCA I X1 | |
1380 | ISZ TEMP1 | |
1381 | JMP CBMOVE | |
1382 | JMP I (SAVE3 /EXIT TO SAVE PROCESSOR | |
1383 | ||
1384 | \fSGETOUT,0 /REPLACES "GETOUT" WHICH WE'VE STORED OVER | |
1385 | TAD I [JSBITS | |
1386 | RAL /ONLY PERFORMS THOSE FUNCTIONS THAT "SAVE" NEEDS | |
1387 | SPA CLA | |
1388 | JMP I SGETOUT | |
1389 | CIF 10 | |
1390 | JMS I SYSTEM | |
1391 | 11 | |
1392 | DECIMB, JMP I SGETOUT /DECIMB ONLY CALLED BY NEXT PAGE | |
1393 | /PART OF NEXT PAGE'S ROUTINE: | |
1394 | TAD NM2 /ALL NEW FOR V3D | |
1395 | TAD NM4 /ONLY ALLOW 2 CHARS FOR MM | |
1396 | SNA CLA | |
1397 | ISZ DECIMB | |
1398 | TAD NM1 | |
1399 | RTR | |
1400 | RTR | |
1401 | JMP I DECIMB | |
1402 | PAGE | |
1403 | \f *2600 /DATE PROCESSOR - LOADS IN 400, RUNS IN 600 | |
1404 | DATEXX, JMS DECIM | |
1405 | NUM2, DCA NUM2 | |
1406 | TAD NUM2 | |
1407 | TAD M40 | |
1408 | SMA CLA | |
1409 | JMP BADNUM /DAY > 31 | |
1410 | JMS I GNAME | |
1411 | L30, 30 /NOTHING FOUND WILL GIVE ERROR LATER | |
1412 | / DCA NUM1 /NUM1 IS INITIALLY 0 | |
1413 | NEWLUP, ISZ MONPTR | |
1414 | ISZ NUM1 | |
1415 | TAD I MONPTR | |
1416 | ISZ MONPTR | |
1417 | SMA | |
1418 | JMP BADNUM /SYMBOLIC MONTH NOT FOUND | |
1419 | TAD NM1 | |
1420 | SNA CLA /SKIP IF FIRST 2 LETTERS DON'T MATCH | |
1421 | TAD NM2 | |
1422 | TAD I MONPTR | |
1423 | SZA CLA | |
1424 | JMP NEWLUP /SECOND 2 LETTERS DON'T MATCH | |
1425 | /*** TEST DELIMETER HERE | |
1426 | TAD NUM1 | |
1427 | CLL RTL | |
1428 | RTL | |
1429 | RAL | |
1430 | TAD NUM2 | |
1431 | RTL | |
1432 | RAL | |
1433 | DCA NUM2 | |
1434 | DCA DDELIM /MAKE END-OF-LINE THE DELIMITER | |
1435 | JMS DECIM | |
1436 | TAD (-106 /SCALE DOWN TO RANGE 1970-1999 | |
1437 | SPA | |
1438 | JMP BADNUM /DIDN'T MAKE THE RANGE | |
1439 | DCA NUM1 | |
1440 | TAD NUM1 | |
1441 | AND L30 /ISOLATE EXTENSION DATE BITS | |
1442 | CLL RTL | |
1443 | RTL | |
1444 | DCA TM1 | |
1445 | TAD I (BIPCCL | |
1446 | AND L7177 /STORE THEM INTO BITS RESERVED FOR THIS PURPOSE | |
1447 | TAD TM1 | |
1448 | TSLUP, DCA I (BIPCCL | |
1449 | TAD NUM1 | |
1450 | AND [7 | |
1451 | TAD NUM2 /COMBINE WITH MONTH AND DAY | |
1452 | CDF 10 | |
1453 | DCA I (MDATE /STORE IN SYSTEM DATE CELL | |
1454 | TSF /7605 SETS THE DF | |
1455 | JMS L7177 /TIME OUT A BIT | |
1456 | JMP I [7605 /IN CASE RUNNING UNDER BATCH | |
1457 | L7177, 7177 /JMS IS LONGER THAN JMP | |
1458 | ISZ DDELIM /DDELIM IS 0 AT END | |
1459 | JMS TSLUP /WAIT FOR TELETYPE TO DIE DOWN (RF08) | |
1460 | JMP I [7605 /RETURN TO MONITOR | |
1461 | \fDDELIM, -"- | |
1462 | ||
1463 | /WOULD LIKE TO BRANCH TO CCLSW-1 IF DATE ENDED WITH ALTMODE | |
1464 | ||
1465 | CNV, 0 | |
1466 | AND [77 | |
1467 | SNA | |
1468 | JMP NUL | |
1469 | TAD (-60 | |
1470 | SPA | |
1471 | JMP BADNUM | |
1472 | JMP I CNV | |
1473 | NUL, TAD TM1 | |
1474 | JMP GODE | |
1475 | ||
1476 | DECIM, 0 | |
1477 | JMS I GNAME | |
1478 | M40, -40 /NOTHING THERE (LOGIC WILL CAUSE ERROR LATER) | |
1479 | TAD TMP | |
1480 | TAD DDELIM /COMPARE AGAINST DESIRED DELIMETER | |
1481 | SNA CLA /DASH OR NULL | |
1482 | JMS I (DECIMB-2400+400 | |
1483 | JMP BADNUM /DELIMETER BAD | |
1484 | RTR | |
1485 | JMS CNV | |
1486 | DCA TM1 | |
1487 | TAD TM1 | |
1488 | CLL RTL | |
1489 | TAD TM1 | |
1490 | RAL | |
1491 | DCA TEMP2 | |
1492 | TAD NM1 | |
1493 | JMS CNV | |
1494 | TAD TEMP2 | |
1495 | GODE, SZA | |
1496 | JMP I DECIM | |
1497 | BADNUM, CLA /CRAP IN AC | |
1498 | TAD [7605 | |
1499 | DCA ERRET | |
1500 | JMS I [PRMESG | |
1501 | TEXT /BAD DATE/ | |
1502 | NUM1, 0 /MONTH NUMBER (MUST BE 0 INITIALLY) | |
1503 | \fMONS, -1201 /JAN | |
1504 | -1600 | |
1505 | -0605 /FEB | |
1506 | -0200 | |
1507 | -1501 /MAR | |
1508 | -2200 | |
1509 | -0120 /APR | |
1510 | -2200 | |
1511 | -1501 /MAY | |
1512 | -3100 | |
1513 | -1225 /JUN | |
1514 | -1600 | |
1515 | -1225 /JUL | |
1516 | -1400 | |
1517 | -0125 /AUG | |
1518 | -0700 | |
1519 | -2305 /SEP | |
1520 | -2000 | |
1521 | -1703 /OCT | |
1522 | -2400 | |
1523 | -1617 /NOV | |
1524 | -2600 | |
1525 | -0405 /DEC | |
1526 | -0300 | |
1527 | MONPTR, MONS-2600+600-1 /RELOCATES TO PAGE 600 | |
1528 | /MUST BE POSITIVE | |
1529 | ||
1530 | PAGE | |
1531 | \f *3000 /MONITOR ERROR PROCESSOR - LOADS INTO 11400 | |
1532 | DLYLPX, AND I 0 | |
1533 | D7600, 7600 | |
1534 | TAD MERRNO | |
1535 | CLL RAL | |
1536 | ISZ I (ZERO-1400 | |
1537 | ISZ I (ZERO-1400 /V3C | |
1538 | ISZ I (ZERO-1400 | |
1539 | JMP DLYLPX /WAIT FOR TELEPRINTER (WITHOUT CDF'S) | |
1540 | SNA | |
1541 | JMP USRERR | |
1542 | CLL RAL | |
1543 | RTL | |
1544 | RTL | |
1545 | TAD (6040 | |
1546 | DCA I (MERTYP-1400 | |
1547 | MERCMN, TAD (MERRXR-1400 | |
1548 | JMS EPRINT | |
1549 | TAD I (FPUTX | |
1550 | RTR | |
1551 | RAR | |
1552 | AND (7 | |
1553 | TAD (60 | |
1554 | JMS MERPCH | |
1555 | CLA CLL CMA RAL | |
1556 | TAD I (MONITO | |
1557 | RAL | |
1558 | DCA T1 | |
1559 | TAD (-4 | |
1560 | DCA T2 | |
1561 | MEROLP, TAD T1 | |
1562 | RTL | |
1563 | RAL | |
1564 | DCA T1 | |
1565 | TAD T1 | |
1566 | AND (7 | |
1567 | TAD (60 | |
1568 | JMS MERPCH | |
1569 | ISZ T2 | |
1570 | JMP MEROLP | |
1571 | TAD MERRNO | |
1572 | CLL RAL | |
1573 | SNA | |
1574 | JMP NOEXPL /NO EXPLANATION FOR USER ERRORS | |
1575 | CLL RAR | |
1576 | TAD (EXPLTBL-1401 /PRINT EXPLANATION | |
1577 | DCA T1 /GET ADDRESS INTO MESSAGE TABLE | |
1578 | TAD (240 | |
1579 | JMS MERPCH | |
1580 | TAD ("( | |
1581 | JMS MERPCH | |
1582 | TAD I T1 /GET ADDRESS OF MESSAGE | |
1583 | JMS EPRINT | |
1584 | TAD (") | |
1585 | JMS MERPCH | |
1586 | TAD MERRNO | |
1587 | NOEXPL, TAD (3773 | |
1588 | SPA CLA | |
1589 | CLA CMA | |
1590 | DCA I (7700 | |
1591 | DCA OLDT9 | |
1592 | CLA CLL CML RAR | |
1593 | DCA MERRNO | |
1594 | CDF 0 | |
1595 | TAD I (JSBITS | |
1596 | AND (6777 | |
1597 | TAD (1000 | |
1598 | DCA I (JSBITS /SET THE CURRENT JOB UNSTARTABLE | |
1599 | CDF CIF 0 | |
1600 | JMP I D7600 | |
1601 | USRERR, CLA CLL | |
1602 | JMS I (FGET | |
1603 | TAD (4060 | |
1604 | DCA I (UERTYP-1400 | |
1605 | TAD (UERRXR-MERRXR | |
1606 | JMP MERCMN | |
1607 | MERPCH, 0 | |
1608 | TLS | |
1609 | TSF | |
1610 | JMP .-1 | |
1611 | CLA | |
1612 | JMP I MERPCH | |
1613 | ZERO, 0 | |
1614 | \fEPRINT, 0 | |
1615 | DCA T2 | |
1616 | EPRLUP, TAD I T2 | |
1617 | RTR | |
1618 | RTR | |
1619 | RTR | |
1620 | JMS EPR | |
1621 | TAD I T2 | |
1622 | JMS EPR | |
1623 | ISZ T2 | |
1624 | JMP EPRLUP | |
1625 | ||
1626 | EPR, 0 | |
1627 | AND (77 | |
1628 | SNA | |
1629 | JMP I EPRINT | |
1630 | TAD (240 | |
1631 | AND (77 | |
1632 | TAD (240 | |
1633 | JMS MERPCH | |
1634 | JMP I EPR | |
1635 | PAGE | |
1636 | \f *3200 /LOADS INTO 1600 | |
1637 | ||
1638 | MERRXR, TEXT \MONITOR ERROR 0 AT \ | |
1639 | MERTYP=MERRXR+7 | |
1640 | ||
1641 | UERRXR, TEXT \USER ERROR 0 AT \ | |
1642 | UERTYP=UERRXR+5 | |
1643 | ||
1644 | EXPLTBL,MON1-1400 | |
1645 | MON2-1400 | |
1646 | MON3-1400 | |
1647 | MON4-1400 | |
1648 | MON5-1400 | |
1649 | MON6-1400 | |
1650 | MON7-1400 | |
1651 | ||
1652 | MON1, TEXT \CLOSE ERROR\ | |
1653 | MON2, TEXT \DIRECTORY I/O ERROR\ | |
1654 | \fMON3, TEXT \DEVICE HANDLER NOT IN CORE\ | |
1655 | MON4, TEXT \ILLEGAL USR CALL\ | |
1656 | MON5, TEXT \I/O ERROR ON SYS:\ | |
1657 | MON6, TEXT \DIRECTORY OVERFLOW\ | |
1658 | MON7, TEXT \RESERVED\ | |
1659 | \f /EXECUTION TIME LOADER FOR MONITOR "CHAIN" COMMAND | |
1660 | *3400 /EXECUTES IN FIELD 0 IN PAGE 7400 | |
1661 | MCHNX, DCA MCHREC /STORE STARTING RECORD # | |
1662 | TAD MCHREC | |
1663 | DCA I (SOFSET /V3D SAVE STARTING ADDRESS | |
1664 | CIF 10 | |
1665 | JMS I (200 | |
1666 | 13 /RESET ALL DEVICE ASSIGNMENTS | |
1667 | 0 /BUT DON'T CLEAR OUTPUT FILES | |
1668 | CIF 10 | |
1669 | JMS I (200 | |
1670 | 11 /KICK MONITOR OUT AND RESTORE CORE IF NECESSARY | |
1671 | JMS MCHRD /PARAMETERS PRESET TO READ CONTROL BLOCK INT0 7200 | |
1672 | TAD I (7200 /TEST FOR SAVE FILE! | |
1673 | CMA /TEST FOR VALID CCB | |
1674 | AND (7740 | |
1675 | SZA CLA | |
1676 | JMP CHERR | |
1677 | TAD I (7201 | |
1678 | DCA I (MSTCDF /TRANSFER INFORMATION FROM CONTROL BLOCK | |
1679 | CLA IAC | |
1680 | TAD I (7202 | |
1681 | DCA I (MSTADR /TO PAGE 7600 | |
1682 | TAD I (7203 | |
1683 | TAD (1000 | |
1684 | DCA I (JSBITS | |
1685 | TAD (7204 | |
1686 | DCA MCHT1 | |
1687 | TAD MCHFJM | |
1688 | DCA I (MSWITC | |
1689 | TAD (TCF | |
1690 | DCA I (MSTCDF+1 | |
1691 | MCHN1, ISZ I (7200 | |
1692 | JMP MCHN2 | |
1693 | TAD I MCHT1 | |
1694 | DCA I (MREAD+2 | |
1695 | ISZ MCHT1 | |
1696 | TAD I MCHT1 | |
1697 | DCA I (MREAD+1 | |
1698 | TAD MCHREC | |
1699 | DCA I (MREAD+3 | |
1700 | TAD (SHNDLR | |
1701 | DCA I (MREAD-1 | |
1702 | JMP I (MREAD | |
1703 | MCHN2, TAD I MCHT1 | |
1704 | DCA MCHADR /SET UP COMMAND TO READ NEXT SEGMENT | |
1705 | ISZ MCHT1 | |
1706 | TAD I MCHT1 | |
1707 | DCA MCHCTL | |
1708 | JMS MCHRD /READ IT | |
1709 | ISZ MCHT1 | |
1710 | JMP MCHN1 /LOOP ON NUMBER OF SEGMENTS | |
1711 | \fMCHRD, 0 | |
1712 | JMS I (SHNDLR | |
1713 | MCHCTL, 0101 /1 RECORD INTO FIELD 0 STARTING FORWARDS | |
1714 | MCHADR, 7200 | |
1715 | MCHREC, 0 | |
1716 | JMP CHERR /CHAIN ERROR | |
1717 | TAD MCHCTL | |
1718 | MCHBMP, CLL RTR | |
1719 | RTR | |
1720 | RTR | |
1721 | AND (37 | |
1722 | SNA /V3C | |
1723 | TAD (40 /0 MEANS FULL 4K READ | |
1724 | IAC | |
1725 | CLL RAR | |
1726 | TAD MCHREC | |
1727 | DCA MCHREC | |
1728 | JMP I MCHRD | |
1729 | MCHT1, 0 | |
1730 | MCHFJM, MSTCDF&177+5200 /"JMP MSTCDF" | |
1731 | ||
1732 | CHERR, ISZ CHERR1 | |
1733 | JMP CHERR /LET TTY DIE DOWN | |
1734 | ISZ CHERR2 | |
1735 | JMP CHERR | |
1736 | CHTADC, TAD CHARS | |
1737 | SNA | |
1738 | JMP I (7600 /DONE..BACK TO MONITOR | |
1739 | TLS | |
1740 | TSF | |
1741 | JMP .-1 | |
1742 | CLA | |
1743 | ISZ CHTADC /NEXT LETTER | |
1744 | JMP CHTADC | |
1745 | \fCHERR1, 0 | |
1746 | CHERR2, -6 | |
1747 | CHARS, "C;"H;"A;"I;"N;" ;"E;"R;"R;215;212;0 | |
1748 | PAGE | |
1749 | \f *4000 /SYSTEM GENERATOR - WRITES STUFF OUT USING SHNDLR | |
1750 | WRITE=JMS I SYSHND | |
1751 | JMS SYSSWP /SWAP SYSTEM DEVICE HANDLER INTO 7600 | |
1752 | ||
1753 | WRITE; 4200; 7400; 0; JMP BERR /BOOTSTRAP | |
1754 | TAD RBFLAG | |
1755 | SZA CLA | |
1756 | JMP .+6 | |
1757 | WRITE; 4210; DCOUNT; 01; JMP BERR /DIRECTORY | |
1758 | WRITE; 5001; 0000; 07; JMP BERR /KEYBOARD MONITOR | |
1759 | WRITE; 4610; 0000; MONTOR; JMP BERR /USR | |
1760 | WRITE; 4111; 3400; MEOVLY; JMP BERR /"ENTER" OVERLAY | |
1761 | WRITE; 4701; 2000; MSOVLY; JMP BERR /SAVE OVERLAY, | |
1762 | /ERROR ROUTINE AND "CHAIN" | |
1763 | TAD RBFLAG | |
1764 | SZA CLA | |
1765 | JMP .+13 | |
1766 | WRITE; 4101; LDRCTL; MFREE; JMP BERR /ABSLDR CONTROL BLOCK | |
1767 | WRITE; 5010; 2000;MFREE+1; JMP BERR /ABSLDR | |
1768 | JMS I (4200 /OUTPUT THE DEVICE HANDLERS | |
1769 | JMP BERR | |
1770 | JMS SYSSWP /SWAP BACK PAGE 7600 | |
1771 | CLA CMA | |
1772 | HLT | |
1773 | CLA | |
1774 | JMP I .+1 | |
1775 | BERR, 7600 | |
1776 | JMS SYSSWP | |
1777 | HLT | |
1778 | JMP .-1 | |
1779 | W6600, 6600 | |
1780 | W7600, 7600 | |
1781 | SYSSWP, 0 | |
1782 | TAD W6600 | |
1783 | DCA SYTM1 | |
1784 | TAD W7600 | |
1785 | DCA SYTM2 | |
1786 | SWAPLP, TAD I SYTM1 | |
1787 | DCA TMSY | |
1788 | TAD I SYTM2 | |
1789 | DCA I SYTM1 | |
1790 | TAD TMSY | |
1791 | DCA I SYTM2 | |
1792 | ISZ SYTM1 | |
1793 | ISZ SYTM2 | |
1794 | JMP SWAPLP | |
1795 | JMP I SYSSWP | |
1796 | ||
1797 | /CONTROL BLOCK FOR ABSOLUTE LOADER | |
1798 | LDRCTL, 7777 /ONE CONTIGUOUS LOAD | |
1799 | 6213 /STARTING ADDRESS IN FIELD 1 | |
1800 | 2000 /STARTING LOCATION=12000 | |
1801 | 6003 /DOES NOT LOAD OVER EITHER MONITOR AREA | |
1802 | /ALSO DOES NOT USE THESE AREAS AT COMMAND TIME - TRUE | |
1803 | /ONLY FOR FIRST CALL TO COMMAND DECODER | |
1804 | 2000 /FIRST(AND ONLY) SEGMENT STARTS AT 2000 | |
1805 | 1010 /IN FIELD 1 AND IS 10 PAGES LONG | |
1806 | ||
1807 | IFNZRO LDRCTL-4113 <BLDER,XQX> | |
1808 | ||
1809 | SYTM1, 0 | |
1810 | SYTM2, 0 | |
1811 | TMSY, 0 | |
1812 | SYSHND, 7607 | |
1813 | PAGE | |
1814 | \f *7400 | |
1815 | NOPUNCH | |
1816 | *7600 | |
1817 | ENPUNCH | |
1818 | /UPPER PAGE OF FIELD 1 - CHOCK FULL OF GOODIES | |
1819 | /LIKE THOUSANDS OF TABLES AND THE MONITOR CALL LOCATION | |
1820 | ||
1821 | MOFILE, ZBLOCK 17 /OUTPUT FILE TABLE - 7600-7616 (3 ENTRIES MAX) | |
1822 | /5 WORDS PER ENTRY - DEVICE # AND FILE NAME | |
1823 | MIFILE, ZBLOCK 24 /INPUT FILE TABLE - 7617-7642 (10 ENTRIES MAX) | |
1824 | /2 WORDS PER ENTRY - DEVICE # AND RECORD # | |
1825 | ||
1826 | /LAST WORD IN TABLE CONTAINS TERMINATION INDICATOR | |
1827 | /(0 FOR CR, 1 FOR ALTMODE) AND HIGH ORDER | |
1828 | /PART OF NUMERICAL ARGUMENT | |
1829 | ||
1830 | MPARAM, ZBLOCK 4 /PARAMETER TABLE - 7643-7646 | |
1831 | /FIRST 3 WORDS - MASK OF SWITCHES(A-Z,0-9). | |
1832 | /FOURTH WORD - CONTAINS THE LOW ORDER BITS OF | |
1833 | /THE NUMERICAL ARGUMENT | |
1834 | ||
1835 | ||
1836 | ||
1837 | /TABLE OF DEVICE HANDLERS PRESENTLY IN CORE | |
1838 | DVHNDL, 7607;7607;0;0;0;0;0 | |
1839 | 0;0;0;0;0;0;0;0 | |
1840 | MDATE, 0 /HOLDS THE CURRENT DATE- 4 BIT MONTH, | |
1841 | /5 BIT DAY, 3 BIT YEAR FROM 1970 | |
1842 | MGET, CIF 0 | |
1843 | JMS SHNDLR /INST FIELD IS 0 | |
1844 | 1000 /READ 4 RECORDS INTO FIELD 0 | |
1845 | 0 /LOCATIONS 0-1777 | |
1846 | 7 /KEYBOARD MONITOR FOLLOWS DIRECTORY | |
1847 | PJSBTS, JSBITS /SERVES AS A HALT (WATCH IT!) | |
1848 | SCDCIF, CDF CIF 0 | |
1849 | JMP I .+1 | |
1850 | KMNTRY /V3D GETS CHANGED TO INIT | |
1851 | \fMCALL1, 0 | |
1852 | DCA MARG1 /SAVE AC AS IT MAY CONTAIN AN ARGUMENT | |
1853 | RDF /GET CALLING FIELD | |
1854 | TAD SCDCIF | |
1855 | DCA SMCIF | |
1856 | CDF 0 | |
1857 | TAD I PJSBTS | |
1858 | RAR | |
1859 | CDF 10 | |
1860 | SZL CLA /DOES JOB USE LOCS 10000-11777? | |
1861 | JMP MONRD /NO - DONT SAVE THEM | |
1862 | CIF 0 | |
1863 | JMS SHNDLR | |
1864 | 5010 | |
1865 | 0 | |
1866 | MTEMP | |
1867 | HLT | |
1868 | MONRD, CIF 0 | |
1869 | JMS SHNDLR | |
1870 | 610 | |
1871 | 0 | |
1872 | MONTOR | |
1873 | SCOPE, HLT /BIT 4 IS A 1 IF CONSOLE IS A SCOPE | |
1874 | JMP MSTART /START THE MONITOR UP IN PAGE 0 | |
1875 | MRETRN, CIF 0 | |
1876 | JMS SHNDLR | |
1877 | 1010 /READ 10 RECS INTO FIELD 1 | |
1878 | 0 | |
1879 | MTEMP /TEMP REGION ON SYS | |
1880 | HLT /SYS HAS PROBLEMS | |
1881 | SMCIF, 0 | |
1882 | JMP I MCALL1 | |
1883 | \fMARG1, 0 | |
1884 | /TABLE OF USER DEVICE NAMES | |
1885 | /ALSO USED BY SYSTEM ODT | |
1886 | ||
1887 | UDNAME, 0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 | |
1888 | \fDCB, ZBLOCK 17 /DEVICE CONTROL BLOCK - SET IN "CONFIG" | |
1889 | ||
1890 | ||
1891 | ||
1892 | ||
1893 | ||
1894 | ||
1895 | ||
1896 | ||
1897 | ||
1898 | /******************************************************** | |
1899 | / MAP OF SYSTEM DEVICE AS OF 2/21/73 | |
1900 | /******************************************************** | |
1901 | / * 256 WORD RECORDS * | |
1902 | /******************************************************** | |
1903 | ||
1904 | / RECORDS CONTENTS | |
1905 | / ------- -------- | |
1906 | ||
1907 | / 0 MONITOR BOOTSTRAP | |
1908 | / 1- 6 SYSTEM DIRECTORIES | |
1909 | / 7-12 KEYBOARD MONITOR | |
1910 | / 13-15 I/O MONITOR(CALLABLE MONITOR) | |
1911 | / 16-25 DEVICE HANDLER RECORDS | |
1912 | / 26 MONITOR "ENTER" OVERLAY | |
1913 | / 27-50 MONITOR SCRATCH AREA FOR SAVING CORE | |
1914 | / 51-53 COMMAND DECODER | |
1915 | / 54-55 "SAVE WITH ARGUMENTS" AND "DATE" OVERLAYS | |
1916 | / 56 MONITOR ERROR ROUTINE | |
1917 | / 57 "CHAIN" PROCESSOR | |
1918 | / 60-63 SYSTEM ODT | |
1919 | / 64 RESERVED FOR EXPANSION | |
1920 | /65 CCL REMINISCENSES | |
1921 | / 66 USED BY TWO-PAGE SYS HANDLER | |
1922 | / 67 USED BY CCL (CCL OVERLAY) | |
1923 | / 70-END FILE STORAGE | |
1924 | \f SHNDLR=7607 /ENTRY POINT TO SYSTEMS HANDLER | |
1925 | ||
1926 | *6600 | |
1927 | NOPUNCH | |
1928 | *7600 | |
1929 | ENPUNCH | |
1930 | ||
1931 | /SYSTEM HANDLER AND FIELD 0 UPPER PAGE | |
1932 | /INCLUDES BOOTSTRAP AND PART OF MONITOR CALL ROUTINE | |
1933 | DVHORG=16 /DEVICE HANDLER RECORDS | |
1934 | MTEMP=27 | |
1935 | MONTOR=13 | |
1936 | JMS SHNDLR | |
1937 | 5000 /SAVE MONITOR CORE - WRITE 5 RECORDS FROM FIELD 0 | |
1938 | 0 /(LOCATIONS 0-1777) | |
1939 | MTEMP+4 | |
1940 | 7602 /TROUBLE WITH SYSTEM DEVICE | |
1941 | CDF CIF 10 | |
1942 | JMP MGET /NOW GO READ IN THE KEYBOARD MONITOR | |
1943 | \f *6744 /INFORMATION ABOUT CURRENT JOB | |
1944 | NOPUNCH | |
1945 | *7744 | |
1946 | ENPUNCH | |
1947 | JFIELD, 6203 /A CDF CIF N INSTRUCTION TO START THE JOB | |
1948 | JSTART, 7600 /THE STARTING ADDRESS | |
1949 | JSBITS, 1000 /VARIOUS STATUS BITS - USED FOR OPTIMIZATION | |
1950 | /BIT 4000 - JOB DID NOT LOAD INTO 00000-01777 | |
1951 | /BIT 2000 - JOB DID NOT LOAD INTO 10000-11777 | |
1952 | /BIT 1000 - JOB IS NOT RESTARTABLE | |
1953 | /BIT 400 - DOESN'T DESTROY BATCH MONITOR | |
1954 | /BIT 2 - JOB DOES NOT USE LOCS 00000-01777 | |
1955 | /BIT 1 - JOB DOES NOT USE LOCS 10000-11777 | |
1956 | SOFSET, 0 /FOR FUTURE(AND MAYBE PRESENT) USE | |
1957 | ||
1958 | /DATA BREAK FILLERS FOR SYSTEM BOOTSTRAP | |
1959 | 7750 | |
1960 | 7751 | |
1961 | 7752 | |
1962 | 7753 | |
1963 | 7754 | |
1964 | 7755 | |
1965 | /MONITOR PATCH TO HELP BLEEP LOADER | |
1966 | 0 /ADDRESS OF HANDLER FOR DEVICE USED | |
1967 | MREAD, JMS I .-1 | |
1968 | 0 | |
1969 | 0 | |
1970 | 0 | |
1971 | HLT | |
1972 | MSWITC, JMP .+6 /ZEROED IF PG 7000 (HANDLER) MUST BE READ OVER | |
1973 | JMS SHNDLR | |
1974 | 0300 | |
1975 | 7000 /THIS AREA MODIFIED BY ODT | |
1976 | MTEMP+6 | |
1977 | OS78, HLT /BIT 4 IS A 1 IF OS/78 IS RUNNING | |
1978 | MSTCDF, CDF CIF 0 | |
1979 | TCF /EXIT WITH A CLEAR CONSCIENCE(ALSO A CLEAR FLAG) | |
1980 | JMP I .+1 | |
1981 | MSTADR, 0 | |
1982 | SBLOCK, 0 | |
1983 | BIPCCL, 0 /MORE STATUS BITS. | |
1984 | /BIT 1: 1=> BATCH IS IN PROGRESS | |
1985 | /BITS 6-8: FIELD OF BATCH MONITOR | |
1986 | /HIGHEST CORE FIELD USED BY OS/8 | |
1987 | /OR 0 TO MEAN OS/8 MAY USE ALL OF CORE | |
1988 | \f *0 | |
1989 | VERSNO /OS/8 VERSION 3 | |
1990 | KMONER, CLA | |
1991 | TAD [7605 | |
1992 | DCA ERRET | |
1993 | JMS I [PRMESG | |
1994 | TEXT /SYSTEM ERR/ | |
1995 | ||
1996 | /THE FOLLOWING REGISTERS ARE SET TO VITAL INITIAL VALUES. TO ALTER | |
1997 | /THESE VALUES IS TO BRING DISASTER DOWN UPON YOUR HEAD! | |
1998 | ||
1999 | LXR, PMSRST-1 | |
2000 | X1, MSWITC /THESE TWO ARE USED AT INITIALIZATION. | |
2001 | ADR1, RUN8-1 | |
2002 | ADR2, RUN8&177+7377 /USED DURING R, AND RUN COMMANDS | |
2003 | XR, | |
2004 | AMFLAG, 0 /1 MEANS SAW ALTMODE | |
2005 | /MUST NOT MOVE FOR CCL AND BATCH | |
2006 | ||
2007 | *20 | |
2008 | RBFLAG, 0 /MUST BE AT LOCATION 20 | |
2009 | TEMP2, -7 | |
2010 | SYSTEM, 7700 | |
2011 | PCH, PRINT | |
2012 | GLINE, XGLINE | |
2013 | GNAME, GETNAM | |
2014 | DEVHND, 7607 | |
2015 | FUDJMP, MSTCDF&177+5200 | |
2016 | P6203, 6203 | |
2017 | TMP, PATCHLEV /MONITOR PATCH LEVEL MUST BE AT LOC 31 FOR CCL | |
2018 | PGTOUT, GETOUT | |
2019 | ERRET, PCRLF /MUST BE AT 33 FOR CCL | |
2020 | ||
2021 | /THE FOLLOWING LOCS. ARE TEMPORARIES. HOWEVER, THERE IS NOW | |
2022 | /VITAL ONCE ONLY CODE TO HELP THE BATCH PROCESSOR. THIS CODE IS | |
2023 | /READ IN EVERY TIME THE KEYBOARD MONITOR IS RE-READ. | |
2024 | ||
2025 | NM1, 203 /THIS MUST BE A 203! | |
2026 | BATCH, /ENTRY TO READ NEW BATCH MONITOR | |
2027 | NM2, JMS I [7607 /THE BATCH INITIALIZER ALTERS SOME VALUES | |
2028 | NM3, 610 /IN THIS LIST...THIS ONE********** | |
2029 | NM4, 0 /THIS ONE*****GETS ADDRESS OF BOS. | |
2030 | TEMP1, 13 /******GETS RECORD OF BOS***** | |
2031 | TM1, SKP CLA /ERROR. DON'T RUN BATCH | |
2032 | TMP1, JMP BCHGO | |
2033 | NMCT, DCA I KM1 /CLEAR BATCH FLAG. | |
2034 | PN, JMP KMONER | |
2035 | PRDSW, | |
2036 | KM1, 7777 | |
2037 | BCHGO, | |
2038 | RUNSW, CIF CDF 0 | |
2039 | DIGFLG, JMP I .+1 | |
2040 | SENTER, KMINIT /GETS ENTRY POINT (BOS) | |
2041 | KRCHK, RCHK | |
2042 | \f FIELD 1 | |
2043 | \f /FIELD 1 | |
2044 | /OS/8 MONITOR - MONITOR ROUTINES | |
2045 | /THIS MONITOR IS CALLED INTO CORE BY A JMS 7700 IN FIELD 1 | |
2046 | /IT REPLACES CORE FROM 200-1777 | |
2047 | /AND INTERPRETS THE WORDS AFTER THE JMS AS A MONITOR FUNCTION | |
2048 | /MONITOR FUNCTIONS ARE ASSIGN,LOOKUP,ENTER,ETC. | |
2049 | MAXCMD=13 | |
2050 | *200 | |
2051 | MONITO, 0 /MONITOR SUBROUTINE | |
2052 | DCA MACARG /STORE AC ARG | |
2053 | DCA USERFG /SET FLAG TO INDICATE WE WERE CALLED DIRECTLY | |
2054 | RDF /GET CALLING FIELD | |
2055 | TAD [CDF CIF 0 | |
2056 | DCA FGETX | |
2057 | MRENTR, TAD FGETX | |
2058 | DCA FPUTX /FOR LOADING AND STORING CALLING SEQUENCE | |
2059 | JMS FGET /GET FIRST ARGUMENT[AND SET DATA FIELD 1) | |
2060 | ISZ MONITO | |
2061 | CLL | |
2062 | TAD [-MAXCMD-1 | |
2063 | SZL | |
2064 | JMP MERROR | |
2065 | TAD JMPMAX | |
2066 | DCA .+1 /BRANCH TO APPROPRIATE ROUTINE WITH LINK ON | |
2067 | FGET, 0 /MUST PRESERVE LINK | |
2068 | TAD MONITO | |
2069 | JMS FGETW | |
2070 | JMP I FGET | |
2071 | /MONITOR COMMAND DISPATCH TABLE MUST BE JAMMED BEFORE 'FPUT' | |
2072 | MERROR | |
2073 | MASSIGN | |
2074 | MLOOKUP | |
2075 | MENTER | |
2076 | MCLOSE | |
2077 | MCD | |
2078 | MCHAIN | |
2079 | MERR | |
2080 | MESCAP | |
2081 | MESCPR | |
2082 | MASGN | |
2083 | MRSETP, MRESET | |
2084 | FPUT, 0 /MUST FOLLOW LAST ADDRESS IN JUMP TABLE | |
2085 | FPUTX, 0 | |
2086 | DCA I MONITO | |
2087 | CDF CIF 10 | |
2088 | JMPMAX, JMP I FPUT | |
2089 | MEOERR, ISZ MERRNO | |
2090 | MIOERR, ISZ MERRNO | |
2091 | MERROR, ISZ MERRNO | |
2092 | ISZ MERRNO | |
2093 | ISZ MERRNO | |
2094 | ISZ MERRNO | |
2095 | MERR, CLA | |
2096 | CIF 0 | |
2097 | JMS I [SHNDLR | |
2098 | 0210 | |
2099 | 1400 | |
2100 | MERRTN | |
2101 | HLT | |
2102 | JMP I .-3 | |
2103 | \fMCD, CLA CLL CML RAR | |
2104 | JMS CDSWAP /SWAP OUT CORE IF NECESSARY | |
2105 | JMS FGET | |
2106 | DCA T1 | |
2107 | CIF 0 | |
2108 | JMS I [SHNDLR | |
2109 | 0601 | |
2110 | 0 | |
2111 | MCDREC | |
2112 | JMP MIOERR | |
2113 | TAD FPUTX | |
2114 | CDF CIF 0 | |
2115 | JMS I [200 | |
2116 | DCA FPUTX | |
2117 | TAD FPUTX | |
2118 | DCA FGETX | |
2119 | JMS CDSWAP /RESTORE THE SWAPPED CORE IF NECESSARY | |
2120 | STL /LINK MUST BE ON AT MRESET | |
2121 | JMP I MRSETP /AFTER CD, RESET DEVICE AREA | |
2122 | MCHAIN, JMS FGET | |
2123 | DCA T1 /BUFFER THE ARGUMENT | |
2124 | CIF 0 | |
2125 | JMS I [SHNDLR | |
2126 | 0101 | |
2127 | 7400 | |
2128 | MRUNRC | |
2129 | JMP MIOERR | |
2130 | TAD T1 /LOAD THE BUFFERED ARGUMENT | |
2131 | CDF CIF 0 | |
2132 | JMP I .-5 | |
2133 | MLNOTF, CLA | |
2134 | ISZ MONITO | |
2135 | MNEXT, TAD USERFG | |
2136 | MESCAP, CLL RAR | |
2137 | TAD MONITO | |
2138 | DCA I [7700 | |
2139 | TAD FPUTX | |
2140 | DCA I [SMCIF | |
2141 | CLA IAC CML | |
2142 | CDF 0 | |
2143 | AND I [JSBITS | |
2144 | CDF 10 | |
2145 | RAR | |
2146 | SZL SPA CLA /RESTORE CORE IF USERFG=1 AND JSW[11]=0 | |
2147 | JMP I [SMCIF | |
2148 | JMP I [MRETRN | |
2149 | MESCPR, CLL CML | |
2150 | JMP MESCAP+1 | |
2151 | FGETW, 0 | |
2152 | DCA FPUT | |
2153 | FGETX, HLT | |
2154 | TAD I FPUT | |
2155 | CDF CIF 10 | |
2156 | JMP I FGETW | |
2157 | \fCDSWAP, 0 | |
2158 | TAD ME1000 /FORM READ OR WRITE OPERATION | |
2159 | DCA MCDCTL | |
2160 | CDF 0 | |
2161 | TAD I [JSBITS | |
2162 | CDF 10 | |
2163 | RTR | |
2164 | SZL CLA /IS IT NECESSARY TO SAVE CORE? | |
2165 | JMP I CDSWAP /NO | |
2166 | CIF 0 | |
2167 | JMS I [SHNDLR | |
2168 | MCDCTL, 0 | |
2169 | 0 | |
2170 | MTEMP+4 | |
2171 | JMP MIOERR | |
2172 | JMP I CDSWAP | |
2173 | ||
2174 | EOVFLO, CIF 0 | |
2175 | JMS I [SHNDLR | |
2176 | 0111 | |
2177 | ME1000, 1000 /ENTER OVERLAY LOADS OVER ENTER (NATCH) | |
2178 | MEOVLY | |
2179 | JMP MIOERR | |
2180 | JMP I ME1000 | |
2181 | \f *400 | |
2182 | /ASSIGN PROCESSOR - TRANSLATE DEVICE NAME INTO DEVICE NUMBER | |
2183 | /(IF NECESSARY),GET DEVICE HANDLER INTO CORE(IF NECESSARY) | |
2184 | /AND ADJUST TABLES(IF NECESSARY). IS THIS REALLY NECESSARY? | |
2185 | MASGN, CLA IAC | |
2186 | MASSIGN, DCA ASFLAG | |
2187 | TAD MACARG | |
2188 | SZA /IS DEVICE NUMERIC OR SYMBOLIC? | |
2189 | JMP DFOUND /NUMERIC | |
2190 | JMS I [FGET /GET HIGH ORDER 2 CHARS OF NAME | |
2191 | ISZ I [MONITO | |
2192 | SNA | |
2193 | JMP I [MRTRN+1 /FIRST WORD OF NAME MUST BE NON-ZERO | |
2194 | DCA NAME | |
2195 | JMS I [FGET | |
2196 | SNA /IS NAME >2 CHARACTERS LONG? | |
2197 | JMP NOHASH /NO - DON'T HASH | |
2198 | TAD NAME | |
2199 | RAL | |
2200 | CLL CML RAR /FORCE SIGN BIT OF HASH NAME ON | |
2201 | DCA NAME | |
2202 | NOHASH, TAD [UDNAME-1 /SEARCH USER NAME TABLE FIRST | |
2203 | DSRCH, DCA XR | |
2204 | TAD [-17 | |
2205 | DCA T2 | |
2206 | DSRCLP, TAD I XR | |
2207 | CIA | |
2208 | TAD NAME | |
2209 | SNA CLA | |
2210 | JMP DSFND | |
2211 | ISZ T2 | |
2212 | JMP DSRCLP | |
2213 | TAD XR | |
2214 | SMA CLA /WHICH TABLE DID WE JUST SEARCH? | |
2215 | JMP I [MRTRN+1 /SYSTEM TABLE - ERROR | |
2216 | TAD [SDNAME-1 | |
2217 | JMP DSRCH /GO SEARCH SYSTEM TABLE | |
2218 | DSFND, TAD T2 | |
2219 | TAD [20 | |
2220 | JMS I [FPUT /PUT NUMBER INTO CALLING SEQUENCE | |
2221 | JMS I [FGET /GET IT BACK IN AC, BUMPING POINTER | |
2222 | ISZ I [MONITO | |
2223 | DFOUND, JMS I [MCKDEV /DETERMINE ITS VALIDITY (NON-ZERONESS) | |
2224 | /AND FORM POINTERS | |
2225 | SNA /IS THE DEVICE HANDLER IN CORE? | |
2226 | TAD I T2 | |
2227 | SNA /DOES A HANDLER EXIST FOR THE DEVICE? | |
2228 | JMP I [MLNOTF /NO - SAME AS THE DEVICE NOT EXISTING | |
2229 | CMA RAL /GET THE COMPLEMENT OF THE HIGH ORDER BIT INTO THE LINK | |
2230 | SNL CLA /TWO PAGE HANDLER?(IF HANDLER IS IN CORE, | |
2231 | /THIS TEST IS RANDOM BUT WE DON'T CARE) | |
2232 | TAD [100 /YES - FORCE A TWO-PAGE READ | |
2233 | TAD [100 | |
2234 | DCA DVHCTL | |
2235 | TAD T1 | |
2236 | DCA T7 /SAVE T1 AS WE WILL DESTROY IT LATER | |
2237 | TAD I T1 | |
2238 | TAD ASFLAG | |
2239 | SZA CLA /DOES HE ACTUALLY WANT US TO LOAD THE SILLY THING? | |
2240 | JMP AFINIS /NO - HE MUST HAVE TASTE. | |
2241 | JMS I [FGET /FETCH PAGE IN WHICH HANDLER IS TO BE LOADED | |
2242 | RAR /GET THE LINK, WHICH HAS BEEN UNTOUCHED SINCE WE | |
2243 | /PUT THE "TWO PAGE HANDLER" FLAG INTO IT | |
2244 | SNL SMA /IF THIS HANDLER IS TWO-PAGE, IS HE ALLOWING IT TO BE? | |
2245 | JMP I [MLNOTF /NO - GIVE AN ERROR RETURN | |
2246 | RAL /YES - ROTATE BACK | |
2247 | AND [7600 /MAKE IT LEGAL | |
2248 | DCA DVHLOC | |
2249 | JMS GETREC | |
2250 | DCA DVHREC | |
2251 | CIF 0 | |
2252 | JMS I [SHNDLR | |
2253 | DVHCTL, 0 /READ ONE OR TWO PAGES INTO FIELD 0 | |
2254 | DVHLOC, 0 | |
2255 | DVHREC, 0 | |
2256 | JMP I [MIOERR /SYSTEM DEVICE ERROR | |
2257 | /NOW GO THROUGH THE TABLE OF AVAILABE HANDLERS | |
2258 | TAD [-17 /AND MARK OFF THOSE WHICH ARE NOW IN CORE | |
2259 | DCA T4 | |
2260 | DVHCLP, TAD T4 | |
2261 | JMS I [MCKDEV /LOW ORDER BITS OF T4 GO THROUGH 1-17 | |
2262 | CMA | |
2263 | TAD DVHLOC | |
2264 | CLL CML RAR | |
2265 | TAD DVHCTL /IF A HANDLER ENTRY POINT IS WITHIN 200 WORDS OF THE | |
2266 | SMA CLA /LOADING ADDRESS (400 FOR A TWO-PAGE HANDLER) | |
2267 | DCA I T1 /MARK IT AS WIPED | |
2268 | JMS GETREC | |
2269 | CIA | |
2270 | TAD DVHREC | |
2271 | SZA CLA | |
2272 | JMP NOTINC | |
2273 | TAD I T2 | |
2274 | AND [177 | |
2275 | TAD DVHLOC | |
2276 | DCA I T1 | |
2277 | NOTINC, ISZ T4 | |
2278 | JMP DVHCLP | |
2279 | AFINIS, TAD I T7 | |
2280 | JMP I [MRTRN /STORE HANDLER ADDRESS AND EXIT | |
2281 | \fGETREC, 0 | |
2282 | TAD I T2 /GET RECORD OF DEVICE HANDLER | |
2283 | CLL RTL | |
2284 | RTL | |
2285 | RTL /EXTRACT THE RECORD NUMBER | |
2286 | AND [17 | |
2287 | TAD [DVHORG-1 /ADD THE BASE OF DEVICE HANDLER STORAGE | |
2288 | JMP I GETREC | |
2289 | ||
2290 | MCKDEV, 0 /MUST PRESERVE LINK | |
2291 | AND [17 | |
2292 | SNA | |
2293 | JMP I [MERROR /DEVICE 0 IS ILLEGAL | |
2294 | DCA NAME | |
2295 | TAD NAME | |
2296 | TAD [SDVHND-1 /FORM POINTER INTO HANDLER IMAGE TABLE | |
2297 | DCA T2 | |
2298 | TAD NAME | |
2299 | TAD [DVHNDL-1 | |
2300 | DCA T1 | |
2301 | TAD NAME | |
2302 | TAD [DCB-1 | |
2303 | DCA T8 /FORM POINTER TO DCB ENTRY FOR DEVICE | |
2304 | TAD I T1 | |
2305 | JMP I MCKDEV | |
2306 | ||
2307 | IFNZRO .-564 <REASSEMBLE CONFIG> | |
2308 | SDNAME, ZBLOCK 17 /SYSTEM DNAME TABLE - SET UP BY "CONFIG" | |
2309 | \f IFZERO .+200&1000 <*600> | |
2310 | /LOOKUP PROCESSOR - GETS THE STARTING BLOCK OF AN INPUT FILE | |
2311 | /ON A SPECIFIED DEVICE.SKIPS IF FILE WAS FOUND OR DEVICE | |
2312 | /IS NOT FILE ORIENTED | |
2313 | MLOOKUP,CLL /SET RDCAT MODE TO INPUT | |
2314 | JMS MRDCAT | |
2315 | JMP ERETRN /NON-FILE STRUCTURED DEVICE | |
2316 | JMS MDSRCH /SEARCH THE DIRECTORY FOR THE FILE | |
2317 | JMP MRTRN+1 /NOT FOUND - TAKE ERROR RETURN | |
2318 | LRETRN, TAD T5 | |
2319 | CIA | |
2320 | TAD I [DORG /CONVERT T5 TO A RECORD NUMBER | |
2321 | ERETRN, JMS I [FPUT | |
2322 | ISZ I [MONITO | |
2323 | TAD T6 | |
2324 | CIA /STORE FILE LENGTH AS A NEGATIVE NUMBER | |
2325 | MRTRN, JMS I [FPUT /THIS CODE IS JUMPED TO BY SEVERAL ROUTINES | |
2326 | MRTRN2, ISZ I [MONITO | |
2327 | JMP I [MLNOTF | |
2328 | ||
2329 | MRDCAT, 0 | |
2330 | SZA | |
2331 | JMP MRDREN /NOT THE FIRST SEGMENT - DON'T SET UP POINTERS | |
2332 | DCA T5 /ZERO STARTING BLOCK NUMBER | |
2333 | DCA T6 /ZERO FILE LENGTH | |
2334 | TAD MACARG /GET DEVICE NUMBER FROM AC | |
2335 | JMS I [MCKDEV /CHECK LEGALITY AND FORM POINTERS | |
2336 | SNA | |
2337 | JMP I [MERROR+1 /DEVICE HANDLER IS NOT IN CORE - ERROR | |
2338 | DCA T9 /ADDRESS OF DEVICE HANDLER | |
2339 | JMS I [FGET | |
2340 | DCA T4 /STORE THE POINTER TO THE FILE NAME IN T4 | |
2341 | SNL | |
2342 | CML RAR | |
2343 | RTR /FORM A MASK OF 2000 OR 1000 DEPENDING ON LINK | |
2344 | AND I T8 | |
2345 | SZA CLA /TEST FOR READ-ONLY(L=1) OR WRITE-ONLY(L=0) | |
2346 | JMP MRTRN+1 /FAILED THE TEST - ERROR RETURN | |
2347 | TAD I T8 | |
2348 | SMA CLA | |
2349 | JMP I MRDCAT /DEVICE IS NOT FILE-ORIENTED | |
2350 | ISZ MRDCAT | |
2351 | CLA IAC | |
2352 | MRDREN, DCA MCATRC /STORE SEGMENT NUMBER | |
2353 | TAD T9 /USE LOW ORDER BITS | |
2354 | AND [177 /OF DEVICE HANDLER ENTRY POINT | |
2355 | CLL RTL /AND THE REQUESTED SEGMENT NUMBER | |
2356 | RAL /TO FORM A "UNIQUE" KEY | |
2357 | TAD MCATRC /FOR THIS SEGMENT OF THIS DIRECTORY | |
2358 | /(THE UNIQUENESS DEPENDS ON EACH HANDLER HAVING A DIFFERENT | |
2359 | /STARTING OFFSET IN ITS PAGE) | |
2360 | CIA | |
2361 | TAD OLDT9 /COMPARE KEY AGAINST KEY OF CURRENT SEGMENT | |
2362 | SNA /ARE THEY THE SAME? | |
2363 | JMP INLRDY /YES - DON'T READ SEGMENT, ITS IN CORE | |
2364 | CIA | |
2365 | TAD OLDT9 | |
2366 | DCA OLDT9 /STORE THE KEY OF THE NEW IN-CORE SEGMENT | |
2367 | CLA CLL CML RAR /CHANGE WRITE TO READ | |
2368 | JMS MWRCAT | |
2369 | INLRDY, TAD I [DCOUNT | |
2370 | CML CMA RAL | |
2371 | SZL SPA | |
2372 | JMP JMPME2 | |
2373 | CMA CML RAR /NEW V3 DIRECTORY VERIFYER | |
2374 | DCA NFILES /FIRST WORD IN CATALOG = -# OF FILES IN CATALOG | |
2375 | TAD [DPROPR-1 | |
2376 | DCA XR /SET XR TO POINT TO FIRST FILE ENTRY | |
2377 | JMP I MRDCAT /RETURN TO BUMPED ADDRESS | |
2378 | MDSRCH, 0 | |
2379 | FSRCLP, TAD I XR | |
2380 | SNA CLA /EMPTY SPACES HAVE A ONE WORD ZERO DIRECTORY ENTRY | |
2381 | JMP SKPMTF /SO SKIP THE 4 WORD COMPARE ON THEM | |
2382 | CLA CMA | |
2383 | TAD XR | |
2384 | DCA XR | |
2385 | TAD [-4 | |
2386 | DCA T6 | |
2387 | TAD T4 | |
2388 | DCA T7 | |
2389 | SRCWDL, TAD T7 | |
2390 | JMS I [FGETW | |
2391 | CIA | |
2392 | TAD I XR | |
2393 | SZA CLA /COMPARE ENTRY AGAINST ARGUMENT(8 CHARACTERS) | |
2394 | JMP NXTFIL | |
2395 | ISZ T7 | |
2396 | ISZ T6 | |
2397 | JMP SRCWDL | |
2398 | JMS BUMPXR /SKIP GARBAGE WORDS | |
2399 | TAD I XR | |
2400 | SNA | |
2401 | JMP SKPMTF+1 /UNCLOSED OUTPUT FILES DONT COUNT | |
2402 | CIA | |
2403 | DCA T6 /STORE FILE LENGTH | |
2404 | ISZ MDSRCH | |
2405 | JMP I MDSRCH | |
2406 | NXTFIL, TAD T6 | |
2407 | IAC | |
2408 | JMS BUMPXR /SKIP REST OF NAME AND GARBAGE WORDS | |
2409 | SKPMTF, TAD I XR /GET LENGTH OF THIS ENTRY | |
2410 | TAD T5 | |
2411 | DCA T5 /ADD TO BLOCK STARTING ADDRESS | |
2412 | ISZ NFILES | |
2413 | JMP FSRCLP | |
2414 | DCA T5 /RE-INITIALIZE BLOCK NUMBER FOR NEXT SEGMENT | |
2415 | TAD I [DLINK /DIRECTORY EXHAUSTED - ANY MORE? | |
2416 | SZA | |
2417 | JMP MRDREN | |
2418 | JMP I MDSRCH | |
2419 | ||
2420 | BUMPXR, 0 /ROUTINE TO SKIP (DWASTE+AC) WORDS | |
2421 | ||
2422 | TAD I [DWASTE | |
2423 | CIA /DWASTE IS NEGATIVE AND SO IS AC | |
2424 | TAD XR | |
2425 | DCA XR | |
2426 | JMP I BUMPXR | |
2427 | ||
2428 | MWRCAT, 0 | |
2429 | TAD [4210 | |
2430 | DCA CATCTL | |
2431 | CIF 0 | |
2432 | JMS I T9 | |
2433 | CATCTL, 4210 /WRITE 2 RECORDS FROM FIELD 1 | |
2434 | 1400 | |
2435 | MCATRC, 1 | |
2436 | JMPME2, JMP I [MERROR+2 /CANNOT REWRITE CATALOG | |
2437 | JMP I MWRCAT | |
2438 | ||
2439 | IFNZRO .-772 <REASSEMBLE CONFIG> /USED TO BE 766 | |
2440 | SDVHND, ZBLOCK 17 /DEVICE HANDLER INFORMATION TABLE - SET BY CONFIG | |
2441 | \f IFZERO 1000&. <*1000> | |
2442 | /ENTER PROCESSOR FOR MONITOR | |
2443 | /FIND A HOLE IN THE DIRECTORY LARGE ENOUGH TO ACCOMODATE THE FILE | |
2444 | /AND STICK IT IN. MAKE A NOTE THAT WE DID SO FOR THE | |
2445 | /"CLOSE" PROCESSOR. | |
2446 | MENTER, DCA EPASS /SET UP FOR PASS 1 | |
2447 | JMS I [MRDCAT /READ CATALOG AND SET UP NFILES AND XR | |
2448 | JMP I [ERETRN /NON-FILE-STRUCTURED DEVICE | |
2449 | JMS I [CONSOL | |
2450 | DCA T2 /INTIIALIZE STARTING BLOCK NUMBER COUNTER | |
2451 | TAD [DPROPR-1 | |
2452 | DCA XR /RESTORE XR (CONSOLIDATOR DESTROYED IT) | |
2453 | TAD MACARG | |
2454 | CLL RTR | |
2455 | RTR | |
2456 | AND [377 /GET REQUESTED LENGTH FROM AC BITS 0-7 | |
2457 | CIA | |
2458 | DCA T3 /T3=REQUESTED LENGTH. IF T3=0, MEANS RETURN | |
2459 | /LARGEST EMPTY SPACE ON TAPE. IF T3<>0, MEANS RETURN | |
2460 | /SMALLEST BLOCK OF LENGTH =>T3. | |
2461 | TAD I T8 /GET FCB ENTRY | |
2462 | AND [7 | |
2463 | SZA CLA /ANY ACTIVE TENTATIVE FILES ON THIS DEVICE? | |
2464 | JMP I [MRTRN+1 /YES - TAKE ERROR RETURN | |
2465 | MELOOP, TAD I XR | |
2466 | SNA CLA | |
2467 | JMP MEMPTY /EMPTY SPACE - LOOK AT LENGTH | |
2468 | MTHREE /OCCUPIED - IGNORE | |
2469 | JMS I [BUMPXR | |
2470 | TAD I XR | |
2471 | MELEND, TAD T2 | |
2472 | DCA T2 /UPDATE T2 TO STARTING BLOCK # OF NEXT ENTRY | |
2473 | ISZ NFILES | |
2474 | JMP MELOOP /GO TO NEXT ENTRY | |
2475 | ||
2476 | /DIRECTORY BLOCK EXHAUSTED | |
2477 | TAD EPASS | |
2478 | SZA CLA /WHAT PASS ARE WE IN? | |
2479 | JMP EFINUP /SECOND PASS - THIS IS FOR KEEPS | |
2480 | TAD I [DLINK /FIRST PASS | |
2481 | SZA /ANY MORE SEGMENTS? | |
2482 | JMP I [MRDREN /YES - CONTINUE | |
2483 | ||
2484 | ||
2485 | /DONE - SEE IF OUR BEST IS GOOD ENOUGH. | |
2486 | TAD T4 | |
2487 | JMS I [FGETW | |
2488 | SZA CLA /CHECK THAT FIRST WORD OF NAME IS NON-ZERO | |
2489 | TAD T6 | |
2490 | SNA CLA /AND THAT WE FOUND WHAT WE WANTED | |
2491 | JMP I [MRTRN2 /OTHERWISE GIVE ERROR RETURN | |
2492 | TAD ASFLAG /GET NUMBER OF BEST SEGMENT | |
2493 | ISZ EPASS /AND RESTART THE ALGORITHM IN PASS 2 | |
2494 | JMP I [MRDREN /(TAKES LESS SPACE THAN SAVING XR AND NAME) | |
2495 | ||
2496 | /EVERYTHING IS SET UP - PERFORM THE ACTUAL ENTRY OPERATION | |
2497 | ||
2498 | EFINUP, TAD XR | |
2499 | DCA T1 | |
2500 | TAD [-4 | |
2501 | JMS I [BUMPXR | |
2502 | TAD I [DWASTE | |
2503 | CIA | |
2504 | TAD XR /CATALOG MUST HAVE ROOM FOR ONE MORE FILE | |
2505 | TAD [-1772 /AFTER THIS FILE IS ENTERED | |
2506 | SMA CLA /WILL NEW ADDITION OVERFLOW CATALOG? | |
2507 | JMP I [EOVFLO /YUP - CALL OVERLAY TO EXTEND DIRECTORY | |
2508 | MELP2, TAD I T1 /MOVE REST OF CATALOG UP | |
2509 | DCA I XR /TO CREATE SPACE FOR NEW ENTRY | |
2510 | CLA CMA | |
2511 | TAD T1 | |
2512 | DCA T1 | |
2513 | CLA CMA CLL RAL | |
2514 | TAD XR | |
2515 | DCA XR | |
2516 | TAD T1 | |
2517 | CIA CLL CML | |
2518 | TAD NAME | |
2519 | SZA CLA /HAVE WE PUSHED UP EVERYTHING? | |
2520 | JMP MELP2 /NO, KEEP PUSHING | |
2521 | TAD [-4 | |
2522 | DCA T1 /NOW MOVE THE USERS FILE NAME | |
2523 | TAD NAME | |
2524 | DCA XR | |
2525 | TAD T4 | |
2526 | JMS I [FGETW /[IN THE USERS FIELD, OF COURSE) | |
2527 | DCA I XR | |
2528 | ISZ T4 | |
2529 | ISZ T1 /INTO THE EMPTY SPACE JUST CREATED | |
2530 | JMP .-5 | |
2531 | TAD I [MDATE /PUT DATE OF CREATION INTO FILE NAME | |
2532 | DCA I XR /THIS WILL BE DESTROYED IF DWASTE=0 | |
2533 | IAC /ADJUST XR BUMP BECAUSE OF DATE STORE | |
2534 | JMS I [BUMPXR | |
2535 | DCA I XR /GIVE THE NEWLY ENTERED FILE A LENGTH OF 0 | |
2536 | TAD XR /PUT A POINTER TO THE LENGTH WORD OF THE | |
2537 | DCA I [DFLAG /NEW ENTRY INTO THE DIRECTORY HEADER | |
2538 | CLA CMA | |
2539 | TAD I [DCOUNT | |
2540 | DCA I [DCOUNT /INCREASE THE FILE COUNT BY 1 | |
2541 | TAD I T8 | |
2542 | TAD ASFLAG | |
2543 | DCA I T8 /SIGNAL AN OPEN OUTPUT FILE ON THIS DEVICE | |
2544 | JMS I [MWRCAT /WRITE THE ALTERED CATALOG BACK OUT | |
2545 | JMP I [LRETRN /STORE ARGS BACK JUST LIKE "LOOKUP" | |
2546 | \fMEMPTY, TAD I XR | |
2547 | CIA CLL | |
2548 | DCA T1 /SAVE LENGTH OF CURRENT ENTRY | |
2549 | TAD T3 | |
2550 | TAD T6 | |
2551 | CLA /LINK NOW EQUALS BEST LENGTH>=DESIRED LENGTH | |
2552 | TAD T3 | |
2553 | SNA | |
2554 | CML /IF DESIRED LENGTH=0 WE ALWAYS WANT MAXIMUM | |
2555 | TAD T1 | |
2556 | CLA CML /LINK IS NOW ON IF DESIRED LENGTH IS NOT IN BETWEEN | |
2557 | /BEST LENGTH AND CURRENT LENGTH | |
2558 | TAD T1 | |
2559 | CIA | |
2560 | TAD T6 | |
2561 | SZL SNA CLA /TAKE EITHER MIN OR MAX OF BEST AND CURRENT LENGTHS, | |
2562 | /DEPENDING ON WHETHER LINK IS ON OR OFF | |
2563 | JMP MNOCHG /MIN(MAX)=BEST - NOTHING TO DO | |
2564 | TAD T1 | |
2565 | DCA T6 /MAKE CURRENT ENTRY NEW "BEST" | |
2566 | CLA CLL CMA RAL | |
2567 | TAD XR | |
2568 | DCA NAME /REMEMBER CATALOG LOCATION | |
2569 | TAD I [MCATRC | |
2570 | DCA ASFLAG /ALSO DIRECTORY SEGMENT NUMBER | |
2571 | TAD T2 | |
2572 | DCA T5 /AND STARTING BLOCK NUMBER | |
2573 | MNOCHG, TAD T1 | |
2574 | CIA | |
2575 | JMP MELEND /GO UPDATE THE BLOCK NUMBER | |
2576 | \f /CLOSE PROCESSOR - CLOSES AN OUTPUT FILE WHICH WAS OPENED | |
2577 | /BY THE "ENTER" CALL -- ARGUMENTS ARE THE DEVICE NUMBER AND THE | |
2578 | /CLOSING LENGTH OF THE FILE. PERFORMS A DIRECTORY CLEANUP AFTER | |
2579 | /CLOSING THE FILE. IF AN ENTRY ALREADY EXISTS WITH THE NEW FILE'S | |
2580 | /NAME IT IS DELETED. (CLOSE MAY BE USED AS A "DELETE" COMMAND | |
2581 | /ONLY IF NO OUTPUT FILE WAS ENTERED). AN ERROR RETURN IS | |
2582 | /GIVEN IF THE CLOSING LENGTH IS TOO BIG OR IF THERE WAS NEITHER | |
2583 | /AN ACTIVE TENTATIVE FILE OR AN OLD FILE TO DELETE. | |
2584 | ||
2585 | MCLOSE, JMS I [MRDCAT /GET THE CATALOG | |
2586 | JMP CRETRN /NON-FILE STRUCTURED DEVICE - RETURN NORMALLY | |
2587 | CLA IAC /GET THE NEXT WORD IN THE CALLING SEQUENCE | |
2588 | JMS I [FGET | |
2589 | DCA T1 /GET CLOSING LENGTH AND STORE IT AWAY | |
2590 | JMS I [MDSRCH /SEARCH FOR THE OLD COPY | |
2591 | JMP NODLET /NO OLD COPY | |
2592 | MTHREE | |
2593 | TAD I [DWASTE | |
2594 | JMS SQUISH /SQUISH OUT 3+#WASTE WORDS OF THE OLD COPY | |
2595 | DCA I XR2 /AND MAKE THE OTHER TWO INTO AN EMPTY | |
2596 | TAD T6 /FILE ENTRY WITH THE SAME LENGTH | |
2597 | CIA | |
2598 | DCA I XR2 /AS THE OLD COPY | |
2599 | TAD I T8 | |
2600 | AND [7 | |
2601 | SNA /IS THERE AN OPEN OUTPUT FILE ON THIS DEVICE | |
2602 | JMP EOCLOS /NO - FINISH UP AND GET OUT | |
2603 | CIA /GET THE SEGMENT NUMBER WE WANT | |
2604 | TAD I [MCATRC | |
2605 | SNA CLA | |
2606 | JMP .+3 | |
2607 | JMS CONSOL | |
2608 | JMS I [MWRCAT /NO - WRITE OUT THE ONE WE SQUISHED | |
2609 | TAD I [DFLAG /GET LOCATION OF TENTATIVE FILE | |
2610 | CIA CLL | |
2611 | TAD XR2 | |
2612 | SZL CLA /IS THE ENTRY TO BE CLOSED ABOVE THE ONE | |
2613 | JMP .+3 /WE JUST DELETED? | |
2614 | MTHREE /YES - MOVE THE POINTER DOWN | |
2615 | TAD I [DWASTE /TO COMPENSATE FOR THE SQUISHING | |
2616 | TAD I [DFLAG /THE POINTER WILL NOW POINT | |
2617 | DCA I [DFLAG /TO THE LENGTH WORD. | |
2618 | /(THIS WAS WASTED WORK UNLESS THE CORRECT SEGMENT IS IN CORE) | |
2619 | ||
2620 | NODLET, TAD I T8 | |
2621 | AND [7 | |
2622 | SNA /IS THERE AN OPEN OUTPUT FILE ON THIS DEVICE? | |
2623 | JMP I [MRTRN+1 /WHAT DID HE CALL US FOR? - ERROR | |
2624 | JMS I [MRDCAT /YES - READ IN THE CORRECT SEGMENT | |
2625 | TAD I [DFLAG | |
2626 | DCA T4 /T4 POINTS TO THE LENGTH OF THE TENTATIVE ENTRY | |
2627 | TAD T1 | |
2628 | CIA /IF T1=0, NEW ENTRY WILL BE DELETED AUTOMATICALLY | |
2629 | DCA I T4 /DURING CONSOLIDATION | |
2630 | ISZ T4 | |
2631 | ISZ T4 | |
2632 | CLL CML | |
2633 | TAD T1 | |
2634 | TAD I T4 /SUBTRACT CLOSING LENGTH FROM FREE BLOCK ADJACENT TO ENTRY | |
2635 | SNL SZA | |
2636 | JMP I [MERROR+3 /THIS CREEP HAS GONE AND DESTROYED HIS TAPE | |
2637 | DCA I T4 | |
2638 | EOCLOS, JMS CONSOL /CONSOLIDATE THE DIRECTORY | |
2639 | TAD [7770 | |
2640 | AND I T8 | |
2641 | DCA I T8 | |
2642 | SKP | |
2643 | CRETRN, TAD [7600 /DO A WRITE OF 0 PAGES. (MAGTAPE) | |
2644 | JMS I [MWRCAT | |
2645 | ISZ I [MONITO | |
2646 | JMP I [MRTRN2 | |
2647 | \f /CONSOLIDATOR - CHECKS FOR ENTRIES OF LENGTH 0 AND DELETES THEM. | |
2648 | /ALSO CHECKS FOR ADJACENT FREE AREAS AND COMBINES THEM. | |
2649 | CONSOL, 0 | |
2650 | TAD [DPROPR-1 | |
2651 | DCA XR | |
2652 | TAD I [DCOUNT | |
2653 | DCA T7 /T7 = FILE COUNT | |
2654 | CONLP, TAD I XR | |
2655 | SNA CLA /EMPTY FILE? | |
2656 | JMP CONMTF /YES - GO CHECK FOR NULL AND 2 IN A ROW | |
2657 | MTHREE | |
2658 | JMS I [BUMPXR /GET PAST THE GARBAGE WORDS | |
2659 | TAD I XR /GET COUNT | |
2660 | SZA CLA /WOULD THIS HAPPEN TO BE A NULL FILE? | |
2661 | JMP CONLPT /NAH, GO TO NEXT ONE | |
2662 | TAD [-5 /YEAH, REMOVE IT ENTIRELY | |
2663 | TAD I [DWASTE /INCLUDING THE WASTE WORDS | |
2664 | SQCOMN, JMS SQUISH | |
2665 | ISZ I [DCOUNT /BUMP DOWN FILE COUNT IN DIRECTORY | |
2666 | ISZ NFILES /AS WELL AS THE TEMPORARY ONE IN PAGE 0 | |
2667 | NOP /V3 RL INSISTS | |
2668 | JMP CONSOL+1 /REPEAT ENTIRE CONSOLIDATION - THIS DELETION MAY | |
2669 | /HAVE BROUGHT TWO FREE ENTRIES TOGEHER | |
2670 | / THE ABOVE NOP FIXES THE KILLER CLOSE BUG | |
2671 | CONLPT, ISZ T7 | |
2672 | JMP CONLP /MORE FILES - KEEP PLUGGING | |
2673 | JMP I CONSOL /RETURN FROM CONSOLIDATOR | |
2674 | CONMTF, TAD I XR /IS THIS FREE ENTRY NULL? | |
2675 | SNA | |
2676 | JMP SQTRIV /YES - SQUASHITLIKEABUG | |
2677 | DCA T2 /NO - SAVE LENGTH | |
2678 | TAD XR | |
2679 | DCA SQUISH /SAVE POSITION OF LENGTH WORD | |
2680 | ISZ T7 /WAS IT THE LAST FILE? | |
2681 | SKP /NO, THEN THERE IS ONE AFTER IT(GOOD THINKING!) | |
2682 | JMP I CONSOL /YES - RETURN FROM CONSOLIDATOR | |
2683 | TAD I XR | |
2684 | SZA CLA /TWO EMPTIES IN A ROW? | |
2685 | JMP CONLP+3 /NO - SLIP BACK INTO LOOP | |
2686 | TAD I XR | |
2687 | TAD T2 /YES - COMBINE LENGTHS | |
2688 | DCA I SQUISH /STORE BACK IN FIRST LENGTH WORD AND SQUISH SECOND ENTRY | |
2689 | SQTRIV, CLA CMA CLL RAL | |
2690 | JMP SQCOMN /SQUISH OUT 2 WORDS | |
2691 | \fMRESET, TAD [-17 | |
2692 | DCA T3 | |
2693 | MRSETL, TAD T3 | |
2694 | JMS I [MCKDEV | |
2695 | /LINK MUST BE ON AT THIS POINT | |
2696 | TAD [200 | |
2697 | SZL CLA /ZERO ALL DEVICE HANDLER SLOTS THAT AREN'T RESIDENT | |
2698 | DCA I T1 | |
2699 | JMS I [FGET | |
2700 | SZA CLA | |
2701 | TAD [7 | |
2702 | CMA STL | |
2703 | AND I T8 | |
2704 | DCA I T8 /DELETE THE "FILE CURRENTLY OPEN" FLAG IF ASKED | |
2705 | ISZ T3 | |
2706 | JMP MRSETL | |
2707 | JMP I [MNEXT | |
2708 | ||
2709 | /SUBR TO COLLAPSE DIRECTORY AFTER A POINT | |
2710 | SQUISH, 0 | |
2711 | TAD XR | |
2712 | DCA XR1 | |
2713 | CLA CLL CMA RAL | |
2714 | TAD XR1 | |
2715 | DCA XR2 /SET UP XR2 FOR CHANGING SQUISHED ENTRY | |
2716 | SQLOOP, TAD I XR | |
2717 | DCA I XR1 /MOVE DOWN ONE WORD | |
2718 | TAD XR | |
2719 | TAD [-1777 | |
2720 | SZA CLA /AT END YET? | |
2721 | JMP SQLOOP /NO, KEEP GOING | |
2722 | JMP I SQUISH | |
2723 | \f *1400 | |
2724 | /INITIAL DIRECTORY FOR MONITOR | |
2725 | /DEFINES OS/8 ABSOLUTE LOADER (ABSLDR.SV) | |
2726 | ||
2727 | DCOUNT, -2 /TWO ENTRIES | |
2728 | DORG, MFREE /FILE STORAGE STARTS AT BLOCK "MFREE" | |
2729 | DLINK, 0 /THIS IS THE ONLY DIRECTORY RECORD | |
2730 | DFLAG, 0 /THERE ARE NO OPEN OUTPUT FILES ON THIS DEVICE | |
2731 | DWASTE, -1 /# OF WASTED WORDS PER ENTRY | |
2732 | DPROPR, 0102 /AB | |
2733 | 2314 /SL | |
2734 | 0422 /DR | |
2735 | 2326 /.SV | |
2736 | 3017 /V3D ENCODING FOR 1-JUN-77 | |
2737 | -5 /FIVE BLOCKS LONG( 1 BLOCK = 256 WORDS) | |
2738 | 0 /EMPTY SPACE | |
2739 | -1 /OVERLAYED BY DEVICE DEPENDENT PART WITH LENGTH | |
2740 | ||
2741 | IFNZRO .-1415 <CNFER,QQQ> | |
2742 | \f *3400 /"ENTER" OVERLAY TO USR - RUNS IN 11000 | |
2743 | JMP .+3 | |
2744 | MSEGLM, -7 /# DIRECT. SEGS | |
2745 | NEWLEN, -10 | |
2746 | MEOVLP, TAD I [DLINK | |
2747 | SNA CLA | |
2748 | JMP MELAST /LAST SEGMENT - MUST CREATE A NEW ONE | |
2749 | ISZ I [DCOUNT /BUMP ENTRY COUNT DOWN | |
2750 | JMS I [MWRCAT /WRITE OUT THIS SEGMENT | |
2751 | JMS MSKIPF /FIND END OF SHORTENED DIRECTORY | |
2752 | DCA MEFCNT /PREPARE TO TRANSFER LAST ENTRY | |
2753 | TAD (MEOVLS-1 | |
2754 | DCA XR1 /INTO NEXT DIRECTORY SEGMENT | |
2755 | TAD I XR | |
2756 | DCA I XR1 | |
2757 | ISZ MEFCNT /THROUGH A BUFFER AT LOC 11200 | |
2758 | TAD XR | |
2759 | CIA | |
2760 | TAD T1 /T1 WAS SET UP BY "ENTER" | |
2761 | SZA CLA | |
2762 | JMP .-7 | |
2763 | TAD I T1 /GET LENGTH OF MOVED ENTRY | |
2764 | DCA MEOCNT | |
2765 | TAD I [DLINK | |
2766 | JMS I [MRDCAT /READ NEXT SEGMENT | |
2767 | JMS I [CONSOL /MAKE SURE IT IS AT ITS SMALLEST | |
2768 | TAD I [DORG | |
2769 | TAD MEOCNT | |
2770 | DCA I [DORG /BUMP FILE ORIGIN DOWN | |
2771 | JMS MSKIPF /FIND LAST LOC IN NEW SEGMENT | |
2772 | MELP3, TAD XR | |
2773 | DCA METMP1 | |
2774 | TAD XR | |
2775 | TAD MEFCNT | |
2776 | DCA METMP2 /PREPARE TO PUSH ALL ENTRIES UP | |
2777 | TAD I METMP1 | |
2778 | DCA I METMP2 /DO THE PUSHING | |
2779 | STA | |
2780 | TAD XR | |
2781 | DCA XR | |
2782 | TAD XR | |
2783 | TAD (-DWASTE | |
2784 | SZA CLA /ARE WE THROUGH? | |
2785 | JMP MELP3 /NO | |
2786 | TAD (MEOVLS-1 | |
2787 | DCA XR /PREPARE TO MOVE THE SAVED ENTRY INTO THE | |
2788 | CLA CMA /NEW SEGMENT | |
2789 | TAD I [DCOUNT | |
2790 | DCA I [DCOUNT /INCREASE ENTRY COUNT OF NEW SEGMENT | |
2791 | TAD MEFCNT | |
2792 | CIA | |
2793 | MECOMN, DCA MEFCNT /STORE NUMBER OF WORDS TO MOVE | |
2794 | TAD [DWASTE | |
2795 | DCA XR1 | |
2796 | TAD I XR | |
2797 | DCA I XR1 | |
2798 | ISZ MEFCNT | |
2799 | JMP .-3 /MOVE THE ENTRY IN | |
2800 | JMS MSKIPF | |
2801 | TAD XR | |
2802 | DCA T1 /T1=LAST LOC IN SEGMENT | |
2803 | TAD I [DWASTE | |
2804 | CIA | |
2805 | TAD XR | |
2806 | TAD [-1772 | |
2807 | SMA CLA /HAVE WE MADE THIS SEGMENT TOO BIG? | |
2808 | JMP MEOVLP /YES - LOOP UNTIL WE GET IT RIGHT | |
2809 | JMS I [MWRCAT /WRITE OUT NEW SEGMENT | |
2810 | JMP MEOXIT /READ IN ENTER AND CONTINUE | |
2811 | \fMWRONG, IAC | |
2812 | MELAST, TAD NEWLEN | |
2813 | DCA METMP1 /LENGTH OF NEW SEGMENT | |
2814 | TAD METMP1 | |
2815 | CIA | |
2816 | TAD I [DCOUNT | |
2817 | SMA /WERE THERE "NEWLEN+1" | |
2818 | JMP MWRONG /NO - SET OUR SIGHTS LOWER | |
2819 | DCA I [DCOUNT /ADJUST LENGTH OF OLD SEGMENT | |
2820 | JMS MSKIPF /FIND BOUNDARY LOC BETWEEN SEGMENTS | |
2821 | TAD I [MCATRC | |
2822 | IAC | |
2823 | DCA I [DLINK /LINK THE OLD LAST SEGMENT TO | |
2824 | TAD I [DLINK /THE NEWLY CREATED ONE | |
2825 | TAD MSEGLM | |
2826 | SMA CLA | |
2827 | JMP I (MEOERR /PROVIDED THAT THERE IS ROOM FOR ANOTHER | |
2828 | JMS I [MWRCAT /WRITE OUT THE NEXT-TO-LAST SEGMENT | |
2829 | ISZ I [MCATRC /BUMP RECORD NUMBER FOR NEXT WRITE | |
2830 | ISZ OLDT9 /LIKEWISE BUMP DIRECTORY KEY | |
2831 | TAD METMP1 | |
2832 | DCA I [DCOUNT | |
2833 | TAD MEOCNT | |
2834 | CIA | |
2835 | TAD I [DORG | |
2836 | DCA I [DORG /SET UP PARAMETERS OF THE NEW SEGMENT | |
2837 | DCA I [DLINK /MARK IT AS THE NEW LAST SEGMENT | |
2838 | TAD XR | |
2839 | TAD [-1777 /SET UP COUNT OF WORDS TO SLIDE DOWN | |
2840 | JMP MECOMN /USE COMMON CODE TO SLIDE WORDS AND EXIT | |
2841 | ||
2842 | MSKIPF, 0 /SUBR TO FIND LAST LOC USED IN A SEGMENT | |
2843 | /ALSO FINDS NUMBER OF BLOCKS USED BY SEGMENT | |
2844 | TAD I [DCOUNT | |
2845 | DCA MNOFIL | |
2846 | TAD [DWASTE | |
2847 | DCA XR | |
2848 | DCA MEOCNT /INITIALIZE POINTER(XR) AND COUNT(MEOCNT) | |
2849 | MSKPLP, TAD I XR | |
2850 | SNA CLA | |
2851 | JMP MEOMTY | |
2852 | MTHREE | |
2853 | TAD I [DWASTE /BUMP POINTER TO LENGTH WORD OF FILE ENTRY | |
2854 | CIA | |
2855 | TAD XR | |
2856 | DCA XR | |
2857 | MEOMTY, TAD I XR | |
2858 | TAD MEOCNT | |
2859 | DCA MEOCNT | |
2860 | ISZ MNOFIL | |
2861 | JMP MSKPLP | |
2862 | JMP I MSKIPF | |
2863 | \fMEOCNT, 0 | |
2864 | MEFCNT, 0 | |
2865 | METMP1, 0 | |
2866 | METMP2, 0 | |
2867 | MNOFIL, 0 | |
2868 | MEOVLS=1200 /DESTROYS PART OF "CLOSE" OP FOR BUFFER | |
2869 | PAGE | |
2870 | \f EJECT ABSLDR | |
2871 | /ABSOLUTE LOADER FOR OS/8 - VERSION 4A | |
2872 | *2000 | |
2873 | CTLBLK=3400 | |
2874 | BUFFER=CTLBLK | |
2875 | XFIELD=20 | |
2876 | ORIGIN=21 | |
2877 | B1=22 | |
2878 | B2=23 | |
2879 | B3=24 | |
2880 | C1=25 | |
2881 | C2=26 | |
2882 | C3=27 | |
2883 | WD=30 | |
2884 | WD1=31 | |
2885 | WD2=32 | |
2886 | FILPTR=33 | |
2887 | PG7400=34 | |
2888 | LSTFLD=35 | |
2889 | LOADXR=11 | |
2890 | ABSLDR, JMS I (CTINIT | |
2891 | JMS I (CTINIT | |
2892 | JMP CALLCD | |
2893 | JMP NOCD | |
2894 | NEXTCD, JMS I (NEXFIL | |
2895 | CALLCD, JMS I [200 | |
2896 | 5 /COMMAND DECODE | |
2897 | 0216 /ASSUMED EXTENSION IS .BN | |
2898 | NOCD, TAD [6001 | |
2899 | CDF 0 | |
2900 | DCA I [JSBITS /SET JSBITS TO SAVE CD AREA NEXT TIME | |
2901 | CDF 10 | |
2902 | TAD I [MPARAM+1 | |
2903 | AND [100 | |
2904 | SZA CLA /IS /R SWITCH ON? | |
2905 | JMS I (CTINIT /YES - RE-INITIALIZE LOADER TABLES | |
2906 | LD7400, 7400 | |
2907 | TAD (MIFILE | |
2908 | DCA FILPTR | |
2909 | JMS I (SETADR /GET THE STARTING ADDRESS IF IT APPEARS ON THE LINE | |
2910 | NEWFIL, TAD (7001 | |
2911 | DCA HANDLR | |
2912 | TAD I FILPTR | |
2913 | AND [7760 | |
2914 | SZA /LENGTH OF 256 BLOCKS IMPLIES AT LEAST 256 | |
2915 | TAD [17 | |
2916 | CLL CML RTR | |
2917 | RTR | |
2918 | DCA RCDCNT | |
2919 | TAD I FILPTR | |
2920 | ISZ FILPTR | |
2921 | SNA | |
2922 | JMP NEXTCD /FILE POINTER = 0 MEANS NO MORE INPUT FILES | |
2923 | JMS I [200 | |
2924 | 1 /ASSIGN | |
2925 | HANDLR, 7001 /LOAD INTO 7000 IF NOT ALREADY LOADED | |
2926 | JMP I (IOERR | |
2927 | TAD I FILPTR | |
2928 | DCA RECNO | |
2929 | ISZ FILPTR | |
2930 | CLA CMA | |
2931 | DCA CHCNT | |
2932 | DCA REOF | |
2933 | TAD I [MPARAM /TEST FOR /I | |
2934 | AND (10 | |
2935 | SNA CLA | |
2936 | JMP I (LOADER /I IS NOT ON | |
2937 | ISZ OFLG /IS /I ALLOWED? | |
2938 | JMP I (OERR /NO! | |
2939 | JMP I (SLASHO | |
2940 | \fGETCH, 0 /GET-NEXT-INPUT-CHARACTER ROUTINE | |
2941 | TAD [200 | |
2942 | KRS | |
2943 | TAD (-203 | |
2944 | SNA CLA | |
2945 | KSF | |
2946 | SKP | |
2947 | JMP I (MGET | |
2948 | ISZ JMPGET | |
2949 | ISZ CHCNT | |
2950 | JMPX, JMP JMPGET | |
2951 | TAD REOF | |
2952 | SZA CLA | |
2953 | JMP I GETCH /EOF REACHED BEFORE LOGICAL END - ERROR | |
2954 | CIF 0 | |
2955 | JMS I HANDLR | |
2956 | 0210 /READ 2 RECORDS INTO FIELD 1 | |
2957 | PBUFFR, BUFFER | |
2958 | RECNO, 0 | |
2959 | JMP RERROR | |
2960 | ISZ RECNO | |
2961 | ISZ RCDCNT | |
2962 | SKP | |
2963 | ISZ REOF | |
2964 | TAD (-601 | |
2965 | DCA CHCNT | |
2966 | TAD PBUFFR | |
2967 | DCA CHPTR | |
2968 | TAD JMPX | |
2969 | DCA JMPGET | |
2970 | JMP GETCH+1 | |
2971 | \fJMPGET, JMP . | |
2972 | JMP CHAR1 | |
2973 | JMP CHAR2 | |
2974 | CHAR3, TAD JMPX | |
2975 | DCA JMPGET | |
2976 | TAD I CHPTR | |
2977 | AND LD7400 | |
2978 | CLL RTR | |
2979 | RTR | |
2980 | TAD CHTMP | |
2981 | RTR | |
2982 | RTR | |
2983 | ISZ CHPTR | |
2984 | JMP GCHCOM | |
2985 | CHAR2, TAD I CHPTR | |
2986 | AND LD7400 | |
2987 | DCA CHTMP | |
2988 | ISZ CHPTR | |
2989 | CHAR1, TAD I CHPTR | |
2990 | GCHCOM, AND (377 | |
2991 | ISZ GETCH | |
2992 | JMP I GETCH | |
2993 | RERROR, SPA CLA | |
2994 | JMP I (IOERR /AN ACTUAL READ ERROR - AMAZING! | |
2995 | ISZ REOF | |
2996 | JMP RECNO+2 | |
2997 | REOF, 0 | |
2998 | CHCNT, 0 | |
2999 | CHPTR, 0 | |
3000 | CHTMP, 0 | |
3001 | RCDCNT, 0 | |
3002 | OFLG, -1 /SWITCH FOR /O OPTION | |
3003 | PAGE | |
3004 | \f *2200 | |
3005 | PUTWD, 6402 /ABSLDR VERSION NUMBER | |
3006 | CMA | |
3007 | AND I B2 /AND OUT THE PAGE SLOT IN THE PAGE TABLE | |
3008 | DCA I B2 | |
3009 | TAD ORIGIN | |
3010 | DCA ORGX | |
3011 | TAD XFIELD | |
3012 | CLL RTR | |
3013 | RTR | |
3014 | SZA CLA /TEST FOR FIELDS 0 OR 1 | |
3015 | JMP PUTIT /NEITHER - STORE AS IS | |
3016 | SNL | |
3017 | JMP FLD0 | |
3018 | TAD ORIGIN | |
3019 | SPA CLA | |
3020 | JMP FLD1 | |
3021 | CLA CLL CML RTR | |
3022 | TAD ORIGIN | |
3023 | SMA CLA | |
3024 | JMP .+3 | |
3025 | ISZ I (OVLYFG /SET FLAG THAT LOADER IS BEING OVERLAYED | |
3026 | TAD (2400 /LOADER OVERLAYS GO IN MTEMP+11 - MTEMP+14 | |
3027 | LCOMPR, TAD ORIGIN | |
3028 | RTL | |
3029 | RTL | |
3030 | RAL | |
3031 | AND [17 | |
3032 | TAD (MTEMP | |
3033 | RLCOMN, DCA PGTMP | |
3034 | TAD BUFREC | |
3035 | CIA | |
3036 | TAD PGTMP | |
3037 | SNA CLA | |
3038 | JMP DONTWR | |
3039 | JMS WRBUF | |
3040 | WRIBUF, CLA /MODIFIED..IF NOT /O GETS SZA CLA | |
3041 | JMP DONTWR | |
3042 | CIF 0 | |
3043 | JMS I [SHNDLR | |
3044 | 0210 | |
3045 | 1400 /USE CATALOG SPACE | |
3046 | PGTMP, 0 | |
3047 | JMP I (LIOERR | |
3048 | DONTWR, DCA OLDT9 /MARK THE CATALOG DESTROYED | |
3049 | TAD PGTMP | |
3050 | DCA BUFREC | |
3051 | TAD ORIGIN | |
3052 | AND [377 | |
3053 | TAD PTRBFR | |
3054 | DCA ORGX | |
3055 | JMP PUTIT2 | |
3056 | \fFLD1, CLL | |
3057 | TAD ORIGIN /IGNORE LOCATIONS ABOVE 17600 | |
3058 | TAD [200 | |
3059 | SZL CLA | |
3060 | JMP I PUTWD | |
3061 | PUTIT, TAD XFIELD | |
3062 | TAD [7770 /CONSTRUCT CDF N FOR PROPER FIELD | |
3063 | PUTIT2, TAD CDF10 | |
3064 | DCA .+1 | |
3065 | M7, -7 | |
3066 | TAD C3 | |
3067 | DCA I ORGX | |
3068 | CDF10, CDF 10 | |
3069 | JMP I PUTWD | |
3070 | FLD0, TAD ORIGIN /CHECK FOR STUFF IN PAGE 7000 | |
3071 | TAD (1000 | |
3072 | SNL CLA /IF NON ZERO,OVERLAY | |
3073 | JMP PUTIT | |
3074 | TAD [7400 /FORM RECORD NO. FOR OVERLAY | |
3075 | ISZ PG7400 /SET OVERLAY FLAG | |
3076 | JMP LCOMPR /FORM RECORD NO. | |
3077 | WRBUF, CALONC | |
3078 | TAD BUFREC | |
3079 | SNA | |
3080 | JMP I WRBUF | |
3081 | CIF 0 | |
3082 | JMS I [SHNDLR | |
3083 | 4210 | |
3084 | PTRBFR, 1400 | |
3085 | BUFREC, 0 | |
3086 | JMP I (LIOERR | |
3087 | DCA BUFREC | |
3088 | /BAD I/O ON SYSTEM DEVICE | |
3089 | JMP I WRBUF | |
3090 | \fORGX, | |
3091 | NEXFIL, ERTRN | |
3092 | JMS WRBUF /WRITE WHATEVER | |
3093 | TAD I [MPARAM-1 | |
3094 | SPA CLA | |
3095 | JMP I (BUILD | |
3096 | TAD I (MPARAM | |
3097 | AND (40 | |
3098 | SZA CLA | |
3099 | JMP I (BUILD | |
3100 | JMP I NEXFIL | |
3101 | ||
3102 | CORTAB, ZBLOCK 30 /ONCE-ONLY CODE INSERTED HERE KATER | |
3103 | ZBLOCK 2 /EXTRA NEEDED BY ONCE-ONLY CODE | |
3104 | /NOT USED BY CORE TABLE | |
3105 | PAGE | |
3106 | \f *2400 | |
3107 | ITSOVR, JMS ASSEMB | |
3108 | CIA | |
3109 | TAD LCKSUM | |
3110 | SZAIN, SZA CLA | |
3111 | JMP I (BADCKS | |
3112 | TAD I [MPARAM+1 | |
3113 | AND L40 | |
3114 | SNA CLA | |
3115 | JMP I (NEWFIL | |
3116 | LOADER, DCA LCKSUM | |
3117 | DCA I (OFLG /CANCEL FURTHER /I'S | |
3118 | TAD SZAIN | |
3119 | DCA I (WRIBUF | |
3120 | JMS GETFLD | |
3121 | DCA XFIELD | |
3122 | TAD [200 | |
3123 | DCA ORIGIN | |
3124 | JMS I (GETCH | |
3125 | JMP I (NEWFIL | |
3126 | SNA | |
3127 | JMP .-3 | |
3128 | TAD [-200 | |
3129 | SZA CLA | |
3130 | JMP LOADER+1 | |
3131 | LEADER, JMS I (GETCH | |
3132 | JMP I (NEWFIL | |
3133 | SNA | |
3134 | JMP LOADER+1 | |
3135 | TAD [-200 | |
3136 | SNA | |
3137 | JMP LEADER | |
3138 | NEWWD, SMA | |
3139 | JMP FIELDW | |
3140 | TAD [200 | |
3141 | DCA WD1 | |
3142 | JMS I (GETCH | |
3143 | JMP I (BADINP | |
3144 | DCA WD2 | |
3145 | JMS I (GETCH | |
3146 | JMP I (BADINP | |
3147 | TAD [-200 | |
3148 | SNA | |
3149 | JMP ITSOVR | |
3150 | DCA WD | |
3151 | JMS ASSEMB | |
3152 | SNL | |
3153 | JMP DATAWD | |
3154 | DCA ORIGIN | |
3155 | DCA I (LOADWD /ZERO 'DATA LOADED' FLAG V3 | |
3156 | JMP GETNXT | |
3157 | \fDATAWD, JMS I (LOADWD | |
3158 | ISZ ORIGIN | |
3159 | L40, 40 | |
3160 | GETNXT, TAD WD1 | |
3161 | TAD WD2 | |
3162 | TAD LCKSUM | |
3163 | DCA LCKSUM | |
3164 | TAD WD | |
3165 | JMP NEWWD | |
3166 | \fASSEMB, 0 | |
3167 | TAD WD1 | |
3168 | CLL RTL | |
3169 | RTL | |
3170 | RTL | |
3171 | TAD WD2 | |
3172 | JMP I ASSEMB | |
3173 | FIELDW, TAD (-32 | |
3174 | SNA | |
3175 | JMP CTLZ | |
3176 | TAD (-46 | |
3177 | SPA | |
3178 | JMP NOTXP | |
3179 | DCA WD1 | |
3180 | TAD WD1 | |
3181 | AND [7 /V3C | |
3182 | SZA CLA | |
3183 | JMP NOTXP | |
3184 | TAD WD1 | |
3185 | AND (70 | |
3186 | DCA XFIELD | |
3187 | JMS I (GETCH | |
3188 | JMP I (BADINP | |
3189 | TAD [-200 | |
3190 | SZA | |
3191 | JMP NEWWD | |
3192 | NOTXP, CLA | |
3193 | TAD LCKSUM | |
3194 | SNA CLA | |
3195 | JMP LOADER | |
3196 | JMP I (BADINP | |
3197 | LCKSUM, 0 | |
3198 | CTLZ, TAD LCKSUM | |
3199 | SZA CLA | |
3200 | JMP I (BADINP | |
3201 | JMP I (NEWFIL | |
3202 | \fGETFLD, 0 | |
3203 | DCA C1 | |
3204 | TAD I (MPARAM+2 | |
3205 | AND (1774 | |
3206 | SNA | |
3207 | JMP I GETFLD | |
3208 | RTL | |
3209 | RAL | |
3210 | ISZ C1 | |
3211 | SNL | |
3212 | JMP .-3 | |
3213 | CLA CMA | |
3214 | TAD C1 | |
3215 | CLL RTL | |
3216 | RAL | |
3217 | JMP I GETFLD | |
3218 | PAGE | |
3219 | \f *2600 | |
3220 | BUILD, TAD (CORTAB+25 | |
3221 | DCA B1 | |
3222 | TAD I (CORTAB+3 | |
3223 | CLL CMA | |
3224 | AND [7760 | |
3225 | SNA CLA | |
3226 | CML | |
3227 | TAD I (CORTAB | |
3228 | CMA | |
3229 | AND [7760 | |
3230 | SNA CLA | |
3231 | IAC | |
3232 | RTR | |
3233 | DCA I (CTLBLK+3 | |
3234 | TAD (CTLBLK+3 | |
3235 | DCA LOADXR | |
3236 | TAD [-10 | |
3237 | DCA C1 | |
3238 | TAD [70 | |
3239 | DCA FIELDB | |
3240 | DCA I (CTLBLK | |
3241 | FLDLP, TAD FIELDB | |
3242 | TAD [-20 | |
3243 | SMA CLA /IGNORE 07600 AND 17600 IN CCB /V3 | |
3244 | CMA /IN THE CORE MAP | |
3245 | TAD [-37 | |
3246 | DCA C2 | |
3247 | DCA LOWERA | |
3248 | MTLOOP, JMS I (SHFT | |
3249 | SNL CLA | |
3250 | JMP INUSE | |
3251 | TAD LOWERA | |
3252 | MTRSME, TAD [200 | |
3253 | DCA LOWERA | |
3254 | ISZ C2 | |
3255 | JMP MTLOOP | |
3256 | JMP FLDOVR | |
3257 | INUSE, TAD LOWERA | |
3258 | TAD [200 | |
3259 | DCA UPPERA | |
3260 | ISZ C2 | |
3261 | SKP | |
3262 | JMP ENDRGN-2 | |
3263 | JMS I (SHFT | |
3264 | SZL CLA | |
3265 | JMP ENDRGN | |
3266 | TAD UPPERA | |
3267 | JMP INUSE+1 | |
3268 | CLA CMA | |
3269 | DCA C2 | |
3270 | ENDRGN, TAD LOWERA | |
3271 | AND [7400 | |
3272 | DCA I LOADXR | |
3273 | ISZ I (CTLBLK | |
3274 | TAD LOWERA | |
3275 | AND [7400 | |
3276 | CIA | |
3277 | TAD UPPERA | |
3278 | CLL RAR | |
3279 | TAD FIELDB | |
3280 | DCA I LOADXR | |
3281 | TAD UPPERA | |
3282 | JMP MTRSME | |
3283 | \fFLDOVR, TAD FIELDB | |
3284 | TAD [-10 | |
3285 | DCA FIELDB | |
3286 | CLA CLL CMA RTL | |
3287 | TAD B1 | |
3288 | DCA B1 | |
3289 | ISZ C1 | |
3290 | JMP FLDLP | |
3291 | TAD I (CTLBLK | |
3292 | SNA | |
3293 | JMP I (NULERR | |
3294 | CIA | |
3295 | DCA I (CTLBLK | |
3296 | TAD I [MPARAM+1 /CLOBBER BATCH? | |
3297 | AND [400 | |
3298 | TAD I (MPARAM+2 /AH ED, BUG IF YOU SPEC /P/1 TO LOADER | |
3299 | AND (403 | |
3300 | TAD I (CTLBLK+3 | |
3301 | DCA I (CTLBLK+3 | |
3302 | TAD LSTFLD | |
3303 | AND [7 | |
3304 | CLL RTL | |
3305 | RAL | |
3306 | TAD [CDF CIF 0 | |
3307 | DCA I (CTLBLK+1 | |
3308 | SKP | |
3309 | ORG200, TAD [200 | |
3310 | TAD LSTADR | |
3311 | SZA /V3 | |
3312 | JMP NOORG /V3 ALLOW EXPLICIT START ADDR TO OVERRIDE DEFAULT | |
3313 | TAD I (LOADWD /V3 NO EXPLICIT START ADDR | |
3314 | CLA /REPLACE BY 'SZA CLA' TO ALLOW SELF-STARTING STUFF | |
3315 | /* SZA CLA /V3 IS IT SELF STARTING BIN FORMAT? | |
3316 | JMP ORG200 /V3 NO | |
3317 | TAD XFIELD /V3 YES | |
3318 | TAD [CIF CDF 0 /V3 | |
3319 | DCA I (CTLBLK+1 /V3 | |
3320 | TAD I (ORIGIN /V3 | |
3321 | NOORG, DCA I (CTLBLK+2 | |
3322 | JMP I (LGTOUT /WRITE CONTROL BLOCK AND EXIT | |
3323 | FIELDB, 0 | |
3324 | \fUPPERA, | |
3325 | SETADR, 0 | |
3326 | TAD I (MPARAM+3 | |
3327 | SNA /IS THERE A STARTING ADDRESS SPECIFIED? | |
3328 | JMP I SETADR /NO | |
3329 | DCA LSTADR | |
3330 | TAD I [MPARAM-1 | |
3331 | DCA LSTFLD | |
3332 | JMP I SETADR | |
3333 | ||
3334 | LOWERA, 0 | |
3335 | LSTADR, 0 | |
3336 | PAGE | |
3337 | \f *3000 | |
3338 | ZOFILE, MOFILE | |
3339 | ZOUCNT, -47 | |
3340 | LGTOUT, TAD PG7400 | |
3341 | SNA CLA | |
3342 | JMP .+7 | |
3343 | CIF 0 | |
3344 | JMS I [SHNDLR | |
3345 | 0300 | |
3346 | 7000 | |
3347 | MTEMP+15 | |
3348 | JMP I (LIOERR | |
3349 | CIF 0 | |
3350 | JMS I [SHNDLR | |
3351 | 4210 | |
3352 | CTLBLK-200 | |
3353 | MTEMP+10 | |
3354 | JMP I (LIOERR | |
3355 | TAD I (CTLBLK+2 | |
3356 | DCA CTL2 /MOVE THINGS INTO THIS PAGE | |
3357 | TAD I (CTLBLK+3 | |
3358 | DCA CTL3 /SO WE CAN REFERENCE THEM WITH DF=0 | |
3359 | TAD I [MPARAM | |
3360 | AND (40 | |
3361 | SNA CLA | |
3362 | JMP LNOGO | |
3363 | TAD CTL3 | |
3364 | RAL | |
3365 | SPA CLA /ARE WE OVERLAYING THE I/O MONITOR? | |
3366 | JMP LKICKM /NO | |
3367 | CDF 0 | |
3368 | DCA I [JSBITS /YES - SET JSBITS TO FORCE A READ | |
3369 | CDF 10 | |
3370 | JMS I [200 | |
3371 | 13 /RESET I/O DEVICES AND FILES | |
3372 | LKICKM, JMS I [200 | |
3373 | 11 /KICK MONITOR OUT | |
3374 | /******************************************** | |
3375 | /NO PAGE ZERO REFERENCES AFTER THIS POINT | |
3376 | /PAGE ZERO MAY CONTAIN USER CODE | |
3377 | /******************************************** | |
3378 | DCA I ZOFILE /ZERO OUT COMMAND DECODER AREA | |
3379 | ISZ ZOFILE | |
3380 | ISZ ZOUCNT | |
3381 | JMP .-3 | |
3382 | TAD I (CTLBLK+1 | |
3383 | CDF 0 | |
3384 | DCA I (MSTCDF | |
3385 | TAD CTL2 | |
3386 | DCA I (MSTADR /SET UP STARTING ADDRESS IN FIELD 0 | |
3387 | JMP LMOVRD | |
3388 | \fLNOGO, TAD CTL3 /ABOVE COMMENT DOESN'T APPLY TO NEXT 9 LINES | |
3389 | SPA CLA /ARE WE OVERLAYING THE KEYBOARD MONITOR? | |
3390 | TAD (5 /NO - RETURN TO NON-SAVING ENTRY | |
3391 | TAD [7600 | |
3392 | CDF 0 | |
3393 | DCA I (MSTADR | |
3394 | TAD ZCDIF0 | |
3395 | DCA I (MSTCDF | |
3396 | CLA CMA | |
3397 | LMOVRD, CDF 10 | |
3398 | DCA I (7700 /SET 7700 TO -1 IF NO GO | |
3399 | TAD I (CTLBLK+1 | |
3400 | CDF 0 | |
3401 | DCA I (JFIELD /SET UP PARAMETERS IN FIELD 0 | |
3402 | TAD CTL2 | |
3403 | DCA I (JSTART | |
3404 | TAD CTL3 | |
3405 | DCA I (JSBITS | |
3406 | LMOVLP, TAD COMBO | |
3407 | DCA I COMBPT | |
3408 | ISZ LMOVLP | |
3409 | ISZ COMBPT | |
3410 | ISZ COMBCT | |
3411 | JMP LMOVLP /MOVE THE READ OF THE LOADER OVERLAY INTO FIELD 0 | |
3412 | ZCDIF0, CDF CIF 0 | |
3413 | TAD OVLYFG | |
3414 | SZA CLA | |
3415 | JMP I (MREAD /LOADER OVERLAYED - GO READ OVERLAY | |
3416 | JMP I (MSTCDF /LOADER NOT OVERLAYED - WHY READ? | |
3417 | COMBPT, MREAD-1 | |
3418 | COMBCT, -7 | |
3419 | COMBO, 7607 | |
3420 | MREAD-1&177+4600 /JMS I .-1 | |
3421 | 1010 | |
3422 | 2000 | |
3423 | MTEMP+11 /LOCATION OF SCRATCH BLOCKS FOR LOADER OVERLAY | |
3424 | HLT | |
3425 | MSTCDF&177+5200 /JMP MSTCDF | |
3426 | CTL2, 0 | |
3427 | CTL3, 0 | |
3428 | OVLYFG, 0 | |
3429 | \fLOADWD, 0 | |
3430 | DCA C3 | |
3431 | TAD XFIELD | |
3432 | CLL RAR | |
3433 | TAD XFIELD | |
3434 | RTR | |
3435 | TAD (CORTAB-1 | |
3436 | DCA B2 | |
3437 | TAD ORIGIN | |
3438 | AND [7600 | |
3439 | CLL RTL | |
3440 | RTL | |
3441 | RTL | |
3442 | ISZ B2 | |
3443 | TAD (-14 | |
3444 | SMA | |
3445 | JMP .-3 | |
3446 | DCA CTL2 | |
3447 | CLL CML | |
3448 | RAL | |
3449 | ISZ CTL2 | |
3450 | JMP .-2 | |
3451 | JMS I (PUTWD | |
3452 | JMP I LOADWD | |
3453 | PAGE | |
3454 | \f *3200 | |
3455 | ERPCH, 0 | |
3456 | AND (77 /GET LOW ORDER 6 BITS | |
3457 | SZA | |
3458 | JMP NZCHAR | |
3459 | JMS ERR | |
3460 | FILMSG, TEXT /, FILE 0/ | |
3461 | NZCHAR, TAD (240 | |
3462 | AND (77 | |
3463 | TAD (240 /CONVERT TO ASCII | |
3464 | JMS LDRPCH /PRINT | |
3465 | JMP I ERPCH /AND RETURN | |
3466 | LDRPCH, 0 | |
3467 | TLS | |
3468 | TSF | |
3469 | JMP .-1 | |
3470 | CLA | |
3471 | JMP I LDRPCH | |
3472 | SHFT, 0 | |
3473 | CLA CLL CMA RTL | |
3474 | DCA C3 | |
3475 | CLA CLL CML RTL | |
3476 | TAD B1 | |
3477 | SHFTLP, DCA B3 | |
3478 | TAD I B3 | |
3479 | RAL | |
3480 | DCA I B3 | |
3481 | CLA CMA CML | |
3482 | TAD B3 | |
3483 | ISZ C3 | |
3484 | JMP SHFTLP | |
3485 | JMP I SHFT /NOTE: SHFT LEAVES AC NON-ZERO | |
3486 | \fERR, ONCE /CAN'T USE PAGE 0 LITERALS | |
3487 | CLA | |
3488 | CDF 10 | |
3489 | TAD I (FILPTR /ZERO CHAR GETS REPLACED BY "FILE #" | |
3490 | TAD (322 /MAGIC NUMBER | |
3491 | CLL CML RAR /AC NOW CONTAINS " #" | |
3492 | DCA FILMSG+3 | |
3493 | ERRLUP, TAD I ERR | |
3494 | SNA | |
3495 | JMP EOMESG /MESSAGE MUST BE EVEN NUMBER OF CHARS LONG | |
3496 | RTR | |
3497 | RTR | |
3498 | RTR | |
3499 | JMS ERPCH | |
3500 | TAD I ERR | |
3501 | JMS ERPCH | |
3502 | ISZ ERR | |
3503 | JMP ERRLUP | |
3504 | EOMESG, TAD (215 /TERMINATE MESSAGE WITH CR-LF | |
3505 | JMS LDRPCH | |
3506 | TAD (212 | |
3507 | JMS LDRPCH | |
3508 | ERTRN, JMP I (ABSLDR /RETURN TO LOADER STARTING ADDRESS | |
3509 | IOERR, JMS ERR | |
3510 | TEXT %I/O ERROR% | |
3511 | BADINP, JMS ERR | |
3512 | TEXT /BAD INPUT/ | |
3513 | BADCKS, JMS ERR | |
3514 | TEXT / BAD CHECKSUM/ | |
3515 | NULERR, JMS CTINIT | |
3516 | NOP | |
3517 | JMS ERR | |
3518 | TEXT /NO INPUT/ | |
3519 | \fLIOERR, JMS ERR | |
3520 | TEXT /SYSTEM I-O ERROR/ | |
3521 | OERR, JMS ERR | |
3522 | TEXT %NO /I!% | |
3523 | ||
3524 | CTINIT, 0 | |
3525 | CALONC, JMS I ERR /CALL ONCE-ONLY CODE | |
3526 | TAD (-30 | |
3527 | DCA C1 | |
3528 | TAD (CORTAB-1 | |
3529 | DCA LOADXR | |
3530 | CLA CMA | |
3531 | DCA I LOADXR | |
3532 | ISZ C1 | |
3533 | JMP .-3 | |
3534 | DCA LSTFLD | |
3535 | DCA I (LSTADR /V3 SET INITIAL STARTING ADDRESS TO 0 | |
3536 | DCA I (OVLYFG | |
3537 | DCA PG7400 | |
3538 | ISZ CTINIT | |
3539 | JMP I CTINIT | |
3540 | PAGE | |
3541 | \f | |
3542 | *CTLBLK+200 | |
3543 | ||
3544 | /CODE FOR OVERLAY OPTION IS HERE.IF /I IS NOT | |
3545 | /USED IMMEDIATELY, THIS CODE WILL PROBABLY BE DESTROYED, | |
3546 | /AS IT IS USED FOR A BUFFER | |
3547 | ||
3548 | SLASHO, CLA CMA | |
3549 | DCA I (OFLG /RE ENABLE /I | |
3550 | TAD I (HANDLR | |
3551 | DCA GLONK /ENTRY POINT TO HANDLER | |
3552 | TAD I (RECNO | |
3553 | DCA CCBLOK | |
3554 | CIF 0 | |
3555 | JMS I GLONK /READ IN CORE CONTROL BLOCK | |
3556 | 0110 | |
3557 | CCBPTR, CTLBLK | |
3558 | CCBLOK, 0 | |
3559 | JMP I (OERR /DATA FAILURE | |
3560 | TAD I CCBPTR /NO. SEGMENTS | |
3561 | CMA /TEST FOR BAD CORE IMAGE | |
3562 | AND L7740 | |
3563 | SZA CLA | |
3564 | JMP I (BADINP /NOT CORE IMAGE | |
3565 | TAD I CCBPTR | |
3566 | DCA SEGCNT | |
3567 | TAD I SGSTAD /THIS CODE IS NEW FOR V3D | |
3568 | / AND [70 /GET FIELD | |
3569 | CLL RTR | |
3570 | RAR | |
3571 | DCA I (LSTFLD | |
3572 | ISZ SGSTAD | |
3573 | TAD I SGSTAD | |
3574 | DCA I (LSTADR | |
3575 | ISZ SGSTAD | |
3576 | TAD I SGSTAD /GET JSW FROM SAVE FILE | |
3577 | AND [400 | |
3578 | DCA TEMP /PRESERVE /P | |
3579 | TAD I [MPARAM+1 | |
3580 | AND (7377 | |
3581 | TAD TEMP | |
3582 | DCA I [MPARAM+1 | |
3583 | TAD I SGSTAD | |
3584 | AND (3 /PRESERVE LAST 2 BITS | |
3585 | DCA TEMP | |
3586 | TAD I (MPARAM+2 | |
3587 | AND [7774 | |
3588 | TAD TEMP | |
3589 | DCA I (MPARAM+2 | |
3590 | ISZ SGSTAD | |
3591 | NEWSEG, TAD I SGSTAD /SEGMENT START ADDRESS | |
3592 | DCA ORIGIN | |
3593 | TAD I SGFDLT /FIELD AND LENGTH | |
3594 | AND L77 | |
3595 | DCA XFIELD | |
3596 | TAD I SGFDLT | |
3597 | AND [7700 | |
3598 | SNA /V3C | |
3599 | STL CLA RAR /AC4000 | |
3600 | DCA SEGLTH | |
3601 | TAD SEGLTH | |
3602 | TWOPG, TAD [7600 | |
3603 | SMA CLA /NO.. IS TWO PAGE SEGMENT LEFT? | |
3604 | TAD [7600 /YES..-400 TO WORD COUNT | |
3605 | TAD [7600 /NO.. -200 TO WORD COUNT | |
3606 | DCA WDCT | |
3607 | TAD SEGLTH | |
3608 | TAD [7600 /BUMP DOWN LENGTH LEFT | |
3609 | DCA SEGLTH | |
3610 | ||
3611 | ISZ CCBLOK /POINT TO NEXT DATA RECORD | |
3612 | TAD CCBLOK | |
3613 | DCA DATRC | |
3614 | DCA OLDT9 /MARK DIRECTORY DESTROYED | |
3615 | CIF 0 | |
3616 | JMS I GLONK /READ THE DATA RECORD IN | |
3617 | 0210 | |
3618 | 1400 /INTO 11400 | |
3619 | TEMP, | |
3620 | DATRC, 0 | |
3621 | JMP I (IOERR /DATA FAILURE | |
3622 | CLA CMA | |
3623 | TAD ORIGIN | |
3624 | AND [177 | |
3625 | TAD (1200 /SET UP INPUT POINTER | |
3626 | CHARPT=10 | |
3627 | DCA CHARPT | |
3628 | LOOPI, TAD I CHARPT | |
3629 | JMS I (LOADWD /MOST OF THE WORK | |
3630 | ISZ ORIGIN | |
3631 | L7400, 7400 /NOP | |
3632 | ISZ WDCT /FINISHED THIS BLOCK? | |
3633 | JMP LOOPI | |
3634 | JMS I (WRBUF /YES.. WRITE THE STUFF OUT | |
3635 | DCA I (BUFREC /SO THAT WRBUF DOESN'T SCREW US UP | |
3636 | TAD SEGLTH /V3C (REARRANGED) | |
3637 | SMA SZA /ALL PAGES DONE? | |
3638 | JMP TWOPG /NO, NEXT! (IF DONE, FALL INTO 'GTSEG') | |
3639 | ISZ SEGCNT /YES, ANY MORE SEGMENTS | |
3640 | SKP | |
3641 | JMP RENEW /RESET CCB POINTER FOR NEXT /I | |
3642 | CLA CLL CML RTL | |
3643 | TAD SGSTAD | |
3644 | DCA SGSTAD | |
3645 | CLA CLL CML RTL | |
3646 | TAD SGFDLT | |
3647 | DCA SGFDLT /POINT TO NEXT CCB ENTRIES | |
3648 | JMP NEWSEG | |
3649 | ||
3650 | GLONK, 0 /HANDLER ENTRY POINT HERE | |
3651 | WDCT, 0 | |
3652 | SEGCNT, 0 | |
3653 | SEGLTH, 0 | |
3654 | CTLBLK=3400 | |
3655 | ||
3656 | SGFDLT, CTLBLK+5 /FIELD AND LENGTH WORD | |
3657 | SGSTAD, CTLBLK+1 /SEGMENT START ADDRESS | |
3658 | ||
3659 | L7740, | |
3660 | RENEW, 7740 /USED TO CLEAR AC | |
3661 | L77, 77 /MIGHT OR MIGHT NOT SKIP | |
3662 | TAD (CTLBLK+1 | |
3663 | DCA SGSTAD | |
3664 | TAD (CTLBLK+5 | |
3665 | DCA SGFDLT | |
3666 | JMP I (NEWFIL | |
3667 | PAGE | |
3668 | \f *CORTAB /ONCE-ONLY CODE | |
3669 | ||
3670 | ONCE, 0 /ONCE-ONLY CODE TO CHECK FOR CORRECT MONITOR | |
3671 | DCA I WRBUF /DON'T CALL AGAIN | |
3672 | TAD [400 | |
3673 | TAD K7400 | |
3674 | SZA CLA | |
3675 | JMP OLDMON | |
3676 | TAD [7 | |
3677 | TAD M7 | |
3678 | SNA CLA | |
3679 | JMP I ONCE /THEY AGREE | |
3680 | OLDMON, TAD KERR | |
3681 | DCA I NEXFIL | |
3682 | JMS I PERR /THEY DON'T | |
3683 | TEXT /INCOMPATIBLE/ /MUST BE AN EVEN # OF CHARS LONG | |
3684 | CIF CDF 0 | |
3685 | JMP I K7605 | |
3686 | K7400, 7400 | |
3687 | PERR, ERR | |
3688 | K7605, 7605 | |
3689 | KERR, ERR&177+5600 | |
3690 | \f /PAGE 0 - TEMPORARIES AND LITERALS. | |
3691 | /LOCATIONS 0-3 ARE RESERVED FOR POINTERS TO KEY LOCATIONS | |
3692 | /IN THE MONITOR (SO THE CUSPS CAN GET AT THESE LOCATIONS) | |
3693 | ||
3694 | /LOCATIONS 4-6 ARE RESERVED FOR SYSTEM ODT FIELD 1 BREAKPOINTS | |
3695 | ||
3696 | *7 | |
3697 | OLDT9, 0 /POINTER TO DEVICE HANDLER OF DIRECTORY IN CORE | |
3698 | ||
3699 | *15 | |
3700 | XR1, 0 | |
3701 | XR2, 0 | |
3702 | XR, 0 | |
3703 | *20 /ENTRY TO MONITOR FROM A CALL TO 17700 - | |
3704 | /CAN BE DESTROYED AFTER IT IS EXECUTED | |
3705 | MSTART, TAD I T1 | |
3706 | DCA MACARG | |
3707 | TAD I [7700 | |
3708 | DCA I [MONITO | |
3709 | TAD I [SMCIF | |
3710 | DCA I T2 /FAKE A CALL TO "MONITO" | |
3711 | TAD I [MONITO | |
3712 | RAL | |
3713 | SNL SMA CLA | |
3714 | TAD I [SMCIF | |
3715 | TAD T3 | |
3716 | SNA CLA /CHECK FOR A CALL FROM 10000-11777 | |
3717 | JMP I [MERROR /YES - GIVE ERROR IMMEDIATELY | |
3718 | JMP I T4 /NO - SLIDE INTO MONITOR CODE | |
3719 | ||
3720 | *36 /POINTERS TO INTERNAL MONITOR LOCATIONS FOR "BUILD" | |
3721 | SDNAME /SYSTEM DEVICE NAME TABLE | |
3722 | SDVHND /DEVICE HANDLER ENTRY TABLE | |
3723 | \f *40 /LOCATIONS 20-37 RESERVED FOR CUSP SCRATCH SPACE | |
3724 | USERFG, 1 /MUST BE IN 40 - SEE CD LISTING | |
3725 | T1, MARG1 /MUST BE AT 41 | |
3726 | T2, FGETX | |
3727 | T3, -6213 | |
3728 | T4, MRENTR | |
3729 | T5, 0 | |
3730 | T6, 0 | |
3731 | T7, 0 | |
3732 | T8, 0 | |
3733 | T9, 0 | |
3734 | NAME, 0 | |
3735 | NFILES, 0 | |
3736 | ASFLAG, 0 | |
3737 | MACARG, 0 | |
3738 | EPASS, 0 | |
3739 | MERRNO, 4000 | |
3740 | MEOXIT, CIF 0 /RETURN FROM ENTER OVERLAY | |
3741 | JMS I [SHNDLR | |
3742 | 0210 | |
3743 | 1000 | |
3744 | MONTOR+2 /RESTORE LOCS 1000-1377 OF USR | |
3745 | HLT /HELP! | |
3746 | JMP I .+1 | |
3747 | MENTER /RESTART ENTER OPERATION COMPLETELY | |
3748 | \f $ | |
3749 | \f |