mirror of
https://github.com/holub/mame
synced 2025-06-02 19:06:43 +03:00
(MESS) pc1640: Added ISA card for integrated video. (nw)
This commit is contained in:
parent
89830c4904
commit
5919be052a
3
.gitattributes
vendored
3
.gitattributes
vendored
@ -8215,6 +8215,8 @@ src/mess/video/isa_ega.c svneol=native#text/plain
|
||||
src/mess/video/isa_ega.h svneol=native#text/plain
|
||||
src/mess/video/isa_mda.c svneol=native#text/plain
|
||||
src/mess/video/isa_mda.h svneol=native#text/plain
|
||||
src/mess/video/isa_pc1640_iga.c svneol=native#text/plain
|
||||
src/mess/video/isa_pc1640_iga.h svneol=native#text/plain
|
||||
src/mess/video/isa_svga_cirrus.c svneol=native#text/plain
|
||||
src/mess/video/isa_svga_cirrus.h svneol=native#text/plain
|
||||
src/mess/video/isa_svga_s3.c svneol=native#text/plain
|
||||
@ -8281,7 +8283,6 @@ src/mess/video/pc1350.c svneol=native#text/plain
|
||||
src/mess/video/pc1401.c svneol=native#text/plain
|
||||
src/mess/video/pc1403.c svneol=native#text/plain
|
||||
src/mess/video/pc1512.c svneol=native#text/plain
|
||||
src/mess/video/pc1640.c svneol=native#text/plain
|
||||
src/mess/video/pc4.c svneol=native#text/plain
|
||||
src/mess/video/pc8401a.c svneol=native#text/plain
|
||||
src/mess/video/pc_aga.c svneol=native#text/plain
|
||||
|
@ -480,7 +480,7 @@ READ8_MEMBER( pc1640_state::io_r )
|
||||
else if (addr >= 0x070 && addr <= 0x073) { data = m_rtc->read(space, offset & 0x01); decoded = true; }
|
||||
else if (addr >= 0x078 && addr <= 0x07f) { data = mouse_r(space, offset & 0x07); decoded = true; }
|
||||
else if (addr >= 0x378 && addr <= 0x37b) { data = printer_r(space, offset & 0x03); decoded = true; }
|
||||
else if (addr >= 0x3b0 && addr <= 0x3df) { data = iga_r(space, addr - 0x3b0); decoded = true; }
|
||||
else if (addr >= 0x3b0 && addr <= 0x3df) { decoded = true; }
|
||||
else if (addr >= 0x3f4 && addr <= 0x3f4) { data = m_fdc->fdc->msr_r(space, offset & 0x01); decoded = true; }
|
||||
else if (addr >= 0x3f5 && addr <= 0x3f5) { data = m_fdc->fdc->fifo_r(space, offset & 0x01); decoded = true; }
|
||||
else if (addr >= 0x3f8 && addr <= 0x3ff) { data = m_uart->ins8250_r(space, offset & 0x07); decoded = true; }
|
||||
@ -556,9 +556,6 @@ ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( pc1640_mem, AS_PROGRAM, 16, pc1640_state )
|
||||
AM_RANGE(0x00000, 0x9ffff) AM_RAM
|
||||
AM_RANGE(0xa0000, 0xbffff) AM_READWRITE8(video_ram_r, video_ram_w, 0xffff)
|
||||
AM_RANGE(0xc0000, 0xc7fff) AM_ROM AM_REGION("iga", 0)
|
||||
// AM_RANGE(0xc8000, 0xc9fff) AM_ROM AM_REGION("hdc", 0)
|
||||
AM_RANGE(0xf0000, 0xf3fff) AM_MIRROR(0xc000) AM_ROM AM_REGION(I8086_TAG, 0)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
@ -579,7 +576,6 @@ static ADDRESS_MAP_START( pc1640_io, AS_IO, 16, pc1640_state )
|
||||
AM_RANGE(0x080, 0x083) AM_WRITE8(dma_page_w, 0xffff)
|
||||
AM_RANGE(0x0a0, 0x0a1) AM_WRITE8(nmi_mask_w, 0xff00)
|
||||
AM_RANGE(0x378, 0x37b) AM_WRITE8(printer_w, 0xffff)
|
||||
AM_RANGE(0x3b0, 0x3df) AM_WRITE8(iga_w, 0xffff)
|
||||
AM_RANGE(0x3f2, 0x3f3) AM_DEVWRITE8(PC_FDC_XT_TAG, pc_fdc_xt_device, dor_w, 0x00ff)
|
||||
AM_RANGE(0x3f4, 0x3f5) AM_DEVWRITE8(PC_FDC_XT_TAG ":upd765", upd765_family_device, fifo_w, 0xff00)
|
||||
AM_RANGE(0x3f8, 0x3ff) AM_DEVWRITE8(INS8250_TAG, ins8250_device, ins8250_w, 0xffff)
|
||||
@ -1039,6 +1035,10 @@ static const centronics_interface centronics_intf =
|
||||
// isa8bus_interface isabus_intf
|
||||
//-------------------------------------------------
|
||||
|
||||
SLOT_INTERFACE_START( pc1640_isa8_cards )
|
||||
SLOT_INTERFACE_INTERNAL("iga", ISA8_PC1640_IGA)
|
||||
SLOT_INTERFACE_END
|
||||
|
||||
static const isa8bus_interface isabus_intf =
|
||||
{
|
||||
// interrupts
|
||||
@ -1276,9 +1276,6 @@ static MACHINE_CONFIG_START( pc1640, pc1640_state )
|
||||
MCFG_CPU_PROGRAM_MAP(pc1640_mem)
|
||||
MCFG_CPU_IO_MAP(pc1640_io)
|
||||
|
||||
// video
|
||||
MCFG_FRAGMENT_ADD(pc1640_video)
|
||||
|
||||
// sound
|
||||
MCFG_SPEAKER_STANDARD_MONO("mono")
|
||||
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
|
||||
@ -1302,6 +1299,8 @@ static MACHINE_CONFIG_START( pc1640, pc1640_state )
|
||||
MCFG_ISA8_SLOT_ADD(ISA_BUS_TAG, "isa1", pc_isa8_cards, "wdxt_gen", false)
|
||||
MCFG_ISA8_SLOT_ADD(ISA_BUS_TAG, "isa2", pc_isa8_cards, NULL, false)
|
||||
MCFG_ISA8_SLOT_ADD(ISA_BUS_TAG, "isa3", pc_isa8_cards, NULL, false)
|
||||
MCFG_ISA8_SLOT_ADD(ISA_BUS_TAG, "isa4", pc_isa8_cards, NULL, false)
|
||||
MCFG_ISA8_SLOT_ADD(ISA_BUS_TAG, "isa5", pc1640_isa8_cards, "iga", false)
|
||||
|
||||
// internal ram
|
||||
MCFG_RAM_ADD(RAM_TAG)
|
||||
@ -1374,9 +1373,6 @@ ROM_START( pc1640 )
|
||||
ROM_SYSTEM_BIOS( 2, "88xx", "Week ?/1988" )
|
||||
ROMX_LOAD( "40044 88xx.ic132", 0x0000, 0x2000, CRC(6090f782) SHA1(e21ae524d5b4d00696d293dbd4fe4d7bca22e277), ROM_SKIP(1) | ROM_BIOS(3) )
|
||||
ROMX_LOAD( "40043 88xx.ic129", 0x0001, 0x2000, CRC(9219d0aa) SHA1(dde1a46c8f83e413d7070f1356fc91b9f595a8b6), ROM_SKIP(1) | ROM_BIOS(3) )
|
||||
|
||||
ROM_REGION16_LE( 0x8000, "iga", 0)
|
||||
ROM_LOAD( "40100.ic913", 0x0000, 0x8000, CRC(d2d1f1ae) SHA1(98302006ee38a17c09bd75504cc18c0649174e33) ) // 8736 E
|
||||
ROM_END
|
||||
|
||||
|
||||
|
@ -21,6 +21,7 @@
|
||||
#include "machine/serial.h"
|
||||
#include "sound/speaker.h"
|
||||
#include "video/mc6845.h"
|
||||
#include "video/isa_pc1640_iga.h"
|
||||
|
||||
#define I8086_TAG "ic120"
|
||||
#define I8087_TAG "ic119"
|
||||
@ -35,8 +36,8 @@
|
||||
#define CENTRONICS_TAG "centronics"
|
||||
#define SPEAKER_TAG "speaker"
|
||||
#define ISA_BUS_TAG "isa"
|
||||
#define SCREEN_TAG "screen"
|
||||
#define RS232_TAG "rs232"
|
||||
#define SCREEN_TAG "screen"
|
||||
|
||||
class pc1512_state : public driver_device
|
||||
{
|
||||
@ -88,7 +89,7 @@ public:
|
||||
required_device<mc146818_device> m_rtc;
|
||||
required_device<pc_fdc_xt_device> m_fdc;
|
||||
required_device<ins8250_device> m_uart;
|
||||
required_device<ams40041_device> m_vdu;
|
||||
optional_device<ams40041_device> m_vdu;
|
||||
required_device<centronics_device> m_centronics;
|
||||
required_device<speaker_sound_device> m_speaker;
|
||||
required_device<pc1512_keyboard_device> m_kb;
|
||||
@ -229,40 +230,16 @@ public:
|
||||
virtual void machine_start();
|
||||
virtual void machine_reset();
|
||||
|
||||
virtual void video_start();
|
||||
|
||||
UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
|
||||
|
||||
DECLARE_READ8_MEMBER( video_ram_r );
|
||||
DECLARE_WRITE8_MEMBER( video_ram_w );
|
||||
DECLARE_READ8_MEMBER( io_r );
|
||||
DECLARE_READ8_MEMBER( iga_r );
|
||||
DECLARE_WRITE8_MEMBER( iga_w );
|
||||
DECLARE_READ8_MEMBER( printer_r );
|
||||
|
||||
required_ioport m_sw;
|
||||
|
||||
|
||||
// video state
|
||||
int m_opt;
|
||||
UINT8 m_egc_ctrl;
|
||||
UINT8 m_emcr; // extended mode control register
|
||||
UINT8 m_emcrp; // extended mode control register protection read counter
|
||||
UINT8 m_sar; // sequencer address register
|
||||
UINT8 m_sdr[8]; // sequencer data registers
|
||||
UINT8 m_gcar; // graphics controller address register
|
||||
UINT8 m_gcdr[16]; // graphics controller data registers
|
||||
UINT8 m_crtcar; // CRT controller address register
|
||||
UINT8 m_crtcdr[32]; // CRT controller data registers
|
||||
UINT8 m_plr; // Plantronics mode register
|
||||
};
|
||||
|
||||
// ---------- defined in video/pc1512.c ----------
|
||||
|
||||
MACHINE_CONFIG_EXTERN( pc1512_video );
|
||||
|
||||
// ---------- defined in video/pc1640.c ----------
|
||||
|
||||
MACHINE_CONFIG_EXTERN( pc1640_video );
|
||||
|
||||
#endif
|
||||
|
@ -804,6 +804,7 @@ $(MESSOBJ)/isa.a: \
|
||||
$(MESS_VIDEO)/isa_svga_tseng.o \
|
||||
$(MESS_VIDEO)/isa_svga_s3.o \
|
||||
$(MESS_VIDEO)/s3virge.o \
|
||||
$(MESS_VIDEO)/isa_pc1640_iga.o \
|
||||
|
||||
#-------------------------------------------------
|
||||
# manufacturer-specific groupings for drivers
|
||||
@ -867,7 +868,6 @@ $(MESSOBJ)/amstrad.a: \
|
||||
$(MESS_DRIVERS)/pc1512.o \
|
||||
$(MESS_MACHINE)/pc1512kb.o \
|
||||
$(MESS_VIDEO)/pc1512.o \
|
||||
$(MESS_VIDEO)/pc1640.o \
|
||||
$(MESS_VIDEO)/nc.o \
|
||||
$(MESS_DRIVERS)/nc.o \
|
||||
$(MESS_MACHINE)/nc.o \
|
||||
|
@ -1,36 +1,176 @@
|
||||
/*
|
||||
/**********************************************************************
|
||||
|
||||
TODO:
|
||||
Amstrad PC1640 Integrated Graphics Adapter emulation
|
||||
|
||||
- EGA
|
||||
- CGA
|
||||
- Plantronics
|
||||
- Hercules
|
||||
- MDA
|
||||
Copyright MESS Team.
|
||||
Visit http://mamedev.org for licensing and usage restrictions.
|
||||
|
||||
*/
|
||||
**********************************************************************
|
||||
|
||||
#include "includes/pc1512.h"
|
||||
This display controller is integrated on the PC1640 motherboard
|
||||
but wired to the ISA bus, and can be disabled with a DIP switch.
|
||||
|
||||
WD Paradise PEGA 1A 38304B 2116-002 8745AAA JAPAN (84 pin PLCC)
|
||||
|
||||
Single chip multimode EGA video controller with
|
||||
integral 6845 CRTC. Provides 100% IBM EGA, CGA,
|
||||
MDA, Hercules graphics and Plantronics COLORPLUS*
|
||||
compatibility
|
||||
|
||||
**********************************************************************/
|
||||
|
||||
#include "isa_pc1640_iga.h"
|
||||
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// CONSTANTS
|
||||
// MACROS / CONSTANTS
|
||||
//**************************************************************************
|
||||
|
||||
#define LOG 0
|
||||
#define SCREEN_TAG "screen"
|
||||
#define PEGA1A_TAG "ic910"
|
||||
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// VIDEO RAM ACCESS
|
||||
// DEVICE DEFINITIONS
|
||||
//**************************************************************************
|
||||
|
||||
const device_type ISA8_PC1640_IGA = &device_creator<isa8_pc1640_iga_device>;
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// ROM( pc1640_iga )
|
||||
//-------------------------------------------------
|
||||
|
||||
ROM_START( pc1640_iga )
|
||||
ROM_REGION16_LE( 0x8000, "iga", 0)
|
||||
ROM_LOAD( "40100.ic913", 0x0000, 0x8000, CRC(d2d1f1ae) SHA1(98302006ee38a17c09bd75504cc18c0649174e33) ) // 8736 E
|
||||
ROM_END
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// rom_region - device-specific ROM region
|
||||
//-------------------------------------------------
|
||||
|
||||
const rom_entry *isa8_pc1640_iga_device::device_rom_region() const
|
||||
{
|
||||
return ROM_NAME( pc1640_iga );
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// mc6845_interface crtc_intf
|
||||
//-------------------------------------------------
|
||||
|
||||
static MC6845_UPDATE_ROW( pc1640_update_row )
|
||||
{
|
||||
}
|
||||
|
||||
static MC6845_INTERFACE( crtc_intf )
|
||||
{
|
||||
SCREEN_TAG,
|
||||
false,
|
||||
8,
|
||||
NULL,
|
||||
pc1640_update_row,
|
||||
NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
NULL
|
||||
};
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// SCREEN_UPDATE( pc1640_iga )
|
||||
//-------------------------------------------------
|
||||
|
||||
UINT32 isa8_pc1640_iga_device::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// MACHINE_DRIVER( pc1640_iga )
|
||||
//-------------------------------------------------
|
||||
|
||||
static MACHINE_CONFIG_FRAGMENT( pc1640_iga )
|
||||
MCFG_SCREEN_ADD(SCREEN_TAG, RASTER)
|
||||
MCFG_SCREEN_UPDATE_DEVICE(DEVICE_SELF, isa8_pc1640_iga_device, screen_update)
|
||||
MCFG_SCREEN_SIZE(80*8, 25*8)
|
||||
MCFG_SCREEN_VISIBLE_AREA(0, 80*8-1, 0, 25*8-1)
|
||||
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
|
||||
MCFG_SCREEN_REFRESH_RATE(60)
|
||||
|
||||
MCFG_PALETTE_LENGTH(64)
|
||||
|
||||
MCFG_MC6845_ADD(PEGA1A_TAG, AMS40041, XTAL_28_63636MHz/32, crtc_intf)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// machine_config_additions - device-specific
|
||||
// machine configurations
|
||||
//-------------------------------------------------
|
||||
|
||||
machine_config_constructor isa8_pc1640_iga_device::device_mconfig_additions() const
|
||||
{
|
||||
return MACHINE_CONFIG_NAME( pc1640_iga );
|
||||
}
|
||||
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// LIVE DEVICE
|
||||
//**************************************************************************
|
||||
|
||||
//-------------------------------------------------
|
||||
// isa8_pc1640_iga_device - constructor
|
||||
//-------------------------------------------------
|
||||
|
||||
isa8_pc1640_iga_device::isa8_pc1640_iga_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
|
||||
: device_t(mconfig, ISA8_PC1640_IGA, "Amstrad PC1640 IGA", tag, owner, clock, "pc1640_iga", __FILE__),
|
||||
device_isa8_card_interface(mconfig, *this),
|
||||
m_vdu(*this, PEGA1A_TAG),
|
||||
m_video_ram(*this, "video_ram")
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_start - device-specific startup
|
||||
//-------------------------------------------------
|
||||
|
||||
void isa8_pc1640_iga_device::device_start()
|
||||
{
|
||||
set_isa_device();
|
||||
|
||||
m_isa->install_rom(this, 0xc0000, 0xc7fff, 0, 0, "iga", "iga");
|
||||
m_isa->install_memory(0xa0000, 0xbffff, 0, 0, READ8_DELEGATE(isa8_pc1640_iga_device, video_ram_r), WRITE8_DELEGATE(isa8_pc1640_iga_device, video_ram_w));
|
||||
m_isa->install_device(0x3b0, 0x3df, 0, 0, READ8_DELEGATE(isa8_pc1640_iga_device, iga_r), WRITE8_DELEGATE(isa8_pc1640_iga_device, iga_w));
|
||||
|
||||
// allocate memory
|
||||
m_video_ram.allocate(0x20000);
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_reset - device-specific reset
|
||||
//-------------------------------------------------
|
||||
|
||||
void isa8_pc1640_iga_device::device_reset()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// video_ram_r -
|
||||
//-------------------------------------------------
|
||||
|
||||
READ8_MEMBER( pc1640_state::video_ram_r )
|
||||
READ8_MEMBER( isa8_pc1640_iga_device::video_ram_r )
|
||||
{
|
||||
UINT8 data = 0;
|
||||
|
||||
@ -47,7 +187,7 @@ READ8_MEMBER( pc1640_state::video_ram_r )
|
||||
// video_ram_w -
|
||||
//-------------------------------------------------
|
||||
|
||||
WRITE8_MEMBER( pc1640_state::video_ram_w )
|
||||
WRITE8_MEMBER( isa8_pc1640_iga_device::video_ram_w )
|
||||
{
|
||||
if (BIT(m_egc_ctrl, 1))
|
||||
{
|
||||
@ -60,7 +200,7 @@ WRITE8_MEMBER( pc1640_state::video_ram_w )
|
||||
// iga_r -
|
||||
//-------------------------------------------------
|
||||
|
||||
READ8_MEMBER( pc1640_state::iga_r )
|
||||
READ8_MEMBER( isa8_pc1640_iga_device::iga_r )
|
||||
{
|
||||
UINT8 data = 0;
|
||||
|
||||
@ -128,7 +268,7 @@ READ8_MEMBER( pc1640_state::iga_r )
|
||||
*/
|
||||
|
||||
// switch sense
|
||||
data |= BIT(m_sw->read(), ((m_egc_ctrl >> 2) & 0x03) ^ 0x03);
|
||||
//data |= BIT(m_sw->read(), ((m_egc_ctrl >> 2) & 0x03) ^ 0x03);
|
||||
break;
|
||||
|
||||
case 0x15: // Sequencer Data Register
|
||||
@ -183,7 +323,7 @@ READ8_MEMBER( pc1640_state::iga_r )
|
||||
// iga_w -
|
||||
//-------------------------------------------------
|
||||
|
||||
WRITE8_MEMBER( pc1640_state::iga_w )
|
||||
WRITE8_MEMBER( isa8_pc1640_iga_device::iga_w )
|
||||
{
|
||||
//logerror("IGA write %03x:%02x\n", offset+0x3b0, data);
|
||||
|
||||
@ -337,66 +477,3 @@ WRITE8_MEMBER( pc1640_state::iga_w )
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// mc6845_interface crtc_intf
|
||||
//-------------------------------------------------
|
||||
|
||||
static MC6845_UPDATE_ROW( pc1640_update_row )
|
||||
{
|
||||
}
|
||||
|
||||
static MC6845_INTERFACE( crtc_intf )
|
||||
{
|
||||
SCREEN_TAG,
|
||||
false,
|
||||
8,
|
||||
NULL,
|
||||
pc1640_update_row,
|
||||
NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
NULL
|
||||
};
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// VIDEO_START( pc1640 )s
|
||||
//-------------------------------------------------
|
||||
|
||||
void pc1640_state::video_start()
|
||||
{
|
||||
// allocate memory
|
||||
m_video_ram.allocate(0x20000);
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// SCREEN_UPDATE( pc1640 )
|
||||
//-------------------------------------------------
|
||||
|
||||
UINT32 pc1640_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// MACHINE_CONFIG( pc1640 )
|
||||
//-------------------------------------------------
|
||||
|
||||
MACHINE_CONFIG_FRAGMENT( pc1640_video )
|
||||
MCFG_SCREEN_ADD(SCREEN_TAG, RASTER)
|
||||
MCFG_SCREEN_UPDATE_DRIVER(pc1640_state, screen_update)
|
||||
MCFG_SCREEN_SIZE(80*8, 25*8)
|
||||
MCFG_SCREEN_VISIBLE_AREA(0, 80*8-1, 0, 25*8-1)
|
||||
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
|
||||
MCFG_SCREEN_REFRESH_RATE(60)
|
||||
|
||||
MCFG_PALETTE_LENGTH(64)
|
||||
|
||||
MCFG_MC6845_ADD(AMS40041_TAG, AMS40041, XTAL_28_63636MHz/32, crtc_intf)
|
||||
MACHINE_CONFIG_END
|
73
src/mess/video/isa_pc1640_iga.h
Normal file
73
src/mess/video/isa_pc1640_iga.h
Normal file
@ -0,0 +1,73 @@
|
||||
/**********************************************************************
|
||||
|
||||
Amstrad PC1640 Integrated Graphics Adapter emulation
|
||||
|
||||
Copyright MESS Team.
|
||||
Visit http://mamedev.org for licensing and usage restrictions.
|
||||
|
||||
**********************************************************************/
|
||||
|
||||
#pragma once
|
||||
|
||||
#ifndef __ISA8_PC1640_IGA__
|
||||
#define __ISA8_PC1640_IGA__
|
||||
|
||||
#include "emu.h"
|
||||
#include "machine/isa.h"
|
||||
#include "video/mc6845.h"
|
||||
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// TYPE DEFINITIONS
|
||||
//**************************************************************************
|
||||
|
||||
// ======================> isa8_pc1640_iga_device
|
||||
|
||||
class isa8_pc1640_iga_device : public device_t,
|
||||
public device_isa8_card_interface
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
isa8_pc1640_iga_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||
|
||||
// optional information overrides
|
||||
virtual machine_config_constructor device_mconfig_additions() const;
|
||||
virtual const rom_entry *device_rom_region() const;
|
||||
|
||||
DECLARE_READ8_MEMBER( video_ram_r );
|
||||
DECLARE_WRITE8_MEMBER( video_ram_w );
|
||||
DECLARE_READ8_MEMBER( iga_r );
|
||||
DECLARE_WRITE8_MEMBER( iga_w );
|
||||
|
||||
UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
|
||||
|
||||
protected:
|
||||
// device-level overrides
|
||||
virtual void device_start();
|
||||
virtual void device_reset();
|
||||
|
||||
private:
|
||||
required_device<ams40041_device> m_vdu;
|
||||
optional_shared_ptr<UINT8> m_video_ram;
|
||||
|
||||
int m_lpen;
|
||||
UINT8 m_egc_ctrl;
|
||||
UINT8 m_emcr; // extended mode control register
|
||||
UINT8 m_emcrp; // extended mode control register protection read counter
|
||||
UINT8 m_sar; // sequencer address register
|
||||
UINT8 m_sdr[8]; // sequencer data registers
|
||||
UINT8 m_gcar; // graphics controller address register
|
||||
UINT8 m_gcdr[16]; // graphics controller data registers
|
||||
UINT8 m_crtcar; // CRT controller address register
|
||||
UINT8 m_crtcdr[32]; // CRT controller data registers
|
||||
UINT8 m_plr; // Plantronics mode register
|
||||
};
|
||||
|
||||
|
||||
// device type definition
|
||||
extern const device_type ISA8_PC1640_IGA;
|
||||
|
||||
|
||||
|
||||
#endif
|
Loading…
Reference in New Issue
Block a user