#FIXME: we want vga_* etc. in man page specs; can we do that?
Package-Name: svgalib
Homepage: http://www.svgalib.org/
Source: http://www.svgalib.org//(svgalib-\d+\.\d+(\.\d+)?\.tar\.gz)/[\0-\377]*?svgalib-(\d+.\d+(.\d+)?).tar.gz $1
Zap-Before-Install: 1
Repack:
	tar xzvfp "$(SOURCE)"
Compile:
	mkdir -p "$(PREFIX)"/{bin,etc,include,lib,man}
# Avoid problems with overwriting shared libraries
	rm -f "$(PREFIX)"/lib/*.so*
	$(MAKE) install demoprogs \
		prefix="$(PREFIX)" \
		datadir="$(PREFIX)/etc" \
		OPTIMIZE="-O3 -fno-strict-aliasing $(GCC_OPT_FLAGS)" \
		LDFLAGS="-L\"$(PREFIX)/lib\"" \
		MANFORMAT=uncompressed
	rm -rf "$(PREFIX)"/{demos,threeDKit}
	mkdir -p "$(PREFIX)"/{demos,threeDKit}
	set -e ; for i in demos threeDKit ; do \
		cp -p `find $$i -type f -perm +100` "$(PREFIX)/$$i/" ; \
	done
	strip "$(PREFIX)"/{demos,threeDKit}/*
	cp -p demos/*.{c,h,bmp,xbm,pp} "$(PREFIX)/demos/"
	cp -p threeDKit/{0-*,*.[ch],*.bmp} "$(PREFIX)/threeDKit/"
	mkdir -p "$(PREFIX)/doc"
	cp -p doc/[0-Z]* "$(PREFIX)/doc/"
	cp -p lrmi-*/README "$(PREFIX)/doc/README.lrmi"
Install:
	test -d /etc/vga || ln -s "$(PREFIX)/etc" /etc/vga
	$(MAKE) instbin BIN="dumpreg mode3 restorefont restorepalette restoretextmode savetextmode svgakeymap textmode"
	$(MAKE) instlib LIB="vga vgagl"
	$(MAKE) addldso
	$(MAKE) instetc DEST=vga ETC="*"
	$(MAKE) instinc INC="vga.h vgagl.h vgajoystick.h vgakeyboard.h vgamouse.h"
	$(MAKE) instman SECTION=1 MAN="dumpreg restorefont restorepalette restoretextmode savetextmode svgakeymap textmode"
	$(MAKE) instman SECTION=3 MAN="currentcontext gl_allocatecontext gl_bcircle gl_circle gl_clearscreen gl_colorfont gl_compileboxmask gl_compiledboxmasksize gl_copybox gl_copyboxfromcontext gl_copyboxtocontext gl_copyscreen gl_disableclipping gl_enableclipping gl_enablepageflipping gl_expandfont gl_fillbox gl_fillcircle gl_font8x8 gl_freecontext gl_getbox gl_getcontext gl_getpalette gl_getpalettecolor gl_getpalettecolors gl_getpixel gl_getpixelrgb gl_hline gl_line gl_printf gl_putbox gl_putboxmask gl_putboxmaskcompiled gl_putboxpart gl_rgbcolor gl_scalebox gl_setclippingwindow gl_setcontext gl_setcontextheight gl_setcontextvga gl_setcontextvgavirtual gl_setcontextvirtual gl_setcontextwidth gl_setdisplaystart gl_setfont gl_setfontcolors gl_setpalette gl_setpalettecolor gl_setpalettecolors gl_setpixel gl_setpixelrgb gl_setrgbpalette gl_setscreenoffset gl_setwritemode gl_striangle gl_swtriangle gl_triangle gl_trigetcolorlookup gl_trisetcolorlookup gl_trisetdrawpoint gl_write gl_writen gl_wtriangle graph_mem joystick_button1 joystick_button2 joystick_button3 joystick_button4 joystick_close joystick_getaxis joystick_getb1 joystick_getb2 joystick_getb3 joystick_getb4 joystick_getbutton joystick_getnumaxes joystick_getnumbuttons joystick_getx joystick_gety joystick_getz joystick_init joystick_setdefaulthandler joystick_sethandler joystick_update joystick_x joystick_y joystick_z keyboard_clearstate keyboard_close keyboard_getstate keyboard_init keyboard_init_return_fd keyboard_keypressed keyboard_setdefaulteventhandler keyboard_seteventhandler keyboard_translatekeys keyboard_update keyboard_waitforupdate mouse_close mouse_getbutton mouse_getcaps mouse_getposition_6d mouse_getx mouse_gety mouse_init mouse_init_return_fd mouse_setdefaulteventhandler mouse_seteventhandler mouse_setposition mouse_setposition_6d mouse_setrange_6d mouse_setscale mouse_setwrap mouse_setxrange mouse_setyrange mouse_update mouse_waitforupdate vga_accel vga_addmode vga_addtiming vga_bitblt vga_blitwait vga_changetiming vga_claimvideomemory vga_clear vga_copytoplanar16 vga_copytoplanar256 vga_copytoplane vga_disabledriverreport vga_drawline vga_drawpixel vga_drawscanline vga_drawscansegment vga_dumpregs vga_ext_set vga_fillblt vga_flip vga_getch vga_getcolors vga_getcurrentchipset vga_getcurrentmode vga_getcurrenttiming vga_getdefaultmode vga_getgraphmem vga_getkey vga_getmodeinfo vga_getmodename vga_getmodenumber vga_getmonitortype vga_getmousetype vga_getpalette vga_getpalvec vga_getpixel vga_getscansegment vga_gettextfont vga_gettextmoderegs vga_getxdim vga_getydim vga_guesstiming vga_hasmode vga_hlinelistblt vga_imageblt vga_init vga_lastmodenumber vga_lockvc vga_oktowrite vga_puttextfont vga_runinbackground vga_runinbackground_version vga_safety_fork vga_screenoff vga_screenon vga_setchipset vga_setchipsetandfeatures vga_setcolor vga_setdisplaystart vga_setegacolor vga_setflipchar vga_setlinearaddressing vga_setlogicalwidth vga_setmode vga_setmodeX vga_setmousesupport vga_setpage vga_setpalette vga_setpalvec vga_setreadpage vga_setrgbcolor vga_settextmoderegs vga_setwritepage vga_unlockvc vga_waitevent vga_waitretrace vga_white"
	$(MAKE) instman SECTION=5 MAN="libvga.config libvga.et4000 svgalibrc"
	$(MAKE) instman SECTION=7 MAN="svgalib svgalib.chips svgalib.et4000 svgalib.faq svgalib.mach32 threedkit vgagl"
	$(MAKE) instman SECTION=8 MAN=mode3
Clean:
	@set -e ; cd "$(PREFIX)"/lib ; \
	for lib in *.so.[0-9] ; do \
		reallib=`/bin/ls -l "$$lib" | sed 's/.* -> //'` ; \
		for file in $$lib.[0-9]*.[0-9]* ; do \
			if test "$$file" != "$$reallib" ; then \
				rm -fv "$$file" ; \
			fi ; \
		done ; \
	done
Patch: <<EOT
######## begin GCC 4.0 fix
--- ../svgalib-1.4.3-orig/./demos/lineart.c	2000-02-19 18:12:52 +0900
+++ ./demos/lineart.c	2006-02-23 16:48:36 +0900
@@ -19,8 +19,8 @@
   
   if(mode == 0)
     {
-      printf("Usage:linp [mode mode ...]\n
-              where mode is an integer.\n");
+      printf("Usage:linp [mode mode ...]\n"
+             "where mode is an integer.\n");
       return;
     }
   if(! vga_hasmode(mode)) {
--- ../svgalib-1.4.3-orig/./gl/driver.c	1999-07-18 17:18:44 +0900
+++ ./gl/driver.c	2006-02-23 16:46:57 +0900
@@ -38,10 +38,10 @@
 	    ((c >> 8) & 0xff) << 8 |
 	    ((c >> 16) & 0xff) << 0;
 #else
-	asm("rorw  $8, %0\n"	/* 0RGB -> 0RBG */
-	    "rorl $16, %0\n"	/* 0RBG -> BG0R */
-	    "rorw  $8, %0\n"	/* BG0R -> BGR0 */
-	    "shrl  $8, %0\n"	/* 0BGR -> 0BGR */
+	asm("rorw  $8, %%cx\n"	/* 0RGB -> 0RBG */
+	    "rorl $16, %%ecx\n"	/* 0RBG -> BG0R */
+	    "rorw  $8, %%cx\n"	/* BG0R -> BGR0 */
+	    "shrl  $8, %%ecx\n"	/* 0BGR -> 0BGR */
       : "=q"(c):"0"(c));
 #endif
     return c;
--- ../svgalib-1.4.3-orig/./gl/inlstring.h	1999-09-21 03:45:31 +0900
+++ ./gl/inlstring.h	2006-02-23 16:43:19 +0900
@@ -98,7 +98,7 @@
 	       "cmpl $12,%%edx\n\t"
 	       "jl 1f\n\t"	/* if (count >= 12) */
 
-	       "movzbl %%al,%%ax\n\t"
+	       "movzbl %%al,%%eax\n\t"
 	       "movl %%eax,%%ecx\n\t"
 	       "shll $8,%%ecx\n\t"	/* c |= c << 8 */
 	       "orl %%ecx,%%eax\n\t"
--- ../svgalib-1.4.3-orig/./src/apm.c	2000-10-12 01:35:18 +0900
+++ ./src/apm.c	2006-02-23 16:36:24 +0900
@@ -151,12 +151,12 @@
    regs[APMREG_SAVE(15)] = (k >> 8)&0xff;
    regs[APMREG_SAVE(16)] = (k >> 16) & 0xff ;
    regs[APMREG_SAVE(17)] = ( k >> 24 ) & 0xff ;
-   (unsigned long)regs[APMREG_SAVE(18)] = inlXR(0xf0) ;
-   (unsigned long)regs[APMREG_SAVE(22)] = inlXR(0xf4) ;
-   (unsigned long)regs[APMREG_SAVE(26)] = inlXR(0x140) ;
-   (unsigned short)regs[APMREG_SAVE(30)] = inlXR(0x144) ;
-   (unsigned long)regs[APMREG_SAVE(32)] = inXR(0x148) ;
-   (unsigned short)regs[APMREG_SAVE(36)] = inXR(0x14c) ;
+   *(unsigned long *)&regs[APMREG_SAVE(18)] = inlXR(0xf0) ;
+   *(unsigned long *)&regs[APMREG_SAVE(22)] = inlXR(0xf4) ;
+   *(unsigned long *)&regs[APMREG_SAVE(26)] = inlXR(0x140) ;
+   *(unsigned short *)&regs[APMREG_SAVE(30)] = inlXR(0x144) ;
+   *(unsigned long *)&regs[APMREG_SAVE(32)] = inXR(0x148) ;
+   *(unsigned short *)&regs[APMREG_SAVE(36)] = inXR(0x14c) ;
 
     return APM_TOTAL_REGS - VGA_TOTAL_REGS;
 }
--- ../svgalib-1.4.3-orig/./src/keyboard/keyboard.c	2000-10-08 21:37:40 +0900
+++ ./src/keyboard/keyboard.c	2006-02-23 16:39:46 +0900
@@ -768,7 +768,8 @@
         usekeymap = 0;
 
         /* Initialize keymap */
-        for (i = 0; i < NR_KEYS; keymap[i++] = i);
+        for (i = 0; i < NR_KEYS; i++)
+            keymap[i] = i;
 
         while(!feof(keymapfile)) {
             /* Read */
--- ../svgalib-1.4.3-orig/./src/mach32.c	1999-09-30 01:52:14 +0900
+++ ./src/mach32.c	2006-02-23 16:36:24 +0900
@@ -1544,7 +1544,7 @@
 		goto writerr;
 	    printf("mach32: Notice: new EEPROM file >%s< succesful created.\n",
 		   eeprom_fname);
-	  finish_w_eeprom:
+	  finish_w_eeprom:;
 	}
 	/* Change eeprom contents if requested: */
 	if (!(eeprom_option & EEPROM_USE_MEMCFG))
--- ../svgalib-1.4.3-orig/./src/s3.c	2000-05-03 21:23:57 +0900
+++ ./src/s3.c	2006-02-23 16:36:24 +0900
@@ -474,7 +474,7 @@
 	    dac_used->restoreState(regs);
 	    return old_values;
 	}
-    default:
+    default:;
     }
     return 0;
 }
