summaryrefslogtreecommitdiffhomepage
path: root/Private/KernelKit/DebugOutput.hpp
diff options
context:
space:
mode:
authoramlal <amlal@el-mahrouss-logic.com>2024-03-17 07:25:31 +0100
committeramlal <amlal@el-mahrouss-logic.com>2024-03-17 07:25:31 +0100
commit45548d516ddf5e88bf80940365d151e1bd69c29f (patch)
treef7347078e07a9d524e874f7f6c23622d538064bc /Private/KernelKit/DebugOutput.hpp
parenta4d4de6913fb7dd54847b0e5a004c3100bc02459 (diff)
HCR-14: A series of important fixes and improvements regarding the
kernel. Signed-off-by: amlal <amlal@el-mahrouss-logic.com>
Diffstat (limited to 'Private/KernelKit/DebugOutput.hpp')
-rw-r--r--Private/KernelKit/DebugOutput.hpp35
1 files changed, 34 insertions, 1 deletions
diff --git a/Private/KernelKit/DebugOutput.hpp b/Private/KernelKit/DebugOutput.hpp
index 75031687..a2355cd8 100644
--- a/Private/KernelKit/DebugOutput.hpp
+++ b/Private/KernelKit/DebugOutput.hpp
@@ -55,7 +55,40 @@ inline TerminalDevice carriage_return() {
return selfTerm;
}
-inline TerminalDevice get_buffer(Char* buf) {
+namespace Detail {
+inline TerminalDevice _write_number_hex(const Long &x, TerminalDevice& term) {
+ int y = x / 16;
+ int h = x % 16;
+
+ if (y) _write_number_hex(y, term);
+
+ /* fail if the hex number is not base-16 */
+ if (h > 15) {
+ _write_number_hex('?', term);
+ return term;
+ }
+
+ if (y < 0) y = -y;
+
+ const char NUMBERS[17] = "0123456789ABCDEF";
+
+ Char buf[2];
+ buf[0] = NUMBERS[h];
+ buf[1] = 0;
+
+ term << buf;
+ return term;
+}
+} // namespace Detail
+
+inline TerminalDevice hex_number(const Long &x) {
+ TerminalDevice selfTerm = TerminalDevice::Shared();
+ Detail::_write_number_hex(x, selfTerm);
+
+ return selfTerm;
+}
+
+inline TerminalDevice get_console_in(Char* buf) {
TerminalDevice selfTerm = TerminalDevice::Shared();
selfTerm >> buf;
return selfTerm;