Autor Thema: CD-ROM ansprechen + welches Dateisystem  (Gelesen 26918 mal)

Osbios

  • Beiträge: 247
    • Profil anzeigen
Gespeichert
« Antwort #20 am: 05. October 2006, 21:16 »
Also wäre folgendes Vorhaben realistisch? :

Bootsektor im RM läd mit "int 13h" ohne Emulation die load.sys von CD

die load.sys schaltet in den 64 Bit Mode, läd mittels internen CD-Treiber die Module + Kernel + externe Treiber etc.

Nein, entweder mit Emulation den "int 13h" benutzen um im RM Zugriff auf die CD zu haben, oder die dritte möglichkeit in der du eine "belibige" Menge Daten von der CD in den Arbeitsspeicher schreiben kannst(wie ein riesiger Bootsektor wo auch eine load.sys reinpasst).
db 0x55AA

bitmaster

  • Troll
  • Beiträge: 1 138
    • Profil anzeigen
    • OS-64 = 64 Bit Operating System
Gespeichert
« Antwort #21 am: 05. October 2006, 23:32 »
@Osbios: Ich verstehe nicht was du meinst. Ich bin nämlich gerade dabei ohne Emulation als Floppy oder Festplatte die CD anzusprechen. Und das klappt wunderbar.

bitmaster
In the Future everyone will need OS-64!!!

bitmaster

  • Troll
  • Beiträge: 1 138
    • Profil anzeigen
    • OS-64 = 64 Bit Operating System
Gespeichert
« Antwort #22 am: 06. October 2006, 09:27 »
@T0ast3r: Also ich rede gerade noch vom Bootsektor. Dort bin ich ja im RM. Dank Microsoft und IBM brauche ich dafür nichts anderes als den "int 13h" um Sektore zu laden. Ich werde jetzt die ISO9660+Joliet Dateisystemunterstützung einbauen und die load.sys laden. Die wird dann einen internen Treiber bekommen (weil sie in den 64 Bit Mode springt und ich also so den int 13h nicht mehr benutzen kann). Die läd dann mittels internen Treiber kernel + module + externe Treiber etc. Aber im Moment bin ich noch im Bootsektor im RM und brauch Infos zum ISO9660+Joliet Dateisystem. Hat da jemand was?

thx

bitmaster
In the Future everyone will need OS-64!!!

bitmaster

  • Troll
  • Beiträge: 1 138
    • Profil anzeigen
    • OS-64 = 64 Bit Operating System
Gespeichert
« Antwort #23 am: 06. October 2006, 13:32 »
Also bin ich zu dumm um zu finden oder gibt es kein Dokument was den Aufbau des Joliet Dateisystem erklährt. Ich will wissen wie die Einträge aufgebaut sind in denen sich Dateinamen befinden, wie ich den ersten und letzten Sektor einer Datei herausfinde etc. Die blöden Suchmaschinen zeigen mir immer nur an, das Joliet eine Dateisystemerweiterung für ISO9660 ist. Aber das weiß ich selber. Ich will nicht wissen was Joliet ist, sondern wie es aufgebaut ist. Habt ihr da was gefunden? Toaster hast du da schon ein genuine Dokument drüber?

thx

bitmaster
In the Future everyone will need OS-64!!!

maumo

  • Beiträge: 182
    • Profil anzeigen
    • http://maumo.50webs.com/
Gespeichert
« Antwort #24 am: 06. October 2006, 13:43 »
http://www.nondot.org/sabre/os/articles/FileSystems/: hier hab ich was gefunden. habs mir aber ned durchgelesen xD

bluecode

  • Beiträge: 1 391
    • Profil anzeigen
    • lightOS
Gespeichert
« Antwort #25 am: 06. October 2006, 13:52 »
Gewöhnt euch mal an nach XYZ specification zu suchen :wink:

Zitat
@bluecode: Ach ja, das Linuxleben. wink
:?
« Letzte Änderung: 06. October 2006, 14:01 von bluecode »
lightOS
"Überlegen sie mal 'nen Augenblick, dann lösen sich die ganzen Widersprüche auf. Die Wut wird noch größer, aber die intellektuelle Verwirrung lässt nach.", Georg Schramm

