The Windows OSDI is unlike that provided for the other operating systems supported. There are several reasons for this, which it may be helpful to be aware of:
The Windows OSDI was originally designed for 16 bit Windows. In that environment all programs using a DLL share a common data area (a horrible feature mercifully removed in the 32 bit environment). This meant that the input and output management code used by the other OSDI packs could not be used in the Windows environment. In the 32 bit environment this problem does not arise, and it would be possible to use the same pattern as is used for the other OSDIs, by suitably adapting dipwuser, or completely replacing dipw.c, though this would only be worth doing if porting an existing OSDI to Windows.
In the Windows environment, the OSDI cannot easily take control of the keyboard, and the mouse also needs to be considered. In the Windows environment the terminal manager is responsible for managing these input devices, and cooperates with the Windows OSDI to manage information about input sources and so on.
The Windows OSDI may wish to communicate with the DP4 terminal manager or application in ways that are not possible on other operating systems, for example by sending it messages, or subclassing one or more windows of the application. The supplied code for the Windows OSDI pack was kept as simple as possible, so as not to obscure the interface between the terminal manager and the OSDI.
In the Windows OSDI pack the file DIPW.C provides the code for the DP4 Terminal Manager interface. You should not need to modify this code, though you may well find it helpful to understand it. It is supplied pre-compiled. However if you modify the definition of struct USER_INFO contained in dipw.h you will need to recompile it. In any case you may wish to recompile this module for the purposes of debugging.
The file DIPWUSER.C contains the modifiable functions for the Windows OSDI.