Fixed the operation of the WIN_DRIVE_DIAGNOSTICS command for ATAPI CD-ROM (it's almost never used but eh);

Properly fixed the CPU manufacturer/type selection bug after changing machine;
The Samspung SPC-4200 now has a PS/2 port.
This commit is contained in:
OBattler
2017-06-20 06:23:05 +02:00
parent 87725e8cfb
commit 7d67f85a1d
3 changed files with 39 additions and 28 deletions

View File

@@ -437,9 +437,9 @@ static void win_settings_machine_recalc_cpu_m(HWND hdlg)
c++; c++;
} }
EnableWindow(h, TRUE); EnableWindow(h, TRUE);
if (temp_cpu > c) if (temp_cpu >= c)
{ {
temp_cpu = c; temp_cpu = (c - 1);
} }
SendMessage(h, CB_SETCURSEL, temp_cpu, 0); SendMessage(h, CB_SETCURSEL, temp_cpu, 0);
@@ -482,9 +482,9 @@ static void win_settings_machine_recalc_model(HWND hdlg)
c++; c++;
} }
EnableWindow(h, TRUE); EnableWindow(h, TRUE);
if (temp_cpu_m > c) if (temp_cpu_m >= c)
{ {
temp_cpu_m = c; temp_cpu_m = (c - 1);
} }
SendMessage(h, CB_SETCURSEL, temp_cpu_m, 0); SendMessage(h, CB_SETCURSEL, temp_cpu_m, 0);
if (c == 1) if (c == 1)

View File

@@ -1058,10 +1058,21 @@ void writeide(int ide_board, uint16_t addr, uint8_t val)
case WIN_CHECKPOWERMODE1: case WIN_CHECKPOWERMODE1:
case WIN_SLEEP1: case WIN_SLEEP1:
if (val == WIN_DRIVE_DIAGNOSTICS) if (val == WIN_DRIVE_DIAGNOSTICS)
{
if (ide_drive_is_cdrom(ide))
{
cdrom[atapi_cdrom_drives[ide->channel]].status = BUSY_STAT;
}
else
{ {
ide->atastat = BUSY_STAT; ide->atastat = BUSY_STAT;
}
timer_process(); timer_process();
callbackide(ide_board); callbackide(ide_board);
if (ide_drive_is_cdrom(ide))
{
cdrom[atapi_cdrom_drives[ide->channel]].callback = 200 * IDE_TIME;
}
idecallback[ide_board] = 200 * IDE_TIME; idecallback[ide_board] = 200 * IDE_TIME;
timer_update_outstanding(); timer_update_outstanding();
} }
@@ -1078,9 +1089,9 @@ void writeide(int ide_board, uint16_t addr, uint8_t val)
timer_process(); timer_process();
if (ide_drive_is_cdrom(ide)) if (ide_drive_is_cdrom(ide))
{ {
cdrom[atapi_cdrom_drives[ide->channel]].callback = ((val == WIN_DRIVE_DIAGNOSTICS) ? 200 : 30) * IDE_TIME; cdrom[atapi_cdrom_drives[ide->channel]].callback = 30 * IDE_TIME;
} }
idecallback[ide_board] = ((val == WIN_DRIVE_DIAGNOSTICS) ? 200 : 30) * IDE_TIME; idecallback[ide_board] = 30 * IDE_TIME;
timer_update_outstanding(); timer_update_outstanding();
} }
return; return;

View File

@@ -168,7 +168,7 @@ MODEL models[] =
{"AMI 286 clone", ROM_AMI286, "ami286", {{"", cpus_286}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MODEL_AT | MODEL_HAS_IDE, 512,16384, 128, 127, at_neat_init, NULL}, {"AMI 286 clone", ROM_AMI286, "ami286", {{"", cpus_286}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MODEL_AT | MODEL_HAS_IDE, 512,16384, 128, 127, at_neat_init, NULL},
{"Award 286 clone", ROM_AWARD286, "award286", {{"", cpus_286}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MODEL_AT | MODEL_HAS_IDE, 512,16384, 128, 127, at_scat_init, NULL}, {"Award 286 clone", ROM_AWARD286, "award286", {{"", cpus_286}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MODEL_AT | MODEL_HAS_IDE, 512,16384, 128, 127, at_scat_init, NULL},
{"Hyundai Super-286TR", ROM_SUPER286TR, "super286tr", {{"", cpus_286}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MODEL_AT | MODEL_HAS_IDE, 512,16384, 128, 127, at_scat_init, NULL}, {"Hyundai Super-286TR", ROM_SUPER286TR, "super286tr", {{"", cpus_286}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MODEL_AT | MODEL_HAS_IDE, 512,16384, 128, 127, at_scat_init, NULL},
{"Samsung SPC-4200P", ROM_SPC4200P, "spc4200p", {{"", cpus_286}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MODEL_AT | MODEL_HAS_IDE, 512,16384, 128, 127, at_scat_init, NULL}, {"Samsung SPC-4200P", ROM_SPC4200P, "spc4200p", {{"", cpus_286}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MODEL_AT | MODEL_PS2 | MODEL_HAS_IDE, 512,16384, 128, 127, at_scat_init, NULL},
{"IBM PS/1 model 2011", ROM_IBMPS1_2011, "ibmps1es", {{"", cpus_ps1_m2011}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 1, MODEL_AT | MODEL_PS2 | MODEL_PS2_HDD, 512,16384, 512, 127, ps1_m2011_init, NULL}, {"IBM PS/1 model 2011", ROM_IBMPS1_2011, "ibmps1es", {{"", cpus_ps1_m2011}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 1, MODEL_AT | MODEL_PS2 | MODEL_PS2_HDD, 512,16384, 512, 127, ps1_m2011_init, NULL},
{"IBM PS/2 Model 30-286", ROM_IBMPS2_M30_286, "ibmps2_m30_286", {{"", cpus_ps2_m30_286}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MODEL_AT | MODEL_PS2 | MODEL_PS2_HDD, 1, 16, 1, 127, ps2_m30_286_init, NULL}, {"IBM PS/2 Model 30-286", ROM_IBMPS2_M30_286, "ibmps2_m30_286", {{"", cpus_ps2_m30_286}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MODEL_AT | MODEL_PS2 | MODEL_PS2_HDD, 1, 16, 1, 127, ps2_m30_286_init, NULL},
{"IBM PS/2 Model 50", ROM_IBMPS2_M50, "ibmps2_m50", {{"", cpus_ps2_m30_286}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MODEL_AT | MODEL_PS2 | MODEL_PS2_HDD | MODEL_MCA, 1, 16, 1, 63, ps2_model_50_init, NULL}, {"IBM PS/2 Model 50", ROM_IBMPS2_M50, "ibmps2_m50", {{"", cpus_ps2_m30_286}, {"", NULL}, {"", NULL}, {"", NULL}, {"", NULL}}, 0, MODEL_AT | MODEL_PS2 | MODEL_PS2_HDD | MODEL_MCA, 1, 16, 1, 63, ps2_model_50_init, NULL},