ZX -Spektrum -Zeichensatz
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 Cr
und 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
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 | (EIN)[b] | (Q)[b] | Val | USR | FORMAT | Lprint | AUFFÜHREN | ||||
_1 | PAPIER | ! | 1 | A | Q | a | q | (B)[b] | (R)[b] | Len | Str $ | BEWEGUNG | Liste | LASSEN | |||
_2 | BLITZ | " | 2 | B | R | b | r | (C)[b] | (S)[b] | SÜNDE | Chr $ | LÖSCHEN | PAUSE | PAUSE | |||
_3 | HELL | # | 3 | C | S | c | s | (D)[b] | (T)[c] | Cos | NICHT | OFFEN # | LESEN | NÄCHSTE | |||
_4 | Wahres Video | Umgekehrt | $ | 4 | D | T | d | t | (E)[b] | (U)[d] | BRÄUNEN | BEHÄLTER | NAH DRAN # | DATEN | SACK | ||
_5 | Inv Video | ÜBER | % | 5 | E | U | e | u | (F)[b] | RND | Asn | ODER | VERSCHMELZEN | WIEDERHERSTELLEN | |||
_6 | Caps Lock | Komma | BEI | & | 6 | F | V | f | v | (G)[b] | Inkey $ | ACS | UND | VERIFIZIEREN | NEU | HANDLUNG | |
_7 | bearbeiten | TAB | ' | 7 | G | W | g | w | (H)[b] | PI | Atn | <= | SIGNALTON | GRENZE | LAUF | ||
_8 | links | links[e] | ( | 8 | H | X | h | x | (ICH)[b] | Fn | Ln | > = | KREIS | FORTSETZEN | SPAREN | ||
_9 | Rechts | Rechts[f] | ) | 9 | I | Y | i | y | (J)[b] | PUNKT | Exp | <> | TINTE | Schwach | Randomisieren | ||
_EIN | Nieder | * | : | J | Z | j | z | (K)[b] | Bildschirm $ | Int | LINIE | PAPIER | Rem | WENN | |||
_B | hoch | + | ; | K | [ | k | { | (L)[b] | Attr | Sqr | DANN | BLITZ | ZUM | Cls | |||
_C | löschen | , | < | L | \ | l | | | (M)[b] | BEI | Sgn | ZU | HELL | GEHE ZU | ZEICHNEN | |||
_D | Eintreten | Eintreten | - | = | M | ] | m | } | (N)[b] | TAB | Abs | SCHRITT | Umgekehrt | Go sub | KLAR | ||
_E | erweitern | Nummer[g] | . | > | N | ↑[a] | n | ~ | (Ö)[b] | Val $ | SPÄHEN | Def fn | ÜBER | EINGANG | RÜCKKEHR | ||
_F | Grafik | / | ? | O | _ | o | ©[a] | (P)[b] | CODE | IN | KATZE | AUS | BELASTUNG | KOPIEREN |
Siehe auch
Anmerkungen
- ^ a b c Anders als US-Ascii.
- ^ a b c d e f g h i j k l m n o p q r s UDG (Benutzerdefinierte Grafik) Zeichen.
- ^ UDG T in 48 Basic, Schlüsselwort SPEKTRUM in 128 Basic.
- ^ Udg u in 48 Basic, Schlüsselwort ABSPIELEN in 128 Basic.
- ^ 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. - ^ Im Standard -ROM
Chr $ 9
verschiebt die Textausgabeposition nicht. - ^ Wird in Basisprogrammen als Marker verwendet, das eine 5-Byte-Schwimmpunktzahl vorangestellt.
Verweise
- ^ a b ZX Spectrum Manual, Anhang A, der Zeichensatz
- ^ a b ZX Spectrum Manual, Kapitel 25, Systemvariablen
- ^ "Los comandos exclusivos de la tk 90x".
- ^ Logan, Ian (1983). Ihr Spektrum verstehen. Melbourne House. p. 189. ISBN 086161111x.
- ^ 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.
- ^ Swann, Richard P. "Teil 4 entschlüsselt". Wie man im ZX -Spektrum hackt.
Externe Links
- Sinclair -Spektrum+ 48K Zeichensatz Von der Website von Michael Zaretskis Website
- Mapping -Tabelle vom Sinclair -Spektrum+ 48K -Zeichen auf Unicode eingestellt Von derselben Seite
- Das schwimmende Punktpaket