The address lines are outputs from the Z-80 used to specify memory locations. If any address line is not active (stuck on one state),
there will be 'garbage' (random characters) on the screen at boot. To check the address lines, remove the DIP Shunt at position Z3
and power-up the system. If the screen fills with a pattern of “@9@9@9@9...”, then all the address lines A0 – A9 are good. The
remaining address lines A10 – A15 can be checked for activity with a scope.
Why does it print @9@9?
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.
REF:
The @ is Hex 0x40 and SPACE is 0x20.
If the screen is cleared by the ROM it should show 0x20
after the Sign On Message.
Remove the DIP Shunt at Z3, and Power ON. See what you get. It should be @9@9@9@9@9@9@9's
Larry