--- uae/src/memory.c 2018/04/24 16:43:32 1.1.1.5 +++ 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); @@ -505,16 +518,16 @@ static int load_kickstart (void) uae_u32 cksum = 0, prevck = 0; unsigned char buffer[20]; - FILE *f = zfile_open(romfile, "rb"); + FILE *f = zfile_open (currprefs.romfile, "rb"); if (f == NULL) { write_log ("No Kickstart ROM found.\n"); -#if defined(AMIGA)||defined(__POS__) +#if defined AMIGA || defined __POS__ #define USE_UAE_ERSATZ "USE_UAE_ERSATZ" - if (!getenv(USE_UAE_ERSATZ)) { - fprintf (stderr, "Using current ROM. (create ENV:%s to " - "use uae's ROM replacement)\n",USE_UAE_ERSATZ); - memcpy(kickmemory,(char*)0x1000000 - kickmem_size, kickmem_size); + if (!getenv (USE_UAE_ERSATZ)) { + fprintf (stderr, "Using current ROM. (create ENV:%s to " + "use uae's ROM replacement)\n", USE_UAE_ERSATZ); + memcpy (kickmemory, (char*)0x1000000 - kickmem_size, kickmem_size); goto chk_sum; } #endif @@ -542,11 +555,11 @@ static int load_kickstart (void) cloanto_rom = 1; write_log ("ROM image is an encrypted \"Amiga Forever\" ROM file.\n"); - if (strlen (keyfile) == 0) { + if (strlen (currprefs.keyfile) == 0) { write_log ("No filename given for ROM key file.\n"); return 0; } - keyf = zfile_open (keyfile, "rb"); + keyf = zfile_open (currprefs.keyfile, "rb"); if (keyf == 0) { write_log ("Could not find ROM key file.\n"); return 0; @@ -687,8 +700,8 @@ void memory_init (void) abort (); } #endif - - do_put_mem_long (chipmemory + 4, 0); + + do_put_mem_long ((uae_u32 *)(chipmemory + 4), 0); init_mem_banks (); /* Map the chipmem into all of the lower 16MB */