From cbd46854074a304f482c8c2cdd8e72eae4297a6a Mon Sep 17 00:00:00 2001 From: kieron Date: Tue, 16 May 2017 23:35:52 +0000 Subject: [PATCH] IDT Implemented, should be ready for entries. git-svn-id: https://spexeah.com:8443/svn/Asuro@36 6dbc8c32-bb84-406f-8558-d1cf31a0ab0c --- Asuro.iso | Bin 5066752 -> 5066752 bytes bin/kernel.bin | Bin 12516 -> 12516 bytes iso/boot/asuro.bin | Bin 12516 -> 12516 bytes lib/console.ppu | Bin 16074 -> 16074 bytes lib/kernel.o | Bin 3784 -> 3816 bytes lib/kernel.ppu | Bin 1731 -> 1770 bytes lib/keyboard.ppu | Bin 1112 -> 1112 bytes lib/libpconsole.a | Bin 64564 -> 64564 bytes lib/libpkernel.a | Bin 23244 -> 23304 bytes lib/util.ppu | Bin 4704 -> 5119 bytes src/idt.pas | 31 ++++++++++++++++++++++++++++--- src/kernel.pas | 2 ++ src/util.pas | 13 +++++++++++++ 13 files changed, 43 insertions(+), 3 deletions(-) diff --git a/Asuro.iso b/Asuro.iso index 3491530882010339ab251366522902fbedb1560c..e61517740c94b77f3e3e5227ed4553e329de3bac 100644 GIT binary patch delta 10458 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 iYD$($zFA?)wU_s4(I diff --git a/bin/kernel.bin b/bin/kernel.bin index 5ef1ed728f1355d0ca9f520f5f02f8d5b8eccf22..1a3884cb20115ddb2ceebbffdd23dea073424ddd 100755 GIT binary patch delta 776 zcmYk4OK1~O6o$_v6FR9O8EdR#iMEzW>VrZ-H&v9NL}In-!Y&IIWr*NP5=F3v5DK}S z1`64_P%5shltkiKshULXV^yeyBKV+YEDqoO|NoqO=gt&IiX$_J z<>(nZ0KY0>xgY=-qAUXsSOD}u`M70f`cSxc7Vt4dEWBpJGEX^$a(ggm_=$EP@w=^9 z4v-rp?G@6*VCld1IciU!tOrW*suXe0LTXyJM<0-Wy`ggvcWU(DOyFbWU8JF58v2N6 zg6JMnBiBN?Van|%caq!_NP0lh{USd_;(ZdY5j`a8Y}yi6g|kh6fP8~|_~+ZW6(Gl3 z{k%rkut07%x{a-!wDks_m_I>U%uAWE?b~d<=TOnu2Q9X4f@Z8*`7spIPR)34<$Z{* zXDhkyQr+1nX6D+j2+<+-HU7iFhRZBcWurB=qOqm%L5Y2eeFHGf+)vq+t!nJZ@Ak_w z#5PP5r({bS^HgLMT-h~^xj(kmaXH~w-HGJI47?NHx{*O2F6)u1K3ZGMi;%nt?6pf! z3dyHF%;35Yw0WBxlEG{-Xy8;Ea-E(7{v2uGkLhDmg6B=sETlS>4&hhosB-X9H;Qa6 z$L0El39+L76_lpXL&AcW4y`e<(p6t#L;Q;?wqC*m*q5=*hw^x!hU5*U3}vq~h(Zq- z6rUOhrHV?*5)5T-?>;H`lVKlB(uH|c7FI=eN0naEoAhtqaGpQSwuA!voY>XBd237e Ys5&NeOvK+f3KYU8^P*!&Om`LKKk!QdiU0rr delta 543 zcmYk2K}f=27>573S+hV_n9YQUNW{V}T_lL47)TIZ^gatlr$Df?i3I5kf^`Wx6h#*a z#2p$zkkY}RgJ3~)3i0scX@`UkfqkFTXosI?@AH1&Kh{dL5~U>}eZ~_)V+IVNQ5$IYiI*N*40kDn!*=T9q73VKNBAP zaBS2bI)_0e_n~B(U7{FoEL9;WI~C)Vr3ZknyGEtW_e_%2A3QsZRu{d@s@4|gW8<M-VkI4}JGO~~4=ciI_- hAV3VPUoFepsaLawWj#2x#^^;~oYNkCW_hM1`~p?4q-FpB diff --git a/iso/boot/asuro.bin b/iso/boot/asuro.bin index 5ef1ed728f1355d0ca9f520f5f02f8d5b8eccf22..1a3884cb20115ddb2ceebbffdd23dea073424ddd 100755 GIT binary patch delta 776 zcmYk4OK1~O6o$_v6FR9O8EdR#iMEzW>VrZ-H&v9NL}In-!Y&IIWr*NP5=F3v5DK}S z1`64_P%5shltkiKshULXV^yeyBKV+YEDqoO|NoqO=gt&IiX$_J z<>(nZ0KY0>xgY=-qAUXsSOD}u`M70f`cSxc7Vt4dEWBpJGEX^$a(ggm_=$EP@w=^9 z4v-rp?G@6*VCld1IciU!tOrW*suXe0LTXyJM<0-Wy`ggvcWU(DOyFbWU8JF58v2N6 zg6JMnBiBN?Van|%caq!_NP0lh{USd_;(ZdY5j`a8Y}yi6g|kh6fP8~|_~+ZW6(Gl3 z{k%rkut07%x{a-!wDks_m_I>U%uAWE?b~d<=TOnu2Q9X4f@Z8*`7spIPR)34<$Z{* zXDhkyQr+1nX6D+j2+<+-HU7iFhRZBcWurB=qOqm%L5Y2eeFHGf+)vq+t!nJZ@Ak_w z#5PP5r({bS^HgLMT-h~^xj(kmaXH~w-HGJI47?NHx{*O2F6)u1K3ZGMi;%nt?6pf! z3dyHF%;35Yw0WBxlEG{-Xy8;Ea-E(7{v2uGkLhDmg6B=sETlS>4&hhosB-X9H;Qa6 z$L0El39+L76_lpXL&AcW4y`e<(p6t#L;Q;?wqC*m*q5=*hw^x!hU5*U3}vq~h(Zq- z6rUOhrHV?*5)5T-?>;H`lVKlB(uH|c7FI=eN0naEoAhtqaGpQSwuA!voY>XBd237e Ys5&NeOvK+f3KYU8^P*!&Om`LKKk!QdiU0rr delta 543 zcmYk2K}f=27>573S+hV_n9YQUNW{V}T_lL47)TIZ^gatlr$Df?i3I5kf^`Wx6h#*a z#2p$zkkY}RgJ3~)3i0scX@`UkfqkFTXosI?@AH1&Kh{dL5~U>}eZ~_)V+IVNQ5$IYiI*N*40kDn!*=T9q73VKNBAP zaBS2bI)_0e_n~B(U7{FoEL9;WI~C)Vr3ZknyGEtW_e_%2A3QsZRu{d@s@4|gW8<M-VkI4}JGO~~4=ciI_- hAV3VPUoFepsaLawWj#2x#^^;~oYNkCW_hM1`~p?4q-FpB diff --git a/lib/console.ppu b/lib/console.ppu index c021f71477d5827a394700b3d2f513d25d424b5d..d0db236418509fabb5ef41aa0352c98f885b2cf1 100644 GIT binary patch delta 19 bcmX?Ad#ZLq2}hv#vAMU`y_mJJ#?KA_XKe~9 delta 19 bcmX?Ad#ZLq3CHEV+pnL0#h$yd#?KA_aX1Q} diff --git a/lib/kernel.o b/lib/kernel.o index a17644af33a89d15f231690c8090a5e9ebc703f9..c2c4738853b5c2c2570e08f4b8448601b486279b 100644 GIT binary patch delta 656 zcmZ9KF-ROy6h-g*>#T`7ql;inbamZ9W_34FL%@iQ%@!)6g@xPLsEdt-V7~}9iz3QT z6Kqn7U?D4{NnsF0&_V@v=nT_cXbh*Vfgo-`|iB|dCXD#Ccc)Cwe`0C^@rM> z{GixfIgxX_XnMVN6Lq4ld3_zbZ&oC4$0D1$K1L==;}t(dE^N{9)!23}buC7R3m1a7 zr%rd*AvWf%4AwIt9tm+i#0w!_ea{A4rEKMu$Y81Y<(OVvp_26T23vg=ZtLqEwbW5idxMxC-dZhLMPxKQ&L?_NKKd4F@ z;F2}hNYz}NzUGo-%>`tgM~1Aq0jlP*^nD!#S#vo-!^?~&Y3N11LjyYgvr??4pZ~&$ z>r2kgyMg?&zumMX?1Ae$)0M!!z0+D?V_qP8w$BTky(%4=o$-80*`m5X?T+{98R{!i A0RR91 delta 629 zcmZ9JO(;ZR6o%h($DJ8t?oCO?&-lA){QqrcF)0gDEF_c6g2+ZmS=&s~ER==ml#LBp zU}3>1k&=xRB^DMWDT=*~lAM#9a&Ncqx$k@4@B2>YzC|yhE7dfYtx0e_h4*Irh}Xj= zAJ7%u@`4dBs5AVg-!k;&b7Pq%dDyot>z8jdHCukySBBPmJbKKdXFNLN(HsADZYpp?xvu<0;?q#EMWsNk++s8U34RV0rKt?)cb!2Y zl>NQtyD%*g4*FSXq6Cp)`Gu^7KoU2g@ zTxvk{y;2T-Qp&+ETCW1$Rm;U6%61v1`qjX;necV4Bb?CRJ!?5M!dWXuSw6CwsE}VR$4mx* gW43IEZ0@jQw8beqW^RXo3C@TcI7vz8tEBf!AGATm)=pS7_^I&#Cr zP*;sW@ndsuuX`~ID8ay-o>KDgvCqN-*85Vx{LGY+y*E_ut(s`lHF48(My}1X82uO- zc_%Mm6r22?DT`5fau#zUA2(1fTW(TjURpi_Bmd-^%<}v^Kq2mpOebK$PJN_0ZVaA{>UO? z#sd)&0}F8iNsjE)%B1|nq7(*3UWl9|NKTXsNU~<oyTypg50; Ww`-7}t51ApUMA25!jq@6=>Y)gnMi^F delta 309 zcmaFGdze=-ARyGx*p#K2k%5`vK!6g%Y&Hf44hQQJ+mMM11sE6@geNNMvu>=Bj$AM? z)K%j0-tE`Vzhch?N-!{|r<6Q=?6dHI^}dvehn_QXZeGRc$H>Stc>|-^WPau>Mxn`7 z%!zzlK&5QCNttp@KoK4l VZ`U9{SD*OIyvz~?pu`?FJpcuqM5X`$ diff --git a/lib/keyboard.ppu b/lib/keyboard.ppu index a7eceb26bbadda6342a53a7ff32e526a00598e09..4cf2fc960eb1e54c8edc426a115b7195d110e15b 100644 GIT binary patch delta 19 bcmcb?af4$*2S=dzvAMU`y_mIe!U<*oTj&YH delta 19 bcmcb?af4$*2gl{T+pnL0#h$xy!U<*oWwQ!6 diff --git a/lib/libpconsole.a b/lib/libpconsole.a index dac403470cf9252eb1a94bd352f51cac8328e6ef..63e7012ed8b63c780d37ded58d76fd330a5e238b 100644 GIT binary patch delta 812 zcmdn;gL%sj<_WT_7KTQKmK&91IUuab2K?fiqdC4Y!?|Lc-!0h8G+CaX2O_lDfd4;C zc7mPwW^dsT7MSAY;+uDiPl3sTjLMeY0_ASr;A+G;IigTt@`Of#$pxjNll_ypC+jgu zZ{Dcj#soFtf||r;5#{YLEf>@-BbZ8zljT$dHs8`-2vxngLGLz9I>G2VjM<>4#JD-m zd?(CIkRy$)BA|}kJi$(y9qN+}t}x>#8vva?-*W-f3@|s^cMgo3V3f2uF0d5F1)2Ch zga>Nkrbu>J0D#ox#lqD!=t*o!JPy+ZlGIB@mfUSH%fJi< z1*K}q8JH}H%Ui*MEUR1d2PO;B>)Id!lLc{0TVh~bkVS7h-oQc!#Qoa+0>PEo{HyOX zjBCITjsD$JVA20zx-;Wu{%L0zp@H~dIzP-}kXhWb-=S*W!X#j*m#?p&U}$1#VhK)e zz(fWzc0W|%W`pJP88-(my#+JUV0k6XNRZ=?uJVC79>|^iKE!*nLl4X5n)Q2Osz9+9 xx>-U2nu;3qLN*_}+zyikIVCa(v*Dws(OP}WE+{0e z-1vD{lEe)zxKJ(>H@kF!UC2U;z4N_8xqF}UJn!>9=l$OBt1kSi^IK9JRSt)J*Jerk zu9zyx(2*9?C1EZ+t%1n$rHt=Sph};_`du z>~(9|#3J<0b`r!vkMj?-9fU6n_dn1G@4jb(s>GlFFhI{A3DycAEnNzHiIJd0gV8H} z`RQ+SSTvL?qh(fWd8M<`nK-xjk)iD|7lImE6`*DFmMqoK6j@^U)2&7dABQaJX<#*r wdYIlmA{D+~D;TZ(iZsOoXV-JYVywX%)y!EO?u*4^ssF|D#V8g_^u1k(Uy7;#q5uE@ diff --git a/lib/libpkernel.a b/lib/libpkernel.a index 3a2efe07df62e78f125ffe250b9dbc1192033bda..3fa89028e04c16f6d3e03688368a1b537802b3af 100644 GIT binary patch delta 1354 zcmZ9MTSyd97{~u-+%c_PomJb->yB>aCR*;UDn2+F9?-h+Lp2cehj z>mlexdyv42V!A-|B0<=Nu%My{BIu!vE)vlNioS21+SwVH`SbfO=gfD$bI!x-YV?LW zRjDVUvF7+#&D!WV5F7={SSx1$a~25y0BQ}OZW+*E0*w(M-Uh7O3=9-p9Sy35bTV55 z)-CldX8|p<#%z&#Vs!GbMZbGAI;_sNM##v*2R-9zUJaP zwAb6Cwpdf%H!8(HT+FZL1$g11`M4vZ1waj}D&(#Rb7gI!exO6N2-wQ1IC+~e`+J2; zfI*vgi7o~9i3Wfn@dtq;!aSMGost1hh=B(@C(1l-^99jT;HGWAZQG|=RT*$sm?wT9 zTn^0I{92U9c`M4}z88N5@JW~_{wc~;{s9g_RRPjM87Plcg#e#02QCxkz)G=mT#Yct z)e4(Hy)ehMiE>cmD{f7R7jYD+MAIa=+>!Saw=G^~>gO2@goeBQ7z3IbpvCL;5 z7D1}0O5Q;E%d_$;YCk%H)A=KHS^4!1&IqfiF)KeAcX}xqPg>*a{^j%e zy{A!OtM`97Po0$&#Tr)+uQ5$C+SJn2lD^AbM@U8Z;-`Q1d;J)@3rULHX delta 1401 zcmZvcT}TvB6vzK}*72j(oY~b~)6{L1G_%s(Y}*tw%M9I6vPgS~qyis;jG%`I*2j8? zj1v(=Wz?Hd%*$%0YTwBph1*((JX2Lt*puev2&dNs8T@cBtEYw`wAt_z7kv`*z|Cik{S(IzLB-C6Pv(}eh zusKE-+6`7!MOu1ucMRY|p@d@E?fZxh%8P;vqiMF+=-4>G3Qmysq)Yww0p3{Mj zh+d&V&!o|g5gJ-^fgig|^$T%-D82$u zMQf5}Y@~fz{d8r6p{As0z9l@V@$cV|rkU1gWhS@RAAGbY;nzy$Z qs+DW*H@EU^&a4C2Nb5G&*fy9bc;i-k!6oDg)&J*sd{$G>g!TtwG41vM diff --git a/lib/util.ppu b/lib/util.ppu index 3620e51c1101ab2b62def5bec4628d5e856180e2..05687614fafe71c9962730e0352d5158d98a4679 100644 GIT binary patch delta 1105 zcmYjQUr19?7(d^3?{#i&bLw@o?PeQWBAPHYO|-;nkfCd~DOga5Sd8YDII{$iGJ5hs z{a*S*LQp;QVEIxHMvTblB|->_BFK8EM}vCMiu%s=UUv_i-}#;I_xrwc&!77__^-+z zi}i*Z_6pO$%q$lRuy>`5^|)W&{o6Mvcl$C6i0yd~EpQ4dI$Gls$dkMu01F5kg@`iM8TJw(6SVrEE>h%!{ zqsa+wZPcxoxOFG>D@15i&)M{w0t_|;j++il7oAaNNH6DenWvgk83s11S_RlV{wNB; zb#&X6{R`ytsJRi~z=7&vwH0gl*f;Sny_eef8U37_J7yU+ie zviQM(TtO%e4-JnFWoZ|B-YfiNZ*uW#pW%;AYqQwqXt3R&$SoeFXE5Q2%66i646b{` z7cuN?m-!bxF(}K#UvNd?|HW&AvP%4eHZR6CXR}QI6#Hs$d?UV&my6rWWl}Z_%3tD= z8S9DjEU+POx zLDyJ<66OL6LB1FK61)8l;%4xYeU5G#sB( zgpbXmy}UO$-ehl#<7YE#oTkbIuTpyw;mIh!%#@TWlApol@QG-M$VG`%$zS8d4imX0 zkp=P(y?GcLy`wRDEvzXeo{)d4pc5I7?IHABLNCa_*+IO$ixPTA{=Gmp@9T<$R>`k< z^SC&2FD1T7iB0l96ufGUB{PIzC`Gz01yp)K0i3svc|1)#${&?C66E`dPbCvn(KDs# Ui8Hg+TGgf2f%j8~@sl<157{|<*#H0l diff --git a/src/idt.pas b/src/idt.pas index 7321141d..b25e83cc 100644 --- a/src/idt.pas +++ b/src/idt.pas @@ -3,8 +3,8 @@ unit idt; interface uses - system, - types; + types, + util; type TIDT_Entry = bitpacked record @@ -23,9 +23,34 @@ type PIDT_Pointer = ^TIDT_Pointer; var - IDT : Array [0..255] of TIDT_Entry; + IDT_Entries : Array [0..255] of TIDT_Entry; IDT_Pointer : TIDT_Pointer; +procedure init(); + implementation +procedure set_gate(Number : uint8; Base : uint32; Selector : uint16; Flags : uint8); +begin + IDT_Entries[Number].base_high:= (Base and $FFFF0000) SHR 16; + IDT_Entries[Number].base_low:= (Base and $0000FFFF); + IDT_Entries[Number].selector:= Selector; + IDT_Entries[Number].flags:= Flags; + IDT_Entries[Number].always_0:= $00; +end; + +procedure load(idt_pointer : uint32); assembler; nostackframe; +asm + MOV EAX, idt_pointer + LIDT [EAX] +end; + +procedure init(); +begin + IDT_Pointer.limit:= (sizeof(TIDT_Entry) * 256) - 1; + IDT_Pointer.base:= uint32(@IDT_Entries); + util.memset(uint32(@IDT_Entries), 0, sizeof(TIDT_Entry) * 256); + load(uint32(@IDT_Pointer)); +end; + end. \ No newline at end of file diff --git a/src/kernel.pas b/src/kernel.pas index 80412792..7f36ca2f 100644 --- a/src/kernel.pas +++ b/src/kernel.pas @@ -7,6 +7,7 @@ uses multiboot, util, gdt, + idt, console, bios_data_area, keyboard; @@ -26,6 +27,7 @@ begin mbi:= mbinfo; mbm:= mbmagic; gdt.init(); + idt.init(); console.init(); console.writestringln('Booting Asuro...'); if (mbm <> MULTIBOOT_BOOTLOADER_MAGIC) then begin diff --git a/src/util.pas b/src/util.pas index 43c1827d..07551b2b 100644 --- a/src/util.pas +++ b/src/util.pas @@ -17,6 +17,7 @@ procedure halt_and_catch_fire(); function inb(port : uint16) : uint8; function inw(port : uint16) : uint16; function inl(port : uint16) : uint32; +procedure memset(location : uint32; value : uint8; size : uint32); implementation @@ -121,4 +122,16 @@ begin end; end; +procedure memset(location : uint32; value : uint8; size : uint32); +var + loc : puint8; + i : uint32; + +begin + for i:=0 to size do begin + loc:= puint8(location + i); + loc^:= value; + end; +end; + end.