         showString(PSTR(") "));
 #endif
         Serial.println();
-    if (config.hex_output > 1) {    // Print ascii interpretation under hex output
-        showString(PSTR("ASC"));
-        if (config.group == 0) {
-            showString(PSTR("II  "));
+        if (config.hex_output > 1) { // also print a line as ascii
+            showString(PSTR("ASC "));
+            if (config.group == 0) {
+                showString(PSTR(" II "));
+            }
+            Serial.print(rf12_hdr & RF12_HDR_DST ? '>' : '<');
+            Serial.print((char) ('@' + (rf12_hdr & RF12_HDR_MASK)));
+            displayASCII((const uint8_t*) rf12_data, n);
         }
-        showString(PSTR(" ."));
-        Serial.print(char((rf12_hdr & RF12_HDR_MASK) | 0x40)); // Convert node number into a letter, A to Z to undersore (1-31)
-        displayASCII(rf12_data, n);
-    }
         if (rf12_crc == 0) {
             activityLed(1);
 #if !TINY

    byte collect_mode :1;   // 0 = ack, 1 = don't send acks
    byte quiet_mode   :1;   // 0 = show all, 1 = show only valid packets
    byte spare_flags  :4;  
    word frequency_offset;  // offset within band
    byte pad[RF12_EEPROM_SIZE-8];
    word crc;
} RF12Config;

    }
}

static void displayASCII (const uint8_t* data, byte count) {
    for (byte i = 0; i < count; ++i) {
        Serial.print(' ');
        char c = (char) data[i];
        Serial.print(c < ' ' || c > '~' ? '.' : c);
    }
    Serial.println();
}
