From af046bcef3fe9e866e243f31984cb4f791ec17ba Mon Sep 17 00:00:00 2001 From: angelosa Date: Sat, 16 Nov 2024 11:13:39 +0100 Subject: nec/pc9801: hookup ARTIC I/O port 0x5f write --- src/mame/nec/pc9801.cpp | 9 ++++++++- src/mame/nec/pc9801.h | 1 + src/mame/nec/pc9801_cd.cpp | 14 +++++++------- 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/src/mame/nec/pc9801.cpp b/src/mame/nec/pc9801.cpp index 08fa0316f8a..a6cfd666fe1 100644 --- a/src/mame/nec/pc9801.cpp +++ b/src/mame/nec/pc9801.cpp @@ -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 / 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)); diff --git a/src/mame/nec/pc9801.h b/src/mame/nec/pc9801.h index 21161435668..e4ad90dce1d 100644 --- a/src/mame/nec/pc9801.h +++ b/src/mame/nec/pc9801.h @@ -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; diff --git a/src/mame/nec/pc9801_cd.cpp b/src/mame/nec/pc9801_cd.cpp index cb1155f9c73..339c7846437 100644 --- a/src/mame/nec/pc9801_cd.cpp +++ b/src/mame/nec/pc9801_cd.cpp @@ -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() -- cgit v1.2.3