From d83299cb48253e472f88d4d625e015f7e75e906c Mon Sep 17 00:00:00 2001 From: xamidev Date: Wed, 24 Jul 2024 11:17:48 +0200 Subject: [PATCH] Fix: scrolling bug + shell void input --- iso/boot/kernel.elf | Bin 21380 -> 21404 bytes os.iso | Bin 497664 -> 497664 bytes src/kernel/shell.c | 11 ++++++++--- src/libc/crypto.c | 0 src/libc/stdio.c | 21 ++++++++++++++++----- 5 files changed, 24 insertions(+), 8 deletions(-) create mode 100644 src/libc/crypto.c diff --git a/iso/boot/kernel.elf b/iso/boot/kernel.elf index 571781954d5da329cf469daa49eaa790b0c0e9cf..5a127dfdd4f7312c8255d310458503f0c7635465 100755 GIT binary patch delta 6365 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 R8FTWiS5;t7=O-!?{{seJRl5KH delta 6157 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 diff --git a/os.iso b/os.iso index 62255ed9145bfcc901dd98d9b1ebd8626a008ddb..2f222c71d1f39ece411339b4b6975ae65d7cfce0 100644 GIT binary patch delta 6833 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 Nt!YEXwzJJ%|4*wS>O=ql delta 6644 zcmb7JeOy&lx?X#6&fx$D*(ma*z!4S2uMiQ_w5vm>u1+cFPrF@nCTg6B((<#JZsYNI z)L@PziM4bTC#R__%|shOQ-jEmK1{|eDaUXoYc){mTvIIY+~?iZA{u zA(N{9qZMIC=j2xXruCkFlp!A>SA=S`{*E=!dd`gWceMYs!?3vCAVBhfO{Q zg|F!skoY^DrSYY1nT+D7#(*WyLMY&)qK3@- zt>$bwO_>jh^JH$Ynn%ibWo{Pndtg3cHIJ6(yF;O!7SmwX&WgMC@WFg~ideOWd%Wcd z;h}J2>>e}WkNfCcGWF3`40LnDEG!A(eql0EdB4lbYx4RJp<3^=@?3tQ_(dk~H9I&$ zo=}EItp#kdR`EV7ZxD#n)K*Xqlz> zgH}F9_ECJJm3PT2--mjl#mdLZa|Z9llsaKG^pS6?0;jBeoZPGUPprHypHcjID<3ac zDPCInzVg?K{}#MAJeK|BOl7!YEs!Ad72jj!`^$92+pIG#Q92YKW95_NH`hWv(YKfP z7M3QhHHmVHbMoU7AS(u4ZTo8%v2#Ty5BGXExCv>o8ti8IX7;RVp&nJjn5i{#h% zd_Fr~tay!&yZL#eFBjl*flormO&I$M|6YTe9^!@>+(CmIAL9BMT;mVoi`Os$?-({_ z+QPNX@panJAo(Y3qkK&ZFiO<0s0#mkhWwx-+&K)gigjK1EEUQ=F(Ddpd}IjU3kxg! zXNXbKRi<>Ew_!zs5l_3JuQv4^n^0Ya|3NJ3;SzU*N;Jf+TY_loX`^?L`gZHpYfu+f z_?M7e{-^2UtJ@*M&cWZAAlu^5;akw_0gtQ9(;4tM%RSv4{Q{ou3Nf{oXGZRVz}Glm zJW$K0&00=w%HNe9nzV1}y?sKvj0xoGO1#k@6_s1R4hCnJ((q0EZ(|U`Vt=PDV@Ugs zxK_)vBik{-d`;U#b{!w0O%^lj_yCVPTJ<8P4DBdoACrlz^IVCmZJ<__oF@KC)Q>}< zNbZD3dt$uUTgPvR97Ld97oXMhjHJL^y-W}9j1uIxm`c8;mqltl-xN6;z#eZXQ^ouB zJjRhl%ms0-o{#iW*q5+7v+qOfp?)fD_H zM&gSKt$FKH4A{MN z!y(GSd-j{bV@KazRku8mJ;6wQE$5a2)2dZk%R>U<>#S!JDDdolZnI$=s)e=Lxp12{Im2+t>77 ztSCCf`&0FI@$ucF<8_{*%@LP~OFhhQntp@P-k)?k9B+?xu43xQZcG~c>u6p_3Yr#I z%i@k=O1TQoCuE{vN>By!wJz>W9vfjVS@_T+Obj~4g?HBCh3;hw?|XRhuiPcY%iNC?FI%?oSJAAJ<`|77 zO%xl>9C=7|_6Q)oiu42yET{gD>0i*_^b=ZeH~plOS0J`l5Em+3Y;p3$cXeyt=3eb7 z{iM*2^FMmmX6x)}q-{w1k&YmJi1c@)OGs>l&SH_Wk;Wokyao*fwUFrC8WCl zXS%JRpf00@$7l2riTm!Y$XaL|`Uu&04vN!8iq5Z(#= z!2q324dK1O^J&QN)1luF{NO;HQG=;`E$}#W)B^0EfW7Ppi2GA?Haa9Y0ZfMx`svtZ zodUi(SZ9+%_P+ts22|Pq0Ze;*g}(xBw%ES~uFTTe0X!*y9z1F1Z0fz7MIe&osXD`l zl*O|c<^ZNMfGOb21$;G0XU>oV+7liOJK)R>eAu)6R=6Id`91baf3BYOT zI$KEC3&I0}PC=@|8Nj=A-MG)80`q`(TPm0jOnZE#F9xP9w!$m1Y8*w6sUf=`_T)63 zwLn1rRsb_J7{^QIr567dMCEkdxJ)99PGQ}M7?%r1fv15BEEQ}6J{F!MHdX^nhZOqJ zkktVTx6X1yU>Tz`fq<(~zfnO6h-ym< z7Xi~<2>qx_mjVyOko+d3_X5+|U)k3JGgP=559*QM1Jiv5{iys#;Lj2;=6F(rw&6*~ zJF4Fh>;yqaYlU9~{J?cVMtTLl5A}$Os@6_%=(xgMsOmL{%^x*k`HG zjj!#4XuzmY`O&Z^kM^ob6v4)U_#58K^-6#Oe;K43SCrJ^e}kQl(5eCtFx?3#{Bz*z zm=n`MkbX9>dn)YM0MJ`C5BOF1R}H)yc#+rQpcup&2-HgWFmN1}&bvbn{|lI|T~vju zf$6GP;U|FUic8@Qz{@e_4}ze8wgA(mgtG4d_TGnx9|#F{f!JUf!@a=EEDjFjJ_rdu2c|m$W&bDe zdk9#)=a+!bTI^SW=>kgWyMbTBB*g&+DT2{0GF^5kd$hfPv3o7EGzo&u2w(;j6yb2- zJ()V|8+r?Jfj3$lOaLwuJ%8n5V%~T*=JpAB_%l8SfAS{MpBw4V1pLX*r9TAo4VX_k zDv_Tj-ao}R)ZP0b|GP~TwDJC0g1D=VXV??akOc9&Ha?OcOA{}*;TD`0-D6Y4i8h|; zpqH=3$R`TdC*0+r1@HYSBK;E>=?mT(GT!|OKO5D64KFtREL%+bln=0Xp@EY{@u&Fj sLS7+0;G(sS_Y;LJ+*bGOr~Dq= VGA_HEIGHT) return; + + for (unsigned int y = 0; y < VGA_HEIGHT-lines; y++) { for (unsigned int x = 0; x < VGA_WIDTH; x++) { - putchar(x, y-lines, getchar(x, y)); - putcolor(x, y-lines, getcolor(x, y)); + putchar(x, y, getchar(x, y+lines)); + putcolor(x, y, getcolor(x, y+lines)); } } @@ -70,10 +72,15 @@ void scroll(int lines) { for (unsigned int x = 0; x < VGA_WIDTH; x++) { - putchar(x, y, '\0'); + putchar(x, y, ' '); putcolor(x, y, COLOR); } } + + VGA_Y -= lines; + if ((int)VGA_Y < 0) { + VGA_Y = 0; + } } void putc(char c) @@ -89,6 +96,10 @@ void putc(char c) break; case '\t': VGA_X += 4; + if (VGA_X >= VGA_WIDTH) { + VGA_X -= VGA_WIDTH; + VGA_Y++; + } break; default: putchar(VGA_X, VGA_Y, c); @@ -361,4 +372,4 @@ void get_input(char *buffer, int size) { putc(c); } buffer[index] = '\0'; -} \ No newline at end of file +}