Building a retro-future computer.

· 687 words · 4 minute read

The 8-bit guy described his dream computer some time ago. I thought it was an interesting project, but I wanted something different from this sort of old-new computer. Here’s the design premises I started with, and some ideas I had for achieving them.

A. What would computers look like now if they had continued going to a programming prompt on boot up in the 16-bit era instead of going the CP/M, Unix, or Mac route, and continued having a boot to programming all the way up to the 64 bit era.

  • It probably wouldn’t still be using Basic, as that language is very old and out of fashion now, and not used by beginners anymore. So instead, it uses Python. (Lua could also be an option.)
    • Micropython exists and runs on very small systems with a very thin OS like FreeRTOS that is tiny and mostly easy to understand. It even supports inline assembler code right in the python code.
  • Using entirely off-the-shelf modern chips, including a new processor design.
    • Risc-V is the latest architecture design on the block. There’s an off the shelf component for $8 that has a Kendrite 210 64bit Risc-V 400mhz dual core processor.
    • The devs of that module have an easy to use one called the MaixDuino that I can use for prototyping. It’s $20 for that.
  • 2D accelerated sprite graphics, similar to the old 8-bit and 16-bit systems predating the PC.
    • For off the shelf parts, there’s a chip called the BT815 that is a sprite engine. It’s the main component of the Gameduino 3x 7" unit. I haven’t yet found any other off the shelf sprite engine chips still in production other than older ones from Bridgetek/ftdi that are mostly compatible with this one.
    • To make it even more authentic, you can just write a thin “poke/peek” api where you can write blocks of memory to the gameduino to control its behavior. It acts like an SPI memory device to the controller it’s connected to.
    • The downside is it’s not outputting to a monitor, but the first version can be a little laptop powered by a USB power brick.
    • For the first run, the BT815 has audio output built in including playing notes and samples. Need to see how much you can squeeze out of this chip for music use.
    • Maybe there’s a way to translate LVDS to a vga or dvi output in the long run?

So the first design is a keyboard controller for a salvaged laptop keyboard using some sort of microcontroller. Laptops mostly use standard matrix keyboards, so you can use any spare matrix keyboard you have on hand with an adapter for whatever ribbon connector it has. I might even use a Maix Bit board so that it’s basically 4 Risc-V cores running the tiny laptop. A MaixDuino, connected to a Gameduino 3x 7", the internal Maixduino SD card is used for the OS and user storage, while the Gameduino 3x’s sd card will be for users to plug in game cards, and for temporary storage of game assets if they’re writing their own software. The Maixduino can read both SD cards, while the gameduino can only read the gameduino’s sd card for sprite sheets and graphics. Should fold up like a tiny netbook. The programming prompt will basically be a VT100 compatible terminal with color, and then when you go into one of the game modes, they’ll have complete control over the sprite engine chip. It also has minimal internet support with an ESP32 wifi chip, and Python has tons of network libraries to use. Current price for the prototype without the case, battery, and keyboard controller, $77. It’s possible that with making a custom board that has the BT815 ($5) and Maix module ($8) directly on it, that it could be under $50. Just add appropriate keyboard, battery, and lcd display, in a shell.

The only real effort up front is the keyboard driver, the documentation/api for talking to the gameduino3x from python, and the vt100 terminal software. And later on, designing a case. I might make the first version from laser-cut wood.