¿Buscando la versión en español?
Introduction

DivTIESUS (pronounced "div tee aesus") is a DivMMC compatible interface for the ZX Spectrum. Unlike other interfaces, DivTIESUS is not based upon the reference design by Mario Pratto. Instead, it uses a completely new design, which makes possible to integrate more functions inside the CPLD, thus minimizing real state on the PCB and number of components.

DivTIESUS has been designed and produced by Miguel Angel Rodriguez Jodar, also known as McLeod/IdeaFix in the retro-scene. Miguel Angel is one of the core members of the ZX-UNO team, and responsible for the ZX Spectrum core.

The goal of DivTIESUS is to provide the user with an affordable device, sacrificing some goodies, such as a proper case, but providing others, that we will detail in the following sections.

The name "DivTIESUS" is a joke, mainly based upon the spanish version of "Life of Brian" by Monty Python. Tiesus is not a real word in latin (as far as I know). It's how the spanish word "tieso" would sound in latin. "Tieso" is the spanish for "broken", and refers to people that cannot (or simply don't want to) afford a more expensive device. Other latin-alike expressions you will see here are "Pijus Magnificus" ("Biggus dickus") and "Tiesus del tó" ("completely broken") to name the two different versios of the interface.

Credits:

  • Miguel Angel Rodriguez (mcleod_ideafix): hardware design, CPLD core and support software.
  • Jordi Bayó (Hark0): logo and cover art.
  • Antonio Villena (avillena): ideas and support.
  • Miguel Guerreiro: ESXDOS firmware.
  • Garry Lancaster: +3E project.
  • Velesoft: ideas and support regarding Kempston mouse.
  • OCTOCOM: Workbench +3E graphic environment for +2E/3E.
  • Alexander Sharikhin (nihirash): network utilities for the wifi module.

Picture of DivTIESUS
Features

There are currently one version of DivTIESUS: the full featured one, nicknamed "Pijus Magnificus".

Its features are:

  • DivMMC compatible interface with 8 KiB of EEPROM and 512 KiB of RAM. Standard utils for EEPROM flashing, as provided by the ESXDOS team, are compatible with DivTIESUS.
  • Model autodetection. This means you don't need to put a jumper, or flip a switch to change from using it with a Spectrum 48K and a +3.
  • Tested with ZX Spectrum 48K issue 1, 2, 3, 3B, 4A, 4B and 6A. NEC and Hitachi ROM chips. Also tested on Inves Spectrum, Spectrum 128K (both english and spanish versions), +2 grey, +2A, +2B and +3. Also tested on Harlequin 48K. Compatible with TK90X also.
  • It uses its own fast clock (25 MHz). It does not need the CPU clock at all.
  • Rear expansion port continuation, allowing the user to plug another device. Note that ROMCS and other signals are not filtered.
  • NMI button to call file browser in ESXDOS, and handy RESET button. The RESET button is placed so that it won't be accidentally pressed while operating the interface.
  • MicroSD socket. Most popular SD format for bigger capacity cards.
  • A single switch is used to indicate DivTIESUS that the EEPROM can be flashed (JP2 equivalent) and the automapping feature is disabled.
  • Visual feedback for SD activity (blue led) and update EEPROM mode (red led).
  • ESXDOS shadowing does not collide with all-RAM feature in +2A/B/3 machines. If the system is in all-RAM mode, ESXDOS ROM mapping is disabled.
  • Soft +3E feature: DivTIESUS is able to load +3E ROM images from the SD card, install them as the system ROM (using its own RAM), and make them available to the computer, while disabling the automapping feature (needed for ESXDOS but not for +3eDOS). This, effectively, allows the user to operate his/her +2A/B/3 machine as a +2e/3e one, all without having to open the case and exchange ROMs. A new dot command, ".go3e" makes this possible. Such command only works with DivTIESUS.
  • Soft ROM feature: the soft +3E feature can also be used to load any 16K, 32K or 64K ROM and make the computer to boot with that ROM (the dot command currently supports only 16K ROMs). This means that ROM images for some util/games available for the Spectrum can be run in their original form. No need to have a +2A/B/3 machine to use them.
  • DB9 male joystick connector, located at the right of the interface. It is wired as Atari joystick port with support for two fire buttons (pins 6 and 9). The joystick is read as Kempston joystick.
  • The joystick interface supports Sega Megadrive pads (buttons B and C are available).
  • PS/2 connector for a mouse, emulated as Kempston mouse. Emulation can be disabled (for games that use weird ports for reading Kempston joystick), and L/R buttons can be interchanged (for some russian software that uses the R button as primary mouse button). A dot command ".mouse" can be used to configure Kempston mouse emulation if needed.
  • Wifi module, software compatible with the ZX-UNO wifi module and Nihirash utilities/network clients. A new dot command, ".wconf", specially written for DivTIESUS, allows for easy configuration and wifi hotspot searching.
  • RTC module, with support for ESXDOS, and utilities to set the current date both manual way, or by using an NTP server through the wifi module.
  • A nice aluminum cover for the electronics, featuring the DivTIESUS logo, the ZX Projects logo, and the "shut up and take my money" meme with Fry, but replacing the wad of bills for a few coins, symbolizing that you may want DivTIESUS badly, but won't have to spend a lot of money on it.
