jeff@hcr.uucp (Jeffrey Roberts) (02/20/90)
I recently encountered an interesting problem while installing 'X' windows version 1.1.1 under 386ix 2.0.2. The installation went smoothly and a new kernel was built and installed with no difficulty. When 'X' is started up from any virtual terminal, ie: console, vt01 etc.. 'X' starts up with no problem. If I switch to another virtual terminal I can see the cursor but nothing else, ie: any characters that I type are invisible. I can switch back to the 'X' window and everything looks fine. When I leave 'X' my initial virtual terminal goes into this state as well which is a problem because the only way to fix the problem is to reboot the machine. This is difficult when you cannot see what you are typing. This only happens when a mono VGA monitor is used. My work around is to boot the system with a color VGA monitor attached and after the system is up in level 2 or 3 I replace the monitor with the mono one. The mono one works fine with this work around. You may be interested to know that the color monitor does appear in color so the driver really does think that it is color. The hardware is a Compaq 386/20E with a builtin VGA mono/color controller. 'X' works fine under 386ix 1.0.6 so I presume that something has changed under 2.0.2. Has anybody seen this problem? Could it be related to my 'X' configuration? My Xconfig is as follows: # 386/ix X Window System Configuration file #ident @(#)Xconfig 1.10 - 89/09/28 # RESOURCE TYPE INFO NUMBER DEVICE #dev type manuf extra dpy.scr device # comment keyboard AT 101 0 /dev/console:/dev/vt%02d mouse LOGI-B 3 0 /dev/logi display VGA "640x480 16 10x7" 0 /dev/console Please mail any suggestions to me. -- -------------------------------------------------- Jeffrey Roberts {utzoo,utcsri,uunet}!hcr!jeff HCR Corporation Tel:(416)922-1937 Toronto, Canada Fax:(416)922-8397
randy@chinet.chi.il.us (Randy Suess) (02/24/90)
In article <1990Feb19.195600.7778@hcr.uucp> jeff@hcr.uucp (Jeffrey Roberts) writes:
]When 'X' is started up from any virtual terminal, ie: console, vt01 etc..
]'X' starts up with no problem. If I switch to another virtual terminal
]I can see the cursor but nothing else, ie: any characters that I type
]are invisible.
This happens with any mono vga monitor. I understand it is a
bug in the VGA drivers. Quickest way to get around it that I have
found is to run VPIX from a blanked out virtual console. This
seems to re-initialize the vga card.
-randy
--
Randy Suess
randy@chinet.chi.il.us
logan@inpnms.UUCP (Jim Logan) (02/28/90)
In article <1990Feb19.195600.7778@hcr.uucp> jeff@hcr.uucp (Jeffrey Roberts) writes:
# I recently encountered an interesting problem while installing
# 'X' windows version 1.1.1 under 386ix 2.0.2. The installation went
# smoothly and a new kernel was built and installed with no difficulty.
# When 'X' is started up from any virtual terminal, ie: console, vt01 etc..
# 'X' starts up with no problem. If I switch to another virtual terminal
# I can see the cursor but nothing else, ie: any characters that I type
# are invisible. I can switch back to the 'X' window and everything
# looks fine. When I leave 'X' my initial virtual terminal goes into this
# state as well which is a problem because the only way to fix the problem
# is to reboot the machine. This is difficult when you cannot see what
# you are typing.
#
# This only happens when a mono VGA monitor is used.
Not true. This also happens to me when I use X with an EGA
board. I intend to look through the documentation to see if
there is an ioctl() call that can be used to re-initialize the
screen(s). I'll let you in on it if I find anything.
--
James Logan UUCP: uunet!inpnms!logan
Data General Telecommunications Inet: logan%inpnms@uunet.uu.net
(301) 590-3198
durden@dell.dell.com (George A. Durden) (03/02/90)
In article <232@inpnms.UUCP> logan@inpnms.UUCP (Jim Logan) writes: }In article <1990Feb19.195600.7778@hcr.uucp> jeff@hcr.uucp (Jeffrey Roberts) writes: }# I recently encountered an interesting problem while installing }# 'X' windows version 1.1.1 under 386ix 2.0.2. The installation went }# smoothly and a new kernel was built and installed with no difficulty. }# When 'X' is started up from any virtual terminal, ie: console, vt01 etc.. }# 'X' starts up with no problem. If I switch to another virtual terminal }# I can see the cursor but nothing else, ie: any characters that I type }# are invisible. I can switch back to the 'X' window and everything }# looks fine. When I leave 'X' my initial virtual terminal goes into this }# state as well which is a problem because the only way to fix the problem }# is to reboot the machine. This is difficult when you cannot see what }# you are typing. }# }# This only happens when a mono VGA monitor is used. } }Not true. This also happens to me when I use X with an EGA }board. I intend to look through the documentation to see if }there is an ioctl() call that can be used to re-initialize the }screen(s). I'll let you in on it if I find anything. } Boy am I familiar with these bugs. First, let me comment on the X/mono bug. I just spent a few weeks tracking this down. We, Dell, produce a UNIX product based on ISC 2.0.2. I assumed the bug was in the Xvga server management of the VGA controller state in vt switching. I was wrong. The bug is in the UNIX console driver. I have fixed it in our UNIX product Dell UNIX 1.1 update 1.1.2 and will be feeding it back to ISC so they can provide it to their customers. I believe that a similar problem could cause the EGA bug. The deal is for you folks with source, the register values in the table used for reloading the fonts for a monochrome VGA are incorrect. Sorry can't be more specific due to Licensing Agreements (ya know the deal). You can cause the same failure without X by starting a vpix session on a vt and running some graphics app (ex. flight sim) and then doing a vt flip to a UNIX vt. Notice the cursor is positioned properly, just no characters on screen (due to lack of fonts for controller to utilize). A workaround is to do: stty ENH_C80x25 # Change mode to anything else then do: stty VGA_MONO80x25 # Changing back causes font reload voila - everythings okay (at least until you vt flip into X and out again...) or on one of the blank VTs, start vpix and quit. Voila - fixed again. Hope this helps... Contact me via email for more discussion of this or other topics. George -- George A. Durden Dell Computer Corporation P#: (512) 338-8621 9505 Arboretum Blvd. !s: cs.utexas.edu!dell!durden Austin, Texas 78759 @s: durden@dell.dell.com
logan@inpnms.UUCP (Jim Logan) (03/02/90)
In article <232@inpnms.UUCP> logan@inpnms.UUCP I wrote: # In article <1990Feb19.195600.7778@hcr.uucp> jeff@hcr.uucp (Jeffrey Roberts) # writes: # # When 'X' is started up from any virtual terminal, ie: console, vt01 etc.. # # 'X' starts up with no problem. If I switch to another virtual terminal # # I can see the cursor but nothing else, ie: any characters that I type # # are invisible. # # This only happens when a mono VGA monitor is used. # # Not true. This also happens to me when I use X with an EGA # board. I intend to look through the documentation to see if # there is an ioctl() call that can be used to re-initialize the # screen(s). I'll let you in on it if I find anything. Here is a temporary solution to the problem, and a way to access the EGA 43-line mode. It's just a quick hack, but it works. ------------------8<-------------------------------------------------------- /* * mode.c James Logan Tue Feb 27 19:13:07 EST 1990 * Change video modes on the current virtual terminal. */ #include <stdio.h> #include <sys/types.h> #include <sys/at_ansi.h> #include <sys/vt.h> #include <sys/kd.h> #define MAXMODES 19 extern void exit(), perror(); char *MyName; int ModeNum, Modes[MAXMODES] = { SW_B40x25, SW_C40x25, SW_B80x25, SW_C80x25, SW_BG320, SW_CG320, SW_BG640, SW_CG320_D, SW_CG640_E, SW_EGAMONOAPA, SW_CG640x350, SW_ENH_CG640, SW_EGAMONO80x25, SW_ENHB40x25, SW_ENHC40x25, SW_ENHB80x25, SW_ENHC80x25, SW_ENHB80x43, SW_ENHC80x43 }; int main(argc, argv) int argc; char **argv; { MyName = *argv; if (argc != 2) { (void) fprintf(stderr, "Usage: %s mode-number\n", MyName); exit(2); /*NOTREACHED*/ } ModeNum = atoi(argv[1]); if (ModeNum < 0 || ModeNum > MAXMODES) { (void) fprintf(stderr, "%s: mode-number must be between 0 and %d.\n", MyName); exit(1); /*NOTREACHED*/ } if (ioctl(0, Modes[ModeNum], 0) == -1) { perror("ioctl"); exit(1); /*NOTREACHED*/ } exit(0); /*NOTREACHED*/ } ------------------8<-------------------------------------------------------- -- James Logan UUCP: uunet!inpnms!logan Data General Telecommunications Inet: logan%inpnms@uunet.uu.net (301) 590-3198