Author Topic: Zalt - an alternative Z80 homebrew computer  (Read 10505 times)

0 Members and 1 Guest are viewing this topic.

Offline obiwanjacobiTopic starter

  • Frequent Contributor
  • **
  • Posts: 988
  • Country: nl
  • What's this yippee-yayoh pin you talk about!?
    • Marctronix Blog
Zalt - an alternative Z80 homebrew computer
« on: October 12, 2016, 10:22:12 am »
I have just published the source files for my Zalt Z80 computer (here).

It contains:
- a vintage Z80 CPU but running at 20MHz
- memory extension up to 1MB RAM (20 address lines)
- ROMless design
- modular stackable PCB design.
- CPU Board contains the Z80, RAM and MMU
- Decoder Board contains a CPLD (Altera Max II) that provides all needed control signals.
- BusSpy Board with 8 TIL311 digits for debugging. Contains the PSoC.
- PSoC5 (kit) used as System Controller
- custom target for the z88dk C-compiler

I have a blog that contain several posts about the Zalt project.






EDIT: attached some schematics as pdf for easy viewing.
« Last Edit: October 21, 2016, 12:05:58 pm by obiwanjacobi »
Arduino Template Library | Zalt Z80 Computer
Wrong code should not compile!
 
The following users thanked this post: newbrain

Offline obiwanjacobiTopic starter

  • Frequent Contributor
  • **
  • Posts: 988
  • Country: nl
  • What's this yippee-yayoh pin you talk about!?
    • Marctronix Blog
Re: Zalt - an alternative Z80 homebrew computer
« Reply #1 on: October 12, 2016, 12:22:44 pm »
I used WinCUPL (atmel).
https://github.com/obiwanjacobi/Zalt/blob/master/BusSpy%20Board/WinCUPL/BusSpyDecoder.pld

I had to run the editor on an old XP machine because it crashes on Windows 8.1 - even when trying out all kinds of compatibility settings...
Arduino Template Library | Zalt Z80 Computer
Wrong code should not compile!
 

Offline bigsky

  • Regular Contributor
  • *
  • Posts: 134
Re: Zalt - an alternative Z80 homebrew computer
« Reply #2 on: October 14, 2016, 05:00:14 pm »
- a vintage Z80 CPU but running at 20MHz

If it was really vintage (like me) it would run at 2.5MHz !
 

Offline Len

  • Frequent Contributor
  • **
  • Posts: 547
  • Country: ca
Re: Zalt - an alternative Z80 homebrew computer
« Reply #3 on: October 14, 2016, 10:03:07 pm »
- ROMless design

Does ROMless mean that every time you turn it on you have to toggle in the boot routine via front panel switches?  :-+

Quote
- PSoC5 (kit) used as System Controller

What's the relative performance of that system controller compared to the main CPU?
DIY Eurorack Synth: https://lenp.net/synth/
 

Offline Andy Watson

  • Super Contributor
  • ***
  • Posts: 2085
Re: Zalt - an alternative Z80 homebrew computer
« Reply #4 on: October 14, 2016, 10:24:00 pm »
If it was really vintage (like me) it would run at 2.5MHz !
Oh please! 2.5MHz ? were you over-clocking it? :)  I'm considering resurrecting my S100 bus "system". I think the processor maxed-out at 2MHz. The problem I have is what to do about the peripherals. Seems like cheating to interface its 8 bit keyboard port with PIC16Fxxxx and USB. :)
And what to do about its tape interface? Another PIC reading a 16GB memory stick into 9600 baud?
Ah! The memories. Like the OP's point-to-point wiring, nice, really nice - until you have to change the logic ;)

 

Offline Andy Watson

  • Super Contributor
  • ***
  • Posts: 2085
