Hauptsprungleiste💾 Cassette Manager / AMSDOSEintrag Nr. 133CPC 464/664/6128
CAS OUT CLOSE
&BC8F
Die Ausgabedatei ordnungsgemäß schließen.
Original (SOFT 968): „Close the output file properly.“
🔀Wie der Aufruf die Routine erreicht
Dein Programm RAM-Sprungleiste Low Kernel (RAM/ROM) unteres ROM
───────────── ──────────────── ──────────────────── ───────────
CALL &BC8F ───────▶ &BC8F: RST 1 ─────────▶ &0008 LOW JUMP: CAS OUT CLOSE
DW Low Address ROM-Zustand merken, ───▶ (Routine)
(Bit 15 = oberes ROM aus) unteres ROM an │
◀────────────────────────────────────────── ROM-Zustand zurück ◀──── RET ──┘📖Beschreibung
⚙️ Wirkung
- Den Schreibstrom als geschlossen markieren und den letzten Pufferbereich mit Daten auf Band schreiben.
🧮 Register auf einen Blick
Eingabekeine
AusgabeCarryZero
verändertABCDEFHLIX
Automatisch aus den Bedingungen abgeleitet – bei Fallunterscheidungen („wenn … dann“) gilt der Volltext unten.
➡️ Einsprungbedingungen
- Keine Bedingungen.
⬅️ Rücksprungbedingungen
- Wenn der Strom ordnungsgemäß geschlossen wurde:
- Carry gesetzt.
- Zero gelöscht.
- A verändert.
- Wenn der Strom nicht geöffnet ist:
- Carry gelöscht.
- Zero gelöscht.
- In V1.1: A enthält eine Fehlernummer (#0E).
- In V1.0: A verändert.
- Immer:
- BC, DE, HL, IX und andere Flags verändert.
- Alle anderen Register bleiben erhalten.
📝 Hinweise aus dem Handbuch
- Diese Routine kann zwei Fehlernummern zurückgeben:
- #00: Der Benutzer hat Escape gedrückt.
- #0E: Der Strom ist nicht geöffnet.
- Es ist notwendig, diese Routine nach der Verwendung von CAS OUT CHAR oder CAS OUT DIRECT aufzurufen, um zu bewirken, dass der letzte Datenblock auf das Band geschrieben wird. Wenn der Block null Bytes lang ist (nichts in die Datei geschrieben wurde), wird nichts auf Band geschrieben.
- Wenn das Schreiben abgebrochen werden soll, sollte CAS OUT OPEN aufgerufen werden, da dies den letzten Datenblock nicht auf das Band schreibt.
- Wenn der Benutzer während des Schreibens des letzten Blocks Escape drückt, bleibt die Datei geöffnet und wird nicht geschlossen.
- Der Benutzer kann den an CAS OUT OPEN übergebenen Puffer nach dem Aufruf dieser Routine zurückfordern.
💾Variante mit AMSDOS (Diskette, CPC 664/6128)
Auf dem 664 und 6128 lenkt AMSDOS diesen Kassetten-Einsprung auf das Diskettenlaufwerk um (mit |TAPE zurück auf Kassette). Das Handbuch beschreibt die Diskettenfassung getrennt:
⚙️ Wirkung
- Den Schreibstrom als geschlossen markieren und ihm seinen korrekten Namen geben.
🧮 Register auf einen Blick
Eingabekeine
AusgabeACarryZero
verändertABCDEFHLIX
Automatisch aus den Bedingungen abgeleitet – bei Fallunterscheidungen („wenn … dann“) gilt der Volltext unten.
➡️ Einsprungbedingungen
- Keine Bedingungen.
⬅️ Rücksprungbedingungen
- Wenn der Strom ordnungsgemäß geschlossen wurde:
- Carry gesetzt.
- Zero gelöscht.
- A verändert.
- Wenn der Stream nicht geöffnet ist:
- Carry gelöscht.
- Zero gelöscht.
- A enthält eine Fehlernummer (#0E).
- Wenn das Schließen aus einem anderen Grund fehlgeschlagen ist:
- Carry gelöscht.
- Zero gesetzt.
- A enthält eine Fehlernummer.
- Immer:
- BC, DE, HL, IX und andere Flags verändert.
- Alle anderen Register bleiben erhalten.
📝 Hinweise aus dem Handbuch
- Es ist notwendig, diese Routine nach der Verwendung von CAS OUT CHAR oder CAS OUT DIRECT aufzurufen, um sicherzustellen, dass alle Daten auf die Disc geschrieben werden, um den Header an den Anfang der Datei zu schreiben und um der Datei ihren wahren Namen zu geben.
- Wenn keine Daten in die Datei geschrieben wurden, dann wird sie verworfen und nichts auf die Disc geschrieben. Dies dient der Kompatibilität mit Kassettenroutinen.
- der Datei ihren wahren Namen zu geben und jede vorhandene Version umzubenennen, sodass sie einen '.BAK'-Typteil erhält. Dies stellt sicher, dass jede vorherige Version der Datei automatisch als Backup behalten wird. Jede vorhandene '.BAK'-Version wird gelöscht. Wenn der Aufrufer beim Öffnen der Datei den Typteil nicht angegeben hat, dann verwendet AMSDOS den Typteil '.BAS' für BASIC-Dateien, '.BIN' für Binärdateien und '. ' für alle anderen Dateien, wie durch das Dateitypfeld im Header angegeben.
- Wenn die tatsächliche Länge der Datei kein Vielfaches von 128 Bytes (ein CP/M-Record) ist, dann wird ein CP/M-Dateiendezeichen, #1A, an die Datei angehängt. Dieses zusätzliche Zeichen wird nicht in der Länge der Datei erfasst.
- Wenn das Schreiben abgebrochen werden soll, dann sollte CAS OUT OPEN aufgerufen werden, da dies keine weiteren Daten auf die Disc schreibt.
- Der Benutzer kann den an CAS OUT OPEN übergebenen Puffer nach dem Aufruf dieser Routine zurückfordern.
🧪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.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.