--- uae/src/memory.c 2018/04/24 16:44:54 1.1.1.6 +++ uae/src/memory.c 2018/04/24 16:56:47 1.1.1.8 @@ -20,6 +20,9 @@ #include #endif +/* Set by each memory handler that does not simply access real memory. */ +int special_mem; + int ersatzkickfile = 0; uae_u32 allocated_chipmem; @@ -76,6 +79,7 @@ static int dummy_check (uaecptr addr, ua uae_u32 REGPARAM2 dummy_lget (uaecptr addr) { + special_mem |= S_READ; if (currprefs.illegal_mem) write_log ("Illegal lget at %08lx\n", addr); @@ -84,6 +88,7 @@ uae_u32 REGPARAM2 dummy_lget (uaecptr ad uae_u32 REGPARAM2 dummy_wget (uaecptr addr) { + special_mem |= S_READ; if (currprefs.illegal_mem) write_log ("Illegal wget at %08lx\n", addr); @@ -92,6 +97,7 @@ uae_u32 REGPARAM2 dummy_wget (uaecptr ad uae_u32 REGPARAM2 dummy_bget (uaecptr addr) { + special_mem |= S_READ; if (currprefs.illegal_mem) write_log ("Illegal bget at %08lx\n", addr); @@ -100,16 +106,19 @@ uae_u32 REGPARAM2 dummy_bget (uaecptr ad void REGPARAM2 dummy_lput (uaecptr addr, uae_u32 l) { + special_mem |= S_WRITE; if (currprefs.illegal_mem) write_log ("Illegal lput at %08lx\n", addr); } void REGPARAM2 dummy_wput (uaecptr addr, uae_u32 w) { + special_mem |= S_WRITE; if (currprefs.illegal_mem) write_log ("Illegal wput at %08lx\n", addr); } void REGPARAM2 dummy_bput (uaecptr addr, uae_u32 b) { + special_mem |= S_WRITE; if (currprefs.illegal_mem) write_log ("Illegal bput at %08lx\n", addr); } @@ -135,6 +144,7 @@ static int mbres_val = 0; uae_u32 REGPARAM2 mbres_lget (uaecptr addr) { + special_mem |= S_READ; if (currprefs.illegal_mem) write_log ("Illegal lget at %08lx\n", addr); @@ -143,6 +153,7 @@ uae_u32 REGPARAM2 mbres_lget (uaecptr ad uae_u32 REGPARAM2 mbres_wget (uaecptr addr) { + special_mem |= S_READ; if (currprefs.illegal_mem) write_log ("Illegal wget at %08lx\n", addr); @@ -151,6 +162,7 @@ uae_u32 REGPARAM2 mbres_wget (uaecptr ad uae_u32 REGPARAM2 mbres_bget (uaecptr addr) { + special_mem |= S_READ; if (currprefs.illegal_mem) write_log ("Illegal bget at %08lx\n", addr); @@ -159,16 +171,19 @@ uae_u32 REGPARAM2 mbres_bget (uaecptr ad void REGPARAM2 mbres_lput (uaecptr addr, uae_u32 l) { + special_mem |= S_WRITE; if (currprefs.illegal_mem) write_log ("Illegal lput at %08lx\n", addr); } void REGPARAM2 mbres_wput (uaecptr addr, uae_u32 w) { + special_mem |= S_WRITE; if (currprefs.illegal_mem) write_log ("Illegal wput at %08lx\n", addr); } void REGPARAM2 mbres_bput (uaecptr addr, uae_u32 b) { + special_mem |= S_WRITE; if (currprefs.illegal_mem) write_log ("Illegal bput at %08lx\n", addr); @@ -188,18 +203,13 @@ int REGPARAM2 mbres_check (uaecptr addr, uae_u8 *chipmemory; -static uae_u32 chipmem_lget (uaecptr) REGPARAM; -static uae_u32 chipmem_wget (uaecptr) REGPARAM; -static uae_u32 chipmem_bget (uaecptr) REGPARAM; -static void chipmem_lput (uaecptr, uae_u32) REGPARAM; -static void chipmem_wput (uaecptr, uae_u32) REGPARAM; -static void chipmem_bput (uaecptr, uae_u32) REGPARAM; static int chipmem_check (uaecptr addr, uae_u32 size) REGPARAM; static uae_u8 *chipmem_xlate (uaecptr addr) REGPARAM; uae_u32 REGPARAM2 chipmem_lget (uaecptr addr) { uae_u32 *m; + addr -= chipmem_start & chipmem_mask; addr &= chipmem_mask; m = (uae_u32 *)(chipmemory + addr); @@ -209,6 +219,7 @@ uae_u32 REGPARAM2 chipmem_lget (uaecptr uae_u32 REGPARAM2 chipmem_wget (uaecptr addr) { uae_u16 *m; + addr -= chipmem_start & chipmem_mask; addr &= chipmem_mask; m = (uae_u16 *)(chipmemory + addr); @@ -225,6 +236,7 @@ uae_u32 REGPARAM2 chipmem_bget (uaecptr void REGPARAM2 chipmem_lput (uaecptr addr, uae_u32 l) { uae_u32 *m; + addr -= chipmem_start & chipmem_mask; addr &= chipmem_mask; m = (uae_u32 *)(chipmemory + addr); @@ -234,6 +246,7 @@ void REGPARAM2 chipmem_lput (uaecptr add void REGPARAM2 chipmem_wput (uaecptr addr, uae_u32 w) { uae_u16 *m; + addr -= chipmem_start & chipmem_mask; addr &= chipmem_mask; m = (uae_u16 *)(chipmemory + addr);