Last updated: 10 Jun 2010 - 11:11
For the impatient:
I've been working on improvements to Dwarf for a while. Check out the github repo for detailed changes and current development release. This is a beta release, i.e. it NEEDS TESTING. I've used it a little for actual projects and seems to be working okay but it certainly hasn't been extensively tested.
Last updated: 26 Mar 2010 - 22:39
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.
I'm planning to go through all these new features and write-up how I've got there but for now I'm just going to do a summary. Since my last update, I have built a basic chassis to contain the growing number of boards and hold all the connectors, there's a new connector board which has the USB host sockets, an SD card slot, PS/2 keyboard connector a composite video output connector and a 3.3V and 5V power supply. This connects up to the original pair of boards providing power and two LEDs (one is driven by the PIC as a "hard disk light" when accessing the SD, the other is driven by a transistor from the Z80's HALT line), the 5-pin
Last updated: 25 Mar 2010 - 22:04
While spending time on the Propeller forums I got involved in an awesome project to make a Propeller based complete Z80 system emulator. There are a few different boards about that are "standard" platforms for extended memory applications, all called blades of some sort. One I particularly liked because of the elegance of the design was the DracBlade. The PCBs were sold through the forum at a very reasonable price, I put mine together from bits from Farnell.
Last updated: 18 Jan 2010 - 22:38
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.
It's all fairly simple but there are a few delay loops and things involved. It's also worth checking out the updated Memory and IO schematic as I've updated it with the software reset control for the UART. The only problem I had with this new bit of code was that the compiler wasn't doing exactly what I expected. After a bit of fiddling and dis-assembly I discovered that (probably fairly logically) the org statement doesn't pad the output with anything when generating the binary file, it just offsets the current count for calculating jumps. This of course meant that when I downloaded the binary file I'd generated the first instruction was a jump that missed the entire block of cod
Last updated: 10 Jan 2010 - 21:50
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. I'm also hoping to use a lot of the circuit designs in the Mark 3 project at some point in the future and if they're out of date and un-documented it could result in some expensive and useless PCBs.
Actual real progress: Update BIOS image via debug port. A python library to make comms with the PIC easier. UART fitted and debugged. Some additional commands in the PIC firmware including the ability to perform a system reboot from the host PC.
After some head-scratching I managed to get the BIOS update via the serial port working. I basically copied the code examples fro
Last updated: 15 Dec 2009 - 22:03
Pysnakes is a one or two player game of snake written in python using the pygame SDL bindings. It was originally written for a competition in the British made Linux Format magazine. It should work on any platform with a pygame release. It's been tested on Ubuntu and Windows. The design of the levels and the game in general are heavily inspired by the "nibbles.bas" demo program that used to ship with Microsoft Quick Basic.
Last updated: 06 Dec 2009 - 18:20
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.
New Code I've added the boot.asm file which contains the code to copy the top 8K of flash from the PIC into the system memory starting at address 0. This, along with the rest of the boot setup happens faster than you can see so it looks like the system is booting straight from ROM. The clock generation is also in the new code, I've used one of the PWM peripherals in the PIC to generate a 50% duty ratio square wave at a software selectable rate. At the moment it's hard coded into the PIC assembly code, and it's only running at 250kHz because my scope is pretty slow and I was hav
Last updated: 05 Dec 2009 - 21:32
The trickiest part of getting Dwarf installed and working, I think, is installing the pk2cmd program, and configuring permissions for the PICKit2 Programmer. This tutorial runs through exactly how I do it on an Ubuntu system, but it should be applicable to most modern Linux distros as there are no Ubuntu specific tools involved here.
DISCLAIMER: This stuff involves altering system files and settings. I am not responsible for things going wrong on your system even if you're following this guide.
Last updated: 27 Oct 2009 - 22:51
I've had some code donated to the project, and wanted to make it a more dynamic update process so the code is now on github. If you're interested in the latest version, or want to help let me know. As always contact address is email@example.com.
Last updated: 18 Oct 2009 - 21:08
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.
So far I've fitted one 32K RAM chip in the lower half of the address space and an 8K chip in the upper half. This shows up correctly on the memory check. The script writes address from the top down, so when the 8K chip gets written with the data for the top 8K of memory this is subsequently over written with the chip in its lowest possible space. Hence the memory scan determines that there is memory up to address 0x9FFF (40K).
Due to the maximum packet size of 256 bytes, the maximum d