diff --git a/hw/char/escc.c b/hw/char/escc.c
index 98a1c21..f1fc70e 100644
--- a/hw/char/escc.c
+++ b/hw/char/escc.c
@@ -472,6 +472,7 @@ static void escc_update_parameters(ChannelState *s)
 static void escc_mem_write(void *opaque, hwaddr addr,
                            uint64_t val, unsigned size)
 {
+
     ESCCState *serial = opaque;
     ChannelState *s;
     uint32_t saddr;
@@ -481,22 +482,31 @@ static void escc_mem_write(void *opaque, hwaddr addr,
     saddr = (addr >> serial->it_shift) & 1;
     channel = (addr >> (serial->it_shift + 1)) & 1;
     s = &serial->chn[channel];
+    
+    printf("%s(): start value:0x%x register:0x%x\n", __func__, val, saddr);
+    
     switch (saddr) {
     case SERIAL_CTRL:
+        printf("%s() SERIAL_CTRL case\n", __func__);
         trace_escc_mem_writeb_ctrl(CHN_C(s), s->reg, val & 0xff);
         newreg = 0;
         switch (s->reg) {
         case W_CMD:
+            printf("%s() W_CMD case\n", __func__);
             newreg = val & CMD_PTR_MASK;
             val &= CMD_CMD_MASK;
             switch (val) {
             case CMD_HI:
+                printf("%s() CMD_HI case\n", __func__);
                 newreg |= CMD_HI;
+                printf("%s(): newreg = 0x%x\n", __func__, newreg);
                 break;
             case CMD_CLR_TXINT:
+                printf("%s() CMD_CLR_TXINT case\n", __func__);
                 clr_txint(s);
                 break;
             case CMD_CLR_IUS:
+                printf("%s() CMD_CLR_IUS case\n", __func__);
                 if (s->rxint_under_svc) {
                     s->rxint_under_svc = 0;
                     if (s->txint) {
@@ -508,6 +518,7 @@ static void escc_mem_write(void *opaque, hwaddr addr,
                 escc_update_irq(s);
                 break;
             default:
+                printf("%s(): unprogrammed command detected: value:%d\n", __func__, val);
                 break;
             }
             break;
@@ -515,36 +526,44 @@ static void escc_mem_write(void *opaque, hwaddr addr,
         case W_SYNC1 ... W_TXBUF:
         case W_MISC1 ... W_CLOCK:
         case W_MISC2 ... W_EXTINT:
+            printf("%s() W_MISC2 case\n", __func__);
             s->wregs[s->reg] = val;
             break;
         case W_TXCTRL1:
         case W_TXCTRL2:
+            printf("%s() W_TXCTRL2 case\n", __func__);
             s->wregs[s->reg] = val;
             escc_update_parameters(s);
             break;
         case W_BRGLO:
         case W_BRGHI:
+            printf("%s() W_BRGHI case\n", __func__);
             s->wregs[s->reg] = val;
             s->rregs[s->reg] = val;
             escc_update_parameters(s);
             break;
         case W_MINTR:
+            printf("%s(): W_MINTR detected\n", __func__);
             switch (val & MINTR_RST_MASK) {
             case 0:
             default:
                 break;
             case MINTR_RST_B:
+                printf("%s() MINTR_RST_B case\n", __func__);
                 escc_reset_chn(&serial->chn[0]);
                 return;
             case MINTR_RST_A:
+                printf("%s() MINTR_RST_A case\n", __func__);
                 escc_reset_chn(&serial->chn[1]);
                 return;
             case MINTR_RST_ALL:
+                printf("%s(): MINTR_RST_ALL case\n", __func__);
                 escc_reset(DEVICE(serial));
                 return;
             }
             break;
         default:
+            printf("%s(): unprogrammed command detected: value:%d\n", __func__, val);
             break;
         }
         if (s->reg == 0)
@@ -553,6 +572,7 @@ static void escc_mem_write(void *opaque, hwaddr addr,
             s->reg = 0;
         break;
     case SERIAL_DATA:
+        printf("%s() SERIAL_DATA case\n", __func__);
         trace_escc_mem_writeb_data(CHN_C(s), val);
         s->tx = val;
         if (s->wregs[W_TXCTRL2] & TXCTRL2_TXEN) { // tx enabled
@@ -567,6 +587,7 @@ static void escc_mem_write(void *opaque, hwaddr addr,
         set_txint(s);
         break;
     default:
+        printf("%s(): unprogrammed command detected: value:%d\n", __func__, val);
         break;
     }
 }
@@ -583,11 +604,16 @@ static uint64_t escc_mem_read(void *opaque, hwaddr addr,
     saddr = (addr >> serial->it_shift) & 1;
     channel = (addr >> (serial->it_shift + 1)) & 1;
     s = &serial->chn[channel];
+
+    printf("%s(): address:0x%x saddr:0x%x\n", __func__, addr, saddr);  
+
     switch (saddr) {
     case SERIAL_CTRL:
         trace_escc_mem_readb_ctrl(CHN_C(s), s->reg, s->rregs[s->reg]);
+        printf("%s(): s->reg = 0x%x\n", __func__, s->reg);
         ret = s->rregs[s->reg];
         s->reg = 0;
+        printf("%s(): SERIAL_CTRL returning 0x%x\n", __func__, ret);
         return ret;
     case SERIAL_DATA:
         s->rregs[R_STATUS] &= ~STATUS_RXAV;
@@ -599,8 +625,10 @@ static uint64_t escc_mem_read(void *opaque, hwaddr addr,
         trace_escc_mem_readb_data(CHN_C(s), ret);
         if (s->chr)
             qemu_chr_accept_input(s->chr);
+        printf("%s(): SERIAL_DATA returning 0x%x\n", __func__, ret);
         return ret;
     default:
+        printf("%s(): default case for address 0x%x\n", __func__, addr);
         break;
     }
     return 0;
