Das Schneider CPC Systembuch

Die Firmware des Schneider CPC

CASSETTE MANAGER

Die Kassetten (und Disketten) Routinen.

Die von Die Abteilungen des Betriebssystems: AmsdosAMSDOS gepatchten Routinen sind entsprechend gekennzeichnet.

Diese Top-Level-Routinen können, bis auf CASSETTE MANAGER: BC92: CAS OUT ABANDONCAS OUT ABANDON und CASSETTE MANAGER: BC7D: CAS IN ABANDONCAS IN ABANDON, einen Der Linien-Algorithmus: Fehler 3Fehler zurückmelden. Dabei gibt es jedoch zum Teil erhebliche Unterschiede zwischen CAS-464, CAS-664/6128 und Die Abteilungen des Betriebssystems: AmsdosAmsdos.

Gemeinsam ist, dass bei erfolgreicher Beendigung einer Opertion das CY-Flag gesetzt wird:

Die Abteilungen des Betriebssystems: AmsdosAmsdos, CAS-464, CAS-664/6128:   CY=1  ->  o.k.

Die Kassetten-Operationen können gebreakt werden. Das wird Garbage Collection: ... beim CPC 464beim CPC 464 laut Fimware-Manual mit CY=0 und Z=1 vermerkt, bei CPC 664 und 6128 mit dem Fehlercode 0 im A-Register. Trotzdem scheinen beide Datentypen: Realreal gleich zu arbeiten:

CAS-464, CAS-664/6128:   CY=0 und Z=1 und Operationen: BD5B / 349A / 349A:  FLO SUBA=0 --> Break

Disketten-Operationen können nicht unterbrochen werden.

Alle andern Der Linien-Algorithmus: Fehler 3Fehler werden bei den Kassetten-Routinen immer mit CY=0 und Z=0 angemerkt. Der CPC 664/6128 gibt in Operationen: BD5B / 349A / 349A: FLO SUBA aber immer noch einen Fehler-Code aus.

Datei nicht eröffnet bzw.      CPC 464:       CY=0, Z=0  Operationen: BD5B / 349A / 349A:  FLO SUBA zwischen 1 und 5
bereits eine Datei eröffnet:   CPC 664/6128:  CY=0, Z=0  Operationen: BD5B / 349A / 349A:  FLO SUBA = 14

End of File:                   CPC 464:       CY=0, Z=0  Operationen: BD5B / 349A / 349A:  FLO SUBA zwischen 1 und 5
                               CPC 664/6128:  CY=0, Z=0  Operationen: BD5B / 349A / 349A:  FLO SUBA = 15

Die Abteilungen des Betriebssystems: AmsdosAmsdos kennt noch mehr Der Linien-Algorithmus: Fehler 3Fehler, die auch mit CY=0 gemeldet werden. Diese beiden Der Linien-Algorithmus: Fehler 3Fehler werden wie bei den Kassetten-Routinen mit Z=0 gemeldet, die anderen aber mit Z=1, was beim Kassettenbetrieb der Break-Meldung entspricht:

Amsdos-Fehlercodes

Der Fehlercode wird im A-Register zurückgegeben.

Logische Fehler:
&0LOW KERNEL JUMPBLOCK: 000E:  LOW PCBC INSTRUCTION
LOW KERNEL JUMPBLOCK: 001E: LOW PCHL INSTRUCTION
E
14 - Datei nicht eröffnet bzw. bereits eine Datei eröffnet. Z=0 &0F 15 - Ende der Datei (hard end) Z=0 &1Operationen: BD5B / 349A / 349A: FLO SUBA 26 - Ende der Datei (soft end: CHR 26 eingelesen) Z=0 &20 32 - unbekannter Befehl, Die Z80: Illegalsillegaler Dateiname. &21 33 - Datei existiert bereits. &22 34 - Datei existiert nicht. &23 35 - Inhaltsverzeichnis voll. &24 36 - Diskette voll. &25 37 - Diskette bei offener Datei gewechselt. &26 38 - Datei ist schreibgeschützt.
FDC-Fehler:

