A Z80 Computer At The Next Level

At the close of the 8-bit home computer era there were some machines produced that attempted to bridge the gap between the 8- and 16-bit worlds, either by providing a 16-bit device with a backwards compatibility mode, or an 8-bit one with enhanced capabilities to compete with its newer rivals. These products largely fell by the wayside in the face of new 16-bit only platforms, but they and the various enhanced versions of 8-bit processors that appeared over subsequent decades present a fascinating glimpse of what might have been. It’s a theme [Konstantin Dimitrov] explores with his Z20X computer project, a machine using the Zilog eZ80 processor running at 20 MHz, with 512 kB of external memory, and an interface for a 7″ TFT screen module.

The eZ80 is a more recent development, a pipelined processor capable of much higher clock speeds and addressing up to 16 MB of memory while maintaining software compatibility with the Z80. Had it come to market in the late 1980s it would have been a sensation, but instead it has appeared in embedded computers and perhaps of most interest to Hackaday readers, in TI’s line of programmable calculators.

The Z20X is designed to be a through-hole board, with the only SMD component the eZ80 itself. We can understand the motivation behind this, but at the same time wonder whether its likely builders in 2020 will be people unfazed by SMD assembly. It has a system of processor modules in case of future upgrades, and an expansion backplane with an option of an RC2014-compatible bus. There are also PS/2 keyboard and mouse connectors, a serial bus, and an on-board sound chip. The website is short on details of any software, but we’d expect it to work with the typical Z80 retrocomputer offerings such as a BASIC interpreter and the CP/M operating system.

This machine is likely to appeal to retrocomputing enthusiasts, but had it appeared even without the display in a previous decade it would no doubt have become an object of desire. It does however serve as a reminder that the Z80 line has been updated, and though most of us will have moved on it still offers a few chips that could be of interest. Meanwhile for a comparison, take a look at last year’s review of the latest in the range of RC2014 retrocomputer boards.

Thanks [yNos] for the tip.

