uroof: cosmetix
[urasm.git] / libs / crc16 / crc16.zas
blobd3f5eb2d27e0027765ec5f8042133583e4b3cbe8
1 ; ÍÅÄÌÅÎÎÁÑ ÆÕÎËÃÉÑ ÐÏÄÓÞ£ÔÁ CRC-16
2 ; by Kirill Frolov
3 ; ix=*data, bc=size
4 ; de=ÐÏÌÉÎÏÍ (0x1021), hl=ÎÁÞÁÌØÎÏÅ ÚÎÁÞÅÎÉÅ
5 ; ÎÁ ×ÙÈÏÄÅ -> hl=ÐÏÄÓÞÉÔÁÎÎÏÅ ÚÎÁÞÅÎÉÅ
6 crc16:
7 .crc16_0:
8   ld   a, b
9   or   c
10   ret  z
11   ld   a,(ix)
12   inc  ix
13   xor  h
14   ld   h,a
15   ld   a,8
16 .crc16_1:
17   add  hl,hl
18   jr   nc,.crc16_2
19   ex   af,af'
20   ld   a,l
21   xor  e
22   ld   l,a
23   ld   a,h
24   xor  d
25   ld   h,a
26   ex   af,af'
27 .crc16_2:
28   dec  a
29   jr   nz,.crc16_1
30   dec  bc
31   jr   .crc16_0