Zestaw znaków ZX Spectrum - ZX Spectrum character set

Zestaw znaków ZX Spectrum renderowany czcionką systemową (bez znaków grafiki zdefiniowanej przez użytkownika).

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 DELsą zastępowane przez ↑, £ i ©. Różni się również w użyciu kodów kontrolnych C0 innych niż wspólny BSi 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

Zrzut ekranu programu Sinclair BASIC , który demonstruje wszystkie możliwe do wydrukowania punkty kodowe, w tym słowa kluczowe BASIC i znaki graficzne zdefiniowane przez użytkownika (domyślnie zdefiniowane jako kopie AU).

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 SPECTRUMi 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 PRINTdo 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 PRINTna 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 PRINTzestawieniach, ale nie zmienia żadnych znaków UDG już narysowanych na ekranie. Położenie definicji znaku UDG można określić funkcją BASIC USRze 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 BSi CRkodowe 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 10moż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 ZXSpectrum80.svg (ZA) (P) VAL USR FORMAT LPRINT LISTA
_1 PAPIER ! 1 ZA Q za q ZXSpectrum81.svg (B) (R) LEN STR$ RUSZAJ SIĘ LISTA POZWOLIĆ
_2 LAMPA BŁYSKOWA " 2 b R b r ZXSpectrum82.svg (DO) (S) GRZECH CHR$ WYMAZAĆ ZATRZYMAĆ PAUZA
_3 JASNY # 3 do S do s ZXSpectrum83.svg (RE) (T) SAŁATA NIE OTWARTY # CZYTAĆ KOLEJNY
_4 prawdziwe wideo ODWROTNOŚĆ $ 4 re T re t ZXSpectrum84.svg (MI) (U) DĘBNIK KOSZ BLISKO # DANE SZTURCHAĆ
_5 inv wideo NAD % 5 mi U mi ty ZXSpectrum85.svg (FA) RND ASN LUB ŁĄCZYĆ PRZYWRACAĆ WYDRUKOWAĆ
_6 duże litery przecinek W & 6 fa V fa v ZXSpectrum86.svg (SOL) INKEY$ ACS I ZWERYFIKOWAĆ NOWY WĄTEK
_7 edytować PATKA ' 7 sol W sol w ZXSpectrum87.svg (H) Liczba Pi ATN <= BRZĘCZYK GRANICA BIEGAĆ
_8 lewo lewo ( 8 H X h x ZXSpectrum88.svg (JA) FN LN >= OKRĄG KONTYNTYNUJ ZAPISAĆ
_9 dobrze dobrze ) 9 ja Tak ja tak ZXSpectrum89.svg (JOT) PUNKT EXP <> ATRAMENT CIEMNY RANDOMIZUJ
_ZA na dół * : jot Z jot z ZXSpectrum8a.svg (K) EKRAN$ WEWN LINIA PAPIER REM GDYBY
_B w górę + ; K [ k { ZXSpectrum8b.svg (L) ATTR SQR NASTĘPNIE LAMPA BŁYSKOWA DLA CLS
_DO kasować , < L \ ja | ZXSpectrum8c.svg (M) W SGN DO JASNY IŚĆ DO REMIS
_RE wchodzić wchodzić - = M ] mi } ZXSpectrum8d.svg (N) PATKA ABS KROK ODWROTNOŚĆ PRZEJDŹ NA SUB JASNY
_MI poszerzać numer . > N nie ~ ZXSpectrum8e.svg (O) VAL$ ZERKAĆ DEF FN NAD WEJŚCIE POWRÓT
_FA grafika / ? O _ o © ZXSpectrum8f.svg (P) KOD W KOT NA ZEWNĄTRZ ZAŁADUJ KOPIUJ

Zobacz też

Uwagi

Bibliografia

Linki zewnętrzne