From 9daebbf49ba8aebd981f1e50b1228ac1e5af0861 Mon Sep 17 00:00:00 2001 From: kieron Date: Mon, 23 Oct 2017 09:58:14 +0000 Subject: [PATCH] Terminal command registration. git-svn-id: https://spexeah.com:8443/svn/Asuro@221 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/bios_data_area.ppu | Bin 2278 -> 2278 bytes lib/kernel.ppu | Bin 2773 -> 2773 bytes lib/libpconsole.a | Bin 81668 -> 81668 bytes lib/libpmultiboot.a | Bin 29040 -> 29040 bytes lib/libpsystem.a | Bin 147760 -> 147760 bytes lib/pmemorymanager.ppu | Bin 4122 -> 3990 bytes lib/vmemorymanager.ppu | Bin 5584 -> 5430 bytes src/pmemorymanager.pas | 28 +++++++++--------- src/terminal.pas | 64 ++++++++++++++++++++++++++++++++++------- src/vmemorymanager.pas | 28 +++++++++--------- 13 files changed, 82 insertions(+), 38 deletions(-) diff --git a/Asuro.iso b/Asuro.iso index 1e33bad85af33f7b7ba26b848c5dc8ade8a082bb..87783d83c7f9b4dc01211e779d0b9c113865843e 100644 GIT binary patch delta 17805 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 delta 17758 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 ZUN#yX>bB?q(SsW{|Je}3|FSvne*x@mWVZkS delta 7900 zcmb7J33OD&w!OF0l{s_=GIbJ2Lk2=fm`n&@fEWnK5KI_VrT|GJh6f=N`b0Yz&@{c` zLrdi?|NE}^Ko|ds{{sDoiTVlc+q6$Z!P*1jVR<{`=hOj^VAPYyGTs?>_sS zI(1G}oqMZp=VG(rVzXiMqiWEuvP&lQ0538RR5$R)%_EGb#wiMaz9^O-HAkyC{0no0 z+Qx60pHn;e#_(bOllv)(c7g8?PbOoyZVYcUOfvDm_FiQ7?+fcGkH@oh!%4GyYb|cJ zcU8saQvI|vRZ(p38bAzwT3?;`f%y4pW)Rn7#b&oA;uWQ}p(;h$T=#XTBRHOTsuf()HSWzI?}vNnj3L?o92!vjYjWs zlk#6unM>N?q&)=fbgfNSw~{u#yX|hN)Z6-#_I>K%JhVGiXMB-xjaVKYHVkv;Xfy3=tLrp88K5oXjS(Ayw4sV}jcKPw@r=kE!_CpW zEHc(`ZZv;3a%i8F(bT*47pz77CpK5HqDAndk%?+K|0Z%sLe&zpyZ-5uSe`qKWYb<9 z(D_pj3RcC(L@h8)8l@<^tu|MqqTLG-HDTcgqhhk&071{I?|3}Bx7%DLiuOacu31PL zI6!lOG>SG28a?(*9ugfFu~)WBfYzJSwroBo+8WmAk2-lLP}!NT?Hj_EM>iO>EPg9G zEp!8N)3T#cRHsMs^q8dRbae5^bC{ubYXiMLincFFQ9xaSP@!};9!w2+IsM{ns7504Su9-&?jMjr9-7{=%J zO$#wDqZr}Rqc1#$cYB0+Jo69

