source: trunk/doc/Readme.txt@ 4920

Last change on this file since 4920 was 4835, checked in by sandervl, 25 years ago

update

File size: 25.9 KB
Line 
1
2 O D I N Public Alpha 5 - 1999/11/16
3 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4
5WANTED: We are still looking for talented developers that want to
6 contribute! Please take a look at the last section!
7
8NOTE: LICENSE.TXT describes the Project Odin Software License.
9
10
11Project Odin Information
12========================
13
141.0 Introduction
15----------------
16
17This readme is intended for end users that have downloaded the
18latest public alpha release and want to give it a try. For more
19information, be sure to regularly check http://www.netlabs.org/odin.
20
211.1 Purpose
22-----------
23
24Odin is a free Open Source project with the goal to eventually
25provide a fully working Win32 (Win 95/98/NT/2000) runtime environment,
26making it possible to run your favorite Windows programs under OS/2,
27as if they were native OS/2 programs. The second goal of Odin is to
28provide the full Win32 application programming interface (API) so
29that it is possible to build OS/2 programs using Windows source
30code. This is also refered to as Odin32 whereas Odin is the name
31of the Win32 binary emulator.
32
331.2 Current Status
34------------------
35
36Odin is still in the early alpha state so that it is very far from
37being widely usable. Most programs will not work or show many
38problems. Even though it is not usable for most programs, we have
39decided to do a public release in order to show how much progress
40the project has been made. A second goal is to attract more developers
41in order to speedup development. Our job includes rewriting most
42parts of Windows 95/NT without having the original source code so
43the more developers we have the more progess will be seen. The
44last public release (Alpha 0.004) has been in 1997 and the project
45has changed much since then. Everything is free and Open Source now
46and the base architecture has been improved quite a lot. We are now
47in a position where we can expect the first bigger applications to
48run well and to make much more visible progress.
49
501.3 Changes and additions in alpha 5
51------------------------------------
52- Removed Open32 dependacy in User32 code: windows, dialogs, buttons and
53 other controls creation and manipulation is now implemented fully in Odin32.
54 Applications have Win32 look: Win32 specific controls are also supported
55 (Open32 is still a requirement as other Odin32 functions use it!)
56- New and improved PE2LX converter
57- New Portable Executable Loader (PE) that overcomes some differences
58 between OS/2 and Win32 memory models (this does not include 512MB
59 per-process memory limitation in OS/2, you still need the Aurora-level
60 kernel for that)
61- New WIN32K32k.SYS driver that automates loading of Win32 binaries (no
62 conversion or invocation through PE.EXE loader is needed), now
63 compatible with WSeB (Aurora) and no longer dependant of code under
64 GNU license
65- Wine ports of common controls (comctl32), shell extensions (shell32) and
66 OLE
67- Full implementation of memory mapped files
68- Joystick support (winmm)
69- Direct Input (DirectX keyboard & mouse) added (Wine Port)
70- Rewrite of DirectDraw. More complete implementation.
71- Couple of (not core Win32 API, but often used) new DLLs (winasp32, lz32,
72 avifil32...), so users don't have to have Windows license at all to run
73 Windows programs
74- Many new API functions implemented or ported from Wine, allows
75 developers to port Win32 apps directly to OS/2 with little to no rewriting
76- Many bugfixes and enhancements
77- Many new programs that load and/or work with Odin
78- Full source code available
79
80
81
822.0 Installing Odin (UPDATED)
83-----------------------------
84
85Odin daily builds are now also distributed as WarpIn archives.
86WarpIn is a generic OS/2 installation application that can be
87downloaded from warpin.netlabs.org.
88
89To install Odin run warpin.exe with the name of the daily build archive
90as parameter.
91Follow the instructions to complete the installation.
92The Odin installation consists of:
93 - creating an Odin directory and copying the included files to
94 x:\odin and x:\odin\system32
95 - creating empty directories in x:\odin (to create a similar directory
96 structure as found in Windows)
97 - creating a basic registry for executing win32 applications in OS/2
98 - adds x:\odin\system32 to the path and libpath settings in your config.sys
99
100NOTE: You MUST install Odin at least once using WarpIn (unless you know
101 what you're doing). Afterwards you can use the daily build zipfiles
102 to upgrade to a newer version.
103
104To run DirectDraw games or Quake 2 in Voodoo mode, you must install Holger
105Veit's XFree86/2 support driver (XF86SUP.SYS).
106Visit http://ais.gmd.de/~veit/os2/xf86sup.html to download it.
107
108NOTE: The Glide and 3Dfx Opengl dll are no longer part of the basic Odin
109 installation package. It's available as opengl3dfx.zip on ftp.os2.org.
110
111
1122.0.1 Log files
113---------------
114The alpha 5 binaries and daily build zipfiles can generate logfiles to show
115what a win32 application is doing. This can be very useful to determine
116why certain applications don't run correctly.
117
118The major disadvantage of loggging is the overhead. Therefor it has been
119disabled by default in the alpha 5 release and daily builds.
120To enable logging set the environment variable WIN32LOG_ENABLED:
121 SET WIN32LOG_ENABLED=1
122
123To disable logging again, you must clear this variable:
124 SET WIN32LOG_ENABLED=
125
1262.1 Using Odin to run your Windows applications
127-----------------------------------------------
128
129Odin still has several ways to execute Win32 programs.
130
131
1322.2 The Ring3 Win32 Loader (PE.EXE)
133----------------------------------
134
135This is the new and also recommended method for loading programs.
136Unlike with the previous alphas, it is not required to convert or
137anyhow change the original files. Installing a device driver is
138also not necessary. Be sure to put the Odin binary directory into
139both the PATH and LIBPATH (alternatively you can use a batch file
140with SET PATH=C:\Odin;%PATH% and SET BEGINLIBPATH=C:\Odin;)
141and then call pe.exe winprog.exe param1 param2 ... If you wanted
142to start the Windows calculator, you would type
143
144pe calc
145
146The PE (Portable Executable, the Win32 executable format) loader
147will now try to load the application into memory and execute it.
148This will either work or fail with a loader message. If you get
149such a loader message, it is very likely that a required DLL is
150missing. To correct that problem, take a look at pe_0.log (or
151pe_1.log for the second program running at this time and so on).
152At the bottom of the file you will see the DLLs and the functions
153that the loader imports. It will tell you if it couldn't find a
154DLL and you can correct the problem and try it again.
155
156
1572.2.1 PE loader issues
158----------------------
159
160As the PE loader will create the process and load the program,
161a process utility such as pstat will always show PE.EXE as the
162executable file.
163It is also possible that a certain Win32 application becomes
164a zombie (that is when it does certain things the OS/2 kernel
165cannot recover such as die when waiting on a semaphore). Then
166it will not be possible to kill the application - only a system
167restart will help.
168Certain programs do use fixed memory addresses where they need
169to be loaded (i.e. they won't use fixups). You can notice this
170at the top of the loader log file (pe_0.log). If the fixed address
171is above the 512MB barrier present in Warp 4 and Warp 3, the
172program can not be run under these system. On Aurora (Warp Server
173for e-business) this limitation has been removed. Programs known
174to fall under this category are Microsoft Office (also the
175Office viewers) and other mainly Microsoft programs.
176
177
1782.3 Win32k.sys - native OS/2 PE-loader
179--------------------------------------
180
181The win32k.sys driver makes PE (Win32) executables equal to native OS/2
182executables by implementing a Ring 0 on-the-fly loader / converter.
183
184You may wonder how you may run a Win32 program using a device driver. You
185don't have to worry about that, simply treat the Win32 program just as an
186another OS/2 program. OS/2 can't tell the difference!
187No conversion of dlls or running programs thru Pe.EXE.
188
189For example, if you fancy playing windows solitaire.
190 1) Make sure the necessary DLLs (MSVCRT.DLL and CARDS.DLL) are in you
191 PATH, current dir, SOL.EXE dir, Odin32 System32 dir, Odin32 System dir,
192 Odin32 dir, or LIBPATHs; and that you have SOL.EXE somewhere.
193
194 2) Then start SOL.EXE by simply typing SOL.EXE (with path if necessary).
195 It's also possible to start SOL.EXE from the desktop if you like.
196 Simply find the SOL.EXE icon (or create it) and double click on it!
197
198
1992.3.1 WARNING
200-------------
201
202The Win32k.sys is quite alpha software and any bugs which haven't been found
203yet may crash and/or corrupt you entire system! Make sure you have backed up
204important stuff first!
205
206We are not responsible for ANYTHING AT ALL! See Odin32 disclaimer...
207
208Before you install Win32k.sys make sure that you have a backdoor to your system
209which works. For example try to boot your system using the Alt+F1 during bootup
210and choose Commandline boot (F2). Make sure you have an textmode editor which
211works; for example TEDIT.EXE.
212
213
2142.3.2 Requirements
215------------------
216
217Win32k should at least work on OS/2 Warp 3 and above, but I don't get too
218surprised if it worked on 2.11 too. DBCS are not supported yet AFAIK.
219
220It no longer requires a kernel file for retail kernels (if you don't know what
221kernel you have, you have a retail kernel). Win32k does now contain a
222"database" for the most recent retail kernels. Currently this is:
223 Warp 4 fp#1 -> fp#14
224 Aurora GA, FP1, preFP2
225 Warp 3 fp#32-> fp#42
226
227If the running kernel is not found in the "database" or is a debug kernel
228wink32.sys will look for symbolfiles as it allways did.
229If you use the -s:<symfile> argument the given symbol file will be
230investigated before the database is searched.
231
232NOTE! It hasn't been fully verified that all the different national fixpaks
233have the same symbols as the us-english ones. Feedback on this issue is
234appreciated.
235
236NOTE! A piece of advice for those playing with debug-kernels: Make sure that
237c:\OS2KRNL.SYM is matching the running kernel.
238
2392.3.2.1 Warp 3
240--------------
241
242Win32k is not tested with Warp 3. It is _supposed_ to work with Warp 3
243provided you are running fixpack 32 or later.
244(Fixpack 32 + y2kclock.exe is required for Y2K readyness anyway so...)
245
246
2472.3.3 Installation
248------------------
249
250To use Win32k.sys you have to add the following line into your config.sys:
251 device=<d:\path\system32>win32k.sys
252
253Where <d:\path\system32> is the path to the win32k.sys, i.e. usually the odin32
254system32 directory.
255
256After doing this, you'll have to reboot your machine to load the driver. During
257the boot process you will on a successful installation see some lines of
258technical info and finally a line saying:
259Win32k - Odin32 support driver.
260 Build: 14046 - v20.45
261 Found symbolfile: Win32k Symbol Database
262Win32k.sys succesfully initiated!
263
264If you don't see the last line something is wrong, and some error info will be
265shown. In the case of error the 'rc=<value>' is important to remember.
266
267
2682.3.4 Win32k parameters
269-----------------------
270
271The Capitalized letters are the one which is tested for when identifying the
272argument.
273
274There are some useful parameters for Win32k:
275-Quited Quiet driver initiation.
276 Default: disabled (ie. -V)
277
278-Verbose Verbose driver initiation.
279 Default: enabled
280
281-S:<filename> Full path to the current OS/2 kernel symbol file.
282 When this is specified the given
283 Default: symbol "database" and default locations are searched.
284
285
286Loader parameters:
287-SCript:<Y|N> Enable / disable UNIX script support.
288 Default: Enabled.
289
290-REXX:<Y|N> Enable / disable pure REXX script support.
291 Default: Enabled.
292
293-Java:<Y|N> Enable / disable JAVA loading.
294
295-Pe:<MIXED|PE2LX|PE|NOT>
296 Enabled / disable and set mode of the PE loading.
297 MIXED: Mix of Pe2Lx and Pe.exe. It uses Pe2Lx when
298 possible and backs out to pe.exe if the executables
299 aren't supported by the converter.
300 PE2LX: Pe2Lx loader only.
301 PE: Pe.exe only. The program is started using Pe.exe,
302 and the process name will be pe.exe.
303 NOT: Disable PE loading.
304
305
306Logging parameters:
307-L<:E|:D> Enables/Disables logging.
308 Default: disabled.
309
310-Com:<1|2|3|4>
311or
312-C<1|2|3|4> Which com-port to log to.
313 Default: -C2
314
315-Warning:<1|2|3|4>
316or
317-W<1|2|3|4> Warning/info level for PE loader. (This is warnings and info
318 which is published thru the com-port as logging information.)
319 Default: -W0
320
321
322Heap parameters:
323-HEAPMax: Maximum swappable heap size in bytes.
324 Default: 512KB
325
326-Heapinit: Initial heapsize in bytes.
327 Default: 16MB
328
329-RESHEAPMax: Maximum resident heap size in bytes.
330 Default: 256KB
331
332-Resheapinit: Initial resident in bytes.
333 Default: 16MB
334
335
336OS/2 Loader parameter:
337-Dllfixes<:E|:D>
338 Enables or Disables the long DLL name and non .DLL
339 extention fixes. OS/2 DLLs have been limited to 8 chars
340 names since version 2.<something>. This is a very bad
341 limitation. Also OS/2 forces all DLL loaded to loadtime
342 to have the extention '.DLL'.
343 Both these retritions are removed if this option is
344 enabled.
345 For DLL with non .DLL extention the internal name must
346 have to the extention included. (If you the experiences
347 problems with IMPLIB.EXE, enclose the internal name
348 in double-quotes.)
349 You should not make a DLL with a name starting with
350 DOSCALLS, DOSCALLS1, IBMVGA32, IBMDEV32 or IBMXGA32.
351 Current state for this feature is EXPERIMENTAL.
352 Default: Enabled
353
354
355Obsolete:
356-K:<filename> Ignored. Win32k scans the kernel image in memory!
357
358
3592.3.5 PE Loading
360----------------
361
362Win32k.sys are able to do PE loading in two different ways.
363
3642.3.5.1 PE2LX
365-------------
366The first one is called PE2LX and hence uses the original Win32k.sys method
367which is similar to Pe2Lx. This only requires that KERNEL32.DLL (ie. Odin32
368System32 directory) is present somewhere in the PATH or LIBPATHs. The DLL
369search order of PE2LX is now conforming with the Win32 order:
370 1. The directory of the executable (.EXE).
371 2. The current directory.
372 3. The Odin32 System32 directory. (Kernel32.dll directory)
373 4. The Odin32 System directory. (sibling of system32)
374 5. The Odin32 directory. (parent of system32)
375 6. The PATH environment variable. (TODO: quotes are not currently supported)
376 7. The BEGINLIBPATH.
377 8. The LIBPATH.
378 9. The ENDLIBPATH.
379(Note that the OS/2 DLLs in the _Odin32_ process are also found using this
380search order. This shouldn't matter much as nearly all of the OS/2 DLL are
381allready loaded. But if this proves a problem it could be changed.)
382
3832.3.5.2 PE
384----------
385The second one is called PE and invokes the Pe.EXE to execute the PE (Win32)
386programs. This of course requies that PE.EXE is found in the PATH.
387
3882.3.5.3 Modes
389--------------
390Win32k.sys have three (or four) different ways of combining these two methods,
391called modes:
392 PE2LX only
393 PE only
394 PE2LX with fallback on PE.
395 (fourth: NOT load any PE executables at all)
396
397The last one is the default one and is probably the best one currently.
398
399
4002.3.6 UNIX Shell Script Loader
401------------------------------
402
403The UNIX Shell Script Loader makes OS/2 able to run UNIX shell scripts as
404native executables, just as UNIX does. A unix shell script is a text file
405which has a starting line which specifies the interpreter for the script.
406
407For example a perl script:
408#!/bin/perl5 -Sx
409
410Or the most common one:
411#! /bin/sh
412
413Since Most OS/2 systems don't have a /bin directory or a /usr/bin directory
414the executable specified are looked for in these ways:
415 1. The exact filename specified.
416 2. The filename specified with .EXE extention.
417 3. Search the PATH for the filename (with out path of course).
418 4. Search the PATH for the filename with .EXE extention (and with out path of course).
419
420So, you could now execute UNIX shell script in OS/2 without even modify the
421path of the interpreter!
422
423The UNIX Shell Script Loader is enabled by default.
424
425
4262.3.6 Pure REXX Loader
427----------------------
428
429The Pure REXX Loader is a win32k.sys feature which enables REXX script with
430the extentions .RX and .REX to run as native OS/2 executables. These REXX
431scripts are executed using kRX.EXE which is found in the Odin32 System32
432directory.
433
434When we say "Pure REXX" scripts, that means no use of command line should
435occure in the script.
436
437The Pure REXX Loader is enabled by default.
438
439
4402.3.7 Java Loader/Invoker
441-------------------------
442
443Just for fun, I've added some code which detects JAVA class binaries and
444executes the class using JAVA.EXE. I first thougth this should be easy, but
445it turned out to have several problems.
446So please note the following:
447 - The classname is case sensitive, you have to write the exact class
448 name (with .class extention or what ever extention the file have)
449 when trying to execute a class. This could cause some throuble making
450 WPS program objects for the classes....
451 - To support executing of .class-files which are not in the current
452 directory win32k.sys send the directory of the .class-file in to
453 java.exe as a '-classpath' option. This option I soon found out had the
454 sideeffect of making JAVA.exe ignore the other CLASSPATH and not use
455 it's default class path. So now the contents of the CLASSPATH env. var.
456 or a generated default classpath is also sent in with the '-classpath'
457 option.
458 - The CLASSPATH environment variable should not be longer than 639 chars.
459
460When you have successfully installed Win32k.sys try type this at the
461commandline:
462c:\java11\demo\hello\hello.class
463
464This is then printed at my screen:
465Hello, Warped world!
466
467The JAVA Loader/Invoker is enabled by default.
468
469
4702.3.8 Rings - Ring 0 / Ring 3
471-----------------------------
472
473FYI. Ring 0 is the most priveleged level of execution in OS/2. The OS/2 kernel
474and device drivers execute at this level, while user applications execute in
475Ring 3, the least priveleged executing level.
476
477
4782.3.9 Win32k Control Center
479---------------------------
480
481In your Odin32 System32 directory there is a program called Win32kCC.exe,
482this is the Win32k Control Center (Win32kCC). Win32kCC is as the name says
483a program controlling Win32k.sys.
484
485Win32kCC allows you to enable, disable and change behaviour of different
486parts in Win32k.sys.
487
488For example: You could disable PE loading, or change it from MIXED mode (see
4892.3.4, -PE) to PE2LX mode. Or change it from PE2LX mode to PE mode to see
490if PE.EXE does a better job loading an executable.
491
492Note that the changes would not effect allready loaded executables.
493
494
495Win32kCC also displays status info on the running Win32k.sys and OS/2 kernel:
496 -Win32k.sys version number
497 -Win32k build time/date
498 -Path of the symbol file which was used (or Win32k Symbol Database).
499 -OS/2 kernel build number fixpack (guess)
500 -OS/2 kernel type as win32k has detected it
501 -Number of Pe2Lx currently loaded modules
502 -Win32k resident and swappable heap stats.
503
504PS. Beside the "PE Loader" area there is an "Elf Loader" area this is for a
505future Elf2Lx loader.
506
507
508
5092.4 The Ring3 conversion utility (PE2LX.EXE)
510--------------------------------------------
511
512PE2LX.EXE was the first method of running Win32 programs under
513OS/2. It is still provided and also functional but it has been
514deprecated. Using it is only sensible for debugging certain
515problems as it requires all DLLs and EXEs to be converted into
516another file format thus changing the original Win32 files.
517(It's only future use will be to convert Win32 executable with
518debuginfo to LX with HLL (IPMD/ICSDEBUG) debuginfo for
519sourcelevel debugging of Win32 executables under Odin32. This
520is not yet implemented but are being worked on.)
521
522
523
5243.0 Applications known to be working
525------------------------------------
526
527- Windows 95/NT Help Viewer (winhlp32.exe)
528- Windows 95/NT Registry Editor
529- Windows NT Solitaire (not the one from Windows 95)
530- Windows NT Freecell (not the one from Windows 95)
531- Windows 95/NT Calculator
532- Windows NT Pinball
533- Windows NT Minesweeper
534- Quake II
535- Red Alert
536- Professional Minesweeper
537- Windiff (part of Win32 SDK)
538
539Note that many other applications load and/or partly work.
540
541
5424.0 Reporting Problems and Successes
543------------------------------------
544
545In this early stage it is not required that you report every
546bug to the developers as we still have huge lists of to do items.
547However, an application compatibility database has been created
548at Netlabs where you can share your experiences with Odin.
549The application compatibility database can be found at
550
551http://www.netlabs.org/odin/appdatabase
552
553
554Project Odin Source Code Notes
555==============================
556
5571.0 Introduction
558----------------
559
560This readme is intended for making people more familiar with ODIN and to
561describe various aspects of the project such as accessing latest sources via
562cvs, building the binaries, running win32 applications, how to identify and
563report problems and bugs, as well as how to participate in this very
564promising project.
565
566
5671.1 Prerequisites:
568------------------
569
570Required compilers/tools:
571 - IBM VisualAge 3.0 (CTx8 fixpack applied)
572 (version 3.6 might also work, but version 4 is not
573 recommended)
574 - OS/2 Warp 4 Toolkit (project apparently doesn't compile with
575 VAC's OS/2 headers)
576 Might also work with EMX headers. (haven't tried this!)
577 - ALP 4.0 (IBM Assembly Language Processor)
578 Download the tools zipfile from http://service.boulder.ibm.com/ddk/
579 (you need to register, but it's free)
580 - Unix-like rm.exe (nmake clean)
581
582Changes from last source code release:
583 - Uses Wine headers and a stripped down version of os2win.h (Open32
584 header)
585 - All Open32 apis have the 'O32_' prefix.
586 - All Open32 declarations are appended with '_O32' (mostly due to
587 calling convention differences)
588 - nmake DEBUG=1 builds the debug version
589 nmake builds the release version
590 - Several dlls (i.e. USER32, KERNEL32, ADVAPI32) contain extra .def
591 files that are used to create libraries that contain the api names
592 as required by the linker when you use them. (_apiname@nrparameterbytes)
593
594Wine header notes:
595 - Several header files have been changed to make them usable for VAC
596 - Several header files contain bugfixes (mostly parameter type changes)
597 - Several header files include additional declarations
598 - At this time we don't intend to have our changes included in the
599 Wine codebase as header files are not likely to change often.
600
601Coding conventions:
602 - Do NOT directly call the Open32 apis unless you're writing
603 a wrapper for it.
604 - Do NOT include os2.h directly. Use os2wrap.h instead.
605 os2wrap.h contains all the OS/2 apis with a wrapper around it to save
606 and restore the selector in FS. (some OS/2 apis set it back to the
607 default value (150b))
608 - Use the correct Win32 api when there are two version (ascii & unicode)
609 Calling the standard one (SendMessage) causes a error during
610 compilation.
611 Use SendMessageA instead.
612 - Source code style will be decided on in the near future.
613
614
6152.0 Accessing ODIN source code via CVS
616--------------------------------------
617
618Please check out http://www.netlabs.org/ and http://www.netlabs.org/odin.
619
620
6213.0 Building the binaries
622-------------------------
623
624Basically, if your system setup meets above stated requirements, everything you
625need to do for a binary build is:
626
627 nmake DEBUG=1
628
629or alternatively
630
631 nmake release (not working right now!)
632
633As the current state of the project is still known to be alpha level, one should
634expect some functions not to work properly. Therefore, we recommend the use of
635the debug-version which creates long logfiles for problem determination purpose
636and to allow active debugging with debuggers such as IPMD, ICAT, KDB, etc.
637
638Please note if you do not want to suffer from the performance loss of writing
639logfiles, you can disable logging even with the debug binaries of ODIN by
640setting:
641
642 SET NOWIN32LOG=YES
643
644To enable logging again, clear this environment variable by typing:
645
646 SET NOWIN32LOG=
647
648Logging is enabled by default in the debug build, but disabled by default
649in the nodebuginfo build and not present in the release build.
650
6513.1 Build problems
652------------------
653
654ODIN is moving at a fast pace. Sometimes side effects of source dependencies may
655require you to do a full rebuild of the binaries instead of an incremental build.
656
657However, rarely it also happens the sources contained in the CVS repository do
658not build completely due to erroneous source code. Usually, this is fixed within
659two days at maximum.
660In such event, one can normally stick with the previous version of the particular
661module to further test win32 applications on ODIN.
662
663Please report such build problems through the appropriate channel.
664
665
6663.2 Downloading daily built binaries
667------------------------------------
668
669http://www.os2.org/ has setup an ftp server that hosts the automatically
670built binaries on daily basis. For people that do not have a suitable
671development setup for ODIN, we provide the latest binary code that way.
672
673
6744.0 Project participation
675-------------------------
676
677As ODIN became an open source project, everybody is kindly invited to
678contribute his/her share to the progress of the project. May it be
679active coding, fixing bugs or just providing detailed information about
680examined problems.
681
682We suggest you subscribe to win32os2-wai and the corresponsing mailing lists
683on http://www.egroups.com.
684In case you are interested in participating, every member of the project will
685be happy to give you direction to the right places and to give a personal
686introduction to further development of the particular modules.
687
Note: See TracBrowser for help on using the repository browser.