Also ich habe jetzt die maus so aktiviert:
Also ich übergebe dem IRQ12 (int 74h) die Adresse meines Codes der folgenes macht:
Alle Register auf den Stack schreibt. Dann das ds zum cs macht und eine Meldung ausgiebt. Nun den EOI (end of interrupt) mit folgendem Code sendet:
jetzt holt er alle Register vom Stack und springt mit iret zurück.
Dann aktiviere ich die Maus mit dem Code den ich gepostet habe und ende. Wenn ich jetzt unter einem Real-Mode OS (z.B. DOS oder meins) die Schose laufen lasse passiert erstmal nicht solange bis das Programm endet. Dann mache ich nicht und er gibt die meldung aus die er eigentlich erst ausgeben soll wenn ich etwas mit der Maus mache sie z.B. bewege. Und nun bleibt das OS hängen. Das verstehe ich nicht. Er führt also den IRQ12 aus und tut dann garnichts mehr. Warum? Normalerweise sollte er mir immer die Meldung ausgeben (also den IRQ12 ausführen) wenn ich die Maus bewege und drücke. Das soll nämlich nur ein Test sein ob er auch den IRQ12 ausführt wenn ich es will. Später könnte ich dann ja immer noch den Code für die Meldung mit dem richtigen Code für die Maus (Daten lesen etc.) ersetzten. Aber wie ich sehe funktioniert nicht einmal dies. Könnt Ihr mir weiterhelfen?
Danke!!!
Code: [Auswählen]
;gebe IRQ12 also int 74h eine Adresse
;für einen Code der eine Meldung ausgibt
;und mit iret zurückspringt
call InitMouse ;rufe die Funktion auf
;beende
InitMouse proc near
call CheckPS2
mov al,0A8h
out 64h,al
call CheckPS2
mov al,0D4h
out 64h,al
call CheckPS2
mov al,0F4h
out 60h,al
call CheckPS2
ret
InitMouse endp
CheckPS2 proc near
mov dx,0FFFFh
next:
in al,64h
and al,03h
jz done
or dx,dx
jz done
in al,60h
dec dx
jmp next
done:
ret
CheckPS2 endpAlso ich übergebe dem IRQ12 (int 74h) die Adresse meines Codes der folgenes macht:
Alle Register auf den Stack schreibt. Dann das ds zum cs macht und eine Meldung ausgiebt. Nun den EOI (end of interrupt) mit folgendem Code sendet:
Code: [Auswählen]
mov al,20h
out 0A0h,al
out 20h,aljetzt holt er alle Register vom Stack und springt mit iret zurück.
Dann aktiviere ich die Maus mit dem Code den ich gepostet habe und ende. Wenn ich jetzt unter einem Real-Mode OS (z.B. DOS oder meins) die Schose laufen lasse passiert erstmal nicht solange bis das Programm endet. Dann mache ich nicht und er gibt die meldung aus die er eigentlich erst ausgeben soll wenn ich etwas mit der Maus mache sie z.B. bewege. Und nun bleibt das OS hängen. Das verstehe ich nicht. Er führt also den IRQ12 aus und tut dann garnichts mehr. Warum? Normalerweise sollte er mir immer die Meldung ausgeben (also den IRQ12 ausführen) wenn ich die Maus bewege und drücke. Das soll nämlich nur ein Test sein ob er auch den IRQ12 ausführt wenn ich es will. Später könnte ich dann ja immer noch den Code für die Meldung mit dem richtigen Code für die Maus (Daten lesen etc.) ersetzten. Aber wie ich sehe funktioniert nicht einmal dies. Könnt Ihr mir weiterhelfen?
Danke!!!

Übersicht
Wiki
Hilfe
Suche
Einloggen
Registrieren
Drucken


Gespeichert

, wenn Bit gesetzt, dann ist die Maustaste gedrückt )
)