From 372c5ef010a3e84886f0f8d6b411ddd1994ec5f0 Mon Sep 17 00:00:00 2001 From: kieron Date: Tue, 16 May 2017 18:09:59 +0000 Subject: [PATCH] Working GDT? git-svn-id: https://spexeah.com:8443/svn/Asuro@29 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/bda.ppu | Bin 1919 -> 0 bytes lib/console.o | Bin 6960 -> 14672 bytes lib/console.ppu | Bin 16074 -> 16074 bytes lib/consoleutil.ppu | Bin 2050 -> 0 bytes lib/gdt.ppu | Bin 2227 -> 2663 bytes lib/kernel.o | Bin 4644 -> 3660 bytes lib/kernel.ppu | Bin 1666 -> 1666 bytes lib/keyboard.ppu | Bin 1069 -> 1069 bytes lib/libpconsole.a | Bin 48374 -> 64564 bytes lib/libpkernel.a | Bin 23240 -> 22256 bytes lib/libpmultiboot.a | Bin 21822 -> 27222 bytes lib/libpsystem.a | Bin 91378 -> 104184 bytes lib/multiboot.o | Bin 2340 -> 5368 bytes lib/multiboot.ppu | Bin 2886 -> 2886 bytes lib/system.o | Bin 6368 -> 14840 bytes lib/system.ppu | Bin 7993 -> 7993 bytes lib/types.ppu | Bin 1212 -> 1212 bytes lib/util.ppu | Bin 4661 -> 4661 bytes src/gdt.pas | 136 +++++++++++++++++--------------------------- src/system.pas | 10 ++-- 23 files changed, 58 insertions(+), 88 deletions(-) delete mode 100644 lib/bda.ppu delete mode 100644 lib/consoleutil.ppu diff --git a/Asuro.iso b/Asuro.iso index f04c9fc43aea4af6a033e5504a2aaa618222c362..3cfdcf4ea631dba75ca2575574fc7dbbe26441c7 100644 GIT binary patch delta 10169 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 D(5oH} delta 10255 zcma)C3s_WT8lJ<=0Y?}R5m6Bk5CoLFq9Py+3;{_3`Iq{bYmAy=n%CMgUF%;EWqF$H zkhwkDUeb1Z60M+IS4Ti4Gf^~AKt&}6wAl)I7)vNYpm6e z|LBuG^pMe4K8$@DJ#g^D7wu)(bx-8euzvoYwK7_>=P`LqD374`-|H=->3c!o10U^u z!{)c7_ss+W5ASnf0rvq({n+9n8U1hZG{7Ca-%Cb=_apSJ{a$ieEEEbs`foLBW?F{c zb5GFILI>LR`&s{n^S&>b$DKuC&i!g_uFK(4o+-+ry`(+vO zY+LRp#|+;__v_uu8nb6+|0>{o$Yt*c?Be?bkbX1iM%*=@iS601}II$ z_sqoH?@{l+_@4E?2BHC{7@BzsaX;l~)hT4r^9L4J`vYppUw>c?tAeP{Y1WeT(}??z z(<@lBt5D$knW7=3k~S*$yc!i4KoXUV-(kI-U{*3={Apvz2|Tt?izmzi?aWt98aD=hcaD`@3@bma}!>Z?e3 z$yKIY2+;+|}1mH7c)7kUc+u=*;Wvjc3Dk#I5G2 z#SMhczQMQ@qO~{Jx>hzK?z~3Uqg;sAb5!{g)@xalLiq58Kv-Q*ZMI#K2woh)J`q=VtaBf|AhgD(A9TcVh4vS*bh0qted}T#`X*O7^Nll$Oz&X6S zi^X}+h5V-6W$0^nQJjjq%tiZM)aB@I*5yBRBkot-jC;8o)i~@Po6MK)Ay>usUS>1U zgOr!{^uMA=o;hpw09O=^JuE%deIzvhKC_s6AEkHUK1;9nKC+nhfGMwjfYPgcz|!l6 zXv#yjq}M(~aVs9OxGfKna!fDdzS4`(!@c2h;ktW~=cJ#R=jA`6Y8ZZI)o6ie^dpAq z9-+7gANkooaY>;Z_)ejZCHG<ZlNE#x=aa=zLQ z;@Nf_FSLXH8|--g%E2)HoWVT)I~c#f@efo`{y7zwU$26*dR)b4wN(Y}#|`23mkoiq z!Hl%@woJXY&aSc@2EUW>)fFxDYwo{JIV(Ze{tco^mngBfqfc>Hi4fBA68FB>k*VkZh$i08O+ei6po%(&|a%pbx1@4$G+2(Itu z2KleLaeN2HJKVVbsF9GrawO;P#CYdOVM4!INsr5n8(>yejpDPiV-%c~wo!amTt-7L zOGk6BMWf+dH;v|Vt#XI@^WC|At~*>e7u}h^55_?FxiQ@S`Y|y4@iD@)Y!p18{TvTL zzI_ot_JH~w9$eqW6WU+m$?d=A3H6&ig?`sVw&_Igcoux9EH3ckg`!?isn&}(-DWJr z=Zxhz#dxh5xABIV&i3Y+Zt#Ygp7G|HKEQaI569Q~Kz}EFxW8_Ur}%PwtuOR<+?V@n z$9T**j_bxj|KE%g=CVofgZ^^-%#(oeJ7(P5AM#)K7v!5oagRTY|IlCPceA3((9B8} zcdLbnr*8?xb>n$4ca4W)cg*;x0BB}q0AH0K2S9#j0M~a5gv(}0ARoqpK&XE`u>Tom za7L;|qu+EF4R&@AZ_L&psMQd}z1mNJ_`(T%FbXEXTpA|uTx%Oio#f!YGW+dSI0p-JI=iDC44x#2^uLVL_>(p zQ1MZmFhaKCHUmn%I)k4BcVfJA2CuqDJmjy5=lI_-en0+KmpLR+zp@+6@2UjezoG=# zpC&V|(m*E*G`uKVG2WozPSuI9DGL&LQ*skw{0oWPUvDCe|6CG}|7H@Lztc%VqNx*l z{QI2W`>}|4SS!fC77=T-(7%5&_n)2&@!e+p1jI{5JR|h}pTCtE3Vth7vNFi+FBT=~ zM{EvQQ6f-cL5U?L(rarctLGbO_) zaiL^5C9af=pu~-mk(7+0WHcr2l#HRogAz|lyeJt@l!Q|fK}jSflPH-?NfaehD49yhG)kf=nNCRzC9#ymQ8I&) zcuEo|(NK~|Nz&Iu8{r{*Dn_o?#tVA!jrH0RA*Cerb*;N~;7&`0LYH?*x9M7+LRWg; z(wHyp*l({ZJ!fg$D7|zjsW!AIWn^W^n;Wz*3vXxTHEwS8%hUAcW%cByb#2oa^E5ZM zY3lMcHTjyJXw$Dv*4Z4>w8!2YD{cGqIVcp-rl-{^Y13d-Y4bEaH?0ggJu2y-Bl02A z$0NBKqYNv3`sA%|w1+VS2KJN_l@a1e%>v?TMof*M^xm9F53uHdS!z*t%4 zb4!vj7_DRnB{`e4dK>ZTpS0?)bG1h;#BJ9s2F-NJ%*bAplf8U(LiVbKuPs@z`qkGI ka9=t&?&*CcrCYSksy_=wTIrE2J)V&sDJ4QtYG29!09~s3!2kdN diff --git a/bin/kernel.bin b/bin/kernel.bin index 50449ebf675a6febc368d7b20b37b548a413bd7e..04c5a7697293d1b4a40efc40068246df27ba6d40 100755 GIT binary patch delta 485 zcmaEo_#|JDX1hz9qZ#EK?W7S#1%)pS=c`L2)(SL@t9aouO%mxZ< z;!E3ch55wpKtdGYX{b5MW5_yOGv+Ag%8~THlMbz6-DZ zvkNeAFdRPIyG4xw2%yx2(9WmLZ+JRmzjT)V=sebWxyzNO!}U*BC`acF)&KuNwzGT{ zN)TY^ym9b_fGSXcp@ZeC2vk4;Rdw*a}Ew0pU)NyLW+z9U$U` z)BpefGiCu<8Rvn-P9X39E};EDX+|LNLIor}3CKc{2Fo&mWZ6Knzp%&xLzUshi+@1b zPgrDGK(eQRvO7R7d@%vYI(Zl<1_L17n*$^lux(N}#I#vS`99CY1qqWG4ITpkxIez* delta 569 zcmaEo_#|p^N?0oey%z|_75^8}ze-+*}% zP~Q74*DoEeZ@XQe0NvN?`UdD$AiF#EM)P6DPUeM2gajC}53qNK-szkmkRZU2)*bpF zt#g71kl7XbsAGZ{knx`tr0V41-YsfCr`0n|0EYm}4v_lA8bD%)9FW)r;%Z(v_(A{} zG#eRq0hKcB01+?F{`>!b;VZ(LK0XF6yRqR1(^kOd|Ka)w7v^zeFxI| z9;EfXIC)t01JIa*FId1X*qkdlnQig|DS=H2hnT`Z765@zNN{R;ZfahMOKNd)QD#9& Xei3%D04(Y-#WwFyddV}H(cm!vX=(EP diff --git a/iso/boot/asuro.bin b/iso/boot/asuro.bin index 50449ebf675a6febc368d7b20b37b548a413bd7e..04c5a7697293d1b4a40efc40068246df27ba6d40 100755 GIT binary patch delta 485 zcmaEo_#|JDX1hz9qZ#EK?W7S#1%)pS=c`L2)(SL@t9aouO%mxZ< z;!E3ch55wpKtdGYX{b5MW5_yOGv+Ag%8~THlMbz6-DZ zvkNeAFdRPIyG4xw2%yx2(9WmLZ+JRmzjT)V=sebWxyzNO!}U*BC`acF)&KuNwzGT{ zN)TY^ym9b_fGSXcp@ZeC2vk4;Rdw*a}Ew0pU)NyLW+z9U$U` z)BpefGiCu<8Rvn-P9X39E};EDX+|LNLIor}3CKc{2Fo&mWZ6Knzp%&xLzUshi+@1b zPgrDGK(eQRvO7R7d@%vYI(Zl<1_L17n*$^lux(N}#I#vS`99CY1qqWG4ITpkxIez* delta 569 zcmaEo_#|p^N?0oey%z|_75^8}ze-+*}% zP~Q74*DoEeZ@XQe0NvN?`UdD$AiF#EM)P6DPUeM2gajC}53qNK-szkmkRZU2)*bpF zt#g71kl7XbsAGZ{knx`tr0V41-YsfCr`0n|0EYm}4v_lA8bD%)9FW)r;%Z(v_(A{} zG#eRq0hKcB01+?F{`>!b;VZ(LK0XF6yRqR1(^kOd|Ka)w7v^zeFxI| z9;EfXIC)t01JIa*FId1X*qkdlnQig|DS=H2hnT`Z765@zNN{R;ZfahMOKNd)QD#9& Xei3%D04(Y-#WwFyddV}H(cm!vX=(EP diff --git a/lib/bda.ppu b/lib/bda.ppu deleted file mode 100644 index 0667234e0fbc40b6464e1d9a304e7648b2c732e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1919 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 diff --git a/lib/console.ppu b/lib/console.ppu index b2e8b6f21c494fac41b10aa5e8ead996f9a8dd87..4bf9b48962f0f0cccdbaa2d42d6f1c5e60c3ae15 100644 GIT binary patch delta 47 xcmX?Ad#aW{ARyGx*p#K2k%5`vK!DOl{zKfndl(>qA4suGzG$GlnUUwD5db+d3&a2b delta 47 xcmX?Ad#aW{ARyGx*p#K2k%5`vKmgN5{zKfnHVhEJ52RQoUo=qO%*b=n2mmUw3nTyl diff --git a/lib/consoleutil.ppu b/lib/consoleutil.ppu deleted file mode 100644 index a98ee936368c3e19aa32f020aae79e9c18ddaeb9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2050 zcmcgtJ5N+W7@hC#?&S@;JlFRFFi{f?F;rGS2-$?k29_YPAS-O*hARvE2%)f%#KcA` z3u9$vrHz%9HdZ!TnV48v7~&sLz~DLa?e4vMsdbY1cIJHN&f|P%Ae~+uxiK2u6%#S< z(~kMtWXzBF-j&z;#U;lWGlb68jxN%+TG%KRyj-Q6_o74=nd{}q=?dhoZDvc4Q*x_^ znTT83DV1~go*iEL^z-5HXMWPnM64tDNrBt-6L%9{{?2AFm*r+`g5x1J+t^}btBq?m zw%It(AL$W9cVT%UGdZ(IAR$IfGtdZT5iv1t=-9{^QTfO5|Lnqx8#%NEy3Mg2{o;sC ze%tvzuYZE`Gem=>g$@!UXe)ch3aK@$XPA`(W`woG5A`$hC%h|ndBDt7=7Wt)(^A*;Hm|CBQ!RC3ke{ia2#e z9IJ@4&lTC6gVTsI!nOMd1RA&HI^lcPC^dEC08XJxlFZn+mt9?lapP83t2p43mf#{r z$Gu9qNiKFWRbbD;7n9FS#X;s2yKvY&2;1h_BZB?>H+BAP12n%BCo8;q-%;(mO zv}<~lAE4W7COa{5)0N_;hZA%t<0dd3RT;dDyPWg9!nTo4WsDI+*E7-tv8B8DGM4C4 z!W1ArS3M)G6rCz&cZ|d}KLdnU(*^kQW1gyzP{INrT0_r}#K`rkGIT3r85l3GOK_u@ zr#kc~VFeKX8t56gP}H+R^lCl_gzB&$l01vpOgZwt-p0;#Uq3>aUQ(4RhYddM1Vf{LWX+-$Tu7xZlmGe0`Uzuzy%r&_YRP6IKG{*;XVNK z4abv&4EGU`Z#a6U(Qy3l=Ns-EX2%To1)y)Z3zkxoqH4Hr0DZ#^Viq>scVNEZ_A355Z-xy&#~h)&5xau)}UaL&|m^iQB?$jDs7VxDMVJ|2t^UHoaQw#%AaCK zCmF2oh^VD@v=d?lh z!d9jB$Hg-XL)66LwcT3XU;p^w@SS@%hkhp1tM6|4wO`Kc{dT+gwfe+5Mm&#`Hyy~G z9LJMu)uk=!DqMynZORkMlgc^O$g=X3@~iBmSHRK8Xpnd zP}4%t+3jLHPBl78weWRLOo$1cc~pf1tgmys0zdR7Dm%()r_Kp_x7FnC1Io~~U7DNh zIm*5d+Cs!yp;njGK+_tIr#!B_jow@Ru(FYdni7kYRl4s%8lh#Bx{$tu&|aFlQYueu z)VFu37Dx8}4tbd4EXPQf^=iGmw)w7+_9T}jS&vp` zMmkwq5=)huZ=tCO+HFy$3;kJza)FdW*Q?9RYrc_=2pv9#0brg{G?O!4xpvL3)r_2o zfHacm(z<0#sg>=@#?D%0yIS8h(ix$jClpjbvwLHnCpC!G>dLB-lM(hjfuNUdXPibK zBpG4qzaHp#(36xUPd3W4o#7ZnTZdjkakIKn_qVAOSN6DX92MK5d+aq3mm@aIBH-yY z7)eKAmY@ykX$VgC1h~sB8OcPjw*w51pX4+K!R0wVhwD@X^bY#1K<2%Z*h`ct5@m{L zrpN;Y5z}~!JWsqPU0`^ReH-tE?MP}iotrRzK!CiG3UW*m%;V|V=@Q-kU&3-8$!U;> z!SRBbd-5c;EUPF9qR!K*=6wcrG_v%ng-378De9%CQ?fLqd1(9Jmn3`C`XTfd!NS>I z{O<)yw?%ve{ZnX?W*t449@3juFQ342mY6

