home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Professional
/
OS2PRO194.ISO
/
os2
/
info
/
document
/
redbooks
/
os2redb2.inf
(
.txt
)
< prev
next >
Wrap
OS/2 Help File
|
1992-08-27
|
832KB
|
16,097 lines
ΓòÉΓòÉΓòÉ 1. (C) Copyright IBM Corp. 1992 ΓòÉΓòÉΓòÉ
(C) Copyright International Business Machines Coporation 1992. All rights
reserved.
Note to U.S. Government Users - Documentation related to restricted rights -
Use, duplication or disclosure is subject to restrictions set forth in GSA ADP
Schedule Contract with IBM Corp.
ΓòÉΓòÉΓòÉ 2. Cover ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> Title Page ΓòÉΓòÉΓòÉ
OS/2 Version 2.0
Volume 2: Dos and Windows
Environment
Document Number GG24-3731-00
April 1992
International Technical
Support Center
Boca Raton
ΓòÉΓòÉΓòÉ 3. Version Notice ΓòÉΓòÉΓòÉ
Take Note: Before using this information and the product it supports, be sure
to read the general information under Special Notices.
First Edition (April 1992)
This edition applies to OS/2 Version 2.0.
Order publications through your IBM representative or the IBM branch office
serving your locality. Publications are not stocked at the address given below.
A form for reader's comments appears at the back of this publication. If the
form has been removed, address your comments to:
IBM Corporation, International Technical Support Center
Dept. 91J, Building 235-2 Internal Zip 4423
901 NW 51st Street
Boca Raton, Florida 33432 USA
When you send information to IBM, you grant IBM a non-exclusive right to use or
distribute the information in any way it believes appropriate without incurring
any obligation to you.
MAK - Revision 1.0
ΓòÉΓòÉΓòÉ 4. Abstract ΓòÉΓòÉΓòÉ
This document describes both the Multiple Virtual DOS Machines (MVDM) component
of OS/2 Version 2.0 and the implementation of Microsoft Windows application
support under OS/2 Version 2.0. It forms Volume 2 of a five volume set; the
other volumes are:
OS/2 Version 2.0 - Volume 1: Control Program GG24-3730
OS/2 Version 2.0 - Volume 3: Presentation Manager and Workplace Shell
GG24-3732
OS/2 Version 2.0 - Volume 4: Application Development GG24-3774
OS/2 Version 2.0 - Volume 5: Print Subsystem GG24-3775
The entire set may be ordered as OS/2 Version 2.0 Technical Compendium,
GBOF-2254.
This publication is intended for IBM customers, IBM system engineers, and IBM
authorized dealers, and other individuals who require a knowledge of the
features, functions, and implementation of DOS and Microsoft Windows
application support under OS/2 Version 2.0.
This document assumes that the reader is generally familiar with the DOS
operating system and Microsoft Windows, and with the function provided in
previous releases of OS/2.
ΓòÉΓòÉΓòÉ 5. Acknowledgements ΓòÉΓòÉΓòÉ
The project leader and editor for this project was:
Hans J. Goetz
International Technical Support Center, Boca Raton
The authors of this document are:
Robert Beck
IBM United Kingdom
Herman Benders
IBM Netherlands
Bo Falkenberg
IBM Denmark
Dorle Hecker
IBM Germany
Patrick Lee
IBM Australia
Robert Penrose
IBM Canada
Dwight Ronquest
ISM South Africa
Laurie Rose
IBM UK
Karl-Peter Schweder
IBM Germany
Tim Sennitt
IBM UK
Neil Stokes
IBM Australia
Bernd Westphal
IBM Germany
This publication is the result of a series of residencies conducted at the
International Technical Support Center, Boca Raton.
This document was converted to the Information Presentation Facility by:
Michael Kaply
IBM Development Laboratories, Austin.
Thanks to the following people for the invaluable advice and guidance provided
in the production of this document:
Terri Beck
IBM Programming Center, Boca Raton.
Sam Casto and his staff
IBM Programming Center, Boca Raton.
Monte Copeland
IBM Programming Center, Boca Raton.
Mark Fiechtner
IBM Programming Center, Boca Raton.
George Fulk
IBM Programming Center, Boca Raton.
Alfredo GutiВrrez
IBM EMEA Education Center, Boca Raton.
Kip Harris
IBM Programming Center, Boca Raton.
David Kerr
IBM Programming Center, Boca Raton.
Bill Madden
IBM Programming Center, Boca Raton.
Martin McElroy
IBM European Personal Systems Center, Basingstoke.
Jeff Muir
IBM Programming Center, Boca Raton.
Frank Schroeder
IBM Programming Center, Boca Raton.
Jerry Stegenga
International Technical Support Center, Boca Raton.
John Tyler
IBM Programming Center, Boca Raton.
David Young
IBM Western Area Systems Center, Los Angeles.
Thanks also to the many people, both within and outside IBM, who provided
suggestions and guidance, and who reviewed this document prior to publication.
Thanks to the following people for providing excellent tools, used during
production of this document:
Dave Hock (CUA Draw)
IBM Cary.
JБrg von KДnel (PM Camera)
IBM Yorktown Heights.
Georg Haschek (BM2IPF)
IBM Austria.
ΓòÉΓòÉΓòÉ 6. Figures ΓòÉΓòÉΓòÉ
Concurrent DOS Applications under the Workplace Shell
MVDM Architecture
MVDM System Structure Overview
MVDM System Structure and Control Flow
MVDM Protected Mode processes
VDM Exception Handling
Typical VDM Address Space Map
VDM Initialization
Virtual Display Management
Virtual Keyboard Management
Virtual Mouse Management
VDM Exceptions and Interrupt Handling in a V86 Mode Task
Descriptor Privilege Levels
A20 Line Service (64KB Wraparound)
V86 Memory Map Prior to DOS Emulation Initialization
V86 Memory Map at Initial V86 Mode Entry
V86 Memory Map after Initialization
Default AUTOEXEC.BAT File
Physical and Virtual Device Drivers under OS/2 Version 2.0
Structure of Bi-Modal Device Drivers in OS/2 V1.x
Physical Device Driver Statements in CONFIG.SYS
Virtual Device Driver Statements in CONFIG.SYS
Virtual COM and Physical COM Device Drivers
Virtual Printer Device Driver Operation
Virtual Programmable Interrupt Controller
General Overview of Different Types of Memory for DOS Applications
Expanded Memory Manager Control Flow
Memory Map of Areas Supported by Extended Memory
Extended Memory Manager Control Flow
CONFIG.SYS - Loading Device Drivers into UMBs
LOADHIGH Command - Loading TSRs into UMBs
The Migrate Applications Windows
DBTAGS.DAT
User Definitions for other Applications
Windows Applications Running under OS/2 Version 2.0
Single Windows Application Running under OS/2 Version 2.0
Single Windows Application(s) Running "Seamless" on the OS/2 Version 2.0
Desktop
Implementation of "Seamless" WIN-OS/2 VDM in OS/2 Version 2.0
Installing Windows Support under OS/2 Version 2.0
Defining a Windows Application to OS/2 Version 2.0
Migrating the Windows Initialization Files
p.Detailed View of the WIN-OS/2 Data Connections
Low Level View of the WIN-OS/2 Printing Data Flow
File Structure of Adobe Type Manager
OS/2 Version 2.0 Clipboard Environment
DDE Process between Windows Environments
DDE Process between Presentation Manager and Windows
Client/Server Structure for Operating System Extenders
The Program Page of the Settings Notebook
The Session Page of the Settings Notebook
The DOS Settings Dialog of the Settings Notebook
Setting Up a TSR Program
The DOS Settings Dialog of the Settings Notebook
The Program Page of the Settings Notebook for a VMB
DOS Settings - DOS_STARTUP_DRIVE
VMB from an OS/2 V2.0 Program
Personal Communications/3270 for Windows running under OS/2 V2.0
Memory Map of Extended Memory (HMA, UMA, and EMBs)
QENV.BAT Batch File
C Source Code for ENVIRON.EXE
INT19.BAS Source Code
GRAPHIC.BAS Source Code
ΓòÉΓòÉΓòÉ 6.1. Concurrent DOS Applications under the Workplace Shell ΓòÉΓòÉΓòÉ
We apologize for the picture quality. The original was not available.
ΓòÉΓòÉΓòÉ 6.2. MVDM Architecture ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ 6.3. MVDM System Structure Overview ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ 6.4. MVDM System Structure and Control Flow ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ 6.5. MVDM Protected Mode processes ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ 6.6. VDM Exception Handling ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ 6.7. Typical VDM Address Space Map ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ 6.8. VDM Initialization ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ 6.9. Virtual Display Management ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ 6.10. Virtual Keyboard Management ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ 6.11. Virtual Mouse Management ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ 6.12. VDM Exceptions and Interrupt Handling in a V86 Mode Task ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ 6.13. Descriptor Privilege Levels ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ 6.14. A20 Line Service (64KB Wraparound) ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ 6.15. V86 Memory Map Prior to DOS Emulation Initialization ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ 6.16. V86 Memory Map at Initial V86 Mode Entry ΓòÉΓòÉΓòÉ
This diagram shows the VDM's memory map when the V86 mode DOS Emulation kernel
is first invoked.
ΓòÉΓòÉΓòÉ 6.17. V86 Memory Map after Initialization ΓòÉΓòÉΓòÉ
This diagram shows the VDM's memory map after initialization of the DOS
environment and prior to loading a DOS application.
ΓòÉΓòÉΓòÉ 6.18. Default AUTOEXEC.BAT File ΓòÉΓòÉΓòÉ
PATH C:\OS2;C:\OS2\MDOS;C:\;
LOADHIGH APPEND C:\OS2;C:\OS2\SYSTEM
PROMPT $I$P$G
ΓòÉΓòÉΓòÉ 6.19. Physical and Virtual Device Drivers under OS/2 Version 2.0 ΓòÉΓòÉΓòÉ
This example shows the asynchronous communications port.
ΓòÉΓòÉΓòÉ 6.20. Structure of Bi-Modal Device Drivers in OS/2 V1.x ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ 6.21. Physical Device Driver Statements in CONFIG.SYS ΓòÉΓòÉΓòÉ
DEVICE=C:\OS2\MOUSE.SYS TYPE=PDIMOU$ (Mouse PDD)
DEVICE=C:\OS2\COM.SYS (COM port PDD)
ΓòÉΓòÉΓòÉ 6.22. Virtual Device Driver Statements in CONFIG.SYS ΓòÉΓòÉΓòÉ
DEVICE=C:\OS2\MDOS\VMOUSE.SYS (Mouse VDD)
DEVICE=C:\OS2\MDOS\VCOM.SYS (COM port VDD)
DEVICE=C:\OS2\MDOS\VEMM.SYS (EMS VDD)
ΓòÉΓòÉΓòÉ 6.23. Virtual COM and Physical COM Device Drivers ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ 6.24. Virtual Printer Device Driver Operation ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ 6.25. Virtual Programmable Interrupt Controller ΓòÉΓòÉΓòÉ
Notes to the numbers in the above figure:
1. 8259 PIC port accesses
VPIC initialization entry point (VDDInit)
VPIC VDM creation entry point (vpicCreateVDM)
2. Call when interrupts enabled service (VDHArmSTIHook)
Return to VDM interrupt code service (VDHPushInt)
3. Set the global and the VDM context hook service (VDHArmContextHook)
Start the timer service (VDHArmTimerHook)
Set the VDM priority service (VDHSetPriority)
4. Set the IRET and EOI handlers service (VDHOpenVIRQ)
Set the virtual IRR request service (VDHSetVIRR)
Clear the virtual IRR request service (VDHClearVIRR)
Get virtual IRQ status service (VDHQueryVIRQ)
Send virtual EOI service (VDHSendEOI)
Wait for simulated interrupt service (VDHWaitVIRRs)
Wake up the VDM waiting for a simulated interrupt (VDHWakeVIRRs)
5. Physical PIC hardware interrupt requests and EOI
VPIC requests an IRQ level will be dispatched to VPIC if no physical
device driver services the interrupt (INTSetVDMIRQ)
VPIC notifies the interrupt manager of the end of the interrupt
processing (INTEOIVDMIRQ)
6. Hardware Interrupt dispatching
The interrupt manager transfers control to the VPIC for hardware
interrupts that the VPIC has set, and no physical device driver has
serviced (VPICIntHdlr)
ΓòÉΓòÉΓòÉ 6.26. General Overview of Different Types of Memory for DOS Applications ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ 6.27. Expanded Memory Manager Control Flow ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ 6.28. Memory Map of Areas Supported by Extended Memory ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ 6.29. Extended Memory Manager Control Flow ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ 6.30. CONFIG.SYS - Loading Device Drivers into UMBs ΓòÉΓòÉΓòÉ
DEVICE = C:\OS2\VXMS.SYS
DEVICEHIGH = SIZE = 1A00 C:\OS2\MDOS\ANSI.SYS
DOS = UMB
ΓòÉΓòÉΓòÉ 6.31. LOADHIGH Command - Loading TSRs into UMBs ΓòÉΓòÉΓòÉ
LOADHIGH progname <program parameters>
ΓòÉΓòÉΓòÉ 6.32. The Migrate Applications Windows ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> DBTAGS.DAT ΓòÉΓòÉΓòÉ
// +--------------------+
// | NOTE TO TRANSLATOR |
// +--------------------+
// Do not translate keywords or data types and delete these lines when done.
// ============================================================================
// dbtags.dat -- DOS setting "tags" used by PARSEDB and MIGRATE. Each "tag"
// consists of an index, a keyword, and a data type.
// +------------------------------------------------+
// | DO NOT EDIT THIS FILE UNDER ANY CIRCUMSTANCES! |
// +------------------------------------------------+
// ============================================================================
// Allows BASIC-style comments.
// ----------------------------------------------------------------------------
1 REM NOP
// ----------------------------------------------------------------------------
// Required "fake" DOS settings.
// ----------------------------------------------------------------------------
2 NAME STR // Filename used to execute application
3 TITLE STR // Icon (desktop) title
4 TYPE BYTE // Application type
// Valid settings: DOS
// Windows
// OS/2
// custom (for Microsoft
// Windows apps which
// must run full-screen)
5 ASSOC_FILE STR // Associated file (NULL if one isn't
// known)
6 DEF_DIR STR // Default installation directory (NULL
// if there isn't one)
// ----------------------------------------------------------------------------
// Other "fake" DOS settings.
// ----------------------------------------------------------------------------
7 FOLDER STR // Name of folder to create and/or put
// the application icon in
8 PARAMETERS STR // Application's command line parameters
9 WORK_DIR STR // Application's working directory
// ----------------------------------------------------------------------------
// "Fake" Windows settings
// ----------------------------------------------------------------------------
10 WIN_FILES STR // Files to be copied to the WinOS2
// directory when the application is
// migrated
11 COMMON_SESSION BOOL // Default: ON -> the application is to
// be run in the common
// session
// OFF -> the application is to
// be run "standalone"
// ----------------------------------------------------------------------------
// Real DOS settings. NOTE: WIN_RUNMODE is not supported; all Windows apps are
// installed with SEAMLESS and WPS handles the mapping.
// ----------------------------------------------------------------------------
// WIN_RUNMODE INT // Valid settings: 10 (REAL)
// 11 (STANDARD)
// 12 (AUTO)
// 13 (SEAMLESS)
13 COM_HOLD BOOL // Default: off
14 DOS_BREAK BOOL // Default: off
15 DOS_DEVICE MLSTR // Default: empty
16 DOS_FCBS INT // Limits: 0 to 255, default 16
17 DOS_FCBS_KEEP INT // Limits: 0 to 255, default 8
18 DOS_FILES INT // Limits: 20 to 255, default 20
19 DOS_HIGH BOOL // Default: off
20 DOS_LASTDRIVE STR // Limits: last physical drive to 'Z',
// default 'Z'
21 DOS_RMSIZE INT // Limits: 128 to 640, default 640
// NOTE: increments of 16
22 DOS_SHELL STR // Default: "#:\OS2\MDOS\COMMAND.COM "
// "#:\OS2\MDOS\ /P" where #
// is the boot drive
23 DOS_STARTUP_DRIVE STR // Default: empty
24 DOS_UMB BOOL // Default: off
25 DOS_VERSION MLSTR // Default: DCJSS02.EXE,3,40,255
// DFIA0MOD.SYS,3,40,255
// DXMA0MOD.SYS,3,40,255
// IBMCACHE.COM,3,40,255
// IBMCACHE.SYS,3,40,255
// ISAM.EXE,3,40,255
// ISAM2.EXE,3,40,255
// ISQL.EXE,3,40,255
// NET3.COM,3,40,255
// EXCEL.EXE,10,10,4
// PSCPG.COM,3,40,255
// SAF.EXE,3,40,255
// WIN200.BIN,10,10,4
26 DPMI_DOS_API STR // Valid settings: AUTO (default)
// ENABLED
// DISABLED
27 DPMI_MEMORY_LIMIT INT // Limits: 0 to 512, default 3
28 EMS_FRAME_LOCATION STR // Valid settings: AUTO (default)
// NONE
// C000
// C400
// C800
// CC00
// D000
// D400
// D800
// DC00
// 8000
// 8400
// 8800
// 8C00
// 9000
29 EMS_HIGH_OS_MAP_REGION INT // Limits: 0 to 96, default 32
// NOTE: increments of 16
30 EMS_LOW_OS_MAP_REGION INT // Limits: 0 to 576, default 384
// NOTE: increments of 16
31 EMS_MEMORY_LIMIT INT // Limits: 0 to 32768, default 2048
// NOTE: increments of 16
32 HW_NOSOUND BOOL // Default: off
33 HW_ROM_TO_RAM BOOL // Default: off
34 HW_TIMER BOOL // Default: off
35 IDLE_SECONDS INT // Limits: 0 to 60, default 0
36 IDLE_SENSITIVITY INT // Limits: 1 to 100, default 75
37 KBD_ALTHOME_BYPASS BOOL // Default: off
38 KBD_BUFFER_EXTEND BOOL // Default: on
39 KBD_CTRL_BYPASS STR // Valid settings: NONE (default)
// ALT_ESC
// CTRL_ESC
40 KBD_RATE_LOCK BOOL // Default: off
41 MEM_EXCLUDE_REGIONS STR // Default: empty
42 MEM_INCLUDE_REGIONS STR // Default: empty
43 MOUSE_EXCLUSIVE_ACCESS BOOL // Default: off
44 PRINT_TIMEOUT INT // Limits: 1 to 3600, default 15
45 VIDEO_8514A_XGA_IOTRAP BOOL // Default: on
46 VIDEO_FASTPASTE BOOL // Default: off
47 VIDEO_MODE_RESTRICTION ENUM // Valid settings: NONE (default)
// CGA
// MONO
48 VIDEO_ONDEMAND_MEMORY BOOL // Default: on
49 VIDEO_RETRACE_EMULATION BOOL // Default: on
50 VIDEO_ROM_EMULATION BOOL // Default: on
51 VIDEO_SWITCH_NOTIFICATION BOOL // Default: off
52 VIDEO_WINDOW_REFRESH INT // Limits: 1 to 600, default 1
53 XMS_HANDLES INT // Limits: 0 to 128, default 32
54 XMS_MEMORY_LIMIT INT // Limits: 0 to 16384, default 2048
// NOTE: increments of 4
55 XMS_MINIMUM_HMA INT // Limits: 0 to 63, default 0
56 DOS_BACKGROUND_EXECUTION BOOL // Default: on
57 DPMI_NETWORK_BUFF_SIZE INT // Limits: 1 to 64, default 8
ΓòÉΓòÉΓòÉ 6.33. User Definitions for other Applications ΓòÉΓòÉΓòÉ
REM ---------------------------------------------------------------------------
REM Windows file browser
REM ---------------------------------------------------------------------------
NAME WNBROWSE.EXE
TITLE File Browser
TYPE Windows
ASSOC_FILE WNBROWSE.HLP
DEF_DIR \WNBROWSE
MOUSE_EXCLUSIVE_ACCESS OFF
KBD_CTRL_BYPASS CTRL_ESC
COMMON_SESSION ON
VIDEO_SWITCH_NOTIFICATION ON
KBD_ALTHOME_BYPASS ON
DPMI_MEMORY_LIMIT 5
REM ---------------------------------------------------------------------------
REM WordPerfect 5.1 by WordPerfect
REM ---------------------------------------------------------------------------
NAME WP.EXE
TITLE WordPerfect
TYPE DOS
ASSOC_FILE WP.FIL
DEF_DIR \WP51
MOUSE_EXCLUSIVE_ACCESS OFF
IDLE_SENSITIVITY 88
REM ---------------------------------------------------------------------------
REM PMCAMERA OS/2 screen capture utility
REM ---------------------------------------------------------------------------
NAME PMCAMERA.EXE
TITLE PM Screen Capture
TYPE OS/2
ASSOC_FILE PMCAMERA.HLP
DEF_DIR \PMCAMERA
ΓòÉΓòÉΓòÉ 6.34. Windows Applications Running under OS/2 Version 2.0 ΓòÉΓòÉΓòÉ
We apologize for the picture quality. The original was not available.
ΓòÉΓòÉΓòÉ 6.35. Single Windows Application Running under OS/2 Version 2.0 ΓòÉΓòÉΓòÉ
We apologize for the picture quality. The original was not available.
ΓòÉΓòÉΓòÉ 6.36. Single Windows Application(s) Running "Seamless" on the OS/2 Version 2.0 Desktop ΓòÉΓòÉΓòÉ
We apologize for the picture quality. The original was not available.
ΓòÉΓòÉΓòÉ 6.37. Implementation of "Seamless" WIN-OS/2 VDM in OS/2 Version 2.0 ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ 6.38. Installing Windows Support under OS/2 Version 2.0 ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ 6.39. Defining a Windows Application to OS/2 Version 2.0 ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ 6.40. Migrating the Windows Initialization Files ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ 6.41. Detailed View of the WIN-OS/2 Data Connections ΓòÉΓòÉΓòÉ
We apologize for the picture quality. The original was not available.
ΓòÉΓòÉΓòÉ 6.42. Low Level View of the WIN-OS/2 Printing Data Flow ΓòÉΓòÉΓòÉ
We apologize for the picture quality. The original was not available.
ΓòÉΓòÉΓòÉ 6.43. File Structure of Adobe Type Manager ΓòÉΓòÉΓòÉ
We apologize for the picture quality. The original was not available.
ΓòÉΓòÉΓòÉ 6.44. OS/2 Version 2.0 Clipboard Environment ΓòÉΓòÉΓòÉ
Note that not all data formats shown in this diagram will be supported by the
global clipboard server. This is discussed in detail in Clipboard Support.
ΓòÉΓòÉΓòÉ 6.45. DDE Process between Windows Environments ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ 6.46. DDE Process between Presentation Manager and Windows ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ 6.47. Client/Server Structure for Operating System Extenders ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ 6.48. The Program Page of the Settings Notebook ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ 6.49. The Session Page of the Settings Notebook ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ 6.50. The DOS Settings Dialog of the Settings Notebook ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ 6.51. Setting Up a TSR Program ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ 6.52. The DOS Settings Dialog of the Settings Notebook ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ 6.53. The Program Page of the Settings Notebook for a VMB ΓòÉΓòÉΓòÉ
All that is needed in the Path and file name field is an asterisk.
ΓòÉΓòÉΓòÉ 6.54. DOS Settings - DOS_STARTUP_DRIVE ΓòÉΓòÉΓòÉ
This illustration shows the specification of a DOS diskette image named
DR-DOS50.VMB, located on hard disk.
ΓòÉΓòÉΓòÉ 6.55. VMB from an OS/2 V2.0 Program ΓòÉΓòÉΓòÉ
/*
* BOOTA: A simple program to start a DOS Boot session under OS/2 2.0.
* This program can be run from an OS/2 command prompt and it
* then starts to Boot DOS from the A: drive.
*
* Last Modfied: 04/02/92
*
* Author: Stacey Barnes
* Modified: Jeff Muir
*/
#define INCL_DOSSESMGR
#define INCL_DOSMISC
#include <os2.h>
/* messages used by BOOTA */
PSZ pBootAMsg = "BOOTA: Booting DOS from A: Drive.\r\n";
PSZ pBootSuccess = "Session started.\r\n";
PSZ pBootFailure = "Session could not be started.\r\n";
STARTDATA startd; /* Session start information */
USHORT SessionID, ProcessID; /* Session and Process ID for new session*/
void main(void)
{
USHORT rc;
/* Print header message */
DosPutMessage(1,strlen(pBootAMsg),pBootAMsg);
/* Init fields to Boot from A: drive */
startd.Length = sizeof(STARTDATA);
startd.Related = SSF_RELATED_INDEPENDENT;
startd.FgBg = SSF_FGBG_FORE;
startd.TraceOpt = SSF_TRACEOPT_NONE;
startd.PgmTitle = "Boot A: Drive";
startd.PgmName = NULL;
startd.PgmInputs = NULL;
startd.TermQ = NULL;
startd.Environment = "DOS_STARTUP_DRIVE=A:\0";
startd.InheritOpt = SSF_INHERTOPT_PARENT;
startd.SessionType = SSF_TYPE_VDM;
/* Start the DOS Boot Session */
rc = DosStartSession( &startd, &SessionID, &ProcessID );
/* Print out either Success or Failure message */
if(rc)
DosPutMessage(1,strlen(pBootFailure),pBootFailure);
else
DosPutMessage(1,strlen(pBootSuccess),pBootSuccess);
return;
}
This sample shows how to start a VMB from a DOS diskette by using an OS/2 V2.0
program.
ΓòÉΓòÉΓòÉ 6.56. Personal Communications/3270 for Windows running under OS/2 V2.0 ΓòÉΓòÉΓòÉ
We apologize for the picture quality. The original was not available. In this
picture it is using the Token-Ring LAN gateway and running as a "seamless"
WIN-OS/2 application on the Workplace Shell desktop.
ΓòÉΓòÉΓòÉ 6.57. Memory Map of Extended Memory (HMA, UMA, and EMBs) ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ 6.58. QENV.BAT Batch File ΓòÉΓòÉΓòÉ
@rem QENV.BAT
@rem Purpose : Query DOS environment size
@rem Author : Bernd Westphal
@rem W10390 VDM Lab - VDM Configuration
@echo off
cls
echo Filling free environment space ....
echo.
echo Ignore any messages like "Out of environment space".
echo.
set Dummy1=Dummy.Text.to.fill.the.environment.space
set Dummy2=%Dummy1%
set Dummy3=%Dummy1%
set Dummy4=%Dummy1%
set Dummy5=%Dummy1%
cls
environ.exe
set Dummy1=
set Dummy2=
set Dummy3=
set Dummy4=
set Dummy5=
cls
echo The dummy environment settings have been removed.
ΓòÉΓòÉΓòÉ 6.59. C Source Code for ENVIRON.EXE ΓòÉΓòÉΓòÉ
/*******************************************************\
* Program name: ENVIRON.C *
* Created : 5. May 1990 *
* Revised : *
* Author : Bernd Westphal *
* Purpose : Get DOS environment size for VDM lab *
* Compile : cl environ.c *
* Input param : none *
\*******************************************************/
#include <stdio.h>
#include <string.h>
#include <ctype.h>
void main(argc, argv, envp)
int argc;
char *argv[];
char *envp[];
{
int charcount = 0; /* # of char */
printf("Current environment settings:\n\n");
printf("-----------------------------\n");
while (*envp)
{
printf("%s\n", *envp);
charcount += strlen (*envp) + 1; /* add 1 for the string terminator */
*envp++;
}
printf("-----------------------------\n");
printf("\nTotal environment size is %d bytes.\n\n", charcount);
printf("Press Enter to continue ...\n");
getchar();
}
ΓòÉΓòÉΓòÉ 6.60. INT19.BAS Source Code ΓòÉΓòÉΓòÉ
'*********************************************************
'* Program name: INT19.BAS *
'* Created : 05/05/90 *
'* Revised : *
'* Author : Bernd Westphal *
'* Purpose : Execute INT 19h in an OS/2 *
'* VDM environment. Only the current *
'* should be terminated. *
'* Compiler : IBM BASIC Compiler/2 V1.00 *
'* Compile : BASCOM INT19 /O *
'* Link : LINK INT19; *
'* Input param : none *
'*********************************************************
' Variable definition for Interrupt call
TYPE RegType
ax AS INTEGER
bx AS INTEGER
cx AS INTEGER
dx AS INTEGER
bp AS INTEGER
si AS INTEGER
di AS INTEGER
flags AS INTEGER
END TYPE
DECLARE SUB Interrupt (intnum AS INTEGER, inreg AS RegType, outreg AS RegType)
DIM InRegs AS RegType
DIM OutRegs AS RegType
' *** Program code ***
CLS
COLOR 15
PRINT "OS/2 Virtual DOS Machine + INT 19h"
PRINT STRING$(80, 196);
PRINT
PRINT "Execution of INT 19h under DOS on a 8086 processor"
PRINT "will reboot the system."
PRINT
PRINT "To prevent a system reboot running under OS/2 Version 2.0,"
PRINT "the Virtual DOS Machine Manager terminates the current"
PRINT "VDM if an INT 19h occurs."
PRINT
PRINT "Press Enter to execute the INT 19h interrupt"
PRINT "or press Esc to terminate."
PRINT
PRINT "Your choice: ";
GetChr: kb$ = INPUT$(1)
SELECT CASE kb$
CASE CHR$(27)
CLS
END
CASE CHR$(13)
PRINT "OK, restarting ..."
CALL Int86(&H19, InRegs, OutRegs)
CASE ELSE
GOTO GetChr
END SELECT
This program runs in compiled BASIC only, because the Int86 function call is
not available in interpreted BASIC.
ΓòÉΓòÉΓòÉ 6.61. GRAPHIC.BAS Source Code ΓòÉΓòÉΓòÉ
'*********************************************************
'* Program name: GRAPHIC.BAS *
'* Created : 05/14/90 *
'* Revised : *
'* Author : Bernd Westphal *
'* Purpose : Draw some graphics *
'* for VDM clipboard lab session *
'* Compiler : IBM BASIC Compiler/2 V1.00 *
'* Compile : BASCOM GRAPHIC /O *
'* Link : LINK GRAPHIC; *
'* Input param : none *
'*********************************************************
SCREEN 2 ' select 640 x 200 graphics mode
CLS ' clear the screen
FOR X=1 TO 640 STEP 10
LINE (320,199)-(X,0) ' draw some lines
NEXT
FOR X=1 TO 640 STEP 10
LINE (320,0)-(X,199) ' draw some lines
NEXT
LOCATE 12,31 ' position the cursor
PRINT SPACE$(21) ' print 21 blanks
LOCATE 13,31 ' position the cursor
PRINT " IBM ITSC Boca Raton " ' print some text
LOCATE 14,31 ' position the cursor
PRINT SPACE$(21) ' print 21 blanks
KB$ = INPUT$(1) ' check for keystroke
SYSTEM ' return to DOS
ΓòÉΓòÉΓòÉ 6.62. SOUND.BAS Source Code ΓòÉΓòÉΓòÉ
'*********************************************************
'* Program name: SOUND.BAS *
'* Created : 05/14/90 *
'* Revised : *
'* Author : Bernd Westphal *
'* Purpose : Access the speaker system in a *
'* VDM environment *
'* Only 1 VDM has access to the speaker *
'* Compiler : IBM BASIC Compiler/2 *
'* Compile : BASCOM SOUND /O; *
'* Link : Link SOUND; *
'* Input param : none *
'*********************************************************
CLS ' clear the screen
PLAY ON ' trap background music events
ON PLAY(3) GOSUB PlayMusic ' If there are less than 3 notes
' in the buffer gosub line 1000
PRINT "Press ENTER to end." ' display info, how to end program
'
PLAY "MB" ' background option for PLAY
GOSUB PlayMusic ' start the music
'
kb$ = "" ' keyboard input buffer
WHILE kb$ = "" ' start of loop
LOCATE 3, 1 ' position the cursor
COLOR c ' change color and print some text,
' to show, that music executes
' independent
PRINT "Playing your favorite music ..."
c = c + 1 ' next color
IF c > 15 then c = 1 ' no blinking mode
kb$ = INKEY$ ' get a character if present
WEND ' end of loop
COLOR 7 ' white on black
SYSTEM ' return to DOS
PlayMusic:
PLAY "t180 o2 p2 p8 L8 GGG L2 E- p24 p8 L8 FFF L2 D"
RETURN
ΓòÉΓòÉΓòÉ 7. Tables ΓòÉΓòÉΓòÉ
PIC Initialization Control Words
PIC Operation Control Words
List of Supported Video Configurations
Graphical Applications Programs Support under OS/2 Version 2.0
Driver Letter Assignment
Free Base Memory
Location of AUTOEXEC.BAT and CONFIG.SYS
Type of Expanded Memory
ΓòÉΓòÉΓòÉ 7.1. PIC Initialization Control Words ΓòÉΓòÉΓòÉ
ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
Γöé PIC Initialization Control Words Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé ICW Γöé FIELD Γöé EXPLANATION Γöé SUPPORTED Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé ICW1 Γöé D0 Γöé 1 = ICW4 needed Γöé Supported Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Γöé Γöé 0 = no ICW4 needed Γöé Supported Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Γöé D1 Γöé 1 = single PIC Γöé Ignored Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Γöé Γöé 0 = cascade mode (slaves) Γöé Supported Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Γöé D2 Γöé 1 = call address interval of 4 Γöé Ignored Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Γöé Γöé 0 = call address interval of 8 Γöé Ignored Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Γöé D3 Γöé 1 = level triggered mode Γöé Ignored Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Γöé Γöé 0 = edge triggered mode Γöé Supported Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Γöé D4 Γöé 1 Γöé Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Γöé D5-D7 Γöé A7-A5 of int vector in 8080 mode Γöé Ignored Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé ICW2 Γöé D0-D2 Γöé Γöé Ignored Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Γöé D3-D7 Γöé base int vector number in 8086 mode Γöé Supported Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé ICW3 Γöé Γöé Ignore if slave is not IRQ2 Γöé Γöé
Γöé (Master) Γöé Γöé Γöé Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Γöé D0-D7 Γöé 1 = IRQ has a slave connected Γöé Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Γöé Γöé 0 = IRQ does not have a slave con- Γöé Γöé
Γöé Γöé Γöé nected Γöé Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé ICW3 Γöé Γöé Ignore if slave is not IRQ2 Γöé Γöé
Γöé (Slave) Γöé Γöé Γöé Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Γöé D0-D2 Γöé slave ID Γöé Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Γöé D3-D7 Γöé 0 Γöé Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé ICW4 Γöé D0 Γöé 1 = 8086/8088 mode Γöé Supported Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Γöé Γöé 0 = 8080/8085 mode Γöé Ignored Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé D1 Γöé 1 = auto Γöé Ignored Γöé Γöé
Γöé Γöé EOI Γöé Γöé Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Γöé Γöé 0 = normal EOI Γöé Supported Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Γöé D2-D3 Γöé 0x = non-buffered mode Γöé Supported Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Γöé Γöé 10 = buffered mode/slave Γöé Ignored Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Γöé Γöé 11 = buffered mode/master Γöé Ignored Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Γöé D4 Γöé 1 = special fully nested mode Γöé Ignored Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Γöé Γöé 0 = not special fully nested mode Γöé Supported Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Γöé D5-D7 Γöé 0 Γöé Γöé
ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
ΓòÉΓòÉΓòÉ 7.2. PIC Operation Control Words ΓòÉΓòÉΓòÉ
ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
Γöé PIC Operation Control Words Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé OCW Γöé FIELD Γöé EXPLANATION Γöé SUPPORTED Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé OCW1 Γöé D0-D7 Γöé IMR (interrupt mask register) Γöé Supported Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Γöé Γöé 1 = IRQ masked (disabled) Γöé Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Γöé Γöé 0 = IRQ unmasked (enabled) Γöé Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé OCW2 Γöé D0-D2 Γöé IRQ level to be acted upon Γöé Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Γöé D3-D4 Γöé 0 Γöé Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Γöé D5-D7 Γöé EOI command Γöé Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Γöé Γöé 000 = rotate in auto EOI mode (clear) Γöé Ignored Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Γöé Γöé 001 = non-specific EOI Γöé Supported Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Γöé Γöé 010 = no operand Γöé Supported Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Γöé Γöé 011 = specific EOI Γöé Supported Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Γöé Γöé 100 = rotate in auto EOI mode (set) Γöé Ignored Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Γöé Γöé 101 = rotate on non-specific EOI Γöé Ignored Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Γöé Γöé 110 = set priority command Γöé Ignored Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Γöé Γöé 111 = rotate on specific EOI Γöé Ignored Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé OCW3 Γöé D0-D1 Γöé read register command Γöé Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Γöé Γöé 00 = no action Γöé Supported Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Γöé Γöé 01 = no action Γöé Supported Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Γöé Γöé 10 = read IR register Γöé Supported Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Γöé Γöé 11 = read IS register Γöé Supported Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Γöé D2 Γöé 1 = poll command Γöé Ignored Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Γöé Γöé 0 = no poll command Γöé Supported Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Γöé D3 Γöé 1 Γöé Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Γöé D4 Γöé 0 Γöé Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Γöé D5-D6 Γöé Special mask mode Γöé Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Γöé Γöé 00 = no action Γöé Supported Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Γöé Γöé 01 = no action Γöé Supported Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Γöé Γöé 10 = reset special mask Γöé Ignored Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Γöé Γöé 11 = set special mask Γöé Ignored Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Γöé D7 Γöé 0 Γöé Γöé
ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
ΓòÉΓòÉΓòÉ 7.3. List of Supported Video Configurations ΓòÉΓòÉΓòÉ
ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
Γöé List of Supported Video Configurations Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé EXAMPLE Γöé SIZE Γöé COLOR Γöé ADAPTER Γöé RESOLUTION Γöé MEMORY Γöé COLORS/GRAYS Γöé
Γöé DIS- Γöé (IN.)Γöé Γöé Γöé Γöé Γöé Γöé
Γöé PLAYS Γöé Γöé Γöé Γöé Γöé Γöé Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Mono Γöé - Γöé Mono Γöé Mono Γöé Supported Γöé - Γöé - Γöé
Γöé Γöé Γöé Γöé Γöé as sec- Γöé Γöé Γöé
Γöé Γöé Γöé Γöé Γöé ondary Γöé Γöé Γöé
Γöé Γöé Γöé Γöé Γöé display Γöé Γöé Γöé
Γöé Γöé Γöé Γöé Γöé only Γöé Γöé Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé CGA Γöé - Γöé B&W Γöé CGA Γöé 640x200 Γöé - Γöé - Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé ECD Γöé - Γöé B&W Γöé EGA Γöé 640x350 Γöé 64K Γöé no 4-color Γöé
Γöé Monitor Γöé Γöé Γöé Γöé Γöé Γöé support, uses Γöé
Γöé Γöé Γöé Γöé Γöé Γöé Γöé EGA/Mono Γöé
Γöé Γöé Γöé Γöé Γöé Γöé Γöé driver Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé ECD Γöé - Γöé Color Γöé EGA Γöé 640x350 Γöé 128KB Γöé 16 colors Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé - Γöé - Γöé - Γöé - Γöé 640x350 Γöé 192KB Γöé 16 colors Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé - Γöé - Γöé - Γöé - Γöé 640x350 Γöé 256KB Γöé 16 colors Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Mono Γöé - Γöé B&W Γöé EGA Γöé 640x350 Γöé any Γöé no reverse Γöé
Γöé Γöé Γöé Γöé Γöé Γöé memory Γöé video, blink Γöé
Γöé Γöé Γöé Γöé Γöé Γöé size Γöé or intense Γöé
Γöé Γöé Γöé Γöé Γöé Γöé Γöé support Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé RGB Γöé - Γöé EGA Γöé Color Γöé 640x200 Γöé any Γöé 16 Colors Γöé
Γöé Γöé Γöé Γöé Γöé Γöé memory Γöé Γöé
Γöé Γöé Γöé Γöé Γöé Γöé size Γöé Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé EGA Γöé - Γöé - Γöé EGA Γöé - Γöé - Γöé Not supported Γöé
Γöé Γöé Γöé Γöé w/2xx Γöé Γöé Γöé Γöé
Γöé Γöé Γöé Γöé port Γöé Γöé Γöé Γöé
Γöé Γöé Γöé Γöé config. Γöé Γöé Γöé Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé 8503 Γöé 12 Γöé Mono Γöé VGA Γöé 640x480 Γöé - Γöé 16 Grays Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé 8512 Γöé 14 Γöé Color Γöé VGA Γöé 640x480 Γöé - Γöé 16 Colors Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé 8513 Γöé 12 Γöé Color Γöé VGA Γöé 640x480 Γöé - Γöé 16 Colors Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé 8514 Γöé 16 Γöé Color Γöé VGA Γöé 640x480 Γöé - Γöé 16 Colors Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé 8503 Γöé 12 Γöé Mono Γöé 8514/A Γöé 640x480 Γöé - Γöé 16 and 64 Γöé
Γöé Γöé Γöé Γöé Γöé Γöé Γöé Grays Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé 8512 Γöé 14 Γöé Color Γöé 8514/A Γöé 640x480 Γöé - Γöé 16 and 256 Γöé
Γöé Γöé Γöé Γöé Γöé Γöé Γöé Colors Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé 8513 Γöé 12 Γöé Color Γöé 8514/A Γöé 640x480 Γöé - Γöé 16 and 256 Γöé
Γöé Γöé Γöé Γöé Γöé Γöé Γöé Colors Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé 8514 Γöé 16 Γöé Color Γöé 8514/A Γöé 1024x768 Γöé - Γöé 16 and 256 Γöé
Γöé Γöé Γöé Γöé Γöé Γöé Γöé Colors Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé 8503 Γöé 12 Γöé Mono Γöé XGA Γöé 640x480 Γöé 512KB Γöé 64 Grays Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Γöé Γöé Γöé Γöé Γöé 1MB Γöé 64 Grays Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé 8513 Γöé 12 Γöé Color Γöé XGA Γöé 640x480 Γöé 512KB Γöé 256 Colors Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Γöé Γöé Γöé Γöé Γöé 1MB Γöé 256 Colors Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé 8512 Γöé 14 Γöé Color Γöé XGA Γöé 640x480 Γöé 1MB Γöé 65536 Colors Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé 8515 Γöé 14 Γöé Color Γöé XGA Γöé 640x480 Γöé 512KB Γöé 256 Colors Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Γöé Γöé Γöé Γöé 1024x768 Γöé 512KB Γöé 16 Colors Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Γöé Γöé Γöé Γöé 640x480 Γöé 1MB Γöé 256/65536 Γöé
Γöé Γöé Γöé Γöé Γöé Γöé Γöé Colors Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Γöé Γöé Γöé Γöé 1024x768 Γöé 1MB Γöé 16/256 Colors Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé 8604 Γöé 15 Γöé Mono Γöé XGA Γöé 640x480 Γöé 512KB Γöé 64 Grays Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Γöé Γöé Γöé Γöé 640x480 Γöé 1MB Γöé 64 Grays Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé 8507 Γöé 19 Γöé Mono Γöé XGA Γöé 1024x768 Γöé 512KB Γöé 16 Grays Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Γöé Γöé Γöé Γöé 1024x768 Γöé 1MB Γöé 16/64 Grays Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé 8514 Γöé 16 Γöé Color Γöé XGA Γöé 640x480 Γöé 512KB Γöé 256 Colors Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Γöé Γöé Γöé Γöé 1024x768 Γöé 512KB Γöé 16 Colors Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Γöé Γöé Γöé Γöé 640x480 Γöé 1MB Γöé 256/65536 Γöé
Γöé Γöé Γöé Γöé Γöé Γöé Γöé Colors Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Γöé Γöé Γöé Γöé 1024x768 Γöé 1MB Γöé 16/256 Colors Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé 8514 Γöé - Γöé Color Γöé XGA Γöé 1024x768 Γöé 512KB Γöé 16 Colors Γöé
Γöé Compat- Γöé Γöé Γöé Γöé Γöé Γöé Γöé
Γöé ible Γöé Γöé Γöé Γöé Γöé Γöé Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Γöé Γöé Γöé Γöé 640x480 Γöé 1MB Γöé 65536 Colors Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Γöé Γöé Γöé Γöé 1024x768 Γöé 1MB Γöé 16/256 Colors Γöé
ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
ΓòÉΓòÉΓòÉ 7.4. Graphical Applications Programs Support under OS/2 Version 2.0 ΓòÉΓòÉΓòÉ
ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
Γöé Graphical Applications Programs Support under OS/2 Version 2.0 Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Γöé Γöé Γöé Γöé WINDOWS APPS Γöé Γöé
Γöé Γöé Γöé Γöé Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ Γöé
Γöé Γöé Γöé Γöé Γöé FULL SCREEN (FS)Γöé Γöé DOS APPS Γöé
Γöé Γöé Γöé Γöé Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Γöé Γöé Γöé Γöé MATCHES Γöé USING Γöé Γöé MATCHES Γöé USING Γöé
Γöé Γöé Γöé Γöé Γöé DESKTOP Γöé VGA Γöé Γöé DESKTOP Γöé VGA Γöé
Γöé ΓöéSYSTEM Γöé ΓöéVIO Γöé MODE Γöé MODE ΓöéWIN-OS/2 Γöé MODE Γöé MODE Γöé
ΓöéTYPE OFΓöéDESKTOP ΓöéPM ΓöéOS/2Γö£ΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöñ WINDOW Γö£ΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöñ
ΓöéVIDEO ΓöéMODE ΓöéAPPSΓöéAPPSΓöé A Γöé B Γöé A Γöé B Γöé (Win) Γöé FS ΓöéWIN ΓöéFS ΓöéWINΓöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöñ
Γöé XGA Γöé XGA Γöé R Γöé F Γöé R Γöé F Γöé R Γöé F Γöé N/A Γöé F Γöé X Γöé F ΓöéX Γöé
Γöé Γöé Γöé Γöé Γöé Γöé Γöé Γöé Γöé Γöé Γöé Γöé Γöé Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöñ
Γöé XGA Γöé VGA Γöé R Γöé F Γöé R Γöé PF Γöé R Γöé PF Γöé R Γöé PF Γöé PF'Γöé PFΓöéPF'Γöé
Γöé Γöé Γöé Γöé Γöé Γöé Γöé Γöé Γöé Γöé Γöé Γöé Γöé Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöñ
Γöé VGA Γöé VGA Γöé R Γöé F Γöé R Γöé PF Γöé R Γöé PF Γöé R Γöé PF Γöé PF'Γöé PFΓöéPF'Γöé
Γöé Γöé Γöé Γöé Γöé Γöé Γöé Γöé Γöé Γöé Γöé Γöé Γöé Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöñ
Γöé 8514 Γöé VGA Γöé R Γöé F Γöé R Γöé PF Γöé R Γöé PF Γöé R Γöé PF Γöé PF'Γöé PFΓöéPF'Γöé
Γöé Γöé Γöé Γöé Γöé Γöé Γöé Γöé Γöé Γöé Γöé Γöé Γöé Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöñ
Γöé 8514 Γöé 8514 Γöé R Γöé F Γöé R Γöé F Γöé R Γöé R Γöé N/A Γöé F Γöé X Γöé R ΓöéR Γöé
Γöé Γöé Γöé Γöé Γöé Γöé Γöé Γöé Γöé Γöé Γöé Γöé Γöé Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöñ
Γöé EGA Γöé EGA Γöé R Γöé F Γöé R Γöé PF ΓöéN/AΓöé N/AΓöé N/A Γöé PF Γöé PF'ΓöéN/AΓöéN/AΓöé
Γöé Γöé Γöé Γöé Γöé Γöé Γöé Γöé Γöé Γöé Γöé Γöé Γöé Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöñ
Γöé CGA Γöé CGA Γöé R Γöé F Γöé R Γöé R ΓöéN/AΓöé N/AΓöé N/A Γöé R Γöé R ΓöéN/AΓöéN/AΓöé
Γöé Γöé Γöé Γöé Γöé Γöé Γöé Γöé Γöé Γöé Γöé Γöé Γöé Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöñ
Γöé LEGEND: Γöé
Γöé R Runs Γöé
Γöé PF Runs when PM has control of the screen, or when the Γöé
Γöé application is in a foreground session Γöé
Γöé PF' Runs only when PM has control of the screen Γöé
Γöé F Runs only when the application is in a foreground Γöé
Γöé session Γöé
Γöé X Not supported Γöé
Γöé N/A Not applicable Γöé
Γöé Γöé
ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
Note: Column A indicates the use of a Windows display driver that suppresses
background output. Column B indicates the use of a Windows display driver that
does not suppress background output.
ΓòÉΓòÉΓòÉ 7.5. Driver Letter Assignment ΓòÉΓòÉΓòÉ
ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
Γöé Drive Letter Assignment. This table shows the way drive Γöé
Γöé letter assignments may differ on a mixed FAT and HPFS hard Γöé
Γöé disk when booted under DOS and OS/2 Version 2.0 Γöé Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé PARTITION/TYPE Γöé DRIVE LETTER Γöé DRIVE LETTER Γöé
Γöé Γöé UNDER OS/2 Γöé UNDER DOS Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Primary Partition 1, Γöé none Γöé none Γöé
Γöé Boot Manager Γöé Γöé Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Primary Partition 2, FAT Γöé C: Γöé C: Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Extended Partition, HPFS Γöé D: Γöé none Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Extended Partition, FAT Γöé E: Γöé D: Γöé
ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
ΓòÉΓòÉΓòÉ 7.6. Free Base Memory ΓòÉΓòÉΓòÉ
ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
Γöé Free Base Memory Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé SETTING Γöé VDM DOS Γöé DOS 5.0 Γöé DOS 4.0 Γöé DOS 3.3 Γöé
Γöé Γöé EMULATION Γöé Γöé Γöé Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé DOS low Γöé 610 KB Γöé 566 KB Γöé 588 KB Γöé 545 KB Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé DOS high Γöé 633 KB Γöé 612 KB Γöé - Γöé - Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé With mode Γöé 728 KB Γöé 707 KB Γöé 653 KB Γöé 670 KB Γöé
Γöé restriction Γöé Γöé Γöé Γöé Γöé
Γöé (CGA) Γöé Γöé Γöé Γöé Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé native DOS Γöé - Γöé 564 KB (low) Γöé 545 KB Γöé 562 KB Γöé
Γöé Γöé Γöé Γöé Γöé Γöé
Γöé Γöé Γöé 614 KB (high) Γöé Γöé Γöé
ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
Note: Each configuration has HIMEM, EMS and Mouse drivers loaded. Values are
approximate.
ΓòÉΓòÉΓòÉ 7.7. Location of AUTOEXEC.BAT and CONFIG.SYS ΓòÉΓòÉΓòÉ
ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
Γöé Location of AUTOEXEC.BAT and CONFIG.SYS Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé VDM TYPE Γöé LOCATION Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Virtual Machine Boot from diskette Γöé drive A: Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Virtual Machine Boot from diskette Γöé imbedded in diskette image file on Γöé
Γöé image Γöé the hard disk Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Virtual Machine Boot from DOS boot Γöé DOS boot partition Γöé
Γöé partition Γöé Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé OS/2 V2.0 DOS emulator Γöé root directory of OS/2 boot drive Γöé
ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
ΓòÉΓòÉΓòÉ 7.8. Type of Expanded Memory ΓòÉΓòÉΓòÉ
ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
Γöé Types of Expanded Memory. Memory types utilized by VDMs. Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé ATTRIBUTE Γöé HMA Γöé EMB Γöé UMB Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Is extended memory Γöé X Γöé X Γöé Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Accessible from real mode Γöé X Γöé Γöé X Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Data may be stored Γöé X Γöé X Γöé X Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Code may be executed from real mode Γöé X Γöé Γöé X Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Interrupt handler may be stored Γöé Γöé Γöé X Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Size may be changed after initial Γöé Γöé X Γöé Γöé
Γöé allocation Γöé Γöé Γöé Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Minimum size Γöé 64KB Γöé 1KB Γöé 16 bytes Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Maximum size for one Γöé 64KB Γöé 64MB Γöé 384KB Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Maximum size total Γöé 64KB Γöé 64MB Γöé 384KB Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé Number available Γöé 1 Γöé 255 Γöé 24KB Γöé
ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
ΓòÉΓòÉΓòÉ 8. Special Notices ΓòÉΓòÉΓòÉ
This publication is intended to help customers and system engineers to
understand and utilize the new features in Version 2.0 of OS/2. The information
in this publication is not intended as the specification of any programming
interfaces that are provided by OS/2 Version 2.0. See the PUBLICATIONS section
of the IBM Programming Announcement for OS/2 Version 2.0 for more information
about what publications are considered to be product documentation.
References in this publication to IBM products, programs or services do not
imply that IBM intends to make these available in all countries in which IBM
operates. Any reference to an IBM product, program, or service is not intended
to state or imply that only IBM's product, program, or service may be used. Any
functionally equivalent program that does not infringe any of IBM's
intellectual property rights may be used instead of the IBM product, program or
service.
Information in this book was developed in conjunction with use of the equipment
specified, and is limited in application to those specific hardware and
software products and levels.
IBM may have patents or pending patent applications covering subject matter in
this document. The furnishing of this document does not give you any license
to these patents. You can send license inquiries, in writing, to the IBM
Director of Commercial Relations, IBM Corporation, Purchase, NY 10577.
The information contained in this document has not been submitted to any formal
IBM test and is distributed AS IS. The information about non-IBM ("vendor")
products in this manual has been supplied by the vendor and IBM assumes no
responsibility for its accuracy completeness. The use of this information or
the implementation of any of these techniques is a customer responsibility and
depends on the customer's ability to evaluate and integrate them into the
customer's operational environment. While each item may have been reviewed by
IBM for accuracy in a specific situation, there is no guarantee that the same
or similar results will be obtained elsewhere. Customers attempting to adapt
these techniques to their own environments do so at their own risk.
References in this publication to IBM products, programs or services do not
imply that IBM intends to make these available in all countries in which IBM
operates. Any reference to an IBM product, program, or service is not intended
to state or imply that only IBM's product, program, or service may be used. Any
functionally equivalent program that does not infringe any of IBM's
intellectual property rights may be used instead of the IBM product, program or
service.
This document has not been subjected to any formal review and has not been
checked for technical accuracy. Results may be individually evaluated for
applicability to a particular installation. You may discuss pertinent
information from this document with a customer, and you may abstract pertinent
information for presentation to your customers. However, any code included is
for internal information purposes only and may not be given to customers. If
included code is identified as incidental programming, its use must conform to
the guidelines in the relevant section of the sales manual.
Any performance data contained in this document was obtained in a controlled
environment based on the use of specific data and is presented only to
illustrate techniques and procedures to assist IBM personnel to better
understand IBM products. The results that may be obtained in other operating
environments may vary significantly. Users of this document should verify the
applicable data in their specific environment. No performance data may be
abstracted or reproduced and given to non-IBM personnel without prior written
approval by Business Practices.
Any performance data contained in this document was determined in a controlled
environment, and therefore, the results that may be obtained in other operating
environments may vary significantly. Users of this document should verify the
applicable data for their specific environment.
The following document contains examples of data and reports used in daily
business operations. To illustrate them as completely as possible, the
examples contain the names of individuals, companies, brands, and products.
All of these names are fictitious and any similarity to the names and addresses
used by an actual business enterprise is entirely coincidental.
Reference to PTF numbers that have not been released through the normal
distribution process does not imply general availability. The purpose of
including these reference numbers is to alert IBM customers to specific
information relative to the implementation of the PTF when it becomes available
to each customer according to the normal IBM PTF distribution process.
You can reproduce a page in this document as a transparency, if that page has
the copyright notice on it. The copyright notice must appear on each page
being reproduced.
The following terms, which are denoted by an asterisk (*) in this publication,
are trademarks of the International Business Machines Corporation in the United
States and/or other countries:
AIX
C/2
IBM
Micro Channel
Operating System/2
OS/2
Personal System/2
Presentation Manager
SAA
Systems Application Architecture
Workplace Shell
The following terms, which are denoted by a double asterisk (**) in this
publication, are trademarks of other companies.
Adobe is a trademark of Adobe Systems Inc.
AST is a trademark of AST.
CP/M is a trademark of Digital Research Inc.
CompuServe is a trademark CompuServe Inc.
DR-DOS is a trademark of Digital Research Inc.
Excel is a trademark of Microsoft Corporation.
Helvetica is a trademark of Linotype Company.
HP and Hewlett-Packard are trademarks of Hewlett-Packard Corporation.
Intel is a trademark of Intel Corporation.
LaserJet is a trademark of Hewlett-Packard Corporation.
Lotus and Lotus 1-2-3 are trademarks of Lotus Development Corporation.
Microsoft is a trademark of Microsoft Corporation.
MS-DOS is a registered trademark of Microsoft Corporation.
SPF/2 is a trademark of Command Technology Corporation.
Times New Roman is a trademark of Monotype Corporation Limited.
Windows is a trademark of Microsoft Corporation.
WordPerfect is a trademark of Wordperfect Corporation.
386, 486, SX are trademarks of Intel Corporation.
80286, 80386 and 80486 are trademarks of Intel Corporation.
ΓòÉΓòÉΓòÉ 9. Preface ΓòÉΓòÉΓòÉ
This document provides an understanding of the architecture and function of the
Multiple Virtual DOS Machines (MVDM) component of OS/2 Version 2.0, which
allows concurrent execution of multiple DOS applications, each in its own
virtual DOS machine. Further, this document describes the support for Windows
applications under OS/2 Version 2.0.
This document contains information on the MVDM architecture and components,
including the use of device drivers by DOS applications, and support for
expanded and extended memory. Other MVDM-related topics discussed in this
document include the DOS Settings feature, which allows the user to determine
the way in which a DOS application runs and the resources available to it, and
Virtual Machine Boot, which allows the user to load any version of DOS into a
virtual DOS machine to support the execution of version-dependent DOS
applications.
Support for Windows applications on the OS/2 Version 2.0 platform is another
important topic examined in this document. The document includes a discussion
of Windows device drivers, inter-process communication between Windows, DOS,
and OS/2 applications (including DDE and clipboard capabilities), and
compatibility issues as they relate to Windows applications in the OS/2 Version
2.0 environment.
This document is intended for:
Customer planners and technical support personnel who require an
understanding of DOS and Windows implementation in OS/2 Version 2.0.
IBM and IBM authorized dealer technical support personnel.
Programmers of DOS and Windows applications who wish to ensure compatibility
of their applications with the OS/2 Version 2.0 platform.
The information contained in this document assumes that readers have a general
familiarity with the DOS and Windows environments and the applications which
run in these environments.
The code examples used in this document are available in electronic form via
CompuServe** or through a local IBM Support Bulletin Board System (BBS), as
package RB3731.ZIP. IBM employees may obtain the code examples from the
GG243731 PACKAGE on OS2TOOLS.
The document is organized as follows:
Overview provides a brief introduction to the topics covered in this
document.
This chapter is recommended for all readers of the document.
MVDM Architecture describes the architecture of the Multiple Virtual DOS
Machines component of OS/2 Version 2.0, including information regarding the
creation and management of virtual DOS machines.
This chapter is recommended for those readers who require an understanding of
the way in which OS/2 Version 2.0 manages virtual DOS machine resources and
an understanding of how MVDM implementation differs from the implementation
of the DOS Compatibility Box in previous versions of OS/2.
8086 Emulation discusses 8086 emulation under OS/2 Version 2.0.
This chapter is recommended for those readers who desire an overview of the
8086 emulation capabilities of the Intel 80386 processor, which are exploited
by OS/2 Version 2.0, and who wish to compare the functions this environment
provides to DOS applications with those available to DOS applications under
previous versions of OS/2.
MVDM DOS Emulation describes the way in which DOS emulation is achieved by
the MVDM component, and compares the functions available in a virtual DOS
machine to those available in native DOS 5.0. Considerations for running a
DOS application under OS/2 Version 2.0 versus running it under native DOS are
also discussed.
This chapter is recommended for those readers who wish to compare the VDM
environment under OS/2 Version 2.0 with that of DOS 5.0.
Device Drivers discusses MVDM device drivers. It describes the device
drivers which are supported in a virtual DOS machine under OS/2 Version 2.0
and explains how device drivers are implemented, differentiating between
physical device drivers and virtual device drivers. Virtual DOS machine
interrupt support is also discussed.
This chapter is intended primarily for programmers who plan to write device
drivers for DOS applications that will run under OS/2 Version 2.0 and for
technical support personnel who wish an in-depth understanding of virtual DOS
machine device driver support.
Memory Extender Support describes the support for DOS memory extenders
provided in the MVDM component. This chapter explains expanded and extended
memory support.
This chapter is recommended for those readers who wish to understand the way
in which MVDM supports applications which make use of more than 640KB of
conventional memory.
Installing and Migrating Applications describes installing and migrating DOS
and Windows applications to OS/2 V2.0 It also discusses the use of the
utility for creating a customized migration database.
This chapter is recommended for system administrators responsible for setting
up applications for OS/2 V2.0 users.
Windows Applications describes the implementation of Windows application
support under OS/2 Version 2.0.
This chapter is intended for those readers who wish to run Windows
applications under OS/2 Version 2.0.
DOS Protected Mode Interface describes the implementation of the DOS Protect
Mode Interface, DPMI.
This chapter is intended for those readers who wish to run Windows
applications under OS/2 Version 2.0 and who also need a deeper understanding
of the technical implications of this programming interface.
Running DOS Applications describes the way to define, configure and start DOS
applications under OS/2 Version 2.0.
This chapter is recommended for those readers who wish to run DOS
applications under OS/2 Version 2.0, and who wish to define and configure
their application environment for optimum compatibility and performance.
DOS Settings describes the DOS Settings feature of MVDM. This feature allows
the user to customize parameters which affect how an application runs in a
VDM and the resources available to it.
This chapter is recommended for every reader who plans to run DOS
applications under OS/2 Version 2.0.
Virtual Machine Boot describes the Virtual Machine Boot feature of MVDM,
which allows a specific version of DOS to be started within a virtual DOS
machine, thereby providing full compatibility for those applications which
require version-specific DOS features.
This chapter is recommended for readers who need to run such applications in
a VDM.
The following appendixes are included in this document:
1. Running Personal Communications/3270 Version 2 for Windows explains how to
set up and run Personal Communications/3270 Version 2 for Windows in a
WIN-OS/2 window.
2. Running DOS PC Support/400 in OS/2 V2.0 explains how to set up and run DOS
PC Support/400 in a Virtual Machine Boot session.
3. Running Lotus 1-2-3 in a VDM explains how to set up and run Lotus 1-2-3 in
a virtual DOS machine session with EMS or DPMI support.
4. Memory Extender Architectures provides a brief overview of the
Lotus-Intel-Microsoft (LIM) Expanded Memory Specification (EMS) Version 4.0
and LIMA Extended Memory Specification (XMS) Version 2.0, for those readers
who desire an understanding of these specifications in the context of their
support by MVDM.
5. Multiple Virtual DOS Machines Lab Sessions provides a series of lab
exercises designed to illustrate the new functions and features of the
Multiple Virtual DOS Machines component of OS/2 Version 2.0. The exercises
cover such topics as virtual DOS machine configuration, use of the OS/2
clipboard, virtual DOS machine device drivers, and virtual DOS machine
video mode restrictions.
ΓòÉΓòÉΓòÉ 10. Related Publications ΓòÉΓòÉΓòÉ
The following publications are considered particularly suitable for a more
detailed discussion of the topics covered in this document.
Prerequisite Publications
OS/2 Version 2.0 Installation Guide
OS/2 Version 2.0 Overview Guide
OS/2 Version 2.0 Online Documentation.
Additional Publications
OS/2 V1.2 Standard Edition Internals and Evaluation, GG24-3466
OS/2 V1.3 Volume 1: New Features, GG24-3630
OS/2 V1.3 Volume 2: Print Subsystem, GG24-3631
OS/2 Version 2.0 - Volume 1: Control Program, GG24-3730
OS/2 Version 2.0 - Volume 3: Presentation Manager and Workplace Shell,
GG24-3732
OS/2 Version 2.0 - Volume 4: Application Development, GG24-3774
OS/2 Version 2.0 - Volume 5: Print Subsystem, GG24-3775
OS/2 Version 2.0 Remote Installation and Maintenance, GG24-3780
IBM DOS 5.0, Windows 3.0, Windows Connection 2.0, Personal
Communications/3270 2.0, GG24-3612
Intel 80386 System Software Writer's Guide, ISBN 1-55512-023-7
Virtual Control Program Interface (VCPI) Specification Version 1.0
DOS Protect Mode Interface (DPMI) Specification, Version 0.9
Expanded Memory Specification (EMS), Version 4.0
Extended Memory Specification (XMS), Version 2.0
IBM Personal System Technical Solutions Journal
IBM Personal System Developer Journal
Microsoft Systems Journal
Microsoft Windows Programming Reference
DOS 5.0 User's Guide and Reference
DOS 5.0 Technical Reference.
ΓòÉΓòÉΓòÉ 11. Overview ΓòÉΓòÉΓòÉ
A significant new feature of IBM* OS/2* Version 2.0 is the ability to execute
multiple DOS applications concurrently, with pre-emptive multitasking and full
memory protection for each application. Microsoft** Windows** applications are
also supported in the same way. These capabilities allow the use of OS/2
Version 2.0 as an integration platform for DOS applications, Windows
applications, and OS/2 applications in a seamless, fully functional
environment.
This chapter provides a brief overview of the OS/2 Version 2.0 product and the
Multiple Virtual DOS Machines component which provides support for DOS and
Windows applications. DOS and Windows application support is then described in
more detail in the remainder of the document.
ΓòÉΓòÉΓòÉ 11.1. OS/2 Version 2.0 ΓòÉΓòÉΓòÉ
While this document focuses on Multiple Virtual DOS Machines and the support of
Windows applications under OS/2 Version 2.0, it is useful to briefly review the
highlights of OS/2 Version 2.0.
ΓòÉΓòÉΓòÉ 11.1.1. OS/2 Version 2.0 Overview ΓòÉΓòÉΓòÉ
OS/2 Version 2.0 is an advanced multitasking, single-user operating system for
IBM Personal System/2* computers and other computers equipped with the Intel**
80386**, 80486**, or compatible processors. It exploits a rich set of features
from previous versions of OS/2, such as support for multitasking,
multithreading, dynamic linking, interprocess communication, a graphical user
interface, and the High Performance File System. OS/2 Version 2.0, however,
provides significant enhancements over previous versions of OS/2.
The following new features have been implemented in OS/2 Version 2.0:
Support for the Intel 80386 32-bit microprocessor instruction set.
32-bit memory management.
Enhanced hardware exploitation.
Multiple Virtual DOS Machines.
Support for Microsoft Windows applications.
32-bit programming environment.
Object-code compatibility with previous versions of OS/2, allowing 16-bit
applications written for previous versions to execute under Version 2.0
without modification.
Enhanced Presentation Manager* user shell, which implements the 1991 SAA* CUA
Workplace Environment.
ΓòÉΓòÉΓòÉ 11.1.2. Memory and Task Management ΓòÉΓòÉΓòÉ
The foundation for OS/2 Version 2.0 capabilities is its support for the Intel
80386 microprocessor. This support means that a powerful set of 32-bit features
now becomes available to the operating system and applications, including
enhanced memory management and more sophisticated multitasking.
OS/2 Version 2.0 requires the features of the Intel 80386 or compatible 32-bit
microprocessors, and therefore does not run on computers that use the Intel
80286** processor, or its predecessors. In order to maintain compatibility,
however, OS/2 Version 2.0 supports applications written for previous versions
of OS/2 by providing both a 16-bit as well as a 32-bit application programming
interface, allowing 16-bit applications to execute under OS/2 Version 2.0
without modification. The Intel 80386 can address 4 gigabytes of physical
memory and up to 64 terabytes of virtual memory.
OS/2 Version 2.0 supports execution of the following types of applications:
DOS applications, in full-screen mode or in window-mode on the Presentation
Manager desktop.
Microsoft Windows applications, in windows on the Presentation Manager
desktop.
16-bit OS/2 applications developed for previous versions of OS/2.
32-bit applications developed for OS/2 Version 2.0.
All applications execute as protected mode processes under OS/2 Version 2.0,
and are therefore provided with pre-emptive multitasking and full memory
protection between processes.
Memory management is the way in which the operating system allows applications
to access the system's memory. The operating system must check how much memory
is available to an application, and handle the event when there is no longer
any real memory left to satisfy an application's requests.
In OS/2 Version 2.0, memory management has been enhanced to provide a flat
memory model, which takes advantage of the 32-bit addressing scheme provided by
the Intel 80386 architecture. This means that through memory management, the
system's memory is seen as one large linear address space of 4GB. This 32-bit
programming environment is free from the limitations and inherent complexity of
the segmented memory model used by DOS and previous 16-bit versions of OS/2.
Memory management within applications is greatly simplified, allowing
applications to be developed faster, with better performance due to reduced
memory manipulation overhead. Through the use of the flat memory model,
applications may be more easily ported to or from other operating system
platforms.
Task Management, the management of processes and threads executing in a system,
is greatly simplified and streamlined under OS/2 Version 2.0. This is due
primarily to the fact that support for processes executing in real mode (such
as the DOS Compatibility Box in previous versions of OS/2) is no longer
required, since the execution of DOS applications is supported using virtual
DOS machines which run as protected mode processes under OS/2 Version 2.0.
Interrupt handling under OS/2 Version 2.0 is simplified by removal of the need
to handle real mode software interrupts. Interrupts issued by DOS and Windows
applications are trapped by a virtual programmable interrupt controller (VPIC)
which translates the interrupts to the appropriate device access commands for
the protected mode environment. The virtual programmable interrupt controller
is described in Device Drivers.
ΓòÉΓòÉΓòÉ 11.1.3. User Interface ΓòÉΓòÉΓòÉ
OS/2 Version 2.0 also provides an enhanced user shell, known as the Workplace
Shell*, through enhancements to Presentation Manager. The Workplace Shell is
object-based and implements the 1991 SAA CUA Workplace Environment. This shell
is more intuitive than the Presentation Manager shell implemented in previous
versions of OS/2, and allows users to become familiar with the system more
quickly.
In the Workplace Shell, system resources, such as files and printers, are
regarded as objects, and represented by graphical icons on the screen. Users
may manipulate objects (open them for editing, copy them, and print them, for
example) by direct manipulation of the icons. For example, a file is copied
from one location to another by pointing to it with the mouse, dragging the
object's icon to the required destination, and dropping the icon by releasing
the mouse button. This is known as drag and drop manipulation.
Presentation Manager and the Workplace Shell are described in more detail in
OS/2 Version 2.0 - Volume 3: Presentation Manager and Workplace Shell.
ΓòÉΓòÉΓòÉ 11.2. Multiple Virtual DOS Machines ΓòÉΓòÉΓòÉ
OS/2 Version 2.0 provides the user with the ability to run multiple concurrent
DOS applications, and to multitask these applications with OS/2 applications.
In previous versions of OS/2, support for DOS applications was limited to a
single DOS session, known as the DOS Compatibility Box, in which the amount of
memory available to the DOS application was restricted. Applications running
in the DOS Compatibility Box could operate in full-screen mode only, and were
suspended when switched to the background.
Support for DOS applications has been completely redesigned in OS/2 Version
2.0, which now provides for the execution and management of multiple concurrent
DOS applications, where each application is executed as a single-threaded,
protected mode OS/2 program. This capability is provided by a component of
OS/2 Version 2.0 known as Multiple Virtual DOS Machines (MVDM).
MVDM introduces powerful DOS application support to OS/2 by exploiting the
virtual 8086 (V86) mode of the Intel 80386 processor. This mode of operation
allows the emulation of an Intel 8086 processor and associated hardware devices
within a protected mode 80386 task. OS/2 Version 2.0 uses the virtual 8086
mode to allow the creation of multiple instances of independent virtual DOS
machines. Through this technique, a virtual interface is provided to each
virtual DOS machine, giving the impression that the application running in that
machine owns all the required resources, both hardware and software.
Each virtual DOS machine runs as a protected mode process, in a manner similar
to an OS/2 application. The use of protected mode allows pre-emptive
multitasking of DOS applications and provides a protected system environment in
which DOS applications can execute. This means that system memory and all
other applications (both DOS and OS/2), are protected from ill-behaved
applications, and the user can terminate a DOS application which is "hung". An
errant DOS application can affect only its own virtual DOS machine; other
applications in the system will not be affected.
Figure "Concurrent DOS Applications under the Workplace Shell"
Each virtual DOS machine has a great deal more available memory than did the
DOS Compatibility Box implemented in previous versions of OS/2. Depending on
the use of DOS device drivers and TSR programs, it is possible to have as much
as 630KB of available memory for application execution. In addition, OS/2
Version 2.0 supports the use of the Lotus**-Intel-Microsoft (LIM) Expanded
Memory Specification (EMS) and the Lotus-Intel-Microsoft-AST** (LIMA) Extended
Memory Specification (XMS) to provide additional memory for those DOS
applications which are capable of using such memory extenders. OS/2 Version
2.0 maps this expanded or extended memory into the system's linear memory
address space, and manages it in the same manner as any other memory.
Each virtual DOS machine may run either in full-screen mode or within a
Presentation Manager window. A window containing a DOS application may be sized
and manipulated in the same manner as any other Presentation Manager window,
and other Presentation Manager desktop features are readily available such as
the ability to cut/copy/paste information between applications using the
clipboard, or the ability to change fonts.
From the user's perspective, DOS applications behave exactly like VIO
applications. DOS applications have the following characteristics:
They may run in either full-screen mode or in window-mode.
They can run in the background if doing text screen output.
Windowed DOS applications have all the same system menu controls as do OS/2
windowed applications, including font adjustment and clipboard functions such
as mark, copy and paste.
Furthermore, DOS applications under OS/2 Version 2.0 have advantages over VIO
applications:
They may be switched between windowed and full-screen while running.
A full-screen graphics-mode DOS application may be switched into a window and
the graphics bitmap will be rendered in the window. This allows the user to
copy graphics to the Presentation Manager clipboard and gives the viewer more
flexibility when running multiple applications.
For single-plane graphics modes (CGA, and VGA 320 x 200), DOS graphics
applications will execute in a window and continue to update while in the
background.
The sole restriction for DOS applications running in a virtual DOS machine when
compared with VIO applications is that DOS applications in virtual DOS machines
cannot be used in process subtrees. That is, VDMs cannot be run as child
processes of either an OS/2 session or another VDM session.
There are some DOS applications and products that cannot be supported by DOS
emulation, due to the nature of the emulation code and the multitasking and
protection demands of OS/2 Version 2.0. Unsupported products/functions
include:
DOS applications which have internal DOS structure dependencies, such as
Windows 1.0x and MS/PC Net.
DOS applications which do not work in a multitasking environment, such as
Norton Disk Utilities**, DOS block device drivers, and Fastback**.
DOS network drivers, because DOS emulation uses an implementation different
from DOS to control its I/O. However, DOS applications running in VDMs may
access network services through the normal OS/2 network driver.
Some of these applications may be run under OS/2 Version 2.0 by booting a
specific version of DOS in a virtual DOS machine, using the Virtual Machine
Boot feature of MVDM. This feature is described in detail in Virtual Machine
Boot.
Application compatibility in the virtual DOS machine is also enhanced over
previous versions of OS/2. A virtual DOS machine can be used to execute
DOS-based communications applications and other applications which address
hardware I/O devices, through the use of virtual device drivers, which map
device driver calls from DOS applications to the appropriate physical device
driver within the operating system. Applications using hardware devices which
do not have to be shared with DOS applications in the same system may access
these devices using the standard DOS device drivers, without the need for a
virtual device driver. Certain restrictions still apply with respect to
communications line speed and time-critical interrupt handling.
A powerful new feature called DOS Settings allows an individual to easily
tailor, via Presentation Manager windows, the resources, such as video and
memory, available to an application running in a virtual DOS machine, and thus
optimize the way in which a DOS application runs.
ΓòÉΓòÉΓòÉ 11.2.1. MVDM Architecture ΓòÉΓòÉΓòÉ
MVDM is designed to exploit the virtual 8086 (V86) mode of the 80386 processor,
which allows operating systems such as OS/2 Version 2.0 to execute multiple DOS
applications within the 80386 protected mode environment. Under OS/2 Version
2.0, each DOS application executes in a virtual DOS machine (VDM), which runs
as a single-threaded protected mode process. The operating system scheduler
controls task switching of VDMs in the same way as it does OS/2 application
processes.
The MVDM kernel controls the state and operation of concurrent VDMs, and is
composed of the following four major components as shown in Figure "MVDM
Architecture".
1. The Virtual DOS Machine Manager (VDMM) contains the mechanism to start and
interact with DOS applications. It creates, initializes, and terminates
VDMs. The VDMM manages system resources such as memory, timers,
semaphores, and files for all VDMs active in the system. The VDMM is
responsible for loading and initializing all virtual device drivers, in
conjunction with the Virtual Device Driver Manager. The VDMM is described
in more detail in MVDM Architecture.
2. 8086 Emulation manages communication between 8086 instruction streams and
virtual device drivers. This emulation performs 8086 instruction decoding,
controls the 80386 processor's I/O Privilege Map for each VDM, manages the
reflection of software interrupts for each VDM, routes IN/OUT instruction
traps to the appropriate virtual device driver, and manages various control
structures required by each virtual device driver. 8086 emulation is
described in more detail in 8086 Emulation.
3. DOS Emulation emulates the function and operation of the DOS operating
system on a per-VDM basis. Each VDM emulates an entirely independent
instance of DOS. DOS services are emulated within the MVDM kernel, or by
invoking protected-mode services provided by the OS/2 kernel. For example,
most DOS file I/O functions are provided by the OS/2 file system. DOS 5.0
compatibility is provided. DOS emulation is described in more detail in
MVDM DOS Emulation.
4. The Virtual Device Driver Manager (VDDM) loads, initializes, and
communicates with virtual device drivers. Virtual device drivers are
required to virtualize the hardware and ROM BIOS, thereby allowing DOS
applications to access hardware devices and BIOS without affecting other
VDMs or other non-V86 mode processes in the system. The VDDM provides
various system services, known as Virtual Device Helper (VDH) services, to
virtual device drivers. The Virtual Device Driver Manager is described in
more detail in Device Drivers.
These four components interact with one another and with the OS/2 Version 2.0
operating system kernel to provide requested services to DOS applications
executing in VDMs.
ΓòÉΓòÉΓòÉ 11.2.2. Virtual Device Drivers ΓòÉΓòÉΓòÉ
In order for multiple DOS applications, each running in its own VDM, to access
physical hardware devices, each VDM must be provided with a set of "virtual
interfaces" to these devices, so that the actions of one application do not
affect the state of the device as perceived by applications in other VDMs.
Figure "MVDM System Structure Overview"
These virtual interfaces are provided by OS/2 Version 2.0 using virtual device
drivers. Virtual device drivers are installable modules responsible for
virtualizing the hardware and ROM BIOS aspects of the DOS environment for
virtual DOS machines. A virtual device driver manages shared access to
hardware I/O devices for multiple VDMs, allowing an application running in a
VDM to act as though it exercised sole control over I/O devices. Virtual
device drivers are implemented whenever possible, allowing the BIOS in the
system to perform its functions without interference from DOS applications.
Virtual device drivers are used to control hardware such as the keyboard,
mouse, and serial and parallel ports.
Virtual device drivers are responsible for the following functions:
Maintaining a virtual hardware state for each virtual DOS machine (VDM)
Preventing a VDM from corrupting the state of another VDM, or the system as a
whole
Supporting fast screen I/O
Supporting fast communications I/O.
The virtual device driver architecture implemented in OS/2 Version 2.0 provides
support for all standard hardware utilized by DOS applications and supports
installable virtualization, so that new hardware may be added and supported by
VDMs without requiring an upgrade to the operating system.
Virtual device drivers obtain and release system resources via the Virtual
Device Helper (VDH) services, provided by the MVDM kernel. A virtual device
driver typically performs I/O through a physical device driver using a direct
call interface. However, a virtual device driver may directly access an I/O
control device. The virtual video device driver performs such direct access
under OS/2 Version 2.0 for performance purposes. A virtual device driver may
also simulate hardware interrupts into one or many VDM processes.
Under OS/2 Version 2.0, a virtual device driver is inherently protected from a
VDM because it is not visible in the VDM address space, although a virtual
device driver must be careful to check all parameters coming in from a VDM to
ensure that it does not damage itself or some other part of the system by
executing an invalid instruction.
ΓòÉΓòÉΓòÉ 11.2.3. Expanded and Extended Memory Support ΓòÉΓòÉΓòÉ
Many popular DOS applications use EMS (expanded) and/or XMS (extended) memory
extenders to gain access to memory in protected mode on the 80286, 80386, or
80486 processors. These extenders allow DOS applications to access memory
above the 1MB real-mode addressing limit, in order to have total code and data
space larger than the available base memory, and to have very large code or
data objects loaded into memory for enhanced function and performance. The
standard configuration of OS/2 Version 2.0 provides both EMS and XMS functions
as part of MVDM.
Under MVDM, EMS and XMS memory allocations are managed as OS/2 pageable virtual
memory in the same way as any other memory allocated under OS/2 Version 2.0,
and not as fixed physical memory as is the case under DOS. As such, the total
expanded/extended memory allocated can exceed the amount of physical memory
installed in the system.
LIM EMS Version 4.0 Support
The LIM (Lotus-Intel-Microsoft) Expanded Memory Specification (EMS) Version 4.0
provides a standard interface for the use of expanded memory with Intel 80x86
computers. The specification allows for up to 32MB of expanded memory, with up
to 255 expanded memory objects. Regions within these objects can be mapped
into the 8086 address space (below 1MB) as required, allowing DOS applications
to access large address spaces.
Under OS/2 Version 2.0, EMS emulation provides the following function:
Implements all the required functions in the LIM 4.0 EMS.
Provides each VDM with a logically separate EMS emulation. Each VDM has its
own set of expanded objects so that features like interprocess communication
work as they would if each VDM were running on a different physical 8086. A
VDM cannot affect the availability of objects in other VDMs or access
expanded memory "owned" by other VDMs.
Provides for remapping of conventional memory (below 640KB) for use by
programs such as Windows 2.0.
Provides configurable limits for how much expanded memory is available for
all VDMs, as well as a limit per VDM. An installed program in the start list
allows the user to override the per-VDM limit, subject to the constraints
imposed by the overall limit.
Supports multiple physical to single logical mappings. Different 8086
addresses can map to the same expanded memory object address. This is
required by programs like Lotus 1-2-3**.
EMS emulation is provided in MVDM by the Virtual Expanded Memory Manager
(VEMM). VEMM is a virtual device driver offering a separate EMS emulation for
each VDM. This is accomplished by placing most EMS control structures for a
VDM in a per-VDM instance data area outside the V86 application's address
space.
Unlike most virtual device drivers, VEMM does not have a corresponding physical
device driver. Rather, VEMM traps software interrupts for EMS services using a
system call and manages the appropriate memory. VEMM depends upon the memory
management capabilities of the OS/2 Version 2.0 operating system kernel.
Allocation, reallocation, or deallocation of EMS memory objects is accomplished
by requesting corresponding services from VDH services.
LIMA XMS Version 2.0 Support
The LIMA Extended Memory Specification (XMS) V2.0 provides a standard interface
for the use of extended memory on Intel 80286, 80386, and 80486 computers. XMS
functions allow for the moving of code and data objects from base memory into
extended memory, and from extended memory to base memory. Two of the best
known programs using XMS functions are print spoolers and virtual disks (RAM
disks).
The XMS specifications manage three distinct regions of memory:
The High Memory Area (HMA) is located immediately above 1MB and is exactly
65520 bytes (64KB - 16 bytes) in size.
The Upper Memory Area (UMA), consisting of Upper Memory Blocks (UMBs), is
located between 640KB and 1MB.
The Extended Memory Blocks (EMBs) are used only for data storage.
Under OS/2 Version 2.0, LIMA XMS emulation provides the following function:
Implements all LIMA V2.0 XMS functions.
Provides each VDM with a separate XMS emulation. Each VDM has its own high
memory area, upper memory area, and extended memory blocks, so that features
like interprocess communication work as they would if each VDM were running
on a different physical 8086 processor. VDMs cannot affect the availability
of objects in other VDMs or access memory "owned" by other VDMs.
Provides configurable limits for how much extended memory is available across
all VDMs, as well as a limit per VDM. An installed program in the start list
can override the per-VDM limit, subject to the constraint given by the
overall limit, and can disable XMS support altogether for a particular VDM if
its installation conflicts with the program being run in the VDM.
The Virtual Extended Memory Manager (VXMS) is a virtual device driver that
provides a separate XMS emulation for each VDM. As with VEMM, this is
accomplished by placing most VXMS control structures for a VDM in a per-VDM
instance data area outside the V86 application's address space. The amount of
memory available to a VDM, the number of handles, and the existence of upper
memory blocks are all configurable parameters which may be altered on a per-VDM
basis.
Like the VEMM virtual device driver, VXMS does not have a corresponding
physical device driver, and utilizes the memory management capabilities of the
operating system kernel. XMS object allocation, reallocation and deallocation
are accomplished by requesting corresponding services from the memory manager.
ΓòÉΓòÉΓòÉ 11.2.4. DOS Settings ΓòÉΓòÉΓòÉ
MVDM provides the user with the ability to customize the operation of DOS
applications via a feature called DOS Settings. This feature allows the user to
control special properties which affect the behavior of DOS applications
running in a VDM.
The DOS Settings feature further enhances the DOS compatibility of a VDM
because it allows a user to configure the VDM for DOS applications which might
otherwise not work well (or not work at all) with the default settings for a
VDM. The DOS Settings feature also gives the user more control over the
consumption of system resources by a DOS application. Help is provided for each
setting to assist users in tuning their applications' operation.
DOS sessions have many more customizable properties than OS/2 sessions. MVDM
provides a common mechanism that supports both a standard complement of
settings, and allows virtual device drivers to register custom settings. The
standard settings are a subset of the configuration settings available in the
CONFIG.SYS file, plus some additional settings required for MVDM. The primary
reason for the existence of the option to alter these settings is that DOS
applications are typically not careful about consuming system resources, such
as memory and processor time. Hence, MVDM itself must provide a flexible
environment for these applications in order to preserve the integrity and
performance of the system as a whole.
DOS settings are managed on a per-VDM basis and are accessed through
Presentation Manager windows. The dialog boxes presented allow the user to
change a setting while the VDM is running. Only those settings that can be
changed for that VDM are presented. There are many settings which can be
tuned. One parameter, for example, the Idle Detection Threshold, detects idle
DOS applications and allows the user to configure the system such that
processor time is not wasted by idle DOS applications.
Note that while the DOS Settings feature provides significantly enhanced
control over the behavior and capabilities of a virtual DOS machine, this level
of control is not necessarily obvious to the end user. Most DOS applications
will execute quite satisfactorily with the default VDM settings, and the user
is therefore not required to use the DOS Settings feature. This approach
therefore provides the increased functionality without necessarily increasing
the complexity of user interaction.
ΓòÉΓòÉΓòÉ 11.3. Windows Application Support ΓòÉΓòÉΓòÉ
OS/2 Version 2.0 provides the capability for Microsoft Windows applications to
run under OS/2 Version 2.0. This support allows applications written for
Windows 3.0 and previous versions of Windows (except V1.x) to coexist with OS/2
and DOS applications under OS/2 Version 2.0.
Each Windows application executes in a virtual DOS machine, and is thus a
protected mode process. As such, Windows applications are subject to the same
application protection facilities provided to other protected mode processes
under OS/2 Version 2.0. Windows applications are protected from other Windows
applications and from DOS and OS/2 applications executing in the system. This
is in contrast to the native Windows 3.0 environment, where limited protection
is provided for Windows 3.0 applications, and none at all for DOS applications
unless Windows is running in enhanced mode.
The execution of Windows applications as protected mode tasks also allows these
applications to take full advantage of the pre-emptive multitasking
capabilities of OS/2 Version 2.0, with full pre-emptive multitasking between
Windows applications, OS/2 applications, and DOS applications. This is again
in contrast to the native Windows 3.0 environment, where pre-emptive
multitasking is available only when Windows 3.0 is running in enhanced mode,
thereby impacting performance and preventing many applications written for
previous versions of Windows from executing. OS/2 Version 2.0 has no such
restriction.
Windows applications running under OS/2 Version 2.0 will run in a mode
equivalent to the real or standard modes of Windows 3.0; the enhanced mode of
Windows 3.0 is not required since the OS/2 Version 2.0 operating system itself
provides equivalent function.
Support for Microsoft Windows applications under OS/2 Version 2.0 is discussed
in more depth in Windows Applications.
ΓòÉΓòÉΓòÉ 11.4. Summary ΓòÉΓòÉΓòÉ
OS/2 Version 2.0 provides significantly enhanced DOS application support
capability over previous versions of OS/2, using a component known as Multiple
Virtual DOS Machines. MVDM offers many significant functions and features,
including:
Ability to run multiple DOS sessions concurrently, with full pre-emptive
multitasking and memory protection
Ability to run DOS applications in Presentation Manager windows
Ability to switch between DOS applications via Presentation Manager
High amount of available free memory for DOS applications (630KB and more)
Expanded (EMS) and extended (XMS) memory emulation support
Clipboard support.
OS/2 Version 2.0 provides DOS 5.0 compatibility within the virtual 8086 mode of
the 80386 processor, and allows execution of multiple concurrent DOS
applications, each operating in its own 1MB virtual address space. This brings
true multiprogramming to the DOS environment under OS/2. A user may run
multiple DOS applications in much the same way as they run multiple OS/2
applications. DOS and OS/2 applications can be started in the same ways:
1. From a desktop group window.
2. From the Drives folder.
3. From a command prompt.
4. From the OS/2 START command.
The DOS environment is more DOS-compatible than the DOS Compatibility Box
implemented under previous versions of OS/2, since OS/2 Version 2.0
encapsulates the entire DOS environment in a virtual machine. This provides
better protection for other processes in the system and for the operating
system environment itself. With MVDM, an errant DOS application can only
"hang" its own virtual DOS machine, which may then be terminated by the user
without affecting other applications in the system.
DOS applications may be run full-screen, windowed, or iconized in the
background. Besides being better protected, providing better compatibility and
more concurrent DOS applications, the OS/2 Version 2.0 MVDM environment leaves
applications with more than 630KB of memory in which to execute.
OS/2 Version 2.0 also provides support for the execution of Microsoft Windows
applications (written for Windows 3.0 and/or previous versions of Windows,
except version 1.0x) to execute under the control of OS/2 Version 2.0. Each
Windows application executes as a separate protected mode task, and is
therefore provided with the same pre-emptive multitasking and memory protection
as other protected mode tasks under OS/2 Version 2.0.
Support for both the Expanded Memory Specification (EMS) and the Extended
Memory Specification (XMS) is provided. DOS asynchronous communications
applications can support communication speeds of up to 9600 baud. Since the
DOS environments are swappable, starting many DOS sessions will not increase
requirements for more physical (real) memory.
The MVDM environment also provides an extendable architecture that allows the
environment to be custom tailored to emulate any DOS environment. The virtual
device driver architecture supports this flexible environment. All of the
low-level DOS support, which in previous versions of OS/2 resided in physical
device drivers, has been moved into virtual device drivers. In virtual 8086
mode, all interrupt processing is done in protected mode; bimodal device
drivers are no longer needed. The new driver architecture provides physical
device drivers for basic device support and virtual device drivers for
supporting virtual devices to the DOS environments. DOS settings allow the
user to tailor the functioning of DOS applications in the VDM environment.
ΓòÉΓòÉΓòÉ 12. MVDM Architecture ΓòÉΓòÉΓòÉ
The Multiple Virtual DOS Machines component of OS/2 Version 2.0 is itself
comprised of a number of subcomponents, which interact with one another and
with the OS/2 Version 2.0 operating system kernel to provide services to DOS
applications running in virtual DOS machines. This chapter describes each
subcomponent of MVDM, and explains the interaction between subcomponents.
ΓòÉΓòÉΓòÉ 12.1. Introduction ΓòÉΓòÉΓòÉ
OS/2 Version 2.0 is designed to fully exploit the advanced features of the
Intel 80386 processor. A major innovation of the 80386 is its support for the
execution of multiple 8086 tasks within the 80386 protected mode environment.
An 8086 task in this environment is called a virtual 8086 (V86) task. Under
OS/2 Version 2.0, V86 tasks are implemented as virtual DOS machines (VDMs), and
each runs as a single-threaded, protected mode process. See also Figure "MVDM
System Structure Overview". The OS/2 scheduler controls task switching for V86
processes in a way similar to the manner in which it controls other OS/2
application processes. When a task switch occurs, the VM bit in EFLAGS
contained in the V86 process's task state segment indicates the type of the
current process. If the VM bit is set, indicating that the process is a VDM,
the processor switches to V86 mode.
In this area, performance has been improved over previous versions of OS/2,
since the processor is never switched to real mode. Switching from protected
mode to real mode takes a long time since all CPU register contents must be
saved and paging must be disabled before DOS registers are loaded. Switching
to real mode is often accomplished by resetting the CPU, which is very time
consuming. The V86 mode of the processor allows the system to run both OS/2 and
DOS applications in protected mode.
Compared to previous versions of OS/2, DOS applications running in VDMs may:
Run full-screen or in a window
Run in a background session and not be suspended
Use the clipboard
- Copy text
- Copy graphics as bitmaps
Run graphics in full-screen mode
Switch between full-screen and windowed mode
Use LIM EMS Version 4.0 expanded memory services
Use LIMA XMS Version 2.0 extended memory services.
Full-screen graphics applications may be switched to windowed mode where the
graphics will be displayed as a bitmap. Switching between modes can be done via
the system icon menu when in windowed mode. If in full-screen mode, the user
must first switch to the Presentation Manager screen group. Selecting Windowed
in the menu of the DOS program icon switches the application to windowed mode.
To facilitate mode switching, the hot-key combination Alt+Home may be used.
While in full-screen mode, the user may copy only the entire contents of the
screen to the clipboard. Switching to windowed mode enables the user to copy
parts of the screen to the clipboard by selecting areas with the mouse.
DOS compatibility is achieved through a combination of hardware and software
which ensure the successful execution of DOS applications. Since DOS
compatibility is something of a "moving target", MVDM has been architected to
provide the maximum possible flexibility. When attempting to ensure the proper
execution of a DOS application, typical variable factors to be considered are
the hardware and ROM BIOS of the machine, as well as DOS and the application
itself.
DOS Operating System
+ Hardware
+ DOS Application
----------------------
= Compatibility
The following DOS functions are supported by virtual DOS machines:
All documented DOS system interfaces
Most direct ROM BIOS interfaces
Memory extenders
- LIM EMS Version 4.0
- LIMA XMS Version 2.0
Direct manipulation of common hardware devices.
VDMs have certain restrictions:
Single tasking only; no child processes
No active background graphics
No DOS block device drivers; such device drivers are not written for a
multitasking environment, and may compromise the integrity of other VDMs, or
of other processes in the system.
No direct manipulation of hard disk data (that is, bypassing, in this case,
the OS/2 file system); this may also compromise the integrity of other
processes in the system.
No DOS network device drivers, due to differences in the internal
implementation of DOS I/O. However, DOS applications running in VDMs may
access LAN resources through the normal OS/2 network drivers, and therefore
no function is lost.
Figure "MVDM System Structure and Control Flow" provides an overview of the
OS/2 Version 2.0 system structure, showing the MVDM kernel and virtual device
drivers in relation to key components of the operating system kernel and
physical device drivers which provide services to MVDM.
Note that virtual device drivers typically access hardware devices through a
physical device driver. Direct communication between virtual device drivers and
the hardware (as shown in Figure "MVDM System Structure and Control Flow") is
used only in exceptional circumstances. One such case is the virtual video
device driver, VVIDEO.SYS, which communicates directly with hardware in order
to achieve the highest possible level of performance.
ΓòÉΓòÉΓòÉ 12.2. Virtual DOS Machine Manager (VDMM) ΓòÉΓòÉΓòÉ
OS/2 Version 2.0 enables the user to start multiple DOS applications in
multiple concurrent VDMs, all of which are controlled by the Virtual DOS
Machine Manager (VDMM).
Figure "MVDM Protected Mode processes"
The VDMM creates a VDM by:
1. Allocating and mapping the required memory
2. Loading and initializing the virtual device drivers required to virtualize
the hardware and ROM BIOS
3. Access to the virtual device helper services and system resources, such as
memory, semaphores, timers, and files, is provided by the VDMM for all
VDMs.
Figure "VDM Exception Handling"
The VDMM is responsible for handling those 8086 instructions which cannot be
executed in V86 mode, such as interrupts. Such instructions cause an exception
to be generated by the 80386 processor; this exception is passed to an
exception handler within the operating system, which checks the VM bit in the
current process's EFLAGs control area. If the VM bit is set, control is passed
to the VDMM. The VDMM therefore runs as a protected mode system level process
at privilege level 0.
ΓòÉΓòÉΓòÉ 12.2.1. VDM Address Space Management ΓòÉΓòÉΓòÉ
At initialization, each VDM has a linear address space of 4MB, because a single
page table is assigned for each VDM. The page table itself is a single 4KB
page, and can hold a maximum of 1024 page table entries. Each of these entries
is a doubleword and points to a page with a size of 4KB, hence the 4MB size of
the initial address space. The size of the address space can be expanded beyond
4MB if required; for instance, an application running in the VDM may request
the allocation of a large amount of expanded memory, in which case the VDMM
will allocate the memory as needed.
Note that when memory is allocated OS/2 V2.0 merely reserves a linear address
range. The range is not backed by physical memory until the memory is
committed. Memory may not actually be committed until a later time, and it may
be committed in portions. Allocation without commitment does not use any
physical memory and therefore does not waste resources.
A typical VDM address space map is shown in Figure "Typical VDM Address Space
Map".
Each VDM task executes in the first megabyte of the linear address space,
thereby allowing the physical addresses used within the DOS applications to be
mapped directly to the process address space of the VDM. DOS system areas such
as the ROM BIOS area and the Interrupt Vector table, are mapped from physical
memory into the VDM's address space by the virtual device driver VBIOS.SYS.
Page 0 contains, for example, the ROM BIOS area, the Interrupt Vector table,
and the DOS communication area. ROM areas used by hardware devices are mapped
by the virtual device drivers into the linear address space of the VDM. The
same applies to other linear memory objects, such as EMS objects and display
memory.
A virtual device driver uses the VDHQueryFreePages() device helper service to
find a region where no memory in the linear address space has been allocated or
mapped. If a free region is found, the VDHReservePages() service is used to
reserve the memory region. Mapping cannot take place where memory has already
been allocated. On the other hand, memory may not be allocated where mappings
already exist. The operating system's memory manager takes care of this. Page
faults are generated if a process attempts to access memory which has
previously been invalidated because it was unmapped, or if the page has been
swapped out to disk.
The 64KB memory area above 1MB (also known as the high memory area) must be
treated in a special way. This is described in further detail in A20 Line
Service (64KB Wraparound) and in High Memory Area (HMA).
ΓòÉΓòÉΓòÉ 12.2.2. VDM Creation ΓòÉΓòÉΓòÉ
A number of tasks are performed when a VDM is initialized. The four main tasks
managed by the Virtual DOS Machine Manager are:
1. Task state segment (TSS) initialization
2. Virtual DOS machine process initialization
3. 8086 Emulation initialization
4. DOS Emulation initialization.
Task State Segment Initialization
The task state segment describes the current machine state, including CPU
register contents, and the current software state of a task, such as file
descriptors and priority information. The following steps are necessary to
initialize the TSS:
Figure "VDM Initialization"
1. The VM bit in EFLAGS is set to 1, indicating that the process is a virtual
DOS machine.
2. The IOPL indicator in EFLAGS is set to 3
3. The instruction pointer is set to the task's entry point
4. The code segment (CS) register is set to the linear base address of the
task's initial code segment
5. An LDT is not used in V86 mode, but one must be initialized since interrupt
or exception routines might use an LDT
6. I/O access rights are defined in the I/O permission map.
VDM Process Initialization
The VDM process initialization is very similar to the creation of a protected
mode session:
1. The Per-Task Data Area (PTDA) is created
2. A process slot and a process ID are allocated
3. The operating system's memory manager provides a 4MB linear address space
4. A 4MB global Page Directory Entry, which references the 4MB linear space,
is created
5. The VDM process is started.
8086 Emulation (V86) Initialization
The 8086 Emulation initialization then proceeds as follows:
1. The 8086 Emulation code is loaded
2. VDM kernel data is allocated in per-VDM memory below 4MB
3. Virtual device driver instance data is allocated in per-VDM memory below
4MB
4. All known VDM creation hooks (registered by VDHInstallUserHook) are invoked
to initialize virtual device drivers on a per-VDM basis
5. The VEMM (expanded memory) virtual device driver (if used) allocates a
block of memory in a mappable window either between 640KB and 1MB or in the
area between 256KB and RMSIZE (as specified in CONFIG.SYS), and maps it
into the VDM address space.
DOS Emulation Initialization
The DOS Emulation initialization then proceeds as follows:
1. VDM-related kernel structures are initialized
2. DOS Emulation kernel (DOSKRNL) is loaded
3. Virtual processor mode is started
4. Standard file handles are opened
5. Virtual device driver and DOS device driver "stubs" are initialized
6. DOS device drivers are initialized
7. DOS shell is loaded and executed.
DOS Emulation initialization and VDM creation are discussed in greater detail
in MVDM DOS Emulation.
Once DOS Emulation is complete, the Virtual DOS Machine Manager then issues the
VDM_CREATE_DONE event handler to install default I/O hooks, page fault hooks,
or INT hooks. Control is then passed to the DOS Emulation kernel to initialize
and start the user application program.
Once the VDM creation process is complete, the name of the DOS program and
other customization parameters are passed to the new VDM. Customization
parameters for a specific DOS application can be specified in the Workplace
Shell folder in which the name of the DOS program is contained. To change these
parameters select the DOS Settings pushbutton.
DOS Settings allow the user to tune the VDM environment in which a DOS
application runs in order to achieve optimal execution of the program.
ΓòÉΓòÉΓòÉ 12.2.3. VDM Termination ΓòÉΓòÉΓòÉ
A VDM is terminated when the DOS application running within it terminates, or
when a virtual device driver terminates the VDM due to some illegal operation.
Termination is carried out in the following way:
1. All registered VDM termination hooks are called
2. The 8086 emulation releases all its per-VDM resources
3. The VDMM releases all its per-VDM resources
4. The VDM is destroyed in a way similar to an OS/2 process.
The criteria for abnormal termination of a VDM by a virtual device driver are
discussed in VDM Termination.
ΓòÉΓòÉΓòÉ 12.3. 8086 Emulation ΓòÉΓòÉΓòÉ
OS/2 Version 2.0 MVDM 8086 Emulation provides "pure" 8086 emulation support for
the V86 mode of the Intel 80386 SX and DX processors. [The Intel 80486 SX and
DX processors also provide a compatible V86 mode, and are therefore supported
by MVDM.] In a native 8086 processor environment, an application can access all
available memory up to 1MB and can execute all 8086 processor instructions when
running as a single task in an unprotected environment. However, virtual DOS
machines run only in protected mode, and an application running in the V86 mode
environment therefore has limited access to system memory and cannot execute
all CPU instructions; only the OS/2 Version 2.0 operating system itself has
full access to memory and the processor.
Each VDM runs as a single V86 mode process, emulating all DOS operating system
functions and providing a compatible DOS environment unaffected by other VDMs
in the system. In the VDM environment, therefore, an application behaves as if
it has complete control over system processor and memory resources. In this
way, full application function is provided while preserving the integrity of
other applications and of the system as a whole.
The 8086 Emulation component provides the following:
Software interrupt reflection support
IOPL sensitive instruction emulation support
I/O port trapping
I/O simulation support
Context hook services
Hook software interrupt virtual device driver service
Change VDM execution flow services.
8086 Emulation is described in more detail in 8086 Emulation.
Note that the 8086 Emulation component does not provide DOS or
hardware-specific emulation. These emulations are provided by the DOS Emulation
component (described in more detail below and in MVDM DOS Emulation) and
virtual device drivers (described in more detail below and in Device Drivers)
respectively.
ΓòÉΓòÉΓòÉ 12.4. DOS Emulation ΓòÉΓòÉΓòÉ
Provision of DOS compatibility requires a combination of hardware, operating
system, and application software support. The MVDM DOS Emulation component of
OS/2 Version 2.0 addresses only the software aspects of providing DOS
compatibility; the VDM Manager, 8086 Emulation and virtual device drivers work
together to provide hardware and ROM BIOS compatibility.
DOS Emulation provides DOS services to DOS applications running in a virtual
DOS machine in such a way as to provide maximum compatibility with the same
services provided to DOS applications running under native DOS 5.0.
DOS Emulation is implemented by running a very small portion of the DOS
Emulation kernel in V86 mode and a much larger portion of code in protected
mode outside the VDM. In OS/2 Version 2.0, physical device drivers are loaded
above 1MB and only the DOS Emulation kernel resides below 1MB; hence, any
user-installed OS/2 device drivers will not affect the amount of application
space available to a DOS application running in a VDM. Similarly, adding LAN
drivers to the OS/2 configuration to support the network server or redirector
functions does not take up DOS application space, even though DOS applications
may make use of these network devices. Virtual device drivers are also loaded
outside the VDM address space, and therefore do not reduce the amount of
memory available to a DOS application.
In this way, the MVDM architecture makes available to DOS applications the
maximum amount of memory. In fact, up to 630KB is free for multiple DOS
sessions; this represents an increase of about 100KB over memory available to
the single DOS session that was available under OS/2 Version 1.3. Note that
this amount may be reduced if DOS device drivers and/or TSR programs are loaded
in a VDM.
DOS Emulation supports all documented DOS interrupts and features. In addition,
some undocumented aspects of these functions (especially INT 21h) are supported
because a large number of significant DOS applications rely upon these
interfaces.
DOS Emulation is described in more detail in MVDM DOS Emulation.
ΓòÉΓòÉΓòÉ 12.5. Virtual Device Drivers ΓòÉΓòÉΓòÉ
Virtual device drivers are installable modules responsible for virtualizing the
hardware and ROM BIOS aspects of the DOS environment for virtual DOS machines.
A virtual device driver manages shared access to hardware I/O devices for
multiple VDMs, allowing an application running in a VDM to act as though it
exercised sole control over I/O devices. See also Figure "MVDM System Structure
Overview".
Virtual device drivers are implemented whenever possible, allowing the BIOS in
the system to perform its functions without interference from DOS applications.
Virtual device drivers are used to control hardware, such as the keyboard,
mouse, and serial and parallel ports.
The virtual device driver architecture implemented in OS/2 Version 2.0 provides
compatible support for all standard hardware utilized by DOS applications and
supports installable virtualization, allowing new hardware to be added in the
field and supported by VDMs without requiring an upgrade to the operating
system.
Virtual device drivers are responsible for the following functions:
Maintaining a virtual hardware state for each virtual DOS machine (VDM)
Preventing a VDM from corrupting the state of another VDM, or the system as a
whole
Supporting fast screen I/O
Supporting fast communications I/O.
Since DOS may be emulated more than once in OS/2 Version 2.0, virtual device
drivers must virtualize the following features to maintain a separate hardware
state for each VDM:
ROM BIOS services
Direct manipulation of ROM BIOS data area
Direct manipulation of video RAM
Direct programming of I/O ports
Direct manipulation of device memory
Hardware interrupts
Software interrupts.
A virtual device driver typically performs I/O through a physical device
driver, using a direct call interface. However, a virtual device driver may
directly access an I/O control device; this technique is used by the virtual
video device driver, VVIDEO.SYS, for performance reasons. A virtual device
driver may simulate hardware interrupts into one or many VDM processes.
Virtual device drivers use a minimal amount of memory. Virtual device drivers
do not have to reserve arrays of data structures for each VDM (as did device
drivers under previous versions of OS/2). They may be made swappable, so that
each device driver does not increase the amount of conventional (or real)
memory space consumed. Conventional memory is used only for code and data that
must be accessible at hardware interrupt time (for example, when calling a
physical device driver).
Under OS/2 Version 2.0, a virtual device driver is inherently protected from a
VDM because it is not visible in the VDM address space, although the device
driver must be careful to check all parameters coming in from a VDM to ensure
that it does not damage itself or some other part of the system by executing an
invalid instruction.
Virtual device drivers obtain and release system resources via the Virtual
Device Helper (VDH) services provided by the MVDM kernel. These helper services
are accessed via a published programming interface so that manufacturers of
hardware devices may develop virtual device drivers for their own devices.
Virtual device drivers are installed using the DEVICE= statement in CONFIG.SYS.
Note that a virtual device is required only if a device will be shared with
other virtual DOS machines. If a particular device is to be used exclusively by
one DOS application, a normal DOS device driver (that is, one that is written
for DOS) may be used, and a virtual device driver is not required.
ΓòÉΓòÉΓòÉ 12.6. VDM Page Faults ΓòÉΓòÉΓòÉ
A page fault exception may occur in a VDM where a particular page in real
memory has been swapped to disk. When a page fault occurs for a linear region
which has been initialized as an alias by a virtual device driver, the
exception is routed to an exception handler, which has been registered
previously by the virtual device driver for the linear address region in which
the page fault occurred. The exception handler may cause the page to be loaded
or may allow the memory reference to default into a temporary data page,
several of which are provided by the MVDM kernel at initialization time.
Exception handlers are registered by virtual device drivers at initialization
time using the VDHInstallFaultHook() helper function. If no exception handler
is registered for the linear region in which the page fault occurred, the page
is mapped to temporary data pages in memory.
The start address and size of each aliased region, and the exception handler
address for each aliased region, is kept in a table, which is set up via the
VDHInstallFaultHook() helper service. When a page fault occurs in the VDM
address space, this table is searched for a matching region, and the exception
handler for that address is called. The page address and the type of fault
which occurred are passed to the exception handler.
ΓòÉΓòÉΓòÉ 12.7. VDM Window Management ΓòÉΓòÉΓòÉ
OS/2 Version 2.0 provides for the ability to run a V86 task in a window. The
PMShield manages windowed VIO sessions input/output and windowed VDM
input/output.
The video VDD (Virtual Device Driver) intercepts all I/O instructions to the
video adapter, and all screen updates will be redirected/mapped to a logical
video buffer (LVB) maintained by the Video VDD. When the Video VDD detects
changes in a VDM's video state, it notifies a new PMShield thread, providing it
with update information for a specified VDM window. This thread is a
high-priority thread that serves the needs of all windowed VDMs.
For keyboard and mouse input, the PMShield must simply transform keystroke and
mouse event messages into calls to the keyboard and mouse VDDs.
ΓòÉΓòÉΓòÉ 12.7.1. Virtual Display Management ΓòÉΓòÉΓòÉ
Figure "Virtual Display Management"
The PMShield is notified by the Video VDD of different changes, which are
prioritized, for example "change in video mode", "change in palette", "change
in LVB", "scroll of LVB", "string output", "change in cursor", "input
notification" when the window scroll has to be adjusted based on the cursor
position, "paste notification".
Having received notification of one of these changes, it is the PMShield's
responsibility to make appropriate changes to the VDM window, usually through
the use of one or more PM Graphics Engine call(s).
When a windowed VDM is found with a dirty page, the PMShield thread is notified
of a LVB change, along with rectangles describing which areas of the VDM's LVB
may be dirty. The PMShield finds the smallest rectangle(s) of change, and
updates the window using appropriate Graphics Engine services.
The PMShield obtains access to the VDM's LVB indirectly, by requesting the
Video VDD to copy some rectangular portion of it into a "shield buffer". The
PMShield compares the "shield buffer" against a "shadow buffer", which contains
the previously displayed contents of the VDM window, to find the smallest areas
of change. The roles of the two buffers are then interchanged in preparation
for the next update, as it is now the "shield buffer", which contains the last
data displayed.
If the VDM changes video modes before the PMShield is able to copy the VDM's
LVB, an error will be returned to the PMShield on the copy request. The
PMShield's action will be to query the new mode and recopy the LVB.
ΓòÉΓòÉΓòÉ 12.7.2. Virtual Keyboard Management ΓòÉΓòÉΓòÉ
Figure "Virtual Keyboard Management"
The PMShield transforms keystroke messages into calls to the Keyboard VDD. No
buffering by the PMShield is necessary, since the Keyboard VDD already
maintains its own virtual keyboard buffer.
The only keystrokes that require special handling by the PMShield are those
that affect shift states.
There are two operations that a VDM can perform on its virtual keyboard:
Change repeat rate
Change shift states.
When a VDM changes the repeat rate, whether it is in the foreground, background
or windowed at that time, the repeat rate is changed for the whole system.
Since the repeat rate is not a per-session attribute under OS/2, the PMShield
need not be involved. The shift state information is per-VDM and is managed by
the Keyboard VDD, in conjunction with the physical keyboard driver.
ΓòÉΓòÉΓòÉ 12.7.3. Virtual Mouse Management ΓòÉΓòÉΓòÉ
Figure "Virtual Mouse Management"
For mouse input, the PMShield will transform mouse event messages into calls to
the Mouse VDD. The conversation will require a mapping of the physical mouse
position reported by Presentation Manager to a corresponding position within
the VDM's screen dimensions.
A VDM can change the state of its virtual pointer in various ways:
Change pointer position
Change pointer shape
Change pointer scaling factors.
These special changes are of no interest to PMShield.
ΓòÉΓòÉΓòÉ 12.8. VDM Interprocess Communication ΓòÉΓòÉΓòÉ
Communication between processes is valuable in a multitasking operating system
to enable concurrent processes to work together. Pipes are one of three forms
within OS/2 of interprocess communication (IPC) and the only form available for
IPC from a DOS application running in a VDM to an OS/2 application.
This chapter describes how to create, manage, and use named pipes for IPC of a
DOS application in a VDM to an OS/2 program. Pipes enable two or more processes
to communicate as if they were reading from and writing to a file.
ΓòÉΓòÉΓòÉ 12.8.1. About Pipes ΓòÉΓòÉΓòÉ
A pipe is a named or unnamed buffer used to pass data between processes. A
process writes to or reads from a pipe as if the pipe were standard input or
standard output. A parent process can use pipes to control the input that a
child process receives and to receive the output that the child process
produces. There are two types of pipes - named and unnamed. The only supported
pipe to be used between a DOS application in a VDM and an OS/2 program is the
named pipe.
ΓòÉΓòÉΓòÉ 12.8.2. Named Pipes ΓòÉΓòÉΓòÉ
Named pipes enable related or unrelated processes on the same computer system
or different systems to communicate with each other. Any process that knows the
name of a pipe can open and use a named pipe. In addition, named pipe data can
be transparently redirected across a network, such as a local area network
(LAN).
Note: The current file system implementation for VDMs does not support named
pipes across the LAN. (This limitation will go away with future
versions of OS/2 V2.0). To use named pipes within a VDM and across the
LAN, you would have to boot a real DOS session (see also Virtual
Machine Boot). You would also have to load the LAN Support Program and
the DOS LAN Requestor within such a VMBOOT session. If you do that,
your network adapter will be used by that DOS session exclusively and
cannot be shared with any other session on this machine.
One process (server process) creates the pipe and connects to one end of it.
Other processes that access the named pipe are called client processes; they
connect to the other end of the pipe. The server and client processes can then
pass data back and forth by reading from and writing to the pipe. The server
process controls access to the named pipe.
The client process can be either local or remote. A local client process is
one that runs on the same computer system as the server process. A remote
client process runs on a different system and communicates with the server
process across a local area network (LAN).
The DOS applications running in different VDMs can only work as client
processes. The OS/2 application for this kind of IPC has to be the server
process. That is because there are no equivalent pipe APIs in DOS to create a
named pipe, etc. there are only the standard I/O commands. This means that the
DOS client process can read and write from and to the pipe, but it cannot
create one. To do this the DOS client has to know the name of the named pipe
to be able to use it like it would use a flat file to open it and process the
I/O calls.
There is an exercise included in the appendixes that demonstrates a VDM IPC and
shows you the sample code (see Lab Session 5: VDM Interprocess Communications
for more information).
ΓòÉΓòÉΓòÉ 12.9. Summary ΓòÉΓòÉΓòÉ
MVDM is composed of four major components:
1. The Virtual DOS Machine Manager is responsible for creating and
initializing VDMs.
2. 8086 Emulation provides an emulation of the 8086 hardware environment,
supporting actions such as direct hardware manipulation and hardware
interrupts.
3. DOS Emulation provides an emulation of the DOS operating system
environment, supporting actions such as software interrupts and INT 21h
services.
4. Virtual device drivers provide virtualization of hardware devices, allowing
these devices to appear to a DOS application as though the application has
direct control over the device. Devices may thus be shared by multiple DOS
applications and/or protected mode (OS/2) applications.
These components operate in conjunction with the hardware and the OS/2 Version
2.0 operating system kernel to provide support for DOS applications under OS/2
Version 2.0.
MVDM allows OS/2 Version 2.0 to exploit the capabilities of the virtual 8086
mode of the 80386 processor. MVDM provides the capability to run multiple
concurrent DOS applications in virtual DOS machines. Since each VDM is a
protected mode task, MVDM provides pre-emptive multitasking and full memory
protection for DOS applications, protecting other applications in the system
and the operating system itself from interference by an ill-behaved
application. Executing VDMs in protected mode (as opposed to real mode) also
improves the performance of DOS applications, since the processor is never
required to switch to real mode.
Each VDM executes in its own 4MB protected mode address space, with the DOS
application having access to the lower 1MB of the linear address space. The
remainder of the space is occupied by the MVDM code, device drivers, and
extended or expanded memory objects. VDMs may run in window or full-screen
mode, and a user can dynamically switch between the two.
All documented DOS system interfaces, most direct ROM BIOS interfaces, and
memory extenders, such as LIM EMS Version 4.0 and LIMA XMS Version 2.0, are
supported by the MVDM architecture. Direct manipulation of common hardware
devices is also supported by MVDM. In addition, certain undocumented but
commonly used INT 21h services are supported. DOS Emulation provides DOS 5.0
compatible support.
ΓòÉΓòÉΓòÉ 13. 8086 Emulation ΓòÉΓòÉΓòÉ
A significant capability of the Intel 80386 and 80486 processor families is
their ability to emulate the Intel 8086 processor. This emulated state is
known as virtual 8086 (V86) mode. The Multiple Virtual DOS Machines component
of OS/2 Version 2.0 makes use of this mode to provide emulation of a native DOS
environment for applications executing in virtual DOS machines. The 8086
processor hardware emulation is provided by the 8086 Emulation component of
MVDM. Other aspects of the DOS environment, such as program loading and
execution and device driver support, are provided by the DOS Emulation
component, which is described in MVDM DOS Emulation, and by virtual device
drivers, described in Device Drivers.
This chapter provides an overview of V86 mode, and describes the operation of
the 8086 Emulation component.
ΓòÉΓòÉΓòÉ 13.1. Virtual 8086 Mode ΓòÉΓòÉΓòÉ
In a native 8086 environment, the processor does not constrain an application
in any way. The application may access all available memory and execute all
processor instructions, since it is running as a single task in an unprotected,
real mode environment. Operating systems and applications written for the 8086
(such as DOS) typically take advantage of this freedom to exercise direct
control over hardware and system resources.
The 80386 processor exhibits its best performance when running in protected
mode. However, in the protected mode environment, applications are restricted
to a subset of the system memory and processor instruction set, and real mode
applications written for the 8086 processor can violate the protection rules
imposed by the processor.
The virtual 8086 mode of the 80386 processor allows an operating system to
integrate existing applications, written for the 8086 processor, into the
protected mode multitasking environment of the 80386, and to execute such
applications concurrently with other 8086 applications and protected mode
applications.
V86 mode tasks execute in the 80386 processor at privilege level 3, and are
compatible with the virtual memory and paging facilities of the 80386. A V86
mode task may execute most 8086 instructions, including those which reference
memory mapped or I/O mapped devices, or which access the 80386 interrupt enable
flag. These instructions may be executed by the 80386 processor directly, or
the 80386 operating system may trap and emulate such instructions.
Certain 8086 instructions may not be executed in V86 mode; these include
instructions which generate interrupts or exceptions, some of which are not
valid in a normal protected mode task. However, such instructions may be valid
for a V86 mode task. For example, an application running in V86 mode may issue
an interrupt 21h operating system call. An 80386 operating system may register
an exception handler to trap and emulate such instructions at a higher
privilege level.
Figure "VDM Exceptions and Interrupt Handling in a V86 Mode Task"
An interrupt or exception in the V86 mode task causes the processor to switch
from V86 mode to protected mode. An exception handler running as a protected
mode task at privilege level 0 is then invoked by the 80386 operating system.
This handler first determines that the task which issued the interrupt or
exception instruction is a valid V86 mode task. It does this by checking the
VM bit in the EFLAGS register. Two possible states are possible:
If this bit is set, the current task is a V86 mode task. The exception
handler then invokes a virtual machine monitor.
The virtual machine monitor locates the instruction which caused the
interrupt or exception, decodes the instruction and, if it is a valid 8086
instruction, simulates its execution by invoking appropriate 80386 operating
system services. If the instruction is not valid (for example, a privileged
80386 instruction), the virtual machine monitor terminates the V86 mode task.
If the bit is not set, the task has issued an illegal instruction, and is
terminated by the virtual machine monitor.
Once the instruction which caused the interrupt or exception has been
processed, the virtual machine monitor transforms the result into the expected
format for the V86 mode task. It then advances the V86 mode task's EIP
(Extended Instruction Pointer) to the next instruction, and issues an IRET
instruction which causes the processor to switch back to V86 mode and continue
execution of the V86 mode task.
The 8086 Emulation component of MVDM is a virtual machine monitor.
ΓòÉΓòÉΓòÉ 13.2. DOS Software Interrupt Handling ΓòÉΓòÉΓòÉ
Upon creation of a VDM, the IOPL field in the EFLAGS register within the VDM
process's task state segment is set to 3. This has two major effects:
It allows the VDM to access the interrupt enable flag (IF), thus permitting
compatibility with DOS applications which temporarily disable interrupts
while performing critical operations.
It means that an interrupt issued from a VDM does not necessarily cause a
general protection exception; certain interrupt handlers may execute at
privilege level 3 within the VDM.
If the VDM process is running with IOPL < 3, every interrupt causes a general
protection exception; in such cases the operating system would need to
virtualize the interrupt at all times, and to emulate all IOPL-sensitive
instructions (CLI, STI, LOCK, PUSHF, POPF, INT n, and IRET). This would result
in increased mode switching (between V86 and protected mode) and higher
interrupt latency, and would therefore reduce performance.
Thus, under OS/2 Version 2.0, a VDM runs with IOPL=3 for maximum performance.
Interrupts are virtualized and, where possible, handled within the V86 mode
task.
ΓòÉΓòÉΓòÉ 13.2.1. Virtualizing Interrupts ΓòÉΓòÉΓòÉ
The behavior of 8086 Emulation in response to an interrupt is dependent upon
the descriptor privilege level (DPL) field for the interrupt handler. This is
shown in Figure "Descriptor Privilege Levels".
When a software interrupt occurs in a DOS application running in a VDM, the
interrupt is vectored to an interrupt handler determined by an entry in the
VDM's Interrupt Vector table. This interrupt handler has its own descriptor
privilege level (DPL). If the DPL is 3, the interrupt handler code is simply
executed, and control returns to the DOS application.
If the DPL of the interrupt handler is less than 3, a general protection
exception is generated by the processor and passed to the OS/2 Version 2.0
kernel. The general protection exception handler then determines that the
exception occurred from a V86 mode task, and invokes 8086 Emulation to simulate
execution of the interrupt handler. Depending upon the type of interrupt, 8086
Emulation may perform the emulation within itself, or call another component of
MVDM to handle the emulation.
ΓòÉΓòÉΓòÉ 13.2.2. Disabling Interrupts ΓòÉΓòÉΓòÉ
Disabling interrupts from within a DOS application running in a VDM may cause
severe problems. If an error or program loop occurs while interrupts are
disabled, the condition cannot be handled correctly and the system may crash.
To prevent a DOS application running in V86 mode from disabling interrupts for
an extended period of time, a hardware timer is provided by the 80386 processor
known as the watchdog timer. Such lengthy disabling may cause unrecoverable
system errors. The watchdog timer is programmable and generates non-maskable
interrupts (NM) after a specified period of time which allow an operating
system to detect an errant 8086 application and terminate it. OS/2 Version 2.0
provides a hardware interrupt manager. This maintains a time counter for every
VDM. All interrupts, except NMI, are checked by this hardware interrupt
manager, which resets the time counter with every occurrence of an interrupt
for the corresponding VDM.
If a counter exceeds a predefined limit (a typical value is 60 milliseconds),
interrupts are automatically re-enabled. The Virtual DOS Machine Manager is
notified of the ill-behaved application program, and will then terminate the
VDM.
ΓòÉΓòÉΓòÉ 13.3. I/O Port Trapping ΓòÉΓòÉΓòÉ
A DOS application running in a VDM may access I/O ports directly using the
normal 8086 I/O instructions (such as, IN and OUT). These instructions are not
considered IOPL-sensitive and do not normally generate a general protection
exception; the operating system checks the I/O privilege map in the VDM's task
state segment to determine whether to allow the instruction to execute or to
generate a general protection exception. This allows DOS applications to
access hardware devices using the normal DOS device drivers from within a VDM.
When access to a device must be shared with other applications, however, a
virtual device driver is required, and the VDM may not directly access the I/O
port. At initialization time, the virtual device driver issues a call to the
VDHSetIOHookState() device helper function, which sets the appropriate bit in
the I/O privilege map.
When a DOS application subsequently issues an instruction for the I/O port:
1. A general protection exception is generated.
2. The operating system's exception handler routes the exception to 8086
Emulation.
3. 8086 emulation then invokes the virtual device driver.
ΓòÉΓòÉΓòÉ 13.4. A20 Line Services (64KB Wraparound) ΓòÉΓòÉΓòÉ
The region from 1MB to 1MB+64KB is known as the A20 wrap area. Due to the
segmented scheme for generating 20-bit physical addresses on an 8088, it is
possible for a DOS program to generate physical addresses in the range from 1MB
to 1MB + 64KB. On an 8088 system, these addresses wrap to the low 64KB of
physical memory.
In the 16-bit version of OS/2, OS/2 V1.x, 80286 physical addresses are 24 bits.
The twenty-first address line of the 80286 is called the A20 line, and its
setting determines whether real-mode programs wrap low physical memory, or
directly access the range from 1MB to 1MB + 64KB. When an 80286 is started, the
A20 line is disabled, causing the 80286 to emulate the 8088 environment. When
the 80286 is switched to protected mode, the A20 line is enabled, since the
protected mode of the 80286 generates 24-bit physical addresses. However, the
A20 wrap area can be addressed in real mode in OS/2 V1.x if the A20 line is
enabled manually. OS/2 V1.x can thus use the memory in the A20 wrap area for
bimodal code (for example, OS/2 V1.x device drivers) by managing the state of
the A20 line. When running a DOS application in real mode, OS/2 V1.x disables
the A20 line to force the 8088 segment wrapping semantics on DOS applications.
When accessing bimodal code in the range from 1MB to 1MB + 64KB in real mode,
the OS/2 V1.x kernel enables the A20 line.
In OS/2 V2.0 however, the area between 1MB and 1MB + 65519 bytes, cannot be
accessed by a DOS program in V86 mode using 20 address lines (that is lines 0
to 19). For example, addressing 1MB + 1 byte from within a DOS application in
V86 mode would access physical memory at address 0; in other words, the memory
addressing would wrap around to access the extra byte of memory. This is known
as wraparound. Under OS/2 Version 2.0, the addressing of memory beyond 1MB
would result in an addressing exception because although address line 20 is
activated, it is not valid for a V86 mode process. This is shown in Figure "A20
Line Service (64KB Wraparound)".
In order to avoid addressing exceptions in OS/2 Version 2.0, the wraparound
feature must be simulated with aliased pages. The 1MB V86 address space
requires a page table with 256 entries (256 x 4KB = 1MB). Sixteen additional
page table entries are used for the 65519 bytes above 1MB. These 16 entries
are identical to the first 16 entries for the 1MB area, thereby mapping the
wraparound area to the address range 0 to 65519.
The wraparound feature requires some additional housekeeping by the OS/2
Version 2.0 kernel. When an aliased page is swapped to disk, both page table
entries must be flagged as not present.
ΓòÉΓòÉΓòÉ 13.5. Summary ΓòÉΓòÉΓòÉ
The 8086 Emulation component makes use of the virtual 8086 mode of the 80386
processor to provide an emulation of the 8086 hardware environment for DOS
applications executing in virtual DOS machines. Application instructions which
cause interrupts or which cannot be executed in V86 mode are trapped by the
OS/2 Version 2.0 operating system kernel and routed to 8086 Emulation, which
may process the instruction within itself or re-route it to the appropriate
component of MVDM.
For maximum performance, not all interrupts are trapped and routed in this
manner. MVDM makes use of the IOPL field in the VDM process's task state
segment, and the Descriptor Privilege Level (DPL) field in the interrupt
handler's code segment, to allow certain interrupts to be processed in V86
mode. Only when the interrupt handler must execute at a higher privilege level
are the interrupts trapped and routed by the operating system to 8086
Emulation. This improves performance by reducing the number of processor
mode-switches required.
8086 Emulation also supports the use of the Intel 8086 64KB wraparound feature,
allowing access to the 64KB of memory immediately above the 1MB address line.
This capability is used by some DOS software such as the LIMA XMS memory
extender, which implements its high memory area (HMA) in this region. More
detailed information regarding HMA can be found in Memory Extender Support.
ΓòÉΓòÉΓòÉ 14. MVDM DOS Emulation ΓòÉΓòÉΓòÉ
MVDM DOS Emulation provides DOS services to applications running in Multiple
Virtual DOS Machines. The environment provided is highly compatible with those
same services that are provided to DOS applications running under native DOS
5.0. It addresses only DOS compatibility aspects; processor and other hardware
aspects of the DOS environment are addressed by the 8086 Emulation component
and virtual device drivers.
This chapter describes the implementation of the DOS Emulation component, and
the DOS software services provided to support DOS applications running in
virtual DOS machines.
ΓòÉΓòÉΓòÉ 14.1. DOS Emulation Overview ΓòÉΓòÉΓòÉ
DOS Emulation is implemented by running a very small portion of the DOS
Emulation kernel in V86 mode and a much larger portion of this code in
protected mode outside the VDM. In OS/2 Version 2.0, physical device drivers
are loaded above 1MB and only the DOS Emulation kernel resides below 1MB. Any
user-installed OS/2 device drivers will not affect the amount of application
space available to a DOS application running in a virtual DOS machine.
Similarly, adding LAN drivers to the OS/2 configuration to support a network
server or redirector does not impact DOS application space, even though DOS
applications may make use of these OS/2 network devices. Virtual device drivers
are also loaded outside the VDM address space, and therefore do not reduce the
amount of memory available to a DOS application.
In this way, the MVDM architecture makes the maximum amount of memory available
to DOS applications. In fact, up to 630KB are free for use by DOS applications;
this represents an increase of approximately 100KB over memory available to the
single DOS session that was available under OS/2 Version 1.3. Note that this
amount may be reduced if DOS device drivers and/or TSR programs are loaded in a
VDM. The following DOS features are implemented by the DOS Emulation:
DOS console device driver
DOS device driver loading/support
DOS program loading and execution
DOS FCB I/O support
DOS memory manager
DOS NLS support
DOS PDB process support
VDM entering and exiting kernel mode support
Special DOS compatibility mechanisms.
DOS Emulation supports all documented DOS interrupts and features. In addition,
some undocumented aspects of these functions (especially INT 21h) are
supported. This support is incorporated in the DOS Emulation component because
a large number of popular DOS applications rely upon these interfaces.
The following list shows the documented DOS system interrupt services which are
implemented by DOS Emulation and which are available to DOS applications
running in VDMs:
INT 20h Program terminate interface
INT 21h System call interface
INT 22h/INT 23h Terminate and Ctrl-Break address interfaces
INT 24h Critical error handler interface
INT 25h/INT 26h Absolute disk read/write interfaces
INT 27h Terminate and stay resident (TSR) interface
INT 28h Idle loop interface
INT 2Fh Print spool interface.
Other DOS compatibility functions are implemented by the 8086 Emulation
component of MVDM, and by virtual device drivers. The functions provided by
these components are explained in 8086 Emulation and in Device Drivers,
respectively.
ΓòÉΓòÉΓòÉ 14.2. DOS Emulation Implementation ΓòÉΓòÉΓòÉ
A primary design goal for MVDM and the DOS Emulation component was to provide a
DOS compatible environment in which a VDM could not negatively affect other
VDMs or OS/2 protected mode processes, while at the same time providing the
greatest amount of free memory for DOS applications. This goal was achieved by
allowing as much of the DOS Emulation code as possible to execute in protected
mode, outside the VDM address space. This provides improved protection, leaves
more memory available for DOS application use, and enhances overall
performance.
ΓòÉΓòÉΓòÉ 14.2.1. Initialization and VDM Creation ΓòÉΓòÉΓòÉ
Initialization of the DOS Emulation component is divided into two stages. The
first occurs during OS/2 system initialization. The second stage occurs during
creation of each virtual DOS machine.
OS/2 Initialization
DOS Emulation is involved in OS/2 system initialization because it requires
access to information contained in CONFIG.SYS. As the OS/2 initialization
procedure processes the CONFIG.SYS file, it records parameters relevant to DOS
Emulation. These parameters include those specified in the FCBS and RMSIZE
statements, and any DEVICE statements which specify DOS device drivers. These
parameters become the default DOS settings for all VDMs.
Note: Virtual device drivers are not loaded or initialized at this stage.
Initialization of DOS settings occurs prior to loading virtual device drivers,
since these default settings may be required by the device drivers during VDM
initialization (creation).
VDM Creation Stage
Upon creation of a VDM, the Virtual DOS Machine Manager calls the creation-time
initialization routines for virtual device drivers and then passes control to
the DOS Emulation kernel. At this point, the V86 memory organization appears as
shown in Figure "V86 Memory Map Prior to DOS Emulation Initialization".
During VDM creation, DOS Emulation performs the following steps:
1. Initialize VDM-Related Kernel Structures
Certain structures in the OS/2 Version 2.0 kernel are initialized in
preparation for processing VDM requests. The System File Table (SFT)
structures, for example, which are used for FCB I/O, are allocated and
initialized.
2. Load DOS Emulation Kernel (DOSKRNL.COM)
The portion of the DOS Emulation kernel which runs in V86 virtual memory is
loaded at the high end of the VDM memory address space.
3. Start Virtual Processor Mode
The protected mode initialization routine returns control to the Virtual
DOS Machine Manager, which then invokes the initialization code within the
V86 mode DOS Emulation kernel. This represents the first transition to V86
mode; at this point, memory is organized as in Figure "V86 Memory Map at
Initial V86 Mode Entry".
4. Open Standard Devices
The initial five file handles (stdin, stdout, stderr, stdaux, and stdprn)
are opened.
5. Initialize Virtual Device Driver DOS Device Driver "stubs"
Some virtual device drivers provide a DOS device driver "stub"; these
stubs are inserted into the V86 address space prior to initialization of
DOS Emulation. As such, this step involves calling the inserted
initialization code and linking the devices into the device chain. Unlike
real DOS device drivers, however, the return from the initialization does
not allow reducing the size of the driver code. See Device Drivers for
further information.
6. Initialize DOS Device Drivers
Each DOS device driver specified in the CONFIG.SYS file is loaded into the
VDM and initialized. Any VDM-specific DOS device drivers passed in the
DosCreateProcess() function call, or configured via the DOS Settings option
DOS Device Drivers, are then loaded and initialized. This is performed one
device driver at a time to allow the device drivers to consume only the
memory that they require or to de-install themselves entirely. As each
device is initialized, it is added to the chain of devices in the VDM.
During initialization, device drivers may issue a limited set of INT 21h
system calls (functions 01h through 0Ch, 25h, 30h, and 35h). This restores
functionality that had been removed from previous versions of OS/2.
Note: The result is undefined when a DOS device driver issues an INT 21h
system call other than those mentioned above. This is consistent and
compatible with DOS. Issuing an unsupported INT 21h system call will crash
the VDM.
After all device drivers have been initialized, the initialization code is
discarded.
7. Load and Execute DOS Shell
The shell specified in the SHELL command in CONFIG.SYS is loaded, the
initialization code in the V86 address space is discarded, and control is
passed to the shell program. The SHELL specified in CONFIG.SYS can be
overridden in the DosCreateProcess() function call. This is a useful
feature if, for example, a software developer wishes to allow different
versions of COMMAND.COM, for such reasons as alternative national language
support.
Upon invocation of the shell program, the VDM's memory map is organized as
shown in Figure "V86 Memory Map after Initialization".
Before passing control, the Program Descriptor Block (PDB) of the shell is
initialized with the command line parameters as specified in CONFIG.SYS. As an
extension to the native DOS environment, an additional string is appended after
these parameters, separated from the command line string by a NULL byte. This
string specifies the drive and directory of the virtual DOS environment after
the shell completes its initialization. This extension provides a default
working drive and directory for real mode applications, as is provided for
protect mode applications using the Presentation Manager.
ΓòÉΓòÉΓòÉ 14.2.2. Requesting System Services ΓòÉΓòÉΓòÉ
As previously mentioned, MVDM isolates some VDM-specific code and places it
into the DOS Emulation kernel in the VDM's address space. This code provides
those DOS services which can be supported in V86 mode, such as memory
management services. Other services which require protected mode execution are
provided by additional code which runs in protected mode.
When the DOS Emulation kernel requires protected mode services, it specifies
the kernel procedure via an index, and executes a processor instruction which
causes a general protection exception. The OS/2 Version 2.0 general protection
exception handler traps the exception and invokes the 8086 Emulation component,
which in turn transfers control to the specified kernel procedure. This is
explained in detail in 8086 Emulation.
ΓòÉΓòÉΓòÉ 14.2.3. System Service Call Behavior ΓòÉΓòÉΓòÉ
DOS system services provided within VDMs are generally compatible with their
implementation under DOS 5.0. Some differences do exist, however, and are
described below.
INT 20h This service forwards the request to the INT 21h function 00h service
in order to abort the application.
INT 21h All INT 21h services provided in DOS 5.0 are also provided in VDMs.
However, the internal behavior and error processing of some functions
may be different. Where such changes are significant, they are listed
here:
Function 00h (ABORT)
If the CS register does not reference the current PDB, the VDM is
terminated. In certain previous DOS versions, the effect of such a call
was undefined.
FCB Functions
Although OS/2 only provides file I/O access externally through file
handles, it supports these handles internally through the System File
Table (SFT). MVDM allows file handles to be bypassed and SFT entries to be
manipulated directly using a special set of reserved SFT entries, in a
manner similar to previous versions of OS/2. However, since multiple VDMs
are supported, these SFT entries are allocated dynamically upon creation
of a VDM
FCB functions may now be called from device drivers during initialization;
this functionality was not available in previous versions of OS/2.
Function 38h (International)
Function 44h (IOCTL)
IOCTL requests which are destined for device drivers within the VDM are
processed internally. IOCTL requests which are destined for OS/2 device
drivers, however, are treated specially by their respective device
drivers. Such requests may contain pointers to data within the VDM. In
these cases, it is the responsibility of the OS/2 device driver to perform
the necessary translation from V86 virtual addresses into addresses that
are meaningful to the device driver.
Function 5Dh (Internal)
- Subfunction 0Ah (Set Extended Error Information)
This subfunction allows the calling program to set the register values
that are returned from a call to function 59h. This provides
functionality that was not present in previous versions of OS/2.
This subfunction allows terminate and stay resident programs (TSRs) to
save and restore extended error information when they are invoked.
Function 66h - Get/Set Code Page
Function 67h - Set Handle Count
This function restricts the maximum number of open device handles to 254,
including the four standard devices.
INT 25h/INT 26h Absolute Disk Read/Write
The read function operates in the same way as in a DOS 5.0 system.
The write function however, is restricted to removable media only,
and reports a hard error on non-removable media.
ΓòÉΓòÉΓòÉ 14.2.4. System Callback Procedures ΓòÉΓòÉΓòÉ
The system callback procedures are "hooks" into DOS (in the case of VDMs, into
the DOS Emulation kernel) which allow application programs to change the
default processing action taken for certain system events. These hooks are
specified in the V86 mode interrupt vector table as trap service routines. By
default, the vectors reference a single IRET instruction if an application does
not register its own hook procedure.
The vectors used to specify the callback routines are:
INT 22h - Terminate Address The DOS Emulation kernel stores the termination
return address at this vector location.
INT 23h - Control-C Exit Address The method used to invoke this callback
procedure works the same way as in a DOS 5.0 system.
INT 24h - Critical Error Handler Hard errors are normally generated from within
the OS/2 kernel. When such an error is detected, the file system
checks to see if the requesting task is a VDM. If so, the error
indication is returned to the protected mode portion of DOS
Emulation, which determines if the INT 24h vector has been changed.
If it has not been changed, the normal OS/2 hard error monitor is
called to display the hard error information and to prompt for a
reply. If it has been changed, the specified critical error handler
is invoked.
INT 28h - Idle Loop The method used to call the INT 28h callback routine is
similar to that used in DOS 5.0, but takes into account the fact that
the DOS session is running in a multitasking environment.
The OS/2 scheduler maintains a flag in the VDM address space which
indicates if another process in the system is ready to run. While in
the idle loop, the DOS Emulation kernel repeatedly examines this
flag. If no other OS/2 tasks are ready, the loop proceeds as normal.
If the flag indicates that other tasks are waiting, DOS Emulation
yields control to the operating system, which dispatches the waiting
task.
In all other respects, callback procedures operate under MVDM in an identical
manner to that experienced under DOS 5.0.
ΓòÉΓòÉΓòÉ 14.2.5. VDM Termination ΓòÉΓòÉΓòÉ
When a VDM is terminated, DOS Emulation closes all handles that have been
assigned to all PDB processes within the VDM. All resources associated with
open FCBs are also closed.
Since the VDM may have been terminated due to an error in a DOS application
within the VDM, no data within the VDM is relied upon when closing resources
and cleaning up. DOS Emulation explicitly closes both the files and the OS/2
devices opened by the VDM.
ΓòÉΓòÉΓòÉ 14.2.6. Standard Devices ΓòÉΓòÉΓòÉ
As in DOS, DOS Emulation includes device drivers for the three "standard"
devices, CON, AUX, and PRN. While DOS packages these device drivers in
IBMBIO.COM (IO.SYS), DOS Emulation links these into the DOS Emulation kernel
(DOSKRNL) to avoid the need for another file.
Unlike DOS, the AUX and PRN drivers do not include support for COM1, COM2,
LPT1, LPT2, and LPT3. These latter devices are supported directly by the OS/2
asynchronous (COM.SYS) and printer (PRINT0n.SYS) device drivers.
This approach allows the CON, AUX, and PRN drivers to behave in a highly
compatible manner. These drivers issue ROM BIOS calls (INT 10, 14, and 17,
respectively) in order to perform their required tasks. At the same time, using
the OS/2 device drivers directly for the numbered I/O devices provides higher
performance than through the ROM BIOS interfaces, and allows a numbered I/O
device to be easily redirected to a remote device on a network, using the
underlying OS/2 mechanisms. Hence there is no INT 17 issued when printing on
the numbered I/O devices (for example, LPT1, LPT2, etc.) as long as there is
only the virtual printer device driver VLPT.SYS installed as the device driver
for LPTn devices. If INT 17 is required, for example by a DOS TSR (Terminate
and Stay Resident) that intercepts INT 17, the LPTDD.SYS device driver must be
installed as well. You can find LPTDD.SYS in the subdirectory \os2\mdos.
Note: Installing LPTDD.SYS will cause printing from a VDM to slow down.
Remember that only PRN redirection is supported. This is achieved by the
virtual printer device driver VLPT.SYS, which routes INT 17 and direct hardware
printing to LPT1, LPT2, or LPT3 using the OS/2 file system. This is explained
in more detail in Device Drivers.
ΓòÉΓòÉΓòÉ 14.3. Maximizing VDM Memory ΓòÉΓòÉΓòÉ
The OS/2 Version 2.0 CONFIG.SYS file specifies the operating system
configuration, and installs device drivers and other memory-resident programs.
The OS/2 AUTOEXEC.BAT file is specific to the functioning of the VDM
environment. More base memory can be made available to programs running in a
VDM by removing unnecessary commands from these files.
ΓòÉΓòÉΓòÉ 14.3.1. CONFIG.SYS ΓòÉΓòÉΓòÉ
Virtual device drivers utilized by VDMs consume very little or no memory below
the 640KB limit. These device drivers reside outside the V86 mode address
space. However, a user may install device drivers that are required by and are
specific to certain applications which will run in a VDM. If the commands to
load these device drivers (or other memory-resident programs) are added to
CONFIG.SYS, these device drivers (or programs) will be loaded into every VDM
when it is created, and will reduce the amount of conventional memory available
to DOS applications in every VDM. To ensure the maximum amount of memory is
available in each VDM, it is recommended that:
DOS device drivers specific to a particular DOS application should be loaded
via the DOS_DEVICE option of DOS Settings. DEVICE= statements for DOS device
drivers should be eliminated from CONFIG.SYS unless the device driver is
required for every VDM.
The number of buffers specified in the Buffers command in CONFIG.SYS should
be minimized. Each buffer consumes about 500 bytes. Be careful to not reduce
this number too much because some programs might not run properly if there
are too few buffers. The default number of buffers is 30; the number should
not be reduced to fewer than 10 or 15 buffers.
If CONFIG.SYS includes the LASTDRIVE command, this should be set to a letter
such as J or K, rather than Z. Each additional drive uses about 100 bytes.
If the CONFIG.SYS file contains an FCBS command, set FCBS to 1.
The order of the DEVICE and DEVICEHIGH commands in CONFIG.SYS is important
since it can affect both the efficient use of memory and the proper operation
of the various programs started from CONFIG.SYS.
The CONFIG.SYS statements and options related to VDM operation, and which can
be selected during installation, are shown below:
Load the DOS Command Interpreter and load it resident into memory
- SHELL=C:\OS2\MDOS\COMMAND.COM C:\OS2\MDOS /P
Where to load DOS in memory
- DOS=HIGH, UMB
Optional: extended keyboard and display features
- DEVICE=C:\OS2\MDOS\ANSI.SYS
Expanded Memory Manager
- DEVICE=C:\OS2\MDOS\VEMM.SYS
Extended Memory Manager
- DEVICE=C:\OS2\MDOS\VXMS.SYS /UMB
Mouse support
- DEVICE=C:\OS2\MDOS\VMOUSE.SYS
DOS graphics support
- DEVICE=C:\OS2\MDOS\Vxxx.SYS
Where xxx depends on video adapter:
- VCGA.SYS (if CGA or EGA w/ 64KB)
- VEGA.SYS (if EGA w/ 128KB)
- VVGA.SYS (if VGA or 8514)
- V8514.SYS (if 8514)
Direct I/O serial communication support
- DEVICE=C:\OS2\MDOS\VCOM.SYS
The following list shows the order in which device drivers should be specified
in CONFIG.SYS:
1. VEMM.SYS
2. Any device drivers that use expanded memory
3. VXMS.SYS
4. Any device drivers that use extended memory
5. Any device drivers that use upper memory blocks.
This is the optimal order in which the CONFIG.SYS file should start device
drivers. Whether these statements are included at all depends on the amount of
memory installed, the hardware configuration, and on the DOS applications to be
run.
ΓòÉΓòÉΓòÉ 14.3.2. AUTOEXEC.BAT ΓòÉΓòÉΓòÉ
AUTOEXEC.BAT is specific to the virtual DOS machine environment and has no
effect on the OS/2 Version 2.0 operating system. The AUTOEXEC.BAT file starts
memory-resident programs, such as network programs, and sets up environment
variables. In addition, the AUTOEXEC.BAT file may also define the command
prompt.
The default AUTOEXEC.BAT file for all VDMs in OS/2 Version 2.0 is shown in
Figure "Default AUTOEXEC.BAT File".
In the above AUTOEXEC.BAT file, the LOADHIGH command loads the APPEND TSR into
the High Memory Area, thus making available more memory to all DOS applications
running in every VDM. This example assumes that the function performed by the
SET COMSPEC command, which is often found in AUTOEXEC.BAT, has been moved to
CONFIG.SYS.
Note: In order to maximize the amount of base memory available to
applications, any unnecessary commands should be removed from AUTOEXEC.BAT.
Commands should only be included in AUTOEXEC.BAT if they are required for every
VDM. Commands which are required only for a specific DOS application to be run
in a VDM should be placed into a batch file. This batch file should be
explicitly entered into the path and file name field of the "parameters field"
in the DOS Settings notebook on the "program page" for that specific
application.
ΓòÉΓòÉΓòÉ 14.4. Command Compatibility ΓòÉΓòÉΓòÉ
For maximum compatibility, OS/2 Version 2.0 now supports commands previously
unique to DOS, including new commands and enhancements recently introduced with
IBM DOS 5.0. Commands new to OS/2 Version 2.0 are:
MEM Display memory availability and contents
FC Intelligent file compare utility
DOSKEY Command-line enhancer
DEBUG Program debugger
UNDELETE Recover erased files
QBASIC Enhanced BASIC Interpreter
UNDELETE runs in both an OS/2 session and in a VDM. The others run in DOS MVDM
mode only.
In addition, several enhancements introduced in DOS 5.0 are also supported:
DIR Several new output formatting options
ATTRIB Now supports hidden and system file attributes
RESTORE Option to list backup diskette's contents
FIND Case-insensitive search option
These command enhancements are available in both MVDM and OS/2 protect mode.
Note: The following DOS 5.0 enhancements are not provided in OS/2 Version
2.0:
UNFORMAT command
Quick FORMAT
A brief summary follows for those unfamiliar with DOS 5.0 enhancements.
ΓòÉΓòÉΓòÉ 14.4.1. MEM ΓòÉΓòÉΓòÉ
MEM displays the amount of used and free memory in the DOS environment. It
lists information about allocated memory areas, free memory areas, and programs
that are currently loaded into memory.
The format of the MEM command is:
mem [/program | /debug | /classify]
where:
/p(rogram) displays the status of programs that are currently loaded into
memory.
/d(ebug) displays the status of currently loaded programs, internal
drivers and other programming information.
/c(lassify) displays the status of programs loaded into conventional memory
and the upper memory area.
MEM only runs in a DOS session.
ΓòÉΓòÉΓòÉ 14.4.2. FC (File Compare) ΓòÉΓòÉΓòÉ
FC compares two files and displays their differences. The format of the FC
command to compare ASCII (text) files is:
FC [/A][/C][/L][/LBn][/N][/T][/W][/n] <file1> <file2>
FC /B [drive1:][path1] <file1> <file2>
where:
/A Displays only first and last lines for each set of differences
/B Performs a binary comparison
/C Disregards the case of letters
/L Compares files as ASCII text
/LBn Sets the maximum consecutive mismatches to "n" lines
/N Displays the line numbers on an ASCII comparison
/T Does not expand tabs to spaces
/W Compresses white space (tabs and spaces) for comparison
/n Specifies the number of consecutive lines that must match after a
mismatch
Unlike the COMP command, FC attempts to resynchronize after a mismatch. It
recognizes inserted or deleted character sequences, then resumes the
comparison.
ΓòÉΓòÉΓòÉ 14.4.3. DOSKEY ΓòÉΓòÉΓòÉ
DOSKEY enhances command line editing, recalls DOS commands, and creates macros.
The format of the DOSKEY command is:
doskey [/reinstall] [/bufsize=size] [/macros] [/history]
[/insert | /overstrike] [macroname=[text]]
where:
/r(einstall) installs a new copy of the DOSKEY program
/b(ufsize)=size size of buffer (in bytes) to store commands and macros
/m(acros) displays list of all macros
/h(istory) displays list of all commands stored in memory
/i(nsert)|/o(verstrike) selects insert or overtype mode
DOSKEY stacks and recalls commands from a LIFO buffer using the up and down
cursor keys. The command line can be intuitively edited via left and right
cursor keys, with insert and non-destructive backspace. DOSKEY provides
similar command line editing to that of an OS/2 prompt with KEYS=ON specified.
ΓòÉΓòÉΓòÉ 14.4.4. DEBUG ΓòÉΓòÉΓòÉ
DEBUG is used to assist in testing and debugging of executable files. The
format of the DEBUG command is:
debug <filename> [parameters]
where <filename> is the file to test.
parameters are any command line parameters to be passed to the program being
debugged, not to DEBUG itself.
DEBUG allows the user to examine memory and registers, assemble and disassemble
programs, set breakpoints, and step through programs one instruction at a time.
Note: DEBUG supports 8086 and 8087 instructions only. It will not assemble or
disassemble 80286/7 or later opcodes, and can only access the low 16 bits of 32
bit registers.
ΓòÉΓòÉΓòÉ 14.4.5. UNDELETE ΓòÉΓòÉΓòÉ
The UNDELETE utility recovers files that have been deleted or erased. When the
DEL or ERASE command is issued from any session type, the file is moved to a
specified hidden directory, along with details of where the file originated.
If no space is available, the oldest files are automatically purged to provide
more space.
The DELDIR environment variable is used to specify the name and maximum size of
the directories where files targeted for deletion are to be stored. Normally
this will be set in CONFIG.SYS, and takes the form:
SET DELDIR = drive:\path, maxsize [;drive:\path, maxsize]
The string is composed of a directory path specifier and maximum size value for
each supported logical drive. These parameters are separated by commas. The
definitions for each drive are separated by semicolons.
The path portion of the string consists of a drive letter and the fully
qualified path of the directory that will be used for storing deleted files.
The maxsize portion of the string defines the maximum size of the storage
directory, in kilobytes.
In order to keep track of deleted files, the system also maintains a control
file in each storage directory.
When UNDELETE is specified and the file is still recoverable, it is restored to
its specified path. If the file already exists, the user is prompted to rename
the file, or to skip the current entry.
Space occupied by recoverable files is included in DIR and CHKDSK output
reports.
The format of the UNDELETE command is :
undelete <filename> [/list | /all] [/s] [/force]
re:
<filename> is the path and name of the file to recover or purge. It may be
wildcarded.
/l(ist) lists deleted files that are available to be recovered without
recovering the files.
/a(ll) recovers all deleted files if they are still present without
prompting for confirmation on each file.
/s include all files in the specified directory and all
subdirectories
/f(orce) removes files so they cannot be recovered.
UNDELETE runs in both protect mode and in a DOS VDM.
ΓòÉΓòÉΓòÉ 14.4.6. DIR ΓòÉΓòÉΓòÉ
DIR lists files and subdirectories: New options on the DIR command are:
/a attribute Lists only those files with the chosen attribute:
a. files not yet backed up
h hidden files
r read-only files
s system files
d directories
attribute may be preceded by a minus sign to select items which do
not have that attribute.
/o sortorder Lists items in the chosen order:
n sorted by name
e sorted by extension
d sorted by date
s sorted by size
g directories grouped before files
sortorder may be preceded by a minus sign to reverse the output
order.
/b Displays "bare" file information (no date or size)
/f Displays fully qualified file and directory names.
/l Displays output in lowercase letters.
/n Displays the listing in "HPFS" style format.
/s Includes all subdirectories in the search
Other enhancements to the DIR command include:
The total byte count of matched files is given
/p (pause) repeats the directory name after each screen is full
/w (wide) distinguishes directory entries from file entries via square
brackets.
ΓòÉΓòÉΓòÉ 14.4.7. ATTRIB ΓòÉΓòÉΓòÉ
ATTRIB now supports manipulation of "hidden" and "system" file attributes.
attrib +s <file> sets the system attribute.
attrib -s <file> clears the system attribute.
attrib +h <file> sets the hidden attribute.
attrib -h <file> clears the hidden attribute.
ATTRIB may also be used to set or clear the "Archive" and "Read-only"
attributes as before.
ΓòÉΓòÉΓòÉ 14.4.8. RESTORE ΓòÉΓòÉΓòÉ
A new parameter "/d" displays a list of files on the backup diskette which
match the file's specified filename, without restoring any files.
ΓòÉΓòÉΓòÉ 14.4.9. FIND ΓòÉΓòÉΓòÉ
A new parameter "/I" will ignore the case of characters when searching for the
string.
ΓòÉΓòÉΓòÉ 14.5. Summary ΓòÉΓòÉΓòÉ
The DOS Emulation component provides an emulation of the DOS operating system
environment, including DOS features and system services, for applications
running in virtual DOS machines. DOS Emulation uses the parameters specified in
CONFIG.SYS and virtual device drivers to create an application-compatible DOS
environment within the VDM address space.
During execution, DOS Emulation receives requests from DOS applications.
Depending upon the type of request, it either processes the request itself or
causes a general protection exception which results in the request being routed
by the operating system kernel to the 8086 Emulation component, which processes
the request at a higher privilege level.
DOS Emulation also allows DOS applications to hook interrupts, in order to
modify the default behavior in response to particular events. This is achieved
by providing a virtual interrupt vector table within the V86 mode address
space, and routing interrupts through this table.
At VDM termination time, DOS Emulation is responsible for closing all files
opened by the VDM, and cleaning up the environment to ensure that no devices
are still held or memory objects allocated after termination.
DOS Emulation also provides support for applications which access the standard
devices CON, AUX, and PRN. These devices are emulated within DOS Emulation
itself, which processes the interrupts for these devices and returns the
results to the DOS application.
ΓòÉΓòÉΓòÉ 15. Device Drivers ΓòÉΓòÉΓòÉ
In order to provide the maximum level of hardware independence for the OS/2
Version 2.0 operating system, device driver are used to communicate with
hardware devices. This concept is not new, and has been implemented in
previous versions of OS/2 and in the DOS operating system. However, the
implementation of device drivers under OS/2 Version 2.0 differ in several
significant ways from that seen in previous versions. This chapter describes
the implementation of device drivers under OS/2 Version 2.0.
ΓòÉΓòÉΓòÉ 15.1. Device Driver Architecture ΓòÉΓòÉΓòÉ
The architecture and structure of a device driver differs considerably,
depending on whether the device driver is physical or virtual.
OS/2 Version 2.0 makes use of two distinct types of device driver to
communicate between the operating system and hardware devices:
Physical device drivers are considered as true device drivers in the sense
that they have a unique and rigid file structure, and interface directly with
the hardware. They operate in protected mode, and are accessed by protected
mode processes and by virtual device drivers.
Virtual device drivers are essentially a dynamic link library conforming to
the EXE32 Load Module format, and generally do not interface directly with
hardware devices. Instead, virtual device drivers are responsible for
presenting a virtual copy of a hardware resource to DOS applications running
in virtual DOS machines, and for coordinating physical access to that
resource. DOS applications typically address hardware devices directly using
interrupts; the virtual device driver allows the VDM environment to appear to
the DOS application as though the application had direct control over the
hardware. Virtual device drivers include a stub which executes in V86 mode
within each VDM, while the main portion of the virtual device driver executes
in protected mode.
The relationship between applications, physical and virtual device drivers, and
hardware devices is shown in Figure "Physical and Virtual Device Drivers under
OS/2 Version 2.0".
ΓòÉΓòÉΓòÉ 15.2. Physical Device Drivers ΓòÉΓòÉΓòÉ
The concept of a device driver is not new to OS/2 Version 2.0; previous
versions of OS/2 and DOS have employed device drivers to communicate with
hardware devices. Under previous versions of OS/2, however, many device
drivers were required to run in both real mode and protected mode in order to
accommodate the requirements of applications running in the DOS Compatibility
Box. This complicated the design of device drivers under previous versions of
OS/2, since they were required to be written in a bi-modal manner. Figure
"Structure of Bi-Modal Device Drivers in OS/2 V1.x" shows the structure of
bi-modal OS/2 device drivers. MVDM removes the need for real mode device
drivers, since DOS applications run in virtual DOS machines, where each VDM is
a protected mode task. Real mode device interrupts issued by DOS applications
are trapped by the MVDM kernel and routed to device drivers which execute in
protected mode. Hence device drivers for OS/2 Version 2.0 need not include real
mode sections, and existing device drivers may be updated to remove the real
mode components.
Physical device drivers communicate directly with hardware devices, and are
installed at system initialization time using DEVICE= statements in CONFIG.SYS,
as shown in Figure "Physical Device Driver Statements in CONFIG.SYS".
The advantage of physical device drivers, as with device drivers in previous
versions of OS/2, is that the operating system itself need not be changed if a
new hardware device or adapter is installed. The corresponding device driver
may be installed with the device, and used by applications which require access
to the device. The major enhancement in Version 2.0 over previous versions of
OS/2 lies in the removal of the real mode component, which simplifies device
driver development and improves performance by avoiding the need for processor
mode switching.
ΓòÉΓòÉΓòÉ 15.3. Virtual Device Drivers ΓòÉΓòÉΓòÉ
As mentioned previously, DOS applications typically address hardware devices
directly using interrupts. This is permissible in a single tasking DOS
environment, since it can be safely assumed that the application has complete
and exclusive control over the hardware. However, in the OS/2 Version 2.0
environment where multiple applications may be executing concurrently in
virtual DOS machines, it is clearly not allowable, since applications could
interfere with one another to the detriment of application and system
integrity.
Multiple DOS applications accessing the same hardware devices from within VDMs
require those hardware devices to be virtualized; virtualization implies
separate simulation of the physical hardware (I/O ports, device memory, and ROM
BIOS) for each virtual DOS machine. This virtualization is accomplished by
installable virtual device drivers, which in turn communicate with physical
device drivers to address hardware devices.
The following virtual device drivers are provided with the OS/2 Version 2.0
operating system:
VDD Description
VBIOS ROM BIOS support (1)
VCMOS CMOS data area + Real Time Clock support (1)
VDMA Direct Memory Access (1)
VDSK Disk, only for INT 13 copy-protection (1)
VFLPY Floppy Disk interface (1)
VKBD Keyboard (1)
VLPT Parallel Port Printer (1)
VNPX Numeric Coprocessor Extension (80387) (1)
VPIC Programmable Interrupt Controller (1)
VTIMER Timer (1)
VCOM Asynchronous communication ports
VDPMI DOS Protected Mode Interface
VDPX DOS Protected Mode Extender
VXMS Extended Memory Support
VEMM Expanded Memory Support
VWIN WIN-OS/2 windows
VMOUSE Mouse
VCDROM CD-ROM support
VVIDEO Video (VCGA, VEGA, VMONO, VVGA, VXGA, V8514, VSVGA).
These virtual device drivers are described in Standard Virtual Device Drivers.
Those indicated with an (1) form the base set of OS/2 V2.0 and are
automatically loaded at system initialization time. The others are installed at
operating system initialization time, using DEVICE= statements in CONFIG.SYS,
as shown in Figure "Virtual Device Driver Statements in CONFIG.SYS". The first
two virtual device drivers in Figure "Virtual Device Driver Statements in
CONFIG.SYS" communicate with the corresponding physical device drivers from
Figure "Physical Device Driver Statements in CONFIG.SYS".
Virtual device drivers perform four main functions:
Maintain the hardware state for each VDM
Prevent an application in one VDM from corrupting another VDM
Support fast screen I/O
Support fast communications I/O.
ΓòÉΓòÉΓòÉ 15.3.1. Loading Virtual Device Drivers ΓòÉΓòÉΓòÉ
Virtual device drivers are loaded into memory when the initialization phase of
the physical device drivers has completed. Upon loading, the virtual device
driver verifies the communication path to the corresponding physical device
driver, and registers hooks with the Virtual DOS Machine Manager for VDM events
such as creation, destruction, and foreground/background switching.
Upon creation of a VDM, the virtual device driver is notified by the Virtual
DOS Machine Manager, and the creation routine of the virtual device driver is
invoked. This causes a stub device driver to be loaded into the VDM's V86 mode
address space. This stub driver accepts device requests from DOS applications
within the VDM, and routes them to the virtual device driver outside the V86
mode address space.
This is typically achieved by having the stub device driver issue an
instruction which causes a general protection exception. This exception is
passed to the operating system's general protection exception handler, which in
turn passes it to the Virtual DOS Machine Manager, and finally to the
appropriate virtual device driver. The virtual device driver then communicates
with the corresponding physical device driver in order to access the hardware
device.
When a hardware interrupt occurs, the physical device driver is notified and
communicates the event to the virtual device driver, which then takes the
appropriate action to inform the DOS application. This occurs even if the VDM
is not currently executing in the foreground, since the virtual device driver
can access its instance data directly.
Note that certain virtual device drivers do not have a corresponding physical
device driver. For example, the VEMM.SYS virtual device driver is used to
provide support for the LIM Expanded Memory Specification Version 4.0; this
virtual device driver communicates directly with the operating system's memory
manager to allocate and manipulate expanded memory objects.
Virtual device drivers communicate with the OS/2 Version 2.0 kernel using
virtual device helper (VDH) services. The use of these services is required
because virtual device drivers execute at privilege level 0, and are thus
prevented from issuing normal privilege level 3 function calls to the operating
system kernel. VDH services are also used to communicate with physical device
drivers, and for communication between virtual device drivers.
Note that there is no fixed communication protocol between a virtual device
driver and a physical device driver. The programmer may use any protocol that
suits the needs of the driver. A shutdown protocol is recommended in case the
virtual device driver has to be shut down.
ΓòÉΓòÉΓòÉ 15.3.2. Virtual Device Driver Structure ΓòÉΓòÉΓòÉ
A virtual device driver is a 32-bit EXE file which runs in protected mode and
supports the flat memory model. Figure "Virtual COM and Physical COM Device
Drivers" shows the structure of a virtual device driver and the interfaces to a
physical device driver.
Nearly all virtual device drivers provided in OS/2 V2.0 are written in a
high-level language ("C"), although several have portions that were developed
using assembler language. Since software interrupts and hooked I/O port
operations cause a trap to privilege level 0, time critical code for these
operations should be written in assembler language to achieve the maximum
possible performance.
A virtual device driver is a 32-bit EXE file that can contain some, all, or
none of the following types of objects:
Initialization code
Initialization data
Swappable global code.
A virtual device driver must have at least one object of the following types:
Swappable global data
Swappable instance data
Resident global code
Resident global data
Resident instance data.
A virtual device driver should contain resident objects for code and data which
must be accessed at physical hardware interrupt time, that is, when a physical
device driver calls the virtual device driver. A virtual device driver which
does not interact with a physical device driver needs no resident objects.
Examples of such device drivers are VEMM and VXMS.
A virtual device driver locates its instance data above the 1MB + 64KB line,
but below 4MB. The instance data is therefore outside the VDM's V86 mode
address space. This linear address range is the same for all VDMs; that is,
all VDMs have the instance data for a particular virtual device driver at the
same linear address. The offset from the VDM's linear base address to the
virtual device driver's instance data is returned by the OS/2 kernel when the
device driver is initialized.
A virtual device driver may need to access its instance data area at physical
hardware interrupt time. This may be required even when the VDM is not
currently executing in the foreground. Since the instance data is system data
located above the V86 addressing range, the virtual device driver may address
the per-VDM buffer regardless of which process is currently running. VDM
instance data is accessed by adding the VDM's handle + instance data area
offset + data offset within the instance data area.
Note that memory objects created by a virtual device driver for passing to a
physical device driver must not exceed 64KB in size. This limitation results
from the fact that many physical device drivers are still written using the
16:16 segmented memory model, and cannot therefore support memory objects
greater than 64KB in size.
ΓòÉΓòÉΓòÉ 15.3.3. ROM BIOS Compatibility ΓòÉΓòÉΓòÉ
ROM BIOS provides many function calls which are typically used by a DOS
application program. To maintain the virtualization concept and ensure
compatibility with applications which access BIOS or its functions, these
functions are emulated by a virtual device driver.
The VBIOS virtual device driver contains a mechanism to map and initialize the
system ROMs (including the ROM and EBIOS data areas) and the interrupt vector
table into memory within each virtual DOS machine. This is done at VDM
creation time, before any other virtual device drivers are loaded. This allows
other virtual device drivers to hook interrupt vectors and use VBIOS services.
Certain BIOS interfaces are not emulated directly, but are passed to other
routines which provide improved performance or functionality. For example, the
video interface routines provided by ROM BIOS are powerful but extremely slow.
In order to increase the performance of the video output, the video virtual
device driver intercepts the ROM BIOS video interrupt (INT 10h) and performs
the requested operations directly, providing improved performance.
ΓòÉΓòÉΓòÉ 15.3.4. Hardware Interrupt Simulation ΓòÉΓòÉΓòÉ
A virtual device driver typically establishes communications with a physical
device driver and receives events at hardware interrupt time. Based on the
event received from the physical device driver and the VDM's current state, the
virtual device driver may need to send a hardware interrupt to the VDM.
However, the virtual device driver cannot simply call the VDM's interrupt
handler, since the interrupt handler may currently be paged out, and page
faults cannot be taken on the VDM's interrupt handler code at hardware
interrupt time.
The solution is to "simulate" the hardware interrupt to the VDM by delaying it
until the VDM process becomes active. This is done in three steps:
1. The VDM's interrupt request flag for the particular interrupt level (IRQ)
is set, and a global context hook is set to pass control to the virtual
device driver as soon as any VDM becomes active.
2. A VDM context hook is set, which increases the priority of the target VDM,
based on the priority of the interrupt, thereby enabling fast interrupt
processing by the VDM.
3. When the VDM is scheduled and the interrupt request flag is noted, the
VDM's interrupt handler code is invoked.
The VDM's interrupt handler typically issues a request for the interrupt data
or an EOI instruction. When the virtual device driver receives either of
these, it calls the VDHClearVIRR() helper service to clear the interrupt
request flag. If the interrupt request flag is not cleared before the VDM
issues an EOI instruction, the virtual device driver immediately simulates
another interrupt to the VDM. For example, the virtual timer device driver may
leave the interrupt request flag set when it receives the EOI from a previously
simulated interrupt, if it has another hardware timer interrupt pending for
that VDM.
Clearing Interrupts
Note that a virtual device driver must call the VDHClearVIRR() helper service
when the VDM issues an EOI instruction. Otherwise, the application may receive
spurious interrupts because the interrupt request flag is not cleared. For
this reason, unknown device interrupts are not supported for VDMs, since there
is typically no virtual device driver to clear the interrupt request flag.
Interrupts must be simulated to VDMs as quickly as possible. It is not
advisable for a virtual device driver to have too many interrupts pending since
the physical device driver's buffers may overflow.
A virtual device must also be very careful when it simulates an interrupt to a
VDM because too many nested interrupts may cause the application's stack to
overflow. A virtual device driver should wait until the IRET instruction has
been executed in the VDM's interrupt handler before it simulates the next
interrupt; the virtual device driver may gain control immediately upon IRET
being issued, via an IRET handler registered using the VDHOpenVIRQ() helper
service.
Shared Interrupts
Personal System/2 machines equipped with the IBM Micro Channel* bus
architecture support multiple hardware devices on the same IRQ level. Hence,
support may also be required for virtual device drivers to share interrupts.
This support is provided through the VDHOpenVIRQ() helper function, which
accepts a flag indicating that a virtual device driver is willing to share its
IRQ. Note that all virtual device drivers using the same IRQ must pass the
sharing flag; otherwise, an error is returned.
Each virtual device driver receives an IRQ handle, which points to an IRQ data
block specific to that device driver. Data not specific to the virtual device
driver is contained in a shared IRQ data structure.
When an interrupt is received for a VDM, the virtual interrupt request flag is
set and a device request mask is updated. This device request mask is specific
to each VDM, and contains a bit for every virtual device driver which has
requested a virtual interrupt for the IRQ. When the interrupt is cleared, the
device mask bit for the virtual device driver is cleared. However, the virtual
interrupt request flag is not cleared until all virtual device drivers have
cleared the interrupt.
Note that EOI and IRET handler routines are called when the device mask bit is
cleared, allowing virtual device drivers to perform correct interrupt
termination handling.
ΓòÉΓòÉΓòÉ 15.3.5. Protection ΓòÉΓòÉΓòÉ
An application within a VDM cannot corrupt or destroy a virtual device driver,
since the virtual device driver operates in protected mode outside the V86 mode
address space, and is thus not accessible by the application. However, the
parameters passed to a virtual device driver from the VDM must be carefully
checked before being acted upon, in order to ensure that the service request is
valid. Failure to do so may result in failure of a virtual device driver due
to an invalid instruction or invalid data.
System registers must not be modified by a virtual device driver. Only certain
flags may be modified. These are as follows:
Arithmetic bits
Interrupt bit; note that this must be handled with extreme care
Direction bit.
Failure to observe these rules by a virtual device driver may result in failure
of the VDM's parent process, and possible corruption of the virtual device
driver itself.
ΓòÉΓòÉΓòÉ 15.4. Standard Virtual Device Drivers ΓòÉΓòÉΓòÉ
The following pages provide brief descriptions of each of the standard virtual
device drivers provided with the OS/2 Version 2.0 operating system.
ΓòÉΓòÉΓòÉ 15.4.1. VBIOS Device Driver ΓòÉΓòÉΓòÉ
The VBIOS virtual device driver is like any other base virtual device driver
except that it is loaded before any other virtual device drivers. This driver
is loaded and initialized first, so that other virtual device drivers can use
services provided by VBIOS.
The system BIOS reserves physical memory for the interrupt vector table, ROM
and EBIOS data areas. This reservation is done by an indication in the arena
info data structure passed to the kernel. These physical pages are treated as
"unavailable" by the virtual memory manager.
During virtual device driver initialization, the physical interrupt vector
table and ROM data area (previously allocated/reserved by the BIOS) are mapped
with the VDHMapMem() function. VBIOS also installs hooks which cause its own
VDM creation handler to be invoked, and an I/O hooking routine to be invoked
when all virtual device drivers have been initialized for a particular VDM.
Space is also reserved for the EBIOS data area (if the machine is a PS/2) and
the system ROM linear address ranges. This allows virtual device drivers to
use and modify this information globally (affecting all VDMs created
thereafter).
The following steps are taken when initializing the BIOS for a newly created
VDM:
1. Map the CBIOS system area to the VDM address space, using the VDHMapMem()
service.
2. Allocate memory for the interrupt vector table and ROM BIOS data area.
3. Map and copy the physical interrupt vector table and ROM BIOS data area
into the VDMs linear address space.
4. Allocate memory for the extended BIOS data area in the VDM's linear address
space (only on PS/2s).
5. Map and copy the physical extended BIOS data area into the linear address
space.
When VBIOS's VDM_CREATE_DONE handler is called (after all virtual device
drivers' VDM_CREATE handlers have been invoked), VBIOS attempts to install I/O
hook routines for the serial and parallel ports COMx and LPTx. These hook
routines will take effect only if the virtual COM device driver or the virtual
printer device driver have not successfully hooked the I/O ports. VBIOS I/O
hook routines are used only to display pop-up messages when the device is not
virtualized, and to terminate the VDM on user request.
ΓòÉΓòÉΓòÉ 15.4.2. Virtual CMOS Device Driver ΓòÉΓòÉΓòÉ
The virtual CMOS device driver VCMOS.SYS provides support for virtualization of
the CMOS battery backed-up RAM, the real time clock (RTC) and the non-maskable
interrupt (NMI) disable logic. It provides virtual access to CMOS addresses and
data latches through virtual I/O ports.
CMOS Memory Access
The CMOS portion of the CMOS/RTC may be read or written. Virtual CMOS memory
is initialized to the contents of the physical CMOS memory upon VDM
initialization. Values written to CMOS memory by DOS applications are written
in a buffer local to the VDM. Unlike the physical CMOS memory, however, the
contents of the virtual CMOS buffer are lost when the VDM is terminated.
I/O Port Support
The virtual CMOS device driver component monitors all accesses to its two VDM
I/O ports. The two ports are a write-only address latch and a read/write data
latch. The address latch port has two functions:
NMI disable
CMOS/RTC device address selection.
The data latch is a register for holding a byte being transferred to or from
the CMOS/RTC device.
NMI Disable
The NMI-disable portion of the address latch may be set or reset by a DOS
application, but changes to enable or disable NMI are otherwise ignored by
VCMOS.
Real Time Clock and Interrupt Access
The real time clock consists of a time-of-day clock, an alarm interrupt, and a
periodic interrupt. Accesses to the real time clock to change the time of day,
the timing mode or to set an alarm or periodic interrupt are disallowed. Thus,
the CMOS/RTC registers related to the real time clock are supported for
read-only access.
Since interrupts can only be supported through write access to the ports, real
time clock interrupts are not supported by VCMOS.
ΓòÉΓòÉΓòÉ 15.4.3. Virtual DMA Device Driver ΓòÉΓòÉΓòÉ
The PC AT has eight DMA channels, each of which can be hard-wired to a slave
device on the bus. Assignments, therefore, cannot change unless the device
adapter is reconfigured by changing jumpers. Because of this one-to-one
relationship, there is no separate device driver for the DMA controller. Each
device requiring DMA services programs the corresponding DMA channel directly
in its device driver, as though the DMA channel were part of its own hardware.
In the PS/2, virtual DMA channels may also be assigned; two of the eight
channels, channels 0 and 4, are virtual channels which can be dynamically
assigned to any device. These channels can, therefore, be multiplexed to
service more than one device. ABIOS serializes channel accesses to avoid
contention.
Device drivers for hardware devices access the DMA channels directly, with no
device driver required for the DMA controller itself. OS/2 Version 2.0,
therefore, does not use a physical device driver for DMA access. The virtual
DMA device driver VDMA.SYS supports access to DMA ports from DOS applications
in virtual machines.
VDMA consists of port trap handlers which ignore IN/OUT commands. The
supported DMA services are:
Memory address and page address registers for all DMA channels
Transfer count registers for all DMA channels
Status registers
Mask registers
Mode registers
Byte pointer flip flop port
Extended function/execute ports (for PS/2 only)
Master clear ports
Command register (for PC/AT only)
Write request register (for PC/AT only).
Note that VDMA does not support direct access to the DMA controller by DOS
applications.
ΓòÉΓòÉΓòÉ 15.4.4. Virtual Disk Device Driver ΓòÉΓòÉΓòÉ
The virtual disk device driver VDSK.SYS supports access to disk via the INT 13h
CBIOS service. Since the CBIOS accesses the hardware ports directly and may
therefore cause problems for other processes in the system, VDSK traps the INT
13h interrupt and emulates the processing of this interrupt. Note that VDSK
does not provide I/O port level access to disk controllers.
The processing of an INT 13h request typically proceeds as follows:
1. The DOS application accesses the disk using INT 13h interface; the INT 13h
request is trapped by VDSK.
2. VDSK builds a device driver request packet and sends it to the physical
disk device driver. The VDM is then blocked, waiting for the request to
complete.
3. The physical disk device driver processes the request packet. If the disk
is currently busy, the request is queued.
4. When the request is completed, the physical disk device driver notifies
VDSK, which unblocks the VDM.
Protected mode applications access disks via a programming interface which goes
through the kernel's device routing mechanism and finally to the physical disk
device driver. The physical device driver receives an access request packet
similar to that sent by VDSK.
ΓòÉΓòÉΓòÉ 15.4.5. VFLPY Device Driver ΓòÉΓòÉΓòÉ
The virtual diskette device driver (VFLPY) intercepts virtual DOS machine
access to the diskette drive directly or through INT 13H calls in order to
serialize and coordinate diskette I/O between multiple virtual DOS machines.
ΓòÉΓòÉΓòÉ 15.4.6. Virtual Keyboard Device Driver ΓòÉΓòÉΓòÉ
The Virtual Keyboard Device Driver VKBD.SYS provides virtualization support for
the keyboard. It allows keystrokes to be passed from the keyboard to virtual
DOS machines. It also allows for text to be pasted into the VDM as key
strokes.
Upon creation of the VDM, VKBD establishes communication with the physical
keyboard device driver and initializes the portions of the CBIOS data area
associated with the keyboard. Subsequently, the physical device driver
notifies VKBD of each scan code that is bound for the VDM.
To allow monitoring of I/O activity, VKBD registers itself with the 8086
Emulation component. 8086 Emulation then notifies VKBD when a DOS application
in a VDM accesses a virtual keyboard port.
VKBD supports two virtual I/O ports:
Port 64h - Controller Status/Command
Port 60h - Controller Input/Output Buffer.
These two ports may respond to requests in a variety of ways, depending on the
state of the controller at the time of the request.
Read Output Buffer
An I/O read request to port 0x60 reads the contents of the controller output
buffer. If the "output-buffer-full" status was set before the read request, a
timer (T1) is started. The output-buffer-full status is then cleared. When
the T1 timer expires, VKBD determines if another byte is ready to be placed
into the output buffer. If so, the byte is placed into the output buffer and
the "output-buffer-full" status is set.
Write Output Buffer
An I/O write request to port 0x60 writes the specified byte to the controller
input buffer. The previous contents of the input buffer are lost. The port
number (0x60) is saved and the byte written is processed, depending on the
current state of the keyboard controller. The "input-buffer-empty" status is
never set.
Status Read
An I/O read request to port 0x64 simply returns the contents of the controller
internal status register. Reading this port has no effect on the state of the
virtual keyboard hardware.
Write Controller Command
An I/O write request to port 0x64, like a write request to port 0x60, writes
the specified byte to the controller input buffer. Since the port number
(0x64) is saved here, the system distinguishes between a command byte and a
data byte. As above, the byte written is processed, depending on the state of
the controller, and the "input-buffer-empty" status is never set.
Physical Device Driver Notification
Since keystrokes are external events, it is the responsibility of the physical
device driver to notify VKBD when keystrokes are available for processing. In
particular, the physical device driver calls VKBD when hardware scan codes
arrive, and passes each scan code received to VKBD. This occurs whenever the
keyboard's current focus is a virtual DOS machine.
When called, VKBD places the scan code in a queue. If the queue was previously
empty, the controller "output-buffer-full" status condition is set and if
interrupts are enabled, the Virtual Programmable Interrupt Controller is called
to simulate the interrupt to the VDM. If the queue was not previously empty,
the scan code is added without any other processing. If the queue is full, the
speaker is sounded.
INT 09h Processing
In a "real" DOS environment, the IRQ1 interrupt request is translated by the
interrupt controller, causing the INT 09h interrupt service routine to be
invoked. This interrupt vector normally points to a routine in the CBIOS. This
manner of processing is not desirable in a VDM since the CBIOS only performs
U.S. key translation; such processing would complicate the task of national
language support. Instead, VKBD simulates this CBIOS function, and may thus
use whatever key translation is appropriate for the current country and code
page.
The INT 09h emulation code within VKBD performs all functions that the CBIOS
would normally perform. This includes:
Key and scan code enqueueing
INT 05h (Print Screen) processing
INT 15h processing for monitoring scan codes and handling the SysReq key
INT 1Bh for Ctrl+Break and Pause key processing
Key translation
Update of keyboard LEDs
Update of the CBIOS data area status.
Upon termination, VKBD relinquishes access to the keyboard.
ΓòÉΓòÉΓòÉ 15.4.7. Virtual Printer Device Driver ΓòÉΓòÉΓòÉ
The virtual line printer device driver VLPT.SYS supports access to three
virtual parallel port controller devices from DOS applications running in
virtual DOS machines.
VLPT hooks INT 17h and processes requests for INT 17h services itself, rather
than allowing these requests to be handled by CBIOS. INT 17h support includes
support for function 02h (Read Status).
VLPT does not support virtual hardware interrupts. If a DOS application
attempts to enable interrupts (that is, it attempts to set control port bit 4,
"IRQ EN"), that I/O operation is ignored, and the application will not receive
interrupts from the parallel port hardware.
VLPT buffers the print data which is subsequently directed to the OS/2 spooler
using file system services provided by the Virtual DOS Machine Manager. The
spooler may be configured for output on each printer device (LPTx) that will be
accessed by DOS applications from a VDM. Figure "Virtual Printer Device Driver
Operation" shows the various operations performed by the virtual printer device
driver.
If VLPTDD.SYS is the only virtual printer device driver installed, no INT 17
will be issued when printing is done on numbered I/O devices (for example,
LPT1, LPT2, etc.). However, if an application such as a TSR program must catch
all INT 17 interrupts, the LPTDD.SYS device driver must be installed as well.
You can find LPTDD.SYS in the subdirectory \os2\mdos.
When LPTDD.SYS is available, a request from the DOS file system issuing INT 21
is converted by LPTDD.SYS into INT 17. INT 17 is then forwarded to VLPT.SYS and
from this point on the print request proceeds as described above in Figure
"Virtual Printer Device Driver Operation". Note, however, that installing
LPTDD.SYS in addition to VLPT.SYS will cause the printing from a VDM to slow
down.
Spooling
In order to support spooled print output, the OS/2 spooler must be installed.
A new IOCTL interface is defined in order to allow the spooler to identify
itself to the physical printer device driver. The new IOCTL functions Set
Spooler Status and Get Spooler Status are called by the spooler and the Virtual
DOS Machine Manager.
The spooler invokes the Set Spooler Status function (Category 5, Function 4Ch)
at spooler monitor registration time to inform the physical device driver that
a particular port is actively configured as the output device for a particular
spool queue. It also invokes this interface whenever the user manipulates the
spooler queue setup by invoking the Print Manager's Setup Printers/Change
Printers dialog.
The Virtual DOS Machine Manager invokes the Get Spooler Status function
(Category 5, Function 6Ch) during an implicit open of a print device whenever
VLPT processes the first print output (INT 17h) from a VDM. This allows the
Virtual DOS Machine Manager to determine if the spooler is active so that it
can return the spool queue file handle to VLPT to continue printing.
Print Screen
VLPT also supports the Print Screen function by hooking INT 05h so that it is
notified before the CBIOS INT 05h handler. The CBIOS INT O5h handler invokes
INT 17h functions, and the VLPT INT 17h emulation in turn sends this data to a
spool file, if the spooler is active. When the CBIOS INT 05h handler returns,
VLPT also receives control so that it may close the spool file.
File Transfer
To support DOS file transfer programs which use the parallel ports (such as the
IBM Data Migration Facility), and which typically program the parallel port
controller directly, VLPT provides a mode known as direct I/O access. In this
mode, the physical printer device driver grants temporary exclusive ownership
of the parallel port hardware to the VDM in which the application is running.
This mode allows the application to have direct access to the parallel port's
data, status and control registers.
If the port is not currently active (printing) under control of the physical
printer device driver, the physical device driver will grant VLPT exclusive
access to the port, and continue to service incoming file system I/O requests.
Any incoming monitor requests from the spooler are blocked until exclusive
access is released (no error or status monitor packets are sent to the monitor
chain).
If the physical printer device driver is actively processing a hardware I/O
operation, when VLPT makes a request for exclusive access, the physical device
driver will return an error code to VLPT. VLPT will then display a pop-up
message (via the VDHPopUp() helper service), allowing the user to select the
most appropriate system action ("End program" or "Retry").
Note: Due to the multitasking nature of OS/2 V2.0, data communications using
this type of application have an increased probability of error when
multiple processes are concurrently active and/or when the virtual DOS
machine is switched to the background.
PS/2 Register Virtualization
On PS/2 systems, the physical printer device driver ensures that all LPT ports
which support extended mode (read/write 8-bit parallel I/O) will be enabled for
extended mode at system initialization time. On any PS/2 models which do not
enable this mode by default, the physical printer device driver enables
extended mode via the system's Programmable Option Select (POS) function. This
ensures that all PS/2 LPT ports will support manipulation of the control port
Direction Control bit.
On all PS/2 models (but not on IBM PC/AT systems), VLPT will virtualize the
adapter enable/setup register. All bits of this register are virtualized for
read operations, but only bit 7 of the enable/setup register is virtualized for
write operations. DOS applications may modify bit 7 of this register in order
to gain access to the system board's POS Register 2, thereby enabling or
disabling extended mode operation of the parallel ports. When bit 7 is set to
0 (the default state), the parallel port is configured as an 8-bit, parallel,
bidirectional interface. When bit 7 is set to 1, the parallel port
bidirectional mode is disabled. As described above, the physical printer
device driver ensures that all PS/2 models have this bit set to 0 (extended
mode enabled) during system initialization.
Note that only bit 7 is virtualized and may be manipulated; attempting to
manipulate any other bits of this register will result in termination of the
VDM. As the behavior is virtualized, the true state of the hardware register
is not affected by any operations of a DOS application running in a virtual DOS
machine.
Printer Close
VLPT exports the VDHPrintClose() service. This interface may be called by
another virtual device driver such as VKBD to force any open printers in a VDM
to close. This technique is used to handle a forced End-of-Job
(Ctrl+Alt+PrintScreen) character, and is required because some DOS applications
do not explicitly close or disable the printer when their print activity is
completed.
VLPT may also close open print files whenever a VDM is terminated. VLPT
registers an event hook with the Virtual DOS Machine Manager, and is therefore
notified upon termination of a VDM. All open print files in the terminating
VDM are closed, after any buffered data has been sent to the spooler.
When operating in direct I/O access mode, VLPT can detect application
termination in one of three ways:
PDB is changed or destroyed (default)
VDM is terminated
User hot-key (Ctrl+Alt+PrintScreen).
When this termination event is detected, direct I/O access mode is cancelled
and VLPT relinquishes the VDM's exclusive control of the parallel port
hardware. The physical printer device driver then reclaims ownership of the
port and resumes normal I/O operations.
Note that VLPT will not always close an open print file when the DOS
application terminates. Depending on the DOS application's behavior, the VDM
may remain active when the program ends, and the spooler print file may
therefore remain open. If so, the user can cause the open print file(s) to
close by using the Ctrl-Alt-PrintScreen control key sequence. Alternatively,
the user can leave it to the system by setting the PRINT_TIMEOUT value in the
DOS settings to the time in seconds that the operating system should wait
before forcing the print job to the printer. Consequently there is no need to
exit these DOS programs to have the print job released from the print spooler.
For more information on PRINT_TIMEOUT see DOS Settings.
ΓòÉΓòÉΓòÉ 15.4.8. Virtual Numeric Coprocessor Device Driver ΓòÉΓòÉΓòÉ
The virtual numeric coprocessor device driver VNPX.SYS provides virtualization
of the 80287/80387 numeric coprocessor hardware, allowing access to numeric
coprocessor facilities by multiple DOS applications running in virtual DOS
machines.
OS/2 Version 2.0 provides a physical device driver for the numeric coprocessor,
within the operating system kernel. At system initialization time, VNPX
registers a number of hooks with the physical device driver, so that VNPX is
informed whenever a numeric coprocessor exception or emulation trap occurs.
Handling routines are also registered with the Virtual DOS Machine Manager, and
are invoked upon VDM creation and termination. Coprocessor I/O ports visible
to V86 mode applications are hooked by VNPX.
VNPX is informed by the physical device driver at initialization time, whether
VDMs are permitted to use the coprocessor. Upon VDM creation, VNPX sets the
equipment summary flag for the numeric coprocessor according to the information
received at initialization time. In the event of the coprocessor being
unavailable to DOS applications, the equipment summary flag is turned off. An
application interrogating the flag will therefore assume that no coprocessor is
present, and take appropriate action.
The first time an application in a VDM executes a coprocessor instruction
within a particular timeslice, an exception condition (Trap 0007) occurs. The
exception handler sets a flag within the physical device driver before allowing
processing of the instruction to continue. This flag is checked at task switch
time and if it is set, the coprocessor state is saved by the physical device
driver. Note that the save operation takes place only if the coprocessor is
used by an application during its timeslice; for those applications which do
not use the coprocessor, no action is taken. This allows optimum performance
during task switching.
ΓòÉΓòÉΓòÉ 15.4.9. Virtual Programmable Interrupt Controller ΓòÉΓòÉΓòÉ
The virtual programmable interrupt controller VPIC.SYS is a virtual device
driver responsible for virtualization of hardware interrupts to virtual DOS
machines. This device driver simulates interrupts to virtual DOS machines by
providing a virtual interface to the 8259 Programmable Interrupt Controller
(PIC).
The virtual PIC device driver supports the hardware interrupt-related services
needed by virtual device drivers and DOS Sessions. The services include
setting handlers to trap EOI and IRET events, simulating interrupts to DOS
Sessions, and handling PIC I/O accesses by DOS Sessions. The virtual PIC
device driver maintains a per-DOS Session virtual PIC state so that each DOS
Session appears to have its own independent 8259 Programmable Interrupt
Controller.
This per-DOS Session virtual PIC state contains items such as the current mask,
the current IR (interrupt request) and IS (interrupt service) registers, base
interrupt vector and initialization mode for a particular VDM. A per-VDM state
machine is used to track the initialization control word (ICW) or operation
control word (OCW) for which VPIC is waiting. This module also invokes the
virtual device driver's EOI handler when it receives EOI commands from a VDM.
The interrupt simulation mechanism is similar to the way signals are handled
for OS/2 applications. The virtual PIC device driver can be broken up into two
major parts:
1. The virtualization of the PIC ports, and
2. The simulation of hardware interrupts to VDMs.
Figure "Virtual Programmable Interrupt Controller" below shows this breakdown
and the interfaces to other components, it shows the VPIC architecture and the
role it plays in virtualizing hardware interrupts to virtual DOS machines.
Not all combinations of ICWs or OCWs are supported. Some seldom used
initialization modes and operation commands are ignored. These unsupported
features are:
Slave PIC on any IRQ other than IRQ2
Level-triggered initialization
Special fully nested mode
Auto EOI mode
8080/8085 mode
Buffered mode
Special mask mode
Set IRQ priority command
Poll command
Rotate on specific and non-specific EOI commands.
The following tables show in detail which 8259 PIC initialization and operation
commands from a VDM are supported by the VPIC. Table "PIC Initialization
Control Words" shows the supported and unsupported initialization control
words.
Table "PIC Operation Control Words
ΓòÉΓòÉΓòÉ 15.4.10. Virtual Timer Device Driver ΓòÉΓòÉΓòÉ
The virtual timer device driver VTIMER.SYS provides virtualization of timers
used by DOS applications running in VDMs. Three timer ports are supported in
order to allow reprogramming of interrupt frequency and speaker tone frequency.
VTIMER also distributes timer ticks to VDMs and maintains a count of timer
ticks.
All accesses to the timer are simulated by VTIMER. Therefore, unlike most
other virtual device drivers, VTIMER has no communication with the physical
timer. VTIMER derives its timer tick directly from the system clock.
VTIMER keeps a per-VDM cumulative timer count in the VDM's data area. When a
periodic timer interrupt occurs, VTIMER receives control. It adds the periodic
interval count value to the cumulative timer count of the VDM and compares it
with the VDM's programmed count. If the cumulative timer count exceeds the
VDM's programmed count, an interrupt is simulated to the VDM and the programmed
count is subtracted from the cumulative timer count.
Timer 0
This timer is normally used to provide periodic interrupts to DOS applications.
A periodic system timer with an interval close to 18.2 milliseconds is set up
so that VTIMER can accumulate virtual ticks and simulate tick interrupts if
necessary.
If a VDM attempts to program an interrupt period less than 18.2 milliseconds,
the periodic timer interval will be changed to four times the normal frequency
of 18.2 Hz, regardless of the VDM's programmed value. A HighRate reference
count is also kept to record the number of VDMs using a higher interrupt rate.
As long as there is at least one VDM using a higher interrupt rate, the
periodic rate is maintained at approximately four times 18.2 Hz. Otherwise,
the timer frequency is reset to 18.2 Hz.
Accesses to timer count registers from within a VDM are trapped by VTIMER.
Read accesses to the count registers should be preceded by a counter latch
command written to the control word register, in which case a random value
derived from the system time is latched and stored in the virtual latch
registers. Its purpose is to provide the applications with a sense of elapsed
time, although the count value itself is meaningless. Read access to the count
register is simulated by reading the virtual latch value. Write accesses to
the count registers are stored in the virtual count registers.
Timer 1
Timer 1 is used in the PC AT [Although the IBM PC AT is based on the Intel
80286 processor and therefore is not supported by OS/2 Version 2.0, many PC AT
machines exist which have been fitted with processor upgrades from various
manufacturers, which may enable them to run OS/2 Version 2.0. Information on
the PC AT architecture is therefore included herein for completeness. ] as the
memory refresh request timer. Since the correct operation of this timer is
vital to the system, no known software reprograms it for uses other than
reading it as the random number generator speed. Therefore, VTIMER does not
support any access except counter read to this timer by DOS applications. Any
accesses other than counter reads are trapped and ignored.
Timer 2
Timer 2 is the speaker tone generator. It is accessed by DOS applications
directly, via programming interfaces or DevHlp services, or by the VDHBeep()
function. Serialization of the speaker usage can be achieved by using a
semaphore in the kernel.
When a DOS application accesses the speaker, it typically programs timer 2 for
the appropriate frequency and then enables the speaker by programming the
speaker enable bits in system control port B. These programming operations are
trapped by VTIMER and the frequency value is stored for the VDM. When Control
Port B is programmed to enable the speaker, the kernel beep service is called
to generate the beep. This call may be blocked due to the fact that another
process is beeping and thus owns the speaker semaphore. After the semaphore is
obtained, the stored frequency value is programmed into timer 2 and the speaker
is enabled. The semaphore is released when the DOS application disables the
speaker by programming the System Control Port B.
There is one exception to the speaker serialization, and this occurs during
interrupt time. For example, when a process is generating a speaker tone, the
keyboard buffer may be full and the keyboard interrupt handler needs to
generate a warning beep immediately. Therefore, the kernel also provides an
interrupt time beep service which can pre-empt any ongoing beeps and use the
speaker to generate its own beep regardless of which process currently owns the
speaker semaphore.
ΓòÉΓòÉΓòÉ 15.4.11. Virtual COM Device Driver ΓòÉΓòÉΓòÉ
The virtual COM device driver VCOM.SYS provides virtual support for the serial
communication I/O ports and for the serial channel-related CBIOS entry points.
It provides support in each VDM for up to two communication channels on the IBM
PC AT and compatible systems, and up to four on the IBM PS/2 Model 80 and
compatible PS/2 systems.
VCOM only supports access to communication channels which are physically
present on a given system. It does not include support for accessing
communication devices which may be redirected by network software. For each
supported port, VCOM searches for the port's base address in the CBIOS data
area. If the address is zero, indicating that the device is not present or is
owned by a physical device driver other than the COM.SYS device driver, VCOM
does not attempt to support that serial device.
If the port's base address is found, VCOM verifies that the physical device
driver has installed itself for that serial device. If the physical device
driver indicates it is not installed for that port, VCOM does not attempt to
support that serial device.
Many DOS applications that support asynchronous communications include hardware
interrupt handler routines. These routines typically perform I/O directly to
the COM port hardware. To support these DOS applications and to allow them to
run in both background and foreground, VCOM simulates hardware interrupts in
the task-time context of the V86 mode process. VDMs are scheduled and
dispatched using the same preemptive task dispatching method that drives OS/2
processes. Hardware interrupts on the other hand, occur asynchronously to this
scheduling process. By simulating hardware interrupts and presenting a virtual
hardware state, the interrupt handling logic of the DOS application does not
execute on the physical interrupt thread. This means that switching to V86
mode is not done at interrupt time, but is deferred until the scheduler
dispatches the VDM task.
The advantage of simulated interrupts is that mode switching and hardware
virtualization need not be done at interrupt time. In addition, the DOS
application does not gain control at interrupt time, which helps to maintain
system integrity. A potential disadvantage of this approach is that DOS
applications with time-critical routines may not operate correctly under some
system load configurations.
Port/Channel Contention
After VDM creation, the CBIOS data area provides a logical link between the
virtual communication channels in the VDM and the physical serial channel
hardware. Since VCOM does not support a COM port if its address is not in the
CBIOS area, it can handle its own errors and/or terminate in its usual fashion
if the DOS application does not find the device address.
If the CBIOS area indicates that the device is present, however, VCOM
determines if the device is already in use in another VDM when the DOS
application makes its first access to that device. If so, VCOM does not
attempt to send the OPEN command to the physical device driver. Instead, VCOM
will issue a pop-up message that informs the user of the resource contention
and allows for a user-selected action. As a result of the user action, the
conflict is resolved or the VDM may be terminated.
If the port is not already in use, VCOM calls the physical device driver with
the OPEN command. This command will succeed provided the port is not currently
in use by a protected mode process.
Once the device is opened, VCOM communicates directly with the physical device
driver to perform all virtual hardware operations. These include sending and
receiving data, detection and simulation of hardware interrupts, and setting or
querying the status and control registers.
CBIOS Access
VCOM also supports access to CBIOS COM port services through software interrupt
14h. Rather than allowing the CBIOS to perform the functions by accessing the
virtual I/O ports directly, VCOM emulates CBIOS functions. The CBIOS access
emulation supports six functions:
Initialize
The initialize function establishes the communication speed and framing
options for the channel, and returns the modem and line status. To specify
bit rates of greater than 9600 bits per second, the extended initialize
function must be used.
Extended Initialize
The extended initialize function, like the initialize function, establishes
the communication speed and framing options for the channel and returns the
modem and line status. This function is used if a bit rate of 19,200 bits
per second (or greater) is desired, or if space or mark parity selection is
desired.
Send Character
The send character function sends a character to the communication channel.
Receive Character
The receive character function waits for a character from the communication
channel and returns the character.
Read Status
The read status function returns the modem and line status.
Extended Port Control
The extended port control function sets or reads the modem control register.
DOS applications running in VDMs may access these functions using the standard
INT 14h service, in a manner identical to that used in a native DOS
environment.
Virtual Interrupt Indication
The DOS application must properly enable interrupts and the specific interrupt
type before the interrupt will be simulated to the VDM. The following INS8250
interrupt types are virtualized by VCOM:
Line Status Interrupt
Receive Data Available Interrupt
Transmitter Holding Register Empty Interrupt
Modem Status Interrupt.
When the physical device driver notifies VCOM of an interrupt, VCOM passes a
virtual interrupt to the Virtual Programmable Interrupt Controller, which in
turn simulates the interrupt to the VDM.
To maintain high performance on the physical serial channel, the COM physical
device driver typically does not notify the VCOM on every interrupt. Rather,
VCOM receives notification of certain events, and determines whether to begin
or continue simulating interrupts to the VDM.
Coexistence with Other Serial Device Drivers
Since there is always the potential for other device drivers to own a serial
port, VCOM does not assume ownership of any devices for which the physical COM
device driver has not been installed. For example, a serial mouse device
driver may be installed and may own the COM1 serial port. The COM physical
device driver will not install for this port, and VCOM will therefore support
only the higher numbered serial ports (if installed).
If a physical device driver installs itself and zeros the COM port base
addresses in the CBIOS data area, VCOM does not attempt to initialize for that
COM port and will not assume any responsibility to virtualize the serial device
hardware for that port. This may result in problems for certain DOS
applications which rely on the CBIOS data area in order to access multiple
serial ports.
ΓòÉΓòÉΓòÉ 15.4.12. VDPMI Device Driver ΓòÉΓòÉΓòÉ
The virtual DOS Protected Mode Interface(VDPMI) device driver provides Version
0.9 DPMI support for virtual DOS machines. DPMI applications run in protected
mode, not V86 mode. VDPMI allows the user to specify how much protected mode
memory should be made available to a DOS session using the DPMI_MEMORY_LIMIT
setting in the settings notebook.
ΓòÉΓòÉΓòÉ 15.4.13. VDPX Device Driver ΓòÉΓòÉΓòÉ
The virtual DOS Protected Mode Extender(VDPX) device driver provides address
translation from protected mode to V86 mode for DPMI applications running in
virtual DOS machines. This translation is necessary because DPMI applications
run in protected mode but issue interrupt requests in V86 mode to perform
systems services.
The VDPX device driver registers the DOS Setting called DPMI_DOS_API. The
available settings are:
Enabled VDPX always translates the interrupts it supports from protected
mode to V86 mode
Auto The application must issue an INT 2FH in protected mode to begin
the translation
Disabled VDPX does not perform any address translation.
ΓòÉΓòÉΓòÉ 15.4.14. VXMS Device Driver ΓòÉΓòÉΓòÉ
The Extended Memory Specification (XMS) Version 2.0 provides a standard
interface for the use of three regions of extended memory on 80286 and 80386
machines:
High Memory Area (HMA), accessible in real mode if the A20 address line is
enabled
Extended Memory Blocks(EMBs), up to 64MB that is used for data storage
Upper Memory Blocks(UMBs), located between 640KB and 1MB in conventional
memory.
The Virtual Extended Memory Specification(VXMS) device driver
Implements all the functions of XMS Version 2.0
Provides each virtual DOS machine with its own separate XMS emulation
Provides configurable limits on the amount of extended memory for each
virtual DOS machine separately.
The VXMS device driver is installed via CONFIG.SYS, with the following syntax
and options:
Syntax
DEVICE=\OS2\MDOS\VXMS.SYS [options]
Options
/XMMLIMIT=g,i Set the global maximum memory usage of VXMS to gKB, and the per
virtual DOS machine limit to iKB. The default is 16384,2048.
/HMAMIN=d Minimum request size in KB for an HMA request to succeed. The default
is 0, the maximum is 63.
NUMHANDLES=n Number of handles available to each virtual DOS machine. Handles
are used to access EMBs. The maximum is 128 and the default is 32.
/UMB Create UMBs. The default is not to create any.
/NOUMB Do not create UMBs. This is the default setting.
ΓòÉΓòÉΓòÉ 15.4.15. VEMM Device Driver ΓòÉΓòÉΓòÉ
The Lotus-Intel-Microsoft (LIM) Expanded Memory Specification (EMS) Version 4.0
provides a standard interface for the use of expanded memory on 8086 and 8088
machines. The specification offers up to 32MB of expanded memory divided into
up to 255 objects that can be mapped into conventional memory.
The Virtual Expanded Memory Specification (VEMM) virtual device driver:
Implements all the INT 67H functions in LIM 4.0 EMS, except those for DMA
registers
Provides each virtual DOS machine with its own separate EMS emulation
Supports remapping of conventional memory for use by DOS programs
Provides a configurable limit to EMS memory for each virtual DOS machine
Supports multiple physical to single logical memory mappings so that
different 8086 addresses can be mapped to the same expanded memory object
address.
The VEMM device driver is installed via CONFIG.SYS, with the following syntax
and options:
Syntax
DEVICE=\OS2\MDOS\VEMM.SYS [options]
Options
/S=n EMS memory limit per virtual DOS machine, with the default being
2048. This can also be set with the EMS_MEMORY_LIMIT setting in the
settings notebook for the virtual DOS machine.
/L=n Size of the remappable conventional memory. This can also be set with
the EMS_LOW_OS_MAP_REGION setting in the settings notebook for the
virtual DOS machine.
/H=n Size of the extra mappable memory, with the default being 32. This
can also be set with the EMS_HIGH_OS_MAP_REGION setting in the
settings notebook for the virtual DOS machine.
/F=xxxx Frame location for remapping expanded memory into conventional
memory. The default is AUTO. This can also be set with the
EMS_FRAME_LOCATION setting in the settings notebook for the virtual
DOS machine. The frame location may need to be moved if there is a
conflict with the mapping address of a physical device driver that
does not have a corresponding virtual device driver. Refer to DOS
Settings on how to use the MEMORY_INCLUDE_REGIONS and
MEMORY_EXCLUDE_REGIONS settings when memory conflicts occur.
ΓòÉΓòÉΓòÉ 15.4.16. VWIN Device Driver ΓòÉΓòÉΓòÉ
"Seamless" WIN-OS/2 support is the ability to run Windows applications in a
window right on top of the Workplace Shell desktop. This requires the Windows
video device driver and the PM video device driver communicate and coordinate
their access of the video hardware. Each device driver effectively owns its
piece of the screen. Allowing the Windows display device driver to access the
video hardware directly avoids the more cumbersome process of a thorough task
switch. However this hardware access poses integrity problems in the areas of
simultaneous access of hardware, rectangle invalidation handling, window
management, and the exchange of window state information between PM and
seamless VDMs supported by separate video device drivers.
To address these problems, a high performance, interprocess communication,
virtual device driver (VWIN.SYS) was created. It serializes the simultaneous
accesses to the hardware, oversees the exchange of window state information
between PM and seamless VDMs, and establishes the addressability of PM
resources (either directly or indirectly) by the Windows display device driver.
ΓòÉΓòÉΓòÉ 15.4.17. Virtual Mouse Driver ΓòÉΓòÉΓòÉ
Given the diversity of mouse hardware, and the complexity of dealing with all
possible combinations of mouse hardware and video equipment, few if any
applications talk directly to mouse hardware. Most applications which support
a mouse do so through the INT 33h interface. Virtualization of the INT 33h
interface is provided by the virtual mouse device driver VMOUSE.SYS.
The INT 33h interface performs the following:
Position and button tracking
Position and button event notification
Selectable pixel and mickey mappings
Video mode tracking
Video pointer management (location and appearance)
Light pen emulation.
The interface between the physical mouse driver and VMOUSE is straightforward.
The physical mouse driver is aware at all times of which session owns the
mouse; thus, when a foreground VDM owns the mouse, it notifies VMOUSE of mouse
events. The events themselves remain buffered by the physical device driver
until VMOUSE requests them. Normally, VMOUSE asks for each event immediately,
and updates the INT 33h data structures for the foreground VDM, unless the
application running in the VDM has registered a mouse event subroutine.
If a mouse event subroutine has been registered by the application, VMOUSE may
have to notify the routine of a mouse event. This depends on the events for
which the subroutine has requested notification. When a registered subroutine
must be called, VMOUSE requests a fake interrupt to be simulated into the VDM.
A fake interrupt service routine (loaded into each VDM upon creation)
immediately emulates the interrupt and then proceeds to notify the VDM's
registered subroutine. In order to pick an IRQ that is guaranteed to not
conflict with any other virtual device driver, VMOUSE queries the physical
mouse driver at initialization time for the physical IRQ used by the mouse.
This ensures that no conflict occurs.
Position and Button Data Tracking
Position and button events are interrupt time events that are communicated to
VMOUSE by the physical device driver via a "data ready" entry point. If the
VDM is not already processing a previous event, VMOUSE calls the physical
device driver to get the new event; otherwise, VMOUSE waits until previous
event processing is complete. This avoids the need for buffering within
VMOUSE.
Normally, the VDM will not be processing any events, so position and button
information can be immediately retrieved and stored for later query by a VDM
application, via INT 33h.
Position and Button Event Notification
As events are requested and supplied by the physical mouse driver, VMOUSE peeks
ahead to the next event (if any) and, if it is a movement-only event, extracts
it and overlays the current event. This is continued until there are no more
events, or the next event is not a movement-only event. This reduces the
amount of interrupt-simulation overhead during periods of rapid mouse movement.
Selectable Pixel-to-Coordinate and Mickey-to-Pixel Mappings
Since pixel-to-virtual-coordinate mappings are often used by DOS applications
but are not supported for protected mode applications; VMOUSE manages such
mappings. Since mickey-to-pixel mappings are supported for protected mode,
VMOUSE relies on the physical mouse driver to perform these mappings. Thus
physical mouse driver interfaces are provided to set the mickey-to-pixel
mapping and the dimensions of the screen in pixels.
ΓòÉΓòÉΓòÉ 15.4.18. VCDROM Device Driver ΓòÉΓòÉΓòÉ
The VCDROM virtual device driver enables audio support for CD-ROM applications
running in virtual DOS machines. In native DOS, audio and other IOCTL support
is provided by the pass-through function of the CD-ROM file system driver,
MSCDEX. VCDROM provides two features necessary to support DOS CD-ROM
applications:
It emulates the presence of the MSCDEX
It translates the DOS style IOCTLs into requests that the physical CD-ROM
device driver can understand.
VCDROM provides only audio IOCTL support and not a full emulation of MSCDEX, as
most DOS CD-ROM applications use the standard DOS interface for file system
services and the MSCDEX interface for audio services only. Any application that
calls MSCDEX for file system services will not run in a virtual DOS machine.
ΓòÉΓòÉΓòÉ 15.4.19. Virtual Video Device Driver ΓòÉΓòÉΓòÉ
VDM video activity consists of both port I/O and memory operations. Virtual
video device drivers are provided to support concurrent operations by multiple
VDMs. A number of virtual video device drivers are provided by OS/2 Version
2.0, and are installed depending upon the physical display adapter types
present in the system:
VCGA.SYS provides support for CGA devices
VEGA.SYS provides support for EGA devices
VVGA.SYS provides support for VGA devices
VSVGA.SYS provides support for SVGA devices
VEGB.SYS provides support for VGA devices when configured to operate in EGA
modes only
V8514.SYS provides support for the display adapter 8514/A
VXGA.SYS provides support for the XGA display adapter.
In the following discussion, the term VVIDEO will be used generically to refer
to all virtual video device drivers.
By trapping all I/O operations and mapping a virtual video memory buffer to the
region where a VDM expects physical video memory, VVIDEO insulates the physical
hardware from background VDM activity. Only a foreground VDM's video
operations are allowed to write directly to the physical hardware.
The major IBM adapter types (MONO, CGA, EGA, VGA, XGA and 8514) are fully
supported by VVIDEO, in that it supports all standard modes of operation for
multiple VDMs (concurrently, if all VDMs are running in text modes).
The following is a list of the video configurations supported and their default
mode of operation:
Table "List of Supported Video Configurations"
As in a native DOS environment, the default setting of the equipment flags
determines which display adapter is the primary display. VVIDEO examines this
to determine which will be the primary display. The video signal for secondary
displays is initially disabled, until such time as a MODE command or user
application explicitly enables it.
VDM Screen-Switching
The OS/2 Version 2.0 session manager informs VVIDEO whenever a VDM's display
state changes, ensuring that no more than one foreground VDM exists at any
point in time, and that no VDMs are regarded as foreground processes while any
other protected mode process, including the operating system shell, is in
foreground. This mutually exclusive activity relationship between VVIDEO and
OS/2 display drivers ensures screen integrity.
VDMs in background are switchable at any time since their state is maintained
in memory by VVIDEO, rather than in the device itself. 32KB of virtual video
buffer memory is allocated by VVIDEO for each VDM upon creation. This is the
maximum buffer size addressable in any text mode. When the VDM is switched to
foreground, the video buffer is reallocated to the maximum size supported by
the adapter, with a limit of 256KB.
The act of switching a VDM from foreground to background or vice versa requires
that the calling routine yield control, and hence there may be a time delay
during the switch. In order to preserve the integrity of the video buffer, the
VDM is suspended for the duration of the screen switch, to avoid any portion of
the video state that was already copied to or from the hardware being changed
before the switch is complete.
Foreground VDM Support
There are literally no limits to what a VDM can do with video hardware when
running in foreground, since it has complete access to all ports and device
memory through VVIDEO. I/O trapping is still operative, but only to "shadow"
changes and ensure the ability to switch screens.
Background VDM Support
VDMs running in the background must always use virtual video memory, which is
actually normal system memory that has been mapped into the VDM's video address
space. In cases where the selected video mode (typically a graphics mode)
requires multiple planes of video memory, normal system memory is inadequate to
effectively virtualize video memory.
Whenever a VDM running the in background places the video hardware in a
multi-plane graphics mode, virtual video memory is invalidated and if touched,
results in the VDM being "frozen". If the VDM returns to a single-plane video
mode (implying that it never accessed video memory), then its virtual video
memory is validated once more. This approach allows VDMs to switch between
different text modes entirely in background, without the risk of being frozen.
To support graphics operation in the background, VVIDEO must trap all video
memory references and remap them to a set of simulated planes, or use some form
of hardware-assisted virtualization that Presentation Manager and the other
OS/2 processes know nothing about.
Suspended Background VDM: There are three cases in which DOS graphics
applications may be suspended (receive no processor time) when running in the
background:
1. A DOS multiplane graphics application that uses advanced graphics, such as
640x480x16 or 640x350x16, will be suspended, regardless of the graphics
adapter installed, if any other DOS application is running in the
foreground in a full-screen session.
2. A DOS multiplane graphics application that uses advanced graphics, such as
640x480x16 or 640x350x16, will be suspended when a Presentation Manager
session is running in the foreground in XGA mode. Currently, this situation
occurs even if you have an Extended Graphics Array (XGA) and a Video
Graphics Array (VGA) adapter connected to your system.
3. A DOS multiplane graphics application that uses 1024x768x16 graphics mode
will be suspended when a Presentation Manager session is running in the
foreground in 8514/A mode.
Note that suspending DOS applications running in the background generally poses
no problems unless the applications are timing-dependent, such as
communications or process-control applications. In these cases, suspending them
may cause them to fail. Avoid this situation by running these applications in
the foreground in full-screen sessions only. If they are graphics applications,
run them only in a single-plane mode, such as 640x200x2, 320x200x256, or
640x480x2, in full-screen sessions.
Note also that for WIN-OS/2 sessions, set the VIDEO_SWITCH_NOTIFICATION DOS
setting to ON to avoid having Windows programs suspended when running in the
background.
Graphical Applications Programs Support: OS/2 Version 2.0 supports a broad
variety of display-adapter hardware as you can see from Table "Graphical
Applications Programs Support under OS/2 Version 2.0". This allows OS/2
programs, DOS programs, and Windows programs to run in both windowed and
full-screen sessions. OS/2, DOS, and Windows programs can run successfully in
both the foreground and the background. Normally, the OS/2 user need not be
concerned with the graphics modes that are used within a program, or whether a
program will run successfully in a background session.
Some types of display adapters do, however, place limits on the ability of the
OS/2 operating system to run certain classes of DOS and Windows graphics
programs in the background. The limits exist because of the difficulty of
providing virtual access to the display-adapter hardware without disturbing
either the foreground session or other background sessions.
Under certain conditions, DOS applications that use graphical display modes
will become suspended in background sessions when they attempt to write to the
display.
Table "Graphical Applications Programs Support under OS/2 Version 2.0" gives
you an overview of what happens with graphical applications programs in
combination with different display adapters.
To determine under what conditions your applications will run in a background
session in Table "Graphical Applications Programs Support under OS/2 Version
2.0" as described now:
1. Find your graphical display hardware in the "Type of Video" column.
2. Find your System Desktop Mode.
3. Read across the table to your application column.
For example, assume you have a DOS application using VGA mode on a system with
VGA video. The application is in full-screen. To determine if the application
will be suspended:
1. Find your type of video (VGA) in the "Type of Video" column.
2. Find your System Desktop Mode (VGA).
3. Read across the table to your application column (DOS Application, Matches
Desktop Mode, Full-Screen).
The PF indicates that the DOS application runs when PM has control of the
screen or when the application is in a foreground session.
Device-Independent Pointer Services
VVIDEO provides services which allow the virtual mouse driver to define a
pointer image and specify its position. Since the position must always be
given relative to the physical dimensions of the VDM's screen, and since
coordinates may change whenever the video mode is reset, the virtual mouse
driver provides an entry point which is notified of such changes by VVIDEO.
These interfaces are device-independent because dimensions are always given in
terms of pixels or character cells, and not in predefined video mode
identifiers. By separating the pointer-drawing code from the virtual mouse
driver, mouse support becomes automatically available on any video adapter.
Font Support
At VDM creation time only a single font exists; this is either a default font
contained in video ROM, or one specified by OS/2 if code page support is
active. In the latter case, VVIDEO automatically loads the OS/2 code page font
whenever the VDM restores the default ROM font by resetting the video mode.
Note that since the process of loading a font is essentially the same as
entering a graphics mode, background VDMs will "freeze" if they attempt this.
Clipboard Support
To transfer VDM screen contents to the clipboard, VVIDEO provides two services:
one to return the VDM's video configuration, and a second to copy the video
contents to a shell-supplied buffer address. The shell then handles the
transfer from this buffer to the clipboard.
ΓòÉΓòÉΓòÉ 15.5. Virtual Device Helper Services ΓòÉΓòÉΓòÉ
In order to allocate, free and reallocate memory, virtual device drivers use
the virtual device helper (VDH) memory management services. These services help
the virtual device driver maintain a linear heap for each VDM. This heap is
maintained as a linked list; each entry in this linked list refers to a linear
region with attributes such as:
Reserved
Allocated
Mapped
Page granular
Byte granular.
Memory allocation is always done in chunks of 4KB (page granular), but byte
granular services are provided for handling instance data reservations and for
memory allocation in the DOS environment.
ΓòÉΓòÉΓòÉ 15.5.1. Memory Management ΓòÉΓòÉΓòÉ
VDH services provide the following support for memory management within virtual
device drivers:
Allocation/reallocation/freeing services for:
- Global and per-VDM objects
- Page and byte granular objects
- Options for fixed, swappable allocations.
Allocation of memory in DOS environment
Reserve specified linear space
V86-mode stack manipulation
Mapping services:
- Map to physical address
- Map to linear address
- Map to invalid address
- Map to black holes (don't care) pages
Copy/exchange services
Block management services (pools of equal-size memory blocks)
Query services:
- Query the biggest linear space in a specified range
- Query dirty bits for set of pages
- Query amount of free virtual memory.
ΓòÉΓòÉΓòÉ 15.5.2. Semaphore Services ΓòÉΓòÉΓòÉ
These services are used to synchronize a virtual device driver with another
OS/2 process. If a virtual device driver blocks a VDM process, that VDM will
not receive any simulated hardware interrupts until it becomes unblocked. VDH
semaphore services are used to handle the following:
Mutual exclusion and event semaphores
OS/2 process to physical device driver communication
Virtual device driver/physical device driver communication
VDM event list management.
ΓòÉΓòÉΓòÉ 15.5.3. Freeze/Thaw Services ΓòÉΓòÉΓòÉ
The virtual video device driver uses these services to freeze and unfreeze the
operation of a VDM. This is typically required in response to a video mode
switch in a background VDM, which would place the VDM in a video mode not
supported when running in the background.
ΓòÉΓòÉΓòÉ 15.5.4. Timer/Priority Services ΓòÉΓòÉΓòÉ
Timer services are provided to support the virtual programmable interrupt
controller in the event of a time out occurring in an interrupt handler.
Priority services are also used by VPIC to handle VDM scheduling priority.
ΓòÉΓòÉΓòÉ 15.5.5. Page Fault Services ΓòÉΓòÉΓòÉ
A virtual device driver may register its own handler for page fault exceptions,
in order to handle such events in an orderly manner. VDH services are provided
in order to support this registration.
ΓòÉΓòÉΓòÉ 15.5.6. Other Services ΓòÉΓòÉΓòÉ
Error message and display
Terminate VDM service
ΓòÉΓòÉΓòÉ 15.5.7. VDH Functions ΓòÉΓòÉΓòÉ
The following list summarizes most of the VDH functions:
VDH API Description
VDHAllocDosMem Reserve memory for stub DOS device driver
VDHAllocMem Allocate small buffers
VDHAllocPages Allocate linear space and commit backing storage
VDHArmReturnHook Used to catch return from a VDHPushFarCall
VDHArmSTIHook Receive control when current DOS session enables
simulated interrupts
VDHClearVIRR Clear interrupt request flag
VDHClearSem Used to protect global structures
VDHCloseVDD Terminate communication between virtual device
driver and physical device driver
VDHCopyMem Used by the EMM copy service and to copy device
driver stub to VDM
VDHExchangeMem Used by the EMM exchange service
VDHFindFreePages Find a region of free linear space below 1MB + 64KB
VDHFreeMem Deallocate small buffers
VDHFreePages Deallocate memory objects
VDHGetDirtyPageInfo Read and clear dirty-page bits (Dirty bits indicate
whether a page has been written to)
VDHInstallFaultHook Install hook for page faults
VDHInstallIntHook Used to hook INT 67h (EMS interrupt)
VDHInstallUserHook Register to get notification about VDM creation and
termination
VDHLockMem Verifies that a specified memory region is available
and locks it
VDHMapPages Used to map EMS windows to EMS objects or to unmap
pages
VDHNotIdle Resets VDHPostIdle
VDHOpenVDD Establish communication between virtual device
driver and physical device driver
VDHOpenVIRQ Returns an IRQ handle for use with the other VPIC
services
VDHPopInt Remove ROM return address from user's CS:IP
VDHPostIdle Put VDM into sleeping state.
VDHPushFarCall Used by the EMM map and call service
VDHPushInt Change control to the V86-interrupt handler
VDHQueryConfigString Used to retrieve configuration data strings
VDHQueryFreePages Determine amount of free virtual memory
VDHQuerySysValues Determine VDM conventional memory size
VDHReallocPage Change previous page allocation
VDHRequestSem Used to protect global data
VDHRequestVDD Requests the operation of a VDD
VDHReservePage Reserve region of linear space below 1MB + 64KB
VDHSetDOSDevic Register DOS device driver
VDHSetVIRR Set interrupt request flag
VDHUnreservePages Unreserve region of linear space below 1MB + 64KB
VDHWakeIdle Awake VDM from sleeping state
VDHYield Yield the processor to any other thread of equal or
higher priority
These functions are only valid when issued from within a module executing at
privilege level 0; they cannot be issued by normal protected mode application
processes.
ΓòÉΓòÉΓòÉ 15.6. VDM Termination ΓòÉΓòÉΓòÉ
Virtual device drivers are responsible for a number of actions upon termination
of a VDM. The nature of these actions is largely dependent on whether the VDM
terminates normally or abnormally.
ΓòÉΓòÉΓòÉ 15.6.1. Normal Termination ΓòÉΓòÉΓòÉ
A virtual device driver typically registers a VDM_TERMINATE hook with the
Virtual DOS Machine Manager, which causes the virtual device driver to be
informed when a VDM is terminated. When the VDM_TERMINATE hook is called, the
virtual device driver is responsible for freeing all resources allocated on
behalf of the terminating VDM.
ΓòÉΓòÉΓòÉ 15.6.2. Abnormal Termination ΓòÉΓòÉΓòÉ
Virtual device drivers may experience a number of different error conditions,
and must be able to act in order to recover from such errors where possible.
Errors Returned from VDH Services
Requests for VDH services may be refused by the operating system or may fail
due to lack of resources. For example, a call to VDHAllocMem() may return 0,
indicating that the memory allocation request cannot be satisfied.
During initialization of the virtual device driver or creation of a VDM such an
error would cause the initialization or creation to be terminated. During
execution of a DOS application, the virtual device driver should return control
to the application, indicating the failure of the requested application
service. If this cannot be done, the VDM must be terminated.
Bad Parameter Passed to VDH Service
A virtual device driver may make a service request with bad data, typically due
to a bug in the device driver code; such events are likely during development
and testing. For example, the virtual device driver may attempt to issue a
VDHFreeMem() function call specifying an address which was not previously
allocated using VDHAllocMem().
Such errors are costly; since virtual device drivers operate at privilege level
0 and hence have access to all code and data in the system, it is impossible to
localize the effect to a single VDM, or to be certain that the event has not
corrupted data or control structures in the operating system kernel. In such
cases, the Virtual DOS Machine Manager will halt the system.
Virtual Device Driver Consistency Failures
A virtual device driver may detect inconsistencies within its own state
information. Such inconsistencies may be experienced in either global or
instance state data. The virtual device driver must inform the user of the
error. If the error can be isolated to the instance data of a single VDM, that
VDM must be terminated. If the error is in global state data, it will be
necessary to halt the system.
Note that halting the entire system is highly unfriendly behavior on the part
of a virtual device driver. Very rarely, if ever, should such action become
necessary. A virtual device driver should take all possible steps to isolate
any state inconsistencies to a single VDM only.
Illegal Operation by a DOS Application
DOS applications running in VDMs may issue illegal instructions. For example,
a DOS application may issue an OUT instruction to a port controlled by the
virtual disk device driver, which does not support direct hardware control of
the disk controller.
In such cases, the virtual device driver must inform the user of the error
condition and either ignore the error or terminate the VDM and the application
within it.
ΓòÉΓòÉΓòÉ 15.7. Summary ΓòÉΓòÉΓòÉ
OS/2 Version 2.0 provides device drivers to handle the interface between the
operating system and the hardware. Physical device drivers are used by normal
protected mode processes running OS/2 applications, while virtual device
drivers are used by DOS applications running in virtual DOS machines.
Virtual device drivers provide a means of representing hardware devices to a
DOS application in a virtual DOS machine, such that the devices appear to the
application as though the application had sole control over the device. In
this way, MVDM allows DOS applications to issue instructions which directly
manipulate hardware devices or the DOS system environment, while maintaining
full protection of other applications in the system. Virtual device drivers
typically access hardware by requesting services from physical device drivers.
Virtual device drivers are used not only for shared hardware devices, but also
for other aspects of the machine environment, such as BIOS, CMOS, and the
(physical) programmable interrupt controller. Through the use of virtual
device drivers for these components, DOS applications may freely access and
manipulate them without affecting other DOS applications or OS/2 applications
in the system.
OS/2 Version 2.0 provides a number of standard virtual device drivers for the
DOS system environment and common hardware devices. Hardware vendors may
develop virtual device drivers for their own hardware adapters. Note that if a
hardware device will be dedicated to one application (that is, sharing of the
hardware is not required) then a virtual device driver is not needed; the
normal DOS device driver will allow the application to access the hardware
device as in a native DOS environment.
A virtual device driver operates at privilege level 0, and therefore cannot
access operating system services via the normal application programming
interfaces provided by OS/2 Version 2.0. Instead, a set of virtual device
helper services is provided to enable virtual device drivers to access system
services. Virtual device drivers may be written in a high-level language such
as "C".
ΓòÉΓòÉΓòÉ 16. Memory Extender Support ΓòÉΓòÉΓòÉ
Many popular DOS applications use memory extenders such as EMS and/or XMS to
gain access to memory above the 1MB real mode addressing limit on the 80286,
80386, or 80486 processors. Such extenders allow DOS applications to have
total code and data spaces larger than the available base memory, and to have
very large code or data objects loaded into memory for enhanced execution
speed. The standard configuration of OS/2 Version 2.0 provides both LIM EMS
Version 4.0 (which includes backward compatibility with LIM Version 3.X) and
LIMA XMS Version 2.0 functions for DOS applications running in virtual DOS
machines.
Figure "General Overview of Different Types of Memory for DOS Applications"
This chapter describes the implementation of EMS and XMS support for virtual
DOS machines. For those readers not already familiar with the architecture of
these memory extenders, an overview is provided in Memory Extender
Architectures.
ΓòÉΓòÉΓòÉ 16.1. Expanded Memory Support ΓòÉΓòÉΓòÉ
OS/2 Version 2.0 supports expanded memory according to the LIM EMS Version 4.0.
Under DOS, special hardware is normally required to support EMS, although a
number of software-based EMS emulation packages exist. MVDM supports EMS by
mapping memory allocation requests into the linear process address space, using
normal system memory. Hence no special hardware or software is required.
The OS/2 Version 2.0 LIM EMS emulation provides the following function:
Implements all the required functions in the LIM EMS Version 4.0.
Provides each VDM with a separate EMS emulation. Each VDM has its own set of
expanded objects so that features like interprocess communication work as
they would if each VDM were running on a different real 80386. Each VDM
cannot affect the availability of objects in other VDMs or access memory in
other VDMs.
Provides for remapping of conventional memory (below 640KB) for use by
programs like Windows 2.0.
Provides configurable limits for how much EMS memory is available across
VDMs, as well as a limit per VDM. The DOS Settings feature allows the user
to override the per-VDM limit, subject to the constraint given by the
overall limit.
Supports multiple physical to single logical mappings. Different 8086
addresses can map to the same expanded memory object address. This is
required by programs like Lotus 1-2-3.
EMS can be removed and the operating system can run without loading EMS in
any VDM session.
Memory objects are mapped into the V86 mode address space (below 1MB), so DOS
applications can access very large address spaces. Applications access EMS
services using the DOS interrupt INT 67h.
ΓòÉΓòÉΓòÉ 16.1.1. Virtual Expanded Memory Manager ΓòÉΓòÉΓòÉ
EMS services are implemented under MVDM using a virtual device driver known as
the Virtual Expanded Memory Manager (VEMM), which offers a separate EMS
emulation to each VDM. This implementation is accomplished by placing most VEMM
control structures in a per-VDM data area outside the V86 mode address space.
Each VDM has up to 255 handles, 15 alternate register sets, remappable
conventional memory for operating system use, and a 16KB "raw" block size.
VEMM prehooks interrupt vector 67h through a VDH service to catch software
interrupts for EMS services. Prehooking means that VEMM gains control before
the V86 mode interrupt vector is called. VEMM also provides a V86 mode stub
driver used to indicate to DOS applications that EMS is available. This stub
must hook INT 67h so that applications can find a particular string in the
header to determine if EMS is available. When, as in the typical case,
applications have not also hooked INT 67h, VEMM handles service requests at
prehook time. When INT 67 has been hooked, VEMM handles requests when the
stub's hook calls it by doing an INT 67h from inside the stub.
To prevent VDM's from grabbing large amounts of EMS memory, there is a
configurable default per VDM limit. VEMM depends heavily upon the memory
manager. EMS object allocation, reallocation, or deallocation is accomplished
by requesting corresponding services from VDH services. Most VEMM creation time
setup is postponed until the first INT 67h service request is made. Figure
"Expanded Memory Manager Control Flow" shows the flow of control when a DOS
application makes an EMS service request from within a VDM:
1. INT 67h service requests are trapped by the Virtual DOS Machine Manager and
routed to VEMM.
2. The VEMM makes the appropriate requests to VDH services to allocate or
manipulate the EMS object.
Expanded Memory Manager Control Flow
During the initialization of the VDM the VDM Manager loads and initializes the
EMS DOS stub device driver into the VDM address space.
The VDM Application can use either of two methods to test for the existence of
the VEMM:
1. Issue an open request (INT 21h Function 3DH) using the guaranteed device
name of the VEMM driver. If the open function succeeds, either the driver
is present or a file with the same name coincidentally exists on the
default disk drive. To rule out the latter, the application can use
IOCTL(INT 21h Function 44H) subfunctions 00h and 07h to ensure that VEMM is
present. Don't forget to use INT 21H Function 3Eh to close the handle that
was obtained from the open function, so that the handle can be reused for
another file or device.
2. Look for a special signature in the EMS DOS stub device driver which
signals the VDM Application that EMS is available. This search is done by
using the address that is found in the INT 67h vector to inspect the device
header of the presumed VEMM which is, in this case, the fooling EMS DOS
stub device driver. Interrupt handlers and device drivers must use this
method. If the VEMM seems to be present, the name field at a special offset
of the device header contains a special string. This method is not only
avoiding the relatively high overhead of an VDM DOS open function but is
nearly foolproof. However, it is somewhat less well behaved because it
involves inspection of memory that does not belong to the application.
The only task of the EMS DOS stub device driver is to tell the VDM DOS
application that EMS is available. As soon as this is done the regular EMS
business can start as explained in the following points:
1. The VDM Application issues a INT 67h service request.
2. The VDM Manager loads the VEMM.
3. The VDM Manager initialization, creation, termination calls for
EMM-objects.
4. The VDM Manager traps the VDM application's INT 67h service request and
routes it to VEMM.
5. The VDM callback for V86 call with far return.
6. The VEMM requests corresponding services from the VDH services:
Creation/termination handler registration
INT 67h pre-hooking
Linear address reservation
Memory management.
7. The result is returned.
This constellation also allows a VDM application to hook INT 67h.
Note that unlike most virtual device drivers, VEMM does not have a
corresponding physical device driver. Instead, VEMM manages its memory using
the OS/2 Version 2.0 operating system kernel's memory management services. EMS
object allocation, reallocation, or deallocation is accomplished by requesting
corresponding services from the operating system's memory manager. For
example, when an application requests the allocation of an expanded memory
object, VEMM asks the memory manager to allocate a memory object in linear
memory outside any VDM.
Structure
The VEMM module consists of:
An Initialization Component that determines the default size at boot time
A Creation Component that initializes per-VDM structures when a VDM is
created
A Router that decodes application INT 67h (and routes the call to a service
routine) and 30 service routines with associated sub-services.
Each VDM has a 255-entry EMS handle table used to keep track of the size and
allocation of expanded memory objects, 16 register sets that indicate which
parts of the expanded objects are mapped into the VDM address space, and save
tables to save register set contents. Only one register set is active at a
time. That active register set indicates the actual page table contents.
Switching register sets or restoring a saved register set resets all aliases in
the windows to those indicated by the new register set. Unmapped pages are set
to "black hole" memory. The memory manager's page size for all these
operations is 4KB. VEMM makes the adjustment for its 16KB page size.
Initialization
VEMM is typically installed at system initialization time, via a DEVICE=
statement in CONFIG.SYS, as shown below:
DEVICE=C:\OS2\MDOS\VEMM.SYS 4096, 2048
To prevent VDMs from using all available memory, there is an overall limit on
the amount of EMS memory, and a default limit for each VDM to prevent a VDM
from requesting all available EMS memory. The defaults for these limits are
specified in the DEVICE= statement for VEMM. The default limit for each VDM
may be overridden using the DOS Settings feature.
Setting the overall limit to zero disables EMS in all VDMs, regardless of the
per-VDM value. Setting the per-VDM value to zero disables EMS in all VDMs
unless their entries on the Presentation Manager desktop specify a non-zero EMS
size. Setting the EMS size to zero for an entry on the desktop disables EMS
for that application only. Most users need never change the default value.
DOS settings for frame position, and the size of extra mapping regions above
and below 640KB may be configured by the user; see DOS Settings.
Upon installation, an initialization routine within VEMM supplies the entry
point addresses of VEMM creation and close routines to the Virtual DOS Machine
Manager.
Most VEMM setup is postponed until the first INT 67H service request is made.
Only remappable conventional memory is set up before that time. This assures
that other virtual device drivers have a chance to reserve ROM and device
memory areas.
VDM Creation
Upon creation of a VDM, a VDH service is used to get the EMS size for that VDM.
This will return a string if the DOS program's entry on the desktop has an
associated EMS size. If not defined, the default size retrieved from
CONFIG.SYS at system initialization is used. If EMS size is not zero, the
following steps are then performed:
1. Two mappable windows are located and reserved.
2. Memory is mapped into the low window.
3. Interrupt 67h is hooked using a VDH service.
4. The V86 mode device driver stub is loaded.
5. An initial block of the handle table is allocated.
Upon VDM creation, VEMM allocates a block of memory in the area between 256KB
and RMSIZE [The RMSIZE statement in CONFIG.SYS specifies the maximum size of a
VDM's address space; values up to 640KB are allowed. ] and maps it into the VDM
address space. VEMM requests VDH services to locate the largest free address
range in the V86 mode address space above 640KB that is available for the
mappable window. VEMM then reserves the largest range available that is at
least 64KB and no more than 128KB in size, and is a multiple of 16KB. If an
extended BIOS data area is present, the returned free range will be below this
area so that BIOS cannot be inadvertently mapped away.
Waiting until creation time to reserve this memory allows virtual device
drivers with actual hardware to claim their addresses first, since VEMM can
place its memory at any available address. A consequence of this technique is
that the space is reserved only for the VDM being created. It could be in a
different location or be a different size for other VDMs.
VEMM performs mapping by requesting the operating system's memory manager to
alias linear space inside a mappable window in the V86 mode address space to a
memory region outside the V86 address space. The application can then access
this part of the expanded memory object.
The VEMM virtual device driver prehooks interrupt vector 67h through a VDH
service to catch software interrupts for EMS services. Prehooking means that
VEMM gains control before the V86 mode interrupt vector is called. VEMM also
provides a stub driver, the sole function of which is to indicate to DOS
applications that EMS is available.
VEMM then arranges for the loading of a stub device driver in the VDM. This
driver provides a header within the V86 mode address space which can be read by
an application searching for the name of the real mode EMS driver. It also
responds to a few simple requests made to its strategy routine, basically
replying that it is present and ready. The stub driver does not actually
process EMS service requests; these are handled by VEMM.
Routing
The router receives notification from the Virtual DOS Machine Manager when an
application issues an INT 67h request. The router checks the request to ensure
that it is valid, and then causes an exception which is routed to the Virtual
DOS Machine Manager. The Virtual DOS Machine Manager then reflects the
interrupt back into the VDM's interrupt vector table. This technique is
necessary since interrupt vector hooks are only allowed after application code
has been executed. The V86 mode interrupt vector for INT 67h causes another
exception which is routed to the Virtual DOS Machine Manager which then calls
VEMM.
The EMS Alter Map and Call service allows an application to have VEMM remap
memory to place a routine within the V86 mode address space, call that routine
and then remap memory to its previous state again after the routine issues a
far return. This call can occur recursively; the application code that is
called can in turn use the Alter Map and Call service.
VEMM does the initial remapping and stores the after-call remapping information
on the client's stack. VDH services are used to call the application's routine
and intercept the return. VEMM supplies the Virtual DOS Machine Manager with a
V86 mode address to call and a VEMM handler which is invoked when the
application routine does a far return. After the routine returns, VEMM
restores the original mapping saved on the client's stack.
The Remap and Jump service is similar but does not require interception of an
application routine's return or the saving of a mapping. Remapping is done and
the CS:IP is changed to jump to the address provided by the application.
Information calls involve at most a quick search of structures. Structures are
maintained to provide information about handles, allocations, and VEMM
capabilities. Handle directory services are also provided. The number of
pages VEMM reports as available is the minimum of the number of pages the VDM
has left in VEMM pages and the amount the memory manager estimates is
available.
Protection
A pseudo-random key is produced with the first protection call made by a VDM
and also for the first protection call made after a key was returned. This key
is given to the application which made the call that caused its generation.
OSEnabled can be reset only by the owner of the key. The key owner can also
return the key. OSEnabled indicates whether or not protected functions can be
executed. The key will be generated by operations on the current time to
ensure that the key changes, even for multiple calls between successive timer
ticks.
ΓòÉΓòÉΓòÉ 16.1.2. EMS Object Mapping ΓòÉΓòÉΓòÉ
Mappable windows are located by asking the Virtual DOS Machine Manager to
provide free linear regions after other virtual device drivers have claimed the
address ranges required for their hardware. The base window (region from 256KB
to RMSIZE) is mapped to an expanded object at VDM creation time. This window
is used as normal memory by DOS or DOS applications, but can also be remapped
by applications that wish to do so.
Some applications assume mappable regions begin on 17KB boundaries, although
this is not part of the EMS specification. OS/2 Version 2.0 follows this
undocumented convention.
There are multiple techniques for saving and restoring mappings in LIM. Save
tables and copies of parts of register sets copied to application memory can be
used to save and restore mappings. All contain a pairing of physical segment
and <handle, logical page> pairs. Saving of mappings is done by segment,
handle, and logical page entries to the buffer in which the save is performed.
For saves that save the entire mapping, the register index need not be stored.
Mappings are restored by making a set of aliasing calls to the memory manager,
and copying the new mapping into the active register set.
Illegal mappings are mapped to black hole pages. A black hole page is a page
that does not cause faults, but which need not store values written to it.
Black hole pages can be implemented as invalid addresses that float on the bus,
ROM pages if there is no ROM caching, a wasted physical memory page, or a
discardable page.
Structures returned to the client will use physical pages rather than segments
since these are smaller for the client to store and are simpler to check for
validity when restored. All save structures held by the V86 client use a
checksum to detect tampering by the V86 client.
LIM allows an application to reallocate the special handle that contains
conventional memory, thus allowing the expanded memory to be reused. This is
supposed to be done only by an operating system program that knows the special
handle is handle 0, but may conceivably be done by any application. Note that
applications can deallocate the DOS memory area. If they do this and fail to
restore it, COMMAND.COM is unable to reload and the VDM will terminate. This
behavior is identical to a native DOS environment.
Register Sets
Application requests to map pages into a register set are handled by storing
the new mappings in the register set data structure. A call is made to the
memory manager to alias pages or set them to a black hole for unmapped pages.
The current register set is changed to a new register set by aliasing linear
memory through memory manager calls according to the new registers and changing
the current register set variable. Other calls allow saving and restoring
register sets from an application-supplied array similar to Save/Restore above.
Allocating/Deallocating Objects
Upon receiving an application request to allocate, reallocate, or deallocate an
EMS object, VEMM transforms the request into corresponding calls to the OS/2
Version 2.0 memory manager. Each EMS object is allocated as a separate memory
object in a linear address range in the VDM's process address space, but
outside the V86 mode address space. The memory manager returns the start
address and size of each EMS object to VEMM, which then updates its EMS handle
table accordingly.
Allocations are made by selecting a free EMS object handle; a free handle has a
start address of zero. VEMM then requests the memory manager to allocate the
required memory, and records the start address and size of the object as
returned by the memory manager. The total allocation size for each VDM and the
total allocations across all VDMs are maintained so that the maximum allocation
size is not exceeded. If an allocation is of size zero, no actual allocation
is made and a non-zero address and zero size are recorded in the handle entry.
When a deallocation request is made, the address in the handle is changed to 0
and the memory manager is called to free the allocation. Reallocation requests
are serviced by passing on the request to a VDH service and recording the new
size and start address. Since reallocations may lead to object movement, pages
mapped from the object are unmapped before reallocation and remapped afterward.
When an application reallocates to zero, VEMM has the memory manager deallocate
the memory object, and changes the handle table entry so it has zero pages with
a meaningless non-zero address to indicate the handle is still in use. Objects
of size zero are allowed in VEMM, but not in OS/2, so VEMM will free the memory
but retain its own data for the object handle. When a non-zero reallocation is
performed on the object, a new object is transparently allocated.
LIM allows an application to deallocate memory that is mapped into the current
register set, alternate register sets, or save maps (all internal structures
that save mappings). EMS is silent about what should happen if an application
touches this mapped memory after deallocation. Since 8086 applications are
generally allowed to search through the address space without harm, these
deallocated pages should be remapped to a black hole.
Searching through all 255 SaveMaps and 15 non-current register sets is
expensive even with optimizations. Exhaustive search slows deallocations and
shrinking reallocations, and keeping track of the locations of mappings slows
mapping operations. Therefore, upon deallocation or shrinking reallocation,
only the current register set is checked for deallocated pages. Stored
registers (255 SaveMaps and 15 RegSets for the VDM) will not be checked until
they are reactivated. When an invalid page is found during remapping, it is
simply remapped to the black hole.
ΓòÉΓòÉΓòÉ 16.1.3. Per-VDM Data Allocation ΓòÉΓòÉΓòÉ
Handle table entries, register sets, save tables, and handle names all require
a good deal of space if used fully. Most of these data structures typically do
not require their maximum possible size. For this reason, they are allocated
dynamically by VEMM in order to reduce memory utilization.
Memory for a register set is allocated when clients allocate the register set.
An array of 16 pointers will address buffers for allocated register sets; these
pointers are null for free register sets that applications may yet allocate.
The handle table, handle name table, and save tables are all allocated with a
directory structure. A directory is an array of pointers to allocation blocks;
each allocation block contains enough space for multiple entries. This allows a
specific entry to be found by specifying the block and entry offset within the
block. Since each can have at most 255 entries, both the block and offset can
fit in a single byte.
An allocated handle entry contains an index for its associated save table or
name (if used). For unallocated objects, the index is zero. The smallest free
handle will be allocated when a handle is needed, thus requiring less memory to
be allocated for the handle table.
The name table is kept in packed form. When an entry is freed, the last entry
is moved into the free hd, thus reducing space requirements.
Save table entries are larger and generally have short lifetimes. These will
be allocated in the same way handles are allocated (that is, where the smallest
available is allocated first). For all three of these tables, when new entries
are needed and all blocks are full, a new block is allocated.
ΓòÉΓòÉΓòÉ 16.1.4. Problems with Expanded Memory ΓòÉΓòÉΓòÉ
EMS requires a 64KB block of contiguous free memory in the address range 640KB
to 1MB for its page frame. As we can see from Figure "General Overview of
Different Types of Memory for DOS Applications" this memory range is shared
with BIOS, hardware buffers and device drivers. If your application reports
that no EMS memory is available, even if you have used the DOS Settings option
EMS_MEMORY_LIMIT to set a non-zero value, it could be that a 64KB page frame
location could not be found. See Expanded Memory (EMS) and Upper Memory (UMB)
on how to resolve this contention.
If a program returns an error due to insufficient expanded memory, the
following points should be addressed:
Ensure that CONFIG.SYS and/or AUTOEXEC.BAT do not start unnecessary programs
that use expanded memory.
Change the DEVICE= statement for VEMM.SYS in CONFIG.SYS to provide more
expanded memory to every VDM. Alternatively, use the EMS Memory Size DOS
Settings to allocate more memory to a specific VDM. See DOS Settings.
VEMM for OS/2 was designed to install for EMS only when the DOS application
makes its first EMS request. This was done for two reasons. First, it saves
time and memory. Second, it gives the DOS drivers or applications a chance to
access adapters in the EMS page frame address space. OS/2 V2.0 will recognize
adapters with the ROM signature header, but will not see adapter RAM/MMPIO
areas.
VEMM determines that it has space available during DOS Session creation but a
DOS program/driver could cause EMS to not install by accessing memory in the
page frame before calling the EMS driver. Lotus 1-2-3 Version 2.3 was found to
access the adapter space BEFORE calling EMS. On some machines, this caused no
EMS to be present for Lotus 1-2-3.
To satisfy this situation, VEMM has than been changed (after GA) to not wait
for the first EMS call. This should clear up the EMS problems related to
programs accessing the adapter address space (X'C0000'-X'E0000'). However, it
should be known that it is now possible for VEMM to claim areas that could
actually be adapter address space. In general, the user should be aware of this
situation. To resolve this we suggest to use the MEM_EXCLUDE property to force
EMS not to use the desired address space.
ΓòÉΓòÉΓòÉ 16.2. Expanded Memory (EMS) and Upper Memory (UMB) ΓòÉΓòÉΓòÉ
The following section applies to both VDM DOS Emulation and DOS VMB.
Expanded Memory Specification (EMS) is discussed in detail in Memory Extender
Support. One requirement of EMS is a page frame in real memory between 640KB
and 1MB (hex addresses X'A0000' to X'FFFFF'). Since IBM systems reserve
addresses X'A0000' to X'BFFFF' for video, and X'E0000' to X'FFFFF' for BIOS,
the EMS page frame is normally restricted to addresses between X'C0000' and
X'E0000'. This area can also be used for Upper Memory Blocks, where DOS device
drivers and resident programs can be loaded. This frees up valuable space below
640KB for conventional DOS programs.
Unfortunately, memory between X'C0000' and X'E0000' is also needed for Option
Adapter ROM and RAM. Indeed it can be difficult or even impossible to configure
EMS on a system which has several intelligent adapters installed.
There is really no solution to this problem (sometimes known as "RAM Cram")
under DOS. However OS/2 Version 2.0 provides an elegant alternative.
Normally a VDM inherits a memory map which mirrors the actual system hardware
configuration; adapter ROM and RAM addresses set by the PS/2 Reference Diskette
(or adapter switches on non-Micro Channel systems) are mapped into the VDM
address space and are not available for EMS or UMBs.
But since the VDM occupies virtual memory this can easily be changed. The DOS
Settings value MEM_INCLUDE_REGIONS parameter releases adapter addresses for use
as EMS or UMBs. In most cases this can be set to the complete X'C0000'-X'DFFFF'
range.
If a VDM uses an adapter directly (usually via a DOS device driver), the
adapter ROM or RAM address must not be specified in MEM_INCLUDE_REGIONS.
Addresses of adapters used indirectly by the VDM (through OS/2 Version 2.0) may
be included. For example, the full X'C0000'to X'DFFFF' range may be included on
a SCSI-based PS/2, even though the SCSI adapter ROM may occupy X'D8000' to
X'DFFFF'. The DOS VDM does not directly access the SCSI adapter so it does not
need SCSI ROM mapped into its address space. It can still access files on SCSI
disks via the OS/2 Version 2.0 file system.
Another example could be a 3270 connection adapter. Depending on the setup, it
could occupy 8KB of memory (for example, X'DE000' to X'E0000'). If you are
using Extended Services and Communications Manager to establish a DFT
connection to your /370 system, you could release this memory for use by DOS
applications and specify this address frame in the Include Region. Of course,
if you want to use a DOS-based emulator, such as Personal Communications/3270
Version 2.0, you can't include this area, as the DOS application and its device
driver want to access this adapter directly.
Note: The MEM_INCLUDE_REGIONS parameter should be entered as shown above,
using 5-digit hex addresses (not 4-digit segment addresses, as is often
the case). Also, note that the range is inclusive - you must specify
the second address as (for example) X'DFFFF', not X'E0000'. The
parameter is not validity-checked when entered. If an invalid parameter
is saved, the default (no include region) is used when the VDM is
initialized; no error message is generated.
In summary, a typical DOS VDM may have a 64KB EMS page frame and 64KB of UMBs
(or 128KB of UMBs) regardless of the hardware adapters installed. Such a
configuration is not possible under PC DOS.
ΓòÉΓòÉΓòÉ 16.3. Extended Memory Support ΓòÉΓòÉΓòÉ
The OS/2 Version 2.0 Multiple Virtual DOS Machines architecture provides
support for the LIMA Extended Memory Specification Version 2.0 specification,
in a similar manner to that provided for LIM EMS Version 4.0, using normal
system memory and emulating XMS functions. The following discusses how MVDM
support for the extended memory specification has been implemented.
The extended memory specification manages three different kinds of memory:
High Memory Area (HMA)
Upper Memory Blocks (UMBs) in the Upper Memory Area (UMA)
Extended Memory Blocks (EMBs).
Each of these areas is discussed as they relate to the implementation of
expanded memory support for VDMs in OS/2 Version 2.0. Figure "Memory Map of
Areas Supported by Extended Memory"below shows where these memory areas or
blocks reside in memory.
For more information regarding the Expanded Memory Specification, refer to DOS
Protected Mode Interface.
The OS/2 Version 2.0 LIMA XMS emulation provides the following functions:
Implements all LIMA XMS Version 2.0 functions.
Provides each VDM with a separate XMS emulation. Each VDM has its own High
Memory Area, Upper Memory Blocks and Extended Memory Blocks; hence features
such as interprocess communication work as if each VDM was running on a
different real 80386. A VDM therefore cannot affect the availability of
extended memory objects in other VDMs or access memory owned by other VDMs.
Provides configurable limits for how much XMS memory is available across all
VDMs as well as a limit per-VDM. The DOS Settings feature can override the
per-VDM limit, subject to the constraint given by the overall limit, and can
disable XMS altogether for a particular VDM if its installation conflicts
with the program being run in the VDM.
XMS can be removed and the operating system can run without loading XMS in
any VDM session.
Applications which use extended memory may use the XMS support in the same
manner as in a native DOS environment. In addition, portions of the DOS
operating system, device drivers and TSR programs may be loaded into extended
memory, thereby conserving memory within the DOS application address space for
application use.
Note that older applications which access extended memory directly, rather than
through an extended memory manager, may not be compatible with the XMS support
under MVDM. For example, Microsoft Windows Version 2.x cannot make use of
extended memory in a VDM.
ΓòÉΓòÉΓòÉ 16.3.1. Extended Memory Manager ΓòÉΓòÉΓòÉ
XMS services are implemented under MVDM using a virtual device driver known as
the Virtual Extended Memory Manager (VXMM) which is represented by the file
VXMS.SYS (VXMS). VXMM provides a separate XMS emulation for each VDM by placing
most VXMS control structures in a per-VDM data area outside the V86 mode
address space. The amount of memory available to a VDM, the number of handles,
and the existence of Upper Memory Blocks (UMBs) are all configurable parameters
which may be altered on a per-VDM basis.
The VXMM hooks interrupt vector 2Fh in order to announce its presence to
applications. It also provides a V86 stub device driver (XMM 3X device driver),
which indicates to DOS applications that XMS is available, but more importantly
acts as a V86 mode interface between the application and the VXMM proper.
VXMM depends heavily upon the memory manager. XMS object allocation
reallocation, and deallocation are accomplished by requesting corresponding
services from the memory manager. When an application requests the allocation
of a block of extended memory, for example, VXMS asks the memory manager to
allocate a memory object in linear memory outside any VDM. Reallocation and
deallocation are handled similarly.
All EMS functions are executed by calling the XMS Control Function, the address
of which can be obtained by a call to INT 2Fh. Arguments are passed in
registers.
Figure "Extended Memory Manager Control Flow"
During the initialization of the VDM the VDM Manager loads and initializes the
XMM DOS stub device driver into the VDM address space. As soon as there is a
XMS request the VDM Manager loads the the XMS virtual device driver VXMS.
a) The VDM Application issues a INT 15h service request. VXMS directly
hooks INT 15h for function 87h and 88h. It does not provide any services
through these calls but makes sure that no program tries to use extended
memory directly. INT 15h function 88h will respond that no normal
extended memory is available. Programs that want to use extended memory
directly by using INT 15 and RAMdisks (electronic disks) using INT 15
won't work. The MS DOS RAMDRIVE for DOS 5.0 does work because it uses
XMS instead of INT 15.
b) The VDM application issues INT 2Fh to determine if an XMS driver is
installed.
c) The VDM application issues INT 2Fh to determine if an XMS driver is
installed.
d) Next the VDM application issues a INT 2Fh to obtain the address of the
XMS driver's control function. As soon as the VDM Application got the
address of the XMS driver's control function it can use any of the
functions and call the XMM DOS stub device driver directly.
e) The VDM application calls the XMS driver's control function to access
all of the XMS functions.
f) The XMM DOS stub device driver calls breakpoint traps by the VXMM
Control Function.
g) The VDM Manager initialization, creation, termination calls for
XMS-Objects. The VDM Manager traps the VDM application's INT 15h service
request and routes it to VXMS as well as XMS control function requests
for XMS memory.
h) The VXMS requests corresponding services from the VDH services:
Creation/termination handler registration
INT 67h prehooking
Linear address reservation
Memory management
Obtaining configuration information.
i) The result is returned.
Like VEMM and unlike most other virtual device drivers, VXMS.SYS does not have
a corresponding physical device driver. Instead, it depends heavily upon the
OS/2 Version 2.0 memory manager. XMS object allocation, reallocation and
deallocation are accomplished by requesting corresponding services from the
operating system's memory manager. For example, when an application requests
the allocation of a block of extended memory, VXMM requests the memory manager
to allocate a memory object in linear memory outside the V86 mode address
space. Reallocation and deallocation are handled similarly.
Structure
The VXMS.SYS module consists of:
1. An initialization component that initializes global structures and reads
the global configuration at boot time.
2. A creation component that initializes per-VDM structures, reads per-VDM
configuration values, and installs the DOS device driver stub when a VDM is
created.
3. A router component that receives control from the control function
contained in the stub device driver, and dispatches the call to an
appropriate service routine. In addition, the router function hooks
interrupt vector 15h upon the first non-version-query call to VXMM, as
required by the specifications, in order to:
a) Preserve the state of the A20 line across block copies (service AH=87h).
b) Respond to service AH=88h (Query Extended Memory) by reporting that
there is no extended memory available.
4. A number of service routines, which perform the required XMS functions.
Applications request XMS services by calling a subroutine contained within the
VXMM, known as the Control Function. The VXMS virtual device driver hooks
interrupt vector 2Fh in order to announce its presence to applications.
Initialization
VXMS.SYS may be loaded at system initialization time by using a DEVICE=
statement in CONFIG.SYS, as shown below:
DEVICE=C:\OS2\MDOS\VXMS.SYS 8192, 2048
This statement should be placed in CONFIG.SYS after the DEVICE= statement for
VEMM.SYS, since VXMM queries VEMM to ensure that no conflicts occur in memory
allocation.
The DEVICE= statement uses parameters to specify the total amount of available
XMS memory, and the default limit for each VDM. In the above example, the
overall limit is set to 8MB and the limit for each VDM is set to 2MB.
The virtual device driver VXMS.SYS can be configured as follows.
device = {path} vxms.sys {options}
The options are of the form "/keyword=value":
/XMMLIMIT=g,i Sets the global (system-wide) maximum memory usage of the
VXMS.SYS driver to g kilobytes, and a per-VDM maximum of i
kilobytes. These values should be large enough to
accommodate an automatic 64KB allocation in each VDM for
the HMA. Values are restricted to the range 0..65535 (=
64Meg).
The values of g and i are rounded up to the nearest
multiple of 4.
Specifying i = 0 suppresses XMS installation in all VDMs
unless specifically overridden by a VDM-specific
configuration string. (See below.)
Default: /XMMLIMIT=4096,1024
/HMAMIN=d Sets the minimum request size (in kilobytes) for an HMA
request to succeed. Values are restricted to the range
0..63.
Default: /HMAMIN=0
/NUMHANDLES=n Sets the number of handles available in each VDM. Each
handle occupies eight bytes. Values are restricted to the
range 0..128.
Default: / NUMHANDLES=32
/UMB Instructs XMM to create Upper Memory Blocks
Default: off
/NOUMB Instructs XMM not to create Upper Memory Blocks
Default: /NOUMB
All other keywords are ignored. Case is ignored.
These options affect all VDMs, but can be overridden by a VDM's configuration
strings. The same option names are available to VDMs (without the prefixing
slash), except that XMMLIMIT only takes one numeric argument, corresponding to
the value i above. The value g above cannot be changed once XMM is installed.
If a value of i=0 was specified on the DEVICE= line, to create a VDM with XMS
installed, specify a configuration string "XMMLIMIT" with a non-zero value.
Conversely, to have no XMS installed, specify a configuration string "XMMLIMIT"
with a value of zero.
If UMBs are being used, it is crucial that VXMS.SYS be the last device driver
loaded, for VXMS.SYS reserves all available addresses between 640KB and 1Meg
for use as UMBs. Hence, any device drivers which reserve pages in that region
(for example, VEMM) will not be able to install.
VXMS.SYS will fail to install if some other device driver has already reserved
the region from 1MB to 1MB+64KB.
The overall limit comprises the only relationship between XMS memory objects in
different VDMs, and is imposed to prevent XMS from acquiring all available
memory. The default overall limit is 4MB, and the default limit for each VDM
is 1MB. The default limit for each VDM can be overridden by installing an
application on the desktop and choosing to specify the XMS size with the DOS
Settings feature (see DOS Settings).
Setting the overall limit to zero disables XMS in all VDMs regardless of the
per-VDM value. Setting the default limit for a particular VDM to zero disables
XMS in all VDMs unless their start list entries specify a non-zero XMS size.
Setting the XMS size to zero for an entry in the start list disables XMS for
that application's VDM only. Novice users need never change the default
values.
In addition to memory sizes, the number of handles and the presence or absence
of Upper Memory Blocks are all configurable parameters which may be altered on
a per-VDM basis using the DOS Settings feature.
Upon installation, an initialization routine within VXMS.SYS supplies the
addresses of the VXMS.SYS VDM-creation and close routines to the Virtual DOS
Machine Manager.
VDM Creation
Upon creation of a VDM, a VDH service is used to get the maximum XMS size for
that VDM. This will return a string if the program's entry on the desktop has
an associated VXMS size. If the per-VDM size is not defined, the default
retrieved from CONFIG.SYS at initialization time will be used. If VXMS size is
not 0, the following steps are then performed:
1. Upper Memory Blocks (UMBs) are found and reserved.
2. The High Memory Area (HMA) is reserved.
3. The real mode device driver stub is loaded.
4. The handle table and UMB list are initialized.
To find an available linear region to use for UMBs, VXMS requests VDH services
to locate the largest free address range in the V86 mode address space above
640KB. VXMS reserves all the pages returned until the call fails.
VXMS requests the OS/2 Version 2.0 memory manager to allocate the 64KB region
immediately above 1MB for use as the High Memory Area. The way in which this
is accomplished depends upon a number of variables; see High Memory Area (HMA)
for further details.
Waiting until creation time to reserve this memory allows virtual device
drivers with actual hardware to claim their addresses first, since VXMS's UMBs
can be placed at any available address. A consequence is that the space is
reserved only for the VDM being created; it could be in a different location or
be a different size for other VDMs.
VXMS then arranges for the loading of a stub device driver in the VDM. This
driver serves three purposes:
The device driver header can be read by an application searching for the name
of the real mode VXMS driver. It responds to all device requests with "done"
without actually doing anything.
The device driver's initialization code attaches VXMS to interrupt vector
2Fh. Attaching to vector 2Fh must be delayed until after the virtual DOS
environment has completed hooking all of its interrupts.
The device driver contains the VXMS control function; calls to XMS services
are not performed by calling a software interrupt, but rather by calling a
V86 mode far subroutine called the control function. Moreover, XMS
specifications require the control function to have a particular physical
layout. Hence, the control function is placed in a DOS device driver so that
it may have the layout required by the specifications and can transfer
control to the virtual device driver code (the router function).
The stub device driver is used to transfer control to the router function. A
DOS application invokes XMS functions by calling the control function as a far
procedure, the address of which can be obtained by a different INT 2Fh call.
In response to such a request, the INT 2Fh interrupt handler returns the
address of the control function in the device driver stub. The Control
Function then calls the protected mode VXMS entry point, and the router obtains
control.
The interrupt hook cannot be performed by the VXMS creation function, since the
virtual DOS environment does not establish its interrupt hooks until after all
virtual device driver creation code has completed. DOS device driver
initialization code is called after the interrupt vectors are set; therefore
delaying the hooking of vector 2Fh until DOS device driver initialization time
succeeds in hooking the vector.
Routing
The router receives control from the control function within the stub device
driver, as described above. After checking that the XMS service request is
valid, the router calls the appropriate protected mode service routine, which
in turn requests the OS/2 Version 2.0 memory manager to allocate and manipulate
XMS objects.
Information calls involve at most a quick search of structures. The number of
kilobytes VXMS reports as available is the minimum of the number of kilobytes
the VDM has left before it hits its per-VDM XMS memory usage limit, the number
of kilobytes all VDMs have left before hitting the system-wide memory usage
limit, and the amount the memory manager estimates is available.
ΓòÉΓòÉΓòÉ 16.3.2. High Memory Area (HMA) ΓòÉΓòÉΓòÉ
VXMS requests that the operating system's memory manager reserve the region of
memory between 1MB and 1MB + 64KB, so that it may use that region for
simulating the A20 address line wraparound. This region of memory is called
the High Memory Area (HMA).
When the processor's A20 address line is disabled, the HMA is mapped to the
first 64KB of conventional memory. When the A20 address line is enabled, the
mapping depends on whether the HMA is in use. If the A20 address is not
enabled, the HMA is mapped to black hole memory. Black hole memory can safely
be accessed by a VDM, but values written to it cannot be retrieved (ROM or
invalid physical addresses, for example). If the HMA is in use, VXMS requests
the memory manager to alias a linear region inside the HMA to a memory object
outside the V86 mode address space, which has been specially allocated for this
purpose.
DOS Emulation code may reside in the HMA; this is specified by including the
following statement in CONFIG.SYS:
DOS=HIGH
OS/2 Version 2.0 installation places this statement into CONFIG.SYS as a
default, and the operating system is thus installed such that DOS Emulation
runs in the HMA. The only drawback to using the HMA for DOS Emulation code is
that applications are prevented from using the HMA. This is not usually a
serious problem, since few programs require use of the HMA. It is recommended
that DOS Emulation code is loaded in the HMA as this will free base memory for
application use.
Note that if XMS size is less than 64KB for a VDM, the HMA is not emulated.
All requests for the HMA will fail.
ΓòÉΓòÉΓòÉ 16.3.3. Upper Memory Blocks (UMBs) ΓòÉΓòÉΓòÉ
VXMS attempts to reserve all unreserved pages in the region of memory between
640KB and 1MB; this region is often termed the Upper Memory Area (UMA). The
address ranges reserved in this manner will be used to simulate Upper Memory
Blocks (UMBs). Note that this allocation scheme requires that VXMS be the last
device driver loaded; any device drivers loaded after VXMS will not be able to
reserve any addresses in the UMA.
When a UMB is not in use, its corresponding range of addresses is mapped to a
black hole. When it is in use, the range of addresses corresponding to the UMB
being allocated is mapped to a memory object outside the V86 mode address space
which is allocated for this purpose. This is similar to the technique used to
map objects in the HMA.
VXMS uses a delayed UMB allocation scheme. Unlike conventional XMS
implementations, no UMBs are allocated until the first UMB request. Upon
receiving the first UMB request, VXMS queries the UMB region to determine which
address ranges are available, and reserves those ranges. This technique
supports memory mapped devices which lie in the same region from which UMBs are
taken. Advanced users can use Include/Exclude Regions in the DOS Settings
feature to tell VXMS which ranges are not to be used.
Note that by default, all UMBs are owned by the DOS Emulation kernel and are
not available for application use. If an application wishes to use UMBs, the
DOS = NOUMB statement must be included in CONFIG.SYS or the application can't
get any UMB because they are already used by DOS. Alternatively, the ownership
of UMBs for a single VDM may be enabled or disabled using the DOS owns UMBs
setting; see DOS Settings.
VXMS allows coexistence with EMS services, in that it queries VEMM before
reserving address ranges, so that VEMM may reserve the space it requires for
its frame. As such, it is possible that an application using both EMS and XMS
services will execute and function correctly.
DOS Device Drivers
DOS device drivers may be loaded into UMBs, thereby conserving memory within
the 640KB DOS application space; this support is functionally compatible with
that provided by DOS 5.0. Loading a DOS device driver into a UMB requires a
number of additional statements in CONFIG.SYS; an example is given in Figure
"CONFIG.SYS - Loading Device Drivers into UMBs".
The first statement causes the VXMS virtual device driver VXMS.SYS to be loaded
at initialization time. The second statement causes the ANSI.SYS device driver
to be loaded into a UMB. The SIZE parameter ensures that the device driver is
loaded into a UMB of the required size for its operation; if a UMB of this
size cannot be allocated, the device driver is automatically loaded into low
memory.
For DOS device drivers loaded into a specific VDM using DOS Device Drivers in
the DOS Settings feature, the SIZE parameter is also supported. Specifying a
SIZE parameter in DOS Settings will cause the device driver to be loaded into a
UMB if possible; if UMBs are not present or if a sufficiently large UMB cannot
be allocated, the device driver will be loaded into low memory.
Note that device drivers are always loaded into the largest available UMB;
hence, in order to achieve efficiency in the utilization of UMBs, device
drivers should be loaded in order of size, from largest to smallest. This is
achieved by placing the DEVICE= statements in CONFIG.SYS, or names of the
device drivers in the DOS Device Drivers setting, in that order.
The third statement allocates ownership of UMBs to the DOS kernel, and prevents
applications from accessing UMBs. This statement sets the default for all
VDMs; if an application running in a VDM requires UMBs, the default may be
overridden for that VDM using the appropriate DOS Settings function.
Note that some device drivers may not function correctly in a UMB if they rely
on having all memory above them available for their use. If incorrect
operation of a device driver is experienced in a UMB, the value of the SIZE
parameter should be increased by modifying the DEVICEHIGH statement in
CONFIG.SYS or by altering the appropriate DOS settings for the VDM.
TSR Programs
TSR programs may also be loaded into UMBs in order to conserve DOS application
space. TSR programs such as APPEND, which are loaded by default when a VDM is
started, are loaded into a UMB where possible, thereby saving approximately 6KB
of memory. Loading a TSR program into a UMB is performed from the DOS command
line or from a batch file using the LOADHIGH command, as shown in Figure
"LOADHIGH Command - Loading TSRs into UMBs".
Note that parameters for TSR programs are supported by the LOADHIGH command.
TSR programs which rely on having all memory above their location available for
their use may not execute correctly when loaded in a UMB. In such cases, the
TSR must be loaded into low memory.
ΓòÉΓòÉΓòÉ 16.3.4. Extended Memory Blocks (EMBs) ΓòÉΓòÉΓòÉ
Extended Memory Blocks (EMBs) reside in the region above 1MB, and are therefore
not directly accessible from DOS applications running in V86 mode. The only
way a DOS application can access EMBs is by using the VXMS service Move
Extended Memory Block. VXMS then requests the memory manager to remap the EMB
into low memory, from which it may then be accessed by the application. Each
Extended Memory Block is allocated as a separate memory object with linear
addresses outside the V86 mode address space.
Note that memory requests for UMBs and EMBs are made by applications in units
of paragraphs and kilobytes, whereas the memory manager allocates in 4KB pages.
VXMS rounds all allocation requests up to the nearest integral page multiple
before passing the request on to the operating system's memory manager.
ΓòÉΓòÉΓòÉ 16.3.5. Allocating/Deallocating Memory ΓòÉΓòÉΓòÉ
Application requests to allocate, reallocate, or deallocate Extended Memory
Blocks are translated into corresponding call to the memory manager. A free
handle table entry, indicated by a start address of zero, is selected and
updated to contain the start address and size of the memory object. The total
XMS memory size for the system and for each VDM is checked at this point to
ensure that these limits are not exceeded.
Reallocation requests are serviced by passing the request to a VDH service and
recording the new size and start address. When an application reallocates to
zero, VXMS requests the memory manager to deallocate the memory object, and
changes the handle table entry so it has zero pages with a sentinel non-zero
address to indicate the handle is still in use. Objects of size zero are
allowed in VXMS, but not in OS/2, so VXMS will deallocate but retain its own
data for the handle. When a non-zero reallocation is performed on an object of
size zero, a new object is transparently allocated by the memory manager.
All allocations (and reallocations) are rounded up to the nearest integral page
multiple. Since there is no facility for telling the applications how much
memory was actually reserved, the extra memory is wasted.
High Memory Area
There is only one HMA per VDM, so a single pointer suffices to manage the state
of the HMA. If the pointer is zero, then the HMA is not in use. Otherwise, the
pointer contains the linear address of the block of memory being used to
simulate the HMA. Whether the HMA region is mapped to this block of memory is
determined by the state of the simulated A20 line; see section High Memory Area
(HMA).
When a request for the HMA is made, the pointer is tested against zero. If the
pointer is non-zero, then the HMA is in use, and the request fails. Otherwise,
the pointer is set to a newly allocated 64KB block of memory, and the HMA
region is mapped to this block if the A20 address line is active.
When the HMA is released, the block of memory is freed, and the pointer is
reset to 0. The HMA is then mapped to a black hole if the A20 address line is
active. Once an HMA is freed, all information previously stored therein
becomes invalid.
Upper Memory Blocks
For UMB allocation, a linked list of reserved address ranges is maintained.
This list contains information about the start address of each reserved range,
the base address of the physical memory block allocated and mapped into address
range, and the length of the block. If the base address is zero, then the
address range is not in use and is instead mapped to a black hole.
Allocations are made by searching through the list to find an address range for
which the base address is zero and which is large enough to satisfy the
request. If the address range exceeds the required size, it is split into two
parts and a new object is allocated to hold the unused portion.
Deallocations are made by searching the list to find a structure whose starting
address matches the one being deallocated. The physical memory into which the
address range was mapped is freed, and the address range is instead remapped to
a black hole. Finally, the newly freed object has its base address set to zero
to signify that it is not in use. It is then coalesced with any adjacent free
blocks.
Extended Memory Blocks
Each VDM has a fixed table of up to 255 EMB handles, the exact number of which
is under user control. Each entry of the table describes a single Extended
Memory Block.
Each entry contains a field which records the number of active locks on the
Extended Memory Block. Locking a handle prevents the corresponding Extended
Memory Block form being reallocated or freed, and also prevents the base
address from changing. As part of its function, the lock subfunction returns
the 32-bit base address.
If an allocation is of size zero, no physical memory allocation is requested,
but a sentinel non-zero address and zero size are recorded in the handle entry.
The lock count for the newly created Extended Memory Block is reset to zero.
When a deallocation request is made for an Extended Memory Block with zero lock
count, the address in the handle is changed to zero, and the memory manager is
called to free the memory.
ΓòÉΓòÉΓòÉ 16.4. Problems with Extended Memory ΓòÉΓòÉΓòÉ
If an application in a VDM encounters an error due to insufficient extended
memory, the following points should be checked:
Ensure the overall limit and the limit for the VDM are large enough to
accommodate the amount of extended memory required by the application.
Ensure that the DEVICE= statement for VMXS.SYS is in CONFIG.SYS.
Ensure that the expanded memory driver VEMM.SYS, is not using all of the
available memory. The amount of memory allocated to VEMM may be reduced by
changing the parameters of the DEVICE= statement for VEMM to something less
than that specified (or less than the default which is 4MB). If necessary,
VEMM command may be disabled by removing or remarking out the DEVICE=
statement in CONFIG.SYS.
Ensure that CONFIG.SYS and/or AUTOEXEC.BAT do not start unnecessary programs
that use extended memory.
If a program does not start and displays a message such as High Memory Area
(HMA) already in use, the HMA may be freed by disabling the DOS=HIGH statement
in CONFIG.SYS. If the statement is DOS=HIGH, UMB then the statement should be
changed to DOS=UMB.
ΓòÉΓòÉΓòÉ 16.5. Summary ΓòÉΓòÉΓòÉ
MVDM provides support for applications which use the LIM EMS Version 4.0 and
LIMA XMS Version 2.0 memory extenders to access more than 640KB of memory. The
memory requested is allocated from OS/2 Version 2.0 system memory, and is
managed by the operating system kernel; special hardware is not required. Each
VDM has its own copy of EMS or XMS memory objects, and the objects of one VDM
are protected from access by another VDM.
Support for these memory extenders is provided by two virtual device drivers,
VEMM.SYS and VXMS.SYS. Unlike most virtual device drivers, these drivers do
not have corresponding physical device drivers, but access the operating
system's memory manager to handle memory allocation requests from applications.
MVDM supports the loading of DOS device drivers and TSR programs into XMS Upper
Memory Blocks, in order to reduce memory consumption below the 640KB line,
thereby leaving more base memory for applications. Loading of these programs
into UMBs is supported by the DEVICEHIGH statement in CONFIG.SYS and the
LOADHIGH command included in AUTOEXEC.BAT or executed from the command line.
ΓòÉΓòÉΓòÉ 17. Installing and Migrating Applications ΓòÉΓòÉΓòÉ
Installing DOS and Windows applications under OS/2 V2.0 is in most cases very
similar to installing them in their native environments. However, since OS/2
V2.0 is a true multitasking operating system, we should ensure that the
installation programs do not introduce incompatibilities with existing
programs. The flexibility in tailoring the virtual DOS machine environment for
these programs, also gives us an opportunity to easily tune DOS settings to
suit our needs.
OS/2 V2.0 has a utility to help users place their application icons onto the
desktop after they have been installed. The utility uses information stored in
a migration database that is shipped with OS/2 V2.0.
Systems administrators can use another utility to create their own migration
database to install their corporation's unique applications.
This chapter discusses the installation of DOS and Windows applications under
OS/2 V2.0. It also shows how to use the application migration utilities shipped
with OS/2 V2.0.
We describe the use of the migration program in this chapter, and show an
example of how to use the PARSEDB utility to create a customized migration
database.
ΓòÉΓòÉΓòÉ 17.1. Installing DOS Programs ΓòÉΓòÉΓòÉ
Application installation methods vary widely in the DOS world. Some
installations involve nothing more than copying the software from diskette to
the hard disk. In more complex applications, the install procedure may check
the workstation configuration (both hardware and software), implement copy
protection and modify system files.
For most DOS applications, installation under OS/2 Version 2.0 is simply a
matter of starting a DOS full-screen or windowed session and following the
instructions supplied with the package as if the installation was taking place
on a DOS system. However, some may not work correctly because of the special
requirements of the installation program.
ΓòÉΓòÉΓòÉ 17.1.1. General Installation Procedure for DOS Programs ΓòÉΓòÉΓòÉ
To install a new DOS program:
1. Read the installation instructions for the DOS program.
2. Select the OS/2 System icon.
3. Select the Command Prompts icon.
4. Select the DOS Full Screen icon.
5. Type the installation command as specified in the installation instructions
on the command prompt.
For example:
a:install
6. Follow the instructions on the screen.
7. When installation is complete, close the Command Prompts folder.
To add an icon to the desktop, you can use either:
The Program template in the Templates folder (refer to Running DOS
Applications.)
The Migrate Applications program (refer to Migrating Programs.).
ΓòÉΓòÉΓòÉ 17.1.2. Installation Programs with Special Requirements ΓòÉΓòÉΓòÉ
Some DOS application installation programs will not run properly in the OS/2
V2.0 virtual DOS machine, or will not install the program correctly. Some of
the possible problems are as follows:
1. The installation program attempts to verify the version of DOS that is
running, and receives a response that it cannot understand. One example is
Lotus 1-2-3 Release 3.1+.
The OS/2 V2.0 virtual DOS machine environment can be customized to return a
DOS version in response to the installation program query and thus bypass
the problem. This is accomplished by changing the DOS_Version parameters
in the DOS Settings facility, which is accessed by pressing the DOS
Settings push button on the Session page of the Settings notebook.
The DOS Settings facility and the available settings are described in
detail in DOS Settings.
2. The copy protection or user registration scheme implemented by the
application bypasses DOS and directly accesses the disk. The OS/2 V2.0
system will not allow the installation program to do this, since it may
interfere with other applications, and will terminate the virtual DOS
machine in which it is running.
It may therefore be necessary to perform the installation in a native DOS
environment by rebooting the workstation with a DOS boot diskette. When the
installation is complete, the workstation can be rebooted under OS/2 V2.0 and
the application added to the Workplace Shell.
ΓòÉΓòÉΓòÉ 17.2. Planning Hard Disk Partitions ΓòÉΓòÉΓòÉ
If the workstation is booted from a DOS diskette in order to perform the DOS
application install, the installation is restricted to those logical drives
that have been formatted as FAT. This is because logical HPFS drives cannot be
accessed in a native DOS environment.
When the system is booted with DOS 5, HPFS drives are not assigned drive
letters and are invisible to the user. If DOS 4.01 with CSD UR35284 is used to
perform the boot, drive letters will be assigned to all drives, whether HPFS or
FAT. However, you cannot access the files on the HPFS drives. With earlier
versions of DOS, even FAT drives that lie beyond the first HPFS drive will not
be assigned drive letters.
Some installation programs store directory information into control files that
are used at run time. For example, WordPerfect** 5.1 records the path to its
subdirectories. On a hard disk with both FAT and HPFS logical drives, this can
cause the installation program run in native DOS to record drive assignments
that are wrong when the application is started from a virtual DOS machine.
Consider the following example of a hard disk setup for dual boot or with Boot
Manager:
Table "Drive Letter Assignment"
Note that FAT drive in the extended partition appears as drive E: to the OS/2
Version 2.0 virtual DOS machine, but appears as drive D: when booted under DOS.
Consequently, if the DOS application is installed on that partition when the
system was booted under DOS, the drive letter it records in its control files
will be D:. When the system is rebooted under OS/2 V2.0 and the application is
run from a virtual DOS machine, the application will be looking to drive D:,
which under OS/2 V2.0 is assigned to the HPFS drive of the extended partition.
This will cause the application to miss the information it is seeking.
The user may be able to change the control file information and correct the
error through the application. However, if the system is booted from DOS and
the application is started, it will again be looking for the wrong drive.
In order to avoid this confusion we recommend that HPFS logical drives be
placed last. In the above example, the FAT and HPFS logical drives in the
extended partition should be transposed. This will allow the drive letters for
the FAT partitions to be the same regardless of whether the workstation is
booted from DOS or OS/2 Version 2.0.
More details on hard disk management can be found in Chapter 4 of the OS/2 2.0
Installation Guide.
ΓòÉΓòÉΓòÉ 17.3. Installing Windows Programs ΓòÉΓòÉΓòÉ
Windows programs installation are usually performed from the DOS command
prompt, or the Windows Program Manager.
To install a new Windows program:
1. Read the the program installation instructions.
2. To install the program from a DOS command prompt:
a) Select the OS/2 System icon.
b) Select the Command Prompts folder.
c) Select DOS Full Screen.
d) Enter the installation command as specified in the installation
instructions.
For example:
a:setup
e) Follow the instructions on the screen to complete the installation.
3. To install the program from the Program Manager:
a) Select the OS/2 System icon.
b) Select the Command Prompts folder.
c) Select WIN-OS/2 Full Screen.
d) Select Run from the File pull-down on the action bar.
e) Enter the installation command as specified in the installation
instructions.
For example:
a:setup
f) Follow the instructions on the screen to complete the installation.
To add an icon to the desktop, you can use either:
The Program template in the Templates folder (refer to Running DOS
Applications.)
The Migrate Applications program (refer to Migrating Programs.).
If you use the Migrate Applications option, the program icon will be placed in
the Windows Programs folder or the Additional Windows Programs folder on the
desktop.
The Migrate Applications program always sets up Windows programs to run in a
WIN-OS/2 window session if possible. WIN-OS/2 window sessions cannot be used
for programs that have to be run in real mode, such as Windows 2.0 programs.
Therefore if you use the Migrate Applications utility on Windows 2.0 programs,
open the Settings Notebook to the Sessions page and select the WIN-OS/2 full
screen radio button.
ΓòÉΓòÉΓòÉ 17.4. AUTOEXEC.BAT and CONFIG.SYS ΓòÉΓòÉΓòÉ
The installation program for a DOS or Windows application may alter the
AUTOEXEC.BAT (usually to modify the PATH statement) and CONFIG.SYS (to modify
the FILES and BUFFERS statements or add a DEVICE statement). Usually the copies
edited are the ones found in the root directory of the OS/2 V2.0 boot drive. If
the option is given the user should not allow the installation program to make
the modifications before reviewing the changes. We recommend that you back up
both of these files prior to running an installation. After installation,
inspect the date and time stamps of the files to see if they have been
modified.
The most common change made to the AUTOEXEC.BAT file is to the PATH statement,
so that the program being installed can be started from any subdirectory. The
function of the PATH statement can be provided in a virtual DOS machine by
using the Path and file name and Working directory fields of the Program page
of the Settings notebook.
Since the CONFIG.SYS is used for every virtual DOS machine, the device driver
that an installation program adds will be loaded for all VDMs and consume
system resources unnecessarily. We recommend that when the DOS application is
added to the Workplace Shell the device driver statement be added via the
DOS_DEVICE setting in the DOS Settings facility. This setting is accessed by
pressing the DOS Settings push button on the Session page of the Settings
notebook.
ΓòÉΓòÉΓòÉ 17.5. Migrating Programs ΓòÉΓòÉΓòÉ
OS/2 V2.0 provides a migration database (DATABASE.DAT) that contains parameters
and settings for commonly used DOS, Windows and OS/2 programs. This binary
database file is used by the Migrate Applications program to place the program
icons onto the desktop and customize their Settings notebooks to the
recommended values.
Figure "The Migrate Applications Windows"
To use the Migrate Applications program, follow these steps:
1. Locate and select the OS/2 System icon on the desktop.
2. Select System Setup.
3. Select Migrate Applications.
The Find Programs window appears. The Database Used for Find Option field
displays the default database (\OS2\INSTALL\DATABASE.DAT). The Migrate
Applications program compares programs on the hard disk with the list of
programs in the database and places any that match in a DOS, OS/2, or
Windows programs folder on the desktop.
4. From the Drives list, deselect the drives which should not be searched. The
default is to search all drives.
5. Deselect the types of programs that should not be migrated in the Migrate
type check boxes. The default is to migrate all the listed programs.
6. Select Find.... The Migrate Programs window appears. Programs are listed in
the Applications list box.
7. If your program is not on the list:
a) Select the Add Programs... push button. The Add Programs window appears.
Programs are listed in the Available Programs list.
b) Highlight a program. The Working directory and Program title fields are
filled in. Type a new title if required.
c) Type the appropriate parameters for the selected program in the
Parameters field.
d) Select the types of programs to migrate in the Program type field. The
Migrate Applications program creates the Additional Programs folders
based on the types of programs specified.
e) Select Add. The program moves to the Selected Programs list.
f) Select OK. The Migrate Programs window appears.
8. Select Migrate to migrate all the selected programs. When migration is
complete, the Find Programs window reappears.
9. Select Exit.
The Migrate Applications program creates a DOS Programs folder and a Windows
Programs folder. The programs in these folders have the recommended
pre-selected settings that work best for your programs' performance.
If the Add Programs option was used, an Additional DOS Programs folder and an
Additional Windows Programs folder will also be created. The programs in these
folders have default settings. If these programs do not run correctly, specify
other settings. See DOS Settings on the use of the settings.
ΓòÉΓòÉΓòÉ 17.6. Creating a Customized Migration Database ΓòÉΓòÉΓòÉ
Some corporate users have an installed base of unique or custom-written DOS and
Windows applications. These programs will not be listed in the migration
database (DATABASE.DAT) that is supplied with OS/2 V2.0. The PARSEDB.EXE
program is provided by OS/2 V2.0 to allow a system administrator to build a
customized migration database that can be used to set up these unique
applications on the Workplace Shell desktop.
ΓòÉΓòÉΓòÉ 17.6.1. PARSEDB ΓòÉΓòÉΓòÉ
A customized migration database is created as follows:
1. Create the input text_database file
2. Run PARSEDB to create the binary database file.
To start PARSEDB, type the following statement from a command prompt:
PARSEDB [path] DBTAGS.DAT [path] text_database [path] binary_database
where:
DBTAGS.DAT is the file name that contains the definitions for the tags used
to define the DOS settings
text_database is the name of the file that contains the program settings for
a specific DOS, OS/2 or Windows program
binary_database is the name of the new migration database file.
The text_database file is the main input file for PARSEDB that has to be
created.
For example, type the following statement to create a new database named
MYDATA.DAT:
PARSEDB E:\OS2\INSTALL\DBTAGS.DAT MYDATA.TXT MYDATA.DAT
Note that you must specify a file name for the binary database file to prevent
the PARSEDB utility program from overwriting the default database file
DATABASE.DAT.
When creating the text_database file, each program must have the following
migration information:
NAME Name of the file that runs the program.
TITLE Program object name that appears below the icon.
TYPE DOS, Windows or OS/2
ASSOC_FILE File name associated with the file name specified in the Name field.
Use this file name to uniquely identify the program.
DEF_DIR Directory that the program is installed into.
ASSOC_FILE and DEF_DIR can have NULL values; NULL values must be included when
defining the program if specific values for these fields cannot be provided.
When creating MYDATA.TXT, group the settings for a given program on consecutive
lines. Use blank lines to mark the end of a program's settings. Begin non-blank
lines with a token. The tag file DBTAGS.DAT defines valid token settings,
limits, and default values for various DOS properties.
Here is the listing of DBTAGS.DAT: DBTAGS.DAT
The layout of each line in DBTAGS.DAT is as follows:
INDEX VALUE TYPE (optional comments)
where:
INDEX Is a sequence number
VALUE Is the name of the setting
TYPE Is the type of the value.
TYPE is one of the following:
NOP Comments; any line with this type is ignored
STR A string value
INT An integer value
BOOL Boolean, with value of ON or OFF
BYTE Program type, either DOS, OS/2, or Windows.
MLSTR A multi-line string with component lines on individual lines in the
text_database file.
Using these types, various settings for programs can be defined. Do not edit
DBTAGS.DAT or create a new one; the tag file is available only as a reference
when creating the MYDATA.TXT file.
PARSEDB checks the validity of all entries in MYDATA.TXT and compares them to
the settings definitions in DBTAGS.DAT. If all entries are valid, PARSEDB
creates a binary database named MYDATA.DAT.
Errors in the text file will cause PARSEDB to exit and display a message:
A message that a file is corrupted indicates embedded ASCII NUL characters in
the input text file.
A message about an invalid setting indicates the use of a setting not found
in DBTAGS.DAT. The message should include a line number and the name of the
input file.
A message that an entry has missing parameters indicates the absence of the
minimum settings for the entry.
PARSEDB does not check for duplicate entries in the input text file, nor does
it require settings to be in any particular order. It is also not case
sensitive, that is, "Off" is treated the same as "OFF".
We recommend that a copy of the input text file (DATABASE.TXT) for the default
migration database file (DATABASE.DAT) be made and used as the template for
your own input file. A sample input text file is listed below.
User Definitions for other Applications
ΓòÉΓòÉΓòÉ 17.7. Summary ΓòÉΓòÉΓòÉ
DOS and Windows application installation under OS/2 V2.0 is generally performed
from a DOS command prompt or from the WIN-OS/2 Program Manager. In some cases,
it may be necessary to boot from a DOS diskette to perform the install.
Modifications made to CONFIG.SYS and AUTOEXEC.BAT by installation programs
should be carefully reviewed.
If the OS/2 V2.0 system is to be set up for Boot Manager or dual boot to DOS,
the arrangement of the hard disk partitions needs to be planned.
The Migrate Applications program is used to migrate already installed DOS,
Windows, and OS/2 programs, and creates and places the program objects in a
folder on the desktop. If the DOS or Windows program is in the migrate database
\OS2\INSTALL\DATABASE.DAT, the Migrate Applications program automatically
selects the recommended DOS settings for the program.
The Migrate Applications program always sets up Windows programs to run in a
WIN-OS/2 window session, if possible. Some exceptions exist, for example,
CorelDraw!** and Arts & Letters**. Those programs use some very special Windows
programming techniques, which can cause some problems in a "seamless" WIN-OS/2
VDM. This may not happen in every user scenario but it was felt to be safer to
install those applications as fullscreen SAVDMs.
The Migrate Applications program is used:
During installation of the OS/2 Version 2.0 operating system if you have DOS,
OS/2, or Windows programs already installed on your hard disk.
If a DOS, OS/2, or Windows program is added to a working OS/2 Version 2.0
system.
A utility, PARSEDB, is supplied to help system administrators to add an
organization's unique applications to the migration database, or to create
their own.
ΓòÉΓòÉΓòÉ 18. Windows Applications ΓòÉΓòÉΓòÉ
OS/2 Version 2.0 provides the capability for Windows applications to run under
OS/2 Version 2.0, using its WIN-OS/2 component. With this support,
applications written for Windows 3.0 and Windows 2.x can coexist and execute
with OS/2 and DOS applications in the same machine under OS/2 Version 2.0.
Figure "Windows Applications Running under OS/2 Version 2.0"
Each Windows application executes as a protected mode process within a VDM. As
such, Windows applications are subject to the same application protection
facilities provided to other protected mode applications (both OS/2 and MVDM
tasks) under OS/2 Version 2.0. Windows applications are protected from other
Windows applications and from DOS and OS/2 applications executing in the
system. This is in contrast to the native Windows 3.0 environment, where
protection is limited to DOS applications (Windows applications share a common
address space), and is only available when Windows is running in standard or
386 enhanced modes.
The execution of Windows applications in a protected environment allows these
applications to take full advantage of the pre-emptive multitasking
capabilities of OS/2 Version 2.0, with full pre-emptive multitasking between
Windows applications, OS/2 applications and DOS applications. This is again in
contrast to the native Windows 3.0 environment, where pre-emptive multitasking
is available only for DOS applications and only when Windows 3.0 is running in
enhanced mode, thereby impacting performance and preventing many applications
written for previous versions of Windows from executing. OS/2 Version 2.0 has
no such restriction.
ΓòÉΓòÉΓòÉ 18.1. Windows 3.0 Execution Modes ΓòÉΓòÉΓòÉ
The native Windows 3.0 environment has three execution modes, though the
options available to any user depend upon the machine's processor and the
amount of installed memory. These modes are important, as they are relevant, to
the discussion later of the way in which OS/2 runs Windows applications. The
initial description of each mode comes from the Microsoft Windows User's Guide.
ΓòÉΓòÉΓòÉ 18.1.1. Real Mode ΓòÉΓòÉΓòÉ
Real Mode: An operating mode that Windows runs in to provide maximum
compatibility with versions of Windows applications prior to 3.0.
Real mode is the only mode available for computers with less than
1MB of extended memory.
Real mode is equivalent to previous versions of Windows (2.x), and can address
640KB of conventional memory, plus LIM EMS Version 4.0 expanded memory.
Extended memory can be used for a virtual disk or disk caching only.
Real mode requires an 8088 processor or above, and 640KB of installed memory.
Real mode requires 384KB of free conventional memory after DOS and other memory
resident software, including network drivers, is loaded.
Real mode is supported for Windows and its applications under OS/2 Version 2.0,
in either of two ways:
The WIN-OS/2 kernel provided by OS/2 Version 2.0 may be used to run Windows
applications in real mode.
The commercially available Windows 3.0 product may be run in real mode in a
VDM, and real mode applications started from within this VDM by the Windows
Program Manager.
Note that the commercially available Windows product cannot be run in standard
or enhanced modes in a VDM due to Windows' memory management architecture;
Windows assumes that it is a DPMI host and cannot act as a DPMI client. Many
Windows applications run quite adequately in real mode; in fact, some
applications written for Windows 2.x cannot run in any other mode.
ΓòÉΓòÉΓòÉ 18.1.2. Standard Mode ΓòÉΓòÉΓòÉ
Standard Mode: The normal operating mode for running Windows. This mode
provides access to extended memory and also lets you switch
among non-Windows applications.
Standard mode uses the 80286 processor's protected mode to provide direct
access for Windows and Windows applications to up to 16MB of extended memory.
Expanded memory for DOS applications is only supported with physical expanded
memory cards (emulation of expanded memory using extended memory is not
supported).
Standard mode requires an 80286 processor or above, and at least 1MB of
installed memory, with a minimum 192KB of free extended memory. The XMS driver
HIMEM.SYS must also be loaded. Windows applications must be written to comply
with the memory management rules for Windows 3.0 in order to run in standard
mode.
Standard mode is recommended by Microsoft when running only Windows
applications (that is, no DOS applications) in certain configurations, even on
an 80386 machine. In the Windows 3.0 manual, on page 429, it is suggested that
users running only Windows 3.0 applications should run in standard mode, even
on 80386 systems with 2-3MB of memory, as there is a performance improvement in
doing so.
Standard mode is necessary for some Windows applications (for example,
Microsoft Excel** Version 3.0). To accommodate such applications, OS/2 Version
2.0 must provide additional support. Basically, these applications need to
access DPMI services for extended memory support, which is available under
Windows 3.0 when running in standard or enhanced modes. See DOS Protected Mode
Interface for further information on DPMI support under OS/2 Version 2.0.
The other requirement is to supply Windows services to Windows applications.
This service is provided in OS/2 Version 2.0 by modifying the Windows kernel
and running it in standard mode in a VDM. As part of the joint development and
cross-licensing agreement between IBM and Microsoft, IBM has access to the
Windows source code. IBM has modified the source to provide a Windows kernel
(WIN-OS/2) capable of running as a DPMI client within a VDM (the retail
version of Windows 3.0 can only function as a DPMI host), and includes this
kernel as part of the OS/2 Version 2.0 product.
OS/2 therefore supports Windows applications running in standard mode in a VDM.
Use of the VDM design, which provides a self-contained DOS environment, means
that the environment is identical, from the application's point of view, to
running under Windows loaded in standard mode, on DOS. This design therefore
provides the maximum compatibility with the DOS/Windows environment. In fact,
it offers a wider range of compatibility, since Windows 2.x applications, which
require real mode operation under Windows 3.0 in DOS, can be run concurrently
with Windows 3.0 applications running in standard mode. This combination is
not possible at the same time under DOS/Windows 3.0.
ΓòÉΓòÉΓòÉ 18.1.3. 386 Enhanced Mode ΓòÉΓòÉΓòÉ
386 Enhanced Mode: A mode that Windows runs in to access the virtual memory
capabilities of the Intel 80386 processor. This mode allows
Windows to use more memory than is physically available and
to provide multi-tasking for non-Windows applications.
386 enhanced mode uses the 80386 processor's protected mode to provide direct
access for Windows and Windows applications to up to 16MB of extended memory.
In addition, the virtual 8086 mode of the 80386 is used to provide multiple DOS
environments for non-Windows applications. Most DOS applications can be run in
a window. Virtual memory support is provided, for Windows applications only,
using the demand paging feature of the 80386 processor.
386 enhanced mode requires an 80386 processor or above, at least 2MB of
installed memory, with a minimum 1MB of free extended memory. The XMS driver
HIMEM.SYS must also be loaded. Windows applications must be written to comply
with the memory management rules for Windows 3.0 to run in 386 enhanced mode.
The 386 enhanced mode of Windows 3.0 provides a number of additional
capabilities over standard mode:
The capability for pre-emptive multitasking of DOS sessions
Demand paging for efficient virtual memory.
Both of these capabilities are provided by OS/2 Version 2.0 itself for both DOS
and Windows applications, independent of the Windows kernel. There is hence no
need to provide such functions within the Windows kernel.
There are, however, a small number of Windows applications which require
enhanced mode to run. Such applications require enhanced mode either because
they rely on features only available in enhanced mode, such as Windows 3.0's
permanent swap file capability (such as Caere Omnipage**), or have been coded
using the WINMEM32.DLL, a set of routines that provide some 32-bit functions
for Windows applications, such as Wolfram Research's Mathematica**.
It is believed that there are only, at maximum, three or four such applications
on the market, which represents less than 0.3% of Windows 3.0 applications
(assuming Microsoft's quoted figure of 1500 Windows applications). It is
unlikely there will ever be many in the latter category of applications, since
the WINMEM32.DLL is very difficult to use, and Microsoft itself warns in
Appendix E of the Windows Programmer's Reference: "only experienced Windows
application programmers with extensive experience writing assembly-level code
should attempt to use these functions in an application."
This warning is necessary because even something as basic as memory management
using these routines can be very complex, and requires the programmer to create
assembly language interfaces between the 16- and 32-bit parts of a program
(note that such "thunks" are provided by OS/2 Version 2.0 between 16-bit and
32-bit modules; see OS/2 Version 2.0 - Volume 1: Control Program). Charles
Petzold, possibly the most widely respected authority on Windows programming,
whose book on the subject is a standard reference work, concluded on this
subject that "something is seriously wrong when memory access becomes
difficult", and contrasted the current Windows approach with the ease of 32-bit
memory management under OS/2 Version 2.0.
Applications which require enhanced mode will not be supported by OS/2 Version
2.0. Support of this mode requires Windows to run at the Ring 0 privilege level
in the 80386 processor, which allows Windows or a Windows application to access
all system memory and resources, including those belonging to the operating
system itself. This could result in a serious breach of system integrity, and
is therefore not permitted under OS/2 Version 2.0.
So, although there will almost certainly be a very small minority of Windows
applications that will not run under OS/2 Version 2.0, the vast majority will
run, and in a mode which allows access to their full function. Indeed, to the
Windows application, the environment will appear exactly the same as if the
application were running under DOS/Windows in standard mode.
ΓòÉΓòÉΓòÉ 18.2. Windows Applications under OS/2 Version 2.0 ΓòÉΓòÉΓòÉ
Under OS/2 Version 2.0, Windows applications are treated as special cases of
DOS applications, which need a special environment in which to run. Therefore,
the key to Windows application compatibility is to provide these applications
with as similar an environment as possible to that experienced under DOS, while
taking advantage of the inherent design superiority of OS/2.
ΓòÉΓòÉΓòÉ 18.2.1. Supported Components ΓòÉΓòÉΓòÉ
The following components of Windows 3.0 are supported and available within the
OS/2 V2.0 Windows kernel:
Windows real mode kernel (WINOS2.COM and KERNEL.EXE)
Modified Windows standard mode kernel (OS2K286.EXE)
Modified DOS Extender (VDPX.SYS)
Print Manager (Spool Function)
Program Manager:
- Permits the starting of multiple Windows applications in a VDM
- Permits switching between Windows applications in the VDM
Help Manager
Video device drivers
Keyboard, mouse and communications device drivers
Task Manager
Windows user and GDI DLLs
Printer device drivers
Clipboard support
Setup, with only one function left in order to install Windows network device
drivers (DLLs).
Note: This is really not necessary to do if you are already running any
network requester code under OS/2 itself. This would be transparent
to the entire system and therefore every VDM and WIN-OS/2 session
will have full access to the network, printers, files, etc.
Control Panel, with functions limited to:
- Printer Install
- Color
- Fonts
- Sound
- Mouse
- International
- KBD (Keyboard rate).
The Clock program is available in a Multiple Application VDM (MAVDM) (see
Methods of Execution).
The following Microsoft Windows 3.0 components are not included within OS/2
V2.0 (even though they would run just as any other Windows application):
File Manager
Systems Editor (SYSEDIT)
Games
Write
Terminal
Notepad
Cardfile
Calendar
Calculator
PIF Editor
Paintbrush
Recorder
Wallpaper bitmaps
For each of these functions, equivalent capabilities are provided by OS/2
Version 2.0, or these functions are not required within the OS/2 Version 2.0
environment.
Multimedia Extensions (MME) for Windows
Multimedia Extensions for Windows can be installed under WIN-OS/2 and are fully
supported.
Some multimedia applications may require more than the default DPMI memory. If
that happens, the WIN-OS/2-Setting DPMI_MEMORY_LIMIT should be adjusted to the
appropriate value.
ΓòÉΓòÉΓòÉ 18.2.2. Methods of Execution ΓòÉΓòÉΓòÉ
Windows applications may be run under OS/2 Version 2.0 in six ways:
The original licensed Windows V3.0 or Windows V2.x may be started in a VDM,
and will allow Windows V3.0 and Windows V2.x, and its applications, to be run
in real mode.
A Single Application VDM (SAVDM) may be started, for a single Windows
application. The icon supplied with the Windows application will be defined
within the Workplace Shell desktop.
A Multiple Application VDM (MAVDM) may be started, which activates the
Windows Program Manager, allowing the user to access a number of Windows
applications.
A Separate "seamless" WIN-OS/2 VDM may be used, which is basically a SAVDM
running in its own window under the Workplace Shell. See "Seamless" WIN-OS/2
VDM below for further information.
A common "seamless" WIN-OS/2 VDM may be used, which is a special kind of
MAVDM. WIN-OS/2 will start all "seamless" WIN-OS/2 VDMs in a single session,
but in separate windows running under the Workplace Shell. See Common
"Seamless" WIN-OS/2 VDM below for further information.
A separate "seamless" WIN-OS/2 VDM may be used, and the WIN-OS/2 Program
Manager may be launched from there. This will allow to launch other Windows
applications from there and therefore, this would actually be a MAVDM running
in its own window under the Workplace Shell. Every Windows application
launched from there would run in its own window under the Workplace Shell but
share the same WIN-OS/2 kernel.
No license of Windows V3.0 or Windows V2.x is necessary to run Windows
applications, as the Windows environment is an implementation of Windows V3.0
and Windows V2.x within OS/2 V2.0 (WIN-OS/2) itself. Multiple instances of any
of the above methods may be started in the same system.
However, note that in the current release, "seamless" WIN-OS/2 VDMs and common
"seamless" WIN-OS/2 VDMs may only be started on machines with VGA graphics.
Seamless execution of Windows applications is not supported using other
graphics modes.
The following applications are started (iconized) when the first VDM (either
SAVDM or MAVDM) is started:
Modified Windows Clipboard Viewer Program
DDE Server/Agent Application
Presentation Manager icon
Task Manager (no icon)
Windows Program Manager (not visible in a SAVDM)
Clock (MAVDM only)
Windows Control Panel (MAVDM only).
Each of these methods is described in the following sections.
Single Application VDM (SAVDM)
A SAVDM is the recommended way of running Windows applications under OS/2
Version 2.0 in a non-VGA system, such as a PS/2 with an XGA or 8514/A display
adapter, because seamless execution is only supported with VGA graphics. Using
a SAVDM is also recommended if the user wishes to run Windows applications in
real mode (seamless execution is supported only in Windows standard mode).
Since the Windows application runs in a self-contained Windows environment in
its own VDM, it is fully protected from other applications, and the system is
protected from it. This means that if the application crashes for any reason,
it only affects its own VDM, and thus only that one application. Other Windows
or DOS applications running in other VDMs are not affected, nor are OS/2
applications. This represents a significant improvement in reliability over
DOS/Windows, in which a failure in one Windows application may bring down the
entire Windows system or corrupt the data areas of other Windows programs,
since all Windows applications and Windows itself share the same address space.
Figure "Single Windows Application Running under OS/2 Version 2.0"
Also, by running in SAVDMs, Windows applications are timesliced more
effectively than in a MAVDM or native DOS/Windows environment, since each
application is under the control of OS/2's scheduler and its pre-emptive
multitasking. In a MAVDM environment, all Windows applications are still
subject to the cooperative multitasking under Windows itself.
Ctrl-Esc is the key combination used to display the Windows "Window List".
Alt-Esc is the key combination used to switch to the next session as defined in
the Workplace Shell.
The SAVDM provides a simple approach to Presentation Manager integration. The
application is loaded from the Workplace Shell in a very similar way to a DOS
application, and the user may easily switch back to Presentation Manager, as
well as share data via clipboard or DDE with other Windows or Presentation
Manager applications. The icon displayed on the Workplace Shell desktop is the
application's own Windows icon.
Each SAVDM will indicate the Windows execution mode based on the file type
specified in the EXE header of the Windows application. Real mode will be
indicated for Windows applications written for versions of Windows prior to
3.0. Auto-Select (real or standard mode) is selected by default for Windows
3.0 applications, based on processor type.
Multiple Application VDM (MAVDM)
The MAVDM is almost identical to running Windows 3.0 on a DOS-based machine.
The MAVDM uses the Windows 3.0 Program Manager to start multiple Windows
applications within the same VDM, running on a separate Windows desktop. It
therefore provides maximum "look and feel" compatibility for the DOS/Windows
user migrating to OS/2 Version 2.0.
Note that the use of a MAVDM or the common "seamless" WIN-OS/2 VDM is a
requirement where Windows applications must communicate with one another via
shared memory.
Ctrl-Esc is used within the VDM to display the Windows "Window List".
Alt-Esc is used to switch to the next session defined in the Workplace Shell.
For a MAVDM, the Workplace Shell icon will represent the MAVDM itself, rather
than the applications executing within the VDM. Terminating an application
within the VDM will not terminate the VDM itself. The user must select Exit
Windows in the Windows Program Manager to terminate the VDM, or close the VDM
from the Workplace Shell.
In the MAVDM and the common "seamless" WIN-OS/2 VDM environment, all Windows
applications are still subject to the cooperative multitasking of Windows
itself. Since several Windows applications are typically loaded in the same
VDM, the MAVDM environment shares some of the pitfalls of DOS/Windows in terms
of robustness. If one Windows application crashes within a MAVDM, it may
cause all the applications within that VDM to fail. However, the effect is
only within that VDM; other VDMs running DOS or Windows applications, and other
processes executing under OS/2 Version 2.0, are not affected and continue
execution. So even here there are benefits from running Windows applications
under OS/2, for greater resilience from system crashes. Furthermore, the MAVDM
environment provides additional error checking and handling over that provided
by Windows 3.0 itself.
"Seamless" WIN-OS/2 VDM
One of the goals of OS/2 2.0 is to be the integrating platform of choice; that
is, to provide a desktop environment from which all types of applications:
16-bit OS/2
32-bit OS/2
DOS
Windows
may be executed in a uniform manner. Although OS/2 V2.0 is able to support
Windows applications effectively in SAVDMs, the additional ability to launch a
Windows application from a Workplace Shell object, and execute it on the OS/2
desktop along with Presentation Manager and DOS applications, achieves the goal
of creating an environment that is explicitly simple and uniform enough that
the end user need not be concerned with the implicit differences between the
types of applications that need to be executed in it. OS/2 V2.0 will concern
itself with the differences and "seamlessly" accommodate the applications.
This level of support extends not only to execution but to installation and
configuration of the application as well.
Figure "Single Windows Application(s) Running "Seamless" on the OS/2 Version
2.0 Desktop"
The appearance of Windows applications on the Workplace Shell desktop requires
that the Windows video device driver and the Presentation Manager video device
driver communicate and coordinate their access of the video hardware. Each
device driver effectively "owns" its area of the screen. Allowing the Windows
display device driver to directly access the video hardware avoids the more
cumbersome process of a complete task switch. However, this hardware access
poses integrity problems in the areas of simultaneous access of hardware,
rectangle invalidation handling, window management, and the exchange of window
state information between Presentation Manager and seamless VDMs supported by
separate video device drivers.
To address these problems, a high performance virtual device driver named
(VWIN.SYS), capable of interprocess communication, was created. This VDD
serializes the simultaneous accesses to the hardware, oversees the exchange of
window state information between Presentation Manager and seamless VDMs, and
establishes the addressability of Presentation Manager resources (either
directly or indirectly) by the Windows display device driver.
When the system is initialized, the Presentation Manager display driver calls
the VWIN.SYS driver, and passes a pointer to an array of structures that
specify the protocol required to enable the Windows device driver to access
Presentation Manager resources. To prevent a seamless Windows application from
hanging the entire Workplace Shell desktop, the Windows video device driver and
the Presentation Manager video device driver together implement and monitor a
VDM "heartbeat" or counter. This counter is stored in the Presentation Manager
display driver's data area and is made available to the Windows display driver.
The "heartbeat" counter information is made available to the Windows DD to
indicate that hardware access is in progress by the Windows DD. The "heartbeat"
counter is incremented by the Windows DD prior to the video hardware access. If
a Windows application is locking up the Workplace Shell desktop, it is the
responsibility of VWIN.SYS to identify the current owner of the semaphore,
terminate the VDM and tell the Presentation Manager DD to clean up.
In the event that the Presentation Manager display device driver requests
hardware resources and the time interval allotted for this access to occur is
exceeded, then:
1. If it is the first request, the Presentation Manager display driver records
the heartbeat value, process ID and thread ID of the process in control of
the hardware, and raises an internal flag.
2. If it is the second request, and the heartbeat value, PID and TID have not
changed, the Presentation Manager display driver calls the Windows display
driver before clearing the flag, and passes it the PID and TID.
It is the responsibility of the Windows driver to use the PID and TID to
identify the process that is monopolizing the hardware resources and
inform the Presentation Manager driver.
If it is an active, seamless VDM, WIN-OS/2 will terminate the VDM and
inform the Presentation Manager driver to clean up.
If the PID and TID are invalid, the Windows driver will inform the
Presentation Manager driver to clean up.
If the PID and TID belong to a Presentation Manager application, the
Windows driver will tell the Presentation Manager driver to attempt access
again.
This algorithm is relatively simple but not totally fail-safe. It is quite
possible to create a serialization mechanism that would safeguard the Workplace
Shell desktop to a greater degree. However, when one considers the remoteness
of the possibility of its failure (which requires a bogus PID or TID), the
costs, in terms of a performance impact, would far outweigh the benefits
incurred.
Some important points about "seamless" WIN-OS/2 VDMs:
Note that the use of a MAVDM or a common "seamless" WIN-OS/2 VDM is a
requirement where Windows applications must communicate with one another via
shared memory.
Only standard mode is supported in this mode of operation.
Presentation Manager must provide extensive support for this implementation
of WIN-OS/2. Basically, Presentation Manager supports a "black hole" and
allows the WIN-OS/2 kernel to control it. A modified WIN-OS/2 and
Presentation Manager display device driver is built into OS/2 Version 2.0 to
support this mechanism.
The "seamless" WIN-OS/2 VDM is only supported if OS/2 is configured for VGA
mode, because only the Windows VGA display device driver is supported. This
means that, on an 8514 or XGA equipped system, the Presentation Manager
display device driver must be configured in VGA mode to be able to run
Windows applications in a "seamless" WIN-OS/2 VDM. If the user selects a
higher resolution display device driver such as XGA, Windows applications may
only run in a SAVDM or MAVDM environment.
Notes:
1. Over time, more display device drivers will be enhanced to support this
seamless mode of WIN-OS/2. Once available, installed and configured
appropriately, WIN-OS/2 will provide seamless execution on other
supported graphics modes.
2. Readers should check the ReadMe file in the Information folder for the
latest information on this subject. Information in this folder explains
how to reconfigure the system to have seamless WIN-OS/2 support as well
as high resolution MAVDM and/or SAVDM sessions.
A VDD (VWIN.SYS) provides the necessary services to the Windows kernel and
Presentation Manager.
As shown in Figure "Implementation of "Seamless" WIN-OS/2 VDM in OS/2 Version
2.0" PMVIOP.DLL contains a PMShield routine which is responsible for
maintaining the entire Workplace Shell desktop, including the "black holes"
which correspond to and are maintained by each "seamless" WIN-OS/2 VDM.
WinShield is the Windows VDM's counterpart of PMShield. The Workplace Shell
desktop windowing state must be maintained in its entirety by this component.
WinShield registers a service routine with VWIN.SYS, giving it the ability to
post a message to PMShield whenever the Workplace Shell desktop state changes.
Upon creation of the first "seamless" WIN-OS/2 VDM, PMShield spawns three
dedicated threads under the Workplace Shell to specifically service its
"seamless" WIN-OS/2 VDM clients:
Thread 1 is the IPC Read Thread, which normally suspends itself within
VWIN.SYS, waiting for window-related events to occur in the "seamless"
WIN-OS/2 VDM. The typical events sent by the WinShield are Create, Move,
Size, Show Activate, etc. These events are duplicated by PMShield on the
Workplace Shell desktop for the purpose of tracking the "black hole" windows.
Thread 2 is the Control Windows Procedure Thread that the PMShield registers
with PMWIN.DLL. This thread handles all relevant events that alter the state
of the Workplace Shell desktop. Once in control, this thread will broadcast
all Workplace Shell desktop initiated events asynchronously to all VDMs by
calling VWIN.SYS. This causes a previously registered WinShield routine to
be dispatched, giving it an opportunity to post an asynchronous message to
itself.
Thread 3 is the Error Handling Thread. All non-fatal errors on all "seamless"
WIN-OS/2 VDM related operations will be reported through this mechanism where
a Presentation Manager dialog box will pop up explaining to the user what
went wrong.
On successful creation of a "seamless" WIN-OS/2 VDM, the Presentation Manager
Session Start thread will notify VVGA.SYS to allow the started VDM to access
the video hardware directly.
Common "Seamless" WIN-OS/2 VDM
There is no visible difference between Windows applications running in a
"seamless" WIN-OS/2 VDM and those running in a common "seamless" WIN-OS/2 VDM.
The technical differences between them are described in the following
paragraphs. Everything else discussed in the above section ."Seamless" WIN-OS/2
VDM is common to both.
To reduce the system resource usage in a low memory environment, users are
given the option to start all "Seamless" WIN-OS/2 applications in the same VDM.
This also helps to reduce startup time for Windows applications, and reduces
the swap file space required. By default, Windows applications migrated from a
DOS/Windows system at OS/2 installation time are migrated to a common
"seamless" WIN-OS/2 VDM. The user has the option of prestarting one or more
Windows applications in the common "seamless" WIN-OS/2 VDM by using the Startup
folder in the Workplace Shell.
There is only one common "seamless" WIN-OS/2 VDM in the system. If the system
is not currently configured to run "seamless" WIN-OS/2 VDMs, any Windows
application which is defined for common "seamless" WIN-OS/2 VDM will be loaded
and run in a fullscreen SAVDM.
By default, only the first Windows program launched from the Workplace Shell as
a "seamless" WIN-OS/2 VDM will create a new VDM. Any subsequent Windows
programs will share this environment, in exactly the same way as in a MAVDM
full-screen session. This is known as the common "seamless" WIN-OS/2
environment.
However, the user may wish to protect these Windows programs from each other,
and to maximize the timeslicing efficiency of Windows applications. This can be
done by checking the Separate session option on the Session page of the
Settings notebook for any Windows program object under the Workplace Shell.
That procedure would activate a "normal" "seamless" WIN-OS/2 VDM session.
The Workplace Shell Window List will contain an entry for the common "seamless"
WIN-OS/2 VDM itself, in addition to an entry for each Windows program running
in this VDM This provides also a mechanism for terminating this VDM from the
Workplace Shell desktop, along with all the active Windows applications in it.
As the user has a visual representation of the "contents" of the common
"seamless" WIN-OS/2 VDM, the user knows which applications will be terminated
if the Close option is chosen. If the common "seamless" WIN-OS/2 VDM hangs
because one of the Windows programs is not behaving properly, the Close option
on the entry for the common "seamless" WIN-OS/2 VDM will close down the entire
VDM, including all Windows programs running in it. This behavior is similar to
that of a MAVDM.
In the MAVDM and the common "seamless" WIN-OS/2 VDM environment, all those
Windows applications are still subject to the cooperative multitasking under
Windows itself. Since several Windows applications are loaded in the same VDM,
the common "seamless" WIN-OS/2 VDM shares the same pitfalls as does the MAVDM.
If one Windows application crashes within a common "seamless" WIN-OS/2 VDM, it
may cause all the applications within that VDM to fail. However, as in a
MAVDM, the effect is only within that VDM; other VDMs running DOS or Windows
applications, and other processes executing under OS/2 Version 2.0, are not
affected and continue execution. So even here there are additional benefits
running Windows applications seamlessly under OS/2. Furthermore, as for the
MAVDM environment, enhancements are made to provide additional error checking
and handling for the common "seamless" WIN-OS/2 VDM.
A number of restrictions apply to the use of a common "seamless" WIN-OS/2 VDM.
These are as follows:
The DOS settings which will be in effect for the common "seamless" WIN-OS/2
VDM will be those which are defined by the first Windows program to start in
this VDM. Changes to the settings for any subsequent Windows program in that
VDM will not affect the actual settings of the common "seamless" WIN-OS/2
VDM. To make this obvious to the user, the WIN-OS/2 Settings button on the
Session page of the Settings notebook is grayed for all Windows applications
running in the common "seamless" WIN-OS/2 VDM once it is active. This
implies that WIN-OS/2 settings cannot be viewed or changed once this VDM is
started.
The DPMI limit for the common "seamless" WIN-OS/2 VDM is higher than when
defined for "seamless" WIN-OS/2 VDM, since multiple applications are likely
to require more DPMI memory.
Each Windows program running in the common "seamless" WIN-OS/2 VDM will have
the same HAPP application handle), PID (process ID), and SGID (screen group
ID). Any action taken on one of these values will cause that action against
the entire VDM and not against only a specific instance inside the common
"seamless" WIN-OS/2 VDM. For example, if a WinTerminateApp() call is issued,
which uses the HAPP as input, then all applications running within the common
"seamless" WIN-OS/2 VDM will be terminated. The user will be warned by a
dialog that multiple Windows applications will be ended.
ΓòÉΓòÉΓòÉ 18.3. Installing WIN-OS/2 Support Under OS/2 Version 2.0 ΓòÉΓòÉΓòÉ
Windows application support is provided by default during the installation of
OS/2 Version 2.0. If the user wishes not to install Windows support, the
appropriate option must be chosen during OS/2 installation.
The OS/2 installation program detects the video resolution of the machine on
which it is being installed. If Windows support is selected during "first
time" installation, then the following configurations will be applied according
to the detected video resolution:
CGA, EGA Configured for full-screen (only) Windows support.
VGA Configured for "seamless" WIN-OS/2 VDM support.
8514/A, XGA During installation, a panel with the option to select
seamless support (and downgrade to VGA graphics mode) is
provided (see Figure "Installing Windows Support under OS/2
Version 2.0"). If full-screen (only) Windows support is
selected, then the higher resolution is maintained.
Note: Readers should check the ReadMe file in the Information folder for the
latest information on this subject. This folder contains information
on how to reconfigure the system to have seamless WIN-OS/2 support as
well as high resolution MAVDM and/or SAVDM sessions. Additional
support information for SVGA display device drivers will be provided as
well. OS/2 Version 2.0 - Volume 1: Control Program also discusses
several installation and configuration aspects of OS/2 V2.0.
When Windows support is selected at installation time, all the files necessary
to provide this support are installed in the following subdirectories:
\OS2\MDOS\WINOS2
\OS2\MDOS\WINOS2\SYSTEM
If the user decides to install Windows application support, DOS application
support is automatically installed. OS/2 Version 2.0's CONFIG.SYS file is
updated to include the above directories in the PATH statement.
Since Windows real mode requires 640KB of conventional memory and several MB of
expanded memory (EMS), the EMS virtual device driver is also required. If the
user did not select standard mode at installation time and wishes to add it at
later time, the OS/2 Version 2.0 CONFIG.SYS must be modified by adding the
following statements:
DEVICE=C:\OS2\MDOS\VDPMI.SYS (DOS Protect Mode Interface)
DEVICE=C:\OS2\MDOS\VDPX.SYS (DOS Extender Virtual Device Driver).
If these device drivers are not loaded, the Windows kernel will execute in real
mode.
Windows can use expanded memory which conforms to the LIM EMS 4.0 specification
when running in real mode. This memory is primarily used for storing background
applications. In a DOS/Windows environment, an appropriate Expanded Memory
Manager must be installed. Under OS/2 V2.0 this is not necessary, as the
virtual device driver already provides that service. In standard mode, Windows
may also use extended memory (XMS).
ΓòÉΓòÉΓòÉ 18.4. Migrating to OS/2 Version 2.0 ΓòÉΓòÉΓòÉ
Upon completion of the installation process, the user is given the opportunity
to migrate installed Windows applications (defined to the Windows Program
Manager) to the OS/2 Version 2.0 Workplace Shell. All Windows applications
which are to be migrated must have the appropriate DOS and Windows settings
defined in the Certified Application Database (CAD), which is shipped as a
standard component of OS/2 Version 2.0. See also Installing and Migrating
Applications.
Note: Only the settings for those applications which have been certified via
approved IBM testing channels will be held in the Certified
Applications Database (CAD), and only those settings which differ from
the default settings will be recorded.
If a referenced Windows application is found on any of the available disk
volumes during OS/2 installation, the existing *.INI and *.GRP files will be
read, the necessary changes applied to them, and the updated versions stored in
the \OS2\MDOS\WINOS2 directory. This will effectively migrate the user's
Windows desktop, including all Windows applications, into a MAVDM, SAVDM or
seamless environment.
The CAD provides information enabling the installation procedure to
automatically set the DOS settings for certified DOS and Windows applications.
The user is presented with a list of the certified applications found, which
can then be migrated. The user may select any or all of these applications.
The CAD is searched for each of the selected applications, and DOS and/or
Windows settings information found in the database will be used to
automatically assign settings to applications. Windows applications will be
placed in a single "Windows Applications" folder. DOS applications are placed
in a single "DOS Applications" folder.
The CAD is a binary database, generated from an ASCII database and a predefined
tag file. Each field in the ASCII database starts with a descriptive tag that
is associated with a value between 0-225 in the predefined tag file; the
maximum number of tags is therefore 256. When the binary CAD generation tool
encounters one of the descriptive tags, it generates an entry in the binary CAD
with a 0-255 value specified in the predefined tag file. To add new or
additional DOS properties, a short descriptive tag is created for the ASCII
file and associated with an unused value between 0-255 in the predefined tag
file. A length specification is also provided for the value in the tag file.
Each field in the binary CAD starts with a predefined tag value of 0-255 that
identifies the field. This tag is followed by a size field, which in turn is
followed by the actual value of the field.
Each application in the CAD has the following minimum information:
The filename used to start the application
The title of the application
A pointer to the next application.
The filename that starts the application is used to identify the application on
the hard drive. The next application pointer points directly to the next
application entry in the CAD. This provides the ability to jump from one entry
to the next without parsing all of the tags between entries in the CAD. The
application title is displayed to the user if the application is found on the
hard drive. The user will use this information to specify if the application is
to be migrated.
The filename extensions held in the CAD will determine what files are searched
for; that is all EXE, COM and BAT files.
When the applications have been migrated into the OS/2 Version 2.0 Workplace
Shell, information for DOS applications is stored in the OS2.INI file. Windows
settings for Windows applications are stored in the WIN.INI file, while their
DOS-related settings are stored in the OS2.INI file.
ΓòÉΓòÉΓòÉ 18.5. Defining Windows Applications ΓòÉΓòÉΓòÉ
As mentioned in the previous section, Windows applications may be automatically
migrated to the Workplace Shell desktop at OS/2 installation time. However, for
applications which are not defined in the Certified Application Database, or
which are installed after OS/2 installation, a Workplace Shell object may be
created from a template in the Templates folder. For such applications, the
WIN-OS/2 application execution environment is defined to the Workplace Shell
using the Program page of the program object's Settings notebook.
Figure "Defining a Windows Application to OS/2 Version 2.0"
The Session page allows the user to change Windows settings via the Windows
Settings dialog. This page defines whether the Windows kernel will execute in
real, standard, or Auto-Select mode. Auto-Select mode is highlighted as the
default. All DOS settings are selectable for Windows applications via the
Windows Setting dialog; Windows settings are included in the same list.
ΓòÉΓòÉΓòÉ 18.5.1. Defining a Single Application VDM (SAVDM) ΓòÉΓòÉΓòÉ
For a SAVDM, the Windows application name is entered into the Path and Filename
field on the Program page of the Settings notebook. The Workplace Shell then
determines the application type. Upon detecting that the application is a
Windows application, the Program Type in the Session page of the notebook will
be set to Windows Full Screen. When a user interactively creates a program
object for a Windows application and the Workplace Shell determines it is a
real mode application, Windows Full Screen will be marked as the default and
the application will be started as a SAVDM.
Each SAVDM has its own icon on the Workplace Shell desktop, for the application
within the SAVDM. This icon is the normal Windows icon for this application.
The icon title text will be the text specified in the Title field in the
General page of the Settings notebook.
ΓòÉΓòÉΓòÉ 18.5.2. Defining a Multiple Application VDM (MAVDM) ΓòÉΓòÉΓòÉ
When defining a MAVDM, the user specifies WINOS2.COM for the Path and Filename
field in the Program page of the Settings notebook. As explained above, the
Workplace Shell detects that the application is a Windows application and sets
the Program Type field in the Session page to Windows Full Screen.
The user may also define one or more Windows applications which will be
activated when the VDM is started. This is achieved as follows:
1. The applications to be started are specified in the Parameters field of the
Program dialog. Full path name and parameters should be specified.
The syntax for the parameters field is:
/R|/S [{][!|^]App1 App-parms [,] [!|^]App2 App-parms
/R Windows real mode
/S Windows standard mode These parameter are active for the whole VDM and
not on an application base.
[ ] Optional Parameters
! Start the Windows Application Minimized
^ Start the Windows Application Maximized. No blank must be specified
between '!' or '^' and the application name.
A MAVDM will be created if one of the following are present:
{} Braces
Comma separating the application names
An application name is not passed as a parameter.
If neither the exclamation mark nor the caret is specified, the Windows
application will start "normalized", approximately one third of the screen
size.
Changes are effective immediately and are saved when the Settings notebook
is closed or when the system is shut down. The Default button resets all
settings to their previous values.
2. In the Session dialog WIN-OS/2 full screen must be selected.
The icon will be the Windows full-screen icon defined by WINOS2.COM.
Individual icons for applications running in the MAVDM are not displayed on the
Workplace Shell desktop.
ΓòÉΓòÉΓòÉ 18.5.3. Defining a "Seamless" WIN-OS/2 VDM ΓòÉΓòÉΓòÉ
In order to obtain the highest integration of the Windows V3.0 and Windows V2.x
application into the OS/2 V2.0 Workplace Shell, the following definitions must
be provided in order to have the application execute in seamless mode:
1. Select the Program page of the program object's Settings notebook.
2. Enter the Windows application name in the Path and Filename field. A fully
qualified path and filename is necessary.
3. Select the Session page of the program reference object's Settings
notebook.
4. Click on the WIN-OS/2 window radio button.
5. All DOS settings are selectable for Windows applications via the Windows
Settings page dialog; Windows settings are included in the same list.
The "WIN-OS/2 Window" radio button indicates that the associated Windows
application program is to be initiated in a "seamless" Windows VDM. This is a
single application VDM. However, the WIN-OS/2 Program Manager may be
registered with the Workplace Shell as a "seamless" WIN-OS/2 program object.
Once the Program Manager is up and running, the user may launch any other
Windows program from it. Of course, this assumes that other Windows programs
were installed through the Program Manager, and that they all run in the same
WIN-OS/2 session.
A new parameter is added to the SYSTEM.INI file:
WOS2VDMApps=!clipwos2,!ddeagent
The WIN-OS/2 Program Manager reads this line for "seamless" WIN-OS/2 VDM, to
determine which applications to pre-start.
Since "WIN-OS/2 Window" is the default Windows application setting, all Windows
program objects that are created through the Windows Migration utility (for
standard mode Windows applications) will default to that setting. If a user
chooses to execute a Windows application by double clicking its program file's
icon in the Drives folder, rather than its program object icon (if any), then
the Workplace Shell will attempt to initiate it in a "seamless" Windows
environment.
ΓòÉΓòÉΓòÉ 18.6. Starting Windows Applications ΓòÉΓòÉΓòÉ
The following methods may be used to start Windows applications:
1. Select the application's program file from within the Drives folder. This
method is not recommended, as it will not pick up any optimized DOS and/or
Windows settings.
2. Enter the application name at an OS/2 command line prompt. This method is
not recommended, for the same reason as stated above.
3. Install the application in a folder, in the Workplace Shell desktop as
described in Defining Windows Applications, and start it by double-clicking
the mouse on its icon. This is the preferred method for starting a Windows
application.
If the application is started from either the Drives Folder or an OS/2 command
prompt, a SAVDM will be created. If the application is started from an icon,
either a SAVDM, a MAVDM or a "seamless" WIN-OS/2 VDM will be created, depending
on how the application was defined at installation.
ΓòÉΓòÉΓòÉ 18.6.1. SAVDM ΓòÉΓòÉΓòÉ
A SAVDM is created for the execution of a single Windows application. The
Workplace Shell actually starts WINOS2.COM as the application in the VDM, and
the application to be started in the VDM is passed as a parameter to WINOS2.
This process is transparent to the user; the definition of the SAVDM in the
Settings notebook uses the Windows application name only.
If WINOS2 is to execute in real mode, the /r option will be automatically
inserted into the parameter list for the VDM creation, based on the WIN-OS/2
settings. If standard mode was highlighted, /s is passed as a parameter to
WINOS2. The default is to pass no Windows options, only the application name.
When the Windows application is terminated, WINOS2.COM terminates, which in
turn causes the VDM to be terminated.
ΓòÉΓòÉΓòÉ 18.6.2. MAVDM ΓòÉΓòÉΓòÉ
In the case of a MAVDM, the Windows Program Manager is loaded in the VDM,
transparently to the user. The Program Manager's window is displayed
maximized, and applications are then launched from the Windows Program Manager.
In this case, the Workplace Shell's Window List will display the name of the
Windows kernel (WINOS2.COM) executing in the VDM. It will not show each
individual Windows application running within that MAVDM. This is different
from a SAVDM, where the Workplace Shell's Window List will display the name of
the Windows application.
ΓòÉΓòÉΓòÉ 18.6.3. "Seamless" WIN-OS/2 VDM ΓòÉΓòÉΓòÉ
OS/2 Version 2.0 does not allow a "seamless" WIN-OS/2 VDM to be started from a
DOS or OS/2 command prompt, nor is there any programmed interface for starting
a "seamless" WIN-OS/2 VDM application from a Presentation Manager application.
In addition, a SAVDM or MAVDM cannot be switched to a "seamless" WIN-OS/2 VDM
once the virtual DOS machine is running.
The "seamless" WIN-OS/2 VDM execution mode allows Windows applications to run
from the Workplace Shell desktop in a manner that is virtually
indistinguishable from other OS/2 and DOS applications. Double clicking a
"seamless" WIN-OS/2 VDM application icon will cause that application to be run
in a window on the Workplace Shell desktop. This single application "seamless"
WIN-OS/2 VDM environment will be a separate Windows VDM, where the Program
Manager is not visible.
In order to be perceived as a compatible part of the Workplace Shell
environment, the "seamless" WIN-OS/2 VDM application's execution must be
controllable in the same manner as the execution of other OS/2 and DOS
applications. This has several implications:
The name of each active "seamless" WIN-OS/2 VDM application will be included
in the Workplace Shell Task List.
Each "seamless" WIN-OS/2 VDM supports an appropriate context menu.
The user is able to cycle through all open Workplace Shell windows in the
standard Alt-Esc manner.
The minimize/hide icons on Windows applications function consistently with
other such icons on the Workplace Shell desktop.
The window controls on a "seamless" WIN-OS/2 VDM window operate in the same
fashion as analogous Workplace Shell controls. The display style of the
window controls on a "seamless" WIN-OS/2 VDM window will be "Windows-style"
however.
When a "seamless" WIN-OS/2 VDM Windows application terminates, its Workplace
Shell window is also terminated.
This approach allows the appearance of a Windows application executing in a
"seamless" WIN-OS/2 VDM to conform as closely as possible to that seen when
running in a native DOS/Windows environment, while its behavior is as close as
possible to that of a normal Presentation Manager/Workplace Shell application.
If You can't get a "Seamless" WIN-OS/2 VDM to Work
Starting a Windows application requires a number of configuration options to be
correctly completed prior to starting the application. Failure to do so may
result in the application failing to start. This is typically due to one of
three problems:
1. Failures that are due to the configuration of the overall OS/2 V2.0 system.
2. Failures that are due to the configuration of the overall Windows
environment.
3. Failures that are due to the nature of a particular Windows application.
The first two classes result from not being "seamless capable"; that is, some
part of the system's configuration is not set up properly for "seamless"
WIN-OS/2 VDM operation. For example:
An OS/2 V2.0 video device driver other than the "seamless" VGA driver is
installed.
VWIN.SYS is not installed, due to the following line being missing in
CONFIG.SYS:
DEVICE=C:\OS2\MDOS\VWIN.SYS
The Windows video device driver referenced by the SDISPLAY.DRV= statement in
SYSTEM.INI file does not point to the "seamless" Windows VGA device driver.
The correct entry in the SYSTEM.INI is:
SDISPLAY=SWINVGA.DRV
The third class arises because the "seamless" execution environment will be a
SAVDM that runs in standard mode only. This means that real mode Windows
applications will not be able to run in "seamless" WIN-OS/2 VDM ("seamless"
VDMs). The Workplace Shell is able to gracefully handle the initiation of real
mode Windows applications, because it can determine the mode of a Windows
application from its program header. Such Windows applications will be
automatically initiated in full-screen SAVDMs.
In addition, groups of applications which depend on the sharing of global
Windows memory will not be able to run in a "seamless" WIN-OS/2 VDM, unless it
is possible to manually initiate one application in the set and then have that
application programmatically spawn the rest of the applications in the set. In
theory, this situation should never occur because the casual sharing of Windows
global memory is expressly against the Microsoft guidelines for Windows system
programming. However, if there are applications that depend on such sharing,
the user will have to explicitly know to run them in a full-screen MAVDM.
ΓòÉΓòÉΓòÉ 18.7. Windows Environment Settings ΓòÉΓòÉΓòÉ
When Windows application support is selected during installation of OS/2
Version 2.0, a WIN.INI file is built. The options for devices selected for the
OS/2 environment are included in this file.
Should the user migrate from a DOS/Windows 3.0 environment, the original
WIN.INI created by Windows will be left unchanged. At installation time, the
Windows installation process will examine the original AUTOEXEC.BAT file and
search in all directories specified in the PATH statement in there for the
original Windows WIN.COM file. If one exists, it will copy all Windows *.INI
files and all the Windows application *.INI files from that same subdirectory
into the \OS\MDOS\WINOS2 subdirectory. It will then modify these copies to
adjust for the appropriate video, mouse, country and keyboard settings. This
happens in accordance with the answers provided during the initial OS/2 setup.
Figure "Migrating the Windows Initialization Files"
The Windows group files (*.GRP) and other Windows application-specific *.INI
files are also copied. The modified WIN.INI and PROGMAN.INI files will have
their path statements modified to point to the new locations of these files.
Printer definitions for the Windows environment will also depend on the OS/2
setup, rather than on any previously defined printer device driver. Of course,
all path statements in these files will be modified to point to the appropriate
directories.
If a user installs OS/2 V2.0 over a previous version of OS/2 V2.0, the Windows
install process will look for the existence of \OS2\MDOS\WINOS2\WINOS2.COM. If
found, it will perform the same migration process from that base environment.
If none of these files can be found, the Windows installation process will
start from scratch, in the same way that a first-time Windows 3.0 installation
would do it.
The following initialization files are created/modified:
WIN.INI
PROGMAN.INI
CONTROL.INI
SYSTEM.INI.
The initialization and group files are required to restore a corrupted Windows
environment. Backups of these files should be taken prior to making any changes
to this environment.
These files and their contents are described in the following sections.
ΓòÉΓòÉΓòÉ 18.7.1. WIN.INI ΓòÉΓòÉΓòÉ
WIN.INI contains a number of sections which may be customized by the user,
including which applications should be started or run when a Windows MAVDM is
started. Each Windows application is recorded in a separate section indicating
the drive and path to execute the application. The supported file extensions,
for each application installed, are recorded in the Extensions section.
Users need to be careful when applying any changes to this file, especially
when it comes to configuring of any device drivers. The user might install a
device driver which either does not exist or is not supported under OS/2 V2.0,
such as specialized video device drivers.
Most, but not all, Windows applications also have their private entries in the
WIN.INI file. Usually, such entries consist merely of a pointer to the
application's own working directory. However, some applications register all
their installation-dependent configuration information, and may therefore be
very dependent upon finding their data in this file. The migration process
will take care of these entries and migrate them appropriately.
ΓòÉΓòÉΓòÉ 18.7.2. PROGMAN.INI ΓòÉΓòÉΓòÉ
PROGMAN.INI contains the Windows Program Manager settings. This file contains
the following sections:
Setting: Describes the settings of the Program Manager, along with the user's
preferences.
Groups: Specifies the Program Groups that exist in Program Manager and the
path name to their group files (*.GRP).
ΓòÉΓòÉΓòÉ 18.7.3. CONTROL.INI ΓòÉΓòÉΓòÉ
CONTROL.INI contains the color and desktop settings for the Windows Control
Panel. The following options are available:
Current: Specifies the window color setting
Color Schemes: Specifies the available color options
Custom Colors: Specifies up to 16 customization colors
Patterns: Specifies options for the desktop pattern.
ΓòÉΓòÉΓòÉ 18.7.4. SYSTEM.INI ΓòÉΓòÉΓòÉ
SYSTEM.INI contains the global system information used by Windows when it
starts. Changes are not effective until Windows is restarted.
The following sections are included:
Boot: Lists the drivers and Windows modules. The OS/2 file contains new Boot
section keywords which cover MAVDM and SAVDM default applications:
GOPM This program returns the user to the Workplace Shell
Clipboard The modified WIN-OS/2 Clipboard View program
DDEAGENT The WIN-OS/2 DDE (Dynamic Data Exchange) program
Printman The modified WIN-OS/2 Print Manager program, in MAVDM only.
Boot.description: Lists the names of devices the user can change using
Windows Setup
Keyboard: Contains information about the keyboard
NonWindowsApp: This section should not contain any information, since
non-Windows applications are started from the OS/2 desktop. In the case of a
migrated Windows environment, this section might contain information, but
under OS/2 V2.0 it will be ignored.
Standard: Contains information required by Windows to run in standard mode
386Enh: Contains information used by Windows to operate in 386 enhanced mode.
This section is not used as OS/2 provides equivalent function.
ΓòÉΓòÉΓòÉ 18.7.5. DOS and WIN-OS/2 Settings ΓòÉΓòÉΓòÉ
The following DOS settings are automatically defined for any Windows
application under the Workplace Shell. If a user explicitly modifies these
entries, following these settings is recommended:
WIN_RUNMODE AUTO
OS/2 V2.0 will decide whether the Windows
application will run in real or standard
mode, unless the user specifically selects a
mode.
KBD_CTRL_BYPAS CTRL_ESC
This keyboard sequence is required in a
WIN-OS/2 MAVDM in order to bring up the
Windows List. If not bypassed, the Ctrl+Esc
sequence is trapped by the Workplace Shell.
MOUSE_EXCLUSIVE_ACCESS ON
Only necessary if the user wishes to run
this SAVDM or MAVDM in a window under the
Workplace Shell. Note this pertains to
running the entire VDM in a Presentation
Manager window, not to running in seamless
mode.
DPMI_MEMORY_LIMIT 2 (MB)
This is the default for the Windows
environment and can always be increased when
needed. However, decreasing this value is
not recommended.
IDLE_SENSITIVITY 75
This is the default value. The performance
of some Windows applications can be improved
by re-adjusting this value to their specific
needs. In particular, applications which
make extensive use of the mouse may exhibit
"jumpy" mouse movement when IDLE_SENSITIVITY
is allowed to default; for such
applications, IDLE_SENSITIVITY should be set
to 100, which disables idle detection.
ΓòÉΓòÉΓòÉ 18.8. Windows Device Drivers ΓòÉΓòÉΓòÉ
Upon installation, the WIN.INI file is updated with the appropriate information
for the following options. Installation will install the following Windows
device drivers in the appropriate directories:
Keyboard
Mouse
Video
Printer
Codepage/country.
If a device driver is supported in Windows but not supported by OS/2, the
Windows version will not be supported.
Note: Any "illegal" combination of OS/2 and Windows display device drivers
may cause the Windows environment to crash or not to come up at all.
On the other hand, the user can configure a useful dual screen configuration,
which will actually run the Workplace Shell on one screen and Windows on the
other simultaneously. OS/2 V2.0 may be run with the standard system display,
such as VGA, XGA and so on, and in addition, another display adapter may be
installed to run Windows applications, such as the IBM PS/2 Image Adapter/A,
which is a Micro Channel card and supported on PS/2s. This requires the
appropriate Windows display device driver to run exclusively on that adapter
and the screen connected to it. Of course, the user must change several things
(examples shown relate to the Image Adapter/A):
CONFIG.SYS Add "DEVICE=C:\MYSUB\IADOSRFS.SYS"
This may be done via the DOS Settings for that particular
Windows session object under the Workplace Shell.
SYSTEM.INI Change "display.drv=IAA.DRV"
IASETUP.EXE This is a DOS program which needs to be run once after
installation. This utility will actually add some special
entries to the WIN.INI file, which will tell the IAA.DRV display
device driver what resolution and color setup to use on the
Image Adapter.
These device drivers and programs can be found on the Image Adapter support
diskette.
Note: Do not confuse the scenario above with OS/2's standard dual screen
support, which is installed and configured automatically if a VGA and
8514 (or XGA) are found during initial installation. In that case,
only one screen will be active at any given moment, while the display
of the other will be frozen.
ΓòÉΓòÉΓòÉ 18.9. Print Support for Windows Applications ΓòÉΓòÉΓòÉ
The installation procedure will update the new WIN.INI file to include the
printer device driver details required by Windows for printers selected under
OS/2. Installation selects a Windows printer device driver comparable with the
OS/2 printer device driver for that printer. The Windows printer device driver
will initially operate in its default mode. If the printer device driver must
be configured in a mode other than the default mode, the printer should be
configured from within the Windows Control Panel.
If there is no equivalent OS/2 printer device driver, the Windows device driver
should be installed and configured via the Windows Control panel. The user
should also use a printer port which is associated with the IBMNULL.DRV PM
printer device driver on the OS/2 side. This will ensure the print data is
passed straight through the port without OS/2's print subsystem modifying
anything within the data stream. Even the usual "printer reset" should not
occur.
ΓòÉΓòÉΓòÉ 18.9.1. Print Subsystem Architecture ΓòÉΓòÉΓòÉ
There are some interesting and significant changes to the OS/2 print subsystem
architecture which are used to support Windows applications, and which are
worth noting:
The print subsystem has been expanded to provide printing support for Windows
applications running on WIN-OS/2.
The OS/2 file system now intercepts ALL print jobs routed to an LPTx port,
even those directed to WIN-OS/2 LPT1 to LPT3 and WIN-OS/2 LPT1.OS2 to
LPT2.OS2 ports, and routes them to the OS/2 spooler. Jobs routed to a COM
port are not intercepted by the file system and can proceed directly to the
physical port via the serial port device driver.
Figure "Detailed View of the WIN-OS/2 Data Connections" shows the WIN-OS/2
details of the print subsystem architecture in more detail. The interesting
feature to note here is that a second spooler is present; that is, the WIN-OS/2
spooler. The WIN-OS/2 spooler is the OS/2 V2.0 implementation of the Windows
spooler. Similarly, the WIN-OS/2 Print Manager and WIN-OS/2 Control Panel
represent the OS/2 V2.0 implementation of the Windows Print Manager and Windows
Control Panel. There are minor user changes apparent in the WIN-OS/2 Control
Panel, but these provide extra function rather than take it away.
For WIN-OS/2 printing, raw print data is generated via the WIN-OS/2 printer
driver and GDI (Graphical Device Interface). The WIN-OS/2 printer driver
directs the data to the appropriate port but the data route then taken varies
depending on whether or not the OS/2 spooler is enabled, as shown in Figure
"Low Level View of the WIN-OS/2 Printing Data Flow".
If the OS/2 spooler is enabled, an INT21 is issued which provides a direct path
for the print data to come into the OS/2 V2.0 file system. Jobs directed to
LPTx or LPTx.OS2 ports are intercepted by the file system and are sent on to
the SplQmxxx interface. The print data is then processed by the print subsystem
as though it was raw data arriving from a PM queued application. Note that for
this scenario, the print data is processed by the WIN-OS/2 printer driver and
also part 2 of the equivalent OS/2 printer driver.
Note: It is important to ensure that the WIN-OS/2 and OS/2 printer drivers
match to avoid conflict between them. If you use a WIN-OS/2 driver
which has no OS/2 equivalent then use the IBMNULL driver.
Print jobs directed to COMx ports are not intercepted by the file system as for
LPTx/LPTx.OS2 ports. Instead, they are passed directly to the serial kernel
device driver.
If the OS/2 spooler is disabled, the print data bypasses many of the print
subsystem components. In this scenario, the WIN-OS/2 spooler will be called
upon to spool the print job, which is actually written to the root directory of
the fixed disk. The queued spool files are distinguished by having the file
extension .TMP. If the WIN-OS/2 spooler is also disabled then the print job
passes straight through.
With the OS/2 spooler disabled, there are three routes that print jobs can
take, according to their port destination:
1. When it is the turn of a COMx job to be printed, the WIN-OS/2 spooler
passes the print job to the COM VDD (Virtual Device Driver). The reason for
this is that the job will ultimately be printed through the OS/2 serial KDD
(Kernel Device Driver) which is COM.SYS. A VDD cannot call upon physical
device drivers, such as COM.SYS, directly. Instead it must call on the
services of the VDH (Virtual Device Helper) which is a programming
interface that is able to do this on behalf of the VDD. Consequently, the
VDD passes the print data to the serial KDD via the VDH.
Note: If you are printing to a COMx port, the WIN-OS/2 printer device
driver needs to initialize that port and know about the handshaking
protocol. To specify the correct settings, you will have to use the
WIN-OS/2 Control Panel and click on the Ports icon.
You should also make sure that you have installed the matching PM printer
device driver under the Workplace Shell. If you don't have a matching
version, use the IBMNULL printer device driver. This printer object needs
to be assigned to the same COMx port and the settings must match the
settings on the WIN-OS/2 side as well as the current printer setup.
If you don't do that, the printing result will be unpredictable, especially
for large and complex print jobs.
2. Jobs directed to LPTx are routed to the parallel physical device driver,
PRINT0x.SYS.SYS, via INT21.
3. Jobs sent to LPTx.OS2 are routed directly to the parallel physical device
driver from the WIN-OS/2 spooler.
Recommendation: It is strongly recommended that users operate the print
subsystem with both spoolers enabled. Otherwise, print data
from different jobs may become mixed up, and individual
applications may have to wait until printing is completed
before resuming execution.
For more details about the entire print subsystem, including DOS and WIN-OS/2
sessions, readers should refer to OS/2 Version 2.0 - Volume 5: Print
Subsystem.
ΓòÉΓòÉΓòÉ 18.10. Font Support ΓòÉΓòÉΓòÉ
The following discussion can also be found in OS/2 Version 2.0 - Volume 5:
Print Subsystem, including more details about Presentation Manager, the
Workplace Shell, and the print subsystem.
Fonts are used for output by the system to two devices:
1. Displays
2. Printers.
With the many types of displays and even more numerous types of printers one
can imagine the complexity of tracking who can use which fonts and what do they
look like on a 75 dot display as well as a 300 dot printer.
OS/2 Version 2.0 utilizes Adobe** Type Manager (ATM) for this specific purpose.
There are two ATMs present in OS/2 Version 2.0, one for OS/2 PM applications
and the other for WIN-OS/2 applications. These ATMs allow the system to provide
a seamless look and consistent output while using most applications. Because
there are two ATMs with some duplicate files, however, user installation and
management is critical.
ΓòÉΓòÉΓòÉ 18.10.1. Adobe Type Manager Overview ΓòÉΓòÉΓòÉ
ATM provides WYSIWYG text to all OS/2 V2.0 PM and WIN-OS/2 supported printers
and displays. WYSIWYG (What You See Is What You Get) implies that what you see
on the display is what you will see on the printed page. In reality, a 75 dot
per inch display can not show you what a 300 dot per inch printer will produce.
It is physically impossible. What it will give you is fully formed characters
in virtually any size and a sense of the "balance" of the page with respect to
line, word and letter spacing. With ATM you have the ability to install and use
any of the hundreds of Type 1 Fonts compatible with the PostScript** Page
Description Language. Thirteen Type 1 fonts are included in OS/2 V2.0 in four
font groups (Times New**, Helvetica**, Courier and Symbol). This group provides
a satisfactory basic working set, to which extra fonts can be added.
With ATM, users now have a wider choice of fonts, and can display and print
them even on lower-cost devices. For example, PostScript-quality fonts can now
be printed on non-PostScript devices such as the IBM 4019 and 4029, and the
HP** LaserJet** series without the need to add the additional PostScript
interpreter option. You still get excellent results, though slower performance,
as the fonts will be rasterized in the PS/2 rather than the printer. Even an
IBM 4201 or an IBM 5152 or other low-cost matrix printers can print Type 1
fonts but, of course, not with the same quality as laser printers. These same
fonts can also be "installed" as downloadable fonts to be sent to PostScript
printers for faster print performance.
The list of available fonts for most applications is a combination of the list
in the printer device driver you have selected for output and the fonts you
have installed in the ATMs. Tests with Lotus 1-2-3 for Windows, Aldus**
PageMaker, and DeScribe** indicated that as soon as additional fonts were
installed in the Font Palette of OS/2 PM and the ATM Control Panel of WIN-OS/2,
all of these applications were able to include them in their font choice list,
display them and print them. Some applications like CorelDraw!** 2.0 and
Micrographx** Designer use their own internal outline format for fonts. They
will use the same Type 1 fonts as ATM but the fonts must be installed
seperately in each application. Consult your application documentation to
determine how each one handles fonts.
ΓòÉΓòÉΓòÉ 18.10.2. ATM File Formats ΓòÉΓòÉΓòÉ
Files: .FON
These files hold the standard OS/2 V2.0 bitmap fonts and are copied there by
the OS/2 V2.0 install procedure.
Files: .PSF
PostScript font files are the new Type 1 Font files in internal-to-PM format
which is designed (for efficiency) for the core fonts only (Times New, Courier
and Helvetica).
Files: .AFM
These files hold the Adobe Font Metrics and are used by OS/2 PM ATM.
Information such as character widths and kerning pairs are in this file.
Files: .PFB
These files hold the Printer Font Binary and are used by both OS/2 PM ATM and
WIN-OS/2 ATM. These are the files that can be downloaded into printer storage.
Files: .PFM
These files hold the Printer Font Metrics and are used by the PostScript device
driver to download fonts and by WIN-OS/2 ATM.
Files: .PFA
These files hold the Printer Font ASCII and are embedded by the PostScript
device driver into the PostScript print job if you installed them as
downloadable fonts.
For non-ATM file formats, such as the native formats for PCL, PPDS and 420X
printers.
Figure "File Structure of Adobe Type Manager"
ΓòÉΓòÉΓòÉ 18.11. ATM for WIN-OS/2 ΓòÉΓòÉΓòÉ
While ATM for OS/2 PM is integrated into the operating system, ATM for WIN-OS/2
is a separate program that is automatically installed into the WIN-OS/2 desktop
for you. ATM for WIN-OS/2 is accessed by using the ATM Control Panel in the
WIN-OS/2 Main group. If you plan to manage fonts frequently after your initial
installation it is recommended that you create a program icon on your OS/2 PM
desktop for the WIN-OS/2 ATM control panel. The next section will describe how
to do this.
ΓòÉΓòÉΓòÉ 18.11.1. Installing ATM for WIN-OS/2 ΓòÉΓòÉΓòÉ
ATM for WIN-OS/2 is automatically installed when you install the OS/2 base
code. However, the 13 "IBM Core Fonts" that are automatically installed for you
in OS/2 PM are not installed under WIN-OS/2. In fact ATM for WIN-OS/2 is itself
not active until you install at least one font. This is why you will see an "X"
over the ATM icon when you start the WIN-OS/2 Full-Screen command prompt if you
have not installed any fonts. Included on the device drivers diskettes are the
necessary font files to install these "IBM Core Fonts" for WIN-OS/2. They are
currently located on device driver diskette #5.
As mentioned previously, it is a good idea to have the WIN-OS/2 ATM icon on
your OS2 PM desktop if you manage fonts frequently. There are two ways to do
this:
1. You can use the Migrate Applications program in the System Setup folder.
However, this action will place the icon in a folder called "Additional
Windows Programs". You will then have to open that folder and drag-and-drop
the ATM Control Panel icon onto your desktop.
2. You can also open the Templates folder and drag-and-drop the Program icon
on your desktop and type in the prompts. ATM for WIN-OS/2 is located in
\OS2\MDOS\WINOS2\ATMCNTRL.EXE. Use \OS2\MDOS\WINOS2 as your working
directory. Under Session select WIN-OS/2 window if available, otherwise
select WIN-OS/2 full screen.
Under certain conditions ATM may become disabled or you may want to remove it
for performance reasons if you only use standard fonts. In either case ATM for
WIN-OS/2 is activated based on entries in the SYSTEM.INI file located in the
path \OS2\MDOS\WINOS2. If installed correctly you will see the following
statements:
1. system.drv=atmsys.drv
2. atm.system.drv=system.drv
To disable ATM:
1. Delete the atm.system.drv=system.drv statement
2. Change system.drv=atmsysdrv to system.drv=system.drv.
ΓòÉΓòÉΓòÉ 18.11.2. Installing Additional Fonts for WIN-OS/2 ATM ΓòÉΓòÉΓòÉ
Before installing any additional fonts for WIN-OS/2 make sure that all of your
printers are installed and that they are configured for the correct output
port. WIN-OS/2 maintains its font information in the ATM.INI for non-PostScript
printers and in the WIN.INI for PostScript printers. For PostScript printers
this means that PostScript printers installed after the font installation will
not have those fonts in their list. Also if you change the output port of an
installed PostScript printer then your fonts will disappear unless the new port
also had a PostScript printer assigned to it while the fonts were being
installed.
To install an additional font:
1. Open the ATM Control Panel
2. Click on Add...
3. Double Click on the source of the new font(s)
4. Click on the Font files you wish to add
5. Click on Add
6. Click on Exit
You must restart Windows to access the new fonts. The system will prompt you to
do this.
Important: When you install the fonts the system will prompt you with
suggested paths for the files. Although you may change the path,
remember one thing: OS2 PM ATM will be installing the .PFB file as
well and will place it in a different directory. You will be
tempted to use the same directory for both OS/2 PM and WIN-OS/2. We
recommend that you use the default settings because when you delete
a font with the OS/2 PM Font Palette it will also delete the .PFB
font file! This will make the font unusable, although still
installed, in WIN-OS/2. Allowing the system to keep your OS/2 PM
and WIN-OS/2 fonts separate will save a lot of confusion in
managing fonts.
These files would have been added to the \PSFONTS directory after installing
the Berthold Bodoni Antiqua fonts.
\PSFONTS.
5-01-90 8:00a 39648 0 bpbi____.pfb
5-01-90 8:00a 38664 0 bpb_____.pfb
5-01-90 8:00a 36930 0 bpi_____.pfb
5-01-90 8:00a 37381 0 bpli____.pfb
5-01-90 8:00a 35979 0 bpl_____.pfb
5-01-90 8:00a 38740 0 bpmi____.pfb
5-01-90 8:00a 38098 0 bpm_____.pfb
5-01-90 8:00a 35837 0 bprg____.pfb
And these files would have been added to the \PSFONTS\PFM directory after
installing the Berthold Bodoni Antiqua fonts.
\PSFONTS\PFM.
4-10-92 10:42a 7016 0 BPBI____.PFM
4-10-92 10:42a 5830 0 BPB_____.PFM
4-10-92 10:43a 6019 0 BPI_____.PFM
4-10-92 10:43a 5934 0 BPLI____.PFM
4-10-92 10:42a 5700 0 BPL_____.PFM
4-10-92 10:43a 7869 0 BPMI____.PFM
4-10-92 10:43a 5571 0 BPM_____.PFM
4-10-92 10:43a 6004 0 BPRG____.PFM
Note: The internal file format is different from the standard core fonts
delivered with OS/2 V2.0. Those have been modified for performance reasons,
where these fonts are installed as standard Type 1 fonts. :enote.
Important: As information is added to the ATM.INI file, don't try to install
or remove fonts just by copying or erasing files. Adding or
deleting fonts must be done with the ATM Control Panel and/or the
Print Manager.
For faster performance and better typeset quality don't forget to either
install these fonts as downloadable, or download them directly, if you are
using them with a PostScript printer, which does not have them already
built-in.
ΓòÉΓòÉΓòÉ 18.11.3. Deleting Fonts for WIN-OS/2 ATM ΓòÉΓòÉΓòÉ
The standard core fonts and the additional Type 1 fonts have to be deleted with
the ATM Control Panel. To delete them:
1. Open the ATM Control Panel
2. Click on the font(s) to be removed
3. Click on Remove
4. Click on Yes in the confirmation box
5. Click on Exit
You must restart Windows to use the updated font list in the ATM.INI file. The
system will prompt you to do this. The soft font entries in the WIN.INI file,
however, will not be deleted. This means that you will still "see" the deleted
fonts in the font list for your applications if you choose a printer(usually
PostScript) that has these entries. Although the font name will appear, when
you select it you will not get the expected screen font as it has been deleted
from ATM. Instead you will get an installed font, usually Times or Helv,
depending on the font you selected.
In order to remove the deleted fonts from the lists you must edit the
\OS2\MDOS\WINOS2\WIN.INI file. The following example shows you a before and
after version of the WIN.INI file if you wanted to remove all Berthold Bodoni
Antiqua fonts from your application font lists.
WIN.INI after ATM delete but before manual edit.
[PostScript,LPT2.OS2]
device=36
feed1=1
feed3=1
feed5=1
feed15=1
softfonts=12
softfont1=c:\psfonts\pfm\archi___.pfm,c:\psfonts\archi___.pfb
softfont2=c:\psfonts\pfm\balleeng.pfm,c:\psfonts\balleeng.pfb
softfont3=c:\psfonts\pfm\bpb_____.pfm,c:\psfonts\bpb_____.pfb
softfont4=c:\psfonts\pfm\bpbi____.pfm,c:\psfonts\bpbi____.pfb
softfont5=c:\psfonts\pfm\bpl_____.pfm,c:\psfonts\bpl_____.pfb
softfont6=c:\psfonts\pfm\bpli____.pfm,c:\psfonts\bpli____.pfb
softfont7=c:\psfonts\pfm\bprg____.pfm,c:\psfonts\bprg____.pfb
softfont8=c:\psfonts\pfm\bpm_____.pfm,c:\psfonts\bpm_____.pfb
softfont9=c:\psfonts\pfm\bpmi____.pfm,c:\psfonts\bpmi____.pfb
softfont10=c:\psfonts\pfm\bpi_____.pfm,c:\psfonts\bpi_____.pfb
softfont11=c:\psfonts\pfm\blackcha.pfm,c:\psfonts\blackcha.pfb
softfont12=c:\psfonts\pfm\saintfra.pfm,c:\psfonts\saintfra.pfb
WIN.INI after manual edit.
[PostScript,LPT2.OS2]
device=36
feed1=1
feed3=1
feed5=1
feed15=1
softfonts=4
softfont1=c:\psfonts\pfm\archi___.pfm,c:\psfonts\archi___.pfb
softfont2=c:\psfonts\pfm\balleeng.pfm,c:\psfonts\balleeng.pfb
softfont3=c:\psfonts\pfm\blackcha.pfm,c:\psfonts\blackcha.pfb
softfont4=c:\psfonts\pfm\saintfra.pfm,c:\psfonts\saintfra.pfb
Note: In addition to deleting the line entries you must also renumber the
remaining lines and edit the total number in the softfonts= statement. If you
have more than one printer installed you may have to edit other groups in the
WIN.INI under other port entries.
ΓòÉΓòÉΓòÉ 18.12. Clipboard Support ΓòÉΓòÉΓòÉ
OS/2 Version 2.0 provides clipboard support between Windows applications, in
the same or separate VDMs, as well as support between Windows applications and
OS/2 Presentation Manager applications. The clipboard serves as a
data-exchange feature acting as a common area to store data handles through
which applications exchange formatted data. The same data may be represented in
a number of different formats as specified by the application. Note that
objects in the clipboard may be of any size and format.
The combined OS/2 and Windows clipboard environment under OS/2 Version 2.0 is
shown in Figure "OS/2 Version 2.0 Clipboard Environment".
Data is formatted in either a predefined or private format, before being copied
to the clipboard. In most cases the data is copied to pre-allocated global
memory and a function call is used to copy the memory handle to the clipboard.
Windows provides a number of predefined data formats:
TEXT Null-terminated text
OEMTEXT Null-terminated text using an OEM character set
PICTURE Metafile picture structure
BITMAP Device-dependent bitmap
DIB BITMAP Device-independent bitmap
SYLK SYLK Standard data interchange format
DIF DIF standard data interchange format.
TIFF Tag Image File Format
Any Private Format Will be kept in the same format. This will be usable only
by applications which know about this private format.
These formats will be recognized and exported/imported by the global clipboard
server.
Data formats which are not supported by the clipboard server, cannot be
transferred. Such formats can only be handled by the local clipboards. This
means that such formats may only be used to exchange data between Presentation
Manager applications, or between Windows applications running in the same VDM.
In addition, some of the data formats will also be converted, because of
several differences between Windows and Presentation Manager data structures.
This is further discussed in WIN-OS/2 Clipboard Support (Scenario 3 - Cut/Paste
Between OS/2 And WIN-OS/2).
The OwnerDraw feature in the Windows clipboard is only supported within a
MAVDM, as shared memory is required. OwnerDraw is a process whereby a Windows
application takes control over the appearance of menu items and has
responsibility for managing these menu items.
The native Microsoft Windows 3.0 clipboard provides support for both Windows
applications and non-Windows applications. Non-Windows applications (that is,
"native" DOS applications) run in either full-screen or "windowed" mode. This
kind of environment is not supported in a MAVDM, because it is supported by the
Workplace Shell directly. Therefore, clipboard support for native DOS
applications is provided through Presentation Manager.
Should the user wish to capture the contents of a VDM running in full-screen
mode, the following approach is adopted:
1. Switch to the Presentation Manager screen containing the VDM
2. Select the System menu on the VDM icon
3. Select Copy All.
This procedure will copy the VDM's video buffer to the Presentation Manager
clipboard (either in ASCII format or as a Presentation Manager bitmap).
Selective copy is available in windowed mode. When a VDM is running in a
window, the user may mark a specific rectangular area which will then be copied
into the clipboard.
This level of clipboard data exchange is fully supported by the VDM itself. The
Windows kernel is not involved at all.
ΓòÉΓòÉΓòÉ 18.12.1. WIN-OS/2 Clipboard Support ΓòÉΓòÉΓòÉ
The WIN-OS/2 clipboard view utility will display the captured data in a number
of formats, either predefined or private. Auto displays the data in the format
it had when placed onto the clipboard.
The clipboard view program CLIPWOS2.EXE, installed in C:\OS2\MDOS\WINOS2, is
available within each SAVDM and MAVDM by default. This is a modified version
of the original Windows 3.0 clipboard program.
A Clipboard Server (Global Clipboard) runs as a protected mode background
process under OS/2 Version 2.0, to service clipboard functions between VDMs.
If the Clipboard Server is not executing, clipboard functions are limited to
within a single VDM. The Clipboard Server (\OS2\MDOS\WINOS2\VDMSRVR.EXE) is
automatically started with the first WIN-OS/2 VDM.
Should a user elect to exit from the Windows clipboard, a warning message will
be displayed, advising that exiting will terminate public clipboard functions.
The clipboard functions within each VDM are public by default, unless
explicitly set to LOCAL, which restricts clipboard activity to that WIN-OS/2
session only.
The WIN-OS/2 clipboard viewer pull-down menus have been enhanced to include
support for an Options menu, which contains the Public Clipboard option.
Selecting this option causes changes to the local clipboard to be reflected in
the public clipboard and vice versa. When deselected, the contents of the
public and local clipboards will not affect each other.
The File pull-down menu now supports Import/Export functions; Public must be
deselected from the Options pull-down menu before Import/Export can be
selected.
Export will copy the current contents of the local clipboard to the Public
clipboard.
Import will copy the contents of the public clipboard to the Local clipboard.
Implementation Notes: The Import/Export functions communicate via named pipes
to the \pipe\CLPAgent to the clipboard program
(CLIPWOS2.EXE) within each VDM. This could cause
performance problems on systems which already utilize
named pipes heavily for other purposes or when the
content of the clipboard data is too big, for example
huge bitmaps. If you don't need to exchange clipboard
data outside a MAVDM, you could keep it local and
therefore get around any possible performance problems.
ΓòÉΓòÉΓòÉ 18.12.2. Using Cut and Paste ΓòÉΓòÉΓòÉ
The following three scenarios describe the clipboard functions:
1. Cut and Paste from a Windows Application in a VDM to another application in
a separate VDM; Public is deselected.
2. Cut and Paste between two Windows applications within the same VDM (MAVDM).
3. Cut and Paste between the OS/2 and Windows environments. Cut and Paste
within the OS/2 environment remains essentially unchanged.
Scenario 1 - Cut/Paste Between Independent WIN-OS/2 Sessions
1. Cut the data into the local Windows VDM clipboard.
2. Select Export from the clipboard pull-down menu. The data is copied into
the external clipboard.
3. Select the VDM containing the destination Windows application.
4. Select Import from the clipboard pull-down menu. The data is copied from
the external clipboard into the local clipboard of the receiving VDM.
5. Paste the data into the destination Windows application.
Note: Steps 2 and 4 above are not necessary if the clipboard is public in the
source and destination VDM.
Scenario 2 - Cut/Paste Within A MAVDM
1. Cut the data into the Windows VDM clipboard
2. Paste the data from the clipboard into the destination application.
Scenario 3 - Cut/Paste Between OS/2 And WIN-OS/2
The OS/2 V2.0 clipboard is activated upon loading the operating system. A new
OS/2 utility named CLIPVIEW.EXE is located in the OS2\APPS\ directory, and has
been provided to support the extended clipboard functions. CLIPVIEW.EXE must be
started in order to view and transfer the contents of the OS/2 V2.0 clipboard.
With the exception of the File option of the Windows clipboard, the same
pull-down menus are provided. The Render option is the same as the Display
option in the Windows clipboard. Render will display the contents of the
clipboard in a number of different formats. Because the contents of the
clipboard are stored in separate areas in memory, it is possible to view both
the ASCII (text) and graphics contents of the clipboard.
Note: An application may or may not clear the entire contents of the
clipboard, prior to copying data to it. For example, the system editor
will always erase the entire Presentation Manager clipboard, and
therefore any public Windows clipboard as well, before it copies its
text data into it. On the other hand, some of the Presentation Manager
applications do not behave that way. They will only override the
specific data areas which are copied into the clipboard and leave the
other ones in the clipboard unchanged.
The global Windows VDM clipboard is visible to the Presentation Manager
clipboard. CLIPVIEW.EXE has been enhanced to perform the following two
activities:
1. Update the Presentation Manager clipboard when changes are made to the
global VDM Clipboard
2. Update the global Windows VDM clipboard when changes are made to the
Presentation Manager clipboard.
The Presentation Manager clipboard server application is registered as
"clipboard viewer" to receive notification of clipboard updates. This ensures
that the following messages are forwarded to the clipboard server, so that when
updates are made to the Presentation Manager clipboard, messages are sent to
the Presentation Manager CLIPVIEW.EXE.
WM_DESTROYCLIPBOARD: Signals that the contents of the clipboard are being
destroyed
WM_DRAWCLIPBOARD: Signals an application to notify the next application in
the chain of a change to the clipboard
WM_HSCROLLCLIPBOARD: Requests horizontal scrolling of the clipboard contents
WM_PAINTCLIPBOARD: Requests painting of the contents of the clipboard
WM_RENDERALLFMTS: Notifies the owner of the clipboard that it must render
clipboard data in all possible formats
WM-RENDERFMT: Notifies the clipboard owner that it must format the last data
copied to the clipboard
WM_SIZECLIPBOARD: Notifies the clipboard owner that the clipboard
application's window size has changed
WM_VSCROLLCLIPBOARD: Requests vertical scrolling of the clipboard contents.
Note: No changes have been made to the Presentation Manager API functions to
accommodate this design. Presentation Manager applications will not
notice any difference; there appears to be just one (Presentation
Manager) clipboard as it always used to be. The same is true for
Windows applications as well.
Data formats are translated from Presentation Manager to Windows formats and
vice versa, as required. This translation is performed when data is placed in
the global clipboard. The following data formats will be translated between
Presentation Manager and Windows:
Windows DIB bitmaps: The Windows device-independent bitmaps are translated
to/from OS/2 Presentation Manager bitmaps.
Windows bitmaps: This translated pre-Windows 3.0 formatted bitmaps to OS/2
Presentation Manager bitmaps.
Note: This is a one way only translation.
Windows Metafiles: Windows metafiles are first internally converted to the
Windows DIB format by the Windows clipboard viewer, before
being forwarded to the global clipboard.
PM Metafiles: PM metafiles are first internally converted to the PM
bitmap format by the PM clipboard viewer, before being
forwarded to the global clipboard.
Text: ASCII text will be translated in both directions. If the
sending and receiving environment are using a different
codepage, the appropriate codepage translation will take
place.
ΓòÉΓòÉΓòÉ 18.13. Dynamic Data Exchange ΓòÉΓòÉΓòÉ
This section describes Dynamic Data Exchange (DDE) support between Windows
applications in a full-screen VDM.
ΓòÉΓòÉΓòÉ 18.13.1. DDE Concepts ΓòÉΓòÉΓòÉ
DDE is a message protocol for dynamic data exchange between Windows programs.
Data may be shared among applications, the intention being to create an
integrated Windows environment.
Client, Server and Conversation:
Two applications participating in dynamic data exchange are said to be engaged
in a DDE conversation. The application which initiates the conversation is the
client application. The application which responds to the client is the server
application. An application may be engaged in several conversations at the
same time, acting as a client in some conversations and as a server in others.
A DDE conversation takes place between two windows, one for each of the
participating applications. The window may be the main window of the
application, a secondary window associated with the application, or a hidden
window. A hidden window is typically used to process DDE messages.
DDE identifies the units of data passed between the client and server with a
three-level hierarchy of:
Application name
Topic
Item.
Each DDE conversation is uniquely identified by the application name and topic.
The application name is normally the name of the server application. The topic
is a general classification of data, within which multiple data items may be
exchanged during the conversation. The item is the actual information related
to the conversation topic that is exchanged between the applications. Values
for the data item can be passed from the server to the client, or from client
to server. The format of the data item may be any one of the clipboard formats
(see Clipboard Support).
Once a DDE conversation has been initiated, the client may establish one or
more permanent data links with a server. A data link is a communication
mechanism by which the server notifies the client whenever the value of a given
data item changes. The link is permanent in the sense that the notification
process continues until the data link or DDE conversation is terminated.
The DDE link may be warm or hot. In a warm data link, the server notifies the
client that a value of a given data item has changed, but the server does not
actually send the data value to the client until the client requests it. In a
hot data link, the server immediately sends the changed data value to the
client.
Applications which support DDE typically provide a Copy/Paste command in the
Edit menu to allow the user to establish a DDE link.
ΓòÉΓòÉΓòÉ 18.13.2. Windows Application to Windows Application ΓòÉΓòÉΓòÉ
In a native Windows 3.0 environment, a Windows application (client) will
broadcast a DDE Initiate message. Windows serially posts a message to every
Windows application currently running and then awaits a reply. As described
above, the Initiate Conversation message contains the DDE topic to which any
Windows application can respond. The client application continues execution
when all other applications have serviced the message. At this time, the client
application communicates directly with the server applications, as opposed to
the initial broadcast message.
OS/2 Version 2.0 provides two applications to support communications between
VDMs, without altering the Windows code:
A resident Windows application referred to as the DDE ServerAgent (SA)
A DOS protected mode application referred to as the DDEServer (VDMSRVR.EXE).
ServerAgent
The Windows VDM's resident ServerAgent consists of two parts:
A "ServerAgent" which sends and receives messages outside of the VDM
One or more "agents" (each agent is a child window of the ServerAgent), which
act as "clones" of applications running in other VDMs.
If either the DDEServer or the VDM's ServerAgent is not executing, DDE is not
available outside of the VDM. The ServerAgent is automatically started when
the Windows VDM is started. When started, DDE is in public mode. To keep it
local, simply kill (close) the DDE Interchange Agent. To make it public again,
simply start the Interchange Agent once more.
Should the user choose to kill the DDE Interchange Agent, an information
message will be displayed indicating that DDE activity will be visible only to
the Windows applications executing in the current VDM, discontinuing DDE
communication with Presentation Manager applications and other Windows
applications.
The ServerAgent is responsible for all routing of DDE messages, including
broadcast messages beyond the confines of the VDM to the DDEServer. The
ServerAgent communicates with the DDEServer (VDMSRVR.EXE) via named pipes.
Agent applications communicate with Windows applications in their VDM and the
ServerAgent executing in their VDM. Only the ServerAgent uses named pipes.
Agents send requests to the ServerAgent to be forwarded outside of the VDM.
DDEServer (VDMSRVR.EXE)
The DDEServer is responsible for routing requests from ServerAgents to the
appropriate VDMs. The DDE process is schematically represented in Figure "DDE
Process between Windows Environments".
The sequence of events for DDE communication between applications running in
different WIN-OS/2 VDMs is as follows:
1. A DDE Initiate message is broadcast from Windows application A.
2. The message is forwarded by the ServerAgent to the DDEServer.
3. The DDEServer forwards this message to all other DDEAgents.
4. Each DDEAgent broadcasts this initiate message to all Windows applications
in their VDM.
5. Windows application D responds affirmatively to this DDE initiate message.
6. The DDEAgent creates a child task ServerAgent A to act as an agent to
Windows application A.
7. The DDEAgent forwards an acknowledgement to the DDEServer.
8. The DDEServer forwards this acknowledgement to the DDEAgent for the Windows
application A.
9. This DDEAgent creates a child task ServerAgent D to act as an agent to
Windows application D.
10. The DDEAgent forwards the response from Windows application D to the
Windows application A.
From here on, the two Windows applications communicate through this established
path.
Appl. A <-> DDEChildAgent D <-> DDEAgent A <-> DDEServer <-> DDEAgent D <->
DDEChildAgent A <-> Appl. D.
This mechanism isolates all named pipe transactions (Steps 2, 3, 7 and 8) to
the DDEAgents and the DDEServer. It also gives the Windows application A the
illusion of a point-to-point connection to Windows application D (because it
will actually communicate with Windows application D's child agent in the same
VDM).
The interprocess communication protocol used between the Windows applications
and the DDEAgents is the original and unmodified DDE protocol.
If two Windows applications require significant amounts of DDE, these
applications should be executed from within the same MAVDM. In such instances,
the ServerAgent and DDEServer applications would not be required, thereby
improving performance and usability. Once this is done, the user need only
kill (close) the participating DDE Interchange Agent to ensure that all DDE
messaging is kept local.
ΓòÉΓòÉΓòÉ 18.13.3. Windows Application to Presentation Manager Application ΓòÉΓòÉΓòÉ
DDE support between Windows applications and Presentation Manager applications
requires that the DDEServer be linked with the Presentation Manager DDE APIs.
Both DDE messages and data formats are translated during the data exchange
between Presentation Manager and any given VDM running a Windows application.
This process consists of a protected mode DDEServer, a Windows DDE ServerAgent,
as described above, and a Presentation Manager DDE ServerAgent. The
Presentation Manager DDE ServerAgent is a mirror to the Windows DDE
ServerAgent. The ServerAgent is responsible for routing all DDE messages beyond
the confines of Presentation Manager to the DDEServer. The ServerAgent
communicates with the DDEServer via named pipes.
The DDE process between Presentation Manager applications and Windows
applications may be represented as in Figure "DDE Process between Presentation
Manager and Windows".
The following data formats are translated between the Presentation Manager
environment and the Windows environment:
Bitmaps: Windows DIB format to/from OS/2 BITMAPINFO2 and
Presentation Manager BITMAPINFO to/from Windows DIB
format.
Windows Device Dependent Bitmaps: Pre-Windows 3.0 format to Windows DIB format
to/from Presentation Manager BITMAPINFO.
Windows Metafiles: Metafiles are converted to Window DIB format prior to
being translated as above.
PM Metafiles: PM metafiles are first converted to Window DIB format
prior to being translated as above, and are then forwarded
to the global clipboard.
Text: Codepage translation is provided in both directions, if
required.
Any data format which is not supported by the global DDEServer translation
routines, can still be used on a local base, that means within the same VDM.
The Presentation Manager DDE ServerAgent will reside as a utility in a
Productivity folder on the Workplace Shell. Where there is a demand to provide
DDE support between Presentation Manager applications and Windows applications,
the Presentation Manager DDE ServerAgent should be placed in the Workplace
Startup folder. The DDE ServerAgent runs only as a minimized icon. To shut
down global DDE, the Presentation Manager DDE ServerAgent must be terminated
through the Window List.
If a seamless Windows session is started, the DDE ServerAgent will
automatically be started, so that this particular Windows application can
automatically use DDE. Otherwise, it would appear to be isolated and this
would confuse the novice user.
Existing DDE support between Presentation Manager applications remains
essentially unchanged. Where DDE is only used between Presentation Manager
applications, the DDEServer should be deactivated to improve performance.
ΓòÉΓòÉΓòÉ 18.14. Object Linking and Embedding ΓòÉΓòÉΓòÉ
Object Linking and Embedding (OLE) focuses on document formats rather than on
an application's ability to exchange data, as implemented using the DDE
approach. OLE is concerned with sharing functionality as opposed to sharing
data. The better the application of OLE, the less the concern with programs as
opposed to their data.
All OLE transactions involve a client application and a server application. The
server creates the embedded or linked document and is activated when any
activity beyond display is required; the client packages and renders the object
within its own document.
OLE objects are packaged within client documents either statically (embedded)
or dynamically (linked). The entire contents of an embedded object, including
references to the server application, are included in the client document.
OLE defines a format for compound documents which contain multiple forms of
data. The data formats are understood and managed by multiple applications. The
application uses various combinations of data to construct a compound document.
ΓòÉΓòÉΓòÉ 18.14.1. OLE Concepts ΓòÉΓòÉΓòÉ
The concepts used in OLE are best described by contrasting them with the
approach adopted by clipboard and DDE:
When using the clipboard, an application obtains data from another
application in a standard format, usually ASCII, a bitmap or a metafile.
This data exists only as data; there is no link with the application that
originally placed the data in the clipboard.
When using DDE, an application also obtains data from another application in
a standard format, such as ASCII, bitmap or metafile. However, the client can
establish and maintain a link with the application which delivered the data.
Should the data change in the server application, the client application's
data is also updated.
OLE also enables an application to obtain data from another application; in
this instance the data can be in two formats:
One format is understood only by the application sending the data
The display format (ASCII, bitmap or metafile) is understood by the receiving
application, and is used to display the data on the screen.
When an object is linked, only the references to the actual data, including the
name of the server application, are embedded within the client document. In
both cases, the references allow the OLE libraries to execute the server and
properly instruct it.
When initially embedding or linking objects, client and server applications
typically exchange data using the Windows clipboard. When the server puts data
on the clipboard, it uses various combinations of four types of data:
1. Native data is specific to the server and likely to be alien to the client.
2. Presentation data uses one of several display formats commonly used by
Windows programs to render data.
3. OwnerLink data is the name and address identifying the object or
application that owns the data.
4. ObjectLink data uses the same format as OwnerLink data but describes the
application and object from which the data originated.
The order in which this data is put on the clipboard, or otherwise presented to
the client, determines what type of object is intended.
For example, if OwnerLink data is presented first, then a linked object is
intended. If Native data is first and OwnerLink is second, then the object can
be embedded (though not necessarily rendered properly).
In fact, a presentation format is optional for an embedded object, partly
because some objects are meant to be invisible. If no presentation data is
available and understood by the client and no object handler is provided by the
server, the object will not be properly rendered by the client.
The significance of this approach may be appreciated by way of an example.
Voice annotation may be attached to a word processing application; the word
processing application need not have any facility to support or manage voice.
The word processor will store the data in two formats; the digitized sound and
a display format (an icon). When the icon is selected in the document, a voice
application is invoked and the word processing application passes the digitized
sound to the voice application, which then plays the sound.
ΓòÉΓòÉΓòÉ 18.14.2. Linking versus Embedding ΓòÉΓòÉΓòÉ
When an object is embedded, information from one document is inserted into a
document in a different application. Embedding is similar to copying, but with
one significant difference; to make changes to an embedded object, the user
simply selects the object from within the destination document. The application
in which the object was created is invoked, and the user may make the required
changes. There is no need to switch among applications to view or change
different kinds of information; it is all in one document.
When an embedded object is modified, the source document is not affected. For
example, if a drawing is embedded into a report, changes made to the drawing
within the report do not affect the original drawing which resides in its own
file.
When an object is linked, many documents can share a single item of
information. The object itself is not placed into the destination document;
rather, a representation, or placeholder, for the object being linked is placed
into the document. The object still exists in the source document, and the
destination document merely contains a link to the object's location in the
source document.
When changes are made to a linked object, the source document and any other
documents linked to the object will reflect the changes. For example, if a
drawing is linked to a report, any changes you make to the drawing appear in
the source document and in any other reports linked with the drawing.
Access may be gained to the object from any document that contains a link to
it, and changes may be made to the object from within any such document. The
updated version automatically appears in all the documents that have a link to
this object. Linking makes it easy to track information that appears in more
than one place and which must be identical.
Only objects from saved documents may be linked. For example, if a drawing is
created using Paintbrush, the drawing must be saved as a document before it may
be linked from another document.
Not all applications can provide and accept objects. Some may only be the
source of objects (server applications). Others (client applications) may only
accept objects.
ΓòÉΓòÉΓòÉ 18.15. Summary ΓòÉΓòÉΓòÉ
OS/2 Version 2.0 provides support for the execution of Windows applications
within the MVDM architecture. This support allows the concurrent execution of
multiple Windows applications, using both real mode and standard mode, with
DPMI and Windows services provided as required by a Windows kernel.
Windows applications running under OS/2 Version 2.0 are provided with
pre-emptive multitasking by the operating system. Full memory protection is
also provided for the Windows applications; an errant application may not
affect other applications executing in the system. A bug in an application
will cause the termination of that application only.
Windows applications may be run under OS/2 Version 2.0 in three ways:
Each application may run in its own VDM. This method of execution provides
full protection for the application from other processes running in the
system, and protects these other processes from errors in the Windows
application.
Applications may share a VDM, and may be started and controlled within this
VDM using the Windows Program Manager. This method of execution provides
protection for the Windows applications within the VDM from other processes,
and protection for other processes from errors in the Windows VDM's
applications. However, the applications within the VDM may affect one
another since they share a common address space, just as if they were running
natively under DOS/Windows.
Windows applications may run "seamlessly" on the Workplace Shell desktop,
along with windowed VDMs and Presentation Manager applications. This method
of execution is similar to the case of a single application in a VDM, except
that the Windows application shares the Workplace Shell desktop rather than
running in its own full-screen session.
Any combination of these three methods may be used concurrently.
Windows applications may be defined on and started from the Workplace Shell
desktop. Where a single application is defined for a VDM, or where the
application will run seamlessly, the icon used to represent the application on
the desktop is the icon embedded within the Windows program which runs the
application.
During installation of OS/2 Version 2.0 over an existing DOS/Windows 3.0
system, existing applications defined to the Windows Program Manager will be
detected and migrated where possible to the OS/2 Version 2.0 Workplace Shell.
The installation procedure uses application definition information contained in
the Certified Application Database, which is shipped as part of the OS/2
Version 2.0 product.
OS/2 Version 2.0 allows communication between Windows applications running in
the same or different VDMs, and between Windows applications and Presentation
Manager applications. This communication is provided through clipboard, DDE
and OLE support. Communication between Windows applications using shared
memory is also supported, but only where Windows applications are executing in
the same VDM.
In summary, OS/2 Version 2.0 provides an integration platform which allows
Windows applications to coexist with one another and with DOS and OS/2
applications in a multitasking, fully protected environment, and which allows
these applications to communicate with one another.
ΓòÉΓòÉΓòÉ 19. DOS Protected Mode Interface ΓòÉΓòÉΓòÉ
Perhaps the most significant limitation of real mode operation, as used by DOS
and similar operating systems, is the 1MB addressing limitation. This
limitation can be overcome by executing applications in protected mode, but
since the DOS operating system and most TSR applications must run in real mode,
problems arise when applications attempt to access interrupts, TSRs or
operating system facilities.
The DOS Protected Mode Interface (DPMI) is a protected mode programming
interface for DOS applications, allowing such applications to run on an 80286
or 80386 processor in protected mode, while utilizing the real mode services of
the operating system and device drivers. When an application wishes to access
a DOS service, it makes a request to DPMI, which handles the appropriate
address translations, switches the processor to real mode and makes the service
request to DOS. The result of the request is then translated to the correct
format for the protected mode application, the processor is switched back to
protected mode, and control is returned to the application.
DPMI has been implemented in the Multiple Virtual DOS Machines component of
OS/2 Version 2.0, and provides functions such as memory allocation and
interrupt management for applications which use DPMI services. This support is
provided through a component, implemented as a virtual device driver, known as
the DPMI API Layer, in conjunction with the MVDM kernel.
This chapter provides a brief overview of DPMI, and describes its
implementation under OS/2 Version 2.0.
ΓòÉΓòÉΓòÉ 19.1. DPMI Introduction ΓòÉΓòÉΓòÉ
Most processor instructions that are available in real mode may also be
executed from a protected mode task. Hence an application may overcome the
limitations of real mode simply by executing in protected mode. However, direct
access to physical hardware and interrupts is typically not permitted from a
protected mode task running at Ring 3 privilege, and therefore DOS itself and
many TSR programs must run in real mode. Protected mode specifications are such
that communication between protected mode and real mode programs is difficult,
making it difficult for an application to request services from DOS or a device
driver.
For example, a TSR, with which an application communicates through a software
interrupt or a shared buffer, cannot run in protected mode. The real mode
address of the TSR, if used by the protected mode application, will not point
to the same location in memory as would the same address if used in real mode,
since the segment portion of the address is interpreted differently in the two
modes. Address conversion is therefore required when passing between the two
modes.
DPMI provides an interface between protected mode and real mode programs. DPMI
consists of a set of protected mode functions which allow a DOS application to
enter protected mode, allocate real mode memory, simulate real mode interrupts
and function calls, intercept real mode interrupt vectors, etc. By using these
calls, an application running in protected mode can communicate with DOS or a
TSR running in real mode.
DPMI facilitates the following:
Allows DOS applications to run in protected mode
Provides DOS applications with access to a large memory address space
Provides DOS applications with mode switching and calls between real mode and
protected mode
Provides DOS applications running in protected mode with access to hardware
facilities such as debug registers, in a way that maintains system integrity.
The term real mode is used to refer to code that runs in the low 1MB address
space and uses segment:offset addressing. Under many implementations of DPMI,
so-called real mode software is actually executed in virtual 8086 mode. Since
virtual 8086 mode closely approximates real mode, V86 mode and real mode are
interchangeable in the DPMI context.
One of the major benefits offered by DPMI is that of allowing DOS extenders to
work effectively in a multitasking, protected mode environment. DOS extenders
allow DOS applications to access extended memory while running in protected
mode. These extenders switch between modes as required to:
Execute application code in protected mode, in order to realize the enhanced
addressing capabilities and protection facilities of protected mode
Access DOS services and TSRs in real mode, to perform functions which cannot
be performed in protected mode.
The Microsoft Windows/286 DOS extender (running under DOS on an 80286
processor) was able to switch modes of its own accord. However, when running in
virtual 8086 mode on an 80386 processor, a task cannot switch to protected
mode; the required instruction is not legal for a V86 mode task. The
architecture of DPMI, however, allows DOS extenders to request services using
INT 31h DPMI calls; DPMI itself handles the mode switching and address
conversion necessary to invoke the real mode services.
ΓòÉΓòÉΓòÉ 19.2. Virtual Control Program Interface ΓòÉΓòÉΓòÉ
The forerunner to DPMI was the Virtual Control Program Interface (VCPI),
developed by Phar Lap Software** and Quarterdeck Office Systems**. VCPI
allowed 80386-based protected mode DOS extenders to coexist with 80386-specific
memory managers and expanded memory (EMS) emulators, such as QEMM-386 by
Quarterdeck. Most current 80386-specific software products support, or are
capable of using, the VCPI interface.
In VCPI, the DOS extender acts as a client and the EMS emulator acts as a
server. The client invokes the VCPI server to:
Switch between real mode and protected mode
Allocate memory
Program the interrupt controller(s)
Inspect or set the 80386 debug registers.
If a DOS extender is loaded and a VCPI server is not present, the DOS extender
may assume total control of the system and perform hardware-dependent
manipulations directly. This can lead to system and data integrity problems.
Note: Do not confuse VCPI (Virtual Control Program Interface) with VPIC
(Virtual Programmable Interrupt Controller).
While VCPI performs well for that which it was intended, it does not provide a
platform for multitasking DOS extender applications. The deficiency lies in
VCPI allowing client programs to run in Ring 0, the highest privilege level
possible under the 80386 processor.
What was required was an interface capable of managing and controlling device
initialization and providing centralized virtual memory management. Most
important the interface had to shield one client from another.
ΓòÉΓòÉΓòÉ 19.3. The DPMI Specification ΓòÉΓòÉΓòÉ
DPMI was devised by a committee of major software vendors. The first (and
current) DPMI version is Version 1.0.
DPMI was defined to allow DOS programs to access extended memory while
maintaining system protection. DPMI defines a specific subset of DOS and BIOS
calls that can be made by DOS programs running in protected mode. These
services are accessed via software interrupt 31h, using a defined series of
functions which protected mode programs may use to allocate memory, modify
descriptors and call real mode software.
Like VCPI, a DPMI host (or server) program provides mode switching and extended
memory management services to client programs. Unlike a VCPI server, however,
a DPMI host runs at a higher privilege level than its clients. A DPMI host
supports demand-paged virtual memory and maintains complete control over the
address space and hardware access of its clients.
Some DPMI implementations execute multiple protected mode programs in
independent virtual machines. In such implementations, DPMI applications
behave exactly like any other standard DOS programs. For example, they can run
in the background or in a window, provided the environment supports these
features. Programs that run in protected mode gain all the benefits of virtual
memory and can utilize a 32-bit flat memory model if desired. OS/2 Version 2.0
provides a DPMI implementation of this nature.
DPMI services accessed via INT 31h are only available to protected mode
programs. Programs running in real mode cannot use these services. The only
exception to this rule is the service which allows an application to enter
protected mode, which must be called by real mode programs before calling any
other DPMI service.
Note that the majority of software vendors who released applications using the
VCPI specification have since released versions which use DPMI instead, or have
produced upgrades to their software to take advantage of DPMI.
ΓòÉΓòÉΓòÉ 19.3.1. DPMI Hosts and Clients ΓòÉΓòÉΓòÉ
DPMI services are provided by a DPMI host program. Programs which use DPMI
services are known as DPMI clients. Generally, DPMI clients fall into two
categories:
1. Extended applications
2. Applications that use DPMI directly.
Most DPMI applications are likely to be extended applications. These
applications are bound with a DOS extender, which is the actual DPMI client
since it requests DPMI services on the application's behalf. The application
calls DOS extender services, which are then translated by the DOS extender into
DPMI service calls. The advantage of an extended application over one that
calls DPMI services directly is that generally, an extender will support
functions other than DPMI services. In fact, it is recommended that extenders
look for extension services in the following order:
1. DPMI
2. VCPI/EMS
3. XMS
4. Top-down (INT 15h).
Extended memory may be allocated "top-down" by hooking the BIOS extended memory
size system call (INT 15h, function 88h) and reporting less memory available
than is actually present on the machine. This method may be used by DOS
extenders to allocate a contiguous block of memory starting at the top of
extended memory and growing downward. Since other applications querying the
amount of memory available in the system will not be able to "see" this upper
portion of memory, the memory is available solely to the DOS extender.
A DPMI client can provide a single set of functions to an application, and then
translate these functions to one or more underlying services (for example,
DPMI, EMS, and/or XMS) provided by the client. Where the corresponding host's
services are lacking in a particular function, the extender must itself provide
that function for the application. This is illustrated in Figure
"Client/Server Structure for Operating System Extenders".
As shown in Figure "Client/Server Structure for Operating System Extenders",
application code directly accesses a set of base extender functions. The
extender then has separate modules for each type of extension service, and
itself contains code to provide functions in which the underlying service
layers are lacking.
Readers should refer to the DPMI 1.0 Specification published by the DPMI
committee for information concerning the external interfaces available to DPMI
applications. Copies of the specification may be obtained by contacting Intel
Literature Sales, P.O. Box 58130, Santa Clara, CA 95052.
ΓòÉΓòÉΓòÉ 19.3.2. DPMI Services ΓòÉΓòÉΓòÉ
The following is a brief outline of the DPMI services. For details regarding
invocation of DPMI services from an application via INT 31h, please refer to
the DPMI 0.9 Specification.
DPMI provides six main classes of services:
Local Descriptor Table management
Memory management
Page management
Interrupt management
Translation
Debug watchpoint.
Each of these services is briefly described in the following sections.
Note that DPMI services are normally never called by an application program
itself, but are intended to be used by DOS extenders which request DPMI
services on an application's behalf.
LDT Descriptor Management Services
The LDT descriptor management service provides interfaces for allocating,
freeing, and creating protected mode descriptors in the current task's Local
Descriptor Table (LDT). Access to the Global Descriptor Table is not provided,
so that the DPMI server can protect itself from protected mode applications and
isolate these applications from one another.
DOS Memory Management Services
The DOS memory management services provided an interface from protected mode
applications to real mode INT 21h functions which are used to allocate, free
and resize memory blocks. These services allow a protected mode applications
to use memory below 640KB, to exchange data with DOS, ROM BIOS device drivers,
TSRs and other real mode programs which are incapable of accessing data in
extended memory.
Extended Memory Management Services
The extended memory management services are used to allocate, free and resize
memory blocks above the 1MB boundary. If the DPMI server is an 80386 or 80486
control program and paging is enabled, the extended memory blocks are always
allocated in units of 4KB.
Page Management Services
Under DPMI implementations which support virtual memory, applications may
discard memory blocks or may not access them for long periods of time, in which
case the memory block's contents may be swapped out to disk. In certain
circumstances, such as interrupt handling code, this swapping must be disabled
and the appropriate pages locked in physical memory. The page management
services allow pages to be individually locked or unlocked.
Interrupt Management Services
These services allow protected mode applications to intercept real and
protected mode interrupts and hook processor exceptions. Certain services
allow a protected mode program to intercept hardware or software interrupts
which occur in real mode or protected mode, or to install handlers for
processor exceptions. Other interrupt services permit a process to enable or
disable its own servicing or hardware interrupts without affecting the
interrupt status of the entire system. DPMI accomplishes this by maintaining a
virtual interrupt flag on a per-process basis.
Translation Services
The translation services permit control to be passed between operating modes.
A protected mode program may transfer control to a real mode routine using a
simulated far call or a simulated interrupt. Translation services also allow a
protected mode program to declare a real mode callback, or entry point which
can be invoked by the a real mode program.
Debug Watchpoint Services
The 80386 processor supports special registers that are used for debugging.
Since the instructions to modify these registers can only be executed by code
running at privilege level zero, protected mode debugging tools running in DPMI
environments cannot modify the registers directly. These services provide
mechanisms for setting and clearing debug watchpoints and detecting when a
watchpoint has caused a fault.
ΓòÉΓòÉΓòÉ 19.4. DOS Extenders ΓòÉΓòÉΓòÉ
Programs which use DPMI services are normally bound to DOS extenders, in order
to run under any DOS environment. Most DOS extenders provide an interface to
applications using an INT 21h multiplex. For functions which utilize DPMI
services, the DOS extender then makes the appropriate INT 31h request.
Extenders that support DPMI will need to initialize differently when they are
run under DPMI environments. They will need to enter protected mode using the
DPMI real to protected mode entry point, install their own API handlers, and
then load the DOS extended application program.
DOS extenders should check for the presence of DPMI before attempting to
allocate memory or enter protected mode using any other API. When DPMI
services are detected, extenders that provide interfaces that extend or are
different from the basic DPMI interface will switch into protected mode and
initialize any internal data structures. DPMI-compatible extenders that
provide no API extensions should simply execute the protected mode application
in real mode.
ΓòÉΓòÉΓòÉ 19.4.1. Loading DPMI Clients and Extended Applications ΓòÉΓòÉΓòÉ
All DPMI applications begin execution in real mode. An application must run
first as a real mode DOS program, but can then switch to protected mode by
making a call to DPMI (or to a DOS extender). Once in protected mode, all INT
31h calls supported by DPMI may be issued by the application or its associated
DOS extender functions.
A DOS extender and its application under DPMI are loaded and initialized as
described below. The DOS extender:
1. Loads in real mode (or V86 mode on an 80386/80486 machine).
2. Checks for presence of a DPMI server.
3. Switches the CPU from real mode to protected mode, and loads registers with
the appropriate selectors.
If no DPMI server is present, the DOS extender checks for the existence of
a VCPI server or XMS device driver before assuming total control of the
CPU's execution mode, privileged control registers, and memory management
hardware.
4. Uses DPMI services to build the protected mode environment to be used by
the application.
5. Allocates extended memory segments to hold the application's code, data,
and stacks.
6. Allocates selectors to be used by the application to execute in and/or
address the memory segments.
7. Reads the application's code and data from disk into the segments.
The DOS extender can mark pageable memory it uses below 640KB so as to
reduce the demand for physical memory.
8. Installs its own handlers for any software interrupts (such as DOS INT 21h)
that the application will execute.
Control is then passed to the application.
ΓòÉΓòÉΓòÉ 19.4.2. Processing in DOS Extenders ΓòÉΓòÉΓòÉ
The way in which a DOS extender processes interrupts varies. Some INT 21h
requests are passed directly to DOS. The DOS extender simply switches to real
mode, calls DOS, and then switches back to protected mode when DOS returns
after completing the function. File input and output, however, may demand that
the DOS extender translate addresses, while other INT 21h functions such as DOS
memory management must be replaced entirely by the DOS extender.
Unless the A20 address line has been explicitly enabled through the XMS
interface, it cannot be assumed that memory from 1MB to 1MB+64KB-16 (the High
Memory Area) is addressable once a program is running protected mode. If HMA is
to be accessed, the A20 address line must be enabled through XMS before
entering protected mode. XMS calls are not supported in protected mode.
This restriction is only important for software that wishes to access the HMA.
Under all implementations of DPMI, the physical A20 address line will always be
enabled while executing protected mode code. However, some 80386 specific DPMI
implementations simulate 1MB address wrap for compatibility reasons. Under
these DPMI implementations, the HMA will not be accessible unless the A20
address line is enabled through the XMS interface. This is the case under OS/2
Version 2.0.
ΓòÉΓòÉΓòÉ 19.4.3. Session Termination ΓòÉΓòÉΓòÉ
When the DOS extender or its application issue the DOS terminate interrupt,
DPMI traps the interrupt and releases all of the application's protected mode
resources. The DPMI server passes the interrupt to real mode so as to permit
DOS to clean up the program's real mode resources, including file and device
handles and any memory blocks below 640KB.
ΓòÉΓòÉΓòÉ 19.5. DPMI Implementation in OS/2 Version 2.0 ΓòÉΓòÉΓòÉ
OS/2 Version 2.0 provides DPMI services to applications running in VDMs. The
DPMI Version 0.9 specification is fully supported, and the architecture of the
DPMI implementation is such that both the API functions and the underlying
services are independently expandable to cope with future versions of DPMI.
DPMI support under OS/2 Version 2.0 is divided into three components:
The DPMI API is implemented using the DPMI API Layer, a virtual device driver
which services INT 31h requests from applications.
The operating system kernel provides support for the DPMI VDD and the Virtual
Programmable Interrupt Controller (VPIC).
Protected mode hardware interrupts are routed via the VPIC.
DPMI is service request driven. An application first makes an INT 31H service
request, which is handled by the DPMI VDD, calling the kernel for basic
services such as allocating memory.
ΓòÉΓòÉΓòÉ 19.5.1. DPMI Services ΓòÉΓòÉΓòÉ
DPMI services are requested using INT 31h requests, which are trapped by the
DPMI virtual device driver, and either serviced by the VDD itself or routed to
the operating system kernel.
The DPMI API Layer performs input parameter checking on all service requests,
to validate requests and to enforce restrictions mandated by the DPMI
specification.
LDT Descriptor Management
The 8086 Emulation component of MVDM arranges for allocation of a task's LDT
upon initialization of the VDM. Under DPMI 0.9, all tasks in a VDM share the
same LDT. Applications may modify descriptors only through DPMI service calls.
Three types of descriptors must be kept track of:
1. Per-task DPMI descriptors that the client may modify
2. V86 segment to selector mappings with descriptors that cannot be modified
3. Per-task DOS descriptors that the client cannot modify.
Memory used by a DPMI application is allocated by the OS/2 Version 2.0
operating system to the parent process of the VDM within which that application
executes. Full memory protection is therefore provided for applications using
DPMI services.
DOS Memory Management
DOS memory management services are implemented under OS/2 Version 2.0 in
various ways, according to the nature of the service.
Allocate DOS memory and selector set
This service allocates DOS memory along with a set of descriptors to cover
the allocation. For 32-bit clients, a single descriptor is set to cover the
entire allocated region. For 16-bit clients, this descriptor is followed by
descriptors to cover the rest of the region in 64KB segments. This allows
16-bit applications to refer either through a single large segment or through
tiled selectors.
A V86 mode DOS call is used to allocate memory from the DOS arena. Therefore,
after initial setup, the DPMI API Layer switches back into V86 mode to issue
the DOS call, and then traps the return from DOS in order to finish the
service.
Free DOS memory and selector set
The allocated list is searched to make sure the region being freed is
allocated. The allocation record is moved to the pending list with the
request marked as free. A switch is then made to V86 mode and the INT 21h is
simulated as above with the return trapped. When the return is trapped,
return values are set up. If the call succeeded, the selectors that were
allocated are freed. If a selector other than the allocated selector was
passed in the free call, that selector set is freed as well.
Resize DOS memory and selector set
Resizing is done in the same way as the original allocation. The allocation
record is moved to the pending list. The desired size is listed in the
allocation record and new selectors are allocated if the size increases and
new selectors are needed. Descriptors are allocated before reflection so the
call can fail before allocating DOS memory in V86 mode if they are not
available. The DOS call is then done as above.
If the call failed, the new selectors are freed when the hook regains
control. If it succeeded, new descriptors are set up if they were needed or
descriptors are freed if the resize made some unnecessary. The return values
for the client are set up and the allocation record is returned to the
allocated list with its new size noted.
Extended Memory Management
Extended memory management services are also implemented in a number of ways,
depending on the service.
Get memory information
This service uses memory management calls to load an application buffer with
a variety of information about the memory. A VDH service is used to copy the
data to user space, with appropriate exception handling.
Allocate
Memory is allocated using a memory management service. Record of the
allocation noting the start address, allocated size, and sparse linear
address size are kept in a hash table. The allocation records are kept in
the DPMI API Layer per DPMI task area so that they can be cleaned up when the
task terminates.
Free
This function is implemented quite simply; the DPMI API Layer per-task data
area is checked for the allocation records, and the corresponding memory is
freed via a call to the operating system kernel.
Resize
DPMI changes a memory object's size in one of two ways:
- If the size of the object is to be decreased, pages at the end of the
object are decommitted.
- If the size of the object is to be increased, a new and larger object is
allocated and a kernel worker is used to move the pages from the original
object to the new one.
Page Locking
Page locking services are necessary on systems which deliver interrupts at
interrupt time or which use DOS for paging. On a system that simulates
interrupts and has its own file system (such as OS/2 Version 2.0) the calls
are no-ops. They will simply return a success indication to the client.
Interrupt Hooking
8086 Emulation maintains a table of the current handler for each protect mode
hook and exception. These services are implemented by calling 8086 Emulation
to get the current value from this table or to set a new value in the table.
8086 Emulation offers a service to change the client's virtual interrupt state
(the IF flag).
Translation (Protect/V86 Control Transfer)
These services provide cross-mode calls, state saving, and raw mode switching.
Real mode callback (call protected mode from real mode)
This service allocates a real mode callback breakpoint. When this breakpoint
is called, the DPMI API Layer handler arranges a protect mode call.
Free real mode callback
If a real mode callback is still waiting to be completed, the callback record
is marked to indicate it is no longer active. Freeing the callback record
and the breakpoint are done when no outstanding calls are in progress.
State save/restore for each mode
This service returns a set of addresses, one for V86 mode and one for protect
mode, which, if called by the client, save or restore the current register
state for the other mode. This is necessary for applications which perform
raw mode switching, to keep them from overwriting the task state for the
alternate mode.
Raw mode switching
This service returns a set of addresses, one for V86 mode and one for protect
mode, which, if called by the client, switch to the other mode. The
breakpoints have the DPMI task identifier in the breakpoint data area. When
the breakpoint is reached, if the ID is different from the current one, 8086
Emulation is called to report the switch. A VDH service is then used to do
the requested mode switch.
Under OS/2 Version 2.0, an extension to the DPMI specification has been
implemented, and is known as DOS API services. Protected mode applications
issuing DOS or BIOS calls must pass buffers that can be accessed in V86 mode.
The DOS API services relieve the application from having to do this work for
DOS calls and some BIOS calls. This permits protected mode applications to use
protect mode buffers (referenced by protected mode selectors) in DOS service
requests. The translation services perform any necessary buffer copying.
Applications detect the presence of a DOS API translator by performing an INT
2Fh multiplex passing the name "MS-DOS" as an argument. The translator
responds when it detects this name, indicating that translation will be
performed. Applications that do not require translation may simply use the INT
31h simulate interrupt function to avoid translation.
Debug Registers
The Task Management component of OS/2 Version 2.0 manages watchpoints for OS/2
applications, the kernel debugger and VDMs. Interfaces for allocating, setting
and freeing watchpoints and getting the Bx bits for allocated watchpoints are
used by the DPMI API Layer to carry out these services. The DPMI API Layer
keeps track of allocated watchpoints in the per DPMI task area so that it can
clean up at termination and uses the tasking watchpoint services to manipulate
watchpoints.
Other DPMI Services
A number of other services are provided under the DPMI specification. Their
implementation under OS/2 Version 2.0 is described below.
Physical Address Mapping
In OS/2 Version 2.0, there is no way of knowing which addresses are used by
device drivers. It is therefore not safe to allow direct access to devices
which do not have VDDs. However, direct access from within VDMs is allowed.
VDH services for reserving linear space, mapping, and page fault handling are
all restricted to regions below 1MB+64KB. As such, a VDD with a linear
address above 1 MB cannot virtualize hardware. All requests to this service
will fail. The DPMI specification allows this so the operating system can
protect devices.
Get Vendor Specific Entry Point
Vendors that add extensions to DPMI typically look for the name of their
extension by hooking INT 31h. If the extension is requested by a DPMI
client, the vendor-supplied routine issues an IRET instruction without
jumping down the INT 31h protect mode chain. If the request is for a DPMI
service not supplied by the vendor's routine , the routine continues down the
INT 31h chain. Since the DPMI API Layer router is called at the end of the
chain, any unrecognized service requests are signalled to the client by
setting the carry flag to indicate that the call failed.
ΓòÉΓòÉΓòÉ 19.5.2. Kernel Support ΓòÉΓòÉΓòÉ
As well as providing support for DPMI service requests issued by applications,
the operating system must also provide support for the internal control
functions of the DPMI host. This support is provided by various components of
the operating system kernel.
8086 Emulation
The 8086 Emulation component of MVDM emulates the 8086 hardware environment,
and therefore provides a number of services which are used by DPMI.
DPMI task entry, termination, mode tracking, control
When the application calls the protect mode entry to switch to protected
mode, 8086 Emulation sets up tables for reflection of interrupts and
exceptions. If the DPMI API Layer fails to complete the creation call, 8086
Emulation cleans up and returns the error to the application.
VDH service support
All support for VDH services to the DPMI API Layer is provided through 8086
Emulation.
Get/set support for protected mode handler interrupt and exception handlers.
Protected mode applications get and set vectors as in DOS. 8086 Emulation
maintains tables of protected mode interrupt handlers and exception handlers.
Interrupt and exception reflection to protected mode
8086 Emulation virtualizes interrupts for VDMs. The reflection of "real
mode" interrupts to protected mode for DPMI applications is therefore
performed with the aid of 8086 Emulation.
Protected mode interrupt flag virtualization
8086 Emulation virtualizes the IF flag while in protected mode. In V86 mode,
IOPL is usually 3 and applications directly change IF without trapping. IF
flag virtualization is not done while in V86 mode because IOPL must be 3 to
cut down on overhead. In protected mode, IOPL cannot be 3; otherwise no port
protection is possible. Therefore, the IF flag is virtualized. This
prevents VDMs from blocking real interrupts when running in protected mode.
To determine if interrupts are allowed in a VDM that has a DPMI application
running, the real IF bit in the CRF is checked. If interrupts are disabled
here, then they are disabled. Otherwise, the virtual IF flag indicates
whether interrupts are disabled.
HW interrupt support for the Virtual Programmable Interrupt Controller
8086 Emulation exports a VDH service to accept notification from the VPIC
when it starts and stops hardware interrupt reflection. 8086 Emulation also
tracks which hardware interrupts are hooked. The VPIC allocates and
initializes the buffer at creation time in each VDM.
Any VDD can use this structure to determine if a particular IRQ is hooked.
The timer VDD, for example, can use this to avoid delivering timer ticks when
the timer tick interrupts are not hooked in either protected mode or in V86
mode.
When software interrupts are hooked, 8086 Emulation refers to this structure
to determine if the interrupt is a hardware interrupt.
Services to read/write user space with exception handling
Kernel and VDH service changes for exception handling when accessing user
address space.
Services called when the client is in protected mode, and which manipulate
the protected mode client address space, must be written to handle protected
mode user space access exceptions. Services that cannot be called when the
client is in protected mode must specify this in their headers.
When a service can fault in protected mode, it must return a failure
indication to the DPMI client. The client then cleans up and exits protected
mode so that the exception can be reflected to the VDM (in V86 mode). This
error also indicates whether a protected mode exception handler will be
called.
Debug Watchpoint Management
Coordinates watchpoint use with OS/2 protected mode and kernel debugger.
Memory Management
Among the kernel services provided by the Virtual Memory Manager are:
Allocate VDM LDT
Free VDM LDT
Allocate contiguous set of LDT descriptors
Free descriptor
Query maximum private linear address and ranges of physical memory
Query maximum linear region and swap space available
Other memory management services generally used by the kernel, such as
services to allocate, free, and set sparse allocations, are also used.
Once descriptors are allocated they are changed directly by the DPMI API layer.
Applications set descriptors only through requests to the DPMI API layer, which
prevents settings that compromise protection.
ΓòÉΓòÉΓòÉ 19.5.3. Ring 0 Exceptions ΓòÉΓòÉΓòÉ
All VDM linear addresses below 1MB + 64KB can be accessed by Ring 0 code (such
as 8086 Emulation or DOS Emulation), without any exceptions being visible to
the V86 mode application. This meant that there was no need to recover from
faults at ring 0 when VDM applications ran only in V86 mode.
DPMI protected mode applications, however, do have addresses in their address
space that can cause visible exceptions at ring 0. Most virtual device drivers
are not affected because they never execute while the client is in protected
mode. VDDs are affected only if both of the following conditions are true:
The VDD runs while the client is in protected mode.
The VDD accesses the client address space above 1MB + 64KB or using client
selectors while the client is in protected mode. This can happen indirectly
if a VDH service is called which manipulates the client's protected mode
stack.
In such cases, the virtual device driver must include handlers for the
exceptions.
ΓòÉΓòÉΓòÉ 19.5.4. DPMI API Layer Communication with the Kernel ΓòÉΓòÉΓòÉ
The DPMI API Layer has a small, well defined interface with the kernel. At
system initialization time, the DPMI API Layer is registered with the kernel
through a VDH call and reports which version of DPMI it supports. If the VDD
supports only DPMI Version 0.9, the kernel (which supports DPMI Version 1.0)
adjusts the way in which it handles certain DPMI tasks.
Kernel services that may be useful to VDDs other than the DPMI API layer are
exported as VDH services. Services that should have use restricted only to the
DPMI API layer are made available through structures exchanged when the DPMI
API Layer virtual device driver is registered.
ΓòÉΓòÉΓòÉ 19.5.5. Installation of DPMI ΓòÉΓòÉΓòÉ
The OS/2 Version 2.0 installation procedure copies the DPMI API Layer virtual
device driver DPM.SYS into the \OS2\MDOS directory on the user's system. If
users decide to use selective install, they can choose any combination of EMM,
XMS, or DPMI. When they select any of these memory options, the appropriate
DEVICE= statement is added to CONFIG.SYS. The default memory statement in
CONFIG.SYS is:
DEVICE=C:\OS2\MDOS\VEMM.SYS
If the user does not select DPMI support at installation time and wishes to add
it at a later time, CONFIG.SYS must be modified by adding the statement:
DEVICE=C:\OS2\MDOS\VDPMI.SYS
ΓòÉΓòÉΓòÉ 19.5.6. DPMI and Microsoft Windows ΓòÉΓòÉΓòÉ
DPMI 0.9 support is necessary for Windows 3.0 to run applications in protected
mode (that is, in Windows standard mode). With DPMI implemented in Windows
3.0, Windows 3.0 applications (running in protected mode) are freed from the
restrictive 640KB DOS address space.
Windows 3.0 is not a standard DPMI client and cannot run under DPMI in a VDM
without completely subverting the operating system's memory protection and
thereby potentially compromising system integrity.
Even with DPMI, Windows cannot run in 386 enhanced mode under OS/2 Version 2.0.
The reason for this is that when Windows runs in enhanced mode it operates at
Ring 0. Running Windows in 386 enhanced mode would therefore require bypassing
the operating system's protection mechanisms, and would potentially compromise
the integrity of the system.
ΓòÉΓòÉΓòÉ 19.6. Summary ΓòÉΓòÉΓòÉ
Applications which experience memory constraints under DOS may overcome many of
the inherent limitations of real mode by running protected mode. However, an
application running in protected mode cannot easily access the facilities of
real mode software such as the DOS operating system or TSR programs. DPMI
provides an interface which allows an application to execute in protected mode,
and to make DOS requests through DPMI. All mode switching and address
conversion is handled by DPMI on the application's behalf.
DPMI resolves problems relating to device virtualization, intertask protection,
and demand paging that occur when multiple protected mode DOS extender
applications are run in a multitasking environment, in conjunction with memory
managers and control programs.
DPMI is implemented under OS/2 Version 2.0 using a combination of virtual
device driver services and kernel services to provide DPMI functions to client
applications. The provision of these functions allows applications written to
use DPMI services, such as applications which run under Microsoft Windows in
standard mode, to run in a VDM under OS/2 Version 2.0.
ΓòÉΓòÉΓòÉ 20. Running DOS Applications ΓòÉΓòÉΓòÉ
OS/2 Version 2.0 allows the user to run multiple DOS applications concurrently,
with each application running in its own virtual DOS machine, with pre-emptive
multitasking and full memory protection.
This chapter describes the way in which a DOS application can be defined to the
OS/2 Version 2.0 Workplace Shell, and the ways in which an application may be
started. It also discusses the way in which version-specific DOS applications
may be run in virtual DOS machines under OS/2 Version 2.0.
ΓòÉΓòÉΓòÉ 20.1. Defining a DOS Application ΓòÉΓòÉΓòÉ
A DOS application is typically defined to the Workplace Shell by creating a
representative object for the application, and configuring the properties of
that object using the settings view. Configuring an object in this way allows
the application to take advantage of the many customizable properties of the
OS/2 Version 2.0 VDM environment, and to tailor this environment to provide
optimum performance and application compatibility.
ΓòÉΓòÉΓòÉ 20.1.1. Creating a Representative Object ΓòÉΓòÉΓòÉ
To define a DOS application as an object under the Workplace Shell, do the
following:
1. Open the Templates folder on the desktop, and copy the Program object by
pointing to it with the mouse pointer, holding down mouse button 2 and
dragging the icon to the desktop or to the folder in which the DOS
application will reside.
2. The settings view for the new object will automatically open. On the
Program page of the settings notebook, complete the Program title and Path
and file name fields for the application. The Parameters and Working
directory fields are optional, and depend on the application being
installed. Users should check the documentation supplied with the DOS
application.
Figure "The Program Page of the Settings Notebook"
3. On the Session page, select either DOS Window or DOS Full Screen, depending
on how the DOS application will be run. In most cases, it is sufficient to
select DOS Window since when maximized, the window will allow the full 25
rows by 80 columns to be displayed.
Another advantage of selecting DOS Window is that the user can use the copy
and paste functions of the VDM to selectively transfer data between the DOS
application, the clipboard, and any other application on the desktop that
supports the clipboard. However, some graphics applications suffer
performance degradation when run in windowed mode. For such applications,
DOS Full Screen should be selected.
Note that once the VDM is started, a user can switch between DOS Window and
DOS Full Screen modes by holding down the Alt key and pressing the Home
key.
Do not confuse running a DOS application full screen with running it in a
full screen window (a maximized window that fills the entire screen). There
can be a significant performance difference between the two.
Note that clipboard function Copy All is also available for full screen
virtual DOS machines. This allows the user to copy the entire DOS full
screen to the clipboard (there is no way to mark only a portion of the
screen). To perform this function, the user must press Ctrl+Esc to return
to the desktop, click on the application icon with mouse button 2, and
select Copy All.
4. On the General page, complete the Title field. The user can optionally
choose to display a different icon from the default DOS Window or DOS Full
Screen icons.
Figure "The Session Page of the Settings Notebook"
5. If you select the DOS settings push button, the system brings up another
dialog. In this dialog, you can setup all DOS/VDM relevant characteristics,
unique to this particular program object.
Figure "The DOS Settings Dialog of the Settings Notebook"
When the settings notebook is closed, the application will appear on the
desktop or in the folder, with the specified application name beneath its icon.
ΓòÉΓòÉΓòÉ 20.1.2. Adding TSRs to the Workplace Shell ΓòÉΓòÉΓòÉ
TSRs (Terminate-and-Stay-Resident) are DOS programs that stay resident in
memory after terminating. This allows another DOS application to be loaded,
while the TSR can still be accessed by a software or hardware interrupt, such
as a hot-key sequence. An example is the dial-up terminal emulator FTTERM.
A TSR will not work if it is added to the Workplace Shell using the steps in
the previous section. The virtual DOS machine closes when it detects the TSR
terminating and gives it no chance to become resident.
Figure "Setting Up a TSR Program"
To add a TSR to the Workplace Shell, do the following:
1. Open the Templates folder on the desktop, and copy the Program object to
the desktop or the required folder.
2. On the Program page of the settings notebook, complete the Program title
field with an asterisk ("*").
3. Fill in the Parameters field with a "/k" followed by the path and program
name of the TSR.
4. Complete the Session and General pages of the settings notebook as for
other DOS applications.
ΓòÉΓòÉΓòÉ 20.1.3. Customizing the VDM Environment ΓòÉΓòÉΓòÉ
The OS/2 Version 2.0 virtual DOS machine environment may be extensively
customized to suit the requirements of a particular DOS application. Such
properties as DOS device drivers, EMS/XMS memory configurations, and even the
interface to hardware facilities can be specified individually for each VDM.
This customization is achieved using the DOS Settings facility, which is
accessed by pressing the DOS settings pushbutton on the Session page of the
settings notebook.
The DOS Settings facility and the available settings are described in detail in
DOS Settings.
ΓòÉΓòÉΓòÉ 20.1.4. Using the Migrating Applications Facility ΓòÉΓòÉΓòÉ
Many common DOS applications can be set up on the Workplace Shell with their
virtual DOS machine customized automatically by using the Migrate Applications
facility of the Systems Setup. There is a file in the \OS2\INSTALL subdirectory
called DATABASE.DAT that contains information on commonly available DOS,
Windows V3.0 and OS/2 Version 1.3 applications. For DOS and Windows V3.0
applications this file includes the recommended DOS settings for the virtual
DOS machine setup for that application.
After installing the DOS application, start the Migrate Applicationsfacility
and follow the dialog boxes to select the DOS application. If the migration is
successful, an icon will be created for the application in a folder called DOS
Applications.
Refer to Installing and Migrating Applications on using the Migrate
Applications program.
ΓòÉΓòÉΓòÉ 20.2. Starting a DOS Application ΓòÉΓòÉΓòÉ
A DOS application can be started in a virtual DOS machine by a user in one of
several ways:
By double-clicking mouse button 1 on the application's representative object
on the desktop or in a folder
By starting the application from an OS/2 or DOS command line
By running an OS/2 batch file containing the Start command with the
appropriate switches
Note that an OS/2 application may also start a DOS application by issuing a
DosExecPgm() function call. The DOS application can be started as a dependent
or independent child process of the OS/2 application.
There are certain limitations to starting DOS programs from an OS/2 V2.0
command prompt. For example, neither output redirection (using the ">"
character) nor piping (using the "|" character) works as it would from a DOS
command prompt. When starting a DOS application from the OS/2 command prompt,
OS/2 Version 2.0 calls the DOS command processor (COMMAND.COM), which then
receives the application's name and parameters and starts it. The OS/2 V2.0
command processor does not start the application itself but transfers all
control to the DOS COMMAND.COM. When we use redirection or piping from the OS/2
command prompt, it is only effective for the OS/2 session. Since OS/2 starts
COMMAND.COM, and not the DOS application itself, OS/2 will only redirect the
output of COMMAND.COM, not the application.
Thus with a DOS program XYZ, neither:
XYZ > DUMMY.FIL
nor:
XYZ | more
would work from the OS/2 command prompt the way it does from a DOS command
prompt.
One solution to the above limitation is to put the redirection or piping
statement into a DOS batch file and call the batch file instead.
ΓòÉΓòÉΓòÉ 20.2.1. Starting From the Workplace Shell ΓòÉΓòÉΓòÉ
In order for an application to be started from within the Workplace Shell, it
must first be defined and configured as described in Defining a DOS
Application. Once this has been done, the application may be started simply by
double-clicking mouse button 1 on the application's icon on the desktop or in a
folder.
Note that when the application is started, the background of the icon will
change to indicate that the application is in use. By default, if the user
double-clicks mouse button 1 on the icon a second time, the operating system
will not start a second instance of the application, but will simply bring the
already started instance to the foreground.
If the user wishes to create a second instance of the application, a second
representative object can be created by copying the original instance.
Alternatively, the user can change the default behavior in the Window page of
the settings notebook.
ΓòÉΓòÉΓòÉ 20.2.2. Starting From the Command Line ΓòÉΓòÉΓòÉ
A DOS application can also be started from a DOS or OS/2 command line. Note,
however, that starting the application in this way provides no opportunity to
configure the VDM environment to support particular application requirements.
Certain settings may be changed during application execution. However, such
settings will be saved and will remain in effect until explicitly reset by the
user.
The default settings also allocate resources for EMS, XMS and DPMI support,
which may not be required by the DOS application. For these reasons, it is
recommended that DOS applications which require non-default settings be
configured and started from the Workplace Shell wherever possible.
When starting the application from a DOS command line, the application loads
and executes within the VDM which displayed the command line. All DOS
environment settings used by the application are those in effect for the VDM
when the application was started. When the application terminates, control is
returned to the command line.
When starting the application from an OS/2 command line, the operating system
reads the program file from disk, and determines from the executable file
header that the program is a DOS or Windows application rather than an OS/2
application. The operating system then automatically creates a VDM and loads
the application into the VDM. When the application terminates, the VDM is also
terminated and control returns to the OS/2 command line.
Note that in either case, execution is synchronous, and the command line is not
available for use while the application is running. An application may be
started asynchronously from an OS/2 command line using the START command. In
this case, the operating system creates an asynchronous VDM and loads the
application into this VDM. The OS/2 command line remains available even though
the DOS application is still running.
ΓòÉΓòÉΓòÉ 20.3. Applications With Special Requirements ΓòÉΓòÉΓòÉ
The virtual DOS machine environment normally runs a specialized version of DOS
known as the DOS Emulation kernel, in which most DOS services are actually
provided by components of the OS/2 operating system, transparently to the
application and outside of the real mode address space in which the DOS
application executes. This kernel is described in MVDM DOS Emulation.
For this reason, many DOS control structures are not accessible to DOS
applications running in VDMs. Applications which access these control
structures cannot be run in a "normal" VDM due to the lack of these structures.
The DOS Emulation kernel does not support the use of block device drivers, and
applications which require such device drivers are unable to use the DOS
Emulation kernel.
In order to allow such applications to be run in VDMs under OS/2 Version 2.0,
the Virtual Machine Boot facility is provided. This facility allows a "real"
version of DOS to be loaded into a VDM, either from a DOS bootable diskette or
from a diskette image stored on fixed disk. Since the real version of DOS is
therefore running in the VDM, all features, characteristics and internal
control structures of that version are available to an application running in
the VDM.
An example of an application that needs to be run in this way is PC
Support/400.
The Virtual Machine Boot facility is described in detail in Virtual Machine
Boot.
ΓòÉΓòÉΓòÉ 20.4. Summary ΓòÉΓòÉΓòÉ
Multiple DOS applications may be run concurrently under OS/2 Version 2.0, in
virtual DOS machines with pre-emptive multitasking and full memory protection.
By default, these applications access DOS and hardware services using an
emulated version of DOS, which provides these services through the OS/2
operating system. Most of these DOS services are provided outside the 640KB
real mode address space in which the DOS application executes, thereby allowing
more memory (up to 630KB) for the application and its data.
DOS applications can usually be installed by starting a virtual DOS machine and
running the install program from the command prompt. If the installation fails
the user can boot the system from a DOS diskette to run the install, provided
the hard disk has at least one FAT partition.
A DOS application may be defined as an object on the OS/2 Version 2.0 Workplace
Shell desktop or in a folder, and started from the Workplace Shell.
Applications defined in this way have their VDM environment configured to
support particular application requirements and to allow the application to
take full advantage of VDM features. Alternatively, the Migrate Applications
facility can be used to place the application in the Workplace Shell and
customize the DOS settings
A DOS application may also be started from the DOS or OS/2 command line.
However, applications started from the DOS command line inherit the DOS
environment settings of the VDM in which the command line is executing, and
those started from the OS/2 command line inherit the default settings.
DOS Applications which require access to internal DOS control structures or
block device drivers not supported by the DOS Emulation kernel may use the
Virtual Machine Boot facility of OS/2 Version 2.0 to load a "real" version of
DOS from a diskette or a diskette image stored on fixed disk. This capability
allows such applications to run in a VDM.
ΓòÉΓòÉΓòÉ 21. DOS Settings ΓòÉΓòÉΓòÉ
In order to provide the highest possible level of compatibility with DOS
applications which make use of particular DOS properties or attributes, MVDM
provides virtual DOS machines with many more customizable properties than
comparable OS/2 sessions. MVDM provides a common mechanism which supports
standard settings, and allows virtual device drivers to register custom
settings. The CONFIG.SYS file contains a number of standard DOS settings;
these are applied to all VDMs as they are created. Other settings may be
specified for individual VDMs.
When running Windows applications in VDMs under OS/2 Version 2.0, certain DOS
settings should be altered from their default values. The recommended values
for these settings when running Windows applications are discussed in DOS and
WIN-OS/2 Settings.
DOS settings are used during creation and initialization of a VDM, and certain
settings may also be altered dynamically during VDM execution. During
initialization of the VDM, the VDM_CREATE hooks for all virtual device drivers
defined for that VDM are called by the Virtual DOS Machine Manager. At this
point, the virtual device drivers may call the VDHQueryProperty() helper
service to get the values for required settings.
ΓòÉΓòÉΓòÉ 21.1. Registration ΓòÉΓòÉΓòÉ
Information on DOS settings is stored in a "database" in the operating system
kernel. This database is used to support all operations related to DOS
settings. The following information is registered for each setting:
Name The name presented to the user. This may contain blanks, and
related settings should have common prefixes so that they sort
together in the list presented to the user (such as Printer buffer
size, Printer timeout, Printer automatic close).
Ordinal For the "standard" settings, specific ordinals are used so that
the kernel may obtain the value independently of the name string.
Help File The name of the help file containing help information on this
setting.
Help ID The help ID of the main topic for this setting.
Type The setting type. The following types are supported:
Boolean
Integer
Enumeration (list of valid strings)
Single-line strings
Multi-line strings.
This allows the user interface to display an appropriate control
for each setting.
Flags These control aspects of the setting. In particular, the flags
determine whether the setting can be changed while a VDM is
running.
Default Value If the user does not supply a value, this default value is used.
Validation information This information allows the user interface (and the
kernel) to validate settings without involvement from the virtual
device driver. For strings, this is the maximum string length.
For integers, this is the minimum, maximum, and step values. For
enumerations, this is the list of valid strings.
Function This function is used for validating string settings, and for
notifying the VDD when the user has changed a setting value for a
running VDM.
ΓòÉΓòÉΓòÉ 21.1.1. Changing Settings Prior to Execution ΓòÉΓòÉΓòÉ
The Workplace Shell enables a user to define objects which represent OS/2 and
DOS applications, using the Settings notebook. For DOS applications, a DOS
Settings... button is provided in the Session page of the notebook. Pressing
this button causes the DOS Settings dialog box to be displayed. The user may
then manipulate the DOS settings (which are initially set to their default
values), and then save them.
The DOS Settings dialog box uses the DosQueryDOSProperty() function to get the
list of settings and detailed information on each setting. It uses the
DosSetDOSProperty() function to validate string settings.
ΓòÉΓòÉΓòÉ 21.1.2. Changing Settings During Execution ΓòÉΓòÉΓòÉ
MVDM inserts a DOS Settings... menu item on the system menu for all VDMs.
Selecting this menu item causes the DOS Settings dialog box to be displayed,
which in turn allows the user to modify settings for the VDM. For full screen
VDMs, the user must switch to the Presentation Manager Window List using the
Ctrl+Esc key sequence, and display the context menu for the VDM session by
clicking mouse button 2 on the VDM's entry in the Window List. The DOS
Settings... option is displayed in the context menu.
Note that only those settings that have been registered as being modifiable at
run time may be altered in this way; other settings are not presented in the
dialog box.
ΓòÉΓòÉΓòÉ 21.1.3. Starting a VDM From Another Application ΓòÉΓòÉΓòÉ
The DosStartSession() function under OS/2 Version 2.0 provides an environment
pointer as one of its parameters. This pointer references a buffer which is
used when creating a VDM. This buffer contains the buffer length, followed by
one or more DOS settings. For each setting, the buffer specifies the type,
name and value. The operating system parses the settings buffer as part of the
DosStartSession() processing, in order to create initial values for these
settings. Default values are assumed for any registered settings not specified
in the DosStartSession() call.
For any settings which have not been registered, the information in the buffer
is ignored. This allows the system to run without errors in the case where the
virtual device driver that registered a setting is not loaded (for example,
CONFIG.SYS was changed), and yet the Presentation Manager shell has saved a
value for that setting.
ΓòÉΓòÉΓòÉ 21.2. Standard DOS Settings ΓòÉΓòÉΓòÉ
Figure "The DOS Settings Dialog of the Settings Notebook"
The standard DOS settings which affect the operation of virtual device drivers
supplied with OS/2 Version 2.0 are described on the following pages. The
settings are grouped according to the general DOS system function to which they
apply.
DOS settings may be changed in either of two ways:
Settings which are described as settable "at VDM creation only", may only be
changed prior to starting the VDM. If the DOS application is defined as an
object under the Workplace Shell, this is done by selecting the DOS Settings
button from the Session page in the application's Settings notebook.
Settings which are described as settable at any time may be set in the manner
described above, or they may be changed while an application is running in a
VDM, using the DOS Settings.. option from the system menu.
Note that certain settings may be changed in both of the above ways.
ΓòÉΓòÉΓòÉ 21.2.1. Communications ΓòÉΓòÉΓòÉ
The following settings control the communications environment (COM ports) used
by a VDM.
COM_HOLD
Function: When set on, provides exclusive access to COM ports for the
specified VDM, preventing other processes from using the port and
preventing the operating system from releasing the port until the
VDM terminates.
Advantages: For certain applications which use COM ports and which require
multiple programs to access the COM port (for example, this
setting prevents the COM port from being released when the first
program terminates).
Drawbacks: If not required by the application running in a VDM, this setting
may prevent other applications from accessing COM ports.
Default: Off.
Settable: At VDM creation only.
Examples: Certain bulletin board applications use one program to dial the
BBS and another to exchange information; setting COM_HOLD on
prevents the operating system from releasing the COM port when the
first program terminates.
ΓòÉΓòÉΓòÉ 21.2.2. DOS Environment ΓòÉΓòÉΓòÉ
The following settings affect the behavior of the DOS emulation environment
within a virtual DOS machine.
DOS_BACKGROUND_EXECUTION
Function: When set off, suspends execution of the program when it is in the
background.
Advantages: Many DOS applications are written on the assumption that they are
single tasking and that all the resources of the workstation can
be monopolized. It is not uncommon for a DOS program to
continually poll for keyboard input (Examples are WordPerfect 5.1
and Lotus 1-2-3 R2.2). In a multitasking environment, this can
impact system performance, especially when more than one such
program is running. Turning the DOS application off when its
virtual DOS machine is in the background reduces its demands on
the system.
Also see IDLE_SENSITIVITY and IDLE_SECONDS in Idle Detection.
Drawbacks: Communications programs will fail if background execution is
turned off, as will DDE for Windows applications.
Try changing the values of IDLE_SECONDS and IDLE_SENSITIVITY
before turning DOS_BACKGROUND_EXECUTION off.
Default: On (Background execution is enabled).
Settable: At any time.
Examples: If more than two DOS programs are running and tuning with
IDLE_SENSITIVITY and IDLE_SECONDS does not provide sufficient
improvement, turn DOS_BACKGROUND_EXECUTION off for the least used
application.
DOS_BREAK
Function: Enables or disables Ctrl+Break for the specified VDM. Also check
for the BREAK statement in the CONFIG.SYS. Set BREAK=ON in the
CONFIG.SYS to make Ctrl+Break and Ctrl+C working in addition to
setting DOS_BREAK on.
Advantages: Enables a DOS application running in the VDM to be interrupted
using the Ctrl+Break or Ctrl+C key sequences.
Drawbacks: This setting is useful only if an application must be quickly
interrupted; the user may easily terminate a VDM by closing it
from the Window List.
Default: Off (Ctrl+Break is disabled).
Settable: At VDM creation only.
Examples: If the user wishes to have the option to interrupt a DOS batch
file running in a virtual DOS machine, this setting should be
turned on.
DOS_DEVICE
Function: This setting can be used to add or modify information about DOS
device drivers for the specified VDM, in addition to the
information specified in CONFIG.SYS.
Default: When this setting is selected, a list is displayed which contains
information about each DOS device driver specified in CONFIG.SYS.
The information consists of the path and file name of each DOS
device driver and its current parameters, if applicable. For
example:
c:\os2\mdos\ansi.sys
The user may:
Type the name of a DOS device driver to add it. Typing should begin on a
new line.
Delete all the information about a device driver to remove it.
Type or delete to add, change, or delete a value.
Settable: At VDM creation only.
Examples: A program to support hardware such as a scanner may include a
device driver that is needed only for itself. The device driver
should be loaded with the DOS_DEVICE setting instead of in the
CONFIG.SYS.
DOS_FCBS
Function: Specifies the maximum number of file control blocks (FCBs) which
may be opened by applications running in the VDM. Note that this
setting affects only those modules which use file-sharing.
Advantages: Reducing this setting may improve DOS application performance in a
resource-constrained networking environment. When the maximum
number of FCBs is opened by an application, the least recently
used FCB is closed to allow additional files to be opened; see
DOS_FCBS_KEEP below.
Drawbacks: Reducing this setting to an excessively low number may inhibit the
performance of applications which use large numbers of files.
Check application documentation for recommended FCB settings.
Default: 16.
Settable: At VDM creation only.
Examples: None.
DOS_FCBS_KEEP
Function: Specifies the number of FCBs that will be protected against
automatic closure.
Advantages: If this setting is specified as "n", the first "n" files are
protected against automatic closure as described in DOS_FCBS
above. This may improve application performance.
Default: 8.
Settable: At VDM creation only.
Examples: None.
DOS_FILES
Function: Specifies the maximum number of file handles which may be opened
in a VDM.
Advantages: Setting this value higher than the default may improve performance
for applications which use a large number of files. Check
application documentation for recommended settings.
Drawbacks: Setting the number of file handles higher than necessary reduces
the available memory.
Default: 20.
Settable: At any time.
Examples: DBASE IV requires a DOS_FILES setting of at least 40.
DOS_HIGH
Function: Determines whether DOS is loaded outside the 640KB low memory
address space.
Advantages: Loading DOS into high memory allows more available memory for
application code and data within the 640KB address space.
Drawbacks: Applications which require access to DOS internal control
structures require DOS to be loaded into low memory, and therefore
cannot use this setting.
Default: Off (DOS is loaded into low memory).
Settable: At VDM creation only.
Examples: None.
DOS_LASTDRIVE
Function: Specifies the highest available logical drive letter for the
specified VDM. This setting is similar to the LASTDRIVE= statement
in a DOS CONFIG.SYS.
Default: Z.
Settable: At VDM creation only.
Examples: Each additional drive letter uses about 100 bytes. Setting the
LAST_DRIVE to a lower letter such as J or K provides more
conventional memory for an application.
DOS_RMSIZE
Function: Specifies the DOS memory size. This is the amount of memory which
is available to DOS applications.
Advantages: The virtual video device driver uses this setting on certain video
adapters to set even more than 640KB.
Drawbacks: This setting is of little use to most users as there is no point
specifying less than 640KB.
Default: The default is 640KB.
Settable: At VDM creation only.
Examples: None.
DOS_SHELL
Function: To specify the DOS command processor, or to add parameters to
affect the command processor. This setting points by default to
COMMAND.COM. If a user has a different command processor, it
should be specified here.
Advantages: The user may specify a command processor other than the default
COMMAND.COM, if required by a specialized application, or may
alter the environment space available for the VDM.
Default: C:\OS2\MDOS\COMMAND.COM C:\OS2\MDOS /P
Settable: At VDM creation only.
Examples: C:\OS2\MDOS\COMMAND.COM /E:1024 /P
DOS_STARTUP_DRIVE
Function: Specifies the location of the DOS kernel to be loaded into the
VDM.
Advantages: Allows specific versions of DOS to be loaded into a VDM using the
VMB facility, allowing the execution of version-dependent DOS
applications.
Drawbacks: Performance may not be as good as the VDM kernel, which is
optimized for the OS/2 V2.0 environment.
Default: The DOS Emulation kernel is loaded.
Settable: At VDM creation only.
Examples: See Virtual Machine Boot.
DOS_UMB
Function: Specifies whether DOS owns Upper Memory Blocks (UMBs) and manages
the loading of device drivers and TSR programs.
Advantages: Setting DOS_UMB on allows use of the DEVICEHIGH= and LOADHIGH
statements, to load device drivers and TSR programs into Upper
Memory Blocks, thereby preserving space in low memory for use by
applications.
Drawbacks: Certain applications which make use of UMBs need to access and
manage the UMBs directly; such applications will not run when
DOS_UMB is set on, because DOS owns the UMBs.
Default: Off (UMBs are owned by certain types of TSR programs and DOS
device drivers if necessary).
Settable At VDM creation only.
Examples: None.
DOS_VERSION
Function: Allows the operating system to report a "fake" DOS version number
in response to a request from a program in the VDM, in order to
support applications which check for a DOS version number.
Advantages: Allows some programs that will not start unless they detect a
prerequisite DOS version to run in DOS Emulation
Default: 20
Settable: Before application initiation.
Examples: Lotus 1-2-3 R3+ will run in DOS Emulation if it is "fooled" into
thinking that it is running under DOS 3.3 by putting the following
lines into the DOS_Version list box:
123DOS.EXE,3,30,255
123.EXE,3,30,255
LOTUS.EXE,3,30,255
ΓòÉΓòÉΓòÉ 21.2.3. DPMI ΓòÉΓòÉΓòÉ
The following settings control the DPMI interface for a VDM.
DPMI_DOS_API
Function: Determines whether DOS API translation is enabled for the
specified VDM.
Default: AUTO (API translation is enabled if required).
Settable At VDM creation only.
Examples: None.
DPMI_MEMORY_LIMIT
Function: Specifies the maximum amount of protected mode memory (in
megabytes) available to DPMI applications running in the VDM.
Advantages: For applications which require large amounts of DPMI memory, this
setting may be used to increase the amount of available memory up
to 512MB.
Default: 2MB.
Settable At VDM creation only.
Examples: None.
DPMI_NETWORK_BUFF_SIZE
Function: Specifies the size, in kilobytes (KB), of the network translation
buffer for DPMI programs in this session. The range is from 1 to
64 KB.
Default: 8KB.
Settable At VDM creation only.
Examples: This setting allows you to configure the size of the translation
buffer for Windows programs that transfer data over a network. If
a network-specific Windows program does not run correctly under
OS/2 V2.0, increase this setting, then restart the session.
ΓòÉΓòÉΓòÉ 21.2.4. EMS ΓòÉΓòÉΓòÉ
The following settings control the behavior of EMS memory used by the VDM.
EMS_FRAME_LOCATION
Function: This DOS setting allows you to change the location of the LIM EMS
region. LIM EMS uses a 64KB address region known as an EMS page
frame, through which programs can access expanded memory. (This
allows programs to use more than 640KB of memory.)
Advantages: If a user has problems when running a program that uses both a
hardware device and LIM EMS expanded memory, the problem may be
due to conflicting use of addresses by LIM EMS and the hardware
device. If this occurs, the user should first use the
EMS_HIGH_OS_MAP_REGION setting to set the extra address region
used by EMS to 0. This may solve the problem. If the problem
persists, the EMS_FRAME_LOCATION setting can be used to select a
64KB region that does not conflict with hardware.
The user can choose where to place the frame from a list of
choices or can choose to have no EMS frame for programs which do
not require a frame. The user can also reduce the DOS Memory Size
setting and place the frame below 640KB.
Drawbacks: The best solution, when problems due to hardware conflicts occur,
is to use the MEM_EXCLUDE_REGIONS and MEM_INCLUDE_REGIONS settings
to specify the addresses that the hardware uses rather than using
this setting.
Default: The default AUTO setting will lead to correct choices of LIM EMS
addresses. Most users will never need to change this setting.
Settable: At VDM creation time only.
Examples: In some cases the default choice may conflict with addresses used
by hardware on the machine. This can happen only for devices that
are not supported by a virtual device driver.
EMS_HIGH_OS_MAP_REGION
Function: In addition to the EMS page frame, some programs can use
additional addresses to access expanded memory. This setting
gives advanced users the capability to adjust the size of the
additional EMS region.
See also EMS_FRAME_LOCATION above.
Advantages: An advanced user can use the MEM_EXCLUDE_REGIONS and
MEM_INCLUDE_REGIONS settings to specify the addresses used by
devices that do not have virtual device drivers, and can then set
the size of the EMS_HIGH_OS_MAP_REGION appropriately for their
program. This helps avoiding conflicts with addresses used by
devices and programs.
Default: The value set is the size of the region in kilobytes. The default
is 32KB.
Settable: At VDM creation only.
Examples: None.
EMS_LOW_OS_MAP_REGION
Function: Some programs can use remappable conventional memory. Others do
not use this feature. This setting allows advanced users to set
the size of the remappable conventional memory available in a VDM.
Default: The value set is the size of the region in kilobytes. The default
is 384KB.
Settable: At VDM creation only.
Examples: None.
EMS_MEMORY_LIMIT
Function: This setting controls the amount of EMS memory available to a VDM.
Advantages: The user can set this to a higher value for running programs that
require a large amount of EMS memory. Other programs do not use
EMS at all. The size can be set to 0 in such cases, to disable
EMS support for that VDM. Programs generally state whether they
use EMS on the box or in their manuals.
Default: The value set is the size of the region in kilobytes. The default
size is 2MB.
Settable: At VDM creation time only.
Examples: If a spreadsheet runs out of memory, the amount of EMS memory can
be increased and the VDM restarted.
ΓòÉΓòÉΓòÉ 21.2.5. Hardware Environment ΓòÉΓòÉΓòÉ
The following settings affect the virtual hardware environment provided by the
virtual DOS machine.
HW_NOSOUND
Function: Enables or disables sound started by a DOS program.
Advantage: Any sound from a program is heard unless sound is disabled. An
"x" in the check box indicates that the sound is to be heard.
Drawbacks: No error sound will be heard if HW_NOSOUND is turned on.
Default: OFF.
Settable: At any time, including while a program is running in a VDM.
Examples: Output from a music program may be disabled when the user wishes
to hear another music program, or switch to another process to do
something else.
HW_ROM_TO_RAM
Function: Enabling HW_ROM_TO_RAM causes the operating system to copy
read-only memory (ROM) and run the copy in 32-bit random access
memory (RAM). With this setting enabled, BIOS operations run
faster and system utilities may patch BIOS.
Default: OFF.
Settable: At VDM creation only.
Examples: This setting is useful if debugging the kernel. The change would
allow normal breakpoints to be set in ROM and allow stepping over
calls and loops.
Warning: If an application writes to a memory address used by the
ROM while this setting is enabled, it may cause unpredictable
results for that application and for every application run
thereafter in the VDM.
HW_TIMER
Function: When enabled, allows an application to have direct access to the
8253 timer ports and prevents the operating system from trapping,
or intercepting, the timer request and emulating a timer.
Advantages: Certain timing-critical applications will not run (or will run
much slower) if accesses to timer ports are trapped and
virtualized. In addition, the values they read do not accurately
reflect the amount of time passed because they do not take
trapping overhead into account. Enabling this setting allows
certain timing-dependent code to run more effectively.
Drawbacks: Applications that change the divisor before this setting is
enabled and then read the timer ports after the setting has been
enabled may not function properly. If the setting is enabled
first, the VDM will not detect changes to the divisor correctly,
and the simulated interrupt frequency will be incorrect. Also,
multiple applications using this setting may interfere with one
another.
Default: Off. Most applications will operate normally with timer
virtualization.
Settable: At any time. It is useful to alter this setting dynamically and
watch for changes in application performance.
Examples: The ROMs on some machines implement very brief delays by polling
the timer ports. These delays become unacceptably long unless
direct timer port access is allowed.
ΓòÉΓòÉΓòÉ 21.2.6. Idle Detection ΓòÉΓòÉΓòÉ
The following settings determine the way in which the operating system detects
that an application in a VDM is currently idle. These settings should be used
when an application exhibits poor performance, or where mouse movement in a DOS
application is "jerky".
IDLE_SECONDS
Function: When programs appear to be doing nothing but waiting for input,
the operating system gives them less time to run. This is done to
give preference to programs that are doing useful work. Some
programs periodically appear to be waiting for input, but then
change their behavior and continue after a time. This setting
disables the "IDLE_SENSITIVITY" function for a period of time
after useful work has been detected.
Also see IDLE_SENSITIVITY below for more details on idle
detection.
Advantages: If a program appears to run slowly when there is an option for the
user to provide input, this value should be increased.
Drawbacks: Setting the value too high gives the DOS program more resources
than it needs.
Default: This value is in seconds. The default is no idle time allowed.
Settable: The setting can be changed while the program is running to tune it
to the proper value.
Examples:
A game may pause, for instance, to wait for the user to make a choice, but
then continues if the user does not react.
When DOS 5 is run in a virtual machine boot session, (See Virtual Machine
Boot) the DOS shell may fail to complete displaying the directory of the
C: drive if IDLE_SENSITIVITY is set too low. IDLE_SECONDS should then be
raised.
IDLE_SENSITIVITY
Function: The idle sensitivity level sets a threshold for judging when
applications will be considered idle. The value is the percentage
of the maximum possible polling rate the application can perform.
If an application polls at a rate higher than this value, it is
considered "idle".
DOS programs often "poll" for input when they are waiting for a
user response. For instance, a program may wait for a response by
repeatedly checking to see if the user has hit a key. In a
multitasking environment such as OS/2 Version 2.0, this wastes
time when other programs could be running instead. The operating
system detects idle programs by looking for a high rate of polling
for input. When programs are judged to be waiting for input, they
are given less time to run.
For example, if idle sensitivity is set to 75%, then an
application repeatedly checking to see if input is available would
have to do this checking at more than 75% of the maximum possible
rate before it would be judged idle.
Idle detection is a "best guess" of what the program is doing. It
could be that the program is polling at a very high rate, but is
still doing useful work in between checking. It may be that the
application checks at a fairly slow rate but still is doing
nothing but waiting. The idle sensitivity threshold allows
adjustment of the threshold for a particular application.
Also see IDLE_SECONDS above.
Advantages: If an application receives input while running and seems to run
slower than expected, the idle sensitivity should be set to a
higher value. This lets the application poll at a higher rate
without being judged idle. Setting the level to 100 turns idle
detection off altogether. The application will be allowed to poll
for input as often as it likes.
If an application is waiting for input and other applications do
not appear to be running, the idle sensitivity should be adjusted
downward. This lowers the threshold for judging the application
idle.
Default: The default is 75%.
Settable: The setting can be changed while the program is running to tune it
to the proper value.
Examples: Overall system performance can usually be improved when there are
multiple DOS applications running if IDLE_SENSITIVITY is turned
down.
Also see Dos Environment (DOS_BACKGROUND_EXECUTION).
ΓòÉΓòÉΓòÉ 21.2.7. Keyboard ΓòÉΓòÉΓòÉ
The following settings affect the behavior of the keyboard and the
interpretation of control key sequences issued within a VDM.
KBD_ALTHOME_BYPASS
Function: When enabled, prevents the Alt+Home key sequence from switching
the VDM between full screen and windowed mode.
Advantages: Enabling this setting allows normal behavior for applications
which themselves make use of the Alt+Home key sequence.
Drawbacks: When enabled, the user must use the Ctrl+Esc sequence to switch to
Presentation Manager from a full screen VDM, then use the context
menu of the class to switch the VDM to windowed mode.
Default: Off (Alt+Home will cause a switch between full screen and windowed
mode).
Settable: At any time.
Examples: None.
KBD_BUFFER_EXTEND
Function: Increases a VDM's keyboard type-ahead buffer size.
Advantages: Provides greater keystroke buffering, consistent with the level
available in VIO windows. Note that Ctrl-Break will flush the
entire buffer, just as it does with the standard buffer.
Drawbacks: Applications which bypass the ROM BIOS input buffer and/or INT 16h
may not benefit from this feature. There is also a small amount
of additional memory overhead for every VDM.
Default: On. Most applications will benefit, and those that do not should
not be adversely affected.
Settable: At any time. This facilitates easy experimentation by the user in
the (rare) event that a problem does arise.
Examples: None.
KBD_CTRL_BYPASS
Function: When enabled, inhibits one or more control key sequences, allowing
an application in the VDM to use these sequences for its own
purposes.
Advantages: Enabling this setting allows normal behavior for applications
which make use of control key sequences normally used by OS/2
Version 2.0.
Drawbacks: Enabling this setting may prevent certain operations from being
performed with OS/2 Version 2.0 and the Workplace Shell.
Default: NONE (All control key sequences behave in the normal manner).
Settable: At any time.
Examples: None.
KBD_RATE_LOCK
Function: Prevents a DOS application in a VDM from changing the system
keyboard repeat rate.
Advantages: Insulates machine from applications that modify the repeat rate in
an uncontrolled or undesirable way.
Drawbacks: Prevents the application's repeat rate from taking effect even
when the application is the focus session.
Default: Off. Most applications do not modify the repeat rate, and those
that do are generally in accordance with the user's wishes.
Settable: At any time.
Examples: None.
ΓòÉΓòÉΓòÉ 21.2.8. Memory Extenders (EMS and XMS) ΓòÉΓòÉΓòÉ
The following settings affect the behavior of the EMS and XMS memory extenders,
if used in the VDM. For an explanation about the implementation of EMS and XMS
support in VDMs, see Memory Extender Support.
MEM_EXCLUDE_REGIONS
Function: This setting is used to specify address ranges which should be
protected from use by EMS/XMS and direct access by applications.
This setting is intended for experienced users who understand the
hardware.
Advantages: This setting restricts the use of EMS/XMS on certain ranges in the
region between RMSIZE and 1MB. It also protects these ranges from
being touched by user applications by portraying ROM there.
Drawbacks: Some hardware adapters stop functioning if their addresses are
touched in random fashion. If these ranges are defined
excessively, they will adversely impact the function and
performance of EMS and XMS services.
Default: By default, this setting is void. Each address is specified in
hex and if there is no range specified, the length taken is a page
(4KB).
Settable: At VDM creation only.
Examples: None.
MEM_INCLUDE_REGIONS
Function: Specify regions which should be made available to EMS/XMS. This
setting is used to specify some address ranges between RMSIZE and
1MB for use by EMS and XMS.
Advantages: If there is a hardware adapter in this range which the user knows
is not going to be used by a particular VDM session, then the
address range used by this adapter should be made available to EMS
and XMS. This will improve the performance of EMS and XMS
services. Only advanced users who know the addresses used by a
card should use this setting.
Default: By default, this setting is void.
Settable: At VDM creation only.
Examples: See discussion in Expanded Memory (EMS) and Upper Memory (UMB).
ΓòÉΓòÉΓòÉ 21.2.9. Mouse ΓòÉΓòÉΓòÉ
The following settings affect the behavior of the mouse in a VDM.
MOUSE_EXCLUSIVE_ACCESS
Function: This setting allows VDMs to run applications which maintain their
own mouse pointers. Some DOS applications manage their own mouse
positions and movements; in many cases, the application's values
for mouse sensitivity and/or double speed threshold are different
from those of Presentation Manager. As a result, a Presentation
Manager mouse pointer may be outside the VDM window while the
application pointer is somewhere in the window not receiving any
mouse events. This means having two asynchronous mouse pointers on
the screen.
Advantages: The user forces the physical mouse driver to send its events
directly to the virtual mouse driver without going through
Presentation Manager. Only one mouse pointer appears when the
particular VDM window has the focus.
Default: OFF.
Settable: At any time.
However, this only marks the VDM window and does not actually
activate the setting. In order to activate it, the user must
press a mouse button within the VDM window. The Presentation
Manager pointer disappears, leaving only the application pointer.
In order to regain the Presentation Manager pointer, the user must
press any of the hot-keys (Alt, Ctrl+Esc, Shift+Esc).
Examples: WordPerfect 5.1 has its own block-shaped mouse pointer, which will
appear together with the system mouse pointer when the window has
the focus. Turning MOUSE_EXCLUSIVE_ACCESS on allows the user to
remove the system mouse pointer when in WordPerfect.
ΓòÉΓòÉΓòÉ 21.2.10. Printer ΓòÉΓòÉΓòÉ
The following settings affect print functions within a VDM.
PRINT_TIMEOUT
Function: Use this setting to adjust the amount of time, in seconds, that
the OS/2 V2.0 print subsystem waits before forcing a print job to
the printer. In DOS, information sent by a program for printing
goes directly to a printer. However, the OS/2 V2.0 print subsystem
assembles print information in a spool file. After a specified
period of time, during which the spool file does not grow larger,
OS/2 V2.0 print subsystem sends the information to the printer as
a single print job.
Advantage: There is no need to exit the DOS program before the print job is
released by the OS/2 V2.0 print subsystem. This is useful for
applications which do not explicitly close their print jobs.
Default: 15 seconds, configurable from 0 to 3600 seconds (0 seconds is no
timeout).
Settable: At any time.
Examples: A timeout of 1 or 2 seconds is sufficient for small print jobs,
such as copying the contents of the screen. However, when printing
large files, formatting documents, or running calculations, the
value must be set high enough to allow all print results to reach
the spooler before the time limit expires. If not, results go in
two or more spool files instead of one, and the resulting output
may be unsatisfactory.
ΓòÉΓòÉΓòÉ 21.2.11. Video ΓòÉΓòÉΓòÉ
The following settings control screen I/O operations within a VDM.
VIDEO_FASTPASTE
Function: Speeds up input from other sources than the keyboard.
Advantages: Improves the speed of paste operations from the clipboard to a DOS
application.
Drawbacks: Does not work with all applications (in particular, some
applications which monitor keyboard interrupts directly may
experience errors).
Default: Off.
Settable: At any time. This facilitates easy experimentation by the user.
Examples: Pasting into the DOS command prompt, or any application using DOS
Console I/O functions, will generally work. However, the Microsoft
Editor (M) and its successor, Programmer's Workbench (PWB), can
fail when using fast pasting because they rebuffer keystrokes in
an internal buffer, which can overflow.
VIDEO_MODE_RESTRICTION
Function: Extends the 640KB DOS address space by limiting video mode
support.
Advantages: For text-based or CGA graphics based applications, the video
memory normally reserved just above 640KB for high-resolution
graphics modes can be remapped to conventional memory, providing
an additional 64KB (or 96KB, depending on graphics mode) for DOS
applications, TSRs, and other programs. This is valuable for
applications that do not take advantage of EMS or XMS memory
extenders.
Drawbacks: It is not possible to completely hide the fact that the video
adapter is high-resolution graphics-capable; some applications
may attempt to enable those modes and use the memory above 640KB
as video memory, inadvertently corrupting application data. Care
must therefore be taken when using this feature.
Default: NONE. The complete list of settings is:
None
CGA modes only (adds 96KB)
MONO modes only (adds 64KB).
Settable: At VDM creation only.
Examples: None.
VIDEO_ONDEMAND_MEMORY
Function: Reduces swap space requirements for fullscreen VDMs.
Advantages: Allows a full-screen VDM to run without pre-allocating a virtual
video buffer for the worst-case video modes (high-resolution
graphics modes). Using this setting does not prevent execution of
graphics applications; it simply means that allocation of the
buffer is delayed until it is needed. This can save a substantial
amount of memory/swap space, which might be important under
certain low-memory conditions. It also enables you to start a
program quickly.
Drawbacks: If allocation of a virtual video buffer for a full-screen VDM
fails at the time the application changes video modes, the session
must be frozen and switched back to the shell. Unless the user is
able to free memory from another session, he may be unable to get
the DOS application running again. This is a concern if the
application contains unsaved data.
Default: Off.
Settable: At any time. This allows the user to save memory the next time
the session is switched to full-screen.
Examples: None.
VIDEO_RETRACE_EMULATION
Function: Simulates the video retrace status port to provide faster access.
Advantages: DOS applications that poll the video retrace status port often
write to the screen only during the retrace interval, even though
it is safe (on EGA and VGA adapters) to draw at any time without
causing interference (also known as "snow"). This feature causes
most applications to write to the screen more often, and
compensates for the performance drag imposed by monitoring the
port in the first place.
Drawbacks: Some applications may poll the port in such a way that overall
performance is worse; this is sometimes true of applications that
draw only during vertical (not horizontal) retrace.
Unfortunately, while turning off trace emulation will restore
performance, there is a risk that screen-switching will not be as
reliable.
Default: On. Reliable screen-switching has higher priority over the
minority of applications that will experience some drag in
performance.
Settable: At any time. This allows the user to experiment with different
settings in the event of a performance problem.
Examples: None.
VIDEO_ROM_EMULATION
Function: Emulates selected INT 10h ROM Video functions.
Advantages: Provides faster output for selected video functions than ROM
services typically provide. This also has a dramatic effect on
the performance of those functions in a window.
Drawbacks: Some ROMs may offer enhanced services that are not included in the
emulation. Applications which rely upon these services may not
execute correctly.
Default: On. Because the INT 10h ROM Video services are well-documented,
incompatibilities are unlikely and the performance benefits of
using the emulation are quite significant.
Settable: At any time. This allows the user to experiment in the event of a
compatibility problem.
Examples: None.
VIDEO_SWITCH_NOTIFICATION
Function: Notifies a DOS application of a switch to/from full-screen mode.
Advantages: Allows applications that monitor this notification to redraw their
screens as needed. This may be necessary for some video adapters
that provide modes (and applications that use those modes) which
are not fully supported by the OS/2 video driver or which are
slightly incompatible. It is also valuable in situations where an
OS/2 video driver has not allocated a virtual video buffer (see
VIDEO_8514_XGA_IOTRAP below). Use this setting if you use the
VIDEO_ONDEMAND_MEMORY DOS setting, because concurrent buffer
allocation and screen switching can make a screen go black.
Drawbacks: When used indiscriminately, this feature may cause unnecessary and
time-consuming screen redrawing. For standard MONO/CGA/EGA/VGA
video modes, the OS/2 video driver should be able to restore
application screens without assistance.
Default: Off. For standard hardware and standard video modes, this feature
is not necessary.
Settable: At any time. This allows the user to experiment in the event of a
compatibility problem.
Examples: Windows 2.x and 3.x understand this notification and will redraw
themselves accordingly. For WIN-OS/2 sessions, set this setting
on.
VIDEO_WINDOW_REFRESH
Function: Adjusts the window update frequency for a given VDM.
Advantages: For applications (particularly graphics) that write frequently to
video memory, this value can be increased to reduce time spent
updating the window and provide more processor time for the
application.
Note: This has no effect on updates based on other events such
as keyboard input or synchronous scrolling operations or
any video events other than refresh.
Drawbacks: A large refresh period can make an application unusable (or at
least, very hard to use).
Default: 0.1 seconds. This has been found to yield the best overall
performance.
Settable: At any time, in increments of 0.1 seconds. This allows for
experimentation. The range is from 0.1 to 60.0 seconds.
Examples: This setting affects normal TTY-style output. Compare a DIR or
TYPE operation before and after altering this setting.
VIDEO_8514_XGA_IOTRAP
Function: When set OFF, unrestricted access to 8514/A display adapter
hardware. Note that this setting is only available for systems
with 8514/A display adapters installed.
Advantages: Achieves higher performance for 8514/A applications and eliminates
the overhead of the 1MB 8514/A virtual video buffer normally
allocated for each VDM when set OFF.
Drawbacks: Screen-switching away from the application will result in
immediate freezing of the application, and the system may not be
able to reliably switch back; that is, the screen image may not be
correct. This may be overcome by setting
VIDEO_SWITCH_NOTIFICATION on, which notifies applications to
redraw their own screen images. Note however, that not all
applications will take advantage of the notification.
Note: An application with this setting enabled may not be run in
windowed mode, or copied to the clipboard, because there
is no complete information about its state.
Default: Off.
Settable: At VDM creation only.
Examples: When executing Windows 3.0 with the 8514/A display driver, certain
operations such as painting dithered backgrounds will run
significantly faster.
ΓòÉΓòÉΓòÉ 21.2.12. XMS ΓòÉΓòÉΓòÉ
XMS_HANDLES
Function: Specifies the number of XMS extended memory block (EMB) handles.
A handle is used with each XMS EMB. This number is required
because XMS pre-allocates all the handle space to be compatible
with XMS specifications. This setting should be used only if an
application uses a large number of handles.
Advantages: This setting restricts the number of block handles, thereby
reducing memory consumption.
Drawbacks: Specifying a large number of handles will increase memory
consumption and adversely impact system performance.
Default: The default value of this setting is 32.
Settable: At VDM creation only.
Examples: None.
XMS_MEMORY_LIMIT
Function: Specifies the per VDM XMS memory limit. This setting should be
used under the same guidelines as described above in XMS_HANDLES.
The global limit is the overall maximum XMS memory consumption,
and the per-VDM limit is the maximum allowed for each VDM. See
also Extended Memory Manager (Initialization) for defining global
and per-VDM limit in the CONFIG.SYS.
Drawbacks: Specifying a large number may adversely affect system performance.
Default: The default value is 2MB per-VDM.
Settable: At VDM creation only.
Examples: 4096; this specifies a limit for each VDM.
XMS_MINIMUM_HMA
Function: Specifies the minimum HMA memory request allowed. This setting
allows the user to fine tune the XMS. HMA is slightly less than
64KB in size. Only one request can be fulfilled from this area at
a time.
Advantages: If a TSR takes a very small allocation, then it will waste this
area for other applications. In such cases a limit can be
specified.
Default: The default value is zero, which means all the requests will be
allowed.
Settable: At VDM creation only.
Examples: 2048; this sets a limit of 2KB.
ΓòÉΓòÉΓòÉ 21.2.13. WIN-OS/2 ΓòÉΓòÉΓòÉ
The following setting is available when the selected virtual DOS machine type
is WIN-OS/2 full screen or WIN-OS/2 window:
WIN_RUNMODE
Function: OS/2 V2.0 can use two modes to run Windows programs:
Real
Standard
Real mode is the mode that Windows 2.0 programs run in. Windows
3.0 programs usually run in standard mode. For a detailed
discussion, see Windows Applications. Use this setting to specify
WIN-OS/2 mode for your session.
Default: AUTO (the system selects standard mode as long as it has the OS/2
V2.0 Virtual Device Drivers required to support a standard mode
WIN-OS/2 session in the OS/2 V2.0 operating system). AUTO enables
the system to automatically choose between real and standard.
Settable: At VDM creation only.
Examples: None.
ΓòÉΓòÉΓòÉ 21.3. Summary ΓòÉΓòÉΓòÉ
The DOS Settings feature of MVDM provides the user with the ability to
selectively configure and tune the virtual DOS machine environment to meet the
requirements of particular applications. Since some DOS applications require
certain features while other applications operate better without them, a VDM
may be individually configured to provide the optimum execution environment for
the application which will run within it.
DOS settings may be set by the user when adding an application to a group on
the desktop, or in certain cases, during execution while an application is
running within the virtual DOS machine. In the case where a VDM is created by
another process using a DosStartSession() function call, a buffer may be
provided containing the required DOS settings and their values.
ΓòÉΓòÉΓòÉ 22. Virtual Machine Boot ΓòÉΓòÉΓòÉ
An important goal of OS/2 Version 2.0 is the ability to run past, current, and
future DOS programs; indeed most DOS applications available today run unchanged
in the MVDM environment.
However, it should be remembered that the "DOS" which runs in this case is
highly optimized for (and specific to) an OS/2 Version 2.0 virtual 8086
machine. Because of this, there are fundamental internal differences between
the DOS Emulation provided under OS/2 Version 2.0 and "real" DOS. Two problems
may therefore arise:
1. Some programs may depend on specific DOS features such as internal control
blocks, LAN Redirector hooks, or even undocumented functions, which are not
present in MVDM's DOS Emulation.
2. Only DOS character device drivers can be loaded in MVDM's DOS Emulation.
The user may own a block device (such as a special disk or tape drive) for
which no OS/2 driver is available. (A block device is one accessed via a
drive letter, such as E:).
Virtual Machine Boot (VMB) solves both these problems. It allows the user to
boot "off-the-shelf" DOS and use block device drivers in an OS/2 Version 2.0
virtual DOS machine, ensuring greater compatibility for DOS applications.
Another possible use of VMB is to run DOS of a different National Language to
that of OS/2 Version 2.0 itself. This may be useful in a multilingual
environment.
ΓòÉΓòÉΓòÉ 22.1. VMB Environment ΓòÉΓòÉΓòÉ
The 80386 processor and VDM component of OS/2 Version 2.0 together emulate a
8086 processor, keyboard, display, BIOS and other supporting hardware; in
effect, a complete "virtual Personal Computer". It is therefore possible for
"real" DOS to be loaded in a VDM session. Control is passed to the boot
record (the first sector) of the DOS system diskette, which in turn loads and
initializes the rest of the DOS kernel, just as it does when booting on a
physical PC.
Indeed, the VDM environment is so similar to a real PC environment that VMB can
actually support any 8086 operating system kernel, such as Digital Research's
DR-DOS** and CP/M**, Microsoft MS-DOS**, or even a PS/2 reference diskette (but
do not attempt to run diagnostics or change the configuration from a VDM; the
results are unpredictable). However, since the purpose of VMB is to run current
DOS applications, formal IBM support is announced for IBM PC DOS 3.x, 4.0, and
5.0 only.
Table "Free Base Memory" shows the amount of available base memory for MVDM DOS
Emulation, DOS in a VMB session, and native DOS. These figures show the amount
of memory available after loading the operating system and mouse, EMS and XMS
support.
A VDM using VMB is similar in function to any other virtual DOS machine.
Multiple VDMs may be started and operated concurrently using Virtual Machine
Boot. Each runs in its own virtual 8086 machine; access to hardware and other
system resources is managed by MVDM and the underlying OS/2 Version 2.0
operating system.
ΓòÉΓòÉΓòÉ 22.2. Configuring Virtual Machine Boot ΓòÉΓòÉΓòÉ
The DOS operating system loaded into a VDM by VMB may be:
1. An actual DOS system diskette
2. An image of a DOS system diskette saved to hard disk
3. A DOS partition on hard disk.
For any of the alternatives, we need to do the following:
1. Set up the start-up batch file AUTOEXEC.BAT
2. Set up the configuration file CONFIG.SYS
3. Provide OS/2 V2.0 with the real DOS to boot.
ΓòÉΓòÉΓòÉ 22.2.1. Preparing AUTOEXEC.BAT and CONFIG.SYS ΓòÉΓòÉΓòÉ
The AUTOEXEC.BAT and CONFIG.SYS that will be used by the VMB at initialization
are not the ones found in the root directory of the OS/2 V2.0 boot drive. Table
"Location of AUTOEXEC.BAT and CONFIG.SYS" explains which AUTOEXEC.BAT and
CONFIG.SYS will be used for the different DOS session types under OS/2 V2.0.
CONFIG.SYS requires special attention for the following reasons:
1. Write access to the hard disk is denied the Virtual Machine Boot session to
preserve system integrity, since the real DOS is unaware of OS/2 V2.0 and
the other applications running.
The OS/2 device driver FSFILTER.SYS is provided to address the above
problem.
2. HPFS partitions are not visible to the real DOS running.
FSFILTER.SYS allows the DOS in the Virtual Machine Boot to access HPFS
files.
3. OS/2 V2.0 provides its own mouse, EMS and XMS to each virtual DOS machine,
so there is no need to load the equivalent drivers available for native
DOS. Those provided with the real DOS should not be used.
However, some DOS programs test for the presence of these drivers. OS/2
V2.0 provides the equivalent "stub" drivers to satisfy these programs that
the services actually are available.
The following types of device drivers should also be omitted from
CONFIG.SYS:
Disk cache
Print spooler
RAM disk
These facilities are already provided by OS/2 Version 2.0 and may be
accessed by virtual DOS machines and VMB sessions; including them with DOS
leads to unnecessary duplication, and may impact overall performance.
When the Virtual Machine Boot is started from a diskette image on the hard
disk, the real DOS sees the diskette image as drive A:. The real drive A:
cannot be accessed. OS/2 V2.0 provides a DOS program, FSACCESS.EXE, that can be
used from the DOS command prompt or inserted in AUTOEXEC.BAT to overcome this
problem.
We will cover each of these special requirements in detail in the following
sections.
Drive Letter Allocation and Access
Drive letter allocation and access is one of the more complex areas of VMB,
mainly due to the automatic drive letter allocation performed by DOS, and the
limitations of earlier DOS versions. The following possible areas of confusion
may arise for the user:
If DOS is booted from an image file, it sees this image file as its A: drive.
This prevents access to the real A: diskette drive. Attempts to write to the
apparent A: drive will fail.
Unlike the DOS Emulation kernel provided by OS/2 Version 2.0, the "real" DOS
booted by VMB cannot see or access an HPFS partition on the hard disk.
A DOS 3.x VDM cannot see a large (>32MB) FAT partition on the fixed disk, or
FAT partitions beyond an HPFS partition on the disk.
Even if the booted DOS can otherwise see the hard disk partition, it is only
given read access. Attempts to write will fail with simulated errors such as
General failure writing drive C:". The user might mistake this for a genuine
hardware fault.
If the booted DOS loads a block device-driver, the allocated drive letter may
be the same as that of a different device outside this VDM, thereby
preventing access to that device from within the VDM.
The results could be somewhat disorienting for the user. To help resolve these
issues, two utilities FSFILTER and FSACCESS are provided with OS/2 Version 2.0.
It is recommended that disk volumes should always be given a meaningful name,
either when formatting or later using the LABEL command. This name will remain
constant regardless of drive letter allocation, and will aid in identifying a
particular volume, even if the assigned drive letter is different. FSFILTER
FSFILTER.SYS is a device driver which manages DOS VDM access to OS/2 disks.
FSFILTER.SYS should be copied from the \OS2\MDOS directory to the DOS diskette,
and the following statement added to the CONFIG.SYS file of the bootable DOS
diskette or image.
device=a:fsfilter.sys
This statement should precede any DEVICE= statements which load block device
drivers.
Note that FSFILTER.SYS gives DOS full access to all OS/2 partitions, regardless
of their file system type or partition size.
This is an important and somewhat surprising point. For example, DOS 3.3 (in a
VDM) has no problem accessing a 300MB HPFS partition, once FSFILTER is loaded.
I/O calls within the DOS virtual machine are passed transparently to OS/2
Version 2.0. DOS itself is unaware of the underlying file system. DOS can read,
write and modify files on the hard disk, and for most configurations the drive
letter mapping within the VMB session will match those of OS/2 Version 2.0.
The FSFILTER device driver occupies approximately 11KB of memory. It can be
loaded into high memory under DOS 5.0 by specifying the command DEVICEHIGH =
FSFILTER.SYS in CONFIG.SYS.
The users should also specify the path to COMMAND.COM in the SHELL= statement
of CONFIG.SYS. For example, if DOS files have been copied to C:\DOS, the
CONFIG.SYS file on a diskette intended for VMB should contain the following
statement:
SHELL=c:\DOS\COMMAND.COM c:\dos /p
The first parameter specifies the command processor to be loaded. The second
parameter specifies the reload path (that is, the COMSPEC path). This is
preferable to a SET COMSPEC = command in AUTOEXEC.BAT.
Each block device driver loaded in DOS CONFIG.SYS is allocated the next free
OS/2 letter excluding LAN drives. This can result in a drive letter clash. An
example may illustrate the point. OS/2 drives are:
A: Diskette drive 0
B: Diskette drive 1
C: Hard disk
D: External diskette drive
E: Remote LAN drive on a server
FSFILTER will ensure that a booted DOS sees these drives by the same letter.
The booted DOS has the same access to the external diskette drive and LAN
resources as does OS/2 itself. This is true whether the VMB session is started
before or after user logon to the network, when remote drive letters are
assigned.
However, a block device driver in a VMB session will also initialize as E:, so
LAN drive access is lost. To remedy this, issue an "fsaccess f=e" command. The
LAN drive is now accessible as F: within the DOS session.
Note that even when FSFILTER is loaded, the following restrictions still apply:
A VMB session cannot see HPFS files or directories which have:
- Long file names (9 or more characters)
- Invalid FAT characters (for example, plus, comma, blank)
- Multiple dot separators.
HPFS file names containing lowercase letters are folded to uppercase.
PC DOS commands which require low-level disk access will fail. These
include:
- CHKDSK
- SYS
- UNDELETE
- FORMAT
- UNFORMAT
- MIRROR.
In such cases OS/2 Version 2.0 will simulate a disk error condition. DOS may
interpret this as a hardware fault, or report that the command is not
supported on a network or assigned drive.
FSACCESS
FSACCESS.EXE is a utility supplied with OS/2 Version 2.0 but intended to run in
a VMB session. It cooperates with FSFILTER to manage drive letters within the
VMB session. This serves three purposes:
1. Drives may be registered for filtering.
2. The drive letter for a device can be changed, giving consistency across
sessions.
3. Letters can be removed in order to hide the OS/2 device from the VMB
session.
The syntax of the FSACCESS command is:
FSACCESS ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
Γö£ΓöÇΓö¼ΓöÇΓöÇΓöÇΓö¼ΓöÇ DOSletter ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ Γöé
Γöé Γöö ! Γöÿ Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ DOSletter - DOSletter ΓöÇΓöÇΓöñ
Γöé Γöé
ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ DOSletter = OS2drive ΓöÇΓöÇΓöÿ
FSACCESS Lists the current drive mapping. For example:
Local C: is mapped to OS/2 C:
Local D: is mapped to OS/2 D:
Local E: is mapped to OS/2 K:
FSACCESS F: Registers DOS letter F: for filtering. References to F:
will be sent to OS/2 Version 2.0.
FSACCESS !F: De-registers DOS letter F: from filtering.
FSACCESS F:-H: Registers DOS letters F: through H: for filtering.
FSACCESS M:=C: Routes requests for DOS letter M: to OS/2 drive C:
Parameters can be combined on a single command line, and the colon is optional.
When booting from an image file, it is often desirable to issue the command
FSACCESS A: in order to access the A: diskette drive. This will remove access
to the image file, so the booted DOS will be unable to reload its COMMAND.COM
when necessary. It may be useful to copy all the DOS files to a subdirectory
on hard disk, ensuring the PATH and COMSPEC point there.
An alternative is to access the diskette drive via a different letter. For
example, a user may issue the command FSACCESS G:=A, then use G: to access the
real A: drive. The image file remains as A:, avoiding PATH and COMSPEC
problems.
ΓòÉΓòÉΓòÉ 22.2.2. Mouse, EMS and XMS Support ΓòÉΓòÉΓòÉ
The booted DOS in a VMB session receives XMS (HIMEM), EMS, DPMI and mouse
support services from its VDM environment (assuming the virtual DOS machine has
default DOS settings). DOS should not therefore load its own HIMEM, EMS or
mouse drivers; indeed they may cause errors in the VDM.
DOS programs call these services via appropriate API register parameters and a
designated interrupt:
Mouse INT 33h
XMS INT 2Fh (multiplex)
EMS INT 67h
These interrupts are trapped by the VDM environment, routed outside the virtual
machine and handled by the OS/2 Version 2.0 operating system itself. This may
present a problem for certain programs which first test for the presence of
such services by issuing an OPEN command to the associated device driver, or
which check that a valid interrupt handler is referenced by the Interrupt
Vector Table. When a VMB session is started, these device driver names are not
present, and the interrupt vectors point to null handlers. The application will
therefore assume that the required services are not useable.
In order to avoid this problem, OS/2 Version 2.0 provides three alternative
"stub" drivers:
MOUSE.COM
HIMEM.SYS
EMM386.SYS
These stub drivers are very small (and use minimal memory when loaded) but
satisfy programs which depend on drivers with such names being present. They
respond to OPEN commands, and also set handler addresses in the Interrupt
Vector Table, thereby satisfying applications which check for the presence of
the device drivers in either of these ways.
The user must load these OS/2 files rather than any similarly named files which
may be shipped with DOS or applications, such as:
DOS 4.0 XMAEM.SYS, XMA2EMS.SYS
DOS 5.0 HIMEM.SYS, EMM386.EXE, MOUSE.COM
DR DOS HIDOS.SYS, EMM386.SYS, EMMXMA.SYS
Other MOUSE.SYS
There are two ways to achieve this. Assuming OS/2 Version 2.0 is installed on
drive E:
1. Copy the above OS/2 files from E:\OS2\MDOS to the DOS diskette, and edit
CONFIG.SYS and AUTOEXEC.BAT accordingly to load these files from the A:
drive. VMDISK may then be run to create a bootable image if desired.
device=a:himem.sys
device=a:emm386.sys
device=a:fsfilter.sys
This method should be used if FSFILTER will be loaded into high memory
using DOS 5.0:
device=a:himem.sys
device=a:emm386.sys
devicehigh=a:fsfilter.sys
2. Edit CONFIG.SYS and AUTOEXEC.BAT to load these files directly from
E:\OS2\MDOS. (FSFILTER.SYS must be loaded first if the OS/2 drive would
otherwise be inaccessible to the booted DOS).
device=a:fsfilter.sys
device=e:\os2\mdos\himem.sys
device=e:\os2\mdos\emm386.sys
The second method has one notable advantage; if and when Corrective Service
is applied to the OS/2 Version 2.0 system, and HIMEM, EMM386 or MOUSE are
updated, it is not necessary to update your DOS diskettes and recreate
image files. FSFILTER itself will have to be updated manually (unless the
OS/2 Version 2.0 partition is directly accessible to DOS and FSFILTER is
also loaded from here).
Note that EMS memory size and frame location are determined by DOS Settings,
and not by parameters on the DEVICE= statement for EMM386.SYS. It is
recommended that EMS and XMS support should not be configured unless required
by the application running in the VMB session, since this can impact overall
system performance.
We now look at the three different ways to prepare the real DOS to be booted in
the VMB.
ΓòÉΓòÉΓòÉ 22.2.3. Booting from Diskette ΓòÉΓòÉΓòÉ
The user may load a specific version of DOS or an equivalent 8086 operating
system into a VMB session directly from a bootable diskette, by specifying A:
at the value for DOS_STARTUP_DRIVE under DOS Settings. Note that this may
affect the way in which applications in the VMB session may access the diskette
drives; see Preparing AUTOEXEC.BAT and CONFIG.SYS (Drive Letter Allocation and
Access) for further discussion.
Here is an example using DOS 5:
1. From a system running DOS 5, format a diskette with the /s option.
2. Copy FSFILTER.SYS from the OS/2 V2.0 subdirectory \OS2\MDOS onto the
diskette.
3. Create CONFIG.SYS and AUTOEXEC.BAT on the diskette.
A sample CONFIG.SYS to use is as follows (OS/2 V2.0 is installed in E:
drive in this example):
REM Load FSFILTER driver
DEVICE=A:FSFILTER.SYS
REM load the stub XMS and EMS memory drivers from OS2.
DEVICE=E:\OS2\MDOS\HIMEM.SYS
DEVICE=E:\OS2\MDOS\EMM386.SYS
A sample AUTOEXEC.BAT to use is as follows:
@ECHO OFF
PROMPT $P$G
REM set the path to where the DOS files were copied
SET PATH=C:\DOS
SET COMSPEC=C:\DOS\COMMAND.COM
REM load the stub mouse driver from OS/2 V2.0
LH E:\OS2\MDOS\MOUSE
4. Create a DOS subdirectory on the hard disk and copy the real DOS files
there.
5. Insert the DOS boot diskette in the A: drive.
6. Locate the Command Prompts folder. It is usually a folder in the OS/2
System icon on the Workplace Shell.
7. Open the Command Prompts folder.
8. Locate the DOS from drive A: icon and double click on it.
The DOS_STARTUP_DRIVE setting of this icon is pre-set to the value A:.
The user cannot specify "B:" or an external diskette drive as the startup
drive. There may be situations where it is desired to boot from a 5╨╝ inch
diskette; typically the B: drive on PS/2 systems. One way to do this is by
creating an image of the diskette, then booting this image (See Booting from
Diskette Image).
If a 5╨╝ inch diskette must be booted directly for some reason, this is possible
if drive remapping is supported by the system (such as a PS/2 Model 57, 90 or
95). Normally A: is Drive 0 (3╨╗ inch), and B: is Drive 1 (5╨╝ inch, if fitted).
To change this, run "Set Startup Sequence" from the reference diskette, and
ensure Drive 1 appears before Drive 0. Then the 5╨╝ inch drive will become the
A: drive.
Some 5╨╝ inch drives (such as the IBM External 1.2MB drive and associated
adapter) require a device driver, and are accessed as D: or higher. They cannot
be specified as a startup drive, nor can they be readdressed as A:, but can be
the source drive when creating a bootable image file.
ΓòÉΓòÉΓòÉ 22.2.4. Booting from Diskette Image ΓòÉΓòÉΓòÉ
A user may also load a specific version of DOS or another 8086 operating system
into a VMB session from a diskette image stored on the hard disk. This is
achieved by specifying the fully qualified filename of the diskette image file
as the value for DOS_STARTUP_DRIVE under DOS Settings.
Here is an example using the DOS 5 boot diskette created in the Booting from
Diskette above:
1. Edit CONFIG.SYS on the diskette and add the following statement:
E:\OS2\MDOS\FSACCESS G: = A:
2. Create the image of the boot diskette on the hard disk.
Images may be created using the VMDISK utility supplied with OS/2 Version
2.0. The syntax of the VMDISK command is:
vmdisk <source drive> <image filename>
For example:
VMDISK a: c:\bootimg\dos50.vmb
The image file is a complete binary "dump" of the diskette, consisting of a
short header record followed by the diskette's boot sector, FAT(s), and all
data clusters. Its file size corresponds to the size of the source
diskette, regardless of the amount of space actually used on the source
diskette. No compression of the image is performed.
The diskette must have a standard DOS format (FAT, 512 byte sectors). It
is not possible to create, then boot, an image of a copy-protected diskette
which has a non-DOS format. It may be possible to boot such a diskette
directly in a VDM.
The VMDISK utility can run under either DOS or OS/2, and supports all 3╨╗
inch (720KB, 1.44MB and 2.88MB) and 5╨╝ inch (360KB and 1.2MB) source
diskette formats.
Note that VMDISK works one way only; it is not possible to create a
diskette from a VMDISK image.
3. Proceed to add an icon to the OS/2 V2.0 Workplace Shell to launch VMB.
Refer to Putting the Virtual Machine Boot Session in the Workplace Shell on
customizing the Virtual Machine Boot, in particular the DOS_STARTUP_DRIVE
setting.
ΓòÉΓòÉΓòÉ 22.2.5. Booting from a DOS Partition ΓòÉΓòÉΓòÉ
If VMB will be used regularly, the most convenient method may be to do so from
a DOS partition on hard disk, rather than via diskettes or diskette images.
This may be achieved by specifying C: as the value for DOS_STARTUP_DRIVE under
DOS Settings. Loading DOS from a DOS partition proceeds more quickly and offers
the user a more "familiar" working environment. It is also easier to apply DOS
Corrective Service to a disk partition than to diskettes or images.
Note that this method is different from that of a single hard disk partition
with the Dual Boot feature available under previous versions of OS/2.
In order to load DOS from a DOS partition, the following requirements must be
satisfied:
1. Boot Manager must be installed
2. DOS must be installed on a primary partition on the first hard disk in the
machine
3. OS/2 Version 2.0 must be installed on an extended partition on the first
fixed disk, or on another hard disk.
This will require re-partitioning on single-drive systems if the disk initially
contains DOS alone, or earlier versions of OS/2.
Loading DOS from a DOS partition presents one significant problem. The DOS
partition is itself bootable directly via Boot Manager, should the user so
choose, and there may a requirement to boot this DOS partition directly on
occasions. OS/2 Version 2.0 provides stub device drivers for functions such as
EMS, XMS and mouse support in the VMB session, and these must be used in place
of the normal DOS device drivers when DOS is booted in a VMB session. Since the
same CONFIG.SYS and AUTOEXEC.BAT in the C: root directory is used, the
question arises of which drivers should be specified for functions such as EMS
and XMS support:
If the partition is booted via VMB, the DOS drivers are inappropriate
If the partition is booted directly via Boot Manager, the OS/2 stub drivers
are inappropriate.
It might appear that the user would have to maintain multiple configuration
files and rename or copy them depending upon whether the partition was being
booted into a VMB session or directly from Boot Manager. This is clearly
unsatisfactory. Fortunately there is a solution which avoids this. The key is
to specify both sets of drivers, in the correct order, in CONFIG.SYS and
AUTOEXEC.BAT.
The following example assumes:
DOS 5.0 is installed on the C: Primary partition
OS/2 Version 2.0 is installed on the E: Extended partition
CONFIG.SYS on the C: drive contains:
device=c:\dos\setver.exe
device=c:\dos\himem.sys
device=c:\dos\emm386.exe noems
device=e:\os2\mdos\himem.sys
device=e:\os2\mdos\emm386.sys
dos=high,umb
... etc ...
When this file is processed in an OS/2 VMB session, the DOS HIMEM load fails as
it sees no available extended memory. EMM386.EXE cannot load as it sees
protect-mode software already running. Then, the OS/2 HIMEM and EMM386 stub
device drivers load as normal.
When this file is processed as part of a native DOS boot, the DOS HIMEM and
EMM386 load as normal, but the OS/2 stub device drivers detect that they are
not running under OS/2 and do not load themselves.
A similar technique works for mouse support in AUTOEXEC.BAT:
@echo off
prompt $p$g
set path=c:\dos
LH e:\os2\mdos\mouse
LH c:\dos\mouse
... etc ...
Note that here the OS/2 driver is listed first. When this file is processed in
an OS/2 VMB session, the OS/2 stub loads first. The DOS mouse driver sees that
a mouse driver is already present, and hence it does not install itself. When
booting DOS natively, the OS/2 mouse stub device driver detects that it is not
running under OS/2, and does not load itself. The DOS mouse driver then loads
as normal.
ΓòÉΓòÉΓòÉ 22.2.6. Putting the Virtual Machine Boot Session in the Workplace Shell ΓòÉΓòÉΓòÉ
We are now ready to put the VMB session as an object on the OS/2 Version 2.0
Workplace Shell desktop.
1. Locate the Templates folder. It is usually an icon on the Workplace Shell.
2. Open the Templates folder.
3. Locate the Program icon template.
4. Drag the Program icon template on to the desktop. This will cause the
Program Settings notebook to appear.
5. Enter an asterisk "*" in the Path and file name field.
See the example as shown in Figure "The Program Page of the Settings
Notebook for a VMB".
6. Select the Session notebook tab.
The Session notebook allows the user to specify the session type and DOS
Settings for the VMB session.
7. Select either DOS full screen or DOS window and then select the DOS
Settings... button.
8. Select the DOS_STARTUP_DRIVE list item.
The difference between a VMB session and a "normal" VDM is that the DOS
Settings value of DOS_STARTUP_DRIVE is set. This setting determines the
location of the DOS kernel to be booted. By default, MVDM's DOS Emulation
is loaded. However, the user may specify a location from which to load
DOS, in which case the version of DOS residing at that location is loaded.
Figure "DOS Settings - DOS_STARTUP_DRIVE"
Example values for DOS startup drive are:
DOS Start up setting Meaning
a: Boot using the diskette in drive A:
c:\bootimg\dos50.vmb Boot using the specified DOS image file
c: Boot using the primary partition of the C:
drive
The following restrictions apply:
A second diskette drive (B:) or hard disk (D:) cannot be specified as the
startup drive.
To boot DOS from the C: partition, Boot Manager must be installed, and
OS/2 Version 2.0 must reside in an extended partition on the first hard
disk, or on another hard disk. See Booting from a DOS Partition.
9. Select the Save button to save the DOS settings and return.
10. Select the General notebook tab.
11. Change the Title field to your own name describing the new object.
12. Close the Settings notebook by double clicking on the system menu in the
upper left corner of the window.
Other DOS Settings
DOS settings which control the VDM hardware environment are applicable to the
VMB session and operate in the same way as for a DOS Emulation windowed or
full-screen session. Those which modify the virtual DOS environment are
ignored; the equivalent settings are instead determined by the CONFIG.SYS file
of the booted DOS kernel. Ignored settings include:
DOS_BREAK
DOS_DEVICES
DOS_UMB
DOS_SHELL
DOS_HIGH
DOS_LASTDRIVE
DOS_VERSION
The FCB limit is the lesser of either the booted DOS, or OS/2 Version 2.0
CONFIG.SYS value. The VMB session will by default have 640KB of real memory,
mou se support, 2MB Expanded (EMS) memory, 2MB DPMI, and 2MB XMS memory.
Booting from an OS/2 V2.0 Program
By using DosStartSession it is possible to start a VMB session from an OS/2
V2.0 program. For more details see the following sample which shows how to boot
from the disk drive A:. Of course, by changing startd.Environment, this sample
can also be used to start a VMB from another hard disk partition or a boot
image file from your hard disk.
Figure "VMB from an OS/2 2.0 Program"
ΓòÉΓòÉΓòÉ 22.3. Managing the VMB Session ΓòÉΓòÉΓòÉ
The user may interact with a VMB session in a similar way to any other virtual
DOS machine. The session may be scaled, minimized, maximized and switched
between windowed and full-screen mode, and is subject to the same graphics mode
limitations when windowed. However, a VMB session cannot be ended by typing
EXIT at its command prompt. The session can only be closed from its system icon
or the Window List.
Note that Ctrl-Alt-Del will reboot the entire OS/2 Version 2.0 operating
system, not just the foreground virtual machine session.
ΓòÉΓòÉΓòÉ 22.4. VMB Limitations ΓòÉΓòÉΓòÉ
VMB does not support:
VCPI and other non-DPMI DOS extenders
I/O to disk which bypasses the file system
Feature adapter sharing without a virtual device driver
Real-time or timing-critical DOS applications
Some copy-protection schemes.
These limitations arise in the most part from the limitations of the MVDM
environment, which are imposed in order to protect overall system integrity.
ΓòÉΓòÉΓòÉ 22.5. Summary ΓòÉΓòÉΓòÉ
The DOS Emulation kernel which is normally used to support the execution of DOS
applications in a VDM is exactly what its name implies; an emulation of the DOS
operating system and associated services. While this suffices for most DOS
applications, certain applications exist which take advantage of unique and/or
undocumented features which exist only in specific versions of DOS.
To allow such applications to be successfully run under OS/2 Version 2.0, the
VMB (Virtual Machine Boot) feature is provided. This feature allows a "real"
DOS operating system, or indeed most other 8086 operating systems, to be booted
in a virtual DOS machine. The operating system may be booted from either a
diskette in drive A:, a diskette image on a hard disk, or a partition on a hard
disk.
Applications which run using Virtual Machine Boot may take advantage of the
EMS, XMS and mouse support provided to virtual DOS machines by OS/2 Version
2.0. This support is provided through stub device drivers supplied with OS/2
Version 2.0; these should be used in preference to the device drivers supplied
with the operating system or applications.
ΓòÉΓòÉΓòÉ 23. Running Personal Communications/3270 Version 2 for Windows ΓòÉΓòÉΓòÉ
Personal Communications 3270 Version 2 for Windows offers a high-function 3270
emulator for the Windows environment. It supports a variety of host
connections, including DFT, LAN via IEEE 802.2 protocol, LAN via NETBIOS and
SDLC. It is possible to run this 3270 emulator in an OS/2 V2.0 "seamless"
WIN-OS/2 VDM.
Figure "Personal Communications/3270 for Windows running under OS/2 V2.0"
We will describe below the procedure for installing and running Personal
Communications/3270 for Windows for a host connection via a LAN using the IEEE
802.2 protocol. We will also describe how to install any Corrective Service
Diskettes for this emulator package.
ΓòÉΓòÉΓòÉ 23.1. Installing PC/3270 under WIN-OS/2 ΓòÉΓòÉΓòÉ
You must have installed OS/2 Version 2.0, including the WIN-OS/2 support in
order for this to work.
1. From the OS/2 Desktop:
Open the OS/2 System Folder
Open the Command Prompts Folder
Select WIN-OS/2 full-screen
This will start up the WIN-OS/2 environment. You will get the WIN-OS/2
Program Manager screen, just as you would if you had started Windows
natively. From here the installation of the product and the corrective
service is just as it would be under Windows.
2. From the Program Manager Menu Bar:
Select File
Select Run
Insert PC/3270 Windows Diskette 1 in the A: drive
On the command line enter: A:INSTALL
Now you will fill out the installation and configuration screens just as
you would have installing PC/3270 directly under Windows.
In this sample installation we will use the following throughout this part
of the document:
C: is the drive where OS/2 Version 2.0 is installed
C:\PC3270W is the drive and subdirectory where PC/3270 is installed
PC3270W is the name of the configuration file we create
3. Select OK on the PC/3270 Installation logo screen.
4. On the Installation Start screen:
Select Create New Configuration file
Select OK
5. On the Customize Configuration screen:
Select Connection type.
Our sample will use DFT, but you can select the one you want. We have
tested DFT, LAN 802.2, SDLC and IIN Async at 9600bps.
If you select other than DFT, you will need to configure your
communications parameters before you can continue. You will need to refer
to other documentation for this configuration information.
Select 2 for Number of Host sessions.
Yours will probably vary, but start simple.
Select OK.
6. On the Installation End screen:
Enter a Configuration File name of PC3270W
Select Copy Necessary Files only (or if you want: All files)
Enter Drive and Directory of C:\PC3270W\
Select OK
(These are the defaults)
7. On the Add PC/3720 to Program Manager screen:
Select WIN-OS/2 Main in the to Group section
Select OK
There will be three more pop-up screens with information about the
installation completion, just select OK on each of them to complete the
installation.
Note: If you are configuring 802.2 LAN installations, you will probably get a
PCS121 error at the completion of the install. This is because the
install process is trying to update the CONFIG.SYS file and is having
problems. Just continue with installing the corrective service diskette
in the next section.
ΓòÉΓòÉΓòÉ 23.1.1. Installing the Corrective Service Diskettes ΓòÉΓòÉΓòÉ
Now install the PC/3270 Corrective Service Diskette(s).
1. From the Program Manager Menu Bar:
Select File
Select Run
Insert PC/3270 Corrective Service Diskette in the A: drive
On the command line enter: A:INSTCSD
You will get a pop-up telling you that the CSD will replace files in the
C:\PC3270W\ directory, select OK to continue the update.
When the CSD installation is complete you will get a pop-up telling you
that it is complete, select OK.
2. Close the WIN-OS/2 full-screen session.
3. On the Program Manager menu bar:
Select the Title Bar Icon (upper left corner)
Select Close
Select OK on the Exit WIN-OS/2 pop-up
Be sure to read the README.TXT file on the CSD diskette. It will have
additional information about the corrective service that might apply to your
installation.
ΓòÉΓòÉΓòÉ 23.2. Creating a PC/3270 Batch File for OS/2 V2.0 ΓòÉΓòÉΓòÉ
You now need to check the WIN-OS/2 initialization file and create a batch file
for PC/3270. This batch file will be used in the setup of the PC/3270 desktop
object later.
ΓòÉΓòÉΓòÉ 23.2.1. Checking the WIN-OS/2 Initialization File ΓòÉΓòÉΓòÉ
The PC/3270 Windows installation should have updated the WIN.INI file. Check
the C:\OS2\MDOS\WINOS2\WIN.INI file for the following:
.
.
.
[PCS3270]
DIR=C:\PC3270W\
.
.
.
ΓòÉΓòÉΓòÉ 23.2.2. Creating the PC/3270-OS/2 Batch File ΓòÉΓòÉΓòÉ
We will now create a new batch file that can be used to start any of the
various PC/3270 configurations. Depending on the communications link you are
using, you may need to execute a PC3270W.BAT file to invoke the WIN-OS/2
environment. The other types of links invoke WIN-OS/2 directly. This batch file
will check for the presence of PC3270W.BAT and use it if it exists.
Create the file C:\PC3270W\PC3270WO.BAT
@ECHO OFF
IF EXIST PC3270W.BAT GOTO TSR
WINOS2.COM PCS3270.EXE
GOTO END
:TSR
PC3270W.BAT PCS3270.EXE
:END
ΓòÉΓòÉΓòÉ 23.2.3. Communications Manager Mouse Support (CMMOUSE) ΓòÉΓòÉΓòÉ
IBM CM Mouse Support (product 5799-PNJ, RPQ P85221) provides advanced mouse
support for Personal Communications/3270 in the Windows environment. CM Mouse
must be started in the same VDM (Virtual DOS Machine) as PC/3270. To achieve
this, the batch files used to start Windows and PC/3270 must be modified as
described in the following sections.
When PC/3270 is modified as described below, CM Mouse will automatically be
started when you start PC/3270. CM Mouse may display a "waiting for PC/3270 to
start..." message since both CM Mouse and PC/3270 will begin running at the
same time. After PC/3270 starts and the host sessions are established, CM
Mouse will automatically continue its initialization (the message "reading BDF
files..." will be displayed). It is suggested that you enable the automatic
startup feature of PC/3270 so that the host sessions are established
automatically.
Installing CM Mouse
Install CM Mouse from any OS/2 or DOS command line as described in the CM Mouse
documentation. Note that you must have installed CSD 4002 or later for
PC/3270.
The following sections assume that you have installed CM Mouse in the default
C:\CMMOUSE directory. If you install CM Mouse in some other directory, change
the directory names as necessary.
Modifying the PC/3270 OS/2 V2.0 Batch File
The batch file created above should be modified as follows (the file is
C:\PC3270W\PC3270WO.BAT). The changes from above are shown with this emphasis
below:
@ECHO OFF
IF EXIST PC3270W.BAT GOTO TSR
WINOS2.COM C:\CMMOUSE\CMMOUSE.EXE,C:\PC3270W\PCS3270.EXE
GOTO END
:TSR
PC3270W.BAT C:\PC3270W\PCS3270.EXE
:END
Modifying the PC/3270 Execution Batch File
Depending on the configuration of your system, there may or may not be a
PC/3270 execution batch file on your system. If there is, it is named
C:\PC3270W\PC3270WX.BAT. If this file does not exist on your system then skip
this section.
Modify the line of this batch file which runs the WIN-OS/2 program (the
modification is shown with this emphasis):
C:\OS2\MDOS\WINOS2\WIN C:\CMMOUSE\CMMOUSE.EXE,%1 %2 %3 %4 %5 %6 %7 %8 %9
Note that there must be no blank spaces on either side of the comma character.
There may be other commands in this file; do not modify them.
ΓòÉΓòÉΓòÉ 23.3. Setting up PC/3270 as a WIN-OS/2 Application ΓòÉΓòÉΓòÉ
Now we have PC/3270 installed and the batch and configuration files ready to
go. The next step is to create an object on the desktop and set the various
attributes of that object.
ΓòÉΓòÉΓòÉ 23.3.1. Create a New Object on the Desktop ΓòÉΓòÉΓòÉ
To create an object for PC/3270, from the desktop:
Open the Template Folder
Select the Program folder with the right mouse button
Select Create Another from the pop-up
Select OS/2 Desktop from the list of folders
Select Create on the bottom the window
The Program-Settings folder will now open for this new object so you can set
the attributes in the next section.
ΓòÉΓòÉΓòÉ 23.3.2. Setting the Attributes of the PC/3270 WIN-OS/2 Object ΓòÉΓòÉΓòÉ
Now we have to set the attributes of this new object so that it will start
PC/3270 as a Windows application.
The following are common to all types of connections. The LAN 802.2 and 3174
Peer connections will require some additional steps covered at the end (they
need some unique device drivers).
You are now on the Program Settings for this Object. This is where you need to
set up all of the various attributes that will go with this object. You move
around by selecting the proper tab on this notebook.
1. Select the Program tab (should be selected):
Enter a Path and File name of: C:\PC3270W\PCS3270.EXE
Enter a Working Directory of: C:\PC3270W
The Icon should now show the PC/3270 Icon. If not then the path and/or
file name is entered incorrectly.
2. Select the General tab:
Enter a Title of: PC/3270 for WIN-OS/2 (or something else you want)
3. Select the Window tab:
Select Minimize window to desktop for the Minimized Button Behavior (this
will minimize the PC/3270 Icon on the desktop instead of the minimized
window viewer folder).
4. Select the Session Tab:
Select WIN-OS/2 window.
Select Separate session (this will allow PC/3270 to load required
Terminate-Stay-Resident (TSR) programs even if it is not the first
WIN-OS/2 session started).
Select WIN-OS/2 settings.
5. From the WIN-OS/2 settings screen:
Select and set COM_HOLD=ON (for async only).
Select and set DOS_HIGH=ON (allows DOS to be loaded above 640KB).
Select and set DOS_UMB=ON (allows TSR programs to be loaded in upper
memory blocks).
Select and set IDLE_SENSITIVITY=100 (disables the idle detection so
PC/3270 will get the maximum amount of processor time).
Select and set KBD_ALTHOME_BYPASS=ON (so PA2 will work).
Select and set DOS_SHELL to:
C:\OS2\MDOS\COMMAND.COM C:\OS2\MDOS /P /C C:\PC3270W\PC3270WO.BAT
Note: This is the batch file we created in the previous step.
Select SAVE when complete.
6. Close the Settings window:
Select the Title Bar Icon (small PC/3270 Icon in upper left hand corner of
Settings screen), or press F10.
Select Close to close and save these object changes.
ΓòÉΓòÉΓòÉ 23.4. Additional Setup for LAN Connections ΓòÉΓòÉΓòÉ
The LAN connections require some additional device drivers in order to
communicate with the adapter.
Note: When PC/3270 is using a LAN Adapter, then that adapter cannot be used
by any other program on this workstation. At this time there is no
virtual IEEE 802.2 device driver available to allow adapter sharing,
which means that PC/3270 will have exclusive use of this adapter when
it is running.
We will set up PC/3270 to use a Token-Ring adapter. You could set it up to use
Ethernet, PC Network or 3174 Peer (LAN over Coax) using the same technique.
ΓòÉΓòÉΓòÉ 23.4.1. Installing LAN Support Program and RESETOKN.SYS ΓòÉΓòÉΓòÉ
You must install the PC LAN Support program so that you will have the proper
device drivers. You should use the COPY command to copy the device drivers from
the LSP 1.2x diskette in drive A:.
MD C:\LSP
COPY A:\DXMA0MOD.SYS C:\LSP
COPY A:\DXMC0MOD.SYS C:\LSP
Additionally you should get the RESETOKN.SYS device driver and copy it into the
C:\LSP directory.
COPY A:\RESETOKN.SYS C:\LSP
The RESETOKN.SYS device driver will reset the Token-Ring adapter when it is
invoked, it is not required, but suggested. This will allow you to stop and
restart PC/3270 in a Token-Ring environment.
RESETOKN.SYS can be retrieved from:
CompuServe by issuing GO IBMOS2 and downloading RESTKN.ZIP from SECTION 17,
IBMFILES.
IBM National Support Center Bulletin Board System by downloading RESTKN.ZIP.
Internal IBM users can GET the RESTKN PACKAGE from OS2TOOLS.
ΓòÉΓòÉΓòÉ 23.4.2. Updating the PC/3270 Object for LAN Device Drivers ΓòÉΓòÉΓòÉ
What we will be doing is updating the WIN-OS/2 session attributes to add some
DEVICE_DRIVER statements.
From the OS/2 Desktop:
Select the PC/3270 Icon with the right mouse button.
Select the arrow just to the right of Open.
Select Settings.
You are now on the Program Settings for the PC/3270 object, just like we were
before when we did the majority of the setup above.
Select the Sessions tab.
Select WIN-OS/2 settings.
From the WIN-OS/2 settings screen:
- Select and Set DOS_DEVICE and enter the following in the Value window:
C:\LSP\RESETOKN.SYS
C:\LSP\DXMA0MOD.SYS 001
C:\LSP\DXMC0MOD.SYS 400000010135
C:\PC3270W\PCS802.SYS V=N
Note: "400000010135" is the locally administered address (LAA) for the
LAN, it may be optional and different for your installation.
- Select SAVE when complete.
Close the Settings window.
- Select the Title Bar Icon (small PC/3270 Icon in upper left hand corner of
Settings screen), or press F10.
- Select Close to close and save these object changes.
ΓòÉΓòÉΓòÉ 23.5. Operating PC/3270 for Windows under OS/2 V2.0 ΓòÉΓòÉΓòÉ
You should now have the PC/3270 for Windows Icon on the desktop and are ready
to start PC/3270. Just open the object and wait for the sessions to start.
For some of the configurations you will get the Communications/3270 Manager
screen, and you will have to Start Communications. If you want, you can go into
Profile and set Start Automatically so that it will automatically start the
sessions subsequently.
You will see that you get the A, B, etc., sessions as well as a
Communications/3270 Manager session. All of the Icons look the same, but they
have different titles. If you minimize them, they will go to the Minimized
Window Viewer folder.
ΓòÉΓòÉΓòÉ 23.5.1. A Couple of Warnings and Suggestions ΓòÉΓòÉΓòÉ
If you have an XGA or 8514/A display adapter, be sure that you had selected
VGA mode for WIN-OS/2 during OS/2 installation. This is mandatory for PC/3270
for Windows to run in a "seamless" WIN-OS/2 VDM.
Remember that the adapter is in use EXCLUSIVELY by PC/3270. This is true for
all of the adapters (DFT, SDLC, LAN).
If you included the RESETOKN.SYS mentioned earlier then you can shutdown and
restart PC/3270 Token-Ring connections. This package also comes with a
RESETOKN.EXE file that can be used to close the adapter so other applications
can use it, if desired. You would have to invoke this after shutting down
PC/3270 or it will become very upset!
If you get message PCS232 - PCS802.SYS Module not found, you probably set up
the DOS_DEVICE statements incorrectly, or forgot to install the LSP code.
If you get message PCS234 - The Current Configuration File Does Not Include
Valid TSR Information; when you click on the CM/3370 Manager Start
Communication Icon, then you either forgot to update the DOS_SHELL option, or
have a bad PC3270WO.BAT. The problem is that the PC3270W.BAT does exist, but
was not executed (loads the TSRs).
If you get message PCS212 - PC/3270 is installed incorrectly, you probably
installed PC/3270 under Windows 3.0 running in enhanced mode. You will need
to reinstall PC/3270.
If you open the new PC/3270 object and it closes after a few seconds, then
you probably have the DOS_SHELL or the PC3270 Batch file PC3270WO.BAT set up
incorrectly.
If you open the PC/3270 object a second time, and it just sits there or hangs
the machine, you might not have set Separate Session set on or you did not
include the RESETOKN.SYS driver.
Sometimes OS/2 does not know when a Windows application closes. Therefore
when you do a shutdown, the desktop thinks that the application is still
running. When you start OS/2 the next time, it will automatically start the
application again.
There is a way around this:
- Bring up the OS/2 Window List (Ctrl-Esc).
- Select the line that says WIN-OS/2 and has PC/3270 listed under it.
- Click the right mouse button.
- Select Close, this will close all the applications, and the WIN-OS/2
environment.
A side effect is that all Windows Applications that OS/2 thinks are still
open will be officially closed. The applications will no longer have hash
marks over their icons. You can now Shutdown gracefully.
You can circumvent this effect by running Personal Communications/3270 for
Windows a separate WIN-OS/2 session.
ΓòÉΓòÉΓòÉ 23.5.2. Limitations ΓòÉΓòÉΓòÉ
The limitations of running Personal Communications/3270 for Windows under OS/2
V2.0 should be noted:
1. If Personal Communications/3270 for Windows is started after OS/2 V2.0 LAN
requester is running, it will cause the LAN requester to fail.
2. File transfer can only be performed from the virtual DOS machine in which
Personal Communications/3270 for Windows is running.
3. The adapter card used by Personal Communications/3270 for Windows for
communication with the host cannot be accessed by another program. Since
the 802.2 device driver is not (yet) virtualized, Personal
Communications/3270 for Windows has direct access to the Token-Ring card.
No other LAN services can be made available via another program using the
same card.
Note: A possible solution for this problem could be to install a second
Token-Ring adapter. However, this will not help because the LAN
Support Program will try to initialize both Token-Ring adapters, if
installed. This can cause trouble for OS/2 device drivers which are
using the second adapter at the same time.
4. You need to run the program RESETOKN.EXE before starting this virtual DOS
machine and after closing this virtual DOS machine. This will reset the
adapter and make it available to another process. If you don't use
RESETOKN, the Personal Communications/3270 for Windows virtual DOS machine
cannot be stopped and restarted, as the IEEE 802.2 device driver is not
(yet) virtualized.
ΓòÉΓòÉΓòÉ 24. Running DOS PC Support/400 in OS/2 V2.0 ΓòÉΓòÉΓòÉ
This appendix covers the instructions for the installation of DOS PC
Support/400under OS/2 V2.0, and the restrictions for this environment.
In DOS PC Support/400, the Shared Folders device driver is a block device
driver. Since the virtual DOS machine of OS/2 V2.0 does not support block
device drivers, DOS PC Support/400 must be run in a Virtual Machine Boot
session. We will describe below the setup of DOS PC Support/400 in a DOS 5.0
Virtual Machine Boot. The process creates a DOS 5.0 boot diskette, which is
then copied as a diskette image to the hard disk. This enables the DOS PC
Support/400 Virtual Machine Boot to be started from the hard disk rather than a
diskette.
ΓòÉΓòÉΓòÉ 24.1. Installation Preparation ΓòÉΓòÉΓòÉ
The following are required before starting the installation:
1. Basic DOS PC Support/400 Installation diskette(s) V2R1 or later
2. DOS 5.0 bootable diskette, formatted with the system (/S) option
3. If using a LAN, the LAN Support Program diskette 1.22 or later
4. DOS PC Support/400 Installation and Administration Guide (SC41-0006).
ΓòÉΓòÉΓòÉ 24.2. Installation ΓòÉΓòÉΓòÉ
If DOS PC Support/400 is to use a LAN, we must first install the LAN device
drivers on the DOS 5.0 diskette with the LAN Support Program diskette. This
puts the DXMx0MOD.SYS drivers in the CONFIG.SYS of the DOS 5.0 diskette.
1. Run the DOS PC Support/400 installation program.
a) During the installation, you will be asked which "Drive your personal
computer starts from?". This must be answered as "A" drive.
b) When you are asked to "Insert diskette from which you will start the
personal computer in drive A.", insert the DOS 5.0 diskette.
Further instructions on how to use the Install program are in the guide.
2. When the DOS PC Support/400 installation program has stopped, add the
following line to the top of the CONFIG.SYS file on the DOS 5.0 diskette:
DEVICE=C:\OS2\MDOS\FSFILTER.SYS
NOTE: if you have installed OS/2 V2.0 on a drive other than C:, use that
drive letter instead.
FSFILTER.SYS is a special DOS device driver that allows a Virtual Machine
Boot session to access (read/write) all OS/2 V2.0 drives (both FAT and
HPFS). Without this driver, the Virtual Machine Boot session can only READ
from OS/2 V2.0 FAT drives.
3. Create a Virtual Machine Boot diskette image file from your DOS 5.0
diskette with the following steps:
a) Put your DOS 5.0 diskette in drive A:
b) At a OS/2 or DOS command prompt, enter:
VMDISK A: C:\PCSDOS50.DSK
This will create a file that contains an image of the DOS 5.0 diskette.
4. Create a new VDM object on the Workplace Shell desktop.
a) Locate the Templates folder. It is usually an icon on the Workplace
Shell.
b) Open the Templates folder.
c) Locate the Program icon template.
d) Drag the Program icon template on to the desktop. This will cause the
Program Settings notebook to appear.
e) Enter an asterisk "*" in the Path and file name field.
f) Select the Session notebook tab.
g) Select either DOS full screen or DOS window and then select the DOS
Settings... button.
h) Select the DOS_STARTUP_DRIVE list item and then enter:
C:\PCSDOS50.DSK
in the upper right entry field.
i) Select the Save button to save the DOS settings and return.
j) Select the General notebook tab.
k) Change the Title field to DOS PC Support/400 or your own name describing
the new object.
l) Close the Settings notebook by double clicking on the system menu in the
upper left corner of the window.
Now there will be a DOS PC Support/400 icon on your desktop. Double click on it
to bring up DOS PC Support/400.
ΓòÉΓòÉΓòÉ 24.3. Restrictions ΓòÉΓòÉΓòÉ
The following general restrictions apply to this environment:
1. Only the Basic DOS (Not Extended DOS) version of DOS PC Support/400 is
supported.
2. Only V2R1 or greater versions of DOS PC Support/400 are supported.
3. Only a single DOS PC Support/400 virtual DOS machine(VDM) is supported.
4. If OS/2 Version 2.0 Extended Services is used, the OS/2 version of PC
Support must be run instead of the Basic DOS version, as the device drivers
used by DOS PC Support/400 requires exclusive control of any adapter used
for DOS communications.
5. When a Virtual Machine Boot session is started from a diskette image file,
the "A:" drive within the VDM will refer to the diskette image file. If you
would like to access the physical drive "A:", OS/2 V2.0 supplies a program
called FSACCESS.EXE to do this. See the online command reference for more
information.
6. The default hot-key of Alt-ESC is reserved for OS/2 V2.0 and must be
changed in order to have hot-key support. This can be done by using the
Configure WorkStation Function (CFGWSF.EXE) program to create/change a
keyboard profile.
7. For LAN connections, only the LAN Support Program Version 1.22 or later is
supported.
8. If you decide to close the DOS PC Support/400 Virtual Machine Boot session
while the LAN router is active, you must wait two minutes before starting
up the VDM again. This time will allow the card to reset itself on the LAN.
The DOS PC Support/400 VDM will appear to hang if it is restarted too soon.
9. For an SDLC router, if you decide to close the Virtual Machine Boot session
while the router is active, you must stop the router or power off the modem
first. Failing to do so could cause a system trap to occur.
10. The ASYNC router is NOT supported at this time.
ΓòÉΓòÉΓòÉ 25. Running Lotus 1-2-3 in a VDM ΓòÉΓòÉΓòÉ
Lotus 1-2-3 is one of the most popular DOS programs available. Many customers
use one or another of the several versions on the market. Frequently, they
encounter problems of insufficient RAM to process their large spreadsheets.
This appendix discusses how to set up and run Lotus 1-2-3 Release 2.3 (which
can use EMS memory), and Lotus 1-2-3 Release 3.1+ (which uses DPMI memory) in a
virtual DOS machine in OS/2 V2.0 to handle large spreadsheets.
ΓòÉΓòÉΓòÉ 25.1. Lotus 1-2-3 Release 2.3 ΓòÉΓòÉΓòÉ
In order to configure EMS support for the virtual DOS machine, we must ensure
that a contiguous 64KB block of RAM is available in the address range 640KB to
1MB to be used as the EMS Page Frame (Refer to Memory Extender Support). Do the
following:
1. Boot the system with the reference diskette and in Set Configuration take a
look at the memory map.
2. Print or make a note of the memory addresses of the different hardware
device drivers. For example, 3270 Connection may have an address of 0D6000H
(D6000 hexadecimal).
If a 64KB contiguous block cannot be found the DOS Settings for the virtual
DOS machine will have to be used to make a block available.
3. Reboot under OS/2 V2.0.
4. Open the Templates folder and drag a Program icon to the desktop.
The Settings notebook should open.
5. Enter the following in the Path and file name field (change the path
according to your installation):
D:\123r23\123.exe
6. The Working Directory should be the same as the path in the Path and file
name field.
7. Select the Session tab.
8. Set session type as DOS Full Screen (Window will work, but slower)
9. Open DOS Settings.
10. Select DOS_UMB and set it to OFF (default is ON)
11. Select MEMORY_INCLUDE_REGIONS and enter the addresses that you do not need
for this virtual DOS machine. For example, the 3270 Connection card is not
used by Lotus 1-2-3 Release 2.3, so the device driver address for it
(D6000) can be entered. Refer to the online help for the syntax.
12. Select EMS_MEMORY_LIMIT and set it to accommodate the largest expected
spreadsheet.
13. Select SAVE to save the settings.
14. Select the General tab and change the Title to "Lotus 1-2-3 Release 2.3".
15. Close the Settings notebook.
The Lotus 1-2-3 Release 2.3 icon should now be available for use.
ΓòÉΓòÉΓòÉ 25.2. Lotus 1-2-3 Release 3.1+ ΓòÉΓòÉΓòÉ
The Lotus 1-2-3 Release 3.1+ install program checks to make sure it is running
in true DOS. The OS/2 V2.0 virtual DOS machine DOS Settings allow you to create
a DOS session that returns a simulated DOS value to the Lotus INSTALL.EXE and
therefore fool it into thinking it has the real DOS.
1. Open the OS/2 System folder.
2. Find and open the Command Prompts folder.
3. Drag a copy of the DOS command prompt to your desktop.
4. Open the Settings notebook.
5. Select the Sessions tab.
6. Select DOS Settings.
7. Select DOS_VERSION and enter:
INSTALL.EXE,3,30,255
in the list box.
8. Save the settings and close the Settings notebook.
9. Open the new DOS command prompt session and run A:INSTALL from the prompt.
10. After installation completes, discard the icon in the shredder.
Lotus 1-2-3 Release 3.1+ is usually started in DOS with the 123.EXE program.
However, 123.EXE is a FAMILY API EXE file; it can be used to start both the DOS
as well as the OS/2 version. Consequently, if we try to add a program icon to
the desktop to start 123.EXE, OS/2 V2.0 will detect that it can be started as
an OS/2 program and gray out the option to run it in a DOS session on the
Session page of the Settings notebook. You also cannot use the Migrate
Applications utility to add 123.EXE to the desktop, as it is detected as an
OS/2 program.
This problem is overcome by starting 123.EXE from a DOS batch file. We then
enter the DOS batch file name in the Path and file name field of the Program
page of the Settings notebook.
Add the Lotus 1-2-3 Release 3.1+ icon to the desktop as follows:
1. Create a 123R31.BAT file with any Editor.
The batch file should contain the following (Adjust 123MEMSIZE to
accommodate the largest spreadsheet):
SET DOS16M = 2
SET 123MEMSIZE=2048
123.EXE
2. Place this file in the Lotus 1-2-3 Release 3.1+ subdirectory.
3. Open the Templates folder and drag a Program icon to the desktop.
The Settings notebook should open.
4. Enter the following in the Path and file name field (change the path
according to your installation):
D:\123R3\123R31.BAT
5. The Working Directory should be the same as the path in the Path and file
name field.
6. Select the Session tab.
7. Set session type as DOS full screen (Window will work, but slower).
8. Select DOS_VERSION and enter:
123DOS.EXE,3,30,255
123.EXE,3,30,255
LOTUS.EXE,3,30,255
in the list box.
9. Save the settings and close the Settings notebook.
10. Select DPMI_MEMORY_LIMIT. Adjust the value to be about 2MB larger than
123MEMSIZE defined in the DOS batch file 123R31.BAT.
11. Select SAVE to save the settings.
12. Select the Generaltab and change the Title to "Lotus 1-2-3 Release 3.1+".
13. Close the Settings notebook.
The Lotus 1-2-3 Release 3.1+ icon should now be available for use.
ΓòÉΓòÉΓòÉ 26. Memory Extender Architectures ΓòÉΓòÉΓòÉ
This appendix provides an overview of the LIM EMS Version 4.0 and LIMAXMS
memory extender architectures, for those readers who require an understanding
of their implementation and who are not already familiar with the design of
these memory extenders.
ΓòÉΓòÉΓòÉ 26.1. Expanded Memory Specification (EMS) ΓòÉΓòÉΓòÉ
The expanded memory specification (EMS) was initially developed by two
companies, Lotus and Intel. Microsoft later joined the consortium, and the
specification has since become known as LIM EMS.
A number of versions of the EMS specification have been produced. LIM EMS
Version 3.0 required a 64KB window anywhere in the area between 640KB and 1MB,
and provided up to 8MB of expanded memory. As more hardware adapters with
their own ROM were installed, it was often difficult to find a free 64KB
contiguous memory area for the mappable window.
A revised version of the EMS specification has been produced, known as LIM EMS
Version 4.0. This version allows DOS applications to allocate and access up to
32MB of expanded memory in up to 255 expanded memory objects. Regions of these
objects can be mapped into the 8086 address space (below 1MB) allowing DOS
applications to access large address spaces at the cost of having to explicitly
remap the memory that is to be accessed. Alternate page tables for quick
switches among mappings, function calls with remapping, and numerous ways to
save and update mappings or move or exchange memory contents are provided.
ΓòÉΓòÉΓòÉ 26.1.1. EMS Overview ΓòÉΓòÉΓòÉ
The EMS Specification is a document that describes 30 functions and many
subfunctions, which are called by DOS applications using software interrupt
67h. EMS creates memory objects in expanded memory and then provides mappings
such that addressing below 1MB accesses parts of these expanded memory objects.
At any given time, the 8086 application can directly access only 1MB of memory,
but additional expanded memory can quickly be mapped into the addressable 1MB
range. In effect, parts of the 8086 address space become moving "windows" into
larger virtual memory objects.
The Intel 8086/8088 processors need special EMS memory adapters and are not
part of the following discussion. Special EMS memory adapters are also
required for 80286 machines. While certain software-based EMS emulation
packages are available, which utilize the normal extended memory area above 1MB
for that purpose, those emulations are relatively slow and unstable compared to
"real" EMS hardware adapters. However, neither of the two types of EMS
solutions was supported under previous versions of OS/2.
ΓòÉΓòÉΓòÉ 26.1.2. EMS Functions ΓòÉΓòÉΓòÉ
The following is a brief summary of LIM EMS Version 4.0 functions. Note that
it is a summary of the EMS specification itself, and not of its implementation
under OS/2 Version 2.0.
Allocating/Reallocating/Deallocating Expanded Memory
An allocation request can be made for a number of expanded memory pages and, if
successful, a handle is returned. This handle is then used by the application
to reallocate or deallocate memory.
Mapping Expanded Memory
Logical pages in an object can be mapped into physical address ranges
addressable by the 8086 processor. A mapping indicates the relation between
EMS physical pages and <EMS Handle, EMS Logical Page> pairs that the
application requires. One example would be to map an expanded memory video
buffer (EMS logical pages) to the mappable window (EMS physical pages) to
create a video image in expanded memory. An EMS service request can then be
used to move the image from expanded memory to screen memory.
A single logical page can be mapped to multiple physical pages. This is used by
programs such as Lotus 1-2-3. When a single logical page is mapped to multiple
physical pages, a write to any of these physical pages writes to the same
expanded memory. An application can write to one address and then read the
results from another address. This feature can be used to provide independent
mappings to a shared structure for multiple modules. To implement this
aliasing, multiple page registers must all point to the same memory. This
leads to a requirement for the memory manager to support aliasing of page table
entries.
A physical page can be unmapped. Reads/writes to unmapped memory do not kill
the application, but an application cannot depend on reading what it has
previously written. LIM EMS specifies that a program must unmap mappable
windows before allowing another program to run, in order to protect the memory
mapped by the first program.
The specification does not stipulate what happens to programs that touch
unmapped memory, only that the physical pages are "inaccessible for reading and
writing". One possible implementation is to map unmapped pages to nonexistent
physical pages (the Microsoft Windows/386 product does this). Another
alternative is to map them to physical ROM. This can lead to problems,
however, on some machines that cache ROM. The safest alternative is to use a
single physical page of memory.
Information Calls
An application may obtain information about the EMS resources available,
current mappings, and handle usage. In a multiprogramming environment or where
TSRs are loaded, however, this information may be out of date by the time it is
used. For instance, an application may determine the amount of LIM memory
available, but before getting the opportunity to request an allocation, a TSR
may request EMS memory. The application would find less memory available than
expected.
Saving/Restoring Mappings
Several calls are available for an application to obtain data that can later be
returned to EMS to restore a mapping. For some calls, this information is
saved internally by the EMS driver. For others, it is returned to the
application.
One type of save operation automatically saves the registers pointing to the
first 64KB of the mappable window to an internal EMS buffer associated wtih an
EMS handle supplied by the user. Typically, this is used by a TSR to save and
restore the current mappable window by saving to an EMS buffer associated with
a handle owned by the TSR. Other save operations return either complete or
partial information to the application, which the application can later provide
to restore memory mappings. Still other calls allow EMS the option to store
register information on the application's stack. There are five different ways
to save and restore registers in addition to techniques for setting the
registers.
Alternate Register Sets
This is an optional feature of EMS. Mapping can be done to any of a number of
register sets. The application can then switch the active register set. The
effect is similar to switching page tables under OS/2 Version 2.0. Alternate
Register Sets can be protected by the first application to claim a protection
key. Only the application with the key will be allowed to claim a register set
or switch the active one unless no one claims the key or the process with the
key permits others to use the alternate sets.
This feature is typically used by DOS extenders such as Microsoft Windows.
Switching memory during a task switch can be accomplished by turning on
permission for changing register sets using the permission key, switching the
current register set, and turning alternate set permission off. Even when
alternate register sets are not supported, save and restore operations for
register set 0 are simulated with data passed to and from the application.
DMA Register Sets
This is an optional feature of EMS. These register sets allow association of a
DMA channel with a register set. All DMA on that channel is remapped through
the associated DMA register set allowing EMS remapping during DMA. When this
feature is not supported, remapping of register sets may be delayed until DMA
completes.
Program Execution
This function allows an application to execute a procedure or subroutine which
lies in an expanded memory area not currently mapped into the 8086 address
space. EMS will perform a remap to bring the procedure or routine into the
8086 address space, and pass control to the specified entry point. This may be
accomplished in either of two ways:
JUMP passes control to the specified entry point but makes no provision for
return.
CALL passes control to the specified entry point and after the application
routine returns, sets up an address mapping that will be in effect when
control returns to the calling routine. The return address is that of the
instruction following the INT 67h service request.
This function allows applications to store code in expanded memory.
Data Movement
Copy and exchange services provide data movement between any combination of
conventional or expanded memory. The start of a region of expanded memory is
indicated by handle, logical page and offset. The memory being affected need
not be currently mapped into the 8086 address space. Overlapping copies
succeed without corrupting data, and a return code indicates overlap to the
application. Exchange operations may not overlap.
This function allows applications to conveniently move portions of expanded
objects around in expanded memory, or move them to or from conventional memory,
without having to first remap the objects into the 8086 address space.
EMM Protection
Limited protection is available. The first application that requests a key can
turn enable or disable access to alternate and DMA register sets. There is no
protection for memory objects. Any application can determine all handles in
use and perform any operations on them. Within a single EMS implementation, a
badly behaved application can wreak havoc on any application using EMS.
For example, one Windows application may write over the memory of any other.
This is consistent with the general lack of protection in the DOS environment,
where applications have free access to the machine's physical memory.
OS Support
On power up, an EMM implementation which supplies mappable conventional memory
allocates all mappable conventional memory to handle 0 and maps it in. This is
typically all memory above the memory on the system board up to 640KB. This
occurs before the operating system starts up and allows programs like Windows
to remap conventional memory. Programs that remap conventional memory are
required to reset the mapping before returning to the operating system. EMS
does not enforce this, however.
ΓòÉΓòÉΓòÉ 26.2. Extended Memory Specification (XMS) ΓòÉΓòÉΓòÉ
The LIMA Extended Memory Specification (XMS) Version 2.0 provides a standard
interface for the use of extended memory on Intel 80286, 80386, and 80486
computers. XMS functions allow moving code and data objects into extended
memory, and from extended memory to base memory.
ΓòÉΓòÉΓòÉ 26.2.1. XMS Overview ΓòÉΓòÉΓòÉ
LIMA XMS is a specification for an extended memory programming interface on the
Intel 80286, 80386, and 80486 processors. The XMS specification is a short
document offering 18 functions which are accessed through a control function
supplied by the XMS driver. All XMS functions are executed by calling the
control function, the address of which is obtained by a call to INT 2Fh.
Arguments are passed in registers.
It does not specify hardware or processor speeds and does not depend on any
particular operating system. (The technique for determining if XMS is present
is based on the DOS interrupt vector 02Fh, but can be easily provided in any OS
that supports XMS.)
XMS manages three different kinds of memory:
1. High Memory Area (HMA) is the first 64KB of extended memory. By activating
the A20 address line, a real mode application can access memory in this
region as if it were conventional memory. The HMA is exactly 65520 bytes
(64KB - 16 bytes) long.
2. Extended Memory Blocks (EMBs) are blocks of extended memory which lie
beyond the HMA. They are not accessible from real mode and serve only for
data storage. Memory can be moved between extended and conventional memory
by a memory move function provided by the XMS driver. Without leaving V86
mode, code cannot be executed from EMBs and they serve only for data
storage. The specification offers up to 64 megabytes of extended memory,
divided into as many as 255 blocks.
3. Upper Memory Blocks (UMBs) are regions of memory between 640KB and 1MB
which may be used like conventional memory. The size and number of UMBs is
dependent upon the hardware configuration. XMS provides a standard means
of obtaining and using them. Once a UMB is allocated, its memory is always
available, and since the memory lies in conventional memory, code may be
executed in it at any time.
The major characteristics of these three types of expanded memory are
summarized in Table "Types of Expanded Memory". The three different types of
expanded memory are mapped into physical memory in different ways by the XMS
driver, as shown in Figure "Memory Map of Extended Memory (HMA, UMA, and
EMBs)".
ΓòÉΓòÉΓòÉ 26.2.2. XMS Functions ΓòÉΓòÉΓòÉ
The following is a brief summary of LIMA XMA functions. This is a summary of
the specification itself, and not of its implementation in OS/2 Version 2.0.
Determining XMS Presence
Calling interrupt 2Fh with AH=43h and AL=00h will return AL=80h if an XMS
driver is installed. Calling interrupt 2Fh with AH=43h and AL=10h will return
the far entry point address of the XMS control function in ES:BX. The control
function must be called as a far procedure.
Requesting/Releasing HMA
There is only one 64KB HMA and it cannot be divided. An application which
requests the HMA is given the entire HMA, even if it uses only part of it. When
an application has successfully requested the HMA, it is guaranteed sole access
to it until it is released. As part of the request, the application indicates
how much of the HMA it expects to use. If this value does not exceed a
user-specified threshhold, the request is denied. This test is performed so
that the HMA is given only to applications which make substantial use of the
HMA.
A20 Address Line Control
Two pairs of functions are used to control the status of the A20 address line.
The application may control the A20 address line either globally or locally.
Global control is used by programs which have control of the HMA. Local control
is used by programs which need to access extended memory directly. Global
settings are kept in a simple on/off flag, whereas local control uses a
counter. Hence, the number of "local disable" calls must equal the number of
"local enable" calls before the A20 line is actually disabled, whereas a single
"global disable" call suffices to disable the A20 address line, regardless of
how many "global enable" calls have been made.
Allocating/Reallocating/Deallocating Extended Memory Blocks
An allocation request can be made for a particular-sized EMB (in kilobyte
units) and, if successful, an EMB handle is returned. This handle is used to
reallocate, lock, unlock, or deallocate memory. It is also used to move memory
between the EMB and conventional memory or other EMBs. An EMB may be locked
and while locked, it may not be reallocated or deallocated, nor may its base
address change.
Allocating/Deallocating Upper Memory Blocks
An allocation request can be made for a particular-sized UMB (in paragraph
units) and, if successful, the segment number of the UMB is returned, as well
as the actual size of the UMB. This segment number is also used to deallocate
the UMB. UMBs may not be resized.
Information Calls
The application can obtain information about the XMS memory resources available
and handle usage. In a multiprogramming environment or where TSRs are loaded,
this information may be out of date before being used. For instance, an
application may determine the amount of XMS memory available, but before
getting the opportunity to request an allocation, a TSR may request XMS memory.
The application would find less memory available than expected.
Data Movement
A move or copy function provides data movement between any combination of
conventional or extended memory. The memory being affected need not be locked.
The start of a region of extended memory is indicated by handle and offset.
Overlapping copies will succeed provided the source address is below the
destination address. Moreover, blocks being moved must be of even length; word
alignment is not required, however. This function is the only method of
accessing an extended memory block without leaving real mode.
ΓòÉΓòÉΓòÉ 27. Multiple Virtual DOS Machines Lab Sessions ΓòÉΓòÉΓòÉ
These lab sessions provide practical demonstrations of OS/2 Version 2.0's
Multiple Virtual DOS Machine capabilities. The individual topics that will be
covered in this lab are:
VDM Configuration
The Virtual DOS Machine Manager
Using the Clipboard
VDM Use of the Speaker
VDM Interprocess Communications
ΓòÉΓòÉΓòÉ 27.1. Requirements ΓòÉΓòÉΓòÉ
The following are required to do the labs:
OS/2 Version 2.0
DOS Version 5.0
CLIPVIEW.EXE program, in the productivity folder
The following programs in your C:\ITSCLABS directory:
- ENVIRON.EXE program
- GRAPHIC.EXE program
- INT19.EXE program
- QENV.BAT program
- QCONFIG.EXE program
- SOUND.EXE program
- PMCHART.EXE program
- PaintBrush program
- WinGif program
ΓòÉΓòÉΓòÉ 27.2. Lab Session 1: VDM Configuration ΓòÉΓòÉΓòÉ
In this exercise, students will create a new group folder and configure a VDM
within that folder according to specified parameters.
First you will create a new group named Test on the desktop. Copy the OS/2 Full
Screen item from the Command Prompts folder to the newly created folder using
the drag mechanism.
Next, you will change the "OS/2 Full Screen" item in the folder "Test" to the
following parameters:
Change the title to "My Window"
Match the parameters and the program type to start a DOS window.
Deselect device driver ANSI.SYS
512KB DOS memory size
Select an environment size of 200 bytes
1024KB expanded memory.
2048KB extended memory.
Finally, you will perform some checks to verify the changes.
Use the QCONFIG.EXE program to check the memory size manipulation.
Verify that the environment size is approximately 200 bytes.
ΓòÉΓòÉΓòÉ 27.2.1. Steps ΓòÉΓòÉΓòÉ
Create a new folder:
1. Peel off a folder from the Templates folder.
2. Rename the new folder.
3. Select an OS/2 full-screen object by single-clicking with the left mouse
button on "OS/2 full-screen" in the Command Prompts folder.
4. Press and hold Ctrl.
5. With the mouse pointer on OS/2 full-screen press and hold the right mouse
button. After pressing the mouse button release the Ctrl key. When you move
the mouse, you "drag" the selected application around the desktop. As long
as the mouse pointer is within an area, where you might drop the
application, the mouse pointer appears as an icon. Otherwise, the mouse
pointer appears as a "No Go" sign.
6. Move the mouse pointer to the client area of your new folder and release
the right mouse button.
7. Bring up the "Context Menu", by clicking on it with mouse button 2.
8. Open the "Settings".
9. Change the Program Title.
10. Select "DOS Windowed" as the Program type.
11. Press push button "DOS Settings".
12. Select "DOS memory size (KB)" and change it to 512KB.
13. Append to the "DOS shell" property the following without the quotes:
"/E:200".
14. Change the "EMS memory limit (KB)" to 1024KB.
15. Change the "XMS memory limit (KB)" to 2048KB.
16. Press push button "Save" to save your new DOS Settings.
17. To close that window and save your changes you must double-click on the
system icon.
Now, as your "My Window" object has been updated, proceed as mentioned in the
Expected Results
ΓòÉΓòÉΓòÉ 27.2.2. Expected Results ΓòÉΓòÉΓòÉ
After successfully completing the exercise, check the result by double-clicking
on "My Window" in the folder Test. A VDM should start with a DOS command
prompt, which should look like the following example, if you have a PROMPT
statement included in the AUTOEXEC.BAT file like the one shown on Requirements
section of this lab.
.[37;40m[DOS] C:\>
If the DOS prompt looks like this, the ANSI.SYS is not active. In this case,
you did well. Otherwise, try once more, because the ANSI.SYS driver is still
active.
Now start the program QCONFIG.EXE using the following syntax:
QCONFIG /P
from within the DOS command prompt. Don't worry about the appearance of the
current command prompt. The output of QCONFIG.EXE should look like this:
Operating System: OS/2 Standard Edition Version 2.00 CSD Level
Date & Time : 01/14/1992 17:20
Product Number : 8573-121
Model ID : F8 Sub-Model ID : 0B
BIOS Revision : 00 BIOS Date : 01/18/89
Machine Type : IBM PS/2 Model P70
Processor : Intel 80386 Processor Speed : 20 Mhz
Estimated Speed : 17.6 Mhz
CoProcessor : None
Bus Type : Micro Channel 32-Bit Bus
Keyboard Type : Enhanced
Mouse Type : PS/2 Mouse
Equipment : 1 Parallel Port(s)
: 1 Serial Port(s)
: 1 Diskette Drive(s)
: 1 Fixed Disk(s)
: Pointing Device
Primary Video : VGA
Diskette Drive 1: 3.50" - 1.44M - 80 Track - Type 4
Fixed Disk 1 : 115 MB = 117760 KB = 120586240 bytes
Local - Drive C: Size 5096K = 4.9M Avail 2636K = 2.5M
Local - Drive D: Size 23472K = 22.9M Avail 6126K = 5.9M
Local - Drive E: Size 45956K = 44.8M Avail 16986K = 16.5M
Local - Drive F: Size 8152K = 7.9M Avail 7636K = 7.4M
Total Memory : 8064 KB = 7.8 MB
Conventional : 513 KB Unallocated : 476 KB
Extended Memory : 7424 KB Unallocated : 0 KB
Expanded Memory : 1280 KB Unallocated : 1024 KB
Total Slots : 3 System (DISK) : 1 User Slots : 2
Expansion Slot 1: * No Adapter Present
Expansion Slot 2: ID E1FF - IBM 3270 Connection Version B
Expansion Slot 3: ID DF9F - IBM Integrated Fixed Disk Controller
--- QCONFIG Ver 1.47 (Jan 3 1992) by Jeff Muir IBM Copyright 1991 (c)---
C:\>
1. If a base memory size of 512KB, and an expanded (EMS) memory size of 1024KB
is reported, then you've done well.
2. Next, check the environment size with the ENVIRON.EXE and QENV.BAT files.
Execute QENV.BAT shown in Figure "QENV.BAT Batch File" and the following
will occur:
The environment space is filled.
The ENVIRON.EXE file is executed.
The environment settings are shown.
The dummy environment settings are removed.
ΓòÉΓòÉΓòÉ 27.2.3. Optional ΓòÉΓòÉΓòÉ
There is a way to check the environment size without the use of special
programs like ENVIRON.EXE and QENV.BAT. It is not simple because we cannot
display the environment size by using a command.
The SET command shows all the current settings in the environment of
COMMAND.COM. The environment size defaults to approximately 150 bytes.
1. To make sure that the environment buffer is full, issue some environment
settings like:
SET a=12345678901234567890
SET b=12345678901234567890
SET c=12345678901234567890
: : = : :
: : = : :
: : = : :
2. Execute the SET commands until you encounter an error message "Out of
environment space".
3. Now, save the environment settings in a file. The syntax for this action
is as follows:
SET > MYENV.TXT
4. Check the size of the new file (MYENV.TXT) with the DIR command:
DIR MYENV.TXT
5. From the file size displayed by the DIR command, subtract the number of
lines in MYENV.TXT.
This is necessary because each line in the file is terminated by CrLF (0D0A)
characters and the environment strings are terminated by a single character
(hex 0) only.
If you can use this method and calculate a size at 200, you did very, very
well.
Figure "C Source Code for ENVIRON.EXE"
ΓòÉΓòÉΓòÉ 27.3. Lab Session 2: Reboot Virtual DOS Machine ΓòÉΓòÉΓòÉ
When running DOS 3.3, 4.0, etc., if an INT 19h is called, the result is a
reboot of the entire system. The objective of this lab is to show that the
execution of an INT 19h in an OS/2 VDM is handled by the Virtual DOS Machine
Manager (VDMM). What happens in OS/2 Version 2.0 when a program running in a
VDM issues an INT 19h?
ΓòÉΓòÉΓòÉ 27.3.1. Steps ΓòÉΓòÉΓòÉ
In this exercise, you are required to start a DOS application program that
issues an interrupt INT 19h.
Perform the following steps:
1. Open a DOS Windowed session.
2. Execute INT19.EXE.
3. When prompted, select ENTER to issue the INT 19h.
Keep in mind what happened so far. Then proceed with the following steps:
1. Open an OS/2 Windowed session.
2. Execute INT19.EXE.
3. When prompted, select ENTER to issue the INT 19h.
Did the results meet your expectations?
ΓòÉΓòÉΓòÉ 27.3.2. Expected Results ΓòÉΓòÉΓòÉ
After you have successfully completed the exercise, please note that the
interrupt INT 19h did not reboot the system. Instead, the interrupt was routed
to the Virtual DOS Machine Manager (VDMM) by the General Protection Handler.
The VDMM terminates the VDM when receiving the INT 19h.
If you start a DOS application program from an OS/2 command prompt, control is
passed to the Virtual DOS Machine Manager which then starts the VDM. Execution
of INT 19h does NOT terminate the OS/2 session. Instead, INT 19h terminates the
VDM session only. Control is returned to the OS/2 session.
The INT19.EXE is a compiled BASIC program. The source code is shown in Figure
"INT19.BAS Source Code."
ΓòÉΓòÉΓòÉ 27.4. Lab Session 3 - The Clipboard Viewer ΓòÉΓòÉΓòÉ
In this exercise, you are using the clipboard support for the VDM environment.
Partial and complete copying of text and graphical screen contents is the main
task of this exercise as follows:
1. Fill a VDM windowed session with text data (DIR /W) and copy the screen
contents to the clipboard. Use the Clipboard Viewer to check your results.
2. Create some graphics in VDM windowed session (GRAPHIC.EXE) and copy a part
of the graphics to the clipboard. Again check the Clipboard Viewer.
3. Copy text (more than one line!) from the clipboard into EDLIN.
ΓòÉΓòÉΓòÉ 27.4.1. Steps ΓòÉΓòÉΓòÉ
First step:
Start Clipboard Viewer.
Create a VDM windowed session.
Put some text in the VDM, for example, use the DIR /W command.
Switch to the Presentation Manager screen group and click on the VDM's icon.
Select "Copy all" to copy the screen contents to the clipboard.
Check the Clipboard Viewer window which now should contain the copied text.
Check if you can paste the content of the clipboard into the PM sample
application PM Chart.
Second step:
Start a VDM windowed session.
In the session, execute the "GRAPHIC.EXE" program.
Click on the system icon and select "Mark"
Select an area within the window with the mouse pointer.
Click on the system icon and select "Copy"
Check the Clipboard Viewer, which now should contain the copied data.
Check if you can paste the content of the clipboard into the PM sample
application PM Chart.
Third step:
Start the famous EDLIN editor in a VDM windowed session by entering EDLIN at
the DOS command prompt.
Enter "i1" to put EDLIN into a mode where you can enter text.
Select "Paste" from the system or icon pull-down menu. The text is copied
from the clipboard character-by-character into the input area of the editor.
ΓòÉΓòÉΓòÉ 27.4.2. Expected Results ΓòÉΓòÉΓòÉ
After you have successfully completed each exercise, the Clipboard Viewer
should have presented the text or graphical material you copied from the DOS
VDM.
GRAPHIC.BAS Source Code
ΓòÉΓòÉΓòÉ 27.5. Lab Session 4: VDM Use of the Speaker ΓòÉΓòÉΓòÉ
In this exercise, you will be asked to run multiple sessions of a DOS
application that accesses the speaker system. The provided SOUND.EXE program
plays music. Note the behavior of the system's sessions in view of the fact
that the speaker is a piece of hardware which is not virtualized.
ΓòÉΓòÉΓòÉ 27.5.1. Steps ΓòÉΓòÉΓòÉ
1. Open a VDM session.
2. Start the program in a VDM session by issuing the following command:
SOUND
3. Repeat steps 1 and 2.
ΓòÉΓòÉΓòÉ 27.5.2. Expected Results ΓòÉΓòÉΓòÉ
After starting the first session of the SOUND.EXE program, the speaker will
produce some more or less beautiful noise. Starting a new VDM session with
SOUND.EXE will prevent the first session's SOUND.EXE from executing because it
is switched to the background (the speaker system is not virtualized!).
The second session cannot access the speaker because it is blocked until it is
granted access to the speaker.
You cannot terminate the program by pressing "Enter" because the "PLAY"
instruction (refer to the program listing in Figure "SOUND.BAS Source Code")
could not be completed.
If the first session is switched back to the foreground, it resumes execution.
Pressing "Enter" ends session 1 and now session 2 has access to the speaker and
begins to play the music.
ΓòÉΓòÉΓòÉ 27.6. Lab Session 5: VDM Interprocess Communications ΓòÉΓòÉΓòÉ
The objective of this lab is to show that an OS/2 session can exchange data
with a DOS session in the same system.
In this exercise, you are required to start an OS/2 application program that
first creates a number of "named pipes". The OS/2 application then waits for
a DOS BASIC program to connect to the pipe. This connection is performed by
one thread. Afterward, the main OS/2 program sends data to change the screen
colors of various (connected) DOS BASIC programs.
ΓòÉΓòÉΓòÉ 27.6.1. Steps ΓòÉΓòÉΓòÉ
Perform the following steps:
1. Start the "PIPEOS2.EXE" program within an OS/2 windowed session.
Make certain that you use a numeric parameter to specify the number of
pipes for PIPEOS2.EXE to create.
2. When prompted, start a DOS windowed session.
3. Run the BASIC program called "PIPEDOS.BAS".
Type:
BASICA PIPEDOS
at the command line prompt.
4. Return to the OS/2 Windowed session.
5. Enter the letter that corresponds to the color you want the DOS window to
display.
To end the DOS BASIC program, send a "Q" from the OS/2 session.
To end the OS/2 session, enter null.
ΓòÉΓòÉΓòÉ 27.6.2. Expected Results ΓòÉΓòÉΓòÉ
The DOS session should have been able to connect to a single or many named
pipe(s) that were created and maintained by the OS/2 session. Afterward, data
was passed to the DOS session(s) in the form of single characters that altered
the color of the DOS screen.
After you have successfully completed the exercise, please note that this is
only one way of communicating between DOS sessions and OS/2 sessions.
ΓòÉΓòÉΓòÉ 27.6.3. Source Code PIPEDOS.BAS ΓòÉΓòÉΓòÉ
01' **********************************************************/
02' **********************************************************/
03' *** ***/
04' *** Program name: PIPEDOS.BAS ***/
05' *** ***/
06' *** Created : 05/10/90 ***/
07' *** ***/
08' *** Revised : ***/
09' *** ***/
10' *** Author : Tim Sennitt ***/
11' *** ***/
12' *** Purpose : To demonstrate the use of a named ***/
13' *** pipe to communicate to an OS/2 ***/
14' *** session. ***/
15' *** Compile : none ***/
16' *** ***/
17' *** Input param : none ***/
18' *** ***/
22' **********************************************************/
23' **********************************************************/
30 CLS:KEY OFF
40 COLOR 7,0
50 OPEN "r",1,"\PIPE\TIMSP",1
60 FIELD 1,1 AS A$
70 GET 1
80 IF A$="B" OR A$="b" THEN BKGRND = 9:GOTO 90 ' Blue
81 IF A$="C" OR A$="c" THEN BKGRND = 3:GOTO 90 ' Cyan
82 IF A$="G" OR A$="g" THEN BKGRND = 10:GOTO 90 ' Green
83 IF A$="P" OR A$="p" THEN BKGRND = 5:GOTO 90 ' Purple
84 IF A$="R" OR A$="r" THEN BKGRND = 12:GOTO 90 ' Red
85 IF A$="W" OR A$="w" THEN BKGRND = 7:GOTO 90 ' White
86 IF A$="Y" OR A$="y" THEN BKGRND = 6:GOTO 90 ' Yellow
87 IF A$="Q" OR A$="q" THEN SYSTEM ' exit system
90 COLOR 0,BKGRND:CLS:GOTO 70
ΓòÉΓòÉΓòÉ 27.6.4. Source Code PIPEOS2.C ΓòÉΓòÉΓòÉ
/**********************************************************/
/**********************************************************/
/*** ***/
/*** Program name: PIPEOS2.C ***/
/*** ***/
/*** Created : 16th May 1990 ***/
/*** ***/
/*** Revised : 26th February 1992 ***/
/*** ***/
/*** Author : Tim Sennitt, Dorle Hecker ***/
/*** ***/
/*** Purpose : To demonstrate the use of an OS/2 ***/
/*** created named pipe connecting to ***/
/*** many DOS sessions ***/
/*** ***/
/*** Compile : icc /O+ pipeos2.c ***/
/*** or : cl386 pipeos2.c ***/
/*** ***/
/*** Input param : A number between 1 and 255 ***/
/*** (number of pipe instances) ***/
/*** ***/
/**********************************************************/
/**********************************************************/
/*** DEFINES ***/
/**********************************************************/
#define INCL_DOS
#define INCL_DOSNMPIPES
/**********************************************************/
/*** INCLUDES and VARIABLES ***/
/**********************************************************/
#include <os2.h>
#include <stdlib.h>
#include <string.h>
#ifdef __IBMC__
void _System NewThread(ULONG threadArg);
#else
void NewThread(ULONG threadArg);
#endif
TID threadID[512];
HPIPE piphand[255];
ULONG threadArg, threadFlags, stack_size;
ULONG outbuffer, inbuffer, timeout, BytesWrit;
USHORT rc, loopsize, i;
char prep_string[11];
/**********************************************************/
/*** MAIN PROGRAM ***/
/**********************************************************/
main(argc, argv, envp)
int argc;
char *argv[];
char *envp[];
{
BOOL fEnd_Correct=FALSE;
threadFlags = 0; /* start thread immediatly */
stack_size = 1024; /* give stack size in bytes */
threadArg = 1;
if ( argc != 2 || (loopsize = atoi(argv[1])) == 0 )
{ printf("You have not specified the correct bacon size !\n");
printf("The syntax is PIPEOS2 NNNN (where NNNN is a \
number between 1 and255)\n");
exit(0);
} /*end-if*/
for (i = 1; i < loopsize+1; i++)
{
rc = DosCreateThread(&threadID[i], NewThread, i,
threadFlags, stack_size);
if (rc != 0)
{ printf("DosCreateThread error = %d\n",rc);
exit (1);
} /*end-if*/
printf("Pipe-Thread number %d created\n",i);
printf("Please start the DOS client\n");
} /*end-for*/
printf("Now lets send some data to it......\n");
/****************************************************************/
/* At this point we will loop getting keyboard input */
/* and writing this to our named pipe (until we enter null) */
/****************************************************************/
printf("ENTER\n [B]lue, [C]yan, [G]reen, [P]urple, \
[R]ed, [W]hite, [Y]ellow or [Q]uit\n");
gets(prep_string);
while (prep_string[0] != 0)
{
if (prep_string[0] == 'q' || prep_string[0] == 'Q')
{ for (i = 1; i < loopsize+1; i++)
{ rc = DosWrite(piphand[i],
(PVOID)prep_string,
strlen(prep_string),
&BytesWrit);
if (rc !=0) printf("Return code from DosWrite=%d\n",rc);
} /* end-for */
prep_string[0]=0; fEnd_Correct=TRUE;
}
else
{ for (i = 1; i < loopsize+1; i++)
{
rc = DosWrite(piphand[i],
(PVOID)prep_string,
strlen(prep_string),
&BytesWrit);
if (rc !=0) printf("Return code from DosWrite=%d\n",rc);
} /* end-for */
printf("ENTER\n [B]lue, [C]yan, [G]reen, [P]urple, \
[R]ed, [W]hite, [Y]ellow or [Q]uit\n");
gets(prep_string);
} /* endif */
} /* endwhile */
if (!fEnd_Correct)
{ prep_string[0]='q';
rc = DosWrite(piphand[i],
(PVOID)prep_string,
strlen(prep_string),
&BytesWrit);
if (rc !=0) printf("Return code from DosWrite=%d\n",rc);
}
exit(0);
}
/****************************************************************/
/* This is our thread process which creates N named pipes then */
/* waits for the DOS sessions to connect to them. */
/****************************************************************/
void NewThread(ULONG threadArg)
{
outbuffer = 25;
inbuffer = 25;
timeout = 200;
rc = DosCreateNPipe("\\PIPE\\TIMSP\0", /* create pipe */
&piphand[threadArg],
0x4081,
0x0008,
outbuffer,
inbuffer,
timeout);
if (rc != 0)
{ DosBeep(300,200); DosBeep(100,200);
exit(1);
}
DosBeep(300,200); DosBeep(600,200);
/****************************************************************/
/* now we wait for our DOS session to connect to us */
/****************************************************************/
rc = DosConnectNPipe(piphand[threadArg]);
if (rc != 0)
{ DosBeep(100,200);
exit(1);
}
DosBeep(600,200);
printf("DOS Session number %d connected\n",threadArg);
}
ΓòÉΓòÉΓòÉ 27.7. Lab Session 6: VDM Boot ΓòÉΓòÉΓòÉ
In this exercise, the student will create a new DOS Full Screen item in the
command prompts folder. This new DOS session will be configured so as to boot
a "shrink wrap" version of DOS 5.0 instead of utilizing OS/2 2.0s emulated
version of DOS.
In order to boot an 8086 kernel into a VDM, that kernel's boot record must be
obtained from either a bootable diskette, an image file of that diskette, or a
DOS hard disk partition.
The student will be required to configure a VDM which can, in turn, boot DOS
from any of these sources.
ΓòÉΓòÉΓòÉ 27.7.1. Steps ΓòÉΓòÉΓòÉ
1. Ask your instructor for a bootable DOS 5.0 diskette.
2. Create an image of this diskette, using the VMDISKS utility.
3. Copy a DOS session object onto the desktop.
4. Change the "DOS_STARTUP Drive" setting for it.
5. Try to boot this image.
6. Create another DOS object, using the C:\ITSCLABS\IBMDOS33.VMB image.
7. Boot this one as well.
8. Study the CONFIG.SYS of these DOS diskettes.
9. Check things like HPFS, XMS, EMS, mouse, etc.
ΓòÉΓòÉΓòÉ 27.7.2. Expected Results ΓòÉΓòÉΓòÉ
The student should learn:
That different versions of DOS can be booted from a VDM.
That these versions can all run parallel.
That these VMBOOT sessions have access to all OS/2 resources.
ΓòÉΓòÉΓòÉ 27.8. Lab Session 7: Windows Clipboard ΓòÉΓòÉΓòÉ
In this exercise, the student will get a feeling for the different clipboard
environments and data formats.
ΓòÉΓòÉΓòÉ 27.8.1. Steps ΓòÉΓòÉΓòÉ
1. Repeat the steps from lab session 3.
2. Start a Windows session.
3. Check the content of the Windows clipboard view utility.
4. Check the content of the PM clipboard view utility.
5. Issue the following commands:
COPY C:\ITSCLABS\PBR*.* C:\OS2\MDOS\WINOS2
COPY C:\ITSCLABS\WING*.* C:\OS2\MDOS\WINOS2
6. Register the Windows programs PaintBrush and WinGif under the Windows
Program Manager.
7. Start these two programs.
8. You can also install the same program directly under the Workplace Shell.
9. Try to start them as SAVDM, versus MAVDM, and check out the differences.
10. Try to modify the pasted data and copy it back into the clipboard.
11. Try to do the same with metafiles.
12. Try to do the same with text files.
13. Try to pass data from Windows to PM.
14. Start a second Windows Session and repeat the same steps.
15. Switch off the "public clipboards" and check if you can transfer data.
16. Check out the "import" and "export" features of the clipboard viewers.
17. Also check out the system editor, the picture view utility and some other
programs, installed in your productivity folder.
ΓòÉΓòÉΓòÉ 27.8.2. Expected Results ΓòÉΓòÉΓòÉ
The student should gain a better understanding of:
The clipboard architecture.
The different data formats.
Their implications.
What can and what cannot be transferred.
The local versus the public clipboard.
The different capabilities and functions among different PM and Windows
programs.
Starting Windows applications from Windows versus Workplace Shell.
ΓòÉΓòÉΓòÉ 28. Glossary ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ 28.1. aliased page ΓòÉΓòÉΓòÉ
aliased page
Under the 80386 paged memory implementation, a physical page in memory which is
referenced by two or more sets of page directory/page table entries, thereby
enabling different memory addresses to reference the same physical memory
location. This technique is used to implement the 64KB wraparound feature for
virtual 8086 mode, and for shared memory implementation.
ΓòÉΓòÉΓòÉ 28.2. ANSI ΓòÉΓòÉΓòÉ
ANSI
American National Standards Institute; U.S.-based organization which defines
standards for computing devices, protocols, programming languages, etc.
ΓòÉΓòÉΓòÉ 28.3. API ΓòÉΓòÉΓòÉ
API
Application Programming Interface; term used to describe the set of functions
by which an application may gain access to operating system services.
ΓòÉΓòÉΓòÉ 28.4. A20 address line ΓòÉΓòÉΓòÉ
A20 address line
The 21st address line of 80x86 CPUs; the first 20 address lines are numbered 0
to 19. Enabling the A20 address line allows access to the HMA. Note, however,
that many applications assume that the A20 address line is permanently
disabled, so all programs which use the A20 address line should disable it when
they terminate.
ΓòÉΓòÉΓòÉ 28.5. BIOS ΓòÉΓòÉΓòÉ
BIOS
Basic Input/Output System; code which controls the interface between a system
and its attached devices, at the hardware level.
ΓòÉΓòÉΓòÉ 28.6. bit ΓòÉΓòÉΓòÉ
bit
A binary digit, which may be either zero or one. Bits are represented within a
computing device by the presence or absence of an electrical or magnetic pulse
at a particular point, indicating a one or a zero respectively.
ΓòÉΓòÉΓòÉ 28.7. block device driver ΓòÉΓòÉΓòÉ
block device driver
A device driver for a block device, which, like a disk drive, reads and writes
blocks of data identified by some form of block address. Block devices are
identified by a drive letter that DOS assigns (D:, E:, and so on).
ΓòÉΓòÉΓòÉ 28.8. Boot Manager ΓòÉΓòÉΓòÉ
Boot Manager
Feature of OS/2 Version 2.0 which allows multiple partitions to exist on fixed
disks in the same machine, with a separate operating system on each partition.
At boot time, the user may select the desired operating system with which to
start the machine.
ΓòÉΓòÉΓòÉ 28.9. byte ΓòÉΓòÉΓòÉ
byte
A logical data unit composed of eight binary digits (bits).
ΓòÉΓòÉΓòÉ 28.10. CD-ROM ΓòÉΓòÉΓòÉ
CD-ROM
Compact Disk Read-Only Memory; technology where data is stored on an optical
disk for reading by a computer system equipped with an appropriate reading
device. CD-ROM storage media may not be updated by the computer system,
although certain implementations allow the media to be erased and re-written.
ΓòÉΓòÉΓòÉ 28.11. DDE ΓòÉΓòÉΓòÉ
DDE
See Dynamic Data Exchange.
ΓòÉΓòÉΓòÉ 28.12. debugging ΓòÉΓòÉΓòÉ
debugging
The process of removing "bugs" or errors from application code.
ΓòÉΓòÉΓòÉ 28.13. device driver ΓòÉΓòÉΓòÉ
device driver
Code which handles the translation of generic device commands into specific
commands for the required physical device and vice versa, allowing operating
system interaction with physical devices attached to the system.
ΓòÉΓòÉΓòÉ 28.14. DLL ΓòÉΓòÉΓòÉ
DLL
Dynamic link library; application module containing routines and/or resources,
which is dynamically linked with its parent application at load time or runtime
rather than during the linkage editing process. The use of DLLs enables
decoupling of application routines and resources from the parent program,
enhancing code independence, facilitating maintenance and reducing resident
memory consumption.
ΓòÉΓòÉΓòÉ 28.15. DMA ΓòÉΓòÉΓòÉ
DMA
Direct memory addressing; technique by which transfers to and from system
memory are made by an independent control chip rather than by the system's main
processor, thereby resulting in improved overall performance.
ΓòÉΓòÉΓòÉ 28.16. DOS ΓòÉΓòÉΓòÉ
DOS
Disk operating system; generally used in reference to IBM DOS, the
single-tasking 16-bit real-mode operating system designed for Intel 8086
processors, and developed by Microsoft Corporation as MS DOS in the early
1980s. IBM subsequently licensed MS DOS for use on IBM Personal Computer and
Personal System/2 machines, and has since undertaken joint development of later
versions of the operating system in conjunction with Microsoft.
ΓòÉΓòÉΓòÉ 28.17. DOSEM ΓòÉΓòÉΓòÉ
DOSEM
See DOS Emulation.
ΓòÉΓòÉΓòÉ 28.18. DOS Emulation ΓòÉΓòÉΓòÉ
DOS Emulation
Subcomponent of the Multiple Virtual DOS Machines component of OS/2 Version
2.0, which provides emulation of DOS software services to applications running
in virtual DOS machines. DOS Emulation either provides an equivalent service or
invokes the appropriate protected mode service within the OS/2 Version 2.0
kernel. Also known as DOSEM.
ΓòÉΓòÉΓòÉ 28.19. DOS partition ΓòÉΓòÉΓòÉ
DOS partition
Fixed disk partition which is formatted for the DOS operating system, typically
using the FAT file system.
ΓòÉΓòÉΓòÉ 28.20. DOS Protected Mode Interface ΓòÉΓòÉΓòÉ
DOS Protected Mode Interface
Architecture whereby real mode applications may gain access to protected mode
services in 80286, 80386 or 80486 systems, by acting as "clients" and making
requests to a protected mode "server" task. DPMI is typically used to enable
DOS applications and DOS extenders to function correctly in a multitasking,
protected mode environment.
ΓòÉΓòÉΓòÉ 28.21. DOS Settings ΓòÉΓòÉΓòÉ
DOS Settings
Function provided by the Multiple Virtual DOS Machines component of OS/2
Version 2.0 which allows a user to customize the behavior of a virtual DOS
machine to suit the application running in that virtual DOS machine. Settings
may be configured once by the user and saved, or applications may provide their
own configuration information which is used by the virtual DOS machine upon
startup.
ΓòÉΓòÉΓòÉ 28.22. DPMI ΓòÉΓòÉΓòÉ
DPMI
See DOS Protected Mode Interface.
ΓòÉΓòÉΓòÉ 28.23. dynamic data exchange ΓòÉΓòÉΓòÉ
dynamic data exchange
Interprocess communication protocol used by applications to define dynamic
links. Information updated in one application is automatically reflected in
other applications linked to the first application via DDE. DDE is supported
under OS/2 Version 2.0 between Windows applications, between Presentation
Manager applications, and between a Windows application and a Presentation
Manager application.
ΓòÉΓòÉΓòÉ 28.24. EMM ΓòÉΓòÉΓòÉ
EMM
See Expanded Memory Manager.
ΓòÉΓòÉΓòÉ 28.25. EMS ΓòÉΓòÉΓòÉ
EMS
Expanded Memory Specification; term used to describe the standard developed by
Lotus, Intel and Microsoft for access to expanded memory by real mode 80x86
applications.
ΓòÉΓòÉΓòÉ 28.26. EMS handle ΓòÉΓòÉΓòÉ
EMS handle
EMS implementations must provide for between 64 and 255 virtual memory objects
that can be allocated by EMS applications. Each memory object is referred to
by an associated EMS handle. A handle to an object is returned when an
allocation request is granted. Allocation is in page sized units. Handles can
be named, allowing sharing between processes.
ΓòÉΓòÉΓòÉ 28.27. EMS logical page ΓòÉΓòÉΓòÉ
EMS logical page
Each memory object that is allocated is divided into logical pages. To refer to
a particular piece of allocated memory, an application uses a handle to point
to the object and a logical page number (starting from 0) to indicate the
offset into the object. Logical pages are always relative to a handle.
ΓòÉΓòÉΓòÉ 28.28. EMS page ΓòÉΓòÉΓòÉ
EMS page
Memory is allocated by EMS in page sized units; the standard page size is 16KB.
Optionally, an implementation can also offer "raw" pages at whatever size is
convenient, although 16KB pages must always be supported. The raw page size
can be set to 16KB to provide only a single page size.
ΓòÉΓòÉΓòÉ 28.29. EMS physical page ΓòÉΓòÉΓòÉ
EMS physical page
Just as EMS object handles use logical pages indexed from 0, EMS Physical
Segments are also numbered from 0. A particular address that can have expanded
memory mapped into it can be referred to either by the address of a physical
segment or by a physical page number. These are two alternate ways to refer to
the same location in the 8086 addressable space. By convention, physical page
0 is the beginning of the mappable window and succeeding physical pages occupy
contiguous pages in the window. Mappable physical pages in conventional memory
(<640KB) follow the mappable window in this numbering scheme. Note that in EMS
terminology a "physical page" does not mean physical memory; it is a way to
refer to a particular address below 1MB.
ΓòÉΓòÉΓòÉ 28.30. EMS physical segment ΓòÉΓòÉΓòÉ
EMS physical segment
EMS works by remapping addresses in the 1MB 8086 addressable space to expanded
memory. An EMS physical segment is a 16KB block of addresses in the 1MB 8086
address space, that can be mapped to part of an expanded memory allocation.
When a physical segment is mapped to an EMS logical page, accessing the
physical segment accesses the logical page. Logical pages can only be accessed
through physical segments.
ΓòÉΓòÉΓòÉ 28.31. EMS register set ΓòÉΓòÉΓòÉ
EMS register set
EMS memory mapping is accomplished by a set of registers, one for each mappable
physical page. A register specifies the current associated logical page.
Registers can be unmapped. EMS optionally offers multiple alternate register
sets and DMA register sets. A register set is, in essence, a page table for
mappable windows. Alternate register sets then, are multiple page tables, only
one of which is active at any given time.
ΓòÉΓòÉΓòÉ 28.32. enhanced mode ΓòÉΓòÉΓòÉ
enhanced mode
See 386 enhanced mode.
ΓòÉΓòÉΓòÉ 28.33. expanded memory ΓòÉΓòÉΓòÉ
expanded memory
Memory in 80x86 processors, typically on special hardware adapters, which is
accessed by real mode 8086 applications using the LIM EMS specification. Up to
32MB of expanded memory are supported by EMS Version 4.0.
ΓòÉΓòÉΓòÉ 28.34. Expanded Memory Manager ΓòÉΓòÉΓòÉ
Expanded Memory Manager
Virtual device driver which provides emulation of LIM EMS Version 4.0 services
to DOS applications running in virtual DOS machines. Unlike most virtual
device drivers, the Expanded Memory Manager does not use a physical device
driver, but interacts directly with the operating system's memory manager to
map EMS memory requests into the system's linear address space. Also known as
EMM.
ΓòÉΓòÉΓòÉ 28.35. extended memory ΓòÉΓòÉΓòÉ
extended memory
Memory in 80286, 80386, and 80486-based machines which is located above the 1MB
address boundary and accessed using the LIMA XMS specification.
ΓòÉΓòÉΓòÉ 28.36. extended memory block (EMB) ΓòÉΓòÉΓòÉ
extended memory block (EMB)
Under the XMS specification, a block of extended memory located at or above 1MB
+ 64KB, which can only be used for data storage.
ΓòÉΓòÉΓòÉ 28.37. Extended Memory Manager ΓòÉΓòÉΓòÉ
Extended Memory Manager
Virtual device driver which provides emulation of LIMA XMS services to DOS
applications running in virtual DOS machines. Unlike most virtual device
drivers, the Extended Memory Manager does not use a physical device driver, but
interacts directly with the operating system's memory manager to map XMS memory
requests into the system's linear address space. Also known as XMM.
ΓòÉΓòÉΓòÉ 28.38. FAT ΓòÉΓòÉΓòÉ
FAT
File Allocation Table; term used to describe the file system implemented by DOS
and also supported by OS/2. This file system uses a file allocation table to
contain the physical sector addresses of all files on the disk. The FAT file
system is supported by OS/2 Version 2.0, along with the newer HPFS and other
installable file systems.
ΓòÉΓòÉΓòÉ 28.39. flat memory model ΓòÉΓòÉΓòÉ
flat memory model
Conceptual view of real memory implemented by OS/2 Version 2.0, where the
operating system regards memory as a single linear address range of up to 4GB.
ΓòÉΓòÉΓòÉ 28.40. FSACCESS ΓòÉΓòÉΓòÉ
FSACCESS
Utility provided with the VMB component of OS/2 Version 2.0, which allows the
user to redirect logical drive letters in a VMB session, in order to avoid
clashes and ensure compatibility with drive letters used by other processes.
ΓòÉΓòÉΓòÉ 28.41. FSFILTER ΓòÉΓòÉΓòÉ
FSFILTER
Utility provided with the VMB component of OS/2 Version 2.0, which allows the
operating system loaded within the VMB session to recognize and access HPFS
drives and large partitions which would otherwise not be accessible by that
operating system. FSFILTER traps and redirects all disk I/O through OS/2
Version 2.0's own device drivers.
ΓòÉΓòÉΓòÉ 28.42. GB ΓòÉΓòÉΓòÉ
GB
Gigabyte; 1024 megabytes, or 1024 x 1024 x 1024 bytes.
ΓòÉΓòÉΓòÉ 28.43. high memory area ΓòÉΓòÉΓòÉ
high memory area
The first 64KB of extended memory above 1MB. The High Memory Area (HMA) is
unique in that code can be executed in it while in real mode, using the A20
address line wraparound. The HMA officially starts at FFFF:0010h and ends at
FFFF:FFFFh, making it slightly less than 64KB in length.
ΓòÉΓòÉΓòÉ 28.44. HIMEM.SYS ΓòÉΓòÉΓòÉ
HIMEM.SYS
The Extended Memory Manager in general use for DOS.
ΓòÉΓòÉΓòÉ 28.45. HMA ΓòÉΓòÉΓòÉ
HMA
See high memory area.
ΓòÉΓòÉΓòÉ 28.46. HPFS ΓòÉΓòÉΓòÉ
HPFS
High performance file system; file system first implemented under OS/2 Version
1.2, offering enhanced performance over the original FAT file system
implemented in DOS and prior versions of OS/2. HPFS is an optional
installation item under OS/2 Version 2.0; the FAT system may also be used to
retain compatibility with DOS.
ΓòÉΓòÉΓòÉ 28.47. Interrupt ΓòÉΓòÉΓòÉ
Interrupt
An electrical signal generated by a device or adapter within the system, to
inform the operating system that an event, such as the completion of an I/O
operation, has occurred. The operating system then processes the interrupt by
passing control to a particular piece of code which handles the appropriate
action in response to the event indicated.
ΓòÉΓòÉΓòÉ 28.48. I/O ΓòÉΓòÉΓòÉ
I/O
Input/Output; term used to collectively describe the techniques and devices
through which a computer system interfaces with storage devices, external
systems and the user.
ΓòÉΓòÉΓòÉ 28.49. IOPL ΓòÉΓòÉΓòÉ
IOPL
Input Output Privilege Level; term used in Intel 80x86 processor terminology to
refer to tasks executing at privilege level 2, which have the authority to
directly access physical I/O devices.
ΓòÉΓòÉΓòÉ 28.50. KB ΓòÉΓòÉΓòÉ
KB
Kilobyte; 1024 bytes.
ΓòÉΓòÉΓòÉ 28.51. LIM ΓòÉΓòÉΓòÉ
LIM
Lotus-Intel-Microsoft; term used in reference to the consortium which developed
the Expanded Memory Specification (EMS), which provides a standard interface
for the use of expanded memory by real mode 80x86 applications.
ΓòÉΓòÉΓòÉ 28.52. LIMA ΓòÉΓòÉΓòÉ
LIMA
Lotus-Intel-Microsoft-AST; term used in reference to the consortium which
developed the Extended Memory Specification (XMS), which provides a standard
interface for the use of extended memory by real mode 80x86 applications.
ΓòÉΓòÉΓòÉ 28.53. mappable window ΓòÉΓòÉΓòÉ
mappable window
Under EMS, the mappable window is composed of EMS physical segments. Called the
page frame in normal EMS terminology, this is the range of real mode addresses
used by most applications to reference expanded memory. The window must be at
least 64KB and located between 640KB and 1MB.
ΓòÉΓòÉΓòÉ 28.54. MAVDM ΓòÉΓòÉΓòÉ
MAVDM
See Multiple Application VDM.
ΓòÉΓòÉΓòÉ 28.55. MB ΓòÉΓòÉΓòÉ
MB
Megabyte; 1024 kilobytes, or 1024 x 1024 bytes.
ΓòÉΓòÉΓòÉ 28.56. Multiple Application VDM ΓòÉΓòÉΓòÉ
Multiple Application VDM
Method of running Windows applications under OS/2 Version 2.0, whereby the
Windows Program Manager is started in a virtual DOS machine, and Windows
applications are started using the Program Manager. Errors in any Windows
application may potentially result in termination of the entire VDM This is
method of running Windows applications is not recommended unless applications
require communication using shared memory.
ΓòÉΓòÉΓòÉ 28.57. Multiple Virtual DOS Machines ΓòÉΓòÉΓòÉ
Multiple Virtual DOS Machines
Feature of OS/2 Version 2.0 which enables multiple DOS applications to execute
concurrently in fullscreen or windowed mode under OS/2 Version 2.0, in
conjunction with other 16-bit or 32-bit applications, with full pre-emptive
multitasking and memory protection between tasks. See also virtual DOS
machine.
ΓòÉΓòÉΓòÉ 28.58. MVDM ΓòÉΓòÉΓòÉ
MVDM
See Multiple Virtual DOS Machines.
ΓòÉΓòÉΓòÉ 28.59. NPX ΓòÉΓòÉΓòÉ
NPX
Numeric Processor Extension; term used in reference to the exception condition
generated by the 80386 processor when an application issues a numeric
coprocessor instruction in a machine with no coprocessor installed. Note that
OS/2 Version 2.0 will trap the NPX exception and emulate the numeric
coprocessor function within the operating system, returning the result to the
application exactly as if a physical coprocessor were installed.
ΓòÉΓòÉΓòÉ 28.60. NULL ΓòÉΓòÉΓòÉ
NULL
A binary zero. In "C" programming terms, NULL is typically used to refer to a
pointer which is set to the binary zero value.
ΓòÉΓòÉΓòÉ 28.61. Object Linking and Embedding ΓòÉΓòÉΓòÉ
Object Linking and Embedding
Protocol for linking multiple data formats (such as text, image, voice etc.) to
create a compound document, which may be viewed and manipulated as a coherent
whole.
ΓòÉΓòÉΓòÉ 28.62. OLE ΓòÉΓòÉΓòÉ
OLE
See Object Linking and Embedding.
ΓòÉΓòÉΓòÉ 28.63. OS mappable window ΓòÉΓòÉΓòÉ
OS mappable window
In addition to the normal mappable window, additional memory below 1MB can also
be remapped. This is typically all memory from 256KB to 640KB. This is used
by task management programs (such as Microsoft Windows) to map a different
section of expanded memory to this region for each application it runs. An
application can, however, remap this memory. No protection is provided. This
memory is automatically allocated to a special handle and is mapped when EMS
starts, before the operating system touches the memory.
ΓòÉΓòÉΓòÉ 28.64. page ΓòÉΓòÉΓòÉ
page
Granular unit for memory management using the 80386 and 80486 processors. A
page is a 4KB contiguous unit of memory, which the processor manipulates as a
single entity for the purpose of memory manipulation and swapping.
ΓòÉΓòÉΓòÉ 28.65. physical device driver ΓòÉΓòÉΓòÉ
physical device driver
Protected mode device driver used by the OS/2 Version 2.0 operating system and
protected mode processes to access hardware devices. DOS applications running
in virtual DOS machines do not directly access physical device drivers; virtual
device drivers are utilized by these applications, and the virtual device
driver in turn communicates with the physical device driver.
ΓòÉΓòÉΓòÉ 28.66. PIC ΓòÉΓòÉΓòÉ
PIC
Programmable Interrupt Controller; component of the 80386 processor complex
which handles interrupts generated by devices within the system.
ΓòÉΓòÉΓòÉ 28.67. POST ΓòÉΓòÉΓòÉ
POST
Power-On Self-Test; code typically stored on ROM (although the IBM PS/2 Model
90 and 95 allow POST code to be stored on fixed disk) which is invoked when a
machine is powered on, in order to test the hardware.
ΓòÉΓòÉΓòÉ 28.68. privilege level ΓòÉΓòÉΓòÉ
privilege level
In the context of the Intel 80386 processor architecture, the level of
authority at which a task executes. There are four available privilege levels;
under OS/2 Version 2.0, Level 0 is used for operating system kernel code; Level
1 is not used; Level 2 is used for applications which directly address I/O
devices (such as communications applications); Level 3 is used for general
application code. In many publications, these protection levels are referred
to as "rings", since the protection scheme of the 80386 is often depicted
diagrammatically as a series of concentric circles.
ΓòÉΓòÉΓòÉ 28.69. protected mode ΓòÉΓòÉΓòÉ
protected mode
Mode of operation for the Intel 80286 and 80386/80486 processors, whereby the
address space is expanded to 16MB (80286) or 4GB (80386/80486), and memory
references are translated via segment selector and offset, enabling full memory
protection between processes executing in the system. With the 80386/80486,
paging is available in protected mode.
ΓòÉΓòÉΓòÉ 28.70. RAM ΓòÉΓòÉΓòÉ
RAM
Random Access Memory; term used to describe memory which may be dynamically
read and written by a processor or other device during system operations. RAM
is typically used to store program instructions and data which not being
operated upon by the processor at the current moment in time, but which are
required for the logical unit of work currently being carried out.
ΓòÉΓòÉΓòÉ 28.71. real mode ΓòÉΓòÉΓòÉ
real mode
(1) Default mode of operation for the Intel 80286 and 80386/80486 processors,
and the only mode of operation for the 8086 processor. In real mode, the
processor acts as a 16-bit device, its physical memory address space is limited
to 1MB, and memory references translate directly to physical addresses. With
the 80386 and 80486, paging is not supported in real mode. (2) Execution mode
for Windows 3.0, which provides applications with up to 640KB of conventional
memory (384KB after loading DOS, Windows and other memory-resident software)
and which supports expanded memory using LIM EMS Version 4.0 specifications.
ΓòÉΓòÉΓòÉ 28.72. ROM ΓòÉΓòÉΓòÉ
ROM
Read-Only Memory; term used to describe memory which may be read, but not
written to, during system operations. ROM is typically used to store basic
hardware initialization instructions, BIOS or self-testing code, which is
required to be available prior to accessing the disk subsystem.
ΓòÉΓòÉΓòÉ 28.73. SAVDM ΓòÉΓòÉΓòÉ
SAVDM
See Single Application VDM.
ΓòÉΓòÉΓòÉ 28.74. Seamless Windows ΓòÉΓòÉΓòÉ
Seamless Windows
Method of running Windows applications under OS/2 Version 2.0, whereby the
application runs on the Workplace Shell in a similar manner to a normal
Presentation Manager application. The user is not normally aware that the
application is a Windows application. This is the preferred method of running
Windows applications, and is similar to the Single Application VDM method.
ΓòÉΓòÉΓòÉ 28.75. segment ΓòÉΓòÉΓòÉ
segment
Unit of memory addressable by the Intel 80x86 processors. With the 8086 and
80286 processors, a segment may be from 16 bytes to 64KB in size. With the
80386 and 80486 processors, a segment may be up to 4GB in size.
ΓòÉΓòÉΓòÉ 28.76. segment selector ΓòÉΓòÉΓòÉ
segment selector
Field which specifies the base address of a memory segment when using the
segmented memory model. The selector is 16 bits in length on an 80286
processor, and 32 bits in length on an 80386 or 80486 processor.
ΓòÉΓòÉΓòÉ 28.77. service layer ΓòÉΓòÉΓòÉ
service layer
Executable code which performs the operating system function requested by an
application using an API.
ΓòÉΓòÉΓòÉ 28.78. signal ΓòÉΓòÉΓòÉ
signal
An event occurring within the operating system which will effect the execution
of the current process; for example, the user may hit the Ctrl+Break key
combination, which would result in a signal being generated, instructing the
operating system to terminate the current process. Signals typically override
the dispatching algorithms of the operating system.
ΓòÉΓòÉΓòÉ 28.79. Single Application VDM ΓòÉΓòÉΓòÉ
Single Application VDM
Method of running Windows applications under OS/2 Version 2.0, whereby a
virtual DOS machine is created for each Windows application. The application
runs within this VDM, and is protected from any other application running in
the system. This is the recommended way to run Windows applications if not
running seamlessly on the Workplace Shell desktop.
ΓòÉΓòÉΓòÉ 28.80. standard mode ΓòÉΓòÉΓòÉ
standard mode
Execution mode for Windows 3.0, available when running on 80286, 80386 or 80486
systems. Standard mode makes use of these processors' protected mode to
provide access to up to 16MB of extended memory. Windows applications must
conform to memory management rules in order to use standard mode.
ΓòÉΓòÉΓòÉ 28.81. stub device driver ΓòÉΓòÉΓòÉ
stub device driver
Virtual device drivers include a stub so that the DOS application can detect
and address the device driver. This stub device driver executes in V86 mode
within each VDM, while the main portion of the virtual device driver executes
in protected mode.
ΓòÉΓòÉΓòÉ 28.82. stub virtual DOS kernel ΓòÉΓòÉΓòÉ
stub virtual DOS kernel
Portion of the MVDM component's DOS kernel which is loaded into each VDM. DOS
services are either provided directly by the stub virtual DOS kernel, or are
routed to the OS/2 protected mode kernel.
ΓòÉΓòÉΓòÉ 28.83. task state segment ΓòÉΓòÉΓòÉ
task state segment
Area of memory containing information relating to the current machine state,
including CPU register contents, and the current software state of a task, such
as file descriptors and priority information.
ΓòÉΓòÉΓòÉ 28.84. TSR ΓòÉΓòÉΓòÉ
TSR
Terminate and Stay Resident; term used to describe DOS applications which
modify interrupt vectors to insert their own interrupt processing code. This
technique is used frequently by low-level utility programs, device drivers and
other system code such as network drivers. TSR programs use memory within the
DOS address space, thus leaving less memory available for application use.
ΓòÉΓòÉΓòÉ 28.85. TSS ΓòÉΓòÉΓòÉ
TSS
See task state segment.
ΓòÉΓòÉΓòÉ 28.86. UMB ΓòÉΓòÉΓòÉ
UMB
See upper memory block.
ΓòÉΓòÉΓòÉ 28.87. upper memory block ΓòÉΓòÉΓòÉ
upper memory block
Under XMS, a block of memory available on some 80x86-based machines, and
located between DOS's 640KB limit and the 1MB address space boundary. The
number, size, and location of these blocks may vary widely depending on the
types of hardware adapter cards installed in the machine.
ΓòÉΓòÉΓòÉ 28.88. VDDM ΓòÉΓòÉΓòÉ
VDDM
See Virtual Device Driver Manager.
ΓòÉΓòÉΓòÉ 28.89. VDM ΓòÉΓòÉΓòÉ
VDM
See Virtual DOS Machine.
ΓòÉΓòÉΓòÉ 28.90. virtual device driver ΓòÉΓòÉΓòÉ
virtual device driver
Form of device driver used by DOS applications executing in a virtual DOS
machine, in order to access devices which must be shared with other processes
in the system, such as the screen or mouse. A virtual device driver typically
maps DOS device commands to the physical device driver in the protected mode
environment under OS/2 Version 2.0.
ΓòÉΓòÉΓòÉ 28.91. Virtual Device Driver Manager ΓòÉΓòÉΓòÉ
Virtual Device Driver Manager
Subcomponent of the Multiple Virtual DOS Machines component of OS/2 Version
2.0, which loads, initializes, and communicates with virtual device drivers.
Also known as the VDDM.
ΓòÉΓòÉΓòÉ 28.92. Virtual Device Helper ΓòÉΓòÉΓòÉ
Virtual Device Helper
Set of operating system services used by virtual device drivers to request,
release and manipulate system resources.
ΓòÉΓòÉΓòÉ 28.93. virtual DOS machine ΓòÉΓòÉΓòÉ
virtual DOS machine
A protected mode process under OS/2 Version 2.0 which emulates a DOS operating
system environment, such that DOS applications executing within the virtual
machine operate exactly as if they were running under DOS. DOS virtual machines
support both text and graphics applications. Virtual DOS machines make use of
the virtual 8086 mode of the 80386 and 80486 processors.
ΓòÉΓòÉΓòÉ 28.94. Virtual DOS Machine Manager ΓòÉΓòÉΓòÉ
Virtual DOS Machine Manager
Subcomponent of the Multiple Virtual DOS Machines component of OS/2 Version
2.0, which provides the ability to start and interact with DOS applications
running in virtual DOS machines. The virtual DOS machine manager operates in
conjunction with the Virtual Device Driver Manager.
ΓòÉΓòÉΓòÉ 28.95. VEMM ΓòÉΓòÉΓòÉ
VEMM
See Virtual Expanded Memory Manager.
ΓòÉΓòÉΓòÉ 28.96. Virtual Expanded Memory Manager ΓòÉΓòÉΓòÉ
Virtual Expanded Memory Manager
Virtual device driver which provides emulation of LIM EMS Version 4.0 services
to DOS applications running in virtual DOS machines. Unlike most virtual
device drivers, the Virtual Expanded Memory Manager does not use a physical
device driver, but interacts directly with the operating system's memory
manager to map EMS memory requests into the system's linear address space.
Also known as VEMM.
ΓòÉΓòÉΓòÉ 28.97. virtual machine ΓòÉΓòÉΓòÉ
virtual machine
See virtual DOS machine.
ΓòÉΓòÉΓòÉ 28.98. VMB ΓòÉΓòÉΓòÉ
VMB
Component of OS/2 Version 2.0 which operates in conjunction with MVDM component
to allow a real copy of DOS or another real mode operating system to be loaded
into a virtual DOS machine. VMB allows the execution under OS/2 Version 2.0 of
applications which exploit specific features of an operating system or version,
and which cannot be supported using DOS Emulation.
ΓòÉΓòÉΓòÉ 28.99. VMB session ΓòÉΓòÉΓòÉ
VMB session
A virtual DOS machine in which an operating system has been loaded using the
VMB component of OS/2 Version 2.0.
ΓòÉΓòÉΓòÉ 28.100. virtual machine monitor ΓòÉΓòÉΓòÉ
virtual machine monitor
Routine supplied by operating systems which utilize the virtual 8086 mode of
the 80386 processor, to provide emulation of interrupts and exceptions
resulting when an 8086 application issues an instruction which cannot be
executed in virtual 8086 mode. The 8086 Emulation component of MVDM is a
virtual machine monitor.
ΓòÉΓòÉΓòÉ 28.101. Virtual Programmable Interrupt Controller ΓòÉΓòÉΓòÉ
Virtual Programmable Interrupt Controller
Virtual device driver used in the Multiple Virtual DOS Machines component of
OS/2 Version 2.0 to emulate DOS interrupt services, allowing DOS applications
running in virtual DOS machines to issue and receive interrupts.
ΓòÉΓòÉΓòÉ 28.102. virtual 8086 mode ΓòÉΓòÉΓòÉ
virtual 8086 mode
Mode of operation of the Intel 80386 and 80486 processors, which allows the
processor to execute multiple concurrent tasks with each regarding the
processor as its own distinct 8086 processor. This mode of operation provides
full pre-emptive multitasking and full memory protection between the virtual
8086 tasks. Also known as V86 mode.
ΓòÉΓòÉΓòÉ 28.103. VMDISK ΓòÉΓòÉΓòÉ
VMDISK
Utility provided with the VMB component of OS/2 Version 2.0, which allows the
user to create diskette images which may then be used to load specific versions
of DOS or other real mode operating systems into a virtual DOS machine using
VMB.
ΓòÉΓòÉΓòÉ 28.104. watchdog timer ΓòÉΓòÉΓòÉ
watchdog timer
Hardware timer provided by the 80386 processor to ensure that 8086 applications
running in virtual 8086 mode do not disable interrupts for an unnecessarily
long period. Such lengthy disabling may cause unrecoverable system errors.
The watchdog timer generates periodic non-maskable interrupts which allow an
operating system to detect an errant 8086 application and terminate it.
ΓòÉΓòÉΓòÉ 28.105. windows ΓòÉΓòÉΓòÉ
windows
In this document, generally refers to Microsoft Windows 3.0. Exceptions are
noted in the text.
ΓòÉΓòÉΓòÉ 28.106. WIN-OS/2 kernel ΓòÉΓòÉΓòÉ
WIN-OS/2 kernel
Portion of MVDM which services Windows function calls from applications running
within a VDM. The WIN-OS/2 kernel provides support for Windows applications in
VDMs under OS/2 Version 2.0.
ΓòÉΓòÉΓòÉ 28.107. Workplace Shell ΓòÉΓòÉΓòÉ
Workplace Shell
Standard user interface component of OS/2 Version 2.0 that provides an
object-oriented interface for the end user. The implementation of the
Workplace Shell is based upon the system object model.
ΓòÉΓòÉΓòÉ 28.108. Workplace Shell object ΓòÉΓòÉΓòÉ
Workplace Shell object
An object created by the Workplace Shell, typically at the request of the user
or an application. A Workplace Shell object is very similar in concept to an
application object, in that it possesses data and methods that operate upon
that data. See also application object.
ΓòÉΓòÉΓòÉ 28.109. XMM ΓòÉΓòÉΓòÉ
XMM
See Extended Memory Manager.
ΓòÉΓòÉΓòÉ 28.110. 386 enhanced mode ΓòÉΓòÉΓòÉ
386 enhanced mode
Execution mode for Windows 3.0, available when running on 80386 or 80486
systems only. 386 enhanced mode makes use of the virtual memory capabilities
of the the processor, and allows use of certain 32-bit functions. Applications
must conform to memory management rules in order to use 386 enhanced mode.
ΓòÉΓòÉΓòÉ 28.111. 80386 ΓòÉΓòÉΓòÉ
80386
Intel 80386 microprocessor; the 32-bit processor upon which the OS/2 Version
2.0 operating system is based.
ΓòÉΓòÉΓòÉ 28.112. 80486 ΓòÉΓòÉΓòÉ
80486
Intel 80486 microprocessor; a 32-bit processor which implements a superset of
the 80386 processor instruction set.
ΓòÉΓòÉΓòÉ 28.113. 8086 Emulation ΓòÉΓòÉΓòÉ
8086 Emulation
Subcomponent of the Multiple Virtual DOS Machines component of OS/2 Version
2.0, which provides emulation of Intel 8086 processor services by utilizing the
virtual 8086 mode of the 80386 processor.
ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
Accessible only if the A20 address line is active
ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
These are values implied by the specifications. Values in practice will be
considerably lower. More reasonable values are 1MB for EMBs and 0KB to 32KB
for UMBs.
ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
OS/2 VIO applications may also use the Presentation Manager clipboard, by using
the appropriate Win calls; for example, CTC's SPF/2** editor provides this
function.