--- ../svgalib-1.4.3-orig/./src/vga.c	2006-02-23 16:36:06 +0900
+++ ./src/vga.c	2006-02-23 16:36:24 +0900
@@ -3931,7 +3931,7 @@
 
 #define ML_GETINT(x) \
 	ptr = strtok(NULL, " "); if(!ptr) break; \
-	mmt.##x = atoi(ptr);
+	mmt.x = atoi(ptr);
 
 	    ML_GETINT(HDisplay);
 	    ML_GETINT(HSyncStart);
--- ../svgalib-1.4.3-orig/./src/vgabg.h	1999-07-28 01:36:19 +0900
+++ ./src/vgabg.h	2006-02-23 16:38:46 +0900
@@ -27,7 +27,9 @@
 
 /* Linear video memory things */
 
+#ifdef BACKGROUND
 extern void *__svgalib_linearframebuffer;
+#endif
 extern void *__svgalib_physaddr;
 extern unsigned char *__svgalib_graph_mem_linear_orginal;
 extern unsigned char *__svgalib_graph_mem_linear_check;
--- ../svgalib-1.4.3-orig/./src/vgapix.c	1999-07-28 01:36:19 +0900
+++ ./src/vgapix.c	2006-02-23 16:47:03 +0900
@@ -31,10 +31,10 @@
 	    ((c >> 8) & 0xff) << 8 |
 	    ((c >> 16) & 0xff) << 0;
 #else
-	asm("rorw  $8, %0\n"	/* 0RGB -> 0RBG */
-	    "rorl $16, %0\n"	/* 0RBG -> BG0R */
-	    "rorw  $8, %0\n"	/* BG0R -> BGR0 */
-	    "shrl  $8, %0\n"	/* 0BGR -> 0BGR */
+	asm("rorw  $8, %%cx\n"	/* 0RGB -> 0RBG */
+	    "rorl $16, %%ecx\n"	/* 0RBG -> BG0R */
+	    "rorw  $8, %%cx\n"	/* BG0R -> BGR0 */
+	    "shrl  $8, %%ecx\n"	/* 0BGR -> 0BGR */
       : "=q"(c):"0"(c));
 #endif
     return c;
######## end GCC 4.0 fix
######## begin "mmap error rrr" patch (for when mmap() returns high addresses)
--- src/vga.c.old	2001-05-29 23:37:55 +0900
+++ src/vga.c	2004-10-27 16:13:24 +0900
@@ -1953,7 +1953,7 @@
     };
     __vga_mmap();
 
