Date: Thu, 19 Nov 1998 11:27:54 +0100 From: "D. Rock" <rock@cs.uni-sb.de> To: Robert Nordier <rnordier@nordier.com> Cc: freebsd-current@FreeBSD.ORG Subject: Re: /boot/loader & comconsole Message-ID: <3653F2AA.D3A7CA29@cs.uni-sb.de> References: <199811190902.LAA03790@ceia.nordier.com>
next in thread | previous in thread | raw e-mail | index | archive | help
Robert Nordier schrieb:
[...]
> One difference between boot loader and the old/new boot blocks, is
> that boot loader uses PC BIOS services (int 0x14) for comms; both
> lots of boot blocks do direct port I/O, instead.
>
> The trouble with using the BIOS is that the int 0x14 services (which
> tend to be used only to talk to serial printers under DOS) expect to
> do hardware handshaking.
Using the BIOS for configuring the serial ports gives you also only
9600 bps. I usually ran the comconsole at 19200 bps. But the original
BIOS int 0x14 services seem only support up to 9600 bps. I did a
small patch on the bootblocks, so that it uses the "extended communication
port control" service. I don't know if good ole 386 BIOS implement this
routine, but it works on my machine (I think it was introduced with the
PS/2 PCs).
With this service I could go up to 19200 bps (wow! but my terminal can't
do more, though). I haven't noticed any problems, but now my console is
twice as fast (I sometimes even do some work on the terminal)
Below is the small patch
Daniel
Index: i386/boot2/Makefile
===================================================================
RCS file: /data/cvs/src/sys/boot/i386/boot2/Makefile,v
retrieving revision 1.10
diff -c -r1.10 Makefile
*** Makefile 1998/11/08 15:36:34 1.10
--- Makefile 1998/11/08 20:05:28
***************
*** 13,19 ****
B2SIOPRT?= 0x3f8
B2SIOFMT?= 0x3
! B2SIODIV?= 0xc
.if exists(${.OBJDIR}/../btx)
BTX= ${.OBJDIR}/../btx
--- 13,19 ----
B2SIOPRT?= 0x3f8
B2SIOFMT?= 0x3
! B2SIODIV?= 0x6
.if exists(${.OBJDIR}/../btx)
BTX= ${.OBJDIR}/../btx
Index: i386/libi386/comconsole.c
===================================================================
RCS file: /data/cvs/src/sys/boot/i386/libi386/comconsole.c,v
retrieving revision 1.4
diff -c -r1.4 comconsole.c
*** comconsole.c 1998/10/11 10:05:13 1.4
--- comconsole.c 1998/10/24 22:10:20
***************
*** 70,76 ****
comc_started = 1;
v86.ctl = 0;
v86.addr = 0x14;
! v86.eax = 0xe3; /* 9600N81 */
v86.edx = BIOS_COMPORT; /* XXX take as arg, or use env var? */
v86int();
--- 70,78 ----
comc_started = 1;
v86.ctl = 0;
v86.addr = 0x14;
! v86.eax = 0x400; /* Extended communication port control */
! v86.ebx = 0; /* N1 */
! v86.ecx = 0x308; /* 19200bps, 8bits */
v86.edx = BIOS_COMPORT; /* XXX take as arg, or use env var? */
v86int();
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3653F2AA.D3A7CA29>