bitmaster

  • Troll
  • Beiträge: 1 138
    • Profil anzeigen
    • OS-64 = 64 Bit Operating System
Gespeichert
« Antwort #26 am: 06. October 2006, 18:19 »
Vielen dank an euch: In dem Doku stehts: http://www.nondot.org/sabre/os/files/FileSystems/iso9660.pdf

bitmaster
In the Future everyone will need OS-64!!!

bitmaster

  • Troll
  • Beiträge: 1 138
    • Profil anzeigen
    • OS-64 = 64 Bit Operating System
Gespeichert
« Antwort #27 am: 11. October 2006, 21:44 »
So, da ich nun das Dateisystem (ISO9660 + Joliet) kapiert habe und stolzer Besitzer eines CD Boot-Sektor Codes bin, möchte ich jetzt einen Treiber für den 64 Bit Mode schreiben. Da kann ich ja leider den int 13h net mehr nutzen. Also habe ich mich entschieden einen ATA (ATAPI-4) Treiber zu schreiben, mit dem ich dann Sektore lesen kann (da die meisten CD-Laufwerke ebend damit arbeiten [außer z.B. S-ATA, USB etc.]). Aber in meinem PC Hardwarebuch wird unter IDE (ATA) immer nur von Festplatten ausgegangen. Und dort stehen Register für Sektor/Spur/Kopf. Aber eine CD hat doch keine Spuren und köpfe? Die Ports sind aber die gleichen (zeigt Windows mir genau die selben an wie im PC Hardwarebuch beschrieben). Also sind die Register bei CDs anders anzusprechen oder wie?

thx

bitmaster
In the Future everyone will need OS-64!!!

bitmaster

  • Troll
  • Beiträge: 1 138
    • Profil anzeigen
    • OS-64 = 64 Bit Operating System
Gespeichert
« Antwort #28 am: 12. October 2006, 18:12 »
Hmm...

also weiß keiner von euch wie man über ATAPI-4 das CD-ROM-Laufwerk anspricht?

Dann habe ich noch eine Frage. Wenn man von Diskette gebootet hat, ist ja in dl das Laufwerk angegeben (0 = A: und 1 = B:, wo man von B: bei manchen PCs gar nicht booten kann). Und wie siehts mit CDs aus. Wie kann ich da feststellen von welchem Laufwerk gebootet wurde, um später mit dem ATAPI-Treiber die anderen Dateien von der CD in diesem Laufwerk zu laden. Ich habe mal den Wert aus dl ausgeben lassen. Der ist im oberen Laufwerk bei mir 9Fh. Ich schaue mal ob das untere dann vielleicht A0h ist. Ansonsten, könnt ihr mir weiter helfen?

thx

bitmaster

EDIT: Nee, also das bringt nicht. Wenn ich vom ersten Laufwerk boote ist in dl der Wert 9Fh und wenn ich vom zweitem Laufwerk botte ist in dl auch der Wert 9Fh. Bei Bochs und Qemu beides nicht 9Fh sondern E0h. Tja, wie finde ich jetzt heraus von welchem Laufwerk ich gebootet habe. Nicht das ich vom zweitem Laufwerk boote aber mein Treiber dann die Daten vom ersten laden will oder so. PLEASE HELP ME.

bitmaster
« Letzte Änderung: 12. October 2006, 18:36 von bitmaster »
In the Future everyone will need OS-64!!!

Termite

  • Beiträge: 239
    • Profil anzeigen
Gespeichert
« Antwort #29 am: 12. October 2006, 19:13 »
gruss
Welche reihenfolge verwendet das bios um das bootmedium zu finden? Bessergesagt welche CD?
ich nehm mal an das geht nach der reihenfolge hda hadb hadc hdd .... von der ersten gefundenen bootbaren cd wird gestartet. Das gleiche kannst ja auch du implementieren.

gruss

bitmaster

  • Troll
  • Beiträge: 1 138
    • Profil anzeigen
    • OS-64 = 64 Bit Operating System
