From: Toni Wilen Date: Sat, 24 Apr 2021 16:58:30 +0000 (+0300) Subject: Dev IDE controller X-Git-Tag: 4900~147 X-Git-Url: https://git.unchartedbackwaters.co.uk/w/?a=commitdiff_plain;h=d296407d783231eca0a940bf9691203a9e6623cb;p=francis%2Fwinuae.git Dev IDE controller --- diff --git a/expansion.cpp b/expansion.cpp index d759f2b5..6ca21658 100644 --- a/expansion.cpp +++ b/expansion.cpp @@ -5073,6 +5073,25 @@ static const struct expansionboardsettings alf3_settings[] = { NULL } }; +static const struct expansionboardsettings dev_hd_settings[] = { + { + _T("Base address"), + _T("base") + }, + { + _T("Register spacing"), + _T("spacing") + }, + { + _T("Data port address"), + _T("dataport") + }, + { + _T("Alternate register base address"), + _T("altbase") + } +}; + static const struct expansionboardsettings cdtvsram_settings[] = { { _T("SRAM size\0") _T("64k\0") _T("128k\0") _T("256k\0"), @@ -5794,7 +5813,10 @@ const struct expansionromtype expansionroms[] = { _T("dev_ide"), _T("DEV IDE"), NULL, NULL, dev_hd_init, NULL, dev_hd_add_ide_unit, ROMTYPE_DEVHD | ROMTYPE_NOT, 0, 0, BOARD_NONAUTOCONFIG_BEFORE, true, NULL, 0, - false, EXPANSIONTYPE_CUSTOM | EXPANSIONTYPE_IDE | EXPANSIONTYPE_SCSI + false, EXPANSIONTYPE_CUSTOM | EXPANSIONTYPE_IDE | EXPANSIONTYPE_SCSI, + 0, 0, 0, false, NULL, + false, 0, dev_hd_settings + }, #endif diff --git a/idecontrollers.cpp b/idecontrollers.cpp index 381a2cb5..cf46733d 100644 --- a/idecontrollers.cpp +++ b/idecontrollers.cpp @@ -606,11 +606,13 @@ static int get_dev_hd_reg(uaecptr addr, struct ide_board* board) if (addr >= dev_hd_io_base && addr < dev_hd_io_base + dev_hd_io_total) { reg = (addr - dev_hd_io_base) / dev_hd_io_size; reg &= 7; - if (addr & dev_hd_io_secondary) { - reg |= IDE_SECONDARY; + if (reg == 0) { + write_log("invalid %08x\n", addr); } - } else if (addr >= dev_hd_data_base && addr < dev_hd_data_base + 4) { + } else if (addr >= dev_hd_data_base && addr < dev_hd_data_base + 0x100) { reg = 0; + } else { + write_log("out of range %08x\n", addr); } return reg; } @@ -2957,7 +2959,7 @@ bool dev_hd_init(struct autoconfig_info* aci) dev_hd_io_size = 4; dev_hd_data_base = 0x4800; dev_hd_io_secondary = 0x1000; - dev_hd_io_total = 0x2000; + dev_hd_io_total = 8 * 4; if (!aci->doinit) { return true; }