From 0478535819a5abfd1eb135b5524a92f6d67d590b Mon Sep 17 00:00:00 2001 From: kieron Date: Mon, 23 Oct 2017 06:27:53 +0000 Subject: [PATCH] Terminal git-svn-id: https://spexeah.com:8443/svn/Asuro@214 6dbc8c32-bb84-406f-8558-d1cf31a0ab0c --- Asuro.iso | Bin 5095424 -> 5095424 bytes bin/kernel.bin | Bin 41188 -> 41188 bytes iso/boot/asuro.bin | Bin 41188 -> 41188 bytes lib/PCI.ppu | Bin 15129 -> 15129 bytes lib/console.o | Bin 17644 -> 17836 bytes lib/console.ppu | Bin 19798 -> 20005 bytes lib/gdt.ppu | Bin 3470 -> 3470 bytes lib/idt.ppu | Bin 2969 -> 2969 bytes lib/irq.ppu | Bin 930 -> 930 bytes lib/isr.ppu | Bin 1858 -> 1858 bytes lib/isr0.ppu | Bin 1981 -> 1981 bytes lib/isr1.ppu | Bin 1981 -> 1981 bytes lib/isr10.ppu | Bin 1994 -> 1994 bytes lib/isr11.ppu | Bin 1994 -> 1994 bytes lib/isr12.ppu | Bin 1994 -> 1994 bytes lib/isr13.ppu | Bin 2093 -> 2093 bytes lib/isr14.ppu | Bin 1994 -> 1994 bytes lib/isr15.ppu | Bin 1994 -> 1994 bytes lib/isr16.ppu | Bin 1994 -> 1994 bytes lib/isr17.ppu | Bin 1994 -> 1994 bytes lib/isr18.ppu | Bin 1994 -> 1994 bytes lib/isr2.ppu | Bin 1981 -> 1981 bytes lib/isr3.ppu | Bin 1981 -> 1981 bytes lib/isr32.ppu | Bin 1983 -> 1983 bytes lib/isr33.ppu | Bin 1983 -> 1983 bytes lib/isr4.ppu | Bin 1981 -> 1981 bytes lib/isr40.ppu | Bin 1972 -> 1972 bytes lib/isr5.ppu | Bin 1981 -> 1981 bytes lib/isr6.ppu | Bin 1981 -> 1981 bytes lib/isr7.ppu | Bin 1981 -> 1981 bytes lib/isr8.ppu | Bin 1981 -> 1981 bytes lib/isr9.ppu | Bin 1981 -> 1981 bytes lib/kernel.ppu | Bin 2387 -> 2773 bytes lib/keyboard.ppu | Bin 2966 -> 3035 bytes lib/libpconsole.a | Bin 80358 -> 81668 bytes lib/libpmultiboot.a | Bin 29040 -> 29040 bytes lib/libpsystem.a | Bin 147760 -> 147760 bytes lib/lmemorymanager.ppu | Bin 3669 -> 3669 bytes lib/mouse.ppu | Bin 0 -> 1258 bytes lib/pmemorymanager.ppu | Bin 4122 -> 4122 bytes lib/scheduler.ppu | Bin 2700 -> 2700 bytes lib/tss.ppu | Bin 3187 -> 3187 bytes lib/util.ppu | Bin 6729 -> 6729 bytes lib/vmemorymanager.ppu | Bin 5584 -> 5584 bytes src/console.pas | 10 ++++++++ src/kernel.pas | 27 ++++++++++++++------- src/terminal.pas | 52 +++++++++++++++++++++++++++++++++++++++++ 47 files changed, 80 insertions(+), 9 deletions(-) create mode 100644 lib/mouse.ppu create mode 100644 src/terminal.pas diff --git a/Asuro.iso b/Asuro.iso index 7a12a2aa8562f806285511c7bfb49be82254003f..3356ade00c7b79781bacd89764cf62ce503ad451 100644 GIT binary patch delta 17603 zcmbtad0bW1_CE(Wa6yKvA_9_L5ET^=5D^pOTWLT%CIHX)L97sW>R50`ip*~)e z+gH}phL`p9K@#`x_MQ<)*yuk|G9SC3ye$3W}X-6se2Wge=#e;96{Ss!v7Z+Y{> z7v2Ax>5U^f4!_zMKpk%6n5^!+X_bL~xha{$ZM8YfKw~!Z&;^^r%vcr|K@j1e+o+Kv zo~jOA7xiaDTYlXfA^n%g9Us#eSFh^r|4^-+b@|H9lCTfrSns**!hfsF|F&Mktk(?r zv-Rqz?U6?4W4GVmv6h~w-msnS*x~J*$f~>T=xT7YcJR1scTn!09RoOi+t5wC6sGX7A&1KVazoeY_AuzomZVZ+Tnt z*0*%S_H)rL-_b3}`i{qa|GNUZ+535go3fu4ZrOfb%s=m^8JQ07Eax1c-TcY{UPi|b z(2QIT@+^-&NG&fs$m4!@ka8Qj=&(Z+opFd~dHW%1`2rVBIZRROVO~a`9i|!Shk2I! zf8X_?HX4$ao&Jb6`t*Am;_>f!Zeo9+8#eX_9=eI4$A93JCh7>aoPC7H{qV>%y4m$S zbb3AYyQ-dN`FuUKZ2pnQ&Ha&btA6BhPyI-_rlY*VjX6q-zL<+1q3El}c+{tkQR@6- zJh%Ifh5J2l*7Hoy99q4mE{=1`8+@GhdERkea$g*$$?3;=UXo7G?5e}ZQ@ z>L+Sh`H9E<@F!|{|4+Q!JO4~`&-|HponihT=W`4E$4aM zqVu#G?{Lvu=V?@77kJ#c7byA;7rk|XM%DEqkNeU^%Kax7y?c>H6>*8jU2ut_A8}C! zLnD9XaToncquR(trOUJ@6E5?*eaU6o?H^s{9c6bf)1xfx3hy{7y0V7u;8h-)f0Z67 zuW``^hMKPp3Aq1k<$Th5Vnhd#EPB(cZS{g{!G@1FuJJOza*bx*@i$%sFZ@O$c;h!- zZWn)h=-lchr)5^B?u_T0TPIzoRe0q(&&!GH)QkHK9{TK!u7*W+Yt~9m&&(Y8h;#U% z8`RI88@zaj-=yfQn>;_eZqg_&-{kFbN+aFn=Nft3Pa7%sr$%0ld*7m+IpG#Bs!g{h z(;jHzSLlDph;|&+bL|K5$E6di0ZmgC_SE2QP#Tjyw$i^+1sm{_9gkBmCE^L=N}$ zUqmB7;w|#XBu5k&f_LFD{oQQG5?GC_z{M$^yZp>(wmu|=gsZa z-QKKMFL`srPxE2nPxIm8+nx9&KAz^wdTE9)mtX6|uljQ18|Wv}7kx_swB|NEpEQq*&KYl!HJt&bE`YCHLGrUYi@QY zTC?hz+Hm>Lwqg9zHr(vLYr}TuMjNjEjJ9ILLr>2m<-r;JYaQ9umifBWmRpN~{;U>x z{#;*Q__JJeKAzH!;d$-&{C2DpF7WYz0SuoOz~ygu;+OgO;P%Y_jP_i9ZF_MPJy8U5 z@#%q#zlx9l>cj(s`1~Li{~LV#N)WRj9L(j<3}*NneEdoyiBHg0uyDhlZV`>g7xK1+YyXOc*$)WihCelwh5u?O z*M38&_|W~3XO>dk`XJ|}GMO003Z;f|EgcJEo9^D3i;wBdaFvfAbK>sd+)SSdXPGVx z=Vp2!oMn24kB{iW@Ht($@qN>U#n;Hkhj(T8oUYvXc6Vj*UFPEhyD{9_jT`^AZsJ(l z2@%}*rbjqCfsbEz;^E!7{NnDS@vunNb?5rO+g*IVH71_*MQJ=Ymjm&P-^Aw+>%;id`f&MQ^!dZHS@x*WkN6t_>65^GjZNU@ zy(xj!?RWw=m!5rDELnZIv8?SY7Sg^*D;=>2D*XW^7#XaIGdp6No*Cej5oFp;) z!N+FL(eOlinRhfDN@7tr@hxTaW1b57ajUYcpJ@Coj5P7_5&hX|aAAKg|4@I%cTeWx zW0J)a3OkKfrEquc=M0#uGtC++&31!s&rA6 zuBy^aRU%ZSyQ=h1m7b~+sVY&b60It|R3%1LVpSzhReGyRysGq3l>}Akt15}AlB6pA zRHeVFB&$k_stiz-fvS?KDru@RNL2=_$`DmaSCyfvGHk0NPc@4c+w*zyIY04p^5i_Z zo6F$=+K_CZgaxkfzC%13E45oQ2;7!GUCJ5#l>o$|HF;w^HLvGEJm%GTx zL@kzkc`SWQ5cIed@_Dfw-hNq%lTjctMr++8p4=*y9WFydNYjh*02lWVlK7H5xnxZT zL9nlxV6M@hhLN95)Bg>&?CVi8#L(30pQGjz)Wp#>+fN4Q=+a(;%EzcO6}2y*b|-2* zC>fPwTbBM7j6Q0Or9)Bcu@BdVbg+fZmwm)GBYFvfwPLrQZFgCd%K{I5Ln29AAeVVY zfc~PShbEGJ3*=;%!AYdmLOIx_TN3HEQ10bFCs7bKiuzw24oCS>t9^o?PfjGyFOZbY&;dGruJK2g^Yon9yWXfXj zUmrsn7bBw$GGa;O5@f`+FuWN<(n$oFvIH5uNaGS@v_?h@iByph+rsc+46{zUktr%N zqDiBQ3^Ou%k;tXUh-qQ?GKRZOx{@hNkr722mmO ze{J?mv@!(!U-1@%<>~r=Kr58!vwDJRIj)_ID>}mp`#c;4!H5O}{|!^nkK$In?+)mE zMDOCrSa%IZbR7@`eKW3Gfaq(ut{O&A#L84ReHAL-L*OLMLw0i(Bx2;OKM2 zN4LO|4jZ#w_e#~DM078rb7Ay=>qKqg>8Xb+=ZSRSD(ZZT{hoOg~? z$)RF6xm_g>c7-C)^Zc`ale-4MjP{l}h;@oZPYNNg|4n|WWTQntkBwl;1)CqkXt(4B zL$p}Cys#^69=D2|W@}}R$y!n0#Q{iJlVyHFS<}Lj*tNJgMF8I1E|u+Y0&A?WsQl%c zL*^QXVT`HtR9JT3gsI4~)@=+hmekB?uYU?jIDF86VNxqa`U9(diX{C>I0;wgG-FRM z{{%9J&7ULKCj>*}Tj6NXW3fAoL>i#NwdDC?IXH1um>_(HYll}f4z6^2Ywr>CSmn=J@y^aVS~{>g`svRE!wwjg zsxtQP@ruSlmEN!KJwkko&u&9?`&GC;o9jtfwcJBo zMMhN1fw8L~48N^Arq-+h$9`LXTpsVf#$0c%DIYRUEWHyrYe(trk+VM4q&A=vG^uU9 zZDqB*UM#^idM;csjCfvYXUuo~VV({}G;qB?Ai65Cjjqz)#QB{2^A505x3cIe)z(M)o{L??o``}(;D>DA;kD8bKuLWh7Ocf#F6@}q$ zm3?T9ecD2ZQ|oA*AH#Ys_x3G!d$!Vt;!s<_**;L*O)Sq=L_G$2xiTcY5{#AYG#T-c zuU5+0;%eegFh47j?Zq zKZf&w`|~llG43L1`nw!jf)VB)%ktZ5w1Zf?+0SY}?5Zz=lc}}hsCCh4hhVjT@2bB9 zip{z)r*1I`YU?m8TFqL&*xOOL#JhC9ElC59|( z8oAJeHKhI=E~~m{)DFVJ0Lz*J7kcYcVdt@3%{75~$^*7=b74I?WNDy1Nrwxhp!*vO z=Lj5oL4dbr2A$5&-6N(q<)}cqfBxZvrXHlbyJvYw+sYI;!rqjlyHfOPZLuuiX<+UB zxd?NQ(mNw({itW!*1jpX6Jrafm}|D5bYE__K!D4OYMQsfy@hc7eXB!4Xp4BUt$iL0 z^eDJ&fpU(mVYQs+RZ@kzd6yjyzpb_U{;Lj${XNuJQDaN5(Z6U>Jw;VJ^p9FpsRl27 zk4{=tQB+l@zXvM6t?7Hpn#3Y6`#LoGBwG&mwxHUJD*pj3I#ynG@|E_TLQDe4#36a~OUGbUpG*B-B=HDPS7Glc9%{HB%ME$v%5}+2PJ&0aK^Mg4(D*|AWAN^ z8%|WWchk|a9xP3k< zzo1Ivp`bNt7ooNRw5;Lni&60dDD*{elo_XRs~y^IHnbhgNY+PkaQG@*lmm;_V(9v8 z7}?jLt^!AUa8yE8d?a@-p_N!X7qWu~9tgVBZq%dDZHsU*pQ>nyASuLIQuSz~{sJbY z=~qG0q%^9*q&oZxN+YRFRB0q7q1H(17-+YUgn!AYt!WWE)2h7!8$y=;OD+gPHSDg3 z{yAK0FLtAFCGLuOy&Txdi1UF{8txE&?C;Hl*fcV1y*$g^j^iiDSL@~EC+0vc7M*jz z4T0a*Z>$yZ`wBo|4Bht4GKRI~{=16kNORj&2qVFM7%i;Sv4d;%w?W!ZqGl(_*dRxY z(w(Svw^WcERO9flqt$n3!Pwr6U@=lqw@rXF;Ih05gxypC&^QBvmHKHtvGT-EJ;sia@7gDJu4~5K4_H5Xw&aEjoP_s_D5OXey}juyVV( z1V(lu_XFqd6j!2;%Q{> z$8uuCGQf?S8@R&Y%?-|-H#csxU|qvm==4`5Kaa#p*r{{3P^BMH)Mm^)| z7SF(7p8Jupo4_-m#IIOx=VKUUcTdbUs+@OE;Cd6d_Re9h@va?`#<|n=5X1E^=-QRK zMzqB>+)6Ol{mIzP;2Kcs+AvC8d*{%sQN>(?s&2EKS&~Uzx3>GB>(R}X{;#77yf0|> zn^kXr?Io!B!PBs#8*x+)qssKA%G5~xcPNM5j>_3iWw@@RvIdpooXQCO5GwbeGQ+8~ z=wD(ryOY-nd}AB6;PUy5i89olVyY|mJz6uK9Mb*&Y+_ir=S<> z^#-V$^E_Fa0($G$wt1h(kuE)!(Y$@_a8qLR8BN-_iFSjBOnunT5Z`ZbMkQauZEzs2 zcZQe=$0iMN<3Q596*~<=G&&8fvQA?WBGK7tIb^C$?%QTBuEI`(w+Ke3<&e!bc~Btg zoj#JmGxL#3yzSUi&N3Ku)>F(0s+>KQLyGNk{~q4(G;BD5_Z~)1!Q9zX;h13G6OiEP zW@m!9zQy_PPUkgg#Cscd)i`HYp;^{d<5*XL%Gp)pNbxqgqnx)8926Xf%gtmMS$C(J zOoDT0og!4^Hv3uXE7F?`9dunqmKz&3Rb++aRY1tkr&hL`On%-bcPW{V)?C3_T`fM% zmG8h?LOf^tkNy_JIat`KvR!y7JQW=*Y-gOu{A_ON2xYBBwPQa#-_V=BD&tjxsiLT< zVnK7okzp0L4>WXdE<1ChqM<^&ZhgPvq~F$5mnAjutQH0??5TszH6^N|7l?_P zdviUcu7lcGU9r%5p&W@u6zi0PVC5)U#`lM+Bg zYf>VJUYgVo1Q<;Q(L<94&{--7izW@CvmqcLn4ut&HAw~mC4C&k08PpSF;J790FkOm zSs>ChX%vV-nv@MfmSLP58<98h$44hoAA^!Ou~oy$`1J{f#hc1&5(-{T_Zo_rTBk z&)}!M20zaoayWwZxBde|9i4REjwfC8e!Cu?QAl2~9MUiEmc#KG#^roLFo7NV@N&sG zzrfsi=pRPz2f)=wHL*j#|6ahIhyHrd((_K%Q1*(zTkm!Sk3Hid=b={w6P#B$bjZ#~ z6X;0+Z930L6Kus_%DYWl_sIRs;u%~2dbyX2rD-00M{@?QZ+OMUIb6Yo=3;XVJ~olJ zkILnT&a^x?b7rAs>I@vF%`TcX(~_M#Yx>j~6Q@N- zM+4XSF|f`9$lB|2TXOKY96jI}i@9bBeCNVBZZAk?QuLy-AkeEsyNO&D4%m9g( z*;0_WH7|k0hqo$_c$O{)i6s~b5=$~1B;FC^fP}YZ!qXr@3=q&UIz>kq3@$_xF2KbY z2s%ZF7z8>(r|6){*6wHdE7y|L=c&;SAmJuLI60LD`5esg>F_8>41P374DO#GK?whb zb(r+0ATd}^&||RIVUEe~1BuDc0zF>eeDZ0MH897d=YxcI;gf``Fu?4(gT$)53KE3j z0F9#|332Tr$y9CZ8!y4pI!!R@ejSz7ahJrOiiJKldn{?FWOi$;!CNf)> zH*|MSQSxX=H%d-2&dVe2vu*!4FXy`jWf#G<8a{&H?KU`X;w+34Ka*{pFU#+WF2Y>0 z=ZYK_wuVKA5~C8JaJYjekhoLc^N9CVIb57fVz0^_T!eY#iK}vgmoS$mCCs(0xGJA^ z4Z?!Ma-*b2AazX+?1b*aC+Oz zl0u2epdQI{Kq+3VIOknmi!mjf}k2(T1Gj~XQ{Es1x%A1x9$jHJO$8|~88 z?cub&CwjOiXzi_4-4O;Y2c;Fyq8?N4X9PKNzi-ysL4D4>`E~Da*7slk@3p>}Su=LC zvmGAU@F`Bn3GNWvE-pScR%#a;*D)@(UHe!|u{kwoLtRhBqgG+%sxGxbO0)dxJrRW| zABS7$gpZS+M>l`>@oTj#IHV}ydARV6qS+Q&R`i4{*ApHJTda$;(6n`gag;KC+F zt)Dlv`P!yv<=;eJ^$#B7>Q(K7o~gCFEU-_~8ix~tFg)(cyg z#8{z^EP1kG)jd(Tp@gs4krE=Z!sa`oEN;cT?QV-O+*AZ19K8=HIK|kO4i@3VZHsPn7P$?pP~~kUf;C$$R*Mt|rl2dw7ry z_EM#ryqA}5Ye!aNAkfRiL-O)*WvCAlQavAr#s*JMy zM;W(lKSpuK9^>4CV-)x7G0wFerwTXXI4}BQ5_6}d_GnD1=XSn485R5kXVYh%UykVFUm&Tl*mf2X*I1?q90LWiB_T%ANuoag7Y?E=M3zrfchmqbqq z)OL~NUKCssJta`vC6aqda7pykrA~Z(O^Q3&6gO!Sy(Q4_KPc|3KX^6%N}~7w;88_f zrnqx1bM&tydjB$yD(VWwefJ9I{x^v}y27K1zDjWyT;=FjBw8iVm}?Yw(KQ}bF^MYI zc~2%>r@DQ~b>8h?U8l~nN7wmT7IA|*k7nIi!&mSog-*Q5&ymDa_)pm3jLun-YQ&qB^7hZzj(}3{zX-zQ#R-{GK&M_>*dqc!?Xo zO5;6iiC&sgi{zKO@td{C_<97${Dq(UHN(rv!+PV@ygqdUuPIAY#?E<*9c(Pe7M_u7 ze`J@fm#QqpP8N5f-Q65Ce#wp7Ym?O-U0YN)w>FvGsoJ7?wm_0UJW%kn1Ig?U1d7$U z8%WykS4WP1=IME$+PfcpuVcIF2wzw0khSO$Bx*4(i1hV+kjTZP@osemKCUj!uPZv? zGL82L7WkxKl3(J+uhV$%dcyyddL+NJo;-+OC_+ela){usqVa2PJS3Fnhl=<=q467` z!hTp7$$vXc;GfX=jWA)qL4A@xt-j!|rtw?#y%vac^S6n*XAh_wGkBVj+c5qaJmYsBOGs4)q@(pZE)w=wB{cVqcw z-U{Jl_>;qB>+yws7Eao~5iaZpHzC6x-$aD}K@-ycr6%$-`yt;nt+4jb#7kv1Izkjm zk033bh!BhJ-IT;fG!?i`<0ss>cO;qVut<^V!bmdHLy;oWhcrH*nZRc^Bjfw2nTW5P z#`{MJe0CHW-|i?8-*p=A(Olpe&B^$;HkU{8PKYMsn;h-#1RB5N#v@yh{CO>8>tT@< zwIKaJY9T-Ku;M>Bc~C#L)-HE={*jQ)X(@`irX^|YjvH^#iVS92D{)qS){5lcY9;K4 z#gM1X_!!ZQD`H6dzsEd#g{d((H95I((LJiM$F>#=v#d2~>uhTgYppgU{#F~&7%SS4 zxtwhya`9_R^51AH>@RCe=6a&7+=VwrEXki7EBvpb@oR28B#!3Cx%qKqWB(B+>SJ$5 z^2fFl`~n)k;KuFkX?}Y-=9#;}kiJ7+@Go2JLVFR5e>_>M5%Hogvg65I4#f+81WnLy^fF+tSrWCEE>tBxX;w2ovfYdgv_d0%uQ z`)*>VXHRIqp?wFpd%<1yLML}!JCnZBJIj$zKQ{Xgg(uSM)Y){nvxvHaw$!hS@HDjx zS(RN~Wb5C;SOtv_=qfIQ3%ip1!(9d6JCVdkB+Biqsud)XRr@_roUQ)dNdD+<;xby$ zja;?gx{3U~x|8;Ybr<%tyOaC_-Q|dS`}GhFG_wb}XuEpIX}m#_ zNPK*fSc-xqGSv%7!oIyHiI45+KJfv6>K7tUzr~bTNt|~b_PD1UYK0Qki!}9iFL4cA zP2;zEiK>V9Ci$~^3;YWjf6)6++Z?TL;k0t9e`oX&>$j>8xjvWNxPLMk$>?NJlw~x2 zHd#b!?@KPq=)Pi6a{H40kM^iHi{B^CSuGP}D09~`|T5Vkm)U`Ug7Nl!+buC!e>gigD zu7&Dan6A~=wFbJ@P}dsiT4P-c*R>|P7NKiRbuCiYn(11Ut~J-SXkBZeYb|xHm9E9; zT5DZvqibz-Emqg!bgiAPwb!+HUF)E03A)x%*E;E1XI<-}Yh86MQP;ZZT6bORp=(LH z)>GGd=~{1H>!WMQy4F|MQnqO7c)M(OOc?k>x-xy9+SX@I14%MH64|zS zYGl2UV1P5G%7RhbJlc-kpQl!NB-CdW@2K59%EMTvchxaj1!0opTrza!$|Tf|M(s}2-Va4{rKn7;o_dZet*Hs9 z_1TYe{lgp)^VOPiV8b?&l##bPz_B~0!efDtxu7HKxj@bFt!OPtR}}MB0^7epP4uYK ziPc!BhI!oY$eJ%y+XnURC`rY#`JYu)Rk_DAoTDT&z9XBkP>t{?=*U(qREq*K5+rF; zc!qP0WR8GCtZyiLJxdKqFklGWw;xwkZ7Rxej*-kDu1QA?P(b5>8p-Sr8q50h1hzg) z4Ga3UgT-wOdf|6x2X;J5ZRN2$hWTW}0@>o(N7=AInRQ`-ZpX8I*|0#VK;sLPZ4(P5 znY&vtpGC-M&puj&j38vRXZsc*Bfgs9D;PD*-7OtH|DnDidl-RiT#h=T=CPVk(YvFe zpl<|9A8k^b$+4_F2Wr4${E6~i0W|@n@dr@0fz8D#`krB&c zmLMaxn&B@PikaD*WiCNR8&Q*W^qs!SFUSo3YHL$cSO(OOXLToiaaY&0=zq0X-oY0fJ#OGb0_DxoUx@vMXAW zO4+1&YKTW}Gz(q^>`T7Dp5B6`E(7+y7H+l_B-oy2N;q4(4E*IbXTi&nVM9hVOI?l( zu*m&Mbp^xEOli!PE=NWb3toW?A7nIVsVk7tyqXa#7`|poBeryfI{)>YtKs>{w$IPM zYj@=*`+uJFTByss=LrjV{w-L*8enHF>biLpZ)i2M^|x>VkepudWxD*}E8iQ26*%)O z9)*vAqoZ(Sz8M8y8yd4||EY#%!OYwp&S(Tv;P^`TQ)V(an22CYG+7s!u7>c{A1Z6= zaC(~4;M6u_u2fZ-e|rF5JD_Oh@;h);771RbdH{Dj{F2R?idOod{{uB7X?e2wEoh}I zGq5G7Cga>OIHM`daL&b}P&nejzz;7a^EfWemkOZs5q*S5*1TJA#OFalBy$taTY%_F zoL2}(P{jNsFLMfgEdHb711l36u(TN>Y$a5IvQuy!lema@vySE?a#>R7ugV9Sp2t~KB` zV9T-P@!o5sBX(DApV#H=hauB%dGO|^IDYlXxIWA@`&N(L_T2pE##zFld%|DQf9dkCq0^yD zXG?-G3r0@|xCDCg>G3yz8h3!jcpCrkMdK{t;Dr-%uG;b%MCQ$m^vdtRYh2S4LL9$$ z4TKc1r6JaHxqq!(ui^PMIS#c2T&x4fz2w{>nrzy=pmiEV=7X`Eoi-~zc7UlvZ*8nMC%bw*8>g0D**@D$-n<$R{Xe?GGJmc3s8Ot#C$$mI+`Z05oirlRc?h_t#s$hj4B18&GMBx&S*F=2f#HNlu?d)pQ+>gvXW4@ z>UvdGz?M?;=FO@q=MdEBsBt8_%v05>8C|d#2Ezkt?&yI;M z;0=0ufEER^J9}^t8~l|zBq}Wyl<=1USI3N(;5v}ei<7gRmZh2ARZ3bc+y9jspM}DeH2b;e;lf0c`~%mi>1%EK6tuYuA^ z>JV32Ni{>QmDD59Ze|(l)uh_Ih)sFb-h%~Uj`ix)P*lU}`k32bTXm&5hx2h&k~XLz zjjcGJx`5#d;h%HJ+YsADHfMu6-FqA!PhmGUsEIFUKrI$stg6DZ>!*yo`2C|mVI6wy zf73cF%?;W$mLC~jyT-tg9?jUKehjb`jtMs*5xRrxs4 z>gR95v2#6wA0q{ITO~*XZo#WSIGqSBv>=#iegUiJ+=;pg?9TtFQ9(C4*j+ZM)cM6! z&?Vr!sTynj4>i)i7&YEPll~92d)8Df)YZ9ShEGObH$2QMYgPq0X5@L@n+~?~%1TUo zGf+smUiW4SMTlE52Nip&2~({h5OU50EIM}+NWKSwHXGD3;bvAW9JM0_->ELJ;3&j;Mv$H4sr z_c1tj?_<862J?Jiz0403d{7MuL3C>p%!Ddlg}b`gGj(LkHmc#CfU@7-SA+f0Cf~2j z*Vv(rYW6dM*$J=myrjoyZ{a0dlK%q0cymU4wAknJwE4 zj)BSo<~`%MQaDDd!ZD~GY*tgV5{FwE*LK2FpOineGC$};RDtgWl>yVsoPFTQ!n}PB zyA_X$;3z-2B0nj{YzU=rjzeXkTN!EEP&pNq3*E|S^A5!BoQulwZe_T68WU>4c7Cmf zhoDDyCFjGUi-fwcNEf@PwrNx3|ean*7lZ4L-Q`=T=maO zzneF!B5y%uUTNOZl)MLrF14u4Ie$0rQr_u18DHl8?%WO!yj$^q#e)mNgGbPMu92vK zl?H_gihwP>J(jp;Ddyk7movK;czAz1bV~Z&{8<(G3o7BMXA2-w&Q-50+*p_9!o?HD z0b9J1(Ksw#!`w2n5vbN|2is=+33zqG=a^0?tmrw|%XtBRW7gx6yz<9;1GXG`37&c~ z@`HvVDzGJ8Oliz zzJ_ud#55yIIRkQzp_~IT)=w0XyJ_AVwQXC5Rb@@)*PzLy<;6X<%CnBGXW^yg-gK6mJj{ z48;awqM`VKm}DsaAi5e#EfCEO#SUVWp#*{e+d&{k8cHyTcMK&2#9TuO1M!xjGypN% zP#S@F(@?@eOfi%Q5R(lh5=4xlM1g2yDA8FU+Zsws5MVS0L`y?y!$+|o!VRSzAH{=! zU=lzi8cHV+P|_|Sx*JL&h#rR09Ym6$B!TE@D7`@RGL$|bdK*e#5Pb|~5{M;+G6jT= zyVERa&?8yUpi#%*d_7bOU;FSKN^^XD((3?xHM|R7A$#Df&X4d_>mGdh{sdo~E>J4(a0Rhwk_#Xj?kJ2cSpy)i2%A`3H5kjg9(2b#2+BcCpJV9bL=R zwjSX{bK#u={H>gBcj3()$FNzD*3YxM@Oh1Wc3iFJSbH4ivhY)CZ12e1&K+=fP@#wZ%J$50JA#=1guIg7=y4Jpm8*WL7`!Ef`Q^(3><^PK+y>rL@ox1 zPB3t^{rv>yeO^79brO05?V`j0QDVR-v8vcRxOyltVU$=1l$Z!g3>+oKi4qHf5);Fo z!-AoN_wtqu5fa{$W?71Gp@Ehr*An(5EA|o!?M#!j1z@~e*m)P zbr-S+Nc;;NlGeN58-2#k9`87DK^-B7md)T*K#9wT601?f23}Gl0)l^^iydqX=svBCkhbYnbpJ_O@O3pt1Lmlvh?YQxW zI?*fCYZkOI{7I6(SMPD7r(>M>7vz|6UHx44D4xwiZmJOxX(AVt7*+8czJgAWxKi8Z zu#q>_NI8ftx~bOpD4xSUyQwDl70>2L70-5@zNwz`40T^UP@)}_*a=1K*j;sOzZb$V z4c#D4Eqv;Hy9*ZH!f}0z*wTAy%D?e;>7F_)+U;$=ND8If3$_*iOM8uFl&k5_H8rv^ z1*|-#fD)S+^=Jjh7%NIVD^ZVDag5E1GEC^*v4@Lsq>$LN$b+1CQ)9ED0-F^jHYZAK zPLxSP_5q0wR3TpyGF8Zzg-jE2kdQ-!d{szI$k!wY0S%56ir0l4CFGkzjCupN2kxom( z%uU2|b}}Q;%;d}_v&Noi<=skBY8Gc5lZnJ+XNb$_-I$$m;;T)Fz29FCG?~n9pHubS z`~Cm@ANT%Mb*p;tsB!S9v8&o(e|6IZi{UM{!kT9MsF3}{nq!(!C^=CHS-9C5qn=<0O_O+AW- z<+2-5LF0lX78qS<3{7JBV=CPH5(PopS8nz5`_Zx-k@;_7M|zo7Xx(d_q1u6;oiGKa-7&O)#d-WNES4(argSaL~Y?2?m25 z=Uh^`z$^0Err2boKc77v`;ukP3_&<#cS-vM?nM(58qe0m+48QVgK@RDg26*Cxugn# z7pY7cF&F@58ZiQ23P!Q~!VLCuTtalHsyH6B=JIMDI~O$5rHTJ!YvXftc;A@CcSEG!=Cxol57)MH3}I_ryv`t)J-a7}$AzcJYtmax`f z{CEtjN?a8gJ_^%!bsc7}c8tKvqa4Qm9Ckf1J1lMt3>}-sGLsx}Nq6an21aUzM)U3r zwlS&G*gutBPlEbrQqN(TW1&86SUo~h7kPI&+c*~L+3fmQs7I0dRF*jo>N&&ek(#=d zcc-z9ZYhdNeWE%^b9 zrf%ll6MY-)T_NJN3_<8+4@cRIQU;54WQW}tfsrpvVkHho+|VR_q!6u*4B;&k*e*w> zQA%gA6QLeX>KUwLBGh3^btJ@S>LYlIo$Z(b)gQ0zD+rITzS+L!Ei zSaGSs0uoLli_>Y~z&M<~nS#@=a0&9C;zH#~mx4jweG{kim^{Ai3R;1Qa9U@?*gqN2 zDj_RHlmA!?l_z2(#r;?R1ZrbkGn6~^k}hH^H2g2BOVrq2(- z6e#!WhcZ%Q(N;^!8n4xeozF~S&t*L3K4|CvO(kHigt>o1>$qq_lZ^FtHm0g&WAc;@ zxx8g&m#2SX5R&$Qy)~~ru-%>0L&|dmjBAHpB`4=TnqiaVip+l0Bv z-eX#Y5l{G=vPtACa9j134N*0B{tiiF-J1oeJOPm(#$~{B zs4$d7E@E$cyQTfk@D+KC>|2{XDRw5+7q=&wD1QKF!jnjbtwzC#B+U~H{!XzvuspUY^37r zWK+1uL`+UpqQcBP+7x+QVQx-JGg|vu^5jW|z3iUJww%2Pz;gIlwSOOcS`L5GnH### z+HduD6s<9|eQm2h)^>Aw{cEx~8k``DWBPr2CckWOlM1iI13-!7sTigI{`dODm^?+! zXG6lD6txBJ;{QVZ=G*;5XmZzZU$>`^|A)R?bEqr4K>mAguaGvN2|3*v;1jqG@9e+! zz5aAsLn=XS{B!@T@BaT3+P^e=k{q5!hsir#o#Mzb2(kL4I?ZEgIy)mqb(kLVMyhg5 zE#%rVsB)8`W95SeJ{2|WO>%f)to=Q+5+8dvYo+1mEIK>eQ0gnn9%V@W?t<`DG{JlH z^tvcqU*pt!4b$>au!@N;{;#Bydb|HA^SSbWU?;(pz z`Y43&#;w!kIp^AOJ}9`PKZfwfKpYyS$m-Cv9Qp9*7iLAW4qar?{+{WMb-EQv6M-AT zhHrvFwZl7KOmcFy&On6`$bU!_*X&I>`@!vK%fx(H<}~jgVdG^M zIuJ_JbgEuy_I5$q4~5bqC$ zNn~_?J=)R`3AfS+;$9b!0v^440g|~6qBV*Ln*0D(O^PON3F|FRjUGS4>Ng9$(p92j zNv&-)`?lB-Av_A=!bO#svY^o2wmRNFGtdy`^30(oZE297%VWB>6NWwgN4Ztm zJ+2Wpo!CXhiQxflN*4p#2P`|zU&cI!pT@8!LDO|)y7mNGl9eL3gjw`l=2tI-Ba$Ry z64;dm6A~QMyaFMngTg_kWOe_})huh_-q3s!&t-iJ^V4@js_b0wAfcTL_4S>LsUB(< z|AN~7nMgYq8wp=`LJ`yVB_8G4_HQOzy~rK{AscUtjUa>S_GI^J*0U%vl16FU6EG(i z%}(zl9ojD8v8Qa8(AS+h6sLpa)TB5iieZ`$|!ju|vz}*@)K77r>`x-pL|LQ9fGk%2=&@RQtr}6OftOgtK0Zn) z<%7OnJ`PH2#(yHM^Fvx%q(1ETTivgJE{j-!0$QUL5ZTlUXpLGxVDti7!?vy%x2S46 zY}b8;r$+@^uH#O#SBNmSZHbnrA@Ow^5A zm-6m!_A~`N+lD-67kX~~;bO*6``}g2MUQ;N^`d9Ma@c8n!jD(1WVn!=^R0e2U-UMr zrYYdvHgvLgKUvhxbv9#5cN&foW$_FkM;1QTOb2X{#Yun-vX}{Imc=Z@7Vibjlf{*Q z`LcLFphy;5-M}YgaXa8i+W(;}4xk2j^C!4;qIz*E_!_5f`ZTli_c(Q4#p%K0IQ{4( zPTQ~HwD<#@Do*3H_CIhsN5fu(DSrAoS|f1*a@QYmns5TAm*2!GPR42dhrwV1fBp?L zIXOu=O1D??ezPC%8LTQQX;#&ZVDL=}OMkB~*RFYd4N~qY=O=;7|QPrsMq}L zK8W>e{$-Hry{2@5_GTZ!)BZ+Rp7NUVoj3b(?I}j?wA)a*ayuZ4`faG(xAp$x=0oMP ztcF3~?7D2DJ+MXnrZR}97d=X;kH@kwwAJdTcOLeO`Z!-teYWxL()!AV2K&0rTkSQK zTkVat_Vu;3jrQuz)STPUR9|afSy}%`_2zXCXJut!r2bQ6DTS=ZJBFQU%qo1qZuM`( z(SlqB^cZbTx!(Qf%J%&4a8nd z*Z`zmh!cnpc|sGAvZw;$qm{53NDt9AAg#w^Kzi-!0@6LX14!8~2hwaT1=6Fw42W-A z!u>!%p+JtwDLJBGNRbAS0x44<!kNU`4sq}YB11PH%{9_9QRkYWu7PqAJ>pK?D1q}=Pl({n7cM$OTWKIPmB#MkK! z!eullxeOpp%FloR#Q_;7LlhJlCMOgq=~Cbn6a`97$RLfS0LcjjPPQX!*x|>{x-%P8 zvxF2MA;n8bb4ry*Yez`=64F``QXYg9Hz9>dNb^BRYeyAJ^FGBu=vB?D8nelCz46ZXo?euPmLvcx_Q-bG6UA zZIvNDy-}S6LRvgRnv4JoZcjD@Sh73CXscxl-LEB6Sdb{;kqU)D^F>JOo!P*~wUvbH zY5~^J_DY7{BmAL3G+3Ezws^-qx5xT^xueDuzp@EWW&8vo!Zg2XT|EUzzY1T&P1+w5YiVExxBa&WFU) z6hl>+O0q$HvJqgO-Ia^~sZ{eo@*i61pJVHUl~%0Lf(F=(&V~PnukOwV(sf^bS~i4~ z1@Tlx>aTnai+#H6A4-^%D14f23ZIZlmUuEkeF~J2E&8}K1NcHz!PA^oF=@$l?=2C6kciVBJ>gv{3 s)z;RmeWbFns)ML7y^pu$qCfB*|w|~%6r#sKH_q)FL z`_}h;YprkZz4o4SoyK#W#+KCv>pN@CTMRqcTx+KBjVbK6)-k5<3I%}~<|eX3*7*1( zQv_kvGlC$zUny9F?mZF0&fEC$aqLHHv(Y}8ZH>t>*Ch!8Hx{yv7-#$v^i|EP4Vrlj zKR%ZI7!xw)4`+R`Q;ofetYGL0PfMa8NUfFDAfJJjWw*>wR_Y?bL0=erVvTVTgtV$}T`NW!!l5JFCAk`Lah)o_X2yS1u zWp{T|pRvKr8z!(jhc!j^jS_^5BL6O*9UWF^99qBz$0ZtnoWL^Ua%?ju2*OSS|6M2) z@}6=_l>*P3z}Cd28e1l?XX4r{?tDSm<#0=_0$+?KCNzO9jko8^5YX@88==syHn+4w z;5L=1AO;=47>N=1Y%q%FntZk+KGF7<@k-Ye&|1j-gNNcfNi5#!>I%Y8E6DPCPgW zCx1A^KC(PREyoJ9j-$nwXW;a93VS3o!2?6@J}HZIrD$Jt+~UQpDho+Dk~|Khj=^M{ zW@9$_R$OrW5nQa?bukp;f4GLzK1>#G{vNFpP6VwsqVHY$4R{xxcKkp8{_wa78?oqSLcpG(>!q^(0s4UIw* zcmahD1IKS*Jcss0FflvLkjApJr-gw~?!CV3j5xHlO0;V$?%)%Lvjf?WvFaFG!RAy! z_yGQd*}mRse$&5qd}<9o8QeHTLh%cJn<9rkX}WHyKO^-}8pn|tU!I0yO_&JVJw>qF zCGd_kJ&rX|i(}yvuv~|_nm1+$ElTFIe7(i~s24guWv@EpqbSm$+DM;?h)!n`5feLW zqq`L%(v@ixde~UkNW)B4;j)jJxzZZ6wC`ITY(+#%`^o0K@K&M68uU(IYH0k)UbC<9 z+C4Sz$)XXQAd6u=f&X;vFnGv>uf*L>$>XVEihST_atUt0ik?q~hPyGXYTEqwB;S8i z9u7-BV?fsZ>HU8pd$fSM!GBQvuI6`9+$hXVg4UrH(ya+Ti88!Ze(z`Uc&x&$`WJpp z_Gkfq)u8E8gfGeI+vqg;$E#Bu9flNFA8JKPmiA+2wzMSyh$Hk3#A))V$3|l z*f?CWii;NhN3sdODSt+CuRdihd@(J`d4WZYyUjz%t^KUr(ykPOp=+1LE%k))b;If5 ze9FD$Y)EiRe-7h|LF^i$=*rQw?EbX#>j*`2Cq#^*X}{@~b-JOr)4VqI-SfCvt2F*E zw6rZZlv%N~dlYQyvp*iiS0h6zL~GE_E0hAzmYpt$UpN#wu4rrk6vIt|?(i0W*na5# z^x)x&HTi40Wc4j^npkPx2)nvYHfQnbPg>E((tfZxX{dk7OxBP$Izv?+mYEe8&ql^KRiHHD*Z|h^4$Z} z9F;o6_k*&ummF;BGt>@}7LwCPG;{2^K-CjvTROmnf%`Y&X0zBkU&<@DB?Jv?_nDuX z)9>}pg>W&Aq(l78=&xiE_`O`GrjrZEvy~Xo0%5%Zt=f)_sihdR-DRIuwlFEsDi&~qh^%~ndE!(5c z!V`5E8aCiaxlvN)VxuV_TwJSC>hxepq}PVzB^P~P(*R^{C8x@e&Z`XVyeI!1q%x#q zDya-9omgc^*TDvudwNlfI)Q2Gls$#DV7sSRClHHOHS-Sam@a0jT0gBvQHec8N%EGv z6|D{Zr1=jcvGc61q$Ye7HP^FmOA7CHV-~iY4~6J*`q1smJ6Z`sX_}5MSDIa3+kus8 zOEw)?ftDaWK@QqERc#mF3zS-jImaHIku~pSUFq%?D+>~WA+tnIw=YLq+Cj=!s0VR- z1PlR>*_Q#5M5@OX6)gE1ST$)sackK3Gcs)7j<*IQgf8igYEb!PR=tpoDs@KfBqCfR zDoUq%suv~%C-!YHyM0rr={u1g!uZ@i(+@Rp>^srPt?3{Hujz-48e!LoIwB4Zbf{KD zbZ9zl*>d(WIz@hrZks^Ub!7UX7A+}A84SJ<3i&Q`+l5G^c7&KoEN$j(i9OUD3MHn4 z(!of{>-L(3Z0XFG!#Sy!vHqC_S@qB=n-n}YXp=&+zDara5tx~=Q2aR&Z^H_SfvVC~~OoMd}x_V|NXYre4}+1kAO&CTDe!4egBZkW+R> zkoBNFO3<$;sEKw)@z4##guNECfIU6S5e7%>HRr7{JJgsILEiu&=B&wC{d!E=ZDOD# z>oKn?G0#!VFuV)=V@zxZw3rjw)3Y66=*TQFx5n&OW0FTLCYWop%RGgPlySyLctsQZ z_x1a2FA#;W4gHpy6Vi0NAn+?^sW7S4hL*pi&tK%?$(R6X6_HFQojiibY9b%k$t?ao z(v~(8xmqV3{7V{3Hrrq3uv0*N{_3&F+E^yB{xU}xl*|$v7e#rhYgV{OSu^UTjRnl= zIgXU)Da12pP;V!=8SeEPV0j_<7e5TN&2bq=){`SzSb9gGYJ#j!^1I}q>aR%b3htC_ zZ%mw>)Ov1Zxb)QA8mBT>IqC_yQ9Y4Mt)A4}sFz+(i`XmW6Jk5ahQi{VSE;8(>}+|l zooL;CA!2Io?_h;rE}ALhw7es>7}!Xy)}38$bQ{Dy)97bK-NdqL!(;o1x9tY zAEUZEJw6`VfvEqhM{Ox$h4WB6G~p;7@~94~UyVvW_2NO)c_U`pABX3b&+*i-q2=x_ ziii;Orn^e;t?airPWVdt6b{AZD>rG)K3{p#Dj#xPQ{*3JW0rfAGRb2Je_W2t6eO_nW@INqg~zx<^38;9|da9Yq#g zLIhS81P5VhpJseASS#{BB9zovj0n%}MPXE2_1E_K8~X9O(hiN#bjjqQeQ}o;H$}*n zc2fyC$BHF;Pw)|-TKB>?&-)A?QdAo*VM?_U!+y+!{_l8hbozR49I~_@n}v54x8HUj z^>X`c6@-n~40UG}|8BqP-@To9#fj(U{*yL%vKU1C;j*|7Fh&;l1IEgt3>YVi2LXAq zco;BV7LNe(W$}Li6J+sYK!GfN0+=X^J%C(U{0m@|ES>;Nk;PMh2wD6b5Gjja0v?e) z;%Q)=ES?3dl*My^8d*FK*eHt}@Te?)4XBmHOMum~_zmD;S-cFWmc=W8#jp1Y9MH;ea)=7y(!-i-Q2`WHAab zSr&%?GG);UsFcN60DRj3OJp$)@LO5512)TIBH$reOag3@#SwtzvgiP;m&H`TZ)DL4 zaLHl@V6-e|d4M^xI1&J-F2G1x9IZ;Z0EaA&Ri!)tlF0`Y%3=WkQ#uJSRTc{YcgW&Y zK#?pK0q&H=VnDGhP6ter#TkI<4igdKjl6Kj0MkAx_R?IHi1y)4%S==}ma!mAz>F9+v=*`!h~wsN1>@ zoQ}&lUHKHJiVtww{1Z-p>kNekOPr#=bpr17h+BHUPqoN3B76*J7{M#0Orl z$uTlVZSK_46l-t+jw&2=IJV(<3CACB?8ecJqX)+s9N*x$jw8Zh4GzPR>Ighjn`rR# z;u{4V3ts{0X>t*W9h)%JZ4J_1od!*MYPphz5@@S3)=tFjWamK`9U=Lx$9e49J)gp`a9ylAu5olmZk5R@VJ@ znCJ3p)#rymY$JpgAmtdl#u}uzzo&qdy9lJ*?gs*drLdzhuLM%Adw`Vdb|8(t0Z3y{ zg*`p;{sg2kRs(6wE+D?=J|wiFL4!Mq4m2snkO4{na!!sYDRN9fC{ePd#3?CCl!A~$ z>Prby5K5eU|7i^iuRrej992PX2`N89%9oJll&Xf-j*!MnNb^8Q;~=EG2`NoNnh!!6 z7gZb07a_imD`?jc-!eT4;m`=DhFL&Lz@_16jnCC&d|Fomq zDJ^IQ=8MKj^F>JO{do;r-&hu@o3*j7#<#O|iIDvMyc5aFWV2Vc%(>Y&@a>khrUX+h ziWfgYh%!xEwXB8`q@OLYVe58-apxvx_ok+nYeOKUe0J8U>m~tdeLCvc60g%>V_Uq# zjXUeutKR%UJ2$Cg*|{n3rT1)Df_|qUBp-yd_HFFs(<|@#RV}P20_p$RN|)7JgIH-r zPYc?{wl$ajKd~+}FUZnk)oY_6)MHQ;slW0EnERQEUz9L)ru1pHDSbjJS>nkF$&@G| zU4q1uQJu&(*FSgj)Um{ diff --git a/iso/boot/asuro.bin b/iso/boot/asuro.bin index 96cf75a532795bac58ab2b26945ee3badcfefe89..a9d6a7bb8dd9065b99743d5e0ff6e665f74019e3 100755 GIT binary patch delta 7750 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 diff --git a/lib/PCI.ppu b/lib/PCI.ppu index 26ee5a2c82310977616613fc49b70ac119ea1a28..0eb8253b3016e22db50fe68482cceaa37cd99271 100644 GIT binary patch delta 19 bcmbPPHnVI(1IOmcGxR4!8HsP~m}mt6S+ody delta 19 bcmbPPHnVI(1Ba!`riGfF70w$wCRzaiRL%%k diff --git a/lib/console.o b/lib/console.o index ce825e5786caca81274cfa7414b7b5c130286c6f..ce299f54504bb6ef5e8b07f0898fbf9324c632be 100644 GIT binary patch delta 5446 zcmZ9Q3v^V~6^8e@!^|X1oL!fU?w#OvMRXxtQ><#Pf-+b&dO zmfB&VJoALD2@NtE?MtDaW{W)*>Sx}tnJN9uE?b_G-SK@V{fJ)9E0`E)G#hPb=Ib2rBvTjP#xp5u(o zOU>?hE_TYjarY6=eZf|yX6Ids^=^r~&w6g(d1LIN)Ex7peJ(ZJ_p&ju$Xs7+be+-i z2YgGMxUWat*DLBiX30t0ii)prt(#M-R`$_s8?rNV&xL9uoVx8Yb3!T?p<^EgTeI)As{Z;Od;_g#X z_vWkIU&q~N={CMCK4V|V$T!>Vu8e+e!1oTq1F23hm4Eft&I`sWszuBHbKhPD`8%XK zS^g_go8nOo(Wry5s1$!1av`ZdkQU3iJ05)`8r_8G>%62X{$!r|O6-|29qpFG{WnzjAgXRV8p^l4je@BLMkoUoGo)b>8E5f-Q zypnwPRFsV=A6gNQ-);XAt~T>*M(%M_ZNJRDC6fgtkB;0~TwNR)T~;k?ZO^=j`xvcN zSFB${r_&hx$cw*gXlYrcmKzL-WQD5bLcGz{;#3mPw-!a{y0I0aNkZR=#F-0mn^4ku<=-zb3Qi*r)h^mXJCQVV(oQO zy+k#upnpAd1N_&jenoZ6{~k2gd7k=Ds*d^3LvwB4p#C(>0cczcH59_YRlZquAJsAc zP@Oawon(qnrb2T@@<;7L4@SFz*3VmmS-Va@_=SKoZj>AxefLi>hTcD35 zXu%|@!r7OoKO6c(Xr6@ey`Xnv06a2r#fo)OQD@*cvX!1l9UXr(;NeyQOIzvnt@PGb z`rTIgXe<3G^mGi0MO~~tmZ@G1GT&P2Vv*-nzeHUkvK@38@CFSLk)0s*2g)Ye$BKNW`U~nw zBIi_Jpq_#sUNh_$1f8i^CaOD7*NAjgT}b_a$W5w?d@@R$X&AX0hA`kEk@3`ZB9lp6 zubIjPYOhmWuiOAS^F(}Y5WmDeaOW;mS!M)Dl$X$Y|wQc#zS5W z%av=CzXR!iUiB7bBkh<;Z>iovjkpg~|5JIIb_}Rl{pZyFgVL8IgS-7ow7ms2jw>9o62{U`;_;Klx z>y+M-L;H2r?i*2$RrYjdKS1DgmzN|c@{7UJ^^5O~8l{YAF zRgP6oRxVLKNw!DFKdE7d(igPP_AltW9M4HX2uhqoV(zXa7mGZl`bDx1dkNJ$$Xa`@ z|Bdbnk&9GdHs{C?kz5kz>q#ONx6cOax=ih3)IN#JP?#9}`HNXBzn=_JAaAPOUEm4Fo<;L%sduz)mi@@1cVAI9Z9sPokX9Np!zRjuE-6 z_GC_J*z?J$C`+e!54GP;B3}iGa>kJ;r$+q`ss9nsK^emab#jsJbv5rLCy4x&L>V8F z@Hdkaah25mo!Z-S!rv{DrV~G#MEngT$|xdHMnvtE%CRJde-G$#Lf%J1J$5oAI@FQ( z;v<1XAy1P?yqQGeH^@OEZ>xU~i99FBQrup(H>>@BWPkj0L4`=f=La}1kkDJAPm6d< z6pnHR6k~6w9mZ*g=_KM8k++L1RsU1uYLOSoGE6|VH>!OMe|9E=y6`lph(QVYmCqT7G=TcLJt_YF2yn@QMT zan-StM8ZQP3OP=qkk6Dqk`a-gNOVlXZQ_aeInRDQNqjEeM8ZE*?ITF+D@Uq*3TZ{= zD&1vlAi)OZb`sCGKa)swfSikMyXvn<>;?X#Iw=_%8>SQz@%be76kS#KATf~Jlocel z1l3W$D-+njC9TnbIV6(b))qvi6(sbdBnqulZIy4Tom+GIo7Db=vPJog(ie*6>);Xh zzcU-p;NhZ>L+n^m5>FV@rXCI1m z_y5oi-=}tcq`-eNAMXvj6Rq;=Fgxs*kpi>Orj{1^yWE23t(_IgvgM^2{%fJWw-ZYX koZLQkS!s9whQ1=(>}#b3+2vR`{I?h?#RpCFYmn{#1Nj%DZ2$lO delta 5221 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 diff --git a/lib/console.ppu b/lib/console.ppu index 3eab389a859330903754afb9002b2cf8171b72d5..b46f9f8aec4e42925a8e9661bac92096e550df59 100644 GIT binary patch delta 3303 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 V!gP@@*BPS@Q|NQ}WfW7rITCA diff --git a/lib/idt.ppu b/lib/idt.ppu index e551e4eba51680d4111ddde9aa64429b37a54168..6466255521c3de8bb5aa3c6950e4b4e40c9d5747 100644 GIT binary patch delta 19 bcmbO!K2v-`1IOmcGxR4!8HsP~5ab2`OXmj; delta 19 acmbO!K2v-`1Ba!`riGfF70w$w1i1l60S4;; diff --git a/lib/irq.ppu b/lib/irq.ppu index d25ad090d7c02f43ffd959d33ac7948894046b96..73994ff5ad9c7ca7af2b2dcf138d4adc847ba8ca 100644 GIT binary patch delta 19 bcmZ3)zKDH71IOmcGxR4!8HsP~kYWY^OBDwJ delta 19 acmZ3)zKDH71Ba!`riGfF70w$wq?iFlF9zNK diff --git a/lib/isr.ppu b/lib/isr.ppu index 2af896b68fc107fa4ef6624fb15ff31e36dcaf2f..afc20e077c0292b0319898303ee8a434b56f2624 100644 GIT binary patch delta 19 bcmX@acZhF7KF8+CGxR4!8HsN!Kg|XJP{#-1 delta 19 bcmX@acZhF7K8K~sriGfF70w&WPqP64OW_B; diff --git a/lib/isr0.ppu b/lib/isr0.ppu index 2242a91b08582c6264b5cab16e04ececbcccbe72..2e42f2e364907141acfa24dd9cbd49110806d0fa 100644 GIT binary patch delta 19 bcmdnXzn6bP6UXMsGxR4!8HsP~GG+$=P)P@9 delta 19 acmdnXzn6bP6NjbBriGfF70w&GjM)K8V+Tb5 diff --git a/lib/isr1.ppu b/lib/isr1.ppu index 655ae4b47a1b5133ccf287a865af3db597dae612..8a1c698a677f2b1d4e6cef900810d7bb110aefaf 100644 GIT binary patch delta 19 bcmdnXzn6bP6UXMsGxR4!8HsP~GG+$=P)P@9 delta 19 acmdnXzn6bP6NjbBriGfF70w&GjM)K8V+Tb5 diff --git a/lib/isr10.ppu b/lib/isr10.ppu index d9d95147d8dd84cb7c20330e02247bb798c97c56..feec528caf1d0ba26d251a53273a3b1755104d61 100644 GIT binary patch delta 19 bcmX@be~N!X3&-ZkGxR4!8HsP~v111SQdI|$ delta 19 acmX@be~N!X3x}o3riGfF70w%b?AQTKZwGDw diff --git a/lib/isr11.ppu b/lib/isr11.ppu index 93949e6e6e3b49527d620a0b9d6a52814673d651..61e70ab88442972f6474c15a893b625ac883a434 100644 GIT binary patch delta 19 bcmX@be~N!X3&-ZkGxR4!8HsP~v111SQdI|$ delta 19 acmX@be~N!X3x}o3riGfF70w%b?AQTKZwGDw diff --git a/lib/isr12.ppu b/lib/isr12.ppu index 5e586035795fe578a065919d8a6ab2fc84b07e31..6069a03a146c26a65f630aaca8cb68f1c799e04d 100644 GIT binary patch delta 19 bcmX@be~N!X3&-ZkGxR4!8HsP~v111SQdI|$ delta 19 acmX@be~N!X3x}o3riGfF70w%b?AQTKZwGDw diff --git a/lib/isr13.ppu b/lib/isr13.ppu index bf18373b1f365aa93401b147cab1f825ee8f84dc..5504373a3ba8336a69a0956c9d63c333260f4332 100644 GIT binary patch delta 19 bcmZ20uvTC~3&-ZkGxR4!8HsP~S;!6mPbmky delta 19 bcmZ20uvTC~3x}o3riGfF70w%b7P12XN<#;k diff --git a/lib/isr14.ppu b/lib/isr14.ppu index 30df4681b58f407ae74a8300e09d1061129dd6e0..7a2001389a5e95e9e47bba46c788ced0387f1dfe 100644 GIT binary patch delta 19 bcmX@be~N!X3&-ZkGxR4!8HsP~v111SQdI|$ delta 19 acmX@be~N!X3x}o3riGfF70w%b?AQTKZwGDw diff --git a/lib/isr15.ppu b/lib/isr15.ppu index 41d91d27a5775a1f7d80b4cd0d23354cbb147fac..397fe8b35fc71f4f591b7517045cdc28a3906ece 100644 GIT binary patch delta 19 bcmX@be~N!X3&-ZkGxR4!8HsP~v111SQdI|$ delta 19 acmX@be~N!X3x}o3riGfF70w%b?AQTKZwGDw diff --git a/lib/isr16.ppu b/lib/isr16.ppu index ebf61c0303a51220ea6f7968dc00d3dc3b5c3656..5be6088f74ce1ee406768210477a5c2d1aa74276 100644 GIT binary patch delta 19 bcmX@be~N!X3&-ZkGxR4!8HsP~v111SQdI|$ delta 19 acmX@be~N!X3x}o3riGfF70w%b?AQTKZwGDw diff --git a/lib/isr17.ppu b/lib/isr17.ppu index 4c84ef9fc38cc4c24d944fa46ac136a09b97c127..42e1396d6730e7b8ece0457d0dc3d7801b86bdb4 100644 GIT binary patch delta 19 bcmX@be~N!X3&-ZkGxR4!8HsP~v111SQdI|$ delta 19 acmX@be~N!X3x}o3riGfF70w%b?AQTKZwGDw diff --git a/lib/isr18.ppu b/lib/isr18.ppu index 0e145957b7026df98a06b51854a24a6357d6face..8771d06cb69488b6ed9dee3a455f0ff103bab892 100644 GIT binary patch delta 19 bcmX@be~N!X3&-ZkGxR4!8HsP~v111SQdI|$ delta 19 acmX@be~N!X3x}o3riGfF70w%b?AQTKZwGDw diff --git a/lib/isr2.ppu b/lib/isr2.ppu index bacbc6f281786ff80b9bd0c4e9326395c3798974..de57e011dd7995ba3c0361c9157e1672840483fe 100644 GIT binary patch delta 19 bcmdnXzn6bP6UXMsGxR4!8HsP~GG+$=P)P@9 delta 19 acmdnXzn6bP6NjbBriGfF70w&GjM)K8V+Tb5 diff --git a/lib/isr3.ppu b/lib/isr3.ppu index 746cda7b7e9affa9605e8bc2a84be6c150e98d9d..581acd46f7166728054cc07c68f945080c355a7e 100644 GIT binary patch delta 19 bcmdnXzn6bP6UXMsGxR4!8HsP~GG+$=P)P@9 delta 19 acmdnXzn6bP6NjbBriGfF70w&GjM)K8V+Tb5 diff --git a/lib/isr32.ppu b/lib/isr32.ppu index 009ed6f05068a6012b44ca31081151f8f96c8cce..efb97d27373682ed25f41be3d2eea54479ffc4b3 100644 GIT binary patch delta 19 bcmdnbzn_0X3&-ZkGxR4!8HsP~F=htoi)@cFNHH)ls7+MVXXWg88(B9o zbSB5<$usmPL>Y-s{HDRtIH@heYOkioWHrXQf*d8OMY)-Ii8-3)$4r=n5|>Wi&sf8_ zezFadKBLIy9HuFZlLMG7c$hgD8JL)X#xgK6Ok%NNWSwlwqN6Cz2;>4~fKC8nBqfXt ztV}>5iOCO`#3nbeu(7d%R4`3$V@YAup8T36kxvxJXUk2>%uCB>U{snM#VXG)1{7k? zP0CG7&rAl1b+BqPif-P*%EF`%l46t<29g{hQ1>!0DzLEv1sEiOm{C*&NU~<NgfrbBQoV6SPWDq16CygB!RJ=Tab~TpAC0DBg4wc HdYq~NA3SA$ delta 335 zcmcaAdRa&@ARyGx*p#K2k%5`vK!6g1HYWoEgIO&rhhEBNF(6ZEqM|-4&zskgnG-{2 za#*TtTBzAs;XLu121i0#(#5(6q0f`m80SvD!C1lQIysO@pHX;oBhwVd$&oBJlM`7a zC$D1>VHBG@ky(t5l^JLp<78IW6h_s_S*(eCB0xS{Zc=7mT0R4#;^dpG^8BJeA@M4!W@9!MCSggCZc$+%$(o&;n3)HXPUA3DWde#6gXFXsfusnC3k4D& zHWLQ}g8=7bM^@>{w>bp36@g;PAaS4@zH#_StALnVAeU((>C^?X%_b{xxvGQAQ~;?F i1qB9=innW!pQ}%NW?p6q&oG- zX&0i09wefND2RND3hJq+AP|D^A)=?C=%JU&9{TRTe=9oUeCOPAzI*RE=l;7@wNX_Y z3XQb1wOcPSS?FcRM{63<(#f*l3sof&i*BwK2|nm5W%@s>hg zNqr`ki)W@#r^l%H4RU)V%Y**ODPMRdlABG;5qnj$Ct62J%6q8%VA!(-s6`{$Tq128 zOT4Sd-aw9M(n=p;s-f&I1zHp7M2^^>pA^%lVzyjnWpNloA^RDz8YsIffsRxpJ*|(N z>LK1;V0Qk#4y_fD12W11@x>Xcjv1~TN!LHzZbi)4 z8?<4B!X|mccH*!bw374DNLr6(reZk4l^+RHzqvUC`}dVVC;n;t(|#%9xVEz?V18>f b4r0C`7f6n1B$b+sMA34f(9nc9r`7)fZUCDT delta 1073 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 delta 4578 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 delta 539 zcmezHi1EWC#tE{l#ulc=CL5J}Ss|>+3Pxg^yI6lSBXJjS9%O=Z#W&aTyg}x+^8Y|^ z#WpYC+|D%FUz7_;L#gN=bQSy-dinYahNcD<=3obatp#h9mqXTCtEk1eIbZ%0Ba(5o ziZTe-iErMjqJ`j!ZT_Wx6v36)d`DXlm8;1(`L7xOWEmEr&1$;)82L%mlxRl*6ISXlWyAlLikX8^Lu*^WJ83U7b3Xgo6o!bLsop= z4QM9FNq3m|HY<1^M>dz)mj|I!Y_nFtNn|cx$Uv^-C)^D2%?tC+GXVgfXqNi` diff --git a/lib/libpsystem.a b/lib/libpsystem.a index 4dfef3aeeed0029b7bac8900eb96c000f27ed2dd..4599158db5ed86f5388f4af76059c48c2c2f13dd 100644 GIT binary patch delta 3337 zcmZu!eN2^A7~gY)fqHL(+P#`1Zf?y*373h8Cdepqe2C<7QI4T_nXm$GAEwh>__0z~ z!8)ze2MJlsT$ae0oeB+{io1Y9Gf@%q&RmfuvZX*8Uw8^T}F5*jZlB&okRx-Ck#e!CDCp~#xtS;x2#Y@1fCvS)8>1X`~`z$8uFX$(}K^Hr}_;}bt z5?|ECLQ6*R#TVK55|-Nd5|(OwNhOMpdHor{GE2|u{Af=xZ#0Y5tUP4~ltpS*-VteI zTgndssi<^n7eSlPLKcZx?PUX%YCi)b1C;}EP3Yxg`X*}b4jX>$j1^-st54du^RoQ4 zJPacFYb7J8+Z@H7ShpWyb;+5EL#23FdQF6R6b~!jWHZ;lWivn9YBLYKV>8dyT1-F7 zCF+>Ck)PxeOe1h>* zAn7#=*}W!93N+}UT{fsXJCDuV{e{WtL3QPkdAqww&21NpZ|>9sL(WoG*kV~+N(x)F z3rb_S`;_n1?y?qI^;&3O6iE(DieiBu?Df!kL+z;*V=im{X;(PZesC1jdw3KSIywp( z?hJ=oj$0Ade?p6o4gP#molwNxf8wSk2sYGr&1&8|W0<0eInR}uI&rgiLdq1aqLdX~ zY|^g85r@iZNq8}L6dA7?vxs+ zx~@cou-4x;{~ff1FI(ORw-m$zBZ%m2f zOQ4X2o{j)o{W?_AEzzL5FmBBcj|2VoFOPN6DKYR3Z*+kR=%?erA`;P3V7{QXjExYAVn}J z(#WggLA7L&hEm@6Fzi(KC;*B;w{%@I4Gsa#nQlFl+;;zTb6XW&cY=xGuAHfKmg4j9J*nUU+B+9qJeV?S%6K>QyXP0@fVyd=2Y!8?iHVbA!XM)inQ-2c z4vsleWVCsu<^AQ(1#m?b3+kU1JO>N;@*J3?t^z?`mk)6f#*^$3bROWLXTb90xH&FO z1Nv(@ILT$_Sngc{6U`Xp^m3Eb!@FL9Xw!D{p<>uz+J1g|IanJjMZ2H(mVweX$Ad)a z3&c1Pq>lN`7ol4}k*Lu!KBEfMJ17B)fTnpq{uRTQqYhN9h_Rx3bPcHYQD~=vm#sCV zCIO1T5pC<)>rgx~v!uMu0@u81H^C9{CBYYO09Di)AQ%JqO!$jN%8&B{JnQU^7an@Gk{Mh?;fFd9>5X*NGXoDE-&9sMH#{c{%Y#9PU zj?Kcjg2wGeU>wIPXMgN4(yB!i*A&KtfPMwnnncdDu4o1zo;!-wv5=>I4WFAb(m;x! zY><5N9;329r|_c8Xl6WIcTRsTcfHyW;pU?Jth^7b*h~w3=i?0R6*~ahLiH*<6@$C zun*M7s+{FG`>lR@j_w|#I?h6dc1%ymMu-W!0DJT$f&(*l0s3S{7X5Cxa{OjDY6Hi3 z&!KeeSrvbowSlmoHx7Y%$HaHOpCZsHYlHN}MDsVVLhJvC4U5;$_g^>qrf5-qia@8f zO~XHCB!Syzo^Y%b$L|>~C>{5{?T+VtM#FOR3CWHtW^Zxx2WL6fTWlu(t0bo;hgGhi Sl5;d8!=b;1yfDKNa{LE>AZ(!k delta 3337 zcmZu!eN2^A7~gY)fqHL(8dr0~&8@j8;W9o%6J!)QK16c4D92E|OjrT857TKb{8*{0 zV4c?KgM=(*E=%OhPK5?e#a%$5nW%_)XRb&S+0;x^={e_p&--!d{&k+;dCu=V=Q+RU zIqz-RIId;mxcb=eX?+AP?PAvUs9?!eYRXg zJwvd9PE3U9r0-S(^FMMGLKcz7<6R-pq_iREI~f(z%@~9%N+C&W{1&Npg~p!=22ZanwF{L+#}8xmit) zTe`9>Pj)Le4Ij3+k(!(W(wpDS>T^$7yadd8^LLn@J~mLe&tj5+!U5tPap-P zl2N;m-D|d_K!YCIWrJ#R^4YxIUznV3R98Nkx4Vbb-gdFLmM%Ro!7g{qWS#E@FPTf$D}~_9IsNZ>xaMe09daWPn*Zzm}+9Uj*ezSA+MVbO)4!4qzDE? z8hLdbsFp0!P{x}chMnpj1waw#k*;fIz#*WyGp&b`+wPxfZmYuUi8nFaRg@VYoCTq! zM-h{?$J>*@QhaW{Ck@;{`{sg+2U5mN8SjRE_x$1!KC_+vaQ3(i~8 z!7)dQjJB+_yuaMJ0IsNFLH*Oh=U^dUo(ogdRUpXg3m`Vkc#_?M&J8^H3|O9=7>-NR zf&N+nPIB2fo_m(SWHSaiz1$>q^X?ZQ(zIjva0zTMZ680q9ITC%qCLR-%0X$H<3S?y z1!9~4Qpfz}i_oK=NYrRKpH&U&9h3k?K+`;*_=@4nQ3tA4#8}Zix(3wyD6~__%hwuG zlK@5Fh_?0Ybts;wR4H$>z%{SBO>jhfN$|xRKozw{h%-vN90N{}<-)7q2K7V=RGm~T zDW~mqsBH0BQgVMJfA3vTeOS(NoV67>KlZ*Ipa{qeMDv{l+967NGwmUl^FKcdS%yG> zW3w=>plQ1i7{{^7*&jQMv}zH>His}FpkKkYW|1?kE1Cg_=Z<1^Ead55!{?@qG>{@F z8zi5)$EfTNIaKhXz0jz83!9?dNk)Eg@x*;bNZ)ZIXdGg?#r%RcV_p)~9W~A#9-l diff --git a/lib/lmemorymanager.ppu b/lib/lmemorymanager.ppu index e37a17fb5f426632345499cddd034e451290cff1..dae11634669c71d1f83c7d9cf311746fb4c28be9 100644 GIT binary patch delta 19 bcmcaAb5&--Mvl#sXXsCeG7{goa}F;6Sy~8x delta 19 bcmcaAb5&--Mh;7rO$#+UE1Wm(oWlzMRCEYj diff --git a/lib/mouse.ppu b/lib/mouse.ppu new file mode 100644 index 0000000000000000000000000000000000000000..3362aef0e8fe29bf64e9cb970f8e3e5d255389a1 GIT binary patch literal 1258 zcma)6y^9l35P$QM-Q*IDr%BL45srXG#IL(UEAj3;Fq(M5Bpy-lOk%{vy=-uEeiT-A zR*E1N*8T%l3W8W#*$CQ*m7Q1#@uI}}%}bVzjW_V#oB7SW`FgWkF4vCE&PN}Rim12c z8TBrz)Q3+${M9$!b6Y8u-~|FtWUYG}ew$4c)qtkJ=_x@EbsPS-yWi_)fkkZpp5JS) zKmGbMd%ODh4vb?huj6}e`{k2ohaX)!wi{Sxj;M%pOCxZV4dH{63PvDp zMqp{7SX^9KI+we+QaJs;j8M@5UU~*YXLlQ|n{948xBb%hsyh0=08F*qn< xKQGE+gpxUvg?Ye~86Q$NShZJ-@Nvgm4cBdQtRQ_-9mYX4kUvAkNRvAa{{l}EiCh2x literal 0 HcmV?d00001 diff --git a/lib/pmemorymanager.ppu b/lib/pmemorymanager.ppu index 760e6ecdfbedaf7273350d1f4847184548da7b33..672ab09501dd1ad1428335fb646257a3a017e1a0 100644 GIT binary patch delta 19 bcmbQGFiT;=G>*-aXXsCeG7{f7uZAB0PmKq? delta 19 bcmbQGFiT;=G!9FZO$#+UE1WmZtKkO#N~Z^! diff --git a/lib/scheduler.ppu b/lib/scheduler.ppu index 9d1b4d67b5cc12abd364f7a389bcb8cc74705392..372da0c7e6aeccd36aaa6872c831df80f17cf65f 100644 GIT binary patch delta 19 acmeAX?Gc?&&9Qm%4E+gFM&cWrIk^ByX$IW@ delta 19 acmeAX?Gc?&&0(psX`yCkh4aQ{PA&jMg9f?) diff --git a/lib/tss.ppu b/lib/tss.ppu index f3bc7109ff72e1a99cc78f27c1b8539df7671cb2..f72485b05194d420b3f25b4b4d0c3141cecdaadb 100644 GIT binary patch delta 19 bcmew?@mXTRERM~SXXsCeG7{go=pr`&Tk8n8 delta 19 bcmew?@mXTREDlSRO$#+UE1Wkjy2uRxR|N=_ diff --git a/lib/util.ppu b/lib/util.ppu index d2b2d8b1cd6a1e35f4cd2213c73c33712b6c315f..15c6e0842b93e3fce668ee602fba5d4bb5df3994 100644 GIT binary patch delta 21 dcmX?Ua?)f&r6|Yd$usmPL>Y;1ZWKMi0sv)~2$lc< delta 21 dcmX?Ua?)f&r6`A`%BF>yofXcT8%0mB003Z)2y*}c diff --git a/lib/vmemorymanager.ppu b/lib/vmemorymanager.ppu index 497c4f6d2ea9bb19da3ec84b0d8df26be3cca782..ab71b462b48368f39b7e352c9bf10c5d635a6eb8 100644 GIT binary patch delta 19 bcmcbheL;J|Mvl#sXXsCeG7{goQ(P1PS)vFQ delta 19 bcmcbheL;J|Mh;7rO$#+UE1Wm(6c+^mRJ;fC diff --git a/src/console.pas b/src/console.pas index 749b92cd..95777ce4 100644 --- a/src/console.pas +++ b/src/console.pas @@ -77,6 +77,8 @@ procedure writebin32ln(b : uint32); procedure writebin32ex(b : uint32; attributes : char); procedure writebin32lnex(b : uint32; attributes : char); +procedure backspace; + function combinecolors(Foreground, Background : TColor) : char; procedure _increment_x(); @@ -440,6 +442,14 @@ begin outb($3D5, b); end; +procedure backspace; +begin + Dec(Console_Cursor.X); + writechar(' '); + Dec(Console_Cursor.X); + _update_cursor(); +end; + procedure _increment_x(); [public, alias: '_console_increment_x']; begin Console_Cursor.X:= Console_Cursor.X+1; diff --git a/src/kernel.pas b/src/kernel.pas index 473f251a..97a45b50 100644 --- a/src/kernel.pas +++ b/src/kernel.pas @@ -28,22 +28,28 @@ uses lmemorymanager, tss, scheduler, - PCI; + PCI, + Terminal; procedure kmain(mbinfo: Pmultiboot_info_t; mbmagic: uint32); stdcall; implementation +procedure temphook(ignored : TKeyInfo); +begin + Terminal.run; +end; + procedure kmain(mbinfo: Pmultiboot_info_t; mbmagic: uint32); stdcall; [public, alias: 'kmain']; var - c : uint8; - z : uint32; - dds : uint32; - pint : puint32; - pint2 : puint32; + c : uint8; + z : uint32; + dds : uint32; + pint : puint32; + pint2 : puint32; keyboard_layout : array [0..1] of TKeyInfo; - i : uint32; - cEIP : uint32; + i : uint32; + cEIP : uint32; begin multibootinfo:= mbinfo; @@ -105,7 +111,10 @@ begin console.writestring('Total Memory = '); console.writeint(((mbinfo^.mem_upper + 1000) div 1024) + 1); console.writestringln('MB'); - console.setdefaultattribute(console.combinecolors(lYellow, Black)); + console.setdefaultattribute(console.combinecolors(White, Black)); + console.writestringln(''); + console.writestringln('Press any key to boot in to Asuro Terminal...'); + keyboard.hook(@temphook); util.halt_and_dont_catch_fire; end; diff --git a/src/terminal.pas b/src/terminal.pas new file mode 100644 index 00000000..6963d133 --- /dev/null +++ b/src/terminal.pas @@ -0,0 +1,52 @@ +unit terminal; + +interface + +uses + console, + keyboard; + +var + buffer : array[0..1024] of byte; + bIndex : uint32 = 0; + +procedure run; + +implementation + +procedure process_command; +begin + console.writecharln(' '); + console.writestring('Asuro#> '); + bIndex:= 0; +end; + +procedure key_event(info : TKeyInfo); +begin + if (info.key_code >= 32) and (info.key_code <= 126) then begin + if bIndex <= 1024 then begin + buffer[bIndex]:= info.key_code; + inc(bIndex); + console.writechar(char(info.key_code)); + end; + end; + if info.key_code = 8 then begin //backspace + if bIndex > 0 then begin + console.backspace; + dec(bIndex); + buffer[bIndex]:= 0; + end; + end; + if info.key_code = 13 then begin //return + process_command; + end; +end; + +procedure run; +begin + keyboard.hook(@key_event); + console.clear(); + console.writestring('Asuro#> '); +end; + +end. \ No newline at end of file