home *** CD-ROM | disk | FTP | other *** search
/ Simtel MSDOS 1993 May / SIMTEL_0593.ISO / msdos / gnuish / 00readme.gcc < prev    next >
Text File  |  1992-07-05  |  25KB  |  593 lines

  1. This is README.1ST, which you should have read before any other.  Please
  2. read this COMPLETELY before going any further.
  3.  
  4. WARNING: This software comes with ABSOLUTELY NO WARRANTEE.  I can't even
  5. guarantee that this software won't wipe out your entire hard drive (it's
  6. happened to a few people).  USE AT YOUR OWN RISK! It's always a good
  7. idea to make regular backups of your hard drives anyway. 
  8.  
  9. If you are using PKUNZIP to extract your files, don't forget the -d or
  10. you'll get them all in the same directory! All djgpp modules are
  11. designed to be unzipped from the same directory, so that they install
  12. themselves properly. 
  13.  
  14. djgpp is a complete 32-bit C and C++ development environment for DOS. 
  15. This product is intended for users who have experience using Unix, not
  16. DOS users who expect djgpp to act like any other DOS compiler.  This is
  17. NOT the software you want if you want to learn programming. 
  18.  
  19. Supported: 80386, 80387, 80486, XMS, himem.sys, VCPI, QEMM, 386MAX,
  20. DesqView. 
  21.  
  22. Unsupported: XTs, 80286, Windows (because Microsoft won't support DPMI
  23. 1.0), OS/2, multitasking, signals.
  24.  
  25. Features: 80387 emulator, 32-bit unix-ish environment, flat memory
  26. model, debugger, SVGA graphics.
  27.  
  28.     ====================  Reporting bugs  ====================
  29.  
  30. ALL changes to the source code should be submitted in "diff -c2" format. 
  31. If you just send replacement files, I'll reject them, since I don't know
  32. which parts you've changed and my sources keep changing anyway.
  33.  
  34. Note that new features are not bugs.  If you would like to work on
  35. adding features to djgpp, please send me e-mail at dj@ctron.com
  36. beforehand, in case it's being worked on already and to coordinate it's
  37. integration.  If you want to request a new feature but not work on it,
  38. send to the mailing list. 
  39.  
  40. If the problem is in one of the FSF utilities, please don't expect me to
  41. fix it.  Problems with FSF code should be reported to the FSF; I only
  42. compile the code and distribute it.  My best suggestion is to post to
  43. the appropriate newsgroup or mailing list, but if you can't find one,
  44. try gnu@prep.ai.mit.edu. 
  45.  
  46. If the problem is in anything else, and you have e-mail access, I strongly
  47. recommend joining the djgpp mailing list.  To do so, send mail to
  48. listserv@sun.soe.clarkson.edu:
  49.  
  50.     $ mail listserv@sun.soe.clarkson.edu
  51.     Subject:
  52.     help
  53.     add djgpp
  54.     ^D
  55.  
  56. Any mail sent to djgpp@sun.soe.clarkson.edu will get automatically
  57. forwarded to all the subscribers on the list, and someone may have an
  58. answer to your query.  Note that I (DJ) am of course a subscriber, so I
  59. will get it also. 
  60.  
  61. If all else fails, you may contact me directly at dj@ctron.com
  62. (preferred) or at home:
  63.  
  64.     DJ Delorie
  65.     24 Kirsten Ave
  66.     Rochester, NH 03867-2954
  67.     USA
  68.  
  69.     ====================  Redistribution  ====================
  70.  
  71. The utilities built from FSF code may NOT be made available through any
  72. means not prepared to also distribute the source for those utilities. 
  73. This isn't just a good idea, it's the LAW.  Read the file "copying" for
  74. more details on FSF copyright terms.  Since djgpp includes such
  75. binaries, it requires the same terms. 
  76.  
  77. Programs that link in FSF code must comply with the GNU Library Licence,
  78. or the GNU public license.
  79.  
  80. I strongly recommend prepending stub.exe (use aout2exe) for any programs
  81. you intend to distribute.  This avoids me requiring a royalty, and aids
  82. upgrading go32, since stub.exe doesn't change. 
  83.  
  84.  
  85. This is the README file for DJ's GCC port to DOS ("djgpp")
  86.  
  87. Contents:
  88.     * Overview
  89.     * What's available
  90.     * How to install
  91.     * Deviations and Caveats
  92.     * Copyright information
  93.  
  94. Disclaimer: This software is distributed WITHOUT ANY WARRANTY; without
  95. even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
  96. PURPOSE.
  97.  
  98. DJ Delorie
  99. USmail: 24 Kirsten Ave, Rochester, NH 03867-2954, USA
  100. email:  dj@ctron.com
  101.  
  102. mailing list: djgpp@sun.soe.clarkson.edu (listserv@sun.soe.clarkson.edu)
  103.  
  104.  
  105.  
  106.  
  107. Overview:
  108.  
  109. This package contains a 32-bit 80386 DOS extender with symbolic
  110. debugger, a C/C++ compiler with utilities, development libraries, and
  111. source code.  It generates full 32-bit programs and supports full
  112. virtual memory with paging to disk. 
  113.  
  114. Requirements:
  115.  
  116. A 80386-based IBM compatible PC or PS/2, approximately 4-5Mb of hard
  117. drive space, and 512K RAM. 
  118.  
  119. Supported Wares:
  120.  
  121. * Up to 128M of extended memory (expanded under VCPI)
  122. * Up to 128M of disk space used for swapping
  123. * SuperVGA 256-color mode up to 1024x768
  124. * 80387
  125. * XMS & VDISK memory allocation strategies
  126. * VCPI programs, such as QEMM and 386MAX
  127.  
  128. Unsupported:
  129.  
  130. * DPMI programs, such as Windows 3.0
  131. * Multiprocessing (fork())
  132.  
  133.  
  134.  
  135.  
  136. File location:
  137.  
  138.     host:      grape.ecs.clarkson.edu
  139.     login:     ftp
  140.     password:  send your e-mail address
  141.     directory: ~ftp/pub/msdos/djgpp
  142.  
  143. Many thanks to the sysops at Clarkson for providing a home to djgpp!
  144.  
  145. As a convenience to non-FTP users, djgpp is also stored on Clarkson's
  146. archive server, sun.soe.clarkson.edu.  To access the archive server,
  147. do this:
  148.    % mail archive-server@sun.soe.clarkson.edu
  149.    Subject: <none>
  150.    help
  151.    index msdos/djgpp
  152.    ^D
  153.  
  154. NOTE: In accordance with FSF CopyLeft, you are not allowed to upload
  155. this program to a distribution site unless that site also makes the FSF
  156. sources for these programs available.  Please read the file COPYING for
  157. more details.  FSF sources are available on prep.ai.mit.edu, and on
  158. either grape.ecs.clarkson.edu or sun.soe.clarkson.edu
  159.  
  160. NOTE: If your application links in object modules that were written
  161. by FSF, your application counts as a "derived work" and must obey
  162. the provisions of the FSF Copyrights.  See the file COPYING for
  163. details.  Specifically, the C++ classes in libc.a and obstacks are
  164. FSF works that are covered by the GNU GPL.  The mere act of compiling
  165. does not affect the copyright status of your program.
  166.  
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174.  
  175. INSTALLING:
  176.  
  177. To install, you must do the following:
  178.  
  179. * Create a "temp" directory, like c:\tmp.
  180.  
  181. * Create a directory to install in, like c:\djgpp.
  182.  
  183. * Un-zip djgpp.zip in the install directory.
  184.     C:\DJGPP> pkunzip -d djgpp.zip
  185.  
  186. * Add the following lines to C:\AUTOEXEC.BAT:
  187.     set COMPILER_PATH=c:/djgpp/bin
  188.     set C_INCLUDE_PATH=c:/djgpp/include
  189.     set CPLUS_INCLUDE_PATH=c:/djgpp/cplusinc:c:/djgpp/include
  190.     set OBJC_INCLUDE_PATH=c:/djgpp/include
  191.     set OBJCPLUS_INCLUDE_PATH=c:/djgpp/include
  192.     set LIBRARY_PATH=c:/djgpp/lib
  193.     set TEMP=c:/tmp
  194.              ^^^ this is where gcc's temp files go
  195.     set GO32TMP=c:/tmp
  196.                 ^^^ this is where your paging file goes
  197.     set GO32=ansi driver c:/djgpp/drivers/SOMETHING.grd gw 1024 gh 768
  198.                          ^^^ whatever driver works with your VGA (optional)
  199.     set BISON_SIMPLE=c:/djgpp/lib/bison.simple
  200.     set BISON_HAIRY=c:/djgpp/lib/bison.hairy
  201.     set FLEX_SKELETON=c:/djgpp/lib/flex.skeleton
  202.  
  203.   GO32TMP is where go32 puts its paging file (TMP and TEMP are checked,
  204.   in that order, also)
  205.  
  206.   Remember that unless you manually type these at the command line,
  207.   they won't take effect until you reboot.  Don't include the "ansi"
  208.   keyword in the "go32" variable if you don't have an ANSI.SYS driver
  209.   or equivalent.
  210.  
  211. * Add your binaries directory to your PATH in C:\AUTOEXEC.BAT
  212.     SET PATH= . . . ;C:\DJGPP\BIN
  213.  
  214. That's it! djgpp is now installed on your system.
  215.  
  216.  
  217.  
  218.  
  219.  
  220. The GO32 environment variable:
  221.  
  222.  
  223. This variable controls the options available in go32 or debug32.  The
  224. syntax of this variable is:
  225.  
  226.   SET GO32=[parm [value]] [parm [value]] . . .
  227.  
  228. Parameters:
  229.  
  230.   ansi           Use ANSI commands to control the color in debug32
  231.   mono           Use the Monochrome monitor for debugging - useful when
  232.                    debugging graphics applications
  233.   1rm            Redirect stdout (file #1) to the monochrome monitor
  234.   2rm            Redirect stderr (file #2) to the monochrome monitor
  235.   1r2            Redirect stdout (file #1) to stderr (file #2)
  236.   2r1            Redirect stderr (file #2) to stdout (file #1)
  237.  
  238.   glob           enable globbing (default)
  239.   noglob         disable globbing
  240.  
  241.   emu [path]     Use the specified file as the 80387 emulator
  242.  
  243.   driver [path]  Use the specified file as the graphics driver
  244.   gw [width]     Default graphics width
  245.   gh [height]    Default graphics height
  246.   tw [width]     Default text width
  247.   th [height]    Default text height
  248.   nc [colors]    Number of colors (for new-style drivers only - see cbgrx100.zip)
  249.  
  250.  
  251. These parameters may occur in any order.
  252.  
  253. Note that "1rm" and "2rm" are done before "1r2" and "2r1", so "1rm 2r1" sends
  254. stdout to the mono monitor and stderr to any redirection used.
  255.  
  256. Examples:
  257.  
  258.   C:\> set GO32=mono driver c:\djgpp\drivers\tseng4k.grd gw 1024 gh 768 tw 132 th 43 nc 256
  259.   C:\> set GO32=ansi
  260.   C:\> set GO32=driver c:\djgpp\drivers\tseng4k.grd ansi
  261.   C:\> set GO32=mono 1rm 2rm
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.  
  269.  
  270.  
  271.  
  272. Deviations and Caveats:
  273.  
  274. GCC/G++ deviates from the U**x version in a number of ways, mostly to
  275. accomodate deficiencies in the MS-DOS environment, and my own laziness.
  276.  
  277. * An 80387 is required to do floating point.  An emulator is provided.
  278.   cc1 and cc1plus shouldn't use the 387 unless compiling floating point
  279.   code.  The environment variable "387" can override the auto-detection
  280.   routine:
  281.     SET 387=YES   to force 387 handlers to be enabled
  282.     SET 387=NO    to force 387 accesses to fault
  283.     SET 387=QUERY to get a message showing the results of the auto-detection
  284.   If no 80387 is present and the program attempts to use it, a message
  285.   indicating where the instruction is will be displayed.  To use the
  286.   387 emulator, add "emu c:\djgpp\emu387\emu387" to the GO32 environment
  287.   variable.  Specifying use of the emulator overrides the "387"
  288.   environment variable.
  289.  
  290. * The VDISK method of allocating extended memory is supported.  The
  291.   INT 15h method is also.  When the extender runs out of conventional and
  292.   extended memory, it uses a paging file named $(GO32TMP)/pageXXXX.386, where
  293.   XXXX is an unspecified hex value.  This file is normally removed on exit.
  294.  
  295. * Up to 128 MB of physical memory and 128 MB of disk swap space are allowed.
  296.   A 512K machine is sufficient, but very slow due to paging.
  297.  
  298. * The utilies support the MS-DOS standard response file method for giving
  299.   more than 128 bytes of command line.  Example: "gcc -o foo @foo.lnk" where
  300.   foo.lnk contains a list of .o files.  Wildcard expansion (globbing) is
  301.   performed on the parameters, unless they are surrounded by single quotes.
  302.   Double quotes can be used to prevent spaces from separating arguments.
  303.  
  304. * Since MS-DOS does not distinguish case in file names, some .h files
  305.   used for C++ have had underscores prepended to them to avoid conflict
  306.   (ie: String.h conflicts with string.h, so it became _String.h).
  307.  
  308. * When using ar to create archives, be warned that the ar version
  309.   supplied cannot update an archive that's been sequenced (ar s foo.a),
  310.   and cannot sequence a file that's been sequenced.  Also, ld cannot
  311.   use an archive that's not sequenced.  The following method is suggested:
  312.       ar rv mylib.a $(OBJS)
  313.       cp mylib.a mylib2.a
  314.       ar rvs mylib2.a
  315.       (and then link with mylib2.a)
  316.  
  317. * The extender can be added to any gcc-compiled program by copying go32.exe
  318.   to be <program>.exe, where <program> is the 32-bit program.  For example,
  319.   if "hello" is a gcc-compiled a.out file, and "hello.exe" is a copy of
  320.   go32.exe, then when "hello.exe" runs, it loads the file called "hello"
  321.   in the same directory, and executes it if present.  Otherwise,
  322.   the first parameter is the executable (ie: go32 cc1plus foo.cc).
  323.  
  324. * The extender can be merged to create one .exe file that is the extender
  325.   and the executable in one file, by using the stub.exe program:
  326.       copy /b stub.exe+myprog myprog.exe
  327.   This will only work if go32.exe is in your search path, because stub.exe
  328.   runs it.  Alternatively, you can prepend go32.exe itself to an a.out file
  329.   to get a single executable (stub.exe is much smaller).  Note that if
  330.   you re-compile go32 or stub, you must strip off the symbol table first. 
  331.  
  332. * The extender runs programs at logical address 0.  A copy of the first
  333.   1 MB of physical memory (including the AT channel) is mapped to
  334.   0xE0000000 in the program's address space.  The stack grows down from
  335.   0x7FFFFFFC in the program's address space.  Data usually starts at
  336.   0x00400000.
  337.  
  338. * The paging mechanism understands how SuperVGA's map their memory onto
  339.   the AT bus and automatically swaps pages as the program tries to
  340.   access them.  The program sees a linear range from 0xD0000000 to
  341.   0xD0100000 that corresponds to each pixel in the 256-color modes
  342.   of SuperVGAs.  To use this feature, you'll have to set the GO32
  343.   environment variable like this:
  344.     C>set go32=driver c:\djgpp\drivers\tseng4k.grd gw 640 gh 480 tw 132 th 43
  345.   These parameter pairs can be omitted or rearranged as needed.  They are
  346.   the "driver" name, default graphics width and height, and default
  347.   text width and height. Libgr.a doesn't have to be recompiled, nor
  348.   do graphics programs, when a different graphics mode is selected
  349.   (the extender handles it).  It is strongly recommended that the program
  350.   use the GR_default_graphics and GR_default_text modes to switch to
  351.   graphics or text.  These modes use the parameters specified by the
  352.   GO32 environment variable, allowing the user to select a favorite
  353.   graphics and text mode.
  354.  
  355. * Symbols are stored in virtual memory, so you won't run out of symbol
  356.   space until both extended memory and the disk are all used up.  For
  357.   large programs, you might notice a slight delay while it looks up
  358.   symbols.  Programs with a lot of lines in a given module may run out
  359.   of memory as the line number table is built in real memory and transferred
  360.   to virtual memory.
  361.  
  362. * Signals are not reported to the program.  However, interrupts do continue
  363.   to get serviced while in protected mode (ie: keypress, timer, etc).
  364.   CTRL-C will get you back to the debugger in debug32, and you can continue
  365.   from where you stopped.  All signals (ie: exceptions) cause debugging
  366.   traps in debug32, or general faults in go32.
  367.  
  368.  
  369.  
  370. Copyright Information:
  371.  
  372. * Source code for the GNU utilities is copyright (c) Free Software Foundation.
  373.   For more information on the FSF copyright, see their source code or write
  374.   Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  375.  
  376.   A copy of their file "COPYING" is included in the docs directory.  Some of
  377.   the FSF source code has been modified to operate properly in the MS-DOS
  378.   environment.
  379.  
  380. * Source code for most of libc.a are copyright (c) Regents of the University
  381.   of California.  These files include copyright information in them.  The
  382.   utilities are compiled against these libraries, and thus contain software
  383.   developed by the University of California, Berkeley, and its contributors.
  384.   Some of the BSD source code has been modified to operate properly in the
  385.   MS-DOS environment.
  386.  
  387. * Any sources not falling under the copyrights of FSF or UCB (as above) are
  388.   Copyright (c) 1991 DJ Delorie, 24 Kirsten Ave, Rochester NH 03867-2954.
  389.   To contact me via E-Mail, sent to "dj@ctron.com".  Cabletron Systems Inc
  390.   is in no way involved with this project; I just happen to work for them
  391.   during the day.
  392.  
  393. Terms and Conditions:
  394.  
  395. * Source code copyright FSF is distributed under the terms of the GNU
  396.   Public General License.  See the file "COPYING" in doc.arc for more
  397.   information.  If your program links in object modules (in libc.a) that
  398.   are compiled from GNU sources, then your entire program must be
  399.   distributed under the terms of the GNU GPL as a "derived work".  These
  400.   modules are the C++ class library (including the streams classes) and
  401.   obstacks.  The sources in libsrc have the copyright notices in them
  402.   for the various modules.
  403.  
  404. * Source code copyright UCB is distributed under the terms listed in the
  405.   UCB source code itself.
  406.  
  407. * Source code copyright DJ Delorie is distributed under the terms of the
  408.   GNU General Public Licence, with the following exceptions:
  409.   ("go32.exe" refers to go32.exe and debug32.exe)
  410.  
  411.   * There are no conditions on distributing copies of stub.exe as
  412.     it is originally distributed in this software package.
  413.  
  414.   * If a user creates an application, prepends a copy of go32.exe onto
  415.     the beginning of it, and distributes it free of charge, then the
  416.     user is under no obligations to distribute source or pay royalties.
  417.     Note that the copyright terms of the FSF and/or UCB must be
  418.     obeyed regardless of this.
  419.   
  420.   * If a user creates an application, prepends a copy of go32.exe onto
  421.     the beginning of it, and charges a fee for the software, then a
  422.     royalty of $5 or 5% of the selling price per copy sold must be paid
  423.     to DJ Delorie, 24 Kirsten Ave, Rochester NH 03867-2954.  Note that
  424.     shareware programs are not considered "sold" until payment is rendered
  425.     for them.
  426.  
  427.   * For all other cases, source code for go32.exe must be distributed
  428.     with any distributed copies of go32.exe.
  429.   
  430.   * Software that requires go32.exe to run, but is not distributed with
  431.     a copy of go32.exe, incurs no obligations with regards to the
  432.     above sections.
  433.  
  434.   * Contact me for special terms if none of the above are suitable.
  435.  
  436.   * Donations are always appreciated.
  437.  
  438.   The intent of this copyright is this: If you make money by using the
  439.   programs I wrote, I get some of it.  If you use your sources to
  440.   teach others how to write programs, I'll support you.
  441.  
  442.   Changes to source code copyright BSD or FSF are copyright DJ Delorie, but
  443.   fall under the terms of the original copyright.
  444.  
  445.  
  446.  
  447.  
  448.  
  449. Donations may be made to any of the following:
  450.  
  451.     DJ Delorie
  452.     24 Kirsten Ave
  453.     Rochester, NH  03867-2954
  454.     USA
  455.  
  456.     Free Software Foundation
  457.     675 Mass Ave
  458.     Cambridge, MA  02139
  459.     USA
  460.  
  461.     Computer Systems Research Group
  462.     Computer Science Division, EECS
  463.     University of California
  464.     Berkeley, California  94720
  465.     USA
  466.  
  467. Q: When I run "gcc e:\proj\prog.c" it says "undefined escape sequence \p"?
  468. A: Gcc is a *unix* compiler - you must use *unix* slashes (e:/proj/prog.c).
  469.    Environment variables (like GCCINC) may, however, use either, as they
  470.    are converted.
  471.  
  472. Q: I type "GCC PROG.C" and ld complains about PROG.C not being an object.
  473. Q: I type "gcc prog.cxx" to compile a C++ program, and ld complains.
  474. A: Gcc is *not* case insensitive like DOS is, and it uses the file's
  475.    extension to determine how to compile a file.  Valid extensions are:
  476.      .cc = C++ source (passed through cpp)
  477.      .c = C source that must be passed through cpp first
  478.      .i = raw C source (no cpp pass)
  479.      .S = assembler that must be passed through cpp first
  480.      .s = raw assembler source (no cpp pass)
  481.    any other file is passed to the linker
  482.  
  483. Q: I compile my program, but can't run the output file.
  484. A: DOS doesn't know how to run unix-style a.out files.  That's what the
  485.    extender is for.  To run an a.out file called myprog, type
  486.      "go32 myprog . . ."
  487.  
  488. Q: Gcc doesn't recognize // as a comment in my C programs.
  489. A: That's because // isn't a comment in C.  If you want to compile C++,
  490.    then write C++ programs.  Gcc is really two compilers in one, not
  491.    one compiler that compiles both C and C++.  That's why you get
  492.    cc1 and cc1plus.
  493.  
  494. Q: I'm reading in data files, but the data gets corrupted.
  495. A: The default file type is DOS text, even for read() and write().  You must
  496.    tell the system that a file is binary through the "b" flag in fopen(),
  497.    or O_BINARY in open().
  498.  
  499. Q: I get "fatal signal 2" when I run gcc.
  500. A: When gcc reports a "signal", it really means that an error occurred
  501.    trying to run the given program.  The "signal" number is the DOS error
  502.    code, and 2 means "file not found".  Check the COMPILER_PATH environment
  503.    variable and make sure it points to the directory with cpp.exe,
  504.    cc1.exe, etc.
  505.  
  506. Q: The binaries I get with the distribution are .exe files, but gcc creates
  507.    a.out files.  I rename the a.out's to .EXE's, but they still don't work.
  508. A: To get an .EXE from an a.out, you must *prepend* either go32.exe,
  509.    debug32.exe, or stub.exe to the file.  A program called "aout2exe"
  510.    is provided to do this.  Just run "aout2exe myprog".
  511.  
  512. Q: What is stub.exe?
  513. A: Stub.exe simply calles go32.exe, and passes it information it needs to
  514.    run the a.out file attached to it.  Stub is much smaller than go32, so
  515.    less disk space is used.  Also, if you change go32, you don't have to
  516.    change stub, and all the stub-ized programs will use the new go32
  517.    automatically.
  518.  
  519. Q: I want to change cc1.  How do I do this?
  520. A: First, get the GNU sources from FSF.  They're usually available at
  521.    prep.ai.mit.edu in /u/emacs, if not elsewhere.  Use djtarx to un-tar
  522.    them, as djtarx knows how to handle unix file names that aren't valid
  523.    DOS file names.  Look in the "diffs" sources to see what to change the
  524.    names to when they conflict.  Next, apply the "diffs" (if any) over the
  525.    GNU sources (making sure you have the right version of GNU - see the
  526.    versions file).  For gcc 2.0 and above, you must run "configure go32"
  527.    to prepare the sources for a native go32 compiler before building.
  528.    For all other programs, just run make.  Note that the makefiles
  529.    are tuned for ndmake, since it knows how to make response files.
  530.    Specific instructions are documented in the diffs directory.
  531.  
  532. Q: I don't have an 80387.  How do I compile floating point programs?
  533. A: Add "emu c:\djgpp\emu387\emu387" to the GO32 environment variable
  534.    (see go32 section in readme).  This tells go32 to use the given file
  535.    as an 80387 emulator.  If you don't load this emulator, and you try
  536.    to run floating point without a 387, you will get an error.
  537.  
  538. Q: I installed an 80387 emulator in my AUTOEXEC, but it still doesn't
  539.    work.  Why?
  540. A: The CPU is running in *protected* mode, not real mode, and the information
  541.    needed to emulate the 80387 is different.  Not to mention that the
  542.    exceptions never get to the real-mode handler.  You must use the emu387
  543.    emulator, which is designed for go32.
  544.  
  545. Q: I can't run a.out programs under Windows.
  546. A: Nope, you can't.  Go32 only supports VCPI, and Windows provides
  547.    DPMI 0.9, which isn't enough for Go32 to work correctly.
  548.  
  549. Q: Can I run this on my 286?  It has protected mode also...
  550. A: True, but the 286 isn't a 32-bit processor.  A 386 really is required.
  551.  
  552. Q: Can I use gcc on my 512K machine?
  553. A: Yes, but the disk better have at least 4Mb of free space for paging.
  554.    Go32 will use all available extended memory (up to 128M) and up to
  555.    128M of disk space, for a grand total of 256M of virtual memory for
  556.    your application.  Try a malloc(50*1024*1024) some day.
  557.  
  558. Q: Why do my compiles are running VERY SLOW, even though I use a ramdisk
  559.    for swap and a disk cache?
  560. A: Gcc requires at least 1Mb of virtual memory to run, usually close to 1.5M.
  561.    If there isn't this much real memory available, it starts paging to disk.
  562.    It's good to leave about 1M of extended (not expanded) memory available
  563.    for go32 to run programs with.  When it needs to page a lot, you spend
  564.    most of your time paging and little time actually running.  Note that
  565.    if you are running with a VCPI server, like QEMM or 386MAX, then go32
  566.    will use *expanded* memory for it's physical memory needs, not
  567.    extended.
  568.  
  569. Q: How much memory is available when I use the system() call?
  570. A: Everything but what go32 is loaded with.  The program is completely
  571.    paged out to memory (including the page tables themselves) before
  572.    the second program is executed.  Currently, this is about 100K
  573.    less than was available before go32 was executed.
  574.  
  575. Q: Go32 complains that the CPU must be in V86 mode to run.
  576. A: When the CPU is in V86 mode, the V86 manager must provide VCPI
  577.    services for go32.  Since VCPI is an extension to EMS, disabling EMS
  578.    will disable VCPI, and prevent go32 from running.  For emm386.sys, this
  579.    means that you can't use the "noems" switch. 
  580.  
  581. Q: How do globbing and response files work?
  582.  
  583. A: A response file is a file that contains stuff that goes on the command
  584.    line, but is too big for DOS.  The name of the file is given as "@file"
  585.    to any a.out program, and go32 reads the file for command line
  586.    information.  It uses single and double quotes to group parameters, and
  587.    backslashes to escape quotes, spaces, tabs, newlines, and backslashes. 
  588.    Parameters containing wildcards are expanded if they can be, else they
  589.    are unmodified.  Surrounding a parameter in single quotes will prevent
  590.    wildcards from being expanded.  This is similar to unix.  Note that
  591.    backslashes are not special if they are not in front of a quote,
  592.    whitespace, or backslash. 
  593.