From owner-FreeBSD-users-jp@jp.FreeBSD.org Thu Jul 28 18:30:10 2005
Received: (from daemon@localhost)
	by castle.jp.FreeBSD.org (8.11.6p2+3.4W/8.11.3) id j6S9UAb79660;
	Thu, 28 Jul 2005 18:30:10 +0900 (JST)
	(envelope-from owner-FreeBSD-users-jp@jp.FreeBSD.org)
Received: from smtp.fancy.ocn.ne.jp (fancy.ocn.ne.jp [210.190.142.179])
	by castle.jp.FreeBSD.org (8.11.6p2+3.4W/8.11.3) with ESMTP/inet id j6S9UAh79648
	for <FreeBSD-users-jp@jp.freebsd.org>; Thu, 28 Jul 2005 18:30:10 +0900 (JST)
	(envelope-from chi@bd.mbn.or.jp)
Received: from chino.localhost (p3070-ipad03okidate.aomori.ocn.ne.jp [220.104.218.70])
	by smtp.fancy.ocn.ne.jp (Postfix) with ESMTP
	id 32AF68E51; Thu, 28 Jul 2005 18:30:09 +0900 (JST)
Posted-Date: Wed, 27 Jul 2005 21:02:32 JST
To: bsd-nomads@clave.gr.jp
Cc: FreeBSD-users-jp@jp.FreeBSD.org
In-Reply-To: <20050619005945.11E118410@m-kg282p.ocn.ne.jp>
From: chi@bd.mbn.or.jp (Chiharu Shibata)
X-Mailer: mnews [version 1.22] 1999-12/19(Sun)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="-=-mnews-multipart-=-"
Message-Id: <20050728093009.32AF68E51@m-kg282p.ocn.ne.jp>
Reply-To: FreeBSD-users-jp@jp.FreeBSD.org
Precedence: list
Date: Thu, 28 Jul 2005 18:30:09 +0900
X-Sequence: FreeBSD-users-jp 86310
Subject: [FreeBSD-users-jp 86310] =?ISO-2022-JP?B?GyRCJUYlOSU/ITwbKEI=?=
 =?ISO-2022-JP?B?GyRCSmc9OCEnGyhC?= kon2 (Was: Please test
 kon patch)
Sender: owner-FreeBSD-users-jp@jp.FreeBSD.org
X-Originator: chi@bd.mbn.or.jp
X-Distribute: distribute version 2.1 (Alpha) patchlevel 24e+050320


---=-mnews-multipart-=-
Content-Type: text/plain; charset=ISO-2022-JP
Content-Transfer-Encoding: 7bit

