mirror of
https://github.com/holub/mame
synced 2025-07-04 09:28:51 +03:00
(MESS) bbc.c: Some tagmap lookup reduction. (nw)
This commit is contained in:
parent
6aa08128f4
commit
8ef69c8d4c
@ -24,14 +24,17 @@ class bbc_state : public driver_device
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
bbc_state(const machine_config &mconfig, device_type type, const char *tag)
|
bbc_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||||
: driver_device(mconfig, type, tag),
|
: driver_device(mconfig, type, tag)
|
||||||
m_maincpu(*this, "maincpu"),
|
, m_maincpu(*this, "maincpu")
|
||||||
m_sn(*this, "sn76489"),
|
, m_sn(*this, "sn76489")
|
||||||
m_trom(*this, "saa505x"),
|
, m_trom(*this, "saa505x")
|
||||||
m_ACCCON_IRR(CLEAR_LINE),
|
, m_ACCCON_IRR(CLEAR_LINE)
|
||||||
m_via_system_irq(CLEAR_LINE),
|
, m_via_system_irq(CLEAR_LINE)
|
||||||
m_via_user_irq(CLEAR_LINE),
|
, m_via_user_irq(CLEAR_LINE)
|
||||||
m_acia_irq(CLEAR_LINE)
|
, m_acia_irq(CLEAR_LINE)
|
||||||
|
, m_region_maincpu(*this, "maincpu")
|
||||||
|
, m_region_user1(*this, "user1")
|
||||||
|
, m_region_user2(*this, "user2")
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
required_device<cpu_device> m_maincpu;
|
required_device<cpu_device> m_maincpu;
|
||||||
@ -306,6 +309,11 @@ public:
|
|||||||
DECLARE_WRITE_LINE_MEMBER(bbc_vsync);
|
DECLARE_WRITE_LINE_MEMBER(bbc_vsync);
|
||||||
|
|
||||||
DECLARE_DEVICE_IMAGE_LOAD_MEMBER( bbcb_cart );
|
DECLARE_DEVICE_IMAGE_LOAD_MEMBER( bbcb_cart );
|
||||||
|
|
||||||
|
protected:
|
||||||
|
required_memory_region m_region_maincpu;
|
||||||
|
required_memory_region m_region_user1;
|
||||||
|
optional_memory_region m_region_user2;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -37,13 +37,13 @@ Model A memory handling functions
|
|||||||
/* for the model A just address the 4 on board ROM sockets */
|
/* for the model A just address the 4 on board ROM sockets */
|
||||||
WRITE8_MEMBER(bbc_state::bbc_page_selecta_w)
|
WRITE8_MEMBER(bbc_state::bbc_page_selecta_w)
|
||||||
{
|
{
|
||||||
membank("bank4")->set_base(machine().root_device().memregion("user1")->base()+((data&0x03)<<14));
|
membank("bank4")->set_base(m_region_user1->base()+((data&0x03)<<14));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
WRITE8_MEMBER(bbc_state::bbc_memorya1_w)
|
WRITE8_MEMBER(bbc_state::bbc_memorya1_w)
|
||||||
{
|
{
|
||||||
memregion("maincpu")->base()[offset]=data;
|
m_region_maincpu->base()[offset]=data;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*************************
|
/*************************
|
||||||
@ -57,11 +57,11 @@ WRITE8_MEMBER(bbc_state::bbc_page_selectb_w)
|
|||||||
m_rombank=data&0x0f;
|
m_rombank=data&0x0f;
|
||||||
if (m_rombank!=1)
|
if (m_rombank!=1)
|
||||||
{
|
{
|
||||||
membank("bank4")->set_base(machine().root_device().memregion("user1")->base() + (m_rombank << 14));
|
membank("bank4")->set_base(m_region_user1->base() + (m_rombank << 14));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
membank("bank4")->set_base(machine().root_device().memregion("user2")->base() + ((m_DFSType) << 14));
|
membank("bank4")->set_base(m_region_user2->base() + ((m_DFSType) << 14));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -70,11 +70,11 @@ WRITE8_MEMBER(bbc_state::bbc_memoryb3_w)
|
|||||||
{
|
{
|
||||||
if (m_RAMSize)
|
if (m_RAMSize)
|
||||||
{
|
{
|
||||||
memregion("maincpu")->base()[offset + 0x4000] = data;
|
m_region_maincpu->base()[offset + 0x4000] = data;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
memregion("maincpu")->base()[offset] = data;
|
m_region_maincpu->base()[offset] = data;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -94,14 +94,14 @@ WRITE8_MEMBER(bbc_state::bbc_memoryb4_w)
|
|||||||
if (m_rombank == 1)
|
if (m_rombank == 1)
|
||||||
{
|
{
|
||||||
// special DFS case for Acorn DFS E00 Hack that can write to the DFS RAM Bank;
|
// special DFS case for Acorn DFS E00 Hack that can write to the DFS RAM Bank;
|
||||||
if (m_DFSType == 3) memregion("user2")->base()[((m_DFSType) << 14) + offset] = data;
|
if (m_DFSType == 3) m_region_user2->base()[((m_DFSType) << 14) + offset] = data;
|
||||||
} else
|
} else
|
||||||
{
|
{
|
||||||
switch (m_SWRAMtype)
|
switch (m_SWRAMtype)
|
||||||
{
|
{
|
||||||
case 1: if (bbc_SWRAMtype1[m_userport]) memregion("user1")->base()[(m_userport << 14) + offset] = data;
|
case 1: if (bbc_SWRAMtype1[m_userport]) m_region_user1->base()[(m_userport << 14) + offset] = data;
|
||||||
case 2: if (bbc_SWRAMtype2[m_rombank]) memregion("user1")->base()[(m_rombank << 14) + offset] = data;
|
case 2: if (bbc_SWRAMtype2[m_rombank]) m_region_user1->base()[(m_rombank << 14) + offset] = data;
|
||||||
case 3: if (bbc_SWRAMtype3[m_rombank]) memregion("user1")->base()[(m_rombank << 14) + offset] = data;
|
case 3: if (bbc_SWRAMtype3[m_rombank]) m_region_user1->base()[(m_rombank << 14) + offset] = data;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -138,12 +138,12 @@ WRITE8_MEMBER(bbc_state::bbc_page_selectbp_w)
|
|||||||
if (m_pagedRAM)
|
if (m_pagedRAM)
|
||||||
{
|
{
|
||||||
/* if paged ram then set 8000 to afff to read from the ram 8000 to afff */
|
/* if paged ram then set 8000 to afff to read from the ram 8000 to afff */
|
||||||
membank("bank4")->set_base(machine().root_device().memregion("maincpu")->base() + 0x8000);
|
membank("bank4")->set_base(m_region_maincpu->base() + 0x8000);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* if paged rom then set the rom to be read from 8000 to afff */
|
/* if paged rom then set the rom to be read from 8000 to afff */
|
||||||
membank("bank4")->set_base(machine().root_device().memregion("user1")->base() + (m_rombank << 14));
|
membank("bank4")->set_base(m_region_user1->base() + (m_rombank << 14));
|
||||||
};
|
};
|
||||||
|
|
||||||
/* set the rom to be read from b000 to bfff */
|
/* set the rom to be read from b000 to bfff */
|
||||||
@ -155,7 +155,7 @@ WRITE8_MEMBER(bbc_state::bbc_page_selectbp_w)
|
|||||||
m_vdusel=(data>>7)&0x01;
|
m_vdusel=(data>>7)&0x01;
|
||||||
bbcbp_setvideoshadow(machine(), m_vdusel);
|
bbcbp_setvideoshadow(machine(), m_vdusel);
|
||||||
//need to make the video display do a full screen refresh for the new memory area
|
//need to make the video display do a full screen refresh for the new memory area
|
||||||
membank("bank2")->set_base(machine().root_device().memregion("maincpu")->base()+0x3000);
|
membank("bank2")->set_base(m_region_maincpu->base()+0x3000);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -166,7 +166,7 @@ WRITE8_MEMBER(bbc_state::bbc_page_selectbp_w)
|
|||||||
|
|
||||||
WRITE8_MEMBER(bbc_state::bbc_memorybp1_w)
|
WRITE8_MEMBER(bbc_state::bbc_memorybp1_w)
|
||||||
{
|
{
|
||||||
memregion("maincpu")->base()[offset]=data;
|
m_region_maincpu->base()[offset]=data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -182,7 +182,7 @@ WRITE8_MEMBER(bbc_state::bbc_memorybp1_w)
|
|||||||
|
|
||||||
DIRECT_UPDATE_MEMBER(bbc_state::bbcbp_direct_handler)
|
DIRECT_UPDATE_MEMBER(bbc_state::bbcbp_direct_handler)
|
||||||
{
|
{
|
||||||
UINT8 *ram = memregion("maincpu")->base();
|
UINT8 *ram = m_region_maincpu->base();
|
||||||
if (m_vdusel == 0)
|
if (m_vdusel == 0)
|
||||||
{
|
{
|
||||||
// not in shadow ram mode so just read normal ram
|
// not in shadow ram mode so just read normal ram
|
||||||
@ -207,7 +207,7 @@ DIRECT_UPDATE_MEMBER(bbc_state::bbcbp_direct_handler)
|
|||||||
|
|
||||||
WRITE8_MEMBER(bbc_state::bbc_memorybp2_w)
|
WRITE8_MEMBER(bbc_state::bbc_memorybp2_w)
|
||||||
{
|
{
|
||||||
UINT8 *ram = memregion("maincpu")->base();
|
UINT8 *ram = m_region_maincpu->base();
|
||||||
if (m_vdusel==0)
|
if (m_vdusel==0)
|
||||||
{
|
{
|
||||||
// not in shadow ram mode so just write to normal ram
|
// not in shadow ram mode so just write to normal ram
|
||||||
@ -235,7 +235,7 @@ WRITE8_MEMBER(bbc_state::bbc_memorybp4_w)
|
|||||||
{
|
{
|
||||||
if (m_pagedRAM)
|
if (m_pagedRAM)
|
||||||
{
|
{
|
||||||
memregion("maincpu")->base()[offset+0x8000]=data;
|
m_region_maincpu->base()[offset+0x8000]=data;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -255,13 +255,13 @@ WRITE8_MEMBER(bbc_state::bbc_memorybp4_128_w)
|
|||||||
{
|
{
|
||||||
if (m_pagedRAM)
|
if (m_pagedRAM)
|
||||||
{
|
{
|
||||||
memregion("maincpu")->base()[offset+0x8000]=data;
|
m_region_maincpu->base()[offset+0x8000]=data;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (bbc_b_plus_sideways_ram_banks[m_rombank])
|
if (bbc_b_plus_sideways_ram_banks[m_rombank])
|
||||||
{
|
{
|
||||||
memregion("user1")->base()[offset+(m_rombank<<14)]=data;
|
m_region_user1->base()[offset+(m_rombank<<14)]=data;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -270,7 +270,7 @@ WRITE8_MEMBER(bbc_state::bbc_memorybp6_128_w)
|
|||||||
{
|
{
|
||||||
if (bbc_b_plus_sideways_ram_banks[m_rombank])
|
if (bbc_b_plus_sideways_ram_banks[m_rombank])
|
||||||
{
|
{
|
||||||
memregion("user1")->base()[offset+(m_rombank<<14)+0x3000]=data;
|
m_region_user1->base()[offset+(m_rombank<<14)+0x3000]=data;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -360,11 +360,11 @@ WRITE8_MEMBER(bbc_state::bbcm_ACCCON_write)
|
|||||||
|
|
||||||
if (m_ACCCON_Y)
|
if (m_ACCCON_Y)
|
||||||
{
|
{
|
||||||
membank("bank7")->set_base(machine().root_device().memregion("maincpu")->base() + 0x9000);
|
membank("bank7")->set_base(m_region_maincpu->base() + 0x9000);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
membank("bank7")->set_base(machine().root_device().memregion("user1")->base() + 0x40000);
|
membank("bank7")->set_base(m_region_user1->base() + 0x40000);
|
||||||
}
|
}
|
||||||
|
|
||||||
bbcbp_setvideoshadow(machine(), m_ACCCON_D);
|
bbcbp_setvideoshadow(machine(), m_ACCCON_D);
|
||||||
@ -372,11 +372,11 @@ WRITE8_MEMBER(bbc_state::bbcm_ACCCON_write)
|
|||||||
|
|
||||||
if (m_ACCCON_X)
|
if (m_ACCCON_X)
|
||||||
{
|
{
|
||||||
membank("bank2")->set_base(machine().root_device().memregion( "maincpu" )->base() + 0xb000 );
|
membank("bank2")->set_base(m_region_maincpu->base() + 0xb000 );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
membank("bank2")->set_base(machine().root_device().memregion( "maincpu" )->base() + 0x3000 );
|
membank("bank2")->set_base(m_region_maincpu->base() + 0x3000 );
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ACCCON_TST controls paging of rom reads in the 0xFC00-0xFEFF reigon */
|
/* ACCCON_TST controls paging of rom reads in the 0xFC00-0xFEFF reigon */
|
||||||
@ -384,7 +384,7 @@ WRITE8_MEMBER(bbc_state::bbcm_ACCCON_write)
|
|||||||
/* if 1 the the ROM is paged in for reads but writes still go to I/O */
|
/* if 1 the the ROM is paged in for reads but writes still go to I/O */
|
||||||
if (m_ACCCON_TST)
|
if (m_ACCCON_TST)
|
||||||
{
|
{
|
||||||
membank("bank8")->set_base(machine().root_device().memregion("user1")->base()+0x43c00);
|
membank("bank8")->set_base(m_region_user1->base()+0x43c00);
|
||||||
space.install_read_bank(0xFC00,0xFEFF,"bank8");
|
space.install_read_bank(0xFC00,0xFEFF,"bank8");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -410,12 +410,12 @@ WRITE8_MEMBER(bbc_state::page_selectbm_w)
|
|||||||
|
|
||||||
if (m_pagedRAM)
|
if (m_pagedRAM)
|
||||||
{
|
{
|
||||||
membank("bank4")->set_base(machine().root_device().memregion("maincpu")->base() + 0x8000);
|
membank("bank4")->set_base(m_region_maincpu->base() + 0x8000);
|
||||||
membank("bank5")->set_entry(m_rombank);
|
membank("bank5")->set_entry(m_rombank);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
membank("bank4")->set_base(machine().root_device().memregion("user1")->base() + ((m_rombank) << 14));
|
membank("bank4")->set_base(m_region_user1->base() + ((m_rombank) << 14));
|
||||||
membank("bank5")->set_entry(m_rombank);
|
membank("bank5")->set_entry(m_rombank);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -424,7 +424,7 @@ WRITE8_MEMBER(bbc_state::page_selectbm_w)
|
|||||||
|
|
||||||
WRITE8_MEMBER(bbc_state::bbc_memorybm1_w)
|
WRITE8_MEMBER(bbc_state::bbc_memorybm1_w)
|
||||||
{
|
{
|
||||||
memregion("maincpu")->base()[offset] = data;
|
m_region_maincpu->base()[offset] = data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -432,17 +432,17 @@ DIRECT_UPDATE_MEMBER(bbc_state::bbcm_direct_handler)
|
|||||||
{
|
{
|
||||||
if (m_ACCCON_X)
|
if (m_ACCCON_X)
|
||||||
{
|
{
|
||||||
membank( "bank2" )->set_base( memregion( "maincpu" )->base() + 0xb000 );
|
membank( "bank2" )->set_base( m_region_maincpu->base() + 0xb000 );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (m_ACCCON_E && bbcm_vdudriverset(machine()))
|
if (m_ACCCON_E && bbcm_vdudriverset(machine()))
|
||||||
{
|
{
|
||||||
membank( "bank2" )->set_base( machine().root_device().memregion( "maincpu" )->base() + 0xb000 );
|
membank( "bank2" )->set_base( m_region_maincpu->base() + 0xb000 );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
membank( "bank2" )->set_base( machine().root_device().memregion( "maincpu" )->base() + 0x3000 );
|
membank( "bank2" )->set_base( m_region_maincpu->base() + 0x3000 );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -453,7 +453,7 @@ DIRECT_UPDATE_MEMBER(bbc_state::bbcm_direct_handler)
|
|||||||
|
|
||||||
WRITE8_MEMBER(bbc_state::bbc_memorybm2_w)
|
WRITE8_MEMBER(bbc_state::bbc_memorybm2_w)
|
||||||
{
|
{
|
||||||
UINT8 *ram = memregion("maincpu")->base();
|
UINT8 *ram = m_region_maincpu->base();
|
||||||
if (m_ACCCON_X)
|
if (m_ACCCON_X)
|
||||||
{
|
{
|
||||||
ram[offset + 0xb000] = data;
|
ram[offset + 0xb000] = data;
|
||||||
@ -481,13 +481,13 @@ WRITE8_MEMBER(bbc_state::bbc_memorybm4_w)
|
|||||||
{
|
{
|
||||||
if (m_pagedRAM)
|
if (m_pagedRAM)
|
||||||
{
|
{
|
||||||
memregion("maincpu")->base()[offset+0x8000]=data;
|
m_region_maincpu->base()[offset+0x8000]=data;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (bbc_master_sideways_ram_banks[m_rombank])
|
if (bbc_master_sideways_ram_banks[m_rombank])
|
||||||
{
|
{
|
||||||
memregion("user1")->base()[offset+(m_rombank<<14)]=data;
|
m_region_user1->base()[offset+(m_rombank<<14)]=data;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -497,7 +497,7 @@ WRITE8_MEMBER(bbc_state::bbc_memorybm5_w)
|
|||||||
{
|
{
|
||||||
if (bbc_master_sideways_ram_banks[m_rombank])
|
if (bbc_master_sideways_ram_banks[m_rombank])
|
||||||
{
|
{
|
||||||
memregion("user1")->base()[offset+(m_rombank<<14)+0x1000]=data;
|
m_region_user1->base()[offset+(m_rombank<<14)+0x1000]=data;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -506,7 +506,7 @@ WRITE8_MEMBER(bbc_state::bbc_memorybm7_w)
|
|||||||
{
|
{
|
||||||
if (m_ACCCON_Y)
|
if (m_ACCCON_Y)
|
||||||
{
|
{
|
||||||
memregion("maincpu")->base()[offset+0x9000]=data;
|
m_region_maincpu->base()[offset+0x9000]=data;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -541,7 +541,7 @@ long myo;
|
|||||||
/* Now handled in bbcm_ACCCON_write PHS - 2008-10-11 */
|
/* Now handled in bbcm_ACCCON_write PHS - 2008-10-11 */
|
||||||
// if ( m_ACCCON_TST )
|
// if ( m_ACCCON_TST )
|
||||||
// {
|
// {
|
||||||
// return memregion("user1")->base()[offset+0x43c00];
|
// return m_region_user1->base()[offset+0x43c00];
|
||||||
// };
|
// };
|
||||||
|
|
||||||
if (offset<=0x0ff) /* FRED */
|
if (offset<=0x0ff) /* FRED */
|
||||||
@ -1915,7 +1915,7 @@ WRITE8_MEMBER(bbc_state::bbc_disc_w)
|
|||||||
***************************************/
|
***************************************/
|
||||||
DEVICE_IMAGE_LOAD_MEMBER( bbc_state, bbcb_cart )
|
DEVICE_IMAGE_LOAD_MEMBER( bbc_state, bbcb_cart )
|
||||||
{
|
{
|
||||||
UINT8 *mem = machine().root_device().memregion("user1")->base();
|
UINT8 *mem = m_region_user1->base();
|
||||||
int size, read_;
|
int size, read_;
|
||||||
int addr = 0;
|
int addr = 0;
|
||||||
int index = 0;
|
int index = 0;
|
||||||
@ -1991,13 +1991,13 @@ MACHINE_START_MEMBER(bbc_state,bbca)
|
|||||||
|
|
||||||
MACHINE_RESET_MEMBER(bbc_state,bbca)
|
MACHINE_RESET_MEMBER(bbc_state,bbca)
|
||||||
{
|
{
|
||||||
UINT8 *ram = machine().root_device().memregion("maincpu")->base();
|
UINT8 *ram = m_region_maincpu->base();
|
||||||
m_RAMSize = 1;
|
m_RAMSize = 1;
|
||||||
membank("bank1")->set_base(ram);
|
membank("bank1")->set_base(ram);
|
||||||
membank("bank3")->set_base(ram);
|
membank("bank3")->set_base(ram);
|
||||||
|
|
||||||
membank("bank4")->set_base(machine().root_device().memregion("user1")->base()); /* bank 4 is the paged ROMs from 8000 to bfff */
|
membank("bank4")->set_base(m_region_user1->base()); /* bank 4 is the paged ROMs from 8000 to bfff */
|
||||||
membank("bank7")->set_base(memregion("user1")->base()+0x10000); /* bank 7 points at the OS rom from c000 to ffff */
|
membank("bank7")->set_base(m_region_user1->base()+0x10000); /* bank 7 points at the OS rom from c000 to ffff */
|
||||||
|
|
||||||
bbcb_IC32_initialise(this);
|
bbcb_IC32_initialise(this);
|
||||||
}
|
}
|
||||||
@ -2024,7 +2024,7 @@ MACHINE_START_MEMBER(bbc_state,bbcb)
|
|||||||
|
|
||||||
MACHINE_RESET_MEMBER(bbc_state,bbcb)
|
MACHINE_RESET_MEMBER(bbc_state,bbcb)
|
||||||
{
|
{
|
||||||
UINT8 *ram = memregion("maincpu")->base();
|
UINT8 *ram = m_region_maincpu->base();
|
||||||
m_DFSType= (machine().root_device().ioport("BBCCONFIG")->read() >> 0) & 0x07;
|
m_DFSType= (machine().root_device().ioport("BBCCONFIG")->read() >> 0) & 0x07;
|
||||||
m_SWRAMtype = (machine().root_device().ioport("BBCCONFIG")->read() >> 3) & 0x03;
|
m_SWRAMtype = (machine().root_device().ioport("BBCCONFIG")->read() >> 3) & 0x03;
|
||||||
m_RAMSize= (machine().root_device().ioport("BBCCONFIG")->read() >> 5) & 0x01;
|
m_RAMSize= (machine().root_device().ioport("BBCCONFIG")->read() >> 5) & 0x01;
|
||||||
@ -2043,8 +2043,8 @@ MACHINE_RESET_MEMBER(bbc_state,bbcb)
|
|||||||
m_memorySize=16;
|
m_memorySize=16;
|
||||||
}
|
}
|
||||||
|
|
||||||
membank("bank4")->set_base(machine().root_device().memregion("user1")->base()); /* bank 4 is the paged ROMs from 8000 to bfff */
|
membank("bank4")->set_base(m_region_user1->base()); /* bank 4 is the paged ROMs from 8000 to bfff */
|
||||||
membank("bank7")->set_base(machine().root_device().memregion("user1")->base() + 0x40000); /* bank 7 points at the OS rom from c000 to ffff */
|
membank("bank7")->set_base(m_region_user1->base() + 0x40000); /* bank 7 points at the OS rom from c000 to ffff */
|
||||||
|
|
||||||
bbcb_IC32_initialise(this);
|
bbcb_IC32_initialise(this);
|
||||||
|
|
||||||
@ -2064,19 +2064,19 @@ MACHINE_START_MEMBER(bbc_state,bbcbp)
|
|||||||
{
|
{
|
||||||
m_mc6850_clock = 0;
|
m_mc6850_clock = 0;
|
||||||
|
|
||||||
machine().device("maincpu")->memory().space(AS_PROGRAM).set_direct_update_handler(direct_update_delegate(FUNC(bbc_state::bbcbp_direct_handler), this));
|
m_maincpu->space(AS_PROGRAM).set_direct_update_handler(direct_update_delegate(FUNC(bbc_state::bbcbp_direct_handler), this));
|
||||||
|
|
||||||
/* bank 6 is the paged ROMs from b000 to bfff */
|
/* bank 6 is the paged ROMs from b000 to bfff */
|
||||||
membank("bank6")->configure_entries(0, 16, memregion("user1")->base() + 0x3000, 1<<14);
|
membank("bank6")->configure_entries(0, 16, m_region_user1->base() + 0x3000, 1<<14);
|
||||||
}
|
}
|
||||||
|
|
||||||
MACHINE_RESET_MEMBER(bbc_state,bbcbp)
|
MACHINE_RESET_MEMBER(bbc_state,bbcbp)
|
||||||
{
|
{
|
||||||
membank("bank1")->set_base(machine().root_device().memregion("maincpu")->base());
|
membank("bank1")->set_base(m_region_maincpu->base());
|
||||||
membank("bank2")->set_base(machine().root_device().memregion("maincpu")->base()+0x03000); /* bank 2 screen/shadow ram from 3000 to 7fff */
|
membank("bank2")->set_base(m_region_maincpu->base()+0x03000); /* bank 2 screen/shadow ram from 3000 to 7fff */
|
||||||
membank("bank4")->set_base(machine().root_device().memregion("user1")->base()); /* bank 4 is paged ROM or RAM from 8000 to afff */
|
membank("bank4")->set_base(m_region_user1->base()); /* bank 4 is paged ROM or RAM from 8000 to afff */
|
||||||
membank("bank6")->set_entry(0);
|
membank("bank6")->set_entry(0);
|
||||||
membank("bank7")->set_base(memregion("user1")->base()+0x40000); /* bank 7 points at the OS rom from c000 to ffff */
|
membank("bank7")->set_base(m_region_user1->base()+0x40000); /* bank 7 points at the OS rom from c000 to ffff */
|
||||||
|
|
||||||
bbcb_IC32_initialise(this);
|
bbcb_IC32_initialise(this);
|
||||||
|
|
||||||
@ -2090,23 +2090,23 @@ MACHINE_START_MEMBER(bbc_state,bbcm)
|
|||||||
{
|
{
|
||||||
m_mc6850_clock = 0;
|
m_mc6850_clock = 0;
|
||||||
|
|
||||||
machine().device("maincpu")->memory().space(AS_PROGRAM).set_direct_update_handler(direct_update_delegate(FUNC(bbc_state::bbcm_direct_handler), this));
|
m_maincpu->space(AS_PROGRAM).set_direct_update_handler(direct_update_delegate(FUNC(bbc_state::bbcm_direct_handler), this));
|
||||||
|
|
||||||
/* bank 5 is the paged ROMs from 9000 to bfff */
|
/* bank 5 is the paged ROMs from 9000 to bfff */
|
||||||
membank("bank5")->configure_entries(0, 16, machine().root_device().memregion("user1")->base()+0x01000, 1<<14);
|
membank("bank5")->configure_entries(0, 16, m_region_user1->base()+0x01000, 1<<14);
|
||||||
|
|
||||||
/* Set ROM/IO bank to point to rom */
|
/* Set ROM/IO bank to point to rom */
|
||||||
membank( "bank8" )->set_base( memregion("user1")->base()+0x43c00);
|
membank( "bank8" )->set_base( m_region_user1->base()+0x43c00);
|
||||||
machine().device("maincpu")->memory().space(AS_PROGRAM).install_read_bank(0xFC00, 0xFEFF, "bank8");
|
m_maincpu->space(AS_PROGRAM).install_read_bank(0xFC00, 0xFEFF, "bank8");
|
||||||
}
|
}
|
||||||
|
|
||||||
MACHINE_RESET_MEMBER(bbc_state,bbcm)
|
MACHINE_RESET_MEMBER(bbc_state,bbcm)
|
||||||
{
|
{
|
||||||
membank("bank1")->set_base(machine().root_device().memregion("maincpu")->base()); /* bank 1 regular lower ram from 0000 to 2fff */
|
membank("bank1")->set_base(m_region_maincpu->base()); /* bank 1 regular lower ram from 0000 to 2fff */
|
||||||
membank("bank2")->set_base(machine().root_device().memregion("maincpu")->base() + 0x3000); /* bank 2 screen/shadow ram from 3000 to 7fff */
|
membank("bank2")->set_base(m_region_maincpu->base() + 0x3000); /* bank 2 screen/shadow ram from 3000 to 7fff */
|
||||||
membank("bank4")->set_base(machine().root_device().memregion("user1")->base()); /* bank 4 is paged ROM or RAM from 8000 to 8fff */
|
membank("bank4")->set_base(m_region_user1->base()); /* bank 4 is paged ROM or RAM from 8000 to 8fff */
|
||||||
membank("bank5")->set_entry(0);
|
membank("bank5")->set_entry(0);
|
||||||
membank("bank7")->set_base(memregion("user1")->base() + 0x40000); /* bank 6 OS rom of RAM from c000 to dfff */
|
membank("bank7")->set_base(m_region_user1->base() + 0x40000); /* bank 6 OS rom of RAM from c000 to dfff */
|
||||||
|
|
||||||
bbcb_IC32_initialise(this);
|
bbcb_IC32_initialise(this);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user