331 lines
6.4 KiB
ArmAsm
331 lines
6.4 KiB
ArmAsm
/ db3 -- debugger
|
|
|
|
psym:
|
|
mov $2,incdot
|
|
jsr pc,prints
|
|
jsr pc,pnl
|
|
rts pc
|
|
|
|
prints:
|
|
mov r0,-(sp)
|
|
mov $optab,r1
|
|
1:
|
|
mov (sp),r0
|
|
bic (r1)+,r0
|
|
cmp (r1)+,r0
|
|
bne 2f
|
|
mov (r1)+,-(sp)
|
|
jsr pc,string
|
|
jmp *(sp)+
|
|
2:
|
|
add $8.,r1
|
|
br 1b
|
|
|
|
optab:
|
|
107777; 010000; double; <mov\0\0\0>
|
|
107777; 020000; double; <cmp\0\0\0>
|
|
107777; 030000; double; <bit\0\0\0>
|
|
107777; 040000; double; <bic\0\0\0>
|
|
107777; 050000; double; <bis\0\0\0>
|
|
007777; 060000; double; <add\0\0\0>
|
|
007777; 160000; double; <su\0\0\0\0>
|
|
|
|
100077; 005000; single; <clr\0\0\0>
|
|
100077; 005100; single; <com\0\0\0>
|
|
100077; 005200; single; <inc\0\0\0>
|
|
100077; 005300; single; <dec\0\0\0>
|
|
100077; 005400; single; <neg\0\0\0>
|
|
100077; 005500; single; <adc\0\0\0>
|
|
100077; 005600; single; <sbc\0\0\0>
|
|
100077; 005700; single; <tst\0\0\0>
|
|
100077; 006000; single; <ror\0\0\0>
|
|
100077; 006100; single; <rol\0\0\0>
|
|
100077; 006200; single; <asr\0\0\0>
|
|
100077; 006300; single; <asl\0\0\0>
|
|
000077; 000100; single; <jmp\0\0\0>
|
|
000077; 000300; single; <swab\0\0>
|
|
000077; 170100; singlw; <ldfps\0>
|
|
000077; 170200; singlw; <stfps\0>
|
|
000077; 170300; singlw; <stst\0\0>
|
|
000077; 170400; singlw; <clrf\0\0>
|
|
000077; 170500; singlw; <tstf\0\0>
|
|
000077; 170600; singlw; <absf\0\0>
|
|
000077; 170700; singlw; <negf\0\0>
|
|
000077; 006700; singlw; <sxt\0\0\0>
|
|
000077; 006600; singlw; <mtpi\0\0>
|
|
000077; 106600; singlw; <mtpd\0\0>
|
|
000077; 006500; singlw; <mfpi\0\0>
|
|
000077; 106500; singlw; <mfpd\0\0>
|
|
000777; 070000; muldiv; <mul\0\0\0>
|
|
000777; 071000; muldiv; <div\0\0\0>
|
|
000777; 072000; muldiv; <ash\0\0\0>
|
|
000777; 073000; muldiv; <ashc\0\0>
|
|
|
|
000377; 000400; branch; <br\0\0\0\0>
|
|
000377; 001000; branch; <bne\0\0\0>
|
|
000377; 001400; branch; <beq\0\0\0>
|
|
000377; 002000; branch; <bge\0\0\0>
|
|
000377; 002400; branch; <blt\0\0\0>
|
|
000377; 003000; branch; <bgt\0\0\0>
|
|
000377; 003400; branch; <ble\0\0\0>
|
|
000377; 100000; branch; <bpl\0\0\0>
|
|
000377; 100400; branch; <bmi\0\0\0>
|
|
000377; 101000; branch; <bhi\0\0\0>
|
|
000377; 101400; branch; <blos\0\0>
|
|
000377; 102000; branch; <bvc\0\0\0>
|
|
000377; 102400; branch; <bvs\0\0\0>
|
|
000377; 103000; branch; <bhis\0\0>
|
|
000377; 103400; branch; <blo\0\0\0>
|
|
|
|
000000; 000000; noaddr; <halt\0\0>
|
|
000000; 000001; noaddr; <wait\0\0>
|
|
000000; 000002; noaddr; <rti\0\0\0>
|
|
000000; 000004; noaddr; <iot\0\0\0>
|
|
000000; 000005; noaddr; <reset\0>
|
|
|
|
000377; 171000; fltrev; <mulf\0\0>
|
|
000377; 171400; fltrev; <modf\0\0>
|
|
000377; 172000; fltrev; <addf\0\0>
|
|
000377; 172400; fltrev; <movf\0\0>
|
|
000377; 173000; fltrev; <subf\0\0>
|
|
000377; 173400; fltrev; <cmpf\0\0>
|
|
000377; 174000; fltnor; <movf\0\0>
|
|
000377; 174400; fltrev; <divf\0\0>
|
|
000377; 175000; fltnor; <movei\0>
|
|
000377; 175400; fltnor; <movfi\0>
|
|
000377; 176000; fltnor; <movfo\0>
|
|
000377; 176400; fltrev; <movie\0>
|
|
000377; 177000; fltrev; <movif\0>
|
|
000377; 177400; fltrev; <movof\0>
|
|
000000; 170000; noaddr; <cfcc\0\0>
|
|
000000; 170001; noaddr; <setf\0\0>
|
|
000000; 170002; noaddr; <seti\0\0>
|
|
000000; 170011; noaddr; <setd\0\0>
|
|
000000; 170012; noaddr; <setl\0\0>
|
|
|
|
000777; 004000; specl1; <jsr\0\0\0>
|
|
000777; 074000; specl1; <xor\0\0\0>
|
|
000007; 000200; specl2; <rts\0\0\0>
|
|
000017; 000240; specl3; <cflg\0\0>
|
|
000017; 000260; specl3; <sflg\0\0>
|
|
000377; 104000; specl4; <emt\0\0\0>
|
|
000377; 104400; specl5; <sys\0\0\0>
|
|
000077; 006400; specl7; <mark\0\0>
|
|
000777; 077000; specl8; <sob\0\0\0>
|
|
000007; 000230; specl9; <spl\0\0\0>
|
|
177777; 000000; specl6; <oct\0\0\0>
|
|
|
|
fltrev:
|
|
bic $!377,(sp)
|
|
muldiv:
|
|
jsr pc,psp
|
|
mov (sp)+,r0
|
|
asl r0
|
|
asl r0
|
|
swab r0
|
|
aslb r0
|
|
aslb r0
|
|
aslb r0
|
|
aslb r0
|
|
asr r0
|
|
asr r0
|
|
asr r0
|
|
asr r0
|
|
bic $!7707,r0
|
|
mov r0,-(sp)
|
|
br fltnor1
|
|
|
|
fltnor:
|
|
bic $!377,(sp)
|
|
br 1f
|
|
|
|
double:
|
|
tst (sp)
|
|
bge 1f
|
|
jsr pc,pb
|
|
1:
|
|
jsr pc,psp
|
|
mov (sp),r0
|
|
fltnor1:
|
|
als $-6,r0
|
|
jsr r5,decodadr; dot
|
|
add r0,incdot
|
|
add dot,r0
|
|
mov r0,temp
|
|
jsr pc,pcom
|
|
mov (sp)+,r0
|
|
jsr r5,decodadr; temp
|
|
add r0,incdot
|
|
rts pc
|
|
|
|
single:
|
|
tst (sp)
|
|
bge singlw
|
|
jsr pc,pb
|
|
singlw:
|
|
jsr pc,psp
|
|
mov (sp)+,r0
|
|
jsr r5,decodadr; dot
|
|
add r0,incdot
|
|
rts pc
|
|
|
|
specl8: / sob
|
|
jsr pc,psp
|
|
mov (sp),r3
|
|
als $-6,r3
|
|
jsr pc,preg
|
|
jsr pc,pcom
|
|
mov (sp)+,r0
|
|
bic $!77,r0
|
|
neg r0
|
|
br 1f
|
|
|
|
branch:
|
|
jsr pc,psp
|
|
mov (sp)+,r0
|
|
bic $!377,r0
|
|
bit $200,r0
|
|
beq 1f
|
|
bis $177400,r0
|
|
1:
|
|
inc r0
|
|
asl r0
|
|
add dot,r0
|
|
jsr pc,pname
|
|
rts pc
|
|
|
|
noaddr:
|
|
tst (sp)+
|
|
rts pc
|
|
|
|
specl1: / jsr
|
|
jsr pc,psp
|
|
mov (sp),r3
|
|
als $-6,r3
|
|
jsr pc,preg
|
|
jsr pc,pcom
|
|
mov (sp)+,r0
|
|
jsr r5,decodadr; dot
|
|
add r0,incdot
|
|
rts pc
|
|
|
|
specl2: / rts
|
|
jsr pc,psp
|
|
mov (sp)+,r3
|
|
jsr pc,preg
|
|
rts pc
|
|
|
|
specl3: / opr
|
|
jsr pc,psp
|
|
mov (sp)+,r2
|
|
mov $3f,r1
|
|
1:
|
|
bit $17,r2
|
|
beq 1f
|
|
bit $10,r2
|
|
beq 2f
|
|
movb (r1),r0
|
|
jsr pc,putc
|
|
2:
|
|
inc r1
|
|
asl r2
|
|
br 1b
|
|
1:
|
|
rts pc
|
|
3:
|
|
<nzvc>
|
|
|
|
specl7: / mark
|
|
bic $!77,(sp)
|
|
br specl4
|
|
|
|
specl9: / spl
|
|
bic $!7,(sp)
|
|
br specl4
|
|
|
|
specl4: / emt
|
|
jsr pc,psp
|
|
mov (sp)+,r0
|
|
bic $!377,r0
|
|
8:
|
|
jsr pc,printo
|
|
rts pc
|
|
|
|
specl5: / sys
|
|
jsr pc,psp
|
|
mov (sp)+,r2
|
|
bic $!377,r2
|
|
mov r2,r0
|
|
asl r2
|
|
asl r2
|
|
cmp r2,$esystab-systab
|
|
bhis 8b
|
|
mov systab(r2),r1
|
|
jsr pc,string
|
|
mov systab+2(r2),-(sp)
|
|
mov dot,temp1
|
|
1:
|
|
dec (sp)
|
|
bge 2f
|
|
tst (sp)+
|
|
rts pc
|
|
2:
|
|
jsr r5,mesg; <;\0>
|
|
add $2,temp1
|
|
add $2,incdot
|
|
jsr r5,get; temp1
|
|
jsr pc,pname
|
|
br 1b
|
|
|
|
systab:
|
|
1f; 0; .data; 1:<rele\0>; .text
|
|
1f; 0; .data; 1:<exit\0>; .text
|
|
1f; 0; .data; 1:<fork\0>; .text
|
|
1f; 2; .data; 1:<read\0>; .text
|
|
1f; 2; .data; 1:<write\0>; .text
|
|
1f; 2; .data; 1:<open\0>; .text
|
|
1f; 0; .data; 1:<close\0>; .text
|
|
1f; 0; .data; 1:<wait\0>; .text
|
|
1f; 2; .data; 1:<creat\0>; .text
|
|
1f; 2; .data; 1:<link\0>; .text
|
|
1f; 1; .data; 1:<unlink\0>; .text
|
|
1f; 2; .data; 1:<exec\0>; .text
|
|
1f; 1; .data; 1:<chdir\0>; .text
|
|
1f; 0; .data; 1:<time\0>; .text
|
|
1f; 1; .data; 1:<makdir\0>; .text
|
|
1f; 2; .data; 1:<chmod\0>; .text
|
|
1f; 2; .data; 1:<chown\0>; .text
|
|
1f; 1; .data; 1:<break\0>; .text
|
|
1f; 2; .data; 1:<stat\0>; .text
|
|
1f; 2; .data; 1:<seek\0>; .text
|
|
1f; 2; .data; 1:<tell\0>; .text
|
|
1f; 2; .data; 1:<mount\0>; .text
|
|
1f; 1; .data; 1:<umount\0>; .text
|
|
1f; 0; .data; 1:<setuid\0>; .text
|
|
1f; 0; .data; 1:<getuid\0>; .text
|
|
1f; 0; .data; 1:<stime\0>; .text
|
|
1f; 1; .data; 1:<quit\0>; .text
|
|
1f; 1; .data; 1:<intr\0>; .text
|
|
1f; 1; .data; 1:<fstat\0>; .text
|
|
1f; 1; .data; 1:<emt\0>; .text
|
|
1f; 1; .data; 1:<smdate\0>; .text
|
|
1f; 1; .data; 1:<stty\0>; .text
|
|
1f; 1; .data; 1:<gtty\0>; .text
|
|
1f; 1; .data; 1:<ilgins\0>; .text
|
|
1f; 0; .data; 1:<hog\0>; .text
|
|
1f; 0; .data; 1:<sleep\0>; .text
|
|
1f; 0; .data; 1:<sync\0>; .text
|
|
1f; 0; .data; 1:<kill\0>; .text
|
|
1f; 0; .data; 1:<switches\0>; .text
|
|
1f; 0; .data; 1:<boot\0>; .text
|
|
esystab:
|
|
.data
|
|
.even
|
|
.text
|
|
|
|
specl6: / unknown
|
|
jsr pc,psp
|
|
mov (sp)+,r0
|
|
jsr pc,printo
|
|
rts pc
|