From 5bebe58857f045454fc2b983468564e19029cd4c Mon Sep 17 00:00:00 2001 From: Alexander Babikov Date: Sat, 1 May 2021 10:23:08 +0500 Subject: [PATCH] Add a version of XTIDE Universal BIOS for 386 --- src/disk/hdc.c | 1 + src/disk/hdc_xtide.c | 26 ++++++++++++++++++++++++-- src/include/86box/hdc.h | 1 + 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/src/disk/hdc.c b/src/disk/hdc.c index 816e5cef2..9c0a2dbbb 100644 --- a/src/disk/hdc.c +++ b/src/disk/hdc.c @@ -110,6 +110,7 @@ static const struct { { "ide_isa", &ide_isa_device }, { "ide_isa_2ch", &ide_isa_2ch_device }, { "xtide_at", &xtide_at_device }, + { "xtide_at_386", &xtide_at_386_device }, { "xtide_at_ps2", &xtide_at_ps2_device }, { "xta_wdxt150", &xta_wdxt150_device }, { "xtide_acculogic", &xtide_acculogic_device }, diff --git a/src/disk/hdc_xtide.c b/src/disk/hdc_xtide.c index 54da8e007..c5cb0c153 100644 --- a/src/disk/hdc_xtide.c +++ b/src/disk/hdc_xtide.c @@ -49,6 +49,7 @@ #define ROM_PATH_AT "roms/hdd/xtide/ide_at.bin" #define ROM_PATH_PS2 "roms/hdd/xtide/SIDE1V12.BIN" #define ROM_PATH_PS2AT "roms/hdd/xtide/ide_at_1_1_5.bin" +#define ROM_PATH_AT_386 "roms/hdd/xtide/ide_386.bin" typedef struct { @@ -161,8 +162,13 @@ xtide_at_init(const device_t *info) memset(xtide, 0x00, sizeof(xtide_t)); - rom_init(&xtide->bios_rom, ROM_PATH_AT, - 0xc8000, 0x2000, 0x1fff, 0, MEM_MAPPING_EXTERNAL); + if (info->local == 1) { + rom_init(&xtide->bios_rom, ROM_PATH_AT_386, + 0xc8000, 0x2000, 0x1fff, 0, MEM_MAPPING_EXTERNAL); + } else { + rom_init(&xtide->bios_rom, ROM_PATH_AT, + 0xc8000, 0x2000, 0x1fff, 0, MEM_MAPPING_EXTERNAL); + } device_add(&ide_isa_2ch_device); @@ -177,6 +183,13 @@ xtide_at_available(void) } +static int +xtide_at_386_available(void) +{ + return(rom_present(ROM_PATH_AT_386)); +} + + static void * xtide_acculogic_init(const device_t *info) { @@ -265,6 +278,15 @@ const device_t xtide_at_device = { NULL }; +const device_t xtide_at_386_device = { + "PC/AT XTIDE (386)", + DEVICE_ISA | DEVICE_AT, + 1, + xtide_at_init, xtide_at_close, NULL, + { xtide_at_386_available }, NULL, NULL, + NULL +}; + const device_t xtide_acculogic_device = { "Acculogic XT IDE", DEVICE_ISA, diff --git a/src/include/86box/hdc.h b/src/include/86box/hdc.h index 25dcfe0d1..e840de3cf 100644 --- a/src/include/86box/hdc.h +++ b/src/include/86box/hdc.h @@ -67,6 +67,7 @@ extern const device_t xta_hd20_device; /* EuroPC internal */ extern const device_t xtide_device; /* xtide_xt */ extern const device_t xtide_at_device; /* xtide_at */ +extern const device_t xtide_at_386_device; /* xtide_at_386 */ extern const device_t xtide_acculogic_device; /* xtide_ps2 */ extern const device_t xtide_at_ps2_device; /* xtide_at_ps2 */