]> git.sur5r.net Git - cc65/commitdiff
fixed up the rest of the tests, added rudimentary makefile(s)
authormrdudz <mrdudz@users.noreply.github.com>
Sat, 22 Nov 2014 17:28:05 +0000 (18:28 +0100)
committermrdudz <mrdudz@users.noreply.github.com>
Sat, 22 Nov 2014 17:28:05 +0000 (18:28 +0100)
36 files changed:
test/.gitignore
test/Makefile [new file with mode: 0644]
test/err/Makefile [new file with mode: 0644]
test/ref/8q.c
test/ref/Makefile [new file with mode: 0644]
test/ref/cc65080227.c
test/ref/cc65080328.c
test/ref/cc65090111.c
test/ref/cc65090124.c
test/ref/cc65090726.c
test/ref/cc65090910.c
test/ref/cc65090913.c
test/ref/cc65091007.c
test/ref/cc65091022.c
test/ref/cc65110211.c
test/ref/cf.c
test/ref/cf.in [new file with mode: 0755]
test/ref/charconst.c
test/ref/common.h [new file with mode: 0644]
test/ref/cvt.c
test/ref/fields.c
test/ref/init.c
test/ref/minimal.c
test/ref/otccex.c
test/ref/paranoia.c
test/ref/pointer2.c
test/ref/spill.c
test/ref/stdarg.c
test/ref/struct.c
test/ref/switch.c
test/ref/wf1.c
test/ref/wf1.in [new file with mode: 0644]
test/ref/yacc.c
test/ref/yacc.in [new file with mode: 0755]
test/ref/yacc2.c
test/val/Makefile

index 5baabe90055b10f22765d2935793c3a969f03194..ccdd4aef5511699c7b790c90ad2c906f80a98201 100644 (file)
@@ -1,2 +1,3 @@
 *.o
 *.prg
+*.out
diff --git a/test/Makefile b/test/Makefile
new file mode 100644 (file)
index 0000000..4c03f2c
--- /dev/null
@@ -0,0 +1,16 @@
+
+# toplevel makefile for the regression tests
+
+MAKE := make --no-print-dir
+
+.PHONY: all clean
+
+all:
+       @$(MAKE) -C val all
+       @$(MAKE) -C ref all
+       @$(MAKE) -C err all
+
+clean:
+       @$(MAKE) -C val clean
+       @$(MAKE) -C ref clean
+       @$(MAKE) -C err clean
diff --git a/test/err/Makefile b/test/err/Makefile
new file mode 100644 (file)
index 0000000..6f919b3
--- /dev/null
@@ -0,0 +1,42 @@
+
+# makefile for the tests that MUST NOT compile
+
+CC65FLAGS = -t sim6502
+
+CL65 := $(if $(wildcard ../../bin/cl65*),../../bin/cl65,cl65)
+SIM65 := $(if $(wildcard ../../bin/sim65*),../../bin/sim65,sim65)
+
+RM := rm -f
+
+.PHONY: all
+
+TESTS := $(patsubst %.c,%.prg,$(wildcard *.c))
+TESTS += $(patsubst %.c,%.o.prg,$(wildcard *.c))
+TESTS += $(patsubst %.c,%.os.prg,$(wildcard *.c))
+TESTS += $(patsubst %.c,%.osi.prg,$(wildcard *.c))
+TESTS += $(patsubst %.c,%.osir.prg,$(wildcard *.c))
+TESTS += $(patsubst %.c,%.oi.prg,$(wildcard *.c))
+TESTS += $(patsubst %.c,%.oir.prg,$(wildcard *.c))
+TESTS += $(patsubst %.c,%.or.prg,$(wildcard *.c))
+
+all: $(TESTS)
+
+%.prg: %.c
+       ! $(CL65) $(CC65FLAGS) $< -o $@
+%.o.prg: %.c
+       ! $(CL65) $(CC65FLAGS) $< -o $@
+%.os.prg: %.c
+       ! $(CL65) $(CC65FLAGS) $< -o $@
+%.osi.prg: %.c
+       ! $(CL65) $(CC65FLAGS) $< -o $@
+%.osir.prg: %.c
+       ! $(CL65) $(CC65FLAGS) $< -o $@
+%.oi.prg: %.c
+       ! $(CL65) $(CC65FLAGS) $< -o $@
+%.oir.prg: %.c
+       ! $(CL65) $(CC65FLAGS) $< -o $@
+%.or.prg: %.c
+       ! $(CL65) $(CC65FLAGS) $< -o $@
+clean:
+       @$(RM) *.o
+       @$(RM) *.prg
index afbe41c64c5350c2eeaf425e5647f89916c0989b..e8bd1ca2e82a11ec9102073516a0df6ef1a4b4fb 100644 (file)
@@ -4,6 +4,8 @@
   !!LICENCE!!     own, freely distributeable for non-profit. read CPYRIGHT.LCC
 */
 
