home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #27 / NN_1992_27.iso / spool / comp / os / msdos / programm / 10680 < prev    next >
Encoding:
Text File  |  1992-11-17  |  26.0 KB  |  660 lines

  1. Newsgroups: comp.os.msdos.programmer
  2. Path: sparky!uunet!charon.amdahl.com!pacbell.com!sgiblab!sdd.hp.com!ux1.cso.uiuc.edu!news.cso.uiuc.edu!uxa.cso.uiuc.edu!jas37876
  3. From: jas37876@uxa.cso.uiuc.edu (John A. Slagel)
  4. Subject: Re: Protected Mode 386 C compilers
  5. References: <1992Nov15.095043.3449@csdvax.csd.unsw.edu.au>
  6. Message-ID: <Bxu195.E6L@news.cso.uiuc.edu>
  7. Sender: usenet@news.cso.uiuc.edu (Net Noise owner)
  8. Organization: University of Illinois at Urbana
  9. Date: Mon, 16 Nov 1992 23:29:27 GMT
  10. Lines: 648
  11.  
  12. u2105546@csdvax.csd.unsw.edu.au writes:
  13.  
  14. >Some Background.
  15. >I, together with a small team of programmers, artists and musicians are in the
  16. >process of writing an arcade game. This is to be not just any ordinary arcade
  17. >game but an experimental Super VGA arcade game written specifically for the
  18. >Linear addressing mode of the ET4000 chipset (by the way, if anyone can tell me 
  19. >how best to remap this memory then please mail me.). Anyway, we are going to
  20. >be programming for large amounts of memory hence we wish to use protected mode. 
  21.     Have you ever heard of DJGPP ??  This is a free C++ compiler that comes
  22.     with a 32 bit DOS extender.  You'll be interested in this, because it
  23.     remaps the SVGA memory to address D0000000L and then it uses the trapping
  24.     features of the 386 chip so that you write to the memory like its 1 Meg
  25.     of continous memory.  When you cross a bank, it will automatically send
  26.     the proper OUT's to the SVGA card to switch to the correct bank of SVGA
  27.     memory.   So, you wouldn't be limited to the ET4000.  The time for the
  28.     OUT's are not really significant, because if you do all your drawing in
  29.     system memory, which is 8 times faster than display memory on my system,
  30.     and then REP MOVSD it to the SVGA memory, you will only flip banks a few
  31.     times.  However, the latest I heard you need to rewrite the extender
  32.     (source code is there) to handle interrupts if you want to do music in
  33.     the background or anything.
  34.  
  35.     Here is the README file: (This is from an older version)
  36.  
  37.  
  38. This is the README file for DJ's GCC port to DOS ("djgpp")
  39.  
  40. Contents:
  41.     * Overview
  42.     * What's available
  43.     * How to install
  44.     * Common questions
  45.     * Deviations and Caveats
  46.     * Copyright information
  47.  
  48. Disclaimer: This software is distributed WITHOUT ANY WARRANTY; without
  49. even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
  50. PURPOSE.
  51.  
  52. DJ Delorie
  53. USmail: 24 Kirsten Ave, Rochester, NH 03867-2954, USA
  54. email:  dj@ctron.com
  55.  
  56.  
  57.  
  58.  
  59.  
  60. Overview:
  61.  
  62. This package contains a 32-bit 80386 DOS extender with symbolic
  63. debugger, a C/C++ compiler with utilities, development libraries, and
  64. source code.  It generates full 32-bit programs and supports full
  65. virtual memory with paging to disk. 
  66.  
  67. Requirements:
  68.  
  69. A 80386-based IBM compatible PC or PS/2, approximately 4-5Mb of hard
  70. drive space, and 512K RAM. 
  71.  
  72. Supported Wares:
  73.  
  74. * Up to 128M of extended memory (expanded under VCPI)
  75. * Up to 128M of disk space used for swapping
  76. * SuperVGA 256-color mode up to 1024x768
  77. * 80387
  78. * XMS & VDISK memory allocation strategies
  79. * VCPI programs, such as QEMM and 386MAX
  80.  
  81. Unsupported:
  82.  
  83. * DPMI programs, such as Windows 3.0
  84. * Multiprocessing (fork())
  85.  
  86.  
  87.  
  88.  
  89. File location:
  90.  
  91.     host:      grape.ecs.clarkson.edu
  92.     login:     ftp
  93.     password:  send your e-mail address
  94.     directory: ~ftp/pub/msdos/djgpp
  95.  
  96. Many thanks to the sysops at Clarkson for providing a home to djgpp!
  97.  
  98. As a convenience to non-FTP users, djgpp is also stored on Clarkson's
  99. archive server, sun.soe.clarkson.edu.  To access the archive server,
  100. do this:
  101.    % mail archive-server@sun.soe.clarkson.edu
  102.    Subject: <none>
  103.    help
  104.    index msdos/djgpp
  105.    ^D
  106.  
  107. NOTE: In accordance with FSF CopyLeft, you are not allowed to upload
  108. this program to a distribution site unless that site also makes the FSF
  109. sources for these programs available.  Please read the file COPYING for
  110. more details.  FSF sources are available on prep.ai.mit.edu, and on
  111. either grape.ecs.clarkson.edu or sun.soe.clarkson.edu
  112.  
  113. NOTE: If your application links in object modules that were written
  114. by FSF, your application counts as a "derived work" and must obey
  115. the provisions of the FSF Copyrights.  See the file COPYING for
  116. details.  Specifically, the C++ classes in libc.a and obstacks are
  117. FSF works that are covered by the GNU GPL.  The mere act of compiling
  118. does not affect the copyright status of your program.
  119.  
  120.  
  121. File formats:
  122.  
  123.     .ZIP format - djgpp.zip - one 2.2M file, contains everything.
  124.  
  125.     split .ZIP - djgppzip.000 through djgppzip.005 (or so), each
  126.                  320K-ish.  Use the merge program to merge them into 
  127.                  djgpp.zip ("merge djgppzip djgpp.zip").
  128.  
  129.     other - readme, merge.c/.exe, split.c/.exe are separately available
  130.  
  131.  
  132.  
  133. Directories:
  134.  
  135.     bin          all binaries (cpp, cc1, extender, etc)
  136.     lib          all libraries (crt0.*, libc.a, libgr.a, libpc.a)
  137.     include      all include files
  138.     docs         all documents (including this one)
  139.     go32         sources for the extender
  140.     drivers      various SuperVGA drivers
  141.     libsrc       sources for the libraries
  142.     diffs        diffs from FSF distributions to dos-compilable
  143.     utils        sources for the utilities
  144.     samples      sample C++ sources using graphics & mouse
  145.     emu387       80387 emulator for non-80387 systems
  146.  
  147.  
  148. bin:
  149.     bison.exe    lalr(1) parser
  150.     flex.exe     lexical parser
  151.     cpp.exe      C and C++ preprocessor
  152.     cc1.exe      C compiler
  153.     cc1plus.exe  C++ compiler
  154.     as.exe       80386/80387 assembler
  155.     ld.exe       a.out (BSD) format linker
  156.     ar.exe       archive utility
  157.     nm.exe       name list utility
  158.     size.exe     a.out section size utility
  159.     strip.exe    symbol stripper
  160.     objdump.exe  display info from .o file
  161.     gcc.exe      compilation coordinator
  162.     go32.exe     basic 32-bit DOS extender
  163.     debug32.exe  32-bit DOS extender with symbolic debugger
  164.     stub.exe     stub to prepend on aout files to make .exe files
  165.     aout2exe.bat turns aout file to .exe by prepending stub.exe
  166.     diff.exe     creates diffs, including context diffs
  167.     patch.exe    patches source from diffs, including context diffs
  168.     djtarx.exe   tar extractor for FSF tarfiles if you don't have a tar
  169.     utod.exe     convert Unix text files to DOS text files
  170.     dtou.exe     convert DOS text files to Unix text files
  171.     split.exe    split big binaries into many little binaries
  172.     merge.exe    merge many little binaries back into one big binary
  173.     gprof.exe    profile report generator
  174.  
  175. lib:
  176.  
  177.     libc.a       all standard routines (BSD style), and C++ methods & support
  178.     libm.a       math routines
  179.     libgr.a      graphics routines and mouse support
  180.     libpc.a      routines for PC support (in/out, getkey, kbhit, screen utils)
  181.     *_p.a        profiled libraries
  182.     crt0.s       C runtime source
  183.     crt0.o       C runtime object
  184.     bison.simple bison support
  185.     bison.hairy  bison support
  186.     flex.skel    flex support file
  187.     libflex.a    flex support library
  188.  
  189. include:
  190.  
  191.     Most BSD-style and SYSV-style include files.  These mostly came from
  192.     the G++ sources.
  193.     sys/*.h      MS-DOS specific
  194.     graphics.h   for libgr.a
  195.     pc.h         for libpc.a
  196.     mouse.h      for mouse routines in libgr.a
  197.  
  198. docs:
  199.  
  200.     readme       this document
  201.     copying      GNU General Public License
  202.     copying.dj   Copyright information for items (C) DJ Delorie
  203.     debug32.doc  instructions for the symbolic debugger
  204.     internal.doc information about how the extender works
  205.     libc.doc     differences and enhancements
  206.     libm.doc     list of implemented functions
  207.     libpc.doc    documentation
  208.     libgr.doc    documentation
  209.  
  210. go32:
  211.  
  212.     sources for the extender.  Requires Turbo C and Turbo Assembler
  213.  
  214. drivers:
  215.  
  216.     VGA and SuperVGA drivers - source and binary.  Use the GO32 environment
  217.     variable to select and configure one of these according to the VGA card
  218.     you have.
  219.  
  220. libsrc:
  221.  
  222.     Sources for the libraries.  These are compiled with gcc.  The makefile
  223.     is set up for NDMAKE.  The source files came from three sources:
  224.     
  225.         (1) Me.  Mostly the system call routines, and some string routines.
  226.             All of libpc.a, libgr.a, libm.a .
  227.         (2) FSF.  These are the GCC support routines, C++ support, and
  228.             other routines that came with gcc (malloc, obstack, alloca, etc)
  229.         (3) BSD.  These are mostly the stdio and stdlib routines, and
  230.             the rest of the string routines.  BSD requires that I mention
  231.             that their sources are copyright BSD and that I have modified
  232.             some to comply with the include files provided by FSF.  These
  233.             sources are the "freed files" everyone keeps talking about.
  234.  
  235. diffs:
  236.  
  237.     Context diffs from the original FSF sources to the GNUDOS sources.  See
  238.     the README and VERSIONS files in that directory for more info.
  239.  
  240. utils:
  241.  
  242.     Sources for djtarx, utod, dtou, split, and merge.
  243.  
  244. samples:
  245.  
  246.     Various samples showing how to use the mouse, graphics, C++, setjmp(),
  247.     etc.
  248.  
  249. emu387:
  250.  
  251.     80387 emulator and source code.  I don't expect this to work perfectly,
  252.     but should cover most normal floating point math.  To use, add
  253.     "emu /djgpp/emu387/emu387" to the GO32 environment variable.  (ie:
  254.     set GO32=emu /djgpp/emu387/emu387)
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261.  
  262.  
  263. INSTALLING:
  264.  
  265. To install, you must do the following:
  266.  
  267. * Create a directory to install in, like c:\djgpp.
  268.  
  269. * Create a "temp" directory, like c:\tmp.
  270.  
  271. * Un-zip djgpp.zip in that directory.
  272.     C:\DJGPP> pkunzip -d djgpp.zip
  273.  
  274. * Add the following lines to C:\AUTOEXEC.BAT:
  275.     set GCCBIN=c:\djgpp\bin
  276.                  ^ Use DOS slashes here so that AOUT2EXE.BAT will work
  277.     set GCCINC=c:/djgpp/include
  278.     set GCCLIB=c:/djgpp/lib
  279.     set GCCTMP=c:/tmp
  280.     set GO32TMP=c:/tmp
  281.     set GO32=ansi driver c:/djgpp/drivers/SOMETHING.grd gw 1024 gh 768
  282.                          ^^^ whatever driver works with your VGA (optional)
  283.     set BISON_SIMPLE=c:/djgpp/lib/bison.simple
  284.     set BISON_HAIRY=c:/djgpp/lib/bison.hairy
  285.     set FLEX_SKELETON=c:/djgpp/lib/flex.skeleton
  286.  
  287.   TMP and TEMP are checked if GCCTMP isn't set
  288.   GO32TMP is where go32 puts its paging file (GCCTMP, TMP, TEMP are checked,
  289.   in that order, also)
  290.  
  291.   Remember that unless you manually type these at the command line,
  292.   they won't take effect until you reboot.  Don't include the "ansi"
  293.   keyword in the "go32" variable if you don't have an ANSI.SYS driver
  294.   or equivalent.
  295.  
  296. * Add your binaries directory to your PATH in C:\AUTOEXEC.BAT
  297.     SET PATH= . . . ;C:\DJGPP\BIN
  298.  
  299. That's it! G++ is now installed on your system.
  300.  
  301.  
  302.  
  303.  
  304.  
  305. The GO32 environment variable:
  306.  
  307.  
  308. This variable controls the options available in go32 or debug32.  The
  309. syntax of this variable is:
  310.  
  311.   SET GO32=[parm [value]] [parm [value]] . . .
  312.  
  313. Parameters:
  314.  
  315.   ansi           Use ANSI commands to control the color in debug32
  316.   mono           Use the Monochrome monitor for debugging - useful when
  317.                    debugging graphics applications
  318.   1rm            Redirect stdout (file #1) to the monochrome monitor
  319.   2rm            Redirect stderr (file #2) to the monochrome monitor
  320.   1r2            Redirect stdout (file #1) to stderr (file #2)
  321.   2r1            Redirect stderr (file #2) to stdout (file #1)
  322.  
  323.   emu [path]     Use the specified file as the 80387 emulator
  324.  
  325.   driver [path]  Use the specified file as the graphics driver
  326.   gw [width]     Default graphics width
  327.   gh [height]    Default graphics height
  328.   tw [width]     Default text width
  329.   th [height]    Default text height
  330.  
  331.  
  332. These parameters may occur in any order.
  333.  
  334. Note that "1rm" and "2rm" are done before "1r2" and "2r1", so "1rm 2r1" sends
  335. stdout to the mono monitor and stderr to any redirection used.
  336.  
  337. Examples:
  338.  
  339.   C:\> set GO32=mono driver c:\djgpp\drivers\tseng4k.grd gw 1024 gh 768 tw 132 th 43
  340.   C:\> set GO32=ansi
  341.   C:\> set GO32=driver c:\djgpp\drivers\tseng4k.grd ansi
  342.   C:\> set GO32=mono 1rm 2rm
  343.  
  344.  
  345.  
  346.  
  347.  
  348.  
  349.  
  350. Common Questions:
  351.  
  352. Q: When I run "gcc e:\proj\prog.c" it says "undefined escape sequence \p"?
  353. A: Gcc is a *unix* compiler - you must use *unix* slashes (e:/proj/prog.c).
  354.    Environment variables (like GCCINC) may, however, use either, as they
  355.    are converted.
  356.  
  357. Q: I type "GCC PROG.C" and ld complains about PROG.C not being an object.
  358. Q: I type "gcc prog.cxx" to compile a C++ program, and ld complains.
  359. A: Gcc is *not* case insensitive like DOS is, and it uses the file's
  360.    extension to determine how to compile a file.  Valid extensions are:
  361.      .cc = C++ source (passed through cpp)
  362.      .c = C source that must be passed through cpp first
  363.      .i = raw C source (no cpp pass)
  364.      .S = assembler that must be passed through cpp first
  365.      .s = raw assembler source (no cpp pass)
  366.    any other file is passed to the linker
  367.  
  368. Q: I compile my program, but can't run the output file.
  369. A: DOS doesn't know how to run unix-style a.out files.  That's what the
  370.    extender is for.  To run an a.out file called myprog, type
  371.      "go32 myprog . . ."
  372.  
  373. Q: Gcc doesn't recognize // as a comment in my C programs.
  374. A: That's because // isn't a comment in C.  If you want to compile C++,
  375.    then write C++ programs.  Gcc is really two compilers in one, not
  376.    one compiler that compiles both C and C++.  That's why you get
  377.    cc1 and cc1plus.
  378.  
  379. Q: I'm reading in data files, but the data gets corrupted.
  380. A: The default file type is DOS text, even for read() and write().  You must
  381.    tell the system that a file is binary through the "b" flag in fopen(),
  382.    or O_BINARY in open().
  383.  
  384. Q: I get "fatal signal 2" when I run gcc.
  385. A: When gcc reports a "signal", it really means that an error occurred
  386.    trying to run the given program.  The "signal" number is the DOS error
  387.    code, and 2 means "file not found".  Check the GCCBIN environment
  388.    variable and make sure it points to the directory with cpp.exe,
  389.    cc1.exe, etc.
  390.  
  391. Q: The binaries I get with the distribution are .exe files, but gcc creates
  392.    a.out files.  I rename the a.out's to .EXE's, but they still don't work.
  393. A: To get an .EXE from an a.out, you must *prepend* either go32.exe,
  394.    debug32.exe, or stub.exe to the file:
  395.      copy /b stub.exe+myprog myprog.exe
  396.  
  397. Q: What is stub.exe?
  398. A: Stub.exe simply calles go32.exe, and passes it information it needs to
  399.    run the a.out file attached to it.  Stub is much smaller than go32, so
  400.    less disk space is used.  Also, if you change go32, you don't have to
  401.    change stub, and all the stub-ized programs will use the new go32
  402.    automatically.
  403.  
  404. Q: I want to change cc1.  How do I do this?
  405. A: First, get the GNU sources from FSF.  They're usually available at
  406.    prep.ai.mit.edu in /u/emacs, if not elsewhere.  Use djtarx to un-tar
  407.    them, as djtarx knows how to handle unix file names that aren't valid
  408.    DOS file names.  Look in the "diffs" sources to see what to change the
  409.    names to when they conflict.  Next, apply the "diffs" over the
  410.    GNU sources (making sure you have the right version of GNU - see the
  411.    versions file).  For the gcc-1.39 sources, you must run utod (or some
  412.    other unix-to-dos converter) to compile gcc.exe, then run config-d.bat,
  413.    then run makeall.bat.  For gpp-1.39, copy the g++ sources over the
  414.    completed gcc sources, apply the gpp diffs, then run makeall.bat (gpp's
  415.    now).  For all other programs, just run make.  Note that the makefiles
  416.    are tuned for ndmake, since it knows how to make response files.
  417.    Specific instructions are documented in the diffs directory.
  418.  
  419. Q: I don't have an 80387.  How do I compile floating point programs?
  420. A: Add "emu c:\djgpp\emu387\emu387" to the GO32 environment variable
  421.    (see go32 section above).  This tells go32 to use the given file
  422.    as an 80387 emulator.  If you don't load this emulator, and you try
  423.    to run floating point without a 387, you will get an error.
  424.  
  425. Q: I installed an 80387 emulator in my AUTOEXEC, but it still doesn't
  426.    work.  Why?
  427. A: The CPU is running in *protected* mode, not real mode, and the information
  428.    needed to emulate the 80387 is different.  Not to mention that the
  429.    exceptions never get to the real-mode handler.  You must use the emu387
  430.    emulator, which is designed for go32.
  431.  
  432. Q: I can't run a.out programs under Windows.
  433. A: Nope, you can't.  Go32 only supports VCPI, and Windows provides
  434.    DPMI 0.9, which isn't enough for Go32 to work correctly.
  435.  
  436. Q: Can I run this on my 286?  It has protected mode also...
  437. A: True, but the 286 isn't a 32-bit processor.  A 386 really is required.
  438.  
  439. Q: Can I use gcc on my 512K machine?
  440. A: Yes, but the disk better have at least 4Mb of free space for paging.
  441.    Go32 will use all available extended memory (up to 128M) and up to
  442.    128M of disk space, for a grand total of 256M of virtual memory for
  443.    your application.  Try a malloc(50*1024*1024) some day.
  444.  
  445. Q: Why do my compiles are running VERY SLOW, even though I use a ramdisk
  446.    for swap and a disk cache?
  447. A: Gcc requires at least 1Mb of virtual memory to run, usually close to 1.5M.
  448.    If there isn't this much real memory available, it starts paging to disk.
  449.    It's good to leave about 1M of extended (not expanded) memory available
  450.    for go32 to run programs with.  When it needs to page a lot, you spend
  451.    most of your time paging and little time actually running.  Note that
  452.    if you are running with a VCPI server, like QEMM or 386MAX, then go32
  453.    will use *expanded* memory for it's physical memory needs, not
  454.    extended.
  455.  
  456. Q: How much memory is available when I use the system() call?
  457. A: Everything but what go32 is loaded with.  The program is completely
  458.    paged out to memory (including the page tables themselves) before
  459.    the second program is executed.  Currently, this is about 100K
  460.    less than was available before go32 was executed.
  461.  
  462.  
  463.  
  464.  
  465.  
  466.  
  467. Deviations and Caveats:
  468.  
  469. GCC/G++ deviates from the U**x version in a number of ways, mostly to
  470. accomodate deficiencies in the MS-DOS environment, and my own laziness.
  471.  
  472. * An 80387 is required to do floating point.  An emulator is provided.
  473.   cc1 and cc1plus shouldn't use the 387 unless compiling floating point
  474.   code.  The environment variable "387" can override the auto-detection
  475.   routine:
  476.     SET 387=YES   to force 387 handlers to be enabled
  477.     SET 387=NO    to force 387 accesses to fault
  478.     SET 387=QUERY to get a message showing the results of the auto-detection
  479.   If no 80387 is present and the program attempts to use it, a message
  480.   indicating where the instruction is will be displayed.  To use the
  481.   387 emulator, add "emu c:\djgpp\emu387\emu387" to the GO32 environment
  482.   variable.  Specifying use of the emulator overrides the "387"
  483.   environment variable.
  484.  
  485. * The VDISK method of allocating extended memory is supported.  The
  486.   INT 15h method is also.  When the extender runs out of conventional and
  487.   extended memory, it uses a paging file named $(GCCTMP)/pageXXXX.386, where
  488.   XXXX is an unspecified hex value.  This file is normally removed on exit.
  489.  
  490. * Up to 128 MB of physical memory and 128 MB of disk swap space are allowed.
  491.   A 512K machine is sufficient, but very slow due to paging.
  492.  
  493. * The utilies support the MS-DOS standard response file method for giving
  494.   more than 128 bytes of command line.  Example: "gcc -o foo @foo.lnk" where
  495.   foo.lnk contains a list of .o files.
  496.  
  497. * Since MS-DOS does not distinguish case in file names, some .h files
  498.   used for C++ have had underscores prepended to them to avoid conflict
  499.   (ie: String.h conflicts with string.h, so it became _String.h).
  500.  
  501. * When using ar to create archives, be warned that the ar version
  502.   supplied cannot update an archive that's been sequenced (ar s foo.a),
  503.   and cannot sequence a file that's been sequenced.  Also, ld cannot
  504.   use an archive that's not sequenced.  The following method is suggested:
  505.       ar rv mylib.a $(OBJS)
  506.       cp mylib.a mylib2.a
  507.       ar rvs mylib2.a
  508.       (and then link with mylib2.a)
  509.  
  510. * The extender can be added to any gcc-compiled program by copying go32.exe
  511.   to be <program>.exe, where <program> is the 32-bit program.  For example,
  512.   if "hello" is a gcc-compiled a.out file, and "hello.exe" is a copy of
  513.   go32.exe, then when "hello.exe" runs, it loads the file called "hello"
  514.   in the same directory, and executes it if present.  Otherwise,
  515.   the first parameter is the executable (ie: go32 cc1plus foo.cc).
  516.  
  517. * The extender can be merged to create one .exe file that is the extender
  518.   and the executable in one file, by using the stub.exe program:
  519.       copy /b stub.exe+myprog myprog.exe
  520.   This will only work if go32.exe is in your search path, because stub.exe
  521.   runs it.  Alternatively, you can prepend go32.exe itself to an a.out file
  522.   to get a single executable (stub.exe is much smaller).  Note that if
  523.   you re-compile go32 or stub, you must strip off the symbol table first. 
  524.  
  525. * The extender runs programs at logical address 0.  A copy of the first
  526.   1 MB of physical memory (including the AT channel) is mapped to
  527.   0xE0000000 in the program's address space.  The stack grows down from
  528.   0x7FFFFFFC in the program's address space.  Data usually starts at
  529.   0x00400000.
  530.  
  531. * The paging mechanism understands how SuperVGA's map their memory onto
  532.   the AT bus and automatically swaps pages as the program tries to
  533.   access them.  The program sees a linear range from 0xD0000000 to
  534.   0xD0100000 that corresponds to each pixel in the 256-color modes
  535.   of SuperVGAs.  To use this feature, you'll have to set the GO32
  536.   environment variable like this:
  537.     C>set go32=driver c:\djgpp\drivers\tseng4k.grd gw 640 gh 480 tw 132 th 43
  538.   These parameter pairs can be omitted or rearranged as needed.  They are
  539.   the "driver" name, default graphics width and height, and default
  540.   text width and height. Libgr.a doesn't have to be recompiled, nor
  541.   do graphics programs, when a different graphics mode is selected
  542.   (the extender handles it).  It is strongly recommended that the program
  543.   use the GR_default_graphics and GR_default_text modes to switch to
  544.   graphics or text.  These modes use the parameters specified by the
  545.   GO32 environment variable, allowing the user to select a favorite
  546.   graphics and text mode.
  547.  
  548. * Symbols are stored in virtual memory, so you won't run out of symbol
  549.   space until both extended memory and the disk are all used up.  For
  550.   large programs, you might notice a slight delay while it looks up
  551.   symbols.  Programs with a lot of lines in a given module may run out
  552.   of memory as the line number table is built in real memory and transferred
  553.   to virtual memory.
  554.  
  555. * Signals are not reported to the program.  However, interrupts do continue
  556.   to get serviced while in protected mode (ie: keypress, timer, etc).
  557.   CTRL-C will get you back to the debugger in debug32, and you can continue
  558.   from where you stopped.  All signals (ie: exceptions) cause debugging
  559.   traps in debug32, or general faults in go32.
  560.  
  561.  
  562.  
  563. Copyright Information:
  564.  
  565. * Source code for the GNU utilities is copyright (c) Free Software Foundation.
  566.   For more information on the FSF copyright, see their source code or write
  567.   Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  568.  
  569.   A copy of their file "COPYING" is included in the docs directory.  Some of
  570.   the FSF source code has been modified to operate properly in the MS-DOS
  571.   environment.
  572.  
  573. * Source code for most of libc.a are copyright (c) Regents of the University
  574.   of California.  These files include copyright information in them.  The
  575.   utilities are compiled against these libraries, and thus contain software
  576.   developed by the University of California, Berkeley, and its contributors.
  577.   Some of the BSD source code has been modified to operate properly in the
  578.   MS-DOS environment.
  579.  
  580. * Any sources not falling under the copyrights of FSF or UCB (as above) are
  581.   Copyright (c) 1991 DJ Delorie, 24 Kirsten Ave, Rochester NH 03867-2954.
  582.   To contact me via E-Mail, sent to "dj@ctron.com".  Cabletron Systems Inc
  583.   is in no way involved with this project; I just happen to work for them
  584.   during the day.
  585.  
  586. Terms and Conditions:
  587.  
  588. * Source code copyright FSF is distributed under the terms of the GNU
  589.   Public General License.  See the file "COPYING" in doc.arc for more
  590.   information.  If your program links in object modules (in libc.a) that
  591.   are compiled from GNU sources, then your entire program must be
  592.   distributed under the terms of the GNU GPL as a "derived work".  These
  593.   modules are the C++ class library (including the streams classes) and
  594.   obstacks.  The sources in libsrc have the copyright notices in them
  595.   for the various modules.
  596.  
  597. * Source code copyright UCB is distributed under the terms listed in the
  598.   UCB source code itself.
  599.  
  600. * Source code copyright DJ Delorie is distributed under the terms of the
  601.   GNU General Public Licence, with the following exceptions:
  602.   ("go32.exe" refers to go32.exe and debug32.exe)
  603.  
  604.   * There are no conditions on distributing copies of stub.exe as
  605.     it is originally distributed in this software package.
  606.  
  607.   * If a user creates an application, prepends a copy of go32.exe onto
  608.     the beginning of it, and distributes it free of charge, then the
  609.     user is under no obligations to distribute source or pay royalties.
  610.     Note that the copyright terms of the FSF and/or UCB must be
  611.     obeyed regardless of this.
  612.   
  613.   * If a user creates an application, prepends a copy of go32.exe onto
  614.     the beginning of it, and charges a fee for the software, then a
  615.     royalty of $5 or 5% of the selling price per copy sold must be paid
  616.     to DJ Delorie, 24 Kirsten Ave, Rochester NH 03867-2954.  Note that
  617.     shareware programs are not considered "sold" until payment is rendered
  618.     for them.
  619.  
  620.   * For all other cases, source code for go32.exe must be distributed
  621.     with any distributed copies of go32.exe.
  622.   
  623.   * Software that requires go32.exe to run, but is not distributed with
  624.     a copy of go32.exe, incurs no obligations with regards to the
  625.     above sections.
  626.  
  627.   * Contact me for special terms if none of the above are suitable.
  628.  
  629.   * Donations are always appreciated.
  630.  
  631.   The intent of this copyright is this: If you make money by using the
  632.   programs I wrote, I get some of it.  If you use your sources to
  633.   teach others how to write programs, I'll support you.
  634.  
  635.   Changes to source code copyright BSD or FSF are copyright DJ Delorie, but
  636.   fall under the terms of the original copyright.
  637.  
  638.  
  639.  
  640.  
  641.  
  642. Donations may be made to any of the following:
  643.  
  644.     DJ Delorie
  645.     24 Kirsten Ave
  646.     Rochester, NH  03867-2954
  647.     USA
  648.  
  649.     Free Software Foundation
  650.     675 Mass Ave
  651.     Cambridge, MA 02139
  652.     USA
  653.  
  654.     University of California
  655.     Berkeley, CA  (sorry, I don't know their ZIP code)
  656.     USA
  657. -- 
  658. ------------------------------------------------------------------------
  659.   John A. Slagel, email: jas37876@uxa.cso.uiuc.edu
  660.