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 specifications:
- Processors
- 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
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.
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
Jean-Luc started CNX Software in 2010 as a part-time endeavor, before quitting his job as a software engineering manager, and starting to write daily news, and reviews full time later in 2011.
Support CNX Software! Donate via cryptocurrencies, become a Patron on Patreon, or purchase goods on Amazon or Aliexpress
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!
I manually wrote machine code (I didn’t have an assembler) for Z80 on TRS-80 at school. Never again!
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.
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.
Just why?
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.
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.
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.
And how exactly should I multiply 7 by 13 using SHL trick which works only on powers of 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)
c+=a;
And you’re done, no magics involved. The same method is usable for powers by the way (using a multiply instead of ‘+’).
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.
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;
I’ve edited your comment to put your code in a “code block”. That’s the icon between the quote and chain icons.
I don’t think it worked, though. I still see it as normal text.
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 :(.
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
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:
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.
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.
[ 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) ]
Because
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.
You want them to emulate TI’s VDP?
not a 9918, a 9938 would make a fine VDP. 40 chars is so limited.
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?
I’d expect it to be a toy for old kids of that era.
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)
Size of the board and BOM+ economy of scale.
It’s a niche product for enthusiasts.
Congratulations on the product !!!
but, with one chip I learned a lot more
https://www.youtube.com/watch?v=VaT23TRO9U8
PIC32MZ(MIPS), VGA & Cache, 8-bit emulation, Porting XC32 to PlatformIO, Porting Arduino… and I experienced much more going back to the 1980s
Just get a TI-83/84 and call it a day.