The TRS-80 Model III was the first computer I ever touched. I was 8 years old and attending my father’s office party. The party host’s son was a few years older and was busily hacking on the family computer. I took an interest to what he was doing and by the end of the evening we had the beginnings of a BASIC game.
But, my story ends there. I never touched another TRS-80 nor saw that kid again. However, my computing interest lived on and soon I was programming Apple IIs and Commodores, ultimately leading to a career as a programmer. After doing a bit of reading and listening to vintage computer podcasts, I decided to keep an eye out for vintage machines at the next ham fest. That’s where I found my Model III.
At $30, the machine was a “steal”. It included a full set of manuals, master disks, two disk drives, and even some extra books. (Some of these extra books turned out to be Model IV manuals! . In the heat of the moment I failed to consider that the machine may not be in working order. Turns out, that was indeed the case.
Most of the machine worked. The drives would spin. The video controls were frozen, but in a working position. The monitor worked, but the screen was filled with garbage characters. I tried (in vain) to fix this over many evenings. I checked the power supplies, rotated RAMs, probed everything I could think of with the logic probe, but no luck. Several weeks later, I attended the Vintage Computer Fest East in New Jersey. There, I found another “steal” – a Model III motherboard with power supply, serial controller and even extra monitor controls. One of the MARCH members had saved these from a poor machine someone had gutted to make a PC.
After swapping out the motherboard, things were much better. I replaced the frozen video controls with the new set. I also changed out the power supply input caps after seeing a fellow Model III explode at VCF. Finally, I was able to boot into a “Cass?” prompt. However, more challenges lie ahead.
The disk drives would spin, but would not stop spinning. Of course, the system would not boot from them either. After some basic troubleshooting, I found that the disk drive power supply was putting out 9 volts instead of 5. Replacing the 7805 regulator fixed that issue and I had a beautiful, booting system.
I was pleasantly surprised to find the drives had not been destroyed by the overvoltage condition. Furthermore, both of them worked. I was able to boot the OS master disk and make a working copy of it on the second drive.
Even the serial port worked (or so I thought). I tied TX and RX together and started up LCOMM. Loopback worked. However, I had difficulties getting the machine to talk to my PC. After banging my head for several hours, I decided to look at the serial lines with an oscilloscope. Upon sending a space character, I measured the period of the single bit. Quick math yielded 20,000 baud. Apparently, the machine was stuck on 19,200 baud. This is a failure mode I have certainly never seen on a modern PC.
However, the answer lie in the schematics. The serial mode and baud rates are set by I/O port E8h and E9h, whereas the data and status registers are EAh and EBh. The A1 address line was stuck high! Further examination revealed the culprit – the “flex” connector that connects the serial board to the motherboard. These connectors are truly awful pieces of cost reduced engineering. I attempted to replace these with single row headers (a reliable modern connector of the same pitch), but was unable to locate any locally. Instead, I jammed the offending pin into the connector using a scratch awl. Presto! – a working serial port.
With a functional serial port, it was time to figure out how to actually use this machine and load software onto it. I found Jeff’s instructions on vintagevolts.com that use LCOMM to transfer a binhexed copy of XMODEM onto the machine. After some adaptation, I stumbled upon a simpler and more reliable way – use the LDOS ROUTE command to remotely drive BASIC from the PC. This buffered all of the binhexed results into memory, thereby avoiding the need to pause/retry during disk writes. Once the /BAS file has been uploaded, it may be executed directly, thus producing a runnable XMODEM36/BAS.
The XMODEM program had a few quirks as well – it wasn’t obvious what baud rate it was on. After some trial and error, I discovered that 1) the send and receive commands would use whatever baud rate the UART was set to, 2) the terminal command would force you to use either 300 or 1200, and 3) it was generally incompatible with LDOS’ RS232T/DVR. So, I wrote an add-on program to set the port to 9600 (without using RS232T/DVR) and used that to transfer files via XMODEM. As long as you type everything correctly and the files don’t already exist it works great!
At this point I declared victory, put the case back together, and took the machine upstairs to its new home. For the first of many times, that set me up for major disappointment. Within hours of doing so I went to format a new data disk. The :1 drive coughed, sputtered, and refused to verify the cylinders it had formatted. I switched back to the old disk – same result. So, I took it back downstairs, disassembled it, cleaned the heads – same result. I looked into alignment software, but since the drive cannot even read its own disks I don’t believe that is the problem and I don’t want to make things worse.
I still had one working drive, so I decided to run as a single drive system. This is quite painful, but I did find some LDOS commands for loading more of the OS into memory to make it tolerable (at least for creating new OS disks). However, I began to notice a pattern of my disks not reading on the :0 drive after a few days. I cleaned the heads umpteen times, changed media brands twice, but still hit these issues. It became clear that it was time to invest in a FreHD.
The TRS-80 was a business machine, so one of the options Radio Shack offered was a hard drive. This 5 megabyte beast cost $3000 and came complete with an external enclosure, fan, key lock, and connected to the computer using a 50 pin ribbon cable. The FreHD is a modern replacement that emulates the original drive. It stores on an SD (digital camera) card and allows up to 45MB of space to be used. It also provides the ability to mount virtual floppy images and transfer files to/from the card directly. Most vintage computers have such devices available these days, but this is the nicest I have seen.
I emailed Ian (the supplier), got a quick response, and had my board in hand a week later. In the meantime, I ordered the remaining parts from Digi-Key and ALMOST got it right. The only issue was I ordered the wrong pitch header. A local friend was able to supply the correct header for me, for which I am grateful.
Assembling the FreHD was a snap. I made my own cable by crimping a card edge connector onto an old SCSI cable. Other than a nasty cut on my hand, this was a trivial exercise. My bench vise did a fine job of squeezing on the connectors – I have never felt the need to buy the hand crimpers.
Since I did not have an LDOS 5.3.1 floppy, I brought up the FreHD using what I had – LDOS 5.1.3. I followed the instructions in the Radio Shack hard drive manual (one came with my machine) and used the “Initialization” disk to partition, format, and install LDOS on the FreHD. Everything worked except DSK/DCT, which evidently checks the OS version.
The next order of business was to upgrade the system to LDOS 5.3.1. I spent quite a lot of time on this problem. Boot disk images can be easily downloaded from the internet, but how do you transfer this to a physical floppy the TRS-80 can boot from? The Model III must boot from a floppy.
My first thought was to write a pair of programs to transfer the image using the serial port. A transmitter program would run on the PC (under a TRS-80 emulator) and send sectors over the wire to the receiver program running on the real TRS-80. This turned out to be quite hard – getting timeout and synchronization algorithms running between two machines with a flaky connection and primitive tools should not be underestimated. I am convinced I could have made this work, but I seemed to be wearing out my test disks. So, I went for a plan B and modified my pair of programs to use the FreHD instead of the serial port. I began to suspect it was physical media failures. When my LDOS 5.1.3 disk also failed, this suspicion was confirmed – my :0 drive was eating my disks! This forced my hand on diskless FreHD booting.
First, I needed to locate a 2716 EPROM. Upon further research I concluded that a 2732A could be used in its place and I already had one. I simply repeated the 2K image twice so that no matter what A11 was, the same image would be read back. After a morning of hacking (to adapt my Arduino 2764 programmer to 2732), I emerged with a burned auto boot ROM.
I was quite happy to see the ROM enter the auto boot menu. However, none of the menu choices would work. The CD included with the FreHD had several versions of the SD card files and frehd.rom. It wasn’t clear which was the latest & greatest. I finally got it to work by using an older frehd.rom and image. I suspect that I burned a back-level version of the Model III ROM, which wasn’t compatible with the boot menu (though the menu itself seemed to work). I considered re-burning the ROM, but I do not want to risk another extract/insert cycle with the motherboard.
I was ready to declare victory, but the TRS-80 had one last surprise in store for me. After putting the case back together, I was greeted with a loud bang on power-up. Disassembling the case led me to the culprit – the AC power line had been pierced by one of the case screws. Fortunately, it was a quick repair – splice the wire and cable tie it so that it won’t wind up where it shouldn’t be.
So, at last I have a working TRS-80 Model III, after nearly two months of effort.
Written on the TRS-80 using David Welsh’s Lazy Writer word processor.