-    if ((long) GM < 0) {
+    if ((long) GM == -1) {
 	printf("svgalib: mmap error rrr\n");
 	exit(1);
     }
######## end "mmap error rrr" patch
######## begin utils/ make depend failure fix
--- utils/Makefile.old	1999-07-22 01:41:18 +0900
+++ utils/Makefile	2004-08-20 20:17:32 +0900
@@ -56,7 +56,7 @@
 	$(INSTALLPROG) $(UTILPROGS) $(UTILINSTALLDIR)
 
 .depend:
-	gcc -MM $(patsubst %.o,$(srcdir)/utils/%.c,$(OBJECTS)) >.depend
+	gcc -MM -I../include $(patsubst %.o,$(srcdir)/utils/%.c,$(OBJECTS)) >.depend
 
 #
 # include a dependency file if one exists
######## end utils/ make depend failure fix
diff -urN ../svgalib-1.4.3-orig/Makefile.cfg ./Makefile.cfg
--- ../svgalib-1.4.3-orig/Makefile.cfg	2001-05-29 23:39:13 +0900
+++ Makefile.cfg	2003-09-01 18:36:50 +0900
@@ -25,7 +25,7 @@
 # Common prefix for installation directories.
 # NOTE: This directory must exist when you start the install.
 TOPDIR=
-prefix = $(TOPDIR)/usr/local
+prefix = $(TOPDIR)$(PREFIX)
 exec_prefix = $(prefix)
 
 # Directory where the shared stubs and static library will be installed.
@@ -38,7 +38,7 @@
 bindir = $(exec_prefix)/bin
 
 # Directory where the run-time configuration files will be installed.
-datadir = $(TOPDIR)/etc/vga
+datadir = $(prefix)/etc
 
 # Directory where the header files will be installed.
 includedir = $(prefix)/include
@@ -82,7 +82,7 @@
 # BACKGROUND = y
 
 # Uncomment this if you want to compile and install the static libs.
-# INSTALLSTATICLIB = installstaticlib
+INSTALLSTATICLIB = installstaticlib
 
 # Comment this out if you don't want to install the shared libs.
 # If you do not install the shared nor the static libs, 'make static'
@@ -94,7 +94,7 @@
 # a.out image is available install it in the first directory named something
 # like *aout/ in /etc/ld.so.conf.
 # If you want this, do not comment out the next line:
-INSTALLAOUTLIB = installaoutcompat
+# INSTALLAOUTLIB = installaoutcompat
 
 # Comment this out if you want to keep old shared images. Old header files,
 # library stubs and static libraries CANNOT be kept in public locations
@@ -181,7 +181,7 @@
 INCLUDE_NEO_DRIVER_TEST = y
 INCLUDE_G400_DRIVER_TEST = y
 INCLUDE_R128_DRIVER_TEST = y
-#INCLUDE_FBDEV_DRIVER_TEST = y
+INCLUDE_FBDEV_DRIVER_TEST = y
 INCLUDE_SAVAGE_DRIVER_TEST = y
 
 #Might be too dangerous:
--- Makefile.old	2001-04-19 02:35:51 +0900
+++ Makefile	2004-08-28 02:35:34 +0900
@@ -56,27 +56,27 @@
 UTILS	= restorefont runx restorepalette restoretextmode textmode \
 	  savetextmode dumpreg fix132x43
 
-OBSOLETEHDIRS = /usr/include/ /usr/include/vga/ /usr/local/include/ /usr/local/include/vga/
-OBSOLETEBDIRS = /usr/bin/ /usr/local/bin/
+#OBSOLETEHDIRS = /usr/include/ /usr/include/vga/ /usr/local/include/ /usr/local/include/vga/
+#OBSOLETEBDIRS = /usr/bin/ /usr/local/bin/
 
-OBSOLETEHEADERS = /inc/vga.h /inc/vgakeyboard.h /inc/vgamouse.h /inc/vgagl.h /inc/vgajoystick.h
+#OBSOLETEHEADERS = /inc/vga.h /inc/vgakeyboard.h /inc/vgamouse.h /inc/vgagl.h /inc/vgajoystick.h
 
-OBSOLETELIBLINKS = /lib/libvga.so /lib/libvga.so.1 /lib/libvgagl.so /lib/libvgagl.so.1
+#OBSOLETELIBLINKS = /lib/libvga.so /lib/libvga.so.1 /lib/libvgagl.so /lib/libvgagl.so.1
 
-OBSOLETESHAREDIMAGES = /lib/libvgagl.so.* /lib/libvga.so.*
+#OBSOLETESHAREDIMAGES = /lib/libvgagl.so.* /lib/libvga.so.*
 
 ifeq (a.out, $(TARGET_FORMAT))
-	OBSOLETELDIRS = /lib/ /usr/lib/ /usr/local/lib/ /usr/share/lib/ \
-			$(shell sed 's?\#.*$$??' /etc/ld.so.conf 2>/dev/null | \
-			  sed 's?\([^/]\)[ 	]*$$?\1/ ?' )
+#	OBSOLETELDIRS = /lib/ /usr/lib/ /usr/local/lib/ /usr/share/lib/ \
+#			$(shell sed 's?\#.*$$??' /etc/ld.so.conf 2>/dev/null | \
+#			  sed 's?\([^/]\)[ 	]*$$?\1/ ?' )
 	SHAREDLIBS = sharedlib/libvga.so.$(VERSION)
 	SVGALIBSHAREDSTUBS = sharedlib/libvga.sa sharedlib/libvgagl.sa
 	JUMP = jump
 else	
-	OBSOLETELDIRS = /lib/ /usr/lib/ /usr/local/lib/ /usr/share/lib/ \
-			$(shell sed 's?\#.*$$??' /etc/ld.so.conf 2>/dev/null | \
-			  sed 's?\([^/]\)[ 	]*$$?\1/ ?' | grep -v aout/ )
-
+#	OBSOLETELDIRS = /lib/ /usr/lib/ /usr/local/lib/ /usr/share/lib/ \
+#			$(shell sed 's?\#.*$$??' /etc/ld.so.conf 2>/dev/null | \
+#			  sed 's?\([^/]\)[ 	]*$$?\1/ ?' | grep -v aout/ )
+#
 	SHAREDAOUTLIBS = sharedlib/libvga.so.$(VERSION)
 	SVGALIBSHAREDAOUTSTUBS = sharedlib/libvga.sa sharedlib/libvgagl.sa
 	SHAREDLIBS = sharedlib/libvga.so.$(VERSION) sharedlib/libvgagl.so.$(VERSION)
@@ -139,12 +139,12 @@
 		echo Old stubs in /usr/lib removed.; \
 	fi
 	@rm -f $(OBSOLETESHAREDIMAGES)
-ifndef KEEPSHAREDLIBS
-	@echo "Removing shared library images (old & current)..."
-	@for i in $(OBSOLETELDIRS); do \
-	    rm -f `echo $(OBSOLETESHAREDIMAGES) | sed s?/lib/?$$i?g`; \
-         done
-endif
+#ifndef KEEPSHAREDLIBS
+#	@echo "Removing shared library images (old & current)..."
+#	@for i in $(OBSOLETELDIRS); do \
+#	    rm -f `echo $(OBSOLETESHAREDIMAGES) | sed s?/lib/?$$i?g`; \
+#         done
+#endif
 	mkdir -p $(sharedlibdir)
 	@echo Installing shared library image as \
 		$(addprefix $(sharedlibdir)/,$(notdir $(SHAREDLIBS))).
@@ -192,14 +192,14 @@
 		echo No $(bindir) directory, creating it.; \
 		mkdir $(bindir); \
 	fi
-	@if [ -f /usr/bin/restorefont ]; then \
-		echo Removing old utilities in /usr/bin.; \
-		for x in $(UTILS); do rm -f /usr/bin/$$x; done; \
-	fi
-	@if [ -f /usr/bin/convfont ]; then \
-		echo Removing inappropriate utilities in /usr/bin.; \
-		rm -f /usr/bin/convfont /usr/bin/setmclk; \
-	fi
+#	@if [ -f /usr/bin/restorefont ]; then \
+#		echo Removing old utilities in /usr/bin.; \
+#		for x in $(UTILS); do rm -f /usr/bin/$$x; done; \
+#	fi
+#	@if [ -f /usr/bin/convfont ]; then \
+#		echo Removing inappropriate utilities in /usr/bin.; \
+#		rm -f /usr/bin/convfont /usr/bin/setmclk; \
+#	fi
 	@echo Installing textmode utilities in $(bindir):
 	@echo "restorefont:      Save/restore textmode font."
 	@cp utils/restorefont $(bindir)
@@ -225,22 +225,22 @@
 		mkdir $(datadir); \
 		chmod go-w $(datadir); \
 	fi
-	@if [ \( -f /usr/local/lib/libvga.config -a ! -f $(datadir)/libvga.config \) ]; then \
-		echo "Moving old config file /usr/local/lib/libvga.config to $(datadir)." ; \
-		mv -f /usr/local/lib/libvga.config $(datadir)/libvga.config; \
-	fi
-	@if [ \( -f /usr/local/lib/libvga.et4000 -a ! -f $(datadir)/libvga.et4000 \) ]; then \
-		echo "Moving old config file /usr/local/lib/libvga.et4000 to $(datadir)." ; \
-		mv -f /usr/local/lib/libvga.et4000 $(datadir)/libvga.et4000; \
-	fi
-	@if [ \( -f /usr/local/lib/libvga.ega -a ! -f $(datadir)/libvga.ega \) ]; then \
-		echo "Moving old config file /usr/local/lib/libvga.ega to $(datadir)." ; \
-		mv -f /usr/local/lib/libvga.ega $(datadir)/libvga.ega; \
-	fi
-	@if [ \( -f /etc/mach32.eeprom -a ! -f $(datadir)/mach32.eeprom \) ]; then \
-		echo Consider moving your /etc/mach32.eeprom file to $(datadir) ; \
-		echo and changing $(datadir)/libvga.config appropriately. ; \
-	fi
+#	@if [ \( -f /usr/local/lib/libvga.config -a ! -f $(datadir)/libvga.config \) ]; then \
+#		echo "Moving old config file /usr/local/lib/libvga.config to $(datadir)." ; \
+#		mv -f /usr/local/lib/libvga.config $(datadir)/libvga.config; \
+#	fi
+#	@if [ \( -f /usr/local/lib/libvga.et4000 -a ! -f $(datadir)/libvga.et4000 \) ]; then \
+#		echo "Moving old config file /usr/local/lib/libvga.et4000 to $(datadir)." ; \
+#		mv -f /usr/local/lib/libvga.et4000 $(datadir)/libvga.et4000; \
+#	fi
+#	@if [ \( -f /usr/local/lib/libvga.ega -a ! -f $(datadir)/libvga.ega \) ]; then \
+#		echo "Moving old config file /usr/local/lib/libvga.ega to $(datadir)." ; \
+#		mv -f /usr/local/lib/libvga.ega $(datadir)/libvga.ega; \
+#	fi
+#	@if [ \( -f /etc/mach32.eeprom -a ! -f $(datadir)/mach32.eeprom \) ]; then \
+#		echo Consider moving your /etc/mach32.eeprom file to $(datadir) ; \
+#		echo and changing $(datadir)/libvga.config appropriately. ; \
+#	fi
 	@if [ ! -f $(datadir)/libvga.config ]; then \
 		echo Installing default configuration file in $(datadir).; \
 		cp $(confdir)/libvga.config $(datadir)/libvga.config; \
@@ -269,48 +269,48 @@
 	@echo demos/ and threedkit/.
 
 uninstall:
-	@echo "Removing textmode utilities..."
-	@for i in $(OBSOLETEBDIRS); do \
-          for prog in $(UTILS); do \
-            rm -f $$i$$prog ; \
-          done ; \
-         done
-	@echo "Removing shared library stubs (old & current)..."
-	@for i in $(OBSOLETELDIRS); do \
-	    rm -f `echo /lib/libvga.so.$(VERSION) /lib/libvgagl.so.$(VERSION) \
-			$(OBSOLETELIBLINKS) /lib/libvga.sa /lib/libvgagl.sa \
-		     | sed s?/lib/?$$i?g`; \
-         done
-ifndef KEEPSHAREDLIBS
-	@echo "Removing shared library images (old & current)..."
-	@for i in $(OBSOLETELDIRS); do \
-	    rm -f `echo $(OBSOLETESHAREDIMAGES) | sed s?/lib/?$$i?g`; \
-         done
-endif
-ifneq ($(INSTALLAOUTDIR), )
-	@echo "Removing shared a.out library stubs (old & current)..."
-	@for i in $(OBSOLETEAOUTDIRS); do \
-	    rm -f `echo /lib/libvga.so.$(VERSION) /lib/libvgagl.so.$(VERSION) \
-			$(OBSOLETELIBLINKS) /lib/libvga.sa /lib/libvgagl.sa \
-		     | sed s?/lib/?$$i?g`; \
-         done
-ifndef KEEPSHAREDLIBS
-	@echo "Removing shared a.out library images (old & current)..."
-	@for i in $(OBSOLETEAOUTDIRS); do \
-	    rm -f `echo $(OBSOLETESHAREDIMAGES) | sed s?/lib/?$$i?g`; \
-         done
-endif
-endif
-	@echo "Removing static libraries..."
-	@for i in $(OBSOLETELDIRS); do \
-	    rm -f `echo /lib/libvga.a /lib/libvgagl.a | sed s?/lib/?$$i?g`; \
-	done
-	@echo "Removing header files..."
-	@for i in $(OBSOLETEHDIRS); do \
-	    rm -f `echo $(OBSOLETEHEADERS) | sed s?/inc/?$$i?g`; \
-	done
-	(cd doc; $(MAKE) -f $(srcdir)/doc/Makefile srcdir="$(srcdir)" uninstall)
-	 
+#	@echo "Removing textmode utilities..."
+#	@for i in $(OBSOLETEBDIRS); do \
+#          for prog in $(UTILS); do \
+#            rm -f $$i$$prog ; \
+#          done ; \
+#         done
+#	@echo "Removing shared library stubs (old & current)..."
+#	@for i in $(OBSOLETELDIRS); do \
+#	    rm -f `echo /lib/libvga.so.$(VERSION) /lib/libvgagl.so.$(VERSION) \
+#			$(OBSOLETELIBLINKS) /lib/libvga.sa /lib/libvgagl.sa \
+#		     | sed s?/lib/?$$i?g`; \
+#         done
+#ifndef KEEPSHAREDLIBS
+#	@echo "Removing shared library images (old & current)..."
+#	@for i in $(OBSOLETELDIRS); do \
+#	    rm -f `echo $(OBSOLETESHAREDIMAGES) | sed s?/lib/?$$i?g`; \
+#         done
+#endif
+#ifneq ($(INSTALLAOUTDIR), )
+#	@echo "Removing shared a.out library stubs (old & current)..."
+#	@for i in $(OBSOLETEAOUTDIRS); do \
+#	    rm -f `echo /lib/libvga.so.$(VERSION) /lib/libvgagl.so.$(VERSION) \
+#			$(OBSOLETELIBLINKS) /lib/libvga.sa /lib/libvgagl.sa \
+#		     | sed s?/lib/?$$i?g`; \
+#         done
+#ifndef KEEPSHAREDLIBS
+#	@echo "Removing shared a.out library images (old & current)..."
+#	@for i in $(OBSOLETEAOUTDIRS); do \
+#	    rm -f `echo $(OBSOLETESHAREDIMAGES) | sed s?/lib/?$$i?g`; \
+#         done
+#endif
+#endif
+#	@echo "Removing static libraries..."
+#	@for i in $(OBSOLETELDIRS); do \
+#	    rm -f `echo /lib/libvga.a /lib/libvgagl.a | sed s?/lib/?$$i?g`; \
+#	done
+#	@echo "Removing header files..."
+#	@for i in $(OBSOLETEHDIRS); do \
+#	    rm -f `echo $(OBSOLETEHEADERS) | sed s?/inc/?$$i?g`; \
+#	done
+#	(cd doc; $(MAKE) -f $(srcdir)/doc/Makefile srcdir="$(srcdir)" uninstall)
+#	 
 
 SHAREDDIRS0 = sharedlib/mouse sharedlib/keyboard sharedlib/ramdac \
 		sharedlib/clockchip sharedlib/joystick
--- doc/Makefile.old	2000-08-06 19:29:12 +0900
+++ doc/Makefile	2004-08-28 02:28:30 +0900
@@ -65,7 +65,7 @@
 	cat $(VGAGL) | grep -v '^\.so ' | troff -man -T$@ > vgagl.$@
 	cat $(THREED) | grep -v '^\.so ' | troff -man -T$@ > 3d.$@
 
-install: gzip
+install:
 	mkdir -p $(mandir)/man1 $(mandir)/man3 $(mandir)/man5\
 		 $(mandir)/man6 $(mandir)/man7 $(mandir)/man8
 	$(INSTALL_DATA) $(srcdir)/doc/man1/* $(mandir)/man1
@@ -74,21 +74,21 @@
 	$(INSTALL_DATA) $(srcdir)/doc/man6/* $(mandir)/man6
 	$(INSTALL_DATA) $(srcdir)/doc/man7/* $(mandir)/man7
 	$(INSTALL_DATA) $(srcdir)/doc/man8/* $(mandir)/man8
-	for dir in man?; do\
-		echo gunzipping manpages in $$dir;\
-		for file in $$dir/*; do \
-			gunzip $$file; \
-		done; \
-	done
-ifdef MAKEWHATIS
-	@echo "Rebuilding the whatis database (this is slow!)"
-	@echo "You can comment this out in Makefile.cfg!"
-	$(MAKEWHATIS)
-endif
+#	for dir in man?; do\
+#		echo gunzipping manpages in $$dir;\
+#		for file in $$dir/*; do \
+#			gunzip $$file; \
+#		done; \
+#	done
+#ifdef MAKEWHATIS
+#	@echo "Rebuilding the whatis database (this is slow!)"
+#	@echo "You can comment this out in Makefile.cfg!"
+#	$(MAKEWHATIS)
+#endif
 
 uninstall:
 	@echo Removing all svgalib man pages.
-	@for dir in $(mandir) /usr/man /usr/local/man; do \
+	@for dir in $(mandir); do \
 		cd $$dir; \
 		rm -f $(MANPAGES) $(UNCOMANPAGES); \
 	done;\
diff -urN ../svgalib-1.4.3-orig/src/fbdev.c ./src/fbdev.c
--- ../svgalib-1.4.3-orig/src/fbdev.c	2000-08-28 00:16:06 +0900
+++ src/fbdev.c	2003-09-01 18:36:50 +0900
@@ -1,514 +1,493 @@
-#include <sys/types.h>
+/* Driver for Linux framebuffer
+ * Written by Andrew Church <achurch@achurch.org>
+ * Loosely based on Cirrus driver code.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <errno.h>
+#include <fcntl.h>
 #include <sys/ioctl.h>
 #include <sys/mman.h>
 #include <linux/fb.h>
-#include <linux/kd.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <stdio.h>
-#include <stdlib.h>
 
 #include "vga.h"
 #include "libvga.h"
 #include "driver.h"
 #include "timing.h"
 #include "interface.h"
+#include "vgaregs.h"
+#include "accel.h"
+
+#ifdef BACKGROUND
+# error fbdev does not work with BACKGROUND, please undefine it.
+#endif
+
+/*************************************************************************/
 
-extern unsigned char * B8000_MEM_POINTER;
+/* FD used for framebuffer device (/dev/fbN), -1 = not opened. */
+static int fb_fd = -1;
+
+/* Static information about the framebuffer device. */
+static struct fb_fix_screeninfo fb_fix;
 
-static int fbdev_fd;
-static size_t fbdev_memory;
-static size_t fbdev_startaddressrange;
 static CardSpecs *cardspecs;
-static struct console_font_op fbdev_font;
-static struct fb_var_screeninfo fbdev_textmode;
 
-/* Card Specs */
+static int fbdev_linear_flag = 0;
 
-static int fbdev_match_programmable_clock(int clock)
-{
-	return clock;
-}
+/*************************************************************************/
 
-static int fbdev_map_clock(int bpp, int clock)
-{
-	return clock;
-}
+static int fbdev_test(void);
+static int fbdev_init(int force, int par1, int par2);
+static int fbdev_saveregs(unsigned char regs[]);
+static void fbdev_setregs(const unsigned char regs[], int mode);
+static void fbdev_getmodeinfo(int mode, vga_modeinfo *modeinfo);
+static int fbdev_modeavailable(int mode);
+static int fbdev_setmode(int mode, int prv_mode);
+static void fbdev_unlock(void);
+static void fbdev_lock(void);
+static void fbdev_setpage(int page);
+static void fbdev_setrdpage(int page);
+static void fbdev_setwrpage(int page);
+static void fbdev_setdisplaystart(int address);
+static void fbdev_setlogicalwidth(int width);
+static int fbdev_linear(int op, int param);
+static int fbdev_setpalette(int index, int red, int green, int blue);
+static void fbdev_getpalette(int index, int *red, int *green, int *blue);
+static void fbdev_savepalette(unsigned char *red, unsigned char *green,
+			     unsigned char *blue);
+static void fbdev_restorepalette(const unsigned char *red,
+				 const unsigned char *green,
+				 const unsigned char *blue);
 
-static int fbdev_map_horizontal_crtc(int bpp, int pixelclock, int htiming)
-{
-	return htiming;
-}
+/* Function tables. */
 
-/* Driver Specs */
+static Emulation fbdev_emul = {
+    setpalette: fbdev_setpalette,
+    getpalette: fbdev_getpalette,
+    savepalette: fbdev_savepalette,
+    restorepalette: fbdev_restorepalette,
+};
 
-static int fbdev_saveregs(unsigned char *regs)
+DriverSpecs __svgalib_fbdev_driverspecs =
 {
-	ioctl(fbdev_fd, FBIOGET_VSCREENINFO, regs+EXT);
-	return sizeof(struct fb_var_screeninfo);
-}
+    fbdev_saveregs,
+    fbdev_setregs,
+    fbdev_unlock,
+    fbdev_lock,
+    fbdev_test,
+    fbdev_init,
+    fbdev_setpage,
+    fbdev_setrdpage,
+    fbdev_setwrpage,
+    fbdev_setmode,
+    fbdev_modeavailable,
+    fbdev_setdisplaystart,
+    fbdev_setlogicalwidth,
+    fbdev_getmodeinfo,
+    0,				/* old blit funcs */
+    0,
+    0,
+    0,
+    0,
+    0,				/* ext_set */
+    0,				/* accel */
+    fbdev_linear,
+    NULL,                       /* Accelspecs */
+    &fbdev_emul,                /* Emulation */
+};
 
