Introduction

ZXDOS+ and gomaDOS+ are the continuation of ZX-Uno a hardware and software project based on an FPGA board programmed to work like a ZX Spectrum computer, and created by the ZX-Uno team: Superfo, AVillena, McLeod, Quest and Hark0.

Over time, the project has been growing, and now it is possible to install different software configurations (cores) in the flash memory of the FPGA, which work like different systems than the ZX Spectrum, and you can choose to start the ZXDOS+ with the desired configuration among all those installed.

ZXDOS+ and gomaDOS+ official web page is http://zxdos.forofpga.es.

Most of the functions and features of ZXDOS+ and gomaDOS+ are the same, so this document will generally talk about ZXDOS+, indicating the differences with gomaDOS+ where necessary.

Ports and Connectors

ZXDOS+

ZXDOSfront

ZXDOSback

gomaDOS+

gomaDosBack

Description

1

Power Switch

2

microSD Card Slot

3

JTAG and Joystick

4

Audio Out

5

Audio In

6

RGB/VGA Out

7

Power Socket

8

Expansion Port

9

Left Joystick Port

10

Right Joystick Port

11

PS/2 Keyboard Port

12

PS/2 Mouse Port

0

USB (PS/2) Port

Initial Setup

In order to be able to set up and use a ZXDOS+ or gomaDOS+ you need, at least, the following:

  • A USB charger or a TV or other device that offers USB power

  • VGA cable and monitor

  • PS/2 keyboard (in the case of ZXDOS +)

In order to take advantage of its full potential, you may also have:

  • A microSD card, not necessarily very large

  • PC speakers to connect to the audio output, or a stereo jack cable to two red/white RCA connectors to connect to the TV (this is optional on gomaDOS+, as it has a beeper inside)

  • A standard Atari joystick, such as a Megadrive DB9 gamepad (gomadOS+ needs a joystick adapter)

  • A PS/2 mouse (USB to PS/2 adapter is needed when using a gomaDOS+)

  • An audio cable with a stereo 3.5 mm jack on one side, and both audio channels split into two mono outputs on the other side, if you want to use an audio player and/or recorder, like, for example, a Miniduino (see more info later)., a PC/Mac/Raspberry PI, etc. or a cassette tape recorder/player. The right sound channel is used as input (EAR) and the left channel can be used as output (MIC).

microSD card formatting

In order to use a microSD card, it has to be formatted with, at least, one FAT16 or FAT32 format (depending on the case, one or the other format is recommended for compatibility with different third-party cores). It must be the first partition if there are more than one, except for the Spectrum core wich can have the first partition in +3DOS format, and then the second one in FAT16 or FAT32 format to use with a +3e ROM.

FAT16 partitions have a maximum size of 4GB

Windows

For simple configurations, and cards of the correct size (less than 2GB for FAT16 or less than 32GB for FAT32), you can use the official formatting tool of the SD Association .

For other, more complex, configurations, and depending on operating system version, you may use the command line tool diskpart or Windows Disk Managemente GUI.

MacOS

For simple configurations, and cards of the correct size (less than 2GB for FAT16 or less than 32GB for FAT32), you can use the official formatting tool of the SD Association or Disk Utility, which is included with the operating system.

In other case, you should use the command line.

For example, to format a card, shown as disk6, with only one FAT16 partition (if the card size is less than 2GB):

diskutil unmountDisk /dev/disk6
diskutil partitionDisk /dev/disk6 MBR "MS-DOS FAT16" ZXDOSPLUS R

To split it into two FAT16 partitions of the same size (if the card size is 4GB or less):

diskutil unmountDisk /dev/disk6
diskutil partitionDisk /dev/disk6 MBR "MS-DOS FAT16" ZXDOSPLUS 50% "MS-DOS FAT16" EXTRA 50%

To create two FAT 16 partitions (e.g. to use MSX core) and have the rest of space as another FAT32 partition (for cards more than 8GB in size):

diskutil unmountDisk /dev/disk6
diskutil partitionDisk /dev/disk6 MBR %DOS_FAT_16% ZXDOSPLUS 4G %DOS_FAT_16% EXTRA 4G "MS-DOS FAT32" DATA R
sudo newfs_msdos -F 16 -v ZXDOSPLUS -c 128 /dev/rdisk6s1
sudo newfs_msdos -F 16 -v EXTRA -b 4096 -c 128 /dev/rdisk6s2

diskutil cannot create FAT16 partitions which are bigger than 2G and also format them. That’s why, in this example, after only creating the partitions, we have to format them.

To create one FAT32 4GB partition (e.g. to use with Amstrad CPC core), and then have the rest of space available as a second FAT32 partition (for cards of more than 4GB):

diskutil unmountDisk /dev/disk6
diskutil partitionDisk /dev/disk6 MBR "MS-DOS FAT32" ZXDOSPLUS 4G "MS-DOS FAT32" EXTRA R
Linux

There are a lot of tools for Linux that can format and/or partition an SD card (fdisk, parted, cfdisk, sfdisk or GParted to name a few). It should only be taken into account that the partition scheme must always be MBR, and the first partition (the one that will be used for esxdos) must be primary partition.

esxdos

esxdos is a firmware for the DivIDE/DivMMC hardware interfaces (which ZXDOS+ implements). This allows access to storage devices such as a microSD card. It includes commands similar to those of UNIX, although to use them you must precede them with a period, for example .ls,` .cd`, .mv, etc.

For it to work, it is necessary to include the corresponding files in the first partition of the microSD card.

At the time of writing this document, the version included with ZXDOS+ is 0.8.6, and it can be downloaded from the official website at this link.

Once downloaded and extracted, you have to copy the directories BIN, SYS and TMP, and all of their content, to the root of first partition of the microSD card.

If everything has been done correctly, when you turn on the ZXDOS+ Spectrum core, you will see how esxdos detects the card and loads the necessary components to work.

esxdos

It is also recommended to add the specific esxdos commands for ZXDOS+. These can be obtained from the project source page (here, here and here), and are as follows:

back16m
backzx2
backzxd
corebios
dmaplayw
esprst
iwconfig
joyconf
keymap
loadpzx
playmid
playrmov
romsback
romsupgr
upgr16m
upgrzx2
upgrzxd
zxuc
zxunocfg

<<#_zxdos+_commands,It is explained later> what each of them does.

GomaDOS+ keyboard modes

gomaDOS+ keyboard, being similar to the original ZX Spectrum keyboard, lacks some of the existing keys on a modern PC keyboard. The keyboard membrane is connected to an Arduino board, which manages the transformation key presses to PS/2 keyboard protocol. The board is programmed so it can behave in different modes according to your needs.

The default is ZX Spectrum mode. To change to a different mode, you must press Caps Shift+Symbol Shift+U and then the key for the desired mode. After doing that, some text is automatically typed, to show the selected mode (for example .zx if you press Caps Shift+Symbol Shift+U and theno 0).

This table shows the available modes and activation keys:

Mode Key

ZX Spectrum

0

Amstrad CPC

1

MSX

2

Commodore 64

3

Atari 800XL

4

BBC Micro

5

Acorn Electron

6

Apple (I and II)

7

Commodore VIC 20

8

PC XT

9

Oric Atmos

A

SAM Coupé

B

Jupiter ACE

C

ZX Spectrum mode key assignment, with the corresponding keypress when used simultaneouly with Caps Shift+Symbol Shift:

1

2

3

4

5

6

7

8

9

0

F1

F2

F3

F4

F5

F6

F7

F8

F9

F1

Q

W

E

R

T

Y

U

I

O

P

F11

F12

Mode

A

S

D

F

G

H

J

K

L

Enter

ScrLk

CShift

Z

X

C

V

B

N

M

SShift

Space

Save

Vers

hRes

sRes

Where:

  • ScrLk: Scroll Lock changes betweein composite and VGA video mode (on Next Core, you must use Caps Shift+Symbol Shift+2 or`F2` instead)

  • Save: Sets the current mode as the default one

  • Vers: Shows (types) current firmware version

  • hRes: Hard Reset

  • sRes: Soft Reset

The full list of key combinations (and compatible modes) is as follows:

Caps S.+Symbol S. Mode Action

1

All

F1

2

All

F2

3

All

F3

4

All

F4

5

All

F5

6

All

F6

7

All

F7

8

All

F8

9

All

F9

0

All

F10

Q

All

F11

W

All

F12

S

C64

Ctrl+F12

E

Acorn/CPC

PgUp

R

Acorn

PgDown

U

All

Mode

G

ZX/MSX/C64

ScrLk

X

All

Save

C

PC

OPQA

V

All

Version

B

ZX

Ctrl+Alt+Bcksp

N

ZX

Ctrl+Alt+Supr

BIOS

Pressing the F2 key (Caps Shift+1 on gomaDOS+) during boot will access the BIOS setup. The BIOS firmware is the first program that runs when the ZXDOS+ is turned on. The main purpose of BIOS is to start and test the hardware and load one of the installed cores.

Using left and right cursor keys (Caps Shift+5 and Caps Shift+8 on gomaDOS+), you can navigate through the BIOS setup screens. With up and down keys (Caps Shift+7 and Caps Shift+6 on gomaDOS+) you can choose the different elements of each screen and, with the Enter key, it is possible to activate and choose the options for each of these. Esc key (Caps Shift+Espacio ongomaDOS+) is used to close open option windows without applying any action.

Main

bios

In the first configuration screen, in addition to being able to run several tests, you can define the default behavior for the following:

  • Boot Timer: Sets how long the boot screen is available (or hiding it completely)

  • Check CRC: Check ROM integrity when loading (more secure) or bypassing it (faster)

  • Keyboard

  • Timing: ULA Behaviour (48K, 128K, Pentagon Modes)

  • Contended

  • DivMMC

  • DivMMC NMI Support

  • New Graphic Modes Support (ULAPlus, Timex, Radastan)

More technical information can be found on de ZX-Uno Wiki.

ROMs

bios2

The second screen shows the installed ZX Spectrum ROMs. You can reorder (Move Up, Move Down), rename or delete each of them, as well as choose the one that will be loaded by default at startup (Set Active ).

Upgrade

bios3

Upgrade screen is used to perform the different updates of the Flash memory content: esxdos, BIOS, Cores, etc. (see the section corresponding to updates for more information).

Boot

bios4

In the Boot screen you can choose which one of the installed cores is loaded by default at startup.

Advanced

bios5

The Advanced configuration screen is used to edit the following settings:

  • Keyboard layout (Keyb Layout): See the corresponding section for more information)

  • Joystick behavior when emulated with the numeric keypad (Joy Keypad): Kempston, Sinclair Joystick 1, Sinclair Joystick 2, Protek or Fuller

  • Behavior of a joystick connected to the port (Joy DB9): Kempston, Sinclair Joystick 1, Sinclair Joystick 2, Protek, Fuller or simulate the keys Q,` A`, O,` P`, Space and M

  • Video output: PAL, NTSC or VGA

  • Scanline simulation: Enabled Disabled

  • VGA horizontal frequency: 50, 51, etc.

  • CPU speed: Normal (1x) or accelerated (2X, 3X, etc.)

  • Csync: Spectrum or PAL

Exit

bios6

Finally, from the last screen you can:

  • Exit BIOS configuration saving changes

  • Discard changes and exit

  • Save changes without exiting

  • Discard Changes

ZX Spectrum

The main core is the one implementing a ZX Spectrum computer. This core is special, and it cannot be substituted for another that is not a ZX Spectrum, since the ZXDOS+ uses it for its operation.

