ZX Spectrum Character Set - ZX Spectrum character set

Znaková sada ZX Spectrum, jak je vykreslena v systémovém písmu (bez grafických znaků definovaných uživatelem).

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 DELjsou nahrazeny ↑, £ a ©. To se také liší ve svém použití kontrolních C0 kódy jiné než společná BSa 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

Screenshot programu Sinclair BASIC, který předvádí všechny tisknutelné body kódu, včetně klíčových slov BASIC a grafických znaků definovaných uživatelem (ve výchozím nastavení definováno jako kopie AU).

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 SPECTRUMa PLAY. Kód upozorňuje 0xC7-0xC9 jsou provozovatelé dvou postav <=, >=a <>podobně tokenized do jednotlivých bodů kódu. Tyto tokeny umožňují PRINTzadá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 PRINTna 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 PRINTpří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 USRs 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é BSa CRkó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 10by 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 ZXSpectrum80.svg (A) (Q) VAL USR FORMÁT LPRINT SEZNAM
_1 PAPÍR ! 1 A Q A q ZXSpectrum81.svg (B) (R) LEN STR $ HÝBAT SE SEZNAM NECHAT
_2 BLIKAT " 2 B R b r ZXSpectrum82.svg (C) (S) HŘÍCH CHR $ VYMAZAT STOP PAUZA
_3 JASNÝ # 3 C S C s ZXSpectrum83.svg (D) (T) COS NE OTEVŘENO # ČÍST DALŠÍ
_4 skutečné video INVERZNÍ $ 4 D T d t ZXSpectrum84.svg (E) (U) OPÁLENÍ ZÁSOBNÍK ZAVŘÍT # DATA STRČIT
_5 inv video PŘES % 5 E U E u ZXSpectrum85.svg (F) RND ASN NEBO SPOJIT OBNOVIT TISK
_6 zámek čepice čárka NA & 6 F PROTI F proti ZXSpectrum86.svg (G) INKEY $ ACS A OVĚŘTE NOVÝ SPIKNUTÍ
_7 Upravit TAB '' 7 G Ž G w ZXSpectrum87.svg (H) PI ATN <= PÍPNUTÍ OKRAJ BĚH
_8 vlevo, odjet vlevo, odjet ( 8 H X h X ZXSpectrum88.svg (Já) FN LN > = KRUH POKRAČOVAT ULOŽIT
_9 že jo že jo ) 9 Y i y ZXSpectrum89.svg (J) SMĚŘOVAT EXP <> INKOUST ZTLUMIT NÁHODNĚ
_A dolů * : J Z j z ZXSpectrum8a.svg (K) OBRAZOVKA $ INT ČÁRA PAPÍR REM LI
_B nahoru + ; K. [ k { ZXSpectrum8b.svg (L) ATTR SQR PAK BLIKAT PRO CLS
_C vymazat , < L \ l | ZXSpectrum8c.svg (M) NA SGN NA JASNÝ JÍT DO KRESLIT
_D vstoupit vstoupit - = M ] m } ZXSpectrum8d.svg (N) TAB břišní svaly KROK INVERZNÍ GO SUB PRŮHLEDNÁ
_E rozšířit číslo . > N n ~ ZXSpectrum8e.svg (Ó) VAL $ PEEK DEF FN PŘES VSTUP VRÁTIT SE
_F grafika / ? Ó _ Ó © ZXSpectrum8f.svg (P) KÓD V KOČKA VEN ZATÍŽENÍ KOPÍROVAT

Viz také

Poznámky

Reference

externí odkazy