--- uae/src/autoconf.c 2018/04/24 16:42:02 1.1.1.4 +++ uae/src/autoconf.c 2018/04/24 17:00:00 1.1.1.9 @@ -12,11 +12,9 @@ #include "config.h" #include "options.h" -#include "machdep/m68k.h" #include "uae.h" #include "memory.h" #include "custom.h" -#include "readcpu.h" #include "newcpu.h" #include "compiler.h" #include "autoconf.h" @@ -218,26 +216,9 @@ uaecptr EXPANSION_explibname, EXPANSION_ uaecptr EXPANSION_uaedevname, EXPANSION_explibbase = 0, EXPANSION_haveV36; uaecptr EXPANSION_bootcode, EXPANSION_nullfunc; -static int current_deviceno = 0; - -void reset_uaedevices (void) -{ - current_deviceno = 0; -} - -int get_new_device (char **devname, uaecptr *devname_amiga) -{ - char buffer[80]; - - sprintf (buffer, "UAE%d", current_deviceno); - - *devname_amiga = ds (*devname = my_strdup (buffer)); - return current_deviceno++; -} - /* ROM tag area memory access */ -static uae_u8 rtarea[65536]; +static uae_u8 *rtarea; static uae_u32 rtarea_lget (uaecptr) REGPARAM; static uae_u32 rtarea_wget (uaecptr) REGPARAM; @@ -250,7 +231,7 @@ static uae_u8 *rtarea_xlate (uaecptr) RE addrbank rtarea_bank = { rtarea_lget, rtarea_wget, rtarea_bget, rtarea_lput, rtarea_wput, rtarea_bput, - rtarea_xlate, default_check + rtarea_xlate, default_check, NULL }; uae_u8 REGPARAM2 *rtarea_xlate (uaecptr addr) @@ -261,25 +242,39 @@ uae_u8 REGPARAM2 *rtarea_xlate (uaecptr uae_u32 REGPARAM2 rtarea_lget (uaecptr addr) { + special_mem |= S_READ; addr &= 0xFFFF; return (uae_u32)(rtarea_wget (addr) << 16) + rtarea_wget (addr+2); } uae_u32 REGPARAM2 rtarea_wget (uaecptr addr) { + special_mem |= S_READ; addr &= 0xFFFF; return (rtarea[addr]<<8) + rtarea[addr+1]; } uae_u32 REGPARAM2 rtarea_bget (uaecptr addr) { + special_mem |= S_READ; addr &= 0xFFFF; return rtarea[addr]; } -void REGPARAM2 rtarea_lput (uaecptr addr, uae_u32 value) { } -void REGPARAM2 rtarea_wput (uaecptr addr, uae_u32 value) { } -void REGPARAM2 rtarea_bput (uaecptr addr, uae_u32 value) { } +void REGPARAM2 rtarea_lput (uaecptr addr, uae_u32 value) +{ + special_mem |= S_WRITE; +} + +void REGPARAM2 rtarea_wput (uaecptr addr, uae_u32 value) +{ + special_mem |= S_WRITE; +} + +void REGPARAM2 rtarea_bput (uaecptr addr, uae_u32 value) +{ + special_mem |= S_WRITE; +} static int trace_traps = 1; @@ -443,10 +438,29 @@ static uae_u32 getchipmemsize (void) return allocated_chipmem; } +static uae_u32 uae_puts (void) +{ + puts (get_real_address (m68k_areg (regs, 0))); + return 0; +} + +static void rtarea_init_mem (void) +{ + rtarea = mapped_malloc (0x10000, "rtarea"); + if (!rtarea) { + write_log ("virtual memory exhausted (rtarea)!\n"); + abort (); + } + rtarea_bank.baseaddr = rtarea; +} + void rtarea_init (void) { uae_u32 a; char uaever[100]; + + rtarea_init_mem (); + sprintf (uaever, "uae-%d.%d.%d", UAEMAJOR, UAEMINOR, UAESUBREV); EXPANSION_uaeversion = ds (uaever); @@ -468,6 +482,11 @@ void rtarea_init (void) org (0xF0FF80); calltrap (deftrap2 (getchipmemsize, TRAPFLAG_DORET, "")); + + org (0xF0FF10); + calltrap (deftrap2 (uae_puts, TRAPFLAG_NO_RETVAL, "")); + dw (RTS); + org (a); filesys_install_code ();