Sunday 12 April 2020

Upgrading the divMMC future firmware

The divMMC future uses ESXDOS firmware, which is periodically upgraded. When a new release is published, we test it and when we are confident there are no problems, we start shipping the divMMC future with the new firmware. Currently, we are shipping version 0.8.7.

Users with older units can upgrade their firmware to the later version if they want to, although it is only advisable to do this if you want to make use of a new feature, or if there is a bugfix which is relevant to you. You may also be advised to reflash the firmware if it has been corrupted due to use with a faulty Spectrum. But in general:

If your divMMC is working, you do not need to upgrade the firmware.

The version of firmware you have is shown top left of the screen when the Spectrum first powers on. This one has version 0.8.5, not the latest version, but it is working fine so I have not upgraded it. But for the sake of science, I am going to upgrade this today to show you the process.

  1. Load firmware flasher
  2. Eject SD card
  3. Check you have ejected the SD card
  4. Did I mention ejecting the SD card?
  5. Run the firmware flasher
  6. Update the BIN and SYS files on the SD card
  7. Reinsert the SD card and reboot

The first step is loading the firmware flasher program. You can download the files from, or from the TFW8b download page. If your divMMC is currently working, you can copy the flasher program onto the SD card and run it from there. Do not update the BIN and SYS files yet, as the divMMC needs to boot up with the old firmware and old BIN and SYS files before it runs the flasher.

You can also load that .tap file into the Spectrum using a device like the Tapuino or TZXduino or via a phone app. Also in that folder, there is a wav file. You can play that into the Spectrum using a audio player on a laptop or phone.

If you can't do any of those things, then you can buy a prerecorded cassette with the flasher tool for the latest versions from the TFW8b store

With that, you need a suitable cassette player.

Or a +2 with a built in cassette deck.

Once you have loaded the flasher program by whatever means, you will be presented with a screen which tells you to adjust JP2.

No matter how extensively you search around the divMMC future, you will not find JP2. Don't be tempted to open one up as this will invalidate your warranty (and spoil the nice case), and it's not in there anyway.

JP2 would be used to disable the divMMC to allow the firmware to be upgraded. On the divMMC future, we wanted it to be jumperless, so we use the SD card to control this. If the SD card is inserted, the interface is enabled. If it is ejected, the interface is disabled, so it can be reflashed. So all you need to do is push in the SD card to eject it.(we don't recommend using a microSD in an adapter, but if you are using one of those, remove the adapter as well, not just the SD card)

This is what you want to see, a clear air gap around the SD card. You may thing I am over stressing this point, but I have had quite a few people who have had problems doing this upgrade because they had missed out the step where you eject the SD card.

When you press a key, if you forget to eject the SD card, the screen will go an angry red to remind you to re-read the instructions.

If you have remembered to eject the SD card, congratulations, the new firmware will be installed, the screen border will flash funky colours for a while, and when that has stopped it will return with an OK message to indicate it has finished.

Now is time to upgrade the BIN and SYS files on the SD card. 

The version of files on the SD card needs to match the firmware.

If they don't, it will not work properly. So plug the SD card into a PC or laptop via a card reader. I am using an SD2USB card reader, but you can use whatever you have.

Once the new files are copied onto your SD card, reinstall it into the divMMC and boot up again.

The boot screen should have been updated to show the new version, currently V0.8.7. Note the RTC.SYS file [ERROR] will always be there on older firmware versions as most divMMCs do not have a built in real time clock. It would be good if future versions came with a dummy RTC.SYS file so there were no errors displayed. This is now the case.

Everything should now be the same, press the NMI button (the illuminated one) and you should see the file browser menu and away you go.

So, the moral of the tale is, don't upgrade the firmware unless you need to, and if you do need to, remember to eject the SD card.


DivMMC Future

The DivMMC Future is avaiable from The Future Was 8 bit


You can support me via Patreon, and get access to advance previews of posts like this and behind the scenes updates. These are often in more detail than I can fit in here. This also includes access to my Patreon only Discord server for even more regular updates.