trunk/src/mess/drivers/esq1.c
| r19119 | r19120 | |
| 50 | 50 | - Keyboard |
| 51 | 51 | - Analog filters and VCA on the back end of the 5503 |
| 52 | 52 | - SQ-80 support (additional banking, FDC) |
| 53 | | |
| 53 | |
| 54 | NOTES: |
| 55 | Commands from KPC are all 2 bytes |
| 56 | |
| 57 | first byte: command code, bit 7 is 1 = press, 0 = release |
| 58 | second byte is source: 00 = panel 01 = internal keyboard |
| 59 | |
| 60 | 04 SEQ |
| 61 | 05 CART A |
| 62 | 06 CART B |
| 63 | 07 INT |
| 64 | 08 1 / SEQ 1 |
| 65 | 09 2 / SEQ 2 |
| 66 | 0A 3 / SEQ 3 |
| 67 | 0B 4 / SONG |
| 68 | 0C COMPARE |
| 69 | 0D DATA UP |
| 70 | 0E DATA DOWN |
| 71 | 0F WRITE |
| 72 | 10 = UPPER 1 (buttons above display) |
| 73 | 11 = UPPER 2 |
| 74 | 12 = UPPER 3 |
| 75 | 13 = UPPER 4 |
| 76 | 14 = UPPER 5 |
| 77 | 15 = LOWER 1 (buttons below display) |
| 78 | 16 = LOWER 2 |
| 79 | 17 = LOWER 3 |
| 80 | 18 = LOWER 4 |
| 81 | 19 = LOWER 5 |
| 82 | 1a = LFO 1 |
| 83 | 1b = ENV 2 |
| 84 | 1c = MASTER |
| 85 | 1d = CREATE / ERASE |
| 86 | 1e = SELECT |
| 87 | 1f = RECORD |
| 88 | 20 = STORAGE |
| 89 | 21 = EDIT |
| 90 | 22 = MIX |
| 91 | 23 = STOP / CONT |
| 92 | 24 = MIDI |
| 93 | 25 = CONTROL |
| 94 | 26 = LOCATE |
| 95 | 27 = PLAY |
| 96 | 28 = OSC 1 |
| 97 | 29 = OSC 2 |
| 98 | 2A = OSC 3 |
| 99 | 2B = ENV 1 |
| 100 | 2C = DCA 1 |
| 101 | 2D = DCA 2 |
| 102 | 2E = DCA 3 |
| 103 | 2F = LFO 2 |
| 104 | 30 = LFO 3 |
| 105 | 31 = FILTER |
| 106 | 32 = ENV 4 |
| 107 | 33 = ENV 3 |
| 108 | 34 = DCA 4 |
| 109 | 35 = MODES |
| 110 | 36 = SPLIT / LAYER |
| 111 | |
| 54 | 112 | ***************************************************************************/ |
| 55 | 113 | |
| 56 | 114 | #include "emu.h" |
| r19119 | r19120 | |
| 63 | 121 | |
| 64 | 122 | #define WD1772_TAG "wd1772" |
| 65 | 123 | |
| 124 | // QWERTYU = a few keys |
| 125 | // top row 1-0 = the soft keys above and below the display (patch select) |
| 66 | 126 | #define KEYBOARD_HACK (1) |
| 67 | 127 | |
| 68 | 128 | class esq1_state : public driver_device |
| r19119 | r19120 | |
| 242 | 302 | { |
| 243 | 303 | if (oldval == 0 && newval == 1) |
| 244 | 304 | { |
| 245 | | printf("key on %02x\n", (int)(FPTR)param); |
| 246 | 305 | duart68681_rx_data(m_duart, 1, (UINT8)(FPTR)param); |
| 306 | if ((UINT8)(FPTR)param >= 0x90) |
| 307 | { |
| 308 | duart68681_rx_data(m_duart, 1, (UINT8)(FPTR)0x00); |
| 309 | } |
| 310 | else |
| 311 | { |
| 312 | duart68681_rx_data(m_duart, 1, (UINT8)(FPTR)0x01); |
| 313 | } |
| 247 | 314 | } |
| 248 | 315 | else if (oldval == 1 && newval == 0) |
| 249 | 316 | { |
| 250 | | printf("key off %02x\n", (int)(FPTR)param); |
| 251 | | // duart68681_rx_data(m_duart, 1, (UINT8)(FPTR)param-0x40); |
| 317 | duart68681_rx_data(m_duart, 1, (UINT8)(FPTR)param&0x7f); |
| 318 | if ((UINT8)(FPTR)param >= 0x90) |
| 319 | { |
| 320 | duart68681_rx_data(m_duart, 1, (UINT8)(FPTR)0x00); |
| 321 | } |
| 322 | else |
| 323 | { |
| 324 | duart68681_rx_data(m_duart, 1, (UINT8)(FPTR)0x01); |
| 325 | } |
| 252 | 326 | } |
| 253 | 327 | } |
| 254 | 328 | #endif |
| r19119 | r19120 | |
| 306 | 380 | 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) |
| 307 | 381 | 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) |
| 308 | 382 | 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) |
| 309 | | 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) |
| 310 | | 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) |
| 311 | | 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) |
| 312 | | 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) |
| 313 | | 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) |
| 383 | 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) |
| 384 | 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) |
| 385 | 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) |
| 386 | 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) |
| 387 | 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) |
| 314 | 388 | |
| 315 | 389 | PORT_START("KEY1") |
| 316 | | 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) |
| 317 | | 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) |
| 318 | | 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) |
| 319 | | 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) |
| 320 | | 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) |
| 321 | | 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) |
| 322 | | 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) |
| 323 | | 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) |
| 324 | | 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) |
| 325 | | 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) |
| 390 | 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) |
| 391 | 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) |
| 392 | 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) |
| 393 | 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) |
| 394 | 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) |
| 395 | 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) |
| 396 | 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) |
| 397 | 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) |
| 398 | 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) |
| 399 | 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) |
| 326 | 400 | #endif |
| 327 | 401 | INPUT_PORTS_END |
| 328 | 402 | |