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