home *** CD-ROM | disk | FTP | other *** search
- /
- /
-
- / a9 -- pdp-11 assembler pass 1
-
- eae = 0
-
- / key to types
-
- / 0 undefined
- / 1 absolute
- / 2 text
- / 3 data
- / 4 bss
- / 5 flop freg,dst (movfo, = stcfd)
- / 6 branch
- / 7 jsr
- / 10 rts
- / 11 sys
- / 12 movf (=ldf,stf)
- / 13 double operand (mov)
- / 14 flop fsrc,freg (addf)
- / 15 single operand (clr)
- / 16 .byte
- / 17 string (.ascii, "<")
- / 20 .even
- / 21 .if
- / 22 .endif
- / 23 .globl
- / 24 register
- / 25 .text
- / 26 .data
- / 27 .bss
- / 30 mul,div, etc
- / 31 sob
- / 32 .comm
- / 33 estimated text
- / 34 estimated data
- / 35 jbr
- / 36 jeq, jne, etc
-
- .data
- symtab:
- / special variables
-
- <.\0\0\0\0\0\0\0>; dotrel:02; dot:000000
- <..\0\0\0\0\0\0>; 01; dotdot:000000
-
- / register
-
- <r0\0\0\0\0\0\0>; 24;000000
- <r1\0\0\0\0\0\0>; 24;000001
- <r2\0\0\0\0\0\0>; 24;000002
- <r3\0\0\0\0\0\0>; 24;000003
- <r4\0\0\0\0\0\0>; 24;000004
- <r5\0\0\0\0\0\0>; 24;000005
- <sp\0\0\0\0\0\0>; 24;000006
- <pc\0\0\0\0\0\0>; 24;000007
-
- .if eae
-
- /eae & switches
-
- <csw\0\0\0\0\0>; 01;177570
- <div\0\0\0\0\0>; 01;177300
- <ac\0\0\0\0\0\0>; 01;177302
- <mq\0\0\0\0\0\0>; 01;177304
- <mul\0\0\0\0\0>; 01;177306
- <sc\0\0\0\0\0\0>; 01;177310
- <sr\0\0\0\0\0\0>; 01;177311
- <nor\0\0\0\0\0>; 01;177312
- <lsh\0\0\0\0\0>; 01;177314
- <ash\0\0\0\0\0>; 01;177316
-
- .endif
-
- / system calls
-
- <exit\0\0\0\0>; 01;0000001
- <fork\0\0\0\0>; 01;0000002
- <read\0\0\0\0>; 01;0000003
- <write\0\0\0>; 01;0000004
- <open\0\0\0\0>; 01;0000005
- <close\0\0\0>; 01;0000006
- <wait\0\0\0\0>; 01;0000007
- <creat\0\0\0>; 01;0000010
- <link\0\0\0\0>; 01;0000011
- <unlink\0\0>; 01;0000012
- <exec\0\0\0\0>; 01;0000013
- <chdir\0\0\0>; 01;0000014
- <time\0\0\0\0>; 01;0000015
- <makdir\0\0>; 01;0000016
- <chmod\0\0\0>; 01;0000017
- <chown\0\0\0>; 01;0000020
- <break\0\0\0>; 01;0000021
- <stat\0\0\0\0>; 01;0000022
- <seek\0\0\0\0>; 01;0000023
- <tell\0\0\0\0>; 01;0000024
- <mount\0\0\0>; 01;0000025
- <umount\0\0>; 01;0000026
- <setuid\0\0>; 01;0000027
- <getuid\0\0>; 01;0000030
- <stime\0\0\0>; 01;0000031
- <fstat\0\0\0>; 01;0000034
- <mdate\0\0\0>; 01;0000036
- <stty\0\0\0\0>; 01;0000037
- <gtty\0\0\0\0>; 01;0000040
- <nice\0\0\0\0>; 01;0000042
- <signal\0\0>; 01;0000060
-
- / double operand
-
- <mov\0\0\0\0\0>; 13;0010000
- <movb\0\0\0\0>; 13;0110000
- <cmp\0\0\0\0\0>; 13;0020000
- <cmpb\0\0\0\0>; 13;0120000
- <bit\0\0\0\0\0>; 13;0030000
- <bitb\0\0\0\0>; 13;0130000
- <bic\0\0\0\0\0>; 13;0040000
- <bicb\0\0\0\0>; 13;0140000
- <bis\0\0\0\0\0>; 13;0050000
- <bisb\0\0\0\0>; 13;0150000
- <add\0\0\0\0\0>; 13;0060000
- <sub\0\0\0\0\0>; 13;0160000
-
- / branch
-
- <br\0\0\0\0\0\0>; 06;0000400
- <bne\0\0\0\0\0>; 06;0001000
- <beq\0\0\0\0\0>; 06;0001400
- <bge\0\0\0\0\0>; 06;0002000
- <blt\0\0\0\0\0>; 06;0002400
- <bgt\0\0\0\0\0>; 06;0003000
- <ble\0\0\0\0\0>; 06;0003400
- <bpl\0\0\0\0\0>; 06;0100000
- <bmi\0\0\0\0\0>; 06;0100400
- <bhi\0\0\0\0\0>; 06;0101000
- <blos\0\0\0\0>; 06;0101400
- <bvc\0\0\0\0\0>; 06;0102000
- <bvs\0\0\0\0\0>; 06;0102400
- <bhis\0\0\0\0>; 06;0103000
- <bec\0\0\0\0\0>; 06;0103000
- <bcc\0\0\0\0\0>; 06;0103000
- <blo\0\0\0\0\0>; 06;0103400
- <bcs\0\0\0\0\0>; 06;0103400
- <bes\0\0\0\0\0>; 06;0103400
-
- / jump/branch type
-
- <jbr\0\0\0\0\0>; 35;0000400
- <jne\0\0\0\0\0>; 36;0001000
- <jeq\0\0\0\0\0>; 36;0001400
- <jge\0\0\0\0\0>; 36;0002000
- <jlt\0\0\0\0\0>; 36;0002400
- <jgt\0\0\0\0\0>; 36;0003000
- <jle\0\0\0\0\0>; 36;0003400
- <jpl\0\0\0\0\0>; 36;0100000
- <jmi\0\0\0\0\0>; 36;0100400
- <jhi\0\0\0\0\0>; 36;0101000
- <jlos\0\0\0\0>; 36;0101400
- <jvc\0\0\0\0\0>; 36;0102000
- <jvs\0\0\0\0\0>; 36;0102400
- <jhis\0\0\0\0>; 36;0103000
- <jec\0\0\0\0\0>; 36;0103000
- <jcc\0\0\0\0\0>; 36;0103000
- <jlo\0\0\0\0\0>; 36;0103400
- <jcs\0\0\0\0\0>; 36;0103400
- <jes\0\0\0\0\0>; 36;0103400
-
- / single operand
-
- <clr\0\0\0\0\0>; 15;0005000
- <clrb\0\0\0\0>; 15;0105000
- <com\0\0\0\0\0>; 15;0005100
- <comb\0\0\0\0>; 15;0105100
- <inc\0\0\0\0\0>; 15;0005200
- <incb\0\0\0\0>; 15;0105200
- <dec\0\0\0\0\0>; 15;0005300
- <decb\0\0\0\0>; 15;0105300
- <neg\0\0\0\0\0>; 15;0005400
- <negb\0\0\0\0>; 15;0105400
- <adc\0\0\0\0\0>; 15;0005500
- <adcb\0\0\0\0>; 15;0105500
- <sbc\0\0\0\0\0>; 15;0005600
- <sbcb\0\0\0\0>; 15;0105600
- <tst\0\0\0\0\0>; 15;0005700
- <tstb\0\0\0\0>; 15;0105700
- <ror\0\0\0\0\0>; 15;0006000
- <rorb\0\0\0\0>; 15;0106000
- <rol\0\0\0\0\0>; 15;0006100
- <rolb\0\0\0\0>; 15;0106100
- <asr\0\0\0\0\0>; 15;0006200
- <asrb\0\0\0\0>; 15;0106200
- <asl\0\0\0\0\0>; 15;0006300
- <aslb\0\0\0\0>; 15;0106300
- <jmp\0\0\0\0\0>; 15;0000100
- <swab\0\0\0\0>; 15;0000300
-
- / jsr
-
- <jsr\0\0\0\0\0>; 07;0004000
-
- / rts
-
- <rts\0\0\0\0\0>; 010;000200
-
- / simple operand
-
- <sys\0\0\0\0\0>; 011;104400
-
- / flag-setting
-
- <clc\0\0\0\0\0>; 01;0000241
- <clv\0\0\0\0\0>; 01;0000242
- <clz\0\0\0\0\0>; 01;0000244
- <cln\0\0\0\0\0>; 01;0000250
- <sec\0\0\0\0\0>; 01;0000261
- <sev\0\0\0\0\0>; 01;0000262
- <sez\0\0\0\0\0>; 01;0000264
- <sen\0\0\0\0\0>; 01;0000270
-
- / floating point ops
-
- <cfcc\0\0\0\0>; 01;170000
- <setf\0\0\0\0>; 01;170001
- <setd\0\0\0\0>; 01;170011
- <seti\0\0\0\0>; 01;170002
- <setl\0\0\0\0>; 01;170012
- <clrf\0\0\0\0>; 15;170400
- <negf\0\0\0\0>; 15;170700
- <absf\0\0\0\0>; 15;170600
- <tstf\0\0\0\0>; 15;170500
- <movf\0\0\0\0>; 12;172400
- <movif\0\0\0>; 14;177000
- <movfi\0\0\0>; 05;175400
- <movof\0\0\0>; 14;177400
- <movfo\0\0\0>; 05;176000
- <addf\0\0\0\0>; 14;172000
- <subf\0\0\0\0>; 14;173000
- <mulf\0\0\0\0>; 14;171000
- <divf\0\0\0\0>; 14;174400
- <cmpf\0\0\0\0>; 14;173400
- <modf\0\0\0\0>; 14;171400
- <movie\0\0\0>; 14;176400
- <movei\0\0\0>; 05;175000
- <ldfps\0\0\0>; 15;170100
- <stfps\0\0\0>; 15;170200
- <fr0\0\0\0\0\0>; 24;000000
- <fr1\0\0\0\0\0>; 24;000001
- <fr2\0\0\0\0\0>; 24;000002
- <fr3\0\0\0\0\0>; 24;000003
- <fr4\0\0\0\0\0>; 24;000004
- <fr5\0\0\0\0\0>; 24;000005
-
- / 11/45 operations
-
- <als\0\0\0\0\0>; 30;072000
- <alsc\0\0\0\0>; 30;073000
- <mpy\0\0\0\0\0>; 30;070000
- .if eae-1
- <mul\0\0\0\0\0>; 30;070000
- <div\0\0\0\0\0>; 30;071000
- <ash\0\0\0\0\0>; 30;072000
- <ashc\0\0\0\0>; 30;073000
- .endif
- <dvd\0\0\0\0\0>; 30;071000
- <xor\0\0\0\0\0>; 07;074000
- <sxt\0\0\0\0\0>; 15;006700
- <mark\0\0\0\0>; 11;006400
- <sob\0\0\0\0\0>; 31;077000
-
- / specials
-
- <.byte\0\0\0>; 16;000000
- <.even\0\0\0>; 20;000000
- <.if\0\0\0\0\0>; 21;000000
- <.endif\0\0>; 22;000000
- <.globl\0\0>; 23;000000
- <.text\0\0\0>; 25;000000
- <.data\0\0\0>; 26;000000
- <.bss\0\0\0\0>; 27;000000
- <.comm\0\0\0>; 32;000000
-
- ebsymtab:
-
-
- start:
- sys signal; 2; 1
- ror r0
- bcs 1f
- sys signal; 2; aexit
- 1:
- mov sp,r5
- mov (r5)+,r0
- cmpb *2(r5),$'-
- bne 1f
- tst (r5)+
- dec r0
- br 2f
- 1:
- clr unglob
- 2:
- movb r0,nargs
- mov r5,curarg
- jsr r5,fcreat; a.tmp1
- movb r0,pof
- jsr r5,fcreat; a.tmp2
- movb r0,fbfil
- jsr pc,setup
- jmp go
-
- setup:
- mov $symtab,r1
- 1:
- clr r3
- mov $8,r2
- mov r1,-(sp)
- 2:
- movb (r1)+,r4
- beq 2f
- add r4,r3
- swab r3
- sob r2,2b
- 2:
- clr r2
- div $hshsiz,r2
- ashc $1,r2
- add $hshtab,r3
- 4:
- sub r2,r3
- cmp r3,$hshtab
- bhi 3f
- add $2*hshsiz,r3
- 3:
- tst -(r3)
- bne 4b
- mov (sp)+,r1
- mov r1,(r3)
- add $12.,r1
- cmp r1,$ebsymtab
- blo 1b
- rts pc
-
- /overlay buffer
- inbuf = setup
- . =inbuf+512.
-
-