CERBERUS 2100 is a BASIC-programmable educational board with Z80 and 6502 8-bit CPUs

Olimex has just announced the launch of the CERBERUS 2100 open-source hardware, educational, multi-processor 8-bit computer with both Z80 and 6502 CPUs, as well as a Microchip AVR processor serving as an I/O controller.

The CERBERUS 2100 features several CPLD and is fully programmable from the lowest level (individual gates and flip-flops) up to BASIC interpreters running on the Z80 and 6502 CPUs. Olimex did not design this themselves as the hardware design is from Bernardo Kastrup (aka TheByteAttic), while BASIC interpreters were written by Alexander Sharikhin (6502) and Dean Belfield (Z80).

CERBERUS 2100 8-bit computer board

CERBERUS 2100 specifications:

  • Processors
    • Zilog Z80 8-bit microprocessor at 4 or 8 MHz (user selectable)
    • Western Design Center W65C02S 8-bit microprocessor at 4 or 8 MHz (user selectable)
    • “FAT-CAT” (Custom ATmega328pb) Microchip 8-bit AVR ATMega328PB microcontroller at 16 MHz
  • CPLDs (ATF1508AS-7AX100)
    • FAT-SCUNK (Scan CoUNter and clocK) and FAT-CAVIA (ChAracter Video Adapter) for video circuit connected to a 25.175 MHz oscillator
    • FAT-SPACER (Serial to PArallel ControllER) for signals, clocks, serial<->parallel conversion connected to a 16 MHz oscillator
  • Memory – 64 KB of user-addressable RAM
  • Storage – MicroSD card slot with filesystem built into the BIOS (AVR)
  • Video output and graphics support
    • VGA video output with 320×240 resolution (note: actually 640×480 with 2×2 pixels)
    • Character-based with 40×30 individually addressable characters
    • Up to 8 simultaneous screen colors
    • On-the-fly user-redefinable character bitmaps for tile graphics
  • Debugging – 3x JTAG connectors
  • Expansion – 40-pin expansion slot with generic I/O protocol going through FAT-CAT and FAT-SPACER CPLDs
  • Misc
    • Standard PS/2-compatible USB keyboard
    • Buzzer
  • Power Supply – 5V via USB-C port

CERBERUS 2100 Components Connectors

Z80 and W65C02 motherboard
Block diagram

The BIOS code is written in C and compiled under the Arduino IDE, and excluding video signals, the FAT-CAT performs all I/O functions such as file system operations, keyboard & expansion control, and
sound output, and supports DMA transfers the FAT-SPACER.

You’ll find the hardware design files, firmware, and detailed documentation on GitHub and TheByteAttic website. People who prefer video content may also watch the 45-minute video introduction below.

YouTube video player

Bernardo Kastrup provides all files for manufacturing but does not do that himself, instead, Bulgarian company Olimex handles that and is currently selling the CERBERUS 2100 board for 219 Euros

Share this:
FacebookTwitterHacker NewsSlashdotRedditLinkedInPinterestFlipboardMeWeLineEmailShare

Support CNX Software! Donate via cryptocurrencies, become a Patron on Patreon, or purchase goods on Amazon or Aliexpress

ROCK Pi 4C Plus

