Add README.md
[pdp8.git] / sw / os8 / v3d / sources / system / dectapes / dectape7 / OS8.PA
CommitLineData
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
129PRINT, 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
138GETNAM, 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
147GTNMX, DCA NMCT
148 TAD I LXR
149 TAD [-240
150 SNA
151 JMP .-3
152 TAD [240
153 SKP
154GTNMLP, 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
171NINSRT, 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
190PERIOD, ISZ PRDSW
191 JMP EONAME
192 ISZ PN
193 TAD [4
194 JMP GTNMX
195EONAME, 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
214PRINLP, JMS PRWD
215 ISZ PRMESG
216 SKP
217 IFNZRO .-330 <CCLTRB,ERRR>
218PRMESG, 0
219 CLA
220 TAD I PRMESG
221 SZA
222 JMP PRINLP
223 TSF
224 JMP .-1
225 JMP I ERRET
226PRWD, 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
236PCHAR, 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
250KSV2A, SAVE2A
251SAVE2, 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
260KMNTRY, JMP I HANDAD /V3
261 0 /FREE LOCATION !
262PCRLF, JMS I [CRLF
263 IFNZRO .-403 <BTCHER,XXXX>
264
265KEYMON, 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
285CCLSW, PRQMRK /MODIFIED FOR CCL TO 'GETCCL'
286 IFNZRO CCLSW-435 <SEECCL,ZZ>
287
288ASSIGN, 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
301ASGN2, 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
311GDEVNO, 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
325ASNM1, 0;0
326HANDAD, KMINIT /V3
327 JMP I [KMER1
328 TAD ASNM1+1
329 JMP I GDEVNO
330\fGET, TAD [SKP
331RUN, DCA I [GETSW
332 TAD P6203
333 JMS I [RESET
334 DCA RUNSW
335 CLA IAC
336 JMS GDEVNO
337RGETPG, JMS RSCOMN
338 JMS I [MINCOR
339 TAD SENTER
340 CIF 10
341 JMS I SYSTEM
342 2
343PGNAME, NM1
344 MOVBUF /USED AS POINTER TO FIELD 1 SR
345 JMP I [KMER2
346 JMP I [RLOADR
347RSCOMN, 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
358SAVE, 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
373HNDLAD, /REPLACED WITH 1001 BY SAVE
374
375WRCTLB, 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
383ODT, 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
390START, 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
404STCOMN, 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
431RLOADR,
432RUN1, TAD I [PGNAME
433 DCA FILE
434 JMS I DEVHND
435 0101
436 CCB
437FILE, 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
456GETSW, 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
475RUN5A, 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
493RDCNT, 0 /BEFORE CCB
494 6200 /THEN WRITE THE WHOLE MESS OUT
495R7000, 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
508RUN5, 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
515KMER1, JMS I [PRNAME /DEVICE NOT AVAILABLE
516 JMS I [PRMESG
517 TEXT / NOT AVAILABLE/
518\f *1000
519/MUST BE AT 1000 FOR BATCH
520BEGLN, 0 /LINE BUFFER COULD BECOME "@
521 "I
522 "N
523 "I
524 "T
525KMINIT, 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.
553INTGO, 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
561RTWTPT, RUNTWT
562DCBF, 400
563/START
564PMSRST, 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
572MVCNT, MOVBUF-MVT3-1
573PDBUF, MOVBUF
574\fMVFROM, NOPUNCH
575 *7626
576 ENPUNCH
577MOVBUF, 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
587MVT1, BEGLN
588MVT2, SVLNBF
589MVT3, -112
590
591
592 *1077 /V3D
593INIT, 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
602CLR, KCC
603 JMP I .+1
604 CTRLC
605\f *1112
606 ENPUNCH
607
608DIGTLP, TAD I LXR
609STRTX, 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
623EONUM, 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
633ROT, 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
649KM6203, CDF CIF 0
650 JMP I [KEYMON
651
652ASDONE, CDF 10 /V3
653 DCA I TM1 /V3
654 JMP KM6203 /V3
655
656
657CRLF, 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
665M203, -203
666 PAGE
667\f/NOTE: XR=AMFLAG !
668
669 *1200
670 /TELETYPE INPUT ROUTINE
671XGLINE, KEYMON+1 /MUST BE AT 1200 FOR BATCH & CCL
672 TAD [".
673 JMS I PCH
674 DCA RBFLAG
675 TAD [BEGLN-1
676CHLM1, DCA LXR
677 DCA AMFLAG /ZERO ALTMODE FLAG
678CHLOOP, 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
698CINSRT, TAD NM1
699 DCA I LXR
700 TAD LXR
701 TAD [-BEGLN-110
702 SPA CLA
703 JMP CHLOOP
704CARRET, 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
715PRNT, 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
724CTRLC,
725CTRLU, TAD ["^
726 JMS I PCH
727 TAD NM1
728 TAD [100
729CLRLIN, JMS I PCH
730RBSPCL, JMS I [CRLF
731 JMP XGLINE+1
732
733ALTMOD, TAD ["$
734 DCA NM1
735 JMS PRNT
736 ISZ AMFLAG /NOTE ALTMODE
737 JMP CARRET+1
738RUBOUT, 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
751LBCKUP, 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
764SFND, TAD I SRCH
765 DCA TEMP1
766 JMP I TEMP1
767LFEED, 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
779PRQMRK, 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
786GETCCL, TAD [6003
787 JMS I [RESET
788 TAD [67 /CCL OVERLAY BLOCK IS BLOCK 67 ***
789 DCA OV
790 JMP DATE2
791DATE, TAD TMP
792 SNA CLA
793 JMP I [CCLSW-1 /USED TO BE JMP GETCCL
794DATE2, JMS I [SHNDLR /READ IN DATE OVERLAY
795 0201
796 0400
797OV, MSOVL2
798 JMP KMONER
799 JMP I [600
800 PAGE
801\f *1400
802SAVE2A, JMS I [SHNDLR
803 0201
804 400
805 MTEMP+10
806 JMP KMONER
807SAVE3, TAD [603
808 DCA XR
809 TAD I [600
810 DCA TM1
811 TAD TM1
812 JMS I [CCBTST /CHECK TM1 FOR VALID CCB
813SAVE3A, 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
827SFILE, 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"
835CLENGT, 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
848SAVE4, 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
861SAVE6, JMS LOADF0 /LOAD THE FIELD 0 SAVE AREA OVER THE I/O MONITOR
862SAVE7, 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
872SAVE7A, 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
888SAVE8A, DCA SCTL
889SAVE8, JMS SWRITE
890 ISZ I [600
891 JMP SAVE4
892SAVE12, 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
907F0OVLY, -1 /WILL BE 0 IF WE EXECUTE THIS CODE, OF COURSE
908 MTEMP+4
909 JMP KMONER
910 JMP I LOADF0
911
912SWRITE, 0
913 JMS I DEVHND
914SCTL, 4101
915SADR, 600
916SWFILE, 0
917 JMP SAVERR
918 TAD SCTL
919 JMS I PROTAT
920 TAD SWFILE
921 DCA SWFILE /BUMP RECORD NUMBER
922 JMP I SWRITE
923SAVERR, JMS I [PRMESG
924 TEXT /SAVE ERROR/
925PROTAT, ROTAT
926\f *1600
927KMER4, JMS I [PRMESG
928 TEXT /TOO FEW ARGS/
929CCBTST, 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
935CIERR, 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/
939GETOUT, 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,
953KMER2, 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
960RESET, 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
969RCHK, 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'
976KMER3, JMS I [PRMESG
977 TEXT /NO!!/
978
979RUN6, 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
987RUN7, 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
1000RFILE, FILE
1001ADCNT, 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
1007RUNTWT, 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
1010RUN9, 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
1016RCTL, SOFSET /V3D THESE ARE STORED INTO ONLY AFTER MOVING
1017RADR, OS78 /V3D
1018RUNFIL, 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
1027RERR, CIF 10
1028 JMS I RU7700
1029 7
1030 0 /TOTALLY MEANINGLESS
1031RUNADR, CCB+4
1032R7400, 7400
1033RMRD3, MREAD+3
1034RU7700, 7700
1035RUNHND, 0
1036 IFNZRO ROTAT-SVLNBF-112&4000 <ERROR>
1037 *1765 /MUST BE AT TOP OF PAGE
1038ROTAT, 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
1048RU37, 37
1049\f /OVERLAY TO KEYBOARD MONITOR FOR "SAVE" WITH ARGUMENTS
1050 *2000 /GOES INTO 400
1051SAVE1A, TAD (1603
1052 DCA X1
1053 DCA TM1
1054 CDF 10
1055 DCA I [OLDT9
1056S6203, 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
1068SNUMLP, 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
1114KMER5, JMS I [PRMESG
1115 TEXT /BAD ARGS/
1116LXRBAK, 0
1117 CLA CMA
1118 TAD LXR
1119 DCA LXR
1120 JMP I LXRBAK
1121SVDASH, TAD DASHFG
1122 SZA CLA
1123 JMP KMER5
1124 ISZ DASHFG
1125 JMS DASHSB
1126 JMP SNUMLP
1127SSTADR, 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
1139DASHSB, 0
1140 TAD TEMP1
1141 AND [7
1142 DCA OLD1
1143 TAD TEMP2
1144 AND [7600
1145 DCA OLD2
1146 JMP I DASHSB
1147DASHFG, 0
1148OLD1, 0
1149OLD2, 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
1167SSBITS, JMS I (SGTNUM-RSOVL1
1168 JMP I (KMER5-RSOVL1
1169 TAD TEMP2
1170 CDF 10
1171 DCA I (1603
1172 JMP I (SDLOOK-RSOVL1
1173SVEND, 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
1194OUTRLP, TAD (3
1195 TAD P1
1196 DCA P2
1197 TAD TEMP1
1198 DCA TEMP2
1199INERLP, 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
1210TIENTY, TAD P2
1211 TAD (3
1212 DCA P2 /INDEX TO NEXT ENTRY
1213SWNTRY, 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
1226SWITCH, 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
1233SWSUBR, 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
1243P1, 0
1244P2, 0
1245
1246\fSTARTX, 0
1247 TAD I LXR /ANYTHING LEFT?
1248 SNA
1249 JMP I STARTX /NO.. TAKE EMPTY RETURN
1250 SKP
1251ADGTLP, 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
1266AONUM, ISZ STARTX
1267 JMP I STARTX
1268
1269ROT2, 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
1279SORTED, 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
1292MRGLP, 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/
1309BUTTNG, 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
1321NOCMPR, ISZ X1
1322 ISZ X1
1323 ISZ LXR
1324NXTONE, 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
1339MERGLP, 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
1368NXTSEG, ISZ TEMP1
1369 JMP MERGLP
1370MOVECB, TAD (1577
1371 DCA LXR
1372 TAD (577
1373 DCA X1
1374 TAD [7600
1375 DCA TEMP1
1376CBMOVE, 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
1392DECIMB, 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
1404DATEXX, JMS DECIM
1405NUM2, DCA NUM2
1406 TAD NUM2
1407 TAD M40
1408 SMA CLA
1409 JMP BADNUM /DAY > 31
1410 JMS I GNAME
1411L30, 30 /NOTHING FOUND WILL GIVE ERROR LATER
1412/ DCA NUM1 /NUM1 IS INITIALLY 0
1413NEWLUP, 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
1448TSLUP, 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
1457L7177, 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
1465CNV, 0
1466 AND [77
1467 SNA
1468 JMP NUL
1469 TAD (-60
1470 SPA
1471 JMP BADNUM
1472 JMP I CNV
1473NUL, TAD TM1
1474 JMP GODE
1475
1476DECIM, 0
1477 JMS I GNAME
1478M40, -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
1495GODE, SZA
1496 JMP I DECIM
1497BADNUM, CLA /CRAP IN AC
1498 TAD [7605
1499 DCA ERRET
1500 JMS I [PRMESG
1501 TEXT /BAD DATE/
1502NUM1, 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
1527MONPTR, MONS-2600+600-1 /RELOCATES TO PAGE 600
1528 /MUST BE POSITIVE
1529
1530 PAGE
1531\f *3000 /MONITOR ERROR PROCESSOR - LOADS INTO 11400
1532DLYLPX, AND I 0
1533D7600, 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
1547MERCMN, 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
1561MEROLP, 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
1587NOEXPL, 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
1601USRERR, CLA CLL
1602 JMS I (FGET
1603 TAD (4060
1604 DCA I (UERTYP-1400
1605 TAD (UERRXR-MERRXR
1606 JMP MERCMN
1607MERPCH, 0
1608 TLS
1609 TSF
1610 JMP .-1
1611 CLA
1612 JMP I MERPCH
1613ZERO, 0
1614\fEPRINT, 0
1615 DCA T2
1616EPRLUP, 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
1626EPR, 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
1638MERRXR, TEXT \MONITOR ERROR 0 AT \
1639 MERTYP=MERRXR+7
1640
1641UERRXR, TEXT \USER ERROR 0 AT \
1642 UERTYP=UERRXR+5
1643
1644EXPLTBL,MON1-1400
1645 MON2-1400
1646 MON3-1400
1647 MON4-1400
1648 MON5-1400
1649 MON6-1400
1650 MON7-1400
1651
1652MON1, TEXT \CLOSE ERROR\
1653MON2, TEXT \DIRECTORY I/O ERROR\
1654\fMON3, TEXT \DEVICE HANDLER NOT IN CORE\
1655MON4, TEXT \ILLEGAL USR CALL\
1656MON5, TEXT \I/O ERROR ON SYS:\
1657MON6, TEXT \DIRECTORY OVERFLOW\
1658MON7, TEXT \RESERVED\
1659\f /EXECUTION TIME LOADER FOR MONITOR "CHAIN" COMMAND
1660 *3400 /EXECUTES IN FIELD 0 IN PAGE 7400
1661MCHNX, 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
1691MCHN1, 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
1703MCHN2, 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
1713MCHCTL, 0101 /1 RECORD INTO FIELD 0 STARTING FORWARDS
1714MCHADR, 7200
1715MCHREC, 0
1716 JMP CHERR /CHAIN ERROR
1717 TAD MCHCTL
1718MCHBMP, 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
1729MCHT1, 0
1730MCHFJM, MSTCDF&177+5200 /"JMP MSTCDF"
1731
1732CHERR, ISZ CHERR1
1733 JMP CHERR /LET TTY DIE DOWN
1734 ISZ CHERR2
1735 JMP CHERR
1736CHTADC, 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
1746CHERR2, -6
1747CHARS, "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
1775BERR, 7600
1776 JMS SYSSWP
1777 HLT
1778 JMP .-1
1779W6600, 6600
1780W7600, 7600
1781SYSSWP, 0
1782 TAD W6600
1783 DCA SYTM1
1784 TAD W7600
1785 DCA SYTM2
1786SWAPLP, 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
1798LDRCTL, 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
1809SYTM1, 0
1810SYTM2, 0
1811TMSY, 0
1812SYSHND, 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
1821MOFILE, ZBLOCK 17 /OUTPUT FILE TABLE - 7600-7616 (3 ENTRIES MAX)
1822 /5 WORDS PER ENTRY - DEVICE # AND FILE NAME
1823MIFILE, 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
1830MPARAM, 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
1838DVHNDL, 7607;7607;0;0;0;0;0
1839 0;0;0;0;0;0;0;0
1840MDATE, 0 /HOLDS THE CURRENT DATE- 4 BIT MONTH,
1841 /5 BIT DAY, 3 BIT YEAR FROM 1970
1842MGET, 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
1847PJSBTS, JSBITS /SERVES AS A HALT (WATCH IT!)
1848SCDCIF, 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
1868MONRD, CIF 0
1869 JMS SHNDLR
1870 610
1871 0
1872 MONTOR
1873SCOPE, HLT /BIT 4 IS A 1 IF CONSOLE IS A SCOPE
1874 JMP MSTART /START THE MONITOR UP IN PAGE 0
1875MRETRN, 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
1881SMCIF, 0
1882 JMP I MCALL1
1883\fMARG1, 0
1884 /TABLE OF USER DEVICE NAMES
1885 /ALSO USED BY SYSTEM ODT
1886
1887UDNAME, 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
1947JFIELD, 6203 /A CDF CIF N INSTRUCTION TO START THE JOB
1948JSTART, 7600 /THE STARTING ADDRESS
1949JSBITS, 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
1956SOFSET, 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
1967MREAD, JMS I .-1
1968 0
1969 0
1970 0
1971 HLT
1972MSWITC, 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
1977OS78, HLT /BIT 4 IS A 1 IF OS/78 IS RUNNING
1978MSTCDF, CDF CIF 0
1979 TCF /EXIT WITH A CLEAR CONSCIENCE(ALSO A CLEAR FLAG)
1980 JMP I .+1
1981MSTADR, 0
1982SBLOCK, 0
1983BIPCCL, 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
1990KMONER, 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
1999LXR, PMSRST-1
2000X1, MSWITC /THESE TWO ARE USED AT INITIALIZATION.
2001ADR1, RUN8-1
2002ADR2, RUN8&177+7377 /USED DURING R, AND RUN COMMANDS
2003XR,
2004AMFLAG, 0 /1 MEANS SAW ALTMODE
2005 /MUST NOT MOVE FOR CCL AND BATCH
2006
2007 *20
2008RBFLAG, 0 /MUST BE AT LOCATION 20
2009TEMP2, -7
2010SYSTEM, 7700
2011PCH, PRINT
2012GLINE, XGLINE
2013GNAME, GETNAM
2014DEVHND, 7607
2015FUDJMP, MSTCDF&177+5200
2016P6203, 6203
2017TMP, PATCHLEV /MONITOR PATCH LEVEL MUST BE AT LOC 31 FOR CCL
2018PGTOUT, GETOUT
2019ERRET, 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
2025NM1, 203 /THIS MUST BE A 203!
2026BATCH, /ENTRY TO READ NEW BATCH MONITOR
2027NM2, JMS I [7607 /THE BATCH INITIALIZER ALTERS SOME VALUES
2028NM3, 610 /IN THIS LIST...THIS ONE**********
2029NM4, 0 /THIS ONE*****GETS ADDRESS OF BOS.
2030TEMP1, 13 /******GETS RECORD OF BOS*****
2031TM1, SKP CLA /ERROR. DON'T RUN BATCH
2032TMP1, JMP BCHGO
2033NMCT, DCA I KM1 /CLEAR BATCH FLAG.
2034PN, JMP KMONER
2035PRDSW,
2036KM1, 7777
2037BCHGO,
2038RUNSW, CIF CDF 0
2039DIGFLG, JMP I .+1
2040SENTER, KMINIT /GETS ENTRY POINT (BOS)
2041KRCHK, 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
2051MONITO, 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
2057MRENTR, 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
2067FGET, 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
2083MRSETP, MRESET
2084FPUT, 0 /MUST FOLLOW LAST ADDRESS IN JUMP TABLE
2085FPUTX, 0
2086 DCA I MONITO
2087 CDF CIF 10
2088JMPMAX, JMP I FPUT
2089MEOERR, ISZ MERRNO
2090MIOERR, ISZ MERRNO
2091MERROR, ISZ MERRNO
2092 ISZ MERRNO
2093 ISZ MERRNO
2094 ISZ MERRNO
2095MERR, 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
2122MCHAIN, 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
2133MLNOTF, CLA
2134 ISZ MONITO
2135MNEXT, TAD USERFG
2136MESCAP, 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
2149MESCPR, CLL CML
2150 JMP MESCAP+1
2151FGETW, 0
2152 DCA FPUT
2153FGETX, 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
2168MCDCTL, 0
2169 0
2170 MTEMP+4
2171 JMP MIOERR
2172 JMP I CDSWAP
2173
2174EOVFLO, CIF 0
2175 JMS I [SHNDLR
2176 0111
2177ME1000, 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?
2185MASGN, CLA IAC
2186MASSIGN, 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
2202NOHASH, TAD [UDNAME-1 /SEARCH USER NAME TABLE FIRST
2203DSRCH, DCA XR
2204 TAD [-17
2205 DCA T2
2206DSRCLP, 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
2218DSFND, 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
2223DFOUND, 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
2253DVHCTL, 0 /READ ONE OR TWO PAGES INTO FIELD 0
2254DVHLOC, 0
2255DVHREC, 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
2260DVHCLP, 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
2277NOTINC, ISZ T4
2278 JMP DVHCLP
2279AFINIS, 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
2290MCKDEV, 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>
2308SDNAME, 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
2313MLOOKUP,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
2318LRETRN, TAD T5
2319 CIA
2320 TAD I [DORG /CONVERT T5 TO A RECORD NUMBER
2321ERETRN, JMS I [FPUT
2322 ISZ I [MONITO
2323 TAD T6
2324 CIA /STORE FILE LENGTH AS A NEGATIVE NUMBER
2325MRTRN, JMS I [FPUT /THIS CODE IS JUMPED TO BY SEVERAL ROUTINES
2326MRTRN2, ISZ I [MONITO
2327 JMP I [MLNOTF
2328
2329MRDCAT, 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
2352MRDREN, 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
2369INLRDY, 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
2378MDSRCH, 0
2379FSRCLP, 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
2389SRCWDL, 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
2406NXTFIL, TAD T6
2407 IAC
2408 JMS BUMPXR /SKIP REST OF NAME AND GARBAGE WORDS
2409SKPMTF, 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
2420BUMPXR, 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
2428MWRCAT, 0
2429 TAD [4210
2430 DCA CATCTL
2431 CIF 0
2432 JMS I T9
2433CATCTL, 4210 /WRITE 2 RECORDS FROM FIELD 1
2434 1400
2435MCATRC, 1
2436JMPME2, JMP I [MERROR+2 /CANNOT REWRITE CATALOG
2437 JMP I MWRCAT
2438
2439 IFNZRO .-772 <REASSEMBLE CONFIG> /USED TO BE 766
2440SDVHND, 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.
2446MENTER, 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
2465MELOOP, 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
2471MELEND, 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
2498EFINUP, 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
2508MELP2, 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
2573MNOCHG, 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
2585MCLOSE, 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
2620NODLET, 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
2638EOCLOS, JMS CONSOL /CONSOLIDATE THE DIRECTORY
2639 TAD [7770
2640 AND I T8
2641 DCA I T8
2642 SKP
2643CRETRN, 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.
2649CONSOL, 0
2650 TAD [DPROPR-1
2651 DCA XR
2652 TAD I [DCOUNT
2653 DCA T7 /T7 = FILE COUNT
2654CONLP, 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
2664SQCOMN, 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
2671CONLPT, ISZ T7
2672 JMP CONLP /MORE FILES - KEEP PLUGGING
2673 JMP I CONSOL /RETURN FROM CONSOLIDATOR
2674CONMTF, 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
2689SQTRIV, CLA CMA CLL RAL
2690 JMP SQCOMN /SQUISH OUT 2 WORDS
2691\fMRESET, TAD [-17
2692 DCA T3
2693MRSETL, 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
2710SQUISH, 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
2716SQLOOP, 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
2727DCOUNT, -2 /TWO ENTRIES
2728DORG, MFREE /FILE STORAGE STARTS AT BLOCK "MFREE"
2729DLINK, 0 /THIS IS THE ONLY DIRECTORY RECORD
2730DFLAG, 0 /THERE ARE NO OPEN OUTPUT FILES ON THIS DEVICE
2731DWASTE, -1 /# OF WASTED WORDS PER ENTRY
2732DPROPR, 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
2744MSEGLM, -7 /# DIRECT. SEGS
2745NEWLEN, -10
2746MEOVLP, 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
2772MELP3, 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
2793MECOMN, 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
2812MELAST, 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
2842MSKIPF, 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)
2849MSKPLP, 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
2857MEOMTY, TAD I XR
2858 TAD MEOCNT
2859 DCA MEOCNT
2860 ISZ MNOFIL
2861 JMP MSKPLP
2862 JMP I MSKIPF
2863\fMEOCNT, 0
2864MEFCNT, 0
2865METMP1, 0
2866METMP2, 0
2867MNOFIL, 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
2890ABSLDR, JMS I (CTINIT
2891 JMS I (CTINIT
2892 JMP CALLCD
2893 JMP NOCD
2894NEXTCD, JMS I (NEXFIL
2895CALLCD, JMS I [200
2896 5 /COMMAND DECODE
2897 0216 /ASSUMED EXTENSION IS .BN
2898NOCD, 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
2906LD7400, 7400
2907 TAD (MIFILE
2908 DCA FILPTR
2909 JMS I (SETADR /GET THE STARTING ADDRESS IF IT APPEARS ON THE LINE
2910NEWFIL, 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
2925HANDLR, 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
2950JMPX, 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
2957PBUFFR, BUFFER
2958RECNO, 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
2974CHAR3, 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
2985CHAR2, TAD I CHPTR
2986 AND LD7400
2987 DCA CHTMP
2988 ISZ CHPTR
2989CHAR1, TAD I CHPTR
2990GCHCOM, AND (377
2991 ISZ GETCH
2992 JMP I GETCH
2993RERROR, SPA CLA
2994 JMP I (IOERR /AN ACTUAL READ ERROR - AMAZING!
2995 ISZ REOF
2996 JMP RECNO+2
2997REOF, 0
2998CHCNT, 0
2999CHPTR, 0
3000CHTMP, 0
3001RCDCNT, 0
3002OFLG, -1 /SWITCH FOR /O OPTION
3003 PAGE
3004\f *2200
3005PUTWD, 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
3027LCOMPR, TAD ORIGIN
3028 RTL
3029 RTL
3030 RAL
3031 AND [17
3032 TAD (MTEMP
3033RLCOMN, DCA PGTMP
3034 TAD BUFREC
3035 CIA
3036 TAD PGTMP
3037 SNA CLA
3038 JMP DONTWR
3039 JMS WRBUF
3040WRIBUF, 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
3046PGTMP, 0
3047 JMP I (LIOERR
3048DONTWR, 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
3061PUTIT, TAD XFIELD
3062 TAD [7770 /CONSTRUCT CDF N FOR PROPER FIELD
3063PUTIT2, TAD CDF10
3064 DCA .+1
3065M7, -7
3066 TAD C3
3067 DCA I ORGX
3068CDF10, CDF 10
3069 JMP I PUTWD
3070FLD0, 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.
3077WRBUF, CALONC
3078 TAD BUFREC
3079 SNA
3080 JMP I WRBUF
3081 CIF 0
3082 JMS I [SHNDLR
3083 4210
3084PTRBFR, 1400
3085BUFREC, 0
3086 JMP I (LIOERR
3087 DCA BUFREC
3088 /BAD I/O ON SYSTEM DEVICE
3089 JMP I WRBUF
3090\fORGX,
3091NEXFIL, 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
3102CORTAB, 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
3107ITSOVR, JMS ASSEMB
3108 CIA
3109 TAD LCKSUM
3110SZAIN, SZA CLA
3111 JMP I (BADCKS
3112 TAD I [MPARAM+1
3113 AND L40
3114 SNA CLA
3115 JMP I (NEWFIL
3116LOADER, 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
3131LEADER, JMS I (GETCH
3132 JMP I (NEWFIL
3133 SNA
3134 JMP LOADER+1
3135 TAD [-200
3136 SNA
3137 JMP LEADER
3138NEWWD, 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
3159L40, 40
3160GETNXT, 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
3173FIELDW, 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
3192NOTXP, CLA
3193 TAD LCKSUM
3194 SNA CLA
3195 JMP LOADER
3196 JMP I (BADINP
3197LCKSUM, 0
3198CTLZ, 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
3220BUILD, 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
3241FLDLP, 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
3248MTLOOP, JMS I (SHFT
3249 SNL CLA
3250 JMP INUSE
3251 TAD LOWERA
3252MTRSME, TAD [200
3253 DCA LOWERA
3254 ISZ C2
3255 JMP MTLOOP
3256 JMP FLDOVR
3257INUSE, 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
3270ENDRGN, 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
3309ORG200, 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
3321NOORG, DCA I (CTLBLK+2
3322 JMP I (LGTOUT /WRITE CONTROL BLOCK AND EXIT
3323FIELDB, 0
3324\fUPPERA,
3325SETADR, 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
3334LOWERA, 0
3335LSTADR, 0
3336 PAGE
3337\f *3000
3338ZOFILE, MOFILE
3339ZOUCNT, -47
3340LGTOUT, 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
3372LKICKM, 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
3397LMOVRD, 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
3406LMOVLP, 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
3412ZCDIF0, 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?
3417COMBPT, MREAD-1
3418COMBCT, -7
3419COMBO, 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
3426CTL2, 0
3427CTL3, 0
3428OVLYFG, 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
3455ERPCH, 0
3456 AND (77 /GET LOW ORDER 6 BITS
3457 SZA
3458 JMP NZCHAR
3459 JMS ERR
3460FILMSG, TEXT /, FILE 0/
3461NZCHAR, TAD (240
3462 AND (77
3463 TAD (240 /CONVERT TO ASCII
3464 JMS LDRPCH /PRINT
3465 JMP I ERPCH /AND RETURN
3466LDRPCH, 0
3467 TLS
3468 TSF
3469 JMP .-1
3470 CLA
3471 JMP I LDRPCH
3472SHFT, 0
3473 CLA CLL CMA RTL
3474 DCA C3
3475 CLA CLL CML RTL
3476 TAD B1
3477SHFTLP, 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
3493ERRLUP, 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
3504EOMESG, TAD (215 /TERMINATE MESSAGE WITH CR-LF
3505 JMS LDRPCH
3506 TAD (212
3507 JMS LDRPCH
3508ERTRN, JMP I (ABSLDR /RETURN TO LOADER STARTING ADDRESS
3509IOERR, JMS ERR
3510 TEXT %I/O ERROR%
3511BADINP, JMS ERR
3512 TEXT /BAD INPUT/
3513BADCKS, JMS ERR
3514 TEXT / BAD CHECKSUM/
3515NULERR, JMS CTINIT
3516 NOP
3517 JMS ERR
3518 TEXT /NO INPUT/
3519\fLIOERR, JMS ERR
3520 TEXT /SYSTEM I-O ERROR/
3521OERR, JMS ERR
3522 TEXT %NO /I!%
3523
3524CTINIT, 0
3525CALONC, 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
3548SLASHO, 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
3557CCBPTR, CTLBLK
3558CCBLOK, 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
3591NEWSEG, 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
3602TWOPG, 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
3619TEMP,
3620DATRC, 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
3628LOOPI, TAD I CHARPT
3629 JMS I (LOADWD /MOST OF THE WORK
3630 ISZ ORIGIN
3631L7400, 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
3650GLONK, 0 /HANDLER ENTRY POINT HERE
3651WDCT, 0
3652SEGCNT, 0
3653SEGLTH, 0
3654CTLBLK=3400
3655
3656SGFDLT, CTLBLK+5 /FIELD AND LENGTH WORD
3657SGSTAD, CTLBLK+1 /SEGMENT START ADDRESS
3658
3659L7740,
3660RENEW, 7740 /USED TO CLEAR AC
3661L77, 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
3670ONCE, 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
3680OLDMON, 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
3686K7400, 7400
3687PERR, ERR
3688K7605, 7605
3689KERR, 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
3697OLDT9, 0 /POINTER TO DEVICE HANDLER OF DIRECTORY IN CORE
3698
3699 *15
3700XR1, 0
3701XR2, 0
3702XR, 0
3703 *20 /ENTRY TO MONITOR FROM A CALL TO 17700 -
3704 /CAN BE DESTROYED AFTER IT IS EXECUTED
3705MSTART, 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
3724USERFG, 1 /MUST BE IN 40 - SEE CD LISTING
3725T1, MARG1 /MUST BE AT 41
3726T2, FGETX
3727T3, -6213
3728T4, MRENTR
3729T5, 0
3730T6, 0
3731T7, 0
3732T8, 0
3733T9, 0
3734NAME, 0
3735NFILES, 0
3736ASFLAG, 0
3737MACARG, 0
3738EPASS, 0
3739MERRNO, 4000
3740MEOXIT, 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