k>|b;c+TW+CMHMi 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 ZUN#yX>bB?q(SsW{|Je}3|FSvne*x@mWVZkS delta 7900 zcmb7J33OD&w!OF0l{s_=GIbJ2Lk2=fm`n&@fEWnK5KI_VrT|GJh6f=N`b0Yz&@{c` zLrdi?|NE}^Ko|ds{{sDoiTVlc+q6$Z!P*1jVR<{`=hOj^VAPYyGTs?>_sS zI(1G}oqMZp=VG(rVzXiMqiWEuvP&lQ0538RR5$R)%_EGb#wiMaz9^O-HAkyC{0no0 z+Qx60pHn;e#_(bOllv)(c7g8?PbOoyZVYcUOfvDm_FiQ7?+fcGkH@oh!%4GyYb|cJ zcU8saQvI|vRZ(p38bAzwT3?;`f%y4pW)Rn7#b&oA;uWQ}p(;h$T=#XTBRHOTsuf()HSWzI?}vNnj3L?o92!vjYjWs zlk#6unM>N?q&)=fbgfNSw~{u#yX|hN)Z6-#_I>K%JhVGiXMB-xjaVKYHVkv;Xfy3=tLrp88K5oXjS(Ayw4sV}jcKPw@r=kE!_CpW zEHc(`ZZv;3a%i8F(bT*47pz77CpK5HqDAndk%?+K|0Z%sLe&zpyZ-5uSe`qKWYb<9 z(D_pj3RcC(L@h8)8l@<^tu|MqqTLG-HDTcgqhhk&071{I?|3}Bx7%DLiuOacu31PL zI6!lOG>SG28a?(*9ugfFu~)WBfYzJSwroBo+8WmAk2-lLP}!NT?Hj_EM>iO>EPg9G zEp!8N)3T#cRHsMs^q8dRbae5^bC{ubYXiMLincFFQ9xaSP@!};9!w2+IsM{ns7504Su9-&?jMjr9-7{=%J zO$#wDqZr}Rqc1#$cYB0+Jo69

