Add original unix v6
This commit is contained in:
@@ -0,0 +1,81 @@
|
||||
/ sum -- check sum file
|
||||
|
||||
mov (sp)+,r3
|
||||
tst (sp)+
|
||||
loop: dec r3
|
||||
bgt 1f
|
||||
sys exit
|
||||
1:
|
||||
clr bcnt
|
||||
mov (sp)+,0f
|
||||
sys open; 0:..; 0
|
||||
bec 3f
|
||||
mov $1,r0
|
||||
sys write; 1f; 2f-1f
|
||||
br loop
|
||||
1: <oprd\n>
|
||||
2: .even
|
||||
3: mov r0,r1
|
||||
clr r5
|
||||
1:
|
||||
mov r1,r0
|
||||
sys read; buf; 512.
|
||||
bes err
|
||||
tst r0
|
||||
beq print
|
||||
inc bcnt
|
||||
mov $buf,r2
|
||||
2:
|
||||
movb (r2)+,r4
|
||||
add r4,r5
|
||||
adc r5
|
||||
sob r0,2b
|
||||
br 1b
|
||||
|
||||
err:
|
||||
mov $1,r0
|
||||
sys write; 1f; 2
|
||||
|
||||
print:
|
||||
jsr pc,decml
|
||||
mov $1,r0
|
||||
sys write; bl; 1
|
||||
mov bcnt,r5
|
||||
jsr pc,decml
|
||||
mov $1,r0
|
||||
sys write; nl; 1
|
||||
mov r1,r0
|
||||
sys close
|
||||
br loop
|
||||
1: <? >
|
||||
nl: <\n>
|
||||
bl: < >
|
||||
.even
|
||||
|
||||
decml:
|
||||
mov r0,-(sp)
|
||||
mov r1,-(sp)
|
||||
mov r5,r1
|
||||
jsr pc,1f
|
||||
mov (sp)+,r1
|
||||
mov (sp)+,r0
|
||||
rts pc
|
||||
|
||||
1:
|
||||
clr r0
|
||||
dvd $10.,r0
|
||||
mov r1,-(sp)
|
||||
mov r0,r1
|
||||
beq 1f
|
||||
jsr pc,1b
|
||||
1:
|
||||
mov (sp)+,ch
|
||||
add $'0,ch
|
||||
mov $1,r0
|
||||
sys write; ch; 1
|
||||
rts pc
|
||||
|
||||
.bss
|
||||
ch: .=.+2
|
||||
bcnt: .=.+2
|
||||
buf: .=.+512.
|
||||
Reference in New Issue
Block a user