From bb6a1f7e315a0330442d45f82dce07b467093610 Mon Sep 17 00:00:00 2001 From: SpookyDervish Date: Wed, 28 Jan 2026 11:54:32 +1100 Subject: [PATCH] print decimal numbers --- OVMFbin/OVMF_VARS-pure-efi.fd | Bin 131072 -> 131072 bytes kernel/bin/CustomOS.img | Bin 48000000 -> 48000000 bytes kernel/bin/kernel.elf | Bin 10000 -> 10536 bytes kernel/lib/cstr.o | Bin 3016 -> 5024 bytes kernel/lib/kernel.o | Bin 2160 -> 2688 bytes kernel/src/cstr.cpp | 80 ++++++++++++++++++++++++++++++++++ kernel/src/cstr.h | 7 ++- kernel/src/kernel.cpp | 10 ++++- 8 files changed, 95 insertions(+), 2 deletions(-) diff --git a/OVMFbin/OVMF_VARS-pure-efi.fd b/OVMFbin/OVMF_VARS-pure-efi.fd index 344dbbec0817138266bcb74fa06dbf0edfe31189..25ae79481bce63dc083872ea2e0625966a808d67 100644 GIT binary patch delta 60 zcmZo@;Am*z*kGnLd7G-zj%?)99G&g-8dkznFdCpjp_P_Ou?Q#_$17?kmjE5BHy+J?0lB z{byG~uW35QLofOKDX^=nE6iLo#!V)f4rPtaHLhE^eX|djk!yUh$u-_YxyE%XyHSp&S!o)~a_Q|}ZWfyrrh5-~jY*ih zr9V6&-;3l$V;2m_F9@^GYogtU%&At=8Ejs2-O6s1qbYgK7oNQ4O+;Svwy|qcc`bdL zW0z-5FP8a9GA?dEy7|lJzAbJYWIDD*M{K#-tddWY8I}4NbD^lmO`T-AGI_tJQN9z) zFEI!Ax2-$z*SMP2~nWOcOs(S|2K{A20x(d)ZnM)RIuUGx5{{7fHe-5nJ|J{V2w%qkZ>s+ZjAyR*82vpNdkdOCS_UIe2b(3~nQM0?gqjuS$4-RXslgBRI6)oR(8{)EXl#DI0p;Z&gj#R%k zWb;dJPX6cbYWdBTPNc0hw@HLF%DmRio+o~!|@%i{fbK%=nn|9q;aLba|-s~JU)j2Lp<@jiR zXqNOfQPPwC#!bF?SIgI2Ry?KgL|(~};-}Y`*AFgF+*mD9Fjbb{DPxdwG}q{_XFDhB zR+Gx!+2@_y8aroV#0j0~;7gFqv6iw4R;>*|U|BKCat zKYr?7>9P;WD@VBQnq-2+f?rH6l==oKNB8YrmwoH|m~xA_^kLRu4H~+sJnes6H8wx> z-1nTuW~dlJ<6x_c#eWgwVeVXzebeKdClPcG=Ah6hq@YNw#Jsv-!D9>Cs%C7ct3P~T z!_1%4=Zp}f2G?{S_?*#v@vDsPmf_|?H=I+~Ah)%>$`@hK1T0Ft1w zw&`5*2)Kf#n4meLzqR@9l4B5b z-)Qr7e;%K_7UnwVct5-8X#+TD9MI-F^@O^Qo;%51OgP6mgj@4K*C^V2*-uA*re}c`fL@K5ahQe0m+E%}1Lrzx(acX>%GU^z&uD5ks3V6(pV=$U(0|^z&uL6>UDZ zm(TPe|CzeQg2r0^YV-NO!>xIle!kw{cgxw9`3_(hk5B{M$J5W(M37Cy#8^H1RoO#C}oWX4NvCJ5^B@z;4>u~IQ*(Xb5--pU}CX?F?MznY($&yGS z6j@@Bt&O6Z7(%KkSt}%;^Zm~ilb6^xEwS6;htEwaFmIGC<=z1&>_s{p?9;GU!(N8r zZS98l=-j1Ar!HMPM7QhgijMO2XOGu6nwW;s+S#d{vrTlgvrY3m#v2%MRjfWI>>WaH z&Dz{ZkJzxp-n7xYvOz`K-a6u6uSSjN>?72_kL>k)+cBE9Z{H;laL0HMX_p6i)81A_ zkZ<1I)B2Zf+oWYXZ(3*bmUon48ubs6d1=tb*r2G)Vr>fe_tDtj7%O8fv72=Z?l0)? z*k8~ZVmE6P%qx@?CSyT<7?$3`PP%S>@zNSb`1!1$0YO$a+1yrrfu+Ibv&{o;}Q7r*`*vJbXA$ zw`)EtttWD?8EUxFf>&_bdv{k?>W`_DGbu1LP+&-&0^Rqhu-?C`aI1fZ|5V|XPHmbX9MgQkN+^F7hYq)ITikVPo0p-Oe+voZxwX z^>jJ%f`F-;zF+PrQ9>LuFO>@T=GT!TIxX0rS%-z7#-UY0I70qexqDHV` z_|h9jk~a%S0~9lCMq}>>jHe8qEnuk`Y+ps@1oW8QC(HJl=WPN8`Xr*Fb*~FOm1~-A>y6f&PPmDOCgQ zXzLQ`+{#Da^^NvU%Duh|0@IH9f6EvreWQl4D$wu0ord9iDj1s{$deSffJuS)&Dr@Y z`a81wji!Ca4({K{a>SU?#Ron0OqY@IofF3l9x<@}xWrN85+AZ^#F!QO^{7=dab*0U zvA&VvM&7tub&dEQ^@;I^4B*qPQwACFjP&h4G`|0!q45cQ2M@a=Akm7CF=LD7No*y@ zn3KZtbSKt+z`7Y@Mi#zxks(&GSaZ8|FqW@)eu`b%5LDI*t!yr~eQ2$#Y&Nz91-jzQ zC^J8o$BI4>6lOJ!Gvf-z1+G>%yEP`xtXm+dlK(0lwARI$_3Z6qH~kuCM%XsIXV0>! zm@2_4`BXww@~ae3DX4OvN+FfPDn(QrDxoSxRf?$;R|!)ISBX%GREbh4p;A(%luBup zGAd!%fJ$wZ2UY5* z)K#gc@{me>m4{Uts5Df0MCDPHMk!8sI*mS zr_x@fgGxu0PAZ*Mx~Ozjd0gcQm2N8CReGrOROzMCTcwXmyvma*eO3CY^j8_6@{~$~ z%0QJtDuY#qs0>vZrZQY*gvv;jQ7WTV#;A-{NmLo9GG66rm1k6*RhghNQDu_KWR)o@ zZj~gJ=TxSuB&$5HGEGHQrmLi=q^itNnW-{MB~4|v$_pxUROYI@sPdA^%POy^%u}&c z=BvD_vOwiEm4zy=t1MD^LuIkb5|yPY%T(S}S+4Sy$_ka0DsQW-Qh7&ZwaU9HYgE>% zyr;5GWxdJ_|wyJDX`AB8E$_|xum7OZPRCcR;tg=UCugX4^ z{VE4kK2iBpxw4yznd`C8>0m2XutRK8O=s&Y&vQ{}kI36<|v zPO6+zIj!=8${Cd(RenDmPUAqjFQlGec~%#RfZqU?Ld#5Q6+DfP%OWg-{qp;6Nyfq8N%J4B?1C zB%)9PB~c2cQ3hpE4$&x&3aE%mh(RnWBMw#I-Dg!)Lv_@^{iumrcmTEWAnKql>fs^O z$HQoVhIj;zq7fRS37VoA9)lCj(E={CL@TsL8?;3`v_}VYL??7c7j(trcmmzf9X-$! zz0ezd5RWI(7yZy51Mn0QFc5<<7(*}=!!R5pFcPCM8e=dPi5Q3RcpA^(Sxmr0Ou}SL zfg4G94pWhg=P?b6=}18;W?&{}Aq}(f0_I>YUc^gy8Lwa-EX>ENSb*2C5U*nq-oRok z!BQ;4n^=ywumUUbHdf&stj4=ogSB`M>#!ah@IF4kMr^`|*o-aMif#A^+pz=b*oj@( zjgPShd$AAuaR8s-Q+$Tc@dXaz5Wd7$IE*9s8sFesWZ*j-#W7^!I8NYuoWv=d#t%4y zAMq1@Mizd-uQ-d}a1Q5j0T*!zm+?FPz@NB+tGI^0a2!y01fd79z`QGMiVqeGdu<-nxh3=Xo*&6 zjW%eDc4&_d=!j0}j4tSk$MFQZp*wn@Cwieb`XC-pqA&WPKL+3_Bw!#0VK9bZD28D; zMqngHVKl~IED|vev@G@S(JXn~ISFr%EVIf|}BD{gcSc0WkhBvVsZ(#*i;%%(LJ6Mf(u?B1L9@b$! zHsF1HfQ{IM53w0ruoc_z5w>Fo(y&UJngCNt# zgG?J%*mG#%@F9so!%~Ud^7x8ef+sz`F4U{g9jH@4)|9-i?TOnWy=2JF|x|% z{qM3B%MR?>Z&0RevQNK%Jw_OG-bUrsS?gM7xS>jUYGnKwr%dFSZaA{QKN<=o(^+@)S@aixE!^4cxwJ9skvWu*qL1~Svr6B zyyW(s**VG5ovG~hn^N<)l#Ti$oleb9mN8)j6S(}YDEr$@McD@=OJ_DNAG<62ygFTL z1wm2vv5%LR`7#>aBpen0pl0+~lkmiFYSSQydN&QbBs%<>PH#+<)(^^l{4G=ViPWOx z`y0~fGb^9$^*)+_ZuyfCU=W-aoCHa2l6>LdtXAU04q+RKBlYitJ{gvNAe%ue~bT#_F=J(3X=D=YO`jdZ|{;z!e z`SJmMd-py((WdX9;cXL9gS>E7bVFX)uwP#W)(>LA(#pe8UYXd4%6R+A!?1??Oq+?! z_&*O*`AWpjjh3_u_ln(7-pzTta@4OCM>HsZUSgkD#$T$e+OD$ynRvZ`EhM<0m6ZPm zK`ru`)n@UzW?K1sq2Gu${w371Qiahb?=T>38sHAn6A3f4KY>_?YjN-B5CXX36 zaq^g=v6D`Xy5)zhqciiv*$rk)no?Xib64~R7(AnR+Kl3;ZJTgIRMsX;#Q7q= zUz^oDYST8nK9(D8Z5#H8#VSJuVQx6F1?MfXHLGFNBQFf2kp*F1&3VK!tt1vLCsteTQgkLD;FrVVM&}D~t}z3mZhu+J$?p(5hlpwW?Xwtr}KMtCm&Us$kv!U^TQFS&gl|tXykvtBKXrYG&^YVrL~`xXSK3gTlrQStF2XFwX@n= z`&+UOusT==S_fGNTZdSOS{>u{@!)zvz}>SlGfdRRTJURH1GNGoaevHDsm ztDn{1I?5Vg4YUSXgRLRf(biCFm{n*Ew~n!nwMJOSS;t!^SR<`b)@W;tb)q%aI>{Pm zjkiv=imVCNL~D|DiZ$6f)jG|ZVokNCS*Kgmtuw4*Ylbz`I@3DKnq|$l&bH36&b7|7 z=2#`x`PK#2T71ov3GApu{TUS|E zTh~}CtZS{6)^*nP)+%eYwZ^)^y3xAHy4kwLy4AYPy4||Ny3@MLy4$+Py4SkTT5H{J zJz%Y~)>{u+4_Oaek64ddk69b6jn*dXaq9_dv-PC)l=ZZ=#d^ltYCUT`XFYGdV7+L) zWNouvwqCJbwYFQYS+84fSf$pR)?3!w)(-0(>s{+T>wW73>qF}!>tpK^>r?A9tIYb` z`oj9s`pWv+`o{X!`p){^+G*{wez1PDezJbHc3Zz#zgoXpd#vBBKdkfu#V%D0abzJx z6;wqvR7VZeL@m@t9n?iOa!?QT(Ett62#v89apedSRA2i3lNT3B;Vn5`e6u%(00v?Z24e`0#!w7HA%^1^9E%Y+4#(pJjKnC6#u%K4u{a6iFdiqP2oo?7lW+5sZs55A(4A3vme+ z;Zj_N#aM#Nu@qO}N-RT!<+uu0;~K2MwOEPka6MLGHP+w;+=!cSGj74HxDB`C4%~^m za5wJ3y|@o+aX%iwI;_WocnA;U5j={=umKyf36J9mY{rv#3QuDTp21c;i|6n>UcifZ z3ES{8Ucsx_j@R%y-askd#9Me9JMa$P#d~-kAK*iLgpctFKE-D!!{_({U*ao#jc@QR zzQgy}iCy>sKjJ6+jNSMJzv4IS!SDD3>DU6r`TP+_7D7}(Ra8TD)Id$tLT%JRU1TE% z^-v!T&=8H#7<(ZXd!q@Oq8auMDhTv!n#V{0N zIF7-w7=hz(JWjw!jKXM)!HF1)lQ0hBaWaZ90TVF^r(iNp#c7y=shEb-F&$^17&9;v zXW}f(!fc$4b8s%s!yJ_0d|ZIJxDXe?xES*=9}BP$mtYYt#bsEGCAb_*aRsi#GDKL8 zt8g{0!3tc9mADSqV-;3o4Q{}VxCuAo7Tk*4a69h6owy5k;~w0L`>+=G;{mM0dOV1S z@Gu_1qj(G(uo0W^IG(^}Jc+09G`8RwY{j#94$tESyoi^u4KL#ryo&934X@)3l;Tai Rg}38(X-B-p!es+kAt}@{_AcgTyX##r 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 JDm$t6{{WA+2p0eV delta 567 zcmZ3WenNbL29pQJMlBD<%|BSW7&rH@aWFD5FihUYzHagp4hiWP1_+R11k#Rt0&Psr zyll*(j6CcdlNALdCkJp=L~#S91Q}Qu8X!vHv<{Fj#K6d)4blq)^-$Uh$OfqgN`XNG zgklH)(jfJ#fDQlwDaOgaxQr(61Obeb4+)qtv9JJxU2L*|pavHQ$UQ*Nz&P1S z(2R+LWpb6E9g_mfX8}}s#biez`N<1}Bse=jo&f@n$p?kZ ixn4l!KQK&Y5;o(!!3vR#pX?}X&Upc%WNgNcECqSls)kL4!L=Hf78U|`t)fq`LSqY8%y5<3csodah}O=e^i=LK>Z z7(yN|oqa@s^T1>U#wo%zj6e}bK7lqSXI?huaz-9@j>#WcBqu*$EZ_vo0i{(Y7cz-Y zE?`PvoDE_zt_G94!Q^SM+y$mtjtucph6W}1@fpP>MVWc&xoG?>G=2#hKZ9X%HuF@* zC6gIh#2I%?UdSvic>&~FAYcJvZXo{i9|E3$Wb6Ncq<{b<%LBwPSpkrbfB+=U0mLwI z4J2_;K)}Rpki?PIhaidbA*s)Rhzny_P|LX4h((T(w;8GtsE2`J@&gGrfVT01AJY%*k%gq`)-U si`|YXf^BjayB%i*6U4lX$rstpIUg`Xc(*4Da+q^=ut9hwlLJ}h0da__Qvd(} delta 242 zcmZn={U9(wgXsgyM6E4M`>@zU8x6gV9wUtpXfbddoF9Qg#=n4Edp zn9lI9b4+Grmzq3*seltK1(a2ptjH`rS%EoW@&o2sj2V-6vrJ`NIXRG3oN@2uk1XO$ zml!rXvB@zq-kAK5U4C){y98GOGssj1h8ql%7qOc$NiYJ<6r22kT?586;Lu={m>kJr z&!{kYCWk$f4O9hC*kQ6Hr#({v> 4); + hexTo_StringOutput[size - (i * 2 + 1)] = temp + (temp > 9 ? 'A' : '0'); + temp = ((*ptr & 0x0F)); + hexTo_StringOutput[size - (i * 2)] = temp + (temp > 9 ? 'A' : '0'); + } + + hexTo_StringOutput[size + 1] = 0; + return hexTo_StringOutput; +} +char hexTo_StringOutput32[128]; +const char* to_hstring(uint32_t value) { + uint32_t* valPtr = &value; + uint8_t* ptr; + uint8_t temp; + uint8_t size = 4*2 - 1; + + for (uint8_t i = 0; i < size; i++) { + ptr = ((uint8_t*)valPtr + i); + temp = ((*ptr & 0xF0) >> 4); + hexTo_StringOutput32[size - (i * 2 + 1)] = temp + (temp > 9 ? 55 : '0'); + temp = ((*ptr & 0x0F)); + hexTo_StringOutput32[size - (i * 2)] = temp + (temp > 9 ? 55 : '0'); + } + + hexTo_StringOutput32[size + 1] = 0; + return hexTo_StringOutput32; +} +char hexTo_StringOutput16[128]; +const char* to_hstring(uint16_t value) { + uint16_t* valPtr = &value; + uint8_t* ptr; + uint8_t temp; + uint8_t size = 2*2 - 1; + + for (uint8_t i = 0; i < size; i++) { + ptr = ((uint8_t*)valPtr + i); + temp = ((*ptr & 0xF0) >> 4); + hexTo_StringOutput16[size - (i * 2 + 1)] = temp + (temp > 9 ? 55 : '0'); + temp = ((*ptr & 0x0F)); + hexTo_StringOutput16[size - (i * 2)] = temp + (temp > 9 ? 55 : '0'); + } + + hexTo_StringOutput16[size + 1] = 0; + return hexTo_StringOutput16; +} +char hexTo_StringOutput8[128]; +const char* to_hstring(uint8_t value) { + uint8_t* valPtr = &value; + uint8_t* ptr; + uint8_t temp; + uint8_t size = 1*2 - 1; + + for (uint8_t i = 0; i < size; i++) { + ptr = ((uint8_t*)valPtr + i); + temp = ((*ptr & 0xF0) >> 4); + hexTo_StringOutput8[size - (i * 2 + 1)] = temp + (temp > 9 ? 55 : '0'); + temp = ((*ptr & 0x0F)); + hexTo_StringOutput8[size - (i * 2)] = temp + (temp > 9 ? 55 : '0'); + } + + hexTo_StringOutput8[size + 1] = 0; + return hexTo_StringOutput8; +} + char intTo_StringOutput[128]; const char* to_string(int64_t value) { uint8_t isNegative = 0; @@ -60,6 +133,10 @@ const char* to_string(int64_t value) { char doubleTo_StringOutput[128]; const char* to_string(double value, uint8_t decimalPlaces) { + if (decimalPlaces > 20) { + decimalPlaces = 20; + } + char* intPtr = (char*)to_string((int64_t)value); char* doublePtr = doubleTo_StringOutput; @@ -87,4 +164,7 @@ const char* to_string(double value, uint8_t decimalPlaces) { *doublePtr = 0; return doubleTo_StringOutput; +} +const char* to_string(double value) { + return to_string(value, 2); } \ No newline at end of file diff --git a/kernel/src/cstr.h b/kernel/src/cstr.h index eca6b26..342bc2b 100644 --- a/kernel/src/cstr.h +++ b/kernel/src/cstr.h @@ -3,4 +3,9 @@ const char* to_string(uint64_t value); const char* to_string(int64_t value); -const char* to_string(double value, uint8_t decimalPlaces); \ No newline at end of file +const char* to_hstring(uint64_t value); +const char* to_hstring(uint32_t value); +const char* to_hstring(uint16_t value); +const char* to_hstring(uint8_t value); +const char* to_string(double value, uint8_t decimalPlaces); +const char* to_string(double value); \ No newline at end of file diff --git a/kernel/src/kernel.cpp b/kernel/src/kernel.cpp index beb83ce..0d47bab 100644 --- a/kernel/src/kernel.cpp +++ b/kernel/src/kernel.cpp @@ -16,7 +16,15 @@ extern "C" void _start(Framebuffer* framebuffer, PSF1_FONT* psf1_Font) { newRenderer.cursorPosition = {0, 18}; newRenderer.Print(0xFFFFFF, to_string((int64_t)-1234976)); newRenderer.cursorPosition = {0, 36}; - newRenderer.Print(0xFFFFFF, to_string(3.141, 2)); + newRenderer.Print(0xFFFFFF, to_string(-3.141)); + newRenderer.cursorPosition = {0, 54}; + newRenderer.Print(0xFFFFFF, to_hstring((uint64_t)0xF0)); + newRenderer.cursorPosition = {0, 72}; + newRenderer.Print(0xFFFFFF, to_hstring((uint32_t)0xF0)); + newRenderer.cursorPosition = {0, 90}; + newRenderer.Print(0xFFFFFF, to_hstring((uint16_t)0xF0)); + newRenderer.cursorPosition = {0, 108}; + newRenderer.Print(0xFFFFFF, to_hstring((uint8_t)0xF0)); return; } \ No newline at end of file