Commit | Line | Data |
---|---|---|
91c02992 KT |
1 | / bas1 -- compile |
2 | ||
3 | compile: | |
4 | clr forp | |
5 | mov $space,r4 | |
6 | tst lineno | |
7 | beq 1f | |
8 | rts pc | |
9 | 1: | |
10 | jsr pc,nextlin | |
11 | br 1f | |
12 | mov lineno,r0 | |
13 | jsr pc,getloc | |
14 | mov r4,4(r1) | |
15 | jsr pc,statement | |
16 | br .+2 | |
17 | inc lineno | |
18 | cmp r4,$espace-20. | |
19 | blo 1b | |
20 | jsr r5,error | |
21 | <out of code space\n\0>; .even | |
22 | 1: | |
23 | tst forp | |
24 | bne 2f | |
25 | mov $loop,(r4)+ | |
26 | rts pc | |
27 | ||
28 | singstat: | |
29 | clr forp | |
30 | mov $exline,r4 | |
31 | jsr pc,statement | |
32 | br 1f | |
33 | cmp -2(r4),$_asgn | |
34 | beq 1f | |
35 | mov $_print,(r4)+ | |
36 | mov $_nline,(r4)+ | |
37 | 1: | |
38 | tst forp | |
39 | bne 2f | |
40 | cmp r4,$eexline | |
41 | blo 1f | |
42 | jsr r5,error | |
43 | <out of code space\n\0>; .even | |
44 | 1: | |
45 | mov $loop,(r4)+ | |
46 | mov r4,exprloc | |
47 | mov $exline,r4 | |
48 | jmp execute | |
49 | 2: | |
50 | jmp forer | |
51 | ||
52 | statement: | |
53 | mov $line,r3 | |
54 | movb (r3)+,r0 | |
55 | jsr pc,digit | |
56 | br stat1 | |
57 | dec r3 | |
58 | jsr r5,atoi; nextc | |
59 | cmp r0,$' / | |
60 | beq 1f | |
61 | mov $line,r3 | |
62 | movb (r3)+,r0 | |
63 | br stat1 | |
64 | 1: | |
65 | mov $_line,(r4)+ | |
66 | mov r1,(r4)+ | |
67 | ||
68 | stat1: | |
69 | jsr pc,skip | |
70 | cmp r0,$'\n | |
71 | bne .+4 | |
72 | rts pc | |
73 | mov r3,-(sp) | |
74 | jsr pc,alpha | |
75 | br 1f | |
76 | jsr pc,name | |
77 | br 1f | |
78 | tst (sp)+ | |
79 | jsr pc,skip | |
80 | dec r3 | |
81 | jmp *2f(r1) | |
82 | 2: | |
83 | stlist | |
84 | stdone | |
85 | strun | |
86 | stprint | |
87 | stdisp | |
88 | stif | |
89 | stgoto | |
90 | streturn | |
91 | stfor | |
92 | stnext | |
93 | stoctl | |
94 | stdraw | |
95 | steras | |
96 | ||
97 | 1: | |
98 | mov (sp)+,r3 | |
99 | dec r3 | |
100 | jsr pc,expr | |
101 | cmp r0,$'\n | |
102 | bne joe | |
103 | add $2,(sp) | |
104 | rts pc | |
105 | ||
106 | stlist: | |
107 | cmp r0,$'\n | |
108 | bne 1f | |
109 | clrf r0 | |
110 | jsr pc,const | |
111 | movif $77777,r0 | |
112 | jsr pc,const | |
113 | br 2f | |
114 | 1: | |
115 | jsr pc,expr | |
116 | cmp r0,$'\n | |
117 | bne 1f | |
118 | mov $_dup,(r4)+ | |
119 | br 2f | |
120 | 1: | |
121 | dec r3 | |
122 | jsr pc,expr | |
123 | cmp r0,$'\n | |
124 | bne joe | |
125 | 2: | |
126 | mov $_list,(r4)+ | |
127 | rts pc | |
128 | ||
129 | stdone: | |
130 | cmp r0,$'\n | |
131 | bne joe | |
132 | mov $_done,(r4)+ | |
133 | rts pc | |
134 | ||
135 | strun: | |
136 | cmp r0,$'\n | |
137 | bne joe | |
138 | mov $_run,(r4)+ | |
139 | rts pc | |
140 | ||
141 | stdisp: | |
142 | mov $_sdisp,(r4)+ | |
143 | jsr pc,stprint | |
144 | mov $_fdisp,(r4)+ | |
145 | rts pc | |
146 | ||
147 | stprint: | |
148 | jsr pc,skip | |
149 | cmp r0,$'\n | |
150 | beq 2f | |
151 | cmp r0,$'" | |
152 | beq 1f | |
153 | dec r3 | |
154 | jsr pc,expr | |
155 | mov $_print,(r4)+ | |
156 | dec r3 | |
157 | br stprint | |
158 | 1: | |
159 | mov $_ascii,(r4)+ | |
160 | inc r3 | |
161 | 1: | |
162 | movb (r3)+,(r4) | |
163 | cmpb (r4),$'" | |
164 | beq 1f | |
165 | cmpb (r4)+,$'\n | |
166 | bne 1b | |
167 | br joe | |
168 | 1: | |
169 | add $2,r4 | |
170 | bic $1,r4 | |
171 | movb (r3)+,r0 | |
172 | br stprint | |
173 | 2: | |
174 | mov $_nline,(r4)+ | |
175 | rts pc | |
176 | ||
177 | stif: | |
178 | jsr pc,expr | |
179 | mov $_if,(r4)+ | |
180 | mov r4,-(sp) | |
181 | tst (r4)+ | |
182 | jsr pc,stat1 | |
183 | br .+2 | |
184 | mov (sp)+,r1 | |
185 | mov r4,(r1) | |
186 | rts pc | |
187 | ||
188 | stgoto: | |
189 | jsr pc,expr | |
190 | mov $_goto,(r4)+ | |
191 | rts pc | |
192 | ||
193 | streturn: | |
194 | cmp r0,$'\n | |
195 | beq 1f | |
196 | jsr pc,expr | |
197 | cmp r0,$'\n | |
198 | bne joe | |
199 | br 2f | |
200 | 1: | |
201 | clrf r0 | |
202 | jsr pc,const | |
203 | 2: | |
204 | mov $_return,(r4)+ | |
205 | rts pc | |
206 | ||
207 | joe: | |
208 | jsr pc,serror | |
209 | ||
210 | stfor: | |
211 | mov r4,-(sp) | |
212 | jsr pc,e2 | |
213 | mov r4,-(sp) | |
214 | cmp r0,$'= | |
215 | bne joe | |
216 | tst val | |
217 | bne joe | |
218 | jsr pc,expr | |
219 | mov forp,(r4)+ / overlay w _asgn | |
220 | mov r4,forp | |
221 | cmp (r4)+,(r4)+ / _tra .. | |
222 | mov (sp)+,r0 | |
223 | mov (sp)+,r1 | |
224 | 1: | |
225 | mov (r1)+,(r4)+ | |
226 | cmp r1,r0 | |
227 | blo 1b | |
228 | mov $_fori,(r4)+ | |
229 | mov forp,r1 | |
230 | mov $_tra,(r1)+ | |
231 | mov r4,(r1)+ | |
232 | dec r3 | |
233 | jsr pc,expr | |
234 | mov $_lesseq,(r4)+ | |
235 | mov $_if,(r4)+ | |
236 | mov forp,(r4)+ | |
237 | mov r4,forp | |
238 | cmp r0,$'\n | |
239 | beq 1f | |
240 | jsr pc,stat1 | |
241 | br .+2 | |
242 | br stnext | |
243 | 1: | |
244 | rts pc | |
245 | ||
246 | forer: | |
247 | jsr r5,error; <for/next imbalance\n\0>; .even | |
248 | ||
249 | stnext: | |
250 | mov forp,r1 | |
251 | beq forer | |
252 | mov -(r1),r0 | |
253 | mov -(r0),forp | |
254 | mov $_ptra,(r4)+ | |
255 | mov $_asgn,(r0)+ | |
256 | cmp (r0)+,(r0)+ | |
257 | mov r0,(r4)+ | |
258 | mov r4,(r1)+ | |
259 | rts pc | |
260 | ||
261 | stoctl: | |
262 | jsr pc,expr | |
263 | mov $_octal,(r4)+ | |
264 | rts pc | |
265 | ||
266 | stdraw: | |
267 | jsr pc,expr | |
268 | dec r3 | |
269 | jsr pc,expr | |
270 | cmp r0,$'\n | |
271 | bne 1f | |
272 | movf $one,r0 | |
273 | jsr pc,const | |
274 | br 2f | |
275 | 1: | |
276 | dec r3 | |
277 | jsr pc,expr | |
278 | 2: | |
279 | mov $_draw,(r4)+ | |
280 | rts pc | |
281 | ||
282 | steras: | |
283 | mov $_erase,(r4)+ | |
284 | rts pc | |
285 | ||
286 | ||
287 | cmp r0,$'\n | |
288 | beq 1f | |
289 | jsr pc,stat1 | |
290 | br .+2 | |
291 | br stnext | |
292 | 1: | |
293 | rts pc | |
294 | ||
295 | forer: | |
296 | jsr r5,error; <for/next imbalance\n\0>; .even | |
297 | ||
298 | stnext: | |
299 | mov forp,r1 | |
300 | beq forer | |
301 | mov -(r1),r0 | |
302 | mov -(r0),forp | |
303 | mov $_ptra,(r4)+ | |
304 | mov $_asgn,(r0)+ | |
305 | cmp (r0)+,(r0)+ | |
306 | mov r0,(r4)+ | |
307 | mov r4,(r1)+ | |
308 | rts pc | |
309 | ||
310 | stoctl: | |
311 | jsr pc,expr | |
312 | mov $_octal,(r4)+ | |
313 | rts pc | |
314 | ||
315 | stdraw: | |
316 | jsr pc,expr | |
317 | dec r3 | |
318 | jsr pc,expr | |
319 | cmp r0,$'\n | |
320 | bne 1f | |
321 | movf $one,r0 | |
322 | jsr pc,const | |
323 | br 2f | |
324 | 1: | |
325 | dec r3 | |
326 | jsr pc,expr | |
327 | 2: | |
328 | mov $_draw,(r4)+ | |
329 | rts pc | |
330 | ||
331 | steras: | |
332 | mov $_erase,(r4)+ |