# FOCAL character set

In computing FOCAL character set refers to a group of 8-bit single byte character sets introduced by Hewlett-Packard since 1979. It was used in several RPN calculators supporting the FOCAL programming language, like the HP-41C/CV/CX as well as the later HP-42S, which was introduced in 1988 and produced up to 1995. As such, it is also used by SwissMicros' DM41/L, both introduced in 2015, and is implicitly supported by the DM42, introduced in 2017 (although the later calculator utilizes Free42, which is based on Unicode internally).

## Character set

The character set is derived from ASCII, but with the control code range and some high bit characters replaced by various special characters.
FOCAL character set (HP-41C/CV/CX / HP 82143A) :
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
| 0x | ‾/♦ | ∝? | x̅/ā | ← | α | β | Γ | ↓ | Δ | σ | ♦ | λ | µ/μ | ∡/∠ | τ | Φ |
| 1x | θ | Ω | &? | Å | å | Ä | ä | Ö | ö | Ü | ü | Æ | æ | ≠ | £/₤ | ▒ |
| 2x | SP | ! | " | # | $ | % | & | ' | ( | ) | * | + | , | - | . | / |
| 3x | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | : | ; | < | = | > | ? |
| 4x | @ | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O |
| 5x | P | Q | R | S | T | U | V | W | X | Y | Z | [ | \ | ] | ↑/^ | _ |
| 6x | `/⊤ | a | b | c | d | e | f | g | h | i | j | k | l | m | n | o |
| 7x | p | q | r | s | t | u | v | w | x | y | z | π | | | → | Σ | ⊦ |
When Hewlett-Packard introduced the HP-42S in 1988, the FOCAL character set was revised to include more characters, including a number of characters already provided by the HP 82240A infrared thermo printer, which had been introduced in 1986, as part of its extended variant of the 1985 revision of the HP Roman-8 character set, although at completely different code points.
There is no code point definition for the euro sign in this character set.
Revised FOCAL character set (HP-42S) :
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
| 0x | ÷ | × | √ | ∫ | ░ | Σ | ▶ | π | ¿ | ≤ | LF/EOT | ≥ | ≠ | ↵ | ↓ | → |
| 1x | ← | µ/μ | £/₤ | ° | Å | Ñ | Ä | ∡/∠ | ᴇ/⏨ | Æ | …/‥ | ␛ | Ö | Ü | ▒ | ■/· |
| 2x | SP | ! | " | # | $ | % | & | ' | ( | ) | * | + | , | - | . | / |
| 3x | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | : | ; | < | = | > | ? |
| 4x | @ | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O |
| 5x | P | Q | R | S | T | U | V | W | X | Y | Z | [ | \ | ] | ↑/^ | _ |
| 6x | ` | a | b | c | d | e | f | g | h | i | j | k | l | m | n | o |
| 7x | p | q | r | s | t | u | v | w | x | y | z | { | | | } | ~ | ⊦ |
| 8x | ¦? | ¥? | ▓? | | | | | | | | ␊ | | | | | |
Translation from HP-42S character set to the modified HP Roman-8 (supported by HP 82240A etc.) character set:
HP translation vector :
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
| 0x | 0x81 | 0x82 | 0x83 | 0x84 | 0x04 | 0x85 | 0x86 | 0x87 | 0x08 | 0x89 | 0x04 | 0x8A | 0x8B | 0x0D | 0x0E | 0x8D |
| 1x | 0x8E | 0x8F | 0xAF | 0xB3 | 0xA2 | 0xB6 | 0xD8 | 0xA0 | 0x18 | 0xD3 | 0x9B | 0x1B | 0xDA | 0xDB | 0x7F | 0xF2 |
| 7x | 0x70 | 0x71 | 0x72 | 0x73 | 0x74 | 0x75 | 0x76 | 0x77 | 0x78 | 0x79 | 0x7A | 0x7B | 0x7C | 0x7D | 0x7E | 0x94 |
| 8x | 0x80 | 0x81 | 0x82 | 0x83 | 0x84 | 0x85 | 0x86 | 0x87 | 0x88 | 0x89 | 0x90 | 0x8B | 0x8C | 0x8D | 0x8E | 0x8F |