March 11, 2003
> I've just remembered, one of the tests in the techref is to pull the
> ROMs and see what happens - you should get a screenful of @9s that
> flicker as the CPU tries to access the ROMs....that's exactly what I
> get so the CPU MUST be running at that point.
It helps to know that. Here's why you get @9s. With the ROMs removed,
the CPU reads all 1's (that is, hex FFH) whenever it reads from the area
the ROMs are supposed to be in, because an open connection tends to
float to a 1 with this type of logic. Hex FFH is the RST 38H
instruction. So when the processor is turned on and fetches an
instruction from 0000, it gets a RST 38H (FFH). This makes it push 0001 on
the stack and jump to address 0038. At that address it reads another
FFH, so it pushes 0039 on the stack and jumps to 0038 again. Now it's in
an infinite loop. As the loop continues, the stack grows and grows,
going backward through memory. When it reaches the frame buffer between
3C00 and 3FFF, you can see it on the screen. It looks like a string of
@9's because the TRS-80 displays a 00 byte as an @ character, and 39 is
an ASCII 9.
OK. So the fact that you get @9's means that the CPU is working. The
data bus appears to be working correctly too, as if a data line were
stuck at 0 the CPU wouldn't be reading FF's, and if it were stuck at 1
the CPU couldn't be writing both @'s and 9's.
There could still be a problem with the address bus or the ROMs. Note
that a problem with the ROMs might not be in the ROM chips themselves
but in the sockets or circuits on the motherboard that connect them to
the rest of the system. But trying a different set of ROMs does seem
like a good idea.
pc 0000 gets FF pushes 0001 to stack jumps to 0038
pc 0038 gets FF pushes 0039 to stack jumps to 0038
pc 0038 gets FF pushes 0039 to stack jumps to 0038