--- hatari/src/uae-cpu/memory.c 2019/04/01 07:11:37 1.1.1.6 +++ hatari/src/uae-cpu/memory.c 2019/04/01 07:12:46 1.1.1.8 @@ -10,7 +10,7 @@ * This file is distributed under the GNU Public License, version 2 or at * your option any later version. Read the file gpl.txt for details. */ -char Memory_rcsid[] = "Hatari $Id: memory.c,v 1.1.1.6 2019/04/01 07:11:37 root Exp $"; +char Memory_rcsid[] = "Hatari $Id: memory.c,v 1.1.1.8 2019/04/01 07:12:46 root Exp $"; #include "sysdeps.h" #include "hatari-glue.h" @@ -18,7 +18,7 @@ char Memory_rcsid[] = "Hatari $Id: memor #include "memory.h" #include "../includes/main.h" #include "../includes/tos.h" -#include "../includes/intercept.h" +#include "../includes/ioMem.h" #include "../includes/reset.h" #include "../includes/stMemory.h" #include "../includes/m68000.h" @@ -218,22 +218,16 @@ static uae_u8 *STmemory; static uae_u32 STmem_lget(uaecptr addr) { - uae_u32 *m; - addr -= STmem_start & STmem_mask; addr &= STmem_mask; - m = (uae_u32 *)(STmemory + addr); - return do_get_mem_long (m); + return do_get_mem_long(STmemory + addr); } static uae_u32 STmem_wget(uaecptr addr) { - uae_u16 *m; - addr -= STmem_start & STmem_mask; addr &= STmem_mask; - m = (uae_u16 *)(STmemory + addr); - return do_get_mem_word (m); + return do_get_mem_word(STmemory + addr); } static uae_u32 STmem_bget(uaecptr addr) @@ -245,22 +239,16 @@ static uae_u32 STmem_bget(uaecptr addr) static void STmem_lput(uaecptr addr, uae_u32 l) { - uae_u32 *m; - addr -= STmem_start & STmem_mask; addr &= STmem_mask; - m = (uae_u32 *)(STmemory + addr); - do_put_mem_long (m, l); + do_put_mem_long(STmemory + addr, l); } static void STmem_wput(uaecptr addr, uae_u32 w) { - uae_u16 *m; - addr -= STmem_start & STmem_mask; addr &= STmem_mask; - m = (uae_u16 *)(STmemory + addr); - do_put_mem_word (m, w); + do_put_mem_word(STmemory + addr, w); } static void STmem_bput(uaecptr addr, uae_u32 b) @@ -294,8 +282,6 @@ static uae_u8 *STmem_xlate(uaecptr addr) */ static uae_u32 SysMem_lget(uaecptr addr) { - uae_u32 *m; - if(addr < 0x800 && !regs.s) { M68000_BusError(addr, 1); @@ -304,14 +290,12 @@ static uae_u32 SysMem_lget(uaecptr addr) addr -= STmem_start & STmem_mask; addr &= STmem_mask; - m = (uae_u32 *)(STmemory + addr); - return do_get_mem_long (m); + + return do_get_mem_long(STmemory + addr); } static uae_u32 SysMem_wget(uaecptr addr) { - uae_u16 *m; - if(addr < 0x800 && !regs.s) { M68000_BusError(addr, 1); @@ -320,8 +304,8 @@ static uae_u32 SysMem_wget(uaecptr addr) addr -= STmem_start & STmem_mask; addr &= STmem_mask; - m = (uae_u16 *)(STmemory + addr); - return do_get_mem_word (m); + + return do_get_mem_word(STmemory + addr); } static uae_u32 SysMem_bget(uaecptr addr) @@ -339,8 +323,6 @@ static uae_u32 SysMem_bget(uaecptr addr) static void SysMem_lput(uaecptr addr, uae_u32 l) { - uae_u32 *m; - if(addr < 0x8 || (addr < 0x800 && !regs.s)) { M68000_BusError(addr, 0); @@ -349,14 +331,12 @@ static void SysMem_lput(uaecptr addr, ua addr -= STmem_start & STmem_mask; addr &= STmem_mask; - m = (uae_u32 *)(STmemory + addr); - do_put_mem_long (m, l); + + do_put_mem_long(STmemory + addr, l); } static void SysMem_wput(uaecptr addr, uae_u32 w) { - uae_u16 *m; - if(addr < 0x8 || (addr < 0x800 && !regs.s)) { M68000_BusError(addr, 0); @@ -365,8 +345,8 @@ static void SysMem_wput(uaecptr addr, ua addr -= STmem_start & STmem_mask; addr &= STmem_mask; - m = (uae_u16 *)(STmemory + addr); - do_put_mem_word (m, w); + + do_put_mem_word(STmemory + addr, w); } static void SysMem_bput(uaecptr addr, uae_u32 b) @@ -439,20 +419,16 @@ static uae_u8 *TTmemory; static uae_u32 TTmem_lget(uaecptr addr) { - uae_u32 *m; addr -= TTmem_start & TTmem_mask; addr &= TTmem_mask; - m = (uae_u32 *)(TTmemory + addr); - return do_get_mem_long (m); + return do_get_mem_long(TTmemory + addr); } static uae_u32 TTmem_wget(uaecptr addr) { - uae_u16 *m; addr -= TTmem_start & TTmem_mask; addr &= TTmem_mask; - m = (uae_u16 *)(TTmemory + addr); - return do_get_mem_word (m); + return do_get_mem_word(TTmemory + addr); } static uae_u32 TTmem_bget(uaecptr addr) @@ -464,20 +440,16 @@ static uae_u32 TTmem_bget(uaecptr addr) static void TTmem_lput(uaecptr addr, uae_u32 l) { - uae_u32 *m; addr -= TTmem_start & TTmem_mask; addr &= TTmem_mask; - m = (uae_u32 *)(TTmemory + addr); - do_put_mem_long (m, l); + do_put_mem_long(TTmemory + addr, l); } static void TTmem_wput(uaecptr addr, uae_u32 w) { - uae_u16 *m; addr -= TTmem_start & TTmem_mask; addr &= TTmem_mask; - m = (uae_u16 *)(TTmemory + addr); - do_put_mem_word (m, w); + do_put_mem_word(TTmemory + addr, w); } static void TTmem_bput(uaecptr addr, uae_u32 b) @@ -508,20 +480,16 @@ static uae_u8 *ROMmemory; static uae_u32 ROMmem_lget(uaecptr addr) { - uae_u32 *m; addr -= ROMmem_start & ROMmem_mask; addr &= ROMmem_mask; - m = (uae_u32 *)(ROMmemory + addr); - return do_get_mem_long (m); + return do_get_mem_long(ROMmemory + addr); } static uae_u32 ROMmem_wget(uaecptr addr) { - uae_u16 *m; addr -= ROMmem_start & ROMmem_mask; addr &= ROMmem_mask; - m = (uae_u16 *)(ROMmemory + addr); - return do_get_mem_word (m); + return do_get_mem_word(ROMmemory + addr); } static uae_u32 ROMmem_bget(uaecptr addr) @@ -644,8 +612,8 @@ static addrbank ROMmem_bank = static addrbank IOmem_bank = { - Intercept_ReadLong, Intercept_ReadWord, Intercept_ReadByte, - Intercept_WriteLong, Intercept_WriteWord, Intercept_WriteByte, + IoMem_lget, IoMem_wget, IoMem_bget, + IoMem_lput, IoMem_wput, IoMem_bput, IOmem_xlate, IOmem_check }; @@ -662,13 +630,13 @@ static void init_mem_banks (void) /* * Initialize the memory banks */ -void memory_init(uae_u32 f_STMemSize, uae_u32 f_TTMemSize, uae_u32 f_RomMemStart) +void memory_init(uae_u32 nNewSTMemSize, uae_u32 nNewTTMemSize, uae_u32 nNewRomMemStart) { - STmem_size = (f_STMemSize + 65535) & 0xFFFF0000; - TTmem_size = (f_TTMemSize + 65535) & 0xFFFF0000; + STmem_size = (nNewSTMemSize + 65535) & 0xFFFF0000; + TTmem_size = (nNewTTMemSize + 65535) & 0xFFFF0000; /*write_log("memory_init: STmem_size=$%x, TTmem_size=$%x, ROM-Start=$%x,\n", - STmem_size, TTmem_size, f_RomMemStart);*/ + STmem_size, TTmem_size, nNewRomMemStart);*/ STmemory = STRam; ROMmemory = STRam + ROMmem_start; @@ -688,9 +656,13 @@ void memory_init(uae_u32 f_STMemSize, ua init_mem_banks(); - /* Map the ST RAM: */ + /* Map the ST system RAM: */ map_banks(&SysMem_bank, 0x00, 1); - map_banks(&VoidMem_bank, 0x08, 0x38); /* Between STRamEnd and 4MB barrier, there is void space! */ + /* Between STRamEnd and 4MB barrier, there is void space: */ + map_banks(&VoidMem_bank, 0x08, 0x38); + /* Space between 4MB barrier and TOS ROM causes a bus error: */ + map_banks(&BusErrMem_bank, 0x400000 >> 16, 0xA0); + /* Now map main ST RAM, overwriting the void and bus error regions if necessary: */ map_banks(&STmem_bank, 0x01, (STmem_size >> 16) - 1); /* TT memory isn't really supported yet */ @@ -704,12 +676,12 @@ void memory_init(uae_u32 f_STMemSize, ua /* ROM memory: */ /* Depending on which ROM version we are using, the other ROM region is illegal! */ - if(f_RomMemStart == 0xFC0000) + if(nNewRomMemStart == 0xFC0000) { map_banks(&ROMmem_bank, 0xFC0000 >> 16, 0x3); map_banks(&BusErrMem_bank, 0xE00000 >> 16, 0x10); } - else if(f_RomMemStart == 0xE00000) + else if(nNewRomMemStart == 0xE00000) { map_banks(&ROMmem_bank, 0xE00000 >> 16, 0x10); map_banks(&BusErrMem_bank, 0xFC0000 >> 16, 0x3); @@ -726,8 +698,7 @@ void memory_init(uae_u32 f_STMemSize, ua map_banks(&IOmem_bank, IOmem_start>>16, 0x1); /* Illegal memory regions cause a bus error on the ST: */ - map_banks(&BusErrMem_bank, 0x400000 >> 16, 0xA0); /* Space between 4MB barrier and TOS ROM */ - map_banks(&BusErrMem_bank, 0xF00000 >> 16, 0xA); /* IDE controler on the Falcon */ + map_banks(&BusErrMem_bank, 0xF00000 >> 16, 0xA); /* IDE controller on the Falcon */ }