https://git.reactos.org/?p=reactos.git;a=commitdiff;h=4501bbac8fd742b11b3a5…
commit 4501bbac8fd742b11b3a5ca704b13f010744b484
Author: Dmitry Borisov <di.sean(a)protonmail.com>
AuthorDate: Wed Apr 22 02:22:42 2020 +0600
Commit: GitHub <noreply(a)github.com>
CommitDate: Tue Apr 21 23:22:42 2020 +0300
[KDCOM][NTOS:INBV][FREELDR] Decrease default baud rate for PC-98 target (#2601)
According to PC-9801 Bible p. 50, divisor for PIT will become unsupported in some
cases after having removed the fractional part. Replace 19200 value with 9600 which is
supported by both 10 MHz and 8 MHz machines.
---
boot/bootdata/floppy_pc98.ini | 2 +-
boot/freeldr/freeldr/lib/comm/rs232.c | 4 ++++
boot/freeldr/freeldr/lib/debug.c | 7 ++++++-
boot/freeldr/freeldr/ntldr/headless.c | 7 +++++--
drivers/base/kdcom/kdcom.c | 17 ++++++++++++-----
drivers/base/kdgdb/kdcom.c | 21 ++++++++++++++-------
ntoskrnl/inbv/inbvport.c | 7 +++++--
ntoskrnl/kd/i386/kdbg.c | 5 ++++-
8 files changed, 51 insertions(+), 19 deletions(-)
diff --git a/boot/bootdata/floppy_pc98.ini b/boot/bootdata/floppy_pc98.ini
index 0466754d765..a46489687e4 100644
--- a/boot/bootdata/floppy_pc98.ini
+++ b/boot/bootdata/floppy_pc98.ini
@@ -39,7 +39,7 @@ Options=/MININT
[LiveCD_Debug]
BootType=Windows2003
SystemPath=multi(0)disk(0)cdrom(0)\reactos
-Options=/DEBUG /DEBUGPORT=COM1 /BAUDRATE=115200 /SOS /MININT
+Options=/DEBUG /DEBUGPORT=COM1 /BAUDRATE=9600 /SOS /MININT
[LiveCD_Screen]
BootType=Windows2003
diff --git a/boot/freeldr/freeldr/lib/comm/rs232.c
b/boot/freeldr/freeldr/lib/comm/rs232.c
index 10d0b0bedb8..61309fcd39b 100644
--- a/boot/freeldr/freeldr/lib/comm/rs232.c
+++ b/boot/freeldr/freeldr/lib/comm/rs232.c
@@ -30,7 +30,11 @@
/* STATIC VARIABLES ***********************************************************/
+#if defined(SARCH_PC98)
+#define DEFAULT_BAUD_RATE 9600
+#else
#define DEFAULT_BAUD_RATE 19200
+#endif
#if defined(_M_IX86) || defined(_M_AMD64)
#if defined(SARCH_PC98)
diff --git a/boot/freeldr/freeldr/lib/debug.c b/boot/freeldr/freeldr/lib/debug.c
index 24c074ddc69..abc2545f7ea 100644
--- a/boot/freeldr/freeldr/lib/debug.c
+++ b/boot/freeldr/freeldr/lib/debug.c
@@ -43,8 +43,13 @@ static UCHAR DbgChannels[DBG_CHANNELS_COUNT];
ULONG DebugPort = RS232;
/* Serial debug connection */
-ULONG ComPort = 0; // The COM port initializer chooses the first available port starting
from COM4 down to COM1.
+#if defined(SARCH_PC98)
+ULONG BaudRate = 9600;
+#else
ULONG BaudRate = 115200;
+#endif
+
+ULONG ComPort = 0; // The COM port initializer chooses the first available port starting
from COM4 down to COM1.
ULONG PortIrq = 0; // Not used at the moment.
BOOLEAN DebugStartOfLine = TRUE;
diff --git a/boot/freeldr/freeldr/ntldr/headless.c
b/boot/freeldr/freeldr/ntldr/headless.c
index 35af2e39daf..64fd04adb7b 100644
--- a/boot/freeldr/freeldr/ntldr/headless.c
+++ b/boot/freeldr/freeldr/ntldr/headless.c
@@ -67,10 +67,10 @@ WinLdrPortInitialize(IN ULONG BaudRate,
IN BOOLEAN TerminalConnected,
OUT PULONG PortId)
{
+#if defined(SARCH_PC98)
/* Set default baud rate */
- if (BaudRate == 0) BaudRate = 19200;
+ if (BaudRate == 0) BaudRate = 9600;
-#if defined(SARCH_PC98)
/* Check if port or address given */
if (PortNumber)
{
@@ -106,6 +106,9 @@ WinLdrPortInitialize(IN ULONG BaudRate,
}
}
#else
+ /* Set default baud rate */
+ if (BaudRate == 0) BaudRate = 19200;
+
/* Check if port or address given */
if (PortNumber)
{
diff --git a/drivers/base/kdcom/kdcom.c b/drivers/base/kdcom/kdcom.c
index eb62aa4e551..c4cfa39e177 100644
--- a/drivers/base/kdcom/kdcom.c
+++ b/drivers/base/kdcom/kdcom.c
@@ -15,12 +15,19 @@
#include <ndk/halfuncs.h>
/* Serial debug connection */
+#if defined(SARCH_PC98)
#define DEFAULT_DEBUG_PORT 2 /* COM2 */
-#define DEFAULT_DEBUG_COM1_IRQ 4 /* COM1 IRQ */
-#define DEFAULT_DEBUG_COM2_IRQ 3 /* COM2 IRQ */
-#define DEFAULT_DEBUG_BAUD_RATE 115200 /* 115200 Baud */
-
-#define DEFAULT_BAUD_RATE 19200
+#define DEFAULT_DEBUG_COM1_IRQ 4
+#define DEFAULT_DEBUG_COM2_IRQ 5
+#define DEFAULT_DEBUG_BAUD_RATE 9600
+#define DEFAULT_BAUD_RATE 9600
+#else
+#define DEFAULT_DEBUG_PORT 2 /* COM2 */
+#define DEFAULT_DEBUG_COM1_IRQ 4
+#define DEFAULT_DEBUG_COM2_IRQ 3
+#define DEFAULT_DEBUG_BAUD_RATE 115200
+#define DEFAULT_BAUD_RATE 19200
+#endif
#if defined(_M_IX86) || defined(_M_AMD64)
#if defined(SARCH_PC98)
diff --git a/drivers/base/kdgdb/kdcom.c b/drivers/base/kdgdb/kdcom.c
index af9ec39829c..18710247680 100644
--- a/drivers/base/kdgdb/kdcom.c
+++ b/drivers/base/kdgdb/kdcom.c
@@ -13,12 +13,19 @@
#include <ndk/halfuncs.h>
/* Serial debug connection */
+#if defined(SARCH_PC98)
#define DEFAULT_DEBUG_PORT 2 /* COM2 */
-#define DEFAULT_DEBUG_COM1_IRQ 4 /* COM1 IRQ */
-#define DEFAULT_DEBUG_COM2_IRQ 3 /* COM2 IRQ */
-#define DEFAULT_DEBUG_BAUD_RATE 115200 /* 115200 Baud */
-
-#define DEFAULT_BAUD_RATE 19200
+#define DEFAULT_DEBUG_COM1_IRQ 4
+#define DEFAULT_DEBUG_COM2_IRQ 5
+#define DEFAULT_DEBUG_BAUD_RATE 9600
+#define DEFAULT_BAUD_RATE 9600
+#else
+#define DEFAULT_DEBUG_PORT 2 /* COM2 */
+#define DEFAULT_DEBUG_COM1_IRQ 4
+#define DEFAULT_DEBUG_COM2_IRQ 3
+#define DEFAULT_DEBUG_BAUD_RATE 115200
+#define DEFAULT_BAUD_RATE 19200
+#endif
#if defined(_M_IX86) || defined(_M_AMD64)
#if defined(SARCH_PC98)
@@ -299,12 +306,12 @@ NTAPI
KdpReceiveByte(_Out_ PUCHAR OutByte)
{
USHORT CpStatus;
-
+
do
{
CpStatus = CpGetByte(&KdComPort, OutByte, TRUE, FALSE);
} while (CpStatus == CP_GET_NODATA);
-
+
/* Get the byte */
if (CpStatus == CP_GET_SUCCESS)
{
diff --git a/ntoskrnl/inbv/inbvport.c b/ntoskrnl/inbv/inbvport.c
index 526383a4771..269c8f962be 100644
--- a/ntoskrnl/inbv/inbvport.c
+++ b/ntoskrnl/inbv/inbvport.c
@@ -79,10 +79,10 @@ InbvPortInitialize(IN ULONG BaudRate,
/* Not yet supported */
ASSERT(IsMMIODevice == FALSE);
+#if defined(SARCH_PC98)
/* Set default baud rate */
- if (BaudRate == 0) BaudRate = 19200;
+ if (BaudRate == 0) BaudRate = 9600;
-#if defined(SARCH_PC98)
/* Check if port or address given */
if (PortNumber)
{
@@ -118,6 +118,9 @@ InbvPortInitialize(IN ULONG BaudRate,
}
}
#else
+ /* Set default baud rate */
+ if (BaudRate == 0) BaudRate = 19200;
+
/* Check if port or address given */
if (PortNumber)
{
diff --git a/ntoskrnl/kd/i386/kdbg.c b/ntoskrnl/kd/i386/kdbg.c
index 9277e019b2a..44bd7629e38 100644
--- a/ntoskrnl/kd/i386/kdbg.c
+++ b/ntoskrnl/kd/i386/kdbg.c
@@ -13,8 +13,11 @@
#define NDEBUG
#include <debug.h>
-
+#if defined(SARCH_PC98)
+#define DEFAULT_BAUD_RATE 9600
+#else
#define DEFAULT_BAUD_RATE 19200
+#endif
#if defined(_M_IX86) || defined(_M_AMD64)
#if defined(SARCH_PC98)