• Please review our updated Terms and Rules here

Heathkit H89A Question

0.333 mV is less than 0.5V (500 mV). As this is a TTL logic signal, it is logic LOW.

/M1 is strange.

/INT is also logic LOW (active).

Dave
 
I just pulled my Z80 technical manual out. /M1 is a standard active low TTL output. The HIGH voltage you are reading of 3.88V is a logic HIGH, but it looks a suspiciously low voltage reading to me. It should also be pulsing LOW - otherwise the Z80 is not fetching and executing instructions - which is strange (and inconsistent) if you have /IORQ activity. Normally, the Z80 will read instructions. It has to read and execute an I/O instruction in order to operate the /IORQ signal - ergo you should observe activity on the /M1 pin.

Can I just suggest going around all of the pins of U430 with your oscilloscope and seeing exactly what you have? Report if a pin is LOW, HIGH or PULSING. You can check the LOW as being < 0.5 Volts an HIGH as being > 4.5 Volts. Report any signals that do not align with these binary voltage levels - and what the voltage(s) read on the oscilloscope. Don't forget to adjust the oscilloscope timebase to ensure you are not missing any 'slow' pulses.

Your 'stuck' /INT signal signal maybe an 'effect' of the CPU not correctly executing the instructions as opposed to the 'cause' of a fault.

Dave
 
Went back and rechecked the pins with the scope. M1 low with no pulse at all. MREQ pulse low. IORQ pulse low. RD pulse low. WR pulse low. Wait no pulse High. INT no pulse low Clock pulse low. NMI pulse low. Reset no pulse High. Hope that helps a bit. I have a question on chips from China. Do you have problems with them? I replaced U446 three times. This chip section F gives 5 volts to the keyboard encoder when the ctrl key is pressed. It works fine at first, 5 volts on pin 13 goes to pin 12 when the ctrl key is pressed. After a while, Pin 12 retains the 5 volts whether the control key is pressed or not. I got these chips from Jameco. The ctrl key is good, and not sticking What does the ctrl do anyway? Thanks. I reseated U430 and the Wait and Reset pins went from low to high.
.
 
That can't be for a working system. M1 goes low as the instruction (op code) fetch part of the cycle. Something is not right here if that is what you see. If NMI is pulsing then you are getting some type of interrupt.
 
I think NMI may be connected to the vertical blanking interval, but I don't remember for sure. It's in the manual, but I'm not in a place where I can check it atm.
 
I wouldn't buy my chips from China, full stop.

The Ctrl key is the 'control' key. It modifies the codes produced by the letter keys (for example) and converts them into the corresponding ASCII control codes (as the key name implies). For example pressing the Ctrl key in conjunction with the 'G' key will generate the ASCII code for BEL ($07) rather than the ASCII code for the letter 'G' ($47).

If the /M1 signal is not pulsing low, what you are reading is inconsistent with the Z80 operation and we need to investigate further as to why. I don't like issues such as this...

I will check out what is connected to the /NMI pin after lunch.

Dave
 
The /NMI pin is driven from some circuitry. I am not sure what the purpose of the circuitry is. If you have an oscilloscope on it, what is the frequency (or period) of the pulses?

If you keep replacing U446 (and it is not behaving correctly) then you are either buying rubbish or there is something else going on strange...

There is a pull-up resistor RP3 (2) that pulls the Ctrl key up to +5V and feeds U446 pin 13. When you press the Ctrl key, this key shorts this signal from the pull-up resistor to 0V, so U446 pin 13 should follow it.

Code:
Ctrl key | U446 pin 13 | U446 pin 12
RELEASED | HIGH        | LOW
PRESSED  | LOW         | HIGH

If this doesn't work properly - there is something weird going on (still).

Note that there are two (2) +5V supplies (called VCC1 and VCC2). Each of there are derived from a different +5V regulator (U401 and U402). You have checked both of the +5V supplies haven't you?

Dave
 
Last edited:
If we're talking about the z80 on the terminal board (not the one on the cpu board), I am 95% sure that one of the interrupts is used to signal the CPU when it's safe to write to video ram without causing display artifacts (even though with the stock rom it has display artifacts anyway, lol). I just can't remember if it's connected to INT or NMI, but I am thinking it was NMI.

I may have that confused with a modification made during the TMSI terminal board upgrade though, so I apologize if I am BSing y'all. Once again, I am not at a place where I can check the manual. But it *is* explained in the manual, what the function of the stuff connected to NMI is.

