[SeaBIOS] [PATCH 8/6] sercon: add text modes != 3

Gerd Hoffmann kraxel at redhat.com
Mon Sep 11 13:18:16 CEST 2017


---
 src/sercon.c    | 11 ++++++++++-
 src/romlayout.S | 12 +++++++-----
 2 files changed, 17 insertions(+), 6 deletions(-)

diff --git a/src/sercon.c b/src/sercon.c
index 9c49a2fc4c..7d38afb816 100644
--- a/src/sercon.c
+++ b/src/sercon.c
@@ -313,11 +313,20 @@ static void sercon_1000(struct bregs *regs)
 
     if (!sercon_splitmode()) {
         switch (mode) {
+        case 0x00:
+        case 0x01:
+            cols = 40;
+            rows = 25;
+            regs->al = 0x30;
+            break;
+        case 0x02:
         case 0x03:
+        case 0x07:
         default:
             cols = 80;
             rows = 25;
             regs->al = 0x30;
+            break;
         }
         cursor_pos_set(0, 0);
         SET_BDA(video_mode, mode);
@@ -328,7 +337,7 @@ static void sercon_1000(struct bregs *regs)
         /* let vgabios handle mode init */
     }
 
-    SET_LOW(sercon_enable, (mode == 0x03));
+    SET_LOW(sercon_enable, (mode <= 0x03) || (mode == 0x07));
     SET_LOW(sercon_col_last, 0);
     SET_LOW(sercon_row_last, 0);
     SET_LOW(sercon_attr_last, 0);
diff --git a/src/romlayout.S b/src/romlayout.S
index 911a416d7f..2ef857103e 100644
--- a/src/romlayout.S
+++ b/src/romlayout.S
@@ -434,7 +434,7 @@ entry_sercon:
         pushl $1f
         retl
 1:      cmpl %esp, %eax
-        jne 4f
+        jne 5f
         cmpb $0, sercon_enable  // Test that sercon is enabled
         je 3f
 
@@ -449,15 +449,17 @@ entry_sercon:
 
         // sercon disabled - verify not 0x03 modeset and otherwise exit
 3:      popl %eax
+        cmpw $0x0007, %ax
+        je 4f
         cmpw $0x0003, %ax
-        jne 5f
-        pushl %eax
+        jg 6f
+4:      pushl %eax
         jmp 2b
 
         // Running on broken x86emu - restore stack and exit
-4:      movl %eax, %esp
+5:      movl %eax, %esp
         popl %eax
-5:      popw %ds
+6:      popw %ds
         iretw
 
 
-- 
2.9.3




More information about the SeaBIOS mailing list