Research V2 release
[unix-history] / cmd / a7.s
CommitLineData
ac5a0e76
DR
1/ a7 -- pdp-11 assembler pass 1
2
3expres:
4 mov r5,-(sp)
5 mov $'+,-(sp)
6 clr opfound
7 clr r2
8 mov $1,r3
9 br 1f
10advanc:
11 jsr pc,readop
121:
13 mov r4,r0
14 jsr r5,betwen; 0; 177
15 br .+4
16 br 7f
17 movb (r4),r0
18 mov 2(r4),r1
19 br oprand
207:
21 cmp r4,$141
22 blo 1f
23 cmp r4,$141+10.
24 bhis 2f
25 movb curfbr-141(r4),r0
26 asl r4
27 mov curfb-[2*141](r4),r2
28 bpl oprand
29 jsr r5,error; 'f
30 br oprand
312:
32 clr r3
33 clr r2
34 br oprand
351:
36 mov $esw1,r1
371:
38 cmp (r1)+,r4
39 beq 1f
40 tst (r1)+
41 bne 1b
42 tst opfound
43 bne 2f
44 jsr pc,errore
452:
46 tst (sp)+
47 mov (sp)+,r5
48 rts pc
491:
50 jmp *(r1)
51
52esw1:
53 '+; binop
54 '-; binop
55 '*; binop
56 '/; binop
57 '&; binop
58 037; binop
59 035; binop
60 036; binop
61 '%; binop
62 '[; brack
63 '^; binop
64 1; exnum
65 '!; binop
66 0; 0
67
68binop:
69 cmpb (sp),$'+
70 beq 1f
71 jsr pc,errore
721:
73 movb r4,(sp)
74 br advanc
75
76exnum:
77 mov numval,r1
78 mov $1,r0
79 br oprand
80
81brack:
82 mov r2,-(sp)
83 mov r3,-(sp)
84 jsr pc,readop
85 jsr pc,expres
86 cmp r4,$']
87 beq 1f
88 jsr r5,error; ']
891:
90 mov r3,r0
91 mov r2,r1
92 mov (sp)+,r3
93 mov (sp)+,r2
94
95oprand:
96 inc opfound
97 mov $exsw2,r5
981:
99 cmp (sp),(r5)+
100 beq 1f
101 tst (r5)+
102 bne 1b
103 br eoprnd
1041:
105 jmp *(r5)
106
107exsw2:
108 '+; exadd
109 '-; exsub
110 '*; exmul
111 '/; exdiv
112 037; exor
113 '&; exand
114 035;exlsh
115 036;exrsh
116 '%; exmod
117 '!; exnot
118 '^; excmbin
119 0; 0
120
121excmbin:
122 mov r0,r3 / give left flag of right
123 br eoprnd
124
125exrsh:
126 neg r1
127 beq exlsh
128 inc r1
129 clc
130 ror r2
131exlsh:
132 jsr r5,combin; 0
133 als r1,r2
134 br eoprnd
135
136exmod:
137 jsr r5,combin; 0
138 mov r1,-(sp)
139 mov r2,r1
140 clr r0
141 dvd (sp)+,r0
142 mov r1,r2
143 br eoprnd
144
145exadd:
146 jsr r5,combin; 0
147 add r1,r2
148 br eoprnd
149
150exsub:
151 jsr r5,combin; 1
152 sub r1,r2
153 br eoprnd
154
155exand:
156 jsr r5,combin; 0
157 com r1
158 bic r1,r2
159 br eoprnd
160
161exor:
162 jsr r5,combin; 0
163 bis r1,r2
164 br eoprnd
165
166exmul:
167 jsr r5,combin; 0
168 mpy r2,r1
169 mov r1,r2
170 br eoprnd
171
172exdiv:
173 jsr r5,combin; 0
174 mov r1,-(sp)
175 mov r2,r1
176 clr r0
177 dvd (sp)+,r0
178 mov r0,r2
179 br eoprnd
180
181exnot:
182 jsr r5,combin; 0
183 com r1
184 add r1,r2
185 br eoprnd
186
187eoprnd:
188 mov $'+,(sp)
189 jmp advanc
190
191combin:
192 mov r0,-(sp)
193 bis r3,(sp)
194 bic $!40,(sp)
195 bic $!37,r0
196 bic $!37,r3
197 cmp r0,r3
198 ble 1f
199 mov r0,-(sp)
200 mov r3,r0
201 mov (sp)+,r3
2021:
203 tst r0
204 beq 1f
205 tst (r5)+
206 beq 2f
207 cmp r0,r3
208 bne 2f
209 mov $1,r3
210 br 2f
2111:
212 tst (r5)+
213 clr r3
2142:
215 bis (sp)+,r3
216 rts r5
217
218r eoprnd
219
220exmul:
221 jsr r5,combin; 0
222 mpy r2,r1
223 mov r1,r2
224 br eoprnd
225
226exdiv:
227 jsr r5,combin; 0
228 mov r1,-(sp)
229 mov r2,r1
230 clr r0
231 dvd (sp)+,r0
232 mov r0,r2
233 br eoprnd
234
235exnot:
236 jsr r5,combin; 0
237 com r1
238 add r1,r2
239 br eoprnd
240
241eoprnd:
242 mov $'+,(sp)
243 jmp advanc
244
245combin:
246 mov r0,-(sp)
247 bis r3,(sp)
248 bic $!40,(sp)
249 bic $!37,r0
250 bic $!37,r3
251 cmp r0,r3
252 ble 1f
253 mov r0,-(sp)
254 mov r3,r0
255 m