[프로그램] emxrt 0.9c

마루 0 2,347 2008.04.21 10:32
eComStation 에서는 설치할 필요없습니다.
---

===============================================================================
emxrt.doc    emx 0.9c FIX 00     USER'S GUIDE TO THE EMX RUNTIME    09-Sep-1996
===============================================================================
                                     Copyright (c) 1990-1996 by Eberhard Mattes

Table of Contents
=================

1     Introduction to the User's Guide to the emx Runtime
1.1     Hardware requirements
1.2     Files included in the emx runtime package
2     License
3     Installing the emx runtime package under OS/2
3.1     Summary for impatient OS/2 users
3.2     Detailed instructions for OS/2 users
4     Installing the emx runtime package under DOS
4.1     Summary for impatient DOS users
4.2     Detailed instructions for DOS users
5     Environment variables (OS/2 and DOS)
5.1     Environment variables (DOS)
6     DOS Notes
6.1     General notes
6.2     Emergency exit
6.3     Using rsx instead of emx
7     emx options
7.1     emx options (OS/2)
7.2     emx options (DOS)
8     The emxstack tool
9     The emxupd tool
9.1     Replacing a DLL
9.2     Deleting a DLL
9.3     Unpacking DLLs from a ZIP file and installing them with emxupd
10    Troubleshooting
10.1    Warning message `WARNING: emx 0.9c or later required'
10.2    unzip.exe says `cannot create emx/dll/emx.dll'
10.3    emx.dll cannot be deleted, renamed or overwritten
10.4    Error message `SYS1804: The system cannot find the file EMX.'
10.5    Error message `rsx not found, DPMI not supported by emx'
10.6    Error message `emx.dll: Stack size too small...'
10.7    DOS message `Sector not found'
11    emx messages
11.1    emx messages (OS/2)
11.2    emx messages (DOS)
12    Obtaining the complete emx package
13    The author of emx


1 Introduction to the User's Guide to the emx Runtime
=====================================================

This is the documentation for the emx runtime package.  The emx
runtime is an environment for 32-bit programs under OS/2 2.x, OS/2 3.x
(OS/2, in short), MS-DOS, and PC-DOS (DOS, in short) on machines with
a 386 CPU (or one of its successors).

Under OS/2, you can view the .inf version of this document by typing

    view \emx\book\emxrt

If you add \emx\book to the BOOKSHELF environment variable, you can
type

    view emxrt

to view that on-line book.


1.1 Hardware requirements
-------------------------

emx requires an 80386 CPU (80386DX, 80386SX, i486, or later)


1.2 Files included in the emx runtime package
---------------------------------------------

The emx runtime package includes the following files:

  \emx\bin\emx.exe              emx runtime for DOS
  \emx\bin\emxbind.exe          Tool for modifying emx programs (DOS and OS/2)
  \emx\bin\emxfpemu             Emulator for numeric coprocessor (DOS)
  \emx\bin\emxl.exe             emx loader (used by emxbind)
  \emx\bin\emxload.exe          Server for keeping OS/2 programs in memory
  \emx\bin\emxrev.cmd           Tool for displaying emx revisions (OS/2)
  \emx\bin\emxstack.exe         Tool for fixing the stack size of old programs
  \emx\bin\emxupd.exe           Tool for updating a DLL which is in use
  \emx\bin\emxuzdll.cmd         Unpack DLLs and install them with emxupd.exe
  \emx\book\emxrt.inf           The text you are looking at (VIEW version)
  \emx\dll\emx.dll              emx runtime for OS/2
  \emx\dll\emxio.dll            Hardware port I/O under OS/2
  \emx\dll\emxlibc.dll          Forwarder DLL to emxlibcm.dll (OS/2)
  \emx\dll\emxlibcm.dll         Multithread C library (OS/2)
  \emx\dll\emxlibcs.dll         Single-thread C library (OS/2)
  \emx\dll\emxwrap.dll          Interface to 16-bit OS/2 functions (OS/2)
  \emx\doc\COPYING              GNU General Public License
  \emx\doc\COPYING.EMX          emx copyright information
  \emx\doc\emxrt.doc            The text you are looking at (text version)
  \emx\etc\termcap.dat          Terminal data base for termcap-based programs
  \emx\etc\emclibcm.map         Map file for emxlibcm.dll
  \emx\etc\emclibcm.tdf         Trace definition file for emxlibm.dll
  \emx\etc\emclibcs.map         Map file for emxlibcs.dll
  \emx\etc\emclibcs.tdf         Trace definition file for emxlibs.dll
  \emx\etc\trc00f8.tff          Trace format file for emxlibcs.dll
  \emx\etc\trc00f9.tff          Trace format file for emxlibcm.dll

The .map, .tdf, and .tff files are used for debugging.  They are
included in emxrt.zip to keep them in sync with the DLLs.


2 License
=========

