mirror of
https://github.com/holub/mame
synced 2025-04-24 17:30:55 +03:00
(MESS) apple3: Fix ROM test in Diagnostics and support PCPI AppliCard [R. Belmont]
This commit is contained in:
parent
d438684920
commit
1f92dd5452
@ -22,6 +22,7 @@
|
||||
#include "machine/appldriv.h"
|
||||
|
||||
#include "bus/a2bus/a2cffa.h"
|
||||
#include "bus/a2bus/a2applicard.h"
|
||||
|
||||
static ADDRESS_MAP_START( apple3_map, AS_PROGRAM, 8, apple3_state )
|
||||
AM_RANGE(0x0000, 0xffff) AM_READWRITE(apple3_memory_r, apple3_memory_w)
|
||||
@ -42,6 +43,7 @@ static const floppy_interface apple3_floppy_interface =
|
||||
|
||||
static SLOT_INTERFACE_START(apple3_cards)
|
||||
SLOT_INTERFACE("cffa2", A2BUS_CFFA2_6502) /* CFFA2000 Compact Flash for Apple II (www.dreher.net), 6502 firmware */
|
||||
SLOT_INTERFACE("applicard", A2BUS_APPLICARD) /* PCPI Applicard */
|
||||
SLOT_INTERFACE_END
|
||||
|
||||
static const struct a2bus_interface a2bus_intf =
|
||||
|
@ -93,7 +93,7 @@ public:
|
||||
UINT8 *apple3_get_zpa_addr(offs_t offset);
|
||||
void apple3_update_memory();
|
||||
void apple3_via_out(UINT8 *var, UINT8 data);
|
||||
UINT8 *apple3_get_indexed_addr(offs_t offset);
|
||||
UINT8 *apple3_get_indexed_addr(offs_t offset, bool is_write);
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(apple3_c040_tick);
|
||||
DECLARE_PALETTE_INIT(apple3);
|
||||
void apple3_irq_update();
|
||||
|
@ -3,9 +3,9 @@
|
||||
machine/apple3.c
|
||||
|
||||
Apple ///
|
||||
|
||||
|
||||
VIA #0 (D VIA)
|
||||
CA1: IRQ from the MM58167 RTC
|
||||
CA1: IRQ from the MM58167 RTC
|
||||
CA2: 1 if key pressed, 0 otherwise
|
||||
CB1/CB2: connected to VBL
|
||||
|
||||
@ -541,7 +541,7 @@ MACHINE_RESET_MEMBER(apple3_state,apple3)
|
||||
|
||||
|
||||
|
||||
UINT8 *apple3_state::apple3_get_indexed_addr(offs_t offset)
|
||||
UINT8 *apple3_state::apple3_get_indexed_addr(offs_t offset, bool is_write)
|
||||
{
|
||||
UINT8 n;
|
||||
UINT8 *result = NULL;
|
||||
@ -598,7 +598,7 @@ UINT8 *apple3_state::apple3_get_indexed_addr(offs_t offset)
|
||||
result = apple3_bankaddr(~0, ((offs_t) m_via_0_b) * 0x100 + offset);
|
||||
}
|
||||
}
|
||||
else if ((offset >= 0xF000) && (m_via_0_a & 0x01))
|
||||
else if ((offset >= 0xF000) && (m_via_0_a & 0x01) && (is_write))
|
||||
{
|
||||
/* The Apple /// Diagnostics seems to expect that indexed writes
|
||||
* always write to RAM. That image jumps to an address that is
|
||||
@ -606,6 +606,8 @@ UINT8 *apple3_state::apple3_get_indexed_addr(offs_t offset)
|
||||
*
|
||||
* The confidence test and the diagnostics together indicates
|
||||
* that this *doesn't* apply to the VIA region, however.
|
||||
*
|
||||
* The Diagnostics' ROM test shows this is for writes only.
|
||||
*/
|
||||
|
||||
if (offset < 0xffd0 || offset > 0xffef)
|
||||
@ -737,7 +739,7 @@ READ8_MEMBER(apple3_state::apple3_memory_r)
|
||||
((m_indir_count == 3) && ((!(m_indir_opcode & 0x10)) && (((m_indir_opcode & 0xf) == 0xc) || ((m_indir_opcode & 0xf) == 0xd)))))
|
||||
{
|
||||
UINT8 *test;
|
||||
test = apple3_get_indexed_addr(offset);
|
||||
test = apple3_get_indexed_addr(offset, false);
|
||||
|
||||
if (test)
|
||||
{
|
||||
@ -894,7 +896,7 @@ WRITE8_MEMBER(apple3_state::apple3_memory_w)
|
||||
if ((!space.debugger_access()) && (m_indir_count > 0))
|
||||
{
|
||||
UINT8 *test;
|
||||
test = apple3_get_indexed_addr(offset);
|
||||
test = apple3_get_indexed_addr(offset, true);
|
||||
|
||||
if (test)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user