From a2909320348f36b6201894e0bf3ea307dc38a8b3 Mon Sep 17 00:00:00 2001 From: MerryMage Date: Thu, 22 Feb 2018 19:27:22 +0000 Subject: [PATCH] uart: transmit string and hex --- exosphere/uart.c | 13 +++++++++++++ exosphere/uart.h | 2 ++ 2 files changed, 15 insertions(+) diff --git a/exosphere/uart.c b/exosphere/uart.c index 265931789..86b10d6e4 100644 --- a/exosphere/uart.c +++ b/exosphere/uart.c @@ -30,4 +30,17 @@ void uart_transmit_char(char ch) { while (!(UART_LSR_0 & 0x20)) {} UART_THR_DLAB_0_0 = ch; +} + +void uart_transmit_str(const char *str) { + while (*str) { + uart_transmit_char(*str++); + } +} + +void uart_transmit_hex(uint32_t value) { + for (unsigned int i = 0; i < 8; i++) { + uint32_t nibble = (value >> (28 - i * 4)) & 0xF; + uart_transmit_char("0123456789ABCDEF"[nibble]); + } } \ No newline at end of file diff --git a/exosphere/uart.h b/exosphere/uart.h index cb7010774..3da1219bf 100644 --- a/exosphere/uart.h +++ b/exosphere/uart.h @@ -16,5 +16,7 @@ void *get_uart_address(void); /* This is inlined in uart.c */ void uart_initialize(uint16_t divider); void uart_transmit_char(char ch); +void uart_transmit_str(const char *str); +void uart_transmit_hex(uint32_t value); #endif \ No newline at end of file