' Evaluate the 16-bit Checksum of an array of bytes
Function SemiCRC(ByVal source() As Byte) As Integer
Dim crc, temp As Integer, i As Long
Const divisor As Integer = 32768
For i = 0 To source.GetUpperBound(0)
temp = 0
If crc \ divisor Then temp = 1
crc = (((crc * 2) And &HFFFF&) + temp) Xor CLng(source(i))
Next
Return crc
End Function