AmsdosLow Level Disc DrivingNicht nur Die Abteilungen des Betriebssystems: Der Cassette Manager Die Namen dieser Routinen sind alle ein Datentypen: Bytes Low Level Kommandos von Amsdos:+------+-----------------------+-----------------------------------------------+ | Name | Die Fließkomma-Routinen: FunktionenFunktion | Eingaben | +------+-----------------------+-----------------------------------------------+ | &81 | Low Level Disc Driving: &81 Message on/offMessage ON/OFF | Operationen: BD5B / 349A / 349A: FLO SUBA=0 => ON Operationen: BD5B / 349A / 349A: FLO SUBA<>0 => OFF | | &82 | Low Level Disc Driving: &82 Drive ParameterDrive Parameter | HL zeigt auf Tabelle mit div. Zeitkonstanten. | | &83 | Low Level Disc Driving: &83 Disc Format ParameterDisc Format Parameter | Operationen: BD5B / 349A / 349A: FLO SUBA=0 => IBM Operationen: BD5B / 349A / 349A: FLO SUBA=&40 => Einleitung: CP/MCP/M Operationen: BD5B / 349A / 349A: FLO SUBA=&Der Zeichensatz des Schneider CPC: &C0 = 192C0 => Daten | | &84 | Low Level Disc Driving: &84 Read SektorRead Sektor | LOW KERNEL JUMPBLOCK: 000E: LOW PCBC INSTRUCTION &81 Message on/offMit &81 kann man alle Fehlermeldungen des Disc-Controllers unterdrücken. Insbesondere die Frage: Retry, ignore or cancel? Wird in Operationen: BD5B / 349A / 349A: FLO SUBA ein Wert ungleich Real: NullNull übergeben, so fragen die verschiedenen Amsdos-Routinen nicht mehr, sondern kehren sofort mit einer entsprechenden Fehlermeldung zurück, so als habe der Anwender 'C' für 'cancel' eingegeben. Garbage Collection: ... beim CPC 464Beim CPC 464 ist beim normalen Disketten-Betrieb von Einleitung: BASIC Man kann also auch Garbage Collection: ... beim CPC 464beim CPC 464 für die Dauer eines RSX-Kommandos wie |Operationen: BD5B / 349A / 349A: FLO SUBA oder |DIR die Fehlermeldungen abschalten! Garbage Collection: ... beim CPC 664 und 6128Beim CPC 664 und 6128 hat man aber überhaupt keine Probleme. Hier kann man auch die Disc-Breaks abfangen und in der Systemvariablen DERR nachschauen, was vorliegt, um dann selbst entsprechend zu reagieren. &82 Drive ParameterMit &82 kann man alle Wartezeiten, die beim Betrieb mit der Diskettenstation einzuhalten sind, neu festlegen. Normalerweise wird man davon nicht Gebrauch machen, weil die einzelnen Werte eigentlich optimal versorgt sind. Wer aber Laufwerke eines anderen Anbieters anschließt, kann hiermit vielleicht eine andere Steprate einstellen (3 ms statt 12 sind heute eigentlich üblich). Auch bei Programmen, die oft, aber immer mit kurzen Pausen auf ein Laufwerk zugreifen (Compiler o.AE.), kann man die Nachlaufzeit des Motors erhöhen, damit die Disketten nicht immer kurz vor dem nächsten Zugriff stehen bleiben. Dann muss der Motor nämlich immer wieder erst angeschmissen werden, was zu Verzögerungen führt. Die Standard-Einstellung ist: HL ---> DEFW 50 ; Wartezeit in 1/50 Sek. bis zum Hochlaufen des Motors. DEFW 250 ; Nachlaufzeit nach einem Zugriff in 1/50 Sekunden. DEFB &AF ; Wartezeit nach dem Formatieren des letzten Sektors. DEFB &0F ; Wartezeit beim Spurwechsel in ms. zusätzlich zu: DEFB &0C ; Wartezeit beim Spurwechsel in ms. pro Spur. DEFB &01 ; Amsdos: HeaderHead Unload Time = 32 ms (Wert wie zum Prog. Die ICs im Überblick: Der FDC 765 &83 Disc Format ParameterHat man, wie auch immer, eine Das Identifikationsfeld in jedem Sektor: 3. SektornummerSektornummer von der Diskette gelesen, so kann man damit gerüstet diesen Vektor aufrufen, um Die Abteilungen des Betriebssystems: AmsdosAmsdos auf das zugehörige Amsdos: FormateFormat einzustellen. Dieser Vektor kopiert dann den zugehörigen DISC Basic und Maschinencode: ParameterPARAMETER Die Speicherkonfiguration im Schneider CPC: BlockBLOCK aus dem Erläuterung zu den Anschlüssen 40 bis 45: 42 - ROMEN (0)ROM in den Systemspeicher von Die Abteilungen des Betriebssystems: AmsdosAmsdos. Einleitung: BASIC &84 Read Sektor&85 Write SektorDas sind wohl die interessantesen Vektoren überhaupt. Damit kann man beispielsweise einen Diskettenmonitor oder eine Dateiverwaltung mit wahlfreiem Zugriff auf einzelne Datensätze programmieren. Bei der Sektor-Nummer muss der Format-Offset immer mit angegeben werden! Diese Routinen liefern im CY-Flag ihren Fehler-Status zurück: CY=1 -> o.k., CY=0 -> Der Linien-Algorithmus: Fehler 3Fehler. &86 Format TrackÜber dieses Kommando kann man eine einzelne Spur komplett formatieren. Vorher sollte man aber mit &83 das gewünschte Amsdos: FormateFormat angewählt haben! Also: Akku mit &00, &40 oder &Der Zeichensatz des Schneider CPC: &C0 = 192C0 laden, und erst &83 aufrufen, weil die Formatierungs-Routine folgende Basic und Maschinencode: ParameterParameter aus dem DISC Basic und Maschinencode: ParameterPARAMETER Die Speicherkonfiguration im Schneider CPC: BlockBLOCK übernimmt: • Datentypen: Bytes
Die Parameter-Tabelle, deren Adresse dem Kommando in HL übergeben wird, muss dabei für jeden Sektor 4 Datentypen: Bytes HL ---> DEFB Spurnummer (0...39) für den DEFB Seitennummer (0) ersten DEFB Das Identifikationsfeld in jedem Sektor: 3. SektornummerSektornummer (&01, &41 oder &C1) Sektor. DEFB Sektorgröße (2) ... ... DEFB Spurnummer (0..39) für den DEFB Seitennummer (0) letzten DEFB Das Identifikationsfeld in jedem Sektor: 3. SektornummerSektornummer (&08, &49 oder &C9) Sektor. DEFB Sektorgröße (2) Nach Abschluss des Kommandos ist das CY-Flag gesetzt, wenn alles ordnungsgemaess verlaufen ist. &87 Seek TrackMit dem Kommando &87 kann man bereits eine neue Spur anfahren, bevor man darauf Daten liest oder schreibt. Damit kann man bei geschickter Programmierung normalerweise ganz schön Zeit sparen, weil die Positionierung des Schreib/Lesekopfes vom Die ICs im Überblick: Der FDC 765FDC unabhängig von der Die ICs im Überblick: Die CPU Z80 Dieses Kommando ist aber unter diesem Aspekt ungünstig programmiert, weil die Die ICs im Überblick: Die CPU Z80 &88 Test Drive (fehlerhaft)Hiermit kann man den Laufwerk-Status (Statusregister 3 Die ICs im Überblick: Der FDC 765 Die meisten FDC-Befehle liefern in ihrer Auswertungs-Phase als erstes Datentypen: Bytes Das Kommando &88 testet das Die Z80: Wirkung der Z80-Befehle auf die FlagsFlag und kehrt bei der Meldung 'Misserfolg' (CY=0) mit dem CY-Flag eben so gesetzt zurück. Ist aber CY=1, so wird das erste Ergebnis-Byte in den Akku geladen, und erst dann (mit CY=1) zurückgesprungen. Nun liefert der FDC-Befehl &04 SENSE DRIVE STATUS als erstes Datentypen: Bytes Die Result-Phase-Routine setzt also ihr CY-Flag aufgrund der Port B - Input: &F5xx: Bits 1, 2 und 3: Ist die eingelegte Diskette also schreibgeschützt, kehrt &88 immer mit 'Misserfolg' (CY=0) zurück. Ist sie das nicht, vermeldet das Kommando immer 'Erfolg', und nur dann enthält Operationen: BD5B / 349A / 349A: FLO SUBA Programmierung des FDC 765: Das Statusregister 0 Das beste ist, auf diese Rückmeldungen ganz zu verzichten, und direkt auf die Datentypen: Bytes &89 Retry CountMit diesem Befehl wird festgelegt, wieviele Versuche Die Abteilungen des Betriebssystems: AmsdosAmsdos bei verschiedenen (vor allem Lese-) Befehlen machen soll, bevor es das Handtuch wirft, und den Anwender "Retry, ignore or cancel" fragt (bzw. je nach Programmierung mit &81, direkt zurückkehrt). Der Standardwert ist 10. Altersschwachen Disketten kann man mitunter mit bis zu 256 Leseversuchen 'nachhelfen'. |