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:
@@ -437,9 +437,9 @@ static void win_settings_machine_recalc_cpu_m(HWND hdlg)
|
||||
c++;
|
||||
}
|
||||
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);
|
||||
|
||||
@@ -482,9 +482,9 @@ static void win_settings_machine_recalc_model(HWND hdlg)
|
||||
c++;
|
||||
}
|
||||
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);
|
||||
if (c == 1)
|
||||
|
||||
17
src/ide.c
17
src/ide.c
@@ -1058,11 +1058,22 @@ void writeide(int ide_board, uint16_t addr, uint8_t val)
|
||||
case WIN_CHECKPOWERMODE1:
|
||||
case WIN_SLEEP1:
|
||||
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;
|
||||
}
|
||||
timer_process();
|
||||
callbackide(ide_board);
|
||||
idecallback[ide_board]=200*IDE_TIME;
|
||||
if (ide_drive_is_cdrom(ide))
|
||||
{
|
||||
cdrom[atapi_cdrom_drives[ide->channel]].callback = 200 * IDE_TIME;
|
||||
}
|
||||
idecallback[ide_board] = 200 * IDE_TIME;
|
||||
timer_update_outstanding();
|
||||
}
|
||||
else
|
||||
@@ -1078,9 +1089,9 @@ void writeide(int ide_board, uint16_t addr, uint8_t val)
|
||||
timer_process();
|
||||
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();
|
||||
}
|
||||
return;
|
||||
|
||||
@@ -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},
|
||||
{"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},
|
||||
{"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/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},
|
||||
|
||||
Reference in New Issue
Block a user