--- /dev/null
+# makefile
+
+OBJS = main.o uart.o i2c.o bus.o mem.o io.o cpm.o
+OBJS += monitor/monitor.o monitor/slots.o monitor/ihex.o
+
+CC = avr-gcc
+OBJCOPY = avr-objcopy
+AVRDUDE = sudo avrdude
+
+CFLAGS = -std=gnu99 -mmcu=atmega328p -DF_CPU=16000000 -Os
+
+all: main.hex
+
+flash: main.hex
+ @echo -e "\tFLASH"
+ @$(AVRDUDE) -y -p m328p -c usbasp -U flash:w:main.hex
+
+main.hex: main.elf
+ @echo -e "\tOBJCOPY\t$@"
+ @$(OBJCOPY) -O ihex -R .eeprom main.elf main.hex
+
+main.elf: $(OBJS)
+ @echo -e "\tLD\t$@"
+ @$(CC) $(CFLAGS) -o main.elf $(OBJS)
+
+%.o: %.c
+ @echo -e "\tCC\t$@"
+ @$(CC) $(CFLAGS) -c -o $@ $^
+
+clean:
+ @echo -e "\tCLEAN"
+ @rm -f $(OBJS) main.elf main.hex
+
+.PHONY: clean