From c528e72f4adea11e51eb72f359a496d6e7afbee6 Mon Sep 17 00:00:00 2001 From: kieron Date: Wed, 17 May 2017 16:58:54 +0000 Subject: [PATCH] Started Hooking for ISRs. git-svn-id: https://spexeah.com:8443/svn/Asuro@74 6dbc8c32-bb84-406f-8558-d1cf31a0ab0c --- Asuro.iso | Bin 5070848 -> 5070848 bytes bin/kernel.bin | Bin 16612 -> 16612 bytes iso/boot/asuro.bin | Bin 16612 -> 16612 bytes lib/isr.ppu | Bin 1815 -> 1815 bytes lib/isr0.ppu | Bin 1222 -> 1977 bytes lib/libpkernel.a | Bin 24370 -> 24370 bytes src/drivers/isr0.pas | 34 ++++++++++++++++++++++++++++++++++ src/drivers/isr32.pas | 27 ++++++++++++++------------- src/drivers/isr33.pas | 1 + src/drivers/isr40.pas | 14 ++++++-------- src/drivers/isr_types.pas | 6 ++++++ 11 files changed, 61 insertions(+), 21 deletions(-) diff --git a/Asuro.iso b/Asuro.iso index f35b1dedbf17372531fb53d5c7034bb1cfb9dbc9..8ecfd58a3b72f50830444fca2a74d1e07c6bb101 100644 GIT binary patch delta 11188 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 PF`6D@%H*A6jb;A@aFev6 delta 11085 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 r5rDvS5h_Xr=@L|kic$d<_gg$%^8EHU%fH

x%h2Z=#C>LtVk8H^3YOhm&Y>Qq8ba1aoQW3XL+-))DB{^w1;^Sz(< zp6_04;}_d_w_Ev|e?DEeE%`2sv53~d)|H5q5BNFn2SXE z>HWTl7H6^uA|icEs$!M8K+$qV$Wf}=8Plp@C|^ThIhZf%)FLsgI+bT~#XD*J3exA1 zK02w-7Eyan=BSmi!9H=>UdtQAgZVQ!6LtA3m0>Op<=63QG2KzG#1*m8Q3uU=M?G0N z>y^V9;v;7r_lYquttPS3wSg~9oN+zGJv}@9Mju%Qp%0}?K5Z3`*^BLsnJSAMw6J|X z*@1G9`nkeV-YecL3@byKVsBv(dA=>2%`3!sp}VDGhRSToBhkZgjLDWf*Hx7nXN@ZB zSW?GZ$K30VwBD*+cc9;_K*svb8H8fqK&&ZXYCme}>*@``k99SLSog=|cURKPwz)_k z-+;c44AT5oWeVQ{g9B3q;OA#dF#!Mm|K;09ES=s!CrXXYPxYBg^+yNeD9M&AMo%TI z%bM3=dN!7uGB6sP97eGs?(?kUbHpA`m=7n;c=C9e(bDP(T{l{iD?!QT$p*U7Vj`pH z6P`nPUb(Q`mNYA(*ZV{ZjgJ_h_R-qSS?Phww{=A7o-oovPj2m_?#)&iMTx0#yX7h} znmXwTBhZw1W|<9pS!EbDv;V|XtixHL-InZ=i-EOjv7+>z$7?3#k>h4{1MX#(M)7v%gVvrW zrH713c921@7MjFrxM*$-*w*{`H(tbz{H%|Ke< zo)namU?511p!AzQgM~x;u&wRaYv?|E2yP*Ww>@$PR1lPA3L)8@zjVFxnlu~PL*hMO zfyYg92Lx!N28QKKqky}Yi7$OSU2{kqftN-)`4+w(ZJ~&i&ER{)wz9A?tcpWrmHeo< zTo$J7;1BbQVwpdz#O-3Ezfv)ki@p9z&JySSr3w#-u|SwF7qf!1=G2rU-U~N$y=Mt1 z?71w1NbQF>lO0HvUKN`}V{oQzpEJEFDr5x)D|V?~b>TP-k0Sl_2fpkFVCWT%j%h8f zv~8XoKx>127z!S33z>dEraiyo7@_O1{x*&$ui`jG)W8Ui_A59_?%+5_)Ssl?PR9vy z+lo-KfwVEaJQ=!<<2t#GT*grjszC0)267Ye7J9+EC~=9{9tzrP;HdQyf0Z1Uj*HiW zw4bxBzJhesR(UpYGnA7p)biH-_wH17#7(Zktj5Or=C#omk^C+#y5`PX^k}xqo(8-G zSPys?@FCz+z!!kyfHQz!09OIG0hVbha{>H`@wr93Zl0;7fd8RZBA}TeJGrwet|~?tK15v&75=yDWlN G|MoXo8l(*X diff --git a/iso/boot/asuro.bin b/iso/boot/asuro.bin index 881b9c1bf42fa4c625e58859bb6a7a7e6c110b91..7aac7a255372ee11521d51c8266539d8001e9291 100755 GIT binary patch delta 2030 zcmbVNZBSHY6n^h@*Ii`c?!p3#u(0TYCJ9cW=#;b~`PG<=qXnAa_^}DuLK_*Gp^S>B>7Ju&>Fcqd%!m#aMS| zpo8$oi7oft&G%dOQlj~%s@(Mtl*(HnNAsAyp}X4TGw2Xme_@*{dHC11b#jHwGh<4m%e*P3RGu|~58}|wm&cY8Dz;QEH1J4! ziPXl+?WMBS$S>NrOY?&TanDLi!sEMQK}SXFir1EudQ-h7uhQyOKL2Ko?`qrJfyG`m zU>NW;_6>NpzK4q(XC^E29y7BxmuSLdx^Y8(AwE^w!>`9@%NtBQDIpy{+D7t@Hcc@n_~-ypKfH3MDLhc|wuVg2 zqk38RDXf0jvC|^TFtyOQ9b!F!!r!Dm=}|q=xO_$t0ldi3fi>)3`K%U^_&6bobIFjpGz1*PMn*OzmtP;V2e;nFHy?QFE4T@%u}3};tEW2!wJFLmyHO;b8LMINN;;%8E3 zu9!Y%_ntErZpSV$sg!U3D(LDn~#v^Bub@Z)LO@~jv>n3g5?XYiycSyFRw`IJ;y zGVpSDw$#Tzbk9h3PeZ;uCCoa4jri*zPBzM@I$|ID|p}?De z;zM2r9Bt!>+O{!lwCF`Ev`6Ss3kZ9NunPylM(Fc@=ONg}n_xea)_Vht{{faY0(Olw z!!58+2=XI^H6WF!Ag>=UOU%6uCJ}Dib+FtUT7o9phoC;X24D?*@J zMdwipEPljqyOVJ1Ns;m41}#Dat1}`a+Gp*N`H`odT=0E_mHiI72Qp2vvINjHP%dZ* z=q1o*&>NtgAU|jy=pd*)=$xG-)plS}(sK|}f;kY6+sdLLhH*AReg%oInVo>d=4O{5Cqi~X;>ptsQ&B2Jmmwep r5rDvS5h_Xr=@L|kic$d<_gg$%^8EHU%fH

