--- /dev/null
+#ifndef __HACHTIS_PIN_MAGIC_H
+#define __HACHTIS_PIN_MAGIC_H
+
+struct __ph_pin__ {
+ volatile uint8_t *addr;
+ uint8_t bitno;
+};
+
+#define _PIN(port, bit) ((volatile struct __ph_pin__){&port, bit})
+
+#define LED _PIN(PORTB, PORTB2)
+
+#define OUTPUT_PIN(pin) (*(pin.addr - 1) |= _BV(pin.bitno))
+#define INPUT_PIN(pin) (*(pin.addr - 1) &= ~_BV(pin.bitno))
+
+#define PINON(pin) (*pin.addr |= _BV(pin.bitno))
+#define PINOFF(pin) (*pin.addr &= ~_BV(pin.bitno))
+
+#define PINVAL(pin) (*(pin.addr - 2) & _BV(pin.bitno) ? 1 : 0)
+
+#define setpin(pin, val) ((val) ? PINON(pin) : PINOFF(pin))
+
+#endif