summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/machine/i8087.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/machine/i8087.h')
-rw-r--r--src/devices/machine/i8087.h13
1 files changed, 6 insertions, 7 deletions
diff --git a/src/devices/machine/i8087.h b/src/devices/machine/i8087.h
index 290b9a95b16..9344ca2e68e 100644
--- a/src/devices/machine/i8087.h
+++ b/src/devices/machine/i8087.h
@@ -10,12 +10,12 @@
DECLARE_DEVICE_TYPE(I8087, i8087_device)
-class i8087_device : public device_t,
- public device_memory_interface
+class i8087_device : public device_t
{
public:
i8087_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
- void set_data_width(u8 data_width) { m_data_width = data_width; }
+ template <class Object> void set_space_88(Object &&tag, int spacenum) { m_space.set_tag(std::forward<Object>(tag), spacenum); m_space.set_data_width(8); }
+ template <class Object> void set_space_86(Object &&tag, int spacenum) { m_space.set_tag(std::forward<Object>(tag), spacenum); m_space.set_data_width(16); }
auto irq() { return m_int_handler.bind(); }
auto busy() { return m_busy_handler.bind(); }
@@ -26,13 +26,13 @@ protected:
i8087_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock);
virtual void device_start() override;
virtual void device_reset() override;
- virtual void device_config_complete() override;
- virtual space_config_vector memory_space_config() const override;
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
private:
+ address_space &space() { return *m_space; }
+
typedef void (i8087_device::*x87_func)(u8 modrm);
- address_space_config m_space_config;
+ required_address_space m_space;
devcb_write_line m_int_handler;
devcb_write_line m_busy_handler;
emu_timer *m_timer;
@@ -45,7 +45,6 @@ private:
u16 m_cw;
u16 m_sw;
u16 m_tw;
- int m_data_width;
int m_icount;
x87_func m_opcode_table_d8[256];