emx is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free
Software Foundation; either version 2, or (at your option) any later
version.

emx is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
for more details.

You should have received a copy of the GNU General Public License
along with emx; see the file COPYING.  If not, write to the Free
Software Foundation, 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA.

See \emx\doc\COPYING.EMX and \emx\doc\COPYING for details.


3 Installing the emx runtime package under OS/2
===============================================


3.1 Summary for impatient OS/2 users
------------------------------------

1.  Add \emx\dll to LIBPATH (always use the latest copy of the .dll
    files!)

2.  Add \emx\bin to PATH

3.  Reboot


3.2 Detailed instructions for OS/2 users
----------------------------------------

emx does not work with OS/2 1.x and in DOS mode of OS/2.

Before changing config.sys, make a backup copy of that file!

The emx runtime is implemented as a set of dynamic link libraries
under OS/2:

emx.dll
        emx run-time support for OS/2

emxio.dll
        access to hardware ports for emx programs under OS/2

emxlibc.dll
        forwarder DLL to emxlibcm.dll for existing applications that
        use emxlibc.dll (which has been renamed to emxlibcm.dll)

emxlibcm.dll
        multithread emx C library

emxlibcs.dll
        single-thread emx C library

emxwrap.dll
        32-bit wrappers for 16-bit OS/2 API functions

OS/2 looks for dynamic link libraries in the directories listed in the
LIBPATH statement of your config.sys file.  Note that LIBPATH is not
an environment variable!

At any time, at most one version of a dynamic link library is loaded.
If there are different versions of a dynamic link library in the
directories listed in the LIBPATH statement, the first one listed is
loaded.  If you already have installed the emx dynamic link libraries,
you should be careful to use the latest revision of those dynamic link
libraries.  Newer emx dynamic link libraries work with older emx
programs (however, you may have to apply emxstack), but newer emx
programs don't work with older emx dynamic link libraries.  To find
out about already installed emx dynamic link libraries, type

    cd \emx\bin
    emxrev

If no emx dynamic link libraries are installed, no output is produced.
If there are emx dynamic link libraries installed, the names and
revision numbers are displayed, for instance

    EMX : revision = 30
    EMXIO : revision = 30
    EMXLIBC : revision = 30
    EMXLIBCM : revision = 30
    EMXLIBCS : revision = 30
    EMXWRAP : revision = 30

Only directories listed in the LIBPATH statement are searched.  To
find out the revision numbers of the dynamic link libraries of this
package, type

    emxrev -d c:\emx\dll

if you have put the emx runtime package on drive C.  After running
emxrev, you should quit the command processor by typing

    exit

to release the dynamic link libraries (they have been loaded by
cmd.exe as emxrev is a REXX procedure).  Otherwise, you cannot rename,
overwrite, or delete those files.  This also happens if one of the emx
dynamic link libraries is currently used by a program.  If you get
error message SYS0032, or the message

    error:  cannot create emx/dll/emx.dll

from unzip when unpacking emxrt.zip, use

    pstat /L

to find out about the dynamic link libraries used by the programs
currently running.  Terminate all the programs using emx.dll,
emxio.dll, emxlibc.dll, emxlibcm.dll, emxlibcs.dll, or emxwrap.dll.
The command

    emxload -qw

will unload programs kept in memory by emxload.exe.

If that doesn't help, use emxuzdll to install the emx DLLs: Create a
temporary directory and run emxuzdll in that directory, giving the
path name of emxrt.zip and the path name of the emx DLL directory on
the command line:

    mkdir \emxtmp
    chdir \emxtmp
    emxuzdll a:\emxrt.zip c:\emx\dll
    chdir ..
    rmdir emxtmp

This will replace the DLLs in c:\emx\dll with the DLLs in emxrt.zip
even if the DLLs are in use.  The new versions of the DLLs become
active as soon as the last process referencing them is terminated, or
on the next reboot.  Therefore, you should reboot after running
emxuzdll, otherwise you won't know if and when the new versions become
active.  (Actually, you don't need a temporary directory, any
directory not containing any DLL files will do.)

Either copy the latest revisions of the emx dynamic link libraries
(that is, those with the highest revision numbers) to a directory
directory listed in the LIBPATH statement of config.sys or, better,
modify the LIBPATH statement to include the directory where the latest
revisions of the emx dynamic link libraries can be found.

The directories of the LIBPATH statement are separated by semicolons.
To add c:\emx\dll to the LIBPATH statement, append a semicolon -- if
there is not yet a semicolon -- to the end of the line of config.sys
that starts with

    LIBPATH=

Then, type the absolute name of the directory.  Example:

    LIBPATH=.;C:\OS2\DLL;C:\OS2\MDOS;C:\;C:\OS2\APPS\DLL;D:\EMX\DLL

Optionally, you can append a semicolon at the end.

Next, modify the line of config.sys starting with

    SET PATH=

