--- xmil/io/iocore.c 2004/08/08 17:45:52 1.7 +++ xmil/io/iocore.c 2004/08/12 17:57:36 1.9 @@ -180,18 +180,29 @@ 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 (pccore.ROM_TYPE >= 3) { @@ -204,6 +215,9 @@ void iocore_reset(void) { iocore.e.inpfn[0x07] = opm_i; iocore.e.outfn[0x07] = opm_o; } + for (i=0; i