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[edit]

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, code point 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, code point 31 (0x1F) was used for ellipsis ()[7][8] and code points 169 (0xA9) and 174 (0xAE) showed ambiguous glyphs which could be viewed as inverse circled number or copyright symbol (©) and as or registered trademark symbol (®), 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]

HP translation vector
_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

In a revision of this character set in 1999, code point 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. Code points 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] The last calculator supporting this variant of the character set was the HP 50g introduced in 2006 and discontinued in 2015.

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 code point 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] Code point 160 (0xA0) was also changed to the euro sign (€)[12] in this third variant of the character set. The last calculator supporting this variant of the character set was the HP 40gs introduced in 2006 and discontinued around 2011.

Hewlett-Packard never defined an official Unicode translation, hence several variants evolved in the community, differing in code points 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]

Since the calculators allow fonts to be redefined (using FONT→, →FONT, MINIFONT→, →MINIFONT) other codepages can be emulated for as long as symbols which are available on the keyboard or are otherwise associated with specific functionality by the calculator aren't replaced by unrelated symbols.

Code page layout[edit]

The following table shows the HP RPL character set. Each character is shown with a potential Unicode equivalent. Where special HP TIO codes are defined to enter the character, they are given as well.[2][21][7][8][22] The other characters can be entered using the \nnn TIO code syntax with nnn being a three-digit decimal number.[2][7][8][22]

HP RPL character set
_0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F
0_
0
NUL
0000
 
SOH
0001
 
STX
0002
 
ETX
0003
 
EOT
0004
 
ENQ
0005
 
ACK
0006
 
BEL
0007
 
BS
0008
 
HT
0009
 
LF/↵
000A
 
VT
000B
 
FF
000C
 
CR
000D
 
SO
000E
 
SI
000F
 
1_
16
DLE
0010
 
DC1
0011
 
DC2
0012
 
DC3
0013
 
DC4
0014
 
NAK
0015
 
SYN
0016
 
ETB
0017
 
CAN
0018
 
EM
0019
 
SUB
001A
 
ESC
001B
 
[a]
001C
 
[b]
001D
 
[c]
001E
 
[d]
2026
 
2_
32
SP
0020
 
!
0021
 
"
0022
 
#
0023
 
$
0024
 
%
0025
 
&
0026
 
'
0027
 
(
0028
 
)
0029
 
*
002A
 
+
002B
 
,
002C
 
-
002D
 
.
002E
 
/
002F
 
3_
48
0
0030
 
1
0031
 
2
0032
 
3
0033
 
4
0034
 
5
0035
 
6
0036
 
7
0037
 
8
0038
 
9
0039
 
:
003A
 
;
003B
 
<
003C
 
=
003D
 
>
003E
 
?
003F
 
4_
64
@
0040
 
A
0041
 
B
0042
 
C
0043
 
D
0044
 
E
0045
 
F
0046
 
G
0047
 
H
0048
 
I
0049
 
J
004A
 
K
004B
 
L
004C
 
M
004D
 
N
004E
 
O
004F
 
5_
80
P
0050
 
Q
0051
 
R
0052
 
S
0053
 
T
0054
 
U
0055
 
V
0056
 
W
0057
 
X
0058
 
Y
0059
 
Z
005A
 
[
005B
 
\
005C
 
]
005D
 
^
005E
 
_
005F
 
