From 6c2a8df26a080cdfaa551b7484680f0d80db0a4a Mon Sep 17 00:00:00 2001 From: Michael Zapf Date: Sat, 15 Mar 2014 23:15:30 +0000 Subject: [PATCH] (MESS) Some more devcb2 edits. (nw) --- src/mess/drivers/geneve.c | 38 +++------ src/mess/drivers/ti99_4p.c | 18 +--- src/mess/drivers/ti99_4x.c | 140 +++++++++++++++---------------- src/mess/drivers/ti99_8.c | 45 ++++------ src/mess/machine/ti99/datamux.c | 14 +--- src/mess/machine/ti99/datamux.h | 12 ++- src/mess/machine/ti99/genboard.c | 18 ++-- src/mess/machine/ti99/genboard.h | 49 ++++------- src/mess/machine/ti99/gromport.c | 11 ++- src/mess/machine/ti99/gromport.h | 31 ++++--- src/mess/machine/ti99/joyport.c | 13 +-- src/mess/machine/ti99/joyport.h | 35 ++++---- src/mess/machine/ti99/peribox.c | 10 ++- src/mess/machine/ti99/peribox.h | 27 +----- src/mess/machine/ti99/videowrp.c | 3 +- src/mess/machine/ti99/videowrp.h | 28 +++---- 16 files changed, 196 insertions(+), 296 deletions(-) diff --git a/src/mess/drivers/geneve.c b/src/mess/drivers/geneve.c index 21c629d3206..4b03da2ddbe 100644 --- a/src/mess/drivers/geneve.c +++ b/src/mess/drivers/geneve.c @@ -693,33 +693,12 @@ static TMS9995_CONFIG( geneve_processor_config ) NO_OVERFLOW_INT // The generally available versions of TMS9995 have a deactivated overflow interrupt }; -static TI_SOUND_CONFIG( sound_conf ) -{ - DEVCB_DRIVER_LINE_MEMBER(geneve_state, ext_ready) // READY -}; - static const mm58274c_interface geneve_mm58274c_interface = { 1, /* mode 24*/ 0 /* first day of week */ }; -static GENEVE_KEYBOARD_CONFIG( geneve_keyb_conf ) -{ - DEVCB_DRIVER_LINE_MEMBER(geneve_state, keyboard_interrupt) -}; - -static GENEVE_MAPPER_CONFIG( mapper_conf ) -{ - DEVCB_DRIVER_LINE_MEMBER(geneve_state, mapper_ready) // READY -}; - -static JOYPORT_CONFIG( joyport_60 ) -{ - DEVCB_NULL, - 60 -}; - DRIVER_INIT_MEMBER(geneve_state,geneve) { } @@ -772,22 +751,29 @@ static MACHINE_CONFIG_START( geneve_60hz, geneve_state ) // Main board components MCFG_TMS9901_ADD(TMS9901_TAG, tms9901_wiring_geneve, 3000000) - MCFG_GENEVE_MAPPER_ADD(GMAPPER_TAG, mapper_conf) + + // Mapper + MCFG_DEVICE_ADD(GMAPPER_TAG, GENEVE_MAPPER, 0) + MCFG_GENEVE_READY_HANDLER( WRITELINE(geneve_state, mapper_ready) ) + + // Clock MCFG_MM58274C_ADD(GCLOCK_TAG, geneve_mm58274c_interface) // Peripheral expansion box (Geneve composition) - MCFG_PERIBOX_GEN_ADD( PERIBOX_TAG, 0x00000 ) + MCFG_DEVICE_ADD( PERIBOX_TAG, PERIBOX_GEN, 0) MCFG_PERIBOX_INTA_HANDLER( WRITELINE(geneve_state, inta) ) MCFG_PERIBOX_INTB_HANDLER( WRITELINE(geneve_state, intb) ) MCFG_PERIBOX_READY_HANDLER( WRITELINE(geneve_state, ext_ready) ) // sound hardware - MCFG_TI_SOUND_76496_ADD( TISOUND_TAG, sound_conf ) + MCFG_TI_SOUND_76496_ADD( TISOUND_TAG ) + MCFG_TI_SOUND_READY_HANDLER( WRITELINE(geneve_state, ext_ready) ) // User interface devices - MCFG_GENEVE_KEYBOARD_ADD( GKEYBOARD_TAG, geneve_keyb_conf ) + MCFG_DEVICE_ADD( GKEYBOARD_TAG, GENEVE_KEYBOARD, 0 ) + MCFG_GENEVE_KBINT_HANDLER( WRITELINE(geneve_state, keyboard_interrupt) ) MCFG_GENEVE_MOUSE_ADD( GMOUSE_TAG ) - MCFG_GENEVE_JOYPORT_ADD( JOYPORT_TAG, joyport_60 ) + MCFG_GENEVE_JOYPORT_ADD( JOYPORT_TAG, 60 ) MACHINE_CONFIG_END diff --git a/src/mess/drivers/ti99_4p.c b/src/mess/drivers/ti99_4p.c index 2ee60fef706..12764a71895 100644 --- a/src/mess/drivers/ti99_4p.c +++ b/src/mess/drivers/ti99_4p.c @@ -841,17 +841,6 @@ WRITE_LINE_MEMBER(ti99_4p_state::set_tms9901_INT2_from_v9938) m_tms9901->set_single_int(2, state); } -static TI_SOUND_CONFIG( sound_conf ) -{ - DEVCB_DRIVER_LINE_MEMBER(ti99_4p_state, console_ready) // READY -}; - -static JOYPORT_CONFIG( joyport4a_60 ) -{ - DEVCB_NULL, - 60 -}; - /* Reset the machine. */ @@ -889,13 +878,14 @@ static MACHINE_CONFIG_START( ti99_4p_60hz, ti99_4p_state ) MCFG_TMS9901_ADD(TMS9901_TAG, tms9901_wiring_sgcpu, 3000000) // Peripheral expansion box (SGCPU composition) - MCFG_PERIBOX_SG_ADD( PERIBOX_TAG, 0x70000 ) + MCFG_DEVICE_ADD( PERIBOX_TAG, PERIBOX_SG, 0) MCFG_PERIBOX_INTA_HANDLER( WRITELINE(ti99_4p_state, extint) ) MCFG_PERIBOX_INTB_HANDLER( WRITELINE(ti99_4p_state, notconnected) ) MCFG_PERIBOX_READY_HANDLER( WRITELINE(ti99_4p_state, console_ready) ) // sound hardware - MCFG_TI_SOUND_94624_ADD( TISOUND_TAG, sound_conf ) + MCFG_TI_SOUND_94624_ADD( TISOUND_TAG ) + MCFG_TI_SOUND_READY_HANDLER( WRITELINE(ti99_4p_state, console_ready) ) // Cassette drives MCFG_SPEAKER_STANDARD_MONO("cass_out") @@ -905,7 +895,7 @@ static MACHINE_CONFIG_START( ti99_4p_60hz, ti99_4p_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "cass_out", 0.25) // Joystick port - MCFG_TI_JOYPORT4A_ADD( JOYPORT_TAG, joyport4a_60 ) + MCFG_TI_JOYPORT4A_ADD( JOYPORT_TAG, 60 ) MACHINE_CONFIG_END diff --git a/src/mess/drivers/ti99_4x.c b/src/mess/drivers/ti99_4x.c index 4bb1fcead2f..e3b3a49e914 100644 --- a/src/mess/drivers/ti99_4x.c +++ b/src/mess/drivers/ti99_4x.c @@ -371,17 +371,6 @@ static GROM_CONFIG(grom2_config) false, 2, region_grom, 0x4000, 0x1800, DEVCB_DRIVER_LINE_MEMBER(ti99_4x_state, console_ready_grom), GROMFREQ }; -static GROMPORT_CONFIG(console_cartslot) -{ - DEVCB_DRIVER_LINE_MEMBER(ti99_4x_state, console_ready_cart), - DEVCB_DRIVER_LINE_MEMBER(ti99_4x_state, console_reset) -}; - -static TI_SOUND_CONFIG( sound_conf ) -{ - DEVCB_DRIVER_LINE_MEMBER(ti99_4x_state, console_ready_sound) // READY -}; - READ8_MEMBER( ti99_4x_state::cruread ) { // if (TRACE_CRU) LOG("read access to CRU address %04x\n", offset << 4); @@ -738,6 +727,7 @@ WRITE_LINE_MEMBER( ti99_4x_state::console_reset ) { if (machine().phase() != MACHINE_PHASE_INIT) { + logerror("ti99_4x: Console reset line = %d\n", state); m_cpu->set_input_line(INT_9900_RESET, state); m_video->reset_vdp(state); } @@ -861,13 +851,11 @@ static const dmux_device_list_entry dmux_devices_ev[] = static DMUX_CONFIG( datamux_conf ) { - DEVCB_DRIVER_LINE_MEMBER(ti99_4x_state, console_ready_dmux), // READY dmux_devices }; static DMUX_CONFIG( datamux_conf_ev ) { - DEVCB_DRIVER_LINE_MEMBER(ti99_4x_state, console_ready_dmux), // READY dmux_devices_ev }; @@ -882,31 +870,6 @@ static TMS99xx_CONFIG( ti99_cpuconf ) DEVCB_DRIVER_LINE_MEMBER(ti99_4x_state, dbin_line) // data bus in }; -static JOYPORT_CONFIG( joyport4_60 ) -{ - DEVCB_DRIVER_LINE_MEMBER(ti99_4x_state, set_tms9901_INT12), - 60 -}; - -static JOYPORT_CONFIG( joyport4_50 ) -{ - DEVCB_DRIVER_LINE_MEMBER(ti99_4x_state, set_tms9901_INT12), - 50 -}; - -static JOYPORT_CONFIG( joyport4a_60 ) -{ - DEVCB_NULL, - 60 -}; - -static JOYPORT_CONFIG( joyport4a_50 ) -{ - DEVCB_NULL, - 50 -}; - - /****************************************************************************** Machine definitions ******************************************************************************/ @@ -940,19 +903,23 @@ static MACHINE_CONFIG_START( ti99_4_60hz, ti99_4x_state ) /* Main board */ MCFG_TMS9901_ADD(TMS9901_TAG, tms9901_wiring_ti99_4, 3000000) MCFG_DMUX_ADD( DATAMUX_TAG, datamux_conf ) - MCFG_TI99_GROMPORT_ADD( GROMPORT_TAG, console_cartslot ) + MCFG_DMUX_READY_HANDLER( WRITELINE(ti99_4x_state, console_ready_dmux) ) + MCFG_TI99_GROMPORT_ADD( GROMPORT_TAG ) + MCFG_GROMPORT_READY_HANDLER( WRITELINE(ti99_4x_state, console_ready_cart) ) + MCFG_GROMPORT_RESET_HANDLER( WRITELINE(ti99_4x_state, console_reset) ) /* Software list */ MCFG_SOFTWARE_LIST_ADD("cart_list_ti99", "ti99_cart") /* Peripheral expansion box */ - MCFG_PERIBOX_ADD( PERIBOX_TAG, 0x70000 ) + MCFG_DEVICE_ADD( PERIBOX_TAG, PERIBOX, 0) MCFG_PERIBOX_INTA_HANDLER( WRITELINE(ti99_4x_state, extint) ) MCFG_PERIBOX_INTB_HANDLER( WRITELINE(ti99_4x_state, notconnected) ) MCFG_PERIBOX_READY_HANDLER( DEVWRITELINE(DATAMUX_TAG, ti99_datamux_device, ready_line) ) /* sound hardware */ - MCFG_TI_SOUND_94624_ADD( TISOUND_TAG, sound_conf ) + MCFG_TI_SOUND_94624_ADD( TISOUND_TAG ) + MCFG_TI_SOUND_READY_HANDLER( WRITELINE(ti99_4x_state, console_ready_sound) ) /* Cassette drives */ MCFG_SPEAKER_STANDARD_MONO("cass_out") @@ -968,7 +935,8 @@ static MACHINE_CONFIG_START( ti99_4_60hz, ti99_4x_state ) MCFG_GROM_ADD( GROM2_TAG, grom2_config ) // Joystick port - MCFG_TI_JOYPORT4_ADD( JOYPORT_TAG, joyport4_60 ) + MCFG_TI_JOYPORT4_ADD( JOYPORT_TAG, 60 ) + MCFG_JOYPORT_INT_HANDLER( WRITELINE(ti99_4x_state, set_tms9901_INT12) ) MACHINE_CONFIG_END @@ -985,19 +953,24 @@ static MACHINE_CONFIG_START( ti99_4_50hz, ti99_4x_state ) /* main board */ MCFG_TMS9901_ADD(TMS9901_TAG, tms9901_wiring_ti99_4, 3000000) MCFG_DMUX_ADD( DATAMUX_TAG, datamux_conf ) - MCFG_TI99_GROMPORT_ADD( GROMPORT_TAG, console_cartslot ) + MCFG_DMUX_READY_HANDLER( WRITELINE(ti99_4x_state, console_ready_dmux) ) + + MCFG_TI99_GROMPORT_ADD( GROMPORT_TAG ) + MCFG_GROMPORT_READY_HANDLER( WRITELINE(ti99_4x_state, console_ready_cart) ) + MCFG_GROMPORT_RESET_HANDLER( WRITELINE(ti99_4x_state, console_reset) ) /* Software list */ MCFG_SOFTWARE_LIST_ADD("cart_list_ti99", "ti99_cart") /* Peripheral expansion box */ - MCFG_PERIBOX_ADD( PERIBOX_TAG, 0x70000 ) + MCFG_DEVICE_ADD( PERIBOX_TAG, PERIBOX, 0) MCFG_PERIBOX_INTA_HANDLER( WRITELINE(ti99_4x_state, extint) ) MCFG_PERIBOX_INTB_HANDLER( WRITELINE(ti99_4x_state, notconnected) ) MCFG_PERIBOX_READY_HANDLER( DEVWRITELINE(DATAMUX_TAG, ti99_datamux_device, ready_line) ) /* sound hardware */ - MCFG_TI_SOUND_94624_ADD( TISOUND_TAG, sound_conf ) + MCFG_TI_SOUND_94624_ADD( TISOUND_TAG ) + MCFG_TI_SOUND_READY_HANDLER( WRITELINE(ti99_4x_state, console_ready_sound) ) /* Cassette drives */ MCFG_SPEAKER_STANDARD_MONO("cass_out") @@ -1013,7 +986,8 @@ static MACHINE_CONFIG_START( ti99_4_50hz, ti99_4x_state ) MCFG_GROM_ADD( GROM2_TAG, grom2_config ) // Joystick port - MCFG_TI_JOYPORT4_ADD( JOYPORT_TAG, joyport4_50 ) + MCFG_TI_JOYPORT4_ADD( JOYPORT_TAG, 50 ) + MCFG_JOYPORT_INT_HANDLER( WRITELINE(ti99_4x_state, set_tms9901_INT12) ) MACHINE_CONFIG_END @@ -1048,19 +1022,23 @@ static MACHINE_CONFIG_START( ti99_4a_60hz, ti99_4x_state ) /* Main board */ MCFG_TMS9901_ADD(TMS9901_TAG, tms9901_wiring_ti99_4a, 3000000) MCFG_DMUX_ADD( DATAMUX_TAG, datamux_conf ) - MCFG_TI99_GROMPORT_ADD( GROMPORT_TAG, console_cartslot ) + MCFG_DMUX_READY_HANDLER( WRITELINE(ti99_4x_state, console_ready_dmux) ) + MCFG_TI99_GROMPORT_ADD( GROMPORT_TAG ) + MCFG_GROMPORT_READY_HANDLER( WRITELINE(ti99_4x_state, console_ready_cart) ) + MCFG_GROMPORT_RESET_HANDLER( WRITELINE(ti99_4x_state, console_reset) ) /* Software list */ MCFG_SOFTWARE_LIST_ADD("cart_list_ti99", "ti99_cart") /* Peripheral expansion box */ - MCFG_PERIBOX_ADD( PERIBOX_TAG, 0x70000 ) + MCFG_DEVICE_ADD( PERIBOX_TAG, PERIBOX, 0) MCFG_PERIBOX_INTA_HANDLER( WRITELINE(ti99_4x_state, extint) ) MCFG_PERIBOX_INTB_HANDLER( WRITELINE(ti99_4x_state, notconnected) ) MCFG_PERIBOX_READY_HANDLER( DEVWRITELINE(DATAMUX_TAG, ti99_datamux_device, ready_line) ) /* sound hardware */ - MCFG_TI_SOUND_94624_ADD( TISOUND_TAG, sound_conf ) + MCFG_TI_SOUND_94624_ADD( TISOUND_TAG ) + MCFG_TI_SOUND_READY_HANDLER( WRITELINE(ti99_4x_state, console_ready_sound) ) /* Cassette drives */ MCFG_SPEAKER_STANDARD_MONO("cass_out") @@ -1076,7 +1054,7 @@ static MACHINE_CONFIG_START( ti99_4a_60hz, ti99_4x_state ) MCFG_GROM_ADD( GROM2_TAG, grom2_config ) // Joystick port - MCFG_TI_JOYPORT4A_ADD( JOYPORT_TAG, joyport4a_60 ) + MCFG_TI_JOYPORT4A_ADD( JOYPORT_TAG, 60 ) MACHINE_CONFIG_END @@ -1093,19 +1071,23 @@ static MACHINE_CONFIG_START( ti99_4a_50hz, ti99_4x_state ) /* Main board */ MCFG_TMS9901_ADD(TMS9901_TAG, tms9901_wiring_ti99_4a, 3000000) MCFG_DMUX_ADD( DATAMUX_TAG, datamux_conf ) - MCFG_TI99_GROMPORT_ADD( GROMPORT_TAG, console_cartslot ) + MCFG_DMUX_READY_HANDLER( WRITELINE(ti99_4x_state, console_ready_dmux) ) + MCFG_TI99_GROMPORT_ADD( GROMPORT_TAG ) + MCFG_GROMPORT_READY_HANDLER( WRITELINE(ti99_4x_state, console_ready_cart) ) + MCFG_GROMPORT_RESET_HANDLER( WRITELINE(ti99_4x_state, console_reset) ) /* Software list */ MCFG_SOFTWARE_LIST_ADD("cart_list_ti99", "ti99_cart") /* Peripheral expansion box */ - MCFG_PERIBOX_ADD( PERIBOX_TAG, 0x70000 ) + MCFG_DEVICE_ADD( PERIBOX_TAG, PERIBOX, 0) MCFG_PERIBOX_INTA_HANDLER( WRITELINE(ti99_4x_state, extint) ) MCFG_PERIBOX_INTB_HANDLER( WRITELINE(ti99_4x_state, notconnected) ) MCFG_PERIBOX_READY_HANDLER( DEVWRITELINE(DATAMUX_TAG, ti99_datamux_device, ready_line) ) /* sound hardware */ - MCFG_TI_SOUND_94624_ADD( TISOUND_TAG, sound_conf ) + MCFG_TI_SOUND_94624_ADD( TISOUND_TAG ) + MCFG_TI_SOUND_READY_HANDLER( WRITELINE(ti99_4x_state, console_ready_sound) ) /* Cassette drives */ MCFG_SPEAKER_STANDARD_MONO("cass_out") @@ -1121,7 +1103,7 @@ static MACHINE_CONFIG_START( ti99_4a_50hz, ti99_4x_state ) MCFG_GROM_ADD( GROM2_TAG, grom2_config ) // Joystick port - MCFG_TI_JOYPORT4A_ADD( JOYPORT_TAG, joyport4a_50 ) + MCFG_TI_JOYPORT4A_ADD( JOYPORT_TAG, 50 ) MACHINE_CONFIG_END @@ -1155,19 +1137,23 @@ static MACHINE_CONFIG_START( ti99_4qi_60hz, ti99_4x_state ) /* Main board */ MCFG_TMS9901_ADD(TMS9901_TAG, tms9901_wiring_ti99_4a, 3000000) MCFG_DMUX_ADD( DATAMUX_TAG, datamux_conf ) - MCFG_TI99_GROMPORT_ADD( GROMPORT_TAG, console_cartslot ) + MCFG_DMUX_READY_HANDLER( WRITELINE(ti99_4x_state, console_ready_dmux) ) + MCFG_TI99_GROMPORT_ADD( GROMPORT_TAG ) + MCFG_GROMPORT_READY_HANDLER( WRITELINE(ti99_4x_state, console_ready_cart) ) + MCFG_GROMPORT_RESET_HANDLER( WRITELINE(ti99_4x_state, console_reset) ) /* Software list */ MCFG_SOFTWARE_LIST_ADD("cart_list_ti99", "ti99_cart") /* Peripheral expansion box */ - MCFG_PERIBOX_ADD( PERIBOX_TAG, 0x70000 ) + MCFG_DEVICE_ADD( PERIBOX_TAG, PERIBOX, 0) MCFG_PERIBOX_INTA_HANDLER( WRITELINE(ti99_4x_state, extint) ) MCFG_PERIBOX_INTB_HANDLER( WRITELINE(ti99_4x_state, notconnected) ) MCFG_PERIBOX_READY_HANDLER( DEVWRITELINE(DATAMUX_TAG, ti99_datamux_device, ready_line) ) /* sound hardware */ - MCFG_TI_SOUND_94624_ADD( TISOUND_TAG, sound_conf ) + MCFG_TI_SOUND_94624_ADD( TISOUND_TAG ) + MCFG_TI_SOUND_READY_HANDLER( WRITELINE(ti99_4x_state, console_ready_sound) ) /* Cassette drives */ MCFG_SPEAKER_STANDARD_MONO("cass_out") @@ -1183,7 +1169,7 @@ static MACHINE_CONFIG_START( ti99_4qi_60hz, ti99_4x_state ) MCFG_GROM_ADD( GROM2_TAG, grom2_config ) // Joystick port - MCFG_TI_JOYPORT4A_ADD( JOYPORT_TAG, joyport4a_60 ) + MCFG_TI_JOYPORT4A_ADD( JOYPORT_TAG, 60 ) MACHINE_CONFIG_END @@ -1200,19 +1186,23 @@ static MACHINE_CONFIG_START( ti99_4qi_50hz, ti99_4x_state ) /* Main board */ MCFG_TMS9901_ADD(TMS9901_TAG, tms9901_wiring_ti99_4a, 3000000) MCFG_DMUX_ADD( DATAMUX_TAG, datamux_conf ) - MCFG_TI99_GROMPORT_ADD( GROMPORT_TAG, console_cartslot ) + MCFG_DMUX_READY_HANDLER( WRITELINE(ti99_4x_state, console_ready_dmux) ) + MCFG_TI99_GROMPORT_ADD( GROMPORT_TAG ) + MCFG_GROMPORT_READY_HANDLER( WRITELINE(ti99_4x_state, console_ready_cart) ) + MCFG_GROMPORT_RESET_HANDLER( WRITELINE(ti99_4x_state, console_reset) ) /* Software list */ MCFG_SOFTWARE_LIST_ADD("cart_list_ti99", "ti99_cart") /* Peripheral expansion box */ - MCFG_PERIBOX_ADD( PERIBOX_TAG, 0x70000 ) + MCFG_DEVICE_ADD( PERIBOX_TAG, PERIBOX, 0) MCFG_PERIBOX_INTA_HANDLER( WRITELINE(ti99_4x_state, extint) ) MCFG_PERIBOX_INTB_HANDLER( WRITELINE(ti99_4x_state, notconnected) ) MCFG_PERIBOX_READY_HANDLER( DEVWRITELINE(DATAMUX_TAG, ti99_datamux_device, ready_line) ) /* sound hardware */ - MCFG_TI_SOUND_94624_ADD( TISOUND_TAG, sound_conf ) + MCFG_TI_SOUND_94624_ADD( TISOUND_TAG ) + MCFG_TI_SOUND_READY_HANDLER( WRITELINE(ti99_4x_state, console_ready_sound) ) /* Cassette drives */ MCFG_SPEAKER_STANDARD_MONO("cass_out") @@ -1228,7 +1218,7 @@ static MACHINE_CONFIG_START( ti99_4qi_50hz, ti99_4x_state ) MCFG_GROM_ADD( GROM2_TAG, grom2_config ) // Joystick port - MCFG_TI_JOYPORT4A_ADD( JOYPORT_TAG, joyport4a_50 ) + MCFG_TI_JOYPORT4A_ADD( JOYPORT_TAG, 50 ) MACHINE_CONFIG_END @@ -1261,19 +1251,23 @@ static MACHINE_CONFIG_START( ti99_4ev_60hz, ti99_4x_state ) /* Main board */ MCFG_TMS9901_ADD(TMS9901_TAG, tms9901_wiring_ti99_4a, 3000000) MCFG_DMUX_ADD( DATAMUX_TAG, datamux_conf_ev ) - MCFG_TI99_GROMPORT_ADD( GROMPORT_TAG, console_cartslot ) + MCFG_DMUX_READY_HANDLER( WRITELINE(ti99_4x_state, console_ready_dmux) ) + MCFG_TI99_GROMPORT_ADD( GROMPORT_TAG ) + MCFG_GROMPORT_READY_HANDLER( WRITELINE(ti99_4x_state, console_ready_cart) ) + MCFG_GROMPORT_RESET_HANDLER( WRITELINE(ti99_4x_state, console_reset) ) /* Software list */ MCFG_SOFTWARE_LIST_ADD("cart_list_ti99", "ti99_cart") /* Peripheral expansion box */ - MCFG_PERIBOX_EV_ADD( PERIBOX_TAG, 0x70000 ) + MCFG_DEVICE_ADD( PERIBOX_TAG, PERIBOX_EV, 0) MCFG_PERIBOX_INTA_HANDLER( WRITELINE(ti99_4x_state, extint) ) MCFG_PERIBOX_INTB_HANDLER( WRITELINE(ti99_4x_state, notconnected) ) MCFG_PERIBOX_READY_HANDLER( DEVWRITELINE(DATAMUX_TAG, ti99_datamux_device, ready_line) ) /* sound hardware */ - MCFG_TI_SOUND_94624_ADD( TISOUND_TAG, sound_conf ) + MCFG_TI_SOUND_94624_ADD( TISOUND_TAG ) + MCFG_TI_SOUND_READY_HANDLER( WRITELINE(ti99_4x_state, console_ready_sound) ) /* Cassette drives */ MCFG_SPEAKER_STANDARD_MONO("cass_out") @@ -1289,7 +1283,7 @@ static MACHINE_CONFIG_START( ti99_4ev_60hz, ti99_4x_state ) MCFG_GROM_ADD( GROM2_TAG, grom2_config ) // Joystick port - MCFG_TI_JOYPORT4A_ADD( JOYPORT_TAG, joyport4a_60 ) + MCFG_TI_JOYPORT4A_ADD( JOYPORT_TAG, 60 ) MACHINE_CONFIG_END @@ -1349,10 +1343,10 @@ ROM_START(ti99_4ev) ROM_END /* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -COMP( 1979, ti99_4, 0, 0, ti99_4_60hz, ti99_4, driver_device, 0, "Texas Instruments", "TI99/4 Home Computer (US)" , 0) -COMP( 1980, ti99_4e, ti99_4, 0, ti99_4_50hz, ti99_4, driver_device, 0, "Texas Instruments", "TI99/4 Home Computer (Europe)" , 0) -COMP( 1981, ti99_4a, 0, 0, ti99_4a_60hz, ti99_4a, driver_device, 0, "Texas Instruments", "TI99/4A Home Computer (US)" , 0) -COMP( 1981, ti99_4ae, ti99_4a, 0, ti99_4a_50hz, ti99_4a, driver_device, 0, "Texas Instruments", "TI99/4A Home Computer (Europe)" , 0) -COMP( 1983, ti99_4qe, ti99_4qi, 0, ti99_4qi_50hz, ti99_4a, driver_device, 0, "Texas Instruments", "TI99/4QI Home Computer (Europe)" , 0) -COMP( 1983, ti99_4qi, 0, 0, ti99_4qi_60hz, ti99_4a, driver_device, 0, "Texas Instruments", "TI99/4QI Home Computer" , 0) -COMP( 1994, ti99_4ev, ti99_4a, 0, ti99_4ev_60hz,ti99_4a, driver_device, 0, "Texas Instruments", "TI99/4A Home Computer with EVPC" , 0) +COMP( 1979, ti99_4, 0, 0, ti99_4_60hz, ti99_4, driver_device, 0, "Texas Instruments", "TI-99/4 Home Computer (US)" , 0) +COMP( 1980, ti99_4e, ti99_4, 0, ti99_4_50hz, ti99_4, driver_device, 0, "Texas Instruments", "TI-99/4 Home Computer (Europe)" , 0) +COMP( 1981, ti99_4a, 0, 0, ti99_4a_60hz, ti99_4a, driver_device, 0, "Texas Instruments", "TI-99/4A Home Computer (US)" , 0) +COMP( 1981, ti99_4ae, ti99_4a, 0, ti99_4a_50hz, ti99_4a, driver_device, 0, "Texas Instruments", "TI-99/4A Home Computer (Europe)" , 0) +COMP( 1983, ti99_4qe, ti99_4qi, 0, ti99_4qi_50hz, ti99_4a, driver_device, 0, "Texas Instruments", "TI-99/4QI Home Computer (Europe)" , 0) +COMP( 1983, ti99_4qi, 0, 0, ti99_4qi_60hz, ti99_4a, driver_device, 0, "Texas Instruments", "TI-99/4QI Home Computer" , 0) +COMP( 1994, ti99_4ev, ti99_4a, 0, ti99_4ev_60hz,ti99_4a, driver_device, 0, "Texas Instruments", "TI-99/4A Home Computer with EVPC" , 0) diff --git a/src/mess/drivers/ti99_8.c b/src/mess/drivers/ti99_8.c index 95f2e83e9ba..908faba4585 100644 --- a/src/mess/drivers/ti99_8.c +++ b/src/mess/drivers/ti99_8.c @@ -517,12 +517,6 @@ GROM_LIBRARY_CONFIG8(pascal1, region_gromlib1) GROM_LIBRARY_CONFIG8(pascal2, region_gromlib2) GROM_LIBRARY_CONFIG3(pascal3, region_gromlib3) -static GROMPORT_CONFIG(console_cartslot) -{ - DEVCB_DRIVER_LINE_MEMBER(ti99_8_state, console_ready_cart), - DEVCB_DRIVER_LINE_MEMBER(ti99_8_state, console_reset) -}; - READ8_MEMBER( ti99_8_state::cruread ) { // if (VERBOSE>6) LOG("read access to CRU address %04x\n", offset << 4); @@ -886,11 +880,6 @@ static TMS9995_CONFIG( ti99_8_processor_config ) NO_OVERFLOW_INT }; -static TI_SOUND_CONFIG( sound_conf ) -{ - DEVCB_DRIVER_LINE_MEMBER(ti99_8_state, console_ready_sound) // READY -}; - /* Format: Name, mode, stop, mask, select, write, read8z function, write8 function @@ -1003,18 +992,6 @@ static SPEECH8_CONFIG( speech_config ) DEVCB_DRIVER_LINE_MEMBER(ti99_8_state, console_ready_speech), // READY }; -static JOYPORT_CONFIG( joyport8_60 ) -{ - DEVCB_NULL, - 60 -}; - -static JOYPORT_CONFIG( joyport8_50 ) -{ - DEVCB_NULL, - 50 -}; - MACHINE_START_MEMBER(ti99_8_state,ti99_8) { m_nready_combined = 0; @@ -1048,16 +1025,19 @@ static MACHINE_CONFIG_START( ti99_8_60hz, ti99_8_state ) /* Main board */ MCFG_TMS9901_ADD( TMS9901_TAG, tms9901_wiring_ti99_8, XTAL_10_738635MHz/4.0) MCFG_MAINBOARD8_ADD( MAINBOARD8_TAG, mapper_conf ) - MCFG_TI99_GROMPORT_ADD( GROMPORT_TAG, console_cartslot ) + MCFG_TI99_GROMPORT_ADD( GROMPORT_TAG ) + MCFG_GROMPORT_READY_HANDLER( WRITELINE(ti99_8_state, console_ready_cart) ) + MCFG_GROMPORT_RESET_HANDLER( WRITELINE(ti99_8_state, console_reset) ) /* Peripheral expansion box */ - MCFG_PERIBOX_998_ADD( PERIBOX_TAG, 0x70000 ) + MCFG_DEVICE_ADD( PERIBOX_TAG, PERIBOX_998, 0) MCFG_PERIBOX_INTA_HANDLER( WRITELINE(ti99_8_state, extint) ) MCFG_PERIBOX_INTB_HANDLER( WRITELINE(ti99_8_state, notconnected) ) MCFG_PERIBOX_READY_HANDLER( WRITELINE(ti99_8_state, console_ready_pbox) ) /* Sound hardware */ - MCFG_TI_SOUND_76496_ADD( TISOUND_TAG, sound_conf ) + MCFG_TI_SOUND_76496_ADD( TISOUND_TAG ) + MCFG_TI_SOUND_READY_HANDLER( WRITELINE(ti99_8_state, console_ready_sound) ) /* Cassette drives */ MCFG_SPEAKER_STANDARD_MONO("cass_out") @@ -1079,7 +1059,7 @@ static MACHINE_CONFIG_START( ti99_8_60hz, ti99_8_state ) MCFG_TISPEECH8_ADD(SPEECH_TAG, speech_config) // Joystick port - MCFG_TI_JOYPORT4A_ADD( JOYPORT_TAG, joyport8_60 ) + MCFG_TI_JOYPORT4A_ADD( JOYPORT_TAG, 60 ) MACHINE_CONFIG_END @@ -1096,16 +1076,19 @@ static MACHINE_CONFIG_START( ti99_8_50hz, ti99_8_state ) /* Main board */ MCFG_TMS9901_ADD( TMS9901_TAG, tms9901_wiring_ti99_8, XTAL_10_738635MHz/4.0 ) MCFG_MAINBOARD8_ADD( MAINBOARD8_TAG, mapper_conf ) - MCFG_TI99_GROMPORT_ADD( GROMPORT_TAG, console_cartslot ) + MCFG_TI99_GROMPORT_ADD( GROMPORT_TAG ) + MCFG_GROMPORT_READY_HANDLER( WRITELINE(ti99_8_state, console_ready_cart) ) + MCFG_GROMPORT_RESET_HANDLER( WRITELINE(ti99_8_state, console_reset) ) /* Peripheral expansion box */ - MCFG_PERIBOX_998_ADD( PERIBOX_TAG, 0x70000 ) + MCFG_DEVICE_ADD( PERIBOX_TAG, PERIBOX_998, 0) MCFG_PERIBOX_INTA_HANDLER( WRITELINE(ti99_8_state, extint) ) MCFG_PERIBOX_INTB_HANDLER( WRITELINE(ti99_8_state, notconnected) ) MCFG_PERIBOX_READY_HANDLER( WRITELINE(ti99_8_state, console_ready_pbox) ) /* Sound hardware */ - MCFG_TI_SOUND_76496_ADD( TISOUND_TAG, sound_conf ) + MCFG_TI_SOUND_76496_ADD( TISOUND_TAG ) + MCFG_TI_SOUND_READY_HANDLER( WRITELINE(ti99_8_state, console_ready_sound) ) /* Cassette drives */ MCFG_SPEAKER_STANDARD_MONO("cass_out") @@ -1127,7 +1110,7 @@ static MACHINE_CONFIG_START( ti99_8_50hz, ti99_8_state ) MCFG_TISPEECH8_ADD(SPEECH_TAG, speech_config) // Joystick port - MCFG_TI_JOYPORT4A_ADD( JOYPORT_TAG, joyport8_50 ) + MCFG_TI_JOYPORT4A_ADD( JOYPORT_TAG, 50 ) MACHINE_CONFIG_END /* diff --git a/src/mess/machine/ti99/datamux.c b/src/mess/machine/ti99/datamux.c index a9fa4978eba..77ff2412312 100644 --- a/src/mess/machine/ti99/datamux.c +++ b/src/mess/machine/ti99/datamux.c @@ -75,9 +75,8 @@ Constructor */ ti99_datamux_device::ti99_datamux_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) -: device_t(mconfig, DATAMUX, "Databus multiplexer", tag, owner, clock, "ti99_datamux", __FILE__) -{ -} +: device_t(mconfig, DATAMUX, "Databus multiplexer", tag, owner, clock, "ti99_datamux", __FILE__), + m_ready(*this) { } #define TRACE_READY 0 #define TRACE_ACCESS 0 @@ -388,6 +387,7 @@ void ti99_datamux_device::device_start(void) { m_ram16b = NULL; m_muxready = ASSERT_LINE; + m_ready.resolve(); } void ti99_datamux_device::device_stop(void) @@ -395,14 +395,6 @@ void ti99_datamux_device::device_stop(void) if (m_ram16b) free(m_ram16b); } -void ti99_datamux_device::device_config_complete() -{ - const datamux_config *conf = reinterpret_cast(static_config()); - // Must do this here, or ready may be called too early - // The device is built below because we need the dip switches. - m_ready.resolve(conf->ready, *this); -} - void ti99_datamux_device::device_reset(void) { const datamux_config *conf = reinterpret_cast(static_config()); diff --git a/src/mess/machine/ti99/datamux.h b/src/mess/machine/ti99/datamux.h index a10dcd63b48..f16148efc9b 100644 --- a/src/mess/machine/ti99/datamux.h +++ b/src/mess/machine/ti99/datamux.h @@ -41,7 +41,6 @@ struct dmux_device_list_entry struct datamux_config { - devcb_write_line ready; const dmux_device_list_entry *devlist; }; @@ -78,12 +77,16 @@ public: DECLARE_WRITE_LINE_MEMBER( dbin_in ); DECLARE_WRITE_LINE_MEMBER( ready_line ); + template static devcb2_base &static_set_ready_callback(device_t &device, _Object object) + { + return downcast(device).m_ready.set_callback(object); + } + protected: /* Constructor */ void device_start(); void device_stop(); void device_reset(); - void device_config_complete(); ioport_constructor device_input_ports() const; private: @@ -107,7 +110,7 @@ private: void ready_join(); // Ready line to the CPU - devcb_resolved_write_line m_ready; + devcb2_write_line m_ready; // Own ready state. line_state m_muxready; @@ -149,3 +152,6 @@ private: MCFG_DEVICE_ADD(_tag, DATAMUX, 0) \ MCFG_DEVICE_CONFIG( _devices ) #endif + +#define MCFG_DMUX_READY_HANDLER( _intcallb ) \ + devcb = &ti99_datamux_device::static_set_ready_callback( *device, DEVCB2_##_intcallb ); diff --git a/src/mess/machine/ti99/genboard.c b/src/mess/machine/ti99/genboard.c index 6e1c41ad57c..0b96e94699d 100644 --- a/src/mess/machine/ti99/genboard.c +++ b/src/mess/machine/ti99/genboard.c @@ -181,7 +181,8 @@ #define LOG logerror geneve_mapper_device::geneve_mapper_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) -: device_t(mconfig, GENEVE_MAPPER, "Geneve Gate Array", tag, owner, clock, "geneve_mapper", __FILE__) +: device_t(mconfig, GENEVE_MAPPER, "Geneve Gate Array", tag, owner, clock, "geneve_mapper", __FILE__), + m_ready(*this) { m_eprom = NULL; } @@ -1161,8 +1162,6 @@ WRITE_LINE_MEMBER( geneve_mapper_device::dbin_in ) void geneve_mapper_device::device_start() { - const geneve_mapper_config *conf = reinterpret_cast(static_config()); - if (VERBOSE>0) LOG("genboard: Starting Geneve mapper\n"); // Get pointers m_peribox = machine().device(PERIBOX_TAG); @@ -1171,7 +1170,7 @@ void geneve_mapper_device::device_start() m_sound = machine().device(TISOUND_TAG); m_clock = machine().device(GCLOCK_TAG); - m_ready.resolve(conf->ready, *this); + m_ready.resolve(); m_sram = machine().root_device().memregion(SRAM_TAG)->base(); m_dram = machine().root_device().memregion(DRAM_TAG)->base(); @@ -1291,7 +1290,8 @@ static const UINT8 MF1_CODE[0xe] = }; geneve_keyboard_device::geneve_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) -: device_t(mconfig, GENEVE_KEYBOARD, "Geneve XT-style keyboard", tag, owner, clock, "geneve_keyboard", __FILE__) +: device_t(mconfig, GENEVE_KEYBOARD, "Geneve XT-style keyboard", tag, owner, clock, "geneve_keyboard", __FILE__), + m_interrupt(*this) { } @@ -1579,17 +1579,11 @@ WRITE_LINE_MEMBER( geneve_keyboard_device::reset_line ) } } -void geneve_keyboard_device::device_config_complete() -{ - // Resolve the callback lines to the console - const geneve_keyboard_config *intf = reinterpret_cast(static_config()); - m_interrupt.resolve(intf->interrupt, *this); -} - void geneve_keyboard_device::device_start() { if (VERBOSE>2) LOG("genboard: Keyboard started\n"); m_timer = timer_alloc(0); + m_interrupt.resolve(); } void geneve_keyboard_device::device_reset() diff --git a/src/mess/machine/ti99/genboard.h b/src/mess/machine/ti99/genboard.h index b7511837aa5..912507925ae 100644 --- a/src/mess/machine/ti99/genboard.h +++ b/src/mess/machine/ti99/genboard.h @@ -48,15 +48,6 @@ private: /*****************************************************************************/ -struct geneve_keyboard_config -{ - devcb_write_line interrupt; -}; - -#define GENEVE_KEYBOARD_CONFIG(name) \ - const geneve_keyboard_config(name) = - - #define KEYQUEUESIZE 256 #define MAXKEYMSGLENGTH 10 #define KEYAUTOREPEATDELAY 30 @@ -71,13 +62,14 @@ public: DECLARE_WRITE_LINE_MEMBER( clock_control ); UINT8 get_recent_key(); + template static devcb2_base &static_set_int_callback(device_t &device, _Object object) { return downcast(device).m_interrupt.set_callback(object); } + protected: - virtual void device_start(); - virtual void device_reset(); - virtual void device_config_complete(); - virtual ioport_constructor device_input_ports() const; - devcb_resolved_write_line m_interrupt; // Keyboard interrupt to console - virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr); + void device_start(); + void device_reset(); + ioport_constructor device_input_ports() const; + devcb2_write_line m_interrupt; // Keyboard interrupt to console + void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr); private: void post_in_key_queue(int keycode); @@ -108,17 +100,11 @@ private: emu_timer* m_timer; }; -#define MCFG_GENEVE_KEYBOARD_ADD(_tag, _intf ) \ - MCFG_DEVICE_ADD(_tag, GENEVE_KEYBOARD, 0) \ - MCFG_DEVICE_CONFIG(_intf) +#define MCFG_GENEVE_KBINT_HANDLER( _intcallb ) \ + devcb = &geneve_keyboard_device::static_set_int_callback( *device, DEVCB2_##_intcallb ); /*****************************************************************************/ -struct geneve_mapper_config -{ - devcb_write_line ready; -}; - class geneve_mapper_device : public device_t { public: @@ -142,10 +128,11 @@ public: DECLARE_WRITE_LINE_MEMBER( clock_in ); DECLARE_WRITE_LINE_MEMBER( dbin_in ); + template static devcb2_base &static_set_ready_callback(device_t &device, _Object object) { return downcast(device).m_ready.set_callback(object); } protected: - virtual void device_start(); - virtual void device_reset(); + void device_start(); + void device_reset(); private: // GROM simulation @@ -194,10 +181,10 @@ private: int m_sram_val; // Ready line to the CPU - devcb_resolved_write_line m_ready; + devcb2_write_line m_ready; // Counter for the wait states. - int m_waitcount; + int m_waitcount; int m_ext_waitcount; // Devices @@ -213,11 +200,7 @@ private: UINT8* m_dram; }; -#define GENEVE_MAPPER_CONFIG(name) \ - const geneve_mapper_config(name) = - -#define MCFG_GENEVE_MAPPER_ADD(_tag, _conf ) \ - MCFG_DEVICE_ADD(_tag, GENEVE_MAPPER, 0) \ - MCFG_DEVICE_CONFIG( _conf ) +#define MCFG_GENEVE_READY_HANDLER( _intcallb ) \ + devcb = &geneve_mapper_device::static_set_ready_callback( *device, DEVCB2_##_intcallb ); #endif diff --git a/src/mess/machine/ti99/gromport.c b/src/mess/machine/ti99/gromport.c index 15f6e16720e..d9b457a6fcd 100644 --- a/src/mess/machine/ti99/gromport.c +++ b/src/mess/machine/ti99/gromport.c @@ -131,9 +131,9 @@ gromport_device::gromport_device(const machine_config &mconfig, const char *tag, : bus8z_device(mconfig, GROMPORT, "Cartridge port", tag, owner, clock, "gromport", __FILE__), device_slot_interface(mconfig, *this), m_connector(NULL), - m_reset_on_insert(true) -{ -} + m_reset_on_insert(true), + m_console_ready(*this), + m_console_reset(*this) { } /* Only called for addresses 6000-7fff and GROM addresses (see datamux config) */ READ8Z_MEMBER(gromport_device::readz) @@ -167,6 +167,8 @@ WRITE_LINE_MEMBER(gromport_device::ready_line) void gromport_device::device_start() { + m_console_ready.resolve(); + m_console_reset.resolve(); } void gromport_device::device_reset() @@ -198,9 +200,6 @@ void gromport_device::cartridge_inserted() void gromport_device::device_config_complete() { - const gromport_config *intf = reinterpret_cast(static_config()); - m_console_ready.resolve(intf->ready, *this); - m_console_reset.resolve(intf->reset, *this); m_connector = static_cast(first_subdevice()); set_grom_base(0x9800, 0xf800); } diff --git a/src/mess/machine/ti99/gromport.h b/src/mess/machine/ti99/gromport.h index 65c5aa549eb..ca41fa37599 100644 --- a/src/mess/machine/ti99/gromport.h +++ b/src/mess/machine/ti99/gromport.h @@ -17,15 +17,6 @@ extern const device_type GROMPORT; -#define GROMPORT_CONFIG(name) \ - const gromport_config(name) = - -struct gromport_config -{ - devcb_write_line ready; - devcb_write_line reset; -}; - class ti99_cartridge_connector_device; class gromport_device : public bus8z_device, public device_slot_interface @@ -38,6 +29,9 @@ public: DECLARE_WRITE8_MEMBER(cruwrite); DECLARE_WRITE_LINE_MEMBER(ready_line); + template static devcb2_base &static_set_ready_callback(device_t &device, _Object object) { return downcast(device).m_console_ready.set_callback(object); } + template static devcb2_base &static_set_reset_callback(device_t &device, _Object object) { return downcast(device).m_console_reset.set_callback(object); } + void cartridge_inserted(); void set_grom_base(UINT16 grombase, UINT16 grommask); UINT16 get_grom_base() { return m_grombase; } @@ -51,20 +45,25 @@ protected: private: ti99_cartridge_connector_device* m_connector; - bool m_reset_on_insert; - devcb_resolved_write_line m_console_reset; - devcb_resolved_write_line m_console_ready; - UINT16 m_grombase; - UINT16 m_grommask; + bool m_reset_on_insert; + devcb2_write_line m_console_ready; + devcb2_write_line m_console_reset; + UINT16 m_grombase; + UINT16 m_grommask; }; SLOT_INTERFACE_EXTERN(gromport); -#define MCFG_TI99_GROMPORT_ADD( _tag, _conf ) \ +#define MCFG_TI99_GROMPORT_ADD( _tag ) \ MCFG_DEVICE_ADD(_tag, GROMPORT, 0) \ - MCFG_DEVICE_CONFIG(_conf) \ MCFG_DEVICE_SLOT_INTERFACE(gromport, "single", false) +#define MCFG_GROMPORT_READY_HANDLER( _ready ) \ + devcb = &gromport_device::static_set_ready_callback( *device, DEVCB2_##_ready ); + +#define MCFG_GROMPORT_RESET_HANDLER( _reset ) \ + devcb = &gromport_device::static_set_reset_callback( *device, DEVCB2_##_reset ); + /****************************************************************************/ class rpk; diff --git a/src/mess/machine/ti99/joyport.c b/src/mess/machine/ti99/joyport.c index d81baa62ebc..8099964b925 100644 --- a/src/mess/machine/ti99/joyport.c +++ b/src/mess/machine/ti99/joyport.c @@ -41,7 +41,8 @@ joyport_device::joyport_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : device_t(mconfig, JOYPORT, "Joystick port", tag, owner, clock, "ti99_joyport", __FILE__), - device_slot_interface(mconfig, *this) + device_slot_interface(mconfig, *this), + m_interrupt(*this) { } @@ -71,13 +72,15 @@ WRITE_LINE_MEMBER( joyport_device::set_interrupt ) m_interrupt(state); } +void joyport_device::device_start() +{ + m_interrupt.resolve(); + logerror("joyport: Set clock to %d\n", m_clock); +} + void joyport_device::device_config_complete() { m_connected = static_cast(first_subdevice()); - const joyport_config *conf = reinterpret_cast(static_config()); - - m_interrupt.resolve(conf->interrupt, *this); - m_clock = conf->vdp_clock; } /*****************************************************************************/ diff --git a/src/mess/machine/ti99/joyport.h b/src/mess/machine/ti99/joyport.h index 7f6347d3b44..51f25c19268 100644 --- a/src/mess/machine/ti99/joyport.h +++ b/src/mess/machine/ti99/joyport.h @@ -24,15 +24,6 @@ extern const device_type JOYPORT; -struct joyport_config -{ - devcb_write_line interrupt; - int vdp_clock; -}; - -#define JOYPORT_CONFIG(name) \ - const joyport_config(name) = - class joyport_device; /******************************************************************** @@ -65,12 +56,14 @@ public: void write_port(int data); void set_interrupt(int state); + template static devcb2_base &static_set_int_callback(device_t &device, _Object object) { return downcast(device).m_interrupt.set_callback(object); } + protected: - virtual void device_start() { }; - virtual void device_config_complete(); + void device_start(); + void device_config_complete(); private: - devcb_resolved_write_line m_interrupt; + devcb2_write_line m_interrupt; joyport_attached_device* m_connected; }; @@ -78,19 +71,19 @@ SLOT_INTERFACE_EXTERN(joystick_port); SLOT_INTERFACE_EXTERN(joystick_port_994); SLOT_INTERFACE_EXTERN(joystick_port_gen); -#define MCFG_GENEVE_JOYPORT_ADD( _tag, _conf ) \ - MCFG_DEVICE_ADD(_tag, JOYPORT, 0) \ - MCFG_DEVICE_CONFIG( _conf ) \ +#define MCFG_JOYPORT_INT_HANDLER( _intcallb ) \ + devcb = &joyport_device::static_set_int_callback( *device, DEVCB2_##_intcallb ); + +#define MCFG_GENEVE_JOYPORT_ADD( _tag, _clock ) \ + MCFG_DEVICE_ADD(_tag, JOYPORT, _clock) \ MCFG_DEVICE_SLOT_INTERFACE(joystick_port_gen, "twinjoy", false) -#define MCFG_TI_JOYPORT4A_ADD( _tag, _conf ) \ - MCFG_DEVICE_ADD(_tag, JOYPORT, 0) \ - MCFG_DEVICE_CONFIG( _conf ) \ +#define MCFG_TI_JOYPORT4A_ADD( _tag, _clock ) \ + MCFG_DEVICE_ADD(_tag, JOYPORT, _clock) \ MCFG_DEVICE_SLOT_INTERFACE(joystick_port, "twinjoy", false) -#define MCFG_TI_JOYPORT4_ADD( _tag, _conf ) \ - MCFG_DEVICE_ADD(_tag, JOYPORT, 0) \ - MCFG_DEVICE_CONFIG( _conf ) \ +#define MCFG_TI_JOYPORT4_ADD( _tag, _clock ) \ + MCFG_DEVICE_ADD(_tag, JOYPORT, _clock) \ MCFG_DEVICE_SLOT_INTERFACE(joystick_port_994, "twinjoy", false) #endif /* __JOYPORT__ */ diff --git a/src/mess/machine/ti99/peribox.c b/src/mess/machine/ti99/peribox.c index a5300e85dc5..2e477544afb 100644 --- a/src/mess/machine/ti99/peribox.c +++ b/src/mess/machine/ti99/peribox.c @@ -205,7 +205,7 @@ CRUCLK* 51||52 DBIN #define TRACE_READY 0 // Show emulation details -#define TRACE_EMU 0 +#define TRACE_EMU 1 #define PEBSLOT2 "slot2" #define PEBSLOT3 "slot3" @@ -236,6 +236,7 @@ peribox_device::peribox_device(const machine_config &mconfig, const char *tag, d m_datamux_ready(*this) { for (int i=2; i <= 8; i++) m_slot[i] = NULL; + m_address_prefix = 0x70000; } /* @@ -396,7 +397,7 @@ void peribox_device::device_start(void) m_console_intb.resolve(); m_datamux_ready.resolve(); - if (TRACE_EMU) logerror("Prefix set to %05x\n", m_address_prefix); + if (TRACE_EMU) logerror("AMA/B/C address prefix set to %05x\n", m_address_prefix); } void peribox_device::device_config_complete() @@ -465,6 +466,7 @@ machine_config_constructor peribox_device::device_mconfig_additions() const peribox_gen_device::peribox_gen_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : peribox_device(mconfig, PERIBOX_GEN, "Peripheral expansion box Geneve", tag, owner, clock, "peribox_gen", __FILE__) { + m_address_prefix = 0x00000; }; // The BwG controller will not run with the Geneve due to its wait state @@ -519,6 +521,7 @@ machine_config_constructor peribox_gen_device::device_mconfig_additions() const peribox_998_device::peribox_998_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : peribox_device(mconfig, PERIBOX_998, "Peripheral expansion box 99/8", tag, owner, clock, "peribox_998", __FILE__) { + m_address_prefix = 0x70000; }; // The BwG controller will not run with the TI-99/8 for the same reason why @@ -560,6 +563,7 @@ machine_config_constructor peribox_998_device::device_mconfig_additions() const peribox_sg_device::peribox_sg_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : peribox_device(mconfig, PERIBOX_SG, "Peripheral expansion box SGCPU", tag, owner, clock, "peribox_sg", __FILE__) { + m_address_prefix = 0x70000; }; SLOT_INTERFACE_START( peribox_slotp ) @@ -604,6 +608,7 @@ machine_config_constructor peribox_sg_device::device_mconfig_additions() const peribox_ev_device::peribox_ev_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : peribox_device(mconfig, PERIBOX_EV, "Peripheral expansion box EVPC", tag, owner, clock, "peribox_ev", __FILE__) { + m_address_prefix = 0x70000; }; MACHINE_CONFIG_FRAGMENT( peribox_ev_device ) @@ -699,7 +704,6 @@ void peribox_slot_device::set_genmod(bool set) void peribox_slot_device::device_start(void) { - if (TRACE_EMU) logerror("Peribox slot started\n"); } void peribox_slot_device::device_config_complete() diff --git a/src/mess/machine/ti99/peribox.h b/src/mess/machine/ti99/peribox.h index e4787936b55..d5bb50b3f7a 100644 --- a/src/mess/machine/ti99/peribox.h +++ b/src/mess/machine/ti99/peribox.h @@ -174,8 +174,8 @@ public: device_t* get_drive(const char* name); protected: - virtual void device_start(void); - virtual void device_config_complete(void); + void device_start(void); + void device_config_complete(void); private: int get_index_from_tagname(); @@ -228,29 +228,6 @@ protected: int m_select_value; }; -#define MCFG_PERIBOX_SET_PREFIX( _prefix ) \ - downcast(device)->set_prefix(_prefix); - -#define MCFG_PERIBOX_ADD(_tag, _prefix) \ - MCFG_DEVICE_ADD(_tag, PERIBOX, 0); \ - MCFG_PERIBOX_SET_PREFIX( _prefix ) - -#define MCFG_PERIBOX_EV_ADD(_tag, _prefix) \ - MCFG_DEVICE_ADD(_tag, PERIBOX_EV, 0) ; \ - MCFG_PERIBOX_SET_PREFIX( _prefix ) - -#define MCFG_PERIBOX_SG_ADD(_tag, _prefix) \ - MCFG_DEVICE_ADD(_tag, PERIBOX_SG, 0) ; \ - MCFG_PERIBOX_SET_PREFIX( _prefix ) - -#define MCFG_PERIBOX_GEN_ADD(_tag, _prefix) \ - MCFG_DEVICE_ADD(_tag, PERIBOX_GEN, 0); \ - MCFG_PERIBOX_SET_PREFIX( _prefix ) - -#define MCFG_PERIBOX_998_ADD(_tag, _prefix) \ - MCFG_DEVICE_ADD(_tag, PERIBOX_998, 0) ; \ - MCFG_PERIBOX_SET_PREFIX( _prefix ) - #define MCFG_PERIBOX_SLOT_ADD(_tag, _slot_intf) \ MCFG_DEVICE_ADD(_tag, PERIBOX_SLOT, 0) \ MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, NULL, false) diff --git a/src/mess/machine/ti99/videowrp.c b/src/mess/machine/ti99/videowrp.c index a3879e10c28..45f88098b40 100644 --- a/src/mess/machine/ti99/videowrp.c +++ b/src/mess/machine/ti99/videowrp.c @@ -215,8 +215,7 @@ WRITE8_MEMBER( ti_sound_system_device::write ) void ti_sound_system_device::device_start(void) { - const ti_sound_config *conf = reinterpret_cast(static_config()); - m_console_ready.resolve(conf->ready, *this); + m_console_ready.resolve(); m_sound_chip = subdevice(TISOUNDCHIP_TAG); } diff --git a/src/mess/machine/ti99/videowrp.h b/src/mess/machine/ti99/videowrp.h index 98a414a7e0f..6653f918d98 100644 --- a/src/mess/machine/ti99/videowrp.h +++ b/src/mess/machine/ti99/videowrp.h @@ -78,11 +78,6 @@ extern const device_type V9938VIDEO; extern const device_type TISOUND_94624; extern const device_type TISOUND_76496; -struct ti_sound_config -{ - devcb_write_line ready; -}; - #define TI_SOUND_CONFIG(name) \ const ti_sound_config(name) = @@ -90,20 +85,23 @@ class ti_sound_system_device : public bus8z_device { public: ti_sound_system_device(const machine_config &mconfig, device_type type, const char *tag, const char *name, device_t *owner, UINT32 clock, const char *shortname, const char *source) - : bus8z_device(mconfig, type, name, tag, owner, clock, shortname, source) { }; + : bus8z_device(mconfig, type, name, tag, owner, clock, shortname, source), + m_console_ready(*this) { }; // Cannot read from sound; just ignore silently DECLARE_READ8Z_MEMBER(readz) { }; DECLARE_WRITE8_MEMBER(write); DECLARE_WRITE_LINE_MEMBER( sound_ready ); // connect to console READY + template static devcb2_base &static_set_int_callback(device_t &device, _Object object) { return downcast(device).m_console_ready.set_callback(object); } + protected: virtual void device_start(void); virtual machine_config_constructor device_mconfig_additions() const =0; private: - sn76496_base_device* m_sound_chip; - devcb_resolved_write_line m_console_ready; + sn76496_base_device* m_sound_chip; + devcb2_write_line m_console_ready; }; /* @@ -167,14 +165,14 @@ protected: MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(_blank)) \ MCFG_SCREEN_SIZE(_x, _y) \ MCFG_SCREEN_VISIBLE_AREA(0, _x - 1, 0, _y - 1) \ - MCFG_SCREEN_PALETTE(VDP_TAG ":palette") \ + MCFG_SCREEN_PALETTE(VDP_TAG ":palette") +#define MCFG_TI_SOUND_94624_ADD(_tag) \ + MCFG_DEVICE_ADD(_tag, TISOUND_94624, 0) -#define MCFG_TI_SOUND_94624_ADD(_tag, _conf) \ - MCFG_DEVICE_ADD(_tag, TISOUND_94624, 0) \ - MCFG_DEVICE_CONFIG( _conf ) +#define MCFG_TI_SOUND_76496_ADD(_tag) \ + MCFG_DEVICE_ADD(_tag, TISOUND_76496, 0) -#define MCFG_TI_SOUND_76496_ADD(_tag, _conf) \ - MCFG_DEVICE_ADD(_tag, TISOUND_76496, 0) \ - MCFG_DEVICE_CONFIG( _conf ) +#define MCFG_TI_SOUND_READY_HANDLER( _ready ) \ + devcb = &ti_sound_system_device::static_set_int_callback( *device, DEVCB2_##_ready ); #endif /* __TIVIDEO__ */