Datenbreite: Bits
Port B - Input: &F5xx: Bit 0:
Port B - Input: &F5xx: Bit 4:
Port B - Input: &F5xx: Bit 5:
Port B - Input: &F5xx: Bit 6:
Port B - Input: &F5xx: Bit 7:
Port C - Output: &F6xx: Bit 4:
Port C - Output: &F6xx: Bit 5:
Bit
6 (&40) ist gesetzt. Die folgenden Datenbreite: Bits
Port B - Input: &F5xx: Bit 0:
Port B - Input: &F5xx: Bit 4:
Port B - Input: &F5xx: Bit 5:
Port B - Input: &F5xx: Bit 6:
Port B - Input: &F5xx: Bit 7:
Port C - Output: &F6xx: Bit 4:
Port C - Output: &F6xx: Bit 5:
Bits
bedeuten:

&01  1 - ID- oder Data-Adress-Marke fehlt (Diskette ist nicht formatiert)
&02  2 - Diskette ist schreibgeschützt    (Schreibschutzkerbe ist geöffnet)
&04  4 - Sektor nicht auffindbar          (falsches Disketten-Format eingeloggt)
&08  8 - Laufwerk ist nicht bereit        (Diskette nicht/nicht richtig drin)
&10 16 - Puffer-Überlauf                  (dürfte nie vorkommen)
&20 32 - Kontrollsummen-Fehler            (Diskette möglicherweise beschaedigt)

Außerdem ist immer Datenbreite: Bits
Port B - Input: &F5xx: Bit 0:
Port B - Input: &F5xx: Bit 4:
Port B - Input: &F5xx: Bit 5:
Port B - Input: &F5xx: Bit 6:
Port B - Input: &F5xx: Bit 7:
Port C - Output: &F6xx: Bit 4:
Port C - Output: &F6xx: Bit 5:
Bit
7 (&80) gesetzt, wenn der Der Linien-Algorithmus: Fehler 3Fehler dem Anwender schon mitgeteilt wurde.

Die Fehler-Rückmeldung bei MAIN FIRMWARE JUMPBLOCK: CASSETTE MANAGER
Die Firmware des Schneider CPC: CASSETTE MANAGER
CAS
CAT weicht stark von diesem allgemeinen Muster ab und ist bei dem Vektor selbst erläutert.

BC65: CAS INITIALISE

Initialisiere die Kassetten-Routinen.

Eingaben:    keine
Ausgaben:    keine
Unverändert: IX und IY

Komplette Initialisierung der Kassetten-Routinen.

Die Eingabe- und Ausgabe-Datei wird als geschlossen markiert, Die Schreibgeschwindigkeit wird auf 1000 Baud eingestellt und die Meldungen der Kassetten-Routinen werden zugelassen.

Nur CPC 664 und 6128: Der Kassettenmotor wird ausgeschaltet.

BC68: CAS SET SPEED

Lege die Schreib-Geschwindigkeit neu fest.

Eingaben:    HL = Halbe Der Sound Manager: PeriodenlängePeriodenlänge eines 0-Datenbreite: Bits
Port B - Input: &F5xx: Bit 0:
Port B - Input: &F5xx: Bit 4:
Port B - Input: &F5xx: Bit 5:
Port B - Input: &F5xx: Bit 6:
Port B - Input: &F5xx: Bit 7:
Port C - Output: &F6xx: Bit 4:
Port C - Output: &F6xx: Bit 5:
Bits
Operationen: BD5B / 349A / 349A: FLO SUBA = Vorkompensation Ausgaben: keine Unverändert: BC,DE,IX und IY

Die einzelnen Datenbreite: Bits
Port B - Input: &F5xx: Bit 0:
Port B - Input: &F5xx: Bit 4:
Port B - Input: &F5xx: Bit 5:
Port B - Input: &F5xx: Bit 6:
Port B - Input: &F5xx: Bit 7:
Port C - Output: &F6xx: Bit 4:
Port C - Output: &F6xx: Bit 5:
Bits
werden als jeweils eine Periode (0- und 1- Pegel) eines Rechtecksignals auf der Kassette aufgezeichnet. Die Periode für ein 1-Datenbreite: Bits
Port B - Input: &F5xx: Bit 0:
Port B - Input: &F5xx: Bit 4:
Port B - Input: &F5xx: Bit 5:
Port B - Input: &F5xx: Bit 6:
Port B - Input: &F5xx: Bit 7:
Port C - Output: &F6xx: Bit 4:
Port C - Output: &F6xx: Bit 5:
Bit
ist dabei doppelt so lang wie für eine 0. HL enthält die Länge einer halben 0-Periode (Länge des 0- oder 1-Pegels) in Mikrosekunden. Hier sind Wert zwischen 130 und 480 zulässig.

