Amstrad CP/M Plus character set

  (Redirected from PCW character set)
Jump to navigation Jump to search

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

Amstrad CP/M Plus character set (Language 0)[1][3]
_0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F
0_
0

221D

2299
Γ
0393
Δ
0394

2297
×
00D7
÷
00F7

2238
Π
03A0

2193
Σ
03A3

2190

2192
±
00B1

2194
Ω
03A9
1_
16
α
03B1
β
03B2
γ
03B3
δ
03B4
ε
03B5
ζ
03B6
η
03B7
θ
03B8
λ
03BB
μ
03BC
π
03C0
ρ
03C1
σ
03C3
τ
03C4
φ
03C6
χ
03C7
2_
32
SP
0020
!
0021
"
0022
#
0023
$
0024
%
0025
&
0026
'
0027
(
0028
)
0029
*
002A
+
002B
,
002C
-
002D
.
002E
/
002F
3_
48
0[a]
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

2192
_
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[a]
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
ã
00E5
õ
00F3

21D2

21D0

21D4

2261

Language variants[edit]

  • Language 0: USA
  • Language 1: France
  • Language 2: Germany
  • Language 3: UK
  • Language 4: Denmark
  • Language 5: Sweden
  • Language 6: Italy
  • Language 7: Spain[4]

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, according to the following table:[4]

[4] 0 1 2 3 4 5 6 7
0x23 # # # £ # # # Pt
0x40 @ à § @ @ É @ @
0x5B [ º Ä [ Æ Ä º ¡
0x5C \ ç Ö \ Ø Ö \ Ñ
0x5D ] § Ü ] Å Å é ¿
0x5E ^ ^ ^ ^ ^ Ü ^ ^
0x60 ` ` ` ` ` é ù `
0x7B { é ä { æ ä à ¨
0x7C | ù ö | ø ö ò ñ
0x7D } è ü } å å è }
0x7E ~ ¨ ß ~ ~ ü ì ~

See also[edit]

Notes[edit]

  1. ^ a b Code point 0x30 is intended for zero with a slash, 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.

References[edit]

  1. ^ a b c "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. [1]
  2. ^ Elliott, John C. (2015-04-04). "Amstrad Extended BIOS Internals". Seasip.info. Archived from the original on 2017-07-15. Retrieved 2017-07-15.
  3. ^ a b "Amstrad CP/M Plus character set". Archived from the original on 2017-07-15. Retrieved 2017-07-15.
  4. ^ a b c d "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. […] [2]
  5. ^ 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: […]
  6. ^ "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. […]

Further reading[edit]