x%h2Z=#C>LtVk8H^3YOhm&Y>Qq8ba1aoQW3XL+-))DB{^w1;^Sz(< zp6_04;}_d_w_Ev|e?DEeE%`2sv53~d)|H5q5BNFn2SXE z>HWTl7H6^uA|icEs$!M8K+$qV$Wf}=8Plp@C|^ThIhZf%)FLsgI+bT~#XD*J3exA1 zK02w-7Eyan=BSmi!9H=>UdtQAgZVQ!6LtA3m0>Op<=63QG2KzG#1*m8Q3uU=M?G0N z>y^V9;v;7r_lYquttPS3wSg~9oN+zGJv}@9Mju%Qp%0}?K5Z3`*^BLsnJSAMw6J|X z*@1G9`nkeV-YecL3@byKVsBv(dA=>2%`3!sp}VDGhRSToBhkZgjLDWf*Hx7nXN@ZB zSW?GZ$K30VwBD*+cc9;_K*svb8H8fqK&&ZXYCme}>*@``k99SLSog=|cURKPwz)_k z-+;c44AT5oWeVQ{g9B3q;OA#dF#!Mm|K;09ES=s!CrXXYPxYBg^+yNeD9M&AMo%TI z%bM3=dN!7uGB6sP97eGs?(?kUbHpA`m=7n;c=C9e(bDP(T{l{iD?!QT$p*U7Vj`pH z6P`nPUb(Q`mNYA(*ZV{ZjgJ_h_R-qSS?Phww{=A7o-oovPj2m_?#)&iMTx0#yX7h} znmXwTBhZw1W|<9pS!EbDv;V|XtixHL-InZ=i-EOjv7+>z$7?3#k>h4{1MX#(M)7v%gVvrW zrH713c921@7MjFrxM*$-*w*{`H(tbz{H%|Ke< zo)namU?511p!AzQgM~x;u&wRaYv?|E2yP*Ww>@$PR1lPA3L)8@zjVFxnlu~PL*hMO zfyYg92Lx!N28QKKqky}Yi7$OSU2{kqftN-)`4+w(ZJ~&i&ER{)wz9A?tcpWrmHeo< zTo$J7;1BbQVwpdz#O-3Ezfv)ki@p9z&JySSr3w#-u|SwF7qf!1=G2rU-U~N$y=Mt1 z?71w1NbQF>lO0HvUKN`}V{oQzpEJEFDr5x)D|V?~b>TP-k0Sl_2fpkFVCWT%j%h8f zv~8XoKx>127z!S33z>dEraiyo7@_O1{x*&$ui`jG)W8Ui_A59_?%+5_)Ssl?PR9vy z+lo-KfwVEaJQ=!<<2t#GT*grjszC0)267Ye7J9+EC~=9{9tzrP;HdQyf0Z1Uj*HiW zw4bxBzJhesR(UpYGnA7p)biH-_wH17#7(Zktj5Or=C#omk^C+#y5`PX^k}xqo(8-G zSPys?@FCz+z!!kyfHQz!09OIG0hVbha{>H`@wr93Zl0;7fd8RZBA}TeJGrwet|~?tK15v&75=yDWlN G|MoXo8l(*X diff --git a/lib/isr.ppu b/lib/isr.ppu index 9b42b9d8fc3854e487bbf2b924260de54f8c60b2..77834535db81e5587bfd3abcf40623fc8be1e8a0 100644 GIT binary patch delta 69 zcmbQvH=S=n1BXgTd5dd{+^>xtu8ca2vdiW@vJBbJ00gX=#YM)(+kz)^NS-ez(N<(AbR~u8ca1wJJH)_FNTa00P#`;v!??jO*2|PWm1@VIn35 SJWDc-z4P;vH~(amV+8;RITfJ* diff --git a/lib/isr0.ppu b/lib/isr0.ppu index e4a07e3da5c1d99b3f3e8d4c15a36d400bd39dcc..3e777693ef8af5d6618419283a92978583b3a292 100644 GIT binary patch literal 1977 zcmbVMO=wd=5Z-zDZ;Wlzq-xt#C^q)AGCz~WD+ZLkm9q%Zi&E#b6^w}Z% zDk+=Voa|E%TuOzrx7VU;y*qxTR0l7RgBOuqFE0(+A?5)3AZc!ZrxvHnLw9?ot^=|; z%PZwdVd3ljpBt;&*B-&vzFg7g;~($*IIiMv0JvsK#d2xB(E0k;Mr!2oLtq|um9MNU z7RoQrua9hH0_{L;`fTO>@Y9KVZ`CvGy}Zcblxs^GZ(0F3Tjuo}ivms~L=bT{%-zC0 z!dryT3Wp;_=^%Iq962*nnQS!SiDlCH?9^m5(@m^uCq>H5l8sGlq#R<}0Giq}Kt=Cr zqW3u9O$jIATEhu!%wL0d1KbChTQfQ@tQaI*qM2Gp9c@U&CzsoV+c|ig5JTgl-OK}~ z8;>RMn=sKIX^AV4McRgstI$M%?Io#<3k8v)>{acRYc&ncg~BT8_oDkC`M5BH`E>MB zjLVdUFU`7D+ZG#OzeTfS?W@x)QUuYW)+QZ;aG+RDvf%)%X~2rbFR_fLQt|M`(ezj> zIXclSAOvuNm)3{my>q3~t^7ivGFO^a6l^n+B-O_{5Z;cvRoXb!Z2lBPI-mfXZZ1beP0J zKyW-)eUexj;{={T28yCqhn$daIE1${=Zc~>Lv=))p*FkYg+FRTi2*|)xUj{>vWol$ z+ygl1WbR%n+|+rPEh!2Z4@WA;_))RIe6gdBY;9`MkzJxiiq7Stq3<;HXhslKksu)> z{*yA(UxZ0kPm_E}3&0{USm$NZ69^hNQkx7m6W;%iSvHv0i+ZJ2qvx!B0SoHF-5{+c zmW*Y?d6@0mHtS^LET681S)_j0zcNAo$AsVHg|EDoqvI1BZo!&D#-p=j4e$0z^* delta 349 zcmdnVe~eQxARyGx*p#K2k%5`vK!6g%JQfB9_2B((iSePaYzzzxoD&tbnNH_V^z-7l zqjGJBWYY(yi3?JMxq(uQ!i+$YEjThb#MQTiVX`8lq%A8mP>6vM2swa~APzGchm{E^ z$c{~rV{!wd#AIzIuE`EeVvLNF!;nY^3TnA;S{H3ta+&HKsfAszu@YJ+syf<&Rfaq=2AO>QqB&j%y|RQrI< z(;1{n4#X8@2a;SWp20x|@tJvHm$9OqaLv-kfBPBr9(P*DDV8#|?X! zKY;uLFk6A_%}kSfU3p=C-n_+i5i6Wi;OzwSA21O8&auN}z}nIy;o3la0W-aPeFX&t SLla9=0~27-Zw`!k$OHhobb)gK delta 404 zcmdnAk8#sJ#tCxFM#g3v6(=%+=*fXG;+xMfeq)AlHaTo!n%u|12jg$v#<7kQ%8}Sy zFZ7uSCIeP!CjnC_F?qeB_vTF!n_vons-<~h=1NRHukOA1liVVN?0Ut&a1Kaz@-IcM z%`&Pp;DVdatG|VFz@{r{BbokQ7fBXmx|1Q2>Hm$9OqaLv-kfBPBr9(P*DDV8#|?X! zKY;uLFk6A_%}kSfU3p=C-n_+i5i6Wi;OzwSA21O8&auN}z}nIy;o3la0W-aPeFX&t SLla9=0~27-Zw`!k$OHhR-ho&E diff --git a/src/drivers/isr0.pas b/src/drivers/isr0.pas index 66eb3ec5..bde37ab3 100644 --- a/src/drivers/isr0.pas +++ b/src/drivers/isr0.pas @@ -18,12 +18,23 @@ uses IDT; procedure register(); +procedure hook(hook_method : uint32); +procedure unhook(hook_method : uint32); implementation +var + Hooks : Array[1..MAX_HOOKS] of pp_hook_method; + procedure Main(); interrupt; +var + i : integer; + begin CLI; + for i:=0 to MAX_HOOKS-1 do begin + if uint32(Hooks[i]) <> 0 then Hooks[i](nil); + end; console.writestringln('Divide by Zero Exception.'); util.halt_and_catch_fire; end; @@ -33,4 +44,27 @@ begin IDT.set_gate(0, uint32(@Main), $08, ISR_RING_0); 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 Hooks[i]:= pp_hook_method(hook_method); + 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 diff --git a/src/drivers/isr32.pas b/src/drivers/isr32.pas index 4955e63e..a724555a 100644 --- a/src/drivers/isr32.pas +++ b/src/drivers/isr32.pas @@ -14,13 +14,14 @@ interface uses util, console, + isr_types, IDT; -type - pp_void = procedure(); +//type +// pp_void = procedure(); -var - procedure_ptr : pp_void = nil; +//var +// procedure_ptr : pp_void = nil; procedure register(); @@ -28,21 +29,21 @@ implementation procedure Main; interrupt; //IRQ0, called every 55ms begin - if(procedure_ptr <> nil) then begin - procedure_ptr(); - end; + //if(procedure_ptr <> nil) then begin + //procedure_ptr(); + //end; outb($20, $20); end; procedure register(); begin asm - mov al, $36 - out $46, al - mov ax, 1165 - out $40, al - mov al, ah - out $40, al + mov al, $36 + out $46, al + mov ax, 1165 + out $40, al + mov al, ah + out $40, al end; IDT.set_gate(32, uint32(@Main), $08, ISR_RING_0); end; diff --git a/src/drivers/isr33.pas b/src/drivers/isr33.pas index 28825574..9d8e6e62 100644 --- a/src/drivers/isr33.pas +++ b/src/drivers/isr33.pas @@ -14,6 +14,7 @@ interface uses util, console, + isr_types, IDT; type diff --git a/src/drivers/isr40.pas b/src/drivers/isr40.pas index b0364d83..89bc63fb 100644 --- a/src/drivers/isr40.pas +++ b/src/drivers/isr40.pas @@ -14,13 +14,11 @@ interface uses util, console, + isr_types, IDT; -type - pp_void = procedure(); - -var - procedure_ptr : pp_void = nil; +//var + //procedure_ptr : pp_void = nil; procedure register(); @@ -29,9 +27,9 @@ implementation procedure Main; interrupt; //IRQ0, called 1024 times a second. begin console.writestringln('helo3'); - if(procedure_ptr <> nil) then begin - procedure_ptr(); - end; + //if(procedure_ptr <> nil) then begin + // procedure_ptr(); + //end; outb($A0, $20); outb($20, $20); end; diff --git a/src/drivers/isr_types.pas b/src/drivers/isr_types.pas index ca6e782c..f87ea073 100644 --- a/src/drivers/isr_types.pas +++ b/src/drivers/isr_types.pas @@ -11,12 +11,18 @@ unit isr_types; interface +const + MAX_HOOKS = 16; + type ISR_REGS = record ip, cs, flags, sp, ss : uint16; end; PISR_REGS = ^ISR_REGS; + pp_hook_method = procedure(data : void); + pp_void = pp_hook_method; + implementation end. \ No newline at end of file