From 5912e3b2280d63871e1b3c89e9e95388a6b9107e Mon Sep 17 00:00:00 2001 From: kieron Date: Tue, 23 May 2017 17:52:31 +0000 Subject: [PATCH] asas git-svn-id: https://spexeah.com:8443/svn/Asuro@204 6dbc8c32-bb84-406f-8558-d1cf31a0ab0c --- lib/isr45.ppu | Bin 0 -> 2016 bytes src/isr/isr45.pas | 84 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 84 insertions(+) create mode 100644 lib/isr45.ppu create mode 100644 src/isr/isr45.pas diff --git a/lib/isr45.ppu b/lib/isr45.ppu new file mode 100644 index 0000000000000000000000000000000000000000..b5e2ed1204bb2d1fc5b62d9c8277f8a0ca99b4a8 GIT binary patch literal 2016 zcmbVN%WIQC5a0RoY8u<7k5sJ|p~QnGRcjl3917JI8#QUj0|}xbZGsK9NoZ1`Cz1XU zBIrr{ABuR;LlFuh9>mARgNS$&Pi>>d`OW6bqZC>k*!^aIGrKdhGdo`-k{B5cSXW6| z)XT__T5~A%VEnl8C4BCFuTsjx17znxWXqM7#sXIG380S*h|$FjON<=FoNv2Cv*e?5>5}Y*C|WcnKnoi03w$oiew} zoRQfja};q>FHW+@lCk(y$Qg`9Q}JYEDi$CXb(131#vJ^ykg|zt3usEu0u{Mq54qDO z(aB6Q8`!byE^EVl&{S$w6}!7are~(#u9^jcdBc?2YG_M{9paWnW_CfoEsA~ScBeMo zaFYQL{g!&U30}BOSiJ>_4_Grv&KyXUq^nuf%vY;M2d}$;(FvDL%czr6HWo-lr>+D! zgHar2)Xf^3T8ptQk!;u3m04!V2Y1bKhwLz>eK|ACil?DX7wgXSYGec?1vqJd7cP@0u?Z?xq&A<@rKJk;kpWBsIh`5N?kvSxU&LWOzkBRAqpNNf*HE zD~1p&&On>4)?@JK7!u+Ci~{ehHH!WoGm1;F#dM8FBMKlS`JrvRRkR=)1gcw)qE3<% z`b2;Wt96>Xq(>yU2x&Nqx@@vTUictx%j`Rf+*)){wjeu=_QOwJ3%f;#BP_wmxS}2n z9|i0|TWnj(-pO&ZTT;}guZ~oL@k644?qfwJS=*GNCE$=twX+}X*L4bsa z_#=s?KX8-kWli#$iokqOSmR;R3or(kl3UuI3Ge*2>n!K;xpK8i>nwf^6&iqXkl_l3 zgK=+4^qREyDrdc$_gB2k(n;vQF+u*m 0 then Hooks[i](void($00000000)); + end; +end; + +procedure register(); +var + status : uint8; + bm : PBitMask; + +begin + memset(uint32(@Hooks[0]), 0, sizeof(pp_hook_method)*MAX_HOOKS); + IDT.set_gate(45, uint32(@Main), $08, ISR_RING_0); + outb($64, $20); + status:= inb($64); + bm:= PBitMask(@status); + bm^.b1:= true; + bm^.b5:= false; + outb($64, $60); + outb($60, status); +end; + +procedure hook(hook_method : uint32); +var + i : uint32; + +begin + for i:=0 to MAX_HOOKS-1 do begin + if uint32(Hooks[i]) = hook_method then exit; + end; + for i:=0 to MAX_HOOKS-1 do begin + if uint32(Hooks[i]) = 0 then begin + Hooks[i]:= pp_hook_method(hook_method); + exit; + end; + end; +end; + +procedure unhook(hook_method : uint32); +var + i : uint32; +begin + for i:=0 to MAX_HOOKS-1 do begin + If uint32(Hooks[i]) = hook_method then Hooks[i]:= nil; + exit; + end; +end; + +end. \ No newline at end of file