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
/
src
/
doc
/
emxrt.src
Wrap
Text File
|
1994-12-21
|
40KB
|
1,312 lines
■text
===============================================================================
emxrt.doc emx 0.9a FIX 02 USER'S GUIDE TO THE EMX RUNTIME 21-Dec-1994
===============================================================================
Copyright (c) 1990-1994 by Eberhard Mattes
■endtext
■title User's Guide to the emx Runtime
■format bold emx emxbind emxstack termcap rsx
■format tty emx.exe emxl.exe emxbind.exe emx.dll emxio.dll emxwrap.dll
■format tty emxload.exe emxstack.exe emxrt.doc rsx.exe emxfpemu emxrt.zip
■format tty \emx\dll \emx\bin config.sys emxlibc.dll emxlibcm.dll emxlibcs.dll
■format tty cmd.exe emxrev
■format tty SET \emx\bin\emx.exe autoexec.bat termcap.dat himem.sys
■format tty unzip.exe
■format tty vdisk.sys SIGKILL SIGABRT abort() .dll LIBPATH BREAK=ON
■format tty DosKillThread select()
■format syntax -c -d -e -E -f -h# -K -m1 -m2 -m3 -o -O -p -q -x
■format syntax -r* -s<size> -t -u<size> -v -I -V -X <size>
■format abbrev etc.
■if text
■h1 Table of Contents
■toc
■endif
■h1 Introduction to the User's Guide to the emx Runtime
■ipf
:font facename=Helv size=24x14.:hp2.User's Guide to the emx Runtime
:ehp2.
:p.
:font facename=Helv size=16x10. Copyright (c) 1990-1994 by Eberhard Mattes
:font facename=default size=0x0.
:p.
■endipf
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).
■if text
Under OS/2, you can view the ■tt{.inf} version of this document by
typing
■example
view \emx\book\emxrt
■endexample
If you add ■tt{\emx\book} to the BOOKSHELF environment variable, you
can type
■example
view emxrt
■endexample
to view that on-line book.
■endif
■ipfminitoc
■h2 Hardware requirements
■label Hardware requirements
emx requires an 80386 CPU (80386DX, 80386SX, i486, or later)
■h2 Files included in the emx runtime package
■label Files included in the emx runtime package
The emx runtime package includes the following files:
■verbatim
\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\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\emxrt.doc The text you are looking at (text version)
\emx\etc\termcap.dat Terminal data base for termcap-based programs
■endverbatim
■h1 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, 675 Mass Ave, Cambridge, MA 02139, USA.
See ■tt{\emx\doc\COPYING.EMX} and ■tt{\emx\doc\COPYING} for details.
Please note that source code for parts of the contents of
■tt{emxrt.zip} is contained in ■tt{emxfix02.zip}.
■h1 Installing the emx runtime package under OS/2
■ipfminitoc
■h2 Summary for impatient OS/2 users
■label Summary for impatient OS/2 users
■enumerate
■item
Add \emx\dll to LIBPATH (always use the latest copy of the .dll files!)
■item
Add \emx\bin to PATH
■item
Reboot
■endenumerate
■h2 Detailed instructions for OS/2 users
■label Detailed instructions for OS/2 users
■label LIBPATH
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:
■description
■item emx.dll
emx run-time support for OS/2
■item emxio.dll
access to hardware ports for emx programs under OS/2
■item emxlibc.dll
forwarder DLL to emxlibcm.dll for existing applications that use
emxlibc.dll (which has been renamed to emxlibcm.dll)
■item emxlibcm.dll
multithread emx C library
■item emxlibcs.dll
single-thread emx C library
■item emxwrap.dll
32-bit wrappers for 16-bit OS/2 API functions
■enddescription
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
■hpt{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
■example
cd \emx\bin
emxrev
■endexample
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
■example
EMX : revision = 30
EMXIO : revision = 30
EMXLIBC : revision = 30
EMXLIBCM : revision = 30
EMXLIBCS : revision = 30
EMXWRAP : revision = 30
■endexample
Only directories listed in the LIBPATH statement are searched. To
find out the revision numbers of the dynamic link libraries of this
package, type
■example
emxrev -d c:\emx\dll
■endexample
if you have put the emx runtime package on drive C. After running
emxrev, you should quit the command processor by typing
■example
exit
■endexample
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 ■tt{SYS0032}, use
■example
pstat /L
■endexample
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
■example
emxload -qw
■endexample
will unload programs kept in memory by emxload.exe.
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 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 ■tt{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
■example
LIBPATH=
■endexample
Then, type the absolute name of the directory. Example:
■example
LIBPATH=.;C:\OS2\DLL;C:\OS2\MDOS;C:\;C:\OS2\APPS\DLL;D:\EMX\DLL
■endexample
Optionally, you can append a semicolon at the end.
Next, modify the line of config.sys starting with
■example
SET PATH=
■endexample
to include the \emx\bin directory. For instance, change
■example
SET PATH=C:\OS2;C:\OS2\SYSTEM;C:\OS2\MDOS\WINOS2;C:\OS2\INSTALL;
C:\;C:\OS2\MDOS;C:\OS2\APPS
■endexample
to
■example
SET PATH=C:\OS2;C:\OS2\SYSTEM;C:\OS2\MDOS\WINOS2;C:\OS2\INSTALL;
C:\;C:\OS2\MDOS;C:\OS2\APPS;D:\EMX\BIN
■endexample
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 ■tt{\emx\book} to the BOOKSHELF environment
variable to simplify viewing the on-line documentation. For
instance, change the line
■example
SET BOOKSHELF=C:\OS2\BOOK;
■endexample
of your config.sys file to
■example
SET BOOKSHELF=C:\OS2\BOOK;C:\EMX\BOOK
■endexample
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
■example
emxrev
■endexample
to verify that the latest revision of emx is now active.
If OS/2 says
■example
SYS1804: The system cannot find the file EMX.
■endexample
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
■example
emx.dll: Stack size too small. Run
emxstack -f D:\BIN\PROGRAM.EXE
and try again.
■endexample
Run ■hpt{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
■example
set emxopt=-I
■endexample
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!
■h1 Installing the emx runtime package under DOS
■ipfminitoc
■h2 Summary for impatient DOS users
■label Summary for impatient DOS users
■enumerate
■item
Add \emx\bin to PATH or set EMX to point to \emx\bin\emx.exe
■item
If you are using a memory manager which implements DPMI, enable VCPI
■item
Remove BREAK=ON from config.sys
■item
Reboot
■endenumerate
■h2 Detailed instructions for DOS users
■label 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
■example
path c:\dos;d:\bin
■endexample
you have installed the emx runtime on drive D, you should modify
that line to read
■example
path c:\dos;d:\bin;d:\emx\bin
■endexample
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:
■example
set emx=d:\emx\bin\emx.exe
■endexample
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 ■hpt{rsx}, as indicated in section ■ref{rsx}. emx
supports XMS and VCPI.
Examine your config.sys file: If there is a line
■example
BREAK=ON
■endexample
in it, you should remove it as it causes trouble with emx and lots
of other programs.
If you are using an Intel Inboard 386/PC, add the following line to
autoexec.bat:
■example
set emxopt=-m3
■endexample
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:
■example
set emxtmp=c:\tmp
■endexample
Now, you should reboot to activate the changes to config.sys and
autoexec.bat.
■h1 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:
■description
■item INIT
used by termcap to find termcap.dat
■item TERM
used by termcap to define the terminal type
■item EMXETC
used by termcap to find termcap.dat
■item EMXOPT
emx options (see below)
■item EMXSHELL
overrides the COMSPEC environment variable. You can use this to
run an alternate command processor (shell) from emx programs
■item EMXPATH
search path for programs (usually not relevant)
■item PATH
search path for program (used if EMXPATH fails)
■item TERMCAP
used by termcap to find termcap.dat
■enddescription
■ipfminitoc
■h2 Environment variables (DOS)
■label Environment variables (DOS)
■description
■item 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
■item EMXTMP
directory for the swap file
■item TMP
used if EMXTMP is not set
■enddescription
■h1 DOS Notes
■ipfminitoc
■h2 General notes
■itemize
■item
emx requires DOS 3.0 or later
■item
emx does not support DPMI
■item
emx does not support DESQview without VCPI (use QEMM-386 with DESQview)
■item
If emx doesn't work under DESQview (especially if it displays the
message
■example
Nonmaskable interrupt (NMI)
■endexample
either set the protection level to 0 or use the ■tt{WATCHDOG=0}
option of QEMM-386.
■item
emx supports VCPI
■item
emx supports XMS. Do not use emx with himem.sys 2.06 or earlier.
■item
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 ■hpt{-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.
■item
emx supports vdisk.sys 3.3 and later and most other RAM disk drivers
■item
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.
■item
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.
■enditemize
■h2 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.
■h2 Using rsx instead of emx
■label rsx
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
■example
ftp.uni-bielefeld.de: /pub/systems/msdos/misc/dpmigcc5.zip
ftp.uni-stuttgart.de: /pub/systems/os2/emx-0.9a/contrib/dpmigcc5.zip
ftp.informatik.tu-muenchen.de:
/pub/comp/os/os2/gnu/emx+gcc/contrib/dpmigcc5.zip
■endexample
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.
■h1 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:
■example
set emxopt=-c -h40
■endexample
■ipfminitoc
■h2 emx options (OS/2)
■label emx options (OS/2)
■description
■item -c
Disable core dumps caused by signals and exceptions
■item -h#
Set OS/2 file handle limit to ■sy{#}. The number ■sy{#} must be
between 10 and 255
■item -n
Suppress popups for exceptions. As emx.dll displays an
appropriate error message and dumps core, popups are not required
■item -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
■item -r*
Prepend drive letter ■sy{*} to absolute path names. If a path
name starts with ■tt{/} but does not start with ■tt{//},
■tt{/dev/} or ■tt{/pipe/}, ■sy{*} followed by a colon will be
prepended. If ■sy{-rd} has been given, the file name
■tt{\mydir\abc} will be translated to ■tt{d:\mydir\abc}. Note:
this option can cause unexpected effects
■item -t
Truncate file names to 8.3
■item -x
Don't suppress wildcard expansion and response files if the `MKS
Korn shell' method of passing command line arguments is used
■item -E
Run debuggee in same session (window) as debugger
■item -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 ■hpt{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!
■item -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 used only if select() is applied to socket
handles
■enddescription
■h2 emx options (DOS)
■label emx options (DOS)
■description
■item -c
Disable core dumps caused by signals and exceptions
■item -d
Don't use extended memory
■item -e
Redirect the standard error handle (2) to standard output (1)
■item -h#
Set DOS file handle limit to ■sy{#}. The number ■sy{#} must be
between 10 and 255. 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
■item -m1
Running on Fujitsu FMR70 (not implemented yet)
■item -m2
Running on NEC PC-98 (not implemented yet)
■item -m3
Running on Intel Inboard 386/PC
■item -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 `■tt{core}') instead of a
register dump. Please keep that file in case the author of the
program needs it for debugging.
■item -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
■item -r*
Prepend drive letter ■sy{*} to absolute path names. If a path
name starts with ■tt{/} but does not start with ■tt{//},
■tt{/dev/} or ■tt{/pipe/}, ■sy{*} followed by a colon will be
prepended. If ■sy{-rd} has been given, the file name
■tt{\mydir\abc} will be translated to ■tt{d:\mydir\abc}. Note:
this option can cause unexpected effects
■item -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
■item -E
Don't check for 387 coprocessor. Assume no coprocessor is present
■item -O
■label -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
■item -V
Display emx version. On program start, the emx version will be
displayed
■item -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.
■enddescription
■h1 The emxstack tool
■label emxstack
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.
■indent
■sy{emxstack <command> [<options>] <file>...}
■endindent
The following commands are available:
■list
■item -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.
■item -d
Display the stack size. For each file, the stack size in KByte
will be displayed.
■item -f
Fix the stack size. For each file, the stack size is fixed if it
is too small.
■item -s<size>
Set the stack size. For each file, the stack size is set to
<size> KByte.
■item -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.
■endlist
The following options are available:
■list
■item -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.
■item -q
Be quiet. No messages will be displayed. However, error messages
won't be suppressed.
■item -v
Be verbose. Display additional messages.
■endlist
Example:
■example
emxstack -f *.exe
■endexample
■h1 Troubleshooting
This section shows how to solve common problems involving the emx
runtime.
■ipfminitoc
■h2 Warning message `WARNING: emx 0.9a 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
■example
emxrev -p c:\config.sys
■endexample
to list all emx dynamic link libraries reachable by the LIBPATH
statement of ■tt{c:\config.sys} (use the drive letter of your boot
drive instead of ■tt{c:}). To simplify things, you should keep
only one version of each DLL. Older programs work with newer emx
DLLs, but not vice versa.
■h2 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.
■h2 emx.dll cannot be deleted, renamed or overwritten
See the previous problem.
■h2 Error message `SYS1804: The system cannot find the file EMX.'
You have not correctly set the ■hpt{LIBPATH} statement of
config.sys, therefore emx.dll could not be found.
■h2 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
■hpt{rsx} or end the DPMI server (MS Windows).
■h2 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 ■hpt{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
■example
set emxopt=-I
■endexample
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!
■h2 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 ■tt{cca00002}, ■tt{ccz00002} etc. (the digits may vary) in your
temporary directory and delete them.
■h1 emx messages
■ipfminitoc
■h2 emx messages (OS/2)
■list
■item ■tt{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
`■tt{core}'. Please keep that file in case the author of the
program needs it for debugging.
■item ■tt{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 ■hpt{emxstack} to fix the stack size.
■item ■tt{Invalid option in EMXOPT}
An option in the EMXOPT environement variable is not understood by
emx.
■item ■tt{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.
■item ■tt{WARNING: emx 0.9a or later required}
The program requires emx.dll 0.9a 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
■example
emxrev -p c:\config.sys
■endexample
to list all emx dynamic link libraries reachable by the LIBPATH
statement of ■tt{c:\config.sys} (use the drive letter of your boot
drive instead of ■tt{c:}). To simplify things, you should keep
only one version of each DLL. Older programs work with newer emx
DLLs, but not vice versa.
■endlist
■h2 emx messages (DOS)
■list
■item ■tt{Abnormal program termination}
The program received the SIGABRT signal. The abort() function was
called or SIGABRT was raised.
■item ■tt{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.
■item ■tt{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.
■item ■tt{Cannot enable A20}
emx tried to enable address line A20 and failed. Remedy: contact
the author.
■item ■tt{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.
■item ■tt{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.)
■item ■tt{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.
■item ■tt{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
`■tt{core}'. Please keep that file in case the author of the
program needs it for debugging.
■item ■tt{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
■hpt{rsx}.
■item ■tt{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.
■item ■tt{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.
■item ■tt{Illegal moucall function}
The program run by emx has called an invalid system function.
Remedy: report to the supplier of the program.
■item ■tt{Illegal syscall function}
The program run by emx has called an invalid system function.
Remedy: report to the supplier of the program.
■item ■tt{Illegal viocall function}
The program run by emx has called an invalid system function.
Remedy: report to the supplier of the program.
■item ■tt{Invalid arguments for DOS function }■sl{xx}
The program run by emx has used invalid arguments for a system
function. Remedy: report to the supplier of the program.
■item ■tt{Invalid emx option}
An option in EMXOPT or set by emxbind is not understood by emx.
Remedy: check EMXOPT. Use ■tt{emxbind -i} to display the options
set by emxbind.
■item ■tt{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.
■item ■tt{Invalid special function code: }■sl{xx}
The program run by emx has called an invalid system function.
Remedy: report to the supplier of the program.
■item ■tt{Linear address space exhausted}
The program run by emx uses far too much memory. Remedy: complain
to the author.
■item ■tt{Nonmaskable interrupt (NMI) at }■sl{xxxx}■tt{:}■sl{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 ■tt{WATCHDOG=0} option of
QEMM-386. Otherwise, run a program for testing memory.
■item ■tt{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.
■item ■tt{Out of stacks}
emx ran out of local stacks. Remedy: complain to the author.
■item ■tt{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.
■item ■tt{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.
■item ■tt{Process terminated by SIGINT}
You have stopped the program by hitting Ctrl-C or Ctrl-Break.
■item ■tt{Process terminated by SIG...}
The program has been stopped due to a signal or exception.
Usually, this indicates a fatal error in the program.
■item ■tt{Program aborted}
You have aborted the program by answering `Abort' after a critical
error had occured.
■item ■tt{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
■hpt{rsx} or end the DPMI server (MS Windows).
■item ■tt{Swap file I/O error}
emx couldn't read or write the swap file.
■item ■tt{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
■item ■tt{This program requires an 80386 CPU}
You need an 80386DX, 80386SX, i486 or later CPU for running emx.
Remedy: get another computer.
■item ■tt{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.
■item ■tt{Too many processes}
emx supports up to 4 processes. You tried to start 5 or more
processes.
■item ■tt{Unexpected interrupt}
This cannot happen. Remedy: report to the author.
■item ■tt{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.
■item ■tt{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 ■hpt{-O} option of emx and tell the author
whether this works or not.
■item ■tt{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.
■item ■tt{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.
■item ■tt{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 ■tt{NOEMS} keyword from the command line of the EMS driver).
■item ■tt{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 ■tt{emxbind -u} to put the correct
version of emx.exe into the executable files.
■endlist
■h1 Obtaining the complete emx package
emx is available for anonymous ftp on
■example
ftp.uni-stuttgart.de [129.69.18.15]: /pub/systems/os2/emx-0.9a
ftp-os2.cdrom.com: [192.153.46.2]: /os2/32bit/unix/emx09a
src.doc.ic.ac.uk [146.169.2.1]: /pub/packages/os2/32bit/unix/emx09a
ftp.informatik.tu-muenchen.de [131.159.0.198]:
/pub/comp/os/os2/gnu/emx+gcc
■endexample
■h1 The author of emx
The author of emx is
■if ipf
■indent
Eberhard Mattes ■break
Teckstraße 81 ■break
D-71696 Möglingen ■break
Germany
■endindent
■else
■example
Eberhard Mattes
Teckstrasse 81 (TeX: Teckstra\ss e)
D-71696 Moeglingen (TeX: M\"oglingen)
Germany
■endexample
■endif
Internet: ■tt{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.
■text
--------------------------- END OF EMXRT.DOC --------------------------------
■endtext