Virtual memory initial bank hack, to show all of the MK-5 errors, no whatsnew

This commit is contained in:
Angelo Salese 2010-08-16 16:07:14 +00:00
parent 557293e730
commit 0d8556a7da
2 changed files with 33 additions and 6 deletions

View File

@ -1,9 +1,25 @@
/*
Aristocrat MK5 / MKV hardware
possibly 'Acorn Archimedes on a chip' hardware
Aristocrat MK5 / MKV hardware
possibly 'Acorn Archimedes on a chip' hardware
Note: ARM250 mapping is not identical to plain AA
code DASMing of POST (Adonis):
- bp 0x3400224:
checks work RAM [0x87000], if bit 0 active high then all tests are ok, otherwise check what went wrong;
- bp 0x3400230: EPROM checksum branch test
- bp 0x3400258: DRAM Check branch test
- bp 0x3400280: CPU Check branch test
- bp 0x34002a8: SRAM Check branch test
- bp 0x34002d0: 2KHz Timer branch test
- bp 0x34002f8: DRAM emulator branch tests
- R0 == 0 "DRAM emulator found"
- R0 == 1 "DRAM emulator found"
- R0 == 3 "DRAM emulator not found - Error"
- R0 == 4 "DRAM emulator found instead of DRAM - Error"
- R0 == x "Undefined error in DRAM emulator area"
Note: ARM250 mapping is not identical to
*/
@ -13,6 +29,7 @@
#include "includes/archimds.h"
extern UINT8 ioc_regs[0x80/4];
extern INT16 memc_pages[(32*1024*1024)/(4096)]; // the logical RAM area is 32 megs, and the smallest page size is 4k
extern void archimedes_request_irq_a(running_machine *machine, int mask);
extern UINT32 *archimedes_memc_physmem;
@ -31,6 +48,7 @@ static VIDEO_UPDATE(aristmk5)
// sets video DMA to 0x400 - 0x400 - 0xfe00
count = 0x800/4; // 0x400 text is offset???
for(y=0;y<480;y++)
{
for(x=0;x<640;x+=4)
@ -77,6 +95,15 @@ static MACHINE_RESET( aristmk5 )
{
archimedes_reset(machine);
ioc_regs[4]|=1; //set printer busy irq?
{
int i;
// kludge, set up MMU pages to a normal value, in order to draw all of the vram
for (i = 0; i < (32*1024*1024)/(4096); i++)
{
memc_pages[i] = i;
}
}
}
static MACHINE_DRIVER_START( aristmk5 )

View File

@ -40,7 +40,7 @@ static const int page_sizes[4] = { 4096, 8192, 16384, 32768 };
UINT32 *archimedes_memc_physmem;
static UINT32 memc_pagesize;
static int memc_latchrom;
static INT16 memc_pages[(32*1024*1024)/(4096)]; // the logical RAM area is 32 megs, and the smallest page size is 4k
INT16 memc_pages[(32*1024*1024)/(4096)]; // the logical RAM area is 32 megs, and the smallest page size is 4k
UINT32 vidc_regs[256];
UINT8 ioc_regs[0x80/4];
static UINT32 ioc_timercnt[4], ioc_timerout[4];
@ -206,7 +206,7 @@ READ32_HANDLER(archimedes_memc_logical_r)
}
else
{
logerror("ARCHIMEDES_MEMC: Reading unmapped page\n");
logerror("ARCHIMEDES_MEMC: Reading unmapped page %02x\n",page);
return 0xdeadbeef;
}
}
@ -237,7 +237,7 @@ WRITE32_HANDLER(archimedes_memc_logical_w)
}
else
{
logerror("ARCHIMEDES_MEMC: Writing unmapped page, what do we do?\n");
logerror("ARCHIMEDES_MEMC: Writing unmapped page %02x, what do we do?\n",page);
}
}
}