to include the \emx\bin directory.  For instance, change

    SET PATH=C:\OS2;C:\OS2\SYSTEM;C:\OS2\MDOS\WINOS2;C:\OS2\INSTALL;
    C:\;C:\OS2\MDOS;C:\OS2\APPS

to

    SET PATH=C:\OS2;C:\OS2\SYSTEM;C:\OS2\MDOS\WINOS2;C:\OS2\INSTALL;
    C:\;C:\OS2\MDOS;C:\OS2\APPS;D:\EMX\BIN

As with LIBPATH, you have to put a semicolon between the path names
and a trailing semicolon is optional.  Note that the last two examples
are shown in two lines; in config.sys, however, the complete SET
statement must be put into one line.

You might want to add \emx\book to the BOOKSHELF environment variable
to simplify viewing the on-line documentation.  For instance, change
the line

    SET BOOKSHELF=C:\OS2\BOOK;

of your config.sys file to

    SET BOOKSHELF=C:\OS2\BOOK;C:\EMX\BOOK

as with PATH, you have to put a semicolon between the path names and a
trailing semicolon is optional.

Now, you should reboot to activate the changes to config.sys.  After
booting, run

    emxrev

to verify that the latest revision of emx is now active.

If OS/2 says

    SYS1804: The system cannot find the file EMX.

when running an emx program, you have not correctly set the LIBPATH
statement of config.sys.  See above for details.

When running an old program (which assumes that emx.dll creates a
stack object if the stack size is too small), you will get an error
message like

    emx.dll: Stack size too small.  Run
      emxstack -f D:\BIN\PROGRAM.EXE
    and try again.

Run emxstack as indicated by the error message to fix the stack size
of the program.  If you can't (because you don't have write permission
for the file), type

    set emxopt=-I

to make emx.dll ignore the problem.  However, the program will
probably crash due to insufficient stack size.  Using the -I option is
not recommended!


4 Installing the emx runtime package under DOS
==============================================


4.1 Summary for impatient DOS users
-----------------------------------

1.  Add \emx\bin to PATH or set EMX to point to \emx\bin\emx.exe

2.  If you are using a memory manager which implements DPMI, enable
    VCPI

3.  Remove BREAK=ON from config.sys

4.  Reboot


4.2 Detailed instructions for DOS users
---------------------------------------

emx programs for DOS come in two flavours: those which load emx.exe
from a separate file and those which have the emx runtime emx.exe
integrated in the executable file of the application program.

Before changing autoexec.bat and config.sys, make a backup copy of
these files!

If you want to use a program which loads emx.exe, you have to put
emx.exe into a directory which is listed in your PATH environment
variable or you have to change the PATH environment variable (in
autoexec.bat) to include the directory in which emx.exe can be found.
For instance, if your autoexec.bat file contains the line

    path c:\dos;d:\bin

you have installed the emx runtime on drive D, you should modify that
line to read

    path c:\dos;d:\bin;d:\emx\bin

You have to put a semicolon between the path names.

Alternatively, you can set an environment variable which directly
points to the emx.exe executable.  If you use this method, your
program can locate emx.exe more quickly.  If you have installed the
emx runtime on drive D:, you should add the following line to your
autoexec.bat file:

    set emx=d:\emx\bin\emx.exe

Note that a directory name is not sufficient -- you have to type the
complete path name of the emx.exe file.

Programs of the second flavour, having emx.exe integrated, don't
require \emx\bin added to the PATH environment variable or the EMX
environment variable being set.  The program itself, however, may need
changes to your autoexec.bat file.  See the documentation accompanying
the program.  The following steps are required for both flavours of
emx programs.

If you are using a memory manager (such as QEMM or EMM386 or 386max)
which implements DPMI (DOS Protected Mode Interface), you have to
change the invokation of that memory manager to enable VCPI as emx
does not support DPMI.  See the documentation of your memory for
details.  If your memory manager supports DPMI only (without VCPI),
you have to remove or disable the memory manager.  Alternatively, you
can use rsx, as indicated in section 6.3.  emx supports XMS and VCPI.

Examine your config.sys file: If there is a line

    BREAK=ON

in it, you should remove it as it causes trouble with emx and lots of
other programs.

