Add original unix v6
This commit is contained in:
+375
@@ -0,0 +1,375 @@
|
||||
/ db2 -- debugger
|
||||
|
||||
lookupn:
|
||||
cmp symbol,$'.
|
||||
bne 1f
|
||||
mov dot,taddr
|
||||
rts pc
|
||||
1:
|
||||
tst error
|
||||
beq 1f
|
||||
rts pc
|
||||
1:
|
||||
mov r2,-(sp)
|
||||
mov namstrt,r1
|
||||
mov namsiz,r2
|
||||
jsr pc,1f
|
||||
mov (sp)+,r2
|
||||
rts pc
|
||||
1:
|
||||
mov $symbol,r0
|
||||
cmp (r0)+,(r1)+
|
||||
bne 2f
|
||||
cmp (r0)+,(r1)+
|
||||
bne 3f
|
||||
cmp (r0)+,(r1)+
|
||||
bne 4f
|
||||
cmp (r0)+,(r1)+
|
||||
bne 5f
|
||||
tst (r1)+
|
||||
mov (r1)+,taddr
|
||||
rts pc
|
||||
2:
|
||||
tst (r1)+
|
||||
3:
|
||||
tst (r1)+
|
||||
4:
|
||||
tst (r1)+
|
||||
5:
|
||||
cmp (r1)+,(r1)+
|
||||
cmp r1,r2
|
||||
blo 1b
|
||||
inc error
|
||||
clr taddr
|
||||
rts pc
|
||||
|
||||
lookupv:
|
||||
mov r5,-(sp)
|
||||
mov $nambuf,r5
|
||||
clr r2
|
||||
mov $177777,r3
|
||||
1:
|
||||
cmp r5,namsiz
|
||||
bhis 4f
|
||||
mov 12(r5),r1
|
||||
sub r0,r1
|
||||
neg r1
|
||||
blt 3f
|
||||
cmp r1,r3
|
||||
bhi 3f
|
||||
cmp r1,$4000
|
||||
bhis 3f
|
||||
cmp r2,r5
|
||||
bhi 3f
|
||||
mov r1,r3
|
||||
mov r5,r2
|
||||
3:
|
||||
add $14,r5
|
||||
br 1b
|
||||
4:
|
||||
mov (sp)+,r5
|
||||
rts pc
|
||||
|
||||
get:
|
||||
mov *(r5)+,r0
|
||||
jsr r5,remap
|
||||
tst error
|
||||
bne 2f
|
||||
mov r0,0f
|
||||
mov curfin,r0
|
||||
sys seek; 0:0; 0
|
||||
bec 1f
|
||||
2:
|
||||
inc error
|
||||
rts r5
|
||||
1:
|
||||
mov curfin,r0
|
||||
sys read; temp; 2
|
||||
bes 2b
|
||||
tst r0
|
||||
beq 2b
|
||||
mov temp,r0
|
||||
rts r5
|
||||
|
||||
remap:
|
||||
mov dbfin,curfin
|
||||
cmp getoff,$1024.
|
||||
bne 1f
|
||||
cmp r0,txtsiz
|
||||
bhis 2f
|
||||
add $20,r0
|
||||
mov symfin,curfin
|
||||
rts r5
|
||||
2:
|
||||
cmp r0,rtxtsiz
|
||||
blo 3f
|
||||
sub rtxtsiz,r0
|
||||
cmp r0,datsiz
|
||||
bhis 2f
|
||||
add $1024.,r0
|
||||
rts r5
|
||||
2:
|
||||
add rtxtsiz,r0
|
||||
neg r0
|
||||
cmp r0,stksiz
|
||||
bhi 3f
|
||||
neg r0
|
||||
add datsiz,r0
|
||||
add stksiz,r0
|
||||
add $1024.,r0
|
||||
rts r5
|
||||
1:
|
||||
add getoff,r0
|
||||
rts r5
|
||||
3:
|
||||
inc error
|
||||
rts r5
|
||||
|
||||
printo:
|
||||
mov $obuf+6,r1
|
||||
clr r2
|
||||
1:
|
||||
inc r2
|
||||
movb r0,-(r1)
|
||||
bicb $!7,(r1)
|
||||
bisb $'0,(r1)
|
||||
clc
|
||||
ror r0
|
||||
asr r0
|
||||
asr r0
|
||||
bne 1b
|
||||
mov r2,0f+2
|
||||
mov r1,0f
|
||||
mov $1,r0
|
||||
sys write; 0:obuf; 6
|
||||
rts pc
|
||||
|
||||
mesg:
|
||||
movb (r5)+,r0
|
||||
beq 1f
|
||||
jsr pc,putc
|
||||
br mesg
|
||||
1:
|
||||
inc r5
|
||||
bic $1,r5
|
||||
rts r5
|
||||
|
||||
pnl:
|
||||
jsr r5,mesg; <\n\0>
|
||||
rts pc
|
||||
|
||||
psp:
|
||||
jsr r5,mesg; < \0>
|
||||
rts pc
|
||||
|
||||
pstar:
|
||||
jsr r5,mesg; <*\0>
|
||||
rts pc
|
||||
|
||||
plp:
|
||||
jsr r5,mesg; <(\0>
|
||||
rts pc
|
||||
|
||||
prp:
|
||||
jsr r5,mesg; <)\0>
|
||||
rts pc
|
||||
|
||||
pb:
|
||||
jsr r5,mesg; <b\0>
|
||||
rts pc
|
||||
|
||||
pcom:
|
||||
jsr r5,mesg; <,\0>
|
||||
rts pc
|
||||
|
||||
put:
|
||||
mov *(r5)+,r0
|
||||
jsr r5,remap
|
||||
tst error
|
||||
bne 2f
|
||||
cmp curfin,dbfin
|
||||
bne 2f
|
||||
mov r0,0f
|
||||
mov dbfout,r0
|
||||
bne 1f
|
||||
2:
|
||||
tst (r5)+
|
||||
3:
|
||||
inc error
|
||||
rts r5
|
||||
1:
|
||||
tst error
|
||||
bne 3b
|
||||
sys seek; 0:0; 0
|
||||
bes 2b
|
||||
mov (r5)+,0f
|
||||
mov dbfout,r0
|
||||
tst bytemod
|
||||
beq 1f
|
||||
mov $1,0f+2
|
||||
br 2f
|
||||
1:
|
||||
mov $2,0f+2
|
||||
2:
|
||||
sys write; 0:0; 2
|
||||
bes 3b
|
||||
rts r5
|
||||
|
||||
decodadr:
|
||||
mov r0,r3
|
||||
mov r3,-(sp)
|
||||
bic $!10,(sp)
|
||||
bic $!7,r0
|
||||
cmp r0,$7
|
||||
beq pcadr
|
||||
7:
|
||||
mov r3,r0
|
||||
asr r0
|
||||
asr r0
|
||||
asr r0
|
||||
bic $!6,r0
|
||||
jmp *1f(r0)
|
||||
|
||||
1:
|
||||
simp
|
||||
incr
|
||||
decr
|
||||
indx
|
||||
|
||||
simp:
|
||||
tst (sp)
|
||||
beq 1f
|
||||
jsr pc,plp
|
||||
1:
|
||||
jsr pc,preg
|
||||
tst (sp)+
|
||||
beq 9f
|
||||
jsr pc,prp
|
||||
br 9f
|
||||
|
||||
incr:
|
||||
tst (sp)+
|
||||
beq 1f
|
||||
jsr pc,pstar
|
||||
1:
|
||||
jsr pc,plp
|
||||
jsr pc,preg
|
||||
jsr r5,mesg; <)+\0>; .even
|
||||
br 9f
|
||||
|
||||
decr:
|
||||
tst (sp)+
|
||||
beq 1f
|
||||
jsr pc,pstar
|
||||
1:
|
||||
jsr r5,mesg; <-(\0>; .even
|
||||
jsr pc,preg
|
||||
jsr pc,prp
|
||||
br 9f
|
||||
|
||||
indx:
|
||||
tst (sp)+
|
||||
beq 1f
|
||||
jsr pc,pstar
|
||||
1:
|
||||
jsr pc,get1
|
||||
jsr pc,pname
|
||||
jsr pc,plp
|
||||
jsr pc,preg
|
||||
jsr pc,prp
|
||||
br 5f
|
||||
|
||||
pcadr:
|
||||
mov r3,r0
|
||||
bit $20,r3
|
||||
beq 7b
|
||||
tst (sp)+
|
||||
beq 1f
|
||||
jsr pc,pstar
|
||||
1:
|
||||
bit $40,r3
|
||||
bne 6f
|
||||
jsr r5,mesg; <$\0>
|
||||
jsr pc,get1
|
||||
jsr pc,pname
|
||||
br 5f
|
||||
6:
|
||||
jsr pc,get1
|
||||
add $2,r0
|
||||
add r1,r0
|
||||
mov $3,r1
|
||||
jsr pc,pname
|
||||
br 5f
|
||||
9:
|
||||
tst (r5)+
|
||||
clr r0
|
||||
rts r5
|
||||
5:
|
||||
mov $2,r0
|
||||
rts r5
|
||||
|
||||
preg:
|
||||
mov r3,r0
|
||||
bic $!7,r0
|
||||
asl r0
|
||||
mov regtab(r0),obuf
|
||||
mov $1,r0
|
||||
sys write; obuf; 2
|
||||
rts pc
|
||||
|
||||
regtab:
|
||||
"r0
|
||||
"r1
|
||||
"r2
|
||||
"r3
|
||||
"r4
|
||||
"r5
|
||||
"sp
|
||||
"pc
|
||||
|
||||
pname:
|
||||
mov r5,-(sp)
|
||||
mov r3,-(sp)
|
||||
mov r1,-(sp)
|
||||
jsr pc,lookupv
|
||||
tst r2
|
||||
beq 5f
|
||||
cmp (sp),$1
|
||||
bne 1f
|
||||
tst r3
|
||||
bne 5f
|
||||
1:
|
||||
mov r2,r1
|
||||
mov $8,-(sp)
|
||||
mov r0,r5
|
||||
1:
|
||||
movb (r1)+,r0
|
||||
beq 1f
|
||||
jsr pc,putc
|
||||
dec (sp)
|
||||
bne 1b
|
||||
1:
|
||||
tst (sp)+
|
||||
cmp 12(r2),r5
|
||||
beq 1f
|
||||
blt 2f
|
||||
jsr r5,mesg; <-\0>
|
||||
br 3f
|
||||
2:
|
||||
jsr r5,mesg; <+\0>
|
||||
3:
|
||||
mov r3,r0
|
||||
5:
|
||||
jsr pc,printo
|
||||
1:
|
||||
tst (sp)+
|
||||
mov (sp)+,r3
|
||||
mov (sp)+,r5
|
||||
rts pc
|
||||
|
||||
get1:
|
||||
mov *(r5)+,r1
|
||||
add $2,r1
|
||||
mov r1,temp
|
||||
jsr r5,get; temp
|
||||
rts pc
|
||||
Reference in New Issue
Block a user