COMBAT, MUDCOM, and bootstrapper.
[pdp10-muddle.git] / <sys.unsupported> / mudsub.mid.2
1 TITLE SUBSYS -- Tops-20 Muddle Subsystem Bootstrapper
2
3         .DECSAV
4
5         O=0
6         A=1
7         B=2
8         C=3
9         D=4
10         E=5
11
12         LOC     140
13
14 GTJFNB: 100000,,0
15         .NULIO,,.NULIO
16         0
17         0
18 JOBPTR: 440700,,JOBNAM
19         -1,,[ASCIZ /SAVE/]
20         0
21         0
22         0
23
24 SVNSAV: 0
25 JOBNAM: ASCIZ   /MUDDLE/
26
27 START:  RESET
28         SETZ    A,
29         RSCAN
30          JFCL
31         JUMPE   A,NOJCL                 ; NO JCL, FLUSH
32         MOVN    C,A
33         MOVEI   A,.PRIIN
34         MOVE    B,[440700,,SAVFIL]
35         SIN                             ; READ JCL
36
37         MOVE    B,[440700,,SAVFIL]
38         MOVE    D,JOBPTR
39 NAMLOP: ILDB    B
40         CAIG    40
41          JRST   NAMDON
42         IDPB    O,D
43         JRST    NAMLOP
44
45 NAMDON: MOVEI   O,0
46         IDPB    O,D
47         MOVEM   B,SVNSAV
48         ILDB    O,B
49         CAIL    O,40
50          JRST   .-2
51         MOVEI   O,0
52         DPB     O,B
53         MOVE    A,JOBNAM
54         CAME    A,[ASCII /MUDSU/]
55          JRST   OTHER
56         MOVE    A,[ASCII /MUDDL/]
57         MOVEM   A,JOBNAM
58         MOVE    A,[ASCIZ /E/]
59         MOVEM   A,JOBNAM+1
60 OTHER:  MOVEI   A,GTJFNB
61         MOVE    B,SVNSAV
62         GTJFN
63          JRST   NOSAVE
64         MOVEI   0,(A)                   ;JFN TO SAVE FILE
65         TLZ     A,-1
66         MOVE    B,[440000,,240000]
67         OPENF                           ; HAS TO BE OPEN
68          JRST   NOSAV1
69         BIN
70         MOVE    D,B
71 ; set access back to beginning
72         MOVEI   B,0
73         SFPTR
74          HALTF
75 ; create muddle version number
76         MOVE    B,[440700,,FILE]
77         MOVE    C,[440700,,D]
78         ILDB    E,B
79         CAIE    E,"X    ; "X" SIGNALS START OF VERSION NUMBER
80          JRST   .-2
81 VERLUP: ILDB    E,C
82         CAIN    E,40    ; SPACE SIGNALS END OF VERSION
83          JRST   RDMDL
84         DPB     E,B
85         IBP     B
86         JRST    VERLUP
87
88 ; now try to read it
89 RDMDL:  HRLZI   A,100001
90         MOVE    B,[440700,,FILE]
91         GTJFN                           ; JFN TO INTERPRETER
92          JRST   NOMDL
93         HRLI    A,400000
94         MOVE    BLTPTR,[LOADGO,,B]
95         BLT     BLTPTR,BLTPTR
96         JRST    B
97
98 LOADGO: GET                             ; LOAD INTERPRETER
99         MOVEI   A,400000
100         GEVEC                           ; CONS STARTING ADDRESS
101         JRST    1(B)                    ; JRST TO START+1 IN INTERPRETER
102
103 BLTPTR=.-LOADGO+1
104
105 \f
106 ; junk past here is only used if there are errors
107 NOJCL:  HRROI   A,[ASCIZ /You must specify the SAVE file to load.
108 /]
109         PSOUT
110 DEATH:  HALTF
111         JRST    .-1
112
113 NOSAVE: MOVE    B,A
114         HRROI   A,[ASCIZ /Can't find SAVE file? (/]
115         PSOUT
116         MOVE    A,SVNSAV
117 NOFILE: PSOUT
118         HRROI   A,[ASCIZ /): /]
119         PSOUT
120         JRST    ERPRNT
121
122 NOSAV1: MOVE    B,A
123         HRROI   A,[ASCIZ /Can't OPENF SAVE file? (/]
124         PSOUT
125         HRROI   A,SAVFIL
126         JRST    NOFILE
127
128 NOMDL:  MOVE    B,A
129         HRROI   A,[ASCIZ /No Muddle Interpreter? (/]
130         PSOUT
131         HRROI   A,FILE
132         JRST    NOFILE
133
134 ERPRNT: HRRZI   A,-1
135         HRLI    B,400000
136         MOVEI   C,0
137         ERSTR           ; PRINT ERROR
138          HALTF  ;UNDEFINED ERROR.
139          HALTF  ;CHOMPING DEST.
140          HALTF  ;WON.
141         JRST    DEATH
142
143 FILE:   ASCIZ /PS:<MDL>MDLXXX.EXE/
144 SAVFIL: BLOCK 20.
145
146         END     START