Lowlevel

Lowlevel => Lowlevel-Coding => Thema gestartet von: joachim_neu am 31. March 2005, 14:29

Titel: FDD
Beitrag von: joachim_neu am 31. March 2005, 14:29
hallo,

wie finde ich beim Datentransfair von Daten zum oder vom FDC via DMA heraus, wann der FDC alle Daten erhalten und gesendet hat, also mit seiner Aufgabe komplett fertig ist? Bisher habe ich drei Möglichkeiten, von denen eine geht ;):

1. 200 Millisekunden warten. (geht)
2. Auf ein IRQ warten. (geht nicht, IRQ kommt nie)
3. Warten bis er die Results in den Ports zur Verfügung stellt. (geht nicht, sobald man sie ausließt stoppt er den Transfair, sodass etwas fehlt)

danke für antworten und ideen,

J!N
Titel: FDD
Beitrag von: TeeJay am 31. March 2005, 16:29
Eigentlich sollte ein IRQ ausgelöst werden. Da hast du vielleicht was falsch eingstellt beim FDC.
Titel: FDD
Beitrag von: Jidder am 31. March 2005, 17:34
... oder die PIC-Masken sind falsch gesetzt oder du hast den falschen Interrupt gehookt ...
Titel: FDD
Beitrag von: joachim_neu am 01. April 2005, 10:15
also beim PIC ist alles frei, es kommen ja auch die ints bei den "seek"-commands. nur bei read und write nicht. also ich hab sicher die richtige routine und alles !müsste! frei sein...

@sp: ich werd mal schauen, was du meinst... du meinst dieses DMAGATE-Bit richtig? soweit ich weiß hab ich das auf 1...
Titel: FDD
Beitrag von: joachim_neu am 02. April 2005, 19:17
welt der wunder teil 2:

meine readsektorfunktion wird so aufgerufen:

mov cl,[bootdrive]   ;+
mov ebx,0x00000012   ;|
mov edi,0x00005000   ;|
call FDDReadSektor   ;|
inc ebx              ;|
mov edi,0x00005200   ;>Font und KeyMap laden
call FDDReadSektor   ;|
inc ebx              ;|
mov edi,0x00005400   ;|
call FDDReadSektor   ;+

sti    


eigendlich dürfte sie garnicht gehen, wegen

Zitat

sti


weil er bei dem seekkommand auf dieses irq wartet, was e.g. nicht kommen dürfte... *wunder*
auf dem real-pc geht es auch nicht, auch, wenn ich das sti vor die calls lege...

J!N