-static void fbdev_setregs(const unsigned char *regs, int mode)
-{
-	ioctl(fbdev_fd, FBIOPUT_VSCREENINFO, regs+EXT);
-}
 
-static void fbdev_unlock(void)
-{
-}
+/*************************************************************************/
+/*************************************************************************/
 
-static void fbdev_lock(void)
+/* Test for the presence of the framebuffer device.  If found, initialize
+ * and return 1, else return 0.
+ */
+
+static int fbdev_test(void)
 {
+    fb_fd = open("/dev/fb0", O_RDONLY);
+    if (fb_fd < 0) {
+	if (errno == EPERM) {
+	    fprintf(stderr, "svgalib(fbdev): Permission denied on framebuffer device.\n");
+	    exit(1);
+	}
+	return 0;
+    }
+    return !fbdev_init(0,0,0);
 }
 
-static int fbdev_init(int force, int par1, int par2)
-{
-	struct fb_fix_screeninfo info;
-	int fd;
+/*************************************************************************/
 
-	if ((fd = open("/dev/fb0", O_RDWR)) < 0)
-	{
-		return -1;
-	}
+/* Initialize the framebuffer device. */
 
-	if (ioctl(fd, FBIOGET_FSCREENINFO, &info))
-	{
-		close(fd);
-		return -1;
-	}
+static int fbdev_mapClock(int bpp, int pixelclock);
+static int fbdev_matchProgrammableClock(int desiredclock);
+static int fbdev_mapHorizontalCrtc(int bpp, int pixelclock, int htiming);
 
-	if (ioctl(fd, FBIOGET_VSCREENINFO, &fbdev_textmode))
-	{
-		close(fd);
-		return -1;
-	}
+static int fbdev_init(int force, int par1, int par2)
+{
+    if (fb_fd < 0 && !fbdev_test())
+	return -1;
+    if (ioctl(fb_fd, FBIOGET_FSCREENINFO, &fb_fix) < 0)
+	return -1;
 
-	fbdev_memory = info.smem_len;
-	fbdev_fd = fd;
+    __svgalib_novga = 1;   /* No user-serviceable parts inside */
 
-	fbdev_startaddressrange = 65536;
-	while (fbdev_startaddressrange < fbdev_memory)
-	{
-		fbdev_startaddressrange <<= 1;
-	}
-	fbdev_startaddressrange -= 1;
+    cardspecs = malloc(sizeof(CardSpecs));
+    cardspecs->videoMemory = fb_fix.smem_len;
+    /* The kernel takes care of clock setting, so put bogus values here */
+    cardspecs->maxPixelClock4bpp = 999999;
+    cardspecs->maxPixelClock8bpp = 999999;
+    cardspecs->maxPixelClock16bpp = 999999;
+    cardspecs->maxPixelClock24bpp = 999999;
+    cardspecs->maxPixelClock32bpp = 999999;
+    cardspecs->nClocks = 0;
+    cardspecs->flags = CLOCK_PROGRAMMABLE;
+    cardspecs->mapClock = fbdev_mapClock;
+    cardspecs->matchProgrammableClock = fbdev_matchProgrammableClock;
+    cardspecs->mapHorizontalCrtc = fbdev_mapHorizontalCrtc;
+    cardspecs->maxHorizontalCrtc = 65535;
 
-	cardspecs = malloc(sizeof(CardSpecs));
-	cardspecs->videoMemory = fbdev_memory;
+    __svgalib_fbdev_driverspecs.accelspecs = malloc(sizeof(AccelSpecs));
+    __svgalib_clear_accelspecs(__svgalib_fbdev_driverspecs.accelspecs);
+    __svgalib_fbdev_driverspecs.accelspecs->flags = ACCELERATE_ANY_LINEWIDTH;
 
-/* FIXME: autodetect these */
-	cardspecs->maxPixelClock4bpp = 200000;
-	cardspecs->maxPixelClock8bpp = 200000;
-	cardspecs->maxPixelClock16bpp = 200000;
-	cardspecs->maxPixelClock24bpp = 200000;
-	cardspecs->maxPixelClock32bpp = 200000;
-	cardspecs->maxHorizontalCrtc = 8192;
-
-	cardspecs->flags = CLOCK_PROGRAMMABLE;
-
-	cardspecs->nClocks = 0;
-	cardspecs->clocks = 0;
-
-	cardspecs->mapClock = fbdev_map_clock;
-	cardspecs->matchProgrammableClock = fbdev_match_programmable_clock;
-	cardspecs->mapHorizontalCrtc = fbdev_map_horizontal_crtc;
-
-	__svgalib_driverspecs = &__svgalib_fbdev_driverspecs;
-	__svgalib_banked_mem_base = info.smem_start;
-	__svgalib_banked_mem_size = 0x10000;
-	__svgalib_linear_mem_base = info.smem_start;
-	__svgalib_linear_mem_size = fbdev_memory;
-
-	__svgalib_novga = 1;
-	B8000_MEM_POINTER = (void *)0xB8000;
-	BANKED_MEM_POINTER = mmap(0, __svgalib_banked_mem_size,
-				  PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
-	LINEAR_MEM_POINTER = mmap(0, __svgalib_linear_mem_size,
-				  PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
+    __svgalib_driverspecs = &__svgalib_fbdev_driverspecs;
 
-	return 0;
+    __svgalib_banked_mem_base = fb_fix.smem_start;
+    __svgalib_banked_mem_size = 0x10000;
+    __svgalib_linear_mem_base = fb_fix.smem_start;
+    __svgalib_linear_mem_size = fb_fix.smem_len;
+    __svgalib_mmio_size = 0;
+    __svgalib_mmio_base = 0;
+    return 0;
 }
 
-static int fbdev_test(void)
-{
-	return !fbdev_init(0, 0, 0);
+static int fbdev_mapClock(int bpp, int pixelclock) {
+    return pixelclock;
 }
 
-static void fbdev_setpage(int page)
-{
-	static int oldpage = 0;
-
-	if (page != oldpage)
-	{
-//		munmap(BANKED_MEM_POINTER, __svgalib_banked_mem_size);
-		mmap(BANKED_MEM_POINTER, __svgalib_banked_mem_size,
-		     PROT_READ | PROT_WRITE, MAP_SHARED | MAP_FIXED,
-		     fbdev_fd, page * __svgalib_banked_mem_size);
-		oldpage = page;
-	}
+static int fbdev_matchProgrammableClock(int desiredclock) {
+    return desiredclock;
 }
 
-static int fbdev_screeninfo(struct fb_var_screeninfo *info, int mode)
-{
-	ModeTiming modetiming;
-	ModeInfo *modeinfo;
-
-	/* The VGA modes don't work */
-
-	if ((mode < G640x480x256 ) || mode == G720x348x2)
-		return 1;
+static int fbdev_mapHorizontalCrtc(int bpp, int pixelclock, int htiming) {
+    return htiming;
+}
 
-	if (ioctl(fbdev_fd, FBIOGET_VSCREENINFO, info))
-		return 1;
+/*************************************************************************/
 
-	modeinfo = __svgalib_createModeInfoStructureForSvgalibMode(mode);
+/* Read and save chipset-specific registers */
 
-	if (__svgalib_getmodetiming(&modetiming, modeinfo, cardspecs))
-	{
-		free(modeinfo);
-		return 1;
-	}
+static int fbdev_saveregs(unsigned char regs[])
+{
+    ioctl(fb_fd, FBIOGET_VSCREENINFO, &regs[VGA_TOTAL_REGS]);
+    return sizeof(struct fb_var_screeninfo);
+}
 
-	info->xres = modeinfo->width;
-	info->yres = modeinfo->height;
-	info->xres_virtual = modeinfo->width;
-	info->yres_virtual = modeinfo->height;
-	info->xoffset = 0;
-	info->yoffset = 0;
-	info->bits_per_pixel = modeinfo->bitsPerPixel;
-	info->grayscale = 0;
-	info->red.offset = modeinfo->redOffset;
-	info->red.length = modeinfo->redWeight;
-	info->red.msb_right = 0;
-	info->green.offset = modeinfo->greenOffset;
-	info->green.length = modeinfo->greenWeight;
-	info->green.msb_right = 0;
-	info->blue.offset = modeinfo->blueOffset;
-	info->blue.length = modeinfo->blueWeight;
-	info->blue.msb_right = 0;
-	info->nonstd = 0;
-
-	free(modeinfo);
-
-	info->vmode &= FB_VMODE_MASK;
-
-	if (modetiming.flags & INTERLACED)
-		info->vmode |= FB_VMODE_INTERLACED;
-	if (modetiming.flags & DOUBLESCAN)
-	{
-		info->vmode |= FB_VMODE_DOUBLE;
-		modetiming.VDisplay >>= 1;
-		modetiming.VSyncStart >>= 1;
-		modetiming.VSyncEnd >>= 1;
-		modetiming.VTotal >>= 1;
-	}
+/*************************************************************************/
 
-	info->pixclock = 1000000000 / modetiming.pixelClock;
-	info->left_margin = modetiming.HTotal - modetiming.HSyncEnd;
-	info->right_margin = modetiming.HSyncStart - modetiming.HDisplay;
-	info->upper_margin = modetiming.VTotal - modetiming.VSyncEnd;
-	info->lower_margin = modetiming.VSyncStart - modetiming.VDisplay;
-	info->hsync_len = modetiming.HSyncEnd - modetiming.HSyncStart;
-	info->vsync_len = modetiming.VSyncEnd - modetiming.VSyncStart;
-
-	info->sync &= ~(FB_SYNC_HOR_HIGH_ACT|FB_SYNC_VERT_HIGH_ACT);
-
-	if (modetiming.flags & PHSYNC)
-		info->sync |= FB_SYNC_HOR_HIGH_ACT;
-	if (modetiming.flags & PVSYNC)
-		info->sync |= FB_SYNC_VERT_HIGH_ACT;
+/* Set chipset-specific registers */
 
-	return 0;
+static void fbdev_setregs(const unsigned char regs[], int mode)
+{
+    struct fb_var_screeninfo *fb_var =
+	(struct fb_var_screeninfo *) &regs[VGA_TOTAL_REGS];
+    fb_var->activate = FB_ACTIVATE_NOW;
+    ioctl(fb_fd, FBIOPUT_VSCREENINFO, fb_var);
 }
 
-static void fbdev_set_virtual_height(struct fb_var_screeninfo *info)
-{
-	int maxpixels = fbdev_memory;
-	int bytesperpixel = info->bits_per_pixel / 8;
- 
-	if (bytesperpixel)
-		maxpixels /= bytesperpixel;
+/*************************************************************************/
 
-	info->yres_virtual = maxpixels / info->xres_virtual;
-}
+/* Fill in chipset specific mode information */
 
-static int fbdev_setmode(int mode, int prv_mode)
+static void fbdev_getmodeinfo(int mode, vga_modeinfo *modeinfo)
 {
-	struct fb_var_screeninfo info;
+    if (modeinfo->bytesperpixel > 0)
+	modeinfo->maxpixels = fb_fix.smem_len / modeinfo->bytesperpixel;
+    else  /* 16-color mode */
+	modeinfo->maxpixels = fb_fix.smem_len * 2;
+    modeinfo->maxlogicalwidth = 65535;
+    modeinfo->startaddressrange = fb_fix.smem_len * 1024 - 1;
+    modeinfo->haveblit = 0;
+#if 0				/* Who cares. */
+    if (fbdev_interlaced(mode))
+	modeinfo->flags |= IS_INTERLACED;
+#endif
+    modeinfo->flags &= ~HAVE_RWPAGE;
+    modeinfo->flags |= CAPABLE_LINEAR | fbdev_linear_flag;
+}
 
-	if (mode == TEXT)
-	{
-		if (ioctl(fbdev_fd, FBIOPUT_VSCREENINFO, &fbdev_textmode))
-			return 1;
-
-		memset(LINEAR_MEM_POINTER, 0,
-		       fbdev_textmode.bits_per_pixel ?
-		       fbdev_textmode.xres_virtual *
-		       fbdev_textmode.yres_virtual *
-		       fbdev_textmode.bits_per_pixel / 8 : 65536);
-	}
-	else
-	{
-		if (fbdev_screeninfo(&info, mode))
-			return 1;
+/*************************************************************************/
 
-		fbdev_set_virtual_height(&info);
+/* Return nonzero if mode is available */
 
-		if (ioctl(fbdev_fd, FBIOPUT_VSCREENINFO, &info))
-			return 1;
-	}
+static int fbdev_modeavailable(int mode)
+{
+    struct info *info;
 
+    info = &__svgalib_infotable[mode];
+    if (fb_fix.smem_len < info->ydim * info->xbytes)
 	return 0;
+    return SVGADRV;
 }
 
-static int fbdev_modeavailable(int mode)
-{
-	struct fb_var_screeninfo info;
-	unsigned g;
-
-	if (fbdev_screeninfo(&info, mode))
-		return 0;
+/*************************************************************************/
+/*************************************************************************/
 
-	g = info.green.length;
+/* Set a mode.  Returns 0 on success, 1 on failure. */
 
-	info.activate = FB_ACTIVATE_TEST;
-	if (ioctl(fbdev_fd, FBIOPUT_VSCREENINFO, &info))
-		return 0;
+static int fbdev_real_setmode(ModeTiming *modetiming, ModeInfo *modeinfo);
 
-	if (info.bits_per_pixel == 16 &&
-	    info.green.length != g)
-		return 0;
+static int fbdev_setmode(int mode, int prv_mode)
+{
+    ModeTiming modetiming;
+    ModeInfo *modeinfo;
+    int n = 999999, lastclock = -1;
+
+    if (!fbdev_modeavailable(mode))
+	return 1;
+
+    modeinfo = __svgalib_createModeInfoStructureForSvgalibMode(mode);
+
+    for (;;) {
+	/* Abort if our temporary max pixel clock (see below) drops
+	 * below 5MHz. */
+	if (cardspecs->maxPixelClock8bpp < 5000
+	 || __svgalib_getmodetiming(&modetiming, modeinfo, cardspecs)
+	) {
+	    free(modeinfo);
+	    cardspecs->maxPixelClock4bpp = 999999;
+	    cardspecs->maxPixelClock8bpp = 999999;
+	    cardspecs->maxPixelClock16bpp = 999999;
+	    cardspecs->maxPixelClock24bpp = 999999;
+	    cardspecs->maxPixelClock32bpp = 999999;
+	    return 1;
+	}
+/*printf("fbdev: got timing for mode %dx%d-%d:\n%d %d %d %d %d %d %d %d %d\n",
+modeinfo->width,modeinfo->height,modeinfo->bitsPerPixel,modetiming.pixelClock,
+modetiming.HDisplay,modetiming.HSyncStart,modetiming.HSyncEnd,modetiming.HTotal,
+modetiming.VDisplay,modetiming.VSyncStart,modetiming.VSyncEnd,modetiming.VTotal);*/
+	if (fbdev_real_setmode(&modetiming, modeinfo)) {
+	    /* We were able to set the mode */
+	    cardspecs->maxPixelClock4bpp = 999999;
+	    cardspecs->maxPixelClock8bpp = 999999;
+	    cardspecs->maxPixelClock16bpp = 999999;
+	    cardspecs->maxPixelClock24bpp = 999999;
+	    cardspecs->maxPixelClock32bpp = 999999;
+	    break;
+	}
+	/* Temporarily redefine maximum pixel clock to make getmodetiming()
+	 * give us the next best mode available.  If we got back the same
+	 * clock as last time, cut the previous value down further (avoid
+	 * infinite loops). */
+	if (modetiming.pixelClock != lastclock)
+	    n = modetiming.pixelClock;
+	n = n*989 / 1000;
+	cardspecs->maxPixelClock4bpp = n;
+	cardspecs->maxPixelClock8bpp = n;
+	cardspecs->maxPixelClock16bpp = n;
+	cardspecs->maxPixelClock24bpp = n;
+	cardspecs->maxPixelClock32bpp = n;
+    }
+
+    __svgalib_InitializeAcceleratorInterface(modeinfo);
+
+    free(modeinfo);
+    return 0;
+}
+
+/*************************************************************************/
+
+/* Attempt to actually set the specified mode.  Return 1 on success, 0 on
+ * failure.
+ */
+
+static int fbdev_real_setmode(ModeTiming *modetiming, ModeInfo *modeinfo)
+{
+    struct fb_var_screeninfo var;
+    int res;
+
+    memset(&var, 0, sizeof(var));
+    var.xres           = modeinfo->width;
+    var.yres           = modeinfo->height;
+    var.xres_virtual   = modeinfo->width;
+    var.yres_virtual   = modeinfo->height;
+    var.bits_per_pixel = modeinfo->bitsPerPixel;
+    var.red  .offset   = modeinfo->redOffset;
+    var.red  .length   = modeinfo->redWeight;
+    var.green.offset   = modeinfo->greenOffset;
+    var.green.length   = modeinfo->greenWeight;
+    var.blue .offset   = modeinfo->blueOffset;
+    var.blue .length   = modeinfo->blueWeight;
+    var.height         = modeinfo->height;    /* FIXME: Are these 2 correct? */
+    var.width          = modeinfo->lineWidth;
+    var.pixclock       = 1000000000 / modetiming->pixelClock; /* picoseconds */
+    var.left_margin    = modetiming->HTotal - modetiming->HSyncEnd;
+    var.right_margin   = modetiming->HSyncStart - modetiming->HDisplay;
+    var.upper_margin   = modetiming->VTotal - modetiming->VSyncEnd;
+    var.lower_margin   = modetiming->VSyncStart - modetiming->VDisplay;
+    var.hsync_len      = modetiming->HSyncEnd - modetiming->HSyncStart;
+    var.vsync_len      = modetiming->VSyncEnd - modetiming->VSyncStart;
+    if (modetiming->flags & PHSYNC)
+	var.sync      |= FB_SYNC_HOR_HIGH_ACT;
+    if (modetiming->flags & PVSYNC)
+	var.sync      |= FB_SYNC_VERT_HIGH_ACT;
+    if (modetiming->flags & INTERLACED)
+	var.vmode      = FB_VMODE_INTERLACED;
+    else if (modetiming->flags & DOUBLESCAN) {
+	var.vmode      = FB_VMODE_DOUBLE;
+	var.upper_margin >>= 1;
+	var.lower_margin >>= 1;
+	var.vsync_len    >>= 1;
+    }
+
+    res = ioctl(fb_fd, FBIOPUT_VSCREENINFO, &var);
+/*printf("put_var: res=%d (%s)\n",res,strerror(errno));*/
+    return res == 0;
+}
 
-	/* We may need to add more checks here. */
+/*************************************************************************/
+/*************************************************************************/
 
-	return SVGADRV;
-}
+/* Unlock chipset-specific registers (not used by fbdev) */
 
-static void fbdev_setdisplaystart(int address)
+static void fbdev_unlock(void)
 {
-	struct fb_var_screeninfo info;
-
-	if (ioctl(fbdev_fd, FBIOGET_VSCREENINFO, &info))
-		return;
+}
 
-	info.xoffset = address % info.xres_virtual;
-	info.yoffset = address / info.xres_virtual;
+/*************************************************************************/
 
-	ioctl(fbdev_fd, FBIOPAN_DISPLAY, &info);
-}
+/* Relock chipset-specific registers (not used by fbdev) */
 
-static void fbdev_setlogicalwidth(int width)
+static void fbdev_lock(void)
 {
-	struct fb_var_screeninfo info;
+}
 
-	if (ioctl(fbdev_fd, FBIOGET_VSCREENINFO, &info))
-		return;
+/*************************************************************************/
 
-	info.xres_virtual = width;
-	fbdev_set_virtual_height(&info);
+/* Bank switching functions.
+ * fbdev does not use rdpage and wrpage.  setpage is emulated by changing
+ * __svgalib_graph_mem to point at the appropriate part of the framebuffer
+ * memory, which may or may not be entirely safe.
+ */
 
-	ioctl(fbdev_fd, FBIOPUT_VSCREENINFO, &info);
+static void fbdev_setpage(int page)
+{
+    __svgalib_graph_mem = LINEAR_MEM_POINTER + (page<<16);
 }
 
-static void fbdev_getmodeinfo(int mode, vga_modeinfo * modeinfo)
+static void fbdev_setrdpage(int page)
 {
-	struct fb_var_screeninfo info;
-	int maxpixels = fbdev_memory;
-
-	if (modeinfo->bytesperpixel)
-		maxpixels /= modeinfo->bytesperpixel;
-
-	modeinfo->maxlogicalwidth = maxpixels / modeinfo->height;
-	modeinfo->startaddressrange = fbdev_startaddressrange;
-	modeinfo->maxpixels = maxpixels;
-	modeinfo->haveblit = 0;
-	modeinfo->flags |= (__svgalib_modeinfo_linearset | CAPABLE_LINEAR); 
-
-	if (fbdev_screeninfo(&info, mode))
-		return;
-
-	info.activate = FB_ACTIVATE_TEST;
-	if (ioctl(fbdev_fd, FBIOPUT_VSCREENINFO, &info))
-		return;
-
-	modeinfo->linewidth = info.xres_virtual * info.bits_per_pixel / 8;
 }
 
-static int fbdev_linear(int op, int param)
+static void fbdev_setwrpage(int page)
 {
-	switch(op)
-	{
-	case LINEAR_QUERY_BASE:
-		return __svgalib_linear_mem_base;
-	case LINEAR_ENABLE:
-	case LINEAR_DISABLE:
-		return 0;
-	}
-	return -1;
 }
 
-/* Emulation */
+/*************************************************************************/
 
-static void fbdev_savepalette(unsigned char *red,
-			unsigned char *green,
-			unsigned char *blue)
-{
-	__u16 r[256], g[256], b[256], t[256];
-	struct fb_cmap cmap;
-	unsigned i;
-
-	cmap.start = 0;
-	cmap.len = 256;
-	cmap.red = r;
-	cmap.green = g;
-	cmap.blue = b;
-	cmap.transp = t;
-
-	if (ioctl(fbdev_fd, FBIOGETCMAP, &cmap))
-		return;
-
-	for (i = 0; i < 256; i++)
-	{
-		red[i] = r[i] >> 10;
-		green[i] = g[i] >> 10;
-		blue[i] = b[i] >> 10;
-	}
-}
+/* Set display start address (not for 16 color modes) */
+/* fbdev currently only allows Y scrolling */
 
-static void fbdev_restorepalette(const unsigned char *red,
-			   const unsigned char *green,
-			   const unsigned char *blue)
+static void fbdev_setdisplaystart(int address)
 {
-	__u16 r[256], g[256], b[256], t[256];
-	struct fb_cmap cmap;
-	unsigned i;
-
-	for (i = 0; i < 256; i++)
-	{
-		r[i] = (red[i] << 10) | (red[i] << 4) | (red[i] >> 2);
-		g[i] = (green[i] << 10) | (green[i] << 4) | (green[i] >> 2);
-		b[i] = (blue[i] << 10) | (blue[i] << 4) | (blue[i] >> 2);
-		t[i] = 0;
-	}
+    struct fb_var_screeninfo var;
+    int yoffset;
 
-	cmap.start = 0;
-	cmap.len = 256;
-	cmap.red = r;
-	cmap.green = g;
-	cmap.blue = b;
-	cmap.transp = t;
-
-	ioctl(fbdev_fd, FBIOPUTCMAP, &cmap);
+    if (ioctl(fb_fd, FBIOGET_VSCREENINFO, &var) < 0)
+	return;
+    yoffset = address / (var.xres_virtual * var.bits_per_pixel / 8);
+    ioctl(fb_fd, FBIOPAN_DISPLAY, 0, yoffset);
 }
 
-static int fbdev_setpalette(int index, int red, int green, int blue)
-{
-	__u16 r, g, b, t;
-	struct fb_cmap cmap;
-
-	r = (red << 10) | (red << 4) | (red >> 2);
-	g = (green << 10) | (green << 4) | (green >> 2);
-	b = (blue << 10) | (blue << 4) | (blue >> 2);
-	t = 0;
-
-	cmap.start = index;
-	cmap.len = 1;
-	cmap.red = &r;
-	cmap.green = &g;
-	cmap.blue = &b;
-	cmap.transp = &t;
-	ioctl(fbdev_fd, FBIOPUTCMAP, &cmap);
+/*************************************************************************/
 
-	return 0;
-}
+/* Set logical scanline length (usually multiple of 8) */
+/* Not currently supported by fbdev */
 
-static void fbdev_getpalette(int index, int *red, int *green, int *blue)
+static void fbdev_setlogicalwidth(int width)
 {
-	__u16 r, g, b, t;
-	struct fb_cmap cmap;
+}
 
-	cmap.start = 0;
-	cmap.len = 1;
-	cmap.red = &r;
-	cmap.green = &g;
-	cmap.blue = &b;
-	cmap.transp = &t;
+/*************************************************************************/
 
-	if (ioctl(fbdev_fd, FBIOGETCMAP, &cmap))
-		return;
+/* Set/query linear mode. */
 
-	*red = r >> 10;
-	*green = g >> 10;
-	*blue = b >> 10;
+static int fbdev_linear(int op, int param)
+{
+    if (op == LINEAR_ENABLE) {
+	fbdev_linear_flag = IS_LINEAR;
+	return 0;
+    }
+    if (op == LINEAR_DISABLE) {
+	fbdev_linear_flag = 0;
+	return 0;
+    }
+    if (op == LINEAR_QUERY_BASE)
+	return fb_fix.smem_start;
+    if (op == LINEAR_QUERY_RANGE || op == LINEAR_QUERY_GRANULARITY)
+	return 0;		/* No granularity or range. */
+    else
+	return -1;		/* Unknown function. */
 }
 
-static void fbdev_savefont(void)
+/*************************************************************************/
+/*************************************************************************/
+
+static int fbdev_setpalette(int index, int red, int green, int blue)
 {
-	fbdev_font.op = KD_FONT_OP_GET;
-	fbdev_font.flags = 0;
-	fbdev_font.width = 32;
-	fbdev_font.height = 32;
-	fbdev_font.charcount = 512;
-	fbdev_font.data = malloc(65536);
+    struct fb_cmap cmap;
+    __u16 red16, green16, blue16;
 
-	ioctl(fbdev_fd, KDFONTOP, &fbdev_font);
+    red16 = red<<10;
+    green16 = green<<10;
+    blue16 = blue<<10;
+    cmap.start = index;
+    cmap.len = 1;
+    cmap.red = &red16;
+    cmap.green = &green16;
+    cmap.blue = &blue16;
+    cmap.transp = NULL;
+    return ioctl(fb_fd, FBIOPUTCMAP, &cmap);
 }
 
-static void fbdev_restorefont(void)
+/*************************************************************************/
+
+static void fbdev_getpalette(int index, int *red, int *green, int *blue)
 {
-	struct fb_var_screeninfo info;
+    struct fb_cmap cmap;
+    __u16 red16 = 0, green16 = 0, blue16 = 0;
 
-	fbdev_font.op = KD_FONT_OP_SET;
-	ioctl(fbdev_fd, KDFONTOP, &fbdev_font);
+    cmap.start = index;
+    cmap.len = 1;
+    cmap.red = &red16;
+    cmap.green = &green16;
+    cmap.blue = &blue16;
+    cmap.transp = NULL;
+    ioctl(fb_fd, FBIOGETCMAP, &cmap);
+    *red = red16>>10;
+    *green = green16>>10;
+    *blue = blue16>>10;
 }
 
-static void fbdev_waitretrace(void)
+/*************************************************************************/
+
+static void fbdev_savepalette(unsigned char *red, unsigned char *green,
+			     unsigned char *blue)
 {
-	/* This is from SDL */
-#ifdef FBIOWAITRETRACE
-	ioctl(console_fd, FBIOWAITRETRACE, 0);
-#endif
 }
 
-/* Function tables */
+/*************************************************************************/
 
-static Emulation fbdev_vgaemul = 
+static void fbdev_restorepalette(const unsigned char *red,
+				 const unsigned char *green,
+				 const unsigned char *blue)
 {
-	fbdev_savepalette,
-	fbdev_restorepalette,
-	fbdev_setpalette,
-	fbdev_getpalette,
-	fbdev_savefont,
-	fbdev_restorefont,
-	0,				/* screenoff */
-	0,				/* screenon */
-	fbdev_waitretrace
-};
+}
 
-DriverSpecs __svgalib_fbdev_driverspecs =
-{
-	fbdev_saveregs,
-	fbdev_setregs,
-	fbdev_unlock,
-	fbdev_lock,
-	fbdev_test,
-	fbdev_init,
-	fbdev_setpage,
-	0,				/* setrdpage */
-	0,				/* setwrpage */
-	fbdev_setmode,
-	fbdev_modeavailable,
-	fbdev_setdisplaystart,
-	fbdev_setlogicalwidth,
-	fbdev_getmodeinfo,
-	0,				/* bitblt */
-	0,				/* imageblt */
-	0,				/* fillblt */
-	0,				/* hlinelistblt */
-	0,				/* bltwait */
-	0,				/* extset */
-	0,				/* accel */
-	fbdev_linear,
-	0,				/* Accelspecs */
-	&fbdev_vgaemul
-};
+/*************************************************************************/
diff -urN ../svgalib-1.4.3-orig/src/vga.c ./src/vga.c
--- ../svgalib-1.4.3-orig/src/vga.c	2001-05-29 23:37:55 +0900
+++ src/vga.c	2003-09-01 18:38:15 +0900
@@ -720,7 +720,7 @@
 "I740",
 "NEOMAGIC",
 "LAGUNA",
-"FBDev",
+"FBDEV",
 "G400",
 "R128",
 "Savage",
@@ -837,8 +837,8 @@
 #endif
 #endif
 
-    if (CHIPSET == FBDEV)
-	return;
+//    if (CHIPSET == FBDEV)
+//	return;
 
     /*  Ensure that the open will get a file descriptor greater
      *  than 2, else problems can occur with stdio functions
@@ -1491,6 +1491,11 @@
 	    CHIPSET = ALI;
 	else
 #endif
+#ifdef INCLUDE_FBDEV_DRIVER_TEST
+	if (__svgalib_fbdev_driverspecs.test())
+	    CHIPSET = FBDEV;
+	else
+#endif
 #ifdef INCLUDE_APM_DRIVER_TEST
 /* Note: On certain cards this may toggle the video signal on/off which
    is ugly. Hence we test this last. */
@@ -2212,6 +2217,7 @@
 int vga_setmode(int mode)
 {
     int modeflags=mode&0xfffff000;
+    int i;
     
     if(mode==-1)return vga_version;
     
@@ -2385,7 +2391,8 @@
         if (!__svgalib_secondary)
 	    ioctl(__svgalib_tty_fd, KDSETMODE, KD_GRAPHICS);
 
-	if (SVGAMODE(prv_mode)) {
+	/* Not needed for fbdev --achurch */
+	if (SVGAMODE(prv_mode) && CHIPSET != FBDEV) {
 	    /* The current mode is an SVGA mode, and we now want to */
 	    /* set a standard VGA mode. Make sure the extended regs */
 	    /* are restored. */
@@ -2404,7 +2411,16 @@
 	CI.xbytes = infotable[mode].xbytes;
 	CI.bytesperpixel = infotable[mode].bytesperpixel;
 
-	chipset_setmode(mode, prv_mode);
+	/* With the fbdev driver, we don't know whether we can set a mode
+	 * until we actually try to do so.  Check the return value of
+	 * chipset_setmode and abort as needed.
+	 * We really should do that for all chipsets, but when actually
+	 * banging the hardware some additional adjustments may be
+	 * necessary.  These are left as an exercise for the reader. --achurch
+	 */
+	i = chipset_setmode(mode, prv_mode);
+	if (CHIPSET == FBDEV && i != 0)
+	    return -1;
 	MODEX = 0;
 
 	/* Set default claimed memory (moved here from initialize - Michael.) */
@@ -2575,7 +2591,8 @@
     modeinfo.flags &= modeinfo_mask;
 
     /* Many cards have problems with linear 320x200x256 mode */
-    if(mode==G320x200x256)modeinfo.flags &= (~CAPABLE_LINEAR) & (~IS_LINEAR) ;
+    if(mode==G320x200x256 && CHIPSET != FBDEV)
+	modeinfo.flags &= (~CAPABLE_LINEAR) & (~IS_LINEAR) ;
 
     /* If all needed info is here, signal if linear support has been enabled */
     if ((modeinfo.flags & (CAPABLE_LINEAR | EXT_INFO_AVAILABLE)) ==
EOT

-/etc/vga/
/etc/vga/
/pkg/svgalib/
/usr/bin/dumpreg
/usr/bin/mode3
/usr/bin/restorefont
/usr/bin/restorepalette
/usr/bin/restoretextmode
/usr/bin/savetextmode
/usr/bin/svgakeymap
/usr/bin/textmode
/usr/include/vga.h
/usr/include/vgagl.h
/usr/include/vgajoystick.h
/usr/include/vgakeyboard.h
/usr/include/vgamouse.h
/usr/lib/libvga.*
/usr/lib/libvgagl.*
/usr/man/man1/dumpreg.1.gz
/usr/man/man1/restorefont.1.gz
/usr/man/man1/restorepalette.1.gz
/usr/man/man1/restoretextmode.1.gz
/usr/man/man1/savetextmode.1.gz
/usr/man/man1/svgakeymap.1.gz
/usr/man/man1/textmode.1.gz
/usr/man/man3/currentcontext.3.gz
/usr/man/man3/gl_allocatecontext.3.gz
/usr/man/man3/gl_bcircle.3.gz
/usr/man/man3/gl_circle.3.gz
/usr/man/man3/gl_clearscreen.3.gz
/usr/man/man3/gl_colorfont.3.gz
/usr/man/man3/gl_compileboxmask.3.gz
/usr/man/man3/gl_compiledboxmasksize.3.gz
/usr/man/man3/gl_copybox.3.gz
/usr/man/man3/gl_copyboxfromcontext.3.gz
/usr/man/man3/gl_copyboxtocontext.3.gz
/usr/man/man3/gl_copyscreen.3.gz
/usr/man/man3/gl_disableclipping.3.gz
/usr/man/man3/gl_enableclipping.3.gz
/usr/man/man3/gl_enablepageflipping.3.gz
/usr/man/man3/gl_expandfont.3.gz
/usr/man/man3/gl_fillbox.3.gz
/usr/man/man3/gl_fillcircle.3.gz
/usr/man/man3/gl_font8x8.3.gz
/usr/man/man3/gl_freecontext.3.gz
/usr/man/man3/gl_getbox.3.gz
/usr/man/man3/gl_getcontext.3.gz
/usr/man/man3/gl_getpalette.3.gz
/usr/man/man3/gl_getpalettecolor.3.gz
/usr/man/man3/gl_getpalettecolors.3.gz
/usr/man/man3/gl_getpixel.3.gz
/usr/man/man3/gl_getpixelrgb.3.gz
/usr/man/man3/gl_hline.3.gz
/usr/man/man3/gl_line.3.gz
/usr/man/man3/gl_printf.3.gz
/usr/man/man3/gl_putbox.3.gz
/usr/man/man3/gl_putboxmask.3.gz
/usr/man/man3/gl_putboxmaskcompiled.3.gz
/usr/man/man3/gl_putboxpart.3.gz
/usr/man/man3/gl_rgbcolor.3.gz
/usr/man/man3/gl_scalebox.3.gz
/usr/man/man3/gl_setclippingwindow.3.gz
/usr/man/man3/gl_setcontext.3.gz
/usr/man/man3/gl_setcontextheight.3.gz
/usr/man/man3/gl_setcontextvga.3.gz
/usr/man/man3/gl_setcontextvgavirtual.3.gz
/usr/man/man3/gl_setcontextvirtual.3.gz
/usr/man/man3/gl_setcontextwidth.3.gz
/usr/man/man3/gl_setdisplaystart.3.gz
/usr/man/man3/gl_setfont.3.gz
/usr/man/man3/gl_setfontcolors.3.gz
/usr/man/man3/gl_setpalette.3.gz
/usr/man/man3/gl_setpalettecolor.3.gz
/usr/man/man3/gl_setpalettecolors.3.gz
/usr/man/man3/gl_setpixel.3.gz
/usr/man/man3/gl_setpixelrgb.3.gz
/usr/man/man3/gl_setrgbpalette.3.gz
/usr/man/man3/gl_setscreenoffset.3.gz
/usr/man/man3/gl_setwritemode.3.gz
/usr/man/man3/gl_striangle.3.gz
/usr/man/man3/gl_swtriangle.3.gz
/usr/man/man3/gl_triangle.3.gz
/usr/man/man3/gl_trigetcolorlookup.3.gz
/usr/man/man3/gl_trisetcolorlookup.3.gz
/usr/man/man3/gl_trisetdrawpoint.3.gz
/usr/man/man3/gl_write.3.gz
/usr/man/man3/gl_writen.3.gz
/usr/man/man3/gl_wtriangle.3.gz
/usr/man/man3/graph_mem.3.gz
/usr/man/man3/joystick_button1.3.gz
/usr/man/man3/joystick_button2.3.gz
/usr/man/man3/joystick_button3.3.gz
/usr/man/man3/joystick_button4.3.gz
/usr/man/man3/joystick_close.3.gz
/usr/man/man3/joystick_getaxis.3.gz
/usr/man/man3/joystick_getb1.3.gz
/usr/man/man3/joystick_getb2.3.gz
/usr/man/man3/joystick_getb3.3.gz
/usr/man/man3/joystick_getb4.3.gz
/usr/man/man3/joystick_getbutton.3.gz
/usr/man/man3/joystick_getnumaxes.3.gz
/usr/man/man3/joystick_getnumbuttons.3.gz
/usr/man/man3/joystick_getx.3.gz
/usr/man/man3/joystick_gety.3.gz
/usr/man/man3/joystick_getz.3.gz
/usr/man/man3/joystick_init.3.gz
/usr/man/man3/joystick_setdefaulthandler.3.gz
/usr/man/man3/joystick_sethandler.3.gz
/usr/man/man3/joystick_update.3.gz
/usr/man/man3/joystick_x.3.gz
/usr/man/man3/joystick_y.3.gz
/usr/man/man3/joystick_z.3.gz
/usr/man/man3/keyboard_clearstate.3.gz
/usr/man/man3/keyboard_close.3.gz
/usr/man/man3/keyboard_getstate.3.gz
/usr/man/man3/keyboard_init.3.gz
/usr/man/man3/keyboard_init_return_fd.3.gz
/usr/man/man3/keyboard_keypressed.3.gz
/usr/man/man3/keyboard_setdefaulteventhandler.3.gz
/usr/man/man3/keyboard_seteventhandler.3.gz
/usr/man/man3/keyboard_translatekeys.3.gz
/usr/man/man3/keyboard_update.3.gz
/usr/man/man3/keyboard_waitforupdate.3.gz
/usr/man/man3/mouse_close.3.gz
/usr/man/man3/mouse_getbutton.3.gz
/usr/man/man3/mouse_getcaps.3.gz
/usr/man/man3/mouse_getposition_6d.3.gz
/usr/man/man3/mouse_getx.3.gz
/usr/man/man3/mouse_gety.3.gz
/usr/man/man3/mouse_init.3.gz
/usr/man/man3/mouse_init_return_fd.3.gz
/usr/man/man3/mouse_setdefaulteventhandler.3.gz
/usr/man/man3/mouse_seteventhandler.3.gz
/usr/man/man3/mouse_setposition.3.gz
/usr/man/man3/mouse_setposition_6d.3.gz
/usr/man/man3/mouse_setrange_6d.3.gz
/usr/man/man3/mouse_setscale.3.gz
/usr/man/man3/mouse_setwrap.3.gz
/usr/man/man3/mouse_setxrange.3.gz
/usr/man/man3/mouse_setyrange.3.gz
/usr/man/man3/mouse_update.3.gz
/usr/man/man3/mouse_waitforupdate.3.gz
/usr/man/man3/vga_accel.3.gz
/usr/man/man3/vga_addmode.3.gz
/usr/man/man3/vga_addtiming.3.gz
/usr/man/man3/vga_bitblt.3.gz
/usr/man/man3/vga_blitwait.3.gz
/usr/man/man3/vga_changetiming.3.gz
/usr/man/man3/vga_claimvideomemory.3.gz
/usr/man/man3/vga_clear.3.gz
/usr/man/man3/vga_copytoplanar16.3.gz
/usr/man/man3/vga_copytoplanar256.3.gz
/usr/man/man3/vga_copytoplane.3.gz
/usr/man/man3/vga_disabledriverreport.3.gz
/usr/man/man3/vga_drawline.3.gz
/usr/man/man3/vga_drawpixel.3.gz
/usr/man/man3/vga_drawscanline.3.gz
/usr/man/man3/vga_drawscansegment.3.gz
/usr/man/man3/vga_dumpregs.3.gz
/usr/man/man3/vga_ext_set.3.gz
/usr/man/man3/vga_fillblt.3.gz
/usr/man/man3/vga_flip.3.gz
/usr/man/man3/vga_getch.3.gz
/usr/man/man3/vga_getcolors.3.gz
/usr/man/man3/vga_getcurrentchipset.3.gz
/usr/man/man3/vga_getcurrentmode.3.gz
/usr/man/man3/vga_getcurrenttiming.3.gz
/usr/man/man3/vga_getdefaultmode.3.gz
/usr/man/man3/vga_getgraphmem.3.gz
/usr/man/man3/vga_getkey.3.gz
/usr/man/man3/vga_getmodeinfo.3.gz
/usr/man/man3/vga_getmodename.3.gz
/usr/man/man3/vga_getmodenumber.3.gz
/usr/man/man3/vga_getmonitortype.3.gz
/usr/man/man3/vga_getmousetype.3.gz
/usr/man/man3/vga_getpalette.3.gz
/usr/man/man3/vga_getpalvec.3.gz
/usr/man/man3/vga_getpixel.3.gz
/usr/man/man3/vga_getscansegment.3.gz
/usr/man/man3/vga_gettextfont.3.gz
/usr/man/man3/vga_gettextmoderegs.3.gz
/usr/man/man3/vga_getxdim.3.gz
/usr/man/man3/vga_getydim.3.gz
/usr/man/man3/vga_guesstiming.3.gz
/usr/man/man3/vga_hasmode.3.gz
/usr/man/man3/vga_hlinelistblt.3.gz
/usr/man/man3/vga_imageblt.3.gz
/usr/man/man3/vga_init.3.gz
/usr/man/man3/vga_lastmodenumber.3.gz
/usr/man/man3/vga_lockvc.3.gz
/usr/man/man3/vga_oktowrite.3.gz
/usr/man/man3/vga_puttextfont.3.gz
/usr/man/man3/vga_runinbackground.3.gz
/usr/man/man3/vga_runinbackground_version.3.gz
/usr/man/man3/vga_safety_fork.3.gz
/usr/man/man3/vga_screenoff.3.gz
/usr/man/man3/vga_screenon.3.gz
/usr/man/man3/vga_setchipset.3.gz
/usr/man/man3/vga_setchipsetandfeatures.3.gz
/usr/man/man3/vga_setcolor.3.gz
/usr/man/man3/vga_setdisplaystart.3.gz
/usr/man/man3/vga_setegacolor.3.gz
/usr/man/man3/vga_setflipchar.3.gz
/usr/man/man3/vga_setlinearaddressing.3.gz
/usr/man/man3/vga_setlogicalwidth.3.gz
/usr/man/man3/vga_setmode.3.gz
/usr/man/man3/vga_setmodeX.3.gz
/usr/man/man3/vga_setmousesupport.3.gz
/usr/man/man3/vga_setpage.3.gz
/usr/man/man3/vga_setpalette.3.gz
/usr/man/man3/vga_setpalvec.3.gz
/usr/man/man3/vga_setreadpage.3.gz
/usr/man/man3/vga_setrgbcolor.3.gz
/usr/man/man3/vga_settextmoderegs.3.gz
/usr/man/man3/vga_setwritepage.3.gz
/usr/man/man3/vga_unlockvc.3.gz
/usr/man/man3/vga_waitevent.3.gz
/usr/man/man3/vga_waitretrace.3.gz
/usr/man/man3/vga_white.3.gz
/usr/man/man5/libvga.config.5.gz
/usr/man/man5/libvga.et4000.5.gz
/usr/man/man5/svgalibrc.5.gz
/usr/man/man7/svgalib.7.gz
/usr/man/man7/svgalib.chips.7.gz
/usr/man/man7/svgalib.et4000.7.gz
/usr/man/man7/svgalib.faq.7.gz
/usr/man/man7/svgalib.mach32.7.gz
/usr/man/man7/threedkit.7.gz
/usr/man/man7/vgagl.7.gz
/usr/man/man8/mode3.8.gz
