Zestaw znaków ZX Spectrum - ZX Spectrum character set
Zestaw znaków ZX Spectrum to wariant ASCII używany w brytyjskich komputerach z rodziny Sinclair ZX Spectrum . Opiera się na ASCII-1967, ale znaki ^, ` i DEL
są zastępowane przez ↑, £ i ©. Różni się również w użyciu kodów kontrolnych C0 innych niż wspólny BS
i CR
, oraz wykorzystuje 128 znaków wysokobitowych poza zakresem ASCII. Główny zestaw znaków drukowalnych i czcionka systemowa ZX Spectrum są również używane przez komputer Jupiter Ace .
Znaki do druku
Standardowy US-ASCII, 0x20–0x7F, jest zawarty w zestawie znaków Spectrum, z wyjątkiem tego, że punkt kodowy 0x5E to strzałka w górę (↑) zamiast karetki (^), 0x60 to znak funta (£) zamiast akcentu grawitacyjnego (`), a 0x7F to znak praw autorskich (©) zamiast znaku kontrolnego DEL
. Zauważ, że użycie 0x5E jako ↑ miało również miejsce w starszej wersji ASCII z 1963 roku. Znak £ nie został odwzorowany na 0x23, jak w brytyjskim wariancie ASCII ( ISO-646-GB ), pozwalając jednocześnie na znak funta i numer (#). Znak ↑ jest operatorem potęgowania w języku BASIC Spectrum , podobnie jak znak ^, który zastępuje w porównaniu z ASCII-1967, jest używany do potęgowania w wielu innych dialektach języka BASIC i innych językach programowania.
Poza 0x7F zestaw znaków Spectrum wykorzystuje do specjalnych celów zakres wysokich bitów 0x80–0xFF. 0x80–0x8F zawierają te same blokowe znaki graficzne 2x2, które mają zestaw znaków ZX80 i zestaw znaków ZX81 (w innych lokalizacjach), również dostępne w bloku Unicode Block Elements . Jednak standardowy zestaw znaków ZX Spectrum nie zawiera znaków graficznych ZX80/81 z 50% ditheringiem 1×2 blokowym. Punkty kodowe 0x90–0xA4 zawierają pierwotnie 21 znaków grafiki zdefiniowanej przez użytkownika (UDG), a 0xA5–0xFF zawierają słowa kluczowe BASIC tokenizowane jako pojedyncze punkty kodowe. W wprowadzonym później trybie 128 BASIC zmieniono to na 19 znaków UDG kończących się na 0xA2, po których następowały dwa nowe tokeny SPECTRUM
i PLAY
. Kodeks wskazuje 0xC7-0xC9 są operatorzy dwóch znaków <=
, >=
i <>
, podobnie tokenized do pojedynczych punktów kodowych. Te tokeny pozwalają na wprowadzenie komendy BASIC podobnej PRINT
do pojedynczego naciśnięcia klawisza Pna początku linii (tj. w trybie komend), co wygenerowało 0xF6. Jest to wyświetlane jako pełne słowo kluczowe PRINT
na ekranie, ale tylko jednobajtowy token jest przechowywany, więc tylko ten pojedynczy bajt musi zostać przeanalizowany przez interpreter lub zapisany/załadowany z pamięci zewnętrznej, takiej jak taśma.
Wszystkie znaki spoza UDG Spectrum można odwzorować na Unicode . Trzy znaki spoza ASCII-1967 ↑, £ i © to U+2191, U+00A3 i U+00A9. Znaki graficzne blokowe 2x2 znajdują się w bloku Elementy blokowe pod U+2580–U+259F, chociaż obsługa czcionek dla tego ostatniego nie jest uniwersalna.
Kształt znaków UDG jest mapowany do obszaru pamięci RAM i jest inicjowany do kopii znaków AU, ale można go dowolnie przedefiniować, na przykład za pomocą polecenia BASIC POKE
. Podobnie jak wszystkie znaki w czcionce systemowej, używają siatki 8×8 pikseli przechowywanej w 8 bajtach. Przedefiniowanie ich zmienia ich wygląd w kolejnych PRINT
zestawieniach, ale nie zmienia żadnych znaków UDG już narysowanych na ekranie. Położenie definicji znaku UDG można określić funkcją BASIC USR
ze znakiem jako argumentem, np. USR "A"
dla pierwszego. Domyślnie wskazuje to na ostatnie 168 (21×8) bajtów pamięci RAM pod adresami pamięci od 65368 (0xFF58) do 65535 (0xFFFF) dla widma 48K. Lokalizacja jest wskazywana przez zmienną systemową UDG, którą można znaleźć pod adresem pamięci 23675/6 (0x5C7B/C) i można ją zmienić. TK90X , brazylijski klon ZX Spectrum zawierało w ROM aplikacji graficznie edytować te znaki UDG, wraz z funkcjonalnością do wstępnego załadowania następnie z akcentowanych liter używanych w języku portugalskim. (W tym celu TK90X zdefiniował dwa dodatkowe polecenia podstawowe pod kodami 0 i 1, odpowiednio „trace” i „udg”)
Do definicji głównej czcionki systemowej, od 32 (spacja) do 127 (prawa autorskie), odwołuje się zmienna systemowa CHARS, którą można znaleźć pod adresem pamięci 23606/7 (0x5C36/7). Jest ona zdefiniowana jako 256 bajtów niż pierwszy bajt o charakterze miejsca, upraszczając wzór lokalizowania charakter znaków + 8 x punktu kodowego . Wartość CHARS domyślnie przyjmuje wartość 15360 (0x3C00), z czcionką systemową na końcu pamięci ROM Spectrum pod adresem 15616 (0x3D00) do 16383 (0x3FFF). Całe alternatywne czcionki można załadować do pamięci RAM i odpowiednio zmienić zmienną CHARS.
Kody kontrolne
W obszarze kodów kontrolnych (zakres C0) Spectrum używa głównie zastrzeżonych kontroli, takich jak INK i PAPER do kontrolowania koloru pierwszego planu i tła. Jednak punkty wspólne BS
i CR
kodowe są takie same jak w ASCII. Kursor w dół (0x0A, ASCII Line Feed) może być symulowany z 32 spacjami wydrukowanymi z OVER 1 (przezroczysty nadruk), a kursor w górę 0x0B (ASCII Vertical Tabulation) może być symulowany z 32 cofnięciami. Systemowa pamięć ROM ma błąd, który uniemożliwia działanie kursora w prawo przy 0x09 (patrz ASCII Horizontal Tabulation).
Kod sterujący 0x0E służy do wskazania, że następuje liczba zmiennoprzecinkowa, aby przyspieszyć przetwarzanie tekstu. W programie Sinclair BASIC stałe numeryczne są przechowywane jako ASCII, po których następuje bajt 0x0E i 5-bajtowa binarna reprezentacja zmiennoprzecinkowa. Przy wyświetlaniu programu w języku BASIC używana jest tylko część ASCII, ale w czasie wykonywania używana jest tylko reprezentacja binarna. Niektóre programy Spectrum wykorzystywały to do zaciemniania liczb, podczas gdy inne robiły to, aby oszczędzać pamięć. Na przykład wiersz BASIC wyświetlany jako GO TO 10
może zawierać znaki ASCII dla cyfr 1 i 0, po których następuje bajt 0x0E i zmiennoprzecinkowa reprezentacja 100 zamiast 10. Każdy, kto wyświetla ten program, widział liczbę 10, ale po uruchomieniu program przeskoczył do linii 100.
Niezdefiniowane kody
Zakresy 0x00–0x05, 0x07, 0x0A–0x0C, 0x0F i 0x17–0x1F są niezdefiniowane. W większości przypadków po wydrukowaniu na wyświetlaczu pojawią się znak zapytania. Jednak mogą być używane do reprezentowania ich dosłownych wartości liczbowych w połączeniu z pewnymi kodami kontrolnymi: na przykład 0x10 + 0x07 ustawia kolor atramentu (tekst pierwszego planu) na kolor numer 7 (biały).
Zestaw znaków
Zestaw znaków widma | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0_ naciśnięcie klawisza | 0_ znak | 1_ | 2_ | 3_ | 4_ | 5_ | 6_ | 7_ | 8_ | 9_ | ZA_ | B_ | DO_ | RE_ | MI_ | FA_ | |
_0 | ATRAMENT | 0 | @ | P | £ | p | (ZA) | (P) | VAL | USR | FORMAT | LPRINT | LISTA | ||||
_1 | PAPIER | ! | 1 | ZA | Q | za | q | (B) | (R) | LEN | STR$ | RUSZAJ SIĘ | LISTA | POZWOLIĆ | |||
_2 | LAMPA BŁYSKOWA | " | 2 | b | R | b | r | (DO) | (S) | GRZECH | CHR$ | WYMAZAĆ | ZATRZYMAĆ | PAUZA | |||
_3 | JASNY | # | 3 | do | S | do | s | (RE) | (T) | SAŁATA | NIE | OTWARTY # | CZYTAĆ | KOLEJNY | |||
_4 | prawdziwe wideo | ODWROTNOŚĆ | $ | 4 | re | T | re | t | (MI) | (U) | DĘBNIK | KOSZ | BLISKO # | DANE | SZTURCHAĆ | ||
_5 | inv wideo | NAD | % | 5 | mi | U | mi | ty | (FA) | RND | ASN | LUB | ŁĄCZYĆ | PRZYWRACAĆ | WYDRUKOWAĆ | ||
_6 | duże litery | przecinek | W | & | 6 | fa | V | fa | v | (SOL) | INKEY$ | ACS | I | ZWERYFIKOWAĆ | NOWY | WĄTEK | |
_7 | edytować | PATKA | ' | 7 | sol | W | sol | w | (H) | Liczba Pi | ATN | <= | BRZĘCZYK | GRANICA | BIEGAĆ | ||
_8 | lewo | lewo | ( | 8 | H | X | h | x | (JA) | FN | LN | >= | OKRĄG | KONTYNTYNUJ | ZAPISAĆ | ||
_9 | dobrze | dobrze | ) | 9 | ja | Tak | ja | tak | (JOT) | PUNKT | EXP | <> | ATRAMENT | CIEMNY | RANDOMIZUJ | ||
_ZA | na dół | * | : | jot | Z | jot | z | (K) | EKRAN$ | WEWN | LINIA | PAPIER | REM | GDYBY | |||
_B | w górę | + | ; | K | [ | k | { | (L) | ATTR | SQR | NASTĘPNIE | LAMPA BŁYSKOWA | DLA | CLS | |||
_DO | kasować | , | < | L | \ | ja | | | (M) | W | SGN | DO | JASNY | IŚĆ DO | REMIS | |||
_RE | wchodzić | wchodzić | - | = | M | ] | mi | } | (N) | PATKA | ABS | KROK | ODWROTNOŚĆ | PRZEJDŹ NA SUB | JASNY | ||
_MI | poszerzać | numer | . | > | N | ↑ | nie | ~ | (O) | VAL$ | ZERKAĆ | DEF FN | NAD | WEJŚCIE | POWRÓT | ||
_FA | grafika | / | ? | O | _ | o | © | (P) | KOD | W | KOT | NA ZEWNĄTRZ | ZAŁADUJ | KOPIUJ |
Zobacz też
Uwagi
Bibliografia
Linki zewnętrzne
- Sinclair Spectrum+ 48K zestaw znaków ze strony Michaela Zaretskiego
- Tabela mapowania z zestawu znaków Sinclair Spectrum+ 48K na Unicode Z tej samej strony
- Pakiet zmiennoprzecinkowy