README for XFree86 2.1 on Mach ------------------------------ All XFree86 client binaries should work with not only the Mach 2.5 kernel but also the Mach 3.0 kernel. Mach 2.5 kernels should support both the traditional SVGA/VGA servers and the newer accelerator servers. The Mach 3.0 kernel MK83 has a fix necessary for Mach 3.0 to support the new accelerator servers and for Superprobe; this change allows the full 64K of I/O ports to be accessed. THUS, IF YOU USE MACH 3.0, YOU MUST RUN MACH 3.0 Kernel RELEASE MK83 OR LATER TO USE ANY ACCELERATOR SERVER. The XF86_SVGA server, XF86_VGA16 server, and XF86_Mono server should still continue to function under the older Mach 3.0 kernels. Note: the latest SuperProbe can be used with older Mach 3.0 kernels by specifying the command line option -no16. Autodetection of SVGA clocks will not work at all with the Mach 3.0 kernel; the clocks must be specified in the Xconfig file. Mach 2.5 kernels can compute the clocks correctly. (So you might need to use Mach 2.5 to get the data for the clock line.) Autodetection of the SVGA chipset requires Mach 2.5 release X142E or later, or Mach 3.0 release MK76 or later. Alternatively, you can specify a Chipset line in the Xconfig file. Lastly, only the ATI Mach32 Accelerator server (XF86_Mach32) has been extensively tested under Mach 3.0. It works reasonably and the OS intensive features, like linear memory [non-bank switched], seem to work fine. An S3 (801) board on an ISA bus has been tested and also seems to work. We have not checked the non-banked memory feature on S3 or other cards. USING AND CONFIGURING THE INSTALLED BINARIES -------------------------------------------- By default, the CMU BINARY DISTRIBUTION obtained via sup is installed in /usr/misc/.X11 (not /usr/X386 as is the case for other platforms). Mouse selection for Mach is different from that described in the X386 manual entry. The `Mouse' keyword in Xconfig is ignored. The mouse device is always /dev/mouse. Mach supports several kinds of external mice, the logitech three button mouse, the microsoft two button mouse, the PS2 mouse, and the logitech mouseman mouse. We do not support any kind of bus mouse. The way you indicate the mouse type and com port is with the mouse device minor. The value you set the minor to is computed by the formula: * 8 + is 0, or 1 or ... depending on which com port you plug your mouse into. (Some architectures prefer to make com0 the modem line.) is: 0 for logitech mouse 1 for microsoft mouse 2 for ps2 mouse 3 for no real mouse at all 4 for logitech mouse man (M+ or V type) We have implemented a neat hack for notebooks so that they don't have to be saddled with a HUGE external mouse. Scroll lock toggles a mode wherein "seldom used 'function keys'" are used to represent mouse actions. F1, F2, F3 are the left, middle, and right mouse. The first key stroke represents a down click and the second key stroke represents an up click for the mouse button. Then the up down, right, left, arrow keys actually move the mouse AND if you have a standard pad with home, pageup, end, and pagedown filling in the square around the up, down, right, and left arrow keys then the former set do the obvious and move the mouse along the diagonals. Try it ... ACKNOWLEDGEMENT --------------- Elliot Dresselhaus did the initial work of converting the SCO only driver to work under Mach2.5. Ernest Hua added support for Mach's unique way of treating the mouse. Joel Jacobson tested the release to make sure it built at sites other than CMU. Robert V. Baron was responsible for Mach3.0 support and feeding the Mach changes back to the XFree86 development group. Lastly, we are indebted to all the developers of XFree86. BUILDING THE DISTRIBUTION ------------------------- Refer to mit/server/ddx/x386/README for details about building and configuring the distribution. If you want to change anything it should be done in mit/config/site.def; in most cases, the default settings in mit/config/x386.cf will be suitable. I build XFree86 under in a Tahoe Binary Environment with a Mach 3.0 kernel and I make sure that the Mach 3.0 "release" include files and libraries are not on my path. The Mach interface (API) is slightly different between the Mach 2.5 kernel and Mach 3.0 kernel, but the Mach 3.0 kernel was designed to be upwardly compatible with Mach 2.5 kernel. This means that if you build XFree86 with Mach 2.5 includes and libraries [the default in the Tahoe Environment] the binaries will run on either Mach 3.0 or Mach 2.5. If you choose to build with the Mach 3.0 headers and libraries, the applications will only work with the Mach 3.0 kernel. The Mach kernel calls made in some of the vga*/*/*driver.c and SuperProbe use the Mach 2.5 calls names. To build with Mach 3.0 these latter few Mach 2.5 dependencies must be changed. There are several different Mach Operating Systems available. One is distributed by Mt.Xinu. The others are distributed by CMU; CMU distributes two different OS's; Mach 2.5 - a monolithic kernel and Mach 3.0 a micro kernel with Unix as a server. Both OS's from CMU use the same set of binaries which were developed from the BSD4.3 Tahoe release. (Note the Mt.Xinu system uses a later "generation" of application programs. Lastly, the environment used internally at CMU is still different from what is distributed externally. This environment supports AFS and Kerberos and ...) The CMU Tahoe environment uses a gcc 1.36 compiler with a bsd derived cpp (not __STDC__); the Mt.Xinu system uses gcc 1.37. We do not build XFree86 under all these systems, just one -- CMU Tahoe environment distributed with Mach 2.5. It should be possible to build XFree86 using any application environment and with either Mach 2.5 or Mach 3.0. Please let us know of any difficulties. Lastly, the normal XFree86 distribution makes all the servers in bin/ setuid root; this is not necessary. In Mach, access to I/O privileges is not controlled by root; rather it is controlled by /dev/iopl. What is necessary for Mach is that the X servers be able to open /dev/iopl for read/write. There are many ways to achieve this effect. $XFree86: mit/server/ddx/x386/README.Mach,v 2.2 1994/03/08 08:07:08 dawes Exp $