'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