Seite 1 von 1

Direkter Laufwerkszugriff

Verfasst: 14.09.2006 15:46
von Marvin
Ich machs kurz:
Ich bin grad beim Versuch, ein OS mit Dateisystem zu erstellen. Problem: Ich möchte erstmal ein sehr sehr einfaches FS, z.B. nur Rootdir, keine Subdirs und auch keine Fragmentierung möglich (will heißen, es gibt keine Tabelle ähnlich der FAT). Aber ich möchte es mir möglichst einfach machen, und auch unter Windows Dateien einfach draufladen können. Wie kann ich also direkt von/auf der/die Diskette Daten lesen/schreiben (Unter Windows)? Ich nehme nicht an, das in einem 32-bit-ProtectedModeOS wie Windows auch 16-bit-RealMode-Interrupts wie 13h funktionieren... :?
Ich danke euch im Voraus für eure Antworten! :allright:

Verfasst: 14.09.2006 15:55
von Proton
Verstehe ! Du möchtest -zum Gebrauch unter Windows- ein OS schreiben !?

:bounce:

Verfasst: 14.09.2006 16:01
von Marvin
Neeeeiiiiin! <)
So bescheu* bin nicht mal ich! :lol:
Ich möchte ein sehr einfaches RealMode-OS schreiben, das mit einem sehr sehr einfachen FS ausgestattet ist.
Und mit diesem FS möchte ich auch unter Windows arbeiten können.
Ich müsste bloß wissen, wie ich mit Windows unter FASM direkt auf die Diskette zugreifen kann (also FS-unabhängig, nur die rohen Sektoren etc.)! :mrgreen:

Verfasst: 14.09.2006 16:06
von DarkDragon
Marvin hat geschrieben:Ich müsste bloß wissen, wie ich mit Windows unter FASM direkt auf die Diskette zugreifen kann (also FS-unabhängig, nur die rohen Sektoren etc.)! :mrgreen:
Ich trag keine Verantwortung für eventuelle Schäden, die durch den Gebrauch dieser Software entstehen können!

Code: Alles auswählen

Filename.s="\\.\A:"

If ReadFile(0, "C:\...\blah.img")
  
  Size = Lof()
  If Size > 0
    *Mem = AllocateMemory(Size)
    If *Mem
      ReadData(*Mem, Size)
    Else
      CloseFile(0)
      Goto Exit
    EndIf
  Else
    CloseFile(0)
    Goto Exit
  EndIf
  
  CloseFile(0)
Else
  Goto Exit
EndIf

If CreateFile(0, Filename)
  
  WriteData(*Mem, Size)
  
  CloseFile(0)
EndIf

Exit:
If *Mem
  FreeMemory(*Mem)
EndIf
End