Re: Zalt - an alternative Z80 homebrew computer
« Reply #5 on: October 15, 2016, 12:24:08 am »
The real difficulty I have with putting a microcontroller into some peripheral is when it is more powerful than the Z80 itself.
That is exactly my dilemma. To make my Z80 work again I will need to surround it with modern chipery that is, more often then not, an order of magnitude more "powerful".  It seems like cheating because I remember spending far too much time chasing down runt pulses, race conditions and all those "marginal" TTL conditions that occured at those giddy high frequencies above a mega-hertz. Sheeeehs! The youth of today! They've no idea how tricky it used to be ;)

I think you're right, it was 2400 baud maximum on tape. Damn it, my biological memory's losing bits!

 

Offline obiwanjacobiTopic starter

  • Frequent Contributor
  • **
  • Posts: 988
  • Country: nl
  • What's this yippee-yayoh pin you talk about!?
    • Marctronix Blog
Re: Zalt - an alternative Z80 homebrew computer
« Reply #6 on: October 15, 2016, 05:58:03 am »
Well, I only wanted to use a Z80. After that anything is game. Mainly I selected my parts based on price. I also wanted to learn new things, like (win)CUPL, VHDL (Quartus) and the PSoC5. At times a bit frustrating having to lookup the syntax for the new languages, but I got it to work and that is a wonderful feeling.

- ROMless design

Does ROMless mean that every time you turn it on you have to toggle in the boot routine via front panel switches?  :-+

In a sense, yes. You have to up-load the program from the PC via the System Controller into the Z80's memory.
At startup the System Controller holds the Z80 in RESET.

- PSoC5 (kit) used as System Controller

What's the relative performance of that system controller compared to the main CPU?

Not sure yet. Initially I thought that I would be fast enough (and then some). But I had to insert a WAIT state in the IO-logic of the System Controller in order to have it correctly respond to the In/Out instructions for the console (which it forwards to/from the PC) at higher clock rates (10MHz). I think I never got it to work properly at 20MHz. I definitely have some more research to do there.

Arduino Template Library | Zalt Z80 Computer
Wrong code should not compile!
 
The following users thanked this post: newbrain

Offline C

  • Super Contributor
  • ***
  • Posts: 1346
  • Country: us
Re: Zalt - an alternative Z80 homebrew computer
« Reply #7 on: October 15, 2016, 06:44:03 am »
You might want to think of using your Z80  Simulator as a dissembler for Z80 code.

If you are doing Z80 instructions correctly, would be very hard to hide some code. Your Z80  Simulator would know all and see all. Just need to log information to disk.

some programs relocate code. seen part of an instruction used as an instruction.
A good one is a sub that pops call return address, uses return as data pointer then pushes new return address on stack.

Your Z80  Simulator should catch all fun & games.
 

Offline obiwanjacobiTopic starter

  • Frequent Contributor
  • **
  • Posts: 988
  • Country: nl
  • What's this yippee-yayoh pin you talk about!?
    • Marctronix Blog
Re: Zalt - an alternative Z80 homebrew computer
« Reply #8 on: October 15, 2016, 06:57:13 am »
I think the problem is in the PSoC, not in the Z80...?
Arduino Template Library | Zalt Z80 Computer
Wrong code should not compile!
 

Offline C

  • Super Contributor
  • ***
  • Posts: 1346
  • Country: us
Re: Zalt - an alternative Z80 homebrew computer
« Reply #9 on: October 15, 2016, 09:52:05 am »
Quote
Not sure yet. Initially I thought that I would be fast enough (and then some). But I had to insert a WAIT state in the IO-logic of the System Controller in order to have it correctly respond to the In/Out instructions for the console (which it forwards to/from the PC) at higher clock rates (10MHz). I think I never got it to work properly at 20MHz. I definitely have some more research to do there.

Back in the day it was hard to get a Z80 up to it's max speed with out wait states. When things got close to time limits, you had a choice of adding a wait state or slowing Z80 clock speed some. Slowing the clock speed some could make a Z80 faster over all.
Sounds like you need to compute some timings for Z80 and PSOC or look at system with a scope.
Nothing is harder to find then when you have some signal timing right on the edge where it works most of time but fails at times. Very easy to get just to close to the edge of some signal time in a memory or io cycle.  Note that when you change from 10Mhz to 20Mhz how the time for Z80 signals change. You have a lot of devices in address buss. Address buss could get stable after MREQ for example. Note also that the PSOC could be in a different part of it's clock cycle with respect to Z80. Do to the two clocks changing, you could have it works and later it fails.
This assumes that the two clocks are not generated from same source.
 