Quick start

If you already have a FAT/FAT32 formatted SD card with ESXDOS 0.8.9 (the version that DivTIESUS chips as the time of this writting) just skip the next paragraph.

Get a SD or SD-HC card (tested up to 32 GB). Format it with FAT32. Go to the ESXDOS site and download ESXDOS 0.8.9 to your PC. Copy the BIN and SYS directories from the .ZIP file you have just downloaded into the SD card.

Download, decompress and copy the DivTIESUS utilities to the BIN directory of your SD card.

Switch off your computer. Take the DivTIESUS interface. Check that the rear connector doesn't have bent pins and that the index tab is present (it may be a little deep into the connector).

Plug it in the expansion port. See the following pictures:

Make sure the side switch is in the EN position (to enable ESXDOS). You only need to put it in the DIS position to update ESXDOS firmware.

Now insert the SD card and power the computer. You should see the ESXDOS boot screen, similar to this one:

If you see that loading RTC.SYS gives you an [ERROR}, it is not. That message should be something like "NOT PRESENT" or "ABSENT", as DivTIESUS lacks a RTC clock. Anyway, if that bothers you, get this rtc.sys dummy driver and put it into the SYS directory of your SD card.

If you can't boot at all, or you don't see anything similar to this picture, please refer to the Troubleshooting section.

The boot screen will lead to the standard booting process. If you are using DivTIESUS with a 128K machine, you will notice that now it boots like if it was a 48K machine. This is normal. There is no boot menu when ESXDOS is in use (more on this in the following section).

Now, pressing the NMI button will take you to the file browser. The default browser included with ESXDOS is very easy to use. Just take into account that ESXDOS does not support long file names, so try to keep your file names with the 8.3 scheme. If you can see the files you just stored in your SD card, then it's all fine. Now you can proceed to the next section.

DivMMC / ESXDOS

To be documented

3E mode

3E soft mode is available in all versions of DivTIESUS. To use it, you need:

  • DivTIESUS plugged in a ZX Spectrum +2A/B/3 or compatible.
  • The .go3e dot command (to be placed in the BIN directory of your SD card). If you followed the instructions in the Quick Start section, you already have it.
  • 64K ROM image (one file) for +3e, divmmc device, either spanish or english version. More specifically, the .go3e command will look for one of these files to be present in the BIN directory of your SD card: dvmen3eE.rom or dvmes3eE.rom. You can get these files from the +3e project page (use the one according the language of your computer keyboard, or your personal preference)
  • Optionally, an IDEDOS formatted SD card. There are instructions on how to use the same card for both FAT32 partitions, and IDEDOS partitions, in the +3e project page.

To enter +3E mode, just type .go3e at the BASIC prompt. Border will change colour several times and then, a message asking you to put a +3E formatted card will show. If you have one, remove the ESXDOS card and put it. Then press any key. The computer will reset into the +2E/+3E boot menu.

DivMMC will not be available (as if the switch would were flipped to DISABLE) and a normal reset (either the built-in reset button or the DivTIESUS reset button) will not return you to ESXDOS, but it will make you stay in +3E mode. To return to ESXDOS, put the ESXDOS card again, and press and release NMI+RESET while holding the SPACE key.

For an enhanced experience with +3e, I recommend using the fantastic Workbench +3E by OCTOCOM. They even offer some prebuilt disk images to burn into your (blank) SD card.

SoftROM mode

SoftROM is available in all versions of DivTIESUS. Unlike the +3E mode, which needs a +2A/B/3 computer, the softROM mode can work on any Spectrum, provided it has at least 48K RAM.

The SoftROM feature uses a dot command: LOADROM. If you followed the instructions in the Quick Start section, you already have it.

