#RC2040

2025-04-09

The postie has delivered my #RC2040 kit…

So I have a new project to distract me from all the other projects that are currently distracting me from the other projects that I started to switch off from work

Hand holding a cardboard box with a picture of a circuit board on it. Titled “RC2040 Computer Kit” with the ExtremeKits logo and contact details

RC2040

I’ve recently gotten hold of a RC2014 computer and it’s great. Once I’ve gone beyond some of the basic tutorials online I might start posting something about it at some point, so watch this space.

But also, I stumbled across the RC2040 project and kit from Extreme Kits (https://extkits.co.uk/product/rc2040/). Described as a “Retro emulated Z80 CP/M computer kit” it is basically a rc2014 emulated on a Raspberry Pi Pico. So I just had to get one to have a play with that too!

It comes as a PCB, acrylic baseplate and then a pile of components – mostly resistors, buttons, jumper. The PCB itself has the surface mount footprint for the Raspberry Pi Pico – and as it is essentially emulating a RC2014, hence the name RC2040.

These are my “notes to self” to remind me what I did to get up and running as the instructions are somewhat spread around and I felt assume a bit of knowledge of the RC2014 and the Z80 ecosystem that I don’t yet have.

Main resources and references:

This post has the main usage points, which are mostly in the getting started pages, but with a few extras I had to figure out on the way too.

PCB Build Notes

If you’re thinking about getting one of these kits, take particularly note of the warning about the micro SD card connector.

This has to be soldered on using surface mount 1mm pitch connectors and to say it is fiddly is putting it mildly! And you almost certainly won’t know if you’ve succeeded until everything else is together and you’re reading data from the card…

There is a note on the product page to ask for help prior to ordering if you want it done for you.

I just went slowly with it, fixing one of the larger grounding pads first and then using that to orient the other pins before soldering any of the others. Then it was checked thoroughly with a magnifying glass before continuing.

Other things to consider:

  • I went with the suggestion of using a slider switch for the USB/UART selector rather than jumper headers. This is connected to GP13 and used by the firmware to decide where to direct the serial output – over USB or to the UART. The outer position means UART, and the position nearer the Pico means USB.
  • There is a speaker socket, which links to GP14, GP15 and GND directly with no additional circuitry.
  • There is a FTDI socket which is connected to GP0, GP1, 5V (VBUS) and GND. There is a solder jumper (JP2) on the underside of the board that is unconnected by default, that determines if 5V comes from FDTI or not.
  • There is also a solder jumper (JP1) to select 3V3 or 5V serial on the FTDI header. This is connected by default for 5V operation as it connects a 22K resistor from the header “TX” pin to GND, making a resistor divider with the 10K in series resistor. Note: TX on the header goes to the Pico RX Pin (GP1), and RX goes to TX (GP0).
  • Although it isn’t shown on the schematic (that I could spot) there is also a solder jumper (JP3) on the underside of the board “has switches”. This is connected by default and indicates that there are configuration switches on this board (see later).
  • It wasn’t immediately obvious (to me) which way round the LED went, but probing with a meter, the cathode is the pin nearest the edge of the board which connects via the 1K resistor to GND.

With hindsight, I suspect it would have been more useful for me to have had switches instead of the A13, A14, A15 jumpers and a jumper for the USB/UART setting.

Note the USB/UART switch is oriented so that USB is on the Pico side and UART (via GPIO 0/1) is at the edge of the board.

Boot Configurations

This is one area I was getting quite confused over… I think there is where knowledge of the RC2014 boot options and ROM sets would really help, but what I think is happening is as follows.

The ROM file provided is 24886009.bin. Each number represents a single bank of the ROM and consequently an address jumper setting. Following the key from here, this decodes as:

  • Bank 0 – 000 – 2 – Microsoft BASIC, for 32k RAM, SIO/2, with origin 0x0000
  • Bank 1 – 001 – 4 – Microsoft BASIC, for 56k RAM, SIO/2, with origin 0x0000
  • Bank 2+3 – 010 – 88 – Small Computer Monitor for pageable ROM, 64k RAM, SIO/2 or 68B50 ACIA, with Microsoft BASIC and CP/M boot options
  • Bank 4 – 100 – 6 – CP/M Monitor, for pageable ROM, 64k RAM, SIO/2, CF Module at 0x10, with origin at 0x0000
  • Bank 5 – 101 – 0 – Empty
  • Bank 6 – 110 – 0 – Empty
  • Bank 7 – 111 – 9 – Small Computer Monitor for any ROM, any RAM, any UART

When the RC2040 is oriented with USB on the left and the address jumpers at the bottom right of the board, the order is inverted. For the A13-A14-A15 Jumper settings: “1” is the position nearest the Pico; “0” is the position nearest the edge of the board.

So, in A13-A14-A15 order the options are:

  • 000 – Bank 0: Boot into MS Basic
  • 001 – Bank 4: Z80 SBC Boot ROM
  • 010 – Bank 2+3: SC monitor

The following go into a loop for me:

  • 100 – Bank 1: Repeated “>” in a loop
  • 111 – Bank 7: Repeated “Read Fail” then drops into SC monitor

As might be expected the remaining two options (101,011) do nothing.

MS Basic (000) is the same as the standard image for RC2014 that I had by default with my kit.

Booting into the SC monitor (010) works fine too. When selecting help (“?”) there are three options at the bottom to boot into BASIC, WBASIC (“warm start” BASIC) or CPM.

Booting into the CP/M monitor appears to offer some basic options (once the “press [space] to access console” message appears and space has been pressed), but apparently only the boot into CP/M will work.

It would seem that the most versatile option is to use the SC monitor (010) mode for now.

A side note on boot configuration

There are a number of places in the emulator code where a choice is made between reading configuration switches and using a configuration from the rc2040.ini file on the SD Card.

There is a hardware indication of using switches. This is determined by the setting of GP22. In the board, this is tied to GND which means “this board has switches” (i.e. address jumpers). But it is tied to GND via a (connected) solder jumper which doesn’t appear to be on the schematic. This also determines if the USB/UART jumper is present.

There is also a config setting which can determined if the switches should be overridden by what is in the config file. This is the setting [ROM]\ovjump. If this is present and set to 1 then the A13-A14-A15 values are read from the rc2040.ini file rather than the A13-A14-A15 jumper settings.

In the readme file for the SD card contents, two rc2040.ini configurations are described. The actual rc2040.ini file present is the SIO2 configuration.

Usage Notes

When using USB serial, the board will pause until a serial link is established. This is pretty handy as when resetting the Pico I lose the connection in PuTTY, but on “Restart Session” the session is re-established and the Pico will then boot up.

The buttons do the following:

  • Pico RESET. This is hard-wired to the Pico RUN pin so does a proper hardware reset of the Pico.
  • Z80 RESET. This is on GP7 and performs a “soft” reset, in that it performs an emulator Z80 reset.
  • BUT. On GP8. This is related to fast file transfers apparently (tbd).
  • DUMP. GP9. Dumps the RAM contents to the serial terminal and SD card.

There is a good reference for additional useful rc2040.ini file settings here: https://www.extremeelectronics.co.uk/more-rc2040-settings/

GP16,17,18,19,20,21,26,27 are broken out on an additional header and form the 8 bits of a single Z80 IO port. By default this is at PORT address 0 but that can be changed with the [PORT]\pioa rc2040.ini file option.

Serial Connection

As already mentioned the RP2040 serial console can be directed over USB serial or out via UART0 on GPIO 0/1. The UART is broken out to an FDTI header on the board.

The slightly confusing thing for me is that the FTDI pins provided on the board, are labelled for the FTDI connections not the Pico’s connection. This can be seen from the schematic:

So FDTI TX is connected via an optional resistor divider to GPIO 1 which is the Pico’s RX; and FDTI RX is connected directly to the Pico’s TX.

Recall that the USB/UART jumper/switch must be in the “near the edge of the PCB” position for this to work.

Conclusion

This will do for the time being. I think I now understand how this can boot into either BASIC or CP/M, so next is to do some reading about how to get different programmes running under CP/M.

Kevin

#basic #cpm #raspberryPiPico #rc2014 #rc2040 #z80

2024-12-03

For the ExtremeElectronics #RC2040-Users:
The actual #RunCPM v6.7 in Source & Binary
(.UF2 for RED or GREEN LED) github.com/guidol70/RunCPM_RPi

Extreme ElectronicsExtelec@mstdn.social
2024-09-07

Test/development I/O port switches and leds for the @ExtKits #RC2040

This took a lot longer than it should, mostly due to vero breaking where it shouldn't and me wiring leds in every incorrect way possible.

8 leds and 8 red plastic toggle switches in a lineFingers holding a black acrylic construction, red switches in a frame on the left with vero board and connectors on the right8 leds and 8 red plastic toggle switches in a line, black plastic frame and vero/resistors and connectors on the right.
Extreme Kits ЖExtKits@mstdn.social
2024-08-25

RC2040 kit now supports ROMWBW
CPM/80 2&3 ZPM 512k of ROM disks and 160K of memory.

Plus Parallel port, SPO256AL2 speech Synth, beep, & Neo-Pixel driver. All from an Emulated Z80 on a Pi Pico.

Kit: extkits.co.uk/product/rc2040/

Git: github.com/ExtremeElectronics/

#RetroComputing #rc2040 #cpm

2024-08-23

Last night I toiled well beyond my bedtime, but I got the #RC2040 source code to build me a UF2 file. I was using #VScode and the #RaspberryPi #Pico extension on Windows 10.

This was my 2nd Pico build, the 1st being the blink example 😉

Had a few challenges. Sorted out some "stuff" in the #CMake file - my first time in that jungle. Then worked through a blizzard of warnings when the first build attempt failed. Eventually I found an error hiding in that. Fixing that was enough to get me the UF2!

Extreme ElectronicsExtelec@mstdn.social
2024-08-17

Neo-pixel and SPO256AL2 test, from an MBASIC program running on CPM/80 on ROMWBW on a Pi Pico emulating a Z80 ;)

