The Whizz-80 is my latest electronic project that I am starting. It is a combination of hardware and software so it aligns both my passions.
My Whizz-80 computer will be a retro based computer using the Z80 CPU. The Z80 was used in early microcomputers (such as the Microbee and the TRS-80). It will however run it’s own operating system and it’s own specific hardware configuration. I don’t intend on making a clone, (there are plenty of emulators for that) but a unique computer just for me. It’s a great way to learn how computers actually work and since studying it I have a greater appreciation and respect of the hardware of modern computers.
So why use a Z80 chip instead of a different one like based on the 6502 (as in Commodore64)? There are many blogsoutthere compring the 2, but the reason why I chose the Z80 over the 6502 was simplicity and documentation. The Z80 requires minumum components to get started while the 6502 needs a few extra chips to get started. There also seems to be a better supply of Z80 components (They still make them!) than the 6502, so Z80 components are more easier for me to obtain (I’m sure your milage might be different). Also, since this is my first major build, I wanted to keep it as simple as possible and have something up and running as early as possible.
My initial thoughts, goals and ideas for the Whizz-80 computer are as follows:
Whizz-80 Hardware Specs:
The CPU will be based on the Z80 CPU running at around 6Mhz max.
32Kb ROM and 32Kb RAM. This is more than enough memory for our needs, however it simplifies the amount of extra logic circuitry required if you use smaller memory chips.
Operating System I will write and will be Forth based. I’ve always been intrigued with the Forth language, but I will probably tackle this once I have the hardware built
Stay tuned for upcoming blog posts on more of the Whizz-80 computer.
I’ve been playing around with the Arduino for a while now (offline to the blog) and while it is a great platform to get into the embedded arena (and electronics in general), I am yearning for something a little bit more, something beyond the Arduino.
I haven’t done a blog post in a while (I had great plans on posting my experiments and circuits as I learned) but the time it takes to create a post on a simple circuit that I built during the learning iteration process just didn’t work.
I was keen to move onto the next ‘idea’ so by the time it came to sit down and write something it was 3 mini-projects later. All I can say is that the best way to learn is to just physically build it.
Recently I’ve been studying digital circuits (nand2tetris is a good course) instead of analogue circuits and have been fascinated on how an actual the computer works (right down to the inner workings of the logic chips).
I think it is now time to move beyond the Arduino and get myself into some other projects. Maybe something that isn’t Arduino but is a little bit old and feeds my nostalgic urge (hint: z80).
Learning to fail and how you move on from it: In my previous twoposts I had designed and created a pcb layout for a simple 555 timer flasher. I thought it would be a simple thing to do because I really wanted to test the workflow on how to create a pcb from start to finish.
After placing and soldering all the components on my pcb, and applying power to it, I expected to see some nice flashing lights just like my breadboard model was doing. The first LED blinked on and off, the second blinked on.. and stayed on… Strange.
I double checked that the pcb matched the schematic – yep that is all correct. I turned on the circuit on the breadboard (I still have it on the breadboard as a working circuit when I created it) – and that was working. What could the problem be?
When showing off my excitement of designing my first pcb to an electrical engineering forum (EEVBlog) a kind soul (Hero999) pointed out that there was an error on my original schematic and that my circuit would not work.
After analysing it a bit further I had come to the conclusion that I had failed to copy my breadboard layout to a schematic correctly. Because this was wrong, everything else was wrong. During this time I also must have altered the breadboard circuit without updating the schematic file.
My original breadboard circuit was based on the one here and you can clearly see my schematic doesn’t follow this (R2 connects to +V instead of pin3).
Learning to Fail
So what have I learnt from all this?
I was so worried about creating a perfect schematic -> pcb workflow that I didn’t spend enough time on the breadboard -> schematic step causing everything to fail.
So while I did fail – I also succeed as the pcb is a correct representation of the schematic – just that the schematic was all wrong.
I also need to pay more attention to ALL the steps in the workflow and not just focus on one step. Each step is important and can have a cascading effect if you get it wrong.
All is not lost though – the same kind soul on EEVBlog (Hero999) has also suggested that I can fix it by removing a solder joint and running a manual wire to the correct location. I’m going to give that a go the next time I’m doing some soldering.
My 555 LED Flasher custom made pcb circuit finally arrived. Yay!
Previously I had designed this circuit and pcb layout as a test run (see previous post) and sent it off to OSHPark for manufacturing. It turned up in the post for last night.
It took about 3 weeks from time to placing the order to me receiving it, which seems quite reasonable for a part time hack like me. I don’t need high turn around times.
The PCB board looks really nice and well made. I could never get this much detail or compactness if I attempted to create a PCB on my own at home (hate playing with nasty chemicals!) But the proof will be when I solder in the components.
If I get some time this weekend I might have a go at transferring the components from the breadboard and soldering them onto the PCB. Once this is done then my workflow from design to finished product will be complete.