Z80 Space-Time Productions Single Board Computer

Technical Support Information - HARDWARE


The HARDWARE page is an in-depth look the finer points of this vintage Z-80 computer board, how to communicate with it via RS-232, how to configure the memory, and a multitude of other technical items you will need to be aware of as you work your way through this PCB.

Here's a list of the topics covered here:

  • Board Layout photos
  • The Memory Map
  • The I/O Map
  • How to install various electronic components & Some Precautions
  • How to configure the ROM sockets & their jumpers
  • Memory-Mapping the I/O devices
  • Info about the 2114 Static Rams
  • RS-232 Serial Communication with the Space-Time Productions board.
  • Selecting a Power Supply to use with this computer
  • Interfacing using the 9513 IC socket and associated J-3
  • Interfacing using the 9511 IC socket
  • A look at the original Membrane Keypad
  • Doubling the System Clock
  • Other original Add-On Boards
  • A look inside my first Space-Time Productions computer
  • Where can I get electronic parts for my computer?
  • About IC datasheets...


Board Layout

Top View Bottom View

Click on the pictures for a full-size view in new window.


Memory Map

  • $0000-$0FFF Rom 1, normally the Monitor rom, supplied by R.Weiss.
  • $1000-$1FFF Rom 2, vacant or fill with my BASIC Rom 2.
  • $2000-$2FFF Rom 3, vacant or fill with my BASIC Rom 3.
  • $3000-$37FF RAM, 2K of static ram on board.
    $3800-$3FFF RAM, A11 is ignored in decoding, so this area repeats what is found in $3000-$37FF.
  • $4000-$FFFF, Vacant with the exception of memory-mapped I/O.
  • $DExx, $DFxx Memory-Mapped I/O if IC-29 74LS30 is installed.


I/O Map

  • $60-$63 = 8255 PIO # 1
    • $60 - Port A Data
    • $61 - Port B Data
    • $62 - Port C Data
    • $63 - Control Word
  • $64-$67 = 8255 PIO # 2
    • $64 - Port A Data
    • $65 - Port B Data
    • $66 - Port C Data
    • $67 - Control Word
  • $68-$6B = 8255 PIO # 3
    • $68 - Port A Data
    • $69 - Port B Data
    • $6A - Port C Data
    • $6B - Control Word
  • $6C-$6F = 8253 PIT (Programmable Interval Timer)
    • $6C - Read/Load Counter 0
    • $6D - Read/Load Counter 1
    • $6E - Read/Load Counter 2
    • $6F - Write Only Mode Word
  • $70-$73 = 9513 5x16 bit CTC/PIT
  • $74-$77 = SIO Serial Input/Output (RS232 communications)
  • $78-$7B = 8279 Keyboard/Display Controller
    • $78 - Read Keyboard / Write Display
    • $79 - Read FIFO Status / Write Mode Word
  • $7C-$7F = 9511 Math Coprocessor AMD


Installing the Components

Integrated Circuits - DIP's and Chips

On the top of the Z-80 pcb are markings in white which are called "Silkscreen" because of the method they are applied to the board (same as how logos are put on t-shirts). Near the spot where each IC belongs, there is a white bracket drawn on one end [ . This bracket indicates where pin 1 of each IC goes so you know which way to install each chip.

I strongly recommend purchasing and installing IC sockets. Solder the socket to the PCB, not the actual chip. Install the chips in the sockets. That way, if a chip goes bad on you, it's a lot easier to pull it out of a socket and replace than it is to remove the board and desolder the defective chip. Sockets are available from most electronics supply stores, included Mouser Electronics and BG Micro.

Where is "Pin 1" of an IC? The IC's used on this computer are considered part of the DIP family, that is, Dual In-line Package. Most every IC in this family has one of two ways to identify which direction it goes. Some of them have a notch, or an indentation in the package which looks similar to the notch which shows the "north" end of the IC.

Static Electricity


Many chips, including the ones for this board, are very sensisitive to static electricity. This can be as simple as holding the IC in your bare hand, the tiny discharge between your finger and thumb can weaken the junctions inside an IC and cause it to fail either immediately or later on down the road.

While it is not likely you will go out and purchase a static mat and static wrist band, you can use the black bag your PCB came in as a mat since it is static disappating material. Most times, the IC will easily survive transfer from it's black foam "bug-mat" material onto the board, you will want to be cautious to keep the IC's on their bug mats unless they are installed into the board.

I have found that while most TTL IC's (74LSxx, 74xx, 74Sxx) are not terribly susceptible to ESD (Electro-Static Discharge) damage, the larger IC's on your Z-80 computer are. The Z-80 microprocessor, the Z-80 SIO, the Intel P8279, P8253 and P8255 are more touchy. If the chip you are holding has a "C" in the middle of the part number, it is probably a CMOS family chip, and is thus much more sensitive to static electricity.

Bear in mind that most of the IC's called for on this board are of the "LS" family (Low Power Schottky). A 74Cxx or 74HCxx chip is not compatible with this board, you need to locate and use only the "LS" series IC's where indicated.

Installing the capacitors

There are three types of capacitors used with this board, you may or may not have received them with your "kit". The capacitors that are brown and look like Barbie Frisbee's with two wires sticking out are called "disk type". They are generally not polarized (There's no "plus" or "minus" indicated) so they can be installed either way without impact. Nearly each IC has a filter disk capacitor to keep noise off that particular IC's power supply.

The second type used is called an "Electrolytic" cap. It is usually in a metal can covered with blue or black plastic shrink and has print on it. It is important you insert these into the board with the correct polarity. Some electrolytic caps have the "minus" marked on the can on the side for that lead. C2 [100uF] as far as I know, is the only electrolytic capacitor used on the Space-Time Productions Z-80 computer, and the plus sign is clearly marked on the left of the circle containing "C2". The minus sign goes to the right, not in the side marked "+".


Note the "minus" line on the left side of the capacitor.

C34 is supposed to be a 33uF tantalum capacitor, located just above the J-10 power supply connector. These type are very sensitive to their polarity, and can go bad very easily causing the power supply to be shorted to ground.

There is an old electronics joke about these:
Q: "When is a tantalum capacitor bad?"
A: "When you look at it, it's already bad."

