ein paar Fragen zur Programmierung des FDD (PrettyOS Source Code)
-
Hallo zusammen,
ich habe mir mal den Code von euch angeschaut und die Funktionen
auf NASM umgeschrieben.Dabei ist mir eine aufgefallen
static void flpydsk_configure(void) { if (flpydsk_version == 0x90) // Enhanced FDC { flpydsk_getDump(); flpydsk_sendCommand(FDC_CMD_CONFIGURE); flpydsk_sendCommand(0); flpydsk_sendCommand(FDC_CONFIG_EIS_ON | FDC_CONFIG_POLL_OFF | 7); // Implied Seek, FIFO, no Polling, Treshold: 8 (7=8-1) flpydsk_sendCommand(0); flpydsk_lock(); // Lock the configuration. Then we do not have to repeat configure after every reset flpydsk_getDump(); } }
Der Befehl hierfür ist 0x13. Jedoch kann ich nirgends was über den Befehl
und was er genau macht finden. Das selbe gilt fürflpydsk_lock()
Nächste Frage:
Wenn ich einen FDD Reset ausführe, sind die Laufwerksdaten dann gelöscht
und muss ich dann die Laufwerksdaten immer neu festlegen?Um an diese zu kommen habe ich mir die Adresse des Interrupt 0x1e angesehen.
Diese Werte sind bei VirtualPC und VirtualBox leicht abweichend.
Aber ganz anders als eureWoher habt ihr die Daten?
Da ich nicht genau erkennen kann wann welche Funktion des FDD aufgerufen wird,
könntet ihr mal kurz als Liste die Reihenfolge der Funktionen aufschreiben
um einen Sektor oder eine Spur einzulesen? (gern auch nur die Funktionsnamen)Ich bin langsam echt am verzweifeln... auf VPC läuft es meistens.. VirtualBox
selten und auf realer HW so gut wie garnicht..Da kann man ja auf MS schimpfen wie man will, aber es läuft überall.
PrettyOS läuft bei mir auch nur in VPC auf realer HW = Fehlermeldung und Ende...
Gruß, Nicky
-
Die Spezifikation beinhaltet Infos zu Configure und Lock. Configure findest Du bspw. auf Seite 32.
http://www.lowlevel.eu/w/images/2/2a/82077AA_FloppyControllerDatasheet.pdfHier sind die beiden auch beschrieben:
http://wiki.osdev.org/Floppy_Disk_Controller#ConfigureUm an diese zu kommen habe ich mir die Adresse des Interrupt 0x1e angesehen.
Diese Werte sind bei VirtualPC und VirtualBox leicht abweichend.
Aber ganz anders als eureWas verstehst Du unter einer Adresse des Interrupts? Im Real-Mode legt das BIOS da noch was fest, aber danach kann man sich doch aussuchen, wohin man den Handler für 0x1E packt... Aber wenn ich unseren Quellcode richtig lese, ist IRQ6 (0x26) der Floppy-Interrupt.
Da ich nicht genau erkennen kann wann welche Funktion des FDD aufgerufen wird,
könntet ihr mal kurz als Liste die Reihenfolge der Funktionen aufschreiben
um einen Sektor oder eine Spur einzulesen? (gern auch nur die Funktionsnamen)Schau mal auf Seite 39 der Spezifikation...
-
Hallo,
An der Adresse des Interrupt liegen nur die Laufwerksdaten die das Bios benutzt.
Eure weichen halt stark von denen ab.Das andere schau ich mir mal an.
Gruß, Nicky