pet/cbm2: HSG/HRG WIP. (nw)

This commit is contained in:
Curt Coder 2016-01-03 21:00:27 +02:00
parent cb4b0693cd
commit 5bcf71db9a
3 changed files with 76 additions and 31 deletions

View File

@ -14,6 +14,7 @@
- version A (EF9365, 512x512 interlaced, 1 page)
- version B (EF9366, 512x256 non-interlaced, 2 pages)
- 256KB version ROM
*/
@ -35,8 +36,8 @@
// DEVICE DEFINITIONS
//**************************************************************************
const device_type CBM2_HRG_A = &device_creator<cbm2_graphic_cartridge_a_device>;
const device_type CBM2_HRG_B = &device_creator<cbm2_graphic_cartridge_b_device>;
const device_type CBM2_HRG_A = &device_creator<cbm2_hrg_a_t>;
const device_type CBM2_HRG_B = &device_creator<cbm2_hrg_b_t>;
//-------------------------------------------------
@ -53,12 +54,32 @@ ROM_END
// rom_region - device-specific ROM region
//-------------------------------------------------
const rom_entry *cbm2_graphic_cartridge_device::device_rom_region() const
const rom_entry *cbm2_hrg_t::device_rom_region() const
{
return ROM_NAME( cbm2_hrg );
}
//-------------------------------------------------
// ADDRESS_MAP( hrg_a_map )
//-------------------------------------------------
static ADDRESS_MAP_START( hrg_a_map, AS_0, 8, cbm2_hrg_a_t )
ADDRESS_MAP_GLOBAL_MASK(0x7fff)
AM_RANGE(0x0000, 0x7fff) AM_RAM
ADDRESS_MAP_END
//-------------------------------------------------
// ADDRESS_MAP( hrg_b_map )
//-------------------------------------------------
static ADDRESS_MAP_START( hrg_b_map, AS_0, 8, cbm2_hrg_b_t )
ADDRESS_MAP_GLOBAL_MASK(0x3fff)
AM_RANGE(0x0000, 0x3fff) AM_RAM
ADDRESS_MAP_END
//-------------------------------------------------
// MACHINE_CONFIG_FRAGMENT( cbm2_hrg_a )
//-------------------------------------------------
@ -69,9 +90,11 @@ static MACHINE_CONFIG_FRAGMENT( cbm2_hrg_a )
MCFG_SCREEN_SIZE(512, 512)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 512-1)
MCFG_SCREEN_REFRESH_RATE(25)
MCFG_PALETTE_ADD_MONOCHROME_GREEN("palette")
MCFG_DEVICE_ADD(EF9365_TAG, EF9365, 1750000)
MCFG_VIDEO_SET_SCREEN(SCREEN_TAG)
MCFG_DEVICE_ADDRESS_MAP(AS_0, hrg_a_map)
MCFG_EF936X_PALETTE("palette")
MCFG_EF936X_BITPLANES_CNT(1);
MCFG_EF936X_DISPLAYMODE(EF936X_512x512_DISPLAY_MODE);
@ -88,9 +111,11 @@ static MACHINE_CONFIG_FRAGMENT( cbm2_hrg_b )
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
MCFG_SCREEN_REFRESH_RATE(50)
MCFG_PALETTE_ADD_MONOCHROME_GREEN("palette")
MCFG_DEVICE_ADD(EF9366_TAG, EF9365, 1750000)
MCFG_VIDEO_SET_SCREEN(SCREEN_TAG)
MCFG_DEVICE_ADDRESS_MAP(AS_0, hrg_b_map)
MCFG_EF936X_PALETTE("palette")
MCFG_EF936X_BITPLANES_CNT(1);
MCFG_EF936X_DISPLAYMODE(EF936X_512x256_DISPLAY_MODE);
@ -102,12 +127,12 @@ MACHINE_CONFIG_END
// machine configurations
//-------------------------------------------------
machine_config_constructor cbm2_graphic_cartridge_a_device::device_mconfig_additions() const
machine_config_constructor cbm2_hrg_a_t::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( cbm2_hrg_a );
}
machine_config_constructor cbm2_graphic_cartridge_b_device::device_mconfig_additions() const
machine_config_constructor cbm2_hrg_b_t::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( cbm2_hrg_b );
}
@ -119,10 +144,10 @@ machine_config_constructor cbm2_graphic_cartridge_b_device::device_mconfig_addit
//**************************************************************************
//-------------------------------------------------
// cbm2_graphic_cartridge_device - constructor
// cbm2_hrg_t - constructor
//-------------------------------------------------
cbm2_graphic_cartridge_device::cbm2_graphic_cartridge_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source) :
cbm2_hrg_t::cbm2_hrg_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source) :
device_t(mconfig, type, name, tag, owner, clock, shortname, source),
device_cbm2_expansion_card_interface(mconfig, *this),
m_gdc(*this, EF9366_TAG),
@ -130,13 +155,13 @@ cbm2_graphic_cartridge_device::cbm2_graphic_cartridge_device(const machine_confi
{
}
cbm2_graphic_cartridge_a_device::cbm2_graphic_cartridge_a_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
cbm2_graphic_cartridge_device(mconfig, CBM2_HRG_A, "CBM 500/600/700 High Resolution Graphics (A)", tag, owner, clock, "cbm2_hrga", __FILE__)
cbm2_hrg_a_t::cbm2_hrg_a_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
cbm2_hrg_t(mconfig, CBM2_HRG_A, "CBM 500/600/700 High Resolution Graphics (A)", tag, owner, clock, "cbm2_hrga", __FILE__)
{
}
cbm2_graphic_cartridge_b_device::cbm2_graphic_cartridge_b_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
cbm2_graphic_cartridge_device(mconfig, CBM2_HRG_B, "CBM 500/600/700 High Resolution Graphics (B)", tag, owner, clock, "cbm2_hrgb", __FILE__)
cbm2_hrg_b_t::cbm2_hrg_b_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
cbm2_hrg_t(mconfig, CBM2_HRG_B, "CBM 500/600/700 High Resolution Graphics (B)", tag, owner, clock, "cbm2_hrgb", __FILE__)
{
}
@ -145,10 +170,8 @@ cbm2_graphic_cartridge_b_device::cbm2_graphic_cartridge_b_device(const machine_c
// device_start - device-specific startup
//-------------------------------------------------
void cbm2_graphic_cartridge_device::device_start()
void cbm2_hrg_t::device_start()
{
m_gdc->set_color_entry(0, 0, 0, 0);
m_gdc->set_color_entry(1, 0, 0xff, 00);
}
@ -156,7 +179,7 @@ void cbm2_graphic_cartridge_device::device_start()
// device_reset - device-specific reset
//-------------------------------------------------
void cbm2_graphic_cartridge_device::device_reset()
void cbm2_hrg_t::device_reset()
{
m_gdc->reset();
}
@ -166,7 +189,7 @@ void cbm2_graphic_cartridge_device::device_reset()
// cbm2_bd_r - cartridge data read
//-------------------------------------------------
UINT8 cbm2_graphic_cartridge_device::cbm2_bd_r(address_space &space, offs_t offset, UINT8 data, int csbank1, int csbank2, int csbank3)
UINT8 cbm2_hrg_t::cbm2_bd_r(address_space &space, offs_t offset, UINT8 data, int csbank1, int csbank2, int csbank3)
{
if (!csbank3)
{
@ -197,7 +220,7 @@ UINT8 cbm2_graphic_cartridge_device::cbm2_bd_r(address_space &space, offs_t offs
}
else if (offset >= 0x7ff0)
{
data = m_gdc->data_r(space, offset & 0x07);
data = m_gdc->data_r(space, offset & 0x0f);
}
}
@ -209,7 +232,7 @@ UINT8 cbm2_graphic_cartridge_device::cbm2_bd_r(address_space &space, offs_t offs
// cbm2_bd_w - cartridge data write
//-------------------------------------------------
void cbm2_graphic_cartridge_device::cbm2_bd_w(address_space &space, offs_t offset, UINT8 data, int csbank1, int csbank2, int csbank3)
void cbm2_hrg_t::cbm2_bd_w(address_space &space, offs_t offset, UINT8 data, int csbank1, int csbank2, int csbank3)
{
if (!csbank3)
{
@ -232,7 +255,7 @@ void cbm2_graphic_cartridge_device::cbm2_bd_w(address_space &space, offs_t offse
}
else if (offset >= 0x7ff0)
{
m_gdc->data_w(space, offset & 0x07, data);
m_gdc->data_w(space, offset & 0x0f, data);
}
}
}

View File

@ -21,14 +21,14 @@
// TYPE DEFINITIONS
//**************************************************************************
// ======================> cbm2_graphic_cartridge_device
// ======================> cbm2_hrg_t
class cbm2_graphic_cartridge_device : public device_t,
public device_cbm2_expansion_card_interface
class cbm2_hrg_t : public device_t,
public device_cbm2_expansion_card_interface
{
public:
// construction/destruction
cbm2_graphic_cartridge_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source);
cbm2_hrg_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source);
// optional information overrides
virtual const rom_entry *device_rom_region() const override;
@ -48,26 +48,26 @@ private:
};
// ======================> cbm2_graphic_cartridge_a_device
// ======================> cbm2_hrg_a_t
class cbm2_graphic_cartridge_a_device : public cbm2_graphic_cartridge_device
class cbm2_hrg_a_t : public cbm2_hrg_t
{
public:
// construction/destruction
cbm2_graphic_cartridge_a_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
cbm2_hrg_a_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;
};
// ======================> cbm2_graphic_cartridge_b_device
// ======================> cbm2_hrg_b_t
class cbm2_graphic_cartridge_b_device : public cbm2_graphic_cartridge_device
class cbm2_hrg_b_t : public cbm2_hrg_t
{
public:
// construction/destruction
cbm2_graphic_cartridge_b_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
cbm2_hrg_b_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
// optional information overrides
virtual machine_config_constructor device_mconfig_additions() const override;

View File

@ -62,6 +62,26 @@ const rom_entry *cbm8000_hsg_t::device_rom_region() const
}
//-------------------------------------------------
// ADDRESS_MAP( hsg_a_map )
//-------------------------------------------------
static ADDRESS_MAP_START( hsg_a_map, AS_0, 8, cbm8000_hsg_a_t )
ADDRESS_MAP_GLOBAL_MASK(0x7fff)
AM_RANGE(0x0000, 0x7fff) AM_RAM
ADDRESS_MAP_END
//-------------------------------------------------
// ADDRESS_MAP( hsg_b_map )
//-------------------------------------------------
static ADDRESS_MAP_START( hsg_b_map, AS_0, 8, cbm8000_hsg_b_t )
ADDRESS_MAP_GLOBAL_MASK(0x3fff)
AM_RANGE(0x0000, 0x3fff) AM_RAM
ADDRESS_MAP_END
//-------------------------------------------------
// MACHINE_CONFIG_FRAGMENT( cbm8000_hsg_a )
//-------------------------------------------------
@ -72,9 +92,11 @@ static MACHINE_CONFIG_FRAGMENT( cbm8000_hsg_a )
MCFG_SCREEN_SIZE(512, 512)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 512-1)
MCFG_SCREEN_REFRESH_RATE(25)
MCFG_PALETTE_ADD_MONOCHROME_GREEN("palette")
MCFG_DEVICE_ADD(EF9365_TAG, EF9365, 1750000)
MCFG_VIDEO_SET_SCREEN(SCREEN_TAG)
MCFG_DEVICE_ADDRESS_MAP(AS_0, hsg_a_map)
MCFG_EF936X_PALETTE("palette")
MCFG_EF936X_BITPLANES_CNT(1);
MCFG_EF936X_DISPLAYMODE(EF936X_512x512_DISPLAY_MODE);
@ -91,9 +113,11 @@ static MACHINE_CONFIG_FRAGMENT( cbm8000_hsg_b )
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
MCFG_SCREEN_REFRESH_RATE(50)
MCFG_PALETTE_ADD_MONOCHROME_GREEN("palette")
MCFG_DEVICE_ADD(EF9366_TAG, EF9365, 1750000)
MCFG_VIDEO_SET_SCREEN(SCREEN_TAG)
MCFG_DEVICE_ADDRESS_MAP(AS_0, hsg_b_map)
MCFG_EF936X_PALETTE("palette")
MCFG_EF936X_BITPLANES_CNT(1);
MCFG_EF936X_DISPLAYMODE(EF936X_512x256_DISPLAY_MODE);
@ -151,8 +175,6 @@ cbm8000_hsg_b_t::cbm8000_hsg_b_t(const machine_config &mconfig, const char *tag,
void cbm8000_hsg_t::device_start()
{
m_gdc->set_color_entry(0, 0, 0, 0);
m_gdc->set_color_entry(1, 0, 0xff, 00);
}