diff --git a/src/parisc/head.S b/src/parisc/head.S
index 8c0726f..d16b5d3 100644
--- a/src/parisc/head.S
+++ b/src/parisc/head.S
@@ -436,6 +436,7 @@
 END(iodc_entry_table)
 
 ENTRY(iodc_entry)
+	/* This next instr will be replaced when copied to caller. */
 	load32 parisc_iodc_ENTRY_IO, %r1
 #if NOSAVE
 	bv %r0(%r1)
diff --git a/src/parisc/parisc.c b/src/parisc/parisc.c
index 9023795..b84c500 100644
--- a/src/parisc/parisc.c
+++ b/src/parisc/parisc.c
@@ -250,6 +250,7 @@
         return;
 
     while (len > 0) {
+        printf("Dump of %ld bytes from addr 0x%lx\n", len, oaddr);
         printf("%08lx: %02x %02x %02x %02x %02x %02x %02x %02x"
                      " %02x %02x %02x %02x %02x %02x %02x %02x\n",
            oaddr, p[0], p[1], p[2], p[3], p[4], p[5], p[6], p[7],
@@ -775,10 +776,15 @@
 
     iodc_log_call(ARG_REFS, __FUNCTION__);
 
-    hpa = fix_hpa_hack(hpa);
-    hpa_index = find_hpa_index(hpa);
-    if (hpa_index < 0)
-        return PDC_NE_MOD;
+    if (hpa == MPE_CONSOLE_HPA) {
+    } else {
+        hpa = fix_hpa_hack(hpa);
+        hpa_index = find_hpa_index(hpa);
+        if (hpa_index < 0) {
+            printf("NOT found !!\n");
+            return PDC_NE_MOD;
+        }
+    }
 
     switch (option) {
         case ENTRY_INIT_SRCH_FRST: /* 2: Search first */
@@ -1192,22 +1198,27 @@
     int hpa_index;
     unsigned char *c;
 
-    if (pdc_debug & DEBUG_IODC)
-        printf("\nSeaBIOS: Info PDC_IODC option %ld ARG2=%x ARG3=%x ARG4=%x ARG5=%x ARG6=%x\n", option, ARG2, ARG3, ARG4, ARG5, ARG6);
+    if (1 && pdc_debug & DEBUG_IODC)
+        printf("\n-> SeaBIOS: Info PDC_IODC option %ld ARG2=0x%x ARG3=0x%x ARG4=0x%x ARG5=0x%x ARG6=0x%x\n",
+            option, ARG2, ARG3, ARG4, ARG5, ARG6);
 
     hpa = ARG3;
     if (hpa == IDE_HPA) { // do NOT check for DINO_SCSI_HPA, breaks Linux which scans IO areas for unlisted io modules
         iodc_p = &iodc_data_hpa_fff8c000; // workaround for PCI ATA (use DINO_SCSI_HPA)
+    } else if (hpa == MPE_CONSOLE_HPA) {
+        iodc_p = &iodc_data_hpa_ffd05000; // workaround for MPE RS-232
     } else {
         hpa = fix_hpa_hack(hpa);
         hpa_index = find_hpa_index(hpa);
-        if (hpa_index < 0)
+        if (hpa_index < 0) {
+            // printf("DEVICE NOT FOUND \n");
             return -4; // not found
+        }
         iodc_p = parisc_devices[hpa_index].iodc;
     }
 
     switch (option) {
-        case PDC_IODC_READ:
+    case PDC_IODC_READ:
             if (ARG4 == PDC_IODC_INDEX_DATA) {
                 // if (hpa == MEMORY_HPA)
                 //	ARG6 = 2; // Memory modules return 2 bytes of IODC memory (result2 ret[0] = 0x6701f41 HI !!)
@@ -1235,17 +1246,16 @@
             // dprintf(0, "\n\nSeaBIOS: Info PDC_IODC function OK\n");
             flush_data_cache((char*)ARG5, *result);
             return PDC_OK;
+    case PDC_IODC_NINIT:	/* 2: non-destructive init */
+    case PDC_IODC_DINIT:	/* 3: destructive init */
             break;
-        case PDC_IODC_NINIT:	/* non-destructive init */
-        case PDC_IODC_DINIT:	/* destructive init */
-            break;
-        case PDC_IODC_MEMERR:
+    case PDC_IODC_MEMERR:   /* 4: check for errors */
             result[0] = 0; /* IO_STATUS */
             result[1] = 0;
             result[2] = 0;
             result[3] = 0;
             return PDC_OK;
-        case PDC_IODC_IDENT_PRIMARY:
+    case PDC_IODC_IDENT_PRIMARY:
             result[0] = MEMORY_HPA;
             return PDC_OK;      /* or -19 ? */
     }
