X-Mail-Count: 00501
X-MLServer:  fml 1.5.4.0 current #rms / libsmtp 1.5.3.2 
Precedence: list
Lines: 336
From: toshioji@darkover.iijnet.or.jp (Katayama Toshio)
Subject: Re: FMV-5133NA/X (major change?)
Date: Tue, 30 Jul 96 22:52:35 JST
To: 800x600@yy.cs.keio.ac.jp (800x600 Mailing list)

自己フォローです。

FMV-5133NA/X(new?) + Linux 2.0.7 + XFree86 3.1.2E で
まっとうな手段で 1024x768 256 色表示出来ました。

三浦さんが ThinkPad 535 でやられた方法と同様に
ThinkPad 560 用の cy9382.c を変更しました。

FMV-5133NA/X(new?)ではモードを切替えてもコンソールが
潰れないので起動時に一度動かせば OK です。
したがって仮想コンソールの切替えも OK てす。

やりかた
1. cy9382.c にパッチをあてる
        patch -p < パッチファイル
2. cy9382.c をコンパイルする
        cc -o cy9660 cy9382.c
3. インストールする
        cp cy9660 /usr/local/sbin
4. /etc/rc.d/rc.local 等に以下を追加する
        /usr/local/sbin/cy9660 -l

今まで LCD の真中にこじんまりと表示されていたコンソールが
左上隅に表示されるようになれば OK です。

ではパッチ行きます。(マルチパートでなくてごめんなさい)

*** cy9382.c	Tue Jul 23 03:20:52 1996
--- cy9660.c	Tue Jul 30 22:06:26 1996
*************** p_utx(int port, int index, int value)
*** 175,180 ****
--- 175,181 ----
  {
  	switch (port) {
  	case 0x3c5:
+ 	case 0x3d5:
  	case 0x3cf:
  		_outb(port-1, index);
  		_outb(port, value);
*************** dumpregs(void)
*** 262,267 ****
--- 263,280 ----
  	p_rintx(0x3d5, 0x16);
  }
  
+ void
+ dumpallregs(void)
+ {
+ 
+ 	p_rint(0x3cc); p_rint(0x3c2);
+ 	p_rint(0x3da); p_rint(0x3c3); p_rint(0x46e8);
+ 
+ 	p_rintxs(0x3c5, 0, 0x7f);
+ 	p_rintxs(0x3cf, 0, 0x7f);
+ 	p_rintxs(0x3d5, 0, 0x7f);
+ }
+ 
  
  /*
   * are we running on a cyber 9382?
*************** dumpregs(void)
*** 272,277 ****
--- 285,292 ----
   * as conservative as possible.)
   */
  
+ int flg9660 = 0;
+ 
  int
  isitcyber(void)
  {
*************** isitcyber(void)
*** 281,288 ****
  		return 0;
  	}
  	if (g_etx(0x3c5, 0x9) != 0x33) {
! 		fprintf(stderr, "does not appear to be a 9382\n");
! 		return 0;
  	}
  	return 1;		/* Yes! */
  }
--- 296,307 ----
  		return 0;
  	}
  	if (g_etx(0x3c5, 0x9) != 0x33) {
! 		if (g_etx(0x3c5, 0x9) == 0x30) {
! 			flg9660 = 1;
! 		} else {
! 			fprintf(stderr, "does not appear to be a 9382\n");
! 			return 0;
! 		}
  	}
  	return 1;		/* Yes! */
  }
*************** isitcyber(void)
*** 291,299 ****
  void
  usage(char *cmd)
  {
! 	fprintf(stderr, "usage: %s {-d} {-b|-s}\n", cmd);
  	fprintf(stderr,
! 	    "(-b allows for 800x600; -s centers for smaller sizes)\n");
  	exit(1);
  }
  
--- 310,318 ----
  void
  usage(char *cmd)
  {
! 	fprintf(stderr, "usage: %s {-d|-D} {-l|-b|-s}\n", cmd);
  	fprintf(stderr,
! 	    "(-l allows for 1024x768; -b allows for 800x600; -s centers for smaller sizes)\n");
  	exit(1);
  }
  
