nec/pc9801: hookup ARTIC I/O port 0x5f write

This commit is contained in:
angelosa 2024-11-16 11:13:39 +01:00
parent 2aaf9a3538
commit af046bcef3
3 changed files with 16 additions and 8 deletions

View File

@ -1071,6 +1071,12 @@ uint16_t pc9801vm_state::timestamp_r(offs_t offset)
return (m_maincpu->total_cycles() >> (16 * offset));
}
void pc9801vm_state::artic_wait_w(u8 data)
{
// 0.6 μsec
m_maincpu->spin_until_time(attotime::from_nsec(600));
}
uint8_t pc9801vm_state::midi_r()
{
/* unconnect, needed by Amaranth KH to boot */
@ -1107,7 +1113,8 @@ void pc9801vm_state::pc9801ux_io(address_map &map)
pc9801_common_io(map);
map(0x0020, 0x002f).w(FUNC(pc9801vm_state::dmapg8_w)).umask16(0xff00);
// map(0x0050, 0x0057).noprw(); // 2dd ppi?
map(0x005c, 0x005f).r(FUNC(pc9801vm_state::timestamp_r)).nopw(); // artic
map(0x005c, 0x005f).r(FUNC(pc9801vm_state::timestamp_r)); // artic
map(0x005f, 0x005f).w(FUNC(pc9801vm_state::artic_wait_w));
map(0x0068, 0x006b).w(FUNC(pc9801vm_state::pc9801rs_video_ff_w)).umask16(0x00ff); //mode FF / <undefined>
map(0x0070, 0x007f).rw(FUNC(pc9801vm_state::grcg_r), FUNC(pc9801vm_state::grcg_w)).umask16(0x00ff); //display registers "GRCG" / i8253 pit
map(0x0090, 0x0090).r(m_fdc_2hd, FUNC(upd765a_device::msr_r));

View File

@ -431,6 +431,7 @@ protected:
void dmapg8_w(offs_t offset, uint8_t data);
uint16_t timestamp_r(offs_t offset);
void artic_wait_w(u8 data);
void ppi_sys_dac_portc_w(uint8_t data);
virtual u8 ppi_prn_portb_r() override;

View File

@ -21,13 +21,13 @@ pc9801_cd_device::pc9801_cd_device(const machine_config &mconfig, const char *ta
// np2 T10SPC_CMD_INQUIRY defaults for CD-50
// t10mmc::set_model("NEC CD-ROM DRIVE 1.0 ");
// data[0] = 0x05; CD-ROM
// data[1] = 0x80; Removable medium bit
// data[2] = 0x00; ANSI
// data[3] = 0x21; ATAPI spec v2, response data format
// data[4] = 0x1f;
// data[5] = 0;
// data[6] = 0;
// data[7] = 0;
// data[1] = 0x80; Removable medium bit
// data[2] = 0x00; ANSI
// data[3] = 0x21; ATAPI spec v2, response data format
// data[4] = 0x1f;
// data[5] = 0;
// data[6] = 0;
// data[7] = 0;
void pc9801_cd_device::fill_buffer()