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
Text File  |  1994-12-21  |  40KB  |  1,312 lines

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