(MESS) cbm8296: WIP. (nw)

This commit is contained in:
Curt Coder 2013-03-05 19:55:47 +00:00
parent ab4d9ca569
commit 2f864eae54
6 changed files with 423 additions and 45 deletions

View File

@ -161,7 +161,7 @@ void cbm2_state::bankswitch(offs_t offset, int eras, int ecas, int refen, int ca
READ8_MEMBER( cbm2_state::read )
{
int eras = 1, ecas = 0, refen = 0, cas = 0, ras = 1, sysioen = 1, dramen = 1;
int eras = 1, ecas = 1, refen = 0, cas = 0, ras = 1, sysioen = 1, dramen = 1;
int casseg1 = 1, casseg2 = 1, casseg3 = 1, casseg4 = 1, buframcs = 1, extbufcs = 1, vidramcs = 1;
int diskromcs = 1, csbank1 = 1, csbank2 = 1, csbank3 = 1, basiccs = 1, knbcs = 1, kernalcs = 1;
int crtccs = 1, cs1 = 1, sidcs = 1, extprtcs = 1, ciacs = 1, aciacs = 1, tript1cs = 1, tript2cs = 1;
@ -264,7 +264,7 @@ READ8_MEMBER( cbm2_state::read )
WRITE8_MEMBER( cbm2_state::write )
{
int eras = 1, ecas = 0, refen = 0, cas = 0, ras = 1, sysioen = 1, dramen = 1;
int eras = 1, ecas = 1, refen = 0, cas = 0, ras = 1, sysioen = 1, dramen = 1;
int casseg1 = 1, casseg2 = 1, casseg3 = 1, casseg4 = 1, buframcs = 1, extbufcs = 1, vidramcs = 1;
int diskromcs = 1, csbank1 = 1, csbank2 = 1, csbank3 = 1, basiccs = 1, knbcs = 1, kernalcs = 1;
int crtccs = 1, cs1 = 1, sidcs = 1, extprtcs = 1, ciacs = 1, aciacs = 1, tript1cs = 1, tript2cs = 1;
@ -355,16 +355,14 @@ WRITE8_MEMBER( cbm2_state::write )
READ8_MEMBER( cbm2_state::ext_read )
{
/*int ras = 1, cas = 1, refen = 1, eras = 1, ecas = 0;
#ifdef USE_PLA_DECODE
int ras = 1, cas = 1, refen = 0, eras = 1, ecas = 0;
int casseg1 = 1, casseg2 = 1, casseg3 = 1, casseg4 = 1, rasseg1 = 1, rasseg2 = 1, rasseg3 = 1, rasseg4 = 1;
this->read_pla(offset, ras, cas, refen, eras, ecas, &casseg1, &casseg2, &casseg3, &casseg4, &rasseg1, &rasseg2, &rasseg3, &rasseg4);*/
this->read_pla(offset, ras, cas, refen, eras, ecas, &casseg1, &casseg2, &casseg3, &casseg4, &rasseg1, &rasseg2, &rasseg3, &rasseg4);
UINT8 data = 0xff;
if (offset < 0x40000)
data = m_ram->pointer()[offset];
/*if (!casseg1)
if (!casseg1)
{
data = m_ram->pointer()[offset & 0xffff];
}
@ -379,8 +377,13 @@ READ8_MEMBER( cbm2_state::ext_read )
if (!casseg4 && (m_ram->size() > 0x30000))
{
data = m_ram->pointer()[0x30000 | (offset & 0xffff)];
}*/
}
return data;
#endif
UINT8 data = 0;
if (offset < 0x40000) data = m_ram->pointer()[offset];
return data;
}
@ -391,7 +394,8 @@ READ8_MEMBER( cbm2_state::ext_read )
WRITE8_MEMBER( cbm2_state::ext_write )
{
/*int ras = 1, cas = 1, refen = 1, eras = 1, ecas = 0;
#ifdef USE_PLA_DECODE
int ras = 1, cas = 1, refen = 0, eras = 1, ecas = 0;
int casseg1 = 1, casseg2 = 1, casseg3 = 1, casseg4 = 1, rasseg1 = 1, rasseg2 = 1, rasseg3 = 1, rasseg4 = 1;
this->read_pla(offset, ras, cas, refen, eras, ecas, &casseg1, &casseg2, &casseg3, &casseg4, &rasseg1, &rasseg2, &rasseg3, &rasseg4);
@ -411,10 +415,10 @@ WRITE8_MEMBER( cbm2_state::ext_write )
if (!casseg4 && (m_ram->size() > 0x30000))
{
m_ram->pointer()[0x30000 | (offset & 0xffff)] = data;
}*/
}
#endif
if (offset < 0x40000)
m_ram->pointer()[offset] = data;
if (offset < 0x40000) m_ram->pointer()[offset] = data;
}
@ -1702,10 +1706,14 @@ void cbm2_state::set_busy2(int state)
if (m_busy2)
{
//m_maincpu->set_input_line(INPUT_LINE_HALT, CLEAR_LINE);
m_busen1 = m_dramon;
}
else
{
//m_maincpu->set_input_line(INPUT_LINE_HALT, ASSERT_LINE);
m_busen1 = 0;
}
}