Well, they do tend to fail more often than other types, but mine has lasted a good while.


Installing an electrolytic or tantalum capacitor backwards will likely cause it to explode when the power is applied!
It will sound like a shot going off, and the smoke from a tantalum is noxious!

Installing the Resistors

Resistors do just that, they resist the flow of eletricity and are often used to "Pull Up" a place in the circuit to a specific voltage without stressing the components they attach to. They may also be used to keep a point from "floating to logic high" by pulling the circuit point low (to ground) until a signal is applied. This keeps some logic from false triggering when the input is not attached to anything. Resistors are not sensitive to polarity and can be installed in either direction without impact. I put all the resistors on so the band-ends are all facing the same direction, just because I like uniformity.

Resistor's value are measured in a unit called "ohms" (named for the discoverer) and are indicated by the tiny color bands on the resistor body. The values are measured in ohms, "K-ohms" which means thousands of ohms, and "Megaohms", or "Megs" which means millions of ohms. For example, a 4.7K resistor is actually 4,700 ohms. A 22K is 22,000 ohms.

While I could spend a ton of web space explaining how this color banding code works, I could just as easily let you drive over to Wikipedia where there is a huge discertation on the subject. Let me just simplify your life by giving you the color codes for the resistors used on this computer:

  • R1 - 4.7K ohm, YEL-VIO-RED
  • R2 - 47 ohm, YEL-VIO-BLK
  • R3 - 22K ohm, RED-RED-ORG
  • R4 - 330 ohm, ORG-ORG-BRN
  • R5, R6, R7 - 1K ohm, BRN-BLK-RED
  • R8, R9 - 4.7K ohm, YEL-VIO-RED
  • R10 - 1K ohm, BRN-BLK-RED
  • R11 - 470 ohm, YEL-VIO-BRN

NOTE: Not all resistors and capacitors are needed on this board!
Chances are good that you don't have a 9511 or 9513 chip. R8, C27, C28, C16, C17 and XTAL 2 won't be used if those sockets are vacant.

The one component that was lacking in most of the kits was IC-13, a 4.7K ohm 16-pin DIP package resistor. The actual proper part for this is a Bournes 4116-2-4.7K (or can be 4116-2-472, same thing). There are other variants of this which will work, e.g. 4116-2LF-4.7K. The 4114 or 4116 determines how many legs the IC has, 14 or 16. The 2 or 2LF is not relevant here (but do not use a -1 or a -1LF as they are not wired the same as the -2, -2LF), but the 4.7K figure is important since it is the actual resistance value.

There are several different internal arrangements the DIP resistor networks can come in, and only the right one will work correctly. Some packs are arranged with isolated resistors going straight across the chip [between pins 1-16, 2-15, 3-14, 4-13, etc]. The one required for this computer has 15 resistors, all of which have one end tied to pin 16 [+5 VDC]. This type is referred to as a "pull-up pack".


Mouser Electronics P/N 652-4116R-2LF-4.7K ,
around $0.48 each.

If worse comes to worse, you can solder a wire from pin 16 down the center of the box for IC-13 and solder 4.7K ohm, 1/8 Watt resistors between it and the other holes of the IC. If you don't have a 9511 and/or 9513 you will only need the resistors going to holes 06 (SIO), and 10 thru 15 (Z80 microprocessor).

Here's a list of the signals tied to the resistor pack [needed for operation are marked in this color] :

  • IC-13 ---- Point on the circuit board
  • Pin # ---- That the resistor goes to:
  • 01 ---- IC-19.20 (9513 Gate Input)
  • 02 ---- IC-19.22 (9513 Gate Input)
  • 03 ---- IC-19.23 (9513 Gate Input)
  • 04 ---- IC-19.24 (9513 Gate Input)
  • 05 ---- IC-19.25 (9513 Gate Input)
  • 06 ---- IC-02.04 (Z80 SIO ICI Input)
  • 07 ---- IC-17.04 (9511 SVACK-)
  • 08 ---- IC-17.03 (9511 EACK-)
  • 09 ---- Not connected
  • 10 ---- IC-01.24 (Z80 WAIT-)
  • 11 ---- IC-01.17 (Z80 NMI-)
  • 12 ---- IC-01.25 (Z80 BUSREQ-)
  • 13 ---- IC-01.16 (Z80 INT-)
  • 14 ---- IC-01.20 (Z80 IORQ-)
  • 15 ---- IC-01.18 (Z80 HALT-)
  • 16 ---- +5 VDC feeds resistors going to pins 1 thru 15


Actually, all electronic devices are powered by smoke.
If you let the smoke out of them, they will quit.


Jumpering the ROM sockets

The Rom sockets are designed to accomodate the following IC's:

  • 2708 - 1K x 8
  • 2716 - 2K x 8
  • 2732 - 4K x 8
  • 6116 - 2K x 8 Static Ram

Each type of IC is wired a little bit different, so you must set jumper wires into the configuring sockets to get them to act right. The Z80 always starts at address $0000 on Reset or power-up, so your IC in Socket 21 must always be the boot-up rom. Usually it is the Monitor Rom.

Someone mentioned to me that the 2114 1K x 4 rams were difficult to find, could they use a 6116 24-pin 2K x 8 static ram instead [These were common on the old Timex Sinclair computers].
Yes, you can. Follow these steps:

  • Select either IC-22 or IC-23 for the static ram (strongly recommend a an IC socket).
  • Connect IC-33.04 (-RAM) to Pin 18 of the Static Ram (-CE).
  • Jumper A10 onto the chip inside the jumpering silkscreen square, pin 19.
  • Hook (-WE) from the edge connector near the Rom sockets onto pin 21, also inside the jumering silkscreen square.
  • Hook (-RD) from IC-6.09 onto the Ram at pin 20, next to the IC.
  • Cut the trace (or lift the pin) that takes the Rom -CS signal between IC-33 and pin 20 of the Rom socket you are using for Ram.
This will configure the 6116 2K x 8 to map to the area $3000-$37FF (and again at $3800-$3FFF). The monitor will place the stack in this ram and your machine should work.

