Autor Thema: Prüfen, ob die gleiche Diskette verwendet wird  (Gelesen 3379 mal)

Homix

  • Beiträge: 138
    • Profil anzeigen
Gespeichert
« 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

WhiteDragon

  • Beiträge: 124
    • Profil anzeigen
Gespeichert
« Antwort #1 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.

Homix

  • Beiträge: 138
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 19. October 2005, 18:47 »
hi,
danke hat mir geholfen !

mfg,
stefan

WhiteDragon

  • Beiträge: 124
    • Profil anzeigen
Gespeichert
« Antwort #3 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ß!

Homix

  • Beiträge: 138
    • Profil anzeigen
Gespeichert
« Antwort #4 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

 

Einloggen