RetroMax Info

Call for Keyboards

The RetroMax (and for the Color Maximite 2 that the RM is based upon) uses a USB keyboard connection that should work with many USB keyboards. What I’d like to do in this post is to ask you for the make and model for any keyboard that you use that works with the RetroMax. And any that don’t…

There have been issues with some keyboards. Often this is solvable with a better power source. Some keyboards draw a lot of current and the RetroMax would need to be powered from a reliable power source through a quality USB cable.

Generic LDK.ai R260 Suspension 7 Colorful Backlit 104 Keys ...

The RetroMax will accept a standard USB keyboard including most that have a wireless dongle for the USB connection. Note that you cannot use a USB hub on this port or keyboards that have a built-in hub.

When the keyboard is connected or on startup the RetroMax will enumerate the keyboard and if this is successful the SD card activity LED will be solidly illuminated. On the first access of the SD card the LED will revert to its normal action (illuminated during SD card access).

Below is a list of keyboards that work as well as some makes and models that have issues.

Keyboards known to work well with the RetroMax:

• Logitech K270 Wireless Keyboard
• Logitech Wireless K800
• Rii i8 BT LED Backlit Mini Bluetooth Wireless Keyboard
• Logitech K400+
• HP sk2885
• Lenovo KU-0225,
• Microsoft 600
• HP ku0316
• no name mini ds3000
• no name mini R260
• Havit HV-KB390L
• Logitech K120
• Microsoft 600 wired keyboard
• Logitech K780
• Logitech K260 wireless
• eSYNiC touch pad keyboard wireless
• Ducky Shine 2014 Year of the Horse Mechanical keyboard
• ADX RGB Mechanical keyboard (60%)
• Zar Mechanical keyboard TKL
• “Tecbean” gamer keyboard
• Perixx PERIBOARD-426 Mini USB Keyboard 
• DELL SK-8115
• HP KU-0316
• Cherry G84-4100

Keyboards with issues:

• Logitech Wireless K410
• Wired Raspberry Pi keyboard
• K750 solar powered logitech wireless keyboard
• No Name k670 backlit
• Dell sk815
• No Name BIG Hi-Vis Yellow buttons

Please leave a comment to this info post with your keyboard information to help improve this list. If possible please mention which RetroMax/CMM2 system it was tested on and firmware version.

Z-MIM r3

by Tom Williams

Z-MIM is a Z-machine interpreter allowing the classic Infocom works of interactive fiction to be played on the Colour Maximite 2. This version is limited to files in the .z3 format but all the early classics are available in that format: Ballyhoo, Cuthroats, Enchanter, Hollywood Hijinx, Leather Goddesses of Phobos, The Lurking Horror, Planetfall, Plundered Hearts, Seastalker, Sorcerer, Spellbreaker, Wishbringer, Infidel and of course Zork I-III.

Source code: https://github.com/thwill1000/zmim

The RetroMax Real Time Clock

The RetroMax (version 1.4a+) has an on-board Real Time Clock (RTC). This is a Maxim Integrated (was at one time Dallas Semiconductor) DS3231M. Although the core microcontroller of the RetroMax has RTC capability, the DS3231M offers some additional features.

The accuracy of the DS3231M is ±5ppm (±0.432 Second/Day) from -45°C to +85°C The DS3231M has two programmable alarms and a 1Hz/32.768kHz output. There is also an internal temperature sensor with ±3°C accuracy.

The I2C bus of the RetroMax can be scanned for devices by sending out the device address sequentially and verifying that the device has responded to the address. In other words, code can say “Hey device #20” and then look for an answer back.

If the RetroMax sends out a device address and then looks at the MMBasic built-in variable called MM.I2C for a value of 0, then that device has said “hello” back when it was addressed. Very simple code below will scan the bus from address &H08 to address &H77 looking for devices. The address search range is limited to &H08 – &H77 by the RetroMax firmware. Output printed to serial console.

The DS3231M RTC of the RetroMax is located on I2C bus #1 (PB8 and PB9). The RetroMax has three I2C buses.

Code for setting time and date for the RetroMax RTC. Also, read of DS3231M temperature.

RetroMax Ordering Options

The CircuitGizmos RetroMax is a printed circuit board (PCB) about five inches by five inches. When ordering the RetroMax you can order just this PCB, or you can order the RetroMax with an enclosure.

The enclosure is listed on the CircuitGizmos site as “RetroMax Slim Enclosure with Accessories”. As of today’s date the accessories that come free when you get the enclosure are a small reset key (much like the ones supplied with cell phones) for poking into the front panel reset hole as well as a USB cable for powering the RetroMax from a PC.

The Slim Enclosure for the RetroMax you may recognize as an altered case for an external USB DVD device. Below you can see the case next to a 5.25″ floppy. Note the sticker I stuck on the case that looks much like a TRS80 badge.

You can, as an option, order the RetroMax PCB and also a base for “open” mounting that has standoffs and rubber feet.

The RetroMax mounted on this base makes it easiest to add additional electrical circuits. The connections on the back, such as the two Nunchuk controller connections are accessible with the board in the enclosure. The 40 pin rPi connector is accessible as well. But with the PCB on the base instead of in the case, the footprints for the Arduino Shield, the sea-of-holes, and other features have easier access for custom circuits.

More options available when you order the RetroMax include headers for the shield/mikrobus layout, an ESP8266 for wifi experimentation, a mini solderless breadboard for circuitry, some variety jumper wires, and an I/O guide and socket specific to the RetroMax use of the 40 pin interface port.

Reloading RetroMax MMBasic Firmware

