3 <DEFINE SAV ("OPTIONAL" (FN "<MIM>MIMOC20.EXE")
4 "AUX" FIL FILLEN REC (DIR "") TCH
5 (BUF <ISTRING 100>) JCL-STR REM-STR N1
6 GM (NM2 "MUD") SNM (OUTCHAN .OUTCHAN)
7 (AUTO-PREC <>) (THINGS (T)) (TTHINGS .THINGS) WDATE)
8 #DECL ((SNM NM2) <SPECIAL STRING> (OUTCHAN) CHANNEL (BUF) STRING
9 (FN) <OR STRING FALSE>)
13 <SETG SURVIVOR-MODE <SET DOC <SETG GLUE-MODE <SETG INT-MODE <>>>>>>
14 <COND (<AND .FN <=? <SAVE .FN> "SAVED">> T)
16 <COND (<SET JCL-STR <READJCL>>
17 <COND (<SET REM-STR <MEMQ !\/ .JCL-STR>>
18 <SET JCL-STR <SUBSTRUC .JCL-STR 0
20 <LENGTH .REM-STR>>>>)>
21 <SET FIL <LEX .JCL-STR <LENGTH .JCL-STR>>>
23 <COND (<SET TCH <OPEN "READ" <1 .FIL>>>
24 <SET N1 <CHANNEL-OP .TCH NM1>>
32 <SET REM-STR <LPARSE <REST .REM-STR>>>
35 <COND (<TYPE? .TOKEN ADECL>
36 <COND (<OR <==? <1 .TOKEN> P>
39 (<TYPE? <2 .TOKEN> ATOM>
43 <SET TOKEN <2 .TOKEN>>)>
48 <COND (<OR <==? .TOKEN G>
70 <SETG SURVIVOR-MODE T>)
94 <SET FILLEN <READSTRING .BUF .INCHAN "
\e">>
95 <SET FIL <LEX .BUF .FILLEN>>
97 <COND (<SET TCH <OPEN "READ" <1 .FIL>>>
98 <SET N1 <CHANNEL-OP .TCH NM1>>
108 <COND (<SET DOC <MEMQ <TYI> "YyTt ">>
112 <PRINC " [No Listing]
114 <COND (<=? .N1 "BOOT">
115 <PRINC " [Boot mode]">
117 <SETG BOOT-MODE <SETG INT-MODE T>>)
119 <PRINC "Interpreter: ">
120 <COND (<MEMQ <TYI> " YyTt">
121 <PRINC " [Interpreter Code]">
126 <PRINC " [User Code]">)>
127 <COND (<=? .FIL "MSG"> <SETG GC-MODE T>)>
131 <COND (<MEMQ <TYI> " YyTt">
133 <COND (,INT-MODE <SETG SURVIVOR-MODE T>)>
140 <COND (<MEMQ <TYI> " YyTt">
142 <PRINC " [Verbose]]">)
144 <PRINC " [No Verbose]">
147 <PRINC "Things to do: ">
149 <COND (<==? <NEXTCHR> <ASCII *33*>>
152 <SET TTHINGS <REST <PUTREST .TTHINGS
154 <SETG GLUE-MODE .GM>)>)>
155 <COND (<AND <ASSIGNED? PRECOMPILED> .PRECOMPILED .AUTO-PREC
156 <SET TCH <OPEN "READ" .PRECOMPILED>>
157 <SET WDATE <CHANNEL-OP .TCH WRITE-DATE>>>
160 <COND (<SET TCH <OPEN "READ" .N1>>
161 <COND (<G? .WDATE <CHANNEL-OP .TCH WRITE-DATE>>
163 "Precompiled is more recent than source.">
167 <SET PACKAGE-MODE .N1>
168 <MAPF <> ,EVAL <REST .THINGS>>
180 <DEFINE LEX (BUF LEN)
181 #DECL ((BUF) STRING (LEN) FIX)
182 <SET BUF <SUBSTRUC .BUF 0 .LEN <REST .BUF <- <LENGTH .BUF> .LEN>>>>
183 <REPEAT ((L ("")) CHR (LS <>))
186 <PUTREST <REST .L <- <LENGTH .L> 1>> (<STRING .LS>)>)>
188 <COND (<MEMQ <SET CHR <1 .BUF>> " ,
191 <SET LS <SUBSTRUC .LS 0 <- <LENGTH .LS><LENGTH .BUF>>>>
192 <PUTREST <REST .L <- <LENGTH .L> 1>> (.LS)>
196 <SET BUF <REST .BUF>>>>