Vastly overhauled the UI, there's now a completely new Settings dialog as well as a status bar with disk activity icons and removable drive menus;

Thoroughly clean up the code to vastly reduce the number of compiler warnings and found and fixed several bugs in the process;
Applied all mainline PCem commits;
Added SCSI hard disk emulation;
Commented out all unfinished machines and graphics cards;
Added the AOpen AP53 and ASUS P/I-P55T2 machines as well as another Tyan 440FX machine, all three with AMI WinBIOS (patch from TheCollector1995);
Added the Diamond Stealth 3D 3000 (S3 ViRGE/VX) graphics card (patch from TheCollector1995);
Added the PS/2 XT IDE (AccuLogic) HDD Controller (patch from TheCollector1995);
Added Microsoft/Logitech Bus Mouse emulation (patch from waltje);
Overhauled the makefiles (patch from waltje);
Added the Adaptec AHA-1542CF SCSI controller (patch from waltje);
Added preliminary (but still unfinished) Adaptec AHA-154x SCSI controller BIOS support (patch from waltje);
Added an ISABugger debugging device (patch from waltje);
Added sanity checks to the Direct3D code.
This commit is contained in:
OBattler
2017-05-05 01:49:42 +02:00
parent d07d53962c
commit f6ef1f833c
346 changed files with 24292 additions and 18058 deletions

View File

@@ -203,7 +203,6 @@ static void w83877f_remap()
winbond_port = (HEFRAS ? 0x3f0 : 0x250);
winbond_key_times = HEFRAS + 1;
winbond_key = (HEFRAS ? 0x86 : 0x88) | HEFERE;
// pclog("W83877F mapped to %04X, with key %02X required %i times\n", winbond_port, winbond_key, winbond_key_times);
}
static uint8_t is_in_array(uint16_t *port_array, uint8_t max, uint16_t port)
@@ -267,7 +266,6 @@ static uint16_t make_port(uint8_t reg)
break;
}
// pclog("Made port %04X (reg %02X)\n", p, reg);
return p;
}
@@ -276,21 +274,16 @@ void w83877f_write(uint16_t port, uint8_t val, void *priv)
uint8_t index = (port & 1) ? 0 : 1;
uint8_t valxor = 0;
uint8_t max = 0x2A;
int temp;
if (index)
{
// pclog("w83877f_write : port=%04x = %02X locked=%i\n", port, val, w83877f_locked);
if ((val == winbond_key) && !w83877f_locked)
{
if (winbond_key_times == 2)
{
if (tries)
{
// pclog("W83877F Locked (2 tries)\n");
w83877f_locked = 1;
// fdc_3f1_enable(0);
tries = 0;
}
else
@@ -300,23 +293,18 @@ void w83877f_write(uint16_t port, uint8_t val, void *priv)
}
else
{
// pclog("W83877F Locked (1 try)\n");
w83877f_locked = 1;
// fdc_3f1_enable(0);
tries = 0;
}
}
else
{
// pclog("w83877f_write : port=%04x reg %02X = %02X locked=%i\n", port, w83877f_curreg, val, w83877f_locked);
if (w83877f_locked)
{
if (val < max) w83877f_curreg = val;
if (val == 0xaa)
{
w83877f_locked = 0;
// fdc_3f1_enable(1);
}
}
else
@@ -328,8 +316,6 @@ void w83877f_write(uint16_t port, uint8_t val, void *priv)
}
else
{
// pclog("w83877f_write : port=%04x reg %02X = %02X locked=%i\n", port, w83877f_curreg, val, w83877f_locked);
if (w83877f_locked)
{
if (w83877f_rw_locked) return;
@@ -379,20 +365,17 @@ process_value:
}
break;
case 7:
// pclog("W83877F Write [Reg. %02X]: %02X\n", w83877f_curreg, val);
if (valxor & 3) fdc_update_rwc(0, FDDA_TYPE);
if (valxor & 0xC) fdc_update_rwc(1, FDDB_TYPE);
if (valxor & 0x30) fdc_update_rwc(2, FDDC_TYPE);
if (valxor & 0xC0) fdc_update_rwc(3, FDDD_TYPE);
break;
case 8:
// pclog("W83877F Write [Reg. %02X]: %02X\n", w83877f_curreg, val);
if (valxor & 3) fdc_update_boot_drive(FD_BOOT);
if (valxor & 0x10) swwp = SWWP ? 1 : 0;
if (valxor & 0x20) disable_write = DISFDDWR ? 1 : 0;
break;
case 9:
// pclog("W83877F Write [Reg. %02X]: %02X\n", w83877f_curreg, val);
if (valxor & 0x20)
{
fdc_update_enh_mode(EN3MODE ? 1 : 0);
@@ -403,7 +386,6 @@ process_value:
}
break;
case 0xB:
// pclog("W83877F Write [Reg. %02X]: %02X\n", w83877f_curreg, val);
if (valxor & 1) fdc_update_drv2en(DRV2EN_NEG ? 0 : 1);
if (valxor & 2) fdc_update_densel_polarity(INVERTZ ? 1 : 0);
break;
@@ -459,13 +441,11 @@ uint8_t w83877f_read(uint16_t port, void *priv)
if (!w83877f_locked)
{
// pclog("w83877f_read : port=%04x = FF locked=%i\n", port, w83877f_locked);
return 0xff;
}
if (index)
{
// pclog("w83877f_read : port=%04x = %02X locked=%i\n", port, w83877f_curreg, w83877f_locked);
return w83877f_curreg;
}
else
@@ -473,10 +453,8 @@ uint8_t w83877f_read(uint16_t port, void *priv)
if ((w83877f_curreg < 0x18) && w83877f_rw_locked) return 0xff;
if (w83877f_curreg == 7)
{
// pclog("w83877f_read : port=%04x reg %02X = %02X locked=%i\n", port, w83877f_curreg, (fdc_get_rwc(0) | (fdc_get_rwc(1) << 2)), w83877f_locked);
return (fdc_get_rwc(0) | (fdc_get_rwc(1) << 2));
}
// pclog("w83877f_read : port=%04x reg %02X = %02X locked=%i\n", port, w83877f_curreg, w83877f_regs[w83877f_curreg], w83877f_locked);
return w83877f_regs[w83877f_curreg];
}
}