github.com/ExtremeElectronics/

#RC2040 #RetroComputing #cpm #RaspberryPi #pico

2024-05-03

Ooops. I appear to have accidentally built and run ueForth on my #RC2040 from @Extelec .... 😊​

screen shot of the terminal displaying the output of ueForth running on the RC2040. Showing ASCII mandelbrot and the uefoth signon
2024-04-22

I compiled the actual #pdp11 #Pico1140 .UF2 emulator binarys for different SPI-Pinouts:
- Ian #Schofield-original
- ExtremeElectronics #RC2040 @extkits
- #RunCPM (by me)
- #RP2040 Zero (by me) github.com/guidol70/Pico_1140/

2024-04-18

So, huh... The hand-soldering of the microSD port of the #RC2040 was within my ability, after all. 😅

Picture of the RC2040 PC with hand soldered microSD socket.
2024-04-07

OK - I've let v1 of "The Valley" escape into the wild if anyone fancies playing a 42 year old adventure game!

Details here: z80.timholyoake.uk/the-valley-

If the weather stays this bad where I am, there may be a version 2 for a PicoTerm extended character set in a few days from now ...

#RetroComputing #RetroGaming #RC2014 #RC2040

2024-04-07

Almost happy enough to let this version of The Valley out as a v1.

Extended data on your monster combat record is now available, as is the ability to save and retrieve current game state to/from disk.