Gespeichert
« Antwort #30 am: 12. October 2006, 19:50 »
@Termite: Ich verstehe nicht ganz was du meinst. Ich möchte mein OS von CD booten. Den Bootsektor-Code habe ich schon fertig. Der läd mittels "int 13h" und ISO9660 + Joliet Unterstützung eine gewisse load.sys. Diese schaltet in den 64 Bit Mode. Diese soll jetzt von der gleichen CD mittels ATAPI CD Treiber kernel + externe Treiber etc. laden. Aber woher weiß sie von welches Laufwerk sie laden soll. Woher weiß sie ob von Laufwerk 1 oder Laufwerk 2 (falls 2 CD Laufwerke vorhanden sind) gebootet wurde.

Kann ich vielleicht im Bootsektor rausfinden von welchem Laufwerk gebootet wurde? Wenn ja, wie?

thx

bitmaster
In the Future everyone will need OS-64!!!

bluecode

  • Beiträge: 1 391
    • Profil anzeigen
    • lightOS
Gespeichert
« Antwort #31 am: 13. October 2006, 16:28 »
ich antworte mal auf dein altes Post:
Man kann auch bei Festplatten LBA verwenden, was sowieso sehr empfehlenswert ist und in ATA-2 standartisiert wurde afaik. Bei ATAPI sind die register folgendermaßen (ich zähl nur die auf, die sich auch verändert haben):
Sektorzahlregister -> ATAPI Interruptursache (read-only)
Sektornummerregister -> reserviert
Zylinder-0 -> ATAPI Bytecount 0-7
Zylinder-1 -> ATAPI Bytecount 8-15
Device-Selection register: die untersten 4bit sind reserviert

Das ATAPI Fehlerregister schaut komplett anders aus:
bit0: illegale Länge
bit1: Ende des Mediums
bit2: ungültiges Kommando
bit4-7: Sense-Key

Für die Kommunikation mit dem CD-ROM Laufwerk werden _nicht_ die normalen ATA Kommandos verwendet, sondern der CD-ROM über das ATA PACKET-Kommando (im ATA/ATAPI Standard wird beschrieben wie das PACKET Kommando auszuführen ist) ein SCSI-3 Kommando übergeben. Dies wird immer auf eine Länge von 12 oder 16 gepaddet.

sry, das ich erst so spät poste, aber ich bin seit 2tagen oder so nicht mehr ins forum gekommen... only god knows why.
« Letzte Änderung: 13. October 2006, 16:35 von bluecode »
lightOS
"Überlegen sie mal 'nen Augenblick, dann lösen sich die ganzen Widersprüche auf. Die Wut wird noch größer, aber die intellektuelle Verwirrung lässt nach.", Georg Schramm

bitmaster

  • Troll
  • Beiträge: 1 138
    • Profil anzeigen
    • OS-64 = 64 Bit Operating System
Gespeichert
« Antwort #32 am: 13. October 2006, 17:51 »
@bluecode: OK, ich werd mal schauen. danke!!!

bitmaster
In the Future everyone will need OS-64!!!

Osbios

  • Beiträge: 247
    • Profil anzeigen
Gespeichert
« Antwort #33 am: 13. October 2006, 18:38 »
Zur Frage der Boot-CD:
Ich weiß zwar nicht wie man heraus bekommen kann wovon gebootet wurde, habe aber eine andere Idee.

Scan einfach alle CD-Laufwerke bzw. CDs nach einer besonderen Eigenheit (z.B. dem Vorhandensein der Datei "kernel.sys").

Ist aber nur eine Übergangslösung, denn CD-Rom Laufwerke brauchen recht lange zum Anfahren.
db 0x55AA

bitmaster

  • Troll
  • Beiträge: 1 138
    • Profil anzeigen
    • OS-64 = 64 Bit Operating System
Gespeichert
« Antwort #34 am: 13. October 2006, 23:37 »
@Osbios: Und was ist wenn sich in dem anderem Laufwerk auch eine CD befindet wo eine Datei auch kernel.sys heißt? Nee, wenn dann schon vernünftig.

