Das Schneider CPC Systembuch

Die Firmware des Schneider CPC

Die Indirections der Firmware-Packs

BDCD: IND TXT DRAW CURSOR

Zeichne einen Cursor-Fleck, falls dieser auf beiden Ebenen eingeschaltet ist.

Eingaben:    keine
Ausgaben:    keine
Unverändert: BC,DE,HL,IX,IY

Wenn Die Text-VDU: Der Cursorder Cursor sowohl 'enabled' als auch 'on' ist, wird die Cursorposition in das aktuelle Textfenster gezwungen und Die Text-VDU: Der Cursorder Cursor gezeichnet.

BDD0: IND TXT UNDRAW CURSOR

Entferne den Cursor-Fleck, falls dieser auf beiden Ebenen eingeschaltet ist.

Eingaben:    keine
Ausgaben:    keine
Unverändert: BC,DE,HL,IX,IY

Wenn Die Text-VDU: Der Cursorder Cursor sowohl 'enabled' als auch 'on' ist, wird der Cursor-Fleck im aktuellen Textfenster wieder von der Cursorposition entfernt.

Bedingt durch den primitiven Aufbau des Standard-Cursors (Invertieren aller Datenbreite: Bits
Port B - Input: &F5xx: Bit 0:
Port B - Input: &F5xx: Bit 4:
Port B - Input: &F5xx: Bit 5:
Port B - Input: &F5xx: Bit 6:
Port B - Input: &F5xx: Bit 7:
Port C - Output: &F6xx: Bit 4:
Port C - Output: &F6xx: Bit 5:
Bits
der betroffenen Buchstabenflaeche) wird für Die Indirections der Firmware-Packs: BDCD: IND TXT DRAW CURSORBDCD IND TXT DRAW CURSOR und &BDD_ Die Indirections der Firmware-Packs: BDD0: IND TXT UNDRAW CURSORIND TXT UNDRAW CURSOR die selbe Routine benutzt!

BDD3: IND TXT WRITE CHAR

Schreibe ein Zeichen auf den Bildschirm.

Eingaben:    Operationen: BD5B / 349A / 349A:  FLO SUBA = Zeichencode
             H = Spalte (phys.)
             L = Zeile (phys.)
Ausgaben:    keine
Unverändert: IX,IY

Bezugspunkt für die Koordinaten-Angaben ist die linke, obere Ecke mit den Koordinaten (0,0). Aufgabe dieser Überblick: Die Indirections der Firmware-Packs
Die Firmware des Schneider CPC: Die Indirections der Firmware-Packs
Indirection
ist es, Zeichensatz: die Zeichenmatrixdie Zeichenmatrix in Erläuterung zu den Anschlüssen 40 bis 45: 42 - ROMEN (0)ROM oder RAM zu suchen, entsprechend dem Bildschirm-Modus zu expandieren, entsprechend PEN und PAPER einzufärben und entsprechend dem Vorder- und Die Grafik-VDU: Hintergrund-ModusHintergrund-Modus mit den alten Punkten auf der Zielposition zu verbinden.

Diese Überblick: Die Indirections der Firmware-Packs
Die Firmware des Schneider CPC: Die Indirections der Firmware-Packs
Indirection
ist nicht zuständig für die Textausgabe auf der Grafikposition, Controlcodes, Kontrolle der Koordinaten auf Gueltigkeit und den Cursorfleck (entfernen und wieder zeichnen).

BDD6: IND TXT UNWRITE

Lese ein Zeichen vom Bildschirm.

Eingaben:    H = Spalte (phys.)
             L = Zeile (phys.)
Ausgaben:    CY=1  ->  Operationen: BD5B / 349A / 349A:  FLO SUBA=Zeichencode
             CY=0  ->  Kein Zeichen erkannt.
Unverändert: IX,IY

Bezugspunkt für die Koordinatenangaben ist die linke, obere Ecke mit den Koordinaten (0,0). Die Text-VDU: Der CursorDer Cursor darf nicht auf der Leseposition dargestellt sein.

Um ein Zeichen vom Bildschirm zu lesen, wird die Grafikinformation auf der angegebenen Position wieder zu einer 8-Datentypen: Bytes
Datenbreite: Bytes
Byte
Zeichenmatrix komprimiert und dann von 0 bis 255 mit allen Zeichen verglichen.

