🕹️ Visuelle Erklärung · Retro-Computing

Z80-Assembler und die Firmware des CPC 6128

Der Amstrad/Schneider CPC hat ein Betriebssystem im ROM, das man aus Maschinensprache über Sprungleisten aufruft:CALL &BB5A gibt ein Zeichen aus,CALL &BB06 wartet auf eine Taste. Hier gibt es alle Einsprünge, für jeden ein lauffähiges Beispiel – und einen Z80-Emulator mit Debugger, der jeden Schritt sichtbar macht.

Firmware-Einsprünge
245
davon 202 in der Hauptsprungleiste
Z80-Takt
4 MHz
auf dem CPC wirksam ≈ 3,3 MHz (1-µs-Raster)
RAM beim 6128
128 KB
8 Blöcke à 16 KB, umschaltbar
Farben
27
3 Stufen je Grundfarbe: 3³
🧪
Simulation im Browser. Der Z80 wird Befehl für Befehl emuliert; die CPC-Firmware ist dagegen in TypeScript nachgebildet (HLE) – nach den Ein-/Ausgabebedingungen aus dem Firmware-Handbuch SOFT 968. Es wird kein ROM-Inhalt von Amstrad verwendet, der Zeichensatz ist ein gemeinfreier Ersatz.

🔍Was passiert bei CALL &BB5A?

Drei Befehle, die ein „A“ auf den Bildschirm bringen – Schritt für Schritt aufgezeichnet vom Emulator. Die violetten Zeilen sind Firmware-Schritte (im Simulator in TypeScript nachgebildet), alles andere sind echte Z80-Befehle.
Schritt 1 / 14 · Tasten ← →
  1. 1&4000LD A,&41
  2. 2&4002CALL &BB5A
  3. 3&BB5ARST &08; TXT OUTPUT
  4. 4&0008HLE ▸ LOW JUMP
  5. 5&0178HLE ▸ TXT OUTPUT
  6. 6&BDD9JP &0510; TXT OUT ACTION
  7. 7&0510HLE ▸ IND: TXT OUT ACTION
  8. 8&BDD3JP &0508; TXT WRITE CHAR
  9. 9&0508HLE ▸ IND: TXT WRITE CHAR
  10. 10&3602HLE ▸ TXT WRITE CHAR (Rückkehr)
  11. 11&3600HLE ▸ TXT OUTPUT (Rückkehr)
  12. 12&0600HLE ▸ LOW JUMP (Rückkehr: ROM-Zustand wiederherstellen)
  13. 13&4005RET
  14. 14&3FFCNOP
💬 Die Firmware erwartet das auszugebende Zeichen im Register A (Einsprungbedingung von TXT OUTPUT).
Stapel ab SP = &BFFE
&3FFC ← oben
&0000
&0000
&0000
Zustand
A = &FF („ÿ“)
unteres ROM: aus
oberes ROM: aus

🧭Kapitel

⚡Ein CPC-Programm in 60 Sekunden

; Maxam-/WinAPE-Stil: org, Labels, &-Hex
        org &4000
        ld hl,text
schleife:
        ld a,(hl)       ; Zeichen holen
        or a            ; 0 = Ende?
        ret z           ; zurück zu BASIC
        call &bb5a      ; TXT OUTPUT
        inc hl
        jr schleife
text:   db "Hallo CPC!",0
10 REM Aus BASIC laden und starten
20 MEMORY &3FFF           : ' BASIC bleibt unter &4000
30 FOR a=&4000 TO &4016
40   READ b$: POKE a,VAL("&"+b$)
50 NEXT
60 CALL &4000
70 DATA 21,0C,40,7E,B7,C8,CD,5A,BB,23,18
80 DATA F7,48,61,6C,6C,6F,20,43,50,43,21,00
✅ Probier es aus
Genau dieses Programm steckt im Debugger; die Bytes der DATA-Zeilen zeigt dort die Assembler-Liste. Mehr zum Laden aus BASIC auf der Seite Sprungleisten.

👾Mehr CPC in der Sammlung

💎

VisualBoulderDash – ein CPC-Spiel zerlegt

Sprites in Modus 0 mit der CPC-Farbpalette, Steuerung, Spielmechanik und Z80-Aufbau eines Klassikers – die Pixelkodierung dort ist dieselbe wie hier auf der Seite „Bildschirm & Farben“.

visualboulderdash.fusenigk.de ↗