Offline newbrain

  • Super Contributor
  • ***
  • Posts: 1719
  • Country: se
Re: Zalt - an alternative Z80 homebrew computer
« Reply #10 on: October 15, 2016, 10:25:05 am »
This post is just to thank Obiwanjacobi for making this great stuff available!
I'm moving my first steps with the PSoC, so it will take some time I go round to implementing my 6809 idea.
Zalt will be a good base to start, even if I might go for a simpler architecture, at least initially.
Nandemo wa shiranai wa yo, shitteru koto dake.
 

Offline obiwanjacobiTopic starter

  • Frequent Contributor
  • **
  • Posts: 988
  • Country: nl
  • What's this yippee-yayoh pin you talk about!?
    • Marctronix Blog
Re: Zalt - an alternative Z80 homebrew computer
« Reply #11 on: October 15, 2016, 12:17:45 pm »
This post is just to thank Obiwanjacobi for making this great stuff available!
I'm moving my first steps with the PSoC, so it will take some time I go round to implementing my 6809 idea.
Zalt will be a good base to start, even if I might go for a simpler architecture, at least initially.

Thanks. Be warned though, I am but a hobbyist and this was my first (real) PSoC project. So don't take this as a best practice...

Sounds like you need to compute some timings for Z80 and PSOC or look at system with a scope.

Yes, correct. I need to do a deep analysis of what is going on at higher speeds. I have been just too lazy to do it.  :P
Arduino Template Library | Zalt Z80 Computer
Wrong code should not compile!
 

Offline newbrain

  • Super Contributor
  • ***
  • Posts: 1719
  • Country: se
Re: Zalt - an alternative Z80 homebrew computer
« Reply #12 on: October 16, 2016, 01:53:07 pm »
One (half silly) question:
I'm going through your PSoC creator project, and noticed that you are using P0 pins 2, 3, 4, P3 pin 2, and P15 pin 4.

I'm I right in thinking you removed the 1µF caps on those pins (or the 0R resistor on P15.4)?
I find it hard to believe that the data and address bus would work correctly at a reasonable speed with that much capacitive load!

Nandemo wa shiranai wa yo, shitteru koto dake.
 

Offline obiwanjacobiTopic starter

  • Frequent Contributor
  • **
  • Posts: 988
  • Country: nl
  • What's this yippee-yayoh pin you talk about!?
    • Marctronix Blog
Re: Zalt - an alternative Z80 homebrew computer
« Reply #13 on: October 16, 2016, 02:18:35 pm »
You are correct. I lifted (tombstoned) all the caps (only) on those pins.
I probably should document that somewhere...

(...just did, note that I just upgraded to Creator 4.0 - not sure if that matters)
« Last Edit: October 16, 2016, 02:34:30 pm by obiwanjacobi »
Arduino Template Library | Zalt Z80 Computer
Wrong code should not compile!
 
The following users thanked this post: newbrain

Offline newbrain

  • Super Contributor
  • ***
  • Posts: 1719
  • Country: se
Re: Zalt - an alternative Z80 homebrew computer
« Reply #14 on: October 16, 2016, 03:18:52 pm »
You are correct. I lifted (tombstoned) all the caps (only) on those pins.
I probably should document that somewhere...

(...just did, note that I just upgraded to Creator 4.0 - not sure if that matters)
Thanks! I expected as much.
No problems with PSoC creator 4.0.
Nandemo wa shiranai wa yo, shitteru koto dake.
 

Offline C

  • Super Contributor
  • ***
  • Posts: 1346
  • Country: us
Re: Zalt - an alternative Z80 homebrew computer
« Reply #15 on: October 22, 2016, 09:37:05 pm »

