src/regression/add4.c, src/regression/and1.c, src/regression/and2.c,
src/regression/arrays.c, src/regression/b.c, src/regression/bank1.c,
src/regression/bool1.c, src/regression/bool2.c,
src/regression/bool3.c, src/regression/call1.c,
src/regression/compare.c, src/regression/compare10.c,
src/regression/compare2.c, src/regression/compare3.c,
src/regression/compare4.c, src/regression/compare5.c,
src/regression/compare6.c, src/regression/compare7.c,
src/regression/compare8.c, src/regression/compare9.c,
src/regression/configword.c, src/regression/for.c,
src/regression/inline.c, src/regression/mult1.c,
src/regression/nestfor.c, src/regression/or1.c,
src/regression/pointer1.c, src/regression/ptrfunc.c,
src/regression/rotate1.c, src/regression/rotate2.c,
src/regression/rotate3.c, src/regression/rotate4.c,
src/regression/rotate5.c, src/regression/rotate6.c,
src/regression/rotate7.c, src/regression/string1.c,
src/regression/struct1.c, src/regression/sub.c,
src/regression/sub2.c, src/regression/switch1.c,
src/regression/while.c, src/regression/xor.c,
src/regression/create_stc, src/regression/simulate,
src/regression/rt.sh, src/regression/Makefile: reenabled Scott's PIC14
regression tests
* src/regression/gpsim_assert.h: added
git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@4030
4a8a32a2-be11-0410-ad9d-
d568d2c75423
+2006-02-01 Borut Razem <borut.razem AT siol.net>
+
+ * src/regression/add.c, src/regression/add2.c, src/regression/add3.c,
+ src/regression/add4.c, src/regression/and1.c, src/regression/and2.c,
+ src/regression/arrays.c, src/regression/b.c, src/regression/bank1.c,
+ src/regression/bool1.c, src/regression/bool2.c,
+ src/regression/bool3.c, src/regression/call1.c,
+ src/regression/compare.c, src/regression/compare10.c,
+ src/regression/compare2.c, src/regression/compare3.c,
+ src/regression/compare4.c, src/regression/compare5.c,
+ src/regression/compare6.c, src/regression/compare7.c,
+ src/regression/compare8.c, src/regression/compare9.c,
+ src/regression/configword.c, src/regression/for.c,
+ src/regression/inline.c, src/regression/mult1.c,
+ src/regression/nestfor.c, src/regression/or1.c,
+ src/regression/pointer1.c, src/regression/ptrfunc.c,
+ src/regression/rotate1.c, src/regression/rotate2.c,
+ src/regression/rotate3.c, src/regression/rotate4.c,
+ src/regression/rotate5.c, src/regression/rotate6.c,
+ src/regression/rotate7.c, src/regression/string1.c,
+ src/regression/struct1.c, src/regression/sub.c,
+ src/regression/sub2.c, src/regression/switch1.c,
+ src/regression/while.c, src/regression/xor.c,
+ src/regression/create_stc, src/regression/simulate,
+ src/regression/rt.sh, src/regression/Makefile: reenabled Scott's PIC14
+ regression tests
+ * src/regression/gpsim_assert.h: added
+
2006-01-28 Bernhard Held <bernhard AT bernhardheld.de>
* src/ds390/gen.c (unsaveRegisters): fixed literal function pointer
# make cleano
# - removes either the .stc, .asm, .cod or .o files
+# verboseness
+#Q ?= # be verbose
+Q ?= @ # be quiet
-CC = ../../bin/sdcc
+CC = sdcc
LINKER = gplink
-TARGETPIC = 16f873
-TARGETPIC2 = 16f877
-CFLAGS = -mpic14 -c -pp$(TARGETPIC)
+TARGETPIC = 16f877
+CFLAGS = -I ../../device/include/pic -mpic14 -c -pp$(TARGETPIC)
.SUFFIXES: .asm .c .cod .stc
# The asm files are generated by sdcc
.c.o:
- $(CC) $(CFLAGS) $*.c
+ $(Q)$(CC) $(CFLAGS) $*.c
# The .cod files are generated by gpasm
# these get loaded by gpsim.
.o.cod:
- $(LINKER) --map -c -s $(TARGETPIC2).lkr -o $*.o $*.o
+ $(Q)$(LINKER) --map -c -o $*.o $*.o
# gpasm $*.asm
# The .stc files are script files for gpsim
.cod.stc:
- ./$(CREATESTC) $*.cod $*.stc
- ./$(SIMULATE) $*.stc $(LOGFILE)
+ $(Q)./$(CREATESTC) $*.cod $*.stc
+ $(Q)./$(SIMULATE) $*.stc $(LOGFILE)
# this will also make .stc files
#%.stc : %.cod
echo $(STC)
test: $(STC)
- echo "Done - Results are in $(LOGFILE)"
+ $(Q)echo "Done - Results are in $(LOGFILE)"
cleancod:
files="$(COD)" ; \
-#define __16F873
-#include "p16f873.h"
-//#include "p16c84.h"
+#include "gpsim_assert.h"
+
// Addition tests
/* bit types are not ANSI - so provide a way of disabling bit types
* (like bitx = bity + bitz;) */
#define SUPPORT_BIT_ARITHMETIC 1
-unsigned char success=0;
unsigned char failures=0;
-unsigned char dummy=0;
#if SUPPORT_BIT_TYPES
unsigned char achar3 = 0;
unsigned char *acharP = 0;
-void done()
+void
+done()
{
-
- dummy++;
-
+ ASSERT(MANGLE(failures) == 0);
+ PASSED();
}
void add_lit2uchar(void)
void add_uchar2uchar2(void)
{
-
-
achar0++;
achar0 = achar0 + 1;
achar0 = achar0 + 2;
achar3 = achar2 + achar1 + achar0;
if(achar3 != 92)
failures++;
-
}
#if SUPPORT_BIT_TYPES
void add_bits(void)
{
-
bit1 = bit0;
bit0 = 1;
/* add_bit2uchar(void) - assumes bit0 = 1, achar0 = 7 */
+#if SUPPORT_BIT_TYPES
void add_bit2uchar(void)
{
-
achar0 += bit0;
if(achar0 != 8)
if(achar0 == bit0)
failures++;
-
}
void add_bit2uint(void)
{
-
if(aint0 != bit11)
failures++;
aint0 += bit0;
if(aint0!=1)
failures++;
-
}
+#endif
+
void main(void)
{
-
add_lit2uchar();
+ ASSERT(_failures == 0);
achar0=16;
achar1=0;
add_uchar2uchar();
+ ASSERT(_failures == 0);
achar0 = 0;
achar1 = 32;
add_uchar2uchar2();
+ ASSERT(_failures == 0);
#if SUPPORT_BIT_TYPES
add_bits();
add_bit2uchar();
add_bit2uint();
#endif
+ ASSERT(_failures == 0);
-
- success = failures;
done();
}
-#define __16F873
-#include "p16f873.h"
+#include "gpsim_assert.h"
// Addition tests - mostly int's
#define SUPPORT_BIT_TYPES 1
-unsigned char success=0;
unsigned char failures=0;
-unsigned char dummy=0;
unsigned int aint0 = 0;
#endif
-void done()
+void
+done()
{
-
- dummy++;
-
+ ASSERT(MANGLE(failures) == 0);
+ PASSED();
}
void add_lit2uint(void)
/* add_bit2uchar(void) - assumes bit0 = 1, aint0 = 7 */
+#if SUPPORT_BIT_TYPES
void add_bit2uchar(void)
{
failures++;
}
+#endif
/***********************************/
aint0 = 0;
addlits();
- success = failures;
done();
}
-#define __16F873
-#include "p16f873.h"
+#include "gpsim_assert.h"
// Addition tests - mostly int's
#define SUPPORT_BIT_TYPES 1
-unsigned char success=0;
unsigned char failures=0;
-unsigned char dummy=0;
char char0 = 0;
#endif
-void done()
+void
+done()
{
-
- dummy++;
-
+ ASSERT(MANGLE(failures) == 0);
+ PASSED();
}
void add_char2char(void)
add_lit2long();
add_lit2ulong();
- success = failures;
done();
}
-#define __16F873
-#include "p16f873.h"
+#include "gpsim_assert.h"
-unsigned char success = 0;
unsigned char failures = 0;
-unsigned char dummy = 0;
//bit bit0 = 0;
int int0 = 0;
int *iP1=NULL;
void
-done ()
+done()
{
-
- dummy++;
-
+ ASSERT(MANGLE(failures) == 0);
+ PASSED();
}
-
/* pointer to char arithmetic */
void pc_add(void)
iP0 = &int0;
pi_add();
- success = failures;
done();
}
-#define __16F873
-#include "p16f873.h"
+#include "gpsim_assert.h"
-unsigned char success=0;
unsigned char failures=0;
-unsigned char dummy=0;
unsigned int uint0 = 0;
unsigned char uchar1 = 0;
unsigned long ulong0 = 0;
-void done()
+void
+done()
{
-
- dummy++;
-
+ ASSERT(MANGLE(failures) == 0);
+ PASSED();
}
// uchar0 = 0xff;
uchar1 = 0x0f;
and_uchar2uchar();
- success = failures;
done();
}
-#define __16F873
-#include "p16f873.h"
+#include "gpsim_assert.h"
-unsigned char success=0;
unsigned char failures=0;
-unsigned char dummy=0;
unsigned int uint0 = 0;
unsigned char uchar1 = 0;
unsigned long ulong0 = 0;
-void done()
+void
+done()
{
-
- dummy++;
-
+ ASSERT(MANGLE(failures) == 0);
+ PASSED();
}
// uchar0 = 0x13;
uchar0 = 0x13;
neg_compound1();
- success = failures;
done();
}
-#define __16F873
-#include "p16f873.h"
-//#include "p16c84.h"
+#include "gpsim_assert.h"
-unsigned char success = 0;
unsigned char failures = 0;
-unsigned char dummy = 0;
bit bit0 = 0;
unsigned int aint0 = 0;
unsigned char achar1 = 0;
void
-done ()
+done()
{
-
- dummy++;
-
+ ASSERT(MANGLE(failures) == 0);
+ PASSED();
}
void
bool_or_lit1 ();
bool_and_lit1 ();
- success = failures;
done ();
}
-#define __16F873
-#include "p16f873.h"
+#include "gpsim_assert.h"
unsigned char failures = 0;
-unsigned char dummy = 0;
unsigned char uchar0=0;
unsigned char uchar1=0;
unsigned char uchar2=0;
-void done(void)
+void
+done()
{
- dummy++;
+ ASSERT(MANGLE(failures) == 0);
+ PASSED();
}
+
/*
void incptr(unsigned char *ucP)
{
-#define __16F873
-#include "p16f873.h"
+#include "gpsim_assert.h"
unsigned char success=0;
unsigned char failures=0;
data at 0xa0 unsigned char uc_bank1_temp=0x42;
data at 0xa2 unsigned int ui_bank1_temp=0;
-void done()
+void
+done()
{
-
dummy++;
-
+ ASSERT(MANGLE(failures) == 0);
+ PASSED();
}
void main(void)
-#define __16F873
-#include "p16f873.h"
-//#include "p16c84.h"
+#include "gpsim_assert.h"
-unsigned char success=0;
unsigned char failures=0;
-unsigned char dummy=0;
bit bit0 = 0;
unsigned int aint0 = 0;
unsigned char achar0 = 0;
unsigned char achar1 = 0;
-void done()
+void
+done()
{
-
- dummy++;
-
+ ASSERT(MANGLE(failures) == 0);
+ PASSED();
}
void bool_or1(void)
bool_or_lit1();
bool_and_lit1();
- success = failures;
done();
}
-#define __16F873
-#include "p16f873.h"
-//#include "p16c84.h"
+#include "gpsim_assert.h"
-unsigned char success=0;
unsigned char failures=0;
-unsigned char dummy=0;
bit bit0 = 0;
bit bit1 = 0;
unsigned char achar0 = 0;
unsigned char achar1 = 0;
-void done()
+void
+done()
{
-
- dummy++;
-
+ ASSERT(MANGLE(failures) == 0);
+ PASSED();
}
-
-
void bit_invert(void)
{
bit_invert();
bit_copy();
- success = failures;
done();
}
-#define __16F873
-#include "p16f873.h"
+#include "gpsim_assert.h"
/* Compound comparisons */
-unsigned char success=0;
unsigned char failures=0;
-unsigned char dummy=0;
bit bit0 = 0;
bit bit1 = 0;
unsigned long uL0 = 0;
unsigned long uL1 = 0;
-void done()
+void
+done()
{
-
- dummy++;
-
+ ASSERT(MANGLE(failures) == 0);
+ PASSED();
}
-
-
void compound_compare_uc(void)
{
uc0 = 0xff;
compound_compare_uc_lit();
- success = failures;
done();
}
-#define __16F873
-#include "p16f873.h"
-//#include "p16c84.h"
+#include "gpsim_assert.h"
-unsigned char success = 0;
unsigned char failures = 0;
-unsigned char dummy = 0;
bit bit0 = 0;
unsigned int uint0 = 0;
unsigned char call3 (void);
void
-done ()
+done()
{
-
- dummy++;
-
+ ASSERT(MANGLE(failures) == 0);
+ PASSED();
}
void
call9(0x1234,0x5678);
- success = failures;
done ();
}
-#define __16F873
-#include "p16f873.h"
+#include "gpsim_assert.h"
/*
PIC PORT Test code
bit bit0 = 0;
bit bit1 = 0;
-unsigned char success = 0;
unsigned char failures = 0;
-unsigned char dummy = 0;
unsigned char achar0 = 0;
unsigned char achar1 = 0;
char schar1 = 0;
void
-done ()
+done()
{
-
- dummy++;
-
+ ASSERT(MANGLE(failures) == 0);
+ PASSED();
}
/* achar0 should be zero */
aint0 = 0;
compare_int_to_int1 ();
- success = failures;
done ();
}
-#define __16F873
-#include "p16f873.h"
+#include "gpsim_assert.h"
+#include "pic16f877.h"
// Signed comparisons of the form: (variable>=LIT)
//
// This regression test exercises all of the boundary
// and each one has an astonishing capability of failing
// a boundary condition.
-unsigned char success = 0;
unsigned char failures = 0;
-unsigned char dummy = 0;
unsigned char result = 0;
//bit bit0 = 0;
char long0 = 0;
char long1 = 0;
-/* copied from 16f877.inc file supplied with gpasm */
-
-#define _CP_ALL 0x0FCF
-#define _CP_HALF 0x1FDF
-#define _CP_UPPER_256 0x2FEF
-#define _CP_OFF 0x3FFF
-#define _DEBUG_ON 0x37FF
-#define _DEBUG_OFF 0x3FFF
-#define _WRT_ENABLE_ON 0x3FFF
-#define _WRT_ENABLE_OFF 0x3DFF
-#define _CPD_ON 0x3EFF
-#define _CPD_OFF 0x3FFF
-#define _LVP_ON 0x3FFF
-#define _LVP_OFF 0x3F7F
-#define _BODEN_ON 0x3FFF
-#define _BODEN_OFF 0x3FBF
-#define _PWRTE_OFF 0x3FFF
-#define _PWRTE_ON 0x3FF7
-#define _WDT_ON 0x3FFF
-#define _WDT_OFF 0x3FFB
-#define _LP_OSC 0x3FFC
-#define _XT_OSC 0x3FFD
-#define _HS_OSC 0x3FFE
-#define _RC_OSC 0x3FFF
-
/* *** NOTE *** This particular test takes quite a while to run
* ~ 10,000,000 instruction cycles. (2.5 seconds on a 20Mhz PIC).
* The WDT will reset the CPU if it's enabled. So disable it...
typedef unsigned int word;
-word at 0x2007 CONFIG = _WDT_OFF & _PWRTE_ON;
+word at 0x2007 CONFIG = wdt_off & pwrte_on;
void
-done ()
+done()
{
- dummy++;
+ ASSERT(MANGLE(failures) == 0);
+ PASSED();
}
int_compare1();
int_compare2();
- success = failures;
done ();
}
-#define __16F873
-#include "p16f873.h"
-//#include "p16c84.h"
+#include "gpsim_assert.h"
-unsigned char success = 0;
unsigned char failures = 0;
unsigned char dummy = 0;
unsigned char achar1 = 0;
void
-done ()
+done()
{
-
- dummy++;
-
+ ASSERT(MANGLE(failures) == 0);
+ PASSED();
}
-
-
void
char_lt_char (void)
{
int_lte_lit_else ();
int_gte_lit_else ();
- success = failures;
done ();
}
-#define __16F873
-#include "p16f873.h"
+#include "gpsim_assert.h"
//
// compare3.c
// regression testing program for comparing literals to variables
//
-unsigned char success = 0;
unsigned char failures = 0;
-unsigned char dummy = 0;
bit bit0 = 0;
unsigned int aint0 = 0;
unsigned char achar1 = 0;
void
-done ()
+done()
{
-
- dummy++;
-
+ ASSERT(MANGLE(failures) == 0);
+ PASSED();
}
// compare to 0
achar0 = 1;
c_ifelse1();
- success = failures;
done ();
}
-#define __16F873
-#include "p16f873.h"
+#include "gpsim_assert.h"
//
// compare4.c
// regression testing program for comparing signed chars and ints
//#define COMPARE_OUT_OF_RANGE 1
-unsigned char success = 0;
unsigned char failures = 0;
-unsigned char dummy = 0;
bit bit0 = 0;
int int0 = 0;
char char1 = 0;
void
-done ()
+done()
{
-
- dummy++;
-
+ ASSERT(MANGLE(failures) == 0);
+ PASSED();
}
// compare to 0
char1 = -3;
c_c0gtc1();
- success = failures;
done ();
}
-#define __16F873
-#include "p16f873.h"
+#include "gpsim_assert.h"
//
// compare5.c
// regression testing program for comparing longs
#define COMPARE_OUT_OF_RANGE 1
-unsigned char success = 0;
unsigned char failures = 0;
-unsigned char dummy = 0;
bit bit0 = 0;
int int0 = 0;
unsigned long ulong1 = 0;
void
-done ()
+done()
{
-
- dummy++;
-
+ ASSERT(MANGLE(failures) == 0);
+ PASSED();
}
// compare to 0
long1=-1000;
c_long2neglit();
- success = failures;
done ();
}
-#define __16F873
-#include "p16f873.h"
+#include "gpsim_assert.h"
// Compound comparisons
unsigned char success = 0;
char long1 = 0;
void
-done ()
+done()
{
- dummy++;
+ ASSERT(MANGLE(failures) == 0);
+ PASSED();
}
-
void c_char(void)
{
-#define __16F873
-#include "p16f873.h"
+#include "gpsim_assert.h"
+#include "pic16f877.h"
// Signed comparisons of the form: (variable<LIT)
//
// This regression test exercises all of the boundary
// and each one has an astonishing capability of failing
// a boundary condition.
-unsigned char success = 0;
unsigned char failures = 0;
-unsigned char dummy = 0;
unsigned char result = 0;
//bit bit0 = 0;
char long1 = 0;
-/* copied from 16f877.inc file supplied with gpasm */
-
-#define _CP_ALL 0x0FCF
-#define _CP_HALF 0x1FDF
-#define _CP_UPPER_256 0x2FEF
-#define _CP_OFF 0x3FFF
-#define _DEBUG_ON 0x37FF
-#define _DEBUG_OFF 0x3FFF
-#define _WRT_ENABLE_ON 0x3FFF
-#define _WRT_ENABLE_OFF 0x3DFF
-#define _CPD_ON 0x3EFF
-#define _CPD_OFF 0x3FFF
-#define _LVP_ON 0x3FFF
-#define _LVP_OFF 0x3F7F
-#define _BODEN_ON 0x3FFF
-#define _BODEN_OFF 0x3FBF
-#define _PWRTE_OFF 0x3FFF
-#define _PWRTE_ON 0x3FF7
-#define _WDT_ON 0x3FFF
-#define _WDT_OFF 0x3FFB
-#define _LP_OSC 0x3FFC
-#define _XT_OSC 0x3FFD
-#define _HS_OSC 0x3FFE
-#define _RC_OSC 0x3FFF
-
/* *** NOTE *** This particular test takes quite a while to run
* ~ 10,000,000 instruction cycles. (2.5 seconds on a 20Mhz PIC).
* The WDT will reset the CPU if it's enabled. So disable it...
typedef unsigned int word;
-word at 0x2007 CONFIG = _WDT_OFF & _PWRTE_ON;
+word at 0x2007 CONFIG = wdt_off & pwrte_on;
void
-done ()
+done()
{
- dummy++;
+ ASSERT(MANGLE(failures) == 0);
+ PASSED();
}
-
void c_char_lt_lit1(unsigned char expected_result)
{
result = 0;
int_compare1();
int_compare2();
- success = failures;
done ();
}
-#define __16F873
-#include "p16f873.h"
+#include "gpsim_assert.h"
+#include "pic16f877.h"
// Signed comparisons of the form: (variable>LIT)
//
// This regression test exercises all of the boundary
// and each one has an astonishing capability of failing
// a boundary condition.
-unsigned char success = 0;
unsigned char failures = 0;
-unsigned char dummy = 0;
unsigned char result = 0;
//bit bit0 = 0;
char long0 = 0;
char long1 = 0;
-
-/* copied from 16f877.inc file supplied with gpasm */
-
-#define _CP_ALL 0x0FCF
-#define _CP_HALF 0x1FDF
-#define _CP_UPPER_256 0x2FEF
-#define _CP_OFF 0x3FFF
-#define _DEBUG_ON 0x37FF
-#define _DEBUG_OFF 0x3FFF
-#define _WRT_ENABLE_ON 0x3FFF
-#define _WRT_ENABLE_OFF 0x3DFF
-#define _CPD_ON 0x3EFF
-#define _CPD_OFF 0x3FFF
-#define _LVP_ON 0x3FFF
-#define _LVP_OFF 0x3F7F
-#define _BODEN_ON 0x3FFF
-#define _BODEN_OFF 0x3FBF
-#define _PWRTE_OFF 0x3FFF
-#define _PWRTE_ON 0x3FF7
-#define _WDT_ON 0x3FFF
-#define _WDT_OFF 0x3FFB
-#define _LP_OSC 0x3FFC
-#define _XT_OSC 0x3FFD
-#define _HS_OSC 0x3FFE
-#define _RC_OSC 0x3FFF
-
/* *** NOTE *** This particular test takes quite a while to run
* ~ 10,000,000 instruction cycles. (2.5 seconds on a 20Mhz PIC).
* The WDT will reset the CPU if it's enabled. So disable it...
typedef unsigned int word;
-word at 0x2007 CONFIG = _WDT_OFF & _PWRTE_ON;
+word at 0x2007 CONFIG = wdt_off & pwrte_on;
void
-done ()
+done()
{
- dummy++;
+ ASSERT(MANGLE(failures) == 0);
+ PASSED();
}
-
void c_char_gt_lit1(unsigned char expected_result)
{
result = 0;
int_compare1();
int_compare2();
- success = failures;
done ();
}
-#define __16F873
-#include "p16f873.h"
+#include "gpsim_assert.h"
+#include "pic16f877.h"
// Signed comparisons of the form: (variable<=LIT)
//
// This regression test exercises all of the boundary
// and each one has an astonishing capability of failing
// a boundary condition.
-unsigned char success = 0;
unsigned char failures = 0;
-unsigned char dummy = 0;
unsigned char result = 0;
int int0 = 0;
signed char char0 = 0;
signed char char1 = 0;
-/* copied from 16f877.inc file supplied with gpasm */
-
-#define _CP_ALL 0x0FCF
-#define _CP_HALF 0x1FDF
-#define _CP_UPPER_256 0x2FEF
-#define _CP_OFF 0x3FFF
-#define _DEBUG_ON 0x37FF
-#define _DEBUG_OFF 0x3FFF
-#define _WRT_ENABLE_ON 0x3FFF
-#define _WRT_ENABLE_OFF 0x3DFF
-#define _CPD_ON 0x3EFF
-#define _CPD_OFF 0x3FFF
-#define _LVP_ON 0x3FFF
-#define _LVP_OFF 0x3F7F
-#define _BODEN_ON 0x3FFF
-#define _BODEN_OFF 0x3FBF
-#define _PWRTE_OFF 0x3FFF
-#define _PWRTE_ON 0x3FF7
-#define _WDT_ON 0x3FFF
-#define _WDT_OFF 0x3FFB
-#define _LP_OSC 0x3FFC
-#define _XT_OSC 0x3FFD
-#define _HS_OSC 0x3FFE
-#define _RC_OSC 0x3FFF
-
/* *** NOTE *** This particular test takes quite a while to run
* ~ 10,000,000 instruction cycles. (2.5 seconds on a 20Mhz PIC).
* The WDT will reset the CPU if it's enabled. So disable it...
typedef unsigned int word;
-word at 0x2007 CONFIG = _WDT_OFF & _PWRTE_ON;
+word at 0x2007 CONFIG = wdt_off & pwrte_on;
void
-done ()
+done()
{
- dummy++;
+ ASSERT(MANGLE(failures) == 0);
+ PASSED();
}
-
void c_char_lte_lit1(unsigned char expected_result)
{
result = 0;
int_compare1();
int_compare2();
- success = failures;
done ();
}
-#define __16F873
-#include "p16f873.h"
+#include "gpsim_assert.h"
/* configword.c - illustrates how the configuration word can
* be assigned */
-unsigned char success=0;
unsigned char failures=0;
-unsigned char dummy=0;
/* copied from 16f877.inc file supplied with gpasm */
/* to do -- write a test that puts the PIC to sleep,
* and verify that the WDT wakes it up */
-void done()
+void
+done()
{
-
- dummy++;
-
+ ASSERT(MANGLE(failures) == 0);
+ PASSED();
}
+
void main(void)
{
dummy = 0;
- success = failures;
done();
}
fi
-echo "load s $1" > $2
-echo "break e _done" >> $2
+echo "load $1" > $2
echo "run" >> $2
-echo "x _failures" >> $2
-echo "abort_gpsim_now" >> $2
+echo "quit" >> $2
-#define __16F873
-#include "p16f873.h"
-//#include "p16c84.h"
+#include "gpsim_assert.h"
-unsigned char success=0;
unsigned char failures=0;
-unsigned char dummy=0;
bit bit0 = 0;
unsigned int uint0 = 0;
unsigned char uchar0 = 0;
unsigned char uchar1 = 0;
-void done()
+void
+done()
{
-
- dummy++;
-
+ ASSERT(MANGLE(failures) == 0);
+ PASSED();
}
void for1(void)
if(uchar0 != 10)
failures++;
- success = failures;
done();
}
--- /dev/null
+/*------------------------------------------------------------------------------
+
+ gpsim_assert.h - assertion macros generating gpsim breakpoints
+
+ Copyright (c) 2006 Borut Razem
+
+ This program is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by the
+ Free Software Foundation; either version 2, or (at your option) any
+ later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ USA.
+
+------------------------------------------------------------------------------*/
+
+
+#ifndef __PIC_ASSERT_H
+#define __PIC_ASSERT_H
+
+#define MANGLE(e) _##e
+#define STRINGIFY(e) #e
+
+#define ASSERT(e) \
+ __asm \
+ nop \
+ __endasm; \
+ __asm \
+ .direct "a", STRINGIFY(e) \
+ __endasm;
+
+#define PASSED() \
+ __asm \
+ nop \
+ __endasm; \
+ __asm \
+ .direct "a", "\"PASSED\"" \
+ __endasm;
+
+#define FAILED() \
+ __asm \
+ nop \
+ __endasm; \
+ __asm \
+ .direct "a", "\"FAILED\"" \
+ __endasm;
+
+#endif
-#define __16F873
-#include "p16f873.h"
-unsigned char success=0;
-unsigned char failures=0;
-unsigned char dummy=0;
+#include "gpsim_assert.h"
+#include "pic16f877.h"
-unsigned char test_tris=0;
+#pragma preproc_asm -
-#define PORTA_ADR 5
-#define PORTB_ADR 6
-#define TRISA_ADR 0x85
-#define TRISB_ADR 0x86
+unsigned char failures=0;
-data at TRISA_ADR unsigned char TRISA;
+unsigned char test_tris=0;
-void done(void)
+void
+done()
{
-
- dummy++;
-
+ ASSERT(MANGLE(failures) == 0);
+ PASSED();
}
void
void main(void)
{
- dummy = 0;
-
TRISA = 0x0f;
_asm
if(test_tris != 0x0f)
failures++;
- success = failures;
done();
}
-#define __16F873
-#include "p16f873.h"
+#include "gpsim_assert.h"
#define TESTLIT 0x05
-unsigned char success=0;
unsigned char failures=0;
-unsigned char dummy=0;
signed char c1,c2,c3;
unsigned int ui1,ui2,ui3;
signed int i1,i2;
-void done()
+void
+done()
{
-
- dummy++;
-
+ ASSERT(MANGLE(failures) == 0);
+ PASSED();
}
void m1(void)
//m3(TESTLIT);
- success = failures;
done();
}
-#define __16F873
-#include "p16f873.h"
-//#include "p16c84.h"
+#include "gpsim_assert.h"
+#include "pic16f877.h"
-unsigned char success=0;
unsigned char failures=0;
-unsigned char dummy=0;
bit bit0 = 0;
unsigned int uint0 = 0;
PORTA = 0x00;
}
-void done()
+void
+done()
{
-
- dummy++;
-
+ ASSERT(MANGLE(failures) == 0);
+ PASSED();
}
/* both loops use the loop variable inside the inner loop */
for4();
for5();
- success = failures;
done();
}
-#define __16F873
-#include "p16f873.h"
+#include "gpsim_assert.h"
-unsigned char success=0;
unsigned char failures=0;
-unsigned char dummy=0;
bit bit0 = 0;
bit bit1 = 0;
unsigned long ulong0 = 0;
unsigned long ulong1 = 0;
-void done()
+void
+done()
{
-
- dummy++;
-
+ ASSERT(MANGLE(failures) == 0);
+ PASSED();
}
// uchar0 = 0;
failures++;
- success = failures;
done();
}
-#define __16F873
-#include "p16f873.h"
+#include "gpsim_assert.h"
// Pointer tests
-unsigned char success = 0;
unsigned char failures = 0;
-unsigned char dummy = 0;
bit bit0 = 0;
unsigned int aint0 = 0;
char buff[10];
void
-done ()
+done()
{
-
- dummy++;
-
+ ASSERT(MANGLE(failures) == 0);
+ PASSED();
}
void
achar0 = 5;
f4(&achar0, achar0);
- success = failures;
done ();
}
-#define __16F873
-#include "p16f873.h"
-//#include "p16c84.h"
+#include "gpsim_assert.h"
-unsigned char success=0;
unsigned char failures=0;
-unsigned char dummy=0;
bit bit0 = 0;
unsigned int uint0 = 0;
void (*p1func)();
unsigned char (*pcfunc)();
-void done()
+void
+done()
{
-
- dummy++;
-
+ ASSERT(MANGLE(failures) == 0);
+ PASSED();
}
void call0(void)
/* uchar2 += (pcfunc)(); */ /* FRONT-END BUG? - type-mismatch error */
/* uchar2 += pcfunc(); */ /* FRONT-END BUG? - type-mismatch error */
- success = failures;
done();
}
-#define __16F873
-#include "p16f873.h"
-// Shift bytes left and right by a constant.
+#include "gpsim_assert.h"
-unsigned char success=0;
unsigned char failures=0;
-unsigned char dummy=0;
bit bit0 = 0;
unsigned int aint0 = 0;
unsigned char achar1 = 0;
unsigned char achar2 = 0;
-void done()
+void
+done()
{
-
- dummy++;
-
+ ASSERT(MANGLE(failures) == 0);
+ PASSED();
}
void check(void)
achar0 = 0x80;
shift_right_7();
- success=failures;
done();
}
-#define __16F873
-#include "p16f873.h"
+#include "gpsim_assert.h"
// Shift bytes left and right by a variable.
-unsigned char success=0;
unsigned char failures=0;
-unsigned char dummy=0;
bit bit0 = 0;
unsigned int aint0 = 0;
unsigned char achar2 = 0;
unsigned char achar3 = 0;
-void done()
+void
+done()
{
-
- dummy++;
-
+ ASSERT(MANGLE(failures) == 0);
+ PASSED();
}
void shift_right_var(void)
failures++;
}
- success=failures;
done();
}
-#define __16F873
-#include "p16f873.h"
+#include "gpsim_assert.h"
// Shift ints left and right
-unsigned char success=0;
unsigned char failures=0;
-unsigned char dummy=0;
bit bit0 = 0;
unsigned int aint0 = 0;
unsigned char achar2 = 0;
unsigned char achar3 = 0;
-void done()
+void
+done()
{
-
- dummy++;
-
+ ASSERT(MANGLE(failures) == 0);
+ PASSED();
}
void shift_int_left_1(void)
if(aint0 != 0x0001)
failures++;
- success=failures;
done();
}
-#define __16F873
-#include "p16f873.h"
+#include "gpsim_assert.h"
// rotate bytes left and right by a constant.
-unsigned char success=0;
unsigned char failures=0;
-unsigned char dummy=0;
bit bit0 = 0;
unsigned int uint0 = 0;
unsigned char uchar1 = 0;
unsigned char uchar2 = 0;
-void done()
+void
+done()
{
-
- dummy++;
-
+ ASSERT(MANGLE(failures) == 0);
+ PASSED();
}
void check(void)
uchar0 = 0x80;
rotate_right_7();
- success=failures;
done();
}
-#define __16F873
-#include "p16f873.h"
+#include "gpsim_assert.h"
// Shift bytes left and right by a constant.
-unsigned char success=0;
unsigned char failures=0;
-unsigned char dummy=0;
bit bit0 = 0;
signed int aint0 = 0;
signed char achar1 = 0;
signed char achar2 = 0;
-void done()
+void
+done()
{
-
- dummy++;
-
+ ASSERT(MANGLE(failures) == 0);
+ PASSED();
}
void check(void)
shift_right_7();
- success=failures;
done();
}
-#define __16F873
-#include "p16f873.h"
+#include "gpsim_assert.h"
// Shift bytes left and right by a variable.
-unsigned char success=0;
unsigned char failures=0;
-unsigned char dummy=0;
bit bit0 = 0;
signed int aint0 = 0;
signed char achar2 = 0;
signed char achar3 = 0;
-void done()
+void
+done()
{
-
- dummy++;
-
+ ASSERT(MANGLE(failures) == 0);
+ PASSED();
}
void shift_right_var(void)
if(aint0 != 0xf000)
failures++;
- success=failures;
done();
}
-#define __16F873
-#include "p16f873.h"
+#include "gpsim_assert.h"
// Shift ints left and right
-unsigned char success=0;
unsigned char failures=0;
-unsigned char dummy=0;
signed int aint0 = 0;
signed int aint1 = 0;
signed char achar2 = 0;
signed char achar3 = 0;
-void done()
+void
+done()
{
-
- dummy++;
-
+ ASSERT(MANGLE(failures) == 0);
+ PASSED();
}
void shift_int_left_1(void)
if(aint0 != -1)
failures++;
- success=failures;
done();
}
# compile
-../../bin/sdcc -c -mpic14 -pp16f873 $1.c
+../../bin/sdcc -I ../../device/include/pic -c -mpic14 -pp16f877 $1.c
# create the executable
-gplink --map -c -s 16f877.lkr -o $1.o $1.o
+gplink --map -c -o $1.o $1.o
./create_stc $1.cod $1.stc
./simulate $1.stc garbage.log
-cat garbage.log
-rm garbage.log
exit 1
fi
+if [ "$GPSIM_PATH" != "" ] ; then
+ PATH=$GPSIM_PATH:$PATH
+fi
GPSIM_SCRIPT=$1
LOGFILE=$2
-touch $2
-echo "Test $GPSIM_SCRIPT" >> $LOGFILE
-gpsim --cli -c $GPSIM_SCRIPT $2> test
-grep "failures " test | grep "= 0x0"
-if [ $? -eq 0 ] ; then
- echo "PASSED" >> $LOGFILE
-else
- echo "FAILED" >> $LOGFILE
-fi
+echo "Test $GPSIM_SCRIPT" | tee -a $LOGFILE
+gpsim --cli -c $GPSIM_SCRIPT | tee -a $LOGFILE |\
+sed -n -e '/running\.\.\./,$ {
+/^ *Message:/ {
+s/^ *Message:\(.*\)$/\1/p
+q
+}
+}
+$ a\
+FAILED
+' | tee -a $LOGFILE
-#define __16F873
-#include "p16f873.h"
-unsigned char success=0;
+#include "gpsim_assert.h"
unsigned char failures=0;
-unsigned char dummy=0;
//unsigned bit bit1;
typedef unsigned char byte;
bit at 0x30 B1;
-void done()
+void
+done()
{
-
- dummy++;
-
+ ASSERT(MANGLE(failures) == 0);
+ PASSED();
}
void isr(void) interrupt 1 using 1
lcd1("str");
B1=0;
- success = failures;
done();
}
-#define __16F873
-#include "p16f873.h"
-//#include "p16c84.h"
+#include "gpsim_assert.h"
// Addition tests
/* bit types are not ANSI - so provide a way of disabling bit types
* (like bitx = bity + bitz;) */
#define SUPPORT_BIT_ARITHMETIC 1
-unsigned char success = 0;
unsigned char failures = 0;
-unsigned char dummy = 0;
#if SUPPORT_BIT_TYPES
struct chars struct1;
void
-done ()
+done()
{
-
- dummy++;
-
+ ASSERT(MANGLE(failures) == 0);
+ PASSED();
}
void
struct1.c1 = 1;
add_chars();
- success = failures;
done ();
}
-#define __16F873
-#include "p16f873.h"
-//#include "p16c84.h"
+#include "gpsim_assert.h"
// Addition tests
/* bit types are not ANSI - so provide a way of disabling bit types
* (like bitx = bity + bitz;) */
#define SUPPORT_BIT_ARITHMETIC 1
-unsigned char success=0;
unsigned char failures=0;
-unsigned char dummy=0;
#if SUPPORT_BIT_TYPES
unsigned char achar3 = 0;
unsigned char *acharP = 0;
-void done()
+void
+done()
{
-
- dummy++;
-
+ ASSERT(MANGLE(failures) == 0);
+ PASSED();
}
void sub_lit_from_uchar(void)
achar0 = 0;
sub_ucharFromLit();
- success = failures;
done();
}
-#define __16F873
-#include "p16f873.h"
-//#include "p16c84.h"
+#include "gpsim_assert.h"
// Addition tests
/* bit types are not ANSI - so provide a way of disabling bit types
* (like bitx = bity + bitz;) */
#define SUPPORT_BIT_ARITHMETIC 1
-unsigned char success=0;
unsigned char failures=0;
-unsigned char dummy=0;
#if SUPPORT_BIT_TYPES
char char2 = 0;
-void done()
+void
+done()
{
-
- dummy++;
-
+ ASSERT(MANGLE(failures) == 0);
+ PASSED();
}
void sub_int1(void)
int1 = 9;
sub_compound_int();
- success = failures;
done();
}
-#define __16F873
-#include "p16f873.h"
-unsigned char success=0;
+#include "gpsim_assert.h"
unsigned char failures=0;
-unsigned char dummy=0;
bit bit0 = 0;
unsigned int aint0 = 0;
unsigned char achar1 = 0;
-void done()
+void
+done()
{
-
- dummy++;
-
+ ASSERT(MANGLE(failures) == 0);
+ PASSED();
}
void switch1(void)
}
- success=failures;
done();
}
-#define __16F873
-#include "p16f873.h"
-//#include "p16c84.h"
+#include "gpsim_assert.h"
-unsigned char success = 0;
unsigned char failures = 0;
-unsigned char dummy = 0;
bit bit0 = 0;
unsigned int aint0 = 0;
void
-done ()
+done()
{
-
- dummy++;
-
+ ASSERT(MANGLE(failures) == 0);
+ PASSED();
}
void
while1 ();
- success = failures;
done ();
}
-#define __16F873
-#include "p16f873.h"
-unsigned char success=0;
+#include "gpsim_assert.h"
unsigned char failures=0;
-unsigned char dummy=0;
unsigned char achar0 = 0;
unsigned char achar1 = 0;
unsigned char achar2 = 0;
-void done()
+void
+done()
{
-
- dummy++;
-
+ ASSERT(MANGLE(failures) == 0);
+ PASSED();
}
void xor_chars_0_1(void)
achar0 = achar1;
xor_if();
- success = failures;
done();
}