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ür

    flpydsk_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 eure 😕

    Woher 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.pdf

    Hier sind die beiden auch beschrieben:
    http://wiki.osdev.org/Floppy_Disk_Controller#Configure

    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 eure

    Was 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


Log in to reply