Das Schneider CPC Systembuch

Die Firmware des Schneider CPC

Überblick

Die Basic-Vektoren

Die Abteilungen des Betriebssystems: Die Basic-Vektoren
Überblick: Die Basic-Vektoren
Die Firmware des Schneider CPC: Die Basic-Vektoren
Die Basic-Vektoren
werden zwar auch von JUMPER: BD37: JUMP RESTOREJUMP RESTORE eingerichtet, haben aber keine von Amstrad garantierte Lage. Praktisch alle Basic-Vektoren haben im CPC 464, 664 und 6128 eine andere Lage.

Zusätzlich wurden ab dem CPC 664 Die Basic-Vektoren: Die Integer-Routinendie Integer-Routinen in's Basic-ROM verlagert, so dass hierfür überhaupt keine Vektoren mehr nötig wurden. Sie fielen einfach weg. Auch einige Fließkomma-Vektoren wurden wegrationalisiert. In diesem Fall ist statt der Adresse des Vektors immer die Adresse der Routine selbst angegeben. Diese Routinen müssen nun per ROM-Konfiguration: RestartsRestart aufgerufen werden.

Editor

Adressen          Bezeichnung       Beschreibung
----------------- ----------------- ------------------------------------------
464  664  6128

Editor: BD3A / BD5B / BD5E:  EDITBD3A BD5B BD5E    EDIT              Eingabe und Bearbeiten eines Datentypen: StringsStrings (Zeichenkette).

Fließkomma-Routinen

Adressen        Bezeichnung       Beschreibung
--------------- ----------------- ------------------------------------------
464  664  6128

Die Fließkomma-Routinen: ZufallsgeneratorZufallsgenerator:

Zufallsgenerator: BD97 / BDB8 / BDBB:  FLO RANDOMIZE 0BD97 BDB8 BDBB  FLO RANDOMIZE 0
Zufallsgenerator: BD9A / BDBB / BDBE:  FLO RANDOMIZEBD9A BDBB BDBE  FLO RANDOMIZE     LW(HL) XOR &89656C07 -> LW(seed)
Zufallsgenerator: BD9D / BD7C / BD7F:  FLO RNDBD9D BD7C BD7F  FLO RND           RND     -> FLO(HL)
Zufallsgenerator: BDA0 / BD88 / BD8B:  FLO LAST RNDBDA0 BD88 BD8B  FLO LAST RND      letzten RND-Wert -> FLO(HL)

Die Fließkomma-Routinen: OperationenOperationen:

Operationen: BD58 / BD79 / BD7C:  FLO ADDBD58 BD79 BD7C  FLO ADD           FLO(HL) + FLO(DE) -> FLO(HL)
Operationen: BD5E / BD7F / BD82:  FLO SUB*BD5E BD7F BD82  FLO SUB*          FLO(DE) - FLO(HL) -> FLO(HL)
Operationen: BD5B / 349A / 349A:  FLO SUBBD5B 349A 349A  FLO SUB           FLO(HL) - FLO(DE) -> FLO(HL)
Operationen: BD61 / BD82 / BD85:  FLO MULTBD61 BD82 BD85  FLO MULT          FLO(HL) * FLO(DE) -> FLO(HL)
Operationen: BD64 / BD85 / BD88:  FLO DIVBD64 BD85 BD88  FLO DIV           FLO(HL) / FLO(DE) -> FLO(HL)
Operationen: BD7C / BD9D / BDA0:  FLO POTBD7C BD9D BDA0  FLO POT           FLO(HL) ^ FLO(DE) -> FLO(HL)
Operationen: BD6A / BD8B / BD8E:  FLO VGLBD6A BD8B BD8E  FLO VGL           SGN (FLO(HL)-FLO(DE)) -> Operationen: BD5B / 349A / 349A:  FLO SUBA

Die Fließkomma-Routinen: FunktionenFunktionen:

