Refactor SetIntType to work with byte size directly. Prepare to revert my incorrect VAL changes.

This commit is contained in:
David Brown 2016-08-16 17:22:40 +01:00
parent b35ac4a32d
commit 8f82f6e47b
204 changed files with 1092 additions and 1128 deletions

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#include "SYSTEM.h" #include "SYSTEM.h"
@ -13,6 +13,6 @@ export void *Configuration__init(void)
__DEFMOD; __DEFMOD;
__REGMOD("Configuration", 0); __REGMOD("Configuration", 0);
/* BEGIN */ /* BEGIN */
__MOVE("1.95 [2016/08/13] for gcc LP64 on cygwin", Configuration_versionLong, 41); __MOVE("1.95 [2016/08/16] for gcc LP64 on cygwin", Configuration_versionLong, 41);
__ENDMOD; __ENDMOD;
} }

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#ifndef Configuration__h #ifndef Configuration__h
#define Configuration__h #define Configuration__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#include "SYSTEM.h" #include "SYSTEM.h"
#include "Platform.h" #include "Platform.h"

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#ifndef Console__h #ifndef Console__h
#define Console__h #define Console__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin tspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin tspkaSfF */
#include "SYSTEM.h" #include "SYSTEM.h"
#include "Configuration.h" #include "Configuration.h"
#include "Console.h" #include "Console.h"

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin tspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin tspkaSfF */
#ifndef Files__h #ifndef Files__h
#define Files__h #define Files__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin tskSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin tskSfF */
#include "SYSTEM.h" #include "SYSTEM.h"
struct Heap__1 { struct Heap__1 {

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin tskSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin tskSfF */
#ifndef Heap__h #ifndef Heap__h
#define Heap__h #define Heap__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#include "SYSTEM.h" #include "SYSTEM.h"
#include "Console.h" #include "Console.h"
#include "Heap.h" #include "Heap.h"

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#ifndef Modules__h #ifndef Modules__h
#define Modules__h #define Modules__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#include "SYSTEM.h" #include "SYSTEM.h"
#include "OPM.h" #include "OPM.h"
#include "OPS.h" #include "OPS.h"
@ -34,6 +34,7 @@ export void OPB_In (OPT_Node *x, OPT_Node y);
export void OPB_Index (OPT_Node *x, OPT_Node y); export void OPB_Index (OPT_Node *x, OPT_Node y);
export void OPB_Inittd (OPT_Node *inittd, OPT_Node *last, OPT_Struct typ); export void OPB_Inittd (OPT_Node *inittd, OPT_Node *last, OPT_Struct typ);
static BOOLEAN OPB_IntToBool (LONGINT i); static BOOLEAN OPB_IntToBool (LONGINT i);
static OPT_Struct OPB_IntType (LONGINT size);
export void OPB_Link (OPT_Node *x, OPT_Node *last, OPT_Node y); export void OPB_Link (OPT_Node *x, OPT_Node *last, OPT_Node y);
export void OPB_MOp (SHORTINT op, OPT_Node *x); export void OPB_MOp (SHORTINT op, OPT_Node *x);
export OPT_Node OPB_NewBoolConst (BOOLEAN boolval); export OPT_Node OPB_NewBoolConst (BOOLEAN boolval);
@ -51,6 +52,9 @@ export void OPB_Return (OPT_Node *x, OPT_Object proc);
export void OPB_SetElem (OPT_Node *x); export void OPB_SetElem (OPT_Node *x);
static void OPB_SetIntType (OPT_Node node); static void OPB_SetIntType (OPT_Node node);
export void OPB_SetRange (OPT_Node *x, OPT_Node y); export void OPB_SetRange (OPT_Node *x, OPT_Node y);
static INTEGER OPB_SignedByteSize (LONGINT n);
static LONGINT OPB_SignedMaximum (LONGINT bytecount);
static LONGINT OPB_SignedMinimum (LONGINT bytecount);
export void OPB_StFct (OPT_Node *par0, SHORTINT fctno, INTEGER parno); export void OPB_StFct (OPT_Node *par0, SHORTINT fctno, INTEGER parno);
export void OPB_StPar0 (OPT_Node *par0, INTEGER fctno); export void OPB_StPar0 (OPT_Node *par0, INTEGER fctno);
export void OPB_StPar1 (OPT_Node *par0, OPT_Node x, SHORTINT fctno); export void OPB_StPar1 (OPT_Node *par0, OPT_Node x, SHORTINT fctno);
@ -220,21 +224,46 @@ OPT_Node OPB_EmptySet (void)
return _o_result; return _o_result;
} }
static INTEGER OPB_SignedByteSize (LONGINT n)
{
INTEGER _o_result;
INTEGER b;
if (n < 0) {
n = -(n + 1);
}
b = 1;
while (b < 8) {
if (__ASH(n, -(__ASHL(b, 3) - 1)) == 0) {
_o_result = b;
return _o_result;
}
b += 1;
}
_o_result = 8;
return _o_result;
}
static OPT_Struct OPB_IntType (LONGINT size)
{
OPT_Struct _o_result;
OPT_Struct result = NIL;
if (size <= OPT_sinttyp->size) {
result = OPT_sinttyp;
} else if (size <= OPT_inttyp->size) {
result = OPT_inttyp;
} else {
result = OPT_linttyp;
}
if (size > OPT_linttyp->size) {
OPB_err(203);
}
_o_result = result;
return _o_result;
}
static void OPB_SetIntType (OPT_Node node) static void OPB_SetIntType (OPT_Node node)
{ {
LONGINT v; node->typ = OPB_IntType(OPB_SignedByteSize(node->conval->intval));
v = node->conval->intval;
if ((OPM_MinSInt <= (LONGINT)v && (LONGINT)v <= OPM_MaxSInt)) {
node->typ = OPT_sinttyp;
} else if ((OPM_MinInt <= (LONGINT)v && (LONGINT)v <= OPM_MaxInt)) {
node->typ = OPT_inttyp;
} else if ((OPM_MinLInt <= v && v <= OPM_MaxLInt)) {
node->typ = OPT_linttyp;
} else {
OPB_err(203);
node->typ = OPT_sinttyp;
node->conval->intval = 1;
}
} }
OPT_Node OPB_NewIntConst (LONGINT intval) OPT_Node OPB_NewIntConst (LONGINT intval)
@ -378,16 +407,16 @@ void OPB_Field (OPT_Node *x, OPT_Object y)
} }
} }
static struct TypTest__57 { static struct TypTest__61 {
OPT_Node *x; OPT_Node *x;
OPT_Object *obj; OPT_Object *obj;
BOOLEAN *guard; BOOLEAN *guard;
struct TypTest__57 *lnk; struct TypTest__61 *lnk;
} *TypTest__57_s; } *TypTest__61_s;
static void GTT__58 (OPT_Struct t0, OPT_Struct t1); static void GTT__62 (OPT_Struct t0, OPT_Struct t1);
static void GTT__58 (OPT_Struct t0, OPT_Struct t1) static void GTT__62 (OPT_Struct t0, OPT_Struct t1)
{ {
OPT_Node node = NIL; OPT_Node node = NIL;
OPT_Struct t = NIL; OPT_Struct t = NIL;
@ -400,54 +429,54 @@ static void GTT__58 (OPT_Struct t0, OPT_Struct t1)
t1 = t1->BaseTyp; t1 = t1->BaseTyp;
} }
if (t1 == t0 || t0->form == 0) { if (t1 == t0 || t0->form == 0) {
if (*TypTest__57_s->guard) { if (*TypTest__61_s->guard) {
OPB_BindNodes(5, NIL, &*TypTest__57_s->x, NIL); OPB_BindNodes(5, NIL, &*TypTest__61_s->x, NIL);
(*TypTest__57_s->x)->readonly = (*TypTest__57_s->x)->left->readonly; (*TypTest__61_s->x)->readonly = (*TypTest__61_s->x)->left->readonly;
} else { } else {
node = OPT_NewNode(11); node = OPT_NewNode(11);
node->subcl = 16; node->subcl = 16;
node->left = *TypTest__57_s->x; node->left = *TypTest__61_s->x;
node->obj = *TypTest__57_s->obj; node->obj = *TypTest__61_s->obj;
*TypTest__57_s->x = node; *TypTest__61_s->x = node;
} }
} else { } else {
OPB_err(85); OPB_err(85);
} }
} else if (t0 != t1) { } else if (t0 != t1) {
OPB_err(85); OPB_err(85);
} else if (!*TypTest__57_s->guard) { } else if (!*TypTest__61_s->guard) {
if ((*TypTest__57_s->x)->class == 5) { if ((*TypTest__61_s->x)->class == 5) {
node = OPT_NewNode(11); node = OPT_NewNode(11);
node->subcl = 16; node->subcl = 16;
node->left = *TypTest__57_s->x; node->left = *TypTest__61_s->x;
node->obj = *TypTest__57_s->obj; node->obj = *TypTest__61_s->obj;
*TypTest__57_s->x = node; *TypTest__61_s->x = node;
} else { } else {
*TypTest__57_s->x = OPB_NewBoolConst(1); *TypTest__61_s->x = OPB_NewBoolConst(1);
} }
} }
} }
void OPB_TypTest (OPT_Node *x, OPT_Object obj, BOOLEAN guard) void OPB_TypTest (OPT_Node *x, OPT_Object obj, BOOLEAN guard)
{ {
struct TypTest__57 _s; struct TypTest__61 _s;
_s.x = x; _s.x = x;
_s.obj = &obj; _s.obj = &obj;
_s.guard = &guard; _s.guard = &guard;
_s.lnk = TypTest__57_s; _s.lnk = TypTest__61_s;
TypTest__57_s = &_s; TypTest__61_s = &_s;
if (OPB_NotVar(*x)) { if (OPB_NotVar(*x)) {
OPB_err(112); OPB_err(112);
} else if ((*x)->typ->form == 13) { } else if ((*x)->typ->form == 13) {
if (((*x)->typ->BaseTyp->comp != 4 && (*x)->typ != OPT_sysptrtyp)) { if (((*x)->typ->BaseTyp->comp != 4 && (*x)->typ != OPT_sysptrtyp)) {
OPB_err(85); OPB_err(85);
} else if (obj->typ->form == 13) { } else if (obj->typ->form == 13) {
GTT__58((*x)->typ->BaseTyp, obj->typ->BaseTyp); GTT__62((*x)->typ->BaseTyp, obj->typ->BaseTyp);
} else { } else {
OPB_err(86); OPB_err(86);
} }
} else if (((((*x)->typ->comp == 4 && (*x)->class == 1)) && obj->typ->comp == 4)) { } else if (((((*x)->typ->comp == 4 && (*x)->class == 1)) && obj->typ->comp == 4)) {
GTT__58((*x)->typ, obj->typ); GTT__62((*x)->typ, obj->typ);
} else { } else {
OPB_err(87); OPB_err(87);
} }
@ -456,7 +485,7 @@ void OPB_TypTest (OPT_Node *x, OPT_Object obj, BOOLEAN guard)
} else { } else {
(*x)->typ = OPT_booltyp; (*x)->typ = OPT_booltyp;
} }
TypTest__57_s = _s.lnk; TypTest__61_s = _s.lnk;
} }
void OPB_In (OPT_Node *x, OPT_Node y) void OPB_In (OPT_Node *x, OPT_Node y)
@ -522,13 +551,13 @@ static void OPB_CheckRealType (INTEGER f, INTEGER nr, OPT_Const x)
x->intval = -1; x->intval = -1;
} }
static struct MOp__28 { static struct MOp__29 {
struct MOp__28 *lnk; struct MOp__29 *lnk;
} *MOp__28_s; } *MOp__29_s;
static OPT_Node NewOp__29 (SHORTINT op, OPT_Struct typ, OPT_Node z); static OPT_Node NewOp__30 (SHORTINT op, OPT_Struct typ, OPT_Node z);
static OPT_Node NewOp__29 (SHORTINT op, OPT_Struct typ, OPT_Node z) static OPT_Node NewOp__30 (SHORTINT op, OPT_Struct typ, OPT_Node z)
{ {
OPT_Node _o_result; OPT_Node _o_result;
OPT_Node node = NIL; OPT_Node node = NIL;
@ -545,9 +574,9 @@ void OPB_MOp (SHORTINT op, OPT_Node *x)
INTEGER f; INTEGER f;
OPT_Struct typ = NIL; OPT_Struct typ = NIL;
OPT_Node z = NIL; OPT_Node z = NIL;
struct MOp__28 _s; struct MOp__29 _s;
_s.lnk = MOp__28_s; _s.lnk = MOp__29_s;
MOp__28_s = &_s; MOp__29_s = &_s;
z = *x; z = *x;
if (z->class == 8 || z->class == 9) { if (z->class == 8 || z->class == 9) {
OPB_err(126); OPB_err(126);
@ -561,7 +590,7 @@ void OPB_MOp (SHORTINT op, OPT_Node *x)
z->conval->intval = OPB_BoolToInt(!OPB_IntToBool(z->conval->intval)); z->conval->intval = OPB_BoolToInt(!OPB_IntToBool(z->conval->intval));
z->obj = NIL; z->obj = NIL;
} else { } else {
z = NewOp__29(op, typ, z); z = NewOp__30(op, typ, z);
} }
} else { } else {
OPB_err(98); OPB_err(98);
@ -589,7 +618,7 @@ void OPB_MOp (SHORTINT op, OPT_Node *x)
} }
z->obj = NIL; z->obj = NIL;
} else { } else {
z = NewOp__29(op, typ, z); z = NewOp__30(op, typ, z);
} }
} else { } else {
OPB_err(97); OPB_err(97);
@ -610,7 +639,7 @@ void OPB_MOp (SHORTINT op, OPT_Node *x)
} }
z->obj = NIL; z->obj = NIL;
} else { } else {
z = NewOp__29(op, typ, z); z = NewOp__30(op, typ, z);
} }
} else { } else {
OPB_err(111); OPB_err(111);
@ -622,7 +651,7 @@ void OPB_MOp (SHORTINT op, OPT_Node *x)
z->conval->intval = (int)__CAP((CHAR)z->conval->intval); z->conval->intval = (int)__CAP((CHAR)z->conval->intval);
z->obj = NIL; z->obj = NIL;
} else { } else {
z = NewOp__29(op, typ, z); z = NewOp__30(op, typ, z);
} }
} else { } else {
OPB_err(111); OPB_err(111);
@ -635,7 +664,7 @@ void OPB_MOp (SHORTINT op, OPT_Node *x)
z->conval->intval = OPB_BoolToInt(__ODD(z->conval->intval)); z->conval->intval = OPB_BoolToInt(__ODD(z->conval->intval));
z->obj = NIL; z->obj = NIL;
} else { } else {
z = NewOp__29(op, typ, z); z = NewOp__30(op, typ, z);
} }
} else { } else {
OPB_err(111); OPB_err(111);
@ -648,7 +677,7 @@ void OPB_MOp (SHORTINT op, OPT_Node *x)
f = 10; f = 10;
} }
if (z->class < 7 || f == 10) { if (z->class < 7 || f == 10) {
z = NewOp__29(op, typ, z); z = NewOp__30(op, typ, z);
} else { } else {
OPB_err(127); OPB_err(127);
} }
@ -657,7 +686,7 @@ void OPB_MOp (SHORTINT op, OPT_Node *x)
case 25: case 25:
if ((__IN(f, 0x70) && z->class == 7)) { if ((__IN(f, 0x70) && z->class == 7)) {
if ((0 <= z->conval->intval && z->conval->intval <= -1)) { if ((0 <= z->conval->intval && z->conval->intval <= -1)) {
z = NewOp__29(op, typ, z); z = NewOp__30(op, typ, z);
} else { } else {
OPB_err(219); OPB_err(219);
} }
@ -674,7 +703,7 @@ void OPB_MOp (SHORTINT op, OPT_Node *x)
} }
} }
*x = z; *x = z;
MOp__28_s = _s.lnk; MOp__29_s = _s.lnk;
} }
static void OPB_CheckPtr (OPT_Node x, OPT_Node y) static void OPB_CheckPtr (OPT_Node x, OPT_Node y)
@ -865,41 +894,13 @@ static void OPB_ConstOp (INTEGER op, OPT_Node x, OPT_Node y)
__GUARDEQP(yval, OPT_ConstDesc) = *xval; __GUARDEQP(yval, OPT_ConstDesc) = *xval;
} }
break; break;
case 4: case 4: case 5: case 6:
if (__IN(g, 0x70)) { if (__IN(g, 0x70)) {
x->typ = y->typ; if (x->typ->size <= y->typ->size) {
} else if (g == 7) { x->typ = y->typ;
x->typ = OPT_realtyp; } else {
xval->realval = xval->intval; x->typ = OPB_IntType(x->typ->size);
} else if (g == 8) { }
x->typ = OPT_lrltyp;
xval->realval = xval->intval;
} else {
OPB_err(100);
y->typ = x->typ;
__GUARDEQP(yval, OPT_ConstDesc) = *xval;
}
break;
case 5:
if (g == 4) {
y->typ = OPT_inttyp;
} else if (__IN(g, 0x70)) {
x->typ = y->typ;
} else if (g == 7) {
x->typ = OPT_realtyp;
xval->realval = xval->intval;
} else if (g == 8) {
x->typ = OPT_lrltyp;
xval->realval = xval->intval;
} else {
OPB_err(100);
y->typ = x->typ;
__GUARDEQP(yval, OPT_ConstDesc) = *xval;
}
break;
case 6:
if (__IN(g, 0x70)) {
y->typ = OPT_linttyp;
} else if (g == 7) { } else if (g == 7) {
x->typ = OPT_realtyp; x->typ = OPT_realtyp;
xval->realval = xval->intval; xval->realval = xval->intval;
@ -1196,15 +1197,15 @@ static void OPB_Convert (OPT_Node *x, OPT_Struct typ)
(*x)->typ = typ; (*x)->typ = typ;
} }
static struct Op__38 { static struct Op__39 {
INTEGER *f, *g; INTEGER *f, *g;
struct Op__38 *lnk; struct Op__39 *lnk;
} *Op__38_s; } *Op__39_s;
static void NewOp__39 (SHORTINT op, OPT_Struct typ, OPT_Node *x, OPT_Node y); static void NewOp__40 (SHORTINT op, OPT_Struct typ, OPT_Node *x, OPT_Node y);
static BOOLEAN strings__41 (OPT_Node *x, OPT_Node *y); static BOOLEAN strings__42 (OPT_Node *x, OPT_Node *y);
static void NewOp__39 (SHORTINT op, OPT_Struct typ, OPT_Node *x, OPT_Node y) static void NewOp__40 (SHORTINT op, OPT_Struct typ, OPT_Node *x, OPT_Node y)
{ {
OPT_Node node = NIL; OPT_Node node = NIL;
node = OPT_NewNode(12); node = OPT_NewNode(12);
@ -1215,29 +1216,29 @@ static void NewOp__39 (SHORTINT op, OPT_Struct typ, OPT_Node *x, OPT_Node y)
*x = node; *x = node;
} }
static BOOLEAN strings__41 (OPT_Node *x, OPT_Node *y) static BOOLEAN strings__42 (OPT_Node *x, OPT_Node *y)
{ {
BOOLEAN _o_result; BOOLEAN _o_result;
BOOLEAN ok, xCharArr, yCharArr; BOOLEAN ok, xCharArr, yCharArr;
xCharArr = (__IN((*x)->typ->comp, 0x0c) && (*x)->typ->BaseTyp->form == 3) || *Op__38_s->f == 10; xCharArr = (__IN((*x)->typ->comp, 0x0c) && (*x)->typ->BaseTyp->form == 3) || *Op__39_s->f == 10;
yCharArr = (__IN((*y)->typ->comp, 0x0c) && (*y)->typ->BaseTyp->form == 3) || *Op__38_s->g == 10; yCharArr = (__IN((*y)->typ->comp, 0x0c) && (*y)->typ->BaseTyp->form == 3) || *Op__39_s->g == 10;
if ((((xCharArr && *Op__38_s->g == 3)) && (*y)->class == 7)) { if ((((xCharArr && *Op__39_s->g == 3)) && (*y)->class == 7)) {
OPB_CharToString(*y); OPB_CharToString(*y);
*Op__38_s->g = 10; *Op__39_s->g = 10;
yCharArr = 1; yCharArr = 1;
} }
if ((((yCharArr && *Op__38_s->f == 3)) && (*x)->class == 7)) { if ((((yCharArr && *Op__39_s->f == 3)) && (*x)->class == 7)) {
OPB_CharToString(*x); OPB_CharToString(*x);
*Op__38_s->f = 10; *Op__39_s->f = 10;
xCharArr = 1; xCharArr = 1;
} }
ok = (xCharArr && yCharArr); ok = (xCharArr && yCharArr);
if (ok) { if (ok) {
if ((*Op__38_s->f == 10 && (*x)->conval->intval2 == 1)) { if ((*Op__39_s->f == 10 && (*x)->conval->intval2 == 1)) {
(*x)->typ = OPT_chartyp; (*x)->typ = OPT_chartyp;
(*x)->conval->intval = 0; (*x)->conval->intval = 0;
OPB_Index(&*y, OPB_NewIntConst(((LONGINT)(0)))); OPB_Index(&*y, OPB_NewIntConst(((LONGINT)(0))));
} else if ((*Op__38_s->g == 10 && (*y)->conval->intval2 == 1)) { } else if ((*Op__39_s->g == 10 && (*y)->conval->intval2 == 1)) {
(*y)->typ = OPT_chartyp; (*y)->typ = OPT_chartyp;
(*y)->conval->intval = 0; (*y)->conval->intval = 0;
OPB_Index(&*x, OPB_NewIntConst(((LONGINT)(0)))); OPB_Index(&*x, OPB_NewIntConst(((LONGINT)(0))));
@ -1254,11 +1255,11 @@ void OPB_Op (SHORTINT op, OPT_Node *x, OPT_Node y)
OPT_Struct typ = NIL; OPT_Struct typ = NIL;
BOOLEAN do_; BOOLEAN do_;
LONGINT val; LONGINT val;
struct Op__38 _s; struct Op__39 _s;
_s.f = &f; _s.f = &f;
_s.g = &g; _s.g = &g;
_s.lnk = Op__38_s; _s.lnk = Op__39_s;
Op__38_s = &_s; Op__39_s = &_s;
z = *x; z = *x;
if (((z->class == 8 || z->class == 9) || y->class == 8) || y->class == 9) { if (((z->class == 8 || z->class == 9) || y->class == 8) || y->class == 9) {
OPB_err(126); OPB_err(126);
@ -1276,15 +1277,8 @@ void OPB_Op (SHORTINT op, OPT_Node *x, OPT_Node y)
OPB_err(100); OPB_err(100);
} }
break; break;
case 4: case 4: case 5: case 6:
if (__IN(g, 0x01f0)) { if ((__IN(g, 0x70) && y->typ->size < z->typ->size)) {
OPB_Convert(&z, y->typ);
} else {
OPB_err(100);
}
break;
case 5:
if (g == 4) {
OPB_Convert(&y, z->typ); OPB_Convert(&y, z->typ);
} else if (__IN(g, 0x01f0)) { } else if (__IN(g, 0x01f0)) {
OPB_Convert(&z, y->typ); OPB_Convert(&z, y->typ);
@ -1292,15 +1286,6 @@ void OPB_Op (SHORTINT op, OPT_Node *x, OPT_Node y)
OPB_err(100); OPB_err(100);
} }
break; break;
case 6:
if (__IN(g, 0x70)) {
OPB_Convert(&y, z->typ);
} else if (__IN(g, 0x0180)) {
OPB_Convert(&z, y->typ);
} else {
OPB_err(100);
}
break;
case 7: case 7:
if (__IN(g, 0x70)) { if (__IN(g, 0x70)) {
OPB_Convert(&y, z->typ); OPB_Convert(&y, z->typ);
@ -1386,7 +1371,7 @@ void OPB_Op (SHORTINT op, OPT_Node *x, OPT_Node y)
typ = OPT_undftyp; typ = OPT_undftyp;
} }
if (do_) { if (do_) {
NewOp__39(op, typ, &z, y); NewOp__40(op, typ, &z, y);
} }
break; break;
case 2: case 2:
@ -1405,7 +1390,7 @@ void OPB_Op (SHORTINT op, OPT_Node *x, OPT_Node y)
OPB_err(102); OPB_err(102);
typ = OPT_undftyp; typ = OPT_undftyp;
} }
NewOp__39(op, typ, &z, y); NewOp__40(op, typ, &z, y);
break; break;
case 3: case 3:
do_ = 1; do_ = 1;
@ -1428,7 +1413,7 @@ void OPB_Op (SHORTINT op, OPT_Node *x, OPT_Node y)
typ = OPT_undftyp; typ = OPT_undftyp;
} }
if (do_) { if (do_) {
NewOp__39(op, typ, &z, y); NewOp__40(op, typ, &z, y);
} }
break; break;
case 4: case 4:
@ -1446,7 +1431,7 @@ void OPB_Op (SHORTINT op, OPT_Node *x, OPT_Node y)
OPB_err(104); OPB_err(104);
typ = OPT_undftyp; typ = OPT_undftyp;
} }
NewOp__39(op, typ, &z, y); NewOp__40(op, typ, &z, y);
break; break;
case 5: case 5:
if (f == 2) { if (f == 2) {
@ -1456,7 +1441,7 @@ void OPB_Op (SHORTINT op, OPT_Node *x, OPT_Node y)
} }
} else if ((y->class == 7 && OPB_IntToBool(y->conval->intval))) { } else if ((y->class == 7 && OPB_IntToBool(y->conval->intval))) {
} else { } else {
NewOp__39(op, typ, &z, y); NewOp__40(op, typ, &z, y);
} }
} else if (f != 0) { } else if (f != 0) {
OPB_err(94); OPB_err(94);
@ -1479,7 +1464,7 @@ void OPB_Op (SHORTINT op, OPT_Node *x, OPT_Node y)
} }
} }
if (do_) { if (do_) {
NewOp__39(op, typ, &z, y); NewOp__40(op, typ, &z, y);
} }
break; break;
case 7: case 7:
@ -1488,7 +1473,7 @@ void OPB_Op (SHORTINT op, OPT_Node *x, OPT_Node y)
typ = OPT_undftyp; typ = OPT_undftyp;
} }
if ((!__IN(f, 0x70) || y->class != 7) || y->conval->intval != 0) { if ((!__IN(f, 0x70) || y->class != 7) || y->conval->intval != 0) {
NewOp__39(op, typ, &z, y); NewOp__40(op, typ, &z, y);
} }
break; break;
case 8: case 8:
@ -1499,7 +1484,7 @@ void OPB_Op (SHORTINT op, OPT_Node *x, OPT_Node y)
} }
} else if ((y->class == 7 && !OPB_IntToBool(y->conval->intval))) { } else if ((y->class == 7 && !OPB_IntToBool(y->conval->intval))) {
} else { } else {
NewOp__39(op, typ, &z, y); NewOp__40(op, typ, &z, y);
} }
} else if (f != 0) { } else if (f != 0) {
OPB_err(95); OPB_err(95);
@ -1507,16 +1492,16 @@ void OPB_Op (SHORTINT op, OPT_Node *x, OPT_Node y)
} }
break; break;
case 9: case 10: case 9: case 10:
if (__IN(f, 0x6bff) || strings__41(&z, &y)) { if (__IN(f, 0x6bff) || strings__42(&z, &y)) {
typ = OPT_booltyp; typ = OPT_booltyp;
} else { } else {
OPB_err(107); OPB_err(107);
typ = OPT_undftyp; typ = OPT_undftyp;
} }
NewOp__39(op, typ, &z, y); NewOp__40(op, typ, &z, y);
break; break;
case 11: case 12: case 13: case 14: case 11: case 12: case 13: case 14:
if (__IN(f, 0x01f9) || strings__41(&z, &y)) { if (__IN(f, 0x01f9) || strings__42(&z, &y)) {
typ = OPT_booltyp; typ = OPT_booltyp;
} else { } else {
OPM_LogWLn(); OPM_LogWLn();
@ -1525,7 +1510,7 @@ void OPB_Op (SHORTINT op, OPT_Node *x, OPT_Node y)
OPB_err(108); OPB_err(108);
typ = OPT_undftyp; typ = OPT_undftyp;
} }
NewOp__39(op, typ, &z, y); NewOp__40(op, typ, &z, y);
break; break;
default: default:
OPM_LogWStr((CHAR*)"unhandled case in OPB.Op, op = ", (LONGINT)32); OPM_LogWStr((CHAR*)"unhandled case in OPB.Op, op = ", (LONGINT)32);
@ -1535,7 +1520,7 @@ void OPB_Op (SHORTINT op, OPT_Node *x, OPT_Node y)
} }
} }
*x = z; *x = z;
Op__38_s = _s.lnk; Op__39_s = _s.lnk;
} }
void OPB_SetRange (OPT_Node *x, OPT_Node y) void OPB_SetRange (OPT_Node *x, OPT_Node y)
@ -1632,18 +1617,13 @@ static void OPB_CheckAssign (OPT_Struct x, OPT_Node ynode)
OPB_err(113); OPB_err(113);
} }
break; break;
case 2: case 3: case 4: case 9: case 2: case 3: case 9:
if (g != f) { if (g != f) {
OPB_err(113); OPB_err(113);
} }
break; break;
case 5: case 4: case 5: case 6:
if (!__IN(g, 0x30)) { if (!__IN(g, 0x70) || x->size < y->size) {
OPB_err(113);
}
break;
case 6:
if (!__IN(g, 0x70)) {
OPB_err(113); OPB_err(113);
} }
break; break;
@ -1745,6 +1725,23 @@ static void OPB_CheckLeaf (OPT_Node x, BOOLEAN dynArrToo)
{ {
} }
static LONGINT OPB_SignedMaximum (LONGINT bytecount)
{
LONGINT _o_result;
LONGINT result;
result = 1;
result = __LSH(result, __ASHL(bytecount, 3) - 1, LONGINT);
_o_result = result - 1;
return _o_result;
}
static LONGINT OPB_SignedMinimum (LONGINT bytecount)
{
LONGINT _o_result;
_o_result = -OPB_SignedMaximum(bytecount) - 1;
return _o_result;
}
void OPB_StPar0 (OPT_Node *par0, INTEGER fctno) void OPB_StPar0 (OPT_Node *par0, INTEGER fctno)
{ {
INTEGER f; INTEGER f;
@ -1827,14 +1824,8 @@ void OPB_StPar0 (OPT_Node *par0, INTEGER fctno)
x = OPB_NewIntConst(((LONGINT)(0))); x = OPB_NewIntConst(((LONGINT)(0)));
x->typ = OPT_chartyp; x->typ = OPT_chartyp;
break; break;
case 4: case 4: case 5: case 6:
x = OPB_NewIntConst(OPM_MinSInt); x = OPB_NewIntConst(OPB_SignedMinimum(x->typ->size));
break;
case 5:
x = OPB_NewIntConst(OPM_MinInt);
break;
case 6:
x = OPB_NewIntConst(OPM_MinLInt);
break; break;
case 9: case 9:
x = OPB_NewIntConst(((LONGINT)(0))); x = OPB_NewIntConst(((LONGINT)(0)));
@ -1864,14 +1855,8 @@ void OPB_StPar0 (OPT_Node *par0, INTEGER fctno)
x = OPB_NewIntConst(((LONGINT)(255))); x = OPB_NewIntConst(((LONGINT)(255)));
x->typ = OPT_chartyp; x->typ = OPT_chartyp;
break; break;
case 4: case 4: case 5: case 6:
x = OPB_NewIntConst(OPM_MaxSInt); x = OPB_NewIntConst(OPB_SignedMaximum(x->typ->size));
break;
case 5:
x = OPB_NewIntConst(OPM_MaxInt);
break;
case 6:
x = OPB_NewIntConst(OPM_MaxLInt);
break; break;
case 9: case 9:
x = OPB_NewIntConst(OPM_MaxSet); x = OPB_NewIntConst(OPM_MaxSet);
@ -2057,13 +2042,13 @@ void OPB_StPar0 (OPT_Node *par0, INTEGER fctno)
*par0 = x; *par0 = x;
} }
static struct StPar1__52 { static struct StPar1__56 {
struct StPar1__52 *lnk; struct StPar1__56 *lnk;
} *StPar1__52_s; } *StPar1__56_s;
static OPT_Node NewOp__53 (SHORTINT class, SHORTINT subcl, OPT_Node left, OPT_Node right); static OPT_Node NewOp__57 (SHORTINT class, SHORTINT subcl, OPT_Node left, OPT_Node right);
static OPT_Node NewOp__53 (SHORTINT class, SHORTINT subcl, OPT_Node left, OPT_Node right) static OPT_Node NewOp__57 (SHORTINT class, SHORTINT subcl, OPT_Node left, OPT_Node right)
{ {
OPT_Node _o_result; OPT_Node _o_result;
OPT_Node node = NIL; OPT_Node node = NIL;
@ -2080,9 +2065,9 @@ void OPB_StPar1 (OPT_Node *par0, OPT_Node x, SHORTINT fctno)
INTEGER f, L; INTEGER f, L;
OPT_Struct typ = NIL; OPT_Struct typ = NIL;
OPT_Node p = NIL, t = NIL; OPT_Node p = NIL, t = NIL;
struct StPar1__52 _s; struct StPar1__56 _s;
_s.lnk = StPar1__52_s; _s.lnk = StPar1__56_s;
StPar1__52_s = &_s; StPar1__56_s = &_s;
p = *par0; p = *par0;
f = x->typ->form; f = x->typ->form;
switch (fctno) { switch (fctno) {
@ -2098,7 +2083,7 @@ void OPB_StPar1 (OPT_Node *par0, OPT_Node x, SHORTINT fctno)
OPB_err(111); OPB_err(111);
} }
} }
p = NewOp__53(19, fctno, p, x); p = NewOp__57(19, fctno, p, x);
p->typ = OPT_notyp; p->typ = OPT_notyp;
} }
break; break;
@ -2109,7 +2094,7 @@ void OPB_StPar1 (OPT_Node *par0, OPT_Node x, SHORTINT fctno)
if ((x->class == 7 && (0 > x->conval->intval || x->conval->intval > (LONGINT)OPM_MaxSet))) { if ((x->class == 7 && (0 > x->conval->intval || x->conval->intval > (LONGINT)OPM_MaxSet))) {
OPB_err(202); OPB_err(202);
} }
p = NewOp__53(19, fctno, p, x); p = NewOp__57(19, fctno, p, x);
} else { } else {
OPB_err(111); OPB_err(111);
} }
@ -2118,7 +2103,7 @@ void OPB_StPar1 (OPT_Node *par0, OPT_Node x, SHORTINT fctno)
case 17: case 17:
if (!__IN(f, 0x70) || x->class != 7) { if (!__IN(f, 0x70) || x->class != 7) {
OPB_err(69); OPB_err(69);
} else if (f == 4) { } else if (x->typ->size == 1) {
L = (int)x->conval->intval; L = (int)x->conval->intval;
typ = p->typ; typ = p->typ;
while ((L > 0 && __IN(typ->comp, 0x0c))) { while ((L > 0 && __IN(typ->comp, 0x0c))) {
@ -2134,7 +2119,7 @@ void OPB_StPar1 (OPT_Node *par0, OPT_Node x, SHORTINT fctno)
p = p->left; p = p->left;
x->conval->intval += 1; x->conval->intval += 1;
} }
p = NewOp__53(12, 19, p, x); p = NewOp__57(12, 19, p, x);
p->typ = OPT_linttyp; p->typ = OPT_linttyp;
} else { } else {
p = x; p = x;
@ -2156,7 +2141,7 @@ void OPB_StPar1 (OPT_Node *par0, OPT_Node x, SHORTINT fctno)
t = x; t = x;
x = p; x = p;
p = t; p = t;
p = NewOp__53(19, 18, p, x); p = NewOp__57(19, 18, p, x);
} else { } else {
OPB_err(111); OPB_err(111);
} }
@ -2182,7 +2167,7 @@ void OPB_StPar1 (OPT_Node *par0, OPT_Node x, SHORTINT fctno)
} }
p->obj = NIL; p->obj = NIL;
} else { } else {
p = NewOp__53(12, 17, p, x); p = NewOp__57(12, 17, p, x);
p->typ = OPT_linttyp; p->typ = OPT_linttyp;
} }
} else { } else {
@ -2213,9 +2198,9 @@ void OPB_StPar1 (OPT_Node *par0, OPT_Node x, SHORTINT fctno)
OPB_err(111); OPB_err(111);
} else { } else {
if (fctno == 22) { if (fctno == 22) {
p = NewOp__53(12, 27, p, x); p = NewOp__57(12, 27, p, x);
} else { } else {
p = NewOp__53(12, 28, p, x); p = NewOp__57(12, 28, p, x);
} }
p->typ = p->left->typ; p->typ = p->left->typ;
} }
@ -2232,7 +2217,7 @@ void OPB_StPar1 (OPT_Node *par0, OPT_Node x, SHORTINT fctno)
x = p; x = p;
p = t; p = t;
} }
p = NewOp__53(19, fctno, p, x); p = NewOp__57(19, fctno, p, x);
} else { } else {
OPB_err(111); OPB_err(111);
} }
@ -2242,7 +2227,7 @@ void OPB_StPar1 (OPT_Node *par0, OPT_Node x, SHORTINT fctno)
if (x->class == 8 || x->class == 9) { if (x->class == 8 || x->class == 9) {
OPB_err(126); OPB_err(126);
} else if (__IN(f, 0x70)) { } else if (__IN(f, 0x70)) {
p = NewOp__53(12, 26, p, x); p = NewOp__57(12, 26, p, x);
} else { } else {
OPB_err(111); OPB_err(111);
} }
@ -2263,7 +2248,7 @@ void OPB_StPar1 (OPT_Node *par0, OPT_Node x, SHORTINT fctno)
if (x->class == 8 || x->class == 9) { if (x->class == 8 || x->class == 9) {
OPB_err(126); OPB_err(126);
} else if (__IN(f, 0x70)) { } else if (__IN(f, 0x70)) {
p = NewOp__53(19, 30, p, x); p = NewOp__57(19, 30, p, x);
} else { } else {
OPB_err(111); OPB_err(111);
} }
@ -2309,7 +2294,7 @@ void OPB_StPar1 (OPT_Node *par0, OPT_Node x, SHORTINT fctno)
break; break;
} }
*par0 = p; *par0 = p;
StPar1__52_s = _s.lnk; StPar1__56_s = _s.lnk;
} }
void OPB_StParN (OPT_Node *par0, OPT_Node x, INTEGER fctno, INTEGER n) void OPB_StParN (OPT_Node *par0, OPT_Node x, INTEGER fctno, INTEGER n)

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#ifndef OPB__h #ifndef OPB__h
#define OPB__h #define OPB__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#include "SYSTEM.h" #include "SYSTEM.h"
#include "Configuration.h" #include "Configuration.h"
#include "OPM.h" #include "OPM.h"

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#ifndef OPC__h #ifndef OPC__h
#define OPC__h #define OPC__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#include "SYSTEM.h" #include "SYSTEM.h"
#include "Configuration.h" #include "Configuration.h"
#include "Console.h" #include "Console.h"

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#ifndef OPM__h #ifndef OPM__h
#define OPM__h #define OPM__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#include "SYSTEM.h" #include "SYSTEM.h"
#include "OPB.h" #include "OPB.h"
#include "OPM.h" #include "OPM.h"

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#ifndef OPP__h #ifndef OPP__h
#define OPP__h #define OPP__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin tspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin tspkaSfF */
#include "SYSTEM.h" #include "SYSTEM.h"
#include "OPM.h" #include "OPM.h"

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin tspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin tspkaSfF */
#ifndef OPS__h #ifndef OPS__h
#define OPS__h #define OPS__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#include "SYSTEM.h" #include "SYSTEM.h"
#include "OPM.h" #include "OPM.h"
#include "OPS.h" #include "OPS.h"

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#ifndef OPT__h #ifndef OPT__h
#define OPT__h #define OPT__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#include "SYSTEM.h" #include "SYSTEM.h"
#include "OPC.h" #include "OPC.h"
#include "OPM.h" #include "OPM.h"

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#ifndef OPV__h #ifndef OPV__h
#define OPV__h #define OPV__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#include "SYSTEM.h" #include "SYSTEM.h"
typedef typedef

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#ifndef Platform__h #ifndef Platform__h
#define Platform__h #define Platform__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#include "SYSTEM.h" #include "SYSTEM.h"

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#ifndef Reals__h #ifndef Reals__h
#define Reals__h #define Reals__h

