ZX Spectrum Character Set - Printable Characters

Printable Characters

The printable part of the Spectrum character set, 0x20–0x7F, is almost standard, except that 0x60 has the pound sign (£) instead of the grave accent ( ` ) and 0x7F has the copyright sign (©) instead of the control code DEL. The pound sign was mapped to 0x60, and not 0x23 as in the British variant of ASCII (ISO-646-GB), making both pound sign and number sign (#) available universally. Code 0x5E contains an up-arrow (↑) as in ASCII-1963 instead of the ASCII-1967 caret (^); however, 0x5F has an underscore and not a left-arrow.

Beyond 0x7F, the Spectrum character set uses the high-bit range, 0x80–0xFF, for special purposes. 0x80–0x8F contain block graphics. 0x90–0xA4 contain the User Defined Graphics (UDGs), which the user can customise with a few lines of BASIC. 0xA5–0xFF contain tokens (BASIC keywords represented as single characters): for example, pressing P at the beginning of a line would generate the code 0xF6, which would cause the BASIC keyword PRINT to display on the screen. Codes 0xC7–0xC9 are the mathematical operators <= (less-than-or-equal), >= (greater-than-or-equal) and <> (not-equal) respectively; unlike the relational operators of most other systems, these are characters in their own right and cannot be achieved by typing the two constituent symbols one after the other.

Mapping the printable Spectrum character set to Unicode is possible, but fonts containing some of the block graphics characters are still not commonplace.

The default printable characters (32 (space) to 127 (copyright)) are stored at the end of the Spectrum's ROM at memory address 15616 (0x3D00) to 16383 (0x3FFF) and are referenced by the system variable CHARS which can be found at memory address 23606/7. The value in CHARS is actually 256 bytes lower than the first byte of the space character so that referencing a printable ASCII character does not need to consider the first 32 characters. As such, the CHARS value (by default) holds the address 15360 (0x3C00).

The UDG characters (Gr-A to Gr-U) are stored at the end of the Spectrum's RAM at memory address 65368 (0xFF58) to 65535 (0xFFFF). As such, a POKE issued to this address range changes the UDG characters used in subsequent PRINT statements (though not any UDG characters already drawn to the screen). The USR keyword (when followed by a single quoted character) provides a quick method to reference these addresses from BASIC. As with the printable characters, the location of the UDG characters is stored in the system variable UDG.

The final two UDG characters (Gr-T and Gr-U) are not available on the 128K Spectrums (except in the backward-compatible 48K mode), where they are replaced with two new BASIC keywords: SPECTRUM and PLAY. A side-effect of this is that some older games do not work properly, displaying the keywords SPECTRUM and PLAY instead of their intended graphics.

Read more about this topic:  ZX Spectrum Character Set

Famous quotes containing the word characters:

    We are like travellers using the cinders of a volcano to roast their eggs. Whilst we see that it always stands ready to clothe what we would say, we cannot avoid the question whether the characters are not significant of themselves.
    Ralph Waldo Emerson (1803–1882)