*** empty log message ***
[reactos.git] / os2 / doc / index.html
1 <html>
2 <head>
3 <title>OS/2 subsystem for ReactOS</title>
4 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
5 </head>
6
7 <body bgcolor="#FFFFFF" text="#000000">
8 <h1><b>OS/2 subsystem for ReactOS (ROS/2)</b></h1>
9 <h2><font color="#009966">Introduction</font></h2>
10 <p>The OS/2 subsystem is being developed to enable NT-like systems (like WinNT
11 and ReactOS) to run 32-Bit OS/2 applications natively. With this it shall provide
12 binary compatiblility on x86-Based systems. It is intended to port the ROS/2
13 also to other platforms supported by ReactOS / NT. It is planned to provide
14 source code compatibility on these platforms. Yeeahh, OS/2 for PowerPC is in
15 sight.</p>
16 <h2><font color="#009966">Components</font></h2>
17 <p>ROS/2 consists of the following components:</p>
18 <ul>
19 <li>OS2SS.EXE - A native application that implements the personality of the
20 OS/2 kernel.</li>
21 <li>OS2.EXE - A win32 application that does the interaction of the OS/2 apps
22 with the desktop.</li>
23 <li>Core DLLs - These DLLs that make OS/2 programs interface with the kernel/sub
24 system (i.E. DOSCALLS.DLL). </li>
25 <li>Additional DLLs - DLLs that provide additional APIs for OS/2 apps. This
26 includes Presentation Manager.</li>
27 </ul>
28 <h2><font color="#009966">Current state</font></h2>
29 <p>Up to now just a fragment of DOSCALLS.DLL exists. The biggest problem are the
30 os2 API headers which are (C) by IBM. So help is still welcome.</p>
31 <h2><font color="#009966">16-Bit issues</font></h2>
32 <p>It is not intended to support 16-bit OS/2 applications. This would make the
33 system inconsistent and produce much more work that use. But there is still
34 one issue: Current textmode applications are either 16-bit or use thunking to
35 call the 16-bit APIs. These 32-Bit thunking applications have to be supported.
36 We are still thinking how to accomplish that. </p>
37 <h2><font color="#009966">32-Bit issues</font></h2>
38 <p>It is planned to replace the current MOU- KBD- MSG- and VIO- subsystems with
39 the <a href="http://homepages.tesco.net/%7EJ.deBoynePollard/Softwares/conapi.html">Unicode
40 Console API</a>. This is also the foundation for other platforms we want to
41 provide source code compatibility with. So nearly every 32-Bit processor can
42 be supported. It sould even be possible to implement a 64-bit OS/2 API.</p>
43 <h2><font color="#009966">Architecture</font></h2>
44 <p>To understand the architecture of ReactOS or WinNT read a book from the &quot;Inside
45 Windows NT&quot;-series. The architecture of ROS/2 is like every normal subsystem.
46 When OS2SS.EXE starts, it creates an object directory named os2 and therein
47 it creates a port object with the name Os2API. A port is something like a socket.
48 Two programs can comunicate with each other via a port. The port Os2API provides
49 the LPC API of the OS2SS.EXE - the actual subsystem. <br>
50 Every OS/2 program that is loaded, is linked with DOSCALLS.DLL and NTDLL.DLL
51 - the interface to the NT-kernel. Since DOSCALLS is implemented using NTDLL.DLL,
52 every OS/2 app has it in its adress space. Many functions in DOSCALLS.DLL are
53 implemented by just wrapping NTDLL.DLL functions. Some functions however need
54 assistance by the subsystem. For this reason the app makes an LPC to OS2SS.EXE.
55 LPC means local procedure call and it is a very fast version of RPC. Together
56 with the first application also OS2.EXE starts up. OS2.EXE runs in the win32
57 subsystem with the security of the current user. OS2.EXE is used to gather keyboard
58 and mouse input and to show console windows and PM-windows of all OS/2 programms
59 of the current user. In order to accomplish this OS2.EXE creates a port object
60 in the os2 object directory named Os2Interact. OS/2 applications have a connection
61 to OS2.EXE, too. OS2SS.EXE and OS2.EXE also talk to each other. An OS/2 application
62 then makes LPCs either to OS2.EXE directly or if required via OS2SS.EXE.</p>
63 <p>Details</p>
64 <p>&nbsp;</p>
65 <p>LPC Documentation</p>
66 </body>
67 </html>