Changes between Version 14 and Version 15 of WikiStart


Ignore:
Timestamp:
Feb 21, 2012, 5:07:25 PM (12 years ago)
Author:
Silvan Scherrer
Comment:

some restructuring

Legend:

Unmodified
Added
Removed
Modified
  • WikiStart

    v14 v15  
    44== About Odin ==
    55
    6 Odin is the name of the project and software that allows users to run Win32 (Windows 95 and Windows NT) applications in OS/2 Warp operating system natively, almost as if they were intended to be OS/2 applications in the first place. It also makes porting from Win32 to OS/2 easier by providing a Win32 API implementation in OS/2: the Odin32 API.
     6Odin is the name of the project and software that allows users to run Win32 applications in eComStation (OS/2) operating system natively, almost as if they were intended to be OS/2 applications in the first place. It also makes porting from Win32 to OS/2 easier by providing a Win32 API implementation in OS/2: the Odin32 API.
    77
    88Binary compatibility is achieved by converting Windows EXE and DLL files (applications are made of those) into the format that OS/2 uses. Conversion can be permanent, or it can be done transparently on runtime, when an application is started. Conversion and loading of Win32 programs, basicaly, consists of:
    99
    1010*     Converting PE (Portable Executable - Win32 binaries) objects in OS/2's LX (Linear eXecutable) format.
    11 
    1211*     Reassembling them in memory in the way OS/2 applications are supposed to be assembled.
    1312
    14 The program that will permanently convert binaries (EXE and DLL files) is called PE2LX.EXE. However, it's much more flexible to use dynamic, on-the-fly conversion (via PE.EXE loader)  because in that case executable modules on disk are not changed, and you can use your Win32 programs in both Windows 95/98/NT and OS/2 from the same space on disk. Both methods can be automated and made absolutely transparent to users with the use of the WIN32K.SYS driver that allows OS/2 processes (WPS, command prompt...) to launch Win32 binaries as any other OS/2 applications, providing automatic conversion/loading at startup time.
     13The program that will permanently convert binaries (EXE and DLL files) is called PE2LX.EXE. However, it's much more flexible to use dynamic, on-the-fly conversion (via PE.EXE loader)  because in that case executable modules on disk are not changed, and you can use your Win32 programs in both Windows and eCS (OS/2) from the same space on disk. ''Both methods can be automated and made absolutely transparent to users with the use of the WIN32K.SYS driver that allows OS/2 processes (WPS, command prompt...) to launch Win32 binaries as any other OS/2 applications, providing automatic conversion/loading at startup time.'' '''NOTE: The WIN32K.SYS approach is not working anymore with Odin 0.8 and up.'''
    1514
    16 Converted/loaded program will look and behave as any other OS/2 application. There is no emulation layer, no Windows "sessions" or virtual machines like it was the case with Win-OS/2 that IBM has provided for running Windows 3.1 applications: the code is executed directly by CPU with all rights, priviledges and limitations of normal 32-bit OS/2 programs. In order for program to operate, it must have access to the same API functions as in Windows operating system(s). Those functions are called Win32 API (Application Programming Interface) and Odin provides them, as well. It's the second part of the project whitch aims at: Providing runtime libraries that replicate Win32 API functions and that are used by loaded and running programs. Runtime libraries are supplied as a number of DLL files with the same names as the ones what are supplied with Windows 95 and Windows NT because Win32 applications expect to find them under those names. Any name conflicts (DLLs with same names shipped with OS/2) are resolved during the conversion/loading process. Odin32 DLLs are pure native OS/2 binaries which operate in the same way as their Windows counterparts. The set of API functions that are implemented for Project Odin is called Odin32.
     15Converted/loaded program will look and behave as any other eCS (OS/2) application. There is no emulation layer, no Windows "sessions" or virtual machines like it was the case with Win-OS/2 that IBM has provided for running Windows 3.1 applications: the code is executed directly by CPU with all rights, privileges and limitations of normal 32-bit eCS (OS/2) programs. In order for program to operate, it must have access to the same API functions as in Windows operating system(s). Those functions are called Win32 API (Application Programming Interface) and Odin provides them, as well. It's the second part of the project which aims at: Providing runtime libraries that replicate Win32 API functions and that are used by loaded and running programs. Runtime libraries are supplied as a number of DLL files with the same names as the ones what are supplied with Windows because Win32 applications expect to find them under those names. Any name conflicts (DLLs with same names shipped with eCS (OS/2)) are resolved during the conversion/loading process. Odin32 DLLs are pure native eCS (OS/2) binaries which operate in the same way as their Windows counterparts. The set of API functions that are implemented for Project Odin is called Odin32.
    1716
    18 The Odin32 API can aslo be used (and is used) for native OS/2 development, primarly for porting software from Windows. Since it replicates the functionality of the Win32 API closely, a porter can much easier match the basic functionality and then add OS/2 specific improvements.
     17The Odin32 API can also be used (and is used) for native eCS (OS/2) development, as for porting software from Windows. Since it replicates the functionality of the Win32 API closely, a porter can much easier match the basic functionality and then add eCS (OS/2) specific improvements.
    1918
    20 A very good example of an application which is using this technology is Opera for OS/2. It is compiled using Odin32 API and OS/2 specific behaviour was added as well.
     19A very good example of an application which is using this technology is OpenJDK6 for OS/2. It is compiled using Odin32 API and eCS (OS/2) specific behavior was added as well.
    2120
    22 The final goal of the first part of the project is to make every Windows program load and operate properly, and the goal of the second part of the project is to create complete OS/2 implementation of Win32 API, which means that every single API function should be implemented or mapped to equivalent OS/2 API function via Odin32. Whether those goals will be ever achieved remains to be seen, but this project gives good results even now, since no Windows program uses all API functions and very few use even majority of them.
     21The final goal of the first part of the project is to make every Windows program load and operate properly, and the goal of the second part of the project is to create complete eCS (OS/2) implementation of Win32 API, which means that every single API function should be implemented or mapped to equivalent eCS (OS/2) API function via Odin32. Whether those goals will be ever achieved remains to be seen, but this project gives good results even now, since no Windows program uses all API functions and very few use even majority of them.
    2322[[br]][[br]]
    2423
     
    3938==== Prerequisites ====
    4039
    41 This is a list of prerequisites for the Odin ZIP packages. Note that if you use the RPM packages, these prerequisites, '''xsystray''', will be installed automatically. Xsystray are not in RPM repositories yet so you will need to install them from WPI in either case.
     40This is a list of prerequisites for the Odin ZIP packages. Note that if you use the RPM packages, these prerequisites, '''except xsystray''', will be installed automatically. Xsystray are not in RPM repositories yet so you will need to install them from WPI in either case.
    4241
    4342||'''GCC 4 Core Libraries'''||[ftp://ftp.netlabs.org/pub/gcc/gcc4core-1_2_1.wpi WPI]||GCC 4 runtime libraries needed for all Odin installations (required).||
     
    9291To get it built you need the GCC 4.4.6 compiler, the OS/2 Toolkit 4.5 and the kBuild utility[[br]]
    9392The easiest way is to install GCC and kBuild from the RPM repository. The Toolkit isn't available as RPM right now
    94