diff options
| author | amlal <amlal@el-mahrouss-logic.com> | 2024-03-17 07:25:31 +0100 |
|---|---|---|
| committer | amlal <amlal@el-mahrouss-logic.com> | 2024-03-17 07:25:31 +0100 |
| commit | 45548d516ddf5e88bf80940365d151e1bd69c29f (patch) | |
| tree | f7347078e07a9d524e874f7f6c23622d538064bc /Private/KernelKit/DebugOutput.hpp | |
| parent | a4d4de6913fb7dd54847b0e5a004c3100bc02459 (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.hpp | 35 |
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; |
