Single Board Computers

Little computers on a small circuit board. Some with video, some with USB for keyboards and mouses, all with I/O for controlling stuff, and that's right down my alley. They all run Linux, and they are intended for hobbyists (or professional product developers) with skills ranging from schoolkid to embedded systems designers.

My first exposure to computer modules was a Tomahawk engineering test station with a Micromint Domino, which had a serial terminal connection and was programmed in BASIC. A few years later, and it was a PC/104 computer which ran DOS and I was programming it in Borland C to control a storage tower. All these new little SBCs are more a general-purpose computer than the Domino and smaller and faster than a PC/104, and cheaper than either.

I got a Raspberry Pi to play with about a year after it had appeared commercially - the price was just too good to pass up. Arduino has been unavoidable. Then recently (2023) there have been a few single-board BASIC computers that have appeared, either with considerable public support or awesome hacking potential, or both.

Raspberry Pi

RasbPi has a tremendous culture and a portfolio of products. Wikipedia has a good comparison of the models. RasbPi is Open Hardware - which has encouraged the appearance of knockoffs like Orange Pi and Banana Pi (RasbPi is originally a British development, but Banana and Orange are Chinese) which are probably a bit more capable but (being Chinese) harder to get hold of.

Pluses: Ethernet, HDMI video native, cheapo Composite video

Minuses: Not a lot of I/O, and all as individual discretes. I'm also not real sure of using a MicroSD card as the main memory, although that does ease loading operating systems and such. Having a MicroSD increases fragility and the likelihood of loosing connection in an embedded application. The card also juts out from the edge of the board a considerable distance.

Rasb Pi in case side 1I wasn't exactly an early adopter, so I held out for the "B" model. This is a RasbPi 1 Model B in a cutesy acrylic case from Adafruit. The cable is a "Cobbler" and brings the I/O header out to a connector that can be plugged into a solderless breadboard. On this end is the Ethernet RJ11 and the two "real" USB ports. On the side is the 1/8" audio jack and the RCA connector for composite video.

Rasb Pi in case side 2The other end has the "fake" mini-USB for power and the MicroSD card sticking way out even beyond the box. On the side is the HDMI connector. Either composite video or HDMI video may be activated; they don't both work at the same time.

Rasb Pi out of caseOutside of the case, you can see the uncomfortable arrangement of the connectors. There's just no nice way to design a daughter board.

In fairness, the Pi 1 Model B is obsolete. The flagship at this time is the Pi 4 Model B, which has a much nicer footprint for daughter boards - which are called "HATs", rather like Arduino boards are "shields" and LaunchPad boards are "capes". Also has built-in Bluetooth and WiFi. But I've already got this one, and I need to play with my toys before I retire obsolete ones and get the current model.

Raspberry Pi PicoRaspberry Pi has since some time designed and produced an Integrated Circuit, the RP2040, which is a dual-core ARM processor with gobs of memory and a powerful GPIO coprocessor arrangement. RP2040 is showing up on other boards, but the Raspberry Pi people put it on the Pico board which is available for FOUR DOLLARS! Yes, $4!!. Needless to say, I've got a bunch of these boogers!

Arduino

Arduino is the de-facto champion of the single-board or embedded computer. Originally based on the Atmel AVR microcontroller, the system now has many family members ranging from the very small and cheap to the "professional" (and expensive). Perhaps the best thing about it is the semi-standardized stackable connector for the add-on peripheral "shield" boards. There are a lot of Arduino and third-party "shield" boards. The second best thing is the availability of software libraries for these "shield" boards and other common computing capabilities.

Arduino UnoThe Uno. With a through-hole AVR. There are SMT variants, as well as more powerful AVR-family controllers. I've got a couple of these, and have used them for projects at work.

TeensyArduino makes a small-outline computer, the Nano, but the people I deal with seem to prefer the Teensy, which is not made by Arduino but PJRC. Because it's smaller. Arduino makes a "Nicla", but they seem to be targeted at IoT and are not cheap. Oh, and some versions of Nano have RP2040 on them.

Arduino MKRArduino has a semi-professional line of boards, again targeted at IoT, called "MKR", most of which appear to have embedded WiFi and/or Bluetooth. Price is at about the same level as the baseline Arduino boards (Uno, Due, Leonard).

There's also the Portenta line, intended for "professional" applications, and therefore with a more serious price. More capable, though, with a bigger processor and capable of running Arduino "sketches" on a RTOS.

The mixed blessing is this "Sketch" language. Sort of a cut-down C++ or object-oriented C-ish language with two necessary functions, "setup()" and "loop()". The afore-mentioned libraries are intended to be run from the "sketch". I dunno, I'd rather have something a bit more standard. I've got some. Not my first choice for embedded computers.

Agon Light

