'IF YOU ARE LOOKING AT THIS WITH A BROWSER, USE THE BACK BUTTON TO GET ' BACK TO THE PREVIOUS PAGE. YOU CAN ALSO DOWNLOAD THIS FILE BY GOING ' BACK AND RIGHT CLICKING ON THE LINK, THEN SELECTING THE APPROPRIATE ' COMMAND. ' Calculates the checksum and crc (as defined by SAE) ' for a string of numbers CLS DIM buf%(12) begin: INPUT "Number of bytes"; nbytes% FOR i% = 1 TO nbytes% PRINT "Enter number"; i%; " "; INPUT buf%(i%) NEXT i% GOSUB ErrByte PRINT "CRC= "; HEX$(CRC%); " hex "; CRC%; "dec" PRINT "Checksum= "; HEX$(checksum%); " hex "; checksum%; "dec" PRINT GOTO begin ErrByte: checksum% = 0 CrcReg% = 255 FOR i% = 1 TO nbytes% BitPoint% = 128 Byte% = buf%(i%) FOR j% = 0 TO 7 IF BitPoint% AND Byte% THEN IF CrcReg% AND 128 THEN Poly% = 1 ELSE Poly% = 28 CrcReg% = (((CrcReg% * 2) OR 1) XOR Poly%) AND 255 ELSE IF (CrcReg% AND 128) THEN Poly% = 29 ELSE Poly% = 0 CrcReg% = ((CrcReg% * 2) XOR Poly%) AND 255 END IF BitPoint% = BitPoint% \ 2 NEXT j% checksum% = (checksum% + Byte%) AND 255 NEXT i% CRC% = (NOT CrcReg%) AND 255 RETURN