diff --git a/src/mame/drivers/aristmk5.c b/src/mame/drivers/aristmk5.c index ee364042a57..072529948f1 100644 --- a/src/mame/drivers/aristmk5.c +++ b/src/mame/drivers/aristmk5.c @@ -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 ) diff --git a/src/mame/machine/archimds.c b/src/mame/machine/archimds.c index 7615f6a951d..32c9246f654 100644 --- a/src/mame/machine/archimds.c +++ b/src/mame/machine/archimds.c @@ -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); } } }