+#include <stdio.h>
+
 int up[15], down[15], rows[8], x[8];
 void queens(int c);
 void print(void);
diff --git a/test/ref/Makefile b/test/ref/Makefile
new file mode 100644 (file)
index 0000000..85cbb9b
--- /dev/null
@@ -0,0 +1,62 @@
+
+# makefile for the regression tests that generate output which has to be
+# compared with reference output
+
+CC65FLAGS = -t sim6502
+SIM65FLAGS = -x 200000000
+
+CL65 := $(if $(wildcard ../../bin/cl65*),../../bin/cl65,cl65)
+SIM65 := $(if $(wildcard ../../bin/sim65*),../../bin/sim65,sim65)
+
+RM := rm -f
+
+.PHONY: all
+
+TESTS := $(patsubst %.c,%.prg,$(wildcard *.c))
+TESTS += $(patsubst %.c,%.o.prg,$(wildcard *.c))
+TESTS += $(patsubst %.c,%.os.prg,$(wildcard *.c))
+TESTS += $(patsubst %.c,%.osi.prg,$(wildcard *.c))
+TESTS += $(patsubst %.c,%.osir.prg,$(wildcard *.c))
+TESTS += $(patsubst %.c,%.oi.prg,$(wildcard *.c))
+TESTS += $(patsubst %.c,%.oir.prg,$(wildcard *.c))
+TESTS += $(patsubst %.c,%.or.prg,$(wildcard *.c))
+
+all: $(TESTS)
+
+%.prg: %.c
+       $(CL65) $(CC65FLAGS) $< -o $@
+       $(SIM65) $(SIM65FLAGS) $@ > $*.out
+
+%.o.prg: %.c
+       $(CL65) $(CC65FLAGS) $< -o $@
+       $(SIM65) $(SIM65FLAGS) $@ > $*.out
+
+%.os.prg: %.c
+       $(CL65) $(CC65FLAGS) $< -o $@
+       $(SIM65) $(SIM65FLAGS) $@ > $*.out
+
+%.osi.prg: %.c
+       $(CL65) $(CC65FLAGS) $< -o $@
+       $(SIM65) $(SIM65FLAGS) $@ > $*.out
+
+%.osir.prg: %.c
+       $(CL65) $(CC65FLAGS) $< -o $@
+       $(SIM65) $(SIM65FLAGS) $@ > $*.out
+
+%.oi.prg: %.c
+       $(CL65) $(CC65FLAGS) $< -o $@
+       $(SIM65) $(SIM65FLAGS) $@ > $*.out
+
+%.oir.prg: %.c
+       $(CL65) $(CC65FLAGS) $< -o $@
+       $(SIM65) $(SIM65FLAGS) $@ > $*.out
+
+%.or.prg: %.c
+       $(CL65) $(CC65FLAGS) $< -o $@
+       $(SIM65) $(SIM65FLAGS) $@ > $*.out
+
+clean:
+       @$(RM) *.o
+       @$(RM) *.prg
+       @$(RM) *.out
+       @$(RM) *.ref
index 4dd454b9866d24b8ca906837d35fcc6023572cae..78afbb2c23f6e58ba8bd14e64442e15447fd5501 100644 (file)
@@ -5,6 +5,8 @@
   !!AUTHOR!!
 */
 
+#include <stdio.h>
+
 long a;  /* must be static life */
 long b;  /* must be static life */
 
index 11ef735149d4d27abdd2e10dfb4bb21f181c3389..630638f3d08eefc140bcf4c4924f486ef951a30f 100644 (file)
@@ -13,6 +13,8 @@ optimizations. If I remove the struct inside f() it compiles fine ?!?
 Best, Oliver
 */
 
+#include <stdio.h>
+
 void f(void){struct{int i;}d;}
 struct{void(*p)(void);}s={f};
 
index f515716f7308c76566c17e01eda4edbc88cf4d50..be889a6088fc57dd9a3680a5cbad1514d5ec07da 100644 (file)
@@ -5,6 +5,8 @@
   !!AUTHOR!!
 */
 