To use it, just type .loadrom name_of_the_rom_file from the BASIC prompt and press ENTER. The ROM file must have 16K in length. Once it is loaded, it becomes the system ROM for all purposes and effects. Even pressing RESET will take you again to this new ROM. To exit SoftROM mode and go back to ESXDOS, press RESET+NMI.

While the loaded ROM is executing, the machine behaves as a 48K Spectrum, disabling 128K paging and shadow screen. This is to ensure that Ultimate ROM cartridges will work without problems.

NOTE: Bob Fossil's NMI browser has a built-in feature to load ROM files, but it doesn't work with all ROMs. This is mainly because it uses the standard MAPRAM feature present in all DivMMC devices, which does not disable DivMMC. Besides, the loaded ROM cannot survive a RESET.

Joystick port

The joystick port is available only in the "Pijus Magnificus" version of DivTIESUS. It's a standard DB9 male connector that will accept any Atari wired joystick. It should also accept joysticks with integrated autofire (tested with Konig SpeedKing). It offers two fire buttons. It can also work with Sega Megadrive pads (tested with 3 and 6 button pads) and Sega Master System pads.

For Sega Megadrive pads, button B is main fire, and button C is secondary fire.

To software, the joystick port acts as a Kempston joystick interface.

Mouse emulation

Mouse emulation uses the joystick port, so this is available only in the "Pijus Magnificus" version of DivTIESUS.

The joystick port also accepts an Amiga or Atari ST mouse (DB9 connector). It won't accept a serial (RS232) mouse. Plugging in one of these will likely damage your mouse and/or DivTIESUS. It may also accept PS/2 to Amiga mouse converters, but this has not been (yet) tested.

DivTIESUS can emulate a Kempston mouse protocol. As Kempston mouse I/O ports can sometimes collide with Kempston joystick I/O port, a feature to selectively disable the Kempston mouse emulation by software is available. The user can also swap the left and right buttons, which is likely to be useful for some russian software that uses the mouse that way, and select either an Amiga or Atari mouse.

To perform these tasks, a new dot command, .mouse, has been written. This dot command allows you to get the current configuration (defaults to emulation on, Amiga mouse, buttons not swapped) and to change any of the parameters. Refer to the built-in help of .mouse when you invoke it withour arguments.

Mouse emulation also work while in +3E mode, so you can configure Workbench +3E to use it.

Wifi module

The wifi module (actually, a ESP12-E module) is available only in the "Pijus Magnificus" version of DivTIESUS.

It uses a fast (115.2 kbps) serial connection to the Spectrum, in a dedicated port (more on this in the technical info section), compatible with ZX-UNO port addressing scheme, so all utils and network clients written for it will work on this module.

Two leds (yellow, for transmitted data and green for received data) at the back of DivTIESUS, facing the user, are used to monitor wifi activity.

It must be configured on the first run. For this, a new dot command has been written specially for this module. It's .wconf. If you followed the instructions in theQuick Start section, you already have this command installed.

.wconf will configure baud rate and wifi client settings, then will scan and list available wifi access points (AP) so you can choose one. Just type the letter or digit associated to the desired AP. If you can't see yours in the list, press SPACE to scan again. The AP must be 2.4 GHz 802.11/b/g compatible, with WEP or WPA enabled.

After an AP has been selected, type in the associated password. The wifi module will attempt to connect, and upon succesfull connection, it will display you the assigned IP address, and will store the settings inside the module. After this, anytime you switch on the Spectrum with DivTIESUS plgged in, the wifi module will reconnect to the stored AP.

Another utility that has been included with DivTIESUS software distribution is .wload . This is a dot command, aimed specially for developers, that allows sending a binary file over the air to be stored in the computer memory and, optionally, executed. This way, you don't need to carry the SD card in and out of DivTIESUS to your PC to copy the program you intend to test in your Spectrum. If you followed the instructions in theQuick Start section, you already have this command installed.

Your PC and Spectrum must be reachable by TCP/IP. Ideally, they will be in the same subnet. On the Spectrum, type .wload and after a succesfull connection, it will stay waiting for data on port 6912. The currently assigned IP address will be displayed to.

To send the binary file from your PC, use the netcat utility this way: nc ip_of_your_spectrum 6912 < binaryfile

The binary file to be sent must have this format:

  • Offset 0: a 16 bit number (2 bytes), in little endian format, indicating the starting address to store the binary data at.
  • Offset 2: a 16 bit number (2 bytes), in little endian format, indicating the starting point of execution. If this value is 0, the binary data received won't be executed.
  • Offset 4: the rest of the binary data to be sent.