29 Replies to “CERBERUS 2100 is a BASIC-programmable educational board with Z80 and 6502 8-bit CPUs”

  1. What a joy to see that the Z80 is still going! I remember writing machine code for the beast back in the early 80’s with cpm as the OS. Halcyon days!

      1. Was it something about Z80 assembler that no one seemed to be able to get his hands on? I was using a debugger of a sort (can’t remember the name) to write code, at least it understood ASM commands entered manually. But I had to calculate all damn addresses manually.

    1. I still remember hex opcodes of many Z80 instructions 🙂 CD/C9/7E…
      I have fond memories of those days, but I would not get back to them. I still do some assembly, but with real tools and on powerful 64-bit processors.

    1. For number of reasons, but I can tell you two: It’s great hoby and way to spend free time AND programming machines with skinny resources provokes thinking and good programming habits.

      1. There are plenty of other machines with skinny resources one can train good habits on. With all due respect to Z80, I don’t want to go back to CPU, which doesn’t have division and multiplication commands, for example.

        1. While I’d avoid such CPUs for any project, such constraints are great to learn the principles of computing. Performing a 8×8 multiply using add+shift is easy enough to learn the principle, it explains the impacts of dealing with double-size registers to store the result, it shows the benefits and costs of replacing this with a lookup table (slightly more than 64kB are needed for all products with complex storage), etc. Once you figure this you can easily learn modern machines with SIMD and all that stuff.

          1. And how exactly should I multiply 7 by 13 using SHL trick which works only on powers of 2?

          2. Just the way it’s regularly done in software multiplication, which is the same as we learn at early school to do by hand:

            a=7; b=13;
            for (c=0;b;b>>=1,a<<=1)
            if (b&1)

            And you’re done, no magics involved. The same method is usable for powers by the way (using a multiply instead of ‘+’).

          3. and by the way that’s a great example of why such constraints are interesting, they force developers to study the minimally required computer basics they might have skipped when jumping on high level languages a bit too fast.

          4. Sorry for the indent that makes it unreadable. Trying again as a one-liner instead:
            a=7; b=13;
            for (c=0;b;b>>=1,a<<=1) if (b&1) c+=a;

          5. I’ve edited your comment to put your code in a “code block”. That’s the icon between the quote and chain icons.

          6. Indeed it won’t let me update the comment. It shows normally right after I edit, but when I refresh the page it’s gone :(.

      2. Which I think is the best reason. Lazy devs these days are lazy, enough said. I’ve always preferred 6502 over Z80, that’s not important. Thing is, you have a very limited resources, now do boot up your computer with a cassette tape or if your parents are rich enough, with a FD. And not with a magic keyboard key complication. How would you tell your computer to do that. Who cares

      3. I would be careful with “good programming habits”: it mostly teaches you how to program severely limited “walled garden” systems.
        For instance these days you should not program in assembly at all (except for small routines), it’s both error prone (32 or 16 registers to keep track of) and not future proof (AArch64? x86-64? RISC-V? The-Next-Big-Thing?).
        And all those technical limits require you to use a lot of hacks to make things work (bank switching, cycle counting), which are not applicable today anymore.
        But most importantly: it does not help AT ALL with learning about and understanding the challenges of modern computing:

        • Caches, which need to be considered both for correctness (cache maintenance for non-coherent systems), but also performance (alignment and cache colouring, for instance).
        • Parallel execution (SMP/multi-core), which require the correct use of synchronisation primitives or libraries, and a clever algorithm design to make this useful in the first place.
        • Memory ordering, so the correct use of memory barriers, to work on both strongly and weakly ordered systems.
        • Vector computing: the utilisation of wide execution units, for best computing throughput.
        • The use of offload compute engines, as in GPUs or NPUs.
        • Portable programming, to be able to use your program on your next computer, and on your neighbour’s system.

        So this leaves mostly nostalgia and the satisfying feeling that you can (almost) completely understand a system and its software. Which is cute, but not helpful for understanding of computers that are useful today.

        1. All the points you mentioned are important, if not critical. The only thing is that those who don’t grasp the most basic stuff do not grasp that either. I don’t count the number of times I heard “so you’re trying to save 100 nanoseconds?” with me responding “if it’s every 100 nanoseconds it counts a lot”. Explaining the cost of a cache miss to someone who doesn’t even know what an instruction is is, sadly, often a waste of time. So I do value the basic stuff as much as the rest, for being a necessary prerequisite.

        2. [ who would tell being an expert for even only bootloader or Kernel (hw drivers, patches, security) for all these ‘(AArch64? x86-64? RISC-V? The-Next-Big-Thing?)’ platforms and its variety?

          ~only two generations distance from start (Z80, introduced to markets, ~1976) ]

  2. Video is a bit disappointing. No 80 characters per line, so no CP/M or serious other software.. No bitmapped graphics, limits on redefinable characters. With so much CPU power besides the 6502 and CPU, I had hoped for more.

  3. Is it some kind of evil joke or an equivalent of wooden toys for children of hippy families? Why would you torture your kid with BASIC of all things?

  4. Only €219, what a bargain for such amazing specs! (kidding) How is going to compete with e.g. Raspberry Pi Zero (1GHz CPU, 512MB RAM) for less than €30? (not to mention old hardware emulators)

Leave a Reply

Your email address will not be published. Required fields are marked *

Khadas VIM4 SBC
Khadas VIM4 SBC