[syslinux:elflink] graphics: make use of syslinux_force_text_mode( )

syslinux-bot for Paulo Alcantara pcacjr at zytor.com
Sat May 19 00:33:07 PDT 2012


Commit-ID:  4fc3fd1e14f4c1b9208ef262e5b6aef853e9fce4
Gitweb:     http://www.syslinux.org/commit/4fc3fd1e14f4c1b9208ef262e5b6aef853e9fce4
Author:     Paulo Alcantara <pcacjr at zytor.com>
AuthorDate: Sat, 19 May 2012 01:58:03 -0300
Committer:  Paulo Alcantara <pcacjr at zytor.com>
CommitDate: Sat, 19 May 2012 02:05:38 -0300

graphics: make use of syslinux_force_text_mode()

The syslinux_force_text_mode() function used in library
space made unnecessary INT 0x22 call that could be simply
used with vgaclearmode() function.

This patche renames vgaclearmode() to
syslinux_force_text_mode() as this naming is generally more
carefully considered and gets rid of "forcetext.c" source
file.

Also all the VGA-related functions and variables that were
exported in core/include/bios.h have been moved out to
core/include/graphics.h which makes more sense actually.

Signed-off-by: Paulo Alcantara <pcacjr at zytor.com>

---
 com32/lib/Makefile                   |    3 +-
 com32/lib/syslinux/load_linux.c      |   10 +++++---
 com32/lib/syslinux/video/forcetext.c |   42 ----------------------------------
 core/comboot.inc                     |    2 +-
 core/conio.c                         |    7 +++--
 core/diskfs.inc                      |    4 +-
 core/extern.inc                      |    2 +-
 core/font.c                          |    6 ++--
 core/graphics.c                      |    6 +++-
 core/include/bios.h                  |   15 ------------
 core/include/graphics.h              |   19 +++++++++++++++
 core/localboot.c                     |    3 +-
 core/plaincon.c                      |   12 +++++----
 core/rawcon.c                        |    4 ++-
 14 files changed, 53 insertions(+), 82 deletions(-)

diff --git a/com32/lib/Makefile b/com32/lib/Makefile
index 8e6a73a..a0ddb9d 100644
--- a/com32/lib/Makefile
+++ b/com32/lib/Makefile
@@ -49,8 +49,7 @@ LIBSYSLINUX_OBJS = \
 	syslinux/features.o syslinux/config.o	\
 	syslinux/dsinfo.o syslinux/version.o	\
 	syslinux/pxe_get_cached.o syslinux/pxe_get_nic.o		\
-	syslinux/video/fontquery.o syslinux/video/forcetext.o		\
-	syslinux/video/reportmode.o
+	syslinux/video/fontquery.o syslinux/video/reportmode.o
 
 LIBLOAD_OBJS = \
 	syslinux/addlist.o syslinux/freelist.o syslinux/memmap.o	\
diff --git a/com32/lib/syslinux/load_linux.c b/com32/lib/syslinux/load_linux.c
index e5fd333..1c0c19e 100644
--- a/com32/lib/syslinux/load_linux.c
+++ b/com32/lib/syslinux/load_linux.c
@@ -39,11 +39,13 @@
 #include <string.h>
 #include <minmax.h>
 #include <suffix_number.h>
+#include <graphics.h>
+#include <dprintf.h>
+
 #include <syslinux/align.h>
 #include <syslinux/linux.h>
 #include <syslinux/bootrm.h>
 #include <syslinux/movebits.h>
