--- uae/src/expansion.c 2018/04/24 16:39:56 1.1.1.3 +++ uae/src/expansion.c 2018/04/24 16:52:55 1.1.1.6 @@ -169,12 +169,12 @@ static void expamem_init_clear (void) memset (expamem, 0xff, sizeof expamem); } -static uae_u32 expamem_lget(uaecptr) REGPARAM; -static uae_u32 expamem_wget(uaecptr) REGPARAM; -static uae_u32 expamem_bget(uaecptr) REGPARAM; -static void expamem_lput(uaecptr, uae_u32) REGPARAM; -static void expamem_wput(uaecptr, uae_u32) REGPARAM; -static void expamem_bput(uaecptr, uae_u32) REGPARAM; +static uae_u32 expamem_lget (uaecptr) REGPARAM; +static uae_u32 expamem_wget (uaecptr) REGPARAM; +static uae_u32 expamem_bget (uaecptr) REGPARAM; +static void expamem_lput (uaecptr, uae_u32) REGPARAM; +static void expamem_wput (uaecptr, uae_u32) REGPARAM; +static void expamem_bput (uaecptr, uae_u32) REGPARAM; addrbank expamem_bank = { expamem_lget, expamem_wget, expamem_bget, @@ -182,23 +182,20 @@ addrbank expamem_bank = { default_xlate, default_check }; -static uae_u32 REGPARAM2 expamem_lget(uaecptr addr) +static uae_u32 REGPARAM2 expamem_lget (uaecptr addr) { - sprintf (warning_buffer, "warning: READ.L from address $%lx \n", addr); - write_log (warning_buffer); + write_log ("warning: READ.L from address $%lx \n", addr); return 0xfffffffful; } -static uae_u32 REGPARAM2 expamem_wget(uaecptr addr) +static uae_u32 REGPARAM2 expamem_wget (uaecptr addr) { - sprintf (warning_buffer, "warning: READ.W from address $%lx \n", addr); - write_log (warning_buffer); + write_log ("warning: READ.W from address $%lx \n", addr); return 0xffff; } -static uae_u32 REGPARAM2 expamem_bget(uaecptr addr) +static uae_u32 REGPARAM2 expamem_bget (uaecptr addr) { - uae_u8 value; addr &= 0xFFFF; return expamem[addr]; } @@ -215,32 +212,29 @@ static void REGPARAM2 expamem_write (uae } } -static int REGPARAM2 expamem_type(void) +static int REGPARAM2 expamem_type (void) { return ((expamem[0] | expamem[2] >> 4) & 0xc0); } -static void REGPARAM2 expamem_lput(uaecptr addr, uae_u32 value) +static void REGPARAM2 expamem_lput (uaecptr addr, uae_u32 value) { - fprintf (stderr, "warning: WRITE.L to address $%lx : value $%lx\n", addr, value); + write_log ("warning: WRITE.L to address $%lx : value $%lx\n", addr, value); } -static void REGPARAM2 expamem_wput(uaecptr addr, uae_u32 value) +static void REGPARAM2 expamem_wput (uaecptr addr, uae_u32 value) { - static char buffer[80]; - if (expamem_type() != zorroIII) - fprintf (stderr, "warning: WRITE.W to address $%lx : value $%x\n", addr, value); + write_log ("warning: WRITE.W to address $%lx : value $%x\n", addr, value); else { switch (addr & 0xff) { case 0x44: if (expamem_type() == zorroIII) { expamem_hi = value; (*card_map[ecard]) (); - sprintf (buffer, " Card %d (Zorro%s) done.\n", ecard + 1, expamem_type() == 0xc0 ? "II" : "III"); - write_log (buffer); + write_log (" Card %d (Zorro%s) done.\n", ecard + 1, expamem_type() == 0xc0 ? "II" : "III"); ++ecard; - if (ecard <= MAX_EXPANSION_BOARDS) + if (ecard < MAX_EXPANSION_BOARDS) (*card_init[ecard]) (); else expamem_init_clear (); @@ -250,10 +244,8 @@ static void REGPARAM2 expamem_wput(uaecp } } -static void REGPARAM2 expamem_bput(uaecptr addr, uae_u32 value) +static void REGPARAM2 expamem_bput (uaecptr addr, uae_u32 value) { - static char buffer[80]; - switch (addr & 0xff) { case 0x30: case 0x32: @@ -266,10 +258,9 @@ static void REGPARAM2 expamem_bput(uaecp if (expamem_type () == zorroII) { expamem_hi = value & 0xFF; (*card_map[ecard]) (); - sprintf (buffer, " Card %d (Zorro%s) done.\n", ecard + 1, expamem_type() == 0xc0 ? "II" : "III"); - write_log (buffer); + write_log (" Card %d (Zorro%s) done.\n", ecard + 1, expamem_type() == 0xc0 ? "II" : "III"); ++ecard; - if (ecard <= MAX_EXPANSION_BOARDS) + if (ecard < MAX_EXPANSION_BOARDS) (*card_init[ecard]) (); else expamem_init_clear (); @@ -283,10 +274,9 @@ static void REGPARAM2 expamem_bput(uaecp break; case 0x4c: - sprintf (buffer, " Card %d (Zorro %s) had no success.\n", ecard + 1, expamem_type() == 0xc0 ? "II" : "III"); - write_log (buffer); + write_log (" Card %d (Zorro %s) had no success.\n", ecard + 1, expamem_type() == 0xc0 ? "II" : "III"); ++ecard; - if (ecard <= MAX_EXPANSION_BOARDS) + if (ecard < MAX_EXPANSION_BOARDS) (*card_init[ecard]) (); else expamem_init_clear (); @@ -302,19 +292,19 @@ static void REGPARAM2 expamem_bput(uaecp static uae_u32 fastmem_mask; -static uae_u32 fastmem_lget(uaecptr) REGPARAM; -static uae_u32 fastmem_wget(uaecptr) REGPARAM; -static uae_u32 fastmem_bget(uaecptr) REGPARAM; -static void fastmem_lput(uaecptr, uae_u32) REGPARAM; -static void fastmem_wput(uaecptr, uae_u32) REGPARAM; -static void fastmem_bput(uaecptr, uae_u32) REGPARAM; -static int fastmem_check(uaecptr addr, uae_u32 size) REGPARAM; -static uae_u8 *fastmem_xlate(uaecptr addr) REGPARAM; +static uae_u32 fastmem_lget (uaecptr) REGPARAM; +static uae_u32 fastmem_wget (uaecptr) REGPARAM; +static uae_u32 fastmem_bget (uaecptr) REGPARAM; +static void fastmem_lput (uaecptr, uae_u32) REGPARAM; +static void fastmem_wput (uaecptr, uae_u32) REGPARAM; +static void fastmem_bput (uaecptr, uae_u32) REGPARAM; +static int fastmem_check (uaecptr addr, uae_u32 size) REGPARAM; +static uae_u8 *fastmem_xlate (uaecptr addr) REGPARAM; static uae_u32 fastmem_start; /* Determined by the OS */ static uae_u8 *fastmemory = NULL; -uae_u32 REGPARAM2 fastmem_lget(uaecptr addr) +uae_u32 REGPARAM2 fastmem_lget (uaecptr addr) { uae_u8 *m; addr -= fastmem_start & fastmem_mask; @@ -323,7 +313,7 @@ uae_u32 REGPARAM2 fastmem_lget(uaecptr a return do_get_mem_long ((uae_u32 *)m); } -uae_u32 REGPARAM2 fastmem_wget(uaecptr addr) +uae_u32 REGPARAM2 fastmem_wget (uaecptr addr) { uae_u8 *m; addr -= fastmem_start & fastmem_mask; @@ -332,14 +322,14 @@ uae_u32 REGPARAM2 fastmem_wget(uaecptr a return do_get_mem_word ((uae_u16 *)m); } -uae_u32 REGPARAM2 fastmem_bget(uaecptr addr) +uae_u32 REGPARAM2 fastmem_bget (uaecptr addr) { addr -= fastmem_start & fastmem_mask; addr &= fastmem_mask; return fastmemory[addr]; } -void REGPARAM2 fastmem_lput(uaecptr addr, uae_u32 l) +void REGPARAM2 fastmem_lput (uaecptr addr, uae_u32 l) { uae_u8 *m; addr -= fastmem_start & fastmem_mask; @@ -348,7 +338,7 @@ void REGPARAM2 fastmem_lput(uaecptr addr do_put_mem_long ((uae_u32 *)m, l); } -void REGPARAM2 fastmem_wput(uaecptr addr, uae_u32 w) +void REGPARAM2 fastmem_wput (uaecptr addr, uae_u32 w) { uae_u8 *m; addr -= fastmem_start & fastmem_mask; @@ -357,21 +347,21 @@ void REGPARAM2 fastmem_wput(uaecptr addr do_put_mem_word ((uae_u16 *)m, w); } -void REGPARAM2 fastmem_bput(uaecptr addr, uae_u32 b) +void REGPARAM2 fastmem_bput (uaecptr addr, uae_u32 b) { addr -= fastmem_start & fastmem_mask; addr &= fastmem_mask; fastmemory[addr] = b; } -static int REGPARAM2 fastmem_check(uaecptr addr, uae_u32 size) +static int REGPARAM2 fastmem_check (uaecptr addr, uae_u32 size) { addr -= fastmem_start & fastmem_mask; addr &= fastmem_mask; - return (addr + size) < fastmem_size; + return (addr + size) <= allocated_fastmem; } -static uae_u8 REGPARAM2 *fastmem_xlate(uaecptr addr) +static uae_u8 REGPARAM2 *fastmem_xlate (uaecptr addr) { addr -= fastmem_start & fastmem_mask; addr &= fastmem_mask; @@ -390,17 +380,17 @@ addrbank fastmem_bank = { * This is very simple, the Amiga shouldn't be doing things with it. */ -static uae_u32 filesys_lget(uaecptr) REGPARAM; -static uae_u32 filesys_wget(uaecptr) REGPARAM; -static uae_u32 filesys_bget(uaecptr) REGPARAM; -static void filesys_lput(uaecptr, uae_u32) REGPARAM; -static void filesys_wput(uaecptr, uae_u32) REGPARAM; -static void filesys_bput(uaecptr, uae_u32) REGPARAM; +static uae_u32 filesys_lget (uaecptr) REGPARAM; +static uae_u32 filesys_wget (uaecptr) REGPARAM; +static uae_u32 filesys_bget (uaecptr) REGPARAM; +static void filesys_lput (uaecptr, uae_u32) REGPARAM; +static void filesys_wput (uaecptr, uae_u32) REGPARAM; +static void filesys_bput (uaecptr, uae_u32) REGPARAM; static uae_u32 filesys_start; /* Determined by the OS */ uae_u8 filesysory[65536]; -uae_u32 REGPARAM2 filesys_lget(uaecptr addr) +uae_u32 REGPARAM2 filesys_lget (uaecptr addr) { uae_u8 *m; addr -= filesys_start & 65535; @@ -409,7 +399,7 @@ uae_u32 REGPARAM2 filesys_lget(uaecptr a return do_get_mem_long ((uae_u32 *)m); } -uae_u32 REGPARAM2 filesys_wget(uaecptr addr) +uae_u32 REGPARAM2 filesys_wget (uaecptr addr) { uae_u8 *m; addr -= filesys_start & 65535; @@ -418,24 +408,24 @@ uae_u32 REGPARAM2 filesys_wget(uaecptr a return do_get_mem_word ((uae_u16 *)m); } -uae_u32 REGPARAM2 filesys_bget(uaecptr addr) +uae_u32 REGPARAM2 filesys_bget (uaecptr addr) { addr -= filesys_start & 65535; addr &= 65535; return filesysory[addr]; } -static void REGPARAM2 filesys_lput(uaecptr addr, uae_u32 l) +static void REGPARAM2 filesys_lput (uaecptr addr, uae_u32 l) { write_log ("filesys_lput called\n"); } -static void REGPARAM2 filesys_wput(uaecptr addr, uae_u32 w) +static void REGPARAM2 filesys_wput (uaecptr addr, uae_u32 w) { write_log ("filesys_wput called\n"); } -static void REGPARAM2 filesys_bput(uaecptr addr, uae_u32 b) +static void REGPARAM2 filesys_bput (uaecptr addr, uae_u32 b) { fprintf (stderr, "filesys_bput called. This usually means that you are using\n"); fprintf (stderr, "Kickstart 1.2. Please give UAE the \"-a\" option next time\n"); @@ -458,19 +448,19 @@ addrbank filesys_bank = { static uae_u32 z3fastmem_mask; -static uae_u32 z3fastmem_lget(uaecptr) REGPARAM; -static uae_u32 z3fastmem_wget(uaecptr) REGPARAM; -static uae_u32 z3fastmem_bget(uaecptr) REGPARAM; -static void z3fastmem_lput(uaecptr, uae_u32) REGPARAM; -static void z3fastmem_wput(uaecptr, uae_u32) REGPARAM; -static void z3fastmem_bput(uaecptr, uae_u32) REGPARAM; -static int z3fastmem_check(uaecptr addr, uae_u32 size) REGPARAM; -static uae_u8 *z3fastmem_xlate(uaecptr addr) REGPARAM; +static uae_u32 z3fastmem_lget (uaecptr) REGPARAM; +static uae_u32 z3fastmem_wget (uaecptr) REGPARAM; +static uae_u32 z3fastmem_bget (uaecptr) REGPARAM; +static void z3fastmem_lput (uaecptr, uae_u32) REGPARAM; +static void z3fastmem_wput (uaecptr, uae_u32) REGPARAM; +static void z3fastmem_bput (uaecptr, uae_u32) REGPARAM; +static int z3fastmem_check (uaecptr addr, uae_u32 size) REGPARAM; +static uae_u8 *z3fastmem_xlate (uaecptr addr) REGPARAM; static uae_u32 z3fastmem_start; /* Determined by the OS */ static uae_u8 *z3fastmem = NULL; -uae_u32 REGPARAM2 z3fastmem_lget(uaecptr addr) +uae_u32 REGPARAM2 z3fastmem_lget (uaecptr addr) { uae_u8 *m; addr -= z3fastmem_start & z3fastmem_mask; @@ -479,7 +469,7 @@ uae_u32 REGPARAM2 z3fastmem_lget(uaecptr return do_get_mem_long ((uae_u32 *)m); } -uae_u32 REGPARAM2 z3fastmem_wget(uaecptr addr) +uae_u32 REGPARAM2 z3fastmem_wget (uaecptr addr) { uae_u8 *m; addr -= z3fastmem_start & z3fastmem_mask; @@ -488,14 +478,14 @@ uae_u32 REGPARAM2 z3fastmem_wget(uaecptr return do_get_mem_word ((uae_u16 *)m); } -uae_u32 REGPARAM2 z3fastmem_bget(uaecptr addr) +uae_u32 REGPARAM2 z3fastmem_bget (uaecptr addr) { addr -= z3fastmem_start & z3fastmem_mask; addr &= z3fastmem_mask; return z3fastmem[addr]; } -void REGPARAM2 z3fastmem_lput(uaecptr addr, uae_u32 l) +void REGPARAM2 z3fastmem_lput (uaecptr addr, uae_u32 l) { uae_u8 *m; addr -= z3fastmem_start & z3fastmem_mask; @@ -504,7 +494,7 @@ void REGPARAM2 z3fastmem_lput(uaecptr ad do_put_mem_long ((uae_u32 *)m, l); } -void REGPARAM2 z3fastmem_wput(uaecptr addr, uae_u32 w) +void REGPARAM2 z3fastmem_wput (uaecptr addr, uae_u32 w) { uae_u8 *m; addr -= z3fastmem_start & z3fastmem_mask; @@ -513,21 +503,21 @@ void REGPARAM2 z3fastmem_wput(uaecptr ad do_put_mem_word ((uae_u16 *)m, w); } -void REGPARAM2 z3fastmem_bput(uaecptr addr, uae_u32 b) +void REGPARAM2 z3fastmem_bput (uaecptr addr, uae_u32 b) { addr -= z3fastmem_start & z3fastmem_mask; addr &= z3fastmem_mask; z3fastmem[addr] = b; } -static int REGPARAM2 z3fastmem_check(uaecptr addr, uae_u32 size) +static int REGPARAM2 z3fastmem_check (uaecptr addr, uae_u32 size) { addr -= z3fastmem_start & z3fastmem_mask; addr &= z3fastmem_mask; - return (addr + size) < z3fastmem_size; + return (addr + size) <= allocated_z3fastmem; } -static uae_u8 REGPARAM2 *z3fastmem_xlate(uaecptr addr) +static uae_u8 REGPARAM2 *z3fastmem_xlate (uaecptr addr) { addr -= z3fastmem_start & z3fastmem_mask; addr &= z3fastmem_mask; @@ -553,23 +543,21 @@ uae_u32 gfxmem_start; static void expamem_map_fastcard (void) { - char buffer[80]; fastmem_start = ((expamem_hi | (expamem_lo >> 4)) << 16); - map_banks (&fastmem_bank, fastmem_start >> 16, fastmem_size >> 16); - sprintf (buffer, "Fastcard: mapped @$%lx: %dMB fast memory\n", fastmem_start, fastmem_size >> 20); - write_log (buffer); + map_banks (&fastmem_bank, fastmem_start >> 16, allocated_fastmem >> 16); + write_log ("Fastcard: mapped @$%lx: %dMB fast memory\n", fastmem_start, allocated_fastmem >> 20); } static void expamem_init_fastcard (void) { expamem_init_clear(); - if (fastmem_size == 0x100000) + if (allocated_fastmem == 0x100000) expamem_write (0x00, Z2_MEM_1MB + add_memory + zorroII); - else if (fastmem_size == 0x200000) + else if (allocated_fastmem == 0x200000) expamem_write (0x00, Z2_MEM_2MB + add_memory + zorroII); - else if (fastmem_size == 0x400000) + else if (allocated_fastmem == 0x400000) expamem_write (0x00, Z2_MEM_4MB + add_memory + zorroII); - else if (fastmem_size == 0x800000) + else if (allocated_fastmem == 0x800000) expamem_write (0x00, Z2_MEM_8MB + add_memory + zorroII); expamem_write (0x08, care_addr); @@ -602,7 +590,7 @@ static void expamem_map_filesys (void) filesys_start = ((expamem_hi | (expamem_lo >> 4)) << 16); map_banks (&filesys_bank, filesys_start >> 16, 1); - write_log ("Filesystem: mapped memory.\n"); + write_log ("Filesystem: mapped memory @$%lx.\n", filesys_start); /* 68k code needs to know this. */ a = here (); org (0xF0FFFC); @@ -612,7 +600,12 @@ static void expamem_map_filesys (void) static void expamem_init_filesys (void) { - uae_u8 diagarea[] = { 0x90, 0x00, 0x01, 0x0C, 0x01, 0x00, 0x01, 0x06 }; + /* struct DiagArea - the size has to be large enough to store several device ROMTags */ + uae_u8 diagarea[] = { 0x90, 0x00, /* da_Config, da_Flags */ + 0x02, 0x00, /* da_Size */ + 0x01, 0x00, /* da_DiagPoint */ + 0x01, 0x06 /* da_BootPoint */ + }; expamem_init_clear(); expamem_write (0x00, Z2_MEM_64KB | rom_card | zorroII); @@ -628,6 +621,7 @@ static void expamem_init_filesys (void) expamem_write (0x20, 0x00); /* ser.no. Byte 2 */ expamem_write (0x24, 0x01); /* ser.no. Byte 3 */ + /* er_InitDiagVec */ expamem_write (0x28, 0x10); /* Rom-Offset hi */ expamem_write (0x2c, 0x00); /* ROM-Offset lo */ @@ -653,32 +647,30 @@ static void expamem_init_filesys (void) static void expamem_map_z3fastmem (void) { - char buffer[80]; z3fastmem_start = ((expamem_hi | (expamem_lo >> 4)) << 16); - map_banks (&z3fastmem_bank, z3fastmem_start >> 16, z3fastmem_size >> 16); + map_banks (&z3fastmem_bank, z3fastmem_start >> 16, currprefs.z3fastmem_size >> 16); - sprintf (buffer, "Fastmem (32bit): mapped @$%lx: %d MB Zorro III fast memory \n", - z3fastmem_start, z3fastmem_size / 0x100000); - write_log (buffer); + write_log ("Fastmem (32bit): mapped @$%lx: %d MB Zorro III fast memory \n", + z3fastmem_start, allocated_z3fastmem / 0x100000); } static void expamem_init_z3fastmem (void) { - int code = (z3fastmem_size == 0x100000 ? Z2_MEM_1MB - : z3fastmem_size == 0x200000 ? Z2_MEM_2MB - : z3fastmem_size == 0x400000 ? Z2_MEM_4MB - : z3fastmem_size == 0x800000 ? Z2_MEM_8MB - : z3fastmem_size == 0x1000000 ? Z2_MEM_16MB - : z3fastmem_size == 0x2000000 ? Z2_MEM_32MB - : z3fastmem_size == 0x4000000 ? Z2_MEM_64MB - : z3fastmem_size == 0x8000000 ? Z2_MEM_128MB - : z3fastmem_size == 0x10000000 ? Z2_MEM_256MB - : z3fastmem_size == 0x20000000 ? Z2_MEM_512MB + int code = (allocated_z3fastmem == 0x100000 ? Z2_MEM_1MB + : allocated_z3fastmem == 0x200000 ? Z2_MEM_2MB + : allocated_z3fastmem == 0x400000 ? Z2_MEM_4MB + : allocated_z3fastmem == 0x800000 ? Z2_MEM_8MB + : allocated_z3fastmem == 0x1000000 ? Z2_MEM_16MB + : allocated_z3fastmem == 0x2000000 ? Z2_MEM_32MB + : allocated_z3fastmem == 0x4000000 ? Z2_MEM_64MB + : allocated_z3fastmem == 0x8000000 ? Z2_MEM_128MB + : allocated_z3fastmem == 0x10000000 ? Z2_MEM_256MB + : allocated_z3fastmem == 0x20000000 ? Z2_MEM_512MB : Z2_MEM_1GB); expamem_init_clear(); expamem_write (0x00, add_memory | zorroIII | code); - expamem_write (0x08, no_shutup | force_z3 | (z3fastmem_size > 0x800000 ? ext_size : Z3_MEM_AUTO)); + expamem_write (0x08, no_shutup | force_z3 | (allocated_z3fastmem > 0x800000 ? ext_size : Z3_MEM_AUTO)); expamem_write (0x04, 3); @@ -694,7 +686,6 @@ static void expamem_init_z3fastmem (void expamem_write (0x2c, 0x00); /* ROM-Offset lo */ expamem_write (0x40, 0x00); /* Ctrl/Statusreg.*/ - } #ifdef PICASSO96 @@ -704,11 +695,9 @@ static void expamem_init_z3fastmem (void static void expamem_map_gfxcard (void) { - char buffer[80]; gfxmem_start = ((expamem_hi | (expamem_lo >> 4)) << 16); - map_banks (&gfxmem_bank, gfxmem_start >> 16, gfxmem_size >> 16); - sprintf (buffer, "UAEGFX-card: mapped @$%lx \n", gfxmem_start); - write_log (buffer); + map_banks (&gfxmem_bank, gfxmem_start >> 16, allocated_gfxmem >> 16); + write_log ("UAEGFX-card: mapped @$%lx \n", gfxmem_start); } static void expamem_init_gfxcard (void) @@ -716,7 +705,7 @@ static void expamem_init_gfxcard (void) expamem_init_clear(); expamem_write (0x00, zorroIII); - switch (gfxmem_size) { + switch (allocated_gfxmem) { case 0x00100000: expamem_write (0x08, no_shutup | force_z3 | Z3_MEM_1MB); break; @@ -779,31 +768,39 @@ void expamem_reset() (*card_init[0]) (); } -void expansion_init(void) +void expansion_init (void) { - if (fastmem_size > 0) { + allocated_fastmem = currprefs.fastmem_size; + allocated_z3fastmem = currprefs.z3fastmem_size; + allocated_gfxmem = currprefs.gfxmem_size; + + if (allocated_fastmem > 0) { do { - fastmem_mask = fastmem_size - 1; - fastmemory = (uae_u8 *)malloc(fastmem_size); - if (!fastmemory) - fastmem_size >>= 1; - } while (!fastmemory && fastmem_size >= 1024 * 1024); - if (fastmemory == NULL) { + fastmem_mask = allocated_fastmem - 1; + fastmemory = (uae_u8 *)malloc (allocated_fastmem); + if (fastmemory == 0) + allocated_fastmem >>= 1; + } while (fastmemory == 0 && allocated_fastmem >= 1024 * 1024); + + if (fastmemory == 0) { write_log ("Out of memory for fastmem card.\n"); + allocated_fastmem = 0; } } - if (z3fastmem_size > 0) { - z3fastmem_mask = z3fastmem_size - 1; - z3fastmem = (uae_u8 *)malloc(z3fastmem_size); - if (z3fastmem == NULL) { - write_log ("Out of memory for Fastmem.(32bit)\n"); + if (allocated_z3fastmem > 0) { + z3fastmem_mask = allocated_z3fastmem - 1; + z3fastmem = (uae_u8 *)malloc (allocated_z3fastmem); + if (z3fastmem == 0) { + write_log ("Out of memory for 32 bit fast memory.\n"); + allocated_z3fastmem = 0; } } - if (gfxmem_size > 0) { - gfxmem_mask = gfxmem_size - 1; - gfxmemory = (uae_u8 *)malloc(gfxmem_size); - if (!gfxmemory) { - write_log ("Out of memory for UAEGFX-card.\n"); + if (allocated_gfxmem > 0) { + gfxmem_mask = allocated_gfxmem - 1; + gfxmemory = (uae_u8 *)malloc (allocated_gfxmem); + if (gfxmemory == 0) { + write_log ("Out of memory for graphics card memory\n"); + allocated_gfxmem = 0; } } }