@$(MAKE) -C err clean all
        @$(MAKE) -C misc clean all
 
+continue: $(WORKDIR)/bdiff$(EXE)
+       @$(MAKE) -C val all
+       @$(MAKE) -C ref all
+       @$(MAKE) -C err all
+       @$(MAKE) -C misc all
+
 clean:
        @$(MAKE) -C val clean
        @$(MAKE) -C ref clean
 
 $(WORKDIR)/%.prg: %.c
        ! $(CL65) $(CC65FLAGS) $< -o $@
 $(WORKDIR)/%.o.prg: %.c
-       ! $(CL65) $(CC65FLAGS) $< -o $@
+       ! $(CL65) -O $(CC65FLAGS) $< -o $@
 $(WORKDIR)/%.os.prg: %.c
-       ! $(CL65) $(CC65FLAGS) $< -o $@
+       ! $(CL65) -Os $(CC65FLAGS) $< -o $@
 $(WORKDIR)/%.osi.prg: %.c
-       ! $(CL65) $(CC65FLAGS) $< -o $@
+       ! $(CL65) -Osi $(CC65FLAGS) $< -o $@
 $(WORKDIR)/%.osir.prg: %.c
-       ! $(CL65) $(CC65FLAGS) $< -o $@
+       ! $(CL65) -Osir $(CC65FLAGS) $< -o $@
 $(WORKDIR)/%.oi.prg: %.c
-       ! $(CL65) $(CC65FLAGS) $< -o $@
+       ! $(CL65) -Oi $(CC65FLAGS) $< -o $@
 $(WORKDIR)/%.oir.prg: %.c
-       ! $(CL65) $(CC65FLAGS) $< -o $@
+       ! $(CL65) -Oir $(CC65FLAGS) $< -o $@
 $(WORKDIR)/%.or.prg: %.c
-       ! $(CL65) $(CC65FLAGS) $< -o $@
+       ! $(CL65) -Or $(CC65FLAGS) $< -o $@
 clean:
        @$(RM) $(TESTS)
        @$(RM) $(patsubst %.c,$(WORKDIR)/%.o,$(wildcard *.c))
 
 TESTS += $(patsubst %.c,$(WORKDIR)/%.oir.prg,$(wildcard *.c))
 TESTS += $(patsubst %.c,$(WORKDIR)/%.or.prg,$(wildcard *.c))
 
+# FIXME: actually use/build differently optimized programs here
+
 all: $(TESTS)
 
 # should compile, but then hangs in an endless loop
 
        $(DIFF) $(WORKDIR)/$*.out $(WORKDIR)/$*.ref
 
 $(WORKDIR)/%.o.prg: %.c $(WORKDIR)/%.ref
-       $(CL65) $(CC65FLAGS) $< -o $@
+       $(CL65) -O $(CC65FLAGS) $< -o $@
        $(SIM65) $(SIM65FLAGS) $@ > $(WORKDIR)/$*.out
        $(DIFF) $(WORKDIR)/$*.out $(WORKDIR)/$*.ref
 
 $(WORKDIR)/%.os.prg: %.c $(WORKDIR)/%.ref
-       $(CL65) $(CC65FLAGS) $< -o $@
+       $(CL65) -Os $(CC65FLAGS) $< -o $@
        $(SIM65) $(SIM65FLAGS) $@ > $(WORKDIR)/$*.out
        $(DIFF) $(WORKDIR)/$*.out $(WORKDIR)/$*.ref
 
 $(WORKDIR)/%.osi.prg: %.c $(WORKDIR)/%.ref
-       $(CL65) $(CC65FLAGS) $< -o $@
+       $(CL65) -Osi $(CC65FLAGS) $< -o $@
        $(SIM65) $(SIM65FLAGS) $@ > $(WORKDIR)/$*.out
        $(DIFF) $(WORKDIR)/$*.out $(WORKDIR)/$*.ref
 
 $(WORKDIR)/%.osir.prg: %.c $(WORKDIR)/%.ref
-       $(CL65) $(CC65FLAGS) $< -o $@
+       $(CL65) -Osir $(CC65FLAGS) $< -o $@
        $(SIM65) $(SIM65FLAGS) $@ > $(WORKDIR)/$*.out
        $(DIFF) $(WORKDIR)/$*.out $(WORKDIR)/$*.ref
 
 $(WORKDIR)/%.oi.prg: %.c $(WORKDIR)/%.ref
-       $(CL65) $(CC65FLAGS) $< -o $@
+       $(CL65) -Oi $(CC65FLAGS) $< -o $@
        $(SIM65) $(SIM65FLAGS) $@ > $(WORKDIR)/$*.out
        $(DIFF) $(WORKDIR)/$*.out $(WORKDIR)/$*.ref
 
 $(WORKDIR)/%.oir.prg: %.c $(WORKDIR)/%.ref
-       $(CL65) $(CC65FLAGS) $< -o $@
+       $(CL65) -Oir $(CC65FLAGS) $< -o $@
        $(SIM65) $(SIM65FLAGS) $@ > $(WORKDIR)/$*.out
        $(DIFF) $(WORKDIR)/$*.out $(WORKDIR)/$*.ref
 
 $(WORKDIR)/%.or.prg: %.c $(WORKDIR)/%.ref
-       $(CL65) $(CC65FLAGS) $< -o $@
+       $(CL65) -Or $(CC65FLAGS) $< -o $@
        $(SIM65) $(SIM65FLAGS) $@ > $(WORKDIR)/$*.out
        $(DIFF) $(WORKDIR)/$*.out $(WORKDIR)/$*.ref
 
 
        $(SIM65) $(SIM65FLAGS) $@
 
 $(WORKDIR)/%.o.prg: %.c
-       $(CL65) $(CC65FLAGS) $< -o $@
+       $(CL65) -O $(CC65FLAGS) $< -o $@
        $(SIM65) $(SIM65FLAGS) $@
 
 $(WORKDIR)/%.os.prg: %.c
-       $(CL65) $(CC65FLAGS) $< -o $@
+       $(CL65) -Os $(CC65FLAGS) $< -o $@
        $(SIM65) $(SIM65FLAGS) $@
 
 $(WORKDIR)/%.osi.prg: %.c
-       $(CL65) $(CC65FLAGS) $< -o $@
+       $(CL65) -Osi $(CC65FLAGS) $< -o $@
        $(SIM65) $(SIM65FLAGS) $@
 
 $(WORKDIR)/%.osir.prg: %.c
-       $(CL65) $(CC65FLAGS) $< -o $@
+       $(CL65) -Osir $(CC65FLAGS) $< -o $@
        $(SIM65) $(SIM65FLAGS) $@
 
 $(WORKDIR)/%.oi.prg: %.c
-       $(CL65) $(CC65FLAGS) $< -o $@
+       $(CL65) -Oi $(CC65FLAGS) $< -o $@
        $(SIM65) $(SIM65FLAGS) $@
 
 $(WORKDIR)/%.oir.prg: %.c
-       $(CL65) $(CC65FLAGS) $< -o $@
+       $(CL65) -Oir $(CC65FLAGS) $< -o $@
        $(SIM65) $(SIM65FLAGS) $@
 
 $(WORKDIR)/%.or.prg: %.c
-       $(CL65) $(CC65FLAGS) $< -o $@
+       $(CL65) -Or $(CC65FLAGS) $< -o $@
        $(SIM65) $(SIM65FLAGS) $@
 
 clean: