Just updated my utility to work on Spectrums equipped with +3e ROMs and IDE storage. I've tested this with ZXMMC at the moment but don't think there will be any problems with other storage options.
I had to move part of the decompression out of bank 7 to get this working and move it to the screen area which does cause some corruption but unavoidable as there is even less spare space with +3e than on a normal +3. Tested with Heartland 48k and Three Weeks in Paradise 128k.
╔═══════════════════════════════════════════════════════════════════════════════
║ Z80onDSK v2.3 for WINDOWS (c) 2019 Tom Dalby
╠═══════════════════════════════════════════════════════════════════════════════
║ Usage: Z80onDSK [global options] <snapshot>.z80 [snapshot settings] <name>
║
║ <name>: output filename, if nothing specified z80 snapshot filename used
║
║ [global options]
║ -t: output to tape as well as disk
║ -q: quiet mode, turn off all text output (other than error messages)
║ -m: dump memory banks and full compression to binary files. These will
║ named after the SPECTRUM filename
║ -b: do not add autorun basic routine to disk, useful if you want to add
║ your own loader routine later
║ -h: make the loader code, autorun basic & 128k 2nd file visible on disk
║ default is hidden to make things neater when cataloging the disk
║ -e: use +3e compatible loader. Note incompatible with snapshots created
║ without this option & causes a lot of screen corruption so only
║ recommended for +3e with reduced space in bank 7 for unpacking
║
║ [snapshot settings]
║ -o <name>: define SPECTRUM filename, if nothing is specified snapshot
║ filename used. Truncated to 8 chars with non-alphanumeric
║ & spaces removed to ensure PLUS3DOS compatibility
║ -s <name>.scr: use an alternate loading screen. Must be a .scr 6912bytes
║ -bN: use an alt mem location for 17byte run code, default 23734 (CHANS)
║ 1: @16384 (top left of screen pixel area)
║ 2: @22511 (bottom right of screen pixel area)
║ 3: @23296-23552 program will scan for continuous block of zeros
║ in printer buffer, if no space exists program will error
║ 4 <mem>: @16384-32751 user specified memory location
║ -fN: force machine type
║ 1: force 16k. Clears top 2 memory banks to remove erroneous data in upper
║ memory for 16k games. Helps reduce snapshot compressed size. If stack
║ or PC are in upper mem (>0x7fff) utility will exit with error.
║ 2: force 48k + paging. Works on 128k & 48k snapshots. Only banks 5,0 & 2
║ are stored, retains paging & Amstrad ROM.
║ 3: force 48k no paging. For 128k snapshots as this is default for 48k.
║ Only banks 5,0 & 2 are stored, paging off & Amstrad ROM in place.
║ 4: force 48k old skool. Only banks 5,0 & 2 stored, paging off &
║ original Sincliar ROM patched in. Note this causes upper mem to be
║ contended which may cause issues with some games.
║
║ Batch Mode is activated if more than one z80 snapshot specified, example:
║
║ Z80onDSK snapshot1.z80 snapshot2.z80 compilation1
║ where "compilation1" is the filename of the resultant disk/tape file
║ (if nothing specified the first snapshot name is used as above)
║
║ each snapshot can have its own settings but options are global, example:
║
║ Z80onDSK -q snapshot1.z80 -s screen1.scr snapshot2.z80 -b1 compilation1
║ which runs in quiet mode, snapshot 1 has an alternate loading screen
║ snapshot 2 has the run code located top left of screen pixel area
║ all outputed to "compliation1.dsk"
║
║ max 16 snapshots per disk/tape
╚═══════════════════════════════════════════════════════════════════════════════
Retro enthusiast and author of Flynn's Adventure in Bombland, The Order of Mazes & Maze Death Rally-X. Check them out at http://tomdalby.com
I've cleaned up the +3e mode a little including adding an extra option which just creates the files needed to be copied over to a HDF file. You can then just use one of the many utilities (drvimage or hdfmonkey) rather than copy from a +3 disk. You can grab v2.4 here https://tomdalby.com/speccy/Z80onDSK_v2.4.zip
╔═══════════════════════════════════════════════════════════════════════════════
║ Z80onDSK v2.4 for WINDOWS (c) 2019 Tom Dalby
╠═══════════════════════════════════════════════════════════════════════════════
║ Usage: Z80onDSK [global options] <snapshot>.z80 [snapshot settings] <name>
║
║ <name>: output filename, if nothing specified z80 snapshot filename used
║
║ [global options]
║ -t: output to tape as well as disk
║ -q: quiet mode, turn off all text output (other than error messages)
║ -m: dump memory banks and full compression to binary files. These will be
║ named after the SPECTRUM filename
║ -b: do not add autorun basic routine to disk, useful if you want to add
║ your own loader routine later
║ -h: make the loader code, autorun basic & 128k 2nd file visible on disk
║ default is hidden to make things neater when cataloging the disk
║ -e: use +3e compatible mode. Causes a lot of screen corruption so unless
║ a loading screen is specified a copy of the main screen is taken to be
║ displayed during loading. Combine with -c to only produce data files for
║ hdf transfer. Note this forces the -b2 & -h options and is incompatible
║ with images created in non-+3e mode
║ -c: dump compression data files only & suppress disk production. Useful if
║ you want to copy the images to a disk or hdf manually. As for -m the
║ files are named after the SPECTRUM filename
║
║ [snapshot settings]
║ -o <name>: define SPECTRUM filename, if nothing is specified snapshot
║ filename used. Truncated to 8 chars with non-alphanumeric
║ & spaces removed to ensure PLUS3DOS compatibility
║ -s <name>.scr: use an alternate loading screen. Must be a .scr 6912bytes
║ -bN: use an alt mem location for 17byte run code, default 23734 (CHANS)
║ 1: @16384 (top left of screen pixel area)
║ 2: @22511 (bottom right of screen pixel area)
║ 3: @23296-23552 program will scan for continuous block of zeros
║ in printer buffer, if no space exists program will error
║ 4 <mem>: @16384-32751 user specified memory location
║ -fN: force machine type
║ 1: force 16k. Clears top 2 memory banks to remove erroneous data in upper
║ memory for 16k games. Helps reduce snapshot compressed size. If stack
║ or PC are in upper mem (>0x7fff) utility will exit with error.
║ 2: force 48k + paging. Works on 128k & 48k snapshots. Only banks 5,0 & 2
║ are stored, retains paging & Amstrad ROM.
║ 3: force 48k no paging. For 128k snapshots as this is default for 48k.
║ Only banks 5,0 & 2 are stored, paging off & Amstrad ROM in place.
║ 4: force 48k old skool. Only banks 5,0 & 2 stored, paging off &
║ original Sincliar ROM patched in. Note this causes upper mem to be
║ contended which may cause issues with some games.
║
║ Batch Mode is activated if more than one z80 snapshot specified, example:
║
║ Z80onDSK snapshot1.z80 snapshot2.z80 compilation1
║ where "compilation1" is the filename of the resultant disk/tape file
║ (if nothing specified the first snapshot name is used as above)
║
║ each snapshot can have its own settings but options are global, example:
║
║ Z80onDSK -q snapshot1.z80 -s screen1.scr snapshot2.z80 -b1 compilation1
║ which runs in quiet mode, snapshot 1 has an alternate loading screen
║ snapshot 2 has the run code located top left of screen pixel area
║ all outputed to "compliation1.dsk"
║
║ max 16 snapshots per disk/tape
╚═══════════════════════════════════════════════════════════════════════════════
Retro enthusiast and author of Flynn's Adventure in Bombland, The Order of Mazes & Maze Death Rally-X. Check them out at http://tomdalby.com