Da die analoge Aufzeichnungs-Elektronik dazu neigt, die Signalflanke zwischen einem 0- und einem 1-Datenbreite: Bits
Port B - Input: &F5xx: Bit 0:
Port B - Input: &F5xx: Bit 4:
Port B - Input: &F5xx: Bit 5:
Port B - Input: &F5xx: Bit 6:
Port B - Input: &F5xx: Bit 7:
Port C - Output: &F6xx: Bit 4:
Port C - Output: &F6xx: Bit 5:
Bit
auf dem Band so zu verschieben, dass der Unterschied in der Der Sound Manager: PeriodenlängePeriodenlänge verringert wird, wird das bereits beim Aufzeichnen durch eine Precompensation die lange noch verlängert wird.

Folgende Werte werden standardmäßig benutzt:

1000 Baud: HL=333 und Operationen: BD5B / 349A / 349A:  FLO SUBA=25
2000 Baud: HL=167 und Operationen: BD5B / 349A / 349A:  FLO SUBA=50

BC6B: CAS NOISY

Lege fest, ob die Kassetten-Routinen ihre Meldungen unterdrücken sollen.

Eingaben:    Operationen: BD5B / 349A / 349A:  FLO SUBA = Ein- oder Ausschalt-Flag
Ausgaben:    keine
Unverändert: BC,DE,HL,IX,IY

Die Meldungen der Kassetten-Routinen werden unterdrückt, wenn in Operationen: BD5B / 349A / 349A: FLO SUBA ein Wert ungleich Real: NullNull übergeben wird. Betroffen sind:

• Press PLAY then any key:
• Press REC and PLAY then any key:
• Found <dateiname> Die Speicherkonfiguration im Schneider CPC: Blockblock <nummer>
• Loading <dateiname> Die Speicherkonfiguration im Schneider CPC: Blockblock <nummer>
• Saving <dateiname> Die Speicherkonfiguration im Schneider CPC: Blockblock <nummer>

Diese Fehlermeldungen werden nicht beeinflusst:

Alle noch folgenden Anschlüsse fallen unter die Rubrik STEUER- oder auch CONTROLBUS:: RD und WR - read und write
Erklärung zu den Anschluss-Bezeichnungen: RD - Read
Read
error <code>
Alle noch folgenden Anschlüsse fallen unter die Rubrik STEUER- oder auch CONTROLBUS:: RD und WR - read und write
Erklärung zu den Anschluss-Bezeichnungen: WR - Write
Write
error <code>
• Rewind tape

BC6E: CAS START MOTOR

Starte den Motor des Kassetten-Rekorders.

Eingaben:    keine
Ausgaben:    Operationen: BD5B / 349A / 349A:  FLO SUBA = alter Zustand des Motor-Relais
             CY=1 => o.k. / CY=0 => [ESC]
Unverändert: BC,DE,HL,IX,IY

Diese Routine startet den Motor immer. Lief er vorher noch nicht, wird MAIN FIRMWARE JUMPBLOCK: CASSETTE MANAGER
Die Firmware des Schneider CPC: CASSETTE MANAGER
ca
. 2 Sekunden gewartet außer wenn [ESC] gedrückt wird. Das signalisiert die Routine mit dem CY-Flag.

BC71: CAS STOP MOTOR

Alle noch folgenden Anschlüsse fallen unter die Rubrik STEUER- oder auch CONTROLBUS:: HaltHalte den Motor des Kassetten-Rekorders an.

Eingaben:    keine
Ausgaben:    Operationen: BD5B / 349A / 349A:  FLO SUBA = alter Zustand des Motor-Relais
             CY=1 => o.k. / CY=0 => [ESC]
Unverändert: BC,DE,HL,IX,IY

Diese Routine stoppt den Motor immer.

BC74: CAS RESTORE MOTOR

Starte oder stoppe den Motor entsprechend einer früheren Einstellung.

Eingaben:    Operationen: BD5B / 349A / 349A:  FLO SUBA = alter Zustand des Motor-Relais
Ausgaben:    CY=1 => o.k. / CY=0 => [ESC]
Unverändert: BC,DE,HL,IX,IY