View file

@ -4,6 +4,8 @@
#ifndef _WIN32 #ifndef _WIN32
// Building for a Unix/Linux based system // Building for a Unix/Linux based system
// TODO: Remove these includes
#include <string.h> // For memcpy ... #include <string.h> // For memcpy ...
#include <stdint.h> // For uintptr_t ... #include <stdint.h> // For uintptr_t ...
@ -70,6 +72,7 @@ typedef unsigned char U_SHORTINT;
#endif #endif
typedef U_LONGINT SET; typedef U_LONGINT SET;
typedef U_LONGINT U_SET;
// OS Memory allocation interfaces are in PlatformXXX.Mod // OS Memory allocation interfaces are in PlatformXXX.Mod

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#include "SYSTEM.h" #include "SYSTEM.h"

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#ifndef Strings__h #ifndef Strings__h
#define Strings__h #define Strings__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#include "SYSTEM.h" #include "SYSTEM.h"
#include "Files.h" #include "Files.h"
#include "Modules.h" #include "Modules.h"

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#ifndef Texts__h #ifndef Texts__h
#define Texts__h #define Texts__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkamSf */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkamSf */
#include "SYSTEM.h" #include "SYSTEM.h"
#include "Configuration.h" #include "Configuration.h"
#include "Heap.h" #include "Heap.h"

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#include "SYSTEM.h" #include "SYSTEM.h"
typedef typedef
@ -194,5 +194,6 @@ export void *errors__init(void)
__MOVE("implicit type cast", errors_errors[301], 19); __MOVE("implicit type cast", errors_errors[301], 19);
__MOVE("inappropriate symbol file ignored", errors_errors[306], 34); __MOVE("inappropriate symbol file ignored", errors_errors[306], 34);
__MOVE("no ELSE symbol after CASE statement sequence may lead to trap", errors_errors[307], 62); __MOVE("no ELSE symbol after CASE statement sequence may lead to trap", errors_errors[307], 62);
__MOVE("SYSTEM.VAL result includes memory past end of source variable", errors_errors[308], 62);
__ENDMOD; __ENDMOD;
} }

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#ifndef errors__h #ifndef errors__h
#define errors__h #define errors__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#include "SYSTEM.h" #include "SYSTEM.h"
#include "Configuration.h" #include "Configuration.h"
#include "Console.h" #include "Console.h"

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#ifndef extTools__h #ifndef extTools__h
#define extTools__h #define extTools__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#include "SYSTEM.h" #include "SYSTEM.h"
#include "Console.h" #include "Console.h"
#include "Strings.h" #include "Strings.h"

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#ifndef vt100__h #ifndef vt100__h
#define vt100__h #define vt100__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#include "SYSTEM.h" #include "SYSTEM.h"
@ -13,6 +13,6 @@ export void *Configuration__init(void)
__DEFMOD; __DEFMOD;
__REGMOD("Configuration", 0); __REGMOD("Configuration", 0);
/* BEGIN */ /* BEGIN */
__MOVE("1.95 [2016/08/13] for gcc LP64 on cygwin", Configuration_versionLong, 41); __MOVE("1.95 [2016/08/16] for gcc LP64 on cygwin", Configuration_versionLong, 41);
__ENDMOD; __ENDMOD;
} }

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#ifndef Configuration__h #ifndef Configuration__h
#define Configuration__h #define Configuration__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#include "SYSTEM.h" #include "SYSTEM.h"
#include "Platform.h" #include "Platform.h"

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#ifndef Console__h #ifndef Console__h
#define Console__h #define Console__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin tspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin tspkaSfF */
#include "SYSTEM.h" #include "SYSTEM.h"
#include "Configuration.h" #include "Configuration.h"
#include "Console.h" #include "Console.h"

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin tspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin tspkaSfF */
#ifndef Files__h #ifndef Files__h
#define Files__h #define Files__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin tskSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin tskSfF */
#include "SYSTEM.h" #include "SYSTEM.h"
struct Heap__1 { struct Heap__1 {

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin tskSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin tskSfF */
#ifndef Heap__h #ifndef Heap__h
#define Heap__h #define Heap__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#include "SYSTEM.h" #include "SYSTEM.h"
#include "Console.h" #include "Console.h"
#include "Heap.h" #include "Heap.h"

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#ifndef Modules__h #ifndef Modules__h
#define Modules__h #define Modules__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#include "SYSTEM.h" #include "SYSTEM.h"
#include "OPM.h" #include "OPM.h"
#include "OPS.h" #include "OPS.h"
@ -34,6 +34,7 @@ export void OPB_In (OPT_Node *x, OPT_Node y);
export void OPB_Index (OPT_Node *x, OPT_Node y); export void OPB_Index (OPT_Node *x, OPT_Node y);
export void OPB_Inittd (OPT_Node *inittd, OPT_Node *last, OPT_Struct typ); export void OPB_Inittd (OPT_Node *inittd, OPT_Node *last, OPT_Struct typ);
static BOOLEAN OPB_IntToBool (LONGINT i); static BOOLEAN OPB_IntToBool (LONGINT i);
static OPT_Struct OPB_IntType (LONGINT size);
export void OPB_Link (OPT_Node *x, OPT_Node *last, OPT_Node y); export void OPB_Link (OPT_Node *x, OPT_Node *last, OPT_Node y);
export void OPB_MOp (SHORTINT op, OPT_Node *x); export void OPB_MOp (SHORTINT op, OPT_Node *x);
export OPT_Node OPB_NewBoolConst (BOOLEAN boolval); export OPT_Node OPB_NewBoolConst (BOOLEAN boolval);
@ -51,6 +52,9 @@ export void OPB_Return (OPT_Node *x, OPT_Object proc);
export void OPB_SetElem (OPT_Node *x); export void OPB_SetElem (OPT_Node *x);
static void OPB_SetIntType (OPT_Node node); static void OPB_SetIntType (OPT_Node node);
export void OPB_SetRange (OPT_Node *x, OPT_Node y); export void OPB_SetRange (OPT_Node *x, OPT_Node y);
static INTEGER OPB_SignedByteSize (LONGINT n);
static LONGINT OPB_SignedMaximum (LONGINT bytecount);
static LONGINT OPB_SignedMinimum (LONGINT bytecount);
export void OPB_StFct (OPT_Node *par0, SHORTINT fctno, INTEGER parno); export void OPB_StFct (OPT_Node *par0, SHORTINT fctno, INTEGER parno);
export void OPB_StPar0 (OPT_Node *par0, INTEGER fctno); export void OPB_StPar0 (OPT_Node *par0, INTEGER fctno);
export void OPB_StPar1 (OPT_Node *par0, OPT_Node x, SHORTINT fctno); export void OPB_StPar1 (OPT_Node *par0, OPT_Node x, SHORTINT fctno);
@ -220,21 +224,46 @@ OPT_Node OPB_EmptySet (void)
return _o_result; return _o_result;
} }
static INTEGER OPB_SignedByteSize (LONGINT n)
{
INTEGER _o_result;
INTEGER b;
if (n < 0) {
n = -(n + 1);
}
b = 1;
while (b < 8) {
if (__ASH(n, -(__ASHL(b, 3) - 1)) == 0) {
_o_result = b;
return _o_result;
}
b += 1;
}
_o_result = 8;
return _o_result;
}
static OPT_Struct OPB_IntType (LONGINT size)
{
OPT_Struct _o_result;
OPT_Struct result = NIL;
if (size <= OPT_sinttyp->size) {
result = OPT_sinttyp;
} else if (size <= OPT_inttyp->size) {
result = OPT_inttyp;
} else {
result = OPT_linttyp;
}
if (size > OPT_linttyp->size) {
OPB_err(203);
}
_o_result = result;
return _o_result;
}
static void OPB_SetIntType (OPT_Node node) static void OPB_SetIntType (OPT_Node node)
{ {
LONGINT v; node->typ = OPB_IntType(OPB_SignedByteSize(node->conval->intval));
v = node->conval->intval;
if ((OPM_MinSInt <= (LONGINT)v && (LONGINT)v <= OPM_MaxSInt)) {
node->typ = OPT_sinttyp;
} else if ((OPM_MinInt <= (LONGINT)v && (LONGINT)v <= OPM_MaxInt)) {
node->typ = OPT_inttyp;
} else if ((OPM_MinLInt <= v && v <= OPM_MaxLInt)) {
node->typ = OPT_linttyp;
} else {
OPB_err(203);
node->typ = OPT_sinttyp;
node->conval->intval = 1;
}
} }
OPT_Node OPB_NewIntConst (LONGINT intval) OPT_Node OPB_NewIntConst (LONGINT intval)
@ -378,16 +407,16 @@ void OPB_Field (OPT_Node *x, OPT_Object y)
} }
} }
static struct TypTest__57 { static struct TypTest__61 {
OPT_Node *x; OPT_Node *x;
OPT_Object *obj; OPT_Object *obj;
BOOLEAN *guard; BOOLEAN *guard;
struct TypTest__57 *lnk; struct TypTest__61 *lnk;
} *TypTest__57_s; } *TypTest__61_s;
static void GTT__58 (OPT_Struct t0, OPT_Struct t1); static void GTT__62 (OPT_Struct t0, OPT_Struct t1);
static void GTT__58 (OPT_Struct t0, OPT_Struct t1) static void GTT__62 (OPT_Struct t0, OPT_Struct t1)
{ {
OPT_Node node = NIL; OPT_Node node = NIL;
OPT_Struct t = NIL; OPT_Struct t = NIL;
@ -400,54 +429,54 @@ static void GTT__58 (OPT_Struct t0, OPT_Struct t1)
t1 = t1->BaseTyp; t1 = t1->BaseTyp;
} }
if (t1 == t0 || t0->form == 0) { if (t1 == t0 || t0->form == 0) {
if (*TypTest__57_s->guard) { if (*TypTest__61_s->guard) {
OPB_BindNodes(5, NIL, &*TypTest__57_s->x, NIL); OPB_BindNodes(5, NIL, &*TypTest__61_s->x, NIL);
(*TypTest__57_s->x)->readonly = (*TypTest__57_s->x)->left->readonly; (*TypTest__61_s->x)->readonly = (*TypTest__61_s->x)->left->readonly;
} else { } else {
node = OPT_NewNode(11); node = OPT_NewNode(11);
node->subcl = 16; node->subcl = 16;
node->left = *TypTest__57_s->x; node->left = *TypTest__61_s->x;
node->obj = *TypTest__57_s->obj; node->obj = *TypTest__61_s->obj;
*TypTest__57_s->x = node; *TypTest__61_s->x = node;
} }
} else { } else {
OPB_err(85); OPB_err(85);
} }
} else if (t0 != t1) { } else if (t0 != t1) {
OPB_err(85); OPB_err(85);
} else if (!*TypTest__57_s->guard) { } else if (!*TypTest__61_s->guard) {
if ((*TypTest__57_s->x)->class == 5) { if ((*TypTest__61_s->x)->class == 5) {
node = OPT_NewNode(11); node = OPT_NewNode(11);
node->subcl = 16; node->subcl = 16;
node->left = *TypTest__57_s->x; node->left = *TypTest__61_s->x;
node->obj = *TypTest__57_s->obj; node->obj = *TypTest__61_s->obj;
*TypTest__57_s->x = node; *TypTest__61_s->x = node;
} else { } else {
*TypTest__57_s->x = OPB_NewBoolConst(1); *TypTest__61_s->x = OPB_NewBoolConst(1);
} }
} }
} }
void OPB_TypTest (OPT_Node *x, OPT_Object obj, BOOLEAN guard) void OPB_TypTest (OPT_Node *x, OPT_Object obj, BOOLEAN guard)
{ {
struct TypTest__57 _s; struct TypTest__61 _s;
_s.x = x; _s.x = x;
_s.obj = &obj; _s.obj = &obj;
_s.guard = &guard; _s.guard = &guard;
_s.lnk = TypTest__57_s; _s.lnk = TypTest__61_s;
TypTest__57_s = &_s; TypTest__61_s = &_s;
if (OPB_NotVar(*x)) { if (OPB_NotVar(*x)) {
OPB_err(112); OPB_err(112);
} else if ((*x)->typ->form == 13) { } else if ((*x)->typ->form == 13) {
if (((*x)->typ->BaseTyp->comp != 4 && (*x)->typ != OPT_sysptrtyp)) { if (((*x)->typ->BaseTyp->comp != 4 && (*x)->typ != OPT_sysptrtyp)) {
OPB_err(85); OPB_err(85);
} else if (obj->typ->form == 13) { } else if (obj->typ->form == 13) {
GTT__58((*x)->typ->BaseTyp, obj->typ->BaseTyp); GTT__62((*x)->typ->BaseTyp, obj->typ->BaseTyp);
} else { } else {
OPB_err(86); OPB_err(86);
} }
} else if (((((*x)->typ->comp == 4 && (*x)->class == 1)) && obj->typ->comp == 4)) { } else if (((((*x)->typ->comp == 4 && (*x)->class == 1)) && obj->typ->comp == 4)) {
GTT__58((*x)->typ, obj->typ); GTT__62((*x)->typ, obj->typ);
} else { } else {
OPB_err(87); OPB_err(87);
} }
@ -456,7 +485,7 @@ void OPB_TypTest (OPT_Node *x, OPT_Object obj, BOOLEAN guard)
} else { } else {
(*x)->typ = OPT_booltyp; (*x)->typ = OPT_booltyp;
} }
TypTest__57_s = _s.lnk; TypTest__61_s = _s.lnk;
} }
void OPB_In (OPT_Node *x, OPT_Node y) void OPB_In (OPT_Node *x, OPT_Node y)
@ -522,13 +551,13 @@ static void OPB_CheckRealType (INTEGER f, INTEGER nr, OPT_Const x)
x->intval = -1; x->intval = -1;
} }
static struct MOp__28 { static struct MOp__29 {
struct MOp__28 *lnk; struct MOp__29 *lnk;
} *MOp__28_s; } *MOp__29_s;
static OPT_Node NewOp__29 (SHORTINT op, OPT_Struct typ, OPT_Node z); static OPT_Node NewOp__30 (SHORTINT op, OPT_Struct typ, OPT_Node z);
static OPT_Node NewOp__29 (SHORTINT op, OPT_Struct typ, OPT_Node z) static OPT_Node NewOp__30 (SHORTINT op, OPT_Struct typ, OPT_Node z)
{ {
OPT_Node _o_result; OPT_Node _o_result;
OPT_Node node = NIL; OPT_Node node = NIL;
@ -545,9 +574,9 @@ void OPB_MOp (SHORTINT op, OPT_Node *x)
INTEGER f; INTEGER f;
OPT_Struct typ = NIL; OPT_Struct typ = NIL;
OPT_Node z = NIL; OPT_Node z = NIL;
struct MOp__28 _s; struct MOp__29 _s;
_s.lnk = MOp__28_s; _s.lnk = MOp__29_s;
MOp__28_s = &_s; MOp__29_s = &_s;
z = *x; z = *x;
if (z->class == 8 || z->class == 9) { if (z->class == 8 || z->class == 9) {
OPB_err(126); OPB_err(126);
@ -561,7 +590,7 @@ void OPB_MOp (SHORTINT op, OPT_Node *x)
z->conval->intval = OPB_BoolToInt(!OPB_IntToBool(z->conval->intval)); z->conval->intval = OPB_BoolToInt(!OPB_IntToBool(z->conval->intval));
z->obj = NIL; z->obj = NIL;
} else { } else {
z = NewOp__29(op, typ, z); z = NewOp__30(op, typ, z);
} }
} else { } else {
OPB_err(98); OPB_err(98);
@ -589,7 +618,7 @@ void OPB_MOp (SHORTINT op, OPT_Node *x)
} }
z->obj = NIL; z->obj = NIL;
} else { } else {
z = NewOp__29(op, typ, z); z = NewOp__30(op, typ, z);
} }
} else { } else {
OPB_err(97); OPB_err(97);
@ -610,7 +639,7 @@ void OPB_MOp (SHORTINT op, OPT_Node *x)
} }
z->obj = NIL; z->obj = NIL;
} else { } else {
z = NewOp__29(op, typ, z); z = NewOp__30(op, typ, z);
} }
} else { } else {
OPB_err(111); OPB_err(111);
@ -622,7 +651,7 @@ void OPB_MOp (SHORTINT op, OPT_Node *x)
z->conval->intval = (int)__CAP((CHAR)z->conval->intval); z->conval->intval = (int)__CAP((CHAR)z->conval->intval);
z->obj = NIL; z->obj = NIL;
} else { } else {
z = NewOp__29(op, typ, z); z = NewOp__30(op, typ, z);
} }
} else { } else {
OPB_err(111); OPB_err(111);
@ -635,7 +664,7 @@ void OPB_MOp (SHORTINT op, OPT_Node *x)
z->conval->intval = OPB_BoolToInt(__ODD(z->conval->intval)); z->conval->intval = OPB_BoolToInt(__ODD(z->conval->intval));
z->obj = NIL; z->obj = NIL;
} else { } else {
z = NewOp__29(op, typ, z); z = NewOp__30(op, typ, z);
} }
} else { } else {
OPB_err(111); OPB_err(111);
@ -648,7 +677,7 @@ void OPB_MOp (SHORTINT op, OPT_Node *x)
f = 10; f = 10;
} }
if (z->class < 7 || f == 10) { if (z->class < 7 || f == 10) {
z = NewOp__29(op, typ, z); z = NewOp__30(op, typ, z);
} else { } else {
OPB_err(127); OPB_err(127);
} }
@ -657,7 +686,7 @@ void OPB_MOp (SHORTINT op, OPT_Node *x)
case 25: case 25:
if ((__IN(f, 0x70) && z->class == 7)) { if ((__IN(f, 0x70) && z->class == 7)) {
if ((0 <= z->conval->intval && z->conval->intval <= -1)) { if ((0 <= z->conval->intval && z->conval->intval <= -1)) {
z = NewOp__29(op, typ, z); z = NewOp__30(op, typ, z);
} else { } else {
OPB_err(219); OPB_err(219);
} }
@ -674,7 +703,7 @@ void OPB_MOp (SHORTINT op, OPT_Node *x)
} }
} }
*x = z; *x = z;
MOp__28_s = _s.lnk; MOp__29_s = _s.lnk;
} }
static void OPB_CheckPtr (OPT_Node x, OPT_Node y) static void OPB_CheckPtr (OPT_Node x, OPT_Node y)
@ -865,41 +894,13 @@ static void OPB_ConstOp (INTEGER op, OPT_Node x, OPT_Node y)
__GUARDEQP(yval, OPT_ConstDesc) = *xval; __GUARDEQP(yval, OPT_ConstDesc) = *xval;
} }
break; break;
case 4: case 4: case 5: case 6:
if (__IN(g, 0x70)) { if (__IN(g, 0x70)) {
x->typ = y->typ; if (x->typ->size <= y->typ->size) {
} else if (g == 7) { x->typ = y->typ;
x->typ = OPT_realtyp; } else {
xval->realval = xval->intval; x->typ = OPB_IntType(x->typ->size);
} else if (g == 8) { }
x->typ = OPT_lrltyp;
xval->realval = xval->intval;
} else {
OPB_err(100);
y->typ = x->typ;
__GUARDEQP(yval, OPT_ConstDesc) = *xval;
}
break;
case 5:
if (g == 4) {
y->typ = OPT_inttyp;
} else if (__IN(g, 0x70)) {
x->typ = y->typ;
} else if (g == 7) {
x->typ = OPT_realtyp;
xval->realval = xval->intval;
} else if (g == 8) {
x->typ = OPT_lrltyp;
xval->realval = xval->intval;
} else {
OPB_err(100);
y->typ = x->typ;
__GUARDEQP(yval, OPT_ConstDesc) = *xval;
}
break;
case 6:
if (__IN(g, 0x70)) {
y->typ = OPT_linttyp;
} else if (g == 7) { } else if (g == 7) {
x->typ = OPT_realtyp; x->typ = OPT_realtyp;
xval->realval = xval->intval; xval->realval = xval->intval;
@ -1196,15 +1197,15 @@ static void OPB_Convert (OPT_Node *x, OPT_Struct typ)
(*x)->typ = typ; (*x)->typ = typ;
} }
static struct Op__38 { static struct Op__39 {
INTEGER *f, *g; INTEGER *f, *g;
struct Op__38 *lnk; struct Op__39 *lnk;
} *Op__38_s; } *Op__39_s;
static void NewOp__39 (SHORTINT op, OPT_Struct typ, OPT_Node *x, OPT_Node y); static void NewOp__40 (SHORTINT op, OPT_Struct typ, OPT_Node *x, OPT_Node y);
static BOOLEAN strings__41 (OPT_Node *x, OPT_Node *y); static BOOLEAN strings__42 (OPT_Node *x, OPT_Node *y);
static void NewOp__39 (SHORTINT op, OPT_Struct typ, OPT_Node *x, OPT_Node y) static void NewOp__40 (SHORTINT op, OPT_Struct typ, OPT_Node *x, OPT_Node y)
{ {
OPT_Node node = NIL; OPT_Node node = NIL;
node = OPT_NewNode(12); node = OPT_NewNode(12);
@ -1215,29 +1216,29 @@ static void NewOp__39 (SHORTINT op, OPT_Struct typ, OPT_Node *x, OPT_Node y)
*x = node; *x = node;
} }
static BOOLEAN strings__41 (OPT_Node *x, OPT_Node *y) static BOOLEAN strings__42 (OPT_Node *x, OPT_Node *y)
{ {
BOOLEAN _o_result; BOOLEAN _o_result;
BOOLEAN ok, xCharArr, yCharArr; BOOLEAN ok, xCharArr, yCharArr;
xCharArr = (__IN((*x)->typ->comp, 0x0c) && (*x)->typ->BaseTyp->form == 3) || *Op__38_s->f == 10; xCharArr = (__IN((*x)->typ->comp, 0x0c) && (*x)->typ->BaseTyp->form == 3) || *Op__39_s->f == 10;
yCharArr = (__IN((*y)->typ->comp, 0x0c) && (*y)->typ->BaseTyp->form == 3) || *Op__38_s->g == 10; yCharArr = (__IN((*y)->typ->comp, 0x0c) && (*y)->typ->BaseTyp->form == 3) || *Op__39_s->g == 10;
if ((((xCharArr && *Op__38_s->g == 3)) && (*y)->class == 7)) { if ((((xCharArr && *Op__39_s->g == 3)) && (*y)->class == 7)) {
OPB_CharToString(*y); OPB_CharToString(*y);
*Op__38_s->g = 10; *Op__39_s->g = 10;
yCharArr = 1; yCharArr = 1;
} }
if ((((yCharArr && *Op__38_s->f == 3)) && (*x)->class == 7)) { if ((((yCharArr && *Op__39_s->f == 3)) && (*x)->class == 7)) {
OPB_CharToString(*x); OPB_CharToString(*x);
*Op__38_s->f = 10; *Op__39_s->f = 10;
xCharArr = 1; xCharArr = 1;
} }
ok = (xCharArr && yCharArr); ok = (xCharArr && yCharArr);
if (ok) { if (ok) {
if ((*Op__38_s->f == 10 && (*x)->conval->intval2 == 1)) { if ((*Op__39_s->f == 10 && (*x)->conval->intval2 == 1)) {
(*x)->typ = OPT_chartyp; (*x)->typ = OPT_chartyp;
(*x)->conval->intval = 0; (*x)->conval->intval = 0;
OPB_Index(&*y, OPB_NewIntConst(((LONGINT)(0)))); OPB_Index(&*y, OPB_NewIntConst(((LONGINT)(0))));
} else if ((*Op__38_s->g == 10 && (*y)->conval->intval2 == 1)) { } else if ((*Op__39_s->g == 10 && (*y)->conval->intval2 == 1)) {
(*y)->typ = OPT_chartyp; (*y)->typ = OPT_chartyp;
(*y)->conval->intval = 0; (*y)->conval->intval = 0;
OPB_Index(&*x, OPB_NewIntConst(((LONGINT)(0)))); OPB_Index(&*x, OPB_NewIntConst(((LONGINT)(0))));
@ -1254,11 +1255,11 @@ void OPB_Op (SHORTINT op, OPT_Node *x, OPT_Node y)
OPT_Struct typ = NIL; OPT_Struct typ = NIL;
BOOLEAN do_; BOOLEAN do_;
LONGINT val; LONGINT val;
struct Op__38 _s; struct Op__39 _s;
_s.f = &f; _s.f = &f;
_s.g = &g; _s.g = &g;
_s.lnk = Op__38_s; _s.lnk = Op__39_s;
Op__38_s = &_s; Op__39_s = &_s;
z = *x; z = *x;
if (((z->class == 8 || z->class == 9) || y->class == 8) || y->class == 9) { if (((z->class == 8 || z->class == 9) || y->class == 8) || y->class == 9) {
OPB_err(126); OPB_err(126);
@ -1276,15 +1277,8 @@ void OPB_Op (SHORTINT op, OPT_Node *x, OPT_Node y)
OPB_err(100); OPB_err(100);
} }
break; break;
case 4: case 4: case 5: case 6:
if (__IN(g, 0x01f0)) { if ((__IN(g, 0x70) && y->typ->size < z->typ->size)) {
OPB_Convert(&z, y->typ);
} else {
OPB_err(100);
}
break;
case 5:
if (g == 4) {
OPB_Convert(&y, z->typ); OPB_Convert(&y, z->typ);
} else if (__IN(g, 0x01f0)) { } else if (__IN(g, 0x01f0)) {
OPB_Convert(&z, y->typ); OPB_Convert(&z, y->typ);
@ -1292,15 +1286,6 @@ void OPB_Op (SHORTINT op, OPT_Node *x, OPT_Node y)
OPB_err(100); OPB_err(100);
} }
break; break;
case 6:
if (__IN(g, 0x70)) {
OPB_Convert(&y, z->typ);
} else if (__IN(g, 0x0180)) {
OPB_Convert(&z, y->typ);
} else {
OPB_err(100);
}
break;
case 7: case 7:
if (__IN(g, 0x70)) { if (__IN(g, 0x70)) {
OPB_Convert(&y, z->typ); OPB_Convert(&y, z->typ);
@ -1386,7 +1371,7 @@ void OPB_Op (SHORTINT op, OPT_Node *x, OPT_Node y)
typ = OPT_undftyp; typ = OPT_undftyp;
} }
if (do_) { if (do_) {
NewOp__39(op, typ, &z, y); NewOp__40(op, typ, &z, y);
} }
break; break;
case 2: case 2:
@ -1405,7 +1390,7 @@ void OPB_Op (SHORTINT op, OPT_Node *x, OPT_Node y)
OPB_err(102); OPB_err(102);
typ = OPT_undftyp; typ = OPT_undftyp;
} }
NewOp__39(op, typ, &z, y); NewOp__40(op, typ, &z, y);
break; break;
case 3: case 3:
do_ = 1; do_ = 1;
@ -1428,7 +1413,7 @@ void OPB_Op (SHORTINT op, OPT_Node *x, OPT_Node y)
typ = OPT_undftyp; typ = OPT_undftyp;
} }
if (do_) { if (do_) {
NewOp__39(op, typ, &z, y); NewOp__40(op, typ, &z, y);
} }
break; break;
case 4: case 4:
@ -1446,7 +1431,7 @@ void OPB_Op (SHORTINT op, OPT_Node *x, OPT_Node y)
OPB_err(104); OPB_err(104);
typ = OPT_undftyp; typ = OPT_undftyp;
} }
NewOp__39(op, typ, &z, y); NewOp__40(op, typ, &z, y);
break; break;
case 5: case 5:
if (f == 2) { if (f == 2) {
@ -1456,7 +1441,7 @@ void OPB_Op (SHORTINT op, OPT_Node *x, OPT_Node y)
} }
} else if ((y->class == 7 && OPB_IntToBool(y->conval->intval))) { } else if ((y->class == 7 && OPB_IntToBool(y->conval->intval))) {
} else { } else {
NewOp__39(op, typ, &z, y); NewOp__40(op, typ, &z, y);
} }
} else if (f != 0) { } else if (f != 0) {
OPB_err(94); OPB_err(94);
@ -1479,7 +1464,7 @@ void OPB_Op (SHORTINT op, OPT_Node *x, OPT_Node y)
} }
} }
if (do_) { if (do_) {
NewOp__39(op, typ, &z, y); NewOp__40(op, typ, &z, y);
} }
break; break;
case 7: case 7:
@ -1488,7 +1473,7 @@ void OPB_Op (SHORTINT op, OPT_Node *x, OPT_Node y)
typ = OPT_undftyp; typ = OPT_undftyp;
} }
if ((!__IN(f, 0x70) || y->class != 7) || y->conval->intval != 0) { if ((!__IN(f, 0x70) || y->class != 7) || y->conval->intval != 0) {
NewOp__39(op, typ, &z, y); NewOp__40(op, typ, &z, y);
} }
break; break;
case 8: case 8:
@ -1499,7 +1484,7 @@ void OPB_Op (SHORTINT op, OPT_Node *x, OPT_Node y)
} }
} else if ((y->class == 7 && !OPB_IntToBool(y->conval->intval))) { } else if ((y->class == 7 && !OPB_IntToBool(y->conval->intval))) {
} else { } else {
NewOp__39(op, typ, &z, y); NewOp__40(op, typ, &z, y);
} }
} else if (f != 0) { } else if (f != 0) {
OPB_err(95); OPB_err(95);
@ -1507,16 +1492,16 @@ void OPB_Op (SHORTINT op, OPT_Node *x, OPT_Node y)
} }
break; break;
case 9: case 10: case 9: case 10:
if (__IN(f, 0x6bff) || strings__41(&z, &y)) { if (__IN(f, 0x6bff) || strings__42(&z, &y)) {
typ = OPT_booltyp; typ = OPT_booltyp;
} else { } else {
OPB_err(107); OPB_err(107);
typ = OPT_undftyp; typ = OPT_undftyp;
} }
NewOp__39(op, typ, &z, y); NewOp__40(op, typ, &z, y);
break; break;
case 11: case 12: case 13: case 14: case 11: case 12: case 13: case 14:
if (__IN(f, 0x01f9) || strings__41(&z, &y)) { if (__IN(f, 0x01f9) || strings__42(&z, &y)) {
typ = OPT_booltyp; typ = OPT_booltyp;
} else { } else {
OPM_LogWLn(); OPM_LogWLn();
@ -1525,7 +1510,7 @@ void OPB_Op (SHORTINT op, OPT_Node *x, OPT_Node y)
OPB_err(108); OPB_err(108);
typ = OPT_undftyp; typ = OPT_undftyp;
} }
NewOp__39(op, typ, &z, y); NewOp__40(op, typ, &z, y);
break; break;
default: default:
OPM_LogWStr((CHAR*)"unhandled case in OPB.Op, op = ", (LONGINT)32); OPM_LogWStr((CHAR*)"unhandled case in OPB.Op, op = ", (LONGINT)32);
@ -1535,7 +1520,7 @@ void OPB_Op (SHORTINT op, OPT_Node *x, OPT_Node y)
} }
} }
*x = z; *x = z;
Op__38_s = _s.lnk; Op__39_s = _s.lnk;
} }
void OPB_SetRange (OPT_Node *x, OPT_Node y) void OPB_SetRange (OPT_Node *x, OPT_Node y)
@ -1632,18 +1617,13 @@ static void OPB_CheckAssign (OPT_Struct x, OPT_Node ynode)
OPB_err(113); OPB_err(113);
} }
break; break;
case 2: case 3: case 4: case 9: case 2: case 3: case 9:
if (g != f) { if (g != f) {
OPB_err(113); OPB_err(113);
} }
break; break;
case 5: case 4: case 5: case 6:
if (!__IN(g, 0x30)) { if (!__IN(g, 0x70) || x->size < y->size) {
OPB_err(113);
}
break;
case 6:
if (!__IN(g, 0x70)) {
OPB_err(113); OPB_err(113);
} }
break; break;
@ -1745,6 +1725,23 @@ static void OPB_CheckLeaf (OPT_Node x, BOOLEAN dynArrToo)
{ {
} }
static LONGINT OPB_SignedMaximum (LONGINT bytecount)
{
LONGINT _o_result;
LONGINT result;
result = 1;
result = __LSH(result, __ASHL(bytecount, 3) - 1, LONGINT);
_o_result = result - 1;
return _o_result;
}
static LONGINT OPB_SignedMinimum (LONGINT bytecount)
{
LONGINT _o_result;
_o_result = -OPB_SignedMaximum(bytecount) - 1;
return _o_result;
}
void OPB_StPar0 (OPT_Node *par0, INTEGER fctno) void OPB_StPar0 (OPT_Node *par0, INTEGER fctno)
{ {
INTEGER f; INTEGER f;
@ -1827,14 +1824,8 @@ void OPB_StPar0 (OPT_Node *par0, INTEGER fctno)
x = OPB_NewIntConst(((LONGINT)(0))); x = OPB_NewIntConst(((LONGINT)(0)));
x->typ = OPT_chartyp; x->typ = OPT_chartyp;
break; break;
case 4: case 4: case 5: case 6:
x = OPB_NewIntConst(OPM_MinSInt); x = OPB_NewIntConst(OPB_SignedMinimum(x->typ->size));
break;
case 5:
x = OPB_NewIntConst(OPM_MinInt);
break;
case 6:
x = OPB_NewIntConst(OPM_MinLInt);
break; break;
case 9: case 9:
x = OPB_NewIntConst(((LONGINT)(0))); x = OPB_NewIntConst(((LONGINT)(0)));
@ -1864,14 +1855,8 @@ void OPB_StPar0 (OPT_Node *par0, INTEGER fctno)
x = OPB_NewIntConst(((LONGINT)(255))); x = OPB_NewIntConst(((LONGINT)(255)));
x->typ = OPT_chartyp; x->typ = OPT_chartyp;
break; break;
case 4: case 4: case 5: case 6:
x = OPB_NewIntConst(OPM_MaxSInt); x = OPB_NewIntConst(OPB_SignedMaximum(x->typ->size));
break;
case 5:
x = OPB_NewIntConst(OPM_MaxInt);
break;
case 6:
x = OPB_NewIntConst(OPM_MaxLInt);
break; break;
case 9: case 9:
x = OPB_NewIntConst(OPM_MaxSet); x = OPB_NewIntConst(OPM_MaxSet);
@ -2057,13 +2042,13 @@ void OPB_StPar0 (OPT_Node *par0, INTEGER fctno)
*par0 = x; *par0 = x;
} }
static struct StPar1__52 { static struct StPar1__56 {
struct StPar1__52 *lnk; struct StPar1__56 *lnk;
} *StPar1__52_s; } *StPar1__56_s;
static OPT_Node NewOp__53 (SHORTINT class, SHORTINT subcl, OPT_Node left, OPT_Node right); static OPT_Node NewOp__57 (SHORTINT class, SHORTINT subcl, OPT_Node left, OPT_Node right);
static OPT_Node NewOp__53 (SHORTINT class, SHORTINT subcl, OPT_Node left, OPT_Node right) static OPT_Node NewOp__57 (SHORTINT class, SHORTINT subcl, OPT_Node left, OPT_Node right)
{ {
OPT_Node _o_result; OPT_Node _o_result;
OPT_Node node = NIL; OPT_Node node = NIL;
@ -2080,9 +2065,9 @@ void OPB_StPar1 (OPT_Node *par0, OPT_Node x, SHORTINT fctno)
INTEGER f, L; INTEGER f, L;
OPT_Struct typ = NIL; OPT_Struct typ = NIL;
OPT_Node p = NIL, t = NIL; OPT_Node p = NIL, t = NIL;
struct StPar1__52 _s; struct StPar1__56 _s;
_s.lnk = StPar1__52_s; _s.lnk = StPar1__56_s;
StPar1__52_s = &_s; StPar1__56_s = &_s;
p = *par0; p = *par0;
f = x->typ->form; f = x->typ->form;
switch (fctno) { switch (fctno) {
@ -2098,7 +2083,7 @@ void OPB_StPar1 (OPT_Node *par0, OPT_Node x, SHORTINT fctno)
OPB_err(111); OPB_err(111);
} }
} }
p = NewOp__53(19, fctno, p, x); p = NewOp__57(19, fctno, p, x);
p->typ = OPT_notyp; p->typ = OPT_notyp;
} }
break; break;
@ -2109,7 +2094,7 @@ void OPB_StPar1 (OPT_Node *par0, OPT_Node x, SHORTINT fctno)
if ((x->class == 7 && (0 > x->conval->intval || x->conval->intval > (LONGINT)OPM_MaxSet))) { if ((x->class == 7 && (0 > x->conval->intval || x->conval->intval > (LONGINT)OPM_MaxSet))) {
OPB_err(202); OPB_err(202);
} }
p = NewOp__53(19, fctno, p, x); p = NewOp__57(19, fctno, p, x);
} else { } else {
OPB_err(111); OPB_err(111);
} }
@ -2118,7 +2103,7 @@ void OPB_StPar1 (OPT_Node *par0, OPT_Node x, SHORTINT fctno)
case 17: case 17:
if (!__IN(f, 0x70) || x->class != 7) { if (!__IN(f, 0x70) || x->class != 7) {
OPB_err(69); OPB_err(69);
} else if (f == 4) { } else if (x->typ->size == 1) {
L = (int)x->conval->intval; L = (int)x->conval->intval;
typ = p->typ; typ = p->typ;
while ((L > 0 && __IN(typ->comp, 0x0c))) { while ((L > 0 && __IN(typ->comp, 0x0c))) {
@ -2134,7 +2119,7 @@ void OPB_StPar1 (OPT_Node *par0, OPT_Node x, SHORTINT fctno)
p = p->left; p = p->left;
x->conval->intval += 1; x->conval->intval += 1;
} }
p = NewOp__53(12, 19, p, x); p = NewOp__57(12, 19, p, x);
p->typ = OPT_linttyp; p->typ = OPT_linttyp;
} else { } else {
p = x; p = x;
@ -2156,7 +2141,7 @@ void OPB_StPar1 (OPT_Node *par0, OPT_Node x, SHORTINT fctno)
t = x; t = x;
x = p; x = p;
p = t; p = t;
p = NewOp__53(19, 18, p, x); p = NewOp__57(19, 18, p, x);
} else { } else {
OPB_err(111); OPB_err(111);
} }
@ -2182,7 +2167,7 @@ void OPB_StPar1 (OPT_Node *par0, OPT_Node x, SHORTINT fctno)
} }
p->obj = NIL; p->obj = NIL;
} else { } else {
p = NewOp__53(12, 17, p, x); p = NewOp__57(12, 17, p, x);
p->typ = OPT_linttyp; p->typ = OPT_linttyp;
} }
} else { } else {
@ -2213,9 +2198,9 @@ void OPB_StPar1 (OPT_Node *par0, OPT_Node x, SHORTINT fctno)
OPB_err(111); OPB_err(111);
} else { } else {
if (fctno == 22) { if (fctno == 22) {
p = NewOp__53(12, 27, p, x); p = NewOp__57(12, 27, p, x);
} else { } else {
p = NewOp__53(12, 28, p, x); p = NewOp__57(12, 28, p, x);
} }
p->typ = p->left->typ; p->typ = p->left->typ;
} }
@ -2232,7 +2217,7 @@ void OPB_StPar1 (OPT_Node *par0, OPT_Node x, SHORTINT fctno)
x = p; x = p;
p = t; p = t;
} }
p = NewOp__53(19, fctno, p, x); p = NewOp__57(19, fctno, p, x);
} else { } else {
OPB_err(111); OPB_err(111);
} }
@ -2242,7 +2227,7 @@ void OPB_StPar1 (OPT_Node *par0, OPT_Node x, SHORTINT fctno)
if (x->class == 8 || x->class == 9) { if (x->class == 8 || x->class == 9) {
OPB_err(126); OPB_err(126);
} else if (__IN(f, 0x70)) { } else if (__IN(f, 0x70)) {
p = NewOp__53(12, 26, p, x); p = NewOp__57(12, 26, p, x);
} else { } else {
OPB_err(111); OPB_err(111);
} }
@ -2263,7 +2248,7 @@ void OPB_StPar1 (OPT_Node *par0, OPT_Node x, SHORTINT fctno)
if (x->class == 8 || x->class == 9) { if (x->class == 8 || x->class == 9) {
OPB_err(126); OPB_err(126);
} else if (__IN(f, 0x70)) { } else if (__IN(f, 0x70)) {
p = NewOp__53(19, 30, p, x); p = NewOp__57(19, 30, p, x);
} else { } else {
OPB_err(111); OPB_err(111);
} }
@ -2309,7 +2294,7 @@ void OPB_StPar1 (OPT_Node *par0, OPT_Node x, SHORTINT fctno)
break; break;
} }
*par0 = p; *par0 = p;
StPar1__52_s = _s.lnk; StPar1__56_s = _s.lnk;
} }
void OPB_StParN (OPT_Node *par0, OPT_Node x, INTEGER fctno, INTEGER n) void OPB_StParN (OPT_Node *par0, OPT_Node x, INTEGER fctno, INTEGER n)

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#ifndef OPB__h #ifndef OPB__h
#define OPB__h #define OPB__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#include "SYSTEM.h" #include "SYSTEM.h"
#include "Configuration.h" #include "Configuration.h"
#include "OPM.h" #include "OPM.h"

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#ifndef OPC__h #ifndef OPC__h
#define OPC__h #define OPC__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#include "SYSTEM.h" #include "SYSTEM.h"
#include "Configuration.h" #include "Configuration.h"
#include "Console.h" #include "Console.h"

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#ifndef OPM__h #ifndef OPM__h
#define OPM__h #define OPM__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#include "SYSTEM.h" #include "SYSTEM.h"
#include "OPB.h" #include "OPB.h"
#include "OPM.h" #include "OPM.h"

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#ifndef OPP__h #ifndef OPP__h
#define OPP__h #define OPP__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin tspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin tspkaSfF */
#include "SYSTEM.h" #include "SYSTEM.h"
#include "OPM.h" #include "OPM.h"

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin tspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin tspkaSfF */
#ifndef OPS__h #ifndef OPS__h
#define OPS__h #define OPS__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#include "SYSTEM.h" #include "SYSTEM.h"
#include "OPM.h" #include "OPM.h"
#include "OPS.h" #include "OPS.h"

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#ifndef OPT__h #ifndef OPT__h
#define OPT__h #define OPT__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#include "SYSTEM.h" #include "SYSTEM.h"
#include "OPC.h" #include "OPC.h"
#include "OPM.h" #include "OPM.h"

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#ifndef OPV__h #ifndef OPV__h
#define OPV__h #define OPV__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#include "SYSTEM.h" #include "SYSTEM.h"
typedef typedef

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#ifndef Platform__h #ifndef Platform__h
#define Platform__h #define Platform__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#include "SYSTEM.h" #include "SYSTEM.h"

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#ifndef Reals__h #ifndef Reals__h
#define Reals__h #define Reals__h

