-
USB upgrade idea
an hour ago • 0 commentsI recently had an idea about adapting USB-FIFO modules into the many different retro UARTs.
Then I realised that adapting modules to a static RAM chip pinout was a better idea, because most retro machines have at least one of these. Even a ROM chip would have D0-7, A0 and /RD in the same position.
Using a memory chip socket allows an adapter to fit boards that don't even have a UART.
Like the Trump Card!
This is very desirable for me, as it avoids having to
- get hold of an ISA bus PC
- install and run MSDOS
- install the Trump card software
- find an analogue CRT based monitor
I know for some people that is part of the retro fun, but this board remake is already using a CPLD instead of TTL.
I just want to be able to talk to a Z8000 processor.
Having a modern PC replacing the original PC has these advantages:
- No ISA bus hardware needed
- Just needs a USB communication link
- Can be Windows or Linux
- Could drive a virtual Tektronix graphics terminal
I have a project about retro-fitting USB-FIFO modules to existing machines, including a log about fitting a module using an SRAM socket.
Hardware
The USB module needs to appear at Z8000 address 1.
The Trump card has a single FIFO which it calls a 'bucket', and has to handshake to give ownership to one processor at a time.
A USB-FIFO module has two separate FIFOs, one for transmit and one for receive. So no ownership exchange needed.
The Z8000 simply needs to read the status flags to see if the receive FIFO has data or the transmitter FIFO is ready to accept data. The Trump card already decodes address 3, so this seems the sensible place to put it.
The Trump card had the ability for the PC to give an NMI to the Z8000, e.g. after filling the 'bucket' with data bytes and telling the Z8000 to collect them.
The USB module has no way to choose whether or not to interrupt its CPU. It might be simplest to interrupt the Z8000 every time the receive buffer has data. The PC can then never be ignored. The Z8000 has no time-critical duties to do (like managing a disk drive), so an NMI should not be a problem.
Software
As with all the best toys say, "some assembly required". You will need to modify the Z8000 firmware but you will only be simplifying the communications routines a bit rather than adding lots of code.
-
Addressing inconsistency clarified
2 hours ago • 0 commentsJacques found that the Trump Card ports are not mapped as found in the Byte magazine.
It uses 3EB, 3ED and 3EF instead of 3E8, 3EC and 3EE.
98 7654 32 10 <-- PCbus address bit 3E8 = 11 1110 10 00 From LDZSYS.CO 3EC = 11 1110 11 00 3EE = 11 1110 11 10 3EB = 11 1110 10 11 From Byte magazine text 3ED = 11 1110 11 01 3EF = 11 1110 11 11The magazine article says:
"The 8088 selects the bucket when it performs either an /IOW (I/O write) or /IOR (I/O read) in the range of the IBM's regular memory-address space from hexadecimal 03E8 to 03EE. Accesses to these addresses are decoded by IC28 to generate the Trump Card's /PCSEL signal."
Looking at IC28 (a 74LS133) in the circuit (page 48 of the Byte article), we can see it detects the PC bus address 0x3EC. IC31 and 32 (page 49) clear or increment the counters.
98 7654 32 10 <-- PCbus address bit 11 1110 1x xx IC28 decodes 3E8 to 3EF 11 1110 1x 1x IC31 decodes 3E8,3E9,3EC,3ED to clear counters (write) 11 1110 1x 1x IC32 decodes 3E8,3E9,3EC,3ED to increment counters
IC32 asserts the increment signal whether reading or writing, but the clearing when writing will override the increment.
So the article words and circuit are consistent.
PC address line 0 is ignored, so 3EE = 3EF and 3EC = 3ED in action.
3E8 and 3EB differ in A0 (harmlessly) but also A1.
Looking at IC9 on page 49, we can see that reset is assert when PC address line A2 is low.
Which means any address from 3E8 to 3EB.
So, mystery solved. The firmware is not wrong, it just uses different 'don't care. bits.
-
Ghidra and Z8000 extensions
2 days ago • 0 commentsAnalysing binary software has usually been done by disassembling, deciding which bytes are code or not, telling the disassembler what is code, ascii, pointers, tables, and then repeating iteratively. It is painstaking work.
The American National Security Agency needed to do this to examine code for malware, and they developed the Ghidra program to make this easier to do. Load the binary, have an initial disassembly, and then you can go through it marking sections to be disassembled as code, or various types of data.
Installation
To install Ghidra, you must install the required Java Development Kit (JDK), download the official zip file, and extract it to your system. Ghidra does not use a traditional executable installer; the extracted directory contains the entire application.
Install the Prerequisites
Ghidra relies heavily on Java. The latest versions of Ghidra officially require JDK 21 (64-bit).
Windows: Download and run the JDK 21 installer from Adoptium Temurin or Oracle.
Linux (Debian/Ubuntu/Kali): Open your terminal and run:
sudo apt update && sudo apt install openjdk-21-jdk
macOS: Install via Homebrew using
brew install openjdk@21or download the installer package from Adoptium.Download Ghidra
Navigate to the official Ghidra GitHub Releases page.
Under the Assets drop-down of the latest public release, click the zip file to download it (e.g.,
ghidra_11.x.x_PUBLIC_xxxxxxxx.zip).Note: Do not download the "Source code" files, as they require manually building the software.
Extract the Files
Choose a permanent folder location on your machine where you want Ghidra to live.
Windows: Right-click the downloaded
.zipfile and select Extract All.Move the folder somewhere stable, like
C:\Tools\Ghidra.Linux / macOS: Extract it to your preferred directory (such as
/opt/or your home directory) using the terminal:sudo unzip ghidra_11.x.x_PUBLIC_xxxxxxxx.zip -d /opt/
Launch Ghidra
Open the extracted folder to run the application:
Windows: Double-click
ghidraRun.bat.Linux / macOS: Open a terminal in that directory and execute
./ghidraRun.
Adding Z8000
To add support for the Zilog Z8000 processor to Ghidra, you must manually install a third-party processor module, as Ghidra only supports the standard 8-bit Z80 out of the box.Because the Z8000 is an entirely different 16-bit architecture rather than a simple extension, you need a dedicated module containing the necessary .sla, .pspec, and .cspec definition files.
Step 1: Obtain a Z8000 Processor Module
You will need to download a SLEIGH-based language module for the Z8000.
- Community extensions (such as those shared on developer repositories like GitHub) typically bundle these files.
- Make sure your downloaded module matches your architecture needs, whether you are analyzing the non-segmented Z8002 or the segmented Z8001 variant.
https://github.com/jpelletier/Z8000/tree/main
Step 2: Install via the Ghidra GUI
The easiest way to add an extension module is through the application interface:
- Launch Ghidra and stay on the main active project window.
- Click on File in the top menu bar, then select Install Extensions.
- Click the + (Add extension) icon in the upper-right corner of the Extensions window.
- Browse to and select the downloaded
.zipfile containing the Z8000 processor module. - Click Apply or OK.
- Restart Ghidra to allow the software to compile the new SLEIGH language files.
Step 3: Alternative Manual Installation
NB Linux did not let me do this, because I did not have the required permissions. This is correct behaviour. Windows may let you do this.
If you downloaded raw language definition files instead of a zipped extension, you can place them directly into Ghidra's directory structure:
- Close Ghidra completely.
- Navigate to your Ghidra installation directory.
- Go to the processors folder: Ghidra/Processors/
- Create a new folder named exactly Z8000.
- Inside that folder, recreate the data subfolder path:
Z8000/data/languages/ - Move all your Z8000 definition files
(e.g.z8000.slaspec, z8000.ldefs, z8000.cspec, z8000.pspec<br>)
into that final languages folder. - Relaunch Ghidra.
Step 4: Verify and Use
- Open a project and click File -> Import File to load your Z8000 binary.
- In the Language selection dialogue box, filter or scroll down to look for Zilog.
- You should now see Z8000 listed alongside the default Z80. Select it, choose your compiler variant, and proceed with the import.
Well, the zip file seemed simpler, so I tried it. The file selection browser would not show any zip files. It hides any that do not have this exact format:
textmy-z8000-extension.zip └── Z8000Processor/ ├── extension.properties <-- MANDATORY METADATA FILE ├── Module.manifest └── data/ └── languages/ ├── z8000.slaspec ├── z8000.ldefs └── ...
Note: If the ghidraVersion listed in that file does not exactly match your active Ghidra version, the GUI installer will often throw an error or hide the extension.
The extension properties file was missing. So I created one, and created a zip file with the exact directory structure.
Ghidra installed this, and after restarting it managed to disassemble some code.
-
Host PC
09/21/2025 at 16:44 • 0 commentsI have a PC104 computer, but it does not have a case.
I have a nicely cased PC I use for my antique device programming/reading work, but that does get a bit hot and will lock up if I don't leave space between it and the device programmer. There is just enough space for one ISA board inside. I don't know if the board will reduce the airflow enough to cause overheating.
Ideally I would like a case that will show off the Z8000. Perhaps something with a glass side?
-
Gathering materiel
09/21/2025 at 15:07 • 0 commentsZ8001 and Z8581 chips
Already owned.
Two 74LS373, two 74LS245
I have these. I may change them for HCT versions, to reduce power a bit. And to see if the board still works with HCT.
Printed circuit board
2025-09-20 Arrived in the post!
EPM7128STC100-15
This was very generously supplied with the PCB, by Jaques. Merci! Some of the corner pins have been bent in transit, despite being in a sturdy box. Maybe it rattled onto the sides? Not a disaster, I am able to carefully push them back into place. I would have liked a microscope and a hotplate to help me do this. I have mounted it by hand, and it was hard to do. I need to clean it up with IPA and inspect with a microscope.
CY62157ELL-45ZSXI
This 512k x 16 bit SRAM is rated at 4.5 to 5.5 volts VCC, perfect for 5V technology. They cost about £5 from suppliers, but eBay is often much more expensive. This tiny chip provides as much RAM as the 32 DRAM chips in the original design, in a fraction of the space. I have mounted it by hand.
I ordered two CY62157ELL-45ZSXI chips (one for spare, or another project), and they have arrived.
Two 2K ROM chips (2716)
I have one of these, and over a hundred 64K EPROMs! Small devices are harder to find and often dearer than larger chips, but sockets are only 24 pins. I would like to make adapters so that I can fit larger, and possibly EEPROM, memories. The AT28C16 is a 24-pin EEPROM. An adapter would allow larger memories, allowing the board to boot directly into a monitor or BASIC, without the need for loading by a host PC.
I ordered and received two PQ2816 chips. These will allow me to get started without having to make adaptor boards. These are pin compatible, pin 21 being VPP or /WR, and pulled up on the board.
2K SRAM chip
Ordered and received 4 chips.
Silver solder and flux in a syringe
This makes nicer joints than the usual lead-tin solder. I don't use lead-free solder for hobby work, because it does not make joints as easy as leaded. I think the environment can cope with my few hobby boards. These have arrived from eBay. It turned out to be silver-tin, no lead. I didn't find it was very 'wet', so it reverted to normal lead-tin solder..
Crystal, 12 MHz
I have a 6 MHz processor. Low-height crystals are less prone to damage. I have 12 MHz.
DIP20, DIP24, and DIP18 sockets
I used two DIP24 sockets for the DIP48 CPU. All sockets fitted.
Various SMD passives
I usually work in labs with access to reels of these things, but I am between contracts right now.
I don't have access to surface-mounting equipment either, so I made do with what I have at home. Jacques told me that R25 is 22 Ohms, all the others are 10k.2025-10-11
Ordered 0603 resistor and capacitor kits, and a few 0805 capacitors, from eBay. All have been fitted.
Keith