APL Keyboard for APL
Posted: 12 Jul 2021, 06:42
One of the keyboards that has been waiting for conversion is this from a TI Silent 700 Model 743 (or more likely 745 -- the difference is an acoustic coupler and I think they sold better with), including the APL option:
The board is 63SD17-3 with PCB SD-16329. Slom already converted the same board to use a Teensy a couple years ago. They already figured out all the details of the matrix encoding, where the key- and rocker-switches are just exposed directly, as per the Maintenance Manual
The converter uses almost every pin. The NOS FFC I have seems too stiff and the wires don't quite fit solidly into the connector, so I hacked something up with perfboard and leftover diode leads that then connect to ribbon cables.
But what to do to make this interesting besides transcribing the decoder into QMK?
One of the rocker switches selects APL mode, where the terminal uses a different character ROM with APL characters for the shifted letters and numbers. Nowadays, APL systems use Unicode for input and come with some kind of special IME for entering APL codepoints using special keyboard shifts, whether or not the keyboard has APL legends. QMK does Unicode (as well as one can on the various standard operating systems). So, why not make the APL switch work as it did originally?
This entails a couple of additional layers, for unshifted and shifted APL mode and some logic to switch based on the APL switch and what shifts are pressed. Plus, since the exact reports to send need to vary by target system, the additional switches can select which of those to use.
There are still some important APL characters that don't have legends on this keyboard. Originally, these would have been input by overstriking pairs of the ones that are there. The Silent 700 was a printing terminal, so overstriking characters are easy for it. CRTs would have needed an extended ROM with some overstrike combinations (and logic to detect them when outputting). So, why not have some form of overstrike, too?
Specifically, the LINE FEED key, when pressed right after one of the APL Unicode keys, enters a mode where the next Unicode key combines with that one and replaces it by first sending BACKSPACE.
Here, ⍝ is SHIFT C (entering ∩), LINE FEED (LED lights to show mode), SHIFT J (overstrike ∘).
It has Micro Switch SD series switches.
Most are 1A3S, except for three 1A8S. BREAK and PAPER ADV I can understand, but I am unclear why BACK SPACE was made heavier instead of HERE IS, which would have seemed more logical both physically and functionally.The board is 63SD17-3 with PCB SD-16329. Slom already converted the same board to use a Teensy a couple years ago. They already figured out all the details of the matrix encoding, where the key- and rocker-switches are just exposed directly, as per the Maintenance Manual
The converter uses almost every pin. The NOS FFC I have seems too stiff and the wires don't quite fit solidly into the connector, so I hacked something up with perfboard and leftover diode leads that then connect to ribbon cables.
But what to do to make this interesting besides transcribing the decoder into QMK?
One of the rocker switches selects APL mode, where the terminal uses a different character ROM with APL characters for the shifted letters and numbers. Nowadays, APL systems use Unicode for input and come with some kind of special IME for entering APL codepoints using special keyboard shifts, whether or not the keyboard has APL legends. QMK does Unicode (as well as one can on the various standard operating systems). So, why not make the APL switch work as it did originally?
This entails a couple of additional layers, for unshifted and shifted APL mode and some logic to switch based on the APL switch and what shifts are pressed. Plus, since the exact reports to send need to vary by target system, the additional switches can select which of those to use.
Code: Select all
$ apl
______ _ __ __ __ ___ ____ __
/ ____// | / // / / / / | / __ \ / /
/ / __ / |/ // / / / / /| | / /_/ // /
/ /_/ // /| // /_/ / / ___ | / ____// /___
\____//_/ |_/ \____/ /_/ |_|/_/ /_____/
Welcome to GNU APL version 1.8 / Unversioned directory
Copyright (C) 2008-2019 Dr. Jürgen Sauermann
Banner by FIGlet: www.figlet.org
This program comes with ABSOLUTELY NO WARRANTY;
for details run: apl --gpl.
This program is free software, and you are welcome to redistribute it
according to the GNU Public License (GPL) version 3 or later.
∘.=/⍳¨4 4
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
)off
Goodbye.
Session duration: 60.2273 seconds
Specifically, the LINE FEED key, when pressed right after one of the APL Unicode keys, enters a mode where the next Unicode key combines with that one and replaces it by first sending BACKSPACE.
Code: Select all
$ dyalog
Dyalog APL/S-64 Version 18.0.40684
Serial number: UNREGISTERED - not for commercial use
+-----------------------------------------------------------------+
| Dyalog is free for non-commercial use but is not free software. |
| A non-commercial licence can be used for experiments and |
| proof of concept until the point in time that it is of value. |
| For further information visit |
| https://www.dyalog.com/prices-and-licences.htm |
+-----------------------------------------------------------------+
Sun Jul 11 20:20:30 2021
x←4?100
x
97 50 79 63
⍝ sort that.
⍋x
2 4 3 1
)off