diff --git a/sw/kernel/devices/serial.s b/sw/kernel/devices/serial.s index 0203826..89b60c8 100644 --- a/sw/kernel/devices/serial.s +++ b/sw/kernel/devices/serial.s @@ -9,7 +9,7 @@ .export _serial_init .export _serial_handle_irq -.export _serial_putc, _serial_puts, _serial_getc, _serial_get_nb +.export _serial_putc, _serial_puts, _serial_getc, _serial_getc_nb .zeropage @@ -39,8 +39,8 @@ UART_STATUS = UART + 1 ; Get the character and store it. .proc _serial_handle_irq lda UART_RXB - sta last_char ora #$80 ; set msb + sta last_char jsr _send_eoi rti .endproc @@ -58,7 +58,7 @@ L1: lda last_char ; Serial Port Get Character Non-Blocking ; return last character, even if it has already been read. ; If the character is new, we still clear the new flag. -.proc _serial_get_nb +.proc _serial_getc_nb lda last_char bpl L1 and #$7f diff --git a/sw/kernel/kernel.c b/sw/kernel/kernel.c index 6870a2e..6c67395 100644 --- a/sw/kernel/kernel.c +++ b/sw/kernel/kernel.c @@ -8,7 +8,7 @@ void handle_rtc_interrupt() { // cputs("In IRQ interrupt!\n"); - cputc('A'); + // cputc('A'); send_eoi(); asm volatile ("rti"); } @@ -40,12 +40,12 @@ int main() { serial_puts("Hello from serial!\n"); - c = serial_getc(); - - serial_puts("Got a character!: "); - serial_putc(c); - - while(1); + while(1) { + c = serial_getc(); + serial_puts("Got a character!: "); + serial_putc(c); + serial_putc('\n'); + } return 0; }