J%a_`*_AxABo>@!+`Nq*hrtFSu{T) zirxzHO-@JXF9-#FiS`7VWS9tUb)$;o$l9|O^A&U?Y4A{_#}2q#BmW%E0;-uUl4sQ4 zpoR1;1t(!lmwrV;_2FJGmJu|YavR1U2#^6TO>&aF^uaO?F+x6m3i$9Kc|Nrt=`5h1 z*dr6&8;I^`LMGmY^-m&XAj-r(-sj}Z{M;K1YVh*-)hpAp<1@zv#SO9WI60=(!5bRL z@bIvT`Bi)TB|wktVeTQ5Z-7glweKEUNPkgytOxZX79V2(Qi!%O#%;_^l*&`%rHN=4 zErd%8u#+9PL+-)uFas$yRjK>s*`4(z)I2HJq{a@zx*>=MJB$qh>*QEe-Ah`n3M1iR z;6ts{fgZ0kHmuN7;NA?sLvVW`#C8VQQ|R%uV$Uj;Ngf{$J{N__5ZoVtbLjDEVm9i2 zfKyZZKN*GjaK>OTV-)>4%mDOIg`tYYMKY{2$w3~keOLpw&WO2y$ri#lmAt;TQ(G-- oDGIVn%xi#X?Z~h!C2D@Xyn=I#E>6tlAQEZt?aCb3BP7j#0V9wL1ONa4 literal 2227 zcmb7F--}yS5I%ErZ+`5$?QYr>n@vkwcWdpot5pS^~aF)8y^<&=3hYs?45Uw+;=Q~a`Mj5&sn!^J0(YHo*0T_f)y@|+BKi@kbq zX=--;5;>`Ka61V7osaLG{^r-W=f5S?y%o0F&wlsW8}Bdu_A(h>c)RBZ-_P#<^!4y_ z8Zwziw-a>R{(0vI|D$tvek5-KpLiZEbREzKxKHQWt*st;b^5{~8J*!f=$y_}HL|Vq zq|R$IFRp5R=(oZ)+^=eu7EuwMobn|3gT2uJUQZxkuI?w&+-1E6)|%vni#33 zZs5xuchXrRn3hKjh#j)_=~qd zsq-2_s~?Lz-MTu%OI-nv#W}>AR_|#}T_>&79_Jn<3*?OtN=$|it&cq}8mEUtXA%1+ z$dlufo|VbTiz~Iw<+bustvt89w6?N(b?K!M@#1=|%=4YZ6KBsVg7>>h?lL^{#GFcF zcDL$*Z)75G4TzbF@JFyB15>9J%Ix&ot({f~?1>oraD+XH^)N1FvAmY|db{2XfPFm1 zJ`!QiVLfh>)Hs9Ju#*J_@tH`@wxP8|Xa=c9%d5O;D`PfEgo?F}>cz$H5@JLqe-W zGy&xhr47fI8^iWSV4k@2TZ9hgMwSs~Q_%d-@ zHj=d>Hft$RJ>BU0^^o~*vq#K(;4-bHKsVi1hZ#Q^OFsl}j?%+y&iBg?IZ#x;K1q;# zrF`X|nIr{^{1kEy8Svi1i(=u8jQm0WB`IdvV*qZFw?N6F#uWqxS{fb!wKuK*9?HAV zq{YEo4TthPR9;Y{N8^K>91CY|6D5=&Y3bh@N^Hd$XlTyz{>$-!pf7^H67A_f$KUT| zxwu!9BguY1D&|s)Nh1a3Pi~HdZeQrA%^xwZ!VqghjxdmEAnN_Tk)o@w0{%wi$yNen y3K7@~0h~>M+Y#_4)<^Y3X6FQLw*5{sL^YHWa9hEyxfLnNfX^=DMUA~3GW-+T+t}Oy diff --git a/lib/kernel.o b/lib/kernel.o index 76d00292861831b875fd1823e6b2f69cd2a3dcda..05e0a1ab7f5cb026900304ff8f53c4c6d076ea9c 100644 GIT binary patch delta 1189 zcmZ9LJ7`l;9LB$U@@kW6axInCRGT(6HEQc)60(@2wWcI=M(iaPt2p7ropAhwuCSANQVf&$-q9t?v1l z+6}GsS;`3O8MWxaYv>D}@@dHMCNoiL}%< zd~HT$wUGl11aM#ciGS?F6Y-l4er|h;DIHatdktWp@RlP_{$#VaQLpe_l%B(c!Y`nL z&L%ek9(mAN2b;p@9o!>)-NA#x(+*AvmmQoFe(2zs-@16y#dQ~dcJZHzE6}g_s^;JeM_fGR;@d8sb@8%`*IlfiwNBR-gE1pJoEa_U zFOOTfOrcO8mYYty)r5tvTQW~9H1Tn zdPI#bpr4!sQq-f(gI336i_A;$n4K?>qkv^|k$N1Mq7DLgsM3FrD*ZE}MmO+?oRk~& zn1O@9Y%_otRB2eCO2abqhvYEHL%<4E?)@6$vf4LfS?D@B25g{N$6tYUA4OTm>&?1t zaxbt$9y$a3ppn9#O!NW2$x`T-!{$OlR9OhGw>k+#si*Y9-hs4yyesUA12?Gqfm>8L zwg*)Ch}@QO7~o%RB%1e^@t2Lb{M~W=B^=PZ;Tyfyx-2<$OYu9aNWX}hon9Now z@6bsz>i_DOJt#e9_Nnz&eb-F*te_+t9V=!;Swa2YOsKh#{$?gRmqNfbNw>%h$n@I& EFOTPeO#lD@ literal 4644 zcma)9Z)_W98Gn5C*^U!8N!v{oL(HWfbhLHcG)*(uplADHA3dLgeNJ0o98Pj;qb6~& zooy9}sUV?6okT%m5@-^97}A6`Y5dU`AVH_`p&-}?zHCAh8v>+?KZ5ZACYT7%@4ffp zyX!W1r1S6jJBbw|+uP#jS!jfJ`9I3jPaPT@`5_|DCj4+jHPjF5@JcBEvxKKh zy@l>dIq{ZlT`8yEE~nmz6Fqk$b21|G8r&6X@T$-}{QUSc&kOHQf8})4O5N^Yb>m!4 z>u>hDg+c-O`sUhTb%_(Xa(DgW+G=NGkb~}s+3l>jy`1H`EAGmEs%fTeSXB~bg~DCo zBE6owJXpK5Uo>TQAK(&ocfH%Yl)EQKr%FV%)pO@VK~~z`L1!(XtF!K>99QTL{^eb< zoy9M<13$5TZ<*+V+uLy03Ku(lZ=0xC7*b;gl-+7Ft0=n^HLIv+aWe3z0^Z%2u-_-A9J zD*HuuW3kCtJbg#{w)CFS(&$8TGPaxJN`Zs#9sAIjN8>8R(@MseAWF>axazI!B9_dv z^TE;4QKHlYA(9>!FtUfM8RZuvlV!!6sDRG!M2NYd1ZHX~Fj4b8*Uc?-`pZ1q(}mf> zOm4b(bY`kJGc{eLsq@`+ck05b+v{#jiB+AV5#De^Q%==2!{U`d2*ZolONKSyAmwWO zcN}6`*Q!RDc@oQ)fERxX9t+tgsMxRj3Q|jFZJoZ);iT|Vu@v-bS!-4dOEc+LNbRsx zB87_8g?gKJU#Zcs9dy94>0ca9C%8{3w4vUVe+Q>VZi>!i=1r~IBISVCZ<)GYcg)6V zy~&XTS`v}=!h(pTMMSh((HD)f&Z;pHE7vQgVS!J0r5cr%Q*N{^n?rktA+1tD)%!$* zKX^_{=Q%p?&fjzIGWEK);F!8qwQC$Z?3F@HmMS7bDGXATWo@HjIW=9Y=uOAgN~X>; zk>JH2d7J!1#%l8d$Pu@UkD}Y&U}ZzzI9oNVa)wi4gp@)T-^_yH1iiK$)P%p_yg}r~ z^fhsg1T9X9AmywY;mHWcS9WM|N)HKpaT(Q5p*<__d||5k3{-Nt%!F#Sl-? z3Uh2hSd3ECXA}!3`R5q1#bL;Qi4ptXvlKnb&QBym{+sOMCGado-(u%Ck|F;C_Obar zOVN+n!4`ob|4T-HQNUkjj+eo+6#bSRe{GTf8}nBJH$s!#! zzs9^4;4d)$WPrcS9BT$c`9CrrcvSG$nLildNgnGX0lt^{V*!4EImQCR_>M96jlbM< zcZ3@e?nd|*BmC(I|5=2;7~!u)cqZ`5p+E15@ZiB(Fjw5A&2!G$>W16rbA7eDQKVpS z$T~|)J@@{bL|%9(Tiv*?TO=ocN^e@anRm>UqesK^SePE?_Bs*CEMn7P-3(%pvM0il zX-HsiK$K)t0R_ZO0oWdEkiCGk??3 zmESqtF06M}H^{Cv`GdZwHBFdD* zwSr^Vu&LazS`9vgLgaMQu=SSRK&E~pFZCm#QZQC#%Tt*#@dsNo!a?P1Hn)J_)(&NN?nq_*XYM6koz$SyqoAY z;5|gs(DQfnIf=N1#Q5rA0hu&`Jc)}y7B2(&ugf_gm%AUB_QnmoDml&#@FygGSK>8^ zFGzev;y)z*TOuDXqWrBAPe?Q*eoSIl;zJU@ED>iX+W(%!>k@x0@l}a@EDGJ75@#ir zC4NNWX^Gsu|I4^~41qA8u#@~05s-%S35Hu9!v0Zpk;ylh`{wJi9N^*X=q9*7LGyLH zIT&b$qPm1EB;Joe1<+j&aK8@T;-UIpV%?|SM8~g4NN4bX{JRt6etmfFf?aerl=(ZxdCs~)1^M diff --git a/lib/keyboard.ppu b/lib/keyboard.ppu index 992e7956ddb19c585659f3c94ddf3bcc02fa3d57..43a3718ffb9e79be72398d86f2388d2e1df02755 100644 GIT binary patch delta 24 fcmZ3>v6h2BARyGx*p#K2k%5`vK!DOlemNEZOv6h2BARyGx*p#K2k%5`vKmgN5emNEZOuGe# diff --git a/lib/libpconsole.a b/lib/libpconsole.a index 5b18de4d2c69d92ac23beeffce661d15291dc635..ce14ba4783bb39fc09c949fa40443f3849d5b13f 100644 GIT binary patch literal 64564 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�xJlv28Ys^4 zYz!aQ$(-$Rr+2ElhI!&?xQ73DW@wnFn}&G?XqbnXhMV}0XO)I=#Do7WJC17bnkSKl z0~^DhEgHsQBHpq5I8K0T92MYyn>6<8d2Q3Jv7Fd6$DLZsS!+|PwVbs!1GSd3)}~fx zIqO_LEoYtOtg~s>S^hekW}W4)xBT@s<$4>d-o~nTg|xBiZLE6xlzJPt-o|aPaT{#h z1{=4*#%-{18*JPL8@Iv6ZLo10Y}`g0x6#IJv~e44+(sL>(Z+4GaT{&iMjN-$#%;23 zn{3=B8@I{EYO=AKEPs>bZ?gQ&mb2M%He1eS%h_zxZ?^o+mcQBZm3YuNxIFSmROa;v@x|6NI30L5xD{$f!IQa^kfZ?52wvmhF1j06$2zb

