From 902919fd021fab7fde4352d63ed2b0d8eee50de7 Mon Sep 17 00:00:00 2001 From: kieron Date: Mon, 23 Oct 2017 10:41:40 +0000 Subject: [PATCH] More terminal changes. git-svn-id: https://spexeah.com:8443/svn/Asuro@223 6dbc8c32-bb84-406f-8558-d1cf31a0ab0c --- Asuro.iso | Bin 5095424 -> 5095424 bytes bin/kernel.bin | Bin 41188 -> 41188 bytes iso/boot/asuro.bin | Bin 41188 -> 41188 bytes lib/PCI.ppu | Bin 15129 -> 15129 bytes lib/console.ppu | Bin 20005 -> 20005 bytes lib/kernel.ppu | Bin 2773 -> 3288 bytes lib/libpconsole.a | Bin 81668 -> 81668 bytes lib/libpmultiboot.a | Bin 29040 -> 29040 bytes lib/libpsystem.a | Bin 147760 -> 147760 bytes lib/scheduler.ppu | Bin 2700 -> 3249 bytes src/kernel.pas | 22 ++++++++++++++++--- src/scheduler.pas | 27 ++++++++++++++++++++++- src/terminal.pas | 52 +++++++++++++++++++++++++++++++++++--------- 13 files changed, 87 insertions(+), 14 deletions(-) diff --git a/Asuro.iso b/Asuro.iso index 87783d83c7f9b4dc01211e779d0b9c113865843e..836b0a85a6640513827c59502fe960c1183a673e 100644 GIT binary patch delta 19884 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 delta 19082 zcmbt)30M`!()J86a6ptJqM)K45fBv>5l|2m6|`|BigA)?T)_pm2)N{`;MGh()axfn z+AKGpCf=*rT@pD)O^%|2m>Bm+;=Yed+(lF(f7Ns!B1wDi^F6cwW*wUcEc&9Mt7n&xqN-JK^#P?EFaJNF zsPDTrQ#<+H#J_4cZ+rLUdZs#Heav6gMWfcwGPULF{~$;Cat}pqJ_$Cpsh@U<0@18-NtwUx6Y;@QyZ~Kq@BMh$ckxkkt7-ZyA2sU zaA;A>_3i&^X!CEI!j%6IdG%K;#t&9?_N$d^XI{Ry^GVoy39Pr$cUO0TU;h%8{P+?P zcUcMJeqADp*>iW8={IV(i2KHF#{GP^DCX+jEatF1qNrx?VNrdsN96a;p0=jn=DJ9m zrL(9$)J2wm)0t)8QW1ATX_zk-8~np!^X`?BHn3-EQP16-1*yAK8exVJuvcVi>Rz^> z9|*N~_Oc)Y%S5T0TEXWF#=BJMh_J-A;KV#}YHU-FY^ zN&fj0Td;#dZO8$(B&i2P+ghgdZ)IV76V zi9>8gE{8>yhaF~?7aSIG4;*IP3Zb^|5vHAXL}YpA5oY4{<09@S$EUEx zE*EL1mNUPr%0-s1mNU!NUqsyWUl@1AFCy-_Ul`Z&t0-}={K}HPSg1YDv@1`Ds6$UM z>bw&oxBE{7`#f{k^GqJlr)YIqq~Mm<`y{LLi6=#q+i{Xj&NwOZ5_^hGZuBXUb|cr8 zpAuPaf0|iVPm8#poMx5}o)*o$)fqPT0cS*4?)zt6XG?unWO>qAW_g8BdyZ=@=R|&A zImegloXGEyb1ajULT>-_jGKL4l#R0U9n6>?3$=qUum{hA3nK0ju64O6(hk4KxSCLV z;v&1QEtf>xk(bySX76C z0|r0m9)9FL^Yi$=DBk`Ln0Dp^k)J&eSQIxOh*mkFg01q{3K9343dTKMAp7$e>p;3=mi2091(>wl%O|R;aD8zw} zndR)qqUn`AX49(>YWqK7m-MVBBENf{Fu&KHh%EQ0V%*79BJKB8QD)*QszfpO{hh@; z?RQZ&cK*(?aZRXAc*?XHPep#WJq@e(%$CCP{5OSaHo2FpMIn4qJrToyJ3tnM|Mn!= z4FByFvVi;c1=$Rcddng*9VyGTUuOmk>;IhB8F~!HVjQ$emIW(B`@6{IEa(guQ7E*; zg~xKkMHXa>_H>oaMWj<)g|Y5%<^C_a3i+{aoIl=8sNd?;Uli+O71=CLnxP2!+Z1m9 zvLc*cth-$M{xdLnAY6jNJtW=i&L{J$yU61ME7b3F>TihkJ?rsWnpRK9FLCN`*AvFq!$)Qx z{G6W|1|<*gjd$~=q6c_gS(=tUdmKI3LXIdpE7yO=Dw`iwX@FIj+)S&pIK=uZPQA6h zFuP;w^X%r=7tZcfeV#pwuaN(eFX!j^3TJ=7m#@x!U!nb!269-fx97p6cZ&E~NB1<~ zzHT%S=Awrm&&5PPp|2f&d@hDqpU{x&CpHxG8}drHCf4_8#Pw4e3Hdvn`kP{XZ-4H8 zn!k`=;x7+jH;MqEerf>cuM+EjbLs;ci}{Ut{O^hNw;FT%O_~V#)0=Spdt&{qCft5t zQz8GgrkwwQSbwLf+@V&jr1nhf`J7tG3gor&UZAj6ehcKa(x{m*mds{6)>X}fb$z87 zuWRq-Li?kdbNl(th1bn5%~^c!v=FLaXu-pu(?aOJw1qr~m4Zze{#2W6zP`{8Z9@CE zY}|gMmcsBSwdCQiY$>#VrKMbJKjfLJ7S%s2_^3?B1o1>^K|)I>g7~7lw-V}KX~p%L zSbxH)cMlfMba*hI>4IS4Ob-R~nLZZl2ZnI{tPo**KZNl3D#ZH!pH*JrdA#=o_-Jc3n1m@vMnVa`er>+d=B!EJ>6xou?gWs$CLBlQ2Ija=(x#d~P- zkQBPcDo6kIm5|PE%aggftFxQ#ENw5eb*?>+wO$9Ieq0A$7|S~d=W?zCpNm&VA%9dy zZhvV<;apF2l;c=oLSNm$rdJMsKjBZd6*NX}m&)?ae! zt)0dE&T@FIr$JhuwCDV?MK5*cv3N%bbM;CTuZz4W;ampSBfpA#BonE;)Ge*6DOO$h0#i} zeqc9#8(h#$$UoAJ^WEcx`d8xRNHc3I;)Pke5YMkx?*t)#Oai}+u1FBB+L;7Cf4A;J z`@_3)`+41k`~%(Ppl35(@5R3Kma7~qxCy89;02W3L%3*rddR7)KoW)eNr`+ZRwN3i zdMT0HxAqk3(|bBEe9%Ah7b4Go#gypIPVNop)1Go;Gn6L1gr=tV;`hK0#QHnEc-C#b zh5Ve}T)$SVf7JU=+Z?q|(Q6f=`prt>>$fUNxIR~$dhcXmBx90!QkIJK=aPA();_{T z8PkU^N`4=q|Kojld{upf{$J?J{m<(wtiJ<&Y}Nxn(C&hil(}2Ds);j)l*Zw zG_{VVdTVN3O|7S?KALLP)cTt0tEmk%)lX9!YHA}*_1Dw@O>L~HO*FNsrUq(iGfi!- zsVy|srl~D8HAquiX=<>hhG=T2rnc79FimZvsckj2ou-CsYI{xXps5`-H9}K6X=sa-WSR#W3NwVS5KYifd~cGuJ%nwqGoJvFtLruNp8B%i&YS zx1%MiBV(&Y+R)Ni7fm0|ADR=!Sp$jyqo{*4TmeV0W@Qbs|kPjTs@N|*T_#;I7kW*%AOIT8A= zE5-}4wEcV%?~)ZqGv|{gF2m#KoAXIWzkkO{(gxZ1M|E{|{;wJK(US32EZsMs1i9Rf zr8no3^*(x6N!nz~u&HhI3t>qMt$z>BQm)#W^^aXgH!)5vl;g2uc_+IrtNN%fHwL8rV4q)s)YdYt5L z9B)n6y$Pg_G$tQNe&cXvRwQ+#Q}TfXwZrN#(T9^P#_>?PE}yKF?-j=tkf$zg?Ifv$ z#xEyfbo^2XHwuj$_XZ<}+tH;4k36(VEQ$r#ety#$~)ev}^{a?boZT4f+U9zK~gC{yk`gwT4J$ zxB&Mw{7IVKdpxv)F{T4h#LJS6Z{=K!-?u%Sc7(!+U>xC!@pr}6BMaP|V1#6cP$lDA zT)sD;&mNE36WB7x9jY1Uf#X)j^bD^2$)LV>~ zYV^6-nujB!Yt)M2DoHyHuSBC0YL}vRIJ8)Zrt1K7eF2&*uvi?o0>^d4*62piO2_m> zKxWEzStRPWlC*L;7D8iJl3s5A136$f=yz9=5dWJX^80N7FC3dOw;4UQlB}`V_oCSi z?)2u4NcpK*Hy4$i@Qt!+kyz{m?j$0j4&OK=B3$ZOjt6<@7Xl0)8 zE-2ayjl#g-MZ4Wf3hVA3Pw&4)M&#}W)8C<;*n2aB1{GBFS+d-5#Ola{ z8ZLrT1!G3vCU>g@eVZg>Z7?kTGtqqw8I`1h3Yz#1v85p;0Y_$q6gEU5qo6z^q*}`V zJNmCSP4X^d1`LBXXkmJA3E9>l;SI+uf8!D?Z8hZ1>VQ7_^*bc8&;9B;=>ANrKgIJC zbbPzIvDIO}55tYGey^^!&uEHM55uCsi^QDLWhk@~iN-G_jk~mzBy&ys7gY2vbo=M_ z*yXscEPCuS^RjTfBX(y_-BNQL z?YD}Ax=Q7NG;0-U;}VcTKU_upBLgz54xcT%COK9^Kt5Z3Sr+BK8U{J?lU|kc9tX_a zmG@}y%x`qX1^OgiaV-xlzOssZCbz;tMmju_O~*?bn)04nGX3T~l90<3P(`%{K2QD# zhnFm4H38QPH=F~}JF3Dw)yZBGqS$xejv4CZ7!ZQCH(+6RiJVGZvn&mNM+eT#X-~V^cj- z=YXb9@sXX^ET(27i2RoFM{=Lm#pvO7Fz!ipH4}_{b7ffmpPKG`w&a?)sB-WE4_*nz zSRA(EsX12&3j=H2n4==X9M6&qqfp zs7>7|xHI?^EB7Z@9XrpuFSA=A2g`CCRa;?KB;EU0MzyKhEMIS6uY@s1dw32*X9cu3 zOZnx6BR?<9*-$wD>oN~s?{x4-WQe?te)JKEl=JDak4R@Zt=RKp*tyGoG-WNBBfn2~ zAq3HG|00Lv)Z)7TCN8o(kXqM~mt5{WqM7T+7nRf%u#8Kl{AKiQ_-}Q4A}CKHNaE+_8D{DxI;BbQ_cbQ&@NzC+xH3hm3-#{iC77 zY`X0qYc@;r{r04@mhQG^JhWibJOfO`TxHeP9nfyYp7He2M$%@8Q<+h!jE)a+RD0Ob z=*MHBZ4XCfV`O08Rtcs7Pu6?@dskFFHBbd3jkR!_u_s~QHG^hvA|VaG?_zaWq!N4Z zYtXp`2hJD~LciQZg1xavbM~Cx1Wz(hIbtibJTeLru!$QFm}EwQ+k=^4y`X%jVKwg+ z`EC!gc}IY=V>Wi|ts%@XMIbCX>$C9uZAho*L7>foZmd_g2RYEPCt?hRSE{QEZX0i1 z@r39GU=Libn@La;Y!-nMa)RN&bkXX^GhqT}Hj`EEs6Tg^&i|Tp37ZE4%nb_e*axolyUx4(W>Rk-s0G0a8 zt(6_L_S|q#$-_bF>&2vhZv03yociWBhQeW0g??{i7eq9_%4cS|efQsB#b#cBdN_-% zFlZGfR~9CQ8~=o~*$wP$;Oq=G^0D(ac0N7NM}`?$*jb64SDl?U<5kRhW13_qwgB|# z%=#248=m!eIuEq2prt;q!!$8emUSdNcbcf=(?seuJ8A7<>ki&y%8CQFl5m%{^UxBm z0X$aC5(U}027YkcHXfdV;O@dEiGBz94Z!iv_y)j*&EiW;q#ta`Anv*+{d_wXBn&h6=}6}V3C-ua zMr+Q31ZtBVB(7~0a?v%slbZzzvNIV`n2al@AQ|VYAQ{V-!DmBI*8~LbFD#(cUi9-F zSdw7XEJ-xV0z&)G4G5LalEi?%gLl~l;L`>^*JML0qcqWCk(|wp2~t6Nm5;5wAi2`) zgNiLkb>q#-g4Do?1u%=riG>Zb7tp-#NJuVP+kCRRx~znKV{t1OSyfPym(Vp2-WRhw z=d)KjpDk|5-;FjCVOtXgD#(bxQ&-G%siva(;A*78W2_bzKFk2+uiS7XgVIUnHWyX4 z&4CRrT9Wh2<3D8rP5qwq$UWE_LMGec^2wp)1Fj^fN$vT{+IAa)1O~`GrZp0$6nA1d~nzc=*kl&RRLt_%I{2i3NT(*s+lB>3UOrUiVOh$TmUA(s|P?Xh;D!rbwy!HcYw*d z;=v>fK&GyEGRX^IimudQk~cs%U8&2YdH}6;#fM2&fYG{ApGm#|5OxD5`2md3m4+zg z>PjQP*LB68DFXoJ=t^TIH31l>D@~ac2rx@mnlY(4z*t>r!6X~NG+k-Qq#%H)y3&eC z!2sd962hcVfDXFS+LUsYFu;zw(uOJ90zjngm=q4sR#)0HsRPq>WKslxO;B6M008pf{Ov;S|?5-=_m>3VxLst@*)EyvES9&lh5um58^kh;m zfL^-Nn@LFky>%s-Nqqp4bfqto2$NEn)Q?I1nKU4mi36E9h)IK)l**(Rm^6e*Lz$Gu zq+v{Ykx9duq%!FxCcO;shOWHAq!9p`u8d^TtD|yFaTF6rGvyd2jb+j}CXHuOI+HS( zG=WJInKX$>lbMvsq$y0A%A{#bn$Dydqu~03XkKIDOs33YQZ|!vm^6z?vzg=zH*c(G z2D<=S>dI~aSS=l(m9Fds2-cN-03o{aBfzV=@)JO)t{en_vN{Zq8>TBq0o&-x&j6!z zr5vE0uAByVL08TK4A+(O0Li*?5nza}Tn0$f6$9WUUAYD@Ojm9Ir0B{`fWf+Q8z2?# zEC7GgmHPnmb>%StR8SSbP+fTnkObGCG$zE+2W|=gec@&RKy<|&pr5W-0Q&2S7r+2r z@dk*~m3ja{x?%-bpeud=^WZ85cv)8h090LR0s!?G2=Jn=GzWlMwE+y$l^}qDx)KZ! zujeYEfN%kX0rV)be+>^Gqt7we1IRnzG~xlAO5uIkn7J2DJ8r>=?1WSA5;%Pc@7qS~ zZaAgwgVW$LIPF8)zu>WKNOz&t?jf9F4#BDZE;z++fs=;=PDA#?sr@$%;B2XYQ-f`= zZQP6A%jjD=iD{LMQ+^PHsoouJ# z=uZPnaqBdeZ=KL6-#S6_xjPkf?%X;7bxA3iMK_d^)c?!Lx@9lvW|gywF{>C#_G*W&HJ zk}#PLI7v3pizi5T`t&4;pqG-)Dd(YB{a3xIy7Nkk{i z9s5_;lGc0r)Tv{pjmJJ$IMi(BH3__-*8%W7*+Pp?lemPIR>wLxis2}Q<2W2w;CKj! zN08Ow4@WQ@o#5yWM}Ig}IMU&m8C2Zi48)PE!v|onDt!ZpJMV3P@aimG0K}I?2O#{| zCOrT&ztsW4?`YCZK=|!RlHhX|hWZ3#{M2Rz88@vKKupd7=*O^s0K~VeQ-JP(KLY~f znvT&aI>KOZAd+wZ4#q$XIM5*mfsW8AIzVS&q}IRG-YIdmLFrl9>Emr9Zz{OOLZjHd}Frb7X;Qu46Kb>U}^=`e;C$<#|B-ocD4joBc76adx2~ z14tb}#;ipH;%o~5akg22n7x63n7zAz_!hAYc$lR`K+IYd^usT&B8G{G`9Q>Z;U$6jLWG~aO@triO$-E_j0zj?2<8|DhyjFi z?7;gYxD3B(nhs((!VmkVLHM%(vp=3=0!R3Z2Bk0X1yE{`EiEAy(A6XfCx=Nw#6=#FML)bs272;gVB`K(@~fvoCCjZ!9V!g?bdtZn3)(Q{(CE@c`S^&N*TZ{pk+r;yIhmGGcady}P8u z)p>Wr6~dv2SPC$`YY#|z3Wy+?-L=)sF%B24{O9ntiYt$LTwpM_s)F?W58f&($Z#AD zgQY4yO+=g?_G4YKf2psA(Af{k$Uj##j=~tRsBj91SjE_nR#3)R5%H>YT16SF6%l?f zG5ejd+qfLe5sMaiIHz1}V6`G*wIX75B4TwSCUQ&yLS90+q6M_udG z*1K<8mhEo4xjibTqggwO9n`g6GfTHmw=Az8TdtN-k@Nok_uL_C*L|Ot=b7_6zyH_y zpZ_`c-g9R-d%$@1fN}FZhNvCOJ~JD)S$J9K2xCzJzb|yO>5)l_!XLRknjZ^e-DvboT~&g|A2T)Prl!}!Ju0YP=7g& ze>312<2o~ca^NC^m3I%EXs~u<4Z6cHaQPTTvAMd;d%D`XjSmK@ujcY+!`k|mKzxy@ zqjPy`c&>3y9$yw7Z5)@!e;IyT*t%Rr*=|sO<@5R4-?Mot71fc;kA@F79?#`pguh_^ z{dh&$X|;K_DC&Qsi-|<>*CHav_K|)oulsyEU$A+WC~7&>h_rwtaDb$MB#Js65-sx1 z@jTcP9Tp)CheE6mX&TRSETfE;bY5%OXe`O**DPs$2BQw?IXopY-m)RbUxzb+dL0zi zGMd*$!a9pzi%jbiP1e~wB?{Krz1Bgx^)0F;jn_s!VT=uWG};^4dMVVTD6XgCO$58* zg9!G=2lE|C5zeQoLcOXhQc>JP9z)k1pw0mCcu1U%o_TknNzLvR4JFG$rq&YP-S^^X z*EP6A_3C{V-K9^j=n_Qak|ABjYvVK>aclWxC~ldM8wnw=)y`9DG*uh#-#)z9A+dBD2?{zwW`* zQ=@oS%qBi}u$eCz5)*8yrcuJlXAIvkBq1WB*C#~x2~|%e^R6NAiGfdSOmK$g6GlGi zd_!zP1h%idW~^r2r;mCniFd`qX9#?T#srsZK7+_-G~X~ZAtJrkCsg+dQcorFuAz?_ z26fzJy>2w5@;l>V3@N-hE;-mi?%$w(>WNgoEiNJAR=<0GnC>2+?uqB;;x-vZ@#gsC z;Kwu%R9`)j!negIM5Ok5gzFyt)ID+hT>K{96ldmZ6JmmQX+FW^Gm39ZNQg-3^@-4Z z`l@?|^K%KUfnNnG%8`R6{!CJ0-C6SU-l8ba7Cnd!nQu}%K|EiP_&oKxsrSr}20`j` zy#|M=7rX=pYi=-LYJj2~Q2XVpt4JS1`loNB z$*aEJ2m7nkg8gNMxu=MHs<1cJlputdL9~E|Amcpa_CJqur0&ypD{K^5-GlvLSxJ_W zG;BNdLeNvsC!r~dQYLqYreb;2=dYl*C=mlU7~%Vw0li%m<$k24j=-g|u~^*)sZ&v> z-U`uIBVlojEbgMj&rq)vJ(-M=rZs>P_@FPeXGxphYnRw-hn2(xX{+qg>}au$qSw2c zZ;)79&8yVwu6DxWk3U)jsoQ!jPEb!<&h{G&eq7FnNUtsD3+Ty2wFK%Yfeg}W(^yZv z9!j}|dihvZ_19FSD%8hx_VTh+fXMd>i8S$LLfp(u=& zp1+WZ8q>>H1+%qYN0^7kaa}p^iOKya&BAx0LutLP74N{>_Z|H_OQ^(+i0xTLy(ILy z80AZq(!BR7COk-XD(Xw|c(UCv`DTSTjIx%Kah`(PKx2YCoQTbJ+Lqu`+O;D1v|zeO z-2yZ8p;eT&?w}^?v*hrwx7nhGW2gGGLPEyRj!Ji4_L*teFLC4WC!*!?5d`}-55}!( zEu1~u(5UzQ;PdS(CD|^L9VVHLWM@croMb^Z$jTt=-0aDZMSmW)x;mQf6WY|z1>hM< zvqp;M7i?zEB0|UEz9aXo>sq1P^xJKxtjN|8;xWU@9j0;LiMH>}5B%M8h~l3@5OwEp zJVB#!V7oUTc9=sjQr1s~L-ni5tUeKir$FaM#|UM!ws)qvt`)e0AIBK{ zUzdp_-ixg5JG1@se{1f|KG4*^OS9wCQbz<_Muf)HBx6=Be>&BYo>d#_HSa!H=iP#2 z%)9@#F{95Gn0VWZ78+WWhXrvQcYrkkbZTAFlD& zf5Q38x8*sd92@Q@b~oeCk-7iM!G);DZ9;B0`ag^t@QwWCpYcpuEvnsmr%deeUcvv9 z|9E$BXUbCbM+v-jM`XE%P+2wxhqRmSboZBfDv{S;&LIIX;8)WcjJdVEX7sJb%eIck zNB94E`P92nIQ7^5S!~v(-SK+*^9CnHTlRjbdAGI#hR&U4o9ASJx<8t(mG^9|pZFA; z=bZrcMF@6=Xu2)vn)keY;6jk5c?1+!X4@gt4TZhlpEAdtqxyTFPZG6VTNQcQysiyr z-tE+|t$X&GKz$FWi^**Bb#0zVixO<>j$9M0)?t;j9pa5t^KOWxZDN1G-gr#KHLa*& znqjl@Z{pz!P=fV<+Tgq~Gd)UHIV`@Q?u1-}!y97;x%04{U&~A#D78n$+7gAX!e=4= zA+xHlVz6JZwSI3^can`Eno-iACKQ|<|Be{X&9{`O+e4xFeVz6ZwvZz%~$ zaujy~^Bxvfhx`1QJ{vvCX{>pZw`VVo4a(Ku*?gL6yTQF+o4aYd`@vnfZuK*}V+3D0 zuFUX0KR7Pk@B;sO+!%wSBPna50SD{4>{W(W_$O!!_}w{g85%lL#~TfXE#Y&x8uYyS!_{(}r=}HnGC+9`BrZ(#Wpy z|H_|lc#&Vpf5RDxgw-d%@cGQUJJrjVeLhbLN!F2MPqA11uvgS5MF-WRy`oCZulTUK zr&lynijJsNKx`o zie^ag;emwUuFVL6n-gv;o|7vvnaTW)qKr7|y>Zd!dzJ#LpQ7ivOtNpO7ukT`m;9xo z;TbY`x_QsxWk&*A_G*bbOdZO_5mF>t|8+EODlQl(9plVs56QQFPBS&{{;SQE z@kS{GTG#YOnbz%W4|{#C>)CM)4hl=@4Vb$3xS?clC0%XQ~U6jElB1IhL(m;xSz?Ep^}sbV!1EY;_6fAAEMtlxS5*p!6uXL3TlK}x45 z-VWKjDzudqN&L+z@xdhcyT{>D|f;N}w>%|C-W1||X9X8rc zUoX)Gk$yof2@dxbS&usI`Lxy=UMcLEL|k$Y_M! zAFxvDLkutPQ5NX@2Z;}GK9dKD&AB{fnl%89{Nuq9nG{c+7AVwBPYa~fPYdMvn`t?T z+sKv9H1sA%XBu#SD&<-#pHV6%I@A0l71-;kD zJbyD|x-(^gmdXI_I~e!e9(UN|BtkY1_L%LbJ%=8^B0c&k*8dFkO3-r`cf0db)K^h1 zk4nNZeqp@&0tqjZFxD?jR5=N|N!Zsfw5n^U+EIMTOlu?!=wJAHY!rQp6Zum!tpQN- zk7FY;DNk8#GQa5*NvThfJp0WW8K_Lc$n!);)~pm`ay`YN(&I^}ZAfr`>BDeORxM|c z*A*OM_@==Y3$*^sX5jLbnOO_@{!(m7$_!hQBI;Wb-J51cBm1``Jdt$=s3``b>#;IDgLglR&mwzn60N>#od|=`_olw(!1TR(wL<#%;27UceumJx6Da! zQn0r_@cE8(D%$ryCf9-bK@P_h<&h3+t@zTAxsG7Rn z5B41C+)DZM9=e)w3f+!?g9Y0GFbK92Fj}w<$#wzK1$$Yt-GDKI?UBp_$PjF=WcvV_ zg1sWye!y74UUf?P8ep7Yf04`!$P(;;WCsD+f^|xE2#_Y&>yimTs$gA`9R}nHc0{tH zfFQyCD%mkWU%}px>`lPEg8k1zr#7eKpuZ68EvY;Ks1fXK$xZ_7g1sZzy8wq^rzATK zSS{G!Bzq6gB-s0seE_Hv>_f>u0<0A5W690{8U*|M!Xzh^^b^p#1^ZMg&jJ<*_L*d# z1NsYgPBImM6*({21wfTx7bUv{XcX)pl6?VKBG{LbT?W_$`=?}A0JV4-05~!HSHPu$ zeJz#O0QU&?jbz<`WrBSx*>`|?!M>NQ2QXf+A0)dD7%7-fGG$Scw^A?z03#RyNIO6> z6QDvcM$9Q#AK-n01xjTQV3lBfCF=*M7VH+uf&tBf^_MIJuvjp&WTAi+f(?*tAYi#* zgCq+BqzD!+Sp?u#!7LhcvPj@S}K*dOI9Y?9LdThn=9Eo$?lMBzGQbwc9&## zOI9J-0?8Iiwn(zdMY#TuO_ijJrLtPGC6d)hW|OQ|G9&KYw4WvH1Pl{w7XYiZ8xSX$ z2M{mVK0tzC`vD6Ddkru`FfRbx>L9?GDA*xjl3)U`NU+0zQG&e*xLvU0fI9>`0Vo#i zB%n;NcLC*sod(<~*n5Dvf_(s(D%eMW*@B$`l;X|;xL>fdfCmM;0Kg8q1ehb(7l0yM zf0u!i@tpu*3T_5~62YzkrU}*!m@e3NfEj}I0CEJo4j3+&QkCRgBbW*B0Ip)dU4jJx z<_p#jfc+Q@m?u~W0DCnQFiWt3fSH1Y0dj?tMF4RDL;@yudUoOAquSoV(|_1LG!B76OY8Pl;{Sr;dU(ggDK=Tsboz?7vXvzw_L{0CQ;V#r)>3=jN_(ASHM&JL^^PjVs{f^0`ETxxj-650=&(+zcGNZ3 zz;rdhjmWf@`m~v>&%+vEA6YTQ&-ql+Lu>3>Q=5mY(<$_Jag)-$+P*^ z#vOdKBa0t$gbppMsYNa|_L?Qu!j;RHSFKpmm}7;l6%DfIZ##xLi|QI1>Z?{;9ZPGh z_NEmp>Q>ZRn``Wih-+PGvrcMkvah58<`tLCnL2xxQdnP8W!J3dRNHH6w80B!6i+IH z4b8mKT2)_fwf{JBwLY>H!;@c~-MXZvvD#kOK)DBN$(Iz*D1|@&-VtqZ@Q9|NXva3C z<pc6#hh0PF{Sd_Ye5&!KVwKQ}~?2 z=No(i6GFWfeB$vLjn4#prsFdopBjAZ2^}HL(FW(|_QvBf>W-yf&-MX;8cS=Am#oDkaE8tNVS*?q*{Cjq<5Rg;YV{W0a6W2zyXR< zt*kn2BCoDO9|2-lsLtHyq>Rn;ItDL z7)7lBQhJ1xE+LheE)g5rgQw0fi}Qc9mnbVES=+jS2TT|juUj82&BJ(<)wvF7Zues z*H!b1H4Xga8Xl!zD|F4!@)1%!67SSUZUz6ZTK=5$fB2BEtTsQ|dV_C=^`T{^sAl|Vhd+EzZYo?_WvBG$@3H2N=htmD z7*_F;_Bel5#}SFLNn0(~EelBNle?O4XipddMxlcH#Wy<^*H_u?RjbLGW}3E|zu7*n z?U>P@wBP_q7ai@yzT(zN)br!_{jCpS*{ z4`X$2yn}3Es`Tg+B&3OvoHmyH%U_tpf3a!7&v!K$QTnv0D1AcO#U!U7#3@lix+wiY ziPLT+#1AZ*+@H8r=kYqyrX@d`khZI7w~~N%DX@C+Pr|CFD$5}d- z>PXKKvM<+ho{sZ%yh~9=X$BR#V4;qcIxg06iH7`#U)lV-b$%1C-~600$-Co`fA;5w NEq^pb@)x&c|1ajS64L+x delta 9189 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 I-|x)%Z^-D`$^ZZW diff --git a/iso/boot/asuro.bin b/iso/boot/asuro.bin index dea6f544f6e68cdbdb7eb66992365f77d8c55bc4..49e125c4aaf4ddf488df013919ff0cb616a17af2 100755 GIT binary patch delta 9984 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 NEq^pb@)x&c|1ajS64L+x delta 9189 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 I-|x)%Z^-D`$^ZZW diff --git a/lib/PCI.ppu b/lib/PCI.ppu index 0eb8253b3016e22db50fe68482cceaa37cd99271..647adb0e8ef8a26f31cc6419d098cb2e8990828d 100644 GIT binary patch delta 14 WcmbPPHnVJk7qi9Qw;O%WSOEYt4hG@? delta 14 VcmbPPHnVJk7xOMR<&C~)tN<_I1|t9f diff --git a/lib/console.ppu b/lib/console.ppu index b46f9f8aec4e42925a8e9661bac92096e550df59..d7c7cbb8455eceffbed14d7f994968a085362905 100644 GIT binary patch delta 15 XcmZ2FhjHl~#tA`8!ACZRT=WG1GwcSV delta 15 XcmZ2FhjHl~#tA`8o4PlKT=WG1H3oi)@cFs4y@vXiikrXKFpVF({Og zV}sTUk6gD83n#BE!Pp z!r|>2>E!Pit{Y#X!uc%?KptfV4ot z0uY;tgMmSSbFw3=^yJ$d0<0^6Vyh>A;E3Vfh@^7saZYSwX@;mY%n3ke{nhJk0m;&i=l> zj(#rjzOKN~aPwCQfeJW#SJ7sf*b(_UxDm@la;t!8JQ<%aH%q}Gf(d4QZV5KdO-)Mgi%xq oNJ^BX7UgEoi)@cFNHH)ls7+MVXX5PG7!=CL zu|+VEO;wjaYw~(VS&oH=ecEQ+HhVq!3S)$t98e{rFf)*33yus9arNc&4fP4}bn^EP z;qZ2ibnAb91QU>ef|$u`IZatpfguor0CVBkoom?Doc5G+I%`>+pE6oCZRihUT- z2jN1Cgc?ai6tz671xA=q6KqfrBd})pA^J-eDFhuC2^gUq+_}Hs| zcsqf{{z<%oNmZ&gfD|anHbT#gI_OAIfa>5?U71eM!R~3eoOr|-Rrn6CkW(jcj&e$b zso{q8tO4fkBCvA$2HF(-5)?Q1E2%6zk=?J2wiUeP#zG3$o`t|e^qWriB%g>e(MLgQV7CHL3>|o>5 z;tSh13PGRB1HI(~_tEx4KqEE5$3q^Xf5FGn6GTH$Ts;sP-LZ-uD_k zsQoSC%GYDDkF&dQE0gik$xS4SUg{f{oLfnJCyTN!fXf9!#Q1mYCvMr_(SCfd+r6(- S4hA~4zf08)OQA5C+pE6oCZRihUT- z2jN1Cgc?ai6tz671xA>V6KqfrBd})pA^J-eDFhT8F9qgHgE3wCnQHAgD3UA^h&e5BY zU~0H-BWr-U+X<|mxrsJ8j|}+{>_VN~F_O7M$QHV--3{MIThUrbzQvl=XQJ+)Xcxh=zMnkV9go08{2CO0D*~8?GAMv`e69>g&G5m zck2wb4DJVOCZ_`+8Y5_i(}kmmmP;~xnfiv^Yv|XrPl&SP60AI5K@@Uo3!CTYlcJT4 zPm3=W|CrQ^MGt}2mnBjaz;dbHC{IhC{@?0)8LbqT1TV_RQO!`A!2H4jv!dE}n0eo4 z^q}^)gezZ-MLy2$!mW%)3#T@dGzKy2Z-_S*iYQ*>uf)<*Wu{s T^6vL{X@8fh9ToyXGSB@5+b%U~ diff --git a/lib/libpmultiboot.a b/lib/libpmultiboot.a index 6b675a98ac368c74e2c58d0d3759548ad10c4690..ea4dec4b559aa3826b76a4d35ea23255e60f1f0d 100644 GIT binary patch delta 510 zcmezHi1EWC#tCvP78d3f8idu}D^W{G?BFw5) zl!d!WeDhWnZ8%SC^Dp&daGu2GJK91hJWa;Qf6e$O%diM-R@2?b$Y%<40>TBG6^u0C z%EdM(nYytcEWK$X#W*=%USRWEtBXi(xoPto?l1Ap@9jB}3=nc&1m}rwKJWG)N#%Jr zpm89#++pI|tl)hD$w+2jUbr@~%~}Dcka&C{i+Evf65D(#F$GD^Bee~Q2M)>k+3=7A VMamAQ$u)UgF#Y127v`O30sy$~l8pcW delta 510 zcmezHi1EWC#tCvPW`@RQ8idu}D^W{G?BFw5) zl!d!WeDhWnZ8%SC^Dp&daGu2GJK91hJWa;Qf6e$O%diM-R@2?b$Y%<40>TBG6^u0C z%EdM(nYytcEWK$X#W*=%USRWEtBXi(xoPto?l1Ap@9jB}3=nc&1m}rwKJWG)N#%Jr zpm89#++pI|tl)hD$w+2jUbr@~%~}Dcka&C{i+Evf65D(#F$GD^Bee~Q2M)>k+3=7A VMamAQ$u)UgF#Y127v`O30s!H!kh}l@ diff --git a/lib/libpsystem.a b/lib/libpsystem.a index 23da724ab435a84ba3ccadd371ad5d5ca5c94f04..e1a70ee084b83c22d410160673b38539a82fbfd7 100644 GIT binary patch delta 3160 zcmZWreN2^A7~gY)K)F}J^j_2kjhv~ErLRac6 zSf_RRASH{mvU%l9kA)`AulP`C)*T_%ow*`y$QC0tmCon;zW4V2b$-wDoZoZKbAIPJ zufKkrzkXcfjEIbkc^L<1E=dprm2qfDc z?KalW&DYH!RJ*tk^%QiG#=Jf=hFeKb!KX%?m-H7MHWBJC>PMbI2l;h*Pv|U^Skgs; zE5f-FORQW;tE^l}t0Y%ync^aDZx)d3@&QTB;56gNa!B2}K4T#{sBYbDUM8}w@+6?D zYKJH~_Fse?6uZGq2C7vi!-NK^2gHovbLS<$cHJh!FZNqZBz8j}B$JyIZaNZbL4}(H z8*1DdMIPCF6ylVaOf50hxkzSRq_G7TDcxd4ue@PJA8)s!V>_+rQiF-SBp+F;n2%T$ zSs{vWuPR%16RYCt4|Nr@o6IU!k~6zojh$4YGrI#~^1fzP#qBM!ihSWHvu-K5+hXoo zT4sDQwlsxA2w4Y{WlI~$^MrR6Gs=_2j4=R z=YJblkuj>)N+tB!DPTEGw#j_@a=c+;lkiv$6w!w1@QJF0wqa)L;FY5_iJ;mk-+ei4 zz906fQ{xyj+${n(&V-YI^JZB#BQhSHWn|Rr>P|9DEFr%?bRZeRt`ue_ai{3CqIWdQ!A671-jeLQuqfXPO7 z;Vm}^U9@W@j5DB<4wXW^0llteKrfvi$je=q!diD7*N&*3G;0k|-PM0{yW^ zS5UGfw1l!StZMyt3oB5pY-?t2{xD&t`K2`DE7)VmMA|U3i4I5O59oXP9)(I;d=Q#t zEQgrEGidln2TeVsS96%^)v^(*FZbrQX|EuuI~GF1pd=|fp~I->q-NnmMYG|o_6r(+ zM+gmrlBVID4x_7k3>r36G-KmTc|!gu=MCvn6Hu~D=m0O~hUI4N@;kQ=5fI9_Z1 zB4o*}xq?LmS}7N3`nME%ef(Bf8u1{^G?9cS`czH;nAQTSiUTP|Jzl)d5Tx z&O^IwD?Pf|IO(J`+mO*4oOIe;+p8ud;`cu-Jxx3xAp&y>AI{3M$p?!TXW4?b{{Y;+ BQAGd% delta 3160 zcmZWreN2^A7~gY)K)F}J^j_2kjhv~ErLRac6 zSf_RRASH{mvU%l9kA)`AulP`C)*T_%ow*`y$QC0tmCon;zW4V2b$-wDoZoZKbAIPJ zufKkrzkXcfjEMBK+35#oE=dprm2qfDc z?KalW&DYH!RJ*tk^%QiG#=Jf=hFeKb!KX%?m-H7MHWBJC>PMbI2l;h*Pv|U^Skgs; zE5f-FORQW;tE^l}t0Y%ync^aDZx)d3@&QTB;56gNa!B2}K4T#{sBYbDUM8}w@+6?D zYKJH~_Fse?6uZGq2C7vi!-NK^2gHovbLS<$cHJh!FZNqZBz8j}B$JyIZaNZbL4}(H z8*1DdMIPCF6ylVaOf50hxkzSRq_G7TDcxd4ue@PJA8)s!V>_+rQiF-SBp+F;n2%T$ zSs{vWuPR%16RYCt4|Nr@o6IU!k~6zojh$4YGrI#~^1fzP#qBM!ihSWHvu-K5+hXoo zT4sDQwlsxA2w4Y{WlI~$^MrR6Gs=_2j4=R z=YJblkuj>)N+tB!DPTEGw#j_@a=c+;lkiv$6w!w1@QJF0wqa)L;FY5_iJ;mk-+ei4 zz906fQ{xyj+${n(&V-YI^JZB#BQhSHWn|Rr>P|9DEFr%?bRZeRt`ue_ai{3CqIWdQ!A671-jeLQuqfXPO7 z;Vm}^U9@W@j5DB<4wXW^0llteKrfvi$je=q!diD7*N&*3G;0k|-PM0{yW^ zS5UGfw1l!StZMyt3oB5pY-?t2{xD&t`K2`DE7)VmMA|U3i4I5O59oXP9)(I;d=Q#t zEQgrEGidln2TeVsS96%^)v^(*FZbrQX|EuuI~GF1pd=|fp~I->q-NnmMYG|o_6r(+ zM+gmrlBVID4x_7k3>r36G-KmTc|!gu=MCvn6Hu~D=m0O~hUI4N@;kQ=5fI9_Z1 zB4o*}xq?LmS}7N3`nME%ef(Bf8u1{^G?9cS`czH;nAQTSiUTP|Jzl)d5Tx z&O^IwD?Pf|IO(J`+mO*4oOIe;+p8ud;`cu-Jxx3xAp&y>AI{3M$p?!TXW4?b{{S?l BN4Nk0 diff --git a/lib/scheduler.ppu b/lib/scheduler.ppu index 372da0c7e6aeccd36aaa6872c831df80f17cf65f..1da47fe8fbbc571253008f43df537a8db5ee937b 100644 GIT binary patch delta 1236 zcmY*ZO>7fK6rQ))wbynGj=|dmCqyaUXJ@r5isHegSAt7;TduR_xTsZa6elz|Nj5Oa{fA5<& zZ{ED|PU7dDR6aj{=Ip3?n^*^XoKLg6os8|B_E^QM*yT%EM!g{ogcz}gk$4=a^oD_Y z-g9f7>)&A1$M-vu(FjN_>#X=Tqoe$vj$|iF$<#ULOP^6ckEyrlbADglp;6wiO~<-K zjO*6&l`f#KQ=DJjz=1cm=(Y1FJ8&dHV zn0rz&#oy|a7ezX1*%tRT)g{wJr{N*Uu>*^17Ol&af46{?5gqb%(=Yf3B5d|2FnfZf zV&ky*I#nE>%w^|ias{jX7RE2n&W_DxEpx0mT^ul*KQGQtOymmuf;KQXgcwTtC@}D8 z{n|ChL&S6|ukW#gsN9cyG1L_&HR;k$4 SM)#~XYmVa)`;&hbKK?&A%*vDi delta 942 zcmYjP&1(};5T8kQH=8Erqs_K9AFXLj(YCREv?6#=X#=he@J+-m*s!Rq19`}q)oID}-i+G?#{yuC*;##Ns{ z5Tp8s_|2SzguANZ@zI%@;|-;|LFgHRi~U@ zUvq8KDlY=2f+_*x#5^Z$o~$n&B&%0kr|mjy7ck9#D5*IT0qUZ?!A!tRzj#8HQHFe$ zt}iXbD0l1~1~|qe>MN}B19czgct*Pw6W`LG_B&7V9ZiV(q#aaql)@3wC$QWxTdea0 zFrmsJaa-iBlMyFP7ZV!UfqLECT(2>c*;G0xxi1M9Lt!Go&nrd=lP4wqrjLgyidAaO zHQVZJ*lwfPVlJsXXnX^URbNpW*buL1X;4jYD)|GfAG`c5#pcHDvDT Root_Task do begin + console.writeint(list^.ThreadID); + console.writestring(' - '); + console.writeint(list^.Priority); + console.writestring(' - '); + console.writeintln(list^.Delta); + list:= PScheduler_Entry(list^.Next); + end; +end; + procedure init; begin console.writestringln('SCHEDULER: INIT BEGIN.'); @@ -91,6 +115,7 @@ begin Tick:= 0; Active:= False; isr32.hook(uint32(@delta)); + terminal.registerCommand('TASKS', @terminal_command_tasks, 'List Active Processes.'); console.writestringln('SCHEDULER: INIT END.'); end; diff --git a/src/terminal.pas b/src/terminal.pas index 2248ff1b..255493a2 100644 --- a/src/terminal.pas +++ b/src/terminal.pas @@ -11,9 +11,10 @@ type TCommandBuffer = array[0..1023] of byte; TCommandMethod = procedure(buf : TCommandBuffer); TCommand = record - registered : boolean; - command : pchar; - method : TCommandMethod; + registered : boolean; + command : pchar; + method : TCommandMethod; + description : pchar; end; var @@ -22,16 +23,37 @@ var Commands : array[0..65534] of TCommand; procedure run; -procedure registerCommand(command : pchar; method : TCommandMethod); +procedure init; +procedure registerCommand(command : pchar; method : TCommandMethod; description : pchar); implementation -procedure version(buffer : TCommandBuffer); +procedure clear(buffer : TCommandBuffer); begin - writestringln('Asuro v1.0'); + console.clear(); end; -procedure registerCommand(command : pchar; method : TCommandMethod); +procedure version(buffer : TCommandBuffer); +begin + console.writestringln('Asuro v1.0'); +end; + +procedure help(buffer : TCommandBuffer); +var + i : uint32; +begin + console.writestringln('Registered Commands: '); + for i:=0 to 65534 do begin + if Commands[i].Registered then begin + console.writestring(' '); + console.writestring(Commands[i].command); + console.writestring(' - '); + console.writestringln(Commands[i].description); + end; + end; +end; + +procedure registerCommand(command : pchar; method : TCommandMethod; description : pchar); var index : uint32; @@ -41,6 +63,7 @@ begin Commands[index].registered:= true; Commands[index].Command:= command; Commands[index].method:= method; + Commands[index].description:= description; end; procedure upper; @@ -63,7 +86,10 @@ var begin isCommand:= true; for i:=0 to bIndex do begin - if char(buffer[i]) = ' ' then exit; + if char(buffer[i]) = ' ' then begin + if i = 0 then isCommand:= false; + exit; + end; if char(buffer[i]) <> char(command[i]) then begin isCommand:= false; exit; @@ -117,11 +143,17 @@ begin end; end; -procedure run; +procedure init; begin memset(uint32(@Commands[0]), 0, 65535*sizeof(TCommand)); memset(uint32(@buffer[0]), 0, 1024); - registerCommand('VERSION', @version); + registerCommand('VERSION', @version, 'Display the running version of Asuro.'); + registerCommand('CLEAR', @clear, 'Clear the Screen.'); + registerCommand('HELP', @help, 'Lists all registered commands and their description.') +end; + +procedure run; +begin keyboard.hook(@key_event); console.clear(); console.writestring('Asuro#> ');