Funktionen: BD6D / BD8E / BD91:  FLO VZWBD6D BD8E BD91  FLO VZW             -1 *  FLO(HL)  -> FLO(HL)
Funktionen: BD79 / BD9A / BD9D:  FLO SQRBD79 BD9A BD9D  FLO SQR              SQR (FLO(HL)) -> FLO(HL)
Funktionen: BD7F / BDA0 / BDA3:  FLO LOG NATBD7F BDA0 BDA3  FLO LOG NAT          LOG (FLO(HL)) -> FLO(HL)
Funktionen: BD82 / BDA3 / BDA6:  FLO LOG DECBD82 BDA3 BDA6  FLO LOG DEC        LOG10 (FLO(HL)) -> FLO(HL)
Funktionen: BD85 / BDA6 / BDA9:  FLO POT EBD85 BDA6 BDA9  FLO POT LOW KERNEL JUMPBLOCK: 000E:  LOW PCBC INSTRUCTION
LOW KERNEL JUMPBLOCK: 001E: LOW PCHL INSTRUCTION
E
LOW KERNEL JUMPBLOCK: 000E: LOW PCBC INSTRUCTION
LOW KERNEL JUMPBLOCK: 001E: LOW PCHL INSTRUCTION
E
^ FLO(HL) -> FLO(HL) Funktionen: BD88 / BDA9 / BDAC: FLO SINBD88 BDA9 BDAC FLO SIN SIN (FLO(HL)) -> FLO(HL) Funktionen: BD8B / BDAC / BDAF: FLO COSBD8B BDAC BDAF FLO COS COS (FLO(HL)) -> FLO(HL) Funktionen: BD8E / BDAF / BDB2: FLO TANBD8E BDAF BDB2 FLO TAN TAN (FLO(HL)) -> FLO(HL) Funktionen: BD91 / BDB2 / BDB5: FLO ARC TANBD91 BDB2 BDB5 FLO ARC TAN ARCTAN (FLO(HL)) -> FLO(HL) Funktionen: BD55 / BD76 / BD79: FLO 10^ABD55 BD76 BD79 FLO 10^A 10^Operationen: BD5B / 349A / 349A: FLO SUBA * FLO(HL) -> FLO(HL) Funktionen: BD67 / ---- / ----: FLO 2^ABD67 ---- ---- FLO 2^A 2^Operationen: BD5B / 349A / 349A: FLO SUBA * FLO(HL) -> FLO(HL) Funktionen: BD70 / BD91 / BD94: FLO SGNBD70 BD91 BD94 FLO SGN SGN (FLO(HL)) -> Operationen: BD5B / 349A / 349A: FLO SUBA Die Fließkomma-Routinen: Sonstigessonstiges: Sonstiges: BD3D / BD5E / BD61: FLO MOVEBD3D BD5E BD61 FLO MOVE FLO(DE) -> FLO(HL) Sonstiges: BD76 / BD97 / BD9A: FLO PIBD76 BD97 BD9A FLO PI PI -> FLO(HL) Sonstiges: BD73 / BD94 / BD97: FLO DEG/RADBD73 BD94 BD97 FLO DEG/RAD Radiant / Degree umschalten.

Integer-Routinen

Adressen          Bezeichnung       Beschreibung
----------------- ----------------- ------------------------------------------
464  664  6128

Die Integer-Routinen: Operationen mit VorzeichenOperationen mit Vorzeichen (Komplement-Darstellung):

Operationen mit Vorzeichen: BDAC / DD4F / DD4A:  INT ADD VZBDAC DD4F DD4A  INT ADD VZ        HL + DE -> HL
Operationen mit Vorzeichen: BDAF / DD58 / DD53:  INT SUB VZBDAF DD58 DD53  INT SUB VZ        HL - DE -> HL
Operationen mit Vorzeichen: BDB2 / DD57 / DD52:  INT SUB* VZBDB2 DD57 DD52  INT SUB* VZ       DE - HL -> HL
Operationen mit Vorzeichen: BDB5 / DD60 / DD5B:  INT MULT VZBDB5 DD60 DD5B  INT MULT VZ       HL * DE -> HL
Operationen mit Vorzeichen: BDB8 / DDA1 / DD9C:  INT DIV VZBDB8 DDA1 DD9C  INT DIV VZ        HL / DE -> HL rest DE
Operationen mit Vorzeichen: BDBB / DDA8 / DDA3:  INT MOD VZBDBB DDA8 DDA3  INT MOD VZ        HL / DE -> DE rest HL
Operationen mit Vorzeichen: BDC4 / DE07 / DE02:  INT VGLBDC4 DE07 DE02  INT VGL           SGN (HL-DE) -> Operationen: BD5B / 349A / 349A:  FLO SUBA

Die Integer-Routinen: Funktionen mit VorzeichenFunktionen mit Vorzeichen:

