RC2014

As I mentioned in RC2040 earlier last year I finally got myself a RC2014 – something I had been planning on doing for ages. From the website:

“RC2014 is a simple 8 bit Z80 based modular computer originally built to run Microsoft BASIC. It is inspired by the home built computers of the late 70s and computer revolution of the early 80s. It is not a clone of anything specific, but there are suggestions of the ZX81, UK101, S100, Superboard II and Apple I in here. It nominally has 8K ROM, 32K RAM, runs at 7.3728MHz and communicates over serial at 115,200 baud.”

I’ve had a lot of fun with it over the last 9 months or so, but only a small amount of that has made it to my blog. Mostly because I’ve been catching up with stuff the community has already been doing for some time, so didn’t really feel like I had much that was unique to say.

I’m still not sure I’m at the point where I’m adding to the global knowledge pool of RC2014, even by my “reinventing wheels” standards, but I am at the point where I need to start making some “notes to self” about it, so I thought it was about time to start a proper post on the topic.

RC2014 Classic II

I got myself a RC2014 Classic II figuring that would be a suitable outlay to get started, and it was a good choice for me. Enough going on to get interesting, but not too expensive to start with.

This is made up from the following:

  • Backplane 8
  • Z80 CPU (a variant of this one) fitted with a Zilog Z84C0010PEG, which can go up to 10MHz.
  • Banked ROM – a 64K 27C512 ROM providing 8 ROM banks selectable via jumpers. It comes pre-programmed with ROM R0000009 (details here). The R indicates Microsoft BASIC in bank b000 and the 9 indicates the SC Monitor in bank b111.
  • 32K RAM – a single 62256 SRAM chip mapped onto address 0x8000.
  • Serial I/O (a variant of this one) – a single serial port, running at 115200 (assuming the standard 7.3728 MHz clock for the system), based on the MC68B50.
  • Clock and Reset – the aforementioned 7.3728MHz clock plus a reset switch.
  • 5V, USB-C, FTDI module from 8086 (optional). More details here.

The modules provided in the Classic II are not available on their own, as far as I can see, only as part of the Classic II kit.

I’ve made the following small customisations:

  • As can perhaps be seen in the photo, I have a simple 3D-printed “buffer” for the PCB to sit in.
  • I’ve added the 7805 regulator so it can be powered by 7-12V via the barrel jack instead of the 5V via the FTDI link.
  • I went and connected up the additional slots on the backplane, as described in an earlier version of the page for the kit on rc2014.co.uk. But then realised that later versions of the PCB has all slots connected by default. Spencer has since updated the page to say that this is no longer necessary 🙂
  • I’ve put in a higher value resistor as I found the LED very bright! The original specifies 330R. I ended up with 5K.

VGA Terminal

A mentioned in a previous blog post, I spent a bit of time trying out the Raspberry Pi as a serial terminal and managed to get something working quite nicely. But eventually I caved in and picked up the RP2040 VGA terminal. This works really well, but of course the issue is that is requires a VGA monitor.

I found a pretty cheap, small, and neat display that in addition to USB-C power and HDMI input also incorporates a VGA input. Interestingly it also has a composite video input. Mine had a typical key-word heavy title of “7 Inch Portable Display IPS 1024×600 LCD HDMI-compatible VGA AV Input DC Type C Power In for PC Laptop Camera TV Box DVD Screen” on an overseas marketplace and can typically be found for around £30-£35. I found that 7″ is quite a nice size for the RC2014 text.

As I’m still using the serial link to my laptop for a keyboard, the UART jumpers on the RP2040 VGA must be set as follows:

  • TX: UART 1
  • RX: Not connected

Without changing the RX jumper the keypresses over the serial link are not registered. I’m guessing this is because two things are trying to drive the serial I/O bus. I’m not sure if this is an officially supported configuration, I expect it is assumed that a USB keyboard would be used, but it seems to work for me. Shown below.

Audio Boards

I have a few different audio related boards:

  • Ed Brindley’s RC2014 YM/AY Sound Card. This allows the addition of an AY-3-8910 or the Yamaha equivalent, programmable sound generator chip to your RC2014. Assuming you can get a chip of course. There are some great notes on this board here and some additional notes on using them with an Arduino here. Note: I have revision 5, not the latest as shown in the repository.
  • Why Em-Ulator Sound Module. This is basically the same as the above card, but uses an AVR chip to emulate the AY-3-8910 which completely side-steps the issue of how to get hold of a device. One really neat feature is the addition of a 40-pin DIP socket for purely cosmetic reasons. If you have an old 40-pin DIP chip you can stick it over the emulator circuit and it will look like the real thing!
  • SID-Ulator Sound Module. This is an equivalent card for the (in)famous SID chip (Sound Interface Device) as used on the Commodore 64. I never had a C64, but have watched some of the really cool stuff that Shiela Dixon does with the SID, so am looking forward to having a play at some point.
  • MG005 Speech Synthesiser. This is a RC2014 board from Mr Gelee’s Tech, for the SP0256A-AL2 speech synthesizer chip (there are some notes here). It is actually quite a lot of fun to play around with.
  • MIDI Module, designed for RC2014. This is a MIDI module by Shiela Dixon based on the same 68B50 device used on the standard serial I/O module.

