ZX Spectrum Character Set - ZX Spectrum character set
Znaková sada ZX Spectrum je varianta ASCII používaný v britské Sinclair ZX Spectrum rodinných počítačů. Je založen na ASCII-1967, ale znaky ^, `a DEL
jsou nahrazeny ↑, £ a ©. To se také liší ve svém použití kontrolních C0 kódy jiné než společná BS
a CR
, a využívá 128 high-bitové znaky mimo rozsah ASCII. Hlavní sadu tisknutelných znaků a systémová písma ZX Spectrum používá také počítač Jupiter Ace .
Tisknutelné znaky
Standardní znak US-ASCII, 0x20–0x7F, je součástí znakové sady Spectrum, kromě toho, že kódový bod 0x5E je šipka nahoru (↑) namísto stříšky (^), 0x60 je znak libry (£) místo závažného přízvuk ( `) a 0x7F je znak copyright (©) namísto řídicí znak DEL
. Všimněte si, že použití 0x5E jako ↑ bylo také případem starší verze ASCII z roku 1963. Znak £ nebyl namapován na 0x23 jako v britské variantě ASCII ( ISO-646-GB ), což umožnilo současně znak libry i znak čísla (#). Znak ↑ je operátor umocňování v BASIC Spectra , stejně jako ^, které nahrazuje ve srovnání s ASCII-1967, se používá k umocňování v mnoha jiných dialektech jazyka BASIC a dalších programovacích jazyků.
Kromě velikosti 0x7F používá znaková sada Spectrum pro speciální účely rozsah vysokých bitů 0x80–0xFF. 0x80-0x8F obsahují stejné 2 × 2 blok grafické znaky, které znakové sady ZX80 a znaková sada ZX81 má (na jiných místech), k dispozici také v Block Elements bloku Unicode. Standardní znaková sada ZX Spectrum však neobsahuje grafické znaky ZX80 / 81 s 50% barevným blokem 1 × 2. Kódové body 0x90–0xA4 obsahují původně 21 znaků definovaných uživatelem (UDG) a 0xA5–0xFF obsahují ZÁKLADNÍ klíčová slova tokenizovaná jako jednotlivé body kódu. Ve 128 BASIC módu zavedeném později to bylo změněno na 19 UDG znaků končících na 0xA2 následovaných dvěma novými tokeny SPECTRUM
a PLAY
. Kód upozorňuje 0xC7-0xC9 jsou provozovatelé dvou postav <=
, >=
a <>
podobně tokenized do jednotlivých bodů kódu. Tyto tokeny umožňují PRINT
zadávání příkazu BASIC jediným stisknutím klávesy Pna začátku řádku (tj. V příkazovém režimu), který vygeneroval 0xF6. To se zobrazí jako celé klíčové slovo PRINT
na obrazovce, ale uloží se pouze token jednoho bajtu, takže tlumočník musí analyzovat pouze jeden bajt nebo uložit do / načíst z externího úložiště, jako je páska.
Všechny znaky jiné než UDG Spectrum lze namapovat na Unicode . Tři znaky ↑, £ a ©, které nejsou ASCII-1967, jsou na U + 2191, U + 00A3 a U + 00A9. Grafické znaky bloku 2 × 2 jsou v bloku Block Elements na U + 2580 – U + 259F, ačkoli podpora fontů pro druhé není univerzální.
Tvar znaků UDG je mapován do oblasti paměti RAM a je inicializován na kopie znaků AU, ale lze jej libovolně předefinovat, například pomocí příkazu BASIC POKE
. Stejně jako všechny znaky v systémovém písmu používají mřížku 8 × 8 pixelů uloženou v 8 bajtech. Jejich nové definování změní jejich vzhled v následujících PRINT
příkazech, ale nezmění to žádné znaky UDG, které jsou již nakreslené na obrazovce. Umístění definice znaku UDG lze určit pomocí funkce BASIC USR
s argumentem znaku, např. USR "A"
Pro první. Ve výchozím nastavení to ukazuje na posledních 168 (21 × 8) bajtů RAM na adresách paměti 65368 (0xFF58) až 65535 (0xFFFF) pro 48K spektrum. Na toto umístění ukazuje systémová proměnná UDG, kterou lze najít na adrese paměti 23675/6 (0x5C7B / C) a kterou lze změnit. Microdigital tk 90x , brazilský klon ZX Spectrum zahrnovaly v ROM aplikace graficky upravovat tyto UDG znaky spolu s funkčností do té doby předem nahrát s diakritikou písmeny používané v portugalštině. (Za tímto účelem TK90X definoval dva další základní příkazy v kódech 0 a 1, respektive „trace“ a „udg“)
Na definici hlavního systémového písma, 32 (mezera) až 127 (autorská práva), odkazuje systémová proměnná CHARS, kterou lze najít na adrese paměti 23606/7 (0x5C36 / 7). Je definována jako 256 bajtů nižší než první bajt znaku mezery, což zjednodušuje vzorec pro vyhledání znaku na CHARS + 8 × kódový bod . Výchozí hodnota CHARS je 15360 (0x3C00) se systémovým písmem na konci ROM Spectra na adrese 15616 (0x3D00) až 16383 (0x3FFF). Celá alternativní písma lze načíst do paměti RAM a proměnná CHARS se odpovídajícím způsobem změnila.
Kontrolní kódy
V oblasti řídicích kódů (rozsah C0) používá Spectrum většinou k ovládání barvy popředí a pozadí proprietární ovládací prvky, například INK a PAPER. Společné BS
a CR
kódové body jsou však stejné jako v ASCII. Cursor-down (0x0A, ASCII Line Feed) lze simulovat s 32 mezerami vytištěnými OVER 1 (transparentní přetisk) a kurzorem nahoru 0x0B (ASCII Vertical Tabulation) lze simulovat s 32 mezerami. Systémová ROM má chybu, která znemožňuje fungování kurzoru vpravo na 0x09 (viz ASCII Horizontal Tabulation).
Řídicí kód 0x0E se používá k označení, že následuje číslo s plovoucí desetinnou čárkou, aby se urychlilo zpracování textu. V programu Sinclair BASIC jsou číselné konstanty uloženy jako ASCII následované bajtem 0x0E a 5bajtovou binární reprezentací s plovoucí desetinnou čárkou. Při výpisu programu BASIC se používá pouze část ASCII, ale za běhu se používá pouze binární reprezentace. Některé programy Spectrum to využily k zamlžování čísel, zatímco jiné to šetřily paměť. Například řádek BASIC zobrazený jako GO TO 10
by mohl obsahovat znaky ASCII pro číslice 1 a 0 následované bajtem 0x0E a reprezentací plovoucí desetinné čárky 100 namísto 10. Každý, kdo vypsal tento program, viděl číslo 10, ale při spuštění program skočil do řádku 100.
Nedefinované kódy
Rozsahy 0x00–0x05, 0x07, 0x0A – 0x0C, 0x0F a 0x17–0x1F jsou nedefinované. Ve většině případů vytvoří otazník, pokud se vytisknou na displej. Mohou však být použity k reprezentaci jejich doslovných číselných hodnot ve spojení s určitými ovládacími kódy: například 0x10 + 0x07 nastaví barvu inkoustu (text v popředí) na barvu číslo 7 (bílá).
Sada znaků
Znaková sada spektra | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0_ stisknutí klávesy | 0_ znak | 1_ | 2_ | 3_ | 4_ | 5_ | 6_ | 7_ | 8_ | 9_ | A_ | B_ | C_ | D_ | E_ | F_ | |
_0 | INKOUST | 0 | @ | P | £ | p | (A) | (Q) | VAL | USR | FORMÁT | LPRINT | SEZNAM | ||||
_1 | PAPÍR | ! | 1 | A | Q | A | q | (B) | (R) | LEN | STR $ | HÝBAT SE | SEZNAM | NECHAT | |||
_2 | BLIKAT | " | 2 | B | R | b | r | (C) | (S) | HŘÍCH | CHR $ | VYMAZAT | STOP | PAUZA | |||
_3 | JASNÝ | # | 3 | C | S | C | s | (D) | (T) | COS | NE | OTEVŘENO # | ČÍST | DALŠÍ | |||
_4 | skutečné video | INVERZNÍ | $ | 4 | D | T | d | t | (E) | (U) | OPÁLENÍ | ZÁSOBNÍK | ZAVŘÍT # | DATA | STRČIT | ||
_5 | inv video | PŘES | % | 5 | E | U | E | u | (F) | RND | ASN | NEBO | SPOJIT | OBNOVIT | TISK | ||
_6 | zámek čepice | čárka | NA | & | 6 | F | PROTI | F | proti | (G) | INKEY $ | ACS | A | OVĚŘTE | NOVÝ | SPIKNUTÍ | |
_7 | Upravit | TAB | '' | 7 | G | Ž | G | w | (H) | PI | ATN | <= | PÍPNUTÍ | OKRAJ | BĚH | ||
_8 | vlevo, odjet | vlevo, odjet | ( | 8 | H | X | h | X | (Já) | FN | LN | > = | KRUH | POKRAČOVAT | ULOŽIT | ||
_9 | že jo | že jo | ) | 9 | Já | Y | i | y | (J) | SMĚŘOVAT | EXP | <> | INKOUST | ZTLUMIT | NÁHODNĚ | ||
_A | dolů | * | : | J | Z | j | z | (K) | OBRAZOVKA $ | INT | ČÁRA | PAPÍR | REM | LI | |||
_B | nahoru | + | ; | K. | [ | k | { | (L) | ATTR | SQR | PAK | BLIKAT | PRO | CLS | |||
_C | vymazat | , | < | L | \ | l | | | (M) | NA | SGN | NA | JASNÝ | JÍT DO | KRESLIT | |||
_D | vstoupit | vstoupit | - | = | M | ] | m | } | (N) | TAB | břišní svaly | KROK | INVERZNÍ | GO SUB | PRŮHLEDNÁ | ||
_E | rozšířit | číslo | . | > | N | ↑ | n | ~ | (Ó) | VAL $ | PEEK | DEF FN | PŘES | VSTUP | VRÁTIT SE | ||
_F | grafika | / | ? | Ó | _ | Ó | © | (P) | KÓD | V | KOČKA | VEN | ZATÍŽENÍ | KOPÍROVAT |
Viz také
Poznámky
Reference
externí odkazy
- Sinclair Spectrum + 48K znaková sada z webu Michaela Zaretskiho
- Mapovací tabulka od Sinclair Spectrum + 48K znaková sada na Unicode Ze stejného webu
- Balíček s plovoucí desetinnou čárkou