Hi,
I have been fixing an old WaveMate Bullet computer and have come across a
question I thought maybe the CCTALK mailing list could answer. I apologize
if this is an overly long post but it takes some explaining to get to the
real question.
When I bought this WMB machine it was completely dead. It had no response
at all and the Z80 CPU was completely static except for the clock input on
pin 6. I used my oscilloscope to debug the circuit. The PS checked out
fine.
On power up the floppy drive turned on and would seek to home but I think
was more a "nervous reflex" of the MB8877/SY1793 FDC powering up and being
selected rather than something the CPU was intentionally doing. No data was
being read from the disk drive with a known good working boot disk
installed.
After finding some illegal voltage values on the address bus and some other
fault isolation, I noticed that if I put my finger on the CPU, then it
briefly went into a flurry of activity before crashing again.
I isolated the illegal voltages on the address bus to just between two
chips. After touching CPU with my finger caused something to happen, I
suspected the CPU was bad or possibly a cold solder joint. As a starting
move, I replaced the Z80 with a new socket and new CPU and made sure all the
solder connections were good and thoroughly good.
The good news is on the next power up the WMB booted and seemed to work just
fine. However, I have two known good boot disks; the first is a partial
CP/M 2.2 system (boot tracks plus minimal generic OS utilities from Gaby's
site. It did not include any WMB specific tools like FORMAT) and the second
is a complete CP/M 3.0 customized for the WMB. I know both boot disks are
good since I have repaired another WMB and both disks work on that machine.
Here is where things start to get strange...
The CP/M 2.2 disk booted just fine. However, the known good CP/M 3.0 disks,
even ones written using the boot drive (to eliminate alignment issues, etc)
would "half boot" and crash just after printing some or all of the initial
boot message. CPMLDR would execute but apparently CCP never got properly
launched before crashing.
So I spent a couple of days searching for what I presumed to be a hardware
failure. The CPU seemed stuck in a polling loop and I could not find the
"broken" part. I ended up finding some strange voltage values on the PIO
and replaced it and a buffer chip but the strange boot behavior persisted.
The CP/M 3.0 disk still refused to boot.
I inspected the source for the CP/M 3.0 CBIOS and found what appeared to be
possible places where it was hanging. Since I had already replaced the CPU
with a socket and a new CPU I thought maybe the "new" CPU was having
problems during the "enable interrupts" command immediately prior to the
printing of the initial boot message.
Sure enough, I replaced the "new" CPU with another one and the problem went
away. The WMB now boots CP/M 2.2 and CP/M 3.0 from the boot disks like
nothing was ever wrong.
So to my actual question; how do I know that the CPU's were really bad and
it is not something else being tweaked during the "fixing"? I can see one
CPU failing and replacing it to fix the computer. However, finding TWO bad
CPUs in a row is just highly suspicious to me. Maybe there is a sneaky cold
solder joint someplace?
I think repairing old computers is just like any human endeavor - it is
flawed and sometimes I follow incorrect logic and/or misdiagnose before
finding and fixing the real broken part. Sometimes good parts get
mistakenly identified as bad. That's life and if a part falls under
suspicion I am likely to just replace it just to test the theory, right or
wrong it gives information and vital clues. Anything labeled "suspect" is
pulled aside and labeled as bad regardless.
These parts are cheap and plentiful enough that if a few good ones get
trashed in the process of fixing an old machine I consider it a worthy
investment. Probably I am tossing some good parts occasionally but it is
worth it time wise to take the chance and maybe find the root cause. Were I
more skilled technician maybe I could fault isolate with more precision and
just fix exactly what is broken but this is just a hobby and I do not have
the time/experience to get more precise.
What is bugging me in this case though is whether swapping the two CPUs is
actually fixing the REAL problem or just coincidentally doing *something*
which is the making it work but not actually fixing the underlying problem.
I am uncertain if my "repairs" are actually causal or coincidental. The
good news is in the end if the machine works reliably it doesn't matter all
that much but I'd sure like to know for certain what actually happened.
Is there some method to verify a Z80 CPU or PIO is actually bad or not? I
have seen 74LSxxx chip testers which apparently work pretty well but nothing
that can test a Z80 CPU or other LSI type chip.
Thanks in advance for any advice or constructive comments.
Andrew Lynch