More improvements, Arthur now boots without hacks.

This commit is contained in:
Angelo Salese 2014-04-11 21:11:14 +00:00
parent 1e0afe617e
commit 3f45df0586
2 changed files with 8 additions and 7 deletions

View File

@ -688,7 +688,6 @@ READ32_MEMBER(archimedes_state::archimedes_ioc_r)
if (m_fdc) if (m_fdc)
{ {
//printf("17XX: R @ addr %x mask %08x\n", offset*4, mem_mask); //printf("17XX: R @ addr %x mask %08x\n", offset*4, mem_mask);
switch(ioc_addr & 0xc) switch(ioc_addr & 0xc)
{ {
case 0x00: return m_fdc->status_r(); case 0x00: return m_fdc->status_r();
@ -805,17 +804,17 @@ WRITE32_MEMBER(archimedes_state::archimedes_ioc_w)
case 0x40: // latch A case 0x40: // latch A
floppy_image_device *floppy = NULL; floppy_image_device *floppy = NULL;
if (data & 1) { floppy = m_floppy0->get_device(); } if (!(data & 1)) { floppy = m_floppy0->get_device(); }
if (data & 2) { floppy = m_floppy1->get_device(); } if (!(data & 2)) { floppy = m_floppy1->get_device(); }
if (data & 4) { floppy = NULL; } // floppy 2 if (!(data & 4)) { floppy = NULL; } // floppy 2
if (data & 8) { floppy = NULL; } // floppy 3 if (!(data & 8)) { floppy = NULL; } // floppy 3
m_fdc->set_floppy(floppy); m_fdc->set_floppy(floppy);
if(floppy) if(floppy)
{ {
floppy->mon_w(BIT(data, 5)); floppy->mon_w(BIT(data, 5));
floppy->ss_w(BIT(data, 4)); floppy->ss_w(!(BIT(data, 4)));
} }
//bit 5 is motor on //bit 5 is motor on
return; return;

View File

@ -98,6 +98,7 @@ protected:
WRITE_LINE_MEMBER(a310_state::a310_wd177x_intrq_w) WRITE_LINE_MEMBER(a310_state::a310_wd177x_intrq_w)
{ {
printf("%d IRQ\n",state);
if (state) if (state)
archimedes_request_fiq(ARCHIMEDES_FIQ_FLOPPY); archimedes_request_fiq(ARCHIMEDES_FIQ_FLOPPY);
else else
@ -106,6 +107,7 @@ WRITE_LINE_MEMBER(a310_state::a310_wd177x_intrq_w)
WRITE_LINE_MEMBER(a310_state::a310_wd177x_drq_w) WRITE_LINE_MEMBER(a310_state::a310_wd177x_drq_w)
{ {
printf("%d DRQ\n",state);
if (state) if (state)
archimedes_request_fiq(ARCHIMEDES_FIQ_FLOPPY_DRQ); archimedes_request_fiq(ARCHIMEDES_FIQ_FLOPPY_DRQ);
else else
@ -359,7 +361,7 @@ static MACHINE_CONFIG_START( a310, a310_state )
MCFG_RAM_DEFAULT_SIZE("2M") MCFG_RAM_DEFAULT_SIZE("2M")
MCFG_RAM_EXTRA_OPTIONS("512K, 1M, 4M, 8M, 16M") 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_INTRQ_CALLBACK(WRITELINE( a310_state, a310_wd177x_intrq_w))
MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(a310_state, a310_wd177x_drq_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) MCFG_FLOPPY_DRIVE_ADD("fdc:0", a310_floppies, "35dd", a310_state::floppy_formats)