ZX Microdrive .mdr file Cruncher (Perl script)
09-SET-2020
Fix on -p switch: now the script is capable to copy each program/code/data from a .tap file to .mdr file.
14-MAR-2020
Another little improvement on DUMP option.
20-AUG-2019
The script now works on MDR with a number of sectors less than 254, those produced by emulators such as Fuse.
22-MAR-2018
I've removed a big bug that sometime prevented data to be correctly displayed in the listing: I wasn't always using the first record of a file, producing a misleading listing.
Now it should be fine.
13-JAN-2018
I've added another option "label" to allow changing the "label" of the cartridge. This option requires a complete re-writing of all sector-headers with the new name and correct checksum.
$> perl mdr.pl -l cart.mdr label=NEW_LABEL
15-SEP-2017
Last year I've been in contact with Marcos Cruz and he gave me the idea to write a .mdr manipulator since that format is well known.
Within a few days I managed to code a Perl script that simply examines and manipulates anything within a .mdr file.
The script also is able to read or write .tap files, so it can be used as a good mdr-to-tap or tap-to-mdr utility.
With this script, you are able to :
get the catalog and all available info (starting address, length, start-line, used sectors, damaged or free sectors, etc. ).
copy, rename, erase a file within a cartridge.
remove "autorun" LINE from a program
put/get any file from/to a host file to/from a cartridge
port files to/from .tap from/to .mdr
Examples.
$> perl mdr.pl -l cart.mdr noautorun=run
$> perl mdr.pl -l cart.mdr erase=run
$> perl mdr.pl -l cart.mdr rename=sys64 to=SYS64
$> perl mdr.pl -l cart.mdr -p tape=d:/zx/forth/vforth13.tap
$> perl mdr.pl -l cart.mdr put=[file1.txt,file2.txt] to=file1
Since it is a work-in-progress, any feedback is welcome.
The script accepts a "verbose" switch that can be used to completely dump the content of a cartridge. This feature is useful to verify the cartridge integrity of any sector. I used it to hack the checksum of bad-sectors to obtain a fully 254-sectors length cartridge: It is well known that in reality at least one sector is unusable due to the tape-juction and the peculiar way the ZX Microdrive FORMAT "M" command works.