From 25bec21f20208a9369656a337cf5325e7b3a5a8d Mon Sep 17 00:00:00 2001 From: taitep Date: Sun, 4 Jan 2026 18:51:23 +0100 Subject: Initial commit --- include/uart.h | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 include/uart.h (limited to 'include') diff --git a/include/uart.h b/include/uart.h new file mode 100644 index 0000000..76f4b34 --- /dev/null +++ b/include/uart.h @@ -0,0 +1,30 @@ +#pragma once + +#define UART_BASE 0x10000 +#define UART_DATA *(volatile char *)(UART_BASE + 0) +#define UART_STATUS *(volatile char *)(UART_BASE + 1) +#define UART_TX_READY 0b01 +#define UART_RX_READY 0b10 + +static inline int uart_rx_ready() { return (UART_STATUS & UART_RX_READY) != 0; } +static inline int uart_tx_ready() { return (UART_STATUS & UART_TX_READY) != 0; } + +static inline void uart_putc(char c) { + while (!uart_tx_ready()) + ; + UART_DATA = c; +} + +static inline void uart_puts(const char *s) { + while (*s) { + uart_putc(*s++); + } +} + +static inline char uart_getc_nonblocking() { return UART_DATA; } + +static inline char uart_getc() { + while (!uart_rx_ready()) + ; + return UART_DATA; +} -- cgit v1.2.3