View File

@ -141,12 +141,9 @@ ROM sockets: UA3 2K or 4K character
- SuperPET
- 6809
- OS/9 MMU
- 8096
- 64k expansion
- 8296
- PLA dumps
- high resolution graphics
- rom software list
*/
@ -321,6 +318,186 @@ WRITE8_MEMBER( pet_state::write )
}
//-------------------------------------------------
// read_pla1 -
//-------------------------------------------------
void cbm8296_state::read_pla1(offs_t offset, int phi2, int brw, int noscreen, int noio, int ramsela, int ramsel9, int ramon, int norom,
int &cswff, int &cs9, int &csa, int &csio, int &cse, int &cskb, int &fa12, int &casena1)
{
UINT32 input = (offset & 0xff00) | phi2 << 7 | brw << 6 | noscreen << 5 | noio << 4 | ramsela << 3 | ramsel9 << 2 | ramon << 1 | norom;
//UINT32 data = m_pla1->read(input);
input = BITSWAP16(input,0,10,15,11,9,8,13,14,12,7,6,5,4,3,2,1);
UINT8 data = m_ue6_rom->base()[input];
data = BITSWAP8(data,7,0,1,2,3,4,5,6);
cswff = BIT(data, 0);
cs9 = BIT(data, 1);
csa = BIT(data, 2);
csio = BIT(data, 3);
cse = BIT(data, 4);
cskb = BIT(data, 5);
fa12 = BIT(data, 6);
casena1 = BIT(data, 7);
}
//-------------------------------------------------
// read_pla2 -
//-------------------------------------------------
void cbm8296_state::read_pla2(offs_t offset, int phi2, int brw, int casena1, int &endra, int &noscreen, int &casena2, int &fa15)
{
UINT32 input = BITSWAP8(m_cr, 0,1,2,3,4,5,6,7) << 8 | ((offset >> 8) & 0xf8) | brw << 2 | phi2 << 1 | casena1;
//UINT32 data = m_pla2->read(input);
input = BITSWAP16(input,0,10,15,11,9,8,13,14,12,7,6,5,4,3,2,1);
UINT8 data = m_ue5_rom->base()[input];
data = BITSWAP8(data,7,0,1,2,3,4,5,6);
endra = BIT(data, 4);
noscreen = BIT(data, 5);
casena2 = BIT(data, 6);
fa15 = BIT(data, 7);
}
//-------------------------------------------------
// read -
//-------------------------------------------------
READ8_MEMBER( cbm8296_state::read )
{
int norom = m_exp->norom_r(space, offset, offset >> 12) && !BIT(m_cr, 7);
int phi2 = 1, brw = 1, noscreen = 1, noio = BIT(m_cr, 6);
int ramsela = BIT(m_via_pa, 0), ramsel9 = BIT(m_via_pa, 1), ramon = BIT(m_via_pa, 2);
int cswff = 1, cs9 = 1, csa = 1, csio = 1, cse = 1, cskb = 1, fa12 = 1, fa15 = 1, casena1 = 1, casena2 = 1, endra = 1;
read_pla1(offset, phi2, brw, noscreen, noio, ramsela, ramsel9, ramon, norom,
cswff, cs9, csa, csio, cse, cskb, fa12, casena1);
read_pla2(offset, phi2, brw, casena1, endra, noscreen, casena2, fa15);
read_pla1(offset, phi2, brw, noscreen, noio, ramsela, ramsel9, ramon, norom,
cswff, cs9, csa, csio, cse, cskb, fa12, casena1);
//printf("%04x : cswff %u cs9 %u csa %u csio %u cse %u cskb %u fa12 %u casena1 %u endra %u noscreen %u casena2 %u fa15 %u\n",offset,cswff,cs9,csa,csio,cse,cskb,fa12,casena1,endra,noscreen,casena2,fa15);
UINT8 data = 0;
if (!endra)
{
if (!casena1)
{
data = m_ram->pointer()[offset & 0xffff];
}
if (!casena2)
{
data = m_ram->pointer()[0x10000 | fa15 << 15 | (offset & 0x7fff)];
}
}
if (!cs9)
{
data = m_rom->base()[offset & 0xfff];
}
if (!csa)
{
data = m_rom->base()[0x1000 | (offset & 0xfff)];
}
if (!cse)
{
data = m_editor_rom->base()[offset & 0xfff];
}
if (!cskb)
{
data = m_basic_rom->base()[(offset & 0x2fff) | fa12 << 12];
}
if (!csio)
{
if (BIT(offset, 4))
{
data = m_pia1->read(space, offset & 0x03);
}
if (BIT(offset, 5))
{
data = m_pia2->read(space, offset & 0x03);
}
if (BIT(offset, 6))
{
data = m_via->read(space, offset & 0x0f);
}
if (BIT(offset, 7) && BIT(offset, 0))
{
data = m_crtc->register_r(space, 0);
}
}
return data;
}
//-------------------------------------------------
// write -
//-------------------------------------------------
WRITE8_MEMBER( cbm8296_state::write )
{
int norom = m_exp->norom_r(space, offset, offset >> 12) && !BIT(m_cr, 7);
int phi2 = 1, brw = 0, noscreen = 1, noio = BIT(m_cr, 6);
int ramsela = BIT(m_via_pa, 0), ramsel9 = BIT(m_via_pa, 1), ramon = BIT(m_via_pa, 2);
int cswff = 1, cs9 = 1, csa = 1, csio = 1, cse = 1, cskb = 1, fa12 = 1, fa15 = 1, casena1 = 1, casena2 = 1, endra = 1;
read_pla1(offset, phi2, brw, noscreen, noio, ramsela, ramsel9, ramon, norom,
cswff, cs9, csa, csio, cse, cskb, fa12, casena1);
read_pla2(offset, phi2, brw, casena1, endra, noscreen, casena2, fa15);
read_pla1(offset, phi2, brw, noscreen, noio, ramsela, ramsel9, ramon, norom,
cswff, cs9, csa, csio, cse, cskb, fa12, casena1);
if (!endra)
{
if (!casena1)
{
m_ram->pointer()[offset & 0xffff] = data;
}
if (!casena2)
{
m_ram->pointer()[0x10000 | fa15 << 15 | (offset & 0x7fff)] = data;
}
}
if (!csio)
{
if (BIT(offset, 4))
{
m_pia1->write(space, offset & 0x03, data);
}
if (BIT(offset, 5))
{
m_pia2->write(space, offset & 0x03, data);
}
if (BIT(offset, 6))
{
m_via->write(space, offset & 0x0f, data);
}
if (m_crtc && BIT(offset, 7))
{
if (BIT(offset, 0))
{
m_crtc->register_w(space, 0, data);
}
else
{
m_crtc->address_w(space, 0, data);
}
}
}
if (!cswff && ((offset & 0xff) == 0xf0))
{
m_cr = data;
}
}
//**************************************************************************
// ADDRESS MAPS
@ -335,6 +512,15 @@ static ADDRESS_MAP_START( pet2001_mem, AS_PROGRAM, 8, pet_state )
ADDRESS_MAP_END
//-------------------------------------------------
// ADDRESS_MAP( cbm8296_mem )
//-------------------------------------------------
static ADDRESS_MAP_START( cbm8296_mem, AS_PROGRAM, 8, cbm8296_state )
AM_RANGE(0x0000, 0xffff) AM_READWRITE(read, write)
ADDRESS_MAP_END
//**************************************************************************
// INPUT PORTS
@ -596,6 +782,13 @@ WRITE_LINE_MEMBER( pet_state::via_irq_w )
check_interrupts();
}
WRITE8_MEMBER( pet_state::via_pa_w )
{
m_user->pa_w(space, 0, data);
m_via_pa = data;
}
READ8_MEMBER( pet_state::via_pb_r )
{
/*
@ -674,7 +867,7 @@ const via6522_interface via_intf =
DEVCB_DEVICE_LINE_MEMBER(PET_DATASSETTE_PORT2_TAG, pet_datassette_port_device, read),
DEVCB_NULL,
DEVCB_NULL,
DEVCB_DEVICE_MEMBER(PET_USER_PORT_TAG, pet_user_port_device, pa_w),
DEVCB_DRIVER_MEMBER(pet_state, via_pa_w),
DEVCB_DRIVER_MEMBER(pet_state, via_pb_w),
DEVCB_DEVICE_LINE_MEMBER(PET_USER_PORT_TAG, pet_user_port_device, ca1_w),
DEVCB_DRIVER_LINE_MEMBER(pet_state, via_ca2_w),
@ -1101,6 +1294,33 @@ MACHINE_RESET_MEMBER( pet80_state, pet80 )
}
//-------------------------------------------------
// MACHINE_START( cbm8296 )
//-------------------------------------------------
MACHINE_START_MEMBER( cbm8296_state, cbm8296 )
{
MACHINE_START_CALL_MEMBER(pet80);
// state saving
save_item(NAME(m_cr));
save_item(NAME(m_via_pa));
}
//-------------------------------------------------
// MACHINE_RESET( cbm8296 )
//-------------------------------------------------
MACHINE_RESET_MEMBER( cbm8296_state, cbm8296 )
{
MACHINE_RESET_CALL_MEMBER(pet80);
m_cr = 0;
m_via_pa = 0xff;
}
//**************************************************************************
// MACHINE DRIVERS
@ -1512,6 +1732,18 @@ MACHINE_CONFIG_END
//-------------------------------------------------
static MACHINE_CONFIG_DERIVED_CLASS( cbm8296, pet80, cbm8296_state )
MCFG_MACHINE_START_OVERRIDE(cbm8296_state, cbm8296)
MCFG_MACHINE_RESET_OVERRIDE(cbm8296_state, cbm8296)
MCFG_CPU_MODIFY(M6502_TAG)
MCFG_CPU_PROGRAM_MAP(cbm8296_mem)
MCFG_PLS100_ADD(PLA1_TAG)
MCFG_PLS100_ADD(PLA2_TAG)
MCFG_DEVICE_REMOVE("ieee8")
MCFG_IEEE488_SLOT_ADD("ieee8", 8, cbm_ieee488_devices, "c8250", NULL)
MCFG_RAM_ADD(RAM_TAG)
MCFG_RAM_DEFAULT_SIZE("128K")
@ -1524,6 +1756,8 @@ MACHINE_CONFIG_END
//-------------------------------------------------
static MACHINE_CONFIG_DERIVED( cbm8296d, cbm8296 )
MCFG_DEVICE_REMOVE("ieee8")
MCFG_IEEE488_SLOT_ADD("ieee8", 8, cbm8296d_ieee488_devices, "c8250lp", NULL)
MACHINE_CONFIG_END
@ -1805,12 +2039,15 @@ ROM_END
//-------------------------------------------------
ROM_START( cbm8296 )
ROM_REGION( 0x7000, M6502_TAG, 0 )
ROM_LOAD( "324992-02.ue10", 0x0000, 0x1000, CRC(2bac5baf) SHA1(03aa866e4bc4e38e95983a6a82ba925e710bede8) ) // HiRes Emulator
ROM_LOAD( "324993-02.ue9", 0x1000, 0x1000, CRC(57444531) SHA1(74aa39888a6bc95762de767fce883203daca0d34) ) // HiRes BASIC
ROM_LOAD( "324746-01.ue7", 0x2000, 0x3000, CRC(7935b528) SHA1(5ab17ee70467152bf2130e3f48a2aa81e9df93c9) ) // BASIC 4
ROM_CONTINUE( 0x6000, 0x1000 )
ROM_LOAD( "8296.ue8", 0x5000, 0x800, CRC(a3475de6) SHA1(b715db83fd26458dfd254bef5c4aae636753f7f5) )
ROM_REGION( 0x2000, M6502_TAG, 0 )
ROM_CART_LOAD( "9000", 0x0000, 0x1000, ROM_MIRROR )
ROM_CART_LOAD( "a000", 0x1000, 0x1000, ROM_MIRROR )
ROM_REGION( 0x4000, "basic", 0 )
ROM_LOAD( "324746-01.ue7", 0x0000, 0x4000, CRC(7935b528) SHA1(5ab17ee70467152bf2130e3f48a2aa81e9df93c9) ) // BASIC 4
ROM_REGION( 0x1000, "editor", 0 )
ROM_LOAD( "8296.ue8", 0x000, 0x800, CRC(a3475de6) SHA1(b715db83fd26458dfd254bef5c4aae636753f7f5) )
ROM_REGION( 0x1000, "charom", 0 )
ROM_LOAD( "901447-10.uc5", 0x000, 0x800, CRC(d8408674) SHA1(0157a2d55b7ac4eaeb38475889ebeea52e2593db) ) // Character Generator
@ -1818,10 +2055,51 @@ ROM_START( cbm8296 )
ROM_REGION( 0x20, "prom", 0 )
ROM_LOAD( "74s288.uc2", 0x00, 0x20, CRC(06030665) SHA1(19dc91ca49ecc20e66c646ba480d2c3bc70a62e6) ) // video/RAM timing
ROM_REGION( 0xf5, "pla1", 0 )
ROM_REGION( 0x10000, "ue5hack", 0 )
ROM_LOAD( "ue5.bin", 0x00000, 0x10000, BAD_DUMP CRC(f70b7b37) SHA1(fe0fbb0fa71775f3780134aa11dac5b761526148) )
ROM_REGION( 0x10000, "ue6hack", 0 )
ROM_LOAD( "ue6.bin", 0x00000, 0x10000, BAD_DUMP CRC(36952256) SHA1(e94d3e744a6aaff553bf260f25da0286436265d1) )
ROM_REGION( 0xf5, PLA1_TAG, 0 )
ROM_LOAD( "324744-01.ue6", 0x00, 0xf5, NO_DUMP ) // 8700-009
ROM_REGION( 0xf5, "pla2", 0 )
ROM_REGION( 0xf5, PLA2_TAG, 0 )
ROM_LOAD( "324745-01.ue5", 0x00, 0xf5, NO_DUMP ) // 8700-008
ROM_END
//-------------------------------------------------
// ROM( cbm8296ed )
//-------------------------------------------------
ROM_START( cbm8296ed )
ROM_REGION( 0x2000, M6502_TAG, 0 )
ROM_LOAD( "oracle.ue10", 0x0000, 0x1000, NO_DUMP )
ROM_LOAD( "paperclip.ue9", 0x1000, 0x1000, CRC(8fb11d4b) SHA1(1c0f883cd3b8ded42ec00d83f7e7f0887f91fec0) )
ROM_REGION( 0x4000, "basic", 0 )
ROM_LOAD( "324746-01.ue7", 0x0000, 0x4000, CRC(7935b528) SHA1(5ab17ee70467152bf2130e3f48a2aa81e9df93c9) ) // BASIC 4
ROM_REGION( 0x1000, "editor", 0 )
ROM_LOAD( "execudesk.ue8", 0x000, 0x800, CRC(bef0eaa1) SHA1(7ea63a2d651f516e96b8725195c13542ea495ebd) )
ROM_REGION( 0x1000, "charom", 0 )
ROM_LOAD( "901447-10.uc5", 0x000, 0x800, CRC(d8408674) SHA1(0157a2d55b7ac4eaeb38475889ebeea52e2593db) ) // Character Generator
ROM_REGION( 0x20, "prom", 0 )
ROM_LOAD( "74s288.uc2", 0x00, 0x20, CRC(06030665) SHA1(19dc91ca49ecc20e66c646ba480d2c3bc70a62e6) ) // video/RAM timing
ROM_REGION( 0x10000, "ue5hack", 0 )
ROM_LOAD( "ue5.bin", 0x00000, 0x10000, BAD_DUMP CRC(f70b7b37) SHA1(fe0fbb0fa71775f3780134aa11dac5b761526148) )
ROM_REGION( 0x10000, "ue6hack", 0 )
ROM_LOAD( "ue6.bin", 0x00000, 0x10000, BAD_DUMP CRC(36952256) SHA1(e94d3e744a6aaff553bf260f25da0286436265d1) )
ROM_REGION( 0xf5, PLA1_TAG, 0 )
ROM_LOAD( "324744-01.ue6", 0x00, 0xf5, NO_DUMP ) // 8700-009
ROM_REGION( 0xf5, PLA2_TAG, 0 )
ROM_LOAD( "324745-01.ue5", 0x00, 0xf5, NO_DUMP ) // 8700-008
ROM_END
@ -1831,12 +2109,15 @@ ROM_END
//-------------------------------------------------
ROM_START( cbm8296d )
ROM_REGION( 0x7000, M6502_TAG, 0 )
ROM_LOAD( "324992-02.ue10", 0x0000, 0x1000, CRC(2bac5baf) SHA1(03aa866e4bc4e38e95983a6a82ba925e710bede8) ) // HiRes Emulator
ROM_LOAD( "324993-02.ue9", 0x1000, 0x1000, CRC(57444531) SHA1(74aa39888a6bc95762de767fce883203daca0d34) ) // HiRes BASIC
ROM_LOAD( "324746-01.ue7", 0x2000, 0x3000, CRC(7935b528) SHA1(5ab17ee70467152bf2130e3f48a2aa81e9df93c9) ) // BASIC 4
ROM_CONTINUE( 0x6000, 0x1000 )
ROM_LOAD( "324243-01.ue8", 0x5000, 0x1000, CRC(4000e833) SHA1(dafbdf8ba0a1fe7d7b9586ffbfc9e5390c0fcf6f) )
ROM_REGION( 0x2000, M6502_TAG, 0 )
ROM_CART_LOAD( "9000", 0x0000, 0x1000, ROM_MIRROR )
ROM_CART_LOAD( "a000", 0x1000, 0x1000, ROM_MIRROR )
ROM_REGION( 0x4000, "basic", 0 )
ROM_LOAD( "324746-01.ue7", 0x0000, 0x4000, CRC(7935b528) SHA1(5ab17ee70467152bf2130e3f48a2aa81e9df93c9) ) // BASIC 4
ROM_REGION( 0x1000, "editor", 0 )
ROM_LOAD( "324243-01.ue8", 0x0000, 0x1000, CRC(4000e833) SHA1(dafbdf8ba0a1fe7d7b9586ffbfc9e5390c0fcf6f) )
ROM_REGION( 0x1000, "charom", 0 )
ROM_LOAD( "901447-10.uc5", 0x000, 0x800, CRC(d8408674) SHA1(0157a2d55b7ac4eaeb38475889ebeea52e2593db) ) // Character Generator
@ -1844,10 +2125,16 @@ ROM_START( cbm8296d )
ROM_REGION( 0x20, "prom", 0 )
ROM_LOAD( "74s288.uc2", 0x00, 0x20, CRC(06030665) SHA1(19dc91ca49ecc20e66c646ba480d2c3bc70a62e6) ) // video/RAM timing
ROM_REGION( 0xf5, "pla1", 0 )
ROM_REGION( 0x10000, "ue5hack", 0 )
ROM_LOAD( "ue5.bin", 0x00000, 0x10000, BAD_DUMP CRC(f70b7b37) SHA1(fe0fbb0fa71775f3780134aa11dac5b761526148) )
ROM_REGION( 0x10000, "ue6hack", 0 )
ROM_LOAD( "ue6.bin", 0x00000, 0x10000, BAD_DUMP CRC(36952256) SHA1(e94d3e744a6aaff553bf260f25da0286436265d1) )
ROM_REGION( 0xf5, PLA1_TAG, 0 )
ROM_LOAD( "324744-01.ue6", 0x00, 0xf5, NO_DUMP ) // 8700-009
ROM_REGION( 0xf5, "pla2", 0 )
ROM_REGION( 0xf5, PLA2_TAG, 0 )
ROM_LOAD( "324745-01.ue5", 0x00, 0xf5, NO_DUMP ) // 8700-008
ROM_END
@ -1857,12 +2144,15 @@ ROM_END
//-------------------------------------------------
ROM_START( cbm8296d_de )
ROM_REGION( 0x7000, M6502_TAG, 0 )
ROM_LOAD( "324992-02.ue10", 0x0000, 0x1000, CRC(2bac5baf) SHA1(03aa866e4bc4e38e95983a6a82ba925e710bede8) ) // HiRes Emulator
ROM_LOAD( "324993-02.ue9", 0x1000, 0x1000, CRC(57444531) SHA1(74aa39888a6bc95762de767fce883203daca0d34) ) // HiRes BASIC
ROM_LOAD( "324746-01.ue7", 0x2000, 0x3000, CRC(7935b528) SHA1(5ab17ee70467152bf2130e3f48a2aa81e9df93c9) )
ROM_CONTINUE( 0x6000, 0x1000 )
ROM_LOAD( "324243-04.ue8", 0x5000, 0x1000, CRC(3fe48897) SHA1(c218ff3168514f1d5e7822ae1b1ac3e161523b33) )
ROM_REGION( 0x2000, M6502_TAG, 0 )
ROM_CART_LOAD( "9000", 0x0000, 0x1000, ROM_MIRROR )
ROM_CART_LOAD( "a000", 0x1000, 0x1000, ROM_MIRROR )
ROM_REGION( 0x4000, "basic", 0 )
ROM_LOAD( "324746-01.ue7", 0x0000, 0x4000, CRC(7935b528) SHA1(5ab17ee70467152bf2130e3f48a2aa81e9df93c9) ) // BASIC 4
ROM_REGION( 0x1000, "editor", 0 )
ROM_LOAD( "324243-04.ue8", 0x0000, 0x1000, CRC(3fe48897) SHA1(c218ff3168514f1d5e7822ae1b1ac3e161523b33) )
ROM_REGION( 0x1000, "charom", 0 )
ROM_LOAD( "324242-10.uc5", 0x0000, 0x1000, CRC(a5632a0f) SHA1(9616f7f18757cccefb702a945f954b644d5b17d1) )
@ -1870,10 +2160,51 @@ ROM_START( cbm8296d_de )
ROM_REGION( 0x20, "prom", 0 )
ROM_LOAD( "74s288.uc2", 0x00, 0x20, CRC(06030665) SHA1(19dc91ca49ecc20e66c646ba480d2c3bc70a62e6) ) // video/RAM timing
ROM_REGION( 0xf5, "pla1", 0 )
ROM_REGION( 0x10000, "ue5hack", 0 )
ROM_LOAD( "ue5.bin", 0x00000, 0x10000, BAD_DUMP CRC(f70b7b37) SHA1(fe0fbb0fa71775f3780134aa11dac5b761526148) )
ROM_REGION( 0x10000, "ue6hack", 0 )
ROM_LOAD( "ue6.bin", 0x00000, 0x10000, BAD_DUMP CRC(36952256) SHA1(e94d3e744a6aaff553bf260f25da0286436265d1) )
ROM_REGION( 0xf5, PLA1_TAG, 0 )
ROM_LOAD( "324744-01.ue6", 0x00, 0xf5, NO_DUMP ) // 8700-009
ROM_REGION( 0xf5, "pla2", 0 )
ROM_REGION( 0xf5, PLA2_TAG, 0 )
ROM_LOAD( "324745-01.ue5", 0x00, 0xf5, NO_DUMP ) // 8700-008
ROM_END
//-------------------------------------------------
// ROM( cbm8296gd )
//-------------------------------------------------
ROM_START( cbm8296gd )
ROM_REGION( 0x2000, M6502_TAG, 0 )
ROM_LOAD( "324992-02.ue10", 0x0000, 0x1000, CRC(2bac5baf) SHA1(03aa866e4bc4e38e95983a6a82ba925e710bede8) ) // HiRes Emulator
ROM_LOAD( "324993-02.ue9", 0x1000, 0x1000, CRC(57444531) SHA1(74aa39888a6bc95762de767fce883203daca0d34) ) // HiRes BASIC
ROM_REGION( 0x4000, "basic", 0 )
ROM_LOAD( "324746-01.ue7", 0x0000, 0x4000, CRC(7935b528) SHA1(5ab17ee70467152bf2130e3f48a2aa81e9df93c9) ) // BASIC 4
ROM_REGION( 0x1000, "editor", 0 )
ROM_LOAD( "324243-01.ue8", 0x0000, 0x1000, CRC(4000e833) SHA1(dafbdf8ba0a1fe7d7b9586ffbfc9e5390c0fcf6f) )
ROM_REGION( 0x1000, "charom", 0 )
ROM_LOAD( "901447-10.uc5", 0x000, 0x800, CRC(d8408674) SHA1(0157a2d55b7ac4eaeb38475889ebeea52e2593db) ) // Character Generator
ROM_REGION( 0x20, "prom", 0 )
ROM_LOAD( "74s288.uc2", 0x00, 0x20, CRC(06030665) SHA1(19dc91ca49ecc20e66c646ba480d2c3bc70a62e6) ) // video/RAM timing
ROM_REGION( 0x10000, "ue5hack", 0 )
ROM_LOAD( "ue5.bin", 0x00000, 0x10000, BAD_DUMP CRC(f70b7b37) SHA1(fe0fbb0fa71775f3780134aa11dac5b761526148) )
ROM_REGION( 0x10000, "ue6hack", 0 )
ROM_LOAD( "ue6.bin", 0x00000, 0x10000, BAD_DUMP CRC(36952256) SHA1(e94d3e744a6aaff553bf260f25da0286436265d1) )
ROM_REGION( 0xf5, PLA1_TAG, 0 )
ROM_LOAD( "324744-01.ue6", 0x00, 0xf5, NO_DUMP ) // 8700-009
ROM_REGION( 0xf5, PLA2_TAG, 0 )
ROM_LOAD( "324745-01.ue5", 0x00, 0xf5, NO_DUMP ) // 8700-008
ROM_END
@ -1911,5 +2242,7 @@ COMP( 1981, mmf9000, pet8032, 0, superpet, petb, driver_devic
COMP( 1981, mmf9000_se, pet8032, 0, superpet, petb_se, driver_device, 0, "Commodore Business Machines", "MicroMainFrame 9000 (Sweden/Finland)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
COMP( 1981, cbm8096, pet8032, 0, cbm8096, petb, driver_device, 0, "Commodore Business Machines", "CBM 8096", GAME_SUPPORTS_SAVE )
COMP( 1984, cbm8296, 0, 0, cbm8296, petb, driver_device, 0, "Commodore Business Machines", "CBM 8296", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
COMP( 1984, cbm8296d, cbm8296, 0, cbm8296d, petb, driver_device, 0, "Commodore Business Machines", "CBM 8296D", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
COMP( 1984, cbm8296d_de,cbm8296, 0, cbm8296d, petb_de, driver_device, 0, "Commodore Business Machines", "CBM 8296D (Germany)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
COMP( 1984, cbm8296ed, cbm8296, 0, cbm8296d, petb, driver_device, 0, "Commodore Business Machines", "CBM 8296 ExecuDesk", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
COMP( 1984, cbm8296d, cbm8296, 0, cbm8296d, petb, driver_device, 0, "Commodore Business Machines", "CBM 8296-D", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
COMP( 1984, cbm8296d_de,cbm8296, 0, cbm8296d, petb_de, driver_device, 0, "Commodore Business Machines", "CBM 8296-D (Germany)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
COMP( 1984, cbm8296gd, cbm8296, 0, cbm8296d, petb, driver_device, 0, "Commodore Business Machines", "CBM 8296GD", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )

View File

@ -13,6 +13,7 @@
#include "machine/petcass.h"
#include "machine/petexp.h"
#include "machine/petuser.h"
#include "machine/pla.h"
#include "machine/ram.h"
#include "sound/speaker.h"
#include "video/mc6845.h"
@ -23,6 +24,8 @@
#define M6520_2_TAG "b8"
#define MC6845_TAG "ub13"
#define SCREEN_TAG "screen"
#define PLA1_TAG "ue6"
#define PLA2_TAG "ue5"
class pet_state : public driver_device
{
@ -107,6 +110,7 @@ public:
DECLARE_WRITE8_MEMBER( write );
DECLARE_WRITE_LINE_MEMBER( via_irq_w );
DECLARE_WRITE8_MEMBER( via_pa_w );
DECLARE_READ8_MEMBER( via_pb_r );
DECLARE_WRITE8_MEMBER( via_pb_w );
DECLARE_WRITE_LINE_MEMBER( via_ca2_w );
@ -158,6 +162,8 @@ public:
int m_via_cb2;
int m_pia1_pa7;
UINT8 m_via_pa;
// interrupt state
int m_via_irq;
int m_pia1a_irq;
@ -213,8 +219,33 @@ class cbm8296_state : public pet80_state
{
public:
cbm8296_state(const machine_config &mconfig, device_type type, const char *tag)
: pet80_state(mconfig, type, tag)
: pet80_state(mconfig, type, tag),
m_basic_rom(*this, "basic"),
m_editor_rom(*this, "editor"),
m_ue5_rom(*this, "ue5hack"),
m_ue6_rom(*this, "ue6hack"),
m_pla1(*this, PLA1_TAG),
m_pla2(*this, PLA2_TAG)
{ }
required_memory_region m_basic_rom;
required_memory_region m_editor_rom;
required_memory_region m_ue5_rom;
required_memory_region m_ue6_rom;
required_device<pls100_device> m_pla1;
required_device<pls100_device> m_pla2;
DECLARE_MACHINE_START( cbm8296 );
DECLARE_MACHINE_RESET( cbm8296 );
void read_pla1(offs_t offset, int phi2, int brw, int noscreen, int noio, int ramsela, int ramsel9, int ramon, int norom,
int &cswff, int &cs9, int &csa, int &csio, int &cse, int &cskb, int &fa12, int &casena1);
void read_pla2(offs_t offset, int phi2, int brw, int casena1, int &endra, int &noscreen, int &casena2, int &fa15);
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
UINT8 m_cr;
};

View File

@ -1086,7 +1086,6 @@ SLOT_INTERFACE_START( cbm_ieee488_devices )
SLOT_INTERFACE("c4040", C4040)
SLOT_INTERFACE("c8050", C8050)
SLOT_INTERFACE("c8250", C8250)
SLOT_INTERFACE("c8250lp", C8250LP)
SLOT_INTERFACE("sfd1001", SFD1001)
SLOT_INTERFACE("c2031", C2031)
SLOT_INTERFACE("c8280", C8280)
@ -1095,6 +1094,10 @@ SLOT_INTERFACE_START( cbm_ieee488_devices )
SLOT_INTERFACE("softbox", SOFTBOX)
SLOT_INTERFACE_END
SLOT_INTERFACE_START( cbm8296d_ieee488_devices )
SLOT_INTERFACE("c8250lp", C8250LP)
SLOT_INTERFACE_END
SLOT_INTERFACE_START( vic20_expansion_cards )
SLOT_INTERFACE("exp", VIC1010)
SLOT_INTERFACE("3k", VIC1210)

View File

@ -173,6 +173,7 @@ SLOT_INTERFACE_EXTERN( sx1541_iec_devices );
SLOT_INTERFACE_EXTERN( c128dcr_iec_devices );
SLOT_INTERFACE_EXTERN( c128d81_iec_devices );
SLOT_INTERFACE_EXTERN( cbm_ieee488_devices );
SLOT_INTERFACE_EXTERN( cbm8296d_ieee488_devices );
SLOT_INTERFACE_EXTERN( vic20_control_port_devices );
SLOT_INTERFACE_EXTERN( vic20_expansion_cards );
SLOT_INTERFACE_EXTERN( vic20_user_port_cards );

View File

@ -605,8 +605,10 @@ mmf9000
mmf9000_se
cbm8096
cbm8296
cbm8296ed
cbm8296d
cbm8296d_de
cbm8296gd
vic1001 // Commodore VIC-1001 (Japan)
vic20 // Commodore VIC 20 (NTSC)