home *** CD-ROM | disk | FTP | other *** search
/ The Pier Shareware 6 / The_Pier_Shareware_Number_6_(The_Pier_Exchange)_(1995).iso / 036 / emxfix02.zip / emx / book / emxrt.inf (.txt)
OS/2 Help File  |  1994-12-21  |  36KB  |  984 lines

  1.  
  2. ΓòÉΓòÉΓòÉ 1. 1 Introduction to the User's Guide to the emx Runtime ΓòÉΓòÉΓòÉ
  3.  
  4.  User's Guide to the emx Runtime 
  5.  
  6.     Copyright (c) 1990-1994 by Eberhard Mattes 
  7.  
  8.  This is the documentation for the emx runtime package.  The emx runtime is an 
  9.  environment for 32-bit programs under OS/2 2.x, OS/2 3.x (OS/2, in short), 
  10.  MS-DOS, and PC-DOS (DOS, in short) on machines with a 386 CPU (or one of its 
  11.  successors). 
  12.  
  13.   Hardware requirements
  14.   Files included in the emx runtime package
  15.  
  16.  
  17. ΓòÉΓòÉΓòÉ 1.1. 1.1 Hardware requirements ΓòÉΓòÉΓòÉ
  18.  
  19.  emx requires an 80386 CPU (80386DX, 80386SX, i486, or later) 
  20.  
  21.  
  22. ΓòÉΓòÉΓòÉ 1.2. 1.2 Files included in the emx runtime package ΓòÉΓòÉΓòÉ
  23.  
  24.  The emx runtime package includes the following files: 
  25.  
  26.     \emx\bin\emx.exe              emx runtime for DOS
  27.     \emx\bin\emxbind.exe          Tool for modifying emx programs (DOS and OS/2)
  28.     \emx\bin\emxfpemu             Emulator for numeric coprocessor (DOS)
  29.     \emx\bin\emxl.exe             emx loader (used by emxbind)
  30.     \emx\bin\emxload.exe          Server for keeping OS/2 programs in memory
  31.     \emx\bin\emxrev.cmd           Tool for displaying emx revisions (OS/2)
  32.     \emx\bin\emxstack.exe         Tool for fixing the stack size of old programs
  33.     \emx\book\emxrt.inf           The text you are looking at (VIEW version)
  34.     \emx\dll\emx.dll              emx runtime for OS/2
  35.     \emx\dll\emxio.dll            Hardware port I/O under OS/2
  36.     \emx\dll\emxlibc.dll          Forwarder DLL to emxlibcm.dll (OS/2)
  37.     \emx\dll\emxlibcm.dll         Multithread C library (OS/2)
  38.     \emx\dll\emxlibcs.dll         Single-thread C library (OS/2)
  39.     \emx\dll\emxwrap.dll          Interface to 16-bit OS/2 functions (OS/2)
  40.     \emx\doc\emxrt.doc            The text you are looking at (text version)
  41.     \emx\etc\termcap.dat          Terminal data base for termcap-based programs
  42.  
  43.  
  44. ΓòÉΓòÉΓòÉ 2. 2 License ΓòÉΓòÉΓòÉ
  45.  
  46.  emx is free software; you can redistribute it and/or modify it under the terms 
  47.  of the GNU General Public License as published by the Free Software 
  48.  Foundation; either version 2, or (at your option) any later version. 
  49.  
  50.  emx is distributed in the hope that it will be useful, but WITHOUT ANY 
  51.  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 
  52.  A PARTICULAR PURPOSE.  See the GNU General Public License for more details. 
  53.  
  54.  You should have received a copy of the GNU General Public License along with 
  55.  emx; see the file COPYING.  If not, write to the Free Software Foundation, 675 
  56.  Mass Ave, Cambridge, MA 02139, USA. 
  57.  
  58.  See \emx\doc\COPYING.EMX and \emx\doc\COPYING for details. 
  59.  
  60.  Please note that source code for parts of the contents of emxrt.zip is 
  61.  contained in emxfix02.zip. 
  62.  
  63.  
  64. ΓòÉΓòÉΓòÉ 3. 3 Installing the emx runtime package under OS/2 ΓòÉΓòÉΓòÉ
  65.  
  66.   Summary for impatient OS/2 users
  67.   Detailed instructions for OS/2 users
  68.  
  69.  
  70. ΓòÉΓòÉΓòÉ 3.1. 3.1 Summary for impatient OS/2 users ΓòÉΓòÉΓòÉ
  71.  
  72.   1. Add \emx\dll to LIBPATH (always use the latest copy of the .dll files!) 
  73.  
  74.   2. Add \emx\bin to PATH 
  75.  
  76.   3. Reboot 
  77.  
  78.  
  79. ΓòÉΓòÉΓòÉ 3.2. 3.2 Detailed instructions for OS/2 users ΓòÉΓòÉΓòÉ
  80.  
  81.  emx does not work with OS/2 1.x and in DOS mode of OS/2. 
  82.  
  83.  Before changing config.sys, make a backup copy of that file! 
  84.  
  85.  The emx runtime is implemented as a set of dynamic link libraries under OS/2: 
  86.  
  87.  emx.dll emx run-time support for OS/2 
  88.  
  89.  emxio.dll access to hardware ports for emx programs under OS/2 
  90.  
  91.  emxlibc.dll forwarder DLL to emxlibcm.dll for existing applications that use 
  92.          emxlibc.dll (which has been renamed to emxlibcm.dll) 
  93.  
  94.  emxlibcm.dll multithread emx C library 
  95.  
  96.  emxlibcs.dll single-thread emx C library 
  97.  
  98.  emxwrap.dll 32-bit wrappers for 16-bit OS/2 API functions 
  99.  
  100.  OS/2 looks for dynamic link libraries in the directories listed in the LIBPATH 
  101.  statement of your config.sys file.  Note that LIBPATH is not an environment 
  102.  variable! 
  103.  
  104.  At any time, at most one version of a dynamic link library is loaded.  If 
  105.  there are different versions of a dynamic link library in the directories 
  106.  listed in the LIBPATH statement, the first one listed is loaded.  If you 
  107.  already have installed the emx dynamic link libraries, you should be careful 
  108.  to use the latest revision of those dynamic link libraries.  Newer emx dynamic 
  109.  link libraries work with older emx programs (however, you may have to apply 
  110.  emxstack), but newer emx programs don't work with older emx dynamic link 
  111.  libraries.  To find out about already installed emx dynamic link libraries, 
  112.  type 
  113.  
  114.           cd \emx\bin
  115.           emxrev
  116.  
  117.  If no emx dynamic link libraries are installed, no output is produced.  If 
  118.  there are emx dynamic link libraries installed, the names and revision numbers 
  119.  are displayed, for instance 
  120.  
  121.           EMX : revision = 30
  122.           EMXIO : revision = 30
  123.           EMXLIBC : revision = 30
  124.           EMXLIBCM : revision = 30
  125.           EMXLIBCS : revision = 30
  126.           EMXWRAP : revision = 30
  127.  
  128.  Only directories listed in the LIBPATH statement are searched.  To find out 
  129.  the revision numbers of the dynamic link libraries of this package, type 
  130.  
  131.           emxrev -d c:\emx\dll
  132.  
  133.  if you have put the emx runtime package on drive C.  After running emxrev, you 
  134.  should quit the command processor by typing 
  135.  
  136.           exit
  137.  
  138.  to release the dynamic link libraries (they have been loaded by cmd.exe as 
  139.  emxrev is a REXX procedure).  Otherwise, you cannot rename, overwrite, or 
  140.  delete those files.  This also happens if one of the emx dynamic link 
  141.  libraries is currently used by a program.  If you get error message SYS0032, 
  142.  use 
  143.  
  144.           pstat /L
  145.  
  146.  to find out about the dynamic link libraries used by the programs currently 
  147.  running.  Terminate all the programs using emx.dll, emxio.dll, emxlibc.dll, 
  148.  emxlibcm.dll, emxlibcs.dll, or emxwrap.dll.  The command 
  149.  
  150.           emxload -qw
  151.  
  152.  will unload programs kept in memory by emxload.exe. 
  153.  
  154.  Either copy the latest revisions of the emx dynamic link libraries (that is, 
  155.  those with the highest revision numbers) to a directory directory listed in 
  156.  the LIBPATH statement of config.sys or modify the LIBPATH statement to include 
  157.  the directory where the latest revisions of the emx dynamic link libraries can 
  158.  be found. 
  159.  
  160.  The directories of the LIBPATH statement are separated by semicolons.  To add 
  161.  c:\emx\dll to the LIBPATH statement, append a semicolon -- if there is not yet 
  162.  a semicolon -- to the end of the line of config.sys that starts with 
  163.  
  164.           LIBPATH=
  165.  
  166.  Then, type the absolute name of the directory.  Example: 
  167.  
  168.           LIBPATH=.;C:\OS2\DLL;C:\OS2\MDOS;C:\;C:\OS2\APPS\DLL;D:\EMX\DLL
  169.  
  170.  Optionally, you can append a semicolon at the end. 
  171.  
  172.  Next, modify the line of config.sys starting with 
  173.  
  174.           SET PATH=
  175.  
  176.  to include the \emx\bin directory.  For instance, change 
  177.  
  178.           SET PATH=C:\OS2;C:\OS2\SYSTEM;C:\OS2\MDOS\WINOS2;C:\OS2\INSTALL;
  179.           C:\;C:\OS2\MDOS;C:\OS2\APPS
  180.  
  181.  to 
  182.  
  183.           SET PATH=C:\OS2;C:\OS2\SYSTEM;C:\OS2\MDOS\WINOS2;C:\OS2\INSTALL;
  184.           C:\;C:\OS2\MDOS;C:\OS2\APPS;D:\EMX\BIN
  185.  
  186.  As with LIBPATH, you have to put a semicolon between the path names and a 
  187.  trailing semicolon is optional.  Note that the last two examples are shown in 
  188.  two lines; in config.sys, however, the complete SET statement must be put into 
  189.  one line. 
  190.  
  191.  You might want to add \emx\book to the BOOKSHELF environment variable to 
  192.  simplify viewing the on-line documentation.  For instance, change the line 
  193.  
  194.           SET BOOKSHELF=C:\OS2\BOOK;
  195.  
  196.  of your config.sys file to 
  197.  
  198.           SET BOOKSHELF=C:\OS2\BOOK;C:\EMX\BOOK
  199.  
  200.  as with PATH, you have to put a semicolon between the path names and a 
  201.  trailing semicolon is optional. 
  202.  
  203.  Now, you should reboot to activate the changes to config.sys.  After booting, 
  204.  run 
  205.  
  206.           emxrev
  207.  
  208.  to verify that the latest revision of emx is now active. 
  209.  
  210.  If OS/2 says 
  211.  
  212.           SYS1804: The system cannot find the file EMX.
  213.  
  214.  when running an emx program, you have not correctly set the LIBPATH statement 
  215.  of config.sys.  See above for details. 
  216.  
  217.  When running an old program (which assumes that emx.dll creates a stack object 
  218.  if the stack size is too small), you will get an error message like 
  219.  
  220.           emx.dll: Stack size too small.  Run
  221.             emxstack -f D:\BIN\PROGRAM.EXE
  222.           and try again.
  223.  
  224.  Run emxstack as indicated by the error message to fix the stack size of the 
  225.  program.  If you can't (because you don't have write permission for the file), 
  226.  type 
  227.  
  228.           set emxopt=-I
  229.  
  230.  to make emx.dll ignore the problem.  However, the program will probably crash 
  231.  due to insufficient stack size.  Using the -I option is not recommended! 
  232.  
  233.  
  234. ΓòÉΓòÉΓòÉ 4. 4 Installing the emx runtime package under DOS ΓòÉΓòÉΓòÉ
  235.  
  236.   Summary for impatient DOS users
  237.   Detailed instructions for DOS users
  238.  
  239.  
  240. ΓòÉΓòÉΓòÉ 4.1. 4.1 Summary for impatient DOS users ΓòÉΓòÉΓòÉ
  241.  
  242.   1. Add \emx\bin to PATH or set EMX to point to \emx\bin\emx.exe 
  243.  
  244.   2. If you are using a memory manager which implements DPMI, enable VCPI 
  245.  
  246.   3. Remove BREAK=ON from config.sys 
  247.  
  248.   4. Reboot 
  249.  
  250.  
  251. ΓòÉΓòÉΓòÉ 4.2. 4.2 Detailed instructions for DOS users ΓòÉΓòÉΓòÉ
  252.  
  253.  emx programs for DOS come in two flavours: those which load emx.exe from a 
  254.  separate file and those which have the emx runtime emx.exe integrated in the 
  255.  executable file of the application program. 
  256.  
  257.  Before changing autoexec.bat and config.sys, make a backup copy of these 
  258.  files! 
  259.  
  260.  If you want to use a program which loads emx.exe, you have to put emx.exe into 
  261.  a directory which is listed in your PATH environment variable or you have to 
  262.  change the PATH environment variable (in autoexec.bat) to include the 
  263.  directory in which emx.exe can be found.  For instance, if your autoexec.bat 
  264.  file contains the line 
  265.  
  266.           path c:\dos;d:\bin
  267.  
  268.  you have installed the emx runtime on drive D, you should modify that line to 
  269.  read 
  270.  
  271.           path c:\dos;d:\bin;d:\emx\bin
  272.  
  273.  You have to put a semicolon between the path names. 
  274.  
  275.  Alternatively, you can set an environment variable which directly points to 
  276.  the emx.exe executable.  If you use this method, your program can locate 
  277.  emx.exe more quickly.  If you have installed the emx runtime on drive D:, you 
  278.  should add the following line to your autoexec.bat file: 
  279.  
  280.           set emx=d:\emx\bin\emx.exe
  281.  
  282.  Note that a directory name is not sufficient -- you have to type the complete 
  283.  path name of the emx.exe file. 
  284.  
  285.  Programs of the second flavour, having emx.exe integrated, don't require 
  286.  \emx\bin added to the PATH environment variable or the EMX environment 
  287.  variable being set.  The program itself, however, may need changes to your 
  288.  autoexec.bat file.  See the documentation accompanying the program.  The 
  289.  following steps are required for both flavours of emx programs. 
  290.  
  291.  If you are using a memory manager (such as QEMM or EMM386 or 386max) which 
  292.  implements DPMI (DOS Protected Mode Interface), you have to change the 
  293.  invokation of that memory manager to enable VCPI as emx does not support DPMI. 
  294.  See the documentation of your memory for details.  If your memory manager 
  295.  supports DPMI only (without VCPI), you have to remove or disable the memory 
  296.  manager.  Alternatively, you can use rsx, as indicated in section 6.3.  emx 
  297.  supports XMS and VCPI. 
  298.  
  299.  Examine your config.sys file: If there is a line 
  300.  
  301.           BREAK=ON
  302.  
  303.  in it, you should remove it as it causes trouble with emx and lots of other 
  304.  programs. 
  305.  
  306.  If you are using an Intel Inboard 386/PC, add the following line to 
  307.  autoexec.bat: 
  308.  
  309.           set emxopt=-m3
  310.  
  311.  If the swap file (used to swap memory pages to disk when running out of 
  312.  physical memory) should be in a specific directory or on a specific disk 
  313.  drive, set the EMXTMP environment variable in autoexec.bat.  Example: 
  314.  
  315.           set emxtmp=c:\tmp
  316.  
  317.  Now, you should reboot to activate the changes to config.sys and autoexec.bat. 
  318.  
  319.  
  320. ΓòÉΓòÉΓòÉ 5. 5 Environment variables (OS/2 and DOS) ΓòÉΓòÉΓòÉ
  321.  
  322.  The operation of emx and emx programs is controlled by several environment 
  323.  variables.  You might have to set one or more of the following environment 
  324.  variables: 
  325.  
  326.  INIT    used by termcap to find termcap.dat 
  327.  
  328.  TERM    used by termcap to define the terminal type 
  329.  
  330.  EMXETC  used by termcap to find termcap.dat 
  331.  
  332.  EMXOPT  emx options (see below) 
  333.  
  334.  EMXSHELL overrides the COMSPEC environment variable.  You can use this to run 
  335.          an alternate command processor (shell) from emx programs 
  336.  
  337.  EMXPATH search path for programs (usually not relevant) 
  338.  
  339.  PATH    search path for program (used if EMXPATH fails) 
  340.  
  341.  TERMCAP used by termcap to find termcap.dat 
  342.  
  343.   Environment variables (DOS)
  344.  
  345.  
  346. ΓòÉΓòÉΓòÉ 5.1. 5.1 Environment variables (DOS) ΓòÉΓòÉΓòÉ
  347.  
  348.  EMX     path name of emx.exe, used by programs which are bound with emxl.exe 
  349.          (the emx loader) instead of emx.exe.  Set EMX to speed up loading of 
  350.          emx.exe or to load a specific version of emx.exe 
  351.  
  352.  EMXTMP  directory for the swap file 
  353.  
  354.  TMP     used if EMXTMP is not set 
  355.  
  356.  
  357. ΓòÉΓòÉΓòÉ 6. 6 DOS Notes ΓòÉΓòÉΓòÉ
  358.  
  359.   General notes
  360.   Emergency exit
  361.   Using rsx instead of emx
  362.  
  363.  
  364. ΓòÉΓòÉΓòÉ 6.1. 6.1 General notes ΓòÉΓòÉΓòÉ
  365.  
  366.  o emx requires DOS 3.0 or later 
  367.  
  368.  o emx does not support DPMI 
  369.  
  370.  o emx does not support DESQview without VCPI (use QEMM-386 with DESQview) 
  371.  
  372.  o If emx doesn't work under DESQview (especially if it displays the message 
  373.  
  374.               Nonmaskable interrupt (NMI)
  375.  
  376.    either set the protection level to 0 or use the WATCHDOG=0 option of 
  377.    QEMM-386. 
  378.  
  379.  o emx supports VCPI 
  380.  
  381.  o emx supports XMS.  Do not use emx with himem.sys 2.06 or earlier. 
  382.  
  383.  o emx checks for XMS version number 2.00 or later and for XMS driver revision 
  384.    2.06 or later, as older himem.sys drivers don't work correctly.  You can 
  385.    override this check by using the -O emx option (for drivers using a 
  386.    different revision numbering scheme), but emx may not work with your XMS 
  387.    driver, anyway.  Actually, emx has not been tested with himem.sys 2.05; 2.04 
  388.    fails, 2.06 works. 
  389.  
  390.  o emx supports vdisk.sys 3.3 and later and most other RAM disk drivers 
  391.  
  392.  o emx uses (or tries to use) all available memory, whether conventional, 
  393.    extended, or expanded memory.  If there isn't enough memory, emx will swap 
  394.    to disk.  The swap file will be created in the directory given by the EMXTMP 
  395.    environment variable.  If EMXTMP is not set, TMP will be used.  If both 
  396.    variables are not set, the swap file will be created in the root directory 
  397.    of the current drive. 
  398.  
  399.  o If a program uses floating point instructions and no numeric coprocessor 
  400.    (387) is installed, emx tries to load the FPU (floating point unit) emulator 
  401.    emxfpemu.  That file is first sought in the directory from which emx.exe was 
  402.    loaded (this does not apply if emx.exe is bound to the executable), then in 
  403.    the current working directory and the directories listed in the EMXPATH and 
  404.    PATH environment variables.  If emxfpemu cannot be found, the program will 
  405.    be aborted by signal SIGFPE. 
  406.  
  407.  
  408. ΓòÉΓòÉΓòÉ 6.2. 6.2 Emergency exit ΓòÉΓòÉΓòÉ
  409.  
  410.  If the computer freezes while running emx, try hitting Ctrl-Break five times 
  411.  in one scond.  That will terminate emx (and all emx processes run by that 
  412.  instance of emx) unless it is blocked in a DOS call.  If blocked in a DOS 
  413.  call, emx will terminate after return from that DOS call. 
  414.  
  415.  
  416. ΓòÉΓòÉΓòÉ 6.3. 6.3 Using rsx instead of emx ΓòÉΓòÉΓòÉ
  417.  
  418.  rsx is a DPMI-compliant DOS extender which is more or less compatible to emx. 
  419.  Moreover, rsx contains a floating point emulator.  rsx is free software and 
  420.  has been written by Rainer Schnittker.  As of this writing, rsx is assumed to 
  421.  be available for anonymous ftp as 
  422.  
  423.           ftp.uni-bielefeld.de: /pub/systems/msdos/misc/dpmigcc5.zip
  424.           ftp.uni-stuttgart.de: /pub/systems/os2/emx-0.9a/contrib/dpmigcc5.zip
  425.           ftp.informatik.tu-muenchen.de:
  426.                                 /pub/comp/os/os2/gnu/emx+gcc/contrib/dpmigcc5.zip
  427.  
  428.  If the emx loader emxl.exe finds a DPMI server but no VCPI server, it tries to 
  429.  run rsx.exe instead of emx.exe.  The RSX environment variable will be used 
  430.  instead of the EMX environment variable for locating rsx.exe. 
  431.  
  432.  To load rsx.exe instead of emx.exe even if there is a DPMI server and a VCPI 
  433.  server (for instance if you need the floating point emulation of rsx), set the 
  434.  EMX environment variable to point to rsx.exe.  Note that rsx needs a DPMI 
  435.  server. 
  436.  
  437.  
  438. ΓòÉΓòÉΓòÉ 7. 7 emx options ΓòÉΓòÉΓòÉ
  439.  
  440.  You can customize emx by setting the EMXOPT environment variable.  This 
  441.  environment variable contains a list of options, similar to command line 
  442.  options.  The options must be separated by at least one blank.  Example: 
  443.  
  444.           set emxopt=-c -h40
  445.  
  446.   emx options (OS/2)
  447.   emx options (DOS)
  448.  
  449.  
  450. ΓòÉΓòÉΓòÉ 7.1. 7.1 emx options (OS/2) ΓòÉΓòÉΓòÉ
  451.  
  452.  -c      Disable core dumps caused by signals and exceptions 
  453.  
  454.  -h#     Set OS/2 file handle limit to #.  The number # must be between 10 and 
  455.          255 
  456.  
  457.  -n      Suppress popups for exceptions.  As emx.dll displays an appropriate 
  458.          error message and dumps core, popups are not required 
  459.  
  460.  -q      All command line arguments passed to child processes will be quoted 
  461.          unconditionally, that is, wildcard expansion and response files won't 
  462.          work in child processes of processes for which the -q option is in 
  463.          effect 
  464.  
  465.  -r*     Prepend drive letter * to absolute path names.  If a path name starts 
  466.          with / but does not start with //, /dev/ or /pipe/, * followed by a 
  467.          colon will be prepended.  If -rd has been given, the file name 
  468.          \mydir\abc will be translated to d:\mydir\abc.  Note: this option can 
  469.          cause unexpected effects 
  470.  
  471.  -t      Truncate file names to 8.3 
  472.  
  473.  -x      Don't suppress wildcard expansion and response files if the `MKS Korn 
  474.          shell' method of passing command line arguments is used 
  475.  
  476.  -E      Run debuggee in same session (window) as debugger 
  477.  
  478.  -I      Don't complain about programs having too small a stack size.  Without 
  479.          the -I option, emx.dll displays an error message for those programs, 
  480.          telling how to run emxstack to fix the stack size.  With the -I 
  481.          option, the program is run despite of the problem.  However, the 
  482.          program will probably crash due to insufficient stack size.  Using the 
  483.          -I option is not recommended! 
  484.  
  485.  -K      Don't use DosKillThread.  Due to bugs in OS/2, DosKillThread may cause 
  486.          problems.  emx.dll automatically avoids using DosKillThread for OS/2 
  487.          2.1 and older.  For OS/2 2.11 and later, you can use the -K option to 
  488.          disable usage of DosKillThread.  Currently, DosKillThread is used only 
  489.          if select() is applied to socket handles 
  490.  
  491.  
  492. ΓòÉΓòÉΓòÉ 7.2. 7.2 emx options (DOS) ΓòÉΓòÉΓòÉ
  493.  
  494.  -c      Disable core dumps caused by signals and exceptions 
  495.  
  496.  -d      Don't use extended memory 
  497.  
  498.  -e      Redirect the standard error handle (2) to standard output (1) 
  499.  
  500.  -h#     Set DOS file handle limit to #.  The number # must be between 10 and 
  501.          255.  This option is ignored for DOS versions earlier than 3.30.  This 
  502.          option does not change the emx limit for the number of files per 
  503.          process -- that limit is always 40 
  504.  
  505.  -m1     Running on Fujitsu FMR70 (not implemented yet) 
  506.  
  507.  -m2     Running on NEC PC-98 (not implemented yet) 
  508.  
  509.  -m3     Running on Intel Inboard 386/PC 
  510.  
  511.  -o      Send the register dump of an exception to stdout.  Without -o, the 
  512.          register dump is sent to the CON device.  You need -o for redirecting 
  513.          the register dump to a file. 
  514.  
  515.          emx now creates a core dump file (named `core') instead of a register 
  516.          dump.  Please keep that file in case the author of the program needs 
  517.          it for debugging. 
  518.  
  519.  -q      All command line arguments passed to child processes will be quoted 
  520.          unconditionally, that is, wildcard expansion and response files won't 
  521.          work in child processes of processes for which the -q option is in 
  522.          effect 
  523.  
  524.  -r*     Prepend drive letter * to absolute path names.  If a path name starts 
  525.          with / but does not start with //, /dev/ or /pipe/, * followed by a 
  526.          colon will be prepended.  If -rd has been given, the file name 
  527.          \mydir\abc will be translated to d:\mydir\abc.  Note: this option can 
  528.          cause unexpected effects 
  529.  
  530.  -t      Truncate file names to 8.3 format.  Each part of a pathname is 
  531.          truncated to 8.3 format by taking the first 8 characters before the 
  532.          dot and the first 3 characters after the dot.  This is useful to 
  533.          compile programs on a FAT filesystem with minimal changes 
  534.  
  535.  -E      Don't check for 387 coprocessor.  Assume no coprocessor is present 
  536.  
  537.  -O      Override XMS version check.  By default, emx checks for XMS version 
  538.          number 2.00 or later and for XMS driver revision 2.06 or later, as 
  539.          older himem.sys drivers don't work correctly.  You can override this 
  540.          check by giving the -O option (for drivers using a different revision 
  541.          numbering scheme), but emx may not work with your XMS driver, anyway. 
  542.          Actually, emx has not been tested with himem.sys 2.05; 2.04 fails, 
  543.          2.06 works 
  544.  
  545.  -V      Display emx version.  On program start, the emx version will be 
  546.          displayed 
  547.  
  548.  -X      Disable usage of XMS memory.  Usage of XMS memory with VCPI is a new 
  549.          feature of emx.  If this happens to cause trouble, use the -X option. 
  550.  
  551.  
  552. ΓòÉΓòÉΓòÉ 8. 8 The emxstack tool ΓòÉΓòÉΓòÉ
  553.  
  554.  The emxstack tool is used for displaying and fixing the stack size.  Old 
  555.  programs assume that emx.dll allocates a stack object if the stack size is too 
  556.  small.  As emx.dll no longer does this, the stack size of the programs must be 
  557.  fixed. 
  558.  
  559.      emxstack command [options] file... 
  560.  
  561.  The following commands are available: 
  562.  
  563.  -c 
  564.  
  565.      Check whether the stack size should be fixed.  For each file, if the stack 
  566.      size is too small, a message will be displayed.  If the stack size is big 
  567.      enough, no message will be displayed. 
  568.  
  569.  -d 
  570.  
  571.      Display the stack size.  For each file, the stack size in KByte will be 
  572.      displayed. 
  573.  
  574.  -f 
  575.  
  576.      Fix the stack size.  For each file, the stack size is fixed if it is too 
  577.      small. 
  578.  
  579.  -ssize 
  580.  
  581.      Set the stack size.  For each file, the stack size is set to size KByte. 
  582.  
  583.  -usize 
  584.  
  585.      Update the stack size.  For each file, the stack size is set to size KByte 
  586.      if it less than size KByte.  If the stack size is not less than size 
  587.      KByte, the stack size won't be changed. 
  588.  
  589.  The following options are available: 
  590.  
  591.  -p 
  592.  
  593.      Act on all files in the PATH.  The command is applied to each file in a 
  594.      directory listed in the PATH environment variable.  No file names must be 
  595.      given on the command line. 
  596.  
  597.  -q 
  598.  
  599.      Be quiet.  No messages will be displayed.  However, error messages won't 
  600.      be suppressed. 
  601.  
  602.  -v 
  603.  
  604.      Be verbose.  Display additional messages. 
  605.  
  606.  Example: 
  607.  
  608.           emxstack -f *.exe
  609.  
  610.  
  611. ΓòÉΓòÉΓòÉ 9. 9 Troubleshooting ΓòÉΓòÉΓòÉ
  612.  
  613.  This section shows how to solve common problems involving the emx runtime. 
  614.  
  615.   Warning message `WARNING: emx 0.9a or later required'
  616.   unzip.exe says `cannot create emx/dll/emx.dll'
  617.   emx.dll cannot be deleted, renamed or overwritten
  618.   Error message `SYS1804: The system cannot find the file EMX.'
  619.   Error message `rsx not found, DPMI not supported by emx'
  620.   Error message `emx.dll: Stack size too small...'
  621.   DOS message `Sector not found'
  622.  
  623.  
  624. ΓòÉΓòÉΓòÉ 9.1. 9.1 Warning message `WARNING: emx 0.9a or later required' ΓòÉΓòÉΓòÉ
  625.  
  626.  If this message appears, an out-of-date version of emx.dll is active.  Make 
  627.  sure that the latest version of emx.dll is in a directory pointed to by the 
  628.  LIBPATH statement in your config.sys file.  Use 
  629.  
  630.           emxrev -p c:\config.sys
  631.  
  632.  to list all emx dynamic link libraries reachable by the LIBPATH statement of 
  633.  c:\config.sys (use the drive letter of your boot drive instead of c:).  To 
  634.  simplify things, you should keep only one version of each DLL.  Older programs 
  635.  work with newer emx DLLs, but not vice versa. 
  636.  
  637.  
  638. ΓòÉΓòÉΓòÉ 9.2. 9.2 unzip.exe says `cannot create emx/dll/emx.dll' ΓòÉΓòÉΓòÉ
  639.  
  640.  This happens when you try to unpack emxrt.zip while a program is active which 
  641.  uses emx.dll.  Terminate all programs which use emx.dll and try again.  If you 
  642.  run emxrev, the command interpreter keeps emx.dll loaded until terminated. 
  643.  Therefore, you should close all OS/2 windows and full-screen sessions in which 
  644.  you have run emxrev.  All this also applies to emxlibcm.dll etc. 
  645.  
  646.  
  647. ΓòÉΓòÉΓòÉ 9.3. 9.3 emx.dll cannot be deleted, renamed or overwritten ΓòÉΓòÉΓòÉ
  648.  
  649.  See the previous problem. 
  650.  
  651.  
  652. ΓòÉΓòÉΓòÉ 9.4. 9.4 Error message `SYS1804: The system cannot find the file EMX.' ΓòÉΓòÉΓòÉ
  653.  
  654.  You have not correctly set the LIBPATH statement of config.sys, therefore 
  655.  emx.dll could not be found. 
  656.  
  657.  
  658. ΓòÉΓòÉΓòÉ 9.5. 9.5 Error message `rsx not found, DPMI not supported by emx' ΓòÉΓòÉΓòÉ
  659.  
  660.  The current version of emx cannot use DPMI.  Therefore, the loader tried to 
  661.  use rsx instead, but couldn't find rsx.  Remedy: install rsx or end the DPMI 
  662.  server (MS Windows). 
  663.  
  664.  
  665. ΓòÉΓòÉΓòÉ 9.6. 9.6 Error message `emx.dll: Stack size too small...' ΓòÉΓòÉΓòÉ
  666.  
  667.  You tried to run an old program (which assumes that emx.dll creates a stack 
  668.  object if the stack size is too small). 
  669.  
  670.  Run emxstack as indicated by the error message to fix the stack size of the 
  671.  program.  If you can't (because you don't have write permission for the file), 
  672.  type 
  673.  
  674.           set emxopt=-I
  675.  
  676.  to make emx.dll ignore the problem.  However, the program will probably crash 
  677.  due to insufficient stack size.  Using the -I option is not recommended! 
  678.  
  679.  
  680. ΓòÉΓòÉΓòÉ 9.7. 9.7 DOS message `Sector not found' ΓòÉΓòÉΓòÉ
  681.  
  682.  DOS seems to display that message if a file is opened twice (perhaps one 
  683.  handle for reading, one for writing).  For instance, this happens when GCC 
  684.  runs out of temporary files.  Look for files named like cca00002, ccz00002 
  685.  etc. (the digits may vary) in your temporary directory and delete them. 
  686.  
  687.  
  688. ΓòÉΓòÉΓòÉ 10. 10 emx messages ΓòÉΓòÉΓòÉ
  689.  
  690.   emx messages (OS/2)
  691.   emx messages (DOS)
  692.  
  693.  
  694. ΓòÉΓòÉΓòÉ 10.1. 10.1 emx messages (OS/2) ΓòÉΓòÉΓòÉ
  695.  
  696.  core dumped 
  697.  
  698.      The program cannot continue due to a fatal error (exception).  An image of 
  699.      the program's memory has been written to a file named `core'.  Please keep 
  700.      that file in case the author of the program needs it for debugging. 
  701.  
  702.  emx.dll: Stack size too small... 
  703.  
  704.      You tried to run an old program (which assumes that emx.dll creates a 
  705.      stack object if the stack size is too small).  You should run emxstack to 
  706.      fix the stack size. 
  707.  
  708.  Invalid option in EMXOPT 
  709.  
  710.      An option in the EMXOPT environement variable is not understood by emx. 
  711.  
  712.  Invalid syscall function code 
  713.  
  714.      The program run by emx has called an invalid system function.  Most 
  715.      likely, you're using an emx.dll which is out of date. 
  716.  
  717.  WARNING: emx 0.9a or later required 
  718.  
  719.      The program requires emx.dll 0.9a or later.  However, an older version of 
  720.      emx.dll is active.  Make sure that the latest version of emx.dll is in a 
  721.      directory pointed to by the LIBPATH statement in your config.sys file. 
  722.      Use 
  723.  
  724.                   emxrev -p c:\config.sys
  725.  
  726.      to list all emx dynamic link libraries reachable by the LIBPATH statement 
  727.      of c:\config.sys (use the drive letter of your boot drive instead of c:). 
  728.      To simplify things, you should keep only one version of each DLL.  Older 
  729.      programs work with newer emx DLLs, but not vice versa. 
  730.  
  731.  
  732. ΓòÉΓòÉΓòÉ 10.2. 10.2 emx messages (DOS) ΓòÉΓòÉΓòÉ
  733.  
  734.  Abnormal program termination 
  735.  
  736.      The program received the SIGABRT signal.  The abort() function was called 
  737.      or SIGABRT was raised. 
  738.  
  739.  Bad environment 
  740.  
  741.      The program name could not be found in the environment segment or the 
  742.      environment segment is longer than 32768 bytes.  This should not happen in 
  743.      practice. 
  744.  
  745.  Cannot create swap file 
  746.  
  747.      The swap file could not be created.  Remedy: make sure the swap file can 
  748.      be created in the directory given by the EMXTMP (or TMP) environment 
  749.      variable.  If EMXTMP and TMP are not set, emx will create the swap file in 
  750.      the root directory of the current drive. 
  751.  
  752.  Cannot enable A20 
  753.  
  754.      emx tried to enable address line A20 and failed.  Remedy: contact the 
  755.      author. 
  756.  
  757.  Cannot enable A20 via XMS 
  758.  
  759.      emx tried to enable address line A20 by calling the XMS driver. 
  760.      Unfortunately, A20 couldn't be enabled.  Remedy: unknown. 
  761.  
  762.  Cannot open program file 
  763.  
  764.      The program file given on the emx command line could not be found or 
  765.      opened.  Remedy: type the correct file name.  (This should not happen with 
  766.      bound programs.) 
  767.  
  768.  Cannot read program file 
  769.  
  770.      An error occured while reading the program file.  Remedy: make sure the 
  771.      program file given on the emx command line is valid (this does not apply 
  772.      to bound programs).  Maybe some other program accesses that file. 
  773.  
  774.  core dumped 
  775.  
  776.      The program cannot continue due to a fatal error (exception).  An image of 
  777.      the program's memory has been written to a file named `core'.  Please keep 
  778.      that file in case the author of the program needs it for debugging. 
  779.  
  780.  DPMI not supported 
  781.  
  782.      The current version of emx cannot use DPMI.  Maybe some future version 
  783.      will do.  Remedy: end the DPMI server (MS Windows) or use rsx. 
  784.  
  785.  emx not found 
  786.  
  787.      The emx loader (emxl.exe) failed to find emx.exe.  Make sure that emx.exe 
  788.      is in a directory listed in the PATH environment variable.  Alternatively, 
  789.      you can set the EMX environment variable to the complete path name of 
  790.      emx.exe. 
  791.  
  792.  Exception ... 
  793.  
  794.      The program run by emx tried to do something which is considered illegal 
  795.      by the processor or by emx.  Remedy: report to the supplier of the 
  796.      program. 
  797.  
  798.  Illegal moucall function 
  799.  
  800.      The program run by emx has called an invalid system function.  Remedy: 
  801.      report to the supplier of the program. 
  802.  
  803.  Illegal syscall function 
  804.  
  805.      The program run by emx has called an invalid system function.  Remedy: 
  806.      report to the supplier of the program. 
  807.  
  808.  Illegal viocall function 
  809.  
  810.      The program run by emx has called an invalid system function.  Remedy: 
  811.      report to the supplier of the program. 
  812.  
  813.  Invalid arguments for DOS function xx 
  814.  
  815.      The program run by emx has used invalid arguments for a system function. 
  816.      Remedy: report to the supplier of the program. 
  817.  
  818.  Invalid emx option 
  819.  
  820.      An option in EMXOPT or set by emxbind is not understood by emx.  Remedy: 
  821.      check EMXOPT.  Use emxbind -i to display the options set by emxbind. 
  822.  
  823.  Invalid program file 
  824.  
  825.      The program file given on the emx command line (or bound to emx) is 
  826.      corrupt.  Remedy: reload the program from diskette.  If this doesn't help 
  827.      you should contact the supplier of the program. 
  828.  
  829.  Invalid special function code: xx 
  830.  
  831.      The program run by emx has called an invalid system function.  Remedy: 
  832.      report to the supplier of the program. 
  833.  
  834.  Linear address space exhausted 
  835.  
  836.      The program run by emx uses far too much memory.  Remedy: complain to the 
  837.      author. 
  838.  
  839.  Nonmaskable interrupt (NMI) at xxxx:yyyyyyyy 
  840.  
  841.      A nonmaskable interrupt occured.  Maybe this is due to a memory error. 
  842.      Remedy: if you are using DESQview, either set the protection level to 0 or 
  843.      use the WATCHDOG=0 option of QEMM-386.  Otherwise, run a program for 
  844.      testing memory. 
  845.  
  846.  Out of memory 
  847.  
  848.      There isn't enough memory for running emx.  Remedy: remove some drivers 
  849.      and/or resident programs.  Or add memory to your machine. 
  850.  
  851.  Out of stacks 
  852.  
  853.      emx ran out of local stacks.  Remedy: complain to the author. 
  854.  
  855.  Out of memory or swap space 
  856.  
  857.      emx cannot write to the swap file because the disk is full.  Remedy: make 
  858.      sure there is enough space on the drive used for the swap file.  Use the 
  859.      EMXTMP (or TMP) environment variable to tell emx where to create the swap 
  860.      file.  If neither EMXTMP nor TMP is set, emx will create the swap file in 
  861.      the root directory of the current drive. 
  862.  
  863.  Out of swap space 
  864.  
  865.      emx cannot write to the swap file because the disk is full.  Remedy: make 
  866.      sure there is enough space on the drive used for the swap file.  Use the 
  867.      EMXTMP (or TMP) environment variable to tell emx where to create the swap 
  868.      file.  If neither EMXTMP nor TMP is set, emx will create the swap file in 
  869.      the root directory of the current drive. 
  870.  
  871.  Process terminated by SIGINT 
  872.  
  873.      You have stopped the program by hitting Ctrl-C or Ctrl-Break. 
  874.  
  875.  Process terminated by SIG... 
  876.  
  877.      The program has been stopped due to a signal or exception.  Usually, this 
  878.      indicates a fatal error in the program. 
  879.  
  880.  Program aborted 
  881.  
  882.      You have aborted the program by answering `Abort' after a critical error 
  883.      had occured. 
  884.  
  885.  rsx not found, DPMI not supported by emx 
  886.  
  887.      The current version of emx cannot use DPMI.  Therefore, the loader tried 
  888.      to use rsx instead, but couldn't find rsx.  Remedy: install rsx or end the 
  889.      DPMI server (MS Windows). 
  890.  
  891.  Swap file I/O error 
  892.  
  893.      emx couldn't read or write the swap file. 
  894.  
  895.  This program does not run in DOS mode of OS/2 
  896.  
  897.      DOS emulation of OS/2 doesn't support emx.  Remedy: boot DOS or run the 
  898.      program in a OS/2 window 
  899.  
  900.  This program requires an 80386 CPU 
  901.  
  902.      You need an 80386DX, 80386SX, i486 or later CPU for running emx.  Remedy: 
  903.      get another computer. 
  904.  
  905.  This program requires DOS 3.0 or later 
  906.  
  907.      If emx is bound with an application program into one executable, DOS 3.0 
  908.      or later is required for execution. 
  909.  
  910.  Too many processes 
  911.  
  912.      emx supports up to 4 processes.  You tried to start 5 or more processes. 
  913.  
  914.  Unexpected interrupt 
  915.  
  916.      This cannot happen.  Remedy: report to the author. 
  917.  
  918.  Unsupported VDISK.SYS version 
  919.  
  920.      emx doesn't support the vdisk.sys device driver you are using.  Remedy: 
  921.      remove VDISK.SYS or use a different version.  emx should work with 
  922.      vdisk.sys 3.3 or later. 
  923.  
  924.  Unsupported XMS version 
  925.  
  926.      emx requires himem.sys 2.06 or later (older versions are too buggy). 
  927.      Remedy: get a newer himem.sys.  If you are not using himem.sys, use the -O 
  928.      option of emx and tell the author whether this works or not. 
  929.  
  930.  Unusable interrupt vector mappings set by VCPI server 
  931.  
  932.      The configuration of the VCPI server (EMS driver) is illegal.  Remedy: 
  933.      read the manual of the EMS driver. 
  934.  
  935.  Use emxbind 
  936.  
  937.      You tried to run emxl.exe, which doesn't make sense.  emxl.exe is designed 
  938.      to be bound into an executable file by emxbind. 
  939.  
  940.  Virtual mode not supported without VCPI 
  941.  
  942.      A VCPI server is required to run emx if the CPU is in virtual mode.  You 
  943.      will get this message if you're using an EMS driver (EMS emulator) which 
  944.      doesn't support VCPI or if you have disabled EMS.  Remedy: remove the EMS 
  945.      driver, use an EMS driver which supports VCPI or enable EMS if it has been 
  946.      disabled (for instance, remove the NOEMS keyword from the command line of 
  947.      the EMS driver). 
  948.  
  949.  Wrong emx version 
  950.  
  951.      The version of emx.exe does not match the version the program was compiled 
  952.      for.  Remedy: use the copy of emx.exe that comes with the program.  If you 
  953.      are using different programs which need different versions of emx.exe, use 
  954.      the EMX environment variable to set the path name of the correct version 
  955.      of emx.exe before running a program which requires a version different 
  956.      from the default emx.exe.  You can also use emxbind -u to put the correct 
  957.      version of emx.exe into the executable files. 
  958.  
  959.  
  960. ΓòÉΓòÉΓòÉ 11. 11 Obtaining the complete emx package ΓòÉΓòÉΓòÉ
  961.  
  962.  emx is available for anonymous ftp on 
  963.  
  964.           ftp.uni-stuttgart.de [129.69.18.15]: /pub/systems/os2/emx-0.9a
  965.           ftp-os2.cdrom.com:   [192.153.46.2]: /os2/32bit/unix/emx09a
  966.           src.doc.ic.ac.uk      [146.169.2.1]: /pub/packages/os2/32bit/unix/emx09a
  967.           ftp.informatik.tu-muenchen.de [131.159.0.198]:
  968.                                                /pub/comp/os/os2/gnu/emx+gcc
  969.  
  970.  
  971. ΓòÉΓòÉΓòÉ 12. 12 The author of emx ΓòÉΓòÉΓòÉ
  972.  
  973.  The author of emx is 
  974.  
  975.      Eberhard Mattes 
  976.      Teckstra╤üe 81 
  977.      D-71696 M╨ñglingen 
  978.      Germany 
  979.  
  980.  Internet: mattes@azu.informatik.uni-stuttgart.de  (subject to change) 
  981.  
  982.  No telephone calls please!  It must be stressed that the author does not reply 
  983.  to letters if you don't include return postage (international postal reply 
  984.  coupon if you are outside Germany) and a self-addressed