Separate install subdirs for diff size models. Lots of tidying and renaming.

This commit is contained in:
David Brown 2016-09-25 15:26:04 +01:00
parent 8ab4057a10
commit 41bf2c037d
208 changed files with 1559 additions and 2556 deletions

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#define INTEGER int16 #define INTEGER int16
#define LONGINT int32 #define LONGINT int32
@ -18,6 +18,6 @@ export void *Configuration__init(void)
__DEFMOD; __DEFMOD;
__REGMOD("Configuration", 0); __REGMOD("Configuration", 0);
/* BEGIN */ /* BEGIN */
__MOVE("1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8.", Configuration_versionLong, 75); __MOVE("1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8.", Configuration_versionLong, 75);
__ENDMOD; __ENDMOD;
} }

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#ifndef Configuration__h #ifndef Configuration__h
#define Configuration__h #define Configuration__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#define INTEGER int16 #define INTEGER int16
#define LONGINT int32 #define LONGINT int32

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#ifndef Console__h #ifndef Console__h
#define Console__h #define Console__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. tspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. tspaSfF */
#define INTEGER int16 #define INTEGER int16
#define LONGINT int32 #define LONGINT int32
@ -83,7 +83,6 @@ export int32 Files_Pos (Files_Rider *r, address *r__typ);
export void Files_Purge (Files_File f); export void Files_Purge (Files_File f);
export void Files_Read (Files_Rider *r, address *r__typ, SYSTEM_BYTE *x); export void Files_Read (Files_Rider *r, address *r__typ, SYSTEM_BYTE *x);
export void Files_ReadBool (Files_Rider *R, address *R__typ, BOOLEAN *x); export void Files_ReadBool (Files_Rider *R, address *R__typ, BOOLEAN *x);
export void Files_ReadByte (Files_Rider *r, address *r__typ, SYSTEM_BYTE *x, LONGINT x__len);
export void Files_ReadBytes (Files_Rider *r, address *r__typ, SYSTEM_BYTE *x, LONGINT x__len, int32 n); export void Files_ReadBytes (Files_Rider *r, address *r__typ, SYSTEM_BYTE *x, LONGINT x__len, int32 n);
export void Files_ReadInt (Files_Rider *R, address *R__typ, int16 *x); export void Files_ReadInt (Files_Rider *R, address *R__typ, int16 *x);
export void Files_ReadLInt (Files_Rider *R, address *R__typ, int32 *x); export void Files_ReadLInt (Files_Rider *R, address *R__typ, int32 *x);
@ -673,11 +672,6 @@ void Files_ReadBytes (Files_Rider *r, address *r__typ, SYSTEM_BYTE *x, LONGINT x
(*r).eof = 0; (*r).eof = 0;
} }
void Files_ReadByte (Files_Rider *r, address *r__typ, SYSTEM_BYTE *x, LONGINT x__len)
{
Files_ReadBytes(&*r, r__typ, (void*)x, x__len * 1, 1);
}
Files_File Files_Base (Files_Rider *r, address *r__typ) Files_File Files_Base (Files_Rider *r, address *r__typ)
{ {
Files_File _o_result; Files_File _o_result;

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. tspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. tspaSfF */
#ifndef Files__h #ifndef Files__h
#define Files__h #define Files__h
@ -40,7 +40,6 @@ import int32 Files_Pos (Files_Rider *r, address *r__typ);
import void Files_Purge (Files_File f); import void Files_Purge (Files_File f);
import void Files_Read (Files_Rider *r, address *r__typ, SYSTEM_BYTE *x); import void Files_Read (Files_Rider *r, address *r__typ, SYSTEM_BYTE *x);
import void Files_ReadBool (Files_Rider *R, address *R__typ, BOOLEAN *x); import void Files_ReadBool (Files_Rider *R, address *R__typ, BOOLEAN *x);
import void Files_ReadByte (Files_Rider *r, address *r__typ, SYSTEM_BYTE *x, LONGINT x__len);
import void Files_ReadBytes (Files_Rider *r, address *r__typ, SYSTEM_BYTE *x, LONGINT x__len, int32 n); import void Files_ReadBytes (Files_Rider *r, address *r__typ, SYSTEM_BYTE *x, LONGINT x__len, int32 n);
import void Files_ReadInt (Files_Rider *R, address *R__typ, int16 *x); import void Files_ReadInt (Files_Rider *R, address *R__typ, int16 *x);
import void Files_ReadLInt (Files_Rider *R, address *R__typ, int32 *x); import void Files_ReadLInt (Files_Rider *R, address *R__typ, int32 *x);

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. tsSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. tsSfF */
#define INTEGER int16 #define INTEGER int16
#define LONGINT int32 #define LONGINT int32
@ -39,7 +39,7 @@ typedef
typedef typedef
struct Heap_FinDesc { struct Heap_FinDesc {
Heap_FinNode next; Heap_FinNode next;
address obj; int32 obj;
BOOLEAN marked; BOOLEAN marked;
Heap_Finalizer finalize; Heap_Finalizer finalize;
} Heap_FinDesc; } Heap_FinDesc;
@ -56,19 +56,19 @@ typedef
Heap_ModuleName name; Heap_ModuleName name;
int32 refcnt; int32 refcnt;
Heap_Cmd cmds; Heap_Cmd cmds;
address types; int32 types;
Heap_EnumProc enumPtrs; Heap_EnumProc enumPtrs;
int32 reserved1, reserved2; int32 reserved1, reserved2;
} Heap_ModuleDesc; } Heap_ModuleDesc;
export SYSTEM_PTR Heap_modules; export SYSTEM_PTR Heap_modules;
static address Heap_freeList[10]; static int32 Heap_freeList[10];
static address Heap_bigBlocks; static int32 Heap_bigBlocks;
export address Heap_allocated; export int32 Heap_allocated;
static BOOLEAN Heap_firstTry; static BOOLEAN Heap_firstTry;
static address Heap_heap, Heap_heapend; static int32 Heap_heap, Heap_heapend;
export address Heap_heapsize; export int32 Heap_heapsize;
static Heap_FinNode Heap_fin; static Heap_FinNode Heap_fin;
static int16 Heap_lockdepth; static int16 Heap_lockdepth;
static BOOLEAN Heap_interrupted; static BOOLEAN Heap_interrupted;
@ -80,27 +80,27 @@ export address *Heap_FinDesc__typ;
export address *Heap__1__typ; export address *Heap__1__typ;
static void Heap_CheckFin (void); static void Heap_CheckFin (void);
static void Heap_ExtendHeap (address blksz); static void Heap_ExtendHeap (int32 blksz);
export void Heap_FINALL (void); export void Heap_FINALL (void);
static void Heap_Finalize (void); static void Heap_Finalize (void);
export void Heap_GC (BOOLEAN markStack); export void Heap_GC (BOOLEAN markStack);
static void Heap_HeapSort (address n, address *a, LONGINT a__len); static void Heap_HeapSort (int32 n, int32 *a, LONGINT a__len);
export void Heap_INCREF (Heap_Module m); export void Heap_INCREF (Heap_Module m);
export void Heap_InitHeap (void); export void Heap_InitHeap (void);
export void Heap_Lock (void); export void Heap_Lock (void);
static void Heap_Mark (address q); static void Heap_Mark (int32 q);
static void Heap_MarkCandidates (address n, address *cand, LONGINT cand__len); static void Heap_MarkCandidates (int32 n, int32 *cand, LONGINT cand__len);
static void Heap_MarkP (SYSTEM_PTR p); static void Heap_MarkP (SYSTEM_PTR p);
static void Heap_MarkStack (address n, address *cand, LONGINT cand__len); static void Heap_MarkStack (int32 n, int32 *cand, LONGINT cand__len);
export SYSTEM_PTR Heap_NEWBLK (address size); export SYSTEM_PTR Heap_NEWBLK (int32 size);
export SYSTEM_PTR Heap_NEWREC (address tag); export SYSTEM_PTR Heap_NEWREC (int32 tag);
static address Heap_NewChunk (address blksz); static int32 Heap_NewChunk (int32 blksz);
export void Heap_REGCMD (Heap_Module m, Heap_CmdName name, Heap_Command cmd); export void Heap_REGCMD (Heap_Module m, Heap_CmdName name, Heap_Command cmd);
export SYSTEM_PTR Heap_REGMOD (Heap_ModuleName name, Heap_EnumProc enumPtrs); export SYSTEM_PTR Heap_REGMOD (Heap_ModuleName name, Heap_EnumProc enumPtrs);
export void Heap_REGTYP (Heap_Module m, address typ); export void Heap_REGTYP (Heap_Module m, int32 typ);
export void Heap_RegisterFinalizer (SYSTEM_PTR obj, Heap_Finalizer finalize); export void Heap_RegisterFinalizer (SYSTEM_PTR obj, Heap_Finalizer finalize);
static void Heap_Scan (void); static void Heap_Scan (void);
static void Heap_Sift (address l, address r, address *a, LONGINT a__len); static void Heap_Sift (int32 l, int32 r, int32 *a, LONGINT a__len);
export void Heap_Unlock (void); export void Heap_Unlock (void);
extern void *Heap__init(); extern void *Heap__init();
@ -158,9 +158,9 @@ void Heap_REGCMD (Heap_Module m, Heap_CmdName name, Heap_Command cmd)
m->cmds = c; m->cmds = c;
} }
void Heap_REGTYP (Heap_Module m, address typ) void Heap_REGTYP (Heap_Module m, int32 typ)
{ {
__PUT(typ, m->types, address); __PUT(typ, m->types, int32);
m->types = typ; m->types = typ;
} }
@ -169,17 +169,17 @@ void Heap_INCREF (Heap_Module m)
m->refcnt += 1; m->refcnt += 1;
} }
static address Heap_NewChunk (address blksz) static int32 Heap_NewChunk (int32 blksz)
{ {
address _o_result; int32 _o_result;
address chnk; int32 chnk;
chnk = Heap_OSAllocate(blksz + 12); chnk = Heap_OSAllocate(blksz + 12);
if (chnk != 0) { if (chnk != 0) {
__PUT(chnk + 4, chnk + (12 + blksz), address); __PUT(chnk + 4, chnk + (12 + blksz), int32);
__PUT(chnk + 12, chnk + 16, address); __PUT(chnk + 12, chnk + 16, int32);
__PUT(chnk + 16, blksz, address); __PUT(chnk + 16, blksz, int32);
__PUT(chnk + 20, -4, address); __PUT(chnk + 20, -4, int32);
__PUT(chnk + 24, Heap_bigBlocks, address); __PUT(chnk + 24, Heap_bigBlocks, int32);
Heap_bigBlocks = chnk + 12; Heap_bigBlocks = chnk + 12;
Heap_heapsize += blksz; Heap_heapsize += blksz;
} }
@ -187,9 +187,9 @@ static address Heap_NewChunk (address blksz)
return _o_result; return _o_result;
} }
static void Heap_ExtendHeap (address blksz) static void Heap_ExtendHeap (int32 blksz)
{ {
address size, chnk, j, next; int32 size, chnk, j, next;
if (blksz > 160000) { if (blksz > 160000) {
size = blksz; size = blksz;
} else { } else {
@ -198,31 +198,31 @@ static void Heap_ExtendHeap (address blksz)
chnk = Heap_NewChunk(size); chnk = Heap_NewChunk(size);
if (chnk != 0) { if (chnk != 0) {
if (chnk < Heap_heap) { if (chnk < Heap_heap) {
__PUT(chnk, Heap_heap, address); __PUT(chnk, Heap_heap, int32);
Heap_heap = chnk; Heap_heap = chnk;
} else { } else {
j = Heap_heap; j = Heap_heap;
__GET(j, next, address); __GET(j, next, int32);
while ((next != 0 && chnk > next)) { while ((next != 0 && chnk > next)) {
j = next; j = next;
__GET(j, next, address); __GET(j, next, int32);
} }
__PUT(chnk, next, address); __PUT(chnk, next, int32);
__PUT(j, chnk, address); __PUT(j, chnk, int32);
} }
if (next == 0) { if (next == 0) {
__GET(chnk + 4, Heap_heapend, address); __GET(chnk + 4, Heap_heapend, int32);
} }
} }
} }
SYSTEM_PTR Heap_NEWREC (address tag) SYSTEM_PTR Heap_NEWREC (int32 tag)
{ {
SYSTEM_PTR _o_result; SYSTEM_PTR _o_result;
address i, i0, di, blksz, restsize, t, adr, end, next, prev; int32 i, i0, di, blksz, restsize, t, adr, end, next, prev;
SYSTEM_PTR new; SYSTEM_PTR new;
Heap_Lock(); Heap_Lock();
__GET(tag, blksz, address); __GET(tag, blksz, int32);
i0 = __ASHR(blksz, 4); i0 = __ASHR(blksz, 4);
i = i0; i = i0;
if (i < 9) { if (i < 9) {
@ -233,17 +233,17 @@ SYSTEM_PTR Heap_NEWREC (address tag)
} }
} }
if (i < 9) { if (i < 9) {
__GET(adr + 12, next, address); __GET(adr + 12, next, int32);
Heap_freeList[i] = next; Heap_freeList[i] = next;
if (i != i0) { if (i != i0) {
di = i - i0; di = i - i0;
restsize = __ASHL(di, 4); restsize = __ASHL(di, 4);
end = adr + restsize; end = adr + restsize;
__PUT(end + 4, blksz, address); __PUT(end + 4, blksz, int32);
__PUT(end + 8, -4, address); __PUT(end + 8, -4, int32);
__PUT(end, end + 4, address); __PUT(end, end + 4, int32);
__PUT(adr + 4, restsize, address); __PUT(adr + 4, restsize, int32);
__PUT(adr + 12, Heap_freeList[di], address); __PUT(adr + 12, Heap_freeList[di], int32);
Heap_freeList[di] = adr; Heap_freeList[di] = adr;
adr += restsize; adr += restsize;
} }
@ -274,31 +274,31 @@ SYSTEM_PTR Heap_NEWREC (address tag)
return _o_result; return _o_result;
} }
} }
__GET(adr + 4, t, address); __GET(adr + 4, t, int32);
if (t >= blksz) { if (t >= blksz) {
break; break;
} }
prev = adr; prev = adr;
__GET(adr + 12, adr, address); __GET(adr + 12, adr, int32);
} }
restsize = t - blksz; restsize = t - blksz;
end = adr + restsize; end = adr + restsize;
__PUT(end + 4, blksz, address); __PUT(end + 4, blksz, int32);
__PUT(end + 8, -4, address); __PUT(end + 8, -4, int32);
__PUT(end, end + 4, address); __PUT(end, end + 4, int32);
if (restsize > 144) { if (restsize > 144) {
__PUT(adr + 4, restsize, address); __PUT(adr + 4, restsize, int32);
} else { } else {
__GET(adr + 12, next, address); __GET(adr + 12, next, int32);
if (prev == 0) { if (prev == 0) {
Heap_bigBlocks = next; Heap_bigBlocks = next;
} else { } else {
__PUT(prev + 12, next, address); __PUT(prev + 12, next, int32);
} }
if (restsize > 0) { if (restsize > 0) {
di = __ASHR(restsize, 4); di = __ASHR(restsize, 4);
__PUT(adr + 4, restsize, address); __PUT(adr + 4, restsize, int32);
__PUT(adr + 12, Heap_freeList[di], address); __PUT(adr + 12, Heap_freeList[di], int32);
Heap_freeList[di] = adr; Heap_freeList[di] = adr;
} }
} }
@ -307,72 +307,72 @@ SYSTEM_PTR Heap_NEWREC (address tag)
i = adr + 16; i = adr + 16;
end = adr + blksz; end = adr + blksz;
while (i < end) { while (i < end) {
__PUT(i, 0, address); __PUT(i, 0, int32);
__PUT(i + 4, 0, address); __PUT(i + 4, 0, int32);
__PUT(i + 8, 0, address); __PUT(i + 8, 0, int32);
__PUT(i + 12, 0, address); __PUT(i + 12, 0, int32);
i += 16; i += 16;
} }
__PUT(adr + 12, 0, address); __PUT(adr + 12, 0, int32);
__PUT(adr, tag, address); __PUT(adr, tag, int32);
__PUT(adr + 4, 0, address); __PUT(adr + 4, 0, int32);
__PUT(adr + 8, 0, address); __PUT(adr + 8, 0, int32);
Heap_allocated += blksz; Heap_allocated += blksz;
Heap_Unlock(); Heap_Unlock();
_o_result = (SYSTEM_PTR)(address)(adr + 4); _o_result = (SYSTEM_PTR)(address)(adr + 4);
return _o_result; return _o_result;
} }
SYSTEM_PTR Heap_NEWBLK (address size) SYSTEM_PTR Heap_NEWBLK (int32 size)
{ {
SYSTEM_PTR _o_result; SYSTEM_PTR _o_result;
address blksz, tag; int32 blksz, tag;
SYSTEM_PTR new; SYSTEM_PTR new;
Heap_Lock(); Heap_Lock();
blksz = __ASHL(__ASHR(size + 31, 4), 4); blksz = __ASHL(__ASHR(size + 31, 4), 4);
new = Heap_NEWREC((address)&blksz); new = Heap_NEWREC((address)&blksz);
tag = ((address)(address)new + blksz) - 12; tag = ((int32)(address)new + blksz) - 12;
__PUT(tag - 4, 0, address); __PUT(tag - 4, 0, int32);
__PUT(tag, blksz, address); __PUT(tag, blksz, int32);
__PUT(tag + 4, -4, address); __PUT(tag + 4, -4, int32);
__PUT((address)(address)new - 4, tag, address); __PUT((int32)(address)new - 4, tag, int32);
Heap_Unlock(); Heap_Unlock();
_o_result = new; _o_result = new;
return _o_result; return _o_result;
} }
static void Heap_Mark (address q) static void Heap_Mark (int32 q)
{ {
address p, tag, offset, fld, n, tagbits; int32 p, tag, offset, fld, n, tagbits;
if (q != 0) { if (q != 0) {
__GET(q - 4, tagbits, address); __GET(q - 4, tagbits, int32);
if (!__ODD(tagbits)) { if (!__ODD(tagbits)) {
__PUT(q - 4, tagbits + 1, address); __PUT(q - 4, tagbits + 1, int32);
p = 0; p = 0;
tag = tagbits + 4; tag = tagbits + 4;
for (;;) { for (;;) {
__GET(tag, offset, address); __GET(tag, offset, int32);
if (offset < 0) { if (offset < 0) {
__PUT(q - 4, (tag + offset) + 1, address); __PUT(q - 4, (tag + offset) + 1, int32);
if (p == 0) { if (p == 0) {
break; break;
} }
n = q; n = q;
q = p; q = p;
__GET(q - 4, tag, address); __GET(q - 4, tag, int32);
tag -= 1; tag -= 1;
__GET(tag, offset, address); __GET(tag, offset, int32);
fld = q + offset; fld = q + offset;
__GET(fld, p, address); __GET(fld, p, int32);
__PUT(fld, (SYSTEM_PTR)(address)n, SYSTEM_PTR); __PUT(fld, (SYSTEM_PTR)(address)n, SYSTEM_PTR);
} else { } else {
fld = q + offset; fld = q + offset;
__GET(fld, n, address); __GET(fld, n, int32);
if (n != 0) { if (n != 0) {
__GET(n - 4, tagbits, address); __GET(n - 4, tagbits, int32);
if (!__ODD(tagbits)) { if (!__ODD(tagbits)) {
__PUT(n - 4, tagbits + 1, address); __PUT(n - 4, tagbits + 1, int32);
__PUT(q - 4, tag + 1, address); __PUT(q - 4, tag + 1, int32);
__PUT(fld, (SYSTEM_PTR)(address)p, SYSTEM_PTR); __PUT(fld, (SYSTEM_PTR)(address)p, SYSTEM_PTR);
p = q; p = q;
q = n; q = n;
@ -388,12 +388,12 @@ static void Heap_Mark (address q)
static void Heap_MarkP (SYSTEM_PTR p) static void Heap_MarkP (SYSTEM_PTR p)
{ {
Heap_Mark((address)(address)p); Heap_Mark((int32)(address)p);
} }
static void Heap_Scan (void) static void Heap_Scan (void)
{ {
address chnk, adr, end, start, tag, i, size, freesize; int32 chnk, adr, end, start, tag, i, size, freesize;
Heap_bigBlocks = 0; Heap_bigBlocks = 0;
i = 1; i = 1;
while (i < 9) { while (i < 9) {
@ -405,58 +405,58 @@ static void Heap_Scan (void)
chnk = Heap_heap; chnk = Heap_heap;
while (chnk != 0) { while (chnk != 0) {
adr = chnk + 12; adr = chnk + 12;
__GET(chnk + 4, end, address); __GET(chnk + 4, end, int32);
while (adr < end) { while (adr < end) {
__GET(adr, tag, address); __GET(adr, tag, int32);
if (__ODD(tag)) { if (__ODD(tag)) {
if (freesize > 0) { if (freesize > 0) {
start = adr - freesize; start = adr - freesize;
__PUT(start, start + 4, address); __PUT(start, start + 4, int32);
__PUT(start + 4, freesize, address); __PUT(start + 4, freesize, int32);
__PUT(start + 8, -4, address); __PUT(start + 8, -4, int32);
i = __ASHR(freesize, 4); i = __ASHR(freesize, 4);
freesize = 0; freesize = 0;
if (i < 9) { if (i < 9) {
__PUT(start + 12, Heap_freeList[i], address); __PUT(start + 12, Heap_freeList[i], int32);
Heap_freeList[i] = start; Heap_freeList[i] = start;
} else { } else {
__PUT(start + 12, Heap_bigBlocks, address); __PUT(start + 12, Heap_bigBlocks, int32);
Heap_bigBlocks = start; Heap_bigBlocks = start;
} }
} }
tag -= 1; tag -= 1;
__PUT(adr, tag, address); __PUT(adr, tag, int32);
__GET(tag, size, address); __GET(tag, size, int32);
Heap_allocated += size; Heap_allocated += size;
adr += size; adr += size;
} else { } else {
__GET(tag, size, address); __GET(tag, size, int32);
freesize += size; freesize += size;
adr += size; adr += size;
} }
} }
if (freesize > 0) { if (freesize > 0) {
start = adr - freesize; start = adr - freesize;
__PUT(start, start + 4, address); __PUT(start, start + 4, int32);
__PUT(start + 4, freesize, address); __PUT(start + 4, freesize, int32);
__PUT(start + 8, -4, address); __PUT(start + 8, -4, int32);
i = __ASHR(freesize, 4); i = __ASHR(freesize, 4);
freesize = 0; freesize = 0;
if (i < 9) { if (i < 9) {
__PUT(start + 12, Heap_freeList[i], address); __PUT(start + 12, Heap_freeList[i], int32);
Heap_freeList[i] = start; Heap_freeList[i] = start;
} else { } else {
__PUT(start + 12, Heap_bigBlocks, address); __PUT(start + 12, Heap_bigBlocks, int32);
Heap_bigBlocks = start; Heap_bigBlocks = start;
} }
} }
__GET(chnk, chnk, address); __GET(chnk, chnk, int32);
} }
} }
static void Heap_Sift (address l, address r, address *a, LONGINT a__len) static void Heap_Sift (int32 l, int32 r, int32 *a, LONGINT a__len)
{ {
address i, j, x; int32 i, j, x;
j = l; j = l;
x = a[j]; x = a[j];
for (;;) { for (;;) {
@ -473,9 +473,9 @@ static void Heap_Sift (address l, address r, address *a, LONGINT a__len)
a[i] = x; a[i] = x;
} }
static void Heap_HeapSort (address n, address *a, LONGINT a__len) static void Heap_HeapSort (int32 n, int32 *a, LONGINT a__len)
{ {
address l, r, x; int32 l, r, x;
l = __ASHR(n, 1); l = __ASHR(n, 1);
r = n - 1; r = n - 1;
while (l > 0) { while (l > 0) {
@ -491,25 +491,25 @@ static void Heap_HeapSort (address n, address *a, LONGINT a__len)
} }
} }
static void Heap_MarkCandidates (address n, address *cand, LONGINT cand__len) static void Heap_MarkCandidates (int32 n, int32 *cand, LONGINT cand__len)
{ {
address chnk, adr, tag, next, lim, lim1, i, ptr, size; int32 chnk, adr, tag, next, lim, lim1, i, ptr, size;
chnk = Heap_heap; chnk = Heap_heap;
i = 0; i = 0;
lim = cand[n - 1]; lim = cand[n - 1];
while ((chnk != 0 && chnk < lim)) { while ((chnk != 0 && chnk < lim)) {
adr = chnk + 12; adr = chnk + 12;
__GET(chnk + 4, lim1, address); __GET(chnk + 4, lim1, int32);
if (lim < lim1) { if (lim < lim1) {
lim1 = lim; lim1 = lim;
} }
while (adr < lim1) { while (adr < lim1) {
__GET(adr, tag, address); __GET(adr, tag, int32);
if (__ODD(tag)) { if (__ODD(tag)) {
__GET(tag - 1, size, address); __GET(tag - 1, size, int32);
adr += size; adr += size;
} else { } else {
__GET(tag, size, address); __GET(tag, size, int32);
ptr = adr + 4; ptr = adr + 4;
while (cand[i] < ptr) { while (cand[i] < ptr) {
i += 1; i += 1;
@ -524,17 +524,17 @@ static void Heap_MarkCandidates (address n, address *cand, LONGINT cand__len)
adr = next; adr = next;
} }
} }
__GET(chnk, chnk, address); __GET(chnk, chnk, int32);
} }
} }
static void Heap_CheckFin (void) static void Heap_CheckFin (void)
{ {
Heap_FinNode n; Heap_FinNode n;
address tag; int32 tag;
n = Heap_fin; n = Heap_fin;
while (n != NIL) { while (n != NIL) {
__GET(n->obj - 4, tag, address); __GET(n->obj - 4, tag, int32);
if (!__ODD(tag)) { if (!__ODD(tag)) {
n->marked = 0; n->marked = 0;
Heap_Mark(n->obj); Heap_Mark(n->obj);
@ -580,10 +580,10 @@ void Heap_FINALL (void)
} }
} }
static void Heap_MarkStack (address n, address *cand, LONGINT cand__len) static void Heap_MarkStack (int32 n, int32 *cand, LONGINT cand__len)
{ {
SYSTEM_PTR frame; SYSTEM_PTR frame;
address inc, nofcand, sp, p, stack0; int32 inc, nofcand, sp, p, stack0;
struct Heap__1 align; struct Heap__1 align;
if (n > 0) { if (n > 0) {
Heap_MarkStack(n - 1, cand, cand__len); Heap_MarkStack(n - 1, cand, cand__len);
@ -600,7 +600,7 @@ static void Heap_MarkStack (address n, address *cand, LONGINT cand__len)
inc = -inc; inc = -inc;
} }
while (sp != stack0) { while (sp != stack0) {
__GET(sp, p, address); __GET(sp, p, int32);
if ((p > Heap_heap && p < Heap_heapend)) { if ((p > Heap_heap && p < Heap_heapend)) {
if (nofcand == cand__len) { if (nofcand == cand__len) {
Heap_HeapSort(nofcand, (void*)cand, cand__len); Heap_HeapSort(nofcand, (void*)cand, cand__len);
@ -622,8 +622,8 @@ static void Heap_MarkStack (address n, address *cand, LONGINT cand__len)
void Heap_GC (BOOLEAN markStack) void Heap_GC (BOOLEAN markStack)
{ {
Heap_Module m; Heap_Module m;
address i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23; int32 i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23;
address cand[10000]; int32 cand[10000];
if (Heap_lockdepth == 0 || (Heap_lockdepth == 1 && !markStack)) { if (Heap_lockdepth == 0 || (Heap_lockdepth == 1 && !markStack)) {
Heap_Lock(); Heap_Lock();
m = (Heap_Module)(address)Heap_modules; m = (Heap_Module)(address)Heap_modules;
@ -703,7 +703,7 @@ void Heap_RegisterFinalizer (SYSTEM_PTR obj, Heap_Finalizer finalize)
{ {
Heap_FinNode f; Heap_FinNode f;
__NEW(f, Heap_FinDesc); __NEW(f, Heap_FinDesc);
f->obj = (address)(address)obj; f->obj = (int32)(address)obj;
f->finalize = finalize; f->finalize = finalize;
f->marked = 1; f->marked = 1;
f->next = Heap_fin; f->next = Heap_fin;
@ -713,8 +713,8 @@ void Heap_RegisterFinalizer (SYSTEM_PTR obj, Heap_Finalizer finalize)
void Heap_InitHeap (void) void Heap_InitHeap (void)
{ {
Heap_heap = Heap_NewChunk(128000); Heap_heap = Heap_NewChunk(128000);
__GET(Heap_heap + 4, Heap_heapend, address); __GET(Heap_heap + 4, Heap_heapend, int32);
__PUT(Heap_heap, 0, address); __PUT(Heap_heap, 0, int32);
Heap_allocated = 0; Heap_allocated = 0;
Heap_firstTry = 1; Heap_firstTry = 1;
Heap_freeList[9] = 1; Heap_freeList[9] = 1;

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. tsSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. tsSfF */
#ifndef Heap__h #ifndef Heap__h
#define Heap__h #define Heap__h
@ -31,7 +31,7 @@ typedef
import SYSTEM_PTR Heap_modules; import SYSTEM_PTR Heap_modules;
import address Heap_allocated, Heap_heapsize; import int32 Heap_allocated, Heap_heapsize;
import int16 Heap_FileCount; import int16 Heap_FileCount;
import address *Heap_ModuleDesc__typ; import address *Heap_ModuleDesc__typ;
@ -41,11 +41,11 @@ import void Heap_GC (BOOLEAN markStack);
import void Heap_INCREF (Heap_Module m); import void Heap_INCREF (Heap_Module m);
import void Heap_InitHeap (void); import void Heap_InitHeap (void);
import void Heap_Lock (void); import void Heap_Lock (void);
import SYSTEM_PTR Heap_NEWBLK (address size); import SYSTEM_PTR Heap_NEWBLK (int32 size);
import SYSTEM_PTR Heap_NEWREC (address tag); import SYSTEM_PTR Heap_NEWREC (int32 tag);
import void Heap_REGCMD (Heap_Module m, Heap_CmdName name, Heap_Command cmd); import void Heap_REGCMD (Heap_Module m, Heap_CmdName name, Heap_Command cmd);
import SYSTEM_PTR Heap_REGMOD (Heap_ModuleName name, Heap_EnumProc enumPtrs); import SYSTEM_PTR Heap_REGMOD (Heap_ModuleName name, Heap_EnumProc enumPtrs);
import void Heap_REGTYP (Heap_Module m, address typ); import void Heap_REGTYP (Heap_Module m, int32 typ);
import void Heap_RegisterFinalizer (SYSTEM_PTR obj, Heap_Finalizer finalize); import void Heap_RegisterFinalizer (SYSTEM_PTR obj, Heap_Finalizer finalize);
import void Heap_Unlock (void); import void Heap_Unlock (void);
import void *Heap__init(void); import void *Heap__init(void);

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#define INTEGER int16 #define INTEGER int16
#define LONGINT int32 #define LONGINT int32

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#ifndef Modules__h #ifndef Modules__h
#define Modules__h #define Modules__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#define INTEGER int16 #define INTEGER int16
#define LONGINT int32 #define LONGINT int32
@ -2449,12 +2449,8 @@ void OPB_Param (OPT_Node ap, OPT_Object fp)
OPB_err(111); OPB_err(111);
} }
} else if ((fp->typ == OPT_sysptrtyp && ap->typ->form == 11)) { } else if ((fp->typ == OPT_sysptrtyp && ap->typ->form == 11)) {
} else if (ap->typ != fp->typ) { } else if ((ap->typ != fp->typ && !((((fp->typ->form == 1 && __IN(ap->typ->form, 0x1e, 32))) && ap->typ->size == 1)))) {
if ((fp->typ->form == 1 && ((__IN(ap->typ->form, 0x1e, 32) && ap->typ->size == 1)))) { OPB_err(123);
} else if ((ap->typ == OPT_adrtyp && fp->typ == OPT_IntType(ap->typ->size))) {
} else {
OPB_err(123);
}
} else if ((fp->typ->form == 11 && ap->class == 5)) { } else if ((fp->typ->form == 11 && ap->class == 5)) {
OPB_err(123); OPB_err(123);
} }

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#ifndef OPB__h #ifndef OPB__h
#define OPB__h #define OPB__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#define INTEGER int16 #define INTEGER int16
#define LONGINT int32 #define LONGINT int32

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#ifndef OPC__h #ifndef OPC__h
#define OPC__h #define OPC__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#define INTEGER int16 #define INTEGER int16
#define LONGINT int32 #define LONGINT int32

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#ifndef OPM__h #ifndef OPM__h
#define OPM__h #define OPM__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#define INTEGER int16 #define INTEGER int16
#define LONGINT int32 #define LONGINT int32

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#ifndef OPP__h #ifndef OPP__h
#define OPP__h #define OPP__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. tspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. tspaSfF */
#define INTEGER int16 #define INTEGER int16
#define LONGINT int32 #define LONGINT int32

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. tspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. tspaSfF */
#ifndef OPS__h #ifndef OPS__h
#define OPS__h #define OPS__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#define INTEGER int16 #define INTEGER int16
#define LONGINT int32 #define LONGINT int32

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#ifndef OPT__h #ifndef OPT__h
#define OPT__h #define OPT__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#define INTEGER int16 #define INTEGER int16
#define LONGINT int32 #define LONGINT int32

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#ifndef OPV__h #ifndef OPV__h
#define OPV__h #define OPV__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#define INTEGER int16 #define INTEGER int16
#define LONGINT int32 #define LONGINT int32
@ -13,7 +13,7 @@ typedef
Platform_ArgPtr (*Platform_ArgVec)[1024]; Platform_ArgPtr (*Platform_ArgVec)[1024];
typedef typedef
address (*Platform_ArgVecPtr)[1]; int32 (*Platform_ArgVecPtr)[1];
typedef typedef
CHAR (*Platform_EnvPtr)[1024]; CHAR (*Platform_EnvPtr)[1024];
@ -31,12 +31,12 @@ typedef
export BOOLEAN Platform_LittleEndian; export BOOLEAN Platform_LittleEndian;
export address Platform_MainStackFrame; export int32 Platform_MainStackFrame;
export int32 Platform_HaltCode; export int32 Platform_HaltCode;
export int16 Platform_PID; export int16 Platform_PID;
export CHAR Platform_CWD[256]; export CHAR Platform_CWD[256];
export int16 Platform_ArgCount; export int16 Platform_ArgCount;
export address Platform_ArgVector; export int32 Platform_ArgVector;
static Platform_HaltProcedure Platform_HaltHandler; static Platform_HaltProcedure Platform_HaltHandler;
static int32 Platform_TimeStart; static int32 Platform_TimeStart;
export int16 Platform_SeekSet, Platform_SeekCur, Platform_SeekEnd; export int16 Platform_SeekSet, Platform_SeekCur, Platform_SeekEnd;
@ -64,15 +64,15 @@ export void Platform_Halt (int32 code);
export int16 Platform_Identify (int32 h, Platform_FileIdentity *identity, address *identity__typ); export int16 Platform_Identify (int32 h, Platform_FileIdentity *identity, address *identity__typ);
export int16 Platform_IdentifyByName (CHAR *n, LONGINT n__len, Platform_FileIdentity *identity, address *identity__typ); export int16 Platform_IdentifyByName (CHAR *n, LONGINT n__len, Platform_FileIdentity *identity, address *identity__typ);
export BOOLEAN Platform_Inaccessible (int16 e); export BOOLEAN Platform_Inaccessible (int16 e);
export void Platform_Init (int16 argc, address argvadr); export void Platform_Init (int16 argc, int32 argvadr);
export void Platform_MTimeAsClock (Platform_FileIdentity i, int32 *t, int32 *d); export void Platform_MTimeAsClock (Platform_FileIdentity i, int32 *t, int32 *d);
export int16 Platform_New (CHAR *n, LONGINT n__len, int32 *h); export int16 Platform_New (CHAR *n, LONGINT n__len, int32 *h);
export BOOLEAN Platform_NoSuchDirectory (int16 e); export BOOLEAN Platform_NoSuchDirectory (int16 e);
export address Platform_OSAllocate (address size); export int32 Platform_OSAllocate (int32 size);
export void Platform_OSFree (address address); export void Platform_OSFree (int32 address);
export int16 Platform_OldRO (CHAR *n, LONGINT n__len, int32 *h); export int16 Platform_OldRO (CHAR *n, LONGINT n__len, int32 *h);
export int16 Platform_OldRW (CHAR *n, LONGINT n__len, int32 *h); export int16 Platform_OldRW (CHAR *n, LONGINT n__len, int32 *h);
export int16 Platform_Read (int32 h, address p, int32 l, int32 *n); export int16 Platform_Read (int32 h, int32 p, int32 l, int32 *n);
export int16 Platform_ReadBuf (int32 h, SYSTEM_BYTE *b, LONGINT b__len, int32 *n); export int16 Platform_ReadBuf (int32 h, SYSTEM_BYTE *b, LONGINT b__len, int32 *n);
export int16 Platform_Rename (CHAR *o, LONGINT o__len, CHAR *n, LONGINT n__len); export int16 Platform_Rename (CHAR *o, LONGINT o__len, CHAR *n, LONGINT n__len);
export BOOLEAN Platform_SameFile (Platform_FileIdentity i1, Platform_FileIdentity i2); export BOOLEAN Platform_SameFile (Platform_FileIdentity i1, Platform_FileIdentity i2);
@ -92,7 +92,7 @@ export BOOLEAN Platform_TimedOut (int16 e);
export BOOLEAN Platform_TooManyFiles (int16 e); export BOOLEAN Platform_TooManyFiles (int16 e);
export int16 Platform_Truncate (int32 h, int32 l); export int16 Platform_Truncate (int32 h, int32 l);
export int16 Platform_Unlink (CHAR *n, LONGINT n__len); export int16 Platform_Unlink (CHAR *n, LONGINT n__len);
export int16 Platform_Write (int32 h, address p, int32 l); export int16 Platform_Write (int32 h, int32 p, int32 l);
static void Platform_YMDHMStoClock (int32 ye, int32 mo, int32 da, int32 ho, int32 mi, int32 se, int32 *t, int32 *d); static void Platform_YMDHMStoClock (int32 ye, int32 mo, int32 da, int32 ho, int32 mi, int32 se, int32 *t, int32 *d);
static void Platform_errch (CHAR c); static void Platform_errch (CHAR c);
static void Platform_errint (int32 l); static void Platform_errint (int32 l);
@ -218,19 +218,19 @@ BOOLEAN Platform_ConnectionFailed (int16 e)
return _o_result; return _o_result;
} }
address Platform_OSAllocate (address size) int32 Platform_OSAllocate (int32 size)
{ {
address _o_result; int32 _o_result;
_o_result = Platform_allocate(size); _o_result = Platform_allocate(size);
return _o_result; return _o_result;
} }
void Platform_OSFree (address address) void Platform_OSFree (int32 address)
{ {
Platform_free(address); Platform_free(address);
} }
void Platform_Init (int16 argc, address argvadr) void Platform_Init (int16 argc, int32 argvadr)
{ {
Platform_ArgVecPtr av = NIL; Platform_ArgVecPtr av = NIL;
Platform_MainStackFrame = argvadr; Platform_MainStackFrame = argvadr;
@ -517,7 +517,7 @@ int16 Platform_Size (int32 h, int32 *l)
return _o_result; return _o_result;
} }
int16 Platform_Read (int32 h, address p, int32 l, int32 *n) int16 Platform_Read (int32 h, int32 p, int32 l, int32 *n)
{ {
int16 _o_result; int16 _o_result;
*n = Platform_readfile(h, p, l); *n = Platform_readfile(h, p, l);
@ -547,10 +547,10 @@ int16 Platform_ReadBuf (int32 h, SYSTEM_BYTE *b, LONGINT b__len, int32 *n)
__RETCHK; __RETCHK;
} }
int16 Platform_Write (int32 h, address p, int32 l) int16 Platform_Write (int32 h, int32 p, int32 l)
{ {
int16 _o_result; int16 _o_result;
address written; int32 written;
written = Platform_writefile(h, p, l); written = Platform_writefile(h, p, l);
if (written < 0) { if (written < 0) {
_o_result = Platform_err(); _o_result = Platform_err();

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#ifndef Platform__h #ifndef Platform__h
#define Platform__h #define Platform__h
@ -7,7 +7,8 @@
typedef typedef
struct Platform_FileIdentity { struct Platform_FileIdentity {
int32 volume, index, mtime; int32 _prvt0;
char _prvt1[8];
} Platform_FileIdentity; } Platform_FileIdentity;
typedef typedef
@ -18,12 +19,12 @@ typedef
import BOOLEAN Platform_LittleEndian; import BOOLEAN Platform_LittleEndian;
import address Platform_MainStackFrame; import int32 Platform_MainStackFrame;
import int32 Platform_HaltCode; import int32 Platform_HaltCode;
import int16 Platform_PID; import int16 Platform_PID;
import CHAR Platform_CWD[256]; import CHAR Platform_CWD[256];
import int16 Platform_ArgCount; import int16 Platform_ArgCount;
import address Platform_ArgVector; import int32 Platform_ArgVector;
import int16 Platform_SeekSet, Platform_SeekCur, Platform_SeekEnd; import int16 Platform_SeekSet, Platform_SeekCur, Platform_SeekEnd;
import CHAR Platform_nl[3]; import CHAR Platform_nl[3];
@ -48,15 +49,15 @@ import void Platform_Halt (int32 code);
import int16 Platform_Identify (int32 h, Platform_FileIdentity *identity, address *identity__typ); import int16 Platform_Identify (int32 h, Platform_FileIdentity *identity, address *identity__typ);
import int16 Platform_IdentifyByName (CHAR *n, LONGINT n__len, Platform_FileIdentity *identity, address *identity__typ); import int16 Platform_IdentifyByName (CHAR *n, LONGINT n__len, Platform_FileIdentity *identity, address *identity__typ);
import BOOLEAN Platform_Inaccessible (int16 e); import BOOLEAN Platform_Inaccessible (int16 e);
import void Platform_Init (int16 argc, address argvadr); import void Platform_Init (int16 argc, int32 argvadr);
import void Platform_MTimeAsClock (Platform_FileIdentity i, int32 *t, int32 *d); import void Platform_MTimeAsClock (Platform_FileIdentity i, int32 *t, int32 *d);
import int16 Platform_New (CHAR *n, LONGINT n__len, int32 *h); import int16 Platform_New (CHAR *n, LONGINT n__len, int32 *h);
import BOOLEAN Platform_NoSuchDirectory (int16 e); import BOOLEAN Platform_NoSuchDirectory (int16 e);
import address Platform_OSAllocate (address size); import int32 Platform_OSAllocate (int32 size);
import void Platform_OSFree (address address); import void Platform_OSFree (int32 address);
import int16 Platform_OldRO (CHAR *n, LONGINT n__len, int32 *h); import int16 Platform_OldRO (CHAR *n, LONGINT n__len, int32 *h);
import int16 Platform_OldRW (CHAR *n, LONGINT n__len, int32 *h); import int16 Platform_OldRW (CHAR *n, LONGINT n__len, int32 *h);
import int16 Platform_Read (int32 h, address p, int32 l, int32 *n); import int16 Platform_Read (int32 h, int32 p, int32 l, int32 *n);
import int16 Platform_ReadBuf (int32 h, SYSTEM_BYTE *b, LONGINT b__len, int32 *n); import int16 Platform_ReadBuf (int32 h, SYSTEM_BYTE *b, LONGINT b__len, int32 *n);
import int16 Platform_Rename (CHAR *o, LONGINT o__len, CHAR *n, LONGINT n__len); import int16 Platform_Rename (CHAR *o, LONGINT o__len, CHAR *n, LONGINT n__len);
import BOOLEAN Platform_SameFile (Platform_FileIdentity i1, Platform_FileIdentity i2); import BOOLEAN Platform_SameFile (Platform_FileIdentity i1, Platform_FileIdentity i2);
@ -75,7 +76,7 @@ import BOOLEAN Platform_TimedOut (int16 e);
import BOOLEAN Platform_TooManyFiles (int16 e); import BOOLEAN Platform_TooManyFiles (int16 e);
import int16 Platform_Truncate (int32 h, int32 l); import int16 Platform_Truncate (int32 h, int32 l);
import int16 Platform_Unlink (CHAR *n, LONGINT n__len); import int16 Platform_Unlink (CHAR *n, LONGINT n__len);
import int16 Platform_Write (int32 h, address p, int32 l); import int16 Platform_Write (int32 h, int32 p, int32 l);
import BOOLEAN Platform_getEnv (CHAR *var, LONGINT var__len, CHAR *val, LONGINT val__len); import BOOLEAN Platform_getEnv (CHAR *var, LONGINT var__len, CHAR *val, LONGINT val__len);
import void *Platform__init(void); import void *Platform__init(void);

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#define INTEGER int16 #define INTEGER int16
#define LONGINT int32 #define LONGINT int32

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#ifndef Reals__h #ifndef Reals__h
#define Reals__h #define Reals__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#define INTEGER int16 #define INTEGER int16
#define LONGINT int32 #define LONGINT int32

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#ifndef Strings__h #ifndef Strings__h
#define Strings__h #define Strings__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#define INTEGER int16 #define INTEGER int16
#define LONGINT int32 #define LONGINT int32

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#ifndef Texts__h #ifndef Texts__h
#define Texts__h #define Texts__h

View file

@ -1,171 +0,0 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspamSf */
#define INTEGER int16
#define LONGINT int32
#define SET uint32
#include "SYSTEM.h"
#include "Configuration.h"
#include "Heap.h"
#include "OPB.h"
#include "OPC.h"
#include "OPM.h"
#include "OPP.h"
#include "OPT.h"
#include "OPV.h"
#include "Platform.h"
#include "Strings.h"
#include "extTools.h"
#include "vt100.h"
static CHAR Vishap_mname[256];
export void Vishap_Module (BOOLEAN *done);
static void Vishap_PropagateElementaryTypeSizes (void);
export void Vishap_Translate (void);
static void Vishap_Trap (int16 sig);
void Vishap_Module (BOOLEAN *done)
{
BOOLEAN ext, new;
OPT_Node p = NIL;
OPP_Module(&p, OPM_opt);
if (OPM_noerr) {
OPV_Init();
OPT_InitRecno();
OPV_AdrAndSize(OPT_topScope);
OPT_Export(&ext, &new);
if (OPM_noerr) {
OPM_OpenFiles((void*)OPT_SelfName, 256);
OPC_Init();
OPV_Module(p);
if (OPM_noerr) {
if ((__IN(10, OPM_opt, 32) && __STRCMP(OPM_modName, "SYSTEM") != 0)) {
OPM_DeleteNewSym();
if (!__IN(16, OPM_opt, 32)) {
vt100_SetAttr((CHAR*)"32m", 4);
}
OPM_LogWStr((CHAR*)" Main program.", 16);
if (!__IN(16, OPM_opt, 32)) {
vt100_SetAttr((CHAR*)"0m", 3);
}
} else {
if (new) {
if (!__IN(16, OPM_opt, 32)) {
vt100_SetAttr((CHAR*)"32m", 4);
}
OPM_LogWStr((CHAR*)" New symbol file.", 19);
if (!__IN(16, OPM_opt, 32)) {
vt100_SetAttr((CHAR*)"0m", 3);
}
OPM_RegisterNewSym();
} else if (ext) {
OPM_LogWStr((CHAR*)" Extended symbol file.", 24);
OPM_RegisterNewSym();
}
}
} else {
OPM_DeleteNewSym();
}
}
}
OPM_CloseFiles();
OPT_Close();
OPM_LogWLn();
*done = OPM_noerr;
}
static void Vishap_PropagateElementaryTypeSizes (void)
{
OPT_sysptrtyp->size = OPM_AddressSize;
OPT_adrtyp->size = OPM_AddressSize;
OPT_settyp->size = OPM_SetSize;
OPT_sinttyp = OPT_IntType(OPM_ShortintSize);
OPT_inttyp = OPT_IntType(OPM_IntegerSize);
OPT_linttyp = OPT_IntType(OPM_LongintSize);
OPT_sintobj->typ = OPT_sinttyp;
OPT_intobj->typ = OPT_inttyp;
OPT_lintobj->typ = OPT_linttyp;
}
void Vishap_Translate (void)
{
BOOLEAN done;
CHAR modulesobj[2048];
modulesobj[0] = 0x00;
if (OPM_OpenPar()) {
for (;;) {
OPM_Init(&done, (void*)Vishap_mname, 256);
if (!done) {
return;
}
OPM_InitOptions();
Vishap_PropagateElementaryTypeSizes();
Heap_GC(0);
Vishap_Module(&done);
if (!done) {
OPM_LogWLn();
OPM_LogWStr((CHAR*)"Module compilation failed.", 27);
OPM_LogWLn();
Platform_Exit(1);
}
if (!__IN(13, OPM_opt, 32)) {
if (__IN(14, OPM_opt, 32)) {
extTools_Assemble(OPM_modName, 32);
} else {
if (!__IN(10, OPM_opt, 32)) {
extTools_Assemble(OPM_modName, 32);
Strings_Append((CHAR*)" ", 2, (void*)modulesobj, 2048);
Strings_Append(OPM_modName, 32, (void*)modulesobj, 2048);
Strings_Append((CHAR*)".o", 3, (void*)modulesobj, 2048);
} else {
extTools_LinkMain((void*)OPM_modName, 32, __IN(15, OPM_opt, 32), modulesobj, 2048);
}
}
}
}
}
}
static void Vishap_Trap (int16 sig)
{
Heap_FINALL();
if (sig == 3) {
Platform_Exit(0);
} else {
if ((sig == 4 && Platform_HaltCode == -15)) {
OPM_LogWStr((CHAR*)" --- Vishap Oberon: internal error", 35);
OPM_LogWLn();
}
Platform_Exit(2);
}
}
export int main(int argc, char **argv)
{
__INIT(argc, argv);
__MODULE_IMPORT(Configuration);
__MODULE_IMPORT(Heap);
__MODULE_IMPORT(OPB);
__MODULE_IMPORT(OPC);
__MODULE_IMPORT(OPM);
__MODULE_IMPORT(OPP);
__MODULE_IMPORT(OPT);
__MODULE_IMPORT(OPV);
__MODULE_IMPORT(Platform);
__MODULE_IMPORT(Strings);
__MODULE_IMPORT(extTools);
__MODULE_IMPORT(vt100);
__REGMAIN("Vishap", 0);
__REGCMD("Translate", Vishap_Translate);
/* BEGIN */
Platform_SetInterruptHandler(Vishap_Trap);
Platform_SetQuitHandler(Vishap_Trap);
Platform_SetBadInstructionHandler(Vishap_Trap);
Vishap_Translate();
__FINI;
}

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#define INTEGER int16 #define INTEGER int16
#define LONGINT int32 #define LONGINT int32

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#ifndef errors__h #ifndef errors__h
#define errors__h #define errors__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#define INTEGER int16 #define INTEGER int16
#define LONGINT int32 #define LONGINT int32

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#ifndef extTools__h #ifndef extTools__h
#define extTools__h #define extTools__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#define INTEGER int16 #define INTEGER int16
#define LONGINT int32 #define LONGINT int32

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#ifndef vt100__h #ifndef vt100__h
#define vt100__h #define vt100__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#define INTEGER int16 #define INTEGER int16
#define LONGINT int32 #define LONGINT int32
@ -18,6 +18,6 @@ export void *Configuration__init(void)
__DEFMOD; __DEFMOD;
__REGMOD("Configuration", 0); __REGMOD("Configuration", 0);
/* BEGIN */ /* BEGIN */
__MOVE("1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8.", Configuration_versionLong, 75); __MOVE("1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8.", Configuration_versionLong, 75);
__ENDMOD; __ENDMOD;
} }

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#ifndef Configuration__h #ifndef Configuration__h
#define Configuration__h #define Configuration__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#define INTEGER int16 #define INTEGER int16
#define LONGINT int32 #define LONGINT int32

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#ifndef Console__h #ifndef Console__h
#define Console__h #define Console__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. tspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. tspaSfF */
#define INTEGER int16 #define INTEGER int16
#define LONGINT int32 #define LONGINT int32
@ -83,7 +83,6 @@ export int32 Files_Pos (Files_Rider *r, address *r__typ);
export void Files_Purge (Files_File f); export void Files_Purge (Files_File f);
export void Files_Read (Files_Rider *r, address *r__typ, SYSTEM_BYTE *x); export void Files_Read (Files_Rider *r, address *r__typ, SYSTEM_BYTE *x);
export void Files_ReadBool (Files_Rider *R, address *R__typ, BOOLEAN *x); export void Files_ReadBool (Files_Rider *R, address *R__typ, BOOLEAN *x);
export void Files_ReadByte (Files_Rider *r, address *r__typ, SYSTEM_BYTE *x, LONGINT x__len);
export void Files_ReadBytes (Files_Rider *r, address *r__typ, SYSTEM_BYTE *x, LONGINT x__len, int32 n); export void Files_ReadBytes (Files_Rider *r, address *r__typ, SYSTEM_BYTE *x, LONGINT x__len, int32 n);
export void Files_ReadInt (Files_Rider *R, address *R__typ, int16 *x); export void Files_ReadInt (Files_Rider *R, address *R__typ, int16 *x);
export void Files_ReadLInt (Files_Rider *R, address *R__typ, int32 *x); export void Files_ReadLInt (Files_Rider *R, address *R__typ, int32 *x);
@ -673,11 +672,6 @@ void Files_ReadBytes (Files_Rider *r, address *r__typ, SYSTEM_BYTE *x, LONGINT x
(*r).eof = 0; (*r).eof = 0;
} }
void Files_ReadByte (Files_Rider *r, address *r__typ, SYSTEM_BYTE *x, LONGINT x__len)
{
Files_ReadBytes(&*r, r__typ, (void*)x, x__len * 1, 1);
}
Files_File Files_Base (Files_Rider *r, address *r__typ) Files_File Files_Base (Files_Rider *r, address *r__typ)
{ {
Files_File _o_result; Files_File _o_result;

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. tspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. tspaSfF */
#ifndef Files__h #ifndef Files__h
#define Files__h #define Files__h
@ -40,7 +40,6 @@ import int32 Files_Pos (Files_Rider *r, address *r__typ);
import void Files_Purge (Files_File f); import void Files_Purge (Files_File f);
import void Files_Read (Files_Rider *r, address *r__typ, SYSTEM_BYTE *x); import void Files_Read (Files_Rider *r, address *r__typ, SYSTEM_BYTE *x);
import void Files_ReadBool (Files_Rider *R, address *R__typ, BOOLEAN *x); import void Files_ReadBool (Files_Rider *R, address *R__typ, BOOLEAN *x);
import void Files_ReadByte (Files_Rider *r, address *r__typ, SYSTEM_BYTE *x, LONGINT x__len);
import void Files_ReadBytes (Files_Rider *r, address *r__typ, SYSTEM_BYTE *x, LONGINT x__len, int32 n); import void Files_ReadBytes (Files_Rider *r, address *r__typ, SYSTEM_BYTE *x, LONGINT x__len, int32 n);
import void Files_ReadInt (Files_Rider *R, address *R__typ, int16 *x); import void Files_ReadInt (Files_Rider *R, address *R__typ, int16 *x);
import void Files_ReadLInt (Files_Rider *R, address *R__typ, int32 *x); import void Files_ReadLInt (Files_Rider *R, address *R__typ, int32 *x);

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. tsSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. tsSfF */
#define INTEGER int16 #define INTEGER int16
#define LONGINT int32 #define LONGINT int32
@ -39,7 +39,7 @@ typedef
typedef typedef
struct Heap_FinDesc { struct Heap_FinDesc {
Heap_FinNode next; Heap_FinNode next;
address obj; int32 obj;
BOOLEAN marked; BOOLEAN marked;
Heap_Finalizer finalize; Heap_Finalizer finalize;
} Heap_FinDesc; } Heap_FinDesc;
@ -56,19 +56,19 @@ typedef
Heap_ModuleName name; Heap_ModuleName name;
int32 refcnt; int32 refcnt;
Heap_Cmd cmds; Heap_Cmd cmds;
address types; int32 types;
Heap_EnumProc enumPtrs; Heap_EnumProc enumPtrs;
int32 reserved1, reserved2; int32 reserved1, reserved2;
} Heap_ModuleDesc; } Heap_ModuleDesc;
export SYSTEM_PTR Heap_modules; export SYSTEM_PTR Heap_modules;
static address Heap_freeList[10]; static int32 Heap_freeList[10];
static address Heap_bigBlocks; static int32 Heap_bigBlocks;
export address Heap_allocated; export int32 Heap_allocated;
static BOOLEAN Heap_firstTry; static BOOLEAN Heap_firstTry;
static address Heap_heap, Heap_heapend; static int32 Heap_heap, Heap_heapend;
export address Heap_heapsize; export int32 Heap_heapsize;
static Heap_FinNode Heap_fin; static Heap_FinNode Heap_fin;
static int16 Heap_lockdepth; static int16 Heap_lockdepth;
static BOOLEAN Heap_interrupted; static BOOLEAN Heap_interrupted;
@ -80,27 +80,27 @@ export address *Heap_FinDesc__typ;
export address *Heap__1__typ; export address *Heap__1__typ;
static void Heap_CheckFin (void); static void Heap_CheckFin (void);
static void Heap_ExtendHeap (address blksz); static void Heap_ExtendHeap (int32 blksz);
export void Heap_FINALL (void); export void Heap_FINALL (void);
static void Heap_Finalize (void); static void Heap_Finalize (void);
export void Heap_GC (BOOLEAN markStack); export void Heap_GC (BOOLEAN markStack);
static void Heap_HeapSort (address n, address *a, LONGINT a__len); static void Heap_HeapSort (int32 n, int32 *a, LONGINT a__len);
export void Heap_INCREF (Heap_Module m); export void Heap_INCREF (Heap_Module m);
export void Heap_InitHeap (void); export void Heap_InitHeap (void);
export void Heap_Lock (void); export void Heap_Lock (void);
static void Heap_Mark (address q); static void Heap_Mark (int32 q);
static void Heap_MarkCandidates (address n, address *cand, LONGINT cand__len); static void Heap_MarkCandidates (int32 n, int32 *cand, LONGINT cand__len);
static void Heap_MarkP (SYSTEM_PTR p); static void Heap_MarkP (SYSTEM_PTR p);
static void Heap_MarkStack (address n, address *cand, LONGINT cand__len); static void Heap_MarkStack (int32 n, int32 *cand, LONGINT cand__len);
export SYSTEM_PTR Heap_NEWBLK (address size); export SYSTEM_PTR Heap_NEWBLK (int32 size);
export SYSTEM_PTR Heap_NEWREC (address tag); export SYSTEM_PTR Heap_NEWREC (int32 tag);
static address Heap_NewChunk (address blksz); static int32 Heap_NewChunk (int32 blksz);
export void Heap_REGCMD (Heap_Module m, Heap_CmdName name, Heap_Command cmd); export void Heap_REGCMD (Heap_Module m, Heap_CmdName name, Heap_Command cmd);
export SYSTEM_PTR Heap_REGMOD (Heap_ModuleName name, Heap_EnumProc enumPtrs); export SYSTEM_PTR Heap_REGMOD (Heap_ModuleName name, Heap_EnumProc enumPtrs);
export void Heap_REGTYP (Heap_Module m, address typ); export void Heap_REGTYP (Heap_Module m, int32 typ);
export void Heap_RegisterFinalizer (SYSTEM_PTR obj, Heap_Finalizer finalize); export void Heap_RegisterFinalizer (SYSTEM_PTR obj, Heap_Finalizer finalize);
static void Heap_Scan (void); static void Heap_Scan (void);
static void Heap_Sift (address l, address r, address *a, LONGINT a__len); static void Heap_Sift (int32 l, int32 r, int32 *a, LONGINT a__len);
export void Heap_Unlock (void); export void Heap_Unlock (void);
extern void *Heap__init(); extern void *Heap__init();
@ -158,9 +158,9 @@ void Heap_REGCMD (Heap_Module m, Heap_CmdName name, Heap_Command cmd)
m->cmds = c; m->cmds = c;
} }
void Heap_REGTYP (Heap_Module m, address typ) void Heap_REGTYP (Heap_Module m, int32 typ)
{ {
__PUT(typ, m->types, address); __PUT(typ, m->types, int32);
m->types = typ; m->types = typ;
} }
@ -169,17 +169,17 @@ void Heap_INCREF (Heap_Module m)
m->refcnt += 1; m->refcnt += 1;
} }
static address Heap_NewChunk (address blksz) static int32 Heap_NewChunk (int32 blksz)
{ {
address _o_result; int32 _o_result;
address chnk; int32 chnk;
chnk = Heap_OSAllocate(blksz + 12); chnk = Heap_OSAllocate(blksz + 12);
if (chnk != 0) { if (chnk != 0) {
__PUT(chnk + 4, chnk + (12 + blksz), address); __PUT(chnk + 4, chnk + (12 + blksz), int32);
__PUT(chnk + 12, chnk + 16, address); __PUT(chnk + 12, chnk + 16, int32);
__PUT(chnk + 16, blksz, address); __PUT(chnk + 16, blksz, int32);
__PUT(chnk + 20, -4, address); __PUT(chnk + 20, -4, int32);
__PUT(chnk + 24, Heap_bigBlocks, address); __PUT(chnk + 24, Heap_bigBlocks, int32);
Heap_bigBlocks = chnk + 12; Heap_bigBlocks = chnk + 12;
Heap_heapsize += blksz; Heap_heapsize += blksz;
} }
@ -187,9 +187,9 @@ static address Heap_NewChunk (address blksz)
return _o_result; return _o_result;
} }
static void Heap_ExtendHeap (address blksz) static void Heap_ExtendHeap (int32 blksz)
{ {
address size, chnk, j, next; int32 size, chnk, j, next;
if (blksz > 160000) { if (blksz > 160000) {
size = blksz; size = blksz;
} else { } else {
@ -198,31 +198,31 @@ static void Heap_ExtendHeap (address blksz)
chnk = Heap_NewChunk(size); chnk = Heap_NewChunk(size);
if (chnk != 0) { if (chnk != 0) {
if (chnk < Heap_heap) { if (chnk < Heap_heap) {
__PUT(chnk, Heap_heap, address); __PUT(chnk, Heap_heap, int32);
Heap_heap = chnk; Heap_heap = chnk;
} else { } else {
j = Heap_heap; j = Heap_heap;
__GET(j, next, address); __GET(j, next, int32);
while ((next != 0 && chnk > next)) { while ((next != 0 && chnk > next)) {
j = next; j = next;
__GET(j, next, address); __GET(j, next, int32);
} }
__PUT(chnk, next, address); __PUT(chnk, next, int32);
__PUT(j, chnk, address); __PUT(j, chnk, int32);
} }
if (next == 0) { if (next == 0) {
__GET(chnk + 4, Heap_heapend, address); __GET(chnk + 4, Heap_heapend, int32);
} }
} }
} }
SYSTEM_PTR Heap_NEWREC (address tag) SYSTEM_PTR Heap_NEWREC (int32 tag)
{ {
SYSTEM_PTR _o_result; SYSTEM_PTR _o_result;
address i, i0, di, blksz, restsize, t, adr, end, next, prev; int32 i, i0, di, blksz, restsize, t, adr, end, next, prev;
SYSTEM_PTR new; SYSTEM_PTR new;
Heap_Lock(); Heap_Lock();
__GET(tag, blksz, address); __GET(tag, blksz, int32);
i0 = __ASHR(blksz, 4); i0 = __ASHR(blksz, 4);
i = i0; i = i0;
if (i < 9) { if (i < 9) {
@ -233,17 +233,17 @@ SYSTEM_PTR Heap_NEWREC (address tag)
} }
} }
if (i < 9) { if (i < 9) {
__GET(adr + 12, next, address); __GET(adr + 12, next, int32);
Heap_freeList[i] = next; Heap_freeList[i] = next;
if (i != i0) { if (i != i0) {
di = i - i0; di = i - i0;
restsize = __ASHL(di, 4); restsize = __ASHL(di, 4);
end = adr + restsize; end = adr + restsize;
__PUT(end + 4, blksz, address); __PUT(end + 4, blksz, int32);
__PUT(end + 8, -4, address); __PUT(end + 8, -4, int32);
__PUT(end, end + 4, address); __PUT(end, end + 4, int32);
__PUT(adr + 4, restsize, address); __PUT(adr + 4, restsize, int32);
__PUT(adr + 12, Heap_freeList[di], address); __PUT(adr + 12, Heap_freeList[di], int32);
Heap_freeList[di] = adr; Heap_freeList[di] = adr;
adr += restsize; adr += restsize;
} }
@ -274,31 +274,31 @@ SYSTEM_PTR Heap_NEWREC (address tag)
return _o_result; return _o_result;
} }
} }
__GET(adr + 4, t, address); __GET(adr + 4, t, int32);
if (t >= blksz) { if (t >= blksz) {
break; break;
} }
prev = adr; prev = adr;
__GET(adr + 12, adr, address); __GET(adr + 12, adr, int32);
} }
restsize = t - blksz; restsize = t - blksz;
end = adr + restsize; end = adr + restsize;
__PUT(end + 4, blksz, address); __PUT(end + 4, blksz, int32);
__PUT(end + 8, -4, address); __PUT(end + 8, -4, int32);
__PUT(end, end + 4, address); __PUT(end, end + 4, int32);
if (restsize > 144) { if (restsize > 144) {
__PUT(adr + 4, restsize, address); __PUT(adr + 4, restsize, int32);
} else { } else {
__GET(adr + 12, next, address); __GET(adr + 12, next, int32);
if (prev == 0) { if (prev == 0) {
Heap_bigBlocks = next; Heap_bigBlocks = next;
} else { } else {
__PUT(prev + 12, next, address); __PUT(prev + 12, next, int32);
} }
if (restsize > 0) { if (restsize > 0) {
di = __ASHR(restsize, 4); di = __ASHR(restsize, 4);
__PUT(adr + 4, restsize, address); __PUT(adr + 4, restsize, int32);
__PUT(adr + 12, Heap_freeList[di], address); __PUT(adr + 12, Heap_freeList[di], int32);
Heap_freeList[di] = adr; Heap_freeList[di] = adr;
} }
} }
@ -307,72 +307,72 @@ SYSTEM_PTR Heap_NEWREC (address tag)
i = adr + 16; i = adr + 16;
end = adr + blksz; end = adr + blksz;
while (i < end) { while (i < end) {
__PUT(i, 0, address); __PUT(i, 0, int32);
__PUT(i + 4, 0, address); __PUT(i + 4, 0, int32);
__PUT(i + 8, 0, address); __PUT(i + 8, 0, int32);
__PUT(i + 12, 0, address); __PUT(i + 12, 0, int32);
i += 16; i += 16;
} }
__PUT(adr + 12, 0, address); __PUT(adr + 12, 0, int32);
__PUT(adr, tag, address); __PUT(adr, tag, int32);
__PUT(adr + 4, 0, address); __PUT(adr + 4, 0, int32);
__PUT(adr + 8, 0, address); __PUT(adr + 8, 0, int32);
Heap_allocated += blksz; Heap_allocated += blksz;
Heap_Unlock(); Heap_Unlock();
_o_result = (SYSTEM_PTR)(address)(adr + 4); _o_result = (SYSTEM_PTR)(address)(adr + 4);
return _o_result; return _o_result;
} }
SYSTEM_PTR Heap_NEWBLK (address size) SYSTEM_PTR Heap_NEWBLK (int32 size)
{ {
SYSTEM_PTR _o_result; SYSTEM_PTR _o_result;
address blksz, tag; int32 blksz, tag;
SYSTEM_PTR new; SYSTEM_PTR new;
Heap_Lock(); Heap_Lock();
blksz = __ASHL(__ASHR(size + 31, 4), 4); blksz = __ASHL(__ASHR(size + 31, 4), 4);
new = Heap_NEWREC((address)&blksz); new = Heap_NEWREC((address)&blksz);
tag = ((address)(address)new + blksz) - 12; tag = ((int32)(address)new + blksz) - 12;
__PUT(tag - 4, 0, address); __PUT(tag - 4, 0, int32);
__PUT(tag, blksz, address); __PUT(tag, blksz, int32);
__PUT(tag + 4, -4, address); __PUT(tag + 4, -4, int32);
__PUT((address)(address)new - 4, tag, address); __PUT((int32)(address)new - 4, tag, int32);
Heap_Unlock(); Heap_Unlock();
_o_result = new; _o_result = new;
return _o_result; return _o_result;
} }
static void Heap_Mark (address q) static void Heap_Mark (int32 q)
{ {
address p, tag, offset, fld, n, tagbits; int32 p, tag, offset, fld, n, tagbits;
if (q != 0) { if (q != 0) {
__GET(q - 4, tagbits, address); __GET(q - 4, tagbits, int32);
if (!__ODD(tagbits)) { if (!__ODD(tagbits)) {
__PUT(q - 4, tagbits + 1, address); __PUT(q - 4, tagbits + 1, int32);
p = 0; p = 0;
tag = tagbits + 4; tag = tagbits + 4;
for (;;) { for (;;) {
__GET(tag, offset, address); __GET(tag, offset, int32);
if (offset < 0) { if (offset < 0) {
__PUT(q - 4, (tag + offset) + 1, address); __PUT(q - 4, (tag + offset) + 1, int32);
if (p == 0) { if (p == 0) {
break; break;
} }
n = q; n = q;
q = p; q = p;
__GET(q - 4, tag, address); __GET(q - 4, tag, int32);
tag -= 1; tag -= 1;
__GET(tag, offset, address); __GET(tag, offset, int32);
fld = q + offset; fld = q + offset;
__GET(fld, p, address); __GET(fld, p, int32);
__PUT(fld, (SYSTEM_PTR)(address)n, SYSTEM_PTR); __PUT(fld, (SYSTEM_PTR)(address)n, SYSTEM_PTR);
} else { } else {
fld = q + offset; fld = q + offset;
__GET(fld, n, address); __GET(fld, n, int32);
if (n != 0) { if (n != 0) {
__GET(n - 4, tagbits, address); __GET(n - 4, tagbits, int32);
if (!__ODD(tagbits)) { if (!__ODD(tagbits)) {
__PUT(n - 4, tagbits + 1, address); __PUT(n - 4, tagbits + 1, int32);
__PUT(q - 4, tag + 1, address); __PUT(q - 4, tag + 1, int32);
__PUT(fld, (SYSTEM_PTR)(address)p, SYSTEM_PTR); __PUT(fld, (SYSTEM_PTR)(address)p, SYSTEM_PTR);
p = q; p = q;
q = n; q = n;
@ -388,12 +388,12 @@ static void Heap_Mark (address q)
static void Heap_MarkP (SYSTEM_PTR p) static void Heap_MarkP (SYSTEM_PTR p)
{ {
Heap_Mark((address)(address)p); Heap_Mark((int32)(address)p);
} }
static void Heap_Scan (void) static void Heap_Scan (void)
{ {
address chnk, adr, end, start, tag, i, size, freesize; int32 chnk, adr, end, start, tag, i, size, freesize;
Heap_bigBlocks = 0; Heap_bigBlocks = 0;
i = 1; i = 1;
while (i < 9) { while (i < 9) {
@ -405,58 +405,58 @@ static void Heap_Scan (void)
chnk = Heap_heap; chnk = Heap_heap;
while (chnk != 0) { while (chnk != 0) {
adr = chnk + 12; adr = chnk + 12;
__GET(chnk + 4, end, address); __GET(chnk + 4, end, int32);
while (adr < end) { while (adr < end) {
__GET(adr, tag, address); __GET(adr, tag, int32);
if (__ODD(tag)) { if (__ODD(tag)) {
if (freesize > 0) { if (freesize > 0) {
start = adr - freesize; start = adr - freesize;
__PUT(start, start + 4, address); __PUT(start, start + 4, int32);
__PUT(start + 4, freesize, address); __PUT(start + 4, freesize, int32);
__PUT(start + 8, -4, address); __PUT(start + 8, -4, int32);
i = __ASHR(freesize, 4); i = __ASHR(freesize, 4);
freesize = 0; freesize = 0;
if (i < 9) { if (i < 9) {
__PUT(start + 12, Heap_freeList[i], address); __PUT(start + 12, Heap_freeList[i], int32);
Heap_freeList[i] = start; Heap_freeList[i] = start;
} else { } else {
__PUT(start + 12, Heap_bigBlocks, address); __PUT(start + 12, Heap_bigBlocks, int32);
Heap_bigBlocks = start; Heap_bigBlocks = start;
} }
} }
tag -= 1; tag -= 1;
__PUT(adr, tag, address); __PUT(adr, tag, int32);
__GET(tag, size, address); __GET(tag, size, int32);
Heap_allocated += size; Heap_allocated += size;
adr += size; adr += size;
} else { } else {
__GET(tag, size, address); __GET(tag, size, int32);
freesize += size; freesize += size;
adr += size; adr += size;
} }
} }
if (freesize > 0) { if (freesize > 0) {
start = adr - freesize; start = adr - freesize;
__PUT(start, start + 4, address); __PUT(start, start + 4, int32);
__PUT(start + 4, freesize, address); __PUT(start + 4, freesize, int32);
__PUT(start + 8, -4, address); __PUT(start + 8, -4, int32);
i = __ASHR(freesize, 4); i = __ASHR(freesize, 4);
freesize = 0; freesize = 0;
if (i < 9) { if (i < 9) {
__PUT(start + 12, Heap_freeList[i], address); __PUT(start + 12, Heap_freeList[i], int32);
Heap_freeList[i] = start; Heap_freeList[i] = start;
} else { } else {
__PUT(start + 12, Heap_bigBlocks, address); __PUT(start + 12, Heap_bigBlocks, int32);
Heap_bigBlocks = start; Heap_bigBlocks = start;
} }
} }
__GET(chnk, chnk, address); __GET(chnk, chnk, int32);
} }
} }
static void Heap_Sift (address l, address r, address *a, LONGINT a__len) static void Heap_Sift (int32 l, int32 r, int32 *a, LONGINT a__len)
{ {
address i, j, x; int32 i, j, x;
j = l; j = l;
x = a[j]; x = a[j];
for (;;) { for (;;) {
@ -473,9 +473,9 @@ static void Heap_Sift (address l, address r, address *a, LONGINT a__len)
a[i] = x; a[i] = x;
} }
static void Heap_HeapSort (address n, address *a, LONGINT a__len) static void Heap_HeapSort (int32 n, int32 *a, LONGINT a__len)
{ {
address l, r, x; int32 l, r, x;
l = __ASHR(n, 1); l = __ASHR(n, 1);
r = n - 1; r = n - 1;
while (l > 0) { while (l > 0) {
@ -491,25 +491,25 @@ static void Heap_HeapSort (address n, address *a, LONGINT a__len)
} }
} }
static void Heap_MarkCandidates (address n, address *cand, LONGINT cand__len) static void Heap_MarkCandidates (int32 n, int32 *cand, LONGINT cand__len)
{ {
address chnk, adr, tag, next, lim, lim1, i, ptr, size; int32 chnk, adr, tag, next, lim, lim1, i, ptr, size;
chnk = Heap_heap; chnk = Heap_heap;
i = 0; i = 0;
lim = cand[n - 1]; lim = cand[n - 1];
while ((chnk != 0 && chnk < lim)) { while ((chnk != 0 && chnk < lim)) {
adr = chnk + 12; adr = chnk + 12;
__GET(chnk + 4, lim1, address); __GET(chnk + 4, lim1, int32);
if (lim < lim1) { if (lim < lim1) {
lim1 = lim; lim1 = lim;
} }
while (adr < lim1) { while (adr < lim1) {
__GET(adr, tag, address); __GET(adr, tag, int32);
if (__ODD(tag)) { if (__ODD(tag)) {
__GET(tag - 1, size, address); __GET(tag - 1, size, int32);
adr += size; adr += size;
} else { } else {
__GET(tag, size, address); __GET(tag, size, int32);
ptr = adr + 4; ptr = adr + 4;
while (cand[i] < ptr) { while (cand[i] < ptr) {
i += 1; i += 1;
@ -524,17 +524,17 @@ static void Heap_MarkCandidates (address n, address *cand, LONGINT cand__len)
adr = next; adr = next;
} }
} }
__GET(chnk, chnk, address); __GET(chnk, chnk, int32);
} }
} }
static void Heap_CheckFin (void) static void Heap_CheckFin (void)
{ {
Heap_FinNode n; Heap_FinNode n;
address tag; int32 tag;
n = Heap_fin; n = Heap_fin;
while (n != NIL) { while (n != NIL) {
__GET(n->obj - 4, tag, address); __GET(n->obj - 4, tag, int32);
if (!__ODD(tag)) { if (!__ODD(tag)) {
n->marked = 0; n->marked = 0;
Heap_Mark(n->obj); Heap_Mark(n->obj);
@ -580,10 +580,10 @@ void Heap_FINALL (void)
} }
} }
static void Heap_MarkStack (address n, address *cand, LONGINT cand__len) static void Heap_MarkStack (int32 n, int32 *cand, LONGINT cand__len)
{ {
SYSTEM_PTR frame; SYSTEM_PTR frame;
address inc, nofcand, sp, p, stack0; int32 inc, nofcand, sp, p, stack0;
struct Heap__1 align; struct Heap__1 align;
if (n > 0) { if (n > 0) {
Heap_MarkStack(n - 1, cand, cand__len); Heap_MarkStack(n - 1, cand, cand__len);
@ -600,7 +600,7 @@ static void Heap_MarkStack (address n, address *cand, LONGINT cand__len)
inc = -inc; inc = -inc;
} }
while (sp != stack0) { while (sp != stack0) {
__GET(sp, p, address); __GET(sp, p, int32);
if ((p > Heap_heap && p < Heap_heapend)) { if ((p > Heap_heap && p < Heap_heapend)) {
if (nofcand == cand__len) { if (nofcand == cand__len) {
Heap_HeapSort(nofcand, (void*)cand, cand__len); Heap_HeapSort(nofcand, (void*)cand, cand__len);
@ -622,8 +622,8 @@ static void Heap_MarkStack (address n, address *cand, LONGINT cand__len)
void Heap_GC (BOOLEAN markStack) void Heap_GC (BOOLEAN markStack)
{ {
Heap_Module m; Heap_Module m;
address i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23; int32 i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23;
address cand[10000]; int32 cand[10000];
if (Heap_lockdepth == 0 || (Heap_lockdepth == 1 && !markStack)) { if (Heap_lockdepth == 0 || (Heap_lockdepth == 1 && !markStack)) {
Heap_Lock(); Heap_Lock();
m = (Heap_Module)(address)Heap_modules; m = (Heap_Module)(address)Heap_modules;
@ -703,7 +703,7 @@ void Heap_RegisterFinalizer (SYSTEM_PTR obj, Heap_Finalizer finalize)
{ {
Heap_FinNode f; Heap_FinNode f;
__NEW(f, Heap_FinDesc); __NEW(f, Heap_FinDesc);
f->obj = (address)(address)obj; f->obj = (int32)(address)obj;
f->finalize = finalize; f->finalize = finalize;
f->marked = 1; f->marked = 1;
f->next = Heap_fin; f->next = Heap_fin;
@ -713,8 +713,8 @@ void Heap_RegisterFinalizer (SYSTEM_PTR obj, Heap_Finalizer finalize)
void Heap_InitHeap (void) void Heap_InitHeap (void)
{ {
Heap_heap = Heap_NewChunk(128000); Heap_heap = Heap_NewChunk(128000);
__GET(Heap_heap + 4, Heap_heapend, address); __GET(Heap_heap + 4, Heap_heapend, int32);
__PUT(Heap_heap, 0, address); __PUT(Heap_heap, 0, int32);
Heap_allocated = 0; Heap_allocated = 0;
Heap_firstTry = 1; Heap_firstTry = 1;
Heap_freeList[9] = 1; Heap_freeList[9] = 1;

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. tsSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. tsSfF */
#ifndef Heap__h #ifndef Heap__h
#define Heap__h #define Heap__h
@ -31,7 +31,7 @@ typedef
import SYSTEM_PTR Heap_modules; import SYSTEM_PTR Heap_modules;
import address Heap_allocated, Heap_heapsize; import int32 Heap_allocated, Heap_heapsize;
import int16 Heap_FileCount; import int16 Heap_FileCount;
import address *Heap_ModuleDesc__typ; import address *Heap_ModuleDesc__typ;
@ -41,11 +41,11 @@ import void Heap_GC (BOOLEAN markStack);
import void Heap_INCREF (Heap_Module m); import void Heap_INCREF (Heap_Module m);
import void Heap_InitHeap (void); import void Heap_InitHeap (void);
import void Heap_Lock (void); import void Heap_Lock (void);
import SYSTEM_PTR Heap_NEWBLK (address size); import SYSTEM_PTR Heap_NEWBLK (int32 size);
import SYSTEM_PTR Heap_NEWREC (address tag); import SYSTEM_PTR Heap_NEWREC (int32 tag);
import void Heap_REGCMD (Heap_Module m, Heap_CmdName name, Heap_Command cmd); import void Heap_REGCMD (Heap_Module m, Heap_CmdName name, Heap_Command cmd);
import SYSTEM_PTR Heap_REGMOD (Heap_ModuleName name, Heap_EnumProc enumPtrs); import SYSTEM_PTR Heap_REGMOD (Heap_ModuleName name, Heap_EnumProc enumPtrs);
import void Heap_REGTYP (Heap_Module m, address typ); import void Heap_REGTYP (Heap_Module m, int32 typ);
import void Heap_RegisterFinalizer (SYSTEM_PTR obj, Heap_Finalizer finalize); import void Heap_RegisterFinalizer (SYSTEM_PTR obj, Heap_Finalizer finalize);
import void Heap_Unlock (void); import void Heap_Unlock (void);
import void *Heap__init(void); import void *Heap__init(void);

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#define INTEGER int16 #define INTEGER int16
#define LONGINT int32 #define LONGINT int32

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#ifndef Modules__h #ifndef Modules__h
#define Modules__h #define Modules__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#define INTEGER int16 #define INTEGER int16
#define LONGINT int32 #define LONGINT int32
@ -2449,12 +2449,8 @@ void OPB_Param (OPT_Node ap, OPT_Object fp)
OPB_err(111); OPB_err(111);
} }
} else if ((fp->typ == OPT_sysptrtyp && ap->typ->form == 11)) { } else if ((fp->typ == OPT_sysptrtyp && ap->typ->form == 11)) {
} else if (ap->typ != fp->typ) { } else if ((ap->typ != fp->typ && !((((fp->typ->form == 1 && __IN(ap->typ->form, 0x1e, 32))) && ap->typ->size == 1)))) {
if ((fp->typ->form == 1 && ((__IN(ap->typ->form, 0x1e, 32) && ap->typ->size == 1)))) { OPB_err(123);
} else if ((ap->typ == OPT_adrtyp && fp->typ == OPT_IntType(ap->typ->size))) {
} else {
OPB_err(123);
}
} else if ((fp->typ->form == 11 && ap->class == 5)) { } else if ((fp->typ->form == 11 && ap->class == 5)) {
OPB_err(123); OPB_err(123);
} }

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#ifndef OPB__h #ifndef OPB__h
#define OPB__h #define OPB__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#define INTEGER int16 #define INTEGER int16
#define LONGINT int32 #define LONGINT int32

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#ifndef OPC__h #ifndef OPC__h
#define OPC__h #define OPC__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#define INTEGER int16 #define INTEGER int16
#define LONGINT int32 #define LONGINT int32

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#ifndef OPM__h #ifndef OPM__h
#define OPM__h #define OPM__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#define INTEGER int16 #define INTEGER int16
#define LONGINT int32 #define LONGINT int32

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#ifndef OPP__h #ifndef OPP__h
#define OPP__h #define OPP__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. tspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. tspaSfF */
#define INTEGER int16 #define INTEGER int16
#define LONGINT int32 #define LONGINT int32

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. tspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. tspaSfF */
#ifndef OPS__h #ifndef OPS__h
#define OPS__h #define OPS__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#define INTEGER int16 #define INTEGER int16
#define LONGINT int32 #define LONGINT int32

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#ifndef OPT__h #ifndef OPT__h
#define OPT__h #define OPT__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#define INTEGER int16 #define INTEGER int16
#define LONGINT int32 #define LONGINT int32

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#ifndef OPV__h #ifndef OPV__h
#define OPV__h #define OPV__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#define INTEGER int16 #define INTEGER int16
#define LONGINT int32 #define LONGINT int32
@ -13,7 +13,7 @@ typedef
Platform_ArgPtr (*Platform_ArgVec)[1024]; Platform_ArgPtr (*Platform_ArgVec)[1024];
typedef typedef
address (*Platform_ArgVecPtr)[1]; int32 (*Platform_ArgVecPtr)[1];
typedef typedef
CHAR (*Platform_EnvPtr)[1024]; CHAR (*Platform_EnvPtr)[1024];
@ -31,12 +31,12 @@ typedef
export BOOLEAN Platform_LittleEndian; export BOOLEAN Platform_LittleEndian;
export address Platform_MainStackFrame; export int32 Platform_MainStackFrame;
export int32 Platform_HaltCode; export int32 Platform_HaltCode;
export int16 Platform_PID; export int16 Platform_PID;
export CHAR Platform_CWD[256]; export CHAR Platform_CWD[256];
export int16 Platform_ArgCount; export int16 Platform_ArgCount;
export address Platform_ArgVector; export int32 Platform_ArgVector;
static Platform_HaltProcedure Platform_HaltHandler; static Platform_HaltProcedure Platform_HaltHandler;
static int32 Platform_TimeStart; static int32 Platform_TimeStart;
export int16 Platform_SeekSet, Platform_SeekCur, Platform_SeekEnd; export int16 Platform_SeekSet, Platform_SeekCur, Platform_SeekEnd;
@ -64,15 +64,15 @@ export void Platform_Halt (int32 code);
export int16 Platform_Identify (int32 h, Platform_FileIdentity *identity, address *identity__typ); export int16 Platform_Identify (int32 h, Platform_FileIdentity *identity, address *identity__typ);
export int16 Platform_IdentifyByName (CHAR *n, LONGINT n__len, Platform_FileIdentity *identity, address *identity__typ); export int16 Platform_IdentifyByName (CHAR *n, LONGINT n__len, Platform_FileIdentity *identity, address *identity__typ);
export BOOLEAN Platform_Inaccessible (int16 e); export BOOLEAN Platform_Inaccessible (int16 e);
export void Platform_Init (int16 argc, address argvadr); export void Platform_Init (int16 argc, int32 argvadr);
export void Platform_MTimeAsClock (Platform_FileIdentity i, int32 *t, int32 *d); export void Platform_MTimeAsClock (Platform_FileIdentity i, int32 *t, int32 *d);
export int16 Platform_New (CHAR *n, LONGINT n__len, int32 *h); export int16 Platform_New (CHAR *n, LONGINT n__len, int32 *h);
export BOOLEAN Platform_NoSuchDirectory (int16 e); export BOOLEAN Platform_NoSuchDirectory (int16 e);
export address Platform_OSAllocate (address size); export int32 Platform_OSAllocate (int32 size);
export void Platform_OSFree (address address); export void Platform_OSFree (int32 address);
export int16 Platform_OldRO (CHAR *n, LONGINT n__len, int32 *h); export int16 Platform_OldRO (CHAR *n, LONGINT n__len, int32 *h);
export int16 Platform_OldRW (CHAR *n, LONGINT n__len, int32 *h); export int16 Platform_OldRW (CHAR *n, LONGINT n__len, int32 *h);
export int16 Platform_Read (int32 h, address p, int32 l, int32 *n); export int16 Platform_Read (int32 h, int32 p, int32 l, int32 *n);
export int16 Platform_ReadBuf (int32 h, SYSTEM_BYTE *b, LONGINT b__len, int32 *n); export int16 Platform_ReadBuf (int32 h, SYSTEM_BYTE *b, LONGINT b__len, int32 *n);
export int16 Platform_Rename (CHAR *o, LONGINT o__len, CHAR *n, LONGINT n__len); export int16 Platform_Rename (CHAR *o, LONGINT o__len, CHAR *n, LONGINT n__len);
export BOOLEAN Platform_SameFile (Platform_FileIdentity i1, Platform_FileIdentity i2); export BOOLEAN Platform_SameFile (Platform_FileIdentity i1, Platform_FileIdentity i2);
@ -92,7 +92,7 @@ export BOOLEAN Platform_TimedOut (int16 e);
export BOOLEAN Platform_TooManyFiles (int16 e); export BOOLEAN Platform_TooManyFiles (int16 e);
export int16 Platform_Truncate (int32 h, int32 l); export int16 Platform_Truncate (int32 h, int32 l);
export int16 Platform_Unlink (CHAR *n, LONGINT n__len); export int16 Platform_Unlink (CHAR *n, LONGINT n__len);
export int16 Platform_Write (int32 h, address p, int32 l); export int16 Platform_Write (int32 h, int32 p, int32 l);
static void Platform_YMDHMStoClock (int32 ye, int32 mo, int32 da, int32 ho, int32 mi, int32 se, int32 *t, int32 *d); static void Platform_YMDHMStoClock (int32 ye, int32 mo, int32 da, int32 ho, int32 mi, int32 se, int32 *t, int32 *d);
static void Platform_errch (CHAR c); static void Platform_errch (CHAR c);
static void Platform_errint (int32 l); static void Platform_errint (int32 l);
@ -218,19 +218,19 @@ BOOLEAN Platform_ConnectionFailed (int16 e)
return _o_result; return _o_result;
} }
address Platform_OSAllocate (address size) int32 Platform_OSAllocate (int32 size)
{ {
address _o_result; int32 _o_result;
_o_result = Platform_allocate(size); _o_result = Platform_allocate(size);
return _o_result; return _o_result;
} }
void Platform_OSFree (address address) void Platform_OSFree (int32 address)
{ {
Platform_free(address); Platform_free(address);
} }
void Platform_Init (int16 argc, address argvadr) void Platform_Init (int16 argc, int32 argvadr)
{ {
Platform_ArgVecPtr av = NIL; Platform_ArgVecPtr av = NIL;
Platform_MainStackFrame = argvadr; Platform_MainStackFrame = argvadr;
@ -517,7 +517,7 @@ int16 Platform_Size (int32 h, int32 *l)
return _o_result; return _o_result;
} }
int16 Platform_Read (int32 h, address p, int32 l, int32 *n) int16 Platform_Read (int32 h, int32 p, int32 l, int32 *n)
{ {
int16 _o_result; int16 _o_result;
*n = Platform_readfile(h, p, l); *n = Platform_readfile(h, p, l);
@ -547,10 +547,10 @@ int16 Platform_ReadBuf (int32 h, SYSTEM_BYTE *b, LONGINT b__len, int32 *n)
__RETCHK; __RETCHK;
} }
int16 Platform_Write (int32 h, address p, int32 l) int16 Platform_Write (int32 h, int32 p, int32 l)
{ {
int16 _o_result; int16 _o_result;
address written; int32 written;
written = Platform_writefile(h, p, l); written = Platform_writefile(h, p, l);
if (written < 0) { if (written < 0) {
_o_result = Platform_err(); _o_result = Platform_err();

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#ifndef Platform__h #ifndef Platform__h
#define Platform__h #define Platform__h
@ -7,7 +7,8 @@
typedef typedef
struct Platform_FileIdentity { struct Platform_FileIdentity {
int32 volume, index, mtime; int32 _prvt0;
char _prvt1[8];
} Platform_FileIdentity; } Platform_FileIdentity;
typedef typedef
@ -18,12 +19,12 @@ typedef
import BOOLEAN Platform_LittleEndian; import BOOLEAN Platform_LittleEndian;
import address Platform_MainStackFrame; import int32 Platform_MainStackFrame;
import int32 Platform_HaltCode; import int32 Platform_HaltCode;
import int16 Platform_PID; import int16 Platform_PID;
import CHAR Platform_CWD[256]; import CHAR Platform_CWD[256];
import int16 Platform_ArgCount; import int16 Platform_ArgCount;
import address Platform_ArgVector; import int32 Platform_ArgVector;
import int16 Platform_SeekSet, Platform_SeekCur, Platform_SeekEnd; import int16 Platform_SeekSet, Platform_SeekCur, Platform_SeekEnd;
import CHAR Platform_nl[3]; import CHAR Platform_nl[3];
@ -48,15 +49,15 @@ import void Platform_Halt (int32 code);
import int16 Platform_Identify (int32 h, Platform_FileIdentity *identity, address *identity__typ); import int16 Platform_Identify (int32 h, Platform_FileIdentity *identity, address *identity__typ);
import int16 Platform_IdentifyByName (CHAR *n, LONGINT n__len, Platform_FileIdentity *identity, address *identity__typ); import int16 Platform_IdentifyByName (CHAR *n, LONGINT n__len, Platform_FileIdentity *identity, address *identity__typ);
import BOOLEAN Platform_Inaccessible (int16 e); import BOOLEAN Platform_Inaccessible (int16 e);
import void Platform_Init (int16 argc, address argvadr); import void Platform_Init (int16 argc, int32 argvadr);
import void Platform_MTimeAsClock (Platform_FileIdentity i, int32 *t, int32 *d); import void Platform_MTimeAsClock (Platform_FileIdentity i, int32 *t, int32 *d);
import int16 Platform_New (CHAR *n, LONGINT n__len, int32 *h); import int16 Platform_New (CHAR *n, LONGINT n__len, int32 *h);
import BOOLEAN Platform_NoSuchDirectory (int16 e); import BOOLEAN Platform_NoSuchDirectory (int16 e);
import address Platform_OSAllocate (address size); import int32 Platform_OSAllocate (int32 size);
import void Platform_OSFree (address address); import void Platform_OSFree (int32 address);
import int16 Platform_OldRO (CHAR *n, LONGINT n__len, int32 *h); import int16 Platform_OldRO (CHAR *n, LONGINT n__len, int32 *h);
import int16 Platform_OldRW (CHAR *n, LONGINT n__len, int32 *h); import int16 Platform_OldRW (CHAR *n, LONGINT n__len, int32 *h);
import int16 Platform_Read (int32 h, address p, int32 l, int32 *n); import int16 Platform_Read (int32 h, int32 p, int32 l, int32 *n);
import int16 Platform_ReadBuf (int32 h, SYSTEM_BYTE *b, LONGINT b__len, int32 *n); import int16 Platform_ReadBuf (int32 h, SYSTEM_BYTE *b, LONGINT b__len, int32 *n);
import int16 Platform_Rename (CHAR *o, LONGINT o__len, CHAR *n, LONGINT n__len); import int16 Platform_Rename (CHAR *o, LONGINT o__len, CHAR *n, LONGINT n__len);
import BOOLEAN Platform_SameFile (Platform_FileIdentity i1, Platform_FileIdentity i2); import BOOLEAN Platform_SameFile (Platform_FileIdentity i1, Platform_FileIdentity i2);
@ -75,7 +76,7 @@ import BOOLEAN Platform_TimedOut (int16 e);
import BOOLEAN Platform_TooManyFiles (int16 e); import BOOLEAN Platform_TooManyFiles (int16 e);
import int16 Platform_Truncate (int32 h, int32 l); import int16 Platform_Truncate (int32 h, int32 l);
import int16 Platform_Unlink (CHAR *n, LONGINT n__len); import int16 Platform_Unlink (CHAR *n, LONGINT n__len);
import int16 Platform_Write (int32 h, address p, int32 l); import int16 Platform_Write (int32 h, int32 p, int32 l);
import BOOLEAN Platform_getEnv (CHAR *var, LONGINT var__len, CHAR *val, LONGINT val__len); import BOOLEAN Platform_getEnv (CHAR *var, LONGINT var__len, CHAR *val, LONGINT val__len);
import void *Platform__init(void); import void *Platform__init(void);

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#define INTEGER int16 #define INTEGER int16
#define LONGINT int32 #define LONGINT int32

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#ifndef Reals__h #ifndef Reals__h
#define Reals__h #define Reals__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#define INTEGER int16 #define INTEGER int16
#define LONGINT int32 #define LONGINT int32

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#ifndef Strings__h #ifndef Strings__h
#define Strings__h #define Strings__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#define INTEGER int16 #define INTEGER int16
#define LONGINT int32 #define LONGINT int32

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#ifndef Texts__h #ifndef Texts__h
#define Texts__h #define Texts__h

View file

@ -1,171 +0,0 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspamSf */
#define INTEGER int16
#define LONGINT int32
#define SET uint32
#include "SYSTEM.h"
#include "Configuration.h"
#include "Heap.h"
#include "OPB.h"
#include "OPC.h"
#include "OPM.h"
#include "OPP.h"
#include "OPT.h"
#include "OPV.h"
#include "Platform.h"
#include "Strings.h"
#include "extTools.h"
#include "vt100.h"
static CHAR Vishap_mname[256];
export void Vishap_Module (BOOLEAN *done);
static void Vishap_PropagateElementaryTypeSizes (void);
export void Vishap_Translate (void);
static void Vishap_Trap (int16 sig);
void Vishap_Module (BOOLEAN *done)
{
BOOLEAN ext, new;
OPT_Node p = NIL;
OPP_Module(&p, OPM_opt);
if (OPM_noerr) {
OPV_Init();
OPT_InitRecno();
OPV_AdrAndSize(OPT_topScope);
OPT_Export(&ext, &new);
if (OPM_noerr) {
OPM_OpenFiles((void*)OPT_SelfName, 256);
OPC_Init();
OPV_Module(p);
if (OPM_noerr) {
if ((__IN(10, OPM_opt, 32) && __STRCMP(OPM_modName, "SYSTEM") != 0)) {
OPM_DeleteNewSym();
if (!__IN(16, OPM_opt, 32)) {
vt100_SetAttr((CHAR*)"32m", 4);
}
OPM_LogWStr((CHAR*)" Main program.", 16);
if (!__IN(16, OPM_opt, 32)) {
vt100_SetAttr((CHAR*)"0m", 3);
}
} else {
if (new) {
if (!__IN(16, OPM_opt, 32)) {
vt100_SetAttr((CHAR*)"32m", 4);
}
OPM_LogWStr((CHAR*)" New symbol file.", 19);
if (!__IN(16, OPM_opt, 32)) {
vt100_SetAttr((CHAR*)"0m", 3);
}
OPM_RegisterNewSym();
} else if (ext) {
OPM_LogWStr((CHAR*)" Extended symbol file.", 24);
OPM_RegisterNewSym();
}
}
} else {
OPM_DeleteNewSym();
}
}
}
OPM_CloseFiles();
OPT_Close();
OPM_LogWLn();
*done = OPM_noerr;
}
static void Vishap_PropagateElementaryTypeSizes (void)
{
OPT_sysptrtyp->size = OPM_AddressSize;
OPT_adrtyp->size = OPM_AddressSize;
OPT_settyp->size = OPM_SetSize;
OPT_sinttyp = OPT_IntType(OPM_ShortintSize);
OPT_inttyp = OPT_IntType(OPM_IntegerSize);
OPT_linttyp = OPT_IntType(OPM_LongintSize);
OPT_sintobj->typ = OPT_sinttyp;
OPT_intobj->typ = OPT_inttyp;
OPT_lintobj->typ = OPT_linttyp;
}
void Vishap_Translate (void)
{
BOOLEAN done;
CHAR modulesobj[2048];
modulesobj[0] = 0x00;
if (OPM_OpenPar()) {
for (;;) {
OPM_Init(&done, (void*)Vishap_mname, 256);
if (!done) {
return;
}
OPM_InitOptions();
Vishap_PropagateElementaryTypeSizes();
Heap_GC(0);
Vishap_Module(&done);
if (!done) {
OPM_LogWLn();
OPM_LogWStr((CHAR*)"Module compilation failed.", 27);
OPM_LogWLn();
Platform_Exit(1);
}
if (!__IN(13, OPM_opt, 32)) {
if (__IN(14, OPM_opt, 32)) {
extTools_Assemble(OPM_modName, 32);
} else {
if (!__IN(10, OPM_opt, 32)) {
extTools_Assemble(OPM_modName, 32);
Strings_Append((CHAR*)" ", 2, (void*)modulesobj, 2048);
Strings_Append(OPM_modName, 32, (void*)modulesobj, 2048);
Strings_Append((CHAR*)".o", 3, (void*)modulesobj, 2048);
} else {
extTools_LinkMain((void*)OPM_modName, 32, __IN(15, OPM_opt, 32), modulesobj, 2048);
}
}
}
}
}
}
static void Vishap_Trap (int16 sig)
{
Heap_FINALL();
if (sig == 3) {
Platform_Exit(0);
} else {
if ((sig == 4 && Platform_HaltCode == -15)) {
OPM_LogWStr((CHAR*)" --- Vishap Oberon: internal error", 35);
OPM_LogWLn();
}
Platform_Exit(2);
}
}
export int main(int argc, char **argv)
{
__INIT(argc, argv);
__MODULE_IMPORT(Configuration);
__MODULE_IMPORT(Heap);
__MODULE_IMPORT(OPB);
__MODULE_IMPORT(OPC);
__MODULE_IMPORT(OPM);
__MODULE_IMPORT(OPP);
__MODULE_IMPORT(OPT);
__MODULE_IMPORT(OPV);
__MODULE_IMPORT(Platform);
__MODULE_IMPORT(Strings);
__MODULE_IMPORT(extTools);
__MODULE_IMPORT(vt100);
__REGMAIN("Vishap", 0);
__REGCMD("Translate", Vishap_Translate);
/* BEGIN */
Platform_SetInterruptHandler(Vishap_Trap);
Platform_SetQuitHandler(Vishap_Trap);
Platform_SetBadInstructionHandler(Vishap_Trap);
Vishap_Translate();
__FINI;
}

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#define INTEGER int16 #define INTEGER int16
#define LONGINT int32 #define LONGINT int32

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#ifndef errors__h #ifndef errors__h
#define errors__h #define errors__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#define INTEGER int16 #define INTEGER int16
#define LONGINT int32 #define LONGINT int32

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#ifndef extTools__h #ifndef extTools__h
#define extTools__h #define extTools__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#define INTEGER int16 #define INTEGER int16
#define LONGINT int32 #define LONGINT int32

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#ifndef vt100__h #ifndef vt100__h
#define vt100__h #define vt100__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#define INTEGER int16 #define INTEGER int16
#define LONGINT int32 #define LONGINT int32
@ -18,6 +18,6 @@ export void *Configuration__init(void)
__DEFMOD; __DEFMOD;
__REGMOD("Configuration", 0); __REGMOD("Configuration", 0);
/* BEGIN */ /* BEGIN */
__MOVE("1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8.", Configuration_versionLong, 75); __MOVE("1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8.", Configuration_versionLong, 75);
__ENDMOD; __ENDMOD;
} }

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#ifndef Configuration__h #ifndef Configuration__h
#define Configuration__h #define Configuration__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#define INTEGER int16 #define INTEGER int16
#define LONGINT int32 #define LONGINT int32

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#ifndef Console__h #ifndef Console__h
#define Console__h #define Console__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. tspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. tspaSfF */
#define INTEGER int16 #define INTEGER int16
#define LONGINT int32 #define LONGINT int32
@ -83,7 +83,6 @@ export int32 Files_Pos (Files_Rider *r, address *r__typ);
export void Files_Purge (Files_File f); export void Files_Purge (Files_File f);
export void Files_Read (Files_Rider *r, address *r__typ, SYSTEM_BYTE *x); export void Files_Read (Files_Rider *r, address *r__typ, SYSTEM_BYTE *x);
export void Files_ReadBool (Files_Rider *R, address *R__typ, BOOLEAN *x); export void Files_ReadBool (Files_Rider *R, address *R__typ, BOOLEAN *x);
export void Files_ReadByte (Files_Rider *r, address *r__typ, SYSTEM_BYTE *x, LONGINT x__len);
export void Files_ReadBytes (Files_Rider *r, address *r__typ, SYSTEM_BYTE *x, LONGINT x__len, int32 n); export void Files_ReadBytes (Files_Rider *r, address *r__typ, SYSTEM_BYTE *x, LONGINT x__len, int32 n);
export void Files_ReadInt (Files_Rider *R, address *R__typ, int16 *x); export void Files_ReadInt (Files_Rider *R, address *R__typ, int16 *x);
export void Files_ReadLInt (Files_Rider *R, address *R__typ, int32 *x); export void Files_ReadLInt (Files_Rider *R, address *R__typ, int32 *x);
@ -673,11 +672,6 @@ void Files_ReadBytes (Files_Rider *r, address *r__typ, SYSTEM_BYTE *x, LONGINT x
(*r).eof = 0; (*r).eof = 0;
} }
void Files_ReadByte (Files_Rider *r, address *r__typ, SYSTEM_BYTE *x, LONGINT x__len)
{
Files_ReadBytes(&*r, r__typ, (void*)x, x__len * 1, 1);
}
Files_File Files_Base (Files_Rider *r, address *r__typ) Files_File Files_Base (Files_Rider *r, address *r__typ)
{ {
Files_File _o_result; Files_File _o_result;

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. tspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. tspaSfF */
#ifndef Files__h #ifndef Files__h
#define Files__h #define Files__h
@ -42,7 +42,6 @@ import int32 Files_Pos (Files_Rider *r, address *r__typ);
import void Files_Purge (Files_File f); import void Files_Purge (Files_File f);
import void Files_Read (Files_Rider *r, address *r__typ, SYSTEM_BYTE *x); import void Files_Read (Files_Rider *r, address *r__typ, SYSTEM_BYTE *x);
import void Files_ReadBool (Files_Rider *R, address *R__typ, BOOLEAN *x); import void Files_ReadBool (Files_Rider *R, address *R__typ, BOOLEAN *x);
import void Files_ReadByte (Files_Rider *r, address *r__typ, SYSTEM_BYTE *x, LONGINT x__len);
import void Files_ReadBytes (Files_Rider *r, address *r__typ, SYSTEM_BYTE *x, LONGINT x__len, int32 n); import void Files_ReadBytes (Files_Rider *r, address *r__typ, SYSTEM_BYTE *x, LONGINT x__len, int32 n);
import void Files_ReadInt (Files_Rider *R, address *R__typ, int16 *x); import void Files_ReadInt (Files_Rider *R, address *R__typ, int16 *x);
import void Files_ReadLInt (Files_Rider *R, address *R__typ, int32 *x); import void Files_ReadLInt (Files_Rider *R, address *R__typ, int32 *x);

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. tsSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. tsSfF */
#define INTEGER int16 #define INTEGER int16
#define LONGINT int32 #define LONGINT int32
@ -39,7 +39,7 @@ typedef
typedef typedef
struct Heap_FinDesc { struct Heap_FinDesc {
Heap_FinNode next; Heap_FinNode next;
address obj; int64 obj;
BOOLEAN marked; BOOLEAN marked;
Heap_Finalizer finalize; Heap_Finalizer finalize;
} Heap_FinDesc; } Heap_FinDesc;
@ -56,19 +56,19 @@ typedef
Heap_ModuleName name; Heap_ModuleName name;
int32 refcnt; int32 refcnt;
Heap_Cmd cmds; Heap_Cmd cmds;
address types; int64 types;
Heap_EnumProc enumPtrs; Heap_EnumProc enumPtrs;
int32 reserved1, reserved2; int32 reserved1, reserved2;
} Heap_ModuleDesc; } Heap_ModuleDesc;
export SYSTEM_PTR Heap_modules; export SYSTEM_PTR Heap_modules;
static address Heap_freeList[10]; static int64 Heap_freeList[10];
static address Heap_bigBlocks; static int64 Heap_bigBlocks;
export address Heap_allocated; export int64 Heap_allocated;
static BOOLEAN Heap_firstTry; static BOOLEAN Heap_firstTry;
static address Heap_heap, Heap_heapend; static int64 Heap_heap, Heap_heapend;
export address Heap_heapsize; export int64 Heap_heapsize;
static Heap_FinNode Heap_fin; static Heap_FinNode Heap_fin;
static int16 Heap_lockdepth; static int16 Heap_lockdepth;
static BOOLEAN Heap_interrupted; static BOOLEAN Heap_interrupted;
@ -80,27 +80,27 @@ export address *Heap_FinDesc__typ;
export address *Heap__1__typ; export address *Heap__1__typ;
static void Heap_CheckFin (void); static void Heap_CheckFin (void);
static void Heap_ExtendHeap (address blksz); static void Heap_ExtendHeap (int64 blksz);
export void Heap_FINALL (void); export void Heap_FINALL (void);
static void Heap_Finalize (void); static void Heap_Finalize (void);
export void Heap_GC (BOOLEAN markStack); export void Heap_GC (BOOLEAN markStack);
static void Heap_HeapSort (address n, address *a, LONGINT a__len); static void Heap_HeapSort (int64 n, int64 *a, LONGINT a__len);
export void Heap_INCREF (Heap_Module m); export void Heap_INCREF (Heap_Module m);
export void Heap_InitHeap (void); export void Heap_InitHeap (void);
export void Heap_Lock (void); export void Heap_Lock (void);
static void Heap_Mark (address q); static void Heap_Mark (int64 q);
static void Heap_MarkCandidates (address n, address *cand, LONGINT cand__len); static void Heap_MarkCandidates (int64 n, int64 *cand, LONGINT cand__len);
static void Heap_MarkP (SYSTEM_PTR p); static void Heap_MarkP (SYSTEM_PTR p);
static void Heap_MarkStack (address n, address *cand, LONGINT cand__len); static void Heap_MarkStack (int64 n, int64 *cand, LONGINT cand__len);
export SYSTEM_PTR Heap_NEWBLK (address size); export SYSTEM_PTR Heap_NEWBLK (int64 size);
export SYSTEM_PTR Heap_NEWREC (address tag); export SYSTEM_PTR Heap_NEWREC (int64 tag);
static address Heap_NewChunk (address blksz); static int64 Heap_NewChunk (int64 blksz);
export void Heap_REGCMD (Heap_Module m, Heap_CmdName name, Heap_Command cmd); export void Heap_REGCMD (Heap_Module m, Heap_CmdName name, Heap_Command cmd);
export SYSTEM_PTR Heap_REGMOD (Heap_ModuleName name, Heap_EnumProc enumPtrs); export SYSTEM_PTR Heap_REGMOD (Heap_ModuleName name, Heap_EnumProc enumPtrs);
export void Heap_REGTYP (Heap_Module m, address typ); export void Heap_REGTYP (Heap_Module m, int64 typ);
export void Heap_RegisterFinalizer (SYSTEM_PTR obj, Heap_Finalizer finalize); export void Heap_RegisterFinalizer (SYSTEM_PTR obj, Heap_Finalizer finalize);
static void Heap_Scan (void); static void Heap_Scan (void);
static void Heap_Sift (address l, address r, address *a, LONGINT a__len); static void Heap_Sift (int64 l, int64 r, int64 *a, LONGINT a__len);
export void Heap_Unlock (void); export void Heap_Unlock (void);
extern void *Heap__init(); extern void *Heap__init();
@ -158,9 +158,9 @@ void Heap_REGCMD (Heap_Module m, Heap_CmdName name, Heap_Command cmd)
m->cmds = c; m->cmds = c;
} }
void Heap_REGTYP (Heap_Module m, address typ) void Heap_REGTYP (Heap_Module m, int64 typ)
{ {
__PUT(typ, m->types, address); __PUT(typ, m->types, int64);
m->types = typ; m->types = typ;
} }
@ -169,17 +169,17 @@ void Heap_INCREF (Heap_Module m)
m->refcnt += 1; m->refcnt += 1;
} }
static address Heap_NewChunk (address blksz) static int64 Heap_NewChunk (int64 blksz)
{ {
address _o_result; int64 _o_result;
address chnk; int64 chnk;
chnk = Heap_OSAllocate(blksz + 24); chnk = Heap_OSAllocate(blksz + 24);
if (chnk != 0) { if (chnk != 0) {
__PUT(chnk + 8, chnk + (24 + blksz), address); __PUT(chnk + 8, chnk + (24 + blksz), int64);
__PUT(chnk + 24, chnk + 32, address); __PUT(chnk + 24, chnk + 32, int64);
__PUT(chnk + 32, blksz, address); __PUT(chnk + 32, blksz, int64);
__PUT(chnk + 40, -8, address); __PUT(chnk + 40, -8, int64);
__PUT(chnk + 48, Heap_bigBlocks, address); __PUT(chnk + 48, Heap_bigBlocks, int64);
Heap_bigBlocks = chnk + 24; Heap_bigBlocks = chnk + 24;
Heap_heapsize += blksz; Heap_heapsize += blksz;
} }
@ -187,9 +187,9 @@ static address Heap_NewChunk (address blksz)
return _o_result; return _o_result;
} }
static void Heap_ExtendHeap (address blksz) static void Heap_ExtendHeap (int64 blksz)
{ {
address size, chnk, j, next; int64 size, chnk, j, next;
if (blksz > 320000) { if (blksz > 320000) {
size = blksz; size = blksz;
} else { } else {
@ -198,31 +198,31 @@ static void Heap_ExtendHeap (address blksz)
chnk = Heap_NewChunk(size); chnk = Heap_NewChunk(size);
if (chnk != 0) { if (chnk != 0) {
if (chnk < Heap_heap) { if (chnk < Heap_heap) {
__PUT(chnk, Heap_heap, address); __PUT(chnk, Heap_heap, int64);
Heap_heap = chnk; Heap_heap = chnk;
} else { } else {
j = Heap_heap; j = Heap_heap;
__GET(j, next, address); __GET(j, next, int64);
while ((next != 0 && chnk > next)) { while ((next != 0 && chnk > next)) {
j = next; j = next;
__GET(j, next, address); __GET(j, next, int64);
} }
__PUT(chnk, next, address); __PUT(chnk, next, int64);
__PUT(j, chnk, address); __PUT(j, chnk, int64);
} }
if (next == 0) { if (next == 0) {
__GET(chnk + 8, Heap_heapend, address); __GET(chnk + 8, Heap_heapend, int64);
} }
} }
} }
SYSTEM_PTR Heap_NEWREC (address tag) SYSTEM_PTR Heap_NEWREC (int64 tag)
{ {
SYSTEM_PTR _o_result; SYSTEM_PTR _o_result;
address i, i0, di, blksz, restsize, t, adr, end, next, prev; int64 i, i0, di, blksz, restsize, t, adr, end, next, prev;
SYSTEM_PTR new; SYSTEM_PTR new;
Heap_Lock(); Heap_Lock();
__GET(tag, blksz, address); __GET(tag, blksz, int64);
i0 = __ASHR(blksz, 5); i0 = __ASHR(blksz, 5);
i = i0; i = i0;
if (i < 9) { if (i < 9) {
@ -233,17 +233,17 @@ SYSTEM_PTR Heap_NEWREC (address tag)
} }
} }
if (i < 9) { if (i < 9) {
__GET(adr + 24, next, address); __GET(adr + 24, next, int64);
Heap_freeList[i] = next; Heap_freeList[i] = next;
if (i != i0) { if (i != i0) {
di = i - i0; di = i - i0;
restsize = __ASHL(di, 5); restsize = __ASHL(di, 5);
end = adr + restsize; end = adr + restsize;
__PUT(end + 8, blksz, address); __PUT(end + 8, blksz, int64);
__PUT(end + 16, -8, address); __PUT(end + 16, -8, int64);
__PUT(end, end + 8, address); __PUT(end, end + 8, int64);
__PUT(adr + 8, restsize, address); __PUT(adr + 8, restsize, int64);
__PUT(adr + 24, Heap_freeList[di], address); __PUT(adr + 24, Heap_freeList[di], int64);
Heap_freeList[di] = adr; Heap_freeList[di] = adr;
adr += restsize; adr += restsize;
} }
@ -274,31 +274,31 @@ SYSTEM_PTR Heap_NEWREC (address tag)
return _o_result; return _o_result;
} }
} }
__GET(adr + 8, t, address); __GET(adr + 8, t, int64);
if (t >= blksz) { if (t >= blksz) {
break; break;
} }
prev = adr; prev = adr;
__GET(adr + 24, adr, address); __GET(adr + 24, adr, int64);
} }
restsize = t - blksz; restsize = t - blksz;
end = adr + restsize; end = adr + restsize;
__PUT(end + 8, blksz, address); __PUT(end + 8, blksz, int64);
__PUT(end + 16, -8, address); __PUT(end + 16, -8, int64);
__PUT(end, end + 8, address); __PUT(end, end + 8, int64);
if (restsize > 288) { if (restsize > 288) {
__PUT(adr + 8, restsize, address); __PUT(adr + 8, restsize, int64);
} else { } else {
__GET(adr + 24, next, address); __GET(adr + 24, next, int64);
if (prev == 0) { if (prev == 0) {
Heap_bigBlocks = next; Heap_bigBlocks = next;
} else { } else {
__PUT(prev + 24, next, address); __PUT(prev + 24, next, int64);
} }
if (restsize > 0) { if (restsize > 0) {
di = __ASHR(restsize, 5); di = __ASHR(restsize, 5);
__PUT(adr + 8, restsize, address); __PUT(adr + 8, restsize, int64);
__PUT(adr + 24, Heap_freeList[di], address); __PUT(adr + 24, Heap_freeList[di], int64);
Heap_freeList[di] = adr; Heap_freeList[di] = adr;
} }
} }
@ -307,72 +307,72 @@ SYSTEM_PTR Heap_NEWREC (address tag)
i = adr + 32; i = adr + 32;
end = adr + blksz; end = adr + blksz;
while (i < end) { while (i < end) {
__PUT(i, 0, address); __PUT(i, 0, int64);
__PUT(i + 8, 0, address); __PUT(i + 8, 0, int64);
__PUT(i + 16, 0, address); __PUT(i + 16, 0, int64);
__PUT(i + 24, 0, address); __PUT(i + 24, 0, int64);
i += 32; i += 32;
} }
__PUT(adr + 24, 0, address); __PUT(adr + 24, 0, int64);
__PUT(adr, tag, address); __PUT(adr, tag, int64);
__PUT(adr + 8, 0, address); __PUT(adr + 8, 0, int64);
__PUT(adr + 16, 0, address); __PUT(adr + 16, 0, int64);
Heap_allocated += blksz; Heap_allocated += blksz;
Heap_Unlock(); Heap_Unlock();
_o_result = (SYSTEM_PTR)(address)(adr + 8); _o_result = (SYSTEM_PTR)(address)(adr + 8);
return _o_result; return _o_result;
} }
SYSTEM_PTR Heap_NEWBLK (address size) SYSTEM_PTR Heap_NEWBLK (int64 size)
{ {
SYSTEM_PTR _o_result; SYSTEM_PTR _o_result;
address blksz, tag; int64 blksz, tag;
SYSTEM_PTR new; SYSTEM_PTR new;
Heap_Lock(); Heap_Lock();
blksz = __ASHL(__ASHR(size + 63, 5), 5); blksz = __ASHL(__ASHR(size + 63, 5), 5);
new = Heap_NEWREC((address)&blksz); new = Heap_NEWREC((address)&blksz);
tag = ((address)(address)new + blksz) - 24; tag = ((int64)(address)new + blksz) - 24;
__PUT(tag - 8, 0, address); __PUT(tag - 8, 0, int64);
__PUT(tag, blksz, address); __PUT(tag, blksz, int64);
__PUT(tag + 8, -8, address); __PUT(tag + 8, -8, int64);
__PUT((address)(address)new - 8, tag, address); __PUT((int64)(address)new - 8, tag, int64);
Heap_Unlock(); Heap_Unlock();
_o_result = new; _o_result = new;
return _o_result; return _o_result;
} }
static void Heap_Mark (address q) static void Heap_Mark (int64 q)
{ {
address p, tag, offset, fld, n, tagbits; int64 p, tag, offset, fld, n, tagbits;
if (q != 0) { if (q != 0) {
__GET(q - 8, tagbits, address); __GET(q - 8, tagbits, int64);
if (!__ODD(tagbits)) { if (!__ODD(tagbits)) {
__PUT(q - 8, tagbits + 1, address); __PUT(q - 8, tagbits + 1, int64);
p = 0; p = 0;
tag = tagbits + 8; tag = tagbits + 8;
for (;;) { for (;;) {
__GET(tag, offset, address); __GET(tag, offset, int64);
if (offset < 0) { if (offset < 0) {
__PUT(q - 8, (tag + offset) + 1, address); __PUT(q - 8, (tag + offset) + 1, int64);
if (p == 0) { if (p == 0) {
break; break;
} }
n = q; n = q;
q = p; q = p;
__GET(q - 8, tag, address); __GET(q - 8, tag, int64);
tag -= 1; tag -= 1;
__GET(tag, offset, address); __GET(tag, offset, int64);
fld = q + offset; fld = q + offset;
__GET(fld, p, address); __GET(fld, p, int64);
__PUT(fld, (SYSTEM_PTR)(address)n, SYSTEM_PTR); __PUT(fld, (SYSTEM_PTR)(address)n, SYSTEM_PTR);
} else { } else {
fld = q + offset; fld = q + offset;
__GET(fld, n, address); __GET(fld, n, int64);
if (n != 0) { if (n != 0) {
__GET(n - 8, tagbits, address); __GET(n - 8, tagbits, int64);
if (!__ODD(tagbits)) { if (!__ODD(tagbits)) {
__PUT(n - 8, tagbits + 1, address); __PUT(n - 8, tagbits + 1, int64);
__PUT(q - 8, tag + 1, address); __PUT(q - 8, tag + 1, int64);
__PUT(fld, (SYSTEM_PTR)(address)p, SYSTEM_PTR); __PUT(fld, (SYSTEM_PTR)(address)p, SYSTEM_PTR);
p = q; p = q;
q = n; q = n;
@ -388,12 +388,12 @@ static void Heap_Mark (address q)
static void Heap_MarkP (SYSTEM_PTR p) static void Heap_MarkP (SYSTEM_PTR p)
{ {
Heap_Mark((address)(address)p); Heap_Mark((int64)(address)p);
} }
static void Heap_Scan (void) static void Heap_Scan (void)
{ {
address chnk, adr, end, start, tag, i, size, freesize; int64 chnk, adr, end, start, tag, i, size, freesize;
Heap_bigBlocks = 0; Heap_bigBlocks = 0;
i = 1; i = 1;
while (i < 9) { while (i < 9) {
@ -405,58 +405,58 @@ static void Heap_Scan (void)
chnk = Heap_heap; chnk = Heap_heap;
while (chnk != 0) { while (chnk != 0) {
adr = chnk + 24; adr = chnk + 24;
__GET(chnk + 8, end, address); __GET(chnk + 8, end, int64);
while (adr < end) { while (adr < end) {
__GET(adr, tag, address); __GET(adr, tag, int64);
if (__ODD(tag)) { if (__ODD(tag)) {
if (freesize > 0) { if (freesize > 0) {
start = adr - freesize; start = adr - freesize;
__PUT(start, start + 8, address); __PUT(start, start + 8, int64);
__PUT(start + 8, freesize, address); __PUT(start + 8, freesize, int64);
__PUT(start + 16, -8, address); __PUT(start + 16, -8, int64);
i = __ASHR(freesize, 5); i = __ASHR(freesize, 5);
freesize = 0; freesize = 0;
if (i < 9) { if (i < 9) {
__PUT(start + 24, Heap_freeList[i], address); __PUT(start + 24, Heap_freeList[i], int64);
Heap_freeList[i] = start; Heap_freeList[i] = start;
} else { } else {
__PUT(start + 24, Heap_bigBlocks, address); __PUT(start + 24, Heap_bigBlocks, int64);
Heap_bigBlocks = start; Heap_bigBlocks = start;
} }
} }
tag -= 1; tag -= 1;
__PUT(adr, tag, address); __PUT(adr, tag, int64);
__GET(tag, size, address); __GET(tag, size, int64);
Heap_allocated += size; Heap_allocated += size;
adr += size; adr += size;
} else { } else {
__GET(tag, size, address); __GET(tag, size, int64);
freesize += size; freesize += size;
adr += size; adr += size;
} }
} }
if (freesize > 0) { if (freesize > 0) {
start = adr - freesize; start = adr - freesize;
__PUT(start, start + 8, address); __PUT(start, start + 8, int64);
__PUT(start + 8, freesize, address); __PUT(start + 8, freesize, int64);
__PUT(start + 16, -8, address); __PUT(start + 16, -8, int64);
i = __ASHR(freesize, 5); i = __ASHR(freesize, 5);
freesize = 0; freesize = 0;
if (i < 9) { if (i < 9) {
__PUT(start + 24, Heap_freeList[i], address); __PUT(start + 24, Heap_freeList[i], int64);
Heap_freeList[i] = start; Heap_freeList[i] = start;
} else { } else {
__PUT(start + 24, Heap_bigBlocks, address); __PUT(start + 24, Heap_bigBlocks, int64);
Heap_bigBlocks = start; Heap_bigBlocks = start;
} }
} }
__GET(chnk, chnk, address); __GET(chnk, chnk, int64);
} }
} }
static void Heap_Sift (address l, address r, address *a, LONGINT a__len) static void Heap_Sift (int64 l, int64 r, int64 *a, LONGINT a__len)
{ {
address i, j, x; int64 i, j, x;
j = l; j = l;
x = a[j]; x = a[j];
for (;;) { for (;;) {
@ -473,9 +473,9 @@ static void Heap_Sift (address l, address r, address *a, LONGINT a__len)
a[i] = x; a[i] = x;
} }
static void Heap_HeapSort (address n, address *a, LONGINT a__len) static void Heap_HeapSort (int64 n, int64 *a, LONGINT a__len)
{ {
address l, r, x; int64 l, r, x;
l = __ASHR(n, 1); l = __ASHR(n, 1);
r = n - 1; r = n - 1;
while (l > 0) { while (l > 0) {
@ -491,25 +491,25 @@ static void Heap_HeapSort (address n, address *a, LONGINT a__len)
} }
} }
static void Heap_MarkCandidates (address n, address *cand, LONGINT cand__len) static void Heap_MarkCandidates (int64 n, int64 *cand, LONGINT cand__len)
{ {
address chnk, adr, tag, next, lim, lim1, i, ptr, size; int64 chnk, adr, tag, next, lim, lim1, i, ptr, size;
chnk = Heap_heap; chnk = Heap_heap;
i = 0; i = 0;
lim = cand[n - 1]; lim = cand[n - 1];
while ((chnk != 0 && chnk < lim)) { while ((chnk != 0 && chnk < lim)) {
adr = chnk + 24; adr = chnk + 24;
__GET(chnk + 8, lim1, address); __GET(chnk + 8, lim1, int64);
if (lim < lim1) { if (lim < lim1) {
lim1 = lim; lim1 = lim;
} }
while (adr < lim1) { while (adr < lim1) {
__GET(adr, tag, address); __GET(adr, tag, int64);
if (__ODD(tag)) { if (__ODD(tag)) {
__GET(tag - 1, size, address); __GET(tag - 1, size, int64);
adr += size; adr += size;
} else { } else {
__GET(tag, size, address); __GET(tag, size, int64);
ptr = adr + 8; ptr = adr + 8;
while (cand[i] < ptr) { while (cand[i] < ptr) {
i += 1; i += 1;
@ -524,17 +524,17 @@ static void Heap_MarkCandidates (address n, address *cand, LONGINT cand__len)
adr = next; adr = next;
} }
} }
__GET(chnk, chnk, address); __GET(chnk, chnk, int64);
} }
} }
static void Heap_CheckFin (void) static void Heap_CheckFin (void)
{ {
Heap_FinNode n; Heap_FinNode n;
address tag; int64 tag;
n = Heap_fin; n = Heap_fin;
while (n != NIL) { while (n != NIL) {
__GET(n->obj - 8, tag, address); __GET(n->obj - 8, tag, int64);
if (!__ODD(tag)) { if (!__ODD(tag)) {
n->marked = 0; n->marked = 0;
Heap_Mark(n->obj); Heap_Mark(n->obj);
@ -580,10 +580,10 @@ void Heap_FINALL (void)
} }
} }
static void Heap_MarkStack (address n, address *cand, LONGINT cand__len) static void Heap_MarkStack (int64 n, int64 *cand, LONGINT cand__len)
{ {
SYSTEM_PTR frame; SYSTEM_PTR frame;
address inc, nofcand, sp, p, stack0; int64 inc, nofcand, sp, p, stack0;
struct Heap__1 align; struct Heap__1 align;
if (n > 0) { if (n > 0) {
Heap_MarkStack(n - 1, cand, cand__len); Heap_MarkStack(n - 1, cand, cand__len);
@ -600,7 +600,7 @@ static void Heap_MarkStack (address n, address *cand, LONGINT cand__len)
inc = -inc; inc = -inc;
} }
while (sp != stack0) { while (sp != stack0) {
__GET(sp, p, address); __GET(sp, p, int64);
if ((p > Heap_heap && p < Heap_heapend)) { if ((p > Heap_heap && p < Heap_heapend)) {
if (nofcand == (int64)cand__len) { if (nofcand == (int64)cand__len) {
Heap_HeapSort(nofcand, (void*)cand, cand__len); Heap_HeapSort(nofcand, (void*)cand, cand__len);
@ -622,8 +622,8 @@ static void Heap_MarkStack (address n, address *cand, LONGINT cand__len)
void Heap_GC (BOOLEAN markStack) void Heap_GC (BOOLEAN markStack)
{ {
Heap_Module m; Heap_Module m;
address i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23; int64 i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23;
address cand[10000]; int64 cand[10000];
if (Heap_lockdepth == 0 || (Heap_lockdepth == 1 && !markStack)) { if (Heap_lockdepth == 0 || (Heap_lockdepth == 1 && !markStack)) {
Heap_Lock(); Heap_Lock();
m = (Heap_Module)(address)Heap_modules; m = (Heap_Module)(address)Heap_modules;
@ -703,7 +703,7 @@ void Heap_RegisterFinalizer (SYSTEM_PTR obj, Heap_Finalizer finalize)
{ {
Heap_FinNode f; Heap_FinNode f;
__NEW(f, Heap_FinDesc); __NEW(f, Heap_FinDesc);
f->obj = (address)(address)obj; f->obj = (int64)(address)obj;
f->finalize = finalize; f->finalize = finalize;
f->marked = 1; f->marked = 1;
f->next = Heap_fin; f->next = Heap_fin;
@ -713,8 +713,8 @@ void Heap_RegisterFinalizer (SYSTEM_PTR obj, Heap_Finalizer finalize)
void Heap_InitHeap (void) void Heap_InitHeap (void)
{ {
Heap_heap = Heap_NewChunk(256000); Heap_heap = Heap_NewChunk(256000);
__GET(Heap_heap + 8, Heap_heapend, address); __GET(Heap_heap + 8, Heap_heapend, int64);
__PUT(Heap_heap, 0, address); __PUT(Heap_heap, 0, int64);
Heap_allocated = 0; Heap_allocated = 0;
Heap_firstTry = 1; Heap_firstTry = 1;
Heap_freeList[9] = 1; Heap_freeList[9] = 1;

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. tsSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. tsSfF */
#ifndef Heap__h #ifndef Heap__h
#define Heap__h #define Heap__h
@ -31,7 +31,7 @@ typedef
import SYSTEM_PTR Heap_modules; import SYSTEM_PTR Heap_modules;
import address Heap_allocated, Heap_heapsize; import int64 Heap_allocated, Heap_heapsize;
import int16 Heap_FileCount; import int16 Heap_FileCount;
import address *Heap_ModuleDesc__typ; import address *Heap_ModuleDesc__typ;
@ -41,11 +41,11 @@ import void Heap_GC (BOOLEAN markStack);
import void Heap_INCREF (Heap_Module m); import void Heap_INCREF (Heap_Module m);
import void Heap_InitHeap (void); import void Heap_InitHeap (void);
import void Heap_Lock (void); import void Heap_Lock (void);
import SYSTEM_PTR Heap_NEWBLK (address size); import SYSTEM_PTR Heap_NEWBLK (int64 size);
import SYSTEM_PTR Heap_NEWREC (address tag); import SYSTEM_PTR Heap_NEWREC (int64 tag);
import void Heap_REGCMD (Heap_Module m, Heap_CmdName name, Heap_Command cmd); import void Heap_REGCMD (Heap_Module m, Heap_CmdName name, Heap_Command cmd);
import SYSTEM_PTR Heap_REGMOD (Heap_ModuleName name, Heap_EnumProc enumPtrs); import SYSTEM_PTR Heap_REGMOD (Heap_ModuleName name, Heap_EnumProc enumPtrs);
import void Heap_REGTYP (Heap_Module m, address typ); import void Heap_REGTYP (Heap_Module m, int64 typ);
import void Heap_RegisterFinalizer (SYSTEM_PTR obj, Heap_Finalizer finalize); import void Heap_RegisterFinalizer (SYSTEM_PTR obj, Heap_Finalizer finalize);
import void Heap_Unlock (void); import void Heap_Unlock (void);
import void *Heap__init(void); import void *Heap__init(void);

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#define INTEGER int16 #define INTEGER int16
#define LONGINT int32 #define LONGINT int32

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#ifndef Modules__h #ifndef Modules__h
#define Modules__h #define Modules__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#define INTEGER int16 #define INTEGER int16
#define LONGINT int32 #define LONGINT int32
@ -2449,12 +2449,8 @@ void OPB_Param (OPT_Node ap, OPT_Object fp)
OPB_err(111); OPB_err(111);
} }
} else if ((fp->typ == OPT_sysptrtyp && ap->typ->form == 11)) { } else if ((fp->typ == OPT_sysptrtyp && ap->typ->form == 11)) {
} else if (ap->typ != fp->typ) { } else if ((ap->typ != fp->typ && !((((fp->typ->form == 1 && __IN(ap->typ->form, 0x1e, 32))) && ap->typ->size == 1)))) {
if ((fp->typ->form == 1 && ((__IN(ap->typ->form, 0x1e, 32) && ap->typ->size == 1)))) { OPB_err(123);
} else if ((ap->typ == OPT_adrtyp && fp->typ == OPT_IntType(ap->typ->size))) {
} else {
OPB_err(123);
}
} else if ((fp->typ->form == 11 && ap->class == 5)) { } else if ((fp->typ->form == 11 && ap->class == 5)) {
OPB_err(123); OPB_err(123);
} }

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#ifndef OPB__h #ifndef OPB__h
#define OPB__h #define OPB__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#define INTEGER int16 #define INTEGER int16
#define LONGINT int32 #define LONGINT int32

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#ifndef OPC__h #ifndef OPC__h
#define OPC__h #define OPC__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#define INTEGER int16 #define INTEGER int16
#define LONGINT int32 #define LONGINT int32

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#ifndef OPM__h #ifndef OPM__h
#define OPM__h #define OPM__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#define INTEGER int16 #define INTEGER int16
#define LONGINT int32 #define LONGINT int32

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#ifndef OPP__h #ifndef OPP__h
#define OPP__h #define OPP__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. tspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. tspaSfF */
#define INTEGER int16 #define INTEGER int16
#define LONGINT int32 #define LONGINT int32

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. tspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. tspaSfF */
#ifndef OPS__h #ifndef OPS__h
#define OPS__h #define OPS__h

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#define INTEGER int16 #define INTEGER int16
#define LONGINT int32 #define LONGINT int32

View file

@ -1,4 +1,4 @@
/* voc 1.95 [2016/09/23]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */ /* voc 1.95 [2016/09/24]. Bootstrapping compiler for address size 8, alignment 8. xtspaSfF */
#ifndef OPT__h #ifndef OPT__h
#define OPT__h #define OPT__h

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