RPL character set
The RPL character set is an 8-bit character set and encoding used by most RPL calculators manufactured by Hewlett-Packard as well as by the HP 82240B thermo printer.[1][2] It is sometimes referred to simply as "ECMA-94" in documentation,[1][3] although it is for the most part a superset of ISO 8859-1 / ECMA-94 in terms of printable characters, and it differs from ISO-8859-1 by using displayable characters rather than control characters in the 0x80 to 0x9F range of code points.
Overview
In 1986,[3] the original series of RPL calculators (HP-28 series) as well as the HP 82240A thermal printer used a modified variant of the HP Roman-8 character set, of which characters above 147 could not be displayed on the calculator, only be printed.[4][5][6]
This changed with the introduction of the HP 82240B printer in 1989[3] and the HP 48 series in 1990, which came with a new character set now based on ECMA 94 / ISO 8859-1 instead of HP Roman-8, but with the control codes in the range 128 to 159 (0x80 to 0x9F) being replaced by additional displayable characters. Compared to ISO 8859-1, codepoint 127 (0x7F) showed a medium shaded gray box like in the former HP Roman-8 based character set. Code points 131 (0x83) to 142 (0x8E) were also taken over from the former HP Roman-8 based character set. In addition to this, codepoint 31 (0x1F) was used for ellipsis (…)[7][8] and codepoints 169 (0xA9) and 174 (0xAE) showed ambiguous glyphs which could be viewed as inverse circled numbers ❸ or copyright (©) and as ❷ or registered trademark (®), respectively.[1][7] This first version of the character set also had a non-breaking space at position 160 (0xA0).[1][7]
Translation from HP-48 to HP-28 character set:[9]
_0 | _1 | _2 | _3 | _4 | _5 | _6 | _7 | _8 | _9 | _A | _B | _C | _D | _E | _F | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
8_ |
0xA0 | 0x7F | 0x7F | 0x83 | 0x84 | 0x85 | 0x86 | 0x87 | 0x88 | 0x89 | 0x8A | 0x8B | 0x8C | 0x8D | 0x8E | 0x76 |
9_ |
0x5E | 0x7F | 0x7F | 0x7F | 0x7F | 0x7F | 0x7F | 0x7F | 0x7F | 0x7F | 0x7F | 0x7F | 0x7F | 0x7F | 0xFC | 0x7F |
A_ |
0x20 | 0xB8 | 0xBF | 0xAF | 0xBA | 0xBC | 0x7C | 0xBD | 0xAB | 0x63 | 0xF9 | 0x92 | 0x7E | 0x2D | 0x52 | 0xB0 |
B_ |
0xB3 | 0xFE | 0x97 | 0x98 | 0xA8 | 0x8F | 0xF4 | 0xF2 | 0x2C | 0x31 | 0xFA | 0x93 | 0xF7 | 0xF8 | 0xF5 | 0xB9 |
C_ |
0xA1 | 0xE0 | 0xA2 | 0xE1 | 0xD8 | 0xD0 | 0xD3 | 0xB4 | 0xA3 | 0xDC | 0xA4 | 0xA5 | 0xE6 | 0xE5 | 0xA6 | 0xA7 |
D_ |
0xE3 | 0xB6 | 0xE8 | 0xE7 | 0xDF | 0xE9 | 0xDA | 0x82 | 0xD2 | 0xAD | 0xED | 0xAE | 0xDB | 0xB1 | 0xF0 | 0xDE |
E_ |
0xC8 | 0xC4 | 0xC0 | 0xE2 | 0xCC | 0xD4 | 0xD7 | 0xB5 | 0xC9 | 0xC5 | 0xC1 | 0xCD | 0xD9 | 0xD5 | 0xD1 | 0xDD |
F_ |
0xE4 | 0xB7 | 0xCA | 0xC6 | 0xC2 | 0xEA | 0xCE | 0x81 | 0xD6 | 0xCB | 0xC7 | 0xC3 | 0xCF | 0xB2 | 0xF1 | 0xEF |
_0 | _1 | _2 | _3 | _4 | _5 | _6 | _7 | _8 | _9 | _A | _B | _C | _D | _E | _F |
In a revision of this character set in 1999, codepoint 160 (0xA0) was redefined to hold the euro sign (€) in the HP 49/50 series (including the HP 48gII),[8][10][11] now deviating from ISO 8859-1. Codepoints 169 (0xA9) and 174 (0xAE) were now clearly defined as holding the copyright (©) and registered trademark (®) symbols in compliance with ISO 8859-1, whereas the corresponding glyphs still resembled the inverse circled numbers more.[8]
In a parallel development, the HP 38G also used the HP 48 series' character set internally. Starting with the HP 39G in 2000, the superscript 3 (³) at codepoint 179 (0xB3) was replaced by a superscript -1 (−1) in the HP 39/40 series (except for the HP 39gII, which started to use Unicode).[12] Codepoint 160 (0xA0) was also changed to the euro sign (€)[12] in this third variant of the character set.
Hewlett-Packard never defined an official Unicode translation, hence several variants evolved in the community, differing in codepoints 31 (0x1F), 127 (0x7F), 128 (0x80), 129 (0x81), 133 (0x85), 134 (0x86), 158 (0x9E), 160 (0xA0), 169 (0xA9), 174 (0xAE), 178 (0xB3), 181 (0xB5) and 223 (0xDF).[13][14][15][16][17][18][19]
The fact that the Unicode equivalent for x-bar at code point 129 (0x81) is a combination of two characters (x̅) could cause problems in translations, therefore it was suggested to use U+0101 (ā) instead.[17][18][19]
Characters which cannot be reasonably transcoded should be mapped to code point 127 (0x7F), similar to what the calculators do when communicating with older printers like the HP 82240A.[20][8]
Code page layout
The following table shows the HP RPL character set. Each character is shown with a potential Unicode equivalent and its decimal code. Where special HP TIO codes are defined to enter the character, they are given as well.[2][21][7][8] The other characters can be entered using the \nnn
TIO code syntax with nnn being a three-digit decimal number (with leading zeros if necessary) of the corresponding code point.[2][7][8]
Legend:
Alphabetic
Control character
Numeric digit
Punctuation
|
Extended punctuation
Graphic character
International
Undefined
|
_0 | _1 | _2 | _3 | _4 | _5 | _6 | _7 | _8 | _9 | _A | _B | _C | _D | _E | _F | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0_ |
NUL 0000 0 |
SOH 0001 1 |
STX 0002 2 |
ETX 0003 3 |
EOT 0004 4 |
ENQ 0005 5 |
ACK 0006 6 |
BEL 0007 7 |
BS 0008 8 |
HT 0009 9 |
LF (↵) 000A 10 |
VT 000B 11 |
FF 000C 12 |
CR 000D 13 |
SO 000E 14 |
SI 000F 15 |
1_ |
DLE 0010 16 |
DC1 0011 17 |
DC2 0012 18 |
DC3 0013 19 |
DC4 0014 20 |
NAK 0015 21 |
SYN 0016 22 |
ETB 0017 23 |
CAN 0018 24 |
EM 0019 25 |
SUB 001A 26 |
ESC 001B 27 |
◄ (insert cursor) 001C 28 |
█ (overwrite cursor) 001D 29 |
… (left) 001E 30 |
… (right) 2026 31 |
2_ |
SP 0020 32 |
! 0021 33 |
" 0022 34 |
# 0023 35 |
$ 0024 36 |
% 0025 37 |
& 0026 38 |
' 0027 39 |
( 0028 40 |
) 0029 41 |
* 002A 42 |
+ 002B 43 |
, 002C 44 |
- 002D 45 |
. 002E 46 |
/ 002F 47 |
3_ |
0 0030 48 |
1 0031 49 |
2 0032 50 |
3 0033 51 |
4 0034 52 |
5 0035 53 |
6 0036 54 |
7 0037 55 |
8 0038 56 |
9 0039 57 |
: 003A 58 |
; 003B 59 |
< 003C 60 |
= 003D 61 |
> 003E 62 |
? 003F 63 |
4_ |
@ 0040 64 |
A 0041 65 |
B 0042 66 |
C 0043 67 |
D 0044 68 |
E 0045 69 |
F 0046 70 |
G 0047 71 |
H 0048 72 |
I 0049 73 |
J 004A 74 |
K 004B 75 |
L 004C 76 |
M 004D 77 |
N 004E 78 |
O 004F 79 |
5_ |
P 0050 80 |
Q 0051 81 |
R 0052 82 |
S 0053 83 |
T 0054 84 |
U 0055 85 |
V 0056 86 |
W 0057 87 |
X 0058 88 |
Y 0059 89 |
Z 005A 90 |
[ 005B 91 |
\ 005C 92 |
] 005D 93 |
^ 005E 94 |
_ 005F 95 |
6_ |
` 0060 96 |
a 0061 97 |
b 0062 98 |
c 0063 99 |
d 0064 100 |
e 0065 101 |
f 0066 102 |
g 0067 103 |
h 0068 104 |
i 0069 105 |
j 006A 106 |
k 006B 107 |
l 006C 108 |
m 006D 109 |
n 006E 110 |
o 006F 111 |
7_ |
p 0070 112 |
q 0071 113 |
r 0072 114 |
s 0073 115 |
t 0074 116 |
u 0075 117 |
v 0076 118 |
w 0077 119 |
x 0078 120 |
y 0079 121 |
z 007A 122 |
{ 007B 123 |
| 007C 124 |
} 007D 125 |
~ 007E 126 |
▒ 2592 127 |
8_ |
∡ (∠) 2221 (2220) 128 \<) |
x̅ 0078 0305 129 \x- |
∇ 2207 130 \.V |
√ 221A 131 \v/ |
∫ 222B 132 \.S |
Σ 03A3 133 \GS |
▶ 25B6 134 \|> |
π 03C0 135 \pi |
∂ 2202 136 \.d |
≤ 2264 137 \<= |
≥ 2265 138 \>= |
≠ 2260 139 \=/ |
α 03B1 140 \Ga |
→ 2192 141 \-> |
← 2190 142 \<- |
↓ 2193 143 \|v |
9_ |
↑ 2191 144 \|^ |
γ 03B3 145 \Gg |
δ 03B4 146 \Gd |
ε 03B5 147 \Ge |
η 03B7 148 \Gn |
θ 03B8 149 \Gh |
λ 03BB 150 \Gl |
ρ 03C1 151 \Gr |
σ 03C3 152 \Gs |
τ 03C4 153 \Gt |
ω 03C9 154 \Gw |
Δ 0394 155 \GD |
Π 03A0 156 \PI |
Ω 03A9 157 \GW |
■ 25A0 158 \[] |
∞ 221E 159 \oo |
A_ |
(NBSP) € (00A0) 20AC 160 |
¡ 00A1 161 |
¢ 00A2 162 |
£ 00A3 163 |
¤ 00A4 164 |
¥ 00A5 165 |
¦ 00A6 166 |
§ 00A7 167 |
¨ 00A8 168 |
© (❸) 00A9 (2778) 169 |
ª 00AA 170 |
« 00AB 171 \<< |
¬ 00AC 172 |
SHY 00AD 173 |
® (❷) 00AE (2777) 174 |
¯ 00AF 175 |
B_ |
° 00B0 176 \^o |
± 00B1 177 |
² 00B2 178 |
³ (−1) 00B3 179 |
´ 00B4 180 |
µ (μ) 00B5 (03BC) 181 \Gm |
¶ 00B6 182 |
· 00B7 183 |
¸ 00B8 184 |
¹ 00B9 185 |
º 00BA 186 |
» 00BB 187 \>> |
¼ 00BC 188 |
½ 00BD 189 |
¾ 00BE 190 |
¿ 00BF 191 |
C_ |
À 00C0 192 |
Á 00C1 193 |
 00C2 194 |
à 00C3 195 |
Ä 00C4 196 |
Å 00C5 197 |
Æ 00C6 198 |
Ç 00C7 199 |
È 00C8 200 |
É 00C9 201 |
Ê 00CA 202 |
Ë 00CB 203 |
Ì 00CC 204 |
Í 00CD 205 |
Î 00CE 206 |
Ï 00CF 207 |
D_ |
Ð 00D0 208 |
Ñ 00D1 209 |
Ò 00D2 210 |
Ó 00D3 211 |
Ô 00D4 212 |
Õ 00D5 213 |
Ö 00D6 214 |
× 00D7 215 \.x |
Ø 00D8 216 \O/ |
Ù 00D9 217 |
Ú 00DA 218 |
Û 00DB 219 |
Ü 00DC 220 |
Ý 00DD 221 |
Þ 00DE 222 |
ß (β) 00DF (03B2) 223 \Gb |
E_ |
à 00E0 224 |
á 00E1 225 |
â 00E2 226 |
ã 00E3 227 |
ä 00E4 228 |
å 00E5 229 |
æ 00E6 230 |
ç 00E7 231 |
è 00E8 232 |
é 00E9 233 |
ê 00EA 234 |
ë 00EB 235 |
ì 00EC 236 |
í 00ED 237 |
î 00EE 238 |
ï 00EF 239 |
F_ |
ð 00F0 240 |
ñ 00F1 241 |
ò 00F2 242 |
ó 00F3 243 |
ô 00F4 244 |
õ 00F5 245 |
ö 00F6 246 |
÷ 00F7 247 \:- |
ø 00F8 248 |
ù 00F9 249 |
ú 00FA 250 |
û 00FB 251 |
ü 00FC 252 |
ý 00FD 253 |
þ 00FE 254 |
ÿ 00FF 255 |
_0 | _1 | _2 | _3 | _4 | _5 | _6 | _7 | _8 | _9 | _A | _B | _C | _D | _E | _F |
See also
References
- 1 2 3 4 HP 82240B Infrared Printer (1 ed.). Corvallis, OR, USA: Hewlett Packard. August 1989. pp. 17–18. HP reorder number 82240-90014. Retrieved 2016-08-01.
- 1 2 3 "HP RPL TIO Table". holyjoe.org. Archived from the original on 2016-05-23. Retrieved 2015-01-23.
- 1 2 3 Nelson, Richard J. (May 2010). "HP 82240B IR Printer" (PDF). HP Solve (18). Archived from the original (PDF) on 2016-09-21. Retrieved 2016-09-21.
- ↑ HP-28S Advanced Scientific Calculator Reference Manual (PDF) (4 ed.). Hewlett-Packard. November 1988 [October 1987]. pp. 266–267. HP 00028-90068. Archived (PDF) from the original on 2015-06-08. Retrieved 2015-10-10.
- ↑ HP 82240A Infrared Printer (PDF) (2 ed.). Corvallis, OR, USA: Hewlett Packard, Portable Computer Division. October 1986. HP reorder number 82240-90001 (82240-90008). Archived (PDF) from the original on 2016-08-06. Retrieved 2016-08-06.
- ↑ Nungester, Rick (1988-08-18). "Infra-Red output converter". Luc Pauwels (published 2006-10-24). Archived from the original on 2016-08-06. Retrieved 2016-08-06.
- 1 2 3 4 5 HP 48G Series – User's Guide (UG) (8th ed.). Hewlett-Packard. December 1994 [1993]. pp. 2–5, 27–16. HP 00048-90126, (00048-90104). Archived from the original on 2016-08-06. Retrieved 2015-09-06.
- 1 2 3 4 5 6 HP 50g / 49g+ / 48gII graphing calculator advanced user’s reference manual (AUR) (2 ed.). Hewlett-Packard. 2009-07-14 [2005]. pp. 3–159, 3–160, J–1, J–2. HP F2228-90010. Retrieved 2015-10-10. Searchable PDF
- ↑ Dreher, Chris (2016-09-06). "Re: Questions regarding HP Roman character set". HP Articles Forum. The Museum of HP Calculators (MoHPC). Archived from the original on 2016-09-05. Retrieved 2016-09-06.
- ↑ Prange, James M. (2006-11-02). "Re: Those solid block characters in the characters menu". HP Forum Archive 16. The Museum of HP Calculators (MoHPC). Archived from the original on 2016-08-02. Retrieved 2016-08-02.
- ↑ Rautenberg, Wolfgang (2004-05-09). "IOMAN - A small but powerful I/O manager for the HP49G/HP49g+". 5.2004. Archived from the original on 2016-08-02. Retrieved 2016-08-02.
- 1 2 Croft, Colin (December 2006). hp 39gs and hp 40gs graphing calculators. Mastering the hp 39gs & hp 40gs - A guide for teachers, students and other users of the hp 39gs & hp 40gs (PDF). 1.0 (1st ed.). Hewlett-Packard Development Company, L.P. pp. 26, 221, 333. HP part number F2224-90010. Archived (PDF) from the original on 2016-03-03. Retrieved 2016-08-06.
The original hp 38g only had the function INVERSE(…) and the -1 operator was added for convenience sake in the hp 39g, released in 2000. To do this the creators had to borrow one of the existing unused characters, the 3 character, and convert it into the -1 operator. However, they forgot to change it in the CHARS view and this error has never been fixed in any of the successive models!
- ↑ Lehmann, Alexander (2000-08-16). "HP48 Character Encoding Description File". 1.02. Kosta Kostis. Archived from the original on 2016-08-01. Retrieved 2016-08-01.
- ↑ "Codepages / Ascii Table HP48 Character Encoding". ASCII.ca. 2016 [2006]. Archived from the original on 2016-08-01. Retrieved 2016-08-01. (older version: )
- ↑ Bettencourt, Rebecca G. (2014) [1999]. "Character Encodings - Legacy Encodings - HP48". Kreative Korporation. Retrieved 2016-08-01.
- ↑ Dreher, Chris (2012-12-09) [2012-07-12]. "Mapping HP48 Text to Unicode". comp.sys.hp48. Retrieved 2016-08-01.
- 1 2 Dreher, Chris (2012-07-11). "Mapping HP48 Text to Unicode". HP48 Articles. Archived from the original on 2016-08-01. Retrieved 2016-08-01.
- 1 2 Dreher, Chris (2013-01-16). "Mapping HP48 Text to Unicode". HP Articles Forum. The Museum of HP Calculators (MoHPC). Archived from the original on 2016-08-01. Retrieved 2016-08-01.
- 1 2 Bouget, Jean-Charles; Lapilli, Claudio Daniel (2016-06-15) [2015]. "Font8_StyleA.txt". newRPL (Alpha ed.). Archived from the original on 2016-08-08. Retrieved 2016-08-08.
- ↑ Prange, James M. (2002-06-04). "Re: Printers". HP Forum Archive 08. The Museum of HP Calculators (MoHPC). Archived from the original on 2016-08-06. Retrieved 2016-08-02.
- ↑ Heinz, Sr., Michael W. (2005). "HP-ASCII and Trigraphs". Archived from the original on 2016-08-02. Retrieved 2016-08-02.
Further reading
- "HP-48 Kermit Hints and Tips". The Kermit Project, Columbia University. 2011-07-22 [1999-05-04]. Archived from the original on 2016-08-01. Retrieved 2016-08-01.