The MMBasic firmware for the RetroMax is a continuous effort. There are releases of stable versions of the firmware as well as some experimental beta versions. The Color Maximite 2 (CMM2) is the base design for the RetroMax, and as such the RetroMax runs the CMM2 firmware. The CMM2 information and firmware updates are available here:

Color Maximite 2 site

The STM32 processor on the RetroMax includes its own programmer/bootloader so the RetroMax firmware can be easily loaded via a USB cable connected to a personal computer or laptop (special hardware is not needed). Just follow these steps.

For the programming software go to https://www.st.com/en/development-tools/stm32cubeprog.html and download the STM32CubeProgrammer software. This is free software but STM requires you to have an STM account or provide your name and email address. They will email you a link to download the software. Then install this software on your computer (Windows, Linux and macOS are supported).

The USB connection from the PC to the RetroMax can be done in one of two ways: either using a USB A to USB B cable with the cable plugged exclusively into the USB power/console port of the RetroMax, or using a USB A to USB A cable with the cable plugged exclusively into the RetroMax keyboard port.

The USB A-A cable is less common and may be hard to purchase, but the firmware update process is easier. The A-B cable is more common, but adds a couple of minutes to the firmware update process.

Updating firmware using a USB A-A cable

Make sure that the Type-B USB power cable to the RetroMax is disconnected.

Using the USB A to A cable connect the USB Keyboard port on the RetroMax to a USB port on your desktop/laptop computer. This will power up the RetroMax. Make sure that the RetroMax is powered – the green power LED at the front should be lit up. If not, press the power button on the front.

Image: A-A cable connection (example with RetroMax out of the case)

The RetroMax firmware button is on the side of the RetroMax near the VGA connector. Hold the firmware button down. If the RetroMax is in a case, the button should be accessible through a hole in the plastic.

Image: Firmware button location

Image: Firmware button location

With the firmware button held, momentarily press the reset button You should hear a sound (the “hey I just found a USB device” sound) from your computer as it connects to the RetroMax. Release the firmware button.

Run the STM32CubeProgrammer software on your computer. On the top right of the program window select USB as the communications method. If the program does not recognize the USB connection click on the small blue circle of arrows to the right of the port drop down list to refresh the entry. Your screen should look like the illustration below (the USB port number may vary).

Image: USB port connection in Cube Programmer

Click on the “Connect” button. You should then see a series of messages as shown in the screenshot below finishing with the message “Data read successfully”. Any messages in red will indicate an error.

Image: Connection messages in Cube Programmer

Click on the download button:

on the left side of the STM32CubeProgrammer window and the software will switch to the “Erasing and Programming” mode as shown below. Use the “Browse button” to select the firmware file (it will have an extension of .bin). Tick the “Verify programming” checkbox. Finally, click on the “Start Programming” button.


Image: File path in Cube Programmer

The STM32CubeProgrammer software will then program the firmware into the flash memory on the RetroMax’s STM32 CPU. After a short time a dialog box will pop up saying that “File download completed”. Do not do anything at this point as the software will then start reading back the firmware programmed into the flash. When this has completed successfully another dialog box will pop up saying “Download verified successfully” as shown below. The whole operation will take well under a minute and any messages in red will indicate an rror.

Image: Download and verify process in Cube Programmer

Then dismiss all the dialog boxes and close the STM32CubeProgrammer software. Remove the USB Type-A to Type-A cable from the USB Keyboard port. Plug in the VGA monitor and USB keyboard. Plug the RetroMax into power via the USB A-B cable. Press the power button to turn the RetroMax on

You should now see on the VGA monitor the Maximite logo and the version number of the firmware that you have just loaded.

Image: Maximite Logo on powerup

If you do not have a VGA monitor you can use the serial console (over USB) to check the firmware installation.

When MMBasic is first loaded it will prompt for the keyboard type, the screen type, and the date/time. On subsequent firmware upgrades MMBasic will preserve these settings and will not prompt for them again. These can be changed later using the relevant OPTION commands.

If you wish to load another version of the firmware (either earlier or later) this can be done by repeating the steps above.

Updating firmware using a USB A-B cable

To load the MMBasic firmware with a USB A-B cable you must first have installed the serial over USB driver on your desktop computer.

Using the USB A to B cable connect the USB Power/Console port on the RetroMax to a USB port on your desktop/laptop computer. This will power up the RetroMax. Make sure that the RetroMax is powered – the green power LED at the front should be lit up. If not, press the power button on the front.


Image: A-B cable connection (example with RetroMax out of the case)

The RetroMax firmware button is on the side of the RetroMax near the VGA connector. Hold the firmware button down. If the RetroMax is in a case, the button should be accessible through a hole in the plastic.


Image: Firmware button location

Image: Firmware button location

Run the STM32CubeProgrammer software on your computer. On the top right of the program window select UART as the communications method. If the program does not recognize the connection click on the small blue circle of arrows to the right of the port drop down list to refresh the entry. Your screen should look like the illustration below (the serial port number may vary).


Image: Serial port connection in Cube Programmer

Click on the “Connect” button. You should then see a series of messages as shown in the screenshot below finishing with the message “Data read successfully”. Any messages in red will indicate an error.

You are now connected with the A-B cable instead of the A-A cable. Proceed with the programming process as described above. Downloading the MMBasic firmware will take about 5 minutes.

Linux and the Raspberry Pi

Loading the firmware from a Linux computer and/or the Raspberry Pi has some special considerations and these are explained here:

http://www.thebackshed.com/forum/ViewTopic.php?FID=16&TID=12171