mirror of
https://github.com/holub/mame
synced 2025-10-08 17:37:56 +03:00
esq1: figured out KPC command format, fixed keyboard hack accordingly (nw)
This commit is contained in:
parent
bcbec121dc
commit
3cb0e21ea3
@ -51,6 +51,64 @@ TODO:
|
|||||||
- Analog filters and VCA on the back end of the 5503
|
- Analog filters and VCA on the back end of the 5503
|
||||||
- SQ-80 support (additional banking, FDC)
|
- SQ-80 support (additional banking, FDC)
|
||||||
|
|
||||||
|
NOTES:
|
||||||
|
Commands from KPC are all 2 bytes
|
||||||
|
|
||||||
|
first byte: command code, bit 7 is 1 = press, 0 = release
|
||||||
|
second byte is source: 00 = panel 01 = internal keyboard
|
||||||
|
|
||||||
|
04 SEQ
|
||||||
|
05 CART A
|
||||||
|
06 CART B
|
||||||
|
07 INT
|
||||||
|
08 1 / SEQ 1
|
||||||
|
09 2 / SEQ 2
|
||||||
|
0A 3 / SEQ 3
|
||||||
|
0B 4 / SONG
|
||||||
|
0C COMPARE
|
||||||
|
0D DATA UP
|
||||||
|
0E DATA DOWN
|
||||||
|
0F WRITE
|
||||||
|
10 = UPPER 1 (buttons above display)
|
||||||
|
11 = UPPER 2
|
||||||
|
12 = UPPER 3
|
||||||
|
13 = UPPER 4
|
||||||
|
14 = UPPER 5
|
||||||
|
15 = LOWER 1 (buttons below display)
|
||||||
|
16 = LOWER 2
|
||||||
|
17 = LOWER 3
|
||||||
|
18 = LOWER 4
|
||||||
|
19 = LOWER 5
|
||||||
|
1a = LFO 1
|
||||||
|
1b = ENV 2
|
||||||
|
1c = MASTER
|
||||||
|
1d = CREATE / ERASE
|
||||||
|
1e = SELECT
|
||||||
|
1f = RECORD
|
||||||
|
20 = STORAGE
|
||||||
|
21 = EDIT
|
||||||
|
22 = MIX
|
||||||
|
23 = STOP / CONT
|
||||||
|
24 = MIDI
|
||||||
|
25 = CONTROL
|
||||||
|
26 = LOCATE
|
||||||
|
27 = PLAY
|
||||||
|
28 = OSC 1
|
||||||
|
29 = OSC 2
|
||||||
|
2A = OSC 3
|
||||||
|
2B = ENV 1
|
||||||
|
2C = DCA 1
|
||||||
|
2D = DCA 2
|
||||||
|
2E = DCA 3
|
||||||
|
2F = LFO 2
|
||||||
|
30 = LFO 3
|
||||||
|
31 = FILTER
|
||||||
|
32 = ENV 4
|
||||||
|
33 = ENV 3
|
||||||
|
34 = DCA 4
|
||||||
|
35 = MODES
|
||||||
|
36 = SPLIT / LAYER
|
||||||
|
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
#include "emu.h"
|
#include "emu.h"
|
||||||
@ -63,6 +121,8 @@ TODO:
|
|||||||
|
|
||||||
#define WD1772_TAG "wd1772"
|
#define WD1772_TAG "wd1772"
|
||||||
|
|
||||||
|
// QWERTYU = a few keys
|
||||||
|
// top row 1-0 = the soft keys above and below the display (patch select)
|
||||||
#define KEYBOARD_HACK (1)
|
#define KEYBOARD_HACK (1)
|
||||||
|
|
||||||
class esq1_state : public driver_device
|
class esq1_state : public driver_device
|
||||||
@ -242,13 +302,27 @@ INPUT_CHANGED_MEMBER(esq1_state::key_stroke)
|
|||||||
{
|
{
|
||||||
if (oldval == 0 && newval == 1)
|
if (oldval == 0 && newval == 1)
|
||||||
{
|
{
|
||||||
printf("key on %02x\n", (int)(FPTR)param);
|
|
||||||
duart68681_rx_data(m_duart, 1, (UINT8)(FPTR)param);
|
duart68681_rx_data(m_duart, 1, (UINT8)(FPTR)param);
|
||||||
|
if ((UINT8)(FPTR)param >= 0x90)
|
||||||
|
{
|
||||||
|
duart68681_rx_data(m_duart, 1, (UINT8)(FPTR)0x00);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
duart68681_rx_data(m_duart, 1, (UINT8)(FPTR)0x01);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (oldval == 1 && newval == 0)
|
else if (oldval == 1 && newval == 0)
|
||||||
{
|
{
|
||||||
printf("key off %02x\n", (int)(FPTR)param);
|
duart68681_rx_data(m_duart, 1, (UINT8)(FPTR)param&0x7f);
|
||||||
// duart68681_rx_data(m_duart, 1, (UINT8)(FPTR)param-0x40);
|
if ((UINT8)(FPTR)param >= 0x90)
|
||||||
|
{
|
||||||
|
duart68681_rx_data(m_duart, 1, (UINT8)(FPTR)0x00);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
duart68681_rx_data(m_duart, 1, (UINT8)(FPTR)0x01);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -306,23 +380,23 @@ static INPUT_PORTS_START( esq1 )
|
|||||||
PORT_BIT(0x0100, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_L) PORT_CHAR('l') PORT_CHAR('L') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x88)
|
PORT_BIT(0x0100, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_L) PORT_CHAR('l') PORT_CHAR('L') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x88)
|
||||||
PORT_BIT(0x0200, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Q) PORT_CHAR('q') PORT_CHAR('Q') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x89)
|
PORT_BIT(0x0200, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Q) PORT_CHAR('q') PORT_CHAR('Q') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x89)
|
||||||
PORT_BIT(0x0400, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_W) PORT_CHAR('w') PORT_CHAR('W') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x8a)
|
PORT_BIT(0x0400, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_W) PORT_CHAR('w') PORT_CHAR('W') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x8a)
|
||||||
PORT_BIT(0x0800, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_B) PORT_CHAR('e') PORT_CHAR('E') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x8b)
|
PORT_BIT(0x0800, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_E) PORT_CHAR('e') PORT_CHAR('E') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x8b)
|
||||||
PORT_BIT(0x1000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Q) PORT_CHAR('r') PORT_CHAR('R') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x8c)
|
PORT_BIT(0x1000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_R) PORT_CHAR('r') PORT_CHAR('R') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x8c)
|
||||||
PORT_BIT(0x2000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_W) PORT_CHAR('t') PORT_CHAR('T') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x8d)
|
PORT_BIT(0x2000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_T) PORT_CHAR('t') PORT_CHAR('T') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x8d)
|
||||||
PORT_BIT(0x4000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_E) PORT_CHAR('y') PORT_CHAR('Y') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x8e)
|
PORT_BIT(0x4000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Y) PORT_CHAR('y') PORT_CHAR('Y') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x8e)
|
||||||
PORT_BIT(0x8000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_R) PORT_CHAR('u') PORT_CHAR('U') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x8f)
|
PORT_BIT(0x8000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_U) PORT_CHAR('u') PORT_CHAR('U') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x8f)
|
||||||
|
|
||||||
PORT_START("KEY1")
|
PORT_START("KEY1")
|
||||||
PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x0c)
|
PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x90)
|
||||||
PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x0d)
|
PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x91)
|
||||||
PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x0e)
|
PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x92)
|
||||||
PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x15)
|
PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x93)
|
||||||
PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x0f)
|
PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x94)
|
||||||
PORT_BIT(0x0020, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x10)
|
PORT_BIT(0x0020, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x95)
|
||||||
PORT_BIT(0x0040, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x11)
|
PORT_BIT(0x0040, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x96)
|
||||||
PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_8) PORT_CHAR('8') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x12)
|
PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_8) PORT_CHAR('8') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x97)
|
||||||
PORT_BIT(0x0100, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x13)
|
PORT_BIT(0x0100, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x98)
|
||||||
PORT_BIT(0x0200, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_0) PORT_CHAR('0') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x14)
|
PORT_BIT(0x0200, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_0) PORT_CHAR('0') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x99)
|
||||||
#endif
|
#endif
|
||||||
INPUT_PORTS_END
|
INPUT_PORTS_END
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user