Programmieren - alles kontrollieren 4.941 Themen, 20.715 Beiträge

Interrupthandler

JamesBomb / 13 Antworten / Flachansicht Nickles

Hi!
Wo im Speicher liegt die Interrupt-Vektor-Tabelle? Wie kann ich eine Interruptbehandlungsroutine reinschreiben?
Geht dies auch mit einer Hochsprache?
(Darunter fällt auch noch C :-))

bei Antwort benachrichtigen
T-Rex JamesBomb „Interrupthandler“
Optionen

Hi,

soweit ich weiß (meine DOSe-Zeiten und TP6 sind schon eine Weile her), liegt die Interrupt-Vektor-Tabelle direkt bei $0:$0 und ist ziemlich genau 256 * 4 Byte = 1024 Byte groß.

Und die Tabelle konnte man auch modifizieren.
Unter TP6 ging es so:

Var IVT: Array [0..255] of pointer absolute $0:$0;

Schon hast Du Deine Vektortabelle. Willst Du den IntVec von der Mouse (meist $33) ändern, schreibst Du jetzt einfach:
IVT[$33] := @MyMouseHandler;

Vorher solltest Du MyMouseHander noch schreiben:
procedure MyMouseHandler; interrupt;
begin
 (* Was auch immer *)
end;

Fertig (und keine Garantie auf Funktionalität)!

 GrüßeT-Rex 
bei Antwort benachrichtigen
Was ist 0 in asm? JamesBomb