olyboss: floppy wip (nw)

This commit is contained in:
cracyc 2018-02-12 23:02:22 -06:00
parent 11dec07aee
commit 3b421603ec
2 changed files with 37 additions and 4 deletions

View File

@ -231,7 +231,7 @@ inline void i8257_device::dma_write()
}
break;
}
LOGTFR(" channel %d Offset %04x: %02x\n", m_channel, offset, m_temp);
LOGTFR(" channel %d Offset %04x: %02x %04x\n", m_current_channel, offset, m_temp, m_channel[m_current_channel].m_count);
}

View File

@ -69,10 +69,14 @@ public:
UPD3301_DRAW_CHARACTER_MEMBER( olyboss_display_pixels );
DECLARE_WRITE_LINE_MEMBER( hrq_w );
DECLARE_WRITE_LINE_MEMBER( tc_w );
DECLARE_READ8_MEMBER( dma_mem_r );
DECLARE_WRITE8_MEMBER( dma_mem_w );
DECLARE_READ8_MEMBER( fdcctrl_r );
DECLARE_WRITE8_MEMBER( fdcctrl_w );
DECLARE_READ8_MEMBER( fdcdma_r );
DECLARE_WRITE8_MEMBER( fdcdma_w );
DECLARE_WRITE8_MEMBER( crtcdma_w );
void olybossd(machine_config &config);
void olyboss_io(address_map &map);
@ -89,6 +93,7 @@ private:
u8 m_keystroke;
void keyboard_put(u8 data);
u8 m_fdcctrl;
u8 m_channel;
};
//**************************************************************************
@ -200,6 +205,15 @@ WRITE_LINE_MEMBER( olyboss_state::hrq_w )
m_dma->hlda_w(state);
}
WRITE_LINE_MEMBER( olyboss_state::tc_w )
{
if((m_channel == 0) && state)
{
m_fdc->tc_w(1);
m_fdc->tc_w(0);
}
}
READ8_MEMBER( olyboss_state::dma_mem_r )
{
address_space &program = m_maincpu->space(AS_PROGRAM);
@ -212,6 +226,24 @@ WRITE8_MEMBER( olyboss_state::dma_mem_w )
program.write_byte(offset, data);
}
READ8_MEMBER( olyboss_state::fdcdma_r )
{
m_channel = 0;
return m_fdc->dma_r();
}
WRITE8_MEMBER( olyboss_state::fdcdma_w )
{
m_channel = 0;
m_fdc->dma_w(data);
}
WRITE8_MEMBER( olyboss_state::crtcdma_w )
{
m_channel = 2;
m_crtc->dack_w(space, offset, data, mem_mask);
}
READ8_MEMBER( olyboss_state::fdcctrl_r )
{
return m_fdcctrl | 0x80; // 0xc0 seems to indicate an 8" drive
@ -259,9 +291,10 @@ MACHINE_CONFIG_START( olyboss_state::olybossd )
MCFG_I8257_OUT_HRQ_CB(WRITELINE(olyboss_state, hrq_w))
MCFG_I8257_IN_MEMR_CB(READ8(olyboss_state, dma_mem_r))
MCFG_I8257_OUT_MEMW_CB(WRITE8(olyboss_state, dma_mem_w))
MCFG_I8257_IN_IOR_0_CB(DEVREAD8("fdc", upd765a_device, mdma_r))
MCFG_I8257_OUT_IOW_0_CB(DEVWRITE8("fdc", upd765a_device, mdma_w))
MCFG_I8257_OUT_IOW_2_CB(DEVWRITE8(UPD3301_TAG, upd3301_device, dack_w))
MCFG_I8257_IN_IOR_0_CB(READ8(olyboss_state, fdcdma_r))
MCFG_I8257_OUT_IOW_0_CB(WRITE8(olyboss_state, fdcdma_w))
MCFG_I8257_OUT_IOW_2_CB(WRITE8(olyboss_state, crtcdma_w))
MCFG_I8257_OUT_TC_CB(WRITELINE(olyboss_state, tc_w))
MCFG_DEVICE_ADD(UPD3301_TAG, UPD3301, XTAL(14'318'181))
MCFG_UPD3301_CHARACTER_WIDTH(8)