From 805f20ca3192c02ee6b3775903cdb1e7f7e4b489 Mon Sep 17 00:00:00 2001 From: kieron Date: Sat, 20 May 2017 16:00:23 +0000 Subject: [PATCH] ds git-svn-id: https://spexeah.com:8443/svn/Asuro@142 6dbc8c32-bb84-406f-8558-d1cf31a0ab0c --- Asuro.iso | Bin 5156864 -> 5156864 bytes lib/kernel.ppu | Bin 2158 -> 2174 bytes lib/libpconsole.a | Bin 64564 -> 64564 bytes lib/libpmultiboot.a | Bin 27222 -> 27222 bytes lib/libpsystem.a | Bin 129474 -> 129474 bytes lib/vmemorymanager.ppu | Bin 4027 -> 4384 bytes src/kernel.pas | 8 +++-- src/vmemorymanager.pas | 80 +++++++++++++++++++++-------------------- 8 files changed, 48 insertions(+), 40 deletions(-) diff --git a/Asuro.iso b/Asuro.iso index 28eea3708256a98255a4df8ad549f94d5234c821..8b06ece94d29fc638fb47e9e2a0d73834a12837e 100644 GIT binary patch delta 11249 zcmbtadsI}_8lM9L3^2fe$Xf(NL;(ePC@S)DU`S9?$X)7EGYRvN-ZZUHN70>xwpdMe z(5$q_O@#x) z^q2Qq=*icPm^`=W=-9}p@NmW8@Q5Md(PWi3cBkh#^;Eh#xw{#r7QM$VE)?~$bQ&ID z=qMWIOuj1?S-C#@W=P%OC!=p|NO%$5y>G*7jxy}AHReUwFm-Ddi(%Z#VpMN^<|W#d zhuYnLTd<&^F)b7df&5pdj?YRm_-_q+(dF*1et6gF?;`FP`y$D3V27K`sonvl*k|V~ zrm}Enh-~)Xog)Az_PYXPG<+9?F5MN-C57>0GbVJC!mVAwf0u&kCnk1NQKV~^Uhr}m z4j6eh#-tZz?he`0X#F<@`e*M4x%Y#kUi5AVD+!gIPcC`Z$j+HD{8$nwqo+y$Wrlu- zf@E~uA&9%>5aS*>G!lsGUdoC;q7>q;D`niDOCim+hlAy~QHLS!>cfn?{V=52beL%l zE`wApE@P@Tl|gY^$_B`Beaj*AopPq?%W}x`t#ansr2^uJ zM5{R3_8a6m^>^lZ&hL=t{l5pwCy^J&E;%WELN}#}{)35_{0G$gpZ;LIuLjYOqYTYF z3UR;Z=<%bFME^foT-~2gOTPG%HS9Qu_C3a0GVU0}{qER&*6ia@;odyX3b*z+r1{cu zmXWFo@;s%AP4h=pP)0RXEF+5(kmsxu%=5An5ck*##%%@B)RPRIcM|eka*}y&1kt!t z49z|TWwh@U%Sbu}c^-Z`sLL3QO3c)DGe*ChW)d%)hQdUgVGWyn210jo^uigaG+}3% z=ghMZciY)Htl8BNI=7m|Evkk*->7DuHRmAi%yW!ecn;#$onu_pd8lxc&aPN-qj+!`qC(V9S~=k9v8+Vm8|=E}jqEid^3oAaCtP;&b(u;io*P?XqOmfW;j z2;Iri>RQNi*hS_UU4*#XE;7%@FG9KZxx{i$zXYA!&o8~tT74PvJnJ&^TnM6d997jp zaVORBcGW>~Pu8(Ywt?KyR~UEU6{s4OR|d+OAA{)FtL%km*;R;plA{*&5IV7*aWRP2 z)U$J~YJj*?8d#6kfM_j8Ro6i7HO>XmT8^r&gWT(!3!=5xhqC@k5O=P`U!*~_g`<8q zAnu|YtQuc~=))UKRX`)eUEIjfuR-)-BU2T06XJewlX3qIqU|@Cs^BJwyR?a+KY*x- zqoKDT?uuJX)eaD~YGyMT(+o}f>Si|WKQu$9ti73?vVhyrIa+jkGwa|T2%UY0os>^O z^g2g1Eu-9?J$sp-#KvTJ3*w5;?RprNws^@gHnu>S-)>=<``(2VEV#=QY`hEQcJpqR zd#jx;G2M`GI10G8&bY^_@XCw+3U3F>0`UOho8L9;yk_& z=^g!mq5paS#VLEhR5U+;x*XTay8L=8#Qmj}aWA$)HI979CUe?DNY&1VZ?G9?gFMe} z>-vr&ZS44o-Mph{Xk+QAA3=_$K4KErJc80Y`-r92@d%Qb@tApD_!vsB@-a)V6+}n3 zvm^a(I~2F9oyBczhdjr3Fz#C&5PF~^N-kV$2c$Xm3DZ392~>@eC#)KcAR70Sq1jKN zxci<4J3jZ8Le>3~f{7*fnhBEdqbY~VU+*CR^4HH2Wclk01%SK$svrv#)dEBorwBsV z$C>o3(cL`Gh^L7y)gg8W0?;9Gw1psNA!2DvZg|7FX3~dHEg5Y~dakn*3 z=DaoNEX;-%>lGWY7~k6n^Woz$g8VmaIls^rcaVY7cl!{F1$PU zT|ob7J%r#cPtRj@$!YLwomkd`$7<>U)*{}O*CNLijJ4mD=OV#)Tu+YY^o036`6M*L zc)T0O=eU9V5;NWmf7kG32CKzw=76x{im2rugiQUY~J3f3?Hu`|Ga?6L$id!#G z%j{lUYf&$7uCMpvbFKCT{ZIAf{@3_|=jNO*)Aw0#5PrEgm%pSp7`~#nFounSA1HsW zpCCWJh+q1F{%`wn|8D-E{8|27{wMyR|Lgujm-j=q zUqukt*9_zF{WzZ857fV>pD>wCLNKUrZm@Y0VEmpL59|-}-|H{P4~yc~{$Tv}{z8|B z74-z|_%v~gMu>j#kx*PbfERP~0MOYzGwu@tidhiCPvw^(AipJq`}Yb3kIk%5K8zoS zg8r|DcD=*cPe|8l4J#f%gFQ2hH)d@Z=&LS_Yjqq5;xh*F!T5L}m`mM2o{QZekUw=0 z_rG=!m}|`-VHg{XaF9PYoX0PM@mprxBLe0}nE4UlVBd(~_0bFl`7;M|ej$uEm~l-c z%#Rd8ySy4?ret>Wn=P>+l50^%fwh_x#pgmF1?Ex}#rbV8KQ)^3=R|}2{n3AUHp?8J z)y?k+#ON3vYjO;j_s$qzw+k^~E+Ip>mT^NsEn9{N3)x%@1?O(|(5?sCE-Pii;BH=J z8-|+e8Vkmn5-S8g|JZDsMV?5Tq0@9SmaA@qJ*5rfk>(Ert5P;hkbf5@w!wJDaDE$H zHXP)i9M1XHBS3u82w|{XwZai#)vk`Jb&d#(Er4d+`oP# z$Uinx2zb8Ij<2MOw=IQO;3k|F&j)B>JlM3dcwrnHkOUB)mB3q3m;k2Qkih+G5w6x z@n25m@pDtb`8$>>q|iuSLXa9jL#58rMHA4aB#Y@gpE!?D>+= z@&Ej-OtF8CGSLPj0V4~HEHP4IWQCD6Mr2ckku64c7};Z_#>fF9M~s{>(qQC_kqbsW zFmlDHCq`}7zJR|2ctlY`eGD>Q9q1=G3t-e z0E|K~3dJZ4qk$L=!YCZ02#f|}6p2w3M$s6>U^E1yp%}$tGz_ER7>&Rv4x^D6#bcC! zQ6ff37$svg3L`B>DHx?A~ zH3zfz3W{u_U@7$`A5~=UwIDxOSW3i1VO$cfIVefa3PtI| zwj(<~tF2snUs2GLx^XJjcIeeB1@gTuUwfy(fo)FdC?G#%ZV*Z?EBoFtnG`Foi0u|> z!(cN6Hg58eKmZtvoJx@&DVUM_9o+p_g-lCN<;wJsyuBrD+~?frr&^_Aw#^IP+p z)cHPv`3nP;`MH6r?ELcGotc*xC|BlP78Z>(m!jP1SLMnQ$(nBV-$E-PWw?>*=2tis zSLC%>EVUUb?e|qEZaQS=KhDm-Bh7zmGOa0HQ(fQ_SU@5akO+B))#l*qex=1Pk=&#u zCh^P%x-qsn#M@0PDZ*C_%he4Ls>PYPx^U|^ok(L3iJ#}{`nvg$cIJFcXnQv+Nt5@e z6gw1Bv3Mp|_c1kJO3fXa`BG|5)NpevZf;M_m+HO~s>Ix7I-RgYEL%ocHV%aKy4b#q zu>Rv?W+`kq%SDr*Hd$QX0E5^UY+K)++0J= zS1|Jx)ZC7lub}3ho#uAj+?txNWacZWxh*qaNzFYv&F#6likjy!^E_&Fwx;lR!9sQGGUzM7g_GxOEdyl1DmBR99D=2*8*9jhd> z8Tc}pp+Q#SF|2c6evRtdNwk-F3#5OY`?d0ZG@0iDz18zT*)xLe z^ZP%NePa%lHbad2Q0MDCiYUDK)L2QkhSF<0<57AYs#FyBDN38-zT8+pmHb@ZWHLz$ zYRNL<30a0bB+H?CvV^sf#dw)4yRVSN_YqmPT_wx6*U0i!16hV$B+GXsFG=y3T-lR5 zoph#=EGz2Bvi2NV7GEOEt{Y@oT1^&-#4xtexMPGSaoX3qz+pLrx{nrTbbf1cf%1#( zRhomV4=!{xlJpb>uJX^O6M5}UxphX@X@vRkCUG>r-DDC6ZqT{M67xL?#B`TJ+D4j;mRhzN>^h!}#PfTAJ-0y7DTig`+1b4%0wsJ1U_MKSf{w$_hd zlU+2|)ZI2}w_lnSR_i7rsac8ND4>!egC8i0h)T_#d(S&6`A~nXKj(0{&-=XZ^M0H= z_YPBV`YU6Bcx_Hx77!mhbVyumtYL6$+|bwrvFazbW-s&U=F-(WsIP5$(aZ9nx~Nwt z@6Nq#ZAHU<#ZSWvuKss_*s|7y>gZEzM&FNa{d&!#-Z~suoOnNMn_fIg#@JRYV^kL3 z_2M#uLTw%JVWeW#Vj2wwMf`WknlLHN)~7i7ewSO{`{+g2--@_--2EimH=6@=PUU8l zV&5%uq{_lAQM%cGw~Pc%JUjjm|_RTiRW?S0*GPg#3dEV_e3iSKlcaZlTWA68Ei!L3gJD*y5w~=>d#`bY(xQ-q! z1>LH+b}y5~A6bUDZsemZu~C9U9n4Y|Gf)o zcI=XxBg>Jhm&&E8b>%2-Q~3jW+>mb(`rNlt)%tId=S$y8&wjfR_sQLne%gK!|Fr$$ zm1fP$NzJvT?ivD0SGPM>ml3!JxthO6Hgp|CoAyYNJ@=y0&EG3a_x4_t!kN7?1=Dwk z`^a~aTL94mgtmT%JZJ5bp6BgDp11D{*LNZn$0I#0dtwKrN%&rhnEE~H{U_hc-d932 z>IaGD{eZY15L)pAlGx`*8Q1b7YRTVzlntwZXutikCAs?%_x=6P$Yxid!aZ3b3%9BQ zX+BjUGcp}Oo~Ip<)BO4Ylu^|InUV1z@;vFF^t|{W;_g2vxh)XQIwa8rhmhyeL(=nk zh$bJF=&ZviqpuIkjO>Sz=MhID+Kthe)Vz!i#_01SQeyQH6ejMdY}nMJ2;D+x^-)xs z=ws4z-Z8}e@Yp=r>`H{ruat3%Dv{@gO6l2r9C2qJm)yeRh+BJHa!n^t;ijCBMPCll zV-kI<3Q;FkN$R316!wRzaG!gwdhQw7nYImk2ZKvqdbOPM+0`hy?bR|ldo_xZR3npn ztOlW52(7F^o}*7n&+H`Pet1%Pt~iNu?|Vw-o_z}K+;>mCB3peLd7g7xdM<=$Eup4b z6n9E3wW}7zJya_z*$TO1f0Eqie?ryR`%{dr`4&XSosn-mi_akLAwrF35jy#-ST{rLbQfZ(>cgJM_h>35NfK2+l;}qgbr3r6 z65=ksBvoyOsB5E~$;3u9?JFAPw13oycG>Mlxy!;XqkZ(k*LpC6<)uFqSRcIQQVpl`bcwx?vZZIJS`d7+2cC6h97E{ac(suy<@LS z^iS7Oobu~ZMdNkU<>VIGoE%JjT$B1hA2N{K6PqV$g4lJR6kVX|r6968O;OrE&SXy- z+ri_EdPLZ2I@C5r0Uc7u8WlYY^%*0QqLvv+%SEFCs->oOQuHRO^EyGT+dEPGvz;J6 z$%Xh&xIp|%Cw>;=Nv?`Mp6V=D$p6}v{GW4$`6an2?XN#M898DL!h1+{s~aVA!VNl$ z?o7pcxHBxq2c4A#dNTq|kU!T%{I^XonFbRjiyY+=*}YfcQ)g!V5j1 z{#p;p-{cA7Pw}Mq%Q1e8@OQkR`|)1nexVnf)!kk+s~5eX{M0Tae_j`empbu_7*F-4 zSz6!?`DIT0iZ|4k;-kn9{G1;%Jd`mxUAvkGqc`v_iebUbmmXIudMmNE(~9pqW~G}P z4l^w7T(fgHFkbJ(&Aza@GkmGKD}7;hHNI3mlON{I3jw`{sCv)b~zr2#@bg@)!1o;dl2|9+IOF3gyoaRrJRfb$uxGe>s%= z2lRpR=ky`@Z}oxx>-#9}?uXoSna%eg_)uA$5k`gLVbD`m7&YCkFT|(xC7fft%89#$ z!%QcKQ>KfyZ3&zJr5dLBW)VDi=^fh8Ur9a`b`a}I+ z_E)CLNr;5{=0`dw0pr)4c=!Owe|dnSKP;-n17Q5y1C(|TD_#>bCRo*tW+mbNM?&?b z2dJ1E9)QlSIq{xRP|UMYv@6#~L4H#d`41Whx6Pb^G>mT!g#OPAY=4FEoS2=FVOx3~ z4ff1vYRsx==&LrGw0g%t{P7qXj5lLoF10a~i^m|ypFW8EuNnk%ts0~ZmxB=t`SW8b zei6nmIq|?a%#U;O@Ms#|p; z%q40lX~`W5wQL-!JTK>B7@WJg!`g3Xk4c#m2Y2u;TQ|&E*CZHgT9Oie?_;z3B=JPr zh<4MVBvRdqJz0lSq-Tc1s+12`^uL9vtr*W4L6^bBBOw3K2;#eqg!q(^%3!@}g(G3r z&Wxnp>Xi)nGm_~tT9^#Gb}E_jcNqo!PaZ}73r0cy{!vQUy_NQUI7_|UNl5}1VQUHv z(DNy4g6S<2TcPb(_O7ZO^u#`F(B-^{;3Q>`%QD_sW1u zW@J!NR$;t0gOr*xVN+&gQd3rD!uZEBNncwgj6Xh$;xEdA^S3`s$<#Vw!{6Wey)TQX z-&hp=+ahYE1?nGQCH=Wph;MY_dmvuY<3XkE|M{*=NuSv+shv4fI5TqAi8B|@Tsd>& zOq?`v=FXW1XP%sSan^-1Z_a!;Gjrz4nIC6eIrHbN8)pHWb>}RQvmTrUaTd&3PtJOA z7Q$I?&O$ls!&w+-eK`x~tRH6)ob~4{lCuGvJ-}HMX9GEl<}8M@L7c^M7RT9O&W3On z&shRziJT4PY#3)roDJt}1ZN{TOXh48XDOVG<}8)7G|tjF8^c)!XPKO3ac22~Sp!3r z>XIG{tv7sC^DCCjB`v-NgZ+TR;rM&OGv*xyD_y+A_d_;n$39;aYQHS~u0VWZu~I+Q z&r2Jle!O&pt1$5~7#swd?xkzLIO*E)JvL5ykUR0WEsQnqu+I@{%HH@aLPRvEPaCb_ zVg1DSRdk-+r@O&0>n|D2J|!8=%UX^39`=0kg_Z^vb-&RXqFB^RM(d+X)|(B6ZAF@^ zJaHsU+wA}H6Q?$4r&8sqX8ShnRIzp{hOA0Y2iVgz?q=<5Ae|kpot~>1f2N&Qh_9WU zq@C4`FNpLtO`36teUx^7yJqb#tY6P){p&RQ-a9Gn`?KW{_hA7B!v$Bn5~4;gvJ6#< z)tQSd3CdgQyNfLS0xpIa471-9>3>z>V%{<9OOs)8R`zp`#oEFR3Gh#WVnY>aZmiIMp<{RQD zxJ@kQ>cvueQY`C^ilwAlEIZGM<&7g^X%#WHwN4kB{vhI(iM=;-lOb i$;C~Uz{luLs3ztaxRY6r9K@IPyO-x4O9i diff --git a/lib/kernel.ppu b/lib/kernel.ppu index 264300a6d9195296724f6551b66d0104b6a44550..33c4b5651c4186be357bfa3c3877b2333b75a393 100644 GIT binary patch delta 154 zcmaDS@J~QCARyGx*p#K2k%5`vK!6fM7zYDG?mw;hmAmWiN>7wEW_p-DG3Yr*@{CLB z(T8GAPIhFR&KNoQCgUU?Mg|0&9LQv`c|KDYi?{|8103jp*i1kJ1vn==vP(~nW*1;J e1&WzZE?|!lv_(?s2xNOrzRRA?7(CgNLlppQ8X`Ra delta 141 zcmew-@J>KBARyGx*p#K2k%5`vK!6g18wUeJ?mw;hmAmWiicgd^W?JYwG3YtRwwCvP zzm~pbo$SasozZjhO~y%+-!qwPUeDCUA}+zi00%N4HWSbc0nW*R?9!97*#%ftfnw^D a8`xt6b&*sW0@+rR-?C>jI!}(|Pz3;od?NV( diff --git a/lib/libpconsole.a b/lib/libpconsole.a index 5b65e72fe09cab94a9eeb9fb684c652ed6b535b3..cb2b97d812a4d3f2e9e1759923d571b7f5dd2982 100644 GIT binary patch delta 745 zcmdn;gL%sj<_U5vmZs(=8LWT{NkIVIleQ)cw(F1E!fO7S)QL4EV9^up9LZ{ z!A^X$w{R$wXRus+^KS8}aBbq7v!%B}c$+u48Zl0eC={4Hp;2IRL8<6u|0M3odQ8%r zH!8R@K@7W~Cb3yWc?VR(1+^=1mJ;J+ITeA;x3m{Qlx}X&y91R>FuDO{HRvfZZjLkG z1vL%iG-Insh|@Mtu#;g2+X8e5)ZED+=g#+B2+DK&3(&ySB3Y7!7u(Tx>$^+T(w&N`{BtX2c-7n!hiOs+IzCd{f{Lr}F zJp~fCn;%SfX57p_?JOfCxE@RwfLaJLhI{sV6pdS$CZAZq1BpI}Q3oLMn+=xFXWSgP z^fuHOgXL97?moK87vb*7??b#NJM^$@u35hi=5Jukgl?8pfEe7M7qa=-Px# delta 745 zcmdn;gL%sj<_U5vMi!=q8LWT{NkIVIleQ)cw(F1E!fO7S)QL4EV9^up9LZ{ z!A^X$w{R$wXRus+^KS8}aBbq7v!%B}c$+u48Zl0eC={4Hp;2IRL8<6u|0M3odQ8%r zH!8R@K@7W~Cb3yWc?VR(1+^=1mJ;J+ITeA;x3m{Qlx}X&y91R>FuDO{HRvfZZjLkG z1vL%iG-Insh|@Mtu#;g2+X8e5)ZED+=g#+B2+DK&3(&ySB3Y7!7u(Tx>$^+T(w&N`{BtX2c-7n!hiOs+IzCd{f{Lr}F zJp~fCn;%SfX57p_?JOfCxE@RwfLaJLhI{sV6pdS$CZAZq1BpI}Q3oLMn+=xFXWSgP z^fuHOgXL97?moK87vb*7??b#NJM^$@u35hi=5Jukgl?8pfEe7M7qa=-N62@brYXGfkG{;f9HbZ?@<8$pqtx zZ3fG83c=+;B8SlA`OWq6^%V?FEKQ9pLH2FFAZ`M&0?2Y?oIKxvf3gj;%;bLto}2Bp zSQsaFN)_;1qUmvvb3$^~9K~aBp7`ckRbdpK7R1ckj6$1FsO@9qGX|Q4upa13@y$22 z1>su6HnZrvvB3N!zPZ{=ig9zj$wNkDq2F*%iEo~0$%&+Si_Ic9PkeK?vlQdxdK1CP z3z&E&zjj}{Ip0-~kMg7k&ImG#tSz@Z1WkHvj+t delta 509 zcmcb1h4I=I#tCvPMi!=q8N62@brYXGfkG{;f9HbZ?@<8$pqtx zZ3fG83c=+;B8SlA`OWq6^%V?FEKQ9pLH2FFAZ`M&0?2Y?oIKxvf3gj;%;bLto}2Bp zSQsaFN)_;1qUmvvb3$^~9K~aBp7`ckRbdpK7R1ckj6$1FsO@9qGX|Q4upa13@y$22 z1>su6HnZrvvB3N!zPZ{=ig9zj$wNkDq2F*%iEo~0$%&+Si_Ic9PkeK?vlQdxdK1CP z3z&E&zjj}{Ip0-~kMg7k&ImG#tSz@Z1Wk z)TG*!4I@l~Ra>+zK}2O5hSmhO539fiH$Dh%_;LMJQQ8<#QVd$p+?jj#UgE#`&OP&; z*Eciw+G5JJ#guT?+R~l7ioVPq*kmk7xFm!9x@l=m0_mHFl1RUnZdhpW4e+vmwQrN` z4iN`J_g8bJyFq6VROXumZY1c*pO9NEWsXSgcH!ABd;VPc(0ohL1ohyYpl;VP=~56UB*6EU&_bNM1#BsA@(z`&zs# zYxj(DMntl9uaMY?n?3&QD3FxuG+DTyX|1-?v{px%ug1>PTx;iPt`$6K?8pn(fYjD0 z9vLBDT@zuE4bT@YDiT~-8m|-^CdS>;;t!Ls)JF8kY)cc4kSUYd7JblT^=IJYt zU3_!El$8vxvEe~mB^XH~!-KQziy?Cq;Y*fWFA2GhD7gyh`&q_U{jzcib4DGo_^Ja| z-f+O@zj45W6AI#~%VeHd2FR1JcWPRRTiWm11Ah2}gJWh1@UgejoB=JS=}HeS2oFC#su*ias3mM%@Cg&S=GJsCKp0d zb#I(&Ye0=|_&!jh!&L!r&w5a^>+H>>o-)XzP;=_**`BP`X<-iniZL{e@J1cOPWQ4I<6LT2LAku6*BqXj41Y z-NMW3Vb!fc(G)jYvgH8W0GAZI?PfO1;jcG9;vthIQnW?6uL z6k!?afBKOcAT_ z>%$^^{5=((8t%_^Io%N}_s6=?-6dbiM5n~x1aErZku<_6_k3gyKs2wBx1R(1H9!%M z%VxgVEAq&@Xyzdf1^?ip^N=8(qkcpo+y0mDXRq=ahm|{x_(?-6$1mj8n0ib(@wg3PC delta 2642 zcmZuzYfM~46waZQK3tmJL@8B6uC$VZgtka2Bn@uXK*ZW+iLGc8XtF}Xs=-aufRa8o zt(sJuvSFl?)T%AomS9C?8m3?ZTUt@*X5IK8xZ%h3S6!uzX_XX%)-!kJ-o1C@zxmER z^PSf>Gk5&Xvhh31BKb?pDmQQXvf$zxV?iR7x$M_9^Gni5UptsZ`n6Stg@)b$ANyDP zHp}i1bs%(qwMe=fbOu3fiAmr=f>R|^atjR!*uOzR5>5qJvh2L#Lqw8gF_PHoVxtvt zFk-Su&)h`WW-?vh%bx*m>F-1Wyj@cwrn! zL!;u65eitWamW#~fW#V;-K}mm)HDX3&84qx&@^pRdDZ5!DlstPZx68S=F8Te0LgBi z9c-OdJ<@}Dsz-XT8jJ?kwy6dZJ&3u7%y@`MXK2>&IkewwvcLTyMc{9*hVHr?Hr)B0 zB=7ERW`7(|p#^Y@R^nqPx@N3OeB?yeVt1XJor;VB>FCL5 z)Lf65xN04l>q!#-E;pM#iJf}le>x>*Sishw&fK{EbdqUjRLcf?A5jHs=ggJ2FI(BX zeWkLCZ(cNICBtiMXuwtpM$*X8z%2V>&>ThNk|ozmLavvUT!r)lEcdH^S-FITqYhYc z#Q|%tIpFi(IN;tX1@YA7F>fLl5hPTeU6B=Na9Ly;3V zuL7aBr3mD0@!RdGbOk>4_g@yoy9qZIu#yFJgP2?eq+|gT#B0R;PeL|Bd}?8J_s*GI z2ua<&Nv=f;PilF4wN)JEm zf)Sv5JRnQqIDMC_pNAi?mXXzyMgg^XOWO zFHvYM^&*QJmx_8_sYQ+PUg8ZK;bTQDFhzV_l)x*?Ek|)>^Jgl+YP-O@t4xeN;Mkj$ zYPd+#LJw|-NkKzb?SdW5UmF5i>jU*hgi}5m`3y9o7r9T4Kp)@t6x^~Do69?EAfP&> zKMmze-&zR5yrUpBXaIo%JrHVOvhJ%|QAAnJC z%eTsruOX8{9%pdIxv`Lm4fP~EI-X9RFw(m;9sNb-x&hO71hjAKH+5A*n0?uz~-k##Z#-HMHSiuMd9 zdJ=u9bBXxL_|cwJIuTE%lN1Hd^ra4CUf#RFU)@9|=sOA3nap@Doxd`j&CN2~Bbw$kf7V;#|rzQCtygA|^>@@2<-)+cy1}Sxxr=g%)GEG>j z_;5|>JWx-Ct$T#(t$XyELZ``Z-Gj&sen}jEm*KSf0){c*48kZLbB5p|<_Tx;p|fG( zs@Z>&ypQue9ztm%KXI8seQ^+Ax2VcD2_7$@oX=fL^Y6<*EB+wBmNpq&MV`*gm<-)w z+#^PVp;1FvQPe=6%e^mPQ63Pb)}U~7jLqh9rb^J7WSJ<92E~uVu4*M@6&~XqS6ex) zfVCJOlL9*JBEEASRO6I7#M2PQ9i`cFmBQoOXbI8yc}`Jkz@)t_T>=d|+|`v~FqRE$ Wh)T^|#G~V+TT{Z;+!nQM&J|{* zO<*GXQb{rlF!pKd=hET(o-e}~JKs$dg>Jdq*n`_xfF3RiDui%ZupojPgj4uNn8S(~ z!Rw+yQ99O7;t4T`w?x(DYT^#0aZCzgSjs{UuSr*}7%*Tykv0-33KT7Ornso$Tgikt z?n((zcJ?Jpgjqb0yKnC;m(9;{{Vg z^+Wvbzc8+l@;85Rul*G;AGo6NhnKlY$lykxF;145?wTIx#zdS^GTJ0jVNVt{w(>E` tPNbI0rShHHN_l>1exX#e*IH{Gsso-8i}ZP3*|c!aNT`{i!!-7d^gq=}hH(G@ diff --git a/src/kernel.pas b/src/kernel.pas index 8de64c79..a5a1413a 100644 --- a/src/kernel.pas +++ b/src/kernel.pas @@ -54,12 +54,16 @@ begin pmemorymanager.init(); vmemorymanager.init(); - // vmemorymanager.new_page(0); pint:= puint32(0); + console.writestringln('Writing 1234 to Logical Address $00000000'); pint^:= 1234; - if pint^ = 1234 then console.writestringln('Read 1234 back from Logical Address $00000000!!!'); + if pint^ = 1234 then begin + console.writestringln('Read 1234 back from Logical Address $00000000!!!'); + end; + + while true do begin end; //scheduler.init(); diff --git a/src/vmemorymanager.pas b/src/vmemorymanager.pas index 897abb59..1801aa9c 100644 --- a/src/vmemorymanager.pas +++ b/src/vmemorymanager.pas @@ -31,6 +31,7 @@ var procedure init; function new_page(page_number : uint16) : boolean; +function map_page(page_number : uint16; block : uint16) : boolean; function new_page_at_address(address : uint32) : boolean; procedure free_page(page_number : uint16); procedure free_page_at_address(address : uint32); @@ -57,59 +58,62 @@ var begin console.writestringln('VMM: INIT BEGIN.'); PageDirectory:= load_current_page_directory; - PageDirectory^[KERNEL_PAGE_NUMBER + 1].Present:= True; - PageDirectory^[KERNEL_PAGE_NUMBER + 1].PageSize:= True; - PageDirectory^[KERNEL_PAGE_NUMBER + 1].Writable:= True; - PageDirectory^[KERNEL_PAGE_NUMBER + 1].Address:= (1 SHL 22); - - PageDirectory^[KERNEL_PAGE_NUMBER + 2].Present:= True; - PageDirectory^[KERNEL_PAGE_NUMBER + 2].PageSize:= True; - PageDirectory^[KERNEL_PAGE_NUMBER + 2].Writable:= True; - PageDirectory^[KERNEL_PAGE_NUMBER + 2].Address:= (2 SHL 22); + map_page(KERNEL_PAGE_NUMBER + 1, 1); + map_page(KERNEL_PAGE_NUMBER + 2, 2); console.writestringln('VMM: INIT END.'); end; +function map_page(page_number : uint16; block : uint16) : boolean; +var + addr : ubit20; + page : uint16; + rldpd : uint32; + +begin + map_page:= false; + PageDirectory^[page_number].Present:= true; + addr:= block; + PageDirectory^[page_number].Address:= addr; + PageDirectory^[page_number].PageSize:= true; + PageDirectory^[page_number].Writable:= true; + rldpd:= uint32(PageDirectory) - KERNEL_VIRTUAL_BASE; + asm + mov eax, rldpd + mov CR3, eax + end; + console.writestringln('New Page Added:'); + + console.writestring('- P:'); + console.writehex(page_number); + console.writestring('-->B:'); + console.writehexln(block); + + console.writestring('- P:['); + console.writehex(page_number SHL 22); + console.writestring(' - '); + console.writehex(((page_number+1) SHL 22)); + console.writestring(']-->B:['); + console.writehex(block SHL 22); + console.writestring(' - '); + console.writehex(((block+1) SHL 22)); + console.writestringln(']'); + map_page:= true; +end; + function new_page(page_number : uint16) : boolean; var block : uint16; - page : uint16; - rldpd : uint32; begin new_page:= false; if PageDirectory^[page_number].Present then exit; - //if PageDirectory^[page_number].Reserved then exit; + if PageDirectory^[page_number].Reserved then exit; block:= pmemorymanager.new_block(uint32(PageDirectory)); if block < 2 then begin GPF; exit; end else begin - PageDirectory^[page_number].Present:= true; - PageDirectory^[page_number].Address:= block-1; - PageDirectory^[page_number].PageSize:= true; - PageDirectory^[page_number].Writable:= true; - rldpd:= uint32(PageDirectory) - KERNEL_VIRTUAL_BASE; - asm - mov eax, rldpd - mov CR3, eax - end; - new_page:= true; - console.writestringln('New Page Added:'); - - console.writestring('- P:'); - console.writehex(page_number); - console.writestring('-->B:'); - console.writehexln(block); - - console.writestring('- P:['); - console.writeword(page_number SHL 22); - console.writestring(' - '); - console.writehex(((page_number+1) SHL 22)); - console.writestring(']-->B:['); - console.writehex(block SHL 22); - console.writestring(' - '); - console.writehex(((block+1) SHL 22)); - console.writestringln(']'); + new_page:= map_page(page_number, block); end; end;