|
|
| version 1.1.1.1, 2003/10/16 17:58:02 | version 1.4, 2003/11/14 10:04:56 |
|---|---|
| Line 1 | Line 1 |
| #include "compiler.h" | #include "compiler.h" |
| #include "i286.h" | |
| #include "pccore.h" | #include "pccore.h" |
| #include "iocore.h" | #include "iocore.h" |
| #include "sound.h" | #include "sound.h" |
| Line 26 void fmport_a(NEVENTITEM item) { | Line 27 void fmport_a(NEVENTITEM item) { |
| if (intreq) { | if (intreq) { |
| pcm86.write = 1; | pcm86.write = 1; |
| pic_setirq(fmtimer.irq); | pic_setirq(fmtimer.irq); |
| // TRACEOUT(("fm int-A")); | |
| } | } |
| // TRACE_("A: fifo = ", pcm86.fifo); | // TRACE_("A: fifo = ", pcm86.fifo); |
| // TRACE_("A: virbuf = ", pcm86.virbuf); | // TRACE_("A: virbuf = ", pcm86.virbuf); |
| Line 51 void fmport_b(NEVENTITEM item) { | Line 53 void fmport_b(NEVENTITEM item) { |
| if (intreq) { | if (intreq) { |
| pcm86.write = 1; | pcm86.write = 1; |
| pic_setirq(fmtimer.irq); | pic_setirq(fmtimer.irq); |
| // TRACEOUT(("fm int-B")); | |
| } | } |
| // TRACE_("B: fifo = ", pcm86.fifo); | // TRACE_("B: fifo = ", pcm86.fifo); |
| // TRACE_("B: virbuf = ", pcm86.virbuf); | // TRACE_("B: virbuf = ", pcm86.virbuf); |
| Line 60 void fmport_b(NEVENTITEM item) { | Line 63 void fmport_b(NEVENTITEM item) { |
| static void set_fmtimeraevent(BOOL absolute) { | static void set_fmtimeraevent(BOOL absolute) { |
| long l = 18 * (1024 - fmtimer.timera); | SINT32 l; |
| l = 18 * (1024 - fmtimer.timera); | |
| if (pc.cpumode & CPUMODE_8MHz) { // 4MHz | if (pc.cpumode & CPUMODE_8MHz) { // 4MHz |
| l = (l * 1248 / 625) * pc.multiple; | l = (l * 1248 / 625) * pc.multiple; |
| } | } |
| Line 73 static void set_fmtimeraevent(BOOL absol | Line 77 static void set_fmtimeraevent(BOOL absol |
| static void set_fmtimerbevent(BOOL absolute) { | static void set_fmtimerbevent(BOOL absolute) { |
| long l = 288 * (256 - fmtimer.timerb); | SINT32 l; |
| l = 288 * (256 - fmtimer.timerb); | |
| if (pc.cpumode & CPUMODE_8MHz) { // 4MHz | if (pc.cpumode & CPUMODE_8MHz) { // 4MHz |
| l = (l * 1248 / 625) * pc.multiple; | l = (l * 1248 / 625) * pc.multiple; |
| } | } |
| Line 88 void fmtimer_reset(BYTE irq) { | Line 93 void fmtimer_reset(BYTE irq) { |
| ZeroMemory(&fmtimer, sizeof(fmtimer)); | ZeroMemory(&fmtimer, sizeof(fmtimer)); |
| #if 1 | #if 0 // move |
| fmtimer.reg = 0x3f; // !! | fmtimer.reg = 0x3f; |
| set_fmtimeraevent(NEVENT_ABSOLUTE); | set_fmtimeraevent(NEVENT_ABSOLUTE); |
| set_fmtimerbevent(NEVENT_ABSOLUTE); | set_fmtimerbevent(NEVENT_ABSOLUTE); |
| #endif | #endif |
| Line 101 void fmtimer_reset(BYTE irq) { | Line 106 void fmtimer_reset(BYTE irq) { |
| void fmtimer_setreg(BYTE reg, BYTE value) { | void fmtimer_setreg(BYTE reg, BYTE value) { |
| // TRACEOUT(("fm %x %x [%.4x:%.4x]", reg, value, I286_CS, I286_IP)); | |
| switch(reg) { | switch(reg) { |
| case 0x24: | case 0x24: |
| fmtimer.timera = (value << 2) + (fmtimer.timera & 3); | fmtimer.timera = (value << 2) + (fmtimer.timera & 3); |