From 105fe47bf3f5e3fb0ed8e693fabcbec8bbbe4194 Mon Sep 17 00:00:00 2001 From: ts-korhonen Date: Sat, 12 Mar 2022 15:38:44 +0200 Subject: [PATCH 1/6] qt: GL core; use safe version of strcpy --- src/qt/qt_opengloptions.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/qt/qt_opengloptions.cpp b/src/qt/qt_opengloptions.cpp index 04ca16234..c18eaaedb 100644 --- a/src/qt/qt_opengloptions.cpp +++ b/src/qt/qt_opengloptions.cpp @@ -14,6 +14,7 @@ * Copyright 2022 Teemu Korhonen */ +#include #include #include #include @@ -89,7 +90,7 @@ OpenGLOptions::save() const auto path = m_shaders.first().path().toLocal8Bit(); if (!path.isEmpty()) - strcpy(video_shader, path.constData()); + qstrncpy(video_shader, path.constData(), sizeof(video_shader)); else video_shader[0] = '\0'; } From b1eeef7527d262cee2614a3d77a756cdfff90d1f Mon Sep 17 00:00:00 2001 From: ts-korhonen Date: Sat, 12 Mar 2022 15:39:39 +0200 Subject: [PATCH 2/6] qt: Remove pragma parameters from shaders. Fixes Intel HD4000 crashing on windows when selecting shaders, probably also fixes Intel HD4400 shader errors. --- src/qt/qt_opengloptions.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/qt/qt_opengloptions.cpp b/src/qt/qt_opengloptions.cpp index c18eaaedb..f90ba37c0 100644 --- a/src/qt/qt_opengloptions.cpp +++ b/src/qt/qt_opengloptions.cpp @@ -145,6 +145,9 @@ OpenGLOptions::addShader(const QString &path) shader_file.close(); + /* Remove parameter lines */ + shader_text.remove(QRegularExpression("^\\s*#pragma parameter.*?\\n", QRegularExpression::MultilineOption)); + QRegularExpression version("^\\s*(#version\\s+\\w+)", QRegularExpression::MultilineOption); auto match = version.match(shader_text); From c8574c55ccfc5e310884134e2be9e988ccaac137 Mon Sep 17 00:00:00 2001 From: Jasmine Iwanek Date: Sat, 12 Mar 2022 18:47:12 -0500 Subject: [PATCH 3/6] Thrustmaster ACM --- src/game/gameport.c | 311 +++++++++++++++++++++++++++++------ src/include/86box/gameport.h | 7 + 2 files changed, 265 insertions(+), 53 deletions(-) diff --git a/src/game/gameport.c b/src/game/gameport.c index d224e7baa..d33b40959 100644 --- a/src/game/gameport.c +++ b/src/game/gameport.c @@ -80,7 +80,7 @@ static const joystick_if_t joystick_none = { static const struct { const joystick_if_t *joystick; } joysticks[] = { - { &joystick_none }, + { &joystick_none }, { &joystick_2axis_2button }, { &joystick_2axis_4button }, { &joystick_2axis_6button }, @@ -89,9 +89,9 @@ static const struct { { &joystick_3axis_4button }, { &joystick_4axis_4button }, { &joystick_ch_flightstick_pro }, - { &joystick_sw_pad }, - { &joystick_tm_fcs }, - { NULL } + { &joystick_sw_pad }, + { &joystick_tm_fcs }, + { NULL } }; static joystick_instance_t *joystick_instance = NULL; @@ -418,6 +418,47 @@ gameport_init(const device_t *info) return dev; } +static void * +tmacm_init(const device_t *info) +{ + uint16_t port = 0x0000; + + port = device_get_config_hex16("port1_addr"); + switch(port) { + case 0x201: + gameport_add(&gameport_201_device); + break; + case 0x203: + gameport_add(&gameport_203_device); + break; + case 0x205: + gameport_add(&gameport_205_device); + break; + case 0x207: + gameport_add(&gameport_207_device); + break; + default: + break; + } + + port = device_get_config_hex16("port2_addr"); + switch(port) { + case 0x201: + gameport_add(&gameport_209_device); + break; + case 0x203: + gameport_add(&gameport_20b_device); + break; + case 0x205: + gameport_add(&gameport_20d_device); + break; + case 0x207: + gameport_add(&gameport_20f_device); + break; + default: + break; + } +} static void gameport_close(void *priv) @@ -439,71 +480,235 @@ gameport_close(void *priv) } const device_t gameport_device = { - "Game port", - "gameport", - 0, 0x080200, - gameport_init, - gameport_close, - NULL, { NULL }, NULL, - NULL + .name = "Game port", + .internal_name = "gameport", + .flags = 0, + .local = 0x080200, + .init = gameport_init, + .close = gameport_close, + .reset = NULL, + { .available = NULL }, + .speed_changed = NULL, + .force_redraw = NULL, + .config = NULL }; const device_t gameport_201_device = { - "Game port (Port 201h only)", - "gameport_201", - 0, 0x010201, - gameport_init, - gameport_close, - NULL, { NULL }, NULL, - NULL + .name = "Game port (Port 201h only)", + .internal_name = "gameport_201", + .flags = 0, + .local = 0x010201, + .init = gameport_init, + .close = gameport_close, + .reset = NULL, + { .available = NULL }, + .speed_changed = NULL, + .force_redraw = NULL, + .config = NULL +}; + +const device_t gameport_203_device = { + .name = "Game port (Port 203h only)", + .internal_name = "gameport_203", + .flags = 0, + .local = 0x010203, + .init = gameport_init, + .close = gameport_close, + .reset = NULL, + { .available = NULL }, + .speed_changed = NULL, + .force_redraw = NULL, + .config = NULL +}; + +const device_t gameport_205_device = { + .name = "Game port (Port 205h only)", + .internal_name = "gameport_205", + .flags = 0, + .local = 0x010205, + .init = gameport_init, + .close = gameport_close, + .reset = NULL, + { .available = NULL }, + .speed_changed = NULL, + .force_redraw = NULL, + .config = NULL +}; + +const device_t gameport_207_device = { + .name = "Game port (Port 207h only)", + .internal_name = "gameport_207", + .flags = 0, + .local = 0x010207, + .init = gameport_init, + .close = gameport_close, + .reset = NULL, + { .available = NULL }, + .speed_changed = NULL, + .force_redraw = NULL, + .config = NULL }; const device_t gameport_208_device = { - "Game port (Port 208h-20fh)", - "gameport_208", - 0, 0x080208, - gameport_init, - gameport_close, - NULL, { NULL }, NULL, - NULL + .name = "Game port (Port 208h-20fh)", + .internal_name = "gameport_208", + .flags = 0, + .local = 0x080208, + .init = gameport_init, + .close = gameport_close, + .reset = NULL, + { .available = NULL }, + .speed_changed = NULL, + .force_redraw = NULL, + .config = NULL }; const device_t gameport_209_device = { - "Game port (Port 209h only)", - "gameport_209", - 0, 0x010209, - gameport_init, - gameport_close, - NULL, { NULL }, NULL, - NULL + .name = "Game port (Port 209h only)", + .internal_name = "gameport_209", + .flags = 0, + .local = 0x010209, + .init = gameport_init, + .close = gameport_close, + .reset = NULL, + { .available = NULL }, + .speed_changed = NULL, + .force_redraw = NULL, + .config = NULL +}; + +const device_t gameport_20b_device = { + .name = "Game port (Port 20Bh only)", + .internal_name = "gameport_20b", + .flags = 0, + .local = 0x01020B, + .init = gameport_init, + .close = gameport_close, + .reset = NULL, + { .available = NULL }, + .speed_changed = NULL, + .force_redraw = NULL, + .config = NULL +}; + +const device_t gameport_20d_device = { + .name = "Game port (Port 20Dh only)", + .internal_name = "gameport_20d", + .flags = 0, + .local = 0x01020D, + .init = gameport_init, + .close = gameport_close, + .reset = NULL, + { .available = NULL }, + .speed_changed = NULL, + .force_redraw = NULL, + .config = NULL +}; + +const device_t gameport_20f_device = { + .name = "Game port (Port 20Fh only)", + .internal_name = "gameport_20f", + .flags = 0, + .local = 0x01020F, + .init = gameport_init, + .close = gameport_close, + .reset = NULL, + { .available = NULL }, + .speed_changed = NULL, + .force_redraw = NULL, + .config = NULL +}; + +static const device_config_t tmacm_config[] = { + { + .name = "port1_addr", + .description = "Port 1 Address", + .type = CONFIG_HEX16, + .default_string = "", + .default_int = 0x0201, + .file_filter = "", + .spinner = { 0 }, + .selection = { + { .description = "201h", .value = 0x0201 }, + { .description = "203h", .value = 0x0203 }, + { .description = "205h", .value = 0x0205 }, + { .description = "207h", .value = 0x0207 }, + { .description = "Disabled", .value = 0x0000 }, + { "" } + } + }, + { + .name = "port2_addr", + .description = "Port 2 Address", + .type = CONFIG_HEX16, + .default_string = "", + .default_int = 0x0209, + .file_filter = "", + .spinner = { 0 }, + .selection = { + { .description = "209h", .value = 0x0209 }, + { .description = "20Bh", .value = 0x020B }, + { .description = "20Dh", .value = 0x020D }, + { .description = "20Fh", .value = 0x020F }, + { .description = "Disabled", .value = 0x0000 }, + { "" } + } + }, + { "", "", -1 } +}; + +const device_t gameport_tm_acm_device = { + .name = "Game port (ThrustMaster ACM)", + .internal_name = "gameport_tmacm", + .flags = DEVICE_ISA, + .local = 0, + .init = tmacm_init, + .close = NULL, + .reset = NULL, + { .available = NULL }, + .speed_changed = NULL, + .force_redraw = NULL, + .config = tmacm_config }; const device_t gameport_pnp_device = { - "Game port (Plug and Play only)", - "gameport_pnp", - 0, 0x080000, - gameport_init, - gameport_close, - NULL, { NULL }, NULL, - NULL + .name = "Game port (Plug and Play only)", + .internal_name = "gameport_pnp", + .flags = 0, + .local = 0x080000, + .init = gameport_init, + .close = gameport_close, + .reset = NULL, + { .available = NULL }, + .speed_changed = NULL, + .force_redraw = NULL, + .config = NULL }; const device_t gameport_pnp_6io_device = { - "Game port (Plug and Play only, 6 I/O ports)", - "gameport_pnp_6io", - 0, 0x060000, - gameport_init, - gameport_close, - NULL, { NULL }, NULL, - NULL + .name = "Game port (Plug and Play only, 6 I/O ports)", + .internal_name = "gameport_pnp_6io", + .flags = 0, + .local = 0x060000, + .init = gameport_init, + .close = gameport_close, + .reset = NULL, + { .available = NULL }, + .speed_changed = NULL, + .force_redraw = NULL, + .config = NULL }; const device_t gameport_sio_device = { - "Game port (Super I/O)", - "gameport_sio", - 0, 0x1080000, - gameport_init, - gameport_close, - NULL, { NULL }, NULL, - NULL + .name = "Game port (Super I/O)", + .internal_name = "gameport_sio", + .flags = 0, + .local = 0x1080000, + .init = gameport_init, + .close = gameport_close, + .reset = NULL, + { .available = NULL }, + .speed_changed = NULL, + .force_redraw = NULL, + .config = NULL }; diff --git a/src/include/86box/gameport.h b/src/include/86box/gameport.h index 4bd409d3d..48b07cca6 100644 --- a/src/include/86box/gameport.h +++ b/src/include/86box/gameport.h @@ -109,8 +109,15 @@ extern "C" { #ifdef EMU_DEVICE_H extern const device_t gameport_device; extern const device_t gameport_201_device; +extern const device_t gameport_203_device; +extern const device_t gameport_205_device; +extern const device_t gameport_207_device; extern const device_t gameport_208_device; extern const device_t gameport_209_device; +extern const device_t gameport_20b_device; +extern const device_t gameport_20d_device; +extern const device_t gameport_20f_device; +extern const device_t gameport_tm_acm_device; extern const device_t gameport_pnp_device; extern const device_t gameport_pnp_6io_device; extern const device_t gameport_sio_device; From 41f1c2facd8f5e864da5f09776bcff9e48342821 Mon Sep 17 00:00:00 2001 From: Jasmine Iwanek Date: Wed, 9 Mar 2022 21:57:51 -0500 Subject: [PATCH 4/6] More hardcoding fixes --- src/config.c | 11 +++++---- src/device/serial.c | 10 ++++---- src/include/86box/config.h | 8 +++---- src/include/86box/lpt.h | 16 +++++++++++++ src/include/86box/serial.h | 16 ++++++------- src/lpt.c | 4 ++-- src/machine/m_at_commodore.c | 10 ++++---- src/machine/m_ps1.c | 12 +++++----- src/machine/m_ps2_isa.c | 12 +++++----- src/machine/m_ps2_mca.c | 42 +++++++++++++++++----------------- src/machine/m_xt_compaq.c | 4 ++-- src/sio/sio_82091aa.c | 24 ++++++++++---------- src/sio/sio_acc3221.c | 8 +++---- src/sio/sio_f82c710.c | 28 +++++++++++------------ src/sio/sio_fdc37c669.c | 20 ++++++++-------- src/sio/sio_fdc37c67x.c | 4 ++-- src/sio/sio_fdc37c6xx.c | 26 ++++++++++----------- src/sio/sio_fdc37c93x.c | 4 ++-- src/sio/sio_pc87306.c | 26 ++++++++++----------- src/sio/sio_pc87310.c | 14 ++++++------ src/sio/sio_pc87311.c | 34 ++++++++++++++-------------- src/sio/sio_pc87332.c | 36 ++++++++++++++--------------- src/sio/sio_prime3b.c | 21 +++++++++-------- src/sio/sio_um8669f.c | 12 +++++----- src/sio/sio_vt82c686.c | 4 ++-- src/sio/sio_w83787f.c | 44 ++++++++++++++++++------------------ src/sio/sio_w83877f.c | 12 +++++----- src/sio/sio_w83977f.c | 8 +++---- 28 files changed, 245 insertions(+), 225 deletions(-) diff --git a/src/config.c b/src/config.c index 84257c6e1..acf70d15a 100644 --- a/src/config.c +++ b/src/config.c @@ -2106,13 +2106,16 @@ config_load(void) video_fullscreen_first = 1; time_sync = TIME_SYNC_ENABLED; hdc_current = hdc_get_from_internal_name("none"); + serial_enabled[0] = 1; serial_enabled[1] = 1; - serial_enabled[2] = 0; - serial_enabled[3] = 0; + for (i = 2 ; i < SERIAL_MAX; i++) + serial_enabled[i] = 0; lpt_ports[0].enabled = 1; - lpt_ports[1].enabled = 0; - lpt_ports[2].enabled = 0; + + for (i = 1 ; i < PARALLEL_MAX; i++) + lpt_ports[i].enabled = 0; + for (i = 0; i < FDD_NUM; i++) { if (i < 2) fdd_set_type(i, 2); diff --git a/src/device/serial.c b/src/device/serial.c index cf3a84f00..b5644c669 100644 --- a/src/device/serial.c +++ b/src/device/serial.c @@ -685,13 +685,13 @@ serial_init(const device_t *info) dev->sd->serial = dev; serial_reset_port(dev); if (next_inst == 3) - serial_setup(dev, SERIAL4_ADDR, SERIAL4_IRQ); + serial_setup(dev, COM4_ADDR, COM4_IRQ); else if (next_inst == 2) - serial_setup(dev, SERIAL3_ADDR, SERIAL3_IRQ); + serial_setup(dev, COM3_ADDR, COM3_IRQ); else if ((next_inst == 1) || (info->flags & DEVICE_PCJR)) - serial_setup(dev, SERIAL2_ADDR, SERIAL2_IRQ); + serial_setup(dev, COM2_ADDR, COM2_IRQ); else if (next_inst == 0) - serial_setup(dev, SERIAL1_ADDR, SERIAL1_IRQ); + serial_setup(dev, COM1_ADDR, COM1_IRQ); /* Default to 1200,N,7. */ dev->dlab = 96; @@ -717,7 +717,7 @@ serial_set_next_inst(int ni) void serial_standalone_init(void) { - for ( ; next_inst < 4; ) + for ( ; next_inst < SERIAL_MAX; ) device_add_inst(&ns8250_device, next_inst + 1); }; diff --git a/src/include/86box/config.h b/src/include/86box/config.h index b630d0c80..41c9900ed 100644 --- a/src/include/86box/config.h +++ b/src/include/86box/config.h @@ -108,12 +108,12 @@ typedef struct { char network_host[520]; /* PCap device */ /* Ports category */ - char parallel_devices[3][32]; /* LPT device names */ + char parallel_devices[PARALLEL_MAX][32]; /* LPT device names */ #ifdef USE_SERIAL_DEVICES - char serial_devices[4][32]; /* Serial device names */ + char serial_devices[SERIAL_MAX][32]; /* Serial device names */ #endif - int serial_enabled[4], /* Serial ports 1 and 2 enabled */ - parallel_enabled[3]; /* LPT1, LPT2, LPT3 enabled */ + int serial_enabled[SERIAL_MAX], /* Serial ports 1, 2, 3, 4 enabled */ + parallel_enabled[PARALLEL_MAX]; /* LPT1, LPT2, LPT3, LPT4 enabled */ /* Other peripherals category */ int fdc_type, /* Floppy disk controller type */ diff --git a/src/include/86box/lpt.h b/src/include/86box/lpt.h index ae1a63388..b5b8d2699 100644 --- a/src/include/86box/lpt.h +++ b/src/include/86box/lpt.h @@ -1,6 +1,22 @@ #ifndef EMU_LPT_H # define EMU_LPT_H +#define LPT1_ADDR 0x0378 +#define LPT1_IRQ 7 +#define LPT2_ADDR 0x0278 +#define LPT2_IRQ 5 +// LPT 1 on machines when installed +#define LPT_MDA_ADDR 0x03bc +#define LPT_MDA_IRQ 7 +#define LPT4_ADDR 0x0268 +#define LPT4_IRQ 5 +/* +#define LPT5_ADDR 0x027c +#define LPT5_IRQ 7 +#define LPT6_ADDR 0x026c +#define LPT6_IRQ 5 +*/ + typedef struct { const char *name; diff --git a/src/include/86box/serial.h b/src/include/86box/serial.h index 7770ebb1b..3378a91b5 100644 --- a/src/include/86box/serial.h +++ b/src/include/86box/serial.h @@ -35,14 +35,14 @@ #define SERIAL_FIFO_SIZE 16 /* Default settings for the standard ports. */ -#define SERIAL1_ADDR 0x03f8 -#define SERIAL1_IRQ 4 -#define SERIAL2_ADDR 0x02f8 -#define SERIAL2_IRQ 3 -#define SERIAL3_ADDR 0x03e8 -#define SERIAL3_IRQ 4 -#define SERIAL4_ADDR 0x02e8 -#define SERIAL4_IRQ 3 +#define COM1_ADDR 0x03f8 +#define COM1_IRQ 4 +#define COM2_ADDR 0x02f8 +#define COM2_IRQ 3 +#define COM3_ADDR 0x03e8 +#define COM3_IRQ 4 +#define COM4_ADDR 0x02e8 +#define COM4_IRQ 3 struct serial_device_s; diff --git a/src/lpt.c b/src/lpt.c index fa8fa458f..bc82454bc 100644 --- a/src/lpt.c +++ b/src/lpt.c @@ -177,8 +177,8 @@ void lpt_init(void) { int i; - uint16_t default_ports[PARALLEL_MAX] = { 0x378, 0x278, 0x3bc, 0x268 }; /*, 0x27c, 0x26c }; */ - uint8_t default_irqs[PARALLEL_MAX] = { 7, 5, 7, 5 }; /* , 7, 5 }; */ + uint16_t default_ports[PARALLEL_MAX] = { LPT1_ADDR, LPT2_ADDR, LPT_MDA_ADDR, LPT4_ADDR }; + uint8_t default_irqs[PARALLEL_MAX] = { LPT1_IRQ, LPT2_IRQ, LPT_MDA_IRQ, LPT4_IRQ }; for (i = 0; i < PARALLEL_MAX; i++) { lpt_ports[i].addr = 0xffff; diff --git a/src/machine/m_at_commodore.c b/src/machine/m_at_commodore.c index 8aa75059f..f9afdd1ef 100644 --- a/src/machine/m_at_commodore.c +++ b/src/machine/m_at_commodore.c @@ -65,22 +65,22 @@ cbm_io_write(uint16_t port, uint8_t val, void *p) switch (val & 3) { case 1: - lpt1_init(0x3bc); + lpt1_init(LPT_MDA_ADDR); break; case 2: - lpt1_init(0x378); + lpt1_init(LPT1_ADDR); break; case 3: - lpt1_init(0x278); + lpt1_init(LPT2_ADDR); break; } switch (val & 0xc) { case 0x4: - serial_setup(cmd_uart, 0x2f8, 3); + serial_setup(cmd_uart, COM2_ADDR, COM2_IRQ); break; case 0x8: - serial_setup(cmd_uart, 0x3f8, 4); + serial_setup(cmd_uart, COM1_ADDR, COM1_IRQ); break; } } diff --git a/src/machine/m_ps1.c b/src/machine/m_ps1.c index e63ef6ff9..0b0182692 100644 --- a/src/machine/m_ps1.c +++ b/src/machine/m_ps1.c @@ -145,21 +145,21 @@ ps1_write(uint16_t port, uint8_t val, void *priv) serial_remove(ps->uart); if (val & 0x04) { if (val & 0x08) - serial_setup(ps->uart, SERIAL1_ADDR, SERIAL1_IRQ); + serial_setup(ps->uart, COM1_ADDR, COM1_IRQ); else - serial_setup(ps->uart, SERIAL2_ADDR, SERIAL2_IRQ); + serial_setup(ps->uart, COM2_ADDR, COM2_IRQ); } if (val & 0x10) { switch ((val >> 5) & 3) { case 0: - lpt1_init(0x3bc); + lpt1_init(LPT_MDA_ADDR); break; case 1: - lpt1_init(0x378); + lpt1_init(LPT1_ADDR); break; case 2: - lpt1_init(0x278); + lpt1_init(LPT2_ADDR); break; } } @@ -270,7 +270,7 @@ ps1_setup(int model) ps->uart = device_add_inst(&ns16450_device, 1); lpt1_remove(); - lpt1_init(0x3bc); + lpt1_init(LPT_MDA_ADDR); mem_remap_top(384); diff --git a/src/machine/m_ps2_isa.c b/src/machine/m_ps2_isa.c index 2604327ab..c39c4eb92 100644 --- a/src/machine/m_ps2_isa.c +++ b/src/machine/m_ps2_isa.c @@ -90,21 +90,21 @@ static void ps2_write(uint16_t port, uint8_t val, void *p) serial_remove(ps2_uart); if (val & 0x04) { if (val & 0x08) - serial_setup(ps2_uart, SERIAL1_ADDR, SERIAL1_IRQ); + serial_setup(ps2_uart, COM1_ADDR, COM1_IRQ); else - serial_setup(ps2_uart, SERIAL2_ADDR, SERIAL2_IRQ); + serial_setup(ps2_uart, COM2_ADDR, COM2_IRQ); } if (val & 0x10) { switch ((val >> 5) & 3) { case 0: - lpt1_init(0x3bc); + lpt1_init(LPT_MDA_ADDR); break; case 1: - lpt1_init(0x378); + lpt1_init(LPT1_ADDR); break; case 2: - lpt1_init(0x278); + lpt1_init(LPT2_ADDR); break; } } @@ -159,7 +159,7 @@ static void ps2board_init(void) ps2_uart = device_add_inst(&ns16450_device, 1); - lpt1_init(0x3bc); + lpt1_init(LPT_MDA_ADDR); memset(&ps2_hd, 0, sizeof(ps2_hd)); } diff --git a/src/machine/m_ps2_mca.c b/src/machine/m_ps2_mca.c index 36a0d7f0f..f74f03dad 100644 --- a/src/machine/m_ps2_mca.c +++ b/src/machine/m_ps2_mca.c @@ -359,22 +359,22 @@ static void model_50_write(uint16_t port, uint8_t val) if (val & 0x04) { if (val & 0x08) - serial_setup(ps2.uart, SERIAL1_ADDR, SERIAL1_IRQ); + serial_setup(ps2.uart, COM1_ADDR, COM1_IRQ); else - serial_setup(ps2.uart, SERIAL2_ADDR, SERIAL2_IRQ); + serial_setup(ps2.uart, COM2_ADDR, COM2_IRQ); } if (val & 0x10) { switch ((val >> 5) & 3) { case 0: - lpt1_init(0x3bc); + lpt1_init(LPT_MDA_ADDR); break; case 1: - lpt1_init(0x378); + lpt1_init(LPT1_ADDR); break; case 2: - lpt1_init(0x278); + lpt1_init(LPT2_ADDR); break; } } @@ -492,22 +492,22 @@ static void model_55sx_write(uint16_t port, uint8_t val) if (val & 0x04) { if (val & 0x08) - serial_setup(ps2.uart, SERIAL1_ADDR, SERIAL1_IRQ); + serial_setup(ps2.uart, COM1_ADDR, COM1_IRQ); else - serial_setup(ps2.uart, SERIAL2_ADDR, SERIAL2_IRQ); + serial_setup(ps2.uart, COM2_ADDR, COM2_IRQ); } if (val & 0x10) { switch ((val >> 5) & 3) { case 0: - lpt1_init(0x3bc); + lpt1_init(LPT_MDA_ADDR); break; case 1: - lpt1_init(0x378); + lpt1_init(LPT1_ADDR); break; case 2: - lpt1_init(0x278); + lpt1_init(LPT2_ADDR); break; } } @@ -552,22 +552,22 @@ static void model_70_type3_write(uint16_t port, uint8_t val) if (val & 0x04) { if (val & 0x08) - serial_setup(ps2.uart, SERIAL1_ADDR, SERIAL1_IRQ); + serial_setup(ps2.uart, COM1_ADDR, COM1_IRQ); else - serial_setup(ps2.uart, SERIAL2_ADDR, SERIAL2_IRQ); + serial_setup(ps2.uart, COM2_ADDR, COM2_IRQ); } if (val & 0x10) { switch ((val >> 5) & 3) { case 0: - lpt1_init(0x3bc); + lpt1_init(LPT_MDA_ADDR); break; case 1: - lpt1_init(0x378); + lpt1_init(LPT1_ADDR); break; case 2: - lpt1_init(0x278); + lpt1_init(LPT2_ADDR); break; } } @@ -608,22 +608,22 @@ static void model_80_write(uint16_t port, uint8_t val) if (val & 0x04) { if (val & 0x08) - serial_setup(ps2.uart, SERIAL1_ADDR, SERIAL1_IRQ); + serial_setup(ps2.uart, COM1_ADDR, COM1_IRQ); else - serial_setup(ps2.uart, SERIAL2_ADDR, SERIAL2_IRQ); + serial_setup(ps2.uart, COM2_ADDR, COM2_IRQ); } if (val & 0x10) { switch ((val >> 5) & 3) { case 0: - lpt1_init(0x3bc); + lpt1_init(LPT_MDA_ADDR); break; case 1: - lpt1_init(0x378); + lpt1_init(LPT1_ADDR); break; case 2: - lpt1_init(0x278); + lpt1_init(LPT2_ADDR); break; } } @@ -832,7 +832,7 @@ static void ps2_mca_board_common_init() ps2.setup = 0xff; - lpt1_init(0x3bc); + lpt1_init(LPT_MDA_ADDR); } static uint8_t ps2_mem_expansion_read(int port, void *p) diff --git a/src/machine/m_xt_compaq.c b/src/machine/m_xt_compaq.c index 5950ec3f9..bd355a161 100644 --- a/src/machine/m_xt_compaq.c +++ b/src/machine/m_xt_compaq.c @@ -59,7 +59,7 @@ machine_xt_compaq_deskpro_init(const machine_t *model) standalone_gameport_type = &gameport_device; lpt1_remove(); - lpt1_init(0x03bc); + lpt1_init(LPT_MDA_ADDR); return ret; } @@ -88,7 +88,7 @@ machine_xt_compaq_portable_init(const machine_t *model) device_add(&gameport_device); lpt1_remove(); - lpt1_init(0x03bc); + lpt1_init(LPT_MDA_ADDR); return ret; } diff --git a/src/sio/sio_82091aa.c b/src/sio/sio_82091aa.c index f266f0a40..72f6adacc 100644 --- a/src/sio/sio_82091aa.c +++ b/src/sio/sio_82091aa.c @@ -6,7 +6,7 @@ * * This file is part of the 86Box distribution. * - * Emulation of the Intel 82019AA Super I/O chip. + * Emulation of the Intel 82091AA Super I/O chip. * * * @@ -56,19 +56,19 @@ fdc_handler(i82091aa_t *dev) static void lpt1_handler(i82091aa_t *dev) { - uint16_t lpt_port = 0x378; + uint16_t lpt_port = LPT1_ADDR; lpt1_remove(); switch ((dev->regs[0x20] >> 1) & 0x03) { case 0x00: - lpt_port = 0x378; + lpt_port = LPT1_ADDR; break; case 1: - lpt_port = 0x278; + lpt_port = LPT2_ADDR; break; case 2: - lpt_port = 0x3bc; + lpt_port = LPT_MDA_ADDR; break; case 3: lpt_port = 0x000; @@ -78,7 +78,7 @@ lpt1_handler(i82091aa_t *dev) if ((dev->regs[0x20] & 0x01) && lpt_port) lpt1_init(lpt_port); - lpt1_irq((dev->regs[0x20] & 0x08) ? 7 : 5); + lpt1_irq((dev->regs[0x20] & 0x08) ? LPT1_IRQ : LPT2_IRQ); } @@ -86,16 +86,16 @@ static void serial_handler(i82091aa_t *dev, int uart) { int reg = (0x30 + (uart << 4)); - uint16_t uart_port = 0x3f8; + uint16_t uart_port = COM1_ADDR; serial_remove(dev->uart[uart]); switch ((dev->regs[reg] >> 1) & 0x07) { case 0x00: - uart_port = 0x3f8; + uart_port = COM1_ADDR; break; case 0x01: - uart_port = 0x2f8; + uart_port = COM2_ADDR; break; case 0x02: uart_port = 0x220; @@ -107,18 +107,18 @@ serial_handler(i82091aa_t *dev, int uart) uart_port = 0x238; break; case 0x05: - uart_port = 0x2e8; + uart_port = COM4_ADDR; break; case 0x06: uart_port = 0x338; break; case 0x07: - uart_port = 0x3e8; + uart_port = COM3_ADDR; break; } if (dev->regs[reg] & 0x01) - serial_setup(dev->uart[uart], uart_port, (dev->regs[reg] & 0x10) ? 4 : 3); + serial_setup(dev->uart[uart], uart_port, (dev->regs[reg] & 0x10) ? COM1_IRQ : COM2_IRQ); } diff --git a/src/sio/sio_acc3221.c b/src/sio/sio_acc3221.c index 77928a313..52500ad8b 100644 --- a/src/sio/sio_acc3221.c +++ b/src/sio/sio_acc3221.c @@ -435,14 +435,14 @@ static void acc3221_reset(acc3221_t *dev) { serial_remove(dev->uart[0]); - serial_setup(dev->uart[0], SERIAL1_ADDR, SERIAL1_IRQ); + serial_setup(dev->uart[0], COM1_ADDR, COM1_IRQ); serial_remove(dev->uart[1]); - serial_setup(dev->uart[1], SERIAL2_ADDR, SERIAL2_IRQ); + serial_setup(dev->uart[1], COM2_ADDR, COM2_IRQ); lpt1_remove(); - lpt1_init(0x378); - lpt1_irq(7); + lpt1_init(LPT1_ADDR); + lpt1_irq(LPT1_IRQ); fdc_reset(dev->fdc); } diff --git a/src/sio/sio_f82c710.c b/src/sio/sio_f82c710.c index 06d0bf800..786f16ddd 100644 --- a/src/sio/sio_f82c710.c +++ b/src/sio/sio_f82c710.c @@ -81,19 +81,19 @@ f82c710_update_ports(upc_t *dev, int set) if (dev->regs[0] & 4) { com_addr = dev->regs[4] * 4; - if (com_addr == SERIAL1_ADDR) - serial_setup(dev->uart[0], com_addr, 4); - else if (com_addr == SERIAL2_ADDR) - serial_setup(dev->uart[1], com_addr, 3); + if (com_addr == COM1_ADDR) + serial_setup(dev->uart[0], com_addr, COM1_IRQ); + else if (com_addr == COM2_ADDR) + serial_setup(dev->uart[1], com_addr, COM2_IRQ); } if (dev->regs[0] & 8) { lpt_addr = dev->regs[6] * 4; lpt1_init(lpt_addr); - if ((lpt_addr == 0x378) || (lpt_addr == 0x3bc)) - lpt1_irq(7); - else if (lpt_addr == 0x278) - lpt1_irq(5); + if ((lpt_addr == LPT1_ADDR) || (lpt_addr == LPT_MDA_ADDR)) + lpt1_irq(LPT1_IRQ); + else if (lpt_addr == LPT2_ADDR) + lpt1_irq(LPT2_IRQ); } if (dev->regs[12] & 0x80) @@ -127,26 +127,26 @@ f82c606_update_ports(upc_t *dev, int set) switch (dev->regs[8] & 0xc0) { case 0x40: nvr_int = 3; break; - case 0x80: uart1_int = 3; break; - case 0xc0: uart2_int = 3; break; + case 0x80: uart1_int = COM2_IRQ; break; + case 0xc0: uart2_int = COM2_IRQ; break; } switch (dev->regs[8] & 0x30) { case 0x10: nvr_int = 4; break; - case 0x20: uart1_int = 4; break; - case 0x30: uart2_int = 4; break; + case 0x20: uart1_int = COM1_IRQ; break; + case 0x30: uart2_int = COM1_IRQ; break; } switch (dev->regs[8] & 0x0c) { case 0x04: nvr_int = 5; break; case 0x08: uart1_int = 5; break; - case 0x0c: lpt1_int = 5; break; + case 0x0c: lpt1_int = LPT2_IRQ; break; } switch (dev->regs[8] & 0x03) { case 0x01: nvr_int = 7; break; case 0x02: uart2_int = 7; break; - case 0x03: lpt1_int = 7; break; + case 0x03: lpt1_int = LPT1_IRQ; break; } if (dev->regs[0] & 1) { diff --git a/src/sio/sio_fdc37c669.c b/src/sio/sio_fdc37c669.c index 689de9236..3267d23b1 100644 --- a/src/sio/sio_fdc37c669.c +++ b/src/sio/sio_fdc37c669.c @@ -246,10 +246,10 @@ static void fdc37c669_reset(fdc37c669_t *dev) { serial_remove(dev->uart[0]); - serial_setup(dev->uart[0], SERIAL1_ADDR, SERIAL1_IRQ); + serial_setup(dev->uart[0], COM1_ADDR, COM1_IRQ); serial_remove(dev->uart[1]); - serial_setup(dev->uart[1], SERIAL2_ADDR, SERIAL2_IRQ); + serial_setup(dev->uart[1], COM2_ADDR, COM2_IRQ); memset(dev->regs, 0, 42); dev->regs[0x00] = 0x28; @@ -264,23 +264,23 @@ fdc37c669_reset(fdc37c669_t *dev) dev->regs[0x21] = (0x1f0 >> 2) & 0xfc; dev->regs[0x22] = ((0x3f6 >> 2) & 0xfc) | 1; if (dev->id == 1) { - dev->regs[0x23] = (0x278 >> 2); + dev->regs[0x23] = (LPT2_ADDR >> 2); lpt2_remove(); - lpt2_init(0x278); + lpt2_init(LPT2_ADDR); - dev->regs[0x24] = (SERIAL3_ADDR >> 2) & 0xfe; - dev->regs[0x25] = (SERIAL4_ADDR >> 2) & 0xfe; + dev->regs[0x24] = (COM3_ADDR >> 2) & 0xfe; + dev->regs[0x25] = (COM4_ADDR >> 2) & 0xfe; } else { fdc_reset(dev->fdc); lpt1_remove(); - lpt1_init(0x378); + lpt1_init(LPT1_ADDR); - dev->regs[0x23] = (0x378 >> 2); + dev->regs[0x23] = (LPT1_ADDR >> 2); - dev->regs[0x24] = (SERIAL1_ADDR >> 2) & 0xfe; - dev->regs[0x25] = (SERIAL2_ADDR >> 2) & 0xfe; + dev->regs[0x24] = (COM1_ADDR >> 2) & 0xfe; + dev->regs[0x25] = (COM2_ADDR >> 2) & 0xfe; } dev->regs[0x26] = (2 << 4) | 3; dev->regs[0x27] = (6 << 4) | (dev->id ? 5 : 7); diff --git a/src/sio/sio_fdc37c67x.c b/src/sio/sio_fdc37c67x.c index 727390535..a0ebbcd59 100644 --- a/src/sio/sio_fdc37c67x.c +++ b/src/sio/sio_fdc37c67x.c @@ -530,7 +530,7 @@ fdc37c67x_reset(fdc37c67x_t *dev) dev->ld_regs[4][0x61] = 0xf8; dev->ld_regs[4][0x70] = 4; dev->ld_regs[4][0xf0] = 3; - serial_setup(dev->uart[0], 0x3f8, dev->ld_regs[4][0x70]); + serial_setup(dev->uart[0], COM1_ADDR, dev->ld_regs[4][0x70]); /* Logical device 5: Serial Port 2 */ dev->ld_regs[5][0x30] = 1; @@ -540,7 +540,7 @@ fdc37c67x_reset(fdc37c67x_t *dev) dev->ld_regs[5][0x74] = 4; dev->ld_regs[5][0xf1] = 2; dev->ld_regs[5][0xf2] = 3; - serial_setup(dev->uart[1], 0x2f8, dev->ld_regs[5][0x70]); + serial_setup(dev->uart[1], COM2_ADDR, dev->ld_regs[5][0x70]); /* Logical device 7: Keyboard */ dev->ld_regs[7][0x30] = 1; diff --git a/src/sio/sio_fdc37c6xx.c b/src/sio/sio_fdc37c6xx.c index 89b90d332..0d4ca459e 100644 --- a/src/sio/sio_fdc37c6xx.c +++ b/src/sio/sio_fdc37c6xx.c @@ -56,11 +56,11 @@ set_com34_addr(fdc37c6xx_t *dev) dev->com4_addr = 0x238; break; case 0x20: - dev->com3_addr = 0x3e8; - dev->com4_addr = 0x2e8; + dev->com3_addr = COM3_ADDR; + dev->com4_addr = COM4_ADDR; break; case 0x40: - dev->com3_addr = 0x3e8; + dev->com3_addr = COM3_ADDR; dev->com4_addr = 0x2e0; break; case 0x60: @@ -84,16 +84,16 @@ set_serial_addr(fdc37c6xx_t *dev, int port) if (dev->regs[2] & (4 << shift)) { switch ((dev->regs[2] >> shift) & 3) { case 0: - serial_setup(dev->uart[port], SERIAL1_ADDR, SERIAL1_IRQ); + serial_setup(dev->uart[port], COM1_ADDR, COM1_IRQ); break; case 1: - serial_setup(dev->uart[port], SERIAL2_ADDR, SERIAL2_IRQ); + serial_setup(dev->uart[port], COM2_ADDR, COM2_IRQ); break; case 2: - serial_setup(dev->uart[port], dev->com3_addr, 4); + serial_setup(dev->uart[port], dev->com3_addr, COM3_IRQ); break; case 3: - serial_setup(dev->uart[port], dev->com4_addr, 3); + serial_setup(dev->uart[port], dev->com4_addr, COM4_IRQ); break; } } @@ -108,15 +108,15 @@ lpt1_handler(fdc37c6xx_t *dev) lpt1_remove(); switch (dev->regs[1] & 3) { case 1: - lpt1_init(0x3bc); + lpt1_init(LPT_MDA_ADDR); lpt1_irq(7); break; case 2: - lpt1_init(0x378); + lpt1_init(LPT1_ADDR); lpt1_irq(7 /*5*/); break; case 3: - lpt1_init(0x278); + lpt1_init(LPT2_ADDR); lpt1_irq(7 /*5*/); break; } @@ -243,13 +243,13 @@ fdc37c6xx_reset(fdc37c6xx_t *dev) dev->com4_addr = 0x238; serial_remove(dev->uart[0]); - serial_setup(dev->uart[0], SERIAL1_ADDR, SERIAL1_IRQ); + serial_setup(dev->uart[0], COM1_ADDR, COM1_IRQ); serial_remove(dev->uart[1]); - serial_setup(dev->uart[1], SERIAL2_ADDR, SERIAL2_IRQ); + serial_setup(dev->uart[1], COM2_ADDR, COM2_IRQ); lpt1_remove(); - lpt1_init(0x378); + lpt1_init(LPT1_ADDR); fdc_reset(dev->fdc); fdc_remove(dev->fdc); diff --git a/src/sio/sio_fdc37c93x.c b/src/sio/sio_fdc37c93x.c index 1747df076..b69f0536d 100644 --- a/src/sio/sio_fdc37c93x.c +++ b/src/sio/sio_fdc37c93x.c @@ -741,7 +741,7 @@ fdc37c93x_reset(fdc37c93x_t *dev) dev->ld_regs[4][0x61] = 0xf8; dev->ld_regs[4][0x70] = 4; dev->ld_regs[4][0xF0] = 3; - serial_setup(dev->uart[0], 0x3f8, dev->ld_regs[4][0x70]); + serial_setup(dev->uart[0], COM1_ADDR, dev->ld_regs[4][0x70]); /* Logical device 5: Serial Port 2 */ dev->ld_regs[5][0x30] = 1; @@ -751,7 +751,7 @@ fdc37c93x_reset(fdc37c93x_t *dev) dev->ld_regs[5][0x74] = 4; dev->ld_regs[5][0xF1] = 2; dev->ld_regs[5][0xF2] = 3; - serial_setup(dev->uart[1], 0x2f8, dev->ld_regs[5][0x70]); + serial_setup(dev->uart[1], COM2_ADDR, dev->ld_regs[5][0x70]); /* Logical device 6: RTC */ dev->ld_regs[6][0x30] = 1; diff --git a/src/sio/sio_pc87306.c b/src/sio/sio_pc87306.c index 2b72e3de1..2f70716c2 100644 --- a/src/sio/sio_pc87306.c +++ b/src/sio/sio_pc87306.c @@ -90,27 +90,27 @@ static void lpt1_handler(pc87306_t *dev) { int temp; - uint16_t lptba, lpt_port = 0x378; - uint8_t lpt_irq = 5; + uint16_t lptba, lpt_port = LPT1_ADDR; + uint8_t lpt_irq = LPT2_IRQ; temp = dev->regs[0x01] & 3; lptba = ((uint16_t) dev->regs[0x19]) << 2; switch (temp) { case 0: - lpt_port = 0x378; - lpt_irq = (dev->regs[0x02] & 0x08) ? 7 : 5; + lpt_port = LPT1_ADDR; + lpt_irq = (dev->regs[0x02] & 0x08) ? LPT1_IRQ : LPT2_IRQ; break; case 1: if (dev->regs[0x1b] & 0x40) lpt_port = lptba; else - lpt_port = 0x3bc; - lpt_irq = 7; + lpt_port = LPT_MDA_ADDR; + lpt_irq = LPT_MDA_IRQ; break; case 2: - lpt_port = 0x278; - lpt_irq = 5; + lpt_port = LPT2_ADDR; + lpt_irq = LPT2_IRQ; break; case 3: lpt_port = 0x000; @@ -149,21 +149,21 @@ serial_handler(pc87306_t *dev, int uart) switch (temp) { case 0: - serial_setup(dev->uart[uart], SERIAL1_ADDR, irq); + serial_setup(dev->uart[uart], COM1_ADDR, irq); break; case 1: - serial_setup(dev->uart[uart], SERIAL2_ADDR, irq); + serial_setup(dev->uart[uart], COM2_ADDR, irq); break; case 2: switch ((dev->regs[1] >> 6) & 3) { case 0: - serial_setup(dev->uart[uart], 0x3e8, irq); + serial_setup(dev->uart[uart], COM3_ADDR, irq); break; case 1: serial_setup(dev->uart[uart], 0x338, irq); break; case 2: - serial_setup(dev->uart[uart], 0x2e8, irq); + serial_setup(dev->uart[uart], COM4_ADDR, irq); break; case 3: serial_setup(dev->uart[uart], 0x220, irq); @@ -173,7 +173,7 @@ serial_handler(pc87306_t *dev, int uart) case 3: switch ((dev->regs[1] >> 6) & 3) { case 0: - serial_setup(dev->uart[uart], 0x2e8, irq); + serial_setup(dev->uart[uart], COM4_ADDR, irq); break; case 1: serial_setup(dev->uart[uart], 0x238, irq); diff --git a/src/sio/sio_pc87310.c b/src/sio/sio_pc87310.c index 30604cf03..e3e7c5975 100644 --- a/src/sio/sio_pc87310.c +++ b/src/sio/sio_pc87310.c @@ -73,8 +73,8 @@ static void lpt1_handler(pc87310_t *dev) { int temp; - uint16_t lpt_port = 0x378; - uint8_t lpt_irq = 7; + uint16_t lpt_port = LPT1_ADDR; + uint8_t lpt_irq = LPT1_IRQ; /* bits 0-1: * 00 378h @@ -86,13 +86,13 @@ lpt1_handler(pc87310_t *dev) switch (temp) { case 0: - lpt_port = 0x378; + lpt_port = LPT1_ADDR; break; case 1: - lpt_port = 0x3bc; + lpt_port = LPT_MDA_ADDR; break; case 2: - lpt_port = 0x278; + lpt_port = LPT2_ADDR; break; case 3: lpt_port = 0x000; @@ -121,10 +121,10 @@ serial_handler(pc87310_t *dev, int uart) if (!temp){ //configure serial port as COM2 if (((dev->reg >> 4) & 1) ^ uart) - serial_setup(dev->uart[uart], 0x2f8, 3); + serial_setup(dev->uart[uart], COM2_ADDR, COM2_IRQ); // configure serial port as COM1 else - serial_setup(dev->uart[uart], 0x3f8, 4); + serial_setup(dev->uart[uart], COM1_ADDR, COM1_IRQ); } } diff --git a/src/sio/sio_pc87311.c b/src/sio/sio_pc87311.c index 6406c766d..18fde4c85 100644 --- a/src/sio/sio_pc87311.c +++ b/src/sio/sio_pc87311.c @@ -128,15 +128,15 @@ uint16_t com3(pc87311_t *dev) switch (COM_BA) { case 0: - return 0x03e8; + return COM3_ADDR; case 1: return 0x0338; case 2: - return 0x02e8; + return COM4_ADDR; case 3: return 0x0220; default: - return 0x03e8; + return COM3_ADDR; } } @@ -145,7 +145,7 @@ uint16_t com4(pc87311_t *dev) switch (COM_BA) { case 0: - return 0x02e8; + return COM4_ADDR; case 1: return 0x0238; case 2: @@ -153,7 +153,7 @@ uint16_t com4(pc87311_t *dev) case 3: return 0x0228; default: - return 0x02e8; + return COM4_ADDR; } } @@ -164,20 +164,20 @@ void pc87311_uart_handler(uint8_t num, pc87311_t *dev) switch (!(num & 1) ? UART1_BA : UART2_BA) { case 0: - dev->base = 0x03f8; - dev->irq = 4; + dev->base = COM1_ADDR; + dev->irq = COM1_IRQ; break; case 1: - dev->base = 0x02f8; - dev->irq = 3; + dev->base = COM2_ADDR; + dev->irq = COM2_IRQ; break; case 2: dev->base = com3(dev); - dev->irq = 4; + dev->irq = COM3_IRQ; break; case 3: dev->base = com4(dev); - dev->irq = 3; + dev->irq = COM4_IRQ; break; } serial_setup(dev->uart[num & 1], dev->base, dev->irq); @@ -190,16 +190,16 @@ void pc87311_lpt_handler(pc87311_t *dev) switch (LPT_BA) { case 0: - dev->base = 0x0378; - dev->irq = (POWER_TEST & 0x08) ? 7 : 5; + dev->base = LPT1_ADDR; + dev->irq = (POWER_TEST & 0x08) ? LPT1_IRQ : LPT2_IRQ; break; case 1: - dev->base = 0x03bc; - dev->irq = 7; + dev->base = LPT_MDA_ADDR; + dev->irq = LPT_MDA_IRQ; break; case 2: - dev->base = 0x0278; - dev->irq = 5; + dev->base = LPT2_ADDR; + dev->irq = LPT2_IRQ; break; } lpt1_init(dev->base); diff --git a/src/sio/sio_pc87332.c b/src/sio/sio_pc87332.c index ea185abce..67b2f76b1 100644 --- a/src/sio/sio_pc87332.c +++ b/src/sio/sio_pc87332.c @@ -48,23 +48,23 @@ static void lpt1_handler(pc87332_t *dev) { int temp; - uint16_t lpt_port = 0x378; - uint8_t lpt_irq = 5; + uint16_t lpt_port = LPT1_ADDR; + uint8_t lpt_irq = LPT2_IRQ; temp = dev->regs[0x01] & 3; switch (temp) { case 0: - lpt_port = 0x378; - lpt_irq = (dev->regs[0x02] & 0x08) ? 7 : 5; + lpt_port = LPT1_ADDR; + lpt_irq = (dev->regs[0x02] & 0x08) ? LPT1_IRQ : LPT2_IRQ; break; case 1: - lpt_port = 0x3bc; - lpt_irq = 7; + lpt_port = LPT_MDA_ADDR; + lpt_irq = LPT_MDA_IRQ; break; case 2: - lpt_port = 0x278; - lpt_irq = 5; + lpt_port = LPT2_ADDR; + lpt_irq = LPT2_IRQ; break; case 3: lpt_port = 0x000; @@ -88,40 +88,40 @@ serial_handler(pc87332_t *dev, int uart) switch (temp) { case 0: - serial_setup(dev->uart[uart], SERIAL1_ADDR, 4); + serial_setup(dev->uart[uart], COM1_ADDR, 4); break; case 1: - serial_setup(dev->uart[uart], SERIAL2_ADDR, 3); + serial_setup(dev->uart[uart], COM2_ADDR, 3); break; case 2: switch ((dev->regs[1] >> 6) & 3) { case 0: - serial_setup(dev->uart[uart], 0x3e8, 4); + serial_setup(dev->uart[uart], COM3_ADDR, COM3_IRQ); break; case 1: - serial_setup(dev->uart[uart], 0x338, 4); + serial_setup(dev->uart[uart], 0x338, COM3_IRQ); break; case 2: - serial_setup(dev->uart[uart], 0x2e8, 4); + serial_setup(dev->uart[uart], COM4_ADDR, COM3_IRQ); break; case 3: - serial_setup(dev->uart[uart], 0x220, 4); + serial_setup(dev->uart[uart], 0x220, COM3_IRQ); break; } break; case 3: switch ((dev->regs[1] >> 6) & 3) { case 0: - serial_setup(dev->uart[uart], 0x2e8, 3); + serial_setup(dev->uart[uart], COM4_ADDR, COM4_IRQ); break; case 1: - serial_setup(dev->uart[uart], 0x238, 3); + serial_setup(dev->uart[uart], 0x238, COM4_IRQ); break; case 2: - serial_setup(dev->uart[uart], 0x2e0, 3); + serial_setup(dev->uart[uart], 0x2e0, COM4_IRQ); break; case 3: - serial_setup(dev->uart[uart], 0x228, 3); + serial_setup(dev->uart[uart], 0x228, COM4_IRQ); break; } break; diff --git a/src/sio/sio_prime3b.c b/src/sio/sio_prime3b.c index 9e71f3124..3ed22eff1 100644 --- a/src/sio/sio_prime3b.c +++ b/src/sio/sio_prime3b.c @@ -108,15 +108,15 @@ prime3b_write(uint16_t addr, uint8_t val, void *priv) switch ((dev->regs[0xa4] >> 6) & 3) { case 0: - dev->com3_addr = 0x3e8; - dev->com4_addr = 0x2e8; + dev->com3_addr = COM3_ADDR; + dev->com4_addr = COM4_ADDR; break; case 1: dev->com3_addr = 0x338; dev->com4_addr = 0x238; break; case 2: - dev->com3_addr = 0x2e8; + dev->com3_addr = COM4_ADDR; dev->com4_addr = 0x2e0; break; case 3: @@ -154,7 +154,7 @@ void prime3b_uart_handler(uint8_t num, prime3b_t *dev) if ((ASR >> (3 + 2 * num)) & 1) uart_base = !((ASR >> (2 + 2 * num)) & 1) ? dev->com3_addr : dev->com4_addr; else - uart_base = !((ASR >> (2 + 2 * num)) & 1) ? 0x3f8 : 0x2f8; + uart_base = !((ASR >> (2 + 2 * num)) & 1) ? COM1_ADDR : COM2_ADDR; serial_remove(dev->uart[num]); serial_setup(dev->uart[num], uart_base, 4 - num); @@ -163,10 +163,10 @@ void prime3b_uart_handler(uint8_t num, prime3b_t *dev) void prime3b_lpt_handler(prime3b_t *dev) { - uint16_t lpt_base = (ASR & 2) ? 0x3bc : (!(ASR & 1) ? 0x378 : 0x278); + uint16_t lpt_base = (ASR & 2) ? LPT_MDA_ADDR : (!(ASR & 1) ? LPT1_ADDR : LPT2_ADDR); lpt1_remove(); lpt1_init(lpt_base); - lpt1_irq(7); + lpt1_irq(LPT1_IRQ); prime3b_log("Prime3B-LPT: Enabled with base %03x\n", lpt_base); } @@ -174,9 +174,10 @@ void prime3b_ide_handler(prime3b_t *dev) { ide_pri_disable(); uint16_t ide_base = !(ASR & 0x80) ? 0x1f0 : 0x170; + uint16_t ide_side = ide_base + 0x206; ide_set_base(0, ide_base); - ide_set_side(0, ide_base + 0x206); - prime3b_log("Prime3B-IDE: Enabled with base %03x and side %03x\n", ide_base, ide_base + 0x206); + ide_set_side(0, ide_side); + prime3b_log("Prime3B-IDE: Enabled with base %03x and side %03x\n", ide_base, ide_side); } void prime3b_enable(prime3b_t *dev) @@ -256,8 +257,8 @@ prime3b_init(const device_t *info) if (HAS_IDE_FUNCTIONALITY) device_add(&ide_isa_device); - dev->com3_addr = 0x3e8; - dev->com4_addr = 0x2e8; + dev->com3_addr = COM3_ADDR; + dev->com4_addr = COM4_ADDR; fdc_reset(dev->fdc_controller); prime3b_enable(dev); diff --git a/src/sio/sio_um8669f.c b/src/sio/sio_um8669f.c index aeef3a51e..287154eee 100644 --- a/src/sio/sio_um8669f.c +++ b/src/sio/sio_um8669f.c @@ -76,16 +76,16 @@ static const isapnp_device_config_t um8669f_pnp_defaults[] = { .dma = { { .dma = 2 }, } }, { .activate = 1, - .io = { { .base = 0x03f8 }, }, - .irq = { { .irq = 4 }, } + .io = { { .base = COM1_ADDR }, }, + .irq = { { .irq = COM1_IRQ }, } }, { .activate = 1, - .io = { { .base = 0x02f8 }, }, - .irq = { { .irq = 3 }, } + .io = { { .base = COM2_ADDR }, }, + .irq = { { .irq = COM2_IRQ }, } }, { .activate = 1, - .io = { { .base = 0x0378 }, }, - .irq = { { .irq = 7 }, } + .io = { { .base = LPT1_ADDR }, }, + .irq = { { .irq = LPT1_IRQ }, } }, { .activate = 0 }, { diff --git a/src/sio/sio_vt82c686.c b/src/sio/sio_vt82c686.c index 3f6229f15..7d3a866e1 100644 --- a/src/sio/sio_vt82c686.c +++ b/src/sio/sio_vt82c686.c @@ -261,8 +261,8 @@ vt82c686_reset(vt82c686_t *dev) fdc_reset(dev->fdc); - serial_setup(dev->uart[0], SERIAL1_ADDR, SERIAL1_IRQ); - serial_setup(dev->uart[1], SERIAL2_ADDR, SERIAL2_IRQ); + serial_setup(dev->uart[0], COM1_ADDR, COM1_IRQ); + serial_setup(dev->uart[1], COM2_ADDR, COM2_IRQ); vt82c686_lpt_handler(dev); vt82c686_serial_handler(dev, 0); diff --git a/src/sio/sio_w83787f.c b/src/sio/sio_w83787f.c index a24e8695c..9f1e521ad 100644 --- a/src/sio/sio_w83787f.c +++ b/src/sio/sio_w83787f.c @@ -125,27 +125,27 @@ w83787f_serial_handler(w83787f_t *dev, int uart) int urs0 = !!(dev->regs[1] & (1 << uart)); int urs1 = !!(dev->regs[1] & (4 << uart)); int urs2 = !!(dev->regs[3] & (8 >> uart)); - int urs, irq = 4; - uint16_t addr = 0x3f8, enable = 1; + int urs, irq = COM1_IRQ; + uint16_t addr = COM1_ADDR, enable = 1; urs = (urs1 << 1) | urs0; if (urs2) { - addr = uart ? 0x3f8 : 0x2f8; - irq = uart ? 4 : 3; + addr = uart ? COM1_ADDR : COM2_ADDR; + irq = uart ? COM1_IRQ : COM2_IRQ; } else { switch (urs) { case 0: - addr = uart ? 0x3e8 : 0x2e8; - irq = uart ? 4 : 3; + addr = uart ? COM3_ADDR : COM4_ADDR; + irq = uart ? COM3_IRQ : COM4_IRQ; break; case 1: - addr = uart ? 0x2e8 : 0x3e8; - irq = uart ? 3 : 4; + addr = uart ? COM4_ADDR : COM3_ADDR; + irq = uart ? COM4_IRQ : COM3_IRQ; break; case 2: - addr = uart ? 0x2f8 : 0x3f8; - irq = uart ? 3 : 4; + addr = uart ? COM2_ADDR : COM1_ADDR; + irq = uart ? COM2_IRQ : COM1_IRQ; break; case 3: default: @@ -167,21 +167,21 @@ static void w83787f_lpt_handler(w83787f_t *dev) { int ptras = (dev->regs[1] >> 4) & 0x03; - int irq = 7; - uint16_t addr = 0x378, enable = 1; + int irq = LPT1_IRQ; + uint16_t addr = LPT1_ADDR, enable = 1; switch (ptras) { case 0x00: - addr = 0x3bc; - irq = 7; + addr = LPT_MDA_ADDR; + irq = LPT_MDA_IRQ; break; case 0x01: - addr = 0x278; - irq = 5; + addr = LPT2_ADDR; + irq = LPT2_IRQ; break; case 0x02: - addr = 0x378; - irq = 7; + addr = LPT1_ADDR; + irq = LPT1_IRQ; break; case 0x03: default: @@ -361,8 +361,8 @@ static void w83787f_reset(w83787f_t *dev) { lpt1_remove(); - lpt1_init(0x378); - lpt1_irq(7); + lpt1_init(LPT1_ADDR); + lpt1_irq(LPT1_IRQ); memset(dev->regs, 0, 0x2A); @@ -399,8 +399,8 @@ w83787f_reset(w83787f_t *dev) dev->regs[0x0c] = 0x2C; dev->regs[0x0d] = 0xA3; - serial_setup(dev->uart[0], SERIAL1_ADDR, SERIAL1_IRQ); - serial_setup(dev->uart[1], SERIAL2_ADDR, SERIAL2_IRQ); + serial_setup(dev->uart[0], COM1_ADDR, COM1_IRQ); + serial_setup(dev->uart[1], COM2_ADDR, COM2_IRQ); dev->key = 0x89; diff --git a/src/sio/sio_w83877f.c b/src/sio/sio_w83877f.c index 3867fec60..ee18bb446 100644 --- a/src/sio/sio_w83877f.c +++ b/src/sio/sio_w83877f.c @@ -127,7 +127,7 @@ make_port(w83877f_t *dev, uint8_t reg) p &= 0x3F8; else p &= 0x3FC; - if ((p < 0x100) || (p > 0x3FF)) p = 0x378; + if ((p < 0x100) || (p > 0x3FF)) p = LPT1_ADDR; /* In ECP mode, A10 is active. */ if (l & 0x80) p |= 0x400; @@ -135,12 +135,12 @@ make_port(w83877f_t *dev, uint8_t reg) case 0x24: p = ((uint16_t) (dev->regs[reg] & 0xfe)) << 2; p &= 0xFF8; - if ((p < 0x100) || (p > 0x3F8)) p = 0x3F8; + if ((p < 0x100) || (p > 0x3F8)) p = COM1_ADDR; break; case 0x25: p = ((uint16_t) (dev->regs[reg] & 0xfe)) << 2; p &= 0xFF8; - if ((p < 0x100) || (p > 0x3F8)) p = 0x2F8; + if ((p < 0x100) || (p > 0x3F8)) p = COM2_ADDR; break; } @@ -406,9 +406,9 @@ w83877f_reset(w83877f_t *dev) dev->regs[0x20] = (0x3f0 >> 2) & 0xfc; dev->regs[0x21] = (0x1f0 >> 2) & 0xfc; dev->regs[0x22] = ((0x3f6 >> 2) & 0xfc) | 1; - dev->regs[0x23] = (0x378 >> 2); - dev->regs[0x24] = (0x3f8 >> 2) & 0xfe; - dev->regs[0x25] = (0x2f8 >> 2) & 0xfe; + dev->regs[0x23] = (LPT1_ADDR >> 2); + dev->regs[0x24] = (COM1_ADDR >> 2) & 0xfe; + dev->regs[0x25] = (COM2_ADDR >> 2) & 0xfe; dev->regs[0x26] = (2 << 4) | 4; dev->regs[0x27] = (2 << 4) | 5; dev->regs[0x28] = (4 << 4) | 3; diff --git a/src/sio/sio_w83977f.c b/src/sio/sio_w83977f.c index 66678d741..d7985d208 100644 --- a/src/sio/sio_w83977f.c +++ b/src/sio/sio_w83977f.c @@ -507,13 +507,13 @@ w83977f_reset(w83977f_t *dev) } if (dev->id == 1) { - serial_setup(dev->uart[0], SERIAL3_ADDR, SERIAL3_IRQ); - serial_setup(dev->uart[1], SERIAL4_ADDR, SERIAL4_IRQ); + serial_setup(dev->uart[0], COM3_ADDR, COM3_IRQ); + serial_setup(dev->uart[1], COM4_ADDR, COM4_IRQ); } else { fdc_reset(dev->fdc); - serial_setup(dev->uart[0], SERIAL1_ADDR, SERIAL1_IRQ); - serial_setup(dev->uart[1], SERIAL2_ADDR, SERIAL2_IRQ); + serial_setup(dev->uart[0], COM1_ADDR, COM1_IRQ); + serial_setup(dev->uart[1], COM2_ADDR, COM2_IRQ); w83977f_fdc_handler(dev); } From b24008f075b0a1a9191d823d3770463dc1315308 Mon Sep 17 00:00:00 2001 From: Jasmine Iwanek Date: Fri, 11 Mar 2022 22:04:57 -0500 Subject: [PATCH 5/6] Floppy --- src/chipset/ali1543.c | 6 +++--- src/chipset/wd76c10.c | 2 +- src/scsi/scsi_aha154x.c | 16 ++++++++-------- src/sio/sio_82091aa.c | 2 +- src/sio/sio_acc3221.c | 2 +- src/sio/sio_detect.c | 4 ++-- src/sio/sio_f82c710.c | 2 +- src/sio/sio_fdc37c669.c | 4 ++-- src/sio/sio_fdc37c67x.c | 4 ++-- src/sio/sio_fdc37c6xx.c | 8 ++++---- src/sio/sio_fdc37c93x.c | 4 ++-- src/sio/sio_fdc37m60x.c | 4 ++-- src/sio/sio_it8661f.c | 4 ++-- src/sio/sio_pc87306.c | 4 ++-- src/sio/sio_pc87310.c | 2 +- src/sio/sio_pc87311.c | 4 ++-- src/sio/sio_pc87332.c | 4 ++-- src/sio/sio_prime3b.c | 2 +- src/sio/sio_um8669f.c | 6 +++--- src/sio/sio_vt82c686.c | 4 ++-- src/sio/sio_w83787f.c | 2 +- src/sio/sio_w83877f.c | 14 +++++++------- src/sio/sio_w83977f.c | 6 +++--- 23 files changed, 55 insertions(+), 55 deletions(-) diff --git a/src/chipset/ali1543.c b/src/chipset/ali1543.c index a454b6a20..d555fb88e 100644 --- a/src/chipset/ali1543.c +++ b/src/chipset/ali1543.c @@ -1465,7 +1465,7 @@ ali1533_sio_write(uint16_t addr, uint8_t val, void *priv) ali1543_t *dev = (ali1543_t *)priv; switch (addr) { - case 0x3f0: + case FDC_PRIMARY_ADDR: dev->sio_index = val; if (dev->sio_index == 0x51) dev->in_configuration_mode = 1; @@ -1501,7 +1501,7 @@ ali1533_sio_write(uint16_t addr, uint8_t val, void *priv) break; } - if ((!dev->in_configuration_mode) && (dev->sio_regs[0x07] <= 7) && (addr == 0x03f0)) + if ((!dev->in_configuration_mode) && (dev->sio_regs[0x07] <= 7) && (addr == FDC_PRIMARY_ADDR)) ali1533_sio_ldn(dev->sio_regs[0x07], dev); } @@ -1686,7 +1686,7 @@ ali1543_init(const device_t *info) dev->usb_slot = pci_add_card(PCI_ADD_SOUTHBRIDGE, ali5237_read, ali5237_write, dev); /* Ports 3F0-1h: M1543 Super I/O */ - io_sethandler(0x03f0, 0x0002, ali1533_sio_read, NULL, NULL, ali1533_sio_write, NULL, NULL, dev); + io_sethandler(FDC_PRIMARY_ADDR, 0x0002, ali1533_sio_read, NULL, NULL, ali1533_sio_write, NULL, NULL, dev); /* ACPI */ dev->acpi = device_add(&acpi_ali_device); diff --git a/src/chipset/wd76c10.c b/src/chipset/wd76c10.c index 82e5d57d5..f737c371b 100644 --- a/src/chipset/wd76c10.c +++ b/src/chipset/wd76c10.c @@ -172,7 +172,7 @@ static void wd76c10_disk_chip_select(wd76c10_t *dev) fdc_remove(dev->fdc_controller); if (!(dev->disk_chip_select & 2)) - fdc_set_base(dev->fdc_controller, !(dev->disk_chip_select & 0x0010) ? 0x3f0 : 0x370); + fdc_set_base(dev->fdc_controller, !(dev->disk_chip_select & 0x0010) ? FDC_PRIMARY_ADDR : FDC_SECONDARY_ADDR); } static void wd76c10_shadow_recalc(wd76c10_t *dev) diff --git a/src/scsi/scsi_aha154x.c b/src/scsi/scsi_aha154x.c index ab94a57be..e47d61497 100644 --- a/src/scsi/scsi_aha154x.c +++ b/src/scsi/scsi_aha154x.c @@ -197,7 +197,7 @@ aha154x_eeprom(x54x_t *dev, uint8_t cmd,uint8_t arg,uint8_t len,uint8_t off,uint if (dev->type == AHA_154xCF) { if (dev->fdc_address > 0) { fdc_remove(dev->fdc); - fdc_set_base(dev->fdc, (dev->nvr[0] & EE0_ALTFLOP) ? 0x370 : 0x3f0); + fdc_set_base(dev->fdc, (dev->nvr[0] & EE0_ALTFLOP) ? FDC_SECONDARY_ADDR : FDC_PRIMARY_ADDR); } } } @@ -901,7 +901,7 @@ aha_initnvr(x54x_t *dev) /* Initialize the on-board EEPROM. */ dev->nvr[0] = dev->HostID; /* SCSI ID 7 */ dev->nvr[0] |= (0x10 | 0x20 | 0x40); - if (dev->fdc_address == 0x370) + if (dev->fdc_address == FDC_SECONDARY_ADDR) dev->nvr[0] |= EE0_ALTFLOP; dev->nvr[1] = dev->Irq-9; /* IRQ15 */ dev->nvr[1] |= (dev->DmaChannel<<4); /* DMA6 */ @@ -939,7 +939,7 @@ aha_setnvr(x54x_t *dev) if (dev->type == AHA_154xCF) { if (dev->fdc_address > 0) { fdc_remove(dev->fdc); - fdc_set_base(dev->fdc, (dev->nvr[0] & EE0_ALTFLOP) ? 0x370 : 0x3f0); + fdc_set_base(dev->fdc, (dev->nvr[0] & EE0_ALTFLOP) ? FDC_SECONDARY_ADDR : FDC_PRIMARY_ADDR); } } } @@ -1305,12 +1305,12 @@ static const device_config_t aha_154xcf_config[] = { }, }, { - "fdc_addr", "FDC address", CONFIG_HEX16, "", 0, "", { 0 }, + "fdc_addr", "FDC address", CONFIG_HEX16, "", 0, "", { 0 }, { - { "None", 0 }, - { "0x3f0", 0x3f0 }, - { "0x370", 0x370 }, - { "" } + { "None", 0 }, + { "0x3f0", FDC_PRIMARY_ADDR }, + { "0x370", FDC_SECONDARY_ADDR }, + { "" } }, }, { diff --git a/src/sio/sio_82091aa.c b/src/sio/sio_82091aa.c index 72f6adacc..f08f686ed 100644 --- a/src/sio/sio_82091aa.c +++ b/src/sio/sio_82091aa.c @@ -49,7 +49,7 @@ fdc_handler(i82091aa_t *dev) { fdc_remove(dev->fdc); if (dev->regs[0x10] & 0x01) - fdc_set_base(dev->fdc, (dev->regs[0x10] & 0x02) ? 0x0370 : 0x03f0); + fdc_set_base(dev->fdc, (dev->regs[0x10] & 0x02) ? FDC_SECONDARY_ADDR : FDC_PRIMARY_ADDR); } diff --git a/src/sio/sio_acc3221.c b/src/sio/sio_acc3221.c index 52500ad8b..31a62896f 100644 --- a/src/sio/sio_acc3221.c +++ b/src/sio/sio_acc3221.c @@ -400,7 +400,7 @@ acc3221_write(uint16_t addr, uint8_t val, void *p) if ((old ^ val) & REG_FB_FDC_DISABLE) { fdc_remove(dev->fdc); if (!(dev->regs[0xfb] & REG_FB_FDC_DISABLE)) - fdc_set_base(dev->fdc, 0x03f0); + fdc_set_base(dev->fdc, FDC_PRIMARY_ADDR); } break; diff --git a/src/sio/sio_detect.c b/src/sio/sio_detect.c index 5daa13fcd..9ac0240d1 100644 --- a/src/sio/sio_detect.c +++ b/src/sio/sio_detect.c @@ -92,13 +92,13 @@ sio_detect_init(const device_t *info) sio_detect_read, NULL, NULL, sio_detect_write, NULL, NULL, dev); io_sethandler(0x0279, 0x0001, sio_detect_read, NULL, NULL, sio_detect_write, NULL, NULL, dev); - io_sethandler(0x0370, 0x0002, + io_sethandler(FDC_SECONDARY_ADDR, 0x0002, sio_detect_read, NULL, NULL, sio_detect_write, NULL, NULL, dev); io_sethandler(0x0398, 0x0002, sio_detect_read, NULL, NULL, sio_detect_write, NULL, NULL, dev); io_sethandler(0x03e3, 0x0001, sio_detect_read, NULL, NULL, sio_detect_write, NULL, NULL, dev); - io_sethandler(0x03f0, 0x0002, + io_sethandler(FDC_PRIMARY_ADDR, 0x0002, sio_detect_read, NULL, NULL, sio_detect_write, NULL, NULL, dev); io_sethandler(0x0a79, 0x0001, sio_detect_read, NULL, NULL, sio_detect_write, NULL, NULL, dev); diff --git a/src/sio/sio_f82c710.c b/src/sio/sio_f82c710.c index 786f16ddd..aaa00c004 100644 --- a/src/sio/sio_f82c710.c +++ b/src/sio/sio_f82c710.c @@ -100,7 +100,7 @@ f82c710_update_ports(upc_t *dev, int set) ide_pri_enable(); if (dev->regs[12] & 0x20) - fdc_set_base(dev->fdc, 0x03f0); + fdc_set_base(dev->fdc, FDC_PRIMARY_ADDR); } diff --git a/src/sio/sio_fdc37c669.c b/src/sio/sio_fdc37c669.c index 3267d23b1..e0d46d7f0 100644 --- a/src/sio/sio_fdc37c669.c +++ b/src/sio/sio_fdc37c669.c @@ -260,7 +260,7 @@ fdc37c669_reset(fdc37c669_t *dev) dev->regs[0x0d] = 0x03; dev->regs[0x0e] = 0x02; dev->regs[0x1e] = 0x80; /* Gameport controller. */ - dev->regs[0x20] = (0x3f0 >> 2) & 0xfc; + dev->regs[0x20] = (FDC_PRIMARY_ADDR >> 2) & 0xfc; dev->regs[0x21] = (0x1f0 >> 2) & 0xfc; dev->regs[0x22] = ((0x3f6 >> 2) & 0xfc) | 1; if (dev->id == 1) { @@ -316,7 +316,7 @@ fdc37c669_init(const device_t *info) dev->uart[0] = device_add_inst(&ns16550_device, (next_id << 1) + 1); dev->uart[1] = device_add_inst(&ns16550_device, (next_id << 1) + 2); - io_sethandler(info->local ? 0x370 : (next_id ? 0x370 : 0x3f0), 0x0002, + io_sethandler(info->local ? FDC_SECONDARY_ADDR : (next_id ? FDC_SECONDARY_ADDR : FDC_PRIMARY_ADDR), 0x0002, fdc37c669_read, NULL, NULL, fdc37c669_write, NULL, NULL, dev); fdc37c669_reset(dev); diff --git a/src/sio/sio_fdc37c67x.c b/src/sio/sio_fdc37c67x.c index a0ebbcd59..36b03d12f 100644 --- a/src/sio/sio_fdc37c67x.c +++ b/src/sio/sio_fdc37c67x.c @@ -594,9 +594,9 @@ fdc37c67x_init(const device_t *info) fdc37c67x_reset(dev); - io_sethandler(0x370, 0x0002, + io_sethandler(FDC_SECONDARY_ADDR, 0x0002, fdc37c67x_read, NULL, NULL, fdc37c67x_write, NULL, NULL, dev); - io_sethandler(0x3f0, 0x0002, + io_sethandler(FDC_PRIMARY_ADDR, 0x0002, fdc37c67x_read, NULL, NULL, fdc37c67x_write, NULL, NULL, dev); return dev; diff --git a/src/sio/sio_fdc37c6xx.c b/src/sio/sio_fdc37c6xx.c index 0d4ca459e..2757bb97d 100644 --- a/src/sio/sio_fdc37c6xx.c +++ b/src/sio/sio_fdc37c6xx.c @@ -128,7 +128,7 @@ fdc_handler(fdc37c6xx_t *dev) { fdc_remove(dev->fdc); if (dev->regs[0] & 0x10) - fdc_set_base(dev->fdc, (dev->regs[5] & 0x01) ? 0x0370 : 0x03f0); + fdc_set_base(dev->fdc, (dev->regs[5] & 0x01) ? FDC_SECONDARY_ADDR : FDC_PRIMARY_ADDR); } @@ -160,7 +160,7 @@ fdc37c6xx_write(uint16_t port, uint8_t val, void *priv) uint8_t valxor = 0; if (dev->tries == 2) { - if (port == 0x3f0) { + if (port == FDC_PRIMARY_ADDR) { if (val == 0xaa) dev->tries = 0; else @@ -216,7 +216,7 @@ fdc37c6xx_write(uint16_t port, uint8_t val, void *priv) break; } } - } else if ((port == 0x3f0) && (val == 0x55)) + } else if ((port == FDC_PRIMARY_ADDR) && (val == 0x55)) dev->tries++; } @@ -325,7 +325,7 @@ fdc37c6xx_init(const device_t *info) dev->uart[1] = device_add_inst(&ns16450_device, 2); } - io_sethandler(0x03f0, 0x0002, + io_sethandler(FDC_PRIMARY_ADDR, 0x0002, fdc37c6xx_read, NULL, NULL, fdc37c6xx_write, NULL, NULL, dev); fdc37c6xx_reset(dev); diff --git a/src/sio/sio_fdc37c93x.c b/src/sio/sio_fdc37c93x.c index b69f0536d..0530c1dd0 100644 --- a/src/sio/sio_fdc37c93x.c +++ b/src/sio/sio_fdc37c93x.c @@ -873,9 +873,9 @@ fdc37c93x_init(const device_t *info) io_sethandler(0x0fb, 0x0001, fdc37c93x_read, NULL, NULL, fdc37c93x_write, NULL, NULL, dev); } else { - io_sethandler(0x370, 0x0002, + io_sethandler(FDC_SECONDARY_ADDR, 0x0002, fdc37c93x_read, NULL, NULL, fdc37c93x_write, NULL, NULL, dev); - io_sethandler(0x3f0, 0x0002, + io_sethandler(FDC_PRIMARY_ADDR, 0x0002, fdc37c93x_read, NULL, NULL, fdc37c93x_write, NULL, NULL, dev); } diff --git a/src/sio/sio_fdc37m60x.c b/src/sio/sio_fdc37m60x.c index 1b36ad996..fc54ec157 100644 --- a/src/sio/sio_fdc37m60x.c +++ b/src/sio/sio_fdc37m60x.c @@ -319,7 +319,7 @@ const device_t fdc37m60x_device = { "SMSC FDC37M60X", "fdc37m60x", 0, - 0x03f0, + FDC_PRIMARY_ADDR, fdc37m60x_init, fdc37m60x_close, NULL, @@ -333,7 +333,7 @@ const device_t fdc37m60x_370_device = { "SMSC FDC37M60X with 10K Pull Up Resistor", "fdc37m60x_370", 0, - 0x0370, + FDC_SECONDARY_ADDR, fdc37m60x_init, fdc37m60x_close, NULL, diff --git a/src/sio/sio_it8661f.c b/src/sio/sio_it8661f.c index 565feb72c..529e6f0a9 100644 --- a/src/sio/sio_it8661f.c +++ b/src/sio/sio_it8661f.c @@ -221,7 +221,7 @@ it8661f_write(uint16_t addr, uint8_t val, void *priv) it8661f_t *dev = (it8661f_t *)priv; switch (addr) { - case 0x370: + case FDC_SECONDARY_ADDR: if (!dev->unlocked) { (val == mb_pnp_key[dev->enumerator]) ? dev->enumerator++ : (dev->enumerator = 0); if (dev->enumerator == 31) { @@ -326,7 +326,7 @@ it8661f_init(const device_t *info) dev->uart[0] = device_add_inst(&ns16550_device, 1); dev->uart[1] = device_add_inst(&ns16550_device, 2); - io_sethandler(0x0370, 0x0002, it8661f_read, NULL, NULL, it8661f_write, NULL, NULL, dev); + io_sethandler(FDC_SECONDARY_ADDR, 0x0002, it8661f_read, NULL, NULL, it8661f_write, NULL, NULL, dev); dev->enumerator = 0; dev->unlocked = 0; diff --git a/src/sio/sio_pc87306.c b/src/sio/sio_pc87306.c index 2f70716c2..ce768112a 100644 --- a/src/sio/sio_pc87306.c +++ b/src/sio/sio_pc87306.c @@ -242,7 +242,7 @@ pc87306_write(uint16_t port, uint8_t val, void *priv) if (valxor & 0x28) { fdc_remove(dev->fdc); if ((val & 8) && !(dev->regs[2] & 1)) - fdc_set_base(dev->fdc, (val & 0x20) ? 0x370 : 0x3f0); + fdc_set_base(dev->fdc, (val & 0x20) ? FDC_SECONDARY_ADDR : FDC_PRIMARY_ADDR); } break; case 1: @@ -277,7 +277,7 @@ pc87306_write(uint16_t port, uint8_t val, void *priv) if (dev->regs[0] & 4) serial_handler(dev, 1); if (dev->regs[0] & 8) - fdc_set_base(dev->fdc, (dev->regs[0] & 0x20) ? 0x370 : 0x3f0); + fdc_set_base(dev->fdc, (dev->regs[0] & 0x20) ? FDC_SECONDARY_ADDR : FDC_PRIMARY_ADDR); } } if (valxor & 8) { diff --git a/src/sio/sio_pc87310.c b/src/sio/sio_pc87310.c index e3e7c5975..d753e4c57 100644 --- a/src/sio/sio_pc87310.c +++ b/src/sio/sio_pc87310.c @@ -185,7 +185,7 @@ pc87310_write(uint16_t port, uint8_t val, void *priv) /* bit 6: 1 disable fdc */ if (!(val & 0x40)) { pc87310_log("SIO: FDC enabled\n"); - fdc_set_base(dev->fdc, 0x3f0); + fdc_set_base(dev->fdc, FDC_PRIMARY_ADDR); } } return; diff --git a/src/sio/sio_pc87311.c b/src/sio/sio_pc87311.c index 18fde4c85..be845b316 100644 --- a/src/sio/sio_pc87311.c +++ b/src/sio/sio_pc87311.c @@ -119,8 +119,8 @@ pc87311_read(uint16_t addr, void *priv) void pc87311_fdc_handler(pc87311_t *dev) { fdc_remove(dev->fdc_controller); - fdc_set_base(dev->fdc_controller, (FUNCTION_ENABLE & 0x20) ? 0x0370 : 0x03f0); - pc87311_log("PC87311-FDC: BASE %04x\n", (FUNCTION_ENABLE & 0x20) ? 0x0370 : 0x03f0); + fdc_set_base(dev->fdc_controller, (FUNCTION_ENABLE & 0x20) ? FDC_SECONDARY_ADDR : FDC_PRIMARY_ADDR); + pc87311_log("PC87311-FDC: BASE %04x\n", (FUNCTION_ENABLE & 0x20) ? FDC_SECONDARY_ADDR : FDC_PRIMARY_ADDR); } uint16_t com3(pc87311_t *dev) diff --git a/src/sio/sio_pc87332.c b/src/sio/sio_pc87332.c index 67b2f76b1..06df40669 100644 --- a/src/sio/sio_pc87332.c +++ b/src/sio/sio_pc87332.c @@ -195,7 +195,7 @@ pc87332_write(uint16_t port, uint8_t val, void *priv) if (valxor & 0x28) { fdc_remove(dev->fdc); if ((val & 8) && !(dev->regs[2] & 1)) - fdc_set_base(dev->fdc, (val & 0x20) ? 0x370 : 0x3f0); + fdc_set_base(dev->fdc, (val & 0x20) ? FDC_SECONDARY_ADDR : FDC_PRIMARY_ADDR); } if (dev->has_ide && (valxor & 0xc0)) ide_handler(dev); @@ -232,7 +232,7 @@ pc87332_write(uint16_t port, uint8_t val, void *priv) if (dev->regs[0] & 4) serial_handler(dev, 1); if (dev->regs[0] & 8) - fdc_set_base(dev->fdc, (dev->regs[0] & 0x20) ? 0x370 : 0x3f0); + fdc_set_base(dev->fdc, (dev->regs[0] & 0x20) ? FDC_SECONDARY_ADDR : FDC_PRIMARY_ADDR); } } if (valxor & 8) { diff --git a/src/sio/sio_prime3b.c b/src/sio/sio_prime3b.c index 3ed22eff1..ec3b74a5c 100644 --- a/src/sio/sio_prime3b.c +++ b/src/sio/sio_prime3b.c @@ -142,7 +142,7 @@ prime3b_read(uint16_t addr, void *priv) void prime3b_fdc_handler(prime3b_t *dev) { - uint16_t fdc_base = !(ASR & 0x40) ? 0x3f0 : 0x370; + uint16_t fdc_base = !(ASR & 0x40) ? FDC_PRIMARY_ADDR : FDC_SECONDARY_ADDR; fdc_remove(dev->fdc_controller); fdc_set_base(dev->fdc_controller, fdc_base); prime3b_log("Prime3B-FDC: Enabled with base %03x\n", fdc_base); diff --git a/src/sio/sio_um8669f.c b/src/sio/sio_um8669f.c index 287154eee..dc9fa5209 100644 --- a/src/sio/sio_um8669f.c +++ b/src/sio/sio_um8669f.c @@ -71,9 +71,9 @@ static uint8_t um8669f_pnp_rom[] = { static const isapnp_device_config_t um8669f_pnp_defaults[] = { { .activate = 1, - .io = { { .base = 0x03f0 }, }, - .irq = { { .irq = 6 }, }, - .dma = { { .dma = 2 }, } + .io = { { .base = FDC_PRIMARY_ADDR }, }, + .irq = { { .irq = FDC_PRIMARY_IRQ }, }, + .dma = { { .dma = FDC_PRIMARY_DMA }, } }, { .activate = 1, .io = { { .base = COM1_ADDR }, }, diff --git a/src/sio/sio_vt82c686.c b/src/sio/sio_vt82c686.c index 7d3a866e1..40ba7c356 100644 --- a/src/sio/sio_vt82c686.c +++ b/src/sio/sio_vt82c686.c @@ -239,9 +239,9 @@ vt82c686_sio_write(uint8_t addr, uint8_t val, void *priv) break; case 0x85: - io_removehandler(0x3f0, 2, vt82c686_read, NULL, NULL, vt82c686_write, NULL, NULL, dev); + io_removehandler(FDC_PRIMARY_ADDR, 2, vt82c686_read, NULL, NULL, vt82c686_write, NULL, NULL, dev); if (val & 0x02) - io_sethandler(0x3f0, 2, vt82c686_read, NULL, NULL, vt82c686_write, NULL, NULL, dev); + io_sethandler(FDC_PRIMARY_ADDR, 2, vt82c686_read, NULL, NULL, vt82c686_write, NULL, NULL, dev); break; } } diff --git a/src/sio/sio_w83787f.c b/src/sio/sio_w83787f.c index 9f1e521ad..9bd6c86c0 100644 --- a/src/sio/sio_w83787f.c +++ b/src/sio/sio_w83787f.c @@ -205,7 +205,7 @@ w83787f_fdc_handler(w83787f_t *dev) { fdc_remove(dev->fdc); if (!(dev->regs[0] & 0x20) && !(dev->regs[6] & 0x08)) - fdc_set_base(dev->fdc, (dev->regs[0] & 0x10) ? 0x03f0 : 0x0370); + fdc_set_base(dev->fdc, (dev->regs[0] & 0x10) ? FDC_PRIMARY_ADDR : FDC_SECONDARY_ADDR); } diff --git a/src/sio/sio_w83877f.c b/src/sio/sio_w83877f.c index ee18bb446..fc0c64c3c 100644 --- a/src/sio/sio_w83877f.c +++ b/src/sio/sio_w83877f.c @@ -81,9 +81,9 @@ w83877f_remap(w83877f_t *dev) io_removehandler(0x250, 0x0002, w83877f_read, NULL, NULL, w83877f_write, NULL, NULL, dev); - io_removehandler(0x3f0, 0x0002, + io_removehandler(FDC_PRIMARY_ADDR, 0x0002, w83877f_read, NULL, NULL, w83877f_write, NULL, NULL, dev); - dev->base_address = (hefras ? 0x3f0 : 0x250); + dev->base_address = (hefras ? FDC_PRIMARY_ADDR : 0x250); io_sethandler(dev->base_address, 0x0002, w83877f_read, NULL, NULL, w83877f_write, NULL, NULL, dev); dev->key_times = hefras + 1; @@ -153,7 +153,7 @@ w83877f_fdc_handler(w83877f_t *dev) { fdc_remove(dev->fdc); if (!(dev->regs[6] & 0x08) && (dev->regs[0x20] & 0xc0)) - fdc_set_base(dev->fdc, 0x03f0); + fdc_set_base(dev->fdc, FDC_PRIMARY_ADDR); } @@ -219,7 +219,7 @@ w83877f_write(uint16_t port, uint8_t val, void *priv) if (val <= max) dev->cur_reg = val; return; - } else if (port == 0x03f0) { + } else if (port == FDC_PRIMARY_ADDR) { if ((val == dev->key) && !dev->locked) { if (dev->key_times == 2) { if (dev->tries) { @@ -375,7 +375,7 @@ w83877f_read(uint16_t port, void *priv) uint8_t ret = 0xff; if (dev->locked) { - if ((port == 0x3f0) || (port == 0x251)) + if ((port == FDC_PRIMARY_ADDR) || (port == 0x251)) ret = dev->cur_reg; else if ((port == 0x3f1) || (port == 0x252)) { if (dev->cur_reg == 7) @@ -403,7 +403,7 @@ w83877f_reset(w83877f_t *dev) dev->regs[0x0d] = 0xA3; dev->regs[0x16] = dev->reg_init & 0xff; dev->regs[0x1e] = 0x81; - dev->regs[0x20] = (0x3f0 >> 2) & 0xfc; + dev->regs[0x20] = (FDC_PRIMARY_ADDR >> 2) & 0xfc; dev->regs[0x21] = (0x1f0 >> 2) & 0xfc; dev->regs[0x22] = ((0x3f6 >> 2) & 0xfc) | 1; dev->regs[0x23] = (LPT1_ADDR >> 2); @@ -421,7 +421,7 @@ w83877f_reset(w83877f_t *dev) w83877f_serial_handler(dev, 0); w83877f_serial_handler(dev, 1); - dev->base_address = 0x3f0; + dev->base_address = FDC_PRIMARY_ADDR; dev->key = 0x89; dev->key_times = 1; diff --git a/src/sio/sio_w83977f.c b/src/sio/sio_w83977f.c index d7985d208..6320d64c3 100644 --- a/src/sio/sio_w83977f.c +++ b/src/sio/sio_w83977f.c @@ -60,12 +60,12 @@ static uint8_t w83977f_read(uint16_t port, void *priv); static void w83977f_remap(w83977f_t *dev) { - io_removehandler(0x3f0, 0x0002, + io_removehandler(FDC_PRIMARY_ADDR, 0x0002, w83977f_read, NULL, NULL, w83977f_write, NULL, NULL, dev); - io_removehandler(0x370, 0x0002, + io_removehandler(FDC_SECONDARY_ADDR, 0x0002, w83977f_read, NULL, NULL, w83977f_write, NULL, NULL, dev); - dev->base_address = (HEFRAS ? 0x370 : 0x3f0); + dev->base_address = (HEFRAS ? FDC_SECONDARY_ADDR : FDC_PRIMARY_ADDR); io_sethandler(dev->base_address, 0x0002, w83977f_read, NULL, NULL, w83977f_write, NULL, NULL, dev); From b2a3cbf7a9bc671eaad5bccf0ccbae140d8ebe08 Mon Sep 17 00:00:00 2001 From: Jasmine Iwanek Date: Sat, 12 Mar 2022 00:46:50 -0500 Subject: [PATCH 6/6] Reusable IO Port definitions for IDE HDC's --- src/include/86box/hdc_ide.h | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/include/86box/hdc_ide.h b/src/include/86box/hdc_ide.h index d6914b905..8f1b3551a 100644 --- a/src/include/86box/hdc_ide.h +++ b/src/include/86box/hdc_ide.h @@ -19,6 +19,18 @@ #ifndef EMU_IDE_H # define EMU_IDE_H +#define HDC_PRIMARY_BASE 0x01F0 +#define HDC_PRIMARY_SIDE 0x03F6 +#define HDC_PRIMARY_IRQ 14 +#define HDC_SECONDARY_BASE 0x0170 +#define HDC_SECONDARY_SIDE 0x0376 +#define HDC_SECONDARY_IRQ 15 +#define HDC_TERTIARY_BASE 0x0168 +#define HDC_TERTIARY_SIDE 0x036E +#define HDC_TERTIARY_IRQ 10 +#define HDC_QUATERNARY_BASE 0x01E8 +#define HDC_QUATERNARY_SIDE 0x03EE +#define HDC_QUATERNARY_IRQ 11 enum {