From 963bfe7744ce90be63860a5cfc87e820420ea176 Mon Sep 17 00:00:00 2001 From: Tom-on64 Date: Mon, 11 Mar 2024 21:15:32 +0100 Subject: [PATCH] Added text cursor enable and disable --- src/kernel/main.c | 1 + src/kernel/screen.c | 14 ++++++++++++++ src/kernel/screen.h | 6 ++---- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/kernel/main.c b/src/kernel/main.c index 6e40a0b..ad48db1 100644 --- a/src/kernel/main.c +++ b/src/kernel/main.c @@ -16,6 +16,7 @@ void main() { setupKeyboard(); setupTimer(); timerPhase(100); // 1 tick per 10ms + enableCursor(14, 15); clear(0x0f); print("kern.\n\n", 0x0f); diff --git a/src/kernel/screen.c b/src/kernel/screen.c index 133f716..5793480 100644 --- a/src/kernel/screen.c +++ b/src/kernel/screen.c @@ -1,5 +1,6 @@ #include "screen.h" #include "stdint.h" +#include "system.h" uint16_t cursor = 0; @@ -79,3 +80,16 @@ uint16_t calcOffset(uint8_t col, uint8_t row) { return row * COLS + col; } +void enableCursor(uint8_t start, uint8_t end) { + outb(0x3d4, 0x0a); // Sending cursor start + outb(0x3d5, (inb(0x3d5) & 0xc0) | start); + + outb(0x3d4, 0x0b); // Sending cursor end + outb(0x3d5, (inb(0x3d5) & 0xe0) | end); +} + +void disableCursor() { + outb(0x3d4, 0x0a); + outb(0x3d4, 0x0b); +} + diff --git a/src/kernel/screen.h b/src/kernel/screen.h index 1751cb6..929e0a1 100644 --- a/src/kernel/screen.h +++ b/src/kernel/screen.h @@ -14,8 +14,6 @@ #define COLS 80 #define CHARS (ROWS*COLS) -#define CURSOR '_' - void putc(char c, uint8_t attr); void print(char* s, uint8_t attr); void putcAt(char c, uint8_t attr, uint8_t row, uint8_t col); @@ -27,7 +25,7 @@ void setCursorPos(uint16_t offset); uint16_t getCursorPos(); uint16_t calcOffset(uint8_t row, uint8_t col); -void setCursorChar(char cursor); -char getCursorChar(); +void enableCursor(uint8_t start, uint8_t end); +void disableCursor(); #endif