IBM BSC CRC?

Bob Smith bobsmithofd at gmail.com
Sun Jan 26 17:12:43 CST 2020


I ma rusty on this, been almost 50 years since I worked on the DP8EP
aka the KG83. then the KG11, and the Autodin 2 CRC32 designs in
hardware.
I don't recall whether bisync, aka bsc used LRC8, 12, 16, or crc16 as
the error detection algorithm.
I don't think it used VRC. I did find a refresher that might help, but
I don't think the polynomial you have for crc 16 has enough terms.
BUT I could be misremembering.

https://www.automatas.org/modbus/crc7.html
bob

On Sun, Jan 26, 2020 at 2:59 PM Mattis Lind via cctalk
<cctalk at classiccmp.org> wrote:
>
> Hello IBM BSC Experts!
>
> I am trying to figure out the CRC algorithm used by IBM BSC. I have tried a
> lot of different settings in crcreveng but not getting a match.
>
> I am pretty convinced that the CRC-16 used by IBM was
>   16          15       2
> x      +   x     +   x     +  1
> This would give the polynomial 8005.
> Anyone against this statement?
>
> But what was the initial value?
>
> I have two actual messages from equipment employing IBM BSC:
> 32016CD90240404070032688
> and
> 32016CD90240C84050030D28
>
> From this document (
> http://bitsavers.trailing-edge.com/pdf/ibm/datacomm/GA27-3004-2_General_Information_Binary_Synchronous_Communications_Oct70.pdf
> )
> I get that the CRC calculation is reset on SOH (01h) or STX (02h) and
> accumulates until and including the ETX (03h). (excluding any SYN (32h)
> characters).
>
> I have tried crcreveng back and forth and I am not getting the CRC bytes
> right.
> I think I have tried most things, different bit order, different initial
> values. But nothing.
>
> I also tried the mode in crcreveng where it searches for matches but it
> always says "no models found". Maybe I am doing something wrong when using
> crcreveng?
>
> Any clues? Surely there are someone out there that has been around for some
> time and knows this, right?
>
> On the topic of crc reveng I tried to verify how it works by using some
> kind of known value: This article
> https://stackoverflow.com/questions/23638939/crc-16-ibm-reverse-lookup-in-c
>
> has a specific example where a certain data in (75h) with initial value
> 90f1h gives output 6390h. I tried to get crc reveng to do the same, but
> failed. There has to be some option I simply do not understand. I tried
> most combinations.
>
> /Mattis


More information about the cctech mailing list