Hello all,
I?m the administrator for the Vaxhaven site, and I?m happy to see it?s getting some use
:)
Not that I?m wanting to put any more work on my plate (work has been declared an essential
service, so still quite busy), but if anyone tidies up one of the images and sends me a
copy (or a link to dropbox/gdrive/etc) I?d be happy to post the modified image. I?d like
to limit the images to ones that you have tested and know work - there?s no use putting up
a second image that is also broken in some way. Please send the link directly to me so I
don?t miss a post in the mailing list by accident.
Happy to help in whatever way I can.
Stay safe.
Ian
On Mar 31, 2020, at 7:56 AM, John H. Reinhardt
<johnhreinhardt at thereinhardts.org> wrote:
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