Content deleted Content added
→Character sets: tag jargon: "on the wire". My best guess is it means "in transmission", but that doesn't really make sense. |
|||
(24 intermediate revisions by 14 users not shown) | |||
Line 3:
==Character sets==
Due to its origins on [[IBM]] [[IBM Selectric typewriter|Selectric]]-based [[teleprinter]]s, APL symbols have traditionally been represented on the wire{{jargon inline|date=August 2025}} 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.
===Character repertoire===
Line 9:
{|class="wikitable collapsible"
|+"SL" (APL functional symbol) series GCGIDs
!GCGID<ref name="cs963pdf">{{cite web |url=
|-
|SL010000 || Up Stile (APL) || {{unichar|2308|LEFT CEILING}} ||
Line 25:
|SL070000 || Delta Stile (APL) || {{unichar|234B|APL FUNCTIONAL SYMBOL DELTA STILE}} ||
|-
|SL080000 || Circle (APL) || {{unichar|25CB|WHITE CIRCLE}}<ref name="tachyon310"/><ref name="consortiumir68"/><ref name="x3270"/><ref name="dyalogsheet">{{cite web |url=https://docs.dyalog.com/17.0/CheatSheet%20-%20Nomenclature%20-%20Functions%20and%20Operators.pdf |title=Dyalog Nomenclature: Functions and Operators |website=Dyalog - Documentation Centre |publisher=Dyalog APL}}</ref> || This is SM750000 in a non-APL context, for example, in the [[C0 control codes|C0]] replacement graphics from [[code page 437]],<ref name="cpgid437">{{cite web |url=
|-
|SL090000 || Circle Stile (APL) || {{unichar|233D|APL FUNCTIONAL SYMBOL CIRCLE STILE}} ||
Line 47:
|SL180000 || Down Caret Tilde (APL) || {{unichar|2371|APL FUNCTIONAL SYMBOL DOWN CARET TILDE}} ||
|-
|SL190000 || Down Tack Jot (APL){{efn |name=tacks}} || {{unichar|234E|APL FUNCTIONAL SYMBOL DOWN TACK JOT}}{{efn |name=tacks}} ||
|-
|SL200000 || Up Tack Jot (APL){{efn |name=tacks}} || {{unichar|2355|APL FUNCTIONAL SYMBOL UP TACK JOT}}{{efn |name=tacks}} ||
|-
|SL210000 || Up Shoe Null (APL) || {{unichar|235D|APL FUNCTIONAL SYMBOL UP SHOE JOT}} ||
|-
|SL220000 || Up Tack (APL){{efn |name=tacks}} || {{unichar|22A4|DOWN TACK}}{{efn
|-
|SL230000 || Down Tack (APL){{efn |name=tacks}} || {{unichar|22A5|UP TACK}}{{efn |name=tacks}} ||
|-
|SL240000 || Down Tack Up Tack (APL) || {{unichar|2336|APL FUNCTIONAL SYMBOL I-BEAM}} ||
Line 67:
|SL280000 || Quad Slope (APL) || {{unichar|2342|APL FUNCTIONAL SYMBOL QUAD BACKSLASH}} ||
|-
|SL290000 || Ampersand Underbar<ref name="slgcgidchart"/> || || Not used in any documented code page. Can be represented in Unicode with the sequence {{mono|U+0026}} {{mono|U+
|-
|SL300000 || Equal Underbar (APL) || {{unichar|2261|IDENTICAL TO}} ||
|-
|SL310000 || OUT Symbol (APL)<ref name="slgcgidchart"/> || none{{efn|Unicode 1.0 had the "APL out" character at U+2301, but it was removed in Unicode 1.0.1.<ref>{{cite web|url=https://www.unicode.org/versions/Unicode1.0.0/Notice.pdf|title=Unicode 1.0.1 Addendum|work=The Unicode Standard|date=1992-11-03|accessdate=2024-09-21}}</ref>}} || Not used in any IBM-documented code page.
|-
|SL320000 || Diaeresis Dot (APL) || {{unichar|2235|BECAUSE}} ||
Line 77:
|SL330000 || Delta Underbar (APL) || {{unichar|2359|APL FUNCTIONAL SYMBOL DELTA UNDERBAR}} ||
|-
|SL340000 || Left Tack (APL){{efn |name=tacks}} || {{unichar|22A2|RIGHT TACK}}{{efn |name=tacks}} ||
|-
|SL350000 || Right Tack (APL){{efn |name=tacks}} || {{unichar|22A3|LEFT TACK}}{{efn |name=tacks}} ||
|-
|SL360000 || Quad (APL) || {{unichar|2395|APL FUNCTIONAL SYMBOL QUAD}}<ref name="tachyon310"/><ref name="consortiumir68"/> || {{unichar|25AF|WHITE VERTICAL RECTANGLE}}<ref name="slgcgidchart"/>
Line 85:
|SL370000 || Less Greater (APL) || {{unichar|22C4|DIAMOND OPERATOR}}<ref name="tachyon310"/><ref name="consortiumir68"/> || {{unichar|25CA|LOZENGE}},<ref name="slgcgidchart"/> {{unichar|25C6|BLACK DIAMOND}}<ref name="x3270"/><ref name="mainframew"/>
|-
|SL380000 || Stile (APL) || {{unichar|2223|DIVIDES}}<ref name="tachyon310"/><ref name="consortiumir68"/> || {{unichar|2502|BOX DRAWINGS LIGHT VERTICAL}},<ref name="x3270"/><ref name="mainframew"/> {{unichar|007C|VERTICAL LINE}}<ref name="dyalogsheet"/>
|-
|SL400000 || Up Shoe (APL) || {{unichar|2229|INTERSECTION}}<ref name="tachyon310"/><ref name="consortiumir68"/><ref name="dyalogsheet"/> || {{unichar|22C2|N-ARY INTERSECTION}}<ref name="mainframew"/><ref name="x3270"/>
|-
|SL410000 || Down Shoe (APL) || {{unichar|222A|UNION}}<ref name="tachyon310"/><ref name="consortiumir68"/><ref name="dyalogsheet"/> || {{unichar|22C3|N-ARY UNION}}<ref name="mainframew"/><ref name="x3270"/>
|-
|SL420000 || Left Shoe (APL) || {{unichar|2282|SUBSET OF}} ||
Line 99:
|SL450000 || Diaeresis (APL) || {{unichar|00A8|DIAERESIS}} ||
|-
|SL460000 || Tilde (APL) || {{unichar|223C|TILDE OPERATOR}}<ref name="tachyon310"/><ref name="consortiumir68"/> || U+F88F in IBM's private use area scheme.<ref name="unicodenam"/> Also mapped to {{unichar|007E|TILDE}},<ref name="mainframew"/><ref name="x3270"/><ref name="dyalogsheet"/> although SD190000 (U+007E in a non-APL context) co-occurs at 0xA1 (while SL460000 is at 0x80) in code page 213.<ref name="cp293txt"/>
|-
|SL480000 || Circle Plus || {{unichar|2295|CIRCLED PLUS}} ||
Line 105:
|SL490000 || Circle x || {{unichar|2297|CIRCLED TIMES}} ||
|-
|SL500000 || Down Caret (APL) || {{unichar|2228|LOGICAL OR}}<ref name="mainframew"/><ref name="x3270"/><ref name="tachyon310"/><ref name="consortiumir68"/><ref name="slgcgidchart"/><ref name="dyalogsheet"/> ||
|-
|SL510000 || Up Caret (APL) || {{unichar|2227|LOGICAL AND}}<ref name="tachyon310"/><ref name="consortiumir68"/><ref name="dyalogsheet"/> || {{unichar|22C0|N-ARY LOGICAL AND}}<ref name="mainframew"/><ref name="x3270"/>
|-
|SL520000 || Less (APL) || {{unichar|003C|LESS-THAN SIGN}} ||
Line 121:
|SL570000 || Not Less (APL) || {{unichar|2265|GREATER-THAN OR EQUAL TO}} ||
|-
|SL580000 || Quote Dot (APL) || {{unichar|0021|EXCLAMATION MARK}}<ref name="mainframew"/><ref name="x3270"/><ref name="consortiumir68"/><ref name="dyalogsheet"/> || U+F88E in IBM's private use area scheme.<ref name="unicodenam"/> SP020000 ({{unichar|0021|EXCLAMATION MARK}} in a non-APL context) co-occurs at 0x5A in code page 293 (SL580000 is at 0xDB in code pages 293 and 310).<ref name="cp293txt"/> Tachyonsoft lists {{unichar|01C3|LATIN LETTER RETROFLEX CLICK}} for SL580000.<ref name="tachyon310"/>
|-
|SL590000 || Left Arrow (APL) || {{unichar|2190|LEFTWARDS ARROW}}<ref name="tachyon310"/><ref name="consortiumir68"/><ref name="x3270"/> ||rowspan=4| These arrows are SM300000, SM310000, SM320000 and SM330000 respectively in a non-APL context, for example, in the [[C0 control codes|C0]] replacement graphics from [[code page 437]],<ref name="cpgid437">{{cite web |url=
Code pages 907 and 910 keep the non-APL GCGIDs for the C0 replacements but use the APL GCGIDs where the arrows appear outside of the C0 area, while code page 909 uses the APL GCGIDs multiple times, both for the C0 replacements and for between one and two occurrences of each of these arrows outside of the C0 area.<ref name="cpgid907"/><ref name="cpgid909"/><ref name="cpgid910"/>
Line 131:
|SL600000 || Right Arrow (APL) || {{unichar|2192|RIGHTWARDS ARROW}}<ref name="tachyon310"/><ref name="consortiumir68"/><ref name="x3270"/>
|-
|SL610000 || Up Arrow (APL) || {{unichar|2191|UPWARDS ARROW}}<ref name="tachyon310"/><ref name="consortiumir68"/><ref name="x3270"/><ref name="dyalogsheet"/>
|-
|SL620000 || Down Arrow (APL) || {{unichar|2193|DOWNWARDS ARROW}}<ref name="tachyon310"/><ref name="consortiumir68"/><ref name="x3270"/><ref name="dyalogsheet"/>
|-
|SL630000 || Overbar (APL) || {{unichar|203E|OVERLINE}} ||
|-
|SL640000 || Slope (APL) || {{unichar|005C|REVERSE SOLIDUS}}<ref name="mainframew"/><ref name="x3270"/><ref name="consortiumir68"/><ref name="dyalogsheet"/> || U+F889 in IBM's private use area scheme.<ref name="unicodenam"/> Also mapped to {{unichar|2216|SET MINUS}}.<ref name="tachyon310"/> SM070000 ({{unichar|005C|REVERSE SOLIDUS}} in a non-APL context) co-occurs at 0x5A (while SL640000 is at 0xB7) in code page 293.<ref name="cp293txt"/>
|-
|SL650000 || Star (APL) || {{unichar|22C6|STAR OPERATOR}}<ref name="consortiumir68"/> || {{unichar|002A|ASTERISK}}<ref name="tachyon293"/><ref name="dyalogsheet"/>
|-
|SL660000 || Quote (APL) || {{unichar|0027|APOSTROPHE}} ||
Line 147:
|SL680000 || Right Parenthesis (APL) || {{unichar|0029|RIGHT PARENTHESIS}} ||
|-
|SL690000 || Bar (APL) || {{unichar|002D|HYPHEN-MINUS}}<ref name="tachyon293"/><ref name="consortiumir68"/><ref name="x3270"/><ref name="dyalogsheet"/> || {{unichar|2212|MINUS SIGN}}
|-
|SL700000 || Query (APL) || {{unichar|003F|QUESTION MARK}} || U+F888 in IBM's private use area scheme.<ref name="unicodenam"/>
Line 153:
|SL710000 || Alpha (APL) || {{unichar|237A|APL FUNCTIONAL SYMBOL ALPHA}}<ref name="tachyon310"/><ref name="consortiumir68"/> || {{unichar|03B1|GREEK SMALL LETTER ALPHA}}<ref name="mainframew"/><ref name="x3270"/>
|-
|SL720000 || Epsilon (APL) || {{unichar|220A|SMALL ELEMENT OF}}<ref name="consortiumir68"/><ref name="slgcgidchart"/><ref name="dyalogsheet"/> || {{unichar|03B5|GREEK SMALL LETTER EPSILON}},<ref name="mainframew"/><ref name="x3270"/> {{unichar|2208|ELEMENT OF}}<ref name="tachyon310"/>
|-
|SL730000 || Iota (APL) || {{unichar|2373|APL FUNCTIONAL SYMBOL IOTA}}<ref name="tachyon310"/><ref name="consortiumir68"/> || {{unichar|03B9|GREEK SMALL LETTER IOTA}}<ref name="mainframew"/><ref name="x3270"/>
Line 188:
===EBCDIC code pages===
====Code page 293====
'''Code page 293''' ([[CCSID]] 293),<ref>{{cite web|title=CCSID 293 information document|archive-url=https://web.archive.org/web/20160327100212/http://www-01.ibm.com/software/globalization/ccsid/ccsid293.html|archive-date=2016-03-27|url=http://www-01.ibm.com/software/globalization/ccsid/ccsid293.html}}</ref> called "APL (USA)", is an EBCDIC code page which includes APL symbols, in addition to preserving the [[ISO basic Latin alphabet|basic Latin]] letters and [[Western Arabic numerals]] at their usual EBCDIC locations.<ref name="cp293txt">{{cite web |url=
{|{{chset-table-header1|Code page 293<ref>{{Citation|title=Code Page CPGID 00293 (pdf)|url=
|-
|{{chset-left1|0x}}
Line 409:
|-
|{{chset-left1|Cx}}
|{{chset-cell1|U+007B LEFT CURLY BRACKET|{{(}}}}
|{{chset-cell1|U+0041 LATIN CAPITAL LETTER A|A}}
|{{chset-cell1|U+0042 LATIN CAPITAL LETTER B|B}}
Line 427:
|-
|{{chset-left1|Dx}}
|{{chset-cell1|U+007D RIGHT CURLY BRACKET|{{)}}}}
|{{chset-cell1|U+004A LATIN CAPITAL LETTER J|J}}
|{{chset-cell1|U+004B LATIN CAPITAL LETTER K|K}}
Line 480:
|{{chset-ctrl1|| {{control code link|EO}} }}
|}
{{legend|#FFD|Differences from
====Code page 310====
'''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.<ref name="ibm">{{citation|mode=cs1 |url=
{|{{chset-table-header1|Code page 310 (prefixed with 0x08)<ref name="ibmpdf">{{Citation|title=Code Page CPGID 00310 (pdf)|url=
|-
|{{chset-left1|0x}}
Line 704:
|-
|{{chset-left1|Cx}}
|{{chset-cell1|U+007B LEFT CURLY BRACKET|{{(}}}}
|{{chset-cell1|U+207D SUPERSCRIPT LEFT PARENTHESIS|⁽}}
|{{chset-cell1|U+207A SUPERSCRIPT PLUS SIGN / U+002B PLUS SIGN|⁺/+}}
Line 722:
|-
|{{chset-left1|Dx}}
|{{chset-cell1|U+007D RIGHT CURLY BRACKET|{{)}}}}
|{{chset-cell1|U+207E SUPERSCRIPT RIGHT PARENTHESIS|⁾}}
|{{chset-cell1|U+207B SUPERSCRIPT MINUS / U+002D HYPHEN-MINUS|⁻/[[Hyphen-minus|-]]}}
Line 786:
|{{chset-cell1|||style=background:#DDD}}
|{{chset-cell1|||style=background:#DDD}}
|{{chset-cell1|U+007B LEFT CURLY BRACKET|{{(}}}}
|{{chset-ctrl1|U+0009 CHARACTER TABULATION| {{Control code link|HT}} }}
|{{chset-cell1|||style=background:#DDD}}
Line 822:
|{{chset-cell1|U+207A SUPERSCRIPT PLUS SIGN|⁺}}
|{{chset-cell1|U+207B SUPERSCRIPT MINUS|⁻}}
|{{chset-cell1|U+007D RIGHT CURLY BRACKET|{{)}}}}
|{{chset-ctrl1|U+000A LINE FEED (LF)| {{Control code link|LF}} }}
|{{chset-cell1|U+2378 APL FUNCTIONAL SYMBOL IOTA UNDERBAR|⍸}}
Line 998:
|-
|{{chset-left1|Cx}}
|{{chset-cell1|U+007B LEFT CURLY BRACKET|{{(}}}}
|{{chset-cell1|U+0041 LATIN CAPITAL LETTER A|A}}
|{{chset-cell1|U+0042 LATIN CAPITAL LETTER B|B}}
Line 1,016:
|-
|{{chset-left1|Dx}}
|{{chset-cell1|U+007D RIGHT CURLY BRACKET|{{)}}}}
|{{chset-cell1|U+004A LATIN CAPITAL LETTER J|J}}
|{{chset-cell1|U+004B LATIN CAPITAL LETTER K|K}}
Line 1,073:
====Code page 371 (IR-68)====
{{main|ISO-IR-68}}
Code page 371,<ref>{{cite web |url=http://www-03.ibm.com/systems/resources/systems_i_software_globalization_pdf_cp00371z.pdf |archive-url=https://web.archive.org/web/20150708042225/http://www-03.ibm.com/systems/resources/systems_i_software_globalization_pdf_cp00371z.pdf |url-status=dead |archive-date=2015-07-08 |title=Code Page 00371 |publisher=[[IBM]]}}</ref> registered for use with [[ISO/IEC 2022]] as [[ISO-IR-68]],<ref name="ir68">{{
===8-bit modified and/or extended ASCII===
====Code page 907====
'''Code page 907''' is used by the IBM 3812, like
{|{{chset-table-header1|Code page 907<ref name="cpgid907">{{citation|mode=cs1 |archive-url=https://web.archive.org/web/20170803005351/http://www-03.ibm.com/systems/resources/systems_i_software_globalization_pdf_cp00907z.pdf |archive-date=2017-08-03 |url=http://www-03.ibm.com/systems/resources/systems_i_software_globalization_pdf_cp00907z.pdf |title=Code Page 00907 |author=IBM |author-link=IBM}}</ref>}}
Line 1,220:
|{{chset-cell1|U+0079 LATIN SMALL LETTER Y|y}}
|{{chset-cell1|U+007A LATIN SMALL LETTER Z|z}}
|{{chset-cell1|U+007B LEFT CURLY BRACKET|{{(}}}}
|{{chset-cell1|U+2223 DIVIDES / U+2502 BOX DRAWINGS LIGHT VERTICAL|∣/│|style=background:#FFD}}
|{{chset-cell1|U+007D RIGHT CURLY BRACKET|{{)}}}}
|{{chset-cell1|U+223C TILDE OPERATOR / U+007E TILDE|∼/~|style=background:#FFD}}
|{{chset-cell1|U+2302 HOUSE|⌂}}
Line 1,515:
|{{chset-cell1|U+0079 LATIN SMALL LETTER Y|y}}
|{{chset-cell1|U+007A LATIN SMALL LETTER Z|z}}
|{{chset-cell1|U+007B LEFT CURLY BRACKET|{{(}}}}
|{{chset-cell1|U+2223 DIVIDES / U+2502 BOX DRAWINGS LIGHT VERTICAL|∣/│|style=background:#FFD}}
|{{chset-cell1|U+007D RIGHT CURLY BRACKET|{{)}}}}
|{{chset-cell1|U+223C TILDE OPERATOR / U+007E TILDE|∼/~|style=background:#FFD}}
|{{chset-cell1|U+2302 HOUSE|⌂}}
Line 1,810:
|{{chset-cell1|U+0079 LATIN SMALL LETTER Y|y}}
|{{chset-cell1|U+007A LATIN SMALL LETTER Z|z}}
|{{chset-cell1|U+007B LEFT CURLY BRACKET|{{(}}}}
|{{chset-cell1|U+2223 DIVIDES / U+2502 BOX DRAWINGS LIGHT VERTICAL|∣/│|style=background:#FFD}}
|{{chset-cell1|U+007D RIGHT CURLY BRACKET|{{)}}}}
|{{chset-cell1|U+223C TILDE OPERATOR / U+007E TILDE|∼/~|style=background:#FFD}}
|{{chset-cell1|U+2302 HOUSE|⌂}}
Line 1,963:
===Unicode===
Most APL symbols are present in Unicode, in the [[Miscellaneous Technical]] range,<ref>{{cite web |url=http://unicode.org/charts/PDF/U2300.pdf
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.
Line 1,971:
Missing from Unicode are the traditional [[underlining|underscored]] alphabetic characters included in some of the APL code pages; their usage has been eliminated or deprecated in most APL implementations. These were produced on APL printing terminals by over-striking a straight capital letter with an underscore character. Some tables show them simulated with underlined and italic markup, not listing Unicode mappings.<ref name="tachyon310"/>
IBM assigns them GCGIDs as "LA480000" (which they name "A Line Below Capital/A Underscore (APL)"), "LB480000" ("B Line Below Capital/B Underscore (APL)") and so forth, under the "L" series used for Latin letters.<ref name="cs963" /> The use of an even number (48) rather than an odd number (47) is due to being uppercase: compare the use of SD110000 for a lone acute accent {{code|´}}, LA110000 for the lowercase {{code|á}}, and LA120000 for the uppercase {{code|Á}}.<ref name="cp1252">{{cite web |url=
Homologous uses of 47 include the "SD" (diacritic) series GCGID SD470000 for "Line Below/Discontinuous Underscore"<ref name="cs969">{{cite web |url=
* {{unichar|1E06|LATIN CAPITAL LETTER B WITH LINE BELOW}}
Line 1,990:
==Keyboard layout==
[[Image:APL-keybd2.svg|600px|thumb|center|APL keyboard layout.<ref>
A more up-to-date keyboard diagram, applicable for APL2 and other modern implementations, is available at WikensOnline '''[http://www.wickensonline.co.uk/apl/union-large.png Union APL large keyboard layout for Windows] {{webarchive |url=https://web.archive.org/web/20120310113525/http://www.wickensonline.co.uk/apl/union-large.png |date=March 10, 2012 }}''', '''[http://www.wickensonline.co.uk/apl-unicomp.html actual photo + diagram here] {{webarchive |url=https://web.archive.org/web/20150403042056/http://www.wickensonline.co.uk/apl-unicomp.html |date=April 3, 2015 }}''' and '''[http://www.sudleyplace.com/APL/Keyboard.ahtml NARS2000 APL keyboard layout here]'''.</ref>]]
Line 2,015:
==External links==
*[http://www-01.ibm.com/software/globalization/cp/cp00293.html IBM code page 293] a.k.a. the APL code page on [[mainframe computer]]s
*[https://web.archive.org/web/20110605162417/http://www-03.ibm.com/systems/resources/systems_i_software_globalization_pdf_cp00907z.pdf IBM code page 907] a.k.a. the APL ASCII code page
{{Character encoding}}
|