View file

@ -4,6 +4,8 @@
#ifndef _WIN32 #ifndef _WIN32
// Building for a Unix/Linux based system // Building for a Unix/Linux based system
// TODO: Remove these includes
#include <string.h> // For memcpy ... #include <string.h> // For memcpy ...
#include <stdint.h> // For uintptr_t ... #include <stdint.h> // For uintptr_t ...
@ -70,6 +72,7 @@ typedef unsigned char U_SHORTINT;
#endif #endif
typedef U_LONGINT SET; typedef U_LONGINT SET;
typedef U_LONGINT U_SET;
// OS Memory allocation interfaces are in PlatformXXX.Mod // OS Memory allocation interfaces are in PlatformXXX.Mod

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#include "SYSTEM.h" #include "SYSTEM.h"

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#ifndef Strings__h #ifndef Strings__h
#define Strings__h #define Strings__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#include "SYSTEM.h" #include "SYSTEM.h"
#include "Files.h" #include "Files.h"
#include "Modules.h" #include "Modules.h"

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#ifndef Texts__h #ifndef Texts__h
#define Texts__h #define Texts__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkamSf */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkamSf */
#include "SYSTEM.h" #include "SYSTEM.h"
#include "Configuration.h" #include "Configuration.h"
#include "Heap.h" #include "Heap.h"

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#include "SYSTEM.h" #include "SYSTEM.h"
typedef typedef
@ -194,5 +194,6 @@ export void *errors__init(void)
__MOVE("implicit type cast", errors_errors[301], 19); __MOVE("implicit type cast", errors_errors[301], 19);
__MOVE("inappropriate symbol file ignored", errors_errors[306], 34); __MOVE("inappropriate symbol file ignored", errors_errors[306], 34);
__MOVE("no ELSE symbol after CASE statement sequence may lead to trap", errors_errors[307], 62); __MOVE("no ELSE symbol after CASE statement sequence may lead to trap", errors_errors[307], 62);
__MOVE("SYSTEM.VAL result includes memory past end of source variable", errors_errors[308], 62);
__ENDMOD; __ENDMOD;
} }

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#ifndef errors__h #ifndef errors__h
#define errors__h #define errors__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#include "SYSTEM.h" #include "SYSTEM.h"
#include "Configuration.h" #include "Configuration.h"
#include "Console.h" #include "Console.h"

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#ifndef extTools__h #ifndef extTools__h
#define extTools__h #define extTools__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#include "SYSTEM.h" #include "SYSTEM.h"
#include "Console.h" #include "Console.h"
#include "Strings.h" #include "Strings.h"

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#ifndef vt100__h #ifndef vt100__h
#define vt100__h #define vt100__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#define LARGE #define LARGE
#include "SYSTEM.h" #include "SYSTEM.h"
@ -14,6 +14,6 @@ export void *Configuration__init(void)
__DEFMOD; __DEFMOD;
__REGMOD("Configuration", 0); __REGMOD("Configuration", 0);
/* BEGIN */ /* BEGIN */
__MOVE("1.95 [2016/08/13] for gcc LP64 on cygwin", Configuration_versionLong, 41); __MOVE("1.95 [2016/08/16] for gcc LP64 on cygwin", Configuration_versionLong, 41);
__ENDMOD; __ENDMOD;
} }

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#ifndef Configuration__h #ifndef Configuration__h
#define Configuration__h #define Configuration__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#define LARGE #define LARGE
#include "SYSTEM.h" #include "SYSTEM.h"
#include "Platform.h" #include "Platform.h"

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#ifndef Console__h #ifndef Console__h
#define Console__h #define Console__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin tspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin tspkaSfF */
#define LARGE #define LARGE
#include "SYSTEM.h" #include "SYSTEM.h"
#include "Configuration.h" #include "Configuration.h"

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin tspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin tspkaSfF */
#ifndef Files__h #ifndef Files__h
#define Files__h #define Files__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin tskSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin tskSfF */
#define LARGE #define LARGE
#include "SYSTEM.h" #include "SYSTEM.h"

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin tskSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin tskSfF */
#ifndef Heap__h #ifndef Heap__h
#define Heap__h #define Heap__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#define LARGE #define LARGE
#include "SYSTEM.h" #include "SYSTEM.h"
#include "Console.h" #include "Console.h"

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#ifndef Modules__h #ifndef Modules__h
#define Modules__h #define Modules__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#define LARGE #define LARGE
#include "SYSTEM.h" #include "SYSTEM.h"
#include "OPM.h" #include "OPM.h"
@ -35,6 +35,7 @@ export void OPB_In (OPT_Node *x, OPT_Node y);
export void OPB_Index (OPT_Node *x, OPT_Node y); export void OPB_Index (OPT_Node *x, OPT_Node y);
export void OPB_Inittd (OPT_Node *inittd, OPT_Node *last, OPT_Struct typ); export void OPB_Inittd (OPT_Node *inittd, OPT_Node *last, OPT_Struct typ);
static BOOLEAN OPB_IntToBool (LONGINT i); static BOOLEAN OPB_IntToBool (LONGINT i);
static OPT_Struct OPB_IntType (LONGINT size);
export void OPB_Link (OPT_Node *x, OPT_Node *last, OPT_Node y); export void OPB_Link (OPT_Node *x, OPT_Node *last, OPT_Node y);
export void OPB_MOp (SHORTINT op, OPT_Node *x); export void OPB_MOp (SHORTINT op, OPT_Node *x);
export OPT_Node OPB_NewBoolConst (BOOLEAN boolval); export OPT_Node OPB_NewBoolConst (BOOLEAN boolval);
@ -52,6 +53,9 @@ export void OPB_Return (OPT_Node *x, OPT_Object proc);
export void OPB_SetElem (OPT_Node *x); export void OPB_SetElem (OPT_Node *x);
static void OPB_SetIntType (OPT_Node node); static void OPB_SetIntType (OPT_Node node);
export void OPB_SetRange (OPT_Node *x, OPT_Node y); export void OPB_SetRange (OPT_Node *x, OPT_Node y);
static INTEGER OPB_SignedByteSize (LONGINT n);
static LONGINT OPB_SignedMaximum (LONGINT bytecount);
static LONGINT OPB_SignedMinimum (LONGINT bytecount);
export void OPB_StFct (OPT_Node *par0, SHORTINT fctno, INTEGER parno); export void OPB_StFct (OPT_Node *par0, SHORTINT fctno, INTEGER parno);
export void OPB_StPar0 (OPT_Node *par0, INTEGER fctno); export void OPB_StPar0 (OPT_Node *par0, INTEGER fctno);
export void OPB_StPar1 (OPT_Node *par0, OPT_Node x, SHORTINT fctno); export void OPB_StPar1 (OPT_Node *par0, OPT_Node x, SHORTINT fctno);
@ -221,21 +225,46 @@ OPT_Node OPB_EmptySet (void)
return _o_result; return _o_result;
} }
static INTEGER OPB_SignedByteSize (LONGINT n)
{
INTEGER _o_result;
INTEGER b;
if (n < 0) {
n = -(n + 1);
}
b = 1;
while (b < 8) {
if (__ASH(n, -(__ASHL(b, 3) - 1)) == 0) {
_o_result = b;
return _o_result;
}
b += 1;
}
_o_result = 8;
return _o_result;
}
static OPT_Struct OPB_IntType (LONGINT size)
{
OPT_Struct _o_result;
OPT_Struct result = NIL;
if (size <= OPT_sinttyp->size) {
result = OPT_sinttyp;
} else if (size <= OPT_inttyp->size) {
result = OPT_inttyp;
} else {
result = OPT_linttyp;
}
if (size > OPT_linttyp->size) {
OPB_err(203);
}
_o_result = result;
return _o_result;
}
static void OPB_SetIntType (OPT_Node node) static void OPB_SetIntType (OPT_Node node)
{ {
LONGINT v; node->typ = OPB_IntType(OPB_SignedByteSize(node->conval->intval));
v = node->conval->intval;
if ((OPM_MinSInt <= (LONGINT)v && (LONGINT)v <= OPM_MaxSInt)) {
node->typ = OPT_sinttyp;
} else if ((OPM_MinInt <= (LONGINT)v && (LONGINT)v <= OPM_MaxInt)) {
node->typ = OPT_inttyp;
} else if ((OPM_MinLInt <= v && v <= OPM_MaxLInt)) {
node->typ = OPT_linttyp;
} else {
OPB_err(203);
node->typ = OPT_sinttyp;
node->conval->intval = 1;
}
} }
OPT_Node OPB_NewIntConst (LONGINT intval) OPT_Node OPB_NewIntConst (LONGINT intval)
@ -379,16 +408,16 @@ void OPB_Field (OPT_Node *x, OPT_Object y)
} }
} }
static struct TypTest__57 { static struct TypTest__61 {
OPT_Node *x; OPT_Node *x;
OPT_Object *obj; OPT_Object *obj;
BOOLEAN *guard; BOOLEAN *guard;
struct TypTest__57 *lnk; struct TypTest__61 *lnk;
} *TypTest__57_s; } *TypTest__61_s;
static void GTT__58 (OPT_Struct t0, OPT_Struct t1); static void GTT__62 (OPT_Struct t0, OPT_Struct t1);
static void GTT__58 (OPT_Struct t0, OPT_Struct t1) static void GTT__62 (OPT_Struct t0, OPT_Struct t1)
{ {
OPT_Node node = NIL; OPT_Node node = NIL;
OPT_Struct t = NIL; OPT_Struct t = NIL;
@ -401,54 +430,54 @@ static void GTT__58 (OPT_Struct t0, OPT_Struct t1)
t1 = t1->BaseTyp; t1 = t1->BaseTyp;
} }
if (t1 == t0 || t0->form == 0) { if (t1 == t0 || t0->form == 0) {
if (*TypTest__57_s->guard) { if (*TypTest__61_s->guard) {
OPB_BindNodes(5, NIL, &*TypTest__57_s->x, NIL); OPB_BindNodes(5, NIL, &*TypTest__61_s->x, NIL);
(*TypTest__57_s->x)->readonly = (*TypTest__57_s->x)->left->readonly; (*TypTest__61_s->x)->readonly = (*TypTest__61_s->x)->left->readonly;
} else { } else {
node = OPT_NewNode(11); node = OPT_NewNode(11);
node->subcl = 16; node->subcl = 16;
node->left = *TypTest__57_s->x; node->left = *TypTest__61_s->x;
node->obj = *TypTest__57_s->obj; node->obj = *TypTest__61_s->obj;
*TypTest__57_s->x = node; *TypTest__61_s->x = node;
} }
} else { } else {
OPB_err(85); OPB_err(85);
} }
} else if (t0 != t1) { } else if (t0 != t1) {
OPB_err(85); OPB_err(85);
} else if (!*TypTest__57_s->guard) { } else if (!*TypTest__61_s->guard) {
if ((*TypTest__57_s->x)->class == 5) { if ((*TypTest__61_s->x)->class == 5) {
node = OPT_NewNode(11); node = OPT_NewNode(11);
node->subcl = 16; node->subcl = 16;
node->left = *TypTest__57_s->x; node->left = *TypTest__61_s->x;
node->obj = *TypTest__57_s->obj; node->obj = *TypTest__61_s->obj;
*TypTest__57_s->x = node; *TypTest__61_s->x = node;
} else { } else {
*TypTest__57_s->x = OPB_NewBoolConst(1); *TypTest__61_s->x = OPB_NewBoolConst(1);
} }
} }
} }
void OPB_TypTest (OPT_Node *x, OPT_Object obj, BOOLEAN guard) void OPB_TypTest (OPT_Node *x, OPT_Object obj, BOOLEAN guard)
{ {
struct TypTest__57 _s; struct TypTest__61 _s;
_s.x = x; _s.x = x;
_s.obj = &obj; _s.obj = &obj;
_s.guard = &guard; _s.guard = &guard;
_s.lnk = TypTest__57_s; _s.lnk = TypTest__61_s;
TypTest__57_s = &_s; TypTest__61_s = &_s;
if (OPB_NotVar(*x)) { if (OPB_NotVar(*x)) {
OPB_err(112); OPB_err(112);
} else if ((*x)->typ->form == 13) { } else if ((*x)->typ->form == 13) {
if (((*x)->typ->BaseTyp->comp != 4 && (*x)->typ != OPT_sysptrtyp)) { if (((*x)->typ->BaseTyp->comp != 4 && (*x)->typ != OPT_sysptrtyp)) {
OPB_err(85); OPB_err(85);
} else if (obj->typ->form == 13) { } else if (obj->typ->form == 13) {
GTT__58((*x)->typ->BaseTyp, obj->typ->BaseTyp); GTT__62((*x)->typ->BaseTyp, obj->typ->BaseTyp);
} else { } else {
OPB_err(86); OPB_err(86);
} }
} else if (((((*x)->typ->comp == 4 && (*x)->class == 1)) && obj->typ->comp == 4)) { } else if (((((*x)->typ->comp == 4 && (*x)->class == 1)) && obj->typ->comp == 4)) {
GTT__58((*x)->typ, obj->typ); GTT__62((*x)->typ, obj->typ);
} else { } else {
OPB_err(87); OPB_err(87);
} }
@ -457,7 +486,7 @@ void OPB_TypTest (OPT_Node *x, OPT_Object obj, BOOLEAN guard)
} else { } else {
(*x)->typ = OPT_booltyp; (*x)->typ = OPT_booltyp;
} }
TypTest__57_s = _s.lnk; TypTest__61_s = _s.lnk;
} }
void OPB_In (OPT_Node *x, OPT_Node y) void OPB_In (OPT_Node *x, OPT_Node y)
@ -523,13 +552,13 @@ static void OPB_CheckRealType (INTEGER f, INTEGER nr, OPT_Const x)
x->intval = -1; x->intval = -1;
} }
static struct MOp__28 { static struct MOp__29 {
struct MOp__28 *lnk; struct MOp__29 *lnk;
} *MOp__28_s; } *MOp__29_s;
static OPT_Node NewOp__29 (SHORTINT op, OPT_Struct typ, OPT_Node z); static OPT_Node NewOp__30 (SHORTINT op, OPT_Struct typ, OPT_Node z);
static OPT_Node NewOp__29 (SHORTINT op, OPT_Struct typ, OPT_Node z) static OPT_Node NewOp__30 (SHORTINT op, OPT_Struct typ, OPT_Node z)
{ {
OPT_Node _o_result; OPT_Node _o_result;
OPT_Node node = NIL; OPT_Node node = NIL;
@ -546,9 +575,9 @@ void OPB_MOp (SHORTINT op, OPT_Node *x)
INTEGER f; INTEGER f;
OPT_Struct typ = NIL; OPT_Struct typ = NIL;
OPT_Node z = NIL; OPT_Node z = NIL;
struct MOp__28 _s; struct MOp__29 _s;
_s.lnk = MOp__28_s; _s.lnk = MOp__29_s;
MOp__28_s = &_s; MOp__29_s = &_s;
z = *x; z = *x;
if (z->class == 8 || z->class == 9) { if (z->class == 8 || z->class == 9) {
OPB_err(126); OPB_err(126);
@ -562,7 +591,7 @@ void OPB_MOp (SHORTINT op, OPT_Node *x)
z->conval->intval = OPB_BoolToInt(!OPB_IntToBool(z->conval->intval)); z->conval->intval = OPB_BoolToInt(!OPB_IntToBool(z->conval->intval));
z->obj = NIL; z->obj = NIL;
} else { } else {
z = NewOp__29(op, typ, z); z = NewOp__30(op, typ, z);
} }
} else { } else {
OPB_err(98); OPB_err(98);
@ -590,7 +619,7 @@ void OPB_MOp (SHORTINT op, OPT_Node *x)
} }
z->obj = NIL; z->obj = NIL;
} else { } else {
z = NewOp__29(op, typ, z); z = NewOp__30(op, typ, z);
} }
} else { } else {
OPB_err(97); OPB_err(97);
@ -611,7 +640,7 @@ void OPB_MOp (SHORTINT op, OPT_Node *x)
} }
z->obj = NIL; z->obj = NIL;
} else { } else {
z = NewOp__29(op, typ, z); z = NewOp__30(op, typ, z);
} }
} else { } else {
OPB_err(111); OPB_err(111);
@ -623,7 +652,7 @@ void OPB_MOp (SHORTINT op, OPT_Node *x)
z->conval->intval = (int)__CAP((CHAR)z->conval->intval); z->conval->intval = (int)__CAP((CHAR)z->conval->intval);
z->obj = NIL; z->obj = NIL;
} else { } else {
z = NewOp__29(op, typ, z); z = NewOp__30(op, typ, z);
} }
} else { } else {
OPB_err(111); OPB_err(111);
@ -636,7 +665,7 @@ void OPB_MOp (SHORTINT op, OPT_Node *x)
z->conval->intval = OPB_BoolToInt(__ODD(z->conval->intval)); z->conval->intval = OPB_BoolToInt(__ODD(z->conval->intval));
z->obj = NIL; z->obj = NIL;
} else { } else {
z = NewOp__29(op, typ, z); z = NewOp__30(op, typ, z);
} }
} else { } else {
OPB_err(111); OPB_err(111);
@ -649,7 +678,7 @@ void OPB_MOp (SHORTINT op, OPT_Node *x)
f = 10; f = 10;
} }
if (z->class < 7 || f == 10) { if (z->class < 7 || f == 10) {
z = NewOp__29(op, typ, z); z = NewOp__30(op, typ, z);
} else { } else {
OPB_err(127); OPB_err(127);
} }
@ -658,7 +687,7 @@ void OPB_MOp (SHORTINT op, OPT_Node *x)
case 25: case 25:
if ((__IN(f, 0x70) && z->class == 7)) { if ((__IN(f, 0x70) && z->class == 7)) {
if ((0 <= z->conval->intval && z->conval->intval <= -1)) { if ((0 <= z->conval->intval && z->conval->intval <= -1)) {
z = NewOp__29(op, typ, z); z = NewOp__30(op, typ, z);
} else { } else {
OPB_err(219); OPB_err(219);
} }
@ -675,7 +704,7 @@ void OPB_MOp (SHORTINT op, OPT_Node *x)
} }
} }
*x = z; *x = z;
MOp__28_s = _s.lnk; MOp__29_s = _s.lnk;
} }
static void OPB_CheckPtr (OPT_Node x, OPT_Node y) static void OPB_CheckPtr (OPT_Node x, OPT_Node y)
@ -866,41 +895,13 @@ static void OPB_ConstOp (INTEGER op, OPT_Node x, OPT_Node y)
__GUARDEQP(yval, OPT_ConstDesc) = *xval; __GUARDEQP(yval, OPT_ConstDesc) = *xval;
} }
break; break;
case 4: case 4: case 5: case 6:
if (__IN(g, 0x70)) { if (__IN(g, 0x70)) {
x->typ = y->typ; if (x->typ->size <= y->typ->size) {
} else if (g == 7) { x->typ = y->typ;
x->typ = OPT_realtyp; } else {
xval->realval = xval->intval; x->typ = OPB_IntType(x->typ->size);
} else if (g == 8) { }
x->typ = OPT_lrltyp;
xval->realval = xval->intval;
} else {
OPB_err(100);
y->typ = x->typ;
__GUARDEQP(yval, OPT_ConstDesc) = *xval;
}
break;
case 5:
if (g == 4) {
y->typ = OPT_inttyp;
} else if (__IN(g, 0x70)) {
x->typ = y->typ;
} else if (g == 7) {
x->typ = OPT_realtyp;
xval->realval = xval->intval;
} else if (g == 8) {
x->typ = OPT_lrltyp;
xval->realval = xval->intval;
} else {
OPB_err(100);
y->typ = x->typ;
__GUARDEQP(yval, OPT_ConstDesc) = *xval;
}
break;
case 6:
if (__IN(g, 0x70)) {
y->typ = OPT_linttyp;
} else if (g == 7) { } else if (g == 7) {
x->typ = OPT_realtyp; x->typ = OPT_realtyp;
xval->realval = xval->intval; xval->realval = xval->intval;
@ -1197,15 +1198,15 @@ static void OPB_Convert (OPT_Node *x, OPT_Struct typ)
(*x)->typ = typ; (*x)->typ = typ;
} }
static struct Op__38 { static struct Op__39 {
INTEGER *f, *g; INTEGER *f, *g;
struct Op__38 *lnk; struct Op__39 *lnk;
} *Op__38_s; } *Op__39_s;
static void NewOp__39 (SHORTINT op, OPT_Struct typ, OPT_Node *x, OPT_Node y); static void NewOp__40 (SHORTINT op, OPT_Struct typ, OPT_Node *x, OPT_Node y);
static BOOLEAN strings__41 (OPT_Node *x, OPT_Node *y); static BOOLEAN strings__42 (OPT_Node *x, OPT_Node *y);
static void NewOp__39 (SHORTINT op, OPT_Struct typ, OPT_Node *x, OPT_Node y) static void NewOp__40 (SHORTINT op, OPT_Struct typ, OPT_Node *x, OPT_Node y)
{ {
OPT_Node node = NIL; OPT_Node node = NIL;
node = OPT_NewNode(12); node = OPT_NewNode(12);
@ -1216,29 +1217,29 @@ static void NewOp__39 (SHORTINT op, OPT_Struct typ, OPT_Node *x, OPT_Node y)
*x = node; *x = node;
} }
static BOOLEAN strings__41 (OPT_Node *x, OPT_Node *y) static BOOLEAN strings__42 (OPT_Node *x, OPT_Node *y)
{ {
BOOLEAN _o_result; BOOLEAN _o_result;
BOOLEAN ok, xCharArr, yCharArr; BOOLEAN ok, xCharArr, yCharArr;
xCharArr = (__IN((*x)->typ->comp, 0x0c) && (*x)->typ->BaseTyp->form == 3) || *Op__38_s->f == 10; xCharArr = (__IN((*x)->typ->comp, 0x0c) && (*x)->typ->BaseTyp->form == 3) || *Op__39_s->f == 10;
yCharArr = (__IN((*y)->typ->comp, 0x0c) && (*y)->typ->BaseTyp->form == 3) || *Op__38_s->g == 10; yCharArr = (__IN((*y)->typ->comp, 0x0c) && (*y)->typ->BaseTyp->form == 3) || *Op__39_s->g == 10;
if ((((xCharArr && *Op__38_s->g == 3)) && (*y)->class == 7)) { if ((((xCharArr && *Op__39_s->g == 3)) && (*y)->class == 7)) {
OPB_CharToString(*y); OPB_CharToString(*y);
*Op__38_s->g = 10; *Op__39_s->g = 10;
yCharArr = 1; yCharArr = 1;
} }
if ((((yCharArr && *Op__38_s->f == 3)) && (*x)->class == 7)) { if ((((yCharArr && *Op__39_s->f == 3)) && (*x)->class == 7)) {
OPB_CharToString(*x); OPB_CharToString(*x);
*Op__38_s->f = 10; *Op__39_s->f = 10;
xCharArr = 1; xCharArr = 1;
} }
ok = (xCharArr && yCharArr); ok = (xCharArr && yCharArr);
if (ok) { if (ok) {
if ((*Op__38_s->f == 10 && (*x)->conval->intval2 == 1)) { if ((*Op__39_s->f == 10 && (*x)->conval->intval2 == 1)) {
(*x)->typ = OPT_chartyp; (*x)->typ = OPT_chartyp;
(*x)->conval->intval = 0; (*x)->conval->intval = 0;
OPB_Index(&*y, OPB_NewIntConst(((LONGINT)(0)))); OPB_Index(&*y, OPB_NewIntConst(((LONGINT)(0))));
} else if ((*Op__38_s->g == 10 && (*y)->conval->intval2 == 1)) { } else if ((*Op__39_s->g == 10 && (*y)->conval->intval2 == 1)) {
(*y)->typ = OPT_chartyp; (*y)->typ = OPT_chartyp;
(*y)->conval->intval = 0; (*y)->conval->intval = 0;
OPB_Index(&*x, OPB_NewIntConst(((LONGINT)(0)))); OPB_Index(&*x, OPB_NewIntConst(((LONGINT)(0))));
@ -1255,11 +1256,11 @@ void OPB_Op (SHORTINT op, OPT_Node *x, OPT_Node y)
OPT_Struct typ = NIL; OPT_Struct typ = NIL;
BOOLEAN do_; BOOLEAN do_;
LONGINT val; LONGINT val;
struct Op__38 _s; struct Op__39 _s;
_s.f = &f; _s.f = &f;
_s.g = &g; _s.g = &g;
_s.lnk = Op__38_s; _s.lnk = Op__39_s;
Op__38_s = &_s; Op__39_s = &_s;
z = *x; z = *x;
if (((z->class == 8 || z->class == 9) || y->class == 8) || y->class == 9) { if (((z->class == 8 || z->class == 9) || y->class == 8) || y->class == 9) {
OPB_err(126); OPB_err(126);
@ -1277,15 +1278,8 @@ void OPB_Op (SHORTINT op, OPT_Node *x, OPT_Node y)
OPB_err(100); OPB_err(100);
} }
break; break;
case 4: case 4: case 5: case 6:
if (__IN(g, 0x01f0)) { if ((__IN(g, 0x70) && y->typ->size < z->typ->size)) {
OPB_Convert(&z, y->typ);
} else {
OPB_err(100);
}
break;
case 5:
if (g == 4) {
OPB_Convert(&y, z->typ); OPB_Convert(&y, z->typ);
} else if (__IN(g, 0x01f0)) { } else if (__IN(g, 0x01f0)) {
OPB_Convert(&z, y->typ); OPB_Convert(&z, y->typ);
@ -1293,15 +1287,6 @@ void OPB_Op (SHORTINT op, OPT_Node *x, OPT_Node y)
OPB_err(100); OPB_err(100);
} }
break; break;
case 6:
if (__IN(g, 0x70)) {
OPB_Convert(&y, z->typ);
} else if (__IN(g, 0x0180)) {
OPB_Convert(&z, y->typ);
} else {
OPB_err(100);
}
break;
case 7: case 7:
if (__IN(g, 0x70)) { if (__IN(g, 0x70)) {
OPB_Convert(&y, z->typ); OPB_Convert(&y, z->typ);
@ -1387,7 +1372,7 @@ void OPB_Op (SHORTINT op, OPT_Node *x, OPT_Node y)
typ = OPT_undftyp; typ = OPT_undftyp;
} }
if (do_) { if (do_) {
NewOp__39(op, typ, &z, y); NewOp__40(op, typ, &z, y);
} }
break; break;
case 2: case 2:
@ -1406,7 +1391,7 @@ void OPB_Op (SHORTINT op, OPT_Node *x, OPT_Node y)
OPB_err(102); OPB_err(102);
typ = OPT_undftyp; typ = OPT_undftyp;
} }
NewOp__39(op, typ, &z, y); NewOp__40(op, typ, &z, y);
break; break;
case 3: case 3:
do_ = 1; do_ = 1;
@ -1429,7 +1414,7 @@ void OPB_Op (SHORTINT op, OPT_Node *x, OPT_Node y)
typ = OPT_undftyp; typ = OPT_undftyp;
} }
if (do_) { if (do_) {
NewOp__39(op, typ, &z, y); NewOp__40(op, typ, &z, y);
} }
break; break;
case 4: case 4:
@ -1447,7 +1432,7 @@ void OPB_Op (SHORTINT op, OPT_Node *x, OPT_Node y)
OPB_err(104); OPB_err(104);
typ = OPT_undftyp; typ = OPT_undftyp;
} }
NewOp__39(op, typ, &z, y); NewOp__40(op, typ, &z, y);
break; break;
case 5: case 5:
if (f == 2) { if (f == 2) {
@ -1457,7 +1442,7 @@ void OPB_Op (SHORTINT op, OPT_Node *x, OPT_Node y)
} }
} else if ((y->class == 7 && OPB_IntToBool(y->conval->intval))) { } else if ((y->class == 7 && OPB_IntToBool(y->conval->intval))) {
} else { } else {
NewOp__39(op, typ, &z, y); NewOp__40(op, typ, &z, y);
} }
} else if (f != 0) { } else if (f != 0) {
OPB_err(94); OPB_err(94);
@ -1480,7 +1465,7 @@ void OPB_Op (SHORTINT op, OPT_Node *x, OPT_Node y)
} }
} }
if (do_) { if (do_) {
NewOp__39(op, typ, &z, y); NewOp__40(op, typ, &z, y);
} }
break; break;
case 7: case 7:
@ -1489,7 +1474,7 @@ void OPB_Op (SHORTINT op, OPT_Node *x, OPT_Node y)
typ = OPT_undftyp; typ = OPT_undftyp;
} }
if ((!__IN(f, 0x70) || y->class != 7) || y->conval->intval != 0) { if ((!__IN(f, 0x70) || y->class != 7) || y->conval->intval != 0) {
NewOp__39(op, typ, &z, y); NewOp__40(op, typ, &z, y);
} }
break; break;
case 8: case 8:
@ -1500,7 +1485,7 @@ void OPB_Op (SHORTINT op, OPT_Node *x, OPT_Node y)
} }
} else if ((y->class == 7 && !OPB_IntToBool(y->conval->intval))) { } else if ((y->class == 7 && !OPB_IntToBool(y->conval->intval))) {
} else { } else {
NewOp__39(op, typ, &z, y); NewOp__40(op, typ, &z, y);
} }
} else if (f != 0) { } else if (f != 0) {
OPB_err(95); OPB_err(95);
@ -1508,16 +1493,16 @@ void OPB_Op (SHORTINT op, OPT_Node *x, OPT_Node y)
} }
break; break;
case 9: case 10: case 9: case 10:
if (__IN(f, 0x6bff) || strings__41(&z, &y)) { if (__IN(f, 0x6bff) || strings__42(&z, &y)) {
typ = OPT_booltyp; typ = OPT_booltyp;
} else { } else {
OPB_err(107); OPB_err(107);
typ = OPT_undftyp; typ = OPT_undftyp;
} }
NewOp__39(op, typ, &z, y); NewOp__40(op, typ, &z, y);
break; break;
case 11: case 12: case 13: case 14: case 11: case 12: case 13: case 14:
if (__IN(f, 0x01f9) || strings__41(&z, &y)) { if (__IN(f, 0x01f9) || strings__42(&z, &y)) {
typ = OPT_booltyp; typ = OPT_booltyp;
} else { } else {
OPM_LogWLn(); OPM_LogWLn();
@ -1526,7 +1511,7 @@ void OPB_Op (SHORTINT op, OPT_Node *x, OPT_Node y)
OPB_err(108); OPB_err(108);
typ = OPT_undftyp; typ = OPT_undftyp;
} }
NewOp__39(op, typ, &z, y); NewOp__40(op, typ, &z, y);
break; break;
default: default:
OPM_LogWStr((CHAR*)"unhandled case in OPB.Op, op = ", (LONGINT)32); OPM_LogWStr((CHAR*)"unhandled case in OPB.Op, op = ", (LONGINT)32);
@ -1536,7 +1521,7 @@ void OPB_Op (SHORTINT op, OPT_Node *x, OPT_Node y)
} }
} }
*x = z; *x = z;
Op__38_s = _s.lnk; Op__39_s = _s.lnk;
} }
void OPB_SetRange (OPT_Node *x, OPT_Node y) void OPB_SetRange (OPT_Node *x, OPT_Node y)
@ -1633,18 +1618,13 @@ static void OPB_CheckAssign (OPT_Struct x, OPT_Node ynode)
OPB_err(113); OPB_err(113);
} }
break; break;
case 2: case 3: case 4: case 9: case 2: case 3: case 9:
if (g != f) { if (g != f) {
OPB_err(113); OPB_err(113);
} }
break; break;
case 5: case 4: case 5: case 6:
if (!__IN(g, 0x30)) { if (!__IN(g, 0x70) || x->size < y->size) {
OPB_err(113);
}
break;
case 6:
if (!__IN(g, 0x70)) {
OPB_err(113); OPB_err(113);
} }
break; break;
@ -1746,6 +1726,23 @@ static void OPB_CheckLeaf (OPT_Node x, BOOLEAN dynArrToo)
{ {
} }
static LONGINT OPB_SignedMaximum (LONGINT bytecount)
{
LONGINT _o_result;
LONGINT result;
result = 1;
result = __LSH(result, __ASHL(bytecount, 3) - 1, LONGINT);
_o_result = result - 1;
return _o_result;
}
static LONGINT OPB_SignedMinimum (LONGINT bytecount)
{
LONGINT _o_result;
_o_result = -OPB_SignedMaximum(bytecount) - 1;
return _o_result;
}
void OPB_StPar0 (OPT_Node *par0, INTEGER fctno) void OPB_StPar0 (OPT_Node *par0, INTEGER fctno)
{ {
INTEGER f; INTEGER f;
@ -1828,14 +1825,8 @@ void OPB_StPar0 (OPT_Node *par0, INTEGER fctno)
x = OPB_NewIntConst(((LONGINT)(0))); x = OPB_NewIntConst(((LONGINT)(0)));
x->typ = OPT_chartyp; x->typ = OPT_chartyp;
break; break;
case 4: case 4: case 5: case 6:
x = OPB_NewIntConst(OPM_MinSInt); x = OPB_NewIntConst(OPB_SignedMinimum(x->typ->size));
break;
case 5:
x = OPB_NewIntConst(OPM_MinInt);
break;
case 6:
x = OPB_NewIntConst(OPM_MinLInt);
break; break;
case 9: case 9:
x = OPB_NewIntConst(((LONGINT)(0))); x = OPB_NewIntConst(((LONGINT)(0)));
@ -1865,14 +1856,8 @@ void OPB_StPar0 (OPT_Node *par0, INTEGER fctno)
x = OPB_NewIntConst(((LONGINT)(255))); x = OPB_NewIntConst(((LONGINT)(255)));
x->typ = OPT_chartyp; x->typ = OPT_chartyp;
break; break;
case 4: case 4: case 5: case 6:
x = OPB_NewIntConst(OPM_MaxSInt); x = OPB_NewIntConst(OPB_SignedMaximum(x->typ->size));
break;
case 5:
x = OPB_NewIntConst(OPM_MaxInt);
break;
case 6:
x = OPB_NewIntConst(OPM_MaxLInt);
break; break;
case 9: case 9:
x = OPB_NewIntConst(OPM_MaxSet); x = OPB_NewIntConst(OPM_MaxSet);
@ -2058,13 +2043,13 @@ void OPB_StPar0 (OPT_Node *par0, INTEGER fctno)
*par0 = x; *par0 = x;
} }
static struct StPar1__52 { static struct StPar1__56 {
struct StPar1__52 *lnk; struct StPar1__56 *lnk;
} *StPar1__52_s; } *StPar1__56_s;
static OPT_Node NewOp__53 (SHORTINT class, SHORTINT subcl, OPT_Node left, OPT_Node right); static OPT_Node NewOp__57 (SHORTINT class, SHORTINT subcl, OPT_Node left, OPT_Node right);
static OPT_Node NewOp__53 (SHORTINT class, SHORTINT subcl, OPT_Node left, OPT_Node right) static OPT_Node NewOp__57 (SHORTINT class, SHORTINT subcl, OPT_Node left, OPT_Node right)
{ {
OPT_Node _o_result; OPT_Node _o_result;
OPT_Node node = NIL; OPT_Node node = NIL;
@ -2081,9 +2066,9 @@ void OPB_StPar1 (OPT_Node *par0, OPT_Node x, SHORTINT fctno)
INTEGER f, L; INTEGER f, L;
OPT_Struct typ = NIL; OPT_Struct typ = NIL;
OPT_Node p = NIL, t = NIL; OPT_Node p = NIL, t = NIL;
struct StPar1__52 _s; struct StPar1__56 _s;
_s.lnk = StPar1__52_s; _s.lnk = StPar1__56_s;
StPar1__52_s = &_s; StPar1__56_s = &_s;
p = *par0; p = *par0;
f = x->typ->form; f = x->typ->form;
switch (fctno) { switch (fctno) {
@ -2099,7 +2084,7 @@ void OPB_StPar1 (OPT_Node *par0, OPT_Node x, SHORTINT fctno)
OPB_err(111); OPB_err(111);
} }
} }
p = NewOp__53(19, fctno, p, x); p = NewOp__57(19, fctno, p, x);
p->typ = OPT_notyp; p->typ = OPT_notyp;
} }
break; break;
@ -2110,7 +2095,7 @@ void OPB_StPar1 (OPT_Node *par0, OPT_Node x, SHORTINT fctno)
if ((x->class == 7 && (0 > x->conval->intval || x->conval->intval > (LONGINT)OPM_MaxSet))) { if ((x->class == 7 && (0 > x->conval->intval || x->conval->intval > (LONGINT)OPM_MaxSet))) {
OPB_err(202); OPB_err(202);
} }
p = NewOp__53(19, fctno, p, x); p = NewOp__57(19, fctno, p, x);
} else { } else {
OPB_err(111); OPB_err(111);
} }
@ -2119,7 +2104,7 @@ void OPB_StPar1 (OPT_Node *par0, OPT_Node x, SHORTINT fctno)
case 17: case 17:
if (!__IN(f, 0x70) || x->class != 7) { if (!__IN(f, 0x70) || x->class != 7) {
OPB_err(69); OPB_err(69);
} else if (f == 4) { } else if (x->typ->size == 1) {
L = (int)x->conval->intval; L = (int)x->conval->intval;
typ = p->typ; typ = p->typ;
while ((L > 0 && __IN(typ->comp, 0x0c))) { while ((L > 0 && __IN(typ->comp, 0x0c))) {
@ -2135,7 +2120,7 @@ void OPB_StPar1 (OPT_Node *par0, OPT_Node x, SHORTINT fctno)
p = p->left; p = p->left;
x->conval->intval += 1; x->conval->intval += 1;
} }
p = NewOp__53(12, 19, p, x); p = NewOp__57(12, 19, p, x);
p->typ = OPT_linttyp; p->typ = OPT_linttyp;
} else { } else {
p = x; p = x;
@ -2157,7 +2142,7 @@ void OPB_StPar1 (OPT_Node *par0, OPT_Node x, SHORTINT fctno)
t = x; t = x;
x = p; x = p;
p = t; p = t;
p = NewOp__53(19, 18, p, x); p = NewOp__57(19, 18, p, x);
} else { } else {
OPB_err(111); OPB_err(111);
} }
@ -2183,7 +2168,7 @@ void OPB_StPar1 (OPT_Node *par0, OPT_Node x, SHORTINT fctno)
} }
p->obj = NIL; p->obj = NIL;
} else { } else {
p = NewOp__53(12, 17, p, x); p = NewOp__57(12, 17, p, x);
p->typ = OPT_linttyp; p->typ = OPT_linttyp;
} }
} else { } else {
@ -2214,9 +2199,9 @@ void OPB_StPar1 (OPT_Node *par0, OPT_Node x, SHORTINT fctno)
OPB_err(111); OPB_err(111);
} else { } else {
if (fctno == 22) { if (fctno == 22) {
p = NewOp__53(12, 27, p, x); p = NewOp__57(12, 27, p, x);
} else { } else {
p = NewOp__53(12, 28, p, x); p = NewOp__57(12, 28, p, x);
} }
p->typ = p->left->typ; p->typ = p->left->typ;
} }
@ -2233,7 +2218,7 @@ void OPB_StPar1 (OPT_Node *par0, OPT_Node x, SHORTINT fctno)
x = p; x = p;
p = t; p = t;
} }
p = NewOp__53(19, fctno, p, x); p = NewOp__57(19, fctno, p, x);
} else { } else {
OPB_err(111); OPB_err(111);
} }
@ -2243,7 +2228,7 @@ void OPB_StPar1 (OPT_Node *par0, OPT_Node x, SHORTINT fctno)
if (x->class == 8 || x->class == 9) { if (x->class == 8 || x->class == 9) {
OPB_err(126); OPB_err(126);
} else if (__IN(f, 0x70)) { } else if (__IN(f, 0x70)) {
p = NewOp__53(12, 26, p, x); p = NewOp__57(12, 26, p, x);
} else { } else {
OPB_err(111); OPB_err(111);
} }
@ -2264,7 +2249,7 @@ void OPB_StPar1 (OPT_Node *par0, OPT_Node x, SHORTINT fctno)
if (x->class == 8 || x->class == 9) { if (x->class == 8 || x->class == 9) {
OPB_err(126); OPB_err(126);
} else if (__IN(f, 0x70)) { } else if (__IN(f, 0x70)) {
p = NewOp__53(19, 30, p, x); p = NewOp__57(19, 30, p, x);
} else { } else {
OPB_err(111); OPB_err(111);
} }
@ -2310,7 +2295,7 @@ void OPB_StPar1 (OPT_Node *par0, OPT_Node x, SHORTINT fctno)
break; break;
} }
*par0 = p; *par0 = p;
StPar1__52_s = _s.lnk; StPar1__56_s = _s.lnk;
} }
void OPB_StParN (OPT_Node *par0, OPT_Node x, INTEGER fctno, INTEGER n) void OPB_StParN (OPT_Node *par0, OPT_Node x, INTEGER fctno, INTEGER n)

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#ifndef OPB__h #ifndef OPB__h
#define OPB__h #define OPB__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#define LARGE #define LARGE
#include "SYSTEM.h" #include "SYSTEM.h"
#include "Configuration.h" #include "Configuration.h"

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#ifndef OPC__h #ifndef OPC__h
#define OPC__h #define OPC__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#define LARGE #define LARGE
#include "SYSTEM.h" #include "SYSTEM.h"
#include "Configuration.h" #include "Configuration.h"

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#ifndef OPM__h #ifndef OPM__h
#define OPM__h #define OPM__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#define LARGE #define LARGE
#include "SYSTEM.h" #include "SYSTEM.h"
#include "OPB.h" #include "OPB.h"

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin xtspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin xtspkaSfF */
#ifndef OPP__h #ifndef OPP__h
#define OPP__h #define OPP__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin tspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin tspkaSfF */
#define LARGE #define LARGE
#include "SYSTEM.h" #include "SYSTEM.h"
#include "OPM.h" #include "OPM.h"

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/08/13] for gcc LP64 on cygwin tspkaSfF */ /* voc 1.95 [2016/08/16] for gcc LP64 on cygwin tspkaSfF */
#ifndef OPS__h #ifndef OPS__h
#define OPS__h #define OPS__h

Some files were not shown because too many files have changed in this diff Show more