     s = sercomports[sercomno];
     sercomtype = s->USART.CTRLA.bit.MODE;
     if (sercomtype < ARRAYSIZE(sercomtype_names)) {
-      PRINT(sercomtype_names[sercomtype]);
+      PRINTS(sercomtype_names[sercomtype]);
     }
   }
 }

  }
  if (port == &PORT->Group[1]) {
    if (bitno < ARRAYSIZE(pin_to_SERCOMALTB_info)) {
      PRINT(pin_to_SERCOMALTB_info[bitno]);
      /*
       * Get sercom number from the string.  (Ugly, but saves space.)
       */

/*
 * "COM" are special communications peripherals like USB, SWD, or ISS
 */
static void decode_COMM(int pin, int pmux)
{
  PortGroup *port = digitalPinToPort(pin);
  int bitno = g_APinDescription[pin].ulPin;

  PRINTS(pinmux_names[pmux]);
  // PA23..PA25 are for USB
  if (port == &PORT->Group[0] && (bitno >= 23 && bitno <= 25)) {
    PRINTS("(USB)");
  }
  // PA30..PA31 are for SWD (Serial JTAG debug)
  if (port == &PORT->Group[0] && (bitno >= 30 && bitno <= 31)) {
    PRINTS("(SWD)");
  }
}

static void decode_CLK(int pin, int pmux)
{
  PRINTS(pinmux_names[pmux]);   // default action
}

/*
 * Given an Arduino pin number, print the datasheet-style Port and Bit numbers
 */
static void print_portname(int pin)
{
  PortGroup *port = digitalPinToPort(pin);
  int bitno = g_APinDescription[pin].ulPin;

  if (port == &PORT->Group[0]) {
    PRINTS("PA");
  }
  if (port == &PORT->Group[1]) {
    PRINTS("PB");
  }
  PRINTN(bitno);
  PRINTS("  ");
}

/*
 * copy ("print") a string to the temporary buffer
 */
static void print_s(const char *s)
{
  while (*s) {
    *bufp++ = *s++;
  }
  *bufp = 0;
}

/*
 * copy ("print") a two digit decimal number to the temporary buffer
 */
static void print_n2(int n)
{
  if (n <= 99) {
    *bufp++ = (n/10) + '0';
    *bufp++ = (n % 10) + '0';
    *bufp = 0;
  } else {
    print_s("***");
  }
}

/*
 * generate a pinmux report for a single pin.  Pass in a buffer of sufficient size,
 * and an optional name.
 */

void pinmux_report(byte pin, char *p, char *name)
{
  bufp = p;
  *bufp = 0;
  if (print_pinno(pin, name)) {  // Does pin exist?

    int bitno = g_APinDescription[pin].ulPin;
    PortGroup *port = digitalPinToPort(pin);
    int pmuxval;

    print_portname(pin);

    if (port->PINCFG[bitno].bit.PMUXEN) {  // Is pinmux enabled?
      // If pinmux is enabled, further report it's value
      if (bitno & 1) {
	// Odd pin numbers
	pmuxval = port->PMUX[bitno / 2].bit.PMUXO;
      } else {
	pmuxval = port->PMUX[bitno / 2].bit.PMUXE;
      }
      print_pinmux(pin, pmuxval);
    } else {
      // Pinmux not enabled - port is GPIO
      PRINTS("GPIO ");
      if (port->DIR.reg & (1 << bitno)) { // Decode pinmode (direction.)
	PRINTS("O");
      } else {
	PRINTS("I");
      }
    } // Pinmux or GPIO
  } // Pin existance
}
