shithub: front

Download patch

ref: 5f27ddcb3c11e75609d82091557381eda7ebbcdf
parent: 1352d29f7a5d0787cbf264babd7f661cc0322e67
author: Roberto E. Vargas Caballero <k0ga@shike2.com>
date: Mon Aug 4 09:11:50 EDT 2025

9boot: Add the *nouartbios parameter

Some BIOS emulates the screen output redirecting it
to the serial port, and using the BIOS functions at
the same time that the emulation generates some problems.
The new parameter *nouartbios remove any use of the BIOS
to access the uart.

--- a/sys/man/8/9boot
+++ b/sys/man/8/9boot
@@ -188,7 +188,7 @@
 .B console=
 but the parameters are ignored as BIOS allows
 only a maximum baud-rate of 9600 so the setting
-.B "b9660 l8 s1"
+.B "b9600 l8 s1"
 is assumed.
 Some BIOS emulate/redirect keyboard input
 and CGA output to the serial console,
@@ -198,6 +198,11 @@
 and
 .B *nocga=
 parameters.
+Also,
+in some of these emulations the BIOS uart functions
+can produce some problems that can be avoided using the
+.B *nouartbios=
+parameter.
 Serial console is not supported by EFI.
 .PP
 .B 9bootfat
--- a/sys/src/boot/pc/sub.c
+++ b/sys/src/boot/pc/sub.c
@@ -297,7 +297,9 @@
 			nocga = 1;
 		if(memcmp("*nokbd", line, 6) == 0)
 			nokbd = 1;
-		if(memcmp("console", line, 8) == 0)
+		if (memcmp("*nouartbios", line, 11) == 0)
+			uart = -2;
+		if(memcmp("console", line, 8) == 0 && uart != -2)
 			uartconf(p);
 
 		s = confend;
@@ -504,7 +506,7 @@
 {
 	if(*s >= '0' && *s <= '3'){
 		uart = *s - '0';
-		uartinit(uart, (7<<5) | 3);	/* b9660 l8 s1 */
+		uartinit(uart, (7<<5) | 3);	/* b9600 l8 s1 */
 	} else
 		uart = -1;
 }
--