Add original unix v6
This commit is contained in:
+203
@@ -0,0 +1,203 @@
|
||||
/ dusg -- summarize disk usage
|
||||
|
||||
.globl putc, flush, _end
|
||||
mov $1,obuf
|
||||
mov (sp)+,r5
|
||||
tst (sp)+
|
||||
1:
|
||||
dec r5
|
||||
bgt 2f
|
||||
tstb buf1
|
||||
beq 3f
|
||||
jsr r5,flush; obuf
|
||||
sys exit
|
||||
3:
|
||||
mov $dot,r0
|
||||
br 3f
|
||||
2:
|
||||
mov (sp)+,r0
|
||||
3:
|
||||
cmpb (r0),$'-
|
||||
bne 2f
|
||||
cmpb 1(r0),$'a
|
||||
bne 3f
|
||||
inc aflg
|
||||
br 1b
|
||||
3:
|
||||
cmpb 1(r0),$'s
|
||||
bne 1b
|
||||
dec aflg
|
||||
br 1b
|
||||
2:
|
||||
mov $buf1,r1
|
||||
2:
|
||||
movb (r0)+,(r1)+
|
||||
bne 2b
|
||||
dec r1
|
||||
clr buf3+10.
|
||||
mov $_end,iptr
|
||||
mov $_end,brk
|
||||
sys break; _end
|
||||
jsr pc,tree
|
||||
tst aflg
|
||||
bpl 1b
|
||||
jsr r5,name
|
||||
br 1b
|
||||
|
||||
tree:
|
||||
sys stat; buf1; buf2
|
||||
bes 1f
|
||||
bic $!60000,buf2+4
|
||||
bit $20000,buf2+4
|
||||
beq 2f
|
||||
1:
|
||||
clr r4
|
||||
rts pc
|
||||
2:
|
||||
mov $_end,r2
|
||||
mov buf2+2,r3
|
||||
1:
|
||||
cmp r2,iptr
|
||||
bhis 1f
|
||||
cmp r3,(r2)+
|
||||
bne 1b
|
||||
clr r4
|
||||
jsr r5,cname
|
||||
rts pc
|
||||
1:
|
||||
cmp r2,brk
|
||||
blo 1f
|
||||
add $512.,brk
|
||||
sys break; brk: ..
|
||||
1:
|
||||
mov r3,(r2)+
|
||||
mov r2,iptr
|
||||
cmp $40000,buf2+4
|
||||
beq 1f
|
||||
jsr pc,gsize
|
||||
jsr r5,cname
|
||||
rts pc
|
||||
1:
|
||||
jsr pc,gsize
|
||||
mov r4,r3
|
||||
sys open; buf1; 0
|
||||
bec 1f
|
||||
rts pc
|
||||
1:
|
||||
mov r0,-(sp)
|
||||
mov r1,-(sp)
|
||||
1:
|
||||
mov 2(sp),r0
|
||||
sys read; buf3; 16.
|
||||
bes 1f
|
||||
tst r0
|
||||
beq 1f
|
||||
tst buf3
|
||||
beq 1b
|
||||
cmp buf3+2,$".\0
|
||||
beq 1b
|
||||
cmp buf3+2,$"..
|
||||
bne 2f
|
||||
tst buf3+4
|
||||
beq 1b
|
||||
2:
|
||||
mov $buf3+2,r2
|
||||
mov (sp),r1
|
||||
movb $'/,(r1)+
|
||||
cmpb -2(r1),$'/
|
||||
bne 2f
|
||||
dec r1
|
||||
2:
|
||||
movb (r2)+,(r1)+
|
||||
bne 2b
|
||||
dec r1
|
||||
mov r3,-(sp)
|
||||
jsr pc,tree
|
||||
mov r4,r3
|
||||
add (sp)+,r3
|
||||
br 1b
|
||||
1:
|
||||
mov (sp)+,r1
|
||||
clrb (r1)
|
||||
mov (sp)+,r0
|
||||
sys close
|
||||
mov r3,r4
|
||||
tst aflg
|
||||
bmi 1f
|
||||
jsr r5,name
|
||||
1:
|
||||
rts pc
|
||||
|
||||
cname:
|
||||
tst aflg
|
||||
bgt name
|
||||
rts r5
|
||||
|
||||
name:
|
||||
jsr pc,pnum
|
||||
mov $011,r0
|
||||
jsr pc,pchar
|
||||
mov $buf1,r2
|
||||
1:
|
||||
movb (r2)+,r0
|
||||
beq 1f
|
||||
jsr pc,pchar
|
||||
br 1b
|
||||
1:
|
||||
mov $'\n,r0
|
||||
jsr pc,pchar
|
||||
rts r5
|
||||
|
||||
gsize:
|
||||
mov r5,-(sp)
|
||||
mov buf2+10.,r5 / size
|
||||
movb buf2+9.,r4
|
||||
add $511.,r5
|
||||
adc r4
|
||||
alsc $-9,r4
|
||||
cmp r5,$8.
|
||||
blo 1f
|
||||
mov r5,-(sp)
|
||||
add $255.,r5
|
||||
alsc $-8,r4
|
||||
add (sp)+,r5
|
||||
1:
|
||||
mov r5,r4
|
||||
mov (sp)+,r5
|
||||
rts pc
|
||||
|
||||
pnum:
|
||||
mov r4,-(sp)
|
||||
mov r5,-(sp)
|
||||
mov r4,r5
|
||||
jsr pc,1f
|
||||
mov (sp)+,r5
|
||||
mov (sp)+,r4
|
||||
rts pc
|
||||
1:
|
||||
clr r4
|
||||
dvd $10.,r4
|
||||
mov r5,-(sp)
|
||||
mov r4,r5
|
||||
beq 1f
|
||||
jsr pc,1b
|
||||
1:
|
||||
mov (sp)+,r0
|
||||
add $'0,r0
|
||||
jsr pc,pchar
|
||||
rts pc
|
||||
|
||||
pchar:
|
||||
jsr r5,putc; obuf
|
||||
rts pc
|
||||
|
||||
dot: <.\0>
|
||||
|
||||
.bss
|
||||
|
||||
iptr: .=.+2
|
||||
buf1: .=.+100.
|
||||
buf2: .=.+40.
|
||||
buf3: .=.+18.
|
||||
aflg: .=.+2
|
||||
obuf: .=.+520.
|
||||
Reference in New Issue
Block a user