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