If and only if you are using an `Intel Inboard 386/PC' expansion board
in your 8088-based PC, add the following line to autoexec.bat (it's
very unlikely that you are using such an expansion board):

    set emxopt=-m3

If the swap file (used to swap memory pages to disk when running out
of physical memory) should be in a specific directory or on a specific
disk drive, set the EMXTMP environment variable in autoexec.bat.
Example:

    set emxtmp=c:\tmp

Now, you should reboot to activate the changes to config.sys and
autoexec.bat.


5 Environment variables (OS/2 and DOS)
======================================

The operation of emx and emx programs is controlled by several
environment variables.  You might have to set one or more of the
following environment variables:

INIT    used by termcap to find termcap.dat

TERM    used by termcap to define the terminal type

EMXETC  used by termcap to find termcap.dat

EMXOPT  emx options (see below)

EMXSHELL
        overrides the COMSPEC environment variable.  You can use this
        to run an alternate command processor (shell) from emx
        programs

EMXPATH
        search path for programs (usually not relevant)

PATH    search path for program (used if EMXPATH fails)

TERMCAP
        used by termcap to find termcap.dat


5.1 Environment variables (DOS)
-------------------------------

EMX     path name of emx.exe, used by programs which are bound with
        emxl.exe (the emx loader) instead of emx.exe.  Set EMX to
        speed up loading of emx.exe or to load a specific version of
        emx.exe

EMXTMP  directory for the swap file

TMP     used if EMXTMP is not set


6 DOS Notes
===========


6.1 General notes
-----------------

- emx requires DOS 3.0 or later

- emx does not support DPMI

- emx does not support DESQview without VCPI (use QEMM-386 with
  DESQview)

- If emx doesn't work under DESQview (especially if it displays the
  message

      Nonmaskable interrupt (NMI)

  either set the protection level to 0 or use the WATCHDOG=0 option of
  QEMM-386.

- emx supports VCPI

- emx supports XMS.  Do not use emx with himem.sys 2.06 or earlier.

- emx checks for XMS version number 2.00 or later and for XMS driver
  revision 2.06 or later, as older himem.sys drivers don't work
  correctly.  You can override this check by using the -O emx option
  (for drivers using a different revision numbering scheme), but emx
  may not work with your XMS driver, anyway.  Actually, emx has not
  been tested with himem.sys 2.05; 2.04 fails, 2.06 works.

- emx supports vdisk.sys 3.3 and later and most other RAM disk drivers

- emx uses (or tries to use) all available memory, whether
  conventional, extended, or expanded memory.  If there isn't enough
  memory, emx will swap to disk.  The swap file will be created in the
  directory given by the EMXTMP environment variable.  If EMXTMP is
  not set, TMP will be used.  If both variables are not set, the swap
  file will be created in the root directory of the current drive.

- If a program uses floating point instructions and no numeric
  coprocessor (387) is installed, emx tries to load the FPU (floating
  point unit) emulator emxfpemu.  That file is first sought in the
  directory from which emx.exe was loaded (this does not apply if
  emx.exe is bound to the executable), then in the current working
  directory and the directories listed in the EMXPATH and PATH
  environment variables.  If emxfpemu cannot be found, the program
  will be aborted by signal SIGFPE.


6.2 Emergency exit
------------------

If the computer freezes while running emx, try hitting Ctrl-Break five
times in one scond.  That will terminate emx (and all emx processes
run by that instance of emx) unless it is blocked in a DOS call.  If
blocked in a DOS call, emx will terminate after return from that DOS
call.


6.3 Using rsx instead of emx
----------------------------

rsx is a DPMI-compliant DOS extender which is more or less compatible
to emx.  Moreover, rsx contains a floating point emulator.  rsx is
free software and has been written by Rainer Schnittker.  As of this
writing, rsx is assumed to be available for anonymous ftp as

    ftp.uni-bielefeld.de: /pub/systems/msdos/misc/dpmigcc5.zip
    ftp.uni-stuttgart.de: /pub/systems/os2/emx-0.9c/contrib/dpmigcc5.zip
    ftp.leo.org:          /pub/comp/os/os2/gnu/emx+gcc/contrib/dpmigcc5.zip

If the emx loader emxl.exe finds a DPMI server but no VCPI server, it
tries to run rsx.exe instead of emx.exe.  The RSX environment variable
will be used instead of the EMX environment variable for locating
rsx.exe.

To load rsx.exe instead of emx.exe even if there is a DPMI server and
a VCPI server (for instance if you need the floating point emulation
of rsx), set the EMX environment variable to point to rsx.exe.  Note
that rsx needs a DPMI server.


7 emx options
=============

You can customize emx by setting the EMXOPT environment variable.
This environment variable contains a list of options, similar to
command line options.  The options must be separated by at least one
blank.  Example:

    set emxopt=-c -h40


7.1 emx options (OS/2)
----------------------

-c      Disable core dumps caused by signals and exceptions

-h#     Set OS/2 file handle limit to #.  The number # must be between
        10 and 65536

-n      Suppress popups for exceptions.  As emx.dll displays an
        appropriate error message and dumps core, popups are not
        required

-q      All command line arguments passed to child processes will be
        quoted unconditionally, that is, wildcard expansion and
        response files won't work in child processes of processes for
        which the -q option is in effect

-r*     Prepend drive letter * to absolute path names.  If a path name
        starts with / but does not start with //, /dev/ or /pipe/, *
        followed by a colon will be prepended.  If -rd has been given,
        the file name \mydir\abc will be translated to d:\mydir\abc.
        Note: this option can cause unexpected effects

-t*     Truncate file names to 8.3 format.  Each part of a pathname is
        truncated to 8.3 format by taking the first 8 characters
        before the dot and the first 3 characters after the dot.  This
        is useful to compile programs on a FAT filesystem with minimal
        changes.

        Without argument, -t enables truncation on all drives and for
        UNC pathnames.

        The -t option takes an optional argument, listing the names of
        the drives on which file names should be truncated.  The
        special drive name `/' controls whether to truncate UNC
        pathnames.  With `-tc/', for instance, file names on drive C
        and UNC pathnames will be truncated.

        If the argument of the -t option is `-', truncation is
        disabled for all drives and for UNC pathnames.  This is the
        default setting.  If the argument starts with `-', truncation
        is disabled on all drives listed.  With `-t -t-d', for
        instance, UNC pathnames and file names on all drives except
        drive D will be truncated.

