Fixed the fourth batch of problems.
This commit is contained in:
@@ -1364,13 +1364,24 @@ static void
|
||||
mem_write_scatw(uint32_t addr, uint16_t val, void *priv)
|
||||
{
|
||||
ems_page_t *page = (ems_page_t *)priv;
|
||||
scat_t *dev = (scat_t *)page->scat;
|
||||
scat_t *dev;
|
||||
uint32_t oldaddr = addr, chkaddr;
|
||||
|
||||
addr = get_addr(dev, addr, page);
|
||||
chkaddr = page ? addr : oldaddr;
|
||||
if (page == NULL)
|
||||
dev = NULL;
|
||||
else
|
||||
dev = (scat_t *)page->scat;
|
||||
|
||||
if (dev == NULL)
|
||||
chkaddr = oldaddr;
|
||||
else {
|
||||
addr = get_addr(dev, addr, page);
|
||||
chkaddr = addr;
|
||||
}
|
||||
|
||||
if (chkaddr >= 0xc0000 && chkaddr < 0x100000) {
|
||||
if (dev->regs[SCAT_RAM_WRITE_PROTECT] & (1 << ((chkaddr - 0xc0000) >> 15))) return;
|
||||
if (dev->regs[SCAT_RAM_WRITE_PROTECT] & (1 << ((chkaddr - 0xc0000) >> 15)))
|
||||
return;
|
||||
}
|
||||
|
||||
if (addr < ((uint32_t)mem_size << 10))
|
||||
@@ -1382,14 +1393,26 @@ static void
|
||||
mem_write_scatl(uint32_t addr, uint32_t val, void *priv)
|
||||
{
|
||||
ems_page_t *page = (ems_page_t *)priv;
|
||||
scat_t *dev = (scat_t *)page->scat;
|
||||
scat_t *dev;
|
||||
uint32_t oldaddr = addr, chkaddr;
|
||||
|
||||
addr = get_addr(dev, addr, page);
|
||||
chkaddr = page ? addr : oldaddr;
|
||||
if (chkaddr >= 0xc0000 && chkaddr < 0x100000) {
|
||||
if (dev->regs[SCAT_RAM_WRITE_PROTECT] & (1 << ((chkaddr - 0xc0000) >> 15))) return;
|
||||
if (page == NULL)
|
||||
dev = NULL;
|
||||
else
|
||||
dev = (scat_t *)page->scat;
|
||||
|
||||
if (dev == NULL)
|
||||
chkaddr = oldaddr;
|
||||
else {
|
||||
addr = get_addr(dev, addr, page);
|
||||
chkaddr = addr;
|
||||
}
|
||||
|
||||
if (chkaddr >= 0xc0000 && chkaddr < 0x100000) {
|
||||
if (dev->regs[SCAT_RAM_WRITE_PROTECT] & (1 << ((chkaddr - 0xc0000) >> 15)))
|
||||
return;
|
||||
}
|
||||
|
||||
if (addr < ((uint32_t)mem_size << 10))
|
||||
*(uint32_t *)&ram[addr] = val;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user