We feature hundreds of projects here at Hackaday, and once they have passed by our front page and disappeared into our archives we often have no opportunity to return to them and see how they developed. Sometimes of course they are one-off builds, other times they wither as their creator loses interest, but just occasionally they develop and evolve into something rather interesting.
One that is taking that final trajectory is [Just4Fun]’s Z80-MBC, a single board computer with only 4 ICs, using an Atmel microcontroller to simulate the Z80 support chips. It has appeared as a revised version, on a smart new PCB rather than its original breadboard, and with built-in SD card and RTC support through readily available breakout boards, and banked RAM for CP/M support. You may remember the original from last year, when it was also a Hackaday Prize entry and stage finalist. From a Hackaday perspective this is particularly interesting, because it shows how the Prize can help a project evolve.
The Atmega32A uses the Arduino bootloader with programming through the ICSP port, and full instructions are given in the hackaday.io project page alongside all the files required to build your own board. There is no mention of whether boards can be bought, but we’d say this could be a commercial-quality product if they chose to take it in that direction.
Would it be possible to use it as an MSX?
no way
You’d need to add a TMS9918A VDP plus other peripheral hardware. Here’s a start http://codehackcreate.com/archives/592
Totally ! I mean, if an “headless” one works for you :))
An MSX-compatible computer would need more chips, as explained on Wikipedia : “This standard consisted primarily of several off-the-shelf parts; the main CPU was a 3.58 MHz Zilog Z80, the Texas Instruments TMS9918 graphics chip with 16 KB of dedicated VRAM, the sound and partial I/O support was provided by the AY-3-8910 chip manufactured by General Instrument, and an Intel 8255 Programmable Peripheral Interface chip was used for the parallel I/O such as the keyboard.”
To comply with this summer’s pervasive “seen on hackaday.io” policy, here is an example in a modular-style approach : https://hackaday.com/2018/06/22/theres-rc2014-life-in-the-tms9918a-display-chip-yet/
I really want to get into a retrocomputer like this, but where is a good place or format to start asking questions?
I have a pretty good idea on the theory, but I have so many questions like “why should i use A instead of B”, but the 20+ year old datasheets and abandoned projects on the internet aren’t enough to answer them.
eevblog forums are a great place to ask questions like that
Try RetroBrew Computers at
https://www.retrobrewcomputers.org/forum/index.php
There’s a forum at: http://6502.org/
Mainly for the 6502, of course, but I think other microprocessors are discussed there.
i am a 62 year old design engineer .I used to build z80 as multiserial rs232 communication board board controller in a very primitive 386 based processor based for xenix 386 enviroment .this was 1986 year. I was learning hardware those times .
In the 1980s I did a lot of ASM programming on the Z80. It is rewarding to see the chip still alive and well 30 years later
(I’m also a Doug)
I did a lot of asm on these too, having not much choice as for small affordable embedded computers, the Z-80 was pretty much “it’ for quite some time, and our government customers demanded their fancy toys.
Then I got to program chips with this new idea of an orthogonal instruction set (actually not new, see PDP-11 for example), where you know, if you could add register A to register B, you could do the reverse just as easily. After that, going back to Z-80 seemed like a very bad dream. Sure, it was an excuse to use up all your cleverness, but…
Remembering whether you needed a result in BC, HL or DE to avoid a push-pop to move things around…because cycles really counted, was not my idea of a good time.
But it’s good they exist still. I don’t recall needing banked memory to make CP/M work, though.
When the computers maxed out at 32K or 64K directly addressable RAM, the hardware had to get clever to be able to use more.
Sometimes I daydream of how it would be to build a computer cluster consisting of hundreds of small single board computers. Each one optimized mostly for energy efficiency, and then use them for parallel work loads. Rather niche (all though still something useful in general computing environments where one simply runs many independent or loosely related tasks. But memory access will though benefit from non uniform memory access principals), but still something I find of interest.
Closest for consumers is the GPU, and multi-core processors, for diminishing amounts of return.
Why not go for it? It can be done for pretty cheaply–single-chip computers like AtMega CPU’s are less than $2 ea. at single quantities from Digikey while more powerful STM32 CPU’s are around $5 ea. Raspberry PI Zero’s are $5 ea (if you can get them.) You could design blocks that are a PCB with an array of them and then connect the blocks to create bigger arrays. My people have been building clusters using Arduinos and Raspberry PI’s.
The biggest issue is that general computer tasks aren’t easily parallelizable as they might seem at first glance, and the overhead of managing and moving data and programs around the cluster can eat into or overwhelm any performance gains vs. a single fast CPU.
There’s no fun if you don’t try, though.
I have been thinking of doing such a project.
Have looked at using some PIC32s for it, since they have support for fairly high speed serial links, and have a decent amount of ram. Not to mention support fairly high core clock speeds. (Though, a Raspberry pie wins over it with ease if we talk about raw performance.)
how would this compare performance-wise to just emulating the z80 on a $5 raspberry pi zero?
That’s not the point. The point is building and coding a SBC old school style that you can take pride in.
You can’t take pride “See my Pi Zero? It’s emulating a Z-80 and I didn’t have to do anything except download a app”. That’s not being a maker or hacker. Just another consumer loading a app like Candy Crush.
Performance wise, it’s irrelevant. Many real world tasks(excluding video, voice, etc) can still be done by 8 bitters.
running existing z80 code an actual z80 is just as much “download a app” as running it on a z80 emulator. running z80 code that you write yourself is also very similar on either board. the point is that it’s not worth paying $4 if a $5 board can run the exact same code better.
You’re on the wrong site, buddy.
As I cut my novice Silicon Valley teeth on the 8085, and followed the Z80, I miss them like I miss 60’s little Hondas. Many of us keep these running. Almost too bad our OBD-II’s and everything got so frig’n complex. “Read-ID.” $5 passports, $150. Costs more to bake bread than buy it cuz’a supply and demand and a lazy populice.
Would be cool to have it boot TRSDos or DosPlus. Or run some kind of Basic. And have ports for HDMI/USB/Ethernet/WiFi
What size process is used for chips like the z80 these days? Is it roughly the same as in the old chips, or have they moved to newer, smaller processes?
Steve Ciarcia had the SB-180, which used a Z80 substitute [Hitachi HD64180]. According to Wikipedia, that led to the Zilog Z180 series.
There are some Z180 based computer boards out there [according to Google], but I doubt they cost $4.
I’ve bought a lot of Hitachi HD64180 at about 1$ each… May be that I’ll do “something” with those in the future…
But will it run Sinclair basic?
would it be possible to run Fuzix on it? 128kb RAM should be enough, right? https://github.com/EtchedPixels/FUZIX/wiki
Yes. it is one of the developments that probably I’ll do…
Phantastic! I’d love to get a minimal system running with a Minix/Unix/Linux-like system. Was always thinking about a 68k based system, but that’s pretty complicated and needs more chips. I was also thinking about using the Arduino as an “I/O”.
I’ve some 68008 laying “around”…
oh, btw, there are a couple of people using the AVR for generating VGA signals, that might be also an option for you? http://www.theresistornetwork.com/2013/03/avr-vga-generation.html
The link is interesting, but I think that I’ll use a STM32 for that…
Arduino bootloader? Why to waste resources for it?