-x      Don't suppress wildcard expansion and response files if the
        `MKS Korn shell' method of passing command line arguments is
        used

-E      Run debuggee in same session (window) as debugger

-I      Don't complain about programs having too small a stack size.
        Without the -I option, emx.dll displays an error message for
        those programs, telling how to run emxstack to fix the stack
        size.  With the -I option, the program is run despite of the
        problem.  However, the program will probably crash due to
        insufficient stack size.  Using the -I option is not
        recommended!

-K      Don't use DosKillThread.  Due to bugs in OS/2, DosKillThread
        may cause problems.  emx.dll automatically avoids using
        DosKillThread for OS/2 2.1 and older.  For OS/2 2.11 and
        later, you can use the -K option to disable usage of
        DosKillThread.  Currently, DosKillThread is not used by
        emx.dll and this option does not have any effect.


7.2 emx options (DOS)
---------------------

-c      Disable core dumps caused by signals and exceptions

-d      Don't use extended memory

-e      Redirect the standard error handle (2) to standard output (1)

-h#     Set DOS file handle limit to #.  The number # must be between
        10 and 65536.  This option is ignored for DOS versions earlier
        than 3.30.  This option does not change the emx limit for the
        number of files per process -- that limit is always 40

-m1     Running on Fujitsu FMR70 (not implemented yet)

-m2     Running on NEC PC-98 (not implemented yet)

-m3     Running on Intel Inboard 386/PC

-o      Send the register dump of an exception to stdout.  Without -o,
        the register dump is sent to the CON device.  You need -o for
        redirecting the register dump to a file.

        emx now creates a core dump file (named `core') instead of a
        register dump.  Please keep that file in case the author of
        the program needs it for debugging.

-q      All command line arguments passed to child processes will be
        quoted unconditionally, that is, wildcard expansion and
        response files won't work in child processes of processes for
        which the -q option is in effect

-r*     Prepend drive letter * to absolute path names.  If a path name
        starts with / but does not start with //, /dev/ or /pipe/, *
        followed by a colon will be prepended.  If -rd has been given,
        the file name \mydir\abc will be translated to d:\mydir\abc.
        Note: this option can cause unexpected effects

