Amstrad CPC character set
The Amstrad CPC character set (alternately known as the BASIC graphics character set)[1] the character set used in the Amstrad CPC series of 8-bit personal computers when running BASIC (the default mode, until it boots into CP/M). This character set existed in the built-in "lower" ROM chip. It is based on ASCII-1967, with the exception of character 0x5E which is the up arrow instead of the circumflex, as it is in ASCII-1963, a feature shared with other character sets of the time [2][3]. Apart from the standard printable ASCII range (0x20-0x7e), it is completely different from the Amstrad CP/M Plus character set. The BASIC character set had symbols of particular use in games and home computing, while the CP/M Plus character reflected the International and Business flavor of the CP/M Plus environment.[4] This character set is represented in Unicode (excluding 0xEF, 0xFC, and 0xFD)[5] as of the March 2020 release of Unicode 13.0, which added symbols for legacy computing.
Character set
_0 | _1 | _2 | _3 | _4 | _5 | _6 | _7 | _8 | _9 | _A | _B | _C | _D | _E | _F | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0_ | ␀ ◻ 0000 |
␁ ⎾ 0001 |
␂ ⏊ 0002 |
␃ ⏌ 0003 |
␄ ⚡︎ 0004 |
␅ ⊠ 0005 |
␆ ✓ 0006 |
␇ ⍾ 0007 |
␈ ← 0008 |
␉ → 0009 |
␊ ↓ 000A |
␋ ↑ 000B |
␌ ↡ 000C |
␍ ↲ 000D |
␎ ⊗ 000E |
␏ ⊙ 000F |
1_ | ␐ ⊟ 0010 |
␑ ◷ 0011 |
␒ ◶ 0012 |
␓ ◵ 0013 |
␔ ◴ 0014 |
␕ ⍻ 0015 |
␖ ⎍ 0016 |
␗ ⊣ 0017 |
␘ ⧖ 0018 |
␙ ⍿ 0019 |
␚ ␦ 001A |
␛ ⊖ 001B |
␜ ◰ 001C |
␝ ◱ 001D |
␞ ◲ 001E |
␟ ◳ 001F |
2_ | ␠ 0020 |
! 0021 |
" 0022 |
# 0023 |
$ 0024 |
% 0025 |
& 0026 |
’ 2019 |
( 0028 |
) 0029 |
* 002A |
+ 002B |
, 002C |
- 002D |
. 002E |
/ 002F |
3_ | 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_ | @ 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_ | 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_ | ` 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_ | 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 |
␡ 007F |
8_ | 00A0 |
▘ 2598 |
▝ 259D |
▀ 2580 |
▖ 2596 |
▌ 258C |
▞ 259E |
▛ 259B |
▗ 2597 |
▚ 259A |
▐ 2590 |
▜ 259C |
▄ 2584 |
▙ 2599 |
▟ 259F |
█ 2588 |
9_ | · 00B7 |
╵ 2575 |
╶ 2576 |
└ 2514 |
╷ 2577 |
│ 2502 |
┌ 250C |
├ 251C |
╴ 2574 |
┘ 2518 |
─ 2500 |
┴ 2534 |
┐ 2510 |
┤ 2524 |
┬ 252C |
┼ 253C |
A_ | ^ 005E |
´ 00B4 |
¨ 00A8 |
£ 00A3 |
© 00A9 |
¶ 00B6 |
§ 00A7 |
‘ 2018 |
¼ 00BC |
½ 00BD |
¾ 00BE |
± 00B1 |
÷ 00F7 |
¬ 00AC |
¿ 00BF |
¡ 00A1 |
B_ | α 03B1 |
β 03B2 |
γ 03B3 |
δ 03B4 |
ε 03B5 |
θ 03B8 |
λ 03BB |
μ 03BC |
π 03C0 |
σ 03C3 |
φ 03C6 |
ψ 03C8 |
χ 03C7 |
ω 03C9 |
Σ 03A3 |
Ω 03A9 |
C_ | 🮠 1FBA0 |
🮡 1FBA1 |
🮣 1FBA3 |
🮢 1FBA2 |
🮧 1FBA7 |
🮥 1FBA5 |
🮦 1FBA6 |
🮤 1FBA4 |
🮨 1FBA8 |
🮩 1FBA9 |
🮮 1FBAE |
╳ 2573 |
╱ 2571 |
╲ 2572 |
🮕 1FB95 |
▒ 2592 |
D_ | ▔ 2594 |
▕ 2595 |
▁ 2581 |
▏ 258F |
◤ 25E4 |
◥ 25E5 |
◢ 25E2 |
◣ 25E3 |
🮎 1FB8E |
🮍 1FB8D |
🮏 1FB8F |
🮌 1FB8C |
🮜 1FB9C |
🮝 1FB9D |
🮞 1FB9E |
🮟 1FB9F |
E_ | ☺ 263A |
☹ 2639 |
♣ 2663 |
♦ 2666 |
♥ 2665 |
♠ 2660 |
○ 25CB |
● 25CF |
□ 25A1 |
■ 25A0 |
♂ 2642 |
♀ 2640 |
♩ 2669 |
♪ 266A |
☼ 263C |
|
F_ | ⭡ 2B61 |
⭣ 2B63 |
⭠ 2B60 |
⭢ 2B62 |
▲ 25B2 |
▼ 25BC |
▶ 25B6 |
◀ 25C0 |
🯆 1FBC6 |
🯅 1FBC5 |
🯇 1FBC7 |
🯈 1FBC8 |
⭥ 2B65 |
⭤ 2B64 |
- The control characters normally do not produce a character on screen, but are interpreted as control codes. When using the character 1 (SOH) as a prefix, or with the graphics text, or entered from the keyboard, they are displayed with the representation on the bottom of the cell.[9]
Letter Number Punctuation Symbol Other Undefined No Unicode mapping[5]
Control characters
Each of the characters in the C0 character range (0x00-0x1F) had a special function.[10]
Value (hex) | Value(dec) | Name | Parameter | Locomotive BASIC equivalent | Function |
---|---|---|---|---|---|
00 | 0 | NUL | No effect. Ignored. | ||
01 | 1 | SOH | 0-255 | Print the symbol given by the parameter value. This allows the symbols in the range 0 to 31 to be displayed. | |
02 | 2 | STX | CURSOR 0 | Turn off text cursor. | |
03 | 3 | ETX | CURSOR 1 | Turn on text cursor. | |
04 | 4 | EOT | 0-2 | MODE | Set screen mode. |
05 | 5 | ENQ | 0-255 | Send the parameter character to the graphics cursor. | |
06 | 6 | ACK | Enable Text Screen (see NAK) | ||
07 | 7 | BEL | Sound Bleeper. Note that this flushes the sound queues. | ||
08 | 8 | BS | Move cursor back one character.[lower-alpha 1] | ||
09 | 9 | TAB | Move cursor forward one character.[lower-alpha 1] | ||
0A | 10 | LF | Move cursor down one line.[lower-alpha 1] | ||
0B | 11 | VT | Move cursor up one line.[lower-alpha 1] | ||
0C | 12 | FF | CLS | Clear text window and move cursor to top left corner. | |
0D | 13 | CR | Move cursor to left edge of window on current line.[lower-alpha 1] | ||
0E | 14 | SO | 0-15 | PAPER | Set Paper Ink. |
0F | 15 | SI | 0-15 | PEN | Set Pen Ink. |
10 | 16 | DLE | Delete current character.[lower-alpha 1] | ||
11 | 17 | DC1 | Clear from left edge of window to, and including, the current character position.[lower-alpha 1] | ||
12 | 18 | DC2 | Clear from, and including, the current character position to the right edge of window.[lower-alpha 1] | ||
13 | 19 | DC3 | Clear from start of window to, and including, the current character position.[lower-alpha 1] | ||
14 | 20 | DC4 | Clear from, and including, the current character position to the end of window.[lower-alpha 1] | ||
15 | 21 | NAK | Turn off text screen. The screen will not react to anything sent to it until after an ACK is sent. | ||
16 | 22 | SYN | 0-1 | Set transparency (0 disables, 1 enables) | |
17 | 23 | ETB | 0-3 | Set graphics ink mode. 0 normal (overwrite), 1 XOR, 2 AND, 3 OR | |
18 | 24 | CAN | Exchange Pen and Paper Inks, effectively applying the reverse video effect. | ||
19 | 25 | EM | 0-255 (9 times) | SYMBOL | Set the matrix for user definable character. The first parameter specifies which character's matrix to set. The next eight specify the matrix. |
1A | 26 | SUB | 1-80, 1-80, 1-25, 1-25 | WINDOW | Set Window. The parameters specify left, right, top and bottom edges of the window. |
1B | 27 | ESC | No effect. Ignored. | ||
1C | 28 | FS | 0-15, 0-31, 0-31 | INK | Set Ink to a pair of colors. The first parameter specifies the Ink, the next two the required colors. [lower-alpha 2] |
1D | 29 | GS | 0-31, 0-31 | BORDER | Set Border to a pair of colors. Equivalent to a BORDER command. The two parameters specify the two colors.[lower-alpha 2] |
1E | 30 | RS | Move cursor to top left hand corner of window. | ||
1F | 31 | US | 1-80, 1-25 | LOCATE | Move cursor to the given position in the current window. The first parameter gives the column to move to, the second gives the line. |
- The codes marked force the cursor to a legal position in the current window before they are obeyed - but may leave the cursor in an illegal position
- Parameter values 27 to 31 are un-defined colors.
References
- "Chapter 7: For your reference ...." (PDF), Amstrad CPC 6128 User Instructions, 1985, p. 9
- ZX Spectrum character set
- PETSCII
- "Chapter 7: For your reference ...." (PDF), Amstrad CPC 6128 User Instructions, 1985, p. 54
- "Character Not Proposed" (PDF), L2/19-025: Sources, 2019-01-04
- "AMSCPC.TXT", L2/19-025: Proposal to add characters from legacy computers and teletext to the UCS (PDF), 2019-01-04
- L2/19-025: Sources (PDF), 2019-01-04
- "Chapter 7: For your reference ...." (PDF), Amstrad CPC 6128 User Instructions, 1985, pp. 9–20
- Godden, Bruce; Overell, Paul; Radisic, David (1986), "Appendix VI: Displayed Character Set", CPC464/664/6128 FIRMWARE, Amstrad Consumer Electronics, p. 431
- "Chapter 7: For your reference ...." (PDF), Amstrad CPC 6128 User Instructions, 1985, pp. 3–6