While I'm new to speak up here, I've been watching for a while. I've also
used the name "MightyFrame" on groups, although that email address is not
registered with this list.
A few months back, I published a page decoding QIC-24 format.
http://mightyframe.blogspot.com/2015/08/qic-24-tape-data-block-format-decod…
Dwight posted a very meaningful response to this about the CRC on my site,
and it has taken me this long just to get to it. Thanks again for that,
Dwight!
This project has gone very well for me, with one hangup...the CRC.
I've never calculated one of these before, and I'm struggling with this one.
I have a QIC-24 block of data attached in a .txt file, and I just can't get
the calculations to work.
For my simple understanding so far, I'm using an online calculator to test
this:
http://bit.ly/1YbHUZ7
That URL is pre-programmed with the polynomial and the "message" that
should provide the CRC result of
0xE8CE (decimal 59598)
But, it doesn't.
I created this file, wrote it to tape, then read it again and tested it.
It is 100% correct for the QIC-24 tape system. This is block 3 of 4 of the
file that I have extracted, and am testing here.
The ANSI QIC-24 standard booklet (X3.136-1986) says something that I know
is a clue, but I just don't understand.
"The cyclical redundancy check (CRC) shall consist of two bytes, calculated
over the 512 bytes of interchange data, and the 4-byte block address, *starting
with all ONEs, CRC initial value*, and using the CRC Generating polynomial:
x16 + x12 + x5 + 1
*"starting with all ONEs, CRC initial value"*? What does THAT mean? Do I
need to do some kind of register shift? xorin or xorout?
I've even played with
http://reveng.sourceforge.net/, but I'm having
trouble even understanding the meaning of the input values and parameters
with this.
I appreciate any feedback that anyone can give, here.
--
Thanks,
-AJ
http://MicrotechM1.blogspot.com
http://MightyFrame.com