diff options
Diffstat (limited to 'src/devices/bus/isa/isa.h')
-rw-r--r-- | src/devices/bus/isa/isa.h | 49 |
1 files changed, 17 insertions, 32 deletions
diff --git a/src/devices/bus/isa/isa.h b/src/devices/bus/isa/isa.h index 36e949fc76f..d1f45c81d98 100644 --- a/src/devices/bus/isa/isa.h +++ b/src/devices/bus/isa/isa.h @@ -186,6 +186,11 @@ class isa8_device : public device_t, public device_memory_interface { public: + static constexpr int AS_ISA_MEM = 0; + static constexpr int AS_ISA_IO = 1; + static constexpr int AS_ISA_MEMALT = 2; + static constexpr int AS_ISA_IOALT = 3; + // construction/destruction isa8_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // inline configuration @@ -203,17 +208,7 @@ public: template <class Object> static devcb_base &set_out_drq3_callback(device_t &device, Object &&cb) { return downcast<isa8_device &>(device).m_out_drq3_cb.set_callback(std::forward<Object>(cb)); } // for ISA8, put the 8-bit configs in the primary slots and the 16-bit configs in the secondary - virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override - { - switch (spacenum) - { - case AS_PROGRAM: return &m_program_config; - case AS_IO: return &m_io_config; - case AS_DATA: return &m_program16_config; - case AS_3: return &m_io16_config; - default: fatalerror("isa: invalid memory space!\n"); - } - } + virtual std::vector<std::pair<int, const address_space_config *>> memory_space_config() const override; void install_device(offs_t start, offs_t end, read8_delegate rhandler, write8_delegate whandler); template<typename T> void install_device(offs_t addrstart, offs_t addrend, T &device, void (T::*map)(class address_map &map), int bits = 8) @@ -244,8 +239,8 @@ public: DECLARE_WRITE_LINE_MEMBER( drq3_w ); // 8 bit accessors for ISA-defined address spaces - DECLARE_READ8_MEMBER(prog_r); - DECLARE_WRITE8_MEMBER(prog_w); + DECLARE_READ8_MEMBER(mem_r); + DECLARE_WRITE8_MEMBER(mem_w); DECLARE_READ8_MEMBER(io_r); DECLARE_WRITE8_MEMBER(io_w); @@ -258,12 +253,12 @@ public: virtual void set_dma_channel(uint8_t channel, device_isa8_card_interface *dev, bool do_eop); - const address_space_config m_program_config, m_io_config, m_program16_config, m_io16_config; + const address_space_config m_mem_config, m_io_config, m_mem16_config, m_io16_config; protected: isa8_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); - void install_space(address_spacenum spacenum, offs_t start, offs_t end, read8_delegate rhandler, write8_delegate whandler); + void install_space(int spacenum, offs_t start, offs_t end, read8_delegate rhandler, write8_delegate whandler); // device-level overrides virtual void device_start() override; @@ -273,8 +268,8 @@ protected: cpu_device *m_maincpu; // address spaces - address_space *m_iospace, *m_prgspace; - int m_iowidth, m_prgwidth; + address_space *m_iospace, *m_memspace; + int m_iowidth, m_memwidth; bool m_allocspaces; devcb_write_line m_out_irq2_cb; @@ -370,17 +365,7 @@ public: void install16_device(offs_t start, offs_t end, read16_delegate rhandler, write16_delegate whandler); // for ISA16, put the 16-bit configs in the primary slots and the 8-bit configs in the secondary - virtual const address_space_config *memory_space_config(address_spacenum spacenum) const override - { - switch (spacenum) - { - case AS_PROGRAM: return &m_program16_config; - case AS_IO: return &m_io16_config; - case AS_DATA: return &m_program_config; - case AS_3: return &m_io_config; - default: fatalerror("isa: invalid memory space!\n"); - } - } + virtual std::vector<std::pair<int, const address_space_config *>> memory_space_config() const override; DECLARE_WRITE_LINE_MEMBER( irq10_w ); DECLARE_WRITE_LINE_MEMBER( irq11_w ); @@ -397,13 +382,13 @@ public: void dack16_w(int line,uint16_t data); // 16 bit accessors for ISA-defined address spaces - DECLARE_READ16_MEMBER(prog16_r); - DECLARE_WRITE16_MEMBER(prog16_w); + DECLARE_READ16_MEMBER(mem16_r); + DECLARE_WRITE16_MEMBER(mem16_w); DECLARE_READ16_MEMBER(io16_r); DECLARE_WRITE16_MEMBER(io16_w); // byte-swapped versions of 16-bit accessors - DECLARE_READ16_MEMBER(prog16_swap_r); - DECLARE_WRITE16_MEMBER(prog16_swap_w); + DECLARE_READ16_MEMBER(mem16_swap_r); + DECLARE_WRITE16_MEMBER(mem16_swap_w); DECLARE_READ16_MEMBER(io16_swap_r); DECLARE_WRITE16_MEMBER(io16_swap_w); |