The branch stable/12 has been updated by kevans:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=b38c8d4c6d691a3a65f90a7023c99bf64790caa4

commit b38c8d4c6d691a3a65f90a7023c99bf64790caa4
Author:     Toomas Soome <[email protected]>
AuthorDate: 2020-06-16 20:35:00 +0000
Commit:     Kyle Evans <[email protected]>
CommitDate: 2021-10-08 02:42:54 +0000

    boot2: need to expand tab output and mask getchar
    
    The BIOS ouput char function does not expand tab.
    Mask getchar with 0xFF.
    
    (cherry picked from commit 6469d2b422960de4b1253cc63b11fa67f896604f)
---
 stand/i386/common/cons.c | 30 ++++++++++++++++++++++++++++--
 1 file changed, 28 insertions(+), 2 deletions(-)

diff --git a/stand/i386/common/cons.c b/stand/i386/common/cons.c
index 96e782fda5c9..25dda1ce7405 100644
--- a/stand/i386/common/cons.c
+++ b/stand/i386/common/cons.c
@@ -53,12 +53,38 @@ xputc(int c)
                sio_putc(c);
 }
 
+static void
+getcursor(int *row, int *col)
+{
+       v86.ctl = V86_FLAGS;
+       v86.addr = 0x10;
+       v86.eax = 0x300;
+       v86.ebx = 0x7;
+       v86int();
+
+       if (row != NULL)
+               *row = v86.edx >> 8;
+       if (col != NULL)
+               *col = v86.edx & 0xff;
+}
+
 void
 putchar(int c)
 {
+       int i, col;
 
-       if (c == '\n')
+       switch (c) {
+       case '\n':
                xputc('\r');
+               break;
+       case '\t':
+               col = 0;
+               getcursor(NULL, &col);
+               col = 8 - (col % 8);
+               for (i = 0; i < col; i++)
+                       xputc(' ');
+               return;
+       }
        xputc(c);
 }
 
@@ -100,7 +126,7 @@ int
 getchar(void)
 {
 
-       return (xgetc(0));
+       return (xgetc(0) & 0xff);
 }
 
 int

Reply via email to