diff --git a/ROM2/main_basic.c b/ROM2/main_basic.c index 3e886485b45430fe4f6b7d6b99706a1f832dd8ce..888932e5908dd182150a342a38d2f7c00764b97d 100644 --- a/ROM2/main_basic.c +++ b/ROM2/main_basic.c @@ -123,18 +123,14 @@ void ping_pong() { /* make sure it's really a ping */ if (sci_rx_buf[1] != 'I' || sci_rx_buf[2] != 'N' || - sci_rx_buf[3] != 'G') { + sci_rx_buf[3] != 'G' || + sci_rx_buf[4] != '\0') { send_nack(); return; } /* respond with ack & pong */ wait_for_tx_free(); - sci_tx_buf[0] = 'P'; - sci_tx_buf[1] = 'O'; - sci_tx_buf[2] = 'N'; - sci_tx_buf[3] = 'G'; - sci_tx_buf[4] = '\n'; - sci_tx_buf[5] = 0; + my_strncpy(sci_tx_buf, "PONG\n", BUFFER_LEN); send_packet(); } diff --git a/ROM2/sci.c b/ROM2/sci.c index 2346b28569b60332f84f04c28feb2feda1a9cb04..739d706069a49c0ca5a061f06c9a3f4040947164 100644 --- a/ROM2/sci.c +++ b/ROM2/sci.c @@ -40,7 +40,9 @@ void sci_rx_int() { return; } sci_rx_buf[sci_rx_buf_ptr] = _io_ports[M6811_SCDR]; - if (sci_rx_buf[sci_rx_buf_ptr] == '\n') { + if (sci_rx_buf[sci_rx_buf_ptr] == '\n' || + sci_rx_buf[sci_rx_buf_ptr] == '\r') { + if (sci_rx_buf_ptr == 0) return; /* we've read a blank packet in */ sci_rx_buf[sci_rx_buf_ptr] = '\0'; sci_have_packet = 1; sci_rx_buf_ptr = 0; @@ -68,15 +70,11 @@ void msg_clr() { } void send_ack() { - sci_tx_buf[0] = '!'; - sci_tx_buf[1] = '\n'; - sci_tx_buf[2] = '\0'; + my_strncpy(sci_tx_buf, "!\n", BUFFER_LEN); send_packet(); } void send_nack() { - sci_tx_buf[0] = '?'; - sci_tx_buf[1] = '\n'; - sci_tx_buf[2] = '\0'; + my_strncpy(sci_tx_buf, "?\n", BUFFER_LEN); send_packet(); }