DIY Z80 Computing

Feel like posting Off Topic? Do it here.

Moderator: MaxCoderz Staff

User avatar
waeV
New Member
Posts: 74
Joined: Wed 23 Apr, 2008 12:52 am
Location: Maine

Re: DIY Z80 Computing

Post by waeV »

What sort of chips can be used as video chips?
My ethicator machine must have had a built-in moral compromise spectral release phantasmatron! I'm a genius!
Image
User avatar
benryves
Maxcoderz Staff
Posts: 3087
Joined: Thu 16 Dec, 2004 10:06 pm
Location: Croydon, England
Contact:

Re: DIY Z80 Computing

Post by benryves »

I'm not sure of any I could recommend off the top of my head. (I couldn't find any for my computer, so went for the LCD instead). The one I'm most familiar with is the venerable TMS9918A, found in the SG-1000, SC-3000, original MSX. It was modified by Sega (adding mode 4) for the Sega Master System and again (12-bit palette) for the Sega Game Gear.

In your case, you'd probably need to find the one that was in the CPC/MSX2/whatever platforms SymbOS runs on.

I know you seem to be set on running SymbOS, and noble goal that it is it's not going to be especially practical given the closed nature of SymbOS. I'd recommend trying to build your own operating system for your own hardware, keeping it simple - and once you had a good idea of what was involved you could then try porting SymbOS over.
User avatar
waeV
New Member
Posts: 74
Joined: Wed 23 Apr, 2008 12:52 am
Location: Maine

Re: DIY Z80 Computing

Post by waeV »

Yeah, the idea (to get SymbOS running) has kinda been losing steam. Thanks a ton for all your comments, I certainly hope to get SOMETHING up and running, if only a text-based something.

Out of plain curiosity, what would you think of getting multiple z80s to run in parallel? I imagine one could get some sort of cluster set up. That would be pretty cool.
My ethicator machine must have had a built-in moral compromise spectral release phantasmatron! I'm a genius!
Image
User avatar
benryves
Maxcoderz Staff
Posts: 3087
Joined: Thu 16 Dec, 2004 10:06 pm
Location: Croydon, England
Contact:

Re: DIY Z80 Computing

Post by benryves »

I don't mean to be a killjoy, it's a great idea - if it was more practical. :(
User avatar
waeV
New Member
Posts: 74
Joined: Wed 23 Apr, 2008 12:52 am
Location: Maine

Re: DIY Z80 Computing

Post by waeV »

No no, if it wasn't for you I wouldn't even have thought of the idea! This has gotten me really interested in computer hardware rather than just the software end.

But what do you think of running z80s in parallel? If one assembled it as a multi-core processor there would probably have to be some sort of bridging device to split the commands. I wouldn't even know where to begin to set up a cluster, but hey - there's a first time for everything.
My ethicator machine must have had a built-in moral compromise spectral release phantasmatron! I'm a genius!
Image
User avatar
benryves
Maxcoderz Staff
Posts: 3087
Joined: Thu 16 Dec, 2004 10:06 pm
Location: Croydon, England
Contact:

Re: DIY Z80 Computing

Post by benryves »

The Z80 has two pins - BUSRQ and BUSACK - that can be used to request (and check for acknowledgement) that a Z80 releases the data and addresses buses along with a handful of control bus pins. Usually this would be to allow for some external hardware (such as a DMA controller) to access the system's data and address buses to do whatever it has to, but I suppose you could try and use another Z80 in this instance. Not sure if it would work/be efficient, though.
User avatar
tr1p1ea
Maxcoderz Staff
Posts: 4141
Joined: Thu 16 Dec, 2004 10:06 pm
Location: I cant seem to get out of this cryogenic chamber!
Contact:

Re: DIY Z80 Computing

Post by tr1p1ea »

Hey Ben i purchased a whole slew of components online in the hope of building a z80 system of my own :). I bought 10 x 4MHz z80A's and even 2 x 20MHz z80's off ebay. Got a load of other stuff from an online electronics outlet that delivers to AU (srams, crystals, eeproms etc). Incidently i bought a 128x64 monochrome LCD which appears to have the same driver as the one you use. Guess im going to have the same timing problems :S. Just have wait for delivery and try to figure out exactly what im going to do! :).

