Research V7 development
[unix-history] / usr / src / cmd / as / as17.s
CommitLineData
8d8c20ed
DR
1/
2/
3
4/ a7 -- pdp-11 assembler pass 1
5
6expres:
7 mov r5,-(sp)
8 mov $'+,-(sp)
9 clr opfound
10 clr r2
11 mov $1,r3
12 br 1f
13advanc:
14 jsr pc,readop
151:
16 mov r4,r0
17 jsr r5,betwen; 0; 177
18 br .+4
19 br 7f
20 movb (r4),r0
21 mov 2(r4),r1
22 br oprand
237:
24 cmp r4,$141
25 blo 1f
26 cmp r4,$141+10.
27 bhis 2f
28 movb curfbr-141(r4),r0
29 asl r4
30 mov curfb-[2*141](r4),r2
31 cmp r2,$-1
32 bne oprand
33 jsr r5,error; 'f
34 br oprand
352:
36 clr r3
37 clr r2
38 br oprand
391:
40 mov $esw1,r1
411:
42 cmp (r1)+,r4
43 beq 1f
44 tst (r1)+
45 bne 1b
46 tst opfound
47 bne 2f
48 jsr pc,errore
492:
50 tst (sp)+
51 mov (sp)+,r5
52 rts pc
531:
54 jmp *(r1)
55
56esw1:
57 '+; binop
58 '-; binop
59 '*; binop
60 '/; binop
61 '&; binop
62 037; binop
63 035; binop
64 036; binop
65 '%; binop
66 '[; brack
67 '^; binop
68 1; exnum
69 '!; binop
70 0; 0
71
72binop:
73 cmpb (sp),$'+
74 beq 1f
75 jsr pc,errore
761:
77 movb r4,(sp)
78 br advanc
79
80exnum:
81 mov numval,r1
82 mov $1,r0
83 br oprand
84
85brack:
86 mov r2,-(sp)
87 mov r3,-(sp)
88 jsr pc,readop
89 jsr pc,expres
90 cmp r4,$']
91 beq 1f
92 jsr r5,error; ']
931:
94 mov r3,r0
95 mov r2,r1
96 mov (sp)+,r3
97 mov (sp)+,r2
98
99oprand:
100 inc opfound
101 mov $exsw2,r5
1021:
103 cmp (sp),(r5)+
104 beq 1f
105 tst (r5)+
106 bne 1b
107 br eoprnd
1081:
109 jmp *(r5)
110
111exsw2:
112 '+; exadd
113 '-; exsub
114 '*; exmul
115 '/; exdiv
116 037; exor
117 '&; exand
118 035;exlsh
119 036;exrsh
120 '%; exmod
121 '!; exnot
122 '^; excmbin
123 0; 0
124
125excmbin:
126 mov r0,r3 / give left flag of right
127 br eoprnd
128
129exrsh:
130 neg r1
131 beq exlsh
132 inc r1
133 clc
134 ror r2
135exlsh:
136 jsr r5,combin; 0
137 als r1,r2
138 br eoprnd
139
140exmod:
141 jsr r5,combin; 0
142 mov r1,-(sp)
143 mov r2,r1
144 clr r0
145 dvd (sp)+,r0
146 mov r1,r2
147 br eoprnd
148
149exadd:
150 jsr r5,combin; 0
151 add r1,r2
152 br eoprnd
153
154exsub:
155 jsr r5,combin; 1
156 sub r1,r2
157 br eoprnd
158
159exand:
160 jsr r5,combin; 0
161 com r1
162 bic r1,r2
163 br eoprnd
164
165exor:
166 jsr r5,combin; 0
167 bis r1,r2
168 br eoprnd
169
170exmul:
171 jsr r5,combin; 0
172 mpy r2,r1
173 mov r1,r2
174 br eoprnd
175
176exdiv:
177 jsr r5,combin; 0
178 mov r1,-(sp)
179 mov r2,r1
180 clr r0
181 dvd (sp)+,r0
182 mov r0,r2
183 br eoprnd
184
185exnot:
186 jsr r5,combin; 0
187 com r1
188 add r1,r2
189 br eoprnd
190
191eoprnd:
192 mov $'+,(sp)
193 jmp advanc
194
195combin:
196 mov r0,-(sp)
197 bis r3,(sp)
198 bic $!40,(sp)
199 bic $!37,r0
200 bic $!37,r3
201 cmp r0,r3
202 ble 1f
203 mov r0,-(sp)
204 mov r3,r0
205 mov (sp)+,r3
2061:
207 tst r0
208 beq 1f
209 tst (r5)+
210 beq 2f
211 cmp r0,r3
212 bne 2f
213 mov $1,r3
214 br 2f
2151:
216 tst (r5)+
217 clr r3
2182:
219 bis (sp)+,r3
220 rts r5
221