Laptop Like It’s 1979 With A 16-Core Z80 On An FPGA

When life hands you a ridiculously expensive and massively powerful FPGA dev board, your first reaction may not be to build a 16-core Z80 laptop with it. If it’s not, perhaps you should examine your priorities, because that’s what [Chris Fenton] did, with the result being the wonderfully impractical “ZedRipper.”

Our first impression is that we’ve got to start hanging around a better class of lab, because [Chris] came by this $6000 FPGA board as the result of a lab cleanout; the best we ever scored was a few old Cat-5 cables and some power strips. The Stratix FPGA formed the heart of the design, surrounded by a few breakout boards for the 10.1″ VGA display and the keyboard, which was salvaged from an old PS/2. The 16 Z80 cores running in the FPGA are connected by a ring-topology network, which [Chris] dubs the “Z-Ring”. One of the Z80 cores, the server core, runs CP/M 2.2 and a file server called CP/NET, while the other fifteen machines are clients that run CP/NOS. A simple window manager shows 80 x 25 character terminal sessions for the server and any three of the clients at once, and the whole thing, including a LiPo battery pack, fits into a laser-cut plywood case. It’s retro, it’s modern, it’s overkill, and we absolutely love it.

Reading over [Chris]’s build log puts us in the mood to break out our 2019 Superconference badge and try spinning up a Z80 of our own. If you decide to hack the FPGA-est of conference badges, you might want to check out what [Sprite_TM] has to say about it. After all, he designed it. And you’ll certainly want to look at some of the awesome badge hacks we saw at Supercon.

Thanks to [yNos] for the tip.

