--- xmil/io/iocore.c 2004/08/05 04:53:15 1.4 +++ xmil/io/iocore.c 2004/08/09 02:47:01 1.8 @@ -35,41 +35,6 @@ static REG8 IOINPCALL dummy_inp(UINT por // ---- -static void IOOUTCALL opm_o(UINT port, REG8 dat) { - - REG8 lsb; - - lsb = (UINT8)port; - if (lsb == 0x00) { // 0700 - sndboard_opmreg(port, dat); - } - else if (lsb == 0x01) { // 0701 - sndboard_opmdat(port, dat); - } - else if ((lsb & (~3)) == 0x04) { // 0704-0707 - ctc_o(port, dat); - } -} - -static REG8 IOINPCALL opm_i(UINT port) { - - REG8 lsb; - - lsb = (UINT8)port; - if ((lsb & (~1)) == 0x00) { // 0700/0701 - return(sndboard_opmsta(port)); - } - else if ((lsb & (~3)) == 0x04) { // 0704-0707 - return(ctc_i(port)); - } - else { - return(0xff); - } -} - - -// ---- - static void IOOUTCALL port1fxx_o(UINT port, REG8 dat) { REG8 lsb; @@ -172,7 +137,7 @@ static REG8 IOINPCALL port1fxx_i(UINT po // ---- -static const INPHTBL definp[0x20] = { +static const IOINP definp[0x20] = { dummy_inp, dummy_inp, dummy_inp, dummy_inp, dummy_inp, dummy_inp, @@ -193,7 +158,7 @@ static const INPHTBL definp[0x20] = { dummy_inp, dummy_inp, dummy_inp, port1fxx_i}; -static const OUTHTBL defout[0x20] = { +static const IOOUT defout[0x20] = { dummy_out, dummy_out, dummy_out, dummy_out, dummy_out, dummy_out, @@ -206,7 +171,7 @@ static const OUTHTBL defout[0x20] = { palette_o, palette_o, palette_o, ply_o, - pcg_o, pcg_o, + dummy_out, pcg_o, pcg_o, pcg_o, crtc_o, subcpu_o, @@ -221,34 +186,26 @@ static const OUTHTBL defout[0x20] = { void iocore_reset(void) { ZeroMemory(&iocore, sizeof(iocore)); - CopyMemory(iocore.inph, definp, sizeof(definp)); - CopyMemory(iocore.outh, defout, sizeof(defout)); + CopyMemory(iocore.e.inpfn, definp, sizeof(definp)); + CopyMemory(iocore.e.outfn, defout, sizeof(defout)); +#if defined(SUPPORT_BANKMEM) if (pccore.ROM_TYPE >= 2) { - iocore.inph[0x0b].fn = memio_ems_i; - iocore.outh[0x0b].fn = memio_ems_o; + iocore.e.inpfn[0x0b] = memio_bank_i; + iocore.e.outfn[0x0b] = memio_bank_o; } +#endif if (pccore.ROM_TYPE >= 3) { - iocore.inph[0x10].fn = palette_i; - iocore.inph[0x11].fn = palette_i; - iocore.inph[0x12].fn = palette_i; - iocore.inph[0x13].fn = ply_i; + iocore.e.inpfn[0x10] = palette_i; + iocore.e.inpfn[0x11] = palette_i; + iocore.e.inpfn[0x12] = palette_i; + iocore.e.inpfn[0x13] = ply_i; } if (pccore.SOUND_SW) { - iocore.inph[0x07].fn = opm_i; - iocore.outh[0x07].fn = opm_o; + iocore.e.inpfn[0x07] = opm_i; + iocore.e.outfn[0x07] = opm_o; } } -void iocore_regoutmsb(UINT msb, IOOUT fn) { - - iocore.outh[msb].fn = fn; -} - -void iocore_reginpmsb(UINT msb, IOINP fn) { - - iocore.inph[msb].fn = fn; -} - // ---- @@ -257,7 +214,7 @@ void IOOUTCALL iocore_out(UINT port, REG UINT msb; msb = port >> 8; - if (ppi.IO_MODE) { + if (iocore.s.mode) { gram2_o(port, dat); } else if (msb >= 0x40) { @@ -267,7 +224,7 @@ void IOOUTCALL iocore_out(UINT port, REG tram_o(port, dat); } else { - (*iocore.outh[msb].fn)(port, dat); + (*iocore.e.outfn[msb])(port, dat); } } @@ -276,7 +233,7 @@ REG8 IOINPCALL iocore_inp(UINT port) { UINT msb; msb = port >> 8; - ppi.IO_MODE = 0; + iocore.s.mode = 0; if (msb >= 0x40) { return(gram_i(port)); } @@ -284,7 +241,7 @@ REG8 IOINPCALL iocore_inp(UINT port) { return(tram_i(port)); } else { - return((*iocore.inph[msb].fn)(port)); + return((*iocore.e.inpfn[msb])(port)); } }