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