But if NMI is connected to the vertical blanking interval, it's likely to be going off all the time regardless of whether or not the CPU is running. Probably at 60hz, if my conjecture is correct. If that is the case, then the activity on NMI may not be relevant to the troubleshooting at hand.

Edit: If I were in your position (and you are 100% sure that the power supplies are good, the clock is running, and the power-on reset pulse is happening), I'd try swapping CPUs if that hasn't been tried already. (Sorry, haven't gone back over the whole thread.) But again, I don't know much so I may be full of poo. M1 should be running though, unless something else on the board is screwed up and pulling it to that 3.88v or whatever you said. Have you tried lifting the M1 pin on the CPU and looking at it on a scope then?

Edit Edit: When you are punching around the board with the scope, you don't want anything else hooked up to it other than the power connector. That cable ought to be long enough that you can lay the terminal board out flat on the bench next to the chassis. No keyboard. No RS-232 to the CPU board. CPU board completely removed from the machine. No analog video board hooked up (the video signals are carried on the same connector as the power, on the terminal board side, so you'll want to disconnect it at the video board; be careful not to break the CRT neck when horsing around there). Only the speaker, so you can hear it beep if the terminal board initializes correctly. That will remove potential sources of confusion. Once you're sure the terminal board is working by itself, then start plugging stuff back into it one at a time and verifying function.

M1 not running but having other activity on the bus sure makes me lean towards some kind of CPU fault.
 
Last edited:
I wouldn't buy my chips from China, full stop.

The Ctrl key is the 'control' key. It modifies the codes produced by the letter keys (for example) and converts them into the corresponding ASCII control codes (as the key name implies). For example pressing the Ctrl key in conjunction with the 'G' key will generate the ASCII code for BEL ($07) rather than the ASCII code for the letter 'G' ($47).

If the /M1 signal is not pulsing low, what you are reading is inconsistent with the Z80 operation and we need to investigate further as to why. I don't like issues such as this...

I will check out what is connected to the /NMI pin after lunch.

Dave
The /NMI pin is driven from some circuitry. I am not sure what the purpose of the circuitry is. If you have an oscilloscope on it, what is the frequency (or period) of the pulses?

If you keep replacing U446 (and it is not behaving correctly) then you are either buying rubbish or there is something else going on strange...

There is a pull-up resistor RP3 (2) that pulls the Ctrl key up to +5V and feeds U446 pin 13. When you press the Ctrl key, this key shorts this signal from the pull-up resistor to 0V, so U446 pin 13 should follow it.

Code:
Ctrl key | U446 pin 13 | U446 pin 12
RELEASED | HIGH        | LOW
PRESSED  | LOW         | HIGH

If this doesn't work properly - there is something weird going on (still).

Note that there are two (2) +5V supplies (called VCC1 and VCC2). Each of there are derived from a different +5V regulator (U401 and U402). You have checked both of the +5V supplies haven't you?

Dave
I've got to find a place that doesn't sell these faulty Chinese chips that work for a while, then breakdown. The Ctrl key works as you stated until the chip breaks down. I'll check the frequency on the /NMI pin. Both of the 5 volt supplies are well within specs. I also replaced the CPU chip twice with no difference in results . Thanks for all the great information. We're going to figure this problem out.
 
If we're talking about the z80 on the terminal board (not the one on the cpu board), I am 95% sure that one of the interrupts is used to signal the CPU when it's safe to write to video ram without causing display artifacts (even though with the stock rom it has display artifacts anyway, lol). I just can't remember if it's connected to INT or NMI, but I am thinking it was NMI.

I may have that confused with a modification made during the TMSI terminal board upgrade though, so I apologize if I am BSing y'all. Once again, I am not at a place where I can check the manual. But it *is* explained in the manual, what the function of the stuff connected to NMI is.

But if NMI is connected to the vertical blanking interval, it's likely to be going off all the time regardless of whether or not the CPU is running. Probably at 60hz, if my conjecture is correct. If that is the case, then the activity on NMI may not be relevant to the troubleshooting at hand.