YGZQ%L5x7(WXDxy{p9d#F&I|-jqXVb9fz!*t zsb1i;s|Fg9Y}d&CWK#045Qfg;*qGci#TuKjdmPx8!*LOV6{>FLH?NO}h5Mx;>srcu#{A8^Nz5#X{Fjq^P6!kz%21F~;sZ)519z&$KKf z#l~zO=_SUjCtYRCX42Khypa?OR5y^m%Aa`|H0DdhYq3#@u^i7b97l??3@b?Ai1$fI zvG6oPx*cafNZ*1p7Nk3j`5@`_#_T0UC31|Kx&dc>NXL!&J}DNa9w&W=F@Gez$)7#> z8)F*Lr>C$mwSx3-@jTKGxc6vMXoOwFd+?qQ=`EPUlYR_mUr0ZNGft$RHs);f#i=i% z@)J5#qoFVH{4Jgefk;?41OLf~Y+KjjsSx4gS|xX&^YJ~GvjVdA$!9Z9bPy5jgJsR}Bs!+bMOs2)2O(q{#}gN$4VUU8Bh*GQ!d3_EsVvaNyRHAI|9>|)#qYrt=S zJB0~U_?ko449@#~*81r$53`=c@jG^+_K8l7On-S8RksIz>PdF8FAq0XC;vVx&mPm& z+5czYycv76cqdv(j;XMh8MZ9*X*0qft+B7}gx}N2H}streKhM{_<@)-tO)MuMrZ}idbQyV6j?DQKH6XIYUD97D7=b zgCmacVN!`9Wag0wjOe9ad>K7NNe_GLAx!8WRv_KqPUonJ7e0scz2D#Y{m%LEn_jg2 z{3Rz!dJV&?`+SO`Dfq2i6~$Yl8`T)s0Gz{CP2}i%fWRO?os|%2s9-dm1VDmk80QQCq@{$> zW)(y(eq=<;0gx*p#?>PL2XVR9#^~t*KyFMhZd$>&Re-xX0I`w|X#n@E8{L-yMooZ6 zO8}4CXs^_6FKUTJJ7SSmt;4Iv_F7HzR@GFo-V)8ZnSL3ea=yNsm;;qdjH;M~jLdWp@e+i~#7n{p9 zWBHOtQf(|H(fZL3BCR&oCDP(MUXKUFJ1k8W8Uy4&e-7<_@D%{TMS?9TkNwGU+X9WmR* zfyBVY^OcS{ZtC~u{U+jY%OuT$YgWZCoMU1-6|pM*$9|WZBy6Qazuc%*6>Hq1NT43X zrD)z-j%@CyGyRDG-=Hu%^Va+J7mbRg=w1UwTY*c{5}H8?SEo(9da~Pkd*-wIp-5|* zoj*Jo*0-JmHLJbenwAhhp!n3kUxW35D@nHzMq3iezQuFVXfz=Y%7biVj;t@W-*0g& z!pm|TSBJVgzVpB?nLWFq8T^jJeZB#FnOg3rjMo)CqiR{;OdsU}wOG2KE1GRnC)l=5 z6-b(n*;ANs2*$8H#q7*C>VnZc=OkxJ|JY-~q)p06IHz6yTZbf6e^37K+(3 z6fk(HihUCj*}%}@R@@$ue7m+_j^M3{4zb7qY_mX2mBg5RBG(z)nvl449>0dexS~ov zdQ?{cO|`4O)Lb%-#kLq($A4-G`KA{4#DbQhT_$9R)p;^1kvsTmw2SK{Sh1_^j7nmX y0L-#*U`(>}*Dge`>_3F5vHF(PNYFZ-5Br?=Ia~P0IIyh!vUge8Z}N9`i~A4f&*ljL delta 1976 zcmZWqU1%It6h3!$XJ@mUG?O&!mf9rSBs5*Esk_;1HV9!SyOYh3+1WHZX@ua;`8wk-0i>URvB*e^X&TcbhC87U>Q72gy%)lO^0{^xdeS zs-1MTu0KT8y&-Q(tI3X*VmkTv&QQ;LxINTTUGCj(sq%Dk*4;?0w@B{Wg8|2K@2vaN zvG-dY*U|w8&9QwVFvlk+1CHh1$K37gS7HvYXZ~tIH0{yuOkrf@WGa=)or+ zOz!Lr&mo*0%@_FVPac=9D14*RC!LY_+T^9iuK*CLPF1yvQ39zM`5Jkcvd~S+s#6B$ zKrYOyI}VVi&e}SBjB>=w6sC}0E@|^+!_rLno=Uq+2`eV$O4L)lWy|_$ zqokv&-P0PSYS}a_5>$U!tz36XwFS#Ysb^2p%4M4Skf-S8v{Tpdlm?I7$M#~?sy64C zx>d1fP&?s|B2A2Xf)r3_m$DdZ8#T+B(JyLcecrLPDN}cB2urxvpdnCKW7Y!Rf!K51 zc#8V=w<}iicUqsZ%4e|T?GcpwjCbYN_>$hqrDBhF<co zv_HZ>FCJ((L$mt4rJF;Jc_EX5038j|F&HtQ*=NaC|dP`ta z;B|o?3Umd2DR4{RU4aihYykWv1iVUb;)K9)frh{(fhz(V0#^mD3A`n6Q{Wwe_XGmo zJZ&INcodVo5K01130(A$U+#L8_bY4sT3D6NN&I+eVB|VhQury@IvyQ_@uT0(D1IUQ zc47kyI^(aD24q_CIo=gJ*sWs~TiK0^5&lae!S9sR$O~vnG5(-5y!Tjz3S)VGswd69 z;ZFH%PEJ55YT#m#AxtLY@i?}j0x8i>584j0P&D3&|AIQuQHU8TXG((qo@nEb=dZX+ zy2aQ_)CvD=T4lHR*7UG+f$^)@Lq|nrFY><1FfMj^EXkc{TX#0I|0UtY$s~WLvd#{; b+Dszix9UGT+0p%G|JnJczVkY%_C4u8admCL diff --git a/lib/libpmultiboot.a b/lib/libpmultiboot.a index b9fcbfcfdd757f420ea91482fb71e07ec72e3c76..be9e973fd35586409bc1703446384c2ae835bd42 100644 GIT binary patch literal 27222 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 diff --git a/lib/libpsystem.a b/lib/libpsystem.a index 176bc62b096b3b0a4b76b59e86cc9b32164d09ba..1c2f37785560ca7baf964188bb7ab87f5be7492b 100644 GIT binary patch literal 104184 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 WG}&=qZTIP0F~Oxz=SFDf2mc>smdMEf delta 2766 zcmZ`*drXs86#pGS1XmEn2@b|8!C`#V77&3jWVkRN0~&Nj7oA#VBOwARQ#TFNgk(k+ z(&ZXEjWgYJ&JiRHSNU`?v-1@NhRiVMlqexCvWyvK@Dbv4_iMS|*9!1Q>G|Drf9HK} zpPmSPcy){;z9u8Xl9HNgG@6a-pZ}-Pm@+pr#S0tPjsx&95ETo=odgmt0#iGIq;4R& z518>BFhv2D*MPJnV4exc$^hP44&+t=3#x(q-N2$_zlr#XPEkIc>P!R@fo(_Dn5ZGP{?AQ%d9|v|_25RpCyMuteMxZVS_;MAnZzte9 z1RNBGzIFqycHoF`@R)G0UO0F{=(^1S&jp&TK+T!8z}ZURTrF_^E8vnKzj7LA6W(7F z|E~*gf9n8lb^*70fjf_Zo)F;ANkDHB@OKLEK#=`g2n+}Zo|FTFcHqBbAhdykyFj6R zpzz0_2!Ns@LDBJ`$+JLHvay8X^FeP|L5UxLrfmRCuL8}i1)1tWmXn|~4=5uWlr8Z2 z)u6mVQ2tiXqJyAVlh?BQLAT3%S`iCnR{Zd z1hK|gL#QTq1`T~@9nbQ3SKMVO`*bU(`ss?hi<1K6iSvfpVD|J_UYPt)@_6MBXK3<% z8|5+AJtIFo`>52B7&|??jXNwiN&06`Hxct>8Q7E%19zGVh(%|Xvx@XrbOl4O48WbY zp1sI!<({k?l7I<}zsUYZ8shFeA0h9~ZIMa>4ADqD2R878{FCwm6EaK4zr`FD0}pxk z0!_&DMXV>asYp;()<uWu zUMCt?wM#49wJwLaXU#1?AXbaSwJw%LmM!MS65aL?#*8IhUb3){ejXtrCe(Oj*>lal zPkxiQwL+_nP_l8yre;4S8*^;(@owLIf!NAzvP_}}V%VcY1-yNmt}n3%pAE+%tA}Hz zUBj`$+TmFF=Q^fVvu=+bzgo?@J-*ym?G?Enni0L4YQcGnBk)R#;}(m$9Ko;c`$bE& z=YYt4w^Pr(=YXDj5gUJWC|Ik7D!=N|Wp|#9+mC#!M*p264~L~E#CRC-))l~4W0FIdyh5)D#l&+E^1z? zJG9}xwnNpO${OzXdAW}Ej@WPNx;*@kwjRBKH}>nYk0Oze8_?F}5N#qGH{f&g!4rKa zbUZT=?;q6LrQ=zc%z@G$L_-U;EIh)wdMuq_))besb_{KF-VGwzG^(C|*Tg9E!zr1R z+_BUn^P$eP3WrN_)pNBHis-H@T1F)38t(^+c2_zkl9qR|rfp6Er~?q8{18n)(S*4# zZ$-rsC!AN@Q%H+Vg|y%_``rnCrlkG;seYhp-#G0h`vUL|pz?GYof~O0s7~gXsI7Sx z`9Cl=MSyxJ!l3fpOnL!TATligh;fR<%~Tf7qdQunRG;dybRyAP;yH_ZotbS16>ARl z$;69BUax$YOVL{5-IFFOoeL;FM1KiwPQlftKAnnr5ou3d^Ag%BuZi!47dV>B3v3FAN diff --git a/lib/multiboot.o b/lib/multiboot.o index ffdfd06d7b3b285641034d1b89d9c88cf41da67c..22500298948a33484fa65b5c6c29ed996e308f56 100644 GIT binary patch literal 5368 zcma)AZHQde8GdJHv$M%&&8}%hqHRN>AjZy4Heg+|`|( zbY@lzg*FI6TeQ*=p;YmQ3ZjUpp!h>Y1;3?*>L0<4vUaw~ z>Nb##Pejdv)icD#x@b=}%nom}nr|=^#?=AHwHj~ImNGcH(eMwhX~Uc}&LQqt}mKGrDtZW^7_)GIk{#htd)sbtkUf zArikzO+|)xh>PZInNTpY6K-SBC&r;ayp1Y35N9PE!%RKZn|ZF~`@2i^_UZcS?&;*g zWP0~>YJYkvm7bbT$<%VQ;ZNPW;QGPkC$9AlXc2oJ~QvmDw7BP`0DS6;w3zlUd5TMy2XOG;3%7FW+vx& zRe2qDs^44a5FcRqXXr-;=qD0|T3&|sGL9rvl|y?~=tL%)EkmRBOQNz+$ld`K+|3|u zsk;uhFjqufRon`zu0DMS`jI|qIx&~a%vZuH@=o5%6;C?M9+W~!tyEHypdQt|taHMh zbxc)>*?czV7Rc2zk;oUb6>qj!D^wv;+bnDAK)MnZmo37;0j@56*o zhv7fOgqzCn3z%>-1tTF3V!|75_|Gum%{KfIOb+R`#?YT9z|9)Co)^Gx4UER45xoZbKLUQM#h(E`Y4JC~%NG9}{3VP3 z6Z}<+@4zGbsl{&u|Bc06>yc)EPJ!>&Yh*oPt&4 z|Gqw>K-@Ls*^jKgpORKanZt+)CAwy9L*x-k{HZxmtC*o&!xIQ3sp=B0)E^tSnZl_!`e<%2~IN z$w?$p|Ct~XzuzDdA?%o^4;7IBefo%hDg4|<9J`8$$K@PCdBnbi<4E`O+n2>wMmz^O z_Um-3Z$DWqXM;V3gF^TIOLk`7(>9fSCWo_6)t2Rog?S_DHf_-UV!*EDfSmxtvNLDd zZWcAVYx)8VPG)E77O3|}Z`B*ABeiaBvXMnk4dz4_$!&?FIWMaUcUf<&-c8o4>)9$$ zMRVCZkeUuyXn^B%%~2sB==@qor7MEI46 zh*Klt$Mq@V5s`CR{tF`FJf-m!jUQ_KT;ty~{#WA_To>Z2^}#<)4m?Uk9+!x`1tJcU z72+)-buIr95%xdV_?X7$HNH%Q-@8P_`G`0p@>^m?W5=^7GiP-g7~MW=PWcPSo8v?eV~4E}`cU<6*qPr3Ef~j1@zrOCb&T}Rn_rGno9nL?cgC54t12=Q39yJY%*zx(Xf64s{b}vH4 Z-m`Aj$N72u*>($)A{UT=I^I)b_dm&US)c#_ delta 734 zcmYjPJ4nM&6uphH)l@XTf65Nt~o0 zh=ZTi!C4e6IEjOT=-R=-(R1TX&4rWmdH4Oo`x$Sjqg0|EBfqBoZ-y+2U1jGD{i1B$ zQl`#DYhK@93z^`4GH49UdPsa8JR0(Q(2J6B{~2^qGWJdAplpaw-~vbhJRXY>-Tixy zG6UL#wy;Q19mJ7Q#8*$grJ$6dx?W~8<8W6!|b>S1?hOmXD zd0Yu6h10?l!jAB)@B(u$(X#lwFyEioI|Vx|&L!X&nq+Mm0CoB;~VgdXp`1<@nI)I>D46KAEVv1i=_=fuqvCyi1OpLhiykw|?8B55z SL-_~#F5x=?-hfZg1^fca+CM1( diff --git a/lib/multiboot.ppu b/lib/multiboot.ppu index 64c62ab84b195062c0a99f35edd9539aff2daeac..36171961c403ef45110f7b775fde80445fe4ac9d 100644 GIT binary patch delta 112 zcmX>mc1(;vARyGx*p#K2k%5`vK!DOl{z@jsJ(D|`q=6(4r~Kq2OmAiPFfcGU0Wkxk zK8Vm|29h2iJ`n8Le2!Tfq~#T>G$%+QM{a&f>E!)Pc9VVB4gke@*?~rF)?}Au0RRM) B8-f4; delta 112 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 F{{v2Bx$Xb} delta 1991 zcmYk-Pe@cj9Ki9}ZB5N}T~ka#@=rudNKvb72Lp)?SqhRKI#{ltEnB1%d!!b9JAzR}- zSwZ6gtIBD0uIt(n+MsX)c?pqC z=>8~eNH|8W*9#E3f0*{1@FaONq35LEQnMuOy9M={yqCx$^aLxkap5oIV?+U=`?qMP zh4Vd1&13WV3cMs7#;Kk0mRFspu)b69sw>z>m<4W<7Yh%PR}%aAjNZTmd9CnM@@7IG zzV2Tj?-G7b9yhia@EJTZ1-wZ(% zZ0_Mz>?4eCkQWkW!Z>+Ic$~b3Fh9Z>@_OM#@)jbO^_>ONpvx(2dy{;CFi$~%M`B3$ z2p$uz!3p6eoWy3s-FRMj5HI0e)^|4Wm_kYyT+iX}xXATe>?4f7l9v$XG29{#3Fl?- z7z$V5TH$J3kF6YcfeREaQ!sAD?bw{aE!-nKj0eQ{1RfHe!(-TNa1kejS8>wE`I{s9 zLt&l)#(8@=B5dw)B~A<1;SFpy7{!V?jQg-3XS!c-2p0;E-H~UAG@J(#;=lCehT`1uHOT{DTIWxvv_yoVz>V=Zo&F}ug9Ok zacpkUCHzqMI!FXCxb>Z5KCDYfRd-*nrq)Gyt3@HyRHQ>u)0Je|A-bW4A)Zu$Ix)7tMMrFJ@! z!@t2P{d(NJ*lUnr6#p(cFCs`BCD_r<739@2%-1m&uV3dn!CyIUf(N$Az8@&C)2D;p dA4T@vKvAfULHbu_u5|`Q0b6%&re0Lf{U5|nrc3|; diff --git a/lib/system.ppu b/lib/system.ppu index 94b122af8275ccdbf6c7dff5a5f89fc0c630c0e6..020971fa7456f5e7863e801598f380485ebcaff5 100644 GIT binary patch delta 700 zcmYk3y-Px26vpq#tG=3cGsG0lsHAREhJ6ST1r1F>7}*fD1pNUHO+^vpR71x5FGO2} zxFlTYV+v|$h{kFR99r56>^blCiU;0@bD!V2=e!@ah1!CV&#z~vX7ppyT-sfJ@Z4C` zzjE=7O5s6YvNTN#VbKIZ1r`UpO}hhGH-947rXd#71&v~HSaQ>Ck|j$@uav$iZ74N8 zOjniec}zFA5%Sv`mA9S%$aB;4%NI{H*aceTwg^imy>@*-G2X}#1B4}uP1eP|LOt-x zir5=9)P#30PpEr&2VucFFU%^pt`~aa{3Z`XEUsXqVe`2d*kg-VL<}vSL`=2N zQUH`rKtEe0e_{Q|1+h3UH||9 delta 700 zcmYk3J4*vm5QTS=O>(ntj7o?Jd59Wx4LmWBI=$veLZQf+vKeDTLZ?Vv?&i?C%n;MALn@kS09AZ%G|uy*d%*#+-R z5oe=eHQ_zL6KVn8K}4|52`k1ss7D|)(+$0Kf0KJ6o=~t}clc}^?5W91B90c%BCc9! z834*Ap`Xo?Ke2+6LNKaINL}t!53tTRjIiZ?FuKT7ybkO|8gU_VUlc+^eb8i!o#C7u z#*dJ7nfwSQF!DE;P+gbclQVa80ClTw9deJFm>Wd8(PBGqowHzXxwhOioFnM!pV2Jf zb`zc&(Ig*%j$rZWXk-|A>=u+Cj0wV~zS~Zq2PWUit9b?84dE5am!VpiLh>w?CR5&| Ql4QuL%4?jLMS7h60h1+XLjV8( diff --git a/lib/types.ppu b/lib/types.ppu index a279f6b8d2013bd3c676d8aaf7dab90617188715..118a89ac70359a3eaee7173e6f7e0ad17ba8e936 100644 GIT binary patch delta 77 zcmdnPxrdWKARyGx*p#K2k%5`vK!DOl{*{c3dnWH>l$PDYz`!60#0-pLAVQM~NGgH& WK(J@>M@DI&I$kCqxmlBGG7|uW{SVOq delta 77 zcmdnPxrdWKARyGx*p#K2k%5`vKmgN5{*{c3Hj{TUO3T_XFfd30F$1F*h|pvLl1d;x W5ZFxq$S4g|$IApHH)}FYW&!{^y$vw{ diff --git a/lib/util.ppu b/lib/util.ppu index 759f3df93b216bd3d7bc249fa441e72d3d40075b..9b3b0f4db0da8c77976b83468daae1799b0a0c01 100644 GIT binary patch delta 24 fcmdn0vQ>pYARyGx*p#K2k%5`vK!DOlel;NgQ@I8O delta 24 fcmdn0vQ>pYARyGx*p#K2k%5`vKmgN5el;NgQyB&2 diff --git a/src/gdt.pas b/src/gdt.pas index 35cfdde2..74fa1a8a 100644 --- a/src/gdt.pas +++ b/src/gdt.pas @@ -1,101 +1,71 @@ unit gdt; - + interface uses - util, - types, - console; - -procedure create(base : dword; limit : dword; flags : byte); -procedure init(); + types; type - TSegmentDescriptor = bitpacked record - limit_low : WORD; - base_low : WORD; - access : Byte; - limit_n_flags : Byte; - base_high : Byte; + TGDT_Entry = bitpacked record + limit_low : int16; + base_low : int16; + base_middle : int8; + access : int8; + granularity : int8; + base_high : int8; end; - PSegmentDescriptor = ^TSegmentDescriptor; + PGDT_Entry = ^TGDT_Entry; + TGDT_Pointer = bitpacked record + limit : int16; + base : int32; + end; + +var + gdt_entries : array[0..4] of TGDT_Entry; + gdt_pointer : TGDT_Pointer; + +procedure init(); + implementation -var - GDTarr : array [0..2] of TSegmentDescriptor; - GDTptr : PSegmentDescriptor; - GDT_length : integer = 0; - -procedure create(base : dword; limit : dword; flags : byte); -var - descriptor : array[0..8] of Byte; - descriptor_ptr : PByte; - - s_descriptor : TSegmentDescriptor; - s_descriptor_ptr : PSegmentDescriptor; +procedure flush_gdt(gdt_pointer : int32); assembler; nostackframe; +asm + MOV EAX, gdt_pointer + LGDT [EAX] + MOV AX, $10 + MOV DS, AX + MOV ES, AX + MOV FS, AX + MOV GS, AX + MOV SS, AX + db $EA // Bypass stupid inline ASM restrictions- + dw @@flush, $08 // by assembling the farjump instruction ourselves. + // It's just data, honest gov'. +@@flush: + RET +end; +procedure set_gate(Gate_Number : int32; Base : int32; Limit : int32; Access : int8; Granularity : int8); begin - descriptor_ptr:= @descriptor[0]; - s_descriptor_ptr:= @s_descriptor; - if limit <= 65536 then begin - descriptor[6] := $40; - end else begin - if (limit and $FFF) <> $FFF then begin - limit := (limit SHR 12) - 1; - end else begin - limit := limit SHR 12; - end; - descriptor[6] := $C0; - end; - - descriptor[0] := limit and $FF; - descriptor[1] := (limit shr 8) and $FF; - descriptor[6] := descriptor[6] or ((limit shr 16) and $F); - - descriptor[2] := base and $FF; - descriptor[3] := (base shr 8) and $FF; - descriptor[4] := (base shr 16) and $FF; - descriptor[7] := (base shr 24) and $FF; - - descriptor[5] := flags; - - asm - MOV EAX, descriptor_ptr - MOV s_descriptor_ptr, EAX - end; - - descriptor_ptr:= @descriptor[4]; - - asm - MOV EAX, descriptor_ptr - MOV EBX, s_descriptor_ptr - ADD EBX, 1 - MOV [EBX], EAX - end; - - GDTarr[GDT_length] := s_descriptor; - GDT_length := GDT_length + 1; + gdt_entries[Gate_Number].base_low := (Base AND $FFFF); + gdt_entries[Gate_Number].base_middle := (Base SHR 16) AND $FF; + gdt_entries[Gate_Number].base_high := (Base SHR 24) AND $FF; + gdt_entries[Gate_Number].limit_low := (Limit AND $FFFF); + gdt_entries[Gate_Number].granularity := ((Limit SHR 16) AND $0F) OR (Granularity AND $F0); + gdt_entries[Gate_Number].access := Access; end; procedure init(); -var - data_addr : dword; begin - GDTptr := @GDTarr[0]; - data_addr := (@GDTarr[2] - @GDTarr[0]) shr 16; - create($0000, $0000, $00); //null segment / GDT pointer - create($0000, $FFFF, $9A); //code descriptor - create($0000, $FFFF, $92); //data descriptor - asm - LGDT GDTptr - MOV EAX, data_addr - MOV DS, AX - MOV SS, AX - MOV ES, AX - MOV FS, AX - MOV GS, AX - end; + gdt_pointer.limit := (sizeof(TGDT_Entry) * 5) - 1; + gdt_pointer.base := int32(@gdt_entries); + set_gate($00, $00, $00, $00, $00); + set_gate($01, $00, $FFFFFFFF, $9A, $CF); + set_gate($02, $00, $FFFFFFFF, $92, $CF); + set_gate($03, $00, $FFFFFFFF, $FA, $CF); + set_gate($04, $00, $FFFFFFFF, $F2, $CF); + flush_gdt(int32(@gdt_pointer)) end; -end. +end. \ No newline at end of file diff --git a/src/system.pas b/src/system.pas index 6f706f00..dd3e3d48 100644 --- a/src/system.pas +++ b/src/system.pas @@ -3,12 +3,12 @@ unit system; interface type - cardinal = 0..$FFFFFFFF; - hresult = cardinal; - dword = cardinal; - integer = longint; + cardinal = 0..$FFFFFFFF; + hresult = cardinal; + dword = cardinal; + integer = longint; - pchar = ^char; + pchar = ^char; implementation