'This is code used in the comms link.
'I have NO idea why it works, but it does.
' Jaap Sherphuis.
'Compute CRC:
' length word in E6
' start at X
' returns CRC in 41
crc: DD41 ST D 41
3C PSH X 'decrease length left counter
DEE6 LD X E6
09 DE X
DFE6 ST X E6
38 PUL X
2B27 BMI ret 'return if done
D641 LDA B 41
E800 EOR B 0,X
D743 STA B 43
17 TBA '\
3C PSH X ' \
CE0007 LD X %0007 ' \
loop: 57 ASR B ' \
1B AB A ' count parity of byte B
09 DE X ' /
26FB BNE loop ' /
38 PUL X ' /
8401 AND A %01 '/
D643 LDA B 43
47 ASR A
56 ROR B
46 ROR A
57 ASR B
59 ROL B
D843 EOR B 43
56 ROR B
46 ROR A
57 ASR B
59 ROL B
8900 ADC A %00
9842 EOR A 42
08 IN X
20CE BRA crc
ret: 39 RTS