TRS-80 Model 100 with the KPC-3
I recently recapped a TRS-80 Model 100 after attempting to connect it to the Kantronics KPC-3 TNC. I connected the two together using a standard 25 pin to 9 pin RS-232 cable. At 9600 baud, the Model 100 was seemingly unable to display the characters coming from the KPC-3 consistently:
When I lowered the TNC’s RS-232 interface baud rate to 300 baud (this setting is independent from the radio interface baud rate), the problem disappeared. The Model 100 was able to display the characters without issue. I had recapped the Model 100 in hopes that would fix the serial port issues. The Model 100 did need to be recapped anyhow, almost all of the electrolytic capacitors had leaked.
The very same KPC-3 had been connected to various PCs over the years without any such issue.
The very same Model 100 can connect to another TNC (the KAM All Mode) at 9600 baud without issues. Further, the Model 100 can connect to a backpack drive at 19200 baud without issues. The Model 100 can connect to a windows PC at 9600 baud without issues.
Of course buffer overrun would occur on occasion with my testing, but that can be solved with software flow control. That issue and symptom is distinct from the other issue of garbled text appearing on the screen from just a few bytes being sent to the Model 100.
Suggested Causes
I mentioned this issue on the M100 group, and a few suggestions were made. One suggestion was to look into software flow control to avoid buffer overruns. I tried this, using Xon/Xoff on both sides of the connection (the Model 100 and the TNC). This made no difference.
Another suggestion was that my Model 100 might need a hardware fix, specifically the resistors on the RS-232 interface, as there was a technical service bulletin for the early production Model 100s.
In that bulletin, a specific serial number range was noted and mine was outside of that range. Just in case, I also verified the resistor values in my version to be sure it had the correct 330 ohm resistors for R91, R94 and R99.
A bit later on, another suggestion was made that there could be a difference in the clock or timing between the KPC-3 and the Model 100, perhaps just outside the tolerance when these two are combined.
RS-232 Standard
Before digging further, it was helpful to review the RS-232 standard. The standard indicates that the voltage level for a logic 0 is between +3 volts to +15 volts. A logic 1 is between -3 volts to -15 volts.
KPC-3 TX Line
After verifying all of the obvious items that could cause issues with the RS-232 connection between the KPC-3 and the Model 100, I took out the scope and monitored the RS-232 TX output from the KPC-3 to the Model 100:
What’s interesting about this capture is the RS-232 levels. A logic 1 here is only -2.5 volts and a logic 0 is about 7.5 volts. We need to see at least a -3V to +3V swing for ones and zeros on the RS-232 line. The -2.5 volts just isn’t quite enough for the Model 100 to decode. It appears that the level is shifted from a zero threshold up by approximately +0.5 volts.
I then disconnected the KPC-3 from the Model 100 and the KPC-3 output level then appeared more normal.
The levels are now -12.5 to +12.5 volts approximately, centered at zero.
I then connected the Model 100 to another TNC, the KAM All Mode:
Besides the ripple on the levels, the voltage levels were within spec, and the offset was a bit better than with the KPC-3.
To be as thorough as possible in my comparisons, I also connected the Windows PC to the KPC-3:
Here I have a similar and pronounced upward shift on the offset, but the Windows PC has a bit more drive, indicating a -5 to +7.5 volt swing.
The RS-232 output on the Windows PC with nothing connected to it indicated a full -10 to +10 volt swing between 0 and 1, which is likely why the KPC-3 works with the PC.
Problem Discovered
The KPC-3 appears to be the culprit in this combination of RS-232 connections. It just so happened to work with all of the Windows PCs I’ve used over the years because of the tolerance of RS-232 devices. The standard RS-232 needs to be at least -3 volts for a 1 and +3 volts for a zero, and when the Model 100 is connected to the KPC-3, -2.5 volts for a 1 causes the problem.
The Model 100 has only 6 volts DC to work with, supplied by either an AC adapter or 4 “AA” batteries. It’s power supply provides +5 VDC and a -5 VDC for all of the components internally. The Model 100 has no modern TTL to RS-232 chip with a charge pump to provide any higher voltages on the RS-232 line. Therefore, it swings between -5 V and +5 V for it’s RS-232 output lines:
This is well within the specification for an RS-232 interface. The capture above is with nothing connected to the RS-232 TX line output of the Model 100.
How is the KPC-3 Different?
Now that I’ve verified the RS-232 input and output of the Model 100 works with every other RS-232 device I have, except for the KPC-3, I looked further at the KPC-3. When the KPC-3 is connected to the Model 100, I observed the DC offset shift upward as noted in the image below:
Suspecting an issue or setting on the KPC-3, I read the owners manual again, and came across this section:
I connected the Model 100 to the KPC-3 with only the ground, RX, and TX lines. The Model 100 was able to display the data from the KPC-3 without issues!
The following capture shows the “cmd:” prompt from the KPC-3 to the Model 100:
The offset and voltage levels looked good. I proceeded to connect the remainder of the DB9 pins between the two devices one at a time until I noticed the signal level shift and out of spec voltage level for a logic 1. When connecting pins 4 and 6, the DSR line from the Model 100 to the DTR line to the Model 100, the issue returned.
Problem Confirmed
Now that I’ve found the cause of the issue with the Model 100 and the KPC-3, the solution was simple. I cut pin 4 from a gender changer and added that to my cable I use to connect to the KPC-3.
The Model 100, if tying the DSR line to the DTR, will exhibit the odd voltage shift and degradation of the RS-232 RX signal.
Final Thoughts
I’m glad I dug into the issue between these two devices. The Model 100 makes for a great terminal for packet radio, mainly due to battery life and simplicity. One of the reasons I picked up the Model 100 was for packet and for some automation of tasks, logging, and alerting.
During my testing, I was monitoring the APRS frequency 144.390 MHz, which provided constant activity to observe the RS-232 TX line from the KPC-3.