On 3/31/2020 8:05 AM, G. wrote:
Hello everyone,
some time ago I discovered that several images downloaded from the
VaxHaven CD-ROM image archive appear to be corrupted. Actually they are not
really corrupted: they just include not only sector data from the original
media but also CD-ROM sector preambles and error-correcting codes which are
usually skipped when dumping discs with e.g. the UNIX 'dd' command.
In other words, CD-ROM raw sectors are made of a 16 byte preamble, a 2048
byte data area, and a 288 checksum (Reed-Solomon) for a total of 2352 bytes
whereas audio CDs use the whole 2352 bytes in another way (channel frames).
See
https://en.wikipedia.org/wiki/CD-ROM for more information.
Since I usually mount these disc images directly on VMS with the LD driver,
I wanted to find a native way to "clean" them which would not require any
additional software besides whatever is available on a standard VMS system.
After downloading and unpacking some affected image, the first thing to do
is to ensure that it has some sensible RMS attributes:
$ SET FILE /ATTR=(RFM=FIX,LRL=2352,RAT=NONE) AG-Q2PLL-XE.ISO
Then we will use the Sort/Merge utility to fix it. To do so we need a file
to instruct the utility on how to manipulate data records both in input and
output. Let's call it CDFIX.SRT and store it with the following lines:
/FIELD=(NAME=HEAD, POSITION= 1, SIZE= 16)
/FIELD=(NAME=BODY, POSITION= 17, SIZE=2048)
/FIELD=(NAME=TAIL, POSITION=2065, SIZE= 288)
/DATA=BODY
Finally we could run the utility to extract the good portion from every
record of the original image:
$ MERGE /NOCHECK /STAT /SPEC=CDFIX AG-Q2PLL-XE.ISO AG-Q2PLL-XE_FIXED.ISO
This is the result on a somewhat slow system. Note the input and output
record length on the right column:
OpenVMS Sort/Merge Statistics
Records read: 304468 Input record length: 2352
Records sorted: 304468 Internal length: 6761
Records output: 304468 Output record length: 2048
Working set: 65536 Sort tree size: 0
Virtual memory: 416 Number of initial runs: 1
Direct I/O: 81792 Maximum merge order: 1
Buffered I/O: 8 Number of merge passes: 1
Page faults: 35 Work file alloc: 0
Elapsed time: 00:04:25.92 Elapsed CPU: 00:00:32.98
Anyway, a friend of mine provided me with a short Python program which
achieves the same result:
with open("AG-Q2PLL-XE.iso", "rb") as fr:
with open("AG-Q2PLL-XE-fixed.iso", "wb") as fw:
byte = 'somedata'
while byte != "":
_ = fr.read(16)
byte = fr.read(2048)
fw.write(byte)
_ = fr.read(288)
I didn't test any of the above with every image in the archive, but I
suppose that the "corrupted" ones have all the same problem.
HTH, :)
G.
Thank you G!? I ran the python script on the VAXHaven V5.5-2H4 image and the Mac
recognized it and created a CD that now mounts on my MicroVAX 3100!
$ mount /over=id dka500:
%MOUNT-I-WRITELOCK, volume is write locked
%MOUNT-I-MOUNTED, VMS2H4055 mounted on _$101$DKA500: (LAUMER)
$ set def dka500:[000000]
$ dir
Directory DKA500:[000000]
BACKUP.SYS;1 0/0???????? 20-JUL-1993 10:22:48.62? [SYSTEM] (RWED,RWED,RE,)
BADBLK.SYS;1 0/0???????? 20-JUL-1993 10:22:48.62? [SYSTEM] (RWED,RWED,RE,)
BADLOG.SYS;1 0/0???????? 20-JUL-1993 10:22:48.62? [SYSTEM] (RWED,RWED,RE,)
BITMAP.SYS;1 99/99??????? 20-JUL-1993 10:22:48.62? [SYSTEM] (RWED,RWED,RE,)
CONTIN.SYS;1 0/0???????? 20-JUL-1993 10:22:48.62? [SYSTEM] (RWED,RWED,RE,)
CORIMG.SYS;1 0/0???????? 20-JUL-1993 10:22:48.62? [SYSTEM] (RWED,RWED,RE,)
DECW2H4055.C;1 13293/13293???? 22-JUL-1993 16:31:44.74? [SYSTEM] (RE,RE,RE,RE)
DECW2H4055.D;1 16065/16065???? 22-JUL-1993 16:31:44.96? [SYSTEM] (RE,RE,RE,RE)
DECW2H4055.E;1 3276/3276????? 22-JUL-1993 16:31:45.15? [SYSTEM] (RE,RE,RE,RE)
DECW2H4055.F;1 4599/4599????? 22-JUL-1993 16:31:45.33? [SYSTEM] (RE,RE,RE,RE)
DECW2H4055.G;1 29673/29673???? 22-JUL-1993 16:31:45.50? [SYSTEM] (RE,RE,RE,RE)
DECW2H4055.H;1 3843/3843????? 22-JUL-1993 16:31:45.75? [SYSTEM] (RE,RE,RE,RE)
INDEXF.SYS;1 273/273?????? 20-JUL-1993 10:22:48.62? [SYSTEM] (RWED,RWED,RE,)
ISL_SCRIPT.ESS;1 2/2???????? 20-JUL-1993 10:34:07.42? [SYSTEM] (RWED,RWED,RWED,)
VMS2H4055.A;1 2640/2640????? 22-JUL-1993 16:31:45.91? [SYSTEM] (RE,RE,RE,RE)
VMS2H4055.B;1 49581/49581???? 22-JUL-1993 16:31:46.10? [SYSTEM] (RE,RE,RE,RE)
VMS2H4055.C;1 40761/40761???? 22-JUL-1993 16:31:46.27? [SYSTEM] (RE,RE,RE,RE)
VMS2H4055.D;1 18585/18585???? 22-JUL-1993 16:31:46.44? [SYSTEM] (RE,RE,RE,RE)
VMSU2H4055.A;1 252/252?????? 22-JUL-1993 16:31:46.64? [SYSTEM] (RE,RE,RE,RE)
VMSU2H4055.B;1 17028/17028???? 22-JUL-1993 16:31:46.80? [SYSTEM] (RE,RE,RE,RE)
VOLSET.SYS;1 0/0???????? 20-JUL-1993 10:22:48.62? [SYSTEM] (RWED,RWED,RE,)
Total of 21 files, 199970/199970 blocks.
$
--
John H. Reinhardt
PRRT&HS #8909
C&O HS #11530
N-Trak #7566