From 2373771f4d53382c33c3a1890b8d143579a74bd3 Mon Sep 17 00:00:00 2001 From: Jasmine Iwanek Date: Fri, 28 Jun 2024 23:30:56 -0400 Subject: [PATCH] Support additional serial ports ala the MP5587-1/2 --- src/86box.c | 4 ++-- src/device/serial.c | 8 +++++++- src/include/86box/86box.h | 2 +- src/include/86box/serial.h | 12 ++++++++++++ 4 files changed, 22 insertions(+), 4 deletions(-) diff --git a/src/86box.c b/src/86box.c index 60423b2a1..16d7cf3de 100644 --- a/src/86box.c +++ b/src/86box.c @@ -171,8 +171,8 @@ int video_filter_method = 1; /* (C) video * int video_vsync = 0; /* (C) video */ int video_framerate = -1; /* (C) video */ char video_shader[512] = { '\0' }; /* (C) video */ -bool serial_passthrough_enabled[SERIAL_MAX] = { 0, 0, 0, 0 }; /* (C) activation and kind of - pass-through for serial ports */ +bool serial_passthrough_enabled[SERIAL_MAX] = { 0, 0, 0, 0, 0, 0, 0 }; /* (C) activation and kind of + pass-through for serial ports */ int bugger_enabled = 0; /* (C) enable ISAbugger */ int novell_keycard_enabled = 0; /* (C) enable Novell NetWare 2.x key card emulation. */ int postcard_enabled = 0; /* (C) enable POST card */ diff --git a/src/device/serial.c b/src/device/serial.c index 2a61347a1..ecc08f15d 100644 --- a/src/device/serial.c +++ b/src/device/serial.c @@ -912,7 +912,13 @@ serial_init(const device_t *info) memset(&(serial_devices[next_inst]), 0, sizeof(serial_device_t)); dev->sd = &(serial_devices[next_inst]); dev->sd->serial = dev; - if (next_inst == 3) + if (next_inst == 6) + serial_setup(dev, COM7_ADDR, COM7_IRQ); + else if (next_inst == 5) + serial_setup(dev, COM6_ADDR, COM6_IRQ); + else if (next_inst == 4) + serial_setup(dev, COM5_ADDR, COM5_IRQ); + else if (next_inst == 3) serial_setup(dev, COM4_ADDR, COM4_IRQ); else if (next_inst == 2) serial_setup(dev, COM3_ADDR, COM3_IRQ); diff --git a/src/include/86box/86box.h b/src/include/86box/86box.h index f76d70797..0d57b4cae 100644 --- a/src/include/86box/86box.h +++ b/src/include/86box/86box.h @@ -21,7 +21,7 @@ #define EMU_86BOX_H /* Configuration values. */ -#define SERIAL_MAX 4 +#define SERIAL_MAX 7 #define PARALLEL_MAX 4 #define SCREEN_RES_X 640 #define SCREEN_RES_Y 480 diff --git a/src/include/86box/serial.h b/src/include/86box/serial.h index c2312f562..a205c7cec 100644 --- a/src/include/86box/serial.h +++ b/src/include/86box/serial.h @@ -43,6 +43,18 @@ #define COM3_IRQ 4 #define COM4_ADDR 0x02e8 #define COM4_IRQ 3 +// The following support being assingned IRQ 3, 4, 5, 9, 10, 11, 12 or 15 +// There doesn't appear to be any specific standard however +// So defaults have been chosen arbitarily +// TODO: Allow configuration of the IRQ in the UI +//#define COM5_ADDR 0x03f0 +//#define COM5_IRQ 3 +#define COM5_ADDR 0x02f0 +#define COM5_IRQ 11 +#define COM6_ADDR 0x03e0 +#define COM6_IRQ 10 +#define COM7_ADDR 0x02e0 +#define COM7_IRQ 9 struct serial_device_s; struct serial_s;