@echo "FIXME: " $@ "currently will fail."
        -$(CL65) $(subst .,,$(*:.o%=-O%)) $(CC65FLAGS) $< -o $@
 #      -$(SIM65) $(SIM65FLAGS) $@
+$(WORKDIR)/cc65141011%prg: cc65141011.c
+       @echo "FIXME: " $@ "currently will fail."
+       $(CL65) $(subst .,,$(*:.o%=-O%)) $(CC65FLAGS) $< -o $@
+       -$(SIM65) $(SIM65FLAGS) $@
 
 clean:
        -@$(call DEL,$(TESTS))
 
--- /dev/null
+
+/*
+  !!DESCRIPTION!! equality problem
+  !!ORIGIN!!      Testsuite
+  !!LICENCE!!     Public Domain
+*/
+
+/*
+    different result depending on whether constant is on left or right side
+
+    http://www.cc65.org/mailarchive/2014-10/11680.html
+    http://www.cc65.org/mailarchive/2014-10/11683.html
+*/
+
+#include <stdlib.h>
+#include <stdio.h>
+
+static unsigned char fails = 4;
+static unsigned char bad[3], good[3];
+
+int main(int n, char **args)
+{
+    unsigned char joy_state = 0x7e;
+    unsigned a, b;
+
+    /* NOTE: somehow it only fails in the printf statement, the other stuff
+             below works! */
+    printf("bad: %u\n", 0 == (joy_state & 1) );
+    printf("good: %u\n", (joy_state & 1) == 0 );
+
+    sprintf(bad, "%u", 0 == (joy_state & 1) );
+    sprintf(good, "%u", (joy_state & 1) == 0 );
+
+    printf("bad: %u\n", bad[0] - '0' );
+    printf("good: %u\n", good[0] - '0' );
+
+    fails -= bad[0] - '0';
+    fails -= good[0] - '0';
+
+    if (0 == (joy_state & 1)) fails--;
+    if ((joy_state & 1) == 0) fails--;
+
+    printf("fails: %u\n", fails );
+
+    a = 0 == (joy_state & 1);
+    b = (joy_state & 1) == 0;
+
+    printf("a: %u\n", a );
+    printf("b: %u\n", b );
+
+    return fails;
+}
 
--- /dev/null
+
+/*
+  !!DESCRIPTION!! forgetting to emit labels
+  !!ORIGIN!!      Testsuite
+  !!LICENCE!!     Public Domain
+*/
+
+/*
+    http://www.cc65.org/mailarchive/2014-10/11673.html
+    http://www.cc65.org/mailarchive/2014-10/11675.html
+*/
+
+#include <stdlib.h>
+#include <stdio.h>
+
+struct udata {
+        int     (*u_sigvec[16])();
+        int     u_argn;
+        int     u_argn1;
+};
+
+struct udata udata;
+
+#define sig (int)udata.u_argn
+#define func (int (*)())udata.u_argn1
+
+int _signal(void)
+{
+        if (func != 0) {
+                goto nogood;
+        }
+        udata.u_sigvec[sig] = func;
+        return 0;
+
+nogood:
+        return (-1);
+}
+
+int main(int n,char **args)
+{
+    _signal();
+    printf("it works\n");
+
+    return 0;
+}
 
--- /dev/null
+
+/*
+  !!DESCRIPTION!! struct base address dereferencing bug
+  !!ORIGIN!!      Testsuite
+  !!LICENCE!!     Public Domain
+*/
+
+#include <stdlib.h>
+#include <stdio.h>
+
+struct yywork
+{
+        char verify, advance;
+} yycrank[] =
+{
+        {0,0}
+};
+
+struct yysvf
+{
+        struct yywork *yystoff;
+};
+
+unsigned char fails = 0;
+
+int main(int n, char **args)
+{
+    struct yysvf *yystate;
+    struct yywork *yyt;
+
+    yystate->yystoff = yycrank;
+    yyt = yystate->yystoff;
+
+    if(yyt == yycrank) {
+        printf("yyt == yycrank (ok)\n");
+    } else {
+        printf("yyt != yycrank (fail)\n");
+        ++fails;
+    }
+
+    if(yyt == yystate->yystoff) {
+        printf("yyt == yystate->yystoff (ok)\n");
+    } else {
+        printf("yyt != yystate->yystoff (fail)\n");
+        ++fails;
+    }
+
+    if(yycrank == yystate->yystoff) {
+        printf("yycrank == yystate->yystoff (ok)\n");
+    } else {
+        printf("yycrank != yystate->yystoff (fail)\n");
+        ++fails;
+    }
+
+    printf("fails: %d\n", fails);
+    return fails;
+}