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+
gomaDOS+
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
|
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.
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 |
|
Amstrad CPC |
|
MSX |
|
Commodore 64 |
|
Atari 800XL |
|
BBC Micro |
|
Acorn Electron |
|
Apple (I and II) |
|
Commodore VIC 20 |
|
PC XT |
|
Oric Atmos |
|
SAM Coupé |
|
Jupiter ACE |
|
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 |
|
|
|
|
|
|
|
|
|
|
Q |
W |
E |
R |
T |
Y |
U |
I |
O |
P |
|
|
|
|||||||
A |
S |
D |
F |
G |
H |
J |
K |
L |
Enter |
|
|||||||||
CShift |
Z |
X |
C |
V |
B |
N |
M |
SShift |
Space |
|
|
|
|
Where:
-
ScrLk
:Scroll Lock
changes betweein composite and VGA video mode (on Next Core, you must useCaps 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 |
|
2 |
All |
|
3 |
All |
|
4 |
All |
|
5 |
All |
|
6 |
All |
|
7 |
All |
|
8 |
All |
|
9 |
All |
|
0 |
All |
|
Q |
All |
|
W |
All |
|
S |
C64 |
|
E |
Acorn/CPC |
|
R |
Acorn |
|
U |
All |
|
G |
ZX/MSX/C64 |
|
X |
All |
|
C |
PC |
|
V |
All |
|
B |
ZX |
|
N |
ZX |
|
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
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
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
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
In the Boot screen you can choose which one of the installed cores is loaded by default at startup.
Advanced
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
andM
-
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
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:
-
Remove all partitions from the card
-
Create a new extended partition, using the desired space for IDEDOS
-
Create a primary partition, 4GB in size, and format as FAT16
-
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:
-
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
-
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
-
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:
-
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
-
Format both FAT partitions (requires root privileges)
sudo mkfs.fat -F 16 /dev/sdc2
sudo mkfs.fat -F 32 /dev/sdc3
-
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
English
Spectrum
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
orCursor down
(Caps Shift+2
on gomaDOS+) or, if a joystick is connected, pressingdown
: 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
to9
: 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, aboveEnter
. -
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 |
---|---|
|
Enable DivMMC |
|
Enable NMI DivMMC (esxdos Menu) |
|
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 |
---|---|
|
Enable DivMMC |
|
Disable ROM high bit (1FFD bit 2) |
|
Disable ROM low bit (7FFD bit 4) |
|
Disable Timex mode |
POKEs
When using a ROM with POKE option enabled:
-
Once the game is loaded, after pressing NMI (
F5
orCaps Shift+Symbol Shift+5
on gomaDOS+) a field will appear in the upper left corner of the screen -
Enter the POKE address and press
Enter
-
Enter the POKE value and press
Enter
again -
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).
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
orGO 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 exampleLOAD *"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.
ZXDOS+ Commands
As explained in the installation part, there are a series of commands that are exclusive to ZXDOS+:
-
back16m
: Dumps to aFLASH.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
orbackzxd
: Creates aFLASH.ZX2
oFLASH.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 namedROMS.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 namedROMS.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 aFLASH.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
orupgrzxd
: Write the content of aFLASH.ZX2
oFLASH.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:
-
Edit
FTP.CFG
file with all the required information (SSID and password, FTP server, etc.) -
Copy
FTP.CFG
inside/SYS/CONFIG/
in microSD card -
Also copy
ftpUno.tap
to any place in the card -
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 whatesprst
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, |
Remember that if the ZXDOS+ is started by pressing the |
To do the opposite process (save the ROMs in a RomPack file named ROMS.ZX1
), you can use the` .romsback` command.
At this moment, |
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 |
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 |
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+) orF11
(Caps Shift+Symbol Shift+Q
on gomaDOS+): Hard reset. Backspace is the delete key, located in the top-right portion of the keyboard, aboveEnter
. -
Ctrl+Alt+Supr
(Caps Shift+Symbol Shift+N
on gomaDOS+) orF12
(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.
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.
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.).
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:
-
Basic SD project files SD from GitHub
-
Nextor driver (
NEXTOR.SYS
) and ROM (NEXTOR.ROM
) also from GitHub -
MSX1 ROM (
MSX_INT.rom
,MSX_JP.rom
orMSX_USA.rom
) at the same repository
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 -
Ñ
orWindows
: MSX DEAD
In BASIC use |
To change the video mode between 50Hz and 60Hz (and thus play at correct speed PAL games), you can use also use |
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 nextDSK
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.
Type the command RUN"<name>
to load a program from disk
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:
-
Extract all the contents of the archive to the root of the SD card.
SYS
directory contents are compatible with esxdosSYS
directory, so you can merge both into one. -
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 directoryMANPAGES
which must also be in root. Then, extract and the files fromtrick_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:
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.
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.
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
andA
orLeft Cursor
andRight Cursor
(or a joystick): Movement control -
Z
orX
Left Windows Key
andSpace
(or joystick buttons 1 and 2): Fire 1 and 2, also to insert coin andStart
-
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 (orCaps 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
oF12
(Caps Shift+Symbol Shift+3
orCaps Shift+Symbol Shift+W
on gomaDOS+): Restart game -
Number between
1
and7
: Change the game variant -
Joystick 2 (right): Control right pad (Player 1).
-
Joystick 1 (left): Control left pad (Player 2)
-
Cursor up
andCursor down
orO
andK
: Control right pad (Player 1 in 2 player mode and player 3 in 4 player mode) -
Q
andA
: 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
andCaps Shift+8
on gomaDOS+,PC XT
keyboard mode) andEnter
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.
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 (orCaps Shift+Space
on gomaDOS+,PC XT
keyboard mode): Show or hide configuration menu -
Cursor keys (
Caps Shift+5
,Caps Shift+6
,Caps Shift+7
andCaps Shift+8
on gomaDOS+,PC XT
keyboard mode), andEnter
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
.
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
to9
: 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.
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.
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 (orCaps 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
andCaps Shift+8
on gomaDOS+, withPC XT
keyboard mode) and thenEnter
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.
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.
This way, the connections should be:
-
Line
A
encoder 1 -
Line
B
encoder 1 -
Line
A
encoder 2 -
Line
B
encoder 2 -
Vcc(
+
) -
Fire 1
-
NC
-
GND
-
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:
-
Plug the audio cable
-
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 thenEnter
to do the classicLOAD "" + Enter
-
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.
-
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)
-
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 thenEnter
to do the classicLOAD "" + Enter
-
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 |
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
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.
Use
Once the microSD card with the data files is inserted, it’s turned on plugging in the included USB power cable.
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
andTSX
) -
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.
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).
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) |
---|---|
|
Disable memory contention |
|
Enable DivMMC |
|
Enable NMI DivMMC (esxdos Menu) |
|
Use Pentagon Timings |
|
Use 128K timings |
|
Disable DivMMC and ZXMMC ports |
|
Enable Timex Horizontal MMU |
|
Disable ROM high bit (1FFD bit 2) |
|
Disable ROM low bit (7FFD bit 4) |
|
Disable 1FFD port (+2A/3 paging) |
|
Disable 7FFD port (128K paging) |
|
Disable TurboSound (secondary AY chip) |
|
Disable AY chip |
|
Disable Radastanian mode |
|
Disable Timex mode |
|
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.
Take note, that on some models, the JTAG pins are at the under the board.
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:
-
Flash image and recovery file for ZXDOS+ (LX25), from the official repository
Instruction Steps:
-
Install Raspberry Pi OS (formely known as Raspbian) to the Raspberry Pi SD card (using the official download, NOOBS, PINN, etc.)
-
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
-
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
yGND
), 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
.
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 |
---|---|---|
|
GPIO#6 |
|
|
GPIO#13 |
|
|
GPIO#19 |
|
|
GPIO#26 |
|
|
GND |
|
-
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/
-
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/
-
For GPIO connection, edit
raspberrypi2-native.cfg
copy, updatingbcm2835gpio_jtag_nums
(uncommenting, if necessary), with your JTAG and GPIO connection numbers, at the linebcm2835gpio_jtag_nums
. For our example:
# Header pin numbers: 37 31 33 35
bcm2835gpio_jtag_nums 26 6 13 19
-
Comment, if it wasnt’t already, the line
bcm2835gpio_swd_nums
(not necessary for USB-Blaster connection):
#bcm2835gpio_swd_nums 11 25
-
Add, to the end of the file, the line
adapter speed 250
(again, not necessary for USB-Blaster):
adapter speed 250
-
Turn on the ZXDOS+ or gomaDOS+.
-
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 editedraspberrypi2-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"
-
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.
-
Insert in the ZXDOS+ the microSD card formatted as FAT16 o FAT32, and with the
FLASH.ZXD
file downloaded previously. -
If using a USB-Blaster connection, unplug the connector.
-
Select the option
Upgrade Flash from SD
. Press Enter, chooseYes
, and press Enter again to start the Flash writing process.
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 |
-
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 |
For a gomaDOS+, since the recovery image uses a PS/2 configuration as default, follow this steps to set up the BIOS correctly:
|
Recovery using MacOS and USB-Blaster cable
Hardware required:
-
USB-Blaster cable. Using the right pins for ZXDOS+, as explained earlier
-
Flash Image file and y recovery file fo ZXDOS+ (LX25). The same ones as for Raspberry Pi, from the official repository
Software required:
Instruction Steps:
-
Prepare UrJTAG instal:
brew install libftdi libusb pkg-config
git clone https://github.com/C-Elegans/urjtag.git
cd urjtag
-
Copy the extra data folder for UrJTAG, into urjtag
data
folder. -
Start compiling:
./configure --with-libftdi --with-libusb --with-ftd2xx --with-inpout32 --enable-python=no
make -j4
sudo make install
-
Copy
FLASH.ZXD
file to the root of the ZXDOS+ microSD card. -
Connect USB-Blaster cable to ZXDOS+ and the Mac
-
Turn on the ZXDOS+ or gomaDOS+.
-
Make sure that, we are in the directory where
recovery.zxd.bit
is, and executejtag
command.
-
A new shell appears. Now type the commands:
cable usbblaster
detect
pld load recovery.zxd.bit
Make sure, when using |
-
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.
-
Insert in the ZXDOS+ the microSD card formatted as FAT16 o FAT32, and with the
FLASH.ZXD
file downloaded previously. -
Unplug the USB-Blaster.
-
Select the option
Upgrade Flash from SD
. Press Enter, chooseYes
, and press Enter again to start the Flash writing process.
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 |
-
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 |
For a gomaDOS+, since the recovery image uses a PS/2 configuration as default, follow this steps to set up the BIOS correctly:
|
When using Linux with |
Recovery using Windows and USB-Blaster cable
Hardware required:
-
USB-Blaster cable. Using the right pins for ZXDOS+, as explained earlier
-
Flash Image file and y recovery file fo ZXDOS+ (LX25). The same ones as for Raspberry Pi, from the official repository
Software required:
-
Windows
-
USB-Blaster drivers for Windows, available at ZX-Uno forums
-
UrJTAG, for Windows, available at the official repository
Instruction Steps:
-
Extract the ZIP file with drivers (obtained from the ZX-Uno forums)
-
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 -
Extract UrJTAG Windows software, obtained at the official repository
-
Copy
FLASH.ZXD
file to the root of the ZXDOS+ microSD card. -
Connect USB-Blaster cable to ZXDOS+ and the PC
-
Make sure that you are in the directory where
recovery.zxd.bit
is, and executejtag
command. -
Turn on the ZXDOS+ or gomaDOS+.
-
A new shell appears. Now type the commands:
cable usbblaster
detect
pld load recovery.zxd.bit
-
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.
-
Insert in the ZXDOS+ the microSD card formatted as FAT16 o FAT32, and with the
FLASH.ZXD
file downloaded previously. -
Unplug the USB-Blaster.
-
Select the option
Upgrade Flash from SD
. Press Enter, chooseYes
, and press Enter again to start the Flash writing process.
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 |
-
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 |
For a gomaDOS+, since the recovery image uses a PS/2 configuration as default, follow this steps to set up the BIOS correctly:
|