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 zcmbta4OC6(8a}%}r#kAC5Ymq%O`=p1Qb$gmMvaj1nHXaz8e)vUv1X8E=DQhYR%;G+ zj60WEbMG)~=1v$l#&S&(8e=LkA|W&#R74Urx_jH-cb2SYyLYX-*vEFB=Y8JieZTkH zXYW%vI}h08NJl}$de5k^u&}7e=+IEj@X)ZR(8w_M#{T5>-}SU}b9NhT?#PdJmrpdy z?VtO{oVd+L!Qa^y3-JAiw@r6Z2%ftm0l_?L_i_cV+Wnk>YcR`W4%*|d;Hi6%f&E|X zS>^EZ1O>05yhjUIVO0f4*X+MnRAm3XcQlH3-sh*_q5B}ddY_-$vqsryG=lWkZt}#G zDQ3UjLx9-+#(jbIFD;_;2j+H1ez-@M72th3dXU$1(120|AG-DOKK&0VeDjt42s zAw|JT5i^ROTT1K5n7=P#OL?vcSu_V83sB-ykHPp|$5{NSV=*Xy?_#zjV~Sz?r^PJ( z$71N;@pzz;KjJuy|M)nI|L!>S-+7$*A6x?ctt?^wc9g*U%_Tufe(w_yUwVT1`|<?T zZ#=>D-A}^!c_#yVJR3=kGLpJ+NogsDRI}muaMaGalfx7{o~NK(_9?d9J22jSirMul zh3(8PW$oNt3d^}s%F5CH0^_Iu!s2r<UcvFUU!Z>CX{NvMG}J$G+F#khtX)p=<C3SS zH7oL0W@g5(a5jGUmCZ&K#)Ho=JnamO|Ayn`XP{ZX-&lUrZ*Z~x`Wsu!a*PL*vBgR) zgYkbaTg--`95!=aIcw&oa_IkRIjc`w0rh8Au-X5l0@hbu!RoU)3-za-W%_H*!uYbY zEWQ=viIogrR0;KqDw+OmjK`c~c;-1+-{EttKFc|%Kl*$?*I^rPNHeMp+kx}U?B(+? zS=jGvF=zY^@x2_s{5xz`$OWdKb^*rkxv+o@Llwlct62X0DyV;}is|bw!uX7fEI#id zjIX`O;<cAxGt)1z#rO#07a0C|H4L9p&B8ydhUw2#`|F>-jyf8X6U;kH!_Y-E{xaJa z^Do0vk6dP@S}wy}(KW2pw`w51m*Z76P(S1f(<fJ8{GKaJzx)d9h5uF7i{z_t-+ys+ z6&r<XP(SM$)6c_rEyuOBFn@Y2U&>mTzp|F~w++WnxX$92U5EWCy&j_Ye}eIeH`s^V znj0{_lH)cvAwKOUi>DZ`zR9i&+Bz6NvyQD_F2-v(uKfeY|H0!iUc+&1J&v#E@ffeE zk7Da@f$`ZEev^RlW{&&bg7M35vHpC8@kh6qzX7*l{L0%5{|e)eZZm&_?!fpD?y&fO zV7&bf^EbEw#;<N*__rAE<oJ+A7{9KO`76M<eG{AC5lwJ^eB8wL$G1&zf3`QV{W;(+ z+<(jO{*A5gJ%}&3$M)A|jMsBq-yGljxd%u782MUCKS5mgg;Njn>gGO5rtQtJ6L*_g zC%o@NCrj=#C)@ACO7Gn7dewF^8IsL$$HUQ8d(H#al}{ePTs03^E{7I~Pj3lOWZA8w zv&op8JW=g4qOyf$d(r}(Pk6}i_a4G*B@daKriX9_Vp`b@yxj`p545uQE3L5e;g8r1 zzx4?E+xut^n~^rCzo6}fdz++*lc%ZO+tjtOVs($9*sRCQZ0=)N?1jgy*pA20Y|0a+ zzw8Mtw)6=rwiV+O+SvtRMLW!2($4bVZio7@9W4Hx4u~J^2v?ff+5!D1{>l6=`V;o2 z=ug(4+Zc~|%J9smF#qAFfv(Tr+-P6&%+twAeWMdv`Mz`Bvr@Kr3aFGVS%Ol^mOKH) zZ@D2TRz;lv1;m+x@WLZn^3(}xk7(j~iT%uv*dYjL?ZgQ-f>M$At_`##7Ta)74K@Pm zpJ=cZlm!+S+G5v7Y`Kq{wpb(Dj%&=d!;C{##!VGQw7sAVvY2U)H4fYJEPvSJYNH*5 z7p`L|#uRDm;(J|jzXLDqk^>eD>BigldN<shZ@LND$|8AcvBm-|*VwGZh27Hf!aN+Y z#ym%^k>`jt>KwU--U%}@oH!%T3D;8V#QULj#y--WxsQ)j7#BEWs}3ibq~l56*Wsx? zspC`Kpu?pYy7N*NcE^k&E2BY$VQ}H|w#Wr*6k8ehT(HwvSAl(L%D-}X%{VPy{-p4N zw+`I}&7zEzbHs8VA=G?LaNDXEJlOE)al;qrdBZoWFzT%gy&LZMY&YKVTsK^4jT`T$ z)*Wk1cjp>8?zk6a?tIl++;Ntq9ztN(?+hlI;*(T9SH+SZJYz!-+?!Yr-kbRzIO7oy zUYA9M5z~`1=J!<5=*j2gwhAM*7iTQ&g*A$-j3yOEd~fb!QE#kK+*_E$X2laTvOT#* zz6zt!%JA%?qS1%fvR#F7w-3+Kw=dRM+?O-9t1#~N<ypM?VT~pIxW*0@Msq(Qr0X=L z8qy4E)3nr!Pt$fUJWY*We42Xo$DS7S=dSbn<2_K{pYH*kH_kH4n`g=O#yjnzH*>nx z2NNdw@KWCQ!8T6%2q|n-d~qq+zJl@?CVuIQv)uLNS$g^5QnLJbDWCh{EcJdu*LyR^ zRAP2Ji@v-UXAj`5qXV#7^#DE+4*r;t?#~%ig;8x~I1I#fPaDYVUNaEaT``c?{X~V4 z62KWN0<hE50o-Y;3S+_`&R8)BJ3TpwJ8e>7#0GLkW+1NRP@s^`CS@>onmyP$DJqNy zR>r^}tg$LcP#%TF-9gw#dyvrekxMtlI5|n&r57T=<F2^!72e>TuVBFkR)$wFHnk*} z@8&Oqu|{(+&(e1Y-e_4v_|Sef1ZTN1<b|u0^OR(x(Y)><+yogRe8Dz_V7=N9?%HK2 zX3QDN2j{b)xUSlvye_9<SYy^Oo@LW8TzT~{A({<NDAvdh<v#LN7>!njXPAmcm{lVT zZ-QH4ykq*|SR-RN*T_?0)L9w&a21VkA-L;jO<F>l+Rq`yx^V7E7lFH%9>M1(Cj!@1 z5y3UuR5TJJxyHgstZ^jr#iz}*$y3#SMk7X!;2CF(z+Koof_L)r2wYci6!(-Gg+1+x z5|*;L8HuNJ!N?ab1x`~FrVLm6T(29+UF)K8#+lKAf0r)^9H&Z8+)Z%*RYr6FZ7OO> zqj<h|N8v7&j1rWeT#9WfjFi#*lDcLz)~FoKH5|rZM*0{bOzC6Z7~IDjWB4xD#bAxu zG5oTe7lYUHY7Fm(-B_Gu+E|_?XDrqz8!PyA>A%bCiQ-*bVI;b+C&ls+TNaC#vm{oS z$Ob45GqU3N66M9=!t3IA7QF#8G7OxNCow$X!(2Z>BNl}@^bnsK1W(0M-*H%O@i=}x z-J!y09>>?hHy&#&kLQf9RTz)sU%cHS3FalOaMG8K=PR2(9<N)ym7z0YN3)H*Nt;v{ zwMOn)pMV!@b^>3l+yw07LIQW%k$`<nO5{F1OvF=KmM9pXt&myem%9Gz?-GeeO@i{v zL}HZ*mlBl3OG!<_j9pg7Da<JB^QzEp|Nl8HH2myf=thY^i47&Tl-N;XPl*F1(wkaJ z94T?4#F-KuCEY1;p~RIEJtc0GxKq-D5)VpxQqqf(-jsM!(ub11l=P#-i<177cvIp- zi7zF7lnkK6pOS%;1W+=Fl0ZrZQxZhUE0hFNGK7*4N`_K0jFM1F!YCO|NjN1DltfZ8 zf|4joMp6<@$tX%jQ!<8<7)r)c5=%)OB?d~yQ4&wdcuI_vBv6w0FJcPtUF)&YsNG;} z+i28nFt%8-95outM_TFSs<ZU+j`XW*2krEFjpZ%r_t-WXTViYqz7Jj&@{{xhjRZ(9 zmfjB1%XOLODf323yn}J_*-+`svdu|)884$I`Mpch*`}0+lg4|pfUL5X$yC@pg6 z(b%xQO}pGfNg-)yEC*yPN5L$fQr73NZ8A1jPOwZ)@RNMDNj@u(&J<oZS!0RJ8zZB6 zGCEm0lM3G$x7N-wO@4Q${O)S`>}&Zfoa0){NGtrNe0ETVJ*=?3#a5#!vN*+A^fG!% zMn_0zN@^E5^&`o#<(PCP_3zo+kCxw)d%afbb*b$!t)}qfRi?S!Y+M}+@8p<DY}P(0 z{`AK|5?{mq$#mVF>AEx1A=7)>>ysx<Nu9c(&QjIc*?F+VUCQ>)*3M2#AL+lPBz^iD zZ_di}$?TTtx+~LlPZ^7s`13!L<bJy5tk+~7(rOAc7Hx+VP%J0WXfpG<{3$%T-n7?t zYp$tWtjaZc`9<03HHp%ZCLOb-W07=xARW2Vu|+z*D(t?&R44S)XvSx)$eNqs`}Qi| tH!|K^>}z~~PR6^-vKB8ITG;rBsYUk}A>Sk&Nz(DEbWA7|@{>CY{{wUcbeaGF 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^<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 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 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 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 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;