mirror of
https://github.com/holub/mame
synced 2025-04-23 08:49:55 +03:00
vis: WIP (nw)
This commit is contained in:
parent
8993c2fe54
commit
26b7deb7d3
@ -112,6 +112,8 @@ WRITE8_MEMBER(mcd_isa_device::cmd_w)
|
||||
{
|
||||
case CMD_SET_MODE:
|
||||
m_mode = data;
|
||||
m_buf[0] = 0;
|
||||
m_buf_count = 1;
|
||||
break;
|
||||
case CMD_LOCK:
|
||||
m_locked = data & 1 ? true : false;
|
||||
@ -167,7 +169,8 @@ WRITE8_MEMBER(mcd_isa_device::cmd_w)
|
||||
m_buf[5] = dec_2_bcd((last >> 16) & 0xff);
|
||||
m_buf[6] = dec_2_bcd((last >> 8) & 0xff);
|
||||
m_buf[7] = dec_2_bcd(last & 0xff);
|
||||
m_buf_count = 8;
|
||||
m_buf[8] = 0;
|
||||
m_buf_count = 9;
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -183,8 +186,8 @@ WRITE8_MEMBER(mcd_isa_device::cmd_w)
|
||||
UINT32 start = lba_to_msf(cdrom_get_track_start(m_cdrom_handle, m_curtoctrk));
|
||||
UINT32 end = lba_to_msf(cdrom_get_track_start(m_cdrom_handle, m_curtoctrk < tracks ? m_curtoctrk + 1 : 0xaa));
|
||||
m_buf[0] = 1; // track type?
|
||||
m_buf[1] = dec_2_bcd(m_curtoctrk + 1);
|
||||
m_buf[2] = dec_2_bcd(m_curtoctrk + 1);
|
||||
m_buf[1] = 0; // track num except when reading toc
|
||||
m_buf[2] = dec_2_bcd(m_curtoctrk); // index
|
||||
m_buf[3] = dec_2_bcd((start >> 16) & 0xff);
|
||||
m_buf[4] = dec_2_bcd((start >> 8) & 0xff);
|
||||
m_buf[5] = dec_2_bcd(start & 0xff);
|
||||
|
@ -12,10 +12,12 @@ public:
|
||||
vis_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag),
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_mb(*this, "mb")
|
||||
m_mb(*this, "mb"),
|
||||
m_pic1(*this, "mb:pic8259_slave")
|
||||
{ }
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<at_mb_device> m_mb;
|
||||
required_device<pic8259_device> m_pic1;
|
||||
|
||||
DECLARE_READ8_MEMBER(sysctl_r);
|
||||
DECLARE_WRITE8_MEMBER(sysctl_w);
|
||||
@ -23,24 +25,23 @@ public:
|
||||
DECLARE_WRITE8_MEMBER(unk_w);
|
||||
DECLARE_READ8_MEMBER(unk2_r);
|
||||
DECLARE_READ8_MEMBER(unk3_r);
|
||||
DECLARE_READ8_MEMBER(cdrom_r);
|
||||
DECLARE_WRITE8_MEMBER(cdrom_w);
|
||||
DECLARE_READ8_MEMBER(pad_r);
|
||||
DECLARE_WRITE8_MEMBER(pad_w);
|
||||
protected:
|
||||
void machine_reset() override;
|
||||
private:
|
||||
UINT8 m_sysctl;
|
||||
UINT8 m_unkidx;
|
||||
UINT8 m_unk[16];
|
||||
UINT8 m_cdcmd, m_cdstat;
|
||||
UINT8 m_pad[4];
|
||||
};
|
||||
|
||||
void vis_state::machine_reset()
|
||||
{
|
||||
m_cdcmd = 0;
|
||||
m_cdstat = 0;
|
||||
m_sysctl = 0;
|
||||
}
|
||||
|
||||
//chipset registers?
|
||||
READ8_MEMBER(vis_state::unk_r)
|
||||
{
|
||||
if(offset)
|
||||
@ -61,11 +62,32 @@ READ8_MEMBER(vis_state::unk2_r)
|
||||
return 0x40;
|
||||
}
|
||||
|
||||
//memory card reader?
|
||||
READ8_MEMBER(vis_state::unk3_r)
|
||||
{
|
||||
return 0x00;
|
||||
}
|
||||
|
||||
READ8_MEMBER(vis_state::pad_r)
|
||||
{
|
||||
if(offset == 2)
|
||||
return 0xde;
|
||||
return 0;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(vis_state::pad_w)
|
||||
{
|
||||
switch(offset)
|
||||
{
|
||||
case 1:
|
||||
if(data == 0x10)
|
||||
m_pic1->ir1_w(CLEAR_LINE);
|
||||
else if(data == 0x16)
|
||||
m_pic1->ir1_w(ASSERT_LINE);
|
||||
}
|
||||
m_pad[offset] = data;
|
||||
}
|
||||
|
||||
READ8_MEMBER(vis_state::sysctl_r)
|
||||
{
|
||||
return m_sysctl;
|
||||
@ -84,6 +106,7 @@ static ADDRESS_MAP_START( at16_map, AS_PROGRAM, 16, vis_state )
|
||||
AM_RANGE(0x000000, 0x09ffff) AM_RAM
|
||||
AM_RANGE(0x0d8000, 0x0fffff) AM_ROM AM_REGION("bios", 0xd8000)
|
||||
AM_RANGE(0x100000, 0x15ffff) AM_RAM
|
||||
AM_RANGE(0x300000, 0x3fffff) AM_ROM AM_REGION("bios", 0)
|
||||
AM_RANGE(0xff0000, 0xffffff) AM_ROM AM_REGION("bios", 0xf0000)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
@ -93,6 +116,7 @@ static ADDRESS_MAP_START( at16_io, AS_IO, 16, vis_state )
|
||||
AM_RANGE(0x006a, 0x006b) AM_READ8(unk2_r, 0x00ff)
|
||||
AM_RANGE(0x0092, 0x0093) AM_READWRITE8(sysctl_r, sysctl_w, 0x00ff)
|
||||
AM_RANGE(0x0000, 0x00ff) AM_DEVICE("mb", at_mb_device, map)
|
||||
AM_RANGE(0x023c, 0x023f) AM_READWRITE8(pad_r, pad_w, 0xffff)
|
||||
AM_RANGE(0x031a, 0x031b) AM_READ8(unk3_r, 0x00ff)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user