From 57834666259af373d19b560108ed7bb322b68adb Mon Sep 17 00:00:00 2001 From: amlal Date: Sat, 23 Mar 2024 10:22:31 +0100 Subject: Kernel: PS2 mouse builtin works now. - But doesnt draw at the exact position, we need to fix that. Signed-off-by: amlal --- Private/KernelKit/DebugOutput.hpp | 36 ++++++++++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) (limited to 'Private/KernelKit/DebugOutput.hpp') diff --git a/Private/KernelKit/DebugOutput.hpp b/Private/KernelKit/DebugOutput.hpp index 0eb59da2..457bc9d1 100644 --- a/Private/KernelKit/DebugOutput.hpp +++ b/Private/KernelKit/DebugOutput.hpp @@ -45,7 +45,7 @@ class TerminalDevice final : public DeviceInterface { inline TerminalDevice end_line() { TerminalDevice selfTerm = TerminalDevice::Shared(); - selfTerm << "\n"; + selfTerm << "\r\n"; return selfTerm; } @@ -56,6 +56,30 @@ inline TerminalDevice carriage_return() { } namespace Detail { +inline TerminalDevice _write_number(const Long &x, TerminalDevice& term) { + int y = x / 10; + int h = x % 10; + + if (y) _write_number(y, term); + + /* fail if the number is not base-10 */ + if (h > 9) { + _write_number('?', term); + return term; + } + + if (y < 0) y = -y; + + const char NUMBERS[11] = "0123456789"; + + Char buf[2]; + buf[0] = NUMBERS[h]; + buf[1] = 0; + + term << buf; + return term; +} + inline TerminalDevice _write_number_hex(const Long &x, TerminalDevice& term) { int y = x / 16; int h = x % 16; @@ -70,7 +94,7 @@ inline TerminalDevice _write_number_hex(const Long &x, TerminalDevice& term) { if (y < 0) y = -y; - const char NUMBERS[17] = "0123456789ABCDEF"; + const char NUMBERS[17] = "0123456789"; Char buf[2]; buf[0] = NUMBERS[h]; @@ -90,6 +114,14 @@ inline TerminalDevice hex_number(const Long &x) { return selfTerm; } +inline TerminalDevice number(const Long &x) { + TerminalDevice selfTerm = TerminalDevice::Shared(); + + Detail::_write_number(x, selfTerm); + + return selfTerm; +} + inline TerminalDevice get_console_in(Char* buf) { TerminalDevice selfTerm = TerminalDevice::Shared(); selfTerm >> buf; -- cgit v1.2.3