| version 1.2, 2003/11/12 20:02:54 | version 1.4, 2004/01/13 05:30:58 | 
| Line 13 | Line 13 | 
 |  |  | 
 | // ---- 8253C-2 | // ---- 8253C-2 | 
 |  |  | 
| static UINT16 pit3_latch(void) { | static UINT pit3_latch(void) { | 
 |  |  | 
 | SINT32  clock; | SINT32  clock; | 
 |  |  | 
 | clock = nevent_getremain(NEVENT_MUSICGEN); | clock = nevent_getremain(NEVENT_MUSICGEN); | 
 | if (clock >= 0) { | if (clock >= 0) { | 
| clock /= pc.multiple; | clock /= pccore.multiple; | 
 | clock /= 8; | clock /= 8; | 
| if (pc.baseclock == PCBASECLOCK25) { | if (pccore.baseclock == PCBASECLOCK25) { | 
 | clock = clock * 13 / 16; | clock = clock * 13 / 16; | 
 | } | } | 
| return((UINT16)clock); | return(clock); | 
 | } | } | 
 | return(0); | return(0); | 
 | } | } | 
 |  |  | 
| static void pit3_setflag(BYTE value) { | static void pit3_setflag(REG8 value) { | 
 |  |  | 
 | pit.flag[3] = 0; | pit.flag[3] = 0; | 
 | if (value & 0x30) { | if (value & 0x30) { | 
| Line 41  static void pit3_setflag(BYTE value) { | Line 41  static void pit3_setflag(BYTE value) { | 
 | } | } | 
 | } | } | 
 |  |  | 
| static BOOL pit3_setcount(BYTE value) { | static BOOL pit3_setcount(REG8 value) { | 
 |  |  | 
 | switch(pit.mode[3] & 0x30) { | switch(pit.mode[3] & 0x30) { | 
 | case 0x10:              // access low | case 0x10:              // access low | 
| Line 67  static BOOL pit3_setcount(BYTE value) { | Line 67  static BOOL pit3_setcount(BYTE value) { | 
 | return(FALSE); | return(FALSE); | 
 | } | } | 
 |  |  | 
| static BYTE pit3_getcount(void) { | static REG8 pit3_getcount(void) { | 
 |  |  | 
| BYTE    ret; | REG8    ret; | 
| UINT16  w; | REG16   w; | 
 |  |  | 
 | if (!(pit.mode[3] & 0x30)) { | if (!(pit.mode[3] & 0x30)) { | 
 | w = pit.latch[3]; | w = pit.latch[3]; | 
| Line 80  static BYTE pit3_getcount(void) { | Line 80  static BYTE pit3_getcount(void) { | 
 | } | } | 
 | switch(pit.mode[3] & 0x30) { | switch(pit.mode[3] & 0x30) { | 
 | case 0x10:                                              // access low | case 0x10:                                              // access low | 
| return((BYTE)w); | return((UINT8)w); | 
 |  |  | 
 | case 0x20:                                              // access high | case 0x20:                                              // access high | 
| return((BYTE)(w >> 8)); | return((UINT8)(w >> 8)); | 
 | } | } | 
 | // access word | // access word | 
 | if (!(pit.flag[3] & 1)) { | if (!(pit.flag[3] & 1)) { | 
| ret = (BYTE)w; | ret = (UINT8)w; | 
 | } | } | 
 | else { | else { | 
| ret = (BYTE)(w >> 8); | ret = (UINT8)(w >> 8); | 
 | } | } | 
 | pit.flag[3] ^= 1; | pit.flag[3] ^= 1; | 
 | return(ret); | return(ret); | 
| Line 104  static void setmusicgenevent(BOOL absolu | Line 104  static void setmusicgenevent(BOOL absolu | 
 | SINT32  cnt; | SINT32  cnt; | 
 |  |  | 
 | if (pit.value[3] > 4) {                                         // º¬µò¤Ê¤· | if (pit.value[3] > 4) {                                         // º¬µò¤Ê¤· | 
| cnt = pc.multiple * pit.value[3]; | cnt = pccore.multiple * pit.value[3]; | 
 | } | } | 
 | else { | else { | 
| cnt = pc.multiple << 16; | cnt = pccore.multiple << 16; | 
 | } | } | 
| if (pc.baseclock == PCBASECLOCK25) { | if (pccore.baseclock == PCBASECLOCK25) { | 
 | cnt = cnt * 16 / 13;                                    // cnt * 2457600 / 1996800 | cnt = cnt * 16 / 13;                                    // cnt * 2457600 / 1996800 | 
 | } | } | 
 | cnt *= 8; | cnt *= 8; | 
| Line 131  void musicgenint(NEVENTITEM item) { | Line 131  void musicgenint(NEVENTITEM item) { | 
 |  |  | 
 | // ---- I/O | // ---- I/O | 
 |  |  | 
| static void IOOUTCALL musicgen_o088(UINT port, BYTE dat) { | static void IOOUTCALL musicgen_o088(UINT port, REG8 dat) { | 
 |  |  | 
 | musicgen.porta = dat; | musicgen.porta = dat; | 
 | (void)port; | (void)port; | 
 | } | } | 
 |  |  | 
| static void IOOUTCALL musicgen_o08a(UINT port, BYTE dat) { | static void IOOUTCALL musicgen_o08a(UINT port, REG8 dat) { | 
 |  |  | 
 | musicgen.portb = dat; | musicgen.portb = dat; | 
 | (void)port; | (void)port; | 
 | } | } | 
 |  |  | 
| static void IOOUTCALL musicgen_o08c(UINT port, BYTE dat) { | static void IOOUTCALL musicgen_o08c(UINT port, REG8 dat) { | 
 |  |  | 
 | if (dat & 0x80) { | if (dat & 0x80) { | 
 | if (!(musicgen.portc & 0x80)) { | if (!(musicgen.portc & 0x80)) { | 
| Line 154  static void IOOUTCALL musicgen_o08c(UINT | Line 154  static void IOOUTCALL musicgen_o08c(UINT | 
 | musicgen.sync = 0; | musicgen.sync = 0; | 
 | sound_sync(); | sound_sync(); | 
 | musicgen.key[musicgen.ch] = dat; | musicgen.key[musicgen.ch] = dat; | 
| tms3631_setkey(&tms3631, (BYTE)musicgen.ch, dat); | tms3631_setkey(&tms3631, (REG8)musicgen.ch, dat); | 
 | } | } | 
 | else if ((!(dat & 0x40)) && (musicgen.portc & 0x40)) { | else if ((!(dat & 0x40)) && (musicgen.portc & 0x40)) { | 
 | musicgen.sync = 1; | musicgen.sync = 1; | 
| Line 165  static void IOOUTCALL musicgen_o08c(UINT | Line 165  static void IOOUTCALL musicgen_o08c(UINT | 
 | (void)port; | (void)port; | 
 | } | } | 
 |  |  | 
| static void IOOUTCALL musicgen_o188(UINT port, BYTE dat) { | static void IOOUTCALL musicgen_o188(UINT port, REG8 dat) { | 
 |  |  | 
 | sound_sync(); | sound_sync(); | 
 | musicgen.mask = dat; | musicgen.mask = dat; | 
| Line 173  static void IOOUTCALL musicgen_o188(UINT | Line 173  static void IOOUTCALL musicgen_o188(UINT | 
 | (void)port; | (void)port; | 
 | } | } | 
 |  |  | 
| static void IOOUTCALL musicgen_o18c(UINT port, BYTE dat) { | static void IOOUTCALL musicgen_o18c(UINT port, REG8 dat) { | 
 |  |  | 
 | if (!pit3_setcount(dat)) { | if (!pit3_setcount(dat)) { | 
 | setmusicgenevent(NEVENT_ABSOLUTE); | setmusicgenevent(NEVENT_ABSOLUTE); | 
| Line 181  static void IOOUTCALL musicgen_o18c(UINT | Line 181  static void IOOUTCALL musicgen_o18c(UINT | 
 | (void)port; | (void)port; | 
 | } | } | 
 |  |  | 
| static void IOOUTCALL musicgen_o18e(UINT port, BYTE dat) { | static void IOOUTCALL musicgen_o18e(UINT port, REG8 dat) { | 
 |  |  | 
 | pit3_setflag(dat); | pit3_setflag(dat); | 
 | (void)port; | (void)port; | 
 | } | } | 
 |  |  | 
| static BYTE IOINPCALL musicgen_i088(UINT port) { | static REG8 IOINPCALL musicgen_i088(UINT port) { | 
 |  |  | 
 | (void)port; | (void)port; | 
 | return(musicgen.porta); | return(musicgen.porta); | 
 | } | } | 
 |  |  | 
| static BYTE IOINPCALL musicgen_i08a(UINT port) { | static REG8 IOINPCALL musicgen_i08a(UINT port) { | 
 |  |  | 
 | (void)port; | (void)port; | 
 | return(musicgen.portb); | return(musicgen.portb); | 
 | } | } | 
 |  |  | 
| static BYTE IOINPCALL musicgen_i08c(UINT port) { | static REG8 IOINPCALL musicgen_i08c(UINT port) { | 
 |  |  | 
 | (void)port; | (void)port; | 
 | return(musicgen.portc); | return(musicgen.portc); | 
 | } | } | 
 |  |  | 
| static BYTE IOINPCALL musicgen_i08e(UINT port) { | static REG8 IOINPCALL musicgen_i08e(UINT port) { | 
 |  |  | 
 | (void)port; | (void)port; | 
 | return(0x08); | return(0x08); | 
 | } | } | 
 |  |  | 
| static BYTE IOINPCALL musicgen_i188(UINT port) { | static REG8 IOINPCALL musicgen_i188(UINT port) { | 
 |  |  | 
 | (void)port; | (void)port; | 
 | return(musicgen.mask); | return(musicgen.mask); | 
 | } | } | 
 |  |  | 
| static BYTE IOINPCALL musicgen_i18c(UINT port) { | static REG8 IOINPCALL musicgen_i18c(UINT port) { | 
 |  |  | 
 | (void)port; | (void)port; | 
 | return(pit3_getcount()); | return(pit3_getcount()); | 
 | } | } | 
 |  |  | 
| static BYTE IOINPCALL musicgen_i18e(UINT port) { | static REG8 IOINPCALL musicgen_i18e(UINT port) { | 
 |  |  | 
 | (void)port; | (void)port; | 
 | #if 1 | #if 1 | 
| Line 264  void board14_bind(void) { | Line 264  void board14_bind(void) { | 
 |  |  | 
 | void board14_allkeymake(void) { | void board14_allkeymake(void) { | 
 |  |  | 
| int             i; | REG8    i; | 
 |  |  | 
 | for (i=0; i<8; i++) { | for (i=0; i<8; i++) { | 
| tms3631_setkey(&tms3631, (BYTE)i, musicgen.key[i]); | tms3631_setkey(&tms3631, i, musicgen.key[i]); | 
 | } | } | 
 | } | } | 
 |  |  |