More on this, in the technical info section.

Technical info
To be documented
Troubleshooting

Connection / boot problems

- My Spectrum does not boot at all when DivTIESUS is connected. It boots without it.
First, check that the rear port pins at the Spectrum are clean. It's normal to have a thin layer of oxide on these pins over time. Use a cotton tip with IPA, and rubber across all pins on both sides of the rear port. Try connecting DivTIESUS again.

- Ok, that didn't work. Now what?
Try putting the EN/DIS switch to the DIS position. Power on the computer. The red led should light and you should boot straight to the copyright message or the boot menu, as if the interface were not plugged in. If you can boot this way, your computer might have a known issue, in which one of the CPU signals that DivTIESUS uses, /M1, is not working well. In this case, other interfaces, such as Interface 1, or hardware snapshot makers won't work either. Anyway, try the diagnostic program that is described in the next question.

- My computer works with said interfaces, but not with DivTIESUS
If you, at least, can boot and use your computer with DivTIESUS plugged in, and with the side switch in the DIS position, load (from audio) this program to make a quick diagnose about your DivTIESUS (there is a TAP and a WAV version of the program. Use the TAP version if you have a TAPduino or a mobile app to play TAP files (you can also use Tapir in your Windows PC), or alternatively, play the WAV file with a media player). The program outputs two rows of hex codes, like this:

The first rows shows the test result code for each bank of RAM. There are 16 banks, and a healthy bank will print an hex code with green background. A code in red background means that a bank is not working as expected.

The second row shows that the EEPROM has been mapped succesfully. Both codes (4B and 4F in this example) should be different. If they found to be equal, that means that the EEPROM couldn't be mapped. The first code (4B) is obtained from the ESXDOS firmware (0.8.9 in this example). The second code (4F) comes from your computer system ROM and may vary, depending on your Spectrum model and/or ROM revision.

If your output tells the RAM is good, and that the EEPROM can be mapped on and off, and its code is 4B (for ESXDOS 0.8.9), then it's probably that your computer needs some servicing. Also check that the pins at the rear connector of your DivTIESUS are not bent, or missing, and that the index pin (near the left of the connector in this picture) is present.

- It doesn't boot with DivTIESUS plugged in, no matter if the side switch is in EN or DIS position.
First, try to use an /M1 aware interface in your Spectrum, such as: Interface 1, another DivIDE/DivMMC interface, IF1bis, Sprint cassette player, etc. If any of these work nice, then DivTIESUS may need servicing. If you cannot have access to any of said interfaces, there is little you can test. It could be that some of the pins of the rear connector are not making good contact. Make sure your DivTIESUS is well plugged (see pictures at the Quik Start section). If that's not the issue, try to evenly unplug it by 1-2 mm or so, so metal pins inside the connector will make contact with another (hopefully in better condition) portion of the metal pad inside your Spectrum.

SD CARD PROBLEMS

- The SD card doesn't seem to be detected by ESXDOS.
If during ESXDOS boot sequence, there are no detected devices, no drives are mounted, and thus, [ERROR] is displayed when trying to load ESXDOS.BIN, the first to try the SD card in a PC. 64 GB or higher SD cards have not been tested with DivTIESUS so I cannot assure they will work. Best it's to use a 4 to 16 GB SD-HC card. If you are using a micro-SD, try to user another adapter, or another card.

- The SD card is detected, but ESXDOS.BIN gives [ERROR].
The nore likely cause is that you are using an ESXDOS version in your SD card that doesn't match the ESXDOS version in DivTIESUS. DivTIESUS is currently shipped with ESXDOS 0.8.9 ROM, so even if you think you have the right version in your SD card, try getting the 0.8.9 version from the ESXDOS website (see the Quick Start section) and make sure you overwrite any file in your SD card with the same file from the ESXDOS distribution ZIP file. Also, make sure you have formatted your SD card with FAT (or better yet, FAT32) filesystem. NTFS, ExFAT, HFS or any other filesystem won't work with ESXDOS.

- I can succesfully boot ESXDOS, but weird things happen.
If dot commands are not working, or NMI button just resets the computer, or hangs it, or do nothing, then first apply the suggestions from the previous question. If this doesn't solve the problem, either your computer or DivTIESUS may need servicing.

FAQ

- Q: What does "DivTIESUS" mean?
- A: I explained it in the Introduction section of this page.

