Remove some temporary bottstrapping types. Change 'U_' to 'u'.

This commit is contained in:
David Brown 2016-09-01 14:45:23 +01:00
parent ee8342ef0d
commit 6851833a1e
14 changed files with 125 additions and 323 deletions

View file

@ -54,13 +54,13 @@ void SYSTEM_ENUMR(void *adr, LONGINT *typ, LONGINT size, LONGINT n, void (*P)())
} }
} }
LONGINT SYSTEM_DIV(U_LONGINT x, U_LONGINT y) LONGINT SYSTEM_DIV(uLONGINT x, uLONGINT y)
{ if ((LONGINT) x >= 0) return (x / y); { if ((LONGINT) x >= 0) return (x / y);
else return -((y - 1 - x) / y); else return -((y - 1 - x) / y);
} }
LONGINT SYSTEM_MOD(U_LONGINT x, U_LONGINT y) LONGINT SYSTEM_MOD(uLONGINT x, uLONGINT y)
{ U_LONGINT m; { uLONGINT m;
if ((LONGINT) x >= 0) return (x % y); if ((LONGINT) x >= 0) return (x % y);
else { m = (-x) % y; else { m = (-x) % y;
if (m != 0) return (y - m); else return 0; if (m != 0) return (y - m); else return 0;

View file

@ -34,27 +34,6 @@ typedef unsigned char uint8;
void *memcpy(void *dest, const void *source, size_t size); void *memcpy(void *dest, const void *source, size_t size);
// Temporary while bootstrapping:
#define SYSTEM_INT8 int8
#define SYSTEM_INT16 int16
#define SYSTEM_INT32 int32
#define SYSTEM_INT64 int64
#define SYSTEM_ADDRESS size_t
#define U_SYSTEM_INT8 uint8
#define U_SYSTEM_INT16 uint16
#define U_SYSTEM_INT32 uint32
#define U_SYSTEM_INT64 uint64
#define U_int8 uint8
#define U_int16 uint16
#define U_int32 uint32
#define U_int64 uint64
// The compiler uses 'import' and 'export' which translate to 'extern' and // The compiler uses 'import' and 'export' which translate to 'extern' and
// nothing respectively. // nothing respectively.
@ -72,21 +51,11 @@ void *memcpy(void *dest, const void *source, size_t size);
// Oberon types // Oberon types
// typedef char BOOLEAN;
// typedef unsigned char SYSTEM_BYTE;
// typedef unsigned char CHAR;
// typedef signed char SHORTINT;
// typedef float REAL;
// typedef double LONGREAL;
// typedef void* SYSTEM_PTR;
typedef int8 BOOLEAN; typedef int8 BOOLEAN;
typedef int8 SYSTEM_BYTE; typedef int8 SYSTEM_BYTE;
typedef uint8 U_SYSTEM_BYTE; typedef uint8 uSYSTEM_BYTE;
typedef uint8 CHAR; typedef uint8 CHAR;
typedef uint8 U_CHAR; typedef uint8 uCHAR;
typedef int8 SHORTINT;
typedef uint8 U_SHORTINT;
typedef float REAL; typedef float REAL;
typedef double LONGREAL; typedef double LONGREAL;
typedef void* SYSTEM_PTR; typedef void* SYSTEM_PTR;
@ -99,19 +68,17 @@ typedef size_t SYSTEM_ADRINT;
#if (__SIZEOF_POINTER__ == 8) || defined(LARGE) || defined(_WIN64) #if (__SIZEOF_POINTER__ == 8) || defined(LARGE) || defined(_WIN64)
typedef int32 INTEGER; typedef int32 INTEGER;
typedef int64 LONGINT; typedef int64 LONGINT;
typedef uint32 U_INTEGER; typedef uint64 uLONGINT;
typedef uint64 U_LONGINT;
#else #else
typedef int16 INTEGER; typedef int16 INTEGER;
typedef int32 LONGINT; typedef int32 LONGINT;
typedef uint16 U_INTEGER; typedef uint32 uLONGINT;
typedef uint32 U_LONGINT;
#endif #endif
// Unsigned variants are for use by shift and rotate macros. // Unsigned variants are for use by shift and rotate macros.
typedef U_LONGINT SET; typedef uLONGINT SET;
typedef U_LONGINT U_SET; typedef uLONGINT uSET;
@ -137,8 +104,8 @@ extern double SYSTEM_ABSD (double i);
extern void SYSTEM_INHERIT(LONGINT *t, LONGINT *t0); extern void SYSTEM_INHERIT(LONGINT *t, LONGINT *t0);
extern void SYSTEM_ENUMP (void *adr, LONGINT n, void (*P)()); extern void SYSTEM_ENUMP (void *adr, LONGINT n, void (*P)());
extern void SYSTEM_ENUMR (void *adr, LONGINT *typ, LONGINT size, LONGINT n, void (*P)()); extern void SYSTEM_ENUMR (void *adr, LONGINT *typ, LONGINT size, LONGINT n, void (*P)());
extern LONGINT SYSTEM_DIV (U_LONGINT x, U_LONGINT y); extern LONGINT SYSTEM_DIV (uLONGINT x, uLONGINT y);
extern LONGINT SYSTEM_MOD (U_LONGINT x, U_LONGINT y); extern LONGINT SYSTEM_MOD (uLONGINT x, uLONGINT y);
extern LONGINT SYSTEM_ENTIER (double x); extern LONGINT SYSTEM_ENTIER (double x);
@ -186,22 +153,22 @@ static int __str_cmp(CHAR *x, CHAR *y){
#define __GET(a, x, t) x= *(t*)(SYSTEM_ADRINT)(a) #define __GET(a, x, t) x= *(t*)(SYSTEM_ADRINT)(a)
#define __PUT(a, x, t) *(t*)(SYSTEM_ADRINT)(a)=x #define __PUT(a, x, t) *(t*)(SYSTEM_ADRINT)(a)=x
#define __LSHL(x, n, t) ((t)((U_##t)(x)<<(n))) #define __LSHL(x, n, t) ((t)((u##t)(x)<<(n)))
#define __LSHR(x, n, t) ((t)((U_##t)(x)>>(n))) #define __LSHR(x, n, t) ((t)((u##t)(x)>>(n)))
#define __LSH(x, n, t) ((n)>=0? __LSHL(x, n, t): __LSHR(x, -(n), t)) #define __LSH(x, n, t) ((n)>=0? __LSHL(x, n, t): __LSHR(x, -(n), t))
#define __ASHL(x, n) ((LONGINT)(x)<<(n)) #define __ASHL(x, n) ((LONGINT)(x)<<(n))
#define __ASHR(x, n) ((LONGINT)(x)>>(n)) #define __ASHR(x, n) ((LONGINT)(x)>>(n))
#define __ASH(x, n) ((n)>=0?__ASHL(x,n):__ASHR(x,-(n))) #define __ASH(x, n) ((n)>=0?__ASHL(x,n):__ASHR(x,-(n)))
#define __ROTL(x, n, t) ((t)((U_##t)(x)<<(n)|(U_##t)(x)>>(8*sizeof(t)-(n)))) #define __ROTL(x, n, t) ((t)((u##t)(x)<<(n)|(u##t)(x)>>(8*sizeof(t)-(n))))
#define __ROTR(x, n, t) ((t)((U_##t)(x)>>(n)|(U_##t)(x)<<(8*sizeof(t)-(n)))) #define __ROTR(x, n, t) ((t)((u##t)(x)>>(n)|(u##t)(x)<<(8*sizeof(t)-(n))))
#define __ROT(x, n, t) ((n)>=0? __ROTL(x, n, t): __ROTR(x, -(n), t)) #define __ROT(x, n, t) ((n)>=0? __ROTL(x, n, t): __ROTR(x, -(n), t))
#define __BIT(x, n) (*(U_LONGINT*)(x)>>(n)&1) #define __BIT(x, n) (*(uLONGINT*)(x)>>(n)&1)
#define __MOVE(s, d, n) memcpy((char*)(SYSTEM_ADRINT)(d),(char*)(SYSTEM_ADRINT)(s),n) #define __MOVE(s, d, n) memcpy((char*)(SYSTEM_ADRINT)(d),(char*)(SYSTEM_ADRINT)(s),n)
#define __ASHF(x, n) SYSTEM_ASH((LONGINT)(x), (LONGINT)(n)) #define __ASHF(x, n) SYSTEM_ASH((LONGINT)(x), (LONGINT)(n))
#define __SHORT(x, y) ((int)((U_LONGINT)(x)+(y)<(y)+(y)?(x):(__HALT(-8),0))) #define __SHORT(x, y) ((int)((uLONGINT)(x)+(y)<(y)+(y)?(x):(__HALT(-8),0)))
#define __SHORTF(x, y) ((int)(__RF((x)+(y),(y)+(y))-(y))) #define __SHORTF(x, y) ((int)(__RF((x)+(y),(y)+(y))-(y)))
#define __CHR(x) ((CHAR)__R(x, 256)) #define __CHR(x) ((CHAR)__R(x, 256))
#define __CHRF(x) ((CHAR)__RF(x, 256)) #define __CHRF(x) ((CHAR)__RF(x, 256))
@ -215,7 +182,7 @@ static int __str_cmp(CHAR *x, CHAR *y){
#define __ABSFD(x) SYSTEM_ABSD((double)(x)) #define __ABSFD(x) SYSTEM_ABSD((double)(x))
#define __CAP(ch) ((CHAR)((ch)&0x5f)) #define __CAP(ch) ((CHAR)((ch)&0x5f))
#define __ODD(x) ((x)&1) #define __ODD(x) ((x)&1)
#define __IN(x, s) ((x)>=0 && (x)<(8*sizeof(SET)) && ((((U_SET)(s))>>(x))&1)) #define __IN(x, s) ((x)>=0 && (x)<(8*sizeof(SET)) && ((((uSET)(s))>>(x))&1))
#define __SETOF(x) ((SET)1<<(x)) #define __SETOF(x) ((SET)1<<(x))
#define __SETRNG(l, h) ((~(SET)0<<(l))&~(SET)0>>(8*sizeof(SET)-1-(h))) #define __SETRNG(l, h) ((~(SET)0<<(l))&~(SET)0>>(8*sizeof(SET)-1-(h)))
#define __MASK(x, m) ((x)&~(m)) #define __MASK(x, m) ((x)&~(m))
@ -224,9 +191,9 @@ static int __str_cmp(CHAR *x, CHAR *y){
// Runtime checks // Runtime checks
#define __X(i, ub) (((U_LONGINT)(i)<(U_LONGINT)(ub))?i:(__HALT(-2),0)) #define __X(i, ub) (((uLONGINT)(i)<(uLONGINT)(ub))?i:(__HALT(-2),0))
#define __XF(i, ub) SYSTEM_XCHK((LONGINT)(i), (LONGINT)(ub)) #define __XF(i, ub) SYSTEM_XCHK((LONGINT)(i), (LONGINT)(ub))
#define __R(i, ub) (((U_LONGINT)(i)<(U_LONGINT)(ub))?i:(__HALT(-8),0)) #define __R(i, ub) (((uLONGINT)(i)<(uLONGINT)(ub))?i:(__HALT(-8),0))
#define __RF(i, ub) SYSTEM_RCHK((LONGINT)(i),(LONGINT)(ub)) #define __RF(i, ub) SYSTEM_RCHK((LONGINT)(i),(LONGINT)(ub))
#define __RETCHK __retchk: __HALT(-3); return 0; #define __RETCHK __retchk: __HALT(-3); return 0;
#define __CASECHK __HALT(-4) #define __CASECHK __HALT(-4)

View file

@ -54,13 +54,13 @@ void SYSTEM_ENUMR(void *adr, LONGINT *typ, LONGINT size, LONGINT n, void (*P)())
} }
} }
LONGINT SYSTEM_DIV(U_LONGINT x, U_LONGINT y) LONGINT SYSTEM_DIV(uLONGINT x, uLONGINT y)
{ if ((LONGINT) x >= 0) return (x / y); { if ((LONGINT) x >= 0) return (x / y);
else return -((y - 1 - x) / y); else return -((y - 1 - x) / y);
} }
LONGINT SYSTEM_MOD(U_LONGINT x, U_LONGINT y) LONGINT SYSTEM_MOD(uLONGINT x, uLONGINT y)
{ U_LONGINT m; { uLONGINT m;
if ((LONGINT) x >= 0) return (x % y); if ((LONGINT) x >= 0) return (x % y);
else { m = (-x) % y; else { m = (-x) % y;
if (m != 0) return (y - m); else return 0; if (m != 0) return (y - m); else return 0;

View file

@ -34,27 +34,6 @@ typedef unsigned char uint8;
void *memcpy(void *dest, const void *source, size_t size); void *memcpy(void *dest, const void *source, size_t size);
// Temporary while bootstrapping:
#define SYSTEM_INT8 int8
#define SYSTEM_INT16 int16
#define SYSTEM_INT32 int32
#define SYSTEM_INT64 int64
#define SYSTEM_ADDRESS size_t
#define U_SYSTEM_INT8 uint8
#define U_SYSTEM_INT16 uint16
#define U_SYSTEM_INT32 uint32
#define U_SYSTEM_INT64 uint64
#define U_int8 uint8
#define U_int16 uint16
#define U_int32 uint32
#define U_int64 uint64
// The compiler uses 'import' and 'export' which translate to 'extern' and // The compiler uses 'import' and 'export' which translate to 'extern' and
// nothing respectively. // nothing respectively.
@ -72,21 +51,11 @@ void *memcpy(void *dest, const void *source, size_t size);
// Oberon types // Oberon types
// typedef char BOOLEAN;
// typedef unsigned char SYSTEM_BYTE;
// typedef unsigned char CHAR;
// typedef signed char SHORTINT;
// typedef float REAL;
// typedef double LONGREAL;
// typedef void* SYSTEM_PTR;
typedef int8 BOOLEAN; typedef int8 BOOLEAN;
typedef int8 SYSTEM_BYTE; typedef int8 SYSTEM_BYTE;
typedef uint8 U_SYSTEM_BYTE; typedef uint8 uSYSTEM_BYTE;
typedef uint8 CHAR; typedef uint8 CHAR;
typedef uint8 U_CHAR; typedef uint8 uCHAR;
typedef int8 SHORTINT;
typedef uint8 U_SHORTINT;
typedef float REAL; typedef float REAL;
typedef double LONGREAL; typedef double LONGREAL;
typedef void* SYSTEM_PTR; typedef void* SYSTEM_PTR;
@ -99,19 +68,17 @@ typedef size_t SYSTEM_ADRINT;
#if (__SIZEOF_POINTER__ == 8) || defined(LARGE) || defined(_WIN64) #if (__SIZEOF_POINTER__ == 8) || defined(LARGE) || defined(_WIN64)
typedef int32 INTEGER; typedef int32 INTEGER;
typedef int64 LONGINT; typedef int64 LONGINT;
typedef uint32 U_INTEGER; typedef uint64 uLONGINT;
typedef uint64 U_LONGINT;
#else #else
typedef int16 INTEGER; typedef int16 INTEGER;
typedef int32 LONGINT; typedef int32 LONGINT;
typedef uint16 U_INTEGER; typedef uint32 uLONGINT;
typedef uint32 U_LONGINT;
#endif #endif
// Unsigned variants are for use by shift and rotate macros. // Unsigned variants are for use by shift and rotate macros.
typedef U_LONGINT SET; typedef uLONGINT SET;
typedef U_LONGINT U_SET; typedef uLONGINT uSET;
@ -137,8 +104,8 @@ extern double SYSTEM_ABSD (double i);
extern void SYSTEM_INHERIT(LONGINT *t, LONGINT *t0); extern void SYSTEM_INHERIT(LONGINT *t, LONGINT *t0);
extern void SYSTEM_ENUMP (void *adr, LONGINT n, void (*P)()); extern void SYSTEM_ENUMP (void *adr, LONGINT n, void (*P)());
extern void SYSTEM_ENUMR (void *adr, LONGINT *typ, LONGINT size, LONGINT n, void (*P)()); extern void SYSTEM_ENUMR (void *adr, LONGINT *typ, LONGINT size, LONGINT n, void (*P)());
extern LONGINT SYSTEM_DIV (U_LONGINT x, U_LONGINT y); extern LONGINT SYSTEM_DIV (uLONGINT x, uLONGINT y);
extern LONGINT SYSTEM_MOD (U_LONGINT x, U_LONGINT y); extern LONGINT SYSTEM_MOD (uLONGINT x, uLONGINT y);
extern LONGINT SYSTEM_ENTIER (double x); extern LONGINT SYSTEM_ENTIER (double x);
@ -186,22 +153,22 @@ static int __str_cmp(CHAR *x, CHAR *y){
#define __GET(a, x, t) x= *(t*)(SYSTEM_ADRINT)(a) #define __GET(a, x, t) x= *(t*)(SYSTEM_ADRINT)(a)
#define __PUT(a, x, t) *(t*)(SYSTEM_ADRINT)(a)=x #define __PUT(a, x, t) *(t*)(SYSTEM_ADRINT)(a)=x
#define __LSHL(x, n, t) ((t)((U_##t)(x)<<(n))) #define __LSHL(x, n, t) ((t)((u##t)(x)<<(n)))
#define __LSHR(x, n, t) ((t)((U_##t)(x)>>(n))) #define __LSHR(x, n, t) ((t)((u##t)(x)>>(n)))
#define __LSH(x, n, t) ((n)>=0? __LSHL(x, n, t): __LSHR(x, -(n), t)) #define __LSH(x, n, t) ((n)>=0? __LSHL(x, n, t): __LSHR(x, -(n), t))
#define __ASHL(x, n) ((LONGINT)(x)<<(n)) #define __ASHL(x, n) ((LONGINT)(x)<<(n))
#define __ASHR(x, n) ((LONGINT)(x)>>(n)) #define __ASHR(x, n) ((LONGINT)(x)>>(n))
#define __ASH(x, n) ((n)>=0?__ASHL(x,n):__ASHR(x,-(n))) #define __ASH(x, n) ((n)>=0?__ASHL(x,n):__ASHR(x,-(n)))
#define __ROTL(x, n, t) ((t)((U_##t)(x)<<(n)|(U_##t)(x)>>(8*sizeof(t)-(n)))) #define __ROTL(x, n, t) ((t)((u##t)(x)<<(n)|(u##t)(x)>>(8*sizeof(t)-(n))))
#define __ROTR(x, n, t) ((t)((U_##t)(x)>>(n)|(U_##t)(x)<<(8*sizeof(t)-(n)))) #define __ROTR(x, n, t) ((t)((u##t)(x)>>(n)|(u##t)(x)<<(8*sizeof(t)-(n))))
#define __ROT(x, n, t) ((n)>=0? __ROTL(x, n, t): __ROTR(x, -(n), t)) #define __ROT(x, n, t) ((n)>=0? __ROTL(x, n, t): __ROTR(x, -(n), t))
#define __BIT(x, n) (*(U_LONGINT*)(x)>>(n)&1) #define __BIT(x, n) (*(uLONGINT*)(x)>>(n)&1)
#define __MOVE(s, d, n) memcpy((char*)(SYSTEM_ADRINT)(d),(char*)(SYSTEM_ADRINT)(s),n) #define __MOVE(s, d, n) memcpy((char*)(SYSTEM_ADRINT)(d),(char*)(SYSTEM_ADRINT)(s),n)
#define __ASHF(x, n) SYSTEM_ASH((LONGINT)(x), (LONGINT)(n)) #define __ASHF(x, n) SYSTEM_ASH((LONGINT)(x), (LONGINT)(n))
#define __SHORT(x, y) ((int)((U_LONGINT)(x)+(y)<(y)+(y)?(x):(__HALT(-8),0))) #define __SHORT(x, y) ((int)((uLONGINT)(x)+(y)<(y)+(y)?(x):(__HALT(-8),0)))
#define __SHORTF(x, y) ((int)(__RF((x)+(y),(y)+(y))-(y))) #define __SHORTF(x, y) ((int)(__RF((x)+(y),(y)+(y))-(y)))
#define __CHR(x) ((CHAR)__R(x, 256)) #define __CHR(x) ((CHAR)__R(x, 256))
#define __CHRF(x) ((CHAR)__RF(x, 256)) #define __CHRF(x) ((CHAR)__RF(x, 256))
@ -215,7 +182,7 @@ static int __str_cmp(CHAR *x, CHAR *y){
#define __ABSFD(x) SYSTEM_ABSD((double)(x)) #define __ABSFD(x) SYSTEM_ABSD((double)(x))
#define __CAP(ch) ((CHAR)((ch)&0x5f)) #define __CAP(ch) ((CHAR)((ch)&0x5f))
#define __ODD(x) ((x)&1) #define __ODD(x) ((x)&1)
#define __IN(x, s) ((x)>=0 && (x)<(8*sizeof(SET)) && ((((U_SET)(s))>>(x))&1)) #define __IN(x, s) ((x)>=0 && (x)<(8*sizeof(SET)) && ((((uSET)(s))>>(x))&1))
#define __SETOF(x) ((SET)1<<(x)) #define __SETOF(x) ((SET)1<<(x))
#define __SETRNG(l, h) ((~(SET)0<<(l))&~(SET)0>>(8*sizeof(SET)-1-(h))) #define __SETRNG(l, h) ((~(SET)0<<(l))&~(SET)0>>(8*sizeof(SET)-1-(h)))
#define __MASK(x, m) ((x)&~(m)) #define __MASK(x, m) ((x)&~(m))
@ -224,9 +191,9 @@ static int __str_cmp(CHAR *x, CHAR *y){
// Runtime checks // Runtime checks
#define __X(i, ub) (((U_LONGINT)(i)<(U_LONGINT)(ub))?i:(__HALT(-2),0)) #define __X(i, ub) (((uLONGINT)(i)<(uLONGINT)(ub))?i:(__HALT(-2),0))
#define __XF(i, ub) SYSTEM_XCHK((LONGINT)(i), (LONGINT)(ub)) #define __XF(i, ub) SYSTEM_XCHK((LONGINT)(i), (LONGINT)(ub))
#define __R(i, ub) (((U_LONGINT)(i)<(U_LONGINT)(ub))?i:(__HALT(-8),0)) #define __R(i, ub) (((uLONGINT)(i)<(uLONGINT)(ub))?i:(__HALT(-8),0))
#define __RF(i, ub) SYSTEM_RCHK((LONGINT)(i),(LONGINT)(ub)) #define __RF(i, ub) SYSTEM_RCHK((LONGINT)(i),(LONGINT)(ub))
#define __RETCHK __retchk: __HALT(-3); return 0; #define __RETCHK __retchk: __HALT(-3); return 0;
#define __CASECHK __HALT(-4) #define __CASECHK __HALT(-4)

View file

@ -54,13 +54,13 @@ void SYSTEM_ENUMR(void *adr, LONGINT *typ, LONGINT size, LONGINT n, void (*P)())
} }
} }
LONGINT SYSTEM_DIV(U_LONGINT x, U_LONGINT y) LONGINT SYSTEM_DIV(uLONGINT x, uLONGINT y)
{ if ((LONGINT) x >= 0) return (x / y); { if ((LONGINT) x >= 0) return (x / y);
else return -((y - 1 - x) / y); else return -((y - 1 - x) / y);
} }
LONGINT SYSTEM_MOD(U_LONGINT x, U_LONGINT y) LONGINT SYSTEM_MOD(uLONGINT x, uLONGINT y)
{ U_LONGINT m; { uLONGINT m;
if ((LONGINT) x >= 0) return (x % y); if ((LONGINT) x >= 0) return (x % y);
else { m = (-x) % y; else { m = (-x) % y;
if (m != 0) return (y - m); else return 0; if (m != 0) return (y - m); else return 0;

View file

@ -34,27 +34,6 @@ typedef unsigned char uint8;
void *memcpy(void *dest, const void *source, size_t size); void *memcpy(void *dest, const void *source, size_t size);
// Temporary while bootstrapping:
#define SYSTEM_INT8 int8
#define SYSTEM_INT16 int16
#define SYSTEM_INT32 int32
#define SYSTEM_INT64 int64
#define SYSTEM_ADDRESS size_t
#define U_SYSTEM_INT8 uint8
#define U_SYSTEM_INT16 uint16
#define U_SYSTEM_INT32 uint32
#define U_SYSTEM_INT64 uint64
#define U_int8 uint8
#define U_int16 uint16
#define U_int32 uint32
#define U_int64 uint64
// The compiler uses 'import' and 'export' which translate to 'extern' and // The compiler uses 'import' and 'export' which translate to 'extern' and
// nothing respectively. // nothing respectively.
@ -72,21 +51,11 @@ void *memcpy(void *dest, const void *source, size_t size);
// Oberon types // Oberon types
// typedef char BOOLEAN;
// typedef unsigned char SYSTEM_BYTE;
// typedef unsigned char CHAR;
// typedef signed char SHORTINT;
// typedef float REAL;
// typedef double LONGREAL;
// typedef void* SYSTEM_PTR;
typedef int8 BOOLEAN; typedef int8 BOOLEAN;
typedef int8 SYSTEM_BYTE; typedef int8 SYSTEM_BYTE;
typedef uint8 U_SYSTEM_BYTE; typedef uint8 uSYSTEM_BYTE;
typedef uint8 CHAR; typedef uint8 CHAR;
typedef uint8 U_CHAR; typedef uint8 uCHAR;
typedef int8 SHORTINT;
typedef uint8 U_SHORTINT;
typedef float REAL; typedef float REAL;
typedef double LONGREAL; typedef double LONGREAL;
typedef void* SYSTEM_PTR; typedef void* SYSTEM_PTR;
@ -99,19 +68,17 @@ typedef size_t SYSTEM_ADRINT;
#if (__SIZEOF_POINTER__ == 8) || defined(LARGE) || defined(_WIN64) #if (__SIZEOF_POINTER__ == 8) || defined(LARGE) || defined(_WIN64)
typedef int32 INTEGER; typedef int32 INTEGER;
typedef int64 LONGINT; typedef int64 LONGINT;
typedef uint32 U_INTEGER; typedef uint64 uLONGINT;
typedef uint64 U_LONGINT;
#else #else
typedef int16 INTEGER; typedef int16 INTEGER;
typedef int32 LONGINT; typedef int32 LONGINT;
typedef uint16 U_INTEGER; typedef uint32 uLONGINT;
typedef uint32 U_LONGINT;
#endif #endif
// Unsigned variants are for use by shift and rotate macros. // Unsigned variants are for use by shift and rotate macros.
typedef U_LONGINT SET; typedef uLONGINT SET;
typedef U_LONGINT U_SET; typedef uLONGINT uSET;
@ -137,8 +104,8 @@ extern double SYSTEM_ABSD (double i);
extern void SYSTEM_INHERIT(LONGINT *t, LONGINT *t0); extern void SYSTEM_INHERIT(LONGINT *t, LONGINT *t0);
extern void SYSTEM_ENUMP (void *adr, LONGINT n, void (*P)()); extern void SYSTEM_ENUMP (void *adr, LONGINT n, void (*P)());
extern void SYSTEM_ENUMR (void *adr, LONGINT *typ, LONGINT size, LONGINT n, void (*P)()); extern void SYSTEM_ENUMR (void *adr, LONGINT *typ, LONGINT size, LONGINT n, void (*P)());
extern LONGINT SYSTEM_DIV (U_LONGINT x, U_LONGINT y); extern LONGINT SYSTEM_DIV (uLONGINT x, uLONGINT y);
extern LONGINT SYSTEM_MOD (U_LONGINT x, U_LONGINT y); extern LONGINT SYSTEM_MOD (uLONGINT x, uLONGINT y);
extern LONGINT SYSTEM_ENTIER (double x); extern LONGINT SYSTEM_ENTIER (double x);
@ -186,22 +153,22 @@ static int __str_cmp(CHAR *x, CHAR *y){
#define __GET(a, x, t) x= *(t*)(SYSTEM_ADRINT)(a) #define __GET(a, x, t) x= *(t*)(SYSTEM_ADRINT)(a)
#define __PUT(a, x, t) *(t*)(SYSTEM_ADRINT)(a)=x #define __PUT(a, x, t) *(t*)(SYSTEM_ADRINT)(a)=x
#define __LSHL(x, n, t) ((t)((U_##t)(x)<<(n))) #define __LSHL(x, n, t) ((t)((u##t)(x)<<(n)))
#define __LSHR(x, n, t) ((t)((U_##t)(x)>>(n))) #define __LSHR(x, n, t) ((t)((u##t)(x)>>(n)))
#define __LSH(x, n, t) ((n)>=0? __LSHL(x, n, t): __LSHR(x, -(n), t)) #define __LSH(x, n, t) ((n)>=0? __LSHL(x, n, t): __LSHR(x, -(n), t))
#define __ASHL(x, n) ((LONGINT)(x)<<(n)) #define __ASHL(x, n) ((LONGINT)(x)<<(n))
#define __ASHR(x, n) ((LONGINT)(x)>>(n)) #define __ASHR(x, n) ((LONGINT)(x)>>(n))
#define __ASH(x, n) ((n)>=0?__ASHL(x,n):__ASHR(x,-(n))) #define __ASH(x, n) ((n)>=0?__ASHL(x,n):__ASHR(x,-(n)))
#define __ROTL(x, n, t) ((t)((U_##t)(x)<<(n)|(U_##t)(x)>>(8*sizeof(t)-(n)))) #define __ROTL(x, n, t) ((t)((u##t)(x)<<(n)|(u##t)(x)>>(8*sizeof(t)-(n))))
#define __ROTR(x, n, t) ((t)((U_##t)(x)>>(n)|(U_##t)(x)<<(8*sizeof(t)-(n)))) #define __ROTR(x, n, t) ((t)((u##t)(x)>>(n)|(u##t)(x)<<(8*sizeof(t)-(n))))
#define __ROT(x, n, t) ((n)>=0? __ROTL(x, n, t): __ROTR(x, -(n), t)) #define __ROT(x, n, t) ((n)>=0? __ROTL(x, n, t): __ROTR(x, -(n), t))
#define __BIT(x, n) (*(U_LONGINT*)(x)>>(n)&1) #define __BIT(x, n) (*(uLONGINT*)(x)>>(n)&1)
#define __MOVE(s, d, n) memcpy((char*)(SYSTEM_ADRINT)(d),(char*)(SYSTEM_ADRINT)(s),n) #define __MOVE(s, d, n) memcpy((char*)(SYSTEM_ADRINT)(d),(char*)(SYSTEM_ADRINT)(s),n)
#define __ASHF(x, n) SYSTEM_ASH((LONGINT)(x), (LONGINT)(n)) #define __ASHF(x, n) SYSTEM_ASH((LONGINT)(x), (LONGINT)(n))
#define __SHORT(x, y) ((int)((U_LONGINT)(x)+(y)<(y)+(y)?(x):(__HALT(-8),0))) #define __SHORT(x, y) ((int)((uLONGINT)(x)+(y)<(y)+(y)?(x):(__HALT(-8),0)))
#define __SHORTF(x, y) ((int)(__RF((x)+(y),(y)+(y))-(y))) #define __SHORTF(x, y) ((int)(__RF((x)+(y),(y)+(y))-(y)))
#define __CHR(x) ((CHAR)__R(x, 256)) #define __CHR(x) ((CHAR)__R(x, 256))
#define __CHRF(x) ((CHAR)__RF(x, 256)) #define __CHRF(x) ((CHAR)__RF(x, 256))
@ -215,7 +182,7 @@ static int __str_cmp(CHAR *x, CHAR *y){
#define __ABSFD(x) SYSTEM_ABSD((double)(x)) #define __ABSFD(x) SYSTEM_ABSD((double)(x))
#define __CAP(ch) ((CHAR)((ch)&0x5f)) #define __CAP(ch) ((CHAR)((ch)&0x5f))
#define __ODD(x) ((x)&1) #define __ODD(x) ((x)&1)
#define __IN(x, s) ((x)>=0 && (x)<(8*sizeof(SET)) && ((((U_SET)(s))>>(x))&1)) #define __IN(x, s) ((x)>=0 && (x)<(8*sizeof(SET)) && ((((uSET)(s))>>(x))&1))
#define __SETOF(x) ((SET)1<<(x)) #define __SETOF(x) ((SET)1<<(x))
#define __SETRNG(l, h) ((~(SET)0<<(l))&~(SET)0>>(8*sizeof(SET)-1-(h))) #define __SETRNG(l, h) ((~(SET)0<<(l))&~(SET)0>>(8*sizeof(SET)-1-(h)))
#define __MASK(x, m) ((x)&~(m)) #define __MASK(x, m) ((x)&~(m))
@ -224,9 +191,9 @@ static int __str_cmp(CHAR *x, CHAR *y){
// Runtime checks // Runtime checks
#define __X(i, ub) (((U_LONGINT)(i)<(U_LONGINT)(ub))?i:(__HALT(-2),0)) #define __X(i, ub) (((uLONGINT)(i)<(uLONGINT)(ub))?i:(__HALT(-2),0))
#define __XF(i, ub) SYSTEM_XCHK((LONGINT)(i), (LONGINT)(ub)) #define __XF(i, ub) SYSTEM_XCHK((LONGINT)(i), (LONGINT)(ub))
#define __R(i, ub) (((U_LONGINT)(i)<(U_LONGINT)(ub))?i:(__HALT(-8),0)) #define __R(i, ub) (((uLONGINT)(i)<(uLONGINT)(ub))?i:(__HALT(-8),0))
#define __RF(i, ub) SYSTEM_RCHK((LONGINT)(i),(LONGINT)(ub)) #define __RF(i, ub) SYSTEM_RCHK((LONGINT)(i),(LONGINT)(ub))
#define __RETCHK __retchk: __HALT(-3); return 0; #define __RETCHK __retchk: __HALT(-3); return 0;
#define __CASECHK __HALT(-4) #define __CASECHK __HALT(-4)

View file

@ -54,13 +54,13 @@ void SYSTEM_ENUMR(void *adr, LONGINT *typ, LONGINT size, LONGINT n, void (*P)())
} }
} }
LONGINT SYSTEM_DIV(U_LONGINT x, U_LONGINT y) LONGINT SYSTEM_DIV(uLONGINT x, uLONGINT y)
{ if ((LONGINT) x >= 0) return (x / y); { if ((LONGINT) x >= 0) return (x / y);
else return -((y - 1 - x) / y); else return -((y - 1 - x) / y);
} }
LONGINT SYSTEM_MOD(U_LONGINT x, U_LONGINT y) LONGINT SYSTEM_MOD(uLONGINT x, uLONGINT y)
{ U_LONGINT m; { uLONGINT m;
if ((LONGINT) x >= 0) return (x % y); if ((LONGINT) x >= 0) return (x % y);
else { m = (-x) % y; else { m = (-x) % y;
if (m != 0) return (y - m); else return 0; if (m != 0) return (y - m); else return 0;

View file

@ -34,27 +34,6 @@ typedef unsigned char uint8;
void *memcpy(void *dest, const void *source, size_t size); void *memcpy(void *dest, const void *source, size_t size);
// Temporary while bootstrapping:
#define SYSTEM_INT8 int8
#define SYSTEM_INT16 int16
#define SYSTEM_INT32 int32
#define SYSTEM_INT64 int64
#define SYSTEM_ADDRESS size_t
#define U_SYSTEM_INT8 uint8
#define U_SYSTEM_INT16 uint16
#define U_SYSTEM_INT32 uint32
#define U_SYSTEM_INT64 uint64
#define U_int8 uint8
#define U_int16 uint16
#define U_int32 uint32
#define U_int64 uint64
// The compiler uses 'import' and 'export' which translate to 'extern' and // The compiler uses 'import' and 'export' which translate to 'extern' and
// nothing respectively. // nothing respectively.
@ -72,21 +51,11 @@ void *memcpy(void *dest, const void *source, size_t size);
// Oberon types // Oberon types
// typedef char BOOLEAN;
// typedef unsigned char SYSTEM_BYTE;
// typedef unsigned char CHAR;
// typedef signed char SHORTINT;
// typedef float REAL;
// typedef double LONGREAL;
// typedef void* SYSTEM_PTR;
typedef int8 BOOLEAN; typedef int8 BOOLEAN;
typedef int8 SYSTEM_BYTE; typedef int8 SYSTEM_BYTE;
typedef uint8 U_SYSTEM_BYTE; typedef uint8 uSYSTEM_BYTE;
typedef uint8 CHAR; typedef uint8 CHAR;
typedef uint8 U_CHAR; typedef uint8 uCHAR;
typedef int8 SHORTINT;
typedef uint8 U_SHORTINT;
typedef float REAL; typedef float REAL;
typedef double LONGREAL; typedef double LONGREAL;
typedef void* SYSTEM_PTR; typedef void* SYSTEM_PTR;
@ -99,19 +68,17 @@ typedef size_t SYSTEM_ADRINT;
#if (__SIZEOF_POINTER__ == 8) || defined(LARGE) || defined(_WIN64) #if (__SIZEOF_POINTER__ == 8) || defined(LARGE) || defined(_WIN64)
typedef int32 INTEGER; typedef int32 INTEGER;
typedef int64 LONGINT; typedef int64 LONGINT;
typedef uint32 U_INTEGER; typedef uint64 uLONGINT;
typedef uint64 U_LONGINT;
#else #else
typedef int16 INTEGER; typedef int16 INTEGER;
typedef int32 LONGINT; typedef int32 LONGINT;
typedef uint16 U_INTEGER; typedef uint32 uLONGINT;
typedef uint32 U_LONGINT;
#endif #endif
// Unsigned variants are for use by shift and rotate macros. // Unsigned variants are for use by shift and rotate macros.
typedef U_LONGINT SET; typedef uLONGINT SET;
typedef U_LONGINT U_SET; typedef uLONGINT uSET;
@ -137,8 +104,8 @@ extern double SYSTEM_ABSD (double i);
extern void SYSTEM_INHERIT(LONGINT *t, LONGINT *t0); extern void SYSTEM_INHERIT(LONGINT *t, LONGINT *t0);
extern void SYSTEM_ENUMP (void *adr, LONGINT n, void (*P)()); extern void SYSTEM_ENUMP (void *adr, LONGINT n, void (*P)());
extern void SYSTEM_ENUMR (void *adr, LONGINT *typ, LONGINT size, LONGINT n, void (*P)()); extern void SYSTEM_ENUMR (void *adr, LONGINT *typ, LONGINT size, LONGINT n, void (*P)());
extern LONGINT SYSTEM_DIV (U_LONGINT x, U_LONGINT y); extern LONGINT SYSTEM_DIV (uLONGINT x, uLONGINT y);
extern LONGINT SYSTEM_MOD (U_LONGINT x, U_LONGINT y); extern LONGINT SYSTEM_MOD (uLONGINT x, uLONGINT y);
extern LONGINT SYSTEM_ENTIER (double x); extern LONGINT SYSTEM_ENTIER (double x);
@ -186,22 +153,22 @@ static int __str_cmp(CHAR *x, CHAR *y){
#define __GET(a, x, t) x= *(t*)(SYSTEM_ADRINT)(a) #define __GET(a, x, t) x= *(t*)(SYSTEM_ADRINT)(a)
#define __PUT(a, x, t) *(t*)(SYSTEM_ADRINT)(a)=x #define __PUT(a, x, t) *(t*)(SYSTEM_ADRINT)(a)=x
#define __LSHL(x, n, t) ((t)((U_##t)(x)<<(n))) #define __LSHL(x, n, t) ((t)((u##t)(x)<<(n)))
#define __LSHR(x, n, t) ((t)((U_##t)(x)>>(n))) #define __LSHR(x, n, t) ((t)((u##t)(x)>>(n)))
#define __LSH(x, n, t) ((n)>=0? __LSHL(x, n, t): __LSHR(x, -(n), t)) #define __LSH(x, n, t) ((n)>=0? __LSHL(x, n, t): __LSHR(x, -(n), t))
#define __ASHL(x, n) ((LONGINT)(x)<<(n)) #define __ASHL(x, n) ((LONGINT)(x)<<(n))
#define __ASHR(x, n) ((LONGINT)(x)>>(n)) #define __ASHR(x, n) ((LONGINT)(x)>>(n))
#define __ASH(x, n) ((n)>=0?__ASHL(x,n):__ASHR(x,-(n))) #define __ASH(x, n) ((n)>=0?__ASHL(x,n):__ASHR(x,-(n)))
#define __ROTL(x, n, t) ((t)((U_##t)(x)<<(n)|(U_##t)(x)>>(8*sizeof(t)-(n)))) #define __ROTL(x, n, t) ((t)((u##t)(x)<<(n)|(u##t)(x)>>(8*sizeof(t)-(n))))
#define __ROTR(x, n, t) ((t)((U_##t)(x)>>(n)|(U_##t)(x)<<(8*sizeof(t)-(n)))) #define __ROTR(x, n, t) ((t)((u##t)(x)>>(n)|(u##t)(x)<<(8*sizeof(t)-(n))))
#define __ROT(x, n, t) ((n)>=0? __ROTL(x, n, t): __ROTR(x, -(n), t)) #define __ROT(x, n, t) ((n)>=0? __ROTL(x, n, t): __ROTR(x, -(n), t))
#define __BIT(x, n) (*(U_LONGINT*)(x)>>(n)&1) #define __BIT(x, n) (*(uLONGINT*)(x)>>(n)&1)
#define __MOVE(s, d, n) memcpy((char*)(SYSTEM_ADRINT)(d),(char*)(SYSTEM_ADRINT)(s),n) #define __MOVE(s, d, n) memcpy((char*)(SYSTEM_ADRINT)(d),(char*)(SYSTEM_ADRINT)(s),n)
#define __ASHF(x, n) SYSTEM_ASH((LONGINT)(x), (LONGINT)(n)) #define __ASHF(x, n) SYSTEM_ASH((LONGINT)(x), (LONGINT)(n))
#define __SHORT(x, y) ((int)((U_LONGINT)(x)+(y)<(y)+(y)?(x):(__HALT(-8),0))) #define __SHORT(x, y) ((int)((uLONGINT)(x)+(y)<(y)+(y)?(x):(__HALT(-8),0)))
#define __SHORTF(x, y) ((int)(__RF((x)+(y),(y)+(y))-(y))) #define __SHORTF(x, y) ((int)(__RF((x)+(y),(y)+(y))-(y)))
#define __CHR(x) ((CHAR)__R(x, 256)) #define __CHR(x) ((CHAR)__R(x, 256))
#define __CHRF(x) ((CHAR)__RF(x, 256)) #define __CHRF(x) ((CHAR)__RF(x, 256))
@ -215,7 +182,7 @@ static int __str_cmp(CHAR *x, CHAR *y){
#define __ABSFD(x) SYSTEM_ABSD((double)(x)) #define __ABSFD(x) SYSTEM_ABSD((double)(x))
#define __CAP(ch) ((CHAR)((ch)&0x5f)) #define __CAP(ch) ((CHAR)((ch)&0x5f))
#define __ODD(x) ((x)&1) #define __ODD(x) ((x)&1)
#define __IN(x, s) ((x)>=0 && (x)<(8*sizeof(SET)) && ((((U_SET)(s))>>(x))&1)) #define __IN(x, s) ((x)>=0 && (x)<(8*sizeof(SET)) && ((((uSET)(s))>>(x))&1))
#define __SETOF(x) ((SET)1<<(x)) #define __SETOF(x) ((SET)1<<(x))
#define __SETRNG(l, h) ((~(SET)0<<(l))&~(SET)0>>(8*sizeof(SET)-1-(h))) #define __SETRNG(l, h) ((~(SET)0<<(l))&~(SET)0>>(8*sizeof(SET)-1-(h)))
#define __MASK(x, m) ((x)&~(m)) #define __MASK(x, m) ((x)&~(m))
@ -224,9 +191,9 @@ static int __str_cmp(CHAR *x, CHAR *y){
// Runtime checks // Runtime checks
#define __X(i, ub) (((U_LONGINT)(i)<(U_LONGINT)(ub))?i:(__HALT(-2),0)) #define __X(i, ub) (((uLONGINT)(i)<(uLONGINT)(ub))?i:(__HALT(-2),0))
#define __XF(i, ub) SYSTEM_XCHK((LONGINT)(i), (LONGINT)(ub)) #define __XF(i, ub) SYSTEM_XCHK((LONGINT)(i), (LONGINT)(ub))
#define __R(i, ub) (((U_LONGINT)(i)<(U_LONGINT)(ub))?i:(__HALT(-8),0)) #define __R(i, ub) (((uLONGINT)(i)<(uLONGINT)(ub))?i:(__HALT(-8),0))
#define __RF(i, ub) SYSTEM_RCHK((LONGINT)(i),(LONGINT)(ub)) #define __RF(i, ub) SYSTEM_RCHK((LONGINT)(i),(LONGINT)(ub))
#define __RETCHK __retchk: __HALT(-3); return 0; #define __RETCHK __retchk: __HALT(-3); return 0;
#define __CASECHK __HALT(-4) #define __CASECHK __HALT(-4)

View file

@ -54,13 +54,13 @@ void SYSTEM_ENUMR(void *adr, LONGINT *typ, LONGINT size, LONGINT n, void (*P)())
} }
} }
LONGINT SYSTEM_DIV(U_LONGINT x, U_LONGINT y) LONGINT SYSTEM_DIV(uLONGINT x, uLONGINT y)
{ if ((LONGINT) x >= 0) return (x / y); { if ((LONGINT) x >= 0) return (x / y);
else return -((y - 1 - x) / y); else return -((y - 1 - x) / y);
} }
LONGINT SYSTEM_MOD(U_LONGINT x, U_LONGINT y) LONGINT SYSTEM_MOD(uLONGINT x, uLONGINT y)
{ U_LONGINT m; { uLONGINT m;
if ((LONGINT) x >= 0) return (x % y); if ((LONGINT) x >= 0) return (x % y);
else { m = (-x) % y; else { m = (-x) % y;
if (m != 0) return (y - m); else return 0; if (m != 0) return (y - m); else return 0;

View file

@ -34,27 +34,6 @@ typedef unsigned char uint8;
void *memcpy(void *dest, const void *source, size_t size); void *memcpy(void *dest, const void *source, size_t size);
// Temporary while bootstrapping:
#define SYSTEM_INT8 int8
#define SYSTEM_INT16 int16
#define SYSTEM_INT32 int32
#define SYSTEM_INT64 int64
#define SYSTEM_ADDRESS size_t
#define U_SYSTEM_INT8 uint8
#define U_SYSTEM_INT16 uint16
#define U_SYSTEM_INT32 uint32
#define U_SYSTEM_INT64 uint64
#define U_int8 uint8
#define U_int16 uint16
#define U_int32 uint32
#define U_int64 uint64
// The compiler uses 'import' and 'export' which translate to 'extern' and // The compiler uses 'import' and 'export' which translate to 'extern' and
// nothing respectively. // nothing respectively.
@ -72,21 +51,11 @@ void *memcpy(void *dest, const void *source, size_t size);
// Oberon types // Oberon types
// typedef char BOOLEAN;
// typedef unsigned char SYSTEM_BYTE;
// typedef unsigned char CHAR;
// typedef signed char SHORTINT;
// typedef float REAL;
// typedef double LONGREAL;
// typedef void* SYSTEM_PTR;
typedef int8 BOOLEAN; typedef int8 BOOLEAN;
typedef int8 SYSTEM_BYTE; typedef int8 SYSTEM_BYTE;
typedef uint8 U_SYSTEM_BYTE; typedef uint8 uSYSTEM_BYTE;
typedef uint8 CHAR; typedef uint8 CHAR;
typedef uint8 U_CHAR; typedef uint8 uCHAR;
typedef int8 SHORTINT;
typedef uint8 U_SHORTINT;
typedef float REAL; typedef float REAL;
typedef double LONGREAL; typedef double LONGREAL;
typedef void* SYSTEM_PTR; typedef void* SYSTEM_PTR;
@ -99,19 +68,17 @@ typedef size_t SYSTEM_ADRINT;
#if (__SIZEOF_POINTER__ == 8) || defined(LARGE) || defined(_WIN64) #if (__SIZEOF_POINTER__ == 8) || defined(LARGE) || defined(_WIN64)
typedef int32 INTEGER; typedef int32 INTEGER;
typedef int64 LONGINT; typedef int64 LONGINT;
typedef uint32 U_INTEGER; typedef uint64 uLONGINT;
typedef uint64 U_LONGINT;
#else #else
typedef int16 INTEGER; typedef int16 INTEGER;
typedef int32 LONGINT; typedef int32 LONGINT;
typedef uint16 U_INTEGER; typedef uint32 uLONGINT;
typedef uint32 U_LONGINT;
#endif #endif
// Unsigned variants are for use by shift and rotate macros. // Unsigned variants are for use by shift and rotate macros.
typedef U_LONGINT SET; typedef uLONGINT SET;
typedef U_LONGINT U_SET; typedef uLONGINT uSET;
@ -137,8 +104,8 @@ extern double SYSTEM_ABSD (double i);
extern void SYSTEM_INHERIT(LONGINT *t, LONGINT *t0); extern void SYSTEM_INHERIT(LONGINT *t, LONGINT *t0);
extern void SYSTEM_ENUMP (void *adr, LONGINT n, void (*P)()); extern void SYSTEM_ENUMP (void *adr, LONGINT n, void (*P)());
extern void SYSTEM_ENUMR (void *adr, LONGINT *typ, LONGINT size, LONGINT n, void (*P)()); extern void SYSTEM_ENUMR (void *adr, LONGINT *typ, LONGINT size, LONGINT n, void (*P)());
extern LONGINT SYSTEM_DIV (U_LONGINT x, U_LONGINT y); extern LONGINT SYSTEM_DIV (uLONGINT x, uLONGINT y);
extern LONGINT SYSTEM_MOD (U_LONGINT x, U_LONGINT y); extern LONGINT SYSTEM_MOD (uLONGINT x, uLONGINT y);
extern LONGINT SYSTEM_ENTIER (double x); extern LONGINT SYSTEM_ENTIER (double x);
@ -186,22 +153,22 @@ static int __str_cmp(CHAR *x, CHAR *y){
#define __GET(a, x, t) x= *(t*)(SYSTEM_ADRINT)(a) #define __GET(a, x, t) x= *(t*)(SYSTEM_ADRINT)(a)
#define __PUT(a, x, t) *(t*)(SYSTEM_ADRINT)(a)=x #define __PUT(a, x, t) *(t*)(SYSTEM_ADRINT)(a)=x
#define __LSHL(x, n, t) ((t)((U_##t)(x)<<(n))) #define __LSHL(x, n, t) ((t)((u##t)(x)<<(n)))
#define __LSHR(x, n, t) ((t)((U_##t)(x)>>(n))) #define __LSHR(x, n, t) ((t)((u##t)(x)>>(n)))
#define __LSH(x, n, t) ((n)>=0? __LSHL(x, n, t): __LSHR(x, -(n), t)) #define __LSH(x, n, t) ((n)>=0? __LSHL(x, n, t): __LSHR(x, -(n), t))
#define __ASHL(x, n) ((LONGINT)(x)<<(n)) #define __ASHL(x, n) ((LONGINT)(x)<<(n))
#define __ASHR(x, n) ((LONGINT)(x)>>(n)) #define __ASHR(x, n) ((LONGINT)(x)>>(n))
#define __ASH(x, n) ((n)>=0?__ASHL(x,n):__ASHR(x,-(n))) #define __ASH(x, n) ((n)>=0?__ASHL(x,n):__ASHR(x,-(n)))
#define __ROTL(x, n, t) ((t)((U_##t)(x)<<(n)|(U_##t)(x)>>(8*sizeof(t)-(n)))) #define __ROTL(x, n, t) ((t)((u##t)(x)<<(n)|(u##t)(x)>>(8*sizeof(t)-(n))))
#define __ROTR(x, n, t) ((t)((U_##t)(x)>>(n)|(U_##t)(x)<<(8*sizeof(t)-(n)))) #define __ROTR(x, n, t) ((t)((u##t)(x)>>(n)|(u##t)(x)<<(8*sizeof(t)-(n))))
#define __ROT(x, n, t) ((n)>=0? __ROTL(x, n, t): __ROTR(x, -(n), t)) #define __ROT(x, n, t) ((n)>=0? __ROTL(x, n, t): __ROTR(x, -(n), t))
#define __BIT(x, n) (*(U_LONGINT*)(x)>>(n)&1) #define __BIT(x, n) (*(uLONGINT*)(x)>>(n)&1)
#define __MOVE(s, d, n) memcpy((char*)(SYSTEM_ADRINT)(d),(char*)(SYSTEM_ADRINT)(s),n) #define __MOVE(s, d, n) memcpy((char*)(SYSTEM_ADRINT)(d),(char*)(SYSTEM_ADRINT)(s),n)
#define __ASHF(x, n) SYSTEM_ASH((LONGINT)(x), (LONGINT)(n)) #define __ASHF(x, n) SYSTEM_ASH((LONGINT)(x), (LONGINT)(n))
#define __SHORT(x, y) ((int)((U_LONGINT)(x)+(y)<(y)+(y)?(x):(__HALT(-8),0))) #define __SHORT(x, y) ((int)((uLONGINT)(x)+(y)<(y)+(y)?(x):(__HALT(-8),0)))
#define __SHORTF(x, y) ((int)(__RF((x)+(y),(y)+(y))-(y))) #define __SHORTF(x, y) ((int)(__RF((x)+(y),(y)+(y))-(y)))
#define __CHR(x) ((CHAR)__R(x, 256)) #define __CHR(x) ((CHAR)__R(x, 256))
#define __CHRF(x) ((CHAR)__RF(x, 256)) #define __CHRF(x) ((CHAR)__RF(x, 256))
@ -215,7 +182,7 @@ static int __str_cmp(CHAR *x, CHAR *y){
#define __ABSFD(x) SYSTEM_ABSD((double)(x)) #define __ABSFD(x) SYSTEM_ABSD((double)(x))
#define __CAP(ch) ((CHAR)((ch)&0x5f)) #define __CAP(ch) ((CHAR)((ch)&0x5f))
#define __ODD(x) ((x)&1) #define __ODD(x) ((x)&1)
#define __IN(x, s) ((x)>=0 && (x)<(8*sizeof(SET)) && ((((U_SET)(s))>>(x))&1)) #define __IN(x, s) ((x)>=0 && (x)<(8*sizeof(SET)) && ((((uSET)(s))>>(x))&1))
#define __SETOF(x) ((SET)1<<(x)) #define __SETOF(x) ((SET)1<<(x))
#define __SETRNG(l, h) ((~(SET)0<<(l))&~(SET)0>>(8*sizeof(SET)-1-(h))) #define __SETRNG(l, h) ((~(SET)0<<(l))&~(SET)0>>(8*sizeof(SET)-1-(h)))
#define __MASK(x, m) ((x)&~(m)) #define __MASK(x, m) ((x)&~(m))
@ -224,9 +191,9 @@ static int __str_cmp(CHAR *x, CHAR *y){
// Runtime checks // Runtime checks
#define __X(i, ub) (((U_LONGINT)(i)<(U_LONGINT)(ub))?i:(__HALT(-2),0)) #define __X(i, ub) (((uLONGINT)(i)<(uLONGINT)(ub))?i:(__HALT(-2),0))
#define __XF(i, ub) SYSTEM_XCHK((LONGINT)(i), (LONGINT)(ub)) #define __XF(i, ub) SYSTEM_XCHK((LONGINT)(i), (LONGINT)(ub))
#define __R(i, ub) (((U_LONGINT)(i)<(U_LONGINT)(ub))?i:(__HALT(-8),0)) #define __R(i, ub) (((uLONGINT)(i)<(uLONGINT)(ub))?i:(__HALT(-8),0))
#define __RF(i, ub) SYSTEM_RCHK((LONGINT)(i),(LONGINT)(ub)) #define __RF(i, ub) SYSTEM_RCHK((LONGINT)(i),(LONGINT)(ub))
#define __RETCHK __retchk: __HALT(-3); return 0; #define __RETCHK __retchk: __HALT(-3); return 0;
#define __CASECHK __HALT(-4) #define __CASECHK __HALT(-4)

View file

@ -232,7 +232,7 @@ BEGIN
YMDHMStoClock(styear(), stmon(), stmday(), sthour(), stmin(), stsec(), t, d); YMDHMStoClock(styear(), stmon(), stmday(), sthour(), stmin(), stsec(), t, d);
END GetClock; END GetClock;
PROCEDURE -GetTickCount(): LONGINT "(LONGINT)(SYSTEM_CARD32)GetTickCount()"; PROCEDURE -GetTickCount(): LONGINT "(LONGINT)(uint32)GetTickCount()";
PROCEDURE Time*(): LONGINT; PROCEDURE Time*(): LONGINT;
VAR ms: LONGINT; VAR ms: LONGINT;

View file

@ -54,13 +54,13 @@ void SYSTEM_ENUMR(void *adr, LONGINT *typ, LONGINT size, LONGINT n, void (*P)())
} }
} }
LONGINT SYSTEM_DIV(U_LONGINT x, U_LONGINT y) LONGINT SYSTEM_DIV(uLONGINT x, uLONGINT y)
{ if ((LONGINT) x >= 0) return (x / y); { if ((LONGINT) x >= 0) return (x / y);
else return -((y - 1 - x) / y); else return -((y - 1 - x) / y);
} }
LONGINT SYSTEM_MOD(U_LONGINT x, U_LONGINT y) LONGINT SYSTEM_MOD(uLONGINT x, uLONGINT y)
{ U_LONGINT m; { uLONGINT m;
if ((LONGINT) x >= 0) return (x % y); if ((LONGINT) x >= 0) return (x % y);
else { m = (-x) % y; else { m = (-x) % y;
if (m != 0) return (y - m); else return 0; if (m != 0) return (y - m); else return 0;

View file

@ -34,27 +34,6 @@ typedef unsigned char uint8;
void *memcpy(void *dest, const void *source, size_t size); void *memcpy(void *dest, const void *source, size_t size);
// Temporary while bootstrapping:
#define SYSTEM_INT8 int8
#define SYSTEM_INT16 int16
#define SYSTEM_INT32 int32
#define SYSTEM_INT64 int64
#define SYSTEM_ADDRESS size_t
#define U_SYSTEM_INT8 uint8
#define U_SYSTEM_INT16 uint16
#define U_SYSTEM_INT32 uint32
#define U_SYSTEM_INT64 uint64
#define U_int8 uint8
#define U_int16 uint16
#define U_int32 uint32
#define U_int64 uint64
// The compiler uses 'import' and 'export' which translate to 'extern' and // The compiler uses 'import' and 'export' which translate to 'extern' and
// nothing respectively. // nothing respectively.
@ -72,21 +51,11 @@ void *memcpy(void *dest, const void *source, size_t size);
// Oberon types // Oberon types
// typedef char BOOLEAN;
// typedef unsigned char SYSTEM_BYTE;
// typedef unsigned char CHAR;
// typedef signed char SHORTINT;
// typedef float REAL;
// typedef double LONGREAL;
// typedef void* SYSTEM_PTR;
typedef int8 BOOLEAN; typedef int8 BOOLEAN;
typedef int8 SYSTEM_BYTE; typedef int8 SYSTEM_BYTE;
typedef uint8 U_SYSTEM_BYTE; typedef uint8 uSYSTEM_BYTE;
typedef uint8 CHAR; typedef uint8 CHAR;
typedef uint8 U_CHAR; typedef uint8 uCHAR;
typedef int8 SHORTINT;
typedef uint8 U_SHORTINT;
typedef float REAL; typedef float REAL;
typedef double LONGREAL; typedef double LONGREAL;
typedef void* SYSTEM_PTR; typedef void* SYSTEM_PTR;
@ -99,19 +68,17 @@ typedef size_t SYSTEM_ADRINT;
#if (__SIZEOF_POINTER__ == 8) || defined(LARGE) || defined(_WIN64) #if (__SIZEOF_POINTER__ == 8) || defined(LARGE) || defined(_WIN64)
typedef int32 INTEGER; typedef int32 INTEGER;
typedef int64 LONGINT; typedef int64 LONGINT;
typedef uint32 U_INTEGER; typedef uint64 uLONGINT;
typedef uint64 U_LONGINT;
#else #else
typedef int16 INTEGER; typedef int16 INTEGER;
typedef int32 LONGINT; typedef int32 LONGINT;
typedef uint16 U_INTEGER; typedef uint32 uLONGINT;
typedef uint32 U_LONGINT;
#endif #endif
// Unsigned variants are for use by shift and rotate macros. // Unsigned variants are for use by shift and rotate macros.
typedef U_LONGINT SET; typedef uLONGINT SET;
typedef U_LONGINT U_SET; typedef uLONGINT uSET;
@ -137,8 +104,8 @@ extern double SYSTEM_ABSD (double i);
extern void SYSTEM_INHERIT(LONGINT *t, LONGINT *t0); extern void SYSTEM_INHERIT(LONGINT *t, LONGINT *t0);
extern void SYSTEM_ENUMP (void *adr, LONGINT n, void (*P)()); extern void SYSTEM_ENUMP (void *adr, LONGINT n, void (*P)());
extern void SYSTEM_ENUMR (void *adr, LONGINT *typ, LONGINT size, LONGINT n, void (*P)()); extern void SYSTEM_ENUMR (void *adr, LONGINT *typ, LONGINT size, LONGINT n, void (*P)());
extern LONGINT SYSTEM_DIV (U_LONGINT x, U_LONGINT y); extern LONGINT SYSTEM_DIV (uLONGINT x, uLONGINT y);
extern LONGINT SYSTEM_MOD (U_LONGINT x, U_LONGINT y); extern LONGINT SYSTEM_MOD (uLONGINT x, uLONGINT y);
extern LONGINT SYSTEM_ENTIER (double x); extern LONGINT SYSTEM_ENTIER (double x);
@ -186,22 +153,22 @@ static int __str_cmp(CHAR *x, CHAR *y){
#define __GET(a, x, t) x= *(t*)(SYSTEM_ADRINT)(a) #define __GET(a, x, t) x= *(t*)(SYSTEM_ADRINT)(a)
#define __PUT(a, x, t) *(t*)(SYSTEM_ADRINT)(a)=x #define __PUT(a, x, t) *(t*)(SYSTEM_ADRINT)(a)=x
#define __LSHL(x, n, t) ((t)((U_##t)(x)<<(n))) #define __LSHL(x, n, t) ((t)((u##t)(x)<<(n)))
#define __LSHR(x, n, t) ((t)((U_##t)(x)>>(n))) #define __LSHR(x, n, t) ((t)((u##t)(x)>>(n)))
#define __LSH(x, n, t) ((n)>=0? __LSHL(x, n, t): __LSHR(x, -(n), t)) #define __LSH(x, n, t) ((n)>=0? __LSHL(x, n, t): __LSHR(x, -(n), t))
#define __ASHL(x, n) ((LONGINT)(x)<<(n)) #define __ASHL(x, n) ((LONGINT)(x)<<(n))
#define __ASHR(x, n) ((LONGINT)(x)>>(n)) #define __ASHR(x, n) ((LONGINT)(x)>>(n))
#define __ASH(x, n) ((n)>=0?__ASHL(x,n):__ASHR(x,-(n))) #define __ASH(x, n) ((n)>=0?__ASHL(x,n):__ASHR(x,-(n)))
#define __ROTL(x, n, t) ((t)((U_##t)(x)<<(n)|(U_##t)(x)>>(8*sizeof(t)-(n)))) #define __ROTL(x, n, t) ((t)((u##t)(x)<<(n)|(u##t)(x)>>(8*sizeof(t)-(n))))
#define __ROTR(x, n, t) ((t)((U_##t)(x)>>(n)|(U_##t)(x)<<(8*sizeof(t)-(n)))) #define __ROTR(x, n, t) ((t)((u##t)(x)>>(n)|(u##t)(x)<<(8*sizeof(t)-(n))))
#define __ROT(x, n, t) ((n)>=0? __ROTL(x, n, t): __ROTR(x, -(n), t)) #define __ROT(x, n, t) ((n)>=0? __ROTL(x, n, t): __ROTR(x, -(n), t))
#define __BIT(x, n) (*(U_LONGINT*)(x)>>(n)&1) #define __BIT(x, n) (*(uLONGINT*)(x)>>(n)&1)
#define __MOVE(s, d, n) memcpy((char*)(SYSTEM_ADRINT)(d),(char*)(SYSTEM_ADRINT)(s),n) #define __MOVE(s, d, n) memcpy((char*)(SYSTEM_ADRINT)(d),(char*)(SYSTEM_ADRINT)(s),n)
#define __ASHF(x, n) SYSTEM_ASH((LONGINT)(x), (LONGINT)(n)) #define __ASHF(x, n) SYSTEM_ASH((LONGINT)(x), (LONGINT)(n))
#define __SHORT(x, y) ((int)((U_LONGINT)(x)+(y)<(y)+(y)?(x):(__HALT(-8),0))) #define __SHORT(x, y) ((int)((uLONGINT)(x)+(y)<(y)+(y)?(x):(__HALT(-8),0)))
#define __SHORTF(x, y) ((int)(__RF((x)+(y),(y)+(y))-(y))) #define __SHORTF(x, y) ((int)(__RF((x)+(y),(y)+(y))-(y)))
#define __CHR(x) ((CHAR)__R(x, 256)) #define __CHR(x) ((CHAR)__R(x, 256))
#define __CHRF(x) ((CHAR)__RF(x, 256)) #define __CHRF(x) ((CHAR)__RF(x, 256))
@ -215,7 +182,7 @@ static int __str_cmp(CHAR *x, CHAR *y){
#define __ABSFD(x) SYSTEM_ABSD((double)(x)) #define __ABSFD(x) SYSTEM_ABSD((double)(x))
#define __CAP(ch) ((CHAR)((ch)&0x5f)) #define __CAP(ch) ((CHAR)((ch)&0x5f))
#define __ODD(x) ((x)&1) #define __ODD(x) ((x)&1)
#define __IN(x, s) ((x)>=0 && (x)<(8*sizeof(SET)) && ((((U_SET)(s))>>(x))&1)) #define __IN(x, s) ((x)>=0 && (x)<(8*sizeof(SET)) && ((((uSET)(s))>>(x))&1))
#define __SETOF(x) ((SET)1<<(x)) #define __SETOF(x) ((SET)1<<(x))
#define __SETRNG(l, h) ((~(SET)0<<(l))&~(SET)0>>(8*sizeof(SET)-1-(h))) #define __SETRNG(l, h) ((~(SET)0<<(l))&~(SET)0>>(8*sizeof(SET)-1-(h)))
#define __MASK(x, m) ((x)&~(m)) #define __MASK(x, m) ((x)&~(m))
@ -224,9 +191,9 @@ static int __str_cmp(CHAR *x, CHAR *y){
// Runtime checks // Runtime checks
#define __X(i, ub) (((U_LONGINT)(i)<(U_LONGINT)(ub))?i:(__HALT(-2),0)) #define __X(i, ub) (((uLONGINT)(i)<(uLONGINT)(ub))?i:(__HALT(-2),0))
#define __XF(i, ub) SYSTEM_XCHK((LONGINT)(i), (LONGINT)(ub)) #define __XF(i, ub) SYSTEM_XCHK((LONGINT)(i), (LONGINT)(ub))
#define __R(i, ub) (((U_LONGINT)(i)<(U_LONGINT)(ub))?i:(__HALT(-8),0)) #define __R(i, ub) (((uLONGINT)(i)<(uLONGINT)(ub))?i:(__HALT(-8),0))
#define __RF(i, ub) SYSTEM_RCHK((LONGINT)(i),(LONGINT)(ub)) #define __RF(i, ub) SYSTEM_RCHK((LONGINT)(i),(LONGINT)(ub))
#define __RETCHK __retchk: __HALT(-3); return 0; #define __RETCHK __retchk: __HALT(-3); return 0;
#define __CASECHK __HALT(-4) #define __CASECHK __HALT(-4)

View file

@ -212,7 +212,7 @@ void determineBuildDate() {
struct {char ch; CHAR x;} c; struct {char ch; CHAR x;} c;
struct {char ch; BOOLEAN x;} b; struct {char ch; BOOLEAN x;} b;
struct {char ch; SHORTINT x;} si; //struct {char ch; SHORTINT x;} si;
struct {char ch; INTEGER x;} i; struct {char ch; INTEGER x;} i;
struct {char ch; LONGINT x;} li; struct {char ch; LONGINT x;} li;
struct {char ch; SET x;} s; struct {char ch; SET x;} s;
@ -246,7 +246,7 @@ void ReportSizesAndAlignments() {
printf("Type Size Align\n"); printf("Type Size Align\n");
printf("CHAR %4zd %4td\n", sizeof(CHAR), (char*)&c.x - (char*)&c); printf("CHAR %4zd %4td\n", sizeof(CHAR), (char*)&c.x - (char*)&c);
printf("BOOLEAN %4zd %4td\n", sizeof(BOOLEAN), (char*)&b.x - (char*)&b); printf("BOOLEAN %4zd %4td\n", sizeof(BOOLEAN), (char*)&b.x - (char*)&b);
printf("SHORTINT %4zd %4td\n", sizeof(SHORTINT), (char*)&si.x - (char*)&si); //printf("SHORTINT %4zd %4td\n", sizeof(SHORTINT), (char*)&si.x - (char*)&si);
printf("INTEGER %4zd %4td\n", sizeof(INTEGER), (char*)&i.x - (char*)&i); printf("INTEGER %4zd %4td\n", sizeof(INTEGER), (char*)&i.x - (char*)&i);
printf("LONGINT %4zd %4td\n", sizeof(LONGINT), (char*)&li.x - (char*)&li); printf("LONGINT %4zd %4td\n", sizeof(LONGINT), (char*)&li.x - (char*)&li);
printf("SET %4zd %4td\n", sizeof(SET), (char*)&s.x - (char*)&s); printf("SET %4zd %4td\n", sizeof(SET), (char*)&s.x - (char*)&s);
@ -326,7 +326,7 @@ void testSystemDotH() {
assert(sizeof(CHAR) == 1, "Size of CHAR not 1."); assert(sizeof(CHAR) == 1, "Size of CHAR not 1.");
assert(sizeof(BOOLEAN) == 1, "Size of BOOLEAN not 1."); assert(sizeof(BOOLEAN) == 1, "Size of BOOLEAN not 1.");
assert(sizeof(SHORTINT) == 1, "Size of SHORTINT not 1."); //assert(sizeof(SHORTINT) == 1, "Size of SHORTINT not 1.");
assert(sizeof(INTEGER) == 2 assert(sizeof(INTEGER) == 2
|| sizeof(INTEGER) == 4, "Size of INTEGER neither 2 nor 4 bytes."); || sizeof(INTEGER) == 4, "Size of INTEGER neither 2 nor 4 bytes.");
assert(sizeof(LONGINT) == 4 assert(sizeof(LONGINT) == 4
@ -340,7 +340,7 @@ void testSystemDotH() {
assert(((char*)&c.x - (char*)&c) == 1, "Alignment of CHAR not 1."); assert(((char*)&c.x - (char*)&c) == 1, "Alignment of CHAR not 1.");
assert(((char*)&b.x - (char*)&b) == 1, "Alignment of BOOLEAN not 1."); assert(((char*)&b.x - (char*)&b) == 1, "Alignment of BOOLEAN not 1.");
assert(((char*)&si.x - (char*)&si) == 1, "Alignment of SHORTINT not 1."); //assert(((char*)&si.x - (char*)&si) == 1, "Alignment of SHORTINT not 1.");
//assert(((char*)&i.x - (char*)&i) == 4, "Alignment of INTEGER not 4 bytes."); //assert(((char*)&i.x - (char*)&i) == 4, "Alignment of INTEGER not 4 bytes.");
assert(((char*)&r.x - (char*)&r) == 4, "Alignment of REAL not 4 bytes."); assert(((char*)&r.x - (char*)&r) == 4, "Alignment of REAL not 4 bytes.");
assert(((char*)&lr.x - (char*)&lr) >= 4, "Alignment of LONGREAL less than 4 bytes."); assert(((char*)&lr.x - (char*)&lr) >= 4, "Alignment of LONGREAL less than 4 bytes.");