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