MACHINE PACKMaschinennahe Routinen BD13: MC BOOT PROGRAMLade und starte ein Maschinencode-Programm. Eingaben: HL = Adresse einer Laderoutine Ausgaben: -/- Unverändert: -/- Diese Routine kann benutzt werden, um von einem laufenden Vordergrung-Programm aus (z.LOW KERNEL JUMPBLOCK: 000B: LOW KL LOW PCHL Das Betriebssystem initialisiert zuerst einen Teil der Die Firmware des Schneider CPCFirmware, damit von hier aus keine Stoerungen des Ladevorganges auftreten können: • Zurücksetzen von Peripheriegeräten ROM-Auswahl und -Status werden nicht geändert. Aber Achtung: Dieser Vektor ist mit einem LOW MAIN FIRMWARE JUMPBLOCK: JUMPER Danach wird die in HL angegebene Routine aufgerufen, um das eigentliche Programm zu laden. Sie muss in der momentanen Erläuterung zu den Anschlüssen 40 bis 45: 42 - ROMEN (0)ROM- Konfiguration direkt erreichbar sein und folgende Aussprungsbedingung erfüllen: • CY=0 => Ladefehler Wurde das Programm korrekt geladen (CY=1) wird das Betriebssystem komplett neu initialisiert. Andernfalls wird eine Fehlermeldung ausgegeben, und in aller Regel zu Einleitung: BASIC BD16: MC START PROGRAMRufe ein Vordergrund-ROM auf. Eingaben: HL=Einsprungsadresse C=ROM-Select-Byte Ausgaben: -/- Unverändert: -/- Diese Routine kann benutzt werden, um ein Maschinenprogramm in einen Vordergrund-ROM oder im RAM (wenn dieses bereits geladen ist) zu starten. Das Betriebssystem wird komplett zurückgesetzt und die übergebene Adresse mit einem FAR Maschinencode über HIMEM: CALLCALL angesprungen. C muss also entweder die entsprechende ROM-Nummer enthalten, mit der das benötigte Erläuterung zu den Anschlüssen 40 bis 45: 42 - ROMEN (0)ROM eingeblendet wird oder den von einem RAM-Programm benötigten ROM-Konfiguration: ROM-Status BD19: MC WAIT FLYBACKWarte bis zum nächsten Strahlrücklauf des Monitorbildes. Eingaben: keine Ausgaben: keine Unverändert: AF,BC,DE,HL,IX,IY Mit jedem Strahlhochlauf des Monitorbildes erzeugt der Die ICs im Überblick: Der CRTC HD 6845 Die Zeit, in der der Elektronenstrahl des Monitors vom Bildschirmende wieder zu dessen Anfang hochläuft, ist vergleichsweise lang und damit ideal geeignet, umfangreichere Aktionen auf dem Bildschirm durchzuführen, ohne dass es eventuell zu unangenehmen Flimmereffekten kommt. Dieser Vektor lässt die Die ICs im Überblick: Die CPU Z80 BD1C: MC SET MODELege den Bildschirm-Modus neu fest. Eingaben: Operationen: BD5B / 349A / 349A: FLO SUBA = gewünschter Bildschirm-Modus
Ausgaben: keine
Unverändert: BC,DE,HL,IX,IY
Der in Operationen: BD5B / 349A / 349A: FLO SUBA übergebene Wert wird geprüft, und nur wenn er im erlaubten Bereich von 0 bis 2 ist, wird der Bildschirmmodus entsprechend geändert. MACHINE PACK: BD1C: MC SET MODEMC SET MODE informiert Die Abteilungen des Betriebssystems: Das Screen Packdas Screen Pack nicht über den neuen Bildschirm-Modus!!! Im Normalfall sollte man deshalb &SCREEN PACK: BC0E: SCR SET MODEBC0E SCR SET MODE benutzen. BD1F: MC SCREEN OFFSETSetze den Hardware-Scroll-Offset. Eingaben: HL=neuer Scroll-Offset
Operationen: BD5B / 349A / 349A: FLO SUBA=neues Bildschirm-Viertel
Ausgaben: keine
Unverändert: BC,DE,HL,IX,IY
Der Bildwiederholspeicher wird entsprechend Operationen: BD5B / 349A / 349A: FLO SUBA in ein neues RAM- Viertel gelegt. Um einen gültigen Wert zu erhalten, wird Operationen: BD5B / 349A / 349A: FLO SUBA mit &Der Zeichensatz des Schneider CPC: &C0 = 192C0 maskiert. Außerdem wird der Hardware-Scroll-Offset entsprechend HL geändert. HL wird ebenfalss maskiert, um einen gültigen Wert zu erhalten, und zwar mit &07FE. MACHINE PACK: BD1F: MC SCREEN OFFSETMC SCREEN OFFSET informiert Die Abteilungen des Betriebssystems: Das Screen Packdas Screen Pack ebenfalls nicht!!! Im Normalfall sollte deshalb &SCREEN PACK: BC05: SCR SET OFFSETBC05 SCR SET OFFSET oder &SCREEN PACK: BC08: SCR SET BASEBC08 SCR SET BASE benutzt werden. BD22: MC CLEAR INKSSetze alle Die Bildausgabe: Tinten und FarbenTinten auf eine Die Grafik: Farben Eingaben: DE zeigt auf eine Farbtabelle Ausgaben: keine Unverändert: BC,DE,HL,IX,IY Diese Routine wird benutzt, um beim Löschen des Bildschirms (CLS) oder Screen-Mode-Wechsel (Die Kodierung der Tintennummern in den Bildschirm-Bytes: Mode 2: Die Farbtabelle besteht nur aus zwei Datentypen: Bytes • Datentypen: Bytes Beim Einsatz dieser Routine muss man aber immer daran denken, dass Die Abteilungen des Betriebssystems: Das Screen Packdas Screen Pack normalerweise auf dem Frame-Flyback-Ticker einen BCEF: KL INIT EVENT: EventblockEventblock eingehängt hat, durch den im SPEED-INK-Rhythmus für alle Die Bildausgabe: Tinten und FarbenTinten (INKs) eine der beiden programmierten Die Grafik: Farben BD25: MC SET INKSLege die Die Grafik: Farben Eingaben: DE zeigt auf eine Farbtabelle Ausgaben: keine Unverändert: BC,DE,HL,IX,IY Dieser Vektor bildet das Pendant zu &MACHINE PACK: BD22: MC CLEAR INKSBD22 MC CLEAR INKS. Hiermit kann man auf einen Schlag allen Die Bildausgabe: Tinten und FarbenTinten und dem Border neue Die Grafik: Farben Datentypen: Bytes Dieser Vektor programmiert alle 16 Die Bildausgabe: Tinten und FarbenTinten, unabhängig vom aktuellen Bildschirmmodus. Trotzdem genügt es, nur so viele Datentypen: Bytes Auch hier gilt wieder zu bedenken, dass normalerweise die Die Grafik: Farben BD28: MC RESET PRINTERSetze die Printer-Indirections zurück. Eingaben: keine Ausgaben: keine Unverändert: IX,IY Die Sprungleisten: die IndirectionsDie Indirection &Die Indirections der Firmware-Packs: BDF1: IND MC WAIT PRINTERBDF1 IND MAIN FIRMWARE JUMPBLOCK: MACHINE PACK Außerdem wird Garbage Collection: ... beim CPC 664 und 6128beim CPC 664 und 6128 die Drucker-Übersetzungstabelle mit ihren Standardwerten gefüllt. BD2B: MC PRINT CHARVersuche, ein Zeichen zum Drucker zu schicken. Eingaben: Operationen: BD5B / 349A / 349A: FLO SUBA = zu druckendes Zeichen
Ausgaben: CY=1 => o.k.
CY=0 => nicht gedruckt (time out)
Unverändert: BC,DE,HL,IX,IY
Dieser Vektor ruft &Die Indirections der Firmware-Packs: BDF1: IND MC WAIT PRINTERBDF1 IND MAIN FIRMWARE JUMPBLOCK: MACHINE PACK Garbage Collection: ... beim CPC 664 und 6128Beim CPC 664 und 6128 werden alle Zeichen, die gedruckt werden sollen, vorher in der Printer-Translation-Table gesucht, und evtl. geändert, bevor &Die Indirections der Firmware-Packs: BDF1: IND MC WAIT PRINTERBDF1 IND MACHINE PACK: BD2B: MC PRINT CHARMC PRINT CHAR gerufen wird. BD2E: MC BUSY PRINTERSchaue nach, ob der Drucker bereit ist. Eingaben: keine
Ausgaben: CY=1 => Der Drucker ist BUSY/OFF LINE oder nicht angeschlossen.
CY=0 => Der Drucker ist bereit, ein Zeichen zu empfangen.
Unverändert: Operationen: BD5B / 349A / 349A: FLO SUBA,BC,DE,HL,IX,IY
Vor einer Textausgabe kann man mit diesem Vektor sicherstellen, dass überhaupt ein Drucker angeschlossen ist. Im Zusammenspiel mit &MACHINE PACK: BD31: MC SEND PRINTBD31 MC SEND PRINTER kann wie mit &MACHINE PACK: BD2B: MC PRINT CHARBD2B MC PRINT CHAR ein Zeichen zum Drucker geschickt werden. BD31: MC SEND PRINTSende ein Zeichen zum Drucker. Eingaben: Operationen: BD5B / 349A / 349A: FLO SUBA = zu druckendes Zeichen
Ausgaben: CY=1
Unverändert: BC,DE,HL,IX,IY
Dieser Vektor darf nie aufgerufen werden, ohne vorher den Status der BUSY-Leitung vom Drucker zu Erklärung der Anschlussbelegung: Testtesten, da sonst die meisten übertragenen Zeichen verloren gehen. BD34: MC SOUND REGISTERLade ein Datentypen: Bytes Eingaben: Operationen: BD5B / 349A / 349A: FLO SUBA=Registernummer C=Datenbyte für das Die Tonausgabe: Das Kontrollregister (Reg. 7) Im Normalfall treibt man den Tongenerator über Die Abteilungen des Betriebssystems: Der Sound Managerden Sound Manager, der eine sehr komfortable Programmierung der drei Tonkanäle erlaubt. Will man aber trotzdem einzelne Die Tonausgabe: Das Kontrollregister (Reg. 7) Nur in Ausnahmefällen, z.LOW KERNEL JUMPBLOCK: 000B: LOW KL LOW PCHL BD58: MC PRINT TRANSLATIONNur CPC 664 und 6128 Ändere die Zeichen-Übersetzungs-Tabelle für den Drucker. Eingaben: HL zeigt auf die neue Übersetzungstabelle
Ausgaben: CY=1 -> o.k.
CY=0 -> Der Linien-Algorithmus: Fehler 3Fehler (Tabelle zu lang)
Unverändert: IX,IY
Die Übersetzungstabelle hat folgenden Aufbau: 1. Datentypen: Bytes Jeder Eintrag besteht aus: 1. Datentypen: Bytes Die Tabelle wird von MACHINE PACK: BD58: MC PRINT TRANSLATIONMC PRINT TRANSLATION in den Variablenbereich der Die Firmware des Schneider CPCFirmware kopiert. Man kann den Platz danach also weiter verwerten. Die Standard-Belegung nach einem Alle noch folgenden Anschlüsse fallen unter die Rubrik STEUER- oder auch CONTROLBUS:: Reset alt | &Der Zeichensatz des Schneider CPC: &A0 = 160A0 &A1 &A2 &A3 &A6 &AB &AC &AD &AE &AF ----+----------------------------------------- neu | &5LOW KERNEL JUMPBLOCK: 000E: LOW PCBC INSTRUCTION Dadurch werden die in diesem Bereich liegenden Sonderzeichen solchen Zeichencodes zugeordnet, die nach ASCII-Norm in den verschiedenen Ländern unterschiedliche Zeichen erzeugen. In Deutschland sind das beispielsweise die Umlaute. |