--- xmil/io/iocore.h 2004/08/07 10:53:01 1.6 +++ xmil/io/iocore.h 2005/02/04 06:42:11 1.8 @@ -9,31 +9,37 @@ typedef void (IOOUTCALL *IOOUT)(UINT port, REG8 dat); typedef REG8 (IOINPCALL *IOINP)(UINT port); -typedef void (*IOCBFN)(void); +typedef struct { + UINT8 mode; + UINT8 ppib; +#if defined(SUPPORT_BANKMEM) + UINT8 bankmem; +#else + UINT8 __bankmem; // protect +#endif + UINT8 padding; +} IOSTAT; -enum { - IOCORE_OUTHTBL = 0x01, - IOCORE_INPHTBL = 0x02 -}; - -typedef union { - IOOUT fn; - IOOUT *tbl; -} OUTHTBL; - -typedef union { - IOINP fn; - IOINP *tbl; -} INPHTBL; +typedef struct { + IOINP inpfn[0x40]; + IOOUT outfn[0x40]; +} IOFNTBL; typedef struct { - UINT8 mode; - UINT8 padding[15]; -// IOINP inpt[4]; -// IOOUT outt[4]; -// UINT8 iofg[0x20]; - INPHTBL inph[0x20]; - OUTHTBL outh[0x20]; + SINT32 framestartclock; + SINT32 dispclock; + SINT32 vsyncstart; +#if !defined(MAINFRAMES_OLD) + SINT32 vsyncend; +#else + SINT32 vpulseclock; +#endif +} IOEXT; + +typedef struct { + IOFNTBL f; + IOSTAT s; + IOEXT e; } IOCORE; @@ -64,7 +70,6 @@ extern CRTC crtc; extern CTC ctc; extern DMAC dma; extern FDC fdc; -extern MEMIO memio; extern PCG pcg; extern PPI ppi; extern SIO sio; @@ -73,11 +78,6 @@ extern SUBCPU subcpu; void iocore_reset(void); -void iocore_regoutmsb(UINT msb, IOOUT fn); -void iocore_reginpmsb(UINT msb, IOINP fn); - -void iocore_regout(UINT port, IOOUT fn); -void iocore_reginp(UINT port, IOINP fn); void IOOUTCALL iocore_out(UINT port, REG8 dat); REG8 IOINPCALL iocore_inp(UINT port);