URL
https://opencores.org/ocsvn/thor/thor/trunk
Subversion Repositories thor
Compare Revisions
- This comparison shows the changes necessary to convert path
/
- from Rev 40 to Rev 41
- ↔ Reverse comparison
Rev 40 → Rev 41
/thor/trunk/software/c64/testfiles/ArrayTest1.cpp
0,0 → 1,109
|
extern int printf(char *, ...); |
|
int AnArray[10][20][30][40][50]; |
|
typedef struct { |
char *ptr; |
int len; |
} MyStruct; |
|
MyStruct structArray[15][25][5][6]; |
|
class ATest |
{ |
public: |
int avar; |
static int masterKey; |
virtual int MyFunc(); |
int MyFunc(int a, int b); |
int (*fncptr)(); |
int MyOtherFunc(); |
int avarb; |
int Func3(int a,int b,int c); |
int avarc; |
}; |
|
class ATest2 : public ATest |
{ |
int urvar; |
int anothor_var; |
int MyFunc(); |
}; |
|
int ATest::MyFunc() |
{ |
if (this != 0) { |
prolog { |
asm { hi there }; |
} |
printf("master=%d",masterKey); |
printf("Hello World!"); |
printf("%d", avarc); |
Func3(avarc); |
} |
} |
|
int ATest2::MyFunc() |
{ |
if (this != 0) { |
printf("master=%d",masterKey); |
printf("ATest2 Hello World!"); |
printf("%d", avarc); |
} |
} |
|
int MyFunc(int a, int b) |
{ |
printf("a=%d",a); |
printf("b=%d",b); |
} |
|
int ATest::Func3(int b, int c, int d) |
{ |
printf("%d", b); |
printf("%d", avar); |
} |
|
|
int main() |
{ |
ATest testvar; |
ATest *p; |
ATest2 tv2; |
int ii,jj,kk,mm,nn; |
int gg; |
|
for (ii = 0; ii < 10; ii++) |
for (jj = 0; jj < 20; jj++) |
for (kk = 0; kk < 30; kk++) |
for (mm = 0; mm < 40; mm++) |
for (nn = 0; nn < 50; nn++) |
printf("%d", AnArray[ii][jj][kk][mm][nn]); |
|
for (ii = 0; ii < 15; ii++) |
for (jj = 0; jj < 25; jj++) |
for (kk = 0; kk < 5; kk++) |
for (mm = 0; mm < 6; mm++) |
printf("ptr:%p", structArray[ii][jj][kk][mm].ptr); |
|
/* |
for (ii = 0; ii < 10; ii++) { |
for (jj = 0; jj < 20; jj++) { |
gg = AnArray[ii][jj]; |
printf("%d", gg); |
} |
} |
*/ |
printf("%d",testvar.avar); |
testvar.MyFunc(); |
testvar.MyFunc(20 , 30); |
testvar.MyOtherFunc(); |
testvar.Func3(10 , 15 , 25); |
(*testvar.fncptr)(); |
printf("%d",testvar.avarb); |
p->MyFunc(); |
printf("%d",tv2.avar); |
} |
|
|
/thor/trunk/software/c64/testfiles/TestZero.c
0,0 → 1,2
// Can't beat this for simple. |
|
/thor/trunk/software/c64/testfiles/ATest.cpp
0,0 → 1,64
|
extern int printf(char *, ...); |
|
class ATest |
{ |
public: |
int avar; |
static int masterKey; |
int MyFunc(); |
int MyFunc(int a, int b); |
int (*fncptr)(); |
int MyOtherFunc(); |
int avarb; |
int Func3(int a,int b,int c); |
int avarc; |
}; |
|
class ATest2 : public ATest |
{ |
int urvar; |
int anothor_var; |
}; |
|
/* |
int ATest::MyFunc(int g) |
{ |
printf("master=%d",masterKey); |
printf("Hello World!"); |
printf("%d", avarc); |
Func3(avarc); |
} |
*/ |
|
int MyFunc(int a, int b) |
{ |
printf("a=%d",a); |
printf("b=%d",b); |
} |
|
int ATest::Func3(int b, int c, int d) |
{ |
printf("%d", b); |
printf("%d", avar); |
} |
|
|
int main() |
{ |
ATest testvar; |
ATest *p; |
ATest2 tv2; |
|
printf("%d",testvar.avar); |
testvar.MyFunc(); |
testvar.MyFunc(20,30); |
testvar.MyOtherFunc(); |
testvar.Func3(10,15,25); |
(*testvar.fncptr)(); |
printf("%d",testvar.avarb); |
p->MyFunc(); |
printf("%d",tv2.avar); |
} |
|
|
/thor/trunk/software/c64/testfiles/ATest2.cpp
0,0 → 1,19
|
class ATest |
{ |
int avar; |
int MyFunc(int a); |
}; |
|
int ATest::MyFunc() |
{ |
printf("Hello World!"); |
} |
|
int main() |
{ |
ATest testvar; |
|
printf("%d", testvar.avar); |
testvar.MyFunc(3); |
} |
/thor/trunk/software/c64/testfiles/ATest3.cpp
0,0 → 1,63
|
extern int printf(char *, ...); |
|
class ATest |
{ |
public: |
int avar; |
static int masterKey; |
int MyFunc(); |
int MyFunc(int a, int b); |
int (*fncptr)(); |
int MyOtherFunc(); |
int avarb; |
int Func3(int a,int b,int c); |
int avarc; |
}; |
|
class ATest2 : public ATest |
{ |
int urvar; |
int anothor_var; |
}; |
|
int ATest::MyFunc() |
{ |
printf("master=%d",masterKey); |
printf("Hello World!"); |
printf("%d", avarc); |
Func3(avarc); |
} |
|
/* |
int MyFunc(int a, int b) |
{ |
printf("a=%d",a); |
printf("b=%d",b); |
} |
|
int ATest::Func3(int b, int c, int d) |
{ |
printf("%d", b); |
printf("%d", avar); |
} |
*/ |
/* |
int main() |
{ |
ATest testvar; |
ATest *p; |
ATest2 tv2; |
|
// printf("%d",testvar.avar); |
// testvar.MyFunc(); |
// testvar.MyFunc(20,30); |
// testvar.MyOtherFunc(); |
// testvar.Func3(10,15,25); |
// (*testvar.fncptr)(); |
// printf("%d",testvar.avarb); |
// p->MyFunc(); |
// printf("%d",tv2.avar); |
} |
*/ |
|
/thor/trunk/software/c64/testfiles/string.c
0,0 → 1,178
#define null 0 |
|
byte *memcpy(byte *d, byte *s, int size) |
{ |
asm { |
lw r1,40[bp] |
lw r2,32[bp] |
lw r3,48[bp] |
tst p0,r3 |
p0.eq br .0002 |
subui r3,r3,#1 |
mtspr lc,r3 |
.0001: |
lb r4,[r1] |
sb r4,[r2] |
addui r1,r1,#1 |
addui r2,r2,#1 |
loop .0001 |
.0002: |
} |
return d; |
} |
|
short int *memcpyH(short int *d, short int *s, int size) |
{ |
asm { |
lw r1,40[bp] |
lw r2,32[bp] |
lw r3,48[bp] |
.0001: |
lh r4,[r1] |
sh r4,[r2] |
addui r1,r1,#4 |
addui r2,r2,#4 |
subui r3,r3,#1 |
tst p0,r3 |
p0.gt br .0001 |
} |
return d; |
} |
|
int *memcpyW(int *d, int *s, int size) |
{ |
asm { |
lw r1,40[bp] |
lw r2,32[bp] |
lw r3,48[bp] |
.0001: |
lw r4,[r1] |
sw r4,[r2] |
addui r1,r1,#8 |
addui r2,r2,#8 |
subui r3,r3,#1 |
tst p0,r3 |
p0.gt br .0001 |
} |
return d; |
} |
|
byte *memset(byte *p, byte val, int size) |
{ |
asm { |
lw r1,32[bp] |
lw r2,40[bp] |
lw r3,48[bp] |
.0001: |
sb r2,[r1] |
addui r1,r1,#1 |
subui r3,r3,#1 |
tst p0,r3 |
p0.gt br .0001 |
} |
return p; |
} |
|
short int *memsetH(short int *p, short int val, int size) |
{ |
asm { |
lw r1,32[bp] |
lw r2,40[bp] |
lw r3,48[bp] |
.0001: |
sh r2,[r1] |
addui r1,r1,#4 |
subui r3,r3,#1 |
tst p0,r3 |
p0.gt br .0001 |
} |
return p; |
} |
|
int *memsetW(int *p, int val, int size) |
{ |
asm { |
lw r1,32[bp] |
lw r2,40[bp] |
lw r3,48[bp] |
.0001: |
sw r2,[r1] |
addui r1,r1,#8 |
subui r3,r3,#1 |
tst p0,r3 |
p0.gt br .0001 |
} |
return p; |
} |
|
byte *memchr(byte *p, byte val, int n) |
{ |
byte *su; |
|
for (su = p; n > 0; ++su, --n) |
if (*su==val) |
return su; |
return null; |
} |
|
int strlen(char *p) |
{ |
int n; |
|
if (p==(char *)0) return 0; |
for (n = 0; p[n]; n++) |
; |
return n; |
} |
|
char *strcpy(char *d, char *s) |
{ |
int nn; |
|
for (nn = 0; s[nn]; nn++) |
d[nn] = s[nn]; |
d[nn] = '\0'; |
return d; |
} |
|
char *strncpy(char *d, char *s, int size) |
{ |
int nn; |
|
for (nn = 0; nn < size; nn++) { |
d[nn] = s[nn]; |
if (s[nn]=='\0') |
break; |
} |
for (; nn < size; nn++) |
d[nn] = '\0'; |
return d; |
} |
|
int strncmp(unsigned char *a, unsigned char *b, int len) |
{ |
unsigned char *ua; |
unsigned char *ub; |
|
ua = a; |
ub = b; |
if (ua==ub) // duh |
return 0; |
for (; len > 0; ua++, ub++, len--) |
if (*ua != *ub) |
return *ua < *ub ? -1 : 1; |
else if (*ua == '\0') |
return 0; |
return 0; |
} |
|
char *strchr(char *p, char val, int n) |
{ |
char *su; |
|
for (su = p; n > 0; ++su, --n) |
if (*su==val) |
return su; |
return null; |
} |
|
/thor/trunk/software/c64/testfiles/VirtualTest1.cpp
0,0 → 1,77
|
extern int printf(char *, ...); |
|
class ATest |
{ |
public: |
int avar; |
static int masterKey; |
virtual int MyFunc(); |
int MyFunc(int a, int b); |
int (*fncptr)(); |
int MyOtherFunc(); |
int avarb; |
int Func3(int a,int b,int c); |
int avarc; |
}; |
|
class ATest2 : public ATest |
{ |
int urvar; |
int anothor_var; |
int MyFunc(); |
}; |
|
int ATest::MyFunc() |
{ |
if (this != 0) { |
prolog { |
asm { hi there }; |
} |
printf("master=%d",masterKey); |
printf("Hello World!"); |
printf("%d", avarc); |
Func3(avarc); |
} |
} |
|
int ATest2::MyFunc() |
{ |
if (this != 0) { |
printf("master=%d",masterKey); |
printf("ATest2 Hello World!"); |
printf("%d", avarc); |
} |
} |
|
int MyFunc(int a, int b) |
{ |
printf("a=%d",a); |
printf("b=%d",b); |
} |
|
int ATest::Func3(int b, int c, int d) |
{ |
printf("%d", b); |
printf("%d", avar); |
} |
|
|
int main() |
{ |
ATest testvar; |
ATest *p; |
ATest2 tv2; |
|
printf("%d",testvar.avar); |
testvar.MyFunc(); |
testvar.MyFunc(20 , 30); |
testvar.MyOtherFunc(); |
testvar.Func3(10 , 15 , 25); |
(*testvar.fncptr)(); |
printf("%d",testvar.avarb); |
p->MyFunc(); |
printf("%d",tv2.avar); |
} |
|
|
/thor/trunk/software/c64/testfiles/AFirstTest.cpp
0,0 → 1,6
// A first test |
|
int main(int argc, char **argv) |
{ |
} |
|
/thor/trunk/software/c64/testfiles/NewTest.cpp
0,0 → 1,21
// Test the new operator |
|
// These references will be non-mangled |
|
int printf(char *, ...); |
|
using name mangler; // use compiler name mangling facility |
|
int main(int argc, char **argv) |
{ |
void *obj; |
|
obj = new int[100]; |
printf("object pointer is %p\n", obj); |
delete obj; |
} |
|
// Back to using non-mangled names again |
using real names; |
|
|
/thor/trunk/software/c64/testfiles/AThirdTest.cpp
0,0 → 1,14
// A third test |
|
extern int printf(const char *, ...); |
|
int main(int argc, char **argv) |
{ |
try { |
printf("Hello world!"); |
} |
catch(int errn) { |
puts("Error in printf"); |
} |
} |
|
/thor/trunk/software/c64/testfiles/ASecondTest.cpp
0,0 → 1,9
// A second test |
|
extern int printf(const char *, ...); |
|
int main(int argc, char **argv) |
{ |
printf("Hello world!"); |
} |
|