Some serial ASCII keyboards
Posted: 12 Apr 2021, 07:32
While not as common as a strobed parallel interface, one occasionally runs across vintage keyboards that use TTL-level serial to communicate ASCII characters with the terminal. The terminal itself will usually use RS-232 level serial to send ASCII to the modem / host. In addition to the voltage / polarity difference, the keyboard needs to talk to the terminal when in local / setup mode.
There are keyboards that use 7- or 8-bit serial to pass key codes, rather than ASCII characters, to the terminal, such as Sun or Convergent.
In this topic, I am also somewhat arbitrarily excluding protocols that augment ASCII with some more direct indication of the state of the shift keys. In a parallel protocol, the shifts could just take more single-bit signals, often not synchronized with the strobe pulse. With serial, more bytes are needed. For example, the NMB TeleVideo keyboards send two bytes: first a bit-mask of shifts and then the ASCII character, which has those shifts applied already. This extra information offers a better chance of implementing a USB keyboard. With just the ASCII character, about the best one can do is implement a CDC serial port.
Along with the CMOS chips that implemented key switch matrix scanning, ASCII conversion, and parallel output, which were common in early hobbyist computers, there were serial versions. For instance, the parallel NS MM5740 was complemented by the serial MM57499. This 1200 baud encoder is used in the Bridge terminal. The 4P4C modular jack is a good sign that serial is involved, and ASCII is a reasonable bet. Conversion to USB is just a matter of a CP2102.
Such low speed is also well within the capabilities of an MCS-48. The TeleVideo TS 800A did 1200 baud with an 8048. In addition to taking 12V power, the fourth signal on this keyboard is a direct analog signal for the speaker. So, as seen there, there is a choice between a CP2102 for just serial output, or an actual microcontroller to do beeping too.
Serial can also be used for the to-keyboard direction if there is any control that the terminal needs. The HDS APL keyboard implemented bidirectional 9600 serial with an 8748. A byte sent to the keyboard is just a bit-mask for which LEDs to light.
The next step is actual commands to the keyboard that implement a variety of controls. Kaypro is a good example of this: 4P4C RJ for 5V power and bidrectional 300 baud serial. Output is ASCII with extended characters for the arrow keys. Input commands enable / disable key click and beep the "bell." Again a CP2102 is perfectly adequate as a conversion. But one can also use a microcontroller to translate ASCII BEL to beep and convert the arrow keys to VT100 equivalents so that they just work in screen or cu.
There are keyboards that use 7- or 8-bit serial to pass key codes, rather than ASCII characters, to the terminal, such as Sun or Convergent.
In this topic, I am also somewhat arbitrarily excluding protocols that augment ASCII with some more direct indication of the state of the shift keys. In a parallel protocol, the shifts could just take more single-bit signals, often not synchronized with the strobe pulse. With serial, more bytes are needed. For example, the NMB TeleVideo keyboards send two bytes: first a bit-mask of shifts and then the ASCII character, which has those shifts applied already. This extra information offers a better chance of implementing a USB keyboard. With just the ASCII character, about the best one can do is implement a CDC serial port.
Along with the CMOS chips that implemented key switch matrix scanning, ASCII conversion, and parallel output, which were common in early hobbyist computers, there were serial versions. For instance, the parallel NS MM5740 was complemented by the serial MM57499. This 1200 baud encoder is used in the Bridge terminal. The 4P4C modular jack is a good sign that serial is involved, and ASCII is a reasonable bet. Conversion to USB is just a matter of a CP2102.
Such low speed is also well within the capabilities of an MCS-48. The TeleVideo TS 800A did 1200 baud with an 8048. In addition to taking 12V power, the fourth signal on this keyboard is a direct analog signal for the speaker. So, as seen there, there is a choice between a CP2102 for just serial output, or an actual microcontroller to do beeping too.
Serial can also be used for the to-keyboard direction if there is any control that the terminal needs. The HDS APL keyboard implemented bidirectional 9600 serial with an 8748. A byte sent to the keyboard is just a bit-mask for which LEDs to light.
The next step is actual commands to the keyboard that implement a variety of controls. Kaypro is a good example of this: 4P4C RJ for 5V power and bidrectional 300 baud serial. Output is ASCII with extended characters for the arrow keys. Input commands enable / disable key click and beep the "bell." Again a CP2102 is perfectly adequate as a conversion. But one can also use a microcontroller to translate ASCII BEL to beep and convert the arrow keys to VT100 equivalents so that they just work in screen or cu.