- Q: Why so cheap?
- A: Well, mainly because I wanted it to be affordable for my fellow retro community. I knew that a cheaper interface could be designed, and instead of taking the reference design by Mario Pratto, I went my own way, backed by my experience designing the ZX Spectrum core for the ZX-UNO project, trying to get the most features with the minimum chips. This project is not for me to make lots of money. I will be more than happy if I can cover my expenses during the development of this project with the units I could sell.

- Q: Is this an open source project?
- A: Not at this moment. Eventually, it will be, but not in the foresee future.

- Q: Is a DIY kit version available?
- A: Sorry, but as long as this project is not open source, there won't be DIY kits.

- Q: Are dot command's source code available?
- A: Yes, they are. The source code of all dot commands I've written to support the different features of DivTIESUS are in Github.

- Q: It's difficult to get a DivTIESUS. Everytime I go to the shop to get one, there are no units left. Why?
- A: I build DivTIESUS manually. I'm not relying in third parties to get a PCB built so I have to mount, solder, program and test each and every board by myself (I don't even have a SMD pick and place machine), and this is a 1-person project. This means that the amount of interfaces I can build is limited by my spare time, and that varies over the year. My primary job is teaching at the University of Seville, and you can assume that when the end of the semester is near, I will be very busy with tests, exams, and so on. My goal is to make batches of 10 units each time. Please, be patient. To benefit from economy of scale and keep prices low, I calculate I would have to produce over 1000 DivTIESUS boards, and that's a lot of money to give in advance.

- Q: I have a "Tiesus del tó" version (basic version). If I solder myself a DB9 connector and a ESP-12E wifi module, will my DivTIESUS behave as the "Pijus Magnificus" version?
- A: I'm afraid it will not. The CPLD core in each model is different. The basic version does not include joystick, mouse and serial modules, so you can plug in another interface that provides them.

- Q: Why can't I use soft +3E mode in a Spectrum different than +2A/B/3?
- A: (thanks to Wilco2009 for this explanation about this issue) While the +3E ROM does not use the all-RAM mode that is available in those machines, the 128K toastrack and +2 grey decode I/O port $7FFD (128K memory paging register) in a way that causes any access to port $1FFD (+3 memory paging register) to access port $7FFD as well. That means that any write to port $1FFD will write to port $7FFD too, and the +3E ROM does a lot of writes to $1FFD. Unfortunately, this is something that can't be prevented from an external interface like DivTIESUS. To make a 128K Spectrum earlier than +3 to use +3E mode, the only solution I know about is to change the PAL chip inside the Spectrum to a new one with fixed address decoding for I/O port $7FFD (and fixing in the way some other bugs, like the "raining" effect when using interrupt routines in IM 2 mode in contended RAM pages, or crashing the computer when trying to read port $7FFD)

- Q: What things have you "sacrificed" in order to keep prices low in DivTIESUS?
- A: DivTIESUS has not a cool ABS case. It also has not a second SD slot. The continuation of the rear slot does not daisy chain some signals, like ROMCS, which makes a second interface to inhibit the DivTIESUS ROM mapping not possible. My time is also a sacrifice I had to make, because, as I told earlier, DivTIESUS is manually built. That allows me to spread my chances of getting low prices on some components (PCB assembly companies often work with their own inventory of components, which may or may not have competitive prices).

- Q: Will DivTIESUS work with (insert your clone machine name)?
- A: I have tested DivTIESUS with all the gear I have at my reach (see Features section to find out which Spectrum models I have tested). Some advanced clones like the Spectrum Next already have the functions of DivTIESUS built in, so I have not bothered to test DivTIESUS with it. I have a couple of russian clones, but no one of them have a mecanically compatible expansion port.

- Q: Will DivTIESUS work with (insert your interface name)?
- A: Most probably, yes. The continuation for the rear port is a 1-to-1 signal routing connector. Provided that your other interface does not use the same ports as DivTIESUS (beware of partial decodification, see Technical Info section) and doesn't try to map memory in the ROM area, it should work.

- Q: I'd like to consider other options before making my final decision about buying this DivTIESUS thing. Where can I find them?
- A: These are the current vendors (I know about) that produce and sell similar interfaces: Bytedelight, TFW8B, Zaxon, Divide 2k11, ShamaZX DivMMC, Dandanator, DivGMX, Divide.cz eShop.

Photo gallery







Pricing & shopping

The first batch of DivTIESUS is sold.

Next batch will be available at Antonio Villena's webshop. Go to the product page and subscribe to receive e-mail notifications when new units are available.