Der Motor wird immer entsprechend Operationen: BD5B / 349A / 349A: FLO SUBA gestoppt oder gestartet. Wie bei &BC6E CAS START MOTOR wird auf die Hochlaufzeit verzichtet, wenn [ESC] gedrückt wird. Das wird in beiden Fällen mit dem CY-Flag angezeigt.

BC77: CAS IN OPEN

Eröffne eine Datei zur Eingabe.

Wird von Die Abteilungen des Betriebssystems: AmsdosAmsdos gepatcht.

Eingaben:    LOW KERNEL JUMPBLOCK: 000B:  LOW KL LOW PCHL
LOW KERNEL JUMPBLOCK: 001B: LOW KL FAR PCHL
LOW KERNEL JUMPBLOCK: 003B: LOW EXT INTERRUPT
B
= Länge des Dateinamen HL = Adresse des Dateinamen DE = Adresse des 2k-Input-Puffers Ausgaben: CY = 0 => Der Linien-Algorithmus: Fehler 3Fehler. (Beschreibung am Anfang dieses Packs.) CY = 1 => o.k. und: Operationen: BD5B / 349A / 349A: FLO SUBA = Dateity BC = logische Dateilänge DE = Einsprungsadresse (bei Maschinencode) HL = Adresse des 64-Byte-Puffers mit dem Fileheader Unverändert: IY

Der Dateinamen kann im gesamten RAM liegen. Kleinbuchstaben werden in Grossbuchstaben umgewandelt.

Der Puffer kann ebenfalls im gesamten RAM liegen und wird so lange benutzt, bis die Datei mit CASSETTE MANAGER: BC7A: CAS IN CLOSECAS IN CLOSE oder CASSETTE MANAGER: BC7D: CAS IN ABANDONCAS IN ABANDON wieder geschlossen wird.

Die ersten 2 kByte der Datei werden sofort gelesen, wodurch auch sofort der Fileheader zur Verfügung steht. ASCII-Dateien auf Diskette haben keinen Amsdos: HeaderHeader!

BC7A: CAS IN CLOSE

Schließe eine Eingabe-Datei.

Wird von Die Abteilungen des Betriebssystems: AmsdosAmsdos gepatcht.

Eingaben:    keine
Ausgaben:    CY=0 => Der Linien-Algorithmus: Fehler 3Fehler. (Beschreibung am Anfang dieses Packs.)
             CY=1 => o.k.
Unverändert: IX,IY

Nach Aufruf dieser Routine kann eine neue Eingabe-Datei eröffnet werden. Außerdem wird der Input-Puffer freigegeben.

BC7D: CAS IN ABANDON

Vergesse, dass eine Datei zur Eingabe eröffnet ist.

Wird von Die Abteilungen des Betriebssystems: AmsdosAmsdos gepatcht.

Eingaben:    keine
Ausgaben:    keine
Unverändert: IX,IY

Diese Routine wirkt wie &CASSETTE MANAGER: BC7A: CAS IN CLOSEBC7A CAS IN CLOSE, ist aber hauptsächlich für den Fehlerfall gedacht.

BC80: CAS IN CHAR

Lese ein Zeichen aus der Eingabe-Datei.

Wird von Die Abteilungen des Betriebssystems: AmsdosAmsdos gepatcht.

Eingaben:    keine
Ausgaben:    CY=0 => Der Linien-Algorithmus: Fehler 3Fehler. (Beschreibung am Anfang dieses Packs.)
             CY=1 => o.k. Operationen: BD5B / 349A / 349A:  FLO SUBA=Zeichen.
Unverändert: BC,DE,HL,IY

Dateien können nur ausschließlich zeichenweise oder nur en Die Speicherkonfiguration im Schneider CPC: Blockblock gelesen werden. Ein Mischen der beiden Lesarten ist nicht möglich.

Nur Die Abteilungen des Betriebssystems: AmsdosAmsdos:

Das Ende von ASCII-Dateien wird normalerweise mit dem Zeichen 26 gekennzeichnet (CTRL-Z = Soft End). Durch einen Der Linien-Algorithmus: Fehler 3Fehler im Die Abteilungen des Betriebssystems: AmsdosAmsdos signalisiert diese Routine auch bei Binär-Dateien ein EOF, wenn dieses Zeichen gelesen wird. Das ist in einem Maschinesprache- Programm leicht abfangbar. Ist CY=0, muss man nur Erklärung der Anschlussbelegung: Testtesten, ob Operationen: BD5B / 349A / 349A: FLO SUBA diesen Wert enthält. Dann muss man die Fehlermeldung einfach ignorieren.