These are some of its main characteristics:

  • ZX Spectrum 48K, 128K, Pentagon and Chloe 280SE implementation

  • ULA with ULAplus, Timex and Radastan modes (including hardware scroll and selectable palette group)

  • Ability to disable memory contention (for Pentagon 128 compatibility)

  • Ability to choose the keyboard behavior (issue 2 or issue 3)

  • Possibility to choose the timing of the ULA (48K, 128K or Pentagon)

  • Control of screen framing, configurable for type of timing, and possibility to choose between original Spectrum synchronisms or progressive PAL standard.

  • Timex horizontal MMU support with HOME, DOC and EXT banks in RAM.

  • Programmable raster interruption in line number, for any TV line.

  • Possibility of activating/deactivating memory bank management registers, for better compatibility with each implemented model

  • Ability to activate / deactivate the devices incorporated into the core to improve compatibility with certain programs

  • ZXMMC support for + 3e and DIVMMC support for esxdos and compatible firmwares

  • Turbo Sound support

  • SpecDrum support

  • Each channel A, B, C of the two AY-3-8912, beeper and SpecDrum chips can be directed to the left, right, both or neither outputs, allowing the implementation of configurations such as ACB, ABC, etc.

  • Real joystick and keyboard joystick support with Kempston, Sinclair 1 and 2, Cursor, Fuller and QAOPSpcM protocol.

  • Turbo mode support at 7MHz, 14MHz, 28MHz

  • Keyboard support (PS/2 protocol) and user-configurable mapping from within Spectrum itself.

  • PS/2 mouse support emulating the Kempston Mouse protocol.

  • Possibility of video output in composite video mode, RGB 15kHz, or VGA.

  • User selectable vertical refresh rate to improve compatibility with VGA monitors.

  • Multicore boot support: from the Spectrum you can select an address of the SPI Flash and the FPGA will load a core from there.

microSD advanced format (+3e)

ZX Spectrum +3e is one ROM that can be used with ZX Spectrum core. This is an improved Sinclair ZX Spectrum +3, wich can use hard disks or memory cards.

+3e uses its own partition format (called IDEDOS), to split de hard disk into several partitions to store data. ROM version 1.28 and later can share IDEDOS partitions with MBR partitions. In other case, you must reserve the whole card for IDEDOS partitions.

The following partition scheme can only be used with ZX Spectrum core.

Each partition in IDEDOS can be between 1 and 16 Megabytes (1 million bytes) in size, and each disk can have between 1 and 65535 partitions. This means that the maximum space used in a card is about 1GB.

This is one method to split a card into two or three parts, with the first partition IDEDOS (1GB), the second one FAT16 (4GB) and the third one FAT32 (using the remaining space in the card).

exsdos and other programs can be installed into the second partition as explained earlier.

Windows

You can use Windows Disk Management utility. The steps are:

  1. Remove all partitions from the card

  2. Create a new extended partition, using the desired space for IDEDOS

  3. Create a primary partition, 4GB in size, and format as FAT16

  4. Optionally, create another primary partition using the remaining space and format as FAT32

MacOS

You will have to use the command line. The first task is to find out which device is the disk to format:

diskutil list

For this example, it will be disk 6:

(...)
/dev/disk6 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *15.9 GB    disk6
   1:                 DOS_FAT_32 UNKNOWN                 15.9 GB    disk6s1

Instruction steps:

  1. Unmount the disk and edit the partition sceme (the second step requires admin privileges):

diskutil unmountDisk /dev/disk6
sudo fdisk -e /dev/rdisk6
fdisk: could not open MBR file /usr/standalone/i386/boot0: No such file or directory
Enter 'help' for information
fdisk: 1> erase
fdisk:*1> edit 1
Partition id ('0' to disable)  [0 - FF]: [0] (? for help) 7F
Do you wish to edit in CHS mode? [n]
Partition offset [0 - 31116288]: [63] 128
Partition size [1 - 31116287]: [31116287] 2017152

fdisk:*1> edit 2
Partition id ('0' to disable)  [0 - FF]: [0] (? for help) 06
Do you wish to edit in CHS mode? [n]
Partition offset [0 - 31116288]: [2017280]
Partition size [1 - 29099135]: [29099135] 7812504

fdisk:*1> flag 2

fdisk:*1> edit 3
Partition id ('0' to disable)  [0 - FF]: [0] (? for help) 0B
Do you wish to edit in CHS mode? [n]
Partition offset [0 - 31116288]: [9829784]
Partition size [1 - 21286504]: [21286504]

fdisk:*1> print
         Starting       Ending
 #: id  cyl  hd sec -  cyl  hd sec [     start -       size]
------------------------------------------------------------------------
 1: 7F 1023 254  63 - 1023 254  63 [       128 -    2017152] <Unknown ID>
 2: 06 1023 254  63 - 1023 254  63 [   2017280 -    7812504] DOS > 32MB
 3: 0B 1023 254  63 - 1023 254  63 [   9829784 -   21286504] Win95 FAT-32
 4: 00    0   0   0 -    0   0   0 [         0 -          0] unused

fdisk:*1> write
fdisk: 1> quit
  1. Format the FAT partitions (admin privileges required)

diskutil unmountDisk /dev/disk6
sudo newfs_msdos -F 16 -v ZXDOSPLUS -c 128 /dev/rdisk6s2
sudo newfs_msdos -F 32 -v EXTRA -c 128 /dev/rdisk6s3
  1. Confirm that the new partition scheme has been applied:

diskutil list
(...)
/dev/disk6 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *15.9 GB    disk6
   1:                       0x7F                         1.0 GB     disk6s1
   2:                 DOS_FAT_16 ZXDOSPLUS               4.0 GB     disk6s2
   3:                 DOS_FAT_32 EXTRA                   10.9 GB    disk6s3

Linux

You can use the command line. First, find out the device to erase:

lsblk

For this example, it will be sdc:

NAME         MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
(..)
sdc          179:0    0 15,8G  0 disk
└─sdc1       179:1    0 15,8G  0 part

Instructions:

  1. Verify that the disk isn’t mounted and edit the partition scheme (this step requires root privileges):

sudo fdisk -e /dev/sdc
Enter 'help' for information
fdisk: 1> erase
fdisk:*1> edit 1
Partition id ('0' to disable)  [0 - FF]: [0] (? for help) 7F
Do you wish to edit in CHS mode? [n]
Partition offset [0 - 31116288]: [63] 128
Partition size [1 - 31116287]: [31116287] 2017152

fdisk:*1> edit 2
Partition id ('0' to disable)  [0 - FF]: [0] (? for help) 06
Do you wish to edit in CHS mode? [n]
Partition offset [0 - 31116288]: [2017280]
Partition size [1 - 29099135]: [29099135] 7812504

fdisk:*1> flag 2

fdisk:*1> edit 3
Partition id ('0' to disable)  [0 - FF]: [0] (? for help) 0B
Do you wish to edit in CHS mode? [n]
Partition offset [0 - 31116288]: [9829784]
Partition size [1 - 21286504]: [21286504]

fdisk:*1> print
         Starting       Ending
 #: id  cyl  hd sec -  cyl  hd sec [     start -       size]
------------------------------------------------------------------------
 1: 7F 1023 254  63 - 1023 254  63 [       128 -    2017152] <Unknown ID>
 2: 06 1023 254  63 - 1023 254  63 [   2017280 -    7812504] DOS > 32MB
 3: 0B 1023 254  63 - 1023 254  63 [   9829784 -   21286504] Win95 FAT-32
 4: 00    0   0   0 -    0   0   0 [         0 -          0] unused

fdisk:*1> write
fdisk: 1> quit
  1. Format both FAT partitions (requires root privileges)

sudo mkfs.fat -F 16 /dev/sdc2
sudo mkfs.fat -F 32 /dev/sdc3
  1. Confirm that the partition scheme has been changed:

lsblk
NAME      MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
(...)
sda      179:0    0 15,8G  0 disk
├─sda1   179:1    0    1G  0 part
├─sda2   179:2    0    4G  0 part
├─sda3   179:3    0 10,8G  0 part

+3e

Once the microSD card is ready to use, you can start Spectrum core with a +3e ROM and format the IDEDOS part.

The first step is determine the disk geometry. With the cart inserted into the ZXDOS+, type the command:

CAT TAB

This will give a result showing the number of cylinders, heads and sectors.

Whith this info, we estimate the size of our partition, using cylinders. For example, if the number of cylinders is 32768, and we want to use 1GB of a 16GB card, the number of cylinders needes would be 32768/16=2048. This way, the IDEDOS partition can be formatted using that number:

FORMAT TO 0,100,2048

The first value (0) is the drive to use (the first one), the second value is the maximum number of IDEDOS partitions, and the third one yis the number of cylinders to use.

Once formatted, you can create new partitions. For example, to create a 16MB partition with the name "Software", another 4GB partition named "Swap" (to use as swap) and another one name "Utils", 8MB in size:

NEW DATA "Software",16
NEW EXP "Swap1",4
NEW DATA "Utils",8

For more information about the different +3e disk commands , you can check this page at World of Spectrum.

Keyboard

The keyboard map (physical keys of the keyboard assignment to the keystrokes that are presented to the different cores) is changed using the Advanced menu of the BIOS. There are three different maps to choose from: Spanish (default), English, and Spectrum (advanced).

You can also change it using the keymap utility. Inside /bin you have to create a directory named keymaps and copy inside the keyboard map files that you want to use. For example, to switch to the US map you have to write .keymap us from esxdos.

For the map to be preserved after a master reset, it has to be selected as Default in the BIOS.

For more information, see this message in the ZX-Uno forum.

Spanish

keyboardEsp

English

keyboardEng

Spectrum

keyboardAV

Special keys and buttons

The following gomaDOS+ key combinations are in ZX keyboard mode. Please check the corresponding section for more information. You can also use PC XT keyboard mode combinations (like Caps Shift+Symbol Shift+2 instead of Caps Shift+1).

Special keys which can be used during startup:

  • F2 (Caps Shift+1 on gomaDOS+) Enter BIOS setup

  • Caps Lock or Cursor down (Caps Shift+2 on gomaDOS+) or, if a joystick is connected, pressing down: Core selection menu

  • Esc (Caps Shift+Space on gomaDOS+), or if a joystick with two or more fire buttons is connected, pressing the 2nd fire button: ZX Spectrum core ROM selection menu

  • R: Loads the Spectrum core ROM in "real" mode, disabling esxdos, new graphics modes, etc.

  • / (numeric keyboard, Symbol Shift+V on gomaDOS+): Load the default ZX Spectrum core ROM in "root" mode

  • Number from 1 to 9: Load the core in the flash location corresponding to that number

Special keys that can be used while running the main core (ZX Spectrum):

  • Esc (Caps Shift+Space on gomaDOS+): BREAK

  • F2 (Caps Shift+1 on gomaDOS+): Edit

  • F5 (Caps Shift+Symbol Shift+5 on gomaDOS+): NMI

  • F7 (Caps Shift+Symbol Shift+7 on gomaDOS+): Play or pause when playing .PZX files

  • F8 (Caps Shift+Symbol Shift+8 on gomaDOS+): Rewind .PZX file to the previous mark

  • F10 (Caps Shift+9 on gomaDOS+): Graph

  • F12 (Caps Shift+Symbol Shift+W on gomaDOS+): Turbo Boost. Speeds up CPU to 28MHz while pressed (beginnig with core EXP27).

  • Ctrl+Alt+Backspace (Caps Shift+Symbol Shift+B on gomaDOS+): Hard reset. Backspace is the delete key, located in the top-right portion of the keyboard, above Enter.

  • Ctrl+Alt+Supr (Caps Shift+Symbol Shift+N on gomaDOS+): Soft reset.

  • Scroll Lock (Caps Shift+Symbol Shift+G on gomaDOS+): Switches between compositve and VGA video modes.

ROMs

The ZX Spectrum core can be initialized using different ROM versions (48K, 128K, Plus 2, etc.). These are stored in the flash memory of the ZXDOS+, and you can choose which one to load by pressing the Esc (Caps Shift+Space on gomaDOS+) key during boot. You can also define the ROM that you want to load by default using the BIOS setup.

See the updates section for more information on how to expand or modify the ROMs stored in flash memory.

DerbyPro

DerbyPro or Derby++ is an enhanced firmware ROM for the ZX Spectrum, based on v1.4 of the Derby development ROM. The Spectrum 128 (codename "Derby") was a Spanish machine commissioned by Investronica and launched in 1985. It came with a keypad that provided additional editing keys. In 1986, the UK version came out with a simplified version of 128 BASIC and no keypad. Derby++ is developed from the Spanish ROM to include the benefits of both versions, without the drawbacks, and support for new hardware developments.

You can download the ROM, a user manual and other files from the official Facebook Public Group.

Since it is a 64K ROM with support for new hardware, these flags can be used when adding it to the SPI flash:

Flag Meaning

d

Enable DivMMC

n

Enable NMI DivMMC (esxdos Menu)

t

Use 128K timings

CargandoLeches

