ti9x: Various MCFG removals. (nw)

This commit is contained in:
Michael Zapf 2018-08-21 20:04:41 +02:00
parent 71da8e2ae2
commit 6bf57e9b14
16 changed files with 89 additions and 148 deletions

View File

@ -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<bus::ti99::internal::video992_device &>(*device).set_readmem_callback(DEVCB_##_devcb);
#define MCFG_VIDEO992_HOLD_CB(_devcb) \
downcast<bus::ti99::internal::video992_device &>(*device).set_hold_callback(DEVCB_##_devcb);
#define MCFG_VIDEO992_INT_CB(_devcb) \
downcast<bus::ti99::internal::video992_device &>(*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)

View File

@ -18,7 +18,7 @@ public:
DECLARE_READ8_MEMBER( cru_r );
DECLARE_WRITE8_MEMBER( cru_w );
template <class Object> devcb_base &set_int_callback(Object &&cb) { return m_int_line.set_callback(std::forward<Object>(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<fd800_legacy_device &>(*device).set_int_callback(DEVCB_##_intcallb);
#endif // MAME_BUS_TI99X_990_DK_H

View File

@ -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<ti990_hdc_device &>(*device).set_int_callback(DEVCB_##_write);
DECLARE_DEVICE_TYPE(TI990_HDC, ti990_hdc_device)
#endif // MAME_BUS_TI99X_990_HD_H

View File

@ -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 <class Object> devcb_base &set_int_callback(Object &&cb) { return m_int_line.set_callback(std::forward<Object>(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<tap_990_device &>(*device).set_int_callback(DEVCB_##_intcallb);
#endif // MAME_BUS_TI99X_990_TAP_H

View File

@ -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<mfm_harddisk_connector *>(device)->configure(_enc, _spinupms, _cache, _format);
#endif // MAME_DEVICES_IMAGEDEV_MFMHD_H

View File

@ -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

View File

@ -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

View File

@ -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<tmc0430_device &>(*device).set_region_and_ident("groms", 0x0000, 0);
MCFG_DEVICE_ADD("grom4", TMC0430, 3120000 / 8)
downcast<tmc0430_device &>(*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)

View File

@ -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

View File

@ -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
/*

View File

@ -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");
}
/*

View File

@ -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"

View File

@ -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

View File

@ -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)

View File

@ -24,14 +24,8 @@ public:
DECLARE_READ8_MEMBER(cru_r);
DECLARE_WRITE8_MEMBER(cru_w);
template <class Object> devcb_base &set_keyint_callback(Object &&cb)
{
return m_keyint_line.set_callback(std::forward<Object>(cb));
}
template <class Object> devcb_base &set_lineint_callback(Object &&cb)
{
return m_lineint_line.set_callback(std::forward<Object>(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<asr733_device &>(*device).set_keyint_callback(DEVCB_##_intcallb);
#define MCFG_ASR733_LINEINT_HANDLER( _intcallb ) \
downcast<asr733_device &>(*device).set_lineint_callback(DEVCB_##_intcallb);
#endif // MAME_VIDEO_733_ASR

View File

@ -59,6 +59,9 @@ public:
return m_lineint_line.set_callback(std::forward<Object>(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<vdt911_device &>(*device).set_keyint_callback(DEVCB_##_intcallb);
#define MCFG_VDT911_LINEINT_HANDLER( _intcallb ) \
downcast<vdt911_device &>(*device).set_lineint_callback(DEVCB_##_intcallb);
#endif // MAME_VIDEO_911_VDT_H