From bf1b651ec5b6402b68308c2afb874f7c706ba7b9 Mon Sep 17 00:00:00 2001 From: giomba Date: Sun, 15 Oct 2023 15:09:01 +0200 Subject: [PATCH] Add cursor module. --- src/cursor.c | 26 ++++++++++++++++++++++++++ src/cursor.h | 14 ++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 src/cursor.c create mode 100644 src/cursor.h diff --git a/src/cursor.c b/src/cursor.c new file mode 100644 index 0000000..9557f14 --- /dev/null +++ b/src/cursor.c @@ -0,0 +1,26 @@ +#include "cursor.h" + +#include "io.h" + +void cursor_setRaw(uint16_t address) { + io_out(0xA0, 14); + io_out(0xA1, (address >> 8) & 0xff); + io_out(0xA0, 15); + io_out(0xA1, address & 0xff); +} + +void cursor_setXY(uint8_t x, uint8_t y) { + cursor_setRaw((uint16_t)y * 80 + x); +} + +void cursor_setStartRaster(uint8_t start) { + start &= 0x1f; + io_out(0xA0, 10); + io_out(0xA1, start); +} + +void cursor_setEndRaster(uint8_t end) { + end &= 0x1f; + io_out(0xA0, 11); + io_out(0xA1, end); +} diff --git a/src/cursor.h b/src/cursor.h new file mode 100644 index 0000000..ecb4d06 --- /dev/null +++ b/src/cursor.h @@ -0,0 +1,14 @@ +#ifndef CEDA_CURSOR_H +#define CEDA_CURSOR_H + +#include + +void cursor_setRaw(uint16_t address); + +void cursor_setXY(uint8_t x, uint8_t y); + +void cursor_setStartRaster(uint8_t start); + +void cursor_setEndRaster(uint8_t end); + +#endif