For ports or interconnects you might want to look at an
intel m8212 interfacing chip
No longer produced but the logic is the basics used for a good input or output port.
As most IC's was created to remove need to create from many parts.

A bunch of these blocks is in the 8255.


 

Offline Doctorandus_P

  • Super Contributor
  • ***
  • Posts: 3360
  • Country: nl
Re: Zalt - an alternative Z80 homebrew computer
« Reply #16 on: October 23, 2016, 10:00:54 pm »
Don't use the yellow wires!
Using laquered "enamel" / vero wire is much easier for prototypes.
 

Offline obiwanjacobiTopic starter

  • Frequent Contributor
  • **
  • Posts: 988
  • Country: nl
  • What's this yippee-yayoh pin you talk about!?
    • Marctronix Blog
Re: Zalt - an alternative Z80 homebrew computer
« Reply #17 on: October 24, 2016, 05:16:46 am »
This is what I had (had bought it on eBay) and it worked very nice for me. I can strip it with my thumb nail and I can fit 3 wires into one hole. It just doesn't take a lot of current. I had a considerable voltage drop on the TIL311's so I had to route another voltage rail with thicker wire. Other than that, it does the job.
Arduino Template Library | Zalt Z80 Computer
Wrong code should not compile!
 

Offline obiwanjacobiTopic starter

  • Frequent Contributor
  • **
  • Posts: 988
  • Country: nl
  • What's this yippee-yayoh pin you talk about!?
    • Marctronix Blog
Re: Zalt - an alternative Z80 homebrew computer
« Reply #18 on: January 25, 2017, 11:06:34 am »
Now working on implementing vectored-interrupts, debugging support and accessing virtual devices over usb.

For those that want to know...  ;D

 :popcorn:
Arduino Template Library | Zalt Z80 Computer
Wrong code should not compile!
 

Offline CJay

  • Super Contributor
  • ***
  • Posts: 4136
  • Country: gb
Re: Zalt - an alternative Z80 homebrew computer
« Reply #19 on: January 25, 2017, 02:56:39 pm »
If it was really vintage (like me) it would run at 2.5MHz !
Oh please! 2.5MHz ? were you over-clocking it? :)  I'm considering resurrecting my S100 bus "system". I think the processor maxed-out at 2MHz. The problem I have is what to do about the peripherals. Seems like cheating to interface its 8 bit keyboard port with PIC16Fxxxx and USB. :)
And what to do about its tape interface? Another PIC reading a 16GB memory stick into 9600 baud?
Ah! The memories. Like the OP's point-to-point wiring, nice, really nice - until you have to change the logic ;)

I feel the same way, 'vintage' or 'retro' systems using a single old CPU to connect to a pile of chips that come from companies that didn't even exist at the time the CPU was in production, it's not exactly difficult to interface an XT or even AT keyboard.

However, a 16GB memory stick and a PIC is an acceptable cheat I feel, as long as you use the PIC to play back and record the original tones from audio files on the stick.   :-DD :-DD
 

Offline james_s

  • Super Contributor
  • ***
  • Posts: 21611
  • Country: us
Re: Zalt - an alternative Z80 homebrew computer
« Reply #20 on: January 27, 2017, 05:07:32 am »
If you want some other retro SBC projects Grant has some interesting designs: http://searle.hostei.com/grant/

I've built all the variations of the Multicomp on the small FPGA board like he uses but I've been tempted to build one of the systems with real hardware. I have a Wyse 60 CRT terminal that goes great with these.
 

Offline obiwanjacobiTopic starter

  • Frequent Contributor
  • **
  • Posts: 988
  • Country: nl
  • What's this yippee-yayoh pin you talk about!?
    • Marctronix Blog
Re: Zalt - an alternative Z80 homebrew computer
« Reply #21 on: January 27, 2017, 06:45:29 am »
I've been tempted to build my own CPU....  :o

Go for it!  :-+
Arduino Template Library | Zalt Z80 Computer
Wrong code should not compile!
 


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf