[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