summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/duet16.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/duet16.cpp')
-rw-r--r--src/mame/drivers/duet16.cpp18
1 files changed, 13 insertions, 5 deletions
diff --git a/src/mame/drivers/duet16.cpp b/src/mame/drivers/duet16.cpp
index 1bee25b35c7..1c8e8927a52 100644
--- a/src/mame/drivers/duet16.cpp
+++ b/src/mame/drivers/duet16.cpp
@@ -5,6 +5,7 @@
#include "cpu/i86/i86.h"
#include "cpu/mcs48/mcs48.h"
#include "imagedev/floppy.h"
+#include "machine/i8087.h"
#include "machine/i8251.h"
#include "machine/input_merger.h"
#include "machine/pit8253.h"
@@ -69,7 +70,7 @@ private:
MC6845_UPDATE_ROW(crtc_update_row);
void duet16_io(address_map &map);
void duet16_mem(address_map &map);
- required_device<cpu_device> m_maincpu;
+ required_device<i8086_cpu_device> m_maincpu;
required_device<pic8259_device> m_pic;
required_device<upd765a_device> m_fdc;
required_device<am9517a_device> m_dmac;
@@ -353,10 +354,17 @@ static DEVICE_INPUT_DEFAULTS_START(keyboard)
DEVICE_INPUT_DEFAULTS_END
MACHINE_CONFIG_START(duet16_state::duet16)
- MCFG_DEVICE_ADD("maincpu", I8086, 24_MHz_XTAL / 3)
- MCFG_DEVICE_PROGRAM_MAP(duet16_mem)
- MCFG_DEVICE_IO_MAP(duet16_io)
- MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic", pic8259_device, inta_cb)
+ I8086(config, m_maincpu, 24_MHz_XTAL / 3);
+ m_maincpu->set_addrmap(AS_PROGRAM, &duet16_state::duet16_mem);
+ m_maincpu->set_addrmap(AS_IO, &duet16_state::duet16_io);
+ m_maincpu->set_irq_acknowledge_callback("pic", FUNC(pic8259_device::inta_cb));
+ 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", 24_MHz_XTAL / 3));
+ i8087.set_space_86(m_maincpu, AS_PROGRAM);
+ i8087.irq().set(m_pic, FUNC(pic8259_device::ir2_w)); // INT87
+ i8087.busy().set_inputline(m_maincpu, INPUT_LINE_TEST);
I8741(config, "i8741", 20_MHz_XTAL / 4);