From 6bf57e9b143ee92f6a87cbf8ae8813add840feb6 Mon Sep 17 00:00:00 2001 From: Michael Zapf Date: Tue, 21 Aug 2018 20:04:41 +0200 Subject: [PATCH] ti9x: Various MCFG removals. (nw) --- src/devices/bus/ti99/internal/992board.h | 15 ------- src/devices/bus/ti99x/990_dk.h | 5 +-- src/devices/bus/ti99x/990_hd.h | 6 +-- src/devices/bus/ti99x/990_tap.h | 6 +-- src/devices/imagedev/mfmhd.h | 28 +++++-------- src/devices/machine/pdc.cpp | 6 ++- src/devices/machine/strata.h | 3 -- src/mame/drivers/milton6805.cpp | 9 ++--- src/mame/drivers/ti990_10.cpp | 12 +++--- src/mame/drivers/ti990_4.cpp | 24 +++++------ src/mame/drivers/ti99_4p.cpp | 51 ++++++++++++------------ src/mame/drivers/ti99_8.cpp | 1 - src/mame/drivers/tm990189.cpp | 17 +++----- src/mame/drivers/tutor.cpp | 29 ++++++-------- src/mame/video/733_asr.h | 16 +------- src/mame/video/911_vdt.h | 9 ++--- 16 files changed, 89 insertions(+), 148 deletions(-) diff --git a/src/devices/bus/ti99/internal/992board.h b/src/devices/bus/ti99/internal/992board.h index 6b0e2ff9143..b9946ebe9c4 100644 --- a/src/devices/bus/ti99/internal/992board.h +++ b/src/devices/bus/ti99/internal/992board.h @@ -164,21 +164,6 @@ public: } } } // end namespace bus::ti99::internal -#define MCFG_VIDEO992_SCREEN_ADD(_screen_tag) \ - MCFG_VIDEO_SET_SCREEN(_screen_tag) \ - MCFG_SCREEN_ADD( _screen_tag, RASTER ) \ - MCFG_SCREEN_RAW_PARAMS( XTAL(10'738'635) / 2, bus::ti99::internal::video992_device::TOTAL_HORZ, bus::ti99::internal::video992_device::HORZ_DISPLAY_START-12, bus::ti99::internal::video992_device::HORZ_DISPLAY_START + 256 + 12, \ - bus::ti99::internal::video992_device::TOTAL_VERT_NTSC, bus::ti99::internal::video992_device::VERT_DISPLAY_START_NTSC - 12, bus::ti99::internal::video992_device::VERT_DISPLAY_START_NTSC + 192 + 12 ) - -#define MCFG_VIDEO992_MEM_ACCESS_CB(_devcb) \ - downcast(*device).set_readmem_callback(DEVCB_##_devcb); - -#define MCFG_VIDEO992_HOLD_CB(_devcb) \ - downcast(*device).set_hold_callback(DEVCB_##_devcb); - -#define MCFG_VIDEO992_INT_CB(_devcb) \ - downcast(*device).set_int_callback(DEVCB_##_devcb); - DECLARE_DEVICE_TYPE_NS(VIDEO99224, bus::ti99::internal, video992_24_device) DECLARE_DEVICE_TYPE_NS(VIDEO99232, bus::ti99::internal, video992_32_device) DECLARE_DEVICE_TYPE_NS(IO99224, bus::ti99::internal, io992_24_device) diff --git a/src/devices/bus/ti99x/990_dk.h b/src/devices/bus/ti99x/990_dk.h index cb5dd86a61e..d05278a187a 100644 --- a/src/devices/bus/ti99x/990_dk.h +++ b/src/devices/bus/ti99x/990_dk.h @@ -18,7 +18,7 @@ public: DECLARE_READ8_MEMBER( cru_r ); DECLARE_WRITE8_MEMBER( cru_w ); - template devcb_base &set_int_callback(Object &&cb) { return m_int_line.set_callback(std::forward(cb)); } + auto int_cb() { return m_int_line.bind(); } private: enum buf_mode_t @@ -68,7 +68,4 @@ private: // LEGACY_FLOPPY_OPTIONS_EXTERN(fd800); -#define MCFG_FD800_INT_HANDLER( _intcallb ) \ - downcast(*device).set_int_callback(DEVCB_##_intcallb); - #endif // MAME_BUS_TI99X_990_DK_H diff --git a/src/devices/bus/ti99x/990_hd.h b/src/devices/bus/ti99x/990_hd.h index 77b4f6a2749..47fe5d947f6 100644 --- a/src/devices/bus/ti99x/990_hd.h +++ b/src/devices/bus/ti99x/990_hd.h @@ -22,6 +22,9 @@ public: DECLARE_DEVICE_IMAGE_LOAD_MEMBER( ti990_hd ); DECLARE_DEVICE_IMAGE_UNLOAD_MEMBER( ti990_hd ); + + auto int_cb() { return m_interrupt_callback.bind(); } + protected: // device-level overrides virtual void device_start() override; @@ -74,9 +77,6 @@ private: hd_unit_t m_d[MAX_DISK_UNIT]; }; -#define MCFG_TI990_HDC_INT_CALLBACK( _write ) \ - downcast(*device).set_int_callback(DEVCB_##_write); - DECLARE_DEVICE_TYPE(TI990_HDC, ti990_hdc_device) #endif // MAME_BUS_TI99X_990_HD_H diff --git a/src/devices/bus/ti99x/990_tap.h b/src/devices/bus/ti99x/990_tap.h index 9bc8b04666b..a35a09b26a4 100644 --- a/src/devices/bus/ti99x/990_tap.h +++ b/src/devices/bus/ti99x/990_tap.h @@ -14,7 +14,6 @@ class tap_990_device : public device_t { public: tap_990_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template devcb_base &set_int_callback(Object &&cb) { return m_int_line.set_callback(std::forward(cb)); } DECLARE_READ16_MEMBER( read ); DECLARE_WRITE16_MEMBER( write ); @@ -27,6 +26,8 @@ public: m_tape[id].wp = wp; } + auto int_cb() { return m_int_line.bind(); } + protected: // device-level overrides virtual void device_start() override; @@ -60,7 +61,4 @@ private: tape_unit_t m_tape[MAX_TAPE_UNIT]; }; -#define MCFG_TI990_TAPE_INT_HANDLER( _intcallb ) \ - downcast(*device).set_int_callback(DEVCB_##_intcallb); - #endif // MAME_BUS_TI99X_990_TAP_H diff --git a/src/devices/imagedev/mfmhd.h b/src/devices/imagedev/mfmhd.h index 69b868a30ac..a46dab519b7 100644 --- a/src/devices/imagedev/mfmhd.h +++ b/src/devices/imagedev/mfmhd.h @@ -230,6 +230,16 @@ public: mfm_harddisk_device *get_device(); + /* + Configuration parameters: + encoding = Encoding (see comments in mfm_hd.c) + spinupms = Spinup time in milliseconds. Even though this is a property + of the physical device, we need a way to configure it per system; + some systems expect the hard disk to be turned on before the + main system, and expect it to be ready when they try to access it + cache = number of cached MFM tracks + format = MFMHD_GEN_FORMAT (see formats/mfm_hd.h; currently the only value) + */ void configure(mfmhd_enc_t encoding, int spinupms, int cache, mfmhd_format_type format); protected: @@ -245,22 +255,4 @@ private: DECLARE_DEVICE_TYPE(MFM_HD_CONNECTOR, mfm_harddisk_connector) -/* - Add a harddisk connector. - Parameters: - _tag = Tag of the connector - _slot_intf = Selection of hard drives - _def_slot = Default hard drive - _enc = Encoding (see comments in mfm_hd.c) - _spinupms = Spinup time in milliseconds (some configurations assume that the - user has turned on the hard disk before turning on the system. We cannot - emulate this, so we allow for shorter times) - _cache = number of cached MFM tracks -*/ -#define MCFG_MFM_HARDDISK_CONN_ADD(_tag, _slot_intf, _def_slot, _enc, _spinupms, _cache, _format) \ - MCFG_DEVICE_ADD(_tag, MFM_HD_CONNECTOR, 0) \ - MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) \ - static_cast(device)->configure(_enc, _spinupms, _cache, _format); - - #endif // MAME_DEVICES_IMAGEDEV_MFMHD_H diff --git a/src/devices/machine/pdc.cpp b/src/devices/machine/pdc.cpp index 9a5cff5fa9b..8884752241f 100644 --- a/src/devices/machine/pdc.cpp +++ b/src/devices/machine/pdc.cpp @@ -284,8 +284,10 @@ MACHINE_CONFIG_START(pdc_device::device_add_mconfig) m_dma8237->out_iow_callback<1>().set(FUNC(pdc_device::m68k_dma_w)); /* Hard Disk Controller - HDC9224 */ - MCFG_DEVICE_ADD(HDC_TAG, HDC9224, 0) - MCFG_MFM_HARDDISK_CONN_ADD("h1", pdc_harddisks, nullptr, MFM_BYTE, 3000, 20, MFMHD_GEN_FORMAT) + // TODO: connect the HDC lines + HDC9224(config, HDC_TAG, 0); + MFM_HD_CONNECTOR(config, "h1", pdc_harddisks, nullptr, MFM_BYTE, 3000, 20, MFMHD_GEN_FORMAT); + MACHINE_CONFIG_END ioport_constructor pdc_device::device_input_ports() const diff --git a/src/devices/machine/strata.h b/src/devices/machine/strata.h index 450b0ebd201..26d8675f436 100644 --- a/src/devices/machine/strata.h +++ b/src/devices/machine/strata.h @@ -71,7 +71,4 @@ private: DECLARE_DEVICE_TYPE(STRATAFLASH, strataflash_device) -#define MCFG_STRATAFLASH_ADD(_tag) \ - MCFG_DEVICE_ADD(_tag, STRATAFLASH, 0) - #endif // MAME_MACHINE_STRATA_H diff --git a/src/mame/drivers/milton6805.cpp b/src/mame/drivers/milton6805.cpp index 8aede5998f3..03789aff3c8 100644 --- a/src/mame/drivers/milton6805.cpp +++ b/src/mame/drivers/milton6805.cpp @@ -121,11 +121,10 @@ MACHINE_CONFIG_START(milton_state::milton) MCFG_DEVICE_ADD("maincpu", M6805, 3120000) // MC6805P2, needs a CPU core MCFG_DEVICE_PROGRAM_MAP(prg_map) - MCFG_DEVICE_ADD("grom3", TMC0430, 3120000 / 8) - downcast(*device).set_region_and_ident("groms", 0x0000, 0); - - MCFG_DEVICE_ADD("grom4", TMC0430, 3120000 / 8) - downcast(*device).set_region_and_ident("groms", 0x2000, 1); + // GROMs. They still require a ready callback and external clock + // of 3120000/8 Hz, pulsing their glock_in line (see tmc0430.cpp and ti99_4x.cpp) + TMC0430(config, "grom3", "groms", 0x0000, 0); + TMC0430(config, "grom4", "groms", 0x2000, 1); SPEAKER(config, "speaker").front_center(); MCFG_DEVICE_ADD("sp0250", SP0250, 3120000) diff --git a/src/mame/drivers/ti990_10.cpp b/src/mame/drivers/ti990_10.cpp index 2b20aebe9ac..8ebe64d4728 100644 --- a/src/mame/drivers/ti990_10.cpp +++ b/src/mame/drivers/ti990_10.cpp @@ -325,17 +325,15 @@ MACHINE_CONFIG_START(ti990_10_state::ti990_10) m_maincpu->set_addrmap(AS_IO, &ti990_10_state::ti990_10_io); // VDT 911 terminal - MCFG_DEVICE_ADD(m_terminal, VDT911, 0) - MCFG_VDT911_KEYINT_HANDLER(WRITELINE(*this, ti990_10_state, key_interrupt)) - MCFG_VDT911_LINEINT_HANDLER(WRITELINE(*this, ti990_10_state, line_interrupt)) + VDT911(config, m_terminal, 0); + m_terminal->keyint_cb().set(FUNC(ti990_10_state::key_interrupt)); + m_terminal->lineint_cb().set(FUNC(ti990_10_state::line_interrupt)); // Hard disk - MCFG_DEVICE_ADD("hdc", TI990_HDC, 0) - MCFG_TI990_HDC_INT_CALLBACK(WRITELINE(*this, ti990_10_state, ti990_set_int13)) + TI990_HDC(config, "hdc", 0).int_cb().set(FUNC(ti990_10_state::ti990_set_int13)); // Tape controller - MCFG_DEVICE_ADD("tpc", TI990_TAPE_CTRL, 0) - MCFG_TI990_TAPE_INT_HANDLER(WRITELINE(*this, ti990_10_state, tape_interrupt)) + TI990_TAPE_CTRL(config, "tpc", 0).int_cb().set(FUNC(ti990_10_state::tape_interrupt)); MACHINE_CONFIG_END diff --git a/src/mame/drivers/ti990_4.cpp b/src/mame/drivers/ti990_4.cpp index 0f0186a8ddd..f816bd3156c 100644 --- a/src/mame/drivers/ti990_4.cpp +++ b/src/mame/drivers/ti990_4.cpp @@ -303,15 +303,14 @@ MACHINE_CONFIG_START(ti990_4_state::ti990_4) MCFG_MACHINE_RESET_OVERRIDE(ti990_4_state, ti990_4 ) // Terminal - MCFG_DEVICE_ADD("asr733", ASR733, 0) - MCFG_ASR733_KEYINT_HANDLER(WRITELINE(*this, ti990_4_state, asrkey_interrupt)) - MCFG_ASR733_LINEINT_HANDLER(WRITELINE(*this, ti990_4_state, line_interrupt)) + asr733_device& term(ASR733(config, "asr733", 0)); + term.keyint_cb().set(FUNC(ti990_4_state::asrkey_interrupt)); + term.lineint_cb().set(FUNC(ti990_4_state::line_interrupt)); // Floppy controller - MCFG_DEVICE_ADD("fd800", TI99X_FD800, 0) - MCFG_FD800_INT_HANDLER(WRITELINE(*this, ti990_4_state, fd_interrupt)) + TI99X_FD800(config, "fd800", 0).int_cb().set(FUNC(ti990_4_state::fd_interrupt)); -// MCFG_LEGACY_FLOPPY_4_DRIVES_ADD(ti990_4_floppy_interface) + // TODO: Add floppy drives MACHINE_CONFIG_END MACHINE_CONFIG_START(ti990_4_state::ti990_4v) @@ -323,16 +322,15 @@ MACHINE_CONFIG_START(ti990_4_state::ti990_4v) m_maincpu->extop_cb().set(FUNC(ti990_4_state::external_operation)); m_maincpu->intlevel_cb().set(FUNC(ti990_4_state::interrupt_level)); - // Terminal - MCFG_DEVICE_ADD("vdt911", VDT911, 0) - MCFG_VDT911_KEYINT_HANDLER(WRITELINE(*this, ti990_4_state, vdtkey_interrupt)) - MCFG_VDT911_LINEINT_HANDLER(WRITELINE(*this, ti990_4_state, line_interrupt)) + // VDT 911 terminal + vdt911_device& term(VDT911(config, "vdt911", 0)); + term.keyint_cb().set(FUNC(ti990_4_state::vdtkey_interrupt)); + term.lineint_cb().set(FUNC(ti990_4_state::line_interrupt)); // Floppy controller - MCFG_DEVICE_ADD("fd800", TI99X_FD800, 0) - MCFG_FD800_INT_HANDLER(WRITELINE(*this, ti990_4_state, fd_interrupt)) + TI99X_FD800(config, "fd800", 0).int_cb().set(FUNC(ti990_4_state::fd_interrupt)); -// MCFG_LEGACY_FLOPPY_4_DRIVES_ADD(ti990_4_floppy_interface) + // TODO: Add floppy drives MACHINE_CONFIG_END /* diff --git a/src/mame/drivers/ti99_4p.cpp b/src/mame/drivers/ti99_4p.cpp index 77334665dd8..19d3b1b8d98 100644 --- a/src/mame/drivers/ti99_4p.cpp +++ b/src/mame/drivers/ti99_4p.cpp @@ -123,18 +123,23 @@ #include "imagedev/cassette.h" #include "machine/ram.h" #include "machine/tms9901.h" -#include "sound/wave.h" #include "speaker.h" #define TI99_SGCPU_TAG "sgcpu" #define TI99_AMSRAM_TAG "amsram1meg" -#define TRACE_ILLWRITE 0 -#define TRACE_READY 0 -#define TRACE_INT 0 -#define TRACE_ADDRESS 0 -#define TRACE_MEM 0 -#define TRACE_MUX 0 +// Debugging +#define LOG_WARN (1U<<1) // Warnings +#define LOG_ILLWRITE (1U<<2) +#define LOG_READY (1U<<3) +#define LOG_INT (1U<<4) +#define LOG_ADDRESS (1U<<5) +#define LOG_MEM (1U<<6) +#define LOG_MUX (1U<<7) + +#define VERBOSE ( LOG_WARN ) + +#include "logmacro.h" class ti99_4p_state : public driver_device { @@ -440,7 +445,7 @@ READ8_MEMBER( ti99_4p_state::setoffset ) m_addr_buf = offset; m_waitcount = 0; - if (TRACE_ADDRESS) logerror("set address %04x\n", m_addr_buf); + LOGMASKED(LOG_ADDRESS, "set address %04x\n", m_addr_buf); m_decode = SGCPU_NONE; m_muxready = true; @@ -523,7 +528,7 @@ READ16_MEMBER( ti99_4p_state::memread ) // Reading the even address now m_peribox->readz(space, m_addr_buf, &hbyte); m_peribox->memen_in(CLEAR_LINE); - if (TRACE_MEM) logerror("Read even byte from address %04x -> %02x\n", m_addr_buf, hbyte); + LOGMASKED(LOG_MEM, "Read even byte from address %04x -> %02x\n", m_addr_buf, hbyte); value = (hbyte<<8) | m_latch; } @@ -545,7 +550,7 @@ WRITE16_MEMBER( ti99_4p_state::memwrite ) switch (m_decode) { case SGCPU_SYSROM: - if (TRACE_ILLWRITE) logerror("Ignoring ROM write access at %04x\n", m_addr_buf); + LOGMASKED(LOG_ILLWRITE, "Ignoring ROM write access at %04x\n", m_addr_buf); break; case SGCPU_RAM: @@ -560,7 +565,7 @@ WRITE16_MEMBER( ti99_4p_state::memwrite ) break; case SGCPU_INTDSR: - if (TRACE_ILLWRITE) logerror("Ignoring DSR write access at %04x\n", m_addr_buf); + LOGMASKED(LOG_ILLWRITE, "Ignoring DSR write access at %04x\n", m_addr_buf); break; case SGCPU_MAPPER: @@ -587,7 +592,7 @@ WRITE16_MEMBER( ti99_4p_state::memwrite ) m_latch = (data >> 8) & 0xff; // write odd byte - if (TRACE_MEM) logerror("datamux: write odd byte to address %04x <- %02x\n", m_addr_buf+1, data & 0xff); + LOGMASKED(LOG_MEM, "datamux: write odd byte to address %04x <- %02x\n", m_addr_buf+1, data & 0xff); m_peribox->write(space, m_addr_buf+1, data & 0xff); m_peribox->memen_in(CLEAR_LINE); } @@ -637,10 +642,10 @@ WRITE_LINE_MEMBER( ti99_4p_state::datamux_clock_in ) // return immediately if the datamux is currently inactive if (m_waitcount>0) { - if (TRACE_MUX) logerror("datamux: wait count %d\n", m_waitcount); + LOGMASKED(LOG_MUX, "datamux: wait count %d\n", m_waitcount); if (m_sysready==CLEAR_LINE) { - if (TRACE_MUX) logerror("datamux: stalled due to external READY=0\n"); + LOGMASKED(LOG_MUX, "datamux: stalled due to external READY=0\n"); return; } @@ -660,7 +665,7 @@ WRITE_LINE_MEMBER( ti99_4p_state::datamux_clock_in ) m_peribox->readz(*m_spacep, m_addr_buf+1, &m_latch); m_peribox->memen_in(CLEAR_LINE); - if (TRACE_MEM) logerror("datamux: read odd byte from address %04x -> %02x\n", m_addr_buf+1, m_latch); + LOGMASKED(LOG_MEM, "datamux: read odd byte from address %04x -> %02x\n", m_addr_buf+1, m_latch); // do the setaddress for the even address m_peribox->memen_in(ASSERT_LINE); @@ -687,7 +692,7 @@ WRITE_LINE_MEMBER( ti99_4p_state::datamux_clock_in ) m_peribox->setaddress_dbin(*m_spacep, m_addr_buf, m_dbin); // write even byte - if (TRACE_MEM) logerror("datamux: write even byte to address %04x <- %02x\n", m_addr_buf, m_latch); + LOGMASKED(LOG_MEM, "datamux: write even byte to address %04x <- %02x\n", m_addr_buf, m_latch); m_peribox->write(*m_spacep, m_addr_buf, m_latch); m_peribox->memen_in(CLEAR_LINE); } @@ -874,10 +879,7 @@ void ti99_4p_state::ready_join() { int combined = (m_sysready == ASSERT_LINE && m_muxready)? ASSERT_LINE : CLEAR_LINE; - if (TRACE_READY) - { - if (m_ready_prev != combined) logerror("READY level = %d\n", combined); - } + if (m_ready_prev != combined) LOGMASKED(LOG_READY, "READY level = %d\n", combined); m_ready_prev = combined; m_cpu->set_ready(combined); } @@ -887,10 +889,7 @@ void ti99_4p_state::ready_join() */ WRITE_LINE_MEMBER( ti99_4p_state::ready_line ) { - if (TRACE_READY) - { - if (state != m_sysready) logerror("READY line from PBox = %d\n", state); - } + if (state != m_sysready) LOGMASKED(LOG_READY, "READY line from PBox = %d\n", state); m_sysready = (line_state)state; // Also propagate to CPU via driver ready_join(); @@ -906,13 +905,13 @@ void ti99_4p_state::set_9901_int( int line, line_state state) WRITE_LINE_MEMBER( ti99_4p_state::extint ) { - if (TRACE_INT) logerror("EXTINT level = %02x\n", state); + LOGMASKED(LOG_INT, "EXTINT level = %02x\n", state); set_9901_int(1, (line_state)state); } WRITE_LINE_MEMBER( ti99_4p_state::notconnected ) { - if (TRACE_INT) logerror("Setting a not connected line ... ignored\n"); + LOGMASKED(LOG_INT, "Setting a not connected line ... ignored\n"); } /* diff --git a/src/mame/drivers/ti99_8.cpp b/src/mame/drivers/ti99_8.cpp index 3e13fab920d..7c40a137f28 100644 --- a/src/mame/drivers/ti99_8.cpp +++ b/src/mame/drivers/ti99_8.cpp @@ -176,7 +176,6 @@ Known Issues (MZ, 2010-11-07) #include "bus/ti99/ti99defs.h" #include "sound/sn76496.h" -#include "sound/wave.h" #include "machine/tms9901.h" #include "machine/tmc0430.h" #include "imagedev/cassette.h" diff --git a/src/mame/drivers/tm990189.cpp b/src/mame/drivers/tm990189.cpp index ab41a5286d8..8f5e56fa064 100644 --- a/src/mame/drivers/tm990189.cpp +++ b/src/mame/drivers/tm990189.cpp @@ -67,7 +67,6 @@ #include "machine/tms9901.h" #include "machine/tms9902.h" #include "sound/spkrdev.h" -#include "sound/wave.h" #include "video/tms9928a.h" #include "speaker.h" @@ -837,11 +836,10 @@ MACHINE_CONFIG_START(tm990189_state::tm990_189) /* sound hardware */ SPEAKER(config, "mono").front_center(); - WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.25); SPEAKER_SOUND(config, "speaker").add_route(ALL_OUTPUTS, "mono", 0.50); /* Devices */ - MCFG_CASSETTE_ADD( "cassette" ) + CASSETTE(config, "cassette", 0).add_route(ALL_OUTPUTS, "mono", 0.25); TMS9901(config, m_tms9901_usr, 2000000); m_tms9901_usr->p_out_cb(0).set(FUNC(tm990189_state::usr9901_led0_w)); @@ -870,10 +868,9 @@ MACHINE_CONFIG_START(tm990189_state::tm990_189) m_tms9901_sys->p_out_cb(15).set(FUNC(tm990189_state::sys9901_tapewdata_w)); m_tms9901_sys->intlevel_cb().set(FUNC(tm990189_state::sys9901_interrupt_callback)); - TMS9902(config, m_tms9902, 2000000); - m_tms9902->xmit_cb().set(FUNC(tm990189_state::xmit_callback)); // called when a character is transmitted + TMS9902(config, m_tms9902, 2000000).xmit_cb().set(FUNC(tm990189_state::xmit_callback)); // called when a character is transmitted + TM990_189_RS232(config, "rs232", 0, m_tms9902); - MCFG_DEVICE_ADD("rs232", TM990_189_RS232, 0, m_tms9902) MCFG_TIMER_DRIVER_ADD_PERIODIC("display_timer", tm990189_state, display_callback, attotime::from_hz(30)) // Need to delay the timer, or it will spoil the initial LOAD // TODO: Fix this, probably inside CPU @@ -900,11 +897,10 @@ MACHINE_CONFIG_START(tm990189_state::tm990_189_v) /* sound hardware */ SPEAKER(config, "mono").front_center(); - WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.25); SPEAKER_SOUND(config, "speaker").add_route(ALL_OUTPUTS, "mono", 0.50); /* one two-level buzzer */ /* Devices */ - MCFG_CASSETTE_ADD( "cassette" ) + CASSETTE(config, "cassette", 0).add_route(ALL_OUTPUTS, "mono", 0.25); TMS9901(config, m_tms9901_usr, 2000000); m_tms9901_usr->p_out_cb(0).set(FUNC(tm990189_state::usr9901_led0_w)); @@ -933,10 +929,9 @@ MACHINE_CONFIG_START(tm990189_state::tm990_189_v) m_tms9901_sys->p_out_cb(15).set(FUNC(tm990189_state::sys9901_tapewdata_w)); m_tms9901_sys->intlevel_cb().set(FUNC(tm990189_state::sys9901_interrupt_callback)); - TMS9902(config, m_tms9902, 2000000); - m_tms9902->xmit_cb().set(FUNC(tm990189_state::xmit_callback)); // called when a character is transmitted + TMS9902(config, m_tms9902, 2000000).xmit_cb().set(FUNC(tm990189_state::xmit_callback)); // called when a character is transmitted; + TM990_189_RS232(config, "rs232", 0, m_tms9902); - MCFG_DEVICE_ADD("rs232", TM990_189_RS232, 0, m_tms9902) MCFG_TIMER_DRIVER_ADD_PERIODIC("display_timer", tm990189_state, display_callback, attotime::from_hz(30)) MCFG_TIMER_START_DELAY(attotime::from_msec(150)) MACHINE_CONFIG_END diff --git a/src/mame/drivers/tutor.cpp b/src/mame/drivers/tutor.cpp index 1878f588a1e..5d02eaff528 100644 --- a/src/mame/drivers/tutor.cpp +++ b/src/mame/drivers/tutor.cpp @@ -173,7 +173,6 @@ A=AMA, P=PRO, these keys don't exist, and so the games cannot be played. #include "cpu/tms9900/tms9995.h" #include "imagedev/cassette.h" #include "sound/sn76496.h" -#include "sound/wave.h" #include "video/tms9928a.h" #include "bus/centronics/ctronics.h" @@ -752,32 +751,30 @@ MACHINE_CONFIG_START(tutor_state::tutor) m_maincpu->set_addrmap(AS_PROGRAM, &tutor_state::tutor_memmap); m_maincpu->set_addrmap(AS_IO, &tutor_state::tutor_io); - /* video hardware */ + // video hardware tms9928a_device &vdp(TMS9928A(config, "tms9928a", XTAL(10'738'635))); vdp.set_screen("screen"); vdp.set_vram_size(0x4000); SCREEN(config, "screen", SCREEN_TYPE_RASTER); - /* sound */ - SPEAKER(config, "mono").front_center(); + // Sound + SPEAKER(config, "sound_out").front_center(); + SN76489A(config, "sn76489a", 3579545).add_route(ALL_OUTPUTS, "sound_out", 0.75); - MCFG_DEVICE_ADD("sn76489a", SN76489A, 3579545) /* 3.579545 MHz */ - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75) - - WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.25); - - MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer") - MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(*this, tutor_state, write_centronics_busy)) + CENTRONICS(config, m_centronics, centronics_devices, "printer").busy_handler().set(FUNC(tutor_state::write_centronics_busy)); MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics") - MCFG_CASSETTE_ADD( "cassette" ) + // Cassette + SPEAKER(config, "cass_out").front_center(); + CASSETTE(config, "cassette", 0).add_route(ALL_OUTPUTS, "cass_out", 0.25); - /* cartridge */ - MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_linear_slot, "tutor_cart") + // Cartridge slot + GENERIC_CARTSLOT(config, "cartslot", generic_linear_slot, "tutor_cart", nullptr); + + // software lists + SOFTWARE_LIST(config, "cart_list").set_type("tutor", SOFTWARE_LIST_ORIGINAL_SYSTEM); - /* software lists */ - MCFG_SOFTWARE_LIST_ADD("cart_list","tutor") MACHINE_CONFIG_END MACHINE_CONFIG_START(tutor_state::pyuutajr) diff --git a/src/mame/video/733_asr.h b/src/mame/video/733_asr.h index 6d5527762bf..c76e533c391 100644 --- a/src/mame/video/733_asr.h +++ b/src/mame/video/733_asr.h @@ -24,14 +24,8 @@ public: DECLARE_READ8_MEMBER(cru_r); DECLARE_WRITE8_MEMBER(cru_w); - template devcb_base &set_keyint_callback(Object &&cb) - { - return m_keyint_line.set_callback(std::forward(cb)); - } - template devcb_base &set_lineint_callback(Object &&cb) - { - return m_lineint_line.set_callback(std::forward(cb)); - } + auto keyint_cb() { return m_keyint_line.bind(); } + auto lineint_cb() { return m_lineint_line.bind(); } protected: // device-level overrides @@ -86,10 +80,4 @@ private: DECLARE_DEVICE_TYPE(ASR733, asr733_device) -#define MCFG_ASR733_KEYINT_HANDLER( _intcallb ) \ - downcast(*device).set_keyint_callback(DEVCB_##_intcallb); - -#define MCFG_ASR733_LINEINT_HANDLER( _intcallb ) \ - downcast(*device).set_lineint_callback(DEVCB_##_intcallb); - #endif // MAME_VIDEO_733_ASR diff --git a/src/mame/video/911_vdt.h b/src/mame/video/911_vdt.h index b92c0a9d748..fdbf0c8fb4f 100644 --- a/src/mame/video/911_vdt.h +++ b/src/mame/video/911_vdt.h @@ -59,6 +59,9 @@ public: return m_lineint_line.set_callback(std::forward(cb)); } + auto keyint_cb() { return m_keyint_line.bind(); } + auto lineint_cb() { return m_lineint_line.bind(); } + protected: // device-level overrides void device_start() override; @@ -114,10 +117,4 @@ private: DECLARE_DEVICE_TYPE(VDT911, vdt911_device) -#define MCFG_VDT911_KEYINT_HANDLER( _intcallb ) \ - downcast(*device).set_keyint_callback(DEVCB_##_intcallb); - -#define MCFG_VDT911_LINEINT_HANDLER( _intcallb ) \ - downcast(*device).set_lineint_callback(DEVCB_##_intcallb); - #endif // MAME_VIDEO_911_VDT_H