Lowlevel

Lowlevel => Lowlevel-Coding => Thema gestartet von: Homix am 19. October 2005, 16:25

Titel: Prüfen, ob die gleiche Diskette verwendet wird
Beitrag von: Homix am 19. October 2005, 16:25
hi,
ist es möglich, dass man herausbekommt, ob im Vergleich zu vorhin eine andere Diskette im Diskettenlauferk ist oder nicht ?

ich möchte nämlich einen kleinen Sektorenbuffer in meinen Floppytreiber einfachen, aber wenn die Diskette gewechselt wird muss der Buffer ja gelöscht werden.

(2. wie kann man rausfinden, welche Eigenschaften (Heads, Cylinders, Sektoren,...) die Diskette hat ? )

cu,
stefan2005
Titel: Prüfen, ob die gleiche Diskette verwendet wird
Beitrag von: WhiteDragon am 19. October 2005, 18:27
Also der Port 0x3f7 heißt lesend "Digital-Input-Register" (DIR). Das höchstwertige Bit (128) gibt an, ob die Diskette gewechselt wurde.

Ich kann dir aber leider nicht sagen, wie er das angibt (ich glaube, wenn das Bit gelöscht ist, erfolgte ein Diskettenwechsel). Auch weiß ich nicht, ob sich das Bit erst nach dem Lesen des Ports wieder ändert oder wie sonst.

Google mal nach einem Dokument mit dem Titel "82077AA". Das ist ein Intel-Dokument, in dem das Innere der Floppy erklärt wird. Danach habe ich damals auch meinen Disk-Treiber geschrieben.

Für Floppy gibt es keine CHS-Angaben, aber es gibt ja nur eine Handvoll Disketten-Typen. Welchen Typ die Floppy hat, kann man über irgendeinen Port raus kriegen. Das ist recht simpel, ich komm aber gerade nicht drauf, welcher es ist. Wenn's mir noch über den Weg läuft, poste ich es hier.
Titel: Prüfen, ob die gleiche Diskette verwendet wird
Beitrag von: Homix am 19. October 2005, 18:47
hi,
danke hat mir geholfen !

mfg,
stefan
Titel: Prüfen, ob die gleiche Diskette verwendet wird
Beitrag von: WhiteDragon am 10. November 2005, 09:27
Hallo,

da ich inzwischen auch bei einem ähnlichen Problem bin: Hast du inzwischen raus bekommen, wie man (a) genau den Diskettenwechsel erkennt und wo (b) der Typ der Floppy steht?

Und noch eine Frage hinterher: Wo erkenne ich eigentlich, ob ich 0, 1 oder 2 Floppys habe?

Gruß!
Titel: Prüfen, ob die gleiche Diskette verwendet wird
Beitrag von: Homix am 10. November 2005, 16:12
hi,
nein ich hab mir das irgendwie noch nicht genauer angeschaut, weil ich gerade was anderes bevorzuge  :lol:

aber mit folgendem Code krieg ich die Anzahl der Flobbys raus:

function DetectFloppyDrives: Byte;
var Floppys : Byte;
begin
  Outb($70,$10);
  Floppys := Inb($71);
  If (Floppys SHR 4) > 0 then Begin
    If (Floppys AND $0F) > 0 then Result := 2
    Else Result := 1;
  End
  Else Result := 0;
end;


mfg,
stefan