BC83: CAS IN DIRECT

Lese die Eingabe-Datei in einem Zug.

Wird von Die Abteilungen des Betriebssystems: AmsdosAmsdos gepatcht.

Eingaben:    HL=Startadresse im RAM, ab der die Datei eingelesen werden soll.
Ausgaben:    CY=0  =>  Der Linien-Algorithmus: Fehler 3Fehler. (Beschreibung am Anfang dieses Packs.)
             CY=1  =>  o.k. und HL=Einsprungsadresse
Unverändert: IY

CASSETTE MANAGER: BC83: CAS IN DIRECTCAS IN DIRECT kann nur direkt nach &CASSETTE MANAGER: BC77: CAS IN OPENBC77 CAS IN OPEN aufgerufen werden. Es darf noch kein Zeichen mit &CASSETTE MANAGER: BC80: CAS IN CHARBC80 CAS IN CHAR gelesen Datenbreite: Wordsworden sein.

Nur Die Abteilungen des Betriebssystems: AmsdosAmsdos:

ASCII-Dateien von der Diskette können nicht en Die Speicherkonfiguration im Schneider CPC: Blockblock gelesen werden, da sie keinen Amsdos: HeaderHeader haben.

BC86: CAS RETURN

Gebe das zuletzt gelesene Zeichen noch einmal zurück.

Wird von Die Abteilungen des Betriebssystems: AmsdosAmsdos gepatcht.

Eingaben:    keine
Ausgaben:    keine
Unverändert: AF,BC,DE,HL,IX,IY

Mit diesem Vektor kann das zuletzt mit &CASSETTE MANAGER: BC80: CAS IN CHARBC80 CAS IN CHAR gelesene Zeichen zurückgegeben werden. Es kann nur ein Zeichen zurückgegeben werden und es muss auch bereits ein Zeichen gelesen Datenbreite: Wordsworden sein. Nach dem Erklärung der Anschlussbelegung: TestTest auf EOF kann das Zeichen 'Soft End' (Fehlercode 26) zurückgegeben werden, nicht aber 'Hard End' oder 'Datei nicht eröffnet' (Fehlercodes 14 und 15).

BC89: CAS TEST EOF

Prüfe, ob das Ende der Eingabe-Datei erreicht ist.

Wird von Die Abteilungen des Betriebssystems: AmsdosAmsdos gepatcht.

Eingaben:    keine
Ausgaben:    CY=0  =>  Der Linien-Algorithmus: Fehler 3Fehler. (Beschreibung am Anfang dieses Packs.)
             CY=1  =>  alles o.k. (kein EOF)
Unverändert: BC,DE,HL,IY

Das File-Ende kann (sinnvollerweise) nur bei zeichenweise Eingabe getestet werden. Dies geschieht, indem ein Zeichen gelesen und, sofern kein 'hard end' erkannt wird, wieder zurückgestellt wird.

BC8C: CAS OUT OPEN

Eröffne eine Datei zur Ausgabe.

Wird von Die Abteilungen des Betriebssystems: AmsdosAmsdos gepatcht.

Eingaben:    LOW KERNEL JUMPBLOCK: 000B:  LOW KL LOW PCHL
LOW KERNEL JUMPBLOCK: 001B: LOW KL FAR PCHL
LOW KERNEL JUMPBLOCK: 003B: LOW EXT INTERRUPT
B
=Länge des Dateinamens HL=Adresse des Dateinamens im RAM DE=Adresse eines 2k-Output-Puffers Ausgaben: CY=0 => Der Linien-Algorithmus: Fehler 3Fehler. (Beschreibung am Anfang dieses Packs.) CY=1 => o.k. HL zeigt auf den zukuenftigen Fileheader Unverändert: IY

Der Output-Puffer wird nur benutzt, wenn die Datei zeichenweise geschrieben wird. Die Abteilungen des Betriebssystems: AmsdosAmsdos testet mit Aufruf dieser Routine sofort, ob im angesprochenen Laufwerk eine Diskette eingelegt ist.

Im Fileheader können dann unter anderem folgende Felder beschrieben werden:

