Previous 15994 Revisions Next

r15484 Wednesday 20th June, 2012 at 02:38:29 UTC by R. Belmont
Ensoniq: various documentation improvements for the 16-bit Ensoniqs including correct CPU speed and other details. [R. Belmont, Christian Brunschen]
[src/mess/drivers]esq5505.c

src/mess/drivers/esq5505.c
r15483r15484
77
88    The Taito sound system in taito_en.c is directly derived from the SQ-1.
99
10    Driver by R. Belmont
10    Driver by R. Belmont with thanks to Parduz, Christian Brunschen, and Phil Bennett
1111
1212    Memory map:
1313
r15483r15484
1717    0x260000-0x2601ff   ESP (5510) regs
1818    0x280000-0x28001f   DUART (68681) regs
1919    0x2C0000-0x2C0003   Floppy (WD1772) regs (VFX-SD, SD-1, and EPS/EPS-16)
20    0x2E0000-0x2FFFFF   Expansion cartridge (VFX, unknown other models)
2021    0x300000-0x300003   EPS/EPS-16 SCSI (WD33C93, register at 300001, data at 300003)
2122    0x340000-0x3bffff   EPS/EPS-16 sample RAM
2223    0xc00000-0xc3ffff   OS ROM
2324    0xff0000-0xffffff   work RAM hi (may or may not be mirrored with work RAM low)
24
25
2526    Interrupts:
2627    68681 uses custom vector 0x40 (address 0x100)
2728    5505 interrupts are on normal autovector IRQ 1
29 
30    68681 GPIO lines (from VFX schematics):
31    I0: CARTIN (if cartridge is present)
32 
33    O0: "AN0"
34    O1: "AN1"
35    O2: "AN2" (disk side select on EPS/EPS-16)
36    O6: To ESPHALT pin on ES5510
37    O7: "SACK"
38 
2839
2940***************************************************************************/
3041
r15483r15484
4556#define EPS     (1)
4657#define SQ1     (2)
4758
59#define KEYBOARD_HACK (0)   // turn on to play the SQ-1: Z and X are program up/down, A/S/D/F/G/H/J/K/L and Q/W/E/R/T/Y/U play notes
60
61#if KEYBOARD_HACK
62static int program = 0;
63#endif
64
4865class esq5505_state : public driver_device
4966{
5067public:
r15483r15484
221238    AM_RANGE(0x240000, 0x2400ff) AM_DEVREADWRITE_LEGACY("mc68450", hd63450_r, hd63450_w)
222239    AM_RANGE(0x280000, 0x28001f) AM_DEVREADWRITE8_LEGACY("duart", duart68681_r, duart68681_w, 0x00ff)
223240    AM_RANGE(0x2c0000, 0x2c0007) AM_DEVREADWRITE8("wd1772", wd1772_t, read, write, 0x00ff)
224    AM_RANGE(0x580000, 0x77ffff) AM_RAM         // sample RAM?
241    AM_RANGE(0x580000, 0x7fffff) AM_RAM         // sample RAM?
225242    AM_RANGE(0xc00000, 0xc0ffff) AM_ROM AM_REGION("osrom", 0)
226243    AM_RANGE(0xff0000, 0xffffff) AM_RAM AM_SHARE("osram")
227244ADDRESS_MAP_END
r15483r15484
373390    state->m_fdc->data_w(data & 0xff);
374391}
375392
393#if KEYBOARD_HACK
394static INPUT_CHANGED( key_stroke )
395{
396    esq5505_state *state = device.machine().driver_data<esq5505_state>();
397
398    // send a MIDI Note On
399    if (oldval == 0 && newval == 1)
400    {
401        if ((UINT8)(FPTR)param < 0x40)
402        {
403            int code = (int)(FPTR)param;
404
405            if (code == 0)
406            {
407                program--;
408                if (program < 0)
409                {
410                    program = 0;
411                }
412                printf("program to %d\n", program);
413            }
414            if (code == 1)
415            {
416                program++;
417                if (program > 127)
418                {
419                    program = 127;
420                }
421                printf("program to %d\n", program);
422            }
423
424            duart68681_rx_data(state->m_duart, 0, (UINT8)(FPTR)0xc0); // program change
425            duart68681_rx_data(state->m_duart, 0, program); // program
426        }
427        else
428        {
429            duart68681_rx_data(state->m_duart, 0, (UINT8)(FPTR)0x90); // note on
430            duart68681_rx_data(state->m_duart, 0, (UINT8)(FPTR)param);
431            duart68681_rx_data(state->m_duart, 0, (UINT8)(FPTR)0x7f);
432        }
433    }
434    else if (oldval == 1 && newval == 0)
435    {
436        if ((UINT8)(FPTR)param != 0x40)
437        {
438            duart68681_rx_data(state->m_duart, 0, (UINT8)(FPTR)0x80); // note off
439            duart68681_rx_data(state->m_duart, 0, (UINT8)(FPTR)param);
440            duart68681_rx_data(state->m_duart, 0, (UINT8)(FPTR)0x7f);
441        }
442    }
443}
444#endif
445
376446static const hd63450_intf dmac_interface =
377447{
378448   "maincpu",  // CPU - 68000
r15483r15484
387457static const es5505_interface es5505_config =
388458{
389459   "waverom",   /* Bank 0 */
390   "waverom",   /* Bank 1 */
460   "waverom2",   /* Bank 1 */
391461   NULL,       /* irq */
392462    esq5505_read_adc
393463};
394464
395465static MACHINE_CONFIG_START( vfx, esq5505_state )
396   MCFG_CPU_ADD("maincpu", M68000, 16000000)
466   MCFG_CPU_ADD("maincpu", M68000, 10000000)
397467   MCFG_CPU_PROGRAM_MAP(vfx_map)
398468
399469    MCFG_ESQ2x40_ADD("vfd")
r15483r15484
434504MACHINE_CONFIG_END
435505
436506static INPUT_PORTS_START( vfx )
507#if KEYBOARD_HACK
508    PORT_START("KEY0")
509    PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_A) PORT_CHAR('a') PORT_CHAR('A') PORT_CHANGED(key_stroke, 0x40)
510    PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_S) PORT_CHAR('s') PORT_CHAR('S') PORT_CHANGED(key_stroke, 0x41)
511    PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_D) PORT_CHAR('d') PORT_CHAR('D') PORT_CHANGED(key_stroke, 0x42)
512    PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F) PORT_CHAR('f') PORT_CHAR('F') PORT_CHANGED(key_stroke, 0x43)
513    PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_G) PORT_CHAR('g') PORT_CHAR('G') PORT_CHANGED(key_stroke, 0x44)
514    PORT_BIT(0x0020, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_H) PORT_CHAR('h') PORT_CHAR('H') PORT_CHANGED(key_stroke, 0x45)
515    PORT_BIT(0x0040, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_J) PORT_CHAR('j') PORT_CHAR('J') PORT_CHANGED(key_stroke, 0x46)
516    PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_K) PORT_CHAR('k') PORT_CHAR('K') PORT_CHANGED(key_stroke, 0x47)
517    PORT_BIT(0x0100, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_L) PORT_CHAR('l') PORT_CHAR('L') PORT_CHANGED(key_stroke, 0x48)
518    PORT_BIT(0x0200, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Q) PORT_CHAR('q') PORT_CHAR('Q') PORT_CHANGED(key_stroke, 0x49)
519    PORT_BIT(0x0400, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_W) PORT_CHAR('w') PORT_CHAR('W') PORT_CHANGED(key_stroke, 0x4a)
520    PORT_BIT(0x0800, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_B) PORT_CHAR('e') PORT_CHAR('E') PORT_CHANGED(key_stroke, 0x4b)
521    PORT_BIT(0x1000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Q) PORT_CHAR('r') PORT_CHAR('R') PORT_CHANGED(key_stroke, 0x4c)
522    PORT_BIT(0x2000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_W) PORT_CHAR('t') PORT_CHAR('T') PORT_CHANGED(key_stroke, 0x4d)
523    PORT_BIT(0x4000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_E) PORT_CHAR('y') PORT_CHAR('Y') PORT_CHANGED(key_stroke, 0x4e)
524    PORT_BIT(0x8000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_R) PORT_CHAR('u') PORT_CHAR('U') PORT_CHANGED(key_stroke, 0x4f)
525
526    PORT_START("KEY1")
527    PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Z) PORT_CHAR('z') PORT_CHAR('Z') PORT_CHANGED(key_stroke, 0x0)
528    PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_X) PORT_CHAR('x') PORT_CHAR('X') PORT_CHANGED(key_stroke, 0x1)
529#endif
437530INPUT_PORTS_END
438531
439532ROM_START( vfx )
r15483r15484
442535    ROM_LOAD16_BYTE( "vfx210b-high.bin", 0x000001, 0x010000, CRC(59853be8) SHA1(8e07f69d53f80885d15f624e0b912aeaf3212ee4) )
443536
444537    ROM_REGION(0x200000, "waverom", ROMREGION_ERASE00)
445    ROM_LOAD( "vfx-waves-1.bin",  0x000000, 0x080000, NO_DUMP )
446    ROM_LOAD( "vfx-waves-2.bin",  0x100000, 0x080000, NO_DUMP )
538    ROM_LOAD( "u14.bin",  0x000000, 0x080000, NO_DUMP ) // type 234000 on the schematic
539    ROM_LOAD( "u15.bin",  0x080000, 0x080000, NO_DUMP )
540    ROM_LOAD( "u16.bin",  0x100000, 0x080000, NO_DUMP )
447541ROM_END
448542
449543ROM_START( vfxsd )
r15483r15484
452546    ROM_LOAD16_BYTE( "vfxsd_200_upper.bin", 0x000001, 0x010000, CRC(9a40efa2) SHA1(e38a2a4514519c1573361cb1526139bfcf94e45a) )
453547
454548    ROM_REGION(0x200000, "waverom", ROMREGION_ERASE00)
455    ROM_LOAD( "vfxsd-waves-1.bin",  0x000000, 0x080000, NO_DUMP )
456    ROM_LOAD( "vfxsd-waves-2.bin",  0x100000, 0x080000, NO_DUMP )
549    ROM_LOAD( "u54.bin",  0x000000, 0x010000, NO_DUMP )
550    ROM_LOAD( "u55.bin",  0x010000, 0x010000, NO_DUMP )
551    ROM_LOAD( "u56.bin",  0x020000, 0x010000, NO_DUMP )
552    ROM_LOAD( "u57.bin",  0x030000, 0x080000, NO_DUMP )
553    ROM_LOAD( "u58.bin",  0x038000, 0x080000, NO_DUMP )
554    ROM_LOAD( "u59.bin",  0x040000, 0x010000, NO_DUMP )
555    ROM_LOAD( "u60.bin",  0x050000, 0x080000, NO_DUMP )
556
557    ROM_REGION(0x200000, "waverom2", ROMREGION_ERASE00)
457558ROM_END
458559
459560ROM_START( sd1 )

Previous 15994 Revisions Next


© 1998-2018 The MESS Team