From b60d119ad8011b47769e3ef6f861fa75aaf52741 Mon Sep 17 00:00:00 2001 From: Jasmine Iwanek Date: Tue, 20 Dec 2022 23:12:41 -0500 Subject: [PATCH] Add Western Digital WDXT-GEN --- src/disk/hdc.c | 1 + src/disk/hdc_st506_xt.c | 31 ++++++++++++++++++++++++++++++- src/include/86box/hdc.h | 1 + 3 files changed, 32 insertions(+), 1 deletion(-) diff --git a/src/disk/hdc.c b/src/disk/hdc.c index 8b75ac320..0e58b6473 100644 --- a/src/disk/hdc.c +++ b/src/disk/hdc.c @@ -84,6 +84,7 @@ static const struct { { &hdc_none_device }, { &hdc_internal_device }, { &st506_xt_xebec_device }, + { &st506_xt_wdxt_gen_device }, { &st506_xt_dtc5150x_device }, { &st506_xt_st11_m_device }, { &st506_xt_wd1002a_wx1_device }, diff --git a/src/disk/hdc_st506_xt.c b/src/disk/hdc_st506_xt.c index f130a58d5..343e42853 100644 --- a/src/disk/hdc_st506_xt.c +++ b/src/disk/hdc_st506_xt.c @@ -88,7 +88,8 @@ #include <86box/hdd.h> #define ST506_XT_TYPE_XEBEC 0 -#define ST506_XT_TYPE_DTC_5150X 1 +#define ST506_XT_TYPE_WDXT_GEN 1 +#define ST506_XT_TYPE_DTC_5150X 2 #define ST506_XT_TYPE_ST11M 11 #define ST506_XT_TYPE_ST11R 12 #define ST506_XT_TYPE_WD1002A_WX1 21 @@ -101,6 +102,7 @@ #define ST506_XT_TYPE_TOSHIBA_T1200 28 #define XEBEC_BIOS_FILE "roms/hdd/st506/ibm_xebec_62x0822_1985.bin" +#define WDXT_GEN_BIOS_FILE "roms/hdd/st506/wdxt-gen/62-000128-000.bin" #define DTC_BIOS_FILE "roms/hdd/st506/dtc_cxd21a.bin" #define ST11_BIOS_FILE_OLD "roms/hdd/st506/st11_bios_vers_1.7.bin" #define ST11_BIOS_FILE_NEW "roms/hdd/st506/st11_bios_vers_2.0.bin" @@ -1335,6 +1337,15 @@ mem_read(uint32_t addr, void *priv) } break; + case ST506_XT_TYPE_WDXT_GEN /* WDXT-GEN */ + if (addr >= 0x002000) { +#ifdef ENABLE_ST506_XT_LOG + st506_xt_log("ST506: WDXT-GEN ROM access(0x%06lx)\n", addr); +#endif + return 0xff; + } + break; + case ST506_XT_TYPE_DTC_5150X: /* DTC */ default: if (addr >= 0x002000) { @@ -1519,6 +1530,10 @@ st506_init(const device_t *info) fn = XEBEC_BIOS_FILE; break; + case ST506_XT_TYPE_WDXT_GEN: /* WDXT-GEN (MFM) */ + fn = WDXT_GEN_BIOS_FILE; + break; + case ST506_XT_TYPE_DTC_5150X: /* DTC5150 (MFM) */ fn = DTC_BIOS_FILE; dev->switches = 0xff; @@ -2124,6 +2139,20 @@ const device_t st506_xt_xebec_device = { .config = NULL }; +const device_t st506_xt_wdxt_gen_device = { + .name = "Western Digital WDXT-GEN (MFM)", + .internal_name = "st506_xt", + .flags = DEVICE_ISA, + .local = (HDD_BUS_MFM << 8) | ST506_XT_TYPE_WDXT_GEN, + .init = st506_init, + .close = st506_close, + .reset = NULL, + { .available = xebec_available }, + .speed_changed = NULL, + .force_redraw = NULL, + .config = NULL +}; + const device_t st506_xt_dtc5150x_device = { .name = "DTC 5150X MFM Fixed Disk Adapter", .internal_name = "st506_xt_dtc5150x", diff --git a/src/include/86box/hdc.h b/src/include/86box/hdc.h index 6b54e15e8..4320d86e2 100644 --- a/src/include/86box/hdc.h +++ b/src/include/86box/hdc.h @@ -35,6 +35,7 @@ extern int hdc_current; extern const device_t st506_xt_xebec_device; /* st506_xt_xebec */ +extern const device_t st506_xt_wdxt_gen_device; /* st506_xt_wdxt_gen */ extern const device_t st506_xt_dtc5150x_device; /* st506_xt_dtc */ extern const device_t st506_xt_st11_m_device; /* st506_xt_st11_m */ extern const device_t st506_xt_st11_r_device; /* st506_xt_st11_m */