-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:
mooglyguy 2018-12-15 18:23:57 +01:00
parent 8a44816c06
commit e36bad6f40
17 changed files with 231 additions and 306 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -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(); }

View File

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

View File

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

View File

@ -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 &cent_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)
{ {

View File

@ -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 &cent_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");

View File

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

View File

@ -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 &cent_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)
{ {

View File

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

View File

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