1 (edited by Xalior 2018-05-01 17:08:32)

Topic: (Reliable) ESXDOS emulation.

Hello folks,

I'm having some serious problems getting reliable ESXDOS emulation working for development purposes...

I've tried FUSE 1.4 and 1.5, and zesarux 6 and 6.1beta all with no luck...

In Fuse I find that the emulated DIVMMC doesn't seem to be able to hold the contents of the EEPROM between reboots.

The results of this are that every time I start the emulator I have to reload the ROM from the DIVMMC.TAP, which stops me doing any kind of automated testing for my development, and seriously slows down any manual testing....

In zesarux I can never get the NMI browser to read the contents of my SD card.

I've tried making my own RAW image with hdfmonkey, and copying the SYS, BIN and TMP folder into it, I've tried extracting and using a working image from a real speccy, and I've tried the TBBlue.mmc image included all with the same results.

This time my results are a ESXDOS splash screen as it starts up the emulator (YAY! I don't need to flash the ROM!) and dotcommands work, proven with .LS showing the correct contents for each SD card...  However, when I activate the NMI, no matter what card is in the emulator, no matter what is upon the card image, I *ALWAYS* get a Directory listing containing 11 copies of [TMP] folder and no other files or output, ever.

My Fuse commandline is:
/Applications/Fuse.app/Contents/MacOS/Fuse --divmmc  --divmmc-file /u/ZX/media/esxdos-mmc.hdf --machine plus3

My zesarux commandline is:
/Applications/zesarux.app/Contents/MacOS/zesarux --romfile /Applications/zesarux.app/Contents/Resources/128.rom --machine 128k --realvideo --enable-mmc --mmc-file /u/ZX/media/esxdos-zxdesk.mmc

Is there an "official" way to be developing ESXDOS commands under emulation? Does anyone have a working "classic" speccy ESXDOS commandline invocation and mmc image they would like to share to perhaps point me in the correct directions? Thanks!


The following commandline options seem to work passably for zesarus, using a fake the SDCard image from a directory tree laid out the same:
--divmmc-rom "/Applications/zesarux.app/Contents/Resources/esxmmc085.rom"
--esxdos-root-dir "/u/ZX/ZXDesk/esxdos"

But I would still like to get it reliably working from a HDF, and I am still left with the browser problem in so far as this still doesn't work for the NMI, which lists [TMP] 11 times over... :-/


Re: (Reliable) ESXDOS emulation.

Hi Xalior,

when I'm back at home I'll send you a batch which creates working HDF/RAW Images for me with working esxDOS NMI.




Re: (Reliable) ESXDOS emulation.

Hi, regardless the fact that there is nothing like esxdos emulation needed ;] (esxdos is just a z80 asm program which emulator just have to run, what you need is an emulator which emulates divide/divmmc), here is a way how to make fuse to auto boot into esxdos with loading tap file after esxdos boot. it is for divmmc, but the same procedure can be done for divide (in fact i used divide first, but i had impression you want it for divmmc).

1) get latest esxdos (0.8.6) and unzip it
    (version at least 0.8.6 is a must as earlier versions doesn't support autoboot feature we need)

    $ wget 'http://www.esxdos.org/files/esxdos086.zip'
    $ mkdir esxdos086.zip.dir
    $ unzip -d esxdos086.zip.dir esxdos086.zip

2) edit esxdos086.zip.dir/SYS/CONFIG/ESXDOS.CFG, set AutoBoot=1

3) prepare hdf with esxdos
    $ hdfmonkey create test.hdf 64M
    $ hdfmonkey put test.hdf esxdos086.zip.dir/SYS /
    $ hdfmonkey put test.hdf esxdos086.zip.dir/BIN /
    $ hdfmonkey put test.hdf esxdos086.zip.dir/TMP /

4) prepare flashed esxdos image
    $ fuse --no-divide --divmmc --no-divmmc-write-protect esxdos086.zip.dir/ESXMMC.TAP

    enter debugger, set breakpoint on 0 (break 0) and close debugger
    LOAD ""
    <press a key to flash>
    enable divmmc writeprotect
    HARD(!) reset (hard reset is needed to release mapram mode which flasher sets)

    when debugger pops up (on breakpoint), do not close debugger and just save snapshot as flashed.szx
    exit fuse

5) prepare basic program to be loaded on boot (to autoload external tap after boot of esxdos)
    $ fuse flashed.szx --divmmc-file test.hdf

    (ignore "no such file or dir" error, it is because we don't have autoboot.bas yet)
    .cd sys
    10 LOAD ""
    exit fuse (save changes to hdf)

6) test autoloading of external tap file:
    $ fuse flashed.szx --divmmc-file test.hdf test.tap



Re: (Reliable) ESXDOS emulation.

A very good explanation.
Thanks for that.