--- np2/io/pit.c 2004/02/19 11:32:12 1.16 +++ np2/io/pit.c 2004/03/10 23:01:08 1.18 @@ -10,7 +10,6 @@ #include "beep.h" -// #define uPD71054 // NP2はuPD8253Cベース #define BEEPCOUNTEREX // BEEPアイドル時のカウンタをα倍に @@ -303,12 +302,37 @@ static void IOOUTCALL pit_o77(UINT port, beep_modeset(); } } +#if defined(uPD71054) + else { + TRACEOUT(("multiple latch commands - %x", dat)); + for (ch=0; ch<3; ch++) { + if (dat & (2 << ch)) { + if (!(dat & 0x10)) { + } + if (!(dat & 0x20)) { + } + } + } + } +#endif (void)port; } static REG8 IOINPCALL pit_i71(UINT port) { - return(pit_getcount((port >> 1) & 3)); + int ch; + + ch = (port >> 1) & 3; +#if defined(uPD71054) + if (pit.stat[ch]) { + REG8 ret; + ret = pit.stat[ch]; + pit.stat[ch] = 0; + TRACEOUT(("stat out -> %d-%x", ch, ret)); + return(ret); + } +#endif + return(pit_getcount(ch)); } @@ -342,8 +366,12 @@ void itimer_bind(void) { iocore_attachsysoutex(0x0071, 0x0cf1, pito71, 4); iocore_attachsysinpex(0x0071, 0x0cf1, piti71, 4); + iocore_attachout(0x3fd9, pit_o71); iocore_attachout(0x3fdb, pit_o73); + iocore_attachout(0x3fdd, pit_o75); iocore_attachout(0x3fdf, pit_o77); + iocore_attachinp(0x3fd9, pit_i71); iocore_attachinp(0x3fdb, pit_i71); + iocore_attachinp(0x3fdd, pit_i71); }