PROGRAM crc16
LIBRARY "HexLib.trc"
DECLARE DEF XOR
DIM tbl( 8)
MAT READ tbl ! powers of 2 table
DATA 256, 512, 1024, 2048, 4096, 8192, 16384, 32768
LET inp$ = "T" ! "CatMouse987654321"
LET crc = 0
LET lgth = len( inp$)
FOR i = 1 TO lgth ! input byte indexed loop
LET cval = 256 * ORD( inp$[i:i]) ! ord is asc
LET temp = REMAINDER( CRC, 256)
FOR j = 1 TO 8 ! bit indexed loop
! remainder is mod
LET p = tbl( j) ! ip is integer part of
LET q = REMAINDER( IP( crc / p), 2)
LET r = REMAINDER( IP( cval / p), 2)
LET s = XOR( q, r)
IF s > 0 THEN
LET temp = temp + p
END IF
NEXT j
LET crc = temp
FOR j = 1 to 8
LET r = REMAINDER( IP( crc / 32768), 2)
IF r > 0 THEN ! r > 0 is true
! r = 0 is false
LET crc = crc - 32768
LET crc = crc + crc
LET r = REMAINDER( crc, 2)
IF r > 0 THEN
LET crc = crc - 1
ELSE
LET crc = crc + 1
END IF
LET r = REMAINDER( IP( crc / 32), 2)
IF r > 0 THEN
LET crc = crc - 32
ELSE
LET crc = crc + 32
END IF
LET r = REMAINDER( IP( crc / 4096), 2)
IF r > 0 THEN
LET crc = crc - 4096
ELSE
LET crc = crc + 4096
END IF
ELSE
LET crc = crc + crc
END IF
NEXT j
NEXT i
PRINT "crc = "; crc ! numeric value, not hex
END ! program crc16
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
Colin James III, Principal Scientist cja...@cec-services.com
CEC Services, 2080 Kipling St, Lakewood, CO 80215-1502 USA
Voice: 303.231.9437; Facsimile: .231.9438; Data: .231.9434
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~