Funktionen mit Vorzeichen: BDC7 / DDF2 / DDED:  INT VZWBDC7 DDF2 DDED  INT VZW           -1 * HL  -> HL
Funktionen mit Vorzeichen: BDCA / DDFE / DDF9:  INT SGNBDCA DDFE DDF9  INT SGN           SGN (HL) -> Operationen: BD5B / 349A / 349A:  FLO SUBA

Die Integer-Routinen: Operationen ohne VorzeichenOperationen ohne Vorzeichen:

Operationen ohne Vorzeichen: BDBE / DD77 / DD72:  INT MULTBDBE DD77 DD72  INT MULT          HL * DE  -> HL
Operationen ohne Vorzeichen: BDC1 / DDB0 / DDAB:  INT DIVBDC1 DDB0 DDAB  INT DIV           HL / DE  -> HL rest DE

Konvertierungs-Routinen

Adressen        Bezeichnung       Beschreibung
--------------- ----------------- ------------------------------------------
464  664  6128

Konvertierung:

Konvertierung: BD46 / BD67 / BD6A:  ROUND FLO TO HLABD46 BD67 BD6A  ROUND FLO TO HLA  ROUND(FLO(HL)) -> HL, Operationen: BD5B / 349A / 349A:  FLO SUBA=VZ
Konvertierung: BD40 / BD61 / BD64:  KONV HLA TO FLOBD40 BD61 BD64  KONV HLA TO FLO   HL, Operationen: BD5B / 349A / 349A:  FLO SUBA=VZ       -> FLO(DE)
Konvertierung: BD43 / BD64 / BD67:  KONV LW TO FLOBD43 BD64 BD67  KONV LW TO FLO    LW(HL), Operationen: BD5B / 349A / 349A:  FLO SUBA=VZ   -> FLO(HL)
Konvertierung: BD49 / BD6A / BD6D:  ROUND FLO TO LWBD49 BD6A BD6D  ROUND FLO TO LW   ROUND(FLO(HL)) -> LW(HL), LOW KERNEL JUMPBLOCK: 000B:  LOW KL LOW PCHL
LOW KERNEL JUMPBLOCK: 001B: LOW KL FAR PCHL
LOW KERNEL JUMPBLOCK: 003B: LOW EXT INTERRUPT
B
=VZ Konvertierung: BD4C / BD6D / BD70: FIX FLO TO LWBD4C BD6D BD70 FIX FLO TO LW FIX(FLO(HL)) -> LW(HL), LOW KERNEL JUMPBLOCK: 000B: LOW KL LOW PCHL
LOW KERNEL JUMPBLOCK: 001B: LOW KL FAR PCHL
LOW KERNEL JUMPBLOCK: 003B: LOW EXT INTERRUPT
B
=VZ Konvertierung: BD4F / BD70 / BD73: INT FLO TO LWBD4F BD70 BD73 INT FLO TO LW Alle noch folgenden Anschlüsse fallen unter die Rubrik STEUER- oder auch CONTROLBUS:: INT - Interrupt
Besonderheiten der Z80 im Schneider CPC: normaler Interrupt
Die Besonderheiten des FDC 765 im Schneider CPC: INT
INT
(FLO(HL)) -> LW(HL), LOW KERNEL JUMPBLOCK: 000B: LOW KL LOW PCHL
LOW KERNEL JUMPBLOCK: 001B: LOW KL FAR PCHL
LOW KERNEL JUMPBLOCK: 003B: LOW EXT INTERRUPT
B
=VZ Konvertierung: BD94 / BDB5 / BDB8: KONV LW+C TO FLOBD94 BDB5 BDB8 KONV LW+C TO FLO LW(HL)*256+C -> FLO(HL) Konvertierung: BDA9 / DD3C / DD37: KONV HLB TO INTBDA9 DD3C DD37 KONV HLB TO Alle noch folgenden Anschlüsse fallen unter die Rubrik STEUER- oder auch CONTROLBUS:: INT - Interrupt
Besonderheiten der Z80 im Schneider CPC: normaler Interrupt
Die Besonderheiten des FDC 765 im Schneider CPC: INT
INT
HL, LOW KERNEL JUMPBLOCK: 000B: LOW KL LOW PCHL
LOW KERNEL JUMPBLOCK: 001B: LOW KL FAR PCHL
LOW KERNEL JUMPBLOCK: 003B: LOW EXT INTERRUPT
B
=VZ -> HL Basic und Maschinencode: ParameterParameter für Real: Dezimalwandlung
Die Basic-Vektoren: Dezimalwandlung
Dezimalwandlung
bestimmen: Dezimalwandlung: BD52 / BD73 / BD76: FLO PREPAREBD52 BD73 BD76 FLO PREPARE FLO(HL) -> Basic und Maschinencode: ParameterParameter Dezimalwandlung: BDA3 / DD2F / DD2A: INT PREPARE VZBDA3 DD2F DD2A INT PREPARE VZ HL (Integer mit VZ) -> Basic und Maschinencode: ParameterParameter Dezimalwandlung: BDA6 / DD35 / DD30: INT PREPAREBDA6 DD35 DD30 INT PREPARE HL (Integer ohne VZ) -> Basic und Maschinencode: ParameterParameter