(Any pointers appreciated, particularly with bank switching).
"My world is Black & White. But if I blink fast enough, I see it in Grayscale."
Image
Image
User avatar
benryves
Maxcoderz Staff
Posts: 3087
Joined: Thu 16 Dec, 2004 10:06 pm
Location: Croydon, England
Contact:

Re: DIY Z80 Computing

Post by benryves »

Ah, nice. :D I haven't had much time to get back into this project (I've also had difficulties sourcing components that I'd like to use to fix some of the design flaws, eg some sort of FIFO queue that could be used to interface the Z80 with a PIC microcontroller to act as a keyboard driver rather than doing everything in software).

For the timing issues, I thought that I may continue to use a variable 10MHz/2MHz clock speed, but to run it through a flip-flop running at 20MHz. This would cap the speed to 10MHz. Of course, you could do it properly (injecting wait states to slow the Z80 when accessing the port) but that seems a bit trickier.

I had been thinking of buying one of these devices for storage. As my OS is based around BBC BASIC features like "Can open 4 files at the same time using file handles" sound really appealing.

My memory layout is pretty simple. The upper 32KB is permanently mapped to a single 32KB RAM chip. The lower 16KB is mapped to one of eight pages on a 128KB OS Flash ROM chip. The final 16KB window is mapped to one of two pages on another 32KB RAM chip. To handle bank switching, I just have a single eight-bit register that uses three bits for the ROM chip and one bit for the RAM chip.

As this register will have a random value at start up, you need to ensure there's something sensible mapped in at $0000. Rather than build fancy reset hardware or mapping hardware, I just made sure that the first 256 bytes or so of every ROM page has the same data on it.
User avatar
benryves
Maxcoderz Staff
Posts: 3087
Joined: Thu 16 Dec, 2004 10:06 pm
Location: Croydon, England
Contact:

Re: DIY Z80 Computing

Post by benryves »

It's been a little over a year now; how did your project go, tr1p1ea?

I've been working on my computer a bit recently, and have got quite far by scrapping nearly all of the hardware glue logic and replacing it with an AVR microcontroller. The AVR provides access to basic input and output functionality (keyboard, video display controller, serial port and an SD card for backing store). The Z80 has direct access to 64KB RAM. When the computer is reset the AVR copies the operating system to RAM, avoiding the need to for a boot ROM. A dsPIC33 is connected to the AVR using the I²C bus and is used as a video display controller (320x240 monochrome which can be displayed on a graphical LCD, PAL television or VGA monitor).

I'm using CP/M 3 as the operating system, which is pretty easy to port to custom hardware. You only need to implement a handful of BIOS routines for your hardware; most of the magic happens in the BDOS (basic disk operating system, providing the main OS API) and CCP (command control processor, providing the command-line interface) which are hardware agnostic. An advantage of using CP/M is that there's a fair chunk of software out there already for it, including a number of programming languages (e.g. BBC BASIC or Turbo Pascal), text editors or word processors (e.g. Vedit Plus or WordStar) and, of course, games (e.g. Zork). Writing your own software for CP/M is also quite easy thanks to the extensive BDOS.

A little more information can be found on my website. :) I hope to publish schematics and source code for the project when I've had a chance to tidy them up. I'd definitely recommend this design - using a microcontroller to support the Z80 - as it reduces the chip count and Z80 software complexity significantly.

To finish this shameful display of self promotion, I've attached a few photos to this post.
Attachments
Zork running on the Z80 computer.
Zork running on the Z80 computer.
2010.08.14.07.Close.Up.Zork.jpg (33.38 KiB) Viewed 15074 times
Insides of the Z80 computer.
Insides of the Z80 computer.
Z80 computer running Vedit Plus.
Z80 computer running Vedit Plus.
Post Reply