Research V7 development
[unix-history] / usr / src / cmd / as / as27.s
CommitLineData
8d8c20ed
DR
1/
2/
3
4/ a7 -- pdp-11 assembler
5
6expres:
7 clr xsymbol
8expres1:
9 mov r5,-(sp)
10 mov $'+,-(sp)
11 clr r2
12 mov $1,r3
13 br 1f
14advanc:
15 jsr pc,readop
161:
17 mov r4,r0
18 jsr r5,betwen; 0; 177
19 br .+4
20 br 7f
21 movb (r4),r0
22 tst r0
23 bne 1f
24 tstb passno
25 beq 1f
26 jsr r5,error; 'u
271:
28 cmp r0,$40
29 bne 1f
30 mov r4,xsymbol
31 clr r1
32 br oprand
331:
34 mov 2(r4),r1
35 br oprand
367:
37 cmp r4,$141
38 blo 1f
39 asl r4
40 mov curfb-[2*141](r4),r0
41 mov 2(r0),r1
42 movb (r0),r0
43 br oprand
441:
45 mov $esw1,r1
461:
47 cmp (r1)+,r4
48 beq 1f
49 tst (r1)+
50 bne 1b
51 tst (sp)+
52 mov (sp)+,r5
53 rts pc
541:
55 jmp *(r1)
56
57esw1:
58 '+; binop
59 '-; binop
60 '*; binop
61 '/; binop
62 '&; binop
63 037; binop
64 035; binop
65 036; binop
66 '%; binop
67 '[; brack
68 '^; binop
69 1; exnum
70 2; exnum1
71 '!; binop
72 200; 0
73
74binop:
75 cmpb (sp),$'+
76 beq 1f
77 jsr pc,errore
781:
79 movb r4,(sp)
80 br advanc
81
82exnum1:
83 mov numval,r1
84 br 1f
85
86exnum:
87 jsr pc,getw
88 mov r4,r1
891:
90 mov $1,r0
91 br oprand
92
93brack:
94 mov r2,-(sp)
95 mov r3,-(sp)
96 jsr pc,readop
97 jsr pc,expres1
98 cmp r4,$']
99 beq 1f
100 jsr r5,error; ']
1011:
102 mov r3,r0
103 mov r2,r1
104 mov (sp)+,r3
105 mov (sp)+,r2
106
107oprand:
108 mov $exsw2,r5
1091:
110 cmp (sp),(r5)+
111 beq 1f
112 tst (r5)+
113 bne 1b
114 br eoprnd
1151:
116 jmp *(r5)
117
118exsw2:
119 '+; exadd
120 '-; exsub
121 '*; exmul
122 '/; exdiv
123 037; exor
124 '&; exand
125 035;exlsh
126 036;exrsh
127 '%; exmod
128 '^; excmbin
129 '!; exnot
130 200; 0
131
132excmbin:
133 mov r0,r3
134 br eoprnd
135
136exrsh:
137 neg r1
138 beq exlsh
139 inc r1
140 clc
141 ror r2
142exlsh:
143 jsr r5,combin; relte2
144 als r1,r2
145 br eoprnd
146
147exmod:
148 jsr r5,combin; relte2
149 mov r3,r0
150 mov r2,r3
151 clr r2
152 dvd r1,r2
153 mov r3,r2
154 mov r0,r3
155 br eoprnd
156
157exadd:
158 jsr r5,combin; reltp2
159 add r1,r2
160 br eoprnd
161
162exsub:
163 jsr r5,combin; reltm2
164 sub r1,r2
165 br eoprnd
166
167exand:
168 jsr r5,combin; relte2
169 com r1
170 bic r1,r2
171 br eoprnd
172
173exor:
174 jsr r5,combin; relte2
175 bis r1,r2
176 br eoprnd
177
178exmul:
179 jsr r5,combin; relte2
180 mpy r2,r1
181 mov r1,r2
182 br eoprnd
183
184exdiv:
185 jsr r5,combin; relte2
186 mov r3,r0
187 mov r2,r3
188 clr r2
189 dvd r1,r2
190 mov r0,r3
191 br eoprnd
192
193exnot:
194 jsr r5,combin; relte2
195 com r1
196 add r1,r2
197 br eoprnd
198
199eoprnd:
200 mov $'+,(sp)
201 jmp advanc
202
203combin:
204 tstb passno
205 bne combin1
206 mov r0,-(sp)
207 bis r3,(sp)
208 bic $!40,(sp)
209 bic $!37,r0
210 bic $!37,r3
211 cmp r0,r3
212 ble 1f
213 mov r0,-(sp)
214 mov r3,r0
215 mov (sp)+,r3
2161:
217 tst r0
218 beq 1f
219 cmp (r5)+,$reltm2
220 bne 2f
221 cmp r0,r3
222 bne 2f
223 mov $1,r3
224 br 2f
2251:
226 tst (r5)+
227 clr r3
2282:
229 bis (sp)+,r3
230 rts r5
231combin1:
232 mov r1,-(sp)
233 clr maxtyp
234 jsr pc,maprel
235 mov r0,r1
236 mpy $6,r1
237 mov r3,r0
238 jsr pc,maprel
239 add (r5)+,r0
240 add r1,r0
241 movb (r0),r3
242 bpl 1f
243 cmp r3,$-1
244 beq 2f
245 jsr r5,error; 'r
2462:
247 mov maxtyp,r3
2481:
249 mov (sp)+,r1
250 rts r5
251
252maprel:
253 cmp r0,$40
254 bne 1f
255 mov $5,r0
256 rts pc
2571:
258 bic $!37,r0
259 cmp r0,maxtyp
260 blos 1f
261 mov r0,maxtyp
2621:
263 cmp r0,$5
264 blo 1f
265 mov $1,r0
2661:
267 rts pc
268
269X = -2
270M = -1
271reltp2:
272 .byte 0, 0, 0, 0, 0, 0
273 .byte 0, M, 2, 3, 4,40
274 .byte 0, 2, X, X, X, X
275 .byte 0, 3, X, X, X, X
276 .byte 0, 4, X, X, X, X
277 .byte 0,40, X, X, X, X
278
279reltm2:
280 .byte 0, 0, 0, 0, 0, 0
281 .byte 0, M, 2, 3, 4,40
282 .byte 0, X, 1, X, X, X
283 .byte 0, X, X, 1, X, X
284 .byte 0, X, X, X, 1, X
285 .byte 0, X, X, X, X, X
286
287relte2:
288 .byte 0, 0, 0, 0, 0, 0
289 .byte 0, M, X, X, X, X
290 .byte 0, X, X, X, X, X
291 .byte 0, X, X, X, X, X
292 .byte 0, X, X, X, X, X
293 .byte 0, X, X, X, X, X
294