This project has become such a major part of the site I've added a section of its own to keep everything together. This page has links to files and documents that sum up the project. This is a great place to start, other articles can be found in the Z80 Project tab below this entry.
The Mark 2 Z80 project featured a pair of memory slots each capable of taking up to 32K of RAM. This meant that a full 64K of RAM could be used because the ROM image is copied from the PIC's memory at boot time. However that didn't seem like much to me so a banking system and MMU were in order. (Also I found I couldn't get the 32K RAMTRON FM1808 chips in DIP any more!)
I recently received an enquiry about how the I/O throttling on the PIC worked to ensure that the PSP was shifting valid data out to the Z80. I had a look back at my code and figured out how I'd done it. However I realised in that conversation that the schematics for the project were vastly out of date and it seemed that I hadn't been keeping as up to date as I thought I was with my local copies.
It's been a (very) long time since the last update to this project. I've been busy on loads of new stuff for the project. The system is now capable of booting a binary from SD card or USB memory stick formatted in either FAT16 or FAT32. There's also full PS/2 keyboard support, a much more sophisticated interrupt control mechanism and a VGA display now.
A couple of minor updates you might be interested in. I got a quick demo echoing characters back to the PC working last week. This uses the interrupt on receive feature of the UART setup to trigger a send routine as soon as a character is received. The demo code is available on the Z80 Project page.
I left my Z80 project behind when I went to see family over Christmas, I did do a tiny bit of coding while I was on holiday but not much. Back in snowy Bath this weekend I got some more done on the project. I've spent a lot of time on the documentation. The main reason for this is the fact that I keep doing bits then not looking at it for a couple of weeks and I forget where I was and what changes I'd made.
At long last I've fitted a Z80 into the Z80 computer. I know shocking isn't it. After months of tinkering with it and fiddling with things using the on-board PIC I finally got the boot code sorted out and the clock generation (in the new file called boot.asm). After some serious head scratching about why id didn't work, I got it all running smoothly and counting on the debug port LEDs.
More progress on the Z80 project; I have fitted the first RAM chips tonight. After sorting the code so far into 3 source files, I implemented the memory read and memory write functions. These appeared to work on single memory locations, so I implemented the block read and write functions. Using a Python script (see the Z80 Project page for the file) I wrote the XOR combination of the high and low address bytes to each memory location, then read the memory back and tested it against this value.
I've re-arranged the site a bit. I've added a new section with its own link at the top of the site entitled "Z80 Project". This page gives quick access to all the information on the project and links to downloads. At the moment I've not put much on the page, but I'll add stuff as I get it sorted enough to publish.