Fixed bug #24, XT286 cannot add hard disk.

This commit is contained in:
waltje
2018-04-10 17:18:20 -04:00
parent 874a503662
commit d3743d0100
2 changed files with 27 additions and 19 deletions

View File

@@ -11,7 +11,7 @@
* NOTES: OpenAT wip for 286-class machine with open BIOS.
* PS2_M80-486 wip, pending receipt of TRM's for machine.
*
* Version: @(#)machine_table.c 1.0.16 2018/04/03
* Version: @(#)machine_table.c 1.0.17 2018/04/10
*
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
* Miran Grca, <mgrca8@gmail.com>
@@ -95,7 +95,7 @@ const machine_t machines[] = {
{ "[286 ISA] IBM AT", ROM_IBMAT, "ibm_at", L"ibm/at", {{"", cpus_ibmat}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_AT, 256,15872, 128, 64, machine_at_ibm_init, NULL, NULL },
{ "[286 ISA] IBM PS/1 model 2011", ROM_IBMPS1_2011, "ibm_ps1_2011", L"ibm/ps1_2011", {{"", cpus_ps1_m2011}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 1, MACHINE_ISA | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC_PS2, 512,16384, 512, 128, machine_ps1_m2011_init, NULL, NULL },
{ "[286 ISA] IBM PS/2 model 30-286", ROM_IBMPS2_M30_286, "ibm_ps2_m30_286", L"ibm/ps2_m30_286", {{"", cpus_ps2_m30_286}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 1, MACHINE_ISA | MACHINE_AT | MACHINE_PS2 | MACHINE_HDC_PS2, 1, 16, 1, 128, machine_ps2_m30_286_init, NULL, NULL },
{ "[286 ISA] IBM XT Model 286", ROM_IBMXT286, "ibm_xt286", L"ibm/xt286", {{"", cpus_ibmxt286}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_AT, 256,15872, 128, 64, machine_at_ibm_init, NULL, NULL },
{ "[286 ISA] IBM XT Model 286", ROM_IBMXT286, "ibm_xt286", L"ibm/xt286", {{"", cpus_ibmxt286}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_AT, 256,15872, 128, 128, machine_at_ibm_init, NULL, NULL },
{ "[286 ISA] Samsung SPC-4200P", ROM_SPC4200P, "samsung_spc4200p", L"samsung/spc4200p", {{"", cpus_286}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_AT | MACHINE_PS2, 512, 2048, 128, 128, machine_at_scat_init, NULL, NULL },
{ "[286 ISA] Samsung SPC-4216P", ROM_SPC4216P, "samsung_spc4216p", L"samsung/spc4216p", {{"", cpus_286}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MACHINE_ISA | MACHINE_AT | MACHINE_PS2, 1, 5, 1, 128, machine_at_scat_init, NULL, NULL },
{ "[286 ISA] Toshiba 3100e", ROM_T3100E, "toshiba_t3100e", L"toshiba/t3100e", {{"", cpus_286}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 1, MACHINE_ISA | MACHINE_AT | MACHINE_HDC, 1024, 5120, 256, 64, machine_at_t3100e_init, NULL, NULL },

View File

@@ -8,7 +8,7 @@
*
* Implementation of the Status Bar module.
*
* Version: @(#)win_stbar.c 1.0.7 2018/04/08
* Version: @(#)win_stbar.c 1.0.8 2018/04/10
*
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
* Miran Grca, <mgrca8@gmail.com>
@@ -617,6 +617,7 @@ ui_sb_update_panes(void)
int c_mfm, c_esdi, c_scsi;
int c_xtide, c_ide_pio, c_ide_dma;
int do_net;
const char *hdc;
sb_ready = 0;
@@ -659,11 +660,15 @@ ui_sb_update_panes(void)
if (fdd_get_type(i) != 0)
sb_parts++;
}
/* Get name of current HDC. */
hdc = hdc_get_internal_name(hdc_type);
for (i=0; i<CDROM_NUM; i++) {
/* Could be Internal or External IDE.. */
if (((cdrom_drives[i].bus_type==CDROM_BUS_ATAPI_PIO_ONLY) &&
(cdrom_drives[i].bus_type==CDROM_BUS_ATAPI_PIO_AND_DMA)) &&
!(hdint || (hdc_type == hdc_get_from_internal_name("ide")))) {
!(hdint || !strncmp(hdc, "ide", 3))) {
continue;
}
@@ -680,7 +685,7 @@ ui_sb_update_panes(void)
/* Could be Internal or External IDE.. */
if (((zip_drives[i].bus_type==ZIP_BUS_ATAPI_PIO_ONLY) &&
(zip_drives[i].bus_type==ZIP_BUS_ATAPI_PIO_AND_DMA)) &&
!(hdint || (hdc_type == hdc_get_from_internal_name("ide")))) {
!(hdint || !strncmp(hdc, "ide", 3))) {
continue;
}
@@ -698,22 +703,22 @@ ui_sb_update_panes(void)
sb_parts++;
}
}
if (c_mfm && (hdint || (hdc_type == hdc_get_from_internal_name("mfm")))) {
if (c_mfm && (hdint || !strncmp(hdc, "mfm", 3))) {
/* MFM drives, and MFM or Internal controller. */
sb_parts++;
}
if (c_esdi && (hdint || (hdc_type == hdc_get_from_internal_name("esdi")))) {
if (c_esdi && (hdint || !strncmp(hdc, "esdi", 4))) {
/* ESDI drives, and ESDI or Internal controller. */
sb_parts++;
}
if (c_xtide && (hdc_type == hdc_get_from_internal_name("ide"))) {
if (c_xtide && !strncmp(hdc, "ide", 3)) {
sb_parts++;
}
if (c_ide_pio && (hdint || (hdc_type == hdc_get_from_internal_name("ide")))) {
if (c_ide_pio && (hdint || !strncmp(hdc, "ide", 3))) {
/* IDE_PIO drives, and IDE or Internal controller. */
sb_parts++;
}
if (c_ide_dma && (hdint || (hdc_type == hdc_get_from_internal_name("ide")))) {
if (c_ide_dma && (hdint || !strncmp(hdc, "ide", 3))) {
/* IDE_DMA drives, and IDE or Internal controller. */
sb_parts++;
}
@@ -747,15 +752,16 @@ ui_sb_update_panes(void)
sb_parts++;
}
}
for (i=0; i<CDROM_NUM; i++) {
/* Could be Internal or External IDE.. */
if ((cdrom_drives[i].bus_type==CDROM_BUS_ATAPI_PIO_ONLY) &&
!(hdint || (hdc_type == hdc_get_from_internal_name("ide")))) {
!(hdint || !strncmp(hdc, "ide", 3))) {
continue;
}
/* Could be Internal or External IDE.. */
if ((cdrom_drives[i].bus_type==CDROM_BUS_ATAPI_PIO_AND_DMA) &&
!(hdint || (hdc_type == hdc_get_from_internal_name("ide")))) {
!(hdint || !strncmp(hdc, "ide", 3))) {
continue;
}
if ((cdrom_drives[i].bus_type == CDROM_BUS_SCSI) && (scsi_card_current == 0)) {
@@ -768,15 +774,16 @@ ui_sb_update_panes(void)
sb_parts++;
}
}
for (i=0; i<ZIP_NUM; i++) {
/* Could be Internal or External IDE.. */
if ((zip_drives[i].bus_type==ZIP_BUS_ATAPI_PIO_ONLY) &&
!(hdint || (hdc_type == hdc_get_from_internal_name("ide")))) {
!(hdint || !strncmp(hdc, "ide", 3))) {
continue;
}
/* Could be Internal or External IDE.. */
if ((zip_drives[i].bus_type==ZIP_BUS_ATAPI_PIO_AND_DMA) &&
!(hdint || (hdc_type == hdc_get_from_internal_name("ide")))) {
!(hdint || !strncmp(hdc, "ide", 3))) {
continue;
}
if ((zip_drives[i].bus_type == ZIP_BUS_SCSI) && (scsi_card_current == 0)) {
@@ -789,6 +796,7 @@ ui_sb_update_panes(void)
sb_parts++;
}
}
for (i=0; i<HDD_NUM; i++) {
if ((hdd[i].bus==HDD_BUS_SCSI_REMOVABLE) && (scsi_card_current != 0)) {
edge += SB_ICON_WIDTH;
@@ -797,31 +805,31 @@ ui_sb_update_panes(void)
sb_parts++;
}
}
if (c_mfm && (hdint || (hdc_type == hdc_get_from_internal_name("mfm")))) {
if (c_mfm && (hdint || !strncmp(hdc, "mfm", 3))) {
edge += SB_ICON_WIDTH;
iStatusWidths[sb_parts] = edge;
sb_part_meanings[sb_parts] = SB_HDD | HDD_BUS_MFM;
sb_parts++;
}
if (c_esdi && (hdint || (hdc_type == hdc_get_from_internal_name("esdi")))) {
if (c_esdi && (hdint || !strncmp(hdc, "esdi", 4))) {
edge += SB_ICON_WIDTH;
iStatusWidths[sb_parts] = edge;
sb_part_meanings[sb_parts] = SB_HDD | HDD_BUS_ESDI;
sb_parts++;
}
if (c_xtide && (hdc_type == hdc_get_from_internal_name("xtide"))) {
if (c_xtide && !strncmp(hdc, "xtide", 5)) {
edge += SB_ICON_WIDTH;
iStatusWidths[sb_parts] = edge;
sb_part_meanings[sb_parts] = SB_HDD | HDD_BUS_XTIDE;
sb_parts++;
}
if (c_ide_pio && (hdint || (hdc_type == hdc_get_from_internal_name("ide")))) {
if (c_ide_pio && (hdint || !strncmp(hdc, "ide", 3))) {
edge += SB_ICON_WIDTH;
iStatusWidths[sb_parts] = edge;
sb_part_meanings[sb_parts] = SB_HDD | HDD_BUS_IDE_PIO_ONLY;
sb_parts++;
}
if (c_ide_dma && (hdint || (hdc_type == hdc_get_from_internal_name("ide")))) {
if (c_ide_dma && (hdint || !strncmp(hdc, "ide", 3))) {
edge += SB_ICON_WIDTH;
iStatusWidths[sb_parts] = edge;
sb_part_meanings[sb_parts] = SB_HDD | HDD_BUS_IDE_PIO_AND_DMA;