Digital encoding of APL symbols
The programming language APL uses a number of symbols, rather than words from natural language, to identify operations, similarly to mathematical symbols. Prior to the wide adoption of Unicode, a number of special-purpose EBCDIC and non-EBCDIC code pages were used to represent the symbols required for writing APL.
Due to its origins on IBM Selectric-based teleprinters, APL symbols have traditionally been represented on the wire using a unique, non-standard character set. In the 1960s and 1970s, few terminal devices existed which could reproduce them, the most popular ones being the IBM 2741 and IBM 1050 fitted with a specific APL print head. Over time, with the universal use of high-quality graphic display, printing devices and Unicode support, the APL character font problem has largely been eliminated.
EBCDIC code pages
Code page 293 ("APL (USA)") includes APL symbols, in addition to preserving the basic Latin letters and Western Arabic numerals at their usual EBCDIC locations. Code page 310 ("Graphic Escape APL/TN") includes a larger gamut of symbols, but does not itself include the basic Latin letters or the basic digits. It is used alongside Code page 037, with the Code page 310 codes being prefixed by the Graphic Escape (EBCDIC 0x08) control character. Code page 351 ("GDDM Default (USA)") contains most of these additional symbols in addition to the letters and digits, by replacing several control characters with symbols.
Other pre-Unicode code pages
Code page 907 is an 8-bit extended ASCII code page intended for use with APL. ISO-IR-68 is a 7-bit heavily modified ASCII intended for use with APL in an environment allowing overstriking of characters.
Most APL symbols are present in Unicode, in the Miscellaneous Technical range, although some APL products may not yet feature Unicode, and some APL symbols may be unused or unavailable in a given vendor's implementation. Missing from Unicode are the traditional underscored alphabetic characters; their usage has been eliminated or deprecated in most APL implementations.
As of 2010, Unicode allows APL to be stored in text files, published in print and on the web, and shared through email and instant messaging. Entering APL characters still requires the use of either a specific input method editor or keyboard mapping, or of a specific touch interface. APL keyboard mappings are available for free for the most common operating systems, or can be obtained by adding the Unicode APL symbols to existing keyboard map.
Note the mnemonics associating an APL character with a letter: ? (question mark) on Q, ⋆ (power) on P, ρ (rho) on R, ⊥ (base value) on B, ⊤ (eNcode) on N, ∣ (modulus) on M and so on. This makes it easier for an English-language speaker to type APL on a non-APL keyboard, providing one has visual feedback on one's screen. Also, decals have been produced for attachment to standard keyboards, either on the front of the keys or on the top of them.
Later IBM terminals, notably the IBM 3270 display stations, had an alternate keyboard arrangement which is the basis for some of the modern APL keyboard layouts in use today.
Further APL characters were available by overstriking one character with another. For example, the log symbol (⍟) was formed by overstriking ⇧ Shift+P with ⇧ Shift+O. This extended the graphic abilities of the earlier teleprinters, but made it more complex to correct errors and edit program lines.
New overstrikes were introduced by vendors as they produced versions of APL tailored to specific hardware, system features, file systems, and so on. Further, printing terminals and early APL cathode-ray terminals were able to display arbitrary overstrikes, but as personal computers rapidly replaced terminals as a data-entry device, APL character support became provided as an APL Character Generator ROM or a soft character set rendered by the display device. With the advent of the modern PC, APL characters were defined in specific fonts, eliminating the distinction between overstruck characters and standard characters.
Finally, the symbols were ratified in Unicode and given specific code points, with unambiguous interpretations, independently of the graphic font.
- IBM (1996) . "Code Page (CPGID) 00293: APL (USA)". REGISTRY, Graphic Character Sets and Code Pages.
- Tachyon Software (2007-07-31). Code Page 00293: EBCDIC APL.
- IBM (1987). "Code Page (CPGID) 00310: Graphic Escape APL/TN". REGISTRY, Graphic Character Sets and Code Pages.
- Tachyon Software (2007-07-31). Code Page 00310: 3270 APL Graphic Escape.
- IBM. "Appendix G-1. EBCDIC control character definitions". IBM Globalization. Archived from the original on 2018-09-11.
- "x3270 Character Set". x3270 Documentation.
- Tachyon Software (2007-07-31). Code Page 00351: GDDM Default (USA).
- IBM. Code Page 00907 (PDF). Archived from the original (PDF) on 2017-08-03.
- Standards Council of Canada (1983-06-01). APL Character Set for Workspace Interchange (PDF). ITSCJ/IPSJ. ISO-IR-68.
- Cowan, John (2004-06-29). "ISO-IR-68 to Unicode". Unicode.org. Unicode, Inc. Retrieved 19 June 2017.
- "The Unicode Standard 5.1 Code Charts: Technical Symbols U+2300-U+23FF" (PDF). Unicode Standard 5.1. Unicode Consortium. Archived (PDF) from the original on 2 October 2008. Retrieved October 12, 2008.
- A more up-to-date keyboard diagram, applicable for APL2 and other modern implementations, is available at WikensOnline Union APL large keyboard layout for Windows Archived March 10, 2012, at the Wayback Machine, actual photo + diagram here Archived April 3, 2015, at the Wayback Machine and NARS2000 APL keyboard layout here.