From c015d443f6b7fa884c2331fc0c142fc7288d2b9a Mon Sep 17 00:00:00 2001 From: Arthur Beck <averse.abfun@gmail.com> Date: Sat, 25 Jan 2025 11:10:03 -0600 Subject: [PATCH] Worked more on EGA text mode output. Made good progress. --- kernel/config.aphro.example | 4 ++-- kernel/grub/boot/aphrodite.kernel | Bin 33976 -> 34544 bytes kernel/grub/boot/grub/grub.cfg | 4 ++-- kernel/kernel.flat | Bin 33976 -> 34544 bytes kernel/src/include/arch/x86/egatext.rs | 27 ++++++++++++++++++++++++- kernel/src/include/arch/x86/output.rs | 4 ++++ kernel/src/include/arch/x86/ports.rs | 2 +- kernel/src/internal/arch/x86/entry.rs | 7 ++++--- 8 files changed, 39 insertions(+), 9 deletions(-) diff --git a/kernel/config.aphro.example b/kernel/config.aphro.example index a91c120..387c61c 100644 --- a/kernel/config.aphro.example +++ b/kernel/config.aphro.example @@ -1,5 +1,5 @@ -# config.aphro for aphrodite devel-bc19d1a-out-of-tree -CFG_VERSION=devel-bc19d1a-out-of-tree +# config.aphro for aphrodite devel-2df6e24-out-of-tree +CFG_VERSION=devel-2df6e24-out-of-tree CONT_WITH_DIFFERENT_VERSION=false # Begin metadata diff --git a/kernel/grub/boot/aphrodite.kernel b/kernel/grub/boot/aphrodite.kernel index be1bb802da13cdfa796ad74b342fc139626c6095..048f87c99f2f27c6eb981629d9f55d4e2b9230ed 100755 GIT binary patch delta 8180 zcmb7}3tSXOp2w?)K}Hyv;UOS`Ahd#_IKx9`6kkZh2hkzAU`8}P2ok~?S3yk<GipPm zZQI3EHXrxaB;K7#%x)egxW>52CnUO26YqR1#F+J>-Y40#VzQd3Q7@OdU)4-QZx%J_ z&!@Yqe)X+?{j2I<Rn4$ZHeFUtt*J5R9wPk8BdH{mWRm^lt*yDvA@2+!gx#U6&`yYe zSHgJQ*@1hViIBsu%d2f^Eoc3H>9pTp_^IFjEZ!G!e~-H&n2-FlEzQ2b;%k8gjagf; z{)3QALgZ(sA~Q~2d}_3<IX;XDRtV~rZO8on+C;DXt@dsVA<7d>RqSe`7%Sh@!uk<X z8}3EQ6G=$*{tIMx_}A)|H&~rmucopZPcy?oelK|WCW?GoYEOlrQHylbZrkutA3{PD zRtKh(Ke2>#$f8Ogz@}U*+EuADkaDQf`9P{rm3DOS(z&X1_Bc<?k&{HZRCFm}sAN@2 z%y^lVQqf*(^D0TAPy03+Ue%))SL9m|v}ESm6}ZMSZsvHY=%}^w>>;r76{TLZ%HOc! zXbgf{D#oJgEE^G^3u_~J_P5M3N|iZi5yhWJ`~&^pC{}z)qV$7h^-!g$tsb2aKJlMJ zduHjT#kS$Em`t_AB1@QPa^ZE%HHzlehH>LvXd2l$wNX5KhIzt!f!3_7wbf`1{RnvW z4x^LA;KW>56tIP6a_zRJxyW5Og2n<Z$J&~vFvS5yY81_>whetk2(j%gNp5augGk>^ z>_0ya)6?zgEZx%t=IISQ0!5g{EzE9-rMcbKREDT^AGU3riMLu}m!()ne~5=|@9K2h z-U`vSch(T4SoBcmz*t`?rp?n8sg$Im(NeWU#H$jf@T%HWlGIWxMr<k>gjb$YVO3_? zm6BK#EmT$~pr^1>B}*b~%QTZcl@WMCT_{TqmT$`o<gG1IAyO^U=Ku5iQC=!b6M2bG ztdyl<BsZa<7RePz<+VsyZsY?g2~UCbQV;e<TbT6a4Ja=6G20U>U`<tIL}RUmPtYJt zhhi4hmdl9C+Fx=l99pnCFZwOR1JnEWa9@z0e*)rU&i^$$sO?}{KGzO0t$SuwrIQuq zdbLpq8t0Ko&Xd~nAao~rglH1x4&AUdWwV(GL=7UQ4)XOrf~_e7)4wT=k4RyNtyx4? zRo49A_iH-`ASt!8&LObriR8qX!^mhOSg1>%81-{Z_ecGcp2_T-<oYfnznk&TbKMT4 z+kOJ$*Kplq(0y~6K7;8>4NEGBJr)z{9IUt^w#*$$5epWV@|aawVc%4gpiGZNOj$t{ z+V-+gw%hg=4Zz#1@JUB1PgN`@F@iB(tq2<v^FsbcdlLH~Ruao;TbQg2^f3xsTXK+M z%T9Y39D~4WOF1_xXzV(66>jX7HpKw(Hk2X;_4jHgf)H#uv>$W~jSS?rDi{{!)qW35 z@nH+oeidY@W#K)|-ZII=8xQenUCfeF!zx63wZ~WmgsL{_c6=WT2#f<;rUjU8>4wSH zT#f`nOI70j0z2r^Z@AS|mYd@9YWFd-7+(xqol+?}<VvwdZWNcx^<q7AEA%y3JcStV z#`o$(dx*2$ec9I3%))7^fSE9}L6c8Q7ljp3?hkAm!cbCuC?u5#|J!v@{wSnUv@@r= zj;K#q{DF{=g+r6fzzF>`*&g?_9WqX&LK{p<mkr@D=mv`k8+5jXS!_*HzlQ;-)ev#M zZ7kwWVQ97g>CfsDRB;}0p7dyIS<f1=v9R7h#zwKPS6hNTbX}tufpv3$bwO$Y-xV$0 z5P;d5zTnz9=7aKQRwdKx(N3`w0Y;>;SlTQyWz(S|GZqV}mWEBYz@v4nV{NJIsl1Po z^^|M<u($9^E@mva&U_P*(fY&N>ir!dI1;P(cZOUN+pUpEL5K(n=d8AXz+Rmg@<5JJ zJcs2z5suX07{ii(8aohnf`$qIDEor)<2`a2!)pS%tyxA7_L1|~LM2UDF|4)g2Igrh z?_ZGx$%%-zVtKk*Ht~LJgX<SU&_$j*Z0yx>)~l>QAl=@;E@t2rJnq=cK1OZCLscX; z0f}Bs#NHR!;N)A{3Y=mHWBH1<oXN^FC;emCG-)~L)>T`Cs(i(&g?hCzUj7ZsiC!%x zP<-_0(b*N{8hTFVtv{gA`m};bM;syddz;!D2C2&W4*FKws2MAhvGJZ<w~rqX4KtKh zeh8JBl~#TZm06Tlb`;5FR;87nL}hlRl^sTMS?s1(e$4D<C(@>M<7saCP?IT{&P&fQ z4d|pz>8+;tP8uhsvYboIOnU}?N(Zg$4>qB~f(Pc!Kky5<C|z>tUVch9h-s$q4*CLK zv7PioF>^p9J7vse{uN1nk5xKYd|@jpt5W|?8Zo3i&DM!hQ<=YBbn#+qQ#-zQJg*B4 z@ye7`Re7<4N<)U5UQML04S67D8#a{L<sSJkZxEl5g^6_V(2BThrZZ1s<>R_9#|F?X zL+?pEfgzI)ro!6;s<a$I;XE=88>vUzPrn*EIO<-UFzf@%y~4UOPTe@RgQjF8n}&7J z@fkBrCljcW@s{a)XWNv_Y{3-TNmmUUBV4Di4=X7ME}lJDT!BHb>J3jri%Oj+VnwH_ z_y9aF3(7sISkjpAztB;`lX6#HM9|RdSbp*qPepBnb`0wb1FK4jpR*DHLxvI+n~|rs z?_7`eS|ojZ_)uFkAFQqjWooKQqdIBZ@ZqM%`_r?-GvSmaOR~oUP^_ZdRqm-ZX;mTg zcUftsXJhHRSx;KR@%f`FTRZ6eBZgYeV58ufjUzIAuOOqjZ~6VfV|!k3TJ7>F`M>mD zwXhn}R<^IyiDvmit;OSS^I$6dZKZf>d$16sgLdU!qTFL{KBD~6QXeiy%2UkpGD{ae zZ5Sl~fmKkIYSweBh`q)v->UVcVD`<w@MtRnCRn!>(%fDjjb&}&dv+grrdckxboIxA zv`&;IW=8rCW|BxlF>-bujEDgFWBHiw@hSF^fMtRJvv@V{O|*Fvhie%U!H%+^m|af4 z8_{pzzXL{7h4SCzNbZ*aH!QM6RbHYgBMXHYv~uLQ=m8ktYPonsr0vc3ZErSB#=7{! zNGDq!pN$;GUVXF23|xYb1a0ZJet#e?5_-mPTHAu`cLYIcOLE*R2;*q2bDHoi-Q!#( zG}5e`g^q#Pn7H?|rArRI8+{<k=imuO>yTh(12_ksnN;Z|`lp<WCc#Qy%$*>#w|$u_ z3c~NGHGjI`p%wW<3NEt)=Z`o1{@K9=gMB29Z#BEvpk!eYTmuqtbD`eeRoa$6(-hs& z7BV{8l(H2o3)5p|x5gU3--|KR*_AZURbd(!Mpf4!OE?BcrC|t5*Ce)9uDfzf)=oOy zy^!TLyT_Vro%D!1Ik6p|ftbixrN*MTl;!4iYYC}OP^IXOC&!Ex9&Rff^RXa2MPmvx z`sH24tSvXoQ!x<_(2~M0u&0u?5#wTo!2@vsmLT^e?m@Vdew0t9lg7tK4TFm2x~X*f z(D=zwuf{{dWx>rlRY2bv|LgG0LkT%BoRI!mZRHc54ijATN|93-O)nSa_(tcG>=lnx zEvjFXon5+U*(1xc9ZsiXaaDn{pc*OHlB(*(OBOqGmpJm=54sDg3aYc6KfA{5+n9E{ zMn?bKM(BX4DZab={_~x8x_+`NW4edP{gdkitI#V`V^Z(tJ{6~>mfsD^&MEl0jc4b$ zsC~M#?W1XrSd!|i9$eh8bY<N#XF<(_)m4iMoVgBnjw63@mCHrf&y1tTm)hFg_w|iL z1PP1d=)V@H(n$;5^o@ls!O^W;Sm+jVyL0z1a`(`t(FL?@N!;MO#hK$LQ8|oCyPGX1 z$5QTsQBP$;`d!D@nfKG0%xBnLo7^!!;qLSPt9c3Zxg}|BElb+XZBuH>BZRl<Gb>a2 z#NzOZO{ed#ObdM!$w%phmFb}`;6QwVM%AZ>p1}9`3F<~_3eN5+bP-a!k=jk=`t&{` zHVZL>zEPhR>O#^*PotRaAg@xPAw9Gpk?kMDkn$ttr)5Z;9Z1Mo`Y2MX@Ljfw{u@#| zk=jX*Aaxq4)AUM1df%%^UB&0wA8GQc6yHnulzV9;A^B`;3SQX0`1LP1pI91yGn3E2 zeFm-~P{f})_h$o_k8LqOn~<-2;T#wS-ClYMA?c&YOoF=Imu_&m0n7)OKZ=lcy%4mX ze9gdJOC{tQJ-;g6Hxy&6H#0enkjXiOOz&=^r}jz%r-D<#HT1&0Y~W1kgqU&(xwjYY zZvoE7$7>eASpYHE-Iwlm5vE>u@L_NdgX?V=o-%N2!L0@7?Y7p_k*^KhsdW6Path$@ zdjV?^UwXsqMMBo+5i+3{?gaza4z3+smhL@xJ$c>0bqyh;E1!@w+OQ^OTrombZ>b-S zxPGGv!K?eyEz}#hTmZS?#?r6Wr1+L0w+uOU%<7k3D;mFp=+@Z*x*6O<_z_OObZ(u2 zyOxRgz@Hwy+567G#S9}P#!Y+#OQieK4OZjJU2k{-zzJ?F({8F~VAyX+I=2Me5^xK3 zBjEMqR|bxK1soVd$bH;i(5ep3$1>Lq_RqrS!dOB+7HIZkgM3|Zw5yPix?cSF*ify4 zt=@5jH21<qWAD(-p8<CU9Q%UNFWrq419u+W`EeL1EY9vr2j>|;JGKM+_}&fH1i27c z;6Lz#(`_)L=Ah+m1}+KqlEASKDf~!M`*>v3F+;J4Vv)YLHa;p0i;o#&#`B=&(M6BP zM@=xOg-{DQyV{_ZLM`R&YX)@=)H$5}(x6sBt>SD7c1XRoI;eG=tuUyKP#d}WYlFHO z>SnGUGN{|3Zs&IW26ZRYot!N|9P6#^fx3sQj~LX0P!DnoFB;UNP>*u<tU)~k^$cg@ zvEAx+KZp7`XJ;AIt5C0Ub)!KwBMQuP>$>=;cMWPR)L5>5XHZ3`B3DPH_OzA<HIJ)H z4QeseVy3#EGpKW*&Y7Tx0Hzn09xA6&du&#MtK>FqgL~9EsCC?Ci9v0I+ISnAJ_FYT zu8G%v)1W>D^{Ly`{=0$O4sJX5C<8~10KZvuz6|wct}ZaBZ$o{XtG_X*N1-0&>VF#4 zGf>ZPH54a>Zub(@OI#giP``)zJyU%R2G!~y#5$4x%MBg{E`3a2F>p!Xk|y@fePQ56 zfE#feZV<LN_~_%EF9cY48?Yh(a;_9yDL8D_-Iwkl`vpqxbQQQNaQ1GhCpeB6xO#^V ze**#xY$O3%H)z6frW<U8!N%Jd9Bbe<gWC+w8ZgD5y1im>tep_t+rVv`2&d3~_oag? z4B&Ph?528pvctgbxC3|0!0r4I$J^H%{=oq53W96|^h@VP;=t8=vOCBbM^H~!8n}Hw zYM9xCy+HpJ1Ne6DAopRvfos15cfr6N40647Bq0Os>peMq2e2fghx@P>&J-M?RR-?p z9UOdK=UD%b-vR8<L2w;+;DpQ`2S2$3=P__+z}4_540_LA`W!z8kPR6aeld;))9l5{ W*u4uJi)j7InncJO(DaKj?D~Jsj~lT7 delta 7842 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 diff --git a/kernel/grub/boot/grub/grub.cfg b/kernel/grub/boot/grub/grub.cfg index 38cb25a..ba863f4 100644 --- a/kernel/grub/boot/grub/grub.cfg +++ b/kernel/grub/boot/grub/grub.cfg @@ -1,8 +1,8 @@ set timeout=15 set default=0 -menuentry "Aphrodite" --class aphrodite --class kernel --class os $menuentry_id_option 'aphrodite-basic-devel-bc19d1a-out-of-tree' { - echo 'Loading Aphrodite aphrodite-devel-bc19d1a-out-of-tree ...' +menuentry "Aphrodite" --class aphrodite --class kernel --class os $menuentry_id_option 'aphrodite-basic-devel-2df6e24-out-of-tree' { + echo 'Loading Aphrodite aphrodite-devel-2df6e24-out-of-tree ...' multiboot2 /boot/aphrodite.kernel boot } \ No newline at end of file diff --git a/kernel/kernel.flat b/kernel/kernel.flat index be1bb802da13cdfa796ad74b342fc139626c6095..048f87c99f2f27c6eb981629d9f55d4e2b9230ed 100755 GIT binary patch delta 8180 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 W*u4uJi)j7InncJO(DaKj?D~Jsj~lT7 delta 7842 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 diff --git a/kernel/src/include/arch/x86/egatext.rs b/kernel/src/include/arch/x86/egatext.rs index 6d0200b..e97f0f2 100644 --- a/kernel/src/include/arch/x86/egatext.rs +++ b/kernel/src/include/arch/x86/egatext.rs @@ -82,4 +82,29 @@ impl FramebufferInfo { } Ok((x, y)) } -} \ No newline at end of file + + /// Disables the cursor. + pub fn disable_cursor(self) { + super::ports::outb(0x3D4, 0x0A); + super::ports::outb(0x3D5, 0x20); + } + + /// Enables the cursor. + pub fn enable_cursor(self, start_scan: u8, end_scan: u8) { + super::ports::outb(0x3D4, 0x0A); + super::ports::outb(0x3D5, (super::ports::inb(0x3D5) & 0xC0) | start_scan); + + super::ports::outb(0x3D4, 0x0B); + super::ports::outb(0x3D5, (super::ports::inb(0x3D5) & 0xE0) | end_scan); + } + + /// Sets the cursor's location. + pub fn set_cursor_location(self, pos: (u32, u32)) { + let addr = pos.1 * self.width + pos.0; + + super::ports::outb(0x3D4, 0x0F); + super::ports::outb(0x3D5, (addr & 0xFF) as u8); + super::ports::outb(0x3D4, 0x0E); + super::ports::outb(0x3D5, ((addr >> 8) & 0xFF) as u8); + } +} diff --git a/kernel/src/include/arch/x86/output.rs b/kernel/src/include/arch/x86/output.rs index 95e046f..2d7887d 100644 --- a/kernel/src/include/arch/x86/output.rs +++ b/kernel/src/include/arch/x86/output.rs @@ -123,6 +123,7 @@ macro_rules! message_funcs { OUTPUT_TERM_POSITION = info.write_str(OUTPUT_TERM_POSITION, $prefix, WHITE_ON_BLACK)?; OUTPUT_TERM_POSITION = info.write_str(OUTPUT_TERM_POSITION, s, WHITE_ON_BLACK)?; OUTPUT_TERM_POSITION.1 += 1; + OUTPUT_TERM_POSITION.0 = 0; } Ok(()) } @@ -147,6 +148,7 @@ macro_rules! message_funcs { OUTPUT_TERM_POSITION = info.write_str(OUTPUT_TERM_POSITION, $prefix, WHITE_ON_BLACK)?; OUTPUT_TERM_POSITION = info.write_bytes(OUTPUT_TERM_POSITION, s, WHITE_ON_BLACK)?; OUTPUT_TERM_POSITION.1 += 1; + OUTPUT_TERM_POSITION.0 = 0; } Ok(()) } @@ -188,6 +190,7 @@ macro_rules! message_funcs { } OUTPUT_TERM_POSITION = info.write_str(OUTPUT_TERM_POSITION, s, WHITE_ON_BLACK)?; OUTPUT_TERM_POSITION.1 += 1; + OUTPUT_TERM_POSITION.0 = 0; } Ok(()) } @@ -210,6 +213,7 @@ macro_rules! message_funcs { } OUTPUT_TERM_POSITION = info.write_bytes(OUTPUT_TERM_POSITION, s, WHITE_ON_BLACK)?; OUTPUT_TERM_POSITION.1 += 1; + OUTPUT_TERM_POSITION.0 = 0; } Ok(()) } diff --git a/kernel/src/include/arch/x86/ports.rs b/kernel/src/include/arch/x86/ports.rs index cc15d09..36a040b 100644 --- a/kernel/src/include/arch/x86/ports.rs +++ b/kernel/src/include/arch/x86/ports.rs @@ -26,7 +26,7 @@ pub fn inb(port: u16) -> u8 { let out; unsafe { asm!( - "in {}, {1:x}", out(reg_byte) out, in(reg) port + "in al, dx", out("al") out, in("dx") port ) } out diff --git a/kernel/src/internal/arch/x86/entry.rs b/kernel/src/internal/arch/x86/entry.rs index c2a1736..f915cb6 100644 --- a/kernel/src/internal/arch/x86/entry.rs +++ b/kernel/src/internal/arch/x86/entry.rs @@ -278,10 +278,11 @@ extern "C" fn _start() -> ! { bpp: framebuffer_info.bpp }; ega.clear_screen(BLACK_ON_BLACK); + ega.enable_cursor(14, 15); + ega.set_cursor_location((0, 0)); + tdebugsln("Testing EGA Text framebuffer...", ega).unwrap(); + tdebugsln("Testing EGA Text framebuffer...", ega).unwrap(); tdebugsln("Testing EGA Text framebuffer...", ega).unwrap(); - for _ in 0..100000000 { - asm!("nop"); - } }, _ => { unreachable!();