Just a little update as I’ve only done a little bit of work on the Z80 this evening;
The LED matrix board now plugs in to my Z80 backplane!
Just a little update as I’ve only done a little bit of work on the Z80 this evening;
The LED matrix board now plugs in to my Z80 backplane!
Sorry I’ve not made any updates for a couple of days, but there’s not been much of significance to report of late. Until today, that is. Although, as far as the PCBs I’m waiting for are concerned, the only news to report there is that there is no news to report. I will report tomorrow if there is news to report on this or not.
I have, however, been plodding away at teaching myself Z80 assembler language. And with some progress too! I’ve managed to pass the first major milestone with the code I’m writing to display text on the LED matrix displays! It basically, looks at some text stored in a memory location, then looks up each character in turn on the ASCII character map that I lifted from a ZX Spectrum ROM, and puts each line in every 5th byte in a different location. This new location is essentially a 40 byte screen map for the matrix
The 5 matrix board has now been finished. And no one could be more relieved than me. There’s a LOT of soldering going on in there!
The mounting of the LED matrix has probably caused me the biggest turmoil so far on the Retro Challenge. First, I was going to design a custom PCB for them, but I missed the window of opportunity to get it manufactured at a reasonable price. So, for simplicity, I decided to use breadboard until I realised this wasn’t simple with that amount of wires. So, I went back to PCB design preparing to take the financial hit. However, it proved impossible to get the tracks to fit, so this idea went in the bin again. Back to breadboard, I bought a load of jumper cables, and started expanding on what I started earlier. For the driver chips it was ok. For the matrices themselves though, I came across a show stopper; The width of it is so wide that in the breadboard there are 2 free tie points on one side but just 1 on the other. Getting a data bus down all of them was not going to be possible :-(
So, I had a rummage through some vintage Veroboard and found a Euro-card sized board with chip layout tracks. It would only fit 5 modules side by side, but I was prepared to make that sacrifice. I also had some 40 pin female sockets, so that made life even easier!
just a quick update about my Z80 development environment.
If you look down a couple of blogs, you’ll see that I found an online Z80 emulator and I’d written a couple of bits that executed in it, so I was going to do my Z80 learning and development on that. However, there were two issues. The first being that it didn’t run on Chrome on my Linux PC at home (but did on Chrome on Windows at work). The second issue is that it isn’t a Z80 emulator, it’s a 8080 emulator. I didn’t think this would be a problem as they pretty much run the same instruction set, although the 8080 has a sub-set of the Z80 (well, technically, as the 8080 came first, the Z80 has an expanded instruction set), and I quite quickly came across an instruction that wasn’t supported. Bugger! That’s messed up that plan.
Then I remembered I have Fuse which is a ZX Spectrum emulator running on my Linux PC. There are oodles of menus and options which I’ve never looked at, but thought it worth a poke (no pun intended) about with.
We’re at the halfway mark of the Retro Challenge, and there’s a slight lull in activity, so this seems like a good chance to catch up on what’s been done so far, and what’s still to come.
Firstly, a quick review of the challenge I set myself; write my name in LED lights. These must, however, be controlled by a Z80 computer, which I’ve got to design and build myself, and written in assembly language which I need to learn.
Well, the start of the challenge saw me dive headlong in to KiCad, learning some of the intricacies of printed circuit board layout. I’d used KiCad for a couple of little projects before, but certainly wouldn’t have described myself as competent. I’m still not a master of it, but I’m a lot more familiar with it than I was.
I split my breadboard based Z80 down in to several modules, each of which will plug in to a Veroboard backplane. 6 of these have been designed and sent off for manufacture which will give me a basic Z80 computer that I can use via a terminal emulator. The boards are;
I knew there would be some stumbling blocks with this Retro Challenge, but, hey, it wouldn’t be a challenge if everything was just nice and simple. However, I seem to be beset by little stupid technical issues that aren’t necessarily retro in nature.
However, the fact that you’re reading this does at least mean that my blog is working again! I ran some updates last week, and it caused some issues with a plugin meaning I had no way of adding, editing or modifying any posts. I’ve now got that tracked down to the Poll plugin and disabled it. So, yay, I’m back!
So, part of this challenge is to use LEDs, and the little 8×8 matrix modules I found seem ideal. I had initially intended to design a PCB to mount a bunch of these on, but due to time constraints, it was looking very unlikely I’d get them designed, ordered, manufactured and delivered by the end of the month, let alone time for testing. So I decided to go Old Skool, and do this part on a breadboard. Well, 2 breadboards, as they each need a driver chip. Although, it’s actually 3 breadboards, as 2 aren’t quite big enough. Not to mention the other breadboard with the supporting circuitry on. I made a start on this last night;
So, after a flurry of activity, blog posts and updates at the start of the month, things have got a bit quiet.
That’s not to say I haven’t been doing anything. I have. Lots. But nothing really specific or bloggable.
Until the batch of PCBs arrive, I am kind of in limbo land. However, I’ve been looking in to the LED matrix boards a bit more, and working out how I’m going to connect them up (short answer – use breadboards to complete the challenge, but get PCBs made up for long term mounting.).
As the breadboard Z80 runs Microsoft Basic, I have been using that to test out a few bits in terms of orientation of the matrices and the best way to drive them.
So, if I’m going to write my name on a bunch of 8×8 LED matrix displays, I have a couple of options; Write my name on grid paper, colour in the squares, convert it to binary and transpose it to hexadecimal. Or… I could use a font that’s already out there. Like the one that Sinclair used in the ZX Spectrum.
I’ve already got a copy of the Spectrum ROM, and, handily enough, all the characters are right at the very last part of the ROM address space (from 0x3D00 to 03FF), in consecutive blocks of 8 bytes.
I can see this coming in handy later! Continue Reading »
So, today I finally did some hands-on retro wires and programming stuff instead of sitting at a PC doing CAD stuff.
I thought I knew how the LED matrix modules would work, in theory, but before I commit anything to copper and fibreglass, I’d like to test things out a bit. So I dug out my breadboard Z80 and fired it up to check it still worked (it did), and refreshed my memory on how the BASIC “OUT” command works with the ‘374 latches. Finding a bit of space on a breadboard, I plugged one of the modules in and wired it up in place of the bar graph and 7-seg displays I’d previously used as channel 0 and 1
I wanted to get a single dot on the display, so that meant turning the various pins high or low. One channel needed a single pin high with the other channel all high except for one pin. Or the other way around. Or just one pin on both channels. Or, maybe all high except for one on both channels. I could have gone through and calculated exactly which combination to use, but it was quicker to try everything. But I got very weird results
So, having had a few fairly intensive days working on PCB design for my RC2014 computer, today was pretty much a day off. Apart from daily household chores, all I got done today was this;
Now, to the untrained eye, that may look like a schematic layout for 4 8×8 LED matrix displayed connected to a Z80 bus via some 74LS374s.
But it’s not. Continue Reading »
Hokey cokey, that’s the first 4 printed circuit boards for the RC2014 (Oh, did tell you I’ve named my homebrew Z80 computer “RC2014”? Pretty catchy name, eh?) ordered with OSHPark. If they arrive as quick as other boards I’ve had from there before, then I should have 11 days to get everything put together and working!
All 4 boards look fairly similar, being a CPU board, RAM and 2 variation on ROM, but here’s the 32k RAM board;
Ok, it the 4th day of the Retro Challenge, and this is just a quick blog update about what I did yesterday, which was my 2nd day of doing Retro Challenge stuff. So, yeah, it’s Day Something.
Due to life getting in the way, I didn’t get an early start last night, but I did have time to do 3 schematic and 2 PCB layouts for my Z80 that I’m building.
The first board will be for a 2764 EPROM that’s programmed with Microsoft BASIC. Technically this is not part of RC for me, but I know MS BASIC works on my breadboard Z80 so it’ll be an easy and convenient way to test out the hardware.
So, this is Day 2 of the Retro Challenge. In case you’re wondering what happened to Day 1, well, Day 1 happened to fall on Pub Night, therefore I was better off giving everyone else one day head start than having a go and probably putting myself back at least a week!
If you’ve read my posts on Retro Challenge so far, you’ll know my first priority is to get about half a dozen or so Printed Circuit Boards designed and sent off to the fabricators. The tool I am using to do this is KiCad, and the basic workflow is lay out the electrical circuit schematic, create a list of component, match the components up to footprints, lay the footprints out on a board, join up the various pads then create gerber (manufacturing) files.
I have decided to build my Z80 computer in a modular format, with lots of fairly basic PCBs to make up the whole thing. This should give me flexibility in how I use it and what I do with it going forward. It also makes the boards easy to design and lay out, and, if necessary, easy to troubleshoot too. So, with that in mind, I set out this evening with the goal of making the electrical schematic for at least 5 boards. Starting with the CPU board, which comprises of 1 chip, 1 connector and 1 resistor. Simples!
KiCad uses libraries of components, so when you lay out a circuit you can pick a resistor, a capacitor, voltage regulator etc. It’s got loads of chips in the default library that comes with it, but, as I discovered this evening, no Z80! I tried finding a library on line that had one, but couldn’t get anything that worked. So I had to design my own component – a 40 pin IC! Then, the connector I was going to use was for my Z80 bus, and that had my own designed layout, so that’s another 40 pin component I had to design! Luckily, a regular resistor was already available! So, join the appropriate pins up, and voila! A schematic!
Ok, so tomorrow the Summer RetroChallenge 2014 starts, so I thought it would be a good idea to bring you up to speed with what I’ve got so far so that you know where I’m starting from. I will also outline where I’ll be taking things for the RetroChallenge as well as where this project may go in the future.
So, in December 2013 I started poking around the internets for some ZX80 info, and I stumbled upon Grant Searles website. More specifically, he had the schematics for a Z80 based computer and a ROM with Microsoft BASIC on it. So, over Christmas I got out my breadboards and built it up pretty much as per the schematic.
I have always wanted to enter Retro Challenge, ever since I first heard of it nearly 24 hours ago. I followed a link that took me to http://retrochallenge.net/ and I read up on what it was all about, scrutinised the rules and checked out what others were doing. I quickly came to the conclusion that I could give this a thing a go.
All I needed to do* was come up with a suitable challenge for myself.
So an email was sent to the competition organisers; Continue Reading »
When I bought my Sinclair C5, it came without many parts, such as wheels, motor, batteries etc. Seeing that my Robomow robotic lawn mower had all of these, I hit upon a foolproof plan!
You should see the out-take video!
Back in July 2013, someone in the office mentioned the beautiful iconic 80’s disaster that is the Sinclair C5. Inevitably someone asked what they’re worth now, and apart from the fact they cost £400 new, was dropped to £199 shortly after and then the price plummeted like a stone, I had no idea. So I turned to the reliable font of knowledge in these things; eBay. Generally, they were going for more than I expected, then I came across this sorry little thing
With 4 days to go, the price seemed far too low, despite it being described as “Spares or repair”, so, just for curiosity sake, I decided to watch the auction. With 15 minutes to go the price was still too low, so I bid a stupidly low price… and was the highest bidder! But with 2 minutes to go, I got outbid! Well, the eBay red mist had descended, and I wasn’t having any of that, so I bid again… and won it for £34.56! What the hell was I going to do now?
In posts to come I’ll go in to some details about the breadboard Z80 computer I built recently, but, in the mean time, here’s a video that Computerphile made about it
Be sure to check out Computerphiles Youtube channel too!
I bought a mobile phone mount for my car several months ago, and it was one of those with the sticky blue dot on. It was fine, worked great, and simple to use. For a while. Then one day my phone flew off whilst going around a sharp corner. And again a few weeks later. Then again, and again. Despite cleaning, the sticky blue dot was loosing it’s sticky. So I turned to a couple of old faithfuls for help; Sugru and Lego!
The first thing to do was decide upon a ‘design’ for the Lego. It needed to be a large enough contact area to hold securely – even if I aligned the two halves a bit to the left or too high. It needed to fit on the car mount I already had. It needed to be made from the selection of Lego I had to hand. I also wanted a shape\position on the phone where I could instantly identify which way around the phone was without even looking at it. Oh, and it had to look cool too! Continue Reading »