X-Git-Url: https://git.ucc.asn.au/?p=uccvend-snackrom.git;a=blobdiff_plain;f=ROM2%2Fsci.c;h=646e443ca4cb4077226b394836fe27e2f321b582;hp=fe59f75b1b6c478a9cfaa5d5e7ebbbec1ce77e4a;hb=74fa3423b3feafe4877c3bfc819462e80797ed3a;hpb=b0e717fbd07189603c7fcc51f55bc6f67119ead3 diff --git a/ROM2/sci.c b/ROM2/sci.c index fe59f75..646e443 100644 --- a/ROM2/sci.c +++ b/ROM2/sci.c @@ -113,10 +113,14 @@ void serial_rti() { /* called every 6.6 ms */ /* for gdb compatibility */ int serial_readchar(u8 timeout) { + int ret; sci_timer = timeout * 152; while (sci_timer && sci_rx_buf_ptr_start == sci_rx_buf_ptr); /* spin */ if (sci_timer == 0) return SERIAL_TIMEOUT; - return sci_rx_buf[sci_rx_buf_ptr_start++]; + ret = sci_rx_buf[sci_rx_buf_ptr_start]; + sci_rx_buf_ptr_start++; + sci_rx_buf_ptr_start %= BUFFER_LEN; + return ret; } void serial_write(const char *str, int len) { @@ -127,3 +131,4 @@ void serial_write(const char *str, int len) { _io_ports[M6811_SCDR] = *c; /* send byte */ } } +