home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / warptlk3.zip / TOOLKIT / BOOK / USETLKT.INF (.txt) < prev    next >
OS/2 Help File  |  1995-10-27  |  316KB  |  6,933 lines

  1.  
  2. ΓòÉΓòÉΓòÉ 1. How to Use This Book ΓòÉΓòÉΓòÉ
  3.  
  4. Before you start reading the information in this book, it might be helpful to 
  5. review the following topics, which explain how to use this book: 
  6.  
  7.      Using the Contents 
  8.      Getting Additional Information 
  9.      Using the Action Bar Choices 
  10.      Documentation Conventions 
  11.  
  12.  
  13. ΓòÉΓòÉΓòÉ 1.1. Using the Contents ΓòÉΓòÉΓòÉ
  14.  
  15. When the Contents window first appears, some topics have a plus (+) sign beside 
  16. them. The plus sign indicates that additional topics are available. 
  17.  
  18. To expand the Contents if you are using a mouse, click on the plus sign. If you 
  19. are using the keyboard, use the Up or Down Arrow key to highlight the topic, 
  20. and press the plus (+) key. For example, Toolkit Roadmap has a plus sign beside 
  21. it. To see additional topics for that heading, click on the plus sign or 
  22. highlight that topic and press the plus (+) key. 
  23.  
  24. To view a topic, double-click on the topic (or press the Up or Down Arrow key 
  25. to highlight the topic, and then press the Enter key). 
  26.  
  27.  
  28. ΓòÉΓòÉΓòÉ 1.2. Getting Additional Information ΓòÉΓòÉΓòÉ
  29.  
  30. After you select a topic, the information for that topic appears in a window. 
  31. Highlighted words or phrases indicate that additional information is available. 
  32. You will notice that certain words and phrases are highlighted in green 
  33. letters, or in white letters on a black background. These are called hypertext 
  34. terms. If you are using a mouse, double-click on the highlighted word. If you 
  35. are using a keyboard, press the Tab key to move to the highlighted word, and 
  36. then press the Enter key. Additional information then appears in a window. 
  37.  
  38.  
  39. ΓòÉΓòÉΓòÉ 1.3. Using Action Bar Choices ΓòÉΓòÉΓòÉ
  40.  
  41. Several choices are available for managing information presented in this book. 
  42. There are three pull-down menus on the action bar: 
  43.  
  44.      Services menu 
  45.      Options menu 
  46.      Help menu 
  47.  
  48.  
  49. ΓòÉΓòÉΓòÉ 1.3.1. Services Menu ΓòÉΓòÉΓòÉ
  50.  
  51. The actions that are selectable from the Services menu operate on the active 
  52. window currently displayed on the screen. These actions include the following: 
  53.  
  54.      Bookmark Option 
  55.      Copy Option 
  56.      Print Option 
  57.      Search Option 
  58.  
  59.  
  60. ΓòÉΓòÉΓòÉ 1.3.1.1. Bookmark Option ΓòÉΓòÉΓòÉ
  61.  
  62. The Bookmark option allows you to set a placeholder so you can retrieve 
  63. information of interest to you. When you place a bookmark on a topic, it is 
  64. added to a list of bookmarks you have previously set. You can view the list, 
  65. and you can remove one or all bookmarks from the list. If you have not set any 
  66. bookmarks, the list is empty. To set a bookmark, do the following: 
  67.  
  68.    1. Select a topic from the Contents. 
  69.  
  70.    2. When that topic appears, choose the Bookmark option from the Services 
  71.       pull-down. 
  72.  
  73.    3. If you want to change the name used for the bookmark, type the new name 
  74.       in the field. 
  75.  
  76.    4. Click on the Place radio button or press the Up or Down Arrow key to 
  77.       select it. 
  78.  
  79.    5. Click on OK or select it and press Enter. The bookmark is then added to 
  80.       the bookmark list. 
  81.  
  82.  
  83. ΓòÉΓòÉΓòÉ 1.3.1.2. Copy Option ΓòÉΓòÉΓòÉ
  84.  
  85. The Copy option allows you to copy a topic that you are viewing to the System 
  86. Clipboard or to a file that you can edit. You will find this particularly 
  87. useful for copying syntax definitions and program samples into the application 
  88. that you are developing. 
  89.  
  90. You can copy a topic that you are viewing in two ways: 
  91.  
  92.      Copy copies the topic that you are viewing into the System Clipboard. If 
  93.       you are using a Presentation Manager editor (for example, the System 
  94.       Editor) that copies or cuts (or both) to the System Clipboard and pastes 
  95.       to the System Clipboard, you can easily add the copied information to 
  96.       your program source module. 
  97.  
  98.      Copy to file copies the topic that you are viewing into a temporary file 
  99.       named TEXT.TMP. You can later edit that file by using any editor. You 
  100.       will find TEXT.TMP in the directory where your viewable document resides. 
  101.  
  102.  To copy a topic, do the following: 
  103.  
  104.    1. Expand the Contents list and select a topic. 
  105.  
  106.    2. When the topic appears, choose Copy to file from the Services pull-down. 
  107.  
  108.    3. The system puts the text pertaining to that topic into the temporary file 
  109.       named TEXT.TMP. 
  110.  
  111.  For information on one of the other choices in the Services pull-down, 
  112.  highlight the choice and press the F1 key. 
  113.  
  114.  
  115. ΓòÉΓòÉΓòÉ 1.3.1.3. Print Option ΓòÉΓòÉΓòÉ
  116.  
  117. The Print option allows you to print one or more topics. You can also print a 
  118. set of topics by first marking the topics in the Contents list. To print the 
  119. document contents list do the following: 
  120.  
  121.    1. Choose Print from the Services pull-down. 
  122.  
  123.    2. Click on Contents (or press the Up or Down Arrow key to select it). 
  124.  
  125.    3. Click on Print (or select it and press Enter). 
  126.  
  127.    4. The Contents list is printed on your printer. 
  128.  
  129.  
  130. ΓòÉΓòÉΓòÉ 1.3.1.4. Search Option ΓòÉΓòÉΓòÉ
  131.  
  132. The Search option allows you to find occurrences of a word or phrase in the 
  133. current topic, selected topics, or all topics. You can specify a word or phrase 
  134. to be searched. You can also limit the search to a set of topics by first 
  135. marking the topics in the Contents list. 
  136.  
  137. To search for a word or phrase in all topics, do the following: 
  138.  
  139.    1. Choose the Search option from the Services pull-down. Type the word or 
  140.       words to be searched for. 
  141.  
  142.    2. Click on All sections or press the Up or Down Arrow keys to select it. 
  143.  
  144.    3. Click on Search or select it and press Enter to begin the search. 
  145.  
  146.    4. The list of topics where the word or phrase appears is displayed. 
  147.  
  148.  
  149. ΓòÉΓòÉΓòÉ 1.3.2. Options Menu ΓòÉΓòÉΓòÉ
  150.  
  151. The actions that are selectable from the Options menu allow you to change the 
  152. way your Contents list is displayed. To expand the Contents and show all levels 
  153. for all topics, choose Expand all from the Options pull-down. You can also 
  154. press Ctrl+*. For information on one of the other choices in the Options 
  155. pull-down, highlight the choice and press the F1 key. 
  156.  
  157.  
  158. ΓòÉΓòÉΓòÉ 1.3.3. Help Menu ΓòÉΓòÉΓòÉ
  159.  
  160. The actions that are selectable from the Help menu allow you to select 
  161. different types of help information. You can also press the F1 key for help 
  162. information about the Information Presentation Facility (IPF). 
  163.  
  164.  
  165. ΓòÉΓòÉΓòÉ 1.4. Documentation Conventions ΓòÉΓòÉΓòÉ
  166.  
  167. Throughout the Using Your Toolkit, the following conventions distinguish the 
  168. different elements of text: 
  169.  
  170.  plain text                    Function names, structure names, data type 
  171.                                names, message names, enumerated types, and 
  172.                                constant names. 
  173.  
  174.  Initial capitalization        Key names, push buttons, check boxes, radio 
  175.                                buttons, group-box controls, drop-down list box, 
  176.                                dialog windows, spin buttons, combo-boxes, 
  177.                                single-line entry (SLE) and multiple-line entry 
  178.                                (MLE) fields. 
  179.  
  180.  CAPITALS                      File names and error codes. 
  181.  
  182.  monospace                     Programming examples and user input at the 
  183.                                command line prompt or into an entry field. 
  184.  
  185.  bold                          Window sub-titles, action bar choices and menu 
  186.                                items. 
  187.  
  188.  italics                       Parameters, structure fields, titles of 
  189.                                documents, and first occurrences of words with 
  190.                                special meaning. 
  191.  
  192.  
  193. ΓòÉΓòÉΓòÉ 2. Introduction ΓòÉΓòÉΓòÉ
  194.  
  195. Welcome to the IBM Developer's Toolkit for OS/2 Warp, Version 3 (Warp Toolkit). 
  196. This book documents the following: 
  197.  
  198.      Additions and updates made to the IBM Developer's Toolkit for OS/2 Warp, 
  199.       which was shipped on The Developer Connection for OS/2, Volumes 6 and 7 
  200.  
  201.      Additions and updates applied to header files, program samples, tools, 
  202.       and online technical documentation of the IBM Developer's Toolkit for 
  203.       OS/2 Warp which was shipped on The Developer Connection for OS/2, Volume 
  204.       5 Special Edition 
  205.  
  206.      Descriptions of hardcopy and online documentation, code samples, and 
  207.       tools 
  208.  
  209.      Ordering information for hardcopy books and The Developer Connection for 
  210.       OS/2 
  211.  
  212.      Programming considerations that have been changed or added 
  213.  
  214.      System debug support which introduces you to the interface that installs 
  215.       the debug kernel, symbol files, and debug version of the PM 
  216.  
  217.      Toolkit roadmap that covers the folder hierarchy and the contents and 
  218.       directory structure 
  219.  
  220.      Toolkit support information that assists you in installing or using the 
  221.       Warp Toolkit, or reporting suspected system defects as a result of 
  222.       applying the Warp Toolkit 
  223.  
  224.      Toolkit survey that gives you an opportunity to mail us your ideas and 
  225.       comments about the Warp Toolkit. 
  226.  
  227.  Note:  The contents of the OS/2 Multimedia Toolkit have been merged into this 
  228.         Warp Toolkit. Therefore, there are multimedia samples, header files, 
  229.         libraries, and technical documentation included in the corresponding 
  230.         subdirectories. 
  231.  
  232.  
  233. ΓòÉΓòÉΓòÉ 3. README ΓòÉΓòÉΓòÉ
  234.  
  235.  
  236. ΓòÉΓòÉΓòÉ 4. What's New ΓòÉΓòÉΓòÉ
  237.  
  238. What's New provides information on the latest release of the Warp Toolkit 
  239. available on The Developer Connection for OS/2. 
  240.  
  241. We have added two new major components to the Toolkit installation: BETA and 
  242. Try Me! These components are provided to give you a sneak preview of new 
  243. samples, tools, and online documentation we are considering adding to the 
  244. Toolkit permanently, as well as insight on what is coming in the Toolkit for 
  245. future support on the operating system. 
  246.  
  247. The BETA component in this release of the Warp Toolkit includes Entertainment 
  248. Support and IBM Developer API Extensions for OS/2. 
  249.  
  250. The Try Me! component in this release of the Warp Toolkit includes the Assembly 
  251. Language Processor (ALP) and the Universal Resource Editor (URE). 
  252.  
  253.  
  254. ΓòÉΓòÉΓòÉ 4.1. Important Information ΓòÉΓòÉΓòÉ
  255.  
  256. Included in this section are important items that can affect your future 
  257. development efforts when using the IBM Developer's Toolkit for OS/2 Warp, 
  258. Version 3. 
  259.  
  260.      Compiling with IBM C/2 
  261.      Compiling with VisualAge (C Set ++) 
  262.      Replacing DLGEDIT - Dialog Editor 
  263.      Replacing IPFCBIDI - Bidirectional Information Presentation Facility 
  264.       Compiler 
  265.  
  266.  
  267. ΓòÉΓòÉΓòÉ 4.2. BETA ΓòÉΓòÉΓòÉ
  268.  
  269. The BETA component contains new tools, samples, online documentation and API 
  270. support for function in future versions of the operating system. Execution of 
  271. these pieces will typically require additional runtime support provided by a 
  272. Beta version of OS/2 Warp. In general, Beta versions of the operating system 
  273. are available on The Developer Connection for OS/2. However, there will be 
  274. cases, as in this volume's entertainment samples and tools, where the runtime 
  275. support is included with the Developer's Toolkit for OS/2 Warp. 
  276.  
  277. The content of this component can vary from volume to volume of The Developer 
  278. Connection for OS/2. This component is not installed by default by the 
  279. Developer's Toolkit for OS/2 installation program, but the component can be 
  280. selected prior to installing. All files for installation via the BETA component 
  281. are installed in the \TOOLKIT\BETA directory structure by default. 
  282.  
  283. In this release of the Warp Toolkit, the BETA component includes Entertainment 
  284. Support and IBM Developer API Extensions for OS/2. 
  285.  
  286. Summer games are here! 
  287.  
  288. PC game developers have been asking for code, tools, and samples specifically 
  289. related to their entertainment software and games requirements. So, we have 
  290. created new entertainment samples and tools just for you--the entertainment 
  291. software developer. 
  292.  
  293. In our very first Beta version, you will find audio, video, networking, and 
  294. joystick functionality that has been created or enhanced with PC gamers in 
  295. mind. 
  296.  
  297. If you have a question regarding any of the entertainment components, refer to 
  298. the entertainment online documentation as a first step. If you still need 
  299. assistance, call 1-800-553-1623 for technical support. 
  300.  
  301.  
  302. ΓòÉΓòÉΓòÉ 4.2.1. Entertainment Samples and Tools ΓòÉΓòÉΓòÉ
  303.  
  304. Included in this Beta are new entertainment samples and tools. For those 
  305. developers who are mostly interested in programming for PC entertainment, this 
  306. is the Toolkit you will want to have! 
  307.  
  308. For starters, this Beta contains samples, tools, and online documentation for 
  309. the following entertainment-related functions: 
  310.  
  311.      BRender real-time 3D graphic technology: ROBOT 
  312.  
  313.       Now, you can make that jet plane in your game rotate, dip, and roll, or 
  314.       your creature from outerspace move body parts or twist and turn, using 
  315.       the technology brought to you by Argonaut Technologies Limited. 
  316.  
  317.      Direct Audio RouTines (DART): DAUDIO 
  318.  
  319.       The door creeks as it is opened, the monster groans as he is destroyed... 
  320.       Create all the audible actions and reactions you want to hear. Your 
  321.       imagination is the only limit for what the high-speed audio interface can 
  322.       provide. 
  323.  
  324.      DIVE with full-screen support: FSDIVE 
  325.  
  326.       Not only can that jet plane rotate, it can move faster in full-screen 
  327.       mode now. No more little windows for the people who play your game to 
  328.       squint at. 
  329.  
  330.      Joystick Device Drivers for OS/2 and DOS: JOYSTICK 
  331.  
  332.       These new joystick device drivers allow you to use joysticks for hatch or 
  333.       thrust controls in addition to the one or two buttons, included on most 
  334.       standard joysticks. 
  335.  
  336.      Multiplayer networking support: TICTAC 
  337.  
  338.       Games that allow you to compete against or conspire with other players 
  339.       are now possible using the entertainment samples and tools. 
  340.  
  341.       We are starting with TCP/IP networking support in this first Beta. More 
  342.       platforms to follow! 
  343.  
  344.      Real-time MIDI support: MIDISAMP 
  345.  
  346.       Finally you have true MIDI support for OS/2. This subsystem provides a 
  347.       32-bit real-time environment for playing, recording, and processing MIDI 
  348.       data. This initial version provides support for playback only. 
  349.  
  350.      REXX installation help: RINST2 
  351.  
  352.       This Beta tool assists you in the installation of any entertainment or 
  353.       DOS program. 
  354.  
  355.  Let the entertainment begin! This is just our first Beta so stay tuned for 
  356.  more entertainment-related functions in the future. 
  357.  
  358.  
  359. ΓòÉΓòÉΓòÉ 4.2.1.1. DAUDIO ΓòÉΓòÉΓòÉ
  360.  
  361. DAUDIO (direct audio) demonstrates the use of the direct audio interface. This 
  362. high speed audio interface allows an application to send audio data directly to 
  363. the amp-mixer device. The sample demonstrates the steps required to set up and 
  364. use this new interface for playing and recording digital audio data. 
  365.  
  366. Hardware requirements: 
  367.  
  368.      Computer capable of running OS/2 Warp 
  369.      Sound Card 
  370.      Speakers or Headphones. 
  371.  
  372.  Software requirements: 
  373.  
  374.      OS/2 Warp 
  375.      Multimedia support. 
  376.  
  377.  
  378. ΓòÉΓòÉΓòÉ 4.2.1.2. FSDIVE ΓòÉΓòÉΓòÉ
  379.  
  380. FSDIVE (full-screen DIVE) demonstrates the use of multimedia's direct interface 
  381. video extensions (DIVE) by repeatedly displaying a short animation sequence. 
  382. The animation is performed by sequentially displaying a series of up to 16 bit 
  383. maps in a PM window. You can display the default bit maps, shipped with the 
  384. sample, or specify the bit maps by passing the file names as command line 
  385. parameters. 
  386.  
  387. After the application is started, you can move or resize the window and observe 
  388. the effects on the frame rate of the animation (displayed on the title bar). 
  389.  
  390. The latest version of the DIVE interface has been enhanced to allow an 
  391. application to take over the display and change the resolution. This allows an 
  392. application to run in a full screen without paying the performance penalty of 
  393. maintaining a high-resolution desktop. 
  394.  
  395. Note:  Before the full-screen DIVE sample can run in full-screen mode, 
  396.        full-screen support must be installed by running GSRVINST.EXE (located 
  397.        in \TOOLKIT\BETA\SAMPLES\ENTOOLKT\VIDEO\FSDIVE). See the GAMESRVR.DOC 
  398.        file in the same directory for more details. Once the game server DLL is 
  399.        installed, full-screen DIVE can be activated by using the Alt+Home hot 
  400.        key. 
  401.  
  402.  
  403. ΓòÉΓòÉΓòÉ 4.2.1.3. JOYSTICK ΓòÉΓòÉΓòÉ
  404.  
  405. JOYSTICK (OS/2 Joystick device driver) allows an OS/2 Warp application to 
  406. access the machine's game port.  The driver provides an interface or a set of 
  407. API function calls for reading the joysticks. 
  408.  
  409. The Joystick API is implemented within the OS/2 Joystick device driver. This 
  410. sample code shows how to use the OS/2 Joystick API and supports any two 
  411. standard joysticks or one joystick with an advanced feature, such as a hatch or 
  412. throttle control. 
  413.  
  414. Currently, there are no high-level versions of access to these functions, 
  415. except through the IOCtl interface. This sample issues DosDevIOCtl to request 
  416. status or sends commands to the OS/2 Joystick device driver. The API function 
  417. number, an input parameter to DosDevIOCtl, is defined by the OS/2 Joystick 
  418. device driver. 
  419.  
  420. JOYSTICK registers with the OS/2 Joystick device driver via DosOpen, with the 
  421. device name "GAME$". It sends commands to the Joystick device driver via 
  422. DosDevIOCtl after opening the new GAME$ device. These commands or IOCtls are 
  423. subfunctions that are issued through DosDevIOCtl. 
  424.  
  425. This sample passes proper parameters and required data buffers or data 
  426. structures when calling the API. The returned data is examined and a proper 
  427. message is displayed to the screen. If the call is unsuccessful, an error 
  428. message will be displayed and the sample will be terminated. 
  429.  
  430. JOYSTICK shows how to interface with the OS/2 Joystick API via the following 
  431. functions: 
  432.  
  433.      Get the version number of the driver, API function x'01'. 
  434.      Get the device parameters, API function x'02'. 
  435.      Set the device parameters, API function x'03'. 
  436.      Get the calibration values, API function x'04'. 
  437.      Get the current joystick status, API function x'10'. 
  438.      Get the joystick status at next button press, API function x'11'. 
  439.      Get the joystick status at next sample, API function x'12'. 
  440.  
  441.  It also accesses other OS/2 functions such as: 
  442.  
  443.      DosOpen 
  444.  
  445.       DosOpen function must be called first to open the device driver name 
  446.       (GAME$) prior to any API function call to the OS/2 Joystick device 
  447.       driver. 
  448.  
  449.      DosClose 
  450.  
  451.       When the program terminates, DosClose must be called to end the program 
  452.       properly. 
  453.  
  454.  Hardware Requirements: 
  455.  
  456.      Joystick device 
  457.  
  458.  Software Requirements: 
  459.  
  460.      OS/2 Warp 
  461.      IBM C Set ++ compiler 2.x or 3.x 
  462.      Developer's Toolkit 3.0 
  463.      GAMEDD.SYS driver 
  464.  
  465.       Note:  An error message will be displayed and the program will terminate 
  466.              if the driver is not installed. 
  467.  
  468.  The design of this sample is based on the set of functions provided by the 
  469.  OS/2 Joystick device driver. 
  470.  
  471.  The CONFIG.SYS should include the following statement: 
  472.  
  473.   DEVICE=pathname\GAMEDD.SYS
  474.  
  475.  where: 
  476.  
  477.  pathname  is the path where GAMEDD.SYS is located. 
  478.  
  479.  
  480. ΓòÉΓòÉΓòÉ 4.2.1.4. MIDISAMP ΓòÉΓòÉΓòÉ
  481.  
  482. MIDISAMP illustrates the use of the real-time MIDI support programming concepts 
  483. and usage of the new real-time MIDI API. This sample program illustrates the 
  484. use of the new real-time MIDI API by initializing and setting up a small MIDI 
  485. node network and subsequently sending a MIDI message from an application node 
  486. to a hardware node, thereby demonstrating MIDI playback. 
  487.  
  488. Hardware requirements: 
  489.  
  490.      Computer capable of running OS/2 Warp 
  491.      Speaker or headphones 
  492.      Sound card 
  493.  
  494.       Note:  The README for MIDISAMP contains specific information regarding 
  495.              device driver installation for running MIDISAMP. (This README is 
  496.              located in the TOOLKIT\BETA\SAMPLES\ENTOOLKT\AUDIO\MIDI 
  497.              subdirectory.) 
  498.  
  499.  Software requirements: 
  500.  
  501.      OS/2 Warp 
  502.      Multimedia support 
  503.      Standard MIDI file 
  504.  
  505.  
  506. ΓòÉΓòÉΓòÉ 4.2.1.4.1. Known Limitations ΓòÉΓòÉΓòÉ
  507.  
  508. Currently, MIDISAMP might halt when another process attempts to play a sound 
  509. (including system sounds) while the sample is running. Therefore, you should 
  510. disable system sound before running MIDISAMP. To disable system sound, 
  511. double-click on Sound located in the Multimedia folder and ensure Enable system 
  512. sound is not selected. 
  513.  
  514.  
  515. ΓòÉΓòÉΓòÉ 4.2.1.5. RINST2 ΓòÉΓòÉΓòÉ
  516.  
  517. RINST2 is a REXX tool that assists you in installing any entertainment or DOS 
  518. program. It creates a Workplace Shell program object, associates an icon, and 
  519. sets the DOS setting as appropriate. It also offers the chance to run a setup 
  520. program as part of the installation. 
  521.  
  522.  
  523. ΓòÉΓòÉΓòÉ 4.2.1.6. ROBOT ΓòÉΓòÉΓòÉ
  524.  
  525. Note:  You must read the Argonaut Non-Commercial License before using this 
  526.        sample. 
  527.  
  528.  ROBOT demonstrates how to use the new OS/2 version of Argonaut's BRender 
  529.  technology. The BRender technology allows for real-time, three-dimensional 
  530.  (3D) manipulation of actors. An actor can be the actual object model, a 
  531.  camera, or a light. The objects are composed of polygons. These polygons can 
  532.  be moved independently or in conjunction with each other. 
  533.  
  534.  While BRender provides the API necessary for the 3D transformation of the 
  535.  scene, it requires that system-specific code be used for blitting to the 
  536.  screen. There are two parts to the design. One is the use of BRender to 
  537.  perform the 3D manipulations, and the other is the use of DIVE (DIVE provides 
  538.  a faster method of blitting) to allocate and display the image buffer and to 
  539.  do any palette manipulations. 
  540.  
  541.  ROBOT does the following: 
  542.  
  543.      Performs initialization 
  544.      Imports data for models, materials and textures 
  545.      Renders the scene 
  546.      Modifies object positions and orientations via user interface. 
  547.  
  548.  This sample demonstrates a robot walking. The mouse can be used to zoom in and 
  549.  out and also to rotate the robot in 3D space. 
  550.  
  551.  
  552. ΓòÉΓòÉΓòÉ 4.2.1.7. TICTAC ΓòÉΓòÉΓòÉ
  553.  
  554. TICTAC (TicTacToe) demonstrates how to use networking functions to develop a 
  555. multiplayer, networked game. 
  556.  
  557. These networking support functions are referred to as OS/2 Warp networking 
  558. functions. These functions support multiple transports such as TCP/IP, SPX/IPX, 
  559. and OEM stacks. The current functions implement support for TCP/IP transport 
  560. only. 
  561.  
  562. This sample uses the Warp networking functions to illustrate a 2-player 
  563. TicTacToe game, where two players play against each other. 
  564.  
  565. Software Requirements: 
  566.  
  567.      WARPNET.DLL 
  568.      OS/2 TCP/IP Version 2.x or higher 
  569.      OS/2 Warp 3.0 or higher. 
  570.  
  571.  
  572. ΓòÉΓòÉΓòÉ 4.2.1.7.1. Known Limitations ΓòÉΓòÉΓòÉ
  573.  
  574. Currently, the receive function (WarpnetPackRecv) for Warp networking can only 
  575. receive header information with no packet data. 
  576.  
  577.  
  578. ΓòÉΓòÉΓòÉ 4.2.2. Entertainment Online Documentation ΓòÉΓòÉΓòÉ
  579.  
  580. The Developer Connection for OS/2 offers you five entertainment online books, 
  581. which are located in the \TOOLKIT\BETA\BOOK subdirectory. 
  582.  
  583.      BRender Concise Guide 
  584.      BRender Technical Reference 
  585.      Direct Audio Interface 
  586.      Entertainment Programming Guide and Reference 
  587.      Real Time MIDI 
  588.  
  589.  You can also access these books from the Desktop by opening the Toolkit 
  590.  folder, then the BETA folder, and then the Beta Toolkit Information folder. 
  591.  
  592.  
  593. ΓòÉΓòÉΓòÉ 4.2.2.1. BRender Concise Guide ΓòÉΓòÉΓòÉ
  594.  
  595. This book describes the BRender Power Rendering System Application Programming 
  596. Interface (API), shows how the components of the BRender system work as a 
  597. whole, and gives some idea of the capabilities of this system. 
  598.  
  599.  
  600. ΓòÉΓòÉΓòÉ 4.2.2.1.1. BRender Technical Reference ΓòÉΓòÉΓòÉ
  601.  
  602. This book provides documentation support for the BRender Power Rendering 
  603. System, a real-time, 3D graphics software by Argonaut Technologies Ltd. 
  604.  
  605. Argonaut's BRender 3D graphics API is only distributed under Argonaut's 
  606. end-user license. The BRender Sample provides a limited license permitting you 
  607. to evaluate the product. Should you wish to include the BRender Power Rendering 
  608. System in your entertainment software, you need to contact Argonaut for a 
  609. commercial license. 
  610.  
  611.  
  612. ΓòÉΓòÉΓòÉ 4.2.2.2. Direct Audio Interface ΓòÉΓòÉΓòÉ
  613.  
  614. This book provides an overview of the direct audio interface including 
  615. descriptions of messages and associated data types. 
  616.  
  617.  
  618. ΓòÉΓòÉΓòÉ 4.2.2.3. Entertainment Programming Guide and Reference ΓòÉΓòÉΓòÉ
  619.  
  620. This book is written for the developer interested in writing entertainment 
  621. applications for OS/2 Warp. It contains information about video support, audio 
  622. support, networking, and input devices used specifically in entertainment 
  623. development, such as: 
  624.  
  625.      OS/2 Joystick Device Driver 
  626.      Full-screen DIVE (Direct Interface Video Extensions) 
  627.      Multiplayer Networking API 
  628.  
  629.  
  630. ΓòÉΓòÉΓòÉ 4.2.2.4. Real Time MIDI ΓòÉΓòÉΓòÉ
  631.  
  632. This book provides a discussion of the new real-time MIDI architecture and 
  633. introduces the real-time MIDI application programming interface (API) including 
  634. detailed descriptions of the real-time MIDI functions and associated data 
  635. types. 
  636.  
  637.  
  638. ΓòÉΓòÉΓòÉ 4.2.3. IBM Developer API Extensions for OS/2 ΓòÉΓòÉΓòÉ
  639.  
  640. The IBM Developer API Extensions for OS/2 extends the OS/2 Warp application 
  641. programming interface (API) set so that application developers can develop a 
  642. common source code base for OS/2 Warp and Windows platforms. The SMART and 
  643. Hyperwise tools are available on this Beta CD to analyze existing Windows 
  644. applications and to migrate the source code, resources, and help files to code 
  645. that will compile on both OS/2 Warp and Windows platforms. 
  646.  
  647. The following are prerequisites for using the IBM Developer API Extensions for 
  648. OS/2: 
  649.  
  650.      Developer's Toolkit for OS/2 Warp Version 3 
  651.  
  652.      SMART Version 2.1B 
  653.  
  654.      One of the following C compilers: 
  655.  
  656.         -  IBM C Set ++ Program Package (3.5), part number 61G1175 
  657.  
  658.         -  IBM C Set ++ Program Package (CD-ROM), part number 61G1412 
  659.  
  660.         -  IBM VisualAge C++ for OS/2 Version 3.0 
  661.  
  662.  
  663. ΓòÉΓòÉΓòÉ 4.2.3.1. IBM Developer API Extensions for OS/2 Samples ΓòÉΓòÉΓòÉ
  664.  
  665. The following samples are included supporting the IBM Developer API Extensions 
  666. for OS/2: 
  667.  
  668.      HiWorld 
  669.      ToyBox 
  670.      WinMain Wrapper Function (MAIN.C) 
  671.      DLL Initialization Entry Point (DLLMAIN.C) 
  672.  
  673.  
  674. ΓòÉΓòÉΓòÉ 4.2.3.2. IBM Developer API Extensions for OS/2 Documentation ΓòÉΓòÉΓòÉ
  675.  
  676. The IBM Developer API Extensions for OS/2 Programming Guide is a new online 
  677. book included with this release of the Warp Toolkit. This book is located in 
  678. the \TOOLKIT\BETA\BOOK subdirectory and provides information on the following 
  679. topics: 
  680.  
  681.      What the IBM Developer API Extensions for OS/2 are and how they can help 
  682.       you to: 
  683.  
  684.         -  Migrate Windows code to OS/2 code 
  685.         -  Write common source code for OS/2 and Windows 
  686.  
  687.      How to use the SMART tool to analyze Windows code and see how much effort 
  688.       is involved to migrate it to OS/2 code 
  689.  
  690.      Differences in behavior between some IBM Developer API Extensions for 
  691.       OS/2 functions and their Windows counterparts 
  692.  
  693.      Changes to the Resource Compiler due to IBM Developer API Extensions for 
  694.       OS/2 
  695.  
  696.      The functions supported by the IBM Developer API Extensions for OS/2 
  697.  
  698.  You can access this book from the Desktop by opening the Toolkit folder, then 
  699.  the BETA folder, and then the Beta Toolkit Information folder. 
  700.  
  701.  
  702. ΓòÉΓòÉΓòÉ 4.3. Try Me! ΓòÉΓòÉΓòÉ
  703.  
  704. The Try Me! component, formerly called NeatStuff, contains new tools and 
  705. samples that execute on generally available versions of OS/2, such as OS/2 Warp 
  706. Version 3. These tools and samples are provided to obtain feedback from you, 
  707. our customers. We are considering adding these tools and samples to the Toolkit 
  708. permanently. The content of this component can vary from volume to volume of 
  709. The Developer Connection for OS/2. 
  710.  
  711. Try Me! is installed by default by the Developer's Toolkit for OS/2 
  712. installation program, but the component can be deselected prior to installing 
  713. to save space on your hard disk. All files installed via the Try Me! component 
  714. are installed in the \TOOLKIT\BETA directory structure by default. 
  715.  
  716. In this release of the Warp Toolkit, there are two new entries in the Try Me! 
  717. component: 
  718.  
  719.      ALP - Assembly Language Processor 
  720.      URE - Universal Resource Editor 
  721.  
  722.  The P2String tool is also in the Try Me! component. 
  723.  
  724.  Note:  These utilities are pre-release, unsupported versions and are provided 
  725.         on an "as is" basis for evaluation and demonstration. They are not 
  726.         intended for use with production code. 
  727.  
  728.  IBM supports the version of Dialog Editor in this release of the Warp Toolkit, 
  729.  but will not be enhancing or otherwise changing Dialog Editor in future 
  730.  releases. URE (Universal Resource Editor) will become the editor of choice for 
  731.  creating and modifying dialogs and other resources. 
  732.  
  733.  Take our Toolkit Survey and send it in! We are interested in your feedback! 
  734.  Please use any of the mechanisms listed below to give us your comments: 
  735.  
  736.      Internet - tink@vnet.ibm.com 
  737.  
  738.      CompuServe - 72410,624 
  739.  
  740.      Mail - IBM Corporation 
  741.  
  742.                 Attn: Rick Timkovich Zip 1606
  743.                 P.O. Box 1328
  744.                 Boca Raton, FL 33429-1328
  745.  
  746.  
  747. ΓòÉΓòÉΓòÉ 4.3.1. ALP ΓòÉΓòÉΓòÉ
  748.  
  749. ALP (Assembly Language Processor) is a macro assembler that runs under the 
  750. 32-bit OS/2 operating system. In its initial form, ALP is designed as a 
  751. functional replacement for the Microsoft Macro Assembler (MASM), Version 5.1. 
  752. It accepts the full syntax of the Intel 80X86 architecture, and a subset of 
  753. MASM's high-level directive language. ALP creates standard Object Module Format 
  754. (.OMF) files that can be linked to produce DOS or OS/2 executables, and can 
  755. generate line number debug information compatible with IBM's Presentation 
  756. Manager Debugger. In addition, this tool offers a rich set of command line 
  757. options, as well as a comprehensive listing file with user-tailored formatting, 
  758. allowing a visual perspective not possible with other assemblers. 
  759.  
  760. ALP translates assembly language source files (typically having a file name 
  761. extension of .ASM) into object (.OBJ) files. The LINK386 utility can then be 
  762. used to combine multiple object files into a single executable file, dynamic 
  763. link library, or device driver. 
  764.  
  765. While ALP is designed as a functional replacement for the Microsoft MASM 
  766. assembler in terms of source code compatibility, it does not use the MASM 
  767. command line syntax. ALP uses a free-form syntax, has a comprehensive set of 
  768. options, and allows assembly of multiple input files with a single command line 
  769. invocation. 
  770.  
  771. For each corresponding input source file, ALP can produce the following types 
  772. of output files: 
  773.  
  774.      Object (.OBJ) files containing program data and executable code. 
  775.      Listing (.LST) files which document the results of the assembly. 
  776.      Message (.MSG) files which can contain all error, warning, and 
  777.       informational messages produced during the assembly. 
  778.  
  779.  
  780. ΓòÉΓòÉΓòÉ 4.3.2. URE ΓòÉΓòÉΓòÉ
  781.  
  782. URE (Universal Resource Editor) is a Presentation Manager tool which enables 
  783. you to create and maintain the resource files for your applications. This tool 
  784. has been significantly enhanced with the following: 
  785.  
  786.      Enhanced user interface and documentation 
  787.      Double-byte character set (DBCS) support for input and output of 
  788.       double-byte characters 
  789.  
  790.  This level of URE runs on a Warp system but does not run in an OS/2 2.1 
  791.  environment. The URE shipped with the Warp Toolkit on the Developer Connection 
  792.  for OS/2, Volume 8 must be used to edit resource files defined for an OS/2 2.1 
  793.  environment. 
  794.  
  795.  Note:  URE will replace DLGEDIT (Dialog Editor) in a future release of the 
  796.         Warp Toolkit. 
  797.  
  798.  
  799. ΓòÉΓòÉΓòÉ 4.3.3. Try Me! Online Documentation ΓòÉΓòÉΓòÉ
  800.  
  801. The Developer Connection for OS/2, Volume 8 offers you two new online books 
  802. describing tools. These books are located in the \TOOLKIT\BETA\BOOK 
  803. subdirectory. You can also access them through the TRYME folder located within 
  804. the Toolkit folder. 
  805.  
  806.      Assembly Language Processor Reference Guide 
  807.      Universal Resource Editor User's Guide 
  808.  
  809.  
  810. ΓòÉΓòÉΓòÉ 4.3.3.1. Assembly Language Processor Reference Guide ΓòÉΓòÉΓòÉ
  811.  
  812. This book describes how to install and run the ALP assembler. It provides a 
  813. complete description of the following: 
  814.  
  815.      Installation 
  816.      Command line syntax 
  817.      Environment variables 
  818.      Assembler return codes 
  819.      Message descriptions and recovery 
  820.  
  821.  
  822. ΓòÉΓòÉΓòÉ 4.3.3.2. Universal Resource Editor User's Guide ΓòÉΓòÉΓòÉ
  823.  
  824. This book provides information on the following URE features: 
  825.  
  826.      Using the tool bar, status window, and symbol definition window 
  827.      Using all dialogs 
  828.      Designing an application with URE 
  829.      Adding backing code to a design 
  830.      Running a prototype 
  831.      Adding new elements to a process 
  832.      Rebuilding an application 
  833.      Using PM control extensions 
  834.      Setting styles and CUA guidelines 
  835.      Creating resource DLLs 
  836.      Using accelerators in a resource design. 
  837.  
  838.  
  839. ΓòÉΓòÉΓòÉ 4.4. Tool Updates ΓòÉΓòÉΓòÉ
  840.  
  841. This release of the Warp Toolkit contains the following tool updates: 
  842.  
  843.      IPFC Enhancements 
  844.      Replacing DLGEDIT 
  845.      Replacing IPFCBIDI 
  846.      Resource Compiler Enhancements 
  847.  
  848.  
  849. ΓòÉΓòÉΓòÉ 4.4.1. IPFC Enhancements ΓòÉΓòÉΓòÉ
  850.  
  851. The following enhancements have been made to the Information Presentation 
  852. Facility Compiler (IPFC): 
  853.  
  854.      Capability to add additional languages and code pages to IPFC. 
  855.  
  856.      Incorporation of the following languages into IPFC:  Czech, Greek, 
  857.       Hungarian, Korean (code page 949), Polish, Russian, Simplified Chinese 
  858.       (code page 1381), Thai, and Turkish. 
  859.  
  860.  See Compiling with International Language Considerations for more detailed 
  861.  information on these enhancements. 
  862.  
  863.  
  864. ΓòÉΓòÉΓòÉ 4.4.2. Replacing DLGEDIT ΓòÉΓòÉΓòÉ
  865.  
  866. IBM supports the version of DLGEDIT (Dialog Editor) in this release of the Warp 
  867. Toolkit, but will not be enhancing or otherwise changing the Dialog Editor in 
  868. future releases. URE (Universal Resource Editor) will become the editor of 
  869. choice for creating and modifying dialogs and other resources. 
  870.  
  871.  
  872. ΓòÉΓòÉΓòÉ 4.4.3. Replacing IPFCBIDI ΓòÉΓòÉΓòÉ
  873.  
  874. The Developer's Toolkit for OS/2 Warp on The Developer Connection for OS/2 
  875. includes two IPF compilers: IPFC.EXE and IPFCBIDI.EXE (the bidirectional 
  876. version of IPFC.EXE). For this version of the Warp Toolkit, these programs are 
  877. identical, as the bidirectional support has been integrated into the American 
  878. version, IPFC.EXE. However, in a future release of the Warp Toolkit on The 
  879. Developer Connection for OS/2, only IPFC.EXE will be included. Therefore, it 
  880. will be necessary for you to modify any makefiles that reference IPFCBIDI.EXE 
  881. to reference IPFC.EXE instead. 
  882.  
  883.  
  884. ΓòÉΓòÉΓòÉ 4.4.4. Resource Compiler Enhancements ΓòÉΓòÉΓòÉ
  885.  
  886. As an enhancement for the IBM Developer API Extensions for OS/2, the OS/2 
  887. Resource Compiler (RC) now supports string IDs for resources in addition to 
  888. numbers. You can use either SMART or the Resource Compiler to convert 
  889. resources. If you use the Resource Compiler, you do not need to include the hhh 
  890. file with your code. OS/2 supports string IDs with double quotes. See the 
  891. discussion of the RESOURCE statement in the IBM Developer API Extensions for 
  892. OS/2 Programming Guide for more information. 
  893.  
  894.  
  895. ΓòÉΓòÉΓòÉ 5. Installation ΓòÉΓòÉΓòÉ
  896.  
  897. The TK21DESK.CMD command, used to recreate the Toolkit's icons or objects on 
  898. the Desktop, is no longer necessary. The function, formerly part of TK21DESK, 
  899. is now a part of the installation program. 
  900.  
  901. To restore your Toolkit Desktop objects, insert the CD or diskette that 
  902. contains the install program (TKINSTAL.EXE), start the program, and follow 
  903. these steps: 
  904.  
  905.    1. Click on the Options push button to open Installation options. 
  906.  
  907.    2. Deselect Install selected files and Write CONFIG.SYS updates to: (only 
  908.       Register WPS classes and Create desktop objects should be selected). 
  909.  
  910.    3. Click on the OK push button to close Installation options. 
  911.  
  912.    4. Highlight the root (top-most) component in the component tree, then fill 
  913.       in the Destination: field with the location of your Toolkit subdirectory. 
  914.  
  915.    5. Click on the Install push button. 
  916.  
  917.  
  918. ΓòÉΓòÉΓòÉ 6. Toolkit Roadmap ΓòÉΓòÉΓòÉ
  919.  
  920. The tools, samples, and technical documentation in the Warp Toolkit are 
  921. available in two ways.  You can access them through the Toolkit folder and its 
  922. subfolders on the Desktop, or you can access them using an OS/2 window or OS/2 
  923. full-screen session and changing into the \TOOLKIT subdirectory and its 
  924. subdirectories. 
  925.  
  926.  
  927. ΓòÉΓòÉΓòÉ 6.1. Directory Hierarchy ΓòÉΓòÉΓòÉ
  928.  
  929. The Warp Toolkit package has the following directory structure: 
  930.  
  931.   \TOOLKIT        - Root subdirectory for the Toolkit.
  932.     Γöé
  933.     Γö£ΓöÇ\BETA       - Beta version of new samples, tools (EXE), and online books
  934.     Γö£ΓöÇ\BIN        - Programming tools
  935.     Γö£ΓöÇ\BITMAP     - Sample multimedia bit maps
  936.     Γö£ΓöÇ\BOOK       - Online technical information
  937.     Γö£ΓöÇ\DLL        - Toolkit dynamic link language (DLL) files
  938.     Γö£ΓöÇ\H          - C and C++ header files
  939.     Γö£ΓöÇ\HELP       - Toolkit help (HLP) files
  940.     Γö£ΓöÇ\ICON       - Toolkit icons (ICO) files
  941.     Γö£ΓöÇ\IDL        - Workplace Shell interface definition language (IDL) files
  942.     Γö£ΓöÇ\INC        - Assembler header (INC) files
  943.     Γö£ΓöÇ\IPFC       - Information Presentation Facility Compiler (IPFC) files
  944.     Γö£ΓöÇ\LIB        - Import library (LIB) files
  945.     Γö£ΓöÇ\SAMPLES    - Contains common information for all
  946.     Γöé               samples, as well as SAMPLES.DOC
  947.     Γö£ΓöÇ\SOM        - SOM subdirectories
  948.     ΓööΓöÇ\TMP        - Used to store temporary files
  949.  
  950. Note:  If you have not installed the Warp Toolkit on your system and you are 
  951.        reading from The Developer Connection for OS/2 CD, the \TOOLKIT 
  952.        subdirectory is located in the \DEVTOOLS\WARPTLKT directory. 
  953.  
  954.  
  955. ΓòÉΓòÉΓòÉ 6.2. Folder Hierarchy ΓòÉΓòÉΓòÉ
  956.  
  957. The Warp Toolkit package has the following Workplace Shell folder hierarchy: 
  958.  
  959.  IBM Developer's Toolkit                - Root folder of the Toolkit.
  960.  for OS/2 Warp, Version 3                 Contains the README file and the
  961.   Γöé                                       other Toolkit folders
  962.   Γöé
  963.   Γö£ΓöÇDevelopment Tools                   - Programming tools
  964.   Γö£ΓöÇMultimedia Bitmaps                  - Sample multimedia bit maps
  965.   Γö£ΓöÇMultimedia Sample Programs          - Multimedia sample programs
  966.   Γö£ΓöÇOS/2 Sample Programs                - Control Program sample programs
  967.   Γö£ΓöÇPM Sample Programs                  - Presentation Manager (PM) sample programs
  968.   Γö£ΓöÇREXX Sample Programs                - REXX sample programs
  969.   Γö£ΓöÇToolkit Information                 - Online technical books
  970.   Γö£ΓöÇWorkplace Shell Sample Programs     - Workplace Shell (WPS) sample programs
  971.   Γöé
  972.   Γö£ΓöÇBETA                                - Beta version of books, samples, and tools
  973.   Γöé  Γö£ΓöÇDeveloper API Extensions Samples - IBM Developer API Extensions for
  974.   Γöé  Γöé                                    OS/2 samples
  975.   Γöé  Γö£ΓöÇBRender                          - BRender components
  976.   Γöé  Γöé  ΓööΓöÇBRender Samples               - BRender samples
  977.   Γöé  Γö£ΓöÇBeta Entertainment Samples       - Entertainment samples
  978.   Γöé  Γöé  Γö£ΓöÇAudio Samples                 - Audio samples
  979.   Γöé  Γöé  Γö£ΓöÇInput Samples                 - Input samples
  980.   Γöé  Γöé  Γö£ΓöÇNetwork Samples               - Network samples
  981.   Γöé  Γöé  ΓööΓöÇVideo Samples                 - Video samples
  982.   Γöé  ΓööΓöÇBeta Toolkit Information         - Online technical books
  983.   ΓööΓöÇTRYME                               - Beta version of samples and tools
  984.  
  985.  
  986. ΓòÉΓòÉΓòÉ 7. Toolkit Contents ΓòÉΓòÉΓòÉ
  987.  
  988. This section represents the main body of the Using Your Toolkit. It contains 
  989. the following sections: 
  990.  
  991.      Header files -- describes the changes that have occurred in the Control 
  992.       Program, Multimedia, OS/2, and Workplace Shell header files. 
  993.  
  994.      Sample programs -- provide descriptions of the OS/2, BIDI, REXX, 
  995.       Presentation Manager, Multimedia, and Workplace Shell code samples that 
  996.       are included in the Warp Toolkit. 
  997.  
  998.      Tools -- provide descriptions of the Presentation Manager, Multimedia, 
  999.       SOM, and Workplace Shell tools.  It also introduces you to the interface 
  1000.       that installs the debug kernel, symbol files, and debug version of the 
  1001.       PM, and describes tools that support your debugging efforts. 
  1002.  
  1003.      Online documentation -- describes the single and combined online books of 
  1004.       the Warp Toolkit. 
  1005.  
  1006.      BETA -- Beta version of entertainment samples, tools, and online 
  1007.       documentation. 
  1008.  
  1009.      Try Me! -- Beta version of tools and online documentation. 
  1010.  
  1011.  
  1012. ΓòÉΓòÉΓòÉ 7.1. Header Files ΓòÉΓòÉΓòÉ
  1013.  
  1014. The header files for C and C++ have been merged and placed in a new directory, 
  1015. H, which is located directly off the \TOOLKIT subdirectory. In previous 
  1016. versions these header files were located in the \OS2H subdirectory under the \C 
  1017. or \CPLUS directories. 
  1018.  
  1019. Changes in the header files have occurred in the following sections: 
  1020.  
  1021.      Control Program 
  1022.      Multimedia 
  1023.      OS/2 
  1024.      Workplace Shell 
  1025.  
  1026.  Note:  For compatibility with the C Set ++, Version 3.0, the #pragma checkout 
  1027.         directives in all header files have been changed to #pragma info. The 
  1028.         #pragma checkout directive is no longer supported by C Set ++.  Because 
  1029.         the #pragma info directive provides similar function to #pragma 
  1030.         checkout, the header file changes should not affect code that uses the 
  1031.         header files. If you use the #pragma checkout directive with C Set ++, 
  1032.         Version 3.0, it generates an "unsupported pragma" error for both C and 
  1033.         C++ compilers. Refer to the C Set ++ Language Reference for more 
  1034.         details. 
  1035.  
  1036.  
  1037. ΓòÉΓòÉΓòÉ 7.1.1. Control Program Header Files ΓòÉΓòÉΓòÉ
  1038.  
  1039. DosSetDOSProperty() and DosQueryDOSProperty() in BSEDOS.H are not supported. Do 
  1040. not use these functions. 
  1041.  
  1042.  
  1043. ΓòÉΓòÉΓòÉ 7.1.2. Multimedia Header Files ΓòÉΓòÉΓòÉ
  1044.  
  1045. The multimedia header files listed below are delivered in two different 
  1046. versions. One version uses conventions compatible with the standard OS/2 
  1047. header-file format. The other version uses conventions compatible with 
  1048. Microsoft Windows header files. The Windows-style headers are currently shipped 
  1049. for compatibility with earlier multimedia applications, but will be removed 
  1050. from the Toolkit in the future. 
  1051.  
  1052. New applications should use the OS/2-style header files. Applications that use 
  1053. the Windows-style headers will need to modify their source code when moving to 
  1054. the new headers. 
  1055.  
  1056.  Windows-Style       OS/2-Style 
  1057.  CDAUDIO.H           CDAUDOS2.H 
  1058.  MCIDRV.H            MMDRVOS2.H 
  1059.  MIDI.H              MIDIOS2.H 
  1060.  MMIO.H              MMIOOS2.H 
  1061.  MMSYSTEM.H          MCIOS2.H 
  1062.  
  1063.  Note:  There is a known problem with the AUDIO.H header file when compiling 
  1064.         for C++. The typedef for the audio_update structure must be changed: 
  1065.  
  1066.  from: 
  1067.  
  1068.     typedef struct audio_update FAR *UPDATE;
  1069.  
  1070.  to: 
  1071.  
  1072.     typedef audio_update FAR *UPDATE;
  1073.  
  1074.  
  1075. ΓòÉΓòÉΓòÉ 7.1.3. OS/2 Header Files ΓòÉΓòÉΓòÉ
  1076.  
  1077. Instead of using the SELECTOROF macro in the OS2DEF.H header file, use one of 
  1078. the following two macros to obtain the selector of a 16:16 address: 
  1079.  
  1080.   #define SELECTOROF(p)   (((PUSHORT)&(p))[1])
  1081.   OR
  1082.   #define SELECTOROF(p)   ((ULONG)(p)>>16)
  1083.  
  1084. If you use the selector returned from one of the above macros with the OFFSETOF 
  1085. and MAKEP macros in the OS2DEF.H header file, you can successfully convert a 
  1086. 16:16 address to a 0:32 address. 
  1087.  
  1088.  
  1089. ΓòÉΓòÉΓòÉ 7.1.4. Workplace Shell Header Files ΓòÉΓòÉΓòÉ
  1090.  
  1091. The following #defines are needed by wpQueryNameClashOptions but are not in the 
  1092. Workplace Shell header files: 
  1093.  
  1094.   #define NO_NAMECLASH_RENAME   0x10
  1095.   #define NO_NAMECLASH_APPEND   0x20
  1096.   #define NO_NAMECLASH_REPLACE  0x40
  1097.   #define NO_NAMECLASH_DIALOG   0x80
  1098.  
  1099. You should define them when using wpQueryNameClashOptions. 
  1100.  
  1101.  
  1102. ΓòÉΓòÉΓòÉ 7.2. Sample Programs ΓòÉΓòÉΓòÉ
  1103.  
  1104. This section describes the sample programs available with the Warp Toolkit. 
  1105.  
  1106. The sample programs are categorized as follows: 
  1107.  
  1108.      BIDI 
  1109.      Multimedia 
  1110.      OS/2 
  1111.      Presentation Manager 
  1112.      REXX 
  1113.      Workplace Shell 
  1114.  
  1115.  Most sample programs are written in C language and demonstrate the use of the 
  1116.  functions of the control program (CP, base OS/2 operating system), the PM 
  1117.  interface, the multimedia (MM) interface, and the Workplace Shell (WPS). 
  1118.  
  1119.  Each sample program serves as a template that can be easily modified for your 
  1120.  own purposes. These programs let you investigate the best way to implement 
  1121.  your own application requirements. 
  1122.  
  1123.  Some of the sample programs require specific hardware devices. When 
  1124.  appropriate, the hardware is listed following the program descriptions. 
  1125.  Without these devices, you can still compile and run the sample programs; 
  1126.  however, you might not receive the full effect of the program. For example, if 
  1127.  a multimedia sample program has audio, you will not hear it unless you have an 
  1128.  audio adapter supported by OS/2 multimedia and speakers installed. 
  1129.  
  1130.  Most samples also contain the overhead routines necessary to create a PM 
  1131.  application, as well as stubs for the basic menu items that all applications 
  1132.  should have. 
  1133.  
  1134.  There are many comments within the source code that clarify technical 
  1135.  information. 
  1136.  
  1137.  Note:  Names of the sample programs, in most cases, correspond to their 
  1138.         Toolkit subdirectory names. 
  1139.  
  1140.  
  1141. ΓòÉΓòÉΓòÉ 7.2.1. Starting Sample Programs ΓòÉΓòÉΓòÉ
  1142.  
  1143. There are two ways to start a sample program: 
  1144.  
  1145.      From the Desktop: 
  1146.  
  1147.       When installed, all sample programs (with the exception of the 
  1148.       bidirectional samples, some of the Multimedia samples, and some of the 
  1149.       Workplace Shell samples) appear in the sample programs folders located 
  1150.       within the Toolkit folder. To start a sample program, open the Toolkit 
  1151.       folder, open the folder representing the type of samples you wish to 
  1152.       execute, then select the appropriate sample program. 
  1153.  
  1154.      From an OS/2 command prompt: 
  1155.  
  1156.       Change to the subdirectory where the sample is located, type the name of 
  1157.       the executable file and press Enter. 
  1158.  
  1159.  Most samples include a description file (or makefile) you can use to build the 
  1160.  sample yourself. The name of the makefile is either MAKEFILE or filename.MAK, 
  1161.  where filename refers to the name of the sample. To build the sample, 
  1162.  
  1163.    1. Go to an OS/2 command prompt and change to the subdirectory where the 
  1164.       makefile is located. 
  1165.  
  1166.       You must execute these commands from the subdirectory where the makefile 
  1167.       is located in order to build the sample correctly. 
  1168.  
  1169.    2. Enter one of the following, depending on the name of the makefile: 
  1170.  
  1171.           When the name of the makefile is MAKEFILE, type: 
  1172.  
  1173.                         NMAKE
  1174.  
  1175.           When the name of the makefile is filename.MAK, type: 
  1176.  
  1177.                         NMAKE /f filename.MAK
  1178.  
  1179.  For information about the NMAKE tool, refer to the OS/2 Tools Reference. 
  1180.  
  1181.  Note:  The makefile assumes that the IBM C Set ++ compiler is used for code 
  1182.         compilation. 
  1183.  
  1184.  
  1185. ΓòÉΓòÉΓòÉ 7.2.2. BIDI Sample Programs ΓòÉΓòÉΓòÉ
  1186.  
  1187. These samples demonstrate the use of the Bidirectional Language support 
  1188. available in the Arabic and Hebrew versions of OS/2. There are two sets of 
  1189. samples provided: one set for the Arabic language and the other set for the 
  1190. Hebrew language. For both languages, there are two samples: 
  1191.  
  1192.      STYLE 
  1193.      TELDIR 
  1194.  
  1195.  Note:  Programs that use the bidirectional support functions will run only on 
  1196.         the Arabic and Hebrew versions of the OS/2 operating system, which are 
  1197.         currently the only versions of the operating system that support these 
  1198.         features. 
  1199.  
  1200.  
  1201. ΓòÉΓòÉΓòÉ 7.2.2.1. STYLE Sample Program ΓòÉΓòÉΓòÉ
  1202.  
  1203. STYLE is a sample program that demonstrates the bidirectional language support 
  1204. features of PM controls and other system components. 
  1205.  
  1206. Note:  The Arabic versions of this sample (located in 
  1207.        \TOOLKIT\SAMPLES\BIDI\ARABIC), require the Arabic version of OS/2 to 
  1208.        run, and the Hebrew versions of this sample (located in 
  1209.        \TOOLKIT\SAMPLES\BIDI\HEBREW), require the Hebrew version of OS/2 to 
  1210.        run. 
  1211.  
  1212.  
  1213. ΓòÉΓòÉΓòÉ 7.2.2.2. TELDIR Sample Program ΓòÉΓòÉΓòÉ
  1214.  
  1215. TELDIR is a simple bilingual telephone directory application that demonstrates 
  1216. how language and orientation selections can be set dynamically by a 
  1217. "BIDI-aware" application. 
  1218.  
  1219. Note:  The Arabic versions of this sample require the Arabic version of OS/2 to 
  1220.        run, and the Hebrew versions of this sample require the Hebrew version 
  1221.        of OS/2 to run. 
  1222.  
  1223.  
  1224. ΓòÉΓòÉΓòÉ 7.2.3. Device Driver Sample Programs ΓòÉΓòÉΓòÉ
  1225.  
  1226. Physical device driver (PDD) and virtual device driver (VDD) samples are not 
  1227. included in the IBM Developer's Toolkit for OS/2 Warp, Version 3. See the 
  1228. Developer Connection Device Driver Kit (DDK) for device driver samples. 
  1229.  
  1230.  
  1231. ΓòÉΓòÉΓòÉ 7.2.4. Multimedia Sample Programs ΓòÉΓòÉΓòÉ
  1232.  
  1233. The Multimedia sample programs are as follows: 
  1234.  
  1235.      ADMCT 
  1236.      ASYMREC 
  1237.      AVCINST 
  1238.      CAPSAMP 
  1239.      CAPTION 
  1240.      CASECONV 
  1241.      CDMCIDRV 
  1242.      Control File Templates 
  1243.      CLOCK 
  1244.      CODEC 
  1245.      DIVE 
  1246.      DOUBPLAY 
  1247.      DUET1 
  1248.      DUET2 
  1249.      FSSHT 
  1250.      MCD Command Tables 
  1251.      MCDTEMP 
  1252.      MCISPY 
  1253.      MCISTRNG 
  1254.      MMBROWSE 
  1255.      MMOTTK 
  1256.      MOVIE 
  1257.      RECORDER 
  1258.      Short Control File Templates 
  1259.      SHRC 
  1260.      TUNER 
  1261.      ULTIEYES 
  1262.      ULIOT 
  1263.  
  1264.  
  1265. ΓòÉΓòÉΓòÉ 7.2.4.1. ADMCT Sample Program ΓòÉΓòÉΓòÉ
  1266.  
  1267. ADMCT (located in \TOOLKIT\SAMPLES\MM\ADMCT), is an example of a media control 
  1268. driver (MCD) that demonstrates how to control a streaming device. Streaming 
  1269. devices use the services of the sync/stream manager (SSM) of OS/2 multimedia to 
  1270. control the data stream from a source location to a target location. 
  1271.  
  1272.  
  1273. ΓòÉΓòÉΓòÉ 7.2.4.2. ASYMREC Sample Program ΓòÉΓòÉΓòÉ
  1274.  
  1275. ASYMREC (located in \TOOLKIT\SAMPLES\MM\ASYMREC), illustrates how to include 
  1276. asymmetric recording function in your multimedia application. Modules include 
  1277. source code extracted from the Video IN recorder application, which enables 
  1278. frame-step recording using Ultimotion compression techniques. 
  1279.  
  1280.  
  1281. ΓòÉΓòÉΓòÉ 7.2.4.3. AVCINST I/O Procedure Sample ΓòÉΓòÉΓòÉ
  1282.  
  1283. AVCINST (located in \TOOLKIT\SAMPLES\MM\AVCINST), illustrates how an 
  1284. application can install and remove an I/O procedure to use multimedia 
  1285. input/output (MMIO) file services. The AVC I/O procedure installation sample is 
  1286. a simple PM application that allows you to install or de-install the audio AVC 
  1287. I/O procedure, AVCAPROC.DLL. 
  1288.  
  1289. Hardware requirements: 
  1290.  
  1291.      Computer capable of running OS/2 Warp. 
  1292.  
  1293.  Software requirements: 
  1294.  
  1295.      OS/2 Warp 
  1296.      Multimedia support. 
  1297.  
  1298.  
  1299. ΓòÉΓòÉΓòÉ 7.2.4.4. CAPSAMP Sample Program ΓòÉΓòÉΓòÉ
  1300.  
  1301. CAPSAMP (located in \TOOLKIT\SAMPLES\MM\CAPSAMP), and the caption utility 
  1302. functions (located in \TOOLKIT\SAMPLES\MM\CAPDLL) are part of the sample 
  1303. captioning system provided with the Warp Toolkit. CAPSAMP demonstrates how 
  1304. captioning can be integrated into applications using caption files in 
  1305. conjunction with the caption utility functions. 
  1306.  
  1307. Hardware requirements: 
  1308.  
  1309.      Computer capable of running OS/2 Warp 
  1310.      Speaker or headphones 
  1311.      Sound card. 
  1312.  
  1313.  Software requirements: 
  1314.  
  1315.      OS/2 Warp 
  1316.      Multimedia support. 
  1317.  
  1318.  
  1319. ΓòÉΓòÉΓòÉ 7.2.4.5. CAPTION Sample Program ΓòÉΓòÉΓòÉ
  1320.  
  1321. CAPTION (located in \TOOLKIT\SAMPLES\MM\CAPTION), is part of the sample 
  1322. captioning system provided with the Warp Toolkit. The caption creation utility 
  1323. program creates a "caption" file. It enables a user to synchronize an audio 
  1324. file with a text file. 
  1325.  
  1326. This concept can be extended beyond audio and text to apply to many 
  1327. possibilities, such as synchronizing audio and video, or synchronizing video 
  1328. and text. 
  1329.  
  1330. Note:  In order for the Caption sample to work correctly, captioning must be 
  1331.        enabled in the operating system. To enable captioning proceed as 
  1332.        follows: 
  1333.  
  1334.         -  Open the Multimedia Setup object in the Multimedia folder 
  1335.         -  Go to the System page 
  1336.         -  Indicate a checkmark in the Captioning check box. 
  1337.  
  1338.  
  1339. ΓòÉΓòÉΓòÉ 7.2.4.6. CASECONV I/O Procedure Sample ΓòÉΓòÉΓòÉ
  1340.  
  1341. CASECONV (located in \TOOLKIT\SAMPLES\MM\CASECONV), provides a simple example 
  1342. of how to write a file format I/O procedure (without illustrating the use of 
  1343. data translation). This sample performs case conversion of text. 
  1344.  
  1345.  
  1346. ΓòÉΓòÉΓòÉ 7.2.4.7. CDMCT Sample Program ΓòÉΓòÉΓòÉ
  1347.  
  1348. CDMCT (located in \TOOLKIT\SAMPLES\MM\CDMCIDRV), is an example of a media 
  1349. control driver (MCD) that demonstrates how to control a non-streaming device. 
  1350. Non-streaming devices stream data within the device. 
  1351.  
  1352.  
  1353. ΓòÉΓòÉΓòÉ 7.2.4.8. Control File Templates ΓòÉΓòÉΓòÉ
  1354.  
  1355. The \TOOLKIT\SAMPLES\MM\CF subdirectory contains control file templates you can 
  1356. utilize when installing a program using MINSTALL. 
  1357.  
  1358.  
  1359. ΓòÉΓòÉΓòÉ 7.2.4.9. CLOCK Sample Program ΓòÉΓòÉΓòÉ
  1360.  
  1361. CLOCK (located in \TOOLKIT\SAMPLES\MM\CLOCK), illustrates the use of the memory 
  1362. playlist feature of OS/2 multimedia. The memory playlist feature provides for 
  1363. easy manipulation of multimedia in memory to create unique effects based on 
  1364. user input or other dynamic events. 
  1365.  
  1366. Hardware requirements: 
  1367.  
  1368.      Computer capable of running OS/2 Warp 
  1369.      Speaker or headphones 
  1370.      Sound card. 
  1371.  
  1372.  Software requirements: 
  1373.  
  1374.      OS/2 Warp 
  1375.      Multimedia support. 
  1376.  
  1377.  
  1378. ΓòÉΓòÉΓòÉ 7.2.4.10. CODEC Sample Program ΓòÉΓòÉΓòÉ
  1379.  
  1380. CODEC (located in \TOOLKIT\SAMPLES\MM\CODEC), illustrates how to write a CODEC 
  1381. procedure to include compression and decompression routines in your multimedia 
  1382. applications. A CODEC procedure operates on data within a file or buffer. 
  1383.  
  1384.  
  1385. ΓòÉΓòÉΓòÉ 7.2.4.11. DIVE Sample Program ΓòÉΓòÉΓòÉ
  1386.  
  1387. DIVE (located in \TOOLKIT\SAMPLES\MM\DIVE), illustrates the use of the direct 
  1388. interface video extensions. DIVE provides optimized blitting performance for 
  1389. motion video subsystems and applications that perform rapid screen updates in 
  1390. the OS/2 PM and full-screen environments. Using DIVE interfaces, applications 
  1391. can either write directly to video memory or use the DIVE blitter. The DIVE 
  1392. blitter will take advantage of acceleration hardware when present and 
  1393. applicable to the function being performed. 
  1394.  
  1395. Note:  The DIVE sample requires OS/2 Warp, Version 3 in order to execute 
  1396.        properly. The files for the samples will be installed when the samples 
  1397.        are selected, but Workplace Shell objects will not be created for them 
  1398.        if the installed operating system is not OS/2 Warp, Version 3. 
  1399.  
  1400. The OS/2 Warp color support defaults to 16 colors. This means that your setup 
  1401. needs to be updated, otherwise the DIVE sample will not run. 
  1402.  
  1403. The maximum window size of this sample has been limited to 640x480 because 
  1404. larger window sizes may cause excessive swapping on machines with less than 
  1405. 16MB. 
  1406.  
  1407. The DIVE sample that comes with this release of The Developer Connection for 
  1408. OS/2 will not work with the original DIVE.DLL file. For this release of the 
  1409. Warp Toolkit, an updated .DLL file is shipped with the sample. A .DLL file with 
  1410. equivalent function will be included in a future version of OS/2 Warp. 
  1411.  
  1412.  Hardware requirements: 
  1413.  
  1414.      Computer capable of running OS/2 Warp 
  1415.      SVGA (a screen mode of 640x480x256 constitutes a minimum SVGA system). 
  1416.  
  1417.  Software requirements: 
  1418.  
  1419.      OS/2 Warp 
  1420.      Multimedia support 
  1421.      Software motion video. 
  1422.  
  1423.  
  1424. ΓòÉΓòÉΓòÉ 7.2.4.12. DOUBPLAY Sample Program ΓòÉΓòÉΓòÉ
  1425.  
  1426. DOUBPLAY (located in \TOOLKIT\SAMPLES\MM\DOUBPLAY), allows an application to 
  1427. play audio files directly from application memory buffers. An array of multiple 
  1428. playlist structures can be constructed that combines playlist commands with 
  1429. data buffers to perform complex operations on multiple buffers. 
  1430.  
  1431. This sample takes a single wave file, MYWAVE.WAV, and plays it using a memory 
  1432. playlist. The playlist is constructed as a circular buffer composed of a series 
  1433. of small buffers, the sum of which may or may not be larger than the size of 
  1434. the .WAV file. This circular buffer is used to repeatedly play an audio file 
  1435. when the PLAY button is selected. As each buffer in the playlist is expended, 
  1436. the application refills the expended buffer with new data from the .WAV file. 
  1437. When all the buffers in the playlist have been expended, the playlist branches 
  1438. back to the first buffer to play the new data. This circular buffering process 
  1439. continues until the STOP button is selected or the application is closed. 
  1440.  
  1441. Hardware requirements: 
  1442.  
  1443.      Computer capable of running OS/2 Warp 
  1444.      Speakers or headphones 
  1445.      Sound Card. 
  1446.  
  1447.  Software requirements: 
  1448.  
  1449.      OS/2 Warp 
  1450.      Multimedia support. 
  1451.  
  1452.  
  1453. ΓòÉΓòÉΓòÉ 7.2.4.13. DUET1 Sample Program ΓòÉΓòÉΓòÉ
  1454.  
  1455. DUET1 (located in \TOOLKIT\SAMPLES\MM\DUET1), illustrates the OS/2 multimedia 
  1456. concept of device grouping and integrating multimedia into an application's 
  1457. help information. This sample demonstrates the concepts of grouping two 
  1458. streaming devices. 
  1459.  
  1460. Note:  The Streaming Device Duet sample (DUET1, located in 
  1461.        \TOOLKIT\SAMPLES\MM\DUET1) requires that the IBM M-Audio Capture and 
  1462.        Playback Adapter card be installed in order for the sample to execute 
  1463.        properly. 
  1464.  
  1465.  Hardware requirements: 
  1466.  
  1467.      Computer capable of running OS/2 Warp 
  1468.      Speaker or headphones 
  1469.      Sound card (capable of playing two mono wave files simultaneously such as 
  1470.       the IBM M-AUDIO card). 
  1471.  
  1472.  Software requirements: 
  1473.  
  1474.      OS/2 Warp 
  1475.      Multimedia support. 
  1476.  
  1477.  
  1478. ΓòÉΓòÉΓòÉ 7.2.4.14. DUET2 Sample Program ΓòÉΓòÉΓòÉ
  1479.  
  1480. DUET2 (located in \TOOLKIT\SAMPLES\MM\DUET2), illustrates the OS/2 multimedia 
  1481. concept of device grouping and integrating multimedia into an application's 
  1482. help information. This sample demonstrates how one of the devices in the 
  1483. multimedia device group can be a non-streaming device. 
  1484.  
  1485. Hardware requirements: 
  1486.  
  1487.      Computer capable of running OS/2 Warp 
  1488.      Speaker or headphones 
  1489.      Sound card 
  1490.      CD ROM. 
  1491.  
  1492.  Software requirements: 
  1493.  
  1494.      OS/2 Warp 
  1495.      Multimedia support. 
  1496.  
  1497.  
  1498. ΓòÉΓòÉΓòÉ 7.2.4.15. FSSHT Sample Program ΓòÉΓòÉΓòÉ
  1499.  
  1500. FSSHT (located in \TOOLKIT\SAMPLES\MM\FSSHT), contains a sample file system 
  1501. stream handler. 
  1502.  
  1503.  
  1504. ΓòÉΓòÉΓòÉ 7.2.4.16. MCD Command Tables ΓòÉΓòÉΓòÉ
  1505.  
  1506. Before a media control driver (MCD) can interpret a string command, the media 
  1507. device manager (MDM) must use a command table to change the string into an 
  1508. equivalent procedural command. Represented as resources to the driver, command 
  1509. tables are created using the RCDATA type of resource. The resource number of 
  1510. the RCDATA block is the device type number. The \TOOLKIT\SAMPLES\MM\MCDTBL 
  1511. subdirectory contains command tables for each of the following devices: 
  1512.  
  1513.      Amp Mixer 
  1514.      CD-ROM/XA 
  1515.      CD Audio 
  1516.      Digital Video 
  1517.      Sequencer 
  1518.      Videodisc 
  1519.      Wave Audio 
  1520.  
  1521.  If you want to support device-specific messages, you must create a device- 
  1522.  specific command table. 
  1523.  
  1524.  
  1525. ΓòÉΓòÉΓòÉ 7.2.4.17. MCDTEMP Template ΓòÉΓòÉΓòÉ
  1526.  
  1527. MCDTEMP (located in \TOOLKIT\SAMPLES\MM\MCDTEMP), provides a basic template to 
  1528. write a media control driver (MCD). Refer to the \ADMCT and \CDMCIDRV 
  1529. subdirectories for specific streaming or to the multimedia I/O (MMIO) samples. 
  1530.  
  1531.  
  1532. ΓòÉΓòÉΓòÉ 7.2.4.18. MCISPY Sample Program ΓòÉΓòÉΓòÉ
  1533.  
  1534. MCISPY (located in \TOOLKIT\SAMPLES\MM\MCISPY), monitors media control 
  1535. interface messages that are exchanged between applications and the OS/2 
  1536. multimedia subsystem. 
  1537.  
  1538. In addition to teaching you about multimedia messages, MCISPY also serves as a 
  1539. powerful debugging aid. 
  1540.  
  1541. The MCISpy sample must be manually set up. To do so, follow these steps: 
  1542.  
  1543.    1. Copy the MDM.DLL file located in the \MMOS2\DLL subdirectory to the 
  1544.       \TOOLKIT\DLL subdirectory. 
  1545.  
  1546.    2. Use the DLLRNAME tool from C Set ++ for OS/2 to rename the copy to 
  1547.       MCI.DLL (type DLLRNAME MDM.DLL MDM=MCI). 
  1548.  
  1549.    3. Place the stub MDM.DLL provided with the Warp Toolkit in the LIBPATH so 
  1550.       that it is recognized prior to the MDM.DLL file located in the \MMOS2\DLL 
  1551.       subdirectory. The source code for the stub MDM.DLL is included in the 
  1552.       MCISpy sample. 
  1553.  
  1554.    4. Restart your system. 
  1555.  
  1556.  Note:  Driver notifications may not be visible in releases prior to OS/2 Warp, 
  1557.         Version 3. These notifications include all multimedia messages routed 
  1558.         through mdmDriverNotify(). 
  1559.  
  1560.  Hardware requirements: 
  1561.  
  1562.      Computer capable of running OS/2 Warp. 
  1563.  
  1564.  Software requirements: 
  1565.  
  1566.      Multimedia support 
  1567.      OS/2 Warp 
  1568.  
  1569.       Note:  The files for the samples will be installed when the samples are 
  1570.              selected, but Workplace Shell objects will not be created for them 
  1571.              if the installed operating system is not OS/2 Warp, Version 3. 
  1572.  
  1573.  
  1574. ΓòÉΓòÉΓòÉ 7.2.4.19. MCISTRNG Sample Program ΓòÉΓòÉΓòÉ
  1575.  
  1576. MCISTRNG (located in \TOOLKIT\SAMPLES\MM\MCISTRNG), serves as a powerful 
  1577. testing and debugging tool that enables developers writing media drivers to 
  1578. control their devices at the application level. The string test sample 
  1579. illustrates how an application uses the interpretive string interface provided 
  1580. by the media control interface. 
  1581.  
  1582. This sample also illustrates how notification messages are returned from the 
  1583. media drivers to the application. 
  1584.  
  1585. Hardware requirements: 
  1586.  
  1587.      Computer capable of running OS/2 Warp. 
  1588.  
  1589.  Software requirements: 
  1590.  
  1591.      OS/2 Warp 
  1592.      Multimedia support. 
  1593.  
  1594.  
  1595. ΓòÉΓòÉΓòÉ 7.2.4.20. MMBROWSE Sample Program ΓòÉΓòÉΓòÉ
  1596.  
  1597. MMBROWSE (located in \TOOLKIT\SAMPLES\MM\MMBROWSE), illustrates how to use the 
  1598. multimedia I/O (MMIO) subsystem to install I/O procedures for various image 
  1599. formats and then convert these image formats to OS/2 bit maps. 
  1600.  
  1601. Hardware requirements: 
  1602.  
  1603.      Computer capable of running OS/2 Warp. 
  1604.  
  1605.  Software requirements: 
  1606.  
  1607.      OS/2 Warp 
  1608.      Multimedia support. 
  1609.  
  1610.  
  1611. ΓòÉΓòÉΓòÉ 7.2.4.21. MMOTTK I/O Procedure Sample ΓòÉΓòÉΓòÉ
  1612.  
  1613. MMOTTK (located in \TOOLKIT\SAMPLES\MM\MMIOPROC), provides an example of how to 
  1614. write an I/O procedure for use with image file formats. This sample enables 
  1615. file format transparency for M-Motion still video files and illustrates the use 
  1616. of data translation. 
  1617.  
  1618.  
  1619. ΓòÉΓòÉΓòÉ 7.2.4.22. MOVIE Sample Program ΓòÉΓòÉΓòÉ
  1620.  
  1621. MOVIE (located in \TOOLKIT\SAMPLES\MM\MOVIE), demonstrates device control of a 
  1622. software motion video device. 
  1623.  
  1624. This sample also illustrates how to cut, copy, paste, and delete movie data 
  1625. from an application. 
  1626.  
  1627. A movie can be played in an application-defined window or in the system default 
  1628. window provided by the software motion video subsystem. 
  1629.  
  1630. Note:  If you installed the Warp Toolkit from diskette, the Movie sample 
  1631.        (located in \TOOLKIT\SAMPLES\MM\MOVIE) does not contain the MOVIE.AVI 
  1632.        file necessary to execute the application. Copy any .AVI file from the 
  1633.        \MMOS2\MOVIES subdirectory on the drive you have Multimedia installed. 
  1634.        The .AVI file should be copied to the \TOOLKIT\SAMPLES\MM\MOVIE 
  1635.        subdirectory on which you have the Warp Toolkit samples installed, and 
  1636.        the target name of the file should be MOVIE.AVI. 
  1637.  
  1638.  Hardware requirements: 
  1639.  
  1640.      Computer capable of running OS/2 Warp 
  1641.      Speakers or headphones 
  1642.      Sound card 
  1643.      SVGA (a screen mode of 640x480x256 constitutes a minimum SVGA system). 
  1644.  
  1645.  Software requirements: 
  1646.  
  1647.      OS/2 Warp 
  1648.      Multimedia support 
  1649.      Software motion video. 
  1650.  
  1651.  
  1652. ΓòÉΓòÉΓòÉ 7.2.4.23. RECORDER Sample Program ΓòÉΓòÉΓòÉ
  1653.  
  1654. RECORDER (located in \TOOLKIT\SAMPLES\MM\RECORDER), illustrates the concept of 
  1655. recording audio through the media control interface and how to query a device 
  1656. to find out the recording capabilities. 
  1657.  
  1658. This sample also illustrates how to change the audio recording and audio device 
  1659. properties, such as bits per sample, samples per second, input level, and input 
  1660. source. 
  1661.  
  1662. Hardware requirements: 
  1663.  
  1664.      Computer capable of running OS/2 Warp 
  1665.      Speaker or headphones 
  1666.      Sound card. 
  1667.  
  1668.  Software requirements: 
  1669.  
  1670.      OS/2 Warp 
  1671.      Multimedia support. 
  1672.  
  1673.  
  1674. ΓòÉΓòÉΓòÉ 7.2.4.24. Short Control File Templates ΓòÉΓòÉΓòÉ
  1675.  
  1676. The \TOOLKIT\SAMPLES\MM\SHORTCF subdirectory contains a simple example of 
  1677. control file templates you can use when installing a program using MINSTALL. 
  1678.  
  1679.  
  1680. ΓòÉΓòÉΓòÉ 7.2.4.25. SHRC Sample Program ΓòÉΓòÉΓòÉ
  1681.  
  1682. SHRC (located in \TOOLKIT\SAMPLES\MM\SHRC), provides a sample stream handler 
  1683. resource file. 
  1684.  
  1685.  
  1686. ΓòÉΓòÉΓòÉ 7.2.4.26. TUNER Sample Program ΓòÉΓòÉΓòÉ
  1687.  
  1688. TV tuner cards allow a desktop PC to receive and display broadcasted television 
  1689. signals. TUNER (located in \TOOLKIT\SAMPLES\MM\TUNER), provides an example of 
  1690. how to use the MCI string interface to control a tuner card. 
  1691.  
  1692. Once the application is running, the display window can be sized and a TV 
  1693. channel can be selected. The channel can be selected through up/down buttons or 
  1694. a text entry field displayed both at the bottom of the window. 
  1695.  
  1696. Hardware requirements: 
  1697.  
  1698.      Computer capable of running OS/2 Warp 
  1699.      TV tuner card (such as the WinTV Basic). 
  1700.  
  1701.  Software requirements: 
  1702.  
  1703.      OS/2 Warp 
  1704.      Multimedia support 
  1705.      Appropriate drivers for installed tuner card. 
  1706.  
  1707.  Note:  A TV tuner card is handled as a digital video device by the multimedia 
  1708.  subsystem. A typical system has one or more digital video devices, with 
  1709.  digital video 1 assigned to software motion video. By default this sample 
  1710.  opens the digital video 2 device. If the tuner card is not assigned to digital 
  1711.  video 2 an alternate device ordinal must be provided at the command line with 
  1712.  the following format: 
  1713.  
  1714.     /d=digitalvideoxx
  1715.  
  1716.  where: 
  1717.  
  1718.  xx        Is a two digit number, padded on the left with zero. 
  1719.  
  1720.  For example: 
  1721.  
  1722.     /d=digitalvideo03
  1723.  
  1724.  Most TV tuner cards, such as the Hauppauge WinTV card, support several video 
  1725.  sources. The connector number that corresponds to the tuner video source is 
  1726.  dependent on the hardware and may not be the same for each tuner card. The 
  1727.  connector number is not changed by this sample. Instead, it uses the default 
  1728.  connector number that is set by the Multimedia Setup program. 
  1729.  
  1730.  
  1731. ΓòÉΓòÉΓòÉ 7.2.4.27. ULTIEYES Sample Program ΓòÉΓòÉΓòÉ
  1732.  
  1733. ULTIEYES (located in \TOOLKIT\SAMPLES\MM\ULTIEYES), demonstrates the use of 
  1734. non-linear video by displaying segments from a movie clip in response to input 
  1735. from the mouse. 
  1736.  
  1737. Hardware requirements: 
  1738.  
  1739.      SVGA (a screen mode of 640x480x256 constitutes a minimum SVGA system). 
  1740.  
  1741.  Software requirements: 
  1742.  
  1743.      Multimedia support 
  1744.      Software motion video 
  1745.      OS/2 Warp 
  1746.  
  1747.       Note:  The files for the samples will be installed when the samples are 
  1748.              selected, but Workplace Shell objects will not be created for them 
  1749.              if the installed operating system is not OS/2 Warp, Version 3. 
  1750.  
  1751.  
  1752. ΓòÉΓòÉΓòÉ 7.2.4.28. ULIOT I/O Procedure Sample ΓòÉΓòÉΓòÉ
  1753.  
  1754. ULIOT (located in \TOOLKIT\SAMPLES\MM\ULTIMOIO), provides a detailed example of 
  1755. what you need to consider when writing I/O procedures for software motion video 
  1756. file formats. This sample program includes CODEC support and illustrates how to 
  1757. integrate common and file-format-specific code to support multiple I/O 
  1758. procedures. 
  1759.  
  1760.  
  1761. ΓòÉΓòÉΓòÉ 7.2.5. OS/2 Sample Programs ΓòÉΓòÉΓòÉ
  1762.  
  1763. The OS/2 sample programs are as follows: 
  1764.  
  1765.      CLOCK 
  1766.      DLLAPI 
  1767.      EAS 
  1768.      HANOI 
  1769.      NPIPE 
  1770.      QUEUES 
  1771.      SEMAPH 
  1772.      SORT 
  1773.      VMM 
  1774.      WORMS 
  1775.  
  1776.  
  1777. ΓòÉΓòÉΓòÉ 7.2.5.1. CLOCK Sample Program ΓòÉΓòÉΓòÉ
  1778.  
  1779. CLOCK (located in \TOOLKIT\SAMPLES\OS2\TIMESERV), demonstrates how to use and 
  1780. implement window timers and system-resource timers. This sample program 
  1781. displays both an analog and digital clock. To simulate elapsed seconds, the 
  1782. main PM thread repeatedly sets a one-second window timer that updates the 
  1783. current time. 
  1784.  
  1785. CLOCK features an audible and visual alarm that the user can set. When the time 
  1786. expires, the sample makes use of the DOS timer services and notifies the user 
  1787. by sounding an alarm and displaying a message box. 
  1788.  
  1789.  
  1790. ΓòÉΓòÉΓòÉ 7.2.5.2. DLLAPI Sample Program ΓòÉΓòÉΓòÉ
  1791.  
  1792. DLLAPI (located in \TOOLKIT\SAMPLES\OS2\DLLAPI), demonstrates how to write and 
  1793. use a dynamic link library (DLL). The sample has a .DLL file and an executable 
  1794. (.EXE) file. The .DLL provides the 32-bit API function that is called by the 
  1795. .EXE file. 
  1796.  
  1797. The .DLL uses protected memory on its shared data, and exception management to 
  1798. validate the pointer parameters for a 32-bit API function. The .EXE file 
  1799. demonstrates how to handle a divide-by-zero exception, and calls the function 
  1800. with invalid pointer parameters, followed by a call with valid pointer 
  1801. parameters. 
  1802.  
  1803.  
  1804. ΓòÉΓòÉΓòÉ 7.2.5.3. EAS Sample Program ΓòÉΓòÉΓòÉ
  1805.  
  1806. EAS (located in \TOOLKIT\SAMPLES\OS2\EAEDIT), demonstrates a multithreaded 
  1807. application that retrieves, modifies, or sorts files by their extended 
  1808. attribute value. Included in this sample program are PM procedures for dialog 
  1809. boxes and a standard client window. The sample lets the user select an extended 
  1810. attribute file name from a list, or enter a new name in an entry field. The 
  1811. user can select the extended attribute type from a table. 
  1812.  
  1813.  
  1814. ΓòÉΓòÉΓòÉ 7.2.5.4. HANOI Sample Program ΓòÉΓòÉΓòÉ
  1815.  
  1816. HANOI (located in \TOOLKIT\SAMPLES\OS2\HANOI), demonstrates a multithreaded 
  1817. application with the familiar "towers of Hanoi" puzzle. When the sample program 
  1818. is started, the user sees three poles (A, B, and C). Initially, pole A has on 
  1819. it a stack of disks starting with the largest disks on the bottom and 
  1820. succeeding smaller disks on the top. The main thread handles the PM interface 
  1821. and lets the user start or stop the Hanoi routine. It also lets the user reset 
  1822. the number of working disks. The second thread is created when the Start item 
  1823. is selected from the Options menu. This thread starts the recursive execution 
  1824. of the Hanoi algorithm, runs in the background, and moves and paints the disks. 
  1825. All disks end up on pole C. 
  1826.  
  1827.  
  1828. ΓòÉΓòÉΓòÉ 7.2.5.5. NPIPE Sample Program ΓòÉΓòÉΓòÉ
  1829.  
  1830. NPIPE (located in \TOOLKIT\SAMPLES\OS2\NPIPE), demonstrates two-way 
  1831. communication between two unrelated processes using named pipe functions. This 
  1832. sample program implements the game of TicTacToe with two executable files: 
  1833.  
  1834.      CLINPIPE.EXE (the client) 
  1835.  
  1836.       The client is the user.  For example, the client will: 
  1837.  
  1838.         -  Connect to the server and acknowledge successful connection 
  1839.            (START_MSG). 
  1840.         -  Notify the server through a pipe when it wishes to begin play 
  1841.            (YOU_FIRST or CLIENT_MOVE). 
  1842.         -  Notify the server when it wishes to quit (CLIENT_QUIT). 
  1843.         -  Send the server a valid move when requested by the server 
  1844.            (CLIENT_MOVE). 
  1845.  
  1846.      SVRNPIPE.EXE (the server) 
  1847.  
  1848.       The server is the computer.  For example, the server will: 
  1849.  
  1850.         -  Connect a pipe to the client through which play will be executed 
  1851.            (START_MSG) upon the initial request of a client to play. 
  1852.         -  Play with many clients simultaneously. 
  1853.         -  Notify the client of the server's move, and request a valid move 
  1854.            from the client (SERVER_MOVE). 
  1855.         -  Notify the client of game-end (WIN_SERVER, WIN_CLIENT, WIN_DRAW). 
  1856.  
  1857.  
  1858. ΓòÉΓòÉΓòÉ 7.2.5.6. QUEUES Sample Program ΓòÉΓòÉΓòÉ
  1859.  
  1860. QUEUES (located in \TOOLKIT\SAMPLES\OS2\QUEUES), demonstrates interprocess 
  1861. communications (IPC) using the 32-bit queue component. It consists of two 
  1862. executable programs: 
  1863.  
  1864.      SVRQUEUE.EXE 
  1865.  
  1866.       Creates an IPC queue; a named, shared-memory buffer for queue elements; 
  1867.       and a shared, named, mutex (mutual exclusive) semaphore. After 
  1868.       initializing the queue, SVRQUEUE starts a thread to read from the queue, 
  1869.       prints the contents of the messages read from the queue, and terminates 
  1870.       at the user's request. 
  1871.  
  1872.      CLIQUEUE.EXE 
  1873.  
  1874.       Opens the queue and accesses the shared-memory element buffer and mutex 
  1875.       semaphore, and starts a thread to write to the queue. CLIQUEUE requests a 
  1876.       string of data from the user, allocates a shared-memory element from the 
  1877.       buffer, puts the string in the shared-memory element, then uses an event 
  1878.       semaphore to direct the thread to write the element to the queue. 
  1879.       CLIQUEUE terminates at the user's request. 
  1880.  
  1881.  
  1882. ΓòÉΓòÉΓòÉ 7.2.5.7. SEMAPH Sample Program ΓòÉΓòÉΓòÉ
  1883.  
  1884. SEMAPH (located in \TOOLKIT\SAMPLES\OS2\SEMAPH), demonstrates the use of mutex 
  1885. and event semaphores. In the sample, several threads share access to the same 
  1886. resource. 
  1887.  
  1888. A mutex semaphore is used to guarantee that only one thread has access to the 
  1889. resource at a time.  A mutex semaphore is used to check for a stop event or for 
  1890. a user signal to give up the resource. 
  1891.  
  1892. An event semaphore is used to signal the thread to give up the resource. An 
  1893. event semaphore can be posted by the user, or run in auto mode, in which case 
  1894. the event semaphore will be posted at fixed time intervals. 
  1895.  
  1896. Each thread can be displayed as a square of a unique color. Similarly, the 
  1897. resource can be displayed as a rectangle; its color is that of the first thread 
  1898. that owns it. 
  1899.  
  1900.  
  1901. ΓòÉΓòÉΓòÉ 7.2.5.8. SORT Sample Program ΓòÉΓòÉΓòÉ
  1902.  
  1903. SORT (located in \TOOLKIT\SAMPLES\OS2\SORT), demonstrates the use of multiple 
  1904. threads by performing multiple sorts at the same time. Each sorting algorithm 
  1905. runs from a separate thread. The main thread is used to handle the main 
  1906. window's messages, while the routine that updates the display is run from 
  1907. another thread. 
  1908.  
  1909.  
  1910. ΓòÉΓòÉΓòÉ 7.2.5.9. VMM Sample Program ΓòÉΓòÉΓòÉ
  1911.  
  1912. VMM (located in \TOOLKIT\SAMPLES\OS2\VMM), demonstrates the use of virtual 
  1913. memory by using new memory-management functions to allocate and set the 
  1914. attributes of memory. Users can read or write data into memory and reset the 
  1915. attributes using a dialog box. The memory manager protects or opens the virtual 
  1916. memory to read or write operations according to the different attributes of 
  1917. each memory block. To free memory, the user enters the address of the memory. 
  1918.  
  1919.  
  1920. ΓòÉΓòÉΓòÉ 7.2.5.10. WORMS Sample Program ΓòÉΓòÉΓòÉ
  1921.  
  1922. WORMS (located in \TOOLKIT\SAMPLES\OS2\CONSOLIO), demonstrates how to call 
  1923. video (Vio), keyboard (Kbd), and mouse (Mou) 16-bit function from a 32-bit code 
  1924. segment. This sample program displays earth worms aimlessly moving about the 
  1925. screen. Each worm is a separate thread with a unique color combination and 
  1926. movement pattern. When one worm encounters another worm, the color attribute of 
  1927. the worm is set to red. The user can add or delete worms using the keyboard or 
  1928. mouse. 
  1929.  
  1930.  
  1931. ΓòÉΓòÉΓòÉ 7.2.6. Presentation Manager Sample Programs ΓòÉΓòÉΓòÉ
  1932.  
  1933. The PM sample programs are as follows: 
  1934.  
  1935.      CLIPBRD 
  1936.      DIALOG 
  1937.      DRAGDROP 
  1938.      GRAPHIC 
  1939.      HELLO 
  1940.      IMAGE32 
  1941.      IPF 
  1942.      JIGSAW 
  1943.      PALETTE 
  1944.      PRINT 
  1945.      STYLE 
  1946.      TEMPLATE 
  1947.  
  1948.  
  1949. ΓòÉΓòÉΓòÉ 7.2.6.1. CLIPBRD Sample Program ΓòÉΓòÉΓòÉ
  1950.  
  1951. CLIPBRD (located in \TOOLKIT\SAMPLES\PM\CLIPBRD), demonstrates how to provide a 
  1952. PM interface to the clipboard. Initially, this sample program displays a 
  1953. standard window with a bit map. The user can cut and paste rectangular images 
  1954. in this window, using the system clipboard as an intermediate storage area. 
  1955.  
  1956.  
  1957. ΓòÉΓòÉΓòÉ 7.2.6.2. DIALOG Sample Program ΓòÉΓòÉΓòÉ
  1958.  
  1959. DIALOG (located in \TOOLKIT\SAMPLES\PM\DIALOG), demonstrates how to associate a 
  1960. dialog box with a standard window. The dialog box is defined as a dialog 
  1961. template in a resource file. 
  1962.  
  1963. This sample program also demonstrates how to implement entry fields, push 
  1964. buttons, and message boxes. Message boxes are only displayed for error 
  1965. conditions. 
  1966.  
  1967.  
  1968. ΓòÉΓòÉΓòÉ 7.2.6.3. DRAGDROP Sample Program ΓòÉΓòÉΓòÉ
  1969.  
  1970. DRAGDROP (located in \TOOLKIT\SAMPLES\PM\DRAGDROP), demonstrates how to move 
  1971. files between directories by using the drag and drop operation of direct 
  1972. manipulation. This sample program creates a drop-down list box that contains a 
  1973. scrollable file name list of the current directory. 
  1974.  
  1975. To change the current directory, select the Window option and type in the 
  1976. directory name, and press Enter. To change the current directory to one higher 
  1977. in the directory tree, select File from the menu bar, then Open. The Select 
  1978. subdirectory window appears. Type in the name of the subdirectory, then select 
  1979. OK. 
  1980.  
  1981. DRAGDROP must be started twice, so that there are two running instances of the 
  1982. sample. Then, using a mouse, the user can: 
  1983.  
  1984.      Display a directory file list in the first sample 
  1985.      Select a file name from the second sample 
  1986.      Drag the file name (using mouse button 2) to the directory in the first 
  1987.       sample 
  1988.      Drop the file name into the directory in the first sample. 
  1989.  
  1990.  The file is now moved to the chosen directory of the first sample. 
  1991.  
  1992.  
  1993. ΓòÉΓòÉΓòÉ 7.2.6.4. GRAPHIC Sample Program ΓòÉΓòÉΓòÉ
  1994.  
  1995. GRAPHIC (located in \TOOLKIT\SAMPLES\PM\GRAPHIC), demonstrates how to use 
  1996. default viewing transformation functions of the PM. It also demonstrates how to 
  1997. use an asynchronous drawing thread. This sample program lets the user load 
  1998. metafiles using a dialog box. The dialog box contains a Help push button. When 
  1999. the Help push button is activated, it provides instructions on loading a 
  2000. metafile from another directory. The user also can print a metafile or graphic 
  2001. circle. 
  2002.  
  2003.  
  2004. ΓòÉΓòÉΓòÉ 7.2.6.5. HELLO Sample Program ΓòÉΓòÉΓòÉ
  2005.  
  2006. HELLO (located in \TOOLKIT\SAMPLES\PM\STDWND), demonstrates how to create and 
  2007. display a standard window that conforms to the Common User Access requirements. 
  2008.  
  2009. This sample program also demonstrates how to use resources defined in a script 
  2010. file. Initially, HELLO displays a standard window with the text "Hello". The 
  2011. Options conditional-cascaded menu contains three items. Each item paints a 
  2012. different text string in the window. 
  2013.  
  2014. This sample also shows how to override the Ctrl+C key combination. 
  2015.  
  2016.  
  2017. ΓòÉΓòÉΓòÉ 7.2.6.6. IMAGE32 Sample Program ΓòÉΓòÉΓòÉ
  2018.  
  2019. IMAGE32 (located in \TOOLKIT\SAMPLES\PM\PORTING), demonstrates how to migrate 
  2020. from an existing OS/2 16-bit application to a 32-bit application. 
  2021.  
  2022. This sample also demonstrates how to display an image using the GpiImage 
  2023. function. The image data comes from a file that the user must select using the 
  2024. standard File Open menu item. 
  2025.  
  2026.  
  2027. ΓòÉΓòÉΓòÉ 7.2.6.7. IPF Sample Program ΓòÉΓòÉΓòÉ
  2028.  
  2029. IPF (located in \TOOLKIT\SAMPLES\PM\IPF), demonstrates how to use the IPF to 
  2030. create an online document. This sample program features customized windows that 
  2031. display text, graphics, and animation. 
  2032.  
  2033. Two files are associated with this sample: 
  2034.  
  2035.      IPF online document (INF) 
  2036.  
  2037.       The .INF file is the compiled IPF document. The source contains tagging 
  2038.       that defines different types of windows. Tags that control the format and 
  2039.       display of text also are included in this file. 
  2040.  
  2041.      OS/2 dynamic link library (DLL) 
  2042.  
  2043.       The .DLL file is the compiled OS/2 C language source for the code object 
  2044.       that is called when the .INF file is read at run time. A series of bit 
  2045.       maps used for animation are included in the .DLL. 
  2046.  
  2047.  
  2048. ΓòÉΓòÉΓòÉ 7.2.6.8. JIGSAW Sample Program ΓòÉΓòÉΓòÉ
  2049.  
  2050. JIGSAW (located in \TOOLKIT\SAMPLES\PM\BMPSAMP), demonstrates the use of bit 
  2051. maps in a graphics application. This sample provides a jigsaw puzzle based on 
  2052. the decomposition of an arbitrary bit map loaded from a file. The user can 
  2053. jumble the pieces, then drag them with a mouse. The image can be made smaller, 
  2054. larger, scrolled horizontally, or scrolled vertically. 
  2055.  
  2056. This sample program also demonstrates how to call the Information Presentation 
  2057. Facility help hook, to create instance and associate the instance with the 
  2058. active application window. 
  2059.  
  2060.  
  2061. ΓòÉΓòÉΓòÉ 7.2.6.9. PALETTE Sample Program ΓòÉΓòÉΓòÉ
  2062.  
  2063. PALETTE (located in \TOOLKIT\SAMPLES\PM\PALETTE), demonstrates 32-bit graphics 
  2064. functions including: 
  2065.  
  2066.      Creating a window using a custom palette and animation. 
  2067.      Using menus with switches, and modifying the menu text. 
  2068.      Using multiple threads and semaphores in the Presentation Manager 
  2069.       environment. 
  2070.      Displaying graphics on the screen using outline fonts and clip paths. 
  2071.      Online help. 
  2072.  
  2073.  When started, PALETTE displays a standard window with a large OS/2 logo in the 
  2074.  foreground. You have the ability to change the OS/2 logo to the IBM logo. If 
  2075.  you resize the window, the logo is scaled and redrawn to fit the new window 
  2076.  size. You can also control the animation speed from the PALETTE menu. 
  2077.  
  2078.  The animation is performed by: 
  2079.  
  2080.      Creating a clip path which represents the outline of the logo characters 
  2081.       (which are displayed using an outline font). 
  2082.      Setting the clip path to the presentation space. 
  2083.      Drawing a series of lines to the presentation space. 
  2084.  
  2085.  Each line drawn with an incremental color index. Palette animation is 
  2086.  performed using the 32-bit GpiAnimatePalette call. 
  2087.  
  2088.  In order to PALETTE to remain responsive to system and user messages, no 
  2089.  animation is performed on the main window procedure thread. A second thread is 
  2090.  created from which all animation is performed. 
  2091.  
  2092.  Hardware requirements: 
  2093.  
  2094.      XGA adapter 
  2095.      1MG of RAM 
  2096.      32-bit graphics engine. 
  2097.  
  2098.  
  2099. ΓòÉΓòÉΓòÉ 7.2.6.10. PRINT Sample Program ΓòÉΓòÉΓòÉ
  2100.  
  2101. PRINT (located in \TOOLKIT\SAMPLES\PM\PRINT), demonstrates how to display and 
  2102. print text, metafiles, and bit maps. It also demonstrates how to: 
  2103.  
  2104.      Query and display system printer configurations 
  2105.      Interact with printer drivers to change job properties 
  2106.      Query and display available printer and screen fonts 
  2107.      Query and display printer forms and setup margins 
  2108.      Selectively print part or all of a document on an asynchronous thread. 
  2109.  
  2110.  
  2111. ΓòÉΓòÉΓòÉ 7.2.6.11. STYLE Sample Program ΓòÉΓòÉΓòÉ
  2112.  
  2113. STYLE (located in \TOOLKIT\SAMPLES\PM\CONTROLS), demonstrates a PM application 
  2114. that conforms with the Common User Access requirements and implements the 
  2115. following controls: 
  2116.  
  2117.      Container 
  2118.      Notebook 
  2119.      Slider 
  2120.      Spin button 
  2121.      Value set 
  2122.  
  2123.  This sample program also demonstrates secondary windows, such as dialogs and 
  2124.  message boxes. The program lets the user edit and save text files. The source 
  2125.  for online help, in IPF format, is also provided. 
  2126.  
  2127.  STYLE also demonstrates the detection of a font that does not conform to the 
  2128.  International Standards Organization (ISO 9241). When the user is running the 
  2129.  sample on an ISO-compliant monitor and selects a non-compliant font in the 
  2130.  standard font dialog, a message box is displayed to inform the user. 
  2131.  
  2132.  The code in STYLE is structured so that the addition of a new function is 
  2133.  handled in an efficient manner. For example, to add a new command to an 
  2134.  existing menu, you need only add the command to the resource file, then add 
  2135.  the appropriate message-processing routines to the STY_USER.C file. 
  2136.  
  2137.  
  2138. ΓòÉΓòÉΓòÉ 7.2.6.12. TEMPLATE Sample Program ΓòÉΓòÉΓòÉ
  2139.  
  2140. TEMPLATE (located in \TOOLKIT\SAMPLES\PM\TEMPLATE), demonstrates the structure 
  2141. common to all PM applications. This sample program shows how to structure an 
  2142. application that has more than one source file. It includes the initialization 
  2143. file (which is used and then discarded), the resident code, and the 
  2144. non-resident code that is loaded only when needed. 
  2145.  
  2146. TEMPLATE also demonstrates how to: 
  2147.  
  2148.      Create a standard window 
  2149.      Load resources from a resource file 
  2150.      Create a dialog box and a button control 
  2151.      Display a message box 
  2152.      Open a file 
  2153.      Close a file 
  2154.      Print text 
  2155.      Paint a window 
  2156.      Process a message from a menu 
  2157.      Run a thread in the background 
  2158.      Exit a process. 
  2159.  
  2160.  Several online help files are also provided in IPF format. 
  2161.  
  2162.  
  2163. ΓòÉΓòÉΓòÉ 7.2.7. REXX Sample Programs ΓòÉΓòÉΓòÉ
  2164.  
  2165. The REXX sample programs are as follows: 
  2166.  
  2167.      CALLREXX 
  2168.      DEVINFO 
  2169.      PMREXX 
  2170.      REXXCALC 
  2171.      REXXUTIL 
  2172.      RXMACDLL 
  2173.  
  2174.  
  2175. ΓòÉΓòÉΓòÉ 7.2.7.1. CALLREXX Sample Program ΓòÉΓòÉΓòÉ
  2176.  
  2177. CALLREXX demonstrates how a C-language application calls a REXX application. To 
  2178. run the REXX application BACKWARD.FNC, CALLREXX.C issues RexxStart. RexxStart 
  2179. calls the REXX interpreter and passes it a parameter string. BACKWARD.FNC 
  2180. returns a result string to the C-language application. 
  2181.  
  2182.  
  2183. ΓòÉΓòÉΓòÉ 7.2.7.2. DEVINFO Sample Program ΓòÉΓòÉΓòÉ
  2184.  
  2185. DEVINFO issues DosDevConfig and returns the data in a collection of compound 
  2186. variables when all available items are requested, or a single variable when 
  2187. only one item is requested. This is a REXX subcommand handler and variable pool 
  2188. example. This sample can be run in an OS/2 full-screen session, an OS/2 
  2189. text-window session, or in PMREXX. 
  2190.  
  2191.  
  2192. ΓòÉΓòÉΓòÉ 7.2.7.3. PMREXX Sample Program ΓòÉΓòÉΓòÉ
  2193.  
  2194. PMREXX provides a PM window in which the user can display the output from a 
  2195. REXX procedure or from any programs called by the REXX procedure. The window 
  2196. has an entry field into which the user can type. 
  2197.  
  2198.  
  2199. ΓòÉΓòÉΓòÉ 7.2.7.4. REXXCALC Sample Program ΓòÉΓòÉΓòÉ
  2200.  
  2201. REXXCALC illustrates the steps required to develop enhanced applications. 
  2202.  
  2203.  
  2204. ΓòÉΓòÉΓòÉ 7.2.7.5. REXXUTIL Sample Program ΓòÉΓòÉΓòÉ
  2205.  
  2206. REXXUTIL demonstrates a set of external functions packaged in a dynamic link 
  2207. library, including: 
  2208.  
  2209.      Use of OS/2 system functions in REXX external functions 
  2210.      Techniques for passing large amounts of data to a REXX program using REXX 
  2211.       compound variables as arrays. 
  2212.  
  2213.  REXXUTIL runs on 32-bit OS/2. It can be run in an OS/2 full-screen session, an 
  2214.  OS/2 window session, or in PMREXX. 
  2215.  
  2216.  
  2217. ΓòÉΓòÉΓòÉ 7.2.7.6. RXMACDLL Sample Program ΓòÉΓòÉΓòÉ
  2218.  
  2219. RXMACDLL demonstrates the macrospace interface with the two following 
  2220. C-language programs and that are compiled into two separate dynamic link 
  2221. libraries (DLLs): 
  2222.  
  2223.      MACRO.C 
  2224.  
  2225.       Contains REXX external functions, which perform REXX macrospace 
  2226.       operations. 
  2227.  
  2228.      RXNLSINF.C 
  2229.  
  2230.       Contains a REXX external function that provides information related to 
  2231.       national language support (for example, as a currency symbol and 
  2232.       separator). 
  2233.  
  2234.  RXMACDLL.CMD uses MACRO.DLL to load NLSMONEY.CMD into the macrospace and calls 
  2235.  NLSMONEY.CMD several times to format currency amounts. NLSMONEY.CMD formats 
  2236.  the amounts according to the specifications provided by RXNLSINF.DLL. 
  2237.  
  2238.  RXMACDLL can be run in an OS/2 full-screen session, an OS/2 window session, or 
  2239.  in PMREXX. 
  2240.  
  2241.  
  2242. ΓòÉΓòÉΓòÉ 7.2.8. SOM Sample Programs ΓòÉΓòÉΓòÉ
  2243.  
  2244. Note:  The ANIMALS and TP (text processing) sample programs are not included in 
  2245.        the Warp Toolkit. Refer to the SOMobjects Developer Toolkit for 
  2246.        accessing them and obtaining information on them. 
  2247.  
  2248.  
  2249. ΓòÉΓòÉΓòÉ 7.2.9. Workplace Shell Sample Programs ΓòÉΓòÉΓòÉ
  2250.  
  2251. The Workplace Shell sample programs are as follows: 
  2252.  
  2253.      BROWSE 
  2254.      CAR 
  2255.      CARPP 
  2256.      TEXTFLDR 
  2257.      WPCAR 
  2258.      WPSTUTOR 
  2259.      WSFILE 
  2260.  
  2261.  Note:  All Workplace Shell samples require SOM 2.1 in order to execute 
  2262.         properly. 
  2263.  
  2264.  
  2265. ΓòÉΓòÉΓòÉ 7.2.9.1. BROWSE Sample Program ΓòÉΓòÉΓòÉ
  2266.  
  2267. BROWSE displays file system objects in a hexadecimal or text format in a PM 
  2268. window. Open a view of an object is the default format (hexadecimal).  This is 
  2269. done by: 
  2270.  
  2271.      Dropping a file system object on the Browse-O-Matic icon 
  2272.      Double-clicking mouse button 1 and entering the name of a file to view. 
  2273.  
  2274.  A view of an object can be opened in either hexadecimal or text format by 
  2275.  selecting the Open Text View or Open Hex View item of the Open 
  2276.  conditional-cascaded menu. This is done by single-clicking mouse button 2 on 
  2277.  the Browse-O-Matic icon. The default view format can be changed in the 
  2278.  Settings notebook page by selecting: 
  2279.  
  2280.    1. Settings menu item 
  2281.  
  2282.    2. Menu notebook tab 
  2283.  
  2284.    3. ~Open choice of the "Available menus" drop-down list box 
  2285.  
  2286.    4. Settings... push button 
  2287.  
  2288.    5. ~Settings, Open ~Hex View or Open ~Text View option of the "Default 
  2289.       action" drop-down list box. 
  2290.  
  2291.  
  2292. ΓòÉΓòÉΓòÉ 7.2.9.2. CAR Sample Program ΓòÉΓòÉΓòÉ
  2293.  
  2294. CAR demonstrates how to create a Workplace Shell object using basic 
  2295. object-oriented programming techniques and the SOM, including: 
  2296.  
  2297.      Initializing an object 
  2298.      Adding settings pages to an object 
  2299.      Saving and restoring the state of an object 
  2300.      Modifying an object's context menus (adding and deleting menu items) 
  2301.      Querying object class data 
  2302.      Processing context menu items 
  2303.      Implementing settings page dialog processing 
  2304.      Handling exceptions. 
  2305.  
  2306.  
  2307. ΓòÉΓòÉΓòÉ 7.2.9.3. CARPP Sample Program ΓòÉΓòÉΓòÉ
  2308.  
  2309. CARPP is a C++ version of the CAR sample program. CARPP demonstrates how to 
  2310. create a Workplace Shell object using basic object-oriented programming 
  2311. techniques and the SOM, including: 
  2312.  
  2313.      Initializing an object 
  2314.      Adding settings pages to an object 
  2315.      Saving and restoring the state of an object 
  2316.      Modifying an object's context menus (adding and deleting menu items) 
  2317.      Querying object class data 
  2318.      Processing context menu items 
  2319.      Implementing settings page dialog processing 
  2320.      Handling exceptions. 
  2321.  
  2322.  
  2323. ΓòÉΓòÉΓòÉ 7.2.9.4. TEXTFLDR Sample Program ΓòÉΓòÉΓòÉ
  2324.  
  2325. TEXTFLDR allows only plain text objects to be placed into the folder. Objects 
  2326. that are not plain text, that is, control- or extended-ASCII characters, are 
  2327. rejected. Objects are considered to be plain text if the "Associated type" 
  2328. field of the Settings notebook is set to plain text. If there is no associated 
  2329. type set, the first 500 bytes are placed into the folder. 
  2330.  
  2331.  
  2332. ΓòÉΓòÉΓòÉ 7.2.9.5. WPCAR Sample Program ΓòÉΓòÉΓòÉ
  2333.  
  2334. WPCAR, the Workplace Shell WPDataFile subclass sample, is the C++ version of 
  2335. the CAR sample. 
  2336.  
  2337.  
  2338. ΓòÉΓòÉΓòÉ 7.2.9.6. WPSTUTOR Sample Program ΓòÉΓòÉΓòÉ
  2339.  
  2340. WPSTUTOR displays the order in which object methods are invoked by the 
  2341. Workplace Shell. When a sample object's class method is executed, the method's 
  2342. name and a description of its function are displayed in a PM window. The sample 
  2343. saves the object's title and its icon title backwards. 
  2344.  
  2345. This object class subclasses the WPDataFile class. Most Workplace Shell 
  2346. instance and class methods are overridden so that information about the methods 
  2347. can be displayed to the user. 
  2348.  
  2349. This sample is designed to be more of a tutorial for Workplace Shell 
  2350. programming than a programming example. 
  2351.  
  2352. Note:  The SHOWDESC.EXE file should be renamed to SHOWDESC.BAK (or something 
  2353.        else) to turn off the sample. Rename the file back to SHOWDESC.EXE to 
  2354.        turn the sample back on. 
  2355.  
  2356.  
  2357. ΓòÉΓòÉΓòÉ 7.2.9.7. WSFILE Sample Program ΓòÉΓòÉΓòÉ
  2358.  
  2359. WSFILE displays, creates, and installs Workplace objects of two classes: WSFILE 
  2360. and WSFOLDER. The WSFILE class is a subclass of the WPDataFile class, and the 
  2361. WSFOLDER class is a subclass of class WPFolder. 
  2362.  
  2363.  
  2364. ΓòÉΓòÉΓòÉ 7.3. Tools ΓòÉΓòÉΓòÉ
  2365.  
  2366. This section provides a brief description of each tool with just enough detail 
  2367. to get you started at the OS/2 command line. 
  2368.  
  2369. The tools are categorized as follows: 
  2370.  
  2371.      Development Tools 
  2372.      Bidirectional - BIDI 
  2373.      Presentation Manager - PM 
  2374.      Multimedia 
  2375.      SOM 
  2376.      Workplace Shell 
  2377.  
  2378.  For complete information about the tools described here, please refer to the 
  2379.  online OS/2 Tools Reference. 
  2380.  
  2381.  Note:  The Wave Doctor, previously available with the OS/2 Multimedia Toolkit 
  2382.         product, is not included in the Warp Toolkit. 
  2383.  
  2384.  
  2385. ΓòÉΓòÉΓòÉ 7.3.1. Development Tools ΓòÉΓòÉΓòÉ
  2386.  
  2387. The Developer tools help you develop OS/2 programs. As programmers, we tend to 
  2388. use such tools as they are needed, and the ones covered here are not likely to 
  2389. be used as much as the compiler and linker. Nonetheless, they are handy to 
  2390. have. Perhaps you will only use a few of them in your programming career, but 
  2391. it is important to know where you can find information about them, in the event 
  2392. you will ever need them. The tools included in this section are: 
  2393.  
  2394.      EXEHDR - Executable-Header Files 
  2395.      FWDSTAMP - Forwarders 
  2396.      IMPLIB - Import a Library 
  2397.      KwikINF - Quick Information 
  2398.      LINK386 
  2399.      MARKEXE 
  2400.      MKMSGF - Make Message File 
  2401.      MSGBIND - Message Binding 
  2402.      NMAKE 
  2403.      PACK and UNPACK 
  2404.      PACK2 and UNPACK2 
  2405.  
  2406.  
  2407. ΓòÉΓòÉΓòÉ 7.3.1.1. EXEHDR ΓòÉΓòÉΓòÉ
  2408.  
  2409. EXEHDR provides a listing of the contents of the executable-header file; it 
  2410. also provides a listing of the attributes of all segments in the file. 
  2411.  
  2412. Uses of EXEHDR include: 
  2413.  
  2414.      Determining whether a file is an application or a dynamic link library 
  2415.      Modifying and viewing the attributes set by the module definition file 
  2416.      Viewing the number and size of code and data segments. 
  2417.  
  2418.  
  2419. ΓòÉΓòÉΓòÉ 7.3.1.1.1. Starting EXEHDR ΓòÉΓòÉΓòÉ
  2420.  
  2421. To start EXEHDR from the command line, type: 
  2422.  
  2423.    EXEHDR [options] filename
  2424.  
  2425. where: 
  2426.  
  2427.  options        Is the name of the EXEHDR option that modifies the header file. 
  2428.                 Regardless of options, EXEHDR always generates a listing of the 
  2429.                 header file. 
  2430.  
  2431.  filename       Is the name of the application or dynamic link library file. 
  2432.                 You can specify any number of files. 
  2433.  
  2434.  
  2435. ΓòÉΓòÉΓòÉ 7.3.1.2. FWDSTAMP ΓòÉΓòÉΓòÉ
  2436.  
  2437. FWDSTAMP adds entry points, called forwarders, to a dynamic link library (.DLL) 
  2438. file. Forwarders point to API functions or other exported code or data. They 
  2439. contain an import reference so that the final target address of the forwarded 
  2440. entry is contained in a different module. A forwarder might be called an 
  2441. imported export. 
  2442.  
  2443. When a file has a fix-up to a forwarded entry point, the loader resolves that 
  2444. fix-up to the address of the entry point that the forwarder imports by 
  2445. traversing the chain of forwarders until the end of the chain (a non-forwarded 
  2446. export) is reached. All forwarders are implicitly exported. 
  2447.  
  2448. The imported entry point that a forwarder refers to may itself be another 
  2449. forwarder. The loader will process a chain of forwarders until a non-forwarder 
  2450. entry point is encountered. 
  2451.  
  2452. There is no run-time cost to forwarders; however, there is a slight load-time 
  2453. cost as the loader resolves forwarder chains with their final addresses. 
  2454.  
  2455.  
  2456. ΓòÉΓòÉΓòÉ 7.3.1.2.1. Using FWDSTAMP ΓòÉΓòÉΓòÉ
  2457.  
  2458. You use forwarders to combine several DLLs into one without having to relink 
  2459. old applications. For example, if MOUCALLS and VIOCALLS were combined into a 
  2460. single DLL called NEWLIB.DLL, then MOUCALLS and VIOCALLS could be replaced with 
  2461. special DLLs containing forwarders to NEWLIB.DLL. 
  2462.  
  2463.  
  2464. ΓòÉΓòÉΓòÉ 7.3.1.2.2. Starting FWDSTAMP ΓòÉΓòÉΓòÉ
  2465.  
  2466. To start FWDSTAMP from the command line, type: 
  2467.  
  2468.    FWDSTAMP infile deffile outfile
  2469.  
  2470. where: 
  2471.  
  2472.  infile      Specifies the name of the dynamic link library file that LINK386 
  2473.              created. Use the file-name extension of .DLL. 
  2474.  
  2475.  deffile     Specifies the name of the module definition file (.DEF) that 
  2476.              contains the forwarders. 
  2477.  
  2478.  outfile     Specifies the name of the .DLL file that will contain the added 
  2479.              forwarders. 
  2480.  
  2481.  Forwarders are specified in the module definition file so that an exported 
  2482.  name, which is also imported, is a forwarder. For example: 
  2483.  
  2484.      IMPORTS
  2485.       VIOMODEWAIT=NEWLIB.123
  2486.      EXPORTS
  2487.       VIOMODEWAIT @ 25
  2488.  
  2489.  In the example, a forwarder entry point for VIOMODEWAIT is created and 
  2490.  contains an import reference to NEWLIB.123. 
  2491.  
  2492.  
  2493. ΓòÉΓòÉΓòÉ 7.3.1.3. IMPLIB ΓòÉΓòÉΓòÉ
  2494.  
  2495. IMPLIB is used to generate an import library (.LIB) file. IMPLIB takes a module 
  2496. definition file (.DEF) as input. For each export definition in the .DEF file, 
  2497. IMPLIB generates a corresponding import definition. 
  2498.  
  2499. The .LIB file generated by IMPLIB is used as input to LINK386, which creates an 
  2500. executable (.EXE) file. The .LIB file provides LINK386 with information about 
  2501. imported dynamic link functions. 
  2502.  
  2503.  
  2504. ΓòÉΓòÉΓòÉ 7.3.1.3.1. Creating an IMPLIB ΓòÉΓòÉΓòÉ
  2505.  
  2506. Import libraries are created by IMPLIB and are used to link DLLs with 
  2507. applications. 
  2508.  
  2509. Import libraries are similar in some respects to standard libraries: 
  2510.  
  2511.      You specify import libraries and standard libraries in the same 
  2512.       command-line field of LINK386. 
  2513.      Both types of libraries resolve external references at link time. 
  2514.  
  2515.  However, import libraries differ from standard libraries in that they contain 
  2516.  no executable code. Rather, they identify the DLLs where the executable code 
  2517.  can be found at run time. 
  2518.  
  2519.  Creating import libraries is an extra step. Nevertheless, import libraries are 
  2520.  recommended for use with all DLLs for two reasons: 
  2521.  
  2522.      IMPLIB automates much of the program creation process for you. To use 
  2523.       IMPLIB, you need to supply the .DEF file you already created for the 
  2524.       dynamic link library. Without an import library, you must create a second 
  2525.       .DEF file that explicitly defines all needed functions in the dynamic 
  2526.       link library. 
  2527.  
  2528.      Import libraries make it easier for one person to write a library and 
  2529.       another to write the application. Much of the linking process (linking 
  2530.       the .DLL file and creating the import library) can be done by the author 
  2531.       of the dynamic link library. The import library and associated .DLL file 
  2532.       can then be given as a unit to the person linking the application - that 
  2533.       person need not worry about creating a .DEF file. 
  2534.  
  2535.  
  2536. ΓòÉΓòÉΓòÉ 7.3.1.3.2. Starting IMPLIB ΓòÉΓòÉΓòÉ
  2537.  
  2538. You can start IMPLIB and specify all input from the command line. An example of 
  2539. the syntax follows: 
  2540.  
  2541.    IMPLIB [options] implibname {deffile... | dllfile...}
  2542.  
  2543. where: 
  2544.  
  2545.  options        Is the name of the option that modifies the output of IMPLIB. 
  2546.                 All options are described as follows: 
  2547.  
  2548.                                Syntax                   Description 
  2549.                                /HELP                    Displays a short 
  2550.                                                         summary of IMPLIB 
  2551.                                                         syntax. 
  2552.                                /IGNORECASE              Turns case sensitivity 
  2553.                                                         off. This is the 
  2554.                                                         default. 
  2555.                                /NOIGNORECASE            Turns case sensitivity 
  2556.                                                         on. 
  2557.                                /NOLOGO                  Suppresses the 
  2558.                                                         copyright screen when 
  2559.                                                         IMPLIB starts. 
  2560.  
  2561.  implibname     Is the name of the import library created. 
  2562.  
  2563.  deffile        Is one or more module definition files that export routines in 
  2564.                 the dynamic link library. 
  2565.  
  2566.  dllfile        Is one or more DLLs with exported entry points. 
  2567.  
  2568.  Note:  You can specify any number of either module definition files or DLLs. 
  2569.  
  2570.  The following command creates the import library, MYLIB.LIB, from the module 
  2571.  definition file, MYLIB.DEF: 
  2572.  
  2573.      IMPLIB MYLIB.LIB MYLIB.DEF
  2574.  
  2575.  
  2576. ΓòÉΓòÉΓòÉ 7.3.1.4. KwikINF ΓòÉΓòÉΓòÉ
  2577.  
  2578. KwikINF provides you with a quick and convenient method of accessing 
  2579. information in online documents stored in the OS/2 BOOKSHELF from anywhere on 
  2580. the Desktop, with the exception of DOS or WIN-OS/2 sessions. When KwikINF is 
  2581. started, you can search for a text string of your choice directly or through a 
  2582. pop-up window by pressing a user-selectable hot key. Until you configure 
  2583. KwikINF, your KwikINF hot key is Alt+Q. 
  2584.  
  2585.  
  2586. ΓòÉΓòÉΓòÉ 7.3.1.4.1. Starting KwikINF ΓòÉΓòÉΓòÉ
  2587.  
  2588. KwikINF is installed as a program object in the Development Tools folder. You 
  2589. start KwikINF by double-clicking on the KwikINF program object or by entering 
  2590. KwikINF from the command line of an OS/2 window. You can also start KwikINF 
  2591. automatically when you start OS/2 by placing a shadow of the KwikINF object in 
  2592. the Startup folder of the OS/2 System folder on the Desktop. You shadow an 
  2593. object by pressing Ctrl+Shift while dragging the object to the place where you 
  2594. wish to drop the shadow. 
  2595.  
  2596. Note:  You should not add KwikINF to your STARTUP.CMD if it is followed by an 
  2597.        EXIT statement. 
  2598.  
  2599.  You can start, terminate, and configure KwikINF from a command line in an OS/2 
  2600.  window by entering: 
  2601.  
  2602.      KwikINF [no options] [/C] [/T] [/?]
  2603.  
  2604.  where: 
  2605.  
  2606.  no options     Starts KwikINF.  After entering this command, the default 
  2607.                 KwikINF hot key (Alt+Q) is enabled. 
  2608.  
  2609.  /C             Opens the Configure KwikINF window.  Use this window to: 
  2610.  
  2611.                          Select another KwikINF hot key 
  2612.                          Select a default online document from the BOOKSHELF 
  2613.                          Search 
  2614.                          Select the activation behavior of the KwikINF window. 
  2615.  
  2616.  /T             Terminates KwikINF and disables the KwikINF hot key. 
  2617.  
  2618.  /?             Displays the enclosed information. 
  2619.  
  2620.  
  2621. ΓòÉΓòÉΓòÉ 7.3.1.4.2. Performing a Search ΓòÉΓòÉΓòÉ
  2622.  
  2623. How you initiate a search for information in online documents is dependent on 
  2624. where you are on the Desktop when you press the KwikINF hot key: 
  2625.  
  2626.      From an OS/2 full-screen session, a PM VIO or AVIO window, or PM MLE : 
  2627.  
  2628.       Position the cursor on the string you want to search for and press the 
  2629.       KwikINF hot key. KwikINF retrieves the word at the cursor. If you have 
  2630.       configured KwikINF to display the KwikINF window when the KwikINF hot key 
  2631.       is pressed, KwikINF automatically places the retrieved word in the 
  2632.       "Search string" entry field of the KwikINF window. When you press the 
  2633.       Search push button or the Enter key, KwikINF displays the information. If 
  2634.       you have configured KwikINF to bypass the KwikINF window when the KwikINF 
  2635.       hot key is pressed,  KwikINF automatically displays the information. 
  2636.  
  2637.      From a graphic-text PM window: 
  2638.  
  2639.       Press the KwikINF hot key, then type the string you want to search for in 
  2640.       the "Search string" entry field of the KwikINF window. The KwikINF 
  2641.       text-retrieval feature is not available from graphic-text PM windows. 
  2642.  
  2643.  
  2644. ΓòÉΓòÉΓòÉ 7.3.1.5. LINK386 ΓòÉΓòÉΓòÉ
  2645.  
  2646. LINK386 is used to translate object files and standard library files into a 
  2647. single executable file. LINK386 also generates DLLs and device drivers. 
  2648.  
  2649. LINK386 uses the following files as input: 
  2650.  
  2651.      One or more object files that are linked with any optional library files 
  2652.       to create the executable file.  Object files usually have a .OBJ 
  2653.       extension. 
  2654.  
  2655.      One or more library files. The library files contain object modules that 
  2656.       are linked to the object files to create the executable file. Library 
  2657.       files usually have a .LIB extension. 
  2658.  
  2659.      A module definition file. The module definition file provides information 
  2660.       to LINK386 about the executable file or dynamic link library file it is 
  2661.       creating. The module definition file usually has a .DEF extension. 
  2662.  
  2663.  LINK386 produces three types of output files: 
  2664.  
  2665.      An executable file that runs under OS/2 whenever you specify a module 
  2666.       definition file that has a NAME statement. The executable file usually 
  2667.       has a .EXE extension. 
  2668.  
  2669.      A dynamic link library file. A dynamic link library is produced whenever 
  2670.       you specify a module definition file that has a LIBRARY statement. A 
  2671.       dynamic link library file usually has a .DLL extension. 
  2672.  
  2673.      A device driver file. A virtual or physical device driver is produced 
  2674.       whenever you specify a module definition file that has the VIRTUAL DEVICE 
  2675.       or PHYSICAL DEVICE statements. A device driver file usually has a .DRV 
  2676.       extension. 
  2677.  
  2678.  Note:  Object-oriented compilers may change the name of a function internally. 
  2679.         LINK386 has the ability to change the name back to the original 
  2680.         function name when displaying error messages. 
  2681.  
  2682.  Three additional options are available with the Warp Toolkit: 
  2683.  
  2684.            /E[XEPACK:{1|2}]                   Causes pages of code and data in 
  2685.                                               the file to be compressed 
  2686.  
  2687.            /NOO[UTPUTONERROR]                 Prevents the LINK386 from 
  2688.                                               creating the executable file if 
  2689.                                               an error is encountered. 
  2690.  
  2691.            /NOS[ECTORALIGNCODE]               Turns off the alignment feature 
  2692.                                               provided through the LINK386 
  2693.                                               Linker. LINK386 normally aligns 
  2694.                                               pages of code on sector (512 
  2695.                                               byte) boundaries. This reduces 
  2696.                                               the time to load the pages when 
  2697.                                               the application is executed. The 
  2698.                                               /NOSECTORALIGNCODE option aligns 
  2699.                                               pages of code based on the value 
  2700.                                               used in the /ALIGN option. 
  2701.  
  2702.  
  2703. ΓòÉΓòÉΓòÉ 7.3.1.5.1. Starting LINK386 ΓòÉΓòÉΓòÉ
  2704.  
  2705. To link the object files and optional library files of your application, supply 
  2706. input to LINK386 by: 
  2707.  
  2708.      Responding to a series of LINK386 prompts 
  2709.      Typing commands directly at the command prompt 
  2710.      Creating a response file and entering the file name on the command line. 
  2711.  
  2712.  
  2713. ΓòÉΓòÉΓòÉ 7.3.1.5.2. Responding to LINK386 Prompts ΓòÉΓòÉΓòÉ
  2714.  
  2715. To start LINK386, type the following at the command prompt: 
  2716.  
  2717.    LINK386
  2718.  
  2719. Press Enter; a series of prompts appear, one at a time: 
  2720.  
  2721.   Object modules [.OBJ]:
  2722.   Run file [basename.EXE]:
  2723.   List file [NUL.MAP]:
  2724.   Libraries [.LIB]:
  2725.   Definitions file [NUL.DEF]:
  2726.  
  2727. You can respond using any combination of upper- and lowercase letters. Enter 
  2728. your responses by pressing Enter. 
  2729.  
  2730. To extend input to a new line, type a plus sign (+) as the last character on 
  2731. the current line. When the same prompt appears on a new line, you can continue. 
  2732.  
  2733. Note:  Do not split a file name across lines. 
  2734.  
  2735.  To select the default response to a prompt, press Enter. The next prompt 
  2736.  appears. 
  2737.  
  2738.  To select the default response to the current prompt and all remaining 
  2739.  prompts, type a semicolon and press Enter. 
  2740.  
  2741.  Note:  You must enter the name of at least one object file. 
  2742.  
  2743.  Responses within a command line are separated by commas. 
  2744.  
  2745.  LINK386 supplies the following default file extensions: .OBJ, .EXE, .MAP, 
  2746.  .LIB, and .DEF. You can override these extensions by typing the file extension 
  2747.  of your choice. 
  2748.  
  2749.  
  2750. ΓòÉΓòÉΓòÉ 7.3.1.5.3. Typing Input on the Command Line ΓòÉΓòÉΓòÉ
  2751.  
  2752. You can start LINK386 and specify all input from the command line.  An example 
  2753. of the LINK386 command is: 
  2754.  
  2755.    LINK386 [options] objfiles[,exefile,mapfile,libraries,deffile]
  2756.  
  2757. where: 
  2758.  
  2759.  options        Is the name of the LINK386 option. Any number of options may be 
  2760.                 specified. 
  2761.  
  2762.                 You can specify options anywhere on the response line, except 
  2763.                 before a comma at the end of a line of characters. If you want 
  2764.                 to specify more than one option, either group them at the end 
  2765.                 of a response, or specify them at the end of several responses. 
  2766.                 Each option must begin with a forward slash (/). 
  2767.  
  2768.                 To end the linking process at any point, press Ctrl+Break. 
  2769.  
  2770.  objfiles       Is the name of the object files that you want linked. 
  2771.  
  2772.  exefile        Is the output file that LINK386 created.  LINK386 produces 
  2773.                 either an executable file, a dynamic link library, or a device 
  2774.                 driver. If you do not specify a file name, LINK386 uses the 
  2775.                 name of the first object file. Use the file-name extension .EXE 
  2776.                 if it is an executable file, .DLL if it is a dynamic link 
  2777.                 library, and .DRV if it is a device driver. 
  2778.  
  2779.  mapfile        Is the name of the file that contains the map listing. The 
  2780.                 default file name extension is .MAP. Use the /M option to 
  2781.                 include public symbols in this file. Enter NULL if you do not 
  2782.                 want a map file. 
  2783.  
  2784.  libraries      Is a list of libraries for LINK386 to search. These libraries 
  2785.                 include standard or import libraries, but not DLLs. The library 
  2786.                 names should be separated by plus signs (+) or blank spaces. 
  2787.  
  2788.  deffile        Is the name of the module definition file for the executable 
  2789.                 file or dynamic link library. 
  2790.  
  2791.  
  2792. ΓòÉΓòÉΓòÉ 7.3.1.5.4. Creating a Response File ΓòÉΓòÉΓòÉ
  2793.  
  2794. To operate LINK386 using a response file, you must first create a file that 
  2795. contains the responses you want LINK386 to process. You can give the file any 
  2796. name, and create it with any text editor. 
  2797.  
  2798. Type the following command at the command prompt: 
  2799.  
  2800.    LINK386 @filename[.ext]
  2801.  
  2802. The @ symbol tells LINK386 that filename is a response file. If the file is not 
  2803. in the working directory, you must specify the path. Begin using a response 
  2804. file at any point on the LINK386 command line or at any LINK386 prompt. The 
  2805. file should contain responses in the same order as the LINK386 prompts. Each 
  2806. response needs to be on a separate line. If you choose to place responses on 
  2807. the same line, separate them with commas. 
  2808.  
  2809. If the file does not contain responses for all the prompts, LINK386 displays 
  2810. the appropriate prompt and waits for you to supply a response. End the response 
  2811. file with a semicolon. 
  2812.  
  2813. You can use special characters in the response file the same way you would use 
  2814. them in responses entered at the keyboard. 
  2815.  
  2816.  
  2817. ΓòÉΓòÉΓòÉ 7.3.1.5.5. Example of a Response File ΓòÉΓòÉΓòÉ
  2818.  
  2819. The response file in the following example instructs LINK386 to generate an 
  2820. executable file called FUN.EXE, and four object modules, FUN, SUN, RUN, and 
  2821. GAMES. 
  2822.  
  2823.   fun+sun+run+games /map
  2824.   fun.exe
  2825.   funlist
  2826.   ;
  2827.  
  2828. If you specify the file name, FUNLIST, LINK386 will generate a map file named 
  2829. FUNLIST.MAP. Adding the /MAP option will cause LINK386 to include the public 
  2830. symbols of the application in the map file. 
  2831.  
  2832.  
  2833. ΓòÉΓòÉΓòÉ 7.3.1.5.6. OS2STUB.EXE ΓòÉΓòÉΓòÉ
  2834.  
  2835. OS2STUB.EXE is included in the executable file created by LINK386, if the STUB 
  2836. statement is included in the module definition file. The stub is invoked 
  2837. whenever the file is executed under DOS. By default, LINK386 adds its own 
  2838. standard stub for this purpose. 
  2839.  
  2840.  
  2841. ΓòÉΓòÉΓòÉ 7.3.1.6. MARKEXE ΓòÉΓòÉΓòÉ
  2842.  
  2843. MARKEXE lets you view and set the type of application. The type of application 
  2844. identifies the OS/2 sessions in which a program can run. You can use MARKEXE in 
  2845. conjunction with programs that you have created using LINK386 or with programs 
  2846. created by some other means. 
  2847.  
  2848.  
  2849. ΓòÉΓòÉΓòÉ 7.3.1.6.1. Starting MARKEXE ΓòÉΓòÉΓòÉ
  2850.  
  2851. To start MARKEXE from the command line, type: 
  2852.  
  2853.    MARKEXE [force] [no] [display|dllinit|dllterm|type|lfns] filename
  2854.  
  2855. where: 
  2856.  
  2857.  force          Marks the executable file with OS/2 as the target operating 
  2858.                 system even though the file was marked for another operating 
  2859.                 system. Using force may produce internally inconsistent 
  2860.                 executable files. 
  2861.  
  2862.  no             Sets the command to the opposite condition. 
  2863.  
  2864.  display        Displays the application type in a message. This does not 
  2865.                 change the file. 
  2866.  
  2867.  dllinit        Sets per process initialization for the dynamic link library. 
  2868.  
  2869.  dllterm        Sets per process termination for the dynamic link library. 
  2870.  
  2871.  type           Specifies the application type of the executable file. It can 
  2872.                 be one of the following: 
  2873.  
  2874.                 WINDOWAPI                     Uses the API function provided by 
  2875.                                               the PM. It must be executed in a 
  2876.                                               PM window. 
  2877.  
  2878.                 WINDOWCOMPAT                  Runs (compatible) in a PM window 
  2879.                                               or in a full-screen session. 
  2880.  
  2881.                 NOTWINDOWCOMPAT               Executes the application in a 
  2882.                                               full-screen session only. 
  2883.  
  2884.                 UNSPECIFIED                   Runs an unspecified application 
  2885.                                               type in an OS/2 full-screen 
  2886.                                               session. 
  2887.  
  2888.                 If type is not specified, MARKEXE simply displays the current 
  2889.                 type of the executable file. 
  2890.  
  2891.  lfns           Specifies that the program supports long file names. 
  2892.  
  2893.  filename       Specifies the executable file to be marked. Any number of files 
  2894.                 can be marked. 
  2895.  
  2896.  MARKEXE does not modify the file if the application type of the executable 
  2897.  file is the same as the requested type. It displays the message "unchanged" to 
  2898.  indicate this. 
  2899.  
  2900.  
  2901. ΓòÉΓòÉΓòÉ 7.3.1.6.2. Viewing the Application Type ΓòÉΓòÉΓòÉ
  2902.  
  2903. You can view the application type of MYPROG.EXE by typing the following: 
  2904.  
  2905.    MARKEXE MYPROG.EXE
  2906.  
  2907. MARKEXE displays the type in a message that looks like this: 
  2908.  
  2909.    MYPROG.EXE: OS/2 2.1, WINDOWCOMPACT, LFNS
  2910.  
  2911.  
  2912. ΓòÉΓòÉΓòÉ 7.3.1.6.3. Setting the Application Type ΓòÉΓòÉΓòÉ
  2913.  
  2914. You can set the application type for MYPROG.EXE to WINDOWCOMPAT by typing: 
  2915.  
  2916.   MARKEXE windowcompat myprog.exe
  2917.  
  2918. If you have more than one executable file to be set to the same application 
  2919. type, you can supply the file names in a single command line, as in the 
  2920. following example: 
  2921.  
  2922.   MARKEXE windowcompat myprog.exe abc.exe xyz.exe
  2923.  
  2924.  
  2925. ΓòÉΓòÉΓòÉ 7.3.1.7. MKMSGF ΓòÉΓòÉΓòÉ
  2926.  
  2927. MKMSGF converts a text message file to an output (binary) message file that 
  2928. DosGetMessage uses to display messages. Text messages in OS/2 full-screen 
  2929. applications do not need to be loaded into memory with the application; they 
  2930. can reside on disk until needed. 
  2931.  
  2932. You can use the output message file by specifying a message file name and a 
  2933. message number in the DosGetMessage parameter list. The messages also can be 
  2934. bound to the executable file by MSGBIND. 
  2935.  
  2936.  
  2937. ΓòÉΓòÉΓòÉ 7.3.1.7.1. Creating a MKMSGF ΓòÉΓòÉΓòÉ
  2938.  
  2939. The input message file is a standard ASCII file that contains three types of 
  2940. lines: 
  2941.  
  2942.      Comment 
  2943.      Component identifier 
  2944.      Component message. 
  2945.  
  2946.  Comment lines are the first lines of a file and must begin with a semicolon. A 
  2947.  component-identifier is a three-character name identifier (for example, "DOS") 
  2948.  that precedes all MKMSGF message numbers.  Component-message lines consist of 
  2949.  a message header and an ASCII text message. 
  2950.  
  2951.  The following is an example of a text message source file. 
  2952.  
  2953.     ;This is an example
  2954.     ;of a text message
  2955.     ;file
  2956.     DOS
  2957.     DOS0100E: File not found
  2958.     DOS0101?:
  2959.     DOS0102H: Usage: del [drive:][path] filename
  2960.     DOS0103?:
  2961.     DOS0104I: 1% files copied
  2962.     DOS0105?:
  2963.     DOS0106W: Warning! All data will be erased!
  2964.     DOS0107?:
  2965.     DOS0108?:
  2966.     DOS0109P: Do you wish to apply these patches (Y or N)? %0
  2967.  
  2968.  where: 
  2969.  
  2970.  DOS0100E - DOS0109P      Identifies message numbers in sequence. The first 
  2971.                           three characters indicate the component identifier; 
  2972.                           the four-digit number indicates the message number, 
  2973.                           which is followed by a letter (described below), then 
  2974.                           a colon and blank space. If a message number is not 
  2975.                           used, type the number, end it with a question mark 
  2976.                           (?), and leave an empty entry. 
  2977.  
  2978.  E, H, I, P, W            Indicates the type of message. Categories include 
  2979.                           error (E), help (H), information (I), prompt (P), and 
  2980.                           warning (W). 
  2981.  
  2982.  %0                       Displays a prompt for input from the user, after 
  2983.                           which a carriage return and line feed are inserted. 
  2984.  
  2985.  
  2986. ΓòÉΓòÉΓòÉ 7.3.1.7.2. Starting MKMSGF ΓòÉΓòÉΓòÉ
  2987.  
  2988. To start MKMSGF from the command line, type: 
  2989.  
  2990.    MKMSGF infile outfile [option]
  2991.  
  2992. where: 
  2993.  
  2994.  infile      Specifies the input file that contains message profiles. 
  2995.  
  2996.  outfile     Names the outfile using the three-character component identifier 
  2997.              and the .MSG file extension; for example, MES.MSG. 
  2998.  
  2999.  option      Specifies the name of the option that modifies the output file. 
  3000.  
  3001.  
  3002. ΓòÉΓòÉΓòÉ 7.3.1.7.3. Starting MKMSGF Using a Message Control File ΓòÉΓòÉΓòÉ
  3003.  
  3004. A message control file is used to create multiple code page message files. An 
  3005. example of the command-line syntax follows: 
  3006.  
  3007.    MKMSGF @controlfile
  3008.  
  3009. where: 
  3010.  
  3011.  @controlfile   Is the name of the file that contains the control statements 
  3012.                 used to generate a multiple code page message file. 
  3013.  
  3014.                 The @ symbol is not part of the file name; it is a required 
  3015.                 delimiter. 
  3016.  
  3017.  An example of a message control file follows: 
  3018.  
  3019.      root.in root.out /Pcodepage
  3020.      /Ddbcsrang/ctryid /LlangID,VerId /V
  3021.      sub.001 sub1.out /Pcodepage
  3022.      /Ddbcsrang/ctryid /LlangID,VerId
  3023.      .
  3024.      .
  3025.      .
  3026.      sub.00n subn.out /Pcodepage
  3027.      /Ddbcsrang/ctryid /LlangID,VerId
  3028.  
  3029.  
  3030. ΓòÉΓòÉΓòÉ 7.3.1.8. MSGBIND ΓòÉΓòÉΓòÉ
  3031.  
  3032. When DosGetMessage is issued, it searches for the message in the message 
  3033. segment bound to the application's executable file, and then the application's 
  3034. message file on a hard disk. To ensure that a message is displayed quickly, you 
  3035. can bind it to the application's executable file by using the MSGBIND utility 
  3036. program. For each executable file, MSGBIND specifies which message files to 
  3037. scan; for each message file, it specifies which message to include in the 
  3038. executable file. 
  3039.  
  3040. Note:  The MSGBIND utility program supports the new compression format 
  3041.        available with LINK386 (/EXEPACK:2) and RC (-x2). 
  3042.  
  3043.  
  3044. ΓòÉΓòÉΓòÉ 7.3.1.8.1. Starting MSGBIND ΓòÉΓòÉΓòÉ
  3045.  
  3046. To start MSGBIND from the command line, type: 
  3047.  
  3048.    MSGBIND [infile]
  3049.  
  3050. where: 
  3051.  
  3052.  infile    Specifies the input file that contains the executable files, output 
  3053.            message files, and message numbers that are to be bound. 
  3054.  
  3055.  
  3056. ΓòÉΓòÉΓòÉ 7.3.1.8.2. Binding the Message File ΓòÉΓòÉΓòÉ
  3057.  
  3058. The input file contains three types of lines: 
  3059.  
  3060.      > Executable file 
  3061.      < Message file 
  3062.      Message numbers. 
  3063.  
  3064.  An example of an input file follows: 
  3065.  
  3066.     >PROG1.EXE
  3067.     <\MESSAGES\PRGMSG.MSG
  3068.     PRG0100
  3069.     PRG0101
  3070.     PRG0102
  3071.     <\MESSAGES\APP.MSG
  3072.     APP0001
  3073.     APP0002
  3074.     APP0003
  3075.  
  3076.  where: 
  3077.  
  3078.  >PROG1.EXE      Is the executable file to be modified 
  3079.  
  3080.  <               Defines the first message of a series to be bound, delimited 
  3081.                  either by the end of the series or a less-than symbol (<). 
  3082.  
  3083.  <\MESSAGES\PRGMSG.MSG and <\MESSAGES\APP.MSG Names the files containing the 
  3084.                  binary versions of the messages (created by MKMSGF) and their 
  3085.                  identifying numbers: the three-character component identifier 
  3086.                  and the four-digit message number. 
  3087.  
  3088.  
  3089. ΓòÉΓòÉΓòÉ 7.3.1.9. NMAKE ΓòÉΓòÉΓòÉ
  3090.  
  3091. NMAKE carries out all tasks needed to create or update a program after one or 
  3092. more of the source files in the program have changed. NMAKE compares the 
  3093. modification dates for one set of files - the target files - with those of 
  3094. another set of files - the source files.  NMAKE then carries out a given task 
  3095. only if a target file is out of date. NMAKE does not compile and link all files 
  3096. just because one file was updated. This can save time when creating programs 
  3097. that have many source files or that take several steps to complete. 
  3098.  
  3099. Note:  Previous releases of this program did not honor the documented behavior 
  3100.        of the .SUFFIXES pseudotarget, which lists all of the extensions that 
  3101.        NMAKE considers when searching for a rule to build a target that lacks 
  3102.        an explicit build rule. NMAKE now uses only the suffixes given in the 
  3103.        .SUFFIXES pseudotarget. If this more restrictive behavior causes some of 
  3104.        your targets not to be built, you can enable NMAKE to behave in its 
  3105.        former way by coding in the environment this variable: 
  3106.  
  3107.                 SET NMAKE=b
  3108.  
  3109.  
  3110. ΓòÉΓòÉΓòÉ 7.3.1.9.1. Using NMAKE ΓòÉΓòÉΓòÉ
  3111.  
  3112. To use NMAKE, create a description file (or makefile). A description file, in 
  3113. its simplest form, lists which files depend on others and which commands need 
  3114. to be executed if a file changes. You can create an NMAKE description file with 
  3115. any text editor that produces ASCII files. 
  3116.  
  3117. A description file looks like this: 
  3118.  
  3119.     targets... : dependants...Γöé
  3120.          command              ΓöéΓöÇΓöÇΓöÇΓöÇ description block
  3121.             :                 Γöé
  3122.     targets... : dependants...
  3123.          command
  3124.             :
  3125.  
  3126. A dependent relationship among files is defined in a description block. A 
  3127. description block indicates the relationship among various parts of the 
  3128. program. It contains commands to bring all components up-to-date. The 
  3129. description file can contain any number of description blocks. 
  3130.  
  3131. Use NMAKE description files for creating backup files, configuring data files, 
  3132. and running programs when data files are modified. 
  3133.  
  3134.  
  3135. ΓòÉΓòÉΓòÉ 7.3.1.9.2. Starting NMAKE ΓòÉΓòÉΓòÉ
  3136.  
  3137. You can start NMAKE and specify all input from the command line. An example of 
  3138. the syntax follows: 
  3139.  
  3140.    NMAKE [options] [macrodefinitions] [targets] [/F filename]
  3141.  
  3142. where: 
  3143.  
  3144.  options               Is the name of the option that modifies the action of 
  3145.                        NMAKE. 
  3146.  
  3147.  macrodefinitions      Is the name of the macro that replaces one text string 
  3148.                        for another in the description file. 
  3149.  
  3150.  targets               Is the name of one or more target files you want NMAKE 
  3151.                        to create. If you do not list any targets, NMAKE creates 
  3152.                        the first target in the description file. 
  3153.  
  3154.  /F filename           Is the name of the option that specifies filename as the 
  3155.                        name of the description file to use. If a dash (-) is 
  3156.                        entered instead of a file name, NMAKE reads a 
  3157.                        description file from the standard input device. 
  3158.  
  3159.  
  3160. ΓòÉΓòÉΓòÉ 7.3.1.10. PACK and UNPACK ΓòÉΓòÉΓòÉ
  3161.  
  3162. PACK reduces the size of a file by compressing its data. You can use PACK for a 
  3163. single file or a group of files, thereby reducing the disk space required for 
  3164. your OS/2 application. UNPACK restores a compressed file to its original size 
  3165. and copies it to a specified directory. 
  3166.  
  3167.  
  3168. ΓòÉΓòÉΓòÉ 7.3.1.10.1. Starting PACK ΓòÉΓòÉΓòÉ
  3169.  
  3170. You can start PACK with a single command from the command line. The input 
  3171. required can be specified in one of two following methods: 
  3172.  
  3173.      Method 1: You can type the names of all the files you want to compress 
  3174.       directly in the command line. 
  3175.      Method 2: You can type the name of a single file that contains a list of 
  3176.       all the files you want to compress. 
  3177.  
  3178.  When using PACK, select the method that is suitable for you. Include the drive 
  3179.  and path if the files are not in the working directory. You can specify file 
  3180.  names with any combination of uppercase and lowercase letters. File-name 
  3181.  extensions are not required; however, if you specify a file name that has an 
  3182.  extension, also type the extension. 
  3183.  
  3184.  Examples of the command-line syntax follow: 
  3185.  
  3186.   Method 1:
  3187.      PACK sourcefile [packedfile]
  3188.                      [/H:headerpath\|/H:headerfile|/H:headerpath\headerfile]
  3189.                      [/D:headerdate] [/T:headertime] [/C] [/A] [/R]
  3190.  
  3191.   Method 2:
  3192.      PACK listfile [packedfile] /L
  3193.                    [/H:headerpath\|/H:headerfile|/H:headerpath\headerfile]
  3194.                    [/D:headerdate] [/T:headertime] [/C]
  3195.  
  3196.  where: 
  3197.  
  3198.  sourcefile          Specifies the name of the file you want packed 
  3199.                      (compressed). This parameter is required. Include the 
  3200.                      drive and path if the file is not in the working 
  3201.                      directory. Global file-name characters are permitted. 
  3202.  
  3203.                      When the data is compressed, the name of the source file 
  3204.                      is placed in the header of the compressed file and is used 
  3205.                      as the destination file name during unpacking. 
  3206.  
  3207.  listfile            Specifies the name of the file that contains a list of 
  3208.                      files that are to be compressed. When naming a list file, 
  3209.                      do not use global file-name characters. 
  3210.  
  3211.                      For information about list files, see Creating a List 
  3212.                      File. 
  3213.  
  3214.  packedfile          Specifies the name of the file that will contain the 
  3215.                      compressed data. Files that contain compressed data can be 
  3216.                      recognized by the @ symbol as the last character in the 
  3217.                      file name. If you do not specify this parameter, PACK 
  3218.                      places the compressed data in sourcefile and modifies its 
  3219.                      name to contain the @ symbol. 
  3220.  
  3221.  /H:headerpath\ or /H:headerfile or /H:headerpath\headerfile These parameters 
  3222.                      can be used separately or paired. 
  3223.  
  3224.                      /H:headerpath\                     Specifies the 
  3225.                                                         destination path (drive 
  3226.                                                         letters are not 
  3227.                                                         permitted) to be placed 
  3228.                                                         in the header of the 
  3229.                                                         file that contains the 
  3230.                                                         compressed data. Unless 
  3231.                                                         this path is overridden 
  3232.                                                         with the UNPACK 
  3233.                                                         command, it will be the 
  3234.                                                         destination path when 
  3235.                                                         the file is 
  3236.                                                         uncompressed. 
  3237.                                                         Headerpath must end 
  3238.                                                         with a backslash (\). 
  3239.  
  3240.                      /H:headerfile                      Specifies the name of 
  3241.                                                         the file to be placed 
  3242.                                                         in the header of the 
  3243.                                                         compressed file. This 
  3244.                                                         file name will be used 
  3245.                                                         as the destination file 
  3246.                                                         for the uncompressed 
  3247.                                                         data and cannot be 
  3248.                                                         overridden. 
  3249.  
  3250.                                                         If a header file name 
  3251.                                                         is not specified, PACK 
  3252.                                                         automatically uses 
  3253.                                                         sourcefile as the name 
  3254.                                                         of the file that is 
  3255.                                                         placed in the header of 
  3256.                                                         the compressed file. 
  3257.  
  3258.                      /H:headerpath\headerfile           Specifies that both a 
  3259.                                                         destination path and a 
  3260.                                                         destination file name 
  3261.                                                         are to be placed in the 
  3262.                                                         header of the file that 
  3263.                                                         has the compressed 
  3264.                                                         data. 
  3265.  
  3266.  /D:headerdate       Records the date in the header of the file that has the 
  3267.                      compressed data, and also in the destination file when it 
  3268.                      is uncompressed. 
  3269.  
  3270.                      The date must follow the format /D:MM-DD-YYYY.  For 
  3271.                      example: /D:08-20-1991 and /D:12-30-2010. 
  3272.  
  3273.  /T:headertime       Records the time in the header of the file that has the 
  3274.                      compressed data, and also in the destination file when it 
  3275.                      is uncompressed. 
  3276.  
  3277.                      The time must follow the format /T:HH.MM. For example 
  3278.                      /T:02.06 and /T:14.54. Hour 00 represents 12 a.m. and hour 
  3279.                      12 represents 12 p.m. 
  3280.  
  3281.  /A                  Adds data from sourcefile to the data in packedfile. 
  3282.  
  3283.                      The source file can be either in a compressed or 
  3284.                      uncompressed state. If the source file is in an 
  3285.                      uncompressed state, the data is compressed before being 
  3286.                      added to the file containing the compressed data. 
  3287.  
  3288.  /C                  Specifies that the current path be placed in the header of 
  3289.                      the file that contains the compressed data. When the 
  3290.                      UNPACK command is used, this path will be the destination 
  3291.                      path for the file that contains the uncompressed data. 
  3292.  
  3293.                      You cannot use /C when the headerpath is used. 
  3294.  
  3295.  /L                  Indicates that listfile is a list file. A list file is not 
  3296.                      compressed; it simply contains a listing of the names of 
  3297.                      the files that are to be compressed. 
  3298.  
  3299.  /R                  Removes the file specified by sourcefile from the file 
  3300.                      that contains only compressed data. The sourcefile 
  3301.                      parameter must specify the path and file name exactly as 
  3302.                      they appear in the header of the file with the compressed 
  3303.                      data; otherwise, the following error message appears on 
  3304.                      the screen: 
  3305.  
  3306.                                             The specified file to remove was not found.
  3307.  
  3308.                      The /R parameter is valid only when used in conjunction 
  3309.                      with sourcefile and packedfile. 
  3310.  
  3311.  Note:  The path and file-name information stored in the header of the file 
  3312.         that contains the compressed data can be displayed by using the /SHOW 
  3313.         option available with UNPACK. 
  3314.  
  3315.  
  3316. ΓòÉΓòÉΓòÉ 7.3.1.10.2. Creating a List File ΓòÉΓòÉΓòÉ
  3317.  
  3318. To use a list file with PACK, you must first create a file that contains the 
  3319. names of the files you want to compress. You can give the list file any name. 
  3320. Following is an example of specifying a list file at the command line: 
  3321.  
  3322.    PACK DEVICE.LST DEVICE.DRV /L
  3323.  
  3324. The /L indicates that DEVICE.LST is a list file. If the list file is not in the 
  3325. working directory, you must specify the drive and path. Global file-name 
  3326. characters are not permitted in the list-file name. DEVICE.DRV is the 
  3327. destination file for the end-to-end-compressed data. (End-to-end compressed 
  3328. data is the data from each of the files contained in the list file. This data 
  3329. is stored in a contiguous format in the destination file.) 
  3330.  
  3331. The syntax used in the list file is similar to that used in the command line. 
  3332. The syntax for a single line in the list file follows: 
  3333.  
  3334.    sourcefile [/H:headerpath\|/H:headerfile|/H:headerpath\ headerfile]
  3335.               [/D:headerdate] [/T:headertime] [/C]
  3336.  
  3337. Remember, when using the list-file method (method 2), global file-name 
  3338. characters are not permitted in the source-file name. Notice also that "PACK" 
  3339. is excluded, and packedfile is not permitted in the list file, because they 
  3340. were specified on the command line. You can include comments or blank lines by 
  3341. entering a semicolon as the first character of the line. An example of a list 
  3342. file follows: 
  3343.  
  3344.    ;This is a comment
  3345.    C:\OS2\COMMAND.COM
  3346.    CONFIG.SYS /H:CONFIG.BAK /C
  3347.    \OS2\INSTALL\DDINSTAL.EXE /H:\OS2\DDINSTAL.TMP /D:10-15-91 /T:11.45
  3348.  
  3349.  
  3350. ΓòÉΓòÉΓòÉ 7.3.1.10.3. Starting UNPACK ΓòÉΓòÉΓòÉ
  3351.  
  3352. UNPACK restores a file of compressed data to its original size and copies it to 
  3353. a specified drive and path. To start the UNPACK command, type: 
  3354.  
  3355.   UNPACK sourcefile [destinationdrive:][destinationpath]
  3356.                     [/SHOW] [/N:singlefile] [/V] [/F]
  3357.  
  3358. where: 
  3359.  
  3360.  sourcefile            Specifies the name of an existing file that contains 
  3361.                        compressed data. If this file contains one or more files 
  3362.                        of compressed data, UNPACK restores each file within the 
  3363.                        file. 
  3364.  
  3365.  destinationdrive:     Specifies the name of the drive to which you want UNPACK 
  3366.                        to copy one or more restored files. 
  3367.  
  3368.                        When you specify a destination drive, but not a path, 
  3369.                        UNPACK uses the path information stored in the header of 
  3370.                        the file that contains the compressed data. 
  3371.  
  3372.  destinationpath       Specifies the name of the directory (and its 
  3373.                        subdirectories) to which you want UNPACK to copy one or 
  3374.                        more restored files. 
  3375.  
  3376.                        When specified, the destination path overrides the path 
  3377.                        information stored in the header of the file that 
  3378.                        contains the compressed data. 
  3379.  
  3380.  /SHOW                 Displays the destination path and file-name information 
  3381.                        that are saved in the header of each file containing 
  3382.                        compressed data. 
  3383.  
  3384.  /N:singlefile         Extracts and uncompresses one file from a file that 
  3385.                        contains multiple files of compressed data. 
  3386.  
  3387.  /V                    Verifies that sectors written to the target disk are 
  3388.                        recorded properly. This parameter lets you know that 
  3389.                        critical data has been correctly recorded. 
  3390.  
  3391.                        This parameter causes UNPACK to run slower because a 
  3392.                        check is made for each entry recorded on the disk. 
  3393.  
  3394.  /F                    Specifies that files with extended attributes should not 
  3395.                        be unpacked or copied if the destination file system 
  3396.                        does not support extended attributes. 
  3397.  
  3398.  
  3399. ΓòÉΓòÉΓòÉ 7.3.1.11. PACK2 and UNPACK2 ΓòÉΓòÉΓòÉ
  3400.  
  3401. The algorithm used to compress files has been substantially enhanced. The use 
  3402. of this utility program is identical to the PACK and UNPACK utility, which is 
  3403. documented in the OS/2 Tools Reference. 
  3404.  
  3405.  
  3406. ΓòÉΓòÉΓòÉ 7.3.2. Bidirectional (BIDI) Tools ΓòÉΓòÉΓòÉ
  3407.  
  3408. This section describes the BIDI tools.  These help you develop programs for use 
  3409. on Bidirectional versions of OS/2. There is one tool available in this release: 
  3410.  
  3411.  IPFCBIDI - Information Presentation Facility Compiler.
  3412.  
  3413.  
  3414. ΓòÉΓòÉΓòÉ 7.3.2.1. IPFCBIDI ΓòÉΓòÉΓòÉ
  3415.  
  3416. IPFCBIDI is a bidirectional version of the IPFC. 
  3417.  
  3418. Note:  The Developer's Toolkit for OS/2 Warp on The Developer Connection for 
  3419.        OS/2 includes two IPF compilers: IPFC.EXE and IPFCBIDI.EXE (the 
  3420.        bidirectional version of IPFC.EXE). For this version of the Warp 
  3421.        Toolkit, these programs are identical, as the bidirectional support has 
  3422.        been integrated into the American version, IPFC.EXE. However, in a 
  3423.        future release of the Warp Toolkit on The Developer Connection for OS/2, 
  3424.        only IPFC.EXE will be included. Therefore, it will be necessary for you 
  3425.        to modify any makefiles that reference IPFCBIDI.EXE to reference 
  3426.        IPFC.EXE instead. 
  3427.  
  3428.  
  3429. ΓòÉΓòÉΓòÉ 7.3.3. Multimedia Tools ΓòÉΓòÉΓòÉ
  3430.  
  3431. This section describes the Multimedia tools which help you develop multimedia 
  3432. programs. There is one multimedia tool available in this release: 
  3433.  
  3434.  MIDICONV - MIDI Conversion Utility
  3435.  
  3436. Note:  The Wave Doctor, previously available with the OS/2 Multimedia Toolkit 
  3437.        product, is not available with this version of the Warp Toolkit. 
  3438.  
  3439.  
  3440. ΓòÉΓòÉΓòÉ 7.3.3.1. MIDICONV ΓòÉΓòÉΓòÉ
  3441.  
  3442. MIDICONV is a conversion utility program that lets you convert a MIDI format 1 
  3443. file to a MIDI format 0 file through the use of an installable I/O procedure. 
  3444.  
  3445. Note:  A MIDI format 0 file has only one track of music; a MIDI format 1 file 
  3446.        has multiple tracks of music. 
  3447.  
  3448.  
  3449. ΓòÉΓòÉΓòÉ 7.3.4. Presentation Manager (PM) Tools ΓòÉΓòÉΓòÉ
  3450.  
  3451. This section describes the Presentation Manager tools which help you develop 
  3452. Presentation Manager programs: 
  3453.  
  3454.      DLGEDIT - Dialog Editor 
  3455.      FONTEDIT - Font Editor 
  3456.      ICONEDIT - Icon Editor 
  3457.      IPFC - Information Presentation Facility Compiler 
  3458.      RC - Resource Script 
  3459.  
  3460.  
  3461. ΓòÉΓòÉΓòÉ 7.3.4.1. DLGEDIT ΓòÉΓòÉΓòÉ
  3462.  
  3463. DLGEDIT (Dialog Editor) is used to create and modify dialog boxes and specify 
  3464. the controls and text within dialog boxes. As you create a dialog box and add 
  3465. controls, the dialog editor draws it to the screen. You can resize and 
  3466. reposition the dialog box, then test its controls before you incorporate it in 
  3467. your application. 
  3468.  
  3469. Although the dialog editor draws box outlines and controls to the screen so 
  3470. that you can view it from a user's perspective, the dialog editor does not save 
  3471. it as a graphic. Instead, the dialog editor stores a description of the dialog 
  3472. box and its controls in a text file that has a file-name extension of .DLG. It 
  3473. also creates a compiled form of the .DLG file into a resource file that has an 
  3474. extension of .RES. The dialog-box and resource files can each contain 
  3475. descriptions of more than one dialog box. The resource file can contain other 
  3476. application resources, such as icons, bit maps, and string tables. It is 
  3477. attached to the application's executable (.EXE) file after the compile and link 
  3478. processes. 
  3479.  
  3480. This version of the Dialog Editor is enhanced for use with Pen for OS/2. With 
  3481. this enhanced version, handwriting and sketch controls are available. 
  3482.  
  3483.  
  3484. ΓòÉΓòÉΓòÉ 7.3.4.1.1. Starting DLGEDIT ΓòÉΓòÉΓòÉ
  3485.  
  3486. To start the dialog editor, select the PM Development Tools folder, then select 
  3487. the Dialog Editor object. 
  3488.  
  3489. The File Edit menu bar choices provide two ways to create a dialog box: 
  3490.  
  3491.      From the Edit menu, select the New Dialog item. The editor opens a new 
  3492.       dialog in the current file. 
  3493.  
  3494.       Notice that the dialog editor does not tell you that it has opened the 
  3495.       resource files. You can open a new include file or an existing one. 
  3496.  
  3497.      From the File menu, select the New item. This opens new resource files 
  3498.       with the extensions .RES and .DLG, as shown in the following figure: 
  3499.  
  3500.     
  3501.  
  3502.     
  3503.  
  3504.     
  3505.  
  3506.     
  3507.  
  3508.     
  3509.  
  3510.     
  3511.  
  3512.     
  3513.  
  3514.     
  3515.  
  3516.     
  3517.  
  3518.     
  3519.  
  3520.     
  3521.  
  3522.     
  3523.  
  3524.     
  3525.  
  3526.     
  3527.  
  3528.     
  3529.  
  3530.     
  3531.  
  3532.     
  3533.  
  3534.     
  3535.  
  3536.     
  3537.  
  3538.     
  3539.  
  3540.     
  3541.  
  3542.     
  3543.  
  3544.  When you edit a dialog box, the names of the resource and include files are 
  3545.  shown in the title bar of the dialog editor. If you are editing a new file 
  3546.  that has not yet been named or saved, "Untitled" appears in the title bar in 
  3547.  place of a name. 
  3548.  
  3549.  
  3550. ΓòÉΓòÉΓòÉ 7.3.4.1.2. Replacing DLGEDIT ΓòÉΓòÉΓòÉ
  3551.  
  3552. IBM supports the version of DLGEDIT (Dialog Editor) in this release of the Warp 
  3553. Toolkit, but will not be enhancing or otherwise changing the Dialog Editor in 
  3554. future releases. URE (Universal Resource Editor) will become the editor of 
  3555. choice for creating and modifying dialogs and other resources. 
  3556.  
  3557.  
  3558. ΓòÉΓòÉΓòÉ 7.3.4.2. FONTEDIT ΓòÉΓòÉΓòÉ
  3559.  
  3560. FONTEDIT (Font Editor) is used to design and save fonts for use in 
  3561. applications. A font is a set of alphanumeric characters, punctuation marks, 
  3562. and other symbols that share a common typeface design and line weight. 
  3563.  
  3564. When the font editor creates a font file, it supplies an .FNT file-name 
  3565. extension. The font file contains a header, which describes the font in general 
  3566. terms, and a section that contains bit maps of the characters themselves. 
  3567.  
  3568.  
  3569. ΓòÉΓòÉΓòÉ 7.3.4.2.1. Starting FNTEDIT ΓòÉΓòÉΓòÉ
  3570.  
  3571. To start the font editor select the PM Development Tools folder, then select 
  3572. the Font Editor object. The following window appears: 
  3573.  
  3574. The quadrille to the left of the screen has within it an enlarged version of 
  3575. the character selected from the long, scrollable, horizontal box at the bottom 
  3576. of the screen. To edit the enlarged version of the character in the quadrille, 
  3577. use the mouse to switch the enlarged representation to black or white. You can 
  3578. change a series of pels by holding mouse button 1 down and moving the pointer 
  3579. through the pels. 
  3580.  
  3581. Several choices are available from the menu bar that enable you to tailor 
  3582. individual fonts. With these choices you can: 
  3583.  
  3584.      Create a font file or open an existing file 
  3585.      Edit a new or existing font 
  3586.      Define the characteristics of the font 
  3587.      Specify character spacing (fixed or proportional) 
  3588.      Name the typeface 
  3589.      Identify a type style (italic, underscored) 
  3590.      Change the width and weight of individual characters 
  3591.      Insert or delete a column in the character. 
  3592.  
  3593.  
  3594. ΓòÉΓòÉΓòÉ 7.3.4.2.2. Font Resource Files ΓòÉΓòÉΓòÉ
  3595.  
  3596. All resources, except fonts, can be bound to the application's executable file 
  3597. or compiled into a dynamic link library (DLL). Fonts must be put in a separate 
  3598. .DLL using the RC. You then link the file at run time and load the resources 
  3599. into your application by using DosLoadModule or GpiLoadFonts. A .DLL containing 
  3600. font resources must have a file-name extension of .FON. The .FON file can be 
  3601. installed on the system. 
  3602.  
  3603.  
  3604. ΓòÉΓòÉΓòÉ 7.3.4.3. ICONEDIT ΓòÉΓòÉΓòÉ
  3605.  
  3606. ICONEDIT (Icon Editor) is used to create icons, pointers, and bit maps. In the 
  3607. PM, an icon is a graphic symbol that identifies a data object, a system action, 
  3608. or a minimized application. A pointer is a small shape on the screen that 
  3609. reflects the movement of the mouse. Pointers have a hot spot that identifies 
  3610. their exact location on the screen. 
  3611.  
  3612. Icons, pointers, and bit maps produced by the Icon Editor are graphic symbols 
  3613. comprised of pels in any of the following display states: 
  3614.  
  3615.      Black 
  3616.      White 
  3617.      Color 
  3618.      Screen (background color) 
  3619.      Inverse screen (inverse of background color). 
  3620.  
  3621.  Note:  Mini-icons (also called small icons) are icons that are one-half the 
  3622.  size of normal icons (also called large icons). Normal icons are 32x32 or 
  3623.  40x40 pels (depending on the monitor resolution). Mini-icons are 16x16 or 
  3624.  20x20 pels. They are used in areas where a normal icon is too large, for 
  3625.  example, in toolbars. 
  3626.  
  3627.  If you previously had OS/2 installed on your system, and if you did not update 
  3628.  your icon profile when you installed this Warp Toolkit, then you need to run 
  3629.  the Icon Editor once with its profile update options in order to use the 
  3630.  mini-icon forms. To do this, enter: 
  3631.  
  3632.    X:\TOOLKIT\BIN\ICONEDIT /t /i
  3633.  
  3634.  where: 
  3635.  
  3636.  X         Is the drive location for the installed Warp Toolkit. 
  3637.  
  3638.  After the initial run of Icon Editor, the new mini-icons will be part of your 
  3639.  profile and you will not need to use options /t /i again. 
  3640.  
  3641.  
  3642. ΓòÉΓòÉΓòÉ 7.3.4.3.1. Starting ICONEDIT ΓòÉΓòÉΓòÉ
  3643.  
  3644. To start the Icon Editor, select the PM Development Tools folder, then select 
  3645. the Icon Editor object. The following window appears: 
  3646.  
  3647. Notice the information area at the top of the Icon Editor window; the items 
  3648. displayed from left to right include: 
  3649.  
  3650.      A two-button mouse, showing the color currently selected for each button 
  3651.      An actual-size image of the current figure that you are editing 
  3652.      A status area that provides: 
  3653.  
  3654.  
  3655.         -  Size (in pels using x and y coordinates) 
  3656.         -  Pen location 
  3657.         -  Pen size (from 1-by-1 to 9-by-9) 
  3658.         -  Hot spot (for icons and pointers, but not bit maps) 
  3659.         -  Figure type (icon, pointer, or bit map) 
  3660.         -  Form name. 
  3661.  
  3662.  The palette window, in the lower-right corner, displays the colors that are 
  3663.  available for use during editing. The colors currently selected are marked 
  3664.  with frames. 
  3665.  
  3666.  The editing window is the largest part of your working area. Use the mouse to 
  3667.  paint the enlarged representation with the selected color. 
  3668.  
  3669.  The menu-bar choices provide access to the many functions of the Icon Editor. 
  3670.  These choices enable you to: 
  3671.  
  3672.      Create a new icon, pointer, or bit map 
  3673.      Edit an existing icon, pointer, or bit map 
  3674.      Test the new icon or pointer 
  3675.      Superimpose a grid over the editing window (for drawing a symmetrical 
  3676.       figure) 
  3677.      Restrict a drawing to straight vertical or horizontal lines 
  3678.      Make transparent pels (for icons or pointers) visible 
  3679.      Change the shape and size of the pen 
  3680.      Select system preferences (to set prompts or suppress warnings) 
  3681.      Define hot spots (where the mouse pointer is directed). 
  3682.  
  3683.  
  3684. ΓòÉΓòÉΓòÉ 7.3.4.4. IPFC ΓòÉΓòÉΓòÉ
  3685.  
  3686. IPF (Information Presentation Facility) is a set of tools used to create an 
  3687. online help facility for an application. IPF also is used to create online 
  3688. information that can be viewed independent of an application. It is a tool for 
  3689. both the information author and the application programmer. 
  3690.  
  3691. As an author of online information, you can define the windows in which 
  3692. information is displayed. For example, a window can be split so that scrollable 
  3693. text can be displayed beside a stationary illustration that the text describes. 
  3694. The following figure shows an IPF application-control-window. 
  3695.  
  3696. Note:  A new, 32-bit version of the Information Presentation Facility Compiler 
  3697.        (IPFC) is included in the Warp Toolkit. The new compiler provides the 
  3698.        following enhancements: 
  3699.  
  3700.         -  Ability to specify output files 
  3701.         -  Expanded use of environment variables 
  3702.         -  Improved error messages 
  3703.         -  More sophisticated use of support files 
  3704.         -  New command-line interface 
  3705.         -  New tag (:hdref.) 
  3706.         -  Two new macros (.nameit and .ce) 
  3707.         -  Upgraded overall performance and increased limits 
  3708.  
  3709.  
  3710. ΓòÉΓòÉΓòÉ 7.3.4.4.1. Developing Online Information ΓòÉΓòÉΓòÉ
  3711.  
  3712. IPF makes it possible for you to design your information in two types of 
  3713. formats: 
  3714.  
  3715.      An online document format for reference books 
  3716.      A help-window format for context-sensitive help for your application 
  3717.       programs. 
  3718.  
  3719.  To produce either format, you must create a text file using a text editor and 
  3720.  two IPF elements: 
  3721.  
  3722.      The IPF tagging language - consists of instructions for formatting and 
  3723.       displaying your document on the screen. 
  3724.      The IPFC - interprets the tags and converts the source file into an IPF 
  3725.       format. 
  3726.  
  3727.  
  3728. ΓòÉΓòÉΓòÉ 7.3.4.4.2. Starting IPFC ΓòÉΓòÉΓòÉ
  3729.  
  3730. You can start the IPFC and specify all input from the command line. An example 
  3731. of the syntax follows: 
  3732.  
  3733.   IPFC [-switch] [-option] infile [outfile]
  3734.  
  3735. where: 
  3736.  
  3737.  -switch   Performs the functions in the following list. They can be used 
  3738.            either individually or combined. 
  3739.  
  3740.                           i         Compiles the source file as an online 
  3741.                                     document. 
  3742.                           s         Suppresses the performance of the search 
  3743.                                     function. 
  3744.                           x         Generates and displays a cross-reference 
  3745.                                     list. 
  3746.  
  3747.  -option   Performs the functions in the following list. They can be used 
  3748.            either individually or combined. 
  3749.  
  3750.                           C         Character code page. 
  3751.                           D         DBCS range or country code. 
  3752.                           L         Language ID. 
  3753.                           W         Warning level. 
  3754.  
  3755.  infile    Specifies the name of your IPF source file. 
  3756.  
  3757.            If you do not give a file-name extension, the IPFC uses .IPF by 
  3758.            default. If your file has a file-name extension other than IPF, 
  3759.            include that file-name extension in the command-line syntax. 
  3760.  
  3761.  outfile   Specifies the name of the output file. If this parameter is not 
  3762.            used, the output file will have the same file name as the input file 
  3763.            and an extension of either .INF (if used in conjunction with the i 
  3764.            switch) or .HLP. If you need to store the outfile in a different 
  3765.            location, a path can be specified. 
  3766.  
  3767.  The interface from earlier levels of the compiler is still supported. An 
  3768.  example of the syntax follows: 
  3769.  
  3770.     IPFC filename [/INF] [/S] [/X] [/Wn] [> messageoutputfilename]
  3771.  
  3772.  where: 
  3773.  
  3774.  filename                 Specifies the name of your IPF source file. 
  3775.  
  3776.                           If you do not give a file-name extension, the IPFC 
  3777.                           uses .IPF by default. If your file has a file-name 
  3778.                           extension other than IPF, include that file-name 
  3779.                           extension in the command line. 
  3780.  
  3781.  /INF                     Compiles the source file as an online document. 
  3782.  
  3783.                           If this parameter is not included, the default is to 
  3784.                           compile the source file as a help library (with a 
  3785.                           file-name extension of .HLP). 
  3786.  
  3787.  /S                       Suppresses the performance of the Search function. 
  3788.                           This parameter increases compression of compiled data 
  3789.                           by about 10% to further reduce the storage it 
  3790.                           requires. 
  3791.  
  3792.  /X                       Generates and displays a cross-reference list. 
  3793.  
  3794.  /Wn                      Generates and displays a list of error messages.  The 
  3795.                           value of n indicates the level of error messages you 
  3796.                           want to receive. Values you can specify for n are 1, 
  3797.                           2, or 3. 
  3798.  
  3799.                               Warning Level 1  (the most severe) 
  3800.                               Warning Level 2  (moderately severe) 
  3801.                               Warning Level 3  (the least severe and is the 
  3802.                                default). 
  3803.  
  3804.  messageoutputfilename    Specifies the name of the file where error and cross 
  3805.                           reference messages are sent. If you do not specify 
  3806.                           this parameter, messages generated by /X and /Wn are 
  3807.                           sent to the display screen. 
  3808.  
  3809.  
  3810. ΓòÉΓòÉΓòÉ 7.3.4.4.2.1. Compiling Help Files ΓòÉΓòÉΓòÉ
  3811.  
  3812. To compile a source file that is intended as a help-text window, use the IPFC 
  3813. command without the /INF option. For example: 
  3814.  
  3815.   IPFC myhelp.hlp
  3816.  
  3817.  
  3818. ΓòÉΓòÉΓòÉ 7.3.4.4.2.2. Compiling with International Language Considerations ΓòÉΓòÉΓòÉ
  3819.  
  3820. The following parameters provide international language support: 
  3821.  
  3822.  /COUNTRY  = nnn  (where nnn is the 3-digit country code)
  3823.  /CODEPAGE = nnnn  (where nnnn is the 3 or 4-digit code page)
  3824.  /LANGUAGE = xxx  (where xxx is a 3-letter identifier that
  3825.              indicates an international language file is to be used)
  3826.  
  3827. An example of the command-line syntax follows: 
  3828.  
  3829.   IPFC myfile.txt /INF /COUNTRY=033 /CODEPAGE=437 /LANGUAGE=FRA
  3830.  
  3831. You can now add additional languages to IPFC by providing an IPFxxx.NLS file 
  3832. where xxx matches the name of the language supplied with the /LANGUAGE or -L 
  3833. switch. 
  3834.  
  3835. You can also add additional code pages by providing an APSYxxxx.APS file where 
  3836. xxxx matches the number of the code page. Four-digit code pages are supported. 
  3837. Three-digit code pages have a leading 0 in their APSYxxxx.APS file name, but 
  3838. the leading 0 does not have to be passed with the /CODEPAGE or -C switch.  The 
  3839. underlying operating system must support the supplied code page. 
  3840.  
  3841. Note:  When adding new language or code page files, be sure they are located in 
  3842.        the same subdirectory where your IPFC program files are located. 
  3843.  
  3844.  
  3845. ΓòÉΓòÉΓòÉ 7.3.4.4.2.3. IPFC Environment Variables ΓòÉΓòÉΓòÉ
  3846.  
  3847. There are four environment variables that can be used to specify the location 
  3848. of source files: 
  3849.  
  3850.  IPFC               Specifies the location of the .IPF support files (such as 
  3851.                     APSYMBOL.APS and IPF*.NLS). 
  3852.  
  3853.  IPFCIMBED          Searches for files imbedded with the .im macro. 
  3854.  
  3855.  IPFCARTWORK        Specifies the location of artwork files and artlink files. 
  3856.  
  3857.  TMP                Indicates where the compiler should store the temporary 
  3858.                     files it creates during the compilation. 
  3859.  
  3860.  
  3861. ΓòÉΓòÉΓòÉ 7.3.4.4.2.4. Viewing an Online Document ΓòÉΓòÉΓòÉ
  3862.  
  3863. If you want to see your formatted online document, you can use the VIEW command 
  3864. to display it. 
  3865.  
  3866. An online document has an extension of .INF. It can be viewed by entering its 
  3867. name as a parameter to the VIEW command; for example: 
  3868.  
  3869.   VIEW myfile
  3870.  
  3871. You do not need to include the .INF file extension. 
  3872.  
  3873. Note:  You cannot use VIEW to display help-text windows for application 
  3874.        programs. However, for test viewing purposes, you can compile the help 
  3875.        text as .INF files and use VIEW to look at the information. 
  3876.  
  3877.  
  3878. ΓòÉΓòÉΓòÉ 7.3.4.5. RC ΓòÉΓòÉΓòÉ
  3879.  
  3880. RC (Resource Script) is a tool that lets you add application resources, such as 
  3881. message strings, pointers, menus, and dialog boxes, to your application's 
  3882. executable file. The primary purpose of RC is to prepare data for applications 
  3883. that use functions such as WinLoadString, WinLoadPointer, WinLoadMenu, and 
  3884. WinLoadDlg. These functions load resources from the application's executable 
  3885. file or another specified executable file. The application then can use the 
  3886. loaded resources as needed. 
  3887.  
  3888. RC and the resource functions let you define and modify application resources 
  3889. without recompiling the application itself. RC can modify the resources in an 
  3890. executable file at any time without affecting the rest of the file. You can 
  3891. create custom applications from a single executable file by using RC to add the 
  3892. custom resources you need to each application.  RC is especially important for 
  3893. international language support because it lets you define all 
  3894. language-dependent data, such as message strings, as resources. Preparing the 
  3895. application for a new language is simply a matter of adding new resources to 
  3896. the existing executable file. 
  3897.  
  3898. The effective limit to the length of a string value of a macro to the RC 
  3899. preprocessor is 794 bytes.  To count to the limit, count one for each byte 
  3900. interior to the string, one byte for the beginning and ending double quotation 
  3901. marks of each segment of the string as defined, plus one byte for the 
  3902. whitespace separating the ending and beginning double quotation marks of 
  3903. concatenated string segments. 
  3904.  
  3905. The RC program recognizes the accelerator flags (constants named like AF_*) 
  3906. when expressed in an ACCELTABLE statement. The flags may be expressed singly or 
  3907. in combination with the bitwise OR operator. 
  3908.  
  3909. The ID numbers of messages in MESSAGETABLE resources range from 0 to 65535 of 
  3910. any positive integer. This range is the same range as string IDs inside 
  3911. STRINGTABLE resources. 
  3912.  
  3913. The RC program can read from the INCLUDE environment variable any HPFS 
  3914. filenames containing embedded blanks, without the need to enclose such names 
  3915. inside quotation marks. RC uses the semicolon as a directory separator in the 
  3916. INCLUDE environment variable. 
  3917.  
  3918. The RC program offers two new switches with the Warp Toolkit: 
  3919.  
  3920.  /nologo   Suppresses display of the copyright banner each time the program 
  3921.            starts. 
  3922.  /?        Displays the command-line syntax and options. 
  3923.  
  3924.  A new option is available with the Warp Toolkit. 
  3925.  
  3926.      -x[{1|2}]
  3927.  
  3928.  This option causes resources to be compressed.  These resources will be 
  3929.  automatically decompressed when the resource is accessed. 
  3930.  
  3931.  
  3932. ΓòÉΓòÉΓòÉ 7.3.4.5.1. Creating an RC File ΓòÉΓòÉΓòÉ
  3933.  
  3934. All resources are defined in a resource script file. You use a text editor to 
  3935. create a resource script file that has an .RC extension. Resources are defined 
  3936. either explicitly in statements in the resource script file, or in other files 
  3937. (such as output files from the resource editors). The .RC file is the input 
  3938. file to the RC; the output has an .RES extension. The .RC file can contain 
  3939. statements that define resources and that include resources from other files. 
  3940. Text-based resources such as menus, accelerator keys, and text strings are 
  3941. defined in the .RC file. Non-text-based resources are specified in the .RC file 
  3942. as file names of the external files where these resources reside. Such 
  3943. resources include icons, pointers, and bit maps. The syntax for including 
  3944. external files in a resource script varies according to the nature of the 
  3945. resources defined or contained in the files. Fonts have a resource file to 
  3946. themselves. 
  3947.  
  3948. Make sure that none of the include files in your resource script file contain 
  3949. an end-of-file character. When the RC sees an end-of-file character, it assumes 
  3950. it to be the end of all input. 
  3951.  
  3952. For an example of a resource script file, see the sample program TEMPLATE. 
  3953.  
  3954.  
  3955. ΓòÉΓòÉΓòÉ 7.3.4.5.2. Starting RC ΓòÉΓòÉΓòÉ
  3956.  
  3957. You can start RC in three ways: 
  3958.  
  3959.      Compile a resource script file and bind it to an executable file: 
  3960.  
  3961.       To compile the resource script file EXAMPLE.RC and bind the resulting 
  3962.       compiled resource (.RES) file to the executable file, EXAMPLE.EXE, use 
  3963.       the following command: 
  3964.  
  3965.               RC EXAMPLE
  3966.  
  3967.       You do not need to specify the .RC extension for EXAMPLE. The RC program 
  3968.       creates the resource file EXAMPLE.RES and then adds the compiled resource 
  3969.       to the executable file EXAMPLE.EXE. 
  3970.  
  3971.      Compile a resource script file but do not bind it to the executable file: 
  3972.  
  3973.       To compile the resource script file, EXAMPLE.RC, into a resource file 
  3974.       without binding the resources to an executable file, use the following 
  3975.       command: 
  3976.  
  3977.               RC -R EXAMPLE
  3978.  
  3979.       The compiler creates the resource file EXAMPLE.RES. 
  3980.  
  3981.      Compile a resource script file and put it in a DLL: 
  3982.  
  3983.       Instead of binding a resource file to your application, you can put it in 
  3984.       a dynamic link library. To add the compiled resources to a dynamic link 
  3985.       library, use the following command: 
  3986.  
  3987.               RC EXAMPLE.RES DYNALINK.DLL
  3988.  
  3989.       You can then link the file at run time and load the resources into your 
  3990.       application by using DosLoadModule or GpiLoadFonts. However, you cannot 
  3991.       switch from binding resources to putting resources into a dynamic link 
  3992.       library without changing your application source code. 
  3993.  
  3994.  
  3995. ΓòÉΓòÉΓòÉ 7.3.5. SOM Tools ΓòÉΓòÉΓòÉ
  3996.  
  3997. SOM tools help you develop SOM programs. This section describe the SOM tools: 
  3998.  
  3999.      CTOI 
  4000.      IRDUMP - Information Repository Dump 
  4001.      PDL - Public Definition Language 
  4002.      PREGIMPL  - PM version of REGIMPL 
  4003.      REGIMPL - Implementation Registration 
  4004.      SC - SOM Compiler 
  4005.      SOMCORBA - SOM CORBA 
  4006.      SOMDCHK - SOM Check 
  4007.      SOMDD - SOM DSOM Daemon 
  4008.      SOMDSRV - SOM Server 
  4009.      SOMENV - SOM Environment 
  4010.      SOMSTARS 
  4011.      SOMXH - SOM .XH Header Files 
  4012.      WPIDL2XH - Workplace Shell .IDL To .XH Files 
  4013.  
  4014.  
  4015. ΓòÉΓòÉΓòÉ 7.3.5.1. CTOI ΓòÉΓòÉΓòÉ
  4016.  
  4017. CTOI automates the conversion process from the SOM 1.0 format (.CSC files) to 
  4018. SOM 2.0 format (.IDL files). An example of the syntax follows: 
  4019.  
  4020.   CTOI f1
  4021.  
  4022. where: 
  4023.  
  4024.  f1   Is the name of the .CSC file to be converted. 
  4025.  
  4026.  You may require some modifications to your environment and your existing code 
  4027.  in order to use this tool successfully. For more information, see the article 
  4028.  titled Using the SOM CTOI Tool in the online version of The Developer 
  4029.  Connection News, Volume 5. This newsletter can be found by opening the 
  4030.  following folders, starting with The Developer Connection folder: 
  4031.  
  4032.     The Developer Connection Browser
  4033.       The Developer Connection for OS/2 References
  4034.         The Developer Connection News
  4035.  
  4036.  
  4037. ΓòÉΓòÉΓòÉ 7.3.5.2. IRDUMP ΓòÉΓòÉΓòÉ
  4038.  
  4039. IRDUMP (Information Repository Dump) verifies that a class exists in the 
  4040. Information Repository. An example of the syntax follows: 
  4041.  
  4042.   IRDUMP [-o] [-w] [-?] [object]
  4043.  
  4044. where: 
  4045.  
  4046.  -o       Includes file offset information. 
  4047.  -w       Follows dump with "within" operation. 
  4048.  -?       Shows this usage information. 
  4049.  object   Is a simple or fully-qualified name of an object in the Interface 
  4050.           Repository. 
  4051.  
  4052.  The default action is to dump all objects. 
  4053.  
  4054.  
  4055. ΓòÉΓòÉΓòÉ 7.3.5.3. PDL ΓòÉΓòÉΓòÉ
  4056.  
  4057. PDL (Public Definition Language) is a separate program that performs the same 
  4058. function as the Public Definition Language (PDL) emitter used with the SOM 
  4059. Compiler.  That emitter generates a copy of an .IDL file which has the portions 
  4060. designated as private removed. The file generated is the same as the .IDL file 
  4061. from which it is produced, except that it removes all items within the .IDL 
  4062. file that are marked as "private". An item is marked as private by surrounding 
  4063. it with #ifdef __PRIVATE__ and #endif directives.  Thus, the PDL emitter can be 
  4064. used to generate a "public" version of an .IDL file. (Generally, client 
  4065. programs will need only the "public" methods and attributes.) 
  4066.  
  4067. The PDL program can be invoked independently of the SOM Compiler.  In addition, 
  4068. the PDL program can remove any kind of items in the .IDL file that are preceded 
  4069. by a user-specified #ifdef directive and followed by an #endif directive. 
  4070.  
  4071. The PDL program is invoked as follows: 
  4072.  
  4073.   PDL [-c] [-d] [-f] [-h] [-s] [-/] files
  4074.  
  4075. where: 
  4076.  
  4077.  -c cmd         Specifies that, for each .IDL file, the PDL program is to run 
  4078.                 the specified system command. This command may contain a single 
  4079.                 occurrence of the string %s, which will be replaced with the 
  4080.                 source file name before the command is executed. For example 
  4081.                 the option -c sc -sh %s has the same effect as issuing the SC 
  4082.                 command with the -sh option. 
  4083.  
  4084.  -d dir         Specifies a directory in which the output files are to be 
  4085.                 placed. (The output files are given the same name as the input 
  4086.                 files). If no directory is specified, the output files are 
  4087.                 named <fileStem>.PDL (where fileStem is the file stem of the 
  4088.                 input file) and are placed in the current working directory. 
  4089.  
  4090.  -h             Requests this description of the PDL command syntax and 
  4091.                 options. 
  4092.  
  4093.  -f             Specifies that output files are to replace existing files with 
  4094.                 the same name, even if the existing files are read-only. By 
  4095.                 default, files are replaced only if they have write access. 
  4096.  
  4097.  -s smemit      Specifies the SMEMIT variable with which the PDL program is to 
  4098.                 invoke the SOM Compiler. 
  4099.  
  4100.  -/ <string>    Specifies the #ifdef pattern for which the PDL program will 
  4101.                 strip out .IDL statements.  The default value is #ifdef 
  4102.                 __PRIVATE__. 
  4103.  
  4104.  files          Specifies one or more .IDL files whose specified #ifdef 
  4105.                 sections are to be removed. Filenames must be completely 
  4106.                 specified (with the .IDL extension). If no #ifdef directive is 
  4107.                 specified (by including a -/<string> option), then the #ifdef 
  4108.                 __PRIVATE__ sections will be removed by default. 
  4109.  
  4110.  Selected options can be specified individually, as a string of option 
  4111.  characters, or as a combination of both. Any option that takes an argument 
  4112.  either must be specified individually or must appear as the final option in a 
  4113.  string of option characters. 
  4114.  
  4115.  
  4116. ΓòÉΓòÉΓòÉ 7.3.5.4. PREGIMPL ΓòÉΓòÉΓòÉ
  4117.  
  4118. PREGIMPL is a Presentation Manager version of the REGIMPL tool. 
  4119.  
  4120.  
  4121. ΓòÉΓòÉΓòÉ 7.3.5.5. REGIMPL ΓòÉΓòÉΓòÉ
  4122.  
  4123. Before an implementation (a server program and class libraries) can be used by 
  4124. client applications, it must be registered with DSOM by running the 
  4125. Implementation Registration utility, REGIMPL. This facility is available 
  4126. primarily for use in command (.CMD) files. 
  4127.  
  4128. During execution of REGIMPL, DSOM updates its database to include the new 
  4129. server implementation and the associated classes. This enables DSOM to find 
  4130. and, if necessary, to activate the server so that clients can invoke methods on 
  4131. it. 
  4132.  
  4133. Below are some examples on how you can use REGIMPL. 
  4134.  
  4135.      To enter interactive mode: 
  4136.  
  4137.               REGIMPL
  4138.  
  4139.      To add implementation: 
  4140.  
  4141.               REGIMPL -A -i <str> [-p <str>] [-v <str>] [-f <str>] [-b <str>]
  4142.                                   [-h <str>] [-m {on|off}] [-z <str>]
  4143.  
  4144.      To update implementation: 
  4145.  
  4146.               REGIMPL -U -i <str> [-p <str>] [-v <str>] [-f <str>] [-b <str>]
  4147.                                   [-h <str>] [-m {on|off}]
  4148.  
  4149.      To delete implementation: 
  4150.  
  4151.               REGIMPL -D -i <str> [-i ...]
  4152.  
  4153.      To list implementation(s): 
  4154.  
  4155.               REGIMPL -L [-i <str> [-i ...]]
  4156.  
  4157.      To list aliases: 
  4158.  
  4159.               REGIMPL -S
  4160.  
  4161.      To add class(es): 
  4162.  
  4163.               REGIMPL -a -c <str> [-c ...] -i <str> [-i ...]
  4164.  
  4165.      To delete class(es): 
  4166.  
  4167.               REGIMPL -d -c <str> [-c ...] [-i <str> [-i ...]]
  4168.  
  4169.      To list classes associated with implementation(s): 
  4170.  
  4171.               REGIMPL -l [-i <str> [-i ...]]
  4172.  
  4173.       where: 
  4174.  
  4175.       -i <str>            Is the implementation alias name. 
  4176.       -p <str>            Is the server program name. The default value is 
  4177.                           SOMDSVR.EXE. 
  4178.       -v <str>            Is the server-class name. The default value is 
  4179.                           SOMDServer. 
  4180.       -f <str>            Is the reference data file name.  Use NULL to delete. 
  4181.       -b <str>            Is the reference data backup file name. Use NULL to 
  4182.                           delete. 
  4183.       -h <str>            Is the host machine name. The default value is 
  4184.                           localhost. 
  4185.       -m {on|off}         Enables multi-threaded server. 
  4186.       -z <str>            Is the implementation ID. 
  4187.       -c <str>            Is the class name. 
  4188.  
  4189.  
  4190. ΓòÉΓòÉΓòÉ 7.3.5.6. SC ΓòÉΓòÉΓòÉ
  4191.  
  4192. The OS/2 operating system provides a programming interface that allows 
  4193. applications to implement Desktop objects. This programming interface enables 
  4194. you to create Desktop objects that conforms to the CUA architecture using basic 
  4195. object-oriented programming interface. The interface is implemented using the 
  4196. IBM SC (SOM Compiler). 
  4197.  
  4198. The SOM Compiler (SC) helps implementers build classes in which interface and 
  4199. implementation are decoupled.  The SOM Compiler reads the IDL definition of a 
  4200. class interface and generates: 
  4201.  
  4202.      An implementation skeleton for the class 
  4203.      Bindings for implementors 
  4204.      Bindings for client programs 
  4205.  
  4206.  Bindings are language-specific macros and procedures that make implementing 
  4207.  and using SOM classes more convenient. These bindings offer a convenient 
  4208.  interface to SOM that is tailored to a particular programming language. For 
  4209.  instance, C programmers can invoke methods in the same way they make ordinary 
  4210.  procedure calls. The C++ bindings "wrap" SOM objects as C++ objects, so that 
  4211.  C++ programmers can invoke methods on SOM objects in the same way they invoke 
  4212.  methods on C++ objects. In addition, SOM objects receive full C++ 
  4213.  typechecking, just as C++ objects do. Currently, the SOM Compiler can generate 
  4214.  both C and C++ language bindings for a class. 
  4215.  
  4216.  
  4217. ΓòÉΓòÉΓòÉ 7.3.5.6.1. Starting SC ΓòÉΓòÉΓòÉ
  4218.  
  4219. The SOM compiler is actually a precompiler and a collection of code emitters 
  4220. that produce binding files from the output of the precompiler. The files have 
  4221. several forms, including C-header files, a C-implementation template, and the 
  4222. language-neutral version of the class definition file. 
  4223.  
  4224. To start the SOM precompiler from the command line, type: 
  4225.  
  4226.  SC [-C] [-D] [-E] [-I] [-S] [-U] [-V] [-c] [-d] [-h] [-i] [-m] [-p] [-r]
  4227.     [-s] [-u] [-v] [-w] f1 f2 ...
  4228.  
  4229. where: 
  4230.  
  4231.   -C <n>                Is the size of the comment buffer. The default value is 
  4232.                         49152. 
  4233.   -D <DEFINE>           Is the same as the -D option for cpp. 
  4234.   -E <var>=<value>      Is the set environment variable. 
  4235.   -I <INCLUDE>          Is the same as the -I option for cpp. 
  4236.   -S <n>                Is the size of the string buffer. The default is 49152. 
  4237.   -U <UNDEFINE>         Is the same as the -U option for cpp. 
  4238.   -V                    Shows the version number of the compiler. 
  4239.   -c                    Ignores all comments. 
  4240.   -d <dir>              Is the output directory for each emitted file. 
  4241.   -h                    Is this message. 
  4242.   -i <file>             Uses this file name as supplied. 
  4243.   -m <name[=value]>     Adds a global modifier. 
  4244.   -p                    Is a shorthand for -D__PRIVATE__. 
  4245.   -r                    Checks if the releaseorder entries exist. The default 
  4246.                         value is FALSE. 
  4247.   -s <string>           Replaces the SMEMIT variable with a <string>. 
  4248.   -u                    Updates the interface repository. 
  4249.   -v                    Verboses the debugging mode. The default value is 
  4250.                         FALSE. 
  4251.   -w                    Does not display warnings. The default value is FALSE. 
  4252.  file1, file2           Is the name of a file that contains an OIDL class 
  4253.                         definition. If you do not specify a file-name 
  4254.                         extension, the compiler uses .IDL by default. 
  4255.  
  4256.  The options can be specified individually, as a string of option characters, 
  4257.  or as a combination of these forms. Any option that takes an argument must be 
  4258.  specified individually or be the final option in a string of option 
  4259.  characters. 
  4260.  
  4261.  The modifiers are as follows: 
  4262.  
  4263.  addprefixes            Adds functionprefix to method names in template file 
  4264.  [no]addstar            Does not add a * to C bindings for interface 
  4265.                         references. 
  4266.  corba                  Checks the source for CORBA compliance. 
  4267.  csc                    Forces running of the OIDL compiler. 
  4268.  emitappend             Appends the emitted files at the end of an existing 
  4269.                         file. 
  4270.  noheader               Does not add a header to the emitted file. 
  4271.  noint                  Does not warn about int causing portability problems. 
  4272.  nolock                 Does not lock the IR during update. 
  4273.  nopp                   Does not run the source through the pre-processor. 
  4274.  notc                   Does not use typecodes for emit information. 
  4275.  nouseshort             Does not generate short names for types. 
  4276.  pp=<path>              Specifies a local pre-processor to use. 
  4277.  tcconsts               Generates CORBA type code constants. 
  4278.  
  4279.  
  4280. ΓòÉΓòÉΓòÉ 7.3.5.6.2. SMEMIT Environment Variable ΓòÉΓòÉΓòÉ
  4281.  
  4282. SMEMIT is used to indicate which emitter programs should be executed. Like the 
  4283. SMINCLUDE environment variable it can consist of a list of items separated by 
  4284. semicolons. Each item designates a particular emitter by the name of the file 
  4285. extension the emitter produces. The syntax is as follows: 
  4286.  
  4287.   SMEMIT=[h;ih;c;xh;xih;xc;def;ir;pdl]
  4288.  
  4289. The default values are h and ih. For example: 
  4290.  
  4291.   SET SMEMIT=H;IH;DEF;
  4292.  
  4293. indicates that EMITH.EXE, EMITIH.EXE, and EMITDEF.EXE programs should be 
  4294. executed to produce .H, .IH, and .DEF files, respectively. By default all 
  4295. emitted output files are placed in the same directory as the input file. If the 
  4296. SMEMIT environment variable is not defined, the SOM compiler will perform a 
  4297. syntax check of your class definition but no output will be produced. 
  4298.  
  4299. Note:  All command-line modifiers can be set in the environment by changing 
  4300.        them to UPPERCASE and preappending SM to them. 
  4301.  
  4302.  
  4303. ΓòÉΓòÉΓòÉ 7.3.5.6.3. SMINCLUDE Environment Variable ΓòÉΓòÉΓòÉ
  4304.  
  4305. The SOM compiler uses an environment variable called SMINCLUDE to locate 
  4306. included class definitions. SMINCLUDE specifies where to search for .IDL and 
  4307. .EFW files. Because every SOM class will have an include file for its parent 
  4308. class definition, you must set SMINCLUDE before running the SOM compiler. Its 
  4309. form is similar to the OS/2 PATH or DPATH environment variables, in that it can 
  4310. consist of one or more directory names, separated by a semicolon. Directory 
  4311. names can be specified with absolute or relative path names. The syntax is as 
  4312. follows: 
  4313.  
  4314.   SMINCLUDE=<dir1>[;<dir2>]+
  4315.  
  4316. For example: 
  4317.  
  4318.   SET SMINCLUDE=.;C:\TOOLKIT\SOM\INCLUDE;C:\TOOLKIT\IDL;
  4319.  
  4320. Note:  All command-line modifiers can be set in the environment by changing 
  4321.        them to UPPERCASE and preappending SM to them. 
  4322.  
  4323.  
  4324. ΓòÉΓòÉΓòÉ 7.3.5.6.4. SMKNOWNEXTS Environment Variable ΓòÉΓòÉΓòÉ
  4325.  
  4326. SMKNOWNEXTS add headers to user written emitters. The syntax is as follows: 
  4327.  
  4328.   SMKNOWNEXTS=ext[;ext]+
  4329.  
  4330. Note:  All command-line modifiers can be set in the environment by changing 
  4331.        them to UPPERCASE and preappending SM to them. 
  4332.  
  4333.  
  4334. ΓòÉΓòÉΓòÉ 7.3.5.6.5. SMTMP Environment Variable ΓòÉΓòÉΓòÉ
  4335.  
  4336. The SMTMP environment variable specifies the name of a directory that the SOM 
  4337. compiler uses to hold intermediate output files. The syntax is as follows: 
  4338.  
  4339.   SMTMP=<dir>
  4340.  
  4341. For example: 
  4342.  
  4343.   SET SMTMP=%TMP%
  4344.  
  4345. tells the SOM compiler to use the same directory for temporary files as given 
  4346. by the setting of the TMP environment variable. As a general rule, the 
  4347. directory indicated by SMTMP should never coincide with the directory used by 
  4348. the SOM compiler for its input or the emitted output files. 
  4349.  
  4350. Note:  All command-line modifiers can be set in the environment by changing 
  4351.        them to UPPERCASE and preappending SM to them. 
  4352.  
  4353.  
  4354. ΓòÉΓòÉΓòÉ 7.3.5.6.6. SOMIR Environment Variable ΓòÉΓòÉΓòÉ
  4355.  
  4356. SOMIR provides a list of IRs to search for. The syntax is as follows: 
  4357.  
  4358.  SOMIR=<path>[;<path>]+
  4359.  
  4360. Note:  All command-line modifiers can be set in the environment by changing 
  4361.        them to UPPERCASE and preappending SM to them. 
  4362.  
  4363.  
  4364. ΓòÉΓòÉΓòÉ 7.3.5.6.7. #pragma Directives ΓòÉΓòÉΓòÉ
  4365.  
  4366. There are two pragma directives: 
  4367.  
  4368.  #pragma somemittypes on                 Turns on the emission of global types. 
  4369.  
  4370.  #pragma somemittypes off                Turns off the emission of global 
  4371.                                          types. 
  4372.  
  4373.  #pragma modifier <modifier stm>         Used instead of modifier statement. 
  4374.  
  4375.  
  4376. ΓòÉΓòÉΓòÉ 7.3.5.6.8. Running SOM Emitters ΓòÉΓòÉΓòÉ
  4377.  
  4378. You complete the SOM compilation process by running the emitters. You can 
  4379. control the output of the emitters from the command line by typing: 
  4380.  
  4381.   COMMAND [-o filename] [-a name[=value]]*
  4382.  
  4383. where: 
  4384.  
  4385.  command              Is one of the following: 
  4386.  
  4387.                                     EMITH 
  4388.                                     EMITIH 
  4389.                                     EMITC 
  4390.                                     EMITDEF 
  4391.  
  4392.  -o                   Is an explicit name (including drive, path, and file-name 
  4393.                       extension) for the emitted output file. If this option is 
  4394.                       not specified, the output file is placed in the current 
  4395.                       directory, and the file-name extension defaults to a type 
  4396.                       appropriate to the selected emitter program. 
  4397.  
  4398.  -a name[=value]      Adds a global attribute. 
  4399.  
  4400.  
  4401. ΓòÉΓòÉΓòÉ 7.3.5.7. SOMCORBA ΓòÉΓòÉΓòÉ
  4402.  
  4403. SOMCORBA is a command script to convert to implicit pointers (like CORBA) for 
  4404. interface references. 
  4405.  
  4406.  
  4407. ΓòÉΓòÉΓòÉ 7.3.5.8. SOMDCHK ΓòÉΓòÉΓòÉ
  4408.  
  4409. SOMDCHK evaluates the environment to verify whether DSOM can operate correctly. 
  4410. The program generates messages that evaluate the DSOM environment. It 
  4411. determines whether the necessary SOM DLLs can be located, whether DSOM is 
  4412. enabled for workgroup (cross-machine) communication, whether Interface and 
  4413. Implementation Repositories can be located, and it displays the settings of 
  4414. important environment variables. In its "verbose" mode, SOMDCHK gives the 
  4415. default settings for DSOM environment variables and explains how DSOM uses 
  4416. them. 
  4417.  
  4418. The program is invoked from the command line using the syntax given below. The 
  4419. optional verbose setting can be turned on by including the -v option with the 
  4420. following command: 
  4421.  
  4422.   SOMDCHK [-v]
  4423.  
  4424.  
  4425. ΓòÉΓòÉΓòÉ 7.3.5.9. SOMDD ΓòÉΓòÉΓòÉ
  4426.  
  4427. SOMDD is the DSOM daemon. It must be started prior to running a DSOM 
  4428. application. The daemon can be started manually from the command line, or it 
  4429. could be started automatically from a start-up script run at boot time. It may 
  4430. be run in the background with the following command: 
  4431.  
  4432.   START SOMDD
  4433.  
  4434. The SOMDD program requires no parameters. An optional -q  parameters can be 
  4435. used to set "quiet" mode, to suppress messages. 
  4436.  
  4437.  
  4438. ΓòÉΓòÉΓòÉ 7.3.5.10. SOMDSVR ΓòÉΓòÉΓòÉ
  4439.  
  4440. SOMDSVR is the "generic" server program. It can be started either from the 
  4441. command line or automatically upon demand. When starting SOMDSVR from the 
  4442. command line, the server's implementation ID or alias must be supplied as an 
  4443. argument. The command syntax for starting a generic SOM server is: 
  4444.  
  4445.   SOMDSVR [impl_id | -a alias]
  4446.  
  4447.  
  4448. ΓòÉΓòÉΓòÉ 7.3.5.11. SOMENV ΓòÉΓòÉΓòÉ
  4449.  
  4450. SOMENV is a command script to set the environment variables required for SOM 
  4451. programming. This command script requires that the SOMBASE environment variable 
  4452. be set. 
  4453.  
  4454.  
  4455. ΓòÉΓòÉΓòÉ 7.3.5.12. SOMSTARS ΓòÉΓòÉΓòÉ
  4456.  
  4457. SOMSTARS is a command script to convert to explicit pointers for interface 
  4458. references. 
  4459.  
  4460.  
  4461. ΓòÉΓòÉΓòÉ 7.3.5.13. SOMXH ΓòÉΓòÉΓòÉ
  4462.  
  4463. SOMXH is a command script to create the .XH header files from the .IDL files 
  4464. located in the \TOOLKIT\SOM\INCLUDE subdirectory. 
  4465.  
  4466.  
  4467. ΓòÉΓòÉΓòÉ 7.3.5.14. WPIDL2XH ΓòÉΓòÉΓòÉ
  4468.  
  4469. WPIDL2XH.CMD is a command file to emit .XH header files from Workplace Shell 
  4470. .IDL files. 
  4471.  
  4472. To re-generate the .XH headers for C++, invoke this command file on each 
  4473. Workplace Shell class .IDL file from the Toolkit. It is only necessary to do 
  4474. this when you upgrade to a new level of SOM.  Invoking the SOMXH command script 
  4475. will create .XH files for you, as the Workplace Shell classes currently only 
  4476. maintain passthru sections for .H files for C. The syntax is as follows: 
  4477.  
  4478.   WPIDL2XH <inputfile>
  4479.  
  4480.  
  4481. ΓòÉΓòÉΓòÉ 7.3.6. Workplace Shell Tools ΓòÉΓòÉΓòÉ
  4482.  
  4483. This section describes the Workplace Shell tools which help you develop 
  4484. Workplace Shell programs. There are two Workplace Shell tools in this release: 
  4485.  
  4486.      OBJUTIL - Object Utility/2 
  4487.      WPCLSLST - Workplace Class List 
  4488.  
  4489.  
  4490. ΓòÉΓòÉΓòÉ 7.3.6.1. OBJUTIL ΓòÉΓòÉΓòÉ
  4491.  
  4492. OBJUTIL (Object Utility/2) is a new Workplace Shell tool that provides a 
  4493. facility for registering classes, and creating and modifying instances of 
  4494. classes. 
  4495.  
  4496.  
  4497. ΓòÉΓòÉΓòÉ 7.3.6.2. WPCLSLST ΓòÉΓòÉΓòÉ
  4498.  
  4499. WPCLSLST (Workplace Class List) creates a workplace object class and an 
  4500. instance of a workplace object class. Workplace objects are constructed using 
  4501. the SOM protocol and are instances of one of the following workplace object 
  4502. classes: 
  4503.  
  4504.  Predefined     These classes are defined by the system. Examples of predefined 
  4505.                 workplace object classes are WPObject, WPFileSystem, and 
  4506.                 WPAbstract. 
  4507.  
  4508.  Subclass       These classes are derived from existing predefined workplace 
  4509.                 object classes. They add or remove function; however, they 
  4510.                 retain the basic behavior of that class. 
  4511.  
  4512.  Replaced       These classes replace the class being subclassed. They notify 
  4513.                 the behavior of an instance of a predefined workplace object 
  4514.                 class without the instance being aware of the new class. 
  4515.  
  4516.  
  4517. ΓòÉΓòÉΓòÉ 7.3.6.2.1. Starting WPCLSLST ΓòÉΓòÉΓòÉ
  4518.  
  4519. To start the Workplace Class List, select the PM Development Tools folder, then 
  4520. select the WP Class List object. A window similar to the following appears: 
  4521.  
  4522. Using this window, you can: 
  4523.  
  4524.      Add, delete, and browse registered Workplace Class Objects 
  4525.      Create an instance of a Workplace Class Object 
  4526.      View the registered Workplace Class Object in the system. 
  4527.  
  4528.  
  4529. ΓòÉΓòÉΓòÉ 7.4. Online Documentation ΓòÉΓòÉΓòÉ
  4530.  
  4531. The following list describes manuals available online that might be of interest 
  4532. to users who develop applications for OS/2 Warp, Version 3. The OS/2 Warp, 
  4533. Version 3 Technical Library provides both guidance and reference information 
  4534. and can be used for OS/2 Warp, Version 3 development. It also explains How to 
  4535. Use Online Documents. The library includes the following online books: 
  4536.  
  4537.      Bidirectional Language Support Dev. Guide and Reference 
  4538.      Control Program Guide and Reference 
  4539.      Debug Kernel Reference 
  4540.      Graphics Programming Guide and Reference 
  4541.      Information Presentation Facility Guide and Reference 
  4542.      Multimedia Application Programming Guide 
  4543.      Multimedia Programming Reference 
  4544.      Multimedia Subsystem Programming Guide 
  4545.      Presentation Manager Programming Guide and Reference 
  4546.      SOM Programmers Reference 
  4547.      SOM User's Guide 
  4548.      Tools Reference 
  4549.      Workplace Shell Programming Guide 
  4550.      Workplace Shell Programming Reference 
  4551.  
  4552.  
  4553. ΓòÉΓòÉΓòÉ 7.4.1. Bidirectional Language Support Dev. Guide and Reference ΓòÉΓòÉΓòÉ
  4554.  
  4555. This book provides information about the interface (API) for the Arabic and 
  4556. Hebrew languages thus allowing programmers to create Arabic or Hebrew 
  4557. applications for this environment. 
  4558.  
  4559. The Bidirectional support in PM is provided in the Arabic and Hebrew language 
  4560. versions of the OS/2 operating system. The support is active/configured when 
  4561. the COUNTRY selection during OS/2 installation is Arabic or Hebrew in these 
  4562. versions. 
  4563.  
  4564.  
  4565. ΓòÉΓòÉΓòÉ 7.4.2. Control Program Guide and Reference ΓòÉΓòÉΓòÉ
  4566.  
  4567. This book provides the C-language syntax for each of the base operating-system 
  4568. application programming interface (API), including input and output parameters, 
  4569. data structures, data types, return codes, and example codes. Guidance 
  4570. information is also provided to assist you in developing applications using 
  4571. these items. API functions (indicated by the prefix "Dos") are presented by 
  4572. component; such as Error Management, Exception Management, and File System. The 
  4573. API functions, within each of the components to which they apply, are listed in 
  4574. alphabetic order. API functions also are available from a single alphabetic 
  4575. list. The online Control Program Guide and Reference contains the information 
  4576. of the Control Program Programming Guide and the Control Program Programming 
  4577. Reference books. 
  4578.  
  4579.  
  4580. ΓòÉΓòÉΓòÉ 7.4.3. Debug Kernel Reference ΓòÉΓòÉΓòÉ
  4581.  
  4582. This book provides details on the debug kernel, installation, debugging 
  4583. commands and syntax, and the debug PM interface. 
  4584.  
  4585.  
  4586. ΓòÉΓòÉΓòÉ 7.4.4. Graphics Programming Guide and Reference ΓòÉΓòÉΓòÉ
  4587.  
  4588. This book describes the concepts associated with graphical output--presentation 
  4589. spaces, device contexts, graphic primitives, fonts--and how to prepare 
  4590. graphical output for display and printing.  It provides the C-language syntax 
  4591. for all the graphical programming interface (GPI), including input and output 
  4592. parameters, data structures, data types, return codes, and example codes. 
  4593. Guidance information is also provided to assist you in developing applications 
  4594. using these items. GPI functions (indicated by the prefix "Gpi") are listed in 
  4595. alphabetic order. The online Graphics Programming Guide and Reference contains 
  4596. the information of the Graphics Programming Guide and the Graphics Programming 
  4597. Reference books. 
  4598.  
  4599.  
  4600. ΓòÉΓòÉΓòÉ 7.4.5. Information Presentation Facility Guide and Reference ΓòÉΓòÉΓòÉ
  4601.  
  4602. This book describes the concepts--help windows, hypertext linking, 
  4603. author-controlled viewports, dynamic data formatting--and the functions used 
  4604. for implementing help in OS/2 applications. It describes how to create online 
  4605. help and information. It also contains an alphabetic list of IPF tags, symbols, 
  4606. and control words. The IPFC error messages, window functions, dynamic data 
  4607. formatting functions, and help manager messages and functions are included. 
  4608.  
  4609.  
  4610. ΓòÉΓòÉΓòÉ 7.4.6. Multimedia Application Programming Guide ΓòÉΓòÉΓòÉ
  4611.  
  4612. This book describes the concepts associated with managing audio and video data 
  4613. and hardware using an extendable architecture that includes logical media 
  4614. devices (amplifier-mixer, waveform audio, MIDI sequencer, CD-audio, CD-XA, 
  4615. digital video, and videodisc) and I/O procedures for supporting various file 
  4616. formats. 
  4617.  
  4618.  
  4619. ΓòÉΓòÉΓòÉ 7.4.7. Multimedia Programming Reference ΓòÉΓòÉΓòÉ
  4620.  
  4621. This book describes the media control interface, PM graphic push buttons, 
  4622. secondary windows functions, multimedia I/O services, direct interface video 
  4623. extensions (DIVE), and subsystem services for synchronization and streaming. 
  4624.  
  4625.  
  4626. ΓòÉΓòÉΓòÉ 7.4.8. Multimedia Subsystem Programming Guide ΓòÉΓòÉΓòÉ
  4627.  
  4628. This book describes the subsystem components--media control driver, stream 
  4629. handler, and I/O procedure--that support a multimedia device. 
  4630.  
  4631.  
  4632. ΓòÉΓòÉΓòÉ 7.4.9. OS/2 Tools Reference ΓòÉΓòÉΓòÉ
  4633.  
  4634. This book describes the tools that are included in the IBM Developer's Toolkit 
  4635. for OS/2 Warp, Version 3. 
  4636.  
  4637.  
  4638. ΓòÉΓòÉΓòÉ 7.4.10. Presentation Manager Programming Guide and Reference ΓòÉΓòÉΓòÉ
  4639.  
  4640. This book provides the C-language syntax for each of the base operating-system 
  4641. application programming interface (API), including input and output parameters, 
  4642. data structures, data types, return codes, and example codes. API function 
  4643. prefixes include Drg (dragdrop), Ddf (dynamic data format), Prf (profile), Spl 
  4644. (spooler), and Win (window). Also included are application hooks, and PM 
  4645. messages. The online Presentation Manager Programming Guide and Reference 
  4646. contains the information of the Presentation Manager Programming Guide and 
  4647. Presentation Manager Programming Reference books. 
  4648.  
  4649.  
  4650. ΓòÉΓòÉΓòÉ 7.4.11. REXX Program Reference ΓòÉΓòÉΓòÉ
  4651.  
  4652. This book provides detailed descriptions of the REXX functions. 
  4653.  
  4654.  
  4655. ΓòÉΓòÉΓòÉ 7.4.12. SOM Programmers Reference ΓòÉΓòÉΓòÉ
  4656.  
  4657. This book is a complete reference for each of the classes and methods used for 
  4658. the object-oriented programming environment. Also included are System Object 
  4659. Model (SOM) C-language and C++ bindings, the Object Interface Definition 
  4660. Language syntax, and the SOM compiler command syntax. 
  4661.  
  4662.  
  4663. ΓòÉΓòÉΓòÉ 7.4.13. SOM User's Guide ΓòÉΓòÉΓòÉ
  4664.  
  4665. This book explains how programmers using C, C++, and other languages can: 
  4666.  
  4667.      Implement class libraries that exploit the SOM library-packaging 
  4668.       technology 
  4669.  
  4670.      Develop client programs that use class libraries that were built using 
  4671.       SOM 
  4672.  
  4673.      Develop applications that use the frameworks supplied with the SOMobjects 
  4674.       Toolkit, class libraries that facilitate development of object-oriented 
  4675.       applications. 
  4676.  
  4677.  
  4678. ΓòÉΓòÉΓòÉ 7.4.14. Workplace Shell Programming Guide ΓòÉΓòÉΓòÉ
  4679.  
  4680. This book describes the concepts associated with object-oriented programming 
  4681. for the OS/2 operating system--SOM, Workplace Shell classes and methods--and 
  4682. how to create object-oriented applications for the OS/2 Desktop. 
  4683.  
  4684.  
  4685. ΓòÉΓòÉΓòÉ 7.4.15. Workplace Shell Programming Reference ΓòÉΓòÉΓòÉ
  4686.  
  4687. This book provides the detailed descriptions of the Workplace Shell 
  4688. object-oriented programming interface. 
  4689.  
  4690.  
  4691. ΓòÉΓòÉΓòÉ 7.4.16. How to Use Online Documents ΓòÉΓòÉΓòÉ
  4692.  
  4693. The online documents in the Warp Toolkit were developed with IPF. IPF displays 
  4694. information through a familiar user interface and lets you do the following: 
  4695.  
  4696.      View a table of contents from which you can quickly gain access to a 
  4697.       category 
  4698.      View the category and select related topics from a menu 
  4699.      View multiple windows of related information for comparison values 
  4700.      Search for a topic throughout the document 
  4701.      Copy the contents of a topic to the system clipboard for editing with the 
  4702.       OS/2 System Editor, the Enhanced Editor, or any other editor with this 
  4703.       capability 
  4704.      Copy the contents of a topic to a temporary file for editing with a text 
  4705.       editor. 
  4706.  
  4707.  When installed, the online documents are added to the Toolkit Information 
  4708.  folder. To access the online documents, double-click on the folder, then 
  4709.  select the appropriate book. A window that has a table of contents (Contents 
  4710.  window) will appear. 
  4711.  
  4712.  When the Contents window first appears, some categories have a plus sign (+) 
  4713.  beside them. The plus sign indicates that additional topics are available. 
  4714.  Using mouse button 1, click on the plus sign to expand the category. 
  4715.  
  4716.  For more information about using the Warp Toolkit online documents, refer to 
  4717.  the How to Use the Using Your Toolkit Book section. 
  4718.  
  4719.  
  4720. ΓòÉΓòÉΓòÉ 7.5. BETA ΓòÉΓòÉΓòÉ
  4721.  
  4722. The BETA component contains new tools, samples, online documentation and API 
  4723. support for function in future versions of the operating system. Execution of 
  4724. these pieces will typically require additional runtime support provided by a 
  4725. Beta version of OS/2 Warp. In general, Beta versions of the operating system 
  4726. are available on The Developer Connection for OS/2. However, there will be 
  4727. cases, as in this volume's entertainment samples and tools , where the runtime 
  4728. support is included with the Developer's Toolkit for OS/2 Warp. 
  4729.  
  4730. The content of this component can vary from volume to volume of The Developer 
  4731. Connection for OS/2. This component is not installed by default by the 
  4732. Developer's Toolkit for OS/2 installation program, but the component can be 
  4733. selected prior to installing. All files for installed via the BETA component 
  4734. are installed in the \TOOLKIT\BETA directory structure by default. 
  4735.  
  4736. In this release of the Warp Toolkit, the BETA component includes Entertainment 
  4737. Support and IBM Developer API Extensions for OS/2. 
  4738.  
  4739. Summer games are here! 
  4740.  
  4741. PC game developers have been asking for code, tools, and samples specifically 
  4742. related to their entertainment software and games requirements. So, we have 
  4743. created new entertainment samples and tools just for you--the entertainment 
  4744. software developer. 
  4745.  
  4746. In our very first Beta version, you will find audio, video, networking, and 
  4747. joystick functionality that has been created or enhanced with PC gamers in 
  4748. mind. 
  4749.  
  4750. If you have a question regarding any of the entertainment components, refer to 
  4751. the entertainment online documentation as a first step. If you still need 
  4752. assistance, call 1-800-553-1623 for technical support. 
  4753.  
  4754.  
  4755. ΓòÉΓòÉΓòÉ 7.5.1. BRender Entertainment Samples ΓòÉΓòÉΓòÉ
  4756.  
  4757. There is one BRender sample in this release: 
  4758.  
  4759.  ROBOT - Walking Robot
  4760.  
  4761.  
  4762. ΓòÉΓòÉΓòÉ 7.5.1.1. ROBOT ΓòÉΓòÉΓòÉ
  4763.  
  4764. Note:  You must read the Argonaut Non-Commercial License before using this 
  4765.        sample. 
  4766.  
  4767.  ROBOT demonstrates how to use the new OS/2 version of Argonaut's BRender 
  4768.  technology. The BRender technology allows for real-time, three-dimensional 
  4769.  (3D) manipulation of actors. An actor can be the actual object model, a 
  4770.  camera, or a light. The objects are composed of polygons. These polygons can 
  4771.  be moved independently or in conjunction with each other. 
  4772.  
  4773.  While BRender provides all the functions necessary for the 3D transformation 
  4774.  of the scene, it requires that system-specific code be used for blitting to 
  4775.  the screen.  There are two parts to the design. One is the use of BRender to 
  4776.  perform the 3D manipulations, and the other is the use of DIVE (DIVE provides 
  4777.  a faster method of blitting) to allocate and display the image buffer and to 
  4778.  do any palette manipulations. 
  4779.  
  4780.  ROBOT does the following: 
  4781.  
  4782.      Performs initialization 
  4783.      Imports data for models, materials and textures 
  4784.      Renders the scene 
  4785.      Modifies object positions and orientations via user interface. 
  4786.  
  4787.  This sample demonstrates a robot walking. The mouse can be used to zoom in and 
  4788.  out and also to rotate the robot in 3D space. 
  4789.  
  4790.  
  4791. ΓòÉΓòÉΓòÉ 7.5.1.1.1. Starting ROBOT ΓòÉΓòÉΓòÉ
  4792.  
  4793. You can start ROBOT in two ways: 
  4794.  
  4795.      From the command line, change to the TOOLKIT\BETA\BRENDER\SAMPLES\ROBOT 
  4796.       subdirectory and type: 
  4797.  
  4798.               ROBOT
  4799.  
  4800.      From the Desktop, open the Toolkit folder and then: 
  4801.  
  4802.         1. Open the BETA folder. 
  4803.  
  4804.         2. Open the BRender folder. 
  4805.  
  4806.         3. Open the BRender Samples folder. 
  4807.  
  4808.         4. Double-click on Robot. 
  4809.  
  4810.  
  4811. ΓòÉΓòÉΓòÉ 7.5.2. Entertainment Samples ΓòÉΓòÉΓòÉ
  4812.  
  4813. The entertainment samples provided with this release are all new Beta samples. 
  4814. They are categorized as follows: 
  4815.  
  4816.      Audio Samples 
  4817.      Input Device Sample 
  4818.      Network Sample 
  4819.      Video Sample 
  4820.  
  4821.  
  4822. ΓòÉΓòÉΓòÉ 7.5.2.1. Audio Samples ΓòÉΓòÉΓòÉ
  4823.  
  4824. There are two audio samples in this release: 
  4825.  
  4826.      DAUDIO - Direct Audio 
  4827.      MIDISAMP - Real Time MIDI 
  4828.  
  4829.  
  4830. ΓòÉΓòÉΓòÉ 7.5.2.1.1. DAUDIO ΓòÉΓòÉΓòÉ
  4831.  
  4832. DAUDIO (direct audio) demonstrates the use of the direct audio interface. This 
  4833. high speed audio interface allows an application to send audio data directly to 
  4834. the amp-mixer device. The sample demonstrates the steps required to set up and 
  4835. use this new interface for playing and recording digital audio data. 
  4836.  
  4837. Hardware requirements: 
  4838.  
  4839.      Computer capable of running OS/2 Warp 
  4840.      Sound Card 
  4841.      Speakers or Headphones. 
  4842.  
  4843.  Software requirements: 
  4844.  
  4845.      OS/2 Warp 
  4846.      Multimedia support. 
  4847.  
  4848.  
  4849. ΓòÉΓòÉΓòÉ 7.5.2.1.1.1. Installing DAUDIO ΓòÉΓòÉΓòÉ
  4850.  
  4851. This version of the entertainment samples and tools includes Beta versions of 
  4852. AMPMXMCD.DLL and AUDIOSH.DLL. The original versions of these files (located in 
  4853. MMOS2\DLL) must be replaced with the Beta files before any application 
  4854. utilizing the direct audio interface can work. The Beta versions of these .DLL 
  4855. files are located in the TOOLKIT\BETA\SAMPLES\ENTOOLKT\AUDIO\DAUDIO 
  4856. subdirectory. To replace these .DLL files: 
  4857.  
  4858.      Double-click on Sound located in the Multimedia folder and ensure Enable 
  4859.       system sound is not selected. 
  4860.  
  4861.      Shut down and restart your system. This will unlock the AMPMXMCD.DLL and 
  4862.       AUDIOSH.DLL files. 
  4863.  
  4864.      Back up the AMPMXMCD.DLL and AUDIOSH.DLL files. 
  4865.  
  4866.      Copy the AMPMXMCD.DLL and AUDIOSH.DLL files (located in 
  4867.       \TOOLKIT\BETA\DLL) to the MMOS2\DLL subdirectory. 
  4868.  
  4869.      Double-click on Sound located in the Multimedia folder and select Enable 
  4870.       system sounds. 
  4871.  
  4872.  
  4873. ΓòÉΓòÉΓòÉ 7.5.2.1.1.2. Starting DAUDIO ΓòÉΓòÉΓòÉ
  4874.  
  4875. You can start DAUDIO in two ways: 
  4876.  
  4877.      From the command line, change to the 
  4878.       TOOLKIT\BETA\SAMPLES\ENTOOLKT\AUDIO\DAUDIO subdirectory and type: 
  4879.  
  4880.               DAUDIO
  4881.  
  4882.      From the Desktop, open the Toolkit folder and then: 
  4883.  
  4884.         1. Open the BETA folder 
  4885.  
  4886.         2. Open the Beta Entertainment Samples folder. 
  4887.  
  4888.         3. Open the Audio Samples folder. 
  4889.  
  4890.         4. Double-click on Direct Audio. 
  4891.  
  4892.  
  4893. ΓòÉΓòÉΓòÉ 7.5.2.1.2. MIDISAMP ΓòÉΓòÉΓòÉ
  4894.  
  4895. MIDISAMP illustrates the use of the real-time MIDI support programming concepts 
  4896. and usage of the new real-time MIDI API. This sample program illustrates the 
  4897. use of the new real-time MIDI API by initializing and setting up a small MIDI 
  4898. node network and subsequently sending a MIDI message from an application node 
  4899. to a hardware node, thereby demonstrating MIDI playback. 
  4900.  
  4901. Hardware requirements: 
  4902.  
  4903.      Computer capable of running OS/2 Warp 
  4904.      Speaker or headphones 
  4905.      Sound card 
  4906.  
  4907.       Note:  The README for MIDISAMP contains specific information regarding 
  4908.              device driver installation for running MIDISAMP. (This README is 
  4909.              located in the TOOLKIT\BETA\SAMPLES\ENTOOLKT\AUDIO\MIDI 
  4910.              subdirectory.) 
  4911.  
  4912.       Software requirements: 
  4913.         -  OS/2 Warp 
  4914.         -  Multimedia support 
  4915.         -  Standard MIDI file. 
  4916.  
  4917.  
  4918. ΓòÉΓòÉΓòÉ 7.5.2.1.2.1. Known Limitations ΓòÉΓòÉΓòÉ
  4919.  
  4920. Currently, MIDISAMP might halt when another process attempts to play a sound 
  4921. (including system sounds) while the sample is running. Therefore, you should 
  4922. disable system sound before running MIDISAMP. To disable system sound, 
  4923. double-click on Sound located in the Multimedia folder and ensure Enable system 
  4924. sound is not selected. 
  4925.  
  4926.  
  4927. ΓòÉΓòÉΓòÉ 7.5.2.1.2.2. Starting MIDISAMP ΓòÉΓòÉΓòÉ
  4928.  
  4929. You can start MIDISAMP in two ways: 
  4930.  
  4931.      From the command line, change to the 
  4932.       TOOLKIT\BETA\SAMPLES\ENTOOLKT\AUDIO\MIDI subdirectory and type: 
  4933.  
  4934.               MIDISAMP filename.mid
  4935.  
  4936.       where: 
  4937.  
  4938.       filename.mid  is a MIDI file. 
  4939.  
  4940.      From the Desktop, open the Toolkit folder and then: 
  4941.  
  4942.         1. Open the BETA folder. 
  4943.  
  4944.         2. Open the Beta Entertainment Samples folder. 
  4945.  
  4946.         3. Open the Audio Samples folder. 
  4947.  
  4948.         4. Double-click on MIDI Samp. 
  4949.  
  4950.  Sample MIDI files are located in the MMOS2\SOUNDS subdirectory. 
  4951.  
  4952.  
  4953. ΓòÉΓòÉΓòÉ 7.5.2.2. Input Device Sample ΓòÉΓòÉΓòÉ
  4954.  
  4955. There is one input device sample in this release: 
  4956.  
  4957. JOYSTICK
  4958.  
  4959.  
  4960. ΓòÉΓòÉΓòÉ 7.5.2.2.1. JOYSTICK ΓòÉΓòÉΓòÉ
  4961.  
  4962. JOYSTICK (OS/2 Joystick device driver) allows an OS/2 Warp application to 
  4963. access the machine's game port.  The driver provides an interface or a set of 
  4964. API function calls for reading the joysticks. 
  4965.  
  4966. The Joystick API is implemented within the OS/2 Joystick device driver. This 
  4967. sample code shows how to use the OS/2 Joystick API and supports any two 
  4968. standard joysticks or one joystick with an advanced feature, such as a hatch or 
  4969. throttle control. 
  4970.  
  4971. Currently, there are no high-level versions of access to these functions, 
  4972. except through the IOCtl interface. This sample issues DosDevIOCtl to request 
  4973. status or sends commands to the OS/2 Joystick device driver. The API function 
  4974. number, an input parameter to DosDevIOCtl, is defined by the OS/2 Joystick 
  4975. device driver. 
  4976.  
  4977. JOYSTICK registers with the OS/2 Joystick device driver via DosOpen, with the 
  4978. device name "GAME$". It sends commands to the Joystick device driver via 
  4979. DosDevIOCtl after opening the new GAME$ device. These commands or IOCtls are 
  4980. subfunctions that are issued through DosDevIOCtl. 
  4981.  
  4982. This sample passes proper parameters and required data buffers or data 
  4983. structures when calling the API. The returned data is examined and a proper 
  4984. message is displayed to the screen. If the call is unsuccessful, an error 
  4985. message will be displayed and the sample will be terminated. 
  4986.  
  4987. JOYSTICK shows how to interface with the OS/2 Joystick API via the following 
  4988. functions: 
  4989.  
  4990.      Get the version number of the driver, API function x'01'. 
  4991.      Get the device parameters, API function x'02'. 
  4992.      Set the device parameters, API function x'03'. 
  4993.      Get the calibration values, API function x'04'. 
  4994.      Get the current joystick status, API function x'10'. 
  4995.      Get the joystick status at next button press, API function x'11'. 
  4996.      Get the joystick status at next sample, API function x'12'. 
  4997.  
  4998.  It also accesses other OS/2 functions such as: 
  4999.  
  5000.      DosOpen 
  5001.  
  5002.       DosOpen function must be called first to open the device driver name 
  5003.       (GAME$) prior to any API function call to the OS/2 Joystick device 
  5004.       driver. 
  5005.  
  5006.      DosClose 
  5007.  
  5008.       When the program terminates, DosClose must be called to end the program 
  5009.       properly. 
  5010.  
  5011.  Hardware Requirements: 
  5012.  
  5013.      Joystick device 
  5014.  
  5015.  Software Requirements: 
  5016.  
  5017.      OS/2 Warp 
  5018.      IBM C Set ++ compiler 2.x or 3.x 
  5019.      Developer's Toolkit 3.0 
  5020.      GAMEDD.SYS driver 
  5021.  
  5022.       Note:  An error message will be displayed and the program will terminate 
  5023.              if the driver is not installed. 
  5024.  
  5025.  The design of this sample is based on the set of functions provided by the 
  5026.  OS/2 Joystick device driver. 
  5027.  
  5028.  The CONFIG.SYS should include the following statement: 
  5029.  
  5030.   DEVICE=pathname\GAMEDD.SYS
  5031.  
  5032.  where: 
  5033.  
  5034.  pathname  is the path where GAMEDD.SYS is located. 
  5035.  
  5036.  
  5037. ΓòÉΓòÉΓòÉ 7.5.2.2.1.1. Starting JOYSTICK ΓòÉΓòÉΓòÉ
  5038.  
  5039. You can start JOYSTICK in two ways: 
  5040.  
  5041.      From the command line, change to the 
  5042.       TOOLKIT\BETA\SAMPLES\ENTOOLKT\INPUT\JOYSTICK subdirectory and type: 
  5043.  
  5044.               JOYSTICK
  5045.  
  5046.      From the Desktop, open the Toolkit folder and then: 
  5047.  
  5048.         1. Open the BETA folder. 
  5049.  
  5050.         2. Open the Beta Entertainment Samples folder. 
  5051.  
  5052.         3. Open the Input Samples folder. 
  5053.  
  5054.         4. Double-click on Joytest. 
  5055.  
  5056.  
  5057. ΓòÉΓòÉΓòÉ 7.5.2.3. Network Sample ΓòÉΓòÉΓòÉ
  5058.  
  5059. There is one network sample in this release: 
  5060.  
  5061.  TICTAC - TicTacToe
  5062.  
  5063.  
  5064. ΓòÉΓòÉΓòÉ 7.5.2.3.1. TICTAC ΓòÉΓòÉΓòÉ
  5065.  
  5066. TICTAC (TicTacToe) demonstrates how to use networking functions to develop a 
  5067. multiplayer, networked game. 
  5068.  
  5069. These networking support functions are referred to as OS/2 Warp networking 
  5070. functions. These functions support multiple transports such as TCP/IP, SPX/IPX, 
  5071. and OEM stacks. The current functions implement support for TCP/IP transport 
  5072. only. 
  5073.  
  5074. This sample uses the Warp networking functions to illustrate a 2-player 
  5075. TicTacToe game, where two players play against each other. 
  5076.  
  5077. Software Requirements: 
  5078.  
  5079.      WARPNET.DLL 
  5080.      OS/2 TCP/IP Version 2.x or higher 
  5081.      OS/2 Warp 3.0 or higher. 
  5082.  
  5083.  
  5084. ΓòÉΓòÉΓòÉ 7.5.2.3.1.1. Starting TICTAC ΓòÉΓòÉΓòÉ
  5085.  
  5086. You can start TICTAC in two ways: 
  5087.  
  5088.      From the command line, change to the 
  5089.       TOOLKIT\BETA\SAMPLES\ENTOOLKT\NETWORK\TICTAC subdirectory and type: 
  5090.  
  5091.               TICTAC
  5092.  
  5093.      From the Desktop, open the Toolkit folder and then: 
  5094.  
  5095.         1. Open the BETA folder. 
  5096.  
  5097.         2. Open the Beta Entertainment Samples folder. 
  5098.  
  5099.         3. Open the Network Samples folder. 
  5100.  
  5101.         4. Double-click on TicTac. 
  5102.  
  5103.  
  5104. ΓòÉΓòÉΓòÉ 7.5.2.3.1.2. Warp Networking Functions ΓòÉΓòÉΓòÉ
  5105.  
  5106. The Warp networking functions represent a standard application layer interface 
  5107. to OS/2 entertainment software for networked multiplayer support. These 
  5108. networking functions support multiple transports such as TCP/IP, SPX/IPX, and 
  5109. OEM stacks. Warp networking functions enable creation of multiplayer networked 
  5110. entertainment software, such as games. This first implementation of the Warp 
  5111. networking functions uses TCP/IP. 
  5112.  
  5113. Warp networking functions define a well known UDP port just for entertainment 
  5114. software. The Warp networking game server or the daemon monitors the well-known 
  5115. game port and routes packets received at this port to the application. 
  5116.  
  5117. Note:  The TCP/IP Services file (located in \TCPIP\ETC\SERVICES) must be 
  5118.        modified to include the well known Game port entry. The modification 
  5119.        would look similar to the following: 
  5120.  
  5121.                 GAMED 5022/UDP #Well Known UDP based Game Port.
  5122.  
  5123.  
  5124. ΓòÉΓòÉΓòÉ 7.5.2.3.1.3. Known Limitations ΓòÉΓòÉΓòÉ
  5125.  
  5126. Currently, the receive function (WarpnetPackRecv) for Warp networking can only 
  5127. receive header information with no packet data. 
  5128.  
  5129.  
  5130. ΓòÉΓòÉΓòÉ 7.5.2.4. Video Sample ΓòÉΓòÉΓòÉ
  5131.  
  5132. There is one video sample in this release: 
  5133.  
  5134.  FSDIVE - Full Screen DIVE
  5135.  
  5136.  
  5137. ΓòÉΓòÉΓòÉ 7.5.2.4.1. FSDIVE ΓòÉΓòÉΓòÉ
  5138.  
  5139. FSDIVE (full-screen DIVE) demonstrates the use of multimedia's direct interface 
  5140. video extensions (DIVE) by repeatedly displaying a short animation sequence. 
  5141. The animation is performed by sequentially displaying a series of up to 16 bit 
  5142. maps in a PM window. You can display the default bit maps, shipped with the 
  5143. sample, or specify the bit maps by passing the file names as command line 
  5144. parameters. 
  5145.  
  5146. After the application is started, you can move or resize the window and observe 
  5147. the effects on the frame rate of the animation (displayed on the title bar). 
  5148.  
  5149. The latest version of the DIVE interface has been enhanced to allow an 
  5150. application to take over the display and change the resolution. This allows an 
  5151. application to run in a full screen without paying the performance penalty of 
  5152. maintaining a high-resolution Desktop. 
  5153.  
  5154. Note:  Before the full-screen DIVE sample can run in full-screen mode, 
  5155.        full-screen support must be installed by running GSRVINST.EXE (located 
  5156.        in \TOOLKIT\BETA\SAMPLES\ENTOOLKT\VIDEO\FSDIVE). See the GAMESRVR.DOC 
  5157.        file in the same directory for more details. Once the game server DLL is 
  5158.        installed, full-screen DIVE can be activated by using the Alt+Home hot 
  5159.        key. 
  5160.  
  5161.  
  5162. ΓòÉΓòÉΓòÉ 7.5.2.4.1.1. Starting FSDIVE ΓòÉΓòÉΓòÉ
  5163.  
  5164. You can start FSDIVE in two ways: 
  5165.  
  5166.      From the command line, change to the 
  5167.       TOOLKIT\BETA\SAMPLES\ENTOOLKT\VIDEO\FSDIVE subdirectory and type: 
  5168.  
  5169.               FSDIVE
  5170.  
  5171.      From the Desktop, open the Toolkit folder and then: 
  5172.  
  5173.         1. Open the BETA folder. 
  5174.  
  5175.         2. Open the Beta Entertainment Samples folder. 
  5176.  
  5177.         3. Open the Video Samples folder. 
  5178.  
  5179.         4. Double-click on FS Dive. 
  5180.  
  5181.  
  5182. ΓòÉΓòÉΓòÉ 7.5.3. Entertainment Tools ΓòÉΓòÉΓòÉ
  5183.  
  5184. The following Beta entertainment tool is available with this release: 
  5185.  
  5186.  RINST2 - REXX Installation Aid for Games DOS Programs
  5187.  
  5188.  
  5189. ΓòÉΓòÉΓòÉ 7.5.3.1. RINST2 ΓòÉΓòÉΓòÉ
  5190.  
  5191. RINST2 is a REXX tool that assists you in installing any entertainment or DOS 
  5192. program. It creates a Workplace Shell program, associates an icon, and sets the 
  5193. DOS setting as appropriate. It also offers the chance to run a setup program as 
  5194. part of the installation. This tool can easily be used to install any type of 
  5195. program. 
  5196.  
  5197. Note:  OS/2 REXX must be installed and loaded prior to running this program. 
  5198.  
  5199.  
  5200. ΓòÉΓòÉΓòÉ 7.5.3.1.1. Starting RINST2 ΓòÉΓòÉΓòÉ
  5201.  
  5202. To start RINST2 from the command line, change to the TOOLKIT\BETA\BIN 
  5203. subdirectory and type: 
  5204.  
  5205.   RINST2
  5206.  
  5207.  
  5208. ΓòÉΓòÉΓòÉ 7.5.3.1.2. Using RINST2 ΓòÉΓòÉΓòÉ
  5209.  
  5210. To customize this tool, use a text editor and change the  title, Raptor, and 
  5211. the program name, RAP.EXE, to meet your needs. 
  5212.  
  5213.   title = "Raptor"
  5214.   rc    = SysFileTree("RAP.EXE",fspec,"FO")
  5215.  
  5216.  
  5217. ΓòÉΓòÉΓòÉ 7.5.4. Entertainment Online Documentation ΓòÉΓòÉΓòÉ
  5218.  
  5219. There are five new entertainment online books, which are located in the 
  5220. \TOOLKIT\BETA\BOOK subdirectory. 
  5221.  
  5222.      BRender Concise Guide 
  5223.      BRender Technical Reference 
  5224.      Direct Audio Interface 
  5225.      Entertainment Programming Guide and Reference 
  5226.      Real Time MIDI 
  5227.  
  5228.  You can also access these books from the Desktop by opening the Toolkit 
  5229.  folder, then the BETA folder, and then the Beta Toolkit Information folder. 
  5230.  
  5231.  
  5232. ΓòÉΓòÉΓòÉ 7.5.4.1. BRender Concise Guide ΓòÉΓòÉΓòÉ
  5233.  
  5234. This book describes the BRender Power Rendering System Application Programming 
  5235. Interface (API), shows how the components of the BRender system work as a 
  5236. whole, and gives some idea of the capabilities of this system. 
  5237.  
  5238.  
  5239. ΓòÉΓòÉΓòÉ 7.5.4.2. BRender Technical Reference ΓòÉΓòÉΓòÉ
  5240.  
  5241. This book provides documentation support for the BRender Power Rendering 
  5242. System, a real-time, 3D graphics software by Argonaut Technologies Ltd. 
  5243.  
  5244. Argonaut's BRender 3D graphics API is only distributed under Argonaut's 
  5245. end-user license. The BRender Sample provides a limited license permitting you 
  5246. to evaluate the product. Should you wish to include the BRender Power Rendering 
  5247. System in your entertainment software, you need to contact Argonaut for a 
  5248. commercial license. 
  5249.  
  5250.  
  5251. ΓòÉΓòÉΓòÉ 7.5.4.3. Direct Audio Interface ΓòÉΓòÉΓòÉ
  5252.  
  5253. This book provides an overview of the direct audio interface including 
  5254. descriptions of messages and associated data types. 
  5255.  
  5256.  
  5257. ΓòÉΓòÉΓòÉ 7.5.4.4. Entertainment Programming Guide and Reference ΓòÉΓòÉΓòÉ
  5258.  
  5259. This book is written for the developer interested in writing entertainment 
  5260. software for OS/2 Warp. It contains information about video support, audio 
  5261. support, networking, and input devices used specifically in entertainment 
  5262. development, such as: 
  5263.  
  5264.      OS/2 Joystick device driver 
  5265.      Full-screen DIVE (Direct Interface Video Extensions) 
  5266.      Multiplayer networking API 
  5267.  
  5268.  
  5269. ΓòÉΓòÉΓòÉ 7.5.4.5. Real Time MIDI ΓòÉΓòÉΓòÉ
  5270.  
  5271. This book provides a discussion of the new real-time MIDI architecture and 
  5272. introduces the real-time MIDI application programming interface (API) including 
  5273. detailed descriptions of the real-time MIDI functions and associated data 
  5274. types. 
  5275.  
  5276.  
  5277. ΓòÉΓòÉΓòÉ 7.5.5. IBM Developer API Extensions for OS/2 Samples ΓòÉΓòÉΓòÉ
  5278.  
  5279. The following samples are included supporting the IBM Developer API Extensions 
  5280. for OS/2: 
  5281.  
  5282.      HiWorld 
  5283.      ToyBox 
  5284.      WinMain Wrapper Function (MAIN.C) 
  5285.      DLL Initialization Entry Point (DLLMAIN.C) 
  5286.  
  5287.  
  5288. ΓòÉΓòÉΓòÉ 7.5.5.1. DLL Initialization Entry Point ΓòÉΓòÉΓòÉ
  5289.  
  5290. The DLLMAIN.C file (located in the \TOOLKIT\BETA\SAMPLES\DAPIE\DLLENTRY 
  5291. subdirectory) contains the DLL initialization/termination function, which is 
  5292. called when a process gains or loses access to the DLL. The .DEF file used to 
  5293. build the DLL needs to specify INITINSTANCE and TERMINSTANCE; otherwise, this 
  5294. function will only be called for the first process to gain access and the last 
  5295. process to free up the DLL. 
  5296.  
  5297. This implementation is for IBM C Set ++ and assumes that the C runtime library 
  5298. is being statically linked to the DLL and that the library uses C++ classes. 
  5299.  
  5300.  
  5301. ΓòÉΓòÉΓòÉ 7.5.5.2. HiWorld ΓòÉΓòÉΓòÉ
  5302.  
  5303. HiWorld is a simple Windows 32-bit (Win32) application that displays the 
  5304. following text, centered in the client area of the main window: 
  5305.  
  5306. Hello, World
  5307.  
  5308. There are two versions of the HiWorld sample. The Win32 version, located in the 
  5309. \TOOLKIT\BETA\SAMPLES\DAPIE\HIWORLD subdirectory, will build without source 
  5310. changes on a Win32 system with the appropriate development tools. (Win32 tools 
  5311. are not provided with the Warp Toolkit.) 
  5312.  
  5313. The OS/2 version of HiWorld is located in the 
  5314. \TOOLKIT\BETA\SAMPLES\DAPIE\HIWORLD2 subdirectory along with a README that 
  5315. briefly describes the steps that were taken to convert the Win32 version of 
  5316. HiWorld to this native OS/2 executable. 
  5317.  
  5318.  
  5319. ΓòÉΓòÉΓòÉ 7.5.5.3. ToyBox ΓòÉΓòÉΓòÉ
  5320.  
  5321. ToyBox is a basic Win32 application that uses bit-block transfer (BitBlt) to 
  5322. display a large number of simple bit maps on the display screen and give them 
  5323. motion. It moves the objects around the client portion of the screen and makes 
  5324. the objects appear to change shape and rotate. 
  5325.  
  5326. There are two versions of the ToyBox sample. The Win32 version, located in the 
  5327. \TOOLKIT\BETA\SAMPLES\DAPIE\TOYBOX subdirectory, will build without source 
  5328. changes on a Win32 system with the appropriate development tools. (Win32 tools 
  5329. are not provided with the Warp Toolkit.) 
  5330.  
  5331. The OS/2 version of ToyBox is located in the 
  5332. \TOOLKIT\BETA\SAMPLES\DAPIE\TOYBOX2 subdirectory. 
  5333.  
  5334.  
  5335. ΓòÉΓòÉΓòÉ 7.5.5.4. WinMain Wrapper Function ΓòÉΓòÉΓòÉ
  5336.  
  5337. The MAIN.C file (located in the \TOOLKIT\BETA\SAMPLES\DAPIE\WINMAIN 
  5338. subdirectory) is provided as a helper (stub) to demonstrate how to invoke the 
  5339. Windows WinMain function from OS/2. 
  5340.  
  5341. This is the "main" wrapper for an application based on the IBM Developer API 
  5342. Extensions for OS/2. It initializes the Alternative Windows Emulator (AWE) 
  5343. environment, calls the WinMain function, and upon completion, calls the WinTerm 
  5344. function to shut down the AWE environment. 
  5345.  
  5346. Note:  To be able to use the Windows WinMain() function, use the OS/2 Warp 
  5347.        main() function located in the MAIN.C file. MAIN.C gets compiled and 
  5348.        linked with the module containing WinMain() and creates an OS/2 Warp 
  5349.        executable. If you do not use the OS/2 Warp main() function, you will 
  5350.        receive a link error stating that there is no starting address for your 
  5351.        program. 
  5352.  
  5353.  
  5354. ΓòÉΓòÉΓòÉ 7.5.6. IBM Developer API Extensions for OS/2 Documentation ΓòÉΓòÉΓòÉ
  5355.  
  5356. The IBM Developer API Extensions for OS/2 Programming Guide is a new online 
  5357. book included with this release of the Warp Toolkit. This book is located in 
  5358. the \TOOLKIT\BETA\BOOK subdirectory and provides information on the following 
  5359. topics: 
  5360.  
  5361.      What the IBM Developer API Extensions for OS/2 are and how they help you 
  5362.       either: 
  5363.  
  5364.         -  Migrate Windows code to OS/2 code 
  5365.         -  Write common source code for OS/2 and Windows 
  5366.  
  5367.      How to use the SMART tool to analyze Windows code and see how much effort 
  5368.       is involved to migrate it to OS/2 code. 
  5369.  
  5370.      Differences in behavior between some IBM Developer API Extensions for 
  5371.       OS/2 functions and their Windows counterparts. 
  5372.  
  5373.      Changes to the Resource Compiler due to IBM Developer API Extensions for 
  5374.       OS/2. 
  5375.  
  5376.      The functions supported by the IBM Developer API Extensions for OS/2. 
  5377.  
  5378.  You can access this book from the Desktop by opening the Toolkit folder, then 
  5379.  the BETA folder, and then the Beta Toolkit Information folder. 
  5380.  
  5381.  
  5382. ΓòÉΓòÉΓòÉ 7.6. Try Me! ΓòÉΓòÉΓòÉ
  5383.  
  5384. The Try Me! component, formerly called NeatStuff, contains new tools and 
  5385. samples that execute on generally available versions of OS/2, such as OS/2 Warp 
  5386. Version 3. These tools and samples are provided to obtain feedback from you, 
  5387. our customers. We are considering adding these tools and samples to the Toolkit 
  5388. permanently. The content of this component can vary from volume to volume of 
  5389. The Developer Connection for OS/2. 
  5390.  
  5391. Try Me! is installed by default by the Developer's Toolkit for OS/2 
  5392. installation program, but the component can be deselected prior to installing 
  5393. to save space on your hard disk. All files installed via the Try Me! component 
  5394. are installed in the \TOOLKIT\BETA directory structure by default. 
  5395.  
  5396. In this release of the Warp Toolkit, there are two new entries in the Try Me! 
  5397. component: 
  5398.  
  5399.      ALP - Assembly Language Processor 
  5400.      URE - Universal Resource Editor 
  5401.  
  5402.  The P2String tool is also in the Try Me! component. 
  5403.  
  5404.  Note:  These utilities are pre-release and unsupported versions, and are 
  5405.         provided on an "as is" basis for evaluation and demonstration. They are 
  5406.         not intended for use with production code. 
  5407.  
  5408.  IBM supports the version of Dialog Editor in this release of the Warp Toolkit, 
  5409.  but will not be enhancing or otherwise changing Dialog Editor in future 
  5410.  releases. URE (Universal Resource Editor) will become the editor of choice for 
  5411.  creating and modifying dialogs and other resources. 
  5412.  
  5413.  Take our Toolkit Survey and send it in! We are interested in your feedback! 
  5414.  Please use any of the mechanisms listed below to give us your comments: 
  5415.  
  5416.      Internet 
  5417.  
  5418.             tink@vnet.ibm.com
  5419.  
  5420.      CompuServe 
  5421.  
  5422.             72410,624
  5423.  
  5424.      Mail 
  5425.  
  5426.             IBM Corporation
  5427.             Attn: Rick Timkovich Zip 1606
  5428.             P.O. Box 1328
  5429.             Boca Raton, FL 33429-1328
  5430.  
  5431.  
  5432. ΓòÉΓòÉΓòÉ 7.6.1. Tools ΓòÉΓòÉΓòÉ
  5433.  
  5434. This section describes the new tools which help you develop OS/2 programs. 
  5435. There are three tools in this release: 
  5436.  
  5437.      ALP - Assembly Language Processor 
  5438.      P2STRING 
  5439.      URE - Universal Resource Editor 
  5440.  
  5441.  
  5442. ΓòÉΓòÉΓòÉ 7.6.1.1. ALP ΓòÉΓòÉΓòÉ
  5443.  
  5444. ALP (Assembly Language Processor) is a macro assembler that runs under the 
  5445. 32-bit OS/2 operating system. In its initial form, ALP is designed as a 
  5446. functional replacement for the Microsoft Macro Assembler (MASM), Version 5.1. 
  5447. It accepts the full syntax of the Intel 80X86 architecture, and a subset of 
  5448. MASM's high-level directive language. ALP creates standard Object Module Format 
  5449. (.OMF) files that can be linked to produce DOS or OS/2 executables, and can 
  5450. generate line number debug information compatible with IBM's Presentation 
  5451. Manager Debugger. In addition, this tool offers a rich set of command line 
  5452. options, as well as a comprehensive listing file with user-tailored formatting, 
  5453. allowing a visual perspective not possible with other assemblers. 
  5454.  
  5455. ALP translates assembly language source files (typically having a filename 
  5456. extension of .ASM) into object (.OBJ) files. The LINK386 utility can then be 
  5457. used to combine multiple object files into a single executable file, dynamic 
  5458. link library, or device driver. 
  5459.  
  5460. While ALP is designed as a functional replacement for the Microsoft MASM 
  5461. assembler in terms of source code compatibility, it does not use the MASM 
  5462. command line syntax. ALP uses a free-form syntax, has a comprehensive set of 
  5463. options, and allows assembly of multiple input files with a single command line 
  5464. invocation. 
  5465.  
  5466. For each corresponding input source file, ALP can produce the following types 
  5467. of output files: 
  5468.  
  5469.      Object (.OBJ) files containing program data and executable code. 
  5470.      Listing (.LST) files which document the results of the assembly. 
  5471.      Message (.MSG) files which can contain all error, warning, and 
  5472.       informational messages produced during the assembly. 
  5473.  
  5474.  An online document, Assembly Language Processor Reference Guide, is available 
  5475.  in the Beta Information folder. You can access this folder by opening the 
  5476.  Toolkit folder and then opening the BETA folder. Online help is also available 
  5477.  from the command line for all ALP options. 
  5478.  
  5479.  
  5480. ΓòÉΓòÉΓòÉ 7.6.1.1.1. Starting ALP ΓòÉΓòÉΓòÉ
  5481.  
  5482. To start ALP from the command line, change to the TOOLKIT\BETA\BIN subdirectory 
  5483. and type: 
  5484.  
  5485.   ALP
  5486.  
  5487. Note:  ALP cannot be started from the Desktop. 
  5488.  
  5489.  
  5490. ΓòÉΓòÉΓòÉ 7.6.1.2. P2STRING ΓòÉΓòÉΓòÉ
  5491.  
  5492. P2STRING is used to test OS/2 multimedia subsystems through the media control 
  5493. interface string commands in OS/2 multimedia environment. This tool processes 
  5494. script files (containing string commands and tool directives) to test the 
  5495. behavior of subsystems in OS/2 multimedia.  P2STRING extracts the strings from 
  5496. the script files and processes the commands through the mciSendString function. 
  5497. Messages and error conditions of the processes included in the scripts are 
  5498. logged to an output file and displayed in windows. 
  5499.  
  5500. P2STRING provides subsystem developers with an effective testing and because it 
  5501. alleviates the need for extensive test code to be written. Developers can write 
  5502. script files to test all relevant scenarios, and it also aids in debugging 
  5503. using log files. 
  5504.  
  5505. Note:  Refer to the README file in the P2STRING subdirectory for information 
  5506.        about how to use P2STRING and how to create script files that it can 
  5507.        process. 
  5508.  
  5509.  
  5510. ΓòÉΓòÉΓòÉ 7.6.1.3. URE ΓòÉΓòÉΓòÉ
  5511.  
  5512. URE (Universal Resource Editor) provides a graphical user interface by which 
  5513. you can design dialogs, menus, and other OS/2 program resources. You can create 
  5514. binary resource files, resource scripts, and symbol definition files. 
  5515.  
  5516. For any new resource design, URE allows you to: 
  5517.  
  5518.      Select the applicable operating environment, file names and formats from 
  5519.       the New Design dialog. 
  5520.      Choose the type of presentation from the New Dialog/Window dialog. 
  5521.      Set the appearance of your window from the Window/Dialogue Styles dialog. 
  5522.      Select controls for your window from the Tools window. 
  5523.      Include multiple windows and file resources with any design. 
  5524.      Save your finished resource design to a binary file for later attachment 
  5525.       to an executable program. 
  5526.      Edit an existing resource design and copy parts from one design to 
  5527.       another. 
  5528.  
  5529.  An online document, Universal Resource Editor for OS/2 User's Guide, is 
  5530.  available in the TRYME folder. Online help is also available for menus, 
  5531.  buttons, and dialogs you use while running URE and related samples. 
  5532.  
  5533.  Note:  URE will replace DLGEDIT (Dialog Editor) in a future release of the 
  5534.         Warp Toolkit. 
  5535.  
  5536.  
  5537. ΓòÉΓòÉΓòÉ 7.6.1.3.1. Starting URE ΓòÉΓòÉΓòÉ
  5538.  
  5539. You can start URE in two ways: 
  5540.  
  5541.      From the command line, change to the TOOLKIT\BETA\BIN subdirectory and 
  5542.       type: 
  5543.  
  5544.               URE
  5545.  
  5546.       URE has a number of sample programs that are installed into 
  5547.       subdirectories below the TOOLKIT\BETA\SAMPLES\PM\URE subdirectory path. 
  5548.  
  5549.      From the Desktop, open the Toolkit folder and then: 
  5550.  
  5551.         1. Open the TRYME folder. 
  5552.  
  5553.         2. Double-click on Universal Resource Editor. 
  5554.  
  5555.  
  5556. ΓòÉΓòÉΓòÉ 7.6.1.3.2. Replacing DLGEDIT ΓòÉΓòÉΓòÉ
  5557.  
  5558. IBM supports the version of DLGEDIT (Dialog Editor) in this release of the Warp 
  5559. Toolkit, but will not be enhancing or otherwise changing the Dialog Editor in 
  5560. future releases. URE (Universal Resource Editor) will become the editor of 
  5561. choice for creating and modifying dialogs and other resources. 
  5562.  
  5563.  
  5564. ΓòÉΓòÉΓòÉ 7.6.2. Online Documentation ΓòÉΓòÉΓòÉ
  5565.  
  5566. This section describes the new online documentation (located in 
  5567. \TOOLKIT\BETA\BOOK) that might be of interest to users who develop applications 
  5568. for OS/2 Warp, Version 3. You can also access them through the TRYME folder, 
  5569. within the Toolkit folder. It also explains How to Use Online Documents. There 
  5570. are two new manuals in this release: 
  5571.  
  5572.      Assembly Language Processor Reference Guide 
  5573.      Universal Resource Editor User's Guide 
  5574.  
  5575.  
  5576. ΓòÉΓòÉΓòÉ 7.6.2.1. Assembly Language Processor Reference Guide ΓòÉΓòÉΓòÉ
  5577.  
  5578. This book describes how to install and run the ALP assembler. It provides a 
  5579. complete description of the following: 
  5580.  
  5581.      Installation 
  5582.      Command line syntax 
  5583.      Environment variables 
  5584.      Assembler return codes 
  5585.      Message descriptions and recovery 
  5586.  
  5587.  
  5588. ΓòÉΓòÉΓòÉ 7.6.2.2. Universal Resource Editor User's Guide ΓòÉΓòÉΓòÉ
  5589.  
  5590. This book provides information on the following URE features: 
  5591.  
  5592.      Using the tool bar, status window, and symbol definition window 
  5593.      Using all dialogs 
  5594.      Designing an application with URE 
  5595.      Adding backing code to a design 
  5596.      Running a prototype 
  5597.      Adding new elements to a process 
  5598.      Rebuilding an application 
  5599.      Using PM control extensions 
  5600.      Setting styles and CUA guidelines 
  5601.      Creating resource DLLs 
  5602.      Using accelerators in a resource design. 
  5603.  
  5604.  
  5605. ΓòÉΓòÉΓòÉ 8. Programming Considerations ΓòÉΓòÉΓòÉ
  5606.  
  5607. Programming considerations apply for the following areas of the OS/2 Warp, 
  5608. Version 3 operating system: 
  5609.  
  5610.      Important Considerations 
  5611.      Kernel Debugger 
  5612.      Presentation Manager 
  5613.      SOM 
  5614.      VisualAge (C Set ++ Compiler) 
  5615.      Workplace Shell 
  5616.  
  5617.  
  5618. ΓòÉΓòÉΓòÉ 8.1. Important Considerations ΓòÉΓòÉΓòÉ
  5619.  
  5620. Included in this section are important items that can affect your future 
  5621. development efforts when using the IBM Developer's Toolkit for OS/2 Warp, 
  5622. Version 3. 
  5623.  
  5624.      Compiling with IBM C/2 
  5625.      Compiling with VisualAge (C Set ++) 
  5626.      Known Limitations for DIVE 
  5627.      Known Limitations for MIDISAMP 
  5628.      Known Limitations for Warp Networking 
  5629.      Replacing DLGEDIT - Dialog Editor 
  5630.      Replacing IPFCBIDI - Bidirectional Information Presentation Facility 
  5631.       Compiler 
  5632.  
  5633.  
  5634. ΓòÉΓòÉΓòÉ 8.1.1. Compiling with IBM C/2 ΓòÉΓòÉΓòÉ
  5635.  
  5636. The Developer's Toolkit for OS/2 Warp, Version 3 is not intended to be used 
  5637. with the IBM C/2, Version 1.1 compiler. If you really want to use that 
  5638. compiler, you should use version 1.3 of the Toolkit. (An unsupported version of 
  5639. that Toolkit is available on The Developer Connection for OS/2 product.) 
  5640.  
  5641. The Warp Toolkit is intended to be used with the IBM C Set ++ compiler. You may 
  5642. be able to use the IBM C/2 compiler, but you will probably get some 
  5643. "unrecognized pragma" warnings during compilation. 
  5644.  
  5645.  
  5646. ΓòÉΓòÉΓòÉ 8.1.2. Compiling with VisualAge (C Set ++) ΓòÉΓòÉΓòÉ
  5647.  
  5648. The next version of the C Set ++ compiler (now called VisualAge C++) has been 
  5649. released. VisualAge C++ is shipped with its own version of the Warp Toolkit 
  5650. which includes updated sample makefiles. Changes to the sample makefiles relate 
  5651. to the new linker (ILINK) and to the new library (CPPOM30.LIB). 
  5652.  
  5653. To compile any of the samples shipped with the IBM Developer's Toolkit for OS/2 
  5654. Warp, Version 3 using ILINK, instead of LINK386, you need to do the following: 
  5655.  
  5656.      Replace LINK386.EXE with ILINK.EXE 
  5657.      Add the /nofree option to the ILINK.EXE step 
  5658.  
  5659.       Note:  This option must be the first one. 
  5660.  
  5661.      Insert spaces in between each ILINK flags. For example: 
  5662.  
  5663.               LFLAGS = /MAP /CO /NOD
  5664.  
  5665.  Note:  When using ILINK, the /batch switch is no longer supported and must be 
  5666.         removed or linking will fail. 
  5667.  
  5668.  There are several other link switches that have been dropped but they only 
  5669.  cause link warnings. Only /batch causes linking to fail. 
  5670.  
  5671.  If you have installed any of the samples shipped with the VisualAge product, 
  5672.  you can compile those samples using LINK386 by changing any reference to 
  5673.  CPPOM30.LIB to: 
  5674.  
  5675.     DDE4MBS.LIB
  5676.  
  5677.  and changing any reference to ILINK to LINK386. Note that the /nofree option 
  5678.  must be removed from the LINK386 statement. 
  5679.  
  5680.  
  5681. ΓòÉΓòÉΓòÉ 8.1.3. Known Limitations for DIVE ΓòÉΓòÉΓòÉ
  5682.  
  5683. DIVE will not run in direct mode on some systems if the video card requires 
  5684. bank switching. To determine if your video card requires bank switching, select 
  5685. Query Caps from the Options menu of the DIVE sample. If the Screen access 
  5686. requires bank switch field is set to YES, setting a lower Desktop resolution in 
  5687. the System Setup may fix this. 
  5688.  
  5689. DIVE may not work on some systems when the Desktop is set to 16 million colors. 
  5690. If your system is set to 16 million colors and DIVE does not work properly, try 
  5691. setting the Desktop to fewer colors in the System Setup. 
  5692.  
  5693.  
  5694. ΓòÉΓòÉΓòÉ 8.1.4. Known Limitations for MIDISAMP ΓòÉΓòÉΓòÉ
  5695.  
  5696. Currently, MIDISAMP might halt when another process attempts to play a sound 
  5697. (including system sounds) while the sample is running. Therefore, you should 
  5698. disable system sound before running MIDISAMP. To disable system sound, 
  5699. double-click on Sound located in the Multimedia folder and ensure Enable system 
  5700. sound is not selected. 
  5701.  
  5702.  
  5703. ΓòÉΓòÉΓòÉ 8.1.5. Known Limitations for Warp Networking ΓòÉΓòÉΓòÉ
  5704.  
  5705. Currently, the receive function (WarpnetPackRecv) for Warp networking can only 
  5706. receive header information with no packet data. 
  5707.  
  5708.  
  5709. ΓòÉΓòÉΓòÉ 8.1.6. Replacing DLGEDIT ΓòÉΓòÉΓòÉ
  5710.  
  5711. IBM supports the version of DLGEDIT (Dialog Editor) in this release of the Warp 
  5712. Toolkit, but will not be enhancing or otherwise changing the Dialog Editor in 
  5713. future releases. URE (Universal Resource Editor) will become the editor of 
  5714. choice for creating and modifying dialogs and other resources. 
  5715.  
  5716.  
  5717. ΓòÉΓòÉΓòÉ 8.1.7. Replacing IPFCBIDI ΓòÉΓòÉΓòÉ
  5718.  
  5719. The Developer's Toolkit for OS/2 Warp on The Developer Connection for OS/2 
  5720. includes two IPF compilers: IPFC.EXE and IPFCBIDI.EXE (the bidirectional 
  5721. version of IPFC.EXE). For this version of the Warp Toolkit, these programs are 
  5722. identical, as the bidirectional support has been integrated into the American 
  5723. version, IPFC.EXE. However, in the Warp Toolkit on the next release of The 
  5724. Developer Connection for OS/2, only IPFC.EXE will be included. Therefore, it 
  5725. will be necessary for you to modify any makefiles that reference IPFCBIDI.EXE 
  5726. to reference IPFC.EXE instead. 
  5727.  
  5728.  
  5729. ΓòÉΓòÉΓòÉ 8.2. Kernel Debugger Considerations ΓòÉΓòÉΓòÉ
  5730.  
  5731. New kernel debug files are available.  If you are installing the Warp Toolkit 
  5732. from The Developer's Connection for OS/2, you have two options: 
  5733.  
  5734.      Install the kernel debug files directly from the CD. 
  5735.      Create diskettes from which you can later install the kernel debug files. 
  5736.  
  5737.  To install directly from the CD, choose the appropriate Kernel Debugger 
  5738.  product in the Developer Connection for OS/2 Catalog and install it. This will 
  5739.  run an installation program that installs the appropriate kernel debug files. 
  5740.  
  5741.  To create kernel debug diskettes, choose the appropriate Kernel Debugger 
  5742.  product in the Developer Connection for OS/2 Catalog and install it. This will 
  5743.  bring up a utility that will create the kernel debug diskettes for you. Once 
  5744.  you have created the diskettes, insert the first kernel debug diskette into a 
  5745.  diskette drive, switch to that drive, and type INSTALL at an OS/2 command 
  5746.  prompt. 
  5747.  
  5748.  
  5749. ΓòÉΓòÉΓòÉ 8.3. Presentation Manager Considerations ΓòÉΓòÉΓòÉ
  5750.  
  5751. Making modifications to Microsoft Windows programs to enable dynamic data 
  5752. exchange (DDE) communications with PM programs helps facilitate a gradual 
  5753. migration of applications to PM. Not all data formats are automatically 
  5754. converted when using DDE between Windows programs and PM programs (DDE set 
  5755. public). 
  5756.  
  5757. The following formats are converted automatically by the OS/2 operating system: 
  5758.  
  5759.  ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  5760.  Γöé PM Application       Γöé Windows Application  Γöé
  5761.  Γöé Data Format          Γöé Interpretation       Γöé
  5762.  ΓöéΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓöéΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓöé
  5763.  Γöé PM bit map           Γöé Windows DIB          Γöé
  5764.  Γöé PM private           Γöé Windows private      Γöé
  5765.  Γöé Text                 Γöé Text (codepage 819)  Γöé
  5766.  Γöé---------------------------------------------Γöé
  5767.  Γöé Windows Application  Γöé PM Application       Γöé
  5768.  Γöé Data Format          Γöé Interpretation       Γöé
  5769.  Γö£ΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓöéΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓöñ
  5770.  Γöé Text (codepage 819)  Γöé Text                 Γöé
  5771.  Γöé Windows DIB          Γöé PM Bit map           Γöé
  5772.  Γöé Windows private      Γöé PM Private           Γöé
  5773.  ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  5774.  
  5775. Note:  Code page translation (Windows 819 to/from current PM code page) is 
  5776.        performed for topic name in all cases. 
  5777.  
  5778. When data conversion is not automatically performed, programs can still 
  5779. communicate using dynamic data exchange if the two programs are able to perform 
  5780. the data conversion and pass private data formats. 
  5781.  
  5782.  
  5783. ΓòÉΓòÉΓòÉ 8.4. SOM Considerations ΓòÉΓòÉΓòÉ
  5784.  
  5785. This version of the Warp Toolkit contains a subset of the SOMobjects 
  5786. Developer's Toolkit. The following SOM programming considerations are briefly 
  5787. described: 
  5788.  
  5789.      Distributed SOM 
  5790.      SOM 1.0 OIDL 
  5791.      SOM Bindings 
  5792.      SOM Coding Styles 
  5793.      SOM Compiler 
  5794.      SOM DLLs 
  5795.  
  5796.  
  5797. ΓòÉΓòÉΓòÉ 8.4.1. Distributed SOM (DSOM) ΓòÉΓòÉΓòÉ
  5798.  
  5799. New features, known limitations, and restrictions pertain to the Distributed 
  5800. SOM (DSOM).  There are briefly described as follows: 
  5801.  
  5802.      DSOM now provides a PM version of the REGIMPL tool for registering 
  5803.       servers in the implementation repository. It is called PREGIMPL and is 
  5804.       similar in functionality to REGIMPL. To invoke the tool, type PREGIMPL on 
  5805.       a command line. Remember to select File Save before exiting to commit any 
  5806.       changes made. 
  5807.  
  5808.      You are now able to control the number of request threads created per 
  5809.       server. The environment variable SOMDNUMTHREADS is used to indicate the 
  5810.       maximum size of the thread pool. If this environment variable is not set, 
  5811.       a separate thread will be created for each request. 
  5812.  
  5813.      The OUT_LIST_MEMORY, IN_COPY_VALUE, and DEPENDENT_LIST flags, used with 
  5814.       the dynamic invocation interface, are not supported. 
  5815.  
  5816.      Concurrent updates to the implementation repository are currently not 
  5817.       properly serialized, and can conflict. 
  5818.  
  5819.      The is_nil method of SOMDObject has been changed from a true method to a 
  5820.       procedure, so that is_nil can be safely invoked on a NULL object pointer. 
  5821.       As a result, the syntax for invoking is_nil from C++ client programs has 
  5822.       changed. The new syntax is: 
  5823.  
  5824.                 obj->is_nil(obj,env);
  5825.  
  5826.       Rather than: 
  5827.  
  5828.                 obj->is_nil(env);
  5829.  
  5830.       where: 
  5831.  
  5832.       obj            Is an object pointer of type SOMDObject. 
  5833.       env            Is of type Environment. 
  5834.  
  5835.  
  5836. ΓòÉΓòÉΓòÉ 8.4.2. SOM 1.0 OIDL Users ΓòÉΓòÉΓòÉ
  5837.  
  5838. If you need to recompile an OIDL class that overrides somDumpSelf or 
  5839. somDumpSelfInt, you will need to change the data type of the level parameter in 
  5840. the function definition in your C source program from INT to LONG.  For 
  5841. example, if your original class source program had a somDumpSelfInt override 
  5842. procedure similar to: 
  5843.  
  5844.   SOM_Scope void SOMLINK somDumpSelfInt(
  5845.        <className> *somSelf, INT level)
  5846.   {
  5847.     ...
  5848.   }
  5849.  
  5850. Change it to read: 
  5851.  
  5852.   SOM_Scope void SOMLINK somDumpSelfInt(
  5853.        <className> *somSelf, LONG level)
  5854.   {
  5855.    ...
  5856.   }
  5857.  
  5858. Because both INT and LONG data types require 4 bytes on OS/2, this does not 
  5859. affect the binary interface of your class. 
  5860.  
  5861.  
  5862. ΓòÉΓòÉΓòÉ 8.4.3. SOM Bindings ΓòÉΓòÉΓòÉ
  5863.  
  5864. The XH and H files shipped with this Warp Toolkit will only work with the IDL 
  5865. files shipped with this Toolkit. You will need to generate new SOM bindings if 
  5866. you install a new version of SOM. This means that the XH and H files will need 
  5867. to be re-emitted if new versions of the IDL files are made available. There are 
  5868. two steps that you will need to take. 
  5869.  
  5870. If you install version 'Y' of SOM on top of version 'X', you will need to 
  5871. generate SOM bindings for version 'Y'. The version 'X' SOM bindings are not 
  5872. guaranteed to be compatible with version 'Y'. 
  5873.  
  5874.      Use the SOMSTARS.CMD file to generate the SOMSTARS version of the 
  5875.       bindings. 
  5876.  
  5877.      Use SOMCORBA.CMD to generate the SOMCORBA version of the bindings. This 
  5878.       will upgrade your SOM bindings. 
  5879.  
  5880.  The command file WPIDL2XH.CMD is provided to upgrade Workplace Shell bindings, 
  5881.  for developers that upgrade their SOMobjects Toolkit in the future. This 
  5882.  command file emits the .XH header files from the Workplace Shell .IDL files. 
  5883.  The file should be invoked upon each of the .IDL files from the Warp Toolkit 
  5884.  to regenerate the headers for C++. This is only necessary when you upgrade to 
  5885.  a new level of the SOMobjects Toolkit. Invoking the SOM compiler's .XH emitter 
  5886.  on the Workplace Shell .IDL will not emit .XH files for you, because the 
  5887.  Workplace Shell classes currently only maintain passthru sections for .H files 
  5888.  for C. 
  5889.  
  5890.  
  5891. ΓòÉΓòÉΓòÉ 8.4.4. SOM Coding Styles ΓòÉΓòÉΓòÉ
  5892.  
  5893. There are two possible forms of C bindings for SOM programming: 
  5894.  
  5895.  SOMCORBA       The strict CORBA-compliant form in which pointer references 
  5896.                 ('*'s) are NOT exposed in object references. 
  5897.  
  5898.  SOMSTARS       The OIDL-compatible C++ form in which pointer references ('*'s) 
  5899.                 are visible in object references. 
  5900.  
  5901.  The SOMSTARS form is more appropriate if you plan to move your class 
  5902.  implementations from C to C++ at some future point. This choice will determine 
  5903.  how object references will appear in all of your C programs. For example, to 
  5904.  declare a reference to an instance of class Foo, you would code either: 
  5905.  
  5906.     Foo afoo;   /* Strict CORBA compliant form          */
  5907.     OR
  5908.     Foo *afoo; /* C++ migration or OIDL-compatible form */
  5909.  
  5910.  If you later decide to switch from one SOM coding style to the other, you will 
  5911.  have to convert any C code that you have already written in one style to the 
  5912.  other style. 
  5913.  
  5914.  The Workplace Shell uses the SOMSTARS version of the SOM header files. 
  5915.  Therefore, the Warp Toolkit installs the SOMSTARS version of the header files. 
  5916.  
  5917.  The Workplace Shell interface definition language (IDL) files (WP*.IDL) are 
  5918.  the counterparts for the documented Workplace Shell classes' SC files provided 
  5919.  with the OS/2 2.1 Toolkit. The WP*.H and WP*.XH files emitted from the 
  5920.  Workplace Shell's IDL files by the SOM compiler are also provided. 
  5921.  
  5922.  The OS/2 makefiles for the Workplace Shell Warp Toolkit samples are written 
  5923.  assuming the SOMSTARS style of coding. If you have the SOMobjects Toolkit, the 
  5924.  C samples provided with the SOMobjects Toolkit use the SOMCORBA style of 
  5925.  coding (these samples are not part of the IBM Developer's Toolkit for OS/2). 
  5926.  
  5927.  
  5928. ΓòÉΓòÉΓòÉ 8.4.5. SOM Compiler ΓòÉΓòÉΓòÉ
  5929.  
  5930. New features, known limitations, and restrictions pertain to the SOM compiler. 
  5931. There are briefly described as follows: 
  5932.  
  5933.      Mutually recursive IDL struct and union are not currently supported. The 
  5934.       following is an example of unsupported mutual recursion: 
  5935.  
  5936.               struct X;
  5937.               struct Y
  5938.               {
  5939.                 sequence<X> indirectSelf;
  5940.               };
  5941.               struct X
  5942.               {
  5943.                 sequence<Y> indirectSelf;
  5944.               };
  5945.  
  5946.      The C bindings do not permit the use of multiple methods with the same 
  5947.       name that also take an argument of data type VA_LIST within the same 
  5948.       module. For example, the following legal IDL will result in incorrect C 
  5949.       usage bindings: 
  5950.  
  5951.               module X
  5952.               {
  5953.                 interface Y
  5954.                 {
  5955.                   void Foo (in LONG f, in VA_LIST ap);
  5956.                 };
  5957.                 interface Z
  5958.                 {
  5959.                   void Foo (in LONG f, in VA_LIST ap);
  5960.                 };
  5961.               };
  5962.  
  5963.      The SOM C++ language bindings are built assuming use of the OS/2 C Set ++ 
  5964.       compiler, but other C++ compilers should be able to use these bindings as 
  5965.       well. For example, to use BCOS2 (the Borland C++ compiler for OS/2), use 
  5966.       -DSOMLINK=_syscall on the compile line, and make sure that SOMobjects' 
  5967.       include directory is consulted before BCOS2/include (because 
  5968.       BCOS2/include contains older SOM.H include files). 
  5969.  
  5970.      If the SOM compiler is interrupted by the user (using Ctrl+C, for 
  5971.       example), it sometimes leaves a temporary file with a .CTN extension in 
  5972.       the temporary directory specified by the SMTMP environmental variable. 
  5973.       These should be removed periodically. 
  5974.  
  5975.      When direct references to SOMFOREIGN types are made in an IDL struct or 
  5976.       union, the C or C++ language bindings are generated incorrectly. To refer 
  5977.       to a SOMFOREIGN type (for example, "somId") in a struct  or union  it is 
  5978.       necessary to supply a secondary typedef for "somId". For example: 
  5979.  
  5980.               #include <somobj.idl>
  5981.               struct S1
  5982.               {
  5983.                 somId badId;    /* Generates incorrect */
  5984.               };                /* C/C++ bindings      */
  5985.               #include <somobj.idl>
  5986.               typedef somId somId2;
  5987.               struct S1
  5988.               {
  5989.                 somId2 badId;   /* OK                  */
  5990.               };
  5991.  
  5992.  
  5993. ΓòÉΓòÉΓòÉ 8.4.6. SOM Dynamic Link Libraries (DLLs) ΓòÉΓòÉΓòÉ
  5994.  
  5995. When SOMobjects 2.0 (NOT the version shipped with this Warp Toolkit) is 
  5996. installed on OS/2 Warp, Version 3, the LIBPATH, PATH, and DPATH environment 
  5997. variables in CONFIG.SYS are changed to place the SOMobjects directories before 
  5998. the operating system directories in the search order for DLLs, EXEs, and data 
  5999. files. This will cause the Workplace Shell to encounter an unrecoverable error 
  6000. the next time the system is restarted because it requires the SOM DLLs that are 
  6001. contained in the \OS2\DLL subdirectory. 
  6002.  
  6003. In order to allow SOMobjects 2.0 Workstation applications to run successfully, 
  6004. you must edit CONFIG.SYS and change the LIBPATH, PATH, and DPATH statements 
  6005. before restarting the system. These statements must be changed to place the 
  6006. operating system directories before the SOMobjects directories. 
  6007.  
  6008. Note:  This only applies to SOMobjects Workstation applications, not Workgroup 
  6009.        applications. 
  6010.  
  6011.  The same problem will occur for any application that ships SOMobjects 2.0 DLLs 
  6012.  if the application places its DLL directory first in the LIBPATH. Once again, 
  6013.  the workaround is to assure that the \OS2\DLL subdirectory is before any other 
  6014.  directory that contains earlier versions of the SOM DLLs. Any changes made to 
  6015.  the PATH and DPATH environment variables by the application installation must 
  6016.  also be reversed. 
  6017.  
  6018.  
  6019. ΓòÉΓòÉΓòÉ 8.5. Workplace Shell Considerations ΓòÉΓòÉΓòÉ
  6020.  
  6021. When including an OBJECTID=<....> keyname=value pair in a setup string, you 
  6022. must specify it at the end of the setup string. 
  6023.  
  6024.  
  6025. ΓòÉΓòÉΓòÉ 9. System Debug Support ΓòÉΓòÉΓòÉ
  6026.  
  6027. This section introduces you to the interface that installs the debug kernel, 
  6028. symbol files, and debug version of the PM. It also describes tools that support 
  6029. your debugging efforts. The tools are categorized as follows: 
  6030.  
  6031.      Communications 
  6032.      The Debug Files 
  6033.      Installing the Debug Installation Program 
  6034.      MAPSYM 
  6035.      T (Terminal Emulator) 
  6036.  
  6037.  Additional details on the debug kernel can be found in the online Kernel Debug 
  6038.  Reference in the Toolkit Information folder. 
  6039.  
  6040.  
  6041. ΓòÉΓòÉΓòÉ 9.1. Communications ΓòÉΓòÉΓòÉ
  6042.  
  6043. Local and remote debugging are the same, except for the location of the system 
  6044. to be debugged (also known as the system under test). If the system to be 
  6045. debugged is close to the debug terminal, use a null modem cable to connect 
  6046. them. If the system is physically distant, use modems. The default setup for 
  6047. the communication port of the debug kernel is: 
  6048.  
  6049.  Baud rate        9600 
  6050.  Parity           none 
  6051.  Data bits        8 
  6052.  Stop bits        1 
  6053.  
  6054.  
  6055. ΓòÉΓòÉΓòÉ 9.2. The Debug Files ΓòÉΓòÉΓòÉ
  6056.  
  6057. The files described in this section are referred to as either a retail or debug 
  6058. version. "Retail" refers to the files that came with your OS/2 operating 
  6059. system; "debug" refers to the files that are part of the Kernel Debugger 
  6060. product. 
  6061.  
  6062. Several versions of the Kernel Debugger product are available on The Developer 
  6063. Connection for OS/2. Look for the following in the Developer Connection for 
  6064. OS/2 Catalog under the Developer Toolkits category: 
  6065.  
  6066.       Kernel Debugger for OS/2 2.x and Warp (IBM):  CD Install 
  6067.  
  6068.       Kernel Debugger for OS/2 for SMP v2.11 (IBM):  CD Install 
  6069.  
  6070.       Kernel Debugger for OS/2 for SMP v2.11 (IBM):  Diskettes 
  6071.  
  6072.       Kernel Debugger for OS/2 Japan 2.1 CSD BJC006 (IBM):  CD Install 
  6073.  
  6074.       Kernel Debugger for OS/2 Japan 2.11 (IBM):  CD Install 
  6075.  
  6076.       Kernel Debugger for OS/2 ServicePak XR06300 v2.1 (IBM):  CD Install 
  6077.  
  6078.       Kernel Debugger for OS/2 2.11 (IBM):  Diskettes 
  6079.  
  6080.       Kernel Debugger for OS/2 Warp with WIN-OS2 (IBM):  Diskettes 
  6081.  
  6082.       Kernel Debugger for OS/2 Warp, Version 3 (IBM):  Diskettes 
  6083.  
  6084.  
  6085. ΓòÉΓòÉΓòÉ 9.2.1. Debug Kernel ΓòÉΓòÉΓòÉ
  6086.  
  6087. The debug kernel, a special version of the OS/2 kernel, makes it possible to 
  6088. set breakpoints and trace programs. It also permits the use of symbolic 
  6089. addresses. You can interact with the debug kernel by using a modem or null 
  6090. modem and a second asynchronous debug terminal. 
  6091.  
  6092. Note:  You can only use the debug kernel files with the version of the OS/2 
  6093.        operating system with which they are associated. 
  6094.  
  6095.  
  6096. ΓòÉΓòÉΓòÉ 9.2.2. Debug Presentation Manager Interface ΓòÉΓòÉΓòÉ
  6097.  
  6098. The debug PM interface is a special version of the PM DLLs. The debugger 
  6099. detects errors in your PM application and issues messages to the terminal. This 
  6100. interface is not required to run the debug kernel. 
  6101.  
  6102.  
  6103. ΓòÉΓòÉΓòÉ 9.3. Installing the Debug Installation Program ΓòÉΓòÉΓòÉ
  6104.  
  6105. The menu-based debug installation program installs debug replacement files for 
  6106. the kernel and the PM interface. Once the program is installed, you can install 
  6107. other debug files, or restore retail files, from an OS/2 command prompt. 
  6108.  
  6109. During initial installation, two files are copied to the root directory of your 
  6110. specified installation drive: 
  6111.  
  6112.  DBINST.CMD               A command file that can be executed separately. This 
  6113.                           file calls DBUGINST.EXE with the requested 
  6114.                           installation drive as a command-line argument. 
  6115.  
  6116.  DBUGINST.EXE             This executable file is the user interface. The user 
  6117.                           can choose which parts of the debug system to 
  6118.                           install, or which parts to restore to the retail 
  6119.                           version. 
  6120.  
  6121.  
  6122. ΓòÉΓòÉΓòÉ 9.3.1. Selecting Installation Options ΓòÉΓòÉΓòÉ
  6123.  
  6124. The user interface consists of a menu that provides installation choices in 
  6125. three optional parts. It also provides the ability to restore two of those 
  6126. parts to their corresponding retail versions. 
  6127.  
  6128. The following is an illustration of the screen that appears: 
  6129.  
  6130. When prompted to enter a debug installation option, choose the options in the 
  6131. order they appear on the screen. 
  6132.  
  6133. Review Editing the CONFIG.SYS File after your selections are complete. 
  6134.  
  6135.  
  6136. ΓòÉΓòÉΓòÉ 9.3.2. Editing the CONFIG.SYS File ΓòÉΓòÉΓòÉ
  6137.  
  6138. When you complete the debug installation procedure, you may need to edit your 
  6139. CONFIG.SYS file. The following paragraphs explain: 
  6140.  
  6141. For the Debug Kernel: 
  6142.  
  6143. If you installed only the debug kernel, shutdown and restart your system. 
  6144.  
  6145. Restoring the Kernel: 
  6146.  
  6147. To restore the retail kernel, run the debug installation program and select the 
  6148. Restore retail kernel option. 
  6149.  
  6150. For the Debug Presentation Manager Interface: 
  6151.  
  6152. If you have installed the debug version of the PM interface, modify the DEVICE 
  6153. statement with the PMDD.SYS line as follows: 
  6154.  
  6155.   DEVICE=C:\OS2\DEBUG\DLL\PMDD.SYS  /Cn
  6156.  
  6157. The DEVICE statement includes the C drive as the installation drive and allows 
  6158. you to call the debug version of PMDD.SYS from the OS2\DEBUG\DLL subdirectory. 
  6159. The /C switch is set with n as the communication port for the debug output. 
  6160.  
  6161. Modify the LIBPATH statement by adding the DEBUG\DLL subdirectory as follows: 
  6162.  
  6163.   LIBPATH=C:\OS2\DEBUG\DLL; ...
  6164.  
  6165. Shut down and restart your system to have the changes take effect. 
  6166.  
  6167. Restoring the Presentation Manager Interface: 
  6168.  
  6169. To restore the retail PM, do the following: 
  6170.  
  6171.    1. Restore the device statement: 
  6172.  
  6173.               DEVICE=C:\OS2\PMDD.SYS
  6174.  
  6175.    2. Modify the LIBPATH statement by removing the DEBUG\DLL subdirectory. 
  6176.  
  6177.    3. Shut down and restart your system to have the changes take effect. 
  6178.  
  6179.  
  6180. ΓòÉΓòÉΓòÉ 9.4. MAPSYM ΓòÉΓòÉΓòÉ
  6181.  
  6182. MAPSYM is used to generate binary files that the debug kernel uses to associate 
  6183. a symbolic name with an address in memory. 
  6184.  
  6185.  
  6186. ΓòÉΓòÉΓòÉ 9.4.1. Starting MAPSYM ΓòÉΓòÉΓòÉ
  6187.  
  6188. MAPSYM creates public symbol (.SYM) files from map (.MAP) files. You must start 
  6189. MAPSYM from the directory in which the map file is located. An example of the 
  6190. syntax follows: 
  6191.  
  6192.   MAPSYM filename  [options]
  6193.  
  6194. where: 
  6195.  
  6196.  filename    Is the name of the map file. You do not have to type the .MAP 
  6197.              file-name extension. 
  6198.  
  6199.  options     Is the name of the MAPSYM option that modifies the action of 
  6200.              MAPSYM. 
  6201.  
  6202.  Note:  Be sure the .SYM files are in the same subdirectory as their 
  6203.         corresponding DLLs. 
  6204.  
  6205.  
  6206. ΓòÉΓòÉΓòÉ 9.5. T (Terminal Emulator) ΓòÉΓòÉΓòÉ
  6207.  
  6208. T is a terminal emulator and is used by the debug kernel to communicate with 
  6209. the system to be debugged. You can use any ASCII terminal emulator; the Warp 
  6210. Toolkit provides T. A terminal emulator allows a device, such as a personal 
  6211. computer, to enter and receive data from a computer system as if it were a 
  6212. particular type of attached terminal. For example, you use T to send and 
  6213. receive ASCII files. 
  6214.  
  6215. Hardware Requirements: 
  6216.  
  6217. Make sure your system has a properly installed asynchronous-port and 
  6218. communication-port driver, and that your CONFIG.SYS file has the following 
  6219. line: 
  6220.  
  6221.    DEVICE=C:\OS2\COM.SYS
  6222.  
  6223.  
  6224. ΓòÉΓòÉΓòÉ 9.5.1. Starting T ΓòÉΓòÉΓòÉ
  6225.  
  6226. You can start T at the command line by typing its executable name: 
  6227.  
  6228.   T
  6229.  
  6230. A blank screen appears. Press F1; a menu appears that allows you to: 
  6231.  
  6232.      Display function-key assignments 
  6233.      Set up communication-port parameters 
  6234.      Set the file name and start sending 
  6235.      View the text that has scrolled off the screen 
  6236.      Send the text that was written to a screen, to a file (capture mode) 
  6237.      Toggle to the capture mode 
  6238.      Set the file name or delete the current capture file 
  6239.      Exit from the terminal program. 
  6240.  
  6241.  Note:  Capture mode can be started automatically when T is executed by placing 
  6242.         the line: Capture=yes in the initialization file. 
  6243.  
  6244.  
  6245. ΓòÉΓòÉΓòÉ 10. Toolkit Support ΓòÉΓòÉΓòÉ
  6246.  
  6247. To ensure your success with the IBM Developer's Toolkit for OS/2 Warp, Version 
  6248. 3, IBM offers you not only excellent online and printed documentation but also 
  6249. a "Getting Started" period. 
  6250.  
  6251. What kind of support can I expect? 
  6252.  
  6253. The IBM Developer's Toolkit for OS/2 Warp, Version 3 Technical Support Team can 
  6254. assist you with the following kind of activities during a 60-day period that we 
  6255. call your "Getting Started" period: 
  6256.  
  6257.      Installing and using the IBM Developer's Toolkit for OS/2 Warp, Version 3 
  6258.      Reporting suspected system defects as a result of applying the IBM 
  6259.       Developer's Toolkit for OS/2 Warp, Version 3. 
  6260.  
  6261.  When should I call? 
  6262.  
  6263.  As a first step, use the online or hardcopy guide and reference manuals. If 
  6264.  you still need assistance several options are available to you: 
  6265.  
  6266.      CompuServe: The dedicated Developer Connection section is located in the 
  6267.       IBM OS/2 Developer Forum 2. To obtain access to this section, please send 
  6268.       a note with your order number to the Developer Connection Administrator 
  6269.       at CompuServe user id 73423,2767. To access the forum: 
  6270.  
  6271.         1. Type GO OS2DF2 at the ! prompt 
  6272.  
  6273.         2. Select the Developer Connection section 
  6274.  
  6275.      Internet: Send questions or comments to devcon@vnet.ibm.com. 
  6276.  
  6277.      OS/2 BBS: The DEVCON CFORUM or OS2TLKIT CFORUM, under TalkLink, is a 
  6278.       feature under the IBMLink Commercial Services. 
  6279.  
  6280.      If you do not have access to either CompuServe, Internet, or OS/2 BBS, 
  6281.       then call us Monday through Friday between 8:00 a.m. and 5:00 p.m. your 
  6282.       time, excluding U.S. national holidays.  Here's how: 
  6283.  
  6284.         -  Locate your registration number for service entitlement on your 
  6285.            Customer Service and Support brochure. 
  6286.  
  6287.         -  Dial 1-800-992-4777. 
  6288.  
  6289.       You will be presented with pre-recorded help options. Request to speak to 
  6290.       a service representative who will make a note of your needs and dispatch 
  6291.       them to a technical support person. Your call will be returned before the 
  6292.       end of the next business day. 
  6293.  
  6294.  Your 60 days of "Getting Started" support begins with this call. 
  6295.  
  6296.  Note:  If you have a specific question regarding the Beta version 
  6297.         entertainment components, you can call 1-800-553-1623 for technical 
  6298.         support. 
  6299.  
  6300.  
  6301. ΓòÉΓòÉΓòÉ 11. Hardcopy Documentation ΓòÉΓòÉΓòÉ
  6302.  
  6303. The following list describes books available in hardcopy that might be of 
  6304. interest to users who develop applications for OS/2 Warp, Version 3. The OS/2 
  6305. Warp, Version 3 Technical Library provides both guidance and reference 
  6306. information and can be used for OS/2 Warp, Version 3 development. The library 
  6307. includes the following printed books: 
  6308.  
  6309.      Control Program Programming Guide 
  6310.      Control Program Programming Reference 
  6311.      Graphics Programming Interface Programming Guide 
  6312.      Graphics Programming Interface Programming Reference 
  6313.      Information Presentation Facility Programming Guide and Reference 
  6314.      Multimedia Application Programming Guide 
  6315.      Multimedia Programming Reference 
  6316.      Multimedia Subsystem Programming Guide 
  6317.      Presentation Manager Programming Guide - The Basics 
  6318.      Presentation Manager Programming Guide - Advanced Topics 
  6319.      Presentation Manager Programming Reference 
  6320.      REXX User's Guide 
  6321.      REXX Reference 
  6322.      Tools Reference 
  6323.      Workplace Shell Programming Guide 
  6324.      Workplace Shell Programming Reference 
  6325.  
  6326.  Programming guide information is organized by topic and contains everything an 
  6327.  application developer needs--function details, data structures, and message 
  6328.  descriptions--to design, write, and build function into an OS/2 application. 
  6329.  
  6330.  Programming reference information provides detailed descriptions of the 
  6331.  application programming interface (API) and contains remarks and examples to 
  6332.  assist application developers in implementing each function. 
  6333.  
  6334.  Application developers can choose to order the complete set of books, or order 
  6335.  individual books separately. 
  6336.  
  6337.  The information available in hardcopy is basically the same as the information 
  6338.  in the online books contained in this Warp Toolkit. 
  6339.  
  6340.  
  6341. ΓòÉΓòÉΓòÉ 11.1. OS/2 Technical Library Publications ΓòÉΓòÉΓòÉ
  6342.  
  6343. The following figure presents you each book of the OS/2, Version 3 Technical 
  6344. Library with its associated part number. To order the full set use part number 
  6345. G25H-7116. 
  6346.  
  6347.  
  6348. ΓòÉΓòÉΓòÉ 11.2. Control Program Programming Guide ΓòÉΓòÉΓòÉ
  6349.  
  6350. This book describes the components of the OS/2 Control Program--file systems, 
  6351. interprocess communication, program execution and control, memory management, 
  6352. exception and error management, device I/O--and how to create an OS/2 
  6353. application using Dosxxx functions. 
  6354.  
  6355. A hardcopy version of this book is available separately with order part number 
  6356. G25H-7101. 
  6357.  
  6358.  
  6359. ΓòÉΓòÉΓòÉ 11.3. Control Program Programming Reference ΓòÉΓòÉΓòÉ
  6360.  
  6361. This book provides the detailed descriptions for the Dosxxx functions of the 
  6362. OS/2 Control Program. 
  6363.  
  6364. A hardcopy version of this book is available separately with order part number 
  6365. G25H-7102. 
  6366.  
  6367.  
  6368. ΓòÉΓòÉΓòÉ 11.4. Graphics Programming Interface Programming Guide ΓòÉΓòÉΓòÉ
  6369.  
  6370. This book describes the concepts associated with graphical output--presentation 
  6371. spaces, device contexts, graphic primitives, fonts--and how to prepare 
  6372. graphical output for display and printing, using Gpixxx functions. 
  6373.  
  6374. A hardcopy version of this book is available separately with order part number 
  6375. G25H-7106. 
  6376.  
  6377.  
  6378. ΓòÉΓòÉΓòÉ 11.5. Graphics Programming Interface Programming Reference ΓòÉΓòÉΓòÉ
  6379.  
  6380. This book provides the detailed descriptions for the Gpixxx functions of the 
  6381. Graphics Programming Interface. 
  6382.  
  6383. A hardcopy version of this book is available separately with order part number 
  6384. G25H-7107. 
  6385.  
  6386.  
  6387. ΓòÉΓòÉΓòÉ 11.6. Information Presentation Facility Programming Guide and Reference ΓòÉΓòÉΓòÉ
  6388.  
  6389. This book describes the concepts--help windows, hypertext linking, 
  6390. author-controlled viewports, dynamic data formatting--and the functions used 
  6391. for implementing help in OS/2 applications. It describes how to create online 
  6392. help and information. It also contains an alphabetic list of IPF tags, symbols, 
  6393. and control words. The IPFC error messages, window functions, dynamic data 
  6394. formatting functions, and help manager messages and functions are included. 
  6395.  
  6396. A hardcopy version of this book is available separately with order part number 
  6397. G25H-7110. 
  6398.  
  6399.  
  6400. ΓòÉΓòÉΓòÉ 11.7. Multimedia Application Programming Guide ΓòÉΓòÉΓòÉ
  6401.  
  6402. This book describes the concepts associated with managing audio and video data 
  6403. and hardware using an extendable architecture that includes logical media 
  6404. devices (amplifier-mixer, waveform audio, MIDI sequencer, CD-audio, CD-XA, 
  6405. digital video, and videodisc) and I/O procedures for supporting various file 
  6406. formats. 
  6407.  
  6408. A hardcopy version of this book is available separately with order part number 
  6409. G25H-7112. 
  6410.  
  6411.  
  6412. ΓòÉΓòÉΓòÉ 11.8. Multimedia Programming Reference ΓòÉΓòÉΓòÉ
  6413.  
  6414. This book describes the media control interface, PM graphic push buttons, 
  6415. secondary windows functions, multimedia I/O services, and subsystem services 
  6416. for synchronization and streaming. 
  6417.  
  6418. A hardcopy version of this book is available separately with order part number 
  6419. G25H-7114. 
  6420.  
  6421.  
  6422. ΓòÉΓòÉΓòÉ 11.9. Multimedia Subsystem Programming Guide ΓòÉΓòÉΓòÉ
  6423.  
  6424. This book describes the subsystem components--media control driver, stream 
  6425. handler, and I/O procedure--that support a multimedia device. 
  6426.  
  6427. A hardcopy version of this book is available separately with order part number 
  6428. G25H-7113. 
  6429.  
  6430.  
  6431. ΓòÉΓòÉΓòÉ 11.10. Presentation Manager Programming Guide - Advanced Topics ΓòÉΓòÉΓòÉ
  6432.  
  6433. This book describes the advanced features of a sophisticated OS/2 window 
  6434. application--font and file dialogs, containers, notebooks, hooks, dynamic data 
  6435. exchange, direct manipulation--and how to implement them, using Winxxx and 
  6436. other PM functions. 
  6437.  
  6438. A hardcopy version of this book is available separately with order part number 
  6439. G25H-7104. 
  6440.  
  6441.  
  6442. ΓòÉΓòÉΓòÉ 11.11. Presentation Manager Programming Guide - The Basics ΓòÉΓòÉΓòÉ
  6443.  
  6444. This book describes the components of a basic OS/2 window application--windows 
  6445. and message queues, window controls such as scroll bars, title bars, and 
  6446. menus--and how to create them using Winxxx functions. 
  6447.  
  6448. A hardcopy version of this book is available separately with order part number 
  6449. G25H-7103. 
  6450.  
  6451.  
  6452. ΓòÉΓòÉΓòÉ 11.12. Presentation Manager Programming Reference ΓòÉΓòÉΓòÉ
  6453.  
  6454. This book provides the detailed descriptions for Winxxx and other functions of 
  6455. the OS/2 PM. 
  6456.  
  6457. A hardcopy version of this book is available separately with order part number 
  6458. G25H-7105. 
  6459.  
  6460.  
  6461. ΓòÉΓòÉΓòÉ 11.13. REXX Reference ΓòÉΓòÉΓòÉ
  6462.  
  6463. This book provides detailed descriptions of the REXX functions. 
  6464.  
  6465. A hardcopy version of this book is available separately with order part number 
  6466. S10G-6268. 
  6467.  
  6468.  
  6469. ΓòÉΓòÉΓòÉ 11.14. REXX User's Guide ΓòÉΓòÉΓòÉ
  6470.  
  6471. This book describes the REXX programming language and provides examples for 
  6472. writing programs using REXX. 
  6473.  
  6474. A hardcopy version of this book is available separately with order part number 
  6475. S10G-6269. 
  6476.  
  6477.  
  6478. ΓòÉΓòÉΓòÉ 11.15. Tools Reference ΓòÉΓòÉΓòÉ
  6479.  
  6480. This book describes the tools that are included in the IBM Developer's Toolkit 
  6481. for OS/2 Warp, Version 3. 
  6482.  
  6483. A hardcopy version of this book is available separately with order part number 
  6484. G25H-7111. 
  6485.  
  6486.  
  6487. ΓòÉΓòÉΓòÉ 11.16. Workplace Shell Programming Guide ΓòÉΓòÉΓòÉ
  6488.  
  6489. This book describes the concepts associated with object-oriented programming 
  6490. for the OS/2 operating system--System Object Model (SOM), Workplace Shell 
  6491. classes and methods--and how to create object-oriented applications for the 
  6492. OS/2 Desktop. 
  6493.  
  6494. A hardcopy version of this book is available separately with order part number 
  6495. G25H-7108. 
  6496.  
  6497.  
  6498. ΓòÉΓòÉΓòÉ 11.17. Workplace Shell Programming Reference ΓòÉΓòÉΓòÉ
  6499.  
  6500. This book provides the detailed descriptions of the Workplace Shell 
  6501. object-oriented programming interface. 
  6502.  
  6503. A hardcopy version of this book is available separately with order part number 
  6504. G25H-7109. 
  6505.  
  6506.  
  6507. ΓòÉΓòÉΓòÉ 12. Hyperwise ΓòÉΓòÉΓòÉ
  6508.  
  6509. IBM has announced Hyperwise Version 2.0.  Hyperwise is a WYSIWYG editor for 
  6510. development of OS/2 and Windows application helps and online books.  Its drag 
  6511. and drop methods are far superior to the old tagging methods. Hyperwise Version 
  6512. 2.0 runs on OS/2 Warp and incorporates audio, video, graphics and animation 
  6513. files into its helps and books.  The new features for version 2.0 are as 
  6514. follows: 
  6515.  
  6516.      Enhanced search 
  6517.      Enhanced performance and usability 
  6518.      HTML Export 
  6519.      RTF Import 
  6520.      Spellcheck 
  6521.      Tutor/2 (an interactive tutorial manager). 
  6522.  
  6523.  To obtain the latest pricing information or to order Hyperwise Version 2.0, 
  6524.  contact your IBM Authorized Remarketer, or IBM marketing representative. 
  6525.  Upgrade paths from Hyperwise Version 1.0 are also available from some 
  6526.  participating IBM Authorized Remarketers. 
  6527.  
  6528.  Hyperwise Version 2.0 
  6529.  Product Order Number          30H1731 
  6530.  Phone Number                  1-800-3IBMOS2 (1-800-342-6672) or Indelible Blue 
  6531.                                at 1-800-776-8284 
  6532.  
  6533.  
  6534. ΓòÉΓòÉΓòÉ 13. Ordering Information ΓòÉΓòÉΓòÉ
  6535.  
  6536. You can order the following: 
  6537.  
  6538.      Hardcopy documentation 
  6539.      The Developer Connection for OS/2 
  6540.  
  6541.  
  6542. ΓòÉΓòÉΓòÉ 13.1. Hardcopy Documentation ΓòÉΓòÉΓòÉ
  6543.  
  6544. The hardcopy books can be ordered weekdays between 8 a.m. and 8 p.m. (Eastern 
  6545. time). 
  6546.  
  6547. For Canada and the United States, the following telephone or fax numbers can be 
  6548. used for placing orders: 
  6549.  
  6550.  Country             Telephone Number 
  6551.  Canada              1-800-465-4234 
  6552.  United States       1-800-IBM-PCTB (1-800-426-7282) 
  6553.  
  6554.  For Asia/Pacific, Brazil, Europe, Japan, and Mexico mail your order to the 
  6555.  following address: 
  6556.  
  6557.   IBM Software Manufacturing Solutions (ISMS)
  6558.   Attn:  Direct Services
  6559.   Sortemosevey 21
  6560.   DK-3450 Alleroed
  6561.   Denmark
  6562.  
  6563.  When placing an order, please provide the part number (for books), quantity, 
  6564.  and your credit card information ready. Charge your order to one of the 
  6565.  following credit cards: 
  6566.  
  6567.      American Express 
  6568.      Diners Club 
  6569.      Discover 
  6570.      MasterCard 
  6571.      VISA 
  6572.  
  6573.  Please allow one to two weeks for delivery of telephone orders. 
  6574.  
  6575.  
  6576. ΓòÉΓòÉΓòÉ 13.2. The Developer Connection for OS/2 ΓòÉΓòÉΓòÉ
  6577.  
  6578. The following telephone or fax numbers can be used for placing orders. 
  6579.  
  6580. When placing an order, please have your credit card information ready. Charge 
  6581. your order to one of the following credit cards: 
  6582.  
  6583.      American Express 
  6584.      Diners Club 
  6585.      Discover 
  6586.      MasterCard 
  6587.      VISA 
  6588.  
  6589.  Please allow one to two weeks for delivery of telephone orders. 
  6590.  
  6591.  For more information double-click mouse button 2 anywhere on the map. 
  6592.  
  6593.  
  6594. ΓòÉΓòÉΓòÉ 14. Toolkit Survey ΓòÉΓòÉΓòÉ
  6595.  
  6596.  
  6597. ΓòÉΓòÉΓòÉ 15. Notices ΓòÉΓòÉΓòÉ
  6598.  
  6599. Second Edition (August 1995) 
  6600.  
  6601. The following paragraph does not apply to the United Kingdom or any country 
  6602. where such provisions are inconsistent with local law: INTERNATIONAL BUSINESS 
  6603. MACHINES CORPORATION PROVIDES THIS PUBLICATION "AS IS" WITHOUT WARRANTY OF ANY 
  6604. KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
  6605. WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Some states 
  6606. do not allow disclaimer of express or implied warranties in certain 
  6607. transactions, therefore, this statement may not apply to you. 
  6608.  
  6609. This publication could include technical inaccuracies or typographical errors. 
  6610. Changes are periodically made to the information herein; these changes will be 
  6611. incorporated in new editions of the publication. IBM may make improvements 
  6612. and/or changes in the product(s) and/or the program(s) described in this 
  6613. publication at any time. 
  6614.  
  6615. It is possible that this publication may contain reference to, or information 
  6616. about, IBM products (machines and programs), programming, or services that are 
  6617. not announced in your country.  Such references or information must not be 
  6618. construed to mean that IBM intends to announce such IBM products, programming, 
  6619. or services in your country. 
  6620.  
  6621. Requests for technical information about IBM products should be made to your 
  6622. IBM reseller or IBM marketing representative. 
  6623.  
  6624.  
  6625. ΓòÉΓòÉΓòÉ 15.1. Copyright Notices ΓòÉΓòÉΓòÉ
  6626.  
  6627. (C)Copyright International Business Machines Corporation 1995.  All rights 
  6628. reserved. 
  6629. Note to U.S. Government Users - Documentation related to restricted rights - 
  6630. Use, duplication or disclosure is subject to restrictions set forth in GSA ADP 
  6631. Schedule Contract with IBM Corp. 
  6632.  
  6633.  
  6634. ΓòÉΓòÉΓòÉ 15.2. Disclaimers ΓòÉΓòÉΓòÉ
  6635.  
  6636. References in this publication to IBM products, programs, or services do not 
  6637. imply that IBM intends to make these available in all countries in which IBM 
  6638. operates. Any reference to an IBM product, program or service is not intended 
  6639. to state or imply that only IBM's product, program, or service may be used. 
  6640. Subject to IBM's valid intellectual property or other legally protectable 
  6641. rights, any functionally equivalent product, program, or service may be used 
  6642. instead of the IBM product, program, or service. Evaluation and verification of 
  6643. operation in conjunction with other products, programs, or services, except 
  6644. those expressly designated by IBM, are the user's responsibility. 
  6645.  
  6646. IBM may have patents or pending patent applications covering subject matter in 
  6647. this document. The furnishing of this document does not give you any license to 
  6648. these patents. You can send license inquiries, in writing, to the IBM Director 
  6649. of Licensing, IBM Corporation, 500 Columbus Avenue, Thornwood, NY 10594, U.S.A. 
  6650.  
  6651. Licensees of this program who wish to have information about it for the purpose 
  6652. of enabling:  (i) the exchange of information between independently created 
  6653. programs and other programs (including this one) and (ii) the mutual use of the 
  6654. information which has been exchanged, should contact IBM Corporation, 
  6655. Department RM1A, 1000 N.W. 51st Street, Boca Raton, FL 33431, U.S.A.  Such 
  6656. information may be available, subject to appropriate terms and conditions, 
  6657. including in some cases, payment of a fee. 
  6658.  
  6659.  
  6660. ΓòÉΓòÉΓòÉ 15.3. Trademarks ΓòÉΓòÉΓòÉ
  6661.  
  6662. The following terms are trademarks of the IBM Corporation in the United States 
  6663. or other countries or both: 
  6664.  
  6665.  AVC                      OS/2 
  6666.  C/2                      Presentation Manager 
  6667.  Common User Access       SOMobjects 
  6668.  C Set ++                 Ultimotion 
  6669.  CUA                      VisualAge 
  6670.  Hyperwise                WIN-OS2 
  6671.  IBM                      Workplace Shell 
  6672.  
  6673.  The following terms are trademarks of other companies: 
  6674.  
  6675.  Trademark                Owner 
  6676.  American Express         American Express Incorporated 
  6677.  Borland C++              Borland International, Inc. 
  6678.  BRender                  Argonaut Technologies Limited 
  6679.  C++                      American Telephone and Telegraph Company 
  6680.  CompuServe               CompuServe Incorporated 
  6681.  Diners Club              Diners Club of America 
  6682.  Discover                 Sears, Roebuck and Co. 
  6683.  MASM                     Microsoft Corporation 
  6684.  MasterCard               MasterCard International, Incorporated 
  6685.  Microsoft                Microsoft Corporation 
  6686.  VISA                     VISA International Services Association 
  6687.  Win32                    Microsoft Corporation 
  6688.  Windows                  Microsoft Corporation 
  6689.  WinTV                    Hauppauge Computer Works, Inc. 
  6690.  
  6691.  Other company, product, and service names, which may be denoted by a double 
  6692.  asterisk (**), may be trademarks or service marks of others. 
  6693.  
  6694.  
  6695. ΓòÉΓòÉΓòÉ <hidden> Ordering Information - Supplement ΓòÉΓòÉΓòÉ
  6696.  
  6697. When calling from the following countries: 
  6698.  
  6699. The Developer Connection for OS/2 can be ordered from the following countries. 
  6700. For Asia/Pacific, please ensure that you dial the international access code 
  6701. applicable to your country before the listed phone number. Note that 61 is the 
  6702. country code for Australia. 
  6703.  
  6704.  Country                Telephone Number 
  6705.  Asia/Pacific           61 2 3547684 
  6706.    Fax                  61 2 3547766 
  6707.  Canada                 1-800-561-5293 (Toll free) 
  6708.  Germany                0 130 812177   (Toll free) 
  6709.  United States          1-800-6DEVCON 
  6710.                         (Toll free: 1-800-633-8266) 
  6711.   Fax                   1-303-330-7655 
  6712.  
  6713.  In Central and South America: 
  6714.  
  6715.  Country                Telephone Number 
  6716.  Argentina              01-313-0014 
  6717.  Bolivia                02-351840 
  6718.  Brazil                 0800-111205  (Toll free) 
  6719.    Fax                  011-886-3222 
  6720.  Chile                  02-633-4400 
  6721.  Colombia               01-257-0111 
  6722.  Costa Rica             223-6222 
  6723.  Dominican Republic     566-5161 
  6724.  Ecuador                02-565100 
  6725.  El Salvador            02-985011 
  6726.  Guatemala              02-315859 
  6727.  Honduras               32-2319 
  6728.  Mexico                 91-800-00316  (Toll free) 
  6729.   Mexico City           (525) 627-1111 
  6730.  Panama                 02-639977 
  6731.  Paraguay               021-444094 
  6732.  Peru                   014-366345 
  6733.  Uruguay                02-923617 
  6734.  Venezuela              02-908-8901 
  6735.  
  6736.  In Europe: 
  6737.  
  6738.  The Developer Connection for OS/2 can be ordered direct from IBM SPC in 
  6739.  Denmark (45 is the country code) if you are calling outside the countries 
  6740.  listed above. Please ensure that you dial the international access code 
  6741.  applicable to your country before dialing the appropriate phone number. This 
  6742.  applies to both telephone and fax orders. Operators speaking the following 
  6743.  languages are available: 
  6744.  
  6745.  Language               Telephone 
  6746.  Spoken                 Number 
  6747.  Danish                 45 4 8101300 
  6748.  Dutch                  45 4 8101400 
  6749.  English                45 4 8101500 
  6750.  Finnish                45 4 8101650 
  6751.  French                 45 4 8101200 
  6752.  German                 45 4 8101000 
  6753.  Italian                45 4 8101600 
  6754.  Norwegian              45 4 8101250 
  6755.  Spanish                45 4 8101100 
  6756.  Swedish                45 4 8101150 
  6757.  Fax                    45 4 8142207 
  6758.  
  6759.  
  6760. ΓòÉΓòÉΓòÉ <hidden> \TOOLKIT\BETA Subdirectories ΓòÉΓòÉΓòÉ
  6761.  
  6762.  BETA                         - Beta versions of new tools,
  6763.   Γöé                             samples, and online books
  6764.   Γö£ΓöÇ\BIN                      - Beta versions of new tools
  6765.   Γö£ΓöÇ\BOOK                     - Beta versions of new online books
  6766.   Γö£ΓöÇ\BRENDER                  - BRender samples and tools
  6767.   Γöé   ΓööΓöÇ\SAMPLES              - BRender samples
  6768.   Γöé       ΓööΓöÇ\ROBOT            - Robot Walking sample
  6769.   ΓööΓöÇ\SAMPLES                  - Beta versions of new samples
  6770.       Γö£ΓöÇ\DAPIE                - IBM Developer API Extensions for OS/2 samples
  6771.       Γöé   Γö£ΓöÇ\DLLENTRY         - DLL initialization entry point
  6772.       Γöé   Γö£ΓöÇ\HIWORLD          - HiWorld sample (Windows version)
  6773.       Γöé   Γö£ΓöÇ\HIWORLD2         - HiWorld sample (OS/2 version)
  6774.       Γöé   Γö£ΓöÇ\TOYBOX           - Bitmap Manipulation Sample (Windows version)
  6775.       Γöé   Γö£ΓöÇ\TOYBOX2          - Bitmap Manipulation Sample (OS/2 version)
  6776.       Γöé   ΓööΓöÇ\WINMAIN          - WinMain wrapper function
  6777.       ΓööΓöÇ\ENTOOLKT             - Entertainment samples
  6778.           Γö£ΓöÇ\AUDIO            - Audio samples
  6779.           Γöé   Γö£ΓöÇ\DAUDIO       - Direct Audio sample
  6780.           Γöé   ΓööΓöÇ\MIDI         - Real Time MIDI sample
  6781.           Γö£ΓöÇ\INPUT            - Input Device sample
  6782.           Γöé   ΓööΓöÇ\JOYSTICK     - Joystick sample
  6783.           Γö£ΓöÇ\NETWORK          - Networking sample
  6784.           Γöé   ΓööΓöÇ\TICTAC       - TicTacToe sample
  6785.           ΓööΓöÇ\VIDEO            - Video sample
  6786.               ΓööΓöÇ\FSDIVE       - Full-Screen DIVE sample
  6787.  
  6788.  
  6789. ΓòÉΓòÉΓòÉ <hidden> \TOOLKIT\SOM Subdirectories ΓòÉΓòÉΓòÉ
  6790.  
  6791.   SOM              - SOM subdirectories
  6792.    Γöé
  6793.    Γö£ΓöÇ\BIN          - SOM executable (.EXE) files
  6794.    Γö£ΓöÇ\COMMON       - SOM common-file subdirectories,
  6795.    Γöé   Γöé             which contains the runtime files
  6796.    Γöé   Γö£ΓöÇ\DLL        common with OS/2 Warp, Version 3
  6797.    Γöé   Γö£ΓöÇ\ETC
  6798.    Γöé   Γö£ΓöÇ\INSTALL
  6799.    Γöé   ΓööΓöÇ\SYSTEM
  6800.    Γö£ΓöÇ\INCLUDE      - SOM .IDL, .SC, .H, .XH, .HC, .HS,
  6801.    Γöé                 and .EFW header files
  6802.    Γö£ΓöÇ\LIB          - SOM library (.LIB & .DLL) files
  6803.    ΓööΓöÇ\MSG          - SOM message (.MSG) file
  6804.  
  6805.  
  6806. ΓòÉΓòÉΓòÉ <hidden> \TOOLKIT\SAMPLES Subdirectories ΓòÉΓòÉΓòÉ
  6807.  
  6808.  SAMPLES      - Contains common information for all
  6809.    Γöé            samples, as well as SAMPLES.DOC
  6810.    Γöé
  6811.    Γö£ΓöÇ\BIDI    - Contains the bidirectional (BIDI) samples
  6812.    Γö£ΓöÇ\MM      - Contains the Multimedia samples
  6813.    Γö£ΓöÇ\OS2     - Contains the Control Program samples
  6814.    Γö£ΓöÇ\PM      - Contains the Presentation Manager samples
  6815.    Γö£ΓöÇ\REXX    - Contains common information for the
  6816.    Γöé            C-language REXX samples
  6817.    ΓööΓöÇ\WPS     - Contains the Workplace Shell samples
  6818.  
  6819.  
  6820. ΓòÉΓòÉΓòÉ <hidden> \SAMPLES ΓòÉΓòÉΓòÉ
  6821.  
  6822.  SAMPLES
  6823.    Γöé
  6824.    Γöé
  6825.    Γö£ΓöÇ\BIDI
  6826.    Γö£ΓöÇ\MM
  6827.    Γö£ΓöÇ\OS2
  6828.    Γö£ΓöÇ\PM
  6829.    Γö£ΓöÇ\REXX
  6830.    ΓööΓöÇ\WPS
  6831.  
  6832.  
  6833. ΓòÉΓòÉΓòÉ <hidden> \TOOLKIT\SAMPLES\BIDI Subdirectories ΓòÉΓòÉΓòÉ
  6834.  
  6835.   BIDI           - Contains the bidirectional (BIDI) samples
  6836.   Γö£ΓöÇ\ARABIC      - Contains the Arabic-specific BIDI samples
  6837.   Γöé   Γö£ΓöÇ\STYLE   - Arabic Style sample
  6838.   Γöé   ΓööΓöÇ\TELDIR  - Arabic Telephone Directory sample
  6839.   ΓööΓöÇ\HEBREW      - Contains the Hebrew-specific BIDI samples
  6840.       Γö£ΓöÇ\STYLE   - Hebrew Style sample
  6841.       ΓööΓöÇ\TELDIR  - Hebrew Telephone directory sample
  6842.  
  6843.  
  6844. ΓòÉΓòÉΓòÉ <hidden> \TOOLKIT\SAMPLES\MM Subdirectories ΓòÉΓòÉΓòÉ
  6845.  
  6846.  MM            - Contains the Multimedia samples,templates,
  6847.   Γöé              and command tables.
  6848.   Γö£ΓöÇ\ADMCT     - Waveform Audio Media Control Driver sample
  6849.   Γö£ΓöÇ\ASYMREC   - Asymmetric Recording sample
  6850.   Γö£ΓöÇ\AVCINST   - AVC I/O Procedure Installation sample
  6851.   Γö£ΓöÇ\CAPDLL    - Caption sample support files (DLL)
  6852.   Γö£ΓöÇ\CAPSAMP   - Caption sample
  6853.   Γö£ΓöÇ\CAPTION   - Caption Creation Utility program
  6854.   Γö£ΓöÇ\CASECONV  - Case Converter I/O procedure sample
  6855.   Γö£ΓöÇ\CDMCIDRV  - CD Audio Media Control Driver sample
  6856.   Γö£ΓöÇ\CF        - Control File templates
  6857.   Γö£ΓöÇ\CLOCK     - Memory Playlist sample
  6858.   Γö£ΓöÇ\CODEC     - Compressor/Decompressor sample
  6859.   Γö£ΓöÇ\DIVE      - Direct Interface Video Extensions sample
  6860.   Γö£ΓöÇ\DOUBPLAY  - Double Buffering Playlist sample
  6861.   Γö£ΓöÇ\DUET1     - Streaming Device Duet sample
  6862.   Γö£ΓöÇ\DUET2     - Streaming and Non-Streaming Device Duet sample
  6863.   Γö£ΓöÇ\FSSHT     - File System Stream Handler sample
  6864.   Γö£ΓöÇ\MCDTBL    - Media Control Driver (MCD) command tables
  6865.   Γö£ΓöÇ\MCDTEMP   - Media Control Driver (MCD) template
  6866.   Γö£ΓöÇ\MCISPY    - Message Monitoring sample
  6867.   Γö£ΓöÇ\MCISTRNG  - Media Control Interface String Test sample
  6868.   Γö£ΓöÇ\MMBROWSE  - Image Browser sample
  6869.   Γö£ΓöÇ\MMIOPROC  - M-Motion I/O procedure sample
  6870.   Γö£ΓöÇ\MOVIE     - Movie sample
  6871.   Γö£ΓöÇ\RECORDER  - Audio Recording sample
  6872.   Γö£ΓöÇ\SHORTCF   - Control File templates (subset of the \CF directory)
  6873.   Γö£ΓöÇ\SHRCFILE  - Stream Handler Resource File sample
  6874.   Γö£ΓöÇ\TUNER     - TV Tuner sample
  6875.   Γö£ΓöÇ\ULTIEYES  - Non-Linear Video sample
  6876.   ΓööΓöÇ\ULTIMOIO  - Ultimotion I/O procedure sample
  6877.  
  6878.  
  6879. ΓòÉΓòÉΓòÉ <hidden> \TOOLKIT\SAMPLES\OS2 Subdirectories ΓòÉΓòÉΓòÉ
  6880.  
  6881.  OS2             - Contains the Control Program samples
  6882.   Γö£ΓöÇ\CONSOLIO    - Console I/O sample (Worms)
  6883.   Γö£ΓöÇ\DLLAPI      - Dynamic Link Library sample
  6884.   Γö£ΓöÇ\EAEDIT      - Extended Attributes Editor sample (EAS)
  6885.   Γö£ΓöÇ\HANOI       - Multithreaded sample (Towers of Hanoi)
  6886.   Γö£ΓöÇ\NPIPE       - Named Pipes sample
  6887.   Γö£ΓöÇ\QUEUES      - Interprocess Communication Queue sample
  6888.   Γö£ΓöÇ\SEMAPH      - Semaphore sample
  6889.   Γö£ΓöÇ\SORT        - Multithreaded sample (Sorting Algorithm)
  6890.   Γö£ΓöÇ\TIMESERV    - Timer Services sample (Clock)
  6891.   ΓööΓöÇ\VMM         - Virtual Memory Management sample
  6892.  
  6893.  
  6894. ΓòÉΓòÉΓòÉ <hidden> \TOOLKIT\SAMPLES\PM Subdirectories ΓòÉΓòÉΓòÉ
  6895.  
  6896.  PM              - Contains the Presentation Manager samples
  6897.   Γö£ΓöÇ\BMPSAMP     - Bit map Manipulation sample (Jigsaw)
  6898.   Γö£ΓöÇ\CLIPBRD     - Clipboard sample
  6899.   Γö£ΓöÇ\CONTROLS    - PM Controls sample (Style)
  6900.   Γö£ΓöÇ\DIALOG      - Introductory Dialog Box sample
  6901.   Γö£ΓöÇ\DRAGDROP    - Direct Manipulation (Dragdrop) sample
  6902.   Γö£ΓöÇ\GRAPHIC     - Non-retained Graphic sample
  6903.   Γö£ΓöÇ\IPF         - Information Presentation Facility sample
  6904.   Γö£ΓöÇ\PALETTE     - Palette Manager sample
  6905.   Γö£ΓöÇ\PORTING     - PM 16-bit to 32-bit Porting sample (Image32)
  6906.   Γö£ΓöÇ\PRINT       - Printer sample
  6907.   Γö£ΓöÇ\STDWND      - Standard Window sample (Hello)
  6908.   ΓööΓöÇ\TEMPLATE    - Application Template sample
  6909.  
  6910.  
  6911. ΓòÉΓòÉΓòÉ <hidden> \TOOLKIT\SAMPLES\REXX Subdirectories ΓòÉΓòÉΓòÉ
  6912.  
  6913.  REXX             - Contains common information for the
  6914.  Γöé                  C-language REXX samples
  6915.  ΓööΓöÇ\API           - Contains the API REXX samples
  6916.      Γö£ΓöÇ\CALLREXX  - REXX Interpreter Invocation sample
  6917.      Γö£ΓöÇ\DEVINFO   - REXX Variable Pool Interface sample
  6918.      Γö£ΓöÇ\PMREXX    - Presentation Manager REXX Interface sample
  6919.      Γö£ΓöÇ\REXXCALC  - Presentation Manager REXX Calculator sample
  6920.      Γö£ΓöÇ\REXXUTIL  - REXX Utility Functions sample
  6921.      ΓööΓöÇ\RXMACDLL  - External Functions in REXX Macrospace sample
  6922.  
  6923.  
  6924. ΓòÉΓòÉΓòÉ <hidden> \TOOLKIT\SAMPLES\WPS Subdirectories ΓòÉΓòÉΓòÉ
  6925.  
  6926.  WPS             - Contains the Workplace Shell samples
  6927.   Γö£ΓöÇ\BROWSE      - ASCII/Hex File Browser sample
  6928.   Γö£ΓöÇ\CAR         - WPDataFile Subclass (C) sample
  6929.   Γö£ΓöÇ\CARPP       - WPDataFile Subclass (C++) sample
  6930.   Γö£ΓöÇ\TEXTFLDR    - Text Folder sample
  6931.   Γö£ΓöÇ\WPSTUTOR    - Tutorial sample
  6932.   ΓööΓöÇ\WSFILE      - Workplace File object sample
  6933.