Add original unix v6
This commit is contained in:
@@ -0,0 +1,98 @@
|
||||
/ nlist -- extract values from name list
|
||||
/
|
||||
|
||||
/ nlist(file, list);
|
||||
/
|
||||
.globl _nlist
|
||||
|
||||
_nlist:
|
||||
mov r5,-(sp)
|
||||
mov sp,r5
|
||||
mov 4(r5),0f
|
||||
mov 6(r5),r1
|
||||
mov r2,-(sp)
|
||||
|
||||
mov r1,r0
|
||||
1:
|
||||
tst (r0)
|
||||
beq 1f
|
||||
add $8.,r0
|
||||
clr (r0)+
|
||||
clr (r0)+ / initialize to undefined
|
||||
br 1b
|
||||
1:
|
||||
sys 0; 9f
|
||||
.data
|
||||
9:
|
||||
sys open; 0:..; 0
|
||||
.text
|
||||
bes done
|
||||
mov r0,r2
|
||||
sys read; buf; 20
|
||||
cmp r0,$20
|
||||
bne cdone
|
||||
mov buf+4,count / assume older a.out
|
||||
mov buf+2,0f
|
||||
cmp buf,$405
|
||||
beq 1f
|
||||
mov buf+8.,count / now assume newer
|
||||
mov buf+2,r0 / txt
|
||||
add buf+4,r0 / data
|
||||
cmp buf+16,$1 / relocation?
|
||||
beq 4f
|
||||
asl r0 / txt+data reloc
|
||||
4:
|
||||
add $20,r0 / header
|
||||
mov r0,0f
|
||||
cmp buf,$411
|
||||
beq 1f
|
||||
cmp buf,$410
|
||||
beq 1f
|
||||
cmp buf,$407
|
||||
bne cdone
|
||||
1:
|
||||
mov r2,r0
|
||||
sys 0; 9f
|
||||
.data
|
||||
9:
|
||||
sys seek; 0:..; 0
|
||||
.text
|
||||
|
||||
1:
|
||||
sub $12.,count
|
||||
blt cdone
|
||||
mov r2,r0
|
||||
sys read; buf; 12.
|
||||
cmp r0,$12.
|
||||
bne cdone
|
||||
mov r1,r0
|
||||
|
||||
2:
|
||||
tst (r0)
|
||||
beq 1b
|
||||
cmp (r0),buf
|
||||
bne 1f
|
||||
cmp 2(r0),buf+2
|
||||
bne 1f
|
||||
cmp 4(r0),buf+4
|
||||
bne 1f
|
||||
cmp 6(r0),buf+6
|
||||
bne 1f
|
||||
mov buf+8.,8.(r0)
|
||||
mov buf+10.,10.(r0)
|
||||
1:
|
||||
add $12.,r0
|
||||
br 2b
|
||||
|
||||
cdone:
|
||||
mov r2,r0
|
||||
sys close
|
||||
|
||||
done:
|
||||
mov (sp)+,r2
|
||||
mov (sp)+,r5
|
||||
rts pc
|
||||
|
||||
.bss
|
||||
buf: .=.+20
|
||||
count: .=.+2
|
||||
Reference in New Issue
Block a user