Zusätzliche Vektoren im CPC 664 und 6128

Adresse  Bezeichnung          Beschreibung
-------- -------------------- ------------------------------------------
KEY MANAGER: BD3A: KM SET LOCKSBD3A     KM SET LOCKS         Lege den Shift- und den Caps-Lock-Status neu fest.
KEY MANAGER: BD3D: KM FLUSHBD3D     KM FLUSH             Lösche alle bisher aufgelaufenen Zeichen im Tastatur-Puffer.
TEXT VDU: BD40: TXT ASK STATEBD40     TXT ASK STATE        Erfrage Die Text-VDU: Der Cursorden Cursor- und VDU-Status des aktuellen Textfensters.
GRAPHICS VDU: BD43: GRA DEFAULTBD43     GRA DEFAULT          Stelle die Standardwerte für die verschiedenen Optionen der Grafik-VDU ein.
GRAPHICS VDU: BD46: GRA SET BACKBD46     GRA SET BACK         Setze den Die Grafik-VDU: Hintergrund-ModusHintergrund-Modus der Grafik-VDU.
GRAPHICS VDU: BD49: GRA SET FIRSTBD49     GRA SET FIRST        Setze die Erster-Punkt-Option für die zu zeichnenden Linien.
GRAPHICS VDU: BD4C: GRA SET LINE MASKBD4C     GRA SET LINE MASK    Lege die Punktmaske für Linien neu fest.
GRAPHICS VDU: BD4F: GRA FROM USERBD4F     GRA FROM USER        Konvertiere die User-Koordinaten (Adressierungsarten der Z80: Relativrelativ zum Origin)
                              in Basiskoordinaten (Adressierungsarten der Z80: Relativrelativ zur linken unteren Ecke).
GRAPHICS VDU: BD52: GRA FILLBD52     GRA FILL             Male eine beliebige Fläche aus.
SCREEN PACK: BD55: SCR SET POSITIONBD55     SCR SET POSITION     Lege die Lage des Bildschirms nur für die Software neu fest.
MACHINE PACK: BD58: MC PRINT TRANSLATIONBD58     MC PRINT TRANSLATION Ändere die Zeichen-Übersetzungs-Tabelle für den Drucker.
HIGH KERNEL JUMPBLOCK: B92A:  HI KL SCAN NEEDEDB92A     MAIN FIRMWARE JUMPBLOCK: KERNEL
Die Firmware des Schneider CPC: KERNEL
KL
SCAN NEEDED Teile dem MAIN FIRMWARE JUMPBLOCK: KERNEL
Die Firmware des Schneider CPC: KERNEL
Kernel
mit, dass Einleitung: Die Tastatur
Anhang: Die Tastatur
die Tastatur
mit dem nächsten Alle noch folgenden Anschlüsse fallen unter die Rubrik STEUER- oder auch CONTROLBUS:: INT - InterruptInterrupt abgefragt werden muss.

Zusätzliche Indirections beim CPC 664 und 6128

Adresse  Bezeichnung          Beschreibung
-------- -------------------- ------------------------------------------
Die Indirections der Firmware-Packs: BDF4:  IND KM SCAN KEYSBDF4     IND KM SCAN KEYS     Frage Einleitung: Die Tastatur
Anhang: Die Tastatur
die Tastatur
ab.

Zusätzliche Vektoren beim CPC 6128

Adresse  Bezeichnung          Beschreibung
-------- -------------------- ------------------------------------------
KERNEL: BD5B: KL RAM SELECTBD5B     KL RAM SELECT        Wähle eine neue BD5B: KL RAM SELECT: Mögliche RAM-Konfigurationen:RAM-Konfiguration aus.

Valid HTML   Valid CSS