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)