source: vendor/emx/current/src/doc/emxrt.src

Last change on this file was 18, checked in by bird, 23 years ago

Initial revision

  • Property cvs2svn:cvs-rev set to 1.1
  • Property svn:eol-style set to native
  • Property svn:executable set to *
File size: 46.1 KB
Line 
1þtext
2===============================================================================
3emxrt.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
56view \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
63view 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
227cd \emx\bin
228emxrev
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
236EMX : revision = 30
237EMXIO : revision = 30
238EMXLIBC : revision = 30
239EMXLIBCM : revision = 30
240EMXLIBCS : revision = 30
241EMXWRAP : 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
249emxrev -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
256exit
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
266error: cannot create emx/dll/emx.dll
267þendexample
268
269 from þtt{unzip} when unpacking emxrt.zip, use
270
271þexample
272pstat /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
281emxload -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
292mkdir \emxtmp
293chdir \emxtmp
294emxuzdll a:\emxrt.zip c:\emx\dll
295chdir ..
296rmdir 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
319LIBPATH=
320þendexample
321
322 Then, type the absolute name of the directory. Example:
323
324þexample
325LIBPATH=.;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
333SET PATH=
334þendexample
335
336 to include the \emx\bin directory. For instance, change
337
338þexample
339SET PATH=C:\OS2;C:\OS2\SYSTEM;C:\OS2\MDOS\WINOS2;C:\OS2\INSTALL;
340C:\;C:\OS2\MDOS;C:\OS2\APPS
341þendexample
342
343 to
344
345þexample
346SET PATH=C:\OS2;C:\OS2\SYSTEM;C:\OS2\MDOS\WINOS2;C:\OS2\INSTALL;
347C:\;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
360SET BOOKSHELF=C:\OS2\BOOK;
361þendexample
362
363 of your config.sys file to
364
365þexample
366SET 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
376emxrev
377þendexample
378
379 to verify that the latest revision of emx is now active.
380
381 If OS/2 says
382
383þexample
384SYS1804: 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
395emx.dll: Stack size too small. Run
396 emxstack -f D:\BIN\PROGRAM.EXE
397and 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
405set 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
456path 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
463path 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
475set 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
500BREAK=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
511set 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
520set 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
628CET-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
689Nonmaskable 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
758ftp.uni-bielefeld.de: /pub/systems/msdos/misc/rsx510.zip
759ftp.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
780set 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
1055emxstack -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
1082emxupd 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
1088emxupd 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
1132emxrev -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
1175set 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
1229emxrev -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
1486ftp.leo.org: /pub/comp/os/os2/leo/gnu/emx+gcc/
1487ftp-os2.cdrom.com: /pub/os2/emx09d/
1488ftp-os2.nmsu.edu: /pub/os2/dev/emx/v0.9d/
1489þendexample
1490
1491
1492þh1 The author of emx
1493
1494The author of emx is
1495
1496þif ipf
1497
1498þindent
1499 Eberhard Mattes þbreak
1500 Teckstraáe 81 þbreak
1501 D-71696 M”glingen þbreak
1502 Germany
1503þendindent
1504
1505þelse
1506
1507þexample
1508Eberhard Mattes
1509Teckstrasse 81 (TeX: Teckstra\ss e)
1510D-71696 Moeglingen (TeX: M\"oglingen)
1511Germany
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
Note: See TracBrowser for help on using the repository browser.