TEXT VDUDie Textausgabe-Routinen BB4E: TXT INITIALISEInitialisiere Die Abteilungen des Betriebssystems: Die Text-VDUdie Text-VDU. Eingaben: keine Ausgaben: keine Unverändert: IX,IY Komplette Initialisierung der Text-VDU. Betroffen sind: - Die Sprungleisten: die IndirectionsDie Indirections der Text-VDU - Die Controlcode-Funktionstabelle - Die Text-VDU: Zeichensatz alle Streams werden normal eingestellt: - PAPER 0, PEN 1 - Window = ganzer Screen - Erklärung zu den verwendeten Bezeichnungen: CursorCursor = enabled & off - Die Grafik-VDU: Hintergrund-ModusHintergrund-Modus opaque (deckend) - VDU enabled (CHR$(6)) - TAGOFF - LOCATE 1,1. BB51: TXT RESETSetze Die Abteilungen des Betriebssystems: Die Text-VDUdie Text-VDU zurück. Eingaben: keine Ausgaben: keine Unverändert: IX,IY Kleine Initialisierung der Text-VDU. Betroffen sind: - Die Sprungleisten: die IndirectionsDie Indirections der Text-VDU
- Die Controlcode-Funktionstabelle
BB54: TXT VDU ENABLEErlaube, dass Zeichen im aktiven Die Text-VDU: FensterFenster ausgegeben werden. Eingaben: keine Ausgaben: keine Unverändert: BC,DE,HL,IX,IY Das Ausdrucken der Zeichen im aktuellen Die Text-VDU: FensterFenster wird wieder zugelassen. Die Text-VDU: Der CursorDer Cursor aktiviert (enabled). Der Controlcode-Puffer wird geleert. Wirkt auf TEXT VDU: BB5A: TXT OUTPUTTXT OUTPUT und TEXT VDU: BB5D: TXT WR CHARTXT WR CHAR. BB57: TXT VDU DISABLEVerbiete die Ausgabe von Zeichen im aktiven Die Text-VDU: FensterFenster. Eingaben: keine Ausgaben: keine Unverändert: BC,DE,HL,IX,IY Das Ausdrucken der Zeichen im aktuellen Die Text-VDU: FensterFenster wird verboten. Die Text-VDU: Der CursorDer Cursor wird abgeschaltet (disabled). Der Controlcode-Puffer wird geleert. Garbage Collection: ... beim CPC 464Beim CPC 464 werden Controlcodes aber weiterhin befolgt und Die Text-VDU: Der Cursorder Cursor auch weiterhin mit jedem Zeichen nach rechts bewegt. Für den CPC 664 und 6128 tritt jedoch eine wichtige Änderung ein, was die Befolgung der Controlcodes betrifft. Siehe dazu &TEXT VDU: BBB1: TXT GET CONTROLSBBB1 TXT GET CONTROLS. Dieser Vektor wirkt auf &TEXT VDU: BB5A: TXT OUTPUTBB5A TXT OUTPUT und &TEXT VDU: BB5D: TXT WR CHARBB5D TXT WR CHAR. BB5A: TXT OUTPUTDrucke ein Zeichen oder befolge den Control-Code Eingaben: Operationen: BD5B / 349A / 349A: FLO SUBA = Zeichen, Controlcode oder dessen Basic und Maschinencode: ParameterParameter Ausgaben: keine Unverändert: alle Die Tonausgabe: Das Kontrollregister (Reg. 7) Wartet ein vorher ausgegebener Controlcode noch auf einen Basic und Maschinencode: ParameterParameter, wird Operationen: BD5B / 349A / 349A: FLO SUBA als Basic und Maschinencode: ParameterParameter behandelt. Sonst wird das Zeichen über IND TEXT VDU: BB5D: TXT WR CHARTXT WR CHAR gedruckt (Operationen: BD5B / 349A / 349A: FLO SUBA ≥ 32) oder selbst als Controlcode interpretiert (Operationen: BD5B / 349A / 349A: FLO SUBA < 32). Wenn der Textstream nicht aktiviert, also disabled ist wird das Zeichen nicht gedruckt. Controlcodes werden Garbage Collection: ... beim CPC 464beim CPC 464 aber trotzdem befolgt. Die Änderungen hierbei für die CPCs 664 und 6128 sind bei &TEXT VDU: BBB1: TXT GET CONTROLSBBB1 TXT GET CONTROLS beschrieben. Ist der Grafikmodus (TAG) eingeschaltet, werden alle Zeichen (0 bis 255) über GRAPHICS VDU: BBFC: GRA WR CHARGRA WR CHAR ausgedruckt. BB5D: TXT WR CHARDrucke ein Zeichen. Control-Codes erzeugen Sonderzeichen. Eingaben: Operationen: BD5B / 349A / 349A: FLO SUBA = Zeichen
Ausgaben: keine
Unverändert: IX,IY
Drucke das Zeichen Operationen: BD5B / 349A / 349A: FLO SUBA im momentan aktiven Textfenster aus. Benutzt wird dazu Die Indirections der Firmware-Packs: BDD3: IND TXT WRITE CHARIND TXT WRITE CHAR. Das Zeichen wird nicht ausgedruckt, wenn das aktuelle Die Text-VDU: FensterFenster nicht aktiviert (disabled) ist. BB60: TXT RD CHARVersuche, ein Zeichen vom Bildschirm zu lesen. Eingaben: keine
Ausgaben: CY=1 -> Operationen: BD5B / 349A / 349A: FLO SUBA=Zeichen sonst CY=0 -> nicht identifizierbar
Unverändert: BC,DE,HL,IX,IY
Die Abteilungen des Betriebssystems: Die Text-VDUDie Text-VDU versucht, die Grafikinformation im Bildschirm auf der Cursorposition des aktuellen Textfensters in einen Zeichencode zurückzuverwandeln. Dazu wird Die Indirections der Firmware-Packs: BDD6: IND TXT UNWRITEIND TXT UNWRITE benutzt. Die Text-VDU: Der CursorDer Cursor muss Garbage Collection: ... beim CPC 464beim CPC 464 vorher in das Textfenster zurückgezwungen werden (siehe TEXT VDU: BB87: TXT VALIDATETXT VALIDATE), sonst werden eventuell Zeichen von außerhalb des Fensters gelesen. Garbage Collection: ... beim CPC 464Beim CPC 664 oder 6128 erfolgt das automatisch und kann dazu führen, dass das Textfenster gescrollt wird. BB63: TXT SET GRAPHICBestimme, ob der Text im laufenden Die Text-VDU: FensterFenster auf Die Text-VDU: Der Cursorder Cursor- oder Grafik-Position ausgegeben werden soll. Eingaben: Operationen: BD5B / 349A / 349A: FLO SUBA = Schaltflag
Ausgaben: keine
Unverändert: BC,DE,HL,IX,IY
Ist Operationen: BD5B / 349A / 349A: FLO SUBA=0 wird der Text auf der Cursorposition ausgegeben (TAGOFF). Ist A>0 wird der Text auf der Position des Grafikcursors ausgegeben (TAG). Betroffen hiervon ist nur TEXT VDU: BB5A: TXT OUTPUTTXT OUTPUT. Ist der Grafik-Schreibmodus akiviert (TAG), so werden Controlcodes nicht befolgt, sondern als Sonderzeichen gedruckt. Außerdem ist das Ausschalten der Text-VDU (TEXT VDU: BB57: TXT VDU DISABLETXT VDU DISABLE) unwirksam, die Zeichen werden trotzdem ausgegeben. BB66: TXT WIN ENABLELege die Grenzen des aktuellen Textfensters fest. Eingaben: H und D = linke und rechte Spalte
L und LOW KERNEL JUMPBLOCK: 000E: LOW PCBC INSTRUCTION
Die angegebenen Zeilen- und Spaltengrenzen werden automatisch nach ihrer Größe sortiert und entsprechend dem Bildschirm-Modus auf die maximal möglichen Werte reduziert. Bezugspunkt ist die linke, obere Ecke mit den Koordinaten (0,0). Angegeben werden jeweils die inneren Grenzen des Fensters wie beim WINDOW-Kommando in Einleitung: BASIC BB69: TXT GET WINDOWErfrage die Grenzen des aktuellen Textfensters. Eingaben: keine Ausgaben: H und D enthalten die linke und rechte Spalte, L und LOW KERNEL JUMPBLOCK: 000E: LOW PCBC INSTRUCTION Angegeben werden die inneren Fenstergrenzen, Bezugspunkt ist die linke, obere Ecke mit den Koordinaten (0,0). BB6C: TXT CLEAR WINDOWLösche die Anzeige im aktuellen Textfenster. Eingaben: keine Ausgaben: keine Unverändert: IX,IY Das aktuelle Textfenster wird mit dessen Paper-INK gelöscht. Die Text-VDU: Der CursorDer Cursor wird in die linke, obere Ecke gesetzt. BB6F: TXT SET COLUMNBewege Die Text-VDU: Der Cursorden Cursor des aktuellen Textfensters in die angegebene Spalte. Eingaben: Operationen: BD5B / 349A / 349A: FLO SUBA = neue Cursor-Spalte
Ausgaben: keine
Unverändert: BC,DE,IX,IY
Bezugspunkt ist die linke Spalte des aktuellen Textfensters mit der Spaltennummer 1. Als neue X-Koordinate Die Text-VDU: Der Cursordes Cursors kann auch ein Wert außerhalb des Fensters angegeben werden. Vor Ausgabe eines Zeichens oder Die Text-VDU: Der Cursordes Cursors wird er automatisch in das Die Text-VDU: FensterFenster zurückgezwungen (siehe TEXT VDU: BB87: TXT VALIDATETXT VALIDATE). BB72: TXT SET ROWBewege Die Text-VDU: Der Cursorden Cursor des aktuellen Textfensters in die angegebene Zeile. Eingaben: Operationen: BD5B / 349A / 349A: FLO SUBA = neue Cursor-Zeile
Ausgaben: keine
Unverändert: BC,DE,IX,IY
Bezugspunkt ist die oberste Zeile des aktuellen Textfensters mit der Zeilennummer 1. Die neue Y-Koordinate Die Text-VDU: Der Cursordes Cursors kann auch außerhalb des Textfensters liegen. Vor Ausgabe eines Zeichens oder Die Text-VDU: Der Cursordes Cursors wird er automatisch ins Die Text-VDU: FensterFenster zurückgezwungen (siehe TEXT VDU: BB87: TXT VALIDATETXT VALIDATE). BB75: TXT SET CURSORLege Zeile und Spalte Die Text-VDU: Der Cursordes Cursors neu fest. Eingaben: H = neue Spalte
L = neue Zeile Die Text-VDU: Der Cursordes Cursors
Ausgaben: keine
Unverändert: BC,DE,IX,IY
Bezugspunkt ist die obere, linke Ecke des aktuellen Textfensters mit der Koordinate (1,1). Die neuen Koordinaten Die Text-VDU: Der Cursordes Cursors konnen auch außerhalb des Textfensters liegen. Vor Ausgabe eines Zeichens oder Die Text-VDU: Der Cursordes Cursors wird er automatisch ins Die Text-VDU: FensterFenster zurückgezwungen (siehe TEXT VDU: BB87: TXT VALIDATETXT VALIDATE). BB78: TXT GET CURSORErfrage Zeile und Spalte Die Text-VDU: Der Cursordes Cursors. Eingaben: keine Ausgaben: H = Spalte und L = Zeile Die Text-VDU: Der Cursordes Cursors. Operationen: BD5B / 349A / 349A: FLO SUBA = Scrollzähler Unverändert: BC,DE,IX,IY Bezugspunkt ist die obere, linke Ecke des aktuellen Textfensters mit der Koordinate (1,1). Die angegebene Position muss nicht unbedingt im Textfenster liegen. Dann wird Die Text-VDU: Der Cursorder Cursor vor Ausgabe des nächsten Zeichens oder Die Text-VDU: Der Cursordes Cursors ins Textfenster zurückgezwungen (siehe TEXT VDU: BB87: TXT VALIDATETXT VALIDATE). Der Scrollzähler wird im Betriebssystem nicht weiter benutzt, ist aber ganz nützlich, wenn man feststellen will, ob das Die Text-VDU: FensterFenster seit einem früheren Zeitpunkt gescrollt wurde. Mit jedem Scroll nach oben wird der Zahler erniedrigt, mit jedem Scroll nach unten erhöht. BB7B: TXT CUR ENABLESchalte Erklärung zu den verwendeten Bezeichnungen: CursorCursor auf der Benutzer-Ebene ein. Eingaben: keine Ausgaben: keine Unverändert: BC,DE,HL,IX,IY Das Ein- und Ausschalten Die Text-VDU: Der Cursordes Cursors mittels TEXT VDU: BB7B: TXT CUR ENABLETXT CUR ENABLE und TEXT VDU: BB7E: TXT CUR DISABLETXT CUR DISABLE ist für das Anwenderprogramm vorgesehen. Die Text-VDU: Der CursorDer Cursor wird aber auch 'disabled', wenn TEXT VDU: BB57: TXT VDU DISABLETXT VDU DISABLE benutzt wird. Diese Die Fließkomma-Routinen: FunktionenFunktionen sind auch mit den Controlcodes 2 und 3 erreichbar. BB7E: TXT CUR DISABLESchalte Die Text-VDU: Der Cursorden Cursor auf der Benutzer-Ebene aus. Eingaben: keine Ausgaben: keine Unverändert: BC,DE,HL,IX,IY Siehe &TEXT VDU: BB7B: TXT CUR ENABLEBB7B TXT CUR ENABLE. BB81: TXT CUR ONSchalte Die Text-VDU: Der Cursorden Cursor auf der System-Ebene ein. Eingaben: keine
Ausgaben: keine
Unverändert: alle Die Tonausgabe: Das Kontrollregister (Reg. 7)
Das Ein- und Ausschalten Die Text-VDU: Der Cursordes Cursors mittels TEXT VDU: BB81: TXT CUR ONTXT CUR ON und TEXT VDU: BB84: TXT CUR OFFTXT CUR OFF ist für die 'tieferen Ebenen' vorgesehen, so zum Beispiel Betriebssystem, Die Basic-Vektoren: Editor BB84: TXT CUR OFFSchalte Die Text-VDU: Der Cursorden Cursor auf der System-Ebene aus. Eingaben: keine
Ausgaben: keine
Unverändert: alle Die Tonausgabe: Das Kontrollregister (Reg. 7)
Siehe &TEXT VDU: BB81: TXT CUR ONBB81 TXT CUR ON BB87: TXT VALIDATEÜberprüfe, ob sich eine Position innerhalb des Text-Fensters befindet. Eingaben: H = Spalte und L = Zeile der Prüfposition Ausgaben: H = Spalte und L = Zeile der ins Die Text-VDU: FensterFenster zurückgezwungenen Position CY=1 -> Das Textfenster würde dadurch nicht gescrollt CY=0 und LOW KERNEL JUMPBLOCK: 000B: LOW KL LOW PCHL Bezugspunkt der Koordinatenangaben ist die linke, obere Ecke mit den Koordinaten (1,1). Bevor ein Zeichen oder Die Text-VDU: Der Cursorder Cursor ausgegeben, und leider auch bevor ein Controlcode übernommen wird, überprüft (validates) Die Abteilungen des Betriebssystems: Die Text-VDUdie Text-VDU die momentane Cursorposition im aktuellen Textfensterund scrollt dieses wenn nötig. Danach liegt die Cursorposition dann sicher im Textfenster und das Zeichen kann ausgegeben werden. TEXT VDU: BB87: TXT VALIDATETXT VALIDATE selbst scrollt noch nicht! BB8A: TXT PLACE CURSORMale einen 'Cursor-Fleck' auf die Cursorposition. Eingaben: keine Ausgaben: keine Unverändert: BC,DE,HL,IX,IY Sollen in einem Programm mehrere Erklärung zu den verwendeten Bezeichnungen: CursorCursors in einem Textfenster bereitgestellt werden, können zusätzliche Cursorflecken mit TEXT VDU: BB8A: TXT PLACE CURSORTXT PLACE CURSOR und TEXT VDU: BB8D: TXT REMOVE CURSORTXT REMOVE CURSOR erzeugt und wieder entfernt werden. Die Kontrolle dieser Cursorflecken obliegt aber dem Anwenderprogramm! Beispiel für einen zusätzlichen Erklärung zu den verwendeten Bezeichnungen: CursorCursor ist der Copycursor des Zeileneditors. BB8D: TXT REMOVE CURSOREntferne einen 'Cursor-Fleck' von der Cursorposition. Eingaben: keine Ausgaben: keine Unverändert: BC,DE,HL,IX,IY siehe &TEXT VDU: BB8A: TXT PLACE CURSORBB8A TXT PLACE CURSOR. BB90: TXT SET PENLege die Stift-Tinte für die Buchstaben fest. Eingaben: Operationen: BD5B / 349A / 349A: FLO SUBA = Tintennummer (PEN-INK)
Ausgaben: keine
Unverändert: BC,DE,IX,IY
Die Vordergrund-Tinte für das aktuelle Textfenster wird mit Operationen: BD5B / 349A / 349A: FLO SUBA neu festgelegt. Mit dieser Die Bildausgabe: Tinten und FarbenTinte werden die Buchstaben selbst gezeichnet. Die Tintennummer wird automatisch mit 1, 3 oder 15 maskiert, um eine im aktuellen Bildschirm-Modus gültige Tintennummer zu erhalten. Außerdem wird Die Text-VDU: Der Cursorder Cursor an die neue Vordergrund-Tinte angepasst, wenn er im aktuellen Textfenster sichtbar ist. BB93: TXT GET PENErfrage die momentane Stift-Tinte. Eingaben: keine
Ausgaben: Operationen: BD5B / 349A / 349A: FLO SUBA = Vordergrund-Tinte (PEN-INK)
Unverändert: BC,DE,HL,IX,IY
Die Vordergrund-Tinte ist die INK, in der im aktuellen Textfenster die Buchstaben selbst gemalt werden. BB96: TXT SET PAPERLege die Hintergrund-Tinte für die Buchstaben fest. Eingaben: Operationen: BD5B / 349A / 349A: FLO SUBA = Hintergrund-Tinte (PAPER-INK)
Ausgaben: keine
Unverändert: BC,DE,IX,IY
Die Tintennummer wird mit 1, 3 oder 15 maskiert, um eine im momentanen Bildschirm-Modus gültige Tintennummer zu erhalten. Die Tintennummer gilt nur für das aktuelle Textfenster. Die Text-VDU: Der CursorDer Cursor wird automatisch an die neue PAPER-INK angepasst, wenn er sichtbar ist. Die Hintergrund-Tinte ist die INK, mit der das Buchstabenfeld um den eigentlichen Buchstaben herum gefüllt wird, wenn ein Zeichen gemalt wird. Außerdem werden mit dieser Die Grafik: Farben BB99: TXT GET PAPERErfrage die momentane Hintergrund-Tinte. Eingaben: keine
Ausgaben: Operationen: BD5B / 349A / 349A: FLO SUBA = Hintergrund-Tinte (PAPER-INK)
Unverändert: BC,DE,HL,IX,IY
Die Hintergrund-Tinte ist die INK, in der im aktuellen Textfenster das Buchstabenfeld um den eigentlichen Buchstaben herum gefüllt wird, wenn ein Zeichen gemalt wird. BB9C: TXT INVERSETausche die Papier- und Stift-Tinten für das momentan aktuelle Text-Fenster aus. Eingaben: keine Ausgaben: keine Unverändert: BC,DE,IX,IY Die Vordergrund- und Hintergrund-Tinte des aktuellen Textfensters werden vertauscht. Nur CPC 464: Die Text-VDU: Der CursorDer Cursor wird nicht an die neuen INKs angepasst, und sollte deshalb möglichst nicht sichtbar sein. Solange aber der 'Standard-Cursor' des CPC verwendet wird, d.h., solange Die Indirections der Firmware-Packs: BDCD: IND TXT DRAW CURSORIND TXT DRAW CURSOR und Die Indirections der Firmware-Packs: BDD0: IND TXT UNDRAW CURSORIND TXT UNDRAW CURSOR nicht gepatcht werden, kann man darauf verzichten, da dessen primitive Cursor-Zeichenroutine in beiden Fällen den gleichen Erklärung zu den verwendeten Bezeichnungen: CursorCursor liefert. Garbage Collection: ... beim CPC 664 und 6128Beim CPC 664 und 6128 wird der Cursorfleck aber vorher entfernt und nachher wieder neu gezeichnet. BB9F: TXT SET BACKLege fest, ob die Buchstaben im Transparent-Modus geschrieben werden sollen. Eingaben: Operationen: BD5B / 349A / 349A: FLO SUBA = Hintergrundflag
Ausgaben: keine
Unverändert: BC,DE,IX,IY
Mit Operationen: BD5B / 349A / 349A: FLO SUBA wird festgelegt, ob im aktuellen Textfenster der Hintergrund wie normal opaque, also deckend, oder ob der Hintergrund durchsichtig, also transparent sein soll. Operationen: BD5B / 349A / 349A: FLO SUBA=0 -> opaque: Beim Zeichnen eines Buchstabens wird der Hintergrund mit der PAPER-INK gelöscht. A>0 -> transparent: Beim Zeichnen der Buchstaben werden nur die Vordergrund-Punkte, also die Punkte des Buchstabens selbst gesetzt. Der Hintergrund bleibt unverändert, die alten Grafikinformationen des Bildschirms scheinen noch zwischen den Buchstaben durch. Hiervon wird nur die Textausgabe auf der Cursorposition beeinflusst. Bei der Ausgabe von Zeichen auf der Grafikposition (TAG) wird dieses Die Z80: Wirkung der Z80-Befehle auf die FlagsFlag ignoriert. Für CPC 664 und 6128 gibt es eine entsprechende Einstellung für die Grafik-Ausgabe. BBA2: TXT GET BACKErfrage, ob im aktuellen Textfenster der Transparent-Modus eingeschaltet ist. Eingaben: keine
Ausgaben: Operationen: BD5B / 349A / 349A: FLO SUBA = Hintergrundflag
Unverändert: BC,IX,IY
Siehe &TEXT VDU: BB9F: TXT SET BACKBB9F TXT SET BACK. BBA5: TXT GET MATRIXErfrage, an welcher Stelle die Grafik-Information über das Aussehen des angegebenen Buchstaben abgelegt ist. Eingaben: Operationen: BD5B / 349A / 349A: FLO SUBA = Zeichencode Ausgaben: HL zeigt auf Zeichensatz: die Zeichenmatrixdie Zeichenmatrix. CY=1 -> Die Matrix befindet sich im RAM. CY=0 -> Die Matrix ist im unveränderbaren Bereich im Erläuterung zu den Anschlüssen 40 bis 45: 42 - ROMEN (0)ROM. Unverändert: BC,DE,IX,IY Um ein Zeichen auf dem Bildschirm darzustellen, wird dessen Matrix in den Bildschirm übertragen. Die Matrix besteht aus 8 Datentypen: Bytes BBA8: TXT SET MATRIXBestimme das Aussehen eines Buchstaben neu. Eingaben: Operationen: BD5B / 349A / 349A: FLO SUBA = Zeichencode und
HL zeigt auf die neue Matrix
Ausgaben: CY=1 -> o.k.
Unverändert: IX,IY
Die Matrix für ein Zeichen ist 8 Datentypen: Bytes Die neue Matrix kann auch direkt aus einem oberen Erläuterung zu den Anschlüssen 40 bis 45: 42 - ROMEN (0)ROM gesetzt werden. Dazu muss das Erläuterung zu den Anschlüssen 40 bis 45: 42 - ROMEN (0)ROM nur eingeblendet sein. Da der im Vektor verwendete ROM-Konfiguration: RestartsRestart aber immer das obere Erläuterung zu den Anschlüssen 40 bis 45: 42 - ROMEN (0)ROM ausblendet, muss man sich die Adresse dann aus dem Vektor herausklauben und die Routine direkt anspringen. Siehe auch &TEXT VDU: BBA5: TXT GET MATRIXBBA5 TXT GET MATRIX. BBAB: TXT SET M TABLETeile der Text-VDU mit, in welchem Speicherbereich die selbst-definierbaren Zeichen-Matrizen abgelegt werden können. Eingaben: D = Die Z80: Wirkung der Z80-Befehle auf die FlagsFlag LOW KERNEL JUMPBLOCK: 000E: LOW PCBC INSTRUCTION Ist D>0 wird die alte Matrix-Tabelle im RAM vollständig gelöscht. Ist D=0 wird im RAM eine neue Tabelle entsprechend LOW KERNEL JUMPBLOCK: 000E: LOW PCBC INSTRUCTION In dieser Tabelle werden die redefinierbaren Zeichen in aufsteigender Reihenfolge bis zum Zeichen 255 gespeichert. Die neue Tabelle wird mit den bisher gültigen Zeichen aus der alten RAM-Tabelle und, falls nötig, aus dem Erläuterung zu den Anschlüssen 40 bis 45: 42 - ROMEN (0)ROM initialisiert. Überlappen sich dabei in der alten und in der neuen RAM-Tabelle der Bereich der übernommenen Buchstaben, so darf die neue Tabelle nicht nach ober versetzt sein. Die alten Matrizen werden nämlich generell mit LDIR verschoben. Siehe auch &TEXT VDU: BBA5: TXT GET MATRIXBBA5 TXT GET MATRIX BBAE: TXT GET TABLEErfrage, wo momentan der Bereich für die selbst-definierbaren Zeichen-Matrizen liegt. Eingaben: keine Ausgaben: CY=0 -> es ist kein Bereich für redefinierbare Zeichen im RAM festgelegt Datenbreite: Wordsworden. CY=1 -> Operationen: BD5B / 349A / 349A: FLO SUBA = 1. Zeichen der RAM-Tabelle und HL zeigt auf die Tabelle. Unverändert: BC,DE,IX,IY Siehe &TEXT VDU: BBA5: TXT GET MATRIXBBA5 TXT GET MATRIX und &TEXT VDU: BBA8: TXT SET MATRIXBBA8 MAIN FIRMWARE JUMPBLOCK: TEXT VDU BBB1: TXT GET CONTROLSErfrage die Lage der Control-Code-Tabelle. Eingaben: keine Ausgaben: HL zeigt auf die Controlcode-Tabelle Unverändert: AF,BC,DE,IX,IY Die Controlcode-Tabelle enthält zu jedem Controlcode (0 bis 31) in aufsteigender Reihenfolge in jeweils 3 Datentypen: Bytes DEFB args ; Anzahl benötigter Basic und Maschinencode: ParameterParameter (max. 9)
DEFW addr ; Routinenadresse. Diese muss im zentralen RAM liegen.
Durch Änderung eines Eintrags in diese Tabelle kann einem Controlcode eine völlig neue Die Fließkomma-Routinen: FunktionenFunktion zugeordnet werden. Die Behandlungsroutinen der Controlcodes müssen folgende Ein- und Aussprungsbedingungen erfüllen: Eingaben: Operationen: BD5B / 349A / 349A: FLO SUBA und C enthalten den letzten Basic und Maschinencode: ParameterParameter oder den Controlcode selbst, wenn dieser keine Basic und Maschinencode: ParameterParameter benötigt. LOW KERNEL JUMPBLOCK: 000B: LOW KL LOW PCHL Die Bildausgabe: Die ControlcodesDie Controlcodes werden von &TEXT VDU: BB5A: TXT OUTPUTBB5A TXT OUTPUT auch dann befolgt, wenn die Textausgabe für den aktiven Stream ausgeschaltet ist (mit Controlcode 21 NAK oder &TEXT VDU: BB57: TXT VDU DISABLEBB57 TXT VDU DISABLE). Das gilt jedoch nur für den CPC 464. Ab dem CPC 664 wird in die Controlcode-Tabelle ein zusätzliches Die Z80: Wirkung der Z80-Befehle auf die FlagsFlag eingetragen, das festlegt, ob ein Controlcode vom VDU-disable/enable-Status eines Textfensters betroffen sein soll oder nicht. Dieses Die Z80: Wirkung der Z80-Befehle auf die FlagsFlag ist in Datenbreite: Bits Datenbreite: Bits Datenbreite: Bits Interessant dass hier die Kompatibilität zum CPC 464 kaum gewahrt wurde: Praktisch alle Controlcodes werden vom VDU-Status beeinflusst! Ausgenommen sind nur CHR$(6) ACK, mit dem die Textausgabe wieder aktiviert werden kann und CHR$(27) ESC, dass sowieso ignoriert wird. BBB4: TXT STREAM SELECTWähle ein anderes Text-Fenster an. Eingaben: Operationen: BD5B / 349A / 349A: FLO SUBA = Nummer des neuen Textfensters Ausgaben: Operationen: BD5B / 349A / 349A: FLO SUBA = Nummer des alten Textfensters Unverändert: BC,DE,IX,IY Operationen: BD5B / 349A / 349A: FLO SUBA wird mit 7 maskiert, um eine gültige Stream-Nummer im Bereich 0 bis 7 zu erhalten. Ist das gewünschte Textfenster bereits angewählt, kehrt die Routine sofort zurück. Es ist daher empfehlenswert, vor jeder Textausgabe prinzipiell noch einmal das gewünschte Textfenster anzuwählen. Folgende Basic und Maschinencode: ParameterParameter werden für jedes Die Text-VDU: FensterFenster getrennt verwaltet: - PEN INK Vordergrund-Tinte - PAPER INK Hintergrund-Tinte - Cursorposition: Spalte und Zeile - Fenstergrenzen: links, rechts, oben und unten - Cursorstatus: ON/OFF und ENABLE/DISABLE - VDU-Status: ENABLE/DISABLE - Hintergrundmodus: OPAQUE/TRANSPARENT - Grafikschreibmodus: TAG/TAGOFF BBB7: TXT SWAP STREAMSVertausche die Einstellungen und Basic und Maschinencode: ParameterParameter zweier Text-Fenster. Eingaben: LOW KERNEL JUMPBLOCK: 000B: LOW KL LOW PCHL
Beide Streamnummern werden mit 7 maskiert, um gültige Werte sicherzustellen. Die Nummer des aktuell angewählten Textfensters ändert sich nicht, auch wenn es einer der beiden Tauschpartner ist. Alle Basic und Maschinencode: ParameterParameter, die für die Streams getrennt verwaltet werden, werden ausgetauscht. Siehe dazu &TEXT VDU: BBB4: TXT STREAM SELECTBBB4 MAIN FIRMWARE JUMPBLOCK: TEXT VDU BD40: TXT ASK STATEErfrage Erklärung zu den verwendeten Bezeichnungen: CursorCursor- und VDU-Status des aktuellen Textfensters. nur CPC 664 und 6128 Eingaben: keine
Ausgaben: Operationen: BD5B / 349A / 349A: FLO SUBA=Status
Unverändert: BC,DE,HL,IX,IY
Operationen: BD5B / 349A / 349A: FLO SUBA enthält in insgesamt drei Datenbreite: Bits • Datenbreite: Bits |