W83877: Initialize the PnP registers to sane values, fixes internal devices on the Acrosser AR-B1374.

This commit is contained in:
OBattler
2025-08-25 11:49:42 +02:00
parent e549a85755
commit 973621dde3

View File

@@ -85,6 +85,7 @@ w83877_remap(w83877_t *dev)
io_removehandler(FDC_PRIMARY_ADDR, 0x0002,
w83877_read, NULL, NULL, w83877_write, NULL, NULL, dev);
dev->base_address = (hefras ? FDC_PRIMARY_ADDR : 0x250);
pclog("Base address = %04X\n", dev->base_address);
io_sethandler(dev->base_address, hefras ? 0x0002 : 0x0003,
w83877_read, NULL, NULL, w83877_write, NULL, NULL, dev);
dev->key_times = hefras + 1;
@@ -462,14 +463,25 @@ w83877_reset(w83877_t *dev)
{
fdc_reset(dev->fdc);
memset(dev->regs, 0, 0x2A);
memset(dev->regs, 0, 256);
dev->regs[0x03] = 0x30;
dev->regs[0x07] = 0xF5;
dev->regs[0x07] = 0xf5;
dev->regs[0x09] = (dev->reg_init >> 8) & 0xff;
dev->regs[0x0a] = 0x1F;
dev->regs[0x0a] = 0x1f;
dev->regs[0x0c] = 0x28;
dev->regs[0x0d] = 0xA3;
dev->regs[0x16] = dev->reg_init & 0xff;
dev->regs[0x0d] = 0xa3;
dev->regs[0x16] = (dev->reg_init & 0xff) | 0x02;
dev->regs[0x1e] = 0x81;
dev->regs[0x20] = 0xfc;
dev->regs[0x21] = 0x7c;
dev->regs[0x22] = 0xfd;
dev->regs[0x23] = 0xde;
dev->regs[0x24] = 0xfe;
dev->regs[0x25] = 0xbe;
dev->regs[0x26] = 0x23;
dev->regs[0x27] = 0x65;
dev->regs[0x28] = 0x43;
dev->regs[0x29] = 0x62;
w83877_fdc_handler(dev);
fdc_clear_flags(dev->fdc, FDC_FLAG_PS2 | FDC_FLAG_PS2_MCA);