It's also possible to just put 6116 Static Rams in the sockets for Roms 2 and 3 and wire them with those chip enables. However, the ram will repeat over the 4K map space (e.g. $1000-$17FF = $1800-$1FFF). If you are just using the board for a simple control program, you can theoretically just have the program Rom in socket 1 and a 2K x 8 ram in Rom socket 2 and be done with it. The possible configurations are pretty much up to you here, but the original monitor program needs and expects ram in the $3xxx block, where the 2114's are wired to function.


Memory Mapping the I/O

The term "Memory-mapped I/O" describes the method in which I/O devices are mapped into the Memory-Addressing space, a specific address or range of addresses enables the I/O device chips.

This board has in its design the ability to memory-map it's I/O. If you include IC-29 (a 74LS30, 8-input NAND gate) the I/O devices will appear in the memory addressing from $DE60-$DE7F, and are echo'd again at $DF60-$DF7F. These equate to the I/O mapping of the hardware from port $60-$7F, however the 74LS42 also decodes them anywhere in the range of $DExx and $DFxx (see para below for this repeated mapping).


There is a warning in some of the documentation I received on this board that "All devices may not respond to the speed of being memory-mapped."
Why is that? During I/O operations, the Z-80 automatically inserts one wait-state (clock cycle) during read and write to allow for device 'settling'. Memory operations do not add this wait-state.

I'd like to add my warning that not all memory commands are appropriate for I/O. For instance, if you try to perform an "DEC (HL)" to a memory-mapped 8255 register, and it's command word has that port set for output, the necessary read from (HL) won't get an appropriate response from the 8255; a subsequent write back to (HL) after the decrement - there is no telling what the heck will get output, and you might burn up some valuable hardware finding out. Memory-mapping I/O does have some advantages in that some other commands are available that aren't to I/O that is not mapped into the memory. Personally, I'm not real crazy about having the memory map broken up in that way. I like to keep memory in the memory map and I/O in the I/O map.

