Aufbau einer Diskette



  • hi,

    könnt ihr mir mal kurz erklären wie ne diskette aufgebaut ist?
    könnt ihr vielleicht auch mal kurz ein kleines beispielprogramm zeigen das nen kleinen string(z.b.) auf ne diskette schreibt und dann wieder lädt?

    MFG marcel



  • Ähm, ich möchte ja nicht irgendwie unfreundlich erscheinen, aber kanns sein, dass du immer erstmal hier fragst, statt selber zu suchen? Wie wärs, wenn du erstmal mit Google danach suchst?

    Wegen der Frage: Guck dir mal den Int 13h an.



  • moin,

    ich diesem fall hab ich ne ganze ewigkeit gegoogelt aber nix gefunden... den interrupt 13h kenn ich 🙂
    ich will eigentlich nur mal wissen wie ne diskette aufgebaut ist





  • Ne Diskette ist aus Sektoren, Köpfen und Spuren aufgebaut. Bei einer 1,44 MB-Diskette sind es bspw. 80 Spuren, mit jeweils 2 Köpfen, die wiederum jeweils 18 Sektoren zu 512 Byte haben, also:
    Volumen einer solchen Disk=Anzahl Sektoren*Bytes/Sektor*Anzahl Köpfe*Anzahl Spuren=18*512*2*80=1474560 Bytes

    Mit der Funktion 03h(?) des Interrupts 13h kannst du einen Speicherbereich in einen Sektor auf der Diskette schreiben. Also nimmst du die Speicherstelle des String, und schreibst den Inhalt dieser Speicherstelle in einen Sektor.

    ...
    push ds          ;
    pop es           ;DS=ES
    mov bx,string1   ;Offset des Strings nach BX
    mov ah,03h       ;Funktion 03h
    mov al,01h       ;Schreibe einen Sektor
    mov dl,00h       ;Das erste Floppydrive
    mov cl,01h       ;Sektor 1
    mov dh,00h       ;Kopf 0
    mov ch,00h       ;Spur 0
    int 13h          ;
    ..
    string1 db "Test"
    


  • hi nochmal,

    hab mal ne komische frage: warum kann ich nur erfolgreich auf die diskette schreiben von der ich gebootet habe?
    wenn ich versuche auf eine andere diskette zu schreiben dann bekomm ich nen fehler zurück (in ah)

    MFG Marcel



  • Von welchem OS ausser deinem eigenen aus versuchst Du denn auf eine Diskette zu schreiben? z.B. Muss das Laufwerk unter Win uU. erstmal gelockt werden.



  • ok hat sich erledigt 🙂
    danke für eure hilfe

    marcel



  • hi nochmal,

    wenn ich eine diskette "löschen" will, reicht es dann wenn ich einfach alles mit 0 überschreibe?
    und wie findet man eigentlich raus wieviele spuren etc eine festplatte hat?
    ps.: ich arbeite im realmode mit bios-interupts

    MFG Marcel



  • Naja, wenn du kein spezielles Dateisystem benutzt, ist deine Diskette wenn du alles durch Nullen ersetzt im Prinzip komplett gelöscht. Wenn es eine Diskette mit FAT12 Dateisystem ist, musst du den FAT überschreiben.



  • Soweit ich weiß, müsste man den Inhalt des Rootdirectories löscht. Wenn man nur die FAT löscht, sind ja eigentlich immer noch Dateien auf der Disk, nur halt ohne Inhalt.



  • Wenn man das root löscht, sind die Dateien auch noch da. Schlimmer -- es ist sogar möglich, sie aus der FAT vollständig bis auf die Dateinamen zu rekonstruieren, während es umgekehrt nicht möglich ist, Dateien, die länger als ein Sektor sind, aus dem root zu rekonstruieren, wenn nur die FAT überschrieben ist.



  • Hm, ja, ok, ich hab da wohl eher sone Art wiederherstellbares Quickformat beschrieben. Aber trotzdem sind die Dateien dann noch teilweise, sehr kleine Dateien sogar noch ganz vorhanden, sofern man nur die FAT löscht, was ja nun auch nicht der Sinn einer Formatierung sein kann. 😕



  • Warum nicht einfach root und FAT überschreiben? BTW ist das keine Formatierung, sondern eine Löschung.


Anmelden zum Antworten