• Dateityp (default: ASCII-Datei)
• logische Dateilänge
• Einsprungsadresse

ASCII-Dateien auf Diskette werden ohne Amsdos: HeaderHeader abgespeichert.

BC8F: CAS OUT CLOSE

Schließe die Ausgabe-Datei.

Wird von Die Abteilungen des Betriebssystems: AmsdosAmsdos gepatcht.

Eingaben:    keine
Ausgaben:    CY=0 => Der Linien-Algorithmus: Fehler 3Fehler. (Beschreibung am Anfang dieses Packs.)
             CY=1 => o.k.
Unverändert: IY

Jede Ausgabe-Datei muss mit CASSETTE MANAGER: BC8F: CAS OUT CLOSECAS OUT CLOSE geschlossen werden, auch wenn sie mit &&CASSETTE MANAGER: BC98: CAS OUT DIRECTBC98 CAS OUT DIRECT geschrieben wurde. Sonst wird der letzte Die Speicherkonfiguration im Schneider CPC: BlockBlock nicht auf Band gespeichert, bzw. die Datei nicht in's Inhaltsverzeichnis der Diskette eingetragen.

Trat ein Der Linien-Algorithmus: Fehler 3Fehler auf (ESC), wird die Datei nicht korrekt geschlossen. Nachdem diese Routine aufgerufen wurde, kann der Output-Puffer wieder für andere Zwecke benutzt werden.

BC92: CAS OUT ABANDON

Vergesse die Ausgabe-Datei. Hierbei gehen immer größere Datenmengen verloren.

Wird von Die Abteilungen des Betriebssystems: AmsdosAmsdos gepatcht.

Eingaben:    keine
Ausgaben:    keine
Unverändert: IX,IY

Diese Routine ist für den Fehlerfall gedacht. Der letzte Datenblock wird nicht gespeichert und, bei Die Abteilungen des Betriebssystems: AmsdosAmsdos, die Datei nicht in's Inhaltsverzeichnis der Diskette eingetragen. Wie bei &CASSETTE MANAGER: BC8F: CAS OUT CLOSEBC8F CAS OUT CLOSE kann nachher der Output-Puffer wieder benutzt und eine neue Ausgabe-Datei eröffnet werden.

BC95: CAS OUT CHAR

Schreibe ein Zeichen in die Ausgabe-Datei.

Wird von Die Abteilungen des Betriebssystems: AmsdosAmsdos gepatcht.

Eingaben:    Operationen: BD5B / 349A / 349A:  FLO SUBA = Zeichencode
Ausgaben:    CY=0 => Der Linien-Algorithmus: Fehler 3Fehler. (Beschreibung am Anfang dieses Packs.)
             CY=1 => o.k.
Unverändert: BC,DE,HL,IY

Diese Routine kann nicht gemischt mit &CASSETTE MANAGER: BC98: CAS OUT DIRECTBC98 CAS OUT DIRECT benutzt werden.

BC98: CAS OUT DIRECT

Schreibe die Ausgabe-Datei in einem Zug.

Wird von Die Abteilungen des Betriebssystems: AmsdosAmsdos gepatcht.

Eingaben:    Operationen: BD5B / 349A / 349A:  FLO SUBA =Dateity
             BC=Einsprungsadresse
             DE=Länge des abzuspeichernden Bereiches
             HL=Startadresse im RAM.
Ausgaben:    CY=0 => Der Linien-Algorithmus: Fehler 3Fehler. (Beschreibung am Anfang dieses Packs.)
             CY=1 => o.k.
Unverändert: IY

CASSETTE MANAGER: BC98: CAS OUT DIRECTCAS OUT DIRECT darf pro Datei nur einmal aufgerufen werden (man kann die Datei nicht in mehreren Abschnitten speichern). Außerdem kann dieser Vektor nicht mit &CASSETTE MANAGER: BC95: CAS OUT CHARBC95 CAS OUT CHAR gemishct benutzt werden.

BC9B: CAS CATALOG

Erstelle ein Inhaltsverzeichnis.

Wird von Die Abteilungen des Betriebssystems: AmsdosAmsdos gepatcht.

Eingaben:    DE=Adresse eines 2k-Puffers
Ausgaben:    CY, Z und Operationen: BD5B / 349A / 349A:  FLO SUBA enthalten Informationen über Erfolg oder Der Linien-Algorithmus: Fehler 3Fehler.
Unverändert: DE,IY