6_
96
`
0060
 
a
0061
 
b
0062
 
c
0063
 
d
0064
 
e
0065
 
f
0066
 
g
0067
 
h
0068
 
i
0069
 
j
006A
 
k
006B
 
l
006C
 
m
006D
 
n
006E
 
o
006F
 
7_
112
p
0070
 
q
0071
 
r
0072
 
s
0073
 
t
0074
 
u
0075
 
v
0076
 
w
0077
 
x
0078
 
y
0079
 
z
007A
 
{
007B
 
|
007C
 
}
007D
 
~
007E
 

2592
 
8_
128
/
2221/2220
\<)
/ā
0078+0305/0101
\x-

2207
\.V

221A
\v/

222B
\.S
Σ
03A3
\GS

25B6
\|>
π
03C0
\pi

2202
\.d

2264
\<=

2265
\>=

2260
\=/
α
03B1
\Ga

2192
\->

2190
\<-

2193
\|v
9_
144

2191
\|^
γ
03B3
\Gg
δ
03B4
\Gd
ε
03B5
\Ge
η
03B7
\Gn
θ
03B8
\Gh
λ
03BB
\Gl
ρ
03C1
\Gr
σ
03C3
\Gs
τ
03C4
\Gt
ω
03C9
\Gw
Δ
0394
\GD
Π
03A0
\PI
Ω
03A9
\GW

25A0
\[]

221E
\oo
A_
160
/NBSP
20AC/00A0
 
¡
00A1
 
¢
00A2
 
£
00A3
 
¤
00A4
 
¥
00A5
 
¦
00A6
 
§
00A7
 
¨
00A8
 
©/
00A9/2778
 
ª
00AA
 
«
00AB
\<<
¬
00AC
 
SHY
00AD
 
®/
00AE/2777
 
¯
00AF
 
B_
176
°
00B0
\^o
±
00B1
 
²
00B2
 
³/−1
00B3
 
´
00B4
 
µ/μ
00B5/03BC
\Gm

00B6
 
·
00B7
 
¸
00B8
 
¹
00B9
 
º
00BA
 
»
00BB
\>>
¼
00BC
 
½
00BD
 
¾
00BE
 
¿
00BF
 
C_
192
À
00C0
 
Á
00C1
 
Â
00C2
 
Ã
00C3
 
Ä
00C4
 
Å
00C5
 
Æ
00C6
 
Ç
00C7
 
È
00C8
 
É
00C9
 
Ê
00CA
 
Ë
00CB
 
Ì
00CC
 
Í
00CD
 
Î
00CE
 
Ï
00CF
 
D_
208
Ð
00D0
 
Ñ
00D1
 
Ò
00D2
 
Ó
00D3
 
Ô
00D4
 
Õ
00D5
 
Ö
00D6
 
×
00D7
\.x
Ø
00D8
\O/
Ù
00D9
 
Ú
00DA
 
Û
00DB
 
Ü
00DC
 
Ý
00DD
 
Þ
00DE
 
ß/β
00DF/03B2
\Gb
E_
224
à
00E0
 
á
00E1
 
â
00E2
 
ã
00E3
 
ä
00E4
 
å
00E5
 
æ
00E6
 
ç
00E7
 
è
00E8
 
é
00E9
 
ê
00EA
 
ë
00EB
 
ì
00EC
 
í
00ED
 
î
00EE
 
ï
00EF
 
F_
240
ð
00F0
 
ñ
00F1
 
ò
00F2
 
ó
00F3
 
ô
00F4
 
õ
00F5
 
ö
00F6
 
÷
00F7
\:-
ø
00F8
 
ù
00F9
 
ú
00FA
 
û
00FB
 
ü
00FC
 
ý
00FD
 
þ
00FE
 
ÿ
00FF
 

  Letter   Number   Punctuation   Symbol   Other  Undefined

See also[edit]

Notes[edit]

  1. ^ Insert cursor
  2. ^ Overwrite cursor
  3. ^ Left
  4. ^ Right

References[edit]

  1. ^ a b c d 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.
  2. ^ a b c "HP RPL TIO Table". holyjoe.org. Archived from the original on 2016-05-23. Retrieved 2015-01-23.
  3. ^ a b c 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.
  4. ^ 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.
  5. ^ 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.
  6. ^ 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.
  7. ^ a b c d e 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]
  8. ^ a b c d e f 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
  9. ^ 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.
  10. ^ 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.
  11. ^ 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. [2]
  12. ^ a b 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!
  13. ^ 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.
  14. ^ "Codepages / Ascii Table HP48 Character Encoding". ASCII.ca. 2016 [2006]. Archived from the original on 2006-05-24. Retrieved 2016-08-01.
  15. ^ Bettencourt, Rebecca G. (2014) [1999]. "Character Encodings - Legacy Encodings - HP48". Kreative Korporation. Retrieved 2016-08-01.
  16. ^ Dreher, Chris (2012-12-09) [2012-07-12]. "Mapping HP48 Text to Unicode". comp.sys.hp48. Retrieved 2016-08-01.
  17. ^ a b Dreher, Chris (2012-07-11). "Mapping HP48 Text to Unicode". HP48 Articles. Archived from the original on 2016-08-01. Retrieved 2016-08-01.
  18. ^ a b 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.
  19. ^ a b 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.
  20. ^ 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.
  21. ^ Heinz, Sr., Michael W. (2005). "HP-ASCII and Trigraphs". Archived from the original on 2016-08-02. Retrieved 2016-08-02.
  22. ^ a b Finseth, Craig A. (2012-02-25). "chars". Archived from the original on 2017-12-21. Retrieved 2017-12-21.

Further reading[edit]