#include <stdio.h>
#include <stdlib.h>

int main (int argc, char **argv)
{
  char buf[1024];
  char portbit[32];
  char signal[32];

  while (fgets (buf, 1024, stdin)) {
    sscanf (buf, "%s %s", portbit, signal);
    if (portbit [0] != 'P') {
      printf ("port bit should start with 'p'\n");
      exit (1);
    }
    if ((portbit[1] < 'A') || 
        (portbit[1] > 'F')) {
      printf ("ports are A-F\n");
      exit (1);
    }
    printf ("#define %s_BIT  %s\n",     signal, portbit);
    printf ("#define %s_PORT PORT%c\n", signal, portbit[1]);
    printf ("#define %s_DDR  DDR%c\n",  signal, portbit[1]);
    printf ("#define %s_PIN  PIN%c\n",  signal, portbit[1]);
    printf ("#define %s_LO() PORT%c &= ~_BV(%s)\n",  signal, portbit[1], portbit);
    printf ("#define %s_HI() PORT%c |=  _BV(%s)\n",  signal, portbit[1], portbit);
    printf ("#define %s_TOGGLE() PORT%c ^=  _BV(%s)\n",  signal, portbit[1], portbit);
    printf ("#define %s_INPUT() DDR%c &= ~_BV (%s)\n",  signal, portbit[1], portbit);
    printf ("#define %s_OUTPUT() DDR%c |=  _BV (%s)\n",  signal, portbit[1], portbit);

    printf ("#define %s_IN()  ((PIN%c >> %s) & 1)\n", signal, portbit[1], portbit);
    printf ("\n\n");

  }

  exit (0);
}
