USR0 mode and the lack of +3 BASIC support with ESXDOS explained

I often get the question if people can still use the floppy drive on a ZX Spectrum +3 in case they order a DivMMC EnJOY! interface.
So let’s find out.

Accessing the floppy drive on a ZX Spectrum +3

To access the floppy drive in a ZX Spectrum +3, you need the commands that are available in +3 BASIC.
When you enter 48 BASIC, these commands are unavailable, so you really need +3 BASIC.

ESXDOS and USR0 mode

ESXDOS, the firmware for any DivMMC interface, currently only supports 48K BASIC in USR0 mode.
USR0 mode means you will have all the 128KB memory and the 3-channel sound available, but +3 BASIC is not enabled.

ZX Spectrum toast rack, +2 and +2A

The black ZX Spectrum +2A uses the same ROMs as in the +3 so also has +3 BASIC, and the toast rack and grey +2 use 128 BASIC.
All of these enhanced BASICs are disabled once booting wth ESXDOS into USR0 mode from a DivMMC interface.

Will ESXDOS support 128 BASIC or +3 BASIC in the future?

It doesn’t seem so.
The focus is on new features like RTC support and Long FileName support, but since there are not many people involved, speed of development is well, let’s say, not as high as many wish for.

So can the floppy drive be used with a DivMMC interface or not at all?

Yes, it is possible, but.. not easy and very limited.
Currenly the only way of using +3 BASIC with the DivMMC, is by using the +3e ROMs.
The +3e ROM modifications introduce its own way of formatting and using the SD card.
It’s far more complicated to use compared to ESXDOS, and will not support .TAP or snapshot files.


If someone would just write some DOT-command that mimics the +3 floppy drive commands, that would be great.
A DOT-command is the flexible way of adding BASIC commands to ESXDOS, and since the floppy hardware is simply still present and available on a +3 when a DivMMC interface is connected, why not use it?

Hey, maybe if I find the time for that myself some day..

4 thoughts on “USR0 mode and the lack of +3 BASIC support with ESXDOS explained

  1. Interesting, it seems that documentation for esxDOS is very limited because I would happily look into taking on this challenge myself. I can see why +3 basic wasnt supported especially as the 48k is available to most of them. It’s a little surprising that its took so long for this to come up but …

    What about converting a tap file to microdrive, would this be supported natively with the set up? Excuse the question if its dump I’ve only ordered my DivMMC this week and I am still waiting for it hence dont know if anything is available.

    • The 128 and +3 BASIC ROMs have completely different entrance points for routines compared to the 48 BASIC ROM.
      Since there isn’t much memory space for the ESXDOS developers to work with, it’s not easy or maybe simply impossible to add support for these ROMs.

      I read that there is a customized 128 BASIC ROM that can be activated with the ESXDOS 0.8.6 RC1 release.
      Not sure what the possibilities are with that, probably no +3 floppy disk features.
      And that customized ROM won’t be legal to distribute with DivMMC interfaces, so end-user only.

      The DivMMC and many other interfaces won’t work with Interface1/Microdrive, PlusD, Disciple, Multiface or other interfaces that have their own ROM.
      This is because the DivMMC copies the 48 BASIC ROM into its own RAM and keeps that paged in at all time.
      So another interface will not be able to take over.

      I am planning for a small interfaced that disables and enables ESXDOS by the push of a button.
      That could help with transferring to e.g. Microdrive, but you still need some unwritten software tools to actually transfer.
      Without modifications a game in a .TAP archive will not load from Microdrive.


  2. So I’ve a related question, having recently become a Toastrack owner. Atic Atac (as an example) ran fine from my DivMMC Enjoy! Pro One on my 48k spectrum but crashes after the menu in the 128k’s USR0 mode, when loading the same file from the DivMMC.
    Is there a way to get the Toastrack into proper 48k (USR0) mode when booting with a DivMMC attached? Or work around it by forcing RAMTOP to the 48k’s value?

Leave a Reply

Your email address will not be published. Required fields are marked *