k>|b;c+TW+CMHMi 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 delta 21 dcmcaAdR2788Agt&{f1MN&s=`A`3fT=Cjf0533&hj diff --git a/lib/libpconsole.a b/lib/libpconsole.a index 402b67153745bc4a27d885652ec30132863aaa00..f223ed6ff24bfaacb64fa0508e34c2acc4fefd64 100644 GIT binary patch delta 979 zcmZ8gZ%9*76z9I4reoDh9(&JKx=ABi!zSt0VBkoom?Doc2rNVv`>+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~ delta 979 zcmZ8gZ%9*76z9I4mSfc`#@=(4ZqkU>uqVvcVBkoom?Doc5G+I%`>+pE6oCZRihUT- z2jN1Cgc?ai6tz671xA=q6KqfrBd})pA^J-eDFh@ElDkdFX1cB22j53q(OO8q#hTS;qQ1o_^krs{ z(dM`(t3QnUlCD&e>U_p#v7`^w%D>6!e180(=?vWU?dAeNXrf}?p{_$O4Bt9$GSGCV z!B9)!yT592Isgu11kG@&bOg~-MS?F=->`cP{d)QdQGQ&6)H=c6W5j S`-7d@-=%7YrBIm6aeo2cH#BAd diff --git a/lib/libpmultiboot.a b/lib/libpmultiboot.a index f3e098b65c6a01723ecf4f26716024da5e889ae3..6b675a98ac368c74e2c58d0d3759548ad10c4690 100644 GIT binary patch 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@ delta 510 zcmezHi1EWC#tCvPh9>3)8idu}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`O30sv$kjhv~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 delta 3160 zcmZWreN2^A7~gY)K)F{hruU)_xw$nL1zaW~njoXp_z=nEVmgN6C1C~JK1`>55V}%l z!8)ze2Ps*kmCY+>dMq??e#M7Evlt=Pow*`y$QC0tmCon;zW4V2b$-wDoZoZKbAIPJ zZ=h~mpl)2ljEK~(e`tH_eW!Bcn*^{Ie=QVQnSb{0?D>V zyNva7^K~-_)hsGN-T9rQA-B(r;a1X}|EUq@BmISkO@#Uj`;m9hL4IA{9Xbmo6nB!~ zig2!kVk=kTDl1pwD#?{ns9mjxudY(P>oIL$b+98$Zk&sazfs$F-Rmx*kvI0>k- z${~u50~a9&IX8I7K$Xg5n9xAgfS3_{?!4sJuG?hz#eR#4I5+f$Wb%-LO-Dj4s9=*| zLk(M_$RnGNLaY*#sU@a5H_5DxG`8R-C0nfMl{c*D-Y^N1nsyC63aeK3@B40SltX)d(Hk-Sa zmKk4IEj5es$%6f#8GLRgpM11ne;2B~GdPgki?#~+W{$s!Nw4nqS*%?%bU-~jqeC2aFQ9x9DrHgn6 zwI)S`|7u8t|7sWZECC0}z19Y?^JF8lXwN_9BRhuG6vPnPG29`Jx_U(Egjr>W+B(`{ zu3Gf0cW){S@sA|~X}F`cQwlsxA2w4Y{Wlh7$^I7~6H6D~2j4=h z_kSB#kuj>)N+tB!DPTEGw#hvDa-3melkiv$6w>Pj?BEFr%?bRY@Bt`ue_ai{3Bs`Z#J9^T{1A=EhM-vj%F3dMaA2L~ZKU=k zFl5|s7cP7XmeMu3FvS!(Z76^l5&E@sb1FB`;1ggz5-!T-WdQ!A0_^CTeLVH7fXPO7 z;Vm-=-L!Khj5DB%4wXQi0e!S@4Oki@X0V_3l!MYPWy_D2(R`Q;La6kgXW*RN2ETgc zG^rZYizP5-SW22sd|pRVcHHV7@S&!9a3iRPjO(M4mT%Hx5*RalS|**lnF}Pk7VPrb z;^DY{3!LW9J6--ds4FUYm_vz@vLz;qJ3y=71oez@quLmcFUQC0nPB;ULdk?^`u1C( z`loPG=Coc}dhVSNj2RaDjiq}L90#X-*38Z#S^j)KbQZ(ylwEvX>!w|LNt6wBf&SQ| zD=1mwn?qR`R<-`SnH9(>+nSl1KTMcuekslP3icQ>kv7b1qQlX+1Nxr6N1=ii9fT$s z%OPg)3>yB?K~oOt)f}dJwQR)d%e_llwO5eT9t$C1P?D6M&|%bjQnT=(qSJGiW)5YT?bP3U#u0+hU`FtnXKtl{$(hhS$(u=2=pt( zF=n_!C?0h?qv>ncp%w7sBU<(B7W(MX5#8;0fAL|4J0$t;8%B2jEu$uEsO3cO>HsDT z*P&gum0sO!Ty#>ZZOG^iE;?2iIk&>>b9*=XsR5?m@ZF87KeYQPFz|<$eOvatuJ1 zf^7Sp3nUq}d4c2~s60rVfeBdO>-?lMDC_7(*v7No?N;;c=LGKY)SW2n%xrXDVPf(XrVQrI zmW*+XlixA%Os-|(n;g%iv3WXE7vtnYCMhsSk!2wp?`K8^IQTyKJeMsS0}}%S6VqfN z?rc5|AQJ|7m?rOK)nGFN3Ry5s-pSp;B?^_5W18&Eqs*lMBWaeaP zJ{8VvD6eF)2cJ7*-Q)>;8k{Xqv98Gn`II<&puDM*-|!hQPM<8xufaHXvKzk^v1K%uS7lm826^X*2G-OoI^kw=5=C{XA) Y^WAoX@Ah77r9kWSPt(a-J!jW%6ASV}V?#BF5hWK*Jb=Cp&V8FfslI E0AvO!UH||9 diff --git a/src/pmemorymanager.pas b/src/pmemorymanager.pas index 35c31f66..0fb55a00 100644 --- a/src/pmemorymanager.pas +++ b/src/pmemorymanager.pas @@ -97,13 +97,13 @@ procedure force_alloc_block(block : uint16; caller : uint32); begin PhysicalMemory[block].Allocated:= True; PhysicalMemory[block].MappedTo:= caller; - console.writestring('PMM: 4MiB Block Force Allocated @ '); - console.writeword(block); - console.writestring(' ['); - console.writehex(block SHL 22); - console.writestring(' - '); - console.writehex(((block+1) SHL 22)); - console.writestringln(']'); + // console.writestring('PMM: 4MiB Block Force Allocated @ '); + // console.writeword(block); + // console.writestring(' ['); + // console.writehex(block SHL 22); + // console.writestring(' - '); + // console.writehex(((block+1) SHL 22)); + // console.writestringln(']'); end; procedure init; @@ -128,13 +128,13 @@ begin end else begin PhysicalMemory[block].Allocated:= True; PhysicalMemory[block].MappedTo:= caller; - console.writestring('PMM: 4MiB Block Allocated @ '); - console.writeword(block); - console.writestring(' ['); - console.writehex(block SHL 22); - console.writestring(' - '); - console.writehex(((block+1) SHL 22)); - console.writestringln(']'); + // console.writestring('PMM: 4MiB Block Allocated @ '); + // console.writeword(block); + // console.writestring(' ['); + // console.writehex(block SHL 22); + // console.writestring(' - '); + // console.writehex(((block+1) SHL 22)); + // console.writestringln(']'); alloc_block:= true; end; end else begin diff --git a/src/terminal.pas b/src/terminal.pas index bdcda68c..2248ff1b 100644 --- a/src/terminal.pas +++ b/src/terminal.pas @@ -7,14 +7,55 @@ uses keyboard, util; +type + TCommandBuffer = array[0..1023] of byte; + TCommandMethod = procedure(buf : TCommandBuffer); + TCommand = record + registered : boolean; + command : pchar; + method : TCommandMethod; + end; + var - buffer : array[0..1023] of byte; - bIndex : uint32 = 0; + buffer : TCommandBuffer; + bIndex : uint32 = 0; + Commands : array[0..65534] of TCommand; procedure run; +procedure registerCommand(command : pchar; method : TCommandMethod); implementation +procedure version(buffer : TCommandBuffer); +begin + writestringln('Asuro v1.0'); +end; + +procedure registerCommand(command : pchar; method : TCommandMethod); +var + index : uint32; + +begin + index:= 0; + while Commands[index].registered = true do inc(index); + Commands[index].registered:= true; + Commands[index].Command:= command; + Commands[index].method:= method; +end; + +procedure upper; +var + i : uint32; + +begin + for i:=0 to bIndex do begin + if char(buffer[i]) = ' ' then exit; + if (buffer[i] >= 97) and (buffer[i] <= 122) then begin + buffer[i]:= buffer[i] - 32; + end; + end; +end; + function isCommand(command : pchar) : boolean; var i : uint32; @@ -33,18 +74,19 @@ end; procedure process_command; var fallthrough : boolean; + i : uint32; begin console.writecharln(' '); - //Process Here fallthrough:= true; - if isCommand('version') then begin - console.writestringln('Asuro v1.0'); - fallthrough:= false; - end; - if isCommand('clear') then begin - console.clear(); - fallthrough:= false; + upper; + for i:=0 to 65534 do begin + if Commands[i].registered then begin + if isCommand(Commands[i].command) then begin + Commands[i].method(buffer); + fallthrough:= false; + end; + end; end; if fallthrough then begin console.writestringln('Unknown Command.'); @@ -77,7 +119,9 @@ end; procedure run; begin + memset(uint32(@Commands[0]), 0, 65535*sizeof(TCommand)); memset(uint32(@buffer[0]), 0, 1024); + registerCommand('VERSION', @version); keyboard.hook(@key_event); console.clear(); console.writestring('Asuro#> '); diff --git a/src/vmemorymanager.pas b/src/vmemorymanager.pas index bd82a9d1..ce2e5187 100644 --- a/src/vmemorymanager.pas +++ b/src/vmemorymanager.pas @@ -112,22 +112,22 @@ begin PD^[page_number].PageSize:= true; PD^[page_number].Writable:= true; - console.writestringln('VMM: New Page Added:'); + //console.writestringln('VMM: New Page Added:'); - console.writestring('VMM: - P:'); - console.writehex(page_number); - console.writestring('-->B:'); - console.writehexln(block); + //console.writestring('VMM: - P:'); + //console.writehex(page_number); + // console.writestring('-->B:'); + // console.writehexln(block); - console.writestring('VMM: - P:['); - console.writehex(page_number SHL 22); - console.writestring(' - '); - console.writehex(((page_number+1) SHL 22)); - console.writestring(']-->B:['); - console.writehex(block SHL 22); - console.writestring(' - '); - console.writehex(((block+1) SHL 22)); - console.writestringln(']'); + // console.writestring('VMM: - P:['); + // console.writehex(page_number SHL 22); + // console.writestring(' - '); + // console.writehex(((page_number+1) SHL 22)); + // console.writestring(']-->B:['); + // console.writehex(block SHL 22); + // console.writestring(' - '); + // console.writehex(((block+1) SHL 22)); + // console.writestringln(']'); map_page_ex:= true; end;