Amstrad CP/M Plus character set
The Amstrad CP/M Plus character set (alternatively known as PCW character set or ZX Spectrum +3 character set) refers to a group of 8-bit character sets introduced by Amstrad/Locomotive Software for use in conjunction with their adaptation of Digital Research's CP/M Plus[1] on various Amstrad CPC / Schneider CPC and Amstrad PCW / Schneider Joyce machines.[2][3] The character set was also utilized on the Amstrad ZX Spectrum +3 since 1987.[1]
At least on the ZX Spectrum +3 it existed in eight language-specific variants (based on ISO/IEC 646) depending on the selected locale of the system, with language 0 being the default for "US".[4]
Another slight variant of the character set was used by LocoScript.[5][6]
Character set
_0 | _1 | _2 | _3 | _4 | _5 | _6 | _7 | _8 | _9 | _A | _B | _C | _D | _E | _F | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0_ 0 |
∞ 221E |
⊙ 2299 |
Γ 0393 |
Δ 0394 |
⊗ 2297 |
× 00D7 |
÷ 00F7 |
∴ 2234 |
Π 03A0 |
↓ 2193 |
Σ 03A3 |
← 2190 |
→ 2192 |
± 00B1 |
↔ 2194 |
Ω 03A9 |
1_ 16 |
α 03B1 |
β 03B2 |
γ 03B3 |
δ 03B4 |
ε 03B5 |
θ 03B8 |
λ 03BB |
μ 03BC |
π 03C0 |
ρ 03C1 |
σ 03C3 |
τ 03C4 |
φ 03C6 |
χ 03C7 |
ψ 03C8 |
ω 03C9 |
2_ 32 |
SP 0020 |
! 0021 |
" 0022 |
# 0023 |
$ 0024 |
% 0025 |
& 0026 |
' 0027 |
( 0028 |
) 0029 |
* 002A |
+ 002B |
, 002C |
- 002D |
. 002E |
/ 002F |
3_ 48 |
0[lower-alpha 1] 0030 FE00 |
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 |
↑ 2191 |
_ 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 |
0[lower-alpha 1] 0030 |
8_ 128 |
◾︎ 25FE |
╧ 2567 |
╟ 255F |
╚ 255A |
╤ 2564 |
║ 2551 |
╔ 2554 |
╠ 2560 |
╢ 2562 |
╝ 255D |
═ 2550 |
╩ 2569 |
╗ 2557 |
╣ 2563 |
╦ 2566 |
╬ 256C |
9_ 144 |
· 00B7 |
╵ 2575 |
╶ 2576 |
└ 2514 |
╷ 2577 |
│ 2502 |
┌ 250C |
├ 251C |
╴ 2574 |
┘ 2518 |
─ 2500 |
┴ 2534 |
┐ 2510 |
┤ 2524 |
┬ 252C |
┼ 253C |
A_ 160 |
ª 00AA |
º 00BA |
° 00B0 |
£ 00A3 |
© 00A9 |
¶ 00B6 |
§ 00A7 |
† 2020 |
¼ 00BC |
½ 00BD |
¾ 00BE |
« 00AB |
» 00BB |
₧ 20A7 |
¿ 00BF |
¡ 00A1 |
B_ 176 |
ƒ 0192 |
¢ 00A2 |
¨ 00A8 |
´ 00B4 |
ˆ 02C6 |
‰ 2030 |
⅛ 215B |
⅜ 215C |
⅝ 215D |
⅞ 215E |
ß 00DF |
○ 25CB |
• 2022 |
¥ 00A5 |
® 00AE |
™ 2122 |
C_ 192 |
Á 00C1 |
É 00C9 |
Í 00CD |
Ó 00D3 |
Ú 00DA |
 00C2 |
