From 220d6d8071dd8f997d0bc1fd5a26384244e11a01 Mon Sep 17 00:00:00 2001
From: kieron <kieron@6dbc8c32-bb84-406f-8558-d1cf31a0ab0c>
Date: Wed, 17 May 2017 11:19:16 +0000
Subject: [PATCH] Moved types to system.pas Added first ISR (ISR0).

git-svn-id: https://spexeah.com:8443/svn/Asuro@37 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/bios_data_area.ppu  | Bin 2045 -> 2002 bytes
 lib/console.ppu         | Bin 16074 -> 16074 bytes
 lib/gdt.ppu             | Bin 2663 -> 2620 bytes
 lib/idt.ppu             | Bin 0 -> 2574 bytes
 lib/isr.ppu             | Bin 0 -> 1342 bytes
 lib/kernel.o            | Bin 3816 -> 3928 bytes
 lib/kernel.ppu          | Bin 1770 -> 1777 bytes
 lib/keyboard.ppu        | Bin 1112 -> 1069 bytes
 lib/libpconsole.a       | Bin 64564 -> 64564 bytes
 lib/libpkernel.a        | Bin 23304 -> 23500 bytes
 lib/libpmultiboot.a     | Bin 27222 -> 27222 bytes
 lib/libpsystem.a        | Bin 104184 -> 123954 bytes
 lib/multiboot.ppu       | Bin 2929 -> 2886 bytes
 lib/system.o            | Bin 14840 -> 17400 bytes
 lib/system.ppu          | Bin 7993 -> 9213 bytes
 lib/types.ppu           | Bin 1904 -> 0 bytes
 lib/util.ppu            | Bin 5119 -> 5070 bytes
 src/.vscode/launch.json |  12 ++++++++
 src/bios_data_area.pas  |   3 --
 src/gdt.pas             |   3 --
 src/idt.pas             |   2 +-
 src/isr.pas             |  31 ++++++++++++++++++++
 src/kernel.pas          |   7 ++++-
 src/keyboard.pas        |   1 -
 src/multiboot.pas       |   3 --
 src/system.pas          |  61 ++++++++++++++++++++++++++++++----------
 src/types.pas           |  38 -------------------------
 src/util.pas            |   3 --
 31 files changed, 96 insertions(+), 68 deletions(-)
 create mode 100644 lib/idt.ppu
 create mode 100644 lib/isr.ppu
 delete mode 100644 lib/types.ppu
 create mode 100644 src/.vscode/launch.json
 create mode 100644 src/isr.pas
 delete mode 100644 src/types.pas

diff --git a/Asuro.iso b/Asuro.iso
index e61517740c94b77f3e3e5227ed4553e329de3bac..649c1a187fbad664524204368844888028637efe 100644
GIT binary patch
delta 10889
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

