Also, folgendes habe ich anhand des Happy-Listings über das H-Kommando herausgefunden:
AUX1=1 -> AUX2=Motor off delay (vermutlich in Einheiten von 0,1s, da es eine Routine gibt, die genau so lange wartet)
AUX1=2 -> AUX2=Device-ID (z.B. $31=D1). Ist zusätzlich Bit 7 gesetzt, gilt die Device-ID anstelle zur hinten eingestellten LWnr, ansonsten zusätzlich. Setzt Bit 2 des Konfigurationsbytes
AUX1=3 -> Floppy-Kaltstart
sonst: Setzt Konfigurationsbyte ($9702/3). Die gesetzten Bits in AUX1 geben an, welche Bits aus AUX2 in das Konfigurationsbyte übernommen werden sollen. Die Bits aus AUX2 haben gesetzt folgende Bedeutung:
7: Slow-Mode: Deaktiviert die Kommandos r w p Q H und setzt Bit 6 und 5 bis zum nächsten Diskwechsel, wenn sie nicht schon sowieso gesetzt sind (z.B. mit diesem H-Kommando).
6: Trackbuffer aus
5: Slow Write: Beim Schreiben Trackbuffer nicht benutzen
4: Falls Disk schreibgeschützt, mache ??? (Code sieht hier komisch aus)
3: Falls Disk nicht schreibgeschützt, mache ???
2: Die mit AUX1=2 gesetzte Device-ID ist scharf
1,0: muss 0 sein (nicht benutzt, weil AUX1=1-3 von der Happy speziell interpretiert werden)
Ist/wird Bit 6 gesetzt (Trackbuffer aus), wird eine Löschung von Bit 5 erst beim nächsten Diskwechsel scharf.
Ausnahme: Konnte beim letzten Diskwechsel die Density nicht ermittelt werden, werden Löschungen der Bits 6 und 5 (Aktivieren des Trackbuffers) erst beim nächsten Diskwechsel scharf.
Kann bei einem Density-Check die Density nicht ermittelt werden, werden Bit 6 und 5 bis zum nächsten Diskwechsel gesetzt (Trackbuffer aus).
Das ?-Kommando kopiert die Ultra-Speed-Routinen ins RAM der Happy, aktiviert sie und löscht Bit 5 des Konfigurationsbytes - damit ist Fast Write (bei meiner Happy) automatisch aktiviert.
Beim O-Kommando werden Bit 6 und 5 bis zum nächsten Diskwechsel oder Formatierung gesetzt (genauer: bis zum nächsten Density-Check), wenn sich dadurch die Dichte ändert.
Der Happy-Code ist echt gruselig. Heute würde ich sowas nicht mehr disassemblieren wollen.
Gruß Dietrich
AUX1=1 -> AUX2=Motor off delay (vermutlich in Einheiten von 0,1s, da es eine Routine gibt, die genau so lange wartet)
AUX1=2 -> AUX2=Device-ID (z.B. $31=D1). Ist zusätzlich Bit 7 gesetzt, gilt die Device-ID anstelle zur hinten eingestellten LWnr, ansonsten zusätzlich. Setzt Bit 2 des Konfigurationsbytes
AUX1=3 -> Floppy-Kaltstart
sonst: Setzt Konfigurationsbyte ($9702/3). Die gesetzten Bits in AUX1 geben an, welche Bits aus AUX2 in das Konfigurationsbyte übernommen werden sollen. Die Bits aus AUX2 haben gesetzt folgende Bedeutung:
7: Slow-Mode: Deaktiviert die Kommandos r w p Q H und setzt Bit 6 und 5 bis zum nächsten Diskwechsel, wenn sie nicht schon sowieso gesetzt sind (z.B. mit diesem H-Kommando).
6: Trackbuffer aus
5: Slow Write: Beim Schreiben Trackbuffer nicht benutzen
4: Falls Disk schreibgeschützt, mache ??? (Code sieht hier komisch aus)
3: Falls Disk nicht schreibgeschützt, mache ???
2: Die mit AUX1=2 gesetzte Device-ID ist scharf
1,0: muss 0 sein (nicht benutzt, weil AUX1=1-3 von der Happy speziell interpretiert werden)
Ist/wird Bit 6 gesetzt (Trackbuffer aus), wird eine Löschung von Bit 5 erst beim nächsten Diskwechsel scharf.
Ausnahme: Konnte beim letzten Diskwechsel die Density nicht ermittelt werden, werden Löschungen der Bits 6 und 5 (Aktivieren des Trackbuffers) erst beim nächsten Diskwechsel scharf.
Kann bei einem Density-Check die Density nicht ermittelt werden, werden Bit 6 und 5 bis zum nächsten Diskwechsel gesetzt (Trackbuffer aus).
Das ?-Kommando kopiert die Ultra-Speed-Routinen ins RAM der Happy, aktiviert sie und löscht Bit 5 des Konfigurationsbytes - damit ist Fast Write (bei meiner Happy) automatisch aktiviert.
Beim O-Kommando werden Bit 6 und 5 bis zum nächsten Diskwechsel oder Formatierung gesetzt (genauer: bis zum nächsten Density-Check), wenn sich dadurch die Dichte ändert.
Der Happy-Code ist echt gruselig. Heute würde ich sowas nicht mehr disassemblieren wollen.
Gruß Dietrich