$B$3$s$K$A$O!"<FED$G$9!#(B
$B@h$N%a!<%k$OKDBg$J(BSPAM$B$NH`J}$K>C$($F$7$^$C$?$N$G$7$g$&$+(B...
$B$H$$$&$o$1$G:#2s$O(BSubject$B$rF|K\8l$K$7$F$_$^$7$?(B(^^;;

Sun, 19 Jun 2005 09:59:45 JST$B$K(B
$B;d$O=q$-$^$7$?!#(B

>$B2~B$$N%]%$%s%H$O!"?bD>HsI=<(4|4V$r8=>u$h$jAa$/3+;O!?CY$/=*N;$5$;!"?bD>5"(B
>$B@~4|4V$r$=$NCf$KLVMe$9$k$H$$$&$b$N$G$9!#(B

$B$3$l$G$b$^$@(BThinkPad X23$B$G$O%@%a$H$$$&Js9p$,$"$C$F$$$m$$$mD4$Y$?$N$G$9$,!"(B
$B:,K\E*$K!"?bD>HsI=<(4|4V$r(B(kon.cfg$B$N(B)modeline$B$N>pJs$+$i7W;;$G5a$a$h$&$H(B
$B$$$&H/A[$,%@%a$_$?$$$G$9!#(B
$B$G!";W$$@Z$C$F7W;;$9$k$3$H<+BN$r;_$a$^$7$?!#(B

$BE:IU$N%Q%C%A$rEv$F$k$H(Bkon$B$K(B"FIX$B%b!<%I(B"$B$,DI2C$5$l$^$9!#%5%s%W%k$N(Bkon.cfg
$B$N$h$&$J(Bmodeline$B$N=q$-J}(B($B!a=D2#$N%I%C%H?t0J30$NCM$r(B0)$B$K$9$k$H!"8GDj$N(B
CRTC$B%Q%i%a!<%?$r@_Dj$7$^$9!#(B
$B$5$i$K!"(BFreeBSD$B$K$*$$$F$O(Bkernel$B$G$N2hLL%b!<%I@ZBX$($,2DG=$G$"$k$H!"$=$A(B
$B$i$rM%@h$7$F;HMQ$9$k$h$&$K$J$j$^$9!#(B

$B0l8+6/0z$J$3$N$d$jJ}$N$[$&$,!"I=<(2DG=$H$J$k2DG=@-$,>e$,$k$O$:$G$9!#(B
$B<B:]$K!"<j$b$H$N(BThinkPad A21m$B$O$b$A$m$s!"@h$N%Q%C%A$G$O%@%a$@$C$?(B
ThinkPad X23$B$G$bI=<($,2DG=$H$J$C$?$N$G$9$,!""-$N7|G0$,$"$j$^$9$N$G!"0zB3(B
$B$-%F%9%?!<$rJg=8$7$^$9!#(B
>                                          $B$3$N2~B$$,8=>u$G(Bkon$B$,F0$/%^%7(B
>$B%s$K0-1F6A$rM?$($J$$$+D4$Y$kI,MW$,$"$j$^$9$N$G!"3'$5$s$KF0:nJs9p$r$*4j$$(B
>$B$7$^$9!#(B
>
>$B%Q%C%A$O(Bkon2-0.3$B$K(Bports$B$N%Q%C%A$,Ev$?$C$?$b$N$r%Y!<%9$H$7$F$$$^$9!#(B
>packages$B$7$+F~$l$F$J$$J}$O!":G=i$K(Bports$B$G(Bkon2$B$r%$%s%9%H!<%k$7$F2<$5$$!#(B
>$BJs9p$N:]$K$O!"%Q%C%AEv$F8e$NF0:n!?ITF0:n0J30$K!"%^%7%s$H%G%#%9%W%l%$!"J,(B
>$B$+$l$P%G%#%9%W%l%$%3%s%H%m!<%i$N7?<0$bJ;5-$7$F$/$@$5$$!#(B
>$B8f6(NO$r$h$m$7$/$*4j$$$7$^$9!#(B

PS.
$B%5%s%W%k$N(Bkon.cfg$B$G$O(BFIX$B%b!<%IMQ$N%(%s%H%j$r(B"Normal"$BEPO?$7$F$$$^$;$s$N$G!"(B
kon$B$N5/F0;~$K%(%s%H%jL>$r%Q%i%a!<%?$H$7$FIU2C$7$F2<$5$$!#4JC1$K8@$&$H(B
%kon FIX
$B$G5/F0$9$k$N0UL#$G$9!#(B
-- 
$B<FED(B $B@i=U(B($B!i(B)      chi@bd.mbn.or.jp    <http://www32.ocn.ne.jp/~chi/>
---=-mnews-multipart-=-
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Content-Description: kon2.diff
Content-Disposition: attachment; filename="kon2.diff"

--- src/display/vga.c	2004/10/31 06:35:04	1.1
+++ vga.c	2005/07/16 13:25:10
@@ -49,6 +49,7 @@
 #include      <sys/ioctl.h>
 #include      <osreldate.h>
 #if __FreeBSD_version >= 410000
+#  include    <sys/fbio.h>
 #  include    <sys/consio.h>
 #  include    <sys/kbio.h>
 #else
@@ -108,6 +109,9 @@
 static	bool	savePlane3;
 
 static	u_short	fmPattern;		 /* bit pattern to modify font; skip line if bit clear */
+#if defined(__FreeBSD__)
+static  int	curMode = -1;
+#endif
 
 void VgaSetRegisters(struct vgaRegs *regs)
 {
@@ -159,6 +163,43 @@
     }
 }
 
+void VgaGetRegisters(struct vgaRegs *regs)
+{
+    int	i;
+    
+    /* disable video */
+    PortInb(vgaSt1Addr);	
+    PortOutb(0x00, VGAATTR_A_O);
+
+    /* read CRT registers */
+    for (i = 0; i < VGACRT_CNT; i++) {
+	PortOutb(i, vgaCrtAddr);
+	regs->crt[i] = PortInb(vgaCrtData);
+    }
+
+    /* read attribute controller registers */
+    for (i = 0; i < VGAATTR_CNT; i++) {
+	PortInb(vgaSt1Addr);
+	PortOutb(i, VGAATTR_A_O);
+	regs->att[i] = PortInb(VGAATTR_DATA);
+    }
+
+    /* read graphics controller registers */
+    for (i = 0; i < VGAGRP_CNT; i++) {
+	PortOutb(i, VGAGRP_ADDR);
+	regs->gra[i] = PortInb(VGAGRP_DATA);
+    }
+
+    /* read sequencer registers */
+    for (i = 0; i < VGASEQ_CNT; i++) {
+	PortOutb(i, VGASEQ_ADDR);
+	regs->seq[i] = PortInb(VGASEQ_DATA);
+    }
+
+    /* read misc register */
+    regs->mis = PortInb(VGAMISC_IN);
+}
+
 static
 void VgaSetPELS(struct pelRegs *pels)
 {
@@ -188,7 +229,7 @@
 static inline
 void	VgaSetColor(u_char col)
 {
-    static	old;
+    static u_char old = 0xFF;
     
     if (old == col) return;
     PortOutw(col << 8, VGAGRP_ADDR);
@@ -201,30 +242,33 @@
 
     VgaGetPELS(&textPels);
     
-    /* disable video */
-    PortInb(vgaSt1Addr);	
-    PortOutb(0x00, VGAATTR_A_O);
     /* save text mode VGA registers */
-    for (i = 0; i < VGACRT_CNT; i++) {
-	PortOutb(i, vgaCrtAddr);
-	regText.crt[i] = PortInb(vgaCrtData);
-    }
-    for (i = 0; i < VGAATTR_CNT; i++) {
-	PortInb(vgaSt1Addr);
-	PortOutb(i, VGAATTR_A_O);
-	regText.att[i] = PortInb(VGAATTR_DATA);
-    }
-    for (i = 0; i < VGAGRP_CNT; i++) {
-	PortOutb(i, VGAGRP_ADDR);
-	regText.gra[i] = PortInb(VGAGRP_DATA);
-    }
-    for (i = 0; i < VGASEQ_CNT; i++) {
-	PortOutb(i, VGASEQ_ADDR);
-	regText.seq[i] = PortInb(VGASEQ_DATA);
-    }
-    regText.mis = PortInb(VGAMISC_IN);
+    VgaGetRegisters(&regText);
     
     PortOutb(PortInb(VGAMISC_IN)|0x01, VGAMISC_OUT);
+    if (LineComp8 == 0) {
+#if defined(__FreeBSD__)
+	if (ioctl(0, SW_CG640x480, 0) == -1)
+	    curMode = -1;
+	else {
+    	    VgaGetRegisters(&regGraph);
+    	    for (i = 0; i < MAX_PELS; i++) {
+		regGraph.att[i] = i;
+	    }
+	    regGraph.gra[1] = 0x0F;
+	    regGraph.gra[5] = 0x00;
+	}
+#endif
+	if (fmPattern) {
+	    regGraph.crt[21] = (dInfo.gydim - 1) & 0xFF;
+	    regGraph.crt[7] &= ~0x08;
+	    regGraph.crt[7] |= ((dInfo.gydim - 1) & 0x100) >> 5;
+	    regGraph.crt[9] &= ~0x20;
+	    regGraph.crt[9] |= ((dInfo.gydim - 1) & 0x200) >> 4;
+	}
+	LineComp8 = ((regGraph.crt[7] & 0xEF) << 8) + 0x07;
+	LineComp9 = ((regGraph.crt[9] & 0xBF) << 8) + 0x09;
+    }
     VgaSetRegisters(&regGraph);
     
     /* save font data in plane 2 */
@@ -272,6 +316,11 @@
     /* enable video */
     PortInb(vgaSt1Addr);
     PortOutb(0x20, VGAATTR_A_O);
+
+#if defined(__FreeBSD__)
+    if (curMode != -1)
+	ioctl(0, _IO('S', curMode), 0);
+#endif
 }
 
 void VgaGraphMode(void)
@@ -544,6 +593,14 @@
     dInfo.gsize = dInfo.glineByte * dInfo.gydim;
     dInfo.tlineByte = dInfo.glineChar * dInfo.glineByte;
 
+    if (video->m.hTotal == 0 && video->m.vTotal == 0) {
+	LineComp9 = LineComp8 = 0;
+#if defined(__FreeBSD__)
+	ioctl(0, FBIO_GETMODE, &curMode);
+#endif
+	return SUCCESS;
+    }
+
     if (video->m.vLine < 480) {
 	regGraph.crt[23] = 0xE3;
 	regGraph.mis = 0xE3;
@@ -565,17 +622,17 @@
     regGraph.crt[7] |= (((dInfo.gydim - 1) & 0x100) >> 7)
 	| (((dInfo.gydim - 1) & 0x200) >> 3);
     regGraph.crt[7] |= ((video->m.vStart & 0x100) >> 6)
-	| ((video->m.vStart & 0x100) >> 5);
+	| (((video->m.vStart - 1) & 0x100) >> 5);
     regGraph.crt[7] |= (((video->m.vTotal - 2) & 0x100) >> 8)
 	| (((video->m.vTotal - 2) & 0x200) >> 4);
     regGraph.crt[7] |= ((video->m.vStart & 0x200) >> 2);
-    regGraph.crt[9] = ((video->m.vStart & 0x200) >>4) | 0x40;
+    regGraph.crt[9] = (((video->m.vStart - 1) & 0x200) >> 4) | 0x40;
     regGraph.crt[16] = video->m.vStart & 0xFF;
     regGraph.crt[17] = (video->m.vEnd & 0x0F) | 0x20;
     regGraph.crt[18] = (dInfo.gydim - 1) & 0xFF;
     regGraph.crt[19] = video->m.hDot >> 4;
-    regGraph.crt[21] = video->m.vStart & 0xFF;
-    regGraph.crt[22] = (video->m.vStart + 1) & 0xFF;
+    regGraph.crt[21] = (video->m.vStart - 1) & 0xFF;
+    regGraph.crt[22] = video->m.vEnd & 0xFF;
 
     LineComp8 = ((regGraph.crt[7] & 0xEF) << 8) + 0x07;
     LineComp9 = ((regGraph.crt[9] & 0xBF) << 8) + 0x09;
--- kon.cfg.FreeBSD	2005/06/02 12:30:18	1.1
+++ kon.cfg.FreeBSD	2005/07/15 11:12:37
@@ -56,6 +56,11 @@
 	640 680 768 800 480 491 493 525
 	1
 	79 23
+VGAfixed:FIX
+	VGA
+	640 0 0 0 480 0 0 0
+	0
+	79 29
 
 # Pels: Pallette value definition for VGA, VGAFM drivers
 

---=-mnews-multipart-=---
