home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World Komputer 1995 November
/
PCWK1195.iso
/
inne
/
podstawy
/
os2
/
!zobacz!
/
emxrt.doc
< prev
next >
Wrap
Text File
|
1993-07-12
|
24KB
|
713 lines
===============================================================================
emxrt.doc emx 0.8g USER'S GUIDE TO THE EMX RUNTIME 13-Jul-1993
===============================================================================
Copyright (c) 1990-1993 by Eberhard Mattes
1 Table of Contents
===================
1 Table of Contents
2 Introduction to the User's Guide to the emx Runtime
2.1 Hardware requirements
2.2 Files included in the emx runtime package
3 Copyright
4 Installing the emx runtime package under OS/2 2.x
4.1 Summary for impatient OS/2 users
4.2 Detailed instructions for OS/2 users
5 Installing the emx runtime package under DOS
5.1 Summary for impatient DOS users
5.2 Detailed instructions for DOS users
6 Environment variables (OS/2 and DOS)
6.1 Environment variables (DOS)
7 DOS Notes
8 emx options
8.1 emx options (OS/2)
8.2 emx options (DOS)
9 emx messages (DOS)
10 Obtaining the complete emx package
11 The author of emx
2 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.0, OS/2 2.1
(OS/2 2.x, in short), MS-DOS and PC-DOS (DOS, in short).
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.
2.1 Hardware requirements
-------------------------
- emx requires an 80386 CPU (80386DX, 80386SX, i486)
- emx requires an 80387 coprocessor (or i486 processor) if floating
point math is to be used under DOS
2.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\emxrev.cmd Tool for finding emx revisions (OS/2)
\emx\book\emxrt.inf The text you're 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 C library for emx programs (OS/2)
\emx\dll\emxwrap.dll Interface to 16-bit OS/2 functions (OS/2)
\emx\doc\emxrt.doc The text you're looking at (text version)
\emx\etc\termcap.dat Terminal data base for termcap-based programs
3 Copyright
===========
emx.exe, emxbind.exe, emx.dll, emxio.dll, emxwrap.dll and emxrt.doc
are
Copyright (c) 1990-1993 by Eberhard Mattes.
Everybody is allowed to use the emx runtime package. You are
allowed to copy the unmodified emx runtime package if you do not
charge for the distribution.
THERE IS NO WARRANTY!
No guarantee is made as to the proper functioning of the software.
No liability will be admitted for damage resulting from using the
software.
4 Installing the emx runtime package under OS/2 2.x
===================================================
4.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
4.2 Detailed instructions for OS/2 users
----------------------------------------
emx requires OS/2 2.x and does not run 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 2.x
emxio.dll
access to hardware ports for emx programs under OS/2 2.x
emxlibc.dll
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 carefull to use the latest revision of those dynamic
link libraries. Newer emx dynamic link libraries work with older emx
programs, 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 = 12
EMXIO : revision = 12
EMXLIBC : revision = 12
EMXWRAP : revision = 12
Only directories listed in the LIBPATH statement are sought. To find
out the revision numbers of the dynamic link libraries of this
package, type
emxrev -d c:\emx\dll
if you've 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, 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 or emxwrap.dll.
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 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.
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 haven't correctly set the LIBPATH
statement of config.sys. See above for details.
5 Installing the emx runtime package under DOS
==============================================
5.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're using a memory manager which implements DPMI, enable
VCPI
3. Remove BREAK=ON from config.sys
4. Reboot
5.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're 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. emx supports XMS
and VCPI.
Examine your config.sys file: If there's a line
BREAK=ON
in it, you should remove it as it causes trouble with emx and lots of
other programs.
If you're using an Intel Inboard 386/PC, add the following line to
autoexec.bat:
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.
6 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)
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
6.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
7 DOS 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. But it does not use
extended memory AND expanded memory at the same time. 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.
8 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
8.1 emx options (OS/2)
----------------------
-c Disable core dumps caused by signals other than SIGKILL
-h# Set OS/2 file handle limit to #. The number # must be between
10 and 255
-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
-E Run debuggee in same session (window) as debugger
8.2 emx options (DOS)
---------------------
-c Disable core dumps caused by signals other than SIGKILL
-d Don't use extended memory
-e Don't check for 387 coprocessor. Assume no coprocessor is
present
-h# Set DOS file handle limit to #. The number # 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
-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
-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
-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
9 emx messages (DOS)
====================
Abnormal program termination
The program received the SIGABRT signal. The abort() function was
called or SIGABRT was raised.
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.
DPMI not supported
The current version of emx cannot use DPMI. Maybe some future
version will do. Remedy: end the DPMI server (MS Windows).
Exception ...
The program run by emx did something illegal. 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're 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 run 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've stopped the program by hitting Ctrl-C or Ctrl-Break.
Program aborted
You've aborted the program by answering `Abort' after a critical
error had occured.
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
use OS/2 2.x.
This program requires an 80386 CPU
You need an 80386DX, 80386SX, or i486 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've 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're 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're 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.
Virtual mode not supported without VCPI
A VCPI server is required to run emx if the CPU is in virtual
mode. You'll get this message if you're using an EMS driver (EMS
emulator) which doesn't support VCPI or if you've 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're 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.
10 Obtaining the complete emx package
=====================================
emx is available for anonymous ftp on
ftp.uni-stuttgart.de [129.69.1.12]: /soft/os2/emx-0.8g
ftp-os2.nmsu.edu [128.123.35.151]: /os2/2_x/unix/gnu/emx08g
src.doc.ic.ac.uk [146.169.2.1]: /pub/packages/os2/2_x/unix/gnu/emx08g
ftp.informatik.tu-muenchen.de [131.159.0.198]:
/pub/comp/os/os2/devtools/emx+gcc
11 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're outside Germany) and a
self-addressed envelope.
--------------------------- END OF EMXRT.DOC --------------------------------