CargandoLeches is a set of ZX Spectrum ROMs that startetd as a project to load games in any Spectrum model 15-20x faster. No tape is needed, but a digital audio source, as a computer, mobile device, MP3 player, etc. The new ROM detects the loading method and reverts to the original ROM code if needed. This is handled transparently, with no user or program intervention.

Since version 2.0 the project changed from a single ROM to more, each one with different options. This way, you can choose a different mix of options that may include:

  • Ultrafast loading

  • Reset & Play (After a sofware reset of the core, the system is ready to load from tape)

  • POKE editor

  • Enable or disable Sinclair BASIC token expansion

The whole ROM set is available to download from the repository in GitHub here.

Depending on which ROM you choose, the flags when adding to the SPI flash may vary. For example, for the ROM 48le_ea_re_po (with all features enabled), these flags can be used (we cannot enable NMI DivMMC since the POKE editor will use it):

Flag Meaning

d

Enable DivMMC

h

Disable ROM high bit (1FFD bit 2)

l

Disable ROM low bit (7FFD bit 4)

x

Disable Timex mode

POKEs

When using a ROM with POKE option enabled:

  1. Once the game is loaded, after pressing NMI (F5 or Caps Shift+Symbol Shift+5 on gomaDOS+) a field will appear in the upper left corner of the screen

  2. Enter the POKE address and press Enter

  3. Enter the POKE value and press Enter again

  4. Repeat steps 2. and 3. until all the desired POKEs are entered. To finish and return to the game, press Enter twice

Preparing ultrafast loading tapes

The ROMs with ultrafast loading enabled, need special tape audio data which is made from normal loading TAP files, without protections or turbo loading.

In order to create an ultrafast loading tape you need leches and CgLeches command line utilities. Those can be obtained, for Windows, from the official repository. You can also obtain an unofficial version for MacOS from this other repository.

In any other case, you can compile from the source code at the official repository. For example, in Linux, to compile using gcc you only need these commands:

gcc leches.c -o leches
gcc CgLeches.c -o CgLeches

To create an ultrafast loading tape you have to use the CgLeches command from a terminal, giving, at least, the path to the original TAP file and also to the new file to create (WAV or TZX). There are also some other optional parameters, like the loading speed, between 0 and 7 (where 0 is fastest but also more incompatible), if you want to create a mono or stereo file (when making a WAV), and more.

Thus, to make a WAV file with an ultrafast loading tape from the file Valley.tap, with loading speed 5, you could type:

(...) CgLeches Valley.tap Valley.wav 5

This way, the file Valley.wav can be played from a computer or another device and load using the ROM (see the section about loading from tape for more info).

Due to hardware limitations, TZX files made with CgLeches do not work with a Miniduino, although they usually work with PlayTZX.

Other ROMs

Here are flag settings which work when adding to the SPI flash some other known custom ROMs:

ROM Name Flags

Gosh Wonderful ROM v1.33

dnhl17x

Looking Glass 1.07

dnhl17x

ZX82 by Daniel A. Nagy

dnhl17

ZX85 by Daniel A. Nagy

dntmh1

Arcade Game Designer 0.1

thl17x

esxdos

Basic Guide

There are two different kind of esxdos commands, the so-called "DOT" commands, which, as the name suggests, begin with a period, and the commands that are extensions to the existing ones in BASIC.

The main "DOT" commands are the following:

  • 128: Para enter 128K mode from within 48K mode

  • cd: Change current working directory

  • chmod: Change file attributes

  • cp: Copy a file

  • divideo: Play a DivIDEo (.DVO) video file

  • drives: Show currently available drives

  • dskprobe: Utility which shows low level content of an storage device

  • dumpmem: Can dump RAM memory content to a file

  • file: Tries to recognize the type of data contained in a file (like the UNIX command)

  • gramon: Monitor to search graphics, sprites, fonts, etc. in RAM memory

  • hexdump: Shows the contents of a file using hexadecimal notation

  • hexview: Allow to see and navigate through the contents os a file using hexadecimal notation

  • launcher: Creates a shortcut (launcher) to open directly a TAP file

  • ls: Show the content of a directory

  • lstap: Show the content of a .TAP file

  • mkdir: Create a directory

  • mktrd: Create a .TRD disk file

  • more: Show the content of a text file

  • mv: Move a file

  • partinfo: Show partition information of an storage device

  • playpt3: Play .PT3 music file

  • playsqt: Play .SQT music file

  • playstc: Play .STC music file

  • playtfm: Play .TFC music file

  • playwav: Play .WAV audio file

  • rm: Remove a file or a directory

  • snapload: Load snapshot file

  • speakcz: Reads text aloud using czech pronunciation

  • tapein: Mounts a .TAP file so that it can be used then from BASIC using LOAD sentence

  • tapeout: Mount a .TAP file so that it can be used then from BASIC using SAVE sentence

  • vdisk: Mount a .TRD disk file to use with the TR-DOS environment (once all the drives have been mounted, you can enter TR-DOS emulation by typing: RANDOMIZE USR 15616)

Some BASIC extended commands are:

  • GO TO to change the current drive and/or directory (e.g.: GO TO hd1 or GO TO hd0"games")

  • CAT to show the content of a drive

  • LOAD to lad a file from a drive (BASIC Program, SCREEN, CODE, etc. for example LOAD *"Screen.scr" SCREEN$)

  • SAVE to save data in a file (e.g: SAVE *"Program.bas")

  • ERASE to delete a file

In addition, esxdos also has an NMI manager, an application that loads when NMI (F5 or Caps Shift+Symbol Shift+5 on gomaDOS+) is pressed, and lets you browse the microSD card and load easily files (TAP, Z80, TRD, etc.). Pressing the "H" key invokes a help screen, which shows all the available keys.

The esxdos manager shows file and directory entries in the order stored in the internal FAT table, and not alphabetically. If you want to see them ordered, yo have to reorder the microSD card structure with a utility like Fat Sorter for Windows, FATsort for Linux and MacOS, YAFS, SDSorter or other.

ZXDOS+ Commands

As explained in the installation part, there are a series of commands that are exclusive to ZXDOS+:

  • back16m: Dumps to a FLASH.ZX1 file, in the root directory of the SD card, the contents of a 16 Meg SPI Flash memory. It must be run while using a "root" mode ROM. After finishing, it is necessary to execute the command .ls so that the cache is written to the card

  • backzx2 or backzxd: Creates a FLASH.ZX2 o FLASH.ZXD file, in the root directory of the SD card, with the contents of a 32 Meg SPI Flash memory. It must be run while using a "root" mode ROM.After finishing its execution, you must execute the command .ls to finish recording the cache on the microSD card. If not, the length of the file will be wrongly set to 0

  • corebios: To upddate simultaneously ZX Spectrum core and BIOS

  • dmaplayw: Plays .WAV file, which has to be 8 bits, unsigned y mand sampled at 15625 Hz

  • esprst: Resets the WiFi ESP8266(ESP-12) module

  • iwconfig: To configure the WiFi module

  • joyconf: Configuration and tests for keyboard and DB joysticks

  • keymap: Used to load a different keyboard map definition

  • loadpzx: To load a .PZX tape file

  • playmid: Plays .MID music files using the MIDI addon

  • playrmov: Plays radastanian format video files .RDM). This command does not work on 48K mode.

  • romsback: Dumps to a RomPack File named ROMS.ZX1, in the root directory of the microSD card, all ZX Spectrum core ROMS which are stored in SPI flash memory. It must be run while using a "root" mode ROM. Only works correctly on ZX-Uno and ZXDOS (do not use on ZXDOS+ or gomaDOS+).

  • romsupgr: Load from a RomPack filel named ROMS.ZX1, in the root directory of the microSD card, all ZX Spectrum core ROMS into SPI flash memory. It must be run while using a "root" mode ROM

  • upgr16m: Load the content of a FLASH.ZX1 file, in the root directory of the microSD card, to a 16 Meg SPI Flash memory. It must be run while using a "root" mode ROM

  • upgrzx2 or upgrzxd: Write the content of a FLASH.ZX2 o FLASH.ZXD file, in the root directory of the microSD card, to a 32 Meg SPI Flash memory. It must be run while using a "root" mode ROM.

  • zxuc: Utility to configure al options of BIOS, which also can be stored in the microSD in configuration files that can be loaded later

  • zxunocfg: Configuration utillity for certain features of ZX-Uno such as timings, contention, keyboard type, CPU speed, video type or vertical frequency

Wi-Fi

Each gomaDOS+, and some models of ZXDOS+, include inside an ESP-12 module with an ESP8266 Wi-Fi chip, that can be easily used with a ZX Spectrum core (e.g., EXP27 160820 core) which has synthesized an UART device, that allows communication with the module.

There are two "DOT" commands for configuring software access to the module. Then can be downloaded from GitHub official repository:

  • esprst, which restarts the module

  • iwconfig, to register the Wi-Fi network name (SSID) and password, keeping them in the file /sys/config/iw.cfg.

For example:

.iwconfig mywifi mypassword

Network tools for ZX-Uno pack

These are programs, developed by Nihirash and that are available to download from his web.

  • netman: Utility to configure the ESP Wi-Fi chip for other programs from Nihirash. Does not work in 48K mode

  • uGophy: Gopher client. Does not work in 48K mode

  • irc: Internet Relay Chat client. Works better at 14 Mhz

  • wget: Utility to download files with HTTP (does not work with HTTPS)

  • platoUNO: PLATO client. Also works better at 14 Mhz. For more information about PLATO, check IRATA.ONLINE web

FTP-Uno

FTP cliente developed by Yombo, available at GitHub.

Configuration steps:

  1. Edit FTP.CFG file with all the required information (SSID and password, FTP server, etc.)

  2. Copy FTP.CFG inside /SYS/CONFIG/ in microSD card

  3. Also copy ftpUno.tap to any place in the card

  4. Start up ZXDOS+ y load the tape file ftpUno.tap

UART Terminal

Program example included with ZXYLib C library, developed by yombo, that let’s you send directly typed characters using the UART, and also see the result. Available to download at this link.

Once the file UARTTERM.tap is in the card and loaded, you can type several specific commands for ESP8266 chip. For example:

  • AT. To check if ther is communication. OK would be the result if everything is fine

  • AT+RST. To restart the chip. Exactly what esprst command does

  • AT+GMR. To see some information, like firmware version, etc.

  • AT+CWMODE_CUR=1. Put temporarily the chip into Wi-Fi client mode, until next restart

  • AT+CWMODE_DEF=1. Put temporarily the chip into Wi-Fi client mode, and save it as default

  • AT+CWJAP_CUR="<WiFiNetwork>","<WiFiPassword>", where <WiFiNetwork> Wi-Fi ID of the network to connect to, and <WiFiPassword> the access password, connects temporarily to that network

  • AT+CWJAP_DEF="<WiFiNetwork>","<WiFiPassword>", connects to the network, and saves the settings as default in the chip flash memory

  • AT+CWAUTOCONN=1 sets the chip to connect automatically on boot to the default network (AT+CWAUTOCONN=0 disables it)

You can see all the available commands reading the official documentation.

Making RDM (RaDastan Movie) files

The PLAYRMOV "DOT" command plays radastanian format video files. To convert your own videos, you need makevideoradas, a utility that is available at SVN repository.

If using Windows, there is already an executable file (makevideoras.exe). For Linux or MacOS, you must have installed command line developer utilities in order to compile an executable

gcc makevideoradas.c -o makevideoradas

Apart from makevdideoradas, you need another two tools: ffmpeg and imagemagick. These can be installed with a package manager (apt, yum, pacmam, brew, etc.) or downloading the source code and compiling.

Now, the first step to convert our video (for example myvideo.mp4), is exporting the frames as 128x96 pixel BMP image files. We create a temporary file (img for this example), to store them.

mkdir img
(...)/ffmpeg -i myvideo.mp4 -vf "scale=128:96,fps=25" -start_number 0 img/output%05d.bmp

Now we transform the BMP files to 16 colours (v3) BMP files.

