diff options
author | 2023-07-04 19:33:37 +0200 | |
---|---|---|
committer | 2023-07-04 19:33:37 +0200 | |
commit | e3f493b094a65e818d3564b8928b6166e2c08804 (patch) | |
tree | 42ab53b10b4280894c1e91867d2f749078afe394 /src/devices/bus/isa | |
parent | 863e520f3d462bfafd9e7ac1e55e2792e81f7a3f (diff) |
isa/isa_cards.cpp: add Paradise Systems PVGA1 ISA16 card
Diffstat (limited to 'src/devices/bus/isa')
-rw-r--r-- | src/devices/bus/isa/isa_cards.cpp | 2 | ||||
-rw-r--r-- | src/devices/bus/isa/svga_paradise.cpp | 70 | ||||
-rw-r--r-- | src/devices/bus/isa/svga_paradise.h | 43 |
3 files changed, 115 insertions, 0 deletions
diff --git a/src/devices/bus/isa/isa_cards.cpp b/src/devices/bus/isa/isa_cards.cpp index a5b480737c9..0d04aa72783 100644 --- a/src/devices/bus/isa/isa_cards.cpp +++ b/src/devices/bus/isa/isa_cards.cpp @@ -18,6 +18,7 @@ #include "vga.h" #include "vga_ati.h" #include "svga_cirrus.h" +#include "svga_paradise.h" #include "svga_s3.h" #include "svga_tseng.h" #include "svga_trident.h" @@ -217,6 +218,7 @@ void pc_isa16_cards(device_slot_interface &device) device.option_add("gfxultrap", ISA16_SVGA_GFXULTRAPRO); device.option_add("tvga9000", ISA16_SVGA_TVGA9000); // device.option_add("tgui9680",ISA16_SVGA_TGUI9680); + device.option_add("pvga1a", ISA16_PVGA1A); device.option_add("3c505", ISA16_3C505); device.option_add("mach64", ISA16_SVGA_MACH64); device.option_add("sb16_lle", ISA16_SB16); diff --git a/src/devices/bus/isa/svga_paradise.cpp b/src/devices/bus/isa/svga_paradise.cpp new file mode 100644 index 00000000000..4dcb5cf85a1 --- /dev/null +++ b/src/devices/bus/isa/svga_paradise.cpp @@ -0,0 +1,70 @@ +// license:BSD-3-Clause +// copyright-holders:Angelo Salese +/*************************************************************************** + + ISA SVGA Paradise / Western Digital wrapper + +***************************************************************************/ + +#include "emu.h" +#include "svga_paradise.h" + +#include "screen.h" + +DEFINE_DEVICE_TYPE(ISA16_PVGA1A, isa16_pvga1a_device, "pvga1a", "Paradise Systems PVGA1A Graphics Card") + +isa16_pvga1a_device::isa16_pvga1a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : + device_t(mconfig, ISA16_PVGA1A, tag, owner, clock), + device_isa16_card_interface(mconfig, *this), + m_vga(*this, "vga") +{ +} + +ROM_START( go481 ) + ROM_REGION(0x8000,"vga_rom", 0) + ROM_SYSTEM_BIOS(0, "pvga1a", "Paradise Systems PVGA1A") + ROMX_LOAD("bios.bin", 0x000000, 0x008000, CRC(2be5d405) SHA1(5e3b4ebae221b7ad02f3eaa052178cb39d1d9bbe), ROM_BIOS(0)) + ROM_IGNORE( 0x8000 ) + // Western Digital licensed + ROM_SYSTEM_BIOS(1, "go481", "Olivetti GO481") + ROMX_LOAD("oli_go481_hi.bin", 0x000001, 0x004000, CRC(cda447be) SHA1(f397e3ddd3885666e3151fb4f681abf47fef36ba), ROM_SKIP(1) | ROM_BIOS(1)) + ROM_IGNORE( 0x4000 ) + ROMX_LOAD("oli_go481_lo.bin", 0x000000, 0x004000, CRC(7db97902) SHA1(b93aa9d45942e98fb4932b4db34b82d459060adf), ROM_SKIP(1) | ROM_BIOS(1)) + ROM_IGNORE( 0x4000 ) +ROM_END + +const tiny_rom_entry *isa16_pvga1a_device::device_rom_region() const +{ + return ROM_NAME( go481 ); +} + +void isa16_pvga1a_device::device_add_mconfig(machine_config &config) +{ + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_raw(25.175_MHz_XTAL, 800, 0, 640, 524, 0, 480); + screen.set_screen_update("vga", FUNC(pvga1a_vga_device::screen_update)); + + PVGA1A(config, m_vga, 0); + m_vga->set_screen("screen"); + m_vga->set_vram_size(0x100000); +} + +void isa16_pvga1a_device::io_isa_map(address_map &map) +{ + map(0x00, 0x2f).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() +{ + +} diff --git a/src/devices/bus/isa/svga_paradise.h b/src/devices/bus/isa/svga_paradise.h new file mode 100644 index 00000000000..3972013a5c8 --- /dev/null +++ b/src/devices/bus/isa/svga_paradise.h @@ -0,0 +1,43 @@ +// license:BSD-3-Clause +// copyright-holders:Angelo Salese + +#ifndef MAME_BUS_ISA_SVGA_PARADISE_H +#define MAME_BUS_ISA_SVGA_PARADISE_H + +#pragma once + +#include "isa.h" +#include "video/pc_vga_paradise.h" + +//************************************************************************** +// TYPE DEFINITIONS +//************************************************************************** + +class isa16_pvga1a_device : + public device_t, + public device_isa16_card_interface +{ +public: + // construction/destruction + isa16_pvga1a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + +protected: + // device-level overrides + virtual void device_start() override; + virtual void device_reset() override; + + // optional information overrides + virtual void device_add_mconfig(machine_config &config) override; + virtual const tiny_rom_entry *device_rom_region() const override; + + void io_isa_map(address_map &map); + +private: + required_device<pvga1a_vga_device> m_vga; +}; + + +// device type definition +DECLARE_DEVICE_TYPE(ISA16_PVGA1A, isa16_pvga1a_device) + +#endif // MAME_BUS_ISA_SVGA_PARADISE_H |