mirror of
https://github.com/holub/mame
synced 2025-10-06 09:00:04 +03:00
New machines added as MACHINE_NOT_WORKING
----------------------------------------- Ensoniq TS-10 [R. Belmont, DBWBP.com] Ensoniq TS-12 [R. Belmont, DBWBP.com]
This commit is contained in:
parent
898907380e
commit
d702409679
@ -3,6 +3,7 @@
|
|||||||
/***************************************************************************
|
/***************************************************************************
|
||||||
|
|
||||||
esqkt.c - Ensoniq KT-76, KT-88, and E-Prime
|
esqkt.c - Ensoniq KT-76, KT-88, and E-Prime
|
||||||
|
Ensoniq TS-10 and TS-12
|
||||||
|
|
||||||
Driver by R. Belmont
|
Driver by R. Belmont
|
||||||
|
|
||||||
@ -14,11 +15,12 @@
|
|||||||
|
|
||||||
Memory map:
|
Memory map:
|
||||||
|
|
||||||
0x000000-0x07FFFF OS ROM
|
0x000000-0x07FFFF OS ROM (additional RAM on TS)
|
||||||
0x200000-0x20003F Master ES5506
|
0x200000-0x20003F Master ES5506
|
||||||
0x240000-0x24003F Slave ES5506
|
0x240000-0x24003F Slave ES5506
|
||||||
0x280000-0x2801FF ES5510
|
0x280000-0x2801FF ES5510
|
||||||
0x300000-0x30000F 68681 DUART
|
0x300000-0x30000F 68681 DUART
|
||||||
|
0x400000-0xAFFFFF User sample RAM (TS only)
|
||||||
0xFF0000-0xFFFFFF OS RAM
|
0xFF0000-0xFFFFFF OS RAM
|
||||||
|
|
||||||
Ensoniq KT-76
|
Ensoniq KT-76
|
||||||
@ -100,7 +102,6 @@
|
|||||||
|
|
||||||
#include "speaker.h"
|
#include "speaker.h"
|
||||||
|
|
||||||
|
|
||||||
class esqkt_state : public driver_device
|
class esqkt_state : public driver_device
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@ -115,6 +116,7 @@ public:
|
|||||||
{ }
|
{ }
|
||||||
|
|
||||||
void kt(machine_config &config);
|
void kt(machine_config &config);
|
||||||
|
void ts(machine_config &config);
|
||||||
|
|
||||||
void init_kt();
|
void init_kt();
|
||||||
|
|
||||||
@ -134,22 +136,29 @@ private:
|
|||||||
DECLARE_WRITE_LINE_MEMBER(duart_tx_b);
|
DECLARE_WRITE_LINE_MEMBER(duart_tx_b);
|
||||||
DECLARE_WRITE8_MEMBER(duart_output);
|
DECLARE_WRITE8_MEMBER(duart_output);
|
||||||
|
|
||||||
uint8_t m_duart_io;
|
u8 m_duart_io;
|
||||||
bool m_bCalibSecondByte;
|
bool m_bCalibSecondByte;
|
||||||
|
|
||||||
DECLARE_WRITE_LINE_MEMBER(esq5506_otto_irq);
|
DECLARE_WRITE_LINE_MEMBER(esq5506_otto_irq);
|
||||||
DECLARE_READ16_MEMBER(esq5506_read_adc);
|
DECLARE_READ16_MEMBER(esq5506_read_adc);
|
||||||
void es5506_clock_changed(u32 data);
|
void es5506_clock_changed(u32 data);
|
||||||
void kt_map(address_map &map);
|
void kt_map(address_map &map);
|
||||||
|
void ts_map(address_map &map);
|
||||||
|
void ts_cpu_space_map(address_map &map);
|
||||||
|
|
||||||
|
u32 *m_rom, *m_ram;
|
||||||
};
|
};
|
||||||
|
|
||||||
void esqkt_state::machine_start()
|
void esqkt_state::machine_start()
|
||||||
{
|
{
|
||||||
|
m_rom = (u32 *)(void *)memregion("osrom")->base();
|
||||||
|
m_ram = (u32 *)(void *)memshare("osram")->ptr();
|
||||||
}
|
}
|
||||||
|
|
||||||
void esqkt_state::machine_reset()
|
void esqkt_state::machine_reset()
|
||||||
{
|
{
|
||||||
m_bCalibSecondByte = false;
|
m_bCalibSecondByte = false;
|
||||||
|
memcpy(m_ram, m_rom, 8);
|
||||||
}
|
}
|
||||||
|
|
||||||
void esqkt_state::kt_map(address_map &map)
|
void esqkt_state::kt_map(address_map &map)
|
||||||
@ -162,6 +171,16 @@ void esqkt_state::kt_map(address_map &map)
|
|||||||
map(0xff0000, 0xffffff).ram().share("osram");
|
map(0xff0000, 0xffffff).ram().share("osram");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void esqkt_state::ts_map(address_map &map)
|
||||||
|
{
|
||||||
|
map(0x000000, 0x0fffff).ram().share("osram");
|
||||||
|
map(0x200000, 0x20003f).rw("ensoniq", FUNC(es5506_device::read), FUNC(es5506_device::write));
|
||||||
|
map(0x260000, 0x2601ff).rw(m_esp, FUNC(es5510_device::host_r), FUNC(es5510_device::host_w)).umask32(0x00ff00ff);
|
||||||
|
map(0x280000, 0x28003f).rw(m_duart, FUNC(scn2681_device::read), FUNC(scn2681_device::write)).umask32(0x00ff00ff);
|
||||||
|
map(0xc00000, 0xcfffff).rom().region("osrom", 0);
|
||||||
|
map(0xff0000, 0xffffff).ram();
|
||||||
|
}
|
||||||
|
|
||||||
WRITE_LINE_MEMBER(esqkt_state::esq5506_otto_irq)
|
WRITE_LINE_MEMBER(esqkt_state::esq5506_otto_irq)
|
||||||
{
|
{
|
||||||
#if 0 // 5505/06 IRQ generation needs (more) work
|
#if 0 // 5505/06 IRQ generation needs (more) work
|
||||||
@ -276,16 +295,73 @@ void esqkt_state::kt(machine_config &config)
|
|||||||
es5506b.set_region2("waverom3"); /* Bank 0 */
|
es5506b.set_region2("waverom3"); /* Bank 0 */
|
||||||
es5506b.set_region3("waverom4"); /* Bank 1 */
|
es5506b.set_region3("waverom4"); /* Bank 1 */
|
||||||
es5506b.set_channels(4); /* channels */
|
es5506b.set_channels(4); /* channels */
|
||||||
es5506b.add_route(0, "pump", 1.0, 0);
|
es5506b.add_route(0, "lspeaker", 1.0);
|
||||||
es5506b.add_route(1, "pump", 1.0, 1);
|
es5506b.add_route(1, "rspeaker", 1.0);
|
||||||
es5506b.add_route(2, "pump", 1.0, 2);
|
es5506b.add_route(2, "lspeaker", 1.0);
|
||||||
es5506b.add_route(3, "pump", 1.0, 3);
|
es5506b.add_route(3, "rspeaker", 1.0);
|
||||||
es5506b.add_route(4, "pump", 1.0, 4);
|
es5506b.add_route(4, "lspeaker", 1.0);
|
||||||
es5506b.add_route(5, "pump", 1.0, 5);
|
es5506b.add_route(5, "rspeaker", 1.0);
|
||||||
es5506b.add_route(6, "pump", 1.0, 6);
|
es5506b.add_route(6, "lspeaker", 1.0);
|
||||||
es5506b.add_route(7, "pump", 1.0, 7);
|
es5506b.add_route(7, "rspeaker", 1.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void esqkt_state::ts_cpu_space_map(address_map &map)
|
||||||
|
{
|
||||||
|
map(0xfffff0, 0xffffff).m(m_maincpu, FUNC(m68000_base_device::autovectors_map));
|
||||||
|
map(0xfffff7, 0xfffff7).r(m_duart, FUNC(mc68681_device::get_irq_vector));
|
||||||
|
}
|
||||||
|
|
||||||
|
void esqkt_state::ts(machine_config &config)
|
||||||
|
{
|
||||||
|
M68EC020(config, m_maincpu, 16_MHz_XTAL);
|
||||||
|
m_maincpu->set_addrmap(AS_PROGRAM, &esqkt_state::ts_map);
|
||||||
|
// m_maincpu->set_addrmap(m68ec020_device::AS_CPU_SPACE, &esqkt_state::ts_cpu_space_map);
|
||||||
|
|
||||||
|
ES5510(config, m_esp, 10_MHz_XTAL);
|
||||||
|
m_esp->set_disable();
|
||||||
|
|
||||||
|
auto &panel(ESQPANEL2X16_SQ1(config, "sq1panel"));
|
||||||
|
panel.write_tx().set(m_duart, FUNC(scn2681_device::rx_b_w));
|
||||||
|
|
||||||
|
SCN2681(config, m_duart, 4000000);
|
||||||
|
m_duart->irq_cb().set(FUNC(esqkt_state::duart_irq_handler));
|
||||||
|
m_duart->a_tx_cb().set(FUNC(esqkt_state::duart_tx_a));
|
||||||
|
m_duart->b_tx_cb().set(FUNC(esqkt_state::duart_tx_b));
|
||||||
|
m_duart->outport_cb().set(FUNC(esqkt_state::duart_output));
|
||||||
|
m_duart->set_clocks(500000, 500000, 1000000, 1000000);
|
||||||
|
|
||||||
|
auto &mdin(MIDI_PORT(config, "mdin"));
|
||||||
|
midiin_slot(mdin);
|
||||||
|
mdin.rxd_handler().set(m_duart, FUNC(scn2681_device::rx_a_w)); // route MIDI Tx send directly to 68681 channel A Rx
|
||||||
|
|
||||||
|
midiout_slot(MIDI_PORT(config, "mdout"));
|
||||||
|
|
||||||
|
SPEAKER(config, "lspeaker").front_left();
|
||||||
|
SPEAKER(config, "rspeaker").front_right();
|
||||||
|
|
||||||
|
ESQ_5505_5510_PUMP(config, m_pump, 16_MHz_XTAL / (16 * 32));
|
||||||
|
m_pump->set_esp(m_esp);
|
||||||
|
m_pump->add_route(0, "lspeaker", 1.0);
|
||||||
|
m_pump->add_route(1, "rspeaker", 1.0);
|
||||||
|
|
||||||
|
auto &es5506a(ES5506(config, "ensoniq", 16_MHz_XTAL));
|
||||||
|
es5506a.sample_rate_changed().set(FUNC(esqkt_state::es5506_clock_changed));
|
||||||
|
es5506a.set_region0("waverom"); /* Bank 0 */
|
||||||
|
es5506a.set_region1("waverom2"); /* Bank 1 */
|
||||||
|
es5506a.set_region2("waverom3"); /* Bank 0 */
|
||||||
|
es5506a.set_region3("waverom4"); /* Bank 1 */
|
||||||
|
es5506a.set_channels(4); /* channels */
|
||||||
|
es5506a.irq_cb().set(FUNC(esqkt_state::esq5506_otto_irq)); /* irq */
|
||||||
|
es5506a.read_port_cb().set(FUNC(esqkt_state::esq5506_read_adc)); /* ADC */
|
||||||
|
es5506a.add_route(0, "pump", 1.0, 0);
|
||||||
|
es5506a.add_route(1, "pump", 1.0, 1);
|
||||||
|
es5506a.add_route(2, "pump", 1.0, 2);
|
||||||
|
es5506a.add_route(3, "pump", 1.0, 3);
|
||||||
|
es5506a.add_route(4, "pump", 1.0, 4);
|
||||||
|
es5506a.add_route(5, "pump", 1.0, 5);
|
||||||
|
es5506a.add_route(6, "pump", 1.0, 6);
|
||||||
|
es5506a.add_route(7, "pump", 1.0, 7);
|
||||||
|
}
|
||||||
static INPUT_PORTS_START( kt )
|
static INPUT_PORTS_START( kt )
|
||||||
INPUT_PORTS_END
|
INPUT_PORTS_END
|
||||||
|
|
||||||
@ -306,9 +382,40 @@ ROM_START( kt76 )
|
|||||||
ROM_REGION(0x200000, "waverom4", ROMREGION_ERASE00)
|
ROM_REGION(0x200000, "waverom4", ROMREGION_ERASE00)
|
||||||
ROM_END
|
ROM_END
|
||||||
|
|
||||||
|
ROM_START( ts10 )
|
||||||
|
ROM_REGION32_BE(0x100000, "osrom", ROMREGION_ERASE00)
|
||||||
|
ROM_SYSTEM_BIOS( 0, "v310", "V310" )
|
||||||
|
ROMX_LOAD( "ts10_310h.bin", 0x000000, 0x040000, CRC(cc04aa4f) SHA1(56761d29680bc99cfd625af3f92db836dfacdf31), ROM_SKIP(1) | ROM_BIOS(0) )
|
||||||
|
ROMX_LOAD( "ts10_310l.bin", 0x000001, 0x080000, CRC(51df8987) SHA1(294cde504a36752041deb0c09741153a797f2f28), ROM_SKIP(1) | ROM_BIOS(0) )
|
||||||
|
ROM_SYSTEM_BIOS( 1, "v120", "V120" )
|
||||||
|
ROMX_LOAD( "ts10_120l.bin", 0x000000, 0x040000, CRC(047a0aaa) SHA1(6fd592e1a4e6c50877f4266f90620d5f2bd578aa), ROM_SKIP(1) | ROM_BIOS(1) )
|
||||||
|
ROMX_LOAD( "ts10_120h.bin", 0x000001, 0x040000, CRC(3ae66382) SHA1(ce603931d67735e2a8942b6c0992c138923858a6), ROM_SKIP(1) | ROM_BIOS(1) )
|
||||||
|
ROM_SYSTEM_BIOS( 2, "v305", "V305" )
|
||||||
|
ROMX_LOAD( "ts10_305l.bin", 0x000000, 0x080000, CRC(3df39031) SHA1(3f14b56c7ea0c28f6173a7caf145d18e6287e33e), ROM_SKIP(1) | ROM_BIOS(2) )
|
||||||
|
ROMX_LOAD( "ts10_305h.bin", 0x000000, 0x040000, CRC(77d547e7) SHA1(268ae44b07a02686c31639c1344d23179a672f87), ROM_SKIP(1) | ROM_BIOS(2) )
|
||||||
|
|
||||||
|
ROM_REGION(0x400000, "waverom", ROMREGION_ERASE00)
|
||||||
|
ROM_REGION(0x400000, "waverom2", ROMREGION_ERASE00)
|
||||||
|
ROM_REGION(0x400000, "waverom3", ROMREGION_ERASE00)
|
||||||
|
ROM_REGION(0x400000, "waverom4", ROMREGION_ERASE00)
|
||||||
|
ROM_END
|
||||||
|
|
||||||
|
ROM_START( ts12 )
|
||||||
|
ROM_REGION32_BE(0x100000, "osrom", 0)
|
||||||
|
ROM_LOAD16_BYTE( "ts12-v310-hig.bin", 0x000000, 0x040000, CRC(99823433) SHA1(bd39a5d27824988cb531d90b91685a2362a98b3e) )
|
||||||
|
ROM_LOAD16_BYTE( "ts12-v310-low.bin", 0x000001, 0x080000, CRC(7e64a659) SHA1(c567c2d349e5a58928a74ac22473896c6814bda8) )
|
||||||
|
|
||||||
|
ROM_REGION(0x400000, "waverom", ROMREGION_ERASE00)
|
||||||
|
ROM_REGION(0x400000, "waverom2", ROMREGION_ERASE00)
|
||||||
|
ROM_REGION(0x400000, "waverom3", ROMREGION_ERASE00)
|
||||||
|
ROM_REGION(0x400000, "waverom4", ROMREGION_ERASE00)
|
||||||
|
ROM_END
|
||||||
|
|
||||||
void esqkt_state::init_kt()
|
void esqkt_state::init_kt()
|
||||||
{
|
{
|
||||||
m_duart_io = 0;
|
m_duart_io = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CONS( 1993, ts10, 0, 0, ts, kt, esqkt_state, init_kt, "Ensoniq", "TS-10", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND )
|
||||||
|
CONS( 1993, ts12, 0, 0, ts, kt, esqkt_state, init_kt, "Ensoniq", "TS-12", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND )
|
||||||
CONS( 1996, kt76, 0, 0, kt, kt, esqkt_state, init_kt, "Ensoniq", "KT-76", MACHINE_IMPERFECT_SOUND )
|
CONS( 1996, kt76, 0, 0, kt, kt, esqkt_state, init_kt, "Ensoniq", "KT-76", MACHINE_IMPERFECT_SOUND )
|
||||||
|
Loading…
Reference in New Issue
Block a user