diff --git a/hello.128a4u.blink.c b/hello.128a4u.blink.c
new file mode 100644
index 0000000000000000000000000000000000000000..0a495cd4ae034a95588cb41c0a5a624f33ea565e
--- /dev/null
+++ b/hello.128a4u.blink.c
@@ -0,0 +1,43 @@
+//
+// hello.blink
+//
+// 128a4u, blinking on PC1
+//
+
+#include <avr/io.h>
+#include <util/delay.h>
+#include <avr/pgmspace.h>
+
+#define DELAY 500 // blink delay
+#define LED PIN1_bm // LED bit mask
+
+int main(void) {
+   // seems to go too fast
+   //OSC.PLLCTRL = OSC_PLLFAC4_bm | OSC_PLLFAC3_bm; // 2 MHz * 24 = 48 MHz
+   //OSC.CTRL = OSC_PLLEN_bm; // enable PLL
+   //while (!(OSC.STATUS & OSC_PLLRDY_bm)); // wait for PLL to be ready
+   //CCP = CCP_IOREG_gc; // enable protected register change
+   //CLK.CTRL = CLK_SCLKSEL_PLL_gc; // switch to PLL
+
+   //
+   // set up clock
+   //
+   OSC.CTRL = OSC_RC32MEN_bm; // enable 32MHz clock
+   while (!(OSC.STATUS & OSC_RC32MRDY_bm)); // wait for clock to be ready
+   CCP = CCP_IOREG_gc; // enable protected register change
+   CLK.CTRL = CLK_SCLKSEL_RC32M_gc; // switch to 32MHz clock
+
+   //
+   // set up port
+   //
+   PORTC.DIR = LED;
+   //
+   // main loop
+   //
+   while (1) {
+      PORTC.OUT = LED;
+      _delay_ms(DELAY);
+      PORTC.OUT = 0;
+     _delay_ms(DELAY);
+   }
+}