--- xmil/io/memio.c 2004/08/05 04:53:15 1.1 +++ xmil/io/memio.c 2004/08/20 23:01:16 1.4 @@ -4,41 +4,58 @@ #include "iocore.h" + UINT8 biosmem[0x8000]; +#if defined(SUPPORT_BANKMEM) + UINT8 bankmem[16][0x8000]; +#endif + + void memio_update(void) { - if (memio.ems & 0x10) { +#if defined(SUPPORT_BANKMEM) + if (memio.bank & 0x10) { +#endif if (!memio.ram) { - RAM0r = mBIOS; - RAM0w = mMAIN; + z80core.e.memread = biosmem; } else { - RAM0r = RAM0w = mMAIN; + z80core.e.memread = mainmem; } + z80core.e.memwrite = mainmem; +#if defined(SUPPORT_BANKMEM) } else { - RAM0r = RAM0w = mBANK[memio.ems & 15]; + z80core.e.memread = bankmem[memio.bank & 15]; + z80core.e.memwrite = bankmem[memio.bank & 15]; } +#endif } -void IOOUTCALL memio_ems_o(UINT port, REG8 dat) { +#if defined(SUPPORT_BANKMEM) +void IOOUTCALL memio_bank_o(UINT port, REG8 dat) { - memio.ems = dat; + memio.bank = dat; memio_update(); (void)port; } -REG8 IOINPCALL memio_ems_i(UINT port) { +REG8 IOINPCALL memio_bank_i(UINT port) { (void)port; - return(memio.ems); + return(memio.bank); } +#endif void IOOUTCALL memio_rom(UINT port, REG8 dat) { memio.ram = 0x00; - if (memio.ems & 0x10) { - RAM0r = mBIOS; +#if defined(SUPPORT_BANKMEM) + if (memio.bank & 0x10) { +#endif + z80core.e.memread = biosmem; +#if defined(SUPPORT_BANKMEM) } +#endif (void)port; (void)dat; } @@ -46,9 +63,13 @@ void IOOUTCALL memio_rom(UINT port, REG8 void IOOUTCALL memio_ram(UINT port, REG8 dat) { memio.ram = 0x10; - if (memio.ems & 0x10) { - RAM0r = mMAIN; +#if defined(SUPPORT_BANKMEM) + if (memio.bank & 0x10) { +#endif + z80core.e.memread = mainmem; +#if defined(SUPPORT_BANKMEM) } +#endif (void)port; (void)dat; } @@ -59,7 +80,9 @@ void IOOUTCALL memio_ram(UINT port, REG8 void memio_reset(void) { memio.ram = 0x00; - memio.ems = 0x78; +#if defined(SUPPORT_BANKMEM) + memio.bank = 0x78; +#endif memio_update(); }