40 thoughts on “A Z80 Computer At The Next Level

  1. Does this CPU also emulate a few bugs the original Z80 had? A later revision of the CPU fixed the bugs, which broke some fairly important business software. So Zilog had to put the bugs back in the next revision because they’d become features.

      1. There were some undefined op codes in the original Z80 that some designers were taking advantage of. I forget the exact functionality of those op codes, but they provided some operations. The operation of these op codes was modified in the CMOS version (and Z280 and Z380) and completely changed in the eZ80 version.

    1. That’s a depressing comment. The original ARM instruction set was so ‘pure’ that it was trivially learned in an afternoon – unlike the Z80 which took at least a weekend :-). Then I got exposed to the 68k, and I’m still in therapy.

      1. Original ARM was fine unles you want to do stuff that is linear algebra vector multiplications of data shared in area of memory where multiple cores might overwrite it and do that in as few cycles of processor possible.

      1. The SC126 is an excellent product, I agree. The product I’ve developed is very different, it’s a 50 MHz, 24-bit eZ80 CPU, with 1 MByte of fast SRAM, I needed this to support the particular things I wanted to do, and I wanted the business card form factor (with I/O expansion through a high density connector) to build a system around. But then you can pop the CPU card in your shirt pocket and take your world with you, away from the “dock” of the whole system at your desk. So it’s a particular set of choices that was right for me, and for a few other people who are using the system, the thrust was really “Self-hosted Arduino experience with Lisp”, but it is also a very naturally capable CP/M machine, although only a few people are using it that way. So thanks for your input, if the SC126 is the right thing for you, go for it, I am so impressed with the Tindie community and I’m also an enthusiastic customer. The price will come down on my products when I can build them 100 at a time, right now I build them in smaller batches.

          1. You’re quite welcome. I’ll be at the Vintage Computer Festival in Seattle, March 21-22, and other similar events throughout the year. I also often go to talk to Lisp and Functional Programming user groups, so if you know of an event that might be a good place to talk about vintage+Lisp+embedded+maker :) then I’m all ears !

        1. On the Zilog eZ80 evaluation board I have (see my website at baremetal dot engineer) the Flash rom runs with 7 wait states and ISTR the static ram runs at 2 or 3 wait states… You said “1 MByte of fast SRAM”… I wonder what flash and ram devices you are using…?

          1. The flash is the flash inside the eZ80, it’s running with 4 wait states, but the SRAM is running with 0 wait states (the Zilog development board I used when prototyping, before I had my board, required 1 wait state). I’m using SRAMs from ISSI, the part number is IS61WV5128EDBLL-10TLI.

          2. “I’m using SRAMs from ISSI, the part number is IS61WV5128EDBLL-10TLI” Ok, without looking it up, that looks like a 10ns part… When I firsted started with the Z80A in the early ’80’s, I used 450ns Eproms…

    1. I really hope 64 bit stays around. I can see why we ditched 32, but 64 is good enough for just about any imaginable purpose. At some point we need to start making things usable for more than a few years, now that we actually have tech that doesn’t suck so much you want to upgrade as soon as you can.

        1. “18 exabytes ought to be enough for anybody.” :- eternityforest, February 24, 2020

          Is it me or is the air getting thinner in here, chest tightening, walls closing in… damn, getting a number on it makes it feel claustrophobic already. :-D

  2. Great idea executed nicely with the hobbyist in mind. The only things I would need would be a better sound chip, preferably a YM2151 and some sort of CRT compatible video option.

  3. So, I’m curious – does this ez80 take 11 clock cycles just to get a 16 bit word off the stack? Seems like a job that could be done in 4, maybe even 3. But supposedly that 11 cycles was the fastest instruction (surely NOP was faster?) because .. idk, architectural reasons. 50MHz is an improvement, but it’d sure be nice if that’s not wasted faffing about like the original.

  4. NOP is one cycle, per the manual, PDF page 258, printed page 249 (Zilog UM0077, available at zilog.com). The eZ80 is very cycle-efficient, with a 24-bit ALU. The only reason POP takes as many cycles as it does is that you still need a full cycle for each 8 bits popped off the stack to traverse the data bus. The post I was replying to stated “…But supposedly that 11 cycles was the fastest instruction (surely NOP was faster?) because ….” and so my reply was about POP, not NOP. The Z80 took so many cycles due to the 4-bit ALU it had. Ken Shirriff’s blog ( http://www.righto.com/2013/09/the-z-80-has-4-bit-alu-heres-how-it.html ) has the full write-up. The Z80 needed a 4-bit ALU because that’s all that would physically fit onto the die; but that doubles the number of cycles to do 8-bit arithmetic, including the stack pointer math needed for POP. This was one of the many tradeoffs of the old Z80 design; the eZ80, while not perfect in my opinion, is a much more efficient design.

  5. Thank you all for the comments. I wasn’t actually aware of this article until yesterday, hence the lack of answers to the few questions above.
    Z20X has no ambition to enter the “big-bigger-biggest” race, so running at maximum speed is not the priority. Instead, I aimed at making something that could be assembled from part 1 to part Last at home by any hobbyist. It is also an educational project so “simple” was the ultimate factor in the design.
    There is no software ported to it yet, but I hope with the help of some great people around there will be something soon.
    I invite everyone interested to join the online group: https://www.facebook.com/groups/509573713269277

  6. Z20X is a great-looking and fun design. It’s not the chip I actually have on-hand (6 EZ80F91AZ050SG in dry-packs, four of the EZ80F917150MODG modules), but most of the software would port over. The F91 has more pins, runs at 50MHz, etc, but one of the cool things about this hobby is that each developer/hobbyist is free to pick their own favorite. But this design looks clean, and most importantly it looks like you’re having fun with it.

  7. Talking about the eZ80, you all may find my “personal passion” website @ http://baremetal.engineer of interest…
    Particularly this file: http://baremetal.engineer/baremetal.software.engineer.pdf
    and perhaps even this one: http://baremetal.engineer/baremetal.blockchain.engineer.pdf

    The eZ80 clocked at 50MHz is good for 80 mips

    I have SHA-256 running in assembler within a Forth environment… For future blockchain work…

    Enjoy!

    Regards David a.k.a Baremetal Engineer…

  8. Thank you all for the comments. I wasn’t actually aware of this article until yesterday, hence the lack of answers to the few questions above.
    Z20X has no ambition to enter the “big-bigger-biggest” race, so running at maximum speed is not the priority. Instead, I aimed at making something that could be assembled from part 1 to part Last at home by any hobbyist. It is also an educational project so “simple” was the ultimate factor in the design.
    There is no software ported to it yet, but I hope with the help of some great people around there will be something soon.

    good
    https://www.qx-motor.com
    https://www.bluetoothabc.com

Leave a Reply to ASasCancel 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.