|
|
| version 1.14, 2004/01/13 05:30:58 | version 1.18, 2004/03/10 23:01:08 |
|---|---|
| Line 10 | Line 10 |
| #include "beep.h" | #include "beep.h" |
| // #define uPD71054 // NP2はuPD8253Cベース | |
| #define BEEPCOUNTEREX // BEEPアイドル時のカウンタをα倍に | #define BEEPCOUNTEREX // BEEPアイドル時のカウンタをα倍に |
| // --- Interval timer | // --- Interval timer |
| // ver0.31 常に回す… | |
| static void setsystimerevent_noint(BOOL absolute) { | |
| nevent_set(NEVENT_ITIMER, pccore.multiple << 16, | |
| systimer_noint, absolute); | |
| } | |
| void systimer_noint(NEVENTITEM item) { | |
| if (item->flag & NEVENT_SETEVENT) { | |
| setsystimerevent_noint(NEVENT_RELATIVE); | |
| } | |
| } | |
| static void setsystimerevent(BOOL absolute) { | static void setsystimerevent(BOOL absolute) { |
| SINT32 cnt; | SINT32 cnt; |
| Line 317 static void IOOUTCALL pit_o77(UINT port, | Line 302 static void IOOUTCALL pit_o77(UINT port, |
| beep_modeset(); | 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; | (void)port; |
| } | } |
| static REG8 IOINPCALL pit_i71(UINT 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)); | |
| } | } |
| Line 337 static const IOINP piti71[4] = { | Line 347 static const IOINP piti71[4] = { |
| void itimer_reset(void) { | void itimer_reset(void) { |
| ZeroMemory(&pit, sizeof(pit)); | ZeroMemory(&pit, sizeof(pit)); |
| if (pccore.cpumode & CPUMODE_8MHz) { | if (pccore.cpumode & CPUMODE_8MHZ) { |
| pit.value[1] = 998; // 4MHz | pit.value[1] = 998; // 4MHz |
| } | } |
| else { | else { |
| Line 356 void itimer_bind(void) { | Line 366 void itimer_bind(void) { |
| iocore_attachsysoutex(0x0071, 0x0cf1, pito71, 4); | iocore_attachsysoutex(0x0071, 0x0cf1, pito71, 4); |
| iocore_attachsysinpex(0x0071, 0x0cf1, piti71, 4); | iocore_attachsysinpex(0x0071, 0x0cf1, piti71, 4); |
| iocore_attachout(0x3fd9, pit_o71); | |
| iocore_attachout(0x3fdb, pit_o73); | iocore_attachout(0x3fdb, pit_o73); |
| iocore_attachout(0x3fdd, pit_o75); | |
| iocore_attachout(0x3fdf, pit_o77); | iocore_attachout(0x3fdf, pit_o77); |
| iocore_attachinp(0x3fd9, pit_i71); | |
| iocore_attachinp(0x3fdb, pit_i71); | iocore_attachinp(0x3fdb, pit_i71); |
| iocore_attachinp(0x3fdd, pit_i71); | |
| } | } |