Hauptsprungleiste🔌 Machine PackEintrag Nr. 177CPC 464/664/6128
MC BOOT PROGRAM
&BD13
Ein Programm laden und ausführen.
Original (SOFT 968): „Load and run a program.“
🔀Wie der Aufruf die Routine erreicht
Dein Programm RAM-Sprungleiste Low Kernel (RAM/ROM) unteres ROM
───────────── ──────────────── ──────────────────── ───────────
CALL &BD13 ───────▶ &BD13: RST 1 ─────────▶ &0008 LOW JUMP: MC BOOT PROGRAM
DW Low Address ROM-Zustand merken, ───▶ (Routine)
(Bit 15 = oberes ROM aus) unteres ROM an │
◀────────────────────────────────────────── ROM-Zustand zurück ◀──── RET ──┘📖Beschreibung
⚙️ Wirkung
- So viel wie möglich vom System herunterfahren, dann ein Programm in den RAM laden und ausführen. Wenn das Laden fehlschlägt, wird das vorherige Vordergrundprogramm neu gestartet.
🧮 Register auf einen Blick
EingabeHL
AusgabeCarryHL
verändertABCDEFHLIXIY
Automatisch aus den Bedingungen abgeleitet – bei Fallunterscheidungen („wenn … dann“) gilt der Volltext unten.
➡️ Einsprungbedingungen
- HL enthält die Adresse der Routine, die aufgerufen werden soll, um das Programm zu laden.
⬅️ Rücksprungbedingungen
- Kehrt nicht zurück!
- Wenn das Programm erfolgreich geladen wurde:
- Carry gesetzt.
- HL enthält den Programmeinstiegspunkt.
- Wenn das Programm nicht geladen werden konnte:
- Carry gelöscht.
- HL verändert.
- Immer:
- A, BC, DE, IX, IY und andere Flags verändert.
- Das Programm wird an der von der Laderoutine zurückgegebenen Einstiegsadresse betreten. Eine Rückkehr aus dem Programm setzt das System zurück (führt RST 0 aus).
- Nach einem erfolglosen Laden wird eine passende Fehlermeldung ausgegeben und das vorherige Vordergrundprogramm neu gestartet. Wenn das vorherige Vordergrundprogramm selbst ein RAM-Programm war, wird stattdessen das Standard-ROM betreten, da das Programm während des fehlgeschlagenen Ladens verändert worden sein könnte.
📝 Hinweise aus dem Handbuch
- Das System wird teilweise zurückgesetzt, bevor versucht wird, das Programm zu laden. Externe Interrupts sind deaktiviert, ebenso alle Timer-, Frame-Flyback- und Tastatur-Break-Ereignisse. Die Klangerzeugung ist ausgeschaltet, Indirektionen sind auf ihre Standardroutinen gesetzt und der Stack ist auf den Standard-System-Stack zurückgesetzt. Dieser Vorgang stellt sicher, dass beim Laden des Programms kein Speicher außerhalb des Firmware-Variablenbereichs in Gebrauch ist. Das Überschreiben eines aktiven Ereignisblocks oder einer Indirektionsroutine könnte andernfalls unglückliche Folgen haben.
- Die teilweise Systemzurücksetzung ändert weder den ROM-Zustand noch die ROM-Auswahl. Die zum Laden des Programms ausgeführte Routine muss sich in zugänglichem RAM oder einem aktivierten ROM befinden. Beachten Sie, dass der Firmware-Jumpblock normalerweise das untere ROM aktiviert und das obere ROM deaktiviert, und daher muss sich die Routine normalerweise im RAM oberhalb von #4000 oder im unteren ROM befinden.
- Die Routine zum Laden des Programms darf jeden Speicher von #0040 bis zur Basis des Firmware-Variablenbereichs (#B100) frei nutzen und darf Indirektionen ändern sowie externe Geräteunterbrechungen nach Bedarf aktivieren. Sie sollte Folgendes beachten:
🧪Beispielprogramm – ausführen, ändern, Schritt für Schritt
Das Programm liegt bei
&4000 und würde auf dem echten CPC mit CALL &4000 aus BASIC gestartet. Hier läuft es im Z80-Emulator; die Firmware ist nachgebildet.ℹ️ Setzt das System zurück – im Simulator endet das Programm hier.
0
1
2
3
Rand
Modus 1 · Basis &C000 · Versatz &0000Tastenpuffer: leer
Gedrückt gehaltene Tasten (für KM TEST KEY / KM GET JOYSTICK) per Klick umschalten; die Zahl ist die Tastennummer.
Register & Flags
AF
&FFFF
BC
&0000
DE
&0000
HL
&0000
IX
&FFFF
IY
&FFFF
SP
&C000
PC
&0000
S
1
Z
1
Y
1
H
1
X
1
P/V
1
N
1
C
1
Z80-Takte: 0 TCPC-Zeit: 0 µsROMs: unten aus, oben ausRAM-Konfig: &C0
Nächste Befehle (Disassembler)
0000ED FEHLE ▸ RESET ENTRY
0002C9RET
000300NOP
000400NOP
000500NOP
000600NOP
000700NOP
0008ED FEHLE ▸ LOW JUMP
Firmware
Letzte Firmware-Aufrufe
noch keine
Weitere Anzeigen: Speicher, Stapel, Ton, Dateien, Drucker, Kernel
Speicher
400000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ················
401000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ················
402000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ················
403000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ················
404000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ················
405000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ················
406000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ················
407000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ················
PCSP(HL)(DE)Leseansicht mit aktueller ROM-/Bank-Einblendung
Stapel
C0000000← SP
C0020000
C0040000
C0060000
C0080000
C00A0000
C00C0000
C00E0000
Ton (Sound Manager)
Kanal A
still
4 von 4 Plätzen frei
Kanal B
still
4 von 4 Plätzen frei
Kanal C
still
4 von 4 Plätzen frei
Dateien (simuliertes Laufwerk)
| Datei | Typ | Länge | Laden |
|---|---|---|---|
| HALLO.TXT | ASCII | 33 | – |
| ZAHLEN.BIN | binär | 6 | &5000 |
| MUSTER.DAT | binär | 16 | &6000 |
Eingabe: keine · Ausgabe: keine
Drucker
(noch nichts gedruckt)
Kernel: Zeit & Ereignisse
Zeit (KL TIME PLEASE): 0 × 1/300 s = 0.00 s · Interrupts: 0
keine Ereignisblöcke angemeldet
🔗Verwandte Einträge
💡 Quellen
Amstrad SOFT 968 „CPC 464/664/6128 Firmware“, Abschnitt 15 (Beschreibung, übersetzt); Adresse und Name abgeglichen mit Taylor/Defoe „The Amstrad CPC Firmware Guide“. Simulation: eigene Nachbildung (HLE) – Laufzeiten der Firmware selbst werden nicht nachgebildet.