Microprofessor MPF-1 resurrected after 40 years but sick

Hi from a newbie.

I got this running without any initial difficulty, not having see it since 1980, but when I got interested in making it control the temperature of my home-brew (beer) I found a very strange problem: Channel 0 in the CTC will happily interrupt the main program, but not Channels 1, 2 or 3.

This is very odd, because you don’t have direct control over the channel registers, the CTC is supposed to insert the correct information, given that you, for instance, sent the SAME CTC set-up words to “CTC1” at 41H per the MPF-1 Users Manual at page 36.

I typed in the code for the MPF-1 project “Clock with CTC Interrupts” as provided, which works perfectly on Channel 0. However, trying to use Channel 1, the program crashes instantly, with the display showing address-data E5C6 FF every time Channel 1 is selected, and other data for Channels 2 & 3

I tried a new CTC IC without success, got the same address-data on the display, and even tried replacing the decoder IC U9 (74LS139) to see if that would cure it. (My CRT oscilloscope at 15 MHz bandwidth is not really up to it, but the various waveforms look believable). Next and possibly final step is to replace the Z80 CPU in the hopes that some internal gate in it has died after 41 years.
Otherwise I’m out of ideas.

Any comments will be welcome!
a.k.a. PatThePirate

1 Like

Welcome @PatThePirate, a bit of a puzzle there. (It’s possible @hoglet will have an idea, so just tagging him.)

Just for reference, the User’s Manual as a pdf.

Previously: Barn Find - Multitech MPF-1 Micro-Professor (Z80A trainer)

I’m struggling to find this example.

Can you post a link or a better reference?

Maybe experiment 15 in
MPF-I Experiment Manual (Software/Hardware)

Hi EdS

Thanks for your reply. It is indeed Experiment 15. Sorry, I didn’t think of looking for the manual!

However, this is a general question about the way the CTC is supposed to work, and how on earth it works with Control words written to Channel 0 at I/O address 40H but NOT at Channels 1, 2 or 3 (41H / 42H / 43H).

I believe that writing to the Channel I/O address is the only way to select channels, since apparently the CTC supplies the interrupt vector information itself.

So I have a suspicion that the CPU might be the cause of the problem, since changing to a new CTC and also the decoder U9 (74LS139) made no difference.

I’ve ordered a replacement CPU in the hopes that everything will come up roses!

In the meantime, I will ring out all the busses to see if there’s something simple like a cracked PCB track.