Mercurial > hg > Members > kono > os9 > sbc09
comparison examples/crc16.asm @ 57:2088fd998865
sbc09 directry clean up
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 23 Jul 2018 16:07:12 +0900 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
56:4fa2bdb0c457 | 57:2088fd998865 |
---|---|
1 ; 6809 CRC16 with tests | |
2 ; | |
3 ; Johann E. Klasek, j AT klasek at | |
4 ; | |
5 ; Testprogram and finaly submitted to http://beebwiki.mdfs.net/index.php/CRC-16#6809 | |
6 | |
7 org $100 | |
8 lds #$8000 | |
9 | |
10 ; Calculate an XMODEM 16-bit CRC from data in memory. This code is as | |
11 ; tight and as fast as it can be, moving as much code out of inner | |
12 ; loops as possible. | |
13 ; | |
14 ; On entry, reg. D = incoming CRC | |
15 ; reg. U = start address of data | |
16 ; reg. X = number of bytes | |
17 ; On exit, reg. D = updated CRC | |
18 ; reg. U = points to first byte behind data | |
19 ; reg. X = 0 | |
20 ; reg. Y = 0 | |
21 ; | |
22 ; Value order in memory is H,L (big endian) | |
23 ; | |
24 ; Multiple passes over data in memory can be made to update the CRC. | |
25 ; For XMODEM, initial CRC must be 0000. | |
26 ; | |
27 ; XMODEM setup: | |
28 ; polynomic | |
29 CRCH EQU $10 | |
30 CRCL EQU $21 | |
31 ; initial CRC | |
32 CRCINIT EQU $0000 | |
33 | |
34 ; input parameters ... | |
35 ldu #s2 ; data (samples: s1 or s2) | |
36 ldb ,u+ | |
37 clra | |
38 tfr d,x ; data size | |
39 ldd #CRCINIT ; incoming CRC | |
40 | |
41 crc16: | |
42 | |
43 bl: | |
44 eora ,u+ ; fetch byte and XOR into CRC high byte | |
45 ldy #8 ; rotate loop counter | |
46 rl: aslb ; shift CRC left, first low | |
47 rola ; and than high byte | |
48 bcc cl ; Justify or ... | |
49 eora #CRCH ; CRC=CRC XOR polynomic, high | |
50 eorb #CRCL ; and low byte | |
51 cl: leay -1,y ; shift loop (8 bits) | |
52 bne rl | |
53 leax -1,x ; byte loop | |
54 bne bl | |
55 | |
56 ; CRC in D | |
57 | |
58 realexit: | |
59 sync | |
60 | |
61 s1: fcb 19,"An Arbitrary String" | |
62 ; CRC=$DDFC | |
63 s2: fcb 26,"ZYXWVUTSRQPONMLKJIHGFEDBCA" | |
64 ; CRC=$B199 | |
65 | |
66 enddata | |
67 | |
68 end |