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() {