-t*     Truncate file names to 8.3 format.  Each part of a pathname is
        truncated to 8.3 format by taking the first 8 characters
        before the dot and the first 3 characters after the dot.  This
        is useful to compile programs on a FAT filesystem with minimal
        changes.

        Without argument, -t enables truncation on all drives and for
        UNC pathnames.

        The -t option takes an optional argument, listing the names of
        the drives on which file names should be truncated.  The
        special drive name `/' controls whether to truncate UNC
        pathnames.  With `-tc/', for instance, file names on drive C
        and UNC pathnames will be truncated.

        If the argument of the -t option is `-', truncation is
        disabled for all drives and for UNC pathnames.  This is the
        default setting.  If the argument starts with `-', truncation
        is disabled on all drives listed.  With `-t -t-d', for
        instance, UNC pathnames and file names on all drives except
        drive D will be truncated.

-E      Don't check for 387 coprocessor.  Assume no coprocessor is
        present

-O      Override XMS version check.  By default, emx checks for XMS
        version number 2.00 or later and for XMS driver revision 2.06
        or later, as older himem.sys drivers don't work correctly.
        You can override this check by giving the -O option (for
        drivers using a different revision numbering scheme), but emx
        may not work with your XMS driver, anyway.  Actually, emx has
        not been tested with himem.sys 2.05; 2.04 fails, 2.06 works

-V      Display emx version.  On program start, the emx version will
        be displayed

-X      Disable usage of XMS memory.  Usage of XMS memory with VCPI is
        a new feature of emx.  If this happens to cause trouble, use
        the -X option.


8 The emxstack tool
===================

The emxstack tool is used for displaying and fixing the stack size.
Old programs assume that emx.dll allocates a stack object if the stack
size is too small.  As emx.dll no longer does this, the stack size of
the programs must be fixed.

    emxstack <command> [<options>] <file>...

The following commands are available:

-c

    Check whether the stack size should be fixed.  For each file, if
    the stack size is too small, a message will be displayed.  If the
    stack size is big enough, no message will be displayed.

-d

    Display the stack size.  For each file, the stack size in KByte
    will be displayed.

-f

    Fix the stack size.  For each file, the stack size is fixed if it
    is too small.

-s<size>

    Set the stack size.  For each file, the stack size is set to
    <size> KByte.

-u<size>

    Update the stack size.  For each file, the stack size is set to
    <size> KByte if it less than <size> KByte.  If the stack size is
    not less than <size> KByte, the stack size won't be changed.

The following options are available:

-p

    Act on all files in the PATH.  The command is applied to each file
    in a directory listed in the PATH environment variable.  No file
    names must be given on the command line.

-q

    Be quiet.  No messages will be displayed.  However, error messages
    won't be suppressed.

-v

    Be verbose.  Display additional messages.

Example:

    emxstack -f *.exe


9 The emxupd tool
=================

The emxupd tool can replace (and delete) DLLs which are currently in
use.  (It can do so for EXE files also.)  The old version of the DLL
stays in memory and in use for programs which currently use it until
all applications which use that DLL terminate.  Then, the new DLL will
be used.  Rebooting also switches to the new DLL.


9.1 Replacing a DLL
-------------------

To replace a DLL, type

    emxupd <source_file> <target_path>

This command copies <source_file> to the directory or file
<target_path>.  Examples:

    emxupd c:\tmp\emx.dll c:\emx\dll

This command copies c:\tmp\emx.dll to c:\emx\dll\emx.dll.

    emxupd abc.dll d:\dll\new.dll

This command copies abc.dll to d:\dll\new.dll.


9.2 Deleting a DLL
------------------

To delete a DLL, type

    emxupd -d <old_file>

where <old_file> is the path name of the DLL to delete.


9.3 Unpacking DLLs from a ZIP file and installing them with emxupd
------------------------------------------------------------------

To unpack all DLLs from a ZIP file and install them in a directory
with emxupd, replacing DLLs even if they are in use, type

    emxuzdll <zip_file> <dll_dir>

where <zip_file> is the path name of the ZIP file to unpack the DLLs
from and <dll_dir> is the directory where all the DLLs of the ZIP file
should be put.  emxuzdll can be used only if there are no DLL files in
the current directory.


10 Troubleshooting
==================

This section shows how to solve common problems involving the emx
runtime.


10.1 Warning message `WARNING: emx 0.9c or later required'
----------------------------------------------------------

If this message appears, an out-of-date version of emx.dll is active.
Make sure that the latest version of emx.dll is in a directory pointed
to by the LIBPATH statement in your config.sys file.  Use

    emxrev -p c:\config.sys

to list all emx dynamic link libraries reachable by the LIBPATH
statement of c:\config.sys (use the drive letter of your boot drive
instead of c:).  To simplify things, you should keep only one version
of each DLL.  Older programs work with newer emx DLLs, but not vice
versa.


10.2 unzip.exe says `cannot create emx/dll/emx.dll'
---------------------------------------------------

This happens when you try to unpack emxrt.zip while a program is
active which uses emx.dll.  Terminate all programs which use emx.dll
and try again.  If you run emxrev, the command interpreter keeps
emx.dll loaded until terminated.  Therefore, you should close all OS/2
windows and full-screen sessions in which you have run emxrev.  All
this also applies to emxlibcm.dll etc.


10.3 emx.dll cannot be deleted, renamed or overwritten
------------------------------------------------------

See the previous problem.


10.4 Error message `SYS1804: The system cannot find the file EMX.'
------------------------------------------------------------------

You have not correctly set the LIBPATH statement of config.sys,
therefore emx.dll could not be found.


10.5 Error message `rsx not found, DPMI not supported by emx'
-------------------------------------------------------------

The current version of emx cannot use DPMI.  Therefore, the loader
tried to use rsx instead, but couldn't find rsx.  Remedy: install rsx
or end the DPMI server (MS Windows).


10.6 Error message `emx.dll: Stack size too small...'
-----------------------------------------------------

You tried to run an old program (which assumes that emx.dll creates a
stack object if the stack size is too small).

Run emxstack as indicated by the error message to fix the stack size
of the program.  If you can't (because you don't have write permission
for the file), type

    set emxopt=-I

to make emx.dll ignore the problem.  However, the program will
probably crash due to insufficient stack size.  Using the -I option is
not recommended!


