trunk/src/mess/drivers/esqasr.c
| r0 | r26081 | |
| 1 | /*************************************************************************** |
| 2 | |
| 3 | esqasr.c - Ensoniq ASR-10 and ASR-X |
| 4 | |
| 5 | Skeleton driver by R. Belmont |
| 6 | |
| 7 | ASR-10 hardware: |
| 8 | CPU: 68302 MCU |
| 9 | Sound: ES5506 |
| 10 | Effects: ES5510 |
| 11 | FDC: NEC uPD72069 |
| 12 | DUART: 2681 |
| 13 | |
| 14 | Memory map: |
| 15 | 0x000000-0x03ffff OS ROM |
| 16 | 0xfb0000-0xfcffff OS RAM |
| 17 | |
| 18 | |
| 19 | ASR-X hardware: |
| 20 | CPU: 68340 MCU |
| 21 | Sound: ES5506 |
| 22 | Effects: ES5511 |
| 23 | FDC: NEC uPD72069 |
| 24 | |
| 25 | http://www.gweep.net/~shifty/music/asrxhack/ |
| 26 | |
| 27 | Memory map: |
| 28 | 0x00000000-0x000fffff OS ROM |
| 29 | 0x00800000-0x008000ff ESP2 5511? |
| 30 | 0x00f00000-0x00f007ff Unknown |
| 31 | 0x08000000-0x08200000 RAM |
| 32 | 0x0be00000-0x0befffff RAM (size unknown) |
| 33 | |
| 34 | These may want to be separated when they run more. |
| 35 | |
| 36 | ***************************************************************************/ |
| 37 | |
| 38 | #include "emu.h" |
| 39 | #include "machine/68340.h" |
| 40 | #include "sound/es5506.h" |
| 41 | #include "cpu/es5510/es5510.h" |
| 42 | #include "machine/upd765.h" |
| 43 | |
| 44 | #include "machine/esqvfd.h" |
| 45 | |
| 46 | class esqasr_state : public driver_device |
| 47 | { |
| 48 | public: |
| 49 | esqasr_state(const machine_config &mconfig, device_type type, const char *tag) |
| 50 | : driver_device(mconfig, type, tag), |
| 51 | m_maincpu(*this, "maincpu"), |
| 52 | m_esp(*this, "esp"), |
| 53 | m_sq1vfd(*this, "sq1vfd") |
| 54 | { } |
| 55 | |
| 56 | required_device<cpu_device> m_maincpu; |
| 57 | required_device<es5510_device> m_esp; |
| 58 | required_device<esq2x40_sq1_t> m_sq1vfd; |
| 59 | |
| 60 | virtual void machine_reset(); |
| 61 | |
| 62 | public: |
| 63 | DECLARE_DRIVER_INIT(asr); |
| 64 | }; |
| 65 | |
| 66 | void esqasr_state::machine_reset() |
| 67 | { |
| 68 | } |
| 69 | |
| 70 | static ADDRESS_MAP_START( asr_map, AS_PROGRAM, 16, esqasr_state ) |
| 71 | AM_RANGE(0x000000, 0x0fffff) AM_ROM AM_REGION("maincpu", 0) |
| 72 | AM_RANGE(0xf00000, 0xffffff) AM_RAM |
| 73 | ADDRESS_MAP_END |
| 74 | |
| 75 | static ADDRESS_MAP_START( asrx_map, AS_PROGRAM, 32, esqasr_state ) |
| 76 | AM_RANGE(0x00000000, 0x000fffff) AM_ROM AM_REGION("maincpu", 0) |
| 77 | AM_RANGE(0x08000000, 0x081fffff) AM_RAM |
| 78 | AM_RANGE(0x0be00000, 0x0befffff) AM_RAM |
| 79 | ADDRESS_MAP_END |
| 80 | |
| 81 | static void esq5506_otto_irq(device_t *device, int state) |
| 82 | { |
| 83 | } |
| 84 | |
| 85 | static READ16_DEVICE_HANDLER(esq5506_read_adc) |
| 86 | { |
| 87 | return 0; |
| 88 | } |
| 89 | |
| 90 | static const es5506_interface es5506_config = |
| 91 | { |
| 92 | "waverom", /* Bank 0 */ |
| 93 | "waverom2", /* Bank 1 */ |
| 94 | "waverom3", /* Bank 0 */ |
| 95 | "waverom4", /* Bank 1 */ |
| 96 | 1, /* channels */ |
| 97 | DEVCB_LINE(esq5506_otto_irq), /* irq */ |
| 98 | DEVCB_DEVICE_HANDLER(DEVICE_SELF, esq5506_read_adc) |
| 99 | }; |
| 100 | |
| 101 | static MACHINE_CONFIG_START( asr, esqasr_state ) |
| 102 | MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz) // actually MC68302 |
| 103 | MCFG_CPU_PROGRAM_MAP(asr_map) |
| 104 | |
| 105 | MCFG_CPU_ADD("esp", ES5510, XTAL_10MHz) |
| 106 | MCFG_DEVICE_DISABLE() |
| 107 | |
| 108 | MCFG_ESQ2x40_SQ1_ADD("sq1vfd") |
| 109 | |
| 110 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 111 | MCFG_SOUND_ADD("ensoniq", ES5506, XTAL_16MHz) |
| 112 | MCFG_SOUND_CONFIG(es5506_config) |
| 113 | MCFG_SOUND_ROUTE(0, "lspeaker", 2.0) |
| 114 | MCFG_SOUND_ROUTE(1, "rspeaker", 2.0) |
| 115 | MACHINE_CONFIG_END |
| 116 | |
| 117 | static MACHINE_CONFIG_START( asrx, esqasr_state ) |
| 118 | MCFG_CPU_ADD("maincpu", M68020, XTAL_16MHz) // unknown, possibly 68340? |
| 119 | MCFG_CPU_PROGRAM_MAP(asrx_map) |
| 120 | |
| 121 | MCFG_CPU_ADD("esp", ES5510, XTAL_10MHz) |
| 122 | MCFG_DEVICE_DISABLE() |
| 123 | |
| 124 | MCFG_ESQ2x40_SQ1_ADD("sq1vfd") |
| 125 | |
| 126 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 127 | MCFG_SOUND_ADD("ensoniq", ES5506, XTAL_16MHz) |
| 128 | MCFG_SOUND_CONFIG(es5506_config) |
| 129 | MCFG_SOUND_ROUTE(0, "lspeaker", 2.0) |
| 130 | MCFG_SOUND_ROUTE(1, "rspeaker", 2.0) |
| 131 | MACHINE_CONFIG_END |
| 132 | |
| 133 | static INPUT_PORTS_START( asr ) |
| 134 | INPUT_PORTS_END |
| 135 | |
| 136 | ROM_START( asr10 ) |
| 137 | ROM_REGION(0x100000, "maincpu", 0) |
| 138 | ROM_LOAD16_BYTE( "asr-648c-lo-1.5b.bin", 0x000001, 0x020000, CRC(8e437843) SHA1(418f042acbc5323f5b59cbbd71fdc8b2d851f7d0) ) |
| 139 | ROM_LOAD16_BYTE( "asr-65e0-hi-1.5b.bin", 0x000000, 0x020000, CRC(b37cd3b6) SHA1(c4371848428a628b5e5a50e99be602d7abfc7904) ) |
| 140 | |
| 141 | ROM_REGION(0x200000, "waverom", ROMREGION_ERASE00) |
| 142 | ROM_REGION(0x200000, "waverom2", ROMREGION_ERASE00) |
| 143 | ROM_REGION(0x200000, "waverom3", ROMREGION_ERASE00) |
| 144 | ROM_REGION(0x200000, "waverom4", ROMREGION_ERASE00) |
| 145 | ROM_END |
| 146 | |
| 147 | ROM_START( asrx ) |
| 148 | ROM_REGION(0x100000, "maincpu", 0) |
| 149 | ROM_LOAD16_BYTE( "asr267lo.bin", 0x000001, 0x080000, CRC(7408d441) SHA1(0113f84b6d224bf1423ad62c173f32a0c95ca715) ) |
| 150 | ROM_LOAD16_BYTE( "asr267hi.bin", 0x000000, 0x080000, CRC(7df14ea7) SHA1(895b99013c0f924edb52612eb93c3e6babb9f053) ) |
| 151 | |
| 152 | ROM_REGION(0x200000, "waverom", ROMREGION_ERASE00) |
| 153 | ROM_REGION(0x200000, "waverom2", ROMREGION_ERASE00) |
| 154 | ROM_REGION(0x200000, "waverom3", ROMREGION_ERASE00) |
| 155 | ROM_REGION(0x200000, "waverom4", ROMREGION_ERASE00) |
| 156 | ROM_END |
| 157 | |
| 158 | DRIVER_INIT_MEMBER(esqasr_state, asr) |
| 159 | { |
| 160 | } |
| 161 | |
| 162 | CONS( 1992, asr10, 0, 0, asr, asr, esqasr_state, asr, "Ensoniq", "ASR-10", GAME_NOT_WORKING ) |
| 163 | CONS( 1997, asrx, 0, 0, asrx,asr, esqasr_state, asr, "Ensoniq", "ASR-X", GAME_NOT_WORKING ) |