Ê 00CA |
Î 00CE |
Ô 00D4 |
Û 00DB |
À 00C0 |
È 00C8 |
Ì 00CC |
Ò 00D2 |
Ù 00D9 |
Ÿ 0178 |
D_ 208 |
Ä 00C4 |
Ë 00CB |
Ï 00CF |
Ö 00D6 |
Ü 00DC |
Ç 00C7 |
Æ 00C6 |
Å 00C5 |
Ø 00D8 |
Ñ 00D1 |
à 00C3 |
Õ 00D5 |
≥ 2265 |
≤ 2264 |
≠ 2260 |
≃ 2243 |
E_ 224 |
á 00E1 |
é 00E9 |
í 00ED |
ó 00F3 |
ú 00FA |
â 00E2 |
ê 00EA |
î 00EE |
ô 00F4 |
û 00FB |
à 00E0 |
è 00E8 |
ì 00EC |
ò 00F2 |
ù 00F9 |
ÿ 00FF |
F_ 240 |
ä 00E4 |
ë 00EB |
ï 00EF |
ö 00F6 |
ü 00FC |
ç 00E7 |
æ 00E6 |
å 00E5 |
ø 00F8 |
ñ 00F1 |
ã 00E3 |
õ 00F5 |
⇒ 21D2 |
⇐ 21D0 |
⇔ 21D4 |
≡ 2261 |
- Code point 0x30 is intended for zero with a slash (Unicode standardized variant U+0030 U+FE00), 0x7F for zero without a slash. Both can be expressed as Unicode character U+0030, but of course if both are converted to the same code point the conversion is non-reversible.
Letter Number Punctuation Symbol Other Undefined Language variants
Language variants
In languages 1 to 7, certain characters in the range 0..127 are swapped with characters in the range 128..255 of the character set, as shown in the following table:[4]
Language | 0x23 | 0x40 | 0x5B | 0x5C | 0x5D | 0x5E | 0x60 | 0x7B | 0x7C | 0x7D | 0x7E |
---|---|---|---|---|---|---|---|---|---|---|---|
0: USA | # | @ | [ | \ | ] | ^ | ` | { | | | } | ~ |
1: France | # | à | º | ç | § | ^ | ` | é | ù | è | ¨ |
2: Germany | # | § | Ä | Ö | Ü | ^ | ` | ä | ö | ü | ß |
3: UK | £ | @ | [ | \ | ] | ^ | ` | { | | | } | ~ |
4: Denmark | # | @ | Æ | Ø | Å | ^ | ` | æ | ø | å | ~ |
5: Sweden | # | É | Ä | Ö | Å | Ü | é | ä | ö | å | ü |
6: Italy | # | @ | º | \ | é | ^ | ù | à | ò | è | ì |
7: Spain | Pt | @ | ¡ | Ñ | ¿ | ^ | ` | ¨ | ñ | } | ~ |
See also
- Amstrad CPC character set
- ZX Spectrum character set
- ISO/IEC 646 (similar, but not identical set of 7-bit character sets)
- Box-drawing character
References
- "Appendix II: CP/M Plus character sets / II.1 The complete character set (Language 0)". Spectrum +3 CP/M Plus manual (User Manual). Archived from the original on 2009-10-15. Retrieved 2017-07-10.
- Elliott, John C. (2015-04-04). "Amstrad Extended BIOS Internals". Seasip.info. Archived from the original on 2017-07-15. Retrieved 2017-07-15.
- "Amstrad CP/M Plus character set". Archived from the original on 2017-07-15. Retrieved 2017-07-15.
- "Chapter 4.5 Selecting the appropriate national language". Spectrum +3 CP/M Plus manual (User Manual). Archived from the original on 2009-10-15. Retrieved 2017-07-10.
[...] The selection of characters made available on computers sold in different countries are subject to national variations. As a result, CP/M has different national language versions of the screen characters. [...] Immediately after [...] load [...] it is set up to use the US character set [...] The codes CP/M uses are [...] in the range 0...255 [...] A handful of these codes represent different characters, depending on which national language is selected. [...] All the different national language versions of CP/M are supported on the Spectrum +3 and a special utility has been incorporated into the CP/M system to allow the user to swap from one national language to another. This is the LANGUAGE utility. [...] The 'standard' set of codes and characters represented by these codes is the US character set. What happens in the other language versions is that certain codes in the first half of the character set (0...127) are associated with characters that are in the second half of the US character set and vice versa. In fact a straight swap is made between the code used for the special language character, and the character it substitutes. For example, in the US character set, the code for £ is #A3: when English is selected, £ replaces # as the character with code #23 - and # replaces £ as the character with code #A3. [...]
- Elliott, John C. (2016-04-16). "LocoScript 1 file format". Seasip.info. Archived from the original on 2017-07-15. Retrieved 2017-07-15.
[...] In the text, characters 0x00-0x7F and 0xA0-0xFF are printable, using the PCW character set. This is the same character set used by CP/M on the Spectrum +3. Characters 0x80-0x9F are markup codes: [...]
- "LogoScript". Archived from the original on 2017-03-17. Retrieved 2017-07-15.
[...] At least in the PCW versions, the Amstrad CP/M Plus character set was used for the text portions, except that the C1 controls range was used for control codes (different ones from the C1 control standard, which probably didn't exist yet) instead of the graphical characters of the CPM/PLUS set. [...]