A bit more tweaking and testing left to do. I'm then going to have a look at PicoTerm and its extended character set.

#RetroComputing #RetroGaming #RC2014 #RC2040

The Valley Game

Tim the Barbarian is in the centre of the lake in the swamps. He is about to enter The Temple of Y'Nagioth. The right hand side of the display now has a record of monsters encountered and slain on the quest to find the Helm of Evanna.
2024-04-02

Castle scenes are now working.

There's a glitch in special finds to fix, plus yet more refactoring and speeding up scene changes required ... but the game is now playable on an #RC2014 or #RC2040.

Also on the to-do list - looking at moving beyond 7 bit ASCII codes for display when running on the PicoTerm VT emulator!

I've now reached the exalted rating of 'Peasant'

#RetroComputing #RetroGaming

The Valley game.

Castle scene shown (The Temple of Y'Nagioth). Castle walls are 'X', the door is '_' and special finds are '*'. The player is 'I'.

With treasure of 261 and experience of 363, Tim the Barbarian is now rated a 'Peasant' - one step better than 'Monster Food' and two steps better than 'Worm Food'.
2024-04-01

Note to self: you'd make faster progress if you don't stop to refactor the code every 10 minutes!

But I do have the swamp and wood scenes working correctly now. I need to work on the castles next and I've noticed glitches on scene exit and status area formatting.

And yet more refactoring is required, as well as speeding up the entry to new scenes ... this is taking longer to port than I'd estimated - nothing changes !! 😂

#RetroComputing #RetroGaming #RC2014 #RC2040

The Valley game

In the swamp scene, making progress, but my rating is still 0 - worm food!
2024-03-31

OK - I can now update the playing area successfully, but it's too slow to play if the whole playing area is updated every time a move is made. Time to improve the movement algorithm - should be straightforward enough I think.

#RetroComputing #RetroGaming #RC2014 #RC2040

Screenshot of The Valley, showing a fully populated valley game screen.

I represents the player, / and \ the safe path, @ safe castles, -- swamps, !! woods and A is the black tower.
2024-03-30

You can't see anything in the playing area yet, but movement and combat are working properly.

#RetroComputing #RetroGaming #RC2014 #RC2040

A screenshot of The Valley game. You can't see anything in the playing area at the moment, but the program knows what's there as movement and combat work. Tim the Barbarian is currently fighting a Rock-Troll according to the status area and has just hit it.
2024-03-30

Making reasonable progress with this.

Amazed at how many subtle incompatibilities there are between the (pirated??) Microsoft 8K BASIC the UK101 ran and the Microsoft BASIC-80 CP/M version - eg PRINTD$ without a space between the T and the D$ is not OK in BASIC-80!

Think I've got most of these fixed now ...

#RetroComputing #RetroGaming #RC2014 #RC2040

2024-03-28

So my Easter #RC2014 / #RC2040 project is getting The Valley to run under CP/M using VTxxx terminal emulation.

I'm basing it on the second (full-fat) version I wrote for the UK101 in 2022 - z80.timholyoake.uk/retrochalle

Biggest obstacle is replacing all of the display POKES/PEEKS with suitable VTxxx escape codes and keeping track of where the player is.

I'm starting off in Microsoft BASIC, but it would be nicer to have something in Turbo Pascal eventually. Maybe!

#RetroComputing #RetroGaming

The 1982 Computing Today game "The Valley" being played on a Compukit UK101. Tim the Barbarian is just about to defeat an evil Thunder-Lizard on his way to the treasure.
2024-02-25

The square root of 32 is not 4.02 - the end of the beginning

Chasing down the bugs in a #z80 emulator library.

An updated and long read for a Sunday (not quite as long as war and peace, but more fun to read).

z80.timholyoake.uk/the-square-

#RetroComputing #RC2040 #RC2014

Client Info

Server: https://mastodon.social
Version: 2025.04
Repository: https://github.com/cyevgeniy/lmst