How to diagnose and repair a TRS-80 Model 1
The following text is a set of notes I compiled in 1980 while working for Tandy Corporation (Radio Shack) as one of their first computer repair technicians. I came across this document in my archives, and felt compelled to post them. The procedures may help you repair almost any problem with the Model 1 at the component level. Happy fixing! -- Marc Brumlik, email@example.com
(Schematics from the TRS-80 Technical Reference Handbook would be helpful, and an oscilloscope)
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.
If the screen shows “@9@9” in some areas and garbage characters in others, in a repeating pattern, the defective address line can be found easily. For example, if the pattern is alternately four characters of @9 and four of garbage, then address line A2 is stuck because 2^2=4. If the pattern is a full line of @9 (64 characters) followed by a full line of garbage, then address line A6 is stuck because 2^6=64.
If an address line is found to be inactive, the cause us usually the tri-state buffer responsible for that line. For those without a schematic, these are:
A00 – A01 Z55
A02 – A03 Z22
A04 – A09 Z39
A10 – A15 Z38
If replacing the the suspected buffer has no effect, cut the foil trace at the input to each of the gates connected to the output of the tri-state buffer for the bad address line, one at a time, checking the output of the buffer each time with a scope. When activity is seen, the offending chip has been isolated – replace it and repair all the cuts. Don't forget the keyboard, which is also driven by the address buffers. Note that the ROM satellite board for Level II BASIC could also be responsible for inactivity on address lines A11, A12, and A13 even if the ribbon cable has been removed from Z33.
When the address lines specify a memory location then the address decoder then enables one memory area, for example ROM, Video, or keyboard. Z21 and its support chips Z73, Z74, Z36 and Z37 use the high order address lines to decode the signals ROMA*, ROMB*, RAM*, MEM*, VID*, and KYBD*. The outputs of Z21 break down the 32767 memory locations from the CPU into 4K blocks (dec. 0 – 4095, 4096 – 8191, 8192 – 12207, 12208 – 16383, etc). If any of these signals is not present, there will be garbage on the screen, @9@9's, or @S@S's on the screen with Z3 in place.
The Z-80 uses data lines both to read and write data at any memory address. The control lines (RD*, WR*, IN*, and OUT*) output from Z23, are used in conjunction with the data lines to specify what is to be done with the data bus. Absense of IN* or OUT* will cause cassette I/O to fail, while RD* and WR* will cause garbage on the screen. Any data line without activity will also cause garbage. Remove Z3 and look at the display. An inactive data line will often cause a pattern on the screen like @1@1 or Y9Y9 and the bad bit can easily be found. Since the correct pattern is @9@9, the stuck bit can be determined mathematically (similar to bad address lines above, subtracting the binary of @ or 9 from that of the character seen). The most common cause of a stuck data line is a bad memory chip, the inputs of which are tied directly to the data lines. Removing all memory chips and checking the pattern will identify whether the problem is RAM or some other chip.
VIDEO DIVIDER CHAIN
Most of the time (unless video is in the process of being updated), the VID* signal is inactive , and video ram is being continuously addressed by the video divider chain. The divider chain sequentially accesses all of video memory so that it can be continuously displayed. It is derived from the system clock, and addresses each memory location from beginning to end in sync with the display monitor. Z65 and Z50 output the signals C1 – C32, specifying each of the 64 character positions in one line on the display. These are decoded to video RAM address lines V0 – V5 when the VID* signal is HI. Z12 provides the signals L1 - L8. L1, L2, and L4 are used by the character generator chip Z29 (RS1, RS2, RS3) to specify one of the seven scan-lines of an alphanumeric character. L4 and L8 are used by Z8 to specify the top-, middle-, or bottom-third of a graphics cell. L8 is also used to create the blank scan lines between lines of alpha-characters (which are seven lines tall, vs 12-line graphics characters). The signals R1, R2, R4, and R8 from Z32 specify one of the 16 lines of characters on the CRT. They are video address lines V6 – V9. If any of the signals V6 – V9 are absent, the CRT will show a smear of dots. If L1 – L8 are missing, the printed characters will be properly located but illegible. Shorts between the lines will produce characters shown in two locations at once. Removing Z3 will show the bad video address lines similarly to bad memory address lines (alternating patterns).
Ram errors are the most common video problem. To isolate the defective chip, first determine the ASCII code of that character that should be shown and the character that appears instead. For example, a blank screen (press CLEAR) is filled with ASCII code 32's (the code for a “space”). If some location shows a “$”, which is ASCII 36, subtract 36-32=4. The location with the error is displaying character 36 instead of character 32 because bit 2 is stuck on (2^2=4). Replace Z46. Similarly, if pressing “B” on the keyboard displays “J” on the screen: B=66, J=74, 74=66=8, and since 2^3=8, replace Z45.
A bad RAM chip can cause rapidly changing patterns on the screen, garbage on the screen, or a blank screen. An intermittent problem can cause the occasional program-line change or disk reboot. If the system is not operating at all, try substituting all eight chips with known good ones. Check for the presence of CAS*, RAS*, and MUX. No one ram test will find an error 100% of the time. Try various tests. Very intermittent failures can be caused by the multiplexers Z35 and Z51 or the tri-state buffers Z67 and Z68.
GARBAGE ON THE SCREEN
Check for activity of address decoder outputs
(RAM*, MEM*, VID*, etc.)
Check control lines at Z23
Remove Z71 – Screen full of @S's suggests RAM errors
Remove Z3 – Screen full of @9's suggests ROM/address errors
Pattern of @9's is stuck A0-A9 address (check A10-A15 with scope)
Check for clock at Z-80 pin 6
Check Z-80 reset lines (pins 16, 17, 18, 24, 26 should all be high, pulses on pin 17)
Check CAS*, RAS*, MUX, and Z69 pin 5
Replace RAM with good set and downgrade to Level 1 BASIC
Try replacing Z35 and Z51, Z67 and Z68, Z-80 CPU, Z21
Check for output from Z66
Check each gate of Z5, Z6, Z57
Check for intermittent R20, R21
Check each output of video divider chain
Check power supply voltages (note that if the 12V line is out, 5V will be to.
Shorted RAM chip can bring down voltages
Check for output at Z30 pin 1. If present, check Z41 and Q1/Q2. (Z41 could be
bad if cassette relay is shorted).
Check Z9 pin 8 for SHIFT. Check output of Z26, pin 8. Check output of Z10 pin 13.
Check inputs RS1, RS2, and RS3 and from Z28.
Wrong characters displayed (but recognized as correct by computer) – Video RAM.
Parts of characters illegible or missing – Z29 or RS1, RS2, RS3
No blank lines under alpha characters – DLY L8 inactive.
Video is a smear of dots – video address lines.
No “CSAVE” -- Replace Z59
Intermittent “CLOAD” -- Check XRXIII, check Z24, replace Z44
No “CLOAD” -- Check output from Z4 pin 10, check Z24 pin 9
“after” XRXIII, check Z24 pin 8, replace Z44
Dim video during CLOAD – Check Z41, K1, or CR3 for short
Tape motor always on – Check Z41, CR9 and CR10 for short, replace K1
The input or output of any gate can be pulled low for testing. Pulling signals low can simulate conditions for testing logic. NEVER pull a gate high! If it is ever found that a short has pulled a signal high, replace any chip whose input or output was affected.
If a gate has active inputs and an inactive output, but replacing it did not correct the problem, cut the foil traces at the inputs to gates connected to that output. Check for activity between each cut. If no trace cuts correct the problem, scope the inputs to be certain that logic conditions are being met.
If symptoms suggest a bad gate but there is activity on the output of a suspect, use a scope to determine of that output is correct for that gate's logical function. For example, Z23's gate at pins 4, 5, 6:
put scope CH1 on pin 4, CH2 on pin 5, TRIGGER on pin 6
since the output is active when low, use NEG trigger
the scope will show the state of the inputs whenever the output goes low
(use 2V / division both channels, 1 us timebase)
To check a tri-state buffer like Z76 gate at pins 4 and 5:
CH1 on input pin 4, CH2 on output ping 5, TRIGGER on enable line pin 1
compare CH1 and CH2 for time lag or missed pulses