diff --git a/src/mem.c b/src/mem.c index bb7778fc2..d5a391ebc 100644 --- a/src/mem.c +++ b/src/mem.c @@ -68,7 +68,7 @@ uint32_t biosmask; int readlnum=0,writelnum=0; int cachesize=256; -uint8_t *ram,*rom; +uint8_t *rom; uint8_t romext[32768]; uint32_t ram_mapped_addr[64]; @@ -1327,6 +1327,7 @@ void mem_init(void) ram = malloc(mem_size * 1024); readlookup2 = malloc(1024 * 1024 * sizeof(uintptr_t)); writelookup2 = malloc(1024 * 1024 * sizeof(uintptr_t)); + rom = NULL; biosmask = 0xffff; pages = malloc((((mem_size + 384) * 1024) >> 12) * sizeof(page_t)); page_lookup = malloc((1 << 20) * sizeof(page_t *)); diff --git a/src/rom.c b/src/rom.c index 6259696cb..ef087a16b 100644 --- a/src/rom.c +++ b/src/rom.c @@ -13,7 +13,7 @@ * - c386sx16 BIOS fails checksum * - the loadfont() calls should be done elsewhere * - * Version: @(#)rom.c 1.0.5 2017/09/28 + * Version: @(#)rom.c 1.0.6 2017/09/30 * * Authors: Sarah Walker, * Miran Grca, @@ -50,7 +50,6 @@ rom_fopen(wchar_t *fn, wchar_t *mode) } - int rom_getfile(wchar_t *fn, wchar_t *s, int size) { @@ -138,6 +137,9 @@ rom_load_linear(wchar_t *fn, uint32_t addr, int sz, int off, uint8_t *ptr) return(0); } + /* Make sure we only look at the base-256K offset. */ + addr &= 0x03ffff; + (void)fseek(f, off, SEEK_SET); (void)fread(ptr+addr, sz, 1, f); (void)fclose(f); @@ -163,6 +165,9 @@ rom_load_interleaved(wchar_t *fnl, wchar_t *fnh, uint32_t addr, int sz, int off, return(0); } + /* Make sure we only look at the base-256K offset. */ + addr &= 0x03ffff; + (void)fseek(fl, off, SEEK_SET); (void)fseek(fh, off, SEEK_SET); for (c=0; c