DMA Problem



  • Hi,

    ich habe volgenden Code um dem Controler zu deaktivieren aber es funzt net 😞

    ;
    ; Deaktviert den DMA Controler
    ; 
    ;---------------------------------
    ; Input:
    ;	ch = DMA Kanal
    ;---------------------------------
    dma_deak:
    	push ax
    	push cx
    
    	mov al, 00010100b
    	cmp ch, 0x01
    	je .Master
    	cmp ch, 0x02
    	je .Slave
    .Master:
    	out 0xD0, al
    	jmp dma_deak_done
    .Slave:
    	out 0x08, al
    dma_deak_done:
    	pop cx
    	pop ax
    	; zurück
    	ret
    

    weiß einer worans liegt?
    ( Bochs sagt der Wert muss 0x00 sein dem ich diesem Register übergeben muss 😕 )

    MFG

    LordHoto



  • Hi.

    Dann versuchs doch einfach mal mit der 0. 😉
    Wenn das Ding aus soll, ist es doch letztendlich egal, auf welche Werte der Kram gesetzt wird, solange das enabled-bit 0 ist.



  • das Problem ist das es wenn er deaktiviert sein soll auf 1 gesetzt werden muss!
    und das andere aktivierte Bit ist standard 🙂

    MFG

    CrazyLinux



  • CrazyLinux schrieb:

    das Problem ist das es wenn er deaktiviert sein soll auf 1 gesetzt werden muss!

    Ups, hast recht! 🙄

    CrazyLinux schrieb:

    und das andere aktivierte Bit ist standard 🙂

    Da kannst du es aber trotzdem killen, wenn der DMA-Controller aus kommt. :p

    BTW: Ich habe jeweils Bochs1.4 und 2.0.2 mit

    mov dx,0008h
    mov al,04h
    out dx,al
    mov dx,00D0h
    out dx,al
    

    und

    mov dx,0008h
    mov al,14h
    out dx,al
    mov dx,00D0h
    out dx,al
    

    gefuettert und er hat's jedesmal anstandslos gefressen. 😕



  • ist dann aber die frage, ob das auch DMACs auf anderen computern mitmachen, bei den billigdingern (damit meine ich die DMACs) heutzutage weiß man nie... lieber immer nach dem standard gehen und wenn es bei einem selbst nicht klappt, dann hat man halt selber son sch****-teil, das nicht richtig funktioniert... 🙂


Anmelden zum Antworten