Research V2 release
[unix-history] / cmd / bas1.s
CommitLineData
91c02992
KT
1/ bas1 -- compile
2
3compile:
4 clr forp
5 mov $space,r4
6 tst lineno
7 beq 1f
8 rts pc
91:
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
221:
23 tst forp
24 bne 2f
25 mov $loop,(r4)+
26 rts pc
27
28singstat:
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)+
371:
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
441:
45 mov $loop,(r4)+
46 mov r4,exprloc
47 mov $exline,r4
48 jmp execute
492:
50 jmp forer
51
52statement:
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
641:
65 mov $_line,(r4)+
66 mov r1,(r4)+
67
68stat1:
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)
822:
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
971:
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
106stlist:
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
1141:
115 jsr pc,expr
116 cmp r0,$'\n
117 bne 1f
118 mov $_dup,(r4)+
119 br 2f
1201:
121 dec r3
122 jsr pc,expr
123 cmp r0,$'\n
124 bne joe
1252:
126 mov $_list,(r4)+
127 rts pc
128
129stdone:
130 cmp r0,$'\n
131 bne joe
132 mov $_done,(r4)+
133 rts pc
134
135strun:
136 cmp r0,$'\n
137 bne joe
138 mov $_run,(r4)+
139 rts pc
140
141stdisp:
142 mov $_sdisp,(r4)+
143 jsr pc,stprint
144 mov $_fdisp,(r4)+
145 rts pc
146
147stprint:
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
1581:
159 mov $_ascii,(r4)+
160 inc r3
1611:
162 movb (r3)+,(r4)
163 cmpb (r4),$'"
164 beq 1f
165 cmpb (r4)+,$'\n
166 bne 1b
167 br joe
1681:
169 add $2,r4
170 bic $1,r4
171 movb (r3)+,r0
172 br stprint
1732:
174 mov $_nline,(r4)+
175 rts pc
176
177stif:
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
188stgoto:
189 jsr pc,expr
190 mov $_goto,(r4)+
191 rts pc
192
193streturn:
194 cmp r0,$'\n
195 beq 1f
196 jsr pc,expr
197 cmp r0,$'\n
198 bne joe
199 br 2f
2001:
201 clrf r0
202 jsr pc,const
2032:
204 mov $_return,(r4)+
205 rts pc
206
207joe:
208 jsr pc,serror
209
210stfor:
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
2241:
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
2431:
244 rts pc
245
246forer:
247 jsr r5,error; <for/next imbalance\n\0>; .even
248
249stnext:
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
261stoctl:
262 jsr pc,expr
263 mov $_octal,(r4)+
264 rts pc
265
266stdraw:
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
2751:
276 dec r3
277 jsr pc,expr
2782:
279 mov $_draw,(r4)+
280 rts pc
281
282steras:
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
2921:
293 rts pc
294
295forer:
296 jsr r5,error; <for/next imbalance\n\0>; .even
297
298stnext:
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
310stoctl:
311 jsr pc,expr
312 mov $_octal,(r4)+
313 rts pc
314
315stdraw:
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
3241:
325 dec r3
326 jsr pc,expr
3272:
328 mov $_draw,(r4)+
329 rts pc
330
331steras:
332 mov $_erase,(r4)+