Jump to content

Amstrad CP/M Plus character set

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Gschizas (talk | contribs) at 21:16, 15 March 2020 (Remove obsolete note section). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

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

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
Template:Chset-color-graph|
221D
Template:Chset-color-graph|
2299
Template:Chset-color-letter|Γ
0393
Template:Chset-color-letter|Δ
0394
Template:Chset-color-graph|
2297
Template:Chset-color-graph|×
00D7
Template:Chset-color-graph|÷
00F7
Template:Chset-color-graph|
2238
Template:Chset-color-letter|Π
03A0
Template:Chset-color-graph|
2193
Template:Chset-color-letter|Σ
03A3
Template:Chset-color-graph|
2190
Template:Chset-color-graph|
2192
Template:Chset-color-graph|±
00B1
Template:Chset-color-graph|
2194
Template:Chset-color-letter|Ω
03A9
1_
16
Template:Chset-color-letter|α
03B1
Template:Chset-color-letter|β
03B2
Template:Chset-color-letter|γ
03B3
Template:Chset-color-letter|δ
03B4
Template:Chset-color-letter|ε
03B5
Template:Chset-color-letter|θ
03B8
Template:Chset-color-letter|λ
03BB
Template:Chset-color-letter|μ
03BC
Template:Chset-color-letter|π
03C0
Template:Chset-color-letter|ρ
03C1
Template:Chset-color-letter|σ
03C3
Template:Chset-color-letter|τ
03C4
Template:Chset-color-letter|ϕ
03C6
Template:Chset-color-letter|χ
03C7
Template:Chset-color-letter|ψ
03C8
Template:Chset-color-letter|ω
03C9
2_
32
Template:Chset-color-misc|SP
0020
Template:Chset-color-punct|!
0021
Template:Chset-color-punct|"
0022
Template:Chset-color-punct-box|#
0023
Template:Chset-color-graph|$
0024
Template:Chset-color-punct|%
0025
Template:Chset-color-punct|&
0026
Template:Chset-color-punct|'
0027
Template:Chset-color-punct|(
0028
Template:Chset-color-punct|)
0029
Template:Chset-color-punct|*
002A
Template:Chset-color-graph|+
002B
Template:Chset-color-punct|,
002C
Template:Chset-color-punct|-
002D
Template:Chset-color-punct|.
002E
Template:Chset-color-punct|/
002F
3_
48
Template:Chset-color-digit|0[a]
0030
Template:Chset-color-digit|1
0031
Template:Chset-color-digit|2
0032
Template:Chset-color-digit|3
0033
Template:Chset-color-digit|4
0034
Template:Chset-color-digit|5
0035
Template:Chset-color-digit|6
0036
Template:Chset-color-digit|7
0037
Template:Chset-color-digit|8
0038
Template:Chset-color-digit|9
0039
Template:Chset-color-punct|:
003A
Template:Chset-color-punct|;
003B
Template:Chset-color-graph|<
003C
Template:Chset-color-graph|=
003D
Template:Chset-color-graph|>
003E
Template:Chset-color-punct|?
003F
4_
64
Template:Chset-color-punct-box|@
0040
Template:Chset-color-alpha|A
0041
Template:Chset-color-alpha|B
0042
Template:Chset-color-alpha|C
0043
Template:Chset-color-alpha|D
0044
Template:Chset-color-alpha|E
0045
Template:Chset-color-alpha|F
0046
Template:Chset-color-alpha|G
0047
Template:Chset-color-alpha|H
0048
Template:Chset-color-alpha|I
0049
Template:Chset-color-alpha|J
004A
Template:Chset-color-alpha|K
004B
Template:Chset-color-alpha|L
004C
Template:Chset-color-alpha|M
004D
Template:Chset-color-alpha|N
004E
Template:Chset-color-alpha|O
004F
5_
80
Template:Chset-color-alpha|P
0050
Template:Chset-color-alpha|Q
0051
Template:Chset-color-alpha|R
0052
Template:Chset-color-alpha|S
0053
Template:Chset-color-alpha|T
0054
Template:Chset-color-alpha|U
0055
Template:Chset-color-alpha|V
0056
Template:Chset-color-alpha|W
0057
Template:Chset-color-alpha|X
0058
Template:Chset-color-alpha|Y
0059
Template:Chset-color-alpha|Z
005A
Template:Chset-color-punct-box|[
005B
Template:Chset-color-punct-box|\
005C
Template:Chset-color-punct-box|]
005D
Template:Chset-color-graph-box|
2191
Template:Chset-color-punct|_
005F
6_
96
Template:Chset-color-graph-box|`
0060
Template:Chset-color-alpha|a
0061
Template:Chset-color-alpha|b
0062
Template:Chset-color-alpha|c
0063
Template:Chset-color-alpha|d
0064
Template:Chset-color-alpha|e
0065
Template:Chset-color-alpha|f
0066
Template:Chset-color-alpha|g
0067
Template:Chset-color-alpha|h
0068
Template:Chset-color-alpha|i
0069
Template:Chset-color-alpha|j
006A
Template:Chset-color-alpha|k
006B
Template:Chset-color-alpha|l
006C
Template:Chset-color-alpha|m
006D
Template:Chset-color-alpha|n
006E
Template:Chset-color-alpha|o
006F
7_
112
Template:Chset-color-alpha|p
0070
Template:Chset-color-alpha|q
0071
Template:Chset-color-alpha|r
0072
Template:Chset-color-alpha|s
0073
Template:Chset-color-alpha|t
0074
Template:Chset-color-alpha|u
0075
Template:Chset-color-alpha|v
0076
Template:Chset-color-alpha|w
0077
Template:Chset-color-alpha|x
0078
Template:Chset-color-alpha|y
0079
Template:Chset-color-alpha|z
007A
Template:Chset-color-punct-box|{
007B
Template:Chset-color-graph-box||
007C
Template:Chset-color-punct-box|}
007D
Template:Chset-color-graph-box|~
007E
Template:Chset-color-digit|0[a]
0030
8_
128
Template:Chset-color-graph|
25FE
Template:Chset-color-graph|
2567
Template:Chset-color-graph|
255F
Template:Chset-color-graph|
255A
Template:Chset-color-graph|
2564
Template:Chset-color-graph|
2551
Template:Chset-color-graph|
2554
Template:Chset-color-graph|
2560
Template:Chset-color-graph|
2562
Template:Chset-color-graph|
255D
Template:Chset-color-graph|
2550
Template:Chset-color-graph|
2569
Template:Chset-color-graph|
2557
Template:Chset-color-graph|
2563
Template:Chset-color-graph|
2566
Template:Chset-color-graph|
256C
9_
144
Template:Chset-color-punct|·
00B7
Template:Chset-color-graph|
2575
Template:Chset-color-graph|
2576
Template:Chset-color-graph|
2514
Template:Chset-color-graph|
2577
Template:Chset-color-graph|
2502
Template:Chset-color-graph|
250C
Template:Chset-color-graph|
251C
Template:Chset-color-graph|
2574
Template:Chset-color-graph|
2518
Template:Chset-color-graph|
2500
Template:Chset-color-graph|
2534
Template:Chset-color-graph|
2510
Template:Chset-color-graph|
2524
Template:Chset-color-graph|
252C
Template:Chset-color-graph|
253C
A_
160
Template:Chset-color-letter|ª
00AA
Template:Chset-color-letter|º
00BA
Template:Chset-color-graph|°
00B0
Template:Chset-color-graph|£
00A3
Template:Chset-color-graph|©
00A9
Template:Chset-color-ext-punct|
00B6
Template:Chset-color-ext-punct|§
00A7
Template:Chset-color-ext-punct|
2020
Template:Chset-color-digit|¼
00BC
Template:Chset-color-digit|½
00BD
Template:Chset-color-digit|¾
00BE
Template:Chset-color-ext-punct|«
00AB
Template:Chset-color-ext-punct|»
00BB
Template:Chset-color-graph|
20A7
Template:Chset-color-ext-punct|¿
00BF
Template:Chset-color-ext-punct|¡
00A1
B_
176
Template:Chset-color-letter|ƒ
0192
Template:Chset-color-graph|¢
00A2
Template:Chset-color-graph|¨
00A8
Template:Chset-color-graph|´
00B4
Template:Chset-color-letter|ˆ
02C6
Template:Chset-color-ext-punct|
2030
Template:Chset-color-digit|
215B
Template:Chset-color-digit|
215C
Template:Chset-color-digit|
215D
Template:Chset-color-digit|
215E
Template:Chset-color-letter|ß
00DF
Template:Chset-color-graph|
25CB
Template:Chset-color-ext-punct|
2022
Template:Chset-color-graph|¥
00A5
Template:Chset-color-graph|®
00AE
Template:Chset-color-graph|
2122
C_
192
Template:Chset-color-letter|Á
00C1
Template:Chset-color-letter|É
00C9
Template:Chset-color-letter|Í
00CD
Template:Chset-color-letter|Ó
00D3
Template:Chset-color-letter|Ú
00DA
Template:Chset-color-letter|Â
00C2
Template:Chset-color-letter|Ê
00CA
Template:Chset-color-letter|Î
00CE
Template:Chset-color-letter|Ô
00D4
Template:Chset-color-letter|Û
00DB
Template:Chset-color-letter|À
00C0
Template:Chset-color-letter|È
00C8
Template:Chset-color-letter|Ì
00CC
Template:Chset-color-letter|Ò
00D2
Template:Chset-color-letter|Ù
00D9
Template:Chset-color-letter|Ÿ
0178
D_
208
Template:Chset-color-letter|Ä
00C4
Template:Chset-color-letter|Ë
00CB
Template:Chset-color-letter|Ï
00CF
Template:Chset-color-letter|Ö
00D6
Template:Chset-color-letter|Ü
00DC
Template:Chset-color-letter|Ç
00C7
Template:Chset-color-letter|Æ
00C6
Template:Chset-color-letter|Å
00C5
Template:Chset-color-letter|Ø
00D8
Template:Chset-color-letter|Ñ
00D1
Template:Chset-color-letter|Ã
00C3
Template:Chset-color-letter|Õ
00D5
Template:Chset-color-graph|
2265
Template:Chset-color-graph|
2264
Template:Chset-color-graph|
2260
Template:Chset-color-graph|
2243
E_
224
Template:Chset-color-letter|á
00E1
Template:Chset-color-letter|é
00E9
Template:Chset-color-letter|í
00ED
Template:Chset-color-letter|ó
00F3
Template:Chset-color-letter|ú
00FA
Template:Chset-color-letter|â
00E2
Template:Chset-color-letter|ê
00EA
Template:Chset-color-letter|î
00EE
Template:Chset-color-letter|ô
00F4
Template:Chset-color-letter|û
00FB
Template:Chset-color-letter|à
00E0
Template:Chset-color-letter|è
00E8
Template:Chset-color-letter|ì
00EC
Template:Chset-color-letter|ò
00F2
Template:Chset-color-letter|ù
00F9
Template:Chset-color-letter|ÿ
00FF
F_
240
Template:Chset-color-letter|ä
00E4
Template:Chset-color-letter|ë
00EB
Template:Chset-color-letter|ï
00EF
Template:Chset-color-letter|ö
00F6
Template:Chset-color-letter|ü
00FC
Template:Chset-color-letter|ç
00E7
Template:Chset-color-letter|æ
00E6
Template:Chset-color-letter|å
00E5
Template:Chset-color-letter|ø
00F8
Template:Chset-color-letter|ñ
00F1
Template:Chset-color-letter|ã
00E3
Template:Chset-color-letter|õ
00F5
Template:Chset-color-graph|
21D2
Template:Chset-color-graph|
21D0
Template:Chset-color-graph|
21D4
Template:Chset-color-graph|
2261
  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.

Language variants

  • 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

References

  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. […] {{cite book}}: |archive-date= / |archive-url= timestamp mismatch; 2017-07-11 suggested (help) [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