diff --git a/src/disk/hdc_st506_xt.c b/src/disk/hdc_st506_xt.c index ddf137f9c..685ef8427 100644 --- a/src/disk/hdc_st506_xt.c +++ b/src/disk/hdc_st506_xt.c @@ -821,7 +821,7 @@ st506_callback(void *priv) /* For a 615/4/26 we get 666/2/31 geometry. */ st506_xt_log("ST506: drive%i: cyls=%i, heads=%i\n", dev->drive_sel, drive->cfg_cyl, drive->cfg_hpc); - if (dev->type == 23 && drive->cfg_hpc == 2) { + if ((dev->type >= 23) && (drive->cfg_hpc == 2)) { /* * On Victor V86P, there's a disagreement between * the physical geometry, what the controller @@ -975,7 +975,7 @@ st506_callback(void *priv) break; case CMD_V86P_POWEROFF: - if (dev->type == 23) { + if (dev->type >= 23) { /* * Main BIOS (not the option ROM on disk) issues this. * Not much we can do, since we don't have a physical disk @@ -1538,9 +1538,16 @@ st506_init(const device_t *info) dev->switches |= 0x40; dev->bios_addr = device_get_config_hex20("bios_addr"); break; + case 23: /* Victor V86P (RLL) */ fn = VICTOR_V86P_BIOS_FILE; break; + + case 24: /* Toshiba T1200 */ + fn = NULL; + dev->base = 0x01f0; + dev->switches = 0x0c; + break; } /* Load the ROM BIOS. */ @@ -2112,3 +2119,17 @@ const device_t st506_xt_victor_v86p_device = { .force_redraw = NULL, .config = NULL }; + +const device_t st506_xt_toshiba_t1200_device = { + .name = "Toshiba T1200 RLL Fixed Disk Adapter", + .internal_name = "st506_xt_toshiba_t1200", + .flags = DEVICE_ISA, + .local = (HDD_BUS_MFM << 8) | 24, + .init = st506_init, + .close = st506_close, + .reset = NULL, + { .available = NULL }, + .speed_changed = NULL, + .force_redraw = NULL, + .config = NULL +}; diff --git a/src/include/86box/hdc.h b/src/include/86box/hdc.h index bde423337..5748fec02 100644 --- a/src/include/86box/hdc.h +++ b/src/include/86box/hdc.h @@ -30,17 +30,18 @@ extern int hdc_current; -extern const device_t st506_xt_xebec_device; /* st506_xt_xebec */ -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 */ -extern const device_t st506_xt_wd1002a_wx1_device; /* st506_xt_wd1002a_wx1 */ -extern const device_t st506_xt_wd1002a_27x_device; /* st506_xt_wd1002a_27x */ -extern const device_t st506_at_wd1003_device; /* st506_at_wd1003 */ -extern const device_t st506_xt_wd1004a_wx1_device; /* st506_xt_wd1004a_wx1 */ -extern const device_t st506_xt_wd1004_27x_device; /* st506_xt_wd1004_27x */ -extern const device_t st506_xt_wd1004a_27x_device; /* st506_xt_wd1004a_27x */ -extern const device_t st506_xt_victor_v86p_device; /* st506_xt_victor_v86p */ +extern const device_t st506_xt_xebec_device; /* st506_xt_xebec */ +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 */ +extern const device_t st506_xt_wd1002a_wx1_device; /* st506_xt_wd1002a_wx1 */ +extern const device_t st506_xt_wd1002a_27x_device; /* st506_xt_wd1002a_27x */ +extern const device_t st506_at_wd1003_device; /* st506_at_wd1003 */ +extern const device_t st506_xt_wd1004a_wx1_device; /* st506_xt_wd1004a_wx1 */ +extern const device_t st506_xt_wd1004_27x_device; /* st506_xt_wd1004_27x */ +extern const device_t st506_xt_wd1004a_27x_device; /* st506_xt_wd1004a_27x */ +extern const device_t st506_xt_victor_v86p_device; /* st506_xt_victor_v86p */ +extern const device_t st506_xt_toshiba_t1200_device; /* st506_xt_toshiba_t1200 */ extern const device_t esdi_at_wd1007vse1_device; /* esdi_at */ extern const device_t esdi_ps2_device; /* esdi_mca */ diff --git a/src/machine/m_xt_t1000.c b/src/machine/m_xt_t1000.c index c467b1c91..5e08115d4 100644 --- a/src/machine/m_xt_t1000.c +++ b/src/machine/m_xt_t1000.c @@ -961,7 +961,7 @@ machine_xt_t1200_init(const machine_t *model) device_add(&t1200_video_device); if (hdc_current <= 1) - device_add(&st506_xt_victor_v86p_device); + device_add(&st506_xt_toshiba_t1200_device); return ret; }