10.7 DOS message `Sector not found'
-----------------------------------

DOS seems to display that message if a file is opened twice (perhaps
one handle for reading, one for writing).  For instance, this happens
when GCC runs out of temporary files.  Look for files named like
cca00002, ccz00002 etc. (the digits may vary) in your temporary
directory and delete them.


11 emx messages
===============


11.1 emx messages (OS/2)
------------------------

core dumped

    The program cannot continue due to a fatal error (exception).  An
    image of the program's memory has been written to a file named
    `core'.  Please keep that file in case the author of the program
    needs it for debugging.

emx.dll: Stack size too small...

    You tried to run an old program (which assumes that emx.dll
    creates a stack object if the stack size is too small).  You
    should run emxstack to fix the stack size.

Invalid option in EMXOPT

    An option in the EMXOPT environement variable is not understood by
    emx.

Invalid syscall function code

    The program run by emx has called an invalid system function.
    Most likely, you're using an emx.dll which is out of date.

WARNING: emx 0.9c or later required

    The program requires emx.dll 0.9c or later.  However, an older
    version of emx.dll is active.  Make sure that the latest version
    of emx.dll is in a directory pointed to by the LIBPATH statement
    in your config.sys file.  Use

        emxrev -p c:\config.sys

    to list all emx dynamic link libraries reachable by the LIBPATH
    statement of c:\config.sys (use the drive letter of your boot
    drive instead of c:).  To simplify things, you should keep only
    one version of each DLL.  Older programs work with newer emx DLLs,
    but not vice versa.


11.2 emx messages (DOS)
-----------------------

Abnormal program termination

    The program received the SIGABRT signal.  The abort() function was
    called or SIGABRT was raised.

Bad environment

    The program name could not be found in the environment segment or
    the environment segment is longer than 32768 bytes.  This should
    not happen in practice.

Cannot create swap file

    The swap file could not be created.  Remedy: make sure the swap
    file can be created in the directory given by the EMXTMP (or TMP)
    environment variable.  If EMXTMP and TMP are not set, emx will
    create the swap file in the root directory of the current drive.

Cannot enable A20

    emx tried to enable address line A20 and failed.  Remedy: contact
    the author.

Cannot enable A20 via XMS

    emx tried to enable address line A20 by calling the XMS driver.
    Unfortunately, A20 couldn't be enabled.  Remedy: unknown.

Cannot open program file

    The program file given on the emx command line could not be found
    or opened.  Remedy: type the correct file name.  (This should not
    happen with bound programs.)

Cannot read program file

    An error occured while reading the program file.  Remedy: make
    sure the program file given on the emx command line is valid (this
    does not apply to bound programs).  Maybe some other program
    accesses that file.

core dumped

    The program cannot continue due to a fatal error (exception).  An
    image of the program's memory has been written to a file named
    `core'.  Please keep that file in case the author of the program
    needs it for debugging.

DPMI not supported

    The current version of emx cannot use DPMI.  Maybe some future
    version will do.  Remedy: end the DPMI server (MS Windows) or use
    rsx.

emx not found

    The emx loader (emxl.exe) failed to find emx.exe.  Make sure that
    emx.exe is in a directory listed in the PATH environment variable.
    Alternatively, you can set the EMX environment variable to the
    complete path name of emx.exe.

Exception ...

    The program run by emx tried to do something which is considered
    illegal by the processor or by emx.  Remedy: report to the
    supplier of the program.

Illegal moucall function

    The program run by emx has called an invalid system function.
    Remedy: report to the supplier of the program.

Illegal syscall function

    The program run by emx has called an invalid system function.
    Remedy: report to the supplier of the program.

Illegal viocall function

    The program run by emx has called an invalid system function.
    Remedy: report to the supplier of the program.

Invalid arguments for DOS function xx

    The program run by emx has used invalid arguments for a system
    function.  Remedy: report to the supplier of the program.

Invalid emx option

    An option in EMXOPT or set by emxbind is not understood by emx.
    Remedy: check EMXOPT.  Use emxbind -i to display the options set
    by emxbind.

Invalid program file

    The program file given on the emx command line (or bound to emx)
    is corrupt.  Remedy: reload the program from diskette.  If this
    doesn't help you should contact the supplier of the program.

Invalid special function code: xx

    The program run by emx has called an invalid system function.
    Remedy: report to the supplier of the program.

Linear address space exhausted

    The program run by emx uses far too much memory.  Remedy: complain
    to the author.

Nonmaskable interrupt (NMI) at xxxx:yyyyyyyy

    A nonmaskable interrupt occured.  Maybe this is due to a memory
    error.  Remedy: if you are using DESQview, either set the
    protection level to 0 or use the WATCHDOG=0 option of QEMM-386.
    Otherwise, run a program for testing memory.

Out of memory

    There isn't enough memory for running emx.  Remedy: remove some
    drivers and/or resident programs.  Or add memory to your machine.

Out of stacks

    emx ran out of local stacks.  Remedy: complain to the author.

Out of memory or swap space

    emx cannot write to the swap file because the disk is full.
    Remedy: make sure there is enough space on the drive used for the
    swap file.  Use the EMXTMP (or TMP) environment variable to tell
    emx where to create the swap file.  If neither EMXTMP nor TMP is
    set, emx will create the swap file in the root directory of the
    current drive.

Out of swap space

    emx cannot write to the swap file because the disk is full.
    Remedy: make sure there is enough space on the drive used for the
    swap file.  Use the EMXTMP (or TMP) environment variable to tell
    emx where to create the swap file.  If neither EMXTMP nor TMP is
    set, emx will create the swap file in the root directory of the
    current drive.

Process terminated by SIGINT

    You have stopped the program by hitting Ctrl-C or Ctrl-Break.

Process terminated by SIG...

    The program has been stopped due to a signal or exception.
    Usually, this indicates a fatal error in the program.

Program aborted

    You have aborted the program by answering `Abort' after a critical
    error had occured.

