Hauptsprungleiste💾 Cassette Manager / AMSDOSEintrag Nr. 137CPC 464/664/6128

CAS CATALOG

&BC9B

Einen Katalog von Band erzeugen.

Original (SOFT 968): „Generate a catalogue from tape.“

🔀Wie der Aufruf die Routine erreicht

Dein Programm            RAM-Sprungleiste            Low Kernel (RAM/ROM)        unteres ROM
─────────────            ────────────────            ────────────────────        ───────────
CALL &BC9B  ───────▶  &BC9B: RST 1 ─────────▶  &0008 LOW JUMP:           CAS CATALOG
                         DW Low Address            ROM-Zustand merken,  ───▶  (Routine)
                         (Bit 15 = oberes ROM aus)  unteres ROM an                  │
     ◀──────────────────────────────────────────  ROM-Zustand zurück  ◀──── RET ──┘

📖Beschreibung

⚙️ Wirkung

  • Dateiblöcke lesen, um ihre Gültigkeit zu prüfen und Informationen darüber auf dem Bildschirm ausgeben.

🧮 Register auf einen Blick

EingabeDE
AusgabeCarryZero
verändertABCDEFHLIX

Automatisch aus den Bedingungen abgeleitet – bei Fallunterscheidungen („wenn … dann“) gilt der Volltext unten.

➡️ Einsprungbedingungen

  • DE enthält die Adresse eines zu verwendenden 2K-Puffers.

⬅️ Rücksprungbedingungen

  • Wenn die Katalogisierung erfolgreich war:
  • Carry gesetzt.
  • Zero gelöscht.
  • A verändert.
  • Wenn der Lesestream in Verwendung war:
  • 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 Register bleiben erhalten.

📝 Hinweise aus dem Handbuch

  • Diese Routine kann nur eine Fehlernummer zurückgeben:
  • #0E: Der Stream ist bereits in Verwendung.
  • Diese Routine verwendet den Lesestream, daher muss der Stream geschlossen sein, wenn sie aufgerufen wird. Der Lesestream bleibt geschlossen, wenn diese Routine beendet wird. Der Schreibstream wird von dieser Routine nicht beeinflusst.
  • Beim Katalogisieren liest der Cassette Manager einen Kopfdatensatz, druckt Informationen daraus und liest dann den Datensatz. Dieser Zyklus wiederholt sich, bis der Benutzer die Escape-Taste drückt. Die gedruckten Informationen sind wie folgt:
  • DATEINAME Block N T Ok
  • DATEINAME ist der Name der Datei auf dem Band, oder 'Unbenannte Datei', wenn der Dateiname mit einem Nullzeichen (Zeichen #00) beginnt.
  • N ist die Nummer des Blocks. Block 1 ist normalerweise der erste Block in einer Datei.
  • T ist eine Darstellung des Dateityps der Datei. Sie wird gebildet, indem #24 (das Zeichen '$') zum Dateityp-Byte addiert wird, das mit #0F maskiert wurde (um das Versionsnummernfeld zu entfernen). Die Standard-Dateitypen sind somit:
  • $ eine BASIC-Programmdatei
  • % eine geschützte BASIC-Programmdatei
  • * eine ASCII-Textdatei (Standard-Dateityp)
  • & eine Binärdatei.
  • ‘ eine geschützte Binärdatei
  • Andere Dateitypen sind möglich, wurden aber nicht vom BASIC im eingebauten ROM geschrieben. Siehe Abschnitt 8.4 für eine Beschreibung des Dateityp-Bytes.
  • Ok wird nach dem Ende des Datensatzes gedruckt. Dies zeigt, dass die Daten fehlerfrei gelesen wurden, und dient auch dazu, das Ende der Daten auf dem Band anzuzeigen (um zu helfen, ein Überschreiben einer Banddatei zu vermeiden).

💾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

  • Das Disk-Verzeichnis für das aktuelle Laufwerk und den aktuellen Benutzer anzeigen. Das Verzeichnis wird in alphabetischer Reihenfolge sortiert und in so vielen Spalten angezeigt, wie in das aktuelle Textfenster (Stream #0) passen. Die Größe in Kbytes wird neben jeder Datei angezeigt. Der gesamte freie Speicherplatz auf der Disk wird ebenfalls angezeigt.

🧮 Register auf einen Blick

EingabeDE
AusgabeACarryZero
verändertABCDEFHLIX

Automatisch aus den Bedingungen abgeleitet – bei Fallunterscheidungen („wenn … dann“) gilt der Volltext unten.

➡️ Einsprungbedingungen

  • DE enthält die Adresse eines zu verwendenden 2K-Puffers.

⬅️ Rücksprungbedingungen

  • Wenn die Katalogisierung erfolgreich war:
  • Carry gesetzt.
  • Zero gelöscht.
  • Ein verändert.
  • Wenn aus irgendeinem Grund fehlgeschlagen:
  • Carry gelöscht.
  • Zero gesetzt.
  • A enthält eine Fehlernummer.
  • Immer:
  • BC, DE, HL, IX und andere Flags verändert.
  • Alle Register erhalten.

📝 Hinweise aus dem Handbuch

  • Dateien, die mit SYS markiert sind, werden nicht angezeigt.
  • Dateien, die mit R/O markiert sind, werden mit einem '*' nach dem Dateinamen angezeigt.
  • Anders als bei der Kassettenversion dieser Routine ist der Disk-Eingabestream nicht erforderlich. (Hinweis: BASIC gibt sowohl den Eingabe- als auch den Ausgabestream auf, wenn der Katalog generiert wird.)

🧪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.
bereit
🐞 Im großen Debugger öffnen
ℹ️ Die Dateiliste ist erfunden und nur im Browser gespeichert.
0
1
2
3
Rand
Modus 1 · Basis &C000 · Versatz &0000
Tastenpuffer: 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)
0000HLE ▸ RESET ENTRY
0002RET
0003NOP
0004NOP
0005NOP
0006NOP
0007NOP
0008HLE ▸ LOW JUMP
Firmware
Firmware jetzt
▶ RESET ENTRY · Details
Letzte Falle: –
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)
DateiTypLängeLaden
HALLO.TXTASCII33–
ZAHLEN.BINbinär6&5000
MUSTER.DATbinär16&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.