Presentation Manager
From Wikipedia, the free encyclopedia
This article does not cite any references or sources. (February 2008) Please help improve this article by adding citations to reliable sources. Unverifiable material may be challenged and removed. |
Presentation Manager (PM) is the graphical user interface (GUI) that IBM and Microsoft introduced in version 1.1 of their operating system OS/2 in 1988.
Contents |
[edit] History
At the time, the two companies were collaborating on subsequent versions of OS/2. They were preparing version 2.0 for the Intel 386 processor and Microsoft also began to develop OS/2 3.0 which was intended to be a portable version, not tied to Intel processors.
Presentation Manager was codenamed Winthorn and developed primarily at the IBM Hursley Labs in UK (with substantial input from Redmond). It was a cross between Microsoft Windows and IBM's mainframe graphical system (GDDM). Like Windows, it was message based and many of the messages were even identical. But there was a number of significant differences as well.
The most significant difference was the coordinate system. While in Windows the 0,0 coordinate was located in the upper left corner, in PM it was in the lower left corner. Another difference was that all drawing operations went to the Device Context (DC) in Windows. PM also used DCs but there was an added level of abstraction called Presentation Space (PS). OS/2 also had more powerful drawing functions in its Graphics Programming Interface (GPI). Some of the GPI concepts (like viewing transforms) were later incorporated into Windows NT. The OS/2 programming model was thought to be cleaner, since there was no need to explicitly export the window procedure, no WinMain, no nonstandard function prologs and epilogs.
[edit] Parting Ways
One of the most-cited reasons for the split was the divergence of the APIs between PM and Windows, which was probably driven by IBM. Initially, PM was based on Windows GUI code, and often had developments performed in advance, like the support for proportional fonts (which appeared in Windows in 1990 only). One of the divergences regarded the position of coordinate (0,0), which was at the left top in Windows, but at left-bottom (as in Cartesian coordinates) in PM. In practise it became impossible to recompile a GUI program to run on the other system; an automated source code conversion tool was promised at some point. Both companies were hoping that at some point users would migrate to OS/2. A somewhat similar situation occurred in the 1990s with customers sticking to "old" Windows, although MS would have preferred to switch them to NT.
In 1990, version 3.0 of Windows was really beginning to sell, and Microsoft began to lose interest in OS/2, especially since even earlier, market interest in OS/2 was always much smaller than in Windows.
The companies parted ways, and IBM took over all of subsequent development. Microsoft took with it OS/2 3.0, which it renamed Windows NT; as such, it inherited certain characteristics of PM, however keeping an almost strict source code compatibility with Windows. IBM continued to develop PM. In subsequent versions of OS/2, it was used as a base for the object-oriented interface Workplace Shell, a precursor of Windows' Explorer. In latest versions, IBM has commissioned Scitech Software with writing the graphic drivers for the majority of the cards that don't support OS/2 officially. There is a great integration of the graphic layer in the system, but it is still possible to run certain parts of OS/2 from a text-console or X window.
[edit] Technical Details
PM follows the Common User Access interface conventions. It also admits mouse chording for copying and pasting text.
An important problem was that of the single input queue: a failing application could block the processing of user-interface messages, thus freezing the graphical interface. This problem has been solved in Windows NT, where such an application would just become a dead rectangle on the screen; in later versions it became possible to move or hide it. In OS/2 it was solved in a FixPack, using a timer to determine when an application was not responding to events.
[edit] External links
|