Bernardo Kastrup, aka Byte Attic, was formerly an engineer and then a manager with several Silicon Valley computer companies. When he retired (comfortably, I imagine), he chose to use his spare time designing small computers. He has quite the menagerie, but the most recent - and most successful and popular - is the Agon Light. Partnered with Dean Belfield and Jeroen Venema, they designed a modern 8-bit computer with currently available parts that would use no FPGAs or simulators - the processor would be an authentic really-truly 8-bit processor - and no legacy silicon such as graphics controllers. Low cost and open-source are also design constraints. What they produced is the Agon Light, a small board with an eZ80F92 microcontroller (yes, Zilog still makes Z80 items and has several Z80-based microcontrollers) as the main processor and an ESP32-PICO-D4 module acting as the "terminal"; that is, it generates VGA video, audio, and interfaces with the keyboard, and communicates with the main processor via a fast serial link. Very reminiscent of 70s and 80s small computer systems.

Agon Light 2It's open-source, so Byte Attic doesn't produce or sell them, so you can either pull down the design materials and get a board maker to fab a board and then assemble the parts, or take the easy way and find someone who has already done that. PCBWay in Red China has done this. Olimex has modified the design slightly (the beauty of open-source) and provides a lower-cost unit. I've used Olimex stuff before, so I was comfortable in ordering an Agon Light 2 - even though it turns out it comes from Bulgaria. The popularity of the system has gotten to the point that DigiKey and Mouser are now carrying Agon Light 2.

The weird thing about Olimex' Agon Light 2 is that it uses a USB "A" connector for the PS/2 keyboard. Apparently in the early days, more computers had PS/2 keyboard and mouse ports than USB ports, so keyboards that had USB capability had fall-back PS/2 function; that is, they were dual USB and PS/2. Not so true anymore. So if you can't find a dual-function keyboard, you get a PS/2 (there's still lots about, including a two bins full at Elliott Electronics Surplus - a truly wizard place, right here in Tucson) and a passive adapter such as the AD-UP3. I also found that the dual-function keyboards are still being made, such as the KU200US by V7, which is available from many sources including Walmart.

Agon Light on the benchUnlike the PicoMite, the Agon Light boots (almost instantly) into a rudimentary operating system, MOS. Programs can be loaded and run from the MOS prompt, and the most common is the Z80 port of the legendary BBC BASIC. It seems there is also a CP/M port, and some people have got FORTH to run on the Agon Light. MOS recognizes something akin to AUTOEXEC.BAT so it can run a program at boot, and the stock SD Card file set loads BBC BASIC. I believe it is also possible to auto-run a BASIC program. There are free Z80 tools - assemblers and C compilers - so programs can be developed for the Agon Light in somthing more speedy than BASIC, but BBC BASIC is no slouch - the Byte Attic website has some benchmarks in which the Agon Light beats all contenders running BASIC programs. BBC BASIC is not quite as amazingly fully-featured as MMBASIC, but like MMBASIC it has GPIO commands.

The Agon Light is fixed to be a microcontroller as well as a microcomputer, and there's a 32-pin header providing access to several GPIO and some mixed function I/O. The Agon Light 2 modifies this a bit to add a few signals, so the connectors are not quite compatible. Agon Light 2 also adds a UEXT connector, which really just duplicates connections to some of the main port pins to another connector that allows attachment of UEXT peripherals. Apparently, Seeed Studio has "Grove", Sparkfun has "Qwiic", MIKROE has "Click", and Olimex has "UEXT".

The "terminal" program running on the ESP32 is built around FabGL and drives the VGA signals directly. The Video Display Processor (VDP) is built under Arduino for the ESP32. It is capable of several display modes, handles different fonts, and can even generate sprites. The stock demo programs, such as CUBE.BBC seen running above, show off the abilities and speed of Agon Light's video features. The VDP also handles the PS/2 keyboard and audio, but I have not yet got audio to work; I think I need a VDP update.

And that is perhaps the best thing about Agon Light: it is still under active development, and apparently very popular. Dean is working on MOS 1.03 and VDP 1.03 with imminent release. PCBWay and Olimex can't keep up with demand, not to mention the groups of hobbyists pooling to have PCB orders done. The primary forum for Agon Light is on Facebook, and it is very active.

While the Agon Light is primarily intended to be a boot-to-BASIC microcomputer, it certainly can be programmed in other languages, such as Assembly and C. BBC BASIC for Z80 has a built-in assembler, and Venema has produced a more traditional native assembler. Looking at the Z80 instructions (such as in this now-public-domain Zaks/Sybex "How To" book), it might be fun to play with that. Zilog has their Zilog Developer Studio II available for free; it's a cross-assembler and cross-compiler that runs under Windows (or WINE). I suspect that it's only a matter of time before Belfield or Venema or someone else ports ANSI C to run natively on the Agon Light. I also believe it won't be long before Python (especially MicroPython (already available for the Raspberry Pi Pico, if not natively for PicoMiteVGA) or CircuitPython) will show up on the Agon Light.

PicoMite

Picomite VGAWhen I came across the PicoMite VGA on Geoff Graham's site, I was hooked. It uses a Raspberry Pi Pico, a tiny board with their RP2040 microcontroller that costs $4! Irresistable! Well, I've got a few of those (of course). The circuit board is very simple and easy to reimplement and is entirely through-hole (except for the optional SD Card holder). Geoff is an Australian, and the equivalent there for Nuts & Volts is Silicon Chip, and I was pleased to discover that they offer circuit boards for the more popular projects, including the PicoMite VGA, which they have available for $5. Of course, it takes a bit more than that to have it mailed from Australia.

The PCB Construction Pack available on Geoff's site contains four designs, of which the simplest and the one most commonly presented is #1. The folder contains a set of Gerber files for having a PCB fabricator make the board, but even the low-cost DigiKey PCB Builder service costs more than that (and you can't just get one or two). Furthermore, when I uploaded the Gerbers for an estimate, it complained that the project lacked an Outline file. So I would be back to laying it out again in gEDA PCB. I took the easy way of getting pre-made boards from Australia.