*************** int
*** 301,308 ****
  main(int argc, char *argv[])
  {
  	char *cmd = argv[0];
! 	int bflag, sflag;
! 	int ch, action;
  
  	/*
  	 * FreeBSD and Linux differ on how to give a process
--- 320,327 ----
  main(int argc, char *argv[])
  {
  	char *cmd = argv[0];
! 	char mode;
! 	int ch, ch2, action;
  
  	/*
  	 * FreeBSD and Linux differ on how to give a process
*************** main(int argc, char *argv[])
*** 348,392 ****
  		exit(1);
  	}
  
! 	bflag = sflag = 0;
  	action = 0;
! 	while ((ch = getopt(argc, argv, "bsdcl")) != EOF) {
  		switch (ch) {
  		case 'b':		/* big (600) lines */
- 			if (bflag || sflag) {
- 				usage(cmd);
- 				/*NOTREACHED*/
- 			}
- 			bflag++;
- 			break;
  		case 's':		/* small (480 or less) lines */
! 			if (bflag || sflag) {
  				usage(cmd);
  				/*NOTREACHED*/
  			}
! 			sflag++;
  			break;
  		case 'd':
  			dumpregs();
  			action++;
  			break;
  		case '?':
  		default:
  			usage(cmd);
  			/*NOTREACHED*/
  		}
  	}
! 	if (bflag) {
! 		ch = g_etx(0x3cf, 0x31)&0x8f;
! 		tri_unlock();
! 		p_utx(0x3cf, 0x31, ch|0x10);	/* 3fc.31[6:4] = 1 (600) */
! 		tri_lock();
! 		action++;
! 	}
! 	if (sflag) {
  		ch = g_etx(0x3cf, 0x31)&0x8f;
  		tri_unlock();
! 		p_utx(0x3cf, 0x31, ch);		/* 3fc.31[6:4] = 0 (480) */
  		tri_lock();
  		action++;
  	}
--- 367,426 ----
  		exit(1);
  	}
  
! 	mode = 0;
  	action = 0;
! 	while ((ch = getopt(argc, argv, "lbsdD")) != EOF) {
  		switch (ch) {
+ 		case 'l':		/* big (768) lines */
  		case 'b':		/* big (600) lines */
  		case 's':		/* small (480 or less) lines */
! 			if (mode != 0) {
  				usage(cmd);
  				/*NOTREACHED*/
  			}
! 			mode = ch;
  			break;
  		case 'd':
  			dumpregs();
  			action++;
  			break;
+ 		case 'D':
+ 			dumpallregs();
+ 			action++;
+ 			break;
  		case '?':
  		default:
  			usage(cmd);
  			/*NOTREACHED*/
+ 			break;
  		}
  	}
! 
! 	if (action == 0) {
  		ch = g_etx(0x3cf, 0x31)&0x8f;
+ 		ch2 = g_etx(0x3d5, 0x2f)&0xef;
  		tri_unlock();
! 		switch (mode) {
! 		case 'l':
! 		  p_utx(0x3cf, 0x31, ch|0x20); /* 3cf.31[6:4] = 2 (768) */
! 		  if (flg9660) {
! 		    p_utx(0x3d5, 0x2f, ch2|0x10);
! 		  }
! 		  break;
! 		case 'b':
! 		  p_utx(0x3cf, 0x31, ch|0x10); /* 3cf.31[6:4] = 1 (600) */
! 		  if (flg9660) {
! 		    p_utx(0x3d5, 0x2f, ch2|0x10);
! 		  }
! 		  break;
! 		case 's':
! 		default:
! 		  p_utx(0x3cf, 0x31, ch); /* 3cf.31[6:4] = 0 (480) */
! 		  if (flg9660) {
! 		    p_utx(0x3d5, 0x2f, ch2);
! 		  }
! 		  break;
! 		}
  		tri_lock();
  		action++;
  	}

==================== XF86Config のサンプル ==================== 
begin 644 XF86Config.FMV-5133NA_X.gz
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
3VGK>:JFJ[<V=_PON7.&4GBL``!SX
`
end
--
片山 敏夫 <toshioji@darkover.iijnet.or.jp>
