Commit | Line | Data |
---|---|---|
8d8c20ed DR |
1 | / |
2 | / | |
3 | ||
4 | / a9 -- pdp-11 assembler pass 1 | |
5 | ||
6 | eae = 0 | |
7 | ||
8 | / key to types | |
9 | ||
10 | / 0 undefined | |
11 | / 1 absolute | |
12 | / 2 text | |
13 | / 3 data | |
14 | / 4 bss | |
15 | / 5 flop freg,dst (movfo, = stcfd) | |
16 | / 6 branch | |
17 | / 7 jsr | |
18 | / 10 rts | |
19 | / 11 sys | |
20 | / 12 movf (=ldf,stf) | |
21 | / 13 double operand (mov) | |
22 | / 14 flop fsrc,freg (addf) | |
23 | / 15 single operand (clr) | |
24 | / 16 .byte | |
25 | / 17 string (.ascii, "<") | |
26 | / 20 .even | |
27 | / 21 .if | |
28 | / 22 .endif | |
29 | / 23 .globl | |
30 | / 24 register | |
31 | / 25 .text | |
32 | / 26 .data | |
33 | / 27 .bss | |
34 | / 30 mul,div, etc | |
35 | / 31 sob | |
36 | / 32 .comm | |
37 | / 33 estimated text | |
38 | / 34 estimated data | |
39 | / 35 jbr | |
40 | / 36 jeq, jne, etc | |
41 | ||
42 | .data | |
43 | symtab: | |
44 | / special variables | |
45 | ||
46 | <.\0\0\0\0\0\0\0>; dotrel:02; dot:000000 | |
47 | <..\0\0\0\0\0\0>; 01; dotdot:000000 | |
48 | ||
49 | / register | |
50 | ||
51 | <r0\0\0\0\0\0\0>; 24;000000 | |
52 | <r1\0\0\0\0\0\0>; 24;000001 | |
53 | <r2\0\0\0\0\0\0>; 24;000002 | |
54 | <r3\0\0\0\0\0\0>; 24;000003 | |
55 | <r4\0\0\0\0\0\0>; 24;000004 | |
56 | <r5\0\0\0\0\0\0>; 24;000005 | |
57 | <sp\0\0\0\0\0\0>; 24;000006 | |
58 | <pc\0\0\0\0\0\0>; 24;000007 | |
59 | ||
60 | .if eae | |
61 | ||
62 | /eae & switches | |
63 | ||
64 | <csw\0\0\0\0\0>; 01;177570 | |
65 | <div\0\0\0\0\0>; 01;177300 | |
66 | <ac\0\0\0\0\0\0>; 01;177302 | |
67 | <mq\0\0\0\0\0\0>; 01;177304 | |
68 | <mul\0\0\0\0\0>; 01;177306 | |
69 | <sc\0\0\0\0\0\0>; 01;177310 | |
70 | <sr\0\0\0\0\0\0>; 01;177311 | |
71 | <nor\0\0\0\0\0>; 01;177312 | |
72 | <lsh\0\0\0\0\0>; 01;177314 | |
73 | <ash\0\0\0\0\0>; 01;177316 | |
74 | ||
75 | .endif | |
76 | ||
77 | / double operand | |
78 | ||
79 | <mov\0\0\0\0\0>; 13;0010000 | |
80 | <movb\0\0\0\0>; 13;0110000 | |
81 | <cmp\0\0\0\0\0>; 13;0020000 | |
82 | <cmpb\0\0\0\0>; 13;0120000 | |
83 | <bit\0\0\0\0\0>; 13;0030000 | |
84 | <bitb\0\0\0\0>; 13;0130000 | |
85 | <bic\0\0\0\0\0>; 13;0040000 | |
86 | <bicb\0\0\0\0>; 13;0140000 | |
87 | <bis\0\0\0\0\0>; 13;0050000 | |
88 | <bisb\0\0\0\0>; 13;0150000 | |
89 | <add\0\0\0\0\0>; 13;0060000 | |
90 | <sub\0\0\0\0\0>; 13;0160000 | |
91 | ||
92 | / branch | |
93 | ||
94 | <br\0\0\0\0\0\0>; 06;0000400 | |
95 | <bne\0\0\0\0\0>; 06;0001000 | |
96 | <beq\0\0\0\0\0>; 06;0001400 | |
97 | <bge\0\0\0\0\0>; 06;0002000 | |
98 | <blt\0\0\0\0\0>; 06;0002400 | |
99 | <bgt\0\0\0\0\0>; 06;0003000 | |
100 | <ble\0\0\0\0\0>; 06;0003400 | |
101 | <bpl\0\0\0\0\0>; 06;0100000 | |
102 | <bmi\0\0\0\0\0>; 06;0100400 | |
103 | <bhi\0\0\0\0\0>; 06;0101000 | |
104 | <blos\0\0\0\0>; 06;0101400 | |
105 | <bvc\0\0\0\0\0>; 06;0102000 | |
106 | <bvs\0\0\0\0\0>; 06;0102400 | |
107 | <bhis\0\0\0\0>; 06;0103000 | |
108 | <bec\0\0\0\0\0>; 06;0103000 | |
109 | <bcc\0\0\0\0\0>; 06;0103000 | |
110 | <blo\0\0\0\0\0>; 06;0103400 | |
111 | <bcs\0\0\0\0\0>; 06;0103400 | |
112 | <bes\0\0\0\0\0>; 06;0103400 | |
113 | ||
114 | / jump/branch type | |
115 | ||
116 | <jbr\0\0\0\0\0>; 35;0000400 | |
117 | <jne\0\0\0\0\0>; 36;0001000 | |
118 | <jeq\0\0\0\0\0>; 36;0001400 | |
119 | <jge\0\0\0\0\0>; 36;0002000 | |
120 | <jlt\0\0\0\0\0>; 36;0002400 | |
121 | <jgt\0\0\0\0\0>; 36;0003000 | |
122 | <jle\0\0\0\0\0>; 36;0003400 | |
123 | <jpl\0\0\0\0\0>; 36;0100000 | |
124 | <jmi\0\0\0\0\0>; 36;0100400 | |
125 | <jhi\0\0\0\0\0>; 36;0101000 | |
126 | <jlos\0\0\0\0>; 36;0101400 | |
127 | <jvc\0\0\0\0\0>; 36;0102000 | |
128 | <jvs\0\0\0\0\0>; 36;0102400 | |
129 | <jhis\0\0\0\0>; 36;0103000 | |
130 | <jec\0\0\0\0\0>; 36;0103000 | |
131 | <jcc\0\0\0\0\0>; 36;0103000 | |
132 | <jlo\0\0\0\0\0>; 36;0103400 | |
133 | <jcs\0\0\0\0\0>; 36;0103400 | |
134 | <jes\0\0\0\0\0>; 36;0103400 | |
135 | ||
136 | / single operand | |
137 | ||
138 | <clr\0\0\0\0\0>; 15;0005000 | |
139 | <clrb\0\0\0\0>; 15;0105000 | |
140 | <com\0\0\0\0\0>; 15;0005100 | |
141 | <comb\0\0\0\0>; 15;0105100 | |
142 | <inc\0\0\0\0\0>; 15;0005200 | |
143 | <incb\0\0\0\0>; 15;0105200 | |
144 | <dec\0\0\0\0\0>; 15;0005300 | |
145 | <decb\0\0\0\0>; 15;0105300 | |
146 | <neg\0\0\0\0\0>; 15;0005400 | |
147 | <negb\0\0\0\0>; 15;0105400 | |
148 | <adc\0\0\0\0\0>; 15;0005500 | |
149 | <adcb\0\0\0\0>; 15;0105500 | |
150 | <sbc\0\0\0\0\0>; 15;0005600 | |
151 | <sbcb\0\0\0\0>; 15;0105600 | |
152 | <tst\0\0\0\0\0>; 15;0005700 | |
153 | <tstb\0\0\0\0>; 15;0105700 | |
154 | <ror\0\0\0\0\0>; 15;0006000 | |
155 | <rorb\0\0\0\0>; 15;0106000 | |
156 | <rol\0\0\0\0\0>; 15;0006100 | |
157 | <rolb\0\0\0\0>; 15;0106100 | |
158 | <asr\0\0\0\0\0>; 15;0006200 | |
159 | <asrb\0\0\0\0>; 15;0106200 | |
160 | <asl\0\0\0\0\0>; 15;0006300 | |
161 | <aslb\0\0\0\0>; 15;0106300 | |
162 | <jmp\0\0\0\0\0>; 15;0000100 | |
163 | <swab\0\0\0\0>; 15;0000300 | |
164 | ||
165 | / jsr | |
166 | ||
167 | <jsr\0\0\0\0\0>; 07;0004000 | |
168 | ||
169 | / rts | |
170 | ||
171 | <rts\0\0\0\0\0>; 010;000200 | |
172 | ||
173 | / simple operand | |
174 | ||
175 | <sys\0\0\0\0\0>; 011;104400 | |
176 | ||
177 | / flag-setting | |
178 | ||
179 | <clc\0\0\0\0\0>; 01;0000241 | |
180 | <clv\0\0\0\0\0>; 01;0000242 | |
181 | <clz\0\0\0\0\0>; 01;0000244 | |
182 | <cln\0\0\0\0\0>; 01;0000250 | |
183 | <sec\0\0\0\0\0>; 01;0000261 | |
184 | <sev\0\0\0\0\0>; 01;0000262 | |
185 | <sez\0\0\0\0\0>; 01;0000264 | |
186 | <sen\0\0\0\0\0>; 01;0000270 | |
187 | ||
188 | / floating point ops | |
189 | ||
190 | <cfcc\0\0\0\0>; 01;170000 | |
191 | <setf\0\0\0\0>; 01;170001 | |
192 | <setd\0\0\0\0>; 01;170011 | |
193 | <seti\0\0\0\0>; 01;170002 | |
194 | <setl\0\0\0\0>; 01;170012 | |
195 | <clrf\0\0\0\0>; 15;170400 | |
196 | <negf\0\0\0\0>; 15;170700 | |
197 | <absf\0\0\0\0>; 15;170600 | |
198 | <tstf\0\0\0\0>; 15;170500 | |
199 | <movf\0\0\0\0>; 12;172400 | |
200 | <movif\0\0\0>; 14;177000 | |
201 | <movfi\0\0\0>; 05;175400 | |
202 | <movof\0\0\0>; 14;177400 | |
203 | <movfo\0\0\0>; 05;176000 | |
204 | <addf\0\0\0\0>; 14;172000 | |
205 | <subf\0\0\0\0>; 14;173000 | |
206 | <mulf\0\0\0\0>; 14;171000 | |
207 | <divf\0\0\0\0>; 14;174400 | |
208 | <cmpf\0\0\0\0>; 14;173400 | |
209 | <modf\0\0\0\0>; 14;171400 | |
210 | <movie\0\0\0>; 14;176400 | |
211 | <movei\0\0\0>; 05;175000 | |
212 | <ldfps\0\0\0>; 15;170100 | |
213 | <stfps\0\0\0>; 15;170200 | |
214 | <fr0\0\0\0\0\0>; 24;000000 | |
215 | <fr1\0\0\0\0\0>; 24;000001 | |
216 | <fr2\0\0\0\0\0>; 24;000002 | |
217 | <fr3\0\0\0\0\0>; 24;000003 | |
218 | <fr4\0\0\0\0\0>; 24;000004 | |
219 | <fr5\0\0\0\0\0>; 24;000005 | |
220 | ||
221 | / 11/45 operations | |
222 | ||
223 | <als\0\0\0\0\0>; 30;072000 | |
224 | <alsc\0\0\0\0>; 30;073000 | |
225 | <mpy\0\0\0\0\0>; 30;070000 | |
226 | .if eae-1 | |
227 | <mul\0\0\0\0\0>; 30;070000 | |
228 | <div\0\0\0\0\0>; 30;071000 | |
229 | <ash\0\0\0\0\0>; 30;072000 | |
230 | <ashc\0\0\0\0>; 30;073000 | |
231 | .endif | |
232 | <dvd\0\0\0\0\0>; 30;071000 | |
233 | <xor\0\0\0\0\0>; 07;074000 | |
234 | <sxt\0\0\0\0\0>; 15;006700 | |
235 | <mark\0\0\0\0>; 11;006400 | |
236 | <sob\0\0\0\0\0>; 31;077000 | |
237 | ||
238 | / specials | |
239 | ||
240 | <.byte\0\0\0>; 16;000000 | |
241 | <.even\0\0\0>; 20;000000 | |
242 | <.if\0\0\0\0\0>; 21;000000 | |
243 | <.endif\0\0>; 22;000000 | |
244 | <.globl\0\0>; 23;000000 | |
245 | <.text\0\0\0>; 25;000000 | |
246 | <.data\0\0\0>; 26;000000 | |
247 | <.bss\0\0\0\0>; 27;000000 | |
248 | <.comm\0\0\0>; 32;000000 | |
249 | ||
250 | ebsymtab: | |
251 | ||
252 | ||
253 | start: | |
254 | sys signal; 2; 1 | |
255 | ror r0 | |
256 | bcs 1f | |
257 | sys signal; 2; aexit | |
258 | 1: | |
259 | mov (sp)+,r0 | |
260 | tst (sp)+ | |
261 | 1: | |
262 | mov (sp),r1 | |
263 | cmpb (r1),$'- | |
264 | bne 1f | |
265 | tst (sp)+ | |
266 | dec r0 | |
267 | cmpb 1(r1),$'u | |
268 | bne 2f | |
269 | movb $'g,unglob | |
270 | br 1b | |
271 | 2: | |
272 | tstb 1(r1) | |
273 | bne 2f | |
274 | movb $'g,unglob | |
275 | br 1b | |
276 | 2: | |
277 | cmpb 1(r1),$'o | |
278 | bne 1f | |
279 | mov (sp),outfp | |
280 | tst (sp)+ | |
281 | dec r0 | |
282 | br 1b | |
283 | 1: | |
284 | movb r0,nargs | |
285 | tst -(sp) | |
286 | mov sp,curarg | |
287 | jsr r5,fcreat; a.tmp1 | |
288 | movb r0,pof | |
289 | jsr r5,fcreat; a.tmp2 | |
290 | movb r0,fbfil | |
291 | jsr pc,setup | |
292 | jmp go | |
293 | ||
294 | setup: | |
295 | mov $symtab,r1 | |
296 | 1: | |
297 | clr r3 | |
298 | mov $8,r2 | |
299 | mov r1,-(sp) | |
300 | 2: | |
301 | movb (r1)+,r4 | |
302 | beq 2f | |
303 | add r4,r3 | |
304 | swab r3 | |
305 | sob r2,2b | |
306 | 2: | |
307 | clr r2 | |
308 | div $hshsiz,r2 | |
309 | ashc $1,r2 | |
310 | add $hshtab,r3 | |
311 | 4: | |
312 | sub r2,r3 | |
313 | cmp r3,$hshtab | |
314 | bhi 3f | |
315 | add $2*hshsiz,r3 | |
316 | 3: | |
317 | tst -(r3) | |
318 | bne 4b | |
319 | mov (sp)+,r1 | |
320 | mov r1,(r3) | |
321 | add $12.,r1 | |
322 | cmp r1,$ebsymtab | |
323 | blo 1b | |
324 | rts pc | |
325 | ||
326 | /overlay buffer | |
327 | inbuf = setup | |
328 | . =inbuf+512. | |
329 |