delta 10696
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
JinBXP{s(LpF;M^j

diff --git a/bin/kernel.bin b/bin/kernel.bin
index 1a3884cb20115ddb2ceebbffdd23dea073424ddd..c56c4ebbeafa16c9810aa09af424bd7504855d96 100755
GIT binary patch
delta 624
zcmaEo_#|<IszAL+w<|}d>yK_%o=(><FETk97+$n+0EzqDKq8Bgfnf)WfB?gb1SSTC
zZr3liOdHl}m+0<d0D>JXK;nfs8<2PeQYQgYX8}~V!vVz71F~Ms<N^{dAXyKP*exKd
z$M?-~*AE~AK&I3~jk(AQR5%AH-R=6O`3Fa-2*e7Y84NGBg5(+?axWx+wj#;R1j(g<
zEGPk4unWZM0kJj!SrB#XATtU<>TE!=6F{;-Ko-#B-469EFTz2h3qYc^Al4EP%NQol
z@xlTw9S36V07;9$rCDDvGcX){!R7Em03>??Bx?p_L9FHjS^XX8;unX2EMWM7g};}6
z0EKluFsx59AL3xx+$xyD&cx5T`L)DRrutupd$*_oRWm@TH2xK7{0q|9(&WO!f&zmB
zLOY+nxbgr0{~ce1fOf6>_W%D2Ng(%RM08|STzr~*8haZ5!ZiMs=b`$6>NEO)#_f8*
zEx?erlY?Oc!wZf-Kn;gMmM}1+O+bO0_e*bNo}_SL@(l$UMROJb26rG10pdg;&I96V
zAnpL-sX)AFGq2)PMrj5Hm&~%vlvIVJN`<J@qI?C{isaOSlFa-(z0GfxzVJ+DG<XaE
D;Wor0

delta 423
zcmaEo_#|<Is(`XUw<|}d>yK_%o=(><FFZLJ7+$1s011Ca28JCh0s;&#TqpYqNYwvf
z1qvPq2}*zjWto612M|jb$a+!71tc^<vK}C@{XkZa?}uFsK(K=aNW9n!(%u0S?somq
z{DY%Z1R@92%kW|$NG=B=_ksne97(PfBp1NQP|vWV1Z46ukR3fB)*K)UqL3YANGwR9
z21s@SNY)N)97neU%L`|a-~y0fCWy5J#FB?ebG%T2OM8J>J3!J5aB0>T%nS?%UvQ~A
zy!Zq1%n6XR5>OgqH6O_8$3Q2)SO;XCJjAhisbC5_(|eB1+>%F`Hao~1V4fTxGhvd#
z1@`640u0-k1ty<Ykd-uH5nylxVm}~`2I34LE(PMI&Af_F88-_lzvr2_Kw&bY!D9ds
Cs&o$k

diff --git a/iso/boot/asuro.bin b/iso/boot/asuro.bin
index 1a3884cb20115ddb2ceebbffdd23dea073424ddd..c56c4ebbeafa16c9810aa09af424bd7504855d96 100755
GIT binary patch
delta 624
zcmaEo_#|<IszAL+w<|}d>yK_%o=(><FETk97+$n+0EzqDKq8Bgfnf)WfB?gb1SSTC
zZr3liOdHl}m+0<d0D>JXK;nfs8<2PeQYQgYX8}~V!vVz71F~Ms<N^{dAXyKP*exKd
z$M?-~*AE~AK&I3~jk(AQR5%AH-R=6O`3Fa-2*e7Y84NGBg5(+?axWx+wj#;R1j(g<
zEGPk4unWZM0kJj!SrB#XATtU<>TE!=6F{;-Ko-#B-469EFTz2h3qYc^Al4EP%NQol
z@xlTw9S36V07;9$rCDDvGcX){!R7Em03>??Bx?p_L9FHjS^XX8;unX2EMWM7g};}6
z0EKluFsx59AL3xx+$xyD&cx5T`L)DRrutupd$*_oRWm@TH2xK7{0q|9(&WO!f&zmB
zLOY+nxbgr0{~ce1fOf6>_W%D2Ng(%RM08|STzr~*8haZ5!ZiMs=b`$6>NEO)#_f8*
zEx?erlY?Oc!wZf-Kn;gMmM}1+O+bO0_e*bNo}_SL@(l$UMROJb26rG10pdg;&I96V
zAnpL-sX)AFGq2)PMrj5Hm&~%vlvIVJN`<J@qI?C{isaOSlFa-(z0GfxzVJ+DG<XaE
D;Wor0

delta 423
zcmaEo_#|<Is(`XUw<|}d>yK_%o=(><FFZLJ7+$1s011Ca28JCh0s;&#TqpYqNYwvf
z1qvPq2}*zjWto612M|jb$a+!71tc^<vK}C@{XkZa?}uFsK(K=aNW9n!(%u0S?somq
z{DY%Z1R@92%kW|$NG=B=_ksne97(PfBp1NQP|vWV1Z46ukR3fB)*K)UqL3YANGwR9
z21s@SNY)N)97neU%L`|a-~y0fCWy5J#FB?ebG%T2OM8J>J3!J5aB0>T%nS?%UvQ~A
zy!Zq1%n6XR5>OgqH6O_8$3Q2)SO;XCJjAhisbC5_(|eB1+>%F`Hao~1V4fTxGhvd#
z1@`640u0-k1ty<Ykd-uH5nylxVm}~`2I34LE(PMI&Af_F88-_lzvr2_Kw&bY!D9ds
Cs&o$k

diff --git a/lib/bios_data_area.ppu b/lib/bios_data_area.ppu
index db36f48cd9fe4d09a07c5f144a72fce55831f4c5..2326e1733b940514edf7ac69ae0b1b0e3f493acf 100644
GIT binary patch
delta 679
zcmZ8e&ubGw6n<}acGEPQU+s2Nod`|o$%8aTz1H0%(qL;AyB?&-x;0w~)<kwwB#2%r
z2=!Fw;H6+sB7%Q`9=wYbz4;f2Uc7p-`X;F>_~6Z(`M&qfe9Zfm|D3P5?zL*|JljD~
z;k`Q#uTubDUxx0(2m9*`0A}|pODDo=`T8^+P}SpMJP7Z8+x_uk=jV;*dru#uA`18p
zXT(Qb#F99|LqnxjR&TFX0aN0O!VP(m1kM6ZJX3j1J3iL{(;0b?u{bU;N3}w!lyzFA
z>>S{vxI#Me25iOk=;BPGa|o1ik#ek?pq*@^=M1q=y7VzX?`0F6N1%+Glw;i_?O4-k
z*nm0lUFBAWfZTErb?ygI=wI3jZpVOm!5Oy<NnH+y8-1exQU$TXcqvO%KB1iL&CM_Z
zEQ&{rn>pf)MmN5<6%75=ekTN+5^os4kS9WSf;eoo0jCp_PY9Or3IXP+D&+#Ln%BK`
zhpd?5i1A{Pko0n+;n(}yy#dfDPHWtnBJ`iZwLuUOWr=l-n{t#!VzAlk01a-JH0J-B
z0r{I1Z?!sV;<vWcvZw(~g;wT`{z=b{#`l4cF*hSQcf_3>bDs#AqeM$~s3Yo>IM5HU
iBJ5ODE)i-jIIZ@Y->^N~x34yBzuW7Q-HJF&o%sWl5Phit

delta 788
zcmY*XOKTHR6h0^Oh-qGZq?6Q}N>Wlm3eq|%Qk9xXA`P}A*tk%TVQQulj7i8ONWh(<
z;4WNT6gMth_*e<<>Y_UZ7d}82E~I;_zrc#;&eRbPobS&4zWbeXE^|M{_u|=V_0ocV
zLcW6_!FF{9J_iA=eA#~Z=Jb(0833k+*`>Ly+wAfzZBSC3fzz{ZZvHy_;rqSWkHmq}
z8+2^v>&o*}uNJ@Q!@*sYhQD8<#<y@DQ+yZS>!OfcsH`pkj)WCqqB!I&E@lY>X`zT?
z#{k3pXMpMIKA{6feBZq50Lakl`DkR<cN{Rv&qz!^Ac&P}jrzrWpFyOEbCjMhL|@_<
z^^5Zd5{r!N6Vz{%zm(Y7upmlCF%LNA7rIKMhz{i(Wgs0Pj4fN;`Yo$#o9CO>bq8>q
zhh(Njg>=ClthY)2D^2i4nI&T+#eK=>Z*16Izyxo~ED<LyQfxS#rZq5E+jSdol0TB!
z$x#wi!*c9$1yJ*6x=*x-rwA}ZYal&FsMH$QZqO)6zAH0hoS4vZv1k_B{Z<b!<-0dY
z5%HGX-i;<`_iyaAp4BD86fY~RlprbMk6mij0T23>UWhUjJAS1}+Wl9lM|WZTnNmQN
z|4^3JMJt>R5PB~OP*vPFq6r}(5z0097lfiN|Be_>6DU_*ZQ9esi_B1>mL!y1DZ~5f
lW6W_a*iEO1P2`MnWz8(+Yk4z&v6MF(tp?pL$Dag`{sA-+h~WSL

diff --git a/lib/console.ppu b/lib/console.ppu
index d0db236418509fabb5ef41aa0352c98f885b2cf1..44a928b1c8edc7817368aa399296748e915e17f3 100644
GIT binary patch
delta 63
zcmX?Ad#ZLqvdPP?_w$>7#7<`b0+!N}%pCKab4t_dUI&5%_>wa7i{n!gOA_M~i&7Jx
QFG~%mt)3ITak{Y`0BfZhVE_OC

delta 63
zcmX?Ad#ZLqvdPRpY8PI&sa|9N0+!N}%$z{+V{>n>doc?nz?YPnUmTy3Sdti@Sd^L=
Rb?v~^<JOvgH%>RU0|0Y%8&UuO

diff --git a/lib/gdt.ppu b/lib/gdt.ppu
index 54cd5770341abcb1253e166f3d90dbe9a5b7dfcb..00095cc08994b37915a0a0d122d7843faa08d510 100644
GIT binary patch
delta 833
zcmY*X&1(};5TDtv>}Jz^?QUvJVr&(u64avg1C5|mBBC{iR`H-q+H8}B%~rA-v?wU_
zCL)F>2=$;BwO)EJc<}CDAqY|sy!NK^c4MgnGw<zhes5-WW`3Gq%!y`mVfxgJw1yzU
z*XAUcNr3OH?k`_jn9Tq{aX4|bcz?Ql*Pss+m0&dpo!<8I-|yCT?!6ffd=!R1>KP3|
z7Ks6}Kqkpf;swkw4=-Ytea0%=z#{vF2HQrR{XvUvmhd6RUud4&b3@x(c?g(b--J>}
zB2-;$1x^gAnoIzfTzo*5&M8u%%sqNU?YZr?=KyNE?ENG5K{^kS3T1_?(pp+_f&ehd
zZi*!%L6F|*xBP+E>bv18P<@ZZQcfjYivoAuP8Tr6K8fpNI-zn@FJO+%Nu^YZ5Q*~u
z^K2k(;Td*9zJ@A$B%gj-CMTLvL*^T^^Y&Fg>{A9MAN|lv^2Q8}Zpr2zMmlD^Cj3AY
zgN6dBC`NO|^+Tr*m^Gs)>*V3Rz`__=z0(eDhtjxC0C%t;k6MTC$;ss-X-rSkEuug8
z7jb--y}_v@o22_l(c-HhxxO0$4f3t>0xN7P@rvwL;<}M1=l`K9tf0DBW6xB_FuAwU
z3LSfH&|BoC*Vv9)J!kQdSEAO{j>UD-5+b1_DLUz)c!ci4WPz-FgYOA{d`qjQ#|cp`
zk49NzPqeDR3)LHYM_FT=+RSafE!tt;-MIb=M#&J)QjQ8a(c+7xEqjBYYf}ROEBc61
XCrUIUi?6>LIHBF4KjBrJPagjZcu<$9

delta 824
zcmY*XOKTHR6h0^ONM<IFCNpVGCTY@YeIOX57H!iazKD+?5n4evAx);qK$3>c1c@6L
z1y@oGR~L5Y!i^g@q7+2>2LyHLLJ$`&`UhMnc<xM;I&jaK`ObIGz2A4{o$<q%sZ`cZ
z&o78u2m<U?X5qXF@a=o~`CjpTBL)EJ(aedHm+qT)=I8?j*%>;n)p_>o=*RtsbDszU
z$sP7A=S%tJxz|fy=STG}3Zu^}F%>})yn2A5#-_1|6YMT7vp1MxuP}%S_7-oT!Gyqz
zxJVqOZFg+9+TOeesIuLF*^~$kt=AmO2Q`HQ{E7PsCMX}L70AdGHILe{8;!OF82-mj
zkJ)+3hiL^eL5gy%Ubh?vFv5z0sfP&Cn*CaL(604ucL*3|wqV8;!WFM^%Wk#+W9+H0
z6A2S4dG`fUuq>M42q7Zp0VY{p+{Hzfm9C<~Hl#BTbSh$&8{xYJC`+D}3@;emCv~-S
zd9`|_>-OnrCE-=K3HKQ^6;LY&7;&HRgz#xvXlN9}UXRMA-F2-#pl*0wcEI#q!pSI+
zv}VJtT6B(Wk@yrdWmD&q_VC`{y=it$HpARs(eBzVV21VNN0?{7<;N7agV%K~>i<o7
zwjZ>yz}7;Rp5)b1&9$mG2c30(odWw1%7rI+%Zr{*1@<$PTbd$3D)Z43WznB7LKF$6
zXNocj6pqn*VD=D2`NDW^1$Ilx=_!J=(!seE*p{+zoBtxp5$>3O|2%rF5zbP_EEO@C
k;FOK_z-d*<6TrMSrmPUf^F3)0CFEFcwMk02gs6Jz4_+6Z5C8xG

diff --git a/lib/idt.ppu b/lib/idt.ppu
new file mode 100644
index 0000000000000000000000000000000000000000..472cef73f01f6a6a4386c4aba21457a33a0b261b
GIT binary patch
literal 2574
zcma)7L2O$^5ZzgSJ9eA|CrtvhHX_Ca8dH=uihAlHO;Qw5(vY~SqNp+sF{#0cqu5cE
zONHnS#0d!`E^tL0xFAkQz!jmMIC1KQN(iJ%6^BrlnD=J?{xmHmjI_J6GjC^SXJ>Zj
z=P#Wap9pS<iJ9-`^X7KSn6LUO?e$+LKTR8Ba%iLgO(a%ZZ7Fw&vL4E87i2GQR+`JF
zvP%U@Vu|KXvsGRH?fpBS-PpbI38BGut5!c#znTB|`tPq((2XYXIM+5T_&&}Psd{Z?
zld=kTAxW3^N$ueqBwT7_ReQQ<WPyVm5%h`0rNz?BYqQ{`KTgXrF-go~R6fE4UJ@}0
zU6c|N=L(~<?td|HS~a~P&WiCXB8wFH37k-T=77*^gMHxXeKxVr0uUPL58a}3qP*2U
zraf>@7LIY9!O*@b@5%51q4xyahZ`N!rCr*)xZl^CUuIO4+vU}qpdTkG^Yks4?$YdZ
zsXVjM+S;L5tnBFx8eWK9wtF;SBU5&lD3bk4HTUA+k8_^oJh@V7R?GFqHC%p*Dv~qk
zcn75>*{s&9Z?+m+M$!?q-=Rzfqk|?0t<<kocADieBRvuHXb624V;;?BdCK@(^~ze)
zNN<FD4pP#KXwReBEd5ETqgQKdSB>;V*q5Lojk&?t_Aod(!F-(vWsKTc@=|1Xl7X7y
z97J7@Ms&VW+h|p{D3n0<cnWOIwj3N9Q{vo_ST6B;ZN1h))kJQ-3aO_NFgD8q4|pUa
zgAuG0Vi-)4KMgbTib|ZvRq|3`H_A(Vhx3pc7`H>d6OP14loAr9glJ00y%1)keVNE2
zZ~M9zVtkK$7jNOg%%Jc9bvpI~2tK4x#?rJxF3E(QotrJujsMC_g%i_ma$S*k@R1i{
z)aUMhx$zUwH@Q+qA~y<jV{xWber2*WQ#iMTZfbI2dUkH|LgDhog=rNX<|6ekpxOKY
z`o!G!`U-MJa)a)$Vm^nM^aUDT)7Wv0Hh%<ta87SKSMbm;AtZf`HV7!|-R8lW<YH85
zxp5Ew1`5)5XwLwyrI8=PEPmdVQ0~0P{y-q;M>LcX^9NC7@2@-!p0z9b3-R;8n<u)S
z9!QQA6#h1mhG&)>lU+X@{3>x>k)?c)yFB<hNoqi~KSS;ieC)dC_untcIK(fI<4CZ<
z59nY$%7BaQtq9Xgj9T$EE5i<R8yXzf$T0uBwBM*!#ryKKa}~-zpd;NybLc0)DLOKE
zG(!JLD2PS!6q*dNI)mB<D?ID6OU!-9^o&CcDqhM~d9Bhyapyb&-<XoL$p}M<L2pL>
zez-sx;<u?U@`>aR;;DzcMHyxo%*T?}9DVF`WC%;1)J;dcA)8`77RrcFggh+u{a&{H
z23RR_f6bCmp~g|2!MpJ8@q|ZW0&bj9heo67?B``&xHvf-73E?6&;Xx*n`hwD$l&s3
z_=d}9##h2<c;s=6NG=BUp-P~LMIb}`I#T*fxZ53Z^&sXf7Q4GY21rnER920IzKfX(
Pw~#h7Ll)6JLelvMzG?Ym

literal 0
HcmV?d00001

diff --git a/lib/isr.ppu b/lib/isr.ppu
new file mode 100644
index 0000000000000000000000000000000000000000..cf256f0617ab595018f9a6a55e069573b27e7967
GIT binary patch
literal 1342
zcma)6&ubG=5T4neNvmsW8x_$@=|M=97AZY>C{i#|C1zVCh=gc^tRziw<H3svy?M}^
z1ux=X;6LEOlSi)#o-2q44_;!Utn<ywu1OJ^fj95XH}ht{H#144vaxt^$=PAD>3wCE
zPPjy0zW!W&_u<WRpNR6ZAdW0%JBlCbX#?01V3se~h3!UMTRc;{0>t*>$8opW{`Tz0
z>z&@6U4+`vX7_E-=(qP)UcvV7b++P8t9jn~)ZCrl`wYx^)Qwupt&g)WpM1XoU_utV
zF7kIQIR~)4d@H)U4Xgns5C&1=oN6V^xJtaKdQx>28&9)nFRX>@tJhutm||ke32KXF
zGr9PX>%tPph-<{qIPXA&g8u)&oMvRzmTLLdzl1X>1H=Be*7!C!=&1+Rx4@_bY*@4g
zKAx`6A9f9&lf*hI_Ay|5dQzIKr(8L#*2~w+>qui|AGCVLFW4{j>}Pgg?<varo)}ZI
z_$*KihxCgz`HaF^Z8Hs-$6P>}F%;5JS1%Ox0_vX5hV<3Aj;jkqbVQ`n20sP7h}%xI
z6-lZI^DrhPgK!@V7zt!EP5pyJoV}HMfFA%WA^4oEROWH8q_BnbXOMbEcC8{9BndBx
zXBl1&kPTwxQQ^6|)H;hCzuq?`1D8;)OGq}573|V>=jmZ>zbb)ih~^+`yN|YCUMr8!
z!VDiORYk6WfE)P^ap5o)bqQ=Bnx``sX86MD!uT{a!(jM826M+njA4EbZ!%*Lm=R>U
pFOHKMf`15GUYu2dsV$J1Adq)tco#BuOtD}P?iZj#H4Z3F{sL!<gysMM

literal 0
HcmV?d00001

diff --git a/lib/kernel.o b/lib/kernel.o
index c2c4738853b5c2c2570e08f4b8448601b486279b..d48f83bd65792306fc4946d3a5a805c1b094a517 100644
GIT binary patch
delta 898
zcmZ9LO=wd=6ot=BI!SHbd$tmr#+s(~NrHd1Q6z$^VxOQ0Qd28d5JCLKpa=yQmg*vl
zkWJ!6TnWLA3JOA0q#!N|Drlj&QP7nr7FsYuMUg<fH;IUOB=^iW=e#?UVX_c?-&g3@
zu!{q3IF$F=bKbAKXXU)*g=(!<s~751-NnqF*wRa{0)A$sJZ<ChFO&C{im!Y9OZA!J
zeCWEm?c}}Xdi3XHh5OMh6{fP9Q(x(tPC0SyH-1|;K89v>D&Ti?!0fiEsz*D!Z0(3|
zj9LYwvy}D?t0#2BcS>cc>f6;d0X=z9HqtgSlIHPwDq7v;v9^#>Gj!I()FS1K%i#y+
z1J|7Y==3Kg`Nq@9@~wq~`mYO!zoUi6Tlhi?PqpyP|5>A4J``9`zP;&#<<yFtVw;|K
zM5pyeAi?XY2(Xz|Zvs3~hJB)2fCJ*M0mhpC5#e6oSd&kP4gzOHw*ndQ*8-P>hk(2&
z_bZ5UzdKF74@}o59?3)!m~9%bn!!0%6$Rc3^Tyr@_W>W9yeP_zE27-^hxjqzw=gek
z_>lEBpo3NQ11p8OPe^zj5K*Ta!S!NraDx~e92Dl@cHseFr!Y6%FUq-5nRkJ4Va}Zt
z<&B&Z<&8{<@`-R1a@3zGX&rX%3dI5Wxhl?gCP9y_uqx1;<*Ir5ZY5NSBDU0FJ7G%v
z;v!{iSLLb5{KCiApPt#Sxytu{h`#XXVE}kTw&SWRlynk$b&w{UxakQ3mnqBB1-j=X
TdP){>oL6n<FTVl#|H$|c<w2gS

delta 806
zcmZ9KPiPZC6vn@q%_gzQu0cylv}x0<cKwsqKbHt1w3r1EM8t{)p&&}|BIIC?l1lXu
zf+g{J5fSV`kRn*gK@ks8iK1Ra5UfSKNNF#UgF*!{zL)OB47=}}-+SN8Jcju^u#&8%
zbTwK_J65dXh0ESr#fz4`pS8P*TJeZ#)f#;}TQh6nsorPc@l<nI`O|K<JE7vWI_lSI
zSBEI2W{tNm!_-tu>J!cBY-GC*nn6p;N6R{^58JfOI1yBvVCn*0H^$XNdSet+fkp!d
zL%G~Z=&2$ptFK-S^eVML_sv1INKMmW%c{A=u^BvDT2|7~`iQY;Y0V$PnJzxo#f2`u
z+{Lq9JpVt}ABDcC`ppe9isF%eOC<o8Pu07CF&d9-E~zcRaX&M`s<r}opC?5}fb*iG
zz(uL|1DAyN0434gz%|hfaL4C+K0grM3q0}j&;9%hR+R)^%NEkgdr1rcAH=}?O_VqO
zF3KCPN_`OcA<PH=7TpK@m3#^?_>yH^m{kn{mN5I`qU=jbo_%Ry_PN4ozI>HkH;(y6
zPYMoj)HmiuxsgdxZe%~W&Nuv#ZbwfC=Y@v(4Y+h85Tc9~Q$;#tIs6#TS+1I<awk5v
zTyvTiEz(!6<w@DDdCLG6XvB8RTmVSXDV|*j0k7za?I@S#Y*#mW=$$=mHhTEx=@+MW
WP-3GSKM)1Z@X2BRc?EcVXZ{b+rihaO

diff --git a/lib/kernel.ppu b/lib/kernel.ppu
index ceacee343ed2147d678af538044d087e07f14e6e..5eef0893e79c43fa6026774c606de6fe1b86e46b 100644
GIT binary patch
delta 420
zcmaFG`;k{MARyGx*p#K2k%5`vK!6g%Nj3(C`<svIy+~OnBEZ1FAUaV|zdp=RCUPB+
z!^q55Tv=R_n)|Zr{ru)1vD1NK44k>8IVG7%`S~R$ZvFIB^ZX(Q5@jhZ$;>g&Ij1zO
z?sXtYfH^&-<l$u7yfnK|7cf6FrDQ!{;_uw2j<X>A;-cHnKD+KYwy+PxXHU-0E6&eJ
z)n&Rq@uGz6^JS?4wbgT?K~fyqsg+6jiA5>BzxvxGnDrJ;W@9X7T)4T4F^h5YO{Rs6
z_2NKPjIvBX65%=qMm9E9kai)kBr}i%JCcEs9U?9W7H0vHAh$9wav%$XbTR{-%)rQr
zEDQ`Spm1>!10xqiSQKQ)<lii-#0waKOeiP;v6(m+7z8*c2Qo`fzRoJZS_>4bpZtb3
XMz9r0Whan5X>uf6HskEcN7+;XBRgcY

delta 405
zcmey!`-)dFARyGx*p#K2k%5`vK!6g%AvOkv8&>I7vz8tEBf!AGATm)=zrL|YI&uS$
z!^q55Tv=R_nmhB4+J)C`suzJ`46G%U1*yfid{$X(vASmr65-4(%_+%D%Fi#+xGtI$
zuIRcIB+61+l9>}Ier)dTbuVUt1enuPN*+G;S$M#DUkaF?nNqU%hRVHF6K%RceD>u0
zyyE<vRNaYZrDUV79hiFDTJtYRf+IV%GATc?C}q=e&w#DvZ#5>fFcvdT+g!nz#klz`
z(=^6<VW28TStcL}aUBCA8yhP~t2kJK8Au`=$-u}CkrV<;vH(f2TNxNRAmV~xagctH
zlNlH}k%fWb#lQ@7IRhgXL|Bx8VG`>a-c&}Q1QcXW-pOjpS_Bj+nf#eGMz9J=t`5j<
PpPay!%{XE588%e_mRV#(

diff --git a/lib/keyboard.ppu b/lib/keyboard.ppu
index 4cf2fc960eb1e54c8edc426a115b7195d110e15b..84710943db7df7c38084778f97e23801f8043c0a 100644
GIT binary patch
delta 205
zcmcb?v6e$IARyGx*p#K2k%5`vK!6ehD+>cd@2~zg31+>8KqdpnL`7q*AVZl*6(EO^
znXS08xFj|AW!L-p%|BwN1H~9vN=q_x%yZ5uO{;qyIB`NdBlBblMny)}$ySW=j4YF*
z7#kS*Cf{bv0J2?}ERBRf=EyR^G%_%9u(5)SQ2=5_QDz{?lb%`<U!0tnmz<xH%D~7q
m`2^EMpb=5byTm{);#2W<jdb#N404Ij%*!lc07_}G=m7w{yD=sJ

delta 248
zcmZ3>af3rKARyGx*p#K2k%5`vK!6g10Sg1ersJLgTg%^S0GSM&6BUhZF4RazngKbC
z%xuM##U-h^GykYvc-^LY5h%vMT2fh%T71iAmBkjTd&VFUmeP{UoIvqob8oMEF>7L7
zJ0r_vHbzB8w#gcd@{FvLJs2Ap`6r)b%mA{Dm@K`8fm#@4nczk-FmkZ5g3J*DOE3dT
zu!#(eoDgvZkhmzwbv)^*CGo|{iFwKSDX9#M+>_@rO$3^)&%8?vWCEXxw`-)6zhjU~
Pd}dx|2?J2-KeHYH^S?ZK

diff --git a/lib/libpconsole.a b/lib/libpconsole.a
index 63e7012ed8b63c780d37ded58d76fd330a5e238b..65d7627622784fe3964b537d926e816e81bd4aa1 100644
GIT binary patch
delta 883
zcmdn;gL%sj<_XelrUpjFCgvLzWjLVB$%U6CHb--OVTSTIf1G%lX|e)8C$hXd|1+5U
z<cEFYo4tgCSzz)T7fWp3Ej|e@4>B)XdJ_tNzZN&+W;ccPOfXF#MZ(J4Fcp1LM^&_6
zYZsED(8&SH=Qc0W-;QEXxzRpkHJc}xwZi!z*BV)c!(9vFFSBE2M|KFvb(7r`1U5f%
zn-4b_<gNLh^WX-7_|d+z;C!GDCYKv|Z;lHrhKqp=e;2|Hw+!S<@yK^@d6=HOScIO!
z%aWTCk76j%OGQz#`9KCj&BH#4&5Lt%;CevTzR8zHu~xO@6kHzU4BiSR6nWj6UvPPl
zewPMexIBno(h?2l2VR%l{I26AJZM1tZ{1H}{LK&hxL{@hQ_mHcI54G1ZvHV{n{hM$
zv{Q_*0EY;Eg)0iYF149=_A3}4Xuv5Z0TV;Le0>E4Lla9#dWDJ_p^0u>TmiRu<KhL3
zo6oPffn<^R<|C`T;l2R+YVx}fpUDnAESqcA?}lld42sy$&0-2r2W~FBd<!PGIq<rh
W3``vCFjE6GCqP8eog4V`F%tj)aU}Bq

delta 883
zcmdn;gL%sj<_XelCYBb4Mur;|WjLVB$%U6CHb--OVTSTIf1G%lX|e)8C$hXd|1+5U
z<cEFYo4tgCSzz)T7fWp3Ej|e@4>B)XdJ_tNzZN&+W;ccPOfXF#MZ(J4Fcp1LM^&_6
zYZsED(8&SH=Qc0W-;QEXxzRpkHJc}xwZi!z*BV)c!(9vFFSBE2M|KFvb(7r`1U5f%
zn-4b_<gNLh^WX-7_|d+z;C!GDCYKv|Z;lHrhKqp=e;2|Hw+!S<@yK^@d6=HOScIO!
z%aWTCk76j%OGQz#`9KCj&BH#4&5Lt%;CevTzR8zHu~xO@6kHzU4BiSR6nWj6UvPPl
zewPMexIBno(h?2l2VR%l{I26AJZM1tZ{1H}{LK&hxL{@hQ_mHcI54G1ZvHV{n{hM$
zv{Q_*0EY;Eg)0iYF149=_A3}4Xuv5Z0TV;Le0>E4Lla9#dWDJ_p^0u>TmiRu<KhL3
zo6oPffn<^R<|C`T;l2R+YVx}fpUDnAESqcA?}lld42sy$&0-2r2W~FBd<!PGIq<rh
W3``vCFjE6GCqP8eog4V`F%tl9OeMnr

diff --git a/lib/libpkernel.a b/lib/libpkernel.a
index 3fa89028e04c16f6d3e03688368a1b537802b3af..1d66c48c1487a9045fe63b41552ca409f7862661 100644
GIT binary patch
delta 1835
zcmZuxZ)jUp6hHT-c}@B!doM|ot=*bGD@)gHHBH*Iq1BeON!XgQZgo<fj9D2BskBuF
z!%f;RVn-D+j$i!Za9`|);pU#qQP^Ni+$dACeNo&%M8!hOtgNEwpq}$gT;8h}-ub=X
zIlp)AyZ794XRnAmpNV`!Wk)m?Z|_W=4R^FH0r(35^@NQoKxi{SQy)NN6rklOz@Fm(
z(Mf>#EI=X;FnaHk**Z~5fa;)6Ul5OMCdW+jvc%Jl>T+jAES`wsb<r&5@vfuE@109K
z&ZPgGOV^x9uPr@ZUtc#2e&zJxHfJWVax1+GG#1!gtswJ6G?!k%Q_cou<=;<coL;=-
zJnx!IuNmq;POMT+9ID!m6IJhvx6oOg)edo<;-F>17=Aw#5bt33Kw$ctQh<<SKU?@C
z3$GDR9IUUm@Ma57S@;n%AA@nT1KzOkSquNr!Y^9*H4DFkQ#FTedq)oHU)1~{aNf1G
zR&Jsi)4vN^z;3+j@=Qw)z<&040iGq48o=|+>i~`v`OAzx06G*P{Q$3WoKDPZ%(no{
zF}eZrjFj)ABEL}NpEA}1+${QU7yVxXOoM0uxW^8fm`ftI0z4@4WkyQ8%1DWS=lC{&
zznIg+c3QD)1gIhu0f0@+DUX+V5MT>)(ls%XZYTRm*UFr9anVDL5I`3@NSI?J;Q>Ms
z26&D+36C+-kG#T2Kk_D{4>flSs$E{07Z}WhMFFSOh++MBNmc3Xh8j@{q>V~E*Bw@X
zPV{|&nj>t#ZwDB`Hn#_dHC47MIOX@@Nlmp!6@ZiYuC}ARkMx4}n>0C$Zp-^k-KJml
z|7}(k>Z?snihYrsKG1m1q`Dk3i}dCuOPapOvgr#W&3i58H2Ux!vq~S0TJlWB%?g~1
z=k(7LmOL}bYo^)snWQeUwzq1-2DoF<)`_Qr!C+f^vUs`C-Q<_;G1O8!#RKe41;iCR
zoI0<)0P@5n9UG_^7#N}Vanvd|W4`w+{+jdP^?p?>=wJ6&OV>PUxEc7+3U9H*JvdQ$
z96!#Gifg9rqM)RwG#=xRnTS0{u0@X5byL7r3KIH=95brDFRRK^Hm-IZUrx?4(P<JL
z#kaHO$}eVn%S-6DCF2RcQRTOG>`66>U-0$8PR9-jcBNJVUL1V7QgIRMuf>Oh2NaE*
zb_Kh0q2gk<i)Gz2v`e-<ESs9H16Z?gZnDzgIM8*{fcy4;7l=b^Zam&@*bc)c4BKVc
zPQ0On@B>>7jt-}kpXfu;wqYBWc{6<0ZQRYRV#B3OSb33JMG>fG!}c+1mH#$R+`^YM
kzj3jb@7-<eKiIP2d|=NZbAxc#xMLmvb7*|}Goy?0A0Ucm!2kdN

delta 1598
zcmZXUe`s4(6vxlK`Q5bHOWUMb+N3X8*L2m^rm0;D+J!VB#ilD;owNv57^vWM=^y(?
z#7yQN9Tklpkb!?#Cx{HI(I?v&{?Q^x*<@xL1E+rsVc;*2iVE=ui|3>-$?|-Eyzl#*
zd+vGn+;i{w>VjA~FACkZv59zebbsuP@PpAcfUXq)KWShKKrI36DFZ|lfI%O?kP0v|
z01!(6j86kBxIS6&h*|(tJYMaR_}x@9Xo_b`;)`}?&A=Y!(b0GuPaYT$PvSLuUz@U;
zwx3RySJSPh(|_QsV>hafX|atthj-uhsj~e<=Ov)$qNLZ4|5hrM>T5N<T~&PyqmB@k
z9IxSWOAre!XT(#u&zZrcloEZKXX_880jFv}%DisitN83(Z~kY4)g&4Qp5-=huYo5F
ze8j*<4ZPgUNys-F;EaLaH}Gc${sP}^eO$A&eJAj?E07nvsEV|1NsCXgx&hLx?EsIE
ziVlD|W*UE#xf5Vf=OtDTz)@B&z%xAF1@Ig*or*jw#e0R7;=Qf&n$91vi`)%xK_B>B
zAJ`-net<8T>Bm=?y8%i%-)5!2cUUR#PdwfO@GCR@_%GG~z+JWn0k}vU$4)AG0os_!
z&nL1wjsYGZ$FS}gVO9a|*BukA6fn*95bX>z1zcpMg)FhQV>BMYyvK&SCKZ_z7@7==
zB7U!QVM$S{UlCap81?sCi!?!%xH%cNmP`QG1-k8FaTZ^8N93Otyyo}fhFh_eEwrn6
z)7^jXMbUiizsZ_`uF{P<@HP6>_fHdRzHVpz;<1C42>#OSF&#2^<ocRpU?P~s$+#aC
z`4*~9yY}k956!o`FxVWEXJ~hZ-f8~P+K3_U#&}jUj~To+#v8FHJ?a!MJXG%#RYQAp
zV)*z2s;WlECiEt?<2anGJ7OZ~lOxrJBDYLfoC%5#@xA0(TPigV@<a~ZHZOIA0^XhK
z6Gd%L$|<eq_`G!9Q^qx1H*@8deH}QQQK<VI$V4m&YB`sywwK7(g0E*H^0=v5w5u7#
zlB0qypmV+lE18x?ou-d8%8*EQnc}h0YPZYb$1}a+CVoA$-?CSN#fq-%!*a@nhqH%p
zJsZH29>mI22R=Wmh+A5I_CARprCeB^`^Gi~!`Wl87;aias2n<Iz0L^?{V#!AwFIm^
zbndn#9y=Viw3_L{)UuF&o3W7Tmrv}RJxYVRux);@v3#n-n~&9ZcW1l5U8oz7PnKM~
GEdK-V-$Z=?

diff --git a/lib/libpmultiboot.a b/lib/libpmultiboot.a
index 7823e9b32a5392a0548777f4bc97f3dfea6bbe50..8f550519ddff7c7f86d21bb913d5a2e7897c2e0c 100644
GIT binary patch
delta 589
zcmcb1h4I=I#tG8wrUpjFCgzqKm3UcU?8z6z#Wwq}{$xfG&=cCu#BZ#ZudiTeVhPm+
zR4KmMp644Arb<%`m13Lqg!W@mX^yIL^96B3xXnP0Bje=x2K<w4m}MsaGw|GOuf@VR
zxl^iu-x5umgPc8F8`uYP6b~Z{h;Ob{6+jozf*5|AQE2lCwSA0yApfCx@1`~%vM#aB
zEc(tYNd6VyTx}-BxVhfs9wVCQ4`k1ZZ=Pt$hHB6joB7BB;+wmjr5GpIn+Q%`z{E58
zwfox5`L2SDd<K|q>UREvYW7k$E@Y#`HlOi4jw-Oh_cITY`@}XMhzdkip%>STDsV0l
UExOJn?qK4xKyl9Ig7jxh0RCUB4gdfE

delta 589
zcmcb1h4I=I#tG8wCYI(FCWhu4m3UcU?8z6z#Wwq}{$xfG&=cCu#BZ#ZudiTeVhPm+
zR4KmMp644Arb<%`m13Lqg!W@mX^yIL^96B3xXnP0Bje=x2K<w4m}MsaGw|GOuf@VR
zxl^iu-x5umgPc8F8`uYP6b~Z{h;Ob{6+jozf*5|AQE2lCwSA0yApfCx@1`~%vM#aB
zEc(tYNd6VyTx}-BxVhfs9wVCQ4`k1ZZ=Pt$hHB6joB7BB;+wmjr5GpIn+Q%`z{E58
zwfox5`L2SDd<K|q>UREvYW7k$E@Y#`HlOi4jw-Oh_cITY`@}XMhzdkip%>STDsV0l
UExOJn?qK4xKyl9Ig7jxh08GKHFaQ7m

diff --git a/lib/libpsystem.a b/lib/libpsystem.a
index 89665b78b606377d8e69a63103b95f5e0b6bc25a..0b8389f5327cbbb46446c0c9a350ee09e939d39b 100644
GIT binary patch
delta 10030
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

delta 6246
zcmcJTeO#608ON_11QAgWW=g{9z}6y`bU+1(G9(P=3+a3*i_ng!M4A+8_A(E1MUI@=
z9_?w`$H)wIMKhk|V@-|7N)eMyEkiO}%_v=Cy*O89`(5YU=R6lj_lNszd_M5w`@7$+
z`+DyCe$KfYc6C2hAH5>cHzX%}*pQ5Dx7*|9ANkkq9-8UN^xN*~u|%|&sNds6iB&|G
zB@v}vK{V)UBF`wI!IOxxW)bBqBD#7B(Y4En@=<qWEzzhQL}S{CijEOY=p>rlo9HIA
zy=63!ucVCVwrZl%^+dB9iONxN?kS?X`Vq~~B)Vrj(R~#}KVLyqwVCLbtwhzGL^Up=
zU#AnT7)xZ76Ft6^=(lx5Pwpgo>SLm3x)If3piK!x&u0<+9sxEWz?Tr<R@D9D6GS^U
zl8;{7O0;tq(OZXznokhDO+<e}=Lg(G?;`rc&?AWU!(l`p7Z80ip6Ig@qQA`{>U@Cc
z%Vk6-R}=kfBhl$CMBncu74Z(Ks18y+dXtJ9LaI*zslJm)U06aYp^Q}GLQ)q$NGf@y
zkJOLWle+8$QfXUB4Qe9gX(2VZomAEdQdjjQbxjhfyi`)xp<W^U(Z@&?c}Yz;LTYjZ
zshif4x@8-wk~UJep{(?a^Z50hPv!qZUEg^{`@auh_W7mjzYM@QV_nhhu^79hN!=Th
zHZp&5;mD$bX%nYToHTMAQRTgr^JmWWRA!{lyOMWX#*iGnD~+n`{??&{FC)84qcx==
z!dQJt&!A~eU!?M_&o6l+BIx+rwWe$jH_)y)HPlYmYKZ8Yeb&h4bQk)p`N><ME&|T#
zbjL9&I=ohM#xtQRY#7ZMEk<K*ob|%cJt`QFRh8W{GzUPsvKn*W4;34p4PL`FqQ$IQ
zsN$?6!*_Qnv0Njbc7{MzYhXcF!x&i5Vs#cCbeiQY$hUfrKIk-qVe}q-+Gw=nt;8`q
zRD4cg$|Bd?bNTqNp3BF#Sb3AedM=p~)^o`e?zxvW`^F{}KlrSk1B0hn+lsC5h*FGg
z#cf9CESFVx>#Hh$=sDVYt&`rDWIL~M(%Wuz&U!C2U#qq3LMOkiWy6*K5oFDE9)ZzX
zhUv`{0l+ZI=e7H5-dX9?wDJ}Va5~FdfX+G#ds&<AZ3&HMbk>$yNADL=!D#SxWy`%J
z%*cBv%$UA3%&2-q82k_yFFz=!o^LE(ej4GpteQuWF1=&KLky<6eWjSGHjVa`ZARWC
zm-Xf<wEfSIDPhey+9s@Nvs_P!ly}x%<YdXUUVvvqq*LPAkREs#^PdyTIuMcDs;loh
zU#wBLQCHt?)xIc(s<Pznv3U2`&hFuj>9wL?*$_%p!0Ep|-1%{1xRdpIxO4rR;m(xZ
zj)Nm3!Sd|uuL4_j_}=}_ng|qq9Tvs%KRc}hajiY*IQ}EZduT=|Uw-2+hlNqmQEF}e
zKx|7G#^w*2{TuG#qm3$FpI*)?uqryzb%bk=iG^L!5fvIJaA@v0?i`wa$JlZFgnvhD
zIq~{A)>q&VZ2QMsU1phYefE`fa2%tb6f5bJb2bKhPcf2CA@<z3hSPgPx#Pl_R?eAq
zqFXpd&Y9h|D?&L-!S0My&RSqfSGFfcIjaF%Gr{!asx&j*rDE)oSS2=4mogJ&UvVTx
zd2GBrucvxNnK!spZ1B*wv95ZA@?}?CAgQXqau&G_3aoN_=RoBwbDoyhKAEJR?J_T~
z39H3!b<2ruPLbU=UMi_IRSpKygY_FE2SX4u?7}Nmtuq)~CagU?O*?h4tj;eu`>LTz
zJ~*~U4-*z=(?&MChw@;e&za`jv1&K>X`Y#=imbem6{>H}S<4Ww!+g7DgnB&`5U*~#
zyg*G0b!WF0s*G;Il>0lk(fQggO-wWyXD_%x^$oS-p8U26`?yi`Y@FROQ6)OfIPjDy
z%31LKu?waupVNmv7wz<0)!8SW3AfFkw|*sRr*Z|R=WH^bor&2c+qch9&cY4ZChR?S
z-fZ=5Xqj^e-G*gl4l!0tOHDa-2|j7#XNdoAD)poo|9`<hOQY>|&#PZWn=emQ@y5~A
z$IMR;sy_CCKd913-?HdHHAPXhPz9S1;e$I>hw;iVt_$NW;G1<9@#t?4c%k5r!1oLO
zTH$NMN@2uC;Jb(5WUwtb7ragI7%+d$;2$2a1iU|he!dg@SHZske<pZUgpa73o&|UC
zJSy}MybYWvcpum;_#^ODg1-S@E4X(g(Nw{gf=dJs^T7zFodYNW-!Cdm13xOb5*&OC
zT>nAvMp6C*xL)vc;5P)n25uJYdk4lbVSElgE;tfj|GHyV{KEq#g5v~xz^Q^qfd>gL
z1{Vsh1dnytM-Ri8<ruUUe23r$@I!)kgKGpI0oMsW34Ts+bQIBc!54v>LhOs8K``1w
zMido*KNNfmco4D@%)kP0rr<}wKNq|nyhQLTU{mmZ@RLFIA*G+fcrj>zBd{g62u=jQ
zEjSyzU+_5a4>0RsfV03Uf_>oeg4cj2YxeOot%q@ksL%wi5PSe!E%;OLBZ9vJKP$Lj
zccR}3z8t(u@CfkU0Q>xlYBG#ZM1?uv6M}u<Zv?Lbe=oQm+#gvCW?&aMQSis$EWwdD
zAanhU{m&V=2*y}ZArm}7a6Wj3;K|@J!DV1x7r_7)gYOf(5?mv=9{eaX#`g!X9mdn5
zLMymV@KNwq!C!*63y$eQ^qych_=w<K@JYc_!QX;;e18D9!-&Om4DtiuK7t<u^TG?3
zZvtN}xC#6-!AHP13jP9om*5__2U{3TeL@`$gi#%BH#e$EW&4`c8!_hfrOIu-`ksn5
zllQ7?eZ<XGKJLF*ufuq(1w>O=M-t6sMWuUKug4Xa=2fhtkWkIIsKV_Jjsea4SjQrP
znvbz!kgqgH;XG91k*YrY4+cnL#pr38b6IgO_EXI_vm&b5n(tw~3CDuw6|8tuuF<@S
zwHUiz^P8-=8at@@6IS1JJVI^6;CxbEq5-T3=yKLlJR!}aSZ5(KnrE|?VU238W-TXL
zrFjD@?%`h4yo2>lq882XLw%}(=yPqv;r!tg4PZq8ZdNo%)qXnb-9*E6c`++zMDsjW
z)L*3i#jNv*mg{mum-G8f;WNa>NGw$zsGbc3(!jb1FE>{B&D!6`dLPjT+W(FffyUst
z;Ce1r44l9U|6*3$K4$3h0$o0a6_0EJ>tdo?yW#nB2Xok{LgcJqet)SYNTudF)(3Gv
zs+r$csv1|InmbsR5`C@tTh<z)Uf7M?Utd-PIDi#bqWpSdKNGJi|ID*lm*cIf3&ydo
zz;4rA%K97ZHq8rJ@hPiXGrzCY;|N&uI@Tv}xvTkQR@}qx(%i=SB%c4@wee5ZwfIF;
z{2R>*?#Wt9G*J6#nlo9E%3-YQaD}bQC$g@`t+nR6S?lmJ)x3linRu9WBN^VEsm8SA
zYs{)P)z8?R>@vos6_|}}$`!FJ+8n-LrSxh+&03rzIPNLmREJe!^qhF2^jLE_ilbI1
z;*2noe|Ujed>F01Pc&3gf3tHxzMm!$ox(~%d%O+snGnA?VVxVr43GapNqlPOZy=)%
tsQSqGjKJ+lSXt5`br;Gq&(Y4}i$^nWfjavJ(JWfj#T{VZ{-N3(@ozP03<3ZE

diff --git a/lib/multiboot.ppu b/lib/multiboot.ppu
index 34cecfc41193a3e6bf36d59c3d85f6376e179678..3932a21d039158aaeb0773c1117ea8d4d7faa8b1 100644
GIT binary patch
delta 1141
zcmYk4&rcIU6vt=wN89aEO3SvT?6$V06cjLlh7d(#kn~VNsR9R0%%-#p-PqkW-4=z5
zF(e+mD4B@SgZu>~`UjYJFoqM}J$W@TF(fAH#rS6WLnnD}GoSZ;GjHd;)9}Y|vQSu`
z&dv&Z81d+RA%)^HLdTzf=QH^qaS0(bvY(udE>CN>2VsMGm$TzE4eRTZ?}vN8?!MT6
zwCfiz5_uXFIq)KRizocv4&xb<fn`V>2gwQclE+x{hdXhR#Um_7>o7NCF<^t_4>oa%
zRJbGA1!wbi%R;!1BzQIJhP~jJy9UBOS%eK;XWAbmz&8oTX&&%Gv0QE-+)r#?_0fM4
zor+z4fUut&@UMM+lx$XuTMohsSrF8K4~S$LmR_yhHy|@aETH{e+N#$n4U?CGdf5+D
z-l)}@dfC`EOHfXvSI#|%(M4}agK^pbcz4MvS4|s~L*!IYg8^V(t5$aOQmth-5ss3$
zs0M<7C5GGO50h)6YSJ#ajq0ZE7$t<&-c?V5)1`rpgK?SyUbd`aU9TGUR<nYz)>A)+
z7+sTK88A)@ftQ%NeOrv2hzIjSjMmD!(=0ZivQ+PccM$2W_OC@@>xO!D!!9E{LJnQ(
z+%Pb~E?V%f>0aumP9AN|C>W=y;5`k)F&f(j<c^Y4*Q;V2V5h<7dbvLVc2~P_+Hz^5
z=oost@Cm6q3<$TCbQng!I4uF*)qRag^3ARK=#+?7bEgg^P7%d32IF<fb1_a|21n>X
z4=m+w-N-HLt7{93ORM=iIfPy0$TN(2a_mVY-R=8u8g9efo1+OxK~pqap%<$KGB0UC
z?-;9U3PkK=MI>`lVqVTLoCQoP#EKVupkTGCO_R-(X>Znac=%w92`_*!#e_2X!iOH>
zL5=Y%!097mB@A9FKpR?BgC-_IOppTsZ3b2%;64B1NrlCiAWmNrD|CQ-1sMKXV@Idc
z1BZ-9ndl~nXjiZj1K(#EzW+sMN!I%e&yWw^N`%(vPhVeOUdvxySy|If+k|6g$fA7y
EFZ%ktp8x;=

delta 1174
zcmY*YOK;Oa5Z;aLB+jFGkXLJ`P1-cA=nE7ArAR!LL)Ah<A0Qr*m519}#C8-Xg;td~
zfO<o;S_ugx;Eu!r32uNmaRp955A+9c;>3jmv+E>?k!E)Hn{URmJL8YBU$JztxN<a?
z=kH;}p%2ADH0woZ^lP+yHC=ckB7`z~>HOHYZRy%D95Cm!Hm#<rKmL>b{Bvjc3t&iS
zZq`+6fBwbv>zN<9J##A{U?gyqE;ztC$#Xmw@U}6IVLrgJWC2UW!pT6q?Gu<U!T8BG
z=3-bs`Hr{o5V_)b>2*O)&S>cf2S^Vm<=k-QEp1ChIOrANKxM#Q5D#k_)FIQ$@TF?C
zfpCc2<Rrfb0Kr-}s&^0$ll$B=zn>zjwbGh}aGXr>Qm6+IQCD@PX5LmIGC^+ek{0No
zt$LlJz1`22!9#`CGz#jFgJ8X7(`+hLbwjH_k$qkEE$~tCfo4D*atN%eqE~C00ZfS;
z@KQJom`69OmQpcWMiXI~_ykEi1hB|p`%=kn+8yvvNr2jEBd~L+wN=GZD+u>@nGY!q
zL<Y6Xjl#~W>!rF<Q;oIeI>G~FSCB$6z(t1JUrUj<!lP5Y3^l8Y)hsojvf*y#ci`!W
zT|*xnT~M#08dU_%f8dl(NPzK1Nr$_RbVEP2<LDdGp>xQzJa<F2)W(Jiv7_X``DB`Q
zxZU=NZtQOWJCcQsLr#Ge%Oy)y?7}C>E0@$mN5a{;;S||-N&Z2A1f9+@!bgb1J%at@
zuzO~azB5kJLAD1SVW+^RY@9mcbk2iwg~dySd1Yz&+=aQN+3N*_MUio^gn@+40tw_e
zD30^wsXK)|<h{GkNl8+X1VuUQA7K#_5Wq4=oWv)l!aZ3A=Kvm};Sn!6EynLglMFry
zFfANM=nMt*R;{VAVbhFNQ-O}eWX3xKJo?x;5(g_5p%1N^N(n<zMkoM*b_hr4)VTlo
zGZE&W13!In97%%pA1lI7VKz1uIw_E4te3Ga1FN60sP+BN87FSfF3yw3p7l7rN+5G_
VWqx_~{KCSrq8S=w$&-Y4@-J-uzQX_j

diff --git a/lib/system.o b/lib/system.o
index 186f4ad43c376289d5e0d0b89ba431ddc617916b..06df60ef6ee4eec36ce508c6c93b2a914dbd2bd0 100644
GIT binary patch
literal 17400
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

delta 4667
zcmYk=4{%h~702=OmSi_VP=aVOm==vAL`S0r3QmI+LZl+mDHg?23bw^cYiy$eu{H7>
z!H^15DVwxH)xl1UkpeRiZDS>sVkt-iVv*67AX1F9{E<))DAcjvvwLnhJ0rh*&VBpd
z-TUslch}Pkqtg#BxhxvBwq$oQeI(VBXiT>4&HHIGy=&~Cw%P$RbK=EG$-E*-$%aVe
z+AJlKT-kvuocH4JD&UA?<{XLzl8|IVME}k=7vllW<+vE1XYDs9B$iTFxSIn;;PdT(
zT3qGah$mw`sa|jyp6R?2&&C&6`|Egtb0==X7h3ziL@d(k3MV;Wy?aBdk4UF;5$<xw
zUxRy`D{&5^5-u<W7dhA9tMNeIqaWb$n8FxWXu^|mp&ihIYn<Eh0_UyxS?4bN3Jw?O
z!CRbjxIbNZkexpsOrggWuERNuLO5VNE^?lRuXcV2k8y6qlW`b<=kP4&b-4bVW7$k$
z$+?1b;omqP!|l$=Ty6;t9W2HlI+x=UILv`@IEPUPo{R_KYzO0ne4j#TZy_P`@Ms(+
z;V*Et^BO!2_qQS3g!R4#cj0;*o`U1J(YY^AoZjY4dn^gLjKYdgz&GGkIP~}qyxzG6
zcj9ot`MAq@IX;Xpwhq36^}Yvh$HiD5!&qnGJ_@B)P@ljfoKq>0G0uZ=HST8@xE9~-
zT!m-iFalF?t#d7|&mJFV9)l+-=)?&pT#lP?SSZ%u70w&+DjY^=H(u|20(ast2@CR=
zBhF>`1kPvu$#mdm3M_cNJ)Va1G3Uv&KY#~0&%-+LLI;=PQs)*t0*4Xkz+;@>#nm{)
z^)nafrl2!3T<|2GhPe}&_7qo|>0E?sa2T;N{D^ZEUVsPN`|rUka5(>ixD_-1vlp08
zVHJh2a5Uo$xYF9!;v9MtPOuT@V_na6&b*IHoj<`<xX9Y``tpHrsksC%NHYH69*v^#
z3<m^P<5f6Za5~nR99)aTOE;s(@l-1ma8xs%>%1C2>ih<7()+J3eZ#vHmSvgoA^dyi
zT*g}W27T%A7vb$$W?YJQI^Tf1ohRah&NFaM%+jkbJ>gsm=Q%gvOPrVCOPyEaFFXGk
z-{ky0{)Y2WJl#3L?2PBSLJ@^Wov*}CJKu<#oNvdi&fmeSo#)_9&WrF?=N0<=ee4SD
z9B{~a8&2sAwGryZ`Oar>sq;XV#A}>~;;%a2h^w6^_2>S7&lP5I!2Qnk_(|t9e#*HO
zw>WRWzjfY$JDm69jn1cH3SF*nKD*97=PR&&$p|BG6E1hY6F=tsL;QsE0{lzo=kT-6
zaT|rTuF#2p=iH6AJ4dX!JDm&h7g$O|2d~2=&J*z0obSbVo^vd96z)G)ki}Rxi*Ul{
zaf5RkUgW$Pzv%n{Ug>-sZ*lI&m&a|rj#Dy(!hzmGN=D+t&J*w%=Nb5O=Q?~bD`n{L
zQhbT?8a&c@8?FeBdG7a9(9Iy6;D30MbAExycb$jeS<dBnj`J<}C(hIHQ_gkxX*2tO
zN)}Rh!5y$1w>YoF?am#z!})Lc@6HGD2hO={Dkq&U$7i$F{XZqcDd^XtFaqQ81<v2Z
zqnsbcqn#IH{gxEo--@R=ug4EM@5FO6W&zO-d_<uk**5Zuj;QTR!#eWXp1-~^FTJN?
zQ7mVe?9psCMs9gDhlhiXM?V+&hvp2Ce_9^Yd{N{-nk`Hj&6ilQxlZ(Qw!hjwTh06H
zEeVO()Na=VcWB-!a+l^h)~9>*555l6X|{>XH#cj(%AGQ|YqDW&G{3F+8h6J0vF7W1
z@iFJJ&_*2$v?k{-)_g<cDszQq{3nqKR+y^!rpSHfI?YY2H|8apn?-(Qep&M^M$G&d
z&A*E5G9S>~#?&z9vF=6mx=@o2T}j5#JKTCJ+@i@Adzbk>&0S1>bA#r4BF*NPH2L^z
z&41L~o&EWs7uciTBl3y0=j*LzgbFojzqAkglfFTJ9%w_E=3bGn*a6ct-(*D0Khos*
zN31?ibDzl1tUYb*&uH#v^R)VEO**npvztxR>RbD8|Fz+5EgTTpYYm@i(xE(^l=O6f
zCKoQ!r2a+Ce~Vmi?N!!3QIlIXN%N4%x2(NJ^9UU`FVsBBNXAxZ(L5&ds`)L=<09{w
z|E2k<$fxGBny2`Ul1tLTftqx%Q1id+X;#-?Yx)64X`W@bw)$<FpK<@ESV6!1MxXN-
zo9Ajqku;bWY4(Yv+5Brwrnr8m)egL-nTlkKIrI4PZR@D{lxDvu^9btkNghRfkMz?&
z`bRQYlZLCz<(iu$^J^{Q8JcMAU)L;%<lE+lG%t+gG4m6ejKo6Ci=y;9V~3<a9NRbD
zGj?=hLo!`fSrSQlQsprI{c+~s7b=G(DpKjKl|z$9SSJ=I(<duS%IevdYYVc!Kv*p@
z|KEjuLvG_gCP(k<@DP#H1JmQjl_WkYPyb-t(8L47(@Tlk;psn&8(OquIPJWFPsTc!
IJ&*qVf3az<<NyEw

diff --git a/lib/system.ppu b/lib/system.ppu
index 020971fa7456f5e7863e801598f380485ebcaff5..09358fcaeb62afdca8fd602dfc0d46cc7ab29329 100644
GIT binary patch
delta 2513
zcmZ9O3v5(H6ozN!-n+XkMGD>Sd+%<ymx4$Nly)fv3IPOa5Q{}b9_nHjT(Wd=OL-*7
z8X<@%2%OULC=^M2gb*TPd=R3<7^1`wW7McoBgPnQe4rtw5MO6z?oMuPvS-ejZ~i&w
zo|(Jbx0?T+U)9=r-=xV6`VLAoa;Y^zKCLF?r#-**?-*RwJBtwV{DG<o+RRCj18r$G
z*En|}%nA&ryD2d=9Cd?7J$B?0QLi1<iRiE$m5S(y9T_4zYDaDn9kZhn5%mp;j@wbx
zU?EI+!VXQbwBL^EV7neY|2w-z3wCk5M3?aEge?`;5Y{bhiNi*PU+=ID!cPi2Mc77R
zrwZF7>@;Dg3p+#DW?D<^k~AE7hfWGG6Foxz(z#v1ec=txJWq`?o`R20-(HW_$0hi8
z5kDsPsbmf4S`Iee!IH@89IVN~rXZW;U<(|q5!oUh7x2RqE_J}E7_W2)+a0V4**XWy
zJJ>X2TO8~O2b+#;mxJxI*&P1#GZ1z=V4p+SjO>(yofZry3B4&AdF#me3&Xn&`U>1r
z5v8xg`idC62zx8y^j$bx5vK3M6`Z*W0~IFy1WLSB^h>zIo1ovqBJ_WN4QPLcgI<gN
z0dJr`2w!+j`VS0x<4o5eR2gHX8cf5XT!WRBCi7{q4Tp#ZeK;gExQJ}5247c(Sgi&(
zE6qYZUO{nq-g#K4et$0CPN+c*UUm~Qew(RxK3Y%P`cyXC(y>wTS&A><d||F*?GXJu
z<UyftLF?w+DPM><>=*nlw8r8g;(IkX=L@rC8eH{-*n=7j_)ONWL8(8))@e}VkFgCJ
z%=bsxCJom3<7}G-yK#6@gVQ*<TZ0e$3ARszU;JU#jk-XX9)+4f+&qbSW!hytt+m<t
z%r8QFAinAhE(wUrmZNo9U0JMMJ@>0fWncJ9;;}f)IQsIYQm+*1$A)Bh8?FVS^gZ}D
z5TREf5{%Q2U`DW-eg>&vf_?=%(S8Rnq5ToA1V__f;d*cky#awxjNXFAP!%IOtO&)K
zONYmCDAS=o6l0@wxP(JMhijpjW#Wa4hzD4Yw$u_Otj^`K>LDy0tZ+3Or$Y-46Lsha
zk6}q2dc!qrx(@Gzt-@^FL^i4uH!-X=nQU6=7a){P*oe?$ZA#@cDMu3)A&-g*y3h`@
za@q9%mn>0RY!X{^POi(RQ>w%{WVu?fSuRM{I~S0L72hIx<HR9+jSeqFVl1n}<w%0%
zbr^_**%lq#(Hgd0hY8U*+o{9is8!gbcG|^vdL)%^&vfuo+~wj`*pFOZ<)@IlAI+yb
zyR!Huct!}^gIIQIH)5k*9(c)c0sEBpX|Bbal3tt66Iv>@rx3%9=%_-OT>i4!>lwaR
z7rru$gpRmP>~$8QyqM1-ba6N-NocvGuPM5>NGI13I#SXLita1YWIdsyB)wEnd7tBX
zJ7r$4Eb6k-?&n$#dEQE?{ZP>ZMauK~B>h;?gGI{o`X&9mn6}^ro_Ah0m%_#dW!`U;
zwwr5PyJm0Qh<7j|wcjgxNK#pIRMG*Y^2~aWx?79QGG*VdE8Ht^fpcDVO!7Y!Kdj`u
z?zqJKS5ltD5yY-myI%>Jo8f86+((7D*sy9T_9%Qz;R4TXNzONs@;=3R?$Hu^5zE}i
zMQ*!iV`T1-5}y#_xw)>@S!~)^DUKtS-}wEA^`*HCe&dfTGh7&v8Usd{4PpL|z<69&
z{F}&q<{_lK1X5-Qwwfb{C2_8i&(m5sWUe+(qFZLQJ<zt~&buGVbY$=lYvu0<CCvs@
H#;pGU0CQ%Q

delta 1204
zcmZ8hZERCj7{2E{?bfm3aG|&Dy}ci8FNGKp3EL9LLd*hFBaBJMr=K0|vYOI1WqbuA
zQ5Qfk#^pg10TcBH@B;}jf5>7CCdR1o$A-p8Vu%5MERy&UjnQRGc<;UBZlOP(=e_57
zzs`Hk>FncI*QWaVwya#$5qe!HQn}WbRvxqz<-M8g#GNBcCOZ^Gd2=+iLQZw+qq!nI
z9J)NN(^yr`iWNc;N?5XkWG3bl-d8(YikJzx_>60N)_?6|iG~Z2h3<m*-&>j<8EaT{
zGAvY_jv69~t5Hj&aU*JrWtfiY;t{B-CEC%cnqm#Ms44Ln_N!^pgHvp8z-Nq`aZ`1~
zcF0)Dex7?sxak*nF*bHrtL0+8qKL2vyHyKV7qjUl!eGpz8sR9@KEnB!NiP$=W_pb<
z#dM4iiCa70;&iH)ZXIK&``~af$aRu6&C}L1Msh>d`tXyL;XpqX#P+zc+p6_KpnX7i
zHEz;b!iP*32w%hvx<dFRuG6Q4S*FhkT0)~Q37rY^@V7y-UN>2P@xWZ63D$J4kxh(E
z{ReBsLQknY*XfV!;18vb9U8ah>!tj>Mt^2G>BT?IxL{Mcc)!OjLHHqIr>25LIX96r
zSgr5QmxEpXPKau0`iHPu)1RGY=a`pvD`VIhm_IzeX7_sD#$uDR$DLkjUQ-S1;74!w
zqW8}qUkfg2wrInoW{5cc&@5r1RX2o#<%|#EDLpA3#gJ}`PQ0OKL>E5R)1n&_j8EWi
z#$Kq&C88f)$)%~CT*^PlK`s?>2JX8wFJdH_qCtssNt?<N-!RoB?j$WbAkku2^oqoC
zrV)u=!=~dBH6ufBOT5GMuEe;pl+H-pHnQ}QM6>D8d5M*#P8T`AH0cwGikYHuiBbN#
zCUKeRD~U;_?<D>*ExInzW~Hs4f~g$xrc&Ftd+r|Gl*n0G`c>kPWz%mG?_17ue+HX7
z;%;tNzFsI*+%s!f<h_W0S@-Y8QPvxW>cu^K%bc^Z)sts}g2&u~1^*Z#3q6rw+Ocet
z?-}9u>>t>1*R!^3C|_4Zv+wyp2;ZkW+T6c|#qPVm_lt+1W!jrfUb5X~(TW|J0rLc#
cElzGnu7CZ;7fO{9x6|ssU!i0}xRG)00y8S*ApigX

diff --git a/lib/types.ppu b/lib/types.ppu
deleted file mode 100644
index 910b58e40de7703b94df2fa461517f373501d129..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1904
zcmZvdO-NKx6vyv*Gw+S_?Z=E-HX33=29ZvQR4dU?FnKg%BoQ*E!GJjfGZMCG5k$+N
zmCLp+qg^dpv<+(0qD5_kR_#m;JO6XuyHC&q@65UX-#zc#ci*{he1B=Yd@cT*Ow4@r
zhs|8VnC}a_Q}3?-C})f@{d~bZzKGoRc5}TIN4x|zhsa5adbwF^y?#2d+ygD<wYFRB
z^~XDhqhEf%xbPK|aXWGoI=SKSs1u5p-l(rORjuLHFydvf?+~99pAx?&J}v$ZeyE4o
zdzIx%b@q0HW9o8o?=+bX9>q9}i;#^3PlQ|~Oo)(=gp>%Kk>HBZ6$uFux+5Ve0<R`4
zt3n|XN;0Du34<c^M#4mx8xI373@l28iW>%rFi4&VN-j3Q9P=cxBR(cRF5VUIiBE{{
z5T6vEA``7LMn)FiCrIDLp)|#P6q9HVaxY(W5n5;;IMA1>4DYThfM913lQO);VT{?p
z#t;MyPgTa44eSPjfT8{j#%y2<2m<DED4ol{U=R2T8Cv`i#%y4l2!cGc;}eY8z@8xp
z7@p@P#%y4(5CjaZyMr+s*c$`^LqqRk%m(%r0XD?YU)jU`K91!$m7wb3<0C|P3RB>V
zN|+y<HA|321#F+YHNV-O;?tCql=m#*KvMzx=K+pS@+njL$x>7oTAnbJRQlOc+)C)=
zRYNJI-&oVK*hROcWiweR`_rak8$Cdj&1&i|OR<qcQ8uUakEPg3p(vYIy3d-H#b&y<
zHX5}ye*m;Bw`uUS=ta-pn%-`&^RsJe#!`HjnCg;?O8Hz%FH#}PG$9mg?#;^+^;?WD
zpkge#Pw}9|d5f{?e#IlUG(LcyAMDmyEj?zFaWE1>QF=g=uUOn|F-o6PJZUi+N3&77
zr1+*SjrQ^UV8@2E^t4SbO7cu&YjuOS?7Sw=F_xoQfREp8)Yl9RXJkhfnZf7)0by<Y
zBOf37C*6GP+kh!e@Jo0z)gYBaa}Tk@jnF9{eMqNSs=DmYR#xhp_4d&b)i~)P5@|HN
zm6M)doUe|o$h>2-u@c9w#MujP?#PLA&`)B{0e-@Bh`SD9Ttu^_N22N|DbG))9@M4-
N`CF^-%o9dO{{aE+p@9GZ

diff --git a/lib/util.ppu b/lib/util.ppu
index 05687614fafe71c9962730e0352d5158d98a4679..9cc785e9d9fd7253541ae6413b60c7d10f1e368d 100644
GIT binary patch
delta 995
zcmYL{&rcIU6vyZ7ZnwML-Tt6#<yTlrYMMwiBBBWgZYCO)6evaxq!y@lNPif*K;$4M
zc=E@gK7+;sTnq;fXky|?6ZH=u_z#%q31if&C-lv>+wS4b&iC_uZ)V=izw~}OnaRuy
zkBlmtz-0C@Gst%1jGZs-4{qK4IhkaPjn$Jw-4}=ZW=UrttF=2dw^07^;LpzH-??Y?
zwQS4~APyAO>DlS*g{$@N$3dzeI-rQ4;x-Hz3NT;+iA<U|S6g#~<|h(iG1sVwOcuFm
zjp0{tpaYL6c4EKeKmy05QRqTfnuC7)E%iduizzRT;5|qTd8?fEYn^GArC*Po^x0Xw
zB`2W|zsdJ;N4|~)WeIFNP$qP-3z%mR#B_i|57q+{dZ4Lkcu1OqQ|i1PY-&1wP&tfa
zIyiYwCr!CsU3M9Sq9TbtC^ts7N@IwzV2Va*kp7swnlF(P_ktXTu}hmYO;Vc$3|!G1
z!)n<K+|f9sP}gV7NZV%OlI|GMmd(VcI)}@6q`!tT?u9a@xV>i0Fop~cH_$aQrrnk!
zctG+rj+t5WSX++b3zNe-D%Q1VH_2M5x{!BywZb5VOO|8xkQksdtQ3T@WjSWA$gc5q
zPxxdFfrY=U(TxPjV2dXp6*;vw<n;#FBf9klQv@qj8E8IxLTtdxQz@FYHSR7H3zbEl
zr}cH;^_*N?o=c;sR99TOx{%SVzull4w77Vx0<SSJeEhPN9Bxv&4%4Tvh^D>LF^chG
zzU1cemBk$OV4;}1$(QMnmT!JTX3;vZJ1EM$LfZ)Yo1A*rqMZ#&yNLMoeG7_KP%3RA
x>ch_jMVrAEr&P;@a;-qGD~1mvkHLQ19o>~X`iO*5Guca5a=gNc+V~}Y>Oa>5s0IK4

delta 1041
zcmYL{O=uHA6vyZ7X7jPT$+r10sWGGpO#>|yYg>`li-!tAttm|lg_e+}kqo3sZBk48
zDk$ism-InV!Qw#$d+>vb^x#1hL_{PWM6lqo6!fB31%128CUbZ*^Z)&4=FPnM6#o~G
zBob5o14EV@z(n>s5oKRJj7|98-P?O|a5usj8>vQmd!y^YnHWt#w3aHRa(3~~-|pIv
zo3YQNF{xZx%9g&3ZJ&5C{C%LBP5Rq)t4E+{ot&9Wj-Hj0Gl|j3>W3JJ)mj)NJ=pLl
z^nin6Ctd~_RDGlz0|rdemumPNyx^|Ze7Hy0gZmH$A6kVl_{r+S5up=0a8{UuFm4G!
zh#E0w#6fh4LFmUGF(~)hX-|=MWOz=DKxpTJcp4ypyOwc>g;bblAfqO62w_DUcUT*m
zf;G~jIBcDF*c+OP53L+dp=O&<WzsB5#pN;sC+2NoMIk}Fn9l3-O&f>74f}-ZY`I)G
zXAdi`rptx5>>T3w%RY6yt!2~NB$`lzxAmTVq@GT*bx|)w_1CQ*qu~_?hjH9@JcT9P
zloP6#SR<!){4I0H;H;8R54B`B?kXInF{&ojKuh-Eb(O<a{Hac#JWR4ZU(BS-yjWo1
zb=UI&mH{Hv^3+p4VmFP2Xpo{r*Ivnz7q2<P>Jd^bC4R{e9y@!%g<qUQYxJ`ig!J0h
zzYGJrWNfXc2R^+-LXJ~0WJ3kEPUqB_E(rM|1I1(;#5#?2Hi~L#m6tQQY+-??DP`4k
z-6ofQOYk|^8YNX+DO0tbO5=d7CRWL$(^Up8lRjuttwE`@nn|~b#*MAr6g|0gzMM)I
z7E<(VnOy2TU#8o)ndWC?Uh^An{S`!BpfuXeEMF3>Lth<I7H$*1YC_#YD=7(&3EvRZ
z%LTp;iq^&KVkt}i(QBUjp19uN4=^lf6$tDcXpcm9h%~utDtTrs#S5HP1n|D6?>|2>
BwX^^L

diff --git a/src/.vscode/launch.json b/src/.vscode/launch.json
new file mode 100644
index 00000000..506fabea
--- /dev/null
+++ b/src/.vscode/launch.json
@@ -0,0 +1,12 @@
+{
+    "version": "0.2.0",
+    "configurations": [
+        {
+            "name": "Debug",
+            "type": "gdb",
+            "request": "launch",
+            "target": "./bin/executable",
+            "cwd": "${workspaceRoot}"
+        }
+    ]
+}
\ No newline at end of file
diff --git a/src/bios_data_area.pas b/src/bios_data_area.pas
index 4d8449ad..a124223f 100644
--- a/src/bios_data_area.pas
+++ b/src/bios_data_area.pas
@@ -2,9 +2,6 @@ unit bios_data_area;
 
 interface
 
-uses
-    types;
-
 type
      TBDA = bitpacked record
           COM1            : uint16;
diff --git a/src/gdt.pas b/src/gdt.pas
index 92e8b8ec..c541e01c 100644
--- a/src/gdt.pas
+++ b/src/gdt.pas
@@ -2,9 +2,6 @@ unit gdt;
 
 interface
 
-uses
-    types;
-
 type
     TGDT_Entry = bitpacked record
         limit_low   : uint16;
diff --git a/src/idt.pas b/src/idt.pas
index b25e83cc..38ba916b 100644
--- a/src/idt.pas
+++ b/src/idt.pas
@@ -3,7 +3,6 @@ unit idt;
 interface
 
 uses
-    types,
     util;
 
 type
@@ -27,6 +26,7 @@ var
     IDT_Pointer : TIDT_Pointer;
 
 procedure init();
+procedure set_gate(Number : uint8; Base : uint32; Selector : uint16; Flags : uint8);
 
 implementation
 
diff --git a/src/isr.pas b/src/isr.pas
new file mode 100644
index 00000000..c83c4723
--- /dev/null
+++ b/src/isr.pas
@@ -0,0 +1,31 @@
+unit isr;
+
+interface
+
+uses
+    idt,
+    console,
+    util;
+
+procedure init();
+
+implementation
+
+procedure CLI(); assembler; nostackframe;
+asm
+    CLI
+end;
+
+procedure isr0(); interrupt;
+begin
+    CLI;
+    console.writestringln('Divide by Zero Exception.');
+    util.halt_and_catch_fire;
+end;
+
+procedure init();
+begin
+    idt.set_gate(0, uint32(@isr0), $08, $8E);
+end;
+
+end.
\ No newline at end of file
diff --git a/src/kernel.pas b/src/kernel.pas
index 7f36ca2f..5e763f9c 100644
--- a/src/kernel.pas
+++ b/src/kernel.pas
@@ -3,11 +3,11 @@ unit kernel;
 interface
  
 uses
-     types,
      multiboot,
      util,
      gdt,
      idt,
+     isr,
      console,
      bios_data_area,
      keyboard;
@@ -21,6 +21,7 @@ var
    c : uint8;
    mbi : Pmultiboot_info_t;
    mbm : uint32;
+   z    : uint32;
    dds  : uint32;
    
 begin
@@ -28,6 +29,7 @@ begin
      mbm:= mbmagic;
      gdt.init();
      idt.init();
+     isr.init();
      console.init();
      console.writestringln('Booting Asuro...');
      if (mbm <> MULTIBOOT_BOOTLOADER_MAGIC) then begin
@@ -41,6 +43,7 @@ begin
      asm
         MOV dds, CS
      end;
+     z:=0;
      console.setdefaultattribute(console.combinecolors(Red, Black));
      if dds = $08 then console.setdefaultattribute(console.combinecolors(Green, Black));
      console.writehexln(dds);
@@ -58,6 +61,8 @@ begin
      console.writeint(((mbinfo^.mem_upper + 1000) div 1024) +1);
      console.writestringln('MB');
      console.setdefaultattribute(console.combinecolors(lYellow, Black));
+     mbm := mbm div z;
+     util.halt_and_catch_fire;
      {while true do begin
           c:= keyboard.get_scancode;
           console.writehexln(c);  
diff --git a/src/keyboard.pas b/src/keyboard.pas
index e51b734d..3ac2b5b5 100644
--- a/src/keyboard.pas
+++ b/src/keyboard.pas
@@ -5,7 +5,6 @@ unit keyboard;
 interface
 
 uses
-     types,
      util;
 
 function get_scancode() : uint8;
diff --git a/src/multiboot.pas b/src/multiboot.pas
index c664a57d..e4e2e85c 100644
--- a/src/multiboot.pas
+++ b/src/multiboot.pas
@@ -1,9 +1,6 @@
 unit multiboot;
  
 interface
- 
-uses
-    types;
 
 const
         KERNEL_STACKSIZE = $4000;
diff --git a/src/system.pas b/src/system.pas
index dd3e3d48..f29fd1fa 100644
--- a/src/system.pas
+++ b/src/system.pas
@@ -1,15 +1,46 @@
-unit system;
- 
-interface
- 
-type
-    cardinal = 0..$FFFFFFFF;
-    hresult = cardinal;
-    dword = cardinal;
-    integer = longint;
- 
-    pchar = ^char;
- 
-implementation
- 
-end.
\ No newline at end of file
+unit system;
+
+interface
+
+type
+    //internal types
+    cardinal = 0..$FFFFFFFF;
+    hresult = cardinal;
+    dword = cardinal;
+    integer = longint;
+ 
+    pchar = ^char;
+
+    //Standard Types
+    uInt8  = BYTE;
+    uInt16 = WORD;
+    uInt32 = DWORD;
+    uInt64 = QWORD;
+
+    sInt8 = shortint;
+    sInt16 = smallint;
+    sInt32 = integer;
+    sInt64 = longint;
+
+    Float = Single;
+
+    //Pointer Types
+    PuByte = ^Byte;
+    PuInt8 = PuByte;
+    PuInt16 = ^uInt16;
+    PuInt32 = ^uInt32;
+    PuInt64 = ^uInt64;
+
+    PsInt8 = ^sInt8;
+    PsInt16 = ^sInt16;
+    PsInt32 = ^sInt32;
+    PsInt64 = ^sInt64;
+
+    PFloat = ^Float;
+    PDouble = ^Double;
+
+    Void = ^uInt32;
+
+implementation
+
+end.
diff --git a/src/types.pas b/src/types.pas
deleted file mode 100644
index fbc712f0..00000000
--- a/src/types.pas
+++ /dev/null
@@ -1,38 +0,0 @@
-unit types;
-
-interface
-
-type
-    //Standard Types
-    uInt8  = BYTE;
-    uInt16 = WORD;
-    uInt32 = DWORD;
-    uInt64 = QWORD;
-
-    sInt8 = shortint;
-    sInt16 = smallint;
-    sInt32 = integer;
-    sInt64 = longint;
-
-    Float = Single;
-
-    //Pointer Types
-    PuByte = ^Byte;
-    PuInt8 = PuByte;
-    PuInt16 = ^uInt16;
-    PuInt32 = ^uInt32;
-    PuInt64 = ^uInt64;
-
-    PsInt8 = ^sInt8;
-    PsInt16 = ^sInt16;
-    PsInt32 = ^sInt32;
-    PsInt64 = ^sInt64;
-
-    PFloat = ^Float;
-    PDouble = ^Double;
-
-    Void = ^uInt32;
-
-implementation
-
-end.
diff --git a/src/util.pas b/src/util.pas
index 07551b2b..ce3eda55 100644
--- a/src/util.pas
+++ b/src/util.pas
@@ -4,9 +4,6 @@ unit util;
 
 interface
 
-uses
-    types;
-
 function hi(b : uint8) : uint8;
 function lo(b : uint8) : uint8;
 function switchendian(b : uint8) : uint8;