mirror of
https://github.com/holub/mame
synced 2025-04-22 16:31:49 +03:00
esq1: figured out KPC command format, fixed keyboard hack accordingly (nw)
This commit is contained in:
parent
bcbec121dc
commit
3cb0e21ea3
@ -50,7 +50,65 @@ TODO:
|
||||
- Keyboard
|
||||
- Analog filters and VCA on the back end of the 5503
|
||||
- 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"
|
||||
@ -63,6 +121,8 @@ TODO:
|
||||
|
||||
#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)
|
||||
|
||||
class esq1_state : public driver_device
|
||||
@ -242,13 +302,27 @@ INPUT_CHANGED_MEMBER(esq1_state::key_stroke)
|
||||
{
|
||||
if (oldval == 0 && newval == 1)
|
||||
{
|
||||
printf("key on %02x\n", (int)(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)
|
||||
{
|
||||
printf("key off %02x\n", (int)(FPTR)param);
|
||||
// duart68681_rx_data(m_duart, 1, (UINT8)(FPTR)param-0x40);
|
||||
duart68681_rx_data(m_duart, 1, (UINT8)(FPTR)param&0x7f);
|
||||
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
|
||||
@ -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(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(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(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(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(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(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(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_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_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_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_U) PORT_CHAR('u') PORT_CHAR('U') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x8f)
|
||||
|
||||
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(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(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(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(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(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(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(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(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(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(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, 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, 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, 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, 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, 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, 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, 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, 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, 0x99)
|
||||
#endif
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user