Dabei gibt es zwei Durchgänge: Zuerst wird die Zeichenposition unter der Annahme komprimiert, dass das Zeichen in der aktuellen PEN-Tinte geschrieben wurde. Wird so kein Zeichen erkannt oder ist das Egebnis das Leerzeichen, so wird ein weiterer Durchgang unter der Annahme gestartet, dass der Hintergrund in der aktuellen Paper-Tinte geschrieben ist.

Ziemlich viele Faktoren können diese Routine am Erfolg hindern:

Entweder wurden die Die Bildausgabe: Tinten und FarbenTinten gewechselt (oder auch nur einfach vertauscht), eine Zeichenmatrix geändert oder die Zeichenposition ganz oder teilweise durch Punkte oder Linien verändert. In all diesen Fällen erkennt diese Routine ein Zeichen nicht wieder.

BDD9: IND TXT OUT ACTION

Schreibe ein Zeichen oder befolge einen Control-Code.

Eingaben:    Operationen: BD5B / 349A / 349A:  FLO SUBA = Zeichen- oder Controlcode
Ausgaben:    keine
Unverändert: IX,IY

Diese Überblick: Die Indirections der Firmware-Packs
Die Firmware des Schneider CPC: Die Indirections der Firmware-Packs
Indirection
übernimmt die gesamte Arbeit von &TEXT VDU: BB5A: TXT OUTPUTBB5A TXT OUTPUT. Der Vektor besorgt nur das Besonderheiten der Z80 im Schneider CPC: Bank-SwitchingBank-Switching und rettet die Die Tonausgabe: Das Kontrollregister (Reg. 7)
Die Tonausgabe: Die möglichen Hüllkurvenformen (Reg. 13)
Register
AF, BC, DE und HL.

BDDC: IND GRA PLOT

Zeichne einen Punkt.

Eingaben:    DE = X-Koordinate
             HL = Y-Koordinate
Ausgaben:    keine
Unverändert: IX,IY

Die Koordinatenangaben sind Adressierungsarten der Z80: Relativrelativ zum Origin als Ursprung. Diese Überblick: Die Indirections der Firmware-Packs
Die Firmware des Schneider CPC: Die Indirections der Firmware-Packs
Indirection
bewegt den Grafik-Cursor zur angegebenen Position und testet, ob Die Grafik-VDU: Die Koordinatendie Koordinate im Grafikfenster liegt. Wenn ja, werden Die Grafik-VDU: Die Koordinatendie Koordinaten in die entsprechende Byte-Adresse und Die Kodierung der Tintennummern in den Bildschirm-Bytes: PixelmaskenPixelmaske umgerechnet, die aktuelle Grafik-Vordergrundfarbe expandiert und &Die Indirections der Firmware-Packs: BDE8: IND SCR WRITEBDE8 IND SCR WRITE aufgerufen. Diese Überblick: Die Indirections der Firmware-Packs
Die Firmware des Schneider CPC: Die Indirections der Firmware-Packs
Indirection
befolgt noch den Grafik-Vordergrund-Modus (Force, Xor, And, Or) und setzt den Punkt.

BDDF: IND GRA TEST

Bestimme die Die Bildausgabe: Tinten und FarbenTinte eines Punktes.

Eingaben:    DE = X-Koordinate
             HL = Y-Koordinate
Ausgaben:    Operationen: BD5B / 349A / 349A:  FLO SUBA  = Tintennummer des Punktes
Unverändert: IX,IY

Die Koordinatenangaben sind Adressierungsarten der Z80: Relativrelativ zum Origin als Nullpunkt. Diese Überblick: Die Indirections der Firmware-Packs
Die Firmware des Schneider CPC: Die Indirections der Firmware-Packs
Indirection
bewegt den Grafik-Cursor zur angegebenen Position und testet, ob der Punkt im Grafik-Window liegt. Wenn nicht, gibt sie die aktuelle PAPER-Tinte zurück. Wenn ja, werden die Koordinatenangaben in Byte-Adresse und Die Kodierung der Tintennummern in den Bildschirm-Bytes: PixelmaskenPixelmaske umgerechnet und &&Die Indirections der Firmware-Packs: BDE5: IND SCR READBDE5 IND SCR READ aufgerufen, um die Die Bildausgabe: Tinten und FarbenTinte des Punktes zu bestimmen.

BDE2: IND GRA LINE

Zeichne eine Linie.

