summaryrefslogtreecommitdiff
path: root/sim/ucsim/tlcs.src/test
diff options
context:
space:
mode:
authorXavier ASUS <xavi92psx@gmail.com>2019-10-18 00:31:54 +0200
committerXavier ASUS <xavi92psx@gmail.com>2019-10-18 00:31:54 +0200
commit268a53de823a6750d6256ee1fb1e7707b4b45740 (patch)
tree42c1799a9a82b2f7d9790ee9fe181d72a7274751 /sim/ucsim/tlcs.src/test
downloadsdcc-gas-268a53de823a6750d6256ee1fb1e7707b4b45740.tar.gz
sdcc-3.9.0 fork implementing GNU assembler syntax
This fork aims to provide better support for stm8-binutils
Diffstat (limited to 'sim/ucsim/tlcs.src/test')
-rw-r--r--sim/ucsim/tlcs.src/test/Makefile11
-rw-r--r--sim/ucsim/tlcs.src/test/b2385.c18
-rw-r--r--sim/ucsim/tlcs.src/test/b2385.mk3
-rw-r--r--sim/ucsim/tlcs.src/test/conf.cmd1
-rw-r--r--sim/ucsim/tlcs.src/test/dummy.h0
-rw-r--r--sim/ucsim/tlcs.src/test/run.cmd2
-rwxr-xr-xsim/ucsim/tlcs.src/test/run.sh7
-rw-r--r--sim/ucsim/tlcs.src/test/sdcc.mk43
-rw-r--r--sim/ucsim/tlcs.src/test/t0.c12
-rw-r--r--sim/ucsim/tlcs.src/test/t0.mk3
-rw-r--r--sim/ucsim/tlcs.src/test/t1.c37
-rw-r--r--sim/ucsim/tlcs.src/test/t1.mk3
-rw-r--r--sim/ucsim/tlcs.src/test/t2.c36
-rw-r--r--sim/ucsim/tlcs.src/test/t2.mk3
-rw-r--r--sim/ucsim/tlcs.src/test/t3.c17
-rw-r--r--sim/ucsim/tlcs.src/test/t3.mk3
16 files changed, 199 insertions, 0 deletions
diff --git a/sim/ucsim/tlcs.src/test/Makefile b/sim/ucsim/tlcs.src/test/Makefile
new file mode 100644
index 0000000..0db0fb2
--- /dev/null
+++ b/sim/ucsim/tlcs.src/test/Makefile
@@ -0,0 +1,11 @@
+PRJ = t0 t1 t2 t3 b2385
+
+all:
+ for p in $(PRJ); do \
+ $(MAKE) -f $$p.mk ;\
+ done
+
+clean:
+ for p in $(PRJ); do \
+ $(MAKE) -f $$p.mk clean ;\
+ done
diff --git a/sim/ucsim/tlcs.src/test/b2385.c b/sim/ucsim/tlcs.src/test/b2385.c
new file mode 100644
index 0000000..2af8aed
--- /dev/null
+++ b/sim/ucsim/tlcs.src/test/b2385.c
@@ -0,0 +1,18 @@
+struct ts { int a; };
+
+typedef struct ts *pts;
+
+pts s;
+
+int test(void)
+{
+ pts ps;
+ ps= s;
+ //return ps->a; // GOOD
+ return (ps= s)->a; // FAIL
+}
+
+void main(void)
+{
+ test();
+}
diff --git a/sim/ucsim/tlcs.src/test/b2385.mk b/sim/ucsim/tlcs.src/test/b2385.mk
new file mode 100644
index 0000000..f3c4ba4
--- /dev/null
+++ b/sim/ucsim/tlcs.src/test/b2385.mk
@@ -0,0 +1,3 @@
+MAIN = b2385
+
+include sdcc.mk
diff --git a/sim/ucsim/tlcs.src/test/conf.cmd b/sim/ucsim/tlcs.src/test/conf.cmd
new file mode 100644
index 0000000..29c9c01
--- /dev/null
+++ b/sim/ucsim/tlcs.src/test/conf.cmd
@@ -0,0 +1 @@
+set hw simif nas 0x7fff
diff --git a/sim/ucsim/tlcs.src/test/dummy.h b/sim/ucsim/tlcs.src/test/dummy.h
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/sim/ucsim/tlcs.src/test/dummy.h
diff --git a/sim/ucsim/tlcs.src/test/run.cmd b/sim/ucsim/tlcs.src/test/run.cmd
new file mode 100644
index 0000000..972da4f
--- /dev/null
+++ b/sim/ucsim/tlcs.src/test/run.cmd
@@ -0,0 +1,2 @@
+run
+state
diff --git a/sim/ucsim/tlcs.src/test/run.sh b/sim/ucsim/tlcs.src/test/run.sh
new file mode 100755
index 0000000..eb223eb
--- /dev/null
+++ b/sim/ucsim/tlcs.src/test/run.sh
@@ -0,0 +1,7 @@
+PRJ=$1
+
+if [ -z "$PRJ" ]; then
+ PRJ=t1
+fi
+
+../stlcs -C conf.cmd ${PRJ}.ihx <run.cmd
diff --git a/sim/ucsim/tlcs.src/test/sdcc.mk b/sim/ucsim/tlcs.src/test/sdcc.mk
new file mode 100644
index 0000000..a5470f2
--- /dev/null
+++ b/sim/ucsim/tlcs.src/test/sdcc.mk
@@ -0,0 +1,43 @@
+TARGET = tlcs90
+
+CC = sdcc -m$(TARGET)
+
+CPPFLAGS =
+CFLAGS = --fverbose-asm -DNO_VARARGS --debug
+LDFLAGS =
+LIBS =
+
+ALL = $(MAIN) $(OTHERS)
+OBJECTS = $(MAIN).rel $(OTHERS:=.rel)
+
+all: $(MAIN).hex
+
+dep: $(MAIN).dep
+
+$(MAIN).dep: $(OBJECTS:.rel=.c) *.h
+ @>$(MAIN).dep
+ @for c in $(OBJECTS:.rel=.c); do \
+ $(CC) -MM $(CPPFALGS) $$c >>$(MAIN).dep ;\
+ done
+
+include $(MAIN).dep
+
+$(MAIN).ihx: $(OBJECTS)
+ $(CC) $(CFLAGS) $(LDFLAGS) $(OBJECTS) -o $@
+
+.SUFFIXES: .rel .ihx .hex
+
+.c.rel:
+ $(CC) -c $(CPPFLAGS) $(CFLAGS) $<
+
+.ihx.hex:
+ packihx $< >$@
+
+clean:
+ rm -f $(ALL:=.rel) $(ALL:=.asm) $(ALL:=.lst) $(ALL:=.rst) $(ALL:=.sym) $(ALL:=.adb)
+ rm -f $(MAIN).ihx $(MAIN).hex $(MAIN).lk $(MAIN).map $(MAIN).mem $(MAIN).cdb $(MAIN).omf $(MAIN).noi
+ rm -f *~
+ rm -f $(MAIN).dep
+
+
+# End of sdcc.mk
diff --git a/sim/ucsim/tlcs.src/test/t0.c b/sim/ucsim/tlcs.src/test/t0.c
new file mode 100644
index 0000000..59cedb3
--- /dev/null
+++ b/sim/ucsim/tlcs.src/test/t0.c
@@ -0,0 +1,12 @@
+static unsigned char * volatile sif= (unsigned char *)0xffff;
+
+void main(void)
+{
+ unsigned int i, j;
+
+ for (i=0; i<0x2233; i++)
+ j= i;
+ *sif= 's';
+ for (;;)
+ ;
+}
diff --git a/sim/ucsim/tlcs.src/test/t0.mk b/sim/ucsim/tlcs.src/test/t0.mk
new file mode 100644
index 0000000..6f11fe4
--- /dev/null
+++ b/sim/ucsim/tlcs.src/test/t0.mk
@@ -0,0 +1,3 @@
+MAIN = t0
+
+include sdcc.mk
diff --git a/sim/ucsim/tlcs.src/test/t1.c b/sim/ucsim/tlcs.src/test/t1.c
new file mode 100644
index 0000000..071bf52
--- /dev/null
+++ b/sim/ucsim/tlcs.src/test/t1.c
@@ -0,0 +1,37 @@
+static unsigned char * volatile sif= (unsigned char *)0x7fff;
+
+volatile unsigned char x;
+
+void
+putchar(unsigned char c)
+{
+ *sif= 'p';
+ *sif= c;
+}
+
+void
+prints(char *s)
+{
+ while (*s)
+ putchar(*s++);
+}
+
+void
+main(void)
+{
+ unsigned char i;
+ unsigned int j;
+
+ prints("Start.\n");
+ for (j= 0; j<41000; j++)
+ {
+ x= j;
+ i= j;
+ putchar('a');
+ }
+
+ prints("Done.\n");
+ *sif= 's';
+ for (;;)
+ ;
+}
diff --git a/sim/ucsim/tlcs.src/test/t1.mk b/sim/ucsim/tlcs.src/test/t1.mk
new file mode 100644
index 0000000..dee0618
--- /dev/null
+++ b/sim/ucsim/tlcs.src/test/t1.mk
@@ -0,0 +1,3 @@
+MAIN = t1
+
+include sdcc.mk
diff --git a/sim/ucsim/tlcs.src/test/t2.c b/sim/ucsim/tlcs.src/test/t2.c
new file mode 100644
index 0000000..50debbb
--- /dev/null
+++ b/sim/ucsim/tlcs.src/test/t2.c
@@ -0,0 +1,36 @@
+static unsigned char * volatile sif= (unsigned char *)0xffff;
+
+volatile unsigned char x;
+
+void
+putchar(unsigned char c)
+{
+ *sif= 'p';
+ *sif= c;
+}
+
+void
+prints(char *s)
+{
+ while (*s)
+ putchar(*s++);
+}
+
+void
+main(void)
+{
+ unsigned int i;
+ unsigned int j;
+
+ prints("Start.\n");
+ for (j= 0; j<200; j++)
+ {
+ for (i= 1000; i; i--)
+ putchar('a');
+ }
+
+ prints("Done.\n");
+ *sif= 's';
+ for (;;)
+ ;
+}
diff --git a/sim/ucsim/tlcs.src/test/t2.mk b/sim/ucsim/tlcs.src/test/t2.mk
new file mode 100644
index 0000000..c2dd6e7
--- /dev/null
+++ b/sim/ucsim/tlcs.src/test/t2.mk
@@ -0,0 +1,3 @@
+MAIN = t2
+
+include sdcc.mk
diff --git a/sim/ucsim/tlcs.src/test/t3.c b/sim/ucsim/tlcs.src/test/t3.c
new file mode 100644
index 0000000..9482115
--- /dev/null
+++ b/sim/ucsim/tlcs.src/test/t3.c
@@ -0,0 +1,17 @@
+const unsigned char a[2]= { 0x11, 0x22 };
+
+void __fail(char *s)
+{
+}
+
+#define ASSERT(_a) ((_a) ? (void)0 : __fail ("Assertion failed", #_a, __FILE__, __LINE__))
+
+volatile unsigned char idx;
+
+void main(void)
+{
+ volatile unsigned char c;
+ idx= 1;
+ (a[idx]==0x22)?(void)0:__fail("s");
+ while (1) ;
+}
diff --git a/sim/ucsim/tlcs.src/test/t3.mk b/sim/ucsim/tlcs.src/test/t3.mk
new file mode 100644
index 0000000..f651106
--- /dev/null
+++ b/sim/ucsim/tlcs.src/test/t3.mk
@@ -0,0 +1,3 @@
+MAIN = t3
+
+include sdcc.mk