home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Crawly Crypt Collection 1
/
crawlyvol1.bin
/
program
/
compiler
/
nasm20b
/
nasm_src
/
xhash.s
< prev
next >
Wrap
Text File
|
1993-01-19
|
2KB
|
56 lines
; ----------------------------------------------------------------------
; Copyright (C) 1990 by Natürlich!
; This file is copyrighted!
; Refer to the documentation for details.
; ----------------------------------------------------------------------
.export calc_hash
.import hash_tab
calc_hash:
move.l a1,-(a7)
move.l d1,-(a7)
lea hash_tab,a1
moveq #0,d0 ; target register clean
clr.w d1
move.b (a0)+,d0 ; get first byte into it d0
beq.b done ; quit on 0
move.b 0(a1,d0.w),d0 ; get hash value for char
move.b (a0)+,d1 ; get next char
beq.b done ; EOL = 0 then ->
move.b 0(a1,d1.w),d1 ; get hash value
asl.w #5,d0 ; shift old 5 bits up
or.w d1,d0 ; and OR our new value
move.b (a0)+,d1 ; next
beq.b done
move.b 0(a1,d1.w),d1
asl.w #5,d0
or.w d1,d0
swap d0 ; don't want to shift 32 bits
move.b (a0)+,d0 ; start with fresh 16 bits
beq.b done
move.b 0(a1,d0.w),d0
move.b (a0)+,d1
beq.b done
move.b 0(a1,d1.w),d1
asl.w #5,d0
or.w d1,d0
move.b (a0),d1
beq.b done
move.b 0(a1,d1.w),d1
asl.w #5,d0
or.w d1,d0
done: move.l (a7)+,d1
move.l (a7)+,a1
rts