ZX -Spektrum -Zeichensatz

Das ZX-Spektrum-Zeichen, das in der System-Schriftart (ohne benutzerdefinierte Grafikzeichen) eingestellt ist.

Das ZX -Spektrum -Zeichensatz ist die Variante von ASCII in den Briten verwendet Sinclair ZX -Spektrum Familiencomputer. Es basiert auf ASCII-1967 aber die Charaktere ^, `und Del werden durch ↑, £ und © ersetzt. Es unterscheidet sich auch in der Verwendung der C0 -Steuercodes Anders als die gemeinsamen BS und Crund es nutzt die 128 High-Bit-Zeichen jenseits des ASCII-Bereichs.[1] Das Hauptsatz von druckbaren Zeichen und Systemschrift des ZX Spectrums wird auch von der verwendet Jupiter Ace Computer.

Druckbare Zeichen

Screenshot von a Sinclair grundlegend Programm, das alle druckbaren Codepunkte einschließlich grundlegender Schlüsselwörter und der benutzerdefinierten Grafikzeichen (standardmäßig als Kopien von A-U) demonstriert.

Standard US-ASCII, 0x20–0x7f, ist im Spektrum-Zeichensatz enthalten, außer dass der Codepunkt 0x5e ein ist Aufwärtspfeil (↑) statt a Pflege (^), 0x60 ist das Pfund-Zeichen (£) statt der Gravis (`) und 0x7f ist das Urheberrechtszeichen (©) statt der Steuerzeichen Del. Beachten Sie, dass die Verwendung von 0x5e als ↑ auch in der älteren Version von ASCII von 1963 der Fall war. Das £ Zeichen wurde nicht wie in der britischen Variante von ASCII auf 0x23 abgebildet (ISO-646-GB), um sowohl das Pfundzeichen als auch das zuzulassen Nummernschild (#) gleichzeitig. Der ↑ Charakter ist der Exponentiation Bediener in Spectrums grundlegendGenau wie das ^ ersetzt es im Vergleich zu ASCII-1967 zur Exponentiation in vielen anderen Dialekten grundlegender und anderer Programmiersprachen.

Über 0x7f hinaus verwendet der Spektrum-Zeichensatz den Hochbit-Bereich 0x80–0xff für spezielle Zwecke. 0x80–0x8f enthalten das gleiche 2 × 2 Grafik blockieren Charaktere, die die ZX80 -Zeichensatz und die ZX81 -Zeichensatz haben (an anderen Orten), ebenfalls in der erhältlich Blockelemente Unicode -Block. Der Standardzeichen des ZX -Spektrums enthält jedoch nicht die ZX80/81 50% Dithered 1 × 2 Blockgrafikzeichen. Die Codepunkte 0x90–0xa4 enthalten die ursprünglich 21 benutzerdefinierten Grafikmodells (UDG), und 0xa5–0xff enthält grundlegende Schlüsselwörter, die als Einzelcodepunkte tokenisiert sind. Im später eingeführten 128 -Basismodus wurde dies in 19 UDG -Zeichen geändert, die bei 0xa2 enden, gefolgt von den beiden neuen Token SPEKTRUM und ABSPIELEN. Codepunkte 0xC7–0xc9 sind die Zwei-Charakter-Operatoren <=, > = und <>, ähnlich tokenisiert in Einzelcodepunkte. Diese Token ermöglichen einen grundlegenden Befehl wie DRUCKEN mit dem einzelnen Schlüsselpress eingegeben werden P Zu Beginn einer Zeile (d. H. Im Befehlsmodus), der 0xf6 generierte. Das wird als volles Schlüsselwort angezeigt DRUCKEN Auf dem Bildschirm wird jedoch nur ein einzelnes Byte -Token gespeichert, so dass nur das einzelne Byte vom Dolmetscher analysiert oder in externen Speicher wie Klebeband auf/geladen wird.

Alle nicht-udg-Spektrumzeichen können auf die Kartierung von Kartierungen Unicode. Die drei Non-ASCII-1967-Zeichen ↑, £ und © sind bei U+2191, U+00A3 und U+00A9. Die 2 × 2 Blockgrafikzeichen sind in der Blockelemente Blockieren Sie bei U+2580–U+259F, obwohl die Schriftart für letztere nicht universell ist.

Die Form der UDG -Zeichen wird a zugeordnet RAM Speicherbereich und wird in Kopien der Zeichen A-U initialisiert, kann jedoch beispielsweise mit dem Basisbefehl willkürlich neu definiert werden SACK. Wie bei allen Zeichen in der Systemschrift verwenden sie ein 8 × 8 -Pixel -Gitter, das in 8 Bytes gespeichert ist. Die Neudefinition von ihnen verändert ihr Aussehen in der Nachfolgend DRUCKEN Aussagen, aber es ändert keine UDG -Zeichen, die bereits auf dem Bildschirm gezeichnet sind. Die Position der Definition eines UDG -Zeichens kann mit der Grundfunktion bestimmt werden USR mit dem Charakter als Argument, z. Usr "a" für den ersten. Standardmäßig zeigt dies auf die letzten 168 (21 × 8) Bytes von RAM bei Speicheradressen 65368 (0xff58) bis 65535 (0xffff) für ein 48K -Spektrum. Der Standort wird durch die Systemvariable UDG verweist[2] Dies ist unter Speicheradresse 23675/6 (0x5c7b/c) zu finden und kann geändert werden. Das Tk90xEin brasilianischer Klon des ZX -Spektrums enthielt eine In -ROM -Anwendung, um diese UDG -Zeichen grafisch zu bearbeiten, zusammen mit der Funktionalität zum Vorlasten und dann mit akzentuierten Buchstaben in Portugiesisch. (Dazu definierten der TK90X zwei zusätzliche Grundbefehle in den Codes 0 bzw. 1 "Trace" und "UDG")[3]

Die Definition der Hauptsystem -Schriftart 32 (Raum) bis 127 (Urheberrecht) wird durch die Systemvariablen -Chars der Systemvariablen verwiesen, auf die unter Speicheradresse 23606/7 (0x5c36/7) gefunden werden kann. Es ist definiert als 256 Bytes, die niedriger als das erste Byte des WeltraumcharaktersCodepunkt. Der Chars -Wert stellt den Wert 15360 (0x3c00) aus, wobei die Systemschrift am Ende des ROM des Spektrums unter der Adresse 15616 (0x3d00) bis 16383 (0x3fff). Ganze alternative Schriftarten können in den RAM geladen und die Chars-Variablen entsprechend neu punktiert werden.[2]

Kontrollcodes

Im Bereich der Steuercodes (C0 -Bereich) verwendet das Spektrum hauptsächlich proprietäre Kontrollen wie Tinte und Papier, um den Vordergrund und die Hintergrundfarbe zu steuern. Allerdings das gemeinsame BS und Cr Codepunkte sind die gleichen wie in ASCII. Der Cursor-Down (0x0a, ASCII-Linien-Feed) kann mit 32 Leeren simuliert werden, die mit über 1 (transparenter Überdruck) gedruckt sind und der Cursor-up 0x0b (vertikale Tabellierung) mit 32 Backpacen simuliert werden kann. Das System-ROM hat einen Fehler, der Cursor-Rechts bei 0x09 (C.F. ASCII-Horizontal-Tabellierung) verhindert.[4][5]

Der Kontrollcode 0x0e wird verwendet, um anzuzeigen, dass eine Gleitkomma-Nummer folgt, um die Textverarbeitung zu beschleunigen. In einem Sinclair grundlegend Programm numerische Konstanten werden als ASCII gespeichert, gefolgt von einem 0x0e-Byte und einer 5-Byte-binären schwimmenden Punktdarstellung. Bei der Auflistung eines grundlegenden Programms wird nur der ASCII -Teil verwendet, aber zur Laufzeit wird nur die binäre Darstellung verwendet. Einige Spektrumprogramme nutzten dies, um Zahlen zu verschleiern, während andere dies taten, um den Speicher zu speichern.[6] Zum Beispiel eine grundlegende Linie als als Gehen Sie zu 10 Könnte die ASCII-Zeichen für Ziffern 1 und 0 enthalten, gefolgt von einem 0x0e-Byte und der schwimmenden Punktdarstellung von 100 anstelle von 10. Jeder, der dieses Programm auflistet, sah die Nummer 10, aber als er hingerichtet hatte, sprang das Programm auf Zeile 100.

Undefinierte Codes

Ranges 0x00–0x05, 0x07, 0x0a - 0x0c, 0x0f und 0x17–0x1f sind undefiniert. In den meisten Fällen werden sie ein Fragezeichen erstellen, wenn sie auf das Display gedruckt werden. Sie können jedoch verwendet werden, um ihre wörtlichen numerischen Werte in Verbindung mit bestimmten Kontrollcodes darzustellen: Beispielsweise setzt 0x10 + 0x07 die Farbe (Vordergrundtext) auf Farbnummer 7 (weiß).

Zeichensatz

Spektrum -Zeichensatz[1]
0_ Schlüsselpress 0_ Zeichen 1_ 2_ 3_ 4_ 5_ 6_ 7_ 8_ 9_ EIN_ B_ C_ D_ E_ F_
_0 TINTE   0 @ P £[a] p ZXSpectrum80.svg (EIN)[b] (Q)[b] Val USR FORMAT Lprint AUFFÜHREN
_1 PAPIER ! 1 A Q a q ZXSpectrum81.svg (B)[b] (R)[b] Len Str $ BEWEGUNG Liste LASSEN
_2 BLITZ " 2 B R b r ZXSpectrum82.svg (C)[b] (S)[b] SÜNDE Chr $ LÖSCHEN PAUSE PAUSE
_3 HELL # 3 C S c s ZXSpectrum83.svg (D)[b] (T)[c] Cos NICHT OFFEN # LESEN NÄCHSTE
_4 Wahres Video Umgekehrt $ 4 D T d t ZXSpectrum84.svg (E)[b] (U)[d] BRÄUNEN BEHÄLTER NAH DRAN # DATEN SACK
_5 Inv Video ÜBER % 5 E U e u ZXSpectrum85.svg (F)[b] RND Asn ODER VERSCHMELZEN WIEDERHERSTELLEN DRUCKEN
_6 Caps Lock Komma BEI & 6 F V f v ZXSpectrum86.svg (G)[b] Inkey $ ACS UND VERIFIZIEREN NEU HANDLUNG
_7 bearbeiten TAB ' 7 G W g w ZXSpectrum87.svg (H)[b] PI Atn <= SIGNALTON GRENZE LAUF
_8 links links[e] ( 8 H X h x ZXSpectrum88.svg (ICH)[b] Fn Ln > = KREIS FORTSETZEN SPAREN
_9 Rechts Rechts[f] ) 9 I Y i y ZXSpectrum89.svg (J)[b] PUNKT Exp <> TINTE Schwach Randomisieren
_EIN Nieder * : J Z j z ZXSpectrum8a.svg (K)[b] Bildschirm $ Int LINIE PAPIER Rem WENN
_B hoch + ; K [ k { ZXSpectrum8b.svg (L)[b] Attr Sqr DANN BLITZ ZUM Cls
_C löschen , < L \ l | ZXSpectrum8c.svg (M)[b] BEI Sgn ZU HELL GEHE ZU ZEICHNEN
_D Eintreten Eintreten - = M ] m } ZXSpectrum8d.svg (N)[b] TAB Abs SCHRITT Umgekehrt Go sub KLAR
_E erweitern Nummer[g] . > N [a] n ~ ZXSpectrum8e.svg (Ö)[b] Val $ SPÄHEN Def fn ÜBER EINGANG RÜCKKEHR
_F Grafik / ? O _ o ©[a] ZXSpectrum8f.svg (P)[b] CODE IN KATZE AUS BELASTUNG KOPIEREN

Siehe auch

Anmerkungen

  1. ^ a b c Anders als US-Ascii.
  2. ^ a b c d e f g h i j k l m n o p q r s UDG (Benutzerdefinierte Grafik) Zeichen.
  3. ^ UDG T in 48 Basic, Schlüsselwort SPEKTRUM in 128 Basic.
  4. ^ Udg u in 48 Basic, Schlüsselwort ABSPIELEN in 128 Basic.
  5. ^ Im Standard -ROM Chr $ 8 Fehlschlägt die Unterstützung von Zeile 1 zu Zeile Null und fällt in unterschiedlicher Weise zurück, um die Off -Zeile Null zu unterstützen.
  6. ^ Im Standard -ROM Chr $ 9 verschiebt die Textausgabeposition nicht.
  7. ^ Wird in Basisprogrammen als Marker verwendet, das eine 5-Byte-Schwimmpunktzahl vorangestellt.

Verweise

  1. ^ a b ZX Spectrum Manual, Anhang A, der Zeichensatz
  2. ^ a b ZX Spectrum Manual, Kapitel 25, Systemvariablen
  3. ^ "Los comandos exclusivos de la tk 90x".
  4. ^ Logan, Ian (1983). Ihr Spektrum verstehen. Melbourne House. p. 189. ISBN 086161111x.
  5. ^ Wearmouth, Geoff. "Eine Auflistung der Assemblerdatei, um ein 16K -ROM für das ZX -Spektrum zu generieren". Archiviert von das Original am 25. August 2015.
  6. ^ Swann, Richard P. "Teil 4 entschlüsselt". Wie man im ZX -Spektrum hackt.

Externe Links