CASSETTE MANAGER: BC9B: CAS CATALOGCAS CATALOG benutzt den Input-Strom, deshalb darf keine Eingabe-Datei eröffnet sein. Einleitung: BASIC
Anhang: Basic
Basic
schließt eine evtl. geöffnete Eingabe-Datei. Nach Aufruf dieses Vektors sind der Input-Strom geschlossen (es kann sofort eine Datei zum Lesen eröffnet werden) und die Der Cassette Manager: Kassetten-MeldungenKassetten-Meldungen zugelassen.

Die Ausgabe-Bedingungen für die Katalog-Routinen unterscheiden sich unverständlicherweise stark von denen der anderen High- Level-Routinen.

Erfolgreicher Katalog:

Der Der Cassette Manager: KatalogKatalog von Kassette muss gebreakt werden, weil er sonst bis zum St-Nimmerleinstag andauert. Trotzdem wird das nicht als Der Linien-Algorithmus: Fehler 3Fehler mit CY=0 angemerkt. Im Gegensatz dazu muss ein Der Cassette Manager: KatalogKatalog von Diskette nicht gebreakt werden. Dafür merkt aber jetzt Die Abteilungen des Betriebssystems: AmsdosAmsdos einen Der Linien-Algorithmus: Fehler 3Fehler an! Möglicherweise wollte man damit zum Kassetten- Der Cassette Manager: KatalogKatalog kompatibel sein und nahm für dessen Return-Bedingung (fälschlicherweise) das Standard-Verhalten 'Break=Der Linien-Algorithmus: Fehler 3Fehler<->CY=0' an.

MAIN FIRMWARE JUMPBLOCK: CASSETTE MANAGER
Die Firmware des Schneider CPC: CASSETTE MANAGER
CAS
CAT o.k.: CY=1 DISC CAT o.k.: CY=0 und Z=0
Fehler: Input-Stream in use:
MAIN FIRMWARE JUMPBLOCK: CASSETTE MANAGER
Die Firmware des Schneider CPC: CASSETTE MANAGER
CAS
CAT 464: CY=0, Z=0, Operationen: BD5B / 349A / 349A: FLO SUBA=1 (1...5) MAIN FIRMWARE JUMPBLOCK: CASSETTE MANAGER
Die Firmware des Schneider CPC: CASSETTE MANAGER
CAS
CAT 664/6128: CY=0, Z=0, Operationen: BD5B / 349A / 349A: FLO SUBA=14 = Fehlercode DISC CAT: o.k., der Strom wird vorher geschlossen.
Hardware-Fehler:
MAIN FIRMWARE JUMPBLOCK: CASSETTE MANAGER
Die Firmware des Schneider CPC: CASSETTE MANAGER
CAS
CAT: Lesefehler werden im Der Cassette Manager: KatalogKatalog vermerkt. Führt nicht zum Abbruch. DISC CAT: CY=0, Z=1, Operationen: BD5B / 349A / 349A: FLO SUBA=Fehlercode

BC9E: CAS WRITE

Schreibe einen Speicherbereich auf die Kassette.

Eingaben:    HL=Startadresse des Datenblocks im RAM
             DE=Länge des Die Speicherkonfiguration im Schneider CPC: BlockBlocks
             Operationen: BD5B / 349A / 349A:  FLO SUBA = Synchronisationszeichen
Ausgaben:    CY=1  =>  o.k.
             CY=0  =>  Der Linien-Algorithmus: Fehler 3Fehler. Operationen: BD5B / 349A / 349A:  FLO SUBA enthält den Fehlercode
Unverändert: IY

Diese und die folgenden beiden Routinen sind die 'Low Level Routinen' des Cassette Managers. Mit dieser Routine können beliebig lange Die Speicherkonfiguration im Schneider CPC: BlockBlocks zusammenhängend auf Band gespeichert werden. Die Blocklänge 0 wird dabei als 65536 interpretiert.

Die möglichen Fehlercodes sind:

0 - Break
1 - Alle noch folgenden Anschlüsse fallen unter die Rubrik STEUER- oder auch CONTROLBUS:: RD und WR - read und write
Erklärung zu den Anschluss-Bezeichnungen: WR - Write
Write
error Operationen: BD5B / 349A / 349A: FLO SUBa: Overrun (zu kleine Werte in &CASSETTE MANAGER: BC68: CAS SET SPEEDBC68 CAS SET SPEED angegeben)

