diff options
Diffstat (limited to 'src/devices/bus/isa/svga_paradise.cpp')
| -rw-r--r-- | src/devices/bus/isa/svga_paradise.cpp | 214 |
1 files changed, 165 insertions, 49 deletions
diff --git a/src/devices/bus/isa/svga_paradise.cpp b/src/devices/bus/isa/svga_paradise.cpp index fba985811dd..21baa921364 100644 --- a/src/devices/bus/isa/svga_paradise.cpp +++ b/src/devices/bus/isa/svga_paradise.cpp @@ -93,17 +93,18 @@ void isa16_pvga1a_device::device_add_mconfig(machine_config &config) void isa16_pvga1a_device::io_isa_map(address_map &map) { - map(0x00, 0x2f).m(m_vga, FUNC(pvga1a_vga_device::io_map)); + map(0x03b0, 0x03df).m(m_vga, FUNC(pvga1a_vga_device::io_map)); } void isa16_pvga1a_device::device_start() { set_isa_device(); +} - m_isa->install_rom(this, 0xc0000, 0xc7fff, "vga_rom"); - - m_isa->install_memory(0xa0000, 0xbffff, read8sm_delegate(*m_vga, FUNC(pvga1a_vga_device::mem_r)), write8sm_delegate(*m_vga, FUNC(pvga1a_vga_device::mem_w))); - m_isa->install_device(0x03b0, 0x03df, *this, &isa16_pvga1a_device::io_isa_map); +void isa16_pvga1a_device::device_reset() +{ + remap(AS_PROGRAM, 0, 0xfffff); + remap(AS_IO, 0, 0xffff); } void isa16_pvga1a_device::remap(int space_id, offs_t start, offs_t end) @@ -114,7 +115,7 @@ void isa16_pvga1a_device::remap(int space_id, offs_t start, offs_t end) m_isa->install_rom(this, 0xc0000, 0xc7fff, "vga_rom"); } else if (space_id == AS_IO) - m_isa->install_device(0x03b0, 0x03df, *this, &isa16_pvga1a_device::io_isa_map); + m_isa->install_device(0x0000, 0xffff, *this, &isa16_pvga1a_device::io_isa_map); } /****************** @@ -184,19 +185,32 @@ void isa16_pvga1a_jk_device::device_add_mconfig(machine_config &config) void isa16_pvga1a_jk_device::io_isa_map(address_map &map) { - map(0x00, 0x2f).m(m_vga, FUNC(pvga1a_vga_device::io_map)); + map(0x03b0, 0x03df).m(m_vga, FUNC(pvga1a_vga_device::io_map)); } void isa16_pvga1a_jk_device::device_start() { set_isa_device(); +} - m_isa->install_rom(this, 0xc0000, 0xc7fff, "vga_rom"); +void isa16_pvga1a_jk_device::device_reset() +{ + remap(AS_PROGRAM, 0, 0xfffff); + remap(AS_IO, 0, 0xffff); +} - m_isa->install_memory(0xa0000, 0xbffff, read8sm_delegate(*m_vga, FUNC(pvga1a_vga_device::mem_r)), write8sm_delegate(*m_vga, FUNC(pvga1a_vga_device::mem_w))); - m_isa->install_device(0x03b0, 0x03df, *this, &isa16_pvga1a_jk_device::io_isa_map); +void isa16_pvga1a_jk_device::remap(int space_id, offs_t start, offs_t end) +{ + if (space_id == AS_PROGRAM) + { + m_isa->install_memory(0xa0000, 0xbffff, read8sm_delegate(*m_vga, FUNC(pvga1a_vga_device::mem_r)), write8sm_delegate(*m_vga, FUNC(pvga1a_vga_device::mem_w))); + m_isa->install_rom(this, 0xc0000, 0xc7fff, "vga_rom"); + } + else if (space_id == AS_IO) + m_isa->install_device(0x0000, 0xffff, *this, &isa16_pvga1a_jk_device::io_isa_map); } + /****************** * * WD90C90-JK @@ -236,19 +250,32 @@ void isa8_wd90c90_jk_device::device_add_mconfig(machine_config &config) void isa8_wd90c90_jk_device::io_isa_map(address_map &map) { - map(0x00, 0x2f).m(m_vga, FUNC(pvga1a_vga_device::io_map)); + map(0x03b0, 0x03df).m(m_vga, FUNC(pvga1a_vga_device::io_map)); } void isa8_wd90c90_jk_device::device_start() { set_isa_device(); +} - m_isa->install_rom(this, 0xc0000, 0xc7fff, "vga_rom"); +void isa8_wd90c90_jk_device::device_reset() +{ + remap(AS_PROGRAM, 0, 0xfffff); + remap(AS_IO, 0, 0xffff); +} - m_isa->install_memory(0xa0000, 0xbffff, read8sm_delegate(*m_vga, FUNC(pvga1a_vga_device::mem_r)), write8sm_delegate(*m_vga, FUNC(pvga1a_vga_device::mem_w))); - m_isa->install_device(0x03b0, 0x03df, *this, &isa8_wd90c90_jk_device::io_isa_map); +void isa8_wd90c90_jk_device::remap(int space_id, offs_t start, offs_t end) +{ + if (space_id == AS_PROGRAM) + { + m_isa->install_memory(0xa0000, 0xbffff, read8sm_delegate(*m_vga, FUNC(pvga1a_vga_device::mem_r)), write8sm_delegate(*m_vga, FUNC(pvga1a_vga_device::mem_w))); + m_isa->install_rom(this, 0xc0000, 0xc7fff, "vga_rom"); + } + else if (space_id == AS_IO) + m_isa->install_device(0x0000, 0xffff, *this, &isa8_wd90c90_jk_device::io_isa_map); } + /****************** * * WD90C00-JK @@ -294,19 +321,32 @@ void isa16_wd90c00_jk_device::device_add_mconfig(machine_config &config) void isa16_wd90c00_jk_device::io_isa_map(address_map &map) { - map(0x00, 0x2f).m(m_vga, FUNC(wd90c00_vga_device::io_map)); + map(0x03b0, 0x03df).m(m_vga, FUNC(wd90c00_vga_device::io_map)); } void isa16_wd90c00_jk_device::device_start() { set_isa_device(); +} - m_isa->install_rom(this, 0xc0000, 0xc7fff, "vga_rom"); +void isa16_wd90c00_jk_device::device_reset() +{ + remap(AS_PROGRAM, 0, 0xfffff); + remap(AS_IO, 0, 0xffff); +} - m_isa->install_memory(0xa0000, 0xbffff, read8sm_delegate(*m_vga, FUNC(wd90c00_vga_device::mem_r)), write8sm_delegate(*m_vga, FUNC(wd90c00_vga_device::mem_w))); - m_isa->install_device(0x03b0, 0x03df, *this, &isa16_wd90c00_jk_device::io_isa_map); +void isa16_wd90c00_jk_device::remap(int space_id, offs_t start, offs_t end) +{ + if (space_id == AS_PROGRAM) + { + m_isa->install_memory(0xa0000, 0xbffff, read8sm_delegate(*m_vga, FUNC(wd90c00_vga_device::mem_r)), write8sm_delegate(*m_vga, FUNC(wd90c00_vga_device::mem_w))); + m_isa->install_rom(this, 0xc0000, 0xc7fff, "vga_rom"); + } + else if (space_id == AS_IO) + m_isa->install_device(0x0000, 0xffff, *this, &isa16_wd90c00_jk_device::io_isa_map); } + /****************** * * WD90C11-LR @@ -355,13 +395,26 @@ void isa16_wd90c11_lr_device::io_isa_map(address_map &map) void isa16_wd90c11_lr_device::device_start() { set_isa_device(); +} - m_isa->install_rom(this, 0xc0000, 0xc7fff, "vga_rom"); +void isa16_wd90c11_lr_device::device_reset() +{ + remap(AS_PROGRAM, 0, 0xfffff); + remap(AS_IO, 0, 0xffff); +} - m_isa->install_memory(0xa0000, 0xbffff, read8sm_delegate(*m_vga, FUNC(wd90c11a_vga_device::mem_r)), write8sm_delegate(*m_vga, FUNC(wd90c11a_vga_device::mem_w))); - m_isa->install_device(0x0000, 0xffff, *this, &isa16_wd90c11_lr_device::io_isa_map); +void isa16_wd90c11_lr_device::remap(int space_id, offs_t start, offs_t end) +{ + if (space_id == AS_PROGRAM) + { + m_isa->install_memory(0xa0000, 0xbffff, read8sm_delegate(*m_vga, FUNC(wd90c11a_vga_device::mem_r)), write8sm_delegate(*m_vga, FUNC(wd90c11a_vga_device::mem_w))); + m_isa->install_rom(this, 0xc0000, 0xc7fff, "vga_rom"); + } + else if (space_id == AS_IO) + m_isa->install_device(0x0000, 0xffff, *this, &isa16_wd90c11_lr_device::io_isa_map); } + /****************** * * WD90C30-LR @@ -408,19 +461,32 @@ void isa16_wd90c30_lr_device::device_add_mconfig(machine_config &config) void isa16_wd90c30_lr_device::io_isa_map(address_map &map) { - map(0x00, 0x2f).m(m_vga, FUNC(wd90c30_vga_device::io_map)); + map(0x03b0, 0x03df).m(m_vga, FUNC(wd90c30_vga_device::io_map)); } void isa16_wd90c30_lr_device::device_start() { set_isa_device(); +} - m_isa->install_rom(this, 0xc0000, 0xc7fff, "vga_rom"); +void isa16_wd90c30_lr_device::device_reset() +{ + remap(AS_PROGRAM, 0, 0xfffff); + remap(AS_IO, 0, 0xffff); +} - m_isa->install_memory(0xa0000, 0xbffff, read8sm_delegate(*m_vga, FUNC(wd90c30_vga_device::mem_r)), write8sm_delegate(*m_vga, FUNC(wd90c30_vga_device::mem_w))); - m_isa->install_device(0x03b0, 0x03df, *this, &isa16_wd90c30_lr_device::io_isa_map); +void isa16_wd90c30_lr_device::remap(int space_id, offs_t start, offs_t end) +{ + if (space_id == AS_PROGRAM) + { + m_isa->install_memory(0xa0000, 0xbffff, read8sm_delegate(*m_vga, FUNC(wd90c30_vga_device::mem_r)), write8sm_delegate(*m_vga, FUNC(wd90c30_vga_device::mem_w))); + m_isa->install_rom(this, 0xc0000, 0xc7fff, "vga_rom"); + } + else if (space_id == AS_IO) + m_isa->install_device(0x0000, 0xffff, *this, &isa16_wd90c30_lr_device::io_isa_map); } + /****************** * * WD90C31-LR @@ -460,18 +526,19 @@ void isa16_wd90c31_lr_device::device_add_mconfig(machine_config &config) void isa16_wd90c31_lr_device::io_isa_map(address_map &map) { - map(0x00, 0x2f).m(m_vga, FUNC(wd90c31_vga_device::io_map)); + map(0x03b0, 0x03df).m(m_vga, FUNC(wd90c31_vga_device::io_map)); + map(0x23c0, 0x23c7).m(m_vga, FUNC(wd90c31_vga_device::ext_io_map)); } void isa16_wd90c31_lr_device::device_start() { set_isa_device(); +} - m_isa->install_rom(this, 0xc0000, 0xc7fff, "vga_rom"); - - m_isa->install_memory(0xa0000, 0xbffff, read8sm_delegate(*m_vga, FUNC(wd90c31_vga_device::mem_r)), write8sm_delegate(*m_vga, FUNC(wd90c31_vga_device::mem_w))); - m_isa->install_device(0x03b0, 0x03df, *this, &isa16_wd90c31_lr_device::io_isa_map); - m_isa->install_device(0x23c0, 0x23c7, *m_vga, &wd90c31_vga_device::ext_io_map); +void isa16_wd90c31_lr_device::device_reset() +{ + remap(AS_PROGRAM, 0, 0xfffff); + remap(AS_IO, 0, 0xffff); } void isa16_wd90c31_lr_device::remap(int space_id, offs_t start, offs_t end) @@ -484,8 +551,7 @@ void isa16_wd90c31_lr_device::remap(int space_id, offs_t start, offs_t end) } else if (space_id == AS_IO) { - m_isa->install_device(0x03b0, 0x03df, *this, &isa16_wd90c31_lr_device::io_isa_map); - m_isa->install_device(0x23c0, 0x23c7, *m_vga, &wd90c31_vga_device::ext_io_map); + m_isa->install_device(0x0000, 0xffff, *this, &isa16_wd90c31_lr_device::io_isa_map); } } @@ -531,20 +597,36 @@ void isa16_wd90c31a_lr_device::device_add_mconfig(machine_config &config) void isa16_wd90c31a_lr_device::io_isa_map(address_map &map) { - map(0x00, 0x2f).m(m_vga, FUNC(wd90c31_vga_device::io_map)); + map(0x03b0, 0x03df).m(m_vga, FUNC(wd90c31_vga_device::io_map)); + map(0x23c0, 0x23c7).m(m_vga, FUNC(wd90c31_vga_device::ext_io_map)); } void isa16_wd90c31a_lr_device::device_start() { set_isa_device(); +} - m_isa->install_rom(this, 0xc0000, 0xc7fff, "vga_rom"); +void isa16_wd90c31a_lr_device::device_reset() +{ + remap(AS_PROGRAM, 0, 0xfffff); + remap(AS_IO, 0, 0xffff); +} - m_isa->install_memory(0xa0000, 0xbffff, read8sm_delegate(*m_vga, FUNC(wd90c31_vga_device::mem_r)), write8sm_delegate(*m_vga, FUNC(wd90c31_vga_device::mem_w))); - m_isa->install_device(0x03b0, 0x03df, *this, &isa16_wd90c31a_lr_device::io_isa_map); - m_isa->install_device(0x23c0, 0x23c7, *m_vga, &wd90c31_vga_device::ext_io_map); +void isa16_wd90c31a_lr_device::remap(int space_id, offs_t start, offs_t end) +{ + if (space_id == AS_PROGRAM) + { + m_isa->install_rom(this, 0xc0000, 0xc7fff, "vga_rom"); + + m_isa->install_memory(0xa0000, 0xbffff, read8sm_delegate(*m_vga, FUNC(wd90c31_vga_device::mem_r)), write8sm_delegate(*m_vga, FUNC(wd90c31_vga_device::mem_w))); + } + else if (space_id == AS_IO) + { + m_isa->install_device(0x0000, 0xffff, *this, &isa16_wd90c31a_lr_device::io_isa_map); + } } + /****************** * * WD90C31A-ZS @@ -583,20 +665,36 @@ void isa16_wd90c31a_zs_device::device_add_mconfig(machine_config &config) void isa16_wd90c31a_zs_device::io_isa_map(address_map &map) { - map(0x00, 0x2f).m(m_vga, FUNC(wd90c31_vga_device::io_map)); + map(0x03b0, 0x03df).m(m_vga, FUNC(wd90c31_vga_device::io_map)); + map(0x23c0, 0x23c7).m(m_vga, FUNC(wd90c31_vga_device::ext_io_map)); } void isa16_wd90c31a_zs_device::device_start() { set_isa_device(); +} - m_isa->install_rom(this, 0xc0000, 0xc7fff, "vga_rom"); +void isa16_wd90c31a_zs_device::device_reset() +{ + remap(AS_PROGRAM, 0, 0xfffff); + remap(AS_IO, 0, 0xffff); +} - m_isa->install_memory(0xa0000, 0xbffff, read8sm_delegate(*m_vga, FUNC(wd90c31_vga_device::mem_r)), write8sm_delegate(*m_vga, FUNC(wd90c31_vga_device::mem_w))); - m_isa->install_device(0x03b0, 0x03df, *this, &isa16_wd90c31a_zs_device::io_isa_map); - m_isa->install_device(0x23c0, 0x23c7, *m_vga, &wd90c31_vga_device::ext_io_map); +void isa16_wd90c31a_zs_device::remap(int space_id, offs_t start, offs_t end) +{ + if (space_id == AS_PROGRAM) + { + m_isa->install_rom(this, 0xc0000, 0xc7fff, "vga_rom"); + + m_isa->install_memory(0xa0000, 0xbffff, read8sm_delegate(*m_vga, FUNC(wd90c31_vga_device::mem_r)), write8sm_delegate(*m_vga, FUNC(wd90c31_vga_device::mem_w))); + } + else if (space_id == AS_IO) + { + m_isa->install_device(0x0000, 0xffff, *this, &isa16_wd90c31a_zs_device::io_isa_map); + } } + /****************** * * WD90C33-ZZ @@ -636,17 +734,35 @@ void isa16_wd90c33_zz_device::device_add_mconfig(machine_config &config) void isa16_wd90c33_zz_device::io_isa_map(address_map &map) { - map(0x00, 0x2f).m(m_vga, FUNC(wd90c33_vga_device::io_map)); + map(0x03b0, 0x03df).m(m_vga, FUNC(wd90c33_vga_device::io_map)); + map(0x23c0, 0x23c7).m(m_vga, FUNC(wd90c33_vga_device::ext_io_map)); + map(0x23d0, 0x23d3).m(m_vga, FUNC(wd90c33_vga_device::localbus_if_map)); + // NOTE: ct486 BIOS setup will drop in MDA without explicit setup mode + map(0x46e8, 0x46e8).w(m_vga, FUNC(wd90c33_vga_device::mode_setup_w)); } void isa16_wd90c33_zz_device::device_start() { set_isa_device(); +} - m_isa->install_rom(this, 0xc0000, 0xc7fff, "vga_rom"); +void isa16_wd90c33_zz_device::device_reset() +{ + remap(AS_PROGRAM, 0, 0xfffff); + remap(AS_IO, 0, 0xffff); +} + +void isa16_wd90c33_zz_device::remap(int space_id, offs_t start, offs_t end) +{ + if (space_id == AS_PROGRAM) + { + m_isa->install_rom(this, 0xc0000, 0xc7fff, "vga_rom"); - m_isa->install_memory(0xa0000, 0xbffff, read8sm_delegate(*m_vga, FUNC(wd90c33_vga_device::mem_r)), write8sm_delegate(*m_vga, FUNC(wd90c33_vga_device::mem_w))); - m_isa->install_device(0x03b0, 0x03df, *this, &isa16_wd90c33_zz_device::io_isa_map); - m_isa->install_device(0x23c0, 0x23cf, *m_vga, &wd90c33_vga_device::ext_io_map); - m_isa->install_device(0x23d0, 0x23d3, *m_vga, &wd90c33_vga_device::localbus_if_map); + m_isa->install_memory(0xa0000, 0xbffff, read8sm_delegate(*m_vga, FUNC(wd90c33_vga_device::mem_r)), write8sm_delegate(*m_vga, FUNC(wd90c33_vga_device::mem_w))); + } + else if (space_id == AS_IO) + { + m_isa->install_device(0x0000, 0xffff, *this, &isa16_wd90c33_zz_device::io_isa_map); + } } + |
