Preamble
For a while, I had a copy of a BESM-6 Pascal compiler which worked only on very simple programs, like "Hello, world", and would throw a division by 0 exception on anything more complicated, and, on another disk image, a copy of a slightly older revision of the same compiler which worked perfectly.
Last week, I got a chance to figure out what was going on by doing a comparison of the two compiler binaries; luckily, they synchronized quite well except for a slight difference in offsets in procedure calls.
The difference was in a couple of instructions, which were completely nonsensical in the bad version. After replacing them with the corresponding instructions from the good version (correcting for a procedure offset), the problem went away.
Question
As far as I remember, the IBM 9-track tape with the disk image was given to a guy who had a tape drive in his garage, and he had sent back the result, so it is unknown if reading of the block with the corruption was flagged as I/O error — because of the differing parity of the bytes between the good and the bad version — or not.
How plausible is a media corruption of an 800 bpi (NRZI, I guess) 9-track tape which would cause reading of the byte sequence ... 10 D9 8C 45 32 6E ...
instead of the correct ... 10 00 35 D9 8C 6E ...
?
od -b
. – Leo B. Oct 28 '20 at 23:30