From 8e161664bb76e6dff7080181cb8ce17bc55e1ba6 Mon Sep 17 00:00:00 2001 From: Byron Lathi Date: Mon, 14 Mar 2022 16:48:24 -0500 Subject: [PATCH] Add uart_rxb Once you receive a uart interrupt you can call this function to get the received character. --- sw/irq.c | 6 ++++++ sw/uart.h | 2 ++ sw/uart.s | 9 +++++++-- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/sw/irq.c b/sw/irq.c index a7f7287..3608879 100644 --- a/sw/irq.c +++ b/sw/irq.c @@ -2,12 +2,14 @@ #include #include "interrupt.h" +#include "uart.h" // This is defined in main.c void puts(const char* s); void handle_irq() { uint8_t status; + char c; puts("Interrupt Detected!\n"); @@ -19,6 +21,10 @@ void handle_irq() { } if (status & UART) { puts("UART Interrupt!\n"); + c = uart_rxb(); + puts("Received: "); + puts(&c); + puts("\n"); irq_set_status(status & ~UART); } } \ No newline at end of file diff --git a/sw/uart.h b/sw/uart.h index c96b48c..e8f06db 100644 --- a/sw/uart.h +++ b/sw/uart.h @@ -6,6 +6,8 @@ void uart_txb(uint8_t val); void uart_txb_block(uint8_t val); +uint8_t uart_rxb(); + uint8_t uart_status(); #endif \ No newline at end of file diff --git a/sw/uart.s b/sw/uart.s index 80b5563..dd23778 100644 --- a/sw/uart.s +++ b/sw/uart.s @@ -2,8 +2,8 @@ .importzp sp, sreg -.export _uart_txb -.export _uart_txb_block +.export _uart_txb, _uart_txb_block +.export _uart_rxb .export _uart_status .autoimport on @@ -23,6 +23,11 @@ _uart_txb_block: bne @1 rts +_uart_rxb: + lda UART_RXB ; Read value + ldx #$00 + rts + _uart_status: lda UART_STATUS ldx #$00