--- xmil/io/iocore.c 2004/08/08 17:45:52 1.7 +++ xmil/io/iocore.c 2004/08/17 12:30:41 1.10 @@ -63,6 +63,7 @@ static void IOOUTCALL port1fxx_o(UINT po return; } } +#if defined(SUPPORT_TURBOZ) if (pccore.ROM_TYPE >= 3) { if (lsb == 0xb0) { extpal_o(port, dat); @@ -81,6 +82,7 @@ static void IOOUTCALL port1fxx_o(UINT po return; } } +#endif if (msb6 == 0x90) { sio_o(port, dat); return; @@ -111,6 +113,7 @@ static REG8 IOINPCALL port1fxx_i(UINT po return(dipsw_i(port)); } } +#if defined(SUPPORT_TURBOZ) if (pccore.ROM_TYPE >= 3) { if (lsb == 0xb0) { return(extpal_i(port)); @@ -128,6 +131,7 @@ static REG8 IOINPCALL port1fxx_i(UINT po return(blackctrl_i(port)); } } +#endif if (msb6 == 0x90) { return(sio_i(port)); } @@ -180,30 +184,46 @@ static const IOOUT defout[0x20] = { memio_ram, port1fxx_o}; +typedef void (*INITFN)(void); + +static const INITFN initfn[] = { + cgrom_reset, cmt_reset, crtc_reset, + ctc_reset, dmac_reset, fdc_reset, + memio_reset, pcg_reset, ppi_reset, + sio_reset, sndboard_reset, subcpu_reset, + vramio_reset}; + // ---- void iocore_reset(void) { + UINT i; + ZeroMemory(&iocore, sizeof(iocore)); CopyMemory(iocore.e.inpfn, definp, sizeof(definp)); CopyMemory(iocore.e.outfn, defout, sizeof(defout)); -#if defined(SUPPORT_EMS) +#if defined(SUPPORT_BANKMEM) if (pccore.ROM_TYPE >= 2) { - iocore.e.inpfn[0x0b] = memio_ems_i; - iocore.e.outfn[0x0b] = memio_ems_o; + iocore.e.inpfn[0x0b] = memio_bank_i; + iocore.e.outfn[0x0b] = memio_bank_o; } #endif +#if defined(SUPPORT_TURBOZ) if (pccore.ROM_TYPE >= 3) { iocore.e.inpfn[0x10] = palette_i; iocore.e.inpfn[0x11] = palette_i; iocore.e.inpfn[0x12] = palette_i; iocore.e.inpfn[0x13] = ply_i; } +#endif if (pccore.SOUND_SW) { iocore.e.inpfn[0x07] = opm_i; iocore.e.outfn[0x07] = opm_o; } + for (i=0; i