diff --git a/src/include/86box/nvr.h b/src/include/86box/nvr.h index 9485c7dcb..4d187b785 100644 --- a/src/include/86box/nvr.h +++ b/src/include/86box/nvr.h @@ -95,6 +95,7 @@ extern const device_t ami_1992_nvr_device; extern const device_t ami_1994_nvr_device; extern const device_t ami_1995_nvr_device; extern const device_t via_nvr_device; +extern const device_t piix4_ami_1995_nvr_device; extern const device_t p6rp4_nvr_device; extern const device_t martin_nvr_device; extern const device_t elt_nvr_device; diff --git a/src/nvr_at.c b/src/nvr_at.c index 38a97560b..c25c482d8 100644 --- a/src/nvr_at.c +++ b/src/nvr_at.c @@ -1173,8 +1173,15 @@ nvr_at_init(const device_t *info) local->cent = RTC_CENTURY_VIA; break; case 8: /* Epson Equity LT */ - nvr->irq = -1; - local->cent = RTC_CENTURY_ELT; + if ((info->local & 0x1f) == 0x18) { + local->flags |= (FLAG_PIIX4 | FLAG_AMI_1995_HACK); + local->def = 0x00; + nvr->irq = 8; + local->cent = RTC_CENTURY_AT; + } else { + nvr->irq = -1; + local->cent = RTC_CENTURY_ELT; + } break; default: @@ -1445,6 +1452,20 @@ const device_t via_nvr_device = { .config = NULL }; +const device_t piix4_ami_1995_nvr_device = { + .name = "Intel PIIX4 AMI WinBIOS 1995 PC/AT NVRAM", + .internal_name = "piix4_ami_1995_nvr", + .flags = DEVICE_ISA16, + .local = 0x10 | 8, + .init = nvr_at_init, + .close = nvr_at_close, + .reset = nvr_at_reset, + .available = NULL, + .speed_changed = nvr_at_speed_changed, + .force_redraw = NULL, + .config = NULL +}; + const device_t p6rp4_nvr_device = { .name = "ASUS P/I-P6RP4 PC/AT NVRAM", .internal_name = "p6rp4_nvr",