bitmaster
In the Future everyone will need OS-64!!!

bitmaster

  • Troll
  • Beiträge: 1 138
    • Profil anzeigen
    • OS-64 = 64 Bit Operating System
Gespeichert
« Antwort #35 am: 13. October 2006, 23:51 »
@bluecode: Da du von der Materie scheinst Ahnung zu haben, müssen wir uns mal über MSN unterhalten, weil ich noch einige Fragen habe.

thx

bitmaster
In the Future everyone will need OS-64!!!

bluecode

  • Beiträge: 1 391
    • Profil anzeigen
    • lightOS
Gespeichert
« Antwort #36 am: 14. October 2006, 12:01 »
@bluecode: Da du von der Materie scheinst Ahnung zu haben, müssen wir uns mal über MSN unterhalten, weil ich noch einige Fragen habe.
Naja, so viel kann ich dir da auch nicht helfen, da ich selbst noch keinen ATAPI Treiber hinbekommen hab. Ich habs zwar nur kurz versucht, aber funktioniert hats net. Und bevor ich da weiter mach muss ich noch ein paar andere Sachen in meinem OS machen.
lightOS
"Überlegen sie mal 'nen Augenblick, dann lösen sich die ganzen Widersprüche auf. Die Wut wird noch größer, aber die intellektuelle Verwirrung lässt nach.", Georg Schramm

bitmaster

  • Troll
  • Beiträge: 1 138
    • Profil anzeigen
    • OS-64 = 64 Bit Operating System
Gespeichert
« Antwort #37 am: 21. October 2006, 13:58 »
Zitat von: bluecode
Zylinder-0 -> ATAPI Bytecount 0-7
Zylinder-1 -> ATAPI Bytecount 8-15
Aber das wären ja nur 16 Bit, sprich 65536 Sektore. Und das mal 2048 wären max. 128 MByte. Eine normale CD hat ja schon 650 - 700 MByte. Oder was meinst du mit "ATAPI Bytecount"?

thx

bitmaster
In the Future everyone will need OS-64!!!

bluecode

  • Beiträge: 1 391
    • Profil anzeigen
    • lightOS
Gespeichert
« Antwort #38 am: 21. October 2006, 20:43 »
Der ATAPI Bytecount hat nichts mit der LBA Adresse zu tun. Diese wird über das SCSI-3 Packet übergeben. Das ATAPI Register gibt afaik die Länge des Packetes an (oder die länge der Daten welche mit dem Befehl gelesen/geschrieben werden sollen). Da bin ich mir nicht so sicher, da schweigt mein Buch auch ein bisschen.
lightOS
"Überlegen sie mal 'nen Augenblick, dann lösen sich die ganzen Widersprüche auf. Die Wut wird noch größer, aber die intellektuelle Verwirrung lässt nach.", Georg Schramm

bitmaster

  • Troll
  • Beiträge: 1 138
    • Profil anzeigen
    • OS-64 = 64 Bit Operating System
Gespeichert
« Antwort #39 am: 02. November 2006, 21:35 »
Also ich habe das mit ATAPI usw. jetzt einigermaßen verstanden. Ich habe es auch so halbwegs hinbekommen Sektore zu lesen. Aber jetzt stehe ich vor ein bereits erwähntes Problem. Wie bekomme ich raus von welchem Laufwerk gebootet wurde. Ob vom Master, Slave ... gebootet wurde. Denn was würde passieren, wenn meine CD vom Slave Laufwerk gebootet werden würde, der Treiber aber Daten vom einer CD im Master ansprechen würde? Ja genau, nur mist würde passieren. Also deswegen möchte ich herausfinden von welchem Laufwerk gebootet wurde, um auch dieses für das laden der Dateien des OS anzusprechen. Also ich habe schon einiges mit dem "int 13h" besonders mit der Funktion 48h versucht, aber ohne Erfolg. Könnt ihr mir dabei helfen?

danke

bitmaster
In the Future everyone will need OS-64!!!

 

Einloggen