From 41a784355d7bba15d24cfe396beb5522f4d3fc28 Mon Sep 17 00:00:00 2001 From: David Schmenk Date: Sun, 11 May 2014 20:31:54 -0700 Subject: [PATCH] Fix for watcom compiler --- PLASMA/src/codegen.c | 6 +++--- PLASMA/src/plvm.c | 23 +++++++++++++---------- 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/PLASMA/src/codegen.c b/PLASMA/src/codegen.c index 776a0592..50b64ee1 100755 --- a/PLASMA/src/codegen.c +++ b/PLASMA/src/codegen.c @@ -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; diff --git a/PLASMA/src/plvm.c b/PLASMA/src/plvm.c index 3f70cbdd..ff6a1271 100755 --- a/PLASMA/src/plvm.c +++ b/PLASMA/src/plvm.c @@ -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; -} \ No newline at end of file +}