Eingaben:    DE = X-Koordinate
             HL = Y-Koordinate
Ausgaben:    keine
Unverändert: IX,IY

Die Koordinatenangaben sind Adressierungsarten der Z80: Relativrelativ zum Origin. Der Grafik-Cursor wird auf die angegeben Position gesetzt und eine Line von der alten Cursorposition zur neuen gezogen. Dabei werden nur Punkte innerhalb des aktuellen Grafikfensters gesetzt. Die einzelnen Punkte werden gesetzt, indem &Die Indirections der Firmware-Packs: BDE8: IND SCR WRITEBDE8 IND SCR WRITE aufgerufen wird, diese Routine wiederrum befolgt den aktuellen Grafik- Vordergrundmodus.

Garbage Collection: ... beim CPC 664 und 6128Beim CPC 664 und 6128 wird der erste Punkt der Linie nicht geplottet, wenn die Erster-Punkt-Option entsprechend gestellt ist. Außerdem werden nur die in der Linien-Maske als Vordergrund-Pixel markierten Punkte mittels &Die Indirections der Firmware-Packs: BDE8: IND SCR WRITEBDE8 IND SCR WRITE gesetzt. Hintergrund-Pixel werden entsprechend dem Grafik-Hintergrundmodus entweder ignoriert (transparent) oder ohne Berücksichtigung der alten Die Bildausgabe: Tinten und FarbenTinte an dieser Position geplottet (opaque).

BDE5: IND SCR READ

Lese einen Punkt vom Bildschirm.

Eingaben:    HL = Byte-Adresse im Bildschirmspeicher
             C  = Die Kodierung der Tintennummern in den Bildschirm-Bytes: PixelmaskenPixelmaske
             Operationen: BD5B / 349A / 349A:  FLO SUBA  = Tintennummer des Pixels
Ausgaben:    BC,DE,HL,IX,IY
Unverändert:

BDE8: IND SCR WRITE

Setze einen oder mehrere Punkte im Bildschirm unter Berücksichtigung des Grafikmodus.

Eingaben:    HL = Byte-Adresse im Bildschirmspeicher
             C  = Maske für das oder die Pixel
             LOW KERNEL JUMPBLOCK: 000B:  LOW KL LOW PCHL
LOW KERNEL JUMPBLOCK: 001B: LOW KL FAR PCHL
LOW KERNEL JUMPBLOCK: 003B: LOW EXT INTERRUPT
B
= expandierte Die Bildausgabe: Tinten und FarbenTinte (Das Screen Pack: FarbbytesFarbbyte) Ausgaben: keine Unverändert: BC,DE,HL,IX,IY

Das oder die durch HL adressierten und C maskierten Pixel werden entsprechend dem aktuellen Grafik-Vordergrundmodus mit dem alten Bildschirm-Inhalt verknuepft und in den Bildschirm geplottet.

BDEB: IND SCR MODE CLEAR

Lösche den Bildschirm mit Die Bildausgabe: Tinten und FarbenTinte 0.

Eingaben:    keine
Ausgaben:    keine
Unverändert: IX,IY

Diese Überblick: Die Indirections der Firmware-Packs
Die Firmware des Schneider CPC: Die Indirections der Firmware-Packs
Indirection
führt alle Aktionen für &SCREEN PACK: BC14: SCR CLEARBC14 SCR CLEAR durch.

BDEE: IND KM TEST BREAK

Führe den Erklärung der Anschlussbelegung: TestTest auf Break und Alle noch folgenden Anschlüsse fallen unter die Rubrik STEUER- oder auch CONTROLBUS:: Reset
Erklärung zu den Anschluss-Bezeichnungen: RESET
Erklärung der Anschlussbelegung: Reset
Erklärung zu den Bezeichnungen: RESET
Erklärungen zu den Anschlussbezeichnungen: RESET
Erläuterung zu den Anschlüssen 40 bis 45: 41 - RESET (0)
Reset
durch.

Eingaben:    C = Status von [SHIFT] und [CTRL]
Ausgaben:    keine
Unverändert: BC,DE,IX,IY

Diese Routine wird vom Interrupt-Pfad aus aufgerufen (&Die Indirections der Firmware-Packs: BDF4: IND KM SCAN KEYSBDF4 IND KM SCAN KEYS Garbage Collection: ... beim CPC 664 und 6128beim CPC 664 und 6128). Deshalb müssen Alle noch folgenden Anschlüsse fallen unter die Rubrik STEUER- oder auch CONTROLBUS:: INT - InterruptInterrupts verboten sein und bleiben es auch.