rsx not found, DPMI not supported by emx

    The current version of emx cannot use DPMI.  Therefore, the loader
    tried to use rsx instead, but couldn't find rsx.  Remedy: install
    rsx or end the DPMI server (MS Windows).

Swap file I/O error

    emx couldn't read or write the swap file.

This program does not run in DOS mode of OS/2

    DOS emulation of OS/2 doesn't support emx.  Remedy: boot DOS or
    run the program in a OS/2 window

This program requires an 80386 CPU

    You need an 80386DX, 80386SX, i486 or later CPU for running emx.
    Remedy: get another computer.

This program requires DOS 3.0 or later

    If emx is bound with an application program into one executable,
    DOS 3.0 or later is required for execution.

Too many processes

    emx supports up to 4 processes.  You tried to start 5 or more
    processes.

Unexpected interrupt

    This cannot happen.  Remedy: report to the author.

Unsupported VDISK.SYS version

    emx doesn't support the vdisk.sys device driver you are using.
    Remedy: remove VDISK.SYS or use a different version.  emx should
    work with vdisk.sys 3.3 or later.

Unsupported XMS version

    emx requires himem.sys 2.06 or later (older versions are too
    buggy).  Remedy: get a newer himem.sys.  If you are not using
    himem.sys, use the -O option of emx and tell the author whether
    this works or not.

Unusable interrupt vector mappings set by VCPI server

    The configuration of the VCPI server (EMS driver) is illegal.
    Remedy: read the manual of the EMS driver.

Use emxbind

    You tried to run emxl.exe, which doesn't make sense.  emxl.exe is
    designed to be bound into an executable file by emxbind.

Virtual mode not supported without VCPI

    A VCPI server is required to run emx if the CPU is in virtual
    mode.  You will get this message if you're using an EMS driver
    (EMS emulator) which doesn't support VCPI or if you have disabled
    EMS.  Remedy: remove the EMS driver, use an EMS driver which
    supports VCPI or enable EMS if it has been disabled (for instance,
    remove the NOEMS keyword from the command line of the EMS driver).

Wrong emx version

    The version of emx.exe does not match the version the program was
    compiled for.  Remedy: use the copy of emx.exe that comes with the
    program.  If you are using different programs which need different
    versions of emx.exe, use the EMX environment variable to set the
    path name of the correct version of emx.exe before running a
    program which requires a version different from the default
    emx.exe.  You can also use emxbind -u to put the correct version
    of emx.exe into the executable files.


12 Obtaining the complete emx package
=====================================

emx is available for anonymous ftp on

    ftp.uni-stuttgart.de: /pub/systems/os2/emx-0.9c
    ftp-os2.cdrom.com:    /pub/os2/lang/emx09c
    ftp-os2.nmsu.edu:     /os2/unix/emx09c
    src.doc.ic.ac.uk:     /pub/packages/os2/32bit/unix/emx09c
    ftp.leo.org:          /pub/comp/os/os2/gnu/emx+gcc


13 The author of emx
====================

The author of emx is

    Eberhard Mattes
    Teckstrasse 81                                      (TeX: Teckstra\ss e)
    D-71696 Moeglingen                                  (TeX: M\"oglingen)
    Germany

Internet: mattes@azu.informatik.uni-stuttgart.de  (subject to change)

No telephone calls please!  It must be stressed that the author does
not reply to letters if you don't include return postage
(international postal reply coupon if you are outside Germany) and a
self-addressed envelope.

--------------------------- END OF EMXRT.DOC --------------------------------

Comments

Category
State
  • 현재 접속자 74 명
  • 오늘 방문자 470 명
  • 어제 방문자 968 명
  • 최대 방문자 4,250 명
  • 전체 방문자 975,885 명
  • 전체 게시물 2,371 개
  • 전체 댓글수 3,991 개
  • 전체 회원수 47 명

- 쇼핑몰 : Softbox
Facebook Twitter GooglePlus KakaoStory NaverBand