Edit: If I were in your position (and you are 100% sure that the power supplies are good, the clock is running, and the power-on reset pulse is happening), I'd try swapping CPUs if that hasn't been tried already. (Sorry, haven't gone back over the whole thread.) But again, I don't know much so I may be full of poo. M1 should be running though, unless something else on the board is screwed up and pulling it to that 3.88v or whatever you said. Have you tried lifting the M1 pin on the CPU and looking at it on a scope then?

Edit Edit: When you are punching around the board with the scope, you don't want anything else hooked up to it other than the power connector. That cable ought to be long enough that you can lay the terminal board out flat on the bench next to the chassis. No keyboard. No RS-232 to the CPU board. CPU board completely removed from the machine. No analog video board hooked up (the video signals are carried on the same connector as the power, on the terminal board side, so you'll want to disconnect it at the video board; be careful not to break the CRT neck when horsing around there). Only the speaker, so you can hear it beep if the terminal board initializes correctly. That will remove potential sources of confusion. Once you're sure the terminal board is working by itself, then start plugging stuff back into it one at a time and verifying function.

M1 not running but having other activity on the bus sure makes me lean towards some kind of CPU fault.
This is the Z80 on the terminal board. The terminal board is lying flat on the bench. CPU's have been swapped. I'll try lifting the M1 pin and checking it on the scope. Thanks.
 
This is the Z80 on the terminal board. The terminal board is lying flat on the bench. CPU's have been swapped. I'll try lifting the M1 pin and checking it on the scope. Thanks.
The terminal part of the H89 is called the H19. It could have been bought as a terminal.
Dwight
 
I assembled two of these Heathkits back in the day. An H-19 terminal for my own use, and an H-89 computer for a girlfriend. She somehow managed to do a PhD thesis paper on it with Wordstar (or whatever the editor was).
 
I found something interesting, Dave. The wait key is stuck at 5 volts no matter if I press a key or not. According to the Heath manual this puts the CPU on hold . Normal for this pin (24) is 0 volts. When I press a key, I get an instant 5 Volts on U433 Pin 12, and 13. This gives a pulse out of U432 pin 1 which goes to U433 pin 10. The output of U433 goes to U432 section B. There's no change in U432 pin 5 or 6 in section B so pin 4 stays at 5 volts which goes to pin 24 on the CPU.I cannot get this pin to go to 0 even if I turn the computer off and on again. I'm sure there's something to this, but not sure how to fix it. Maybe this will get M1 to operate properly as well as the CPU itself. Reordered U446 but not from China this time. That should get the Ctrl key working. What do you think? Thanks.
 
I assembled two of these Heathkits back in the day. An H-19 terminal for my own use, and an H-89 computer for a girlfriend. She somehow managed to do a PhD thesis paper on it with Wordstar (or whatever the editor was).
Loved the computer when I first built it back in the 80's. It was all new and fun to operate. It sat unused for at least 30 years and I'm trying my hardest to get it working again.
 
But WAIT is active low. So +5 is its non-active state (pin 24). I still feel the interrupt issue you saw is the first thing to be solved. If it's constantly interrupting who knows what it's doing.
 
I still don't understand why M1 isn't running though. Even if it's in some kind of interrupt handler loop, it ought to be asserting M1 every time it starts a new instruction, right? On the schematic I am looking at, M1 isn't even connected to anything, though, so there shouldn't be anything on there overpowering the CPU's ability to sink current there and holding it high.

NMI is indeed triggered from vertical sync. So it should be happening at 60hz regardless. I think chasing that is a red herring.

We have checked the power-up reset signal at the same time we checked the voltages and clock signal, ***right***? If that RC circuit is jacked up (bad C414 or something, or possibly D401 but I doubt it) and not getting asserted at power up, the CPU may be in some weird undefined state?
 

Attachments

  • H19-Schematic-2.pdf
    1.5 MB · Views: 2
Last edited:
I agree. Even if M1 is not connected it should still be pulsing if the CPU is working and fetching instructions.
 
No, wait a minute. I am full of crap.

It looks like the firmware reads a port when it wants to write to video memory. That read sets one of the latches in U428, and then then next vertical sync pulse generates a single NMI and resets those latches. So I don't think we should be seeing a ton of nonmaskable interrupts being generated. Only when the screen is updated.

Sorry about that. I need to look at things closer before I open my yap and show the world how dumb I am lol.

I still say, double check yo' power-on reset signal. If that's jacked up, it looks like your manual reset on the keyboard (rightshift+reset) may not work right either. And those latches that are generating the NMI are placed into a defined state at power up by the reset signal too.
 
Last edited:
Yes, WAIT is actually /WAIT (so an active LOW signal). look for the 'bar' over the signal name. Therefore, +5V (HIGH) is good! I am afraid you have been chasing your tail...

We need to work out why you are not getting /M1 pulses - otherwise I have no confidence in either the Z80 CPU or your readings.

Dave
 
Back
Top