Model I Keybounce

written by Matthew Reed

Keyboard Debounce and Real-Time Clock cover

Cover of Keyboard Debounce and Real-Time Clock, otherwise known as KBFIX

After the introduction of Level II BASIC in 1978, many TRS-80 Model I users began noticing a curious behavior. Pressing a key on the keyboard would sometimes generate multiple identical characters on the screen, as if the key had been pressed more than once. At first, only one key would be affected, but later the problem would spread to more keys. The problem, known as keybounce, made typing very difficult and became known as the Model I’s biggest flaw.

Radio Shack wrote about the problem in the November 1978 issue of the Radio Shack Microcomputer Newsletter (later known as the TRS-80 Microcomputer News):

Many of you have experienced what we call “Keybounce” — multiple letters from one keystroke. In almost every case it is traceable to contaminated key contacts. It can be dust, dirt, cigarette smoke, or almost any kind of residue. Usually, this doesn’t occur except in Level II computers, and after some use.

The Model I keyboard

The original Model I keyboard used key switches that were made in two pieces: an upper part which contained the keycap and a lower part which was attached to the keyboard. The problem with this design was that each key switch had an exposed seam. Dust and dirt could (and would) find their way inside the keys and affect the metal prongs that controlled the switch. (Cigarette smoke was a very common culprit.) Dirty metal prongs led to noisy switch contacts that Level II BASIC recognized as multiple key presses.

There were two solutions for Model I keybounce: cleaning the key switches and “debouncing” the keybounce using software.1

Cleaning the switches

Since dirt and grime in the keys was causing the keybounce, one way to fix the problem was to clean the key switches. The best way to clean a key on the Model I keyboard was to remove the keycap, essentially splitting the key switch in two. This exposed the metal prongs so that they could be cleaned.

The recommended approach was to either use a paper clip bent into a “J” shape or a plastic comb to pry up an individual keycap. (Using a screwdriver wasn’t recommended because the metal of the screwdriver could create nicks in the plastic of the keycaps.) Once a keycap was removed, the metal prongs in the key switch were visible and could be carefully cleaned.

Techniques for cleaning the prongs were varied. Using compressed air was a common approach. Some people used alcohol or even a rubber eraser. Radio Shack recommended applying their Color TV Tuner Cleaner (catalog number 64-2320) to a cotton swab and using it to gently clean the prongs. Other people, including Dennis Báthory-Kitsz, felt that using tuner cleaner was a bad idea as it ran the risk of turning any remaining dirt into a “dusty mudpile.”

Cleaning the key switches wasn’t a permanent solution and the keybounce would sometimes reappear after as little as one month. Some people recommended filling the inside of the key switches with a silicone grease, such as Dow Corning 4 Electrical Insulating Compound. In addition to preventing keybounce in the future, use of the grease supposedly improved the feel of the keys. The downside of the grease was it would eventually leak out and pool at the bottom of the Model I case.

Software debouncing

Problems with dirty switch contacts aren’t unique to keyboards; practically any type of switch can suffer from “contact bounce.” The software solution is to use a “debouncing” delay during keyboard scanning to weed out phantom key presses due to keybounce. The fact that Level II BASIC didn’t debounce the keyboard in its input routines was a major design flaw.2 However, it was possible to fix the problem by extending the Level II BASIC keyboard driver to add debouncing delays.

The official Radio Shack keyboard debouncing utility was usually referred to as KBFIX. The full name of the package was Keyboard Debounce and Real-Time Clock.3 It was a cassette that could be ordered through Radio Shack’s National Parts Department (stock item ACT-0300).

KBFIX was a short (55 bytes long) program that added debouncing delays to the ROM keyboard driver. It completely eliminated the keybounce problem with no hardware modifications. KBFIX worked for both cassette systems and for disk system running Model I TRSDOS. The disadvantage was that it needed to be loaded fresh every time the Model I was started.

KBFIX was far from the only debouncing utility available. There were free debounce utilities published in many computer magazines (KBEEPFIX by Dennis Báthory-Kitsz in the February 1980 issue of 80 Microcomputing was a notable example). Many products, such as Level III BASIC and the Exatron String Floppy, included their own debouncing routines. Almost all Model I operating systems (except for Model I TRSDOS) offered keyboard debouncing as a feature.

Later developments

Later revisions of the Model I used a different type of keyboard than the original. The new keyboard, manufactured by ALPS, used sealed key switches that were much less susceptible to keybounce. (Owners of Model I’s with the earlier keyboard could buy the newer keyboard for $75.00.) Radio Shack used the ALPS keyboard later in the Model III and for most of the production run of the Model 4.

One of the improvements in the final Model I ROM revision, version 1.3 (known as the R/S L2 ROM), was the addition of keyboard debouncing. This meant that KBFIX was no longer needed. (In fact, using KBFIX with the 1.3 ROM would lead to keyboard scanning delays so long that keys could be missed!)

Radio Shack learned from their keybounce mistake with the Level II ROM; all subsequent TRS-80 models, such as the Color Computer and the Model III, included keyboard debouncing in the ROM.


  1. Debouncing using a hardware filter was another possible solution, but I don’t know of any product that did that. ↩︎

  2. Contrary to what some have written, Level I BASIC didn’t have problems with keybounce. ↩︎

  3. “Real-time clock” in the package name didn’t have the same meaning then as it does today. In this case, it meant an extension to Level II BASIC that let cassette systems with an Expansion Interface keep track of the clock while the system was on. This was a feature normally reserved for disk systems. ↩︎

Categories: General