+#include <stdio.h>
+
 /*
 cc65 doesn't compile this, if i use the "-O"-option.
 but it works with "while(!0)"; instead of  "for(;;);"
index fef22268f00bea6a8818d231c4e245f08a6eec56..3f8279b276362d99d7e23e12809a4466a27e665a 100644 (file)
@@ -5,6 +5,8 @@
   !!AUTHOR!!
 */
 
+#include <stdio.h>
+
 /*
 there is a bug in the preprocessor (i think) ... the following works 
 (compiles) correctly:
index fb4773afb1715d34101f76ab36958e8e5da5ecbe..b260f0afd1081cc4aa55ace3ee010842028e0e0c 100644 (file)
@@ -5,6 +5,8 @@
   !!AUTHOR!!
 */
 
+#include "common.h"
+
 struct Record {
   struct Record *PtrComp;
   int x;
index c8e5ce9344b1d68499ccb9057369b1636eeb1f9a..6ac5d9dcb757fcd39ea7bb5b5a4cb1215ef069c3 100644 (file)
@@ -5,6 +5,8 @@
   !!AUTHOR!!      Oliver Schmidt
 */
 
+#include <stdio.h>
+
 /*
 After spending a "little" time I finally succeeded in isolating an
 (maybe THE) optimizer bug causing Contiki to fail.
index a319fec50dabdee49e7e7eda2560af1b212999a7..da6e37ef3ae80394c14a8ee3ec1db89755084438 100644 (file)
@@ -18,6 +18,8 @@
 
 */
 
+#include <stdio.h>
+
 int foo=0,bar=2;
 
 int main(void)
index 1c69e02f902dc2baa99add4defc041226c35b2e8..31f725f8b99ecacc2ef808d98a79a031b975a7be 100644 (file)
@@ -5,6 +5,8 @@
   !!AUTHOR!!      Johan Kotlinski
 */
 
+#include <stdio.h>
+
 /*
 This produces the compiler error "test.c(9): Error: Assignment to const"
 Shouldn't be an error, should it? baz is const, bar isn't.
index 2222539923bad91a2fcdd4f6d23f88f8fa1e5fd8..25d197c1180d66b4620e3bf39f3f76eedd8b9bcf 100644 (file)
@@ -5,6 +5,8 @@
   !!AUTHOR!!      Johan Kotlinski
 */
 
+#include <stdio.h>
+
 /*
 ...gives "test.c(2): Error: Variable `foo' has unknown size" using -Cl.
 Is it really unknown?
index 76b3f4a70fe582cdb3d6f99c9f5079b937e93110..83be84b67712e344d4b9dfaf711211352930e28f 100644 (file)
@@ -8,6 +8,8 @@
     test2 and test3 will result in an endless loop (SVN version: 4974M)
 */
 
+#include <stdio.h>
+
 #define OPENTEST()
 #define CLOSETEST()
 
index 951f31295e8651cbf2b10d280517b3a8057ff892..66fb42b1042ac1c86fc0780e8d13632b8a4a78c2 100644 (file)
@@ -8,11 +8,16 @@
         cf - print character frequencies
 */
 
+#include "common.h"
+
 #include <stdlib.h>
 #include <stdio.h>
 #include <ctype.h>
 
+FILE *in;
+
 #define INFILE   "cf.in"
+#define GETCHAR() fgetc(in)
 
 #ifndef NO_FLOATS
 float f[0x100];
@@ -35,6 +40,11 @@ char *argv[];
         signed cutoff;
 #endif
 
+        in = fopen(INFILE, "rb");
+        if (in == NULL) {
+            return EXIT_FAILURE;
+        }
+
        if (argc <= 1)
 #ifndef NO_FLOATS
                cutoff = 0.0;
@@ -176,6 +186,6 @@ char *argv[];
 #endif
                }
     }
-
+    fclose(in);
     return 0;
 }
