mirror of
https://github.com/holub/mame
synced 2025-07-04 09:28:51 +03:00
-bus/apricot/expansion/expansion, bus/isbx, cpu/i8086, cpu/i8089, : Removed MCFG macros. [Ryan Holtz]
-a7150, altos8600, apricot, fanucspmg, isbc, machine/isbc_215g: Removed MACHINE_CONFIG macros. [Ryan Holtz]
This commit is contained in:
parent
8a44816c06
commit
e36bad6f40
@ -68,7 +68,9 @@ apricot_expansion_bus_device::apricot_expansion_bus_device(const machine_config
|
|||||||
m_ext1_handler(*this),
|
m_ext1_handler(*this),
|
||||||
m_ext2_handler(*this),
|
m_ext2_handler(*this),
|
||||||
m_int2_handler(*this),
|
m_int2_handler(*this),
|
||||||
m_int3_handler(*this), m_cpu_tag(nullptr), m_iop_tag(nullptr)
|
m_int3_handler(*this),
|
||||||
|
m_cpu(*this, finder_base::DUMMY_TAG),
|
||||||
|
m_iop(*this, finder_base::DUMMY_TAG)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -102,13 +104,11 @@ void apricot_expansion_bus_device::device_start()
|
|||||||
|
|
||||||
void apricot_expansion_bus_device::device_reset()
|
void apricot_expansion_bus_device::device_reset()
|
||||||
{
|
{
|
||||||
cpu_device *cpu = m_owner->subdevice<cpu_device>(m_cpu_tag);
|
m_program = &m_cpu->space(AS_PROGRAM);
|
||||||
m_program = &cpu->space(AS_PROGRAM);
|
m_io = &m_cpu->space(AS_IO);
|
||||||
m_io = &cpu->space(AS_IO);
|
|
||||||
|
|
||||||
cpu_device *iop = m_owner->subdevice<cpu_device>(m_iop_tag);
|
m_program_iop = &m_iop->space(AS_PROGRAM);
|
||||||
m_program_iop = &iop->space(AS_PROGRAM);
|
m_io_iop = &m_iop->space(AS_IO);
|
||||||
m_io_iop = &iop->space(AS_IO);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
|
@ -47,41 +47,6 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//**************************************************************************
|
|
||||||
// INTERFACE CONFIGURATION MACROS
|
|
||||||
//**************************************************************************
|
|
||||||
|
|
||||||
#define MCFG_EXPANSION_ADD(_tag, _cpu_tag) \
|
|
||||||
MCFG_DEVICE_ADD(_tag, APRICOT_EXPANSION_BUS, 0) \
|
|
||||||
downcast<apricot_expansion_bus_device &>(*device).set_cpu_tag(this, _cpu_tag);
|
|
||||||
|
|
||||||
#define MCFG_EXPANSION_IOP_ADD(_tag) \
|
|
||||||
downcast<apricot_expansion_bus_device &>(*device).set_iop_tag(this, _tag);
|
|
||||||
|
|
||||||
#define MCFG_EXPANSION_SLOT_ADD(_tag, _slot_intf, _def_slot) \
|
|
||||||
MCFG_DEVICE_ADD(_tag, APRICOT_EXPANSION_SLOT, 0) \
|
|
||||||
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false)
|
|
||||||
|
|
||||||
#define MCFG_EXPANSION_DMA1_HANDLER(_devcb) \
|
|
||||||
downcast<apricot_expansion_bus_device &>(*device).set_dma1_handler(DEVCB_##_devcb);
|
|
||||||
|
|
||||||
#define MCFG_EXPANSION_DMA2_HANDLER(_devcb) \
|
|
||||||
downcast<apricot_expansion_bus_device &>(*device).set_dma2_handler(DEVCB_##_devcb);
|
|
||||||
|
|
||||||
#define MCFG_EXPANSION_EXT1_HANDLER(_devcb) \
|
|
||||||
downcast<apricot_expansion_bus_device &>(*device).set_ext1_handler(DEVCB_##_devcb);
|
|
||||||
|
|
||||||
#define MCFG_EXPANSION_EXT2_HANDLER(_devcb) \
|
|
||||||
downcast<apricot_expansion_bus_device &>(*device).set_ext2_handler(DEVCB_##_devcb);
|
|
||||||
|
|
||||||
#define MCFG_EXPANSION_INT2_HANDLER(_devcb) \
|
|
||||||
downcast<apricot_expansion_bus_device &>(*device).set_int2_handler(DEVCB_##_devcb);
|
|
||||||
|
|
||||||
#define MCFG_EXPANSION_INT3_HANDLER(_devcb) \
|
|
||||||
downcast<apricot_expansion_bus_device &>(*device).set_int3_handler(DEVCB_##_devcb);
|
|
||||||
|
|
||||||
|
|
||||||
//**************************************************************************
|
//**************************************************************************
|
||||||
// TYPE DEFINITIONS
|
// TYPE DEFINITIONS
|
||||||
//**************************************************************************
|
//**************************************************************************
|
||||||
@ -96,6 +61,15 @@ class apricot_expansion_slot_device : public device_t, public device_slot_interf
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
// construction/destruction
|
// construction/destruction
|
||||||
|
template <typename T>
|
||||||
|
apricot_expansion_slot_device(machine_config const &mconfig, char const *tag, device_t *owner, T &&opts, char const *dflt)
|
||||||
|
: apricot_expansion_slot_device(mconfig, tag, owner, (uint32_t)0)
|
||||||
|
{
|
||||||
|
option_reset();
|
||||||
|
opts(*this);
|
||||||
|
set_default_option(dflt);
|
||||||
|
set_fixed(false);
|
||||||
|
}
|
||||||
apricot_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
apricot_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
@ -115,19 +89,22 @@ class apricot_expansion_bus_device : public device_t
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
// construction/destruction
|
// construction/destruction
|
||||||
|
template <typename T, typename U>
|
||||||
|
apricot_expansion_bus_device(const machine_config &mconfig, const char *tag, device_t *owner, T &&cpu_tag, U &&iop_tag)
|
||||||
|
: apricot_expansion_bus_device(mconfig, tag, owner, (uint32_t)0)
|
||||||
|
{
|
||||||
|
m_cpu.set_tag(std::forward<T>(cpu_tag));
|
||||||
|
m_iop.set_tag(std::forward<U>(iop_tag));
|
||||||
|
}
|
||||||
apricot_expansion_bus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
apricot_expansion_bus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||||
virtual ~apricot_expansion_bus_device();
|
virtual ~apricot_expansion_bus_device();
|
||||||
|
|
||||||
template <class Object> devcb_base &set_dma1_handler(Object &&cb) { return m_dma1_handler.set_callback(std::forward<Object>(cb)); }
|
auto dma1() { return m_dma1_handler.bind(); }
|
||||||
template <class Object> devcb_base &set_dma2_handler(Object &&cb) { return m_dma2_handler.set_callback(std::forward<Object>(cb)); }
|
auto dma2() { return m_dma2_handler.bind(); }
|
||||||
template <class Object> devcb_base &set_ext1_handler(Object &&cb) { return m_ext1_handler.set_callback(std::forward<Object>(cb)); }
|
auto ext1() { return m_ext1_handler.bind(); }
|
||||||
template <class Object> devcb_base &set_ext2_handler(Object &&cb) { return m_ext2_handler.set_callback(std::forward<Object>(cb)); }
|
auto ext2() { return m_ext2_handler.bind(); }
|
||||||
template <class Object> devcb_base &set_int2_handler(Object &&cb) { return m_int2_handler.set_callback(std::forward<Object>(cb)); }
|
auto int2() { return m_int2_handler.bind(); }
|
||||||
template <class Object> devcb_base &set_int3_handler(Object &&cb) { return m_int3_handler.set_callback(std::forward<Object>(cb)); }
|
auto int3() { return m_int3_handler.bind(); }
|
||||||
|
|
||||||
// inline configuration
|
|
||||||
void set_cpu_tag(device_t *owner, const char *tag) { m_cpu_tag = tag; }
|
|
||||||
void set_iop_tag(device_t *owner, const char *tag) { m_iop_tag = tag; }
|
|
||||||
|
|
||||||
void add_card(device_apricot_expansion_card_interface *card);
|
void add_card(device_apricot_expansion_card_interface *card);
|
||||||
|
|
||||||
@ -163,8 +140,8 @@ private:
|
|||||||
devcb_write_line m_int3_handler;
|
devcb_write_line m_int3_handler;
|
||||||
|
|
||||||
// configuration
|
// configuration
|
||||||
const char *m_cpu_tag;
|
required_device<cpu_device> m_cpu;
|
||||||
const char *m_iop_tag;
|
required_device<cpu_device> m_iop;
|
||||||
};
|
};
|
||||||
|
|
||||||
// device type definition
|
// device type definition
|
||||||
|
@ -36,32 +36,6 @@
|
|||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//**************************************************************************
|
|
||||||
// INTERFACE CONFIGURATION MACROS
|
|
||||||
//**************************************************************************
|
|
||||||
|
|
||||||
#define MCFG_ISBX_SLOT_ADD(_tag, _clock, _slot_intf, _def_slot) \
|
|
||||||
MCFG_DEVICE_ADD(_tag, ISBX_SLOT, _clock) \
|
|
||||||
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false)
|
|
||||||
|
|
||||||
|
|
||||||
#define MCFG_ISBX_SLOT_MINTR0_CALLBACK(_mintr0) \
|
|
||||||
downcast<isbx_slot_device *>(device)->set_mintr0_callback(DEVCB_##_mintr0);
|
|
||||||
|
|
||||||
#define MCFG_ISBX_SLOT_MINTR1_CALLBACK(_mintr1) \
|
|
||||||
downcast<isbx_slot_device *>(device)->set_mintr1_callback(DEVCB_##_mintr1);
|
|
||||||
|
|
||||||
#define MCFG_ISBX_SLOT_MDRQT_CALLBACK(_mdrqt) \
|
|
||||||
downcast<isbx_slot_device *>(device)->set_mdrqt_callback(DEVCB_##_mdrqt);
|
|
||||||
|
|
||||||
#define MCFG_ISBX_SLOT_MWAIT_CALLBACK(_mwait) \
|
|
||||||
downcast<isbx_slot_device *>(device)->set_mwait_callback(DEVCB_##_mwait);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//**************************************************************************
|
//**************************************************************************
|
||||||
// TYPE DEFINITIONS
|
// TYPE DEFINITIONS
|
||||||
//**************************************************************************
|
//**************************************************************************
|
||||||
@ -101,12 +75,21 @@ class isbx_slot_device : public device_t,
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
// construction/destruction
|
// construction/destruction
|
||||||
|
template <typename T>
|
||||||
|
isbx_slot_device(machine_config const &mconfig, char const *tag, device_t *owner, uint32_t clock, T &&opts, char const *dflt)
|
||||||
|
: isbx_slot_device(mconfig, tag, owner, clock)
|
||||||
|
{
|
||||||
|
option_reset();
|
||||||
|
opts(*this);
|
||||||
|
set_default_option(dflt);
|
||||||
|
set_fixed(false);
|
||||||
|
}
|
||||||
isbx_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
isbx_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||||
|
|
||||||
template <class Object> void set_mintr0_callback(Object &&cb) { m_write_mintr0.set_callback(std::forward<Object>(cb)); }
|
auto mintr0() { return m_write_mintr0.bind(); }
|
||||||
template <class Object> void set_mintr1_callback(Object &&cb) { m_write_mintr1.set_callback(std::forward<Object>(cb)); }
|
auto mintr1() { return m_write_mintr1.bind(); }
|
||||||
template <class Object> void set_mdrqt_callback(Object &&cb) { m_write_mdrqt.set_callback(std::forward<Object>(cb)); }
|
auto mdrqt() { return m_write_mdrqt.bind(); }
|
||||||
template <class Object> void set_mwait_callback(Object &&cb) { m_write_mwait.set_callback(std::forward<Object>(cb)); }
|
auto mwait() { return m_write_mwait.bind(); }
|
||||||
|
|
||||||
// computer interface
|
// computer interface
|
||||||
DECLARE_READ8_MEMBER( mcs0_r ) { return m_card ? m_card->mcs0_r(space, offset) : 0xff; }
|
DECLARE_READ8_MEMBER( mcs0_r ) { return m_card ? m_card->mcs0_r(space, offset) : 0xff; }
|
||||||
|
@ -208,12 +208,11 @@ void i8089_device::state_string_export(const device_state_entry &entry, std::str
|
|||||||
// device_add_mconfig - add device configuration
|
// device_add_mconfig - add device configuration
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
|
|
||||||
MACHINE_CONFIG_START(i8089_device::device_add_mconfig)
|
void i8089_device::device_add_mconfig(machine_config &config)
|
||||||
MCFG_I8089_CHANNEL_ADD("1")
|
{
|
||||||
MCFG_I8089_CHANNEL_SINTR(WRITELINE(*this, i8089_device, ch1_sintr_w))
|
I8089_CHANNEL(config, m_ch1, 0).sintr().set(FUNC(i8089_device::ch1_sintr_w));
|
||||||
MCFG_I8089_CHANNEL_ADD("2")
|
I8089_CHANNEL(config, m_ch2, 0).sintr().set(FUNC(i8089_device::ch2_sintr_w));
|
||||||
MCFG_I8089_CHANNEL_SINTR(WRITELINE(*this, i8089_device, ch2_sintr_w))
|
}
|
||||||
MACHINE_CONFIG_END
|
|
||||||
|
|
||||||
|
|
||||||
//**************************************************************************
|
//**************************************************************************
|
||||||
|
@ -18,20 +18,6 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
//**************************************************************************
|
|
||||||
// INTERFACE CONFIGURATION MACROS
|
|
||||||
//**************************************************************************
|
|
||||||
|
|
||||||
#define MCFG_I8089_DATA_WIDTH(_data_width) \
|
|
||||||
downcast<i8089_device &>(*device).set_data_width(_data_width);
|
|
||||||
|
|
||||||
#define MCFG_I8089_SINTR1(_sintr1) \
|
|
||||||
downcast<i8089_device *>(device)->set_sintr1_callback(DEVCB_##_sintr1);
|
|
||||||
|
|
||||||
#define MCFG_I8089_SINTR2(_sintr2) \
|
|
||||||
downcast<i8089_device *>(device)->set_sintr2_callback(DEVCB_##_sintr2);
|
|
||||||
|
|
||||||
|
|
||||||
//**************************************************************************
|
//**************************************************************************
|
||||||
// TYPE DEFINITIONS
|
// TYPE DEFINITIONS
|
||||||
//**************************************************************************
|
//**************************************************************************
|
||||||
@ -50,8 +36,8 @@ public:
|
|||||||
i8089_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
i8089_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||||
|
|
||||||
// callbacks
|
// callbacks
|
||||||
template <class Object> devcb_base &set_sintr1_callback(Object &&sintr1) { return m_write_sintr1.set_callback(std::forward<Object>(sintr1)); }
|
auto sintr1() { return m_write_sintr1.bind(); }
|
||||||
template <class Object> devcb_base &set_sintr2_callback(Object &&sintr2) { return m_write_sintr2.set_callback(std::forward<Object>(sintr2)); }
|
auto sintr2() { return m_write_sintr2.bind(); }
|
||||||
|
|
||||||
// configuration helpers
|
// configuration helpers
|
||||||
void set_data_width(uint8_t data_width) { m_data_width = data_width; }
|
void set_data_width(uint8_t data_width) { m_data_width = data_width; }
|
||||||
|
@ -461,7 +461,7 @@ int i8089_channel_device::execute_run()
|
|||||||
{
|
{
|
||||||
case 0: nop(); break;
|
case 0: nop(); break;
|
||||||
case 1: invalid(opc); break;
|
case 1: invalid(opc); break;
|
||||||
case 2: sintr(); break;
|
case 2: do_sintr(); break;
|
||||||
case 3: xfer(); break;
|
case 3: xfer(); break;
|
||||||
default: wid(BIT(brp, 1), BIT(brp, 0));
|
default: wid(BIT(brp, 1), BIT(brp, 0));
|
||||||
}
|
}
|
||||||
|
@ -14,17 +14,6 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
|
||||||
//**************************************************************************
|
|
||||||
// INTERFACE CONFIGURATION MACROS
|
|
||||||
//**************************************************************************
|
|
||||||
|
|
||||||
#define MCFG_I8089_CHANNEL_ADD(_tag) \
|
|
||||||
MCFG_DEVICE_ADD(_tag, I8089_CHANNEL, 0)
|
|
||||||
|
|
||||||
#define MCFG_I8089_CHANNEL_SINTR(_sintr) \
|
|
||||||
downcast<i8089_channel_device *>(device)->set_sintr_callback(DEVCB_##_sintr);
|
|
||||||
|
|
||||||
|
|
||||||
//**************************************************************************
|
//**************************************************************************
|
||||||
// TYPE DEFINITIONS
|
// TYPE DEFINITIONS
|
||||||
//**************************************************************************
|
//**************************************************************************
|
||||||
@ -38,7 +27,7 @@ public:
|
|||||||
// construction/destruction
|
// construction/destruction
|
||||||
i8089_channel_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
i8089_channel_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||||
|
|
||||||
template <class Object> void set_sintr_callback(Object &&sintr) { m_write_sintr.set_callback(std::forward<Object>(sintr)); }
|
auto sintr() { return m_write_sintr.bind(); }
|
||||||
|
|
||||||
// set register
|
// set register
|
||||||
void set_reg(int reg, uint32_t value, int tag = -1);
|
void set_reg(int reg, uint32_t value, int tag = -1);
|
||||||
@ -157,7 +146,7 @@ private:
|
|||||||
void ori_ri(int r, int16_t i);
|
void ori_ri(int r, int16_t i);
|
||||||
void ori_mi(int m, int16_t i, int o);
|
void ori_mi(int m, int16_t i, int o);
|
||||||
void setb(int m, int b, int o);
|
void setb(int m, int b, int o);
|
||||||
void sintr();
|
void do_sintr();
|
||||||
void tsl(int m, int8_t i, int8_t d, int o);
|
void tsl(int m, int8_t i, int8_t d, int o);
|
||||||
void wid(int s, int d);
|
void wid(int s, int d);
|
||||||
void xfer();
|
void xfer();
|
||||||
|
@ -378,7 +378,7 @@ void i8089_channel_device::setb(int m, int b, int o)
|
|||||||
|
|
||||||
|
|
||||||
// set interrupt service flip-flop
|
// set interrupt service flip-flop
|
||||||
void i8089_channel_device::sintr()
|
void i8089_channel_device::do_sintr()
|
||||||
{
|
{
|
||||||
if (BIT(m_r[PSW].w, 4))
|
if (BIT(m_r[PSW].w, 4))
|
||||||
{
|
{
|
||||||
|
@ -16,27 +16,6 @@ DECLARE_DEVICE_TYPE(I8088, i8088_cpu_device)
|
|||||||
#define INPUT_LINE_TEST 20
|
#define INPUT_LINE_TEST 20
|
||||||
|
|
||||||
|
|
||||||
#define MCFG_I8086_LOCK_HANDLER(_write) \
|
|
||||||
downcast<i8086_common_cpu_device &>(*device).set_lock_handler(DEVCB_##_write);
|
|
||||||
|
|
||||||
#define MCFG_I8086_IF_HANDLER(_write) \
|
|
||||||
downcast<i8086_cpu_device &>(*device).set_if_handler(DEVCB_##_write);
|
|
||||||
|
|
||||||
#define MCFG_I8086_STACK_MAP(map) \
|
|
||||||
MCFG_DEVICE_ADDRESS_MAP(i8086_cpu_device::AS_STACK, map)
|
|
||||||
|
|
||||||
#define MCFG_I8086_CODE_MAP(map) \
|
|
||||||
MCFG_DEVICE_ADDRESS_MAP(i8086_cpu_device::AS_CODE, map)
|
|
||||||
|
|
||||||
#define MCFG_I8086_EXTRA_MAP(map) \
|
|
||||||
MCFG_DEVICE_ADDRESS_MAP(i8086_cpu_device::AS_EXTRA, map)
|
|
||||||
|
|
||||||
#define MCFG_I8086_ESC_OPCODE_HANDLER(_write) \
|
|
||||||
downcast<i8086_cpu_device &>(*device).set_esc_opcode_handler(DEVCB_##_write);
|
|
||||||
|
|
||||||
#define MCFG_I8086_ESC_DATA_HANDLER(_write) \
|
|
||||||
downcast<i8086_cpu_device &>(*device).set_esc_data_handler(DEVCB_##_write);
|
|
||||||
|
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
I8086_PC = STATE_GENPC,
|
I8086_PC = STATE_GENPC,
|
||||||
@ -49,7 +28,7 @@ enum
|
|||||||
class i8086_common_cpu_device : public cpu_device, public i386_disassembler::config
|
class i8086_common_cpu_device : public cpu_device, public i386_disassembler::config
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
template <class Object> devcb_base &set_lock_handler(Object &&cb) { return m_lock_handler.set_callback(std::forward<Object>(cb)); }
|
auto lock_handler() { return m_lock_handler.bind(); }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
enum
|
enum
|
||||||
@ -366,9 +345,6 @@ public:
|
|||||||
|
|
||||||
// device_memory_interface overrides
|
// device_memory_interface overrides
|
||||||
virtual space_config_vector memory_space_config() const override;
|
virtual space_config_vector memory_space_config() const override;
|
||||||
template <class Object> devcb_base &set_if_handler(Object &&cb) { return m_out_if_func.set_callback(std::forward<Object>(cb)); }
|
|
||||||
template <class Object> devcb_base &set_esc_opcode_handler(Object &&cb) { return m_esc_opcode_handler.set_callback(std::forward<Object>(cb)); }
|
|
||||||
template <class Object> devcb_base &set_esc_data_handler(Object &&cb) { return m_esc_data_handler.set_callback(std::forward<Object>(cb)); }
|
|
||||||
auto if_handler() { return m_out_if_func.bind(); }
|
auto if_handler() { return m_out_if_func.bind(); }
|
||||||
auto esc_opcode_handler() { return m_esc_opcode_handler.bind(); }
|
auto esc_opcode_handler() { return m_esc_opcode_handler.bind(); }
|
||||||
auto esc_data_handler() { return m_esc_data_handler.bind(); }
|
auto esc_data_handler() { return m_esc_data_handler.bind(); }
|
||||||
|
@ -96,7 +96,7 @@ private:
|
|||||||
uint32_t screen_update_k7072(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
uint32_t screen_update_k7072(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||||
void screen_eof(screen_device &screen, bool state);
|
void screen_eof(screen_device &screen, bool state);
|
||||||
|
|
||||||
required_device<cpu_device> m_maincpu;
|
required_device<i8086_cpu_device> m_maincpu;
|
||||||
required_device<i8251_device> m_uart8251;
|
required_device<i8251_device> m_uart8251;
|
||||||
required_device<pit8253_device> m_pit8253;
|
required_device<pit8253_device> m_pit8253;
|
||||||
required_device<pic8259_device> m_pic8259;
|
required_device<pic8259_device> m_pic8259;
|
||||||
@ -465,13 +465,14 @@ static const z80_daisy_config k7070_daisy_chain[] =
|
|||||||
*
|
*
|
||||||
* (framebuffer and terminal should be slot devices.)
|
* (framebuffer and terminal should be slot devices.)
|
||||||
*/
|
*/
|
||||||
MACHINE_CONFIG_START(a7150_state::a7150)
|
void a7150_state::a7150(machine_config &config)
|
||||||
MCFG_DEVICE_ADD("maincpu", I8086, XTAL(9'832'000)/2)
|
{
|
||||||
MCFG_DEVICE_PROGRAM_MAP(a7150_mem)
|
I8086(config, m_maincpu, XTAL(9'832'000)/2);
|
||||||
MCFG_DEVICE_IO_MAP(a7150_io)
|
m_maincpu->set_addrmap(AS_PROGRAM, &a7150_state::a7150_mem);
|
||||||
MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic8259", pic8259_device, inta_cb)
|
m_maincpu->set_addrmap(AS_IO, &a7150_state::a7150_io);
|
||||||
MCFG_I8086_ESC_OPCODE_HANDLER(WRITE32("i8087", i8087_device, insn_w))
|
m_maincpu->set_irq_acknowledge_callback("pic8259", FUNC(pic8259_device::inta_cb));
|
||||||
MCFG_I8086_ESC_DATA_HANDLER(WRITE32("i8087", i8087_device, addr_w))
|
m_maincpu->esc_opcode_handler().set("i8087", FUNC(i8087_device::insn_w));
|
||||||
|
m_maincpu->esc_data_handler().set("i8087", FUNC(i8087_device::addr_w));
|
||||||
|
|
||||||
i8087_device &i8087(I8087(config, "i8087", XTAL(9'832'000)/2));
|
i8087_device &i8087(I8087(config, "i8087", XTAL(9'832'000)/2));
|
||||||
i8087.set_addrmap(AS_PROGRAM, &a7150_state::a7150_mem);
|
i8087.set_addrmap(AS_PROGRAM, &a7150_state::a7150_mem);
|
||||||
@ -555,12 +556,14 @@ MACHINE_CONFIG_START(a7150_state::a7150)
|
|||||||
rs232_port_device &rs232b(RS232_PORT(config, RS232_B_TAG, default_rs232_devices, "loopback"));
|
rs232_port_device &rs232b(RS232_PORT(config, RS232_B_TAG, default_rs232_devices, "loopback"));
|
||||||
rs232b.rxd_handler().set(Z80SIO_TAG, FUNC(z80sio_device::rxb_w));
|
rs232b.rxd_handler().set(Z80SIO_TAG, FUNC(z80sio_device::rxb_w));
|
||||||
|
|
||||||
MCFG_SCREEN_ADD_MONOCHROME("screen", RASTER, rgb_t::green())
|
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
|
||||||
MCFG_SCREEN_RAW_PARAMS( XTAL(16'000'000), 737,0,640, 431,0,400 )
|
screen.set_color(rgb_t::green());
|
||||||
MCFG_SCREEN_UPDATE_DRIVER(a7150_state, screen_update_k7072)
|
screen.set_raw(XTAL(16'000'000), 737,0,640, 431,0,400);
|
||||||
MCFG_SCREEN_PALETTE("palette")
|
screen.set_screen_update(FUNC(a7150_state::screen_update_k7072));
|
||||||
MCFG_PALETTE_ADD_MONOCHROME("palette")
|
screen.set_palette(m_palette);
|
||||||
MACHINE_CONFIG_END
|
|
||||||
|
PALETTE(config, m_palette, 2).set_init("palette", FUNC(palette_device::palette_init_monochrome));
|
||||||
|
}
|
||||||
|
|
||||||
/* ROM definition */
|
/* ROM definition */
|
||||||
ROM_START( a7150 )
|
ROM_START( a7150 )
|
||||||
|
@ -721,23 +721,24 @@ static void altos8600_floppies(device_slot_interface &device)
|
|||||||
device.option_add("8dd", FLOPPY_8_DSDD);
|
device.option_add("8dd", FLOPPY_8_DSDD);
|
||||||
}
|
}
|
||||||
|
|
||||||
MACHINE_CONFIG_START(altos8600_state::altos8600)
|
void altos8600_state::altos8600(machine_config &config)
|
||||||
MCFG_DEVICE_ADD(m_maincpu, I8086, 5_MHz_XTAL)
|
{
|
||||||
MCFG_DEVICE_PROGRAM_MAP(cpu_mem)
|
I8086(config, m_maincpu, 5_MHz_XTAL);
|
||||||
MCFG_DEVICE_IO_MAP(cpu_io)
|
m_maincpu->set_addrmap(AS_PROGRAM, &altos8600_state::cpu_mem);
|
||||||
MCFG_DEVICE_OPCODES_MAP(code_mem)
|
m_maincpu->set_addrmap(AS_IO, &altos8600_state::cpu_io);
|
||||||
MCFG_I8086_STACK_MAP(stack_mem)
|
m_maincpu->set_addrmap(AS_OPCODES, &altos8600_state::code_mem);
|
||||||
MCFG_I8086_CODE_MAP(code_mem)
|
m_maincpu->set_addrmap(i8086_cpu_device::AS_STACK, &altos8600_state::stack_mem);
|
||||||
MCFG_I8086_EXTRA_MAP(extra_mem)
|
m_maincpu->set_addrmap(i8086_cpu_device::AS_CODE, &altos8600_state::code_mem);
|
||||||
MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(altos8600_state, inta)
|
m_maincpu->set_addrmap(i8086_cpu_device::AS_EXTRA, &altos8600_state::extra_mem);
|
||||||
MCFG_I8086_IF_HANDLER(WRITELINE(*this, altos8600_state, cpuif_w))
|
m_maincpu->set_irq_acknowledge_callback(FUNC(altos8600_state::inta));
|
||||||
|
m_maincpu->if_handler().set(FUNC(altos8600_state::cpuif_w));
|
||||||
|
|
||||||
MCFG_DEVICE_ADD(m_dmac, I8089, 5_MHz_XTAL)
|
I8089(config, m_dmac, 5_MHz_XTAL);
|
||||||
MCFG_DEVICE_PROGRAM_MAP(dmac_mem)
|
m_dmac->set_addrmap(AS_PROGRAM, &altos8600_state::dmac_mem);
|
||||||
MCFG_DEVICE_IO_MAP(dmac_io)
|
m_dmac->set_addrmap(AS_IO, &altos8600_state::dmac_io);
|
||||||
MCFG_I8089_DATA_WIDTH(16)
|
m_dmac->set_data_width(16);
|
||||||
MCFG_I8089_SINTR1(WRITELINE(*this, altos8600_state, sintr1_w))
|
m_dmac->sintr1().set(FUNC(altos8600_state::sintr1_w));
|
||||||
MCFG_I8089_SINTR2(WRITELINE(m_pic[1], pic8259_device, ir4_w))
|
m_dmac->sintr2().set(m_pic[1], FUNC(pic8259_device::ir4_w));
|
||||||
|
|
||||||
PIC8259(config, m_pic[0], 0);
|
PIC8259(config, m_pic[0], 0);
|
||||||
m_pic[0]->out_int_callback().set_inputline(m_maincpu, 0);
|
m_pic[0]->out_int_callback().set_inputline(m_maincpu, 0);
|
||||||
@ -787,18 +788,18 @@ MACHINE_CONFIG_START(altos8600_state::altos8600)
|
|||||||
FD1797(config, m_fdc, 2000000);
|
FD1797(config, m_fdc, 2000000);
|
||||||
m_fdc->intrq_wr_callback().set(m_pic[1], FUNC(pic8259_device::ir1_w));
|
m_fdc->intrq_wr_callback().set(m_pic[1], FUNC(pic8259_device::ir1_w));
|
||||||
m_fdc->drq_wr_callback().set(FUNC(altos8600_state::fddrq_w));
|
m_fdc->drq_wr_callback().set(FUNC(altos8600_state::fddrq_w));
|
||||||
MCFG_FLOPPY_DRIVE_ADD("fd1797:0", altos8600_floppies, "8dd", floppy_image_device::default_floppy_formats)
|
FLOPPY_CONNECTOR(config, "fd1797:0", altos8600_floppies, "8dd", floppy_image_device::default_floppy_formats);
|
||||||
MCFG_FLOPPY_DRIVE_ADD("fd1797:1", altos8600_floppies, "8dd", floppy_image_device::default_floppy_formats)
|
FLOPPY_CONNECTOR(config, "fd1797:1", altos8600_floppies, "8dd", floppy_image_device::default_floppy_formats);
|
||||||
MCFG_FLOPPY_DRIVE_ADD("fd1797:2", altos8600_floppies, "8dd", floppy_image_device::default_floppy_formats)
|
FLOPPY_CONNECTOR(config, "fd1797:2", altos8600_floppies, "8dd", floppy_image_device::default_floppy_formats);
|
||||||
MCFG_FLOPPY_DRIVE_ADD("fd1797:3", altos8600_floppies, "8dd", floppy_image_device::default_floppy_formats)
|
FLOPPY_CONNECTOR(config, "fd1797:3", altos8600_floppies, "8dd", floppy_image_device::default_floppy_formats);
|
||||||
|
|
||||||
ACS8600_ICS(config, m_ics, 0);
|
ACS8600_ICS(config, m_ics, 0);
|
||||||
m_ics->set_host_space(m_dmac, AS_PROGRAM); // TODO: fixme
|
m_ics->set_host_space(m_dmac, AS_PROGRAM); // TODO: fixme
|
||||||
m_ics->irq1_callback().set(m_pic[0], FUNC(pic8259_device::ir5_w));
|
m_ics->irq1_callback().set(m_pic[0], FUNC(pic8259_device::ir5_w));
|
||||||
m_ics->irq2_callback().set(m_pic[0], FUNC(pic8259_device::ir6_w));
|
m_ics->irq2_callback().set(m_pic[0], FUNC(pic8259_device::ir6_w));
|
||||||
|
|
||||||
MCFG_HARDDISK_ADD("hdd")
|
HARDDISK(config, "hdd", 0);
|
||||||
MACHINE_CONFIG_END
|
}
|
||||||
|
|
||||||
ROM_START(altos8600)
|
ROM_START(altos8600)
|
||||||
ROM_REGION(0x2000, "bios", 0)
|
ROM_REGION(0x2000, "bios", 0)
|
||||||
|
@ -357,33 +357,36 @@ void apricot_state::apricot_io(address_map &map)
|
|||||||
// MACHINE DRIVERS
|
// MACHINE DRIVERS
|
||||||
//**************************************************************************
|
//**************************************************************************
|
||||||
|
|
||||||
MACHINE_CONFIG_START(apricot_state::apricot)
|
void apricot_state::apricot(machine_config &config)
|
||||||
|
{
|
||||||
// main cpu
|
// main cpu
|
||||||
MCFG_DEVICE_ADD("ic91", I8086, 15_MHz_XTAL / 3)
|
I8086(config, m_cpu, 15_MHz_XTAL / 3);
|
||||||
MCFG_DEVICE_PROGRAM_MAP(apricot_mem)
|
m_cpu->set_addrmap(AS_PROGRAM, &apricot_state::apricot_mem);
|
||||||
MCFG_DEVICE_IO_MAP(apricot_io)
|
m_cpu->set_addrmap(AS_IO, &apricot_state::apricot_io);
|
||||||
MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("ic31", pic8259_device, inta_cb)
|
m_cpu->set_irq_acknowledge_callback("ic31", FUNC(pic8259_device::inta_cb));
|
||||||
MCFG_I8086_LOCK_HANDLER(WRITELINE(*this, apricot_state, i8086_lock_w))
|
m_cpu->lock_handler().set(FUNC(apricot_state::i8086_lock_w));
|
||||||
|
|
||||||
// i/o cpu
|
// i/o cpu
|
||||||
MCFG_DEVICE_ADD("ic71", I8089, 15_MHz_XTAL / 3)
|
I8089(config, m_iop, 15_MHz_XTAL / 3);
|
||||||
MCFG_DEVICE_PROGRAM_MAP(apricot_mem)
|
m_iop->set_addrmap(AS_PROGRAM, &apricot_state::apricot_mem);
|
||||||
MCFG_DEVICE_IO_MAP(apricot_io)
|
m_iop->set_addrmap(AS_IO, &apricot_state::apricot_io);
|
||||||
MCFG_I8089_DATA_WIDTH(16)
|
m_iop->set_data_width(16);
|
||||||
MCFG_I8089_SINTR1(WRITELINE(m_pic, pic8259_device, ir0_w))
|
m_iop->sintr1().set(m_pic, FUNC(pic8259_device::ir0_w));
|
||||||
MCFG_I8089_SINTR2(WRITELINE(m_pic, pic8259_device, ir1_w))
|
m_iop->sintr2().set(m_pic, FUNC(pic8259_device::ir1_w));
|
||||||
|
|
||||||
// ram
|
// ram
|
||||||
RAM(config, RAM_TAG).set_default_size("256K");
|
RAM(config, RAM_TAG).set_default_size("256K");
|
||||||
|
|
||||||
// video hardware
|
// video hardware
|
||||||
MCFG_SCREEN_ADD_MONOCHROME("screen", RASTER, rgb_t::green())
|
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
|
||||||
MCFG_SCREEN_SIZE(800, 400)
|
screen.set_color(rgb_t::green());
|
||||||
MCFG_SCREEN_VISIBLE_AREA(0, 800-1, 0, 400-1)
|
screen.set_size(800, 400);
|
||||||
MCFG_SCREEN_REFRESH_RATE(72)
|
screen.set_visarea(0, 800-1, 0, 400-1);
|
||||||
MCFG_SCREEN_UPDATE_DRIVER(apricot_state, screen_update_apricot)
|
screen.set_refresh_hz(72);
|
||||||
|
screen.set_screen_update(FUNC(apricot_state::screen_update_apricot));
|
||||||
|
|
||||||
MCFG_PALETTE_ADD_MONOCHROME_HIGHLIGHT("palette")
|
PALETTE(config, m_palette, 3);
|
||||||
|
m_palette->set_init("palette", FUNC(palette_device::palette_init_monochrome_highlight));
|
||||||
|
|
||||||
HD6845(config, m_crtc, 15_MHz_XTAL / 10);
|
HD6845(config, m_crtc, 15_MHz_XTAL / 10);
|
||||||
m_crtc->set_screen("screen");
|
m_crtc->set_screen("screen");
|
||||||
@ -394,8 +397,7 @@ MACHINE_CONFIG_START(apricot_state::apricot)
|
|||||||
|
|
||||||
// sound hardware
|
// sound hardware
|
||||||
SPEAKER(config, "mono").front_center();
|
SPEAKER(config, "mono").front_center();
|
||||||
MCFG_DEVICE_ADD("ic7", SN76489, 4_MHz_XTAL / 2)
|
SN76489(config, "ic7", 4_MHz_XTAL / 2).add_route(ALL_OUTPUTS, "mono", 1.0);
|
||||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
|
|
||||||
|
|
||||||
// devices
|
// devices
|
||||||
I8255A(config, m_ppi, 0);
|
I8255A(config, m_ppi, 0);
|
||||||
@ -456,23 +458,24 @@ MACHINE_CONFIG_START(apricot_state::apricot)
|
|||||||
//m_centronics->select_handler().set(); // schematic page 294 says this is connected to pc4, but that is an output to the printer
|
//m_centronics->select_handler().set(); // schematic page 294 says this is connected to pc4, but that is an output to the printer
|
||||||
|
|
||||||
INPUT_BUFFER(config, "cent_data_in");
|
INPUT_BUFFER(config, "cent_data_in");
|
||||||
MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
|
|
||||||
|
output_latch_device ¢_data_out(OUTPUT_LATCH(config, "cent_data_out"));
|
||||||
|
m_centronics->set_output_latch(cent_data_out);
|
||||||
|
|
||||||
// floppy
|
// floppy
|
||||||
WD2797(config, m_fdc, 4_MHz_XTAL / 2);
|
WD2797(config, m_fdc, 4_MHz_XTAL / 2);
|
||||||
m_fdc->intrq_wr_callback().set(FUNC(apricot_state::fdc_intrq_w));
|
m_fdc->intrq_wr_callback().set(FUNC(apricot_state::fdc_intrq_w));
|
||||||
m_fdc->drq_wr_callback().set(m_iop, FUNC(i8089_device::drq1_w));
|
m_fdc->drq_wr_callback().set(m_iop, FUNC(i8089_device::drq1_w));
|
||||||
MCFG_FLOPPY_DRIVE_ADD("ic68:0", apricot_floppies, "d32w", apricot_state::floppy_formats)
|
FLOPPY_CONNECTOR(config, "ic68:0", apricot_floppies, "d32w", apricot_state::floppy_formats);
|
||||||
MCFG_FLOPPY_DRIVE_ADD("ic68:1", apricot_floppies, "d32w", apricot_state::floppy_formats)
|
FLOPPY_CONNECTOR(config, "ic68:1", apricot_floppies, "d32w", apricot_state::floppy_formats);
|
||||||
|
|
||||||
MCFG_SOFTWARE_LIST_ADD("flop_list", "apricot_flop")
|
SOFTWARE_LIST(config, "flop_list").set_original("apricot_flop");
|
||||||
|
|
||||||
// expansion bus
|
// expansion bus
|
||||||
MCFG_EXPANSION_ADD("exp", "ic91")
|
APRICOT_EXPANSION_BUS(config, "exp", m_cpu, m_iop);
|
||||||
MCFG_EXPANSION_IOP_ADD("ic71")
|
APRICOT_EXPANSION_SLOT(config, "exp:1", apricot_expansion_cards, nullptr);
|
||||||
MCFG_EXPANSION_SLOT_ADD("exp:1", apricot_expansion_cards, nullptr)
|
APRICOT_EXPANSION_SLOT(config, "exp:2", apricot_expansion_cards, nullptr);
|
||||||
MCFG_EXPANSION_SLOT_ADD("exp:2", apricot_expansion_cards, nullptr)
|
}
|
||||||
MACHINE_CONFIG_END
|
|
||||||
|
|
||||||
void apricot_state::apricotxi(machine_config &config)
|
void apricot_state::apricotxi(machine_config &config)
|
||||||
{
|
{
|
||||||
|
@ -782,14 +782,14 @@ MACHINE_CONFIG_START(compis_state::compis)
|
|||||||
m_mpsc->out_rtsb_callback().set(RS232_B_TAG, FUNC(rs232_port_device::write_rts));
|
m_mpsc->out_rtsb_callback().set(RS232_B_TAG, FUNC(rs232_port_device::write_rts));
|
||||||
m_mpsc->out_int_callback().set(m_maincpu, FUNC(i80186_cpu_device::int3_w));
|
m_mpsc->out_int_callback().set(m_maincpu, FUNC(i80186_cpu_device::int3_w));
|
||||||
|
|
||||||
MCFG_DEVICE_ADD(MM58174A_TAG, MM58274C, 32.768_kHz_XTAL)
|
MM58274C(config, m_rtc, 32.768_kHz_XTAL);
|
||||||
MCFG_MM58274C_MODE24(1) // 24 hour
|
m_rtc->set_mode24(1); // 24 hour
|
||||||
MCFG_MM58274C_DAY1(1) // monday
|
m_rtc->set_day1(1); // monday
|
||||||
|
|
||||||
MCFG_CASSETTE_ADD(CASSETTE_TAG)
|
CASSETTE(config, m_cassette);
|
||||||
MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_MUTED)
|
m_cassette->set_default_state((cassette_state)(CASSETTE_STOPPED | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_MUTED));
|
||||||
|
|
||||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("tape", compis_state, tape_tick, attotime::from_hz(44100))
|
TIMER(config, "tape").configure_periodic(FUNC(compis_state::tape_tick), attotime::from_hz(44100));
|
||||||
|
|
||||||
rs232_port_device &rs232a(RS232_PORT(config, RS232_A_TAG, default_rs232_devices, nullptr));
|
rs232_port_device &rs232a(RS232_PORT(config, RS232_A_TAG, default_rs232_devices, nullptr));
|
||||||
rs232a.rxd_handler().set(m_mpsc, FUNC(z80dart_device::rxa_w));
|
rs232a.rxd_handler().set(m_mpsc, FUNC(z80dart_device::rxa_w));
|
||||||
@ -801,24 +801,26 @@ MACHINE_CONFIG_START(compis_state::compis)
|
|||||||
rs232b.dcd_handler().set(m_mpsc, FUNC(z80dart_device::dcdb_w));
|
rs232b.dcd_handler().set(m_mpsc, FUNC(z80dart_device::dcdb_w));
|
||||||
rs232b.cts_handler().set(m_mpsc, FUNC(z80dart_device::ctsb_w));
|
rs232b.cts_handler().set(m_mpsc, FUNC(z80dart_device::ctsb_w));
|
||||||
|
|
||||||
MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer")
|
CENTRONICS(config, m_centronics, centronics_devices, "printer");
|
||||||
MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(*this, compis_state, write_centronics_busy))
|
m_centronics->busy_handler().set(FUNC(compis_state::write_centronics_busy));
|
||||||
MCFG_CENTRONICS_SELECT_HANDLER(WRITELINE(*this, compis_state, write_centronics_select))
|
m_centronics->select_handler().set(FUNC(compis_state::write_centronics_select));
|
||||||
MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG)
|
|
||||||
|
output_latch_device ¢_data_out(OUTPUT_LATCH(config, "cent_data_out"));
|
||||||
|
m_centronics->set_output_latch(cent_data_out);
|
||||||
|
|
||||||
MCFG_COMPIS_GRAPHICS_SLOT_ADD(GRAPHICS_TAG, 15.36_MHz_XTAL/2, compis_graphics_cards, "hrg")
|
MCFG_COMPIS_GRAPHICS_SLOT_ADD(GRAPHICS_TAG, 15.36_MHz_XTAL/2, compis_graphics_cards, "hrg")
|
||||||
|
|
||||||
MCFG_ISBX_SLOT_ADD(ISBX_0_TAG, 0, isbx_cards, "fdc")
|
ISBX_SLOT(config, m_isbx0, 0, isbx_cards, "fdc");
|
||||||
MCFG_ISBX_SLOT_MINTR0_CALLBACK(WRITELINE(I80130_TAG, i80130_device, ir1_w))
|
m_isbx0->mintr0().set(I80130_TAG, FUNC(i80130_device::ir1_w));
|
||||||
MCFG_ISBX_SLOT_MINTR1_CALLBACK(WRITELINE(I80130_TAG, i80130_device, ir0_w))
|
m_isbx0->mintr1().set(I80130_TAG, FUNC(i80130_device::ir0_w));
|
||||||
MCFG_ISBX_SLOT_MDRQT_CALLBACK(WRITELINE(I80186_TAG, i80186_cpu_device, drq0_w))
|
m_isbx0->mdrqt().set(I80186_TAG, FUNC(i80186_cpu_device::drq0_w));
|
||||||
MCFG_ISBX_SLOT_ADD(ISBX_1_TAG, 0, isbx_cards, nullptr)
|
ISBX_SLOT(config, m_isbx1, 0, isbx_cards, nullptr);
|
||||||
MCFG_ISBX_SLOT_MINTR0_CALLBACK(WRITELINE(I80130_TAG, i80130_device, ir6_w))
|
m_isbx1->mintr0().set(I80130_TAG, FUNC(i80130_device::ir6_w));
|
||||||
MCFG_ISBX_SLOT_MINTR1_CALLBACK(WRITELINE(I80130_TAG, i80130_device, ir5_w))
|
m_isbx1->mintr1().set(I80130_TAG, FUNC(i80130_device::ir5_w));
|
||||||
MCFG_ISBX_SLOT_MDRQT_CALLBACK(WRITELINE(I80186_TAG, i80186_cpu_device, drq1_w))
|
m_isbx1->mdrqt().set(I80186_TAG, FUNC(i80186_cpu_device::drq1_w));
|
||||||
|
|
||||||
// software lists
|
// software lists
|
||||||
MCFG_SOFTWARE_LIST_ADD("flop_list", "compis")
|
SOFTWARE_LIST(config, "flop_list").set_original("compis");
|
||||||
|
|
||||||
// internal ram
|
// internal ram
|
||||||
RAM(config, m_ram).set_default_size("128K").set_extra_options("256K");
|
RAM(config, m_ram).set_default_size("128K").set_extra_options("256K");
|
||||||
|
@ -945,14 +945,15 @@ FLOPPY_FORMATS_MEMBER( fanucspmg_state::floppy_formats )
|
|||||||
FLOPPY_IMD_FORMAT
|
FLOPPY_IMD_FORMAT
|
||||||
FLOPPY_FORMATS_END
|
FLOPPY_FORMATS_END
|
||||||
|
|
||||||
MACHINE_CONFIG_START(fanucspmg_state::fanucspmg)
|
void fanucspmg_state::fanucspmg(machine_config &config)
|
||||||
|
{
|
||||||
/* basic machine hardware */
|
/* basic machine hardware */
|
||||||
MCFG_DEVICE_ADD(MAINCPU_TAG, I8086, XTAL(15'000'000)/3)
|
I8086(config, m_maincpu, XTAL(15'000'000)/3);
|
||||||
MCFG_DEVICE_PROGRAM_MAP(maincpu_mem)
|
m_maincpu->set_addrmap(AS_PROGRAM, &fanucspmg_state::maincpu_mem);
|
||||||
MCFG_DEVICE_IO_MAP(maincpu_io)
|
m_maincpu->set_addrmap(AS_IO, &fanucspmg_state::maincpu_io);
|
||||||
MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic0", pic8259_device, inta_cb)
|
m_maincpu->set_irq_acknowledge_callback("pic0", FUNC(pic8259_device::inta_cb));
|
||||||
MCFG_I8086_ESC_OPCODE_HANDLER(WRITE32("i8087", i8087_device, insn_w))
|
m_maincpu->esc_opcode_handler().set("i8087", FUNC(i8087_device::insn_w));
|
||||||
MCFG_I8086_ESC_DATA_HANDLER(WRITE32("i8087", i8087_device, addr_w))
|
m_maincpu->esc_data_handler().set("i8087", FUNC(i8087_device::addr_w));
|
||||||
|
|
||||||
i8087_device &i8087(I8087(config, "i8087", XTAL(15'000'000)/3));
|
i8087_device &i8087(I8087(config, "i8087", XTAL(15'000'000)/3));
|
||||||
i8087.set_addrmap(AS_PROGRAM, &fanucspmg_state::maincpu_mem);
|
i8087.set_addrmap(AS_PROGRAM, &fanucspmg_state::maincpu_mem);
|
||||||
@ -960,8 +961,8 @@ MACHINE_CONFIG_START(fanucspmg_state::fanucspmg)
|
|||||||
//i8087.irq().set_inputline("maincpu", INPUT_LINE_NMI); // TODO: presumably this is connected to the pic
|
//i8087.irq().set_inputline("maincpu", INPUT_LINE_NMI); // TODO: presumably this is connected to the pic
|
||||||
i8087.busy().set_inputline("maincpu", INPUT_LINE_TEST);
|
i8087.busy().set_inputline("maincpu", INPUT_LINE_TEST);
|
||||||
|
|
||||||
MCFG_DEVICE_ADD(SUBCPU_TAG, I8085A, XTAL(16'000'000)/2/2)
|
I8085A(config, m_subcpu, XTAL(16'000'000)/2/2);
|
||||||
MCFG_DEVICE_PROGRAM_MAP(subcpu_mem)
|
m_subcpu->set_addrmap(AS_PROGRAM, &fanucspmg_state::subcpu_mem);
|
||||||
|
|
||||||
I8251(config, m_usart[0], 0);
|
I8251(config, m_usart[0], 0);
|
||||||
I8251(config, m_usart[1], 0);
|
I8251(config, m_usart[1], 0);
|
||||||
@ -998,12 +999,12 @@ MACHINE_CONFIG_START(fanucspmg_state::fanucspmg)
|
|||||||
UPD765A(config, m_fdc, 8'000'000, true, true);
|
UPD765A(config, m_fdc, 8'000'000, true, true);
|
||||||
m_fdc->intrq_wr_callback().set(m_pic[0], FUNC(pic8259_device::ir3_w));
|
m_fdc->intrq_wr_callback().set(m_pic[0], FUNC(pic8259_device::ir3_w));
|
||||||
m_fdc->drq_wr_callback().set(m_dmac, FUNC(i8257_device::dreq0_w));
|
m_fdc->drq_wr_callback().set(m_dmac, FUNC(i8257_device::dreq0_w));
|
||||||
MCFG_FLOPPY_DRIVE_ADD(FDC_TAG":0", fanuc_floppies, "525dd", fanucspmg_state::floppy_formats)
|
FLOPPY_CONNECTOR(config, FDC_TAG":0", fanuc_floppies, "525dd", fanucspmg_state::floppy_formats);
|
||||||
MCFG_FLOPPY_DRIVE_ADD(FDC_TAG":1", fanuc_floppies, "525dd", fanucspmg_state::floppy_formats)
|
FLOPPY_CONNECTOR(config, FDC_TAG":1", fanuc_floppies, "525dd", fanucspmg_state::floppy_formats);
|
||||||
|
|
||||||
MCFG_SCREEN_ADD( SCREEN_TAG, RASTER)
|
screen_device &screen(SCREEN(config, SCREEN_TAG, SCREEN_TYPE_RASTER));
|
||||||
MCFG_SCREEN_RAW_PARAMS(XTAL(15'000'000), 640, 0, 512, 390, 0, 384 )
|
screen.set_raw(XTAL(15'000'000), 640, 0, 512, 390, 0, 384);
|
||||||
MCFG_SCREEN_UPDATE_DEVICE( CRTC_TAG, mc6845_device, screen_update )
|
screen.set_screen_update(CRTC_TAG, FUNC(mc6845_device::screen_update));
|
||||||
|
|
||||||
HD6845(config, m_crtc, XTAL(8'000'000)/2);
|
HD6845(config, m_crtc, XTAL(8'000'000)/2);
|
||||||
m_crtc->set_screen(SCREEN_TAG);
|
m_crtc->set_screen(SCREEN_TAG);
|
||||||
@ -1011,7 +1012,7 @@ MACHINE_CONFIG_START(fanucspmg_state::fanucspmg)
|
|||||||
m_crtc->set_char_width(8);
|
m_crtc->set_char_width(8);
|
||||||
m_crtc->set_update_row_callback(FUNC(fanucspmg_state::crtc_update_row), this);
|
m_crtc->set_update_row_callback(FUNC(fanucspmg_state::crtc_update_row), this);
|
||||||
m_crtc->out_vsync_callback().set(FUNC(fanucspmg_state::vsync_w));
|
m_crtc->out_vsync_callback().set(FUNC(fanucspmg_state::vsync_w));
|
||||||
MACHINE_CONFIG_END
|
}
|
||||||
|
|
||||||
void fanucspmg_state::fanucspmgm(machine_config &config)
|
void fanucspmg_state::fanucspmgm(machine_config &config)
|
||||||
{
|
{
|
||||||
|
@ -47,6 +47,7 @@ public:
|
|||||||
, m_statuslatch(*this, "statuslatch")
|
, m_statuslatch(*this, "statuslatch")
|
||||||
, m_bios(*this, "user1")
|
, m_bios(*this, "user1")
|
||||||
, m_biosram(*this, "biosram")
|
, m_biosram(*this, "biosram")
|
||||||
|
, m_sbx(*this, "sbx%u", 1U)
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
void isbc2861(machine_config &config);
|
void isbc2861(machine_config &config);
|
||||||
@ -96,6 +97,7 @@ private:
|
|||||||
optional_device<ls259_device> m_statuslatch;
|
optional_device<ls259_device> m_statuslatch;
|
||||||
optional_memory_region m_bios;
|
optional_memory_region m_bios;
|
||||||
optional_shared_ptr<u16> m_biosram;
|
optional_shared_ptr<u16> m_biosram;
|
||||||
|
optional_device_array<isbx_slot_device, 2> m_sbx;
|
||||||
|
|
||||||
bool m_upperen;
|
bool m_upperen;
|
||||||
offs_t m_megabyte_page;
|
offs_t m_megabyte_page;
|
||||||
@ -321,12 +323,13 @@ WRITE_LINE_MEMBER(isbc_state::bus_intr_out2_w)
|
|||||||
// Multibus interrupt request (active high)
|
// Multibus interrupt request (active high)
|
||||||
}
|
}
|
||||||
|
|
||||||
MACHINE_CONFIG_START(isbc_state::isbc86)
|
void isbc_state::isbc86(machine_config &config)
|
||||||
|
{
|
||||||
/* basic machine hardware */
|
/* basic machine hardware */
|
||||||
MCFG_DEVICE_ADD(m_maincpu, I8086, XTAL(5'000'000))
|
I8086(config, m_maincpu, XTAL(5'000'000));
|
||||||
MCFG_DEVICE_PROGRAM_MAP(isbc86_mem)
|
m_maincpu->set_addrmap(AS_PROGRAM, &isbc_state::isbc86_mem);
|
||||||
MCFG_DEVICE_IO_MAP(isbc_io)
|
m_maincpu->set_addrmap(AS_IO, &isbc_state::isbc_io);
|
||||||
MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic_0", pic8259_device, inta_cb)
|
m_maincpu->set_irq_acknowledge_callback("pic_0", FUNC(pic8259_device::inta_cb));
|
||||||
|
|
||||||
PIC8259(config, m_pic_0, 0);
|
PIC8259(config, m_pic_0, 0);
|
||||||
m_pic_0->out_int_callback().set_inputline(m_maincpu, 0);
|
m_pic_0->out_int_callback().set_inputline(m_maincpu, 0);
|
||||||
@ -352,14 +355,15 @@ MACHINE_CONFIG_START(isbc_state::isbc86)
|
|||||||
rs232.cts_handler().set(m_uart8251, FUNC(i8251_device::write_cts));
|
rs232.cts_handler().set(m_uart8251, FUNC(i8251_device::write_cts));
|
||||||
rs232.dsr_handler().set(m_uart8251, FUNC(i8251_device::write_dsr));
|
rs232.dsr_handler().set(m_uart8251, FUNC(i8251_device::write_dsr));
|
||||||
rs232.set_option_device_input_defaults("terminal", DEVICE_INPUT_DEFAULTS_NAME(isbc86_terminal));
|
rs232.set_option_device_input_defaults("terminal", DEVICE_INPUT_DEFAULTS_NAME(isbc86_terminal));
|
||||||
MACHINE_CONFIG_END
|
}
|
||||||
|
|
||||||
MACHINE_CONFIG_START(isbc_state::rpc86)
|
void isbc_state::rpc86(machine_config &config)
|
||||||
|
{
|
||||||
/* basic machine hardware */
|
/* basic machine hardware */
|
||||||
MCFG_DEVICE_ADD(m_maincpu, I8086, XTAL(5'000'000))
|
I8086(config, m_maincpu, XTAL(5'000'000));
|
||||||
MCFG_DEVICE_PROGRAM_MAP(rpc86_mem)
|
m_maincpu->set_addrmap(AS_PROGRAM, &isbc_state::rpc86_mem);
|
||||||
MCFG_DEVICE_IO_MAP(rpc86_io)
|
m_maincpu->set_addrmap(AS_IO, &isbc_state::rpc86_io);
|
||||||
MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic_0", pic8259_device, inta_cb)
|
m_maincpu->set_irq_acknowledge_callback("pic_0", FUNC(pic8259_device::inta_cb));
|
||||||
|
|
||||||
PIC8259(config, m_pic_0, 0);
|
PIC8259(config, m_pic_0, 0);
|
||||||
m_pic_0->out_int_callback().set_inputline(m_maincpu, 0);
|
m_pic_0->out_int_callback().set_inputline(m_maincpu, 0);
|
||||||
@ -387,13 +391,13 @@ MACHINE_CONFIG_START(isbc_state::rpc86)
|
|||||||
rs232.dsr_handler().set(m_uart8251, FUNC(i8251_device::write_dsr));
|
rs232.dsr_handler().set(m_uart8251, FUNC(i8251_device::write_dsr));
|
||||||
rs232.set_option_device_input_defaults("terminal", DEVICE_INPUT_DEFAULTS_NAME(isbc286_terminal));
|
rs232.set_option_device_input_defaults("terminal", DEVICE_INPUT_DEFAULTS_NAME(isbc286_terminal));
|
||||||
|
|
||||||
MCFG_ISBX_SLOT_ADD("sbx1", 0, isbx_cards, nullptr)
|
ISBX_SLOT(config, m_sbx[0], 0, isbx_cards, nullptr);
|
||||||
//MCFG_ISBX_SLOT_MINTR0_CALLBACK(WRITELINE("pic_0", pic8259_device, ir3_w))
|
//m_sbx[0]->mintr0().set("pic_0", FUNC(pic8259_device::ir3_w));
|
||||||
//MCFG_ISBX_SLOT_MINTR1_CALLBACK(WRITELINE("pic_0", pic8259_device, ir4_w))
|
//m_sbx[0]->mintr1().set("pic_0", FUNC(pic8259_device::ir4_w));
|
||||||
MCFG_ISBX_SLOT_ADD("sbx2", 0, isbx_cards, nullptr)
|
ISBX_SLOT(config, m_sbx[1], 0, isbx_cards, nullptr);
|
||||||
//MCFG_ISBX_SLOT_MINTR0_CALLBACK(WRITELINE("pic_0", pic8259_device, ir5_w))
|
//m_sbx[1]->mintr0().set("pic_0", FUNC(pic8259_device::ir5_w));
|
||||||
//MCFG_ISBX_SLOT_MINTR1_CALLBACK(WRITELINE("pic_0", pic8259_device, ir6_w))
|
//m_sbx[1]->mintr1().set("pic_0", FUNC(pic8259_device::ir6_w));
|
||||||
MACHINE_CONFIG_END
|
}
|
||||||
|
|
||||||
void isbc_state::isbc8605(machine_config &config)
|
void isbc_state::isbc8605(machine_config &config)
|
||||||
{
|
{
|
||||||
@ -424,12 +428,13 @@ void isbc_state::isbc8630(machine_config &config)
|
|||||||
m_statuslatch->q_out_cb<7>().set([this] (int state) { m_megabyte_enable = !state; });
|
m_statuslatch->q_out_cb<7>().set([this] (int state) { m_megabyte_enable = !state; });
|
||||||
}
|
}
|
||||||
|
|
||||||
MACHINE_CONFIG_START(isbc_state::isbc286)
|
void isbc_state::isbc286(machine_config &config)
|
||||||
|
{
|
||||||
/* basic machine hardware */
|
/* basic machine hardware */
|
||||||
MCFG_DEVICE_ADD(m_maincpu, I80286, XTAL(16'000'000)/2)
|
I80286(config, m_maincpu, XTAL(16'000'000)/2);
|
||||||
MCFG_DEVICE_PROGRAM_MAP(isbc286_mem)
|
m_maincpu->set_addrmap(AS_PROGRAM, &isbc_state::isbc286_mem);
|
||||||
MCFG_DEVICE_IO_MAP(isbc286_io)
|
m_maincpu->set_addrmap(AS_IO, &isbc_state::isbc286_io);
|
||||||
MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic_0", pic8259_device, inta_cb)
|
m_maincpu->set_irq_acknowledge_callback("pic_0", FUNC(pic8259_device::inta_cb));
|
||||||
|
|
||||||
PIC8259(config, m_pic_0, 0);
|
PIC8259(config, m_pic_0, 0);
|
||||||
m_pic_0->out_int_callback().set_inputline(m_maincpu, 0);
|
m_pic_0->out_int_callback().set_inputline(m_maincpu, 0);
|
||||||
@ -454,14 +459,15 @@ MACHINE_CONFIG_START(isbc_state::isbc286)
|
|||||||
ppi.in_pb_callback().set(m_cent_status_in, FUNC(input_buffer_device::bus_r));
|
ppi.in_pb_callback().set(m_cent_status_in, FUNC(input_buffer_device::bus_r));
|
||||||
ppi.out_pc_callback().set(FUNC(isbc_state::ppi_c_w));
|
ppi.out_pc_callback().set(FUNC(isbc_state::ppi_c_w));
|
||||||
|
|
||||||
MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer")
|
CENTRONICS(config, m_centronics, centronics_devices, "printer");
|
||||||
MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(*this, isbc_state, write_centronics_ack))
|
m_centronics->ack_handler().set(FUNC(isbc_state::write_centronics_ack));
|
||||||
MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(m_cent_status_in, input_buffer_device, write_bit7))
|
m_centronics->busy_handler().set(m_cent_status_in, FUNC(input_buffer_device::write_bit7));
|
||||||
MCFG_CENTRONICS_FAULT_HANDLER(WRITELINE(m_cent_status_in, input_buffer_device, write_bit6))
|
m_centronics->fault_handler().set(m_cent_status_in, FUNC(input_buffer_device::write_bit6));
|
||||||
|
|
||||||
INPUT_BUFFER(config, m_cent_status_in, 0);
|
INPUT_BUFFER(config, m_cent_status_in, 0);
|
||||||
|
|
||||||
MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
|
output_latch_device ¢_data_out(OUTPUT_LATCH(config, "cent_data_out"));
|
||||||
|
m_centronics->set_output_latch(cent_data_out);
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
I8274(config, m_uart8274, XTAL(16'000'000)/4);
|
I8274(config, m_uart8274, XTAL(16'000'000)/4);
|
||||||
@ -507,15 +513,15 @@ MACHINE_CONFIG_START(isbc_state::isbc286)
|
|||||||
#endif
|
#endif
|
||||||
rs232b.set_option_device_input_defaults("terminal", DEVICE_INPUT_DEFAULTS_NAME(isbc286_terminal));
|
rs232b.set_option_device_input_defaults("terminal", DEVICE_INPUT_DEFAULTS_NAME(isbc286_terminal));
|
||||||
|
|
||||||
MCFG_ISBX_SLOT_ADD("sbx1", 0, isbx_cards, nullptr)
|
ISBX_SLOT(config, m_sbx[0], 0, isbx_cards, nullptr);
|
||||||
MCFG_ISBX_SLOT_MINTR0_CALLBACK(WRITELINE("pic_1", pic8259_device, ir3_w))
|
m_sbx[0]->mintr0().set("pic_1", FUNC(pic8259_device::ir3_w));
|
||||||
MCFG_ISBX_SLOT_MINTR1_CALLBACK(WRITELINE("pic_1", pic8259_device, ir4_w))
|
m_sbx[0]->mintr1().set("pic_1", FUNC(pic8259_device::ir4_w));
|
||||||
MCFG_ISBX_SLOT_ADD("sbx2", 0, isbx_cards, nullptr)
|
ISBX_SLOT(config, m_sbx[1], 0, isbx_cards, nullptr);
|
||||||
MCFG_ISBX_SLOT_MINTR0_CALLBACK(WRITELINE("pic_1", pic8259_device, ir5_w))
|
m_sbx[1]->mintr0().set("pic_1", FUNC(pic8259_device::ir5_w));
|
||||||
MCFG_ISBX_SLOT_MINTR1_CALLBACK(WRITELINE("pic_1", pic8259_device, ir6_w))
|
m_sbx[1]->mintr1().set("pic_1", FUNC(pic8259_device::ir6_w));
|
||||||
|
|
||||||
ISBC_215G(config, "isbc_215g", 0, 0x100, m_maincpu).irq_callback().set(m_pic_0, FUNC(pic8259_device::ir5_w));
|
ISBC_215G(config, "isbc_215g", 0, 0x100, m_maincpu).irq_callback().set(m_pic_0, FUNC(pic8259_device::ir5_w));
|
||||||
MACHINE_CONFIG_END
|
}
|
||||||
|
|
||||||
void isbc_state::isbc2861(machine_config &config)
|
void isbc_state::isbc2861(machine_config &config)
|
||||||
{
|
{
|
||||||
|
@ -572,15 +572,13 @@ MACHINE_CONFIG_START(rc759_state::rc759)
|
|||||||
keyb.set_keyboard_callback(FUNC(rc759_state::keyb_put));
|
keyb.set_keyboard_callback(FUNC(rc759_state::keyb_put));
|
||||||
|
|
||||||
// cassette
|
// cassette
|
||||||
MCFG_CASSETTE_ADD("cas")
|
CASSETTE(config, m_cas);
|
||||||
MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_MUTED)
|
m_cas->set_default_state((cassette_state)(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_MUTED));
|
||||||
|
|
||||||
// sound
|
// sound
|
||||||
SPEAKER(config, "mono").front_center();
|
SPEAKER(config, "mono").front_center();
|
||||||
MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND)
|
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.50);
|
||||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
|
SN76489A(config, m_snd, 20_MHz_XTAL / 10).add_route(ALL_OUTPUTS, "mono", 1.0);
|
||||||
MCFG_DEVICE_ADD("snd", SN76489A, 20_MHz_XTAL / 10)
|
|
||||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
|
|
||||||
|
|
||||||
// internal centronics
|
// internal centronics
|
||||||
MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer")
|
MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer")
|
||||||
@ -591,10 +589,10 @@ MACHINE_CONFIG_START(rc759_state::rc759)
|
|||||||
MCFG_CENTRONICS_SELECT_HANDLER(WRITELINE(*this, rc759_state, centronics_select_w))
|
MCFG_CENTRONICS_SELECT_HANDLER(WRITELINE(*this, rc759_state, centronics_select_w))
|
||||||
|
|
||||||
// isbx slot
|
// isbx slot
|
||||||
MCFG_ISBX_SLOT_ADD("isbx", 0, isbx_cards, nullptr)
|
ISBX_SLOT(config, m_isbx, 0, isbx_cards, nullptr);
|
||||||
MCFG_ISBX_SLOT_MINTR0_CALLBACK(WRITELINE("maincpu", i80186_cpu_device, int1_w))
|
m_isbx->mintr0().set("maincpu", FUNC(i80186_cpu_device::int1_w));
|
||||||
MCFG_ISBX_SLOT_MINTR1_CALLBACK(WRITELINE("maincpu", i80186_cpu_device, int3_w))
|
m_isbx->mintr1().set("maincpu", FUNC(i80186_cpu_device::int3_w));
|
||||||
MCFG_ISBX_SLOT_MDRQT_CALLBACK(WRITELINE("maincpu", i80186_cpu_device, drq0_w))
|
m_isbx->mdrqt().set("maincpu", FUNC(i80186_cpu_device::drq0_w));
|
||||||
|
|
||||||
// floppy disk controller
|
// floppy disk controller
|
||||||
WD2797(config, m_fdc, 1000000);
|
WD2797(config, m_fdc, 1000000);
|
||||||
@ -602,8 +600,8 @@ MACHINE_CONFIG_START(rc759_state::rc759)
|
|||||||
// m_fdc->drq_wr_callback().set(m_maincpu, FUNC(i80186_cpu_device::drq1_w));
|
// m_fdc->drq_wr_callback().set(m_maincpu, FUNC(i80186_cpu_device::drq1_w));
|
||||||
|
|
||||||
// floppy drives
|
// floppy drives
|
||||||
MCFG_FLOPPY_DRIVE_ADD("fdc:0", rc759_floppies, "hd", floppy_image_device::default_floppy_formats)
|
FLOPPY_CONNECTOR(config, "fdc:0", rc759_floppies, "hd", floppy_image_device::default_floppy_formats);
|
||||||
MCFG_FLOPPY_DRIVE_ADD("fdc:1", rc759_floppies, "hd", floppy_image_device::default_floppy_formats)
|
FLOPPY_CONNECTOR(config, "fdc:1", rc759_floppies, "hd", floppy_image_device::default_floppy_formats);
|
||||||
MACHINE_CONFIG_END
|
MACHINE_CONFIG_END
|
||||||
|
|
||||||
|
|
||||||
|
@ -353,22 +353,23 @@ WRITE_LINE_MEMBER(isbc_215g_device::isbx_irq_11_w)
|
|||||||
m_isbx_irq[3] = state ? true : false;
|
m_isbx_irq[3] = state ? true : false;
|
||||||
}
|
}
|
||||||
|
|
||||||
MACHINE_CONFIG_START(isbc_215g_device::device_add_mconfig)
|
void isbc_215g_device::device_add_mconfig(machine_config &config)
|
||||||
MCFG_DEVICE_ADD("u84", I8089, XTAL(15'000'000) / 3)
|
{
|
||||||
MCFG_DEVICE_PROGRAM_MAP(isbc_215g_mem)
|
I8089(config, m_dmac, XTAL(15'000'000) / 3);
|
||||||
MCFG_DEVICE_IO_MAP(isbc_215g_io)
|
m_dmac->set_addrmap(AS_PROGRAM, &isbc_215g_device::isbc_215g_mem);
|
||||||
MCFG_I8089_DATA_WIDTH(16)
|
m_dmac->set_addrmap(AS_IO, &isbc_215g_device::isbc_215g_io);
|
||||||
|
m_dmac->set_data_width(16);
|
||||||
|
|
||||||
MCFG_HARDDISK_ADD("drive0")
|
HARDDISK(config, "drive0", 0);
|
||||||
MCFG_HARDDISK_ADD("drive1")
|
HARDDISK(config, "drive1", 0);
|
||||||
|
|
||||||
MCFG_ISBX_SLOT_ADD("sbx1", 0, isbx_cards, nullptr)
|
ISBX_SLOT(config, m_sbx1, 0, isbx_cards, nullptr);
|
||||||
MCFG_ISBX_SLOT_MINTR0_CALLBACK(WRITELINE(*this, isbc_215g_device, isbx_irq_00_w))
|
m_sbx1->mintr0().set(FUNC(isbc_215g_device::isbx_irq_00_w));
|
||||||
MCFG_ISBX_SLOT_MINTR1_CALLBACK(WRITELINE(*this, isbc_215g_device, isbx_irq_01_w))
|
m_sbx1->mintr1().set(FUNC(isbc_215g_device::isbx_irq_01_w));
|
||||||
MCFG_ISBX_SLOT_ADD("sbx2", 0, isbx_cards, "fdc_218a")
|
ISBX_SLOT(config, m_sbx2, 0, isbx_cards, "fdc_218a");
|
||||||
MCFG_ISBX_SLOT_MINTR0_CALLBACK(WRITELINE(*this, isbc_215g_device, isbx_irq_10_w))
|
m_sbx2->mintr0().set(FUNC(isbc_215g_device::isbx_irq_10_w));
|
||||||
MCFG_ISBX_SLOT_MINTR1_CALLBACK(WRITELINE(*this, isbc_215g_device, isbx_irq_11_w))
|
m_sbx2->mintr1().set(FUNC(isbc_215g_device::isbx_irq_11_w));
|
||||||
MACHINE_CONFIG_END
|
}
|
||||||
|
|
||||||
|
|
||||||
ROM_START( isbc_215g )
|
ROM_START( isbc_215g )
|
||||||
|
Loading…
Reference in New Issue
Block a user