# # May 1, 1997 # Kazuyoshi Harada # harada-k@gold.cs.uec.ac.jp # (This address is available at least till March 31, 1998) # IBM ThinkPad 365XD DSTN (2625-EJF) # Pentium 120MHz (Intel) # ? ? ? # Linux # RedHat 4.0 (which I'm using is not from RedHat official package # but included in InfoMagic 6-CD set Dec. 1996) # kernel 2.0.27 # XFree86 3.2 (rpm of Elf binaries in InfoMagic 6-CD set) # XF86_SVGA # Trident cyber 9320 LCD # ? ? ? # ? ? ? # PCI # 1024kbytes # 8bpp (= 256colors) # Max 800x600 # 11.3 inch # DSTN # Note, There are two problems. The first problem is that if you # simply run X the display will become the superposition of many # duplicates of a image, the left part of your screen being repeated # over and over again from left to right on the screen. To solve # this problem, hit Fn key and F7 key at the same time after you # start X. The second problem is that when you exit X the virtual # console will be scrambled. The solution of the second problem # is somewhat complicated. It needs a external program "Xcyber.c". # Although Xcyber was originally programed by Tomohiro Kawase for # running X on ThinkPad 560, Linux (not for FreeBSD), we can use # it to restore the virtual console. # # !! FreeBSD users need an alternative to "Xcyber.c", but I don't # know about it, sorry... Please visit # ftp://ftp.phys.keio.ac.jp/pub/XFree86/800x600/news/FreeBSD-cy9382.c # you may get some information... # # You can get the original Xcyber.c from # ftp://ftp.phys.keio.ac.jp/pub/XFree86/800x600/news/IBM_ThinkPad_5560_yet_another # but its explanation includes Japanese, so I quote the pure part # of the program here: # # ------------------------------ cut here ----------------------------- # #include # #include # #include # #include # # main(ac, av) # int ac ; # char *av[] ; # { # iopl(3) ; # (void)getireg(0x3c4, 0x0b) ; # setireg(0x3c4, 0x0e, getireg(0x3c4, 0x0e) | 0x80) ; # # if (ac > 1) # setireg(0x3ce, 0x30, 0x81) ; # else # setireg(0x3ce, 0x30, 0x00) ; # } # # setireg(base, idx, val) # { # outb(idx, base) ; # outb(val, base + 1) ; # } # # getireg(base, idx) # { # outb(idx, base) ; # return(inb(base + 1)) ; # } # ------------------------------ cut here ----------------------------- # # Saving this file as "Xcyber.c", compile and install it, say: # # % gcc -O Xcyber.c -o Xcyber # % cp ./Xcyber /usr/local/bin/Xcyber # % chown root /usr/local/bin/Xcyber # % chmod u+s /usr/local/bin/Xcyber # # When you start X what you have to do is simple, that is: # # % xinit(or startx); Xcyber back # # and press Fn-F7 again. # As you can see, in the usage above the else statement in Xcyber # is never executed, so we can rewrite the program somewhat smaller, # for example: # # ------------------------------ cut here ----------------------------- # #include # #include # #include # #include # # main() { # iopl(3) ; # (void)getireg(0x3c4, 0x0b) ; # setireg(0x3c4, 0x0e, getireg(0x3c4, 0x0e) | 0x80) ; # setireg(0x3ce, 0x30, 0x81) ; # } # # setireg(base, idx, val) { # outb(idx, base); # outb(val, base + 1) ; # } # # getireg(base, idx) { # outb(idx, base); # return(inb(base + 1)) ; # } # ------------------------------ cut here ----------------------------- # # Compile and install just like the original, then all you have # to do is: # # % xinit(or startx); Xcyber # # without the argument "back". Of cource, Fn-F7 trick is # necessary, too. # Here, we can play doom on SVGA without rebooting :-) # # If you are a powerful programmer, please make a patch for the # device driver of XFree which can be availavle not only for # Linux users but also for FreeBSD users and so on, and ask # The XFree86 Project to completely support 365XD DSTN model. # # If you know a more elegant and essential way, please tell me. # # Acknowledgments to: # Steven Dew, he told me the Fn-F7 trick. # Tomohiro Kawase, he programed the original version of # "Xcyber.c". # Yasuto Nagata, he told me how to clean up the virtual # console with Xcyber. # # File generated by xf86config. # ------------------------------ cut here ----------------------------- # # Copyright (c) 1995 by The XFree86 Project, Inc. # # Permission is hereby granted, free of charge, to any person obtaining a # copy of this software and associated documentation files (the "Software"), # to deal in the Software without restriction, including without limitation # the rights to use, copy, modify, merge, publish, distribute, sublicense, # and/or sell copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL # THE XFREE86 PROJECT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF # OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. # # Except as contained in this notice, the name of the XFree86 Project shall # not be used in advertising or otherwise to promote the sale, use or other # dealings in this Software without prior written authorization from the # XFree86 Project. # # ********************************************************************** # Refer to the XF86Config(4/5) man page for details about the format of # this file. # ********************************************************************** # ********************************************************************** # Files section. This allows default font and rgb paths to be set # ********************************************************************** Section "Files" # The location of the RGB database. Note, this is the name of the # file minus the extension (like ".txt" or ".db"). There is normally # no need to change the default. RgbPath "/usr/X11R6/lib/X11/rgb" # Multiple FontPath entries are allowed (which are concatenated together), # as well as specifying multiple comma-separated entries in one FontPath # command (or a combination of both methods) # # If you don't have a floating point coprocessor and emacs, Mosaic or other # programs take long to start up, try moving the Type1 and Speedo directory # to the end of this list (or comment them out). # FontPath "/usr/X11R6/lib/X11/fonts/misc/" FontPath "/usr/X11R6/lib/X11/fonts/75dpi/:unscaled" FontPath "/usr/X11R6/lib/X11/fonts/100dpi/:unscaled" FontPath "/usr/X11R6/lib/X11/fonts/Type1/" FontPath "/usr/X11R6/lib/X11/fonts/Speedo/" FontPath "/usr/X11R6/lib/X11/fonts/75dpi/" FontPath "/usr/X11R6/lib/X11/fonts/100dpi/" # For OSs that support Dynamically loaded modules, ModulePath can be # used to set a search path for the modules. This is currently supported # for Linux ELF, FreeBSD 2.x and NetBSD 1.x. The default path is shown # here. ModulePath "/usr/X11R6/lib/modules" EndSection # ********************************************************************** # Module section -- this is an optional section which is used to specify # which dynamically loadable modules to load. Dynamically loadable # modules are currently supported only for Linux ELF, FreeBSD 2.x # and NetBSD 1.x. Currently, dynamically loadable modules are used # only for some extended input (XInput) device drivers. # ********************************************************************** # # Section "Module" # # This loads the module for the Joystick driver # # Load "xf86Jstk.so" # # EndSection Section "Module" Load "pex5.so" Load "xie.so" EndSection # ********************************************************************** # Server flags section. # ********************************************************************** Section "ServerFlags" # Uncomment this to cause a core dump at the spot where a signal is # received. This may leave the console in an unusable state, but may # provide a better stack trace in the core dump to aid in debugging # NoTrapSignals # Uncomment this to disable the server abort sequence # This allows clients to receive this key event. # DontZap # Uncomment this to disable the / mode switching # sequences. This allows clients to receive these key events. # DontZoom # Uncomment this to disable tuning with the xvidtune client. With # it the client can still run and fetch card and monitor attributes, # but it will not be allowed to change them. If it tries it will # receive a protocol error. # DisableVidModeExtension # Uncomment this to enable the use of a non-local xvidtune client. # AllowNonLocalXvidtune # Uncomment this to disable dynamically modifying the input device # (mouse and keyboard) settings. # DisableModInDev # Uncomment this to enable the use of a non-local client to # change the keyboard or mouse settings (currently only xset). # AllowNonLocalModInDev EndSection # ********************************************************************** # Input devices # ********************************************************************** # ********************************************************************** # Keyboard section # ********************************************************************** Section "Keyboard" Protocol "Standard" # when using XQUEUE, comment out the above line, and uncomment the # following line # Protocol "Xqueue" AutoRepeat 300 5 # Let the server do the NumLock processing. This should only be required # when using pre-R6 clients # ServerNumLock # Specify which keyboard LEDs can be user-controlled (eg, with xset(1)) # Xleds 1 2 3 # To set the LeftAlt to Meta, RightAlt key to ModeShift, # RightCtl key to Compose, and ScrollLock key to ModeLock: # LeftAlt Meta # RightAlt ModeShift # RightCtl Compose # ScrollLock ModeLock # To disable the XKEYBOARD extension, uncomment XkbDisable. XkbDisable # To customise the XKB settings to suit your keyboard, modify the # lines below (which are the defaults). For example, for a non-U.S. # keyboard, you will probably want to use: # XkbModel "pc102" # If you have a US Microsoft Natural keyboard, you can use: # XkbModel "microsoft" # # Then to change the language, change the Layout setting. # For example, a german layout can be obtained with: # XkbLayout "de" # or: # XkbLayout "de" # XkbVariant "nodeadkeys" # # If you'd like to switch the positions of your capslock and # control keys, use: # XkbOptions "ctrl:swapcaps" # These are the default XKB settings for XFree86 # XkbRules "xfree86" # XkbModel "pc101" # XkbLayout "us" # XkbVariant "" # XkbOptions "" XkbKeymap "xfree86(us)" EndSection # ********************************************************************** # Pointer section # ********************************************************************** Section "Pointer" Protocol "PS/2" # Device "/dev/psaux" Device "/dev/mouse" # When using XQUEUE, comment out the above two lines, and uncomment # the following line. # Protocol "Xqueue" # Baudrate and SampleRate are only for some Logitech mice # BaudRate 9600 # SampleRate 150 # Emulate3Buttons is an option for 2-button Microsoft mice # Emulate3Timeout is the timeout in milliseconds (default is 50ms) Emulate3Buttons Emulate3Timeout 50 # ChordMiddle is an option for some 3-button Logitech mice # ChordMiddle EndSection # ********************************************************************** # Xinput section -- this is optional and is required only if you # are using extended input devices. This is for example only. Refer # to the XF86Config man page for a description of the options. # ********************************************************************** # # Section "Xinput" # SubSection "WacomStylus" # Port "/dev/ttyS1" # DeviceName "Wacom" # EndSubSection # SubSection "WacomCursor" # Port "/dev/ttyS1" # EndSubSection # SubSection "WacomEraser" # Port "/dev/ttyS1" # EndSubSection # # SubSection "Elographics" # Port "/dev/ttyS1" # DeviceName "Elo" # MinimumXPosition 300 # MaximumXPosition 3500 # MinimumYPosition 300 # MaximumYPosition 3500 # Screen 0 # UntouchDelay 10 # ReportDelay 10 # EndSubSection # # SubSection "Joystick" # Port "/dev/joy0" # DeviceName "Joystick" # TimeOut 10 # MinimumXPosition 100 # MaximumXPosition 1300 # MinimumYPosition 100 # MaximumYPosition 1100 # # CenterX 700 # # CenterY 600 # Delta 20 # EndSubSection # # The Mouse Subsection contains the same type of entries as the # standard Pointer Section (see above), with the addition of the # DeviceName entry. # # SubSection "Mouse" # Port "/dev/mouse2" # DeviceName "Second Mouse" # Protocol "Logitech" # EndSubSection # EndSection # ********************************************************************** # Monitor section # ********************************************************************** # Any number of monitor sections may be present Section "Monitor" Identifier "IBM ThinkPad 365XD DSTN 800x600" VendorName "Unknown" ModelName "Unknown" # HorizSync is in kHz unless units are specified. # HorizSync may be a comma separated list of discrete values, or a # comma separated list of ranges of values. # NOTE: THE VALUES HERE ARE EXAMPLES ONLY. REFER TO YOUR MONITOR'S # USER MANUAL FOR THE CORRECT NUMBERS. HorizSync 20-80 # HorizSync 30-64 # multisync # HorizSync 31.5, 35.2 # multiple fixed sync frequencies # HorizSync 15-25, 30-50 # multiple ranges of sync frequencies # VertRefresh is in Hz unless units are specified. # VertRefresh may be a comma separated list of discrete values, or a # comma separated list of ranges of values. # NOTE: THE VALUES HERE ARE EXAMPLES ONLY. REFER TO YOUR MONITOR'S # USER MANUAL FOR THE CORRECT NUMBERS. VertRefresh 20-80 # Modes can be specified in two formats. A compact one-line format, or # a multi-line format. # These two are equivalent # ModeLine "1024x768i" 45 1024 1048 1208 1264 768 776 784 817 Interlace # Mode "1024x768i" # DotClock 45 # HTimings 1024 1048 1208 1264 # VTimings 768 776 784 817 # Flags "Interlace" # EndMode # This is a set of standard mode timings. Modes that are out of monitor spec # are automatically deleted by the server (provided the HorizSync and # VertRefresh lines are correct), so there's no immediate need to # delete mode timings (unless particular mode timings don't work on your # monitor). With these modes, the best standard mode that your monitor # and video card can support for a given resolution is automatically # used. # 800x600 #ModeLine "800x600" 36.0 800 824 896 1024 600 601 603 625 ModeLine "800x600" 40 800 824 896 1024 600 601 603 625 EndSection # ********************************************************************** # Graphics device section # ********************************************************************** # Device configured by xf86config: Section "Device" Identifier "Trident TGUI9320LCD (generic)" VendorName "Trident" BoardName "Unknown" #VideoRam 1024 # Insert Clocks lines here if appropriate EndSection # ********************************************************************** # Screen sections # ********************************************************************** # The Colour SVGA server Section "Screen" Driver "svga" Device "Trident TGUI9320LCD (generic)" Monitor "IBM ThinkPad 365XD DSTN 800x600" Subsection "Display" Depth 8 Modes "800x600" ViewPort 0 0 Virtual 800 600 EndSubsection # Subsection "Display" # Depth 16 # Modes "800x600" # ViewPort 0 0 # Virtual 1024 768 # EndSubsection EndSection