home *** CD-ROM | disk | FTP | other *** search
/ The Developer Connection…ice Driver Kit for OS/2 3 / DEV3-D1.ISO / docs / os21unl.inf (.txt) < prev    next >
Encoding:
OS/2 Help File  |  1993-10-28  |  221.9 KB  |  2,764 lines

  1.  
  2. ΓòÉΓòÉΓòÉ 1. And the Readers Say . . . . ΓòÉΓòÉΓòÉ
  3.  
  4. OS/2 2.1 Unleashed should be read cover to cover. I highly recommend this book 
  5. to OS/2 users of all experience levels, from beginner to advanced. 
  6.  
  7. -John Hoffman, NBC 
  8.  
  9. As an experienced user of OS/2 and PCs in general, it's my opinion that users 
  10. new to OS/2 will not be left confused by nor will advanced users be left 
  11. disappointed by OS/2 2.1 Unleashed. Recommended without reservation. And I 
  12. can't wait to get hold of the second edition! 
  13.  
  14. -Bob Weeks 
  15.  
  16. OS/2 2.1 Unleashed is by far and away the best and most complete authority on 
  17. OS/2 2.1. The text is useful for both the novice and the experienced user. 
  18.  
  19. -Ray Theiss, Team OS/2 
  20.  
  21. This is far and above the best book about OS/2 that I've ever seen. In fact, 
  22. it's probably the best book on any operating system I've read in the past 15 
  23. years! 
  24.  
  25. -Chip Rabinowitz, Chief Technical Officer, Innovative Data Concepts, Inc. 
  26.  
  27. It's the book I would have written if I had the technical knowledge, the 
  28. editorial sophistication, and the dedication to the dissemination of knowledge 
  29. so thoroughly demonstrated by Moskowitz and Kerr, et al. 
  30.  
  31. -Adrian Brancato Technical Services, N.C. Department of Corrections 
  32.  
  33. In my opinion, OS/2 2.1 Unleashed is the most comprehensive (read best!) book 
  34. about OS/2 available anywhere. The book gets into all aspects of OS/2 and will 
  35. likely become the premier reference for everyone that has a question about 
  36. OS/2. -Steven Hoagland 
  37.  
  38. If you need a reference work on 2.1 (and who doesn't) and need it written in a 
  39. clear, concise manner by the foremost experts in their fields, bundled with a 
  40. diskette of utilities that would cost you twice the price of the book alone, 
  41. OS/2 2.1 Unleashed is the way to go. 
  42.  
  43. -Paolo Pignatelli, The Corner Store 
  44.  
  45.  
  46. ΓòÉΓòÉΓòÉ 2. Title Page ΓòÉΓòÉΓòÉ
  47.  
  48.                                     OS/2 2.1
  49.                                     Unleashed
  50.  
  51.                       David Moskowitz and David Kerr, et al
  52.  
  53.  
  54. ΓòÉΓòÉΓòÉ 3. Copyright and Trademarks ΓòÉΓòÉΓòÉ
  55.  
  56. Copyright (C)  1993 by Sams Publishing 
  57.  
  58. FIRST EDITION 
  59.  
  60. All rights reserved. No part of this book shall be reproduced, stored in a 
  61. retrieval system, or transmitted by any means, electronic, mechanical, 
  62. photocopying, recording, or otherwise, without written permission from the 
  63. publisher. No patent liability is assumed with respect to the use of the 
  64. information contained herein. Although every precaution has been taken in the 
  65. preparation of this book, the publisher and author assume no responsibility for 
  66. errors or omissions. Neither is any liability assumed for damages resulting 
  67. from the use of the information contained herein. For information, address Sams 
  68. Publishing, 11711 North College Avenue, Carmel, Indiana 46032. 
  69.  
  70. International Standard Book Number: 0-672-30240-3 
  71.  
  72. Library of Congress Catalog Card Number: 92-62682 
  73.  
  74. 96   95   94   93       5   4   3   2 
  75.  
  76. Interpretation of the printing code: the rightmost double-digit number is the 
  77. year of the book's printing; the rightmost single-digit, the number of the 
  78. book's printing. For example, a printing code of 93-1 shows that the first 
  79. printing of the book occurred in 1993. 
  80.  
  81. Trademarks 
  82.  
  83. All terms mentioned in this book that are known to be trademarks or service 
  84. marks have been appropriately capitalized. Sams Publishing cannot attest to the 
  85. accuracy of this information. Use of a term in this book should not be regarded 
  86. as affecting the validity of any trademark or service mark. OS/2 is a 
  87. registered trademark of International Business Machines Corporation. 
  88.  
  89. Composed in Garamond and MCPdigital by Prentice Hall Computer Publishing 
  90.  
  91. Printed in the United States of America 
  92.  
  93.  
  94. ΓòÉΓòÉΓòÉ 4. Ordering Information ΓòÉΓòÉΓòÉ
  95.  
  96. Sams 
  97.  
  98. To order this book or any Sams publication, call 1-800-428-5331 between 9:00 
  99. a.m. and 5:00 p.m. EST.  For faster service please have your credit card 
  100. available. 
  101.  
  102. I.V. League 
  103.  
  104. To receive a free copy of the PSP Product Catalog, or to order any of the books 
  105. reviewed here, please call 1-800-342-6672.  All orders are shipped next day 
  106. air. 
  107.  
  108.  
  109. ΓòÉΓòÉΓòÉ 5. Contents ΓòÉΓòÉΓòÉ
  110.  
  111. Introduction
  112.  
  113. Installation Issues
  114.   Hardware Considerations
  115.   Preliminary Planning
  116.    OS/2 2.1 Installed as the Only Operating System
  117.    Dual Boot
  118.    Boot Manager
  119.   Installing OS/2 2.1
  120.    Disk Install
  121.    CD-ROM Install
  122.    Network and Response File Install
  123.   Multimedia
  124.   Troubleshooting
  125.    Disk 1 Doesn't Seem to Work!
  126.    Phase 2 Boot Produces White or Blank Screens
  127.    Can't Find COUNTRY.SYS
  128.    ROM BIOS Problems
  129.    Trap 2 Problems
  130.    Nonsupported SCSI Adapters
  131.    Creating a Single Disk Boot
  132.  
  133. Multiple Desktop Views
  134.   The Major Configurations
  135.    OS/2 2.1_The Workplace Shell
  136.    Objects and the Workplace Shell
  137.    Changing to an Object Orientation
  138.    Existing Applications and the Workplace Shell
  139.    OS/2 1.3_The Original Desktop
  140.    OS/2 1.3 System Programs
  141.    Copying 1.3 Programs from Disk
  142.    Windows 3.1_Windows Compatibility
  143.    Windows Groups and Applets
  144.    The Windows Desktop Versus Win-OS2
  145.    Accessibility of the Workplace Shell
  146.   Configuring the System
  147.    INI and RC Files
  148.    INI Files
  149.    RC Files
  150.    Booting from a Disk
  151.    Boot Disks
  152.    Using the MAKEINI Utility
  153.    OS/2 1.3
  154.    Windows 3.x
  155.    OS/2 2.1
  156.    Multiple Configurations
  157.   Configuration Maintenance
  158.   Unique Configurations
  159.    The CMD.EXE Configuration
  160.    Setting Up the Configuration
  161.    Replacing the Command Processor
  162.    Setting Up a New Default Command Processor
  163.    Setting Up Multiple Command Processors
  164.  
  165. System Configuration, Setup, and Tuning
  166.   A Brief Introduction to Multitasking
  167.    Sessions and Processes and Threads, Oh My!
  168.    Cache: HPFS and FAT
  169.   CONFIG.SYS
  170.    Making Changes
  171.    How to Setup a RAM Disk_When and Why
  172.   Sample Configurations
  173.    The Minimum System
  174.    Recommended Minimum System
  175.    A Better System
  176.    A Power-User System
  177.   Performance Tuning
  178.   Change Boot Manager Operation
  179.   Migration
  180.  
  181. The Workplace Shell
  182.   Getting Started
  183.    Pop-Up Context Menus
  184.    Feedback
  185.    Where to Find Help
  186.    Online Manuals and Tutorials
  187.   Learning to Use the Shell
  188.    Copying, Moving, and Deleting
  189.    If You Don't Have a Mouse . . .
  190.    Rearranging Your Desktop
  191.    Using Find to Search for Objects
  192.    Opening Objects
  193.    Opening Multiple Command Lines
  194.    Where Has My Window Gone?
  195.    Using the Window List
  196.    Obtaining the Desktop Pop-Up Menu
  197.    Shutdown and Lockup
  198.  
  199. Workplace Shell Objects
  200.   The Workplace Object Hierarchy
  201.    The Root Object Class
  202.    The File System Base Class
  203.    The Abstract Base Class
  204.    The Transient Base Class
  205.    Dormant and Awakened Objects
  206.    Shadows of Objects
  207.    Object Identifiers
  208.   Creating Objects
  209.    Using Templates
  210.    Create Another Menu Item
  211.    From a REXX Command
  212.    Creating Your Own Drag-and-Drop Object
  213.   Object Settings
  214.    The General Settings Page
  215.    The Window Settings Page
  216.   Folder Objects
  217.    Folders as Directories on Your Hard Disk
  218.    The View Pages
  219.    The Include Pages
  220.    The Sort Page
  221.    The Background Page
  222.    Work Area Folders
  223.    Creating Another View of the Desktop
  224.    The Startup Folder
  225.   File Objects
  226.    The Type Page
  227.    The Menu Page
  228.    The File Pages
  229.    Printing File Objects
  230.   Program Objects
  231.    The Program Page
  232.    The Session Page
  233.    The Association Page
  234.   Inside the System Setup Folder
  235.    Colors and Fonts
  236.    Keyboard, Mouse, and Touch
  237.    System Settings
  238.    Country Settings
  239.   The Workplace Shell and Networks
  240.    Network Folder
  241.    Network Group Object
  242.    Server Object
  243.    Network Directory Object
  244.    Network Printer Object
  245.    Login and Logout
  246.  
  247. Configuring the Workplace Shell
  248.   CONFIG.SYS Settings
  249.    The OS/2 Shell
  250.    The Workplace Shell Process
  251.    Starting Workplace Shell Components
  252.    Restarting Applications and Objects
  253.    Setting the Object Snooze Time
  254.    Turning Off the Shell's Error Handler
  255.    Master Help Index and Glossary Database
  256.    User and System Initialization Files
  257.    Identifying the Command-Line Processor
  258.   Replacing the Workplace Shell
  259.   The OS2.INI and OS2SYS.INI Files
  260.    Contents
  261.    The INI.RC File
  262.    Making the Desktop Look Like Windows
  263.    Creating Your Own Desktop
  264.   Threads of the Workplace Shell
  265.    User Input and Tasking Threads
  266.    Specialist Threads
  267.   How the Workplace Shell Protects Itself-and You
  268.    Process-Level Protection
  269.    Exception Handlers
  270.    Recovering from Errors
  271.  
  272. Command-Line Interface
  273.   Managing Command Windows
  274.   Creating New Command Objects
  275.   Customizing Settings
  276.    Fonts
  277.    Mode Command
  278.    Prompt
  279.    Environment
  280.   Getting Help
  281.   Printing Options
  282.   Starting Sessions
  283.    START
  284.    DETACH
  285.   Syntax and Symbols
  286.   Command Tables
  287.   Programming with Command Files
  288.   Alternate Command Processors
  289.  
  290. Virtual DOS Machines
  291.    General Virtual DOS Machine Parameters
  292.    Virtual DOS Machine Defaults
  293.   Accessing DOS Settings
  294.   Specific DOS Versions
  295.   MVDM Window Management
  296.   DOS Settings
  297.    COM_DIRECT_ACCESS
  298.    COM_HOLD
  299.    COM_SELECT
  300.    DOS_AUTOEXEC
  301.    DOS_BACKGROUND_EXECUTION
  302.    DOS_DEVICE
  303.    DOS_HIGH
  304.    DOS_STARTUP_DRIVE
  305.    DOS_UMB
  306.    DOS_VERSION
  307.    EMS_FRAME_LOCATION
  308.    EMS_MEMORY_LIMIT
  309.    IDLE_SECONDS
  310.    IDLE_SENSITIVITY
  311.    INT_DURING_IO
  312.    KBD_BUFFER_EXTEND
  313.    KBD_CTRL_BYPASS
  314.    MEM_EXCLUDE_REGIONS
  315.    MEM_INCLUDE_REGIONS
  316.    MOUSE_EXCLUSIVE_ACCESS
  317.    PRINT_TIMEOUT
  318.    VIDEO_FASTPASTE
  319.    VIDEO_MODE_RESTRICTION
  320.    VIDEO_ONDEMAND_MEMORY
  321.    VIDEO_RETRACE_EMULATION
  322.    VIDEO_ROM_EMULATION
  323.    VIDEO_SWITCH_NOTIFICATION
  324.    VIDEO_WINDOW_REFRESH
  325.    XMS_MEMORY_LIMIT
  326.   Maximizing Common Applications
  327.    Borland's Arago dBXL/Quicksilver 2.5
  328.    dBase IV 1.5/Runtime 1.5
  329.    Lotus 1-2-3 Version 3.1+
  330.    Procomm Plus 2.x
  331.    WordPerfect 5.1
  332.   Integrating MVDMs Into the OS/2 Environment
  333.    Clipboard
  334.     Rudimentary MVDM-OS/2 Communications
  335.   LANs and VDMs
  336.  
  337. WIN-OS/2_Windows in OS/2
  338.   Installation
  339.   Migration and Setup
  340.    OS/2 Setup
  341.    Clipboard and Dynamic Data Exchange
  342.    Windows Setup (the INI Files)
  343.   Running Windows Applications
  344.    Seamless Windows
  345.    Screen Blanker
  346.    Screen Capture and Other Utilities
  347.    Full-Screen Sessions
  348.    Running WIN-OS/2 in a VMDISK Session
  349.   Drivers
  350.    Printers
  351.    Video Adapter
  352.    Fax
  353.   Differences Between Microsoft Windows 3.1 and the WIN-OS/2 Environment
  354.    Managing Memory
  355.    Failures, Fractures, and Faults
  356.    Local Ctrl-Alt-Del
  357.   Troubleshooting
  358.    Applications Don't Work
  359.    Applications That Used to Work, Don't
  360.    True Type Fonts Don't Work
  361.    Fatal Exit Codes
  362.   Summary
  363.  
  364. File Systems and Drive Objects
  365.   File Systems
  366.    The File Allocation Table
  367.    The Installable File System
  368.    The High Performance File System
  369.    Lazy Write
  370.    HPFS Performance Versus FAT Performance
  371.    HPFS Versus FAT_Other Factors
  372.    Shutdown
  373.    Disk Support
  374.    Optimizing Your File Systems
  375.   Making the Most of Long Filenames
  376.    Extensions
  377.   Workplace Shell Drive Objects
  378.    Drive Objects
  379.    Deleting Files
  380.   Laying Out Your Data
  381.    Security
  382.    Making Multiple Drives Work with the Workplace Shell
  383.    Swap File and Spooler
  384.   Dealing with Fragmentation
  385.   OS/2 Disk Utilities
  386.   File Attributes
  387.    Extended Attributes
  388.    Special Extended Attribute-File Type
  389.    Attach a Comment or Key Phrase to Your File
  390.    Attaching an Icon in Extended Attributes
  391.    Reclaiming Disk Space from Extended Attributes
  392.    Avoid Losing EAs When Sending Files
  393.   Alternatives to Drive Objects
  394.    OS/2 1.3 File Manager
  395.    Windows File Manager
  396.    Command Line
  397.   Summary
  398.  
  399. The Video Subsystem
  400.   The Base Video Handler
  401.   The Video Virtual Device Driver
  402.    The SVGA Command and PMI Files
  403.    Switching Between Full-Screen and Presentation Manager Applications
  404.   The Presentation Manager Display Driver
  405.   The WIN-OS/2 Device Driver
  406.    Full-Screen WIN-OS/2
  407.    WIN-OS/2 Window
  408.   Changing Display Resolutions
  409.    Why Would I Want to Change Resolution?
  410.    Supported Resolutions for Presentation Manager
  411.    Display Mode Query and Set (DMQS)
  412.    The Effect on WIN-OS/2
  413.   Colors and the Palette Manager
  414.    16 Fixed Colors
  415.    256 Colors
  416.    Direct Color
  417.   Black-and-White Liquid Crystal Displays (LCD)
  418.    Alternative Color Scheme
  419.    Bigger Cursors
  420.   Installing Display Drivers
  421.    Using Installation Tools
  422.    Manually Changing Display Drivers
  423.   Fonts and Display Drivers
  424.    Fonts Provided by the Display Driver
  425.    International Standards and How They Affect Fonts
  426.   Where to Get Display Drivers
  427.   How to Select the Best Video Adapter for OS/2 2.1
  428.    Resolution, Performance, and Flicker
  429.  
  430. Printing
  431.   Print Workplace Objects
  432.    Printer Object
  433.    Job Object
  434.    Port Object
  435.    Printer Driver Object
  436.    Queue Driver Object
  437.    Spooler Object
  438.    Differences Between OS/2 2.1 and OS/2 1.3 Print Subsystems
  439.   WIN-OS2 Print Subsystem
  440.    WIN-OS2 Control Panel
  441.    WIN-OS2 Print Manager
  442.   Network Printing
  443.    Network Printer Object
  444.    Job Objects in a Network Printer Object
  445.    Distributing Printer Drivers for Network Users
  446.    Printing to a Network Printer
  447.   Print Subsystem Configurations
  448.    Print to File
  449.    Port with Multiple Printer Objects (Sharing)
  450.    Printer Object with Multiple Ports (Pooling)
  451.    Multiple Printer Objects with Multiple Ports
  452.    Separator Files
  453.    DOS Considerations
  454.    WIN-OS2 Considerations
  455.   Printing from OS/2 Applications
  456.    Workplace Shell Drag and Drop
  457.    Print Screen Key
  458.    OS/2 Online Help and View Program
  459.    PICVIEW Applet
  460.    PMCHART Applet
  461.    Describe
  462.    Lotus 1-2-3/G (Version 1.1)
  463.   Troubleshooting
  464.    Cannot Print Under OS/2 2.1
  465.    Printing Starts When DOS Application Ends
  466.    DOS Application Holds Up Other Printing
  467.    Cannot Print from DOS with a Security Device on LPT1
  468.    DOS Application Creates Many Print Jobs
  469.    Forms Mismatch Message
  470.    Job Stays in Printer Object Without Printing
  471.    Performance Tips
  472.    Replacing Printer Drivers
  473.    Printing Text on a Postscript Printer
  474.   References
  475.    User References
  476.    Application Developer References
  477.  
  478. Productivity Applets
  479.   The Origin of Applets
  480.   Of Time and Planning-PM Diary
  481.    Daily Planner
  482.    Activities List
  483.    Calendar
  484.    Monthly Planner
  485.    Tune Editor
  486.    Archiving
  487.    Integrating the Five PM Diary Applets
  488.   Database
  489.   Alarms
  490.   PM Chart for Business Presentations
  491.    Using the Toolbar
  492.    Opening Existing Files
  493.    Selecting and Manipulating Objects
  494.    Using Clip Art
  495.    Using Worksheet Data and Importing Other Formats
  496.    Text and Labeling
  497.    Using Draw, Color, and Style
  498.   PM Terminal
  499.    Modes of Operation
  500.    Configuring PM Terminal
  501.   The Icon Editor
  502.   The Enhanced PM Editor
  503.    Basic Editing Techniques
  504.    Power Features
  505.    Macros
  506.    Understanding the Options Menu
  507.    Printing and Formatting
  508.   Other OS/2 Applets
  509.    Seek and Scan Files-OS/2 2.1's Most Useful Applet!
  510.    Pulse-Monitor CPU Performance
  511.    Clipboard Viewer-Exchange Data Between OS/2 and WINOS/2
  512.    Picture Viewer
  513.    Sticky Pad
  514.   Summary
  515.  
  516. Learning to Program-Tools, Tips, and Techniques
  517.   Basic OS/2 Programming Concepts
  518.    Working with Messages
  519.    Multitasking and Multithreading
  520.    Dynamic Link Libraries
  521.   Language Choices
  522.   Object-Oriented Programming
  523.   Picking the Tools
  524.    Language Compilers and Interpreters
  525.    Developer's Toolkits
  526.    Debuggers
  527.    Class Libraries
  528.    CASE Tools
  529.    IBM's Offerings
  530.    Borland's Offerings
  531.    Other Vendors
  532.    Shareware and Freeware
  533.   Installing the WorkSet/2
  534.    Installing the WorkFrame/2
  535.    Installing the C Set/2 Compiler
  536.    Installing the IBM Developer's Toolkit for OS/2 2.1
  537.   Starting and Testing the WorkFrame/2
  538.   Using the WorkFrame/2
  539.    The Window Lists
  540.    The Switch List and the Window Shade
  541.    Adding Tools to the Working Environment
  542.   Building a Project
  543.    Base and Composite Projects
  544.    Setting C Set/2 Compiler Settings
  545.   Editing Source Files
  546.   Using the Online Documentation
  547.   Good Luck!
  548.  
  549. REXX Programming
  550.   REXX Versus Batch
  551.    Differences
  552.    Error Conditions/Debugging
  553.    When to Use REXX Programs
  554.    Why REXX is Faster-the Role of Extended Attributes in REXX
  555.   An Introduction to REXX Basics
  556.    Features and Concepts
  557.    REXX Instructions
  558.    Debugging REXX Programs
  559.    Built-In Functions
  560.    Using OS/2 Commands in REXX Programs
  561.    Using REXXTRY
  562.   More Advanced REXX
  563.    REXX Boilerplates
  564.    Using REXX Queues
  565.    Reading and Writing OS/2 Files with REXX
  566.    Using the STREAM Function
  567.    Using the NOTREADY Condition
  568.   Using REXX Extensions
  569.    The ADDRESS Instruction
  570.    Built-In Functions Versus Libraries
  571.    Using REXX Libraries
  572.   The REXX Utility Library in OS/2 2.1
  573.    Searching Files and Directories
  574.    Saving Information
  575.    Obtaining Drive Information
  576.    Controlling Screen Input and Output
  577.   REXX and the Workplace Shell
  578.    Creating Workplace Shell Objects
  579.    Creating Folders
  580.    Creating Program References
  581.    Creating Object Shadows
  582.    Destroying Objects
  583.    Registering Object Classes
  584.   REXX and the OS/2 Communications Manager
  585.    The HLLAPI Function
  586.   REXX and the Enhanced Editor
  587.   Using the VREXX Package
  588.  
  589. Troubleshooting
  590.   Installation Failure Recovery
  591.    Preparing for Installation
  592.    CONFIG.SYS Changes
  593.    Selective Install
  594.    Catastrophic Installation Failure
  595.   Problem Prevention and Recovery Preparation
  596.    Critical Files Backup
  597.    The Workplace Shell Backup Utility
  598.    Boot Disks
  599.    CHKDSK C: /F
  600.   Post-Installation Failure Recovery
  601.   System Configuration (CMOS)
  602.    System RAM
  603.    HPFS-Related
  604.    FAT-Related
  605.    Keyboard
  606.    Mouse
  607.    Workplace Shell
  608.    Video
  609.    Printer
  610.    CD-ROM Drives
  611.   OS/2 Error-Logging Facilities
  612.    PSTAT
  613.    The LOG.SYS and SNA Format
  614.  
  615. Networking
  616.   LAN Components: Wiring and Adapters
  617.    Protocols
  618.    Workstation Software
  619.    Server Software
  620.   LAN Server
  621.    Adapter/Protocol Installation
  622.    Requester/Server Installation
  623.    Operating LAN Server
  624.    Command-Line Utilities
  625.    Workplace Shell Operations
  626.    Requester Menus
  627.    MVDM Sessions
  628.    Advanced Server Options
  629.   LAN Manager
  630.    One-Step Installation
  631.    Command-Line Operation
  632.    Full-Screen Menu Interface
  633.   Novell NetWare Requester for OS/2
  634.    Graphical Installation
  635.    Operating the Requester
  636.    DOS Sessions
  637.  
  638. Multimedia
  639.   What Is Multimedia?
  640.    CD-ROM
  641.    Audio and Sound Effects
  642.    Animation and Graphics
  643.    Overall
  644.   OS/2 as a Multimedia Platform
  645.   IBM Ultimedia
  646.   OS/2 Support for Multimedia Devices
  647.    Base OS/2 CD-ROM Support
  648.    Windows 3.1 Multimedia
  649.   Multimedia Sampler
  650.    Compton's MultiMedia Encyclopedia
  651.    National Geographic Multimedia Mammals
  652.   MMPM/2 in Detail
  653.    Sound Support
  654.    CD-Audio Support
  655.    Video Playback/Capture
  656.    Computer-Controlled Laser Disc
  657.    Installation of MMPM/2
  658.   Using Unsupported CD-ROM Drives
  659.    Other SCSI CD-ROM Drives
  660.    Using DOS CD-ROM Drivers
  661.    Managing DOS Configuration
  662.    WIN-OS/2 Multimedia
  663.   Multimedia Development Environment
  664.   Future Multimedia
  665.   Conclusion
  666.  
  667. Freeware, Public Domain Software, and Shareware
  668.   Finding Shareware
  669.   OS/2 Unleashed Companion Disk
  670.    4OS2
  671.    TE/2_Terminal Emulator/2
  672.    DiskStat
  673.    LH2
  674.    Deskman/2
  675.    Galleria
  676.    PMScrapbook
  677.    INIMaint
  678.  
  679. Bulletin Board Systems
  680.   CompuServe
  681.   Internet
  682.    Transferring Files
  683.    FTP Commands
  684.    File Extensions
  685.    Anonymous FTP Sites
  686.   Multi-Net BBS
  687.   Bulletin Board Systems
  688.  
  689. OS/2 System Messages
  690.  
  691. Index
  692.  
  693.  
  694. ΓòÉΓòÉΓòÉ 6. Foreward ΓòÉΓòÉΓòÉ
  695.  
  696. Late in the evening of March 31, 1992, a dedicated team of designers and 
  697. programmers in Boca Raton, Florida, completed final testing of the OS/2 2.0 
  698. operating system. Their efforts have been rewarded with the success of the OS/2 
  699. 2.0 product. 
  700.  
  701. More than 2 million copies of OS/2 2.0 have been shipped, greatly exceeding 
  702. industry and analyst expectations. More than 1,300 applications are available 
  703. for OS/2, including major products from industry-leading software corporations. 
  704. As each month passes, more and more OS/2 applications are launched. 
  705.  
  706. the achievement of the OS/2 operating system has not gone unnoticed within the 
  707. industry. To date, OS/2 2.0 has received 12 industry awards, including the 
  708. following: 
  709.  
  710.       PC Magazine, Technical Excellence 
  711.       Information Week, 1992 Top Products-the 10 most likely to succeed 
  712.       PC Week Labs, Top Product 1992 
  713.       Corporate Computing, Best Buy 
  714.       Datamation, Product of the Year, PC Software category 
  715.  
  716.  1993 marks the availability of OS/2 2.1. We have incorporated many 
  717.  improvements to the operating system, including performance enhancements, 
  718.  support for Windows 3.1 applications, compatibility with many more printer and 
  719.  video devices, power management for portable computers, and MMPM/2, the 
  720.  multimedia extension for OS/2. 
  721.  
  722.  It is my pleasure to introduce OS/2 2.1 Unleashed, an excellent companion book 
  723.  to the OS/2 2.1 product. Within these pages, you will find many valuable tips 
  724.  and techniques that you can use to improve your productivity and enhance the 
  725.  value of OS/2. With each chapter, you will learn how you can get the most from 
  726.  OS/2, how to tune your DOS applications, and how to integrate your Windows 3.1 
  727.  applications with the Workplace Shell. 
  728.  
  729.  The authors span our industry and possess years of experience with the OS/2 
  730.  operating system. Several of the suthors are members of the original OS/2 
  731.  design and development team, bringing an unequalled level of OS/2 knowledge to 
  732.  a single book. 
  733.  
  734.  Ths OS/2 development team is dedicated to providing you with a quality 
  735.  operating system product. We value learning from your experiences, and I 
  736.  welcome you to the family of OS/2 users. You can exchange ideas with other 
  737.  OS/2 users, the OS/2 development and support team, and the authors of OS/2 2.1 
  738.  Unleashed by participating in the OS/2 forums on CompuServe. 
  739.  
  740.  Welcome to OS/2 2.1 Unleashed. 
  741.  
  742.   James A.Cannavino
  743.   Senior Vice President, IBM
  744.   General Manager, IBM Personal Systems
  745.  
  746.  
  747. ΓòÉΓòÉΓòÉ 7. Learning to Program-Tools, Tips, and Techniques ΓòÉΓòÉΓòÉ
  748.  
  749. In This Chapter 
  750.  
  751.       Basic OS/2 Programming Concepts 
  752.       Language Choices 
  753.       Object-Oriented Programming 
  754.       Picking the Tools 
  755.       Installing the WorkSet/2 
  756.       Starting and Testing the WorkFrame/2 
  757.       Using the WorkFrame/2 
  758.       Building a Project 
  759.       Editing Source Files 
  760.       Using the Online Documentation 
  761.       Good Luck! 
  762.  
  763.  OS/2 2.1 can be such an enjoyable environment to use, it's easy to forget that 
  764.  its primary (and rather mundane) purpose is to control the execution of 
  765.  computer programs. Similarly, in the course of executing these programs, it is 
  766.  easy to dismiss your favorite application and regard it simply as a consummate 
  767.  companion or ever-present business tool. Easy to dismiss, that is, unless you 
  768.  are a programmer. The simple and obvious truth of the matter is that every 
  769.  program you use, from spreadsheets to word processors to communications 
  770.  programs, needs to be written. The typical OS/2 programmer does not take this 
  771.  simple fact for granted, and you don't have to either. You don't need to be a 
  772.  professional programmer to learn how to program OS/2. All it takes is a little 
  773.  bit of hard work and perseverance. 
  774.  
  775.  This chapter is intended to provide new OS/2 programmers with an understanding 
  776.  of the issues that must be tackled before successfully developing OS/2 
  777.  programs. I'll begin by introducing a few of the programming issues that make 
  778.  developing applications for OS/2 unique, and then I'll delve into the 
  779.  programming languages and tools you might use to create your own masterpieces. 
  780.  Because it is currently the most widely used collection of development tools 
  781.  available for OS/2 programming, I'll conclude with a discussion of IBM's 
  782.  WorkSet/2 product. 
  783.  
  784.  
  785. ΓòÉΓòÉΓòÉ 7.1. Basic OS/2 Programming Concepts ΓòÉΓòÉΓòÉ
  786.  
  787. For application developers, OS/2's expanded capabilities do not come without a 
  788. price. Moving to the OS/2 platform from DOS or Windows means tackling a new set 
  789. of programming challenges and problems. At the same time, the multitasking and 
  790. memory protection afforded by OS/2 gives the programmer a stable and dependable 
  791. development environment. OS/2 quickly catches and shuts down programming errors 
  792. that typically cause simple operating systems to freeze up or become corrupt. 
  793. Although OS/2 forcibly stops errant programs, the rest of the operating system 
  794. continues to function normally. For this reason alone, writing programs under 
  795. OS/2 is much easier and considerably less frustrating than writing similar 
  796. programs under other less-protected operating systems. 
  797.  
  798. The topic of OS/2 programming is a large and complex one. Because OS/2 offers 
  799. the user so much flexibility with regard to graphical interfaces, process 
  800. control, device support, and system services, the programmer faces a daunting 
  801. array of development tasks. Even a simple program that does little more than 
  802. displaying a window with an innocuous "Hello World" message may span several 
  803. pages of code. This additional complexity is understandably intimidating for 
  804. many programmers. 
  805.  
  806. Don't panic. The key to successfully mastering OS/2 programming involves 
  807. patience and a slow, deliberate approach. You're likely to succeed if you don't 
  808. try to learn everything at once. Although a comprehensive treatment of 
  809. programming issues is beyond the scope of this chapter, several concepts are 
  810. crucial to writing effective and efficient OS/2 applications. Specifically, the 
  811. intelligent use of multithreading and dynamic link libraries (DLLs) can go a 
  812. long way toward making your programs run faster, occupy less space, and operate 
  813. in a way that a typical user might expect. Remember, a program that simply 
  814. works is not necessarily a good OS/2 program. 
  815.  
  816.  
  817. ΓòÉΓòÉΓòÉ 7.1.1. Working with Messages ΓòÉΓòÉΓòÉ
  818.  
  819. As you probably know, the Workplace Shell is the graphical interface you are 
  820. presented with when you start OS/2. The Workplace Shell, in turn, runs on top 
  821. of a subsystem called the Presentation Manager (PM). Programs that run in the 
  822. PM environment and use the graphical presentation services it provides are 
  823. called PM programs. Strictly speaking, it is possible to write OS/2 programs 
  824. that are not PM programs, but this is the exception. The reason for this is 
  825. simple: OS/2 was designed as a graphical environment, and a program needs to 
  826. use the services that PM provides if it wants to take advantage of this fact. 
  827. Still, there are many programs that do not use PM and operate in text mode. 
  828. Device drivers, command-line utilities, data entry applications, and terminal 
  829. emulators are a few of the program types that do not require-and are sometimes 
  830. restricted by_a PM interface. 
  831.  
  832. The Presentation Manager is based on an event-oriented messaging system. PM 
  833. programs spend much of their time waiting for the user to initiate actions. As 
  834. the user interacts with the PM interface, OS/2 generates event messages. For 
  835. example, when a user clicks the button, a "Button Clicked" message is 
  836. generated. When the user strikes a key on the keyboard, a "Key Pressed" message 
  837. is generated. Some events may generate a flurry of messages, depending on the 
  838. action's complexity. Programs may also send customized messages to themselves 
  839. or other applications. 
  840.  
  841. Programs using the traditional programming model execute blocks of code and 
  842. pause for user input when necessary. PM programs, on the other hand, react to a 
  843. stream of messages. This unique programming approach takes a little getting 
  844. used to, especially if you have a lot of experience using the older procedural 
  845. methods. The message-based model is a difficult hurdle facing the novice PM 
  846. programmer, but once conquered, the rest of the learning experience is 
  847. considerably easier. 
  848.  
  849.  
  850. ΓòÉΓòÉΓòÉ 7.1.2. Multitasking and Multithreading ΓòÉΓòÉΓòÉ
  851.  
  852. One of OS/2's great strengths is its capability to run more than one program at 
  853. a time. This feature, called multitasking, enables the machine's user to work 
  854. simultaneously on several tasks at once. This capability's benefit becomes 
  855. clear the first time you try to format a floppy disk while working in a 
  856. spreadsheet or the first time you do a communications download while typing a 
  857. memo with your word processor. Instead of waiting for a program to finish a 
  858. lengthy task, multitasking effectively enables you to break away and do 
  859. something else until the program is finished. 
  860.  
  861. OS/2 uses a powerful multitasking variant called preemptive multitasking. Under 
  862. the preemptive model, programs share the processor in a manner mandated by the 
  863. operating system. Each program executes for a discrete period of time: a time 
  864. slice. When the program's time slice ends, the operating system forcibly 
  865. suspends the application and allows other programs to execute. This model 
  866. ensures that no single program can monopolize the system's most precious 
  867. resource: the microprocessor. Microsoft Windows, by comparison, uses 
  868. cooperative multitasking. This model relies on the good behavior of individual 
  869. programs to guarantee equal access to the processor. Because applications need 
  870. to voluntarily yield the processor to other programs, a single, greedy program 
  871. can dominate the entire operating system. 
  872.  
  873. Multitasking alone, however, has several inherent limitations. For example, 
  874. take the case of a user who is working on a document and wants to print a rough 
  875. draft. Ideally, the user wants to tell the word processor to print the job in 
  876. the background while she or he continues to edit the document in the 
  877. foreground. With traditional multitasking operating systems, the individual can 
  878. switch out and start another application; however, they still constrain the 
  879. word processor to a single strand of execution and force the program to send 
  880. the entire job to the printer before returning control to the user. Although 
  881. there are ways around this problem, none are elegant, and all are 
  882. resource-hungry. 
  883.  
  884. Multithreading allows multiple parts of the same program to execute 
  885. simultaneously. In the previous example, an OS/2 word processor could use a 
  886. separate thread to process the print job and return control to the user almost 
  887. immediately. The background thread would continue spooling the print job to the 
  888. printer without locking up the program's user interface. 
  889.  
  890. From a technical perspective, OS/2 distinguishes between processes and threads. 
  891. A process contains its own main thread, virtual memory address space, file 
  892. handles, and other crucial system resources. OS/2 considers these resources 
  893. private and ensures that they are not accessible by other processes that may be 
  894. running on the system. A process may create other threads that execute in 
  895. parallel to the process' main thread. These threads can be created much more 
  896. quickly than separate processes and can communicate with each other through 
  897. shared memory. 
  898.  
  899. I cannot overemphasize the importance of using efficient multithreading 
  900. programming techniques. Too often, OS/2 programmers concentrate on 
  901. sophisticated processing algorithms or impressive user interfaces without 
  902. paying enough attention to the intelligent use of OS/2's multithreading 
  903. facilities. Some programmers try to compensate for this by replacing the mouse 
  904. pointer with the dreaded "ticking clock" icon and waiting for the lengthy 
  905. processing to conclude. Although this helps to notify you to wait for a task to 
  906. finish, it doesn't take advantage of the operating system services that make 
  907. OS/2 so powerful. More importantly, it doesn't make the program as responsive 
  908. or effective as it should be. 
  909.  
  910.  
  911. ΓòÉΓòÉΓòÉ 7.1.3. Dynamic Link Libraries ΓòÉΓòÉΓòÉ
  912.  
  913. Dynamic link libraries are collections of code, data, and resources that are 
  914. separated into external files. They are occasionally a source of confusion, not 
  915. because they are particularly hard to understand, but because it is sometimes 
  916. difficult to decide when and where they should be used. The simple truth is 
  917. that all but the most trivial OS/2 programs can effectively use DLLs. 
  918.  
  919. When you run a program that uses DLLs, the operating system figures out which 
  920. DLLs the program needs and loads them into memory. Once a DLL is loaded, the 
  921. program can call functions in the DLL as if they resided in the executable 
  922. file. Data and PM resources embedded within the DLL can also be accessed and 
  923. manipulated seamlessly. A DLL that is loaded into memory can share its code and 
  924. data resources with any process running on the machine. This is tremendously 
  925. useful when you want to share a piece of code between several separate 
  926. programs. 
  927.  
  928. Consider, for example, a large accounting system that includes several 
  929. programs. Most programs have a significant amount of code in common-both the 
  930. accounts receivable module and the accounts payable module might need to 
  931. retrieve information from the master ledger database. By placing the routines 
  932. that interact with ledger files into a single DLL, you can ensure that only one 
  933. copy of the code is simultaneously in memory. This procedure also ensures that 
  934. only one copy of the code needs to be shipped with the system. This saves 
  935. storage space and requires less memory-two of the sacred cows for programming 
  936. in any environment. Figure 14.1 illustrates how such an accounting system might 
  937. use DLLs to minimize duplicated code and wasted memory. 
  938.  
  939. Dynamic link libraries are excellent mechanisms for extending OS/2's system 
  940. services or for providing your own new operating system services. If a 
  941. developer wants to provide electronic mail services to OS/2 programs, code can 
  942. be placed in a DLL and installed in a directory on the LIBPATH. In this way, 
  943. any application that knows which functions are in the DLL can access and use 
  944. the E-mail services. 
  945. Figure 14.1. A hypothetical accounting system DLL usage.
  946.  
  947. Note:  When choosing names for your DLLs, try to think up something that is 
  948.        intuitive and specific. If you choose a generic name, chances are high 
  949.        that someone else might use the same name when building a DLL. You can 
  950.        imagine the resulting chaos if both DLLs were installed on the same 
  951.        system. (Don't laugh, this is not an uncommon occurrence.) You could 
  952.        name an accounting DLL containing common code something like ACCCMMN.DLL 
  953.        or CMMNACC.DLL, not COMMON.DLL. An even better solution is to 
  954.        incorporate your company's name or initials into the DLL name. 
  955.  
  956.  
  957. ΓòÉΓòÉΓòÉ 7.2. Language Choices ΓòÉΓòÉΓòÉ
  958.  
  959. A variety of language compilers and interpreters are available that support the 
  960. creation of native 32-bit OS/2 applications. IBM has compilers that support 
  961. programs written in C, C++, Macro Assembler, COBOL, and FORTRAN. Programming 
  962. languages that are offered or supported by third-party vendors include Ada, 
  963. Basic, C, C++, COBOL, FORTRAN, Modula-2, Pascal, Prolog, Smalltalk, and many 
  964. others. Clearly the number of development options available to the OS/2 
  965. programmer is growing at a rapid pace. 
  966.  
  967. Since the early days of OS/2, C has been its primary programming language. C 
  968. has traditionally been the mainstream language that has received the strongest 
  969. support from IBM and third-party developers. The vast majority of existing OS/2 
  970. applications are written in C, and most companies regard C as the language of 
  971. choice for OS/2 development. I think you will find that it is the language with 
  972. the largest variety of supporting programming tools and utilities. 
  973.  
  974.  
  975. ΓòÉΓòÉΓòÉ 7.3. Object-Oriented Programming ΓòÉΓòÉΓòÉ
  976.  
  977. Lately, a lot of talk has surrounded object-oriented programming (OOP), and no 
  978. discussion of OS/2 programming is complete without some mention of it. Most 
  979. contemporary computer languages encourage the use of a programming style called 
  980. structured programming. Programmers who employ this model can write complex 
  981. programs quite easily, so it comes as no surprise that these languages have 
  982. prospered. However, a common complaint about structured languages is that as a 
  983. program grows in size it becomes considerably more difficult to understand and 
  984. support. By the time a C or Pascal program nears 75,000 lines of code it has 
  985. typically turned into a maintenance nightmare. It is rare to find a programmer 
  986. that can completely understand all the nuances of a program that large. 
  987.  
  988. Object-oriented languages (including C++) are designed to help alleviate the 
  989. burden of maintaining large programs. In doing so, these languages have also 
  990. bridged a conceptual gap that has always existed between the way a program is 
  991. written and the way people interact with the world. Perhaps the following 
  992. example most clearly demonstrates this. In the real world, a person doesn't 
  993. need to understand the details of how the internal combustion engine operates 
  994. just to drive a car. 
  995.  
  996. In the course of our day-to-day lives, we constantly deal with objects. Objects 
  997. are items that possess distinct characteristics and traits. Basketball objects 
  998. are round, book objects have pages, and ice cube objects are cold. There are a 
  999. whole range of actions that you can perform on or with these objects. You can 
  1000. bounce a basketball and read a book. Sometimes these actions can modify the 
  1001. attributes of the object. If you heat an ice cube it is no longer ice, it is 
  1002. water. OOP uses these sorts of object/action relationships as the foundation 
  1003. for a programming technology. Programmers create their own objects by first 
  1004. defining object classes. These classes provide a description of an object's 
  1005. traits (class variables) and possible actions (class methods). Individual 
  1006. objects that belong to a particular class are called instances. When you want 
  1007. to perform an action on or with the object, you send an object instance a 
  1008. message telling it to execute one of its methods. 
  1009.  
  1010. As an example, take the programmer who has been asked to design an automobile 
  1011. class. Such a class might contain data that describes the car's various 
  1012. attributes. There may be one variable that details the car's color, another 
  1013. that identifies how many doors the car has, and yet another that represents the 
  1014. direction the car is facing. Because objects describe both data and potential 
  1015. actions, the car class might contain a method that controls the engine's 
  1016. acceleration. Another method might turn the car left or right. The developer 
  1017. could then create an instance of this class, and by sending a message to it, 
  1018. execute the "TurnLeft" method. This method, in turn, would change the value of 
  1019. the variable that stores the direction the car is facing. 
  1020.  
  1021. Perceiving a programming task as simply defining the interactions between 
  1022. preexisting objects can help to dramatically reduce program complexity. But OOP 
  1023. can also reduce the program's physical number of source code lines. The key 
  1024. lies in using an object-oriented programming mechanism called inheritance. An 
  1025. object class that is said to be inherited from another object class is called a 
  1026. derived object class; the original object class is called the base object 
  1027. class. Instances of the derived class get all of the same variables and methods 
  1028. as instances of the base class. Only the variables and methods that make the 
  1029. inherited class unique need to be added to the new class definition. As an 
  1030. example, you could create a derived car class called SportsCar. Instances of 
  1031. this class would still have the Color, NumDoors, and FacingDirection variables. 
  1032. These instances would also have the same turning and acceleration methods. 
  1033. These variables and methods would be automatically available to the SportsCar 
  1034. class, even though they are not directly defined in that class' definition. 
  1035. Then you could augment your derived class by giving it additional variables and 
  1036. methods to represent insurance penalties and better performance 
  1037. characteristics. 
  1038.  
  1039. Sophisticated programs construct large hierarchies of object classes, each 
  1040. inheriting the attributes and methods of its base class. This cuts down 
  1041. dramatically on the amount of code duplicated in the system and allows buy 
  1042. fixes and performance improvements to cascade down the inheritance chain 
  1043. without physically changing every object class definition. 
  1044.  
  1045. Although C remains the dominant language in OS/2 development, it's getting a 
  1046. lot of competition from object-oriented languages such as C++ and Smalltalk. 
  1047. Object-oriented languages are especially well suited for writing graphical 
  1048. programs, and PM programs in particular. This is because, in many ways, the PM 
  1049. programming interface model is already object- oriented. User interface 
  1050. controls in PM have an inherent knowledge of their internal state, and programs 
  1051. manipulate these internal states by sending messages to them. For instance, an 
  1052. entry-field control "knows" what its current contents are, and you can either 
  1053. set or query this value by sending specific messages to it. 
  1054.  
  1055.  
  1056. ΓòÉΓòÉΓòÉ 7.4. Picking the Tools ΓòÉΓòÉΓòÉ
  1057.  
  1058. Developers use programming environments in much the same way that a secretary 
  1059. might use a word processor or an accountant might use a spreadsheet. Without an 
  1060. effective set of tools at your disposal, OS/2 programming rapidly becomes a 
  1061. difficult and unpleasant opponent. Many products fall under the nebulous 
  1062. category of "development tools," so before you start concentrating on specific 
  1063. products, it's probably beneficial to review the classes of tools that you 
  1064. might want to use. One phrase that you will encounter often is integrated 
  1065. development environment, or IDE. IDEs provide a single access point for all the 
  1066. development tools that you might need. Instead of interacting with an editor, 
  1067. compiler, and project control system as separate components, an IDE couples 
  1068. them together so that they work in harmony. For example, a common feature 
  1069. implemented in many IDEs relates to the processing of compiler error messages. 
  1070. Most compilers display a line number when they encounter a programming error 
  1071. that prevents them from continuing. Many IDEs enable the user to select the 
  1072. error message text, and by performing some action, start the programmer's 
  1073. editor and place the cursor on the offending line. This is a dramatic 
  1074. improvement over the separate tool approach. Using separate tools, this 
  1075. operation usually requires the programmer to pipe the compiler's output into a 
  1076. file, examine the file to find the line number, and then use the cursor keys or 
  1077. editor "jump" command to move manually to the line. As you might imagine, IDEs 
  1078. are especially useful for inexperienced programmers who have not yet mastered 
  1079. the arcane art of command-line compilers and make files. 
  1080.  
  1081.  
  1082. ΓòÉΓòÉΓòÉ 7.4.1. Language Compilers and Interpreters ΓòÉΓòÉΓòÉ
  1083.  
  1084. When programmers talk about tools, they are actually talking about several 
  1085. classes of products. Perhaps the most obvious of these is the language 
  1086. compiler. Depending on the product you purchase, this could be a command-line 
  1087. compiler, a compiler functioning inside an integrated development environment, 
  1088. or a compiler that is built into an integrated environment. Borland's C++, for 
  1089. example, can function as a command-line compiler. The IBM C Set/2 compiler, 
  1090. when used inside the WorkFrame/2 environment, runs in a PM window that is part 
  1091. of an integrated product. Finally, the incremental compiler supplied with 
  1092. Digitalk's Smalltalk/V is built into the development environment. 
  1093.  
  1094. Note:  Most vendors ship their command-line compilers with a make program. The 
  1095.        make program enables you to describe your program's structure so that 
  1096.        the compiler only recompiles those modules that have changed or are 
  1097.        dependent on the modules that have changed. Although this may not seem 
  1098.        like such a big deal for smaller programs, for a large project with many 
  1099.        source files, this becomes a very valuable and desirable capability. If 
  1100.        your compiler is of the command-line variety, ensure that you acquire a 
  1101.        make program that will work with it. 
  1102.  
  1103.  
  1104. ΓòÉΓòÉΓòÉ 7.4.2. Developer's Toolkits ΓòÉΓòÉΓòÉ
  1105.  
  1106. Some compilers might require you to invest in a developer's toolkit if you want 
  1107. to take advantage of all of OS/2's programming interfaces. The C Set/2 and 
  1108. Symantec's C++ compilers require the IBM Developer's Toolkit to write PM 
  1109. programs because it supplies the crucial header files needed to use functions 
  1110. in the standard OS/2 DLLs. The IBM toolkit also offers online documentation; 
  1111. utilities for creating icons, bitmaps, and dialog boxes; and other programming 
  1112. conveniences that help to make your life easier. Other vendors may decide to 
  1113. license the header files directly from IBM and provide their own utilities. 
  1114. This approach, which is the one taken by Borland, makes purchasing a separate 
  1115. toolkit unnecessary. 
  1116.  
  1117. Note:  If you need to develop Workplace Shell objects, be sure your compiler 
  1118.        provides som bindings. If it doesn't, you may have to also acquire the 
  1119.        IBM Developer's Toolkit. 
  1120.  
  1121.  
  1122. ΓòÉΓòÉΓòÉ 7.4.3. Debuggers ΓòÉΓòÉΓòÉ
  1123.  
  1124. An important item in any developer's toolbox, professional or otherwise, is an 
  1125. effective debugger. A debugger enables you to easily move through your 
  1126. program-a line at a time if necessary_to investigate the values of program 
  1127. variables, registers, and memory segments. A good debugger helps you specify 
  1128. certain lines at which to stop execution (breakpoints). A good debugger also 
  1129. helps you to select a particular variable or memory address and stop execution 
  1130. when its value is changed (watchpoints). Almost every compiler vendor supplies 
  1131. a debugger with their compiler (or sells a debugger compatible with their 
  1132. compiler as a separate product). 
  1133.  
  1134.  
  1135. ΓòÉΓòÉΓòÉ 7.4.4. Class Libraries ΓòÉΓòÉΓòÉ
  1136.  
  1137. The concept of a class library is intimately coupled with object-oriented 
  1138. programming. Class libraries are collections of objects that programmers can 
  1139. incorporate into their own programs. Because objects are complete unto 
  1140. themselves, a programmer need only know how to use the object-the rest is up to 
  1141. the object library. Some vendors have taken the idea of a class library and 
  1142. extended it to the idea of an applications framework. Technically speaking, 
  1143. applications frameworks are simply large class libraries, but they are usually 
  1144. constructed so they completely shape and direct the way you develop your 
  1145. program. Applications frameworks, because they try to be so comprehensive, 
  1146. usually contain a large collection of user-interface objects. Many also 
  1147. incorporate a variety of general-purpose classes. 
  1148.  
  1149. Examples of application frameworks on the DOS and Windows side of the fence 
  1150. include Borland's TurboVision, the Object Windows Libraries (OWL), and the 
  1151. Microsoft Foundation Classes (MFC). Borland says that a version of OWL for OS/2 
  1152. is in the works; because it will be based on a set of class libraries developed 
  1153. for Windows NT, OS/2 developers will probably have to wait a while before these 
  1154. frameworks become widely available. However, more specialized class libraries 
  1155. are available from a variety of other third-party sources. In addition, most 
  1156. C++ compilers ship with general-purpose class libraries of some sort. The 
  1157. Smalltalk language is notable because its standard implementation calls for a 
  1158. large set of ready-to-use object classes. 
  1159.  
  1160.  
  1161. ΓòÉΓòÉΓòÉ 7.4.5. CASE Tools ΓòÉΓòÉΓòÉ
  1162.  
  1163. If you need to get a program or prototype together as quickly as possible, you 
  1164. might be interested in one of the CASE tools available for OS/2 PM. CASE, which 
  1165. stands for computer aided software engineering, can quickly generate parts of 
  1166. your program's user-interface or execution logic. Tools like Gpf 2.0 from Gpf 
  1167. Systems or Case:PM VIP from Caseworks Inc. enable you to construct dialog boxes 
  1168. and windowed interfaces using a variety of easy-to-use editors and code 
  1169. builders. When your design is completed, the CASE tool generates the C code 
  1170. necessary to carry out your interface. The generated code is usually 
  1171. extensively commented and can be very useful as a learning aid that shows 
  1172. various programming techniques and operations. However, because the code is 
  1173. usually limited to the user interface, you need to modify it in strategic areas 
  1174. and add the customized functionally that your application requires. The CASE 
  1175. tools generally suggest where you should add your own processing logic and help 
  1176. you incorporate it into the final executable file. 
  1177.  
  1178. Caution:  Most CASE tools do not come with a compiler or debugger and may also 
  1179.           require that you purchase a developer's toolkit. Although this isn't 
  1180.           a major failing, don't forget to factor these expenses into your 
  1181.           purchasing decision. 
  1182.  
  1183.  
  1184. ΓòÉΓòÉΓòÉ 7.4.6. IBM's Offerings ΓòÉΓòÉΓòÉ
  1185.  
  1186. During OS/2's development, IBM realized that a key to getting developers to 
  1187. write quality 32-bit applications was to provide them with a robust and 
  1188. sophisticated suite of tools. Their answer was the C Set/2 compiler and 
  1189. debugger, the Developer's Toolkit, and the WorkFrame/2 (bundled together, IBM 
  1190. calls these tools the WorkSet/2). Because IBM's tools are so important and are 
  1191. in such widespread use, I will provide a more detailed look at these tools in 
  1192. later sections. 
  1193.  
  1194. The C Set/2 compiler is a native 32-bit C and C++ compiler that can build 
  1195. full-screen text-mode, windowed text-mode, and PM programs (with the optional 
  1196. Developer's Toolkit). The compiler supports all the standard OS/2 system 
  1197. facilities such as multithreading, DLLs, and double-byte character sets. As of 
  1198. 2.1, the compiler also supports the creation of virtual device drivers (VDDs) 
  1199. and programs written in C++ (including advanced features like templates and 
  1200. exception handling). Hardware and software manufacturers typically use VDDs to 
  1201. allow integrated operation of their products in the OS/2 environment. The 
  1202. compiler supports IBM's Systems Application Architecture (SAA) and the American 
  1203. National Standards Institute (ANSI) C language specification. 
  1204.  
  1205. A 32-bit PM debugger accompanies the C Set/2 compiler. With this debugger, you 
  1206. can view your source in its native format, assembly language, or a combination 
  1207. of the two. It has extensive support for breakpoints and watchpoints, in 
  1208. addition to an interesting variable monitor display with which you can display 
  1209. structures in detail or collapse them into a single entity. You can easily 
  1210. trace and examine linked lists and other dynamic data structures that depend on 
  1211. pointer links. Absent, however, is the capability to cast an arbitrary piece of 
  1212. memory into a given structure. 
  1213.  
  1214. Tip:  Like many PM-based debuggers, effective use of the C Set/2 debugger often 
  1215.       requires opening many separate windows for variable inspectors, source 
  1216.       views, register displays, and so on. Therefore, I highly recommend using 
  1217.       the debugger with a high- resolution display adapter (800x600) and a 
  1218.       large monitor (15 inches diagonal or greater). At normal VGA resolutions, 
  1219.       you can easily run out of screen real estate. 
  1220.  
  1221.  One of the most innovative components of IBM's tool offering is the 
  1222.  WorkFrame/2. In its simplest form, it is an integrated development 
  1223.  environment. Perhaps the most interesting facet of the WorkFrame's approach is 
  1224.  that it is inherently tool-independent. Unlike Borland's IDE, which forces you 
  1225.  to use the environment's built-in editor, the WorkFrame enables you to use 
  1226.  your own text editor. You can usually easily integrate any external tool into 
  1227.  the WorkFrame environment. You can add most third-party utilities and 
  1228.  development tools to the WorkFrame environment simply by filling in a dialog 
  1229.  box. 
  1230.  
  1231.  
  1232. ΓòÉΓòÉΓòÉ 7.4.7. Borland's Offerings ΓòÉΓòÉΓòÉ
  1233.  
  1234. Borland's popular and elegant development products have long been favorites of 
  1235. professional and amateur programmers. Borland was the first company to release 
  1236. a comprehensive and affordable C++ compiler for DOS and Windows platforms. IBM 
  1237. realized early on that versions of Borland's C++ products would help 
  1238. dramatically boost developers' interest in OS/2. Borland's C++ comprises 
  1239. several separate components. Although a host of accompanying utilities are 
  1240. included, the main tools are the IDE, the command-line compiler, and the 
  1241. debugger. Figure 14.2 shows the IDE and the debugger in action. Although 
  1242. integrated programming environments have been around for years, Borland set the 
  1243. standard when it introduced its DOS-based C++ product in 1990. Since then, the 
  1244. company has continued to refine the IDE's interface, and OS/2 programmers now 
  1245. have the opportunity to use a faithful port of the DOS favorite. 
  1246. Figure 14.2. Borland's C++ for OS/2.
  1247.  
  1248. The OS/2 version takes advantage of the operating system's capability to 
  1249. efficiently multitask (editing source files while seamlessly compiling in the 
  1250. background). Borland's grouping of programs into projects allows the built-in 
  1251. compiler to generate internal dependency lists with ease. The compiler only 
  1252. recompiles those modules that need it, saving you time that might be wasted if 
  1253. the system recompiled all your source code every time you made a change to a 
  1254. module. The IDE's editor also offers syntax highlighting. With this interesting 
  1255. feature, you can display various parts of your program in different colors, 
  1256. depending on the function. You might specify that reserved words, for example, 
  1257. should appear in black and variable names should appear in green. This feature 
  1258. is definitely an acquired taste and takes a little time to get used to. 
  1259.  
  1260. The IDE has its own built-in compiler, but Borland also supplies the same 
  1261. compiler in a command-line version, complete with accompanying make program. 
  1262. One of the IDE's biggest deficiencies is that to fully take advantage of it you 
  1263. need to use the editor supplied with the environment. Although this editor is 
  1264. more than adequate for most programmers, it may not have the same features or 
  1265. keyboard mappings of your favorite text editor. Although you can change the 
  1266. keyboard mappings (with some difficulty), you'll have a hard time simulating 
  1267. features that are not built-in to the IDE's editor. With the command-line 
  1268. version of the compiler, you are not tied into using the IDE and its editor. If 
  1269. you opt to use the command- line version, you lose the IDE's project management 
  1270. capabilities, syntax highlighting, integrated debugger, and 
  1271. "fill-in-the-blanks" compiler support. Instead, you are free to use any editor 
  1272. you want. Because OS/2 supports virtually any DOS, Windows, or native OS/2 
  1273. program, I'm sure that many programmers waive the sexy IDE in favor of their 
  1274. favorite editor. I should also note that Borland supports integration of their 
  1275. command-line compiler with IBM's generic WorkFrame/2 (discussed later in this 
  1276. chapter). If you are a fan of IDEs but are determined to use your own editor, 
  1277. the WorkFrame may be just the right compromise. 
  1278.  
  1279. One of the most successful DOS/Windows debuggers is Borland's Turbo Debugger. 
  1280. Although the Borland development team built the Turbo Debugger for OS/2 from 
  1281. scratch, it retains many strengths and features that have made its DOS-based 
  1282. siblings so endearing to programmers. However, this debugger is OS/2 all the 
  1283. way through-it supports the dynamic tracking of multithreaded programs and is 
  1284. particularly effective in debugging PM programs. Borland used mouse button 2 in 
  1285. a project before IBM made it an integral part of the Workplace Shell, and the 
  1286. button's continued use in the Turbo Debugger gives it the look and feel of a 
  1287. native Workplace Shell application. Because this debugger resembles IBM's C 
  1288. Set/2 debugger in many ways, the same advice about using a high-resolution 
  1289. display definitely applies to the Borland counterpart. 
  1290.  
  1291.  
  1292. ΓòÉΓòÉΓòÉ 7.4.8. Other Vendors ΓòÉΓòÉΓòÉ
  1293.  
  1294. It is a credit to OS/2's growing popularity that I can't even come close to 
  1295. listing all the fine programming products and development aids available from 
  1296. independent software vendors. A recent copy of IBM's OS/2 Application Solutions 
  1297. catalog contained more than 1,400 OS/2 program titles (more than 250 of them 
  1298. are development-oriented applications). I will, however, point out some 
  1299. prominent names that are shipping or working on new OS/2 releases. 
  1300.  
  1301. Watcom, Symantec, and MicroWay have announced intentions to bring C or C++ 
  1302. compilers to market. Digitalk is the Smalltalk powerhouse under OS/2 2.1 with 
  1303. their Smalltalk/V PM product. Micro Focus, a longtime supporter of OS/2, is 
  1304. working on an OS/2 2.1 COBOL product. Clarion is keeping busy as it readies C, 
  1305. C++, Modula-2, and Pascal compilers. Most of these vendors already have 
  1306. supporters from previous versions of products targeted for OS/2 or DOS, so 
  1307. support for these offerings should be very positive. 
  1308.  
  1309. CASE tool vendors are heating up the market in a big way. Caseworks Inc. has 
  1310. updated Case:PM to take advantage of the operating system's new capabilities. 
  1311. This new version is called Case:PM VIP and supports all the new OS/2 controls, 
  1312. as well as those constructs required to comply with IBM's ambitious CUA '91 
  1313. user-interface guideline specification. Gpf Systems has released a 32-bit 
  1314. version of their impressive and well-received Gpf applications development 
  1315. tool. Enfin Software Corp, Guild Products, and Intelligent Environments are 
  1316. making other CASE tools available. The Stirling Group is releasing several 
  1317. useful tools, including a comprehensive resource editor called ResourceShield 
  1318. that enables programmers to edit icons, bitmaps, dialog boxes, and other PM 
  1319. objects. 
  1320.  
  1321.  
  1322. ΓòÉΓòÉΓòÉ 7.4.9. Shareware and Freeware ΓòÉΓòÉΓòÉ
  1323.  
  1324. Although many products are available from third-party commercial software 
  1325. vendors, people are often amazed to find affordable software as freeware and 
  1326. shareware. Freeware is just that: free. You can copy a program marked as 
  1327. freeware, give it away, and indiscriminately use it at will. Shareware 
  1328. typically involves a small fee, but these prices are often considerably cheaper 
  1329. than their commercial equivalents. 
  1330.  
  1331. Caution:  Some freeware or shareware authors allow others to use their programs 
  1332.           only under specific conditions. For example, an author may say that a 
  1333.           program and its source code are absolutely free, but only if you do 
  1334.           not alter them and pass them on to other individuals. Be sure you 
  1335.           understand a program's restrictions before using it. 
  1336.  
  1337.  The primary sources of freeware and shareware are electronic bulletin boards 
  1338.  and large online services like BIX, Prodigy, and CompuServe. CompuServe's 
  1339.  OS2DEV forum contains an assortment of programming-related files available for 
  1340.  downloading. One gem that can be found online is INIMAINT, a program that 
  1341.  helps you browse and modify your INI files. Your OS2.INI and OS2SYS.INI files 
  1342.  contain most of the information about the Workplace Shell desktop, and with 
  1343.  this program you can get at almost all of it. SHOWDLLS is a program that 
  1344.  displays a list of the DLLs used by an EXE or DLL. This program is invaluable 
  1345.  for tracking down the hordes of problems that can arise when multiple versions 
  1346.  of the same DLL are accidentally or inappropriately installed on the same 
  1347.  machine. You can find a large assortment of sample OS/2 source code online. 
  1348.  One effective way to learn how to program OS/2 is to pick through the source 
  1349.  code of a proven program. 
  1350.  
  1351.  In a bit of irony, one of the first C++ compilers available for OS/2 is 
  1352.  absolutely free. You can locate the GNU C/C++ compiler from the Free Software 
  1353.  Foundation on Internet and electronic bulletin boards across the country. 
  1354.  Although this package does not include many frills apart from the compiler, it 
  1355.  hardly matters considering the price you'll pay (you even need to obtain the 
  1356.  make program separately, although the Free Software Foundation's version is 
  1357.  also free). The GNU compiler is a mature product, and renowned companies like 
  1358.  NeXT and Quarterdeck have adopted it as their C compiler standard. 
  1359.  
  1360.  If you have experience on UNIX systems, you will be happy to hear that many 
  1361.  UNIX development tools have been ported to OS/2. Many of these programs are 
  1362.  available for free or for a nominal price. Various programmers have ported the 
  1363.  Free Software Foundation versions of Awk and Make. The GNU Make program is 
  1364.  unique in that it supports different compilings on separate threads. Other 
  1365.  UNIX utilities found on various bulletin boards and CompuServe include YACC 
  1366.  and GREP. Aficionados of the remarkably complete EMACs editor will not be 
  1367.  disappointed; the full-blown EMACs are available under OS/2, as well as a 
  1368.  scaled-down version called MicroEMACs. 
  1369.  
  1370.  IBM has begun a unique program that distributes useful and interesting 
  1371.  programs and programming aids that employees have developed on their own time. 
  1372.  Many of these programs are extremely useful, although not all of them are 
  1373.  related to programming. My favorite, PMTREE, enables the programmer to 
  1374.  manipulate PM windows and modify their internal attributes. You can send event 
  1375.  messages and user-defined messages to almost any window. BOOT20 can be a 
  1376.  lifesaver of a program if you need to boot from a floppy disk drive to perform 
  1377.  maintenance work. With this, you can create an OS/2 boot disk with varying 
  1378.  levels of Workplace Shell support. This program is especially useful if OS/2 
  1379.  was already installed on your computer without accompanying installation 
  1380.  disks. These programs-and others that IBM has approved for release through 
  1381.  their Employee Written Software program (OS2EWS)-are available on IBM's OS/2 
  1382.  bulletin board system and CompuServe. 
  1383.  
  1384.  The programs mentioned here are only a few examples of the kind of quality 
  1385.  software that you can find online. Spending a brief amount of time tracking 
  1386.  down a useful utility can often save hours of frustrating work later. 
  1387.  
  1388.  
  1389. ΓòÉΓòÉΓòÉ 7.5. Installing the WorkSet/2 ΓòÉΓòÉΓòÉ
  1390.  
  1391. As I noted earlier, IBM's WorkSet/2 product is a bundling of the C Set/2 
  1392. compiler, the Developer's Toolkit, and the WorkFrame/2 integrated development 
  1393. environment. Although IBM delivers these components together, they are each 
  1394. individual tools that you need to install separately. 
  1395.  
  1396. Note:  If you plan to use the WorkFrame/2 with the C Set/2 compiler, you must 
  1397.        install the WorkFrame first. The C Set/2 installation program copies 
  1398.        certain configuration files and DLLs into WorkFrame directories. If you 
  1399.        do not install the WorkFrame, these directories will not exist, and the 
  1400.        compiler installation program will assume that you don't want to use the 
  1401.        C Set/2 in accord with the WorkFrame. 
  1402.  
  1403.  
  1404. ΓòÉΓòÉΓòÉ 7.5.1. Installing the WorkFrame/2 ΓòÉΓòÉΓòÉ
  1405.  
  1406. The WorkFrame installation process begins by placing the disk labeled IBM 
  1407. WorkFrame/2, Diskette 1 into the A: drive and running the INSTALL program. The 
  1408. initial install options for this component are straightforward; set the target 
  1409. drive and path appropriately. If you choose to not have your CONFIG.SYS file 
  1410. modified, you must manually add the WorkFrame DLL directory to your LIBPATH 
  1411. statement. The basic installation takes up a little more than 1.5 megabytes of 
  1412. hard disk space, so be sure you plan accordingly. 
  1413.  
  1414. You can easily install the WorkFrame from a LAN drive by using the XCOPY 
  1415. command to copy the installation disk to a directory on the shared disk. Users 
  1416. with access to this directory can then move into this directory and run the 
  1417. INSTALL program from there. 
  1418.  
  1419. Tip:  If you are interested in speeding up the installation process, here's a 
  1420.       little trick that works for the WorkFrame/2, C Set/2 compiler, or Borland 
  1421.       C++ compiler installations (unfortunately, you cannot use this procedure 
  1422.       to install the Developer's Toolkit): create a directory on you local hard 
  1423.       disk called \INSTALL and XCOPY the contents of the installs disks into 
  1424.       it. Then move into this directory and run the appropriate installation 
  1425.       program. When asked for the location of files, or when the program 
  1426.       prompts you to insert the next disk, simply modify the default entries 
  1427.       and make sure that they reference your new \INSTALL directory. You should 
  1428.       not try to install all three of the above mentioned products at once. 
  1429.       Copy one product's disks onto the hard disk, install it, erase the 
  1430.       contents of the directory, and then move on to the next product. Because 
  1431.       your hard disk is substantially faster than your floppy disk drive, the 
  1432.       decompression procedures that all three of these products employ will run 
  1433.       much faster. 
  1434.  
  1435.  You can also install the WorkFrame onto a network drive and share it with 
  1436.  multiple users. To do this, install the WorkFrame into a directory on the 
  1437.  shared LAN drive. Each user who wants access to the WorkFrame needs to run the 
  1438.  Adduser utility (shown in Figure 14.3) to establish the necessary environment. 
  1439.  Although the Adduser program does not copy the WorkFrame executable files and 
  1440.  DLLs to the user's workstation, it creates an IBMWF.INI into which it places 
  1441.  the users' profile. If told to do so, the utility also copies language 
  1442.  profiles, projects, and bitmaps. The WorkFrame uses the language profiles 
  1443.  whenever it performs any useful actions (for example, compile, link, and build 
  1444.  Help files). Therefore, the user should copy these profiles despite the 
  1445.  Adduser utility's insistence that this operation is optional. Select the other 
  1446.  two options as you deem appropriate. Figure 14.3. The Adduser installation utility.
  1447.  
  1448.  
  1449. ΓòÉΓòÉΓòÉ 7.5.2. Installing the C Set/2 Compiler ΓòÉΓòÉΓòÉ
  1450.  
  1451. Begin the installation by placing the disk labeled IBM C Set/2, Diskette 1 into 
  1452. the A: drive and executing the INSTALL program. Remember that a complete 
  1453. installation consumes almost 10 megabytes of disk space. In the main 
  1454. installation dialog box, shown in Figure 14.4, you can specify which components 
  1455. you want to copy onto your hard disk. (The screen display depicted in Figure 
  1456. 14.4 shows a pre- release version of the IBM C Set/2, Version 2.0 installation 
  1457. program. Your screen may appear slightly different.) Most of the options are 
  1458. obvious-the check boxes for the compiler, debugger, profiler, C++ code browser, 
  1459. WorkFrame support, and sample programs select those items for installation. 
  1460. Except for the online portion that you can read with OS/2's VIEW utility, the 
  1461. documentation requires IBM's BookManager Read/2 product for viewing. IBM does 
  1462. not include the BookManager program with the compiler product, so unless you 
  1463. already have it on your machine, you can save more than 1.5 megabytes of disk 
  1464. space by opting not to install these electronic documents. Figure 14.4. C Set/2 
  1465. compiler installation options.
  1466.  
  1467. Tip:  If you have trouble finding an explanation of the C Set/2 installation 
  1468.       process in the documentation, don't despair. The procedure is described 
  1469.       on a small reference card that is simply marked C Set/2 Installation. 
  1470.  
  1471.  
  1472. ΓòÉΓòÉΓòÉ 7.5.3. Installing the IBM Developer's Toolkit for OS/2 2.1 ΓòÉΓòÉΓòÉ
  1473.  
  1474. The Developer's Toolkit is the largest of the three components, spanning nine 
  1475. 3.5- inch disks. Although you can write OS/2 programs without the Developer's 
  1476. Toolkit, you won't be able to write programs that interact and take advantage 
  1477. of the PM. You also won't be able to build and run all the sample WorkFrame 
  1478. projects that are shipped with the C Set/2 product. For these reasons, I 
  1479. strongly recommend that you install this component. The Toolkit occupies about 
  1480. 24 megabytes of disk space when fully installed. 
  1481.  
  1482. Begin the installation by placing the disk labeled IBM OS/2 Developer's 
  1483. Toolkit, Diskette 1 into the A: drive and running the INSTALL program found on 
  1484. that disk. Unlike the previous two components, the Toolkit's installation 
  1485. program does not display an initial dialog box. As you can see in Figure 14.5, 
  1486. the program gives you the option of installing three separate items, all of 
  1487. which are useful and recommended, although only the third one (Development 
  1488. Tools) is absolutely required to develop PM programs. To begin the 
  1489. installation, choose the Install selection from the Options menu. 
  1490.  
  1491. Caution:  If you want to install the Toolkit on a drive other than the C: 
  1492.           drive, choose the Set drives selection from the Options menu and make 
  1493.           the appropriate changes in the presented dialog box. If you don't do 
  1494.           this, the installation program will assume that you want the selected 
  1495.           items to be copied to the C: drive. 
  1496.  
  1497.  Figure 14.5. IBM Developer's Toolkit for OS/2 2.1 installation options.
  1498.  
  1499.  At this point you should have all three of the WorkSet/2 components installed 
  1500.  on your hard disk. You now need to reboot your computer for the changes made 
  1501.  to your CONFIG.SYS to take effect. If you elected not to allow the 
  1502.  installation programs to modify your CONFIG.SYS, be sure that you add the 
  1503.  appropriate entries to your LIBPATH before using any of the components. 
  1504.  Congratulations-you are finally ready to compile and run your first OS/2 
  1505.  program! 
  1506.  
  1507.  
  1508. ΓòÉΓòÉΓòÉ 7.6. Starting and Testing the WorkFrame/2 ΓòÉΓòÉΓòÉ
  1509.  
  1510. The installation process has conveniently created two command files so you can 
  1511. set various environmental variables that the compiler, WorkFrame, and Toolkit 
  1512. need. You can find the first file, CSETENV.CMD, in the C Set/2 BIN directory 
  1513. (if you installed using the defaults, this is C:\IBMC\BIN). This command file 
  1514. prepares the environment but does not execute any program. You can find the 
  1515. second command file, IBMWF.CMD, in the WorkFrame BIN directory (if you 
  1516. installed using the defaults, this is C:\IBMWF\BIN). Because this command file 
  1517. runs the WorkFrame, you need to run the CSETENV.CMD file before this one. Of 
  1518. course, by combining the two command files, you can set up and run the entire 
  1519. environment at once. You may find it easier to launch the WorkFrame directly 
  1520. from the Workplace Shell objects that the installation programs created. If you 
  1521. allowed the installation programs to directly modify your CONFIG.SYS, this 
  1522. method should work fine. 
  1523.  
  1524. If you are using the Developer's Toolkit and you did not allow the 
  1525. in-stallation programs to modify your CONFIG.SYS, you may want to add the 
  1526. following entries to your CSETENV.CMD file. Be sure that the C:\TOOLKT20\C\OS2H 
  1527. directory is appended to the INCLUDE environ-mental variable and that the LIB 
  1528. environmental variable includes the C:\TOOLKT20\OS2LIB directory. Of course, if 
  1529. you installed the Toolkit on a drive other than the C: drive, you need to make 
  1530. changes accordingly. 
  1531.  
  1532. Tip:  If you need to program with multiple compilers, you might want to create 
  1533.       a command file that sets up the appropriate environment for each product. 
  1534.       You can then create a new Workplace Shell object for each command file. 
  1535.       Place an asterisk in the path and filename field of the object's Program 
  1536.       tab. This indicates to OS/2 that you want to start a new command prompt 
  1537.       window. Now place the arguments /K X.CMD in the Parameters field, where X 
  1538.       is your new command file's name. This tells OS/2 to execute the indicated 
  1539.       command file immediately after creating the new prompt window. Now, every 
  1540.       time you open this object, a new command-line appears that is 
  1541.       specifically configured for one of your programming systems. Using this 
  1542.       mechanism, I have four distinct development environments on my machine, 
  1543.       each using a different compiler and set of tools. 
  1544.  
  1545.  To test your newly installed products, I recommend building one of the sample 
  1546.  projects included with the C Set/2 compiler. Start the WorkFrame using the 
  1547.  previously described command files or launch it from its desktop icon. You 
  1548.  should see the central work environment screen illustrated in Figure 14.6. The 
  1549.  WorkFrame segregates programs into separate projects (which I will discuss in 
  1550.  detail a little later), and the C Set/2 compiler ships with four sample 
  1551.  projects. The PMLINES program demonstrates multithreading and PM graphical 
  1552.  programming techniques. You can select this project by double-clicking the 
  1553.  project entry in the Project Control window. The window that appears is called 
  1554.  the Project window, and it contains a list of all the relevant files that 
  1555.  belong to this project. You can create the PMLINES program by selecting the 
  1556.  Make option from the Actions menu or by simply typing Ctrl-M. After the Make 
  1557.  window has appeared and the executable file has been built, you can run the 
  1558.  program by selecting the Run option from the Actions menu or by typing Ctrl-R. 
  1559.  Figure 14.6. The IBM WorkFrame/2.
  1560.  
  1561.  
  1562. ΓòÉΓòÉΓòÉ 7.7. Using the WorkFrame/2 ΓòÉΓòÉΓòÉ
  1563.  
  1564. You can't deny that writing OS/2 applications can become a complex process, and 
  1565. WorkFrame does a good job of organizing the programming procedures that you 
  1566. will use. The WorkFrame accomplishes this is by giving you a great deal of 
  1567. flexibility in how you switch from one window to another and from one running 
  1568. program to another. 
  1569.  
  1570.  
  1571. ΓòÉΓòÉΓòÉ 7.7.1. The Window Lists ΓòÉΓòÉΓòÉ
  1572.  
  1573. One mechanism that the WorkFrame uses to help organize the development process 
  1574. is to divide on- screen windows into two categories: sessions and dialogs. A 
  1575. session window belongs to a program that is not an integral part of the 
  1576. WorkFrame. Examples of session windows include editors, command windows, and 
  1577. tools that you have indicated should run in the foreground. Conversely, a 
  1578. dialog window belongs to the WorkFrame program or a tool configured to run in 
  1579. background mode. Examples of dialog windows include the main Project Control 
  1580. dialog window, the Action Log window, and the individual Project windows. 
  1581. Dialog windows generally remain on top of the main WorkFrame/2 window; session 
  1582. windows may be hidden from view by placing them beneath the WorkFrame. 
  1583.  
  1584. The key to switching rapidly between session windows and dialog windows is the 
  1585. Window menu that appears on the main WorkFrame menu bar. This menu contains two 
  1586. submenus that list the currently active session and dialog windows. You can 
  1587. move into any window listed on either of these menus by selecting the 
  1588. appropriate entry. Using the Window menu, you should quickly become accustomed 
  1589. to zipping from one view to the next. 
  1590.  
  1591.  
  1592. ΓòÉΓòÉΓòÉ 7.7.2. The Switch List and the Window Shade ΓòÉΓòÉΓòÉ
  1593.  
  1594. Although the WorkFrame allows a high level of integration with external tools 
  1595. and utilities, occasions will arise when you need to interact directly with 
  1596. OS/2 or use a program that you cannot incorporate into the WorkFrame. In these 
  1597. cases, you can use the switch list to jump to processes that are already 
  1598. running. You can also use the window shade to gain easy access to Workplace 
  1599. Shell objects. 
  1600.  
  1601. The switch list, found under the Switch List menu, provides a limited display 
  1602. of those programs that are currently running. To switch to another program, 
  1603. simply select the desired program name from the switch list. However, because 
  1604. the switch list does not necessarily display all currently running programs, 
  1605. you may need to modify it. You can accomplish this by selecting the Switch List 
  1606. panel of the Configure menu. The WorkFrame presents you with a dialog box with 
  1607. a list of the currently running processes from which you can select programs. 
  1608.  
  1609. This feature can be very useful, but I urge you to limit the number of entries 
  1610. that you add to the list. Although it is technically possible to add many 
  1611. active programs to the Switch List, this feature follows the law of diminishing 
  1612. returns. Once you have added seven or eight items, you will probably find 
  1613. yourself spending a significant amount of time searching for the desired 
  1614. program within the menu list. As a rule, the Switch List should be long enough 
  1615. to fit those processes that you use most often, but not long enough to hinder 
  1616. your ability to quickly switch from one program to another. 
  1617.  
  1618. The window shade is just another way of looking at the central WorkFrame work 
  1619. window. A bit of experimentation reveals that you can resize this window just 
  1620. like any other Workplace Shell window. The user can raise or lower the window 
  1621. shade by "grabbing" the window's lower edge and dragging it up or down to its 
  1622. desired height. By furling and unfurling the window shade in this manner, you 
  1623. can reveal or hide the desktop and its associated views. Clicking desktop 
  1624. objects brings them to the top of the window stack and makes them easily 
  1625. accessible. The window shade provides a convenient way to conceal or expose 
  1626. parts of the desktop that are of interest to the developer. Although I don't 
  1627. find myself resizing the shade very often, I always keep it at a level that 
  1628. grants me at least partial access to the desktop. 
  1629.  
  1630.  
  1631. ΓòÉΓòÉΓòÉ 7.7.3. Adding Tools to the Working Environment ΓòÉΓòÉΓòÉ
  1632.  
  1633. he WorkFrame also provides an easy way to launch tools and utilities. The Tools 
  1634. menu provides access to features like make file generation and library 
  1635. services, but the programmer can also customize it. Tools placed on this menu 
  1636. also have a convenient hot key automatically assigned to them so you can 
  1637. quickly start a tool with a single keystroke. To add a tool entry to this menu, 
  1638. or to remove a tool that is already on it, select the Tools option from the 
  1639. Configure menu. You'll see a list of the tools already installed. From this 
  1640. dialog box, you can easily delete or modify tools that are already installed or 
  1641. add new programs. Clicking the New button brings up a dialog box like the one 
  1642. depicted in Figure 14.7. Figure 14.7. Adding tools to the WorkFrame/2 environment.
  1643.  
  1644. Filling in the New Tool dialog box is a straightforward process, although a 
  1645. couple of important things are probably worth mentioning. You can specify 
  1646. parameters to be passed through to the tool program by placing them in the 
  1647. Invocation string field. If you are starting a command file instead of an 
  1648. executable file, be sure to check the Command File box, or the spawning of the 
  1649. utility process will probably fail. The Background/Foreground radio button 
  1650. group dictates the specific screen behavior of the tool. Tools executing in the 
  1651. background are effectively invisible, and the user can't direct interactions 
  1652. with them; instead, the WorkFrame captures their output and presents it to the 
  1653. user in a Monitor window. On the other hand, tools executing in the foreground 
  1654. are created in their own window or full-screen session, and the programmer 
  1655. interacts with these programs in the appropriate manner. Remember that tools 
  1656. running in the foreground are added to the Sessions list in the Windows menu 
  1657. and that they can be optionally added to the Switch List. 
  1658.  
  1659.  
  1660. ΓòÉΓòÉΓòÉ 7.8. Building a Project ΓòÉΓòÉΓòÉ
  1661.  
  1662. WorkFrame organizes your development work into a collection of projects. A 
  1663. project is a collection of files contained in the same directory and a set of 
  1664. WorkFrame specific settings that describe the prominent characteristics 
  1665. associated with these files. These settings, which you can easily set using 
  1666. various WorkFrame dialog boxes, include features such as language profiles, 
  1667. compiler options, and linker settings. 
  1668.  
  1669.  
  1670. ΓòÉΓòÉΓòÉ 7.8.1. Base and Composite Projects ΓòÉΓòÉΓòÉ
  1671.  
  1672. The WorkFrame recognizes two different types of projects: base projects and 
  1673. composite projects. A base project has a single target that is either an 
  1674. executable file (.EXE) or a supporting dynamic link library (.DLL). To 
  1675. accommodate larger programming systems that may contain many executable files 
  1676. and DLLs, the WorkFrame supports composite projects. A composite project is a 
  1677. collection of base projects bound together into a single conceptual unit. 
  1678. Selecting the Make command from a base project builds that project's single 
  1679. target, whereas selecting Make from a composite project causes each of the 
  1680. included base projects to be built one at a time. 
  1681.  
  1682. The WorkFrame displays projects in the central Project Control dialog box. (If 
  1683. this dialog box is not visible, you can open it using the Project Control item 
  1684. in the File menu). This dialog box contains options for creating new projects 
  1685. and deleting or modifying preexisting projects. You open project entries by 
  1686. clicking the Open button or by double-clicking directly the project entry. Each 
  1687. open base project has its own Project window that displays a list of the files 
  1688. that reside within the project directory. Each open composite project has a 
  1689. Project window that lists the base projects that belong to it. You can 
  1690. double-click these base project names to open their respective base Project 
  1691. windows. 
  1692.  
  1693. Tip:  You can limit the files displayed in the base Project windows by 
  1694.       modifying the File Mask entry field. This field accepts one or more wild 
  1695.       card expressions that determine which files get included in the main file 
  1696.       list box. For example, if you only want to see your C source files and 
  1697.       header files, you might enter a file mask entry of *.C *.H. 
  1698.  
  1699.  The Actions menu is one of the most frequently used WorkFrame menus. All the 
  1700.  commands that you need to build, run, and debug your application appear in 
  1701.  this menu, with accelerator keys defined for faster access. For example, to 
  1702.  compile the source files currently selected in the base Project window, type 
  1703.  Ctrl-C; to run your application in the C Set/2 debugger, type Ctrl-D. With 
  1704.  regular use these keystrokes will become second nature to you. 
  1705.  
  1706.  Tip:  The WorkFrame uses drag-and-drop extensively throughout its user 
  1707.        interface. Source files can be dragged from project window to project 
  1708.        window, providing an easy way to copy source code between projects. 
  1709.        Files can also be dragged from project windows into the deletion window 
  1710.        in much the same way that you can drag Workplace Shell objects into the 
  1711.        shredder. Experiment! You might be surprised by some of the things that 
  1712.        the WorkFrame lets you do. 
  1713.  
  1714.  
  1715. ΓòÉΓòÉΓòÉ 7.8.2. Setting C Set/2 Compiler Settings ΓòÉΓòÉΓòÉ
  1716.  
  1717. Every compiler that supports the WorkFrame ships with a DLL that enables the 
  1718. user to seamlessly set command-line compiler switches through dialog boxes. The 
  1719. C Set/2 compiler is no exception. One of the first things you need to do when 
  1720. creating a new project is to ensure that the compiler settings are appropriate 
  1721. for the program you are trying to build. 
  1722.  
  1723. When you first create a project, the WorkFrame prompts you with a dialog box 
  1724. containing buttons that relate to each of the program build phases (for 
  1725. example, make, compile, link, debug, and run). You can also get this dialog box 
  1726. by clicking the Change button in the Project Control window. Each of the 
  1727. displayed buttons causes the C Set/2 DLLs to display dialog boxes that relate 
  1728. to each of these phases. For example, clicking the Compile options button 
  1729. brings up a transitional dialog box that enables you to control many different 
  1730. aspects of the compilation phase. Clicking the Object code control options 
  1731. button displays the dialog box, shown in Figure 14.8, that enables you to set 
  1732. most of the important options relating to target type (EXE or DLL), 
  1733. multithreading, the target processor, and so on. Although you can modify and 
  1734. set many dialog boxes, anyone with command-line compiler experience will admit 
  1735. that this approach is much easier to understand and use. If you don't have any 
  1736. command-line experience, consider yourself lucky. This is definitely one of the 
  1737. quickest and least painful ways to break into OS/2 programming. 
  1738.  
  1739. Tip:  The compiler, linker, make, debug, and run settings are also individually 
  1740.       accessible under the Options menu. 
  1741.  
  1742.  When you are satisfied that you've correctly adjusted your project settings, 
  1743.  you need to generate the make file and dependency file that the WorkFrame uses 
  1744.  to build your application. Do this by selecting the Make File Creation option 
  1745.  from the Tools menu. With the Make File Creation dialog box, shown in Figure 
  1746.  14.9, you can select the files you want to include in the build process. You 
  1747.  also use this dialog box to indicate which actions you want to be incorporated 
  1748.  into the build process. Therefore, you might select all the C files from the 
  1749.  file list box on the right and the Compile and Link options from the Actions 
  1750.  list box on the left. This ensures that the correct entries for compiling your 
  1751.  source files into object modules are added to the make file and that the make 
  1752.  file correctly links your object modules. If you are building a complex PM 
  1753.  program, you might take advantage of the Resource compile, Message file, and 
  1754.  IPF compile actions. Clicking the OK button creates the make file and enables 
  1755.  the WorkFrame to build your target correctly. Figure 14.8. A C Set/2 compiler 
  1756.  options dialog box.
  1757.  
  1758.  Tip:  Buttons that enable you to modify your project's compile and link 
  1759.        options are conveniently located in the center of this dialog box. If 
  1760.        you realize that you've made a mistake when setting the compiler options 
  1761.        or if you simply decide that you want to change a particular setting, 
  1762.        you can access the appropriate setting by clicking one of these buttons. 
  1763.  
  1764.  Figure 14.9. The Make File Creation dialog box.
  1765.  
  1766.  
  1767. ΓòÉΓòÉΓòÉ 7.9. Editing Source Files ΓòÉΓòÉΓòÉ
  1768.  
  1769. Like programming tools, the WorkFrame treats program editors as external 
  1770. entities that can be set up and integrated directly into the development 
  1771. environment. You can find your editor configuration in the Editor selection 
  1772. under the Configure menu. The configuration dialog box prompts you for the path 
  1773. and filename of your editor's executable file and for any parameters that you 
  1774. want to be passed to the program in the form of command-line arguments. If you 
  1775. do not choose to provide your own editor, the WorkFrame defaults to the EPM 
  1776. editor that is installed with the base operating system. 
  1777.  
  1778. Tip:  If you normally start your editor through a command file, set the Current 
  1779.       Editor field to CMD.EXE and place /K X.CMD in the Editor invocation 
  1780.       string field (where X is the name of your command file). 
  1781.  
  1782.  The simplest way to edit a file is to double-click its entry in the Project 
  1783.  window. This action starts your editor and makes it the active window. If your 
  1784.  editor can accept filenames on its command-line, you may want to specify the 
  1785.  substitution variables %a %z on the invocation string field of the editor's 
  1786.  configuration dialog box. This allows the editor to automatically load the 
  1787.  files selected in the Project window. Some editors even support close 
  1788.  integration with the Make monitor window. If your editor can receive messages 
  1789.  from the WorkFrame (consult your editor's documentation or call the editor's 
  1790.  technical support line) you can double-click C Set error messages that appear 
  1791.  in the Make window, and your editor will move the cursor to the appropriate 
  1792.  line number. Although not many editors currently support this level of 
  1793.  integration, hopefully this will change as WorkFrame use becomes more 
  1794.  prevalent. 
  1795.  
  1796.  Tip:  If your editor cannot accept multiple filenames on its command-line, use 
  1797.        the substitution variable %f instead of %a %z. The %f variable specifies 
  1798.        that only the first filename should be passed through to the editor, 
  1799.        whereas the %a %z variables pass every selected filename. Passing too 
  1800.        many filenames may cause your editor to generate errors or refuse to 
  1801.        load. 
  1802.  
  1803.  
  1804. ΓòÉΓòÉΓòÉ 7.10. Using the Online Documentation ΓòÉΓòÉΓòÉ
  1805.  
  1806. The Developer's Toolkit comes with a great deal of online documentation in .INF 
  1807. file format. These files are read using the VIEW program that accompanies OS/2. 
  1808. If you let the installation programs modify your CONFIG.SYS, your environment 
  1809. has been set up to allow easy access to online documents. You should be able to 
  1810. acquire general OS/2 programming information by typing VIEW PROGREF20 and PM 
  1811. programming information by typing VIEW PMREF. 
  1812.  
  1813. Note:  If you did not directly modify your CONFIG.SYS at the time of 
  1814.        installation, you may need to make a few modifications to your 
  1815.        development environment in order to gain access to the online 
  1816.        documentation. Be sure that the BOOKSHELF environmental variable is set 
  1817.        (either from the command prompt, in your CONFIG.SYS, or in your 
  1818.        CSETENV.CMD command file) so that the C:\TOOLKT20\BOOK directory is 
  1819.        appended to it. If you installed the Developer's Toolkit somewhere other 
  1820.        than the C: drive, be sure that you use the appropriate drive letter. To 
  1821.        make access to the documentation even easier, I suggest you add the 
  1822.        following entries to your CSETENV.CMD file: 
  1823.  
  1824.               SET PROGREF20=GUIREF20.INF
  1825.               SET PMREF20=PMFUN.INF+PMGPI.INF+PMHOK.INF+PMMSG.INF+PMREL.INF+PMWIN.INF+PMWKP.INF
  1826.  
  1827.  When you first run VIEW to study the online documentation, it presents you 
  1828.  with a Contents window that lists the major topics covered by the loaded INF 
  1829.  files. The contents menu is hierarchical in nature, so you can expand the 
  1830.  topics with subheadings by clicking the plus (+) sign that sits in the 
  1831.  window's left margin (see Figure 14.10). Any heading or subheading can be 
  1832.  double- clicked on; this displays the selected section in another window. You 
  1833.  can efficiently browse the INF file using the buttons that run along the 
  1834.  bottom of the main window, and you can search it using VIEW's built-in 
  1835.  searching capabilities. 
  1836.  
  1837.  The general OS/2 programming information files cover those aspects of the 
  1838.  operating system that are called Control Program functions. These functions 
  1839.  are not directly related or linked to the PM, but they instead provide basic 
  1840.  operating system services. Examples of such OS/2 constructs include dynamic 
  1841.  linking, the file system, memory management, message management (not to be 
  1842.  confused with PM messages), semaphores, named pipes, and so on. Figure 14.10. 
  1843.  The VIEW program with Control Program Reference loaded.
  1844.  
  1845.  The PM programming information files, on the other hand, relate to material 
  1846.  exclusively related to PM, the Workplace Shell, and the System Object Model 
  1847.  (SOM), which is the object-oriented programming foundation upon which the 
  1848.  Workplace Shell sits. Because these systems can be quite complex, these INF 
  1849.  files are considerably larger and a little more difficult to navigate. 
  1850.  
  1851.  The Developer's Toolkit includes a useful documentation browser called 
  1852.  KWIKINF. This utility allows you to press a hot key sequence that displays a 
  1853.  list of online file topics installed on your system. This facility works from 
  1854.  within PM and text-mode sessions and is the most convenient way to get at .INF 
  1855.  files quickly. Use it as a form of instant online help-if you've ever gotten 
  1856.  tired of typing VIEW PROGREF20, or even just help, this program will quickly 
  1857.  become a favorite. 
  1858.  
  1859.  KWIKINF uses special index files to help it find and search the online .INF 
  1860.  files. These index files have an .NDX extension. In order for the utility to 
  1861.  operate correctly, it is important that you define an environmental variable 
  1862.  called HELPNDX that includes the name of your central KWIKINF index file. The 
  1863.  program uses the BOOKSHELF environment variable when looking for this .NDX 
  1864.  file, so be sure your index file can be found in one of the BOOKSHELF 
  1865.  directories. 
  1866.  
  1867.  Tip:  The KWIKINF program suffers from the annoying limitation of only being 
  1868.        able to use a single index file. If you have two (or more) index files 
  1869.        that you want to include in your topics list, you need to combine them 
  1870.        into a single master index file. Do this using the COPY command. For 
  1871.        example, assume that you want to combine the DDE4.NDX file (which you 
  1872.        can find in the \IBMC\HELP directory) with the EPMKWHLP.NDX file (which 
  1873.        you can find in the \TOOLKT20\BOOK directory). The following command 
  1874.        concatenates the two files and places them into a single index file 
  1875.        called MASTER.NDX. 
  1876.  
  1877.               COPY EPMKWHLP.NDX + DDE4.NDX MASTER.NDX
  1878.  
  1879.  Be sure that your HELPNDX environment variable is set to this master index 
  1880.  file and that the index file is located in one of the bookshelf directories. 
  1881.  
  1882.  
  1883. ΓòÉΓòÉΓòÉ 7.11. Good Luck! ΓòÉΓòÉΓòÉ
  1884.  
  1885. Although learning to program OS/2 can be intimidating at first, don't worry. 
  1886. Probably the most problematic aspect of the process relates to the fact that 
  1887. there is so much to learn. OS/2 is a large system with many exciting and 
  1888. interesting nooks and crannies. Don't feel like you need to explore them all at 
  1889. once. Keep at it. I guarantee you success. 
  1890.  
  1891.  
  1892. ΓòÉΓòÉΓòÉ 7.12. Author Bio ΓòÉΓòÉΓòÉ
  1893.  
  1894. Chris Corry is a lead OS/2 2.1 developer for a programming team at American 
  1895. Management Systems in Arlington, Virginia.  The team is responsible for 
  1896. developing a distributed IBM Client/Server imaging system that operates on LANs 
  1897. and host mainframes. His professional interests range from object-oriented 
  1898. programming to user-interface design. Corry holds a bachelor's degree form the 
  1899. University of Pennsylvania. 
  1900.  
  1901.  
  1902. ΓòÉΓòÉΓòÉ 8. Multimedia ΓòÉΓòÉΓòÉ
  1903.  
  1904. In This Chapter 
  1905.  
  1906.       What Is Multimedia? 
  1907.       OS/2 as a Multimedia Platform 
  1908.       IBM Ultimedia 
  1909.       OS/2 Support for Multimedia Devices 
  1910.       Multimedia Sampler 
  1911.       MMPM/2 in Detail 
  1912.       Using Unsupported CD-ROM Drives 
  1913.       Multimedia Development Environment 
  1914.       Future Multimedia 
  1915.       Conclusion 
  1916.  
  1917.  Because the OS/2 operating system is able to coordinate many things 
  1918.  simultaneously, it may just be the best platform for PC multimedia. However, 
  1919.  OS/2 seems to have entered the multimedia game late; few products are 
  1920.  available that actually utilize the vast capability of OS/2. That could change 
  1921.  rather quickly, however, as IBM releases development tools, along with the 
  1922.  release of OS/2 2.1 that includes the Windows 3.1 multimedia capability. 
  1923.  
  1924.  
  1925. ΓòÉΓòÉΓòÉ 8.1. What Is Multimedia? ΓòÉΓòÉΓòÉ
  1926.  
  1927. Multimedia is a term that often confuses both experienced and novice computer 
  1928. users. Some consider anything available on CD-ROM as multimedia, and others 
  1929. define not the storage medium, but the presentation technology. Especially with 
  1930. OS/2, what is sold to the consumer as "multimedia" is typically raw hardware. 
  1931. In other cases, games with sound and graphics are considered to be multimedia. 
  1932.  
  1933.  
  1934. ΓòÉΓòÉΓòÉ 8.1.1. CD-ROM ΓòÉΓòÉΓòÉ
  1935.  
  1936. CD-ROM is merely a software distribution media, and this in itself does not 
  1937. guarantee multimedia. However, it is an important enabling technology for 
  1938. multimedia. To be more specific, it is important to understand that digitized 
  1939. audio and video consume a tremendous amount of computer storage. A 70-minute 
  1940. musical compact disc (CD) holds the equivalent of more than 600M of 
  1941. uncompressed computer data. Video data is even worse-600M holds a few minutes 
  1942. worth of uncompressed television-quality video. Now you know why those video 
  1943. laser discs are so much larger than CDs. 
  1944.  
  1945. CD-ROM is quickly gaining importance in the computer industry. CD-ROM is 
  1946. becoming a popular medium for large software products, including OS/2 2.1 
  1947. development tools. CD-ROM, in the form of the Kodak Photo-CD, is also gaining a 
  1948. lot of consumer interest. Kodak's Photo-CD format allows more than one hundred 
  1949. high-quality photograph scans to be placed on a single disc. These discs can be 
  1950. attached to special players and viewed on a color television. CD-ROM XA- 
  1951. compatible drives, however, can import these pictures into computer 
  1952. applications. 
  1953.  
  1954.  
  1955. ΓòÉΓòÉΓòÉ 8.1.2. Audio and Sound Effects ΓòÉΓòÉΓòÉ
  1956.  
  1957. Some consider programs that present visual and sound information at the same 
  1958. time as multimedia. Using this definition, almost any game would be classified 
  1959. as multimedia. Technically this is true, as more than one form of media 
  1960. (presentation) is being used. However, defining what makes a game "multimedia" 
  1961. is truly a gray area; usually, games that use speech and extensive high-quality 
  1962. animation are considered multimedia. 
  1963. Figure 18.1. King's Quest V.
  1964.  
  1965. Figure 18.1 shows Sierra's King's Quest V CD-ROM game. The CD-ROM version of 
  1966. this game includes digitized speech. The characters actually move their mouths 
  1967. in sync with the speech. This disc contains more than 115 megabytes of game and 
  1968. sound data. 
  1969.  
  1970. With business applications, voice annotation tends to make a program 
  1971. multimedia. Many Windows programs (and hopefully soon, OS/2 programs) now 
  1972. support "voice notes" that you can attach to a document. Lotus actually ships a 
  1973. version of 1-2-3 for Windows on CD-ROM with support for this type of activity. 
  1974. Wavefrom audio (WAVE) files have also become a common way to make everyday 
  1975. computer work a bit more entertaining. Even screen savers such as After Dark 
  1976. for Windows support audio! 
  1977.  
  1978.  
  1979. ΓòÉΓòÉΓòÉ 8.1.3. Animation and Graphics ΓòÉΓòÉΓòÉ
  1980.  
  1981. Graphic animation is another area that relates to multimedia. Video capture and 
  1982. playback, graphic animation, and presentation programs are all examples of 
  1983. computer-controlled visual presentation aspects. Video animation typically 
  1984. comes in two forms: software-based and hardware-base animation. Later in this 
  1985. chapter, the IBM ActionMedia II hardware board is outlined. As it stands now, 
  1986. it is not possible to import and export video data as easily as text or 
  1987. graphics. Although there are currently no well- established standards for 
  1988. software-only video presentations, IBM is working on such a solution. 
  1989.  
  1990.  
  1991. ΓòÉΓòÉΓòÉ 8.1.4. Overall ΓòÉΓòÉΓòÉ
  1992.  
  1993. Multimedia can be defined to mean programs that use nontraditional ways of 
  1994. communication. In some cases, this may mean using sounds. In the past, most 
  1995. sounds on a personal computer were used for entertainment. Now sounds can be 
  1996. used to add voice notes to spreadsheets and word-processing documents. Even 
  1997. with business applications, much of the multimedia sounds are intended for 
  1998. entertainment purposes. 
  1999.  
  2000. In other instances, these nontraditional ways of communicating employ graphics. 
  2001. Consider that graphics are already used to express ideas in OS/2-you may or may 
  2002. not consider this multimedia. What if the graphics are animated or fluid-motion 
  2003. like television? The hardware technology is heading in this direction, as is 
  2004. OS/2. 
  2005.  
  2006. As this fledgling technology matures, multimedia will come to mean all of these 
  2007. things combined. Programs that employ sound and animation (such as video) and 
  2008. control will be truly interactive multimedia. Some of this, however, is 
  2009. available today, and OS/2 can tap these products. 
  2010.  
  2011.  
  2012. ΓòÉΓòÉΓòÉ 8.2. OS/2 as a Multimedia Platform ΓòÉΓòÉΓòÉ
  2013.  
  2014. OS/2 has several strengths relative to multimedia development and usage: 
  2015.  
  2016.    o  Preemptive multitasking allows multiple methods of output, such as sound 
  2017.       and video at the same time (it also simplifies design issues for 
  2018.       developers wanting to create such applications). 
  2019.  
  2020.    o  OS/2 can prioritize multitasking for time-critical activities such as 
  2021.       video and audio capture. 
  2022.  
  2023.    o  Large memory resources can handle the huge data sets commonly associated 
  2024.       with digital sound and video. 
  2025.  
  2026.    o  Graphical interface can facilitate user-friendly interfaces using 
  2027.       sliders, knobs, and pushbuttons. 
  2028.  
  2029.    o  Well-developed programming interfaces standardize development of all 
  2030.       aspects of multimedia software. 
  2031.  
  2032.    o  Support for existing DOS and Windows multimedia products. 
  2033.  
  2034.  These are part of the reason that IBM has selected OS/2 as its premier 
  2035.  Multimedia platform. IBM refers to its Multimedia products as Ultimedia. 
  2036.  
  2037.  
  2038. ΓòÉΓòÉΓòÉ 8.3. IBM Ultimedia ΓòÉΓòÉΓòÉ
  2039.  
  2040. At this time, IBM's Ultimedia products are the best-supported hardware devices 
  2041. under OS/2. Hopefully this will change as OS/2 gains more popularity. IBM's 
  2042. Ultimedia product line is quite extensive, including several PS/2 machines that 
  2043. carry the Ultimedia name. The PS/2 Ultimedia workstations include XGA graphics 
  2044. capability, an internal CD-ROM drive, an M-Audio Capture and Playback adapter, 
  2045. and a high-speed SCSI controller (used for CD-ROM and fixed disks). These PS/2 
  2046. Ultimedia systems represent the best of IBM's "ready-to-run" multimedia 
  2047. workstations. 
  2048.  
  2049. As well integrated as the Ultimedia workstations are, they may not be for 
  2050. everyone. In respect to multimedia, IBM does not intend to leave previous 
  2051. computer owners in the past. It is important to understand that IBM has gone to 
  2052. considerable lengths to ensure that much of this technology is available in 
  2053. stand-alone cards and modules. In fact, IBM has done quite well in support of 
  2054. ISA systems. Obviously IBM would rather have you use their own PS/2 systems, 
  2055. but they will support you as an equal using competitors' systems. The OS/2 
  2056. operating system is another good example of this type of previously 
  2057. unprecedented IBM support. 
  2058.  
  2059. The following list contains a summary of OS/2-supported IBM Ultimedia hardware 
  2060. devices: 
  2061.  
  2062.       PS/2 TV: an external device that enables you to receive and display 
  2063.       television channels on your VGA or XGA monitor. PS/2 TV allows 
  2064.       "picture-in-a-picture" viewing of video source on VGA and full-screen 
  2065.       viewing on VGA and XGA. This unit has a built-in 181-channel cable- ready 
  2066.       TV tuner, and it also supports base-band signals (VCR, video camera, 
  2067.       laser disk, game machine, and so on). Although it is external, and can 
  2068.       function with any system using VGA or XGA, it does interface with and 
  2069.       requires a PS/2-style keyboard. The hardware operates independently of 
  2070.       the computer, requiring no CPU attention. The device does not support any 
  2071.       type of computer video capturing. 
  2072.  
  2073.       ActionMedia II Display Adapter: an ISA or Microchannel board for complete 
  2074.       digital video and sound. This device includes a SCSI interface for a 
  2075.       CD-ROM drive. Intel/IBM developed Digital Video Interactive (DVI) 
  2076.       standard playback (hardware-assisted compression and playback). It can 
  2077.       playback pictures and digital audio simultaneously (30 frames per second, 
  2078.       television quality). It includes a direct interface for base-band and 
  2079.       S-VHS. 
  2080.  
  2081.       ActionMedia II capture option: this can be added to the base board for 
  2082.       capture purposes, and it supports real-time motion capture and 
  2083.       super-quality, 24-bit, single-frame snapshots. 
  2084.  
  2085.       M-Audio Capture and Playback adapter: an ISA or Microchannel board for 
  2086.       capture and playback of digital audio with 8- or 16-bit sampling. 
  2087.  
  2088.       8516 Touch Display: IBM's XGA-class monitor designed for touch-based 
  2089.       control. IBM has drivers available for both OS/2 and Windows 
  2090.       environments. This can be used in place of a mouse. As mentioned, some of 
  2091.       the PS/2 Ultimedia models ship with these options or they can be 
  2092.       installed in other ISA or PS/2 machines. OS/2 currently supports all of 
  2093.       these multimedia devices, along with some third-party boards such as the 
  2094.       Creative Labs Sound Blaster and Sound Blaster Pro. 
  2095.  
  2096.  
  2097. ΓòÉΓòÉΓòÉ 8.4. OS/2 Support for Multimedia Devices ΓòÉΓòÉΓòÉ
  2098.  
  2099. There are two ways of approaching the question of what devices are supported 
  2100. under OS/2: the base operating system includes support for SCSI-based CD-ROM 
  2101. drives; and individual device drivers are available for specific devices. Some 
  2102. of these devices are intended to interface with the MultiMedia Presentation 
  2103. Manager/2 (MMPM/2) package that IBM offers. 
  2104.  
  2105.  
  2106. ΓòÉΓòÉΓòÉ 8.4.1. Base OS/2 CD-ROM Support ΓòÉΓòÉΓòÉ
  2107.  
  2108. If you have a SCSI CD-ROM drive that is usable under OS/2 2.1, you can run 
  2109. existing DOS and Windows Multimedia products such as Compton's MultiMedia 
  2110. Encyclopedia for Windows. Using third-party programs or MMPM/2 you can play 
  2111. CD-Audio (music discs) on CD-ROM drives. With the release of OS/2 2.1, almost 
  2112. all SCSI CD-ROM drives will enjoy native support, including CD-Audio. 
  2113.  
  2114. Even with the improved support of OS/2 2.1, few non-SCSI CD-ROM drives will 
  2115. have native support. For nonsupported CD-ROM drives, it is possible to use DOS 
  2116. drivers under OS/2 to create a single session capable of running DOS or Windows 
  2117. multimedia programs. This is outlined later in this chapter. 
  2118.  
  2119.  
  2120. ΓòÉΓòÉΓòÉ 8.4.2. Windows 3.1 Multimedia ΓòÉΓòÉΓòÉ
  2121.  
  2122. OS/2 2.1 includes support for Windows 3.1 applications. This subsystem, 
  2123. WIN-OS/2, includes the WAV and musical instrument digital interface (MIDI) 
  2124. support that is now included with Windows 3.1. Several programs are already 
  2125. available to take advantage of this capability, including ones you might not 
  2126. normally expect. Lotus offers 1-2-3 for Windows Version 1.1 on CD-ROM that 
  2127. includes a multimedia tutorial called SmartHelp. 
  2128.  
  2129. Any WAVE and MIDI files designed for Windows 3.1 should work fine under OS/2 
  2130. MMPM/2. However, Windows 3.1 multimedia applications do not require the MMPM/2 
  2131. because the Windows 3.1 subsystem includes a self-contained multimedia 
  2132. capability. 
  2133.  
  2134.  
  2135. ΓòÉΓòÉΓòÉ 8.4.3. Multimedia Sampler ΓòÉΓòÉΓòÉ
  2136.  
  2137. To date, most of the multimedia attention has been placed on CD-ROM titles. As 
  2138. mentioned earlier, a CD-ROM does not necessarily ensure that a product is truly 
  2139. multimedia. The following sections review just a few of the many CD-ROMs that 
  2140. are truly multimedia. 
  2141.  
  2142.  
  2143. ΓòÉΓòÉΓòÉ 8.4.4. Compton's MultiMedia Encyclopedia ΓòÉΓòÉΓòÉ
  2144.  
  2145. Compton's MultiMedia Encyclopedia for Windows is perhaps one of the best 
  2146. examples of CD-ROM-based multimedia. Not only does it contain text for an 
  2147. entire encyclopedia, it also contains several still pictures, animation, and 
  2148. sound. The mass-storage strengths of CD-ROM shine in this data-intensive 
  2149. application, which includes the following features: 
  2150.  
  2151.    o  sound samples of famous speeches such as Martin Luther King's "I Have a 
  2152.       Dream" speech 
  2153.  
  2154.    o  graphics snapshots of items described in the text (sample X-rays in the 
  2155.       medical section, for example) 
  2156.  
  2157.    o  charts and graphs representing statistical data 
  2158.  
  2159.    o  maps 
  2160.  
  2161.  Figure 18.2. Compton's MultiMedia Encyclopedia.
  2162.  
  2163.  Obviously the uses of multimedia for an encyclopedia are almost endless. 
  2164.  Compton's is quite impressive but is just a sample of what will be available 
  2165.  in the future. CD-ROM enables inexpensive duplication of the hundreds of 
  2166.  megabytes required to store the large data sets for sound and graphics, let 
  2167.  alone an entire encyclopedia! 
  2168.  
  2169.  The graphical nature of Compton's MultiMedia Encyclopedia also helps in the 
  2170.  location of information. Instead of traditional text-based searches, Compton's 
  2171.  supports a graphics history line, among other organizations. See Figure 18.3 
  2172.  for an example of this search method. 
  2173.  Figure 18.3. Compton's time line search.
  2174.  
  2175.  Text from within the encyclopedia can be cut and pasted into other OS/2 or 
  2176.  Windows programs. Figure 18.4 shows a portion of the text on "Radio," 
  2177.  including icons used to display pictures. You should also note the "see 
  2178.  Television 'Technology'" and its associated icon (to jump to that location in 
  2179.  the encyclopedia). 
  2180.  Figure 18.4. Compton's text sample.
  2181.  
  2182.  
  2183. ΓòÉΓòÉΓòÉ 8.4.5. National Geographic Multimedia Mammals ΓòÉΓòÉΓòÉ
  2184.  
  2185. This disc is sort of a specialty encyclopedia. It serves as a good multimedia 
  2186. sampler (it makes extensive use of software-based video motion and CD-Audio 
  2187. playback). The software-based animation, which requires no special playback 
  2188. hardware, is quite impressive. Figure 18.5 shows the opening screen for the 
  2189. Mammals program. 
  2190. Figure 18.5. National Geographic's Mammals.
  2191.  
  2192. The disc also features captured photographs of mammals, typically five or more 
  2193. for each mammal. The photographs are full-screen at 320x200x8 (x8 equals 256 
  2194. colors) resolution. A simple identification game is also included in this 
  2195. package. 
  2196.  
  2197. Tip:  Compton's MultiMedia Encyclopedia for Windows does not include a print 
  2198.       option. To print from this program, copy the current text or screen image 
  2199.       to the clipboard and then copy it to another program to print. This 
  2200.       method can also be used to transfer encyclopedia contents to your Windows 
  2201.       or OS/2 word processor. 
  2202.  
  2203.  
  2204. ΓòÉΓòÉΓòÉ 8.5. MMPM/2 in Detail ΓòÉΓòÉΓòÉ
  2205.  
  2206. Multimedia Presentation Manager/2 (MMPM/2) is an add-on to the base OS/2 
  2207. operating system that provides facilities for sound and video support. MMPM/2 
  2208. has a fully graphical installation program, and it enables you to cus- tomize 
  2209. the installation to your specific needs. Figure 18.6 shows the installation 
  2210. program (you can select or unselect each individual module from the list). 
  2211. Figure 18.6. The MMPM/2 - Installation screen.
  2212.  
  2213.  
  2214. ΓòÉΓòÉΓòÉ 8.5.1. Sound Support ΓòÉΓòÉΓòÉ
  2215.  
  2216. The base MMPM/2 product includes support for two types of sound: 
  2217.  
  2218.    o  WAV: digital audio files (in the same format as Microsoft Windows) 
  2219.  
  2220.    o  MIDI: synthesized audio files 
  2221.  
  2222.  MMPM/2 includes a recorder and playback module for WAV and MIDI files. See 
  2223.  Figure 18.7 for a view of the record and playback module. IBM has made the 
  2224.  multimedia relatively device-independent; the same media player is used to 
  2225.  control WAV, MIDI, and ActionMedia II video. With respect to sound, MMPM/2 
  2226.  currently has drivers for the IBM M-Audio adapter, Creative Labs Sound 
  2227.  Blaster, Creative Labs Sound Blaster Pro, and the MediaVision Pro 
  2228.  AudioSpectrum. Figure 18.7. The Media Player for MIDI.
  2229.  
  2230.  Using Creative Labs Sound Blaster Pro, I recorded 60 seconds of music using 
  2231.  the MMPM/2 Digital Audio Recorder. It was quite impressive to use two modems 
  2232.  (both active at 14,400bps) and sample sound through a microphone at the same 
  2233.  time. Using Pulse, OS/2 showed less than 30 percent CPU utilization on a 
  2234.  80486DX-33 ISA system. Uncompressed digital audio takes a con-siderable amount 
  2235.  of storage-the 60-second sample took 1.3M of disk space. 
  2236.  
  2237.  
  2238. ΓòÉΓòÉΓòÉ 8.5.2. CD-Audio Support ΓòÉΓòÉΓòÉ
  2239.  
  2240. OS/2 Multimedia Presentation Manager/2 includes a program to play CD music 
  2241. (CD-Audio in computer terms) discs. IBM also offers an employee-written 
  2242. multimedia explorer program that achieves the same results. This explorer 
  2243. program is distributed under the EWS (employee-written software) program; it is 
  2244. available on the OS/2 Professional Developers Kit CD-ROM, along with several 
  2245. OS/2 BBS systems and CompuServe. 
  2246.  
  2247.  
  2248. ΓòÉΓòÉΓòÉ 8.5.3. Video Playback/Capture ΓòÉΓòÉΓòÉ
  2249.  
  2250. IBM's all-digital ActionMedia II adapter is nothing less than state-of-the-art, 
  2251. hardware-based video playback. The quality of the captured images is 
  2252. superb-it's equal to live television. Given the powerful digital video 
  2253. interactive (DVI) hardware compression, a normal fixed disk (or even a slower 
  2254. optical disk) can keep up with a 30-frame-per-second (fps) video signal. Even 
  2255. with extensive hardware compression, a 60-second video session took 9.3M of 
  2256. disks space. 
  2257.  
  2258. Note:  IBM has OS/2 drivers for this SCSI port, and it achieves the same thing 
  2259.        as any OS/2-supported SCSI adapter. When using this port and the 
  2260.        appropriate drivers, your SCSI CD-ROM functions as a native OS/2 
  2261.        device-accessible to all program sessions. 
  2262.  
  2263.  The ActionMedia II base board has only playback capability; you must add a 
  2264.  capture board for authoring. This board is capable of capturing and playing 
  2265.  both digital video and audio at the same time. 
  2266.  
  2267.  Note:  Creative Labs, perhaps the leader in low-cost multimedia products, has 
  2268.         released a still-frame ISA video capture and windowing board: the Video 
  2269.         Blaster. Although it does not allow motion video capture or sport the 
  2270.         quality of the ActionMedia II, it is less than one third of the price. 
  2271.         Be careful when considering this board, however, as it does not 
  2272.         currently function under OS/2 (including WIN-OS/2). The current ISA 
  2273.         version of the board is also designed to work with systems with less 
  2274.         than 15M of RAM; OS/2 users often have 16M or more. If you had 16M or 
  2275.         more of system RAM, you would actually have to remove some to utilize 
  2276.         the board. As an OS/2 user, it may be best to look at other boards or 
  2277.         contact Creative Labs for information on future boards with better OS/2 
  2278.         support. In any case, always research your needs carefully before 
  2279.         assuming that a board is supported by the software you intend to use. 
  2280.  
  2281.  
  2282. ΓòÉΓòÉΓòÉ 8.5.4. Computer-Controlled Laser Disc ΓòÉΓòÉΓòÉ
  2283.  
  2284. OS/2's Multimedia Presentation Manager/2 includes drivers necessary to control 
  2285. the video display of a Pioneer video disk player. One of your system's serial 
  2286. ports is used to synchronize actual video presentations with user commands and 
  2287. computer information. The video disk player is controlled through a serial 
  2288. port. 
  2289.  
  2290.  
  2291. ΓòÉΓòÉΓòÉ 8.5.5. Installation of MMPM/2 ΓòÉΓòÉΓòÉ
  2292.  
  2293. IBM's MMPM/2 product is quite easy to install (see Chapter 1, "Installation," 
  2294. for specific installation details). First, you want to be sure you have a 
  2295. supported device that is properly configured. The following sections summarize 
  2296. the requirements for some of the devices. 
  2297.  
  2298.  
  2299. ΓòÉΓòÉΓòÉ 8.5.5.1. IBM M-Audio ΓòÉΓòÉΓòÉ
  2300.  
  2301. This is a sound board accessible through the MMPM/2 WAV and MIDI players. 
  2302. Drivers for this device ship with MMPM/2, and hardware configuration is 
  2303. accomplished with the reference disk included with the hardware. 
  2304.  
  2305.  
  2306. ΓòÉΓòÉΓòÉ 8.5.5.2. Pioneer Video Disk ΓòÉΓòÉΓòÉ
  2307.  
  2308. MMPM/2 has the ability to control the operations of a video disk player; in 
  2309. most cases, this is used to play video in sequence with computer events (such 
  2310. as a menu selection). The video itself is processed within the video disk 
  2311. player; the computer is merely instructing the player which tracks to access 
  2312. and when to play and stop. This control is accomplished through a serial port, 
  2313. which is required for the player to be used with MMPM/2. 
  2314.  
  2315.  
  2316. ΓòÉΓòÉΓòÉ 8.5.5.3. CD-Audio ΓòÉΓòÉΓòÉ
  2317.  
  2318. MMPM/2's CD-Audio player utilizes the SCSI command sequences to control the 
  2319. CD-Audio. OS/2 2.1 includes drivers capable of controlling these functions. The 
  2320. CD-Audio player works by instructing the CD-ROM drive to play an audio disk at 
  2321. the specified track. Fundamentally, all of the sound processing is performed by 
  2322. the CD-ROM, which is almost identical to a traditional non-computer CD music 
  2323. player. With external CD-ROM drives, there are typical RCA-type phono jacks for 
  2324. connection to an amplifier. Both internal and external drives have an 1/8-inch 
  2325. audio adapter (identical to those found on hand-held portable radios) for a set 
  2326. of headphones or tabletop speakers. Unless your sound board has specific 
  2327. provisions, it may be important to note that CD-Audio is not played through 
  2328. your sound board; two sets of speakers or additional routing cables may be 
  2329. required. With the correct routing cables, some of the sound boards will play 
  2330. both types of sound through one set of speakers. 
  2331.  
  2332.  
  2333. ΓòÉΓòÉΓòÉ 8.5.5.4. Sound Blaster/Sound Blaster Pro ΓòÉΓòÉΓòÉ
  2334.  
  2335. Configuration of these boards is somewhat more complicated because you must 
  2336. know the IRQ and base address of your hardware adapter. Assuming you know 
  2337. these, the selection within MMPM/2 is quite simple because a list box is 
  2338. provided for each parameter. Typically, the Creative Labs sound boards come 
  2339. configured for IRQ 7 and base address 220. Once installed, these boards allow 
  2340. MMPM/2 to play MIDI and WAV files. Current releases of the drivers do not 
  2341. support external MIDI devices or MIDI recording. Checking with Creative Labs is 
  2342. advised to get the latest status on these features. 
  2343.  
  2344.  
  2345. ΓòÉΓòÉΓòÉ 8.5.5.5. MediaVision Pro AudioSpectrum ΓòÉΓòÉΓòÉ
  2346.  
  2347. Drivers for this device are included with OS/2 2.1 MMPM/2 to support its audio 
  2348. features. MediaVision has also made drivers available to control the 
  2349. Trantor-based SCSI function on the SCSI Pro AudioSpectrum boards. You install 
  2350. these as any other OS/2 SCSI driver, and they also support fixed disk and other 
  2351. supported SCSI devices. Some of the Pro Audiospectrum boards are based on a 
  2352. SonyBus CD-ROM interface, for which CD-ROM drivers do not yet exist. 
  2353.  
  2354. Note:  When working with the Creative Labs Sound Blaster or MediaVision Pro 
  2355.        Audiospectrum, especially the ISA versions, it is important to consider 
  2356.        proper IRQ placement. For example, the Sound Blaster comes 
  2357.        pre-configured for IRQ7, which is required under OS/2 to access the LPT1 
  2358.        printer port. IRQ5 is also supported, which is the LPT2 printer port; 
  2359.        more likely, IRQ5 will be free on your system. The MediaVision Pro 
  2360.        AudioSpectrum 16 requires two IRQs, one for the Sound Blaster 
  2361.        compatibility (IRQ5 is the default), and a software-assignable IRQ for 
  2362.        the advanced capability. One of the higher, typically unused, IRQs such 
  2363.        as 10, 11, or 12 are recommended for this second IRQ. Parameters on the 
  2364.        Pro AudioSpectrum device driver are used to assign this second IRQ. 
  2365.  
  2366.  
  2367. ΓòÉΓòÉΓòÉ 8.6. Using Unsupported CD-ROM Drives ΓòÉΓòÉΓòÉ
  2368.  
  2369. It might be possible to use an unsupported CD-ROM drive if the manufacturer 
  2370. supplies an OS/2 device driver. If that support is not available, you may still 
  2371. be able to use your CD-ROM drive in a VDM with the DOS device driver. Finally, 
  2372. you can create a DOS boot image that includes your CD-ROM device driver. See 
  2373. Chapter 8 for complete details. For a list of supported CD-ROM drives see 
  2374. Chapter 1. 
  2375.  
  2376.  
  2377. ΓòÉΓòÉΓòÉ 8.6.1. Other SCSI CD-ROM Drives ΓòÉΓòÉΓòÉ
  2378.  
  2379. It might be possible to use your non-supported SCSI CD-ROM under OS/2 if you 
  2380. are willing to experiment a little. You must have a SCSI host adapter that has 
  2381. OS/2 devices drivers. Any SCSI controller that is forced to use the INT13 
  2382. driver will not support a CD-ROM device under OS/2 2.1. See Chapter 1 for a 
  2383. list of supported SCSI controllers. 
  2384.  
  2385. Drivers for Adaptec, DPT, Future Domain, and IBM are included with the OS/2 2.1 
  2386. package (view the README file for installation instructions). Trantor drivers 
  2387. must be acquired from CompuServe or Trantor. Ultra store, Bustek, and other 
  2388. vendors have also started to distribute OS/2 SCSI drivers. 
  2389.  
  2390. Note:  Is it possible to add a SCSI adapter to a system that already has an 
  2391.        MFM, RLL, or IDE disk controller? Yes, it is possible. SCSI adapters are 
  2392.        designed to coexist with your existing controller, and most also operate 
  2393.        without one (assuming you have ALL-SCSI fixed disks). 
  2394.  
  2395.  Assuming that you have a supported disk controller, you must properly install 
  2396.  and configure the device driver. This usually involves locating the 
  2397.  appropriate driver file and adding a BASEDEV line to your CONFIG.SYS. If you 
  2398.  are already using it to control a fixed disk, this step should have been 
  2399.  completed for you. 
  2400.  
  2401.  Note:  If you are using your SCSI adapter to control your fixed disk, be sure 
  2402.         that you are using the actual adapter device driver and not the INT13 
  2403.         device driver. 
  2404.  
  2405.  If you have just installed the SCSI adapter device driver, it is recommended 
  2406.  that you reboot to ensure that it is properly configured. If it is installed 
  2407.  correctly, your system should boot with no errors. However, if you encounter 
  2408.  an error loading that particular device driver, your board is probably not 
  2409.  properly configured. 
  2410.  
  2411.  With the board properly installed, you need to ensure that the base OS/2 2.1 
  2412.  SCSI drivers and CDROM.IFS file system are on your system. These files should 
  2413.  be in your \OS2 system directory. If they are not, you can use the selective 
  2414.  install to ensure that they are properly installed. See Chapter 1 for 
  2415.  information on installing CD-ROM support. 
  2416.  
  2417.  When you are sure you have CDROM.SYS and CDROM.IFS on your system, you need to 
  2418.  verify that they are properly activated in your CONFIG.SYS file. The following 
  2419.  lines need to appear in CONFIG.SYS: 
  2420.  
  2421.   IFS=D:\OS2\CDFS.IFS
  2422.   BASEDEV=FD16-700.ADD
  2423.   BASEDEV=OS2SCSI.DMD
  2424.   DEVICE=D:\OS2\CDROM.SYS /N:4
  2425.   DEVICE=D:\OS2\MDOS\VCDROM.SYS /I
  2426.  
  2427.    1. IFS= installs the file system driver for CD-ROM devices. When your 
  2428.       CONFIG.SYS is loaded, several information lines appear when this file is 
  2429.       activated. You can place a /Q parameter after the line to eliminate this 
  2430.       display. 
  2431.  
  2432.    2. BASEDEV=FD16-700.ADD is for a Future Domain 1670 SCSI host adapter. This 
  2433.       may be different for your system, depending on the brand and model of 
  2434.       SCSI adapter. 
  2435.  
  2436.    3. BASEDEV=OS2SCSI.DMD is activated to load the base SCSI support for OS/2. 
  2437.  
  2438.    4. The fourth line (with CDROM.SYS) actually initiates contact with the 
  2439.       CD-ROM device. Using unsupported drives, this one presents the most 
  2440.       problems. 
  2441.  
  2442.    5. The last line is used to load DOS virtual device support for the CD-ROM 
  2443.       drive. 
  2444.  
  2445.  Note:  It is not likely that these lines will all appear in this same order 
  2446.         (or in the same place). If your OS/2 is installed with a partition 
  2447.         other than D:, you need to place the appropriate letter for the file 
  2448.         references. 
  2449.  
  2450.  When using a non-supported CD-ROM device, the CDROM.SYS file usually reports 
  2451.  that an "unsupported manufacture" is being used when booting the system. There 
  2452.  are a couple of ways around this. There is an /I parameter that you can add to 
  2453.  the CDROM.SYS device line instructing it to bypass some of the compatibility 
  2454.  checks. However, most users have found that this still generates the same 
  2455.  error. 
  2456.  
  2457.  Assuming that does not work, you should attempt to locate a (newer) version of 
  2458.  the CDROM.SYS file that does not have the brand consistency check. If that is 
  2459.  not possible, or if it fails to work, one last resort is to make a copy of the 
  2460.  CDROM.SYS file and manually alter the contents with a binary file editor. 
  2461.  
  2462.  Caution:  Unless you have tried this type of binary file editing before, it is 
  2463.            not recommend that you attempt this. The instruction given here is 
  2464.            merely a conceptual overview, and it is assumed that you are 
  2465.            experienced with binary file editors. 
  2466.  
  2467.  To edit this binary file, you need to have experience with a sector editor, 
  2468.  such as those included with Norton Utilities or PC Tools. It is also required 
  2469.  that you run these programs on native DOS, not OS/2. Assuming that all other 
  2470.  attempts have failed and you are working with a backup copy of the file, 
  2471.  search the file for the string TOSHIBA. This can be replaced with the string 
  2472.  that your CD- ROM manufacturer uses, such as NEC. It is important to pad any 
  2473.  leftover characters with spaces so that previous letters do not remain. In the 
  2474.  case of this example, the TOSHIBA should be changed to NECHIBA (you need to 
  2475.  place spaces over HIBA). 
  2476.  
  2477.  If you get a patched version of the CDROM.SYS, you should be able to utilize 
  2478.  your CD- ROM. If you are still unable to get access, check with your computer 
  2479.  dealer, a local users group, or CompuServe users. 
  2480.  
  2481.  Note:  Even with successful access to unsupported SCSI CD-ROM drivers, it is 
  2482.         possible that OS/2 CD-Audio support will not function. For OS/2's 
  2483.         MMPM/2, there is no known workaround. For DOS programs, you may want to 
  2484.         review the next section concerning MS-DOS drivers. 
  2485.  
  2486.  
  2487. ΓòÉΓòÉΓòÉ 8.6.2. Using DOS CD-ROM Drivers ΓòÉΓòÉΓòÉ
  2488.  
  2489. There are certain CD-ROM drives that do not adhere to the SCSI hardware 
  2490. interface, and they require a special interface board. In most cases, the 
  2491. vendors do not yet support OS/2. However, it might be possible that you can 
  2492. access a non-supported CD-ROM using OS/2's capability to run DOS 
  2493. programs-assuming that you have a CD-ROM drive configured and properly 
  2494. functioning under native DOS. If this is the case, it may be possible to access 
  2495. your CD- ROM under a single OS/2 DOS session, which enables you to run DOS and 
  2496. WIN-OS/2 programs. 
  2497.  
  2498. The easiest way to experiment with this capability is to set up a DOS disk for 
  2499. your A: drive. To keep space available, it is recommend that you put the 
  2500. minimal complement of DOS files on this disk (hidden system files, and 
  2501. COMMAND.COM). It is also recommended that you start with a simple CONFIG.SYS as 
  2502. follows: 
  2503.  
  2504. Note:  The following example uses the DOS driver for the Future Domain 
  2505.        controller and MSCDEX drivers. Both are supported by OS/2 2.1; however, 
  2506.        if you have a non-supported CD-ROM drive or an older version of MSCDEX, 
  2507.        this example provides a model that may be helpful. 
  2508.  
  2509.   FILES=50
  2510.   BUFFERS=16
  2511.   LASTDRIVE=Z
  2512.   DEVICE=A:\FDCD.SYS /D:MSCD000
  2513.   DEVICE=A:\FSFILTER.SYS
  2514.   DEVICE=A:\HIMEM.SYS
  2515.  
  2516.  It is important to understand that many of OS/2's DOS settings are not 
  2517.  available when you boot a special DOS kernel. Examples include the DEVICE, 
  2518.  BUFFERS, and FILES lines-these need to be put in the actual CONFIG.SYS on 
  2519.  drive A. However, other parameters such as the amount of DPMI and XMS memory 
  2520.  are important. 
  2521.  
  2522.       FILES=50: this line configures the DOS session for the appropriate number 
  2523.       of files. As with a standard DOS 5.0 system, be sure you have enough to 
  2524.       run Windows. BUFFERS=16: internal file buffers for the DOS session 
  2525.       (identical function as to the value under DOS 5.0). 
  2526.  
  2527.       LASTDRIVE=Z: this line is used to ensure that all letters are available 
  2528.       to the CD-ROM. The MSCDEX.EXE program (in the following AUTOEXEC.BAT) is 
  2529.       used to specify to which drive letter the CD-ROM is assigned. 
  2530.  
  2531.       DEVICE=FDCD.SYS: this line is the Future Domain SCSI CD-ROM driver. You 
  2532.       need to install the appropriate DOS CD-ROM driver for your controller. 
  2533.  
  2534.       DEVICE=FSFILTER.SYS: the file FSFILTER.SYS is provided with OS/2 2.1, 
  2535.       resides in the \OS2\MDOS subdirectory, and should be copied to your A: 
  2536.       disk. This file allows the DOS 5.0 session to fully access OS/2 
  2537.       partitions when running under OS/2. 
  2538.  
  2539.       DEVICE=HIMEM.SYS: this is the HIMEM.SYS file taken from OS/2 2.1, and it 
  2540.       resides in the \OS2\MDOS subdirectory. This gives the DOS 5.0 session 
  2541.       access to OS/2-provided XMS memory. 
  2542.  
  2543.  Tip:  The FSFILTER.SYS and HIMEM.SYS files must be from the \OS2\MDOS 
  2544.        directory, otherwise the bootable DOS image might not work. 
  2545.  
  2546.  You now need to configure an appropriate AUTOEXEC.BAT for this DOS session: 
  2547.  
  2548.   SET PROMPT=$p$g
  2549.   SET PATH=A:\;
  2550.   A:\MOUSE.COM
  2551.   A:\DOSKEY.COM
  2552.   A:\MSCDEX.EXE /D:MSCD000 /M:10 /L:G
  2553.  
  2554.  As you can see, the AUTOEXEC.BAT has nothing different than what regular DOS 
  2555.  5.0 requires. MOUSE.COM should be the one taken from the \OS2\MDOS directory; 
  2556.  using a DOS version of the mouse driver may render your mouse unusable under 
  2557.  your.i.mouse; OS/2 sessions. 
  2558.  
  2559.  Note:  You may notice that DOS 5.0 SETVER.EXE was not included in the 
  2560.         CONFIG.SYS. This was not required for the test machine, as the latest 
  2561.         version of MSCDEX.EXE, v2.21, does not require that SETVER command for 
  2562.         compatibility with DOS 5.0. Older versions of MSCDEX may require you to 
  2563.         use DOS 5.0 SETVER. The newest MSCDEX should be available from your 
  2564.         dealer, Microsoft, or CompuServe. 
  2565.  
  2566.  Now that you have your floppy disk properly configured, you can select the 
  2567.  "DOS from Drive A:" option on the Command Prompts folder. This initiates the 
  2568.  loading of this DOS 5.0 session from your newly configured floppy disk. During 
  2569.  troubleshooting, you may want to make a copy of this program reference (the 
  2570.  "DOS from Drive A:"), and change it to run in a window. 
  2571.  
  2572.  Note:  A booted DOS session can not be exited in the normal manner. You must 
  2573.         switch to the Window List and close it. IBM produces a tiny program 
  2574.         that you can run to self-terminate the session (such as EXIT would in a 
  2575.         normal OS/2 DOS session). 
  2576.  
  2577.  Tip:  If you find that you frequently use a DOS 5.0 boot session, you may want 
  2578.        to configure your C: partition for FAT and DOS 5.0. This assumes that 
  2579.        you use the Boot Manager. If you configure it this way, you can tell 
  2580.        OS/2 to boot this DOS session from the C: partition instead of from an 
  2581.        image file or a floppy disk. This is the quickest method of booting, and 
  2582.        it allows the most flexibility. 
  2583.  
  2584.  Note:  Even if you have a SCSI CD-ROM that is mounted as a native OS/2 device 
  2585.         (available to all sessions), you may find that certain DOS programs 
  2586.         require the actual MSCDEX to be loaded. Even when OS/2 is talking to 
  2587.         the SCSI controller, the DOS boot session may still work! In fact, at 
  2588.         least with some controllers, OS/2 allows both the OS/2 and DOS device 
  2589.         drivers to control the SCSI card. (This has been tested on a Future 
  2590.         Domain controller.) Obviously, care should be taken. It is advised that 
  2591.         this not be attempted on a SCSI controller that is also controlling 
  2592.         writable storage devices-data corruption may occur. This method can 
  2593.         also be used to gain CD-Audio capability for DOS and WIN-OS/2 programs. 
  2594.  
  2595.  Figure 18.8 shows a DOS 5.0 windowed session, with CD-ROM drivers loaded, 
  2596.  booted from the C: partition. Note that CONFIG.SYS and AUTOEXEC.BAT contain 
  2597.  additional entries not necessarily shown in the preceding listing. It is 
  2598.  possible to start WIN-OS/2 by issuing the command WINOS2. This requires that 
  2599.  the DOS 5.0 session path be properly configured to point to the WIN-OS/2 
  2600.  directory. Starting WIN-OS/2 allows you to run Windows-based multimedia 
  2601.  programs. To run WIN-OS/2 on top of this session, it is recommended that you 
  2602.  switch it to a full-screen mode. 
  2603.  Figure 18.8. A DOS 5.0 session with CD-ROM.
  2604.  
  2605.  
  2606. ΓòÉΓòÉΓòÉ 8.6.3. Managing DOS Configuration ΓòÉΓòÉΓòÉ
  2607.  
  2608. You may find that you have a number of DOS programs that require drivers for a 
  2609. sound board or CD-ROM. Although DOS sessions can use the same AUTOEXEC.BAT 
  2610. file, the CONFIG.SYS portion is unique for each program reference. Particularly 
  2611. when you want to set up multiple programs, or for multiple systems, you may 
  2612. wish to use REXX calls to create program references (menu icons). For example, 
  2613. the following REXX program creates a program reference for DOS game Wing 
  2614. Commander: 
  2615.  
  2616. /*Wing Commander Test*/
  2617. /*Create program reference on OS/2 Workplace Shell*/
  2618.  
  2619. Call RxFuncAdd 'SysLoadFuncs','REXXUTIL','SysLoadFuncs';
  2620. Call SysLoadFuncs;
  2621. reply='UpdateIfExists'
  2622. rc=SysCreateObject('WPProgram','Wing Commander','<WP_DOSGROUP>',,
  2623.   'EXENAME=C:\WING\WC.BAT;'||,
  2624.   'PROGTYPE=VDM;'||,
  2625.   'STARTUPDIR=E:\WING;'||,
  2626.   'SET DOS-FILES=40;'||,
  2627.   'SET DOS-BREAK=1;'||,
  2628.   'SET DOS-HIGH=1;'||,
  2629.   'SET DOS-DEVICE=c:\proaudio\mvsound.sys d:7 q:15 j:0;'||,
  2630.   'SET INT-DURING-IO=1;'||,
  2631.   'SET DOS-BACKGROUND-EXECUTION=0;'||,
  2632.   'SET HW-TIMER=1;'||,
  2633.   'SET IDLE-SENSITIVITY=100;'||,
  2634.   'SET KBD-BUFFER-EXTEND=0;'||,
  2635.   'SET KBD-ALTHOME-BYPASS=1;'||,
  2636.   '', reply);
  2637.  
  2638. If rc<>1 Then
  2639.    Say 'Program: Wing Commander could not be created/updated !'
  2640.  
  2641. In the preceding example, it is assumed that Wing Commander is called by a DOS 
  2642. batch file named WC.BAT that resides in a subdirectory called C:\WING. You will 
  2643. also see that a line is included to activate a device driver 
  2644. C:\PROAUDIO\MVSOUND.SYS. This example would be used for a MediaVision Pro 
  2645. AudioSpectrum board, with the drivers in the C:\PROADUIO subdirectory. In this 
  2646. example, the program is added to WP_DOSGROUP (the Dos Programs folder on the 
  2647. desktop). Other sound boards, such as Creative Labs, do not require a DOS 
  2648. device driver to be used with DOS programs. 
  2649.  
  2650. Tip:  When creating a REXX program command file, the file must begin with a 
  2651.       REXX comment, such as /* Test */.  This must be on the first line of the 
  2652.       command file for OS/2 to recognize this as a REXX program. See Chapter 
  2653.       15, "REXX Programming," for more information on REXX programs. 
  2654.  
  2655.  Note:  The example use of the MVSOUND.SYS file deserves some clarification. 
  2656.         The driver is for a MediaVision Pro AudioSpectrum sound board and was 
  2657.         designed to be used in a "pure DOS" environment. DOS programs, 
  2658.         typically games, may require this driver to access the Pro 
  2659.         AudioSpectrum for sound effects and speech. However, it is important to 
  2660.         understand that this DOS driver will directly access the hardware of 
  2661.         the sound board, and does not virtualize the resource. Multiple 
  2662.         programs should not be run at the same time that would utilize this 
  2663.         driver. It is also significant that this driver runs entirely 
  2664.         independent of MMPM/2; in fact, MMPM/2 is not required to use your 
  2665.         sound board in this fashion (for DOS programs). Also watch out for 
  2666.         conflicts between a true MMPM/2 driver and a DOS driver. The January 
  2667.         1993 beta of MediaVision Pro AudioSpectrum MMPM/2 driver recommends 
  2668.         that you not use the MVSOUND.SYS file for DOS programs. 
  2669.  
  2670.  Tip:  The line that begins with rc=SysCreateObject may have to change if you 
  2671.        upgrded to OS/2 2.1 from OS/2 2.0. Change <WP_DOSGROUP> to <DOS 
  2672.        Programs> if the file doesn't work. The name of the object changed 
  2673.        between OS/2 2.0 and 2.1. Look for the resulting object in the DOS 
  2674.        Programs folder. 
  2675.  
  2676.  
  2677. ΓòÉΓòÉΓòÉ 8.6.4. WIN-OS/2 Multimedia ΓòÉΓòÉΓòÉ
  2678.  
  2679. OS/2 2.1 includes the capabilities of Windows 3.1 in the form of WIN-OS/2. 
  2680. Because OS/2 2.0 did not have the multimedia capabilities, the OS/2 2.1 upgrade 
  2681. has been greatly anticipated. Under true Windows 3.1 (without OS/2), Windows 
  2682. depends on DOS for the CD-ROM drivers, so there is a clear distinction between 
  2683. sound boards and CD-ROM. WAV and MIDI files depend on the sound board, whereas 
  2684. CD-Audio and program loading use the CD-ROM device driver. For this reason, 
  2685. sound board drivers for WIN-OS/2 are configured and function the same way as 
  2686. under true Windows 3.1, although the installation and access of the CD-ROM 
  2687. under WIN-OS/2 can be entirely different. 
  2688.  
  2689. WIN-OS/2 MultiMedia includes a Media Player and Sound Recorder application. 
  2690. WIN-OS/2 also supports sound effects that are tied to specific events, such as 
  2691. when WIN-OS/2 is opened and closed. To activate and configure these events, use 
  2692. the WIN-OS/2 control panel. 
  2693.  
  2694. When working with a sound driver for WIN-OS/2, it is important to understand 
  2695. that the performance of these drivers is sometimes limited by the virtual 86 
  2696. mode of the Intel Processors (which OS/2 uses to run DOS and Windows programs). 
  2697. In particular, interrupts are sometimes delayed, and this results in distorted 
  2698. sound. Some of the drivers supplied with WIN-OS/2 are more optimized for the 
  2699. OS/2 environment. When possible, use the drivers supplied with WIN- OS/2. Check 
  2700. with your hardware vendor for the latest release. 
  2701.  
  2702.  
  2703. ΓòÉΓòÉΓòÉ 8.7. Multimedia Development Environment ΓòÉΓòÉΓòÉ
  2704.  
  2705. The OS/2 operating system has always been well received by developers because 
  2706. it facilitates many of the multitasking aspects of programming. Although OS/2 
  2707. 2.1 is somewhat behind in multimedia development tools, IBM is working hard 
  2708. with others to catch up. 
  2709.  
  2710. IBM includes the MMPM/2 and MMPM/2 Toolkit with the OS/2 Professional 
  2711. Developers Kit CD-ROM. Even non-multimedia developers have been attracted to 
  2712. this package because it contains many types of controls (such as turning knobs) 
  2713. that are not in the base operating system. 
  2714.  
  2715.  
  2716. ΓòÉΓòÉΓòÉ 8.8. Future Multimedia ΓòÉΓòÉΓòÉ
  2717.  
  2718. Much of multimedia's capability lies in the future. At this point, no hardware 
  2719. platform dominates software-vendor attention; several systems have a variety of 
  2720. "raw capability" but few affordable applications. IBM obviously considers 
  2721. multimedia an important part of its future, and it backs their products with 
  2722. solid OS/2 2.1 support. However, the "consumer grade" products are just 
  2723. beginning to garner interest, and only the most common devices are currently 
  2724. included in packages. 
  2725.  
  2726. CD-ROM is already a proven media for distribution of sound and computer data. 
  2727. As standards take hold for video playback, it will also serve as a tool for 
  2728. video playback. Writable CD-ROM devices are still quite expensive, but they 
  2729. have generated a lot of user interest. Other forms of optical storage are also 
  2730. promising, but CD-ROM is destined to stay. 
  2731.  
  2732. IBM seems to have already covered the high-end of the PC hardware, and it has 
  2733. done an excellent job of supporting both ISA and Microchannel users under OS/2 
  2734. 2.1. As time progresses, these boards will become more powerful and affordable. 
  2735. However, at least for the time being, they seem destined for business users who 
  2736. can afford the high price of good-quality video capture and playback. Because 
  2737. Intel was a key player in the development of DVI, it is rumored that a 
  2738. specialized version of the 80486 will be offered with some type of DVI playback 
  2739. capability. For now, however, systems with built-in video playback are nothing 
  2740. but a rumor. Of course, it is pretty safe to assume that this capability will 
  2741. someday be standard on a desktop PC, although it is anyone's guess as to how 
  2742. long it will take for this to happen. 
  2743.  
  2744.  
  2745. ΓòÉΓòÉΓòÉ 8.9. Conclusion ΓòÉΓòÉΓòÉ
  2746.  
  2747. Although OS/2 2.1 has yet to offer substantial multimedia titles, it does not 
  2748. preclude the use of existing DOS and Windows multimedia software. OS/2 2.1 is 
  2749. also a very appealing environment for developers because it is a well- defined 
  2750. modern environment. There is also another factor to consider: the OS/2 
  2751. operating system has attracted the majority of the "power users" that are 
  2752. interested in CD-ROM and multimedia applications. As they say, it can only get 
  2753. better. 
  2754.  
  2755.  
  2756. ΓòÉΓòÉΓòÉ 8.10. Author Bio ΓòÉΓòÉΓòÉ
  2757.  
  2758. Stephen A. Gutknecht is a systems engineer with experience in both corporate 
  2759. support and retail. He is employed at Slator Steel of Fort Wayne, Indiana. Most 
  2760. recently, he was the general manager for a computer reseller, also located in 
  2761. Fort Wayne. Previous corporate positions include information systems 
  2762. coordinator for a company in the insurance industry. Having been in the 
  2763. computer industry for seven years, Gutknecht values his ability to combine 
  2764. hardware and software knowledge into practical business solutions.