Der Shift- und Ctrl-Status ist in C folgendermaßen codiert:

Datenbreite: Bits
Port B - Input: &F5xx: Bit 0:
Port B - Input: &F5xx: Bit 4:
Port B - Input: &F5xx: Bit 5:
Port B - Input: &F5xx: Bit 6:
Port B - Input: &F5xx: Bit 7:
Port C - Output: &F6xx: Bit 4:
Port C - Output: &F6xx: Bit 5:
Bit
5 = 1 -> Shift ist gedrückt. Datenbreite: Bits
Port B - Input: &F5xx: Bit 0:
Port B - Input: &F5xx: Bit 4:
Port B - Input: &F5xx: Bit 5:
Port B - Input: &F5xx: Bit 6:
Port B - Input: &F5xx: Bit 7:
Port C - Output: &F6xx: Bit 4:
Port C - Output: &F6xx: Bit 5:
Bit
7 = 1 -> Escape ist gedrückt.

Der Zustand der ESC-Taste wird noch einmal überprüft. Sind nur [ESC], [CTRL] und [SHIFT] gedrückt, wird ein ROM-Konfiguration: RestartsRestart 0 durchgeführt (Kaltstart).

Ist die ESC-Taste gedrückt, die weiteren Bedingungen aber nicht erfüllt und der Break-Mechanismus aktiv, so werden die Aktionen wie bei &KEY MANAGER: BB4B: KM BREAK EVENTBB4B KM BREAK EVENT beschrieben durchgeführt.

BDF1: IND MC WAIT PRINTER

Versuche, ein Zeichen zum Drucker zu schicken.

Eingaben:    Operationen: BD5B / 349A / 349A:  FLO SUBA = Code des zu druckenden Zeichens
Ausgaben:    CY = 1  ->  Zeichen wurde zum Drucker gesandt
             CY = 0  ->  Es dauerte zu lange. Nicht gedruckt.
Unverändert: DE,HL,IX,IY

Diese Überblick: Die Indirections der Firmware-Packs
Die Firmware des Schneider CPC: Die Indirections der Firmware-Packs
Indirection
führt alle Aktionen für &MACHINE PACK: BD2B: MC PRINT CHARBD2B MC PRINT CHAR aus. Dieser Vektor blendet nur das untere Erläuterung zu den Anschlüssen 40 bis 45: 42 - ROMEN (0)ROM ein und rettet auch noch das BC-Register.

Beim CPC 464 reicht der ungenutzte Platz bis &BDFF genau aus, um eine 2-Pfennig-Lösung für das 8. Drucker-Bit softwaremäßig zu unterstützen. Garbage Collection: ... beim CPC 664 und 6128Beim CPC 664 und 6128 ist jetzt leider die folgende Überblick: Die Indirections der Firmware-Packs
Die Firmware des Schneider CPC: Die Indirections der Firmware-Packs
Indirection
im Weg.

BDF4: IND KM SCAN KEYS

Nur CPC 664 und 6128.

Frage Einleitung: Die Tastatur
Anhang: Die Tastatur
die Tastatur
ab.

Eingaben:    keine
Ausgaben:    keine
Unverändert: IX,IY

Bei Aufruf dieser Überblick: Die Indirections der Firmware-Packs
Die Firmware des Schneider CPC: Die Indirections der Firmware-Packs
Indirection
muss der Alle noch folgenden Anschlüsse fallen unter die Rubrik STEUER- oder auch CONTROLBUS:: INT - InterruptInterrupt verboten sein und bleibt es auch.

Die Tastatur-Matrix wird überprüft und neu gedrückte Tasten in den Tastatenpuffer eingetragen.

Ist [ESC] gedrückt, wird &Die Indirections der Firmware-Packs: BDEE: IND KM TEST BREAKBDEE IND Erklärung der Anschlussbelegung: TestTEST BREAK aufgerufen.

Diese Routine kümmert sich auch um die Entprellung der Tastatur (indem losgelassene Tasten erst nach zwei Durchläufen als nicht mehr gedrückt markiert werden) und um das Auto-Repeat der einzelnen Tasten.

Valid HTML   Valid CSS