diff options
author | Brice Onken <32155223+briceonk@users.noreply.github.com> | 2022-08-19 07:25:32 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-08-20 00:25:32 +1000 |
commit | 5ac798b23844ceec2cdab6628e86685049707a45 (patch) | |
tree | fe2c5b931785fb444288df7b33cc2f236f64c9c6 /src/devices/machine/upd765.cpp | |
parent | 171607573760c5e361f991aeecb6a7c61456d2b5 (diff) |
sony_news/news_r4k.cpp: Implemented Sony NEWS NWS-5000X driver. (#8854)
* sony_news/news_hid.cpp: Added APbus I/O mapping.
* bus/nscsi/cd.cpp: Added Sony CD-ROM CDU-541 1.0A recognised by NEWS-OS.
* machine/upd765.cpp: Added National Semiconductor PC8477B clone.
New machines marked not working
--------------------
Sony NET WORK STATION NWS-5000X
Diffstat (limited to 'src/devices/machine/upd765.cpp')
-rw-r--r-- | src/devices/machine/upd765.cpp | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/devices/machine/upd765.cpp b/src/devices/machine/upd765.cpp index 39e0a402fd6..4996093e0bd 100644 --- a/src/devices/machine/upd765.cpp +++ b/src/devices/machine/upd765.cpp @@ -53,6 +53,7 @@ DEFINE_DEVICE_TYPE(N82077AA, n82077aa_device, "n82077aa", "Int DEFINE_DEVICE_TYPE(PC_FDC_SUPERIO, pc_fdc_superio_device, "pc_fdc_superio", "Winbond PC FDC Super I/O") DEFINE_DEVICE_TYPE(DP8473, dp8473_device, "dp8473", "National Semiconductor DP8473 FDC") DEFINE_DEVICE_TYPE(PC8477A, pc8477a_device, "pc8477a", "National Semiconductor PC8477A FDC") +DEFINE_DEVICE_TYPE(PC8477B, pc8477b_device, "pc8477b", "National Semiconductor PC8477B FDC") DEFINE_DEVICE_TYPE(WD37C65C, wd37c65c_device, "wd37c65c", "Western Digital WD37C65C FDC") DEFINE_DEVICE_TYPE(MCS3201, mcs3201_device, "mcs3201", "Motorola MCS3201 FDC") DEFINE_DEVICE_TYPE(TC8566AF, tc8566af_device, "tc8566af", "Toshiba TC8566AF FDC") @@ -139,6 +140,19 @@ void pc8477a_device::map(address_map &map) map(0x7, 0x7).rw(FUNC(pc8477a_device::dir_r), FUNC(pc8477a_device::ccr_w)); } +void pc8477b_device::map(address_map &map) +{ + if(mode != mode_t::AT) { + map(0x0, 0x0).r(FUNC(pc8477b_device::sra_r)); + map(0x1, 0x1).r(FUNC(pc8477b_device::srb_r)); + } + map(0x2, 0x2).rw(FUNC(pc8477b_device::dor_r), FUNC(pc8477b_device::dor_w)); + map(0x3, 0x3).rw(FUNC(pc8477b_device::tdr_r), FUNC(pc8477b_device::tdr_w)); + map(0x4, 0x4).rw(FUNC(pc8477b_device::msr_r), FUNC(pc8477b_device::dsr_w)); + map(0x5, 0x5).rw(FUNC(pc8477b_device::fifo_r), FUNC(pc8477b_device::fifo_w)); + map(0x7, 0x7).rw(FUNC(pc8477b_device::dir_r), FUNC(pc8477b_device::ccr_w)); +} + void wd37c65c_device::map(address_map &map) { // NOTE: this map only covers registers defined by CS. @@ -3153,6 +3167,15 @@ pc8477a_device::pc8477a_device(const machine_config &mconfig, const char *tag, d recalibrate_steps = 85; // TODO: may also be programmed as 255, 3925 or 4095 by (unemulated) mode command } +pc8477b_device::pc8477b_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : ps2_fdc_device(mconfig, PC8477B, tag, owner, clock) +{ + ready_polled = true; + ready_connected = false; + select_connected = true; + select_multiplexed = false; + recalibrate_steps = 85; // TODO: may also be programmed as 255, 3925 or 4095 by (unemulated) mode command +} + wd37c65c_device::wd37c65c_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : upd765_family_device(mconfig, WD37C65C, tag, owner, clock), m_clock2(0) |