[HECnet] VaxHaven CD-ROM image archive issue (and solution)
John H. Reinhardt
johnhreinhardt at thereinhardts.org
Tue Mar 31 07:56:08 PDT 2020
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
More information about the Hecnet-list
mailing list