diff --git a/ROM2/main_basic.c b/ROM2/main_basic.c index 50614b305d592a191c30f39bc256faf958473073..3e886485b45430fe4f6b7d6b99706a1f832dd8ce 100644 --- a/ROM2/main_basic.c +++ b/ROM2/main_basic.c @@ -163,6 +163,9 @@ int main() { unlock(); /* enable interrupts */ + delay(1000); + set_msg(" CRUEL "); + //comm_init(); //coinmech_init(); sci_init(); @@ -172,15 +175,14 @@ int main() { delay(1000); - set_msg(" CRUEL "); - - delay(1000); - set_msg(" WORLD "); delay(1000); chime_start(); + my_strncpy(sci_tx_buf, "5N4X0RZRUS\n", BUFFER_LEN); + send_packet(); + cur_motor[0] = 0xff; while(1) { if (cur_motor[0] == 0xff) { /* signal to say redraw screen */ diff --git a/ROM2/sci.c b/ROM2/sci.c index 4ce0d36ce1d3c8120990c3350c7cf509328fcae4..2346b28569b60332f84f04c28feb2feda1a9cb04 100644 --- a/ROM2/sci.c +++ b/ROM2/sci.c @@ -1,4 +1,5 @@ #include "vend.h" +#include "chime.h" #include "sci.h" char sci_tx_buf[BUFFER_LEN]; @@ -32,6 +33,7 @@ void send_packet() { } void sci_rx_int() { + /* XXX FIXME we should do something about errors. nack? */ if (sci_have_packet) { /* overrun :( */ _io_ports[M6811_SCDR]; /* read it anyway */ @@ -52,7 +54,12 @@ void sci_rx_int() { } void sci_interrupt_serial() { + chime_start(); + if (_io_ports[M6811_SCSR] & M6811_RDRF) sci_rx_int(); + + if (_io_ports[M6811_SCSR] & M6811_OR) + _io_ports[M6811_SCDR]; /* declare it a lost cause */ } void msg_clr() {