From 45548d516ddf5e88bf80940365d151e1bd69c29f Mon Sep 17 00:00:00 2001 From: amlal Date: Sun, 17 Mar 2024 07:25:31 +0100 Subject: HCR-14: A series of important fixes and improvements regarding the kernel. Signed-off-by: amlal --- Private/KernelKit/DebugOutput.hpp | 35 ++++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) (limited to 'Private/KernelKit/DebugOutput.hpp') 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; -- cgit v1.2.3