diff --git a/test/ref/cf.in b/test/ref/cf.in
new file mode 100755 (executable)
index 0000000..1b0a6f2
--- /dev/null
@@ -0,0 +1,19 @@
+start cf.input >
+The sky above the port was the color of television, tuned
+to a dead channel.
+"It's not like I'm using," Case heard someone say, as he
+shouldered his way through the crowd around the door of the
+Chat. "It's like my body's developed this massive drug deficiency."
+It was a Sprawl voice and a Sprawl joke. The Chatsubo
+was a bar for professional expatriates; you could drink there
+for a week and never hear two words in Japanese.
+Ratz was tending bar, his prosthetic arm jerking monotonously
+as he filled a tray of glasses with draft Kirin. He saw
+Case and smiled, his teeth a web work of East European steel
+and brown decay. Case found a place at the bar, between the
+unlikely tan on one of Lonny Zone's whores and the crisp naval
+uniform of a tall African whose cheekbones were ridged with
+Joe boys," Ratz said, shoving a draft across the bar with his
+good hand. "Maybe some business with you, Case?"
+Case shrugged. The girl to his right giggled and nudged
+< end cf.input
\ No newline at end of file
index 1aa9f8e3f6bae26ed7e9d9ea0dd4cd30b030288e..65ebc70be5bd479dbf2a67a5221dca388ef6868c 100644 (file)
@@ -4,6 +4,7 @@
   !!LICENCE!!     Public Domain
 */
 
+#include "common.h"
 #include <limits.h>
 #include <ctype.h>
 
diff --git a/test/ref/common.h b/test/ref/common.h
new file mode 100644 (file)
index 0000000..dada61a
--- /dev/null
@@ -0,0 +1,22 @@
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#define NO_OLD_FUNC_DECL
+#define NO_TYPELESS_INT
+#define NO_TYPELESS_INT_PTR
+#define MAIN_RETURNS_INT
+#define NO_IMPLICIT_FUNC_PROTOTYPES
+#define NO_FLOATS
+#define NO_WCHAR
+#define NO_EMPTY_FUNC_ARGS
+#define NO_SLOPPY_STRUCT_INIT
+#define NO_FUNCS_TAKE_STRUCTS
+#define NO_FUNCS_RETURN_STRUCTS
+#define CAST_STRUCT_PTR
+#define NO_TYPELESS_STRUCT_PTR
+#define NO_IMPLICIT_FUNCPTR_CONV
+#define SIZEOF_INT_16BIT
+#define SIZEOF_LONG_32BIT
+#define UNSIGNED_CHARS
+#define UNSIGNED_BITFIELDS
index ed7b6084eba8348b7dd65010596e9a32027e06a6..841c1b3b20ca39ef51761cc23c98f3e5add0a4ee 100644 (file)
@@ -4,6 +4,9 @@
   !!LICENCE!!     own, freely distributeable for non-profit. read CPYRIGHT.LCC
 */
 
+#include "common.h"
+#include <stdio.h>
+
 signed char c;
 signed short s;
 signed int i;
index 794a819240b588aa1c174b9cbe98f2f5083e9264..83bee82b7a02ad3c4166f4e40db9f186dcf675c0 100644 (file)
@@ -4,6 +4,8 @@
   !!LICENCE!!     own, freely distributeable for non-profit. read CPYRIGHT.LCC
 */
 
+#include "common.h"
+
 #ifdef NO_BITFIELDS
 
 main()
index dc3f28a81473445d8d1ea574501722258187ac04..5a581675318dc39af59782ce50ee09a94b810d9f 100644 (file)
@@ -4,12 +4,13 @@
   !!LICENCE!!     own, freely distributeable for non-profit. read CPYRIGHT.LCC\r
 */\r
 \r
+#include "common.h"\r
 /* todo: add back conditional stuff here ! */\r
 \r
 typedef struct { int codes[3]; char name[6]; } Word;\r
 \r
-#ifdef NO_IMPLICIT_FUNC_PROTOTYPES
-
+#ifdef NO_IMPLICIT_FUNC_PROTOTYPES\r
+\r
 #ifdef NO_OLD_FUNC_DECL\r
 f();\r
 void g(Word *p);\r
