Hi!
I want to report an issue that shows up accessing the Sinclair ZX Microdrive at an assembler level with EightyOne. Background: I'm the developer of the Mdv2Img tool (see
http://www.worldofspectrum.org/utilities.html and
http://www.worldofspectrum.org/pub/sinc ... dv2img.zip from there). This tool reads raw microdrive sectors to RAM using machine code and then sends them to a PC via the IF1's RS232 port. The idea is to rescue old Microdrive cartridges from decay and probably fix them on the PC, using more computing power and better strategies.
After migrating from Win2K to Win7x64, Gerton Lunter's WinZ80 emulator (still available at
http://www.spectromania.dk/zx/2016/02/2 ... ton-lunter) - being a 16-Bit DOS application - refused to work. Bummer. Sure I successfully tested everything mentioned below in a Windows-XP-VirtualBox emulation, but at some point it's really time for switching to new software...
So I switched to EightyOne (V1.7) and wanted to say a big "thank you" for all your efforts. After a small while, everything worked like a charm, tested a few tape images and even inserted one of my "virtual" microdrive cartridges, containing the Mdv2Img BASIC loader and just a dump of the Spectrum's complete memory, saved to cartridge using
10 FORMAT "m";1;"cartridge1"
20 SAVE *"m";1;"code1" CODE 0, 16384
30 SAVE *"m";1;"code2" CODE 0, 16384
...
Rereading WinZ80's CARTRIDG.orig.MDR (137'923 bytes, as expected) in WinZ80 and EightyOne yielded identical results:
- CARTRIDG.orig.MDR.WinZ80.png (5.73 KiB) Viewed 5929 times
- CARTRIDG.orig.MDR.EightyOne.png (3.89 KiB) Viewed 5929 times
, so I think the cartridge image is OK.
Then I tried my tool mdv2img (
) in both emulators. In a nutshell, this tool reads Microdrive cartridges sector by sector in a RAM buffer. If that buffer is full, it is dumped via IF1's RS232 interface in raw format. Repeat until every sector has been read and transferred.
In WinZ80, the result looks like this:
- WinZ80.Result.png (4.43 KiB) Viewed 5929 times
260 sectors and 7 DCHK errors are to be expected because of the way cartridges are formatted. The raw RS232 dump (
) is 141'180 bytes long due to the overhead of mdv2img trying to read the "defect" sectors multiple times. If I run this through the PC conversion tool (mdv2img.exe.zip), the result is a completely intact CARTRIDG.repaired.MDR that has the same size and content as the original one.
[c'ed in next post since I'm somehow not allowed to attach more than 5 files...]