Screwed up characters from a TRS-80 Model 1 (Level 1 BASIC)
Just when you think you've put a task behind you, you find out there is a little more to do. Pictured below is my recently acquired TRS-80 Model 1 (Level 1). This was as dead as a doornail when I first got it, and it needed some tender loving care to nurse it back to health.
Figure 1. My recently fixed (or so I thought so) early TRS-80 Model 1 (Level 1)
I thought I'd fixed it. However once I started to play with the computer in earnest, some odd symptoms appeared.
I had the machine plugged into my favourite green-screen monitor. Just for fun I decided to get the computer to fill the screen with the same character. I selected "A". However, instead of a screen full of "A"s I got the below. The screen was full of mostly "@"s!? Moreover, the break message when I terminated the loop said "BRDAJ" rather than "BREAK"? I tried the routine several times. Sometimes a few "A"s would print first before changing to "@"s. Every time though, the end result was a mixture of the two characters.
Figure 2. A screenful of what should be the "A" character only...but is clearly not!?
That wasn't all. Listing the program also showed weirdness. Shown below is the same listing done twice. Sometimes the characters are correct...sometimes not.
Figure 3. Scrambled letters in a listing
After more experimenting and observation I discovered that only characters with an odd-numbered ASCII code were displayed incorrectly. Furthermore, it was always the character with the previous even ASCII number. In other words ASCII number -1. Hence A (ASCII=65) went to @ (ASCII=64) and C (ASCII 67) went to B (ASCII=66). However, B was always B and @ was always @.
More investigation showed graphic characters were also affected. Below is the screen shot of a SET routine that was suppose to completely blank the screen. Note all the holes. It looks like a punch card!
Fortunately, although the screen characters and graphics were sometimes screwed up, the input and the internal workings of the computer were fine.
Figure 4. Note the dots. Every pixel should have been switched on.
Conclusion: Some kind of intermittent fault affecting the display. I suspected something amiss in the video RAM circuitry either a VRAM chip or supporting logic IC. But which one?
At this stage I asked for help from the Yahoo TRS-80 mailing list. And help was forthcoming from a number of people. Mark McDougall and Leslie Ayling nailed the problem down to either a logic chip at Z28 (sticking on Bit 0) or the VRAM chip at Z48 (which handles Bit 0). But which one?
A POKE routine suggested by Leslie would have pointed to the culprit but Level 1 BASIC has no POKE command. However, another list member, George Phillips, offered a similar test using the graphics commands available in Level 1.
40 IF POINT(X,Y) <> 1 THEN PRINT "FAIL":END
The POINT command checks the byte in VRAM. If it wasn't what was originally put there by the SET command, it means the video RAM is at fault. If the test passes (and hence the value is correct in VRAM) it must be the 74LS174 logic chip changing the character to display.
I ran the test. FAIL! All evidence then pointed to the video RAM chip at Z48.
The repair was easy. Luckily I had spare 2102 VRAM from a parts System 80 board lying around. In no time at all I'd replaced the faulty chip with a socketed replacement (Figure 5).
Figure 5. Soldered-in VRAM replaced with a socket and replacement chip
The problem in now solved. Running George's program now totally lights the screen. Other tests show all characters are now what they should be.
Figure 6. The TRS-80 Model 1 (Level 1) now behaving just as it should.
So at last I can say my Model 1 (Level 1) is 100% working. In the end there were three faults with this machine. A faulty NAND gate and faulty regulator IC in the power circuit, and also this faulty VRAM. It doesn't look it, but maybe this computer had a hard time in a previous life?
Anyway, this experienced has:
- Reinforced the importance of a helpful community in this hobby (thanks guys!)
- taught me that ICs can intermittently fail. I always thought it was all or nothing but no, it seems they can sometimes work and sometimes not.
3rd May, 2015