static void REGPARAM2 expamem_wput (uaecptr addr, uae_u32 value) { #ifdef EXP_DEBUG write_log (_T("expamem_wput %x %x\n"), addr, value); #endif #ifdef JIT special_mem |= S_WRITE; #endif value &= 0xffff; if (ecard >= cardno) return; if (expamem_type() != zorroIII) write_log (_T("warning: WRITE.W to address $%lx : value $%x\n"), addr, value); else { switch (addr & 0xff) { case 0x44: if (expamem_type() == zorroIII) { uae_u32 p1, p2; // +Bernd Roesch & Toni Wilen p1 = get_word (regs.regs[11] + 0x20); if (expamem[0] & add_memory) { // Z3 RAM expansion p2 = 0; while (!p2 && z3num < 2) { if (z3num == 0 && currprefs.z3fastmem_size) p2 = z3fastmem_start >> 16; else if (z3num == 1 && currprefs.z3fastmem2_size) p2 = z3fastmem2_start >> 16; if (!p2) z3num++; } z3num++; } else { // Z3 P96 RAM if (p96ram_start & 0xff000000)
static void REGPARAM2 expamem_wput (uaecptr addr, uae_u32 value) { #ifdef JIT special_mem |= SPECIAL_MEM_WRITE; #endif if (expamem_type() != zorroIII) write_log ("warning: WRITE.W to address $%lx : value $%x\n", addr, value); else { switch (addr & 0xff) { case 0x44: if (expamem_type() == zorroIII) { // +Bernd Roesch value = value - 0x3000; // maps to 0x10000000 chipmem_wput (regs.regs[11] + 0x20, value); chipmem_wput (regs.regs[11] + 0x28, value); // -Bernd Roesch expamem_hi = value; (*card_map[ecard]) (); write_log (" Card %d (Zorro%s) done.\n", ecard + 1, expamem_type() == 0xc0 ? "II" : "III"); ++ecard; if (ecard < MAX_EXPANSION_BOARDS) (*card_init[ecard]) (); else expamem_init_clear2 (); } break; } } }
static void REGPARAM2 expamem_wput (uaecptr addr, uae_u32 value) { #ifdef EXP_DEBUG write_log (_T("expamem_wput %x %x\n"), addr, value); #endif #ifdef JIT special_mem |= S_WRITE; #endif value &= 0xffff; if (ecard >= cardno) return; if (expamem_type () != zorroIII) write_log (_T("warning: WRITE.W to address $%x : value $%x\n"), addr, value); else { switch (addr & 0xff) { case 0x44: if (expamem_type () == zorroIII) { if (currprefs.jit_direct_compatible_memory) { uae_u32 p1, p2 = 0; // +Bernd Roesch & Toni Wilen p1 = get_word (regs.regs[11] + 0x20); if (expamem[0] & add_memory) { // Z3 RAM expansion p2 = 0; while (!p2 && z3num < 2) { if (z3num == 0 && currprefs.z3fastmem_size) p2 = z3fastmem_bank.start >> 16; else if (z3num == 1 && currprefs.z3fastmem2_size) p2 = z3fastmem2_bank.start >> 16; if (!p2) z3num++; } z3num++; } else { // Z3 P96 RAM if (gfxmem_bank.start & 0xff000000) p2 = gfxmem_bank.start >> 16; } put_word (regs.regs[11] + 0x20, p2); put_word (regs.regs[11] + 0x28, p2); // -Bernd Roesch expamem_hi = p2; (*card_map[ecard]) (); if (p1 != p2) write_log (_T(" Card %d remapped %04x0000 -> %04x0000\n"), ecard + 1, p1, p2); } else {
static void REGPARAM2 expamem_wput (uaecptr addr, uae_u32 value) { #ifdef JIT special_mem |= SPECIAL_MEM_WRITE; #endif value &= 0xffff; if (ecard >= cardno) return; if (expamem_type() != zorroIII) write_log ("warning: WRITE.W to address $%lx : value $%x\n", addr, value); else { switch (addr & 0xff) { case 0x44: if (expamem_type() == zorroIII) { uae_u32 p1, p2; // +Bernd Roesch & Toni Wilen p1 = get_word (regs.regs[11] + 0x20); if (expamem[0] & add_memory) { // Z3 RAM expansion if (z3num == 0) p2 = z3fastmem_start >> 16; else p2 = z3fastmem2_start >> 16; z3num++; } else { // Z3 P96 RAM p2 = p96ram_start >> 16; } put_word (regs.regs[11] + 0x20, p2); put_word (regs.regs[11] + 0x28, p2); // -Bernd Roesch expamem_hi = p2; (*card_map[ecard]) (); ecard++; if (p1 != p2) write_log (" Card %d remapped %04x0000 -> %04x0000\n", ecard, p1, p2); write_log (" Card %d (Zorro%s) done.\n", ecard, expamem_type () == 0xc0 ? "II" : "III"); if (ecard < cardno) (*card_init[ecard]) (); else expamem_init_clear2 (); }
static void REGPARAM2 expamem_bput (uaecptr addr, uae_u32 value) { #ifdef JIT special_mem |= SPECIAL_MEM_WRITE; #endif switch (addr & 0xff) { case 0x30: case 0x32: expamem_hi = 0; expamem_lo = 0; expamem_write (0x48, 0x00); break; case 0x48: if (expamem_type () == zorroII) { expamem_hi = value & 0xFF; (*card_map[ecard]) (); write_log (" Card %d (Zorro%s) done.\n", ecard + 1, expamem_type() == 0xc0 ? "II" : "III"); ++ecard; if (ecard < MAX_EXPANSION_BOARDS) (*card_init[ecard]) (); else expamem_init_clear2 (); } else if (expamem_type() == zorroIII) expamem_lo = value; break; case 0x4a: if (expamem_type () == zorroII) expamem_lo = value; break; case 0x4c: write_log (" Card %d (Zorro %s) had no success.\n", ecard + 1, expamem_type() == 0xc0 ? "II" : "III"); ++ecard; if (ecard < MAX_EXPANSION_BOARDS) (*card_init[ecard]) (); else expamem_init_clear2 (); break; } }
static void REGPARAM2 expamem_wput (uaecptr addr, uae_u32 value) { if (expamem_type() != zorroIII) 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]) (); write_log (" Card %d (Zorro%s) done.\n", ecard + 1, expamem_type() == 0xc0 ? "II" : "III"); ++ecard; if (ecard < MAX_EXPANSION_BOARDS) (*card_init[ecard]) (); else expamem_init_clear2 (); } break; } } }