Research V7 development
[unix-history] / usr / src / cmd / as / as26.s
CommitLineData
8d8c20ed
DR
1/
2/
3
4/ a6 -- pdp-11 assembler pass 2
5
6opline:
7 mov r4,r0
8 jsr r5,betwen; 0; 177
9 br 2f
10 cmp r4,$5
11 beq opeof
12 cmp r4,$'<
13 bne xpr
14 jmp opl17
15xxpr:
16 tst (sp)+
17xpr:
18 jsr pc,expres
19 jsr pc,outw
20 rts pc
212:
22 movb (r4),r0
23 cmp r0,$24 /reg
24 beq xpr
25 cmp r0,$33 /est text
26 beq xpr
27 cmp r0,$34 / est data
28 beq xpr
29 jsr r5,betwen; 5; 36
30 br xpr
31 mov 2(r4),-(sp)
32 mov r0,-(sp)
33 jsr pc,readop
34 mov (sp)+,r0
35 asl r0
36 mov $adrbuf,r5
37 clr swapf
38 mov $-1,rlimit
39 jmp *1f-10.(r0)
40
411:
42 opl5
43 opl6
44 opl7
45 opl10
46 opl11
47 opl12
48 opl13
49 opl14
50 opl15
51 opl16
52 opl17
53 opl20
54 opl21
55 opl22
56 opl23
57 xxpr
58 opl25
59 opl26
60 opl27
61 opl30
62 opl31
63 opl32
64 xxpr
65 xxpr
66 opl35
67 opl36
68
69opeof:
70 mov $1,line
71 mov $20,-(sp)
72 mov $argb,r1
731:
74 jsr pc,getw
75 tst r4
76 bmi 1f
77 movb r4,(r1)+
78 dec (sp)
79 bgt 1b
80 tstb -(r1)
81 br 1b
821:
83 movb $'\n,(r1)+
84 clrb (r1)+
85 tst (sp)+
86 rts pc
87
88opl30: / mpy, dvd etc
89 inc swapf
90 mov $1000,rlimit
91 br opl13
92
93opl14: / flop freg,fsrc
94 inc swapf
95
96opl5: / flop src,freg
97 mov $400,rlimit
98
99/double
100opl13:
101 jsr pc,addres
102op2a:
103 mov r2,-(sp)
104 jsr pc,readop
105op2b:
106 jsr pc,addres
107 tst swapf
108 beq 1f
109 mov (sp),r0
110 mov r2,(sp)
111 mov r0,r2
1121:
113 swab (sp)
114 asr (sp)
115 asr (sp)
116 cmp (sp),rlimit
117 blo 1f
118 jsr r5,error; 'x
1191:
120 bis (sp)+,r2
121 bis (sp)+,r2
122 clr r3
123 jsr pc,outw
124 mov $adrbuf,r1
1251:
126 cmp r1,r5
127 bhis 1f
128 mov (r1)+,r2
129 mov (r1)+,r3
130 mov (r1)+,xsymbol
131 jsr pc,outw
132 br 1b
1331:
134 rts pc
135
136opl15: / single operand
137 clr -(sp)
138 br op2b
139
140opl12: / movf
141 mov $400,rlimit
142 jsr pc,addres
143 cmp r2,$4 / see if source is fregister
144 blo 1f
145 inc swapf
146 br op2a
1471:
148 mov $174000,(sp)
149 br op2a
150
151/ jbr
152opl35:
153/ jeq, jne, etc
154opl36:
155 jsr pc,expres
156 tstb passno
157 bne 1f
158 mov r2,r0
159 jsr pc,setbr
160 tst r2
161 beq 2f
162 cmp (sp),$br
163 beq 2f
164 add $2,r2
1652:
166 add r2,dot / if doesn't fit
167 add $2,dot
168 tst (sp)+
169 rts pc
1701:
171 jsr pc,getbr
172 bcc dobranch
173 mov (sp)+,r0
174 mov r2,-(sp)
175 mov r3,-(sp)
176 cmp r0,$br
177 beq 2f
178 mov $402,r2
179 xor r0,r2 / flip cond, add ".+6"
180 mov $1,r3
181 jsr pc,outw
1822:
183 mov $1,r3
184 mov $jmp+37,r2
185 jsr pc,outw
186 mov (sp)+,r3
187 mov (sp)+,r2
188 jsr pc,outw
189 rts pc
190
191/sob
192opl31: / sob
193 jsr pc,expres
194 jsr pc,checkreg
195 swab r2
196 asr r2
197 asr r2
198 bis r2,(sp)
199 jsr pc,readop
200 jsr pc,expres
201 tstb passno
202 beq 3f
203 sub dot,r2
204 neg r2
205 mov r2,r0
206 jsr r5,betwen; -2; 175
207 br 2f
208 add $4,r2
209 br 1f
210
211/branch
212opl6:
213 jsr pc,expres
214 tstb passno
215 beq 3f
216dobranch:
217 sub dot,r2
218 mov r2,r0
219 jsr r5,betwen; -254.; 256.
220 br 2f
2211:
222 bit $1,r2
223 bne 2f
224 cmp r3,dot-2 / same relocation as .
225 bne 2f
226 asr r2
227 dec r2
228 bic $177400,r2
2293:
230 bis (sp)+,r2
231 clr r3
232 jsr pc,outw
233 rts pc
2342:
235 jsr r5,error; 'b
236 clr r2
237 br 3b
238
239/jsr
240opl7:
241 jsr pc,expres
242 jsr pc,checkreg
243 jmp op2a
244
245/ rts
246opl10:
247 jsr pc,expres
248 jsr pc,checkreg
249 br 1f
250
251/ sys, emt etc
252opl11:
253 jsr pc,expres
254 cmp r2,$256.
255 bhis 0f
256 cmp r3,$1
257 ble 1f
2580:
259 jsr pc,errora
2601:
261 bis (sp)+,r2
262 jsr pc,outw
263 rts pc
264
265/ .byte
266opl16:
267 jsr pc,expres
268 jsr pc,outb
269 cmp r4,$',
270 bne 1f
271 jsr pc,readop
272 br opl16
2731:
274 tst (sp)+
275 rts pc
276
277/ < (.ascii)
278opl17:
279 jsr pc,getw
280 mov $1,r3
281 mov r4,r2
282 bmi 2f
283 bic $!377,r2
284 jsr pc,outb
285 br opl17
2862:
287 jsr pc,getw
288 rts pc
289
290/.even
291opl20:
292 bit $1,dot
293 beq 1f
294 cmp dot-2,$4
295 beq 2f / bss mode
296 clr r2
297 clr r3
298 jsr pc,outb
299 br 1f
3002:
301 inc dot
3021:
303 tst (sp)+
304 rts pc
305opl21: /if
306 jsr pc,expres
307opl22:
308oplret:
309 tst (sp)+
310 rts pc
311
312
313/.globl
314opl23:
315 cmp r4,$200
316 blo 1f
317 bisb $40,(r4)
318 jsr pc,readop
319 cmp r4,$',
320 bne 1f
321 jsr pc,readop
322 br opl23
3231:
324 tst (sp)+
325 rts pc
326
327/ .text, .data, .bss
328opl25:
329opl26:
330opl27:
331 inc dot
332 bic $1,dot
333 mov r0,-(sp)
334 mov dot-2,r1
335 asl r1
336 mov dot,savdot-4(r1)
337 tstb passno
338 beq 1f
339 jsr r5,flush; txtp
340 jsr r5,flush; relp
341 mov (sp),r2
342 asl r2
343 add $txtseek-[4*25],r2
344 mov r2,tseekp
345 mov (r2),r0
346 mov 2(r2),r1
347 jsr r5,oset; txtp
348 add $trelseek-txtseek,r2
349 mov (r2),r0
350 mov 2(r2),r1
351 mov r2,rseekp
352 jsr r5,oset; relp
3531:
354 mov (sp)+,r0
355 mov savdot-[2*25](r0),dot
356 asr r0
357 sub $25-2,r0
358 mov r0,dot-2 / new . relocation
359 tst (sp)+
360 rts pc
361
362opl32:
363 cmp r4,$200
364 blo 1f
365 mov r4,-(sp)
366 jsr pc,readop
367 jsr pc,readop
368 jsr pc,expres
369 mov (sp)+,r0
370 bit $37,(r0)
371 bne 1f
372 bis $40,(r0)
373 mov r2,2(r0)
3741:
375 tst (sp)+
376 rts pc
377
378addres:
379 clr -(sp)
3804:
381 cmp r4,$'(
382 beq alp
383 cmp r4,$'-
384 beq amin
385 cmp r4,$'$
386 beq adoll
387 cmp r4,$'*
388 bne getx
389 jmp astar
390getx:
391 jsr pc,expres
392 cmp r4,$'(
393 bne 2f
394 jsr pc,readop
395 mov r2,(r5)+
396 mov r3,(r5)+
397 mov xsymbol,(r5)+
398 jsr pc,expres
399 jsr pc,checkreg
400 jsr pc,checkrp
401 bis $60,r2
402 bis (sp)+,r2
403 rts pc
404
4052:
406 cmp r3,$24
407 bne 1f
408 jsr pc,checkreg
409 bis (sp)+,r2
410 rts pc
4111:
412 mov r3,-(sp)
413 bic $40,r3
414 mov (sp)+,r3
415 bis $100000,r3
416 sub dot,r2
417 sub $4,r2
418 cmp r5,$adrbuf
419 beq 1f
420 sub $2,r2
4211:
422 mov r2,(r5)+ / index
423 mov r3,(r5)+ / index reloc.
424 mov xsymbol,(r5)+ / index global
425 mov $67,r2 / address mode
426 bis (sp)+,r2
427 rts pc
428
429alp:
430 jsr pc,readop
431 jsr pc,expres
432 jsr pc,checkrp
433 jsr pc,checkreg
434 cmp r4,$'+
435 beq 1f
436 tst (sp)+
437 beq 2f
438 bis $70,r2
439 clr (r5)+
440 clr (r5)+
441 mov xsymbol,(r5)+
442 rts pc
4432:
444 bis $10,r2
445 rts pc
4461:
447 jsr pc,readop
448 bis $20,r2
449 bis (sp)+,r2
450 rts pc
451
452amin:
453 jsr pc,readop
454 cmp r4,$'(
455 beq 1f
456 mov r4,savop
457 mov $'-,r4
458 br getx
4591:
460 jsr pc,readop
461 jsr pc,expres
462 jsr pc,checkrp
463 jsr pc,checkreg
464 bis (sp)+,r2
465 bis $40,r2
466 rts pc
467
468adoll:
469 jsr pc,readop
470 jsr pc,expres
471 mov r2,(r5)+
472 mov r3,(r5)+
473 mov xsymbol,(r5)+
474 mov (sp)+,r2
475 bis $27,r2
476 rts pc
477
478astar:
479 tst (sp)
480 beq 1f
481 jsr r5,error; '*
4821:
483 mov $10,(sp)
484 jsr pc,readop
485 jmp 4b
486
487errora:
488 jsr r5,error; 'a
489 rts pc
490
491checkreg:
492 cmp r2,$7
493 bhi 1f
494 cmp r1,$1
495 blos 2f
496 cmp r3,$5
497 blo 1f
4982:
499 rts pc
5001:
501 jsr pc,errora
502 clr r2
503 clr r3
504 rts pc
505
506errore:
507 jsr r5,error; 'e
508 rts pc
509
510checkrp:
511 cmp r4,$')
512 beq 1f
513 jsr r5,error; ')
514 rts pc
5151:
516 jsr pc,readop
517 rts pc
518
519setbr:
520 mov brtabp,r1
521 cmp r1,$brlen
522 blt 1f
523 mov $2,r2
524 rts pc
5251:
526 inc brtabp
527 clr -(sp)
528 sub dot,r0
529 ble 1f
530 sub brdelt,r0
5311:
532 jsr r5,betwen; -254.; 256.
533 br 1f
534 br 2f
5351:
536 mov r1,-(sp)
537 bic $!7,(sp)
538 mov $1,r0
539 ash (sp)+,r0
540 ash $-3,r1
541 bisb r0,brtab(r1)
542 mov $2,(sp)
5432:
544 mov (sp)+,r2
545 rts pc
546
547getbr:
548 mov brtabp,r1
549 cmp r1,$brlen
550 blt 1f
551 sec
552 rts pc
5531:
554 mov r1,-(sp)
555 bic $!7,(sp)
556 neg (sp)
557 inc brtabp
558 ash $-3,r1
559 movb brtab(r1),r1
560 ash (sp)+,r1
561 ror r1 / 0-bit into c-bit
562 rts pc