Miscellaneous Other Boards

The RC2014 is definitely one of those systems, for me at least, where it is very tempting to try to get “one of everything”. And following the RC2014 Assembly last year, I’ve a few additional boards stacked up that I’ve been playing around with a bit.

  • Digital I/O – This provides 8 LEDs as OUTPUTs and 8 switches as INPUTs, which can be accessed via the IN/OUT instructions to Port 0.
  • MG017 I2C Interface – This is another module from Mr Gelee’s Tech that provides a link between the wide range of I2C devices that exist for an Arduino environment and the RC2014. It does that by basically including an Arduino on the board.
  • RC2014 Assembly Badge v1.0 – Having visited the RC2014 Assembly last year, I came away with the event badge, which itself is pretty neat too. There is a Hackaday write-up here.
  • MG008 ZX Spectrum Peripheral Adaptor – This allows some ZX Spectrum hardware peripherals, that would usually plug into the edge connector of a Spectrum, to possibly be used with an RC2014 system. I would love to get some of my old Spectrum devices recognised, but this will be quite a lot of work to get going. This is on the “bigger” things to-do list.

I also have a 5-way backplane and additional power/reset module from SCC.

Other RC2014 Systems

Not content with the basic Classic II, I also have the following which I keep tinkering with in various combinations.

  • RC2014 Micro – This is the main Z80 CPU, ROM, RAM, clock and reset on a single card. But otherwise is essentially the same as the Classic II in functionality. It is particularly pleasing how all the chips are packed onto this single RC2014 module.
  • RC2014 Mini II Picasso – I kept looking at these ever since they first came out and resisted. But then one day caved in, and I’m really glad I did. I love this little board. It is a reworking of the RC2014 Mini II, which itself is another version of the Classic II or Micro functionality but in a single module.

Small Computer Central

As well as the original RC2014 there is a whole range of compatible, extended and expanded devices out there that started with the Z80 and RC2014 bus standard. One particular set of extensions is based around standardising extensions to the bus in a way that allows for up to 40 additional signals.

Small Computer Central is the home of the SC Monitor programme that comes with the RC2014 as well as a wide range of computers and modules supporting the various RCxx bus standards: RC2014, 40-pin RCBus, and 80-pin RCBus. The standards are defined here.

After meeting Stephen at the RC Assembly, and coming away with some of the SCC boards, I’ve been experimenting with some alternatives to my initial Classic II setup. Here is my SCC-board RC2014 equivalent.

On the left, my original RC2014 Classic II modules. On the right, my SCC replacement modules:

Together, the expanded ROM and RAM should allow the Classic II to run CPM once some additional storage is provided. For me that will be in the shape of:

  • SC604 Compact Flash Module – This should allow me to be able to use compact flash as the “disk” for a CPM installation. strictly speaking this is a RCBus module, but it states RC2014 compatibility too. But I’ve not built it yet. Watch this space…

These are all part of the SCC RC2014 compatible range. There are other ranges for RCBus based on the Z80 and Z180 in a range of form factors.

RC2014 Emulation

As well as a range of actual Z80 based computers, as code exists to emulate the Z80 on more modern microcontrollers (usually) there are a number of projects that have popped up with kits that can emulate the RC2014.

I have the following that I’ve been playing with:

  • RC2040 – This is an emulation of a CPM compatible RC2014 system, running on a Raspberry Pi Pico. My notes about getting this up and running can be found here: RC2040.
  • Pico RomWBW – A version of the RC2040 geared up to run RomWBW. This is particularly nicely packages, especially if you go for the wooden box.

Software

The basic system comes with Microsoft BASIC and the SC Monitor. Two common aims for these systems are to run RomWBW or CPM (although RomWBW is another monitor that also allows running CPM – so is sort of a superset of the others as I understand things).

Options for running CPM from here:

  • Get a Classic II CPM Upgrade kit – this expands the memory and adds CF storage, but reuses many of the parts from the original Classic II.
  • Get a Mini II CPM Upgrade kit (and use it with my Picasso) – this is an second board to add to the Mini II with everything that is required.
  • Use the SCC RAM/ROM replacements for my Classic II with the CF Storage.
  • Use RC2040 or Pico RomWBW.

Emulation would get me going, but I want to get a non-emulated system up and running too. For now that means working on the SCC modules, which to be honest, was essentially why I got them in the first place.

