summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Angelo Salese <angelosa@users.noreply.github.com>2014-04-11 21:11:14 +0000
committer Angelo Salese <angelosa@users.noreply.github.com>2014-04-11 21:11:14 +0000
commit3f45df05866d20b973d15a76d67c046320bba69c (patch)
tree180624b6001791e1a0d2f4565f0878a6136ee0be
parent1e0afe617eda7bedccf456c2e7534082893d1d6c (diff)
More improvements, Arthur now boots without hacks.
-rw-r--r--src/mame/machine/archimds.c11
-rw-r--r--src/mess/drivers/a310.c4
2 files changed, 8 insertions, 7 deletions
diff --git a/src/mame/machine/archimds.c b/src/mame/machine/archimds.c
index 53edd5e4f18..705abc5abfe 100644
--- a/src/mame/machine/archimds.c
+++ b/src/mame/machine/archimds.c
@@ -688,7 +688,6 @@ READ32_MEMBER(archimedes_state::archimedes_ioc_r)
if (m_fdc)
{
//printf("17XX: R @ addr %x mask %08x\n", offset*4, mem_mask);
-
switch(ioc_addr & 0xc)
{
case 0x00: return m_fdc->status_r();
@@ -805,17 +804,17 @@ WRITE32_MEMBER(archimedes_state::archimedes_ioc_w)
case 0x40: // latch A
floppy_image_device *floppy = NULL;
- if (data & 1) { floppy = m_floppy0->get_device(); }
- if (data & 2) { floppy = m_floppy1->get_device(); }
- if (data & 4) { floppy = NULL; } // floppy 2
- if (data & 8) { floppy = NULL; } // floppy 3
+ if (!(data & 1)) { floppy = m_floppy0->get_device(); }
+ if (!(data & 2)) { floppy = m_floppy1->get_device(); }
+ if (!(data & 4)) { floppy = NULL; } // floppy 2
+ if (!(data & 8)) { floppy = NULL; } // floppy 3
m_fdc->set_floppy(floppy);
if(floppy)
{
floppy->mon_w(BIT(data, 5));
- floppy->ss_w(BIT(data, 4));
+ floppy->ss_w(!(BIT(data, 4)));
}
//bit 5 is motor on
return;
diff --git a/src/mess/drivers/a310.c b/src/mess/drivers/a310.c
index 2ea56117cdc..efe67064522 100644
--- a/src/mess/drivers/a310.c
+++ b/src/mess/drivers/a310.c
@@ -98,6 +98,7 @@ protected:
WRITE_LINE_MEMBER(a310_state::a310_wd177x_intrq_w)
{
+ printf("%d IRQ\n",state);
if (state)
archimedes_request_fiq(ARCHIMEDES_FIQ_FLOPPY);
else
@@ -106,6 +107,7 @@ WRITE_LINE_MEMBER(a310_state::a310_wd177x_intrq_w)
WRITE_LINE_MEMBER(a310_state::a310_wd177x_drq_w)
{
+ printf("%d DRQ\n",state);
if (state)
archimedes_request_fiq(ARCHIMEDES_FIQ_FLOPPY_DRQ);
else
@@ -359,7 +361,7 @@ static MACHINE_CONFIG_START( a310, a310_state )
MCFG_RAM_DEFAULT_SIZE("2M")
MCFG_RAM_EXTRA_OPTIONS("512K, 1M, 4M, 8M, 16M")
- MCFG_WD1772x_ADD("fdc", 8000000 / 2)
+ MCFG_WD1772x_ADD("fdc", 8000000 / 1) // TODO: frequency
MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE( a310_state, a310_wd177x_intrq_w))
MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(a310_state, a310_wd177x_drq_w))
MCFG_FLOPPY_DRIVE_ADD("fdc:0", a310_floppies, "35dd", a310_state::floppy_formats)