mirror of
https://github.com/holub/mame
synced 2025-04-23 00:39:36 +03:00
ti9x: Various MCFG removals. (nw)
This commit is contained in:
parent
71da8e2ae2
commit
6bf57e9b14
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
||||
|
||||
|
@ -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
|
||||
|
||||
/*
|
||||
|
@ -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");
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -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"
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user