From 019f6ccabf5a2ef5ca4437e338d2799658ea872a Mon Sep 17 00:00:00 2001 From: kieron Date: Wed, 17 May 2017 23:24:05 +0000 Subject: [PATCH] Made Kernel 'Higher-Half' and enabled paging. git-svn-id: https://spexeah.com:8443/svn/Asuro@85 6dbc8c32-bb84-406f-8558-d1cf31a0ab0c --- Asuro.iso | Bin 5074944 -> 5083136 bytes backup/linker.script.old | 31 ++++++++++++++++++ backup/stub.asm.old | 68 +++++++++++++++++++++++++++++++++++++++ bin/kernel.bin | Bin 20708 -> 28900 bytes iso/boot/asuro.bin | Bin 20708 -> 28900 bytes lib/bios_data_area.ppu | Bin 2278 -> 2278 bytes lib/console.o | Bin 14852 -> 14852 bytes lib/console.ppu | Bin 16125 -> 16125 bytes lib/irq.ppu | Bin 0 -> 930 bytes lib/isr1.ppu | Bin 0 -> 1981 bytes lib/isr10.ppu | Bin 0 -> 1994 bytes lib/isr11.ppu | Bin 0 -> 1994 bytes lib/isr12.ppu | Bin 0 -> 1994 bytes lib/isr13.ppu | Bin 0 -> 1994 bytes lib/isr14.ppu | Bin 0 -> 1994 bytes lib/isr15.ppu | Bin 0 -> 1994 bytes lib/isr16.ppu | Bin 0 -> 1994 bytes lib/isr17.ppu | Bin 0 -> 1994 bytes lib/isr18.ppu | Bin 0 -> 1994 bytes lib/isr2.ppu | Bin 0 -> 1981 bytes lib/isr3.ppu | Bin 0 -> 1981 bytes lib/isr32.ppu | Bin 0 -> 1972 bytes lib/isr33.ppu | Bin 0 -> 1972 bytes lib/isr4.ppu | Bin 0 -> 1981 bytes lib/isr40.ppu | Bin 0 -> 1972 bytes lib/isr5.ppu | Bin 0 -> 1981 bytes lib/isr6.ppu | Bin 0 -> 1981 bytes lib/isr7.ppu | Bin 0 -> 1981 bytes lib/isr8.ppu | Bin 0 -> 1981 bytes lib/isr9.ppu | Bin 0 -> 1981 bytes lib/isr_types.ppu | Bin 0 -> 1423 bytes lib/kernel.o | Bin 4164 -> 4052 bytes lib/kernel.ppu | Bin 1927 -> 1927 bytes lib/libpconsole.a | Bin 65630 -> 65630 bytes lib/libpkernel.a | Bin 24578 -> 24426 bytes lib/libpmultiboot.a | Bin 27222 -> 27222 bytes lib/libpsystem.a | Bin 123954 -> 123954 bytes lib/stub.o | Bin 928 -> 5328 bytes linker.script | 17 ++++++---- src/bios_data_area.pas | 2 +- src/console.pas | 4 +-- src/kernel.pas | 10 +++--- src/stub/stub.asm | 39 +++++++++++++++++++--- 43 files changed, 153 insertions(+), 18 deletions(-) create mode 100644 backup/linker.script.old create mode 100644 backup/stub.asm.old create mode 100644 lib/irq.ppu create mode 100644 lib/isr1.ppu create mode 100644 lib/isr10.ppu create mode 100644 lib/isr11.ppu create mode 100644 lib/isr12.ppu create mode 100644 lib/isr13.ppu create mode 100644 lib/isr14.ppu create mode 100644 lib/isr15.ppu create mode 100644 lib/isr16.ppu create mode 100644 lib/isr17.ppu create mode 100644 lib/isr18.ppu create mode 100644 lib/isr2.ppu create mode 100644 lib/isr3.ppu create mode 100644 lib/isr32.ppu create mode 100644 lib/isr33.ppu create mode 100644 lib/isr4.ppu create mode 100644 lib/isr40.ppu create mode 100644 lib/isr5.ppu create mode 100644 lib/isr6.ppu create mode 100644 lib/isr7.ppu create mode 100644 lib/isr8.ppu create mode 100644 lib/isr9.ppu create mode 100644 lib/isr_types.ppu diff --git a/Asuro.iso b/Asuro.iso index 5f70153b4466cc8ee0533f86fb0df6e71d5fd640..3a0302cf63418ae6ea7e756e3fbfbaf047553fc6 100644 GIT binary patch delta 16597 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 Ha=QK(zVRS5 literal 20708 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 Ha=QK(zVRS5 literal 20708 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 literal 0 HcmV?d00001 diff --git a/lib/isr1.ppu b/lib/isr1.ppu new file mode 100644 index 0000000000000000000000000000000000000000..34c262782014a5efb4042c7cdf7cbe689f7c63a3 GIT binary patch literal 1981 zcmbVNKTMNR5P$deA1zi2w5SN0G#w08v>FC<0fk6|l%{_YiC}}Ykw$1MEd!%rF^&e~ zrin4em=J@Dg9}kdjd3%^$w?P=M5?LxyRYw~ut2=zUGM$w-o3kb_g&-hbmUB*eVLR^ zt;d7vo=d5zRa^G8TFQ5)y`|Ng$6l(Zv|@0XDjdeA78rlMm@#8nHM>na&6JzO$z|0XD)xOB;Yhc1QBP$yh*rQxJP(a zI2}Oa6$~ti?*`&Yd3C7 z;CEr7KhhRgAd9pCACu68fi;p;$AzLuVH#D9a;;{d!BAX9Jp*xr?pSFRqdLPo3Zwh_cxmc~u%{Hp z*l--yG+?FRmlV>m|4ag()Al4f+H?}X2M;7 z15V~m3%Tog9%u`S{N}@vN;7^?EHGp2s3TizEjqGOv`EppSTOY+T90M~Q56XiGU6X8 zGyO%FWc4)3moyJ741-6!G(CY}a3lF-xM_IjFXmY!lP}~ewHiHV?HVko6L*6QPc#-y zg)%VPvfZtd&9i*E8e)-pVEA_G%&~QL6pb%+zriBAhY``|q2(;32;HKeXh$lnh zO%q~_m&V}5gBKGYCynuDj3-ZeQIAM9b-vl|-_{GnNp}C)Z)Rs_c4p_FoSg1C+w0sQ zKMk}NoaGg?D?OKaeYq=+w}dHyn+`re-FGqV2?@dQzmSm~*g-gOp2DD?lSX161Um zedJyjtSOmEW(zwib{U`?loKlTijeWac<3u`BOGKIsjJ+WQLPaN95OpO0PGM&eNZX- zCS%5HGkh;h^jj+9GI-&3VPh7O5U_HR?0AqANldw@oG%ot8eZ1{qfVbo%cz!<)6*S` z3|$Iyt|BmI*~ePDT8pt?BH6Ro`FUn31b2~eLr1|J$eB~DcpBQ&Z9CJbof)2(7zth+ zhzy3u2S)ev2p*i|VRayU-(o6tJ+_?4E~es&0)8DPsScKbaC=;{QY=H~A27{*v}0@~DX#}LplOppI(6nIgUQ8YK0C@$bErV$>cD1eaUhxYI)(P*d*sBSWf zYDp|Ki2xT?>?yXSK_s{cX)TKCT(U#navN^TbQnc`Ejlb)keyPa;m56oXf@OZ6OQoU zl%fU=w*n5J0amRh7Lwf7Ruwhrt0Ohd_z}@SpK&6StZk$y$`+9#M)%r^mNy&u9HSu0 zBS1n#{EjSI&Aj@6QLBrB3KSGa!GT^LWJr=b%%Api>^5fWV4HVXyNuKtssO zI|K6f19*>hCC)dSeNDWiII#O>znPt#*_oX;H8mYN-RE2< zX^=7xOAAPd50Sva{`L%2+ zw>@z0+=pmu6HrGwnSay&VC=>V^$6<&JjmtI=VmNkH3D(_7SnTCjV9nFh&UpiYh?Dy zTq|=@W}nOvKYyqNmfX>qXl!`g8;(Zev6-piXcw`li4>_C<{YfzAmtL(3eZST0TsEY zirnjhH6=62Y+*;mE(4TqZJ=Zi(Fj@J#qsK@8hGOFj~ghKJi z@Wn9aDgtAceXO;kwHW&)l3jaUm}8cLa2E+TbQsLOoH@>lC!kFyZD(4vGb59eqk#*9 zk)iO!;8-<};K4B-RyV@;Eo3s+;!COgLMExm->AbR)y*;xZjWnLip4452c00xzmEineAG#d(~?G|FQy3Lqr;p&T@J=oi7&YF^jjMLhU#l zWck7q;aDIpdS%+x%31H`{e=Lt)C2ve2ITKE9xr*|9CT_BbjqU>5Ll@w>~&!VXb^dM zYe4?K2k&umYO8gSkF59!+SIABk?$7udU6+^5tb zsn0CxhEf~;SgsK+j+~++x~>@h$|&eN4_!p)cFyrcdf9fC)K91|Q9=H4QN601srVQE Cq{_Ge literal 0 HcmV?d00001 diff --git a/lib/isr12.ppu b/lib/isr12.ppu new file mode 100644 index 0000000000000000000000000000000000000000..dde436efddb1c9f87b9fb87b5cc617d60b690e0d GIT binary patch literal 1994 zcmbVNKTMNR5P$deAEg52Pf-zqX*w9H2p9%*0fk7z-?T6^icPVNGy<)(42*`wI2sZ+ zO^7ir#NguKVxl9)xEbT*q>DNt)ztgl>-%V3O1$K~@80k3-Mf2t@4ngD`Th%o&P`Gd z^?Ej_wmnJ}`uwK@2kAtsQVIj)=0W7jd#ba}0Q{G4{nwX2vj>Wo(Ma`s0)iLK_6$dGos8)eSIsjDUo*Htm z3)Ym(B(sGbRl5vO3Cao8dS%G?U_A7dw-FAqjMPl&2 zaIT^-X4%JD`&x^!Um`iM*TqF1-9Lbq;tau*U)Mq=>s+}31nVAS(8HtWY zrbi}gc?1v6^00yk-?x;_-cGEf3rpFQqJUqANh-)P5N?laR*Jx>G95;dUyF{*7G&qJ(eUHeLbMv{f(b`tbWTx= zhC2ZV&;aY!(zi0)*47lY>8m3(&-e+^K%a3UldNr|D9R3zB1ZT6s+PAKd6H2O6%imI zBK}CC=?~l_yR1oGQw~@d3fnvkJq2TNDfy+r8Tj9Cz0PuGHB%^+=sAmbp+X%v9Ax<- z(~-GQLi8%MYn8L!&HIZXW~m4IFAd1wS3KVGz&YsDAm~&^Cm^tLQP}HZ9B3GMd1pZW zegN-ra%yXJkWZ}m8QRpP@141Fa8o0ZX*hDU?jbhH?jZ%;uo=J~#1}feTHL49A*nAc z3PPzJe=OHH7e`*vDP30#e`OT(orf+WbUWu%GP7zsOX??7n5Za!xtLy6&s6#g)g{TV literal 0 HcmV?d00001 diff --git a/lib/isr13.ppu b/lib/isr13.ppu new file mode 100644 index 0000000000000000000000000000000000000000..beca2174bb6e54e2d6bce20d8417323d6be59557 GIT binary patch literal 1994 zcmbVNO-xfk5Z-zHqg4J|RD_t29t>3w2?yi?3Xz82v~VDb4cJB+fmT`$91R!aQAs?Q zXhMwfLJVFs@nWJ!4bhV^o;>MAJt9@>e6!ux)=P<#?7rD=W@l%1X6H>!&2;zlIyXo; z)XS-MwdGOjdHEUs2I2wsf&rS_Tj}wa;NRg^y&cP}UQZ7*~1C8_yP?38o z$h|IDQ!~*|*oZ1!gG(cad;IN5LG(nNzIT1#LQQJJY0{8JV0M4W1v2 z4235K$0~UQ4^Hy1+7Z5QF_pR&TTWybQ*lLsdL1UIc9wx~dt9?pELJYgD+;0hdU+V? z19PAl##wO^+B9It5YREqO#EjQcv0n1G&h_EZ%_%wcv1& zGBc#o4)Td9M5WW`U=rZ#==%oTzg9}G{xk%M&)u~BdjDL4+B0sKLH!Q$28KBW#x zeP&TRl$!C!a*c3tWE36Kb;a-(MnT_r=psV5bB@m^S8QiV{eTJ+<>W6H)vNNE@_zyQ CCd@Jb literal 0 HcmV?d00001 diff --git a/lib/isr14.ppu b/lib/isr14.ppu new file mode 100644 index 0000000000000000000000000000000000000000..6014de1432c1198d5911c0be4c6eea49925ee8d0 GIT binary patch literal 1994 zcmbVNKTMNR5P$deYfGs>`BPMckPrq#6-8k{7Ep*Z{7nl3QE0$6(g?KDGB6qz<7i0S zG$F>g5QB?@i;0dJqmwaCPP(Xz2~thH-@U%CtxJiQy!YMv-MxEv@9y0sRet#?x#J_-Kdnp0C{*2xs#doo?aXLEYMnTmQT>`^kU}y?bf*kU@lK) zGm}lMe!cVk!Pfr#Jt*57+2o3E`$GKc-Ho>Zyw_4|nbb<6JH31J_{Gmoz@S|bj)WVSf~><~qLP%-)@ zW5(w&d@oG&TPouUc;WV8V;+(auu_ujc##xIOsS}p&*!ZgUe^JmF27sLsFst{(;JJ7 zTn=-tA~0q-$6EVZi?LrKIdImwC1xoEcad;I$H5%RnbWLz2HJGiai&o_GdeXj)_G|t zG8~>98n5ILJUGR}>OlDZ(NG&u-DDKi zl2~XG0WPf2QyfWyNN^F-S`^i}Wrw`wHr$r!Fp2_NbX2w=JH_EZ&0(wcv1& zCPHA)k0xJ}Sv(C){4IwXY z49MSi;Jr4dwo(WA$cmq!O>O$#nJWZ0F%+JJBZuoAVx!<5QqT^YLHt4doyDugeM%jY z`plvZC^h4cx$tojDo)L&_#r9XHP69*Boa_{eTJ+<>W6H)vNNE@_zw> C70L4e literal 0 HcmV?d00001 diff --git a/lib/isr15.ppu b/lib/isr15.ppu new file mode 100644 index 0000000000000000000000000000000000000000..91f6247f810516e7567fd6f1fff37fbc9d483f25 GIT binary patch literal 1994 zcmbVNO=wd=5Z-zDYa09CRIM#S=s}uVt&&6a(rSwh{R>HZ2wFpHf(^D!+N6i#NqP}4 zLMeDtC?Z~pR0I!R1U)L^K@joeNiXWLHcFgtHv5uzX>nlp&3-dGJF_!8FA|yVI~#JY zlX9q+k$~FrD7DdW^I3b(^4%7t6b8u6gUFT6t@MSQ;HQDsgR{JX_GV{uA8vQVuL5(p zb8ESLYVq5h9}m`dXYN7SxtdQecsI`_uWYQo1K_!qS;}P=QoY&jIei9##P1`{py58;QkKem;{_YN72@7qPT#wm_~V&qX0sZAKJsKM5Ccjpt{K@ zswc6~Dgs?2$^r{QVT*^MM_?>2rABFR2LAV3tFxS5O6QA3dcxuzs8Bl& z2U))GM0lzzA$k?s`<1ia&HD>o%u+Y>pBs?BFL=D>fpgHQLC~p;PC#I#qOjM6IM5*S z^45U-eGlH_ux7q1!pfXVXizv!s4Pg^3FCmy79D^-RUT D4ARO@ literal 0 HcmV?d00001 diff --git a/lib/isr16.ppu b/lib/isr16.ppu new file mode 100644 index 0000000000000000000000000000000000000000..2f4823ca38c9634c681d809a86ddd4b778556354 GIT binary patch literal 1994 zcmbVNO-xfk5Z-zHqg0^$6cr&RgoB}qqJadxfI_6aH}fRKk{sS6&P&A^UK*} zZlnMHnfH;VdZ3O}BLBMY(ddnr>Iv5Sc#zAZ&&^o8@&j@E=2Np-jn2SJ5OG92SIO*^ zxmxCg%s!dJ0sc@UEV(1G$kfo7HxvoSr(%;sk;BBIdQzmSm~*g-gOp2DD?lSX2~^~s zUF2RDtSOmEW(zwib{U`?loKlTN|5ovc<3u_BOGKIsjJ+WQLPaN95OpO0PGM&eb7$y zO~#DZX82y1=(kkH1@OXc!NxQsL15)1+3_GLl9+N)IbSSVHN36^Mx8#FmQgJyr@J>E z9y%Z5T!mrGvX8a4v=(E(M6zwK3$x5p5bh%3h7N++lQYLy@i?^UgzZeDc4l~DVx;5T zKzJ}TJ}|nQNATb%533#F`{pv4Yw?9-elC+x6!7aXNwu>Kgxlkqm140930_eU_1DA0 zP#>5*#W2Q-6VRr9JBEOcAv*q_QQ$>YM$z10qBx7Qm_~T)L;-{(KeUZkiAFwFyROd zPAO{8a4X;d8er98@=A)^+M=Q+eRZUwj2{pU^cg2I$=XJWqHGZnx|zseG|WPg%SH6>7oZ zAj=mT4^4H%MXyYIw{q6Id4HjUS?YxTrUCi;oX0C3I0u~?1fBBe1O!$p3VU6M0SzKA zZw$!aci=rvPVH_T99FFX*dx(vadq}}y*bLwg;_KMCTHL49 zA*nAcYKKxY{#dSIE{>d{L%OaQ{>mumI}cq%=yuMrnN-?#mefzEFi}DNauL0%oT>O1 DT*J$0 literal 0 HcmV?d00001 diff --git a/lib/isr17.ppu b/lib/isr17.ppu new file mode 100644 index 0000000000000000000000000000000000000000..e57f3268f2fbbf7d7b86a869d3bd11d1e7309473 GIT binary patch literal 1994 zcmbVNO-xfk5Z-zHqm+MIM5K}s4u&d|a; znJh1?&NthAv|b=ivioMgnVp^4nVmO1J=1%p&$&*@ zp6Zv1eNwz+fw$U&|(Q z+k+3zeTe!SfjUx&{F{MCF#1ZjaC9_xN zYMB!<`(%y;_(RRGxIG`^ol@ZdNPs}te-7BiXa@#SQGF_TafXwYGj>SP%Rx5qUr#bOl_yrK~5uaAeJ z0Wb%OVS*K>piP5z3;`X(%;bMYffrR7MN5;3;ylh`8so7S1rU<_&@Nsj8Vv=3>L#P8 zj>Ljr1h}wLPq8IUBEdySYf)71k{$AvgSaizVH7oJ(IMG_?Cdofe%xA!RzpFUaD<0r zikdXs4mf}YShbS8mg2UyqR6kWj?@g}t)hWG<3uJ|+elHAZ6ZaC?$xxGw;1_6qaZ3E zKte?PkwnuUxJhm^+Hg3? z@`WeEv97r2m1*x+&U!cRFLW_W-Ozt-K>ohq@tOzDL8k^mr#w0Vft8BFUKeJ8hLD%H z2ITL1@E#|pcE1ktkrh8dn}Yh@nJWc1F%+JJBM0jqVx#09QqTdL0sKLHU3*uH`;HG83ldkp^FIJ&N(rkO54to`Uw>#D#%|hs#ldW75@VI C%E^%c literal 0 HcmV?d00001 diff --git a/lib/isr18.ppu b/lib/isr18.ppu new file mode 100644 index 0000000000000000000000000000000000000000..562a61be345709468994368251c256a1b7b26ca9 GIT binary patch literal 1994 zcmbVNO-xfk5Z-zHqg0^$6cr&Rqz6J3MMDC50fk7zU(>>YC^ldlX#`qnIdC*2#&|R& z-ZUY`cp(Na9=w?75o5d=<3&$;QI9}1b-vl|YwM-NNp|1tH?y-dJG1j5k(u7}ea;P1 z4)r?HskS^y)h=~K`u6YcHY=qtKyDsHu2golx8DhV253Dv%PVM4Wt!I+i zoxw*JKgL=bfjUx&-0r}W@jGwSGpvvBAeTpr(4(<2k!a4Z_1o{fyeP7;e6Ns+2y&cP}UQZ7-g0FCq)Jb&{y0>ILILW$E}5EHPitUj_~lb zq9zTu0}h}8)~qIPrns%GDr(VJM{0)gW1@jR<3uJ|+elHAZ6ZaC?zI&yZ#D9HMnRNE zfP{$nBZ;OzaFgt^CV5R6U?C`M@i6ohjK!tomj-9xf4{Xl%c+%Au27)oEZ%_%wc&7( zMZs@->Ab(%+c*_Ilpi_gOQy!gwz=}m-uk*7&L&(cJ z1M>F+c#o4)Tdjk9V#UwUrVf4Y%oT&17z$6qk;8Qlu~BpnDL4t60sKLH!P3>@KBW#x zePvN6lv?q}a*c9vWEGvzb;a;EMnOM#=psV5b56{sR%~ZU{elV;<>fCI)2qsv3V#8l Camv{M literal 0 HcmV?d00001 diff --git a/lib/isr2.ppu b/lib/isr2.ppu new file mode 100644 index 0000000000000000000000000000000000000000..dd2e79f60559ef7d8c67942cfcf45e25d6053f86 GIT binary patch literal 1981 zcmbVNKTMNR5P$def3X6kpdw(>bTCv=F%0Me3Xuj1q%Da=v_WX(i$IZ-$<*O1$J<@BQxHy}Nh!T}Ma9&YbOXu8?x5 z*P~(ez@yaKqpfxSy-#foN+~Rmix-j8%q@00A&vnIKr*}lI~FE$8+Tg9uK{wnbIZAW zX70z`t@V}dt81`zF6GTx-|D&PiTg_*0C=Xd^SSJ7rek5_*6|k`tH6BhDxF_m$mBMA z9-jZ44Ald5nA7=p-A{&YzfsSyui-^5w_KYwcvB0&?VmNTF95{=*uaO6&oCsX}#Uo4qOr^ZM7lgEfv^`uC7S#q$6gOp25cY#{l2~_l+Dtey_ z-jr|>Zs5eOQyQoQ<%ZpMB}m7hBdjSMBV1%?t*g?RHVsGs4&hEt04K!Ix~QCeNW1ab z0>29r{gJk~0$HSO_?Unu3apZ(Ivx~73R9`7l#4|J4Tj<>YOg^DLJDwkI@5{%OEE50 z0=^9UR%2Uifc+NDj=e8TvPe-xi+XE10%2dVoMgjOu%^>?EJ2B7U}R)4awdlxZ(IQ3n(!8Z_(t0!_hzdxMkP-h# zndvXWB)g|czN9%|Q5ZbtrRgaIgBz(%hMR`>{$ieWrp|6;Nsw7qNB#R8RO)n3pygz)cf7n_fc3NUh=N@es}NQ-Mjm)u~_O4o!hOR1 z!gIpmNKw2MyakTjiF6`49Q8#K@k}xu8%`V{RyC0#miCJs_AG2I4g?P;K*_w1tg zx!_F+C*cN8Y&)faT2OA-ZdZkL3_8NP>M_DahSs`jooUm61mF1WTAHERb zQpMrRux~Xs#0J=J(QMlLa+XC3AzIX1(?JM(isd*Po`5x-v}0+OSVqRjN4w7t#)l$f zgBN!T2mu`9Wpp9=x~W3pMrI~onkwWJwKiHwlImg|2ye$7E3IObCwWI9bYCAYP5lt| zltPpZ$6-wab_zjBAvN}&N#JwZo`uy>d+=W$!6?3fy#7Iw2#C= zP;fj~b(+{3>ja)bhKiyFmzWC*;0Z5H&mb7wNR2YwG`#Z{^DLY(XU$TjLN8dm1`BG(-5|ps z8H*&lGcen--K~?YvwXVT%_8-{{*?y#_cgC~yl_h+FA!{MQxgzawIS?%`4Z3&it<5& z{QC*A$H{fwZFGEL!>_QWPV3QGvT}@+uYRdG>kzPV`KRQmT~)#KVKgv=9Un>hh)vC;NY%0CVv38DDbyO!w)O!P zyLT76&%|y@W|G;!ikek6Pz}lnwY&;s`(S(MuPh@RWY|`-dNZ54UmS4B?B)QlLWtF5 z+yx8$mKwMSU9>H*XJ82fs}{+F7uPQ-s5VvW<+8D#-y4BZx8Kw@YTz{V_oWge7b2XM z1U56AV~s7%V(gb#ww?FV9IF(DyGX4qhoJ1qnI0w{2b)eh&a`T0Mkgl5Lg$AP!;#of zbT^OS!7(027sB_?=W^Fli<#nlF0Clgq{AfD#Wo0TkE>J4!YHNrjl!t30UovtLfKOc z<4l|Yn?{`&0y>7N*ndWWZ>Khj_7*#eb2y7-jK@wCKuGdK+xY&_QYZ*iw-ZGTBs;W; z0T)*39*zZ_h=RBXX(EamO<5sdZ4kF*_Yy@-+H^pcAUiuPg+F6$L{p(4ws1v;Cl$45 zxD#*yt*&k|Q@dLS`N+giU{g@vJ8PBT#)l#?II_3yA$wHZLkf;y&j9`v{?N|V;y$GgNqu2c y7f9{+H<_bc90f&(bzL$1l~Krd9=eFo?cC$DR@QNr)K5@Ys3iZhq<*WNsr(n?>&e;x literal 0 HcmV?d00001 diff --git a/lib/isr33.ppu b/lib/isr33.ppu new file mode 100644 index 0000000000000000000000000000000000000000..6f90486c8f1427660bc560f17f7a3d94f08b89ec GIT binary patch literal 1972 zcmbVNO=wd=5Z-zDYZ}|8KdD+9gb+j;t<}&&_0npK4K;1Z&mm|HsR=gNCb3Du9;G+Y zixj+75D_m$>P5thphrc#sd)0F7xh>hCC)dSmnL3X9N2yHzWH`{W@p~KNF;GGIBZ=d zWl=99K6Trn)W;)3nH$gT>s?BzZXOUj4^+dJ%jMjHbM18I(%t2E0325e`BGsaJ6PPfe)Q?a8ZhjYDz6l? zrOnaxGaq6-oj@(QO!>{o!wWZGsmFNV$AfGReQv?vH#ZQwYausR)My%BLWm>cxkYBD z%&jtKWOm6M_3(qbv6DTPjKwFy&QL6xiYFrzF(@#p$%6yeFDYm=HR{!>(Z=r`z-Yi_(>7}7Gz5dG=*0ODXC;cw zjQX+0mS!>bODx;<_sSfr6o9)(ttkhg?8%wqOgsTL4b`3L*3L}M%uM;ujYY>p(_oItA42kLgi~`?Ia}>Q@W)x>}7RwZmohX2ig}m6p5*m*y>e6sO zU=Lbd%To4gjvLsLq8@#9q!NrD5C%Gm6`5qVX+=@?i4`&0m-E`*YueL{La2fO2@&x_ z5>0>LCe_QD%LR6dlra#qd`~A>VoEB0{&bhSRxx-C0sUL1Cea{LfJCR$x**ta$ki(r@ z$mP>B-){YQxVV1tE^M9id2`ygbZT<^_WTC`o-5f*E<2rWn_a$s==t&zFdw^0}d+q)2&La&0 z^gb87Dd8mCz=?`e8Yl6jf$oy5{VJUkFS(;e@P z#<~Z$3kU%m=4G@XdH+;4do4AS&QE106*bgYNs?+|9SCp79V@M36t3`&BIv#jUYa@~ z>?nmHHXMdEb=fHdC56%0eDi*F#!~GOXQ<8Qh~W?0QewzZ2reAa-lU>B z3vLG7;AZZfOJ6m4pv@@?S`SBRl<~b{ff?gO9obrI(UDD}MT+kEjHPeXdNd=53P_NU z5&uY;=`X@0yQfLMq#0ll7(C*o=?Mgb8>vQyn})akVxG09%#4{Y7U>ylS71R+xEo|t zMPt!qI0ds!+wD5pI?JaEVHT+s_AfNZzb|>c<%L^nc!6M3o|=HbN)2J}3+I7GP?Yx? zBS=6tpKdn_s)#9lr|9 zV$ZMS3#r9#cYZur-JZDzvURzTUU04tC9m9F-U8sbmd)g|3#p#m#?2$oHr9b*uS8)b zm&$LRzkl{)w4)WMC7mq18+$Q4<_kBFb=FsP64SsV2vAY)1b2*L9!b=EoL_9ah z?3B4t=A_InnIj&4P&;;g>{Q;1bF5MT?jp6O9E7qbXHGD&7i{XSIMc4384HER{TGKLBf+WR ziFzKvgX265AHsLdXR|jFi>bnVHmS(t)?t$Ju?>RTMFp5cjqW~&xfQKoAQ1%qV zBojkm)456v9vwq$>OZ5vw^JKMXPX(t1)Rk)&SN(UASC&r9ejUiDdYvJ+liuPk{vq4 zfD0>kkBSAIh`hK6X(EbRY_dYWS}$(P>?Mla+O%JmAUnG)g+F6$L{lLzwy*?8rWLhm zxErtst*&7ybv?}uY)MgvzB*Dd#t#Ss9mR@FGTXGGD7(ap812g$ZSOSgvy4KhhyV!@ z@k0_#f8Zun%9`YB$^i?2@Q{ZokD(Y`N^WUoCj9TSQD-@wNf$~bddlWaP^b%sLkw4N zDmd*=2(OA=ublO2USIUHO2@!|Zi4)L!Q%}NoP(YW0jD}T0fCi^qVish0}UWA?@f@O zAD}y|oZ5OFasHr0a^|uZ%*z^Uy_vZfBjGO=l|3lKKe>3l-&m7S(UHGnM`V%#6v( literal 0 HcmV?d00001 diff --git a/lib/isr5.ppu b/lib/isr5.ppu new file mode 100644 index 0000000000000000000000000000000000000000..b516d95f66c447a7eab8578f39ac6edcec17276b GIT binary patch literal 1981 zcmbVNKTMNR5P$de9|e(r1rezxq=QmL#dJUxP>3|pLi#6>h&D(Y`69HHmKa9EVjK;| zO%r2`3o*DbxR~guF>b~!W??DhgqQ@_2+61e*q5IzY~Jmjz6QwQF02%a znZ@t-em-8^y7~~d&gG)H;9WbPp1HsL0f1*Nmo4NLGJW~=TgP9nuL1M2t5k6%pDAn% zJsSKJ_q70ZnCarXfu|F9-l*r;H}E2tTdvI+ylDd9u3s>(=LMWah#=x@nAZvS3a=NQ z77j;>V(s8$*>WpVQ7HI$CuS7jPBRIIn6FKuD@X+xR3~vG)U&>7wW$i36YD zc&^Gcu{G8SJcA4sMNKX_A>XkdZ>498qGn5VNSvWI)e*xVwxz_7AwOI=!XpVqtrpx3 zxZTaXZYgua<{$YtfNiqD6}C<*cRe(0Vi@h)PJ1kP-h# zndvXWB)g|czNAH9K^Q#YrRf<2gBz(?hMR_W|6-nnQfAgHmdo^lwHvUYF5C?=>ci1+ zB9MYv)poB=w$AeDQh-J3h5e=m`S%sCx4dvmGcOQqYEu&sSfwHCed#jLAd2!{gZ%pu zvd77F-D`AwX2UPACcpLQELpilhQm?BvA?k)E-KOC`H#Y7JN`N91NO7xEu{rXePvA# yY&s4wca3ph6cin?T8iOsjDmjfvihfyC1+&T%-W%n`UMjvD&gfQE}LD9%Kre;L&i@4 literal 0 HcmV?d00001 diff --git a/lib/isr6.ppu b/lib/isr6.ppu new file mode 100644 index 0000000000000000000000000000000000000000..0b479177962a756d4e809d1843567c27eca98b19 GIT binary patch literal 1981 zcmbVNOH5Ny5WVyI+EPC9Yf%w2AuJ44`~?zZ0}7FbU(-S&5p61M2^)F>XwBsWC20j4>`;>Bi3vsiw}E*ZbPCfjG&X&OI}C?#!Ke({On5#HlWG zg_KLZ2)C&_UZsA8KCivM-CNzLl)?hJc@ddbX0h9ZI0>)@l2HM$Gab)7yU{Xr36RT^ zS znc3*O*ZU#ruLtU~64}>14@a)QRBPB*@glcJu1y)dsRiJvoU<;c1&kv^5OFrlD}?)m zR|-!Eha*Li0C*!Dd7@L%iNR4{C>n`POoa!dhlo}6q)1h;!zY7!nk+!%1S)@()n1&_@tdyiWUKB+NQ>rSJ^LYaehTPKI#-`W+`z@L+XP=9+NI^u4dTZJbVOOynWy52zrsGa54HC=H`1o-9+5X5t zXsmx^r+^T^5ne_clCPRgrLM;2liAr+LQ$a3PLfm`>p*xr?pSFRBR9i43ZnbEcxmc^ zu&WeC*>D`z)aRt&mlP(){xb=DPUT57HRvSH;3}qJUd1GUkW`1Z@JTjc-wITwi=sUw z4*Y`SxeC+7(by;O3^G&{)w<<`e8;VLD?M8j)!C}O;taJZju`&1Z6$^bwZerfG%%s4 z!G>D^2RzIx7L!*j9%ze-{Px3wd}q8t(= zWW+yGX8MaT$?0j5FKHfF5C#u;X?g^~;6|#G;ilp3znEv;F>Arf=JWKJwHvUYX50-j zDnnzTiS`)Gincp-vVE3M=h|7M4%k1{Apbt+^@hNfYihM0oh3WB(f-gF;@I8T5Eq5$@cakiGJt=M%68{j@s`qp zq`t7G4K_{H%-uuW7a2td?3QBqE2E(AyzKs|VaXhgTMJI8q<+GLiE?;3ippjiqx?VL C_{j7C literal 0 HcmV?d00001 diff --git a/lib/isr7.ppu b/lib/isr7.ppu new file mode 100644 index 0000000000000000000000000000000000000000..f8876b2523c616ad3118052276e7f080c8ca7766 GIT binary patch literal 1981 zcmbVNO=wd=5Z-zDPpth*TCI&j$w3;ef0Rkb6B0|x6@gRbrM@77ecoGD?sK?qUalU!km$a7@2X-?1&Ft*V&b&!9nmBf%+rCW7 zrd~xm)NPkiD^DK}#ah4KYF0{NfgHSu?CJbMj~!wHU>zjG4X`UWm4CU?K5+?<&6!`y z7gF=zZ~VNsym9dkZ0(DM^qgn)B~6*rw}5DI2-0};U3{$ z;WNVFNKq^R-V8_1_(XhsaKsad$CBd{(ZTouVpSt4Qf`)PY+@tj5YsK7)*c5cdRGm- z#{q9jI0-j!V#_HFRD*KER=YB!W6%-$%Et&78CvV8cBW11BmkRmJ12k>VrX7e$=xF(gu7?LK6m7O;Q~fiXw%nR#nTTl7R+8aTRs?(1DQZxHvt@*x=a+ zmnsHdhIOm4AvVB%i)Pc>7pGXHFrr1hHSLA4qgW2J;SpHVQ7e`viDhVPY&dkLKQ<5< z?LSv5AOvuTm(hXbeY4r@)#QAtFq@rG6lgG$B-Oz>5Z;bER$9dg~aH8CV|gsYZ5I@I*HS`ifNcvB?%xT)uBy%l1vqe#ZscIExs7+3u| Ap#T5? literal 0 HcmV?d00001 diff --git a/lib/isr8.ppu b/lib/isr8.ppu new file mode 100644 index 0000000000000000000000000000000000000000..069e94dee230d5b53b715cd8c596104dcc43e577 GIT binary patch literal 1981 zcmbVNO=wd=5Z-zDZ;egUv}$b>N)FO!{iD$8rPUT2`b*M)#cGIcu)#KoO?v223L+k* z;!QzBycDS*9y}=MQ4wz;1y;(YV6FG(*g4(w$1o7vf!oq3b-@%ZtRUG`;C zHuY+}UEOghwSFV;z4+|ymnNkY7RbSi$ezwGblV}u0eT@BZh)P+Wd7yNw#iF?Y|i{r zzL1*#cI)T;<&BGXVQXJ3q~|;iT#JnSk_SjwgH zYrXeQe~bkhf!fkDg||Hqhp)d@kFl@kMGmK2n>BdT0Ki!{m%f}6Fo_UB#Mv-+3-<`G z6Fwsxjub_k!JFX78Jmnv42*apv1npqa(p0mkXY47ijCPmoTxdafof20sI@CYItCqKefb#SB13B()y}l3R|2pJw{rqGA%^BfmFxrB zjmHxBU6|;Pw8aI;B5lCO6f|LA)g;w%p(s+AYE`vdDj8@n6jxD4JvtDQmy6S#hz^{K zaH*p3WmvZw8)5_Ow`ex4eKE-*g%K_4t!W>G9mR5l4UfW_j#;tzC6>Xlv7yk}zG#1B zv~PI3fDpi8UPe2Tub<6kuO{YGh1u+kqGq3&B&l}Rf$(mV2fy#7Iw4201 zKyW-)d74-n^8}tjhKiyFhn$e_IEc5>vqh25RP7OGs7+>Uk ztZ9c$%P!`QLGFvZqWxw|F}%(w=m#&ef4nT&N0RA`6)LG;Fkzx1UXEh2*}|yw54Hu$ AYybcN literal 0 HcmV?d00001 diff --git a/lib/isr9.ppu b/lib/isr9.ppu new file mode 100644 index 0000000000000000000000000000000000000000..695efec2a20c46c4014b622c9c603037354a260e GIT binary patch literal 1981 zcmbVNKTMNR5P$de>t94lDX0jVGz^9+iiV-OfI_5!mZpV7B3cm|X#|S23?wGTuoyQD z#!VArj0-WiIJg*f)EGBooSbw~N2Hp1zx(>Wwk!}YdDnZtyLa#I-F??YVyyc_kGVq1 zpYiJvJ2x)*u6GA|o0L*mASW*(Gn-$Gm=MPR)B-WT3%NTt%IA=s-yIT%1TcIdC@0 zrAoq=Vc%+Ohz+pcqS>_f#Yq+^jA&7BP5U71D3&8^cof!j%#I}>u?&uk40W98OZG?O zeZ$)Yga8inGD1kcZYGzznx4xPW^&Vtn*COiq(ZC%;qAC%rB#gL6z?dE?(5;DDFR_f zDa6=t1lH7Rrx27B#^V2(1U{$QBw7MGiPN}>X^2-P2_PiZp-p^}0qom>%5+h*o5Vp- za6DIen%Ela1fD^LilPRmoRIIh9dD&)iz2_J+9S?To63mc58F~=$WS|6IHLWdiUJng z2DsV9+_RXulI4N6s3>SX9H}wJ_lgB(jEOq3wbr5|TSbc$T}$(pzD4WNj36o^K|)6S zBW0$)2$SrdCi#-)fQ4c3h?k}(5Dac4zYI4GZ~etQi=?yj*+QvA&se(-3u?vPAj21p zM@Ku-Fss;Z*U8pdK3(i!kvd`jLWBJKlGj^axW&&41e@yA1O!%Y2zy^V2Q-YLyw@QA zeuV5cxvtxdj?ZlP1=iGVJvvKPZn3^-9C7SyY>10;ba?&)aM_H14qu1;tawXlK~i5? z6M{|4F6Pcb?u)#l{Z>mc{Ebo24_;RP)U#y9CbRQ)sHA?ugo%oHIZDZ93!~CMy?Vzk literal 0 HcmV?d00001 diff --git a/lib/isr_types.ppu b/lib/isr_types.ppu new file mode 100644 index 0000000000000000000000000000000000000000..2ce655634c7b9d9ffa25027ffbae72469e8b6507 GIT binary patch literal 1423 zcma)6TWeE65Z>A3q)BUTZQ4{#v7{9dFCe8Lh@wc)P-;U?3Wib+(ZuFp+XT-+sQ6H* zPlAXK;)9^S!FM108U6*Ie2t9~=bLkbAnL%*&d&GE?3~%%Q>$%WSy_!Ak&3A=wX)hV zl=^h@!?mwwAs<&tWq3d)c@U*+=ZWPW^g9kP+5|EUOQ%ERa=+!gIV?42;EyGo1IO*` zeS7)+4`-Av!5KB^nheYKxu{UB^T-#5!R% z%|>PYJsf!h`D3J#jKl!`k0C)RQU)TFtR|xru^`2b$Y=Oe1d!O;)1)F2mm#^*0!eQA zDb3u%K4J~vK8Gxq;0xq48_B9!x9XKUrZ}~hb5RN(sJFC)>oAcX1flu|66<3=Ty+Lk zN!E6s+m(V7BF*(op9DldbeNP5NO_-t9m{}A3D(A=-PR6x`G9xI=V2djN1UK`u;Y9{ zTJlLq;gL{-c95wQkS_Y9pgcXCV-KCjF|Yadfb+@r*0k$SqkUmh0;T4k^`V)G@*#~0=&_4Qj{UdBF|t! zuCVuVLInF#5jj)qx9(eaH#XKxMOj0_$O4L&1wr$vfLj#Z7n;rqv&-Jog5w#bYT<>V z*^ChO*}W(Pys%8aZ*_aU$JSoQ?e^MS!JM#M#!d?B1nUWAJ?+^H&u0aG#!d(g@hOCV z1W%|)(JyqF!Y3p<4q$fR;AZ9K zWng8hn!Jd41!L7@ZZ~ delta 341 zcmca2e?(z|0^^&FiqjaCcQF9L4n839;?Mv8{}IH=LmVI}Aeg+1@fzco$rG8%*!Y;Z zSlRd{^D-+j@=Z2ib`auXb?0Rg0g5rPvNG~Aurf`VT*178amr*xmdMRDEGCSMKPGQv zRR#)NWqr*!W%EHcX+|b?=FR8WMVVzoLp*)rJsf>P;vM~5;$8gxLgJkrL!3S0-8_R_ zCqLqv#mKO^ntLXrViO|+1Ctg5LpzApW?<+6(dG;cMnKmwGBGfGoGi;bn{mP9oxIA7 z4<_H`RcGA*6lIwFkXLxJ44(kwhRM2o5V0SV3t5CG=K#f4Os)lrJ!WQL*Z>yW!zaKx zg@u8kVe&;jWmXZO=T#^F~0oE(rU_JcGj4hL=@~Z>= IwwGTV041PdWB>pF diff --git a/lib/kernel.ppu b/lib/kernel.ppu index 174b383f8cc990e93ed51a027872b2ef8f12cef9..55da24e458e9e060f4f0ce0b920c056fed97a6a3 100644 GIT binary patch delta 13 UcmZqYZ|9#7!1VUk#voI603(4hU=V0%`Hh`5fPvq1*;xvCR!U`rVK0+anT ztTrd;q{D0kxo5r^H{<4a`a5A_K%*un1bS`eGcJXh4pDXl#%&Om*xX$>W%YwrBU5-9XF~}mT0%>H63QNwwWI-lJRz-OiLjcc-Z# Urfr~{1oTz*Uu0iR`g?{60K6(1YybcN delta 897 zcmccDz;dsFWr8fLiG{J5;YKAx4hU=V0%`Hh`5fPvq1*;xvCR!U`rVK0+anT ztTrd;q{D0kxo5r^H{<4a`a5A_K%*un1bS`eGcJXh4pDXl#%&Om*xX$>W%YwrBU5-9XF~}mT0%>H63QNwwWI-lJRpqAB6Y26Kn2#ac4#vsWTZAXuZSb1>VOq-O9V_`51x(R(f6umR>5DUmJK5J`H9xb3%gvtXR3$-7q1tO1FVS};j#wc!Fs4>Qc3)2wv zCPtek%Fb0oGtosC4X$jBF?68|7iy!4Nllv=KRbz!PwB%r$>iqVIWuSOIrnyjtS^yb z9~TNm!qPoK6z>3ZUjpb=qGKMw`5d7C4S?qzz@ZNSM}7nNYXCtVK-d8gbpzz`3o`?x z`2;@E^XxVGrD>*YYIK=mL2qiG?$L;TKURsC1lec(1EMK@tD%+h_$gb&T|IhojU@~( z3C^81GM}l7;;J}-kIe@5)I3YjC3)~;mP0vip|=PIv;wUVBsq6I44-O*bk41-5P&?z zwG#s8*8=c(!RF#(%Ae0-dfblH-4^;tht3q=Hvs@UmA$p*6wpKEHm4K_t|siZpzre0 z1Ih{nCDGr|snKMQ{RdSy`M!I*Ngm@ulAYPR&_XmX>@&4gsi!#YO|ruNk{S^g{;1Lh zVt$|lG40(@BkC+mgB>h)eH{peg(gPu#h8Fo<1?%<^j&S#Y_NlHF`8txa0lUHbnCf> zm9~J?RAXBVrM^NjHEL{&@mBRkCdW!#+kBoGlfxGhIgRJAT)K#5{ z0;e-!Ko*D@C*=`hz>?gH<*xgfO!t#bb|rnCGUKF{?2y2hym%~vRnduMjS=N@W4f<( z>xR%N9c;}?nQS6SxH!M!>q#tSTwGom3L~y$T;v9BWIS|@s}BPn&RXaf4v%LC+s&*{ StN7oRt)YL*4VNS5U(vteQ18(I delta 890 zcmYjPO-LI-6n-;tmyI=X-QXG&t41`bfizoV)LcyBPyNG~HVOC}3FJ}&rA10<4;C+l zBBDGg;-&FYdMU)ty_8aD0~MsuyQPPU?Lnah52fjBe%8$4y_xyuea!p5clwsBzav|% zf^VSLuWdW}`c47tUjSNoZc_jp%>Z3D09*k8cNoAk51^$0e0Ko)*8u|00G6bKjV@B6 zz^tUQ&*YD(bY!`?PZT#Li-9(o{9Z2}5f|BI-=*gS3uaNZ0>H`NLZNUO^6w>#4!_2Y zC5h}X_mz)?suX+1o7um*TG|?qO-v`pL({QjXl5ii5}Ao5heNU9@#NUVtx+Ts9XK1h zX7=1qXFRLvhpTL{evhc@1c259Jk_%du%Txsl4Tce)r#ni%QQ<+t8vg{f}sT!*A`@b zyS>n@r|3|(c+5+lP}D{p;z|vdf#O=&L3XfBanc_mo)4+GtjLxV5g^B(3cN9b2MHT) zDrF5=Rxwwrqxd~{uebB1`3C#EMIZ2}BgIbb2ed3=wxzRNfoIMX>uKAsAV(dxYGks@ zK+c?|3Zk>kyA3wkV<0-)Bh9F3_Ze)#K#J}48%QuvsVO-s2P@s==JFJOhU*N!^Rz)L zbyU@mJ{7-4_XT4NRQ75rRQX_5YBG5>zdjYzC1Uf~Rq`97kq4rcf*@M)FybIqJd1?Y zo0j4Y55xijM2?l3BkP9Y6AJc|9u6kv0i$P)cZrg}$06f!~-a$S3v|{w~DRJVP z*ra&QpAlcx805$Wev5Ys1DtCG&52H7mwRnTjqh^Y(lly~Hq0bs+E}uDc1osp5nm?U WRWjga(!}-`^YlNDtn)(v diff --git a/lib/libpmultiboot.a b/lib/libpmultiboot.a index 1ed6cff2d6050ef5b6f5b66976319c55ae05f665..117809103ad7f43a5207c812416b44ed958c4661 100644 GIT binary patch delta 545 zcmcb1h4I=I#tE{lW@g4lmK&A$Ss|>+7sSOj`>_6IM&jxTZD-;)*2~vdFf_3=H2~`X zsuSOA&+~%`U7ab0Im>TrG&Pw;6>tpHSP!$OrNhnwM^B3n27}ZD!GT zWr6!pd~>y#6yxT4lLw3_V!sfc6W=`1k^|X*Ej9}gT=C7_&Qgq%>rDhFFJR)C{Mvo( z=6qK{Mm_^fcXT`dLpF7(8xO)5vCU^ZPa<uHF3(}u40RTs7qkRAX delta 545 zcmcb1h4I=I#tE{lCT1p<#v7IRSs|>+7sSOj`>_6IM&jxTZD-;)*2~vdFf_3=H2~`X zsuSOA&+~%`U7ab0Im>TrG&Pw;6>tpHSP!$OrNhnwM^B3n27}ZD!GT zWr6!pd~>y#6yxT4lLw3_V!sfc6W=`1k^|X*Ej9}gT=C7_&Qgq%>rDhFFJR)C{Mvo( z=6qK{Mm_^fcXT`dLpF7(8xO)5vCU^ZPa<uHF3(}u40RTsaqkRAX diff --git a/lib/libpsystem.a b/lib/libpsystem.a index 1b50e08f0b395fd83f61713f41165184e1234ffc..8258f2994d99c631ba2841431cae657e62575bd3 100644 GIT binary patch delta 2683 zcmZ`*VN6?96wYBz=Ag^#L{=Hgu!)Xn?1~6jNk~ByMctNcL6 zxBie}+j7wk(WAaldgz>jWMi2pw7md-MUVSRyn1BXs3BX&BXQ|&;BJq?Bs?2nV?}2a zJ3=y6lpwM4Z1!czRWLNLNSQ+_#-#^Xtb9g(BHsQ0(JB)(@;YR*Un|Db>`bftR1xDg zmRFq)NnUk=rD`UWgTJkcZK$144hYGH+C>uMPPX~^VQ~74))Q=1r=K$>s{si(GnG6`3TPF`bYZ79k0SruAK~wyIss-*&$u@wXvKs>Z<)ZXPjJARIcDj#$BQ8}z?xgN-L_F!H_$#qk{NoUqcXB1bzHF}%h)KE#3) ztx^zif^Ih5W#%NSOQyS~h<}g9E}ult|33s*&k9dh&lJ;6nI%m{H>+xBr_H6ef3325 z`#naXU;Er_O+!Ti>pPpC9cnEgeP^dx^qff_VOHNW(f3^Sy|_pLcK7)KSr7x~erv}M z#q79r#Ezf2Y{zwRh4E6mnD<&P7#FMJ>UDL(#)p4waXWufeuj?T>k8|`Au!n_>!HKn zZkRAUdw>njm{$lP8Jro@FUWg0W8jn%#kzDXJnNB~dVe>YGCZ3p0~q6LcutKk9h2d? zdA*Ono*!AIQ;eZB^;bMCrz-ZxZ42W_L=HF0zoRCV;&qe!JE*rjduZ{RtdRKB#C%Jq zO*+KHw-o1E2B@RusWqU^R;)e1z3V`oE=fgQ)LRY@Q;!Dgc*A-y8{hVY;+NYZIti|K z@=z9>2f9;(Y-4P4?2#;47aqRXT1Rq0H7Lim(V_fO9;g--DFpaJKJ=&M5TIyC@MM9N z#Gu zK3G0`DB7m<>f|)QCD4pytg9h%p_t19yk$SA<}-~HjpN*Z2!2r)8Q)qSX#v&IxHCWz zCn&b5gYON(cc2+l)ruh+qlKRenKjT26b++>+p$(qZvn@>*w*+kn@x`v^N@6=i6hIH z&>)!x-i8sNZ?!{~{39at&bQn3B9?kbj|;uVBW>yBgB?Oc@`R-UEv5!sxA1M9mIh&< zXpkEI?Gzfuh|)lHho`!hIiNv0+;vDC)Lk3%Z06?8XL7W}6^Joo;1` zalwctm*pmqu&Nsbb%t@HH!hP^8FPisHO2*GL^l60M2M-$#F-G{x$oWkULRopy5D*C zeCIpoo_lVGuC5!py6&T`Yl};ZeMRTpJuYKKB4s&j()IV6G?;V`WsvS|4#Pwn-+(Ii z=e8d*Y+EkbA$rsoNDrM;kZdaRgm&cPudvux;?*P5Mh)3I9*awN19y8ACgIrt8!J4k z*b$Pk!UTzxXR$9!u7RO}MampfF)ls8V&yaP6Y=&3h*p`Pk=G%M{aP`eW@lREr-~T2 zvE1r(NOG$aELAh19QkE^gTF>R&W|&-RxrhS9T?CameSjOm2Tun0*oG_CJ?wN>q6{L(z>`-ey={q;gqUTNe2($X0iN5Em@5Mz5uzN2I$buL+=UY2| zBxc8@BX<1E6+5nrD~y-g#k|*Zz_?fy*KVj2Ha`4gi`)5=@-uYw-cVQ{4uQ!gSq~ll zcGHC6*@J9w#=JrZ$>7YGenH;56$7W7DAuK8;aQK=)cd>Hl;PQRGJr9@hUe7y(lHsH zo7emJ>-mvYI>i`DQ-8(Na;jo~+_5l@MC5R@yt`^rDPA|pyNi0uvxXM0%L<84P0Y7+ z#-u|`d`oezWq>+bo>~LyY{l9G+`Ass>5^2`MZM+lDD`Nto;Pd&v+-?TD1NykqLbhT zCl6)91)#e$$TG$z#~#U)b>ZRrt#u>^RD*I{8y(6o=YncckwSnk~ z22m}J)w)mh0CF|aBQHQ)aM7hbu#@?p4#Otjigv>Hr;2w}!l;xX`jZE%;T2W3WDOME zBVR^A%aJykwwdDQ7kS$*$d(?0K{rw~&XJvGv-s>D*s5HFRCgVycGcrm?}K*bEhiNB z?1$yEhoWstuTFLYTn5cZ#=06J7mB$ I!4YCh9Q(Kycihv64>k@2nNkrq%LjXMJr zae`u-I{3aIdKY9?VHyLjCfFtJ@$Q#AUsKf^bw k@dVDBgm=;~)Bn^J7OhAJ_v+uM|29~E0yp!P+juAc13U9#)Bpeg diff --git a/lib/stub.o b/lib/stub.o index d0c5e39e258244f66faae852476d8d41f13fc363..0ec3473e1b4127741f26f452069aa4f75481cfd4 100644 GIT binary patch literal 5328 zcmeHL&ubGw6n>jjtzt>4UWy(<@K8{rqIeUsNhZnCO|tAJ1-&fWHfU*MWOs%3WJ=HC zzu?K6;8pOD;z4@!=*@tF*98xv!ua0qOtNY(o;wfTyzl*(H#6Vn5Z+T})-_E7DH>#9 z<^hyN;&yD8VIJmW>3>=3NtzYAM&#s$Lq_0J2q|@vVko0UfYk)XtK71H-aM-8_X+E! zmql1WB{_#GYsja%I|PK#StOTGGcih*0&cW0N%x>0^lCc$GHSZtn+E znb)r_(mdg3$Nu~VZ8=x`m@7>75A(U=Bv&}tJH+59S3G#Oa1#-qyr&65EII8i*|#+I zu=d^|96Misan65yqqvaLh8KEJ3i~@Dl-7a(O2NY*^h0kA(e5Cz!uR{zNuk{Qua)x+ z%FIE;(-nVCj%ZGjo~V$Yg(ciD>k;uA=+CMm&f>nZYsB3c${i8kp?c&jsfhS<1jJt= z5r2t*xRm~wK$#Yjh<`}HI583bLSWh;;@^{mST$I}qlx%LGEk6Li33@{@y}FfK6D22 zXGJ8BFI)V}hrnOI9)wTU;-%yT1K1jPn~$K?GrLBm)9JdcPOWD$S2vADI~``Nj(yK< z=~gP(uyw0xR2{c&Ftg^QGJ36MGv|mzlj${PW1ogmP1TEV-P9ZDHX>YYvg(S{YrzV$ z+st&Gu8zKOpUJ?gVRw7F=~i@S8ng5UbKAXEh1pOU4nxa((64R!{q=C@@51)b+vxk? n3cD4Ao*&9~aetzb=6o9dK(3I*?{rJ}RkAolv(RQ}KqurkPffJL delta 409 zcmcbhxqy9w0W&)T^W;WG)5!)xEcJ{G3=C{Q3<3#2jueCmCIz5ub|B3G#LQ5B14xqt zlmny`piCYh4O0UW0;w~A%7G}5HV_a4VkR()p&m?a0Lpv-vRHwb7l>Ja7-YE|5F;D7 z0I2IJPz(lO2C4xCIAMZ7dIC@rNI%FNkQxvT@&F7lZCEP}GWWN?SkRL_Ag=@jzxeb2 z|NmcKAW9}b6LbIukHO>up$7dMFl}I(i9r~N53=PV5QDr90s;(-lk1P+0Bo>u0 fc)JGqx%$Khhd4TWLli(rkS7^|E)W6IOh66*YZfQC diff --git a/linker.script b/linker.script index e0452f1b..27f26c99 100644 --- a/linker.script +++ b/linker.script @@ -1,13 +1,16 @@ -ENTRY(kstart) +ENTRY(loader) SECTIONS { - .text 0x100000 : + . = 0xC0100000; + + .text : AT(ADDR(.text) - 0xC0000000) { text = .; _text = .; __text = .; *(.text) + *(.rodata*) . = ALIGN(4096); } - .data : + .data : AT(ADDR(.data) - 0xC0000000) { data = .; _data = .; __data = .; *(.data) @@ -21,11 +24,13 @@ SECTIONS LONG(end); . = ALIGN(4096); } - .bss : + .bss : AT(ADDR(.bss) - 0xC0000000) { - bss = .; _bss = .; __bss = .; + bss = .; _bss = .; __bss = .; _sbss = .; + *(COMMON) *(.bss) + _ebbbss = .; . = ALIGN(4096); } end = .; _end = .; __end = .; -} \ No newline at end of file +} diff --git a/src/bios_data_area.pas b/src/bios_data_area.pas index 0e933a76..f8486500 100644 --- a/src/bios_data_area.pas +++ b/src/bios_data_area.pas @@ -36,7 +36,7 @@ type PBDA = ^TBDA; const - BDA : PBDA = PBDA($0400); + BDA : PBDA = PBDA($C0000400); procedure tick_update(data : void); diff --git a/src/console.pas b/src/console.pas index 9a4b3406..993440c7 100644 --- a/src/console.pas +++ b/src/console.pas @@ -97,8 +97,8 @@ type var Console_Properties : TConsoleProperties; - Console_Memory : PVideoMemory = PVideoMemory($b8000); - Console_Matrix : P2DVideoMemory = P2DVideoMemory($b8000); + Console_Memory : PVideoMemory = PVideoMemory($C00b8000); + Console_Matrix : P2DVideoMemory = P2DVideoMemory($C00b8000); Console_Cursor : TCoord; procedure init(); [public, alias: 'console_init']; diff --git a/src/kernel.pas b/src/kernel.pas index 854ad05d..546971aa 100644 --- a/src/kernel.pas +++ b/src/kernel.pas @@ -20,9 +20,9 @@ implementation procedure kmain(mbinfo: Pmultiboot_info_t; mbmagic: uint32); stdcall; [public, alias: 'kmain']; var - c : uint8; - mbi : Pmultiboot_info_t; - mbm : uint32; + c : uint8; + mbi : Pmultiboot_info_t; + mbm : uint32; z : uint32; dds : uint32; @@ -46,9 +46,7 @@ begin irq.init(); STI; - isr32.hook(uint32(@bios_data_area.tick_update)); - console.debug:= true; asm @@ -62,6 +60,7 @@ begin console.setdefaultattribute(console.combinecolors(Red, Black)); console.writestringln('GDT: LOAD FAIL.'); end; + console.writestringln(''); console.setdefaultattribute(console.combinecolors(Green, Black)); console.writestringln('Asuro Booted Correctly!'); @@ -76,6 +75,7 @@ begin console.writestring('Total Memory = '); console.writeint(((mbinfo^.mem_upper + 1000) div 1024) +1); console.writestringln('MB'); + while(true)do begin end; console.setdefaultattribute(console.combinecolors(lYellow, Black)); util.halt_and_dont_catch_fire; diff --git a/src/stub/stub.asm b/src/stub/stub.asm index c0701d27..145819c4 100644 --- a/src/stub/stub.asm +++ b/src/stub/stub.asm @@ -10,12 +10,12 @@ ; ; Export entrypoint ; -[global kstart] +global _loader ; ; Import kernel entrypoint ; -[extern kmain] +extern kmain ; ; Posible multiboot header flags @@ -36,9 +36,18 @@ MULTIBOOT_HEADER_CHECKSUM equ -(MULTIBOOT_HEADER_MAGIC + MULTIBOOT_HEA ; Kernel stack size ; KERNEL_STACKSIZE equ 0x4000 +KERNEL_VIRTUAL_BASE equ 0xC0000000 +KERNEL_PAGE_NUMBER equ (KERNEL_VIRTUAL_BASE >> 22) +section .data +align 0x1000 +BootPageDirectory: + dd 0x00000083 + times (KERNEL_PAGE_NUMBER - 1) dd 0 + dd 0x00000083 + times (1024 - KERNEL_PAGE_NUMBER - 1) dd 0 + section .text - ; ; Multiboot header ; @@ -50,16 +59,38 @@ dd MULTIBOOT_HEADER_CHECKSUM ; ; Entrypoint ; +loader equ _loader +global loader + +_loader: + mov ecx, (BootPageDirectory - KERNEL_VIRTUAL_BASE) + mov cr3, ecx + + mov ecx, cr4 + or ecx, 0x00000010 + mov cr4, ecx + + mov ecx, cr0 + or ecx, 0x80000000 + mov cr0, ecx + + lea ecx, [kstart] + jmp ecx + kstart: + mov dword [BootPageDirectory], 0 + invlpg [0] + mov esp, KERNEL_STACK+KERNEL_STACKSIZE ;Create kernel stack push eax ;Multiboot magic number + add ebx, KERNEL_VIRTUAL_BASE push ebx ;Multiboot info call kmain ;Call kernel entrypoint cli ;Clear interrupts hlt ;Halt machine section .bss - + ; ; Kernel stack location ;