(...)/magick mogrify -colors 16 -format bmp -define bmp:format=bmp3 img/*.bmp

Finally, we assemble the .RDM file (in this example myvideo.rdm) and cleanup the temporary files and directory.

(...)/makevideoradas img/output
mv img/output.rdm ../myvideo.rdm
rm -rf img

There is more information about all this process at this thread in Zona de Pruebas forums.

Upgrade

BIOS

To update the BIOS, a file named FIRMWARE.ZX2 (for a ZXDOS+ with an FPGA LX16 board) or FIRMWARE.ZXD (for a ZXDOS+ with an FPGA LX25 board) must be obtained. The latest version of the firmware files can be downloaded from the official repository

Updating the firmware (BIOS) is delicate. It should not be done if it is not necessary. If doing so, ensure that the ZXDOS+ has uninterrupted power (such as a UPS or a laptop USB with battery).

Copy the file to the root of the MicroSD card, turn on and press F2 to enter BIOS, select Upgrade, choose "Upgrade BIOS for ZX", and then "SDfile". The system will read the file FIRMWARE…​ and notify when finished.

ROMs

The flash memory of a ZXDOS+ has reserved 64 slots, 16K each, to store ZX Spectrum ROM images. Thus, an original ZX Spectrum ROM (16K) will take one slot, a ZX Spectrum 128K ROM (32K) will be two slots, and a ZX Spectrum +2A ROM (64K) will need 4 slots.

You can add a new ROM pressing the key N at the BIOS ROMs screen, connecting an audio cable to the board, and playing a ROM audio tape. ROM audio tapes can be made from a .tap file built with the GenRom utility, available at ZX-Uno Code Repository.

To update at once all the ROMs installed for ZX Spectrum, a RomPack file named ROMS.ZX1 must be obtained, which must be copied to the MicroSD card. Boot the ZXDOS+ using a "rooted" ROM, and then just enter the command .romsupgr. This will burn all the ROMs, which will be available for use.

At this moment, romsupgr, only works correctly with RomPack files using a maximum of 35 slots.

Remember that if the ZXDOS+ is started by pressing the / key (on the numeric keyboard, Symbol Shift+V in gomaDOS+), then the default ROM of the ZX Spectrum core will be loaded in" root "mode.

To do the opposite process (save the ROMs in a RomPack file named ROMS.ZX1), you can use the` .romsback` command.

At this moment, romsback, only stores correctly the first 35 used slots.

RomPack files can be easily edited with the http: // guest: zxuno@svn.zxuno.comsvn/zxuno/software/ZX1RomPack/[ZX1RomPack] utility. Although it is a Windows program, it works perfectly, for example using Wine or similar programs, either on MacOS or Linux.

Cores

There are a number of available spaces where you can store cores (the number depends on the size of the SPI Flash of the ZXDOS+ model), the first space being reserved for the main ZX Spectrum (this does not prevent having more ZX Spectrum cores in other space as well of the first).

Official cores are available to download from GitHub repository.

To update or install a new core there are several possibilities.

The easiest way is to obtain the latest version of the file that defines the core, which will be a file that must be named COREnn.ZX2 (for a ZXDOS + with an FPGA LX16 board) or COREnn.ZXD (for a ZXDOS + with an LX25 board), where nn is the slot number where to install (for example CORE2.ZX2 or CORE2.ZXD for slot 2).

Starting with BIOS version 0.80, files are named using the COREXXy.ZXn convention where XX always is a two-digit number. Thus, an old CORE4.ZXD file has to be renamed as CORE04.ZXD. The y part of the name is ignored, so longer and more descriptive names can be used (such as CORE04_example.ZXD).

Copy the file to the root of the microSD card, turn on and press F2 to enter BIOS. Choose Upgrade, select the row corresponding to the chosen core number (for example, 2 - just after Spectrum), press enter and then " SD file ". The system will read the file COREnn .. and warn when it is updated, although first it will ask for the name (to be shown in the list to choose from at startup and in the BIOS list).

The ZX Spectrum core update is exactly the same as other cores, but instead of the name CORE1.ZX2 or CORE1.ZXD, it has to be a file named SPECTRUM.ZX2 or SPECTRUM.ZXD.

esxdos

To update esxdos to a new version, the distribution must be obtained from the official website.

Once downloaded and extracted, the contents of BIN and SYS directories have to be copied to the root of the card, merging the existing ones (to preserve the exclusive ZXDOS+ commands).

Copy ESXMMC.BIN (or ESXMMC.ROM, depending on version) to the root of the microSD card.

Start ZXDOS + with the card inserted and press F2 to access BIOS setup. Select the Upgrade menu and choose "Upgrade esxdos for ZX". In the dialog that appears choose "SD file" and, when it asks "Load from SD" answer "Yes" to the question "Are you sure?". The content of the file ESXDOS…​ will be read, written to the flash storage and you will be notified when it is updated.

Do a Hard-reset, or turn it off and on.

If everything has been done correctly, when you turn on the ZXDOS+ you will see how esxdos detects the card and loads the necessary components to work, showing the new version at the top.

Flash Memory

You also can update all the FPGA flash memory. At this moment, from the BIOS you can only use 16MiB image files. To use a 32MiB image, you must use esxdos UPGRZX2 or UPGRZXD command and a file named FLASH.ZX2 or FLASH.ZXD.

Copy the image file (16MiB) FLASH.ZXD to the root of the microSD card.

Turn on the ZXDOS+ and press the F2 key (Caps Shift+1 on gomaDOS+) during boot to access the BIOS setup. Select the menu Upgrade and then choos the option "Upgrade flash from SD". Press Enter, choose Yes, and press Enter again to start the Flash writing process.

Do a Hard-Reset or turn of and on again.

This process can’t be undone, and it will replace all the previously installed cores, the BIOS, the ZX Spectrum ROMs and their configuration with the data in the image file.

Other cores

ZX Spectrum 48K (Kyp)

Alternative core, whose objective is to be the most accurate implementation in timings, memory contention, etc.

Main features:

  • Only working on RGB (no VGA)

  • Specdrum

  • Turbosound (two AY chips) with mix selection ACB/ABC

  • DivMMC with esxdos 0.8.8

  • Kempston joystick in port 1

microSD card format

You need a microSD card with the first partition formatted as FAT16 or FAT32, and inside, the standard esxDOS 0.8.8 (see esxdos corresponding section for more info).

Keyboard

Special keys and buttons

While the core is running:

  • Esc (Caps Shift+Space on gomaDOS+): BREAK

  • F5 (Caps Shift+Symbol Shift+5 on gomaDOS+): NMI

  • F8 (Caps Shift+Symbol Shift+8 on gomaDOS+): Change Turbosound mixer configuration between ACB and ABC.

  • Ctrl+Alt+Backspace (Caps Shift+Symbol Shift+B on gomaDOS+) or F11 (Caps Shift+Symbol Shift+Q on gomaDOS+): Hard reset. Backspace is the delete key, located in the top-right portion of the keyboard, above Enter.

  • Ctrl+Alt+Supr (Caps Shift+Symbol Shift+N on gomaDOS+) or F12 (Caps Shift+Symbol Shift+W on gomaDOS+): Soft reset.

ZX Spectrum Next

ZX Spectrum Next is an FPGA based project, which wants to be the evolution of the Sinclair ZX Spectrum line of computers. It brings new features while keeping hardware and software compatibility with previous ZX Spectrum computers.

Specially thanks to avlixa, there exists a ZX Spectrum Next core synthesized for ZXDOS+.

The core, for the moment does not have any of these features:

  • Raspberry Pi

  • Internal beeper

  • EDGE expansion Connector

  • RTC module

  • Membrane keyboard

  • Flashing additional cores or upgrading the Next core from within the Next core

  • MIC out

  • HDMI Video

  • UART communication using the joystick port

The user manual is available to download at the official web page.

microSD card format

You have to use a microSD card with the first partition formatted as FAT16 or FAT32, and inside, the standard esxDOS distribution, matching ZXDOS+ BIOS version (see esxdos corresponding section for more info).

Download NextZXOS distribution from the official page.

Extract NextZXOS in the root of the microSD card, and then edit config.ini under c:/machines/next to include the line ps2=0 if it doesn’t exist or edit the existing line from 1 to 0. This effectively switches the dual PS/2 port to keyboard first as the Next Firmware (TBBLUE.FW) switches the primary input to mouse. Also edit the line intbeep=0 to disable the internal beeper (this last step is not necesary on gomaDOS+).

If it wasn’t already, install ZX Spectrum Next core into ZXDOS+.

Keyboard

Special keys and buttons

The following gomaDOS+ key combinations are in ZX keyboard mode. Please check the corresponding section for more information. You can also use PC XT keyboard mode combinations .

Take into account that Ctrl+Alt+backspace does not work with the ZX Spectrum Next core. You have to power cycle if you want to use another core. Also, there is no Reset or Drive button.

While the core is running:

  • F1 (Caps Shift+Symbol Shift+1 on gomaDOS+): Hard Reset

  • F2 (Caps Shift+Symbol Shift+2 on gomaDOS+): Scandoubler. Doubles the resolution. Should be of for SCART

  • F3 (Caps Shift+Symbol Shift+3 on gomaDOS+): Change vertical frequency between 50Hz and 60Hz

  • F4 (Caps Shift+Symbol Shift+4 on gomaDOS+): Soft Reset

  • F7 (Caps Shift+Symbol Shift+7 on gomaDOS+): Scanlines

  • F9 (Caps Shift+Symbol Shift+9 on gomaDOS+): NMI

  • F10 (Caps Shift+Symbol Shift+0 on gomaDOS+): divMMC NMI. Simulates Drive button. If used with Caps Shift it forces a rescan of drives and a reload of the boot screen under esxDOS

Basic Guide

On first boot, some help screens will show up. After pressing Space key, NextZXOS Startup Menu appears.

next

You can navigate the menu with the cursor keys, 5, 6, 7 and 8 keys, or a joystick (if configured as Kempston, MD or cursor). Enter or the joystick button chooses one element.

More…​ shows a second menu with more options.

next2

If you choose Browser, NextZXOS Browser will start, and then you can see the contents of the microSD card and load a file (TAP, NEX, DSK, SNA, SNX, Z80, Z8, etc.).

The browser shows file and directory entries in the order stored in the internal FAT table, and not alphabetically. If you want to see them ordered, yo have to reorder the microSD card structure with a utility like Fat Sorter for Windows, FATsort for Linux and MacOS, YAFS, SDSorter or other.

next3

At the time of writing, the ZX Spectrum Next core for ZXDOS+ does not support the use of a Raspberry Pi-based accelerator, so it is not possible to load TZX files.

It is not possible to load TRD files directly from the Browser (NextZXOS must be configured to load a "personality" with esxdos).

For more information, see the official user manual.

MSX

MSX1FPGA is a project to clone MSX1 in FPGA. The original development is by Fabio Belavenuto and is available at GitHub.

Some of its features are:

  • MSX1 at 50Hz or 60Hz

  • 128K Nextor (MSX-DOS2 evolution) ROM with SD driver

  • Reconfigurable keyboard map

  • Scanlines

  • Joystick support

microSD format

You have to use a microSD card with the first partition in FAT16 format with code 0x06 (16-bit FAT). You can also use a second FAT16 partition for MSX software, and leaving the first one only for the system startup.

You need to get:

Copy the contents of the SD directory in the root of the first partition of the microSD.

Copy NEXTOR.SYS to the same place.

Copy NEXTOR.ROM inside the MSX1FPGA directory.

Copy one MSX1 ROM (MSX_INT.rom, MSX_JP.rom or MSX_USA.rom) inside the MSX1FPGA directory, but renaming it to MSX1BIOS.ROM.

The file /MSX1FPGA/config.txt keeps the core configuration, using this format:

11SP01
||||||
|||||+-Scanlines: 1=Enabled, 0=Disabled
||||+--Turbo: 1=Initialize with turbo enabled
|||+---Colour System: N=NTSC, P=PAL
||+----Keymap: E=English, B=Brazilian, F=Francese, S=Spanish, J=Japanese
|+-----Scandoubler(VGA): 1=Enabled, 0=Disabled
+------Nextor: 1=Enabled, 0=Disabled

If it wasn’t already, install MSX core into ZXDOS+.

Keyboard

Special keys and buttons

The following gomaDOS+ key combinations are in MSX keyboard mode. Please check the corresponding section for more information. You can also use PC XT keyboard mode combinations .

While running the core:

  • Print Scr: Changes between VGA and RGB mode

  • Scroll Lock (Caps Shift+Symbol Shift+G on gomaDOS+): Enables or disables scanlines

  • Pause: Changes between 50Hz and 60Hz

  • F11 (Caps Shift+Symbol Shift+Q on gomaDOS+): Enables and disables turbo mode

  • Ctrl+Alt+Supr: Soft Reset

  • Ctrl+Alt+F12: Hard Reset

  • Ctrl+Alt+Backspace (Caps Shift+Symbol Shift+B on gomaDOS+, ZX Spectrum keyboard mode): Restarts the FPGA

  • Left ALT: MSX GRAPH

  • Right ALT: MSX CODE

  • Page Up: MSX SELECT

  • Start: MSX HOME (Shift+HOME: CLS)

  • End: MSX STOP

  • Ñ or Windows: MSX DEAD

In BASIC use CTRL+STOP (Ctrl+End) keys to stop the execution of a program.

To change the video mode between 50Hz and 60Hz (and thus play at correct speed PAL games), you can use also use DISPLAY.COM, which can be downloaded here.

Basic Guide

To go to BASIC from MSX-DOS you must execute BASIC command.

From within BASIC, you can load from a external tape (or other external audio device) with the commansds RUN"CAS:", BLOAD"CAS:",R or CLOAD.

Para acceder a MSX-DOS desde BASIC, ejecutar CALL SYSTEM.

To go to MSX-DOS from BASIC, execute CALL SYSTEM.

MSXCTRL

An exclusive utility of MSX1FPGA core, which lets you control all the core options that were previously available only by editing the configuration file or with some key combination.

When running MSXCTRL all the use parameters are shown:

MSXCTRL.COM - Utility to manipulate MSX1FPGA core.
HW ID = 06 - ZX-Uno Board
Version 1.3
Mem config = 82
Has HWDS = FALSE

Use:

MSXCTRL -h -i -r -b -[5|6] -m<0-2>
        -c<0-1> -d<0-1> -t<0-1>
        [-w<filename> | -l<filename>]
        -k<0-255> -e<0-255> -p<0-255>
        -s<0-255> -o<0-255> -a<0-255>

MSXCTRL -h show help for a parameter. For example, MSXCTRL -i show the current configuration, -t 1 sets turbo mode on, etc.

Other

There are different ways to load games depending on the kind of file: .CAS, .DSK o ROM (see this ZX-Uno forums thread for more info).

The spanish keymap officially available can be replaced with a better one. See here for more information.

Amstrad CPC

ZXDOS+ Amstrad CPC core is based on the FPGAmstrad project by Renaud Hélias.

Some of its features are:

  • VGA: 640x480 VGA centered at 60Hz

  • Disk selection: The first disk image detected is inserted on startup, and pressing a key makes a reset and loads the next one

microSD card format

You have to use a microSD card with the first partition in FAT32 format, with a maximum of 4GB in size, and 4096 bytes per cluster.

You also need the following ROM files (they are available at the original project Wiki) or from the GitHub repository: - OS6128.ROM - BASIC1-1.ROM - AMSDOS.ROM - MAXAM.ROM

It is also recommended to copy one or more disk image files (DSK) with the software that you want to run.

Copy all ROM and DSK files to the root directory of the FAT32 partition.

Keyboard

Special keys and buttons

The following gomaDOS+ key combinations are in Amstrad CPC keyboard mode. Please check the corresponding section for more information. You can also use PC XT keyboard mode combinations.

During core execution:

  • Page Up (Caps Shift+Symbol Shift+E on gomaDOS+): Reset the Amstrad computer and load the next DSK file alphabetically

  • On a PS/2 keyboard, only the left shift key works properly

Basic Guide

Use the CAT command to see the contents of the currently loaded DSK file.

cpc

Type the command RUN"<name> to load a program from disk

cpc2

Press Page Up key to reset and load the next DSK file.

Acorn Atom

Acorn Atom was a home computer made by Acorn Computers Ltd. The ZXDOS+ core (based on the ZX-Uno core made by Quest) is an adaptation of the AtomFPGA project. You can get more information at ZX-Uno Forums.

microSD card format

You have to use a microSD card with the first partition in FAT16 format.

Download the latest version of Atom Software Archive from GitHub.

You can set up the files in the microSD in two different ways:

  1. Extract all the contents of the archive to the root of the SD card. SYS directory contents are compatible with esxdos SYS directory, so you can merge both into one.

  2. Have less files an directorios in the root directory. Create a directory named ATOM in the SD root, and copy inside all the uncompressed archive content, except for the directory MANPAGES which must also be in root. Then, extract and the files from trick_ATOM_folder archive (available at ZX-Uno Forum), replacing any file with the same name. You will get a file and directory structure like this:

        /
        +-ATOM/
        |  +-AA/
        |  (...)
        |  +-AGD/
        |  | +-SHOW2
        |  | +-SHOW3
        |  (...)
        |  +-MENU
        |  (...)
        |  +-TUBE/
        |  | +-BOOT6502
        |  (..)
        |
        +-MANPAGES/
        |  +-CPM.MAN
        |  +-FLEX.MAN
        |  (...)
        |
        +-MENU

Keyboard

Special keys and buttons

The following gomaDOS+ key combinations are in Acorn Electron keyboard mode. Please check the corresponding section for more information. You can also use PC XT keyboard mode combinations.

While the core is running:

  • Shift+F10: Shows Atom Software Archive Menu

  • F10 (Caps Shift+Symbol Shift+0 on gomaDOS+): Soft Reset

  • F1 (Caps Shift+Symbol Shift+1 on gomaDOS+): Turbo mode 1Mhz

  • F2 (Caps Shift+Symbol Shift+2 on gomaDOS+): Turbo mode 2Mhz

  • F3 (Caps Shift+Symbol Shift+3 on gomaDOS+): Turbo mode 4Mhz

  • F4 (Caps Shift+Symbol Shift+4 on gomaDOS+): Turbo mode 8Mhz

The keyboard uses the following mapping:

keyboardAtom

Basic Guide

Sometimes, after starting up the core, a screen full of @ appears. Ejecting and inserting, or only inserting, the microSD card will fully start the system.

acorn

Once it’s running, press Shift+F10 to show a menu where you can choose and load Atom Software Archive programs from the card.

Commodore 64

The Commodore 64 (C64, CBM 64/CBM64, C=64,C-64, VIC-641​), was an 8-bit home computer manufactured by Commodore International.

The ZXDOS+ core is developed by Neuro.

microSD card format

You can use a microSD card with the first partition formatted as FAT16 or FAT32. Disk image (D64) and tape (TAP) files can be loaded from the SD card.

See the corresponding section for instructions of how to install the Commodore 64 core in ZXDOS+.

Keyboard

Special keys and buttons

The following gomaDOS+ key combinations are in Commodore 64 keyboard mode. Please check the corresponding section for more information. You can also use PC XT keyboard mode combinations.

While the core is running:

  • F9 Caps Shift+Symbol Shift+9 on gomaDOS+): Play/Pause a TAP file

  • F12 (Caps Shift+Symbol Shift+W on gomaDOS+): Shows options menu

  • Scroll Lock (Caps Shift+Symbol Shift+G on gomaDOS+): switches between VGA and RGB modes

  • Esc (Caps Shift+Space on gomaDOS+): RUN/STOP (Shift+RUN/STOP: Load from tape)

Basic Guide

After pressing F12 (Caps Shift+Symbol Shift+W on gomaDOS+), the option menu is shown.

c64

The menu offers the following options

  • Core reset

  • Enable o disable scanlines

  • Change colour palette (Colores Payaso MICOLOR)

  • Enable or disable PAL mode

  • Enable or disable tape loading sound (Sonido Carga Cinta)

  • Enable or disable audio filter (Filtro de Audio)

  • Load D64 file from SD (Carga D64)

  • Load TAP file (Carga Tap)

After a disk is inserted, normally, you can use LOAD "*",8,1 and press Enter to load the software inside. Once READY is shown on screen, type RUN and press Enter to execute it.

If there was more than one program in the disk, type LOAD "$" and press Enter. Then, type LIST, and press Enter, to see a list with the files in the disk. Now, to load one of them, type LOAD "<name>",8 (where <name> is the name of the file to load) and press Enter. Once READY is shown on screen, type RUN and press Enter to execute it. If this didn’t work try again with the command LOAD "<name>",8,1.

To load from tape, Select "Carga Tap" option from the menu. Then, browse the microSD and select the TAP file to load, press ENTER and close the options menu. After that, type LOAD and press Enter, or press Shift+Esc (Shift+RUN/STOP). Finally, when pressing F9 (Caps Shift+Symbol Shift+9 on gomaDOS+) the tape file will start playing (you can enable the tape loading sound selecting "Sonido Carga Cinta" in the options menu). Once the loading finishes, type RUN and press ENTER if needed.

For this core, the right joystick port is mapped to joystick port 1 and the left port is mapped to joystick port 2. This is the opposite of what happens in other cores.

Phoenix

Space-Themed shooter video game released in arcades by Amstar Electronics.

Some of the features of the ZXDOS+ core are:

  • Two different video modes: RGB/PAL60Hz and VGA 60Hz

  • Scanlines on VGA mode

  • Controls can be optionally rotated 90º

microSD format

This core does not use the microSD card.

Keyboard

Special keys and buttons

While the core is running:

  • Q and A or Left Cursor and Right Cursor (or a joystick): Movement control

  • Z or X Left Windows Key and Space (or joystick buttons 1 and 2): Fire 1 and 2, also to insert coin and Start

  • F2 (Caps Shift+Symbol Shift+B on gomaDOS+): Switches between VGA and RGB modes

  • - (numeric keyboard): Enable or disable scanlines

  • Tab (Caps Shift+Enter on gomaDOS+, PC XT keyboard mode): Enables or disables 90º rotation of the direction of controls

Basic Guide

By default, the core starts with normal controls, configured for vertical displays. If you have an horizontal display, the image will be rotated. To ease the control, and make it more natural and according to what you see, when typing Tab, up-down directions are switched with left-right. This is both for joystick and keyboard controls.

Pong

Pong was one of the earliest arcade video games manufactured by Atari.

Some features of this core are:

  • Two different video modes: RGB/PAL60Hz and VGA 60Hz

  • 7 game variants

  • Support for 2 or 4 players

  • Support for Joysticks, keyboard, mouse and rotary encoder controls (see here for more information)

  • Several colour modes

microSD format

This core does not use the microSD card.

Keyboard

Special keys and buttons

While the core is running:

  • Esc or joystick button 2 (or Caps Shift+Space on gomaDOS+, PC XT keyboard mode): Show or hide configuration menu

  • Ctrl+Alt+Backspace (Caps Shift+Symbol Shift+B on gomaDOS+, ZX Spectrum keyboard mode): Hard reset

  • Scroll Lock (Caps Shift+Symbol Shift+G on gomaDOS+, ZX Spectrum keyboard mode): switch between VGA and RGB mode

  • F3 o F12 (Caps Shift+Symbol Shift+3 or Caps Shift+Symbol Shift+W on gomaDOS+): Restart game

  • Number between 1 and 7: Change the game variant

  • Joystick 2 (right): Control right pad (Player 1).

  • Joystick 1 (left): Control left pad (Player 2)

  • Cursor up and Cursor down or O and K: Control right pad (Player 1 in 2 player mode and player 3 in 4 player mode)

  • Q and A: Control left pad (Player 2 in 2 player mode and player 4 in 4 player mode)

  • Z, M or joystick button 1: Manual serve

  • Cursor keys (Caps Shift+5, Caps Shift+6, Caps Shift+7 and Caps Shift+8 on gomaDOS+, PC XT keyboard mode) and Enter to use the menu

Basic Guide

Pressing Esc or joystick button 2 (Caps Shift+Space on gomaDOS+, PC XT keyboard mode) shows or hides the configuration menu. Cursor keys (Caps Shift+5, Caps Shift+6, Caps Shift+7 and Caps Shift+8 on gomaDOS+, PC XT keyboard mode) and Enter to select and choose menu options.

pong

The following options are available:

  • Serve mode

  • Ball Angle

  • Ball Speed

  • Paddle Size

  • Sound

  • Number of players

  • Speed mode

  • Angle mode

  • Joystick, mouse, etc. controls

  • Paddle accuracy

  • Colour mode

  • Exit

NES

Nintendo Entertainment System (also known as Nintendo NES or just NES) is the second home video game console produced by Nintendo.

The ZXDOS+ core has been made by Nihirash, based on the previous version for ZX-Uno by DistWave y Quest.

Some features of this core are:

  • HQ2X filters that "removes pixels" from the image

  • Scanlines simulation

  • Made with NES NTSC clock timings, so only USA ROMs run fine. PAL ROMs run faster than they sould

  • You can load ROMs from the SD

  • You need, at least, one gamepad or joystick connected, and it must have several buttons

  • Only VGA video mode is supported, with non-accurate timings, so it may not work with some displays

microSD card format

You need a microSD card with the first partition in FAT16 format to store ROM image files of the games to load. ROM files can be inside subdirectories.

See the corresponding section for instructions of how to install the NES core in ZXDOS+.

Keyboard

Special keys and buttons

While the core is running:

  • Esc or joystick button 2 (or Caps Shift+Space on gomaDOS+, PC XT keyboard mode): Show or hide configuration menu

  • Cursor keys (Caps Shift+5, Caps Shift+6, Caps Shift+7 and Caps Shift+8 on gomaDOS+, PC XT keyboard mode), and Enter to use the menu

  • Ctrl+Alt+Backspace (Caps Shift+Symbol Shift+B on gomaDOS+, ZX Spectrum keyboard mode): Hard reset

Basic Guide

Pressing Esc or joystick button 2 (Caps Shift+Space on gomaDOS+) shows or hides the configuration menu. To navigate the menu and activate or choose any option, use the cursor keys (Caps Shift+5, Caps Shift+6, Caps Shift+7 and Caps Shift+8 in gomaDOS+, PC XT keyboard mode) and Enter.

nes

The following options are available:

  • Reset NES

  • Scanlines

  • HQ2X Filter

  • P1 Select

  • P1 Start

  • Load ROM

  • Exit

ColecoVision

ColecoVision is Coleco Industries' home video-game console that was released in August 1982.

ZXDOS+ core is based on ZX-Uno version by Fabio Belavenuto.

Some features of this core are:

  • BIOS ROM is loaded from microSD card

  • Supports multicart ROM, also loaded from microSD

  • Only works with VGA

microSD card format

You need a microSD card with the first partition in FAT16 format to store ROM image files of the games to load and other needed files. These can be downloaded from the original project in GitHub.

See the corresponding section for instructions of how to install the ColecoVision core in ZXDOS+.

Keyboard

Special keys and buttons

While the core is running:

  • Cursor or Q, A, E, R or joystick 1: Directional controls for player 1

  • Z or joystick 1 main fire button: Fire Button 1 for player 1

  • U, J, O, P or joystick 2: Directional controls for player 2

  • M or joystick 2 main fire button: Fire button 1 for player 2

  • X or joystick 1 secondary fire button: Fire button 1 for player 1 and player 2

  • 0 to 9: Button 0 to 9 for player 1 and player 2

  • T: Button '*'

  • Y: Button '#'

  • 'Esc' (or Caps Shift+Space on gomaDOS+, PC XT keyboard mode): Soft Reset

Basic Guide

On startup, BIOS ROM is loaded from the card, and then the multicart ROM.

coleco

At multicart menu, use the directional controls to choose one ROM, and then fire button 1 to load. Pressing 'Esc' (Caps Shift+Space on gomaDOS+, PC XT keyboard mode) restarts the core and loads the ROM selection menu again.

Atari 2600

Atari 2600 is a home video game console originally branded as the Atari Video Computer System (Atari VCS).

ZXDOS+ core version is developed by avlixa.

Some of the features of the core are:

  • RGB and VGA support

  • Support for joysticks, keyboard, mouse and rotary encoder controls (see here for more information)

microSD card format

You need a microSD card with the first partition in FAT16 format to store ROM image files of the games to load.

See the corresponding section for instructions of how to install the Atari 2600 core in ZXDOS+.

Keyboard

For gomaDOS+, it is recommended to change the keyboard mode to Atari 800 (Caps Shift + Symbol Shift + U and then 4) o PC XT (Caps Shift + Symbol Shift + U and then 9).

Special keys and buttons

During the core execution:

  • W, A, S, D or joystick 1: Directional controls for player 1

  • F or joystick 1 fire button: Player 1 fire button

  • I, J, K, L or joystick 2: Directional controls for player 2

  • H or joystick 2 fire button: Player 2 fire button

  • Scroll Lock (Caps Shift+Symbol Shift+G on gomaDOS+): change between RGB and VGA video mode

  • Ctrl+Alt+Backspace (Caps Shift+Symbol Shift+B on gomaDOS+): Hard reset.

Basic Guide

Pressing Esc or joystick button 2 (Caps Shift+Space on gomaDOS+, Atari800 keyboard mode) shows or hides the configuration menu. Cursor keys (Caps Shift+5, Caps Shift+6, Caps Shift+7 and Caps Shift+8 on gomaDOS+, Atari800 keyboard mode) and Enter to select and choose menu options.

a2600

The following options are available:

  • Reset core

  • Scanlines

  • RGB Mode (PAL/NTSC)

  • Paddle Size

  • Sound

  • Color

  • Difficulty A

  • Difficulty B

  • Select

  • Start

  • Load ROM

  • Joystick

  • Paddle Accuracy

  • Exit

Videopac

Philips Videopac, also known as Magnavox Odyssey², Philips Videopac G7000 o Philips Odyssey², is a second generation home video game console that was released in 1978.

The ZXDOS+ core is make by avlixa, and is based on ZXDOS core by yomboprime.

Some features of the core are:

  • RGB and VGA support

  • Needs at least one joystick to be used

  • Different colour modes including monochrome

  • loadable VDC ROM charset for some custom roms

  • "The Voice" peripheral

microSD card format

You need a microSD card with the first partition in FAT16 format to store ROM image files to load.

See the corresponding section for instructions of how to install the Videopac core in ZXDOS+.

Keyboard

For gomaDOS+, it is recommended to change the keyboard mode to PC XT (Caps Shift + Symbol Shift + U and then 9).

Special keys and buttons

During the core execution:

  • F1 (Caps Shift+Symbol Shift+5 on gomaDOS+): Loads a test ROM

  • Scroll Lock (Caps Shift+Symbol Shift+G on gomaDOS+): change between RGB and VGA video mode

  • Ctrl+Alt+Backspace (Caps Shift+Symbol Shift+B on gomaDOS+): Hard reset

  • After loading a ROM, most games will prompt the user with "SELECT GAME". Press 0-9 on the keyboard or mapped controller button to play the game.

  • Esc or joystick button 2 (or Caps Shift+Espacio on gomaDOS+) to show or hide the options menu

  • W, A, S, D or cursor keys (Caps Shift+5, Caps Shift+6, Caps Shift+7 and Caps Shift+8 on gomaDOS+, with PC XT keyboard mode) and then Enter to choose and select menu options

Basic Guide

Usually, there is no on-screen display of the game options, so looking at the instruction manuals (for example following this link) may be helpful in selecting a game.

Note also that the system did not have a well defined player 1 or player 2 controller, and some games may alternate on a game-to-game basis. You may need to swap controllers to use the input or (for one player games) use the join joystick option of the menu

If, when browsing the ROM directory, you can’t see all of them, try to split the content into several subdirectories with less files per directory.

Pressing Esc or joystick button 2 (Caps Shift+Space on gomaDOS+, PC XT keyboard mode) shows or hides the configuration menu. Cursor keys (Caps Shift+5, Caps Shift+6, Caps Shift+7 and Caps Shift+8 on gomaDOS+, PC XT keyboard mode) and Enter to select and choose menu options.

videopac

The following options are available:

  • Reset core

  • Scanlines

  • Swap Joysticks

  • Join Joysticks

  • Load Cartridge ROM

  • Load VDC Font

  • Video mode: PAL/Videopac or NTSC/Odyssey2

  • Color Mode

  • The Voice

  • Exit

Change VDC ROM charset

You can, for some ROMs, load a CHR file including a custom font, instead of the original one which was included with the Intel 8244/8245 chip.

Those files can be made following the instructions and using the editor available at the project repository, following this link.

Other Hardware

Rotary Encoders

Pong and Atari 2600 cores support the use of quadrature rotary encoders as control devices. They can be connected to the joystick ports. Although the testing has been done with 600 ppr encoders, lower ppr encoders, like 400 or 300, should also work.

You can also use an Atari 2600 paddle driving controller. In this case the playing experience is bad, since they have few ppr and you must do several full rotations. When using them, it’s recommended to set the accuracy setting to 8, to have enough speed.

Connection

Both ZXDOS+ and gomaDOS+ have joystick pin 5 connected to positive VCC, used as main power, and pin 8 as GND. The rotary encoders to use must support voltage from 3,4v to 5v.

A rotary encoder has 5 wires: Earth Ground (not connected), Vcc (+), GND (0V`or `-), A and B.

A y B are connected to pins 1 and 2 for the first encoder, 3 and 4 for the seconde one. This way you can have up to 4 encoders connected using both joystick ports.

db9joy

This way, the connections should be:

  1. Line A encoder 1

  2. Line B encoder 1

  3. Line A encoder 2

  4. Line B encoder 2

  5. Vcc(+)

  6. Fire 1

  7. NC

  8. GND

  9. Fire 2

Pong Core Configuration

Follow these directions to choose the configuration:

  • For 1 or 2 endoders on joystick port 2 de joystick, select 1/2 Paddle in J2 option

  • For 2 encoders, one for each joystick port, select 2/4 Paddle in J1&J2 option. This is also valid to connect two Atari 2600 driving paddles

  • For 4 encoders, two for each joystick port, select 2/4 Paddle in J1&J2 option

  • For 1 or 2 encoders on joystick port 2 along with a mouse (in this case the encoders are for players 2 and 4), select Mouse PS/2 option

It is recommended to wait, and make the connection after selecting the chosen option, since the encoders interfere with the up/down directions of the joystick, blocking access to the menu. Another option is to add a on/off switch for the encoder that will disable the power.

Loading from tape

Some cores can load, as the original machines could, from a external audio device like a cassette player or something else simulating it.

Besides the card, you have to plug an appropriate audio cable to ZXDOS+ audio input. It must have a 3.5 mm stero jack on one side, and two mono outputs on the other side (one for each audio channel). The right audio mono is connected to the audio player (this is not necessary with a miniduino, since it already uses only the right audio channel when playing).

Cassette Player

The use is exactly the same as when using the original computers:

  1. Plug the audio cable

  2. Type on the computer or select the tape loading option. For examle, for ZX Spectrum 48K, typing J, then, twice, " (Symbol Shift + P on gomaDOS+) and then Enter to do the classic LOAD "" + Enter

  3. Start playing the tape (you may have to try several times adjusting the player volume)

Computer

Depending on the operating system (Windows, MacOS, Linux) there are several programs that can either play a tape file (TAP, TZX, PZX, etc.) and output the sound through a headphone output, or create an audio file (WAV, VOC, AU, etc.) that can be played using a music or audio program.

PlayTZX

This program for Windows, MacOS or Linux, can play directly a TZX tape file through the audio output of the computer.

You can download the binary file (for example), for Windows from World of Spectrum Classic and for Mac from this GitHub repository) or compile the source code as explained later.

  1. Plug the audio cable between the computer audio output and ZXDOS+ audio input (remember to use only the right mono channel to the PC, Mac, etc. output)

  2. Type on the computer or select the tape loading option. For examle, for ZX Spectrum 48K, typing J, then, twice, " (Symbol Shift + P on gomaDOS+) and then Enter to do the classic LOAD "" + Enter

  3. Start playing a tape file with this command (you may have to try several times adjusting the player volume)

./playtzx <tape file path>

If everything works fine, you will see at the shell the name of the different tape data blocks, while the sound is played and the ZXDOS+ core loads the program.

On Linux, the program uses as output the device /dev/dsp, this may require to load a module like snd_pcm_oss (on systems using ALSA).

Compile source code (MacOS or Linux)

To compile, the first thing is checking that the developer tools are installed on the system, including a C compiler (gcc, clang, command line developer tools for Mac, etc.) and GNU Autotools.

Download the source code from this repository), extract the contents if needed and access from a terminal to the directory and type the commands:

aclocal && autoconf && autoheader && automake --add-missing
./configure
make

If all goes well, a new file named tzxplay will be created, which you can copy anywhere and then use. You can delete the compilation directory.

Mobile phone, tablet, MP3 player, etc.

There are a very few apps (or none) that can directly play a tape file on a mobile device so, in many cases, the only option is to convert it to an audio file before playing it.

PlayZX is an App for Android which can play tape files through the headphone output.

The latest devices with headphone output are normally designed to work with impedances of only a few ohmis. This may, sometimes, not be enouth for the ZXDOS+ audio input.

In these cases, it’s recommended (if possible) to disable headphone volume limitations and/or use a headphone amplifier that can give a higher impedance.

Audio file conversion

These are some of the many programas that exist and which can export tape files to audio files.

Tapir is a GUI program for Windows (but which can also run with Wine on Linux or Mac) that can load TZX and TAP files and export to WAV audio

tape2wav from Fuse Utilities is a command line utility that can export from TZX PZX and TAP to WAV.

pzx2wav in PZX Tools is another command line utility which exports to WAV.

tsx2wav in TSXphpclass is made wiwth PHP and that can export from TSX to WAV.

Miniduino

Miniduino is a tape file audio player, based on a STM32F103C8T6 microcontroller with 64KB flash memory, and Maxduino firmware preinstalled.

Maxduino plays, in a very similar way to how cassette tape players worked, digital tape files in format as like TAP and TZX (ZX Spectrum), O (ZX80), P (ZX81), CDT (Amstrad CPC), CAS(MSX) TSX (MSX, Acorn, etc). It is also possible to play AY music files as if they were tapes, in order to load the from SpecAY in a ZX Spectrum.

Ports and buttons

MiniduinoBack

MiniduinoFront

1

Power

2

Audio output

3

Control button

4

Motor control

5

microSD card slot

6

Screen

Configuration

A microSD is needed in order to store the tape files to play. Fast cards (Class 10 or greater) aren’t recommended because there can be problems while reading the data. High capacity (SDXC or greater) cards aren’t recommended too.

The card must have the first partition formatted as FAT16 or FAT32.

Besides the card, you have to plug an appropriate audio cable to ZXDOS+ audio input. It must have a 3.5 mm stero jack on one side, and two mono output on the other side (one for each audio channel). The right audio mono is connected to the Miniduino.

If you hava a device that can use motor control, you can also use a cable with a 2.6 mm jack.

Copy the tape files (TAP, TZX, O, P, CAS, TSX, etc) to the first partition of the microSD card. They can be organized using folders or directories.

The player shows file and directory entries in the order stored in the internal FAT table, and not alphabetically. If you want to see them ordered, yo have to reorder the microSD card structure with a utility like Fat Sorter for Windows, FATsort for Linux and MacOS, YAFS, SDSorter or other.

Use

Once the microSD card with the data files is inserted, it’s turned on plugging in the included USB power cable.

MiniduinoLogo

Pressing down the control button shows the options menu which can set the following:

  • Baud Rate: Configures turbo speed baud rates when playing 4B blocks in MSX files (CAS and TSX)

  • Motor Ctrl: Enable this option when a control cable is connected to a proper device (Amstrad, CPC, MSX, etc.)

  • Converter (TSXCzxpUEFWS): Enables turbo loading .CAS and .TSX files, changes signal for Spectrum and Amstrad CPC files and/or change parity when playing Acorn Electron and BBC Micro .UEF files

  • (Skip BLK)): To disable (Skip ON) or enable automatic pause when 2A blocks are found

When not inside the options menu, the control button is used as a four directional control joystick, which has two different behaviours depending whether the player is stopped or paused.

MiniduinoVersion

When the player is stopped (file and directories browser):

  • Up and Down move through the current files and directories list

  • Left (Stop) goes one level up in the directory tree

  • Right (Play/Pause) enters into a directory or, if the selection is a file, tries to play it

Once a file is being played, stop playing it with the left button (Stop) or pause using the right button (Play/Pause).

MiniduinoPlay

When in pause (tape block browser:

  • Up and Down mov through the tape block files alreadey played (useful for multiload titles, to load a previous level block, for example)

  • Left (Stop) cancels the player and goes back to file and directory browser mode

  • Right (Play/Pause) continues playing from the selected block

  • Press down the control butto to enable or disable turbo mode for MSX

Maxduino firmware upgrade

Maxduino firmwar is periodically updated and improved. You can track the changes and improvements either at the forums or at the GitHub project page. To take advantage of this improvements, the Miniduino flash image must be flased with the updated firmware version.

Environment setup

Firmware flashing is done from a computer (Windows, Mac, Linux) with Arduino IDE installed.

You have to install SDFat (1.1.4) software library selecting the menu option Program → include library → manage libraries

Minidiuno microcontroller support must also be added. This is done in two steps:

First, adding ARXM Cortex M3 support from menu Tools → borad → board manager, and installing "Arduino SAM boards (Cortex-M3)"

Then, you have to add STM32 microcontroller support, downloading the file available at this link.

Extract the contents to the current user directory in

...Arduino/hardware/Arduino_STM32

If on Windows, install the USB device controller, running (with elevated privileges:

 ...\drivers\win\install_drivers.bat

On Linux, install with root privileeges the necessary udev rules:

...tools/linux/install.sh

On MacOS, if Miniduino does not appear as USB device in Arduino ID when plugged, it may be necessary to install libusb.

Finaly, when on Mac or Linux, the file maple_upload inside Arduino_STM32 has to be changed with a text editor. Those lines do not work:

if [ $# -eq 5 ]; then
    dfuse_addr="--dfuse-address $5"
else
    dfuse_addr=""
fi

And have to be changed into this:

dfuse_addr=""
Upgrade

Once you have the environemnt ready, download the software from the official repository in GitHub

Minduino player with STM32 microcontroller is only supported from 1.65 and up

Load the project file with Arduino IDE (for example MaxDuino_v1.66.ino).

Check in the file userSTM32Config.h that all logo entries are commented except for Miniduino and, if not, change them.

...
//#define tanque4
//#define tanque1
//#define dostanques
//#define cablemax
//#define sony
#define miniduino
...

Connect the Miniduino device to the computer using the USB cable, and find the assigned port, normally with a name like "Maple Mini" (for example: COM5 Maple Mini)

Set the following options in menu "":

Board: Generic STM32F104C Series
Variant: STM32F104C8 (20k RAM, 64k Flash)
Upload Method: STM32duino bootloader
CPU Speed: 72Mhz (Normal)
Optimize: Smallest (default)
Port: <Previously identified port>

Finall, clic on the firmware load button and wait for a few seconds while the project is compiled and loaded into the device.

If everything has been done correctly the Miniduino will restart and show on the screen the new firmware version.

Troubleshooting

Firmware images management

There are several tools with you can use to make and/or edit the contents of ZX1, ZX2, ZXD files.

zx123_tool

This is a tool to analyze, extract and inject data in SPI flash image files for ZX-Uno, ZXDOS and similar devices.

You need to have Python 3 to use it. Depending on the operating system you may have to install it.

Having Python 3, you only need to download the latest version of the tool from the official repository, following this link.

Once extracted, you have to run from a shell the main script using Python 3. This may change depending on the operating system.

For example, on Windows, it’s usually:

py -3 zx123_tool.py

With other operating systems it normally is like:

python3 ./zx123_tool.py

You also need a SPI flash image file. This can be obtained from within the Spectrum core in "root" mode, with one of the commands back16m, backzx2 or backzxd. Once you have obtained the exteacted file from the microSD, you can "clean" it leaving only the Spectrum core and the first Spectrum ROM with a command like this:

... zx123_tool.py -i FLASH.ZXD -w -o FLASHempty.ZXD

Where FLASH.ZXD is the path to the original file and FLASHempty.ZXD is the path to the new "clean" file.

List the contents of an image

To see the contents of an image file named FLASH.ZXD (installed cores and some configuration info), you can use the command

... zx123_tool.py -i FLASH.ZXD -l

To show the contents of the same file, including ZX Spectrun ROMs info:

... zx123_tool.py -i FLASH.ZXD -l -r

Change the BIOS of an image

To change the BIOS inside a file named FLASH.ZXD, using the BIOS file named FIRMWARE.ZXD

...zx123_tool.py -i FLASH.ZXD -a BIOS,FIRMWARE.ZXD

You can, at the same time, modify some of the default parameters. For example, with the options; -m for video mode: 0 (PAL), 1 (NTSC) or 2 (VGA), -k for the keyboard layout: 0 (Auto), 1 (ES), 2 (EN) or 3 (Spectrum).

This way to change the BIOS of a file named FLASH.ZXD, using the BIOS file FIRMWARE.ZXD, and also set the video mode to VGA and the keyboard layout to Spectrum (for gomaDOS`+):

...zx123_tool.py -i FLASH.ZXD -a BIOS,FIRMWARE.ZXD -m 2 -k 3

There are also options to set the BIOS boot delay time, the default core or the default Spectrum ROM. See the documentation for more info.

Add a Spectrum ROM to an image

To add a Spectrum ROM file named 48.rom, with the name Spec48 and using the slot number 5, you can use a command like:

...zx123_tool.py -i FLASH.ZXD -a ROM,5,xdnlh17,Spec48,48.rom

See the documentation for all the possible options when adding a Spectrum ROM.

Amongst the information you give when adding a ROM, there are some flags used to tell wich hardware options, etc, you want to have enabled or disabled when loading the ROM, as shown in this table:

i Keyboard issue 3 enabled (instead of issue 2)

c

Disable memory contention

d

Enable DivMMC

n

Enable NMI DivMMC (esxdos Menu)

p

Use Pentagon Timings

t

Use 128K timings

s

Disable DivMMC and ZXMMC ports

m

Enable Timex Horizontal MMU

h

Disable ROM high bit (1FFD bit 2)

l

Disable ROM low bit (7FFD bit 4)

1

Disable 1FFD port (+2A/3 paging)

7

Disable 7FFD port (128K paging)

2

Disable TurboSound (secondary AY chip)

a

Disable AY chip

r

Disable Radastanian mode

x

Disable Timex mode

u

Disable ULAPlus

Install a Core to an image

For example, to install a core in space 3, from a file named NEXT.ZXD, with the name Spectrum Next, use a command like this:

...zx123_tool.py -i FLASH.ZXD -a 'CORE,3,Spectrum Next,NEXT.ZXD'

If you want also to set the core as the default, use a command like:

...zx123_tool.py -i FLASH.ZXD -a 'CORE,3,Spectrum Next,NEXT.ZXD' -c 3

Change esxdos ROM of an image

Just like the BIOS firmware, you can install a ROM esxdos file, with a command like this:

...zx123_tool.py -i FLASH.ZXD -a esxdos,ESXMMC.BIN

Mix several actions in one line

Please do note that you can add several actions in one command line. For example, to "clean" an image file named FLASH.ZXD, creating a new one named FLASHnew.ZXD, installing the BIOS from the file FIRMWARE.ZXD, set up video mode to VGA, the keyboard in Spectrum mode, add a Spectrum ROM file 48.rom, with the name Spec48 while ussing slot number 5, install a core at space 3, from a file named NEXT.ZXD, with the name Spectrum Next, as default core:

... zx123_tool.py -i FLASH.ZXD -w -o FLASHnew.ZXD -a BIOS,FIRMWARE.ZXD -m 2 -k 3 -a ROM,5,xdnlh17,Spec48,48.rom -a CORE,3,SpecNext,NEXT.ZXD -c 3

Firmware recovery

Sometimes (e.g. when installing an experimental core or when upgrading the ZX Spectrum Next or the BIOS) it may happen that the ZXDOS+ stops booting. The board LEDs are on, but there is no display, and it doesn’t do anything when trying the different key combinations to access BIOS setup, etc.

When this happens, there are several recovery methods that let you install again the firmware.

JTAG cable connections

Later, in some of the recovery steps, when talking about jump wires or USB-Blaster connections to ZXDOS, you can use these images as reference.

jtag jtaggomados

Take note, that on some models, the JTAG pins are at the under the board.

jtag02 jtag03 jtag04

DO NOT connect the 3V line

When using USB-Blaster, a gomaDOS+ is ready to connect directly the 2x5 connector. For a ZXDOS+, it may be necessary to prepare the cables, looking at the previous images.

Recovery using a Raspberry Pi

Hardware required:

  • Raspberry Pi (with SD card, keyboard, display, power supply, etc.) and with internet connection

  • 5 jump wires (if possible, female on both sides) or, instead a USB-Blaster cable

  • One hex key with the right socket size for ZXDOS+ cover screws, or appropriate screwdriver to open a gomaDOS+ (this isn’t necessary if using a USB-Blaster)

  • microSD for ZXDOS+/gomaDOS+ with the first partition formatted as FAT16 or FAT32

  • Keyboard (not needed for gomaDOS+) and display for ZXDOS+

Software required:

Instruction Steps:

  1. Install Raspberry Pi OS (formely known as Raspbian) to the Raspberry Pi SD card (using the official download, NOOBS, PINN, etc.)

  2. Install Open OCD:

sudo apt-get update
sudo apt-get install git autoconf libtool make pkg-config
sudo apt-get install libusb-1.0-0 libusb-1.0-0-dev telnet
sudo apt-get install libusb-dev libftdi-dev
git clone git://git.code.sf.net/p/openocd/code openocd-code
cd openocd-code/
./bootstrap
./configure --enable-usb_blaster --enable-sysfsgpio --enable-bcm2835gpio
make
sudo make install
cd ..
rm -rf ./openocd-code
  1. Connect USB-Blaster or jump wires if using GPIO. In this case, open the ZXDOS+ or gomaDOS+ case and, as explained before connect the FPGA JTAG lines (TMS, TDI, TDO, TCK y GND), using the wires, to the Raspberry Pi GPIO pins.

Is using a GPIO connection, take note of the chosen pins, making sure that GND is connected with GND.

gpio

In this example, the 31, 33, 35, 37 and 39 pins will be used (corresponding to GPIO #6, GPIO #13, GPIO #19, GPIO #26 and GND), like this:

ZXDOS+ JTAG GPIO Raspberry Pi Pin

TMS

GPIO#6

31

TDI

GPIO#13

33

TDO

GPIO#19

35

TCK

GPIO#26

37

GND

GND

39

  1. Copy to the Raspberry Pi the file named recovery.zxd.bit previously downloaded from the official repository. For our example, it will be at /home/pi/zxdosplus/unbrick/

  2. If using GPIO, make a copy of Open OCD configuration file, to the same directory where recovery.zxd.bit is.

cp /usr/local/share/openocd/scripts/interface/raspberrypi2-native.cfg /home/pi/zxdosplus/unbrick/
  1. For GPIO connection, edit raspberrypi2-native.cfg copy, updating bcm2835gpio_jtag_nums (uncommenting, if necessary), with your JTAG and GPIO connection numbers, at the line bcm2835gpio_jtag_nums. For our example:

# Header pin numbers: 37 31 33 35
bcm2835gpio_jtag_nums 26 6 13 19
  1. Comment, if it wasnt’t already, the line bcm2835gpio_swd_nums (not necessary for USB-Blaster connection):

#bcm2835gpio_swd_nums 11 25
  1. Add, to the end of the file, the line adapter speed 250 (again, not necessary for USB-Blaster):

adapter speed 250
  1. Turn on the ZXDOS+ or gomaDOS+.

  2. Make sure that, on the Raspberry Pi, we are in the directory where recovery.zxd.bit is, and execute the command that loads the BIOS on recovery mode, using the path to the previously edited raspberrypi2-native.cfg.

For GPIO connection:

cd /home/pi/zxdosplus/unbrick
sudo openocd -f /home/pi/zxdosplus/unbrick/raspberrypi2-native.cfg -f /usr/local/share/openocd/scripts/cpld/xilinx-xc6s.cfg -c "init; xc6s_program xc6s.tap; pld load 0 recovery.zxd.bit ; exit"

For USB-Blaster connection:

sudo openocd -f /usr/local/share/openocd/scripts/interface/altera-usb-blaster.cfg  -f /usr/local/share/openocd/scripts/cpld/xilinx-xc6s.cfg -c "init; xc6s_program xc6s.tap; pld load 0 recovery.zxd.bit ; exit"
  1. If all goes well, we will see that the FPGA LED change their state and the BIOS is shown on the display.

If there is no image on the display, press Scroll Lock (Caps Shift+Symbol Shift+G on gomaDOS+): to switch between RGB and VGA modes, just in case the recovery BIOS did start in the wrong mode for our setup.

recovery

  1. Insert in the ZXDOS+ the microSD card formatted as FAT16 o FAT32, and with the FLASH.ZXD file downloaded previously.

  2. If using a USB-Blaster connection, unplug the connector.

  1. Select the option Upgrade Flash from SD. Press Enter, choose Yes, and press Enter again to start the Flash writing process.

recovery2

This process can’t be undone, and it will replace all the previously installed cores, the BIOS, the ZX Spectrum ROMs and their configuration with the data in the image file.

Ususally, the recovery image is set to use a PS/2 keyboard so, for a gomaDOS+, some key combinations, like Caps Shift + 5, etc may not work. In this case, you have to change the keyboard mode to PC XT(Caps Shift + Symbol Shift + U and then 9), to make them work temporarily.

  1. After some minutes, the process will end, and, after turning the ZXDOS+ off and on, it should start fine.

If no image is shown, press again Scroll Lock (Caps Shift+Symbol Shift+G on gomaDOS+): to switch between RGB and VGA modes. In this case, you should have to enter the BIOS and change the right advanced setting that matches your display.

For a gomaDOS+, since the recovery image uses a PS/2 configuration as default, follow this steps to set up the BIOS correctly:

  1. If you see no image, switch between composite and VGA mode (Caps Shift+Symbol Shift+G)

  2. Change to PC XT keyboard mode (Caps Shift + Symbol Shift + U and then 9)

  3. Reboot gomaDOS+ without losing the temporary keyboard mode (Caps Shift + Symbol Shift + B)

  4. Quickly, press Caps Shift + 1

  5. Again, if there’s no image, switch between composite and VGA mode (Caps Shift+Symbol Shift+G)

  6. Navigate through BIOS and turno on these options:

    • AdvancedKeyboard Layout: Spectrum

    • AdvancedVideo: VGA (only if there was no image)

  7. Save changes:

    • ExitSave changes and exit

  8. Completely turn off gomaDOS` and turn it on again

Recovery using MacOS and USB-Blaster cable

Hardware required:

Software required:

Instruction Steps:

  1. Prepare UrJTAG instal:

brew install libftdi libusb pkg-config
git clone https://github.com/C-Elegans/urjtag.git
cd urjtag
  1. Copy the extra data folder for UrJTAG, into urjtag data folder.

  2. Start compiling:

./configure --with-libftdi --with-libusb --with-ftd2xx --with-inpout32 --enable-python=no
make -j4
sudo make install
  1. Copy FLASH.ZXD file to the root of the ZXDOS+ microSD card.

  2. Connect USB-Blaster cable to ZXDOS+ and the Mac

  3. Turn on the ZXDOS+ or gomaDOS+.

  4. Make sure that, we are in the directory where recovery.zxd.bit is, and execute jtag command.

  1. A new shell appears. Now type the commands:

cable usbblaster
detect
pld load recovery.zxd.bit

Make sure, when using detect, that the device is shown as detected. You may need to execute detect several times until it appears.

recovery mac 1

  1. If all goes well, we will see that the FPGA LED change their state and the BIOS is shown on the display.

If there is no image on the display, press Scroll Lock (Caps Shift+Symbol Shift+G on gomaDOS+): to switch between RGB and VGA modes, just in case the recovery BIOS did start in the wrong mode for our setup.

recovery

  1. Insert in the ZXDOS+ the microSD card formatted as FAT16 o FAT32, and with the FLASH.ZXD file downloaded previously.

  2. Unplug the USB-Blaster.

  3. Select the option Upgrade Flash from SD. Press Enter, choose Yes, and press Enter again to start the Flash writing process.

recovery2

This process can’t be undone, and it will replace all the previously installed cores, the BIOS, the ZX Spectrum ROMs and their configuration with the data in the image file.

Ususally, the recovery image is set to use a PS/2 keyboard so, for a gomaDOS+, some key combinations, like Caps Shift + 5, etc may not work. In this case, you have to change the keyboard mode to PC XT(Caps Shift + Symbol Shift + U and then 9), to make them work temporarily.

  1. After some minutes, the process will end, and, after turning the ZXDOS+ off and on, it should start fine.

If no image is shown, press again Scroll Lock (Caps Shift+Symbol Shift+G on gomaDOS+): to switch between RGB and VGA modes. In this case, you should have to enter the BIOS and change the right advanced setting that matches your display.

For a gomaDOS+, since the recovery image uses a PS/2 configuration as default, follow this steps to set up the BIOS correctly:

  1. If you see no image, switch between composite and VGA mode (Caps Shift+Symbol Shift+G)

  2. Change to PC XT keyboard mode (Caps Shift + Symbol Shift + U and then 9)

  3. Reboot gomaDOS+ without losing the temporary keyboard mode (Caps Shift + Symbol Shift + B)

  4. Quickly, press Caps Shift + 1

  5. Again, if there’s no image, switch between composite and VGA mode (Caps Shift+Symbol Shift+G)

  6. Navigate through BIOS and turno on these options:

    • AdvancedKeyboard Layout: Spectrum

    • AdvancedVideo: VGA (only if there was no image)

  7. Save changes:

    • ExitSave changes and exit

  8. Completely turn off gomaDOS` and turn it on again

When using Linux with urjtag, the process should be quite similar, although the dependencies (libftdi libusb pkg-config) would have to be installed with the appropiate package manager (apt, yum, pacman, etc.)

Recovery using Windows and USB-Blaster cable

Hardware required:

Software required:

Instruction Steps:

  1. Extract the ZIP file with drivers (obtained from the ZX-Uno forums)

  2. Plug USB-Blaster to the Windows PC and install the driver choosing to select manually installation files and using the folder drivers obtained after extracting the ZIP

  3. Extract UrJTAG Windows software, obtained at the official repository

  4. Copy FLASH.ZXD file to the root of the ZXDOS+ microSD card.

  5. Connect USB-Blaster cable to ZXDOS+ and the PC

  6. Make sure that you are in the directory where recovery.zxd.bit is, and execute jtag command.

  7. Turn on the ZXDOS+ or gomaDOS+.

  8. A new shell appears. Now type the commands:

cable usbblaster
detect
pld load recovery.zxd.bit
  1. If all goes well, we will see that the FPGA LED change their state and the BIOS is shown on the display.

If there is no image on the display, press Scroll Lock (Caps Shift+Symbol Shift+G on gomaDOS+): to switch between RGB and VGA modes, just in case the recovery BIOS did start in the wrong mode for our setup.

recovery

  1. Insert in the ZXDOS+ the microSD card formatted as FAT16 o FAT32, and with the FLASH.ZXD file downloaded previously.

  2. Unplug the USB-Blaster.

  3. Select the option Upgrade Flash from SD. Press Enter, choose Yes, and press Enter again to start the Flash writing process.

recovery2

This process can’t be undone, and it will replace all the previously installed cores, the BIOS, the ZX Spectrum ROMs and their configuration with the data in the image file.

Ususally, the recovery image is set to use a PS/2 keyboard so, for a gomaDOS+, some key combinations, like Caps Shift + 5, etc may not work. In this case, you have to change the keyboard mode to PC XT(Caps Shift + Symbol Shift + U and then 9), to make them work temporarily.

  1. After some minutes, the process will end, and, after turning the ZXDOS+ off and on, it should start fine.

If no image is shown, press again Scroll Lock (Caps Shift+Symbol Shift+G on gomaDOS+): to switch between RGB and VGA modes. In this case, you should have to enter the BIOS and change the right advanced setting that matches your display.

For a gomaDOS+, since the recovery image uses a PS/2 configuration as default, follow this steps to set up the BIOS correctly:

  1. If you see no image, switch between composite and VGA mode (Caps Shift+Symbol Shift+G)

  2. Change to PC XT keyboard mode (Caps Shift + Symbol Shift + U and then 9)

  3. Reboot gomaDOS+ without losing the temporary keyboard mode (Caps Shift + Symbol Shift + B)

  4. Quickly, press Caps Shift + 1

  5. Again, if there’s no image, switch between composite and VGA mode (Caps Shift+Symbol Shift+G)

  6. Navigate through BIOS and turno on these options:

    • AdvancedKeyboard Layout: Spectrum

    • AdvancedVideo: VGA (only if there was no image)

  7. Save changes:

    • ExitSave changes and exit

  8. Completely turn off gomaDOS` and turn it on again

References