@@ -42,8 +43,8 @@ Word words[] = {
 \r
 /*int x[][5] = { 1, 2, 3, 4, 0, { 5, 6 }, { 7 } };*/\r
 int x[][5] = { {1, 2, 3, 4, 0 }, { 5, 6 }, { 7 } };\r
-int *y[] = { x[0], x[1], x[2], 0 };
-
+int *y[] = { x[0], x[1], x[2], 0 };\r
+\r
 main()\r
 {\r
        int i, j;\r
index 5aa3c5f4f869615f1838bb55ad56c86e8be89fc5..b2e2d9d8f7901f050a58b38216b8fc0a186b963f 100644 (file)
@@ -5,6 +5,8 @@
   !!AUTHOR!!      Groepaz/Hitmen
 */
 
+#include <stdio.h>
+
 int main(void)
 {
 #if 1
index a967e4805cf2d445fb97096d08c9cebf5cfe3927..f3d6c71ec542c128c9ecec3a504d4ec35d0e9c86 100644 (file)
@@ -4,6 +4,8 @@
   !!LICENCE!!     GPL (?), read COPYING.GPL
 */
 
+#include "common.h"
+
 /*
  * Sample OTCC C example. You can uncomment the first line and install
  * otcc in /usr/local/bin to make otcc scripts !  
index 3616c9391b34003a3133a9b0e018829f171c962c..e9a47dd717c3e8b2e442a510b2072cf6b0552f2f 100644 (file)
@@ -4,11 +4,14 @@
   !!LICENCE!!     own, freely distributeable for non-profit. read CPYRIGHT.LCC
 */
 
+#include "common.h"
+
 #ifdef NO_FLOATS
 
 main()
 {
         printf("NO_FLOATS\n\r");
+        return 0;
 }
 
 #else
index 69d04a989492d96f8b26e3fdde8271449acaf079..d8c064ef3fbbfc36991fb4dbe36c3d6ef45273a0 100644 (file)
@@ -4,6 +4,7 @@
   !!LICENCE!!     public domain\r
 */\r
 \r
+#include "common.h"\r
 #include <stdio.h>\r
 \r
 /*\r
@@ -101,11 +102,11 @@ static void test30(void)
   cc65 seems to have problems here aswell ;/\r
 */\r
 \r
-int main(void) {
+int main(void) {\r
        test1();\r
        test2();\r
        test30();\r
        test31();\r
 /*     test32(); */\r
-       return 0;
+       return 0;\r
 }\r
index 2aedf0c8c9ac91e117aa5d33f6b55441927c4bce..56b03d6a7dadd81219c456ddbe9e4ecdfa34e10a 100644 (file)
@@ -4,6 +4,7 @@
   !!LICENCE!!     own, freely distributeable for non-profit. read CPYRIGHT.LCC
 */
 
+#include "common.h"
 #include <stdio.h>
 
 int main(void)
index b476cf338b3277a6e116959ea3fde5a7f7f16e6a..295a2ccade7e1090174735ce9cf293e94b0f2a23 100644 (file)
@@ -4,6 +4,7 @@
   !!LICENCE!!     own, freely distributeable for non-profit. read CPYRIGHT.LCC
 */
 
+#include "common.h"
 #include <stdarg.h>
 
 #ifndef NO_FUNCS_TAKE_STRUCTS
index ccd74953f1fc9b6105cda0cfcfd26fcd75ba7d4f..a0f181e96e6d5b54fbb000ef0a8114963656d8b8 100644 (file)
@@ -4,6 +4,8 @@
   !!LICENCE!!     own, freely distributeable for non-profit. read CPYRIGHT.LCC
 */
 
+#include "common.h"
+
 typedef struct point { int x,y; } point;
 typedef struct rect { point pt1, pt2; } rect;
 
index 1fc315d901d3050f07491432ad51b9d8a1fe4c23..0821d29ee67d3a5f683d617e2d9563607c62927e 100644 (file)
@@ -4,6 +4,7 @@
   !!LICENCE!!     own, freely distributeable for non-profit. read CPYRIGHT.LCC
 */
 
+#include "common.h"
 #include <limits.h>
 
 #ifdef NO_IMPLICIT_FUNC_PROTOTYPES
index 3e9c80fb2b14357626073e6ff9e0ef793a8d3a39..0539d83989b8fbfae825c424624184ab0d481a3c 100644 (file)
@@ -11,6 +11,9 @@
 
 #define MAXWORDS 250
 
+FILE *in;
+#define getchar() fgetc(in)
+
 struct node
 {
        int count;              /* frequency count */
@@ -122,11 +125,17 @@ int main(void)
        struct node *root;
        char word[20];
 
+        in = fopen("wf1.in","rb");
+        if (in == NULL) {
+            return EXIT_FAILURE;
+        }
+
        root = 0;
        next = 0;
        while (getword(word))
                lookup(word, &root)->count++;
        tprint(root);
 
+        fclose(in);
         return 0;
 }
diff --git a/test/ref/wf1.in b/test/ref/wf1.in
new file mode 100644 (file)
index 0000000..3e50fba
--- /dev/null
@@ -0,0 +1,17 @@
+The sky above the port was the color of television, tuned
+to a dead channel.
+"It's not like I'm using," Case heard someone say, as he
+shouldered his way through the crowd around the door of the
+Chat. "It's like my body's developed this massive drug deficiency."
+It was a Sprawl voice and a Sprawl joke. The Chatsubo
+was a bar for professional expatriates; you could drink there
+for a week and never hear two words in Japanese.
+Ratz was tending bar, his prosthetic arm jerking monotonously
+as he filled a tray of glasses with draft Kirin. He saw
+Case and smiled, his teeth a web work of East European steel
+and brown decay. Case found a place at the bar, between the
+unlikely tan on one of Lonny Zone's whores and the crisp naval
+uniform of a tall African whose cheekbones were ridged with
+Joe boys," Ratz said, shoving a draft across the bar with his
+good hand. "Maybe some business with you, Case?"
+Case shrugged. The girl to his right giggled and nudged
index 3baefd348d50c0f7d730b0f028b80514747a2886..5768f80d00b5fb5708c8db6aa58018ecb0e68882 100644 (file)
@@ -6,6 +6,8 @@
 
 /*#define STANDALONE*/
 
+#include "common.h"
+
 #ifndef YACCDBG
 
 #include <stdio.h>
@@ -19,6 +21,9 @@
 
 #endif
 
+FILE *infile, *outfile;
+#define getchar() fgetc(infile)
+
 /* hack the original tables to work with both petscii and ascii */
 #define CHARSETHACK
 
@@ -61,7 +66,6 @@ int yymorfg;
 extern char *yysptr, yysbuf[];
 int yytchar;
 
-/*FILE *yyin ={stdin}, *yyout ={stdout};*/
 #define yyin  infile
 #define yyout outfile
 
@@ -665,7 +669,13 @@ yyunput(c)
 main() 
 {
         printf("main start\n");
+        infile = fopen("yacc.in","rb");
+        if (infile == NULL) {
+            return EXIT_FAILURE;
+        }
+        outfile = stdout;
         yyparse();
+        fclose(infile);
         printf("main end\n");
         return 0;
 }
diff --git a/test/ref/yacc.in b/test/ref/yacc.in
new file mode 100755 (executable)
index 0000000..0b89df5
--- /dev/null
@@ -0,0 +1 @@
+x=(e+1)*3/(3+7)
index c62fca34aaa188667c81557af2f7d655b4feae3b..78d654deda466b04d5ccf52401304e75609d7efd 100644 (file)
@@ -5,6 +5,8 @@
   !!AUTHOR!!      Groepaz/Hitmen
 */
 
+#include <stdio.h>
+
 # define YYTYPE char
 struct yywork 
 { 
index 5f93e1c34776f40e9a8a0d818b66f169936e4c10..0e4a6e94cf277cdad760595c5bbe6aecee6765b0 100644 (file)
@@ -1,5 +1,8 @@
 
+# makefile for the regression tests that return an error code on failure
+
 CC65FLAGS = -t sim6502
+SIM65FLAGS = -x 200000000
 
 CL65 := $(if $(wildcard ../../bin/cl65*),../../bin/cl65,cl65)
 SIM65 := $(if $(wildcard ../../bin/sim65*),../../bin/sim65,sim65)
@@ -21,35 +24,35 @@ all: $(TESTS)
 
 %.prg: %.c
        $(CL65) $(CC65FLAGS) $< -o $@
-       $(SIM65) $@
+       $(SIM65) $(SIM65FLAGS) $@
 
 %.o.prg: %.c
        $(CL65) $(CC65FLAGS) $< -o $@
-       $(SIM65) $@
+       $(SIM65) $(SIM65FLAGS) $@
 
 %.os.prg: %.c
        $(CL65) $(CC65FLAGS) $< -o $@
-       $(SIM65) $@
+       $(SIM65) $(SIM65FLAGS) $@
 
 %.osi.prg: %.c
        $(CL65) $(CC65FLAGS) $< -o $@
-       $(SIM65) $@
+       $(SIM65) $(SIM65FLAGS) $@
 
 %.osir.prg: %.c
        $(CL65) $(CC65FLAGS) $< -o $@
-       $(SIM65) $@
+       $(SIM65) $(SIM65FLAGS) $@
 
 %.oi.prg: %.c
        $(CL65) $(CC65FLAGS) $< -o $@
-       $(SIM65) $@
+       $(SIM65) $(SIM65FLAGS) $@
 
 %.oir.prg: %.c
        $(CL65) $(CC65FLAGS) $< -o $@
-       $(SIM65) $@
+       $(SIM65) $(SIM65FLAGS) $@
 
 %.or.prg: %.c
        $(CL65) $(CC65FLAGS) $< -o $@
-       $(SIM65) $@
+       $(SIM65) $(SIM65FLAGS) $@
 
 clean:
        @$(RM) *.o