mirror of
https://github.com/holub/mame
synced 2025-04-23 08:49:55 +03:00
kb3600: converted to devcb2 (nw)
This commit is contained in:
parent
6a57b2c85a
commit
a36d4c6609
@ -406,8 +406,8 @@ static INPUT_PORTS_START( apple2_common )
|
||||
PORT_START("X0")
|
||||
PORT_BIT(0x001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR('#')
|
||||
PORT_BIT(0x002, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHAR('$')
|
||||
PORT_BIT(0x004, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHAR('&')
|
||||
PORT_BIT(0x008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHAR('%')
|
||||
PORT_BIT(0x004, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHAR('%')
|
||||
PORT_BIT(0x008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHAR('&')
|
||||
PORT_BIT(0x010, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('\'')
|
||||
PORT_BIT(0x020, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_8) PORT_CHAR('8') PORT_CHAR('(')
|
||||
PORT_BIT(0x040, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHAR(')')
|
||||
@ -881,40 +881,6 @@ static SLOT_INTERFACE_START(apple2eaux_cards)
|
||||
SLOT_INTERFACE("rw3", A2EAUX_RAMWORKS3) /* Applied Engineering RamWorks III */
|
||||
SLOT_INTERFACE_END
|
||||
|
||||
static AY3600_INTERFACE( ay3600_intf )
|
||||
{
|
||||
DEVCB_INPUT_PORT("X0"),
|
||||
DEVCB_INPUT_PORT("X1"),
|
||||
DEVCB_INPUT_PORT("X2"),
|
||||
DEVCB_INPUT_PORT("X3"),
|
||||
DEVCB_INPUT_PORT("X4"),
|
||||
DEVCB_INPUT_PORT("X5"),
|
||||
DEVCB_INPUT_PORT("X6"),
|
||||
DEVCB_INPUT_PORT("X7"),
|
||||
DEVCB_INPUT_PORT("X8"),
|
||||
DEVCB_DRIVER_LINE_MEMBER(apple2_state, ay3600_shift_r),
|
||||
DEVCB_DRIVER_LINE_MEMBER(apple2_state, ay3600_control_r),
|
||||
DEVCB_DRIVER_LINE_MEMBER(apple2_state, ay3600_data_ready_w),
|
||||
DEVCB_NULL
|
||||
};
|
||||
|
||||
static AY3600_INTERFACE( ay3600_iie_intf )
|
||||
{
|
||||
DEVCB_INPUT_PORT("X0"),
|
||||
DEVCB_INPUT_PORT("X1"),
|
||||
DEVCB_INPUT_PORT("X2"),
|
||||
DEVCB_INPUT_PORT("X3"),
|
||||
DEVCB_INPUT_PORT("X4"),
|
||||
DEVCB_INPUT_PORT("X5"),
|
||||
DEVCB_INPUT_PORT("X6"),
|
||||
DEVCB_INPUT_PORT("X7"),
|
||||
DEVCB_INPUT_PORT("X8"),
|
||||
DEVCB_DRIVER_LINE_MEMBER(apple2_state, ay3600_shift_r),
|
||||
DEVCB_DRIVER_LINE_MEMBER(apple2_state, ay3600_control_r),
|
||||
DEVCB_DRIVER_LINE_MEMBER(apple2_state, ay3600_iie_data_ready_w),
|
||||
DEVCB_NULL
|
||||
};
|
||||
|
||||
static MACHINE_CONFIG_START( apple2_common, apple2_state )
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", M6502, 1021800) /* close to actual CPU frequency of 1.020484 MHz */
|
||||
@ -942,7 +908,19 @@ static MACHINE_CONFIG_START( apple2_common, apple2_state )
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
|
||||
|
||||
/* keyboard controller */
|
||||
MCFG_AY3600_ADD("ay3600", 0, ay3600_intf)
|
||||
MCFG_DEVICE_ADD("ay3600", AY3600, 0)
|
||||
MCFG_AY3600_MATRIX_X0(IOPORT("X0"))
|
||||
MCFG_AY3600_MATRIX_X1(IOPORT("X1"))
|
||||
MCFG_AY3600_MATRIX_X2(IOPORT("X2"))
|
||||
MCFG_AY3600_MATRIX_X3(IOPORT("X3"))
|
||||
MCFG_AY3600_MATRIX_X4(IOPORT("X4"))
|
||||
MCFG_AY3600_MATRIX_X5(IOPORT("X5"))
|
||||
MCFG_AY3600_MATRIX_X6(IOPORT("X6"))
|
||||
MCFG_AY3600_MATRIX_X7(IOPORT("X7"))
|
||||
MCFG_AY3600_MATRIX_X8(IOPORT("X8"))
|
||||
MCFG_AY3600_SHIFT_CB(READLINE(apple2_state, ay3600_shift_r))
|
||||
MCFG_AY3600_CONTROL_CB(READLINE(apple2_state, ay3600_control_r))
|
||||
MCFG_AY3600_DATA_READY_CB(WRITELINE(apple2_state, ay3600_data_ready_w))
|
||||
|
||||
/* slot devices */
|
||||
MCFG_A2BUS_BUS_ADD("a2bus", "maincpu", a2bus_intf)
|
||||
@ -998,8 +976,8 @@ static MACHINE_CONFIG_DERIVED( apple2e, apple2_common )
|
||||
MCFG_CASSETTE_ADD( "cassette", apple2_cassette_interface )
|
||||
|
||||
/* keyboard controller */
|
||||
MCFG_DEVICE_REMOVE("ay3600")
|
||||
MCFG_AY3600_ADD("ay3600", 0, ay3600_iie_intf)
|
||||
MCFG_DEVICE_MODIFY("ay3600")
|
||||
MCFG_AY3600_DATA_READY_CB(WRITELINE(apple2_state, ay3600_iie_data_ready_w))
|
||||
|
||||
// IIe and later have no physical slot 0, the "language card" is built into the motherboard
|
||||
MCFG_A2BUS_SLOT_REMOVE("sl0")
|
||||
|
@ -319,23 +319,6 @@ static SLOT_INTERFACE_START(apple2_cards)
|
||||
SLOT_INTERFACE("hsscsi", A2BUS_HSSCSI) /* Apple II High-Speed SCSI Card */
|
||||
SLOT_INTERFACE_END
|
||||
|
||||
static AY3600_INTERFACE( ay3600_iie_intf )
|
||||
{
|
||||
DEVCB_INPUT_PORT("X0"),
|
||||
DEVCB_INPUT_PORT("X1"),
|
||||
DEVCB_INPUT_PORT("X2"),
|
||||
DEVCB_INPUT_PORT("X3"),
|
||||
DEVCB_INPUT_PORT("X4"),
|
||||
DEVCB_INPUT_PORT("X5"),
|
||||
DEVCB_INPUT_PORT("X6"),
|
||||
DEVCB_INPUT_PORT("X7"),
|
||||
DEVCB_INPUT_PORT("X8"),
|
||||
DEVCB_DRIVER_LINE_MEMBER(apple2_state, ay3600_shift_r),
|
||||
DEVCB_DRIVER_LINE_MEMBER(apple2_state, ay3600_control_r),
|
||||
DEVCB_DRIVER_LINE_MEMBER(apple2_state, ay3600_iie_data_ready_w),
|
||||
DEVCB_NULL
|
||||
};
|
||||
|
||||
static MACHINE_CONFIG_START( apple2gs, apple2gs_state )
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", G65816, APPLE2GS_14M/5)
|
||||
@ -371,7 +354,19 @@ static MACHINE_CONFIG_START( apple2gs, apple2gs_state )
|
||||
MCFG_VIDEO_START_OVERRIDE(apple2gs_state, apple2gs )
|
||||
|
||||
/* keyboard controller */
|
||||
MCFG_AY3600_ADD("ay3600", 0, ay3600_iie_intf)
|
||||
MCFG_DEVICE_ADD("ay3600", AY3600, 0)
|
||||
MCFG_AY3600_MATRIX_X0(IOPORT("X0"))
|
||||
MCFG_AY3600_MATRIX_X1(IOPORT("X1"))
|
||||
MCFG_AY3600_MATRIX_X2(IOPORT("X2"))
|
||||
MCFG_AY3600_MATRIX_X3(IOPORT("X3"))
|
||||
MCFG_AY3600_MATRIX_X4(IOPORT("X4"))
|
||||
MCFG_AY3600_MATRIX_X5(IOPORT("X5"))
|
||||
MCFG_AY3600_MATRIX_X6(IOPORT("X6"))
|
||||
MCFG_AY3600_MATRIX_X7(IOPORT("X7"))
|
||||
MCFG_AY3600_MATRIX_X8(IOPORT("X8"))
|
||||
MCFG_AY3600_SHIFT_CB(READLINE(apple2_state, ay3600_shift_r))
|
||||
MCFG_AY3600_CONTROL_CB(READLINE(apple2_state, ay3600_control_r))
|
||||
MCFG_AY3600_DATA_READY_CB(WRITELINE(apple2_state, ay3600_iie_data_ready_w))
|
||||
|
||||
/* sound hardware */
|
||||
MCFG_SPEAKER_STANDARD_MONO("mono")
|
||||
|
@ -47,23 +47,6 @@ static const struct a2bus_interface a2bus_intf =
|
||||
DEVCB_NULL
|
||||
};
|
||||
|
||||
static AY3600_INTERFACE( ay3600_intf )
|
||||
{
|
||||
DEVCB_INPUT_PORT("X0"),
|
||||
DEVCB_INPUT_PORT("X1"),
|
||||
DEVCB_INPUT_PORT("X2"),
|
||||
DEVCB_INPUT_PORT("X3"),
|
||||
DEVCB_INPUT_PORT("X4"),
|
||||
DEVCB_INPUT_PORT("X5"),
|
||||
DEVCB_INPUT_PORT("X6"),
|
||||
DEVCB_INPUT_PORT("X7"),
|
||||
DEVCB_INPUT_PORT("X8"),
|
||||
DEVCB_DRIVER_LINE_MEMBER(apple3_state, ay3600_shift_r),
|
||||
DEVCB_DRIVER_LINE_MEMBER(apple3_state, ay3600_control_r),
|
||||
DEVCB_DRIVER_LINE_MEMBER(apple3_state, ay3600_data_ready_w),
|
||||
DEVCB_NULL
|
||||
};
|
||||
|
||||
static MACHINE_CONFIG_START( apple3, apple3_state )
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", M6502, 2000000) /* 2 MHz */
|
||||
@ -89,7 +72,19 @@ static MACHINE_CONFIG_START( apple3, apple3_state )
|
||||
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", apple3_state, apple3_interrupt, "screen", 0, 1)
|
||||
|
||||
/* keyboard controller */
|
||||
MCFG_AY3600_ADD("ay3600", 0, ay3600_intf)
|
||||
MCFG_DEVICE_ADD("ay3600", AY3600, 0)
|
||||
MCFG_AY3600_MATRIX_X0(IOPORT("X0"))
|
||||
MCFG_AY3600_MATRIX_X1(IOPORT("X1"))
|
||||
MCFG_AY3600_MATRIX_X2(IOPORT("X2"))
|
||||
MCFG_AY3600_MATRIX_X3(IOPORT("X3"))
|
||||
MCFG_AY3600_MATRIX_X4(IOPORT("X4"))
|
||||
MCFG_AY3600_MATRIX_X5(IOPORT("X5"))
|
||||
MCFG_AY3600_MATRIX_X6(IOPORT("X6"))
|
||||
MCFG_AY3600_MATRIX_X7(IOPORT("X7"))
|
||||
MCFG_AY3600_MATRIX_X8(IOPORT("X8"))
|
||||
MCFG_AY3600_SHIFT_CB(READLINE(apple3_state, ay3600_shift_r))
|
||||
MCFG_AY3600_CONTROL_CB(READLINE(apple3_state, ay3600_control_r))
|
||||
MCFG_AY3600_DATA_READY_CB(WRITELINE(apple3_state, ay3600_data_ready_w))
|
||||
|
||||
/* slot bus */
|
||||
MCFG_A2BUS_BUS_ADD("a2bus", "maincpu", a2bus_intf)
|
||||
@ -175,52 +170,52 @@ static INPUT_PORTS_START( apple3 )
|
||||
0x37 0x35 0x33 0x101 0x3f 0x3d 0x108 0x100 0x3e
|
||||
*/
|
||||
PORT_START("X0")
|
||||
PORT_BIT( 0x001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Esc") PORT_CODE(KEYCODE_ESC) PORT_CHAR(27)
|
||||
PORT_BIT( 0x002, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!')
|
||||
PORT_BIT( 0x004, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR('\"')
|
||||
PORT_BIT( 0x008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR('#')
|
||||
PORT_BIT( 0x010, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHAR('$')
|
||||
PORT_BIT( 0x020, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHAR('%')
|
||||
PORT_BIT( 0x040, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHAR('&')
|
||||
PORT_BIT( 0x080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('\'')
|
||||
PORT_BIT( 0x100, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_8) PORT_CHAR('8') PORT_CHAR('(')
|
||||
PORT_BIT( 0x200, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHAR(')')
|
||||
PORT_BIT(0x001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Esc") PORT_CODE(KEYCODE_ESC) PORT_CHAR(27)
|
||||
PORT_BIT(0x002, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!')
|
||||
PORT_BIT(0x004, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR('\"')
|
||||
PORT_BIT(0x008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR('#')
|
||||
PORT_BIT(0x010, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHAR('$')
|
||||
PORT_BIT(0x020, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHAR('%')
|
||||
PORT_BIT(0x040, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHAR('&')
|
||||
PORT_BIT(0x080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('\'')
|
||||
PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_8) PORT_CHAR('8') PORT_CHAR('(')
|
||||
PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHAR(')')
|
||||
|
||||
PORT_START("X1")
|
||||
PORT_BIT( 0x001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Tab") PORT_CODE(KEYCODE_TAB) PORT_CHAR(9)
|
||||
PORT_BIT( 0x002, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Q) PORT_CHAR('Q') PORT_CHAR('q')
|
||||
PORT_BIT( 0x004, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_W) PORT_CHAR('W') PORT_CHAR('w')
|
||||
PORT_BIT( 0x008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_E) PORT_CHAR('E') PORT_CHAR('e')
|
||||
PORT_BIT( 0x010, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_R) PORT_CHAR('R') PORT_CHAR('r')
|
||||
PORT_BIT( 0x020, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_T) PORT_CHAR('T') PORT_CHAR('t')
|
||||
PORT_BIT( 0x040, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Y) PORT_CHAR('Y') PORT_CHAR('y')
|
||||
PORT_BIT( 0x080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_U) PORT_CHAR('U') PORT_CHAR('u')
|
||||
PORT_BIT( 0x100, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_I) PORT_CHAR('I') PORT_CHAR('i')
|
||||
PORT_BIT( 0x200, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_O) PORT_CHAR('O') PORT_CHAR('o')
|
||||
PORT_BIT(0x001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Tab") PORT_CODE(KEYCODE_TAB) PORT_CHAR(9)
|
||||
PORT_BIT(0x002, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Q) PORT_CHAR('Q') PORT_CHAR('q')
|
||||
PORT_BIT(0x004, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_W) PORT_CHAR('W') PORT_CHAR('w')
|
||||
PORT_BIT(0x008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_E) PORT_CHAR('E') PORT_CHAR('e')
|
||||
PORT_BIT(0x010, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_R) PORT_CHAR('R') PORT_CHAR('r')
|
||||
PORT_BIT(0x020, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_T) PORT_CHAR('T') PORT_CHAR('t')
|
||||
PORT_BIT(0x040, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Y) PORT_CHAR('Y') PORT_CHAR('y')
|
||||
PORT_BIT(0x080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_U) PORT_CHAR('U') PORT_CHAR('u')
|
||||
PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_I) PORT_CHAR('I') PORT_CHAR('i')
|
||||
PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_O) PORT_CHAR('O') PORT_CHAR('o')
|
||||
|
||||
PORT_START("X2")
|
||||
PORT_BIT( 0x001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_A) PORT_CHAR('A') PORT_CHAR('a')
|
||||
PORT_BIT( 0x002, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_S) PORT_CHAR('S') PORT_CHAR('s')
|
||||
PORT_BIT( 0x004, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_D) PORT_CHAR('D') PORT_CHAR('d')
|
||||
PORT_BIT( 0x008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F) PORT_CHAR('F') PORT_CHAR('f')
|
||||
PORT_BIT( 0x010, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_H) PORT_CHAR('H') PORT_CHAR('h')
|
||||
PORT_BIT( 0x020, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_G) PORT_CHAR('G') PORT_CHAR('g')
|
||||
PORT_BIT( 0x040, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_J) PORT_CHAR('J') PORT_CHAR('j')
|
||||
PORT_BIT( 0x080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_K) PORT_CHAR('K') PORT_CHAR('k')
|
||||
PORT_BIT( 0x100, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_COLON) PORT_CHAR(';') PORT_CHAR(':')
|
||||
PORT_BIT( 0x200, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_L) PORT_CHAR('L') PORT_CHAR('l')
|
||||
PORT_BIT(0x001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_A) PORT_CHAR('A') PORT_CHAR('a')
|
||||
PORT_BIT(0x002, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_S) PORT_CHAR('S') PORT_CHAR('s')
|
||||
PORT_BIT(0x004, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_D) PORT_CHAR('D') PORT_CHAR('d')
|
||||
PORT_BIT(0x008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F) PORT_CHAR('F') PORT_CHAR('f')
|
||||
PORT_BIT(0x010, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_H) PORT_CHAR('H') PORT_CHAR('h')
|
||||
PORT_BIT(0x020, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_G) PORT_CHAR('G') PORT_CHAR('g')
|
||||
PORT_BIT(0x040, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_J) PORT_CHAR('J') PORT_CHAR('j')
|
||||
PORT_BIT(0x080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_K) PORT_CHAR('K') PORT_CHAR('k')
|
||||
PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_COLON) PORT_CHAR(';') PORT_CHAR(':')
|
||||
PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_L) PORT_CHAR('L') PORT_CHAR('l')
|
||||
|
||||
PORT_START("X3")
|
||||
PORT_BIT( 0x001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Z) PORT_CHAR('Z') PORT_CHAR('z')
|
||||
PORT_BIT( 0x002, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_X) PORT_CHAR('X') PORT_CHAR('x')
|
||||
PORT_BIT( 0x004, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_C) PORT_CHAR('C') PORT_CHAR('c')
|
||||
PORT_BIT( 0x008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_V) PORT_CHAR('V') PORT_CHAR('v')
|
||||
PORT_BIT( 0x010, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_B) PORT_CHAR('B') PORT_CHAR('b')
|
||||
PORT_BIT( 0x020, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_N) PORT_CHAR('N') PORT_CHAR('n')
|
||||
PORT_BIT( 0x040, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_M) PORT_CHAR('M') PORT_CHAR('m')
|
||||
PORT_BIT( 0x080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') PORT_CHAR('<')
|
||||
PORT_BIT( 0x100, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_STOP) PORT_CHAR('.') PORT_CHAR('>')
|
||||
PORT_BIT( 0x200, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_SLASH) PORT_CHAR('/') PORT_CHAR('?')
|
||||
PORT_BIT(0x001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Z) PORT_CHAR('Z') PORT_CHAR('z')
|
||||
PORT_BIT(0x002, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_X) PORT_CHAR('X') PORT_CHAR('x')
|
||||
PORT_BIT(0x004, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_C) PORT_CHAR('C') PORT_CHAR('c')
|
||||
PORT_BIT(0x008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_V) PORT_CHAR('V') PORT_CHAR('v')
|
||||
PORT_BIT(0x010, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_B) PORT_CHAR('B') PORT_CHAR('b')
|
||||
PORT_BIT(0x020, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_N) PORT_CHAR('N') PORT_CHAR('n')
|
||||
PORT_BIT(0x040, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_M) PORT_CHAR('M') PORT_CHAR('m')
|
||||
PORT_BIT(0x080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') PORT_CHAR('<')
|
||||
PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_STOP) PORT_CHAR('.') PORT_CHAR('>')
|
||||
PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_SLASH) PORT_CHAR('/') PORT_CHAR('?')
|
||||
|
||||
PORT_START("X4")
|
||||
PORT_BIT(0x001, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||
@ -283,13 +278,13 @@ static INPUT_PORTS_START( apple3 )
|
||||
PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||
|
||||
PORT_START("keyb_special")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Caps Lock") PORT_CODE(KEYCODE_CAPSLOCK) PORT_TOGGLE
|
||||
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Left Shift") PORT_CODE(KEYCODE_LSHIFT) PORT_CHAR(UCHAR_SHIFT_1)
|
||||
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Right Shift") PORT_CODE(KEYCODE_RSHIFT) PORT_CHAR(UCHAR_SHIFT_1)
|
||||
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Control") PORT_CODE(KEYCODE_LCONTROL) PORT_CHAR(UCHAR_SHIFT_2)
|
||||
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Open Apple") PORT_CODE(KEYCODE_LALT)
|
||||
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Solid Apple") PORT_CODE(KEYCODE_RALT)
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("RESET") PORT_CODE(KEYCODE_F12)
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Caps Lock") PORT_CODE(KEYCODE_CAPSLOCK) PORT_TOGGLE
|
||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Left Shift") PORT_CODE(KEYCODE_LSHIFT) PORT_CHAR(UCHAR_SHIFT_1)
|
||||
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Right Shift") PORT_CODE(KEYCODE_RSHIFT) PORT_CHAR(UCHAR_SHIFT_1)
|
||||
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Control") PORT_CODE(KEYCODE_LCONTROL) PORT_CHAR(UCHAR_SHIFT_2)
|
||||
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Open Apple") PORT_CODE(KEYCODE_LALT)
|
||||
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Solid Apple") PORT_CODE(KEYCODE_RALT)
|
||||
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("RESET") PORT_CODE(KEYCODE_F12)
|
||||
INPUT_PORTS_END
|
||||
|
||||
ROM_START(apple3)
|
||||
|
@ -526,23 +526,6 @@ WRITE_LINE_MEMBER( bw12_state::ay3600_data_ready_w )
|
||||
}
|
||||
}
|
||||
|
||||
static AY3600_INTERFACE( bw12_ay3600_intf )
|
||||
{
|
||||
DEVCB_INPUT_PORT("X0"),
|
||||
DEVCB_INPUT_PORT("X1"),
|
||||
DEVCB_INPUT_PORT("X2"),
|
||||
DEVCB_INPUT_PORT("X3"),
|
||||
DEVCB_INPUT_PORT("X4"),
|
||||
DEVCB_INPUT_PORT("X5"),
|
||||
DEVCB_INPUT_PORT("X6"),
|
||||
DEVCB_INPUT_PORT("X7"),
|
||||
DEVCB_INPUT_PORT("X8"),
|
||||
DEVCB_DRIVER_LINE_MEMBER(bw12_state, ay3600_shift_r),
|
||||
DEVCB_DRIVER_LINE_MEMBER(bw12_state, ay3600_control_r),
|
||||
DEVCB_DRIVER_LINE_MEMBER(bw12_state, ay3600_data_ready_w),
|
||||
DEVCB_NULL
|
||||
};
|
||||
|
||||
/* Machine Initialization */
|
||||
|
||||
void bw12_state::machine_start()
|
||||
@ -647,7 +630,19 @@ static MACHINE_CONFIG_START( common, bw12_state )
|
||||
|
||||
MCFG_Z80SIO0_ADD(Z80SIO_TAG, XTAL_16MHz/4, sio_intf)
|
||||
MCFG_PIT8253_ADD(PIT8253_TAG, pit_intf)
|
||||
MCFG_AY3600_ADD(AY3600PRO002_TAG, 0, bw12_ay3600_intf)
|
||||
MCFG_DEVICE_ADD(AY3600PRO002_TAG, AY3600, 0)
|
||||
MCFG_AY3600_MATRIX_X0(IOPORT("X0"))
|
||||
MCFG_AY3600_MATRIX_X1(IOPORT("X1"))
|
||||
MCFG_AY3600_MATRIX_X2(IOPORT("X2"))
|
||||
MCFG_AY3600_MATRIX_X3(IOPORT("X3"))
|
||||
MCFG_AY3600_MATRIX_X4(IOPORT("X4"))
|
||||
MCFG_AY3600_MATRIX_X5(IOPORT("X5"))
|
||||
MCFG_AY3600_MATRIX_X6(IOPORT("X6"))
|
||||
MCFG_AY3600_MATRIX_X7(IOPORT("X7"))
|
||||
MCFG_AY3600_MATRIX_X8(IOPORT("X8"))
|
||||
MCFG_AY3600_SHIFT_CB(READLINE(bw12_state, ay3600_shift_r))
|
||||
MCFG_AY3600_CONTROL_CB(READLINE(bw12_state, ay3600_control_r))
|
||||
MCFG_AY3600_DATA_READY_CB(WRITELINE(bw12_state, ay3600_data_ready_w))
|
||||
|
||||
MCFG_RS232_PORT_ADD(RS232_A_TAG, default_rs232_devices, NULL)
|
||||
MCFG_SERIAL_OUT_RX_HANDLER(DEVWRITELINE(Z80SIO_TAG, z80dart_device, rxa_w))
|
||||
|
@ -35,37 +35,6 @@
|
||||
// devices
|
||||
const device_type AY3600 = &device_creator<ay3600_device>;
|
||||
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// DEVICE CONFIGURATION
|
||||
//**************************************************************************
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_config_complete - perform any
|
||||
// operations now that the configuration is
|
||||
// complete
|
||||
//-------------------------------------------------
|
||||
|
||||
void ay3600_device::device_config_complete()
|
||||
{
|
||||
// inherit a copy of the static data
|
||||
const ay3600_interface *intf = reinterpret_cast<const ay3600_interface *>(static_config());
|
||||
if (intf != NULL)
|
||||
*static_cast<ay3600_interface *>(this) = *intf;
|
||||
|
||||
// or initialize to defaults if none provided
|
||||
else
|
||||
{
|
||||
memset(&m_in_shift_cb, 0, sizeof(m_in_shift_cb));
|
||||
memset(&m_in_control_cb, 0, sizeof(m_in_control_cb));
|
||||
memset(&m_out_data_ready_cb, 0, sizeof(m_out_data_ready_cb));
|
||||
memset(&m_out_ako_cb, 0, sizeof(m_out_ako_cb));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// LIVE DEVICE
|
||||
//**************************************************************************
|
||||
@ -75,7 +44,20 @@ void ay3600_device::device_config_complete()
|
||||
//-------------------------------------------------
|
||||
|
||||
ay3600_device::ay3600_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
|
||||
: device_t(mconfig, AY3600, "AY-5-3600", tag, owner, clock, "ay3600", __FILE__)
|
||||
: device_t(mconfig, AY3600, "AY-5-3600", tag, owner, clock, "ay3600", __FILE__),
|
||||
m_read_x0(*this),
|
||||
m_read_x1(*this),
|
||||
m_read_x2(*this),
|
||||
m_read_x3(*this),
|
||||
m_read_x4(*this),
|
||||
m_read_x5(*this),
|
||||
m_read_x6(*this),
|
||||
m_read_x7(*this),
|
||||
m_read_x8(*this),
|
||||
m_read_shift(*this),
|
||||
m_read_control(*this),
|
||||
m_write_data_ready(*this),
|
||||
m_write_ako(*this)
|
||||
{
|
||||
}
|
||||
|
||||
@ -86,19 +68,19 @@ ay3600_device::ay3600_device(const machine_config &mconfig, const char *tag, dev
|
||||
void ay3600_device::device_start()
|
||||
{
|
||||
// resolve callbacks
|
||||
m_in_x_func[0].resolve(m_in_x0_cb, *this);
|
||||
m_in_x_func[1].resolve(m_in_x1_cb, *this);
|
||||
m_in_x_func[2].resolve(m_in_x2_cb, *this);
|
||||
m_in_x_func[3].resolve(m_in_x3_cb, *this);
|
||||
m_in_x_func[4].resolve(m_in_x4_cb, *this);
|
||||
m_in_x_func[5].resolve(m_in_x5_cb, *this);
|
||||
m_in_x_func[6].resolve(m_in_x6_cb, *this);
|
||||
m_in_x_func[7].resolve(m_in_x7_cb, *this);
|
||||
m_in_x_func[8].resolve(m_in_x8_cb, *this);
|
||||
m_in_shift_func.resolve(m_in_shift_cb, *this);
|
||||
m_in_control_func.resolve(m_in_control_cb, *this);
|
||||
m_out_data_ready_func.resolve(m_out_data_ready_cb, *this);
|
||||
m_out_ako_func.resolve(m_out_ako_cb, *this);
|
||||
m_read_x0.resolve_safe(0);
|
||||
m_read_x1.resolve_safe(0);
|
||||
m_read_x2.resolve_safe(0);
|
||||
m_read_x3.resolve_safe(0);
|
||||
m_read_x4.resolve_safe(0);
|
||||
m_read_x5.resolve_safe(0);
|
||||
m_read_x6.resolve_safe(0);
|
||||
m_read_x7.resolve_safe(0);
|
||||
m_read_x8.resolve_safe(0);
|
||||
m_read_shift.resolve_safe(0);
|
||||
m_read_control.resolve_safe(0);
|
||||
m_write_data_ready.resolve_safe();
|
||||
m_write_ako.resolve_safe();
|
||||
|
||||
// allocate timers
|
||||
m_scan_timer = timer_alloc();
|
||||
@ -129,7 +111,20 @@ void ay3600_device::device_timer(emu_timer &timer, device_timer_id id, int param
|
||||
|
||||
for (int x = 0; x < 9; x++)
|
||||
{
|
||||
UINT16 data = m_in_x_func[x](0,0xffff);
|
||||
UINT16 data = 0;
|
||||
|
||||
switch(x)
|
||||
{
|
||||
case 0: data = m_read_x0(); break;
|
||||
case 1: data = m_read_x1(); break;
|
||||
case 2: data = m_read_x2(); break;
|
||||
case 3: data = m_read_x3(); break;
|
||||
case 4: data = m_read_x4(); break;
|
||||
case 5: data = m_read_x5(); break;
|
||||
case 6: data = m_read_x6(); break;
|
||||
case 7: data = m_read_x7(); break;
|
||||
case 8: data = m_read_x8(); break;
|
||||
}
|
||||
|
||||
for (int y = 0; y < 10; y++)
|
||||
{
|
||||
@ -145,14 +140,14 @@ void ay3600_device::device_timer(emu_timer &timer, device_timer_id id, int param
|
||||
b = 0x100 | b;
|
||||
}
|
||||
|
||||
b |= (m_in_shift_func() << 6);
|
||||
b |= (m_in_control_func() << 7);
|
||||
b |= (m_read_shift() << 6);
|
||||
b |= (m_read_control() << 7);
|
||||
|
||||
if (m_b != b)
|
||||
{
|
||||
m_b = b;
|
||||
|
||||
m_out_data_ready_func(1);
|
||||
m_write_data_ready(1);
|
||||
return;
|
||||
}
|
||||
}
|
||||
@ -166,7 +161,7 @@ void ay3600_device::device_timer(emu_timer &timer, device_timer_id id, int param
|
||||
|
||||
if (ako != m_ako)
|
||||
{
|
||||
m_out_ako_func(ako);
|
||||
m_write_ako(ako);
|
||||
m_ako = ako;
|
||||
}
|
||||
}
|
||||
@ -180,7 +175,7 @@ UINT16 ay3600_device::b_r()
|
||||
{
|
||||
UINT16 data = m_b;
|
||||
|
||||
m_out_data_ready_func(0);
|
||||
m_write_data_ready(0);
|
||||
|
||||
return data;
|
||||
}
|
||||
|
@ -65,70 +65,73 @@
|
||||
// INTERFACE CONFIGURATION MACROS
|
||||
//**************************************************************************
|
||||
|
||||
#define MCFG_AY3600_ADD(_tag, _clock, _config) \
|
||||
MCFG_DEVICE_ADD(_tag, AY3600, _clock) \
|
||||
MCFG_DEVICE_CONFIG(_config)
|
||||
|
||||
|
||||
#define AY3600_INTERFACE(name) \
|
||||
const ay3600_interface (name) =
|
||||
|
||||
|
||||
#define MCFG_AY3600_MATRIX_X0(_cb) \
|
||||
devcb = &ay3600_device::set_x0_cb(*device, DEVCB2_##_cb);
|
||||
#define MCFG_AY3600_MATRIX_X1(_cb) \
|
||||
devcb = &ay3600_device::set_x1_cb(*device, DEVCB2_##_cb);
|
||||
#define MCFG_AY3600_MATRIX_X2(_cb) \
|
||||
devcb = &ay3600_device::set_x2_cb(*device, DEVCB2_##_cb);
|
||||
#define MCFG_AY3600_MATRIX_X3(_cb) \
|
||||
devcb = &ay3600_device::set_x3_cb(*device, DEVCB2_##_cb);
|
||||
#define MCFG_AY3600_MATRIX_X4(_cb) \
|
||||
devcb = &ay3600_device::set_x4_cb(*device, DEVCB2_##_cb);
|
||||
#define MCFG_AY3600_MATRIX_X5(_cb) \
|
||||
devcb = &ay3600_device::set_x5_cb(*device, DEVCB2_##_cb);
|
||||
#define MCFG_AY3600_MATRIX_X6(_cb) \
|
||||
devcb = &ay3600_device::set_x6_cb(*device, DEVCB2_##_cb);
|
||||
#define MCFG_AY3600_MATRIX_X7(_cb) \
|
||||
devcb = &ay3600_device::set_x7_cb(*device, DEVCB2_##_cb);
|
||||
#define MCFG_AY3600_MATRIX_X8(_cb) \
|
||||
devcb = &ay3600_device::set_x8_cb(*device, DEVCB2_##_cb);
|
||||
#define MCFG_AY3600_SHIFT_CB(_cb) \
|
||||
devcb = &ay3600_device::set_shift_cb(*device, DEVCB2_##_cb);
|
||||
#define MCFG_AY3600_CONTROL_CB(_cb) \
|
||||
devcb = &ay3600_device::set_control_cb(*device, DEVCB2_##_cb);
|
||||
#define MCFG_AY3600_DATA_READY_CB(_cb) \
|
||||
devcb = &ay3600_device::set_data_ready_cb(*device, DEVCB2_##_cb);
|
||||
#define MCFG_AY3600_AKO_CB(_cb) \
|
||||
devcb = &ay3600_device::set_ako_cb(*device, DEVCB2_##_cb);
|
||||
|
||||
//**************************************************************************
|
||||
// TYPE DEFINITIONS
|
||||
//**************************************************************************
|
||||
|
||||
// ======================> ay3600_interface
|
||||
|
||||
struct ay3600_interface
|
||||
{
|
||||
devcb_read16 m_in_x0_cb;
|
||||
devcb_read16 m_in_x1_cb;
|
||||
devcb_read16 m_in_x2_cb;
|
||||
devcb_read16 m_in_x3_cb;
|
||||
devcb_read16 m_in_x4_cb;
|
||||
devcb_read16 m_in_x5_cb;
|
||||
devcb_read16 m_in_x6_cb;
|
||||
devcb_read16 m_in_x7_cb;
|
||||
devcb_read16 m_in_x8_cb;
|
||||
|
||||
devcb_read_line m_in_shift_cb;
|
||||
devcb_read_line m_in_control_cb;
|
||||
|
||||
devcb_write_line m_out_data_ready_cb;
|
||||
devcb_write_line m_out_ako_cb;
|
||||
};
|
||||
|
||||
|
||||
// ======================> ay3600_device
|
||||
|
||||
class ay3600_device : public device_t,
|
||||
public ay3600_interface
|
||||
class ay3600_device : public device_t
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
ay3600_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||
|
||||
public:
|
||||
// public interface
|
||||
UINT16 b_r();
|
||||
|
||||
template<class _Object> static devcb2_base &set_x0_cb(device_t &device, _Object rd) { return downcast<ay3600_device &>(device).m_read_x0.set_callback(rd); }
|
||||
template<class _Object> static devcb2_base &set_x1_cb(device_t &device, _Object rd) { return downcast<ay3600_device &>(device).m_read_x1.set_callback(rd); }
|
||||
template<class _Object> static devcb2_base &set_x2_cb(device_t &device, _Object rd) { return downcast<ay3600_device &>(device).m_read_x2.set_callback(rd); }
|
||||
template<class _Object> static devcb2_base &set_x3_cb(device_t &device, _Object rd) { return downcast<ay3600_device &>(device).m_read_x3.set_callback(rd); }
|
||||
template<class _Object> static devcb2_base &set_x4_cb(device_t &device, _Object rd) { return downcast<ay3600_device &>(device).m_read_x4.set_callback(rd); }
|
||||
template<class _Object> static devcb2_base &set_x5_cb(device_t &device, _Object rd) { return downcast<ay3600_device &>(device).m_read_x5.set_callback(rd); }
|
||||
template<class _Object> static devcb2_base &set_x6_cb(device_t &device, _Object rd) { return downcast<ay3600_device &>(device).m_read_x6.set_callback(rd); }
|
||||
template<class _Object> static devcb2_base &set_x7_cb(device_t &device, _Object rd) { return downcast<ay3600_device &>(device).m_read_x7.set_callback(rd); }
|
||||
template<class _Object> static devcb2_base &set_x8_cb(device_t &device, _Object rd) { return downcast<ay3600_device &>(device).m_read_x8.set_callback(rd); }
|
||||
template<class _Object> static devcb2_base &set_shift_cb(device_t &device, _Object rd) { return downcast<ay3600_device &>(device).m_read_shift.set_callback(rd); }
|
||||
template<class _Object> static devcb2_base &set_control_cb(device_t &device, _Object rd) { return downcast<ay3600_device &>(device).m_read_control.set_callback(rd); }
|
||||
template<class _Object> static devcb2_base &set_data_ready_cb(device_t &device, _Object wr) { return downcast<ay3600_device &>(device).m_write_data_ready.set_callback(wr); }
|
||||
template<class _Object> static devcb2_base &set_ako_cb(device_t &device, _Object wr) { return downcast<ay3600_device &>(device).m_write_ako.set_callback(wr); }
|
||||
|
||||
devcb2_read16 m_read_x0, m_read_x1, m_read_x2, m_read_x3, m_read_x4, m_read_x5, m_read_x6, m_read_x7, m_read_x8;
|
||||
devcb2_read_line m_read_shift, m_read_control;
|
||||
devcb2_write_line m_write_data_ready, m_write_ako;
|
||||
|
||||
protected:
|
||||
// device-level overrides
|
||||
virtual void device_start();
|
||||
virtual void device_reset();
|
||||
virtual void device_config_complete();
|
||||
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
|
||||
|
||||
private:
|
||||
devcb_resolved_read16 m_in_x_func[9];
|
||||
|
||||
devcb_resolved_read_line m_in_shift_func;
|
||||
devcb_resolved_read_line m_in_control_func;
|
||||
|
||||
devcb_resolved_write_line m_out_data_ready_func;
|
||||
devcb_resolved_write_line m_out_ako_func;
|
||||
|
||||
int m_b; // output buffer
|
||||
int m_ako; // any key down
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user