Conclusion

Getting your first RC2014 style kit starts a journey down a bit of a rabbit hole, but it has been a lot of fun so far. The peak was the RC2014 Assembly last year and seeing what so many others are getting up to.

But if you’ve read this far, you’re probably thinking something along the lines of “wait, this is all just building modules – has he actually done anything with them?” And you’d essentially be right. In one way the writing of this blog post is partly to avoid actually getting on with something with the things I’ve now built.

But I do have a few aims of what to explore next, so assuming the agony of choice isn’t too much, leading to another blog post in support of continued procrastination, here are some of the ideas I’ve had kicking around for the past 9 months or so:

  • Play with the Pico RomWBW that I got from the Assembly. I’ve built it but not really used it.
  • Get the SCC alternative modules up and running and CPM installed on some “real” hardware.
  • Have a proper look at the SID-Ulator. I’ve already had a bit of a play with the Why Em-Ulator, but only as a starting point.
  • Get MIDI up and running. I’ve had the MIDI board for a while now, but haven’t really done anything with it yet.
  • Do some proper music related stuff with the AY-3-18910/Why Em-Ulator.
  • And at some point I’d like to build my own module to get a feel for how things like address decoding all work.

So, watch this space. But don’t wait 🙂

Kevin

#ay38910 #cpm #midi #rc2014 #rc2040 #romwbw #sid #z80

Well, a long day today sorting out the problems SDK2 had caused with the #RC2040 and the increasingly aptly named FFS (Fast File Serial) File transfer from CPM to the RC2040

SDK2 really didn't like compiling bits of CPM tools. Causing it to crash, randomly only when the code was referenced, but not run. (very long story)

Refactoring sorted, and I'm glad to say, the RC2040 has FFS again.

and just for fun, so does the RomWBW now, as long as you have a Pico2 https://extkits.co.uk/product/pico-romwbw/

Oh, I've just spotted that there is SP0256-AL2 emulation in the #RC2040 too! :)

Very nice!

https://github.com/ExtremeElectronics/SP0256-AL2-Pico-Emulation-Detail

GitHub - ExtremeElectronics/SP0256-AL2-Pico-Emulation-Detail: Emulation of the SPO256-al2 chip on RP2040

Emulation of the SPO256-al2 chip on RP2040. Contribute to ExtremeElectronics/SP0256-AL2-Pico-Emulation-Detail development by creating an account on GitHub.

GitHub

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

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.

Sound and Voice

One excellent feature is SP0256A-AL2 emulation. This is a “vintage” sound chip, based on “allophones” that was common in speech synthesizers from the 1980s.

To use, a speaker is required to be connected across GND and one of the speaker pin headers. Full details of how to drive it can be found here: https://github.com/ExtremeElectronics/RC2040/tree/main?tab=readme-ov-file#sp0256-al2

There is a utility here to convert text to a BASIC programme using allophones for sending to the emulated device: https://extkits.co.uk/sp0256-al2/ and this is a sample output programme:

10 REM RC2040 BASIC Script for the text to Allophone
20 REM Converter at http://extkits.co.uk/sp0256-al2
30 P=40
40 READ X
50 IF X = 255 THEN GOTO 90
60 OUT P,X
70 IF INP(P)>0 THEN GOTO 70
80 GOTO 20
90 END
1000 REM Shall we play a game\?
1010 DATA 37,26,45,2,46,19,2,9,45,20
1020 DATA 12,2,15,2,36,20,12,16,0,0
1030 DATA 0,255

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.

That is assuming I’m not too distracted by the speech synthesizer…

Kevin

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

For the ExtremeElectronics #RC2040-Users:
The actual #RunCPM v6.7 in Source & Binary
(.UF2 for RED or GREEN LED) https://github.com/guidol70/RunCPM_RPi_Pico/raw/refs/heads/main/v6_7/GL20241203_RunCPM_v6_7_RC2040.zip

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.

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: https://extkits.co.uk/product/rc2040/

Git: https://github.com/ExtremeElectronics/RC2040-ROMWBW

#RetroComputing #rc2040 #cpm

RC2040 - Retro emulated Z80 CP/M computer kit - Extreme Kits

The RC2040 is a PI PICO z80 emulated RC2014 kit with CP/M-80 and support for ROMWBW, FUZIX and RUN CPM - Speech synthesis, parallel port and RGB Leds

Extreme Kits

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!

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

https://github.com/ExtremeElectronics/RC2040-ROMWBW

#RC2040 #RetroComputing #cpm #RaspberryPi #pico

GitHub - ExtremeElectronics/RC2040-ROMWBW: Pico emulation for ROMWBW running CPM

Pico emulation for ROMWBW running CPM. Contribute to ExtremeElectronics/RC2040-ROMWBW development by creating an account on GitHub.

GitHub