Use one more bit for AT NVR type

Use bottom 4 bits (instead of 3) for the NVR type. This will be necessary
in order to support more NVR types (the Epson Equity LT in particular).

No functional change.
This commit is contained in:
Lubomir Rintel
2022-09-15 15:57:26 +02:00
parent d963bf4237
commit 1eb7478ab9

View File

@@ -981,9 +981,9 @@ nvr_at_init(const device_t *info)
memset(local->lock, 0x00, nvr->size);
local->def = 0xff /*0x00*/;
local->flags = 0x00;
switch (info->local & 7) {
switch (info->local & 0x0f) {
case 0: /* standard AT, no century register */
if (info->local == 16) {
if (info->local == 32) {
local->flags |= FLAG_P6RP4_HACK;
nvr->irq = 8;
local->cent = RTC_CENTURY_AT;
@@ -996,13 +996,13 @@ nvr_at_init(const device_t *info)
case 1: /* standard AT */
case 5: /* AMI WinBIOS 1994 */
case 6: /* AMI BIOS 1995 */
if (info->local == 9)
if ((info->local & 0x0f) == 1)
local->flags |= FLAG_PIIX4;
else {
local->def = 0x00;
if ((info->local & 7) == 5)
if ((info->local & 0x0f) == 5)
local->flags |= FLAG_AMI_1994_HACK;
else if ((info->local & 7) == 6)
else if ((info->local & 0x0f) == 6)
local->flags |= FLAG_AMI_1995_HACK;
else
local->def = 0xff;
@@ -1015,7 +1015,7 @@ nvr_at_init(const device_t *info)
nvr->irq = 8;
local->cent = RTC_CENTURY_PS;
local->def = 0x00;
if (info->local & 8)
if (info->local & 0x10)
local->flags |= FLAG_NO_NMI;
break;
@@ -1023,15 +1023,15 @@ nvr_at_init(const device_t *info)
nvr->irq = 1;
local->cent = RTC_CENTURY_AT;
local->def = 0xff;
if (info->local & 8)
if (info->local & 0x10)
local->flags |= FLAG_NO_NMI;
break;
case 4: /* IBM AT */
if (info->local == 12) {
if (info->local & 0x10) {
local->def = 0x00;
local->flags |= FLAG_AMI_1992_HACK;
} else if (info->local == 20)
} else if (info->local == 36)
local->def = 0x00;
else
local->def = 0xff;
@@ -1069,7 +1069,7 @@ nvr_at_init(const device_t *info)
/* Set up the I/O handler for this device. */
io_sethandler(0x0070, 2,
nvr_read, NULL, NULL, nvr_write, NULL, NULL, nvr);
if (info->local & 8) {
if (info->local & 0x10) {
io_sethandler(0x0072, 2,
nvr_read, NULL, NULL, nvr_write, NULL, NULL, nvr);
}
@@ -1180,7 +1180,7 @@ const device_t piix4_nvr_device = {
.name = "Intel PIIX4 PC/AT NVRAM",
.internal_name = "piix4_nvr",
.flags = DEVICE_ISA | DEVICE_AT,
.local = 9,
.local = 0x10 | 1,
.init = nvr_at_init,
.close = nvr_at_close,
.reset = nvr_at_reset,
@@ -1220,7 +1220,7 @@ const device_t ami_1992_nvr_device = {
.name = "AMI Color 1992 PC/AT NVRAM",
.internal_name = "ami_1992_nvr",
.flags = DEVICE_ISA | DEVICE_AT,
.local = 12,
.local = 0x10 | 4,
.init = nvr_at_init,
.close = nvr_at_close,
.reset = nvr_at_reset,
@@ -1234,7 +1234,7 @@ const device_t ami_1994_nvr_device = {
.name = "AMI WinBIOS 1994 PC/AT NVRAM",
.internal_name = "ami_1994_nvr",
.flags = DEVICE_ISA | DEVICE_AT,
.local = 13,
.local = 0x10 | 5,
.init = nvr_at_init,
.close = nvr_at_close,
.reset = nvr_at_reset,
@@ -1248,7 +1248,7 @@ const device_t ami_1995_nvr_device = {
.name = "AMI WinBIOS 1995 PC/AT NVRAM",
.internal_name = "ami_1995_nvr",
.flags = DEVICE_ISA | DEVICE_AT,
.local = 14,
.local = 0x10 | 6,
.init = nvr_at_init,
.close = nvr_at_close,
.reset = nvr_at_reset,
@@ -1262,7 +1262,7 @@ const device_t via_nvr_device = {
.name = "VIA PC/AT NVRAM",
.internal_name = "via_nvr",
.flags = DEVICE_ISA | DEVICE_AT,
.local = 15,
.local = 0x10 | 7,
.init = nvr_at_init,
.close = nvr_at_close,
.reset = nvr_at_reset,
@@ -1276,7 +1276,7 @@ const device_t p6rp4_nvr_device = {
.name = "ASUS P/I-P6RP4 PC/AT NVRAM",
.internal_name = "p6rp4_nvr",
.flags = DEVICE_ISA | DEVICE_AT,
.local = 16,
.local = 32,
.init = nvr_at_init,
.close = nvr_at_close,
.reset = nvr_at_reset,
@@ -1290,7 +1290,7 @@ const device_t amstrad_megapc_nvr_device = {
.name = "Amstrad MegapC NVRAM",
.internal_name = "amstrad_megapc_nvr",
.flags = DEVICE_ISA | DEVICE_AT,
.local = 20,
.local = 36,
.init = nvr_at_init,
.close = nvr_at_close,
.reset = nvr_at_reset,