home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 8 Other / 08-Other.zip / odina5.zip / Readme.txt < prev    next >
Text File  |  1999-11-16  |  17KB  |  428 lines

  1.  
  2.                 O D I N  Public Alpha 5 - 1999/11/16
  3.                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  4.  
  5. WANTED: We are still looking for talented developers that want to
  6.         contribute! Please take a look at the last section!
  7.  
  8. NOTE:   LICENSE.TXT describes the Project Odin Software License.
  9.  
  10.  
  11. Project Odin Information
  12. ========================
  13.  
  14. 1.0 Introduction
  15. ----------------
  16.  
  17. This readme is intended for end users that have downloaded the
  18. latest public alpha release and want to give it a try. For more
  19. information, be sure to regularly check http://www.netlabs.org/odin.
  20.  
  21. 1.1 Purpose
  22. -----------
  23.  
  24. Odin is a free Open Source project with the goal to eventually
  25. provide a fully working Win32 (Win 95/98/NT/2000) runtime environment,
  26. making it possible to run your favorite Windows programs under OS/2,
  27. as if they were native OS/2 programs. The second goal of Odin is to
  28. provide the full Win32 application programming interface (API) so
  29. that it is possible to build OS/2 programs using Windows source
  30. code. This is also refered to as Odin32 whereas Odin is the name
  31. of the Win32 binary emulator.
  32.  
  33. 1.2 Current Status
  34. ------------------
  35.  
  36. Odin is still in the early alpha state so that it is very far from
  37. being widely usable. Most programs will not work or show many
  38. problems. Even though it is not usable for most programs, we have
  39. decided to do a public release in order to show how much progress
  40. the project has been made. A second goal is to attract more developers
  41. in order to speedup development. Our job includes rewriting most
  42. parts of Windows 95/NT without having the original source code so
  43. the more developers we have the more progess will be seen. The
  44. last public release (Alpha 0.004) has been in 1997 and the project
  45. has changed much since then. Everything is free and Open Source now
  46. and the base architecture has been improved quite a lot. We are now
  47. in a position where we can expect the first bigger applications to
  48. run well and to make much more visible progress.
  49.  
  50. 1.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. 2.0 Installing Odin
  81. -------------------
  82. Odin installation must be done manually at this time. However, only
  83. a few simple tasks must be completed:
  84.   - Unzip the odin zipfile into a new directory (i.e. C:\ODIN)
  85.   - Add this directory to the LIBPATH and PATH statements of your config.sys
  86.   - Optionally install the win32k device driver (see 2.3.3)
  87.   - Reboot your machine
  88.  
  89. To run DirectDraw games or Quake 2 in Voodoo mode, you must install Holger
  90. Veit's XFree86/2 support driver (XF86SUP.SYS).
  91. Visit http://ais.gmd.de/~veit/os2/xf86sup.html to download it.
  92.  
  93. 2.0.1 Log files
  94. ---------------
  95. The alpha 5 binaries and daily build zipfiles can generate logfiles to show 
  96. what a win32 application is doing. This can be very useful to determine
  97. why certain applications don't run correctly.
  98.  
  99. The major disadvantage of loggging is the overhead. Therefor it has been 
  100. disabled by default in the alpha 5 release and daily builds.
  101. To enable logging set the environment variable WIN32LOG_ENABLED:
  102.    SET WIN32LOG_ENABLED=1
  103.  
  104. To disable logging again, you must clear this variable:
  105.    SET WIN32LOG_ENABLED=
  106.  
  107. 2.1 Using Odin to run your Windows applications
  108. -----------------------------------------------
  109.  
  110. Odin still has several ways to execute Win32 programs.
  111.  
  112.  
  113. 2.2 The Ring3 Win32 Loader (PE.EXE)
  114. ----------------------------------
  115.  
  116. This is the new and also recommended method for loading programs.
  117. Unlike with the previous alphas, it is not required to convert or
  118. anyhow change the original files. Installing a device driver is
  119. also not necessary. Be sure to put the Odin binary directory into
  120. both the PATH and LIBPATH (alternatively you can use a batch file
  121. with SET PATH=C:\Odin\bin;%PATH% and SET BEGINLIBPATH=C:\Odin\bin;)
  122. and then call pe.exe winprog.exe param1 param2 ... If you wanted
  123. to start the Windows calculator, you would type
  124.  
  125. pe calc
  126.  
  127. The PE (Portable Executable, the Win32 executable format) loader
  128. will now try to load the application into memory and execute it.
  129. This will either work or fail with a loader message. If you get
  130. such a loader message, it is very likely that a required DLL is
  131. missing. To correct that problem, take a look at pe_0.log (or
  132. pe_1.log for the second program running at this time and so on).
  133. At the bottom of the file you will see the DLLs and the functions
  134. that the loader imports. It will tell you if it couldn't find a
  135. DLL and you can correct the problem and try it again.
  136.  
  137.  
  138. 2.2.1 PE loader issues
  139. ----------------------
  140.  
  141. As the PE loader will create the process and load the program,
  142. a process utility such as pstat will always show PE.EXE as the
  143. executable file.
  144. It is also possible that a certain Win32 application becomes
  145. a zombie (that is when it does certain things the OS/2 kernel
  146. cannot recover such as die when waiting on a semaphore). Then
  147. it will not be possible to kill the application - only a system
  148. restart will help.
  149. Certain programs do use fixed memory addresses where they need
  150. to be loaded (i.e. they won't use fixups). You can notice this
  151. at the top of the loader log file (pe_0.log). If the fixed address
  152. is above the 512MB barrier present in Warp 4 and Warp 3, the
  153. program can not be run under these system. On Aurora (Warp Server
  154. for e-business) this limitation has been removed. Programs known
  155. to fall under this category are Microsoft Office (also the
  156. Office viewers) and other mainly Microsoft programs.
  157.  
  158.  
  159. 2.3 The Ring0 conversion utility driver (WIN32K.SYS)
  160. ----------------------------------------------------
  161.  
  162. The win32k.sys driver makes PE (Win32) executables equal to native OS/2
  163. executables by implementing a Ring 0 on-the-fly converter. The converter is
  164. Pe2Lx.exe. So, everything that works with Pe2Lx will probably work with
  165. win32k.sys. And vice versa, when Pe2lx can't handle it, win32k.sys won't either.
  166.  
  167. You may wonder how you may run a Win32 program using a device driver. You
  168. don't have to worry about that, simply treat the Win32 program just as an
  169. another OS/2 program. OS/2 can't tell the difference!
  170. No conversion of dlls or running programs thru Pe.EXE.
  171.  
  172. For example, if you fancy playing windows solitaire.
  173.     1) Make sure the necessary DLLs are in you (BEGIN/END)LIBPATH,
  174.        and that SOL.EXE is in the current directory or the directory you
  175.        specify.
  176.  
  177.     2) Then start SOL.EXE by simply typing SOL.EXE (with path if necessary).
  178.        It's also possible to start SOL.EXE from the desktop if you like.
  179.        Simply find the SOL.EXE icon (or create it) and double click on it!
  180.  
  181.  
  182. 2.3.1 WARNING
  183. -------------
  184.  
  185. The Win32k.sys is alpha software and any bugs which haven't been found
  186. yet may crash and/or corrupt you entire system! Make sure you have backed up
  187. important stuff first!
  188.  
  189. We are not responsible for ANYTHING AT ALL! See Odin32 disclaimer...
  190.  
  191. Before you install win32k.sys make sure that you have a backdoor to your system
  192. which works. For example try to boot your system using the Alt+F1 during bootup
  193. and choose Commandline boot (F2). Make sure you have an textmode editor which
  194. works; for example TEDIT.EXE.
  195.  
  196.  
  197. 2.3.2 Requirements
  198. ------------------
  199.  
  200. Win32k should work on any Warp 4 or Warp Server for e-business installations
  201. which Odin32 works on. It requires only one thing, a kernel symbol file. The
  202. kernel symbol is looked for in \OS2\PDPSI\PMDF\WARP4 and
  203. \OS2\PDPSI\PMDF\WARP45_U/S. All warp 4 and WE4eB installations should have
  204. those direcotries (we hope). It is updated when you install a new fixpack - so
  205. there is really nothing to worry about for the common user.
  206.  
  207. For those playing with debug-kernels, make sure that OS2KRNL.SYM is matching
  208. the running kernel, while this file too is investigated. (The complete list
  209. is found in src\Win32k\dev16\probkrnl.c,apszSym[] - odin32 source tree.)
  210.  
  211.  
  212. 2.3.2.1 Warp 3
  213. --------------
  214.  
  215. Win32k is not tested with Warp 3. It is supposed to work with Warp 3 provided
  216. that the os2krnl.sym file is present. Warp Server 4 has this, common Warp 3
  217. doesn't.
  218.  
  219.  
  220. 2.3.3 Installation
  221. ------------------
  222.  
  223. To use Win32k.sys you have to add the following line into your config.sys:
  224.     device=<d:\path\>win32k.sys
  225.  
  226. Where <d:\path\> is the path to the win32k.sys, i.e. the odin32 executables
  227. directory.
  228.  
  229. After doing this, you'll have to reboot your machine to load the driver. During
  230. the boot process you will on a successful installation see some lines of
  231. technical info and finally a line saying:
  232.     'Win32k.sys succesfully initiated!'
  233.  
  234. If you don't see the line above something is wrong.
  235.  
  236.  
  237. 2.3.4 Win32k parameters
  238. -----------------------
  239.  
  240. There are some useful parameters for Win32k:
  241. -Q             Quiet driver initiation. (Default is verbose (-V) initiation.)
  242. -V             Verbose driver initiation. Default.
  243. -S:<filename>  Full path to the current OS/2 kernel symbol file.
  244. -K:<filename>  Full path to the running OS/2 kernel.
  245.  
  246.  
  247. 2.3.5 Rings - Ring 0 / Ring 3
  248. -----------------------------
  249.  
  250. FYI. Ring 0 is the most priveleged level of execution in OS/2. The OS/2 kernel
  251. and device drivers execute at this level, while user applications execute in
  252. Ring 3, the least priveleged executing level.
  253.  
  254.  
  255. 2.4 The Ring3 conversion utility (PE2LX.EXE)
  256. --------------------------------------------
  257.  
  258. PE2LX.EXE was the first method of running Win32 programs under
  259. OS/2. It is still provided and also functional but it has been
  260. deprecated. Using it is only sensible for debugging certain
  261. problems as it requires all DLLs and EXEs to be converted into
  262. another file format thus changing the original Win32 files.
  263.  
  264.  
  265. 3.0 Applications known to be working
  266. ------------------------------------
  267.  
  268. - Windows 95/NT Help Viewer (winhlp32.exe)
  269. - Windows 95/NT Registry Editor
  270. - Windows NT Solitaire (not the one from Windows 95)
  271. - Windows NT Freecell (not the one from Windows 95)
  272. - Windows 95/NT Calculator
  273. - Windows NT Pinball
  274. - Windows NT Minesweeper
  275. - Quake II
  276. - Red Alert
  277. - Professional Minesweeper
  278. - Windiff (part of Win32 SDK)
  279.  
  280. Note that many other applications load and/or partly work.
  281.  
  282. 4.0 Reporting Problems and Successes
  283. ------------------------------------
  284.  
  285. In this early stage it is not required that you report every
  286. bug to the developers as we still have huge lists of to do items.
  287. However, an application compatibility database has been created
  288. at Netlabs where you can share your experiences with Odin.
  289. The application compatibility database can be found at
  290.  
  291. http://www.netlabs.org/odin/appdatabase
  292.  
  293.  
  294. Project Odin Source Code Notes
  295. ==============================
  296.  
  297. 1.0 Introduction
  298. ----------------
  299.  
  300. This readme is intended for making people more familiar with ODIN and to 
  301. describe various aspects of the project such as accessing latest sources via 
  302. cvs, building the binaries, running win32 applications, how to identify and 
  303. report problems and bugs, as well as how to participate in this very 
  304. promising project.
  305.  
  306.  
  307. 1.1 Prerequisites:
  308. ------------------
  309.  
  310. Required compilers/tools:
  311.     - IBM VisualAge 3.0 (CTx8 fixpack applied)
  312.       (version 3.6 might also work, but version 4 is not
  313.         recommended)
  314.     - OS/2 Warp 4 Toolkit (project apparently doesn't compile with 
  315.       VAC's OS/2 headers)
  316.       Might also work with EMX headers. (haven't tried this!)
  317.     - ALP 4.0 (IBM Assembly Language Processor)
  318.           Download the tools zipfile from http://service.boulder.ibm.com/ddk/
  319.       (you need to register, but it's free)
  320.     - Unix-like rm.exe (nmake clean)
  321.  
  322. Changes from last source code release:
  323.     - Uses Wine headers and a stripped down version of os2win.h (Open32 
  324.           header)
  325.     - All Open32 apis have the 'O32_' prefix.
  326.     - All Open32 declarations are appended with '_O32' (mostly due to 
  327.           calling convention differences)
  328.     - nmake DEBUG=1 builds the debug version
  329.           nmake         builds the release version
  330.     - Several dlls (i.e. USER32, KERNEL32, ADVAPI32) contain extra .def
  331.       files that are used to create libraries that contain the api names
  332.       as required by the linker when you use them. (_apiname@nrparameterbytes)
  333.  
  334. Wine header notes:
  335.     - Several header files have been changed to make them usable for VAC
  336.     - Several header files contain bugfixes (mostly parameter type changes)
  337.     - Several header files include additional declarations
  338.     - At this time we don't intend to have our changes included in the
  339.       Wine codebase as header files are not likely to change often.
  340.  
  341. Coding conventions:
  342.     - Do NOT directly call the Open32 apis unless you're writing
  343.       a wrapper for it.
  344.     - Do NOT include os2.h directly. Use os2wrap.h instead.
  345.       os2wrap.h contains all the OS/2 apis with a wrapper around it to save
  346.           and restore the selector in FS. (some OS/2 apis set it back to the
  347.        default value (150b))
  348.     - Use the correct Win32 api when there are two version (ascii & unicode)
  349.       Calling the standard one (SendMessage) causes a error during 
  350.           compilation.
  351.       Use SendMessageA instead.
  352.     - Source code style will be decided on in the near future.
  353.  
  354.  
  355. 2.0 Accessing ODIN source code via CVS
  356. --------------------------------------
  357.  
  358. Please check out http://www.netlabs.org/ and http://www.netlabs.org/odin. 
  359.  
  360.  
  361. 3.0 Building the binaries
  362. -------------------------
  363.  
  364. Basically, if your system setup meets above stated requirements, everything you 
  365. need to do for a binary build is:
  366.  
  367.   nmake DEBUG=1
  368.  
  369. or alternatively
  370.  
  371.   nmake release (not working right now!)
  372.  
  373. As the current state of the project is still known to be alpha level, one should 
  374. expect some functions not to work properly. Therefore, we recommend the use of 
  375. the debug-version which creates long logfiles for problem determination purpose 
  376. and to allow active debugging with debuggers such as IPMD, ICAT, KDB, etc.
  377.  
  378. Please note if you do not want to suffer from the performance loss of writing 
  379. logfiles, you can disable logging even with the debug binaries of ODIN by 
  380. setting:
  381.  
  382.   SET NOWIN32LOG=YES
  383.  
  384. To enable logging again, clear this environment variable by typing:
  385.  
  386.   SET NOWIN32LOG=
  387.  
  388. Logging is enabled by default in the debug build, but disabled by default
  389. in the nodebuginfo build and not present in the release build.
  390.  
  391. 3.1 Build problems
  392. ------------------
  393.  
  394. ODIN is moving at a fast pace. Sometimes side effects of source dependencies may 
  395. require you to do a full rebuild of the binaries instead of an incremental build.
  396.  
  397. However, rarely it also happens the sources contained in the CVS repository do 
  398. not build completely due to erroneous source code. Usually, this is fixed within 
  399. two days at maximum.
  400. In such event, one can normally stick with the previous version of the particular
  401. module to further test win32 applications on ODIN.
  402.  
  403. Please report such build problems through the appropriate channel.
  404.  
  405.  
  406. 3.2 Downloading daily built binaries
  407. ------------------------------------
  408.  
  409. http://www.os2.org/ has setup an ftp server that hosts the automatically 
  410. built binaries on daily basis. For people that do not have a suitable 
  411. development setup for ODIN, we provide the latest binary code that way.
  412.  
  413.  
  414. 4.0 Project participation
  415. -------------------------
  416.  
  417. As ODIN became an open source project, everybody is kindly invited to 
  418. contribute his/her share to the progress of the project. May it be
  419. active coding, fixing bugs or just providing detailed information about 
  420. examined problems.
  421.  
  422. We suggest you subscribe to win32os2-wai and the corresponsing mailing lists
  423. on http://www.egroups.com.
  424. In case you are interested in participating, every member of the project will 
  425. be happy to give you direction to the right places and to give a personal 
  426. introduction to further development of the particular modules.
  427.  
  428.