From 81363a9c574a23aad87d2eb2a26b3e60e2cbef52 Mon Sep 17 00:00:00 2001 From: kieron Date: Sun, 12 Feb 2017 15:03:19 +0000 Subject: [PATCH] Cleanup/Refactoring. git-svn-id: https://spexeah.com:8443/svn/Asuro@14 6dbc8c32-bb84-406f-8558-d1cf31a0ab0c --- Asuro.iso | Bin 11307008 -> 11307008 bytes bin/kernel.bin | Bin 14856 -> 14812 bytes iso/boot/asuro.bin | Bin 14856 -> 14812 bytes lib/BIOS_DATA_AREA.ppu | Bin 0 -> 2006 bytes lib/bda.ppu | Bin 1866 -> 1919 bytes lib/console.o | Bin 10992 -> 10576 bytes lib/console.ppu | Bin 14833 -> 14439 bytes lib/kernel.o | Bin 3048 -> 3036 bytes lib/kernel.ppu | Bin 1235 -> 1298 bytes lib/util.ppu | Bin 3087 -> 3413 bytes src/{bda.pas => BIOS_DATA_AREA.pas} | 5 +- src/console.pas | 167 ++++++++++++++-------------- src/kernel.pas | 63 +++++------ src/util.pas | 27 +++-- 14 files changed, 133 insertions(+), 129 deletions(-) create mode 100644 lib/BIOS_DATA_AREA.ppu rename src/{bda.pas => BIOS_DATA_AREA.pas} (92%) diff --git a/Asuro.iso b/Asuro.iso index b25b3ee6724da18ec95e840af3cab5e842e77248..8b3c9d43a6b1dc04171e9f87b464a9418659adb3 100644 GIT binary patch delta 35460 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 H)+zr3BZh9> delta 35432 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 K*!rM{LE|q&*TZH2 delta 914 zcmYk5O=uHA6vt;bYqPaRH%(%D5VCDP*0iV$AjkjFm0F!tB?m=4N+^%a8l>ea~rQ z84b+-B4U^!+by!)A@zdPO;lTT`v;mDb~G~k5!sKBX_ZXpNv)I0q2j(m*-gePWDF9n z5{{r+$jS>D$?l`Y8ZGLi>ZID5ShhP_*h@+dAl|@=e7C&Ab}{zS-g&tq*k5tA+}-4j zL+)n#u&+$bA0XbUzk4NPZjO?tC+8|z;f)R$FlA|cVmuGax*sR)VCmho2)FeCo>%n< z&zpLfXOE%rY#K41M~sGV-stD^XNC@grW?K)33qOCVtVr28R&|KS~?w%wDgEW&&6Y< zwfILtP+`dowyR!+sXdIT@Z0ox$MEEM4Xh2H43Z4|G`obWa3G-xD{unicbH9Rflf3v zeO2^Tv4TPs0>chcLsCO>oRfb<}lqQN2{7OYd iS%SUks5mIWVN633oJ~iCQ?Qsmv=*=3w0>^ zJ04|%s2fCO$t{w*j81nVqgRltbs)?19Cd_=drjOhxeB?%=xW?d1A!?5MJj)$aud4D zK%Ksek}4%KxfOD&$Y%yDI=@k~kh5&Z+Q(Y0UKbd9p>MwQoYOyGw9rh&FX(D}Zbhf_ zv}KN2QR9dYA1}SM6kD7z!FuHCx7C%>D})#;UXXumfz!$k$STcHP`cr((g8NF4Ewxp zNO-#-=k12F*8_Dv1^Rt{nD({7ZJ!Kp@mlqDI`-Jif2@04xAOF>S7{Q=3AGNpM;^Dq~X zxOq4haC2{97WF&aLA60SVDA`2+8D;VeYohxy4z@7Z%`T&&tNL(wyl_G(T?{D<)9R4!dGFOUxE^tF4e&U!x6woY K*!rM{LE|q&*TZH2 delta 914 zcmYk5O=uHA6vt;bYqPaRH%(%D5VCDP*0iV$AjkjFm0F!tB?m=4N+^%a8l>ea~rQ z84b+-B4U^!+by!)A@zdPO;lTT`v;mDb~G~k5!sKBX_ZXpNv)I0q2j(m*-gePWDF9n z5{{r+$jS>D$?l`Y8ZGLi>ZID5ShhP_*h@+dAl|@=e7C&Ab}{zS-g&tq*k5tA+}-4j zL+)n#u&+$bA0XbUzk4NPZjO?tC+8|z;f)R$FlA|cVmuGax*sR)VCmho2)FeCo>%n< z&zpLfXOE%rY#K41M~sGV-stD^XNC@grW?K)33qOCVtVr28R&|KS~?w%wDgEW&&6Y< zwfILtP+`dowyR!+sXdIT@Z0ox$MEEM4Xh2H43Z4|G`obWa3G-xD{unicbH9Rflf3v zeO2^Tv4TPs0>chcLsCO>oRfb<}lqQN2{7OYd iS%SUks5mIWVN633oJ~iCQ?Qsm85YF}w=o2Hahtp>GLMXmS%L6at8skNbrpoqk1QYmUvnur!bdJw#N z61^2c5EL&K>_zk<2wwCg2%;XmN>5T-waz#H{@W&^CnxO8?9TVi?!S*oDs_D4-d^>B zlt)bkwR&8m)P>m__dR!ld%Q}ic5aX+ZbX52|4=%ch-G5g*l;oi03Am-3{N*#hPRLB zN>iJsPqZND@s}n`<-(|b(xmWP#ZeD;eXiqootppd_%IQwUuWagD@GpzJ?$-7|ti}2jhX7;<#kKj|heM5sg71h-H zxC2?^7|{+4$pG8MJ8xl|3@pgjfgu54y^3lrY=?oZvoKsfz;-LDv#|XJ2DpwmsZ* z1dk$cBsY=2lA9=G4`0lkFDYuWgb_oSV(Soac!7b!@4G|VNA2_=B6V7)(wf#()h*PWOlHaFDPoZ@ar6eOp{U@*y;%Cjz69& z75azxeOus7pjaL-a6MZc39|NOM$cW~Pi(a~tQ0cKxQ%ReWHsyBBZ)+|uXuT^tSDr$ zcL8L1#aL%Ma08dOBVEo-Frm#7?g?C}H%xFo4wbIKZbxz~uPAKc4-Nd2&5!p|k-yBl z(QXMdhA_tjh+b@CP2G5u&oID(6fe0s5RwN)3%KGDjCQh8RaKiyF3BSTmpZ{Twb@2G z5NX9cPEjC#qcC3c2*iownR`=m3p8{U|=qw1_nj zcAJe;w|?R=ldU);73Vg_dI0#$&6O|gXntQo`Ezhbt8H85zf3k7&5n+ZmY0_3D?{f1 zr!Hp~4ONHwkM(Dw*=Qy6FNvg*+4bsqlf+gt+m{;W9uy|TU84~GLBmy3xr@ZgWCKZk QGkItc7oO6lTVZJFH+PrDtpET3 literal 0 HcmV?d00001 diff --git a/lib/bda.ppu b/lib/bda.ppu index bef3d5222aa30c99ce23ca3b1993b1062e5ffbec..0667234e0fbc40b6464e1d9a304e7648b2c732e6 100644 GIT binary patch delta 226 zcmX@b_n%KOARyGx+?e42BLg!-g8&mlI6DJ_$}P9bz0qYoEDQ_`5)&0QnVmEiO!UoW z{4;Uq9eGw}pePd~0|as~G5|FKF(U&j6Ob0)yo!;Lg^_jg8rBjGRiFT)m>7^`iFa~w zWMGtKV+C?R;5wLOVYmyV?@yLxvl4p<7J(2?ffN%51A_qPOUT@?UZAtz-3 delta 158 zcmey*cZyFjARyGx+?e42BLg!-g8&nQ5<3G!#mu(0(^JGbSQr=>#3w3hGC$0mKhZav z@zcbecSIQ(7#TPi8Gy=xn2~{%2}p}=-onVp!pJgt8*9nrP&RYk>p(#mxIK9$n+f+5 sAom$ah*56x4YpKSF(8vi#mU7nUPUE7GcU6QD8a}IR>1IPaumBN036yOkN^Mx diff --git a/lib/console.o b/lib/console.o index 37ff6869d5262d121ee432579751d242a172f8d2..b1cb47ee290f57104612910b6d9414e25c6ce3fd 100644 GIT binary patch delta 2541 zcmZ9NYiJx*6vxlZ&SsNMc6WC6F}v9$?0aHO$gb^58#E?TE2e5=>jTset(Y_sk<>(@ zC~m9;saOp?VyqP#i-->dqxft!Xi-xAU=@@`Dz1n`d_WZ{_(eQ-_Rj9TGjQk5|NMV* z?zuDf&YZvL%+7_h`ex5^_Hlo85t@eqD!jzyIQ0g2;GL#z>r-5}*uDnqlCObBsRuf2 z-wWMbv#0@H7?AvyDqJf8EwEbxeDILu`{0n|x5Dd^-wGc|ejBVwejEHL`Bgu3sP&5L z75X8|b$tfyFf94)uuJkgU`Fyg;4!YZ+cOTpE0Q08lU$dXUxgslBp?X?a6M}$2tm@r zN~<3RgrJY>2?`mY!wr(J!vxpuwjYLrk{^a+f?qW##b**=zz+goKm=5ck8UT7fXQ`z zfG7+}eiUxxy1qtY@QCEcV3F%FfGQ0ihh+(f!z$Nldq5Lvl5fHVt_!xGfPj}S_+dZ- zvRwC2%zz{eNq!P;;kpm@GN2P?B%l+X;QE-IAO%a3pMqts=gAL48cuV4z}6Y~h3l=h z&Vqu0;EVWfum{gkQ$xcz8tTJ`LuGs~)Q^9JN|@J6c)MP~BYGLX(Klf*T*2+(K|B<` z6u+cCU~IwbjUjy67{u?4E3i9qCGL%saVgS|-$weiT_fABA`!z}v7%znJfEa7o; z0N2bi8i@hCCUFTqnkeH*Y8Milv63v}N-~d6Q9F_B)n@igj5G0es`HH&#lq8ROWBHl z(Rmh=8B2K%N9cSCr!p2!W^`Q2B$OC_K(Wj5Cpu4JTh>wzV>xT7A1iokwy6HD;Qnk; zN#U#HjN;dHeh~j9|1}k}xuSYb#nD_*3E;k*rCf$ba+Z3Z2R|j}s0V+eZpDK}zNr4} z!NGh{X~#WzOWBAA^Om|p!?(zp)9`!hj%uhDis~mCZlG>m!<_|&KTxpLjb1!XvD>`( z1$C2N{JT)RW13#Buw$Sr2#{cFogdBz=YAKrDGG3yFARn{+QLV0TJtH9QME43W8HfqjMBd(VO<5+19H%!+e*V%s6Q={*Y$s$T zJK!@eFkJ_2jy(d0TXAtEf%D;YR;oHIMA(#^JHzxS#FEDZj>R2ri;LSWaDIWi)5T5K zxvE_<`+_+MpLBuqLPGX0aJUa$+yZf%$@2;91hTP2Q7lyO1&@HG;e^k&5wpAo>2 zkZ_xeJ1cPXvKsm3TwIMf=Cgsr4oBm|%P#P|02&TR{aF_Wsb<26z_roR6DOhz9IgFE zf%}N7ieQ?+5&^8jxBxD?5{?m<=A0>TCtTb#an5#N+ef3u9{rC^j?Ew7Ss@{9p$6!q zJH!It7Yd|@)ZhkO+^@pGblKp1w1>oedKdk?=LyJD%Lw3r3tZ@Ga#?|6e=sRwH^34t KIF>IbaQ_4Cgz$a< delta 2908 zcmZveYiJx*6vxj__LavzX7-&;yR(n%wrSHO1#L_TZK$!)T2s>$S`bsBsjZbJ)PPMv zH(HTc`yuK1U<*o9L=q9UQoG?*IIM zbMCz}b7%MJz{;L!Q`=>Jm^)clJ_psq01Yk(IYQBZ8d#{>Tz@OHm-}wGtN3n6yDEtW z?t7qHXqGj=1O1BcEyK71cwtHbd~iYWeekK``{AbI`{6IeuZ5IWnNVc{wa_YbWrF28 z7*v2dcv=DKVOsI);Vs2)fJMb`fM0~(!B-pre~mnW05l2R!Td4=p-%yV@VL<9yg&$E zRs0aVA@l+6hv6&555o$$H(t(!XHFhGZl(9ACz^i*~#fB_>CU_b;;D}DstQT!-; zulP~8C3NK-i9yz54bR?z7;F-H7mZJeIP6n^IE)Ex(sc$TU|R7L@V3y++)u)S;wRxJ zp;vQ11$Pub1qn7YI@ZHeY=B1CED|iq^q|mecNma{F~v{Ai$YJ5uY(C^g?^dqEPO2V z{aokZ8U}*recSpU+1>weFJ260yrTPc(6rOb!5+K6Hq>hO_k=du{Z~R8?EZYH!|vad z`jPOxcD^rMy>=pekDb3LF-zgicD_m9WcLU3YW|eoW#hneN$vZgSa6>yL%q!#T6rlXClGaF|g8w!qAX)&t8aB7d0O_hYcw|4n$XB zAmzg&6q$Z4+Rmcqxub{1M^KMvd3IT^$6L|Wyk8ev!{f$S3y+Tpy{rdtCRSlS5Z?9J zdd_&_tvs?i-SKALAC9;2I1}&S@e84s_0Z`=o~QDOiZw_vnDXL@L>GQz#Bni^^gl6r zz0w6i(3jGM>+r za3vGQA2UfU?ZQ7YMb}PDnI+fr*hA+zJVfUuoH0vUT*J#|QQM*6l38?}z}hS;&_U-v zabLEiwbbBC*`oGj4ZfExy57WVYY{)s zm0bVga;~IhJZR*L+IA0iQ8?_uVG1)IJW1gb4}O#{x_-v%`I1)SMXgZO)_JjoLZ=r8 z3dP~Av}vSI88ig}eis{w_7PYg`aTEejsXn+4>v$L>l$|bfi&Ln#c`z&E+0$-Bq>#( z#y;2VgXO2Tj#@1>>zE{N4GG4vsaYI-xfJeQ;@I_!V~oX3Ik-9E!tATZK=x6xz)KGB zN(JN`TbjlF=HRYMoKNBsv~YPLze=2+#WD7s;+yCax?O9FxG1 z1YU9!JSK7U4DEuq9o!^w%x4qSC9X&>kQkS(A7EMn4GG*|1vxh>aS@3->)_@jE-G<4 z-AZ}ESDI-2b^_Q8;}W>V0j^L%Q*a51JM7@XtE#(%?JBbQt$*FYbrNTiS77T;QM14= z9pGL9tqC?t+}{pvN*b8nTf5#5w6)|F&k;9Cet}w++Fq)|XL#2Ew$nd`N%9z&qh@g> R+Jj0#;%4auW?Ww4{sTxHO|Jj| diff --git a/lib/console.ppu b/lib/console.ppu index 3a17f7a5c2ac1edb50f28c5ffd6d85b070a15cd4..0de019db6baed6428421355d93bb959e0e0603db 100644 GIT binary patch delta 2491 zcmZ{leQXnT7{~9qy|A_0+O6x`wcWMXj=FU(T{gB(VRIWV2g41cte|~pG=#aBM>vZ6FZ}XuZ zmv{NmtNW%`z_%P-1+8m4H-%TWbhm_Cx>mL9JoDn)8E+WtKb*Us13DbZ6+w@4xo*hA z_h_Dv7jsLX0DsH%fB_419x!51=Y~Sus1ukUXu_yQU(+&d-cER0IjO%6LQN1FaT;zB|TW80n z&h@LpJ|AAyFNblo=gC4i9Wtgsvw2N$7|-R&5W}C`0#@e7c$bK8<%{q`eS(r*!ai*vg7`F0mD-Ih(n8sHOGCYTU zl7P1jn|Mz#t}}`-gTqEym`Rs#rAS;h_VAJ!D+?L>NTCcbD-vf4xA8uzW06P;p(0tB zOP44~kvLJbO)9mkxrCMAIc|{dX}L%ySvZugk{ZaIsh3}B!Cy=wyoA}sGQ5W4qJZPY zTY0|~FBY>vZWhbJv2+P{N+3Pv0lv(NXU##rtPF3NMVLc_MTQf~-}AJkpD(xLHA|2$ zFGZtOgnbya%EJ5Uf>Mg$QR@?Yz=HGEARmx0U}J*qHW|Lgn*{=%wr%Gts7Cf6U*W-Z zb`f61VY@6`{eQvB_CdbNj!i<4uL|IpAi_aBD9G?L?lcK_SJ=T%%3Y2z${l%6tysXLelI*O6^kSG6s~g5y>3F?zpj{c1#eKbl zgC*HYmI_gvNkn#c+vvz>oTFCK;dPT8^|FR?faZDl0nPLAJ1=V}x4f*O6#6`^#^muo zM-H+{!9fFTR46X1XK*MH<)APLoF`xjEei@@A)C1--uDzoT`1vmg9(rLJk)7Ep}84< z@Uc#F$HzL2qm*@;rc%%JLZ`VyO03h^n3B1aDGkMj5*#>^l>qJ@5v+rOc`4bf$Vjx0 za&oGVGbvTS@|aoEL^LrF-O)EWlITk$;zRwDENYhu>j-u!@N^m7a`(h3tH>Y|6jjDZ zjHoaHvU&xXAgS1s9Jp1;LXc8vb0tAJ3N#d>ustf_)Lc~)k@U1@G(NzA#E@x9h?6u| zHJU3H%?R~rpDOeKK^}Sx=327(De*9@RK=SFzPvRL!YTMW?1Y2&m9{&0(wNkVVCmDpaUT zbGS-#n5-4Us#L6(FfRdMmdP5@s>Q(S1#p_%Mx3f*j7@?4(1sTR6|nNueBcs5Cw^1ug$<`}Rlb`Ivv{mdcFgM+x-ALO z_c`Tz9zK=5EWwl5GYtV~!gm@_(4WT$Pa6=EmQ{WxQpz1d_ClW4*WD! z3Eg-jR0o^U*;of#aARX#eNU!RUaG`B)|BYV%%KKGL!vpD50fnjPmT@rC8FWTWPE}( K#d-X)vFbnVc<)F6 delta 2981 zcma);Yitx%6vyY>K4^FQ*gp2rea+77w%tCqUFc(rl!qmS(ECBxh$i|6m5lna{+XrU+fW|raRkjy$@y~1t z^034tK|ZcA`M`otn?xwU!!$0$b9B83KcaCleoxn}vt}7==%;AMO=ijFuw?KBd+C?Y z2Xw&v1RgOf(2d`DohvrBZ|i8^(u#M?&2R|aIf}g3oRp+sfjJh5Xdn<(;TLk&!5m&8 zct{Ud8Ng!h2y>U?Os)vW@%>yyPUtm~fu=BT5A%9(Bu|8sIGv}!1Wvh@%s$9_iisj_ z%@^S%9LiVZ!}^qdgOs=OJDJaor4|uh##W0WPw6$K2AX#)T}<-K7I2BLK#`B@B}U5} zD~QT|F;zhj)62C(_-U{|!z#Ua z+8$<=m3ZCG{oJ!F@(sPT+CZu}dRUc+7ad_%Re`r1A|O6;DDt;@snM#@l71GF@J30P zh3as=M1(icw4Fv^Hl}BCwllUcv}`AGbgz*u{XN--a&{Js`Ts`-9KxmQpg zC(r1xQB2>Q=s6@nL2CYUn$M!EuH?LfV#Z+0;CNi127i~56=6nzH~6vuHF(?<;2nN| zq8(oeNY5^I_=l8)cX%I9VlAbZ6B`*G9T|*A2Zjg61aPLR3c>=BQj#j8n5$B;!FUht z(WPSPwDsB~R!$L{a@~^xxYbz`&GJRST0yZuO)`-f7>mdHc_OchS_tJSz*)+Gy*w6~OD&IeS!hIn2{ur^RET;d5Q$DA!y*?P@Lgjl^1?wP}7D*TuR z(>DddlZ*FLD{}mx06~@BpxJIFdYNs_HODJde3RySy^(9qR;uillo7iB))qtCoUT&o zotlx>e;G*?o8uuB?+I8hqtIY*9=E>xH3Bq1d1e1z3ip4rbvfv!ARrB|0 zcD50%uS=@r91pAbehuHT9FL6*_0sbfkMT}0D!{5#w*=vUW~P&yiK=b}hGU8NP<(hS zO4;kx?9XfTuK%E^Ei|a~VWO*v1M6;z4iqK3lja-M`D5CA7tNzrDhUY?QD;xkY#^!b zrfAWe4aX-2X(s|SVOMY#n(?RL*RT#ht#}n$aA##TY`i>K`31l>+)?d^_RHhd7c=SW zL#k8!56z5HsRvvB<)(J#%P-cAF-rPZLlvyW(#BGF9NQ?i;&YAVuo=%%RPbtJ1w4sA zQ*1+PM1rjtiG-j7X_{<=qID5U!HXCF4^k_l zhxX8Aibp}bcxa$l5D}pw1<6J9CgQ<>NI)+hE!H>_B9`pod%kDpo#BIR7@v*BxOx?g zB!Uhf<;%^!IweJ4h8iAWm8NY4!1fN z&eh(8XiBZA-qj(^RH~P(ZEr7rl3ndD%KY_DnBs@j|AP4G4xj1p8y&txlU-kTF)(jwELF$ zJ|NrnGr~Af6pjGCkmsj`Jb#I)_5+v2dH)shKFs1~yYN8B0}DbP2qa(t55*I}BcTaA zk$OMyRGb%8#SZ|_#5wm;$hkGCb8cOnb2ae+;GH<<>OwOOe3Ql?@LdWV+z|3ZnnHd^ z7yl_OPR~QvRg^N_rYh1zcS=puEj}0MF`r9R<8zsQ^0`7m*q|ffsCrFSIHlG(ZO|R| ykK9SA2B!>q&;Enz;gp`%fRnT{B9q4=rs}6jzTc&}NJ_uA14vVqtIPBuV*CZy1d8n%`dOeJZGCR&S<^mF4PHN8A4C0kb;U z?VFa$k4k$LN7YViW%=D}zf80q9#k(>WFc&1l!|cQn#IzWb_;4@1=N2aet(Cb=_!Kjyf3*BvPy7<27x z;c$Lrl^x0j$6mF;-*it`Yr_Sf@1mMokGC+k5=EhE15vm5ZA5*dJw$s%6GZ!@A0ZkL zkG?G)Lq}S^B$^}|7scF3QOr$1)kdN-;xShdzlrGlUq3}xq`<(8CvcxmqHQl4_RtA55nK#v!R^6-9;4V WJE2UxhWjfQaUE6|3;zbmmHq?HwV1~M diff --git a/lib/kernel.ppu b/lib/kernel.ppu index 8e3985f5e7ff3427f45c0d0753d75d7ac7f859e2..b9d2c6cc3c9d07cb95ca0f01c9cee4804aaa22d4 100644 GIT binary patch delta 343 zcmcc2If+XqARyGx+?e42BLg!-g8&o5D;5TZS>~OU>Fo()TB zNoJ1CtUDd`wv6W)fPg(YKd(4HC-v*Szr82QbSyw(d`_PJ!SODRA&&8mL9UM3J6e`9 z&k!)1xOkEb8!IzN1tSo0Ffssb17b!7Rwf|LIXRHAo{@j@MaE1%b|9ZEHz_kOEuVpr zd$I?U0zU^(h&?wcH!(dk86;NDq{GNQc?pwWJsT@fia`j78D&8Rg5Ai#$PN(~1&agy z19vI|BL_rE1}p{AjpkwoMox$dNstOrHXzBGotv1M2egWtqFYC^CigP{0drDHV#Un1w$oF@IVSF(B*V(e3=(DpLJmftG)M^}11l4d z=9rwzSkK5e`7L869~+R*mYbBBmzK}K$Tc~INr9goD8!zdl$)5InG6z}%%sD}Hu(UP zpEoBfP>Mkmh#6%;2EyFIz{n1f5(G;Doeg#l10x4SSP~>G3ewD)otv1M2QsyWc_PpW hd@TFLIe_B)D&DR^ey%?8Dk|}rd6^{)K)EL@dH|MHIq(1g diff --git a/lib/util.ppu b/lib/util.ppu index b20dd8ed03ace02a302dfd3e899b55b5ea29c7fb..00fb1bcee9d119f71a94f5e0714069f18482f846 100644 GIT binary patch delta 874 zcmZ`%O=uHA6n<}#O?JDcn$%4sNo^_-g_xEgK`IrA^(Vp77D-W1S(Y}Eg}7D?R1h&r z4_=Cdck4+M^x#49AP5Sc1W!HnA|e$00YOm^@h6CHlB{f@4$PZxzwev3Z|2R-Ei3WC zsj2DQp55>q!3T{^0**2tiVpRQU1SO+8Dtw^%P-?eiQDLhr01w1im`ByBI)iB#&o$fZl=@p zR+KPAL%so=qX}Oz7X6R!kx%+s>|3CuzZgrb^$ocB8vfH5qc{F4?xoQ{oGj%PW*L3M z6y<^sV%NC>%mg^Dy2bGNj{XF8mOeB3B3V45ucO-say`oLSp)05#VokQUXXP?7HQ(u?#`O%8A7-tK5` z4Rc(tV!%-6$Ov(y4{9c%vh$MMlaWnKaRzs!DXZo6EHlHB#W0=KjvE@oyvH@d_yA>l z_8U4YM?K0U;}dO#-z8WcrNY>uYrJP8EAt-ZGUElhqK{Co9x&u77CmZ{@zOuFkJURK x^&aDguG(*~`oyC?WBj7~9ide%N00UB)(E>oX}9gRW7qkd*nSiU%k)v-{ul5niwFP! delta 706 zcmaJ;O-mb56uoyQF`1b}CaF_&91VdH7g1_yRfLM5&?ZH!U`6mNeibqh60u2J+*s(Q z1ySO~t%7tfU3KF^@dtF}LU$t6l`CD;52*J|qKq3Kym!w#=e+ZH_Z^t4wei8h;pd$% zU>8A#uet=M8bIB%ef8v(oqYlT@lre?E90A`cUk;d+WAYr(WYap!3YgVy*%GoRcr&i z@riXzU>E%pbdi2ZNlRD#g02k79DbkbPuq4{RMO=XMrl-zVUZT)q-8v2K9p1OXgLg_ zwG!CDRRxey?4|1;)aOfD=EE5K!JS*a3AEPy8SJ9TDwDqXkFbT&1;%J7upJgTcVfb*({OefeTx22fQs_st0BK=X`Ce`44ocBd!7Dh zokle~#yyTH#t!8}J%-N8f=Btpc*#|wtbF$<%Z%4q>7tv^)5Zv^;rowsa!!F?fR#>c IP+Pd^7MwnAUjP6A diff --git a/src/bda.pas b/src/BIOS_DATA_AREA.pas similarity index 92% rename from src/bda.pas rename to src/BIOS_DATA_AREA.pas index bb406ec9..b0c269d9 100644 --- a/src/bda.pas +++ b/src/BIOS_DATA_AREA.pas @@ -1,4 +1,4 @@ -unit bda; +unit BIOS_DATA_AREA; interface @@ -25,6 +25,9 @@ type end; PBDA = ^TBDA; +const + BDA : PBDA = PBDA($0400); + implementation end. diff --git a/src/console.pas b/src/console.pas index 730965e0..2215bfe6 100644 --- a/src/console.pas +++ b/src/console.pas @@ -3,7 +3,8 @@ unit console; interface uses - util, bda; + util, + BIOS_DATA_AREA; type TColor = ( Black = $0, @@ -23,37 +24,37 @@ type lYellow = $E, lWhite = $F ); -procedure console_init(); -procedure console_clear(); -procedure console_setdefaultattribute(attribute : char); +procedure init(); +procedure clear(); +procedure setdefaultattribute(attribute : char); -procedure console_writechar(character : char); -procedure console_writestring(str: PChar); -procedure console_writeint(i: Integer); -procedure console_writeword(i: DWORD); +procedure writechar(character : char); +procedure writestring(str: PChar); +procedure writeint(i: Integer); +procedure writeword(i: DWORD); -procedure console_writecharln(character : char); -procedure console_writestringln(str: PChar); -procedure console_writeintln(i: Integer); -procedure console_writewordln(i: DWORD); +procedure writecharln(character : char); +procedure writestringln(str: PChar); +procedure writeintln(i: Integer); +procedure writewordln(i: DWORD); -procedure console_writecharex(character : char; attributes : char); -procedure console_writestringex(str: PChar; attributes : char); -procedure console_writeintex(i: Integer; attributes : char); -procedure console_writewordex(i: DWORD; attributes : char); +procedure writecharex(character : char; attributes : char); +procedure writestringex(str: PChar; attributes : char); +procedure writeintex(i: Integer; attributes : char); +procedure writewordex(i: DWORD; attributes : char); -procedure console_writecharlnex(character : char; attributes : char); -procedure console_writestringlnex(str: PChar; attributes : char); -procedure console_writeintlnex(i: Integer; attributes : char); -procedure console_writewordlnex(i: DWORD; attributes : char); +procedure writecharlnex(character : char; attributes : char); +procedure writestringlnex(str: PChar; attributes : char); +procedure writeintlnex(i: Integer; attributes : char); +procedure writewordlnex(i: DWORD; attributes : char); -function console_combinecolors(Foreground, Background : TColor) : char; +function combinecolors(Foreground, Background : TColor) : char; -procedure _console_increment_x(); -procedure _console_increment_y(); -procedure _console_safeincrement_y(); -procedure _console_safeincrement_x(); -procedure _console_newline(); +procedure _increment_x(); +procedure _increment_y(); +procedure _safeincrement_y(); +procedure _safeincrement_x(); +procedure _newline(); implementation @@ -85,13 +86,13 @@ var Console_Matrix : P2DVideoMemory = P2DVideoMemory($b8000); Console_Cursor : TCoord; -procedure console_init(); [public, alias: 'console_init']; +procedure init(); [public, alias: 'console_init']; Begin - Console_Properties.Default_Attribute:= console_combinecolors(White, Black); - console_clear(); + Console_Properties.Default_Attribute:= console.combinecolors(White, Black); + console.clear(); end; -procedure console_clear(); [public, alias: 'console_clear']; +procedure clear(); [public, alias: 'console_clear']; var x,y: Byte; @@ -106,71 +107,71 @@ begin Console_Cursor.Y:= 0; end; -procedure console_setdefaultattribute(attribute: char); [public, alias: 'console_setdefaultattribute']; +procedure setdefaultattribute(attribute: char); [public, alias: 'console_setdefaultattribute']; begin Console_Properties.Default_Attribute:= attribute; end; -procedure console_writechar(character: char); [public, alias: 'console_writechar']; +procedure writechar(character: char); [public, alias: 'console_writechar']; begin - console_writecharex(character, Console_Properties.Default_Attribute); + console.writecharex(character, Console_Properties.Default_Attribute); end; -procedure console_writestring(str: PChar); [public, alias: 'console_writestring']; +procedure writestring(str: PChar); [public, alias: 'console_writestring']; begin - console_writestringex(str, Console_Properties.Default_Attribute); + console.writestringex(str, Console_Properties.Default_Attribute); end; -procedure console_writeint(i: Integer); [public, alias: 'console_writeint']; +procedure writeint(i: Integer); [public, alias: 'console_writeint']; begin - console_writeintex(i, Console_Properties.Default_Attribute); + console.writeintex(i, Console_Properties.Default_Attribute); end; -procedure console_writeword(i: DWORD); [public, alias: 'console_writeword']; +procedure writeword(i: DWORD); [public, alias: 'console_writeword']; begin - console_writewordex(i, Console_Properties.Default_Attribute); + console.writewordex(i, Console_Properties.Default_Attribute); end; -procedure console_writecharln(character: char); [public, alias: 'console_writecharln']; +procedure writecharln(character: char); [public, alias: 'console_writecharln']; begin - console_writecharlnex(character, Console_Properties.Default_Attribute); + console.writecharlnex(character, Console_Properties.Default_Attribute); end; -procedure console_writestringln(str: PChar); [public, alias: 'console_writestringln']; +procedure writestringln(str: PChar); [public, alias: 'console_writestringln']; begin - console_writestringlnex(str, Console_Properties.Default_Attribute); + console.writestringlnex(str, Console_Properties.Default_Attribute); end; -procedure console_writeintln(i: Integer); [public, alias: 'console_writeintln']; +procedure writeintln(i: Integer); [public, alias: 'console_writeintln']; begin - console_writeintlnex(i, Console_Properties.Default_Attribute); + console.writeintlnex(i, Console_Properties.Default_Attribute); end; -procedure console_writewordln(i: DWORD); [public, alias: 'console_writewordln']; +procedure writewordln(i: DWORD); [public, alias: 'console_writewordln']; begin - console_writewordlnex(i, Console_Properties.Default_Attribute); + console.writewordlnex(i, Console_Properties.Default_Attribute); end; -procedure console_writecharex(character: char; attributes: char); [public, alias: 'console_writecharex']; +procedure writecharex(character: char; attributes: char); [public, alias: 'console_writecharex']; begin Console_Matrix^[Console_Cursor.Y][Console_Cursor.X].Character:= character; Console_Matrix^[Console_Cursor.Y][Console_Cursor.X].Attributes:= attributes; - _console_safeincrement_x(); + console._safeincrement_x(); end; -procedure console_writestringex(str: PChar; attributes: char); [public, alias: 'console_writestringex']; +procedure writestringex(str: PChar; attributes: char); [public, alias: 'console_writestringex']; var i : integer; begin i:= 0; while (str[i] <> #0) do begin - console_writecharex(str[i], attributes); + console.writecharex(str[i], attributes); i:=i+1; end; end; -procedure console_writeintex(i: Integer; attributes : char); [public, alias: 'console_writeintex']; +procedure writeintex(i: Integer; attributes : char); [public, alias: 'console_writeintex']; var buffer: array [0..11] of Char; str: PChar; @@ -195,10 +196,10 @@ begin Dec(str); str^ := '-'; end; - console_writestringex(str, attributes); + console.writestringex(str, attributes); end; -procedure console_writewordex(i: DWORD; attributes : char); [public, alias: 'console_writedwordex']; +procedure writewordex(i: DWORD; attributes : char); [public, alias: 'console_writedwordex']; var buffer: array [0..11] of Char; str: PChar; @@ -213,39 +214,39 @@ begin str^ := Char((digit mod 10) + Byte('0')); digit := digit div 10; until (digit = 0); - console_writestringex(@Buffer[0], attributes); + console.writestringex(@Buffer[0], attributes); end; -procedure console_writecharlnex(character: char; attributes: char); [public, alias: 'console_writecharlnex']; +procedure writecharlnex(character: char; attributes: char); [public, alias: 'console_writecharlnex']; begin - console_writecharex(character, attributes); - _console_safeincrement_y(); + console.writecharex(character, attributes); + console._safeincrement_y(); end; -procedure console_writestringlnex(str: PChar; attributes: char); [public, alias: 'console_writestringlnex']; +procedure writestringlnex(str: PChar; attributes: char); [public, alias: 'console_writestringlnex']; begin - console_writestringex(str, attributes); - _console_safeincrement_y(); + console.writestringex(str, attributes); + console._safeincrement_y(); end; -procedure console_writeintlnex(i: Integer; attributes: char); [public, alias: 'console_writeintlnex']; +procedure writeintlnex(i: Integer; attributes: char); [public, alias: 'console_writeintlnex']; begin - console_writeintex(i, attributes); - _console_safeincrement_y(); + console.writeintex(i, attributes); + console._safeincrement_y(); end; -procedure console_writewordlnex(i: DWORD; attributes: char); [public, alias: 'console_writewordlnex']; +procedure writewordlnex(i: DWORD; attributes: char); [public, alias: 'console_writewordlnex']; begin - console_writewordex(i, attributes); - _console_safeincrement_y(); + console.writewordex(i, attributes); + console._safeincrement_y(); end; -function console_combinecolors(Foreground, Background: TColor): char; [public, alias: 'console_combinecolors']; +function combinecolors(Foreground, Background: TColor): char; [public, alias: 'console_combinecolors']; begin - console_combinecolors:= char(((ord(Background) shl 4) or ord(Foreground))); + combinecolors:= char(((ord(Background) shl 4) or ord(Foreground))); end; -procedure _console_update_cursor(); [public, alias: '_console_update_cursor']; +procedure _update_cursor(); [public, alias: '_console_update_cursor']; var pos : word; b : byte; @@ -260,44 +261,44 @@ begin outb($3D5, b); end; -procedure _console_increment_x(); [public, alias: '_console_increment_x']; +procedure _increment_x(); [public, alias: '_console_increment_x']; begin Console_Cursor.X:= Console_Cursor.X+1; If Console_Cursor.X > 79 then Console_Cursor.X:= 0; - _console_update_cursor; + console._update_cursor; end; -procedure _console_increment_y(); [public, alias: '_console_increment_y']; +procedure _increment_y(); [public, alias: '_console_increment_y']; begin Console_Cursor.Y:= Console_Cursor.Y+1; If Console_Cursor.Y > 24 then begin - _console_newline(); + console._newline(); Console_Cursor.Y:= 24; end; - _console_update_cursor; + console._update_cursor; end; -procedure _console_safeincrement_x(); [public, alias: '_console_safeincrement_x']; +procedure _safeincrement_x(); [public, alias: '_console_safeincrement_x']; begin Console_Cursor.X:= Console_Cursor.X+1; If Console_Cursor.X > 79 then begin - _console_safeincrement_y(); + console._safeincrement_y(); end; - _console_update_cursor; + console._update_cursor; end; -procedure _console_safeincrement_y(); [public, alias: '_console_safeincrement_y']; +procedure _safeincrement_y(); [public, alias: '_console_safeincrement_y']; begin Console_Cursor.Y:= Console_Cursor.Y+1; If Console_Cursor.Y > 24 then begin - _console_newline(); + console._newline(); Console_Cursor.Y:= 24; end; Console_Cursor.X:= 0; - _console_update_cursor; + console._update_cursor; end; -procedure _console_newline(); [public, alias: '_console_newline']; +procedure _newline(); [public, alias: '_console_newline']; var x, y : byte; @@ -311,7 +312,7 @@ begin Console_Matrix^[24][x].Character:= #0; Console_Matrix^[24][x].Attributes:= #7; end; - _console_update_cursor + console._update_cursor end; end. diff --git a/src/kernel.pas b/src/kernel.pas index 5924d188..61e2373a 100644 --- a/src/kernel.pas +++ b/src/kernel.pas @@ -3,50 +3,41 @@ unit kernel; interface uses - multiboot, - console, - bda; + multiboot, + util, + console, + BIOS_DATA_AREA; procedure kmain(mbinfo: Pmultiboot_info_t; mbmagic: DWORD); stdcall; implementation -procedure kmain(mbinfo: Pmultiboot_info_t; mbmagic: DWORD); stdcall; [public, alias: 'kmain']; -var - _bda : PBDA; - +procedure kmain(mbinfo: Pmultiboot_info_t; mbmagic: DWORD); stdcall; [public, alias: 'kmain']; begin - _bda:= PBDA($0400); - console_init(); - console_writestringln('Booting Asuro...'); + console.init(); + console.writestringln('Booting Asuro...'); if (mbmagic <> MULTIBOOT_BOOTLOADER_MAGIC) then begin - console_setdefaultattribute(console_combinecolors(Red, Black)); - console_writestringln('Multiboot Compliant Boot-Loader Needed!'); - console_writestringln('HALTING'); - asm - cli - hlt - end; - end; - console_clear(); - console_setdefaultattribute(console_combinecolors(Green, Black)); - console_writestringln('Asuro Booted Correctly!'); - console_writestringln(''); - console_setdefaultattribute(console_combinecolors(White, Black)); - console_writestring('Lower Memory = '); - console_writeint(mbinfo^.mem_lower); - console_writestringln('KB'); - console_writestring('Higher Memory = '); - console_writeint(mbinfo^.mem_upper); - console_writestringln('KB'); - console_writestring('Total Memory = '); - console_writeint(((mbinfo^.mem_upper + 1000) div 1024) +1); - console_writestringln('MB'); - console_setdefaultattribute(console_combinecolors(lYellow, Black)); - asm - cli - hlt + console.setdefaultattribute(console.combinecolors(Red, Black)); + console.writestringln('Multiboot Compliant Boot-Loader Needed!'); + console.writestringln('HALTING'); + util.halt_and_catch_fire; end; + console.clear(); + console.setdefaultattribute(console.combinecolors(Green, Black)); + console.writestringln('Asuro Booted Correctly!'); + console.writestringln(''); + console.setdefaultattribute(console.combinecolors(White, Black)); + console.writestring('Lower Memory = '); + console.writeint(mbinfo^.mem_lower); + console.writestringln('KB'); + console.writestring('Higher Memory = '); + console.writeint(mbinfo^.mem_upper); + console.writestringln('KB'); + console.writestring('Total Memory = '); + console.writeint(((mbinfo^.mem_upper + 1000) div 1024) +1); + console.writestringln('MB'); + console.setdefaultattribute(console.combinecolors(lYellow, Black)); + util.halt_and_catch_fire; end; end. diff --git a/src/util.pas b/src/util.pas index 298a8a92..27aea650 100644 --- a/src/util.pas +++ b/src/util.pas @@ -4,28 +4,29 @@ unit util; interface -function util_hi(b : byte) : byte; -function util_lo(b : byte) : byte; -function util_switchendian(b : byte) : byte; +function hi(b : byte) : byte; +function lo(b : byte) : byte; +function switchendian(b : byte) : byte; procedure outb(port : word; val : byte); procedure outw(port : word; val : word); procedure outl(port : word; val : longword); +procedure halt_and_catch_fire(); implementation -function util_hi(b : byte) : byte; [public, alias: 'util_hi']; +function hi(b : byte) : byte; [public, alias: 'util_hi']; begin - util_hi:= (b AND $F0) SHR 4; + hi:= (b AND $F0) SHR 4; end; -function util_lo(b : byte) : byte; [public, alias: 'util_lo']; +function lo(b : byte) : byte; [public, alias: 'util_lo']; begin - util_lo:= b AND $0F; + lo:= b AND $0F; end; -function util_switchendian(b : byte) : byte; [public, alias: 'util_switchendian']; +function switchendian(b : byte) : byte; [public, alias: 'util_switchendian']; begin - util_switchendian:= (util_lo(b) SHL 4) OR util_hi(b); + switchendian:= (lo(b) SHL 4) OR hi(b); end; procedure outl(port : word; val : longword); [public, alias: 'outl']; @@ -67,4 +68,12 @@ begin end; end; +procedure halt_and_catch_fire(); [public, alias: 'halt_and_catch_fire']; +begin + asm + cli + hlt + end; +end; + end.