summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/isa/isa.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/isa/isa.h')
-rw-r--r--src/devices/bus/isa/isa.h49
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);