Build an 8-bit home computer with 5 chips
spectrum.ieee.org
spectrum.ieee.org
Documentation is lacking, sadly. My intent was to create a series of in-depth videos describing how various aspects of the system work in detail, but I'm somewhat behind on that.
For folks that say "using an ATMEGA is cheating":... I agree! That was a guiding principle behind my 6809 computer project (Ultim809)--use only period hardware and no programmable chips (apart from EPROM). Amethyst originated a bit differently. Initially it started out as a neat hack to get 8-bit color video from a non-overclocked AVR without expensive external chips. And then I discovered the mechanical keyboard community and was able to source keyswitches and keycaps, and, well, in for a penny, in for a pound.
I like the staggered key arrangement of your prototype better, but whatever.
Your projects always inspire me.
Also, why not use a more capable cpu with more embedded ram? These things are very cheap nowadays.
It is as good as domain specific mastery gets
A while ago on YouTube, I watched a series where someone was restoring their IMSAI 8080 (the machine from WarGames) and learned it and the original Altair were a lot more capable than their front panels made them seem due to the S-100 expansion slots inside that sit on the bus. The first card the video showed was a terminal connection so he could send/receive commands using a VT-100 terminal (an emulator on a normal PC in this case). The cool thing I learned is that the way this worked is that the terminal board on the IMSAI would simply send the same screen info over and over again across the serial port, and it was up to the terminal to display this data on screen (making terminals like little dedicated computers themselves). I don't know how I thought this worked, but it was cool to see him debugging it.
Seems a lot easier than trying to get a direct-connected display up and running and having to figure out all the signals and colors, etc. That said, I haven't actually done this yet, so the devil may be in the details.
https://archive.org/details/BYTE_Vol_10-08_1985-08_The_Amiga...
And the hack was good enough.
It is one of the things in which academical training is perverse. It trains you to always complicate more and more any subject, and that the hard work is the goal, shortcuts are not permitted.
It begs the question what was done in parts of the world that didn't use NTSC, though.
[1] - https://eater.net/vga
"I thought using loops was cheating, so I programmed my own using samples. I then thought using samples was cheating, so I recorded real drums. I then thought that programming it was cheating, so I learned to play drums for real. I then thought using bought drums was cheating, so I learned to make my own. I then thought using premade skins was cheating, so I killed a goat and skinned it. I then thought that that was cheating too, so I grew my own goat from a baby goat. I also think that is cheating, but I’m not sure where to go from here. I haven’t made any music lately, what with the goat farming and all."
Sure none of these are “cheating”, but someone somewhere has to do each of those things, and the further down the chain you go, the more “control” you get over your sound and composition. The law of diminishing returns of course hits at some point (although someone may argue that their breed of goats has a certain sound they can’t get any other way).
It’s the same thing in programming: someone chaining together libraries may eventually run into a point where there’s nothing out there that does exactly what they need. That doesn’t mean it’s not your work unless you’ve written the compiler yourself, or have your own fab in your garage, it just means you have to be aware of the degree of control you give up the higher level you go.
As you say, the reality of it is that there are thresholds, for some where the benefit cost ratio is poor enough few will break through it from a higher level use... and then there are lower ratio thresholds in between where you will get various proportions of experienced people who want a little more control (in different directions) breaking through.
But even with those thresholds (in this case one IC vs another IC), it's arbitrary and subjective, you are just choosing to spend your time and effort in a different way.
Really depends on what's the length of samples and how exactly are you working with them. With whole musical phrases (as used in 90s hip-hop and french house, for example), it's really more like arranging. But when you cut those very samples just a little bit shorter, and start playing MPC pads like an instrument, I'd argue you switch back to composing.
In many ways watching people describe and choose their spot in the "grab package" <-> "herd goats" spectrum is my favourite part of AoC each year¹. The squirming some people choose to do when justifying their place in a table of magic internet points is a lot of fun.
Edit: Should add I'm one of those squirmers too, often when I'm thinking about networkx/numpy/etc.
I can personally see the discussion of how to work with a basic installation being worthwhile, as I know I'm guilty of "why don't you just $bunch_of_experience_option?". However, I don't think I'd want to try to do actual work without the tools I have and the tools I make.
No one sees?! What do you mean? That’s literally the punch line of the joke.
Of course ‘learning things’ is a secondary benefit, especially if that’s actually one of the goals you specifically set out for. Still I’ve personally watched programmers live that joke, and overengineer something that could take a day into a year long project, to solve a problem they didn’t have. I’ve seen it enough and cause enough problems that I try hard to write code with specificity and stick to the problem at hand. So much so that I have an actual problem with not abstracting things soon enough. ;)
Looking at Ben Eater's youtube channel, there seems to be a healthy demand for building more authentic '80s 8-bit systems.
If one's goal is to learn about how to build an 8-bit computer, using a microcontroller is not going to be an edifying experience unless the goal is to do something mostly in the software domain like write a simple OS.
While I think your parable is good advice for getting a business going quickly, it's not appropriate for deep dive learning or hacking.
But the fact that it's a microcontroller rather than a microprocssor bugs me. The lack of an external memory bus feels incredibly in-authentic to me.
Sometimes it's pretty blurry what is a microcontroller and what is a microprocessor. The PIC32MZ/DA has an integrated Graphics Controller and 32MB of DRAM.
That’s a cool PIC32 home computer - PIC32 is MIPS btw far beyond the old 8 bits though...
Yep. It's still a neat project, but don't claim to build an 80's computer using "only 5 chips" when they're more modern chips that allow that low count. A single FPGA can do it all too.
On a tangent, I'm curious about upgrades to old machines that could have been done at the time. For example, my Interact has super low-res graphics where each pixel is 3 scan lines high. That machine was designed for 4-8K of ram but shipped with 16K and had an upgrade to 32K. It seems like increasing the vertical resolution should have been a fairly trivial hardware hack since the RAM is all there. Bumping the horizontal resolution might have been possible but harder. Increasing the available colors should have been fairly easy. It seems to be a case of not enough time for the design to bake. The other 8bit machines with ASICs might not be so incomplete, but there may still be some things that could have been done.
E.g. on the C64 the CPU and graphics chip competes for memory cycles all the time. This is why the screen blanks when loading, for example - to prevent the graphics chip from "stealing" cycles. A more expensive memory subsystem would allow working around that, and speed up the entire thing. This is a recurring issue with many other architectures as well for cost saving reasons (e.g. the Amiga "chipram" vs "fastram" distinction).
From 1983, the 8/16-bit 65C816 (used in the Apple IIGS) would have been a more natural choice for the C128 or even a "revised" C64 (at the cost of some compatibility), and reached clock rates up to 14MHz.
A lot of it was also down to market pressure and R&D costs... All of the home computer manufacturers led precarious existences, as evidenced by most of them failing or transitioning out of that market (and often then failing); at its peak, Commodore was notorious for being tight fisted and spending ridiculously little money on R&D relative to its size, and that was probably what made it survive as long as it did despite serious management failures, while Apple largely survived by already then going after a less cost-sensitive market segment and much higher margins.
The list of R&D efforts in Commodore that were shut down not because they were not technically viable, but because the company wouldn't spend money on them (or couldn't afford to) is miles long. I'm sure the same was true in many of the other companies of the era (but I was a C64 and Amiga user, and so it's mostly Commodore I've read up on..)
We could certainly have had far more capable machines years earlier if a handful of these companies had more money to complete more of these projects and/or if there had been demand for more expensive machines at the time.
But then progress is very often limited by resource availability, not capability.
The truth is that we live in magnificent times where there's a wide range of choice on how to do things and it is amazing.
The ZX80 used 21 (IIRC) off-the-shelf TTL chips.
If your goal is faithful retrocomputing, then sure, an ATMEGA is out of the question v., say, a 6502 or Z80.
If your goal is minimalism or simplicity, then an ATMEGA is perfectly viable as a way to get there.
That being said, I think there might be better ways to do the video...
Excerpt:
"So I looked in my drawers and pulled out four 7400 chips—two multiplexers and two parallel-to-serial shift registers. I could set eight pins of the 1284P in parallel and send them simultaneously to the multiplexers and shift registers, which would convert them into a high-speed serial bitstream. In this way I can generate bits fast enough to produce some 215 distinct colors on screen. The cost is that keeping up with the video scan line absorbs a lot of computing capacity: Only about 25 percent of the CPU’s time is available for other tasks."
You know, you could have this computer communicate with a Raspberri Pi over USB, and have the Raspberry Pi act as the computer's "video card". Doing this and only sending parts of the screen that changed (like VNC) might allow many more colors at much higher resolutions, and might not tax the CPU as hard (especially at points in time when the screen doesn't need to be updated)... you know, use the Raspberry Pi as a frame buffer of sorts...
But, that being said, I once again reiterate with respect to the work: Utterly brilliant! An effort to be lauded in every possible way!
Not to change the subject, but I just got the following idea:
How about a distributed software infrastructure where you can use any computer as the CPU/RAM, any other computer as the video card, any other computer as the keyboard, any other computer as the network card, etc.
Basically, outsource functionalities to different computers, via something like USB, or other bus/communications technology...
This might be a little bit off-topic (apologies for this), but I needed to get this idea written down, while I still had it...
Certainly the network interface as a separate computer has been done, though. Just look at how the original ARPANET worked for that.
There are quite a few Z80 implementations that only use a handful of chips.
MCU with integrated USB? eg. A SAML21 chip. It also has several PWM timers, CCL and DMA, I wonder if that could help with video generation?
Wonder how the source article came up with the title “just 5 chips”, yet the article throughout mentions six. Not a huge deal, but wonder if typo or some other reason?
Excellent! I’ve always maintained that BASIC is a bad language for memory- and CPU-constrained systems.
If you don't care about socket compatibility you could simply load an 8-bit CPU in a fast FPGA. It will probably not be hard to run one at 100MHz or so.
Grant Searle's breadboard CP/M machine: http://searle.x10host.com/cpm/index.html
Spencer Owen's RC2014 modular bus-based Z80 system: https://rc2014.co.uk/ Highly active RC2014 discussion group: https://groups.google.com/forum/#!forum/rc2014-z80
Phillip Stevens' beautiful YAZ180 Z180-based SBC: https://github.com/feilipu/yaz180
z88dk, a Z80 C cross compiler with libraries and all sorts of useful things, which supports many machines: https://www.z88dk.org/forum/
Jon Langseth's LiNC80: http://linc.no/products/linc80-sbc1/
Steve Cousins' many different machines, some RC2014-compatible, some z50bus (LiNC80) compatible, some Z180 stuff, SBCs, a powerful "small computer monitor", etc: https://smallcomputercentral.wordpress.com/projects/
Alan Cox's Fuzix, a unix for 8-bit machines (including many of the aforementioned Z80 machines): https://github.com/EtchedPixels/FUZIX
Most of the folks mentioned can be found on the retro-comp discussion group, which was formed from RC2014 group members to discuss other projects: https://groups.google.com/forum/#!forum/retro-comp
Zilog also makes the ez80, which is like the Z180 but runs at 50MHz and has a 3 stage pipeline, and it has a 24-bit mode.
On the 6502 side, there's the 65C816S which is the fully-static CMOS version of the 65816, which is a 6502-compatible CPU with a 16 bit mode and 24-bit addressing. The Apple IIgs had one, but its clock speed was limited to 2.8MHz so as not to compete with the Macintosh. Today you could build a machine with a 14MHz 65C816S and fast SRAM, and have a pretty beastly 6502-compatible machine.
http://uzebox.org/wiki/Main_Page
it's a great platform, super easy to develop, tons of fun. Highly recommended.
One of the rare occasions where I endured such pain because I was so interested.
I will die on that hill but that "GDPR popup" is actually a pre-GDPR, obsolete cookie law popup that is not compliant with GDPR anymore (GDPR requires ability to deny cookies) and should be removed, as it amounts to nothing and is a pretty much a dark pattern. (I upvoted you btw, because I agree 100%)