The kit also contains an assembly guide with a parts list. If I had been careful, I could have found equivalents for these easily-found parts at Mouser or DigiKey, but again I took the easy way and just searched for the listed parts. Turns out Newark distributes Element14 in the States, and all these parts were in their catalog except that the connectors and some other bits actually had Farnell numbers (Newark is the US partner for Farnell), so some of these things came from England. A very international project! At the end, the parts were the majority share of the cost of this little project. The one surprise was that the trimming potentiometer comes in two flavors, in-line or staggered pins. The board uses the in-line pins version, and in my ignorance I bought the staggered version. Fortunately, the 200-ohm 64W trimmer with in-line leads was available out our own Elliott Electronics.

 PicoMiteVGA on the benchAssembling was a quick job of an hour. One of the Really Cool Things about the Pico and the RP2040 is it has on-chip USB and a Bootloader that presents itself as a flash drive. Copy the binary to the flash drive and it's programmed! The PicoMiteVGA firmware is available from Geoff's site, and in less time than it takes to tell, I had a power-up banner and a prompt on my VGA monitor!

The PicoMiteVGA boots directly into MMBASIC, which was originally developed for it's big brother, the MaxiMite. It seems the MaxiMite became a very popular gadget (Silicon Chip has a fair number of PCBs and kits for sale), and there are a lot of MMBASIC resources. The PicoMiteVGA User Manual from Geoff's site includes a tutorial and a guide to the commands in the PicoMite port of MMBASIC - it's a very powerful BASIC that includes built-in GPIO, I2C, SPI, talking to an LCD module, array math, quaternions (I guess you can connect a solid-state IMU to the PicoMite and write a navigator in MMBASIC), and so very much more. Impressive, really.

The best part of this project is how it makes a great many of the Pico's I/O pins (in fact, all that are not already being used for VGA and SD Card purposes) available on the 40-pin header. The PicoMite project calls for a vertical header, but I chose a shrouded right-angle header. I haven't had much of a chance to play with this yet.

Turns out that after loading the program, the USB behavior changes from being a flash drive to a serial port. With a terminal, commands can be sent over the serial port instead of (or in addition to) the keyboard. Furthermore, the SD Card is optional. It would of course be more convenient to put programs and other files on the PicoMite by copying them to the card from a regular computer, but the PicoMite also allocates part of its internal flash memory as a drive. When you enter programs from the keyboard, you can save them to a file directly (in fact, the program is written to flash from the keyboard and remains there, ready for use, through power cycles). You can also transfer files from a host computer to the PicoMite's internal drive via XMODEM over the serial link. That was a blast from the past!

Miscellaneous

I messed with Forth very briefly on the TI-99/4A. Stack processing, "reverse Polish logic". That's hard to get used to. But it's very compact and efficient, and it has been used "bare metal" on especially embedded controllers, acting as an Operating System. Seems there has been (maybe is) activity to get Forth running "bare metal" on Raspberry Pis. My impression of Forth was colored by what was then apparently the primary/only/preferred way of getting programs to run under Forth - the "screen" or "block". The little I've picked up about the state-of-the-art is that the "block" is receding and the use of regular files is taking over. Much more attractive.

List of Forth environments for various platforms. I knew about Forth on the TI. Seems there's a GNU Forth, but it apparently isn't an install option for Slackware.

List of Forth systems for various processors and controllers, including for RISC-V, with activity of just a couple months ago: Forth is still clearly a going thing.