trunk/src/mess/drivers/esqkt.c
| r29380 | r29381 | |
| 18 | 18 | 0x280000-0x2801FF ES5510 |
| 19 | 19 | 0x300000-0x30000F 68681 DUART |
| 20 | 20 | 0xFF0000-0xFFFFFF OS RAM |
| 21 | |
| 22 | Ensoniq KT-76 |
| 23 | Ensoniq 1994 |
| 21 | 24 | |
| 25 | This is a wavetable-based synth keyboard made by Ensoniq in 1994 |
| 26 | |
| 27 | PCB Layout |
| 28 | ---------- |
| 29 | |
| 30 | KT-76 |
| 31 | |---------------------------------------------| |
| 32 | |J12 J3 J11 J10 | |
| 33 | | LM393 LM358| |
| 34 | | 74HC4051| |
| 35 | |ADM691 | |
| 36 | | 62256 | |
| 37 | | | |
| 38 | |3V_BATTERY KT76_0590_LO.U5 ROM0 | |
| 39 | | | |
| 40 | | 68EC020 62256 OTTOR2 ROM1 | |
| 41 | | | |
| 42 | | KT76_690B_HI.U6 ROM2 | |
| 43 | | PAL1 | |
| 44 | | HP_6N138 | |
| 45 | | PAL2 OTTOR2 J6| |
| 46 | | 7407 | |
| 47 | | | |
| 48 | | D41464 D41464 | |
| 49 | | | |
| 50 | | SCN2681 D41464 D41464 | |
| 51 | | 137000402 | |
| 52 | | | |
| 53 | | 18.432MHz | |
| 54 | | ESPR6 16MHz | |
| 55 | | POT | |
| 56 | | R1136-11 | |
| 57 | | | |
| 58 | | LM339 LM339 | |
| 59 | | J13 J5 J1 J2 J4 | |
| 60 | |---------------------------------------------| |
| 61 | Notes: |
| 62 | J1 - connector for digital jacks |
| 63 | J2 - connector for keyboard |
| 64 | J3 - connector for LCD display |
| 65 | J4 - connector for keyboard |
| 66 | J5 - connector for power input |
| 67 | J6 - connector for wave expansion |
| 68 | J10 - connector for wheels/pressure |
| 69 | J11 - connector for memory card |
| 70 | J12 - connector for headphones |
| 71 | J13 - connector for analog jacks |
| 72 | 68EC020 - Motorola MC68EC020FG16 CPU. Clock input 16MHz |
| 73 | 1370000402 - Unknown PLCC44 IC stamped with the Ensoniq logo. Likely CPLD or gate array. |
| 74 | ESPR6 - Ensoniq ESPR6 (ES5510) sound chip |
| 75 | OTTOR2 - Ensoniq OTTOR2 (ES5506) sound chip |
| 76 | POT - ESP adjustment pot |
| 77 | KT76* - 27C2048/27C210 EPROM |
| 78 | ROM* - 2M x8-bit SOP44 mask ROM |
| 79 | R1136-11 - DIP40 IC manufactured by Rockwell - believed to be some type of MCU. |
| 80 | D41464 - NEC D41464 64k x4-bit DRAM |
| 81 | 62256 - 32k x8-bit SRAM |
| 82 | SCN2681 - Philips SCN2681 Dual Universal Asynchronous Receiver/Transmitter (DUART) |
| 83 | HP_6N138 - HP/Agilent HP 6N138 Low Input Current High Gain Optocoupler |
| 84 | PAL1 - MMI PAL20L8ACN stamped 'KT-76 MMU 6A0A'. Printing is faint so 0 could be a B or a D. |
| 85 | PAL2 - MMI PAL20L8ACN stamped 'KT-76 BCU 73D6' |
| 86 | |
| 22 | 87 | ***************************************************************************/ |
| 23 | 88 | |
| 24 | 89 | #include "bus/midi/midi.h" |
| r29380 | r29381 | |
| 48 | 113 | |
| 49 | 114 | virtual void machine_reset(); |
| 50 | 115 | |
| 51 | | DECLARE_READ32_MEMBER(lower_r); |
| 52 | | DECLARE_WRITE32_MEMBER(lower_w); |
| 53 | | |
| 54 | 116 | DECLARE_WRITE_LINE_MEMBER(duart_irq_handler); |
| 55 | 117 | DECLARE_WRITE_LINE_MEMBER(duart_tx_a); |
| 56 | 118 | DECLARE_WRITE_LINE_MEMBER(duart_tx_b); |
| r29380 | r29381 | |
| 74 | 136 | m_bCalibSecondByte = false; |
| 75 | 137 | } |
| 76 | 138 | |
| 77 | | READ32_MEMBER(esqkt_state::lower_r) |
| 78 | | { |
| 79 | | offset &= 0x3fff; |
| 80 | | |
| 81 | | // get pointers when 68k resets |
| 82 | | if (!m_rom) |
| 83 | | { |
| 84 | | m_rom = (UINT32 *)memregion("osrom")->base(); |
| 85 | | m_ram = (UINT32 *)memshare("osram")->ptr(); |
| 86 | | } |
| 87 | | |
| 88 | | if (offset < 0x2000) |
| 89 | | { |
| 90 | | if (m68k_get_fc(m_maincpu) == 0x6) // supervisor mode = ROM |
| 91 | | { |
| 92 | | return m_rom[offset]; |
| 93 | | } |
| 94 | | else |
| 95 | | { |
| 96 | | return m_ram[offset]; |
| 97 | | } |
| 98 | | } |
| 99 | | else |
| 100 | | { |
| 101 | | return m_ram[offset]; |
| 102 | | } |
| 103 | | } |
| 104 | | |
| 105 | | WRITE32_MEMBER(esqkt_state::lower_w) |
| 106 | | { |
| 107 | | offset &= 0x3fff; |
| 108 | | |
| 109 | | if (offset < 0x2000) |
| 110 | | { |
| 111 | | if (m68k_get_fc(m_maincpu) != 0x6) // if not supervisor mode, RAM |
| 112 | | { |
| 113 | | COMBINE_DATA(&m_ram[offset]); |
| 114 | | } |
| 115 | | else |
| 116 | | { |
| 117 | | logerror("Write to ROM: %x @ %x (fc=%x)\n", data, offset, m68k_get_fc(m_maincpu)); |
| 118 | | } |
| 119 | | } |
| 120 | | else |
| 121 | | { |
| 122 | | COMBINE_DATA(&m_ram[offset]); |
| 123 | | } |
| 124 | | } |
| 125 | | |
| 126 | 139 | static ADDRESS_MAP_START( kt_map, AS_PROGRAM, 32, esqkt_state ) |
| 127 | 140 | AM_RANGE(0x000000, 0x07ffff) AM_ROM AM_REGION("osrom", 0) |
| 128 | 141 | AM_RANGE(0x200000, 0x20003f) AM_DEVREADWRITE8("ensoniq", es5506_device, read, write, 0xffffffff) |
| r29380 | r29381 | |
| 233 | 246 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 234 | 247 | MCFG_SOUND_ADD("ensoniq", ES5506, XTAL_16MHz) |
| 235 | 248 | MCFG_SOUND_CONFIG(es5506_config) |
| 236 | | MCFG_SOUND_ROUTE(0, "lspeaker", 2.0) |
| 237 | | MCFG_SOUND_ROUTE(1, "rspeaker", 2.0) |
| 249 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.5) |
| 250 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.5) |
| 238 | 251 | MCFG_SOUND_ADD("ensoniq2", ES5506, XTAL_16MHz) |
| 239 | 252 | MCFG_SOUND_CONFIG(es5506_2_config) |
| 240 | | MCFG_SOUND_ROUTE(0, "lspeaker", 2.0) |
| 241 | | MCFG_SOUND_ROUTE(1, "rspeaker", 2.0) |
| 253 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.5) |
| 254 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.5) |
| 242 | 255 | MACHINE_CONFIG_END |
| 243 | 256 | |
| 244 | 257 | static INPUT_PORTS_START( kt ) |
| r29380 | r29381 | |
| 249 | 262 | ROM_LOAD32_WORD( "kt76_162_lo.bin", 0x000000, 0x020000, CRC(1a1ab910) SHA1(dcc80db2297fd25993e090c2e5bb7f947319a8bf) ) |
| 250 | 263 | ROM_LOAD32_WORD( "kt76_162_hi.bin", 0x000002, 0x040000, CRC(de16d236) SHA1(c55fca86453e90e8c34a048bed45817063237370) ) |
| 251 | 264 | |
| 252 | | ROM_REGION(0x200000, "waverom", ROMREGION_ERASE00) |
| 253 | | ROM_REGION(0x200000, "waverom2", ROMREGION_ERASE00) |
| 254 | | ROM_REGION(0x200000, "waverom3", ROMREGION_ERASE00) |
| 265 | ROM_REGION(0x400000, "waverom", ROMREGION_ERASE00) |
| 266 | ROM_LOAD16_BYTE( "1351000401_rom0.u103", 0x000001, 0x200000, CRC(425047af) SHA1(9680d1fc222b29ba24f0fbf6136982bee87a60ef) ) |
| 267 | |
| 268 | ROM_REGION(0x400000, "waverom2", ROMREGION_ERASE00) |
| 269 | ROM_LOAD16_BYTE( "1351000402_rom1.u102", 0x000001, 0x200000, CRC(64459185) SHA1(0fa20b16847fc02a384057fc3d385226eb3e7527) ) |
| 270 | |
| 271 | ROM_REGION(0x400000, "waverom3", ROMREGION_ERASE00) |
| 272 | ROM_LOAD16_BYTE( "1351000403_rom2.u104", 0x000001, 0x200000, CRC(c2aacc5d) SHA1(7fab518ba92ddb23cdc4dcb04751b26d25c298c0) ) |
| 273 | |
| 255 | 274 | ROM_REGION(0x200000, "waverom4", ROMREGION_ERASE00) |
| 256 | 275 | ROM_END |
| 257 | 276 | |
| r29380 | r29381 | |
| 260 | 279 | m_duart_io = 0; |
| 261 | 280 | } |
| 262 | 281 | |
| 263 | | CONS( 1996, kt76, 0, 0, kt, kt, esqkt_state, kt, "Ensoniq", "KT-76", GAME_NOT_WORKING ) |
| 282 | CONS( 1996, kt76, 0, 0, kt, kt, esqkt_state, kt, "Ensoniq", "KT-76", GAME_IMPERFECT_SOUND ) |