-#include <dprintf.h>
 
 struct linux_header {
     uint8_t boot_sector_1[0x0020];
@@ -471,10 +473,10 @@ int syslinux_boot_linux(void *kernel_buf, size_t kernel_size,
 	 * video_mode is not "current", so if we are in graphics mode we
 	 * need to revert to text mode...
 	 */
-	dprintf("*** Calling vgaclearmode()...\n");
-	vgaclearmode();
+	dprintf("*** Calling syslinux_force_text_mode()...\n");
+	syslinux_force_text_mode();
     } else {
-	dprintf("*** vga=current, not calling vgaclearmode()...\n");
+	dprintf("*** vga=current, not calling syslinux_force_text_mode()...\n");
     }
 
     syslinux_shuffle_boot_rm(fraglist, mmap, 0, &regs);
diff --git a/com32/lib/syslinux/video/forcetext.c b/com32/lib/syslinux/video/forcetext.c
deleted file mode 100644
index 136cb27..0000000
--- a/com32/lib/syslinux/video/forcetext.c
+++ /dev/null
@@ -1,42 +0,0 @@
-/* ----------------------------------------------------------------------- *
- *
- *   Copyright 2007-2008 H. Peter Anvin - All Rights Reserved
- *   Copyright 2009 Intel Corporation; author: H. Peter Anvin
- *
- *   Permission is hereby granted, free of charge, to any person
- *   obtaining a copy of this software and associated documentation
- *   files (the "Software"), to deal in the Software without
- *   restriction, including without limitation the rights to use,
- *   copy, modify, merge, publish, distribute, sublicense, and/or
- *   sell copies of the Software, and to permit persons to whom
- *   the Software is furnished to do so, subject to the following
- *   conditions:
- *
- *   The above copyright notice and this permission notice shall
- *   be included in all copies or substantial portions of the Software.
- *
- *   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- *   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *   OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *   NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *   HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- *   WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *   FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *   OTHER DEALINGS IN THE SOFTWARE.
- *
- * ----------------------------------------------------------------------- */
-
-/*
- * syslinux/video/forcetext.c
- */
-
-#include <syslinux/video.h>
-#include <com32.h>
-
-void syslinux_force_text_mode(void)
-{
-    static com32sys_t ireg;
-
-    ireg.eax.w[0] = 0x0005;
-    __intcall(0x22, &ireg, NULL);
-}
diff --git a/core/comboot.inc b/core/comboot.inc
index 83f0c03..1e19d28 100644
--- a/core/comboot.inc
+++ b/core/comboot.inc
@@ -429,7 +429,7 @@ comapi_run_default:
 ; Puts the video in standard text mode
 ;
 comapi_textmode:
-		pm_call vgaclearmode
+		pm_call syslinux_force_text_mode
 		clc
 		ret
 
diff --git a/core/conio.c b/core/conio.c
index dd18ecf..421dabf 100644
--- a/core/conio.c
+++ b/core/conio.c
@@ -24,12 +24,13 @@
 #include <stddef.h>
 #include <stdio.h>
 #include <string.h>
-
 #include <fs.h>
-#include "bios.h"
 #include <com32.h>
 #include <sys/cpu.h>
 
+#include "bios.h"
+#include "graphics.h"
+
 union screen _cursor;
 union screen _screensize;
 
@@ -434,7 +435,7 @@ static void msg_formfeed(void)
 
 static void msg_novga(void)
 {
-	vgaclearmode();
+	syslinux_force_text_mode();
 	msg_initvars();
 }
 
diff --git a/core/diskfs.inc b/core/diskfs.inc
index f62d80e..02382cc 100644
--- a/core/diskfs.inc
+++ b/core/diskfs.inc
@@ -151,11 +151,11 @@ kaboom2:
 		cmp byte [kaboom.again+1],18h	; INT 18h version?
 		je .int18
 		pm_call pm_getchar
-		pm_call vgaclearmode
+		pm_call syslinux_force_text_mode
 		int 19h			; And try once more to boot...
 .norge:		jmp short .norge	; If int 19h returned; this is the end
 .int18:
-		pm_call vgaclearmode
+		pm_call syslinux_force_text_mode
 		int 18h
 .noreg:		jmp short .noreg	; Nynorsk
 
diff --git a/core/extern.inc b/core/extern.inc
index f6ec0ae..3cde286 100644
--- a/core/extern.inc
+++ b/core/extern.inc
@@ -64,7 +64,7 @@
 	extern pm_writehex2, pm_writehex4, pm_writehex8
 
 	; graphics.c
-	extern vgaclearmode, vgashowcursor, vgahidecursor, pm_using_vga
+	extern syslinux_force_text_mode, vgashowcursor, vgahidecursor, pm_using_vga
 
 	; conio.c
 	extern pm_pollchar, pm_write_serial, pm_serialcfg
diff --git a/core/font.c b/core/font.c
index 1fcbbe8..3533d80 100644
--- a/core/font.c
+++ b/core/font.c
@@ -21,13 +21,14 @@
 #include <sys/io.h>
 #include <stdio.h>
 #include <fs.h>
+
 #include "bios.h"
+#include "graphics.h"
 #include "core.h"
 
 char fontbuf[8192];
 char serial[serial_buf_size];
 
-extern uint16_t VGAFontSize;
 extern uint8_t UserFont;
 
 uint16_t GXPixCols = 1;		/* Graphics mode pixel columns */
@@ -107,10 +108,9 @@ void use_font(void)
 	com32sys_t ireg, oreg;
 	uint8_t bytes = VGAFontSize;
 
-
 	/* Nonstandard mode? */
 	if (UsingVGA & ~0x3)
-		vgaclearmode();
+		syslinux_force_text_mode();
 
 	memset(&ireg, 0, sizeof(ireg));
 
diff --git a/core/graphics.c b/core/graphics.c
index 080efa1..bdf48a8 100644
--- a/core/graphics.c
+++ b/core/graphics.c
@@ -21,7 +21,9 @@
 #include <sys/io.h>
 #include <hw/vga.h>
 #include "fs.h"
+
 #include "bios.h"
+#include "graphics.h"
 
 uint8_t UsingVGA = 0;
 uint16_t VGAPos;		/* Pointer into VGA memory */
@@ -238,7 +240,7 @@ void vgadisplayfile(FILE *_fd)
 	 * This is a cheap and easy way to make sure the screen is
 	 * cleared in case we were in graphics mode aready.
 	 */
-	vgaclearmode();
+	syslinux_force_text_mode();
 	vgasetmode();
 
 	size = 4+2*2+16*3;
@@ -302,7 +304,7 @@ void vgadisplayfile(FILE *_fd)
 /*
  * Disable VGA graphics.
  */
-void vgaclearmode(void)
+void syslinux_force_text_mode(void)
 {
 	com32sys_t ireg, oreg;
 
diff --git a/core/include/bios.h b/core/include/bios.h
index 2b4b029..4bf6bc4 100644
--- a/core/include/bios.h
+++ b/core/include/bios.h
@@ -78,21 +78,6 @@ extern uint16_t VGAFontSize;
 extern void use_font(void);
 extern void bios_adjust_screen(void);
 
-/* graphics.c */
-#ifdef IS_SYSLINUX
-#define VGA_FILE_BUF_SIZE	(FILENAME_MAX + 2)
-#else
-#define VGA_FILE_BUF_SIZE	FILENAME_MAX
-#endif
-
-extern uint8_t UsingVGA;
-extern uint16_t VGAPos;
-extern uint16_t *VGAFilePtr;
-extern char VGAFileBuf[VGA_FILE_BUF_SIZE];
-extern char VGAFileMBuf[];
-extern void vgaclearmode(void);
-extern void vgadisplayfile(FILE *fd);
-
 /* serirq.c */
 extern char *SerialHead;
 extern char *SerialTail;
diff --git a/core/include/graphics.h b/core/include/graphics.h
index 0e4e005..897103e 100644
--- a/core/include/graphics.h
+++ b/core/include/graphics.h
@@ -28,6 +28,25 @@
 #ifndef GRAPHICS_H_
 #define GRAPHICS_H_
 
+#include <stddef.h>
+
+#include "core.h"
+#include "fs.h"
+
+#ifdef IS_SYSLINUX
+#define VGA_FILE_BUF_SIZE	(FILENAME_MAX + 2)
+#else
+#define VGA_FILE_BUF_SIZE	FILENAME_MAX
+#endif
+
+extern uint8_t UsingVGA;
+extern uint16_t VGAPos;
+extern uint16_t *VGAFilePtr;
+extern char VGAFileBuf[VGA_FILE_BUF_SIZE];
+extern char VGAFileMBuf[];
+
+extern void syslinux_force_text_mode(void);
+extern void vgadisplayfile(FILE *_fd);
 extern void using_vga(uint8_t vga, uint16_t pix_cols, uint16_t pix_rows);
 
 static inline void graphics_using_vga(uint8_t vga, uint16_t pix_cols,
diff --git a/core/localboot.c b/core/localboot.c
index 0104047..03ac866 100644
--- a/core/localboot.c
+++ b/core/localboot.c
@@ -16,6 +16,7 @@
 #include <core.h>
 #include <fs.h>
 #include <bios.h>
+#include <graphics.h>
 
 /*
  * localboot.c
@@ -38,7 +39,7 @@ void local_boot(int16_t ax)
 	com32sys_t ireg, oreg;
 	int i;
 
-	vgaclearmode();
+	syslinux_force_text_mode();
 
 	writestr(LOCALBOOT_MSG);
 	crlf();
diff --git a/core/plaincon.c b/core/plaincon.c
index a12d551..dfeb978 100644
--- a/core/plaincon.c
+++ b/core/plaincon.c
@@ -1,12 +1,14 @@
-/*
- * writechr:	Write a single character in AL to the console without
- *		mangling any registers; handle video pages correctly.
- */
 #include <sys/io.h>
 #include <fs.h>
 #include <com32.h>
+
 #include "bios.h"
+#include "graphics.h"
 
+/*
+ * Write a single character in AL to the console without
+ * mangling any registers; handle video pages correctly.
+ */
 void writechr(char data)
 {
 	com32sys_t ireg, oreg;
@@ -14,7 +16,7 @@ void writechr(char data)
 	write_serial(data);	/* write to serial port if needed */
 
 	if (UsingVGA & 0x8)
-		vgaclearmode();
+		syslinux_force_text_mode();
 
 	if (!(DisplayCon & 0x1))
 		return;
diff --git a/core/rawcon.c b/core/rawcon.c
index d28113b..1a52c95 100644
--- a/core/rawcon.c
+++ b/core/rawcon.c
@@ -6,12 +6,14 @@
 #include <sys/io.h>
 #include <fs.h>
 #include <com32.h>
+
 #include "bios.h"
+#include "graphics.h"
 
 void writechr(char data)
 {
 	if (UsingVGA & 0x08)
-		vgaclearmode();
+		syslinux_force_text_mode();
 
 	write_serial(data);	/* write to serial port if needed */
 


More information about the Syslinux-commits mailing list