On my Space-Time Z-80 board, I evaded using memory-mapped I/O altogether by not installing IC-29 and tying pins 1 and 2 of IC-32 (NAND) together, so that is acts as an inverter. (Fortunately, the monitor rom doesn't try to access its I/O as memory-mapped.) Later I figured out I could just as easily omitted IC-32 as well (since this one NAND gate is the only one used on IC-32, the other three are spares), by taking the output of I/O decoder IC-30.6 (74LS20) and tying it directly to IC-31.12 (74LS42 BCD to 1-of-10 decoder), making sure to detach the connection from IC-8.12 (74LS08 inverter). In reality, if you aren't using any chips 'off-board' addressed by the I/O, you could fully shortcut this design by tying IORQ- directly to the "D" input of the 74LS42, it would still work the same, but would repeatedly map, (as in the Memory-mapped I/O $DExx and $DFxx) like this:

  • $00-$1F
  • $20-$3F
  • $40-$5F
  • $60-$7F (where the Monitor expects all its I/O to be located)
  • $80-$9F
  • $A0-$BF
  • $C0-$DF
  • $E0-$FF
To accomplish this feat, just remove IC-29, IC-30, and IC-32; then lift IC-31.12 (since it is tied to the output of IC-8.12), jumper-wire IC31.12 to IC-6.13 (IORQ-). This is a good temporary solution if you don't have chips for IC's 29, 30 and 32.

The reason the I/O is addressed in a defined block from $6x-$7x, as told to me by the board's designer M.Simon, is that if you needed additional I/O, you could just sandwich another Space-Time board with the main one by putting a ribbon cable between the J-9 connectors of both boards. The Master board would have the microprocessor, clock circuits, bus buffers and I/O devices. The Slave board would have no microprocessor or bus buffers of its own, only the I/O chips (8255, 8279, 8253, and SIO) and decoding logic (esp IC-31 [74LS42], IC-28 [74LS08 Inverter], IC-08 [74LS08] and IC-30 [74LS20 4-input NAND] to decode the Slave board's chips, wired to whatever address bus signals you wanted, decoding of the Slave pcb's I/O so that it responded, say, to $80-$9F so that it would not collide with I/O of the Master board. It might be a little tricky, but could work pretty well I think. This would really open up the world of possibilities if you needed to control a lot of points, or a large display.


2114 Static Rams

The decoding problem - a design flaw.

As you have probably figured out already from the schematics, the 2114's which make up a 2K block of memory appear in two different places in the Memory Map. They are mapped from $3000-$37FF and the same IC's magically re-appear from $3800-$3FFF. The problem with this is that if the Stack Pointer is at $3FF0 and you poke a byte at $37F0, you have just altered the stack contents. The only times the Monitor Rom assigns anything to this area, is to set the SP and to place the Breakpoint address and replacement byte just above the SP. It refers to this memory as $3FFD, not $37FD. So be careful where you write your software and program variables so as not to collide with the machine space.

I don't have a practical solution for this problem; if you add some decoding logic to stop the 'echo', you have to set the ram so it appears from $3800-$3FFF. If you want it to appear only from $3000-$37FF then you are faced with also having to edit and re-burn your Monitor Rom so that it accesses only the lower 2K area of this 4K ($3000-$37FF) page. If you are not adding a memory expansion board to this Space-Time Z80, then the easiest thing is just to watch your step when coding.


RS-232 Serial Communication II I IIII I II II I III I I II I III I II I III I III I I I II

The RS232 Serial port is what the Z80 SBC uses to talk to the rest of the world. It was designed originally for a Video Data Terminal to be hooked up to it - those were popular and plentiful during that era, but are a little hard to come by these days, not to mention cumbersome.

I recommend hooking this port up to your desktop PC computer via its D-9 RS232 Serial port and use Window's own Hyperterminal program to communicate with it. You can then use this program's "Send Text File" function to send an Intel Hex program coded and assembled on your PC, into the Z80 for execution. This is about analogous to using an airliner to communicate with a pterodactyl, but it works quite well.

Most of you will be able to use a simple RS232 cable that connects only Ground, TXD and RXD.
D9F.....D25M
------------
2-------2 (txd-->rxd)
3-------3 (rxd<--txd)
5-------7 (ground)
------------

Some PC's need the status pins set to a logic low condition in order to send or receive data. Depending on your computer's BIOS, this is as simple as adding a jumper wire on your D9F end between pin 7 (CTS) to pin 8 (RTS).

If that still doesn't work for you, (my earlier Compaq fell into this category) you may have to resort to the following cable:
D9F.....D25M
------------
2-------2
3-------3
4-------6 (dtr-->dsr)
5-------7 (ground)
6------20 (dsr-->dtr)
7-------5 (rts-->cts)
8-------4 (cts<--rts)
-----------

Standard RS-232C Signal Definitions
D9 - D25
-------------------------------
1 - 8 CD carrier detect
2 - 3 RD receive data
3 - 2 TD transmit data
4 -20 DTR data terminal ready
5 - 7 GND
6 - 6 DSR data set ready
7 - 4 RTS request to send
8 - 5 CTS clear to send
9 - 22 RI ring indicator

Usually the status signals are paired RTS-CTS,DSR-DTR.

The Space-Time Z80 SBC does not require any hardware lines to be set but can receive and test DCD (pin 8) and CTS (pin 5), but you will have to develop your own software code to test those signals at the SIO if you intend on using hardware handshaking with the terminal or program. [The port also outputs DTR (pin 20) and RTS (pin 6) and these operate as I/O pins and can be controlled via the SIO command registers.] If you are using the original monitor rom, you will most likely want to use the 4800 baud setting, with 8bits/byte and 1 stop bit.

IMPORTANT NOTE: The baud rate is determined by which output of the 8253 timer you strap to the SIO's TXC/RXC clock inputs. If you don't hook one of these signals up to the SIO, you won't get any communication with the board!

The original 2716 Monitor rom sets up the 8253 to output the following baud rates:

  • 4800 (J-4.9)
  • 300 (J-4.12)
  • 110 (J-4.4)
The 8253 outputs a square wave clock at 16x the desired baud rate, the SIO divides it by 16 interally. The SIO's TXCA and RXCA (channel A clocks are on the IC's pins 13 and 14, and are taken out to the J-2 Serial expansion connector on pins J-2.13 and J-2.14 respectively. You will have to solder a piece of wire-wrap wire from the 8253 PIT output over to the SIO, I recommend using the edge connectors, not the IC sockets to keep heat off the IC's when soldering.

You also need to tie the GATE signal for that particular counter high (+5V) on the 8253 in order for the counter to run.

The GATE signals are located as follows:

  • GATE0 - IC-18.11 - J-4.11
  • GATE1 - IC-18.10 - J-4.14
  • GATE2 - IC-18.16 - J-4.6

You may wish to tie the GATE enable to a 8255 I/O pin in order to enable/disable the RS-232 serial port, but I don't recommend this unless your code sets this pin when it's ready to communicate with the world.

The 2MHz clock is not traced over to the 8253 PIT, either; You will have to run a second piece of wire-wrap from the output of IC-7.12 (there are 4 circular solder pads there to get tap it from) and pull that clock over to the 8253 CLK inputs CLK0 (J-4.7), CLK1 (J-4.8), CLK2 (J-4.14) again on the edge connector.

Most of you won't have IC-17 (or anything attached to that socket), the 9511/12 Math processor; there is a CLK signal available on pin 23, which is much shorter run than over to IC-07.
If you are modifying the system clock from 2 to 4 MHz (see below for how to do this) you should probably use the 4 circular pads to get your 2 MHz correct baud clock. Using IC-07.23 in this case would cause your baud rates to be doubled, in some cases non-functional.


What are all those pads for around the SIO? Well, good question. They are attached to the SIO at different pins in order to bring the signals near the connectors. Not sure why, but here's what it can do for you: The 8253 PIT's output clock has to be wired over to the SIO in order to get it to work. For Serial Port A, the Receiver Clock is on pin 13 [RxCA] and the Transmitter Clock is on pin 14 [TxCA]. The vertical line of pads between the SIO and IC-33 has both those signals, which can be easily soldered together or jumper pins soldered in and the signals jumpered together. These same two signals also come down just to the right of J-2, again you can solder jumper pins in these holes, or just solder them together and run a wire over to the 8253 output of your choice (depending on what baud rate you want).

Serial Port "B" is not quite so easy. There were three iterations of the Z-80 SIO chip, the SIO/A, the SIO/B, and the SIO/C. These IC's are very similar in function, but unfortunately the pinouts are different on all three chips. I noticed the SIO that I purchased with my board is a /A model, whereas the board that I was given by Gary Stephens has an SIO/C.


Here are the pin assignments for the different SIO variants.
These are taken from my schematic diagrams for the Space-Time Productions computer.

If you aren't using the other two counters for anything, they can be used to asynchronously track outside devices like external switches to monitor number of clicks, objects, events on a conveyor line - pretty much anything that needs to be counted down without taking valuable processor time away from the CPU. Only remember to reload the counters with your initial values and set the mode accordingly. This chip also makes a good audio tone generator, or real-time interrupt pulser, etc.

Advanced note:
2MHz is not evenly divisible into RS232 Baud rates, so the clock divided output to obtain 4800 is actually 2MHz / 26 = 76,923.07Hz. Divide that inside the SIO by 16 and you get 4807.6923. It's close enough that the framing matches up and you can talk at 4800 baud.

If you try to jazz this up to 9600 baud with the "B" command from the monitor, the closest divisor you can use is 13. This outputs 153,846Hz at the 8253 for a baud clock of 9615.3846. This slightly faster clock won't communicate because the framing won't sync; it's just too fast to be called 9600 baud. You can adjust it down to 2400 (count of 52 delivers 2403) and 1200 (count of 104 delivers 1201.923), those work o.k. but are slow communication rates. The Z80 actually ends up running in circles waiting for the SIO status to clear at these slower bauds.

The solution
The right way to fix this is to find an old PC modem card, or an old RS232 serial/parallel port card. Look for a rectangular metal can crystal (XTAL) that is stamped 1.8432MHz. Desolder it. It hooks up much the same as a TTL IC, getting its 5 Volts from the upper left corner, its ground from the lower right corner and the perfectly TTL compatible output is on the other pin on the +5 volt side. Usually there is a black 'dot' over pin 1 of the device. You can glue this darn thing right onto your board (or rig it somehow into the two holes adjacent to the 8253) and take this output to the 8253 CLK input that you want to use for baud rate generation. Now it will clock accurately, and you should be able to jack your Baud rate up to 38,400.


I soldered short wires and female pins onto this Xtal oscillator leads and attached them to the J-4 connector.

I strongly recommend you burn a new monitor rom with the updated values for the 8253 so you don't have problems with the old monitor trying to run the wrong rate. If you can't do that, then start with the 110 baud rate counter(PIT#2). [It will clock close enough with either a 2MHz incoming or a 1.8432MHz incoming]. Once you boot up at 110 baud, then issue the "B" command and change the counter's rate up to 38400 (count value of "3" instead of "1136").

Let me just say here that program loads at 38,400 are lightning fast compared to the pokey 4800, and the entire memory lists in a few short seconds. I strongly recommend this modification for your board, but you will have to burn a new monitor program rom with the new values. Refer to the monitor page for some source code regarding the 8253 PIT.

For you people using this board for some kind of MIDI processing, MIDI's baud rate of 31250 is evenly divisible by 2.0MHz, so you could strap one of the SIO's using this clock if you need, and re-program the counter and SIO accordingly. If you leave the SIO at 'divide-by-16', the 8253 count is "4". This divides the 2MHz by 4, giving 500,000Hz output which is then divided by 16 inside the SIO where it becomes 31,250 baud.


There are two pairs of discrepancies between the original schematic and the physical board itself.
I found these while trying to wire up the second serial port of the Z-80 SIO.
On Sheet 1 of 4, where IC-2 (Z-80 SIO) connections to J-2 are shown,
the original schematic shows the following pins:

  • IC-2.30 - J2.9
  • IC-2.29 - J2.8
  • IC-2.28 - J2.7
  • IC-2.27 - J2.6
  • IC-2.26 - J2.5
  • IC-2.25 - J2.4
  • IC-2.24 - J2.3
  • IC-2.23 - J2.1
  • IC-2.22 - J2.2
The actual connections are as follows:
  • IC-2.30 - J2.9
  • IC-2.29 - J2.8
  • IC-2.28 - J2.7
  • IC-2.27 - J2.5
  • IC-2.26 - J2.6
  • IC-2.25 - J2.3
  • IC-2.24 - J2.4
  • IC-2.23 - J2.1
  • IC-2.22 - J2.2

I have corrected this in my DXF format schematic drawings. I don't know if the small RS232 adapter board you get with the Ebay kit correctly hooks this or not - someone who has this, write me and let me know. I discovered the discrepancy trying to build my MIDI interface for using the second SIO channel (B), couldn't get the thing to work. Finally started tracing signals from my circuit to the SIO and kept finding them in the wrong place. I haven't traced this against the SIO-1 or SIO-2, it may be that the socket is actually designed for one of them instead of the SIO-0.


Selecting a Power Supply

It goes almost without saying that you will need a decent power supply for this project. If you are using RS232 serial communications with this board, at a minimum you will need the following:

  • +5 Vdc at about 1.5 Amps
  • +12 Vdc at about 100mA
  • -12 Vdc at about 100mA
I salvaged a "Power-One International Series" HTAA-16W-A power supply off an old piece of medical equipment. It is small, 6-1/2" x 4" x 2", and is rated at:
  • +5 Vdc @ 2Amps
  • +12 Vdc @ 0.4Amps
  • -12 Vdc @ 0.4Amps

It also contains a note on silkscreen that says "Negative Output usable at -5V 0.4Amps by jumpering E1-E2 and resetting R25" (potentiometer). This is a nice hefty, linear mode (not switched-mode) power supply that runs cool complete with potentiometers for fine-adjusting the supplies. I have found this supply does a great job.


Front view


Back view

The + and - 12 Volt supplies are used mainly to drive the RS-232 outputs, and in the rare instance you are using a 2708 Rom (which also requires -5 Volts as well) you would need +12 for this. I have also used the + and - 12 Volts to drive an op-amp in conjunction with the LCD display, bear this in mind if you intend on using a BG Micro 2x40 LCD display with your computer.

Although I have not experimented with this on the Space-Time computer, I am fairly certain that if all you had was a +5 Volt supply available to you; you could tie your +5 supply to the +12 connection on your pcb, ground the -12 connection and still very likely get an RS-232 output which would suffice for the short run from your board to your PC, but not much further. The reason I suggest this is that all of Garmin's GPS serial data outputs are positive-going pulses only, and they seem to work just fine with the PC's they are mated to.


Do NOT use a PC personal computer power supply with this board!
Those supplies are designed to output +5 Vdc at a whopping amperage between 25A and 45A, and are designed to deliver under this type of load. The output voltage can be sometimes unpredicable when faced with a smaller load like the Space-Time computer. PC power supplies consume several Amps of AC current on the input (that's why your home computer puts a pretty sizable kilowatt/per hour draw against your electric bill every month). If you connect one of these to your Space-Time computer, it's very possible that an over-voltage from the smaller load will burn up your chips. I strongly recommend you go with a smaller power supply.

You will find that if you will spend a little time in the salvaging business (Translation: "Dumpster Diving"), you will come across old electronic equipment. Most devices use +5 Vdc and some variant of the other voltages, but a lot of boxes that have an RS-232 connector contain some type of +12Vdc, -12Vdc power supplies as well.

Be patient! Start dredging in garage sales - especially for old printers, 'antique' shops, old equipment clearance warehouses, storage unit liquidations and junk shops.

Here's a little note from my past career: Don't be afraid to visit hospital Biomedical departments. These are the guys that fix and calibrate the medical equipment. Tell them what you are building and that you need a small power supply that has +5 and +12 and -12Volts. They OFTEN have obsolete or otherwise unrepairable patient monitors, printers, blood pressure machines, GI Lab and Cath Lab interfaces or Clinical Lab devices that have exactly what you need on the inside. Usually if a device has a DB9 or DB25 connector on it and measures about one or two cubic feet, you probably have exactly the right box.

Hospitals usually have several rooms, if not a whole warehouse - true! where they stuff obsolete machines. These rooms and warehouses are often at the sole access of the Biomedical Technicians! A lot of the older equipment that is still floating around has all kinds of nifty IC's inside, too. You might find processors, data bus buffers, misc logic and often A/D, D/A converters along with pressure sensors and other fun gizmos. These are great for experimenting with on your Z-80 computer.

Ok, enough about digging thru the trash, on with the presentation...


About the AMD 9513 and J-3 Connector...

The AMD 9513 Counter IC is a rare one, to say the least. It was very similar in function to the 8253 Programmable Interval Timer (PIT) which is also used on this board for Baud Rate Generation (plus whatever else you want to tie to it), but it has 5 separate counters, gates and sources. It also has a spot for an external crystal in order for the chip to act as a real-time clock. [As a note, the Dallas DS-1386P does a much better job as a Date/Time clock].

Because they are rare, most boards won't have them and it's really a waste of effort to even attach a socket there for the most part. With that being said, the "holes" for IC-19 is an inviting place to be able to add some functions to the Space-Time Productions board. Many of the pins from this chip socket go over to the edge at connector J-3 where signals may be interfaced to other hardware.

I/O Port Decoding for IC-19 - The /CS signal at this IC is decoded from the same place the other board I/O is and responds to addresses from $70 thru $73, however only the AB0 line is brought to IC-19, so you can actually only select one of two port locations (e.g. $70-$71, or $72-$73).

Here is a map of the 9513 area and it's connections to J-3:

Power and ground are provided to both the socket and to J-3. +5 V goes to both IC pin 1 and J-3 pin 1. Ground is available at IC pin 21 and J-3.2. The Z-80 data bus is brought up to the IC from pins 12 thru 19. Address bus signal AB0 hits the IC at pin 8. Control signals /WR (9), /CS (10), /RD (11) are needed for most I/O operations. A 74LS32 (logical OR gate, DIP 14) can be used to tie /WR-OR-/CS, /RD-OR-/CS and thus send the new /RD and /WR only when the I/O port for IC-19 is selected.

Although I have not expanded my board in this area as of this writing (Nov 2007), this would be a good place to add a ribbon connection or standoff to a floating PCB for almost any variety of applications. Here's a few suggestions:

  • Bi-Directional Data Port - a 74LS245 could be attached (even by mounting the IC on a small piece of IC perf board and standing it on its edge along the side of IC19 where the +5, signals, and data bus are located). Connect one side of the IC's buffers to the data bus pins, and the other side to the vacant connections at J-3. With the the /CS logically OR'd with the /RD or /WR signal and those new signals taken to J-3, it would allow the port to Read or Write to any parallel-connected device while isolating the Z-80 databus from the data bus at J-3.
  • Output Ports - Attach one or two 74LS374's in the vicinity of IC-19, and optionally use it's outputs to drive a ULN2803 high-current driver IC and take those outputs to J-3. There are enough pins for two such circuits for a total of (2) output ports, (16) discrete outputs.
  • Input Ports - Attach a 74LS244 or 74LS245 and connect inputs to J-3 to read in data from off-board switches or buttons, etc. While most TTL inputs tend to "float" to logic high without a ground on them, it's probably a good idea to use resistors tied to +5 to assure the signals are pulled high until the off-board switch or device pulls the signal to ground. Note that there are 5 "GATE" signals which already use IC-13 resistor pull-up pack which would make ideal Discrete Inputs.
  • ADC0808 Analog-to-Digital Converter - This is an excellent place to install this IC, however since the pins don't match up, you will likely have to float a board above this and connect the correct pins to the socket for the ADC0808. The J-3 pins can be used to bring in the 8 analog 0-to-5V signals and since +5 and GND are already at J-3, this would make it very easy to hook up potentiometers (just hook the wiper of the potentiometers to the analog input pins) or other sensors for readback. A logic NOR gate would have to be used to provide the logic HI signals required to select and operate the ADC0808 (download a PDF of this datasheet online for more details). Also bear in mind a 500kHz to 1MHz clock is needed to drive this IC as well as AB0, AB1 and AB2 which will have to be connected from nearby IC-4.

About the AMD 9511...

Like the 9513, the AMD9511 "Mathbox" [as I call it; it's a floating point math processor, probably the first "co-processor" of its kind] is also rare and probably not an IC that you are going to easily locate. I've only seen a couple of them on S-100 type boards. The socket for the 9511 on the Space-Time Productions board also provides some good connections into the system.

In the case of my first Space-Time Productions computer board, I used this area to interface my 2x40 character LCD display. By soldering a 24-pin wire-wrap socket to a Radio Shack pcb, I was able to solder the tips of the wire-wrap pins into the holes for IC-17 (9511). This "floated" the Radio Shack pcb about 1" above the Z-80 PCB (and that's what I mean by the term "floating" throughout this discussion).

This also gave me easy access not only to data, ground, and +5 volts, but also AB0, /RD, /WR, /CS (for this I/O port), CLK - the main Z-80 system clock, and /WAIT. Having +12 and some vacant pins [5,6,7 and 24] to attach -12 V and other signals made this an ideal place for the LCD interface. I have included a special web page just for the LCD and interface, see the menu in the frame to the left. This chip was decoded as I/O addresses $7C thru $7F.

This could be used in similar fashion to the 9513 socket above, a number of I/O devices and interfaces could easily be attached at this point, however bear in mind this socket was designed only to be an IC interface, there are no vacant socket pins which take connections to the edge of the Z-80 board, in the way the 9513 has J-3 tied to it. If you add an interface here and it connects off-board in some way, you must provide the connector(s) as well.

Here are some ideas that might work well with the 9511 socket:

  • RESET-Proof Data Latch - There are times the it would be nice to determine if a certain event had taken place prior to a hard RESET being given to the Z-80. This could be useful to see if code had arrived at a certain place in a program before locking up, etc. This would consist of a 74LS374 with both D-inputs and Q-outputs wired to the databus. /CS OR /WR would clock the data in, and /CS OR /RD would allow the /OE of the latch to output its data back to the bus. This would essentially act like a single ram byte, but would not be subject to the usual ram-clearing startup routines of some programs, especially BASIC. In fact, BASIC could be modified to check this latch to see if a program was in residence, even after a cold-start vector was given (which would otherwise clear all program ram).
  • LED Status Indicator - This would also be a simple 74LS374 port or two 74LS374's to give 16 bits, and a set of LED's with series resistors to give indication to the user/programmer. This port could simply echo characters output to the RS232 port (for visualizing the traffic flow) or to indicate the on-off status of a certain 8255 PIO port, keyboard characters waiting in the 8279 FIFO, etc. This would be a good general-purpose status indicator.
  • DIP Switch Input Port - A simple 74LS244 and an 8 DIP Switch would allow the user to set bootup conditions for the computer, such as RS-232 Baud Rate, 8279 Enable/Disable, Enable/Disable High Ram (Put the SP at $3FFD or $FFFD ?), and so on. A new boot rom would have to be burned which would look at this port and take actions based on the switch settings.
  • One of the projects I have considered for this board is to be the backbone of a Commodore 6581 SID based music synthesizer which could receive MIDI data thru the SIO. The SID requires +5, +12, D0-D7 data bits, AB0 thru AB4 address bits, Ground, a 1MHz clock, /WR, and /RESET (the 9511 IC used RESET-H instead of /RESET, but a simple inverter would work here, 74LS04 or similar to make it compatible with the SID). I have theorized that the extra clock cycle afforded from the Z-80 by virtue of the data transactions being I/O instead of memory might allow enough translation that the 6581 IC would communicate smoothly with the Z-80 at 1MHz whilst the Z-80 runs at 2MHz. The only output here would be the actual audio signal itself to a connector off-board where a simple set of cheesy computer speakers could be connected for listening.

Doubling the System Clock
and considerations

The main clock crystal used on the Space-Time Productions board is 4 MHz and is divided down to 2 MHz for the CPU, 8279, and SIO chip. While this works ok for most things, it may seem a little slow for certain hardware applications. BASIC execution can be sped up using this modification.

Many of you have Z-80 CPU's out there that are rated for a lot better than 2 MHz. Some of the DIP-40 chips are rated for up to 6 MHz. While there are board-wide considerations, there is a simple modification you can put on the board that will bring the main CLK signal up from 2 MHz to 4 MHz without a lot of stress. If you'll look at the schematic sheet which contains the XTAL and Z-80 CPU, you'll see that the crystal's signal is amplified and 'TTL'd by IC-07, a hex inverter and then sent to IC-09 which is a 7474 Dual D Flip-Flop. This Flip-Flop acts as a clock divider bringing the main board clock down to 2 MHz. The other half of the 7474 divides that signal again down to 1 MHz which can be used wherever needed on the board. Essentially, this mod bypasses the 7474's dividing circuit at IC-07.

The way I implemented this on my first Space-Time board was to remove IC-07 from its socket, lift pin 11 out horizontal and wrap a short piece of Kynar wire-wrap (AWG30) around the tiny pin. Then I stripped back a short piece of the other end of the Kynar and soldered it to the upper area of pin 6. Lifting IC-07.11 removes the 7474 feed into that inverter and the wire allows a straight shot of 4 MHz to pass unabated. IC-07.08 then delivers the faster clock to the Z-80 processor while IC-08.10 delivers the same phase CLK to the rest of the board. This signal drives:

  • Connector J09.32 which goes to anything external you may have added.
  • 8279 Keyboard/Display Controller IC-20.03 - Which is fine providing you have one that can run to 4 MHz.
  • Z80 SIO IC-02.20 - This is the overall clock for the UART, not necessarily the baud rate clock
  • 9511/23 IC-17.23 - I use this spot for my LCD adapter so there was some timing concern here.

Hardware and Software Considerations

As with any alteration on the board, you should be on the lookout for adverse impacts. Doubling the CPU clock allows for faster execution of the code and handling of I/O. While most things will operate pretty well, there are a few things that can get flaky. CPU - Before you attempt this mod, be sure the Z-80 CPU you are using is rated for 4 MHz operating speed. You can do a part number search in Mouser Electronics or get the spec sheets directly from Zilog if you aren't sure.

8279: If your 8279 Keyboard/Display Controller at IC-20 isn't rated fast enough, it might not be able to handle the increased rate. The standard 8279 is rated for 2 MHz or slower. I have an 8279-5, which is rated for 3.125 MHz or slower, however it seems to be working just fine at 4 MHz. I realize the prescaler for switch debounce and display scan is now at 200kHz instead of 100kHz. So far everything I've tested with the 8279 appears to be working well. The largest value you can program in at the Mode Set is $31 (the mode word becomes $3F) which would deliver 129.032 kHz to the prescaler output, about as close as you can get to 100 kHz. [This highlights a sad flaw of the 8279, many incandescent or LED displays illuminate quite a bit better at much slower clock speeds as the amount of 'on-time' increases and allows better visibility. It's a shame they didn't provide for a larger prescaler to be programmed in.]

SIO: I have not seen any adversion to the Serial I/O due to increasing the clock speed. Bear in mind, this clock handles the transfer of control registers between the SIO and CPU, not the baud rate generation inputs. I derive my baud rate generation from a separate 1.8432 MHz clock generator which runs the 8253, not from the main system clock.

LCD Timing: Interestingly the CPU exchange with the LCD display doesn't seem to have been impacted at all by the increase in speed. This is strange because there is a hardware change in how fast the CPU exchanges register data with the CPU, but also there is a custom circuit which generates wait-states for the CPU and the LCD Enable signal. No apparent impact. Not only was this hardware a concern but there is initializing software which drives the LCD which calls a precision timing routine. No apparent impact there either.

Software Considerations: The one thing truly impacted by this was all the pieces of code I've written that call the monitor routine TDLY. This short subroutine in code is designed to render a minimum 60 microsecond (uSec) delay for DE=0001 and adding 20 uSec for each additional value of DE, up to 1.3 seconds or thereabouts. Interestingly, the LCD initialization routine calls TDLY with values set for the factory minimums to initialize the LCD, and by effectively cutting these execution times in half I expected the LCD to not initialize properly. It performed just fine with the new values, so I don't see a lot of cause to go and and reprogram the boot rom to correct this. I did notice that several programs I had written called TDLY to set the speed of LED movement or lamp cycling in such programs as the I/O demonstration and the Christmas Tree controller. Those programs will have to be altered to make them work they way they used to because they are a little fast for my taste.

Several things work a lot faster with the CPU sprinting, BASIC execution seems to have benefitted most from the mod. The monitor was fast at 38,400 baud so not much to see there. I imagine this probably gave some stability to OBJ file loads as the CPU isn't having to rush to process each streamed incoming character. Loading programs into BASIC is still a little testy - I like to send it straight ASCII text (as the program would appear in a printed listing). This still requires some delay, but I've not determine what minimum values work. This is because of the CRUNCH routine in BASIC that scans the typed sentence for keywords and tokenizes them into memory, moves all the pointers and then goes back to see if the user has typed another line. The way I have resolved this is to put a 100 mSec delay after each line in Hyperterminal at the PC end. I'm hoping some day I'll get my CF card interface wired in and I can quit having to tie the HAL9000 to my PC for program loads.


The Original Space-Time Keyboard / Display PCB

This is a photo of a membrane-keyboard and display interface that was designed and built for this SBC. I do not have this board for my unit.
What I do have is a listing of the 8279 Operating System Monitor Rom which was delivered to me in .BIN format, also courtesy of Ron Weiss. After examining the disassembly of this code, it became obvious that it uses this exact hardware. I have disassembled and fully commented this version of the monitor rom.

You can download it here: 8279 Op System ASM

There is a good joke in this monitor - it lights certain segments of the numbers to spell out words like "HELLO" and "SP="; The laugh is when you key in something wrong the error message is spelled "ERORR" instead of "ERROR". Ha ha! How many of you saw "The Forbin Project" where the computer would answer "I am incapable of er-roarrr"? What a classic!


Additional Space-Time Production PCB's

This is a photo of the two additional PCB's that were built for this board. The most recent Z80 Kit listing that Ron Weiss has placed on Ebay includes these boards. The large board is for ADC0816/0817 Analog to Digital converter IC's and the smaller boards is to convert the TTL signals for the second serial port into RS232 +- 12Volt signals.

The RS232 board uses a 1488 and 1489 converter IC and some filtering capacitors. These are the same signal level converters that are used for the primary serial port on the main CPU board, should still be easily available.

The analog-to-digital converter board allows up to 4 of the ADC0816 type IC's. These are 40-pin DIPs that have 16 input channels for input, and convert a voltage from 0 to 5Vdc into an 8-bit word from $00 to $FF. This board would provide up to 64 input channels, but the signals would all have to be in the range of 0 to 5 Volts. These are great chips, which allow you to read in a knob or joystick position without a lot of fuss and external circuitry. Their one drawback is that you have to select which channel you want to convert (one at a time), start the conversion and wait until it's done to get the results. Fortuanately there are handshaking signals on the ADC series chips to alert you when the conversion is done, and I don't know how these signals are implemented on the board, but from the photo it appears that it ties to one 8255 port, likely taking up all 24 I/O bits.

A good application for this would be to tie in a control panel with a lot of knobs for setting levels of something you are wanting to control. This would take all the keypad/display software headache out of passing parameters from user to computer.


My Computer, an Interior View and the Discrete I/O Board


An inside view of my 19" rack mount cabinet.
Also a view of my Discrete Input/Output board using ULN2803 IC's and SIP resistor pullup packs for the input switch detection.

In my design for the I/O board, I decided that each 8255 should be configured
A=Output
B=Output
C=Input
This way, if the 26-pin cables from the SBC get inadvertantly switched (which I have done before) the outputs and inputs won't get damaged, they just operate funky (wrong lights, wrong switches - hmmm...).


Where Can I Buy Parts for My Z-80 Computer?

While DIP IC's are starting to become a little more rare all the time, there are some companies which still support these because there is still so much equipment out there that depends on them. These are the companies that I lean most toward:

  • www.bgmicro.com - BGMicro Electronics. Very friendly, has a ton of stuff and an on-line catalog of all kinds of electronic gadgetry and parts. I bought my 2x40 LCD display from him. There is no minimum price or quantity to buy.
  • www.mouser.com - Mouser Electronics. Another friendly, Texas-based company. They have a much larger selection than BGMicro and will send you a huge, beautiful catalog just for the asking. Their catalog website also has a huge selection of PDF IC Datasheets for just about any part or piece you want. Mouser also has no minimum quantity or minimum invoice total either. Which also makes them great.
  • www.digikey.com - Digi-Key. Although another huge electronic supplier, just not as good with prices as Mouser, but they are preferred vendor for a lot of folks and can get you just about anything you need, also will send you a catalog for asking. As I recall, though, Digi-Key has a minimum $25.00 buy, ok for most orders, but a problem if you only need a couple of IC's or something - Try Mouser instead.
  • Contact Me - I have a good selection of 74LS series chips and a few other odds and ends laying around. If I have it, I will likely get it to you for a little over the shipping.


IC Datasheets

Over the course of these past few years of research and experimenting I have collected PDF files of all the IC's used with the Space-Time Productions Z-80 computer. Because of bandwidth and file space limits, I have not included them on this website (in fact, most are easily available from other sources on the Internet).

I believe that this hobby is all about sharing the fun, so contact me if you are missing some needed datasheets and I'll do everything I can to get them to you.

The AMD 9513 5x16-bit counter and the AMD 9511/9512 32-bit Mathbox are very rare IC's that have sockets designed for them on this computer. I have not had much luck locating them, and at some point along the growth and morphing of my own computer I decided that I do not need them. I was able to locate the PDF datasheets for both of them, so if your are curious or need some reading to put you to sleep at night, contact me and I'll send them your way.

Happy Hobbying!


Click HERE if you do not see a menu frame to the left.

This page created September 18, 2004. Updated regularly.

This website and all original information contained herein ©2006, 2007 J.Owens.
Other information credited to its sources.
This Site is not affiliated with Space-Time Productions, Mr. M.Simon, or Mr. Ron Weiss,
however I extend a grateful Thanks to those parties.
This site has a sole purpose to provide technical information, and is not intended to infringe any prior
copyrights nor to derive funds that would otherwise be the property of Microsoft, Space-Time Productions
or it affiliates, either past or present.
May the Schwartz be with you.