Das Synchronisationszeichen wird von den normalen Datei-Routinen benutzt, um hier mit verschiedenen Werten den Amsdos: HeaderHeader und den Datenblock unterscheiden zu können:

Sync = &2C  ->  Amsdos: HeaderHeader
Sync = &16  ->  Daten

Alle drei Routinen frieren für die Dauer ihrer Arbeit Anhang: Die Tonausgabedie Tonausgabe ein, verbieten in dieser Zeit Alle noch folgenden Anschlüsse fallen unter die Rubrik STEUER- oder auch CONTROLBUS:: INT - InterruptInterrupts, schalten das Motor-Relais automatisch ein und restaurieren dessen alten Zustand nachher wieder. Außerdem arbeiten sie generell nur im RAM.

BCA1: CAS READ

Lese einen Speicherbereich von Kassette ein.

Eingaben:    HL = Zieladresse für die Daten im RAM
             DE = maximale Anzahl Datentypen: Bytes
Datenbreite: Bytes
Bytes
, die gelesen werden sollen. Operationen: BD5B / 349A / 349A: FLO SUBA = Synchronisationszeichen. Ausgaben: CY=1 => o.k. CY=0 => Der Linien-Algorithmus: Fehler 3Fehler oder [ESC]. Operationen: BD5B / 349A / 349A: FLO SUBA enthält einen Fehlercode. Unverändert: IY

Es ist nicht unbedingt nötig, einen kompletten Die Speicherkonfiguration im Schneider CPC: BlockBlock von Kassette zu lesen. Mit DE kann man die Maximal-Länge festlegen. Ist der Die Speicherkonfiguration im Schneider CPC: BlockBlock auf dem Band allerdings kürzer, wird im Allgemeinen Der Linien-Algorithmus: Fehler 3Fehler 1 erzeugt. Folgende Fehlercodes sind möglich:

0 - Break
1 - Alle noch folgenden Anschlüsse fallen unter die Rubrik STEUER- oder auch CONTROLBUS:: RD und WR - read und write
Erklärung zu den Anschluss-Bezeichnungen: RD - Read
Read
error Operationen: BD5B / 349A / 349A: FLO SUBa: gelesene Periode auf Kassette war unleserlich lang. 2 - Alle noch folgenden Anschlüsse fallen unter die Rubrik STEUER- oder auch CONTROLBUS:: RD und WR - read und write
Erklärung zu den Anschluss-Bezeichnungen: RD - Read
Read
error LOW KERNEL JUMPBLOCK: 000B: LOW KL LOW PCHL
LOW KERNEL JUMPBLOCK: 001B: LOW KL FAR PCHL
LOW KERNEL JUMPBLOCK: 003B: LOW EXT INTERRUPT
b
: Prüfsummenfehler

Ansonsten gilt das Selbe wie bei &CASSETTE MANAGER: BC9E: CAS WRITEBC9E CAS WRITE.

BCA4: CAS CHECK

Vergleiche die Daten auf der Kassette mit einem Speicherbereich.

Eingaben:    HL = Startadresse der Vergleichsdaten im RAM
             DE = Länge des Die Speicherkonfiguration im Schneider CPC: BlockBlocks
             Operationen: BD5B / 349A / 349A:  FLO SUBA  = Synchronisationszeichen
Ausgaben:    CY=1  =>  o.k.
             CY=0  =>  Der Linien-Algorithmus: Fehler 3Fehler, Operationen: BD5B / 349A / 349A:  FLO SUBA=Fehlercode
Unverändert: IY

Die möglichen Fehlercodes sind die selben, wie bei &CASSETTE MANAGER: BCA1: CAS READBCA1 CAS READ, zusätzlich noch der folgende:

3 - Alle noch folgenden Anschlüsse fallen unter die Rubrik STEUER- oder auch CONTROLBUS:: RD und WR - read und write
Erklärung zu den Anschluss-Bezeichnungen: RD - Read
Read
error c: Im RAM steht etwas anderes, als gelesen wurde.

Ansonsten gilt wieder das bei &CASSETTE MANAGER: BC98: CAS OUT DIRECTBC98 CASSETTE MANAGER: BC9E: CAS WRITECAS WRITE gesagte.

Valid HTML   Valid CSS