From 76889e495a7301da26e020dcb0cde41e185aef6b Mon Sep 17 00:00:00 2001 From: xrc2 <109512837+9xbt@users.noreply.github.com> Date: Sat, 25 May 2024 21:14:35 +0200 Subject: [PATCH] Fix keyboard input --- bin/kernel.bin | Bin 3262 -> 3422 bytes kernel.iso | Bin 364544 -> 364544 bytes src/kernel.asm | 87 +++++++++++++++++++++++-------------------------- 3 files changed, 40 insertions(+), 47 deletions(-) diff --git a/bin/kernel.bin b/bin/kernel.bin index 81b5e2b71065676da8089a5ba097fc5d266d4819..3f05d16a72794119aef190c1aee3c0c0dd5bdb48 100644 GIT binary patch delta 951 zcmaizT}TvB6vyxGx~@Cxx|`^hRx;u$iLItYSu9dMLp)bR2R`R8hS_mYTsD~b+f?nz_TWls$3pKZMM#bJbFmwLDd%kAw+|esO zR-WGx4Mo{gu37ap3Y+AbM{iWvI8PSUaAmu7&SaC|)H%|~HUmzDRq#fkOvurN4*l!m$I}&H@ZCDkFv#mU(-%(kQ zb;Kx;S7;9Xp33Stc$iSd7puxm@jK3nIa`l~Wz=Rl?5ZDSw~g#u-~f$STB6OPnw51L zzzr%3p^vC+pOIayw9TqSwq~912A5T~-AI8LQ&}qrk3OriCWF1>)9@Tt3p|YyB=Q&V z)3u`s!Zunw!&eC6*%)9g;6oEBq7U$ziI1XjUyQ`a!6qnovgVE}tzN zZlbGPH4YKdp$`qZ{F_muncWr?OfUuJEGf5ulNSuc$ a^Y?Qe{{sR3f@wIG`FT8_Q*rj-N9r$^lbhQB delta 884 zcmZXSe@IhN6vyw|=8yey78I#8ZuJm_=8p-QHPlRkiZU~yKb8{tYlLmRUPfSTX8Z9^ zR6GePEX4mJ!SNOq>}C0E?4Q)+F0DWM`QECbN>kmU~6R)})hW#w5nPLzyjOiwM zi&~(WV^Ge};|@-?S+y+}SR!C!u$LF^R*b?~YeNL4^vrwY1Ih)#9c+%M2I$q1!%^^Z zzZiwndZsMY)Da`HA!Eir_z{JJdJ==5QP_upL+gk^wGN-y9G=4<;Aui0B7Z?YR~LyB z@Cc5Z4+zKmqlhlVXE}Vt(TO;b!`HzuvIBWM#}hnF5bx!%n`gff=?3q#9*+CrGm)-y zcpHvO@PSCf99R@(?}*gGp_=bMOC%Qufx`@ux;T_^m?F}NOg>EN=|=t*TL*$LxSpfqGV%X-a1f~2;43guFdU9JsfkIO5nI+B;S>xPJh3wjGG_V z^z=~LvtbnN|Hy6`q11~jXI|x^Wk;7+6i2AIVLbI;^t(tDDdkGO{zSM5cHo-7Gs?21 zRIyt{rNK&t5vAKI=AnvumD^UQQfb>``{(SZY%4o)c%H2BA-3QM&*4l>uJPfT55uw5 F~RExGLr76Z8 zs#F%YCB@=_9~mT|0?N+=Fg7)FCdLD4MPRcIg$*1!WVaHD{_F-;H&Y|eEW6^(}- z`TBg{J>NO!`uf`9vQ1pJt(+I@W-IqJn%Np7LI${$rx)f8p5aIQT%e!BaPRKybg~2e z96Rdm$Nl~xANM$S)HjU#M*TxxUl6xqk2mP^1cF`wtoN9g?VFemMrP#5e5(x)Iv({M z337oEcF@6j2K+-q{*i~}%i@&B?R2+0JKP;^m#eM4tJ78UzX|6ZhVE1-Qwy&&aIjX) zMFcz?nZfQ3>~{6I+Irf%Fjbq{98Pz{*^QZT9E_sET+|dx#vzh(S~iU?RiMw%x-|<^AbCq81*%$_BQI-8UFP5dd4Z}Sl+cvg%x`n# z*)1N|l%1JF&yy2c3W>!XLTyR*n5JGXY-YFW4boy`Nz!+iX2p`EN6ThDl*mcrg1ST4 zrBr7=mPo4x9y&B>TUm`d_&Z5zHS!=$Y>+FiK6%f9Me>1KxCWe&V^`e?*P>!1$5r45 zB@&`OCXu6R;Xd*3O$iCc!cKUCHzaaI%>r1G$RPlh%uR`~D%sFhVI4*TtVZlb!mr?0 zTNYD@v>Pn*Zz4)xngiMb^i!S6l-hv4t<&>~B=BnBuj%}C8vYAe=3mw6F&fPy{tT_O znM}pWkBEPcl5{e~lW!1znv!=VkbQ~xhbY-k`(H#nL&+^#;3LG3Qevi&CB%;us>pk4 zzMH;_`f!4r{3q|wU=Q*S(2aJ<=e}(nh?(+5mF!XTw^Y)k=6_e6SJG(R)>|Xg_nL(R zVo?(|({=0CPvAxUA{LSGbKt8=q+Utat<Z}t(^JY5*Y+F0%V)kX zQaAI%jeDo30vu)-vkBq8s1U&}hnqPbJuQpZZB@hZaXvaJzkmH5xn68+2454XyPYbxX8}?R$vsf&wjSUT5plZuai@GzJ2|IPW| z$IP6O`wQj%!l9e8^`vp`0`m%^0U-`9wX?T}TV4}r2nvnC`l^}$27xQQUcPM0W&v*w z)&+!JLUW*A>Fz0B?Q-+H7uS|<3sf};jSXeBrGkG;u&yrHP=ibSD={lGj}QB+o3;j< zadV)mUU?vQ`rW+S!>=j#xjp4>kB{e#Gj8zT1p3yYhI`NdIAAya-aik|&OL>)aCFHh zx%RURjXJEF89|t}oKcOBYPQI}2)R#HgXWaUEvniyuS{;x8)vW#7O^#1<2UQESjb}(3O&~dwFPU?;om792o=i@!SIZXL zA0?aCvsp)?WGzi<`Ee39^y>N2T=fU7AWn)YWZ1z$r)SO23R533Q?iOpT&Cnb`+1J9 zj|}SR7r^V3gU{TN4SlMC?9+jxF%n|=X^b@M=^}ak_BfIZ=>m9y|6-&{PlEVAM%I9^ zY1`wZOef=X1kPdL;52e2lKzG~;^|8uQpwqRE+dAQx&d8)*R%KwLkHm1EZ&Pmfo;GS zvwW465#WU^?q=10ka(J{G!;#BkiU?4iowHZLL@Jdc#Hv!f$a$rH!>(=``<^Rivh=A z2#Grw6fqb?Vncd18PHP|>|4xhi;x3TsZt8>AXUO%^aka|^Wtq!3sM=KEYef&b>h%d zZ*~6hFd8eYG)jvrEmFChsh1{I+g%Qk{HbB8wKogSxg9TYL)ij@=~`eEVf!q*xwO8 zA-1<2kZ{Rf_H(#BICv=BDz+azBy{YTl#8!^i@ME*w(MPB@g6 vua}#@I(yUW$)(UdzkOg$Y=RaZfu0)pz?$n(lx%&UOmH-ku)q7xNP0d3P-o`` diff --git a/src/kernel.asm b/src/kernel.asm index 574a434..6200aec 100644 --- a/src/kernel.asm +++ b/src/kernel.asm @@ -203,65 +203,58 @@ section .text ;https://www.reddit.com/r/asm/comments/jd2osj/how_could_i_implement_a_delay_in_asm/ get_string: - xor cl, cl - .loop: - mov ah, 0 - int $16 - - cmp al, $08 - je .backspace + xor cl, cl + .loop: + mov ah, 0 + int 0x16 + + cmp al, 0x08 + je .backspace - cmp al, 0x0D - je .done + cmp al, 0x0D + je .done - cmp cl, 0x4D ; 77 - je .loop - - mov bl, 0x0F - mov cx, 1 - call set_color - - mov ah, $0e - int 0x10 + cmp cl, 0xFF ; amount of characters to take + je .loop + + mov ah, 0x0e + int 0x10 - stosb - inc cl - jmp .loop + stosb + inc cl + jmp .loop - .backspace: - cmp cl, 0 - je .loop + .backspace: + cmp cl, 0 + je .loop - dec di - mov byte [di], 0 - dec cl + dec di + mov byte [di], 0 + dec cl - ; move the cursor back 1 position - mov ah, $0e - mov al, $08 - int $10 + mov ah, 0x0e + mov al, 0x08 + int 0x10 - ; remove the character at the current position - mov al, ' ' - int $10 + mov al, ' ' + int 0x10 - ; move the cursor back 1 position - mov al, $08 - int $10 + mov al, 0x08 + int 0x10 - jmp .loop + jmp .loop - .done: - mov al,0 - stosb + .done: + mov al,0 + stosb - mov ah, $0e - mov al, 0x0D - int $10 - mov al, 0x0A - int $10 + mov ah, 0x0e + mov al, 0x0d + int 0x10 + mov al, 0x0a + int 0x10 - ret + ret cmp_string: ; usage: