Add original unix v6
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
/ hash routine for diff
|
||||
/ effectively spreads the string out into 7-bit
|
||||
/ bytes, then sums the result 1's-complement
|
||||
/ by 16-bit bytes and adds 1 to avoid zero answer
|
||||
|
||||
/ r4 hash accumulator
|
||||
/ r3 current offset
|
||||
/ r2 first time flag
|
||||
.globl _readhash
|
||||
.globl getc
|
||||
|
||||
.data
|
||||
_readhash:
|
||||
mov 2(sp),0f
|
||||
mov r5,-(sp)
|
||||
mov r4,-(sp)
|
||||
mov r3,-(sp)
|
||||
mov r2,-(sp)
|
||||
mov $1,r4
|
||||
mov r4,r2
|
||||
clr r3
|
||||
1:
|
||||
jsr r5,getc; 0: 0
|
||||
bes 2f
|
||||
clr r2
|
||||
cmp r0,$'\n
|
||||
beq 1f
|
||||
ashc $-16.,r0
|
||||
ashc r3,r0
|
||||
add r0,r4
|
||||
adc r4
|
||||
add r1,r4
|
||||
adc r4
|
||||
add $7,r3
|
||||
cmp r3,$16.
|
||||
blt 1b
|
||||
sub $16.,r3
|
||||
br 1b
|
||||
2:
|
||||
tst r2
|
||||
bne 2f
|
||||
mov $2,r0
|
||||
sys write; 3f; 4f-3f
|
||||
2:
|
||||
clr r4
|
||||
1:
|
||||
mov r4,r0
|
||||
mov (sp)+,r2
|
||||
mov (sp)+,r3
|
||||
mov (sp)+,r4
|
||||
mov (sp)+,r5
|
||||
rts pc
|
||||
3:
|
||||
<incomplete line omitted\n>
|
||||
4:
|
||||
.even
|
||||
Reference in New Issue
Block a user