Fix for watcom compiler

This commit is contained in:
David Schmenk 2014-05-11 20:31:54 -07:00
parent 25b83b7b61
commit 41a784355d
2 changed files with 16 additions and 13 deletions

View File

@ -70,12 +70,12 @@ int idglobal_lookup(char *name, int len)
}
int idconst_add(char *name, int len, int value)
{
char c = name[len];
if (consts > 1024)
{
printf("Constant count overflow\n");
return (0);
}
char c = name[len];
name[len] = '\0';
emit_idconst(name, value);
name[len] = c;
@ -89,12 +89,12 @@ int idconst_add(char *name, int len, int value)
}
int idlocal_add(char *name, int len, int type, int size)
{
char c = name[len];
if (localsize > 255)
{
printf("Local variable size overflow\n");
return (0);
}
char c = name[len];
name[len] = '\0';
emit_idlocal(name, localsize);
name[len] = c;
@ -110,12 +110,12 @@ int idlocal_add(char *name, int len, int type, int size)
}
int idglobal_add(char *name, int len, int type, int size)
{
char c = name[len];
if (globals > 1024)
{
printf("Global variable count overflow\n");
return (0);
}
char c = name[len];
name[len] = '\0';
name[len] = c;
idglobal_name[globals][0] = len;

View File

@ -99,7 +99,7 @@ uword mark_heap(void)
{
return heap;
}
int release_heap(uword newheap)
uword release_heap(uword newheap)
{
heap = newheap;
return fp - heap;
@ -146,13 +146,14 @@ uword lookup_tbl(byte *dci, byte *tbl)
}
return 0;
}
int add_tbl(byte *dci, int val, byte **last)
uword add_tbl(byte *dci, int val, byte **last)
{
while (*dci & 0x80)
*(*last)++ = *dci++;
*(*last)++ = *dci++;
*(*last)++ = val;
*(*last)++ = val >> 8;
return 0;
}
/*
@ -167,7 +168,7 @@ uword lookup_sym(byte *sym)
{
return lookup_tbl(sym, symtbl);
}
int add_sym(byte *sym, int addr)
uword add_sym(byte *sym, int addr)
{
return add_tbl(sym, addr, &lastsym);
}
@ -184,18 +185,18 @@ uword lookup_mod(byte *mod)
{
return lookup_tbl(mod, modtbl);
}
int add_mod(byte *mod, int addr)
uword add_mod(byte *mod, int addr)
{
return add_tbl(mod, addr, &lastmod);
}
defcall_add(int bank, int addr)
uword defcall_add(int bank, int addr)
{
mem_data[lastdef] = bank ? 2 : 1;
mem_data[lastdef + 1] = addr;
mem_data[lastdef + 2] = addr >> 8;
return lastdef++;
}
int def_lookup(byte *cdd, int defaddr)
uword def_lookup(byte *cdd, int defaddr)
{
int i, calldef = 0;
for (i = 0; cdd[i * 4] == 0x02; i++)
@ -208,7 +209,7 @@ int def_lookup(byte *cdd, int defaddr)
}
return calldef;
}
int extern_lookup(byte *esd, int index)
uword extern_lookup(byte *esd, int index)
{
byte *sym;
char string[32];
@ -225,16 +226,18 @@ int extern_lookup(byte *esd, int index)
}
int load_mod(byte *mod)
{
unsigned int len, size, end, magic, bytecode, fixup, addr, sysflags, defcnt = 0, init = 0, modaddr = mark_heap();
uword len, size, end, magic, bytecode, fixup, addr, sysflags, defcnt = 0, init = 0, modaddr = mark_heap();
byte *moddep, *rld, *esd, *cdd, *sym;
byte header[128];
int fd;
char filename[32], string[17];
dcitos(mod, filename);
printf("Load module %s\n", filename);
int fd = open(filename, O_RDONLY, 0);
fd = open(filename, O_RDONLY, 0);
if ((fd > 0) && (len = read(fd, header, 128)) > 0)
{
modaddr = mark_heap();
magic = header[2] | (header[3] << 8);
if (magic == 0xDA7E)
{
@ -894,4 +897,4 @@ int main(int argc, char **argv)
}
}
return 0;
}
}