From d45ea975cca6ec30661d77843046a872c1aa2553 Mon Sep 17 00:00:00 2001 From: Adam Perkowski Date: Wed, 4 Sep 2024 20:11:21 +0200 Subject: [PATCH 1/2] add todo for #29 --- kernel/src/interrupts.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/kernel/src/interrupts.rs b/kernel/src/interrupts.rs index f13705d..fd7df7c 100644 --- a/kernel/src/interrupts.rs +++ b/kernel/src/interrupts.rs @@ -182,11 +182,13 @@ extern "x86-interrupt" fn keyboard_interrupt_handler(_stack_frame: InterruptStac } KeyCode::ArrowLeft => { + // TODO #29: Limits & newlines #[cfg(debug_assertions)] WRITER.lock().decrement_column_position(); } KeyCode::ArrowRight => { + // TODO #29: Limits & newlines #[cfg(debug_assertions)] WRITER.lock().increment_column_position(); } From 269f258230391fe507e85792f7486d1b62ce5a2d Mon Sep 17 00:00:00 2001 From: Adam Perkowski Date: Wed, 23 Oct 2024 15:46:39 +0200 Subject: [PATCH 2/2] no idea what am doing --- kernel/src/interrupts.rs | 21 +++++++++++++++------ kernel/src/vga_buffer.rs | 3 +++ 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/kernel/src/interrupts.rs b/kernel/src/interrupts.rs index fd7df7c..9e868ab 100644 --- a/kernel/src/interrupts.rs +++ b/kernel/src/interrupts.rs @@ -182,15 +182,24 @@ extern "x86-interrupt" fn keyboard_interrupt_handler(_stack_frame: InterruptStac } KeyCode::ArrowLeft => { - // TODO #29: Limits & newlines - #[cfg(debug_assertions)] - WRITER.lock().decrement_column_position(); + if unsafe { BUFFER_INDEX } > 0 { + WRITER.lock().decrement_column_position(); + + /* unsafe { + BUFFER_INDEX -= 1; + } + + print!(" "); + WRITER.lock().decrement_column_position(); */ + } } KeyCode::ArrowRight => { - // TODO #29: Limits & newlines - #[cfg(debug_assertions)] - WRITER.lock().increment_column_position(); + let mut writer = WRITER.lock(); + + if writer.get_column_position() < unsafe { BUFFER_INDEX } { + writer.increment_column_position(); + } } _ => {} diff --git a/kernel/src/vga_buffer.rs b/kernel/src/vga_buffer.rs index 858dfb0..c85cd98 100644 --- a/kernel/src/vga_buffer.rs +++ b/kernel/src/vga_buffer.rs @@ -208,6 +208,9 @@ impl Writer { pub fn increment_column_position(&mut self) { self.column_position += 1; } + pub fn get_column_position(&mut self) -> usize { + self.column_position + } } impl fmt::Write for Writer {