38 thoughts on “Laptop Like It’s 1979 With A 16-Core Z80 On An FPGA

        1. that always bothered me, because combustion produces many compounds known to cause cancer. But the goofy system in California doesn’t warn people of every health risk, and sometimes warns them of things that are insignificant risk.

    1. Why wasn’t the first comment a KUDO’s to Chris?

      I looked at the datasheet for the FPGA dev board and its amazing in itself !

      Stitching together pieces drawn from “here and there” then stitching them all together abd still using only 7% of the LUTS? Wow! Great work! Thanks for sharing the fun in the imagination that you created and manifested.

      I’d love to see it in action. Post a video?

      Peace and blessings,
      Johnny

  1. Some minor points of clarification =)

    – It’s a PS/2 protocol keyboard (as in IBM, not Sony)

    – I don’t have any good photos of it, but the terminals actually work like sprites and can be positioned and overlapped arbitrarily. I set it up by default to just show 4 in a split-screen mode, as I haven’t really had a need to have more than 4 programs running quite yet, but the window management hardware is pretty flexible.

      1. Is the source code for SymbOS actually available? SymbOS is extremely cool, but it’s pretty much the opposite of this approach – they throw a lot of memory at a single CPU and then time-slice it like a ‘normal’ OS. In the Zedripper setup each program has completely unrestricted access to its memory and even the ‘server’ is a single-tasking CP/M application.

    1. Rather envious that is neat but no way I’m getting FPGA that capable anytime soon..
      I really like the look of the windows it reminds me of using Vim, simple but effective, and with the overlap potential very cool.
      The build itself is just right, I hate stupidly small thin packed devices this simple but elegant construction method leaves room to tinker as you go, with a nice if boxy practical look. And with it being FPGA if you tire of Z80 you could tell it to be something else.

      1. Thanks! Yeah, I definitely wanted to leave a lot of room to tinker (both in the case and in the FPGA) – the only real space constraint was that it had to fit in my backpack so I could use it on the train, and it does that just fine. It probably only weighs a little bit more than my ‘normal’ laptop, it’s just ~1/3 the density.

  2. I can’t see creating 16 Z80 cores needing a Stratix FPGA. Even at a couple of thousand LUTs each the whole lot should fit comfortably onto a mid sided Cyclone 10, or even a Max 10.

    1. The Z80 cores themselves are a tiny amount of logic (probably ~3% of available LUTs), but the 1MB of SRAM (64KB x 16 CPUs) is pretty hard to come by unless you have a monster FPGA. This design uses all of the big M144k memories (which still leaves ~2MB of M9ks remaining), although the main motivation for using it was that I had it lying around.

  3. Stellar and unique build, very cool…

    …BUT…

    Dan, 99% of the time you’re an awesome writer, you’ve done some damn good writing on my work and that of many others… but I’m sorry, we gotta talk about that title there.

    The “dominant computer” of 1979 depends entirely on what market segment one is discussing. In the educational sector, the Apple II was of course the hot choice. In business… probably a mixture of the early TRS-80 non-CoCo models and various Commodore PET systems. In the home market, though… that’s very complicated.

    While the famous S-100 Bus Systems (kicked off with the MITS Altair 8800 and the IMSAI 8080) did get extremely popular, the formal standard for them, IEEE-696, was not released until late 1983. There was an /informal/ standard released, mind you, but that hardly qualifies as anything here — while those machines did indeed get popular, in 1979 they weren’t there yet. Further, the Commodore VIC-20 wouldn’t be released until 1980, and the C64 wasn’t launched until 1982, so they simply weren’t around yet. Sinclair was also largely a 1980 phenomenon, at least at the start. Further, modern clamshell laptop designs are typically traced back to the GRiD Compass 1101, released by GRiD Systems in 1982. Portable computers wouldn’t take off in *any* meaningful form till the Osborne 1 in 1981.

    That leaves an awkward mixture of /very/ early S-100 Bus machines, Atari 400/800 systems, older KIM-1s and their compatibles, and the occasional repurposed business machine.

    Further, the idea of multicore CPUs of *any* kind, I think it’s fair to say, had not yet been invented in 1979.

    Ultimately, the only 1979ish thing about this build is its use of CP/M as the OS and that its processor system is at least based on the Z80 CPU.

    1. IBM S/360 Model 67 (and a few other models) had dual-CPU architectures, and by 1977 these machines were considered obsolete. So no only was multi-processor and multi-core something that was known in the 1970’s, it was old hat by the late 70’s. The newer System/370 architecture had several mid-range models with dual-cpu in the IBM 4300 series, and were fairly common in businesses in the 1970’s.

      As much of an innovation the Osborne 1 was, in my neck of the woods the Kaypro was the dominate portable machine and almost as popular as the non-portable TRS-80 Model I & III. Anything that could run CP/M was very useful in that brief era of mid-to-late 1970’s for word processing, remote access (replacing the teletype printer), and for some industrial controls (especially in the S-100 form, there were a whole bunch companies making peripherials for that de facto standard)

      Peak 8-bit home computers was a very narrow range of years. The 6502 based systems overlapped the Z80s and ended up dominating in terms of public perception and volume, except in a few regions where the MSX hung around unusually long. (MSX1&2 were great little systems, way better than the CP/M stuff that was around 5 years prior)

      Z80 and 6502 were both very popular for homebrew and kit computer back in the late 70s and early 80s because they were relatively affordable, lots of kits available, a good builder community around them, and they didn’t need a lot of support chips to get the basics working. That last bit was important because as you’re building you needed to test things out. You might have 30-60 hours of assembly into one of these kit computers. And having something working after a few hours was key to keeping motivated and in saving your sanity. Home builders didn’t have the resources to debug really nasty problems, better to build incrementally in that case even if it’s less efficient from a manufacturing point of view.

      My particular obsession lies in the Z80+TMS9918A combination and systems similar to that. So everything from MSX1 to ColecoVision and Sega Master System. If only I had laptop with quad Z80 and quad V9958 … :-D

      1. Thanks for an educated (and educating!) reply. I’d not thought to consider larger systems in the research I’d done for that comment… but I’m glad that *you* did, because you not only caught an error of mine, but you taught me something as well :)

        I guess I should clarify, given that, and the comment farther up the page about multi-processor Z80-based arcade machines, that I specifically meant “multiple CPUs of the same type in a home computer”… if there were any of those in the 1970s or 1980s, I’m not aware of it — or, at least, I can’t recall any.

        The first microcomputer systems with *any* combination of multiple CPUs (early microcontrollers such as the 8042 don’t really count here. would technically be either probably the Commodore 128, which had a 6502 variant and a Z80 straight from the factory, or one of those “run this other OS on your computer even though it’s made for totally incompatible hardware!” type cards, like the ones that let you run Z80-style CP/M on an IBM PC or an Apple II, in a post-unsg%

        Oh – were there any home micros out there back *before* the C128 that had moee than one CPU?

        As an aside, Kaypros didn’t start until 1981, IIRC. They were, however, almost certainly built better than Osbornes — I’ve mucked around in an Osborne before, and TBH I wasn’t too impressed (too much cheap plastic) — but I’ve never been around a Kaypro IRL before. I hear the casework is metal, though, which instantly elevates it head and shoulders above an Osborne.

        1. You’re right on the mark with the Kaypro being a later machine (1981, I think I saw it in ’82). It was a pretty nice system, ignoring the quirks that all old computers had. It was a better combo than the usual kit boartd 8085/Z80 + Lear Siegler dumb terminal that people so often used in the late 70’s and early 80’s for these CP/M systems.

          C128 would have been pretty late in the game, 1985. I would put the BBC Micro ahead in terms of multiple CPUs in a widely used home system because you could add second processor to its “Tube” interface. Which was a pretty sophisticated bus to get things like 6502 and Z80 to talk to each other nicely. Could accept quite a few different CPU architectures on that expansion bus.

          And there were Z80 cards for Apple II. Some of them included 80-column support making it a pretty attractive upgrade for people wanting either CP/M or 80-column or both. Came out in 1980, but I don’t think it picked up much of a user base until maybe ’83-’84.

          Looking back I think those were some interesting times for computing technology for the masses. It was so hard during that time to know what was available and what was innovative versus what was going to be an expensive gimmick you didn’t need. Sadly I didn’t do much other than use the machines and play games on them when they were new. Eventually I figured out how to really program anything stuff (beyond BASIC), but that was much later when the i486 was the new hotness and all I could afford was an 80286 AT clone.

        2. The Intertec Superbtain was a dual Z80 CPM machine from 1979, with a common rom and some shared memory. One processor ran the disc controller, and the other the application. I once spent an interesting few hours helping the owner modify the system for higher capacity discs, using a Nascom as a rom emulator with assembler support.

        3. How about Epson HX-20? It’s often credited as being the first “notebook/laptop” computer and had two Hitachi 6301 (Similar to Motorola 6801). Work was split between the two microprocessor / microcontroller with a serial port between them for communication. Released 1981/1982. It had a serial port “Docking Station” that allowed larger video to be displayed on TV instead of the built in “tiny” LCD.

        4. Ohio Scientific had a configuration where there were both 6502 and Intersil 6100 (PDP/8) processors available in a system. I don’t recall if both processors were active at the same time or if you had to select between them. According to the wikipedia article the Challenger III board had a 6502/6800/Z80 but you had to boot up between them and only one was active at a time.

      2. Although mainframe computers of the time had multiprocessing and other features that we take for granted in 21st century personal computers, the first microcomputers were very crude by comparison. Everything was sold piecemeal, and often in kit form. The MITS Altair 8800 wasn’t the first microcomputer ever made, but because of a “Popular Electronics” feature on it, it became the most famous, and 3rd party support and clones soon followed. The Altair 8800 used Intel’s 8080 CPU. MITS had eyed Motorola’s M6800 chip set, centered around the MC6800 CPU, but it wasn’t ready in time. MITS later made the Altair 680, using the MC6800, but it wasn’t nearly as successful.

        The Altair 8800 attracted talented software developers like Bill Gates and Gary Kildall, who supplied a line of BASIC interpreters and the CP/M operating system for the emerging platform. Although Microsoft (Gates, Allen) ported their BASIC to other CPUs, CP/M remained tied to the 8080 ISA in its 8-bit incarnation.

        A number of Motorola engineers who had worked on the M6800 project joined MOS Tech and produced a CPU that was pin-compatible with the MC6800 CPU, and could use M6800 family support chips. Intel and Motorola had a price-fixing agreement to sell their CPUs at $380 each. By stripping their CPUs to the bare essentials, MOS Tech was able to sell their chips for as little as $20. A lawsuit from Motorola nixed the 6501, but the 6502 went on to be the CPU of choice for entry-level microcomputers. Many potential computer buyers wanted turnkey systems at much lower prices than S-100 bus machines. The 6502 made them possible.

        An Intel engineer left to join Zilog and make the Z80 CPU, but for very different reasons than the ex-Motorola team. The Z80 was to be a far more capable CPU than the 8080, for embedded systems. It succeeded at that, but by being 8080 compatible, and having a line of Zilog support chips a la the M6800 line, the Z80 soon became the preferred CPU for CP/M computers, even though CP/M never used the enhanced instruction set.

        The Z80 was never capable of multiprocessing. Add-on coprocessors like the Microsoft SoftCard for the Apple II were popular for bringing CP/M capability to 6502 computers, but the coprocessor ran as a separate environment, using the host computer for I/O and as a “smart” terminal. Some game consoles used multiple Z80 chips in coprocessor configuration, with one being the system CPU, and the others offloading sound, graphics and other tasks. Understanding the difference between coprocessing and multiprocessing is important.

        The “Zedripper” is also not a multiprocessor implementation of the Z80. It is essentially an implementation of client/server the hard way. Once I had considered making an ad-hoc parallel computer out of a hundred or so AT&T 6800 computers that I had laying around. The idea was to try to make a big V86 mode machine the hard way, but making the hardware & software glue would have been prohibitive. (I had run real mode Minix 1.5 on these 8086 machines, which wasn’t a challenge.) It would be neat to see a NUMA Z80 machine, but in order to do it, you’d need to build an OS from scratch to run on it.

    2. Millenial, Please.

      Or I’ll go on and on about how I spent a few years writing rom code, bios and bdos for cp/m with Neil Colvin in his basement. He later asked me if I wanted to start Phoenix Technologies with him and I said it sounded boring. Oh well, no millionaire status in my 20’s I guess.

  4. OK, this is an old thread, but for what it’s worth… in about 1982 we built multi-processor Z80 machines to control theater lighting systems. The hardware was STD-Bus. We had a “coprocessor” board which was quite simple, a single Z80 and 64K of RAM. It looked like a memory card to the STD-Bus and we had a 16k-page sort of MMU/mapper on the master CPU. For the lighting application the master would communicate via a shared I/O port thing and trigger a set of fade calculations on the slave, and it would signal when it was done and the master would tell it to send it’s data out a serial port to the dimmer racks in the back of the theater.

    I built a multi-CPU CP/M development system with a “spawn” command which took a CP/M command and CPU ID as input. It would launch the command on the designated CPU and capture output in a file, signalling when it was done. No interactive access to the slave CPUs, but for long compile jobs it was quite useful.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.