• Please review our updated Terms and Rules here

Cromemco ZPU Mystery

zoggins

Member
Joined
Aug 28, 2021
Messages
15
So I have a working 8800c with an 8080. I recently got a Cromemco ZPU and am testing it in the 8800c. I made the cable from the front panel card to the ZPU (mixed up to non-mixed up pinout). The power on jump jumper is cut on the ZPU. When I start up the machine the first seems to go crazy. A15,14 and 13 are rapidly blinking like they are cycling and the biggest problem is the STOP switch does absolutely nothing. I have run all the ICs through the chip tester and found nothing bad. I also tested the CPU, but I don't know how good the chip tester test are. I put in another Z80 (Z80B) and it showed the same symptoms. I honestly have no idea where to start looking. Any help would be greatly appreciated.
 
Well i made progress looking over the schematic. I replaced IC34 (LS00) and IC36(367) on the ZPU board and now STOP works. Now Examine/Examine Next and Deposit Next don't work. Deposit seems to work correctly however. I need to learn how Examine and Examine Next work I suppose.
 
Well I got the logic analyzer and Jade Bus Probe out and I have figured out that C3 01 00 is making it to the CPU when I do an Examine on 0001h, but it does nothing with it apparently. The other thing I have learned is that when I hit Examine with the 8080 installed the RDY line stays light on (low), but with the Z80 installed when I hit examine RDY goes (light off (high). I am still tracing that through the ZPU schematic
 
Last edited:
Ok, Front panel is fully working YAY. However the PC register does not actually appear to be getting set correctly on an Examine. I can examine and deposit, but when I hit Run it starts executing in some random place in memory. The only thing I noticed on the logic analyzer is the Examine shows these hiccups on the data lines on an Examine. Below is a screenshot of Examine 0000h, so C3 00 00. I can imagine those hiccups could mess up what is loaded into PC, but I am not sure where they are coming from. I even hard coded a HLT into 0000h and it never hits it, so its never executing 0000h.

1726532332444.png
 
Well, I managed to get my hands on a second ZPU and it shows the same problem, so it must be a problem with my machine. It works great with the 8080 however.
 
So I have a working 8800c with an 8080. I recently got a Cromemco ZPU and am testing it in the 8800c. I made the cable from the front panel card to the ZPU (mixed up to non-mixed up pinout). The power on jump jumper is cut on the ZPU. When I start up the machine the first seems to go crazy. A15,14 and 13 are rapidly blinking like they are cycling and the biggest problem is the STOP switch does absolutely nothing. I have run all the ICs through the chip tester and found nothing bad. I also tested the CPU, but I don't know how good the chip tester test are. I put in another Z80 (Z80B) and it showed the same symptoms. I honestly have no idea where to start looking. Any help would be greatly appreciated.
One issue getting a Z80 CPU board working with an Altair front panel (original, or 8800c) is that the front panel looks for an M1 machine cycle status signal on S100 bus signal DO5. This works with an 8080-based CPU board, which outputs the 8080 status signals on the data bus very early in each machine cycle. The Z80 processor does not mimic this behavior, but the Cromemco ZPU does attempt to replicate this behavior. Problem is, the timing of this signal appearing on the S100 bus, along with timing of the pSYNC and "Clock 2" signals (which also need to be synthesized by a Z80 CPU board) may not be quite what the Altair front panel will work with.

Also, the Cromemco ZPU speed switch must be in the "2MHz" position to work properly with a front panel - not only does it slow down the speed of the board, but very importantly it also disables generation of the S100 bus MWRITE signal by the ZPU while the front panel is in operation.
 
Last edited:
Ok, Front panel is fully working YAY. However the PC register does not actually appear to be getting set correctly on an Examine. I can examine and deposit, but when I hit Run it starts executing in some random place in memory. The only thing I noticed on the logic analyzer is the Examine shows these hiccups on the data lines on an Examine. Below is a screenshot of Examine 0000h, so C3 00 00. I can imagine those hiccups could mess up what is loaded into PC, but I am not sure where they are coming from. I even hard coded a HLT into 0000h and it never hits it, so its never executing 0000h.

View attachment 1286556
Examine does not directly set the PC register. As you noted above, the front panel injects a JMP (C3) opcode followed by LSB and MSB of the A0-A15 sense switches. This causes the CPU to jump (set the PC) to that address. The A0-A15 LEDs should match your sense switches if the Examine worked properly. For this to work right, the front panel tells the CPU card to disable its data input buffers so the front panel can provide the 3 bytes over the front panel cable. If the cable isn't wired properly, the CPU won't see the correct opcode or operands. To inject the 3 bytes, the front panel causes the CPU to execute 3 instruction cycles. This is usually where things go astray. Examine Next and Deposit Next inject a single NOP (00) opcode which increases the PC by 1.
 
Glad to see someone finally pulled up a doc on this.
People have known this and it's implications for front panels and Z80s, for what, nearly half a century?
I remember tackling the same problem when I got a ZPU in the 90's .
 
Back
Top