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 M'XL("+L'_C$"`UA&.#9#;VYF:6_KKL-9/_Z^U5WVW$@<&96(%U=Q$QP M/^K555]5M?.)_3:[RC@_/[M@3UXSS9)EYD:B.1,\>^!9<_78?%JH^>;LZORL MF\2+AI>F]0=VTC@^8^TO7\Z:K=-FN\W:[8O6R<7Q,?/=1RZ8]92RW_8_[7]B MW21=9\%R)=F!=T@[?F?S-9NL.#.VYX%@5"!$G,`L%6 M/./8`LEBR?TZ(X%8LF#>RLV6O,YDPMQXS5*>"6Q(YM(-XB!>,A>4/'"GM7(% M0B)9R$(Q`M<4&1^XN41CZ4KB>,B"*'`@82$-`5G* MK:B5D1!"PA$"G$.:9(KK-0?7=G@8PVMT:3!P!B#S+K%$W.N M.X.!47%V95L6A9$]_M/J3MBE!8DZEP-+,X`ZW4&G/ZRS7F?8^492V6R,C;9: M5DKUX]I2@V#3P6]WTA^/2('N>#2Q\5B'?O:DW/RC[UAUUK'[#IGBRAZ#`9ER M?`5:8T4&.T>6ID.&WCX/+*'GJ6-MY.E9G0&H.;09`^229KDY4>O)XZE$Z)++ M49@K']'^I)VHKAPA=B->.,4SE-%>!EI83[Z&R%,T7!]X)P-!_@PW2[`U>PP$ M5U&3)5$BN2(GW!!,L*M0$.:!5C_F`52%0A0B!(L#WYOGAZRR(U9ZBX)&C+8!`<4"L(!Z*\!(XM<2>>B\(]0 M!E#;`%K@SW)O0%9$B(5B!!!T>BX(XUY/\"9ZMX/P@ M#.Z1.QOR2=8H2FH-?UX[5";@.KO$Y`EAN%9AR&*NTPSR>;S4468,U-C?9_BQ ME_,;&&>O5O&%,)C37TU83BDTQ/(@A417L"FM9DCH&24-E?#)[N!R\+@*O)4: M`H)`?1ZK"D`F2TZQK-(\G.Z1PG M\8:_*CZP$J=[`".X]#0/XM+B'6L]BZTY%R5=$$RG3:];V?V+E MYU,_#9H7>2P\X(#_4WO:K=:O;YJL4][^.9F<%$>=_(K\OR*V\H,KV'KLD$L" M:D2>4HW`>FNX;N"1R\'K72HM4&;E"(8Z&ZH_E,=XP*`YN;9*"O!(A"$.3G`W M@]-0?"ID(P%)Q M/^*2'MN-)QT>)3(H9E2RKI)'*H(HCF6@42Q4 MX?S2_`A'/+Y^`KITWCZ#;D&F_K9LQ)*4`HV2BT@B`X.Z=DV1]PYF??H\Q,$^ M4(WK9P'J#-%XQS.A,JD`>'T\-36H'),$%Q6/+1WXSV0M4##=&XG4C@$6L]K3 MXOSL3R'O&R+1A#[(E1S58K)%Z"XW>?(CLIYF=$5\%$1,8P)FG++V7QR&\PL$B%QX"7KS>;Y<(BT92!@ED\Q-'26@V*TC^D/2^>SQPH5,S>*%`<@I4D9W3?J>KQE_P%0!3SU@\G^[Z:])\?WFGW__ MVJ2/HZ_DJK`52F=O12I^*D42S^JHG3)Q'&4IE-B2*DFBOQ`KCXN.78GXA-/! M&#><&NQ'H#)[H-U#CZJ\@6!"R9#EL<*4!8?L&,]\]1@E<2"I")"FA1=49Y`; M@-`C;33=2%&G;%5#48/U%XJEKC/TEHT/PGO@1S+QDI#Q+$LRTGFOIU6Z#7R` M`K>*ZFRW_BB#BE-1K\*CI MXOG&A,!>S9'P'#U!=0;Z[5RU];-_3*VI56>%GQ1]J;ZI0@-O[LGRBB>I1J>\ MZ*(U!D\V[&;`IIP;*3JY3&R>F>@$F9`"_(%.E1D69-.-']EF!@%HFG>@,8>+LJ'(K6)MJJ_3M M@=43IMJET,B.Z#HE2U3+?<"7=0V`Y-\'[<-#37R&2<'43YL=LQ/51>H2F=09 M\(4$DE/<#='YUYE-MWXT0EA,HT`A9Q4L9)W2IYKMRK"8[291F@AS`(Y'LBCK M5#;3\X6Q?L%-E<-@IT=+EKI(UNPJ4\0//X:7L=F&5\G%J%;-5;/OUMWEN&/W M-GUNO>(HL_NY@225;S:/AI27"YE$ZCI)$;OAS^Y44I75-2+/KK*>DMUF^#B,Z-KEM!=D^LCAES6 M;K65C4O7T-"YX4ZZ..MHGH3""')A_*$<9ZR6BX/4`ZW#O_M4?5*^`@^VLJ$HKR1GAB:_0CHK=A[5RP3>.I#: MA))NCF`P"!.YJ;YAH>N%=?F.@!(2]G]7"PK`,.4`4"S+J)HDQ=75)"UE=$\! M9N@Z8`WAH0"ABS7"/*JV.W'A,CCZC?DU`U+,F.,@%_^L'L-6"/_-E6!H,C\^-DT(Q\3'<[/( MLGB,L3`,@8CT\@BU51&H6'?:BHH;L6<":#F?D=[3LG972>8/`]]7GOQ,3F6& MDT+87?:H;/\XWY[I0G?'[4EY=4*'B>N3#!2<$H:K:P=RCV?W#*8:K-Q' M+3;)0!'!E+J\U^\QMZ_OMV_N78,3:?5R6`OX81<7VC(&()U\7D[\F=(".Z*I:;S9S=*8EW5?X=/-,)-E?\_D96E;F"O[K MM%Y2LT)Z*9\BZ_\'%L#FRLPPB(,HCV8WB5#O:]E)$?MJUGUZ-GNZ-:TWW[VY M^>Z5S2BS.!"R,C*-99)[JQY'.8(R9#.!\AFZ;8^_-/A+.Q4W6KN-]*]DW7K% M1CLV$K2,$5;MUAO&:[]IO/;)F\9KOVF\]M8TP(U3PIJQS[N&[]A9=1B6DRX[ M;KWF7G3-/%2=+28**#+O4X5YQPFS2%0]%/SE:Q1ABE%AVJLR4Q^CUET MBSS;JUT-;X\N^Y>#L2YZ;I%JDHP,C*GIG_V),]43U#&%>ORT?7(RZC1GJC:Y MIK?;SCKV].M<=G_];Y0Z(?IC?@?F-KAQ'7U:_/V.9%&ZH%]?88 M?1G0!)7.@QOF5$A1SBI>M^U8G]'ECOJ2B-Y`[$;CB76AOH%PVQE,+8==6[;% MZ(L)UJPSO!G0UR1&@SM*FM:59=-W.^[&4YL-QZ/^9&S_ET,W3@XFAIW1M#-0 M7[4@:MVQ;=.7,$;3X:5E.^8%YD8YAL!LG![]WFJ2:1E7$R*V.IOS14 M=]/G\_.M7/K:V/9#1/O?H].['Q_[QJ9@7K(/5H* M$#]IX;]3_'=R=EINNBT6@13[?/:%??[<8N>M\WT#.,3LPVX'OYE:H7CC]/&` ML]S-\0W@T8!=>P$[WWC,L\!CM]\Z+X%G&M_'R6.L)R[IZF#'>'<5I.CS]VI+ M3&XP4%-4JY"K?E>0R.?(16A[% MCZ?9OE1HVG^IR(2:]%B^4.3+V5EK2POE3#6YS`.:>EH&M8]R&E.>%2?WKLXR M4>^P0KK>JABP^GY.,3?MM7H;N5<3#TMWN^$N36FRUHLD5:EF:KU`I*@?*W', M4[G:H[_.RS&%*FIL1^#?!OQ1U1SX::%NW8QG,G=#?0]*&(!=^YM"HHBVZCGM 3VGK>:JFJ[