home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / ddkx86v1.zip / DDKX86 / BOOK / IN_OUT.INF (.txt) < prev    next >
OS/2 Help File  |  1995-04-14  |  521KB  |  15,056 lines

  1.  
  2. ΓòÉΓòÉΓòÉ 1. Notices ΓòÉΓòÉΓòÉ
  3.  
  4. Third Edition (September 1994) 
  5.  
  6. The following paragraph does not apply to the United Kingdom or any country 
  7. where such provisions are inconsistent with local law:  INTERNATIONAL BUSINESS 
  8. MACHINES CORPORATION PROVIDES THIS PUBLICATION "AS IS" WITHOUT WARRANTY OF ANY 
  9. KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
  10. WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Some states 
  11. do not allow disclaimer of express or implied warranties in certain 
  12. transactions, therefore, this statement may not apply to you. 
  13.  
  14. This publication could include technical inaccuracies or typographical errors. 
  15. Changes are periodically made to the information herein; these changes will be 
  16. incorporated in new editions of the publication. IBM may make improvements 
  17. and/or changes in the product(s) and/or the program(s) described in this 
  18. publication at any time. 
  19.  
  20. It is possible that this publication may contain reference to, or information 
  21. about, IBM products (machines and programs), programming, or services that are 
  22. not announced in your country.  Such references or information must not be 
  23. construed to mean that IBM intends to announce such IBM products, programming, 
  24. or services in your country. 
  25.  
  26. Requests for technical information about IBM products should be made to your 
  27. IBM authorized reseller or IBM marketing representative. 
  28.  
  29.  
  30. ΓòÉΓòÉΓòÉ 1.1. Copyright Notices ΓòÉΓòÉΓòÉ
  31.  
  32. COPYRIGHT LICENSE: This publication contains printed sample application 
  33. programs in source language, which illustrate OS/2 programming techniques. You 
  34. may copy, modify, and distribute these sample programs in any form without 
  35. payment to IBM, for the purposes of developing, using, marketing or 
  36. distributing application programs conforming to the OS/2 application 
  37. programming interface. 
  38.  
  39. Each copy of any portion of these sample programs or any derivative work, which 
  40. is distributed to others, must include a copyright notice as follows: "(C) 
  41. (your company name) (year).  All rights reserved." 
  42.  
  43. (C) Copyright International Business Machines Corporation 1994. All rights 
  44. reserved. 
  45. Note to U.S. Government Users - Documentation related to restricted rights - 
  46. Use, duplication or disclosure is subject to restrictions set forth in GSA ADP 
  47. Schedule Contract with IBM Corp. 
  48.  
  49.  
  50. ΓòÉΓòÉΓòÉ 1.2. Disclaimers ΓòÉΓòÉΓòÉ
  51.  
  52. References in this publication to IBM products, programs, or services do not 
  53. imply that IBM intends to make these available in all countries in which IBM 
  54. operates. Any reference to an IBM product, program or service is not intended 
  55. to state or imply that only IBM's product, program, or service may be used. Any 
  56. functionally equivalent product, program, or service that does not infringe any 
  57. of IBM's intellectual property rights or other legally protectable rights may 
  58. be used instead of the IBM product, program, or service. Evaluation and 
  59. verification of operation in conjunction with other products, programs, or 
  60. services, except those expressly designated by IBM, are the user's 
  61. responsibility. 
  62.  
  63. IBM may have patents or pending patent applications covering subject matter in 
  64. this document. The furnishing of this document does not give you any license to 
  65. these patents. You can send license inquiries, in writing, to the IBM Director 
  66. of Licensing, IBM Corporation, 500 Columbus Avenue, Thornwood NY 10594, U.S.A. 
  67.  
  68.  
  69. ΓòÉΓòÉΓòÉ 1.3. Trademarks ΓòÉΓòÉΓòÉ
  70.  
  71. The following terms are trademarks of the IBM Corporation in the United States 
  72. or other countries: 
  73.  
  74. AT
  75. Common User Access
  76. CUA
  77. IBM
  78. Micro Channel
  79. OS/2
  80. Personal System/2
  81. Presentation Manager
  82. PS/2
  83. SAA
  84. Systems Application Architecture
  85. Personal Computer AT
  86. WIN-OS/2
  87. Workplace Shell
  88. XGA
  89.  
  90. The following terms are trademarks of other companies: 
  91.  
  92.  Borland             Borland International, Inc. 
  93.  Intel               Intel Corporation 
  94.  Logitech            Logitech, Inc. 
  95.  Microsoft           Microsoft Corporation 
  96.  PC Mouse            Metagraphics/Mouse Systems 
  97.  PCMCIA              Personal Computer Memory Card International Association 
  98.  RIPL                CTA Inc. 
  99.  Windows             Microsoft Corporation 
  100.  
  101.  
  102. ΓòÉΓòÉΓòÉ 2. About This Book ΓòÉΓòÉΓòÉ
  103.  
  104. The OS/2 Input/Output Device Driver Reference contains specific character 
  105. device drivers that are shipped with OS/2.  A generic discussion of character 
  106. and block device drivers can be found in the OS/2 Physical Device Driver 
  107. Reference and the Storage Device Driver Reference. 
  108.  
  109.  
  110. ΓòÉΓòÉΓòÉ 2.1. Summary of Changes ΓòÉΓòÉΓòÉ
  111.  
  112. The following are changes to the OS/2 Input/Output Device Driver Reference 
  113. since the release of IBM Device Driver Source Kit for OS/2, Version 1.2. 
  114.  
  115.    o  All information for the virtual device drivers has been removed and can 
  116.       be found in the OS/2 Virtual Device Driver Reference. 
  117.  
  118.    o  Individual chapters on Device Driver Test Tools (DDTT's) have been added 
  119.       (Keyboard, Mouse, Parallel Port, and PCMCIA Socket Services). 
  120.  
  121.    o  A new chapter on the keyboard inter-device-driver (IDCs) communcations 
  122.       has been added. 
  123.  
  124.    o  Sample Socket Services has been added to PCMCIA. 
  125.  
  126.    o  The device driver chapters have been alphabetized for ease-of-use. 
  127.  
  128.  Introduction describes the types of OS/2 device drivers. 
  129.  
  130.  Advanced Power Management Architecture describes the Advanced Power Management 
  131.  specification, a component of the OS/2 operating system that is used to manage 
  132.  power (AC/DC) consumption and utilization for PC systems. 
  133.  
  134.  Asynchronous (RS232-C) Communications Device Driver presents the physical 
  135.  asynchronous (RS232-C) communications device driver and describes how it 
  136.  enables OS/2 applications to utilize the RS232-C device hardware. 
  137.  
  138.  CLOCK$ Device Driver describes the physical clock device driver. 
  139.  
  140.  Keyboard Device Driver describes the KBD$ (device-independent) driver. 
  141.  
  142.  Keyboard Inter-Device-Driver Communication Interfaces describes the IBMKBD 
  143.  (device-dependent) driver. 
  144.  
  145.  Keyboard Device Driver Test Tool describes how to use the keyboard Functional 
  146.  Verification Tests (FVTs) that exercise the Application Program Interfaces 
  147.  (APIs) defined for the DosDevIOCtl interface of keyboard device drivers. 
  148.  
  149.  Mouse Device Driver describes a physical mouse device driver, (MOUSE.SYS) 
  150.  whose job it is to detect the types of pointing devices currently installed on 
  151.  the OS/2 operating system. When a pointing device is identified, support for 
  152.  it is set up dynamically. 
  153.  
  154.  Mouse (DOS) Device Driver Test Tool describes how to use the mouse Functional 
  155.  Verification Tests (FVTs) that exercise the Application Program Interfaces 
  156.  (APIs) defined for the DosDevIOCtl interface of mouse device drivers. 
  157.  
  158.  Parallel Port Device Driver describes the parallel port device driver, which 
  159.  supports the parallel port device interface for OS/2, Versions 2.0 and later. 
  160.  
  161.  Parallel Port Device Driver Test Tool describes how to use the parallel port 
  162.  Functional Verification Tests (FVTs) that exercise the Application Program 
  163.  Interfaces (APIs) defined for the DosDevIOCtl interface of parallel port 
  164.  device drivers. 
  165.  
  166.  PCMCIA Architecture contains a description of the PCMCIA architecture as it 
  167.  applies to the OS/2 operating system. Also included is a list of the supported 
  168.  functions and information on deviations from the PCMCIA standard. 
  169.  
  170.  PCMCIA Socket Services Device Driver Test Tool describes how to use the PCMCIA 
  171.  Functional Verification Tests (FVTs) that exercise the Application Program 
  172.  Interfaces (APIs) defined for the DosDevIOCtl interface of PCMCIA device 
  173.  drivers. 
  174.  
  175.  Touch Display Device Driver introduces and describes the IBM Touch Display 
  176.  device driver, which, in addition to the video cable connection to a VGA/XGA 
  177.  port, has a touch data cable that attaches to the IBM PS/2 Mouse (pointing 
  178.  device) port on the system unit. OS/2 protect-mode and DOS real-mode 
  179.  applications are supported by the touch component. 
  180.  
  181.  Touch Inter-Device-Driver Communication Interfaces describes the IBM 
  182.  interfaces for the Touch Display device driver. 
  183.  
  184.  Notices contains legal notices and lists the trademarks of the IBM Corporation 
  185.  and trademarks of other companies. 
  186.  
  187.  A glossary and an index are included at the back of this book. 
  188.  
  189.  
  190. ΓòÉΓòÉΓòÉ 2.2. Conventions ΓòÉΓòÉΓòÉ
  191.  
  192. Double-Byte Character Set 
  193.  
  194. Throughout this publication, there are references to specific values for 
  195. character strings. These values are for the Single-Byte Character Set (SBCS). 
  196. When using the Double-Byte Character Set, note that one DBCS character equals 
  197. two SBCS characters. 
  198.  
  199. Version 
  200.  
  201. Unless otherwise stated, "OS/2" as used in this book refers to Version 3 of the 
  202. IBM Operating System/2. 
  203.  
  204.  
  205. ΓòÉΓòÉΓòÉ 2.3. Assistance ΓòÉΓòÉΓòÉ
  206.  
  207. Technical support for device driver development is provided by the IBM Driver 
  208. Development Support Center (DDSC) through a bulletin board system (BBS) known 
  209. as the "DUDE." You are encouraged to use the DUDE to obtain support by sending 
  210. in your questions and reviewing the question and answer database which can be 
  211. downloaded for off-line review. 
  212.  
  213. To access the DUDE, dial 407-982-3217 (using a modem) to register and access 
  214. the support system. For voice support in the United States, call 407-982-4239. 
  215.  
  216. Additional assistance is available through the IBM Developer Assistance 
  217. Program. For membership information: 
  218.  
  219.  Telephone:     407-982-6408 
  220.  
  221.  Fax:           407-988-7610 (U.S.A.) or 
  222.  
  223.  Fax:           407-982-4259 (worldwide) 
  224.  
  225.  
  226. ΓòÉΓòÉΓòÉ 2.4. Ordering Information ΓòÉΓòÉΓòÉ
  227.  
  228. For an illustration of OS/2 Technical Publications and other related product 
  229. documents, see the following figure. The IBM Developer Connection Device Driver 
  230. Kit for OS/2 on CD-ROM contains actual source code for sample device drivers, 
  231. as well as the complete text of the books in online form. 
  232.  
  233. To order any of the publications shown in the illustration, call: 
  234.  
  235. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  236. ΓöéU.S.A.:             Γöé1-800-633-8266       Γöé                     Γöé
  237. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  238. ΓöéCanada:             Γöé1-800-561-5293       Γöé                     Γöé
  239. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  240. ΓöéEurope, Middle East,Γöé English language   Γöé(+45) 48101500       Γöé
  241. ΓöéAfrica, and         Γöé French language    Γöé(+45) 48101200       Γöé
  242. ΓöéLatin America:      Γöé Italian language   Γöé(+45) 48101600       Γöé
  243. Γöé                    Γöé German language    Γöé(+45) 48101000       Γöé
  244. Γöé                    Γöé Spanish language   Γöé(+45) 48101100       Γöé
  245. Γöé                    Γöé Dutch language     Γöé(+45) 48101400       Γöé
  246. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  247. ΓöéAsia/Pacific:       Γöé All except Japan   Γöé(61) 2-354-7684      Γöé
  248. Γöé                    Γöé Japan              Γöé(81) 3-3495-2045(Fax)Γöé
  249. Γöé                    Γöé                     ΓöéFax request to:      Γöé
  250. Γöé                    Γöé                     ΓöéDAP-J, IBM Japan     Γöé
  251. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  252. ΓöéSE Brazil:          Γöé(021) 800-6120(Voice)Γöé                     Γöé
  253. Γöé                    Γöé(021) 800-6936(Fax)  Γöé                     Γöé
  254. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  255. ΓöéMexico:             Γöé Mexico City        Γöé627-2444             Γöé
  256. Γöé                    Γöé Country            Γöé91-800-00639         Γöé
  257. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  258.  
  259.  
  260. ΓòÉΓòÉΓòÉ 3. Introduction ΓòÉΓòÉΓòÉ
  261.  
  262. Device drivers are software modules that act as an interface between OS/2* (or 
  263. its applications) and physical devices.  In DOS, applications are responsible 
  264. for knowing and managing all the differences between different devices of like 
  265. types.  The device drivers of OS/2 enable applications to focus on the logic of 
  266. the actual application and treat devices in a device-independent way. 
  267.  
  268. This device-independence is a fundamental benefit of the OS/2 programming 
  269. environment.  For example, drawing a circle on the screen or on a printer is as 
  270. easy as opening a device context for the correct output device and performing 
  271. the drawing operations.  By placing the drawing operation into the device 
  272. context, the programmer does not have to be concerned about whether the device 
  273. is a printer or a display. 
  274.  
  275.  
  276. ΓòÉΓòÉΓòÉ 3.1. Types of OS/2 Device Drivers ΓòÉΓòÉΓòÉ
  277.  
  278. Three types of device drivers are used in OS/2 Version 3: 
  279.  
  280.    o  Physical device drivers 
  281.    o  Virtual device drivers 
  282.    o  Presentation drivers 
  283.  
  284.  
  285. ΓòÉΓòÉΓòÉ 3.1.1. Physical Device Drivers ΓòÉΓòÉΓòÉ
  286.  
  287. Physical device drivers, in most cases, resolve device-independent input and 
  288. output (I/O) requests from the operating system and its applications with the 
  289. device-dependent physical attributes of the device.  The physical device 
  290. drivers shipped with OS/2 Version 3 include support for the following: 
  291.  
  292.    o  Advanced Power Management 
  293.    o  Asynchronous Communication (RS-232C) 
  294.    o  CD-ROM 
  295.    o  Hard Disk and Diskette 
  296.    o  Keyboard 
  297.    o  Mouse 
  298.    o  Parallel Port Printer 
  299.    o  PCMCIA 
  300.    o  System Clock 
  301.    o  Touch Screen 
  302.    o  Video 
  303.  
  304.  
  305. ΓòÉΓòÉΓòÉ 3.1.2. Virtual Device Drivers ΓòÉΓòÉΓòÉ
  306.  
  307. The virtual device driver is an installable module that virtualizes a 
  308. particular piece of hardware and associated ROM BIOS in the manner expected by 
  309. a DOS application.  This device driver achieves virtualization by emulating I/O 
  310. port and device memory operations. Virtual device drivers are 32-bit device 
  311. drivers that operate at Ring 0.  To achieve a certain level of hardware 
  312. independence, a virtual device driver usually communicates with a physical 
  313. device driver in order to interact with hardware. 
  314.  
  315. Further information on virtual device drivers, virtual device driver interfaces 
  316. (including detailed descriptions of the calling conventions), and the system 
  317. services available to these drivers is found in the OS/2 Virtual Device Driver 
  318. Reference. 
  319.  
  320.  
  321. ΓòÉΓòÉΓòÉ 3.1.3. Presentation Drivers ΓòÉΓòÉΓòÉ
  322.  
  323. The Presentation Manager* I/O interface for output devices is a high-level 
  324. interface.  This interface is similar to the API call interface, which uses the 
  325. program stack to communicate with, or pass parameters to, the presentation 
  326. drivers.  These drivers are special purpose I/O routines operating with I/O 
  327. privilege at privilege level 2 (Ring 2) or level 3 (Ring 3).  Their main 
  328. function is to process function calls made by the Presentation Manager 
  329. interface on behalf of Presentation Manager applications.  Hardcopy 
  330. presentation drivers communicate with OS/2 device drivers through the file 
  331. system emulation functions.  Display presentation drivers interface directly 
  332. with the hardware. 
  333.  
  334. Presentation drivers are dynamic link library modules that are supplied as 
  335. files and identified by the extension DRV.  When the Presentation Manager 
  336. interface is initialized, the display presentation driver is loaded and enabled 
  337. automatically.  Other presentation drivers (for example, the hardcopy 
  338. presentation drivers) are loaded and enabled when an application calls the 
  339. DevOpenDC function to open the device. 
  340.  
  341. Presentation drivers service requests only from applications running in 
  342. Presentation Manager sessions in the OS/2 mode.  Output data and requests for 
  343. information are passed to the presentation driver as function calls to the 
  344. presentation driver interface.  The definition of the call interface is given 
  345. in terms of the codes and data passed to the presentation driver interface 
  346. through the program stack. 
  347.  
  348. Header and include files are shipped with OS/2 to provide support for building 
  349. presentation drivers that are written in C or assembler language.  These files 
  350. contain function prototypes, defined values, and data structures used by the 
  351. various functions.  Further information on presentation drivers, presentation 
  352. driver interfaces (including detailed descriptions of the calling conventions), 
  353. and the system services available to these drivers is found in the OS/2 
  354. Presentation Device Driver Reference. 
  355.  
  356.  
  357. ΓòÉΓòÉΓòÉ 4. Advanced Power Management Architecture ΓòÉΓòÉΓòÉ
  358.  
  359. This chapter contains a brief description of the Advanced Power Management 
  360. (APM) hardware and software architecture as it applies to the OS/2 operating 
  361. system.  Also included is a list of supported functions. 
  362.  
  363.  
  364. ΓòÉΓòÉΓòÉ 4.1. Overview ΓòÉΓòÉΓòÉ
  365.  
  366. Advanced Power Management is an industry standard that covers the division of 
  367. responsibilities for power management between hardware and software. The 
  368. Advanced Power Management 1.0 Specification defines the Advanced Power 
  369. Management BIOS Extension interfaces available to the operating system software 
  370. layers.  The OS/2 Power Management subsystem supports and extends the Advanced 
  371. Power Management 1.0 Specification.  The OS/2 operating system runs on and 
  372. exploits the wide range of manufacturers' hardware that provides 
  373. industry-standard Advanced Power Management BIOS Extensions. 
  374.  
  375. The OS/2 Power Management Architecture is based on the APM 1.0 Architecture and 
  376. includes functions specific to the OS/2 system components. 
  377.  
  378.  
  379. ΓòÉΓòÉΓòÉ 4.1.1. OS/2 APM Software Components ΓòÉΓòÉΓòÉ
  380.  
  381. There are four major software components defined in the OS/2 Power Management 
  382. Architecture: 
  383.  
  384.    o  Power Object manages and tracks power consumption in battery-powered 
  385.       computers that support the APM standard. This component is provided in 
  386.       OS/2 but might be extended by APM-aware device drivers or APM BIOS 
  387.       vendors. 
  388.  
  389.    o  APM Subsystem interacts with the APM BIOS, APM-aware device drivers, and 
  390.       the Power object to process power management state changes.  This 
  391.       component is provided in OS/2. 
  392.  
  393.    o  APM-Aware Device Drivers manage specific device details across power 
  394.       management state changes.  There are numerous device drivers that can fit 
  395.       into this component category.  Some of the OS/2-provided device drivers 
  396.       are APM-aware (such as MOUSE.SYS).  Other OS/2 APM-aware device drivers 
  397.       are provided by OEM hardware manufacturers that produce power managed 
  398.       add-on devices (such as data/fax modems). 
  399.  
  400.    o  APM BIOS encapsulates the underlying hardware characteristics and 
  401.       provides a consistent industry-wide function base for higher layers of 
  402.       software (such as OS/2).  The APM BIOS component is provided by the 
  403.       Personal Computer Manufacturer (PCM) if the system is meant to provide 
  404.       power management capabilities. 
  405.  
  406.  
  407. ΓòÉΓòÉΓòÉ 4.2. Power Object ΓòÉΓòÉΓòÉ
  408.  
  409. As previously mentioned, the OS/2 Power object provides the GUI for power 
  410. management actions.  The complete explanation of the Power object GUI details 
  411. are documented in the OS/2 V2.1 Update Redbook. In addition, the Power object 
  412. provides a set of Workplace Shell* methods as an application programming 
  413. interface (API).  The complete explanation of the Power object methods are 
  414. documented in the Presentation Manager Programming Reference for OS/2 2.1 (or 
  415. later). 
  416.  
  417. The Power object is located in the System Setup folder, which is located inside 
  418. the OS/2 System Folder.  The Power object is automatically installed on systems 
  419. containing the APM BIOS interfaces. In addition, the user can selectively 
  420. install the Power object (and subsystem) by way of the OS/2 Selective 
  421. Installation procedures. 
  422.  
  423. A useful tool to customize the Power Object Notebook is the OEM extensions. 
  424. Some OEM computer vendors add additional power savings capabilities outside the 
  425. 1.0 specifications and the OS/2 Power object adheres to the 1.0 specification. 
  426. To provide the OEM extensions, replace the WPPower class and use the 
  427. wpAddSettingsPages and wpInsertSettingsPage methods with a tab label of 
  428. "Options". 
  429.  
  430. The ability to perform an immediate conservation of power is controlled by way 
  431. of selections in the object's pop-up menu.  Any Power object extensions can be 
  432. added in device-specific power state controls by subclassing the pop-up menu 
  433. and adding or replacing specific menu selections. Furthermore, the conditional 
  434. cascade menu control (right pointing arrow) should be used to provide the 
  435. conditional cascade submenu with its additional suboptions.  One of the 
  436. cascaded submenu suboptions should be an "All" option that acts as a 
  437. replacement for the existing system-wide menu option.  A device specific option 
  438. for the customized device support should also be added to the cascade submenu. 
  439. The cascaded submenu option that is currently active (defined by check box 
  440. control) is the option which will be executed when the pop-up menu option is 
  441. selected. 
  442.  
  443. Pop-up menu options are added by way of the wpModifyPopupMenu method. The OEM 
  444. extension DLL code maps wpMenuItemSelected notifications for the "All" 
  445. condition to the original pop-up menu option value. The extension passes the 
  446. notification on to the OS/2 Power object for normal processing. 
  447.  
  448. The following figure depicts the user's view of the topics previously 
  449. discussed. 
  450.  
  451.  
  452. ΓòÉΓòÉΓòÉ 4.3. APM Subsystem ΓòÉΓòÉΓòÉ
  453.  
  454. The OS/2 APM Subsystem provides the support hub for the OS/2 Power Management 
  455. Architecture. The APM Subsystem provides both Category OCh Generic IOCtl 
  456. interfaces for specialized applications (such as Power object) and an 
  457. inter-device-driver communication (IDC) programming interface for APM-aware 
  458. device drivers.  Both the generic IOCtl and IDC interfaces are defined later in 
  459. this section of the document. 
  460.  
  461. The OS/2 APM Subsystem is contained in two separate files, APM.SYS and 
  462. VAPM.SYS. The APM.SYS file is a physical device driver (PDD) and contains the 
  463. key OS/2 APM Subsystem support (BIOS interactions, IDC and IOCtl interface 
  464. support, and so on). The VAPM.SYS file is a virtual device driver (VDD) and 
  465. contains power management support for the DOS and WIN-OS/2 application 
  466. environments.  The real DOS and Windows environments utilize the APM BIOS INT 
  467. 15h, Ah=53h interfaces as well as the INT 2Fh broadcast interface for power 
  468. state change notifications. These DOS and Windows interfaces are not supported 
  469. in the DOS and WIN-OS/2 environments by the OS/2 2.1 VAPM.SYS device driver. 
  470. The VAPM.SYS support simply rejects requests made to INT 15h, Ah=53h by setting 
  471. the returned AH value to 86h, indicating power management support functions are 
  472. not available. 
  473.  
  474. Because the APM Subsystem (APM.SYS) is the hub of the OS/2 Power Management 
  475. support, it must be specified in the CONFIG.SYS file before the other power 
  476. management components. If the APM BIOS is being implemented as an OS/2 device 
  477. driver, then it must appear in the CONFIG.SYS file before the APM device 
  478. driver. (See APM BIOS for more details.)  In addition, the APM Subsystem 
  479. provides the following DEVICE= command line switches: 
  480.  
  481.    o  /B 
  482.  
  483.       This switch directs APM.SYS to first locate and connect to the APM ROM 
  484.       BIOS.  If the APM ROM BIOS support is not available, then the APM 
  485.       Subsystem will attempt to locate and connect to a device driver 
  486.       implementation of the BIOS support. 
  487.  
  488.    o  /D 
  489.  
  490.       This switch directs APM.SYS to first locate and connect to a device 
  491.       driver implementation of the BIOS support. If the device driver support 
  492.       is not available then the APM Subsystem will attempt to locate and 
  493.       connect to the APM ROM BIOS support. 
  494.  
  495.  Note:  If no DEVICE= command line switch is specified then the /B option is 
  496.  used as the APM.SYS default switch setting. 
  497.  
  498.  The APM Subsystem IDC and IOCtl programming interfaces utilize the values 
  499.  defined by the APM 1.0 Interface Specification for the Power Management Device 
  500.  IDs and the Power Management States. (see APM-Aware Device Drivers). 
  501.  Furthermore, Power Management Event Messages are utilized in the APM Subsystem 
  502.  IDC and IOCtl programming interfaces. 
  503.  
  504.  
  505. ΓòÉΓòÉΓòÉ 4.3.1. Power Management Event Messages ΓòÉΓòÉΓòÉ
  506.  
  507. The OS/2 Power Management subsystem uses a messaging, event-driven interface. 
  508. The OS/2 Power Management event messages are summarized in the following 
  509. figure, with message-specific parameter values. The events reported by way of 
  510. the Get Power Management Event function are equivalent to the power management 
  511. event messages available from the OS/2 Power Management Services Layer. Message 
  512. names containing the word Event are reported directly from the Advanced Power 
  513. Management BIOS interface. 
  514.  
  515.  
  516.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  517.   ΓöéOS/2 Power Management      Γöé                 Γöé                 Γöé
  518.   ΓöéEvent Messages             Γöé     ulParm1     Γöé    ulParm2      Γöé
  519.   Γöé                           Γöé SubID  ΓöéReservedΓöé (msg-specific)  Γöé
  520.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  521.   ΓöéEnable Pwr Mgt Functions   Γöé 0003h  Γöé 0000h  Γöé  - - - Γöé - - -  Γöé
  522.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  523.   ΓöéDisable Pwr Mgt Functions  Γöé 0004h  Γöé 0000h  Γöé  - - - Γöé - - -  Γöé
  524.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  525.   ΓöéRestore BIOS Defaults      Γöé 0005h  Γöé 0000h  Γöé  - - - Γöé - - -  Γöé
  526.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  527.   ΓöéSet Power State            Γöé 0006h  Γöé 0000h  Γöé DevID  ΓöéPwrStateΓöé
  528.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  529.   ΓöéBattery Low Event          Γöé 0007h  Γöé 0000h  Γöé - - -  Γöé - - -  Γöé
  530.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  531.   ΓöéNormal Resume Event        Γöé 0008h  Γöé 0000h  Γöé - - -  Γöé - - -  Γöé
  532.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  533.   ΓöéCritical Resume Event      Γöé 0009h  Γöé 0000h  Γöé - - -  Γöé - - -  Γöé
  534.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  535.   Γöé Note:  All other values are reserved.                         Γöé
  536.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  537.  
  538. The general descriptions for each of the Power Management event message values 
  539. follow. 
  540.  
  541. Note:  Many of the descriptions that follow use a C-language macro called 
  542.        MAKEULONG in the definition of the parameters. A description of 
  543.        MAKEULONG is included at the end of this section. 
  544.  
  545.    o  Enable Power Management Function 
  546.  
  547.       Indicates that the Advanced Power Management BIOS request for power 
  548.       management assistance is being enabled. 
  549.  
  550.         -  Parameters 
  551.  
  552.                       ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  553.  
  554.  
  555.                                SubId(USHORT) = 0003H
  556.                                ulParm1 = MAKEULONG(SubId,0)
  557.                                ulParm2 = MAKEULONG(0,0)
  558.  
  559.                       ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  560.  
  561.         -  Notification order 
  562.  
  563.              1. Device drivers 
  564.  
  565.              2. Application programs 
  566.  
  567.    o  Disable Power Management Function 
  568.  
  569.       Indicates that the Advanced Power Management BIOS request for power 
  570.       management assistance is being disabled. 
  571.  
  572.         -  Parameters 
  573.  
  574.                       ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  575.  
  576.  
  577.                                SubId(USHORT) = 0004H
  578.                                ulParm1 = MAKEULONG(SubId,0)
  579.                                ulParm2 = MAKEULONG(0,0)
  580.  
  581.                       ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  582.  
  583.         -  Notification order 
  584.  
  585.              1. Application programs 
  586.  
  587.              2. Device drivers 
  588.  
  589.    o  Restore BIOS Defaults 
  590.  
  591.       Indicates that the Advanced Power Management BIOS Restore BIOS Power-On 
  592.       Defaults request is being processed. 
  593.  
  594.         -  Parameters 
  595.  
  596.                       ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  597.  
  598.  
  599.                                SubId(USHORT) = 0005H
  600.                                ulParm1 = MAKEULONG(SubId,0)
  601.                                ulParm2 = MAKEULONG(0,0)
  602.  
  603.                       ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  604.  
  605.         -  Notification order 
  606.  
  607.              1. Application programs 
  608.  
  609.              2. Device drivers 
  610.  
  611.    o  Set Power State 
  612.  
  613.       Indicates that an Advanced Power Management BIOS Set Power State function 
  614.       request is being processed. 
  615.  
  616.         -  Parameters 
  617.  
  618.                       ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  619.  
  620.  
  621.                                SubId(USHORT) = 0006H
  622.                                DevId(USHORT) = (See below)
  623.                                PwrState(USHORT) = (See below)
  624.                                ulParm1 = MAKEULONG(SubId,0)
  625.                                ulParm2 = MAKEULONG(DevId,PwrState)
  626.  
  627.                       ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  628.  
  629.            DevId is the ID of the device whose power state is being set. The 
  630.            set of device types supported by the Advanced Power Management 1.0 
  631.            Specification is listed in Power Management Devices. 
  632.  
  633.            PwrState is the state to which the device is to be set. The set of 
  634.            power states supported by the Advanced Power Management 1.0 
  635.            Specification is listed in Power Management States. 
  636.  
  637.         -  Notification order 
  638.  
  639.              1. Application programs 
  640.  
  641.              2. device drivers 
  642.  
  643.    o  Battery Low Event 
  644.  
  645.       Indicates that the Advanced Power Management BIOS has detected and 
  646.       notified the operating system that a Battery Low situation is occurring. 
  647.  
  648.         -  Parameters 
  649.  
  650.                       ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  651.  
  652.  
  653.                                SubId(USHORT) = 0007H
  654.                                ulParm1 = MAKEULONG(SubId,0)
  655.                                ulParm2 = MAKEULONG(0,0)
  656.  
  657.                       ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  658.  
  659.         -  Notification order 
  660.  
  661.              1. Application programs 
  662.  
  663.              2. Device drivers 
  664.  
  665.    o  Normal Resume Event 
  666.  
  667.       Indicates that the Advanced Power Management BIOS has entered and exited 
  668.       a normal System Suspend situation and is notifying the operating system 
  669.       on the suspend exit. 
  670.  
  671.         -  Parameters 
  672.  
  673.                       ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  674.  
  675.  
  676.                                SubId(USHORT) = 0008H
  677.                                ulParm1 = MAKEULONG(SubId,0)
  678.                                ulParm2 = MAKEULONG(0,0)
  679.  
  680.                       ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  681.  
  682.         -  Notification order 
  683.  
  684.              1. Device drivers 
  685.  
  686.              2. Application programs 
  687.  
  688.    o  Critical Resume Event 
  689.  
  690.       Indicates that the Advanced Power Management BIOS has entered and exited 
  691.       a critical System Suspend situation and is notifying the operating system 
  692.       on the suspend exit. 
  693.  
  694.         -  Parameters 
  695.  
  696.                       ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  697.  
  698.  
  699.                                SubId(USHORT) = 0009H
  700.                                ulParm1 = MAKEULONG(SubId,0)
  701.                                ulParm2 = MAKEULONG(0,0)
  702.  
  703.                       ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  704.  
  705.         -  Notification order 
  706.  
  707.              1. Device drivers 
  708.  
  709.              2. Application programs 
  710.  
  711.  
  712. ΓòÉΓòÉΓòÉ 4.3.1.1. MAKEULONG ΓòÉΓòÉΓòÉ
  713.  
  714. In the previous descriptions, a C language-defined macro called MAKEULONG is 
  715. sometimes used in the definition of the parameters. MAKEULONG is defined in 
  716. OS2DEF.H and has the following syntax: 
  717.  
  718. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  719.  
  720.  
  721.          MAKEULONG(Low, High)
  722.  
  723.          /* Low and High are both 16-bit parameters. */
  724.  
  725. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  726.  
  727. Leaving out the type-casting for simplicity, MAKEULONG translates to: 
  728.  
  729. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  730.  
  731.  
  732.          ( (Low) | (High) << 16 )
  733.  
  734. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  735.  
  736. An example is: 
  737.  
  738. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  739.  
  740.  
  741.          ULONG ulParm;
  742.  
  743.          ulParm = MAKEULONG(0x5678, 0x1234);
  744.  
  745.          /* The statement above sets ulParm equal to 0x12345678 */
  746.  
  747. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  748.  
  749. The first parameter to MAKEULONG becomes the low-order word, and the second 
  750. parameter becomes the high-order word in the resulting 32-bit value. 
  751.  
  752.  
  753. ΓòÉΓòÉΓòÉ 4.3.2. Power Management IDC Interfaces ΓòÉΓòÉΓòÉ
  754.  
  755. In the OS/2 operating system, there is an interface layer between the low-level 
  756. subsystems and device driver clients. The mechanism for achieving this 
  757. interface is based on IDC. For the OS/2 Power Management Services Layer, there 
  758. are five IDC functions. The IDC functional interfaces and how they map to the 
  759. Advanced Power Management BIOS Interfaces are defined in the following table: 
  760.  
  761. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  762. ΓöéAdvanced Power Management 1.0 ΓöéOS/2 Power Management IDC     Γöé
  763. ΓöéBIOS Functions                ΓöéFunctions                     Γöé
  764. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  765. ΓöéInstallation Check (00h)      ΓöéQueryPowerInfo (0004h)        Γöé
  766. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  767. ΓöéInterface Connect (01h)       ΓöéN/A                           Γöé
  768. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  769. ΓöéProtect-Mode Connect 16-Bit   ΓöéN/A                           Γöé
  770. Γöé(02h)                         Γöé                              Γöé
  771. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  772. ΓöéProtect-Mode Connect 32-Bit   ΓöéN/A                           Γöé
  773. Γöé(03h)                         Γöé                              Γöé
  774. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  775. ΓöéInterface Disconnect (04h)    ΓöéN/A                           Γöé
  776. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  777. ΓöéCPU Idle (05h)                ΓöéN/A                           Γöé
  778. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  779. ΓöéCPU Busy (06H)                ΓöéN/A                           Γöé
  780. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  781. ΓöéSet Power State (07h)         ΓöéSendPowerEvent (0002h)        Γöé
  782. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  783. ΓöéEnable/Disable Pwr Mgt Fcns   ΓöéSendPowerEvent (0002h)        Γöé
  784. Γöé(08h)                         Γöé                              Γöé
  785. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  786. ΓöéRestore BIOS Defaults (09h)   ΓöéSendPowerEvent (0002h)        Γöé
  787. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  788. ΓöéGet Power Status (0Ah)        ΓöéQueryPowerStatus (0003h)      Γöé
  789. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  790. ΓöéGet Pwr Mgt Event (0Bh)       ΓöéRegisterDDRtn/DeregisterDDRtn Γöé
  791. Γöé                              Γöé(0000h)/(0001h)               Γöé
  792. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  793.  
  794. An OS/2 physical device driver (PDD) accesses the power management services by 
  795. calling the power management device driver's IDC entry point. This address is 
  796. obtained using the DevHlp_AttachDD interface. The name "APM$    ", (APM$, 
  797. followed by four blank characters) is passed to AttachDD as the power 
  798. management device driver name. 
  799.  
  800. Before calling the power management device driver, the client device driver 
  801. must create a data structure and fill in the appropriate parameters. The first 
  802. member of the structure is a WORD that identifies the function being requested. 
  803. The rest of the data structure contains the parameters for that function. 
  804.  
  805. The client then loads a Selector:Offset pointer to the structure into ES:BX and 
  806. calls the Power Management IDC interface. There is no need to set the Power 
  807. Management Data Selector before the call. 
  808.  
  809. On entry to the Power Management IDC routine, ES:BX points to a data structure 
  810. of the following format: 
  811.  
  812. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  813.  
  814.  
  815. Function      WORD        ; IDC function code, as defined below.
  816. Parameters    BYTE(?)     ; Parameter packet, as defined below.
  817.                           ; A different parameter packet is defined
  818.                           ; for each IDC service.
  819.  
  820. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  821.  
  822. These IDC interfaces are only available at task time.  They are not available 
  823. at initialization or interrupt time. The Power Management device driver 
  824. processes the call and returns the Return Code in AX. AX is set to 0 and the 
  825. Carry flag is cleared on a successful call. On error, AX is guaranteed to be 
  826. nonzero and the Carry flag is set. 
  827.  
  828. Power Management IDC functions are callable only in kernel-context mode. 
  829.  
  830.  
  831. ΓòÉΓòÉΓòÉ 4.3.2.1. Power Management IDC Functions ΓòÉΓòÉΓòÉ
  832.  
  833. The OS/2 Power Management IDC function codes are the values in the first WORD 
  834. of the data structures submitted to the Power Management device driver.  The 
  835. codes are defined as follows: 
  836.  
  837. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  838.  
  839.  
  840.          Length    Value    Function
  841.          ------    -----    --------
  842.          WORD        0      RegisterDDRtn
  843.                      1      DeregisterDDRtn
  844.                      2      SendPowerEvent
  845.                      3      QueryPowerStatus
  846.                      4      QueryPowerInfo
  847.  
  848.          All other values are reserved.
  849.  
  850. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  851.  
  852. The OS/2 Power Management IDC functional descriptions are defined as follows: 
  853.  
  854.    o  Power Management IDC Function 0 - RegisterDDRtn 
  855.  
  856.       The RegisterDDRtn function is used by a Power-Management-sensitive device 
  857.       driver so that it will be notified of Power Management events. These 
  858.       Power Management events are synchronous messages. The caller provides the 
  859.       following parameter information: 
  860.  
  861.         -  Parameters 
  862.  
  863.                       ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  864.                       ΓöéField                 ΓöéType         ΓöéLength       Γöé
  865.                       Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  866.                       ΓöéHandle                ΓöéUSHORT       ΓöéWORD         Γöé
  867.                       Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  868.                       ΓöéEventHandler          ΓöéPRM          ΓöéDWORD        Γöé
  869.                       Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  870.                       ΓöéNotificationMask      ΓöéULONG        ΓöéDWORD        Γöé
  871.                       Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  872.                       ΓöéClientDS              ΓöéSEL          ΓöéWORD         Γöé
  873.                       Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  874.                       ΓöéDeviceID              ΓöéUSHORT       ΓöéWORD         Γöé
  875.                       ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  876.  
  877.            Where the fields are interpreted as follows: 
  878.  
  879.              o  Handle 
  880.  
  881.                 Output parameter. The unique handle value for the registered 
  882.                 event-handler routine information. When registered, a device 
  883.                 driver is required to perform a DeregisterDDRtn request to 
  884.                 disconnect the registered routine. 
  885.  
  886.              o  EventHandler 
  887.  
  888.                 Input parameter. The calling device driver's Selector:Offset 
  889.                 value of the calling device driver's Event Handler routine. 
  890.  
  891.              o  NotificationMask 
  892.  
  893.                 Input parameter. The bit mask indicating the power management 
  894.                 events on which the calling device driver is to receive 
  895.                 notifications. A set bit (value = 1) indicates power management 
  896.                 event notification selection. The Notification Mask bit 
  897.                 definitions are as follows: 
  898.  
  899.                      BIT #  MEANING 
  900.                      3      Enable Power Management 
  901.                      4      Disable Power Management 
  902.                      5      Restore BIOS defaults 
  903.                      6      Set power state 
  904.                      7      Battery Low event 
  905.                      8      Normal Resume event 
  906.                      9      Critical Resume event All other bits are reserved. 
  907.  
  908.                    See Power Management Event Messages for more details on the 
  909.                    Power Management Events previously described. 
  910.  
  911.              o  ClientDS 
  912.  
  913.                 Input parameter. The calling device driver's Data Segment 
  914.                 Selector value. This value is loaded into the DS register when 
  915.                 the Event Handler Routine is invoked. 
  916.  
  917.              o  DeviceID 
  918.  
  919.                 Input parameter. The ID of the device. The set of device types 
  920.                 supported by the Advanced Power Management 1.0 Specification is 
  921.                 listed in Power Management Devices. This parameter can be used 
  922.                 to restrict the notification of power state changes. The 
  923.                 parameter normally is set to 0001H, which selects all 
  924.                 BIOS-managed devices. However, if the parameter is set to some 
  925.                 other value that selects a particular device type, the client 
  926.                 receives notification on power transitions only on that 
  927.                 particular device. For example, the driver registers with 
  928.                 DeviceID set to 02FF (all disk devices). The Event Handler 
  929.                 routine is called at the following times: 
  930.  
  931.                   -  When the entire system is entering or exiting Standby or 
  932.                      Suspend mode 
  933.                   -  When only a disk is entering or exiting Standby or Suspend 
  934.                      modes. 
  935.  
  936.                    The Event Handler routine is not invoked, however, when, for 
  937.                    example, only a display is entering Standby. 
  938.  
  939.         -  Remarks 
  940.  
  941.            When a Power Management Event is triggered, the Power Management 
  942.            device driver formats an Event Handler Packet (as defined below), 
  943.            stores a 16:16 pointer to the packet in ES:BX, sets the client's DS 
  944.            selector, then calls the client device driver. 
  945.  
  946.            Registered device-driver Event Handler routines are called with the 
  947.            following power management event-related information and conditions: 
  948.  
  949.                       ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  950.                       ΓöéField       ΓöéType        ΓöéLength      Γöé
  951.                       Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  952.                       ΓöéFunction    ΓöéUSHORT      ΓöéWORD        Γöé
  953.                       Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  954.                       ΓöéulParm1     ΓöéULONG       ΓöéDWORD       Γöé
  955.                       Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  956.                       ΓöéulParm2     ΓöéULONG       ΓöéDWORD       Γöé
  957.                       ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  958.  
  959.            Where the fields are interpreted as follows: 
  960.  
  961.              o  Function 
  962.  
  963.                 Input parameter. Must be the following value: 
  964.  
  965.                   -  Event Notification = 0000H. All other values are reserved. 
  966.  
  967.              o  ulParm1 
  968.  
  969.                 Input parameter. See 
  970.  
  971.                 the previous figure "Power Management Event Messages and 
  972.                 Parameter Values" and Power Management Event Messages for value 
  973.                 descriptions. 
  974.  
  975.              o  ulParm2 
  976.  
  977.                 Input parameter. See 
  978.  
  979.                 the previous figure "Power Management Event Messages and 
  980.                 Parameter Values" and Power Management Event Messages for value 
  981.                 descriptions. 
  982.  
  983.               The Power Management device driver loads the DS register and 
  984.               calls the Event Handler routine address with the values 
  985.               established using the RegisterDDRtn function. 
  986.  
  987.               The Event Handler routine is guaranteed to be called only in 
  988.               kernel-context mode by the Power Management device driver. 
  989.  
  990.               On return from the Event Handler routine, the AX register is used 
  991.               to indicate whether or not the notification request was accepted 
  992.               or rejected.  An accepted request is noted by an AX register 
  993.               value of zero.  A rejected request is noted by a nonzero AX 
  994.               register value.  If a notification request cannot be supported 
  995.               due to pending device activity or an indeterminate device state 
  996.               it is valid for the device driver to fail the request.  The OS/2 
  997.               2.1 APM Subsystem only checks the AX return value for Suspend 
  998.               Event notification requests.  If a device driver fails a Suspend 
  999.               Event request, the APM Subsystem will generate an artificial 
  1000.               Resume Event to reset the device drivers that have already 
  1001.               processed, and accepted, the failed Suspend Event request.  Those 
  1002.               registered device drivers that did not see the Suspend Event 
  1003.               would also not see the Resume Event. 
  1004.  
  1005.               All other register values are preserved across the call by the 
  1006.               Event Handler routine. 
  1007.  
  1008.    o  Power Management IDC Function 1 - DeregisterDDRtn 
  1009.  
  1010.       The DeregisterDDRtn function is used by a power-management-sensitive 
  1011.       device driver to disconnect a registered event-handler routine. 
  1012.       Disconnection is necessary for proper cleanup in cases where a device 
  1013.       driver de-installs itself after registration has occurred. 
  1014.  
  1015.         -  Parameters 
  1016.  
  1017.                       ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1018.                       ΓöéField       ΓöéType        ΓöéLength      Γöé
  1019.                       Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1020.                       ΓöéHandle      ΓöéUSHORT      ΓöéWORD        Γöé
  1021.                       ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1022.  
  1023.            Where the field is interpreted as follows: 
  1024.  
  1025.              o  Handle 
  1026.  
  1027.                 Input parameter. The unique handle value for the device 
  1028.                 driver's registered event-handler routine. This value is 
  1029.                 returned from a successful request to the RegisterDDRtn 
  1030.                 function. 
  1031.  
  1032.         -  Remarks 
  1033.  
  1034.            None. 
  1035.  
  1036.    o  Power Management IDC Function 2 - SendPowerEvent 
  1037.  
  1038.       The SendPowerEvent function enables a power-management-sensitive device 
  1039.       driver to send a power management event message to Power Management 
  1040.       Services. Power Management Services process power management event 
  1041.       messages sent by the device driver in the same manner as power management 
  1042.       BIOS and user interface requests. This function might not return to the 
  1043.       caller until the request and associated activities are completed. 
  1044.  
  1045.       The caller provides the following parameter information: 
  1046.  
  1047.         -  Parameters 
  1048.  
  1049.                       ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1050.                       ΓöéField       ΓöéType        ΓöéLength      Γöé
  1051.                       Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1052.                       ΓöéulParm1     ΓöéULONG       ΓöéDWORD       Γöé
  1053.                       Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1054.                       ΓöéulParm2     ΓöéULONG       ΓöéDWORD       Γöé
  1055.                       ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1056.  
  1057.            See the previous figure "Power Management Event Messages and 
  1058.            Parameter Values" for the parameter values. Refer to Category OCh, 
  1059.            Function 40h, "Send Power Event" in the the OS/2 Physical Device 
  1060.            Driver Reference for more information. 
  1061.  
  1062.            This function must not be called if the caller is running under the 
  1063.            context of the IDC-registered device driver event-handler routine. 
  1064.            In addition, this function must not be called when running in an 
  1065.            interrupt context. 
  1066.  
  1067.    o  Power Management IDC Function 03h - QueryPowerStatus 
  1068.  
  1069.       The QueryPowerStatus function is used by a power-management-sensitive 
  1070.       device driver to determine the current power source status. 
  1071.  
  1072.         -  Parameters 
  1073.  
  1074.                       ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1075.                       ΓöéField               ΓöéType        ΓöéLength      Γöé
  1076.                       Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1077.                       ΓöéParmLength          ΓöéUSHORT      ΓöéWORD        Γöé
  1078.                       Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1079.                       ΓöéPowerFlags          ΓöéUSHORT      ΓöéWORD        Γöé
  1080.                       Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1081.                       ΓöéACStatus            ΓöéBIT 8       ΓöéBYTE        Γöé
  1082.                       Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1083.                       ΓöéBatteryStatus       ΓöéBIT 8       ΓöéBYTE        Γöé
  1084.                       Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1085.                       ΓöéBatteryLife         ΓöéBIT 8       ΓöéBYTE        Γöé
  1086.                       ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1087.  
  1088.         -  Remarks 
  1089.  
  1090.            None. 
  1091.  
  1092.          Refer to Category OCh, Function 60h, "Query Power Status" in the OS/2 
  1093.          Physical Device Driver Reference for more information. 
  1094.  
  1095.    o  Power Management IDC Function 04h - QueryPowerInformation 
  1096.  
  1097.       The QueryPowerInfo function is used by a power-management-sensitive 
  1098.       device driver to determine the power configuration and revision-level 
  1099.       information. 
  1100.  
  1101.         -  Parameters 
  1102.  
  1103.                       ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1104.                       ΓöéField               ΓöéType        ΓöéLength      Γöé
  1105.                       Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1106.                       ΓöéParmLength          ΓöéUSHORT      ΓöéWORD        Γöé
  1107.                       Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1108.                       ΓöéBIOSFlags           ΓöéUSHORT      ΓöéWORD        Γöé
  1109.                       Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1110.                       ΓöéBIOSVersion         ΓöéUSHORT      ΓöéWORD        Γöé
  1111.                       Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1112.                       ΓöéSubsysVersion       ΓöéUSHORT      ΓöéWORD        Γöé
  1113.                       ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1114.  
  1115.         -  Remarks 
  1116.  
  1117.            None. 
  1118.  
  1119.  Refer to Category OCh, Function 62h, "Query Power Information" in the the OS/2 
  1120.  Physical Device Driver Reference for more information. 
  1121.  
  1122.  
  1123. ΓòÉΓòÉΓòÉ 4.3.2.2. IDC Error Codes ΓòÉΓòÉΓòÉ
  1124.  
  1125. In addition to the error codes listed under the IOCtl return errors (see Power 
  1126. Management IOCtl Interfaces), the following error codes pertain to IDC 
  1127. functions: 
  1128.  
  1129. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1130. ΓöéDecimal Value  ΓöéName (Hex Value) and Description             Γöé
  1131. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1132. Γöé128            ΓöéPowerIDC_InvalidFunction (0080h). IDC        Γöé
  1133. Γöé               Γöéfunction code out of range.                  Γöé
  1134. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1135. Γöé129            ΓöéPowerIDC_InvalidHandle (0081h). IDC handle   Γöé
  1136. Γöé               Γöéinvalid.                                     Γöé
  1137. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1138. Γöé130            ΓöéPowerIDC_TooManyClients (0082h). Maximum     Γöé
  1139. Γöé               Γöénumber of IDC clients exceeded.              Γöé
  1140. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1141. Γöé131            ΓöéPowerIDC_Busy (0083h). The request cannot be Γöé
  1142. Γöé               Γöéserviced at this time due to pending activityΓöé
  1143. Γöé               Γöéthat must be completed. The caller must      Γöé
  1144. Γöé               Γöédetermine whether to wait and reissue the    Γöé
  1145. Γöé               Γöérequest, proceed anyway, or end the activity.Γöé
  1146. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1147.  
  1148.  
  1149. ΓòÉΓòÉΓòÉ 4.3.3. Power Management IOCtl Interfaces ΓòÉΓòÉΓòÉ
  1150.  
  1151. The OS/2 operating system contains an interface layer between the low-level 
  1152. subsystems and the user interface environment. A typical mechanism for bridging 
  1153. these layers when device drivers are involved is the generic IOCtl interface. 
  1154. For the OS/2 Power Management Services Layer, the generic IOCtl category value 
  1155. of OCh (12) is used for this interface. The function codes supported are 
  1156. defined with the following common descriptions: 
  1157.  
  1158.    o  Set/Send functions = 0100xxxxB 
  1159.    o  Get/Query functions = 0110xxxxB 
  1160.  
  1161.  The generic IOCtl interfaces and how they are mapped to the Advanced Power 
  1162.  Management BIOS Interfaces are defined in the following table: 
  1163.  
  1164.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1165.   ΓöéAdvanced Power Management 1.0 ΓöéOS/2 Power Management IOCtls  Γöé
  1166.   ΓöéBIOS Functions                Γöé                              Γöé
  1167.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1168.   ΓöéInstallation Check (00h)      ΓöéQuery Power Info (Function    Γöé
  1169.   Γöé                              Γöé62h)***                       Γöé
  1170.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1171.   ΓöéInterface Connect (01h)       ΓöéN/A                           Γöé
  1172.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1173.   ΓöéProtect-Mode Connect 16-Bit   ΓöéN/A                           Γöé
  1174.   Γöé(02h)                         Γöé                              Γöé
  1175.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1176.   ΓöéProtect-Mode Connect 32-Bit   ΓöéN/A                           Γöé
  1177.   Γöé(03h)                         Γöé                              Γöé
  1178.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1179.   ΓöéInterface Disconnect (04h)    ΓöéN/A                           Γöé
  1180.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1181.   ΓöéCPU Idle (05h)                ΓöéN/A                           Γöé
  1182.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1183.   ΓöéCPU Busy (06h)                ΓöéN/A                           Γöé
  1184.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1185.   ΓöéSet Power State (07h)         ΓöéSend Power Event (Function    Γöé
  1186.   Γöé                              Γöé40h)                          Γöé
  1187.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1188.   ΓöéEnable/Disable Pwr Mgt Fcns   ΓöéSend Power Event (Function    Γöé
  1189.   Γöé(08h)                         Γöé40h)                          Γöé
  1190.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1191.   ΓöéRestore BIOS Defaults (09h)   ΓöéSend Power Event (Function    Γöé
  1192.   Γöé                              Γöé40h)                          Γöé
  1193.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1194.   ΓöéGet Power Status (0Ah)        ΓöéQuery Power Status (Function  Γöé
  1195.   Γöé                              Γöé60h)                          Γöé
  1196.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1197.   ΓöéGet Pwr Mgt Event (0Bh)       ΓöéQuery Power Event (Function   Γöé
  1198.   Γöé                              Γöé61h)                          Γöé
  1199.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1200.   ΓöéN/A                           ΓöéSet Power Event Resources     Γöé
  1201.   Γöé                              Γöé(Function 41h)                Γöé
  1202.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1203.  
  1204.  Note: 
  1205.  
  1206.  ***  Some of the information available in the Installation Check function is 
  1207.  made available in the Query Power Information IOCtl.  Refer to the OS/2 
  1208.  Physical Device Driver Reference for descriptions of the IOCtls. 
  1209.  
  1210.  
  1211. ΓòÉΓòÉΓòÉ 4.4. APM-Aware Device Drivers ΓòÉΓòÉΓòÉ
  1212.  
  1213. APM-aware device drivers provide the device-specific knowledge for managing 
  1214. power management events for their device.  Typically, device drivers understand 
  1215. what activities are pending in their device queues and know what effects a 
  1216. given power state has on their device.  An APM-aware device driver can choose 
  1217. among several schemes to manage the device.  The following are some of the most 
  1218. common device management schemes for access requests (read/write) when the 
  1219. device is powered-off: 
  1220.  
  1221.    o  Queue up the request 
  1222.  
  1223.    o  Fail the request 
  1224.  
  1225.    o  Change the current power state and process the request 
  1226.  
  1227.  An OS/2 APM-aware device driver must be written as an OS/2 physical device 
  1228.  driver (PDD).  The PDD can be defined as a level-3 device driver by setting 
  1229.  Bit 4 (value=1) in the Capabilities Bit Strip of the device driver header.  By 
  1230.  using the level-3 PDD support APM-aware device drivers can simplify CONFIG.SYS 
  1231.  ordering problems and utilize the INIT_COMPLETE (1Fh) command.  All OS/2 
  1232.  APM-aware device drivers must form an IDC interface link with the OS/2 APM 
  1233.  Subsystem in order to get notifications of power events. (See Power Management 
  1234.  IDC Functions for more details.) 
  1235.  
  1236.  There are numerous ways an APM-aware device driver can be optimized for size, 
  1237.  speed, maintenance, and so on, which also applies to the driver initialization 
  1238.  phase.  For instance, a common initialization scenario for APM-aware device 
  1239.  drivers is: 
  1240.  
  1241.    1. During the INIT command (00h) processing, the driver issues the 
  1242.       DevHelp_AttachDD call to determine if the APM System is present. 
  1243.  
  1244.         o  If present, the driver sets up to support power management 
  1245.            activities (such as locking power management code segments). 
  1246.  
  1247.         o  If not present, the driver may streamline itself (such as discarding 
  1248.            power management code/data areas) for non-power managed 
  1249.            environments. 
  1250.  
  1251.    2. During the INIT_COMPLETE command (1Fh) processing the driver issues a Far 
  1252.       Call to the APM Subsystem IDC entry point to register itself as an 
  1253.       APM-aware device driver. (See Power Management IDC Functions for more 
  1254.       details.) 
  1255.  
  1256.  Note:  The above scenario has a driver ordering dependency in the CONFIG.SYS 
  1257.  file such that the APM Subsystem (APM.SYS) must be loaded first. 
  1258.  
  1259.  An APM-aware device driver can have accompanying user interface requirements 
  1260.  for the device specific functions and features. The typical OEM APM-Aware 
  1261.  device driver scenario includes: 
  1262.  
  1263.    o  The APM-aware device driver, which exports user-defined generic IOCtls 
  1264.       for GUI/application level interactions and utilizes the APM Subsystem IDC 
  1265.       interface for power event interactions. 
  1266.  
  1267.    o  A Dynamic Link Library (DLL), which provides the Options page for the 
  1268.       Power object utilizing the user-defined IOCtls. 
  1269.  
  1270.    o  An installation program to copy the files into an OS/2 environment and 
  1271.       form the execution linkages (such as device driver, Power object DLL 
  1272.       subclassing, and so on). 
  1273.  
  1274.  Be sure to note that not all devices can be or should be managed by an 
  1275.  APM-aware device driver.  For example, device IDs not supported by the APM 1.0 
  1276.  Interface Specification are also not supported in OS/2 as being power 
  1277.  manageable.  In addition, some common devices (internally powered) are 
  1278.  completely managed by the vast majority of available APM BIOS implementations 
  1279.  so that APM-aware device drivers are not needed.  There are three key elements 
  1280.  that help define whether an APM-aware device driver should be developed for a 
  1281.  given device.  These three elements are: 
  1282.  
  1283.    o  APM device IDs, which are defined by the APM 1.0 Interface Specification. 
  1284.  
  1285.    o  Power supply, which is defined by the device environment and determines 
  1286.       if the APM BIOS is aware of the device existence. It also determines 
  1287.       whether the device draws current internally or externally. 
  1288.  
  1289.    o  Effects of power management states on the device, (power supply and 
  1290.       device capabilities). 
  1291.  
  1292.  
  1293. ΓòÉΓòÉΓòÉ 4.4.1. Power Management Devices ΓòÉΓòÉΓòÉ
  1294.  
  1295. The device types supported by the Advanced Power Management 1.0 Specification 
  1296. are: 
  1297.  
  1298.    o  System BIOS (0000h) 
  1299.       Device ID for Advanced Power Management BIOS 
  1300.  
  1301.    o  System BIOS-managed devices (0001h) 
  1302.       Generic device ID for all devices managed by Advanced Power Management 
  1303.       BIOS. 
  1304.  
  1305.    o  Display devices (01xxh) 
  1306.       Generic device ID for display devices 
  1307.  
  1308.    o  Secondary storage devices (02xxh) 
  1309.       Generic device ID for secondary storage devices 
  1310.  
  1311.    o  Parallel ports (03xxh) 
  1312.       Generic device ID for parallel ports 
  1313.  
  1314.    o  Serial ports (04xxh) 
  1315.       Generic device ID for serial ports 
  1316.  
  1317.  Note: 
  1318.  
  1319.    1. XX indicates the physical device number (0-based) 
  1320.  
  1321.    2. All other device-type values are reserved 
  1322.  
  1323.    3. Devices powered with external system unit power supplies are not 
  1324.       supported 
  1325.  
  1326.  
  1327. ΓòÉΓòÉΓòÉ 4.4.2. Internal/External Power ΓòÉΓòÉΓòÉ
  1328.  
  1329. An internally powered device is one that draws current from the system unit's 
  1330. power supply and has a direct line from the power supply that can be 
  1331. independently and uniquely controlled. An externally powered device is one that 
  1332. draws current from either a power supply outside the system unit's power supply 
  1333. or from an internal device that has no independent or unique control over the 
  1334. power line. For example, an asynchronous serial port (COM) is an internally 
  1335. powered device, whereas the mouse connected to a COM port is considered an 
  1336. externally powered device because the current supply is not unique to the 
  1337. mouse. 
  1338.  
  1339.  
  1340. ΓòÉΓòÉΓòÉ 4.4.3. Power Management States ΓòÉΓòÉΓòÉ
  1341.  
  1342. OS/2 device drivers should support, with appropriate device actions, the 
  1343. following set of power states supported by the Advanced Power Management 1.0 
  1344. Specification. 
  1345.  
  1346.    o  Ready (0000h) 
  1347.  
  1348.       This state indicates that the system or device is operating at full 
  1349.       power. Ready state responsibilities include: 
  1350.  
  1351.         -  Enter State 
  1352.  
  1353.            Actions to enter this state are more accurately defined by the prior 
  1354.            state involved in the state transition, particularly for externally 
  1355.            powered devices. 
  1356.  
  1357.         -  State Operations 
  1358.  
  1359.            Operates at maximum throughput for device performance. 
  1360.  
  1361.         -  Exit State 
  1362.  
  1363.            Actions to exit this state are more accurately defined by the next 
  1364.            state involved in the state transition, particularly for externally 
  1365.            powered devices. 
  1366.  
  1367.    o  Standby (0001h) 
  1368.  
  1369.       This state indicates that the system or device is operating at a partial 
  1370.       power level that permits energy conservation without noticeable delays in 
  1371.       restoring power for reestablished operation. 
  1372.  
  1373.       Standby state responsibilities include: 
  1374.  
  1375.         -  Enter State 
  1376.  
  1377.            The current device state can be saved in RAM for most devices (both 
  1378.            internal and external). 
  1379.  
  1380.         -  State Operations 
  1381.  
  1382.            The device is isolated from unnecessary commands and status 
  1383.            activities that would consume power by bringing the device out of 
  1384.            Standby.  Useful commands can be processed by changing the state 
  1385.            saved in RAM rather than programming the device immediately. 
  1386.  
  1387.         -  Exit State 
  1388.  
  1389.            If a RAM-saved state is available and the saved information is 
  1390.            modified during the Standby period, the saved values can be 
  1391.            activated as delayed commands. As a rule, internally powered devices 
  1392.            need not have additional support for this state. However, externally 
  1393.            powered devices (for example, those that draw power from a port) 
  1394.            must have device-state Save and Restore support. 
  1395.  
  1396.            Note:  There is no explicit Resume notification for the Standby 
  1397.                   state. The implicit Standby Resume is based on the next time 
  1398.                   the associated code is invoked. 
  1399.  
  1400.    o  Suspend (0002h) 
  1401.  
  1402.       This state indicates that the system or device is operating at a partial 
  1403.       power level that permits substantial energy conservation with accepted 
  1404.       noticeable delays in restoring power for reestablished operation. 
  1405.  
  1406.       The Advanced Power Management 1.0 BIOS Interface Specification defines 
  1407.       the Suspend power state as system-wide and does not currently support it 
  1408.       as device-specific. The OS/2 architecture supports both system and device 
  1409.       levels of usage as a desired deviation from the public standard. Suspend 
  1410.       state responsibilities include: 
  1411.  
  1412.         -  Enter State 
  1413.  
  1414.            All externally powered devices must have their device-state 
  1415.            information saved in a RAM data area. Similarly, all internally 
  1416.            powered devices must have their device-state information saved when 
  1417.            the Suspend is on a device level rather than on a system/BIOS level. 
  1418.            Because no processing is permitted in the System Suspended state, 
  1419.            internally powered devices can be saved by the Advanced Power 
  1420.            Management BIOS. 
  1421.  
  1422.         -  State Operations 
  1423.  
  1424.            Because processing is not performed during this state, there are no 
  1425.            in-state operation requirements for system/BIOS requests. However, 
  1426.            for a Device Suspend (versus a system/BIOS Suspend), the device 
  1427.            driver must provide the isolation layer between the device and the 
  1428.            applications. 
  1429.  
  1430.         -  Exit State 
  1431.  
  1432.            All externally powered devices that had their former state 
  1433.            information saved are reconfigured to bring them back to the 
  1434.            pre-Suspend operating mode. Internally powered devices are also 
  1435.            brought back to the pre-Suspend operating mode when a device-level 
  1436.            Suspend exits. 
  1437.  
  1438.    o  Off (0003H) 
  1439.  
  1440.       This state indicates that the system or device is not operating or 
  1441.       receiving any amount of power. OFF state responsibilities include: 
  1442.  
  1443.         -  Enter State 
  1444.  
  1445.            Actions to enter this state include complete device shutdown and 
  1446.            disconnection from application environments. Because the device is 
  1447.            not recoverable when this state is entered, all parameters used for 
  1448.            reconnection must be saved to disk if needed and applicable. 
  1449.  
  1450.         -  State Operations 
  1451.  
  1452.            The device is now completely unavailable, and there is no 
  1453.            operational activity. 
  1454.  
  1455.         -  Exit State 
  1456.  
  1457.            Actions to exit this state are currently defined only as a restart 
  1458.            of the entire system environment (both hardware and software). 
  1459.  
  1460.  All other power state values are reserved. 
  1461.  
  1462.  
  1463. ΓòÉΓòÉΓòÉ 4.5. APM BIOS ΓòÉΓòÉΓòÉ
  1464.  
  1465. The APM BIOS is the single most important piece of the OS/2 Power Management 
  1466. Architecture because all higher layers of software components are dependent 
  1467. upon its presence and function. The APM BIOS interfaces are significant because 
  1468. they define basic parameters values utilized in the higher software layers as 
  1469. well as the ability for the APM Subsystem to locate and connect to the APM BIOS 
  1470. support.  There are two basic parameters (Power Management Device IDs and Power 
  1471. Management States) defined by the APM BIOS interfaces which are utilized within 
  1472. the APM Subsystem IDC and IOCtl interfaces. The details for both the Power 
  1473. Management Device IDs and Power Management States are defined in APM-Aware 
  1474. Device Drivers. 
  1475.  
  1476. The OS/2 Power Management Architecture allows the traditional APM ROM BIOS 
  1477. support to be built as an OS/2 physical device driver (PDD). This construction 
  1478. facilitates a field upgrade capability for computer manufacturers which may 
  1479. have the desire to supplement existing support or even the ability to add APM 
  1480. BIOS to systems which were not built with it initially. Details for the APM 
  1481. Subsystem interactions and dependencies on these two APM BIOS implementation 
  1482. options are defined later in this document. 
  1483.  
  1484. The following table defines whether or not the Industry Standard APM BIOS 1.0 
  1485. Interface functions are used or required by the OS/2 APM subsystem. 
  1486.  
  1487. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1488. ΓöéAPM 1.0 BIOS Functions        ΓöéRequired for OS/2             Γöé
  1489. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1490. ΓöéInstallation Check (00h)      ΓöéYes                           Γöé
  1491. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1492. ΓöéInterface Connect (01h)       ΓöéNo                            Γöé
  1493. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1494. ΓöéProtect-Mode Connect 16-Bit   ΓöéYes**                         Γöé
  1495. Γöé(02h)                         Γöé                              Γöé
  1496. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1497. ΓöéProtect-Mode Connect 32-Bit   ΓöéYes**                         Γöé
  1498. Γöé(03h)                         Γöé                              Γöé
  1499. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1500. ΓöéInterface Disconnect (04h)    ΓöéNo                            Γöé
  1501. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1502. ΓöéCPU Idle (05h)                ΓöéYes                           Γöé
  1503. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1504. ΓöéCPU Busy (06h)                ΓöéYes                           Γöé
  1505. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1506. ΓöéSet Power State (07h)         ΓöéYes                           Γöé
  1507. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1508. ΓöéEnable/Disable Pwr Mgt Fcns   ΓöéYes                           Γöé
  1509. Γöé(08h)                         Γöé                              Γöé
  1510. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1511. ΓöéRestore BIOS Defaults (09h)   ΓöéYes                           Γöé
  1512. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1513. ΓöéGet Power Status (0Ah)        ΓöéYes                           Γöé
  1514. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1515. ΓöéGet Pwr Mgt Event (0Bh)       ΓöéYes                           Γöé
  1516. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1517.  
  1518. Note:  ** Only one of these functions is required per BIOS implementation. 
  1519.  
  1520.  
  1521. ΓòÉΓòÉΓòÉ 4.5.1. ROM BIOS ΓòÉΓòÉΓòÉ
  1522.  
  1523. During OS/2 system initialization processing, the APM ROM BIOS support is 
  1524. queried.  The BIOS query is performed using the INT 15h, APM Installation Check 
  1525. Function (AH=53h AL=00h).  The returned information is saved and made available 
  1526. to device drivers by way of the DevHelp_GetDOSVar function call (index 
  1527. parameter value = 16). The returned data is checked (if an APM BIOS is present) 
  1528. for the types of interface connections supported (real mode, protect-mode 16 
  1529. bit, or protect-mode 32 bit).  OS/2 will attempt to connect to the APM BIOS 
  1530. using the protect-mode 16-bit interface, if available.  If the protect-mode 
  1531. 16-bit interface is not available then OS/2 will try to connect to the APM BIOS 
  1532. using the protect-mode 32-bit interface.  If neither of the protect-mode 
  1533. options are available then OS/2 will end the connection processing. 
  1534.  
  1535. When the APM subsystem (APM.SYS PDD) loads (with either a /B option or a failed 
  1536. /D option) it issues the DevHelp_GetDOSVar (index = 16) request to determine if 
  1537. the APM ROM BIOS is available.  If so, APM.SYS will check which interface 
  1538. connection mechanism was established with the APM BIOS and begin using it to 
  1539. setup the OS/2 environment variables.  (See the OS/2 Required APM BIOS 
  1540. functions defined in the previous table. 
  1541.  
  1542.  
  1543. ΓòÉΓòÉΓòÉ 4.5.2. BIOS Device Driver ΓòÉΓòÉΓòÉ
  1544.  
  1545. When the APM Subsystem (APM.SYS PDD) loads (with either a /D option or a failed 
  1546. /B option) it attempts to locate and connect to a device driver implementation 
  1547. of APM BIOS.  This connection is performed by issuing a DevHelp_AttachDD 
  1548. function call specifying a device name of "APMBIOS$".  A successful function 
  1549. return provides APM.SYS with the protect-mode 16-bit IDC interface, which 
  1550. APM.SYS will treat as the standard APM BIOS protect-mode 16-bit connected 
  1551. interface.  (See the OS/2 Required APM BIOS Functions defined in APM BIOS.) An 
  1552. APM BIOS Device Driver must be an OS/2 physical device driver (PDD) with a 
  1553. device name of "APMBIOS$" defined in the Device Driver Header. 
  1554.  
  1555. There are some differences between the APM BIOS Device Driver implementation 
  1556. and the APM ROM BIOS implementation for supported APM BIOS interfaces. These 
  1557. differences are: 
  1558.  
  1559.    o  Protect-mode 16-bit interface is the only mode supported. 
  1560.  
  1561.    o  No protect-mode 16-bit connection request needed.  It is the default 
  1562.       interface mode as opposed to the real mode default of ROM BIOS 
  1563.       implementations. 
  1564.  
  1565.    o  The Installation Check function will be issued in protect-mode 16-bit to 
  1566.       determine BIOS driver capabilities.  (As opposed to the real-mode 
  1567.       definition for ROM BIOS implementations.) 
  1568.  
  1569.  All other calling conventions, register usage, and parameter definitions are 
  1570.  preserved as defined by the APM 1.0 Interface Specification.  The APM BIOS 
  1571.  device driver interfaces are based upon the BIOS conventions rather than OS/2 
  1572.  IDC conventions.  For instance, the APM BIOS device driver must set up its own 
  1573.  DS register value when invoked rather than assuming it is done by the caller. 
  1574.  All register values, except those identified as having return values, must be 
  1575.  preserved across function request as is normal practice with BIOS requests. 
  1576.  
  1577.  It is quite probable that APM BIOS extensions implemented as device drivers 
  1578.  will have accompanying user interface requirements for the added functions and 
  1579.  features.  The typical OEM APM BIOS Extension scenario includes: 
  1580.  
  1581.    o  The APM BIOS device driver, which exports user-defined generic IOCtls for 
  1582.       GUI/application level interactions and emulates the APM 1.0 BIOS 
  1583.       interface (by way of IDC) for the APM subsystem interactions. 
  1584.  
  1585.    o  A dynamic link library (DLL), which provides the Options page for the 
  1586.       Power object utilizing the user-defined IOCtls. 
  1587.  
  1588.    o  An installation program to copy the pieces into an OS/2 environment and 
  1589.       form the execution linkages (such as device driver, Power object DLL 
  1590.       subclassing, and so on). 
  1591.  
  1592.  
  1593. ΓòÉΓòÉΓòÉ 5. Asynchronous (RS232-C) Communications Device Driver ΓòÉΓòÉΓòÉ
  1594.  
  1595. The Asynchronous Communications (ASYNC) device driver enables OS/2 applications 
  1596. to utilize the Serial Communications (RS232-C) device hardware. The physical 
  1597. device driver allows an application program in OS/2 session to support duplex 
  1598. communications while the device driver: 
  1599.  
  1600.    o  Services the RS232-C port in an interrupt-driven manner 
  1601.    o  Provides transmit and receive queues 
  1602.    o  Provides different automatic control modes for the modem control signals 
  1603.    o  Provides logical data stream flow control (XON/XOFF) for transmit and 
  1604.       receive operations 
  1605.  
  1606.  The user will normally want to use the physical ASYNC device driver either in 
  1607.  conjunction with the spooler (for serial printers only) or with an application 
  1608.  program that uses the RS232-enabling capabilities of the physical ASYNC device 
  1609.  driver coupled with a serial device attached to the system. 
  1610.  
  1611.  The user installs the physical ASYNC device driver by adding a DEVICE= 
  1612.  statement to the CONFIG.SYS file. 
  1613.  
  1614.  
  1615. ΓòÉΓòÉΓòÉ 5.1. Hardware Support ΓòÉΓòÉΓòÉ
  1616.  
  1617. The RS232-C ASYNC communications device driver supports any personal computer 
  1618. system based on an 80386SX (or higher) microprocessor. 
  1619.  
  1620.  
  1621. ΓòÉΓòÉΓòÉ 5.1.1. IBM PS/2 Micro Channel Adapter Support ΓòÉΓòÉΓòÉ
  1622.  
  1623. The physical device driver supports a maximum of four ASYNC ports on a maximum 
  1624. of two different interrupt levels. The interrupt levels must have ABIOS 
  1625. support, with one unit per Logical ID (LID) for the ASYNC Device ID. The only 
  1626. ASYNC devices supported on IBM PS/2 and the Extended Industry Standard 
  1627. Architecture (EISA) machines are COM1, COM2, COM3, and COM4. These devices 
  1628. correspond to the first four LIDs in the ABIOS common data area that have the 
  1629. architected ASYNC Device ID. These devices also correspond to the first four 
  1630. ASYNC addresses in the ROM BIOS 40: data area. 
  1631.  
  1632. If a device has capabilities other than ASYNC that cannot be utilized 
  1633. independently of the ASYNC capabilities (for example, as in the Advanced BIOS 
  1634. separate LID architecture), and if Advanced BIOS assigns the device the ASYNC 
  1635. Device ID, then that device can be used only for ASYNC in that power-on 
  1636. session. 
  1637.  
  1638. If the device is assigned the ASYNC Device ID, and it has additional 
  1639. capabilities beyond supporting the RS232-C port (for example, a built-in 
  1640. modem), the physical device driver does not recognize those additional 
  1641. capabilities (and potential limitations). Also, the physical device driver does 
  1642. not inform any application program of those additional capabilities or 
  1643. limitations. In addition, it does not limit the control of the RS232-C 
  1644. interface or the device to only those modes that are acceptable to the extended 
  1645. hardware capabilities of that RS232-C port. 
  1646.  
  1647. If the device is not assigned the ASYNC Device ID, it is not supported by this 
  1648. physical device driver. If an ASYNC device is not supported by the OS/2 
  1649. operating system, but is recognized by Advanced BIOS as an ASYNC Device ID, the 
  1650. physical device driver can recognize and try to use that unsupported device, if 
  1651. it is COM1, COM2, COM3, or COM4. 
  1652.  
  1653.  
  1654. ΓòÉΓòÉΓòÉ 5.1.2. AT Bus Adapter Support ΓòÉΓòÉΓòÉ
  1655.  
  1656. The physical device driver for the IBM AT bus machines by default, supports two 
  1657. ASYNC ports, COM1 and COM2, each on separate levels. ASYNC ports with the 
  1658. following base I/O addresses are recognized by the physical device driver: 
  1659.  
  1660.    o  3F8H (must generate a level 4 interrupt) 
  1661.    o  2F8H (must generate a level 3 interrupt) 
  1662.  
  1663.  COM3 and COM4 are supported by the command line parameters for COM.SYS. COM3 
  1664.  and COM4 are supported through parameters on the DEVICE= statement in the 
  1665.  CONFIG.SYS file.  These parameters specify the desired base I/O address and 
  1666.  interrupt levels. The physical ASYNC device driver for the AT-bus machine 
  1667.  interfaces directly to the hardware and supports: 
  1668.  
  1669.    o  IBM AT-bus serial/parallel adapter based on the NS 16450 Universal 
  1670.       Asynchronous Receiver Transmitter (UART) device 
  1671.  
  1672.    o  Other compatible adapters based on the UART architecture (NS 16550, NS 
  1673.       16550A) 
  1674.  
  1675.  
  1676. ΓòÉΓòÉΓòÉ 5.1.3. Attachment Support ΓòÉΓòÉΓòÉ
  1677.  
  1678. The ASYNC physical device driver does not provide any support for devices 
  1679. attached to the RS232-C port. The physical device driver provides enabling 
  1680. support for the RS232-C interface itself. Application programs, subsystems, and 
  1681. systems programs provide the support needed to use devices attached to the 
  1682. RS232-C port. 
  1683.  
  1684. The ability to support a device can be determined by understanding the level of 
  1685. RS232-C interface enabling support the physical device driver provides, along 
  1686. with the characteristics of the attachment hardware in question and the 
  1687. required functions to be supported. 
  1688.  
  1689. The OS/2 operating system provides a mechanism where one or more additional 
  1690. drivers can be installed to support specific COM ports. This feature might be 
  1691. required for the following reasons: 
  1692.  
  1693.    o  To allow an application program to support a special device not 
  1694.       adequately supportable with this ASYNC device driver. 
  1695.  
  1696.    o  To allow additional COM ports (besides COM1-4 on IBM PS/2) to be 
  1697.       supported. 
  1698.  
  1699.    o  To enhance the level of device driver function for a given COM port. 
  1700.       (This might be required for certain subsystem support.) 
  1701.  
  1702.  
  1703. ΓòÉΓòÉΓòÉ 5.1.4. RS232-C Interface ΓòÉΓòÉΓòÉ
  1704.  
  1705. The ASYNC interface consists of separate read and transmit lines. There are two 
  1706. separate modem control signals whose output values can be controlled by the 
  1707. physical device driver: 
  1708.  
  1709.    o  Data Terminal Ready (DTR) 
  1710.    o  Request To Send (RTS) 
  1711.  
  1712.  There are four separate modem control signals whose input values are available 
  1713.  to the physical device driver: 
  1714.  
  1715.    o  Data Set Ready (DSR) 
  1716.    o  Clear To Send (CTS) 
  1717.    o  Data Carrier Detect (DCD), also known as Receive Line Signal Detect 
  1718.       (RLSD) 
  1719.    o  Ring Indicator (RI) 
  1720.  
  1721.  The receive and transmit data lines have the following hardware 
  1722.  characteristics: 
  1723.  
  1724.    o  Logical 1 (Marking). More negative than -3 Volts. This state could mean 
  1725.       no data. 
  1726.    o  Logical 0 (Spacing). More positive than +3 Volts. This state could mean 
  1727.       break condition. 
  1728.  
  1729.  The modem control signal lines have the following hardware characteristics: 
  1730.  
  1731.    o  Function ON, when more positive than +3 Volts. 
  1732.    o  Function OFF, when more negative than -3 Volts. 
  1733.  
  1734.  
  1735. ΓòÉΓòÉΓòÉ 5.1.5. Hardware Support for Extended Hardware Buffering ΓòÉΓòÉΓòÉ
  1736.  
  1737. This capability is a feature of the asynchronous communications port's serial 
  1738. controller device. Serial controllers that support this capability, such as the 
  1739. NS-16550A UART, are present in many IBM PS/2 systems and on a variety of IBM 
  1740. and non-IBM asynchronous communications adapters. 
  1741.  
  1742.  
  1743. ΓòÉΓòÉΓòÉ 5.1.6. INS 8250, INS 8250-B Considerations ΓòÉΓòÉΓòÉ
  1744.  
  1745. The following hardware defects cannot be compensated for in the physical device 
  1746. driver and can cause indeterminate function when used with the OS/2 physical 
  1747. ASYNC device driver: 
  1748.  
  1749.  Line Control Configurations 
  1750.       These devices are known to transmit bad data when configured for 5 data 
  1751.       bits and 1.5 stop bits. 
  1752.  
  1753.  Receive Character Overrun Errors 
  1754.       These devices are known to occasionally drop received characters without 
  1755.       posting the RECEIVE_OVERRUN error flag. Undetected data loss can result 
  1756.       from this hardware deficiency. Application error-correction routines can 
  1757.       be implemented to ensure accurate data transmission when these devices 
  1758.       are being used. 
  1759.  
  1760.  Spurious Characters at Power-On 
  1761.       These devices can transmit a single random character at power-on. The 
  1762.       connected device must not be expecting valid data to be received until 
  1763.       after the physical device driver initialization routine has been run. 
  1764.  
  1765.  
  1766. ΓòÉΓòÉΓòÉ 5.1.7. Supported Bit Rates on 16450 and Compatibles ΓòÉΓòÉΓòÉ
  1767.  
  1768. The NS 16450 and other compatible UART devices (including the 8250- and 
  1769. 16550-Series UARTs) incorporate a Programmable Baud Generator feature that is 
  1770. driven as a function of the following constants: 
  1771.  
  1772. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  1773.  
  1774.  
  1775.     CLOCK     = 1843200    ; crystal frequency
  1776.     CLOCK/16  = 115200     ; after divider
  1777.  
  1778. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  1779.  
  1780. Given these constants, the algorithm for determining which rates are supported 
  1781. is explained in the following examples: 
  1782.  
  1783.    o  If 900 bps is specified, the bit rate is exactly 900 because it divides 
  1784.       evenly into 115200 (115200/900 = 128). Bit rate, returned by IOCtl 
  1785.       ASYNC_GETBAUDRATE, is 900. 
  1786.  
  1787.    o  If 901 bps is specified, the bit rate does not change, and the IOCtl 
  1788.       fails with an invalid parameter error because it cannot be supported 
  1789.       within .01% (115200/901 = 128, 115200/128 = 900, which gives a .1111% 
  1790.       error). 
  1791.  
  1792.    o  If 907 bps is specified, the bit rate is 907.0866 because it can be 
  1793.       supported within .01% (115200/907 = 127, 115200/127 = 907.0866, which 
  1794.       gives a .0095% error). Bit rate, returned by ASYNC_GETBAUDRATE, is 907. 
  1795.  
  1796.    o  If 110 bps is specified, the bit rate is 110.0287, even though the error 
  1797.       is over .01% (115200/110 = 1047, 115200/1047 = 110.0287, which gives a 
  1798.       .0260% error). Bit rate, returned by ASYNC_GETBAUDRATE, is 110. 
  1799.  
  1800.  Note:  Where division is performed and the quotient is not a whole integer, an 
  1801.         integer result is obtained by rounding off the fractional part of the 
  1802.         quotient. 
  1803.  
  1804.  
  1805. ΓòÉΓòÉΓòÉ 5.2. ASYNC (RS232-C) Device Driver Features ΓòÉΓòÉΓòÉ
  1806.  
  1807. The device driver supports the ASYNC interface in an interrupt-driven manner. 
  1808. This allows the multitasking capabilities of the OS/2 operating system to be 
  1809. supported while ASYNC data reception and transmission are taking place. 
  1810.  
  1811. Warning: With any supported hardware, the physical device driver cannot 
  1812. absolutely guarantee accurate function, as there is a dependency on the 
  1813. hardware being driven. It is known, for example, that INS 8250 and INS 8250-B 
  1814. UART devices exhibit a number of deviations from their hardware specifications. 
  1815. In some cases, these deviations have been compensated for in the physical 
  1816. device driver design. Some of these deviations, however, cannot be resolved in 
  1817. software. The user must be familiar with the limitations and restrictions 
  1818. associated with such hardware. 
  1819.  
  1820. When data is given to the transmit hardware, it has not yet been physically 
  1821. transmitted (at the RS232 interface). The data is considered completely 
  1822. transmitted by the transmit hardware at the physical RS232 interface when the 
  1823. transmit shift register of the UART is empty. The IOCtl, ASYNC_GETLINESTATUS, 
  1824. which can be found in the OS/2 Physical Device Driver Reference, can be used to 
  1825. determine this information. 
  1826.  
  1827. The device driver transmit queue is a memory buffer between the operating 
  1828. system and the transmit hardware. The device driver receive queue is a memory 
  1829. buffer between the operating system and the receive hardware. Both are 
  1830. considered to be owned by the physical device driver because the physical 
  1831. device driver controls the data movement in and out of the transmit and receive 
  1832. queues. Algorithms for this data movement can change between releases of the 
  1833. physical device driver. Changes in the ASYNC hardware can cause changes in the 
  1834. data movement algorithms and external interfaces. 
  1835.  
  1836. Data that applications send (made available by Write requests) is placed in the 
  1837. physical device driver transmit queue. When an interrupt occurs to tell the 
  1838. physical device driver that the hardware is ready for more data, the driver 
  1839. gives the transmit hardware more data from the transmit queue. 
  1840.  
  1841. When an interrupt occurs to tell the physical device driver that the hardware 
  1842. has received data, that data is placed in the physical device driver receive 
  1843. queue. When the physical device driver gets a Read request (READ request 
  1844. packet) from the application, it fills the Read request from the receive queue. 
  1845.  
  1846. At high bit rates, such as 19200 bits-per-second, a serial device supporting 
  1847. full-duplex asynchronous I/O can generate an interrupt every 260 microseconds 
  1848. (at 10 bits-per-character and one interrupt-per-character transmitted and 
  1849. received). This leads to excessive interrupt-time overhead in the multitasking, 
  1850. interrupt-driven, device driver. 
  1851.  
  1852. To address this problem, serial devices with Extended Hardware Buffering 
  1853. capabilities (FIFO or First-In-First-Out buffers) have been developed. However, 
  1854. many serially-attached devices that support the RS232-C interface, have been 
  1855. designed to operate with specific protocols that assume the system processes 
  1856. all data I/O one character at a time. The ASYNC physical device driver employs 
  1857. a software mechanism that automatically controls parameters to utilize the 
  1858. Extended Hardware Buffering capability, while compatibly supporting devices 
  1859. that use existing ASYNC device driver protocols. 
  1860.  
  1861. The Automatic Protocol Override (system default) mode for Extended Hardware 
  1862. Buffering support partially utilizes only these performance advantages, while 
  1863. remaining fully compatible with the behavior of existing ASYNC device driver 
  1864. protocols (for example, Input Sensitivity using DSR). Applications and 
  1865. subsystems can disable certain device driver default settings in order to fully 
  1866. use the Extended Hardware Buffering capabilities. This results in a significant 
  1867. reduction of serial device interrupt processing overhead, and greatly increases 
  1868. the aggregate bit rates that can be supported across multiple active COM ports. 
  1869.  
  1870. The size of the receive and transmit queues are available from the following 
  1871. IOCtls: 
  1872.  
  1873.    o  Query Number of Characters in Receive Queue (ASYNC_GETINQUECOUNT) 
  1874.    o  Query Number of Characters in Transmit Queue (ASYNC_GETOUTQUECOUNT) 
  1875.  
  1876.  The physical device driver services each communications port independently. 
  1877.  Requests issued to a given port have no effect on any other communications 
  1878.  ports that the physical device driver might be servicing. The physical device 
  1879.  driver processes READ and WRITE request packets independently for a given 
  1880.  port. An application can be written to support simultaneous reception and 
  1881.  transmission of data. In addition, the device driver can process an IOCtl 
  1882.  request simultaneously with outstanding Read and Write requests. 
  1883.  
  1884.  The physical device driver does not schedule the processing of IOCtl requests. 
  1885.  It processes the IOCtl request when received, regardless of what else it is 
  1886.  doing. This can cause unexpected results if, for instance, the bit rate is 
  1887.  modified while data reception or transmission is taking place. The application 
  1888.  should issue only one IOCtl request at a time. If it issues another IOCtl 
  1889.  request before the first IOCtl request is completed, the results are 
  1890.  UNDEFINED. 
  1891.  
  1892.  The device driver queues multiple READ and WRITE request packets independently 
  1893.  and always begins processing the READ request packets in the order they are 
  1894.  received. It also begins processing the WRITE request packets in the order 
  1895.  they are received. 
  1896.  
  1897.  Note:  The operating system does not guarantee that file system requests will 
  1898.         be delivered to a device driver in the order in which they are issued 
  1899.         by an application. This means that a request by one thread can get 
  1900.         blocked in the operating system, thus allowing a subsequent request by 
  1901.         a different thread for the same function (for example, DosWrite) to 
  1902.         pass through and arrive ahead of the first thread at the physical 
  1903.         device driver. This is true for synchronous operations performed by 
  1904.         multiple threads or asynchronous operations performed by the same 
  1905.         thread. 
  1906.  
  1907.  Because of thread-priority considerations and the system dynamics, the order 
  1908.  observed by the application of completing requests of the same type might not 
  1909.  be the order in which they were received by the device driver. The physical 
  1910.  device driver always keeps the data in the same order in which the READ and 
  1911.  WRITE request packets (of the same type) were received. There is no ordering 
  1912.  or timing between different types of request packets. 
  1913.  
  1914.  The concept of a First Level Open is described in the section on States of the 
  1915.  ASYNC Device Driver. A First Level Open occurs when the device driver receives 
  1916.  an OPEN request packet for the port and the port is not already open (from a 
  1917.  previous open without a matching close). A CLOSE request packet causing the 
  1918.  physical device driver to process the next OPEN request packet as a First 
  1919.  Level Open is called a Last Level Close. Because the requests that an 
  1920.  application issues sometimes get out of order before they reach the device 
  1921.  driver, an application cannot consider a close a Last Level Close until the 
  1922.  CLOSE completes. If the application issues an Open request to the COM port 
  1923.  before a previously issued Close request is completed, then the results are 
  1924.  UNDEFINED. 
  1925.  
  1926.  A Flush request can be completed before all the appropriate request packets 
  1927.  (which have been queued by the device driver) have been flushed. The 
  1928.  appropriate request packets eventually are flushed and return to the caller, 
  1929.  based on their priority and the system dynamics. Once the Flush request has 
  1930.  been processed, the appropriate request packets do not cause data to be 
  1931.  incorrectly transmitted (or received data to be moved). 
  1932.  
  1933.  The device driver supports different timeout processing characteristics and 
  1934.  timeout settings for the Read and Write requests. Only the physical device 
  1935.  driver is informed of when a given character is being transmitted or received 
  1936.  at the hardware interface. Therefore, an application cannot expect to provide 
  1937.  real-time flow control of data (in the middle of data transmission or 
  1938.  reception) based on logical characters (XON/XOFF), or based on the state of 
  1939.  the modem control signals by manually: 
  1940.  
  1941.    o  Controlling or monitoring those modem control signals 
  1942.    o  Monitoring the queue status 
  1943.    o  Monitoring data moving across the link 
  1944.  
  1945.  Alternatively, the physical device driver provides optional modes of operation 
  1946.  to control the data flow through the RS232-C port automatically. OS/2 
  1947.  applications use IOCtls to select which protocols are to be made active. 
  1948.  
  1949.  
  1950. ΓòÉΓòÉΓòÉ 5.2.1. Output Modem Control Signals ΓòÉΓòÉΓòÉ
  1951.  
  1952. In addition to allowing the application to directly control RTS and DTR, the 
  1953. physical device driver has different automatic control modes to control the 
  1954. value of the output modem control signals: 
  1955.  
  1956.    o  Open and Close processing of DTR and RTS 
  1957.    o  Disable/Enable DTR and RTS 
  1958.    o  RTS toggling on transmit 
  1959.    o  Input handshaking using DTR and RTS 
  1960.  
  1961.  These control modes are described in the section on States of the ASYNC Device 
  1962.  Driver, and in the IOCtls description. 
  1963.  
  1964.  Note:  The level of support provided by this device driver requires that DTR 
  1965.         and RTS are turned on at least once, even if this puts the physical 
  1966.         device driver in a mode where they will never be turned on again. 
  1967.  
  1968.  
  1969. ΓòÉΓòÉΓòÉ 5.2.2. Input Modem Control Signals ΓòÉΓòÉΓòÉ
  1970.  
  1971. Besides allowing the application to read directly the current state of DSR, 
  1972. CTS, DCD, and RI, the physical device driver has automatic modes that cause it 
  1973. to respond to the value that some input modem control signals can have: 
  1974.  
  1975.    o  Output handshaking using CTS, DSR, DCD 
  1976.    o  Input sensitivity using DSR 
  1977.  
  1978.  These control modes are described in the section on States of the ASYNC Device 
  1979.  Driver and in the IOCtls description. Additional information on the state of 
  1980.  the input modem control signals is available by using the IOCtl 
  1981.  ASYNC_GETCOMMEVENT. 
  1982.  
  1983.  
  1984. ΓòÉΓòÉΓòÉ 5.2.3. Logical Flow Control (XON/XOFF) ΓòÉΓòÉΓòÉ
  1985.  
  1986. The application can attempt to manually control the flow of data by using the 
  1987. following IOCtls: 
  1988.  
  1989.    o  Transmit Immediate (ASYNC_TRANSMITIMM) 
  1990.    o  Stop Transmit Behave as if XOFF Received (ASYNC_STOPTRANSMIT) 
  1991.    o  Start Transmit Behave as if XON Received (ASYNC_STARTTRANSMIT) 
  1992.  
  1993.  The physical device driver automatically controls the flow of transmitted data 
  1994.  based upon the reception of XON/XOFF characters. This is referred to as 
  1995.  Automatic Transmit Flow Control (XON/XOFF). The physical device driver also 
  1996.  attempts to control the flow of data that is received by automatically 
  1997.  transmitting XON/XOFF characters to the system it is communicating with, based 
  1998.  on the amount of space left in the receive queue. This is referred to as 
  1999.  Automatic Receive Flow Control (XON/XOFF). 
  2000.  
  2001.  
  2002. ΓòÉΓòÉΓòÉ 5.2.4. Support for Extended Hardware Buffering ΓòÉΓòÉΓòÉ
  2003.  
  2004. Another significant feature of this device driver is its exploitation of the 
  2005. Extended Hardware Buffering capabilities of the serial communications devices 
  2006. in many IBM systems and option adapters. Extended Hardware Buffering refers to 
  2007. the ability of the serial device servicing a COM port to buffer in hardware 
  2008. several characters, and to release them all at one time on the occurrence of a 
  2009. single transmit or receive hardware interrupt. This capability significantly 
  2010. reduces the interrupt-driven I/O processing overhead required to service 
  2011. Transmit and Receive requests on a given COM port. On the devices that support 
  2012. the Extended Hardware Buffering capability, this significantly improves COM I/O 
  2013. throughput and improves data integrity for higher data-transfer rates. 
  2014.  
  2015. The Extended Hardware Buffering capabilities are automatically controlled under 
  2016. the default modes of the physical ASYNC device driver. Automatic Protocol 
  2017. Override is a feature of the OS/2 ASYNC device driver that automatically 
  2018. controls parameters relating to Extended Hardware Buffering. Systems and 
  2019. Adapters that incorporate the FIFO-mode hardware feature in a manner fully 
  2020. compatible with the NS-16550A UART are automatically enabled to run in 
  2021. Automatic Protocol Override mode. 
  2022.  
  2023.  
  2024. ΓòÉΓòÉΓòÉ 5.2.5. Line Characteristics ΓòÉΓòÉΓòÉ
  2025.  
  2026. IOCtls can be used to control and read the bit rate, number of stop-bits per 
  2027. character, number of data bits per character, and the parity characteristics of 
  2028. the line. See States of the ASYNC Device Driver. 
  2029.  
  2030.  
  2031. ΓòÉΓòÉΓòÉ 5.2.6. Break and Error Processing ΓòÉΓòÉΓòÉ
  2032.  
  2033. The device driver can be commanded to transmit a Break with an IOCtl 
  2034. (ASYNC_SETBREAKON and ASYNC_SETBREAKOFF). An application can detect where an 
  2035. error or break occurred in the input data stream by using Break Replacement 
  2036. Character Processing and Error Replacement Character Processing. This requires 
  2037. that certain binary byte combinations be reserved for this purpose. 
  2038.  
  2039.  
  2040. ΓòÉΓòÉΓòÉ 5.2.7. State of the COM Port ΓòÉΓòÉΓòÉ
  2041.  
  2042. The following IOCtls can be used to determine the state of the COM port or if a 
  2043. given event happened. However, the exact timing relationship between this 
  2044. information and the specific data being received or transmitted at the time of 
  2045. the event is not available. 
  2046.  
  2047.    o  Query COM Event Information (ASYNC_GETCOMMEVENT) 
  2048.    o  Query COM Status (ASYNC_GETCOMMSTATUS) 
  2049.    o  Query COM Error (ASYNC_GETCOMMERROR) 
  2050.  
  2051.  
  2052. ΓòÉΓòÉΓòÉ 5.2.8. Event Notification ΓòÉΓòÉΓòÉ
  2053.  
  2054. The device driver does not provide any capabilities of event notification. For 
  2055. example, the only way for an application to know that RI changed state or that 
  2056. a Break condition occurred is to poll that status with the IOCtl 
  2057. ASYNC_GETCOMMEVENT. This should not be a problem for those applications that 
  2058. can use the automatic control modes of the physical device driver during the 
  2059. course of a communications dialog (for time-critical control functions). 
  2060. Polling could be adequate for non-time-critical event monitoring. 
  2061.  
  2062.  
  2063. ΓòÉΓòÉΓòÉ 5.3. Error Alert Generation ΓòÉΓòÉΓòÉ
  2064.  
  2065. The ASYNC physical device driver supports SNA Generic Alerts by generating 
  2066. Error Alerts, as defined under the OS/2 Logging Facility. Alerts are generated 
  2067. by the ASYNC driver whenever the OS/2 Logging Facility is enabled by the user 
  2068. at system initialization time. 
  2069.  
  2070. Alerts may be generated only while the COM port is open and is processing a 
  2071. Write request (transmitting data). Write Timeout mode must be normal. (If 
  2072. Infinite Timeout mode is enabled, timeouts do not occur.) Error Alerts can be 
  2073. generated only when a Write Timeout occurs while waiting for: 
  2074.  
  2075.    o  CTS to be asserted, when Transmit is disabled because CTS is inactive. 
  2076.       The Output Handshaking Using CTS mode must be enabled for this 
  2077.       alert-generating condition to occur. This mode is enabled by default in 
  2078.       the physical ASYNC device driver. 
  2079.  
  2080.    o  DSR to be asserted, when Transmit is disabled because DSR is inactive. 
  2081.       The Output Handshaking Using DSR mode must be enabled for this 
  2082.       alert-generating condition to occur. This mode is enabled by default in 
  2083.       the physical ASYNC device driver. 
  2084.  
  2085.    o  DCD to be asserted, when Transmit is disabled because DCD is inactive. 
  2086.       The Output Handshaking Using DCD mode must be enabled for this 
  2087.       alert-generating condition to occur. This mode must be enabled by an 
  2088.       application. It is not enabled by default in the ASYNC device driver. 
  2089.  
  2090.    o  An XON to be received, when Transmit is disabled because an XOFF is 
  2091.       received.  Automatic Transmit Flow Control mode must be enabled for this 
  2092.       alert-generating condition to occur.  This mode must be enabled by an 
  2093.       application.  It is not enabled by default in the ASYNC device driver. 
  2094.  
  2095.  Refer to the Set Device Control Block (DCB) Parameters Note on the IOCtl 
  2096.  ASYNC_SETDCBINFO which can be found in the OS/2 Physical Device Driver 
  2097.  Reference. 
  2098.  
  2099.  
  2100. ΓòÉΓòÉΓòÉ 5.4. States of the ASYNC Device Driver ΓòÉΓòÉΓòÉ
  2101.  
  2102. The different processing states of the physical ASYNC device driver, the ASYNC 
  2103. hardware, and the ASYNC control signals are listed below: 
  2104.  
  2105.    o  Automatic Receive Flow Control (XON/XOFF) 
  2106.    o  Automatic Transmit Flow Control (XON/XOFF) 
  2107.    o  Bit Rate 
  2108.    o  Break Replacement Character 
  2109.    o  Break Replacement Character Processing 
  2110.    o  COM Event WORD and COM Error WORD 
  2111.    o  Data Bits 
  2112.    o  DTR and RTS 
  2113.    o  DTR Control Mode 
  2114.    o  Error Replacement Character 
  2115.    o  Error Replacement Character Processing 
  2116.    o  Extended Hardware Buffering 
  2117.    o  Input Sensitivity Using DSR 
  2118.    o  Null Stripping 
  2119.    o  Output Handshaking Using CTS, DSR, DCD 
  2120.    o  Parity 
  2121.    o  RTS Control Mode 
  2122.    o  Read Timeout State 
  2123.    o  Read Timeout Value 
  2124.    o  Stop Bits 
  2125.    o  Transmit Immediate 
  2126.    o  Transmitting Break 
  2127.    o  Write Timeout State 
  2128.    o  Write Timeout Value 
  2129.    o  XON/XOFF Characters 
  2130.  
  2131.  Each of the above states are covered as follows: 
  2132.  
  2133.    o  A brief description. 
  2134.    o  The initial (default) value. 
  2135.    o  The effect on the physical device driver when the physical device driver 
  2136.       receives an OPEN request packet for the port and the port is not already 
  2137.       open (from a previous OPEN without a matching CLOSE). This is called a 
  2138.       First Level Open. If applicable, the way the state of the physical device 
  2139.       driver is affected by a CLOSE request packet. 
  2140.    o  How the MODE utility can be used to alter the state of this item or how 
  2141.       the MODE utility will alter the state of this item. 
  2142.    o  The effect on the physical device driver of the state of Extended 
  2143.       Hardware Buffering. In particular, special considerations relating to 
  2144.       Automatic Protocol Override are given where the protocol being described 
  2145.       is affected by this feature of the physical ASYNC device driver. 
  2146.  
  2147.  
  2148. ΓòÉΓòÉΓòÉ 5.4.1. Automatic Receive Flow Control (XON/XOFF) ΓòÉΓòÉΓòÉ
  2149.  
  2150. When the physical device driver is enabled for this mode of operation, it 
  2151. transmits an XOFF when its receive queue gets close to full, and an XON when 
  2152. its receive queue is about half full. 
  2153.  
  2154. The normal mode of Automatic Receive Flow Control causes the ASYNC device 
  2155. driver to stop transmitting all data after it sends an XOFF character until its 
  2156. receive queue lowers to about half full, when it sends the XON character. This 
  2157. behavior is suitable for most devices, but reduces transmit throughput 
  2158. significantly in Full-Duplex (Transmit and Receive) communications scenarios. 
  2159. By setting the Full-Duplex mode of Automatic Receive Flow Control, the physical 
  2160. ASYNC device driver continues to send application data after it sends the XOFF 
  2161. character. See IOCtl ASYNC_SENTDCBINFO which can be found in the OS/2 Physical 
  2162. Device Driver Reference. 
  2163.  
  2164.  Initial Value            Automatic Receive Flow Control is disabled. 
  2165.  
  2166.  First Level Open         There is no effect on whether the physical device 
  2167.                           driver is enabled or disabled for this mode of 
  2168.                           operation. The state of the physical device driver is 
  2169.                           reset to show that the last flow control character 
  2170.                           automatically transmitted was an XON, if it is 
  2171.                           enabled for this mode of operation. 
  2172.  
  2173.  Close Considerations     If the last character automatically transmitted by 
  2174.                           the physical device driver was an XOFF and a CLOSE 
  2175.                           request packet is received, the physical device 
  2176.                           driver automatically transmits an XON, if possible. 
  2177.                           After processing this close request, the port is not 
  2178.                           open any more from another open without a close. 
  2179.  
  2180.  Mode Utility             Always disables Automatic Receive Flow Control. 
  2181.  
  2182.  
  2183. ΓòÉΓòÉΓòÉ 5.4.2. Automatic Transmit Flow Control (XON/XOFF) ΓòÉΓòÉΓòÉ
  2184.  
  2185. When the physical device driver is enabled for this mode of operation, it stops 
  2186. sending data to the transmit hardware when an XOFF is received, and resumes 
  2187. sending data to the transmit hardware when an XON is received. 
  2188.  
  2189. If this mode is enabled, Error Alerts can be generated when the OS/2 Logging 
  2190. Facility is enabled. If an external device sends an XOFF, but does not send an 
  2191. XON, transmission of data is blocked because the device driver is waiting for 
  2192. the XON to be received. If the XON is not received before the Write Timeout 
  2193. period expires, an Error Alert is generated. 
  2194.  
  2195.  Initial Value            Automatic Transmit Flow Control is disabled. 
  2196.  
  2197.  First Level Open         There is no effect on whether the physical device 
  2198.                           driver is enabled or disabled for this mode of 
  2199.                           operation. The state of the physical device driver is 
  2200.                           reset to show that it has not received an XOFF, so it 
  2201.                           can transmit (due to automatic transmit flow 
  2202.                           control), if it is enabled for this mode of 
  2203.                           operation. 
  2204.  
  2205.  Mode Utility             User interface to enable/disable this mode of the 
  2206.                           physical device driver. 
  2207.  
  2208.  Automatic Override       When Automatic Transmit Flow Control is enabled, the 
  2209.                           physical device driver responds to receiving the XOFF 
  2210.                           within a single character time. That is, Automatic 
  2211.                           Protocol Override controls the Extended Hardware 
  2212.                           Buffering capability so that only one character is 
  2213.                           buffered for transmit at a time, and the device 
  2214.                           generates an interrupt for every character received 
  2215.                           (Receive Trigger Level is set to 1). 
  2216.  
  2217.  
  2218. ΓòÉΓòÉΓòÉ 5.4.3. Bit Rate ΓòÉΓòÉΓòÉ
  2219.  
  2220. The bit rate determines the hardware setting for the data transfer rate, 
  2221. specified in bits per second, and is the speed for which the hardware is 
  2222. configured. See IOCtls ASYNC_SETBAUDRATE and ASYNC_GETBAUDRATE, which can be 
  2223. found in the OS/2 Physical Device Driver Reference. 
  2224.  
  2225.  Initial Value            1200 bps 
  2226.  First Level Open         No effect 
  2227.  Mode Utility             User interface to change the bit rate 
  2228.  
  2229.  
  2230. ΓòÉΓòÉΓòÉ 5.4.4. Break Replacement Character ΓòÉΓòÉΓòÉ
  2231.  
  2232. The device driver uses this character value if Break Replacement Character 
  2233. Processing is enabled. See IOCtl ASYNC_SETDCBINFO, which can be found in the 
  2234. OS/2 Physical Device Driver Reference. 
  2235.  
  2236.  Initial Value            00h 
  2237.  First Level Open         Reset to 00h 
  2238.  Mode Utility             No effect 
  2239.  
  2240.  
  2241. ΓòÉΓòÉΓòÉ 5.4.5. Break Replacement Character Processing ΓòÉΓòÉΓòÉ
  2242.  
  2243. If Break Replacement Character Processing is enabled and the device driver 
  2244. detects a break condition, it places the break replacement character in the 
  2245. physical device driver receive queue. If Break Replacement Character Processing 
  2246. is disabled, the physical device driver does not place any character in the 
  2247. physical device driver receive queue when it detects a break condition. 
  2248.  
  2249.  Initial Value            Break replacement character processing is disabled. 
  2250.  First Level Open         Break replacement character processing is disabled. 
  2251.  Mode Utility             No effect. 
  2252.  
  2253.  
  2254. ΓòÉΓòÉΓòÉ 5.4.6. COM Event WORD and COM Error WORD ΓòÉΓòÉΓòÉ
  2255.  
  2256. These two WORDs have bits that show the status of the COM port. When an event 
  2257. occurs, the appropriate bits are turned on. The bits are cleared when the WORD 
  2258. is read with the appropriate IOCtl. See IOCtls ASYNC_GETCOMMEVENT and 
  2259. ASYNC_GETCOMMERROR, which can be found in the OS/2 Physical Device Driver 
  2260. Reference. 
  2261.  
  2262.  Initial Value            All defined bits are 0 
  2263.  First Level Open         All defined bits are 0 
  2264.  Mode Utility             Not applicable 
  2265.  
  2266.  
  2267. ΓòÉΓòÉΓòÉ 5.4.7. Data Bits ΓòÉΓòÉΓòÉ
  2268.  
  2269. This is the number of bits contained in each character transmitted or received 
  2270. by way of the communications hardware. See IOCtls ASYNC_SETLINECTRL and 
  2271. ASYNC_GETLINECTRL, which can be found in the OS/2 Physical Device Driver 
  2272. Reference. 
  2273.  
  2274.  Initial Value            7 data bits 
  2275.  First Level Open         No effect 
  2276.  Mode Utility             User interface to change the number of data bits 
  2277.  
  2278.  
  2279. ΓòÉΓòÉΓòÉ 5.4.8. DTR and RTS ΓòÉΓòÉΓòÉ
  2280.  
  2281. This is the value of the modem control signals Data Terminal Ready (DTR) and 
  2282. Request To Send (RTS) put out by the communications hardware. Each signal is 
  2283. controlled independently and can be either ON or OFF. See IOCtls 
  2284. ASYNC_SETMODEMCTRL and ASYNC_GETMODEMOUTPUT, which can be found in the OS/2 
  2285. Physical Device Driver Reference. 
  2286.  
  2287.  Initial Value            When the physical device driver starts the port 
  2288.                           during device driver initialization, their values are 
  2289.                           turned OFF. 
  2290.  
  2291.  First Level Open         The signals are normally turned ON, but there are 
  2292.                           many conditions that can cause the signals to be 
  2293.                           affected differently. See IOCtls ASYNC_SETMODEMCTRL 
  2294.                           and ASYNC_SETDCBINFO, which can be found in the OS/2 
  2295.                           Physical Device Driver Reference, for a complete 
  2296.                           explanation. 
  2297.  
  2298.  Close Considerations     A Close request packet causes DTR and RTS to be 
  2299.                           turned OFF after the transmit hardware has completely 
  2300.                           transmitted all the data sent by the physical device 
  2301.                           driver. After processing this Close request, the port 
  2302.                           is no longer open from another OPEN without a CLOSE. 
  2303.                           In addition, at least 10 additional character times 
  2304.                           must have elapsed (or one second, whichever is less). 
  2305.  
  2306.  Mode Utility             Not applicable for direct control. Indirect effects 
  2307.                           through altering processing modes of the physical 
  2308.                           device driver are possible. 
  2309.  
  2310.  
  2311. ΓòÉΓòÉΓòÉ 5.4.9. DTR Control Mode ΓòÉΓòÉΓòÉ
  2312.  
  2313. The control modes for DTR are: 
  2314.  
  2315.    o  Enable 
  2316.    o  Disable 
  2317.    o  Input Handshaking 
  2318.  
  2319.  The Enable and Disable control modes of DTR affect DTR processing during a 
  2320.  First Level Open. When these control modes are set through the 
  2321.  ASYNC_SETDCBINFO, the value of the DTR signal can be modified immediately by 
  2322.  the physical device driver. The action depends on the previous control mode of 
  2323.  DTR and the current value of the DTR modem control signal. If the control mode 
  2324.  of DTR is Input Handshaking, then the device driver controls the DTR signal, 
  2325.  depending on how full the receive queue is. The bits that control these states 
  2326.  of the device driver are in the device control block. 
  2327.  
  2328.  Initial Value            Enable 
  2329.  First Level Open         No effect 
  2330.  Mode Utility             User interface to change the DTR Control Mode of the 
  2331.                           physical device driver 
  2332.  
  2333.  
  2334. ΓòÉΓòÉΓòÉ 5.4.10. Error Replacement Character ΓòÉΓòÉΓòÉ
  2335.  
  2336. The character value that the physical device driver uses, if Error Replacement 
  2337. Character Processing is enabled. 
  2338.  
  2339.  Initial Value            00h 
  2340.  First Level Open         Reset to 00h 
  2341.  Mode Utility             No effect 
  2342.  
  2343.  
  2344. ΓòÉΓòÉΓòÉ 5.4.11. Error Replacement Character Processing ΓòÉΓòÉΓòÉ
  2345.  
  2346. The processing that the physical device driver performs when a received 
  2347. character has an error (parity, framing, overrun, or lack of receive queue 
  2348. space) is determined by whether Error Replacement Character Processing is 
  2349. enabled (active). 
  2350.  
  2351.  Initial Value            Error replacement character processing is disabled. 
  2352.  First Level Open         Error replacement character processing is disabled. 
  2353.  Mode Utility             No effect. 
  2354.  
  2355.  
  2356. ΓòÉΓòÉΓòÉ 5.4.12. Extended Hardware Buffering ΓòÉΓòÉΓòÉ
  2357.  
  2358. The extended hardware buffering (FIFO-mode) capabilities available in supported 
  2359. systems apply to the NS-16550A UART device and other fully compatible devices. 
  2360. These serial devices are installed on many IBM PS/2 system boards, and on 
  2361. various ASYNC communications adapter options. Refer to Hardware Support for 
  2362. Extended Hardware Buffering. 
  2363.  
  2364. On those systems that incorporate serial devices that fully and compatibly 
  2365. support Extended Hardware Buffering, the OS/2 ASYNC device driver provides 
  2366. three modes for exploiting this feature: 
  2367.  
  2368.    o  Enabled 
  2369.    o  Disabled 
  2370.    o  Automatic Protocol Override 
  2371.  
  2372.  The default is to enable Automatic Protocol Override on that COM port. 
  2373.  Automatic Protocol Override is an asynchronous device driver mode of operation 
  2374.  that automatically controls various parameters of Extended Hardware Buffering, 
  2375.  such as Receive Trigger Level and Transmit Buffer Load Count. 
  2376.  
  2377.  Automatic Protocol Override causes the Receive Trigger Level and Transmit 
  2378.  Buffer Load Count to be adjusted according to the device driver handshaking 
  2379.  protocols in effect. When Automatic Protocol Override mode is ON and the 
  2380.  handshaking protocols are set to their default settings, the physical device 
  2381.  driver partially exploits only the performance advantages of Extended Hardware 
  2382.  Buffering. The default handshaking protocols are: 
  2383.  
  2384.    o  Enabled for Input Sensitivity Using DSR 
  2385.    o  Enabled for Output Handshaking Using CTS and DSR 
  2386.    o  Disabled for Output Handshaking Using DCD 
  2387.    o  Disabled for Automatic Transmit Flow Control 
  2388.  
  2389.  If both Input Sensitivity Using DSR and Output Handshaking Using CTS and DSR 
  2390.  are disabled, the Automatic Protocol Override causes the asynchronous device 
  2391.  driver to automatically reset internal parameters (fully exploiting the 
  2392.  Extended Hardware Buffering capabilities to the maximum extent possible). 
  2393.  
  2394.  The physical device driver's initialization default is to set Extended 
  2395.  Hardware Buffering capabilities to the Automatic Protocol Override mode. An 
  2396.  application or subsystem can alternatively set Extended Hardware Buffering to 
  2397.  DISABLED, which causes the hardware to service transmit and receive interrupts 
  2398.  one character at a time. It can also set Extended Hardware Buffering to 
  2399.  ENABLED, which causes the physical device driver to set certain Extended 
  2400.  Hardware Buffering parameters to specified levels, so the serial device fully 
  2401.  exploits its Extended Hardware Buffering capabilities to the maximum extent 
  2402.  possible. 
  2403.  
  2404.  When Extended Hardware Buffering is set to ENABLED, the following serial 
  2405.  device hardware capabilities are exploited for maximum performance benefit and 
  2406.  increased receive data integrity: 
  2407.  
  2408.    o  By setting the Transmit Buffer Load Count to 16, up to 16 characters are 
  2409.       placed in the transmit hardware buffer (FIFO) during the processing of 
  2410.       one Transmit Holding Register Empty (THRE) interrupt. 
  2411.  
  2412.    o  A 16-character receive hardware buffer (FIFO) is available with the 
  2413.       Receive Trigger Level set to 1, 4, 8, or 14 characters. The Receive 
  2414.       Trigger Level determines when the receive hardware generates a Receive 
  2415.       Data Available hardware interrupt. 
  2416.  
  2417.  If the physical device driver receives an Open request for a COM port that is 
  2418.  not already open, it does not alter the Extended Hardware Buffering setting 
  2419.  that is in effect at the time. The ASYNC physical device driver preserves this 
  2420.  state across multiple Open and Close requests. 
  2421.  
  2422.  Initial Value            Automatic Protocol Override mode is on 
  2423.  
  2424.  First Level Open         No effect 
  2425.  
  2426.  Mode Utility             User interface to set the Extended Hardware Buffering 
  2427.                           mode to ENABLED, DISABLED, or to Automatic Protocol 
  2428.                           Override 
  2429.  
  2430.  
  2431. ΓòÉΓòÉΓòÉ 5.4.13. Input Sensitivity Using DSR ΓòÉΓòÉΓòÉ
  2432.  
  2433. When the physical device driver is enabled for this mode of operation and DSR 
  2434. is OFF, the physical device driver discards receive data. 
  2435.  
  2436.  Initial Value            Input Sensitivity using DSR is enabled 
  2437.  
  2438.  First Level Open         No effect 
  2439.  
  2440.  Mode Utility             User interface to enable/disable this mode of the 
  2441.                           physical device driver 
  2442.  
  2443.  Automatic Override       When Input Sensitivity Using DSR is enabled, the 
  2444.                           physical device driver responds to the lowering of 
  2445.                           the DSR line within a single character time. That is, 
  2446.                           the Extended Hardware Buffering (Receive Trigger 
  2447.                           Level) is adjusted so the device generates an 
  2448.                           interrupt for each character received. The full 
  2449.                           16-character receive buffer is still available to 
  2450.                           help avoid any receive hardware overruns. The 
  2451.                           Transmit FIFO feature is also still enabled so that 
  2452.                           only one transmit interrupt occurs for every 16 
  2453.                           characters transmitted. 
  2454.  
  2455.                           Note:  In situations where DSR can naturally drop 
  2456.                                  from O to OFF at the end of a communications 
  2457.                                  session, but is not normally toggled during 
  2458.                                  the session, it is most advantageous to 
  2459.                                  disable Input Sensitivity Using DSR after the 
  2460.                                  communications data transfer has begun. This 
  2461.                                  achieves a significant performance benefit 
  2462.                                  (under the control of Automatic Protocol 
  2463.                                  Override), without the risk of losing valid 
  2464.                                  data upon termination of the session. If, 
  2465.                                  however, the DSR signal is expected to toggle 
  2466.                                  frequently during a communications session, 
  2467.                                  Input Sensitivity Using DSR should not be 
  2468.                                  disabled, or potential data loss can result. 
  2469.  
  2470.  
  2471. ΓòÉΓòÉΓòÉ 5.4.14. Null Stripping ΓòÉΓòÉΓòÉ
  2472.  
  2473. If the physical device driver is enabled for null stripping, characters read in 
  2474. from the receive hardware (nonerror or nonbreak) with a value of 00h are thrown 
  2475. away. These null characters are stripped (not checked for Automatic Transmit 
  2476. Flow Control), even if the XON or XOFF character has been set to 00h, and are 
  2477. not placed in the physical device driver receive queue. 
  2478.  
  2479.  Initial Value            Null stripping is disabled. 
  2480.  First Level Open         Null stripping is disabled. 
  2481.  Mode Utility             No effect. 
  2482.  
  2483.  
  2484. ΓòÉΓòÉΓòÉ 5.4.15. Output Handshaking Using CTS, DSR, DCD ΓòÉΓòÉΓòÉ
  2485.  
  2486. This mode of the physical device driver can be controlled independently for 
  2487. each modem control signal. When this mode is enabled, the physical device 
  2488. driver does not give data to the transmit hardware if the modem control signals 
  2489. are OFF (disabled). Data is not transmitted unless all the lines enabled for 
  2490. output handshaking are up. 
  2491.  
  2492. If one of these modes is enabled, Error Alerts might be generated when the OS/2 
  2493. Logging Facility is enabled. If an external device causes CTS, DCD, or DSR to 
  2494. become inactive, transmission is blocked while the device driver waits for the 
  2495. respective line to become active again. If the line does not become active 
  2496. before the Write Timeout period expires, an Error Alert is generated. 
  2497.  
  2498.  Initial Value            Output handshaking using CTS and DSR is enabled. 
  2499.                           Output handshaking using DCD is disabled. 
  2500.  
  2501.  First Level Open         No effect. 
  2502.  
  2503.  Mode Utility             User interface to enable/disable this mode of the 
  2504.                           physical device driver for CTS and DSR 
  2505.                           (independently). Mode always disables this mode of 
  2506.                           operation of the physical device driver for DCD. 
  2507.  
  2508.  Automatic Override       When Output Handshaking using DSR, CTS, or DCD is 
  2509.                           enabled, the physical device driver responds to the 
  2510.                           dropping modem line within a single character time. 
  2511.                           That is, Automatic Protocol Override controls the 
  2512.                           Extended Hardware Buffering capability so that only 
  2513.                           one character at a time is given to the transmit 
  2514.                           hardware (Transmit Buffer Load Count is set to 1). 
  2515.                           The Receive Trigger Level is unaffected. 
  2516.  
  2517.  
  2518. ΓòÉΓòÉΓòÉ 5.4.16. Parity ΓòÉΓòÉΓòÉ
  2519.  
  2520. Determines whether a parity bit exists and, if appropriate, what algorithm 
  2521. determines its value. See ASYNC_SETLINECTRL and ASYNC_GETLINECTRL, which can be 
  2522. found in the OS/2 Physical Device Driver Reference. 
  2523.  
  2524.  Initial Value            Even parity 
  2525.  First Level Open         No effect 
  2526.  Mode Utility             User interface to change the parity characteristics 
  2527.  
  2528.  
  2529. ΓòÉΓòÉΓòÉ 5.4.17. RTS Control Mode ΓòÉΓòÉΓòÉ
  2530.  
  2531. The control modes for RTS are: 
  2532.  
  2533.    o  Enable 
  2534.    o  Disable 
  2535.    o  Input Handshaking 
  2536.    o  Toggling on Transmit 
  2537.  
  2538.  The Enable and Disable control modes affect RTS processing during a First 
  2539.  Level Open. When these control modes are set using the ASYNC_SETDCBINFO, the 
  2540.  value of the RTS signal can be immediately modified by the physical device 
  2541.  driver. The action depends on the previous control mode of RTS and the current 
  2542.  value of the RTS modem control signal. If the control mode of RTS is Input 
  2543.  Handshaking, the device driver controls the RTS signal, depending on how full 
  2544.  the receive queue is. If the control mode of RTS is Toggling on Transmit, then 
  2545.  the physical device driver controls the RTS signal, depending on whether it is 
  2546.  transmitting data. The bits that control these states of the physical device 
  2547.  driver are in the device control block. 
  2548.  
  2549.  Initial Value            Enable 
  2550.  First Level Open         No effect 
  2551.  Mode Utility             User interface to change the RTS Control Mode of the 
  2552.                           physical device driver 
  2553.  
  2554.  
  2555. ΓòÉΓòÉΓòÉ 5.4.18. Read Timeout State ΓòÉΓòÉΓòÉ
  2556.  
  2557. When the physical device driver processes a READ request packet, it can be with 
  2558. Normal, No-Wait, or Wait-For-Something Timeout processing. With Normal Timeout 
  2559. processing, if no data is received in the specified period of time, the request 
  2560. is completed. With No-Wait Timeout processing, the request obtains whatever 
  2561. data is available in the physical device driver receive queue (at the time the 
  2562. request is processed by the device driver) and returns. With Wait-For-Something 
  2563. Timeout processing, the request acts like No-Wait Timeout processing. However, 
  2564. if no data is available when the device driver processes the request, the 
  2565. physical device driver waits until some data is available or until the request 
  2566. times out due to Normal Timeout processing. 
  2567.  
  2568.  Initial Value            Normal Read Timeout processing 
  2569.  First Level Open         The device driver is set to Normal Read Timeout 
  2570.                           processing 
  2571.  Mode Utility             No effect 
  2572.  
  2573.  
  2574. ΓòÉΓòÉΓòÉ 5.4.19. Read Timeout Value ΓòÉΓòÉΓòÉ
  2575.  
  2576. The user-specific value, in .01 seconds units (based on 0, where 0 = .01 
  2577. seconds), is used for the Read Timeout processing, if Normal Read Timeout or 
  2578. Wait For Something Timeout processing is enabled. 
  2579.  
  2580.  Initial Value            1 minute 
  2581.  First Level Open         Set to 1 minute 
  2582.  Mode Utility             No effect 
  2583.  
  2584.  
  2585. ΓòÉΓòÉΓòÉ 5.4.20. Stop Bits ΓòÉΓòÉΓòÉ
  2586.  
  2587. Determines the number of stop bits associated with each character transmitted 
  2588. or received by way of the communications hardware. 
  2589.  
  2590.  Initial Value            1 stop bit 
  2591.  First Level Open         No effect 
  2592.  Mode Utility             User interface to change the number of stop bits 
  2593.  
  2594.  
  2595. ΓòÉΓòÉΓòÉ 5.4.21. Transmit Immediate ΓòÉΓòÉΓòÉ
  2596.  
  2597. The device driver can be told to transmit a byte immediately, bypassing the 
  2598. normal file system Write requests (bypassing the data to be transmitted in the 
  2599. transmit queue). Only one character at a time can be waiting to be transmitted 
  2600. immediately. 
  2601.  
  2602.  Initial Value            There is no character waiting to be transmitted 
  2603.                           immediately. 
  2604.  
  2605.  First Level Open         There is no character waiting to be transmitted 
  2606.                           immediately. 
  2607.  
  2608.  Close Considerations     A CLOSE request packet, when after processing this 
  2609.                           close request the port is not open any more (from 
  2610.                           another open without a close), causes the device 
  2611.                           driver to attempt to transmit the character waiting 
  2612.                           to be transmitted immediately. If the physical device 
  2613.                           driver cannot transmit the character waiting to be 
  2614.                           transmitted immediately (see IOCtl Category 01h 
  2615.                           ASYNC_TRANSMITIMM), which can be found in the OS/2 
  2616.                           Physical Device Driver Reference, it does not try to 
  2617.                           transmit the character and proceeds with the close 
  2618.                           processing. 
  2619.  
  2620.  Mode Utility             Not applicable. 
  2621.  
  2622.  
  2623. ΓòÉΓòÉΓòÉ 5.4.22. Transmitting Break ΓòÉΓòÉΓòÉ
  2624.  
  2625. The device driver can be transmitting a break. See IOCtls ASYNC_SETBREAKON and 
  2626. ASYNC_SETBREAKOFF, which can be found in the OS/2 Physical Device Driver 
  2627. Reference. 
  2628.  
  2629.  Initial Value            Not transmitting a break. 
  2630.  
  2631.  Close Considerations     A CLOSE request packet, when after processing this 
  2632.                           close request the port is not open any more (from 
  2633.                           another open without a close), causes the device 
  2634.                           driver to tell the hardware not to transmit a break 
  2635.                           any more. 
  2636.  
  2637.  Mode Utility             Not applicable. 
  2638.  
  2639.  
  2640. ΓòÉΓòÉΓòÉ 5.4.23. Write Timeout State ΓòÉΓòÉΓòÉ
  2641.  
  2642. When the physical device driver processes a WRITE request packet, it can be 
  2643. with Normal or Infinite Timeout processing. With Normal Timeout processing if 
  2644. no data is given to the transmit hardware within a specified amount of time, 
  2645. the request is completed. With Infinite Timeout processing, the request is 
  2646. completed only when all the data from the request has been given to the 
  2647. transmit hardware. 
  2648.  
  2649. Error Alerts can be generated on the occurrence of Write Timeout, if the OS/2 
  2650. Logging Facility is enabled. In order for an error alert to be generated by the 
  2651. physical ASYNC device driver, the appropriate mode of operation must be 
  2652. enabled. 
  2653.  
  2654.  Initial Value            Normal Write Timeout processing 
  2655.  First Level Open         No effect on Write Timeout processing 
  2656.  Mode Utility             User interface to set Infinite or Normal Write 
  2657.                           Timeout processing 
  2658.  
  2659.  
  2660. ΓòÉΓòÉΓòÉ 5.4.24. Write Timeout Value ΓòÉΓòÉΓòÉ
  2661.  
  2662. The user-specific value, in .01 seconds units (based on 0, where 0 = .01 
  2663. seconds), is used for the Write Timeout processing, if Normal Write Timeout 
  2664. processing is enabled. 
  2665.  
  2666.  Initial Value            1 minute 
  2667.  First Level Open         Set to 1 minute 
  2668.  Mode Utility             No effect 
  2669.  
  2670.  
  2671. ΓòÉΓòÉΓòÉ 5.4.25. XON/XOFF Characters ΓòÉΓòÉΓòÉ
  2672.  
  2673. The characters used for automatic transmit and automatic receive flow control. 
  2674.  
  2675.  Initial Value            XON is 11h, and XOFF is 13h 
  2676.  First Level Open         The XON and XOFF characters are reset to their 
  2677.                           initial values 
  2678.  Mode Utility             No effect 
  2679.  
  2680.  
  2681. ΓòÉΓòÉΓòÉ 5.5. Reserved Device Names (COM1-n) ΓòÉΓòÉΓòÉ
  2682.  
  2683. The device name AUX does not appear in the device header of the ASYNC device 
  2684. driver. The ASYNC physical device driver does not support the reserved name AUX 
  2685. for either DOS applications or OS/2 applications. 
  2686.  
  2687.  
  2688. ΓòÉΓòÉΓòÉ 5.5.1. IBM PS/2 (with Micro Channel) Considerations for COM1-4 ΓòÉΓòÉΓòÉ
  2689.  
  2690. The IBM PS/2 ASYNC device driver has device names COM1, COM2, COM3, and COM4 in 
  2691. its device driver header. Device name COM1 corresponds to the first LID in the 
  2692. ABIOS common data area with the ASYNC Device ID. Device name COM2 corresponds 
  2693. to the second LID. Device name COM3 corresponds to the third LID. Device name 
  2694. COM4 corresponds to the fourth LID in the ABIOS common data area with the ASYNC 
  2695. Device ID. 
  2696.  
  2697. The Advanced BIOS architecture ensures that the ordering in the ROM BIOS 40: 
  2698. data area matches the ordering of the LIDs in the common data area. 
  2699. Compatibility BIOS supports up to four ASYNC devices on the IBM PS/2 system, 
  2700. and the physical device driver assumes that the order of the Logical IDs 
  2701. matches the order of the addresses of these devices in the ROM BIOS 40: data 
  2702. area. Additional ASYNC devices can be supported by additional device drivers. 
  2703.  
  2704. The mapping of the ASYNC Logical ID ordering to COMn must be consistent across 
  2705. all device drivers that support the ASYNC hardware in the IBM PS/2 hardware 
  2706. environment. 
  2707.  
  2708.  
  2709. ΓòÉΓòÉΓòÉ 5.6. Initialization/Resource Management ΓòÉΓòÉΓòÉ
  2710.  
  2711. The device driver is loaded and initialized with a DEVICE= statement in the 
  2712. CONFIG.SYS file. They physical device driver processes parameters on the 
  2713. CONFIG.SYS to support COM ports with nonstandard address and IRQ's. Type help 
  2714. com.sys and read about the parameters. 
  2715.  
  2716. During initialization, the physical device driver attempts to free memory from 
  2717. its data segment for ports it does not need and that do not get initialized. 
  2718. The physical device driver does not remove device names from its device driver 
  2719. header for ports that do not get initialized. 
  2720.  
  2721. The device driver does not deinstall a device if the system requests it. If 
  2722. another device driver wishes to support a port already supported by this device 
  2723. driver, it needs to be initialized before this ASYNC device driver. 
  2724.  
  2725. Shared ownership of a given serial device between multiple device drivers in a 
  2726. single session of the OS/2 operating system is supported, subject to certain 
  2727. restrictions. Each driver that installs sharing a serial device obtains 
  2728. exclusive access to that device when it processes an Open request, rather than 
  2729. claiming the device during initialization. Each driver also fully relinquishes 
  2730. control of that device, when it processes a matching Close request. 
  2731.  
  2732. When the physical device driver is initialized, it is enabled by default for 
  2733. Output Handshaking Using CTS and DSR. This is for compatibility with existing 
  2734. systems (IBM PC and PS/2 BIOS INT 14H) and the requirements of supporting an 
  2735. RS232 port. It is also enabled by default for Input Sensitivity to DSR. This 
  2736. allows a remote device to indicate whether data being received is valid and is 
  2737. enabled to help ensure compatibility with existing systems. The initialization 
  2738. default for Extended Hardware Buffering on serial devices that fully support 
  2739. FIFO mode operations is Automatic Protocol Override. 
  2740.  
  2741. Note:  The ASYNC device driver default protocols provide an upwardly compatible 
  2742.        RS232-C interface for communication with most devices. New communication 
  2743.        applications and devices might not require the default protocols to be 
  2744.        enabled. The user should evaluate these alternatives and consider which 
  2745.        protocols to enable or disable in order to provide the highest possible 
  2746.        performance for support of a given serial device. 
  2747.  
  2748.  
  2749. ΓòÉΓòÉΓòÉ 5.6.1. Initialization Considerations ΓòÉΓòÉΓòÉ
  2750.  
  2751. The device driver does not attempt to initialize or support a port if it does 
  2752. not get the INIT request packet for the port's corresponding device name. If 
  2753. the physical device driver gets the INIT request packet for a given device 
  2754. name, it checks to see if a valid I/O address is in the BIOS 40: data area that 
  2755. corresponds to that device name. COM1 is in 40:0 and COM2 is in 40:2. If the 
  2756. 40: area does not have a valid I/O address, the physical device driver fails 
  2757. the port and will not support the port. Otherwise, the device driver attempts 
  2758. to get exclusively the interrupt level that corresponds to the I/O address for 
  2759. the port. If the interrupt level is not available, the physical device driver 
  2760. fails to initialize the port and will not support the port. 
  2761.  
  2762. If the interrupt level is available, the physical device driver relinquishes 
  2763. the interrupt level. The physical device driver also initializes the port and 
  2764. sets up support for the port during this startup of the operating system. 
  2765.  
  2766. In summary, in order for the physical device driver to support a port, the 
  2767. following must be TRUE: 
  2768.  
  2769.    o  The device driver must get an INIT request packet for the device name. 
  2770.    o  The 40: area that corresponds to the device name must have a valid I/O 
  2771.       address. 
  2772.    o  The appropriate interrupt level must be available for exclusive use, even 
  2773.       though the physical device driver will not claim the interrupt level for 
  2774.       exclusive use during initialization. 
  2775.  
  2776.  The physical device driver claims ownership of the port by not deinstalling 
  2777.  the corresponding device name. Another device driver can cause this device 
  2778.  driver not to claim a port by initializing before this device driver, and by 
  2779.  doing at least one of the following: 
  2780.  
  2781.    o  Not allowing this physical device driver to receive an INIT request 
  2782.       packet for a given device name 
  2783.    o  Putting an invalid I/O address in the corresponding 40: area (for 
  2784.       example, 0) 
  2785.    o  Exclusively owning the appropriate interrupt level at initialization time 
  2786.  
  2787.  The device driver does not attempt to initialize or support a port if it does 
  2788.  not get the INIT request packet for the port's corresponding device name. If 
  2789.  the physical device driver gets the INIT request packet for a given device 
  2790.  name, it attempts to claim ownership of the specific LID position for the 
  2791.  ASYNC Device ID that corresponds to the device name being initialized. 
  2792.  
  2793.  For Micro Channel bus machines, if the LID is not available, the physical 
  2794.  device driver fails to initialize the port and does not support the port. If 
  2795.  the LID is available, the physical device driver initializes the port and sets 
  2796.  up support for the port during this startup of the operating system. The LID 
  2797.  for the port is relinquished; it is reclaimed during Open processing. 
  2798.  
  2799.  For the AT-bus machine, COM.SYS still installs even though the LID is not 
  2800.  present. 
  2801.  
  2802.  In summary, for the physical device driver to support a port on an IBM PS/2 
  2803.  computer, the following must be TRUE: 
  2804.  
  2805.    o  The physical device driver must get an INIT request packet for the device 
  2806.       name. 
  2807.    o  The ASYNC LID corresponding to the device name must be available. 
  2808.  
  2809.  The physical device driver claims ownership of the port by not deinstalling 
  2810.  the corresponding device name. Another device driver can cause this device 
  2811.  driver not to claim a port by initializing before this device driver and doing 
  2812.  at least one of the following: 
  2813.  
  2814.    o  Not allowing this device driver to receive an INIT request packet for a 
  2815.       given device name. 
  2816.    o  Claiming the appropriate ASYNC LID. 
  2817.  
  2818.  
  2819. ΓòÉΓòÉΓòÉ 5.7. Data Translation/Monitor Support/Spooler Support ΓòÉΓòÉΓòÉ
  2820.  
  2821. The physical device driver provides no data translation, code page, or monitor 
  2822. support. It is the responsibility of the application or subsystem to provide 
  2823. any function required in these areas. 
  2824.  
  2825. Spooling from LPT to COM is supported by the spooler, but spooling from COM to 
  2826. LPT, or COM to COM, is not supported. When spooling from COM to LPT, code page 
  2827. support is provided by the spooler. 
  2828.  
  2829. Any requests for registering or opening a monitor chain to COMn are rejected by 
  2830. the physical device driver. The physical device driver deals with binary data 
  2831. and provides no special processing of binary or ASCII data streams. 
  2832.  
  2833.  
  2834. ΓòÉΓòÉΓòÉ 5.8. ASYNC Communication Device Driver Interfaces ΓòÉΓòÉΓòÉ
  2835.  
  2836. The physical ASYNC device driver supports a large set of generic IOCtl 
  2837. functions (Category 01h), which are organized into the following groups: 
  2838.  
  2839.    o  Break Processing 
  2840.    o  Device Control Block (DCB) Parameter Access 
  2841.    o  Device Driver I/O Queue Management 
  2842.    o  Line Characteristics 
  2843.    o  Manual XON/XOFF Processing 
  2844.    o  Polled Event Functions 
  2845.  
  2846.  
  2847. ΓòÉΓòÉΓòÉ 5.8.1. File System Requests ΓòÉΓòÉΓòÉ
  2848.  
  2849. The physical ASYNC device driver supports the File System requests as shown in 
  2850. the following table. 
  2851.  
  2852. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2853. ΓöéRequest   ΓöéDescription                                       Γöé
  2854. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2855. ΓöéINIT      ΓöéInitialize the device                             Γöé
  2856. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2857. ΓöéOpen      ΓöéOpen the device                                   Γöé
  2858. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2859. ΓöéClose     ΓöéClose the device                                  Γöé
  2860. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2861. ΓöéRead      ΓöéRead from the device (Normal, Non-Destructive     Γöé
  2862. Γöé          ΓöéNo-Wait)                                          Γöé
  2863. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2864. ΓöéWrite     ΓöéWrite to the device                               Γöé
  2865. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2866. ΓöéStatus    ΓöéInput or output status                            Γöé
  2867. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2868. ΓöéFlush     ΓöéFlush or terminate all pending requests           Γöé
  2869. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2870.  
  2871.  
  2872. ΓòÉΓòÉΓòÉ 5.8.1.1. Open Processing ΓòÉΓòÉΓòÉ
  2873.  
  2874. The physical device driver does not claim the interrupt level the port is on 
  2875. until the port is open. If the interrupt level is not available, the OPEN 
  2876. request packet fails. The interrupt level is claimed exclusively on the ISA bus 
  2877. machines. The interrupt level is claimed shareable on the Micro Channel 
  2878. architecture machines. 
  2879.  
  2880. On PS/2 machines, a First Level Open causes the physical device driver to 
  2881. attempt to obtain a Logical ID. If this fails (which indicates another physical 
  2882. device driver might be using the device), a general failure is returned. If the 
  2883. Logical ID is obtained, but the open fails for some other reason, the Logical 
  2884. ID is freed. Other physical device drivers that coexist with the OS/2 physical 
  2885. ASYNC device driver perform similar processing. 
  2886.  
  2887. If a timer tick handler is not available during First Level Open processing, 
  2888. the Open request can fail. If the physical device driver receives an OPEN 
  2889. request packet and the COM device is not already open (from a previous open 
  2890. without a close), this is called a First Level Open, and the physical device 
  2891. driver does special processing. See States of the ASYNC Device Driver. If a 
  2892. subsequent Open request is issued before a previous First Level Open request 
  2893. has completed, the device driver might process the OPEN request packets in an 
  2894. order different from the one in which they were issued. This could cause the 
  2895. First Level Open to take effect at a time different from what the application 
  2896. expected. 
  2897.  
  2898. An Open request should never be issued until a previous Last Level Close 
  2899. request has completed. Otherwise, the function performed by a Last Level Close 
  2900. and a First Level Open might not occur. If the port is not already open (First 
  2901. Level Open), the physical device driver attempts to clear out any data in the 
  2902. receive hardware. On the IBM PS/2 system, if the port is not already open 
  2903. (First Level Open), the physical device driver relies on the Reset/Initialize 
  2904. Advanced BIOS function to reset and clear the UART receive hardware. 
  2905.  
  2906.  
  2907. ΓòÉΓòÉΓòÉ 5.8.1.2. Close Processing ΓòÉΓòÉΓòÉ
  2908.  
  2909. An application should never close an open handle to a COM port while there are 
  2910. requests still pending for that handle. If a request has not completed, it 
  2911. might be waiting for timeout processing. IOCtls are used to determine, and 
  2912. change, the current timeout processing. 
  2913.  
  2914. A Last Level Close occurs when the port is no longer open (from another open 
  2915. without a close). When a Last Level Close occurs, the physical device driver 
  2916. does some special processing: 
  2917.  
  2918.    o  Clears the receive and transmit queues 
  2919.    o  Turns break OFF, if it is currently transmitting a break 
  2920.    o  Clears any character waiting to be transmitted immediately, if it cannot 
  2921.       be transmitted If it can be transmitted, the physical device driver makes 
  2922.       sure that it is given to the transmit hardware 
  2923.    o  Attempts to automatically transmit an XON (if possible), if currently 
  2924.       enabled for Automatic Receive Flow Control (XON/XOFF), and the last 
  2925.       character that the physical device driver automatically transmitted was 
  2926.       an XOFF 
  2927.    o  Waits until all the data in the transmit hardware has been physically 
  2928.       transmitted 
  2929.    o  Relinquishes the interrupt level 
  2930.    o  Turns DTR and RTS OFF, if they are not already OFF. The physical device 
  2931.       driver first waits the specified number of character times 
  2932.    o  Relinquishes the Logical ID for the device (on PS/2 machines) 
  2933.  
  2934.  
  2935. ΓòÉΓòÉΓòÉ 5.8.1.3. Read Processing ΓòÉΓòÉΓòÉ
  2936.  
  2937. The physical device driver begins processing Read requests in the order it 
  2938. received them. Notice that this might not be the same order in which the 
  2939. requests were issued by the application. If the physical device driver receives 
  2940. more than one Read request, the request is queued on the Read request queue for 
  2941. later processing. Applications might not see Read requests completed in the 
  2942. order in which they were issued. The order of the data placed in the Read 
  2943. requests reflects the order in which the requests were received by the physical 
  2944. device driver. 
  2945.  
  2946. The data for the Read requests comes from the physical device driver receive 
  2947. queue. Because of timeout processing, it is normal for the total number of Read 
  2948. characters requested not to be read. This is not considered an error. The 
  2949. request is completed when timeout is completed or when the amount of data 
  2950. requested is placed in the Read buffer. The various kinds of Read Timeout 
  2951. processing are discussed in the States of the ASYNC Device Driver. To reduce 
  2952. the probability of a device driver receive queue buffer overrun, the 
  2953. communications protocol takes into account the size of the physical device 
  2954. driver receive queue. 
  2955.  
  2956.  
  2957. ΓòÉΓòÉΓòÉ 5.8.1.4. Write Processing ΓòÉΓòÉΓòÉ
  2958.  
  2959. The physical device driver begins processing Write requests in the order it 
  2960. received them. Notice that this might not be the same order that the requests 
  2961. were issued by the application. If the physical device driver receives more 
  2962. than one Write request, the request is queued on the Write request queue for 
  2963. later processing. Applications might not see Write requests complete in the 
  2964. order they were issued. The order of the data transmitted due to the Write 
  2965. requests reflects the order that the requests were received by the physical 
  2966. device driver. 
  2967.  
  2968. The data from the Write requests is placed in the physical device driver 
  2969. transmit queue. The number of characters written is considered to be the number 
  2970. of characters given to the transmit hardware, and not the number of characters 
  2971. placed in the physical device driver transmit queue. Because of timeout 
  2972. processing, it is possible that the total number of Write characters requested 
  2973. will not be transmitted. This is not considered an error. The request is 
  2974. completed when it times out or when the amount of data requested is given to 
  2975. the transmit hardware (but not actually transmitted at the physical RS232-C 
  2976. interface). Write Timeout processing is discussed in States of the ASYNC Device 
  2977. Driver. 
  2978.  
  2979. If infinite Write Timeout processing is enabled, it is the responsibility of 
  2980. the application to monitor the status of the Write requests. The application 
  2981. might have to issue an IOCtl to disable infinite Write Timeout processing to 
  2982. cause the Write request to be completed (without all the data being 
  2983. transmitted). If an application does not check that all the data is given to 
  2984. the transmit hardware on each Write request, use the infinite timeout 
  2985. processing mode of the physical device driver to ensure that all the data has 
  2986. been given to the transmit hardware before the request is completed. To 
  2987. increase the throughput (ratio of number of characters transmitted per second 
  2988. to the bit rate), the application should keep the Write requests as large as 
  2989. possible. 
  2990.  
  2991.  
  2992. ΓòÉΓòÉΓòÉ 5.9. Access Authorization ΓòÉΓòÉΓòÉ
  2993.  
  2994. The physical ASYNC device driver does not prevent multiple processes from 
  2995. concurrently opening the same device name. The physical device driver uses 
  2996. standard file system contention control. An application or subsystem that needs 
  2997. exclusive access to the COM device will open it with access rights set to 
  2998. DENY_ANY. Inheritance of open handles, and sharing of the device among multiple 
  2999. opens, works in a manner similar to regular files. 
  3000.  
  3001.  
  3002. ΓòÉΓòÉΓòÉ 5.10. ASYNC (RS232-C) Generic IOCtl Command Summary ΓòÉΓòÉΓòÉ
  3003.  
  3004. The following table lists each function and its description: 
  3005.  
  3006. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  3007. ΓöéFunction  ΓöéCategory 01h IOCtls                               Γöé
  3008. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3009. Γöé          ΓöéLine Characteristics                              Γöé
  3010. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3011. Γöé  41h     Γöé   Set Bit Rate                                   Γöé
  3012. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3013. Γöé  42h     Γöé   Set Line Characteristics (stop, parity, data   Γöé
  3014. Γöé          Γöé       bits)                                      Γöé
  3015. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3016. Γöé  43h     Γöé   Extended Set Bit Rate                          Γöé
  3017. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3018. Γöé  46h     Γöé   Set Modem Control Signals                      Γöé
  3019. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3020. Γöé  61h     Γöé   Query Current Bit Rate                         Γöé
  3021. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3022. Γöé  62h     Γöé   Query Line Characteristics                     Γöé
  3023. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3024. Γöé  63h     Γöé   Extended Query Bit Rate                        Γöé
  3025. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3026. Γöé  66h     Γöé   Query Modem Control Output Signals             Γöé
  3027. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3028. Γöé  67h     Γöé   Query Current Modem Input Signals              Γöé
  3029. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3030. Γöé          ΓöéManual XON/XOFF (Flow Control) Processing         Γöé
  3031. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3032. Γöé  44h     Γöé   Transmit Byte Immediate                        Γöé
  3033. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3034. Γöé  47h     Γöé   Behave as if XOFF Received (stop transmit)     Γöé
  3035. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3036. Γöé  48h     Γöé   Behave as if XON Received (start transmit)     Γöé
  3037. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3038. Γöé          ΓöéBreak Processing                                  Γöé
  3039. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3040. Γöé  45h     Γöé   Set Break OFF                                  Γöé
  3041. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3042. Γöé  4Bh     Γöé   Set Break ON                                   Γöé
  3043. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3044. Γöé          ΓöéDevice Driver I/O Queue Management                Γöé
  3045. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3046. Γöé  68h     Γöé   Query Number of Characters in Receive Queue    Γöé
  3047. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3048. Γöé  69h     Γöé   Query Number of Characters in Transmit Queue   Γöé
  3049. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3050. Γöé          ΓöéPolled Events                                     Γöé
  3051. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3052. Γöé  64h     Γöé   Query COM Status                               Γöé
  3053. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3054. Γöé  65h     Γöé   Query Transmit Data Status                     Γöé
  3055. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3056. Γöé  6Dh     Γöé   Query COM Error                                Γöé
  3057. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3058. Γöé  72h     Γöé   Query COM Event Information                    Γöé
  3059. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3060. Γöé          ΓöéEnhanced Parameters                               Γöé
  3061. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3062. Γöé  54h     Γöé   Set Enhanced Mode Parameters                   Γöé
  3063. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3064. Γöé  74h     Γöé   Query Enhanced Mode Parameters                 Γöé
  3065. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3066. Γöé          ΓöéDevice Control Block (DCB) Parameter Access       Γöé
  3067. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3068. Γöé  53h     Γöé   Set Device Control Block Parameters            Γöé
  3069. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3070. Γöé  73h     Γöé   Query Device Control Block Parameters          Γöé
  3071. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  3072. Note:  Device Control Block parameters determine: 
  3073.  
  3074.    o  Automatic Transmit Flow Control (start/stop transmit, when XON/XOFF 
  3075.       received) 
  3076.    o  Automatic Receive Flow Control (transmit XON/XOFF, when receive buffer 
  3077.       fills/empties) 
  3078.    o  XON/XOFF Characters 
  3079.    o  DTR Control Mode (enable/disable/input handshaking) 
  3080.    o  RTS Control Mode (enable/disable/input handshaking/toggling on transmit) 
  3081.    o  Output Handshaking Using CTS/DSR/DCD (control signal determines when to 
  3082.       transmit) 
  3083.    o  Input Sensitivity Using DSR (reception of data controlled by DSR) 
  3084.    o  Error Replacement Character and Processing 
  3085.    o  Break Replacement Character and Processing 
  3086.    o  Null Stripping 
  3087.    o  Timeout Processing 
  3088.    o  Extended Hardware Buffering(DISABLED/ENABLED/Automatic Protocol Override) 
  3089.  
  3090.  See "Generic IOCtl Commands", which can be found in the OS/2 Physical Device 
  3091.  Driver Reference, for detailed descriptions of the asynchronous Category 01h 
  3092.  IOCtl functions. 
  3093.  
  3094.  
  3095. ΓòÉΓòÉΓòÉ 5.11. DOS Session Considerations/Restrictions ΓòÉΓòÉΓòÉ
  3096.  
  3097. Applications using a serial printer from a DOS session must spool print data to 
  3098. the spooler through the appropriate LPT handles. 
  3099.  
  3100. The physical device driver makes no attempt to restrict or mold the function of 
  3101. file system requests because they might have come from a DOS session. To 
  3102. achieve the full capabilities of the file system access to COM, the application 
  3103. needs access to the full range of Category 01h IOCtls. The design and externals 
  3104. of the physical asynchronous device driver are based on the requirements of 
  3105. OS/2-mode applications that use the RS232-C port of the system. 
  3106.  
  3107.  
  3108. ΓòÉΓòÉΓòÉ 5.12. Spooler Considerations ΓòÉΓòÉΓòÉ
  3109.  
  3110. When setting up a serial printer in the Serial Port Settings, the user can 
  3111. choose between two handshaking protocols. If the user selects None, the serial 
  3112. printer card switches must be set for XON/XOFF handshaking. If the user chooses 
  3113. Hardware, the serial printer card switches must be set for DTR Pacing. 
  3114.  
  3115.  
  3116. ΓòÉΓòÉΓòÉ 5.13. Performance ΓòÉΓòÉΓòÉ
  3117.  
  3118. The achievable performance is very sensitive to the environment. The type and 
  3119. amount of other system activity determine the achievable performance. On the 
  3120. IBM PS/2 system, the number of COM ports or other devices on the same interrupt 
  3121. level significantly affects the achievable performance level. 
  3122.  
  3123. Trying to receive data at too high a bit rate could cause hardware overrun 
  3124. errors or receive queue overrun errors. Receive queue overrun errors are easily 
  3125. solved by adjusting the communications protocol to the size of the physical 
  3126. device driver receive queue. Trying to transmit data at too high a bit rate 
  3127. could also cause the performance of the operating system to be severely 
  3128. reduced. 
  3129.  
  3130. The bit rate can be set with the MODE command or with an IOCtl. The bit rate 
  3131. should not be set to values that might cause receive overruns or adverse OS/2 
  3132. system performance effects. 
  3133.  
  3134.  
  3135. ΓòÉΓòÉΓòÉ 5.13.1. Enabling Extended Hardware Buffering ΓòÉΓòÉΓòÉ
  3136.  
  3137. In most transmit-only situations (for example, serial printers), there is 
  3138. always a requirement for flow control (using Output Handshaking or Automatic 
  3139. Transmit Flow Control). If the attached hardware can receive a significant 
  3140. number of characters after the modem control (pacing) signal is changed, then 
  3141. setting Extended Hardware Buffering to enabled (ASYNC_SETDCBINFO) can be an 
  3142. acceptable way to significantly improve the transmit throughput and the 
  3143. operating system performance. This allows the Extended Hardware Buffering to 
  3144. yield maximum serial I/O performance while still providing the required Output 
  3145. Handshaking or Automatic Transmit Flow Control protocols required by the 
  3146. attached serial device. Testing with Extended Hardware Buffering enabled must 
  3147. be performed at the attached device when the physical asynchronous device 
  3148. driver is placed in this mode. 
  3149.  
  3150. In many Receive and Transmit (half- or full-duplex) scenarios, disabling Input 
  3151. Sensitivity Using DSR has no negative effects. Many communications devices have 
  3152. switches that cause DSR to be constantly ON. Disabling Input Sensitivity Using 
  3153. DSR significantly improves the ability of the serial port hardware to handle 
  3154. receive data without receive hardware overrun errors. Another possible approach 
  3155. is to set Extended Hardware Buffering enabled by using IOCtl ASYNC_SETDCBINFO 
  3156. or the OS/2 MODE command. 
  3157.  
  3158. In some other Transmit and Receive scenarios, disabling Output Handshaking 
  3159. Using CTS and DSR after a communications link has been established has no 
  3160. adverse effects under normal operating conditions. Again,the achievable 
  3161. performance benefits can be significant. Another possible approach is to set 
  3162. Extended Hardware Buffering enabled by using IOCtl ASYNC_SETDCBINFO. 
  3163.  
  3164. The potential negative effects of disabling a default control mode of the 
  3165. physical device driver should be thoroughly understood. The potential 
  3166. performance benefits, however, can far outweigh the added complexity of usage 
  3167. and any other potential problems. Such problems can usually be resolved either 
  3168. by reverting to the Automatic Protocol Override mode or by using IOCtl 
  3169. ASYNC_SETDCBINFO to set Extended Hardware Buffering to disabled. 
  3170.  
  3171. The per-character processing requirements must be addressed when deciding 
  3172. whether to override one of the default protocols of the physical device driver. 
  3173. Possible data integrity problems, such as receive overrun errors, loss of data 
  3174. at the beginning or end of a communications session, or receipt of invalid data 
  3175. on a noisy communications connection can occur. Such problems must be 
  3176. considered before using the potential performance benefits associated with 
  3177. Extended Hardware Buffering. 
  3178.  
  3179. For ports operating at a given data-transfer rate, the system has less than 20% 
  3180. interrupt-driven device driver overhead when running with Extended Hardware 
  3181. Buffering enabled (both transmit and receive FIFO buffering active), as 
  3182. compared with running those ports on devices where Extended Hardware Buffering 
  3183. is disabled. 
  3184.  
  3185. Also of equal importance are the operational characteristics of the device 
  3186. driver. By setting Extended Hardware Buffering enabled, the physical device 
  3187. driver can transmit with the full 16-character FIFO buffer active (essentially 
  3188. transmitting 16 characters at a time), and the Receive Data Available 
  3189. interrupts can provide 4, 8, or 14 characters each to the physical device 
  3190. driver receive queue. This is true no matter what device driver protocols are 
  3191. enabled. Examples of scenarios where setting the FIFO Enabled mode of the 
  3192. physical device driver might be acceptable are: 
  3193.  
  3194.    o  If the user does not care if too many characters are transmitted after a 
  3195.       modem connection is broken 
  3196.  
  3197.    o  If the printer or plotter connected to the system does not lose data when 
  3198.       it tells the system (with a modem control signal), to stop transmitting, 
  3199.       and the system continues to transmit a significant number (up to 16) of 
  3200.       characters. 
  3201.  
  3202.    o  If the system is connected to a modem or another system that is normally 
  3203.       set up to always keep DSR ON. 
  3204.  
  3205.    o  If the communications protocol with the remote device does not require 
  3206.       the system to respond on a character-by-character basis to input data 
  3207.       (for example, when the remote device sends data in blocks and provides 
  3208.       error retry capability on a block basis rather than a per-character 
  3209.       basis). 
  3210.  
  3211.       Note:  VCOM.SYS does not currently support buffering. 
  3212.  
  3213.  
  3214. ΓòÉΓòÉΓòÉ 6. CLOCK$ Device Driver ΓòÉΓòÉΓòÉ
  3215.  
  3216. This chapter discusses the physical CLOCK$ device driver. 
  3217.  
  3218.  
  3219. ΓòÉΓòÉΓòÉ 6.1. Physical CLOCK$ Device Driver ΓòÉΓòÉΓòÉ
  3220.  
  3221. The OS/2 operating system assumes that a CMOS real-time clock is available in 
  3222. the system. The CLOCK$ device defines and performs functions like any other 
  3223. character device, except that it is identified by a bit in the attribute WORD. 
  3224. The operating system uses this bit to identify the device driver; therefore, 
  3225. this device can take any name. The device has been named CLOCK$ to avoid 
  3226. possible conflicts with any files named CLOCK. 
  3227.  
  3228. The CLOCK$ device is unique because the OS/2 operating system reads or writes a 
  3229. 6-byte sequence, which encodes the date and time. Writing to this device sets 
  3230. the date and time; reading from it gets the date and time. The following figure 
  3231. illustrates the binary time format used by the CLOCK$ device: 
  3232.  
  3233.   Byte 0     Byte 1     Byte 2     Byte 3     Byte 4     Byte 5
  3234. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  3235. Γöé Days since 01-01-80 Γöé Minutes  Γöé Hours    Γöé Sec/100  Γöé Seconds  Γöé
  3236. Γöé Low-byte Hi-byte    Γöé          Γöé          Γöé          Γöé          Γöé
  3237. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  3238.  
  3239. The physical CLOCK$ device driver sets and maintains the following fields in 
  3240. the global InfoSeg: 
  3241.  
  3242. TIME 
  3243.  
  3244.       Time, from 1-1-1980, in seconds 
  3245.       Milliseconds 
  3246.       Hours 
  3247.       Minutes 
  3248.       Seconds 
  3249.       Hundredths 
  3250.       Timer interval 
  3251.  
  3252.  DATE 
  3253.  
  3254.       Day 
  3255.       Month 
  3256.       Year 
  3257.       Day of week 
  3258.  
  3259.  The physical CLOCK$ device driver ensures that the date, time in seconds (from 
  3260.  1-1-1980), and time of day (hours, minutes, seconds) fields remain 
  3261.  synchronized with the CMOS clock and that the hundredths of seconds field is 
  3262.  correctly synchronized with the seconds field. 
  3263.  
  3264.  
  3265. ΓòÉΓòÉΓòÉ 6.2. CMOS Clock ΓòÉΓòÉΓòÉ
  3266.  
  3267. CLOCK$ is the device driver for the CMOS clock. The RTENTR routine is the 
  3268. task-time entry point to the Clock device driver. The requested functions are 
  3269. dispatched to worker routines. 
  3270.  
  3271. RTENTR provides eight functions: 
  3272.  
  3273.    o  RTREAD(4) 
  3274.    o  STREDY(5) 
  3275.    o  STCOMP(6,7) 
  3276.    o  RTWRIT(8,9) 
  3277.    o  RTIOCT(16) 
  3278.    o  RTINIT(27) 
  3279.    o  RTINIT2(0) 
  3280.    o  BADCMD (all other functions) 
  3281.  
  3282.  A case control structure is used because a command table has only 8 valid 
  3283.  entries of 28 options. Functions 6,7 and functions 8,9 have the same effect. 
  3284.  
  3285.  
  3286. ΓòÉΓòÉΓòÉ 6.2.1. All Other Functions ΓòÉΓòÉΓòÉ
  3287.  
  3288.  Input:    ES:BX = Address of Device Driver Request Packet 
  3289.  
  3290.            DS:  = Points to Clock Device Driver Data Segment 
  3291.  
  3292.            Note:  Parameter checking on input data to RTWRIT through this 
  3293.                   routine must be performed by the caller. 
  3294.  
  3295.  Output:   Device Driver Request Packet filled in (for example, Status word 
  3296.            set, date/time fields). 
  3297.  
  3298.  
  3299. ΓòÉΓòÉΓòÉ 6.2.2. Equivalent Command Dispatch Table (Highest legal function is 27): ΓòÉΓòÉΓòÉ
  3300.  
  3301. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  3302.  
  3303.       ClkSwap:RTINIT2         ; 0 Initialize (2nd stage, special for clock)
  3304.       ClkSwap:BADCMD          ; 1 Media Check  these are unsupported
  3305.       ClkSwap:BADCMD          ; 2 Build BPB    functions.
  3306.       ClkSwap:BADCMD          ; 3 IOCTL input
  3307.       ClkSwap:RTREAD          ; 4 Input (Read)
  3308.       ClkSwap:STREDY          ; 5 Non-destructive read, no wait
  3309.       ClkSwap:STCOMP          ; 6 Input status
  3310.       ClkSwap:STCOMP          ; 7 Input flush
  3311.       ClkSwap:RTWRIT          ; 8 Output (Write)
  3312.       ClkSwap:RTWRIT          ; 9 Output with verify
  3313.       ClkSwap:BADCMD          ; 10 BADCMD
  3314.       ClkSwap:BADCMD          ; 11 BADCMD
  3315.       ClkSwap:BADCMD          ; 12 BADCMD
  3316.       ClkSwap:BADCMD          ; 13 BADCMD
  3317.       ClkSwap:BADCMD          ; 14 BADCMD
  3318.       ClkSwap:BADCMD          ; 15 BADCMD
  3319.       ClkSwap:RTIOCT          ; 16 Generic IOCTL
  3320.       ClkSwap:BADCMD          ; 17 BADCMD
  3321.       ClkSwap:BADCMD          ; 18 BADCMD
  3322.       ClkSwap:BADCMD          ; 19 BADCMD
  3323.       ClkSwap:BADCMD          ; 20 BADCMD
  3324.       ClkSwap:BADCMD          ; 21 BADCMD
  3325.       ClkSwap:BADCMD          ; 22 BADCMD
  3326.       ClkSwap:BADCMD          ; 23 BADCMD
  3327.       ClkSwap:BADCMD          ; 24 BADCMD
  3328.       ClkSwap:BADCMD          ; 25 BADCMD
  3329.       ClkSwap:BADCMD          ; 26 BADCMD
  3330.       ClkCode:RTINIT          ; 27 Initialize
  3331.       ClkSwap:BADCMD          ; 28 BADCMD here at table end
  3332.  
  3333. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  3334.  
  3335.  
  3336. ΓòÉΓòÉΓòÉ 6.2.2.1. RTREAD ΓòÉΓòÉΓòÉ
  3337.  
  3338. The Realtime Clock Read routine returns six bytes of date and time information 
  3339. in the form Date(word), Min, Hrs, Sec/100, Sec. 
  3340.  
  3341. DevHlp_PhysToVirt converts the real address of the data buffer in the Device 
  3342. Driver Request Block (PktData) to a virtual address. DevHlp_UnPhysToVirt later 
  3343. restores the physical memory address. 
  3344.  
  3345. RTREAD does not actually read the clock, but instead retrieves the data from 
  3346. the Global InfoSeg date/time data area. 
  3347.  
  3348.  
  3349. ΓòÉΓòÉΓòÉ 6.2.2.2. STREDY ΓòÉΓòÉΓòÉ
  3350.  
  3351. STREDY performs a non-destructive read operation with no-wait. 
  3352.  
  3353.  
  3354. ΓòÉΓòÉΓòÉ 6.2.2.3. STCOMP ΓòÉΓòÉΓòÉ
  3355.  
  3356. STCOMP sets the status to "complete". 
  3357.  
  3358.  
  3359. ΓòÉΓòÉΓòÉ 6.2.2.4. RTWRIT ΓòÉΓòÉΓòÉ
  3360.  
  3361. The Realtime Clock Write routine supports the device driver functions: 
  3362.  
  3363.    o  WRITE (function 8) 
  3364.    o  WRITE WITH VERIFY (function 9) 
  3365.  
  3366.  Set the Realtime Clock device with the date/time information and update the 
  3367.  Global InfoSeg date/time variables accordingly. Set the stack frame to reserve 
  3368.  the clock information as follows: 
  3369.  
  3370.                    ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  3371.                    Γöé            OLD BP             Γöé
  3372.                    Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3373.            BP+16   ΓöéCURRENT CENTURYΓöéCURRENT CENTURYΓöé
  3374.                    Γöé YEAR - BCD    Γöé YEAR - BINARY Γöé
  3375.                    Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3376.            BP+14   Γöé YEAR-BCD      Γöé YEAR-BINARY   Γöé
  3377.                    Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3378.            BP+12   Γöé MONTH-BCD     Γöé MONTH-BINARY  Γöé
  3379.                    Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3380.            BP+10   Γöé DAY OF MONTH  Γöé DAY OF MONTH  Γöé
  3381.                    Γöé  BCD          Γöé  BINARY       Γöé
  3382.                    Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3383.            BP+8    Γöé DAY OF WEEK   Γöé DAY OF WEEK   Γöé
  3384.                    Γöé  BCD          Γöé  BINARY       Γöé
  3385.                    Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3386.            BP+6    Γöé HOUR-BCD      Γöé HOUR-BINARY   Γöé
  3387.                    Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3388.            BP+4    Γöé MINUTE-BCD    Γöé MINUTE-BINARY Γöé
  3389.                    Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3390.            BP+2    Γöé SECOND-BCD    Γöé SECOND-BINARY Γöé
  3391.                    Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3392.            BP      Γöé CENTURY-BINARYΓöé HUNDREDTH of  Γöé
  3393.                    Γöé               Γöé SECOND-BINARY Γöé
  3394.                    ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  3395.  
  3396.  DevHlp_PhysToVirt converts the real address of the data buffer in the Device 
  3397.  Driver Request Block (PktData) to a virtual address. DevHlp_UnPhysToVirt later 
  3398.  restores the physical memory address. 
  3399.  
  3400.  
  3401. ΓòÉΓòÉΓòÉ 6.2.2.5. RTIOCT ΓòÉΓòÉΓòÉ
  3402.  
  3403. The Realtime Clock Generic IOCTL routine supports the category 0Dh generic 
  3404. IOCTL commands by calling the appropriate worker routine. 
  3405.  
  3406.  
  3407. ΓòÉΓòÉΓòÉ 6.2.2.6. RTINIT ΓòÉΓòÉΓòÉ
  3408.  
  3409. RTINIT initializes data structures and the Realtime Clock device. 
  3410.  
  3411.  
  3412. ΓòÉΓòÉΓòÉ 6.2.2.7. RTINIT2 ΓòÉΓòÉΓòÉ
  3413.  
  3414. There must be a delay hooking IRQ0 until after loadable device drivers/IFS are 
  3415. installed, because RIPL** with ETHERNET/PC-NET uses IRQ0. The kernel calls the 
  3416. loadable device driver init with command 0, which then hooks the IRQ0. The 
  3417. RTINIT2 routine is then invoked. 
  3418.  
  3419.  
  3420. ΓòÉΓòÉΓòÉ 7. Keyboard Device Driver ΓòÉΓòÉΓòÉ
  3421.  
  3422. The keyboard physical device driver is separated into two separate drivers: the 
  3423. device-independent driver (KBDBASE.SYS) and the device-dependent driver 
  3424. (IBMKBD.SYS). 
  3425.  
  3426. The device-independent driver (DI) is OS/2-specific.  It handles the monitors, 
  3427. screen groups, code paging, translation, and special needs processing.  It also 
  3428. communicates hardware changes with the device-dependent driver through an 
  3429. inter-device-driver communication (IDC) interface. 
  3430.  
  3431. The device-dependent (DD) driver handles the hardware interrupts and keyboard 
  3432. hardware commands.  It also passes scan codes and notifications of a hot plug 
  3433. to the device-independent driver IDC.  These drivers function on ISA/EISA or 
  3434. Micro Channel machines. 
  3435.  
  3436.  
  3437. ΓòÉΓòÉΓòÉ 7.1. Overview ΓòÉΓòÉΓòÉ
  3438.  
  3439. The physical keyboard device-dependent driver receives the make-and-break 
  3440. keystroke scan codes along with special keyboard hardware codes. The scan codes 
  3441. are stored until a completed key stroke is received. A key packet is then 
  3442. passed to the device-independent driver which performs one or more of the 
  3443. following operations: (see the following figure): 
  3444.  
  3445.    o  Translates the scan code to an ASCII character 
  3446.  
  3447.    o  Recognizes the key as a special key and signals the appropriate routine 
  3448.       for processing 
  3449.  
  3450.    o  Passes the translated scan code's character data record to the monitor 
  3451.       dispatcher for further custom processing by monitors 
  3452.  
  3453.    o  Places the translated scan code's character record into the appropriate 
  3454.       session's keyboard input buffer 
  3455.  
  3456.  In addition, the physical keyboard device driver supports code page switching. 
  3457.  The following is a result of this support: 
  3458.  
  3459.    o  Each handle can use one of two system-wide code pages. One code page is 
  3460.       current and the other code page can be switched to. Each handle can also 
  3461.       use the PC US 437 code page. 
  3462.  
  3463.    o  The code pages used are defined in CONFIG.SYS with the CODEPAGE and 
  3464.       DEVINFO commands. 
  3465.  
  3466.    o  Using the KEYB command, the language layout of the keyboard can be 
  3467.       changed. 
  3468.  
  3469.    o  Code pages specified with the CODEPAGE command in CONFIG.SYS are for one 
  3470.       language only. However, it is possible that code page support for 
  3471.       different languages can result if default code pages are not accepted 
  3472.       during execution of the KEYB command. This can occur when attempting to 
  3473.       load translation tables in a non-supported code page for that language. 
  3474.  
  3475.    o  The user can control, by the KbdSetCp subsystem function or the CHCP 
  3476.       command, which of the two code pages is used in the translation of scan 
  3477.       codes. 
  3478.  
  3479.    o  Two subsystem functions support code page switching: 
  3480.  
  3481.            KbdSetCp - Set to an installed code page, which is loaded if 
  3482.            necessary. 
  3483.            KbdGetCp - Get the current in-use code page. 
  3484.  
  3485.    o  KbdSetCustXt adds a custom code page option. 
  3486.  
  3487.    o  KbdXlate translates a scan code. 
  3488.  
  3489.    o  KbdSetCp, KbdGetCp, and KbdXlate can be replaced in the subsystem by the 
  3490.       use of the KbdRegister function. 
  3491.  
  3492.    o  Code page number, Language ID of the translation table, Subcountry ID, 
  3493.       language default table indicator, and keyboard type indicator can all be 
  3494.       found in the Translation table header of each country's keyboard layout. 
  3495.       For more information, refer to "Set Code Page" (Function 50h), which can 
  3496.       be found in the OS/2 Physical Device Driver Reference. 
  3497.  
  3498.  The physical keyboard device driver is the interface between the physical 
  3499.  keyboard and applications as shown in the following figure. 
  3500.  
  3501.  (1)       is part of the physical device driver interrupt handler. 
  3502.  
  3503.  (2)       is part of the physical device driver strategy routine. 
  3504.  
  3505.  (3)       is part of the base subsystem/router. 
  3506.  
  3507.  
  3508. ΓòÉΓòÉΓòÉ 7.2. Keyboard Initialization ΓòÉΓòÉΓòÉ
  3509.  
  3510. The device-independent driver (KBDBASE.SYS) loads prior to CONFIG.SYS, and the 
  3511. device-dependent driver (IBMKBD.SYS) is loaded as a BASEDEV= in CONFIG.SYS. 
  3512. IBMKBD.SYS uses a DEVHELP_ATTACHDD call to get the address of KBDBASE.SYS.  The 
  3513. device-dependent driver then registers with the device-independent driver so 
  3514. that the appropriate inter-device-driver communication (IDC) can occur. 
  3515.  
  3516.  
  3517. ΓòÉΓòÉΓòÉ 7.3. Keyboard Run-Time Operation ΓòÉΓòÉΓòÉ
  3518.  
  3519. When a session is started, a default logical keyboard already exists. This 
  3520. keyboard is identified to the subsystem by a zero handle. Any program can share 
  3521. the keyboard by using Handle 0. If multiple programs use the default keyboard 
  3522. they must coordinate their access to it. The default keyboard logically 
  3523. terminates when the session terminates. 
  3524.  
  3525. If a program wants a logical keyboard separate from the default logical 
  3526. keyboard, it issues a KbdOpen. This open creates a new logical keyboard, but 
  3527. does not make the physical-to-logical bond. As a result of an open, a handle 
  3528. unique within a process is returned to the caller, which is later used to 
  3529. identify the logical keyboard. The handle ownership is tied to the process; 
  3530. handles are not inherited. Use of KbdOpen does not prohibit the process from 
  3531. using the default keyboard. 
  3532.  
  3533. To make the physical-to-logical bond, the process issues the KbdGetFocus using 
  3534. the handle which identifies the logical keyboard. When the bond is made, the 
  3535. logical keyboard can receive keystrokes. Note that type-ahead keystrokes are 
  3536. not possible before the bond is made. The keyboard API can be used only when 
  3537. the bond is made, or with Handle 0 when no other handle has the bond. 
  3538.  
  3539. The bond represents a foreground keyboard (one physical-to-logical bond exists 
  3540. for each session). This is the default or a created logical keyboard. To break 
  3541. the bond, issue a KbdFreeFocus call. If other threads have a KbdGetFocus 
  3542. outstanding, the thread having the highest priority gets the bond. If there are 
  3543. no KbdGetFocus calls outstanding, the physical keyboard reverts to the default 
  3544. keyboard. 
  3545.  
  3546. A logical keyboard is destroyed with a KbdClose. The close frees the focus, 
  3547. flushes the buffer, and deallocates the KCB and related memory. The close is 
  3548. done by the process kill mechanism, if it is not performed by the program. 
  3549.  
  3550.  
  3551. ΓòÉΓòÉΓòÉ 7.3.1. Keystroke Monitors ΓòÉΓòÉΓòÉ
  3552.  
  3553. Some applications need to view the raw keystrokes as they arrive from the 
  3554. keyboard at interrupt time. These applications might consume, modify, or 
  3555. replace keystrokes. This is made possible by the keystroke monitor function. 
  3556.  
  3557. An application operating with the OS/2 system cannot register a keyboard 
  3558. monitor for a Presentation Manager session. When DosMonReg is issued with 
  3559. keyboard devices, the INDEX parameter indicates which OS/2 session, requested 
  3560. by the caller, is to register the monitor. The INDEX parameter indicates an 
  3561. OS/2 session from 0-15. (For more information on DevHlp_DosGetInfoSeg, refer to 
  3562. the OS/2 Physical Device Driver Reference.) 
  3563.  
  3564. An INDEX parameter value of -1 indicates that the session of the calling thread 
  3565. is being requested. If the caller requests either the Presentation Manager 
  3566. session or a DOS session, a MONITORS_NOT_SUPPORTED error is returned. For both 
  3567. of these sessions, the error return code is generated, regardless of the 
  3568. caller's specific usage of the INDEX parameter (explicit/implicit). 
  3569.  
  3570. The size of the physical keyboard device driver's monitor chain buffer is 16 
  3571. bytes. This is the value to be used in calculating the sizes of the 
  3572. input/output buffers required for the DosMonReg function. The physical keyboard 
  3573. device driver supports device monitors. This physical device driver passes its 
  3574. information to the monitors in packets. 
  3575.  
  3576. The following figure describes the content and format of keystroke monitor data 
  3577. packets. 
  3578.  
  3579.  
  3580.        ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  3581.        Γöé MonFlagWord:      Word Γöé
  3582.        Γö£ΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3583.        Γöé C ΓöéXlatedChar:    Byte Γöé
  3584.        Γöé h Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3585.        Γöé a ΓöéXlatedScan:    Byte Γöé
  3586.        Γöé r Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3587.        Γöé D ΓöéDBCS Status:   Byte Γöé
  3588.        Γöé a Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3589.        Γöé t ΓöéDBCS Shift:    Byte Γöé
  3590.        Γöé a Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3591.        Γöé   ΓöéShift State:   Word Γöé
  3592.        Γöé R Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3593.        Γöé e ΓöéMilliseconds: DWord Γöé
  3594.        Γöé c Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3595.        Γöé o Γöé                    Γöé
  3596.        Γöé r Γöé                    Γöé
  3597.        Γöé d Γöé                    Γöé
  3598.        Γö£ΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3599.        Γöé KbdDDFlagWord     Word Γöé
  3600.        ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  3601.  
  3602.  
  3603. ΓòÉΓòÉΓòÉ 7.3.1.1. MonFlagWord (Lower Byte) ΓòÉΓòÉΓòÉ
  3604.  
  3605. Monitor Dispatcher Flags. 
  3606.  
  3607.  Bits 7-3   RESERVED. Must be passed untouched for packets that are passed on. 
  3608.             Must be set to 0 on packets that are inserted by a monitor. 
  3609.  
  3610.  Bit 2      FLUSH. This is a flush packet. No other information in the packet 
  3611.             has meaning. Monitor must flush its internal buffers and pass the 
  3612.             packet quickly. 
  3613.  
  3614.  Bit 1      CLOSE. Not used by keystroke monitors. 
  3615.  
  3616.  Bit 0      OPEN. Not used by keystroke monitors. 
  3617.  
  3618.  
  3619. ΓòÉΓòÉΓòÉ 7.3.1.2. MonFlagWord (Upper Byte) ΓòÉΓòÉΓòÉ
  3620.  
  3621. Original Scan code, as read from the hardware. If 0, this packet was inserted 
  3622. for other reasons. See KbdDDFlagWord. Monitors pass this field untouched or put 
  3623. 0 here if they insert a packet. 
  3624.  
  3625.  
  3626. ΓòÉΓòÉΓòÉ 7.3.1.3. CharData Record ΓòÉΓòÉΓòÉ
  3627.  
  3628. For information regarding the Read Character Data Records IOCtl, refer to 
  3629. Function 74h, Category 04h in the OS/2 Physical Device Driver Reference. 
  3630.  
  3631.  
  3632. ΓòÉΓòÉΓòÉ 7.3.1.4. KbdDDFlagWord ΓòÉΓòÉΓòÉ
  3633.  
  3634. Has the following bits: 
  3635.  
  3636.  Bits 15-14    Available. These bits are available for communication between 
  3637.                monitors; they are not used by the physical device driver. The 
  3638.                monitor applications coordinate the use of these flags. 
  3639.  
  3640.  Bits 13-10    RESERVED=0. Monitors must pass these flags as is. They must set 
  3641.                these flags to 0 in packets they create. 
  3642.  
  3643.  Bit 9         ACCENTED. This key is translated using the previous key passed, 
  3644.                which is an accent key. Where an accent key is pressed, and the 
  3645.                following key does not use the accent, a packet containing the 
  3646.                accent character itself is first passed with this bit set. The 
  3647.                scan code field of MonFlagWord (see above) would be 0, 
  3648.                indicating a non-key generated record. A valid packet containing 
  3649.                that following keystroke is then passed without this bit set. 
  3650.  
  3651.  Bit 8         MULTIMAKE. The translation process sees this scan code as a 
  3652.                typematic repeat of a toggle key or a shift key. Because toggle 
  3653.                and shift keys only change state on the first make after each 
  3654.                key-break, no state information is changed. For example, the 
  3655.                NumLock toggle bit in the shift status WORD is not changed, even 
  3656.                though this can be the NumLock key. If this key is a valid 
  3657.                character, it does not go into the Keyboard Input Buffer (KIB) 
  3658.                once this bit is set. 
  3659.  
  3660.  Bit 7         SECONDARY. The scan code prior to the one in this packet was the 
  3661.                Secondary Key Prefix (see below). 
  3662.  
  3663.  Bit 6         KEY BREAK. This record is generated by the release (the break) 
  3664.                of the key involved. 
  3665.  
  3666.  Bits 5-0      KEY TYPE. This numeric field flags the physical device driver 
  3667.                and reports that this is a key that requires action. The number 
  3668.                in this field is filled in during the translation of the scan 
  3669.                code. The value allows the driver to act on keystrokes without 
  3670.                regard for what scan codes the keyboard uses or character codes 
  3671.                that the current translation process may be using. The following 
  3672.                values are currently defined: 
  3673.  
  3674.    o  Value for keys that are always placed in the KIB. Zero = no special 
  3675.       action, always place in KIB. 
  3676.  
  3677.    o  Values acted on prior to passing packet to monitors. Except for the final 
  3678.       keystroke of the DUMP key sequences, all of these values are passed on to 
  3679.       the monitors. They are not placed in the KIB. The XlatedChar and 
  3680.       XlatedScan fields are undefined for these values: 
  3681.  
  3682.            01h       ACK. This scan code is a keyboard acknowledge. Personal 
  3683.                      Computer IBM* AT* attached keyboards set this value on an 
  3684.                      FAh scan code. 
  3685.  
  3686.            02h       SECONDARY KEY PREFIX. This scan code is a prefix generated 
  3687.                      by the Enhanced Keyboard.  It indicates that the next scan 
  3688.                      code coming is one of the secondary keys that exists on 
  3689.                      that keyboard. Usually set on an E0h scan code or an E1h 
  3690.                      scan code. 
  3691.  
  3692.            03h       KBD OVERRUN. This scan code is an overrun indication from 
  3693.                      the keyboard. On an IBM Personal Computer AT-attached 
  3694.                      keyboard, this value would be set on an FFh scan code. 
  3695.  
  3696.            04h       RESEND. This scan code is a resend request from the 
  3697.                      keyboard. On an IBM Personal Computer AT-attached 
  3698.                      keyboard, this value would be set on an FEh scan code. 
  3699.  
  3700.            05h       REBOOT KEY. This scan code completes the multi-key restart 
  3701.                      sequence. On an IBM Personal Computer AT 
  3702.                      attached-keyboard, this value would be used when the 
  3703.                      Ctrl+Alt+Delete sequence is used. 
  3704.  
  3705.            06h       DUMP KEY. This scan code completes the multi-key Stand 
  3706.                      Alone Dump request sequence. On an IBM Personal Computer 
  3707.                      AT-attached keyboard, this value would be used on 
  3708.                      completion of the second consecutive press of 
  3709.                      Ctrl+Alt+NumLock or Ctrl+Alt+F10 without other keystrokes 
  3710.                      between the two presses. 
  3711.  
  3712.            07h-0Ah   See entries below. 
  3713.  
  3714.            0Bh       INVALID ACCENT COMBINATION. This scan code follows an 
  3715.                      accent scan code but the combination is not valid, and 
  3716.                      neither key is put in the KIB. 
  3717.  
  3718.                      Note:  This is set if the Canadian-French code pages are 
  3719.                             in use. 
  3720.  
  3721.            0Ch       SYSTEM-DEFINED HOT KEYS. 
  3722.  
  3723.            0D-0Fh    RESERVED. Treated as undefined. See entry 3Fh. 
  3724.  
  3725.    o  Values acted on after passing packet to monitors. Except where noted, 
  3726.       these values are placed in the KIB when the physical device driver is in 
  3727.       binary mode; they are not placed in the KIB when the physical device 
  3728.       driver is in ASCII mode. (Also listed are those that never get placed in 
  3729.       the KIB.) 
  3730.  
  3731.            07h       SHIFT KEY. This scan code translates as a shift key and 
  3732.                      affects the shift status fields of the CharData record, 
  3733.                      but does not generate a defined character. It is not 
  3734.                      placed in the KIB. The XlatedChar field is undefined. The 
  3735.                      scan code field is 0. 
  3736.  
  3737.            08h       PAUSE KEY. This scan code is translated as the key 
  3738.                      sequence meaning pause. On an IBM Personal Computer 
  3739.                      AT-attached keyboard, this value is used when the 
  3740.                      Ctrl+NumLock sequence is used. The key itself is not 
  3741.                      placed in the KIB. 
  3742.  
  3743.            09h       PSEUDO-PAUSE KEY. This scan code is translated into the 
  3744.                      value that is treated as the Pause key when the physical 
  3745.                      device driver is in ASCII mode. On most keyboards, this 
  3746.                      would be when the Ctrl+S combination is used. The key 
  3747.                      itself is not placed in the KIB. 
  3748.  
  3749.            0Ah       WAKE-UP KEY. This scan code follows a Pause key or 
  3750.                      Pseudo-Pause key, which causes the Pause state to end. The 
  3751.                      key itself is not placed in the KIB. 
  3752.  
  3753.            10h       ACCENT KEY. This scan code is translated and used as a key 
  3754.                      to alter the translation of the next key to come in. 
  3755.  
  3756.                      The packet containing this value is passed when the accent 
  3757.                      key is pressed, but it is not put into the KIB, unless the 
  3758.                      Accented bit is ON. The next key determines this decision. 
  3759.                      If the next key is one that can be accented, then it is 
  3760.                      passed by itself with the Accented bit ON. If that next 
  3761.                      key cannot be accented by this accent, then two packets 
  3762.                      are passed. The first contains the character to print for 
  3763.                      the accent itself.  It has the Accent key value and the 
  3764.                      Accented flag (which allows the packet to be put in the 
  3765.                      KIB). The second packet contains a regular translation of 
  3766.                      that following key. 
  3767.  
  3768.                      Note:  The two packets get passed for every language 
  3769.                             except Canadian-French. See entry 0Bh. 
  3770.  
  3771.            11h       BREAK KEY. This scan code is translated as the key 
  3772.                      sequence meaning break. On the IBM Personal Computer 
  3773.                      AT-attached keyboard, this value is used where the 
  3774.                      Ctrl+Break sequence is used. 
  3775.  
  3776.            12h       PSEUDO-BREAK KEY. This scan code is translated into the 
  3777.                      value that is treated as the Break key when the physical 
  3778.                      device driver is in ASCII mode. On most keyboards, this 
  3779.                      would be when the Ctrl+C combination is used. Notice that 
  3780.                      the event generated by this key is separate from the one 
  3781.                      generated by the Break key when in the binary mode. 
  3782.  
  3783.            13h       PRINT SCREEN KEY. This scan code is translated as the key 
  3784.                      sequence meaning Print Screen. On an IBM Personal Computer 
  3785.                      AT-attached keyboard, this value is used where the 
  3786.                      Shift+PrtSc sequence is used. 
  3787.  
  3788.            14h       PRINT ECHO KEY. This scan code is translated as the key 
  3789.                      sequence meaning Print Echo. This value is used where the 
  3790.                      Ctrl+PrtSc sequence is used. 
  3791.  
  3792.            15h       PSEUDO-PRINT ECHO KEY. This scan code is translated into 
  3793.                      the value that is treated as the Print Echo key when the 
  3794.                      physical device driver is in ASCII mode. On most 
  3795.                      keyboards, this would show as the Ctrl+P combination. 
  3796.  
  3797.            16h       PRINT-FLUSH KEY. This scan code is translated into the key 
  3798.                      sequence Print-Flush. This value is used where the 
  3799.                      Ctrl+Alt+PrtSc sequence is used. 
  3800.  
  3801.            17h-2Fh   RESERVED=0. Treated as undefined. See entry 3Fh. 
  3802.  
  3803.    o  Values for packets not generated by a keystroke: 
  3804.  
  3805.            30h-37h   RESERVED. 
  3806.  
  3807.            38h-3Eh   RESERVED. Treated as undefined. See entry 3Fh. 
  3808.  
  3809.    o  Value for keys the translation process does not recognize: 
  3810.  
  3811.            3Fh       UNDEFINED. This scan code, or its combination with the 
  3812.                      current shift state, is not recognized in the translation 
  3813.                      process. 
  3814.  
  3815.  
  3816. ΓòÉΓòÉΓòÉ 7.3.2. Special Key Processing ΓòÉΓòÉΓòÉ
  3817.  
  3818. The operating system examines each incoming keyboard character to determine if 
  3819. it should cause an asynchronous signal to be sent to some process (for example, 
  3820. Ctrl+C). The physical keyboard device driver responds to the keystrokes as 
  3821. shown in the following table: 
  3822.  
  3823. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  3824. ΓöéKeys           ΓöéMode           ΓöéEvent SignalledΓöéValue Placed inΓöé
  3825. Γöé               Γöé               Γöéor Signal      ΓöéKIB            Γöé
  3826. Γöé               Γöé               ΓöéHandler Called Γöé               Γöé
  3827. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3828. ΓöéCtrl+C         ΓöéBinary         ΓöéNothing        Γöé03h            Γöé
  3829. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3830. ΓöéCtrl+C         ΓöéASCII          ΓöéSIGINTR        ΓöéNothing        Γöé
  3831. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3832. ΓöéCtrl+S         ΓöéBinary         ΓöéNothing        Γöé13h            Γöé
  3833. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3834. ΓöéCtrl+S         ΓöéASCII          ΓöéEvent_CtrlScrLkΓöéNothing        Γöé
  3835. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3836. ΓöéCtrl+P         ΓöéBinary         ΓöéNothing        Γöé10h            Γöé
  3837. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3838. ΓöéCtrl+P         ΓöéASCII          ΓöéEvent_CtrlPrtScΓöéNothing        Γöé
  3839. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3840. ΓöéCtrl+Break     ΓöéBinary         ΓöéSIGBREAK       Γöé00:00h         Γöé
  3841. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3842. ΓöéCtrl+Break     ΓöéASCII          ΓöéSIGINTR        ΓöéNothing        Γöé
  3843. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3844. ΓöéCtrl+NumLock   ΓöéBinary         ΓöéEvent_CtrlScrLkΓöéNothing        Γöé
  3845. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3846. ΓöéCtrl+NumLock   ΓöéASCII          ΓöéEvent_CtrlScrLkΓöéNothing        Γöé
  3847. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3848. ΓöéCtrl+PrtSc     ΓöéBinary         ΓöéEvent_CtrlPrtScΓöéNothing        Γöé
  3849. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3850. ΓöéCtrl+PrtSc     ΓöéASCII          ΓöéEvent_CtrlPrtScΓöéNothing        Γöé
  3851. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3852. ΓöéPrtSc          ΓöéBinary         ΓöéEvent_ShftPrtScΓöéNothing        Γöé
  3853. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3854. ΓöéPrtSc          ΓöéASCII          ΓöéEvent_ShftPrtScΓöéNothing        Γöé
  3855. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  3856.  
  3857.    1. The value xxh represents the translated ASCII field in the character data 
  3858.       record. 
  3859.    2. The value xx:yyh represents the translated ASCII (that is, translated 
  3860.       scan code fields of the character data record). 
  3861.    3. Ctrl+NumLock has no effect on an IBM Enhanced keyboard; the Pause key 
  3862.       provides this function. 
  3863.  
  3864.  Other special keys are shown in the following table: 
  3865.  
  3866.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  3867.   ΓöéKey                 ΓöéMeaning                                 Γöé
  3868.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3869.   ΓöéHot Key             ΓöéChange sessions                         Γöé
  3870.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3871.   ΓöéCtrl+Alt+Del        ΓöéSystem IPL (restart)                    Γöé
  3872.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3873.   ΓöéCtrl+Alt+NumLock    ΓöéPressed twice means system dump         Γöé
  3874.   ΓöéCtrl+Alt+F10        Γöé                                        Γöé
  3875.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3876.   ΓöéPrtScr              ΓöéPrint the current display screen. (PrintΓöé
  3877.   Γöé                    ΓöéScreen on an IBM Enhanced keyboard)     Γöé
  3878.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  3879.  
  3880.  In addition to passing individual characters, the physical device driver must 
  3881.  specifically recognize the character (or character sequence, or other special 
  3882.  action) that indicates the special signal, or hot key, to the Session Manager. 
  3883.  When this event is recognized, the SendEvent Device Helper service is started. 
  3884.  
  3885.  The "System Hot Key" is defined by IOCtl Category 04h, Function 56h in the 
  3886.  OS/2 Physical Device Driver Reference. 
  3887.  
  3888.  
  3889. ΓòÉΓòÉΓòÉ 7.4. The Device-Dependent Driver ΓòÉΓòÉΓòÉ
  3890.  
  3891. The device-dependent driver uses a state machine to control the hardware 
  3892. interrupts.  The following is a diagram of the state machine: 
  3893.  
  3894.  NOCMDIPG  (No Command In Progress (*))          This is the base state.  It 
  3895.                                                  accepts scan codes as 
  3896.                                                  keystrokes and it passes them 
  3897.                                                  in a key packet to the DI 
  3898.                                                  driver.  It also checks for an 
  3899.                                                  override (FFh) scan code. 
  3900.                                                  This is usually the start of a 
  3901.                                                  hot plug sequence; therefore, 
  3902.                                                  move to the [HOTPLGPG] state. 
  3903.  
  3904.  RCVDE0SC (Received E0h Scan Code (*))           If [NOCMDIPG] receives an E0h 
  3905.                                                  scan code, it jumps to this 
  3906.                                                  state to await the remaining 
  3907.                                                  keystroke scan byte.  These 
  3908.                                                  two bytes are then passed to 
  3909.                                                  the DI driver in a key packet. 
  3910.                                                  Upon completion, return to the 
  3911.                                                  state [NOCMDIPG]. 
  3912.  
  3913.  HOTPLGPG (Notify Hot-Plug in Progress)          If [NOCMDIPG] receives FFh, it 
  3914.                                                  jumps to this state and waits 
  3915.                                                  for the next scan code. If the 
  3916.                                                  next scan code is an AAh, it 
  3917.                                                  starts the hot plug sequence. 
  3918.                                                  If not, then it beeps the 
  3919.                                                  keyboard and returns to 
  3920.                                                  [NOCMDIPG] state to pass the 
  3921.                                                  scan code to the DI driver. 
  3922.  
  3923.  SENTLEDC (Sent LED Command (!))                 The change LEDs command has 
  3924.                                                  been sent to the keyboard and 
  3925.                                                  is now awaiting an ACK from 
  3926.                                                  the keyboard.  When one is 
  3927.                                                  received, send the new LED 
  3928.                                                  data byte to the keyboard and 
  3929.                                                  go to [SENTLEDD] to wait for 
  3930.                                                  an ACK. 
  3931.  
  3932.  SENTLEDD (Sent LED Data (!))                    The LED byte is sent to the 
  3933.                                                  keyboard and is awaiting an 
  3934.                                                  ACK. When one is received, go 
  3935.                                                  to [NOCMDIPG] and wait for the 
  3936.                                                  next scan code. 
  3937.  
  3938.  SENTTYPC (Sent Typematic Command (!))           The change type rate/delay 
  3939.                                                  command has been sent to the 
  3940.                                                  keyboard, and is now awaiting 
  3941.                                                  an ACK from the keyboard. When 
  3942.                                                  one is received, send the new 
  3943.                                                  type rate/delay data byte to 
  3944.                                                  the keyboard and go to 
  3945.                                                  [SENTTYPD] to wait for an ACK. 
  3946.  
  3947.  SENTTYPD (Sent Typematic Rate (!))              The new type rate/delay byte 
  3948.                                                  has been sent to the keyboard 
  3949.                                                  and is awaiting an ACK.  When 
  3950.                                                  one is received,  go to 
  3951.                                                  [NOCMDIPG] and wait for the 
  3952.                                                  next scan code. 
  3953.  
  3954.  SENTIDCM (Sent Read ID Command)                 The Read ID command has been 
  3955.                                                  sent to the keyboard, and is 
  3956.                                                  now awaiting an ACK from the 
  3957.                                                  keyboard.  When one is 
  3958.                                                  received, start a timer and go 
  3959.                                                  to [WAITIDB1] to await the 
  3960.                                                  first ID byte (go to 
  3961.                                                  [GTKBDCMD] upon timeout). 
  3962.  
  3963.  WAITIDB1 (Wait for First ID Byte)               The Read ID command has been 
  3964.                                                  sent and ACK has been 
  3965.                                                  received. The device driver is 
  3966.                                                  waiting for the first ID byte. 
  3967.                                                  When one is received, go to 
  3968.                                                  [WAITIDB2] to await the second 
  3969.                                                  ID byte. 
  3970.  
  3971.  WAITIDB2 (Wait for Second ID Byte)              The first ID byte has been 
  3972.                                                  received, and the driver is 
  3973.                                                  now waiting for the second ID 
  3974.                                                  byte.  When the byte has been 
  3975.                                                  received, request the 
  3976.                                                  controller command byte and go 
  3977.                                                  to [GTKBDCMD]. 
  3978.  
  3979.  GTKBDCMD (Get Controller Command Byte(!))       The device driver waits for 
  3980.                                                  the command byte from the 
  3981.                                                  keyboard controller. If the 
  3982.                                                  Scan-Code Set is set to 1, 
  3983.                                                  then the driver makes the 
  3984.                                                  request to change the 
  3985.                                                  Scan-Code Set.  If the 
  3986.                                                  Scan-Code Set is set to 2, 
  3987.                                                  then the driver goes to 
  3988.                                                  [SENTSCSC]. 
  3989.  
  3990.  SENTSCSC (Sent Out Scan-Code Set Change(!))     When the device driver 
  3991.                                                  receives an ACK, it sends out 
  3992.                                                  the correct Scan-Code Set to 
  3993.                                                  the keyboard and then goes to 
  3994.                                                  [SENTSCSD] to wait for an ACK. 
  3995.  
  3996.  SENTSCSD (Sent Out Correct Scan-Code Set(!))    The device driver is waiting 
  3997.                                                  for an ACK from the keyboard 
  3998.                                                  to acknowledge that it has 
  3999.                                                  completed the request.  To 
  4000.                                                  ensure that the type 
  4001.                                                  rate/delay is correct, send 
  4002.                                                  off the change type rate/delay 
  4003.                                                  command and go to [SENTTYPC]. 
  4004.  
  4005.  Note:  The state sequence from SENTIDCM to SENTSCSD should only occur during 
  4006.         init and after every Hot Plug as it is part of the setup routine. 
  4007.  
  4008.  (*) This state generates a keystroke packet. 
  4009.  (!) This state starts a timer that resets the state machine and flags an 
  4010.  error, if time runs out. 
  4011.  
  4012.  
  4013. ΓòÉΓòÉΓòÉ 7.5. Building the Physical Keyboard Device Driver ΓòÉΓòÉΓòÉ
  4014.  
  4015. To build the physical keyboard device driver, you must do the following: 
  4016.  
  4017.    1. Ensure that the TOOLS directory in the IBM Device Driver Source Kit for 
  4018.       OS/2 is part of the current path. 
  4019.  
  4020.    2. Create NMAKE using the following Make files provided in the device 
  4021.       driver: 
  4022.  
  4023.         o  SRC\DEV\KBD\KBDBASE\MAKEFILE 
  4024.  
  4025.         o  SRC\DEV\KBD\IBMKBD\MAKEFILE 
  4026.  
  4027.            For example: 
  4028.  
  4029.                       ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4030.  
  4031.  
  4032.                                CD\DDK\SRC\DEV\KBD\KBDBASE\NMAKE
  4033.  
  4034.                       ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4035.  
  4036.  
  4037. ΓòÉΓòÉΓòÉ 8. Keyboard Inter-Device-Driver Communication Interfaces ΓòÉΓòÉΓòÉ
  4038.  
  4039. This chapter describes the inter-device-driver communication (IDC) interfaces 
  4040. for the IBM keyboard device drivers provided by the OS/2 operating system - 
  4041. both device-independent to device-dependent and device-dependent to 
  4042. device-independent. 
  4043.  
  4044. The division of the keyboard device driver has allowed new functions to be 
  4045. included that were not previously available. These functions are found in the 
  4046. following IDC functions. 
  4047.  
  4048. Note:  If an independent-device driver changes the state of one of the drivers 
  4049.        by making an IDC call, it is not always reflected in the other driver. 
  4050.        For example, if a driver changes the state of the LEDs in the 
  4051.        device-dependent (DD) driver, the change will not be reflected in the 
  4052.        device-independent (DI) driver and the device-independent driver might 
  4053.        change the LEDs to another state at any time. 
  4054.  
  4055.  
  4056. ΓòÉΓòÉΓòÉ 8.1. Device-Independent Supplied IDC's ΓòÉΓòÉΓòÉ
  4057.  
  4058. The following are the device-independent IDC functions. 
  4059.  
  4060. Note:  For compatibility purposes, the data segment should not be changed by 
  4061.        the dependent-device driver. The device-independent driver will load up 
  4062.        the correct data segment required. 
  4063.  
  4064.  The following are the device-independent IDC functions that are currently 
  4065.  available. 
  4066.  
  4067.  00        Open 
  4068.  01        Close 
  4069.  02        Process Keystroke 
  4070.  03        Process Reinit 
  4071.  04        Pen Functions 
  4072.  
  4073.  
  4074. ΓòÉΓòÉΓòÉ 8.1.1. Open ΓòÉΓòÉΓòÉ
  4075.  
  4076. This function registers the device-dependent driver with the device-independent 
  4077. driver.  The independent-device driver will use this registry to notify 
  4078. device-dependent drivers of updates (such as LED, type rate/delay, and so on). 
  4079. If a driver does not want to be notified of updates, then it sends in a 0000h 
  4080. Code Segment value. 
  4081.  
  4082. Input: 
  4083.  
  4084. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4085.  
  4086.      Func: Open_IDC code (0000h)
  4087.      Var1: Code Offset of DD IDC routine
  4088.      Var2: Data Segment of DD Driver
  4089.      Var3: Code Segment of DD IDC routine
  4090.  
  4091. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4092.  
  4093. Output: 
  4094.  
  4095. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4096.  
  4097.      AX = Handle (0FFFFh=error, could not open)
  4098.  
  4099. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4100.  
  4101.  
  4102. ΓòÉΓòÉΓòÉ 8.1.2. Close ΓòÉΓòÉΓòÉ
  4103.  
  4104. This function deletes the driver from the registry. 
  4105.  
  4106. Input: 
  4107.  
  4108. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4109.  
  4110.      Func: Close_IDC code (0001h)
  4111.      Var1: NULL
  4112.      Var2: Data Segment of DD Driver
  4113.      Var3: Handle from Open Call
  4114.  
  4115. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4116.  
  4117. Output: 
  4118.  
  4119. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4120.  
  4121. If the handle or data segment are incorrect, AX=0FFFFh is returned.
  4122.  
  4123. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4124.  
  4125.  
  4126. ΓòÉΓòÉΓòÉ 8.1.3. Process Keystroke ΓòÉΓòÉΓòÉ
  4127.  
  4128. This function is called by the device-dependent driver when it has a complete 
  4129. keystroke to report to the device-independent driver.  The buffer may be reused 
  4130. immediately after this call. 
  4131.  
  4132. Input: 
  4133.  
  4134. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4135.  
  4136.      Func: Process_Keystroke code (0002h)
  4137.      Var1: Data Offset of keystroke buffer
  4138.      Var2: Data Segment of keystroke buffer and DD Driver
  4139.      Var3: Handle from Open Call
  4140.  
  4141. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4142.  
  4143. Output: 
  4144.  
  4145. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4146.  
  4147. If the handle or data segment are incorrect, AX=0FFFFh is returned.
  4148.  
  4149. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4150.  
  4151.  
  4152. ΓòÉΓòÉΓòÉ 8.1.4. Process Reinit ΓòÉΓòÉΓòÉ
  4153.  
  4154. This IDC informs the device-independent driver that a reinit/hot-plug condition 
  4155. has occurred.  The device-independent driver now checks the attached keyboard 
  4156. type (and all that a keyboard change entails), and resends the appropriate LED 
  4157. state to the device-dependent driver. 
  4158.  
  4159. Input: 
  4160.  
  4161. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4162.  
  4163.      Func: Process_Reinit Code (0003h)
  4164.      Var1: NULL
  4165.      Var2: Data Segment of DD Driver
  4166.      Var3: Handle from Open call
  4167.  
  4168. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4169.  
  4170. Output: 
  4171.  
  4172. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4173.  
  4174. If the handle or data segment are incorrect, AX=0FFFFh is returned.
  4175.  
  4176. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4177.  
  4178.  
  4179. ΓòÉΓòÉΓòÉ 8.1.5. Pen Functions ΓòÉΓòÉΓòÉ
  4180.  
  4181. This function allows the keyboard device driver to create system keyboard 
  4182. events on behalf of the Pen for OS/2 subsystem. 
  4183.  
  4184. Input: 
  4185.  
  4186. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4187.  
  4188.      Func: Pen_Functions code (04XXh)
  4189.      Var1: Index to SINFO data structure
  4190.      Var2: Data Segment
  4191.      Var3: Internal Pen function variable
  4192.  
  4193. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4194.  
  4195. Output: 
  4196.  
  4197. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4198.  
  4199. Carry set if error occurs.
  4200.  
  4201. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4202.  
  4203.  
  4204. ΓòÉΓòÉΓòÉ 8.2. Device-Dependent Supplied IDC's ΓòÉΓòÉΓòÉ
  4205.  
  4206. The following are the device-dependent IDC functions. 
  4207.  
  4208.  00        Open 
  4209.  01        Close 
  4210.  02        Query Capabilities 
  4211.  03        Query Typematic & Delay 
  4212.  04        Query LEDs 
  4213.  05        Query ID codes 
  4214.  06        Query Disabled 
  4215.  07        Disable Keyboard 
  4216.  08        Enable Keyboard 
  4217.  09        Reset Hardware 
  4218.  0A        Set Typematic & Delay 
  4219.  0B        Set LEDs 
  4220.  0E        Send Generic Command 
  4221.  0F        Query Keyboard Ready 
  4222.  10        Flush Partial Keys 
  4223.  12        Save State 
  4224.  13        Restore State 
  4225.  87        Disable Keyboard (Interrupt Time) 
  4226.  88        Enable Keyboard (Interrupt Time) 
  4227.  89        Reset Hardware (Interrupt Time) 
  4228.  8A        Set Typematic & Delay (Interrupt Time) 
  4229.  8B        Set LEDs (Interrupt Time) 
  4230.  
  4231.  
  4232. ΓòÉΓòÉΓòÉ 8.2.1. Open ΓòÉΓòÉΓòÉ
  4233.  
  4234. The open function is not a prerequisite for implementing other functions within 
  4235. this device driver. 
  4236.  
  4237. Input: 
  4238.  
  4239. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4240.  
  4241.      Func: Open Device Driver code (0000h)
  4242.      Var1: NULL
  4243.      Var2: NULL
  4244.  
  4245. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4246.  
  4247. Output: 
  4248.  
  4249. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4250.  
  4251.      AX = 0:  Keyboard is ready for any command.
  4252.      0FFFFh:  Keyboard is busy.  OK to query, but thread will be
  4253.                     blocked or unexecuted (if interrupt time) if an
  4254.                     attempt is made to send a command to the keyboard
  4255.                     hardware.
  4256.  
  4257. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4258.  
  4259.  
  4260. ΓòÉΓòÉΓòÉ 8.2.2. Close ΓòÉΓòÉΓòÉ
  4261.  
  4262. This function is null and is used for compatibility purposes only. 
  4263.  
  4264. Input: 
  4265.  
  4266. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4267.  
  4268.      Func: Close Device Driver code (0001h)
  4269.      Var1: NULL
  4270.      Var2: NULL
  4271.  
  4272. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4273.  
  4274. Output: 
  4275.  
  4276. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4277.  
  4278. None.
  4279.  
  4280. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4281.  
  4282.  
  4283. ΓòÉΓòÉΓòÉ 8.2.3. Query Capabilities ΓòÉΓòÉΓòÉ
  4284.  
  4285. This request is issued by the device-independent driver to find out what 
  4286. capabilities the attached driver has. 
  4287.  
  4288. Input: 
  4289.  
  4290. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4291.  
  4292.      Func: Query_Capabilities code (0002h)
  4293.      Var1: CapStruc buffer address offset
  4294.      Var2: CapStruc buffer address segment
  4295.  
  4296. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4297.  
  4298. Output: 
  4299.  
  4300. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4301.  
  4302.      AX = 0 (and structure is filled in)
  4303.  
  4304. struct CapStruc {
  4305.      USHORT  DevFlags;
  4306.      USHORT  KeyCount;
  4307.      USHORT  MaxTypa;
  4308.      USHORT  MinTypa;
  4309.      USHORT  MaxDelay;
  4310.      USHORT  MinDelay;
  4311. }
  4312.  
  4313.      Device Flags:  0000 0000 0ccc 00ba
  4314.                                     
  4315.                                     ╤à True Keyboard
  4316.                                     ╤à╤à Hotplug Detection
  4317.                                  ╤à╤à╤à╤à╤à Number of LEDs (0-7)
  4318.      Device Flags:  0000 0000 0ccc 00ba
  4319.                                  Γöé   ΓöéΓöé
  4320.                                  Γöé   ΓöéΓööΓöÇ True Keyboard
  4321.                                  Γöé   ΓööΓöÇΓöÇ Hotplug Detection
  4322.                                  ΓööΓöÇΓöÇΓöÇΓöÇΓöÇ Number of LEDs (0-7)
  4323.  
  4324. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4325.  
  4326.  
  4327. ΓòÉΓòÉΓòÉ 8.2.4. Query Typematic Rate and Delay ΓòÉΓòÉΓòÉ
  4328.  
  4329. This function queries the current type rate and delay of the keyboard hardware. 
  4330.  
  4331. Input: 
  4332.  
  4333. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4334.  
  4335.      Func: Query_Typematic code (0003h)
  4336.      Var1: NULL
  4337.      Var2: NULL
  4338.  
  4339. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4340.  
  4341. Output: 
  4342.  
  4343. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4344.  
  4345.      AX = Bits 15-7 -> Reserved
  4346.           Bits 6-5  -> Delay value in milliseconds
  4347.                         (values in binary)
  4348.                         00 - 250
  4349.                         01 - 500
  4350.                         10 - 750
  4351.                         11 - 1000
  4352.           Bits 4-0  -> Rate value in characters per second
  4353.                           (values in binary)
  4354.                           00000 - 30.0         10000 - 7.5
  4355.                           00001 - 26.7         10001 - 6.7
  4356.                           00010 - 24.0         10010 - 6.0
  4357.                           00011 - 21.8         10011 - 5.5
  4358.                           00100 - 20.0         10100 - 5.0
  4359.                           00101 - 18.5         10101 - 4.6
  4360.                           00110 - 17.1         10110 - 4.3
  4361.                           00111 - 16.0         10111 - 4.0
  4362.                           01000 - 15.0         11000 - 3.7
  4363.                           01001 - 13.3         11001 - 3.3
  4364.                           01010 - 12.0         11010 - 3.0
  4365.                           01011 - 10.9         11011 - 2.7
  4366.                           01100 - 10.0         11100 - 2.5
  4367.                           01101 - 9.2          11101 - 2.3
  4368.                           01110 - 8.6          11110 - 2.1
  4369.                           01111 - 8.0          11111 - 2.0
  4370.  
  4371. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4372.  
  4373.  
  4374. ΓòÉΓòÉΓòÉ 8.2.5. Query LEDs ΓòÉΓòÉΓòÉ
  4375.  
  4376. This function queries the current LED state of the keyboard hardware. 
  4377.  
  4378. Input: 
  4379.  
  4380. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4381.  
  4382.      Func: Query_LEDs code (0004h)
  4383.      Var1: NULL
  4384.      Var2: NULL
  4385.  
  4386. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4387.  
  4388. Output: 
  4389.  
  4390. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4391.  
  4392.      AX = Bits 15 to  3 - Reserved
  4393.           Bit 2         - CapsLock
  4394.           Bit 1         - NumLock
  4395.           Bit 0         - ScrollLock
  4396.  
  4397. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4398.  
  4399.  
  4400. ΓòÉΓòÉΓòÉ 8.2.6. Query ID Codes ΓòÉΓòÉΓòÉ
  4401.  
  4402. This function queries the current ID of the keyboard hardware. 
  4403.  
  4404. Input: 
  4405.  
  4406. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4407.  
  4408.      Func: Query_ID (0005h)
  4409.      Var1: IDstruc buffer address offset
  4410.      Var2: IDstruc buffer address segment
  4411.  
  4412. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4413.  
  4414. Output: 
  4415.  
  4416. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4417.  
  4418.      AX = key count (88/101/122/etc), 0=undetermined (IDstruc buffer is
  4419. filled in, also).
  4420.  
  4421. struc IDstruc {
  4422.      USHORT idlen;          /* length of returned ID code         */
  4423.      UCHAR idbytes[8];      /* buffer for ID bytes               */
  4424.  }
  4425.  
  4426. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4427.  
  4428.  
  4429. ΓòÉΓòÉΓòÉ 8.2.7. Query Disabled ΓòÉΓòÉΓòÉ
  4430.  
  4431. This function queries if the keyboard hardware is disabled. 
  4432.  
  4433. Input: 
  4434.  
  4435. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4436.  
  4437.      Func: Query_Disabled (0006h)
  4438.      Var1: NULL
  4439.      Var2: NULL
  4440.  
  4441. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4442.  
  4443. Output: 
  4444.  
  4445. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4446.  
  4447.      AX = Disabled Flag (0 enabled, 0FFFFh disabled)
  4448.  
  4449. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4450.  
  4451.  
  4452. ΓòÉΓòÉΓòÉ 8.2.8. Disable Keyboard ΓòÉΓòÉΓòÉ
  4453.  
  4454. This function disables the keyboard and does not allow keystrokes to be 
  4455. accepted. 
  4456.  
  4457. Input: 
  4458.  
  4459. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4460.  
  4461.      Func: Disable_Keyboard (0007h)+[Interrupt Time +80h]
  4462.  
  4463.      Var1: NULL
  4464.      Var2: NULL
  4465.  
  4466. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4467.  
  4468. Output: 
  4469.  
  4470. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4471.  
  4472.      AX = Disable Function (0 was already disabled, 1 disabled)
  4473.  
  4474. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4475.  
  4476.  
  4477. ΓòÉΓòÉΓòÉ 8.2.9. Enable Keyboard ΓòÉΓòÉΓòÉ
  4478.  
  4479. This function enables the keyboard and allows keystrokes to be accepted. 
  4480.  
  4481. Input: 
  4482.  
  4483. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4484.  
  4485.      Func: Enable_Keyboard (0008h)+[Interrupt Time +80h]
  4486.      Var1: NULL
  4487.      Var2: NULL
  4488.  
  4489. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4490.  
  4491. Output: 
  4492.  
  4493. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4494.  
  4495.      AX=0FFFFh if error occurs.
  4496.  
  4497. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4498.  
  4499.  
  4500. ΓòÉΓòÉΓòÉ 8.2.10. Reset Hardware ΓòÉΓòÉΓòÉ
  4501.  
  4502. This function is issued when the device-independent portion wants to place the 
  4503. physical hardware into a known, reset state.  This call should reset the 
  4504. physical keyboard and the attaching device (Kbd section of 8042). 
  4505.  
  4506. Input: 
  4507.  
  4508. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4509.  
  4510.      Func: Reset_Hardware (0009h)+[Interrupt Time +80h]
  4511.      Var1: NULL
  4512.      Var2: NULL
  4513.  
  4514. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4515.  
  4516. Output: 
  4517.  
  4518. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4519.  
  4520.      AX=0FFFFh if error occurs.
  4521.  
  4522. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4523.  
  4524.  
  4525. ΓòÉΓòÉΓòÉ 8.2.11. Set Typematic Rate and Delay ΓòÉΓòÉΓòÉ
  4526.  
  4527. This function sets the keyboard hardware to a specified type rate and delay. 
  4528.  
  4529. Input: 
  4530.  
  4531. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4532.  
  4533.      Func: Set_Typematic code (000Ah)+[Interrupt Time +80h]
  4534.      Var1: Parameter word
  4535.      Var2: NULL
  4536.  
  4537. Parameter word:
  4538.      AX = Bits 15-7 -> Reserved (must be set to zero)
  4539.           Bits 6-5  -> Delay value in milliseconds
  4540.                         (values in binary)
  4541.                         00 - 250
  4542.                         01 - 500
  4543.                         10 - 750
  4544.                         11 - 1000
  4545.           Bits 4-0  -> Rate value in characters per second
  4546.                           (values in binary)
  4547.                           00000 - 30.0         10000 - 7.5
  4548.                           00001 - 26.7         10001 - 6.7
  4549.                           00010 - 24.0         10010 - 6.0
  4550.                           00011 - 21.8         10011 - 5.5
  4551.                           00100 - 20.0         10100 - 5.0
  4552.                           00101 - 18.5         10101 - 4.6
  4553.                           00110 - 17.1         10110 - 4.3
  4554.                           00111 - 16.0         10111 - 4.0
  4555.                           01000 - 15.0         11000 - 3.7
  4556.                           01001 - 13.3         11001 - 3.3
  4557.                           01010 - 12.0         11010 - 3.0
  4558.                           01011 - 10.9         11011 - 2.7
  4559.                           01100 - 10.0         11100 - 2.5
  4560.                           01101 - 9.2          11101 - 2.3
  4561.                           01110 - 8.6          11110 - 2.1
  4562.                           01111 - 8.0          11111 - 2.0
  4563.  
  4564. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4565.  
  4566. Output: 
  4567.  
  4568. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4569.  
  4570.      AX=0FFFFh if error occurs.
  4571.  
  4572. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4573.  
  4574.  
  4575. ΓòÉΓòÉΓòÉ 8.2.12. Set LEDs ΓòÉΓòÉΓòÉ
  4576.  
  4577. This function sets the state of the keyboard LEDs.  Bits 0-2 must set the LEDs 
  4578. labeled below.  The other bits of BL are reserved for future support of 
  4579. keyboards with greater LED counts. 
  4580.  
  4581. Input: 
  4582.  
  4583. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4584.  
  4585.      Func: Set_LEDs code (000Bh)+[Interrupt Time +80h]
  4586.      Var1: Parameter word
  4587.      Var2: NULL
  4588.  
  4589. Parameter word:
  4590.           bit 15 - bit  3 - Reserved
  4591.                    bit  2 - CapsLock
  4592.                    bit  1 - NumLock
  4593.                    bit  0 - ScrollLock
  4594.  
  4595. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4596.  
  4597. Output: 
  4598.  
  4599. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4600.  
  4601.      AX=0FFFFh if error occurs.
  4602.  
  4603. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4604.  
  4605.  
  4606. ΓòÉΓòÉΓòÉ 8.2.13. Send Generic Command ΓòÉΓòÉΓòÉ
  4607.  
  4608. This function will send any command to the keyboard. 
  4609.  
  4610. Input: 
  4611.  
  4612. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4613.  
  4614.      Func: Send_Generic code (000Eh)
  4615.      Var1: CmdStruc buffer address offset
  4616.      Var2: CmdStruc buffer address segment
  4617.  
  4618. struc CmdStruc {
  4619.      USHORT wait;             /* 1 wait for ACK between bytes, 0 no wait   */
  4620.      USHORT strlen;           /* length of following string                */
  4621.      UCHAR bytes[strlen];     /* string of bytes to send to keyboard       */
  4622. }
  4623.  
  4624. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4625.  
  4626. Output: 
  4627.  
  4628. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4629.  
  4630.      AX=0FFFFh if error occurs.
  4631.  
  4632. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4633.  
  4634.  
  4635. ΓòÉΓòÉΓòÉ 8.2.14. Query Keyboard Ready ΓòÉΓòÉΓòÉ
  4636.  
  4637. This function determines if the keyboard is currently executing a command or 
  4638. ready for input. 
  4639.  
  4640. Input: 
  4641.  
  4642. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4643.  
  4644.      Func: Query_Kbd_Rdy code (000Fh)
  4645.      Var1: NULL
  4646.      Var2: NULL
  4647.  
  4648. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4649.  
  4650. Output: 
  4651.  
  4652. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4653.  
  4654.      AX = Ready Flag (0=No, 0FFFFh=Yes)
  4655.  
  4656. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4657.  
  4658.  
  4659. ΓòÉΓòÉΓòÉ 8.2.15. Flush Partial Keys ΓòÉΓòÉΓòÉ
  4660.  
  4661. This request instructs the device-dependent keyboard driver to flush any 
  4662. partial keys it has accumulated and return to a quiescent state.  Because most 
  4663. physical drivers will be implemented using a finite state machine, this is a 
  4664. forced transition to the start state. 
  4665.  
  4666. Input: 
  4667.  
  4668. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4669.  
  4670.      Func: Flush_Partial code (0010h)
  4671.      Var1: NULL
  4672.      Var2: NULL
  4673.  
  4674. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4675.  
  4676. Output: 
  4677.  
  4678. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4679.  
  4680.      AX=0.
  4681.  
  4682. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4683.  
  4684.  
  4685. ΓòÉΓòÉΓòÉ 8.2.16. Save State ΓòÉΓòÉΓòÉ
  4686.  
  4687. This function informs device-dependent drivers to save all hardware state 
  4688. information for a later time.  This function is used for Advanced Power 
  4689. Management (APM) support. 
  4690.  
  4691. Input: 
  4692.  
  4693. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4694.  
  4695.      Func: Save_State code (0012h)
  4696.      Var1: NULL
  4697.      Var2: NULL
  4698.  
  4699. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4700.  
  4701. Output: 
  4702.  
  4703. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4704.  
  4705.      AX=0FFFFh if error occurs.
  4706.  
  4707. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4708.  
  4709.  
  4710. ΓòÉΓòÉΓòÉ 8.2.17. Restore State ΓòÉΓòÉΓòÉ
  4711.  
  4712. This function restores all hardware state information from the last save. If a 
  4713. Save State has not receded this call, the keyboard defaults to no LEDs lit, and 
  4714. a 0 type rate and delay. This function is used for Advanced Power Management 
  4715. (APM) support. 
  4716.  
  4717. Input: 
  4718.  
  4719. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4720.  
  4721.      Func: Save_State code (0013h)
  4722.      Var1: NULL
  4723.      Var2: NULL
  4724.  
  4725. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4726.  
  4727. Output: 
  4728.  
  4729. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4730.  
  4731.    AX=0FFFFh if error occurs. 
  4732.  
  4733. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  4734.  
  4735.  
  4736. ΓòÉΓòÉΓòÉ 9. Keyboard Device Driver Test Tool ΓòÉΓòÉΓòÉ
  4737.  
  4738. This chapter explains how to use the keyboard Device Driver Test Tool. 
  4739.  
  4740.  
  4741. ΓòÉΓòÉΓòÉ 9.1. Overview ΓòÉΓòÉΓòÉ
  4742.  
  4743. The keyboard Functional Verification Tests (FVTs) exercise the 
  4744. Inter-Device-Driver Communication (IDC)interfaces defined for the keyboard 
  4745. device drivers. The tests are implemented with the Device Driver Test Tool 
  4746. (DDTT) and a test device driver (TEST KBD.SYS). Each test is defined in a 
  4747. script file and these files can be modified using a text editor to create 
  4748. additional, specialized test cases. The test scripts give the user a repeatable 
  4749. set of tests that demonstrate keyboard function and performance. Errors are 
  4750. reported and isolated to a specific test sequence and API. 
  4751.  
  4752. User input and output from each keyboard test is performed by way of a separate 
  4753. Presentation Manager window.  Test cases log all information to a log files, 
  4754. clearly indicating the actual execution sequence in the event of errors. 
  4755.  
  4756.  
  4757. ΓòÉΓòÉΓòÉ 9.1.1. Keyboard Test Architecture ΓòÉΓòÉΓòÉ
  4758.  
  4759. The DDTT provides a common front-end parser for test-case scripts and also 
  4760. tests several devices and APIs. The following DDTT keyboard-specific files are 
  4761. required: 
  4762.  
  4763.    o  DDTKBD.DLL 
  4764.  
  4765.    o  KBD.GRA. 
  4766.  
  4767.    o  TESTKBD.SYS 
  4768.  
  4769.  The C++ source code for DDTKWD.DLL is available on the IBM Developer 
  4770.  Connection Device Driver Kit for OS/2 CD-ROM disc. 
  4771.  
  4772.  The following required, common components of the DDTT implement DDTT's 
  4773.  programmable parser and common test functions such as SET, LOOP, and PAUSE: 
  4774.  
  4775.    o  DDTT.EXE 
  4776.  
  4777.    o  DDTT.DLL 
  4778.  
  4779.    o  GLOBAL.DLL 
  4780.  
  4781.    o  GLOBAL.GRA 
  4782.  
  4783.  
  4784. ΓòÉΓòÉΓòÉ 9.1.2. Installation ΓòÉΓòÉΓòÉ
  4785.  
  4786. There are two directory structures utilizing test suites in the IBM Developer 
  4787. Connection Device Driver Kit for OS/2. The TESTCERT substructure contains the 
  4788. executables and test cases; the TESTTOOL substructure contains the files 
  4789. required to change and rebuild the code for a particular test DLL. 
  4790.  
  4791. The following procedure describes installation for running test cases. 
  4792.  
  4793.    1. Copy the executable and parallel port test case files from the IBM 
  4794.       Developer Connection Device Driver Kit for OS/2 CD-ROM disc to the hard 
  4795.       drive.  All the executable (.EXE and .DLL) files can reside in one 
  4796.       directory, such as \TESTKBD. Test case script and command files can also 
  4797.       be placed in this directory on the hard disk. If the target directory is 
  4798.       C:\TESTKBD and the E drive contains the information from the IBM 
  4799.       Developer Connection Device Driver Kit for OS/2 CD-ROM disc, then use the 
  4800.       following commands to copy the parallel port test suite: 
  4801.  
  4802.  
  4803.                [C:\]md testkbd
  4804.  
  4805.                [C:\]cd testkbd
  4806.  
  4807.                [C:\testkbd]copy e:\ddk_x86\testcert\inputout\function\keyboard\*
  4808.  
  4809.                [C:\testkbd]copy e:\ddk_x86\testcert\general\ddtt\*
  4810.  
  4811.    2. Add C:\TESTKBD to the LIBPATH and PATH in the CONFIG.SYS file. 
  4812.  
  4813.    3. To install the device driver, edit your system's CONFIG.SYS file and add 
  4814.       the following line: 
  4815.  
  4816.                DEVICE=c:\testkbd\testkbd.sys
  4817.  
  4818.    4. Reboot your machine so the new LIBPATH entry and DEVICE statement take 
  4819.       effect. 
  4820.  
  4821.  
  4822. ΓòÉΓòÉΓòÉ 9.1.3. Test Case-Execution ΓòÉΓòÉΓòÉ
  4823.  
  4824. To run one script file at a time, refer to Description of Test Cases for a 
  4825. description of each script file. Then, after determining which script file to 
  4826. run, type in DDTT followed by the script file name: 
  4827.  
  4828.    [C:\TESTKBD]DDTT QUERY.SCR
  4829.  
  4830. After the script has finished executing, CONTROL will transfer back to the OS/2 
  4831. Window. 
  4832.  
  4833.  
  4834. ΓòÉΓòÉΓòÉ 9.1.4. KBDDD.SYS Test Grammar Function Calls ΓòÉΓòÉΓòÉ
  4835.  
  4836. The following is a list of the KBDDD.SYS Test Grammar Function Calls: 
  4837.  
  4838.    o  KBD_OPEN 
  4839.    o  KBD_CLOSE 
  4840.    o  KBD_QUERY_CAPS 
  4841.    o  KBD_QUERY_TYPEMATIC 
  4842.    o  KBD_QUERY_LEDS 
  4843.    o  KBD_QUERY_IDS 
  4844.    o  KBD_QUERY_DISABLED 
  4845.    o  KBD_SEND_CMD 
  4846.    o  KBD_FLUSH 
  4847.    o  KBD_SAVE_STATE 
  4848.    o  KBD_RESTORE_STATE 
  4849.    o  KBD_DISABLE and KBD_DISABLE_I 
  4850.    o  KBD_ENABLE and KBD_ENABLE_I 
  4851.    o  KBD_RESET and KBD_RESET_I 
  4852.    o  KBD_OPEN_DI 
  4853.    o  KBD_CLOSE_DI 
  4854.    o  KBD_PROCESS_KEY 
  4855.    o  KBD_PROCESS_REINIT 
  4856.    o  KBD_PRINT_LAST_IDC 
  4857.  
  4858.  
  4859. ΓòÉΓòÉΓòÉ 9.1.4.1. KBD_OPEN ΓòÉΓòÉΓòÉ
  4860.  
  4861. This function opens the TESTKBD.SYS device driver and sends an open IDC to 
  4862. IBMKBD.SYS. 
  4863.  
  4864.  
  4865. ΓòÉΓòÉΓòÉ 9.1.4.1.1. Input Parameter Keywords ΓòÉΓòÉΓòÉ
  4866.  
  4867.  
  4868. None. 
  4869.  
  4870.  
  4871. ΓòÉΓòÉΓòÉ 9.1.4.1.2. Output Parameter Keywords ΓòÉΓòÉΓòÉ
  4872.  
  4873. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  4874. ΓöéKeyword             ΓöéType                ΓöéDescription         Γöé
  4875. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4876. ΓöéHANDLE              ΓöéNUM                 ΓöéHandle for          Γöé
  4877. Γöé                    Γöé                    ΓöéTESTKBD.SYS         Γöé
  4878. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  4879.  
  4880.  
  4881. ΓòÉΓòÉΓòÉ 9.1.4.1.3. Logged Data ΓòÉΓòÉΓòÉ
  4882.  
  4883.  
  4884. None. 
  4885.  
  4886.  
  4887. ΓòÉΓòÉΓòÉ 9.1.4.2. KBD_CLOSE ΓòÉΓòÉΓòÉ
  4888.  
  4889. This function sends a close IDC to KBDDD.SYS and closes the TESTKBD.SYS device 
  4890. driver. 
  4891.  
  4892.  
  4893. ΓòÉΓòÉΓòÉ 9.1.4.2.1. Input Parameter Keywords ΓòÉΓòÉΓòÉ
  4894.  
  4895. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  4896. ΓöéKeyword             ΓöéType                ΓöéDescription         Γöé
  4897. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4898. ΓöéHANDLE              ΓöéNUM                 ΓöéHandle for          Γöé
  4899. Γöé                    Γöé                    ΓöéTESTKBD.SYS         Γöé
  4900. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  4901.  
  4902.  
  4903. ΓòÉΓòÉΓòÉ 9.1.4.2.2. Output Parameter Keywords ΓòÉΓòÉΓòÉ
  4904.  
  4905.  
  4906. None. 
  4907.  
  4908.  
  4909. ΓòÉΓòÉΓòÉ 9.1.4.2.3. Logged Data ΓòÉΓòÉΓòÉ
  4910.  
  4911.  
  4912. None. 
  4913.  
  4914.  
  4915. ΓòÉΓòÉΓòÉ 9.1.4.3. KBD_QUERY_CAPS ΓòÉΓòÉΓòÉ
  4916.  
  4917. This function queries the capabilities of the keyboard. 
  4918.  
  4919.  
  4920. ΓòÉΓòÉΓòÉ 9.1.4.3.1. Input Parameter Keywords ΓòÉΓòÉΓòÉ
  4921.  
  4922. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  4923. ΓöéKeyword             ΓöéType                ΓöéDescription         Γöé
  4924. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4925. ΓöéHANDLE              ΓöéNUM                 ΓöéHandle for          Γöé
  4926. Γöé                    Γöé                    ΓöéTESTKBD.SYS         Γöé
  4927. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  4928.  
  4929.  
  4930. ΓòÉΓòÉΓòÉ 9.1.4.3.2. Output Parameter Keywords ΓòÉΓòÉΓòÉ
  4931.  
  4932. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  4933. ΓöéKeyword             ΓöéType                ΓöéDescription         Γöé
  4934. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4935. ΓöéMAXTYPA             ΓöéNUM                 ΓöéMax typematic rate  Γöé
  4936. Γöé                    Γöé                    Γöéselector (0-31)     Γöé
  4937. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4938. ΓöéMINTYPA             ΓöéNUM                 ΓöéMin typematic rate  Γöé
  4939. Γöé                    Γöé                    Γöéselector (0-31)     Γöé
  4940. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4941. ΓöéMAXDELAY            ΓöéNUM                 ΓöéMax delay value     Γöé
  4942. Γöé                    Γöé                    Γöéselector (0-3)      Γöé
  4943. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4944. ΓöéMINDELAY            ΓöéNUM                 ΓöéMin delay value     Γöé
  4945. Γöé                    Γöé                    Γöéselector (0-3)      Γöé
  4946. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4947. ΓöéKEYCOUNT            ΓöéNUM                 ΓöéNumber of keys      Γöé
  4948. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4949. ΓöéNUMLEDS             ΓöéNUM                 ΓöéNumber of LEDs      Γöé
  4950. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  4951.  
  4952.  
  4953. ΓòÉΓòÉΓòÉ 9.1.4.3.3. Logged Data ΓòÉΓòÉΓòÉ
  4954.  
  4955.  
  4956. Max typematic rate selector (0-31) 
  4957. Min typematic rate selector (0-31) 
  4958. Max delay value selector (0-3) 
  4959. Min delay value selector (0-3) 
  4960. Number of keys 
  4961. Number of LEDs 
  4962. (No)  Hotplug Detection 
  4963. (Not) True keyboard 
  4964.  
  4965.  
  4966. ΓòÉΓòÉΓòÉ 9.1.4.4. KBD_QUERY_TYPEMATIC ΓòÉΓòÉΓòÉ
  4967.  
  4968. This function queries the current typematic rate and delay of the keyboard. 
  4969.  
  4970.  
  4971. ΓòÉΓòÉΓòÉ 9.1.4.4.1. Input Parameter Keywords ΓòÉΓòÉΓòÉ
  4972.  
  4973. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  4974. ΓöéKeyword             ΓöéType                ΓöéDescription         Γöé
  4975. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4976. ΓöéHANDLE              ΓöéNUM                 ΓöéHandle for          Γöé
  4977. Γöé                    Γöé                    ΓöéTESTKBD.SYS         Γöé
  4978. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  4979.  
  4980.  
  4981. ΓòÉΓòÉΓòÉ 9.1.4.4.2. Output Parameter Keywords ΓòÉΓòÉΓòÉ
  4982.  
  4983. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  4984. ΓöéKeyword             ΓöéType                ΓöéDescription         Γöé
  4985. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4986. ΓöéTYPASEL             ΓöéNUM                 ΓöéTypematic rate      Γöé
  4987. Γöé                    Γöé                    Γöéselector (0-31)     Γöé
  4988. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  4989. ΓöéDELAYSEL            ΓöéNUM                 ΓöéDelay value selectorΓöé
  4990. Γöé                    Γöé                    Γöé(0-3)               Γöé
  4991. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  4992.  
  4993.  
  4994. ΓòÉΓòÉΓòÉ 9.1.4.4.3. Logged Data ΓòÉΓòÉΓòÉ
  4995.  
  4996.  
  4997. Typematic rate selector (0-31) 
  4998. Delay value selector (0-3) 
  4999.  
  5000.  
  5001. ΓòÉΓòÉΓòÉ 9.1.4.5. KBD_QUERY_LEDS ΓòÉΓòÉΓòÉ
  5002.  
  5003. This function queries to determine which LEDs are lit. 
  5004.  
  5005.  
  5006. ΓòÉΓòÉΓòÉ 9.1.4.5.1. Input Parameter Keywords ΓòÉΓòÉΓòÉ
  5007.  
  5008. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  5009. ΓöéKeyword             ΓöéType                ΓöéDescription         Γöé
  5010. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5011. ΓöéHANDLE              ΓöéNUM                 ΓöéHandle for          Γöé
  5012. Γöé                    Γöé                    ΓöéTESTKBD.SYS         Γöé
  5013. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  5014.  
  5015.  
  5016. ΓòÉΓòÉΓòÉ 9.1.4.5.2. Output Parameter Keywords ΓòÉΓòÉΓòÉ
  5017.  
  5018.  
  5019. None. 
  5020.  
  5021.  
  5022. ΓòÉΓòÉΓòÉ 9.1.4.5.3. Logged Data ΓòÉΓòÉΓòÉ
  5023.  
  5024.  
  5025. Scroll Lock is ON/OFF 
  5026. Num Lock is ON/OFF 
  5027. Caps Lock is ON/OFF 
  5028.  
  5029.  
  5030. ΓòÉΓòÉΓòÉ 9.1.4.6. KBD_QUERY_IDS ΓòÉΓòÉΓòÉ
  5031.  
  5032. This function queries the ID value and keycount of the keyboard. 
  5033.  
  5034.  
  5035. ΓòÉΓòÉΓòÉ 9.1.4.6.1. Input Parameter Keywords ΓòÉΓòÉΓòÉ
  5036.  
  5037. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  5038. ΓöéKeyword             ΓöéType                ΓöéDescription         Γöé
  5039. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5040. ΓöéHANDLE              ΓöéNUM                 ΓöéHandle for          Γöé
  5041. Γöé                    Γöé                    ΓöéTESTKBD.SYS         Γöé
  5042. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  5043.  
  5044.  
  5045. ΓòÉΓòÉΓòÉ 9.1.4.6.2. Output Parameter Keywords ΓòÉΓòÉΓòÉ
  5046.  
  5047. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  5048. ΓöéKeyword             ΓöéType                ΓöéDescription         Γöé
  5049. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5050. ΓöéKEYCOUNT            ΓöéNUM                 ΓöéNumber of keys      Γöé
  5051. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5052. ΓöéID                  ΓöéNUM                 ΓöéID code for keyboardΓöé
  5053. Γöé                    Γöé                    Γöéhardware            Γöé
  5054. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  5055.  
  5056.  
  5057. ΓòÉΓòÉΓòÉ 9.1.4.6.3. Logged Data ΓòÉΓòÉΓòÉ
  5058.  
  5059.  
  5060. Number of keys 
  5061. ID code for keyboard hardware 
  5062.  
  5063.  
  5064. ΓòÉΓòÉΓòÉ 9.1.4.7. KBD_QUERY_DISABLED ΓòÉΓòÉΓòÉ
  5065.  
  5066. This function queries to determine if the keyboard has been disabled. 
  5067.  
  5068.  
  5069. ΓòÉΓòÉΓòÉ 9.1.4.7.1. Input Parameter Keywords ΓòÉΓòÉΓòÉ
  5070.  
  5071. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  5072. ΓöéKeyword             ΓöéType                ΓöéDescription         Γöé
  5073. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5074. ΓöéHANDLE              ΓöéNUM                 ΓöéHandle for          Γöé
  5075. Γöé                    Γöé                    ΓöéTESTKBD.SYS         Γöé
  5076. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  5077.  
  5078.  
  5079. ΓòÉΓòÉΓòÉ 9.1.4.7.2. Output Parameter Keywords ΓòÉΓòÉΓòÉ
  5080.  
  5081.  
  5082. None. 
  5083.  
  5084.  
  5085. ΓòÉΓòÉΓòÉ 9.1.4.7.3. Logged Data ΓòÉΓòÉΓòÉ
  5086.  
  5087.  
  5088. Keyboard enabled or disabled 
  5089.  
  5090.  
  5091. ΓòÉΓòÉΓòÉ 9.1.4.8. KBD_QUERY_READY ΓòÉΓòÉΓòÉ
  5092.  
  5093. This function queries whether the keyboard is ready. 
  5094.  
  5095.  
  5096. ΓòÉΓòÉΓòÉ 9.1.4.8.1. Input Parameter Keywords ΓòÉΓòÉΓòÉ
  5097.  
  5098. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  5099. ΓöéKeyword             ΓöéType                ΓöéDescription         Γöé
  5100. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5101. ΓöéHANDLE              ΓöéNUM                 ΓöéHandle for          Γöé
  5102. Γöé                    Γöé                    ΓöéTESTKBD.SYS         Γöé
  5103. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  5104.  
  5105.  
  5106. ΓòÉΓòÉΓòÉ 9.1.4.8.2. Output Parameter Keywords ΓòÉΓòÉΓòÉ
  5107.  
  5108.  
  5109. None. 
  5110.  
  5111.  
  5112. ΓòÉΓòÉΓòÉ 9.1.4.8.3. Logged Data ΓòÉΓòÉΓòÉ
  5113.  
  5114.  
  5115. Keyboard ready or not ready 
  5116.  
  5117.  
  5118. ΓòÉΓòÉΓòÉ 9.1.4.9. KBD_SEND_CMD ΓòÉΓòÉΓòÉ
  5119.  
  5120. This function sends a generic command to the keyboard. 
  5121.  
  5122.  
  5123. ΓòÉΓòÉΓòÉ 9.1.4.9.1. Input Parameter Keywords ΓòÉΓòÉΓòÉ
  5124.  
  5125. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  5126. ΓöéKeyword             ΓöéType                ΓöéDescription         Γöé
  5127. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5128. ΓöéHANDLE              ΓöéNUM                 ΓöéHandle for          Γöé
  5129. Γöé                    Γöé                    ΓöéTESTKBD.SYS         Γöé
  5130. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5131. ΓöéCOMMAND             ΓöéSTRING              ΓöéCommand string      Γöé
  5132. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5133. ΓöéACK                 ΓöéNUM                 ΓöéNonzero if          Γöé
  5134. Γöé                    Γöé                    Γöéacknowledgement is  Γöé
  5135. Γöé                    Γöé                    Γöérequired            Γöé
  5136. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  5137.  
  5138.  
  5139. ΓòÉΓòÉΓòÉ 9.1.4.9.2. Output Parameter Keywords ΓòÉΓòÉΓòÉ
  5140.  
  5141.  
  5142. None. 
  5143.  
  5144.  
  5145. ΓòÉΓòÉΓòÉ 9.1.4.9.3. Logged Data ΓòÉΓòÉΓòÉ
  5146.  
  5147.  
  5148. None. 
  5149.  
  5150.  
  5151. ΓòÉΓòÉΓòÉ 9.1.4.10. KBD_FLUSH ΓòÉΓòÉΓòÉ
  5152.  
  5153. This function flushes partial keystrokes and returns the keyboard to a start 
  5154. state. 
  5155.  
  5156.  
  5157. ΓòÉΓòÉΓòÉ 9.1.4.10.1. Input Parameter Keywords ΓòÉΓòÉΓòÉ
  5158.  
  5159. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  5160. ΓöéKeyword             ΓöéType                ΓöéDescription         Γöé
  5161. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5162. ΓöéHANDLE              ΓöéNUM                 ΓöéHandle for          Γöé
  5163. Γöé                    Γöé                    ΓöéTESTKBD.SYS         Γöé
  5164. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  5165.  
  5166.  
  5167. ΓòÉΓòÉΓòÉ 9.1.4.10.2. Output Parameter Keywords ΓòÉΓòÉΓòÉ
  5168.  
  5169.  
  5170. None. 
  5171.  
  5172.  
  5173. ΓòÉΓòÉΓòÉ 9.1.4.10.3. Logged Data ΓòÉΓòÉΓòÉ
  5174.  
  5175.  
  5176. None. 
  5177.  
  5178.  
  5179. ΓòÉΓòÉΓòÉ 9.1.4.11. KBD_SAVE_STATE ΓòÉΓòÉΓòÉ
  5180.  
  5181. This function saves the keyboard state and is used by the Advanced Power 
  5182. Management System. 
  5183.  
  5184.  
  5185. ΓòÉΓòÉΓòÉ 9.1.4.11.1. Input Parameter Keywords ΓòÉΓòÉΓòÉ
  5186.  
  5187. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  5188. ΓöéKeyword             ΓöéType                ΓöéDescription         Γöé
  5189. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5190. ΓöéHANDLE              ΓöéNUM                 ΓöéHandle for          Γöé
  5191. Γöé                    Γöé                    ΓöéTESTKBD.SYS         Γöé
  5192. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  5193.  
  5194.  
  5195. ΓòÉΓòÉΓòÉ 9.1.4.11.2. Output Parameter Keywords ΓòÉΓòÉΓòÉ
  5196.  
  5197.  
  5198. None. 
  5199.  
  5200.  
  5201. ΓòÉΓòÉΓòÉ 9.1.4.11.3. Logged Data ΓòÉΓòÉΓòÉ
  5202.  
  5203.  
  5204. None. 
  5205.  
  5206.  
  5207. ΓòÉΓòÉΓòÉ 9.1.4.12. KBD_RESTORE_STATE ΓòÉΓòÉΓòÉ
  5208.  
  5209. This function restores the keyboard's saved state. This function is used by the 
  5210. Advanced Power Management System. 
  5211.  
  5212.  
  5213. ΓòÉΓòÉΓòÉ 9.1.4.12.1. Input Parameter Keywords ΓòÉΓòÉΓòÉ
  5214.  
  5215. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  5216. ΓöéKeyword             ΓöéType                ΓöéDescription         Γöé
  5217. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5218. ΓöéHANDLE              ΓöéNUM                 ΓöéHandle for          Γöé
  5219. Γöé                    Γöé                    ΓöéTESTKBD.SYS         Γöé
  5220. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  5221.  
  5222.  
  5223. ΓòÉΓòÉΓòÉ 9.1.4.12.2. Output Parameter Keywords ΓòÉΓòÉΓòÉ
  5224.  
  5225.  
  5226. None. 
  5227.  
  5228.  
  5229. ΓòÉΓòÉΓòÉ 9.1.4.12.3. Logged Data ΓòÉΓòÉΓòÉ
  5230.  
  5231.  
  5232. None. 
  5233.  
  5234.  
  5235. ΓòÉΓòÉΓòÉ 9.1.5. Paired Functions ΓòÉΓòÉΓòÉ
  5236.  
  5237. The following functions are paired according to interrupt-mode processing and 
  5238. non-interrupt mode processing.  If the function is an interrupt-mode function, 
  5239. it has a _I suffix.  The functionality of the pairs of functions is identical 
  5240. whether the _I suffix is there or not. 
  5241.  
  5242.  
  5243. ΓòÉΓòÉΓòÉ 9.1.5.1. KBD_DISABLE and KBD_DISABLE_I ΓòÉΓòÉΓòÉ
  5244.  
  5245. These functions disable the keyboard. 
  5246.  
  5247.  
  5248. ΓòÉΓòÉΓòÉ 9.1.5.1.1. Input Parameter Keywords ΓòÉΓòÉΓòÉ
  5249.  
  5250. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  5251. ΓöéKeyword             ΓöéType                ΓöéDescription         Γöé
  5252. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5253. ΓöéHANDLE              ΓöéNUM                 ΓöéHandle for          Γöé
  5254. Γöé                    Γöé                    ΓöéTESTKBD.SYS         Γöé
  5255. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  5256.  
  5257.  
  5258. ΓòÉΓòÉΓòÉ 9.1.5.1.2. Output Parameter Keywords ΓòÉΓòÉΓòÉ
  5259.  
  5260.  
  5261. None. 
  5262.  
  5263.  
  5264. ΓòÉΓòÉΓòÉ 9.1.5.1.3. Logged Data ΓòÉΓòÉΓòÉ
  5265.  
  5266.  
  5267. None. 
  5268.  
  5269.  
  5270. ΓòÉΓòÉΓòÉ 9.1.5.2. KBD_ENABLE and KBD_ENABLE_I ΓòÉΓòÉΓòÉ
  5271.  
  5272. These functions enable the keyboard. 
  5273.  
  5274.  
  5275. ΓòÉΓòÉΓòÉ 9.1.5.2.1. Input Parameter Keywords ΓòÉΓòÉΓòÉ
  5276.  
  5277. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  5278. ΓöéKeyword             ΓöéType                ΓöéDescription         Γöé
  5279. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5280. ΓöéHANDLE              ΓöéNUM                 ΓöéHandle for          Γöé
  5281. Γöé                    Γöé                    ΓöéTESTKBD.SYS         Γöé
  5282. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  5283.  
  5284.  
  5285. ΓòÉΓòÉΓòÉ 9.1.5.2.2. Output Parameter Keywords ΓòÉΓòÉΓòÉ
  5286.  
  5287.  
  5288. None. 
  5289.  
  5290.  
  5291. ΓòÉΓòÉΓòÉ 9.1.5.2.3. Logged Data ΓòÉΓòÉΓòÉ
  5292.  
  5293.  
  5294. None. 
  5295.  
  5296.  
  5297. ΓòÉΓòÉΓòÉ 9.1.5.3. KBD_RESET and KBD_RESET_I ΓòÉΓòÉΓòÉ
  5298.  
  5299. These functions reset the keyboard. 
  5300.  
  5301.  
  5302. ΓòÉΓòÉΓòÉ 9.1.5.3.1. Input Parameter Keywords ΓòÉΓòÉΓòÉ
  5303.  
  5304. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  5305. ΓöéKeyword             ΓöéType                ΓöéDescription         Γöé
  5306. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5307. ΓöéHANDLE              ΓöéNUM                 ΓöéHandle for          Γöé
  5308. Γöé                    Γöé                    ΓöéTESTKBD.SYS         Γöé
  5309. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  5310.  
  5311.  
  5312. ΓòÉΓòÉΓòÉ 9.1.5.3.2. Output Parameter Keywords ΓòÉΓòÉΓòÉ
  5313.  
  5314.  
  5315. None. 
  5316.  
  5317.  
  5318. ΓòÉΓòÉΓòÉ 9.1.5.3.3. Logged Data ΓòÉΓòÉΓòÉ
  5319.  
  5320.  
  5321. None. 
  5322.  
  5323.  
  5324. ΓòÉΓòÉΓòÉ 9.1.5.4. KBD_SET_TYPEMATIC and KBD_SET_TYPEMATIC_I ΓòÉΓòÉΓòÉ
  5325.  
  5326. These functions set the typematic rate and delay of the keyboard. 
  5327.  
  5328.  
  5329. ΓòÉΓòÉΓòÉ 9.1.5.4.1. Input Parameter Keywords ΓòÉΓòÉΓòÉ
  5330.  
  5331. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  5332. ΓöéKeyword             ΓöéType                ΓöéDescription         Γöé
  5333. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5334. ΓöéHANDLE              ΓöéNUM                 ΓöéHandle for          Γöé
  5335. Γöé                    Γöé                    ΓöéTESTKBD.SYS         Γöé
  5336. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5337. ΓöéTYPASEL             ΓöéNUM                 ΓöéTypematic rate      Γöé
  5338. Γöé                    Γöé                    Γöéselector (0-31)     Γöé
  5339. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5340. ΓöéDELAYSEL            ΓöéNUM                 ΓöéDelay value selectorΓöé
  5341. Γöé                    Γöé                    Γöé(0-3)               Γöé
  5342. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  5343.  
  5344.  
  5345. ΓòÉΓòÉΓòÉ 9.1.5.4.2. Output Parameter Keywords ΓòÉΓòÉΓòÉ
  5346.  
  5347.  
  5348. None. 
  5349.  
  5350.  
  5351. ΓòÉΓòÉΓòÉ 9.1.5.4.3. Logged Data ΓòÉΓòÉΓòÉ
  5352.  
  5353.  
  5354. None. 
  5355.  
  5356.  
  5357. ΓòÉΓòÉΓòÉ 9.1.5.5. KBD_SET_LEDS and KBD_SET_LEDS_I ΓòÉΓòÉΓòÉ
  5358.  
  5359. These functions set the LEDs. 
  5360.  
  5361.  
  5362. ΓòÉΓòÉΓòÉ 9.1.5.5.1. Input Parameter Keywords ΓòÉΓòÉΓòÉ
  5363.  
  5364. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  5365. ΓöéKeyword             ΓöéType                ΓöéDescription         Γöé
  5366. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5367. ΓöéHANDLE              ΓöéNUM                 ΓöéHandle for          Γöé
  5368. Γöé                    Γöé                    ΓöéTESTKBD.SYS         Γöé
  5369. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  5370. ΓöéLEDS                ΓöéNUM                 Γöé THE LEDS KEYWORD ISΓöé
  5371. Γöé                    Γöé                    ΓöéA 3-BIT BINARY      Γöé
  5372. Γöé                    Γöé                    ΓöéNUMBER, where:      Γöé
  5373. Γöé                    Γöé                    ΓöéBit 0 = Scroll Lock Γöé
  5374. Γöé                    Γöé                    ΓöéBit 1 = Num Lock    Γöé
  5375. Γöé                    Γöé                    ΓöéBit 2 = Caps Lock   Γöé
  5376. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  5377.  
  5378.  
  5379. ΓòÉΓòÉΓòÉ 9.1.5.5.2. Output Parameter Keywords ΓòÉΓòÉΓòÉ
  5380.  
  5381.  
  5382. None. 
  5383.  
  5384.  
  5385. ΓòÉΓòÉΓòÉ 9.1.5.5.3. Logged Data ΓòÉΓòÉΓòÉ
  5386.  
  5387.  
  5388. None. 
  5389.  
  5390.  
  5391. ΓòÉΓòÉΓòÉ 9.2. Description of Test Cases ΓòÉΓòÉΓòÉ
  5392.  
  5393. Each of the keyboard test cases can be executed individually as previously 
  5394. described.  The corresponding test scripts are described below. The user can 
  5395. create additional tests or combine tests into multi-threaded test cases after 
  5396. becoming familiar with the DDTT and the keyboard grammar files. 
  5397.  
  5398. All test scripts close the channels opened to the keyboard device and verify 
  5399. successful status returns from every exercised API.  All test scripts log 
  5400. information to a log file with the same file name and a file name extension 
  5401. .LOG.  When current status is queried (for example, track, channel, or drive), 
  5402. this data is written to the DDTT's output windows and to the log file.  Log 
  5403. files can be examined after the test case has been completed. 
  5404.  
  5405.  INTERACT.SCR        Human interaction script - This script tests the 
  5406.                      enable/disable feature of the keyboard driver.  When the 
  5407.                      keyboard is disabled, the user is asked to type at a 
  5408.                      prompt.  If the disable is successful, the keyboard 
  5409.                      re-enables after a timeout of five seconds. 
  5410.  
  5411.  SET.SCR             LED and Typematic selection script - This script sets the 
  5412.                      typematic rate and delay, as well as playing with the 
  5413.                      LEDs.  It allows the user to verify that the rate and 
  5414.                      delay have been changed by allowing typing at the prompt. 
  5415.                      If no input is received, the prompt times out after 10 
  5416.                      seconds. 
  5417.  
  5418.  QUERY.SCR           This is a multi-threaded test that attempts to run some 
  5419.                      IDCs in parallel. 
  5420.  
  5421.  
  5422. ΓòÉΓòÉΓòÉ 10. Mouse Device Driver ΓòÉΓòÉΓòÉ
  5423.  
  5424. OS/2 2.0 (and later) supports two classes of pointing devices - relative and 
  5425. absolute. A relative pointing device reports relative motion (that is, how far 
  5426. it has moved). An example of a relative pointing device is a mouse or a track 
  5427. ball. An absolute pointing device reports absolute positions within some 
  5428. predefined work space; there is no real concept of relative motion. An example 
  5429. of an absolute pointing device is a touch-sensitive screen. 
  5430.  
  5431. Listed below are commonly-used terms and their definitions. These terms are 
  5432. frequently used throughout this chapter: 
  5433.  
  5434.    o  MOUSE$. The OS/2 system-provided pointing device driver name, which is 
  5435.       defined in the device header field of MOUSE.SYS. 
  5436.  
  5437.    o  IDC.  Inter-Device-Communication. 
  5438.  
  5439.    o  Device-Independent-Device Driver. Another way of referring to MOUSE.SYS, 
  5440.       which handles all the IDC interfaces defined on the following pages. 
  5441.  
  5442.    o  Device-Dependent Device Driver. Hardware-specific device driver that 
  5443.       communicates with MOUSE.SYS through the IDC for additional pointing 
  5444.       device support. The OS/2 operating system provides pointing device 
  5445.       support for the following: 
  5446.  
  5447.       IBM Mouse 
  5448.  
  5449.       IBM 8516 Touch Display 
  5450.  
  5451.       Microsoft** Mouse 
  5452.  
  5453.       Logitech** Mouse 
  5454.  
  5455.       PC Mouse** Systems Mouse 
  5456.  
  5457.       Any pointing device that is compatible with the above devices is 
  5458.       supported. 
  5459.  
  5460.  
  5461. ΓòÉΓòÉΓòÉ 10.1. Generic Pointing Device Support ΓòÉΓòÉΓòÉ
  5462.  
  5463. The OS/2 operating system provides a physical mouse device driver called 
  5464. MOUSE.SYS that tries to detect the type of pointing device currently installed 
  5465. on the system. Once it detects the existence of a particular pointing device, 
  5466. it dynamically sets up support for that device. 
  5467.  
  5468. If the physical mouse device driver is unable to detect the presence of a 
  5469. pointing device, the installation program prompts the user for pointing device 
  5470. information. The installation program then sets the appropriate statements for 
  5471. pointing device support in the CONFIG.SYS file. The physical mouse driver will 
  5472. set up to support the first pointing device that it finds. 
  5473.  
  5474.  
  5475. ΓòÉΓòÉΓòÉ 10.1.1. High-Level Design ΓòÉΓòÉΓòÉ
  5476.  
  5477. During device driver initialization time, the physical mouse device driver 
  5478. first checks to see if the TYPE= overrider has been used. If the 
  5479. DEVICE=C:\OS2\MOUSE.SYS line in the CONFIG.SYS file contains a TYPE= overrider, 
  5480. then pointing device support is established through an IDC interface with the 
  5481. device-dependent device driver name following TYPE= . The device-dependent 
  5482. device driver must be loaded before MOUSE.SYS. 
  5483.  
  5484. If a TYPE= overrider has not been specified, it is assumed that generic 
  5485. pointing device support is desired. The generic pointing device driver detects 
  5486. if the system is a EIA/EISA (non-ABIOS) system or a Micro Channel (ABIOS) 
  5487. system. 
  5488.  
  5489.  
  5490. ΓòÉΓòÉΓòÉ 10.1.2. Application Level Interface ΓòÉΓòÉΓòÉ
  5491.  
  5492. An IOCtl is provided to get the device type. The installation program calls the 
  5493. IOCtl sometime during the installation process to find out if a pointing device 
  5494. has been found. If no pointing device is found, the installation program 
  5495. prompts the user for the pointing device that is installed. The installation 
  5496. program can also give the user a chance to override the pointing device found 
  5497. by MOUSE.SYS. 
  5498.  
  5499. Note:  It is unlikely that a situation where the user would override the 
  5500.        pointing device support set up by the generic pointing device driver. 
  5501.        (Multiple pointing devices would be necessary in order for this 
  5502.        situation to occur.) 
  5503.  
  5504.  In some cases, the generic pointing device driver might not be able to detect 
  5505.  the pointing device, even though it is plugged into the system. The 
  5506.  installation program prompts the user for the pointing device type and updates 
  5507.  the CONFIG.SYS file with a TYPE= overrider, if a hardware-dependent device 
  5508.  driver is currently provided for the specified device. 
  5509.  
  5510.  
  5511. ΓòÉΓòÉΓòÉ 10.2. Physical Mouse Device Driver Considerations ΓòÉΓòÉΓòÉ
  5512.  
  5513. The OS/2 installation program ensures that physical mouse device driver 
  5514. initialization takes place prior to physical ASYNC device driver 
  5515. initialization. This allows the physical ASYNC device driver to determine that 
  5516. it is not responsible for servicing that port, ensuring that physical mouse 
  5517. device drivers are not preempted from the COMn ports by the physical ASYNC 
  5518. device drivers. 
  5519.  
  5520. Note:  When manually changing CONFIG.SYS, the user must place the mouse DEVICE= 
  5521.        statements before ASYNC DEVICE= statements. 
  5522.  
  5523.  OS/2 provides a method for supporting additional pointing devices. Pointing 
  5524.  device support can be obtained by writing a device-dependent device driver for 
  5525.  the device. This physical device driver will communicate directly with the 
  5526.  OS/2-provided device driver MOUSE.SYS (the device-independent device driver) 
  5527.  through the IDC interfaces that follow. 
  5528.  
  5529.  
  5530. ΓòÉΓòÉΓòÉ 10.3. MOUSE.SYS IDC Interface ΓòÉΓòÉΓòÉ
  5531.  
  5532. The IDC provided by MOUSE.SYS supports the following: 
  5533.  
  5534.    o  Process_Packet 
  5535.    o  Disable_Support 
  5536.    o  Process_Absolute 
  5537.    o  Open_Mouse 
  5538.    o  Close_Mouse 
  5539.    o  Query_Activity 
  5540.  
  5541.  
  5542. ΓòÉΓòÉΓòÉ 10.3.1. Process_Packet ΓòÉΓòÉΓòÉ
  5543.  
  5544. This request is issued by the device-dependent device driver to pass a 
  5545. relative-pointing-device event to MOUSE.SYS. Process_Packet is nonreentrant. 
  5546. The device-dependent device driver ensures that calls to Process_Packet are 
  5547. never nested. Process_Packet must be issued only when the pointing device is 
  5548. enabled. 
  5549.  
  5550.  Input:    AX = Process_Packet function code, 0001H. 
  5551.  
  5552.            Common-event buffer initialized. The offset of the common-event 
  5553.            buffer was passed on the Read_Enable request. This data buffer is 
  5554.            used to pass both relative and absolute pointing-device events. When 
  5555.            the physical device driver issues a Process_Packet request, the 
  5556.            buffer has the following format: 
  5557.  
  5558.                       ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  5559.  
  5560.  
  5561.                       Event_Data   Struc
  5562.  
  5563.                       Event        dw     ?   ; Description of event
  5564.                       Col_Motion   dw     ?   ; Relative column motion
  5565.                       Row_Motion   dw     ?   ; Relative row motion
  5566.  
  5567.                       Event_Data   Ends
  5568.  
  5569.                       ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  5570.  
  5571.            Before the physical device driver makes the request, initialize the 
  5572.            buffer. Notice that positive motion is up and to the right. Up can 
  5573.            also be viewed as moving a mouse device away from the user. Negative 
  5574.            motion is the opposite of positive. 
  5575.  
  5576.  Output:   No specific output for request. 
  5577.  
  5578.  
  5579. ΓòÉΓòÉΓòÉ 10.3.2. Disable_Support ΓòÉΓòÉΓòÉ
  5580.  
  5581. This request is used by the device-dependent device driver to inform MOUSE$ 
  5582. that it has uninstalled. When the request is received, MOUSE$ enters a disabled 
  5583. state. It returns the error DEVICE NOT READY for subsequent requests from the 
  5584. system. 
  5585.  
  5586. Note:  Do not issue this request under normal circumstances. 
  5587.  
  5588.  Input:    AX = Disable_Support function code, 0002H. 
  5589.  
  5590.  Output:   No specific output for the request. 
  5591.  
  5592.  
  5593. ΓòÉΓòÉΓòÉ 10.3.3. Process_Absolute ΓòÉΓòÉΓòÉ
  5594.  
  5595. This request is issued by the device-dependent device driver to pass an 
  5596. absolute-pointing device event, usually from a touch-sensitive screen, to 
  5597. MOUSE.SYS. Process_Absolute is nonreentrant. It is the responsibility of the 
  5598. device-dependent device driver to ensure that calls to Process_Absolute are 
  5599. never nested. Process_Absolute should be issued only when the pointing device 
  5600. is enabled. The reported event is mapped into the current display mode and 
  5601. appears to the system to be a mouse event. 
  5602.  
  5603.  Input:    AX = Process_Absolute function code, 0003H. 
  5604.  
  5605.            Common-event buffer initialized. The offset of the common-event 
  5606.            buffer was passed on the Read_Enable request. This data buffer is 
  5607.            used to pass both relative and absolute pointing-device events. When 
  5608.            issuing a Process_Absolute request, the buffer has the following 
  5609.            format: 
  5610.  
  5611.                       ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  5612.  
  5613.  
  5614.                       Event_Data   Struc
  5615.  
  5616.                       Event        dw     ?   ; Description of event
  5617.                       Row_Pos      dw     ?   ; Row position of event
  5618.                       Col_Pos      dw     ?   ; Col position of event
  5619.                       Row_Size     dw     ?   ; Number of row units
  5620.                       Col_Size     dw     ?   ; Number of column units
  5621.  
  5622.                       Event_Data   Ends
  5623.  
  5624.                       ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  5625.  
  5626.            MOUSE$ uses Row_Size and Col_Size to map the absolute event into the 
  5627.            current display mode. These values should reflect the maximum 
  5628.            allowed position that could be reported. All values are zero-based. 
  5629.            The upper-left corner of the device should be reported as location 
  5630.            0,0. 
  5631.  
  5632.            Initialize the buffer before making the request. 
  5633.  
  5634.  Output:   No specific output for the request. 
  5635.  
  5636.  
  5637. ΓòÉΓòÉΓòÉ 10.3.4. Open_Mouse ΓòÉΓòÉΓòÉ
  5638.  
  5639. This function is started by another Input Device Driver to get a Mouse IDC 
  5640. Interface handle. This handle is a required parameter for the Close_Mouse and 
  5641. Query_Activity functions. This function supports a maximum of five open Mouse 
  5642. IDC handles at any given point in time. Attempts to open a sixth Mouse IDC 
  5643. handle are returned with a NO_HANDLES_AVAILABLE error code. 
  5644.  
  5645.  Input:    AX = Open_Mouse function request code, 0004H 
  5646.            DS = MOUSE$ DD DS value 
  5647.            ES = Calling DD DS value 
  5648.            BX = Undefined 
  5649.            CX = Undefined 
  5650.            DX = Undefined 
  5651.            SI = Undefined 
  5652.            DI = Undefined 
  5653.  
  5654.  Output:   AX = Error Return code if Carry is set; undefined if Carry is clear 
  5655.            BX = Mouse IDC handle 
  5656.            DS = MOUSE$ DD DS value 
  5657.            ES = Calling DD DS value 
  5658.            CX = Undefined 
  5659.            DX = Undefined 
  5660.            SI = Undefined 
  5661.            DI = Undefined 
  5662.  
  5663.  Error Return Codes: NO_HANDLES_AVAILABLE 
  5664.  
  5665.  Remarks:  This function is valid any time after device driver initialization. 
  5666.  
  5667.  
  5668. ΓòÉΓòÉΓòÉ 10.3.5. Close_Mouse ΓòÉΓòÉΓòÉ
  5669.  
  5670. This function is started by another physical device driver to free a mouse IDC 
  5671. Interface handle. The input handle value must have been generated using the 
  5672. Mouse IDC Function 0004H, Open_Mouse. If the input Mouse IDC handle is invalid, 
  5673. then an INVALID_HANDLE error code is returned. 
  5674.  
  5675.  Input:    AX = Close_Mouse function request code, 0005H 
  5676.            BX = Mouse IDC handle 
  5677.            DS = MOUSE$ DD DS value 
  5678.            ES = Calling DD DS value 
  5679.            CX = Undefined 
  5680.            DX = Undefined 
  5681.            SI = Undefined 
  5682.            DI = Undefined 
  5683.  
  5684.  Output:   AX = Error Return code if Carry is set; undefined if Carry is clear 
  5685.            DS = MOUSE$ DD DS value 
  5686.            ES = Calling DD DS value 
  5687.            BX = Undefined 
  5688.            CX = Undefined 
  5689.            DX = Undefined 
  5690.            SI = Undefined 
  5691.            DI = Undefined 
  5692.  
  5693.  Error Return Codes: INVALID_HANDLE 
  5694.  
  5695.  Remarks:  This function is valid any time after device driver initialization. 
  5696.  
  5697.  
  5698. ΓòÉΓòÉΓòÉ 10.3.6. Query_Activity ΓòÉΓòÉΓòÉ
  5699.  
  5700. This function is started by another physical device driver to get the current 
  5701. Mouse Activity Status, in relation to the last time this function was called or 
  5702. because the caller's handle was opened. This function does not provide the 
  5703. caller with the current Mouse State. It provides only the data from a last-call 
  5704. perspective. A return value of 0 in the BX register (without an error 
  5705. condition) indicates that no mouse device activity has been recorded since the 
  5706. last call. In addition, the return status is on a system-wide basis (that is, 
  5707. there is no evaluation for a particular session's activity). If the input Mouse 
  5708. IDC handle is invalid, then an INVALID_HANDLE error code is returned. 
  5709.  
  5710.  Input:    AX = Query_Activity function request code, 0006H 
  5711.            BX = Mouse IDC handle 
  5712.            DS = MOUSE$ DD DS value 
  5713.            ES = Calling DD DS value 
  5714.            CX = Undefined 
  5715.            DX = Undefined 
  5716.            SI = Undefined 
  5717.            DI = Undefined 
  5718.  
  5719.  Output:   AX = Error Return code if Carry is set; undefined if Carry is clear 
  5720.            BX = Mouse Activity Status 
  5721.            DS = MOUSE$ DD DS value 
  5722.            ES = Calling DD DS value 
  5723.            CX = Undefined 
  5724.            DX = Undefined 
  5725.            SI = Undefined 
  5726.            DI = Undefined 
  5727.  
  5728.            The Mouse Activity Status is a returned bit mask. A set bit is 
  5729.            defined as having a value of 1. A set bit indicates that the 
  5730.            description status or event occurred. The bit definitions for the 
  5731.            Mouse Activity Status parameter are as follows: 
  5732.  
  5733.       Bits 15-11   Reserved=0 
  5734.       Bit 10       Button 5 usage, without motion 
  5735.       Bit 9        Button 5 usage, with motion 
  5736.       Bit 8        Button 4 usage, without motion 
  5737.       Bit 7        Button 4 usage, with motion 
  5738.       Bit 6        Button 3 usage, without motion 
  5739.       Bit 5        Button 3 usage, with motion 
  5740.       Bit 4        Button 2 usage, without motion 
  5741.       Bit 3        Button 2 usage, with motion 
  5742.       Bit 2        Button 1 usage, without motion 
  5743.       Bit 1        Button 1 usage, with motion 
  5744.       Bit 0        Pure motion was recorded. 
  5745.  
  5746.                    Note:  The Mouse device-dependent IDC Interface allows a 
  5747.                           device with up to five buttons to be supported. The 
  5748.                           OS/2 operating system provides specific device 
  5749.                           support for only two-button and three-button pointing 
  5750.                           devices. 
  5751.  
  5752.  
  5753.  Error Return Codes: INVALID_HANDLE 
  5754.  
  5755.            UNKNOWN_COMMAND 
  5756.  
  5757.  Remarks   This function is valid only when OS/2 AIM Support is enabled.  When 
  5758.            Special Needs Support is inactive (AIM_Active = FALSE), IDC 
  5759.            Query_Activity function requests are not allowed, and are returned 
  5760.            to the caller with an UNKNOWN_COMMAND error code. For information on 
  5761.            OS/2 AIM Support for physical device drivers, refer to Category 0Bh 
  5762.            regarding System Notifications for Physical Device Drivers in the 
  5763.            OS/2 Physical Device Driver Reference. 
  5764.  
  5765.  
  5766. ΓòÉΓòÉΓòÉ 10.4. Device-Dependent Device Driver IDC Interface ΓòÉΓòÉΓòÉ
  5767.  
  5768. The IDC provided by the device-dependent device driver must support the 
  5769. following requests: 
  5770.  
  5771.    o  Query_Config 
  5772.    o  Read_Enable 
  5773.    o  Read_Disable 
  5774.    o  Disable_Device 
  5775.    o  Enable_Device 
  5776.  
  5777.  
  5778. ΓòÉΓòÉΓòÉ 10.4.1. Query_Config ΓòÉΓòÉΓòÉ
  5779.  
  5780. This request is issued by MOUSE$ and determines the operating characteristics 
  5781. of the attached hardware. The format follows: 
  5782.  
  5783.  Input:    AX = Query_Config function code, 0001H. 
  5784.            DI = Offset in mouse data segment of where to write the 
  5785.            configuration data. 
  5786.            ES = Must be loaded with the MOUSE$ data segment/selector prior to 
  5787.            the request. The configuration data has the following format: 
  5788.  
  5789.                       ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  5790.  
  5791.  
  5792.                       Config_Data  Struc
  5793.  
  5794.                       Length       dw    ?  ; Total length in bytes (7)
  5795.                       Num_Mics     db    ?  ; Device resolution in mickeys/centimeter
  5796.                       Num_Butt     db    ?  ; Number of buttons (up to 7 supported)
  5797.                       Dev_IRQ      db    ?  ; Device IRQ level
  5798.                       Mouse_Type   db    ?  ; Type of mouse attached:
  5799.                                             ;      0 = Unknown
  5800.                                             ;      1 = Bus mouse
  5801.                                             ;      2 = Serial mouse
  5802.                                             ;      3 = InPort mouse
  5803.                                             ;      4 = Pointing Device Port Mouse
  5804.                                             ;      5 = IBM 8516 Touch Display
  5805.                                             ;  6-255 = Reserved
  5806.                       Com_Num      db    ?  ; Com port number of the attached pointing device
  5807.                                             ; 0 - If non-serial device
  5808.                       Config_Data  Ends
  5809.  
  5810.                       ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  5811.  
  5812.            Initialize the Length field to 7 before issuing the request. The 
  5813.            Num_Mics field for an absolute device should reflect some reasonable 
  5814.            measure of the number of device units per centimeter. 
  5815.  
  5816.  Output:   Configuration data structure filled if no errors. 
  5817.  
  5818.  
  5819. ΓòÉΓòÉΓòÉ 10.4.2. Read_Enable ΓòÉΓòÉΓòÉ
  5820.  
  5821. This request serves two purposes. It gives the offset of the common-event 
  5822. buffer in the MOUSE$ data segment. (This offset should be saved.) It also 
  5823. informs the device-dependent device driver that it can start sending event data 
  5824. to MOUSE$, using the Process_Packet and Process_Absolute requests. The 
  5825. device-dependent device driver also should attach itself to MOUSE$, using 
  5826. DevHelp_ AttachDD, when it receives this request. 
  5827.  
  5828.  Input:    AX = Read_Enable function code, 0002H. 
  5829.            DI = Offset to common-event buffer.This buffer resides in the 
  5830.            MOUSE$data segment.  To address it, use the MOUSE$ data 
  5831.            segment/selector value (depending on the processor mode) returned on 
  5832.            the AttachDD call. The common-event buffer has enough space to 
  5833.            format either a relative or absolute event. For the two common-event 
  5834.            buffer formats, see Process_Packet, and Process_Absolute. 
  5835.  
  5836.  Output:   No specific output for the request. 
  5837.  
  5838.  
  5839. ΓòÉΓòÉΓòÉ 10.4.3. Read_Disable ΓòÉΓòÉΓòÉ
  5840.  
  5841. This request is issued by MOUSE$ when it no longer accepts Process_Packet or 
  5842. Process_Absolute requests. References to the common-event buffer should be 
  5843. discontinued. However, MOUSE$ can enable the interface again by sending another 
  5844. Read_Enable request. Normally this request is not issued. 
  5845.  
  5846.  Input:    AX = Read_Disable function code, 0003H 
  5847.  
  5848.  Output:   No specific output for the request. 
  5849.  
  5850.  
  5851. ΓòÉΓòÉΓòÉ 10.4.4. Disable_Device ΓòÉΓòÉΓòÉ
  5852.  
  5853. This request is used by MOUSE$ when placing a pointing device in a disabled 
  5854. state. Upon completion of this request, no Process_Packet or Process_Absolute 
  5855. requests are to be made to MOUSE$ until an Enable_Device request is received. 
  5856. There is no requirement that the hardware itself be disabled, only that no 
  5857. Process_Packet or Process_Absolute requests be issued. Receipt of a 
  5858. Disable_Device request is not considered an error if the pointing device is 
  5859. already disabled. 
  5860.  
  5861.  Input:    AX = Disable_Device function code, 0005H. 
  5862.  
  5863.  Output:   No specific output for the request. 
  5864.  
  5865.  
  5866. ΓòÉΓòÉΓòÉ 10.4.5. Enable_Device ΓòÉΓòÉΓòÉ
  5867.  
  5868. This request is used by MOUSE$ when resetting a pointing device to an enabled 
  5869. state. Process_Packet and Process_Absolute requests are made to MOUSE$ when a 
  5870. pointing device is in an enabled state. Receipt of an Enable_Device request is 
  5871. not considered an error if the pointing device is already enabled. 
  5872.  
  5873.  Input:    AX = Enable_Device function code, 0004H. 
  5874.  
  5875.  Output:   No specific output for the request. 
  5876.  
  5877.  
  5878. ΓòÉΓòÉΓòÉ 10.5. Building the WIN-OS/2 Mouse Device Driver ΓòÉΓòÉΓòÉ
  5879.  
  5880. WIN-OS/2* provides support for pointing devices using a generic mouse driver 
  5881. (MOUSE.DRV). Some devices may not work correctly with this driver. If this is 
  5882. the case, you should write a WIN-OS/2 mouse driver to support the new device 
  5883. type. 
  5884.  
  5885. To write a WIN-OS/2 driver, examine the Windows** mouse driver example provided 
  5886. on the Microsoft Device Driver Kit. Use the source code as a template for 
  5887. writing a WIN-OS/2 driver. In order for the driver to run correctly in the 
  5888. operating system, you must replace two files (MOUSE.ASM and INT33H.ASM) used in 
  5889. the Windows mouse driver. The source modifications (which are within the ifdef 
  5890. WINOS2 statements) support the WIN-OS/2 mouse driver. The replacement source 
  5891. files are available on the IBM Device Driver Source Kit for OS/2. 
  5892.  
  5893. The source code in the MOUSE.ASM file was modified to include global variables 
  5894. needed to support the device. 
  5895.  
  5896. The source code in the INT33H.ASM file was modified to include the following: 
  5897.  
  5898.    o  Add the external declarations for the new global variables 
  5899.  
  5900.    o  Alter the execution path to enable the driver to run seamlessly 
  5901.  
  5902.    o  Include additional code to support the mouse running under OS/2 
  5903.  
  5904.    o  Change the state_xlate table 
  5905.  
  5906.    o  Load ES with a driver code segment value 
  5907.  
  5908.    o  Call the virtual device driver interface 
  5909.  
  5910.    o  Add a routine that determines if the DOS session is running seamlessly 
  5911.  
  5912.  These modifications can be used with any device driver that is based on the 
  5913.  Windows mouse device driver. 
  5914.  
  5915.  
  5916. ΓòÉΓòÉΓòÉ 10.6. Building the Physical Mouse Device Driver Code ΓòÉΓòÉΓòÉ
  5917.  
  5918. To build the physical mouse device drivers: 
  5919.  
  5920.    1. Add the TOOLS directory in the IBM Device Driver Source Kit for OS/2 to 
  5921.       the current path. 
  5922.  
  5923.    2. NMAKE the corresponding Make file provided in the device driver. 
  5924.  
  5925.       For example: 
  5926.  
  5927.             ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  5928.  
  5929.  
  5930.                      CD\DDK_x86\SRC\DEV\MOUSE (where the mouse code resides)
  5931.                      NMAKE
  5932.  
  5933.             ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  5934.  
  5935.       This will build MOUSE.SUS, which is language-dependent (US). You must 
  5936.       copy this driver to C:\OS2\MOUSE.SYS and reboot the system in order for 
  5937.       the newly-built driver to be loaded. This is the generic physical mouse 
  5938.       device driver provided by OS/2. 
  5939.  
  5940.       The directory \ddk_x86\src\dev\mouse\familyg (which can be found on the 
  5941.       IBM Developer Connection Device Driver Kit for OS/2) contains the 
  5942.       device-dependent device driver. 
  5943.  
  5944.  To build the WIN-OS/2 mouse device driver, you must have the tools necessary 
  5945.  to build the Windows mouse driver. In addition, replace the Windows files with 
  5946.  the WIN-OS/2 MOUSE.ASM and INT33H.ASM files. Run 'nmake WINOS2=1'. The output 
  5947.  file is MOUSE>DRV. Use this file to replace the existing WIN-OS/2 MOUSE.DRV 
  5948.  file. 
  5949.  
  5950.  
  5951. ΓòÉΓòÉΓòÉ 11. Mouse (DOS) Device Driver Test Tool ΓòÉΓòÉΓòÉ
  5952.  
  5953. This chapter explains how to use the mouse (DOS) Device Driver Test Tool. 
  5954.  
  5955.  
  5956. ΓòÉΓòÉΓòÉ 11.1. Overview ΓòÉΓòÉΓòÉ
  5957.  
  5958. The mouse Functional Verification Tests (FVTs) exercise the Int86() DOS 
  5959. interface for mouse functions. The tests are implemented with a special 
  5960. variation of the Device Driver Test Tool (called DOSMOUSE), which uses much of 
  5961. the Device Driver Test Tool code; however, DOSMOUSE does not use the 
  5962. multithread capability. Specific mouse function code is included in the 
  5963. DOSMOUSE.EXE, not in a DLL, as is it done for the DDTT running in OS/2. 
  5964.  
  5965. These tests run in a DOS window. Each test is defined in a script file and 
  5966. these files can be modified using a text editor to create additional, 
  5967. specialized test cases. The test scripts give the user a repeatable set of 
  5968. tests that demonstrate mouse functions. 
  5969.  
  5970. Test cases log all information to a log file, clearly indicating the actual 
  5971. execution sequence. 
  5972.  
  5973.  
  5974. ΓòÉΓòÉΓòÉ 11.1.1. Mouse Test Architecture ΓòÉΓòÉΓòÉ
  5975.  
  5976. DOSMOUSE uses the DDTT common front-end parser code for test case scripts. 
  5977. DOSMOUSE is specific to test mouse functions. The mouse grammar file is 
  5978. required: 
  5979.  
  5980.    o  DOSMOUSE.EXE 
  5981.  
  5982.    o  MOUSE.GRA. 
  5983.  
  5984.  The following required, common component of the DDTT allows use of the DDTT's 
  5985.  common test functions such as SET, LOOP, and PAUSE: 
  5986.  
  5987.    o  GLOBAL.GRA 
  5988.  
  5989.  
  5990. ΓòÉΓòÉΓòÉ 11.1.2. Installation ΓòÉΓòÉΓòÉ
  5991.  
  5992. The mouse test files reside on the IBM Developer Connection Device Driver Kit 
  5993. for OS/2 CD-ROM disc.  These files utilize the test suites in the TESTCERT 
  5994. substructure, which also contain the executables and test cases. 
  5995.  
  5996. The following procedure describes the installation process for running test 
  5997. cases: 
  5998.  
  5999.    1. Copy the executable and mouse test case files from the IBM Developer 
  6000.       Connection Device Driver Kit for OS/2 CD-ROM disc to the hard drive.  The 
  6001.       executable (DOSMOUSE.EXE) files can reside in one directory (for example, 
  6002.       \MOUSE). Test case script and command files can also be placed in this 
  6003.       directory on the hard disk. If the target directory is C:\MOUSE and the E 
  6004.       drive contains the information from the IBM Developer Connection Device 
  6005.       Driver Kit for OS/2 CD-ROM disc, then use the following commands to copy 
  6006.       the mouse test suite: 
  6007.  
  6008.  
  6009.                [C:\]md mouse
  6010.  
  6011.                [C:\]cd mouse
  6012.  
  6013.                [C:\mouse]copy e:\ddk_x86\testcert\inputout\function\mouse\*
  6014.  
  6015.                [C:\mouse]copy e:\ddk_x86\testcert\general\ddtt\GLOBAL.GRA
  6016.  
  6017.  
  6018. ΓòÉΓòÉΓòÉ 11.1.3. Test Case Execution ΓòÉΓòÉΓòÉ
  6019.  
  6020. To run one script file at a time, refer to Description of Test Cases for a 
  6021. description of each script file. Then, after determining which script file to 
  6022. run, type in DOSMOUSE followed by the script file name: 
  6023.  
  6024.    [C:\MOUSE]DOSMOUSE ALL.SCR
  6025.  
  6026. After the script has finished executing, control will transfer back to the DOS 
  6027. window.  Results are logged in the file identified following the @THREAD line. 
  6028.  
  6029.  
  6030. ΓòÉΓòÉΓòÉ 11.1.4. DDTT Mouse Test Grammar Function Calls ΓòÉΓòÉΓòÉ
  6031.  
  6032. The following is a list of the DDTT Parallel Port Test Grammar Function Calls: 
  6033.  
  6034.    o  MOUSE_RESETANDSTATUS 
  6035.    o  MOUSE_SHOWCURSOR 
  6036.    o  MOUSE_HIDECURSOR 
  6037.    o  MOUSE_GETBUTTONMPOS 
  6038.    o  MOUSE_SETCURPOS 
  6039.    o  MOUSE_GETBPRESS 
  6040.    o  MOUSE_GETBRELEASE 
  6041.    o  MOUSE_SETMINMAXHCPOS 
  6042.    o  MOUSE_SETMINMAXVCPOS 
  6043.    o  MOUSE_READMCOUNT 
  6044.    o  MOUSE_GETDRVVERTYPIRQ 
  6045.    o  MOUSE_GETGENINFO 
  6046.    o  MOUSE_GETMAXVCOOR 
  6047.    o  MOUSE_GETCURMSKMCNT 
  6048.    o  MOUSE_GETCURHSPT 
  6049.    o  MOUSE_HDWRESET 
  6050.    o  MOUSE_SETGETBPT 
  6051.    o  MOUSE_GETMINMAX 
  6052.    o  MOUSE_GETADVFCN 
  6053.    o  MOUSE_GETSWSET 
  6054.  
  6055.  
  6056. ΓòÉΓòÉΓòÉ 11.1.4.1. MOUSE_RESETANDSTATUS ΓòÉΓòÉΓòÉ
  6057.  
  6058. Mouse Function 0 
  6059.  
  6060. This function returns the current status of the mouse hardware and software. 
  6061.  
  6062.  
  6063. ΓòÉΓòÉΓòÉ 11.1.4.1.1. Input Parameter Keywords ΓòÉΓòÉΓòÉ
  6064.  
  6065.  
  6066. None. 
  6067.  
  6068.  
  6069. ΓòÉΓòÉΓòÉ 11.1.4.1.2. Output Parameter Keywords ΓòÉΓòÉΓòÉ
  6070.  
  6071.  
  6072. None. 
  6073.  
  6074.  
  6075. ΓòÉΓòÉΓòÉ 11.1.4.1.3. Logged Data ΓòÉΓòÉΓòÉ
  6076.  
  6077.  M1%       Mouse status (found and reset = -1, otherwise = 0) 
  6078.  M2%       Number of buttons (if mouse found and reset = 2) 
  6079.  
  6080.  
  6081. ΓòÉΓòÉΓòÉ 11.1.4.2. MOUSE_SHOWCURSOR ΓòÉΓòÉΓòÉ
  6082.  
  6083. Mouse Function 1 
  6084.  
  6085. This function increments the internal cursor flag and if the value of the flag 
  6086. is 0, displays the cursor on the screen. 
  6087.  
  6088.  
  6089. ΓòÉΓòÉΓòÉ 11.1.4.2.1. Input Parameter Keywords ΓòÉΓòÉΓòÉ
  6090.  
  6091.  
  6092. None. 
  6093.  
  6094.  
  6095. ΓòÉΓòÉΓòÉ 11.1.4.2.2. Output Parameter Keywords ΓòÉΓòÉΓòÉ
  6096.  
  6097.  
  6098. None. 
  6099.  
  6100.  
  6101. ΓòÉΓòÉΓòÉ 11.1.4.2.3. Logged Data ΓòÉΓòÉΓòÉ
  6102.  
  6103.  
  6104. None. 
  6105.  
  6106.  
  6107. ΓòÉΓòÉΓòÉ 11.1.4.3. MOUSE_HIDECURSOR ΓòÉΓòÉΓòÉ
  6108.  
  6109. Mouse Function 2 
  6110.  
  6111. This function removes the cursor from the screen, decrements the internal 
  6112. cursor flag, and hides the cursor. The mouse driver continues to track the 
  6113. motion of the mouse, changing the cursor's position as the mouse changes 
  6114. position. 
  6115.  
  6116.  
  6117. ΓòÉΓòÉΓòÉ 11.1.4.3.1. Input Parameter Keywords ΓòÉΓòÉΓòÉ
  6118.  
  6119.  
  6120. None. 
  6121.  
  6122.  
  6123. ΓòÉΓòÉΓòÉ 11.1.4.3.2. Output Parameter Keywords ΓòÉΓòÉΓòÉ
  6124.  
  6125.  
  6126. None. 
  6127.  
  6128.  
  6129. ΓòÉΓòÉΓòÉ 11.1.4.3.3. Logged Data ΓòÉΓòÉΓòÉ
  6130.  
  6131.  
  6132. None. 
  6133.  
  6134.  
  6135. ΓòÉΓòÉΓòÉ 11.1.4.4. MOUSE_GETBUTTONMPOS ΓòÉΓòÉΓòÉ
  6136.  
  6137. Mouse Function 3 
  6138.  
  6139. This function returns the state of the left-hand and right-hand mouse buttons 
  6140. and also returns the state of the cursor's horizontal and vertical virtual 
  6141. screen coordinates. 
  6142.  
  6143.  
  6144. ΓòÉΓòÉΓòÉ 11.1.4.4.1. Input Parameter Keywords ΓòÉΓòÉΓòÉ
  6145.  
  6146.  
  6147. None. 
  6148.  
  6149.  
  6150. ΓòÉΓòÉΓòÉ 11.1.4.4.2. Output Parameter Keywords ΓòÉΓòÉΓòÉ
  6151.  
  6152.  
  6153. None. 
  6154.  
  6155.  
  6156. ΓòÉΓòÉΓòÉ 11.1.4.4.3. Logged Data ΓòÉΓòÉΓòÉ
  6157.  
  6158.  
  6159. Button status 
  6160. Horizontal cursor coordinates 
  6161. Vertical cursor coordinates 
  6162.  
  6163.  
  6164. ΓòÉΓòÉΓòÉ 11.1.4.5. MOUSE_SETCURPOS ΓòÉΓòÉΓòÉ
  6165.  
  6166. Mouse Function 4 
  6167.  
  6168. This function sets the cursor position at the location of the specified 
  6169. horizontal vertical virtual coordinates. 
  6170.  
  6171.  
  6172. ΓòÉΓòÉΓòÉ 11.1.4.5.1. Input Parameter Keywords ΓòÉΓòÉΓòÉ
  6173.  
  6174. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  6175. ΓöéKeyword             ΓöéType                ΓöéDescription         Γöé
  6176. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6177. ΓöéHORIZC              ΓöéNUM                 ΓöéHorizontal cursor   Γöé
  6178. Γöé                    Γöé                    Γöécoordinate          Γöé
  6179. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6180. ΓöéVERTC               ΓöéNUM                 ΓöéVertical cursor     Γöé
  6181. Γöé                    Γöé                    Γöécoordinates         Γöé
  6182. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  6183.  
  6184.  
  6185. ΓòÉΓòÉΓòÉ 11.1.4.5.2. Output Parameter Keywords ΓòÉΓòÉΓòÉ
  6186.  
  6187.  
  6188. None. 
  6189.  
  6190.  
  6191. ΓòÉΓòÉΓòÉ 11.1.4.5.3. Logged Data ΓòÉΓòÉΓòÉ
  6192.  
  6193.  
  6194. None. 
  6195.  
  6196.  
  6197. ΓòÉΓòÉΓòÉ 11.1.4.6. MOUSE_GETBPRESS ΓòÉΓòÉΓòÉ
  6198.  
  6199. Mouse Function 5 
  6200.  
  6201. This function returns the current status of both buttons, counts the number of 
  6202. times the specified button was pressed since the last call to this function, 
  6203. and reports the cursor's horizontal and vertical coordinates the last time the 
  6204. specified button was pressed. 
  6205.  
  6206.  
  6207. ΓòÉΓòÉΓòÉ 11.1.4.6.1. Input Parameter Keywords ΓòÉΓòÉΓòÉ
  6208.  
  6209. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  6210. ΓöéKeyword             ΓöéType                ΓöéDescription         Γöé
  6211. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6212. ΓöéBUTTON              ΓöéNUM                 ΓöéLeft hand button=0  Γöé
  6213. Γöé                    Γöé                    Γöéor right hand buttonΓöé
  6214. Γöé                    Γöé                    Γöé=1                  Γöé
  6215. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  6216.  
  6217.  
  6218. ΓòÉΓòÉΓòÉ 11.1.4.6.2. Output Parameter Keywords ΓòÉΓòÉΓòÉ
  6219.  
  6220.  
  6221. None. 
  6222.  
  6223.  
  6224. ΓòÉΓòÉΓòÉ 11.1.4.6.3. Logged Data ΓòÉΓòÉΓòÉ
  6225.  
  6226.  
  6227. Button status 
  6228. Number of button presses 
  6229. Horizontal coordinate 
  6230. Vertical coordinate 
  6231.  
  6232.  
  6233. ΓòÉΓòÉΓòÉ 11.1.4.7. MOUSE_GETBRELEASE ΓòÉΓòÉΓòÉ
  6234.  
  6235. Mouse Function 6 
  6236.  
  6237. This function returns the current status of both buttons, counts the number of 
  6238. times the specified button was released since the last call to this function, 
  6239. and reports the cursor's horizontal and vertical coordinates the last time the 
  6240. specified button was released. 
  6241.  
  6242.  
  6243. ΓòÉΓòÉΓòÉ 11.1.4.7.1. Input Parameter Keywords ΓòÉΓòÉΓòÉ
  6244.  
  6245. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  6246. ΓöéKeyword             ΓöéType                ΓöéDescription         Γöé
  6247. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6248. ΓöéBUTTON              ΓöéNUM                 ΓöéLeft hand button=0  Γöé
  6249. Γöé                    Γöé                    Γöéor right hand buttonΓöé
  6250. Γöé                    Γöé                    Γöé=1                  Γöé
  6251. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  6252.  
  6253.  
  6254. ΓòÉΓòÉΓòÉ 11.1.4.7.2. Output Parameter Keywords ΓòÉΓòÉΓòÉ
  6255.  
  6256.  
  6257. None. 
  6258.  
  6259.  
  6260. ΓòÉΓòÉΓòÉ 11.1.4.7.3. Logged Data ΓòÉΓòÉΓòÉ
  6261.  
  6262.  
  6263. Button status Button releases 
  6264. Horizontal coordinate 
  6265. Vertical coordinate 
  6266.  
  6267.  
  6268. ΓòÉΓòÉΓòÉ 11.1.4.8. MOUSE_SETMINMAXHCPOS ΓòÉΓòÉΓòÉ
  6269.  
  6270. Mouse Function 7 
  6271.  
  6272. This function sets the position of the minimum and maximum horizontal cursor 
  6273. coordinates on the screen. 
  6274.  
  6275.  
  6276. ΓòÉΓòÉΓòÉ 11.1.4.8.1. Input Parameter Keywords ΓòÉΓòÉΓòÉ
  6277.  
  6278. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  6279. ΓöéKeyword             ΓöéType                ΓöéDescription         Γöé
  6280. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6281. ΓöéHMIN                ΓöéNUM                 ΓöéHorizontal minimum  Γöé
  6282. Γöé                    Γöé                    Γöéposition            Γöé
  6283. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6284. ΓöéHMAX                ΓöéNUM                 ΓöéHorizontal maximum  Γöé
  6285. Γöé                    Γöé                    Γöéposition            Γöé
  6286. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  6287.  
  6288.  
  6289. ΓòÉΓòÉΓòÉ 11.1.4.8.2. Output Parameter Keywords ΓòÉΓòÉΓòÉ
  6290.  
  6291.  
  6292. None. 
  6293.  
  6294.  
  6295. ΓòÉΓòÉΓòÉ 11.1.4.8.3. Logged Data ΓòÉΓòÉΓòÉ
  6296.  
  6297.  
  6298. None. 
  6299.  
  6300.  
  6301. ΓòÉΓòÉΓòÉ 11.1.4.9. MOUSE_SETMINMAXVCPOS ΓòÉΓòÉΓòÉ
  6302.  
  6303. Mouse Function 8 
  6304.  
  6305. This function sets the position of the minimum and maximum vertical cursor 
  6306. coordinates on the screen. 
  6307.  
  6308.  
  6309. ΓòÉΓòÉΓòÉ 11.1.4.9.1. Input Parameter Keywords ΓòÉΓòÉΓòÉ
  6310.  
  6311. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  6312. ΓöéKeyword             ΓöéType                ΓöéDescription         Γöé
  6313. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6314. ΓöéVMIN                ΓöéNUM                 ΓöéVertical minimum    Γöé
  6315. Γöé                    Γöé                    Γöéposition            Γöé
  6316. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6317. ΓöéVMAX                ΓöéNUM                 ΓöéVertical maximum    Γöé
  6318. Γöé                    Γöé                    Γöéposition            Γöé
  6319. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  6320.  
  6321.  
  6322. ΓòÉΓòÉΓòÉ 11.1.4.9.2. Output Parameter Keywords ΓòÉΓòÉΓòÉ
  6323.  
  6324.  
  6325. None. 
  6326.  
  6327.  
  6328. ΓòÉΓòÉΓòÉ 11.1.4.9.3. Logged Data ΓòÉΓòÉΓòÉ
  6329.  
  6330.  
  6331. None. 
  6332.  
  6333.  
  6334. ΓòÉΓòÉΓòÉ 11.1.4.10. MOUSE_READMCOUNT ΓòÉΓòÉΓòÉ
  6335.  
  6336. Mouse Function 11 
  6337.  
  6338. This function returns the horizontal and vertical mickey counts since the last 
  6339. call of this function. 
  6340.  
  6341.  
  6342. ΓòÉΓòÉΓòÉ 11.1.4.10.1. Input Parameter Keywords ΓòÉΓòÉΓòÉ
  6343.  
  6344.  
  6345. None. 
  6346.  
  6347.  
  6348. ΓòÉΓòÉΓòÉ 11.1.4.10.2. Output Parameter Keywords ΓòÉΓòÉΓòÉ
  6349.  
  6350.  
  6351. None. 
  6352.  
  6353.  
  6354. ΓòÉΓòÉΓòÉ 11.1.4.10.3. Logged Data ΓòÉΓòÉΓòÉ
  6355.  
  6356.  
  6357. Horizontal mickey count 
  6358. Vertical mickey count 
  6359.  
  6360.  
  6361. ΓòÉΓòÉΓòÉ 11.1.4.11. MOUSE_GETDRVVERTYPIRQ ΓòÉΓòÉΓòÉ
  6362.  
  6363. Mouse Function 36 
  6364.  
  6365. This function returns the version number of the mouse driver, reports the type 
  6366. of mouse the driver requires, and returns the number of the interrupt request 
  6367. type (IRQ). 
  6368.  
  6369.  
  6370. ΓòÉΓòÉΓòÉ 11.1.4.11.1. Input Parameter Keywords ΓòÉΓòÉΓòÉ
  6371.  
  6372.  
  6373. None. 
  6374.  
  6375.  
  6376. ΓòÉΓòÉΓòÉ 11.1.4.11.2. Output Parameter Keywords ΓòÉΓòÉΓòÉ
  6377.  
  6378.  
  6379. None. 
  6380.  
  6381.  
  6382. ΓòÉΓòÉΓòÉ 11.1.4.11.3. Logged Data ΓòÉΓòÉΓòÉ
  6383.  
  6384.  
  6385. Major version 
  6386. Minor version 
  6387. Mouse type 
  6388. IRQ number 
  6389.  
  6390.  
  6391. ΓòÉΓòÉΓòÉ 11.1.4.12. MOUSE_GETGENINFO ΓòÉΓòÉΓòÉ
  6392.  
  6393. Mouse Function 37 
  6394.  
  6395. This function returns general information about the mouse. 
  6396.  
  6397.  
  6398. ΓòÉΓòÉΓòÉ 11.1.4.12.1. Input Parameter Keywords ΓòÉΓòÉΓòÉ
  6399.  
  6400.  
  6401. None. 
  6402.  
  6403.  
  6404. ΓòÉΓòÉΓòÉ 11.1.4.12.2. Output Parameter Keywords ΓòÉΓòÉΓòÉ
  6405.  
  6406.  
  6407. None. 
  6408.  
  6409.  
  6410. ΓòÉΓòÉΓòÉ 11.1.4.12.3. Logged Data ΓòÉΓòÉΓòÉ
  6411.  
  6412.  
  6413. General information 
  6414. fCursorLock 
  6415. fInMouseCode 
  6416. fMouseBusy 
  6417.  
  6418.  
  6419. ΓòÉΓòÉΓòÉ 11.1.4.13. MOUSE_GETMAXVCOOR ΓòÉΓòÉΓòÉ
  6420.  
  6421. Mouse Function 38 
  6422.  
  6423. This function returns a flag indicating whether the mouse driver is disabled 
  6424. and indicates maximum virtual coordinates. 
  6425.  
  6426.  
  6427. ΓòÉΓòÉΓòÉ 11.1.4.13.1. Input Parameter Keywords ΓòÉΓòÉΓòÉ
  6428.  
  6429.  
  6430. None. 
  6431.  
  6432.  
  6433. ΓòÉΓòÉΓòÉ 11.1.4.13.2. Output Parameter Keywords ΓòÉΓòÉΓòÉ
  6434.  
  6435.  
  6436. None. 
  6437.  
  6438.  
  6439. ΓòÉΓòÉΓòÉ 11.1.4.13.3. Logged Data ΓòÉΓòÉΓòÉ
  6440.  
  6441.  
  6442. Mouse-disabled flag 
  6443. Maximum virtual x 
  6444. Maximum virtual y 
  6445.  
  6446.  
  6447. ΓòÉΓòÉΓòÉ 11.1.4.14. MOUSE_GETCURMSKMCNT ΓòÉΓòÉΓòÉ
  6448.  
  6449. Mouse Function 39 
  6450.  
  6451. This function returns cursor information and accumulated raw mickey counts. 
  6452.  
  6453.  
  6454. ΓòÉΓòÉΓòÉ 11.1.4.14.1. Input Parameter Keywords ΓòÉΓòÉΓòÉ
  6455.  
  6456.  
  6457. None. 
  6458.  
  6459.  
  6460. ΓòÉΓòÉΓòÉ 11.1.4.14.2. Output Parameter Keywords ΓòÉΓòÉΓòÉ
  6461.  
  6462.  
  6463. None. 
  6464.  
  6465.  
  6466. ΓòÉΓòÉΓòÉ 11.1.4.14.3. Logged Data ΓòÉΓòÉΓòÉ
  6467.  
  6468.  
  6469. Screen-mask or Scan-line start 
  6470. Cursor-mask or Scan-line stop 
  6471. Horizontal mickey count 
  6472. Vertical mickey count 
  6473.  
  6474.  
  6475. ΓòÉΓòÉΓòÉ 11.1.4.15. MOUSE_GETCURHSPT ΓòÉΓòÉΓòÉ
  6476.  
  6477. Mouse Function 42 
  6478.  
  6479. This function returns the cursor hot-spot location, reports the type of mouse 
  6480. in use, and returns the internal counter that controls cursor visibility. 
  6481.  
  6482.  
  6483. ΓòÉΓòÉΓòÉ 11.1.4.15.1. Input Parameter Keywords ΓòÉΓòÉΓòÉ
  6484.  
  6485.  
  6486. None. 
  6487.  
  6488.  
  6489. ΓòÉΓòÉΓòÉ 11.1.4.15.2. Output Parameter Keywords ΓòÉΓòÉΓòÉ
  6490.  
  6491.  
  6492. None. 
  6493.  
  6494.  
  6495. ΓòÉΓòÉΓòÉ 11.1.4.15.3. Logged Data ΓòÉΓòÉΓòÉ
  6496.  
  6497.  
  6498. fCursor 
  6499. Horizontal cursor hot spot 
  6500. Vertical cursor hot spot 
  6501. Type of mouse 
  6502.  
  6503.  
  6504. ΓòÉΓòÉΓòÉ 11.1.4.16. MOUSE_HDWRESET ΓòÉΓòÉΓòÉ
  6505.  
  6506. Mouse Function 47 
  6507.  
  6508. This function returns cursor information and accumulated raw mickey counts 
  6509.  
  6510.  
  6511. ΓòÉΓòÉΓòÉ 11.1.4.16.1. Input Parameter Keywords ΓòÉΓòÉΓòÉ
  6512.  
  6513.  
  6514. None. 
  6515.  
  6516.  
  6517. ΓòÉΓòÉΓòÉ 11.1.4.16.2. Output Parameter Keywords ΓòÉΓòÉΓòÉ
  6518.  
  6519.  
  6520. None. 
  6521.  
  6522.  
  6523. ΓòÉΓòÉΓòÉ 11.1.4.16.3. Logged Data ΓòÉΓòÉΓòÉ
  6524.  
  6525.  
  6526. Success flag 
  6527.  
  6528.  
  6529. ΓòÉΓòÉΓòÉ 11.1.4.17. MOUSE_SETGETBPT ΓòÉΓòÉΓòÉ
  6530.  
  6531. Mouse Function 48 
  6532.  
  6533. This function sets or returns cursor ballpoint-orientation and buttonmask 
  6534. information. 
  6535.  
  6536.  
  6537. ΓòÉΓòÉΓòÉ 11.1.4.17.1. Input Parameter Keywords ΓòÉΓòÉΓòÉ
  6538.  
  6539. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  6540. ΓöéKeyword             ΓöéType                ΓöéDescription         Γöé
  6541. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6542. ΓöéROTANGLE            ΓöéNUM                 ΓöéRotation angle      Γöé
  6543. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  6544. ΓöéCMDINFO             ΓöéNUM                 ΓöéCommand             Γöé
  6545. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  6546.  
  6547.  
  6548. ΓòÉΓòÉΓòÉ 11.1.4.17.2. Output Parameter Keywords ΓòÉΓòÉΓòÉ
  6549.  
  6550.  
  6551. None. 
  6552.  
  6553.  
  6554. ΓòÉΓòÉΓòÉ 11.1.4.17.3. Logged Data ΓòÉΓòÉΓòÉ
  6555.  
  6556.  
  6557. Status 
  6558. Rotation angle 
  6559. Button mask 
  6560.  
  6561.  
  6562. ΓòÉΓòÉΓòÉ 11.1.4.18. MOUSE_GETMINMAX ΓòÉΓòÉΓòÉ
  6563.  
  6564. Mouse Function 49 
  6565.  
  6566. This function  returns the minimum and maximum horizontal and vertical 
  6567. coordinates for the current video mode. 
  6568.  
  6569.  
  6570. ΓòÉΓòÉΓòÉ 11.1.4.18.1. Input Parameter Keywords ΓòÉΓòÉΓòÉ
  6571.  
  6572.  
  6573. None. 
  6574.  
  6575.  
  6576. ΓòÉΓòÉΓòÉ 11.1.4.18.2. Output Parameter Keywords ΓòÉΓòÉΓòÉ
  6577.  
  6578.  
  6579. None. 
  6580.  
  6581.  
  6582. ΓòÉΓòÉΓòÉ 11.1.4.18.3. Logged Data ΓòÉΓòÉΓòÉ
  6583.  
  6584.  
  6585. Status 
  6586. Virtual x minimum 
  6587. Virtual y minimum 
  6588. Virtual x maximum 
  6589. Virtual y maximum 
  6590.  
  6591.  
  6592. ΓòÉΓòÉΓòÉ 11.1.4.19. MOUSE_GETADVFCN ΓòÉΓòÉΓòÉ
  6593.  
  6594. Mouse Function 50 
  6595.  
  6596. This function returns the flags that indicate active advanced functions. 
  6597.  
  6598.  
  6599. ΓòÉΓòÉΓòÉ 11.1.4.19.1. Input Parameter Keywords ΓòÉΓòÉΓòÉ
  6600.  
  6601.  
  6602. None. 
  6603.  
  6604.  
  6605. ΓòÉΓòÉΓòÉ 11.1.4.19.2. Output Parameter Keywords ΓòÉΓòÉΓòÉ
  6606.  
  6607.  
  6608. None. 
  6609.  
  6610.  
  6611. ΓòÉΓòÉΓòÉ 11.1.4.19.3. Logged Data ΓòÉΓòÉΓòÉ
  6612.  
  6613.  
  6614. Active function flags 
  6615.  
  6616.  
  6617. ΓòÉΓòÉΓòÉ 11.1.4.20. MOUSE_GETSWSET ΓòÉΓòÉΓòÉ
  6618.  
  6619. Mouse Function 51 
  6620.  
  6621. This function returns the current settings of switch values that can be passed 
  6622. to the mouse driver. 
  6623.  
  6624.  
  6625. ΓòÉΓòÉΓòÉ 11.1.4.20.1. Input Parameter Keywords ΓòÉΓòÉΓòÉ
  6626.  
  6627.  
  6628. None. 
  6629.  
  6630.  
  6631. ΓòÉΓòÉΓòÉ 11.1.4.20.2. Output Parameter Keywords ΓòÉΓòÉΓòÉ
  6632.  
  6633.  
  6634. None. 
  6635.  
  6636.  
  6637. ΓòÉΓòÉΓòÉ 11.1.4.20.3. Logged Data ΓòÉΓòÉΓòÉ
  6638.  
  6639.  
  6640. Mouse type 
  6641. Mouse port 
  6642. Language 
  6643. Horizontal sensitivity 
  6644. Vertical sensitivity 
  6645. Double threshold 
  6646. Ballistic curve 
  6647. Interrupt rate 
  6648. Cursor Override Mask 
  6649. Laptop adjustment 
  6650. Memory type 
  6651. Super VGA support 
  6652. Rotation angle 
  6653. Primary button 
  6654. Secondary button 
  6655. Clip lock enabled 
  6656. Acceleration curve data 
  6657.  
  6658.  
  6659. ΓòÉΓòÉΓòÉ 11.2. Description of Test Cases ΓòÉΓòÉΓòÉ
  6660.  
  6661. Each of the mouse test cases can be executed individually as previously 
  6662. described.  The test scripts are described below.  The user can create 
  6663. additional tests or combine tests into test cases after becoming familiar with 
  6664. DOSMOUSE and the MOUSE grammar file. 
  6665.  
  6666.  ALL.SCR             This runs all the mouse functions. 
  6667.  
  6668.  BUTTON.SCR          This tests button press and release functions. 
  6669.  
  6670.  
  6671. ΓòÉΓòÉΓòÉ 11.3. Evaluation of Test Case Results ΓòÉΓòÉΓòÉ
  6672.  
  6673. Unless otherwise stated in the test case descriptions, all test cases are 
  6674. expected to succeed.  If a test case fails in a mode detectable by DOSMOUSE, 
  6675. then the token "ERROR" will be written to the corresponding log file. 
  6676.  
  6677.  
  6678. ΓòÉΓòÉΓòÉ 12. Parallel Port Device Driver ΓòÉΓòÉΓòÉ
  6679.  
  6680. The OS/2 parallel port device driver is a base physical device driver that 
  6681. supports the parallel port device interface for OS/2. There are two distinct 
  6682. versions of the parallel port device driver: 
  6683.  
  6684.  PRINT01.SYS      Supporting parallel port adapters on ISA/EISA bus machines 
  6685.  PRINT02.SYS      Supporting parallel port adapters on Micro Channel machines 
  6686.                   (machines containing Micro Channel architecture). 
  6687.  
  6688.  PRINT01.SYS manipulates the hardware ports through I/O instructions. The Micro 
  6689.  Channel parallel port device driver does not access the hardware ports. 
  6690.  Advanced BIOS (ABIOS), which executes on Micro Channel machines, replaces the 
  6691.  hardware port manipulation done on the ISA/EISA bus machines. 
  6692.  
  6693.  Only one of these physical device drivers will be resident for each machine 
  6694.  running in OS/2. Because the parallel port device driver is a base physical 
  6695.  device driver, OS/2 determines the system's hardware configuration and 
  6696.  automatically installs and initializes the appropriate physical device driver. 
  6697.  OS/2 adds a BASEDEV= statement for the device driver to the CONFIG.SYS file. 
  6698.  
  6699.  
  6700. ΓòÉΓòÉΓòÉ 12.1. Overview ΓòÉΓòÉΓòÉ
  6701.  
  6702. The parallel port device drivers service parallel port requests from DOS, 
  6703. WIN-OS/2, and OS/2 applications (including those running under the Presentation 
  6704. Manager). Requests are serialized by the spooler so that mixed printer output 
  6705. will not occur. Printer requests include: 
  6706.  
  6707.    o  Initializing a parallel port device 
  6708.  
  6709.    o  Sending characters to a parallel port device 
  6710.  
  6711.    o  Returning the status of a parallel port device 
  6712.  
  6713.    o  Handling IOCtl function calls, including the setting of the parallel port 
  6714.       device's frame control (characters per line and lines per inch) 
  6715.  
  6716.  In addition, the parallel port device drivers include character device monitor 
  6717.  support. The parallel port device driver sends data to a character device 
  6718.  monitor, if one is installed. 
  6719.  
  6720.  The primary method of communicating with the parallel port device driver is 
  6721.  through a request packet. When the parallel port device driver receives a 
  6722.  request packet, it determines which device the request is for. If a request is 
  6723.  not already in progress, the physical device driver calls an appropriate 
  6724.  routine to handle the request. If a request is in progress, the physical 
  6725.  device driver blocks the caller's thread until the in-progress request has 
  6726.  completed. Once the in-progress request has been serviced, the physical device 
  6727.  driver will run the caller's thread and process the waiting request. 
  6728.  
  6729.  To make a request of the printer, an OS/2 application pushes parameters (for 
  6730.  example, the address of characters to be written) onto its stack, and calls 
  6731.  the file system API (for example, DosWrite). The file system: 
  6732.  
  6733.    o  Determines that the request is for the parallel port device driver (based 
  6734.       on the specified device handle) 
  6735.  
  6736.    o  Creates a request packet 
  6737.  
  6738.    o  Issues a call to the parallel port device driver strategy routine 
  6739.  
  6740.  To make a request of the printer from a DOS session, an application moves the 
  6741.  parameters into predefined registers and issues an INT 17h or INT 21h. The INT 
  6742.  17h is intercepted by the virtual parallel port device driver. Refer to OS/2 
  6743.  Virtual Device Driver Reference for more information. The INT 21h request is 
  6744.  converted into a request packet and issued to the device driver strategy 
  6745.  routine. 
  6746.  
  6747.  
  6748. ΓòÉΓòÉΓòÉ 12.2. Replacing the Parallel Port Device Driver ΓòÉΓòÉΓòÉ
  6749.  
  6750. The parallel port device drivers contain four device headers in their data 
  6751. segments with the reserved device names PRN, LPT1, LPT2, and LPT3.  These 
  6752. device names correspond to the three physical devices supported by this 
  6753. physical device driver. Notice that the names PRN and LPT1, although logically 
  6754. appearing different, correspond to the same physical device. 
  6755.  
  6756. The parallel port device driver is replaceable.  It is uninstalled by creating 
  6757. another parallel port device driver with the device name in the device header 
  6758. identical as the one listed above. It can then be reinstalled by specifying the 
  6759. new parallel port device driver in a DEVICE= statement in CONFIG.SYS. 
  6760.  
  6761. Note:  Installation of the files associated with the new device driver, and the 
  6762.        addition of the corresponding DEVICE= statement in the CONFIG.SYS file, 
  6763.        is accomplished through the DDINSTAL utility and the Device Driver 
  6764.        Profile (DDP) for the new device driver. 
  6765.  
  6766.  When the DEVICE= statement for the new parallel port device driver is 
  6767.  encountered in CONFIG.SYS during system initialization, the system generates a 
  6768.  DEINSTALL request packet and sends it to the parallel port device driver. The 
  6769.  OS/2 parallel port device driver receives the DEINSTALL request packet and 
  6770.  releases its resources. Refer to the strategy command, "14h / DEINSTALL" in 
  6771.  the OS/2 Physical Device Driver Reference for more information. 
  6772.  
  6773.  If the parallel port device driver successfully releases its resources, it 
  6774.  returns a successful completion on the Deinstallation request. When the 
  6775.  parallel port device driver has been deinstalled, the system then generates an 
  6776.  INSTALL request packet and sends it to the new device driver. Refer to the 
  6777.  strategy command, "0h /INIT" in the OS/2 Physical Device Driver Reference for 
  6778.  more information. 
  6779.  
  6780.  
  6781. ΓòÉΓòÉΓòÉ 12.3. Parallel Port IRQ Performance ΓòÉΓòÉΓòÉ
  6782.  
  6783. The Programmable Interrupt Controller (PIC) under OS/2 2.1, IRQ3 (serial port) 
  6784. has the highest priority in the system. This has given IRQ7 (parallel port) a 
  6785. much higher priority than it would otherwise have. It is now higher in priority 
  6786. than the keyboard or the mouse. A system unit running multiple parallel port 
  6787. devices, that can receive data quickly on a combination of serial/parallel port 
  6788. devices at a high rate of speed (for example, a laser printer with several 
  6789. megabytes of memory) can experience slow user input performance from the mouse 
  6790. and keyboard. 
  6791.  
  6792. Several alternatives exist to improve user input performance. One alternative, 
  6793. for attended print servers, is to ensure the system unit supports a direct 
  6794. memory access (DMA) parallel or serial port. The parallel port device driver 
  6795. takes advantage of DMA, which reduces the number of hardware interrupts in the 
  6796. system. Fewer high priority interrupts in the system allow the processor to 
  6797. spend more time processing lower priority interrupts. 
  6798.  
  6799. Another alternative is to convert a parallel port device to run using the 
  6800. serial port and to reduce the bit rate to the serial device. The ASYNC adapter 
  6801. must support extended hardware buffering. For more information on this 
  6802. approach, refer to the Physical ASYNC Communications Device Driver in the OS/2 
  6803. Physical Device Driver Reference. 
  6804.  
  6805. A last alternative for those situations where user responsiveness is extremely 
  6806. important is to reduce the number of print files being sent to the print server 
  6807. by moving some of the devices to other system units (thus balancing the 
  6808. workload among several system units available) or to reduce the user 
  6809. installable memory within the device. 
  6810.  
  6811.  
  6812. ΓòÉΓòÉΓòÉ 12.4. DMA Parallel Port Support ΓòÉΓòÉΓòÉ
  6813.  
  6814. The OS/2 2.1 (and later) parallel port device driver for PS/2 systems supports 
  6815. DMA parallel ports using the ABIOS parallel port functions found on those 
  6816. system units. 
  6817.  
  6818. Using the parallel port in a Programmed I/O (PIO) methodology causes the 
  6819. processor to be involved on each byte transmitted. This prevents the processor 
  6820. from performing other operations. 
  6821.  
  6822. Using the parallel port in a DMA methodology causes the processor to be 
  6823. involved on each buffer transmitted. The larger the buffer, the fewer 
  6824. interrupts to the CPU, and the more time the CPU can spend doing other useful 
  6825. work. 
  6826.  
  6827.  
  6828. ΓòÉΓòÉΓòÉ 12.5. Code Page Support ΓòÉΓòÉΓòÉ
  6829.  
  6830. The parallel port device driver provides code page support through the OS/2 
  6831. character device monitor mechanism (for example, the spooler). In addition, 
  6832. three printer IOCtl commands support code page and font switching so that an 
  6833. application has the ability to change the active code page and font in the 
  6834. middle of its print job. 
  6835.  
  6836. Because the spooler is no longer a character monitor, code page and font 
  6837. switching is handled before the parallel port device driver receives the data. 
  6838. This section remains for compatibility. 
  6839.  
  6840.  
  6841. ΓòÉΓòÉΓòÉ 12.5.1. Parallel Port (Printer) Monitors ΓòÉΓòÉΓòÉ
  6842.  
  6843. The parallel port device driver defines a data stream for each parallel port 
  6844. device. In addition, each printer data stream can be monitored by parallel port 
  6845. device monitor applications, registered with one of two monitor chains. 
  6846. Character device monitor support is provided by the parallel port device 
  6847. driver, therefore, for each parallel port device. 
  6848.  
  6849. To register a monitor for one of the parallel port devices, an application 
  6850. issues the DosMonOpen and DosMonReg monitor function calls. DosMonReg generates 
  6851. an IOCtl request for the application to the parallel port device driver to 
  6852. register a monitor on one of the two monitor chains associated with the device. 
  6853. See Category 0Ah, "Register Monitor" (Function 40h), which can be found in the 
  6854. OS/2 Physical Device Driver Reference. When the parallel port device driver 
  6855. receives this request, it: 
  6856.  
  6857.    o  Creates a monitor chain for that device by calling the 
  6858.       DevHlp_MonitorCreate, if none was previously created as the result of 
  6859.       another register monitor IOCtl request. 
  6860.  
  6861.    o  Registers the monitor with the monitor chain by calling the 
  6862.       DevHlp_Register. 
  6863.  
  6864.  By setting the DosMonReg index parameter appropriately, the application 
  6865.  specifies on which of the two monitor chains its monitors are registered. The 
  6866.  first monitor chain (specified by the application by setting Index=1) is 
  6867.  considered to be the data chain, and is used by the parallel port device 
  6868.  driver to send data to a monitor. The second monitor chain (specified by the 
  6869.  application by setting Index=2) is considered to be the code page chain. 
  6870.  
  6871.  To ensure that printer requests are processed in order, the parallel port 
  6872.  device driver places all data and code page requests into only the first 
  6873.  monitor chain (referred to as the data chain). That is, the parallel port 
  6874.  device driver issues MonWrite calls only to the data chain. The parallel port 
  6875.  device driver does not place data into the code page chain by calling 
  6876.  MonWrite. 
  6877.  
  6878.  To improve performance, the second monitor chain (code page chain) is used by 
  6879.  the parallel port device driver primarily to receive the results of a code 
  6880.  page request. Processes that issue code page requests are blocked until they 
  6881.  receive an indication that their request is valid. Since the number of code 
  6882.  page requests is negligible compared to the number of data requests, parallel 
  6883.  port monitors can respond more quickly and efficiently to the physical device 
  6884.  driver through the code page chain. 
  6885.  
  6886.  In summary, parallel port monitors: 
  6887.  
  6888.    o  Receive all data and code page requests from the first monitor chain (see 
  6889.       DosMonRead) 
  6890.  
  6891.    o  Return data requests to the first monitor chain (see DosMonWrite) 
  6892.  
  6893.    o  Return code page requests to the first or the second monitor chain (see 
  6894.       DosMonWrite), depending on the position of the monitor when other 
  6895.       monitors are registered with the chain (see below) 
  6896.  
  6897.       Note:  The parallel port device driver expects to receive the monitor 
  6898.              responses to code page requests on the code page chain. If monitor 
  6899.              responses to code page requests are not received from any monitor 
  6900.              on the code page chain, unpredictable results can occur. 
  6901.  
  6902.  
  6903.  The spooler is an example of an application that registers a parallel port 
  6904.  monitor with both the data chain and the code page chain for a parallel port 
  6905.  device. When the spooler registers the monitor with the second chain (see 
  6906.  DosMonReg, with Index=2) the monitor input buffer specified is not used 
  6907.  because no requests are placed into the second monitor chain by the parallel 
  6908.  port device driver. 
  6909.  
  6910.  Parallel port monitors must be designed with extreme care. They must be 
  6911.  positioned carefully when other parallel port monitors, in particular the 
  6912.  spooler, are registered: 
  6913.  
  6914.    o  If an application monitor wishes only to process character data, it 
  6915.       registers a parallel port monitor only on the data chain (Index=1) when: 
  6916.  
  6917.         1. It is the only monitor in the monitor chain (for example, the 
  6918.            spooler is not loaded). 
  6919.  
  6920.         2. It is registered in a position to process the data after the 
  6921.            spooler. This monitor never sees code page requests from the 
  6922.            spooler, because the spooler automatically sends these requests back 
  6923.            to the physical device driver through the code page chain. 
  6924.  
  6925.    o  If an application wishes to process both character data and code page 
  6926.       requests, it registers a parallel port monitor on the data chain 
  6927.       (Index=1) and a parallel port monitor on the code page chain (Index=2) 
  6928.       when: 
  6929.  
  6930.         1. It is the only monitor in the monitor chain. It must expect to 
  6931.            receive both data and code page requests on the data chain. It must 
  6932.            respond to the code page requests on the code page chain as quickly 
  6933.            as possible. 
  6934.  
  6935.         2. It is registered in a position to process data after the spooler. It 
  6936.            must expect to receive character data from the spooler on the data 
  6937.            chain and the code page requests from the spooler on the code page 
  6938.            chain. 
  6939.  
  6940.            Because the spooler passes the code page results along the code page 
  6941.            chain before all the data has been spooled and released to be 
  6942.            printed, a parallel port monitor cannot easily synchronize the code 
  6943.            page requests with the data requests. 
  6944.  
  6945.    o  If a parallel port monitor wishes to process character data and code page 
  6946.       requests, and it is registered in a position to process data before the 
  6947.       spooler, it registers on the data chain (Index=1) only. 
  6948.  
  6949.       All data and code page requests are sent to the first (nonspooler) 
  6950.       monitor on the data chain. Because the spooler receives data and code 
  6951.       page requests from the data chain only, this monitor must pass on to the 
  6952.       spooler through the data chain all the information it receives in the 
  6953.       order that it is received. 
  6954.  
  6955.  
  6956. ΓòÉΓòÉΓòÉ 12.5.2. IOCtl Support of Code Page and Font Switching ΓòÉΓòÉΓòÉ
  6957.  
  6958. The parallel port device driver has three printer-specific IOCtl commands to 
  6959. support the code page and font switching provided in OS/2 2.1 (and later). In 
  6960. order to support these IOCtl calls, there are Font Monitor Buffer 
  6961. command/responses in the monitor interface between the parallel port device 
  6962. driver and the spooler. 
  6963.  
  6964. All of the actual code page and font switching functions for printers are 
  6965. provided by the code page switcher or OS/2 printer drivers. When the spooler is 
  6966. started, it checks to see if code page support is required. If it is, the 
  6967. spooler causes the code page switcher to be loaded and initialized. The spooler 
  6968. interfaces with the code page switcher through the DosPFSxxx API functions. If 
  6969. a DEVINFO= statement is not specified in the CONFIG.SYS file, the spooler 
  6970. redirects code page requests to the Presentation Manager device drivers. 
  6971.  
  6972. The following illustrates the dialog between the parallel port device driver 
  6973. and the spooler when the parallel port device driver receives one of these 
  6974. special IOCtl requests from an application: 
  6975.  
  6976.    1. The parallel port device driver receives an IOCtl request from an 
  6977.       application to activate a code page. 
  6978.  
  6979.    2. If the spooler is loaded, the parallel port device driver sends a Font 
  6980.       Monitor Buffer command to the spooler in the form of a special monitor 
  6981.       record placed into the data monitor chain (refer to MonWrite in the OS/2 
  6982.       Physical Device Driver Reference). 
  6983.  
  6984.    3. The spooler calls DosMonRead to receive this special monitor record from 
  6985.       its monitor input buffer registered with the data monitor chain. 
  6986.  
  6987.    4. When the spooler receives this special monitor record, it either calls 
  6988.       DosPFSActivate to get information from the Define Code Page (DCP) system 
  6989.       files, or it calls the appropriate Presentation Manager routines to get 
  6990.       the code page information pertaining to the particular printer. This 
  6991.       information is placed into a temporary spooler file. 
  6992.  
  6993.    5. The spooler sends a return code back to the parallel port device driver 
  6994.       by calling DosMonWrite to place a special monitor record (that is, a Font 
  6995.       Monitor Buffer response) into its monitor output buffer registered with 
  6996.       the code page chain. 
  6997.  
  6998.  The three printer specific IOCtl commands to support code page and font 
  6999.  switching are: 
  7000.  
  7001.  Activate Font: When an application issues a DosOpen for a printer (that is, 
  7002.  PRN, LPT1, LPT2, or LPT3), the file system issues an Activate Font IOCtl to 
  7003.  the parallel port device driver to set the active code page and font, 
  7004.  according to the active code page of the process making the Open request. At 
  7005.  any time, an application can also issue the IOCtl, "Activate Font" (Function 
  7006.  48h), to the parallel port device driver by using the handle returned from the 
  7007.  DosOpen call to open the device. This allows the application to change the 
  7008.  active code page and font in the middle of its print job. 
  7009.  
  7010.  If the parallel port device driver receives the Activate Font IOCtl, and the 
  7011.  spooler or another monitor is registered, the parallel port device driver 
  7012.  sends a Font Monitor Buffer command (in this case, an Activate Font command) 
  7013.  to the monitor on the data chain. The monitor calls DosMonRead to receive this 
  7014.  special monitor record from its monitor input buffer registered on the data 
  7015.  chain. The monitor sends a Font Monitor Buffer response to this command and to 
  7016.  the parallel port device driver by calling DosMonWrite.  The monitor then 
  7017.  places a special monitor record into its monitor output buffer registered on 
  7018.  the code page chain. If the spooler or another monitor is not registered, the 
  7019.  parallel port device driver returns the appropriate return code to the caller 
  7020.  of the Activate Font IOCtl. 
  7021.  
  7022.  Query Active Font: When the parallel port device driver receives the Query 
  7023.  Active Font IOCtl request, and if the spooler or another monitor is 
  7024.  registered, the parallel port device driver sends a Font Monitor Buffer 
  7025.  command (in this case, a "Query Active Font", Function 69h) to the monitor on 
  7026.  the data chain. The monitor calls DosMonRead to receive this special monitor 
  7027.  record from its monitor input buffer registered on the data chain. The monitor 
  7028.  calls DosMonWrite to send a Font Monitor Buffer response to this command to 
  7029.  the parallel port device driver. This places a special monitor record into its 
  7030.  monitor output buffer registered on the code page chain. The parallel port 
  7031.  device driver then returns the active code page and font information to the 
  7032.  caller of the Query Active Font IOCtl. If the spooler or another monitor is 
  7033.  not registered, the parallel port device driver returns the appropriate return 
  7034.  code to the caller of the Query Active Font IOCtl. 
  7035.  
  7036.  Verify Font: If the parallel port device driver receives the Verify Font IOCtl 
  7037.  request, and if the spooler or another monitor is registered, the parallel 
  7038.  port device driver sends a Font Monitor Buffer command (in this case, "Verify 
  7039.  Font", Function 6Ah, which can be found in the OS/2 Physical Device Driver 
  7040.  Reference) to the monitor on the data chain. The monitor receives this special 
  7041.  monitor record, from its monitor input buffer registered on the data chain, by 
  7042.  calling DosMonRead. The monitor sends a Font Monitor Buffer response to this 
  7043.  command to the parallel port device driver by calling DosMonWrite. This places 
  7044.  a special monitor record into its monitor output buffer registered on the code 
  7045.  page chain. The parallel port device driver then returns the return code to 
  7046.  the caller of the Verify Font IOCtl. If the spooler or another monitor is not 
  7047.  registered, the parallel port device driver returns the appropriate return 
  7048.  code to the caller of the Verify Font IOCtl. 
  7049.  
  7050.  Refer to "Generic IOCtl Interface" and "Monitor Dispatcher Notification 
  7051.  Interface", which can be found in the OS/2 Physical Device Driver Reference 
  7052.  for specific interface parameters. 
  7053.  
  7054.  
  7055. ΓòÉΓòÉΓòÉ 12.6. Character Monitor Performance ΓòÉΓòÉΓòÉ
  7056.  
  7057. The character monitor buffer of the parallel port device driver has a size of 
  7058. 134 bytes. The PRINTMONBUFSIZE= command, within CONFIG.SYS, provides a method 
  7059. for character monitors to increase this size, and thereby increase performance 
  7060. of data to devices connected to the parallel port. The parallel port device 
  7061. driver allocates and registers its monitor chain buffer based upon the value 
  7062. specified. 
  7063.  
  7064. The format of this command is: 
  7065.  
  7066. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  7067.  
  7068.  
  7069.     PRINTMONBUFSIZE=xxxx,xxxx,xxxx
  7070.  
  7071.     Where:
  7072.             xxxx corresponds to LPT1, LPT2, and LPT3 character monitor
  7073.             buffer size, respectively.
  7074.  
  7075. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  7076.  
  7077. The minimum value allowed for compatibility with existing character monitors is 
  7078. 134 bytes. The maximum value is 2048 bytes. If a value that is out of the valid 
  7079. range is specified, a default value of 134 bytes is used. 
  7080.  
  7081. Character monitors can dynamically determine the size of a device driver's 
  7082. monitor buffer by issuing a DosMonReg call with a 2-WORD buffer: 
  7083.  
  7084.    o  The first WORD consists of the length of the buffer (4). 
  7085.  
  7086.    o  The second WORD (on return from the call) contains the size of the device 
  7087.       driver's monitor chain buffer. 
  7088.  
  7089.  DosMonReg returns with the return code ERROR_MON_BUFFER_TOO_SMALL. The 
  7090.  character monitor then allocates the monitor buffer to the correct size and 
  7091.  reissues the call to DosMonReg. 
  7092.  
  7093.  
  7094. ΓòÉΓòÉΓòÉ 12.7. Parallel Port IRQ Timeout Processing ΓòÉΓòÉΓòÉ
  7095.  
  7096. The parallel port device driver sets a 120-second timer after receiving a Write 
  7097. request and sending the first byte to the parallel port. If a hardware 
  7098. interrupt is not generated after 120 seconds, the timer expires and a timeout 
  7099. occurs. 
  7100.  
  7101. There are two different mechanisms for processing timeouts: 
  7102.  
  7103.    o  If infinite retry is enabled, the parallel port device driver does not 
  7104.       terminate the request and indefinitely continues to try to send the data 
  7105.       to the printer. 
  7106.  
  7107.    o  If infinite retry is disabled, the parallel port device driver terminates 
  7108.       the Write request, returning the number of actual bytes sent to the 
  7109.       device. 
  7110.  
  7111.  When a monitor is registered, infinite retry is always enabled. The parallel 
  7112.  port device driver sends a status monitor packet through the data chain 
  7113.  (Index=1) when a timeout error occurs. This activity alerts all monitors of 
  7114.  the error. 
  7115.  
  7116.  If a hardware interrupt does occur, the parallel port device driver resets the 
  7117.  timer to 120 seconds and sends the next byte to the device. This activity 
  7118.  continues until all data has been sent to the device. Once the parallel port 
  7119.  device driver determines that all characters have been sent, it turns the 
  7120.  timer OFF. 
  7121.  
  7122.  
  7123. ΓòÉΓòÉΓòÉ 12.8. Parallel Port Device Driver Interfaces ΓòÉΓòÉΓòÉ
  7124.  
  7125. The parallel port device driver has several interfaces: 
  7126.  
  7127.    o  Request Packet interface (referred to as the Strategy interface) 
  7128.  
  7129.    o  INT 21h interface 
  7130.  
  7131.    o  Generic IOCtl interface 
  7132.  
  7133.    o  Hardware Interrupt interface 
  7134.  
  7135.    o  Monitor Dispatcher Notification interface 
  7136.  
  7137.  
  7138. ΓòÉΓòÉΓòÉ 12.8.1. Request Packet Interface ΓòÉΓòÉΓòÉ
  7139.  
  7140. The file system is the primary component that interfaces with the parallel port 
  7141. device driver. In response to a function call, the file system creates a 
  7142. request packet containing the information required by the parallel port device 
  7143. driver to process the request. The file system then calls the parallel port 
  7144. device driver's strategy entry point, with the registers ES:BX containing the 
  7145. address of the request packet. 
  7146.  
  7147. The Strategy interface uses the Call/Far return model and must preserve the 
  7148. caller's registers. The strategy entry point routes all IOCtl requests and all 
  7149. Open, Read, Write, Close, and Status requests to the appropriate internal 
  7150. parallel port device driver routines to handle the requests. For a description 
  7151. and format of a request packet, refer to the physical device driver strategy 
  7152. commands, which can be found in the OS/2 Physical Device Driver Reference. 
  7153.  
  7154.  
  7155. ΓòÉΓòÉΓòÉ 12.8.1.1. Request Packet Command Summary ΓòÉΓòÉΓòÉ
  7156.  
  7157. The command code field of a request packet contains the function requested of 
  7158. the physical device driver. The parallel port device driver is a character 
  7159. device driver and supports all character device driver functions. 
  7160.  
  7161. A detailed description of these commands can be found in the OS/2 Physical 
  7162. Device Driver Reference. 
  7163.  
  7164.  
  7165. ΓòÉΓòÉΓòÉ 12.8.1.2. Request Packet Status Description ΓòÉΓòÉΓòÉ
  7166.  
  7167. On the call to the parallel port device driver, the status code is set to 0. On 
  7168. return from the physical device driver, the status code contains the results of 
  7169. the request (for example, done or error). The parallel port device driver sets 
  7170. the error bit, busy bit, done bit, and error code, when necessary. 
  7171.  
  7172.  
  7173. ΓòÉΓòÉΓòÉ 12.8.1.3. Return Codes ΓòÉΓòÉΓòÉ
  7174.  
  7175. The error codes that the parallel port device driver returns are listed below: 
  7176.  
  7177.  8102h     Device not ready 
  7178.  
  7179.  8103h     Unknown command 
  7180.  
  7181.  8109h     Printer out of paper 
  7182.  
  7183.  810Ah     Write fault 
  7184.  
  7185.  810Ch     General failure 
  7186.  
  7187.  8111h     Character I/O call interrupted 
  7188.  
  7189.  8113h     Invalid parameter 
  7190.  
  7191.  If the parallel port device driver does not support a request, a status of 
  7192.  8103h (unknown command) is returned. 
  7193.  
  7194.  
  7195. ΓòÉΓòÉΓòÉ 12.8.2. INT 21h Interface ΓòÉΓòÉΓòÉ
  7196.  
  7197. An application running in a DOS session can access the parallel port device 
  7198. driver through INT 21h. The file system creates a request packet from the 
  7199. parameters and calls the parallel port device driver at its strategy entry 
  7200. point. This interface maintains compatibility with DOS applications. As in the 
  7201. Request Packet interface, the parallel port device driver preserves the 
  7202. caller's registers ES:BX and points to the request packet. The strategy entry 
  7203. point follows the Call/Far return model. 
  7204.  
  7205.  
  7206. ΓòÉΓòÉΓòÉ 12.8.3. Generic IOCtl Interface ΓòÉΓòÉΓòÉ
  7207.  
  7208. The parallel port device driver supports a set of generic IOCtl functions. 
  7209. Refer to the parallel port control IOCtl commands in the OS/2 Physical Device 
  7210. Driver Reference for a list and detailed description of these functions. 
  7211.  
  7212. Note:  From the command line, a user can start the MODE command to perform the 
  7213.        parallel port control functions Set/Query Frame Control and Set/Query 
  7214.        Infinite Retry. See the description of the MODE command in the OS/2 
  7215.        Command Reference. 
  7216.  
  7217.  
  7218. ΓòÉΓòÉΓòÉ 12.8.3.1. Parallel Port Device Driver Support ΓòÉΓòÉΓòÉ
  7219.  
  7220. All the Category 05h IOCtl commands are supported by the parallel port device 
  7221. driver. Additionally, the following IOCtls are also supported by the parallel 
  7222. port device driver: 
  7223.  
  7224.  Category 0Ah      Character Monitor Control. Supported by the physical 
  7225.                    keyboard, mouse, and parallel port device drivers. 
  7226.  
  7227.       Function 40h 
  7228.            Register (A character monitor) 
  7229.  
  7230.  Category 0Bh      General Device Control. Supported by all the character 
  7231.                    device drivers. 
  7232.  
  7233.       Function 01h 
  7234.            Flush input buffer 
  7235.  
  7236.       Function 02h 
  7237.            Flush output buffer 
  7238.  
  7239.       Function 60h 
  7240.            Query monitor support 
  7241.  
  7242.  
  7243. ΓòÉΓòÉΓòÉ 12.8.3.2. Character Monitor Control ΓòÉΓòÉΓòÉ
  7244.  
  7245. The IOCtl Category 0Ah "Register Monitor" (Function 40h), which can be found in 
  7246. the OS/2 Physical Device Driver Reference, is supported by the physical 
  7247. keyboard and mouse device drivers, as well as by the parallel port device 
  7248. driver. The index field of the data packet received on this call is device 
  7249. specific. That is, it is defined differently for each physical device driver. 
  7250. The index field generally indicates on which monitor chain an application 
  7251. wishes to register a monitor. 
  7252.  
  7253. As previously discussed, the parallel port device driver creates two monitor 
  7254. chains for each parallel port device - a data chain and a code page chain. An 
  7255. application issuing this IOCtl function call to a specified parallel port 
  7256. device sets the index parameter as follows: 
  7257.  
  7258.    o  Index=1 Registers a monitor with the data chain. 
  7259.  
  7260.    o  Index=2 Registers a monitor with the code page chain. 
  7261.  
  7262.  
  7263. ΓòÉΓòÉΓòÉ 12.8.4. Hardware Interrupt (8259) Interface ΓòÉΓòÉΓòÉ
  7264.  
  7265. When a hardware interrupt is pending on an interrupt level owned by the 
  7266. parallel port device driver, the hardware interrupt manager calls the parallel 
  7267. port device driver's hardware interrupt entry point for that interrupt level. 
  7268. PRINT01.SYS runs parallel port devices using hardware interrupt levels IRQ 7 
  7269. and IRQ 5. PRINT02.SYS runs parallel port devices on hardware interrupt level 
  7270. IRQ 7. The parallel port device driver for Micro Channel machines shares the 
  7271. hardware interrupt level IRQ 7. 
  7272.  
  7273. Each of the parallel port device driver's hardware entry points call a parallel 
  7274. port device driver general interrupt routine. This routine sends the next 
  7275. character to the port, issues an EOI (End-Of-Interrupt), and completes a 
  7276. strategy request when the last character has been received by the device. 
  7277.  
  7278. The hardware interrupt manager saves all registers before calling the parallel 
  7279. port device driver interrupt entry points. On return to the hardware interrupt 
  7280. manager, the parallel port device driver's general interrupt routine clears the 
  7281. carry flag, signalling the interrupt manager that the parallel port device 
  7282. driver owns the interrupt. If the parallel port device driver does not own the 
  7283. hardware interrupt, it sets the carry flag. The parallel port device driver's 
  7284. hardware interrupt routine follows the Call/Return Far model and does not 
  7285. handle nested interrupts. 
  7286.  
  7287.  
  7288. ΓòÉΓòÉΓòÉ 12.8.5. Monitor Dispatcher Notification Interface ΓòÉΓòÉΓòÉ
  7289.  
  7290. The OS/2 parallel port device driver supports character device monitors. For a 
  7291. description of how that support is provided, see Parallel Port (Printer) 
  7292. Monitors. 
  7293.  
  7294. Data sent to each parallel port device can be monitored before reaching the 
  7295. device by parallel port monitor applications registered with one of two monitor 
  7296. chains. When a parallel port monitor is registered, the parallel port device 
  7297. driver calls the MonWrite device helper runtime to place all requests (in the 
  7298. form of monitor records or packets) into its monitor chains. Each parallel port 
  7299. monitor registered on the monitor chain can monitor the data destined for the 
  7300. parallel port. Parallel port data that has passed through all monitors 
  7301. registered on the monitor chain is placed into a parallel port device driver 
  7302. monitor chain buffer by the OS/2 monitor dispatcher. 
  7303.  
  7304. A monitor chain for a parallel port device is created when the parallel port 
  7305. device driver calls MonitorCreate. For each monitor chain, the parallel port 
  7306. device driver must provide: 
  7307.  
  7308.    o  A device driver monitor chain buffer, into which the monitor dispatcher 
  7309.       places the filtered parallel port data after it has passed through all 
  7310.       the parallel port monitors in the monitor chain. 
  7311.  
  7312.       The length of the parallel port device driver's monitor chain buffer is 
  7313.       134 bytes. This length is specified by the parallel port device driver in 
  7314.       the first WORD of the buffer when MonitorCreate is called. The length of 
  7315.       parallel port monitor input and output buffers, registered with a 
  7316.       parallel port monitor chain, must be greater than or equal to 134 bytes 
  7317.       plus 20 bytes. 
  7318.  
  7319.    o  The address of a notification routine that is called by the monitor 
  7320.       dispatcher when it has placed filtered data into the monitor chain 
  7321.       buffer. 
  7322.  
  7323.       Before the monitor dispatcher calls the parallel port device driver's 
  7324.       notification routine, it: 
  7325.  
  7326.         1. Places a data record in the parallel port device driver's monitor 
  7327.            chain buffer starting at the second WORD of the buffer 
  7328.  
  7329.         2. Places the length of the data record (in bytes) in the first WORD of 
  7330.            the parallel port device driver's monitor chain buffer 
  7331.  
  7332.         3. Sets the register pair ES:SI to point to the parallel port device 
  7333.            driver's monitor chain buffer 
  7334.  
  7335.  The general monitor packet format for code page processing is described in the 
  7336.  following table. 
  7337.  
  7338.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  7339.   ΓöéField                         ΓöéLength                        Γöé
  7340.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7341.   ΓöéMonitor Flags                 ΓöéWORD                          Γöé
  7342.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7343.   ΓöéSystem File Number            ΓöéWORD                          Γöé
  7344.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7345.   ΓöéCommand Byte                  ΓöéBYTE                          Γöé
  7346.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7347.   ΓöéReserved. Set to 0.           ΓöéBYTE                          Γöé
  7348.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7349.   ΓöéReserved. Set to 0.           ΓöéBYTE                          Γöé
  7350.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7351.   ΓöéReserved. Set to 0.           ΓöéBYTE                          Γöé
  7352.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7353.   ΓöéReturn Code                   ΓöéWORD                          Γöé
  7354.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7355.   ΓöéCode Page                     ΓöéWORD                          Γöé
  7356.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7357.   ΓöéFont ID                       ΓöéWORD                          Γöé
  7358.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  7359.  
  7360.  The general monitor packet format for Open, Write, Close, Status, and 
  7361.  Print-Job-Title monitor requests is described in the following table. 
  7362.  
  7363.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  7364.   ΓöéField                         ΓöéLength                        Γöé
  7365.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7366.   ΓöéMonitor Flags                 ΓöéWORD                          Γöé
  7367.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7368.   ΓöéSystem File Number            ΓöéWORD                          Γöé
  7369.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7370.   ΓöéData to be Monitored          Γöé128 BYTES                     Γöé
  7371.   Γöé(optional)                    Γöé                              Γöé
  7372.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  7373.  
  7374.  Data items included in these data structures are defined in the descriptions 
  7375.  of the corresponding request packet data structures. The parallel port device 
  7376.  driver communicates with parallel port monitors using the monitor protocol. 
  7377.  
  7378.  
  7379. ΓòÉΓòÉΓòÉ 12.8.6. Parallel Port Monitor Buffer Command ΓòÉΓòÉΓòÉ
  7380.  
  7381. Each monitor record can be of variable length and contain a WORD of flags 
  7382. defining the type of monitor packet. 
  7383.  
  7384. Note:  Monitor packets that parallel port monitors do not understand should be 
  7385.        returned to the parallel port device driver on the monitor chains from 
  7386.        which they were received. 
  7387.  
  7388.  
  7389.     Monitor Flags        Device-Driver Dependent
  7390.  
  7391.     Byte 0               Byte 1
  7392.    ΓöîΓöÇΓö¼ΓöÇΓö¼ΓöÇΓö¼ΓöÇΓö¼ΓöÇΓö¼ΓöÇΓö¼ΓöÇΓö¼ΓöÇΓöÉ    ΓöîΓöÇΓö¼ΓöÇΓö¼ΓöÇΓö¼ΓöÇΓö¼ΓöÇΓö¼ΓöÇΓö¼ΓöÇΓö¼ΓöÇΓöÉ
  7393.    Γöé7Γöé6Γöé5Γöé4Γöé3Γöé2Γöé1Γöé0Γöé    Γöé7Γöé6Γöé5Γöé4Γöé3Γöé2Γöé1Γöé0Γöé
  7394.    ΓööΓö¼Γö┤Γö¼Γö┤Γö¼Γö┤Γö¼Γö┤Γö¼Γö┤Γö¼Γö┤Γö¼Γö┤Γö¼Γöÿ    ΓööΓö¼Γö┤Γö¼Γö┤Γö¼Γö┤Γö¼Γö┤Γö¼Γö┤Γö¼Γö┤Γö¼Γö┤Γö¼Γöÿ
  7395.     Γöé Γöé Γöé Γöé Γöé Γöé Γöé Γöé      Γöé Γöé Γöé Γöé Γöé Γöé Γöé Γöé
  7396.     Γöé Γöé Γöé Γöé Γöé Γöé Γöé ΓööΓöÇOpen Γöé Γöé Γöé Γöé Γöé Γöé Γöé ΓööΓöÇPrinter Font Monitor
  7397.     Γöé Γöé Γöé Γöé Γöé Γöé ΓööΓöÇClose  Γöé Γöé Γöé Γöé Γöé Γöé Γöé    Buffer Command Response
  7398.     Γöé Γöé Γöé Γöé Γöé ΓööΓöÇFlush    Γöé Γöé Γöé Γöé Γöé Γöé ΓööΓöÇCode Page Command Response
  7399.     Γöé Γöé Γöé Γöé ΓööΓöÇReserved   Γöé Γöé Γöé Γöé Γöé ΓööΓöÇINT 17H Code Page Request
  7400.     Γöé Γöé Γöé ΓööΓöÇReserved     Γöé Γöé Γöé Γöé ΓööΓöÇStatus
  7401.     Γöé Γöé ΓööΓöÇReserved       Γöé Γöé Γöé ΓööΓöÇReserved
  7402.     Γöé ΓööΓöÇReserved         Γöé Γöé ΓööΓöÇJob Title
  7403.     ΓööΓöÇReserved           Γöé ΓööΓöÇReserved
  7404.                          ΓööΓöÇReserved
  7405.  
  7406.  
  7407. ΓòÉΓòÉΓòÉ 12.8.6.1. Monitor Open Packet ΓòÉΓòÉΓòÉ
  7408.  
  7409. When the Open bit (byte 0, bit 0) is set to 1, the monitor buffer contains an 
  7410. open packet from the parallel port device driver. In this case, the next two 
  7411. bytes are: 
  7412.  
  7413. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  7414. ΓöéField                         ΓöéLength                        Γöé
  7415. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7416. ΓöéSystem File Number            ΓöéWORD                          Γöé
  7417. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  7418.  
  7419.  
  7420. ΓòÉΓòÉΓòÉ 12.8.6.2. Monitor Close Packet ΓòÉΓòÉΓòÉ
  7421.  
  7422. When the Close bit (byte 0, bit 1) is set to 1, the monitor buffer is a close 
  7423. packet from the parallel port device driver. In this case, the next two bytes 
  7424. are: 
  7425.  
  7426. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  7427. ΓöéField                         ΓöéLength                        Γöé
  7428. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7429. ΓöéSystem File Number            ΓöéWORD                          Γöé
  7430. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  7431.  
  7432.  
  7433. ΓòÉΓòÉΓòÉ 12.8.6.3. Monitor Write Packet ΓòÉΓòÉΓòÉ
  7434.  
  7435. When the Close bit (byte 0, bit 1) is set to 0, and the Open bit (byte 0, bit 
  7436. 0) is set to 0, the monitor buffer is a write data packet from the parallel 
  7437. port device driver. In this case, the next bytes are: 
  7438.  
  7439. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  7440. ΓöéField                         ΓöéLength                        Γöé
  7441. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7442. ΓöéSystem File Number            ΓöéWORD                          Γöé
  7443. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7444. ΓöéData to be Monitored          Γöé128 BYTES                     Γöé
  7445. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  7446.  
  7447.  
  7448. ΓòÉΓòÉΓòÉ 12.8.6.4. Font Monitor Packet ΓòÉΓòÉΓòÉ
  7449.  
  7450. When the Font Monitor Buffer Command/Response bit (byte 1, bit 0) is set to 1, 
  7451. the monitor buffer is a Font Monitor Buffer command. In this case, the next six 
  7452. bytes are: 
  7453.  
  7454. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  7455. ΓöéField                         ΓöéLength                        Γöé
  7456. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7457. ΓöéSystem File Number            ΓöéWORD                          Γöé
  7458. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7459. ΓöéCommand Byte                  ΓöéBYTE                          Γöé
  7460. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7461. ΓöéReserved. Set to 0.           ΓöéBYTE                          Γöé
  7462. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7463. ΓöéReserved. Set to 0.           ΓöéBYTE                          Γöé
  7464. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7465. ΓöéReserved. Set to 0.           ΓöéBYTE                          Γöé
  7466. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  7467.  
  7468.  Byte 2-3  System File Number 
  7469.  
  7470.  Byte 4    Font Monitor Buffer Command byte, which indicates the type of 
  7471.            command or response 
  7472.  
  7473.  Byte 5    Reserved.  Must be set to 0 
  7474.  
  7475.  Byte 6-7  Reserved.  Must be set to 0 
  7476.  
  7477.  When the Code Page Command Processed bit (byte 1, bit 1) is set to 1, the Font 
  7478.  Monitor Buffer command has been processed by the spooler. 
  7479.  
  7480.  The parallel port device driver sends Font Monitor Buffer commands to its 
  7481.  monitors through the data monitor chain (Index=1). A parallel port monitor, 
  7482.  which services the Font Monitor Buffer command, sets the Code Page command 
  7483.  processed bit and uses DosMonWrite to place the Font Monitor Buffer response 
  7484.  into the code page monitor chain (Index=2). Data to be printed continues to 
  7485.  flow on the data monitor chain. The code page monitor chain is used only for 
  7486.  the Font Monitor Buffer responses, so the parallel port device driver does not 
  7487.  block a program issuing a code page and font IOCtl request when print data 
  7488.  monitor buffers are already queued ahead of the IOCtl request. 
  7489.  
  7490.  Font Monitor Buffer Commands:  The valid Font Monitor Buffer commands, along 
  7491.  with the remainder of the buffer contents for the responses, are as follows: 
  7492.  
  7493.  Byte 4 = 01h  Activate Font. Command data, starting at byte 8: 
  7494.  
  7495.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  7496.   ΓöéField                         ΓöéLength                        Γöé
  7497.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7498.   ΓöéReturn Code                   ΓöéWORD                          Γöé
  7499.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7500.   ΓöéCode Page                     ΓöéWORD                          Γöé
  7501.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7502.   ΓöéFont ID                       ΓöéWORD                          Γöé
  7503.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  7504.  
  7505.  Return Code  A value returned, starting at byte 8, which includes the 
  7506.               following values: 
  7507.  
  7508.       0000h     Successful completion 
  7509.  
  7510.       0002h     Code page is not available 
  7511.  
  7512.       0003h     No code page function, because spooler not started 
  7513.  
  7514.       0004h     Font ID is not available (verify) 
  7515.  
  7516.       0009h     Error caused by switcher error, not by input parameters 
  7517.  
  7518.       000Ah     Error caused by invalid printer name as input 
  7519.  
  7520.       000Dh     Received code page request, when code page switcher not 
  7521.                 initialized 
  7522.  
  7523.       000Fh     SFN table full cannot activate another entry 
  7524.  
  7525.       0013h     DASD error reading font file 
  7526.  
  7527.       0015h     DASD error reading font file definition block 
  7528.  
  7529.       0017h     DASD error, while writing to temporary spool file 
  7530.  
  7531.       0018h     Disk full error, while writing to temporary spool file 
  7532.  
  7533.       0019h     Spool file handle was bad 
  7534.  
  7535.  Code Page    The value to assign to the currently active code page. 
  7536.  
  7537.       0000h           If the Code Page value and Font ID are specified as 0, 
  7538.                       set printer to hardware default code page and font. 
  7539.  
  7540.       0001h-FFFFh     Valid code page numbers. 
  7541.  
  7542.  Font ID      The ID value of the font to make currently active. 
  7543.  
  7544.       0000h           If the Code Page value and Font ID are specified as 0, 
  7545.                       set printer to hardware default code page and font. 
  7546.  
  7547.                       If only the Font ID is 0 and the Code Page is a valid 
  7548.                       nonzero, then any font within the specified code page is 
  7549.                       acceptable. 
  7550.  
  7551.       0001h-FFFFh     Valid Font ID numbers, which are font types defined by 
  7552.                       the font file definitions as fonts that can be 
  7553.                       downloaded. For cartridge fonts, Font IDs are the numbers 
  7554.                       on the cartridge label.  They are also entered in the 
  7555.                       DEVINFO statement for the printer. 
  7556.  
  7557.  The parallel port device driver passes the Font Monitor Buffer command to the 
  7558.  monitor on the data monitor chain (Index=1). The monitor returns the Font 
  7559.  Monitor Buffer response to the parallel port device driver on the code page 
  7560.  monitor chain (Index=2). 
  7561.  
  7562.  Byte 4 = 02h  Query Active Font. There is no additional command data. Data 
  7563.                returned from this function call includes: 
  7564.  
  7565.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  7566.   ΓöéField                         ΓöéLength                        Γöé
  7567.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7568.   ΓöéReturn Code                   ΓöéWORD                          Γöé
  7569.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7570.   ΓöéCode Page                     ΓöéWORD                          Γöé
  7571.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7572.   ΓöéFont ID                       ΓöéWORD                          Γöé
  7573.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  7574.  
  7575.  Return Code  A value returned, starting at byte 8, which includes the 
  7576.               following values: 
  7577.  
  7578.       0000h     Successful completion 
  7579.  
  7580.       0003h     No code page function, because spooler not started 
  7581.  
  7582.       0009h     Error caused by switcher error, not by input parameters 
  7583.  
  7584.       000Ah     Error caused by invalid printer name as input 
  7585.  
  7586.       000Dh     Received code page request, when code page switcher not 
  7587.                 initialized 
  7588.  
  7589.       0010H     Received request for SFN not in SFN table. 
  7590.  
  7591.  Code Page    On return, is set to currently active code page: 
  7592.  
  7593.       0000h           If the Code Page value and Font ID are returned as zero, 
  7594.                       the printer is set to the hardware default code page and 
  7595.                       font. 
  7596.  
  7597.       0001h-FFFFh     Valid code page numbers. 
  7598.  
  7599.  Font ID      On return, is the ID value of the Font, which is currently 
  7600.               active: 
  7601.  
  7602.       0000h           If the Code Page value and Font ID are specified as zero, 
  7603.                       the printer is set to the hardware default code page and 
  7604.                       font. A Font ID value of zero can indicate the default 
  7605.                       font of a particular code page. 
  7606.  
  7607.       0001h-FFFFh     Valid Font ID numbers, which are font types defined by 
  7608.                       the font file definitions as fonts that can be 
  7609.                       downloaded. For cartridge fonts, Font IDs are the numbers 
  7610.                       on the cartridge label.  They are also entered in the 
  7611.                       DEVINFO statement for the printer. 
  7612.  
  7613.  The parallel port device driver passes the Font Monitor Buffer command to the 
  7614.  monitor on the data monitor chain (Index=1). The monitor returns the Font 
  7615.  Monitor Buffer response to the parallel port device driver on the code page 
  7616.  monitor chain (Index=2). 
  7617.  
  7618.  Byte 4 = 03h  Verify Font. Command Data, starting at byte 8: 
  7619.  
  7620.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  7621.   ΓöéField                         ΓöéLength                        Γöé
  7622.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7623.   ΓöéReturn Code                   ΓöéWORD                          Γöé
  7624.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7625.   ΓöéCode Page                     ΓöéWORD                          Γöé
  7626.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7627.   ΓöéFont ID                       ΓöéWORD                          Γöé
  7628.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  7629.  
  7630.  Return Code  A value returned, starting at byte 8, which includes the 
  7631.               following values: 
  7632.  
  7633.       0000h     Successful completion 
  7634.  
  7635.       0002h     Code page is not available 
  7636.  
  7637.       0003h     No code page function, because spooler not started 
  7638.  
  7639.       0004h     Font ID is not available (verify) 
  7640.  
  7641.       000Ah     Error caused by invalid printer name as input 
  7642.  
  7643.       000Dh     Received code page request, when code page switcher not 
  7644.                 initialized. 
  7645.  
  7646.  Code Page    The Code Page number to validate. 
  7647.  
  7648.       0000h-FFFFh   Valid code page numbers. 
  7649.  
  7650.  Font ID      The Font ID value to validate. 
  7651.  
  7652.       0000h-FFFFh   Valid Font ID numbers. 
  7653.  
  7654.  The parallel port device driver passes the Font Monitor Buffer command to the 
  7655.  monitor on the data monitor chain (Index=1). The monitor returns the Font 
  7656.  Monitor Buffer response to the parallel port device driver on the code page 
  7657.  monitor chain (Index=2). 
  7658.  
  7659.  
  7660. ΓòÉΓòÉΓòÉ 12.8.6.5. Monitor Status Packet ΓòÉΓòÉΓòÉ
  7661.  
  7662. When the Status bit (byte 1, bit 3) is set to 1, this indicates that the 
  7663. monitor buffer is a status packet from the parallel port device driver. In this 
  7664. case, the next four bytes are: 
  7665.  
  7666. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  7667. ΓöéField                         ΓöéLength                        Γöé
  7668. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7669. ΓöéSystem File Number            ΓöéWORD                          Γöé
  7670. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7671. ΓöéError Code                    ΓöéBYTE                          Γöé
  7672. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7673. ΓöéReserved                      ΓöéBYTE                          Γöé
  7674. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  7675.  
  7676. The parallel port device driver sends either device not ready (02h), printer 
  7677. out of paper (09h), or write fault (0Ah) as the error code. 
  7678.  
  7679.  
  7680. ΓòÉΓòÉΓòÉ 12.8.6.6. Monitor-Job Title Packet ΓòÉΓòÉΓòÉ
  7681.  
  7682. A print-monitor job title packet passes the name of the file being printed to 
  7683. all monitors registered with the parallel port device driver. 
  7684.  
  7685. When the job title bit (byte 1, bit 5) is set to 1, it indicates the monitor 
  7686. buffer is a job title packet from the parallel port device driver. In this 
  7687. case, the next bytes are: 
  7688.  
  7689. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  7690. ΓöéField                         ΓöéLength                        Γöé
  7691. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7692. ΓöéSystem File Number            ΓöéWORD                          Γöé
  7693. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7694. ΓöéJob Title Length              ΓöéWORD                          Γöé
  7695. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7696. ΓöéJob Title Buffer              ΓöéBYTES                         Γöé
  7697. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  7698.  
  7699. The Job Title Length field includes the null character. The Job Title Buffer is 
  7700. terminated with the null character. The Job Title Buffer field contains bytes 
  7701. 6-131. 
  7702.  
  7703.  
  7704. ΓòÉΓòÉΓòÉ 12.8.7. Sharing the Parallel Port With Other Device Drivers ΓòÉΓòÉΓòÉ
  7705.  
  7706. The OS/2 parallel port device driver provides two functions in its physical 
  7707. device driver to physical device driver inter-device-driver communication 
  7708. (PDD-PDD IDC) interface - request exclusive access and release exclusive access 
  7709. to the parallel port.  The request exclusive access IDC function is used by 
  7710. device drivers to request sole ownership of the parallel port.  The release 
  7711. exclusive access IDC function is used by device drivers to release sole 
  7712. ownership of the parallel port.  Parameter passing is register-based and not 
  7713. stack-based. 
  7714.  
  7715. Client device drivers use the DevHlp_AttachDD to obtain the OS/2 parallel port 
  7716. device driver IDC entry point.  The client device driver requests sole 
  7717. ownership of the parallel port once it has work to perform and should release 
  7718. ownership of the parallel port once the work has completed.  Client device 
  7719. drivers obtain and release sole ownership to the parallel port by loading the 
  7720. general purpose registers with the appropriate parameters and calling the OS/2 
  7721. parallel port device driver. 
  7722.  
  7723. After obtaining sole ownership of the parallel port, the client device driver 
  7724. should then obtain the resources it needs to perform the request (including the 
  7725. hardware interrupt levels, DMA channels, and other shareable system resources). 
  7726. Prior to releasing ownership of the parallel port, the client device driver 
  7727. should release these other sharable system resources so that other client 
  7728. device drivers can obtain them.  At a minimum, the client device driver should 
  7729. release ownership of the parallel port at the completion of a kernel write 
  7730. request packet.  The process of sharing the parallel port only works when 
  7731. client device drivers cooperate with each other. 
  7732.  
  7733. Exclusive port access can be overridden with the share access option in the 
  7734. parallel port settings dialog box of a print object.  When this option is 
  7735. selected, all client device drivers requesting sole access to the parallel port 
  7736. are granted access.  The parallel port device driver does not perform the 
  7737. serialization of access to the port.  Users must perform the serialization by 
  7738. not trying to access two devices connected to the parallel port simultaneously. 
  7739. Otherwise, unpredictable results will occur. 
  7740.  
  7741. The parallel port sharing feature is not available in the OS/2 2.1 (or later) 
  7742. product. It is available through the OS/2 Driver Development Support group and 
  7743. the IBM Developer Connection Device Driver Kit for OS/2. 
  7744.  
  7745.  
  7746. ΓòÉΓòÉΓòÉ 12.8.8. Request Exclusive Access ΓòÉΓòÉΓòÉ
  7747.  
  7748. Request Exclusive Access grants the calling device driver sole ownership of the 
  7749. parallel port until a Release Exclusive Access is issued. 
  7750.  
  7751.  
  7752. ΓòÉΓòÉΓòÉ 12.8.8.1. Parameters ΓòÉΓòÉΓòÉ
  7753.  
  7754. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  7755.  
  7756.         AX = Function Code           ; 0 = Request Exclusive Access
  7757.         BX = Request Flags           ; Bit 0 = 0 Do not block
  7758.                                      ; Bit 0 = 1 Block until available
  7759.         CX = Port ID                 ; LPT1 = 0, LPT2 = 1, LPT3 = 2
  7760.         DS = Data Selector           ; OS/2 PPDD Data Selector
  7761.         ES = Data Selector of caller ; DS of caller
  7762.  
  7763. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  7764.  
  7765.  
  7766. ΓòÉΓòÉΓòÉ 12.8.8.2. Returns ΓòÉΓòÉΓòÉ
  7767.  
  7768. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  7769.  
  7770.         No error
  7771.            Carry Flag clear
  7772.            AX = 0
  7773.  
  7774.         Error
  7775.            Carry Flag set
  7776.            AX = Error code
  7777.                 Possible errors:
  7778.                 ERROR_I24_INVALID_PARAMETER
  7779.                 ERROR_I24_DEVICE_IN_USE
  7780.                 ERROR_I24_CHAR_CALL_INTERRUPTED
  7781.  
  7782. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  7783.  
  7784.  
  7785. ΓòÉΓòÉΓòÉ 12.8.9. Release Exclusive Access ΓòÉΓòÉΓòÉ
  7786.  
  7787. Release Exclusive Access releases the calling device driver from sole ownership 
  7788. to the parallel port.  Sole ownership was granted when a Request Exclusive 
  7789. Access was issued. 
  7790.  
  7791.  
  7792. ΓòÉΓòÉΓòÉ 12.8.9.1. Parameters ΓòÉΓòÉΓòÉ
  7793.  
  7794. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  7795.  
  7796.  
  7797.         AX = Function Code           ; 1 = Release Exclusive Access
  7798.         CX = Port ID                 ; LPT1 = 0, LPT2 = 1, LPT3 = 2
  7799.         DS = Data Selector           ; OS/2 PPDD Data Selector
  7800.         ES = Data Selector of caller ; DS of caller
  7801.  
  7802. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  7803.  
  7804.  
  7805. ΓòÉΓòÉΓòÉ 12.8.9.2. Results ΓòÉΓòÉΓòÉ
  7806.  
  7807. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  7808.  
  7809.         No error
  7810.            Carry Flag clear
  7811.            AX = 0
  7812.  
  7813.         Error
  7814.            Carry Flag set
  7815.            AX = Error code
  7816.                 Possible errors:
  7817.                 ERROR_I24_INVALID_PARAMETER
  7818.                 ERROR_I24_DEVICE_IN_USE
  7819.  
  7820. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  7821.  
  7822.  
  7823. ΓòÉΓòÉΓòÉ 13. Parallel Port Device Driver Test Tool ΓòÉΓòÉΓòÉ
  7824.  
  7825. This chapter explains how to use the parallel port Device Driver Test Tool. 
  7826.  
  7827.  
  7828. ΓòÉΓòÉΓòÉ 13.1. Overview ΓòÉΓòÉΓòÉ
  7829.  
  7830. The parallel port Functional Verification Tests (FVTs) exercise the Application 
  7831. Program Interfaces (APIs) defined for the DosDevIOCtl interface of parallel 
  7832. port device drivers. The tests are implemented with the Device Driver Test Tool 
  7833. (DDTT).  Each test is defined in a script file and these files can be modified 
  7834. using a text editor to create additional, specialized test cases. The test 
  7835. scripts give the user a repeatable set of tests that demonstrate parallel port 
  7836. function and performance. Errors are reported and are isolated to a specific 
  7837. test sequence and API. 
  7838.  
  7839. User input and output from each thread of the parallel port tests is performed 
  7840. by way of a separate Presentation Manager window.  Test cases log all 
  7841. information to a log files, clearly indicating the actual execution sequence in 
  7842. the event of errors. 
  7843.  
  7844.  
  7845. ΓòÉΓòÉΓòÉ 13.1.1. Parallel Port Test Architecture ΓòÉΓòÉΓòÉ
  7846.  
  7847. The DDTT provides a common front-end parser for test-case scripts. The 
  7848. following DDTT parallel-specific files are required: 
  7849.  
  7850.    o  DDTPARA.DLL 
  7851.  
  7852.    o  PARALLEL.GRA. 
  7853.  
  7854.    o  GEN.GRA - needed for test script file, REQEX.SCR 
  7855.  
  7856.    o  GENDRV.SYS - needed for test script file, REQEX.SCR 
  7857.  
  7858.  The C++ source code for DDTPARA.DLL is available on the IBM Developer 
  7859.  Connection Device Driver Kit for OS/2. 
  7860.  
  7861.  The following required, common components of the DDTT implement the DDTT's 
  7862.  programmable parser and common test functions such as SET, LOOP, and PAUSE: 
  7863.  
  7864.    o  DDTT.EXE 
  7865.  
  7866.    o  DDTT.DLL 
  7867.  
  7868.    o  GLOBAL.DLL 
  7869.  
  7870.    o  GLOBAL.GRA 
  7871.  * ================================================================== 
  7872.  
  7873.  
  7874. ΓòÉΓòÉΓòÉ 13.1.2. Installation ΓòÉΓòÉΓòÉ
  7875.  
  7876. There are two directory structures that utilize test suites in the IBM 
  7877. Developer Connection Device Driver Kit for OS/2. The TESTCERT substructure 
  7878. contains the executables and test cases; the TESTTOOL substructure contains the 
  7879. files required to change and rebuild the code for a particular test DLL. 
  7880.  
  7881. The following procedure describes installation for running test cases: 
  7882.  
  7883.    1. Copy the executable and parallel port test case files from the IBM 
  7884.       Developer Connection Device Driver Kit for OS/2 CD-ROM disc to the hard 
  7885.       drive.  All the executable (.EXE and .DLL) files can reside in one 
  7886.       directory, such as \TESTPARA.  Test-case script and command files can 
  7887.       also be placed in this directory on the hard disk. If the target 
  7888.       directory is C:\TESTPARA and the E drive contains the information from 
  7889.       the IBM Developer Connection Device Driver Kit for OS/2 CD-ROM disc, then 
  7890.       use the following commands to copy the parallel port test suite: 
  7891.  
  7892.  
  7893.                [C:\]md testpara
  7894.  
  7895.                [C:\]cd testpara
  7896.  
  7897.                [C:\testpara]copy e:\ddk_x86\testcert\inputout\function\parallel\*
  7898.  
  7899.                [C:\testpara]copy e:\ddk_x86\testcert\general\ddtt\*
  7900.  
  7901.    2. Add the C:\TESTPARA to the LIBPATH and PATH in the CONFIG.SYS file. 
  7902.  
  7903.    3. For script testcase REQEX.SCR, which requests and releases exclusive 
  7904.       access, a generic driver named GENDRV.SYS must be installed.  Edit your 
  7905.       system's CONFIG.SYS file and add the following line: 
  7906.  
  7907.                DEVICE=c:\testpara\gendrv.sys
  7908.  
  7909.    4. Reboot your machine so the new LIBPATH entry and DEVICE statement take 
  7910.       effect. 
  7911.  
  7912.  
  7913. ΓòÉΓòÉΓòÉ 13.1.3. Test-Case Execution ΓòÉΓòÉΓòÉ
  7914.  
  7915. The DDTT parallel port tests must be executed on a directly-attached printer 
  7916. device.  These tests will not work when executed against a printer device 
  7917. accessed by way of a network connection. 
  7918.  
  7919. There are two ways to run parallel port tests. To run the program from a 
  7920. command file,  be sure the files are installed in the current directory. Then, 
  7921. execute the TESTFONT or TESTPARA command files. The command file will run a set 
  7922. of script files.  The TESTFONT executes scripts related to font testing and 
  7923. requires the spooler to be enabled.  The TESTPARA executes scripts using other 
  7924. printer functions that require the spooler to be disabled. 
  7925.  
  7926. To run one script file at a time, see Description of Test Cases of the file to 
  7927. get a description of each script file. Then, after determining which script 
  7928. file to run, type in DDTT followed by the script file name: 
  7929.  
  7930.    [C:\TESTPARA]DDTT QFONT.SCR
  7931.  
  7932. After the script has finished executing, control will transfer back to the OS/2 
  7933. Window.  If the script files are run individually, and a TESTxxx command file 
  7934. has not been run first, then run SETINFO to set up your printer device. 
  7935.  
  7936. There are three different sets of script files in the DDTT parallel port 
  7937. package.  The first set is the font script files, the second set is the general 
  7938. printer script files, and the third is only one script file, REQEX.SCR, which 
  7939. requests and releases exclusive access. When TESTFONT or TESTPARA is run, it 
  7940. will ask for the printer device (such as LPT1 or LPT2). 
  7941.  
  7942. The SETINFO command file will set up the necessary information that is needed 
  7943. for the parallel port script files.  The command file will ask the following 
  7944. question: 
  7945.  
  7946.       PLEASE ENTER THE OUTPUT PORT OF YOUR PRINTER, SUCH AS LPT1
  7947.  
  7948. After this information is entered, the command file will store this information 
  7949. in the SYSINFO.TXT file. The contents of the file is 
  7950.  
  7951.            PARA SET DEVICENAME=LPT1
  7952.  
  7953.  
  7954. ΓòÉΓòÉΓòÉ 13.1.4. DDTT Parallel Port Test Grammar Function Calls ΓòÉΓòÉΓòÉ
  7955.  
  7956. The following is a list of the DDTT Parallel Port Test Grammar Function Calls: 
  7957.  
  7958.    o  PARA_OPEN 
  7959.    o  PARA_CLOSE 
  7960.    o  PARA_SETRAMECTRL 
  7961.    o  PARA_SETRETRY 
  7962.    o  PARA_INIT 
  7963.    o  PARA_ACTIVATEFONT 
  7964.    o  PARA_SETTITLE 
  7965.    o  PARA_SETWRTTIMEOUT 
  7966.    o  PARA_QFRAMECTRL 
  7967.    o  PARA_QRETRY 
  7968.    o  PARA_QPORT 
  7969.    o  PARA_QACTIVEFONT 
  7970.    o  PARA_VERIFYFONT 
  7971.    o  PARA_QWRTTIMEOUT 
  7972.    o  PARA_READFILE 
  7973.    o  PARA_WRITEFILE 
  7974.  
  7975.  
  7976. ΓòÉΓòÉΓòÉ 13.1.4.1. PARA_OPEN ΓòÉΓòÉΓòÉ
  7977.  
  7978. This function opens the given parallel port. 
  7979.  
  7980.  
  7981. ΓòÉΓòÉΓòÉ 13.1.4.1.1. Input Parameter Keywords ΓòÉΓòÉΓòÉ
  7982.  
  7983. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  7984. ΓöéKeyword             ΓöéType                ΓöéDescription         Γöé
  7985. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7986. ΓöéDEVICENAME          ΓöéSTRING              ΓöéOutput port         Γöé
  7987. Γöé                    Γöé                    Γöéidentification, suchΓöé
  7988. Γöé                    Γöé                    Γöéas LPT1             Γöé
  7989. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  7990.  
  7991.  
  7992. ΓòÉΓòÉΓòÉ 13.1.4.1.2. Output Parameter Keywords ΓòÉΓòÉΓòÉ
  7993.  
  7994. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  7995. ΓöéKeyword             ΓöéType                ΓöéDescription         Γöé
  7996. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  7997. ΓöéDRIVEHANDLE         ΓöéNUM                 ΓöéHandle number of    Γöé
  7998. Γöé                    Γöé                    Γöéoutput parallel portΓöé
  7999. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  8000.  
  8001.  
  8002. ΓòÉΓòÉΓòÉ 13.1.4.1.3. Logged Data ΓòÉΓòÉΓòÉ
  8003.  
  8004.  
  8005. None. 
  8006.  
  8007.  
  8008. ΓòÉΓòÉΓòÉ 13.1.4.2. PARA_CLOSE ΓòÉΓòÉΓòÉ
  8009.  
  8010. This function closes the opened parallel port. 
  8011.  
  8012.  
  8013. ΓòÉΓòÉΓòÉ 13.1.4.2.1. Input Parameter Keywords ΓòÉΓòÉΓòÉ
  8014.  
  8015. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  8016. ΓöéKeyword             ΓöéType                ΓöéDescription         Γöé
  8017. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8018. ΓöéDRIVEHANDLE         ΓöéNUM                 ΓöéHandle number of    Γöé
  8019. Γöé                    Γöé                    Γöéoutput parallel portΓöé
  8020. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  8021.  
  8022.  
  8023. ΓòÉΓòÉΓòÉ 13.1.4.2.2. Output Parameter Keywords ΓòÉΓòÉΓòÉ
  8024.  
  8025.  
  8026. None. 
  8027.  
  8028.  
  8029. ΓòÉΓòÉΓòÉ 13.1.4.2.3. Logged Data ΓòÉΓòÉΓòÉ
  8030.  
  8031.  
  8032. None. 
  8033.  
  8034.  
  8035. ΓòÉΓòÉΓòÉ 13.1.4.3. PARA_SETFRAMECTRL ΓòÉΓòÉΓòÉ
  8036.  
  8037. Category 05h - Function 42h 
  8038.  
  8039. This function sets frame control (characters-per-line, lines-per-inch). 
  8040.  
  8041.  
  8042. ΓòÉΓòÉΓòÉ 13.1.4.3.1. Required Input Parameter Keywords ΓòÉΓòÉΓòÉ
  8043.  
  8044. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  8045. ΓöéKeyword             ΓöéType                ΓöéDescription         Γöé
  8046. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8047. ΓöéDRIVEHANDLE         ΓöéNUM                 ΓöéHandle number of    Γöé
  8048. Γöé                    Γöé                    Γöéoutput parallel portΓöé
  8049. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8050. ΓöéCPL                 ΓöéNUM                 ΓöéCharacters-per-line Γöé
  8051. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8052. ΓöéLPI                 ΓöéNUM                 ΓöéLines-per-inch      Γöé
  8053. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  8054.  
  8055.  
  8056. ΓòÉΓòÉΓòÉ 13.1.4.3.2. Output Parameter Keywords ΓòÉΓòÉΓòÉ
  8057.  
  8058.  
  8059. None. 
  8060.  
  8061.  
  8062. ΓòÉΓòÉΓòÉ 13.1.4.3.3. Logged Data ΓòÉΓòÉΓòÉ
  8063.  
  8064.  Frame Control            Message with characters-per-line and lines-per-inch. 
  8065.  
  8066.  
  8067. ΓòÉΓòÉΓòÉ 13.1.4.4. PARA_SETRETRY ΓòÉΓòÉΓòÉ
  8068.  
  8069. Category 05h - Function 44h 
  8070.  
  8071. This function sets infinite retry on/off (0=OFF, 1=ON). 
  8072.  
  8073.  
  8074. ΓòÉΓòÉΓòÉ 13.1.4.4.1. Required Input Parameter Keywords ΓòÉΓòÉΓòÉ
  8075.  
  8076. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  8077. ΓöéKeyword             ΓöéType                ΓöéDescription         Γöé
  8078. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8079. ΓöéDRIVEHANDLE         ΓöéNUM                 ΓöéHandle number of    Γöé
  8080. Γöé                    Γöé                    Γöéoutput parallel portΓöé
  8081. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8082. ΓöéRETRY               ΓöéNUM                 ΓöéON or OFF setting   Γöé
  8083. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  8084.  
  8085.  
  8086. ΓòÉΓòÉΓòÉ 13.1.4.4.2. Output Parameter Keywords ΓòÉΓòÉΓòÉ
  8087.  
  8088.  
  8089. None. 
  8090.  
  8091.  
  8092. ΓòÉΓòÉΓòÉ 13.1.4.4.3. Logged Data ΓòÉΓòÉΓòÉ
  8093.  
  8094.  Retry state              Message with Infinite Retry Disabled/Enabled 
  8095.  
  8096.  
  8097. ΓòÉΓòÉΓòÉ 13.1.4.5. PARA_INIT ΓòÉΓòÉΓòÉ
  8098.  
  8099. Category 05h - Function 46h 
  8100.  
  8101. This function initializes parallel port. 
  8102.  
  8103.  
  8104. ΓòÉΓòÉΓòÉ 13.1.4.5.1. Required Input Parameter Keywords ΓòÉΓòÉΓòÉ
  8105.  
  8106. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  8107. ΓöéKeyword             ΓöéType                ΓöéDescription         Γöé
  8108. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8109. ΓöéDRIVEHANDLE         ΓöéNUM                 ΓöéHandle number of    Γöé
  8110. Γöé                    Γöé                    Γöéoutput parallel portΓöé
  8111. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  8112.  
  8113.  
  8114. ΓòÉΓòÉΓòÉ 13.1.4.5.2. Output Parameter Keywords ΓòÉΓòÉΓòÉ
  8115.  
  8116.  
  8117. None. 
  8118.  
  8119.  
  8120. ΓòÉΓòÉΓòÉ 13.1.4.5.3. Logged Data ΓòÉΓòÉΓòÉ
  8121.  
  8122.  
  8123. None. 
  8124.  
  8125.  
  8126. ΓòÉΓòÉΓòÉ 13.1.4.6. PARA_ACTIVATEFONT ΓòÉΓòÉΓòÉ
  8127.  
  8128. Category 05h - Function 48h 
  8129.  
  8130. This function activates a font. 
  8131.  
  8132.  
  8133. ΓòÉΓòÉΓòÉ 13.1.4.6.1. Required Input Parameter Keywords ΓòÉΓòÉΓòÉ
  8134.  
  8135. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  8136. ΓöéKeyword             ΓöéType                ΓöéDescription         Γöé
  8137. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8138. ΓöéDRIVEHANDLE         ΓöéNUM                 ΓöéHandle number of    Γöé
  8139. Γöé                    Γöé                    Γöéoutput parallel portΓöé
  8140. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8141. ΓöéCODEPAGE            ΓöéNUM                 ΓöéNumber of code page Γöé
  8142. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8143. ΓöéFONTID              ΓöéNUM                 ΓöéNumber of font      Γöé
  8144. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  8145.  
  8146.  
  8147. ΓòÉΓòÉΓòÉ 13.1.4.6.2. Output Parameter Keywords ΓòÉΓòÉΓòÉ
  8148.  
  8149.  
  8150. None. 
  8151.  
  8152.  
  8153. ΓòÉΓòÉΓòÉ 13.1.4.6.3. Logged Data ΓòÉΓòÉΓòÉ
  8154.  
  8155.  Font information         Message with CODEPAGE and FONTID 
  8156.  
  8157.  
  8158. ΓòÉΓòÉΓòÉ 13.1.4.7. PARA_SETTITLE ΓòÉΓòÉΓòÉ
  8159.  
  8160. Category 05h - Function 4Dh 
  8161.  
  8162. This function sets job title. 
  8163.  
  8164.  
  8165. ΓòÉΓòÉΓòÉ 13.1.4.7.1. Required Input Parameter Keywords ΓòÉΓòÉΓòÉ
  8166.  
  8167. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  8168. ΓöéKeyword             ΓöéType                ΓöéDescription         Γöé
  8169. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8170. ΓöéDRIVEHANDLE         ΓöéNUM                 ΓöéHandle number of    Γöé
  8171. Γöé                    Γöé                    Γöéoutput parallel portΓöé
  8172. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8173. ΓöéJOBTITLE            ΓöéSTRING              ΓöéJob title           Γöé
  8174. Γöé                    Γöé                    Γöéidentification      Γöé
  8175. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  8176.  
  8177.  
  8178. ΓòÉΓòÉΓòÉ 13.1.4.7.2. Output Parameter Keywords ΓòÉΓòÉΓòÉ
  8179.  
  8180.  
  8181. None. 
  8182.  
  8183.  
  8184. ΓòÉΓòÉΓòÉ 13.1.4.7.3. Logged Data ΓòÉΓòÉΓòÉ
  8185.  
  8186.  Job title information    Length and address with job title information. 
  8187.  
  8188.  
  8189. ΓòÉΓòÉΓòÉ 13.1.4.8. PARA_SETWRTTIMEOUT ΓòÉΓòÉΓòÉ
  8190.  
  8191. Category 05h - Function 4Eh 
  8192.  
  8193. This function sets write timeout. 
  8194.  
  8195.  
  8196. ΓòÉΓòÉΓòÉ 13.1.4.8.1. Required Input Parameter Keywords ΓòÉΓòÉΓòÉ
  8197.  
  8198. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  8199. ΓöéKeyword             ΓöéType                ΓöéDescription         Γöé
  8200. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8201. ΓöéDRIVEHANDLE         ΓöéNUM                 ΓöéHandle number of    Γöé
  8202. Γöé                    Γöé                    Γöéoutput parallel portΓöé
  8203. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8204. ΓöéPPWRTTIMEOUT        ΓöéNUM                 ΓöéSeconds for write   Γöé
  8205. Γöé                    Γöé                    Γöétimeout             Γöé
  8206. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  8207.  
  8208.  
  8209. ΓòÉΓòÉΓòÉ 13.1.4.8.2. Output Parameter Keywords ΓòÉΓòÉΓòÉ
  8210.  
  8211.  
  8212. None. 
  8213.  
  8214.  
  8215. ΓòÉΓòÉΓòÉ 13.1.4.8.3. Logged Data ΓòÉΓòÉΓòÉ
  8216.  
  8217.  Write time out value     Parallel Port Write Time Out Value in seconds 
  8218.  
  8219.  
  8220. ΓòÉΓòÉΓòÉ 13.1.4.9. PARA_QFRAMECTRL ΓòÉΓòÉΓòÉ
  8221.  
  8222. Category 05h - Function 62h 
  8223.  
  8224. This function queries frame control (characters-per-line, lines-per-inch). 
  8225.  
  8226.  
  8227. ΓòÉΓòÉΓòÉ 13.1.4.9.1. Required Input Parameter Keywords ΓòÉΓòÉΓòÉ
  8228.  
  8229. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  8230. ΓöéKeyword             ΓöéType                ΓöéDescription         Γöé
  8231. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8232. ΓöéDRIVEHANDLE         ΓöéNUM                 ΓöéHandle number of    Γöé
  8233. Γöé                    Γöé                    Γöéoutput parallel portΓöé
  8234. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  8235.  
  8236.  
  8237. ΓòÉΓòÉΓòÉ 13.1.4.9.2. Output Parameter Keywords ΓòÉΓòÉΓòÉ
  8238.  
  8239.  
  8240. None. 
  8241.  
  8242.  
  8243. ΓòÉΓòÉΓòÉ 13.1.4.9.3. Logged Data ΓòÉΓòÉΓòÉ
  8244.  
  8245.  Frame Control            Message with characters-per-line and lines-per-inch. 
  8246.  
  8247.  
  8248. ΓòÉΓòÉΓòÉ 13.1.4.10. PARA_QRETRY ΓòÉΓòÉΓòÉ
  8249.  
  8250. Category 05h - Function 64h 
  8251.  
  8252. This function queries infinite retry. 
  8253.  
  8254.  
  8255. ΓòÉΓòÉΓòÉ 13.1.4.10.1. Required Input Parameter Keywords ΓòÉΓòÉΓòÉ
  8256.  
  8257. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  8258. ΓöéKeyword             ΓöéType                ΓöéDescription         Γöé
  8259. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8260. ΓöéDRIVEHANDLE         ΓöéNUM                 ΓöéHandle number of    Γöé
  8261. Γöé                    Γöé                    Γöéoutput parallel portΓöé
  8262. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  8263.  
  8264.  
  8265. ΓòÉΓòÉΓòÉ 13.1.4.10.2. Output Parameter Keywords ΓòÉΓòÉΓòÉ
  8266.  
  8267.  
  8268. None. 
  8269.  
  8270.  
  8271. ΓòÉΓòÉΓòÉ 13.1.4.10.3. Logged Data ΓòÉΓòÉΓòÉ
  8272.  
  8273.  Retry state              Message with Infinite Retry Disabled/Enabled 
  8274.  
  8275.  
  8276. ΓòÉΓòÉΓòÉ 13.1.4.11. PARA_QPORT ΓòÉΓòÉΓòÉ
  8277.  
  8278. Category 05h - Function 66h 
  8279.  
  8280. This function queries port. 
  8281.  
  8282.  
  8283. ΓòÉΓòÉΓòÉ 13.1.4.11.1. Required Input Parameter Keywords ΓòÉΓòÉΓòÉ
  8284.  
  8285. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  8286. ΓöéKeyword             ΓöéType                ΓöéDescription         Γöé
  8287. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8288. ΓöéDRIVEHANDLE         ΓöéNUM                 ΓöéHandle number of    Γöé
  8289. Γöé                    Γöé                    Γöéoutput parallel portΓöé
  8290. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  8291.  
  8292.  
  8293. ΓòÉΓòÉΓòÉ 13.1.4.11.2. Output Parameter Keywords ΓòÉΓòÉΓòÉ
  8294.  
  8295.  
  8296. None. 
  8297.  
  8298.  
  8299. ΓòÉΓòÉΓòÉ 13.1.4.11.3. Logged Data ΓòÉΓòÉΓòÉ
  8300.  
  8301.  Data                     Value in data field 
  8302.  
  8303.  
  8304. ΓòÉΓòÉΓòÉ 13.1.4.12. PARA_QACTIVEFONT ΓòÉΓòÉΓòÉ
  8305.  
  8306. Category 05h - Function 69h 
  8307.  
  8308. This function queries active font. 
  8309.  
  8310.  
  8311. ΓòÉΓòÉΓòÉ 13.1.4.12.1. Required Input Parameter Keywords ΓòÉΓòÉΓòÉ
  8312.  
  8313. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  8314. ΓöéKeyword             ΓöéType                ΓöéDescription         Γöé
  8315. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8316. ΓöéDRIVEHANDLE         ΓöéNUM                 ΓöéHandle number of    Γöé
  8317. Γöé                    Γöé                    Γöéoutput parallel portΓöé
  8318. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  8319.  
  8320.  
  8321. ΓòÉΓòÉΓòÉ 13.1.4.12.2. Output Parameter Keywords ΓòÉΓòÉΓòÉ
  8322.  
  8323.  
  8324. None. 
  8325.  
  8326.  
  8327. ΓòÉΓòÉΓòÉ 13.1.4.12.3. Logged Data ΓòÉΓòÉΓòÉ
  8328.  
  8329.  Font information         Message with CODEPAGE and FONTID 
  8330.  
  8331.  
  8332. ΓòÉΓòÉΓòÉ 13.1.4.13. PARA_VERIFYFONT ΓòÉΓòÉΓòÉ
  8333.  
  8334. Category 05h - Function 6Ah 
  8335.  
  8336. This function verifies font. 
  8337.  
  8338.  
  8339. ΓòÉΓòÉΓòÉ 13.1.4.13.1. Required Input Parameter Keywords ΓòÉΓòÉΓòÉ
  8340.  
  8341. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  8342. ΓöéKeyword             ΓöéType                ΓöéDescription         Γöé
  8343. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8344. ΓöéDRIVEHANDLE         ΓöéNUM                 ΓöéHandle number of    Γöé
  8345. Γöé                    Γöé                    Γöéoutput parallel portΓöé
  8346. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8347. ΓöéCODEPAGE            ΓöéNUM                 ΓöéNumber of code page Γöé
  8348. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8349. ΓöéFONTID              ΓöéNUM                 ΓöéNumber of font id   Γöé
  8350. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  8351.  
  8352.  
  8353. ΓòÉΓòÉΓòÉ 13.1.4.13.2. Output Parameter Keywords ΓòÉΓòÉΓòÉ
  8354.  
  8355.  
  8356. None. 
  8357.  
  8358.  
  8359. ΓòÉΓòÉΓòÉ 13.1.4.13.3. Logged Data ΓòÉΓòÉΓòÉ
  8360.  
  8361.  Font information         Message with CODEPAGE and FONTID 
  8362.  
  8363.  
  8364. ΓòÉΓòÉΓòÉ 13.1.4.14. PARA_QWRTTIMEOUT ΓòÉΓòÉΓòÉ
  8365.  
  8366. Category 05h - Function 6Eh 
  8367.  
  8368. This function queries write time out. 
  8369.  
  8370.  
  8371. ΓòÉΓòÉΓòÉ 13.1.4.14.1. Required Input Parameter Keywords ΓòÉΓòÉΓòÉ
  8372.  
  8373. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  8374. ΓöéKeyword             ΓöéType                ΓöéDescription         Γöé
  8375. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8376. ΓöéDRIVEHANDLE         ΓöéNUM                 ΓöéHandle number of    Γöé
  8377. Γöé                    Γöé                    Γöéoutput parallel portΓöé
  8378. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  8379.  
  8380.  
  8381. ΓòÉΓòÉΓòÉ 13.1.4.14.2. Output Parameter Keywords ΓòÉΓòÉΓòÉ
  8382.  
  8383.  
  8384. None. 
  8385.  
  8386.  
  8387. ΓòÉΓòÉΓòÉ 13.1.4.14.3. Logged Data ΓòÉΓòÉΓòÉ
  8388.  
  8389.  Time out information     Message with PP Write Time Out Value in seconds. 
  8390.  
  8391.  
  8392. ΓòÉΓòÉΓòÉ 13.1.4.15. PARA_READFILE ΓòÉΓòÉΓòÉ
  8393.  
  8394. This function reads a file. 
  8395.  
  8396.  
  8397. ΓòÉΓòÉΓòÉ 13.1.4.15.1. Required Input Parameter Keywords ΓòÉΓòÉΓòÉ
  8398.  
  8399. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  8400. ΓöéKeyword             ΓöéType                ΓöéDescription         Γöé
  8401. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8402. ΓöéDRIVEHANDLE         ΓöéNUM                 ΓöéHandle number of    Γöé
  8403. Γöé                    Γöé                    Γöéoutput parallel portΓöé
  8404. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8405. ΓöéFILENAME            ΓöéSTRING              ΓöéFile to be read     Γöé
  8406. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8407. ΓöéBYTECOUNT           ΓöéNUM                 ΓöéNumber of bytes to  Γöé
  8408. Γöé                    Γöé                    Γöéread                Γöé
  8409. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8410. Γöé$BUFFER             ΓöéSTRING              ΓöéBuffer to hold data Γöé
  8411. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  8412.  
  8413.  
  8414. ΓòÉΓòÉΓòÉ 13.1.4.15.2. Output Parameter Keywords ΓòÉΓòÉΓòÉ
  8415.  
  8416.  
  8417. None. 
  8418.  
  8419.  
  8420. ΓòÉΓòÉΓòÉ 13.1.4.15.3. Logged Data ΓòÉΓòÉΓòÉ
  8421.  
  8422.  
  8423. None. 
  8424.  
  8425.  
  8426. ΓòÉΓòÉΓòÉ 13.1.4.16. PARA_WRITEFILE ΓòÉΓòÉΓòÉ
  8427.  
  8428. This function writes a file. 
  8429.  
  8430.  
  8431. ΓòÉΓòÉΓòÉ 13.1.4.16.1. Required Input Parameter Keywords ΓòÉΓòÉΓòÉ
  8432.  
  8433. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  8434. ΓöéKeyword             ΓöéType                ΓöéDescription         Γöé
  8435. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8436. ΓöéDRIVEHANDLE         ΓöéNUM                 ΓöéHandle number of    Γöé
  8437. Γöé                    Γöé                    Γöéoutput parallel portΓöé
  8438. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8439. ΓöéFILENAME            ΓöéSTRING              ΓöéName of file to     Γöé
  8440. Γöé                    Γöé                    Γöéwrite               Γöé
  8441. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  8442. Γöé$BUFFER             ΓöéSTRING              ΓöéBuffer of write dataΓöé
  8443. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  8444.  
  8445.  
  8446. ΓòÉΓòÉΓòÉ 13.1.4.16.2. Output Parameter Keywords ΓòÉΓòÉΓòÉ
  8447.  
  8448.  
  8449. None. 
  8450.  
  8451.  
  8452. ΓòÉΓòÉΓòÉ 13.1.4.16.3. Logged Data ΓòÉΓòÉΓòÉ
  8453.  
  8454.  
  8455. None. 
  8456.  
  8457.  
  8458. ΓòÉΓòÉΓòÉ 13.2. Description of Test Cases ΓòÉΓòÉΓòÉ
  8459.  
  8460. Each of the parallel port test cases can be executed individually as previously 
  8461. described. The corresponding test scripts are described below.  The user can 
  8462. create additional tests or combine tests into multi-threaded test cases after 
  8463. becoming familiar with the DDTT and the parallel grammar file. 
  8464.  
  8465. All of the parallel port test cases use the DDTT @IMPORT command to include one 
  8466. script file: 
  8467.  
  8468.    o  SYSINFO.TXT 
  8469.  The content of the SYSINFO.TXT files is set by the SETINFO.CMD command file. 
  8470.  SETINFO.CMD should be executed once to establish values for the following DDTT 
  8471.  parameter keywords: 
  8472.  
  8473.    o  DEVICENAME - drive name of the parallel port device under test, such as 
  8474.       LPT1. 
  8475.  
  8476.  All test scripts open and close the parallel port device and verify successful 
  8477.  status return from every exercised API.  All test scripts log information to a 
  8478.  log file with the same file name and a file name extension .LOG.  When current 
  8479.  status is queried (for example, the font, timeout, or port), this data is 
  8480.  written to DDTT's output windows and to the log file.  Log files can be 
  8481.  examined after the test case has completed. 
  8482.  
  8483.  ACTFONT.SCR         Activates and logs the font identified by the CODEPAGE and 
  8484.                      FONTID. 
  8485.  
  8486.  FRAMES.SCR          Sets and queries the frame controls for four combinations 
  8487.                      of characters-per-line and lines-per-inch. 
  8488.  
  8489.  INITPAR.SCR         Initializes the parallel port. 
  8490.  
  8491.  QFONT.SCR           Queries the activefont, logging, CODEPAGE, and FONTID. 
  8492.  
  8493.  QFRAME.SCR          Queries frame control, logging characters-per-line, and 
  8494.                      lines-per-inch settings. 
  8495.  
  8496.  QPARPORT.SCR        Queries the parallel port and logs the value in the data 
  8497.                      field. 
  8498.  
  8499.  QPPWTOUT.SCR        Queries write time out and logs time, in seconds. 
  8500.  
  8501.  QRETRY.SCR          Queries to determine if infinite retry is enabled. 
  8502.  
  8503.  REQEX.SCR           Requests exclusive access of LPT1 and displays Have 
  8504.                      exclusive access, pauses for two minutes, and then 
  8505.                      releases exclusive access. This process requires 
  8506.                      installation of the generic device driver, GENDRV.SYS. 
  8507.  
  8508.  RETRY.SCR           Enables infinite retry, queries retry, disables infinite 
  8509.                      retry, and queries retry, again. 
  8510.  
  8511.  SETFRAME.SCR        Sets frame control of 80 characters-per-line and 6 
  8512.                      lines-per-inch. 
  8513.  
  8514.  SPPWTOUT.SCR        Sets parallel port write time out value to 10 seconds. 
  8515.  
  8516.  SRETRY.SCR          Sets infinite retry enabled. 
  8517.  
  8518.  TITLERD.SCR         Sets jobtitle to BIDI TEST JOB-TITLE, reads file READ.SCR, 
  8519.                      and writes file. 
  8520.  
  8521.  VFONT.SCR           Verifies font with CODEPAGE=34000 and FONTID=34000. 
  8522.  
  8523.  
  8524. ΓòÉΓòÉΓòÉ 13.3. Evaluation of Test Case Results ΓòÉΓòÉΓòÉ
  8525.  
  8526. Unless otherwise stated in the test-case descriptions, all test cases are 
  8527. expected to succeed.  If a test case fails in a mode detectable by DDTT, then 
  8528. the token "ERROR" will be written to the corresponding log file. 
  8529.  
  8530. The script files test all of the different parallel port functions. After each 
  8531. script file has finished executing, it will log all of the test information out 
  8532. to a log file.  When all of the script files have finished executing, the 
  8533. command file will search all of the log files for any errors that have 
  8534. occurred.  The results from this search are stored in the RESULTS.TXT file. 
  8535.  
  8536. When the command file has completed searching the log files, it also displays 
  8537. the results on the screen. The command file is searching only for the word 
  8538. "ERROR". 
  8539.  
  8540.  
  8541. ΓòÉΓòÉΓòÉ 14. PCMCIA Architecture ΓòÉΓòÉΓòÉ
  8542.  
  8543. This chapter contains a description of the Personal Computer Memory Card 
  8544. International Association (PCMCIA) hardware and software architecture as it 
  8545. applies to the OS/2 operating system. Also included is a list of supported 
  8546. functions, and information on deviations from the PCMCIA standard. In addition, 
  8547. information regarding Card Services, COM Support, Socket Services, Socket 
  8548. Services Sample, Client Driver Sample, and Fax/Modem client services are 
  8549. discussed. 
  8550.  
  8551.  
  8552. ΓòÉΓòÉΓòÉ 14.1. Overview ΓòÉΓòÉΓòÉ
  8553.  
  8554. PCMCIA is an organization of computer hardware and software manufacturers that 
  8555. is developing industry standards for personal computer card architecture and 
  8556. design. The PCMCIA standards include specifications for both the hardware and 
  8557. software components of the technology. 
  8558.  
  8559.  
  8560. ΓòÉΓòÉΓòÉ 14.1.1. PCMCIA Hardware ΓòÉΓòÉΓòÉ
  8561.  
  8562. There are three major hardware components defined in the PCMCIA standard: 
  8563.  
  8564.    o  Cards 
  8565.    o  Sockets 
  8566.    o  Adapters 
  8567.  
  8568.  The cards come in several standardized sizes and shapes that are called form 
  8569.  factors. The basic form factor is very similar to a credit card. There is a 
  8570.  wide range of potential applications for PCMCIA cards, including: 
  8571.  
  8572.    o  Connectivity devices, such as modems, local area networks (LANs), and 
  8573.       terminal emulators 
  8574.  
  8575.    o  Secondary storage devices, such as mini rotating hard disks, solid state 
  8576.       file disks, and flash 
  8577.  
  8578.    o  Random access memory, such as SRAM, DRAM, or NVRAM memory 
  8579.  
  8580.    o  Storage for software, such as applications, device drivers, and ROM 
  8581.       extensions 
  8582.  
  8583.  PCMCIA cards are treated in much the same way as standard removable media such 
  8584.  as diskettes. The card slots, or sockets, are open bays into which the PCMCIA 
  8585.  cards can be inserted without removing the system covers or turning off the 
  8586.  system unit. Some PCMCIA Sockets contain mechanisms similar to those on 
  8587.  diskette drives such as levers and locks. 
  8588.  
  8589.  Adapters are connected to the host system's bus. The adapters map the host 
  8590.  system bus technology to the PCMCIA technology. According to PCMCIA standards, 
  8591.  up to 256 adapters can exist on a host system, and each adapter can have a 
  8592.  maximum of 16 sockets. 
  8593.  
  8594.  
  8595. ΓòÉΓòÉΓòÉ 14.1.2. PCMCIA Software ΓòÉΓòÉΓòÉ
  8596.  
  8597. There are three major software components defined in the PCMCIA architecture: 
  8598.  
  8599.    o  Clients 
  8600.    o  Card Services 
  8601.    o  Socket Services 
  8602.  
  8603.  Clients manage the device characteristics in an operating-system-specific 
  8604.  environment and can be generalized as card-specific device drivers. Therefore, 
  8605.  for any given card (device), there must be a specific device driver for each 
  8606.  supported operating system. In addition, one client device driver can 
  8607.  simultaneously manipulate several cards of the same type. Clients rely on the 
  8608.  Card Services interfaces to set up and remove accessibility to the PCMCIA 
  8609.  cards. The functions, features, and availability of client device drivers are 
  8610.  the responsibilities of the PCMCIA card developer or the manufacturer. 
  8611.  
  8612.  The Card Services component is an operating-system-specific layer that 
  8613.  provides the Card Services functions defined in the PCMCIA interface 
  8614.  specification. The Card Services interface functions are provided according to 
  8615.  the operating system's specifics for the client device driver model 
  8616.  environment. Card Services rely on operating system and Socket Services 
  8617.  interfaces to facilitate requests from PCMCIA clients. The functions, 
  8618.  features, and availability of the Card Services component are the 
  8619.  responsibilities of the operating system developer or manufacturer. 
  8620.  
  8621.  The Socket Services component is a hardware-specific layer that isolates the 
  8622.  details of the adapter and socket logic from the other software components. 
  8623.  The Socket Services component provides the functions defined in the PCMCIA 
  8624.  interface specification. Ideally, this software layer is built as a BIOS 
  8625.  extension so that a single implementation can service multiple operating 
  8626.  systems. However, it is acceptable to have device driver versions, because 
  8627.  several situations preclude the availability of ROM solutions (as would be the 
  8628.  case when you are adding adapters into existing host systems). The functions, 
  8629.  features, and availability of the Socket Services component are the 
  8630.  responsibilities of the hardware (adapter option or system unit) developer or 
  8631.  manufacturer. 
  8632.  
  8633.  
  8634. ΓòÉΓòÉΓòÉ 14.1.3. PCMCIA Specifications ΓòÉΓòÉΓòÉ
  8635.  
  8636. The PCMCIA General Committee publishes the following specifications for the 
  8637. software architecture components: 
  8638.  
  8639.       PCMCIA Card Services Release 2.00 Interface Specification 
  8640.  
  8641.       PCMCIA Socket Services Release 2.00 Interface Specification 
  8642.  
  8643.  These specifications contain a complete description of the Card Services and 
  8644.  Socket Services functions described in this chapter. They can be ordered from: 
  8645.  
  8646.  
  8647.        PCMCIAOffice
  8648.        1030G East Duane Avenue
  8649.        Sunnyvale, CA 94086
  8650.  
  8651.        (408) 720-0107 Voice
  8652.        (408) 720-9416 FAX
  8653.        (408) 720-9388 BBS
  8654.  
  8655.  
  8656. ΓòÉΓòÉΓòÉ 14.2. OS/2 PCMCIA Environment ΓòÉΓòÉΓòÉ
  8657.  
  8658. There are three separate PCMCIA client environments in the OS/2 operating 
  8659. system: the DOS environment, WIN-OS/2 environment, and OS/2 environment. Each 
  8660. of these client environments has a separate Card Services interface binding (or 
  8661. protocol) that encapsulates the Card Service functions into the native 
  8662. environment's characteristics. Although the OS/2 operating system supports 
  8663. these three application environments, it currently does not support the PCMCIA 
  8664. client interfaces in all environments. 
  8665.  
  8666. The responsibilities and restrictions of providing support for these client 
  8667. environments is summarized as follows: 
  8668.  
  8669.    o  OS/2 Card Services is responsible for providing the client environment 
  8670.       interfaces. 
  8671.  
  8672.       Currently this support is limited to the native OS/2 device-driver 
  8673.       environment for OS/2 physical device drivers. The OS/2 client environment 
  8674.       support is provided by the OS/2 Card Services and the physical device 
  8675.       driver contained in the file named PCMCIA.SYS. The interface bindings for 
  8676.       this support are defined in Client Interfaces. 
  8677.  
  8678.       The architecture is designed such that the PCMCIA software components 
  8679.       mask the hardware details from the OS/2 application environments. The 
  8680.       concept of a PCMCIA-aware application does not apply in the OS/2 
  8681.       operating system. 
  8682.  
  8683.       The DOS client environment is not supported. This means that the DOS 
  8684.       PCMCIA interfaces, INT 1Ah functions in the range of 80h - AFh, are 
  8685.       intercepted and rejected with the Carry flag set (value = 1). The DOS 
  8686.       client environment support is provided by the OS/2 Card Services and 
  8687.       virtual device driver contained in the file named VPCMCIA.SYS. 
  8688.  
  8689.       The WIN-OS/2 client environment is not supported. 
  8690.  
  8691.       At this time, the industry has not defined an interface binding for the 
  8692.       WIN-OS/2 client environment; therefore, there are no OS/2 files provided 
  8693.       for this environment. 
  8694.  
  8695.    o  OS/2 PCMCIA clients are responsible for providing device-specific support 
  8696.       in the desired application environments. 
  8697.  
  8698.    o  OS/2 PCMCIA clients can be written as stand-alone physical device drivers 
  8699.       or as physical/virtual device driver pairs. If the desired client device 
  8700.       support is limited to OS/2 application environments, the client can be a 
  8701.       single physical device driver. If the desired application environments 
  8702.       include a DOS or WIN-OS/2 environment, or both, then a virtual device 
  8703.       driver also must be provided to emulate the device characteristics in 
  8704.       those environments. 
  8705.  
  8706.  
  8707. ΓòÉΓòÉΓòÉ 14.2.1. OS/2 Initialization Architecture ΓòÉΓòÉΓòÉ
  8708.  
  8709. The following steps describe the initialization flow of the PCMCIA software 
  8710. components in the OS/2 operating system. Card Services, the Resource Management 
  8711. Utility, and Socket Services are implemented as base devices (BASEDEV=). These 
  8712. BASEDEV drivers initialize in the order in which they occur in CONFIG.SYS, 
  8713. prior to any client drivers.  Client drivers, unless they are ADDs, should be 
  8714. implemented as non-base device drivers (DEVICE=).  After the BASEDEV drivers, 
  8715. the client drivers will then initialize in the order in which they occur in 
  8716. CONFIG.SYS. 
  8717.  
  8718.    1. Card Services Initialization 
  8719.  
  8720.       The Card Services component is implemented as an installable physical 
  8721.       device driver. This component manages resources (I/O address space, IRQs, 
  8722.       and memory) across the set of installed client device drivers and Socket 
  8723.       Services. The Card Services component assumes that a default set of 
  8724.       resources is available when it is initialized, and then adjusts the 
  8725.       resource information (see Step 2) to limit or expand this resource base. 
  8726.       The base set of resources that the Card Services component assumes are 
  8727.       available to be managed, is defined as follows: 
  8728.  
  8729.         o  Non-system memory in the range C0000h - DFFFFh 
  8730.         o  IRQs in the range 2 through 15 
  8731.         o  I/O addresses in the range 0108h through FFFFh, with the following 
  8732.            exceptions: 
  8733.  
  8734.              -  Addresses 3B4h, 3B5h, 3BAh, 3BBh, and 3C0h through 3DFh are 
  8735.                 reserved for video use. 
  8736.              -  Addresses 3F0h through 3F7h are reserved for diskette use. 
  8737.  
  8738.    2. Resource Map Initialization 
  8739.  
  8740.       The Resource Map utility program is a special client device driver that 
  8741.       determines the current system's hardware resource pool. This client is a 
  8742.       hardware-specific device driver that performs the resource pool 
  8743.       determination in a hardware-specific manner. 
  8744.  
  8745.       The Resource Map utility program determines the system's resource 
  8746.       information and informs Card Services by way of the AdjustResourceInfo 
  8747.       (35h) function during BASEDEV INIT (1Bh) command processing. If an 
  8748.       incorrect Resource Map utility program or no Resource Map utility program 
  8749.       is loaded, Card Services continues to run, managing the default set of 
  8750.       resources it assumed were present. (See Step 1). 
  8751.  
  8752.       Because the Resource Map utility program is hardware-specific, it is 
  8753.       provided by the hardware manufacturer on either the diskette that came 
  8754.       with the computer or the diskette that came with the PCMCIA adapter. 
  8755.  
  8756.    3. Socket Services Initialization 
  8757.  
  8758.         a. One or more Socket Services device drivers can be loaded into the 
  8759.            operating system to support the adapters in the system unit. As each 
  8760.            Socket Services device driver loads, it must verify the required 
  8761.            hardware dependencies. During the BASEDEV INIT command (1Bh) 
  8762.            processing, Socket Services device drivers must complete their 
  8763.            inter-device-driver communication (IDC) initialization processing by 
  8764.            calling the DevHlp_AttachDD function. If Card Services is loaded, 
  8765.            the request for an IDC entry point for the device driver name 
  8766.            "PCMCIA$" (PCMCIA$, followed by a blank space) returns the 16:16 
  8767.            protect-mode information. The Socket Services device drivers then 
  8768.            call the Card Services AddSocketServices (32h) function to establish 
  8769.            the bidirectional IDC interface links. If the AttachDD request 
  8770.            fails, the Socket Services device driver must free any allocated 
  8771.            resources and permit itself to be swapped out of the active system 
  8772.            memory as needed. 
  8773.  
  8774.         b. Card Services processes the AddSocketServices (32h) function by: 
  8775.  
  8776.              1. Identifying the Socket Services resources required. 
  8777.  
  8778.                      Card Services uses the following Socket Services functions 
  8779.                      to determine setup resources: GetAdapterCount (80h), 
  8780.                      GetSSInfo (83h), GetVendorInfo (9Dh), InquireAdapter 
  8781.                      (84h), GetAdapter (85h), InquireSocket (8Ch), and 
  8782.                      GetSocket ( 8Dh). 
  8783.  
  8784.              2. Allocating resources from the resource map for Socket Services. 
  8785.  
  8786.                      Card Services assigns resources for the new Socket 
  8787.                      Services support, if available. 
  8788.  
  8789.              3. Installing interrupt handlers for the Socket Services hardware. 
  8790.  
  8791.                      Card Services uses the DevHlp_SetIRQ function to establish 
  8792.                      the adapter-specific interrupt handling routine for each 
  8793.                      adapter supported by the Socket Services currently 
  8794.                      initializing. 
  8795.  
  8796.              4. Programming the Socket Services hardware for the allocated 
  8797.                 resources. 
  8798.  
  8799.                      Card Services uses the following Socket Services functions 
  8800.                      to activate the adapter hardware: SetAdapter (86h), 
  8801.                      SetSocket (8Eh). 
  8802.  
  8803.    4. COM.SYS Physical Device Driver Initialization 
  8804.  
  8805.       The COM physical device driver provides a set of additional client device 
  8806.       driver IDC interfaces for transparent application support. (See COM 
  8807.       Support for more details). 
  8808.  
  8809.       During initialization processing, the COM physical device driver 
  8810.       determines if the special COM client device driver interface support is 
  8811.       needed.  It then loads or discards the support modules appropriately. The 
  8812.       determination is made by issuing the DevHlp_AttachDD with the device 
  8813.       driver name "PCMCIA$ " (PCMCIA$, followed by a blank space) specified for 
  8814.       the Card Services physical device driver. 
  8815.  
  8816.    5. Client Device Driver Initialization 
  8817.  
  8818.       Several client device drivers can be loaded into the operating system to 
  8819.       support the various cards that might be plugged into the system's PCMCIA 
  8820.       sockets. The initialization processing for these PCMCIA client device 
  8821.       drivers is minimal. The card must be initialized on an as-needed basis 
  8822.       because a card can be inserted into a socket at any time. To be ready for 
  8823.       events such as CARD_INSERTION, the client device driver must establish an 
  8824.       IDC interface connection into Card Services. The IDC link is established 
  8825.       during either the INIT command (00h) or the INIT_COMPLETE command (1Fh) 
  8826.       processing, by using the DevHlp_AttachDD function. If Card Services is 
  8827.       loaded, the request for an IDC entry point for the device driver name 
  8828.       "PCMCIA$" returns the 16:16 protect-mode information. If the AttachDD 
  8829.       request fails, the client device driver must enter a dormant state 
  8830.       equivalent to the wait state that would be entered when a card is not 
  8831.       present. As soon as the presence of Card Services is confirmed and the 
  8832.       interface address is retrieved, the client device driver issues the 
  8833.       RegisterClient request and enters the normal mode of event processing. 
  8834.  
  8835.  
  8836. ΓòÉΓòÉΓòÉ 14.2.2. OS/2 PCMCIA Client Device Driver Model ΓòÉΓòÉΓòÉ
  8837.  
  8838. The client device driver model is an important element of the OS/2 PCMCIA 
  8839. architecture. The PCMCIA client device driver model is a more restricted form 
  8840. of the general OS/2 device driver model. All OS/2 PCMCIA client device drivers 
  8841. are loaded during startup of the operating system. Therefore, before PCMCIA 
  8842. devices can be used, the user must determine the types of PCMCIA cards that 
  8843. might be used with the system, install the associated client device drivers, 
  8844. and add the appropriate statements to the CONFIG.SYS file. Client device 
  8845. drivers should be installed using the OS/2 DDINSTAL utility program because it 
  8846. simplifies device-driver installation for the user. 
  8847.  
  8848. The OS/2 PCMCIA client device driver model utilizes the multisegment support 
  8849. available in the OS/2 operating system. Whenever a client device driver is not 
  8850. active (that is, no card is present), it should unlock its 
  8851. swappable/relocatable segments. The single, nonswappable/nonrelocatable base 
  8852. code segment must be organized so that it contains all the public entry points 
  8853. externalized by the client. In this way, all client public addresses are 
  8854. guaranteed to be valid. For example, the client device driver should ensure 
  8855. that the strategy, interrupt, Card Services callback, and other optional IDC 
  8856. entry point handling routines reside in the single, base code segment. 
  8857.  
  8858. All worker routines should be placed in additional code segments and further 
  8859. organized for optimal paging. These additional code segments should be 
  8860. organized to contain routines that are used with approximately the same 
  8861. frequency intervals and conditions. 
  8862.  
  8863. After all the needed unlocked segments have been reestablished in the system 
  8864. memory space, all resources required by a client must be requested from the 
  8865. operating system or Card Services after the notification of the card presence 
  8866. (through a CARD_INSERTION event). 
  8867.  
  8868. Because it is possible to have numerous inactive client device drivers loaded 
  8869. in the operating system, the potential savings in unused system memory space is 
  8870. substantial. 
  8871.  
  8872. Note:  The previous information on the OS/2 multisegmented device driver model 
  8873.        and DDINSTAL utility program also are applicable for device driver 
  8874.        implementations of Socket Services. 
  8875.  
  8876.  For further details on the OS/2 multisegmented device driver model, refer to 
  8877.  the OS/2 Physical Device Driver Reference. 
  8878.  
  8879.  
  8880. ΓòÉΓòÉΓòÉ 14.2.2.1. Event Processing Flow ΓòÉΓòÉΓòÉ
  8881.  
  8882. The following is a generalized event processing flow for the definition of 
  8883. responsibilities within the OS/2 PCMCIA environment. The following steps are 
  8884. provided for the CARD_INSERTION and CARD_REMOVAL events. 
  8885.  
  8886. Note:  The following scenario has been simplified for descriptive purposes. In 
  8887.        addition, the defined scenario represents only the actions used to 
  8888.        manage I/O card support. There are numerous combinations of Card 
  8889.        Services and Socket Services functions, as well as ordering differences, 
  8890.        when this scenario is broadened to include other events. 
  8891.  
  8892.    1. Hardware Interrupt (Adapter) 
  8893.  
  8894.       The user inserts a PCMCIA Card into a socket. The adapter raises a Status 
  8895.       Change interrupt to Card Services. Card Services, which has installed 
  8896.       interrupt handlers for each adapter, calls the Socket Services 
  8897.       AcknowledgeInterrupt (9Eh) function to retrieve the socket ID that 
  8898.       generated the interrupt. Card Services sets up a global context hook 
  8899.       handler to process the interrupt, issues the EOI for the adapter IRQ, and 
  8900.       returns from the interrupt. 
  8901.  
  8902.    2. CARD_INSERTION Events 
  8903.  
  8904.         a. When the Card Services context hook handler gets control, it 
  8905.            processes the pending interrupt information by calling the Socket 
  8906.            Services GetStatus (8Fh), GetSocket (8Dh), and SetSocket (8Eh) 
  8907.            functions to retrieve the specific interrupt meaning. In this 
  8908.            scenario, the CardState and SocketState field values indicate a card 
  8909.            insertion. Therefore, the Card Services timer handler creates 
  8910.            CARD_INSERTION events and sends them to all client device drivers 
  8911.            registered for the affected socket. 
  8912.  
  8913.         b. Each client device driver registered for the socket receives a 
  8914.            CARD_INSERTION event notification. Client device drivers process the 
  8915.            event by calling the Card Services GetConfigurationInfo (04h) 
  8916.            function to determine if the card has been claimed by another client 
  8917.            and to identify the card's attributes. The client might also query 
  8918.            more card data from the Card Information Structure (CIS) tuples by 
  8919.            using the Card Services GetFirstTuple (07h), GetNextTuple (0Ah), and 
  8920.            GetTupleData (0Dh) functions. 
  8921.  
  8922.            If the client determines that the card cannot be supported, it 
  8923.            returns from the event notification. If the client determines that 
  8924.            the card can be supported, it uses the Card Services RequestIO 
  8925.            (1Fh), RequestIRQ (20h), and RequestConfiguration (30h) functions to 
  8926.            allocate resources to manage the card. If the resources are not 
  8927.            available, the client returns from the event notification. If the 
  8928.            resources are available, the client issues a DevHlp_SetIRQ request 
  8929.            to hook its interrupt handler into the operating system's IRQ chain. 
  8930.  
  8931.            Clients that use the COM IDC function should issue the Install 
  8932.            function at this time, to map the device into the general COM 
  8933.            application support. See COM Support for more details. 
  8934.  
  8935.            Note:  Clients might receive two event notifications if the local 
  8936.                   and global event masks both have CARD_INSERTION events 
  8937.                   selected by way of the Card Services RegisterClient (10h) and 
  8938.                   SetEventMask (31h) functions. 
  8939.  
  8940.         c. Card Services processes the RequestConfiguration function (30h) by 
  8941.            calling Socket Services SetSocket (8Eh) to program the adapter/card 
  8942.            to the configuration information that has been locked for that 
  8943.            socket. 
  8944.  
  8945.    3. Normal Device Activity 
  8946.  
  8947.       The client device driver uses the card-configured resources to perform 
  8948.       normal device-specific manipulations, such as reading and writing data, 
  8949.       processing device interrupts, and enacting device commands. 
  8950.  
  8951.    4. Hardware Interrupt (Adapter) 
  8952.  
  8953.       The user removes a PCMCIA Card from a socket. The adapter raises a Status 
  8954.       Change interrupt to Card Services. Card Services calls the Socket 
  8955.       Services AcknowledgeInterrupt (9Eh) function to retrieve the socket ID 
  8956.       that generated the interrupt. Card Services sets up the interrupt 
  8957.       processing context hook handler, issues the EOI for the adapter IRQ, and 
  8958.       returns from the interrupt. 
  8959.  
  8960.    5. CARD_REMOVAL Events 
  8961.  
  8962.         a. When the Card Services timer handler gets control, it processes the 
  8963.            pending interrupt information by calling the Socket Services 
  8964.            GetStatus (8Fh), GetSocket (8Dh), and SetSocket (8Eh) functions to 
  8965.            retrieve the specific interrupt meaning. In this scenario, the 
  8966.            CardState and SocketState field values indicate a card removal. 
  8967.            Therefore, the Card Services timer handler creates CARD_REMOVAL 
  8968.            events and sends them to all client device drivers registered for 
  8969.            the affected socket. 
  8970.  
  8971.         b. Each client device driver registered for the socket receives a 
  8972.            CARD_REMOVAL event notification. Client device drivers process the 
  8973.            event by releasing Card Services resources (for example, by calling 
  8974.            the Card Services ReleaseConfiguration (1Eh), ReleaseIO (1Bh), and 
  8975.            ReleaseIRQ (1Ch) functions). In addition, the client device driver 
  8976.            releases system resources (for example, by calling the 
  8977.            DevHlp_UnsetIRQ function). 
  8978.  
  8979.            Clients that use the COM IDC functions should issue the Deinstall 
  8980.            function at this time to map the device into the general COM 
  8981.            application support. The COM IDC client should issue the Deinstall 
  8982.            function prior to releasing the Card Services resources or system 
  8983.            resources associated with the device. See COM Support for more 
  8984.            details. 
  8985.  
  8986.         c. Card Services processes the ReleaseConfiguration request by calling 
  8987.            Socket Services Set Socket (8Eh) to reprogram the socket so that it 
  8988.            stops generating interrupts and cannot be accessed through the 
  8989.            previously configured I/O addresses. 
  8990.  
  8991.         d. Card Services processes the ReleaseIO (1Bh) and ReleaseIRQ (1Ch) 
  8992.            functions by returning the referenced resources to the resource map. 
  8993.            This makes them available for subsequent request function calls. 
  8994.  
  8995.  
  8996. ΓòÉΓòÉΓòÉ 14.3. Card Services ΓòÉΓòÉΓòÉ
  8997.  
  8998. The following includes implementation limitations and restrictions and client 
  8999. interfaces. 
  9000.  
  9001.  
  9002. ΓòÉΓòÉΓòÉ 14.3.1. Implementation Limitations and Restrictions ΓòÉΓòÉΓòÉ
  9003.  
  9004. There are some restrictions on OS/2 PCMCIA client device drivers. These 
  9005. restrictions define Card Services support. The following can be supported by 
  9006. Card Services: 
  9007.  
  9008.    o  A maximum of four adapters 
  9009.  
  9010.    o  A maximum of eight sockets 
  9011.  
  9012.    o  A maximum of 16 clients 
  9013.  
  9014.    o  A maximum of four Socket Services drivers 
  9015.  
  9016.    o  A maximum of 16 memory technology drivers 
  9017.  
  9018.    o  A maximum of 16 memory handles 
  9019.  
  9020.    o  A maximum of 16 erase queues 
  9021.  
  9022.    o  A maximum of 16 regions 
  9023.  
  9024.    o  A maximum of 16 partitions 
  9025.  
  9026.    o  A maximum of seven windows per socket 
  9027.  
  9028.       The maximum window count is further defined such that five are memory 
  9029.       windows (four for clients and one for Card Services), and two are I/O 
  9030.       windows. 
  9031.  
  9032.  The following are not supported or provided by Card Services: 
  9033.  
  9034.    o  Paged memory windows 
  9035.  
  9036.    o  ROM BIOS Socket Services 
  9037.  
  9038.    o  Power management support. Even though some of the interfaces have power 
  9039.       management definitions, the values are ignored by Card Services. For 
  9040.       future compatibility, the power management bit always should be reset to 
  9041.       0. 
  9042.  
  9043.    o  Write protection. Even though some of the interfaces have write-protect 
  9044.       definitions, the values are ignored by Card Services. For future 
  9045.       compatibility, the write-protect bit always should be reset to 0. 
  9046.  
  9047.  The following additional restrictions apply to client device drivers that 
  9048.  manage PCMCIA cards with secondary storage devices: 
  9049.  
  9050.    o  During device-driver initialization, the PCMCIA secondary storage card 
  9051.       might not be present, but the device driver must still claim the required 
  9052.       number of drive letters that it supports. 
  9053.  
  9054.    o  Multi-partitioned cards must have a drive letter assigned to each 
  9055.       partition for the partition to be accessible. 
  9056.  
  9057.    o  All secondary storage cards are treated as removable media. This 
  9058.       prohibits enhanced performance from file systems using cached support. 
  9059.  
  9060.  
  9061. ΓòÉΓòÉΓòÉ 14.3.2. Client Interfaces ΓòÉΓòÉΓòÉ
  9062.  
  9063. The PCMCIA Card Services architecture consists of several basic interface 
  9064. elements. These interface elements are necessary for generating a composite 
  9065. binding for client device driver developers. The binding itself provides 
  9066. bidirectional validation of the PCMCIA architecture and the operating system 
  9067. implementation. The basic interface elements are: 
  9068.  
  9069.    o  Functions 
  9070.    o  Callbacks 
  9071.    o  Events 
  9072.    o  Memory Technology Driver Helpers 
  9073.    o  Media Access Routines 
  9074.    o  Return Codes 
  9075.  
  9076.  OS/2-specific descriptions for each of these elements are in the following 
  9077.  sections. 
  9078.  
  9079.  In addition to the PCMCIA-architected interface elements listed previously, 
  9080.  the OS/2 Card Services support has reserved Generic IOCtl - Category 0Dh for 
  9081.  future use as a PCMCIA application programming interface. 
  9082.  
  9083.  
  9084. ΓòÉΓòÉΓòÉ 14.3.2.1. Functions ΓòÉΓòÉΓòÉ
  9085.  
  9086. OS/2 supports the following PCMCIA Card Services functions: 
  9087.  
  9088. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  9089.  
  9090.  
  9091. AddSocketServices         (32h)    AdjustResourceInfo        (35h)
  9092. CheckEraseQueue           (26h)    CloseMemory               (00h)
  9093. CopyMemory                (01h)    DeregisterClient          (02h)
  9094. DeregisterEraseQueue      (25h)    GetCardServicesInfo       (0Bh)
  9095. GetClientInfo             (03h)    GetConfigurationInfo      (04h)
  9096. GetEventMask              (2Eh)    GetFirstClient            (0Eh)
  9097. GetFirstPartition         (05h)    GetFirstRegion            (06h)
  9098. GetFirstTuple             (07h)    GetNextClient             (2Ah)
  9099. GetNextPartition          (08h)    GetNextRegion             (09h)
  9100. GetNextTuple              (0Ah)    GetStatus                 (0Ch)
  9101. GetTupleData              (0Dh)    MapLogSocket              (12h)
  9102. MapLogWindow              (13h)    MapMemPage                (14h)
  9103. MapPhySocket              (15h)    MapPhyWindow              (16h)
  9104. ModifyConfiguration       (27h)    ModifyWindow              (17h)
  9105. OpenMemory                (18h)    RegisterClient            (10h)
  9106. ReadMemory                (19h)    RegisterEraseQueue        (0Fh)
  9107. RegisterMTD               (1Ah)    ReleaseConfiguration      (1Eh)
  9108. ReleaseExclusive          (2Dh)    ReleaseIO                 (1Bh)
  9109. ReleaseIRQ                (1Ch)    ReleaseSocketMask         (2Fh)
  9110. ReleaseWindow             (1Dh)    ReplaceSocketServices     (33h)
  9111. RequestConfiguration      (30h)    RequestExclusive          (2Ch)
  9112. RequestIO                 (1Fh)    RequestIRQ                (20h)
  9113. RequestSocketMask         (22h)    RequestWindow             (21h)
  9114. ResetCard                 (11h)    ReturnSSEntry             (23h)
  9115. SetEventMask              (31h)    SetRegion                 (29h)
  9116. ValidateCIS               (2Bh)    WriteMemory               (24h)
  9117.  
  9118. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  9119.  
  9120. The PCMCIA Card Services function notation is defined for the OS/2 operating 
  9121. system as a register-based interface with the following register-to-argument 
  9122. assignments: 
  9123.  
  9124. Input: 
  9125.  
  9126. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  9127.  
  9128.  
  9129.          [AL]             = Function argument
  9130.          [AH]             = Static AFh value
  9131.          [DX]             = Handle argument
  9132.          [DI]:[SI]        = Pointer argument
  9133.          [CX]             = ArgLength argument
  9134.          [ES]:[BX]        = ArgPointer argument
  9135.  
  9136. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  9137.  
  9138. All other registers are undefined. 
  9139.  
  9140. Output: 
  9141.  
  9142. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  9143.  
  9144.  
  9145.          [AX]            = Status argument
  9146.          Carry Flag      = Completion flag
  9147.  
  9148. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  9149.  
  9150. All other registers are reserved. 
  9151.  
  9152. Card Services is invoked using the protect-mode IDC entry point information 
  9153. returned by the DevHlp_AttachDD function. Card Services IDC entry point 
  9154. functions are callable only in kernel-context mode. The caller must do the 
  9155. following: 
  9156.  
  9157.    o  Operate in a Far Call/return model. 
  9158.  
  9159.    o  Use only Global Descriptor Table (GDT) Level 0, 16:16 (Selector:Offset) 
  9160.       addresses in all pointer or address fields referenced across the 
  9161.       interface. 
  9162.  
  9163.    o  Ensure that an appropriate stack is used for the calling model (16-bit 
  9164.       protect mode) with at least 512 bytes of available stack space. 
  9165.  
  9166.    o  Establish the Card Services DS register value (from the information 
  9167.       returned by AttachDD) prior to issuing Card Services function requests. 
  9168.  
  9169.  Card Services performs parameter-range checking on items directly managed and 
  9170.  numbered. Card Services does not check each parameter on entry, but checks 
  9171.  only those with values specified for the requested function. For example, Card 
  9172.  Services determines if the logical socket number is valid or if a card is 
  9173.  present in the socket being addressed. Card Services does not check if the 
  9174.  card offset address is valid or if the unused input parameters contain null or 
  9175.  zero values. For compatibility purposes, define all input values according to 
  9176.  the guidelines outlined in the PCMCIA Interface Specification. 
  9177.  
  9178.  
  9179. ΓòÉΓòÉΓòÉ 14.3.2.2. Callbacks ΓòÉΓòÉΓòÉ
  9180.  
  9181. Card Services callbacks are events grouped into logical subsets, which include 
  9182. a general description and common call-based argument usage conventions. The 
  9183. call-back types received by a client device driver depend on the functions it 
  9184. uses. 
  9185.  
  9186. The OS/2 operating system supports the following PCMCIA Card Services call-back 
  9187. types: 
  9188.  
  9189.    o  Client Information 
  9190.    o  Ejection/Insertion Requests 
  9191.    o  Erase Completion 
  9192.    o  Exclusive 
  9193.    o  Insertion 
  9194.    o  MTD Request 
  9195.    o  Registration Completion 
  9196.    o  Reset 
  9197.    o  Socket Services Updates 
  9198.    o  Status Change 
  9199.  
  9200.  In a Far Call/return model, the PCMCIA Card Services call-back invocation 
  9201.  notation is defined for the OS/2 operating system as a register-based 
  9202.  interface. All callback routines are guaranteed to be called only in 
  9203.  kernel-context mode by the Card Services device driver. This callback 
  9204.  interface uses the following register-to-argument assignments: 
  9205.  
  9206.  Input: 
  9207.  
  9208.   ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  9209.  
  9210.  
  9211.     [AL]            = Function argument
  9212.     [CX]            = Socket argument
  9213.     [DH]            = Information, socket status
  9214.     [DL]            = Information, card status
  9215.     [DI]            = ClientVal field from ClientData structure
  9216.     [DS]            = ClientDS field from ClientData structure
  9217.     [SI]            = ClientOff field from ClientData structure
  9218.     [SS]:[BP]       = MTD Request
  9219.     [ES]:[BX]       = Buffer argument
  9220.     [BX]            = Miscellaneous Argument, when no buffer argument
  9221.  
  9222.   ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  9223.  
  9224.  All other registers are undefined. 
  9225.  
  9226.  Output: 
  9227.  
  9228.   ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  9229.  
  9230.  
  9231.            [AX]            = Status argument
  9232.            Carry Flag      = Completion flag
  9233.  
  9234.            All other registers are preserved.
  9235.  
  9236.   ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  9237.  
  9238.  The ClientData structure is used in the RegisterClient function and has the 
  9239.  following format. 
  9240.  
  9241.   ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  9242.  
  9243.  
  9244.      Field Name    Type      Description
  9245.      ----------    ------    --------------------------------
  9246.      ClientVal     USHORT    Client-specific data value
  9247.      ClientDS      USHORT    Client's data segment selector
  9248.      ClientOff     USHORT    Client's call-back data offset
  9249.      Reserved      USHORT    Reserved field
  9250.  
  9251.   ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  9252.  
  9253.  
  9254. ΓòÉΓòÉΓòÉ 14.3.2.3. Events ΓòÉΓòÉΓòÉ
  9255.  
  9256. The OS/2 operating system supports the following PCMCIA Card Services events: 
  9257.  
  9258. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  9259.  
  9260.  
  9261.          BATTERY_DEAD               (01h)
  9262.  
  9263. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  9264.  
  9265. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  9266.  
  9267.  
  9268.          BATTERY_LOW                (02h)
  9269.  
  9270. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  9271.  
  9272. Note:  These events can be generated at CARD_INSERTION time if hardware 
  9273.        detection capabilities are available. 
  9274.  
  9275.   ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  9276.  
  9277.  
  9278.            CARD_INSERTION             (40h)
  9279.            CARD_READY                 (04h)
  9280.            CARD_REMOVAL               (05h)
  9281.            CARD_RESET                 (11h)
  9282.            CARD_LOCK                  (03h)
  9283.            CARD_UNLOCK                (06h)
  9284.            CLIENT_INFO                (14h)
  9285.            EJECTION_REQUEST           (08h)
  9286.            EJECTION_COMPLETE          (07h)
  9287.            ERASE_COMPLETE             (81h)
  9288.            EXCLUSIVE_REQUEST          (0Eh)
  9289.            EXCLUSIVE_COMPLETE         (0Dh)
  9290.            INSERTION_REQUEST          (0Ah)
  9291.            INSERTION_COMPLETE         (09h)
  9292.            MTD_REQUEST                (12h)
  9293.            REGISTRATION_COMPLETE      (82h)
  9294.            RESET_COMPLETE             (80h)
  9295.            RESET_PHYSICAL             (0Fh)
  9296.            RESET_REQUEST              (10h)
  9297.            SS_UPDATED                 (16h)
  9298.  
  9299.   ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  9300.  
  9301.  The events received by a client device driver depend on the functions the 
  9302.  device driver uses. 
  9303.  
  9304.  
  9305. ΓòÉΓòÉΓòÉ 14.3.2.4. Memory Technology Driver Helpers ΓòÉΓòÉΓòÉ
  9306.  
  9307. The Memory Technology Driver (MTD) Helper routines provide Card Services 
  9308. assistance to MTDs during Read, Write, and Erase operations. 
  9309.  
  9310. Card Services provides default MTD support. The default SRAM MTD supports Read, 
  9311. Write, and Erase (= write FFh) operations. A non-SRAM default MTD supports Read 
  9312. and Write operations as basic bus cycle byte presentations to the card (with no 
  9313. special algorithms). The Erase operation is not supported by the non-SRAM 
  9314. default MTD. 
  9315.  
  9316.  
  9317. ΓòÉΓòÉΓòÉ 14.3.2.5. Media Access Routines ΓòÉΓòÉΓòÉ
  9318.  
  9319. The media access routines are the common worker routines used by MTDs to 
  9320. perform the low-level primitive functions underlying the basic Read, Write, and 
  9321. Erase operations. 
  9322.  
  9323. Card Services builds the Media Access Table (MAT) using the Socket Services 
  9324. function GetAccessOffsets for register-based sockets. If Socket Services does 
  9325. not support the function, the MAT is provided by Card Services itself. 
  9326.  
  9327. All pointers in the MAT consist of Selector:Offset (16:16), level 0, GDT 
  9328. addresses. 
  9329.  
  9330.  
  9331. ΓòÉΓòÉΓòÉ 14.3.2.6. Return Codes ΓòÉΓòÉΓòÉ
  9332.  
  9333. All return codes are used and returned in the manner defined in the PCMCIA Card 
  9334. Services Release 2.00 Interface Specification unless explicitly noted in this 
  9335. document. Function compatibility determines which of the return codes (equate 
  9336. names and numeric values) will actually be returned for each function. 
  9337.  
  9338. Functions that are not supported will be returned with the standard Card 
  9339. Services UNSUPPORTED_FUNCTION error code (15h). 
  9340.  
  9341.  
  9342. ΓòÉΓòÉΓòÉ 14.3.3. Deviations from Card Services Release 2.00 ΓòÉΓòÉΓòÉ
  9343.  
  9344. There are some deviations from the PCMCIA Card Services Release 2.00 Interface 
  9345. Specification in the PCMCIA support. These deviations are as follows: 
  9346.  
  9347.    o  General 
  9348.  
  9349.       The following return codes are available on all Card Services functions 
  9350.       supported by the OS/2 operating system. 
  9351.  
  9352.       Return Codes: 
  9353.  
  9354.            BUSY                       Unable to process request at this time; 
  9355.                                       retry later. 
  9356.  
  9357.                                       The calling client is expected to retry 
  9358.                                       the failed operation at a later time. 
  9359.  
  9360.            OUT_OF_RESOURCE            Out of internal or system resources 
  9361.                                       necessary to process the request. 
  9362.  
  9363.                                       The calling client is expected to either 
  9364.                                       retry the operation later or cancel the 
  9365.                                       current operation. 
  9366.  
  9367.                                       (See Implementation Limitations and 
  9368.                                       Restrictions for more details.) 
  9369.  
  9370.    o  AddSocketServices (32h) 
  9371.  
  9372.       The Attributes field defines details for the new Socket Services entry 
  9373.       point. Card Services accepts only bit 1 (16:16 protect mode) requests. 
  9374.  
  9375.       The DataPointer field is used to establish data addressability for Socket 
  9376.       Services when called by Card Services. Card Services accepts only 16-bit, 
  9377.       protect-mode, GDT Level 0, data selector values. 
  9378.  
  9379.       Return Codes: 
  9380.  
  9381.       OS/2 Card Services returns the following error codes in addition to the 
  9382.       error codes defined in the PCMCIA specification: 
  9383.  
  9384.            BAD_ARG_LENGTH             ArgLength value is not equal to 4. 
  9385.  
  9386.            UNSUPPORTED_MODE           Requested processor mode is not 16:16 
  9387.                                       protect mode. 
  9388.  
  9389.    o  AdjustResourceInfo (35h) 
  9390.  
  9391.       Return Codes: 
  9392.  
  9393.       OS/2 Card Services returns the following error code in addition to the 
  9394.       error codes defined in the PCMCIA specification: 
  9395.  
  9396.            BAD_ARGS       The IOAddrLines field is 0 or greater than 16. 
  9397.  
  9398.    o  DeregisterClient (02h) 
  9399.  
  9400.       To use the DeregisterClient function, the client must release all the 
  9401.       resources allocated using the following functions: 
  9402.  
  9403.         -  RequestConfiguration 
  9404.         -  RequestIO 
  9405.         -  RequestIRQ 
  9406.         -  RequestWindow 
  9407.         -  RegisterEraseQueue 
  9408.         -  OpenMemory 
  9409.  
  9410.          Return Codes: 
  9411.  
  9412.          OS/2 Card Services returns the following error code in addition to the 
  9413.          error codes defined in the PCMCIA specification: 
  9414.  
  9415.            IN_USE         A resource has not been released by the requesting 
  9416.                           client. 
  9417.  
  9418.    o  GetCardServicesInfo (0Bh) 
  9419.  
  9420.       The following OS/2 Card Services returns the following: 
  9421.  
  9422.            0100 for the Revision value. 
  9423.  
  9424.            0200h for the CSLevel value. 
  9425.  
  9426.            Text for the VendorStrings value: 
  9427.  
  9428.             ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  9429.  
  9430.  
  9431.                      IBM OS/2 PCMCIA Card Services Device Driver.
  9432.                      [c]  Copyright IBM Corporation 1992, 1993, 1994.
  9433.                      All Rights Reserved.
  9434.  
  9435.             ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  9436.  
  9437.    o  RegisterClient (10h) 
  9438.  
  9439.       Card Services does not support the power management change bit in the 
  9440.       EventMask field. Set bit 8 to 0 for future compatibility. Card Services 
  9441.       currently disregards the bit 8 value. 
  9442.  
  9443.       Card Services does not support the write-protect change bit in the 
  9444.       EventMask field. Bit 0 should be set to 0 for future compatibility. Card 
  9445.       Services currently disregards the bit 0 value. 
  9446.  
  9447.       Card Services does not support the Version field. It is recommended that 
  9448.       the value be set to 0200h for future compatibility. Card Services 
  9449.       currently disregards the Version field. 
  9450.  
  9451.       Return Codes: 
  9452.  
  9453.       OS/2 Card Services returns the following error code in addition to the 
  9454.       error codes defined in the PCMCIA specification. 
  9455.  
  9456.            BAD_ATTRIBUTE       No client type or more than one client type 
  9457.                                specified. 
  9458.  
  9459.    o  ReplaceSocketServices (33h) 
  9460.  
  9461.       One Socket Services device driver can replace another only if it takes 
  9462.       ownership of the exact adapter resources previously claimed by the 
  9463.       existing Socket Services device driver. If this does not occur, the 
  9464.       request is rejected with a BAD_SOCKET error return code. 
  9465.  
  9466.    o  RequestIRQ (20h) 
  9467.  
  9468.       Card Services supports the following Attributes field bit definitions. 
  9469.  
  9470.             ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  9471.  
  9472.  
  9473.                      Bit 0 - 1   IRQ type
  9474.                                  0 - Exclusive
  9475.                                  1 - Time-Multiplexed Sharing
  9476.                                  2 - Dynamic Sharing
  9477.                                  3 - Reserved
  9478.                      Bit 2       Force Pulse (Not supported, must = 0)
  9479.                      Bit 3       First Shared
  9480.                      Bit 4 - 7   Reserved (Must = 0)
  9481.                      Bit 8       Pulse IRQ Allocated
  9482.                                  (not supported, always returned as 0)
  9483.                      Bit 9 - 15  Reserved (Must = 0)
  9484.  
  9485.             ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  9486.  
  9487.       If any of the unsupported Attributes field bits are set, the request 
  9488.       fails with a BAD_ATTRIBUTE return code. 
  9489.  
  9490.    o  RequestSocketMask (22h) 
  9491.  
  9492.       Card Services does not support the power management change or the 
  9493.       write-protect change bits in the EventMask field. Set these bits to 0 for 
  9494.       future compatibility. Card Services currently disregards these bit 
  9495.       values. 
  9496.  
  9497.    o  RequestWindow (21h) 
  9498.  
  9499.       Card Services supports the following Attributes field bit definitions. 
  9500.  
  9501.             ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  9502.  
  9503.  
  9504.                      Bit 0      Reset to 0.
  9505.                      Bit 1      Memory type (Set = attribute)
  9506.                      Bit 2      Enabled (Set = true, reset = disabled)
  9507.                      Bit 3      Data path width (Reset = 8-bit, set = 16-bit)
  9508.  
  9509.                      Bit 4      Paged (Set = true)
  9510.                                 (not supported, must be 0)
  9511.                      Bit 5      Shared (Set = true)
  9512.                      Bit 6      First Shared (Set = true)
  9513.                      Bit 7 - 15 RESERVED (reset to 0)
  9514.  
  9515.             ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  9516.  
  9517.       If any of the unsupported Attributes field bits are set, the request 
  9518.       fails with a BAD_ATTRIBUTE return code. 
  9519.  
  9520.       Card Services sets the PCMCIA card memory offset for the window to 0. A 
  9521.       client can change a PCMCIA card memory offset for the window by using the 
  9522.       MapMemPage function. 
  9523.  
  9524.    o  SetEventMask (31h) 
  9525.  
  9526.       Card Services does not support the power-management change or the 
  9527.       write-protect change bits in the EventMask field. Set these bits to 0 for 
  9528.       future compatibility. Card Services currently disregards these bit 
  9529.       values. 
  9530.  
  9531.  
  9532. ΓòÉΓòÉΓòÉ 14.3.4. Card Services Device Driver Parameters ΓòÉΓòÉΓòÉ
  9533.  
  9534. OS/2 Card Services supports the following BASEDEV= parameters in the CONFIG.SYS 
  9535. file: 
  9536.  
  9537. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  9538.  
  9539.  
  9540.     .
  9541.     .
  9542.     BASEDEV=[drive][:pathname]\PCMCIA.SYS /W
  9543.     .
  9544.     .
  9545.  
  9546.     .
  9547.     .
  9548.  
  9549. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  9550.  
  9551. Parameter descriptions are defined as follows: 
  9552.  
  9553.    o  /W 
  9554.  
  9555.       Wait line monitoring control. 
  9556.  
  9557.       Refer to the Command Reference for a description of all the parameters 
  9558.       defined for the Card Services device drivers. 
  9559.  
  9560.  
  9561. ΓòÉΓòÉΓòÉ 14.4. COM Support ΓòÉΓòÉΓòÉ
  9562.  
  9563. The OS/2 COM driver provides generic hardware support for ASYNC COM ports 
  9564. present in the system unit.  COM provides this generalized support to the 
  9565. application layers in OS/2 by way of Category 01h Generic IOCtl functions. 
  9566. Please see the OS/2 Physical Device Driver Reference for more details. 
  9567.  
  9568.  
  9569. ΓòÉΓòÉΓòÉ 14.4.1. Inter-Device-Driver Client Interfaces ΓòÉΓòÉΓòÉ
  9570.  
  9571. The OS/2 PCMCIA architecture includes a special set of interfaces that allow 
  9572. transparent application support for PCMCIA COM devices. The OS/2 COM device 
  9573. driver (COM.SYS) provides an IDC interface that allows PCMCIA Clients to map 
  9574. their serial devices into the standard COM port declarations. This interface 
  9575. enables a wide-range of existing COM-based applications, without modification, 
  9576. to view and access the PCMCIA devices as if they were standard COM devices. 
  9577.  
  9578. The OS/2 COM IDC support for PCMCIA devices is unique because the client device 
  9579. driver performs the installation (device setup) and deinstallation (device 
  9580. removal) processing with Card Services. The OS/2 COM physical device driver 
  9581. assumes the responsibilities for application interaction with the device as 
  9582. well as the device manipulation for the data transfer. The arrangement can be 
  9583. viewed as COM.SYS containing a generic COM device engine while the client 
  9584. manages mapping the device characteristics into the system. 
  9585.  
  9586. The COM IDC interface connection is established by the Client Device Driver by 
  9587. issuing the DevHelp_AttachDD function with a device name parameter value of 
  9588. "COM1" (COM1 followed by 4 blanks). The Client device driver can call the 
  9589. AttachDD function during the INIT Command (00h) or INIT_COMPLETE (1Fh) Command 
  9590. processing and save the returned DevHelp_IDC entry point information for later 
  9591. use. 
  9592.  
  9593. In a Far Call/return model, the COM IDC is defined as a register-based 
  9594. interface.  This interface uses the following register-to-argument assignments: 
  9595.  
  9596. Input: 
  9597.  
  9598. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  9599.  
  9600.  
  9601.   [DS]            = COM DS selector value
  9602.   [ES]:[BX]       = Request Packet pointer
  9603.  
  9604. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  9605.  
  9606. All other registers are undefined. 
  9607.  
  9608. Output: 
  9609.  
  9610. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  9611.  
  9612.  
  9613.          Carry Flag      = Completion flag
  9614.  
  9615.          IF CF = 1         If CF is set (value=1) then the
  9616.                            request failed. The error code is
  9617.                            stored in the ReturnCode field
  9618.                            of the request packet.
  9619.  
  9620.          IF CF = 0         If CF is reset (value=0) then the
  9621.                            request completed successfully.
  9622.  
  9623. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  9624.  
  9625. Input register values remain unchanged, all other registers are reserved. 
  9626.  
  9627. COM is invoked using the protect-mode IDC entry point information returned by 
  9628. the DevHlp_AttachDD function. The caller must do the following: 
  9629.  
  9630.    o  Operate in a Far Call/return model. 
  9631.  
  9632.    o  Use only Global Descriptor Table (GDT) Level 0, 16:16 (Selector:Offset) 
  9633.       addresses in all pointer or address fields referenced across the 
  9634.       interface. 
  9635.  
  9636.    o  Establish the COM DS register value (from the information returned by 
  9637.       AttachDD) prior to issuing COM function requests. 
  9638.  
  9639.  The COM IDC interface consists of two functions: Install Device and Deinstall 
  9640.  Device. These IDC functions use a common packet format for parameter passing. 
  9641.  The parameter packet structure is defined as: 
  9642.  
  9643.   ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  9644.  
  9645.  
  9646.      Field Name    Type      Description
  9647.      ----------    ------    -----------------
  9648.      Function      USHORT    Function code
  9649.      PortNumber    USHORT    COM Port Number
  9650.      PortAddr      USHORT    COM Port Address
  9651.      PortIRQ       USHORT    COM Port IRQ
  9652.      ReturnCode    USHORT    Return code
  9653.  
  9654.   ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  9655.  
  9656.  The COM IDC packet field descriptions and values are defined as follows: 
  9657.  
  9658.    o  Function 
  9659.  
  9660.       Input parameter. 
  9661.  
  9662.       Contains the IDC Requested function code. Supported values are: 
  9663.  
  9664.         -  0 - Deinstall COM port device 
  9665.  
  9666.            This function requests that the established COM device associations 
  9667.            for the device owned by the calling client device driver be removed. 
  9668.            Deinstall requests are typically made during the client's processing 
  9669.            of a Card Services CARD_REMOVAL event. The client should call this 
  9670.            function before it has released the resource configuration from Card 
  9671.            Services. 
  9672.  
  9673.         -  1 - Install COM port device 
  9674.  
  9675.            This function requests that the specific COM device associations for 
  9676.            the device owned by the calling client device driver be established. 
  9677.            Installation requests are typically made during the client's 
  9678.            processing of a Card Services CARD_INSERTION event. The client 
  9679.            should call this function after it has received a resource 
  9680.            configuration from Card Services. 
  9681.  
  9682.         -  All other values are reserved for future use. 
  9683.  
  9684.    o  PortNumber 
  9685.  
  9686.       Input parameter. 
  9687.  
  9688.       Contains the COM port number associated with the device. Supported values 
  9689.       are: 
  9690.  
  9691.         -  1 - indicates COM1 port selection 
  9692.         -  2 - indicates COM2 port selection 
  9693.         -  3 - indicates COM3 port selection 
  9694.         -  4 - indicates COM4 port selection 
  9695.         -  All other values are reserved for future use. 
  9696.  
  9697.    o  PortAddr 
  9698.  
  9699.       Input parameter. 
  9700.  
  9701.       Contains the four-digit hexadecimal COM port address associated with the 
  9702.       device. This parameter value is ignored in the Deinstall function 
  9703.       request. However, it should always be provided for future compatibility. 
  9704.       Examples of typical COM port address values are 03F8h and 02F8h. 
  9705.  
  9706.    o  PortIRQ 
  9707.  
  9708.       Input parameter. 
  9709.  
  9710.       Contains the interrupt request level (IRQ) value associated with the 
  9711.       device. Supported values are within the range of 1 through 15 and 
  9712.       represent the IRQ number requested. All other values are reserved for 
  9713.       future use. 
  9714.  
  9715.    o  ReturnCode 
  9716.  
  9717.       Input/Output parameter. 
  9718.  
  9719.       Contains the return code for the IDC function request. On input, the 
  9720.       parameter value should be set to zero. On output, the supported values 
  9721.       are: 
  9722.  
  9723.         -  ERROR_DEVICE_IN_USE 
  9724.  
  9725.            Indicates the requested COM port number is already in use. 
  9726.  
  9727.         -  ERROR_INTERRUPT 
  9728.  
  9729.            Indicates the requested IRQ level is already in use. 
  9730.  
  9731.         -  ERROR_INVALID_ADDRESS 
  9732.  
  9733.            Indicates the requested COM port address is already in use. 
  9734.  
  9735.         -  ERROR_DEV_NOT_EXIST 
  9736.  
  9737.            Indicates the requested COM port number is not installed. Only 
  9738.            returned on Deinstall function requests. 
  9739.  
  9740.         -  ERROR_INVALID_FUNCTION 
  9741.  
  9742.            Indicates the requested function code is not supported. 
  9743.  
  9744.         -  NO_ERROR 
  9745.  
  9746.            Indicates the requested function completed successfully without 
  9747.            errors. 
  9748.  
  9749.  Notes 
  9750.  
  9751.    1. All packet values defined as input parameters are provided by the calling 
  9752.       client device driver. All output packet values are returned by COM.SYS. 
  9753.  
  9754.    2. The COM IDC requests may not be used during the Interrupt context. All 
  9755.       requests should be made only during Kernel and Init contexts. 
  9756.  
  9757.  
  9758. ΓòÉΓòÉΓòÉ 14.5. Socket Services ΓòÉΓòÉΓòÉ
  9759.  
  9760. The PCMCIA Socket Services architecture allows for both device driver and ROM 
  9761. BIOS implementations of the Socket Services support layer. Both implementation 
  9762. models follow a standard presence detection and interface setup methodology. 
  9763. This common methodology is defined as follows: 
  9764.  
  9765. Presence Detection 
  9766.  
  9767. Performed by issuing the real mode INT 1Ah - GetAdapterCount function request. 
  9768. If the function returns SUCCESS and "SS" in the Signature field, then at least 
  9769. one Socket Services handler exists. 
  9770.  
  9771. Interface Setup 
  9772.  
  9773. When Card Services completes the presence detection step it must: 
  9774.  
  9775.    1. Issue the real mode INT 1Ah - GetSSInfo function request to identify the 
  9776.       mapping between Socket Services handlers and the adapters located in the 
  9777.       system. 
  9778.  
  9779.    2. Issue the real mode INT 1Ah - GetSetSSAddr function request (w/subfunc = 
  9780.       0) to determine supporting interface modes and interface interaction 
  9781.       dependencies. In addition, more GetSetSSAddr function requests (w/subfunc 
  9782.       = 1 and 2) are needed for implementations requiring additional data 
  9783.       areas. 
  9784.  
  9785.    3. All subsequent interface function requests do not use the INT 1Ah 
  9786.       convention but rather use one of the supported interface modes returned 
  9787.       in the previous step. 
  9788.  
  9789.  OS/2 Card Services does not currently support ROM BIOS implementations of 
  9790.  Socket Services. This is primarily a test statement based upon the lack of ROM 
  9791.  BIOS systems for OS/2 Card Services on which it is to be verified. The OS/2 
  9792.  Socket Services device driver model does not require all of the defined PCMCIA 
  9793.  architecture interface setup steps previously listed.  Therefore, the OS/2 
  9794.  Socket Services presence detection and interface setup methodology for device 
  9795.  driver implementations follow the logic defined earlier in this document see 
  9796.  Step 3 of the OS/2 Initialization Architecture. 
  9797.  
  9798.  
  9799. ΓòÉΓòÉΓòÉ 14.5.1. Functions ΓòÉΓòÉΓòÉ
  9800.  
  9801. OS/2 supports the following PCMCIA Socket Services functions in device driver 
  9802. implementations: 
  9803.  
  9804. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  9805.  
  9806.  
  9807. AcknowledgeInterrupt      (9Eh)    GetAdapter                (85h)
  9808. GetAdapterCount           (80h)    GetPage                   (8Ah)
  9809. GetSocket                 (8Dh)    GetSSInfo                 (83h)
  9810. GetStatus                 (8Fh)    GetVendorInfo             (9Dh)
  9811. GetWindow                 (88h)    InquireAdapter            (84h)
  9812. InquireSocket             (8Ch)    InquireWindow             (87h)
  9813. ResetSocket               (90h)    SetAdapter                (86h)
  9814. SetPage                   (8Bh)    SetSocket                 (8Eh)
  9815. SetWindow                 (89h)
  9816.  
  9817. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  9818.  
  9819. All Socket Services IDC functions are callable in kernel-context mode. In 
  9820. addition, the AcknowledgeInterrupt (9Eh) function is callable in 
  9821. interrupt-context mode.  Card Services is responsible for managing the PCMCIA 
  9822. adapter interrupt state and issues the EOI upon return from the 
  9823. AcknowledgeInterrupt request. 
  9824.  
  9825. The PCMCIA Socket Services function notation is defined for the OS/2 operating 
  9826. system as a register-based interface with the following register-to-argument 
  9827. assignments: 
  9828.  
  9829. Input: 
  9830.  
  9831. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  9832.  
  9833.  
  9834.          [AH]             = Function argument
  9835.          [AL]             = Adapter argument
  9836.          [BH]             = Window argument
  9837.          [BL]             = Page or Socket argument
  9838.          [CX]             = Count argument
  9839.          [DX]             = Attributes argument
  9840.          [DS]:[SI]        = Data pointer argument
  9841.          [ES]:[DI]        = Buffer pointer argument
  9842.          [DI]             = Offset or Base argument
  9843.  
  9844. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  9845.  
  9846. All other registers are undefined. 
  9847.  
  9848. Output: 
  9849.  
  9850. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  9851.  
  9852.  
  9853.          [AX]            = Return Code argument
  9854.          Carry Flag      = Status Indicator
  9855.  
  9856. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  9857.  
  9858. All other registers are reserved. 
  9859.  
  9860. Socket Services is invoked using the protect-mode IDC entry point information, 
  9861. which is provided to Card Services in the AddSocketServices function request. 
  9862. Card Services is the sole client of Socket Services and provides the following 
  9863. interface requirements: 
  9864.  
  9865.    o  Operate in a Far Call/return model. 
  9866.  
  9867.    o  Use only Global Descriptor Table (GDT) Level 0, 16:16 (Selector:Offset) 
  9868.       addresses in all pointer or address fields referenced across the 
  9869.       interface. 
  9870.  
  9871.    o  Ensure that an appropriate stack is used for the calling model (16-bit 
  9872.       protect mode) with at least 512 bytes of available stack space. 
  9873.  
  9874.    o  Establish the Socket Services DS register value (from the information 
  9875.       provided by the AddSocketServices request) prior to issuing Socket 
  9876.       Services function requests. 
  9877.  
  9878.  Socket Services performs parameter-range checking on items directly managed 
  9879.  and numbered.  Socket Services does not check each parameter on entry, but 
  9880.  checks only those with values specified for the requested function.  Socket 
  9881.  Services does not check if the unused input parameters contain null or zero 
  9882.  values. For compatibility purposes, define all input values according to the 
  9883.  guidelines outlined in the PCMCIA Interface Specification. 
  9884.  
  9885.  
  9886. ΓòÉΓòÉΓòÉ 14.5.2. Return Codes ΓòÉΓòÉΓòÉ
  9887.  
  9888. All return codes are used and returned in the manner defined in the PCMCIA 
  9889. Socket Services Release 2.00 Interface Specification unless explicitly noted in 
  9890. this document.  Function compatibility determines which of the return codes 
  9891. (equate names and numeric values) will actually be returned for each function. 
  9892.  
  9893. Functions that are not supported will be returned with the standard Socket 
  9894. Services UNSUPPORTED_FUNCTION error code (15h). 
  9895.  
  9896.  
  9897. ΓòÉΓòÉΓòÉ 14.5.3. Deviations from Socket Services Release 2.00 ΓòÉΓòÉΓòÉ
  9898.  
  9899. There are some deviations from the PCMCIA Socket Services Release 2.00 
  9900. Interface Specification in the OS/2 operating systems PCMCIA support, as shown 
  9901. in the following list: 
  9902.  
  9903.    o  GetAdapterCount (80h) 
  9904.  
  9905.       OS/2 Socket Services returns the number of adapters supported by this 
  9906.       driver for the TotalAdapters value. 
  9907.  
  9908.    o  GetSSInfo (0Bh) 
  9909.  
  9910.       OS/2 Socket Services returns 0100 for the Compliance value. 
  9911.  
  9912.       OS/2 Socket Services always returns zero for the FirstAdapter value. 
  9913.  
  9914.    o  GetVendorInfo (9Dh) 
  9915.  
  9916.       OS/2 Socket Services returns the following text for the pBuffer pointer: 
  9917.  
  9918.             ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  9919.  
  9920.  
  9921.                      IBM OS/2 PCMCIA Socket Services Device Driver.
  9922.                        [c]  Copyright IBM Corporation 1992, 1993, 1994.
  9923.                      All Rights Reserved.
  9924.  
  9925.             ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  9926.  
  9927.       OS/2 Socket Services returns 0100 for the Release value. 
  9928.  
  9929.  
  9930. ΓòÉΓòÉΓòÉ 14.5.4. Device Driver Parameters ΓòÉΓòÉΓòÉ
  9931.  
  9932. OS/2 Socket Services supports the following BASEDEV= parameters in the 
  9933. CONFIG.SYS file: 
  9934.  
  9935. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  9936.  
  9937.  
  9938. BASEDEV=drive:pathname\???xSS0n.SYS /C0=10 /C1=11 /S0=2 /S1=1
  9939.  
  9940. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  9941.  
  9942. Refer to the Command Reference for a description of all the parameters defined 
  9943. for the Socket Services device drivers. 
  9944.  
  9945.  
  9946. ΓòÉΓòÉΓòÉ 14.6. Sample Socket Services Device Driver ΓòÉΓòÉΓòÉ
  9947.  
  9948. The sample Socket Services device driver, which supports the 82365SL B-Step PC 
  9949. Card Interface Controller (PCIC), is Intel** written to the PCMCIA Socket 
  9950. Services Interface 2.0 specification level. As of OS/2 2.1, Card Services is 
  9951. included with the base operating system. The Socket Services sample driver will 
  9952. fail to load if the OS/2 Card Services device driver is not already present. 
  9953.  
  9954. At device driver load time, the Socket Services driver performs a 
  9955. DevHlp_ATTACHDD to Card Services.  If this ATTACHDD fails, the Socket Services 
  9956. driver will set a return code in the request packet to indicate its failure to 
  9957. install.  If the Socket Services driver successfully attaches to Card Services, 
  9958. it will interface to this driver by way of an IDC call to perform the 
  9959. AddSocketServices function. 
  9960.  
  9961. The sample driver is written in assembler, and relies on the Microsoft** MASM 
  9962. Assembler Version 6.00. 
  9963.  
  9964.  
  9965. ΓòÉΓòÉΓòÉ 14.6.1. Invoking the Sample Socket Services Device Driver ΓòÉΓòÉΓòÉ
  9966.  
  9967. The Socket Services driver is an OS/2 physical device driver and is invoked at 
  9968. system IPL time.  Since the driver is a BASEDEV, it resides in the \OS2 
  9969. directory of the IPL volume, and no path information is specified on the 
  9970. command line in CONFIG.SYS.  The syntax is as follows: 
  9971.  
  9972. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  9973.  
  9974.  
  9975. BASEDEV=SSPCIC.SYS /H /A:nnnn /E
  9976.  
  9977. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  9978.  
  9979. Note that the parameters used by the driver are not the same as those used by 
  9980. the drivers shipped with OS/2.  The sample driver will auto-detect the number 
  9981. of sockets present, and does not permit the manual specification of the IRQ. 
  9982. The driver will usually initialize properly with no parameters specified, but 
  9983. the following parameters may be used to direct its initialization: 
  9984.  
  9985.    o  /H 
  9986.  
  9987.       The /H parameter causes the driver to print out the help information and 
  9988.       then terminate. 
  9989.  
  9990.    o  /A:nnnn 
  9991.  
  9992.       The /A:nnnn parameter allows the user to specify an adapter I/O address 
  9993.       within the range 100h and 3F0h.  If not specified, the default value 
  9994.       03E0h is used. 
  9995.  
  9996.    o  /E 
  9997.  
  9998.       The /E parameter enables initialization message output.  If this 
  9999.       parameter is not specified, messages will not be displayed. 
  10000.  
  10001.  
  10002. ΓòÉΓòÉΓòÉ 14.6.2. Component Internal Structure ΓòÉΓòÉΓòÉ
  10003.  
  10004. The component internal structure is described below. 
  10005.  
  10006.  
  10007. ΓòÉΓòÉΓòÉ 14.6.2.1. IDC Interface ΓòÉΓòÉΓòÉ
  10008.  
  10009. The IDC packet structure shared between the Socket Services driver and the Card 
  10010. Services driver is defined in Socket Services. 
  10011.  
  10012.  
  10013. ΓòÉΓòÉΓòÉ 14.6.3. Component Logic Flow ΓòÉΓòÉΓòÉ
  10014.  
  10015. The Socket Services driver is divided into two main parts: Initialization and 
  10016. Socket Services Interface Request Processing.  The Socket Services Interface 
  10017. routines are straightforward procedures that perform the PCMCIA Socket Services 
  10018. functions defined in Socket Services.  The device driver initialization routine 
  10019. is depicted in the following figure. 
  10020.  
  10021. The sample Socket Services device driver consists of the modules shown in the 
  10022. following table: 
  10023.  
  10024. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  10025. ΓöéModule       ΓöéModule Description                ΓöéLine-of-Code Γöé
  10026. Γöé             Γöé                                  ΓöéEstimates    Γöé
  10027. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10028. ΓöéMAKEFILE     ΓöéMakefile source                   ΓöéN/A          Γöé
  10029. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10030. ΓöéSSOS2DRV.ASM ΓöéContains the OS/2 operating systemΓöé243          Γöé
  10031. Γöé             Γöédependent routines                Γöé             Γöé
  10032. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10033. ΓöéSSPCICIN.ASM ΓöéSocket Services device driver     Γöé386          Γöé
  10034. Γöé             Γöéinitialization routines           Γöé             Γöé
  10035. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10036. ΓöéSSPCIC.ASM   ΓöéPCMCIA Socket Services Functions  Γöé623          Γöé
  10037. Γöé             Γöéroutines, except for window       Γöé             Γöé
  10038. Γöé             Γöémanagement routines               Γöé             Γöé
  10039. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10040. ΓöéSSPCICDP.ASM ΓöéDevice driver internal function   Γöé212          Γöé
  10041. Γöé             Γöédispatcher                        Γöé             Γöé
  10042. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10043. ΓöéSSPCICVA.ASM ΓöéRequest parameter validation      Γöé115          Γöé
  10044. Γöé             Γöéroutines                          Γöé             Γöé
  10045. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10046. ΓöéSSPCICWM.ASM ΓöéWindow Management routines        Γöé569          Γöé
  10047. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10048. ΓöéSSPCICUT.ASM ΓöéUtility routines used by the      Γöé218          Γöé
  10049. Γöé             Γöéprimary function routines of the  Γöé             Γöé
  10050. Γöé             Γöédriver                            Γöé             Γöé
  10051. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10052. ΓöéSSMSG.ASM    ΓöéThe device driver's initializationΓöé42           Γöé
  10053. Γöé             Γöémessages                          Γöé             Γöé
  10054. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10055. ΓöéSSOS2.INC    ΓöéOS/2 operating system related     Γöé39           Γöé
  10056. Γöé             Γöédefinitions                       Γöé             Γöé
  10057. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10058. ΓöéSSMSG.INC    ΓöéMessage file related definitions  Γöé22           Γöé
  10059. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10060. ΓöéSSPCIC.INC   ΓöéIntel 82365SL PCIC related        Γöé241          Γöé
  10061. Γöé             Γöédefinitions                       Γöé             Γöé
  10062. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10063. ΓöéSSDEFS.INC   ΓöéPCMCIA Socket Services related    Γöé295          Γöé
  10064. Γöé             Γöédefinitions                       Γöé             Γöé
  10065. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10066. ΓöéSS_SEGM.INC  ΓöéPhysical Device Driver data and   Γöé28           Γöé
  10067. Γöé             Γöécode segment definitions          Γöé             Γöé
  10068. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10069. ΓöéSSMAC.INC    ΓöéInternally used macro definitions Γöé18           Γöé
  10070. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10071. ΓöéSSPCIC.DEF   ΓöéLinker definitions file           ΓöéN/A          Γöé
  10072. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10073. ΓöéTOTAL        Γöé                                  Γöé 3051        Γöé
  10074. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  10075.  
  10076.  
  10077. ΓòÉΓòÉΓòÉ 14.6.4. Module to Function Map ΓòÉΓòÉΓòÉ
  10078.  
  10079. The following table lists the modules and the function or routines they 
  10080. contain.  Note the use of the following prefixes on some of the module names: 
  10081.  
  10082.    o  co - (common) Indicates code that should be common to any implementation 
  10083.       of this driver 
  10084.  
  10085.    o  as - (adapter specific) These routines contain the code that would likely 
  10086.       need to be changed if this driver is modified to support a different 
  10087.       socket controller chip. 
  10088.  
  10089.    o  os - (operating system) Indicates a routine that is highly operating 
  10090.       system specific. 
  10091.  
  10092.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  10093.   ΓöéModules        ΓöéRoutines                      Γöé
  10094.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10095.   ΓöéSSOS2DRV.ASM   ΓöéStrategy                      Γöé
  10096.   Γöé               ΓöéGetSegmPars                   Γöé
  10097.   Γöé               ΓöéGetSetSSAddr                  Γöé
  10098.   Γöé               ΓöéosAddSS                       Γöé
  10099.   Γöé               ΓöéosOKtoLoad                    Γöé
  10100.   Γöé               ΓöéosPrintString                 Γöé
  10101.   Γöé               ΓöéosPrintChar                   Γöé
  10102.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10103.   ΓöéSSPCICIN.ASM   ΓöécoiInitAdapter                Γöé
  10104.   Γöé               ΓöécoiInitSocket                 Γöé
  10105.   Γöé               ΓöécoiInitWindow                 Γöé
  10106.   Γöé               ΓöécoiInitAll                    Γöé
  10107.   Γöé               ΓöécoiScanCommand                Γöé
  10108.   Γöé               ΓöéasDetectAdapter               Γöé
  10109.   Γöé               ΓöéasResetHardware               Γöé
  10110.   Γöé               ΓöécoiInitSS                     Γöé
  10111.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10112.   ΓöéSSPCIC.ASM     ΓöéGetReg                        Γöé
  10113.   Γöé               ΓöéSetReg                        Γöé
  10114.   Γöé               ΓöéasSetSktIRQ                   Γöé
  10115.   Γöé               ΓöéasSetSktInterface             Γöé
  10116.   Γöé               ΓöéasSetSktMask                  Γöé
  10117.   Γöé               ΓöéGetPower                      Γöé
  10118.   Γöé               ΓöéSetVcc                        Γöé
  10119.   Γöé               ΓöéSetVpp                        Γöé
  10120.   Γöé               ΓöéSoftReset                     Γöé
  10121.   Γöé               ΓöéGetSktChanges                 Γöé
  10122.   Γöé               ΓöéGetAdapterCnt                 Γöé
  10123.   Γöé               ΓöéGetSSInfo                     Γöé
  10124.   Γöé               ΓöéGetVendorInfo                 Γöé
  10125.   Γöé               ΓöéAckInterrupt                  Γöé
  10126.   Γöé               ΓöéInquireAdapter                Γöé
  10127.   Γöé               ΓöéInquireSocket                 Γöé
  10128.   Γöé               ΓöéSetSktPower                   Γöé
  10129.   Γöé               ΓöéGetSocket                     Γöé
  10130.   Γöé               ΓöéGetStatus                     Γöé
  10131.   Γöé               ΓöéSetSocket                     Γöé
  10132.   Γöé               ΓöéResetSocket                   Γöé
  10133.   Γöé               ΓöéGetInstSktState               Γöé
  10134.   Γöé               ΓöéGetAdapter                    Γöé
  10135.   Γöé               ΓöéSetAdapter                    Γöé
  10136.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10137.   ΓöéSSPCICDP.ASM   ΓöéIsCardIn                      Γöé
  10138.   Γöé               ΓöéValidateArgs                  Γöé
  10139.   Γöé               ΓöécodCommon16                   Γöé
  10140.   Γöé               ΓöécodRM_Entry                   Γöé
  10141.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10142.   ΓöéSSPCICVA.ASM   ΓöécovValidateIRQ                Γöé
  10143.   Γöé               ΓöéCheckPowerLevel               Γöé
  10144.   Γöé               ΓöécovValidatePw                 Γöé
  10145.   Γöé               ΓöécovValidateIFt                Γöé
  10146.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10147.   ΓöéSSPCICWM.ASM   ΓöécowDisableWindow              Γöé
  10148.   Γöé               ΓöécowEnableWindow               Γöé
  10149.   Γöé               ΓöécowIsWindowEnabled            Γöé
  10150.   Γöé               ΓöécowValWinPars                 Γöé
  10151.   Γöé               ΓöéGetWndReg                     Γöé
  10152.   Γöé               ΓöéSetWndReg                     Γöé
  10153.   Γöé               ΓöéCalcWndIndex                  Γöé
  10154.   Γöé               ΓöéasGetWindowCtrl               Γöé
  10155.   Γöé               ΓöéInquireWindow                 Γöé
  10156.   Γöé               ΓöéGetWindow                     Γöé
  10157.   Γöé               ΓöéSetupMemWin                   Γöé
  10158.   Γöé               ΓöéSetupIOWin                    Γöé
  10159.   Γöé               ΓöéSetWindow                     Γöé
  10160.   Γöé               ΓöéGetPage                       Γöé
  10161.   Γöé               ΓöéSetPage                       Γöé
  10162.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10163.   ΓöéSSPCICUT.ASM   ΓöécouDelay                      Γöé
  10164.   Γöé               ΓöécouIsValidSpeed               Γöé
  10165.   Γöé               ΓöécouGetSpeedComp               Γöé
  10166.   Γöé               ΓöécouCompSpeed                  Γöé
  10167.   Γöé               ΓöécouCopyInfo                   Γöé
  10168.   Γöé               ΓöécouGetHex                     Γöé
  10169.   Γöé               ΓöécouGetToken                   Γöé
  10170.   Γöé               ΓöécouStrlen                     Γöé
  10171.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  10172.  
  10173.  
  10174. ΓòÉΓòÉΓòÉ 14.7. IBM Data/FAX Modem Client Driver Sample ΓòÉΓòÉΓòÉ
  10175.  
  10176. The OS/2 client driver for the IBM PCMCIA Data/FAX Modem is a device driver 
  10177. written to the PCMCIA Card Services Interface 2.0 specification level. In OS/2 
  10178. 2.1, Card Services is included with the base operating system. IBM PCMCIA 
  10179. Data/FAX Modem support for OS/2 will fail to install if Card Services, Socket 
  10180. Services, and the OS/2 COM.SYS device driver are not present. This is similar 
  10181. to the DOS support with the additional dependency of the COM.SYS driver.  IBM 
  10182. PCMCIA Data/FAX Modem support is dependent upon COM.SYS because it interfaces 
  10183. to this driver through an IDC interface created specifically for PCMCIA 
  10184. support. 
  10185.  
  10186. At device driver load time, the IBM PCMCIA Data/FAX Modem driver performs an 
  10187. ATTACHDD to COM.SYS.  If this ATTACHDD fails, the IBM PCMCIA Data/FAX Modem 
  10188. will set a return code in the request pack back to OS/2 to indicate its failure 
  10189. to install. 
  10190.  
  10191. If the IBM PCMCIA Data/FAX Modem driver successfully attaches to COM.SYS, it 
  10192. will interface to this driver by way of an IDC each time a PCMCIA modem is 
  10193. inserted or ejected from the system.  When a modem is inserted, IBM PCMCIA 
  10194. Data/FAX Modem will call the COM.SYS IDC with a request packet indicating which 
  10195. new COM port was created.  Likewise, when the modem is ejected, IBM PCMCIA 
  10196. Data/FAX Modem calls the COM.SYS IDC with a request packet indicating which COM 
  10197. port has been removed. 
  10198.  
  10199. All but the essential device driver shell is written in C using the Microsoft C 
  10200. Compiler for OS/2, Version 6.0. The assembler pieces rely on the Microsoft MASM 
  10201. Assembler for OS/2, Version 5.10. 
  10202.  
  10203.  
  10204. ΓòÉΓòÉΓòÉ 14.7.1. Invoking the Client Driver ΓòÉΓòÉΓòÉ
  10205.  
  10206. The client driver is an OS/2 physical device driver and is invoked at system 
  10207. IPL time.  The syntax for the client driver is as follows. 
  10208.  
  10209. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  10210.  
  10211.  
  10212. DEVICE=C:\ESTDFM.OS2 SxCy,...,SxCy
  10213.  
  10214. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  10215.  
  10216.  SxCy where: 
  10217.              S denotes PCMCIA Slot # and x = {1,2,3,4,5,6,7,8} 
  10218.  
  10219.              C denotes COM port # and y = {1,2,3,4} 
  10220.  
  10221.            This parameter is used to denote which COM port should be assigned 
  10222.            to a modem present in a particular socket. 
  10223.  
  10224.            Up to four (4) of these parameters may be specified. 
  10225.  
  10226.            The following base address and IRQ values are assigned currently 
  10227.            regardless of the target system bus. 
  10228.  
  10229.                       ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  10230.  
  10231.  
  10232.                             COM1:        03F8h   IRQ4
  10233.                             COM2:        02F8h   IRQ3
  10234.                             COM3:        03E8h   IRQ4
  10235.                             COM4:        02E8h   IRQ3
  10236.  
  10237.                       ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  10238.  
  10239.            At this time, the enabling software will support a maximum of four 
  10240.            IBM PCMCIA Data/FAX Modem.  However, the absolute maximum is system 
  10241.            dependent. A system with less than eight PCMCIA sockets could not 
  10242.            utilize eight IBM PCMCIA Data/FAX Modem simultaneously. Likewise, a 
  10243.            system that already has a COM port allocated to the planar reduces 
  10244.            the maximum number modems that can be used simultaneously by one. 
  10245.  
  10246.  
  10247. ΓòÉΓòÉΓòÉ 14.7.2. Component Internal Structure ΓòÉΓòÉΓòÉ
  10248.  
  10249. The component internal structure is described below. 
  10250.  
  10251.  
  10252. ΓòÉΓòÉΓòÉ 14.7.2.1. IDC Interface ΓòÉΓòÉΓòÉ
  10253.  
  10254. The IDC packet structure shared between the OS/2 COM.SYS driver and a modem 
  10255. client driver is defined in COM Support. 
  10256.  
  10257.  
  10258. ΓòÉΓòÉΓòÉ 14.7.3. Component Logic Flow ΓòÉΓòÉΓòÉ
  10259.  
  10260. The client driver is divided into the following areas: Initialization, Card 
  10261. Services Interface, and Callback Notification. 
  10262.  
  10263. The figure of Component Logic Flow - Driver Initialization details the 
  10264. high-level logic flow of the device driver design. 
  10265.  
  10266. The figure of Component Logic Flow - Enable Modem below details the high-level 
  10267. logic flow of the device driver design. 
  10268.  
  10269. The figure of Component Logic Flow - Callback Routine details the high-level 
  10270. logic flow of the device driver design. 
  10271.  
  10272. The OS/2 client driver for the IBM PCMCIA Data/FAX Modem consists of the 
  10273. modules shown in the following table. 
  10274.  
  10275. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  10276. ΓöéModule       ΓöéModule Description                ΓöéLine-of-Code Γöé
  10277. Γöé             Γöé                                  ΓöéEstimates    Γöé
  10278. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10279. ΓöéMAKEFILE     ΓöéC makefile source                 ΓöéN/A          Γöé
  10280. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10281. ΓöéCS_IDC.H     ΓöéContains CS_IDC.ASM function      Γöé2            Γöé
  10282. Γöé             Γöéprototype.                        Γöé             Γöé
  10283. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10284. ΓöéCS_IDC.ASM   ΓöéContains the assembler code that  Γöé131          Γöé
  10285. Γöé             Γöéattaches and interfaces to card   Γöé             Γöé
  10286. Γöé             Γöéservices                          Γöé             Γöé
  10287. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10288. ΓöéCS_HELP.ASM  ΓöéThe callback handler function thatΓöé75           Γöé
  10289. Γöé             Γöécard services will invoke when a  Γöé             Γöé
  10290. Γöé             Γöéregistered event occurs           Γöé             Γöé
  10291. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10292. ΓöéCS_HELP.H    ΓöéCallback handler C function       Γöé1            Γöé
  10293. Γöé             Γöéprototype                         Γöé             Γöé
  10294. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10295. ΓöéCOMPORT.C    ΓöéContains the functions that       Γöé149          Γöé
  10296. Γöé             Γöéacquire and release the COM port  Γöé             Γöé
  10297. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10298. ΓöéCOMPORT.H    ΓöéFunction prototypes for acquiring Γöé3            Γöé
  10299. Γöé             Γöéand releasing the COM port        Γöé             Γöé
  10300. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10301. ΓöéCS_UTIL.C    ΓöéContains the card services calls  Γöé734          Γöé
  10302. Γöé             Γöéto allocate and deallocate        Γöé             Γöé
  10303. Γöé             Γöéresources for the modem           Γöé             Γöé
  10304. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10305. ΓöéCS_UTIL.H    ΓöéContains the release and acquire  Γöé3            Γöé
  10306. Γöé             Γöéresources function prototypes     Γöé             Γöé
  10307. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10308. ΓöéCS.C         ΓöéContains the routines to register Γöé312          Γöé
  10309. Γöé             Γöéwith card services and to handle  Γöé             Γöé
  10310. Γöé             Γöéthe card present event            Γöé             Γöé
  10311. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10312. ΓöéCS.H         ΓöéDeclarations for the routines thatΓöé26           Γöé
  10313. Γöé             Γöéinterface with card services      Γöé             Γöé
  10314. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10315. ΓöéCARD_ID.C    ΓöéVerifies the identity of the modemΓöé29           Γöé
  10316. Γöé             Γöécard                              Γöé             Γöé
  10317. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10318. ΓöéCARD_ID.H    ΓöéDeclaration for the card_id       Γöé1            Γöé
  10319. Γöé             Γöéfunction                          Γöé             Γöé
  10320. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10321. ΓöéSHELL.ASM    ΓöéContains assembler shell that     Γöé77           Γöé
  10322. Γöé             Γöécreates a device driver model to  Γöé             Γöé
  10323. Γöé             Γöéwhich the C code can interface    Γöé             Γöé
  10324. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10325. ΓöéDEVHLP.ASM   ΓöéContains routines help access     Γöé58           Γöé
  10326. Γöé             ΓöéDevHelp routines from the         Γöé             Γöé
  10327. Γöé             Γöéoperating system                  Γöé             Γöé
  10328. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10329. ΓöéCS_HELP.ASM  ΓöéThe Callback handler that card    Γöé75           Γöé
  10330. Γöé             Γöéservices will invoke when a       Γöé             Γöé
  10331. Γöé             Γöéregistered event occurs           Γöé             Γöé
  10332. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10333. ΓöéCONFIG.C     ΓöéContains routines that process andΓöé100          Γöé
  10334. Γöé             Γöéstore configuration info for the  Γöé             Γöé
  10335. Γöé             Γöésystem                            Γöé             Γöé
  10336. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10337. ΓöéCONFIG.H     ΓöéConstant definitions and          Γöé15           Γöé
  10338. Γöé             Γöéprototypes used by CONFIG.C       Γöé             Γöé
  10339. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10340. ΓöéDEVHELP.H    ΓöéDefinitions and public functions  Γöé10           Γöé
  10341. Γöé             Γöéfor Device Driver help routines   Γöé             Γöé
  10342. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10343. ΓöéSTGY.C       ΓöéContains the strategy portion of  Γöé258          Γöé
  10344. Γöé             Γöéthe device driver                 Γöé             Γöé
  10345. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10346. ΓöéCOM_IDC.ASM  ΓöéContains the code interfaces with Γöé124          Γöé
  10347. Γöé             ΓöéOS/2 COM.SYS by way of the new IDCΓöé             Γöé
  10348. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10349. ΓöéCOM_IDC.H    ΓöéContains the declarations and     Γöé2            Γöé
  10350. Γöé             Γöéprototypes for COM_IDC            Γöé             Γöé
  10351. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10352. ΓöéSHELL.H      ΓöéDevice Driver prototypes          Γöé3            Γöé
  10353. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10354. ΓöéTYPES.H      ΓöéContains constant definition and  Γöé7            Γöé
  10355. Γöé             Γöétype definition for the system    Γöé             Γöé
  10356. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10357. ΓöéTOTAL        Γöé                                  Γöé 2195        Γöé
  10358. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  10359.  
  10360.  
  10361. ΓòÉΓòÉΓòÉ 14.7.3.1. Module Tree ΓòÉΓòÉΓòÉ
  10362.  
  10363. The figure of OS/2 Client Driver Initialization Routine depicts the logic flow 
  10364. of the initialization portion of the OS/2 client driver. 
  10365.  
  10366. The figure of OS/2 Client Driver Functional Logic Flow is a high level flow of 
  10367. the main functional portion of the client driver. 
  10368.  
  10369.  
  10370. ΓòÉΓòÉΓòÉ 14.7.4. Module to Function Map ΓòÉΓòÉΓòÉ
  10371.  
  10372. The following table lists the modules and the function or routines they 
  10373. contain. 
  10374.  
  10375. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  10376. ΓöéModules        ΓöéRoutines                      Γöé
  10377. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10378. ΓöéCARD_ID.C      Γöécorrect_card_id               Γöé
  10379. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10380. ΓöéCOMPORT.C      Γöéacquire_com_port              Γöé
  10381. Γöé               Γöérelease_com_port              Γöé
  10382. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10383. ΓöéCONFIG.C       Γöéstore_config_info             Γöé
  10384. Γöé               Γöéstore_socket_assignments      Γöé
  10385. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10386. ΓöéCS.C           Γöécs_services_present           Γöé
  10387. Γöé               Γöécs_card_present               Γöé
  10388. Γöé               Γöécs_register_client            Γöé
  10389. Γöé               Γöéservice_callback              Γöé
  10390. Γöé               Γöécs_get_num_of_sockets         Γöé
  10391. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10392. ΓöéCS_UTIL.C      Γöécs_acquire_resource           Γöé
  10393. Γöé               Γöécs_request_irq                Γöé
  10394. Γöé               Γöécs_request_io                 Γöé
  10395. Γöé               Γöécs_request_configuration      Γöé
  10396. Γöé               Γöécs_is_modem_card              Γöé
  10397. Γöé               Γöécs_release_resource           Γöé
  10398. Γöé               Γöécs_release_configuration      Γöé
  10399. Γöé               Γöécs_release_irq                Γöé
  10400. Γöé               Γöécs_release_io                 Γöé
  10401. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10402. ΓöéSTGY.C         Γöédo_strat                      Γöé
  10403. Γöé               Γöéget_parameters                Γöé
  10404. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10405. ΓöéCOM_IDC.ASM    Γöécom_idc_init                  Γöé
  10406. Γöé               Γöéset_com_port                  Γöé
  10407. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10408. ΓöéCS_HELP.ASM    Γöécallback_handler              Γöé
  10409. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10410. ΓöéCS_IDC.ASM     Γöécs_idc_init                   Γöé
  10411. Γöé               Γöédo_card_services              Γöé
  10412. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10413. ΓöéDEVHLP.ASM     Γöédevhlp_init                   Γöé
  10414. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10415. ΓöéSHELL.ASM      Γöéstrategy                      Γöé
  10416. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  10417.  
  10418.  
  10419. ΓòÉΓòÉΓòÉ 14.7.4.1. OS/2 Device Driver Routine Descriptions ΓòÉΓòÉΓòÉ
  10420.  
  10421.  do_strat 
  10422.       This function is the device driver strategy routine. The parameter 'rpP' 
  10423.       is a pointer to a block of information from the operating system called 
  10424.       the request packet. 
  10425.  
  10426.             ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  10427.  
  10428.             void do_strat(REQPACKET far *rpP)
  10429.             begin
  10430.                    switch(request pkt cmd)
  10431.                      case (initialization)
  10432.                        if driver already installed
  10433.                         set status to error
  10434.                        else
  10435.                         save pointer to DevHlp routines
  10436.                         if (cs_idc_init fails)
  10437.                          set status to error
  10438.                         if (com_idc_init fails)
  10439.                          set status to error
  10440.                         parse and save device= parms
  10441.                         set status to success
  10442.                      case (init complete)
  10443.                         if card services present
  10444.                          get number of sockets machine supports
  10445.                          store configuration information
  10446.                          if (registered with card services failed)
  10447.                           set error status
  10448.                          else
  10449.                           set status to success
  10450.                      end switch
  10451.                    return
  10452.             end
  10453.  
  10454.             ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  10455.  
  10456.  com_idc_init 
  10457.       This function retrieves the inter-device-driver communications entry 
  10458.       point from COM.SYS. The function returns the value -1, if successful. 
  10459.       Otherwise, the value 0 is returned. 
  10460.  
  10461.             ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  10462.  
  10463.             public com_idc_init
  10464.             begin
  10465.                         if (attach to COM.SYS o.k.)
  10466.                          save pointer to IDC entry point
  10467.                         else
  10468.                          set error code
  10469.             end
  10470.  
  10471.             ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  10472.  
  10473.  cs_idc_init 
  10474.       This function retrieves the inter-device-driver communications entry 
  10475.       point from Card Services. The function returns the value -1 if 
  10476.       successful.  Otherwise, the value 0 is returned. 
  10477.  
  10478.             ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  10479.  
  10480.             public cs_idc_init
  10481.             begin
  10482.                         if (attach to Card Service ok)
  10483.                          save pointer to IDC entry point
  10484.                         else
  10485.                          set error code
  10486.             end
  10487.  
  10488.             ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  10489.  
  10490.  devhlp_init 
  10491.       This function stores the OS/2 device driver help services entry point. 
  10492.       The function returns the value -1, if successful. Otherwise, the value 0 
  10493.       is returned. 
  10494.  
  10495.             ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  10496.  
  10497.             public devhlp_init
  10498.             begin
  10499.                         advance to area in request pkt containing DevHlp
  10500.                         address save pointer to DevHlp entry point
  10501.             end
  10502.  
  10503.             ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  10504.  
  10505.  set_com_port 
  10506.       This function passes a request to COM.SYS through the IDC. 
  10507.  
  10508.             ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  10509.  
  10510.             public set_com_port
  10511.             begin
  10512.                 copy parms off of stack and into IDC packet
  10513.                 (IDC command,comport #, comport address, comport IRQ)
  10514.                 call COM.SYS by way of IDC
  10515.                 get COM.SYS return code back from IDC pkt
  10516.             end
  10517.  
  10518.             ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  10519.  
  10520.  get_parameters 
  10521.       This function retrieves the parameters from the DEVICE= statement in the 
  10522.       CONFIG.SYS file. 
  10523.  
  10524.             ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  10525.  
  10526.             void get_parameters(ULONG argP, short far *argc,
  10527.              char far * far *argv);
  10528.  
  10529.             ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  10530.  
  10531.  service_callback 
  10532.       This function services callback events for card insertion and card 
  10533.       removal from Card services. 
  10534.  
  10535.             ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  10536.  
  10537.             void service_callback (USHORT socket_num, USHORT event_num)
  10538.             begin
  10539.                 switch(event_number)
  10540.                   case (card inserted)
  10541.                    if (card is an IBM modem)
  10542.                      call cs_acquire_resource
  10543.                      return if unsuccessful
  10544.                      call set_com_port(INSTALL_CMD)
  10545.                      call cs_release_resource and return if unsuccessful
  10546.                      call acquired_com_port
  10547.                      call cs_release_resource.  Set_com-Port (DEINSTALL_CMD)
  10548.                        and return if unsuccessful
  10549.                    endif
  10550.                   case (card removed)
  10551.                    if (card removed is ours)
  10552.                      call cs_release_resource
  10553.                      return if unsuccessful
  10554.                      call set_com_port(DEINSTALL_CMD)
  10555.                      call release_com_port
  10556.                    endif
  10557.                   end switch
  10558.             end
  10559.  
  10560.             ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  10561.  
  10562.  callback_handler 
  10563.       This assembler language entry point is invoked by card services when a 
  10564.       registered event occurs.  It sets up the data segment and calls the C 
  10565.       routine to service the callback. 
  10566.  
  10567.             ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  10568.  
  10569.             public callback_handler
  10570.             begin
  10571.                 get event number and socket number
  10572.                 call service_callback
  10573.             end
  10574.  
  10575.             ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  10576.  
  10577.  correct_card_id 
  10578.       This routine passes the tuple data to determine if the card in question 
  10579.       is one of the IBM PCMCIA Data/FAX Modem cards. 
  10580.  
  10581.             ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  10582.  
  10583.             BOOL correct_card_id(UCHAR far *dataP)
  10584.  
  10585.             ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  10586.  
  10587.  release_com_port 
  10588.       This function removes the I/O address from the BIOS data area. 
  10589.  
  10590.             ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  10591.  
  10592.             void release_com_port(USHORT ioaddress)
  10593.             begin
  10594.                 point to BIOS data area
  10595.                 remove IO address that was in use
  10596.                 decrement number of RS232 devices in BIOS data area
  10597.             end
  10598.  
  10599.             ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  10600.  
  10601.  store_config_info 
  10602.       This function checks the syntax of the command line arguments and stores 
  10603.       configuration information. The parameter 'argc' contains the number of 
  10604.       arguments on the command line.  The parameter 'argv' contains a pointer 
  10605.       to an array of pointers to null terminated ASCII strings containing the 
  10606.       arguments. The function returns 0 if successful.  Otherwise, a value less 
  10607.       than 0 is returned, indicating the error condition. 
  10608.  
  10609.             ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  10610.  
  10611.             short store_config_info(short argc, char far * far *argv)
  10612.             begin
  10613.                 initialize default settings for modem (Intel compatible,
  10614.                 ISA bus) parse command line and determine COM port
  10615.                 settings if error parsing arguments
  10616.                   fail to install
  10617.             end
  10618.  
  10619.             ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  10620.  
  10621.  store_socket_assignments 
  10622.       This function stores the I/O address, the IRQ number, and the COM port 
  10623.       number.  This information is found in the socket assignment string. The 
  10624.       parameter 'strP' contains a pointer to a null terminated string 
  10625.       containing the socket assignment information.  The parameter 
  10626.       'io_addressP' is the address of an array containing i/o addresses for the 
  10627.       present configuration.  The parameter 'irq_numP' is the address of an 
  10628.       array containing the IRQ numbers for the present configuration. The 
  10629.       parameter 'num_of_io_addresses' contains the number of I/O addresses for 
  10630.       the present configuration. The function returns 0 if successful. 
  10631.       Otherwise, a value less than 0 is returned, indicating the error 
  10632.       condition. 
  10633.  
  10634.             ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  10635.  
  10636.             static short store_socket_assignments
  10637.                              (char far *strP,
  10638.                              USHORT far *io_addressP,
  10639.                              USHORT far *irq_numP,
  10640.                              USHORT num_of_io_addresses)
  10641.  
  10642.             ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  10643.  
  10644.  make_flat_address 
  10645.       This function makes a flat address out of a segmented address. The 
  10646.       parameters 'segment' and 'offset' contain the segmented address. The 
  10647.       function returns the flat address. 
  10648.  
  10649.             ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  10650.  
  10651.             static ULONG make_flat_address(USHORT segment, USHORT offset)
  10652.  
  10653.             ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  10654.  
  10655.  do_card_services 
  10656.       This function enables sockets and cards using Card Services. 
  10657.  
  10658.             ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  10659.  
  10660.             static void short do_card_services(void)
  10661.             begin
  10662.                    get the number of sockets
  10663.                    go through sockets - if there's an assignment for a
  10664.                    socket and no card present, then report the error
  10665.                    register as client
  10666.                    return
  10667.             end
  10668.  
  10669.             ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  10670.  
  10671.  cs_is_modem_card 
  10672.       This function determines if a modem card is present in a particular 
  10673.       socket. The parameter 'socket_num' contains the number of the socket to 
  10674.       check. The function returns the value TRUE if a modem card is present. 
  10675.       Otherwise, the value FALSE is returned if a modem card is not present or 
  10676.       if an error occurred. 
  10677.  
  10678.             ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  10679.  
  10680.             static BOOL cs_is_modem_card(USHORT socket_num)
  10681.             begin
  10682.                     set up socket number
  10683.                     set up attributes
  10684.                     set up to look for  first tuple
  10685.                     get segment and offset of packet
  10686.                     get size of packet
  10687.                     set up codes for get first tuple
  10688.                     set up segment and offset of packet
  10689.                     set up size of packet
  10690.                     set up client handle
  10691.                     make the call
  10692.                     return value for false if carry flag set
  10693.                     set up socket number
  10694.                     set up attributes
  10695.                     set up desired tuple code value
  10696.                     set up data flags
  10697.                     set up link state information
  10698.                     set up cis state information
  10699.                     set up offset into tuple from link byte
  10700.                     set up maximum size of tuple data area
  10701.                     get segment and offset of packet
  10702.                     get size of packet
  10703.                     set up codes for get tuple data
  10704.                     set up segment and offset of packet
  10705.                     set up size of packet
  10706.                     set up client handle
  10707.                     make the call
  10708.                     return value for false if carry flag set
  10709.                     return value for false if unexpected tuple contents
  10710.                     return value for true
  10711.             end
  10712.  
  10713.             ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  10714.  
  10715.  cs_acquire_resource 
  10716.       This function acquires resources and performs initialization activities 
  10717.       on both the PCIC and the PCMCIA card.  The parameter 'socket_num' 
  10718.       contains the socket to initialize.  The parameters 'io_address' and 
  10719.       'irq_num' contain the I/O address and the interrupt request number to 
  10720.       assign to the socket.  The function returns the value -1 if an error 
  10721.       occurred.  Otherwise, the value 0 is returned. 
  10722.  
  10723.             ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  10724.  
  10725.             static short cs_acquire_resource(USHORT socket_num,
  10726.                                              USHORT io_address,
  10727.                                              USHORT irq_num)
  10728.             begin
  10729.                    request the interrupt request number
  10730.                    return error code if unsuccessful
  10731.                    request io address
  10732.                    release irq and return error code if unsuccessful
  10733.                    request configuration
  10734.                    release irq and io address and return error code
  10735.                      if unsuccessful
  10736.                    return successful code
  10737.             end
  10738.  
  10739.             ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  10740.  
  10741.  cs_request_io 
  10742.       This function requests from card services that a particular I/O address 
  10743.       be assigned to a socket.  The parameters 'socket_num' and 'io_address' 
  10744.       contain the socket number and I/O address.  The function returns the 
  10745.       value -1 if an error occurred.  Otherwise, the value 0 is returned. 
  10746.  
  10747.             ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  10748.  
  10749.             static short cs_request_io(USHORT socket_num, USHORT io_address)
  10750.             begin
  10751.                    set up logical socket
  10752.                    set up base address for ports
  10753.                    set up range for ports
  10754.                    set up attributes
  10755.                    specify that the addresses are not shared with another
  10756.                       client
  10757.                    set up additional port info - no additional ports
  10758.                       specified
  10759.                    set up addr line info - specify no additional addresses
  10760.                       need to marked as used
  10761.                    set up access speed - specify access speed of 100 nsec
  10762.                       for ports
  10763.                    get segment and offset for packet
  10764.                    get size of packet
  10765.                    set up codes for request io
  10766.                    set up segment and offset for packet
  10767.                    set up size of packet
  10768.                    set up client handle
  10769.                    make the call
  10770.                    return error code if carry flag set
  10771.                    return successful code
  10772.             end
  10773.  
  10774.             ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  10775.  
  10776.  cs_request_irq 
  10777.       This function requests from card services that a particular interrupt be 
  10778.       assigned to a socket.  The parameter 'socket_num' is the socket number, 
  10779.       and the parameter 'irq_num' is the interrupt number.  The function 
  10780.       returns the value -1 if an error occurred.  Otherwise, the value 0 is 
  10781.       returned. 
  10782.  
  10783.             ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  10784.  
  10785.             static short cs_request_irq(USHORT socket_num, USHORT irq_num)
  10786.             begin
  10787.                    set up logical socket number
  10788.                    set up attributes - prefer exclusive irq
  10789.                    set up for level interrupt and make second info
  10790.                       field valid
  10791.                    designate desired irq number
  10792.                    get segment and offset for packet
  10793.                    get size of packet
  10794.                    set codes for request irq
  10795.                    set segment and offset for packet
  10796.                    set size of packet
  10797.                    set client handle
  10798.                    make the call
  10799.                    return error code if carry flag set
  10800.                    return error code if irq number was not assigned
  10801.                    return successful code
  10802.             end
  10803.  
  10804.             ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  10805.  
  10806.  cs_request_configuration 
  10807.       This function requests from card services that a particular I/O address 
  10808.       be assigned to a socket. The parameter 'socket_num' is the socket number 
  10809.       and the parameter 'io_address' is the I/O address.  The function returns 
  10810.       the value -1 if an error occurred.  Otherwise, the value 0 is returned. 
  10811.  
  10812.             ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  10813.  
  10814.             static short cs_request_configuration(USHORT socket_num,
  10815.                                                   USHORT io_address)
  10816.             begin
  10817.                   set up socket number
  10818.                   set up exclusive use and enable irq
  10819.                   set up for 5.0 volts (50 x 0.1)
  10820.                   set vpp - no requirements
  10821.                   set up option configuration register for normal operation,
  10822.                       card enable, and designated com port
  10823.                   set option register value
  10824.                   set pin register value
  10825.                   set copy register value
  10826.                   set status register value - enable audio and ring indicate
  10827.                   set which registers are present - option & status regs are
  10828.                       present
  10829.                   set up base address of config registers in attribute
  10830.                       memory
  10831.                   set up interface type - memory and I/O
  10832.                   get segment and offset for packet
  10833.                   get size of packet
  10834.                   set code for request configuration
  10835.                   set segment and offset for request configuration
  10836.                   set size of packet
  10837.                   set client handle
  10838.                   make the call
  10839.                   return error code if carry flag
  10840.                   return successful code
  10841.             end
  10842.  
  10843.             ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  10844.  
  10845.  cs_release_resource 
  10846.       This function requests from Card Services that resources be released for 
  10847.       a particular socket. The parameter 'socket_num' is the socket number of 
  10848.       the socket from which resources are to be released. The parameter 
  10849.       'io_address' and 'irq_num' are the I/O address and interrupt number to 
  10850.       release. The function returns the value -1 if an error occurred. 
  10851.       Otherwise, the value 0 is returned. 
  10852.  
  10853.             ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  10854.  
  10855.             static short cs_release_resource(USHORT socket_num,
  10856.                                              USHORT io_address,
  10857.                                              USHORT irq_num)
  10858.             begin
  10859.                   release configuration
  10860.                   return error code if unsuccessful
  10861.                   release interrupt
  10862.                   return error code if unsuccessful
  10863.                   release io address
  10864.                   return error code if unsuccessful
  10865.                   return successful code
  10866.             end
  10867.  
  10868.             ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  10869.  
  10870.  cs_release_irq 
  10871.       This function requests from card services that an interrupt number be 
  10872.       released for a particular socket.  The parameters 'socket_num' and 
  10873.       'irq_num' are the socket number and interrupt number.  The function 
  10874.       returns the value -1 if an error occurred.  Otherwise, the value 0 is 
  10875.       returned. 
  10876.  
  10877.             ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  10878.  
  10879.             static short cs_release_irq(USHORT socket_num, USHORT irq_num)
  10880.             begin
  10881.                   set up logical socket number
  10882.                   set attributes - prefer exclusive irq
  10883.                   set up info - level interrupt and make second info field
  10884.                      valid
  10885.                   set up additional info - designate desired irq number
  10886.                   set up irq number - designate previously established irq
  10887.                   get segment and offset for packet
  10888.                   get size of packet
  10889.                   set code for release irq
  10890.                   set segment and offset for packet
  10891.                   set size of packet
  10892.                   set client handle
  10893.                   make the call
  10894.                   return error code if carry flag
  10895.                   return successful code
  10896.             end
  10897.  
  10898.             ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  10899.  
  10900.  cs_release_io 
  10901.       This function requests from card services that an I/O address be released 
  10902.       for a socket.  The parameters 'socket_num' and 'io_address' are the 
  10903.       socket number and I/O address.  The function returns the value -1 if an 
  10904.       error occurred.  Otherwise, the value 0 is returned. 
  10905.  
  10906.             ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  10907.  
  10908.             static short cs_release_io(USHORT socket_num, USHORT io_address)
  10909.             begin
  10910.                   set up logical socket
  10911.                   set up base address for ports
  10912.                   set up range for ports
  10913.                   set attributes - specify addr not shared with other
  10914.                      clients
  10915.                   set additional port info - no additional ports
  10916.                      specified
  10917.                   set addr line info - no additional addr need to
  10918.                      marked in use
  10919.                   set access speed - specify that access speed for
  10920.                      ports is 100 nsec
  10921.                   get segment and offset for packet
  10922.                   get size of packet
  10923.                   set codes for release io
  10924.                   set segment and offset for packet
  10925.                   set size of packet
  10926.                   set client handle
  10927.                   make the call
  10928.                   return successful code
  10929.             end
  10930.  
  10931.             ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  10932.  
  10933.  cs_release_configuration 
  10934.       This function requests from card services that a configuration be 
  10935.       released for a socket.  The parameter 'socket_num' is the socket number. 
  10936.       The function returns the value -1 if an error occurred. Otherwise, the 
  10937.       value 0 is returned. 
  10938.  
  10939.             ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  10940.  
  10941.             static short cs_release_configuration(USHORT socket_num)
  10942.             begin
  10943.                   set up logical socket
  10944.                   get segment and offset for packet
  10945.                   get size of packet
  10946.                   set codes for release configuration
  10947.                   set segment and offset for packet
  10948.                   set size of packet
  10949.                   set client handle
  10950.                   make the call
  10951.                   return error code if carry flag
  10952.                   return successful flag
  10953.             end
  10954.  
  10955.             ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  10956.  
  10957.  cs_services_present 
  10958.       This function determines if card services is present on the system. The 
  10959.       function returns the value TRUE if card services is present. Otherwise, 
  10960.       the value FALSE is returned. 
  10961.  
  10962.             ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  10963.  
  10964.             BOOL cs_services_present(void)
  10965.             begin
  10966.                     init signature field
  10967.                     set max length for vendor string
  10968.                     get PCMCIA Card Services for OS/2 info
  10969.                     get segment and offset of packet
  10970.                     get size of packet
  10971.                     set up codes for get PCMCIA Card Services for OS/2
  10972.                       information
  10973.                     set up segment and offset of packet
  10974.                     set up size of packet
  10975.                     make the call
  10976.                     return false value if carry flag
  10977.                     store number of sockets
  10978.                     if PCMCIA Card Services for OS/2 are present then return
  10979.                       true value
  10980.                     return false value
  10981.             end
  10982.  
  10983.             ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  10984.  
  10985.  cs_register_client 
  10986.       This function registers as a client with card services. It returns an 
  10987.       error code in parameter 'statusP' if an error occurs. In addition, as a 
  10988.       return value, the function returns the value 0 if successful. Otherwise, 
  10989.       the function returns the value -1. 
  10990.  
  10991.             ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  10992.  
  10993.             short cs_register_client(USHORT *status)
  10994.             begin
  10995.                     set up attributes - memory client device driver -
  10996.                         generate artificial insertion events
  10997.                     set up event mask - global notification of insertion
  10998.                         & ejection events
  10999.                     set up data client receives on callback
  11000.                     set up segment and offset of client data area
  11001.                     set up reserved field
  11002.                     get segment and offset of packet
  11003.                     get segment and offset of callback handler routine
  11004.                     set up size of packet
  11005.                     set up codes for register client
  11006.                     set up segment and offset of packet
  11007.                     set up size of packet
  11008.                     set up segment and offset of callback handler routine
  11009.                     make the call
  11010.                     return error code if carry flag
  11011.                     store client handle
  11012.                     return successful code
  11013.             end
  11014.  
  11015.             ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  11016.  
  11017.  cs_card_present 
  11018.       This function determines if a card is present in a particular socket. The 
  11019.       parameter 'socket_num' contains the socket to check for a card.  It 
  11020.       returns the value TRUE if a card is present.  Otherwise, it returns the 
  11021.       value FALSE. 
  11022.  
  11023.             ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  11024.  
  11025.             BOOL cs_card_present(USHORT socket_num)
  11026.             begin
  11027.                     set up socket number
  11028.                     get segment and offset
  11029.                     get size of packet
  11030.                     set up codes for get status
  11031.                     set up segment and offset for packet
  11032.                     set up size of packet
  11033.                     make the call
  11034.                     check carry flag for error
  11035.                     return true if card present bit is set or false
  11036.                       if clear
  11037.                     return false value if error occurred
  11038.             end
  11039.  
  11040.             ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  11041.  
  11042.  cs_get_num_of_sockets 
  11043.       This function reports the number of sockets present in the system. The 
  11044.       function returns the number of sockets. 
  11045.  
  11046.             ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  11047.  
  11048.             USHORT cs_get_num_of_sockets(void)
  11049.             begin
  11050.                     return the number of sockets
  11051.             end
  11052.  
  11053.             ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  11054.  
  11055.  
  11056. ΓòÉΓòÉΓòÉ 14.7.5. Dependencies and Restrictions ΓòÉΓòÉΓòÉ
  11057.  
  11058. This device must be loaded in the CONFIG.SYS file after COM.SYS. 
  11059.  
  11060.  
  11061. ΓòÉΓòÉΓòÉ 15. PCMCIA Socket Services Device Driver Test Tool ΓòÉΓòÉΓòÉ
  11062.  
  11063. This chapter explains explains how to use the Socket Services Device Driver 
  11064. Test Tool. 
  11065.  
  11066.  
  11067. ΓòÉΓòÉΓòÉ 15.1. Overview ΓòÉΓòÉΓòÉ
  11068.  
  11069. PCMCIA Socket Services Functional Verification Tests (FVTs) exercise the 
  11070. Application Program Interfaces (APIs) defined for the DosDevIOCtl interface of 
  11071. PCMCIA Socket Services device drivers. The tests are implemented with the 
  11072. Device Driver Test Tool (DDTT).  Each test is defined in a script file and 
  11073. these files can be modified using a text editor to create additional, 
  11074. specialized test cases. The test scripts give the user a repeatable set of 
  11075. tests that demonstrate PCMCIA Socket Services function and performance.  Errors 
  11076. are reported and are easily isolated to a specific test sequence and API. 
  11077.  
  11078. User input and output from each thread of the PCMCIA Socket Services tests is 
  11079. performed by way of a separate Presentation Manager window.  Multi-threaded 
  11080. test cases log all information to a single log file, clearly indicating the 
  11081. actual execution sequence in the event of errors. 
  11082.  
  11083.  
  11084. ΓòÉΓòÉΓòÉ 15.1.1. PCMCIA Socket Services Test Architecture ΓòÉΓòÉΓòÉ
  11085.  
  11086. The DDTT provides a common front-end parser for test case scripts. The 
  11087. following DDTT PCMCIA-specific files are required: 
  11088.  
  11089.    o  DDTPCMC.DLL 
  11090.  
  11091.    o  PCMC.GRA. 
  11092.  
  11093.    o  PCMCIATS.SYS 
  11094.  
  11095.  The C++ source code for DDTPCMC.DLL is available on the IBM Developer 
  11096.  Connection Device Driver Kit for OS/2. 
  11097.  
  11098.  The following required, common components of DDTT implement DDTT's 
  11099.  programmable parser and common test functions such as SET, LOOP, and PAUSE: 
  11100.  
  11101.    o  DDTT.EXE 
  11102.  
  11103.    o  DDTT.DLL 
  11104.  
  11105.    o  GLOBAL.DLL 
  11106.  
  11107.    o  GLOBAL.GRA 
  11108.  
  11109.  
  11110. ΓòÉΓòÉΓòÉ 15.1.2. Installation ΓòÉΓòÉΓòÉ
  11111.  
  11112. There are two directory structures in the IBM Developer Connection Device 
  11113. Driver Kit for OS/2 that utilize test suites. The TESTCERT substructure 
  11114. contains the executables and test cases; the TESTTOOL substructure contains the 
  11115. files required to change and rebuild the code for a particular test DLL. 
  11116.  
  11117. The following procedure describes installation for running test cases: 
  11118.  
  11119.    1. Copy the executable and PCMCIA socket services test case files from the 
  11120.       IBM Developer Connection Device Driver Kit for OS/2 CD-ROM disc to the 
  11121.       hard drive.  All the executable (.EXE and .DLL) files can reside in one 
  11122.       directory, such as \TESTPCMC. Test case script and command files can also 
  11123.       be placed in this directory on the hard disk. If the target directory is 
  11124.       C:\TESTPCMC and the E drive contains the information from the IBM 
  11125.       Developer Connection Device Driver Kit for OS/2 CD-ROM disc, then use the 
  11126.       following commands to copy the PCMCIA socket services test suite: 
  11127.  
  11128.                [C:\]md testpcmc
  11129.  
  11130.                [C:\]cd testkpcmc
  11131.  
  11132.                [C:\testpcmc]copy e:\ddk_x86\testcert\storage\function\pcmcia\socket\*
  11133.  
  11134.                [C:\testpcmc]copy e:\ddk_x86\testcert\general\ddtt\*
  11135.  
  11136.    2. Copy the PCMCIATS.SYS file to your root system directory. If your system 
  11137.       drive is C, execute the following: 
  11138.  
  11139.                [C:\testpcmc]copy PCMCIATS.SYS c:\
  11140.  
  11141.    1. To install the test device driver, add BASEDEV=PCMCIATS.SYS immediately 
  11142.       before the following two lines (which are used for a Think Pad system). 
  11143.       Other systems use different names for the PCMCIA socket services and 
  11144.       Resource Map Utility device drivers. These lines load the system's 
  11145.       Resource Map Utility device driver and Socket Services device driver. The 
  11146.       PCMCIATS.SYS test device driver enables an IOCtl interface for calling 
  11147.       Socket Services from the DDTT script files. 
  11148.  
  11149.                   BASEDEV=ICRMU01.SYS
  11150.                   BASEDEV=IBM2SS01.SYS
  11151.  
  11152.    2. Next, make sure the following lines are commented out of the CONFIG.SYS 
  11153.       file. 
  11154.  
  11155.                rem BASEDEV=PCMCIA.SYS
  11156.                rem DEVICE=VPCMCIA.SYS
  11157.                rem DEVICE=AUTODRV2.SYS AUTODRV2.INI
  11158.                rem DEVICE=$ICPMOS2.SYS
  11159.  
  11160.       Loading any of the above PCMCIA support drivers will interfere with 
  11161.       Socket Services testing. 
  11162.  
  11163.    3. Add C:\TESTPCMC\BIN to the LIBPATH and PATH in CONFIG.SYS. 
  11164.  
  11165.    4. Reboot your machine so the new LIBPATH entry and CONFIG.SYS changes take 
  11166.       effect. 
  11167.  
  11168.  
  11169. ΓòÉΓòÉΓòÉ 15.1.3. Test-Case Execution ΓòÉΓòÉΓòÉ
  11170.  
  11171.    1. Change to the directory where the socket services test script files were 
  11172.       copied, for example C:\TESTPCMC. 
  11173.  
  11174.    2. For machines with one socket, start SSSCR1.CMD.  For machines with two 
  11175.       sockets, start SSSCR2.CMD. 
  11176.  
  11177.    3. The output is written to the corresponding filenames with a .LOG 
  11178.       extension.  After executing the command file, all the log files are 
  11179.       concatenated and written into the file SSLOG1. 
  11180.  
  11181.  
  11182. ΓòÉΓòÉΓòÉ 15.1.4. DDTT PCMCIA Socket Services Test Grammar Function Calls ΓòÉΓòÉΓòÉ
  11183.  
  11184. The following are the names of the PCMCIA Socket Services Test Grammar Function 
  11185. Calls: 
  11186.  
  11187.    o  PCMC_OPEN 
  11188.    o  PCMC_CLOSE 
  11189.    o  PCMC_GETADAPTERCOUNT 
  11190.    o  PCMC_ACKINTERRUPT 
  11191.    o  PCMC_PRIORHANDLER 
  11192.    o  PCMC_SSADDR 
  11193.    o  PCMC_ACCESSOFFSETS 
  11194.    o  PCMC_GETADAPTER 
  11195.    o  PCMC_GETSSINFO 
  11196.    o  PCMC_GETVENDORINFO 
  11197.    o  PCMC_INQADAPTER 
  11198.    o  PCMC_SETADAPTER 
  11199.    o  PCMC_VENDORSPECIFIC 
  11200.    o  PCMC_GETSOCKET 
  11201.    o  PCMC_GETSTATUS 
  11202.    o  PCMC_INQSOCKET 
  11203.    o  PCMC_RESETSOCKET 
  11204.    o  PCMC_SETSOCKET 
  11205.    o  PCMC_GETPAGE 
  11206.    o  PCMC_GETWINDOW 
  11207.    o  PCMC_INQWINDOW 
  11208.    o  PCMC_SETPAGE 
  11209.    o  PCMC_SETWINDOW 
  11210.    o  PCMC_GETEDC 
  11211.  
  11212.  
  11213. ΓòÉΓòÉΓòÉ 15.1.4.1. PCMC_OPEN ΓòÉΓòÉΓòÉ
  11214.  
  11215. This function opens the PCMCIA$ test device driver. 
  11216.  
  11217.  
  11218. ΓòÉΓòÉΓòÉ 15.1.4.1.1. Input Parameter Keywords ΓòÉΓòÉΓòÉ
  11219.  
  11220.  
  11221. None. 
  11222.  
  11223.  
  11224. ΓòÉΓòÉΓòÉ 15.1.4.1.2. Output Parameter Keywords ΓòÉΓòÉΓòÉ
  11225.  
  11226. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  11227. ΓöéKeyword             ΓöéType                ΓöéDescription         Γöé
  11228. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11229. ΓöéDRIVEHANDLE         ΓöéNUM                 ΓöéDrive handle for    Γöé
  11230. Γöé                    Γöé                    ΓöéPCMCIA device under Γöé
  11231. Γöé                    Γöé                    Γöétest                Γöé
  11232. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  11233.  
  11234.  
  11235. ΓòÉΓòÉΓòÉ 15.1.4.1.3. Logged Data ΓòÉΓòÉΓòÉ
  11236.  
  11237.  
  11238. None. 
  11239.  
  11240.  
  11241. ΓòÉΓòÉΓòÉ 15.1.4.2. PCMC_CLOSE ΓòÉΓòÉΓòÉ
  11242.  
  11243. This function closes the PCMCIA$ test device driver. 
  11244.  
  11245.  
  11246. ΓòÉΓòÉΓòÉ 15.1.4.2.1. Input Parameter Keywords ΓòÉΓòÉΓòÉ
  11247.  
  11248. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  11249. ΓöéKeyword             ΓöéType                ΓöéDescription         Γöé
  11250. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11251. ΓöéDRIVEHANDLE         ΓöéNUM                 ΓöéDrive handle for    Γöé
  11252. Γöé                    Γöé                    ΓöéPCMCIA device under Γöé
  11253. Γöé                    Γöé                    Γöétest                Γöé
  11254. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  11255.  
  11256.  
  11257. ΓòÉΓòÉΓòÉ 15.1.4.2.2. Output Parameter Keywords ΓòÉΓòÉΓòÉ
  11258.  
  11259.  
  11260. None. 
  11261.  
  11262.  
  11263. ΓòÉΓòÉΓòÉ 15.1.4.2.3. Logged Data ΓòÉΓòÉΓòÉ
  11264.  
  11265.  
  11266. None. 
  11267.  
  11268.  
  11269. ΓòÉΓòÉΓòÉ 15.1.4.3. PCMC_GETADAPTERCOUNT ΓòÉΓòÉΓòÉ
  11270.  
  11271. This function gets the number of adapters supported by Socket Services and the 
  11272. signature "SS". 
  11273.  
  11274.  
  11275. ΓòÉΓòÉΓòÉ 15.1.4.3.1. Input Parameter Keywords ΓòÉΓòÉΓòÉ
  11276.  
  11277. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  11278. ΓöéKeyword             ΓöéType                ΓöéDescription         Γöé
  11279. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11280. ΓöéDRIVEHANDLE         ΓöéNUM                 ΓöéDrive handle for    Γöé
  11281. Γöé                    Γöé                    ΓöéPCMCIA device under Γöé
  11282. Γöé                    Γöé                    Γöétest                Γöé
  11283. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  11284.  
  11285.  
  11286. ΓòÉΓòÉΓòÉ 15.1.4.3.2. Output Parameter Keywords ΓòÉΓòÉΓòÉ
  11287.  
  11288.  
  11289. None. 
  11290.  
  11291.  
  11292. ΓòÉΓòÉΓòÉ 15.1.4.3.3. Logged Data ΓòÉΓòÉΓòÉ
  11293.  
  11294.  
  11295. Total number of adapters 
  11296. Signature "SS" 
  11297.  
  11298.  
  11299. ΓòÉΓòÉΓòÉ 15.1.4.4. PCMC_ACKINTERRUPT ΓòÉΓòÉΓòÉ
  11300.  
  11301. This function gets the oldest status change interrupt information from the 
  11302. PCMCIA$ test device driver. 
  11303.  
  11304.  
  11305. ΓòÉΓòÉΓòÉ 15.1.4.4.1. Input Parameter Keywords ΓòÉΓòÉΓòÉ
  11306.  
  11307. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  11308. ΓöéKeyword             ΓöéType                ΓöéDescription         Γöé
  11309. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11310. ΓöéDRIVEHANDLE         ΓöéNUM                 ΓöéDrive handle for    Γöé
  11311. Γöé                    Γöé                    ΓöéPCMCIA device under Γöé
  11312. Γöé                    Γöé                    Γöétest                Γöé
  11313. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11314. ΓöéADAPTER             ΓöéNUM                 ΓöéAdapter number      Γöé
  11315. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11316. ΓöéSOCKET              ΓöéNUM                 ΓöéSocket number       Γöé
  11317. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  11318.  
  11319.  
  11320. ΓòÉΓòÉΓòÉ 15.1.4.4.2. Output Parameter Keywords ΓòÉΓòÉΓòÉ
  11321.  
  11322.  
  11323. None. 
  11324.  
  11325.  
  11326. ΓòÉΓòÉΓòÉ 15.1.4.4.3. Logged Data ΓòÉΓòÉΓòÉ
  11327.  
  11328.  
  11329. Number of interrupts 
  11330.  
  11331.  
  11332. ΓòÉΓòÉΓòÉ 15.1.4.5. PCMC_PRIORHANDLER ΓòÉΓòÉΓòÉ
  11333.  
  11334. This function gets or sets the prior Socket Services handler for the specified 
  11335. adapter. 
  11336.  
  11337.  
  11338. ΓòÉΓòÉΓòÉ 15.1.4.5.1. Input Parameter Keywords ΓòÉΓòÉΓòÉ
  11339.  
  11340. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  11341. ΓöéKeyword             ΓöéType                ΓöéDescription         Γöé
  11342. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11343. ΓöéDRIVEHANDLE         ΓöéNUM                 ΓöéDrive handle for    Γöé
  11344. Γöé                    Γöé                    ΓöéPCMCIA device under Γöé
  11345. Γöé                    Γöé                    Γöétest                Γöé
  11346. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11347. ΓöéADAPTER             ΓöéNUM                 ΓöéAdapter number      Γöé
  11348. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11349. ΓöéMODE                ΓöéNUM                 ΓöéFunction mode where Γöé
  11350. Γöé                    Γöé                    Γöé0 = function        Γöé
  11351. Γöé                    Γöé                    Γöéperforms a GET      Γöé
  11352. Γöé                    Γöé                    Γöé1 = function        Γöé
  11353. Γöé                    Γöé                    Γöéperforms a SET      Γöé
  11354. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  11355.  
  11356.  
  11357. ΓòÉΓòÉΓòÉ 15.1.4.5.2. Output Parameter Keywords ΓòÉΓòÉΓòÉ
  11358.  
  11359.  
  11360. ΓòÉΓòÉΓòÉ 15.1.4.5.3. Logged Data ΓòÉΓòÉΓòÉ
  11361.  
  11362.  
  11363. Mode ( 0 = Get, 1 = Set ) 
  11364.  
  11365.  
  11366. ΓòÉΓòÉΓòÉ 15.1.4.6. PCMC_SSADDR ΓòÉΓòÉΓòÉ
  11367.  
  11368. This function gets or sets mode and data area descriptors. 
  11369.  
  11370.  
  11371. ΓòÉΓòÉΓòÉ 15.1.4.6.1. Input Parameter Keywords ΓòÉΓòÉΓòÉ
  11372.  
  11373. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  11374. ΓöéKeyword             ΓöéType                ΓöéDescription         Γöé
  11375. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11376. ΓöéDRIVEHANDLE         ΓöéNUM                 ΓöéDrive handle for    Γöé
  11377. Γöé                    Γöé                    ΓöéPCMCIA device under Γöé
  11378. Γöé                    Γöé                    Γöétest                Γöé
  11379. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11380. ΓöéADAPTER             ΓöéNUM                 ΓöéAdapter number      Γöé
  11381. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11382. ΓöéPROCMODE            ΓöéNUM                 ΓöéProcessor mode      Γöé
  11383. Γöé                    Γöé                    Γöéwhere:              Γöé
  11384. Γöé                    Γöé                    Γöé00 = Real Mode      Γöé
  11385. Γöé                    Γöé                    Γöé01 = 16:16 Protect  Γöé
  11386. Γöé                    Γöé                    Γöé02 = 16:32 Protect  Γöé
  11387. Γöé                    Γöé                    Γöé03 = 00:32 Protect  Γöé
  11388. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11389. ΓöéFUNCTION            ΓöéNUM                 ΓöéRequested function  Γöé
  11390. Γöé                    Γöé                    Γöéwhere:              Γöé
  11391. Γöé                    Γöé                    Γöé0 = Get code and    Γöé
  11392. Γöé                    Γöé                    Γöémain data segments  Γöé
  11393. Γöé                    Γöé                    Γöé1 = Get additional  Γöé
  11394. Γöé                    Γöé                    Γöédata segments       Γöé
  11395. Γöé                    Γöé                    Γöé2 = Set additional  Γöé
  11396. Γöé                    Γöé                    Γöédata segments       Γöé
  11397. Γöé                    Γöé                    Γöé(NEEDED FOR SET     Γöé
  11398. Γöé                    Γöé                    ΓöéONLY)               Γöé
  11399. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11400. ΓöéNUM_SEGS            ΓöéNUM                 ΓöéNumber of additionalΓöé
  11401. Γöé                    Γöé                    Γöédata segments to GETΓöé
  11402. Γöé                    Γöé                    Γöéor SET (NEEDED FOR  Γöé
  11403. Γöé                    Γöé                    ΓöéSET ONLY)           Γöé
  11404. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  11405.  
  11406.  
  11407. ΓòÉΓòÉΓòÉ 15.1.4.6.2. Output Parameter Keywords ΓòÉΓòÉΓòÉ
  11408.  
  11409.  
  11410. None. 
  11411.  
  11412.  
  11413. ΓòÉΓòÉΓòÉ 15.1.4.6.3. Logged Data ΓòÉΓòÉΓòÉ
  11414.  
  11415.  
  11416. Requested function 
  11417. Number of additional data segments to get or set 
  11418.  
  11419.  
  11420. ΓòÉΓòÉΓòÉ 15.1.4.7. PCMC_ACCESSOFFSETS ΓòÉΓòÉΓòÉ
  11421.  
  11422. This function gets an array of offsets for low-level, adapter-specific 
  11423. optimized PC card-access routines. 
  11424.  
  11425.  
  11426. ΓòÉΓòÉΓòÉ 15.1.4.7.1. Input Parameter Keywords ΓòÉΓòÉΓòÉ
  11427.  
  11428. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  11429. ΓöéKeyword             ΓöéType                ΓöéDescription         Γöé
  11430. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11431. ΓöéDRIVEHANDLE         ΓöéNUM                 ΓöéDrive handle for    Γöé
  11432. Γöé                    Γöé                    ΓöéPCMCIA device under Γöé
  11433. Γöé                    Γöé                    Γöétest                Γöé
  11434. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11435. ΓöéADAPTER             ΓöéNUM                 ΓöéAdapter number      Γöé
  11436. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11437. ΓöéPROCMODE            ΓöéNUM                 ΓöéProcessor mode      Γöé
  11438. Γöé                    Γöé                    Γöéwhere:              Γöé
  11439. Γöé                    Γöé                    Γöé00 = Real Mode      Γöé
  11440. Γöé                    Γöé                    Γöé01 = 16:16 Protect  Γöé
  11441. Γöé                    Γöé                    Γöé02 = 16:32 Protect  Γöé
  11442. Γöé                    Γöé                    Γöé03 = 00:32 Protect  Γöé
  11443. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11444. ΓöéFUNCTION            ΓöéNUM                 ΓöéRequested function  Γöé
  11445. Γöé                    Γöé                    Γöéwhere:              Γöé
  11446. Γöé                    Γöé                    Γöé0 = Get code and    Γöé
  11447. Γöé                    Γöé                    Γöémain data segments  Γöé
  11448. Γöé                    Γöé                    Γöé1 = Get additional  Γöé
  11449. Γöé                    Γöé                    Γöédata segments       Γöé
  11450. Γöé                    Γöé                    Γöé2 = Set additional  Γöé
  11451. Γöé                    Γöé                    Γöédata segments       Γöé
  11452. Γöé                    Γöé                    Γöé(NEEDED FOR SET     Γöé
  11453. Γöé                    Γöé                    ΓöéONLY)               Γöé
  11454. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11455. ΓöéNUM_DESIRED         ΓöéNUM                 ΓöéNumber of offsets toΓöé
  11456. Γöé                    Γöé                    Γöébe reported, a valueΓöé
  11457. Γöé                    Γöé                    Γöébetween 0 and 18    Γöé
  11458. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  11459.  
  11460.  
  11461. ΓòÉΓòÉΓòÉ 15.1.4.7.2. Output Parameter Keywords ΓòÉΓòÉΓòÉ
  11462.  
  11463.  
  11464. None. 
  11465.  
  11466.  
  11467. ΓòÉΓòÉΓòÉ 15.1.4.7.3. Logged Data ΓòÉΓòÉΓòÉ
  11468.  
  11469.  
  11470. Number of offsets supported 
  11471.  
  11472.  
  11473. ΓòÉΓòÉΓòÉ 15.1.4.8. PCMC_GETADAPTER ΓòÉΓòÉΓòÉ
  11474.  
  11475. This function gets the current configuration of the specified adapter. 
  11476.  
  11477.  
  11478. ΓòÉΓòÉΓòÉ 15.1.4.8.1. Input Parameter Keywords ΓòÉΓòÉΓòÉ
  11479.  
  11480. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  11481. ΓöéKeyword             ΓöéType                ΓöéDescription         Γöé
  11482. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11483. ΓöéDRIVEHANDLE         ΓöéNUM                 ΓöéDrive handle for    Γöé
  11484. Γöé                    Γöé                    ΓöéPCMCIA device under Γöé
  11485. Γöé                    Γöé                    Γöétest                Γöé
  11486. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11487. ΓöéADAPTER             ΓöéNUM                 ΓöéAdapter number      Γöé
  11488. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  11489.  
  11490.  
  11491. ΓòÉΓòÉΓòÉ 15.1.4.8.2. Output Parameter Keywords ΓòÉΓòÉΓòÉ
  11492.  
  11493.  
  11494. None. 
  11495.  
  11496.  
  11497. ΓòÉΓòÉΓòÉ 15.1.4.8.3. Logged Data ΓòÉΓòÉΓòÉ
  11498.  
  11499.  
  11500. Adapter Attributes 
  11501. IRQ level for status change interrupts 
  11502.  
  11503.  
  11504. ΓòÉΓòÉΓòÉ 15.1.4.9. PCMC_GETSSINFO ΓòÉΓòÉΓòÉ
  11505.  
  11506. This function gets the compliance level of the Socket Services interface 
  11507. supporting the specified adapter and identifies the adapters supported. 
  11508.  
  11509.  
  11510. ΓòÉΓòÉΓòÉ 15.1.4.9.1. Input Parameter Keywords ΓòÉΓòÉΓòÉ
  11511.  
  11512. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  11513. ΓöéKeyword             ΓöéType                ΓöéDescription         Γöé
  11514. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11515. ΓöéDRIVEHANDLE         ΓöéNUM                 ΓöéDrive handle for    Γöé
  11516. Γöé                    Γöé                    ΓöéPCMCIA device under Γöé
  11517. Γöé                    Γöé                    Γöétest                Γöé
  11518. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11519. ΓöéADAPTER             ΓöéNUM                 ΓöéAdapter number      Γöé
  11520. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  11521.  
  11522.  
  11523. ΓòÉΓòÉΓòÉ 15.1.4.9.2. Output Parameter Keywords ΓòÉΓòÉΓòÉ
  11524.  
  11525.  
  11526. None. 
  11527.  
  11528.  
  11529. ΓòÉΓòÉΓòÉ 15.1.4.9.3. Logged Data ΓòÉΓòÉΓòÉ
  11530.  
  11531.  
  11532. Compliance 
  11533. Number of adapters 
  11534. First adapter 
  11535.  
  11536.  
  11537. ΓòÉΓòÉΓòÉ 15.1.4.10. PCMC_GETVENDORINFO ΓòÉΓòÉΓòÉ
  11538.  
  11539. This function gets information about the vendor that implemented the Socket 
  11540. Services for the specified adapter. 
  11541.  
  11542.  
  11543. ΓòÉΓòÉΓòÉ 15.1.4.10.1. Input Parameter Keywords ΓòÉΓòÉΓòÉ
  11544.  
  11545. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  11546. ΓöéKeyword             ΓöéType                ΓöéDescription         Γöé
  11547. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11548. ΓöéDRIVEHANDLE         ΓöéNUM                 ΓöéDrive handle for    Γöé
  11549. Γöé                    Γöé                    ΓöéPCMCIA device under Γöé
  11550. Γöé                    Γöé                    Γöétest                Γöé
  11551. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11552. ΓöéADAPTER             ΓöéNUM                 ΓöéAdapter number      Γöé
  11553. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  11554.  
  11555.  
  11556. ΓòÉΓòÉΓòÉ 15.1.4.10.2. Output Parameter Keywords ΓòÉΓòÉΓòÉ
  11557.  
  11558.  
  11559. None. 
  11560.  
  11561.  
  11562. ΓòÉΓòÉΓòÉ 15.1.4.10.3. Logged Data ΓòÉΓòÉΓòÉ
  11563.  
  11564.  
  11565. Release Number 
  11566. ASCII string describing the implementer 
  11567.  
  11568.  
  11569. ΓòÉΓòÉΓòÉ 15.1.4.11. PCMC_INQADAPTER ΓòÉΓòÉΓòÉ
  11570.  
  11571. This function gets the capability information for the specified adapter. 
  11572.  
  11573.  
  11574. ΓòÉΓòÉΓòÉ 15.1.4.11.1. Input Parameter Keywords ΓòÉΓòÉΓòÉ
  11575.  
  11576. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  11577. ΓöéKeyword             ΓöéType                ΓöéDescription         Γöé
  11578. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11579. ΓöéDRIVEHANDLE         ΓöéNUM                 ΓöéDrive handle for    Γöé
  11580. Γöé                    Γöé                    ΓöéPCMCIA device under Γöé
  11581. Γöé                    Γöé                    Γöétest                Γöé
  11582. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11583. ΓöéADAPTER             ΓöéNUM                 ΓöéAdapter number      Γöé
  11584. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  11585.  
  11586.  
  11587. ΓòÉΓòÉΓòÉ 15.1.4.11.2. Output Parameter Keywords ΓòÉΓòÉΓòÉ
  11588.  
  11589.  
  11590. None. 
  11591.  
  11592.  
  11593. ΓòÉΓòÉΓòÉ 15.1.4.11.3. Logged Data ΓòÉΓòÉΓòÉ
  11594.  
  11595.  
  11596. Number of sockets 
  11597. Number of windows 
  11598. Number of EDCS 
  11599. Contains the information on the adapter capabilities, the IRQ state and level, 
  11600. and the power management specifications. 
  11601.  
  11602.  
  11603. ΓòÉΓòÉΓòÉ 15.1.4.12. PCMC_SETADAPTER ΓòÉΓòÉΓòÉ
  11604.  
  11605. This function sets the configuration of the specified adapter. 
  11606.  
  11607.  
  11608. ΓòÉΓòÉΓòÉ 15.1.4.12.1. Input Parameter Keywords ΓòÉΓòÉΓòÉ
  11609.  
  11610. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  11611. ΓöéKeyword             ΓöéType                ΓöéDescription         Γöé
  11612. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11613. ΓöéDRIVEHANDLE         ΓöéNUM                 ΓöéDrive handle for    Γöé
  11614. Γöé                    Γöé                    ΓöéPCMCIA device under Γöé
  11615. Γöé                    Γöé                    Γöétest                Γöé
  11616. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11617. ΓöéADAPTER             ΓöéNUM                 ΓöéAdapter number      Γöé
  11618. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11619. ΓöéADPSTATE            ΓöéNUM                 ΓöéAdapter attributes  Γöé
  11620. Γöé                    Γöé                    Γöéwhere:              Γöé
  11621. Γöé                    Γöé                    ΓöéBit 0 = Reduce powerΓöé
  11622. Γöé                    Γöé                    Γöéconsumption (1 =    Γöé
  11623. Γöé                    Γöé                    ΓöéTrue)               Γöé
  11624. Γöé                    Γöé                    ΓöéBit 2 = Preserve    Γöé
  11625. Γöé                    Γöé                    ΓöéState Information (1Γöé
  11626. Γöé                    Γöé                    Γöé= Preserve)         Γöé
  11627. Γöé                    Γöé                    ΓöéAll other bits are  Γöé
  11628. Γöé                    Γöé                    Γöéreserved and must beΓöé
  11629. Γöé                    Γöé                    Γöézero.               Γöé
  11630. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11631. ΓöéIRQ                 ΓöéALNUM               ΓöéIRQ level to use forΓöé
  11632. Γöé                    Γöé                    Γöéstatus change       Γöé
  11633. Γöé                    Γöé                    Γöéinterrupts (if bit 7Γöé
  11634. Γöé                    Γöé                    Γöéis enabled)         Γöé
  11635. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  11636.  
  11637.  
  11638. ΓòÉΓòÉΓòÉ 15.1.4.12.2. Output Parameter Keywords ΓòÉΓòÉΓòÉ
  11639.  
  11640.  
  11641. None. 
  11642.  
  11643.  
  11644. ΓòÉΓòÉΓòÉ 15.1.4.12.3. Logged Data ΓòÉΓòÉΓòÉ
  11645.  
  11646.  
  11647. None. 
  11648.  
  11649.  
  11650. ΓòÉΓòÉΓòÉ 15.1.4.13. PCMC_VENDORSPECIFIC ΓòÉΓòÉΓòÉ
  11651.  
  11652. This function defines a vendor-specific function for implementing proprietary 
  11653. functions. 
  11654.  
  11655.  
  11656. ΓòÉΓòÉΓòÉ 15.1.4.13.1. Input Parameter Keywords ΓòÉΓòÉΓòÉ
  11657.  
  11658. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  11659. ΓöéKeyword             ΓöéType                ΓöéDescription         Γöé
  11660. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11661. ΓöéDRIVEHANDLE         ΓöéNUM                 ΓöéDrive handle for    Γöé
  11662. Γöé                    Γöé                    ΓöéPCMCIA device under Γöé
  11663. Γöé                    Γöé                    Γöétest                Γöé
  11664. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11665. ΓöéADAPTER             ΓöéNUM                 ΓöéAdapter number      Γöé
  11666. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11667. ΓöéSUBFUNCTION         ΓöéNUM                 ΓöéSubfunction codes:  Γöé
  11668. Γöé                    Γöé                    Γöéwhere:              Γöé
  11669. Γöé                    Γöé                    Γöé1 =                 Γöé
  11670. Γöé                    Γöé                    ΓöéInquireBootSocket   Γöé
  11671. Γöé                    Γöé                    Γöé2 = UnlockBootSocketΓöé
  11672. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  11673.  
  11674.  
  11675. ΓòÉΓòÉΓòÉ 15.1.4.13.2. Output Parameter Keywords ΓòÉΓòÉΓòÉ
  11676.  
  11677.  
  11678. None. 
  11679.  
  11680.  
  11681. ΓòÉΓòÉΓòÉ 15.1.4.13.3. Logged Data ΓòÉΓòÉΓòÉ
  11682.  
  11683.  
  11684. None. 
  11685.  
  11686.  
  11687. ΓòÉΓòÉΓòÉ 15.1.4.14. PCMC_GETSOCKET ΓòÉΓòÉΓòÉ
  11688.  
  11689. This function gets the current configuration of the specified socket. 
  11690.  
  11691.  
  11692. ΓòÉΓòÉΓòÉ 15.1.4.14.1. Input Parameter Keywords ΓòÉΓòÉΓòÉ
  11693.  
  11694. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  11695. ΓöéKeyword             ΓöéType                ΓöéDescription         Γöé
  11696. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11697. ΓöéDRIVEHANDLE         ΓöéNUM                 ΓöéDrive handle for    Γöé
  11698. Γöé                    Γöé                    ΓöéPCMCIA device under Γöé
  11699. Γöé                    Γöé                    Γöétest                Γöé
  11700. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11701. ΓöéADAPTER             ΓöéNUM                 ΓöéAdapter number      Γöé
  11702. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11703. ΓöéSOCKET              ΓöéNUM                 ΓöéSocket Number       Γöé
  11704. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  11705.  
  11706.  
  11707. ΓòÉΓòÉΓòÉ 15.1.4.14.2. Output Parameter Keywords ΓòÉΓòÉΓòÉ
  11708.  
  11709.  
  11710. None. 
  11711.  
  11712.  
  11713. ΓòÉΓòÉΓòÉ 15.1.4.14.3. Logged Data ΓòÉΓòÉΓòÉ
  11714.  
  11715.  
  11716. Interrupt Mask 
  11717. Vcc Level 
  11718. Vpp Level 
  11719. Socket State variables 
  11720. Socket Control Variables 
  11721. IRQ level and status change interrupts 
  11722.  
  11723.  
  11724. ΓòÉΓòÉΓòÉ 15.1.4.15. PCMC_GETSTATUS ΓòÉΓòÉΓòÉ
  11725.  
  11726. This function gets the status of the card in the specified socket on the 
  11727. specified adapter. 
  11728.  
  11729.  
  11730. ΓòÉΓòÉΓòÉ 15.1.4.15.1. Input Parameter Keywords ΓòÉΓòÉΓòÉ
  11731.  
  11732. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  11733. ΓöéKeyword             ΓöéType                ΓöéDescription         Γöé
  11734. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11735. ΓöéDRIVEHANDLE         ΓöéNUM                 ΓöéDrive handle for    Γöé
  11736. Γöé                    Γöé                    ΓöéPCMCIA device under Γöé
  11737. Γöé                    Γöé                    Γöétest                Γöé
  11738. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11739. ΓöéADAPTER             ΓöéNUM                 ΓöéAdapter number      Γöé
  11740. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11741. ΓöéSOCKET              ΓöéNUM                 ΓöéSocket Number       Γöé
  11742. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  11743.  
  11744.  
  11745. ΓòÉΓòÉΓòÉ 15.1.4.15.2. Output Parameter Keywords ΓòÉΓòÉΓòÉ
  11746.  
  11747.  
  11748. None. 
  11749.  
  11750.  
  11751. ΓòÉΓòÉΓòÉ 15.1.4.15.3. Logged Data ΓòÉΓòÉΓòÉ
  11752.  
  11753.  
  11754. Card Attributes 
  11755. Socket State 
  11756. Control and Indicator State 
  11757. IRQ level and status change interrupts 
  11758.  
  11759.  
  11760. ΓòÉΓòÉΓòÉ 15.1.4.16. PCMC_INQSOCKET ΓòÉΓòÉΓòÉ
  11761.  
  11762. This function gets the capability information for the specified socket. 
  11763.  
  11764.  
  11765. ΓòÉΓòÉΓòÉ 15.1.4.16.1. Input Parameter Keywords ΓòÉΓòÉΓòÉ
  11766.  
  11767. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  11768. ΓöéKeyword             ΓöéType                ΓöéDescription         Γöé
  11769. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11770. ΓöéDRIVEHANDLE         ΓöéNUM                 ΓöéDrive handle for    Γöé
  11771. Γöé                    Γöé                    ΓöéPCMCIA device under Γöé
  11772. Γöé                    Γöé                    Γöétest                Γöé
  11773. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11774. ΓöéADAPTER             ΓöéNUM                 ΓöéAdapter number      Γöé
  11775. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11776. ΓöéSOCKET              ΓöéNUM                 ΓöéSocket Number       Γöé
  11777. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  11778.  
  11779.  
  11780. ΓòÉΓòÉΓòÉ 15.1.4.16.2. Output Parameter Keywords ΓòÉΓòÉΓòÉ
  11781.  
  11782.  
  11783. None. 
  11784.  
  11785.  
  11786. ΓòÉΓòÉΓòÉ 15.1.4.16.3. Logged Data ΓòÉΓòÉΓòÉ
  11787.  
  11788.  
  11789. Interrupt Capabilities 
  11790. Reporting Capabilities 
  11791. Control Capabilities 
  11792. Socket Characteristics 
  11793.  
  11794.  
  11795. ΓòÉΓòÉΓòÉ 15.1.4.17. PCMC_RESETSOCKET ΓòÉΓòÉΓòÉ
  11796.  
  11797. This function resets the PC card in the specified socket. 
  11798.  
  11799.  
  11800. ΓòÉΓòÉΓòÉ 15.1.4.17.1. Input Parameter Keywords ΓòÉΓòÉΓòÉ
  11801.  
  11802. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  11803. ΓöéKeyword             ΓöéType                ΓöéDescription         Γöé
  11804. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11805. ΓöéDRIVEHANDLE         ΓöéNUM                 ΓöéDrive handle for    Γöé
  11806. Γöé                    Γöé                    ΓöéPCMCIA device under Γöé
  11807. Γöé                    Γöé                    Γöétest                Γöé
  11808. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11809. ΓöéADAPTER             ΓöéNUM                 ΓöéAdapter number      Γöé
  11810. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11811. ΓöéSOCKET              ΓöéNUM                 ΓöéSocket Number       Γöé
  11812. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  11813.  
  11814.  
  11815. ΓòÉΓòÉΓòÉ 15.1.4.17.2. Output Parameter Keywords ΓòÉΓòÉΓòÉ
  11816.  
  11817.  
  11818. None. 
  11819.  
  11820.  
  11821. ΓòÉΓòÉΓòÉ 15.1.4.17.3. Logged Data ΓòÉΓòÉΓòÉ
  11822.  
  11823.  
  11824. None. 
  11825.  
  11826.  
  11827. ΓòÉΓòÉΓòÉ 15.1.4.18. PCMC_SETSOCKET ΓòÉΓòÉΓòÉ
  11828.  
  11829. This function sets the configuration for the specified socket. 
  11830.  
  11831.  
  11832. ΓòÉΓòÉΓòÉ 15.1.4.18.1. Input Parameter Keywords ΓòÉΓòÉΓòÉ
  11833.  
  11834. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  11835. ΓöéKeyword             ΓöéType                ΓöéDescription         Γöé
  11836. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11837. ΓöéDRIVEHANDLE         ΓöéNUM                 ΓöéDrive handle for    Γöé
  11838. Γöé                    Γöé                    ΓöéPCMCIA device under Γöé
  11839. Γöé                    Γöé                    Γöétest                Γöé
  11840. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11841. ΓöéADAPTER             ΓöéNUM                 ΓöéAdapter number      Γöé
  11842. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11843. ΓöéSOCKET              ΓöéNUM                 ΓöéSocket Number       Γöé
  11844. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11845. ΓöéINTERRUPTMASK       ΓöéALNUM               ΓöéStatus change       Γöé
  11846. Γöé                    Γöé                    Γöéinterrupt mask      Γöé
  11847. Γöé                    Γöé                    Γöéwhere:              Γöé
  11848. Γöé                    Γöé                    ΓöéBit 0 = Write       Γöé
  11849. Γöé                    Γöé                    ΓöéProtect Change (mustΓöé
  11850. Γöé                    Γöé                    Γöébe zero)            Γöé
  11851. Γöé                    Γöé                    ΓöéBit 1 = Card Lock   Γöé
  11852. Γöé                    Γöé                    ΓöéChange (must be     Γöé
  11853. Γöé                    Γöé                    Γöézero)               Γöé
  11854. Γöé                    Γöé                    ΓöéBit 2 = Ejection    Γöé
  11855. Γöé                    Γöé                    ΓöéRequest (set =      Γöé
  11856. Γöé                    Γöé                    Γöéenable for PS/2-E)  Γöé
  11857. Γöé                    Γöé                    ΓöéBit 3 = Insertion   Γöé
  11858. Γöé                    Γöé                    ΓöéRequest (must be    Γöé
  11859. Γöé                    Γöé                    Γöézero)               Γöé
  11860. Γöé                    Γöé                    ΓöéBit 4 = Battery DeadΓöé
  11861. Γöé                    Γöé                    ΓöéChange (set =       Γöé
  11862. Γöé                    Γöé                    Γöéenabled)            Γöé
  11863. Γöé                    Γöé                    ΓöéBit 5 = Battery     Γöé
  11864. Γöé                    Γöé                    ΓöéWarning Change (set Γöé
  11865. Γöé                    Γöé                    Γöé= enabled)          Γöé
  11866. Γöé                    Γöé                    ΓöéBit 6 = Ready ChangeΓöé
  11867. Γöé                    Γöé                    Γöé(set = enabled)     Γöé
  11868. Γöé                    Γöé                    ΓöéBit 7 = Card Detect Γöé
  11869. Γöé                    Γöé                    ΓöéChange (set =       Γöé
  11870. Γöé                    Γöé                    Γöéenabled)            Γöé
  11871. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11872. ΓöéVCCLEVEL            ΓöéNUM                 ΓöéLower nibble - Vcc  Γöé
  11873. Γöé                    Γöé                    ΓöéLevel               Γöé
  11874. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11875. ΓöéVPPLEVEL            ΓöéNUM                 ΓöéUpper Nibble - Vpp  Γöé
  11876. Γöé                    Γöé                    ΓöéLevel, Lower Nibble Γöé
  11877. Γöé                    Γöé                    Γöé- Vpp2 Level        Γöé
  11878. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11879. ΓöéSOCKETSTATE         ΓöéNUM                 ΓöéSocket state where: Γöé
  11880. Γöé                    Γöé                    ΓöéBit 0 = Write       Γöé
  11881. Γöé                    Γöé                    ΓöéProtect Change      Γöé
  11882. Γöé                    Γöé                    ΓöéBit 1 = Card Lock   Γöé
  11883. Γöé                    Γöé                    ΓöéChange              Γöé
  11884. Γöé                    Γöé                    ΓöéBit 2 = Ejection    Γöé
  11885. Γöé                    Γöé                    ΓöéRequest(For PS/2-E) Γöé
  11886. Γöé                    Γöé                    ΓöéBit 3 = Insertion   Γöé
  11887. Γöé                    Γöé                    ΓöéRequest(must be     Γöé
  11888. Γöé                    Γöé                    Γöézero)               Γöé
  11889. Γöé                    Γöé                    ΓöéBit 4 = Battery DeadΓöé
  11890. Γöé                    Γöé                    ΓöéChange              Γöé
  11891. Γöé                    Γöé                    ΓöéBit 5 = Battery     Γöé
  11892. Γöé                    Γöé                    ΓöéWarning Change      Γöé
  11893. Γöé                    Γöé                    ΓöéBit 6 = Ready ChangeΓöé
  11894. Γöé                    Γöé                    ΓöéBit 7 = Card Detect Γöé
  11895. Γöé                    Γöé                    ΓöéChange              Γöé
  11896. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11897. ΓöéSOCKETCONTROL       ΓöéNUM                 ΓöéSocket Control      Γöé
  11898. Γöé                    Γöé                    Γöéwhere:              Γöé
  11899. Γöé                    Γöé                    ΓöéBit 4 = Lock        Γöé
  11900. Γöé                    Γöé                    ΓöéControl(PS/2-e only)Γöé
  11901. Γöé                    Γöé                    ΓöéBit 6 = Busy Status Γöé
  11902. Γöé                    Γöé                    ΓöéAll other bits are  Γöé
  11903. Γöé                    Γöé                    Γöéreserved and are setΓöé
  11904. Γöé                    Γöé                    Γöéto zero             Γöé
  11905. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11906. ΓöéIFIRQ               ΓöéALNUM               ΓöéIRQ Steering and    Γöé
  11907. Γöé                    Γöé                    ΓöéInterface Type      Γöé
  11908. Γöé                    Γöé                    ΓöéControl where:      Γöé
  11909. Γöé                    Γöé                    ΓöéBit 0..3 = IRQ LevelΓöé
  11910. Γöé                    Γöé                    Γöé(0..15) (16..19 mustΓöé
  11911. Γöé                    Γöé                    Γöébe zero)            Γöé
  11912. Γöé                    Γöé                    ΓöéBit 4    = Reserved Γöé
  11913. Γöé                    Γöé                    Γöé(always zero)       Γöé
  11914. Γöé                    Γöé                    ΓöéBit 5    = Reserved Γöé
  11915. Γöé                    Γöé                    Γöé(always zero)       Γöé
  11916. Γöé                    Γöé                    ΓöéBit 6    = IRQ      Γöé
  11917. Γöé                    Γöé                    ΓöéInverter enabled    Γöé
  11918. Γöé                    Γöé                    Γöé(set to one =       Γöé
  11919. Γöé                    Γöé                    Γöéenable)             Γöé
  11920. Γöé                    Γöé                    ΓöéBit 7    = IRQ      Γöé
  11921. Γöé                    Γöé                    ΓöéSteering enabled    Γöé
  11922. Γöé                    Γöé                    Γöé(set to one =       Γöé
  11923. Γöé                    Γöé                    Γöéenable)             Γöé
  11924. Γöé                    Γöé                    ΓöéBit 8    = Memory   Γöé
  11925. Γöé                    Γöé                    Γöéonly interface      Γöé
  11926. Γöé                    Γöé                    Γöé(mutually exclusive Γöé
  11927. Γöé                    Γöé                    Γöéof I/O and Memory   Γöé
  11928. Γöé                    Γöé                    Γöéinterface)          Γöé
  11929. Γöé                    Γöé                    ΓöéBit 9    = I/O and  Γöé
  11930. Γöé                    Γöé                    ΓöéMemory interface    Γöé
  11931. Γöé                    Γöé                    Γöé           (mutuallyΓöé
  11932. Γöé                    Γöé                    Γöéexclusive of Memory Γöé
  11933. Γöé                    Γöé                    Γöéonly interface)     Γöé
  11934. Γöé                    Γöé                    ΓöéAll other bits are  Γöé
  11935. Γöé                    Γöé                    Γöéreserved and are setΓöé
  11936. Γöé                    Γöé                    Γöéto zero             Γöé
  11937. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  11938.  
  11939.  
  11940. ΓòÉΓòÉΓòÉ 15.1.4.18.2. Output Parameter Keywords ΓòÉΓòÉΓòÉ
  11941.  
  11942.  
  11943. None. 
  11944.  
  11945.  
  11946. ΓòÉΓòÉΓòÉ 15.1.4.18.3. Logged Data ΓòÉΓòÉΓòÉ
  11947.  
  11948.  
  11949. None. 
  11950.  
  11951.  
  11952. ΓòÉΓòÉΓòÉ 15.1.4.19. PCMC_GETPAGE ΓòÉΓòÉΓòÉ
  11953.  
  11954. This function gets the current configuration of the specified page in the 
  11955. specified window. 
  11956.  
  11957.  
  11958. ΓòÉΓòÉΓòÉ 15.1.4.19.1. Input Parameter Keywords ΓòÉΓòÉΓòÉ
  11959.  
  11960. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  11961. ΓöéKeyword             ΓöéType                ΓöéDescription         Γöé
  11962. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11963. ΓöéDRIVEHANDLE         ΓöéNUM                 ΓöéDrive handle for    Γöé
  11964. Γöé                    Γöé                    ΓöéPCMCIA device under Γöé
  11965. Γöé                    Γöé                    Γöétest                Γöé
  11966. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11967. ΓöéADAPTER             ΓöéNUM                 ΓöéAdapter number      Γöé
  11968. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11969. ΓöéWINDOW              ΓöéNUM                 ΓöéWindow Number       Γöé
  11970. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11971. ΓöéPAGE                ΓöéNUM                 ΓöéPage number         Γöé
  11972. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  11973.  
  11974.  
  11975. ΓòÉΓòÉΓòÉ 15.1.4.19.2. Output Parameter Keywords ΓòÉΓòÉΓòÉ
  11976.  
  11977.  
  11978. None. 
  11979.  
  11980.  
  11981. ΓòÉΓòÉΓòÉ 15.1.4.19.3. Logged Data ΓòÉΓòÉΓòÉ
  11982.  
  11983.  
  11984. Page Attributes 
  11985. Offset 
  11986.  
  11987.  
  11988. ΓòÉΓòÉΓòÉ 15.1.4.20. PCMC_GETWINDOW ΓòÉΓòÉΓòÉ
  11989.  
  11990. This function gets the current configuration of the specified window on the 
  11991. specified adapter. 
  11992.  
  11993.  
  11994. ΓòÉΓòÉΓòÉ 15.1.4.20.1. Input Parameter Keywords ΓòÉΓòÉΓòÉ
  11995.  
  11996. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  11997. ΓöéKeyword             ΓöéType                ΓöéDescription         Γöé
  11998. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  11999. ΓöéDRIVEHANDLE         ΓöéNUM                 ΓöéDrive handle for    Γöé
  12000. Γöé                    Γöé                    ΓöéPCMCIA device under Γöé
  12001. Γöé                    Γöé                    Γöétest                Γöé
  12002. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12003. ΓöéADAPTER             ΓöéNUM                 ΓöéAdapter number      Γöé
  12004. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12005. ΓöéWINDOW              ΓöéNUM                 ΓöéWindow Number       Γöé
  12006. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  12007.  
  12008.  
  12009. ΓòÉΓòÉΓòÉ 15.1.4.20.2. Output Parameter Keywords ΓòÉΓòÉΓòÉ
  12010.  
  12011.  
  12012. None. 
  12013.  
  12014.  
  12015. ΓòÉΓòÉΓòÉ 15.1.4.20.3. Logged Data ΓòÉΓòÉΓòÉ
  12016.  
  12017.  
  12018. Socket 
  12019. Window Size 
  12020. Window Attributes 
  12021. Access speed 
  12022. Window Base Address 
  12023.  
  12024.  
  12025. ΓòÉΓòÉΓòÉ 15.1.4.21. PCMC_INQWINDOW ΓòÉΓòÉΓòÉ
  12026.  
  12027. This function gets the capability information for the specified window on the 
  12028. specified window. 
  12029.  
  12030.  
  12031. ΓòÉΓòÉΓòÉ 15.1.4.21.1. Input Parameter Keywords ΓòÉΓòÉΓòÉ
  12032.  
  12033. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  12034. ΓöéKeyword             ΓöéType                ΓöéDescription         Γöé
  12035. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12036. ΓöéDRIVEHANDLE         ΓöéNUM                 ΓöéDrive handle for    Γöé
  12037. Γöé                    Γöé                    ΓöéPCMCIA device under Γöé
  12038. Γöé                    Γöé                    Γöétest                Γöé
  12039. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12040. ΓöéADAPTER             ΓöéNUM                 ΓöéAdapter number      Γöé
  12041. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12042. ΓöéWINDOW              ΓöéNUM                 ΓöéWindow Number       Γöé
  12043. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  12044.  
  12045.  
  12046. ΓòÉΓòÉΓòÉ 15.1.4.21.2. Output Parameter Keywords ΓòÉΓòÉΓòÉ
  12047.  
  12048.  
  12049. None. 
  12050.  
  12051.  
  12052. ΓòÉΓòÉΓòÉ 15.1.4.21.3. Logged Data ΓòÉΓòÉΓòÉ
  12053.  
  12054.  
  12055. Capabilities 
  12056. Assignable Sockets 
  12057.  
  12058.  
  12059. ΓòÉΓòÉΓòÉ 15.1.4.22. PCMC_SETPAGE ΓòÉΓòÉΓòÉ
  12060.  
  12061. This function sets the configuration for the specified page in the specified 
  12062. window. 
  12063.  
  12064.  
  12065. ΓòÉΓòÉΓòÉ 15.1.4.22.1. Input Parameter Keywords ΓòÉΓòÉΓòÉ
  12066.  
  12067. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  12068. ΓöéKeyword             ΓöéType                ΓöéDescription         Γöé
  12069. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12070. ΓöéDRIVEHANDLE         ΓöéNUM                 ΓöéDrive handle for    Γöé
  12071. Γöé                    Γöé                    ΓöéPCMCIA device under Γöé
  12072. Γöé                    Γöé                    Γöétest                Γöé
  12073. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12074. ΓöéADAPTER             ΓöéNUM                 ΓöéAdapter number      Γöé
  12075. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12076. ΓöéWINDOW              ΓöéNUM                 ΓöéWindow Number       Γöé
  12077. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12078. ΓöéPGSTATE             ΓöéNUM                 ΓöéPage Attributes     Γöé
  12079. Γöé                    Γöé                    Γöéwhere.:             Γöé
  12080. Γöé                    Γöé                    ΓöéBit 0  set =        Γöé
  12081. Γöé                    Γöé                    ΓöéAttribute Memory,   Γöé
  12082. Γöé                    Γöé                    Γöéreset = Common      Γöé
  12083. Γöé                    Γöé                    ΓöéMemory              Γöé
  12084. Γöé                    Γöé                    ΓöéBit 1  set = Enable,Γöé
  12085. Γöé                    Γöé                    Γöéreset = Disable     Γöé
  12086. Γöé                    Γöé                    ΓöéAll other bits are  Γöé
  12087. Γöé                    Γöé                    Γöéreserved and must beΓöé
  12088. Γöé                    Γöé                    Γöéset to zero         Γöé
  12089. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12090. ΓöéOFFSET              ΓöéNUM                 Γöé4KB units           Γöé
  12091. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  12092.  
  12093.  
  12094. ΓòÉΓòÉΓòÉ 15.1.4.22.2. Output Parameter Keywords ΓòÉΓòÉΓòÉ
  12095.  
  12096.  
  12097. None. 
  12098.  
  12099.  
  12100. ΓòÉΓòÉΓòÉ 15.1.4.22.3. Logged Data ΓòÉΓòÉΓòÉ
  12101.  
  12102.  
  12103. None. 
  12104.  
  12105.  
  12106. ΓòÉΓòÉΓòÉ 15.1.4.23. PCMC_SETWINDOW ΓòÉΓòÉΓòÉ
  12107.  
  12108. This function sets the configuration for the specified window. 
  12109.  
  12110.  
  12111. ΓòÉΓòÉΓòÉ 15.1.4.23.1. Input Parameter Keywords ΓòÉΓòÉΓòÉ
  12112.  
  12113. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  12114. ΓöéKeyword             ΓöéType                ΓöéDescription         Γöé
  12115. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12116. ΓöéDRIVEHANDLE         ΓöéNUM                 ΓöéDrive handle for    Γöé
  12117. Γöé                    Γöé                    ΓöéPCMCIA device under Γöé
  12118. Γöé                    Γöé                    Γöétest                Γöé
  12119. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12120. ΓöéADAPTER             ΓöéNUM                 ΓöéAdapter number      Γöé
  12121. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12122. ΓöéWINDOW              ΓöéNUM                 ΓöéWindow Number       Γöé
  12123. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12124. ΓöéSOCKET              ΓöéNUM                 ΓöéSocket number       Γöé
  12125. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12126. ΓöéSIZE                ΓöéALNUM               ΓöéNumber of bytes for Γöé
  12127. Γöé                    Γöé                    ΓöéI/O, number of 4KB  Γöé
  12128. Γöé                    Γöé                    Γöéunits for memory    Γöé
  12129. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12130. ΓöéWINSTATE            ΓöéNUM                 ΓöéWindow State where: Γöé
  12131. Γöé                    Γöé                    ΓöéBit 0  set = Memory,Γöé
  12132. Γöé                    Γöé                    Γöéreset = I/O         Γöé
  12133. Γöé                    Γöé                    ΓöéBit 1  set =        Γöé
  12134. Γöé                    Γöé                    ΓöéEnabled, reset =    Γöé
  12135. Γöé                    Γöé                    ΓöéDisabled            Γöé
  12136. Γöé                    Γöé                    ΓöéBit 2  set = 16-bit,Γöé
  12137. Γöé                    Γöé                    Γöéreset = 8-bit       Γöé
  12138. Γöé                    Γöé                    ΓöéAll other bits are  Γöé
  12139. Γöé                    Γöé                    Γöéset to zero         Γöé
  12140. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12141. ΓöéSPEED               ΓöéNUM                 ΓöéActual access speed Γöé
  12142. Γöé                    Γöé                    Γöé1 = 250nSec  Only   Γöé
  12143. Γöé                    Γöé                    Γöéspeed supported     Γöé
  12144. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12145. ΓöéBASE                ΓöéALNUM               ΓöéBase address where: Γöé
  12146. Γöé                    Γöé                    Γöé0x00A0 - First Byte Γöé
  12147. Γöé                    Γöé                    Γöéaddressable         Γöé
  12148. Γöé                    Γöé                    Γöé0x00FF - Last Byte  Γöé
  12149. Γöé                    Γöé                    Γöéaddressable         Γöé
  12150. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  12151.  
  12152.  
  12153. ΓòÉΓòÉΓòÉ 15.1.4.23.2. Output Parameter Keywords ΓòÉΓòÉΓòÉ
  12154.  
  12155.  
  12156. None. 
  12157.  
  12158.  
  12159. ΓòÉΓòÉΓòÉ 15.1.4.23.3. Logged Data ΓòÉΓòÉΓòÉ
  12160.  
  12161.  
  12162. None. 
  12163.  
  12164.  
  12165. ΓòÉΓòÉΓòÉ 15.1.4.24. PCMC_GETEDC ΓòÉΓòÉΓòÉ
  12166.  
  12167. This function gets the current configuration of the specified EDC generator. 
  12168.  
  12169.  
  12170. ΓòÉΓòÉΓòÉ 15.1.4.24.1. Input Parameter Keywords ΓòÉΓòÉΓòÉ
  12171.  
  12172. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  12173. ΓöéKeyword             ΓöéType                ΓöéDescription         Γöé
  12174. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12175. ΓöéDRIVEHANDLE         ΓöéNUM                 ΓöéDrive handle for    Γöé
  12176. Γöé                    Γöé                    ΓöéPCMCIA device under Γöé
  12177. Γöé                    Γöé                    Γöétest                Γöé
  12178. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12179. ΓöéADAPTER             ΓöéNUM                 ΓöéAdapter number      Γöé
  12180. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12181. ΓöéEDC                 ΓöéNUM                 ΓöéEDC generator numberΓöé
  12182. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  12183.  
  12184.  
  12185. ΓòÉΓòÉΓòÉ 15.1.4.24.2. Output Parameter Keywords ΓòÉΓòÉΓòÉ
  12186.  
  12187.  
  12188. Socket 
  12189. State 
  12190. Type 
  12191.  
  12192.  
  12193. ΓòÉΓòÉΓòÉ 15.2. Description of Test Cases ΓòÉΓòÉΓòÉ
  12194.  
  12195. Each of the PCMCIA Socket Services test cases can be executed individually as 
  12196. previously described.  The corresponding test scripts are described below.  You 
  12197. can create additional tests or combine tests into multi-threaded test cases 
  12198. after becoming familiar with the DDTT and the PCMCIA grammar files. 
  12199.  
  12200. All test scripts close the channels opened to the PCMCIA device and verify 
  12201. successful status return from every exercised API.  All test scripts log 
  12202. information to a log file with the same file name and a file name extension 
  12203. .LOG.  When current status is queried (for example, track, channel, or drive), 
  12204. this data is written to the DDTT's output windows and to the log file.  Log 
  12205. files can be examined after the test case has completed. 
  12206.  
  12207.  ACKINT.SCR          Gets the number of Status Change Interrupts from the  test 
  12208.                      device driver since the last time ACKINT was called. The 
  12209.                      count is reset to zero. 
  12210.  
  12211.  ADAPTER.SCR         Calls the SetAdapter function with different values for 
  12212.                      State and IRQ.  SetAdapter sets the configuration for the 
  12213.                      specified adapter. Each time the SetAdapter function is 
  12214.                      called, the GetAdapter function is also called to verify 
  12215.                      the configuration. 
  12216.  
  12217.  GETAOFS.SCR         Gets an array of offsets for low-level, adapter-specific, 
  12218.                      optimized PC-card access routines. Can return UNSUPPORTED 
  12219.                      FUNCTION. 
  12220.  
  12221.  GETADP.SCR          Gets the current configuration of the specified adapter, 
  12222.  
  12223.  GTADPCT.SCR         Gets the number of adapters supported by Socket Services 
  12224.                      and the Signature "SS". 
  12225.  
  12226.  GETEDC.SCR          Gets the current configuration of the specified EDC 
  12227.                      generator. Can return UNSUPPORTED FUNCTION. 
  12228.  
  12229.  GETPAGE.SCR         Gets the current configuration of the specified memory 
  12230.                      page in the specified window. 
  12231.  
  12232.  GETSOC.SCR          Formats the information and sends it to the log file. 
  12233.  
  12234.  GTSSINF.SCR         Gets the compliance level of the Socket Services interface 
  12235.                      supporting the specified adapter and identifies the 
  12236.                      adapters supported. 
  12237.  
  12238.  GETSTAT.SCR         Gets the status of the card in the specified socket on a 
  12239.                      specified adapter. 
  12240.  
  12241.  GTVNINF.SCR         Gets information about the vendor that implemented the 
  12242.                      Socket Services for the specified PCMCIA adapter. 
  12243.  
  12244.  GETWIN.SCR          Gets the current configuration of the specified memory 
  12245.                      window on the specified adapter. 
  12246.  
  12247.  GSPRHND.SCR         Gets the prior Socket Services handler for the specified 
  12248.                      socket.  Can return UNSUPPORTED FUNCTION. 
  12249.  
  12250.  GSSSADR.SCR         Gets or sets mode and data area descriptors. 
  12251.  
  12252.  INQADP.SCR          Gets the capability information for the specified adapter. 
  12253.  
  12254.  INQSOC.SCR          Gets the capability information for the specified socket. 
  12255.  
  12256.  INQWIN.SCR          Gets the capability information for the specified window 
  12257.                      on the specified adapter. 
  12258.  
  12259.  INTRUPT.SCR         Calls the AckInterrupts function after various 
  12260.                      combinations of insert and remove operations on the 
  12261.                      socket.  The AckInterrupts function gets the oldest Status 
  12262.                      Change Interrupt information from the test version of the 
  12263.                      PCMCIA$ device driver. 
  12264.  
  12265.                      Note:  Each call to AckInterrupts from the test IOCtl 
  12266.                             resets the current count of interrupts.  This count 
  12267.                             is kept and reported for diagnostic purposes only. 
  12268.  
  12269.  MAXPAGE.SCR         Calls the GetPage function with different values for the 
  12270.                      Window number.  GetPage gets the current configuration for 
  12271.                      the specified Page. 
  12272.  
  12273.  MAXWIN.SCR          Calls the GetWindow function with different values for the 
  12274.                      Window number.  GetWindow gets the current configuration 
  12275.                      for the specified Window. 
  12276.  
  12277.  RSETSOC.SCR         Resets the PC card in the specified socket. 
  12278.  
  12279.                      Note:  There must be a card in the socket to call this 
  12280.                             function successfully. 
  12281.  
  12282.  SETADP.SCR          Sets the configuration of the specified adapter. 
  12283.  
  12284.  SETPAGE.SCR         Sets the configuration for the specified page in the 
  12285.                      specified window. 
  12286.  
  12287.  SETSOC.SCR          Sets the configuration for the specified socket. 
  12288.  
  12289.  SETWIN.SCR          Sets the configuration for the specified memory window. 
  12290.  
  12291.  SETWP.SCR           Calls the SetWindow and SetPage functions with different 
  12292.                      values.  After setting the values it calls GetWindow and 
  12293.                      GetPage to verify configuration. 
  12294.  
  12295.  VNSPEC.SCR          Defines a vendor-specific function for implementing 
  12296.                      proprietary functions. Can return UNSUPPORTED FUNCTION. 
  12297.  
  12298.  WINDOW.SCR          Calls the SetWindow function with different combinations 
  12299.                      of values for Base, Window and Size.  SetWindow sets the 
  12300.                      configuration for the specified Window.  Each time the 
  12301.                      SetWindow function is called, GetWindow function is called 
  12302.                      before and after the SetWindow to compare the 
  12303.                      configuration. 
  12304.  
  12305.  
  12306. ΓòÉΓòÉΓòÉ 16. Touch Display Device Driver ΓòÉΓòÉΓòÉ
  12307.  
  12308. This chapter introduces and describes the OS/2 device driver for the IBM Touch 
  12309. Display pointing device. 
  12310.  
  12311.  
  12312. ΓòÉΓòÉΓòÉ 16.1. Overview ΓòÉΓòÉΓòÉ
  12313.  
  12314. The IBM Touch Display essentially is a PS/2 8515 Display. Besides the normal 
  12315. video cable connection to a VGA/XGA* port, the Touch Display has a touch data 
  12316. cable that attaches to the IBM PS/2 Mouse (pointing device) port on the system 
  12317. unit.  In addition, the monitor itself has a socket to which the IBM PS/2 Mouse 
  12318. can optionally be attached. 
  12319.  
  12320. Support for the IBM Touch Display for OS/2 protect-mode and DOS real-mode 
  12321. applications is provided by the following components: 
  12322.  
  12323.    o  Touch device driver 
  12324.    o  Touch device-independent subsystem 
  12325.    o  Touch device-dependent subsystem 
  12326.    o  Combined IBM PS/2 Mouse/Touch device-dependent device driver 
  12327.    o  Touch virtual device driver (VDD) 
  12328.    o  ABIOS RAM extension for both IBM PS/2 Mouse and IBM Touch Display devices 
  12329.       (not required for AT*-Bus machines) 
  12330.  
  12331.  Note:  Support for the IBM Touch Display as a video device is provided by 
  12332.         standard 8515 device drivers.  As far as the system is concerned, there 
  12333.         is no difference (video-wise) between the Touch Display monitor and a 
  12334.         standard 8515. 
  12335.  
  12336.  OS/2, Versions 2.0 and 2.1, device-driver support for the Touch Display 
  12337.  differs somewhat from the support provided in previous versions of OS/2, as 
  12338.  follows: 
  12339.  
  12340.    o  A revised Touch API, which is device independent. 
  12341.  
  12342.       Programs written to the existing Touxxx API using device-dependent 
  12343.       features (such as thresholds, filter type, and so forth), however, remain 
  12344.       compatible by virtualizing some of the functions; others become no-ops. 
  12345.  
  12346.    o  Device-dependent features (only) are accessed by the PM Touch control 
  12347.       panel or device driver load-time parameters, using the common TOUCH.INI 
  12348.       file. 
  12349.  
  12350.    o  PM mouse-emulation support for windowed DOS sessions. 
  12351.  
  12352.    o  The VDD provides support for the DOS Touch API (INT 7FH) for multiple 
  12353.       full-screen DOS sessions. 
  12354.  
  12355.       Also, a DOS attribute is available that provides exclusive touch access 
  12356.       for a windowed DOS session.  This disables mouse emulation and gives the 
  12357.       DOS application direct, full-screen X,Y,Z touch coordinates.  If the DOS 
  12358.       session is not maximized to cover the full screen, coordinate mapping by 
  12359.       the application is required. 
  12360.  
  12361.  The arrangement of the Mouse and Touch device drivers is shown in the 
  12362.  following figure. 
  12363.  
  12364.  
  12365.    MouXXX   Presentation Manager   TdiXXX         TouXXX
  12366.       API Γöé                      Γöé API           Γöé API
  12367.     ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ  Γöé   Γöé    ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ  ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  12368.     ΓöéMOUCALLS.DLLΓöé  Γöé   Γöé    ΓöéTDICALLS.DLLΓöé  ΓöéTOUCALLS.DLLΓöé
  12369.     ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ  Γöé   Γöé    ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ  ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  12370.           Γöé         Γöé   Γöé          Γöé
  12371.     ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ  Γöé   Γöé          Γöé          DosDevIOCtl
  12372.     ΓöéBMSCALLS.DLLΓöé  Γöé   Γöé          ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  12373.     ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ  Γöé   Γöé   INT33 DOS     INT7F DOS        Γöé
  12374.    DosDev-Γöé  ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ   Γöé        API          API        Γöé
  12375.     IOCtl Γöé  Γöé          Γöé   Γöé             Γöé                Γöé
  12376.     ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ  ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  12377.     Γöé           Γö£ΓöÇΓöÇΓöÇ            Γöé  Γöé            ΓöÇΓöÇΓöÇΓöñ           Γöé
  12378.     Γöé MOUSE.SYS Γöé   Γöé VMOUSE.SYS Γöé  Γöé VTOUCH.SYS Γöé   Γöé TOUCH.SYS Γöé
  12379.     Γöé           ΓöÇΓöÇΓöÇΓöñ            Γöé  Γöé            Γö£ΓöÇΓöÇΓöÇ           Γöé
  12380.     ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ  ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  12381.         Γöé   Γöé                                              Γöé
  12382.         Γöé   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  12383.         ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ Emulated    Γöé   Γöé Touch Data
  12384.         Mouse Data    Γöé mouse data  Γöé   Γöé
  12385.                     ΓöîΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÉ
  12386.    PDITOU02.SYS     Γöé Γöé            ΓöîΓö┤ΓöÇΓöÇΓöÇΓö┤ΓöÉ Γöé    (device dependent)
  12387.    Combined         Γöé ΓööΓöÇΓöÇΓöÇΓöÉ   ΓöîΓöÇΓöÇΓöÇΓöÇΓöñ  E  Γöé Γöé   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  12388.    Mouse/Touch      Γöé    ΓöîΓö┤ΓöÇΓöÇΓöÇΓö┤ΓöÉ   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ ΓöÇΓöÇΓöÇTDDCALLS.DLLΓöÇΓöÇΓöÇΓöÇΓöÇ
  12389.    Device-dependent Γöé    Γöé  I  Γöé   PDITOU$ Γöé   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿTDDxxx
  12390.    driver           Γöé    ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ           Γöé                 API
  12391.                     Γöé    PDIMOU$           Γöé
  12392.                     ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  12393.                                Γöé
  12394.                          ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  12395.            TOUMOUSx.BIO  Γöé   ABIOS   Γöé
  12396.                          ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  12397.                                Γöé
  12398.                    Mouse/Touch display hardware
  12399.  
  12400.  Note: 
  12401.  
  12402.  Box I is the interrupt handler, which decides whether the data packet is Mouse 
  12403.  or Touch. 
  12404.  
  12405.  Box E is controlled by the state of mouse emulation.  Data is passed to either 
  12406.  the mouse device driver or the Touch device driver, depending on whether mouse 
  12407.  emulation is ON or OFF, respectively. 
  12408.  
  12409.  Both the IBM PS/2 Mouse and IBM Touch Display devices share the same ABIOS and 
  12410.  device-dependent driver.  These components cannot be separated due to the 
  12411.  access of both devices through the same physical I/O ports on the 8042, and 
  12412.  sharing their physical hardware interrupt request, IRQ 12h.  This implies a 
  12413.  common device driver with a single interrupt handler that decides, by 
  12414.  examination of the actual data, which device is responsible for the interrupt. 
  12415.  
  12416.  
  12417. ΓòÉΓòÉΓòÉ 16.2. Using the Touch APIs ΓòÉΓòÉΓòÉ
  12418.  
  12419. DOS-mode applications use the software interrupt 7FH (INT 7FH) interface to 
  12420. access the Touch display device.  For details, refer to the OS/2 Virtual Device 
  12421. Driver Reference. OS/2-mode applications access the Touch display device using 
  12422. the Tdixxx API, described fully in the OS/2 Virtual Device Driver Reference. 
  12423. Protect-mode applications cannot use the INT 7FH API nor can real-mode 
  12424. applications use the Tdixxx API. 
  12425.  
  12426. The Touxxx API provided in previous versions of OS/2 also is available; but due 
  12427. to the fact that all of the hardware-dependent functions have been moved from 
  12428. the TOUCH.SYS driver into the PDITOU0x.SYS driver, the TOUCH.SYS driver truly 
  12429. is device-independent. 
  12430.  
  12431. In addition to having touch-device capability, you also can have the Touch 
  12432. display emulate the IBM PS/2 Mouse, using the standard mouse INT 33H API (for 
  12433. real-mode) and the MOUxxx API (for OS/2 mode). 
  12434.  
  12435.  
  12436. ΓòÉΓòÉΓòÉ 16.2.1. Programming a 32-Bit Touch Display Device ΓòÉΓòÉΓòÉ
  12437.  
  12438. The APIs described previously are 16-bit; there are no 32-bit APIs available as 
  12439. yet for the Touch device.  Programs compiled for the 32-bit flat model (CL386 - 
  12440. G3 switch) still can use the 16-bit API calls through the CL386 compiler's 
  12441. built-in 16- > 32-bit conversions.  These conversions come into effect when 
  12442. pointer parameters and functions are declared with the _far16 keyword.  The 
  12443. compiler then generates the necessary thunking code to perform the calls. 
  12444.  
  12445.  
  12446. ΓòÉΓòÉΓòÉ 16.2.2. Accessing a Presentation Manager Touch Display Device ΓòÉΓòÉΓòÉ
  12447.  
  12448. Within Presentation Manager, it is not possible to access the Touch device from 
  12449. the following locations: 
  12450.  
  12451.    o  Presentation Manager program 
  12452.    o  AVIO window 
  12453.    o  DOS window (the default) 
  12454.  
  12455.  Under the Properties option on the System Menu, an option has been added 
  12456.  called Touch: exclusive to a window, which disables mouse emulation under PM 
  12457.  and gives the touch X,Y,Z data directly to the designated window.  However, 
  12458.  the window does receive full-screen touch coordinates; it will need to perform 
  12459.  a mapping unless, for example, it is a graphics program, running maximized, 
  12460.  which covers the full screen.  In the previously mentioned cases, 
  12461.  mouse-emulation mode must be used. 
  12462.  
  12463.  To learn what happens when a DOS program is started in a window and then 
  12464.  switched to full screen, and whether a full-screen program can be switched to 
  12465.  a window, refer to the OS/2 Physical Device Driver Reference. 
  12466.  
  12467.  
  12468. ΓòÉΓòÉΓòÉ 16.3. Mouse Emulation ΓòÉΓòÉΓòÉ
  12469.  
  12470. Mouse emulation is performed by the combined Touch/Mouse device-dependent 
  12471. driver; instead of reporting touch-event X,Y,Z data to the TOUCH.SYS driver, 
  12472. the touch event is converted to an equivalent mouse event and reported to 
  12473. MOUSE.SYS. 
  12474.  
  12475. To facilitate mouse emulation, the MOUSE.SYS driver has two IDC entry points 
  12476. for reporting data: 
  12477.  
  12478.    o  The conventional entry point, where real mouse events are reported 
  12479.  
  12480.    o  An entry point where an absolute pointing device, such as the touch 
  12481.       screen, can call directly, with absolute X,Y values instead of the normal 
  12482.       DX,DY relative mouse movement values (in mickeys). 
  12483.  
  12484.  The emulation is performed at the junction of the device-dependent and 
  12485.  -independent drivers, so that at the MOUSE.SYS interfaces available to 
  12486.  everyone (IOCtl, Mouxxx API, INT 33H API), no difference between the emulated 
  12487.  mouse device and an actual mouse device is evident.  The device-independent 
  12488.  driver hides the differences between the various types of mouse devices that 
  12489.  can attach to the system.  These could be an actual mouse or, just as well, a 
  12490.  tracker ball, tablet, touch screen, light pen, or even a voice recognition 
  12491.  system. 
  12492.  
  12493.  This type of implementation is very flexible in that the mouse and touch 
  12494.  screen can be used independently - the touch screen can be used to emulate the 
  12495.  mouse alone (although without Button 2 capability), or it can be used to 
  12496.  emulate the mouse with simultaneous use of the PS/2 Mouse itself. 
  12497.  
  12498.  Differences between... 
  12499.  
  12500.  OS/2, Versions 2.0 and 2.1, Mouse Support and That of Earlier Versions: 
  12501.  
  12502.    o  Mouse emulation is no longer performed on a per-DOS session basis. 
  12503.       Instead, it is now ON or OFF system wide; thus, turning mouse emulation 
  12504.       OFF using the Touch control panel affects all sessions.  However, DOS 
  12505.       sessions do have individual mouse-emulation states, which means that even 
  12506.       if mouse emulation is ON system wide, the DOS session can turn it ON or 
  12507.       OFF in each individual session. 
  12508.  
  12509.       The DOS INT 7FH API has its own mouse emulation ON|OFF control function, 
  12510.       so turning mouse emulation OFF in one DOS session does not affect the 
  12511.       emulation state in any other. 
  12512.  
  12513.    o  Opening of the Touch device turns off mouse emulation by default, but 
  12514.       mouse emulation can be turned back ON while the device is still open as a 
  12515.       Touch device.  Each touch event then becomes two events: one touch and 
  12516.       one emulated-mouse. 
  12517.  
  12518.       This facility was available in previous versions of OS/2, but it used an 
  12519.       extra bit in the TouSetEmulOnOff() input parameter. This was further 
  12520.       complicated by the fact that, for a given session, there were two 
  12521.       independent sets of hardware parameters: touch and mouse emulation. 
  12522.       Different touch thresholds could apply to a session, depending on whether 
  12523.       mouse emulation was active. 
  12524.  
  12525.       OS/2, Versions 2.0 and 2.1, are much cleaner to implement and easier to 
  12526.       understand with respect to mouse emulation. 
  12527.  
  12528.  
  12529. ΓòÉΓòÉΓòÉ 16.4. Installing the Touch Display Device Driver ΓòÉΓòÉΓòÉ
  12530.  
  12531. The Touch display shares the auxiliary device (mouse) port on the PS/2 with the 
  12532. IBM PS/2 Mouse by permitting the IBM PS/2 Mouse to connect to the Touch 
  12533. display, which is, itself, connected to the PS/2. 
  12534.  
  12535. With the IBM PS/2 Mouse and Touch Display both connected to the auxiliary 
  12536. device port, existing IBM PS/2 Mouse ABIOS and device drivers continue to 
  12537. function normally, requiring no changes. However, to access the Touch display 
  12538. by way of the Touch display device driver, take the following steps: 
  12539.  
  12540.    1. Replace/extend the IBM PS/2 Mouse ABIOS by using an ABIOS RAM extension 
  12541.       contained in TOUMOUSx.BIO. This ABIOS extension adds one function to the 
  12542.       Mouse ABIOS interface to enable control of the Touch Display.  Modify the 
  12543.       system file, ABIOS.SYS, to include this file extension in its list of 
  12544.       ABIOS extensions. 
  12545.  
  12546.    2. Replace the device-dependent IBM PS/2 Mouse device driver file, 
  12547.       PDIMOU02.SYS, with PDITOU02.SYS by modifying the CONFIG.SYS entry as 
  12548.       shown in the following example. 
  12549.  
  12550.    3. Modify all CONFIG.SYS Mouse entries. 
  12551.  
  12552.       Make an entry for the combined Mouse/Touch device-dependent driver as 
  12553.       follows: 
  12554.  
  12555.             ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  12556.  
  12557.  
  12558.               Format:  DEVICE=PDITOU0x.SYS CODE=TOUCO21D.BIN INIT=TOUCH.INI
  12559.  
  12560.             ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  12561.  
  12562.       where 
  12563.  
  12564.                TOUCO21D.BIN is the Touch display microcode binary file
  12565.                TOUCH.INI is a text file containing default parameter settings
  12566.  
  12567.       The following table describes the CONFIG.SYS DEVICE= keyword parameters 
  12568.       for the combined Mouse/Touch device-dependent driver. 
  12569.  
  12570.             ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  12571.             ΓöéKeyword   ΓöéDescription         ΓöéParameter RangeΓöéDefault   Γöé
  12572.             Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12573.             ΓöéCODE=     ΓöéMicrocode file to   ΓöéValid file nameΓöéNone      Γöé
  12574.             Γöé          Γöédownload into Touch Γöé               Γöé          Γöé
  12575.             Γöé          ΓöéDisplay             Γöé               Γöé          Γöé
  12576.             Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12577.             ΓöéINIT=     ΓöéParameter file to   ΓöéValid file nameΓöéNone      Γöé
  12578.             Γöé          Γöéoverride settings inΓöé               Γöé          Γöé
  12579.             Γöé          Γöédevice driver       Γöé               Γöé          Γöé
  12580.             ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  12581.  
  12582.       Make an entry for the Touch device-independent driver as follows: 
  12583.  
  12584.             ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  12585.  
  12586.  
  12587.                  Format:       DEVICE=TOUCH.SYS TYPE=PDITOU$ [QSIZE=] [SEL=]
  12588.  
  12589.                  Example:      DEVICE=TOUCH.SYS TYPE=PDITOU$ QSIZE=15
  12590.  
  12591.             Note:  The device type must be PDITOU$.
  12592.  
  12593.             ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  12594.  
  12595.       An entry for the Mouse device-independent driver is made: 
  12596.  
  12597.             ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  12598.  
  12599.  
  12600.                  Format:       DEVICE=MOUSE.SYS TYPE=PDIMOU$ [QSIZE=]
  12601.  
  12602.                  Example:      DEVICE=MOUSE.SYS TYPE=PDIMOU$ QSIZE=15
  12603.  
  12604.             Note:  The device type must be PDIMOU$.
  12605.  
  12606.             ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  12607.  
  12608.       The entry for the device-dependent Mouse/Touch device driver must precede 
  12609.       the other two entries, for which the order of appearance is not 
  12610.       important. 
  12611.  
  12612.       The following table describes the common CONFIG.SYS DEVICE= keyword 
  12613.       parameters for the device-independent Mouse and Touch drivers. 
  12614.  
  12615.             ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  12616.             ΓöéKeyword   ΓöéDescription         ΓöéParameter RangeΓöéDefault   Γöé
  12617.             Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12618.             ΓöéQSIZE=    ΓöéOS/2-mode support   Γöé1 - 100        Γöé10        Γöé
  12619.             Γöé          Γöéevent queue size in Γöéelements       Γöé          Γöé
  12620.             Γöé          Γöéelements            Γöé               Γöé          Γöé
  12621.             Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12622.             ΓöéTYPE=     ΓöéIndicates device    ΓöéPDITOU$ for    ΓöéNone      Γöé
  12623.             Γöé          Γöédependent name.     ΓöéTouch; PDIMOU$ Γöé          Γöé
  12624.             Γöé          Γöé                    Γöéfor Mouse      Γöé          Γöé
  12625.             ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  12626.  
  12627.       The following table describes the unique CONFIG.SYS DEVICE= keyword 
  12628.       parameters for the Touch device-independent driver. 
  12629.  
  12630.             ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  12631.             ΓöéKeyword   ΓöéDescription         ΓöéParameter RangeΓöéDefault   Γöé
  12632.             Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12633.             ΓöéSEL=      ΓöéSelection mechanism ΓöéSelection type Γöé0         Γöé
  12634.             Γöé          Γöéin protect mode and Γöé0 - 5          Γöé          Γöé
  12635.             Γöé          Γöéreal mode           Γöé# of stable    Γöé          Γöé
  12636.             Γöé          Γöé                    Γöépoints         Γöé          Γöé
  12637.             Γöé          Γöé                    Γöé0 - 40         Γöé          Γöé
  12638.             Γöé          Γöé                    ΓöéTolerance valueΓöé          Γöé
  12639.             Γöé          Γöé                    Γöé0 - 4095       Γöé          Γöé
  12640.             Γöé          Γöé                    ΓöéSearch Limit   Γöé          Γöé
  12641.             Γöé          Γöé                    Γöé0 - 40         Γöé          Γöé
  12642.             ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  12643.  
  12644.       An entry for the Touch virtual device driver is made: 
  12645.  
  12646.             ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  12647.  
  12648.  
  12649.                  Format:       DEVICE=VTOUCH.SYS
  12650.  
  12651.                  Example:      DEVICE=VTOUCH.SYS
  12652.  
  12653.  
  12654.             ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  12655.  
  12656.       There are no keyword parameters for the Touch VDD. 
  12657.  
  12658.       An entry for the mouse virtual device driver is made: 
  12659.  
  12660.             ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  12661.  
  12662.  
  12663.                  Format:       DEVICE=VMOUSE.SYS
  12664.  
  12665.                  Example:      DEVICE=VMOUSE.SYS
  12666.  
  12667.  
  12668.             ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  12669.  
  12670.  Note:  The handling of threshold parameter changes, filter frequencies and 
  12671.         click-locking parameters is done either through the PM Touch control 
  12672.         panel (refer to the OS/2 Physical Device Driver Reference) or the 
  12673.         TOUCH.INI parameter file (see the following). 
  12674.  
  12675.  
  12676. ΓòÉΓòÉΓòÉ 16.4.1. Format of TOUCH.INI Parameter File ΓòÉΓòÉΓòÉ
  12677.  
  12678. A TOUCH.INI parameter file is supplied containing the default device-driver 
  12679. settings for: 
  12680.  
  12681.    o  Force thresholds 
  12682.    o  Mouse emulation ON|OFF control 
  12683.    o  Mouse emulation beep feedback (on button down) ON|OFF control 
  12684.    o  Mouse emulation click-lock parameters 
  12685.    o  Mouse emulation XY finger-pointer offset 
  12686.    o  Data packet report rate 
  12687.    o  Low-pass filter setting 
  12688.  
  12689.  The file contents override the built-in device-dependent driver settings by 
  12690.  using the INIT=filename keyword in the DEVICE= config.sys entry for the device 
  12691.  driver. 
  12692.  
  12693.  Any file can be used if it conforms to the TOUCH.INI syntax; the Touch Control 
  12694.  panel uses and updates the file referred to by the config.sys entry. 
  12695.  
  12696.  The following code fragment shows the format of the TOUCH.INI file containing 
  12697.  the default settings: 
  12698.  
  12699.   ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  12700.  
  12701.   /*
  12702.    * TOUCH.INI - 8516 Touch Display Device-Dependent Driver Initialization File
  12703.    *
  12704.    */
  12705.  
  12706.   /* The format of this file is as follows:
  12707.    *
  12708.    * One Keyword per line, followed by an equal sign (=), then the arguments,
  12709.    * no duplicate tokens allowed.
  12710.    *
  12711.    * All spaces and tabs are ignored.
  12712.    * Arguments are delimited by commas.
  12713.    *
  12714.    * To set an option OFF, use 0.
  12715.    * To set an option ON, use 1.
  12716.    *
  12717.    * Two types of comments are supported. They conform to
  12718.    the 'C' programming language syntax. Nested comments, in any form,
  12719.    are not supported.
  12720.    *
  12721.    */
  12722.  
  12723.   THRESH  = 46, 80, 96    // Thresholds [on-screen, push-hyst, push-thresh]
  12724.   CLICK   = 2, 300, 500   // Click Locking [type, size, time]
  12725.   XYOFF   = 0, 0          // XY Offset [x-off, y-off]
  12726.   RATE    = 3             // Report Rate [rate]
  12727.   EMUL    = 1             // Mouse Emulation [on/off]
  12728.   BEEP    = 1             // Emulation Beep on selection [on/off]
  12729.   FILT    = 0, 0          // Low pass filter type, speed
  12730.  
  12731.   /* end-of-file */
  12732.  
  12733.   ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  12734.  
  12735.  
  12736. ΓòÉΓòÉΓòÉ 16.4.2. Calibration Utility Installation ΓòÉΓòÉΓòÉ
  12737.  
  12738. The Calibration utility performs the dual function of downloading calibration 
  12739. constant data to the Touch display every time the system unit is powered on and 
  12740. permitting re-calibration of the Touch display (on initial setup, when the 
  12741. display is moved to a new location, and so forth).  For this reason, the 
  12742. Calibration utility should be inserted into the config.sys file where it will 
  12743. run automatically every time the system unit is powered on (or warm booted, 
  12744. although this is not necessary). 
  12745.  
  12746. An entry in config.sys is made as follows: 
  12747.  
  12748. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  12749.  
  12750.    run=c:\touchos2\calibrat.exe -c calibrat.dat
  12751.  
  12752. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  12753.  
  12754. If the calibrat.dat file is not found (when the display is initially installed 
  12755. for instance), the operator is prompted to re-calibrate the display; and if 
  12756. successful, a new calibrat.dat file will be created. 
  12757.  
  12758. The calibration utility can be run from the OS/2 command line at any time, for 
  12759. example, to re-calibrate the display: 
  12760.  
  12761. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  12762.  
  12763.  
  12764.    c:
  12765.    cd \touchos2
  12766.    calibrat -u
  12767.  
  12768. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  12769.  
  12770. Note:  The use of the -u option enables an existing calibrat.dat file to be 
  12771.        updated with new calibration data. 
  12772.  
  12773.  
  12774. ΓòÉΓòÉΓòÉ 16.5. Building the OS/2 Touch Device Driver ΓòÉΓòÉΓòÉ
  12775.  
  12776. The OS/2 Device Driver code is required to successfully build the OS/2 Touch 
  12777. device drivers. 
  12778.  
  12779. To build the Touch device drivers: 
  12780.  
  12781.    1. Ensure that the TOOLS directory in the IBM Developer Connection Device 
  12782.       Driver Kit for OS/2 is part of the current path. 
  12783.  
  12784.    2. Create NMAKE using the following Make files in the device driver: 
  12785.  
  12786.         o  SRC\DEV\TOUCHDD\MAKEFILE 
  12787.         o  SRC\VDEV\VTOUCH\MAKEFILE 
  12788.  
  12789.                     ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  12790.  
  12791.                           Example:    cd\ddk_x86\src\dev\TOUCHDD\nmake
  12792.  
  12793.                     ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  12794.  
  12795.  
  12796. ΓòÉΓòÉΓòÉ 17. Touch Inter-Device-Driver Communication Interfaces ΓòÉΓòÉΓòÉ
  12797.  
  12798. This chapter describes the inter-device-driver communication (IDC) interfaces 
  12799. for the IBM Touch Display device driver provided by the OS/2 operating system - 
  12800. both device-independent to device-dependent and device-dependent to 
  12801. device-independent. 
  12802.  
  12803.  
  12804. ΓòÉΓòÉΓòÉ 17.1. Device-Independent to Device-Dependent IDC Interfaces ΓòÉΓòÉΓòÉ
  12805.  
  12806. The IDC interfaces provided by the device-independent-device driver are: 
  12807.  
  12808.    o  Process Packet 
  12809.    o  Disable Support 
  12810.  
  12811.  
  12812. ΓòÉΓòÉΓòÉ 17.1.1. Process Packet ΓòÉΓòÉΓòÉ
  12813.  
  12814. This interface is called by the device-dependent-driver when it completes 
  12815. receiving and formatting Touch device data into the shared data buffer address, 
  12816. so that the data can be processed by the device-independent driver. 
  12817.  
  12818. Input: 
  12819.  
  12820. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  12821.  
  12822. AX = Function Request Code = 0001H
  12823. SI = Shared data buffer offset
  12824. DS = Device-independent driver's DS value
  12825. ES = Device-dependent driver's DS value (caller)
  12826. BX,CX,DX, and DI register contents are undefined
  12827.  
  12828. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  12829.  
  12830. Output: 
  12831.  
  12832. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  12833.  
  12834. AX = Error return code (if  Carry Set;
  12835.      undefined if Carry Clear)
  12836. DS = Device-independent driver's DS value
  12837. ES = Device-dependent driver's DS value (caller)
  12838. BX,CX,DX,SI and DI register contents are undefined
  12839.  
  12840. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  12841.  
  12842.  
  12843. ΓòÉΓòÉΓòÉ 17.1.2. Disable Support ΓòÉΓòÉΓòÉ
  12844.  
  12845. This interface is used by the device-dependent-device driver to inform the 
  12846. device-independent driver that it has received a Deinstall request and wants to 
  12847. release its system resources.  The device-independent driver cannot uninstall 
  12848. itself at this point, but it can disable the API interfaces. 
  12849.  
  12850. Input: 
  12851.  
  12852. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  12853.  
  12854. AX = Function Request Code = 0002H
  12855. DS = Device-independent driver's DS value
  12856. ES = Device-dependent driver's DS value (caller)
  12857. BX,CX,DX,SI and DI register contents are undefined
  12858.  
  12859. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  12860.  
  12861. Output: 
  12862.  
  12863. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  12864.  
  12865. AX = Error Return Code (if Carry Set;
  12866.      undefined if Carry Clear)
  12867. DS = Device-independent-driver's DS value
  12868. ES = Device-dependent-driver's DS value (caller)
  12869. BX,CX,DX,SI and DI register contents are undefined
  12870.  
  12871. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  12872.  
  12873.  
  12874. ΓòÉΓòÉΓòÉ 17.2. Device-Dependent to Device-Independent IDC Interface ΓòÉΓòÉΓòÉ
  12875.  
  12876. The IDC interface provided by the Touch component of the 
  12877. device-dependent-device driver is identical to that provided by a PS/2 Mouse 
  12878. device-dependent-driver, with two exceptions: Enable and Disable device 
  12879. functions do not enable or disable the device at the IRQ level, which would 
  12880. cause the Touch device to be enabled or disabled simultaneously.  The Enable 
  12881. and Disable device functions simply stop and start reporting of data to the 
  12882. device-independent driver. 
  12883.  
  12884. The IDC interface provided by the Touch component of the device-dependent 
  12885. device driver consists of the following functions: 
  12886.  
  12887.    o  Query Configuration 
  12888.    o  Enable Read 
  12889.    o  Disable Write 
  12890.    o  Enable Device 
  12891.    o  Disable Device 
  12892.    o  Set Mouse Emulation State 
  12893.  
  12894.  
  12895. ΓòÉΓòÉΓòÉ 17.2.1. Query Configuration ΓòÉΓòÉΓòÉ
  12896.  
  12897. Input: 
  12898.  
  12899. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  12900.  
  12901.      AX = Function Request Code = 0001H
  12902.      DI = Configuration data buffer offset
  12903.      DS = Device-dependent driver's DS value
  12904.      ES = Device-independent driver's DS value (caller)
  12905.      BX,CX,DX, and SI register contents are undefined
  12906.  
  12907. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  12908.  
  12909. ES:DI points to a data structure that is filled in by the device-dependent 
  12910. driver to convey configuration information back to the device-independent 
  12911. driver, according to the following format: 
  12912.  
  12913. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  12914.  
  12915.  
  12916.     config_data struc
  12917.  
  12918.                length    dw ?  ; length (inclusive) of structure in bytes
  12919.                irq_num   db ?  ; interrupt request level for device
  12920.                mou_stat  dw ?  ; mouse device status flags
  12921.                                ; bit 0 =1 Physical PS/2 mouse attached
  12922.                                ; bit 1 =1 Device independent driver attached
  12923.                                ; bit 2 =1 Protected mode emulation enabled
  12924.                                ; bit 3 =1 Real mode emulation enabled
  12925.                tou_stat  dw ?  ; touch device status flags
  12926.                                ; bit 0 =1 Touch device calibrated
  12927.  
  12928.         config_data ends
  12929.  
  12930. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  12931.  
  12932. Output: 
  12933.  
  12934. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  12935.  
  12936.      AX = Error return code (if Carry Set, undefined if Carry Clear)
  12937.      DI = Configuration data buffer offset
  12938.      ES = Device-independent driver's DS value (caller)
  12939.      BX,CX,DX,SI and DS register contents are undefined
  12940.  
  12941. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  12942.  
  12943.  
  12944. ΓòÉΓòÉΓòÉ 17.2.2. Enable Read ΓòÉΓòÉΓòÉ
  12945.  
  12946. This function is issued by the device-independent driver to indicate that data 
  12947. packet processing has been set up and data transfer can begin. 
  12948.  
  12949. Input: 
  12950.  
  12951. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  12952.  
  12953.      AX = Function Request code = 0002H
  12954.      DI = Shared interrupt data buffer offset
  12955.      DS = Device-dependent driver's DS value
  12956.      ES = Device-independent driver's DS value (caller)
  12957.      BX,CX,DX, and SI register contents are undefined
  12958.  
  12959. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  12960.  
  12961. ES:DI points to the interrupt data packet structure in which the called device 
  12962. driver will write/return the touch data packet when a complete packet has been 
  12963. accumulated. 
  12964.  
  12965. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  12966.  
  12967.  
  12968.         touch_data struc
  12969.  
  12970.                     status    dw ?  ; touch display status
  12971.                     x_coord   dw ?  ; x coordinate of touch
  12972.                     y_coord   dw ?  ; y coordinate of touch
  12973.                     z_coord   dw ?  ; z coordinate of touch
  12974.                     x_range   dw ?  ; Xmax - Xmin
  12975.                     y_range   dw ?  ; Ymax - Ymin
  12976.                     z_range   dw ?  ; Zmax - Zmin
  12977.  
  12978.         touch_data ends
  12979.  
  12980. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  12981.  
  12982. Note:  X,Y,Z coordinates are reported in fixed 4096x4096x255 coordinate space. 
  12983.        X increases left to right; Y increases top to bottom. 
  12984.  
  12985.  Output: 
  12986.  
  12987.   ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  12988.  
  12989.        AX = Error return code (if Carry Set, undefined if Carry Clear)
  12990.        ES = Device-independent driver's DS value (caller)
  12991.        BX,CX,DX,SI,DI and DS register contents are undefined
  12992.  
  12993.   ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  12994.  
  12995.  
  12996. ΓòÉΓòÉΓòÉ 17.2.3. Disable Write ΓòÉΓòÉΓòÉ
  12997.  
  12998. This function is called by the device-independent driver to indicate that data 
  12999. packet processing is no longer supported and that data transfers by way of 
  13000. Process Packet should be stopped until an Enable Read request is processed. 
  13001. Following this call, no further references should be made to the shared 
  13002. interrupt data buffer address previously provided by way of the last Enable 
  13003. Read request. 
  13004.  
  13005. Input: 
  13006.  
  13007. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  13008.  
  13009.      AX = Function Request code = 0003H
  13010.      DS = Device-dependent driver's DS value
  13011.      ES = Device-independent driver's DS value (caller)
  13012.      BX,CX,DX,SI and DI register contents are undefined
  13013.  
  13014. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  13015.  
  13016. Output: 
  13017.  
  13018. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  13019.  
  13020.      AX = Error return code (if Carry Set, undefined if Carry Clear)
  13021.      ES = Device-independent driver's DS value (caller)
  13022.      BX,CX,DX,SI,DI and DS register contents are undefined
  13023.  
  13024. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  13025.  
  13026.  
  13027. ΓòÉΓòÉΓòÉ 17.2.4. Enable Device ΓòÉΓòÉΓòÉ
  13028.  
  13029. This function is used to enable touch data event reporting from the 
  13030. device-dependent driver to the device-independent driver.  It does not affect 
  13031. interrupt data processing at the IRQ level (which is shared between PS/2 Mouse 
  13032. and Touch devices); therefore, mouse data event processing and reporting is not 
  13033. affected. 
  13034.  
  13035. Input: 
  13036.  
  13037. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  13038.  
  13039.      AX = Function Request code = 0004H
  13040.      DS = Device-dependent driver's DS value
  13041.      ES = Device-independent driver's DS value (caller)
  13042.      BX,CX,DX,SI and DI register contents are undefined
  13043.  
  13044. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  13045.  
  13046. Output: 
  13047.  
  13048. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  13049.  
  13050.      AX = Error return code (if carry set, undefined if carry clear)
  13051.      ES = device independent driver's DS value (caller)
  13052.      BX,CX,DX,SI,DI and DS register contents are undefined
  13053.  
  13054. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  13055.  
  13056. *================================================================== 
  13057.  
  13058.  
  13059. ΓòÉΓòÉΓòÉ 17.2.5. Disable Device ΓòÉΓòÉΓòÉ
  13060.  
  13061. This function is used to disable Touch data event reporting from the 
  13062. device-dependent driver to the device-independent driver.  It does not affect 
  13063. interrupt data processing at the IRQ level (which is shared between PS/2 Mouse 
  13064. and Touch devices); therefore, mouse data event processing and reporting is not 
  13065. affected. 
  13066.  
  13067. Input: 
  13068.  
  13069. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  13070.  
  13071.      AX = Function Request code = 0004H
  13072.      DS = Device-dependent driver's DS value
  13073.      ES = Device-independent driver's DS value (caller)
  13074.      BX,CX,DX,SI and DI register contents are undefined
  13075.  
  13076. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  13077.  
  13078. Output: 
  13079.  
  13080. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  13081.  
  13082.      AX = Error return code (if Carry Set, undefined if Carry Clear)
  13083.      ES = Device-independent driver's DS value (caller)
  13084.      BX,CX,DX,SI,DI and DS register contents are undefined
  13085.  
  13086. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  13087.  
  13088.  
  13089. ΓòÉΓòÉΓòÉ 17.2.6. Set Mouse Emulation State ΓòÉΓòÉΓòÉ
  13090.  
  13091. This function is used to control the way touch data packets are handled by the 
  13092. device-dependent driver.  When emulation mode is set to Off, touch data packets 
  13093. are reported to the Touch device-independent driver only as direct X,Y,Z data 
  13094. packets.  When mouse emulation mode is set to absolute, the touch data packet 
  13095. is additionally converted into a mouse data packet of absolute X,Y form, and 
  13096. reported to the mouse device-independent driver by way of its Process Packet 
  13097. Absolute IDC entry point.  When mouse emulation mode is set to relative, the 
  13098. touch data packet is additionally converted into a mouse data packet of 
  13099. relative dx,dy form, and reported to the mouse device-independent driver by way 
  13100. of its standard Process Packet IDC entry point. 
  13101.  
  13102. Input: 
  13103.  
  13104. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  13105.  
  13106.      AX = Function Request code = 0006H
  13107.      BX = Emulation mode (0=off 1=absolute 2=relative)
  13108.      DS = Device-dependent driver's DS value
  13109.      ES = Device-independent driver's DS value (caller)
  13110.      CX,DX,DI and SI register contents are undefined
  13111.  
  13112. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  13113.  
  13114. Output: 
  13115.  
  13116. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  13117.  
  13118.      AX = Error return code (if Carry Set, undefined if Carry Clear)
  13119.      ES = Device-independent driver's DS value (caller)
  13120.      BX,CX,DX,DI,SI and DS register contents are undefined
  13121.  
  13122. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  13123.  
  13124.  
  13125. ΓòÉΓòÉΓòÉ 17.3. Communications from Physical Device Driver to Virtual Device Driver ΓòÉΓòÉΓòÉ
  13126.  
  13127. The physical device driver (PDD) uses touch data packets to communicate with 
  13128. the virtual device driver (VDD).  While the virtual mouse device driver can 
  13129. receive mouse data from the Presentation Manager that is correctly adjusted for 
  13130. DOS window sizes and positions, the same is not true for touch data.  Normally, 
  13131. therefore, a DOS session receives touch data only when it is running full 
  13132. screen (that is, a non-PM foreground session).  In a PM session, all touch data 
  13133. is used to form emulated mouse packets and is reported to the physical mouse 
  13134. device driver.  The virtual mouse device driver then receives the emulated 
  13135. mouse data by way of the normal PM route (or physical driver route if exclusive 
  13136. mouse access in On). 
  13137.  
  13138. The exclusive touch access DOS property, however, permits a DOS window to 
  13139. receive all touch data when running in a PM session. The DOS window must be 
  13140. running maximized (except for text-mode applications where maximizing a window 
  13141. does not cover the full screen) in order to run without modification. 
  13142. Otherwise, the application has to perform the coordinate conversions itself, an 
  13143. impossible task for a DOS program because it has no knowledge of or access to 
  13144. window position and size information. 
  13145.  
  13146. The VDD entry point is passed to the PDD when the VDD calls VDHOpenPDD with the 
  13147. 16:16 address of VTEventProc as a parameter, as shown in the following code: 
  13148.  
  13149.  
  13150. ΓòÉΓòÉΓòÉ 17.3.1. VTEventProc Function 1 - Process Packet/Event ΓòÉΓòÉΓòÉ
  13151.  
  13152. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  13153.  
  13154. /*     VTEventProc - Process event packets from PDD.
  13155.  *
  13156.  *  ENTRY
  13157.  *     ulFunc == function code (VTDCMD_REPORT_EVENT)
  13158.  *     f16p1 -> MONREC
  13159.  *     f16p2 -  Not used.
  13160.  *
  13161.  *  EXIT
  13162.  *     None.
  13163.  *
  13164.  *  USES
  13165.  *     32-bit small-model PASCAL calling/register conventions
  13166.  *
  13167.  *  CONTEXT
  13168.  *     Interrupt time
  13169.  *
  13170.  *  PSEUDOCODE
  13171.  *     If handle and pointer are valid and touch is enabled,
  13172.  *         add the event to the VDE's buffer.
  13173.  */
  13174.  
  13175.  VOID     VDDENTRY VTEventProc(ULONG ulFunc, F16PVOID f16p1, F16PVOID f16p2;
  13176.  
  13177. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  13178.  
  13179. The MONREC pointer points to a structure, as shown in the following example: 
  13180.  
  13181. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  13182.  
  13183. /*    + PTD-to-VTD communication structures
  13184.  *
  13185.  */
  13186.  
  13187. typdef struct {                                // VTDCMD_REPORT_EVENT
  13188.        USHORT            Status;
  13189.        ULONG             TimeStamp;
  13190.        USHORT            x;
  13191.        USHORT            y;
  13192.        USHORT            z;
  13193.     }  QEVENT, * PQEVENT, * *  PPQEVENT;
  13194.  
  13195. typedef struct {
  13196.             USHORT       SGId;
  13197.             QEVENT       Qevent;
  13198.     } MONREC, * PMONREC;
  13199.  
  13200. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  13201.  
  13202.  
  13203. ΓòÉΓòÉΓòÉ 17.4. Virtual Device Driver to Physical Device Driver Communication ΓòÉΓòÉΓòÉ
  13204.  
  13205. The primary function of this interface is to register the VDD with the PDD so 
  13206. that, later, the VDD can call the PDD back with data, establish the 
  13207. configuration setup (for example, physical mouse is attached or not, Touch 
  13208. display is calibrated or not, and so forth), and device control (such as 
  13209. emulation On or Off, DOS property exclusive access On or Off, and so forth). 
  13210.  
  13211. The following functions are supported: 
  13212.  
  13213.       Register VDD 
  13214.       Query configuration 
  13215.       Set emulation state 
  13216.       Disable 
  13217.       Set exclusive access 
  13218.  
  13219.  
  13220. ΓòÉΓòÉΓòÉ 17.4.1. Function 0:  Register VDD - PddRegister ΓòÉΓòÉΓòÉ
  13221.  
  13222. Establishes the VDD entry point for the PDD to call the VDD. 
  13223.  
  13224. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  13225.  
  13226. /*      PddRegisterVdd - Called when Vdd calls VDHOpenPDD()
  13227.  *
  13228.  *  Input:
  13229.  *       USHORT  pIBuff.off        VDD's CS
  13230.  *       USHORT  pIBuff.sel        Zero
  13231.  *       USHORT  pOBuff.off        Low 16 bits of EIP for VDD entry point
  13232.  *       USHORT  pOBuff.sel        High 16 bits of EIP for VDD entry point
  13233.  *
  13234.  *  Return:
  13235.  *       BOOL success (AX)
  13236.  *
  13237.  *  Usage:
  13238.  *       Success = PddEntry( 0, VddEntrySelector, VddEntryOffset);
  13239.  *
  13240.  *  Called from:
  13241.  *       PddEntry (seg3) via VdhOpenPdd()
  13242.  *
  13243.  */
  13244.  
  13245. STATIC VDMFUNC PddQueryConfig( PUSHORT pOFubb);
  13246.  
  13247. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  13248.  
  13249.  
  13250. ΓòÉΓòÉΓòÉ 17.4.2. Function 1:  Query Configuration - PddQueryConfig ΓòÉΓòÉΓòÉ
  13251.  
  13252. Returns device configuration information, including device interrupt request 
  13253. (IRQ) level, mouse status (physical mouse present, MOUSE.SYS driver attached 
  13254. and emulation state) and touch status (calibrated or not). 
  13255.  
  13256. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  13257.  
  13258. /*      PddQueryConfig - Copy device config data to a vdd 16:16 ptr
  13259.  *
  13260.  *  Input:
  13261.  *       None.
  13262.  *
  13263.  *  Return:
  13264.  *       Configuration data:
  13265.  *               USHORT  size = 7
  13266.  *               UCHAR   irq
  13267.  *               USHORT  mouse status
  13268.  *               USHORT  touch status
  13269.  *       BOOL success (AX)
  13270.  *
  13271.  *  Usage:
  13272.  *       Success = PddEntry( 1, NULL, &ParmsAddr);
  13273.  *
  13274.  *  Called from:
  13275.  *       PddEntry (seg3) [QueryType(&TouHardware)]
  13276.  */
  13277.  
  13278. STATIC VDMFUNC PddQueryConfig( PUSHORT pOBuff);
  13279.  
  13280. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  13281.  
  13282.  
  13283. ΓòÉΓòÉΓòÉ 17.4.3. Function 2:  Set Emulation State - PddSetEmul ΓòÉΓòÉΓòÉ
  13284.  
  13285. Used to switch mouse emulation in the DOS virtual machine Off or On 
  13286. (relative/glass mouse or absolute). 
  13287.  
  13288. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  13289.  
  13290. /*      PddSetEmul - Set emulation state
  13291.  *
  13292.  *  Input:
  13293.  *       Emulation data:
  13294.  *              USHORT  size = 3
  13295.  *              UCHAR   emul state (0 - off, 1 - absolute, 2 - glass)
  13296.  *
  13297.  *  Return:
  13298.  *       BOOL success (AX)
  13299.  *
  13300.  *  Usage:
  13301.  *       Success = PddEntry( 2, &DataAddr, NULL);
  13302.  *
  13303.  *  Called from:
  13304.  *       PddEntry (seg3)
  13305.  */
  13306.  
  13307. STATIC VDMFUNC PddSetEmul( PUSHORT pIBuff);
  13308.  
  13309. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  13310.  
  13311.  
  13312. ΓòÉΓòÉΓòÉ 17.4.4. Function 3:  Disable - PddDisable ΓòÉΓòÉΓòÉ
  13313.  
  13314. Used to get information from the VDD that it is unable to load or get from the 
  13315. PDD. 
  13316.  
  13317. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  13318.  
  13319. /*      PddDisable -
  13320.  *  Input:
  13321.  *       None.
  13322.  *
  13323.  *  Return:
  13324.  *       BOOL success (AX)
  13325.  *
  13326.  *  Usage:
  13327.  *       Success = PddEntry( 3, NULL, NULL);
  13328.  *
  13329.  *  Called from:
  13330.  *       PddEntry (seg3)
  13331.  */
  13332.  
  13333. STATIC VDMFUNC PddDisable(VOID);
  13334.  
  13335. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  13336.  
  13337.  
  13338. ΓòÉΓòÉΓòÉ 17.4.5. Function 4:  Set exclusive access On/Off - PddSetExclAcc ΓòÉΓòÉΓòÉ
  13339.  
  13340. Enables a DOS window to receive full-screen touch data.  (Valid for the PM 
  13341. session only.)  Mouse emulation is effectively turned Off when exclusive access 
  13342. is on. 
  13343.  
  13344. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  13345.  
  13346. /*      PddSetExclAcc - Set exclusive access On/Off
  13347.  *
  13348.  *  Input:
  13349.  *       Exclusive Access Data:
  13350.  *               USHORT  size = 3
  13351.  *               UCHAR   exclusive access flag (0 - off, 1 - on)
  13352.  *
  13353.  *  Return:
  13354.  *       BOOL success (AX)
  13355.  *
  13356.  *  Usage:
  13357.  *       Success = PddEntry( 4,&DataAddr, NULL);
  13358.  *
  13359.  *  Called from:
  13360.  */
  13361.  
  13362. STATIC VDMFUNC PddSetExclAcc( PUSHORT pIBuff);
  13363.  
  13364. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  13365.  
  13366.  
  13367. ΓòÉΓòÉΓòÉ 17.5. Virtual Touch Device Driver Architecture ΓòÉΓòÉΓòÉ
  13368.  
  13369. The following information describes the Virtual Touch Device Driver 
  13370. Architecture. 
  13371.  
  13372.  
  13373. ΓòÉΓòÉΓòÉ 17.5.1. INT 7Fh Software Interrupt and Function Table Call Handling ΓòÉΓòÉΓòÉ
  13374.  
  13375. Following is the sequence of events when a real-mode program issues a software 
  13376. interrupt that has been hooked by a VDD: 
  13377.  
  13378.    1. At create time, VDD installs an interrupt vector hook 
  13379.       (InstallHookVect()). 
  13380.  
  13381.    2. The interrupt vector table gets patched with Address A. 
  13382.  
  13383.    3. Address A points to an illegal real-mode instruction (ARPL). 
  13384.  
  13385.    4. The software interrupt causes transfer to Address A. 
  13386.  
  13387.    5. The execution of the ARPL located there causes a trap. 
  13388.  
  13389.    6. The OS/2 operating system fields the trap. 
  13390.  
  13391.    7. OS/2 hooks into the list of procedures registered for this trap by way of 
  13392.       InstallHookVect and calls each one in turn. 
  13393.  
  13394.    8. The hook procedures get passed a pointer to Client Register Frame (CRF). 
  13395.  
  13396.    9. The hook procedures process the call, based on registers passed in the 
  13397.       CRF. 
  13398.  
  13399.   10. If the hook procedures interrupt, they call VDHPopInt(), which fills in 
  13400.       the return CS:IP in the CRF. 
  13401.  
  13402.   11. The hook procedures return TRUE if they are interrupted; else, FALSE. 
  13403.  
  13404.   12. OS/2 calls the next procedure in the chain if FALSE; else, it returns to 
  13405.       CS:IP as filled in the CRF. 
  13406.  
  13407.  See the following figure for the route from a real-mode application to the 
  13408.  protect-mode VDD handler. 
  13409.  
  13410.  
  13411.                REAL                                PROTECTED
  13412.                                    ARPL OS/2
  13413.                Interrupt          ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ                  Hook Proc 1
  13414.                Vector Table       Γöé Γöé        Γöé                ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  13415.               ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ     Γöé   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ  ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ             Γöé
  13416.               Γöé             Γöé     Γöé Γöé Γöé   ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ  Γö£ΓöÇΓöÇΓöÿ ΓöÇΓöÇΓöÉ Γöé             Γöé
  13417.               Γöé             Γöé     Γöé   Γöé   ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ  Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ Γöé Γöé             Γöé
  13418.               Γöé             Γöé     Γöé Γöé Γöé            ΓöÇΓöÇΓöÇΓöÉ Γöé Γöé Γöé             Γöé
  13419.               Γöé             Γöé     Γöé   Γöé            Γöé   Γöé Γöé Γöé Γöé             Γöé
  13420.               Γöé             Γöé     Γöé Γöé Γöé            Γöé   Γöé Γöé Γöé Γöé             Γöé
  13421.               Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ     Γöé   Γöé   ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ  Γöé   Γöé Γöé Γöé Γöé             Γöé
  13422.    INT 7F  ΓöîΓöÇΓöÇΓöñ  Address B  Γöé     Γöé Γöé ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ   Γöé Γöé Γöé Γöé             Γöé
  13423.            Γöé  Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ     Γöé   List of           Γöé Γöé ΓööΓöÇΓöñ             Γöé
  13424.            Γöé  Γöé             Γöé     Γöé Γöé Installed         Γöé Γöé   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  13425.    Router  Γöé  ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ     Γöé   IntHooks          Γöé Γöé     Hook Proc 2
  13426.            Γöé                      Γöé Γöé                   Γöé Γöé   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  13427.            Γöé  ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ     Γöé                     Γöé ΓööΓöÇΓöÇΓöÇ             Γöé
  13428.            Γöé  Γöé             Γöé     Γöé Γöé                   Γöé     Γöé             Γöé
  13429.            Γöé  Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ     Γöé                     Γöé     Γöé             Γöé
  13430.            Γöé  Γöé  Address A  Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ Γöé                   Γöé     Γöé             Γöé
  13431.            Γöé  Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ     Γöé                     Γöé     Γöé             Γöé
  13432.    INT 7F  Γöé  Γöé             ΓöÇΓöÇΓöÉ  Γöé Γöé                   Γöé     Γöé             Γöé
  13433.    Handler Γöé  Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ  Γöé  Γöé                     Γöé     Γöé             Γöé
  13434.            ΓööΓöÇΓöÇ             Γöé  Γöé  Γöé Γöé                   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ             Γöé
  13435.    INT 7F     Γöé             Γö£ΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÿ                           ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  13436.    Jump       Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ  Γöé    Γöé
  13437.    Table      Γöé   ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ  Γö£ΓöÇΓöÇΓöÿ
  13438.               Γöé   ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ  Γöé       Γöé
  13439.               Γöé   ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ  Γöé
  13440.               Γöé            Γöé       Γöé
  13441.               Γöé            Γöé
  13442.               Γöé            Γöé       Γöé
  13443.               Γöé   ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ  Γöé
  13444.               ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ       Γöé
  13445.  
  13446.  With the IBM Touch Display, the interface to the device driver is by way of a 
  13447.  call table, the address of which the application obtains by issuing INT 7F 
  13448.  with AX=ABCDH and BX=0H. When it has obtained the call table address (CTA), it 
  13449.  then calls the individual function it requires by calling the address at (CTA) 
  13450.  + 4*(FN-1), where FN is the required device driver function number. This 
  13451.  cannot be done in the previous sequence, however, because calls cannot be made 
  13452.  directly from the DOS (real-mode) application to the OS/2 (protect-mode) VDD. 
  13453.  
  13454.  The mouse INT 33 driver has a related problem in that it has a BASIC entry 
  13455.  point located 2 bytes forward of the actual INT 33 vector address. (The first 
  13456.  instruction of the INT 33 handler is a jump over the BASIC entry point code.) 
  13457.  Therefore, a BASIC application would obtain Address A and then call (Address A 
  13458.  + 2), which could be anything. 
  13459.  
  13460.  To resolve this, the VDD must have a real-mode portion that has a software 
  13461.  interrupt handler similar to that provided by the DOS driver. Address A, then, 
  13462.  is replaced by the address of this handler (Address B) by the VDD at create 
  13463.  time, as well as saving Address A in real-mode. 
  13464.  
  13465.  For the particular case of the IBM Touch Display driver, the call table also 
  13466.  must be part of the real-mode portion, enabling calls to its entries to be 
  13467.  made directly by real-mode applications, with the interrupt handler setting 
  13468.  the address of the table in ES:BX as in the real DOS driver, before calling 
  13469.  Address A. If the handler received a call that did not belong to it (AX 
  13470.  !=ABCDH), then it would call Address A directly. 
  13471.  
  13472.  The entries in the call table then consist of a common call into a router. The 
  13473.  router determines the function number from the address from which it was 
  13474.  called, then sets up the registers appropriately before calling Address A, as 
  13475.  shown in the following figure. 
  13476.  
  13477.  
  13478.             REAL                                PROTECTED
  13479.                                 ARPL OS/2
  13480.             Interrupt          ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ                  Hook Proc 1
  13481.             Vector Table       Γöé Γöé        Γöé                ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  13482.            ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ     Γöé   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ  ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ             Γöé
  13483.            Γöé             Γöé     Γöé Γöé Γöé   ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ  Γö£ΓöÇΓöÇΓöÿ ΓöÇΓöÇΓöÉ Γöé             Γöé
  13484.            Γöé             Γöé     Γöé   Γöé   ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ  Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ Γöé Γöé             Γöé
  13485.            Γöé             Γöé     Γöé Γöé Γöé            ΓöÇΓöÇΓöÇΓöÉ Γöé Γöé Γöé             Γöé
  13486.            Γöé             Γöé     Γöé   Γöé            Γöé   Γöé Γöé Γöé Γöé             Γöé
  13487.            Γöé             Γöé     Γöé Γöé Γöé            Γöé   Γöé Γöé Γöé Γöé             Γöé
  13488.            Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ     Γöé   Γöé   ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ  Γöé   Γöé Γöé Γöé Γöé             Γöé
  13489.    INT 7F  Γöé  Address B  Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ Γöé ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ   Γöé Γöé Γöé Γöé             Γöé
  13490.            Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ         List of           Γöé Γöé ΓööΓöÇΓöñ             Γöé
  13491.            Γöé             Γöé       Γöé Installed         Γöé Γöé   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  13492.            ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ         IntHooks          Γöé Γöé     Hook Proc 2
  13493.                                  Γöé                   Γöé Γöé   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  13494.                                                      Γöé ΓööΓöÇΓöÇΓöÇ             Γöé
  13495.                                  Γöé                   Γöé     Γöé             Γöé
  13496.                                                      Γöé     Γöé             Γöé
  13497.                                  Γöé                   Γöé     Γöé             Γöé
  13498.                                                      Γöé     Γöé             Γöé
  13499.                                  Γöé                   Γöé     Γöé             Γöé
  13500.                                                      Γöé     Γöé             Γöé
  13501.                                  Γöé                   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ             Γöé
  13502.                                                            ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  13503.  
  13504.  
  13505. ΓòÉΓòÉΓòÉ 17.6. Physical Touch Device Driver - Virtual Touch Device Driver Interface ΓòÉΓòÉΓòÉ
  13506.  
  13507. The physical Touch device driver - virtual Touch device driver interface is 
  13508. very similar to the physical Mouse device driver - virtual Mouse device driver 
  13509. interface, except that it passes absolute Touch X,Y,Z status data instead of 
  13510. Mouse row,column,status data. 
  13511.  
  13512. The physical Touch device driver is aware at all times of which session owns 
  13513. the Touch device: When it is a foreground DOS session, it notifies the virtual 
  13514. Touch device driver of the touch events, which are immediately buffered in the 
  13515. virtual driver. The virtual driver then processes the event by updating the INT 
  13516. 7h data structures for the foreground DOS session, as well as handling the 
  13517. touch event user subroutine, if one is registered. 
  13518.  
  13519. Notice that the specific-case Presentation Manager session is handled 
  13520. differently in the case of the mouse, where the event is sent to the PM single 
  13521. queue by the physical mouse driver. From there, PM notifies the DOS session 
  13522. whenever the mouse pointer is over a windowed DOS session, and performs 
  13523. coordinate conversion on behalf of the windowed session. Also, if an alternate 
  13524. mouse coordinate system is set up in the DOS session, the session must discard 
  13525. any events posted by PM that fall outside the coordinate system but, otherwise, 
  13526. are within the session window. 
  13527.  
  13528. The Touch Display and its virtual Touch device driver do not have any such 
  13529. relationship between the device and PM, nor is there any architected mechanism 
  13530. for it to do so, because the single queue supports only keyboard and mouse 
  13531. events. This prevents the virtual Touch driver from providing full touch data 
  13532. for windowed DOS sessions or for supporting the Tdixxx API properly for VIO 
  13533. windows. 
  13534.  
  13535. When a touch event is received while in a PM session, the physical device 
  13536. driver can handle the event only as though it were a normal full-screen OS/2 
  13537. session; in other words, the event passes through the device monitor chain 
  13538. before being buffered in the physical device driver queue. This is because the 
  13539. physical device driver has no information regarding the arrangement of the PM 
  13540. Desktop, location and size of windowed DOS sessions, and so forth, to enable it 
  13541. to directly inform the virtual device driver of the event (correctly tagged, 
  13542. with the target DOS session handle and coordinates converted). 
  13543.  
  13544.  
  13545. ΓòÉΓòÉΓòÉ 17.6.1. Event Notification ΓòÉΓòÉΓòÉ
  13546.  
  13547. Each time the virtual Touch device driver is notified of a touch event, it 
  13548. might have to notify a DOS session user subroutine. This depends on whether the 
  13549. DOS session has a user subroutine registered by way of INT 7Fh, and whether the 
  13550. call mask conditions match the event. 
  13551.  
  13552. The user subroutine is called by simulating an interrupt into the DOS session. 
  13553. An interrupt service routine (in the virtual Touch driver) is loaded into each 
  13554. DOS session at create time. This routine services an interrupt (PopInt, 
  13555. ClearIRR, issues SendVEOI, PushRegs), sets up a CRF containing the appropriate 
  13556. values of the registers, and then performs a VDHPushFarCall to the user 
  13557. subroutine.  The routine also arms a return hook procedure to gain control 
  13558. after the user subroutine has completed.  When the context of the DOS session 
  13559. next becomes current, it executes the user subroutine.  When the return hook 
  13560. procedure gains control again, it performs only a PopRegs. 
  13561.  
  13562. The interrupt number chosen for simulation is the hardware interrupt being used 
  13563. by the physical device driver. For 8516, this is IRQ 12, the same as for the 
  13564. PS/2 Mouse, depending on the ability to choose an interrupt number that will 
  13565. not conflict with another virtual device driver. 
  13566.  
  13567. The 8516 Touch device and the PS/2 Mouse can simulate and service their own 
  13568. interrupts separately while using the same IRQ 12h, INT 74h. The virtual PIC 
  13569. driver will be able to handle interrupt simulations separately on the same 
  13570. interrupt (function 74h) for both the DOS session and the virtual Touch driver, 
  13571. but it will require that IRQ 12h, INT 74h is handled as a shared interrupt in 
  13572. the VDDs that simulate and service this interrupt. 
  13573.  
  13574.  
  13575. ΓòÉΓòÉΓòÉ 17.7. Algorithms to Improve Touch Selection ΓòÉΓòÉΓòÉ
  13576.  
  13577. In addition to the straightforward way of setting the selection-detection flag 
  13578. on Push Harder or Lift Off (where the snapshot X,Y value when crossing a given 
  13579. Z threshold is used directly), the X,Y,Z packets can be further processed to 
  13580. enhance the repeatability and accuracy of the X,Y report. Following is a list 
  13581. of these data processing algorithms: 
  13582.  
  13583.    o  Single-touch 
  13584.  
  13585.    o  Stable region (also called Back-in-the-Stack algorithm) 
  13586.  
  13587.       The algorithms are activated by setting the appropriate bit in the 
  13588.       selection-detection mechanism Type parameter of Function 6 "Set Selection 
  13589.       Mechanism".  Only one algorithm can be active at any given time, in 
  13590.       either Push Harder or Lift Off modes. 
  13591.  
  13592.    o  Click locking 
  13593.  
  13594.       Click locking was introduced primarily to facilitate the Presentation 
  13595.       Manager's mouse-emulation mode,  but it was found equally useful in the 
  13596.       DOS environment. 
  13597.  
  13598.  
  13599. ΓòÉΓòÉΓòÉ 17.7.1. Accuracy of the X,Y Report ΓòÉΓòÉΓòÉ
  13600.  
  13601. Touch accuracy (or lack of it) is a primary reason for the need to improve 
  13602. Touch selection.  There are many factors that affect Touch accuracy, including: 
  13603.  
  13604.    o  Style of touch 
  13605.  
  13606.       As the screen is touched, from the point of touch down to lift off, there 
  13607.       can be appreciable movement of the reported X,Y position, even though the 
  13608.       intent is to keep the contact point stationary. This can depend on the 
  13609.       way the screen is touched; for example, a rapid stab at the screen 
  13610.       ordinarily produces more variation than a slower, lighter touch. 
  13611.  
  13612.    o  On-screen touch threshold 
  13613.  
  13614.       Lowering the on-screen touch threshold makes the system not only more 
  13615.       sensitive to touch but also to external unwanted noise, such as 
  13616.       mechanical vibration. 
  13617.  
  13618.    o  Filter cut-off frequency 
  13619.  
  13620.       Increasing the system's low pass cut-off frequency can increase the 
  13621.       system's responsiveness to fast touches, but it does so at the expense of 
  13622.       not being able to filter out unwanted noise, variation, and movement. 
  13623.  
  13624.  
  13625. ΓòÉΓòÉΓòÉ 17.8. Single-Touch Algorithm ΓòÉΓòÉΓòÉ
  13626.  
  13627. The single touch algorithm is designed to provide more consistent touch-down 
  13628. X,Y coordinates over a wide range of applied touch speed and pressure. 
  13629.  
  13630. The single-touch algorithm prevents the snapshot X,Y data (taken at the first 
  13631. point of contact) being used when the subsequent data reports are moving away 
  13632. rapidly from the initial position.  Rather, it ensures that the data reports 
  13633. have settled within a consistent area for a given number of reports.  The size 
  13634. of the area and number of reports are determined by additional (optional) 
  13635. parameters. 
  13636.  
  13637. The algorithm checks each point against the subsequent point; if the second 
  13638. differs from the first by an amount within the defined tolerance, a count is 
  13639. incremented.  If not, the count is set to 0. Only when the count reaches the 
  13640. defined minimum is the data considered settled and the X,Y report given with 
  13641. the status of selection detected. 
  13642.  
  13643. As the number of reports and tolerance parameters are tightened, so is the 
  13644. requirement for more controlled, slow, and deliberate touches.  Lightly tapping 
  13645. or quickly stabbing the screen are less likely to trigger the algorithm, 
  13646. because of either insufficient data or too much variation within the data.  For 
  13647. this reason, this algorithm is less likely to be of use in an untrained user or 
  13648. public kiosk type of environment where user frustration could result. 
  13649. Applications designed for such environments generally can avoid the effects of 
  13650. inaccuracy and repeatability by having more simply designed screens with large, 
  13651. widely spaced targets. 
  13652.  
  13653.  
  13654. ΓòÉΓòÉΓòÉ 17.8.1. Pseudocode for the Single-Touch Algorithm ΓòÉΓòÉΓòÉ
  13655.  
  13656. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  13657.  
  13658.  
  13659.   If     status == touch-down
  13660.          single_touch X,Y = current X,Y
  13661.          touch_detected = single_touch_sent = FALSE
  13662.          count = RESET_VALUE
  13663.          return()
  13664.  
  13665.   If     status == on_screen
  13666.          if     selection_method == lift_off
  13667.                 return()
  13668.  
  13669.          update_single_touch_xy()
  13670.  
  13671.          if     signal_touch_sent == FALSE && touch_detected = TRUE
  13672.                 current X,Y = single_touch X,Y
  13673.                 signal_touch_sent = TRUE
  13674.                 return()
  13675.  
  13676.   If     status == lift_off
  13677.          if     selection_method == lift_off
  13678.                 update_single_touch X,Y
  13679.                 current X,Y = single_touch X,Y
  13680.                 return()
  13681.  
  13682. Procedure update_single_touch_xy()
  13683.  
  13684.   if     absolute(current X,Y - single_touch X,Y) < tolerance
  13685.          single_touch X,Y = ( single_touch X,Y + current X,Y) / 2
  13686.          count --
  13687.          if  (count==0)
  13688.               set touch_detected
  13689.  
  13690.   else
  13691.          single_touch X,Y = current X,Y
  13692.          count = RESET_VALUE
  13693.   endif
  13694. endproc.
  13695.  
  13696. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  13697.  
  13698.  
  13699. ΓòÉΓòÉΓòÉ 17.9. Back-in-the-Stack Algorithm ΓòÉΓòÉΓòÉ
  13700.  
  13701. The Back-in-the-Stack (BIST) algorithm provides for detailed selection of an 
  13702. item (down to pel level at 640 x 480 resolution), even in the presence of 
  13703. varying X,Y data packets when the selection needs to be made. 
  13704.  
  13705. For example, it might be relatively easy to adjust the touch contact so that 
  13706. the required (small) item is identified, but then much more difficult to 
  13707. actually perform the selection, either by lifting off or pressing harder, 
  13708. without involuntarily moving the X,Y position and thereby selecting the wrong 
  13709. item. 
  13710.  
  13711. The BIST algorithm gets around this potential problem by exploiting the natural 
  13712. way in which such a selection would be made:  usually the touch contact 
  13713. position is adjusted until the required item is identified, held momentarily, 
  13714. then the selection gesture made. Thus, instead of taking the snapshot X,Y 
  13715. position at the time the gesture is recognized (the time that the Z value 
  13716. exceeds the push-harder threshold or a lift-off event status is reported), it 
  13717. looks back into a circular buffer (a form of stack containing the N most recent 
  13718. X,Y,Z reports, where the oldest contents are continually being overwritten by 
  13719. the newest) to find the plateau region where the touch was held on the required 
  13720. item. 
  13721.  
  13722. After having found a plateau region of sufficient length, the X,Y values of the 
  13723. data report containing the selection-detected status are taken from the average 
  13724. of the X,Y values of the reports in the stable region. In this way, the X,Y 
  13725. value reported is relatively immune to any variations that take place in X,Y 
  13726. between the actual finding of the item and trying to select it. The following 
  13727. figure illustrates this technique: 
  13728.  
  13729.  
  13730.     Γöé   *
  13731.  C  Γöé    **       *
  13732.  o  Γöé      *       *    *           *
  13733.  o  Γöé      *     *  **** ***** * *** *
  13734.  r  Γöé        *  *             * *     *
  13735.  d  Γöé          *                       *
  13736.  i  Γöé         *                         *
  13737.  n  Γöé                                    * *
  13738.  a  Γöé                                       *
  13739.  t  Γöé                                        *
  13740.  e  Γöé                                         *  <ΓöÇΓöÇΓöÇΓöÇ  Lift off
  13741.     Γöé
  13742.     ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  13743.  
  13744.         Γöé          Γöé               Γöé                              Time ΓöÇΓöÇΓöÇ>
  13745.          Manipulation   Hold on item  Select item by
  13746.          to identify    to select     lift off
  13747.          item
  13748.  
  13749. Notice the typical way in which the X,Y position tends to slide away from the 
  13750. required selection point (thereby making selection of the required item 
  13751. impossible by normal means) as the selection gesture is made by releasing the 
  13752. touch force. 
  13753.  
  13754. Without the BIST algorithm, the smallest size a selection item can be is 
  13755. restricted to approximately twice the anticipated X,Y movement, from selection 
  13756. to lift off. 
  13757.  
  13758. What the BIST algorithm provides, therefore, is the ability to track back 
  13759. through a short history of the data to determine that a selection point was, 
  13760. indeed, being held just prior to lift off.  In this way, the selection item 
  13761. size is limited by the amount of X,Y jitter while a touch is being held steady. 
  13762.  
  13763. An alternative use for the BIST algorithm is cancelling a selection when, 
  13764. otherwise, cancellation would be inevitable:  this is the case where the 
  13765. selection method is lift off, and there is no dead area on the screen for the 
  13766. user to move to and lift off without selecting anything.  Wherever the user 
  13767. decides to lift off, something will be selected.  What, then, does the user do 
  13768. if the screen is touched by accident, or touched, followed by a decision to 
  13769. cancel the operation? 
  13770.  
  13771. In either case, all the user must do is lift off in a long, exaggerated swiping 
  13772. motion.  This fills up the stack (circular buffer) with continually varying 
  13773. data so that there is no plateau region for the algorithm to find.  Detailed 
  13774. selection in the manner described, and/or the method of not-selecting, of 
  13775. course, is restricted to experienced users.  Both are operations that require 
  13776. some degree of practice, and in the case of the ability to not-select, the 
  13777. knowledge that the facility even exists (since a full-screen select-sensitive 
  13778. application screen, presumably, would leave no room for help instructions). 
  13779.  
  13780.  
  13781. ΓòÉΓòÉΓòÉ 17.9.1. Pseudocode for the Back-in-the-Stack Algorithm ΓòÉΓòÉΓòÉ
  13782.  
  13783. Main Routine 
  13784.  
  13785. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  13786.  
  13787.         If status == on-screen
  13788.            put X,Y into circular buffer
  13789.            If selection method == Lift Off
  13790.               Return()
  13791.            Else     /* Must be push harder */
  13792.               If ( z < Push Harder Threshold )
  13793.                  Return()
  13794.               Else
  13795.                  Call Send_Stable_Data
  13796.               Endif
  13797.            Endif
  13798.         Else
  13799.            If status == touch-down
  13800.               flush circular buffer
  13801.               clear flags
  13802.            Else     /* lift-off */
  13803.               If selection method == Lift Off
  13804.                  Call Send_Stable_Data()
  13805.               Endif
  13806.         Endif
  13807.  
  13808. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  13809.  
  13810. Send_stable_data 
  13811.  
  13812. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  13813.  
  13814.         Procedure Send_Stable_Data
  13815.            If already sent
  13816.               Return()
  13817.            Else
  13818.               Call Check_Buffer_For_Stable_Region()
  13819.               If Stable Region Detect flag
  13820.                  Current X,Y = Stable X,Y
  13821.                  Set flags
  13822.                  Return()
  13823.               Else
  13824.                  Return()
  13825.               Endif
  13826.            Endif
  13827.         EndProc
  13828.  
  13829. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  13830.  
  13831. Check_Buffer_For_Stable_Region 
  13832.  
  13833. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  13834.  
  13835.         Procedure Check_Buffer_For_Stable_Region
  13836.            Stable Ref Point X,Y = Buffer Head X,Y
  13837.            Reset count, buffer index
  13838.            While points left in buffer
  13839.               Get buffer X,Y
  13840.               If ( Modulus( buffer X,Y - Stable Ref Point X,Y ) < Tolerance
  13841.                  count ++
  13842.                  If count >= Stable Region Size
  13843.                     Stable Region X,Y = Average X,Y over stable region
  13844.                     Set Stable Region Detect flag
  13845.                     Return()
  13846.                  Endif
  13847.               Else
  13848.                  Stable Ref Point X,Y = current X,Y
  13849.                  Reset count, buffer index
  13850.               Endif
  13851.            EndWhile
  13852.         Endproc
  13853.  
  13854. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  13855.  
  13856.  
  13857. ΓòÉΓòÉΓòÉ 17.9.2. Click Locking ΓòÉΓòÉΓòÉ
  13858.  
  13859. Click locking is the process by which the touch (X,Y) coordinate locks onto a 
  13860. value before being sent to the system as emulated mouse data. 
  13861.  
  13862. Note:  Click locking affects touch data only when it is sent as emulated mouse 
  13863.        data and does not interfere with the normal use of an IBM PS/2 Mouse, if 
  13864.        one is attached to the IBM Touch Display, or the data is sent in full 
  13865.        touch pointing mode. 
  13866.  
  13867.  Click locking is performed because some actions with a clicked mouse button 
  13868.  require that little movement of the mouse pointer itself take place.  Click 
  13869.  locking makes double clicking using the Touch display easier, because there is 
  13870.  no need to maintain the touch position at exactly the same point between 
  13871.  clicks. 
  13872.  
  13873.  The following examples of this can be found in the OS/2 Presentation Manager: 
  13874.  
  13875.    o  Clicking on an icon to bring up the system menu 
  13876.  
  13877.    o  Double clicking to activate the window 
  13878.  
  13879.  Clicking on an icon, when attempted with the Touch display's emulating the 
  13880.  mouse, occasionally can result in the icon's moving a few pels, because the PM 
  13881.  Desktop misinterprets the click down with associated movement as a drag 
  13882.  operation to move the icon. PM decides that if the movement is more than a few 
  13883.  pels, it must be a click with drag rather than a simple click. Thus, even a 
  13884.  single click action sometimes can be unsuccessful. 
  13885.  
  13886.  The double-click action is more difficult:  even if the first click can be 
  13887.  made without moving the icon, the second click must be done at the same 
  13888.  position. PM permits a small movement of 6 pels in the X direction and 8 pels 
  13889.  in the Y direction. With a great deal of practice, this condition can be 
  13890.  satisfied, but perhaps with only a 20% success rate. 
  13891.  
  13892.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  13893.   ΓöéTip: For the least X,Y movement, keep the force variation toΓöé
  13894.   Γöéa minimum. In other words, do not press harder than         Γöé
  13895.   Γöénecessary to achieve the button-down threshold; and do not  Γöé
  13896.   Γöélift off completely between clicks; rather, just release    Γöé
  13897.   Γöésufficiently to go below the button-up threshold. The usual Γöé
  13898.   Γöéoutcome will be that the icon will move and/or the system   Γöé
  13899.   Γöémenu will appear.                                           Γöé
  13900.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  13901.  
  13902.  Click locking attempts to minimize the difficulty of maintaining the X,Y 
  13903.  position while button clicking.  While mainly applicable to PM, the 
  13904.  click-locking technique is useful also in the DOS 4.0 shell and any 
  13905.  application (usually in graphics mode) that uses a mouse. 
  13906.  
  13907.  The following click-lock options can be chosen: 
  13908.  
  13909.       No click locking 
  13910.       Single click locking 
  13911.       Double click locking 
  13912.  
  13913.  
  13914. ΓòÉΓòÉΓòÉ 17.9.2.1. No Click Locking ΓòÉΓòÉΓòÉ
  13915.  
  13916. Using this option, click locking can be turned off altogether, in which case, 
  13917. the system sees the touch coordinates directly as mouse coordinates. 
  13918.  
  13919.  
  13920. ΓòÉΓòÉΓòÉ 17.9.2.2. Single Click Locking ΓòÉΓòÉΓòÉ
  13921.  
  13922. This option locks the X,Y coordinates as soon as the button-down threshold has 
  13923. been exceeded.  All subsequent touch coordinates are then reported to the 
  13924. system with this X,Y value when sent as emulated mouse data. 
  13925.  
  13926. Normal reporting of X,Y coordinates resumes: 
  13927.  
  13928.    o  After the click-lock time has been exceeded 
  13929.    o  If the touch coordinate moves outside the click-lock area 
  13930.    o  If the touch is removed from the screen 
  13931.  
  13932.  
  13933. ΓòÉΓòÉΓòÉ 17.9.2.3. Double Click Locking ΓòÉΓòÉΓòÉ
  13934.  
  13935. This option is the same as single click locking, except that the conditions for 
  13936. reporting X,Y data are: 
  13937.  
  13938.    o  After the click-lock time has been exceeded 
  13939.    o  If the touch coordinate moves outside the click-lock area 
  13940.    o  If the button-down threshold is exceeded for a second time, the touch 
  13941.       having been taken below the button-up threshold in the interim. 
  13942.  
  13943.  The third condition enables the X,Y coordinates of two successive touches to 
  13944.  be locked at the same value. The touch need not be removed from the screen 
  13945.  completely; it is sufficient just to go below the button-up threshold. 
  13946.  
  13947.  
  13948. ΓòÉΓòÉΓòÉ 17.9.2.4. Click-Lock Area ΓòÉΓòÉΓòÉ
  13949.  
  13950. This value determines the size of one side of a square that defines the 
  13951. click-lock area. The center of the square is located at the X,Y position at 
  13952. which the coordinates become locked. When the touch coordinates move outside 
  13953. the click-lock area, normal X,Y reporting is resumed. 
  13954.  
  13955. The click-lock value is in pels, and, therefore, varies with screen resolution 
  13956. if a click-lock area of a given physical dimension is required. A large value 
  13957. makes double clicking at a point very easy, but it also makes immediate minor 
  13958. adjustment and close manipulation by dragging slightly more cumbersome. 
  13959.  
  13960.  
  13961. ΓòÉΓòÉΓòÉ 17.9.2.5. Click-Lock Time ΓòÉΓòÉΓòÉ
  13962.  
  13963. This value determines the time that is permitted to elapse between the time the 
  13964. coordinates first become locked and when normal X,Y reporting is resumed. 
  13965.  
  13966. A large value makes double clicking a less hurried process but also makes 
  13967. immediate minor adjustments and close manipulation by dragging slightly more 
  13968. cumbersome. 
  13969.  
  13970.  
  13971. ΓòÉΓòÉΓòÉ 17.9.3. Pseudocode for Click Locking ΓòÉΓòÉΓòÉ
  13972.  
  13973. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  13974.  
  13975.  
  13976.         Constants:
  13977.                    X_limit  = limit of allowed movement in X direction
  13978.                    Y_limit  = limit of allowed movement in Y direction
  13979.                    timeout  = limit of time between successive clicks
  13980.                    click_type = number of successive clicks to lock over
  13981.  
  13982.         Variables:
  13983.                    sd_count = number of successive clicks being locked over
  13984.                    sd_time  = system time at which timeout will occur
  13985.                    sd_X     = initial button down X position
  13986.                    sd_Y     = initial button down Y position
  13987.                    X        = current reported X position
  13988.                    Y        = current reported Y position
  13989.  
  13990.         Initial state:
  13991.                    sd_count = 0
  13992.  
  13993.  
  13994.         On entry to the procedure, the X,Y values are set to the current
  13995.         X,Y coordinate report.  A bit in a status word (selection
  13996.         detection bit) reflects the binary state of the emulated mouse
  13997.         button (1= button down 0= button up).
  13998.  
  13999.         /* Check if click locking active and still valid:
  14000.            if so, lock the coordinate,
  14001.            else reset the process
  14002.         */
  14003.  
  14004.         If sd_count != 0
  14005.  
  14006.            /* If click locking currently active */
  14007.  
  14008.            If sd_time > current time
  14009.               && modulus(x - sd_x) < x_limit
  14010.               && modulus(y - sd_x) < y_limit
  14011.  
  14012.               /* If not timed out and within lock area, */
  14013.               /* force current X,Y position to first click position */
  14014.               X = sd_X
  14015.               Y = sd_Y
  14016.  
  14017.               If button going up
  14018.                  && (sd_count >= click_type)
  14019.  
  14020.                  /* If the 'button' is being released and required */
  14021.                  /* number of clicks reached */
  14022.                  sd_count = 0       /* Reset the click locking process */
  14023.               Endif
  14024.  
  14025.            Else
  14026.  
  14027.               /* Timed out or moved outside lock area: reset click locking */
  14028.               sd_count = 0
  14029.  
  14030.            Endif
  14031.         Endif
  14032.  
  14033.         /* Check if button going down to increment sd_count,
  14034.            thereby starting click locking if it was previously 0,
  14035.            or incrementing towards the required number of clicks if not
  14036.         */
  14037.  
  14038.         If button going down
  14039.  
  14040.            /* Reinitialise timeout time on each button down */
  14041.  
  14042.            sd_time = current time + timeout
  14043.  
  14044.            If sd_count == 0
  14045.  
  14046.               /* If this is the first button down, set the lock coordinates
  14047.                  to the current X,Y values */
  14048.  
  14049.               sd_X = X
  14050.               sd_Y = Y
  14051.  
  14052.            Endif
  14053.  
  14054.            sd_count++         /* Increment click count */
  14055.  
  14056.         Endif
  14057.  
  14058. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  14059.  
  14060.  
  14061. ΓòÉΓòÉΓòÉ 18. Glossary ΓòÉΓòÉΓòÉ
  14062.  
  14063. This glossary contains terms and definitions that are, for the most part, used 
  14064. for OS/2 products. This is not a complete dictionary of computer terms. 
  14065.  
  14066.  
  14067. ΓòÉΓòÉΓòÉ 18.1. Introduction ΓòÉΓòÉΓòÉ
  14068.  
  14069. This glossary defines many of the terms used in this book. It includes terms 
  14070. and definitions from the IBM Dictionary of Computing, as well as terms specific 
  14071. to the Presentation Manager, but it is not a complete glossary for OS/2. 
  14072.  
  14073. Other primary sources for these definitions are: 
  14074.  
  14075.    o  The American National Standard Dictionary for Information Systems, ANSI 
  14076.       X3.172-1990, copyrighted 1990 by the American National Standards 
  14077.       Institute, 11 West 42nd Street, New York, New York 10036. These 
  14078.       definitions are identified by the symbol (A) after the definition. 
  14079.  
  14080.    o  The Information Technology Vocabulary, developed by Subcommittee 1, Joint 
  14081.       Technical Committee 1, of the International Organization for 
  14082.       Standardization and the International Electrotechnical Commission 
  14083.       (ISO/IEC JTC1/SC1). Definitions of published parts of this vocabulary are 
  14084.       identified by the symbol (I) after the definition; definitions taken from 
  14085.       draft international standards, committee drafts, and working papers being 
  14086.       developed by ISO/IEC JTC1/SC1 are identified by the symbol (T) after the 
  14087.       definition, indicating that final agreement has not yet been reached 
  14088.       among the participating National Bodies of SC1. 
  14089.  
  14090.  
  14091. ΓòÉΓòÉΓòÉ 18.2. Glossary Listing ΓòÉΓòÉΓòÉ
  14092.  
  14093. Select a starting letter of glossary terms: 
  14094.  
  14095.  A    N 
  14096.  B    O 
  14097.  C    P 
  14098.  D    Q 
  14099.  E    R 
  14100.  F    S 
  14101.  G    T 
  14102.  H    U 
  14103.  I    V 
  14104.  J    W 
  14105.  K    X 
  14106.  L    Y 
  14107.  M    Z 
  14108.  
  14109.  
  14110. ΓòÉΓòÉΓòÉ <hidden> Glossary - A ΓòÉΓòÉΓòÉ
  14111.  
  14112.  A 
  14113.  
  14114.  ABIOS - Advanced BIOS. See BIOS. 
  14115.  
  14116.  accumulator - (1) A register in which one operand of an operation can be 
  14117.     stored and subsequently replaced by the result of that operation. (T)  (2) 
  14118.     In the IBM 3800 Printing Subsystem Models 3 and 8, a feature that supplies 
  14119.     a separate storage that can hold data in raster form. It can be used either 
  14120.     for composing a sheet of data that combines a large amount of variable and 
  14121.     constant data, or for storing an electronic overlay in raster form that 
  14122.     will be merged with variable data as the sheet is printed. 
  14123.  
  14124.  access permission - All access rights a user has regarding an object. (I) 
  14125.  
  14126.  adapter - A piece of hardware that modifies the system unit to allow it to 
  14127.     operate in a particular way, often by connecting the system unit to an 
  14128.     external device such as a video monitor. 
  14129.  
  14130.  adapter device driver - A device driver that provides hardware-dependent 
  14131.     services for an OEM adapter. 
  14132.  
  14133.  address space -  (1) The range of addresses available to a program. (A)  (2) 
  14134.     The area of virtual storage available for a particular job. 
  14135.  
  14136.  all points addressable (APA) - In computer graphics, pertaining to the ability 
  14137.     to address and display or not display each picture element (pel) on a 
  14138.     display surface. 
  14139.  
  14140.  anchor block - An area of the internal resources of OS/2 Presentation Manager 
  14141.     which is allocated to a process or thread that calls WinInitialize. 
  14142.  
  14143.  anchor point - The position or choice from which selection or deselection is 
  14144.     extended. 
  14145.  
  14146.  APA - All points addressable. 
  14147.  
  14148.  API - Application programming interface. 
  14149.  
  14150.  application programming interface (API) - A functional interface supplied by 
  14151.     the operating system, or by a separately-orderable licensed program, that 
  14152.     allows an application program written in a high-level language to use 
  14153.     specific data or functions of the operating system or the licensed program. 
  14154.  
  14155.  archive flag - In the OS/2 operating system, a flag of files and directories 
  14156.     that the operating system uses to determine which files are new or 
  14157.     modified. Files with this flag are included when a backup copy is made or 
  14158.     when all the files are restored on a hard disk. See flag. 
  14159.  
  14160.  area - In computer graphics, a filled shape such as a solid rectangle. 
  14161.  
  14162.  ASCIIZ - A string of ASCII characters that is terminated with a byte 
  14163.     containing the value 0. 
  14164.  
  14165.  aspect ratio - (1) The ratio of the height of a rectangle to its width. A 
  14166.     rectangle of width 10 inches and height 5 inches has an aspect ratio of 
  14167.     10/5 or 2.  (2) On a display screen, the ratio of the maximum length of a 
  14168.     display line to the maximum length of a display column. 
  14169.  
  14170.  asynchronous (ASYNC) - (1) Pertaining to two or more processes that do not 
  14171.     depend upon the occurrence of specific events such as common timing 
  14172.     signals. (T)  (2) Without regular time relationship; unexpected or 
  14173.     unpredictable with respect to the execution of program instructions. 
  14174.  
  14175.  atom - A constant that represents a string. Once a string has been defined as 
  14176.     an atom, the atom can be used in place of the string to save space. Strings 
  14177.     are associated with their respective atoms in an atom table. See integer 
  14178.     atom. 
  14179.  
  14180.  atom table - A table used to associate atoms with the strings that they 
  14181.     represent. This table contains the mechanism by which the presence of a 
  14182.     string can be verified. 
  14183.  
  14184.  AVIO - Advanced Video Input/Output 
  14185.  
  14186.  
  14187. ΓòÉΓòÉΓòÉ <hidden> Glossary - B ΓòÉΓòÉΓòÉ
  14188.  
  14189.  B 
  14190.  
  14191.  background color - The color assigned to a background image. 
  14192.  
  14193.  background mix - An attribute that determines how the background of a graphic 
  14194.     primitive is combined with the existing color of the graphics presentation 
  14195.     space. 
  14196.  
  14197.  base device driver - An OS/2 device driver that performs I/O during the OS/2 
  14198.     kernel boot sequence to provide IPL support. Base device drivers are loaded 
  14199.     by way of the CONFIG.SYS BASEDEV keyword, rather than the DEVICE keyword. 
  14200.     See BASEDEV keyword, adapter device driver, and device manager. 
  14201.  
  14202.  BASEDEV keyword - New CONFIG.SYS keyword; loads a base device driver into the 
  14203.     operating system. 
  14204.  
  14205.  Basic Input/Output System (BIOS) - Code that controls basic hardware 
  14206.     operations, such as interactions with diskette drives, hard disk drives, 
  14207.     and the keyboard. 
  14208.  
  14209.  Bezier curve - A mathematical technique of specifying a smooth, continuous 
  14210.     line or surface, requiring a starting point and an ending point, with 
  14211.     several intermediate points that influence or control the path of the 
  14212.     linking curve. 
  14213.  
  14214.  BIOS - Basic Input/Output System. 
  14215.  
  14216.  bit-block transfer (bitblt) - Transfer of a rectangular array of bit-map data. 
  14217.  
  14218.  bitblt - Bit-block transfer. 
  14219.  
  14220.  bit map - A representation of an image by an array of bits. 
  14221.  
  14222.  block - (1) In programming languages, a compound statement that coincides with 
  14223.     the scope of at least one of the declarations contained within it. A block 
  14224.     may also specify storage allocation or segment programs for other 
  14225.     purposes. (I)  (2) A string of data elements recorded or transmitted as a 
  14226.     unit. The elements may be characters, words or physical records. (T)  (3) A 
  14227.     collection of contiguous records recorded as a unit. Blocks are separated 
  14228.     by interblock gaps and each block may contain one or more records. (A)
  14229.  
  14230.  Bit block transfer (bitblt) - The process of transferring one or more blocks 
  14231.     of data. 
  14232.  
  14233.  border - A visual indicator of a window's boundaries. 
  14234.  
  14235.  BPB - BIOS Parameter Block. 
  14236.  
  14237.  breakpoint - (1) A point in a computer program where execution may be halted. 
  14238.     A breakpoint is usually at the beginning of an instruction where halts, 
  14239.     caused by external intervention, are convenient for resuming 
  14240.     execution. (T)  (2) An instruction in a program for halting execution. 
  14241.     Breakpoints are usually established at positions in a program where halts, 
  14242.     caused by external intervention, are convenient for restarting. (T)  (3) A 
  14243.     place in a program, specified by a command or a condition, where the system 
  14244.     halts execution and gives control to the workstation user or to a specified 
  14245.     program. 
  14246.  
  14247.  Bus Master adapter - An adapter capable of performing Reads and Writes to 
  14248.     physical storage by communicating directly with the storage subsystem 
  14249.     (memory) rather than depending on a host DMA channel or host CPU. 
  14250.     Synonymous with first-party DMA adapter. 
  14251.  
  14252.  
  14253. ΓòÉΓòÉΓòÉ <hidden> Glossary - C ΓòÉΓòÉΓòÉ
  14254.  
  14255.  C 
  14256.  
  14257.  cached micro presentation space - A presentation space from a Presentation 
  14258.     Manager owned store of micro presentation spaces. It can be used for 
  14259.     drawing to a window only, and must be returned to the store when the task 
  14260.     is complete. 
  14261.  
  14262.  CDB - Command Descriptor Block. 
  14263.  
  14264.  cell - See character cell. 
  14265.  
  14266.  character box -  (1) An imaginary parallelogram on a display surface that 
  14267.     contains all parts of one graphic character. Synonymous with bounding 
  14268.     box. (T)  (2) The maximum area in which a symbol and all associated 
  14269.     elements, such as a cursor, an underline, or space surrounding the symbol 
  14270.     to separate it from other symbols, can be printed or displayed. Synonymous 
  14271.     with character cell. (3) The imaginary parallelogram whose boundaries 
  14272.     govern the size, orientation, and spacing of individual characters to be 
  14273.     displayed on a graphics display device. 
  14274.  
  14275.  character cell -  (1) An addressable location on a display surface or printing 
  14276.     medium.  (2) The physical width and height in pels of a font. See also 
  14277.     bounding box.  (3) The imaginary box whose boundaries govern the size, 
  14278.     orientation, and spacing of individual characters to be displayed on a 
  14279.     workstation. 
  14280.  
  14281.  character mode - A mode that, in conjunction with the font type, determines 
  14282.     the extent to which graphics characters are affected by the character box, 
  14283.     shear, and angle attributes. 
  14284.  
  14285.  clipping - In computer graphics, removing those parts of display elements that 
  14286.     lie outside of given boundary. 
  14287.  
  14288.  clip limits - The area of the paper that can be reached by a printer or 
  14289.     plotter. 
  14290.  
  14291.  clipping path - A clipping boundary in world-coordinate space. 
  14292.  
  14293.  code page - An assignment of graphic characters and control function meanings 
  14294.     to all code points; for example, assignment of characters and meanings to 
  14295.     256 code points for an 8-bit code, assignment of characters and meanings to 
  14296.     128 code points for a 7-bit code. 
  14297.  
  14298.  code point - A 1-byte code representing one of 256 potential characters. 
  14299.  
  14300.  code segment - An executable section of programming code within a load module. 
  14301.  
  14302.  color conversion - Changing one color format to another. Required, for 
  14303.     example, when the source color format is different from the destination 
  14304.     color format. When going from the monochrome color format to the color 
  14305.     format, 1 (one) bits are converted to the image foreground color, and 0 
  14306.     (zero) bits are converted to the image background color. 
  14307.  
  14308.     When going from color to monochrome, all pels that match the passed 
  14309.     background color are converted to the image background color of the 
  14310.     destination. 
  14311.  
  14312.     All other pels are converted to the image foreground color of the 
  14313.     destination. The color conversion takes place prior to any mix mode. 
  14314.  
  14315.  color dithering - See dithering. 
  14316.  
  14317.  command code - In this specification, refers to a group of related commands 
  14318.     that an adapter device driver can receive. 
  14319.  
  14320.     All command codes have a prefix of "IOCC_". For example, common I/O 
  14321.     requests (such as Read, Write, etc.) are grouped under the command code 
  14322.     IOCC_EXECUTE_IO. 
  14323.  
  14324.  command data block - A data structure defined by the Small Computer System 
  14325.     Interface standard to send commands to devices that conform to SCSI 
  14326.     standards. 
  14327.  
  14328.  command descriptor block (CDB) - The structure used to communicate commands 
  14329.     from a source to a destination. 
  14330.  
  14331.  command modifier - In this specification, a specific operation that an adapter 
  14332.     device driver is to perform. 
  14333.  
  14334.     All command modifiers have a prefix of "IOCM_". For example, an adapter 
  14335.     device driver might receive an IOCC_EXECUTE_IO command with a command 
  14336.     modifier of IOCM_READ. 
  14337.  
  14338.  compatibility kernel - The portion of the OS/2 kernel that exists to support 
  14339.     DOS INT 20, 21, 25, 26, and 27 functions. It acts as an interface to common 
  14340.     kernel functionality such as the file system. 
  14341.  
  14342.  CON - Character-device name reserved for the console keyboard and screen. 
  14343.  
  14344.  conditional compilation - Processing by the preprocessor of certain specified 
  14345.     code in the file, depending on the evaluation of a specified condition. 
  14346.  
  14347.  context hook - Similar to a "force flag" in earlier versions of OS/2. These 
  14348.     are events, signaled by a virtual device driver, that are processed at task 
  14349.     time. Forcing an IRET, and simulating an NMI, can fall into this category. 
  14350.  
  14351.  control program - A computer program designed to schedule and to supervise the 
  14352.     execution of programs of a computer system. 
  14353.  
  14354.  controller sector buffer - One or more buffers, managed by a hardware adapter, 
  14355.     to improve I/O transfer rates by helping to match a device and software 
  14356.     timing requirements. 
  14357.  
  14358.  
  14359. ΓòÉΓòÉΓòÉ <hidden> Glossary - D ΓòÉΓòÉΓòÉ
  14360.  
  14361.  D 
  14362.  
  14363.  DASD - Direct-access storage device. 
  14364.  
  14365.  data bus - A bus used to communicate data internally and externally to and 
  14366.     from a processing unit, storage, and peripheral devices. (A)  See bus. 
  14367.  
  14368.  data structure - The syntactic structure of symbolic expressions and their 
  14369.     storage allocation characteristics. (T)
  14370.  
  14371.  DBCS - Double-byte character set. 
  14372.  
  14373.  DC - Device context. 
  14374.  
  14375.  DDB - Device-dependent bit map. 
  14376.  
  14377.  deinstantiation - See instantiation. 
  14378.  
  14379.  DevHlp - Device helper. 
  14380.  
  14381.  device context (DC) - A logical description of a data destination such as 
  14382.     memory, metafile, display, printer, or plotter. See also direct device 
  14383.     context, information device context, memory device context, metafile device 
  14384.     context, and screen device context. 
  14385.  
  14386.  device driver -  A file that contains the code needed to attach and use a 
  14387.     device such as a display, printer, or plotter. 
  14388.  
  14389.  device driver initialization (init) time - See initialization (init) time, 
  14390.     device driver. 
  14391.  
  14392.  device driver profile - A file with a "DDP" extension, containing a script 
  14393.     that is interpreted by the OS/2 DDINSTAL utility. Among other things, it 
  14394.     defines which files to copy from installation diskettes to target 
  14395.     directories and specifies how the CONFIG.SYS file will be updated. 
  14396.  
  14397.  device helper (DevHlp) -  (1) A kernel service (memory, hardware interrupt, 
  14398.     software interrupt, queuing, semaphore, and so forth) provided to physical 
  14399.     device drivers. (2) A callable C-language or assembler-language routine 
  14400.     that provides an operating system service for an OS/2 device driver. 
  14401.  
  14402.  device object - A device that provides a means of communication between a 
  14403.     computer and the outside world. A printer is an example of a device object. 
  14404.  
  14405.  device table - A data structure containing a summary of the adapters an 
  14406.     adapter device driver supports and a list of the I/O devices attached to 
  14407.     each adapter. This data structure is built by the adapter device driver in 
  14408.     response to an IOCC_CONFIGURATION IOCM_GET_DEVICE_TABLE request. 
  14409.  
  14410.  direct access storage device (DASD) - A device in which access time is 
  14411.     effectively independent of the location of the data. 
  14412.  
  14413.  direct memory access (DMA) -  (1) A technique for moving data directly between 
  14414.     main storage and peripheral equipment without requiring processing of the 
  14415.     data by the processing unit. (2) The transfer of data between memory and 
  14416.     input/output units without processor intervention. 
  14417.  
  14418.  display frame - (1) In computer graphics, an area in storage in which a 
  14419.     display image can be recorded.  (2) In computer micrographics, an area on a 
  14420.     microform in which a display image can be recorded. 
  14421.  
  14422.  dispatch table -  (1) A block of memory, allocated by the graphics engine, for 
  14423.     the containment of entry points for use by a display driver. (2) An array 
  14424.     of pointers to function-handling routines. 
  14425.  
  14426.  dithering - A technique for interleaving dark and light pels so that the 
  14427.     resulting image looks smoothly shaded from a distance. 
  14428.  
  14429.  DLL - Dynamic link library. 
  14430.  
  14431.  DMA - Direct memory access. 
  14432.  
  14433.  double-byte character set (DBCS) - A set of characters in which each character 
  14434.     is represented by two bytes. Languages such as Japanese, Chinese, and 
  14435.     Korean, which contain more characters than can be represented by 256 code 
  14436.     points, require double-byte character sets. Because each character requires 
  14437.     2 bytes, the typing, display, and printing of DBCS characters requires 
  14438.     hardware and programs that support DBCS. Contrast with single-byte 
  14439.     character set. 
  14440.  
  14441.  driver - (1) A program (and possibly data files) that contain information 
  14442.     needed to run a particular unit, such as a plotter, printer, port, or 
  14443.     mouse. See also device driver and printer driver. (2) A system or device 
  14444.     that enables a functional unit to operate. 
  14445.  
  14446.  dynamic link library (DLL) - A file containing executable code and data bound 
  14447.     to a program at load time or run time, rather than during linking. The code 
  14448.     and data in a dynamic link library can be shared by several applications 
  14449.     simultaneously. 
  14450.  
  14451.  
  14452. ΓòÉΓòÉΓòÉ <hidden> Glossary - E ΓòÉΓòÉΓòÉ
  14453.  
  14454.  E 
  14455.  
  14456.  entry point - (1) In a database, the record that is first accessed upon entry 
  14457.     into a database, caused by a user's command. (T)  (2) The address or label 
  14458.     of the first instruction executed on entering a computer program, routine, 
  14459.     or subroutine. A computer program, routine, or subroutine may have a number 
  14460.     of different entry points, each perhaps corresponding to a different 
  14461.     function or purpose. (I)  (A)  Synonymous with entrance, entry. (3) In a 
  14462.     routine, any place to which control can be passed. (A)  (4) In the C, 
  14463.     FORTRAN, and Pascal languages, the address or label of the first 
  14464.     instruction processed or entered in a program, routine, or subroutine. A 
  14465.     program, routine, or subroutine can have a number of different entry 
  14466.     points, each corresponding to a different function or purpose. 
  14467.  
  14468.  EOI - End Of Interrupt 
  14469.  
  14470.  
  14471. ΓòÉΓòÉΓòÉ <hidden> Glossary - F ΓòÉΓòÉΓòÉ
  14472.  
  14473.  F 
  14474.  
  14475.  Far call - Code that calls from one segment into another segment. 
  14476.  
  14477.  fillet - An arc that is tangential to the end points of two adjacent lines. 
  14478.     See also polyfillet. 
  14479.  
  14480.  filter adapter device driver - A special class of adapter device drivers that 
  14481.     do not manage the hardware directly, but monitor the stream of commands 
  14482.     between a device manager and an adapter device driver. See Device Manager 
  14483.     and adapter device driver. 
  14484.  
  14485.  first-party DMA adapter - See bus master adapter. 
  14486.  
  14487.  flag - A characteristic of a file or directory that enables it to be used in 
  14488.     certain ways. See also archive flag, hidden flag, and read-only flag. 
  14489.  
  14490.  flat address - See linear address. 
  14491.  
  14492.  frame styles - Standard window layouts provided by the Presentation Manager. 
  14493.  
  14494.  freeze and thaw services - Functions that prevent a DOS session from executing 
  14495.     (VDHFreezeVDM) until the matching thaw function (VDHThawVDM) is called. The 
  14496.     freeze occurs when the specified DOS session leaves kernel mode. 
  14497.  
  14498.  
  14499. ΓòÉΓòÉΓòÉ <hidden> Glossary - G ΓòÉΓòÉΓòÉ
  14500.  
  14501.  G 
  14502.  
  14503.  GDT - Global descriptor table. 
  14504.  
  14505.  Global Descriptor Table (GDT) - A table that defines code and data segments 
  14506.     available to all tasks in an application. 
  14507.  
  14508.  glyph - A graphic symbol whose appearance conveys information; for example, 
  14509.     the vertical and horizontal arrows on cursor keys that indicate the 
  14510.     directions in which they control cursor movement, the sunburst symbol on 
  14511.     the screen illumination control of a display device. 
  14512.  
  14513.  GPI - Graphics programming interface 
  14514.  
  14515.  graphic primitive - In computer graphics, a basic element, such as an arc or a 
  14516.     line, that is not made up of smaller parts and that is used to create 
  14517.     diagrams and pictures. 
  14518.  
  14519.  graphics attributes - The attributes that apply to graphics primitives. 
  14520.     Examples are color selection, line type, and shading pattern definition. 
  14521.     Contrast with segment attributes. 
  14522.  
  14523.  Graphics programming interface (GPI) - The formally-defined programming 
  14524.     language that lies between an IBM graphics program and the user of the 
  14525.     program. 
  14526.  
  14527.  graphics segment - A sequence of related graphic primitives and graphics 
  14528.     attributes. See also graphic primitive. 
  14529.  
  14530.  GRE - Graphics engine. 
  14531.  
  14532.  
  14533. ΓòÉΓòÉΓòÉ <hidden> Glossary - H ΓòÉΓòÉΓòÉ
  14534.  
  14535.  H 
  14536.  
  14537.  handle - (1) An identifier that represents an object, such as a device or a 
  14538.     window, to the Presentation Interface.  (2) In the Advanced DOS and OS/2 
  14539.     operating systems, a binary value created by the system that identifies a 
  14540.     drive, directory, and file so that the file can be found and opened. 
  14541.  
  14542.  handshaking - A method by which two pieces of hardware, such as a personal 
  14543.     computer and a plotter, can communicate. Depending upon the devices 
  14544.     communicating, handshaking occurs either as a hardware function or through 
  14545.     software, such as a device driver. 
  14546.  
  14547.  hard error - An error condition on a network that requires that the network be 
  14548.     reconfigured or that the source of the error be removed before the network 
  14549.     can resume reliable operation. 
  14550.  
  14551.  hardware palette - The array of RGBs that the physical device is displaying. 
  14552.  
  14553.  heap - An area of free storage available for dynamic allocation by an 
  14554.     application. Its size varies depending on the storage requirements of the 
  14555.     application. 
  14556.  
  14557.  hex - See hexadecimal 
  14558.  
  14559.  hexadecimal - Pertaining to a system of numbers to the base 16; hexadecimal 
  14560.     digits range from 0 through 9 and A through F, where A represents 10 and F 
  14561.     represents 15. 
  14562.  
  14563.  hook - A point in a system-defined function where an application can supply 
  14564.     additional code that the system processes as though it were part of the 
  14565.     function. 
  14566.  
  14567.  hook chain - A sequence of hook procedures that are "chained" together so that 
  14568.     each event is passed in turn to each procedure in the chain. 
  14569.  
  14570.  
  14571. ΓòÉΓòÉΓòÉ <hidden> Glossary - I ΓòÉΓòÉΓòÉ
  14572.  
  14573.  I 
  14574.  
  14575.  IDC - Inter-device-driver communication. 
  14576.  
  14577.  in-memory buffer - A block of memory in the address space of the host machine, 
  14578.     used for data transfer. 
  14579.  
  14580.  init time - See initialization time, device driver. 
  14581.  
  14582.  initialization time, device driver - After the OS/2 loads a device driver, it 
  14583.     sends it an OS/2 request packet to initialize. During this initialization, 
  14584.     certain DevHlp functions are not permitted. Also called init time. 
  14585.  
  14586.  Input/Output Control (IOCtl) - A system service that provides a way for an 
  14587.     application to send device-specific control commands to a device driver. 
  14588.  
  14589.  Input/Output Privilege Level (IOPL) - Allows part of a Ring 3 application or 
  14590.     device driver to execute at Ring 0. 
  14591.  
  14592.  input router - OS/2 internal process that removes messages from the system 
  14593.     queue. 
  14594.  
  14595.  inter-device-driver communication (IDC) - A mechanism that enables a physical 
  14596.     device driver to communicate with another physical device driver. 
  14597.  
  14598.  interprocess communication - In the OS/2 operating system, the exchange of 
  14599.     information between processes or threads through semaphores, queues, and 
  14600.     shared memory. 
  14601.  
  14602.  interrupt - An instruction that directs the microprocessor to suspend what it 
  14603.     is doing and run a specified routine. When the routine is complete, the 
  14604.     microprocessor resumes its original work. See also routine. 
  14605.  
  14606.  interrupt request (IR) - Broadly, an "interrupt request level", referring to 
  14607.     pending or in-service interrupt requests, or to a specific level (for 
  14608.     example, IR 4). 
  14609.  
  14610.  interrupt request flag - A bit in the 8259 PIC controller that indicates an 
  14611.     interrupt is pending on particular level. The VPIC also maintains a virtual 
  14612.     interrupt request flag for each interrupt level for each DOS session. 
  14613.  
  14614.  interrupt service flag - A bit in the 8259 PIC controller that indicates an 
  14615.     interrupt request is being serviced. It is cleared when the PIC is sent 
  14616.     EOI. The VPIC maintains a virtual interrupt service flag indicating that a 
  14617.     simulated interrupt is in-progress in a DOS session. 
  14618.  
  14619.  interrupt time - When a device driver is run because of an interrupt rather 
  14620.     than because of an application request. OS/2 device drivers receive 
  14621.     interrupts either from the hardware they manage or from the system 
  14622.     real-time clock. 
  14623.  
  14624.     During interrupt time, certain DevHlp functions are not permitted. Also, 
  14625.     addresses received directly from OS/2 applications might not be valid 
  14626.     unless they are converted system addresses. 
  14627.  
  14628.  IOCtl - Input/Output Control. 
  14629.  
  14630.  IOPL - Input/Output Privilege Level. 
  14631.  
  14632.  IORB - Input/Output Request Block. 
  14633.  
  14634.  Input/Output Request Block (IORB) - A data structure defined by this 
  14635.     specification that is passed as a parameter on all calls to an adapter 
  14636.     device driver. It contains a fixed section, followed by a command-dependent 
  14637.     section. 
  14638.  
  14639.  IORBH - Input/Output Request Block Header 
  14640.  
  14641.  IRET - Interrupt return. 
  14642.  
  14643.  IRQ - Interrupt Request. 
  14644.  
  14645.  
  14646. ΓòÉΓòÉΓòÉ <hidden> Glossary - J ΓòÉΓòÉΓòÉ
  14647.  
  14648.  J 
  14649.  
  14650.  journal - A special-purpose file or data set that can be used to provide an 
  14651.     audit trail of operator and system actions, or as a means of recovering 
  14652.     superseded data. 
  14653.  
  14654.  
  14655. ΓòÉΓòÉΓòÉ <hidden> Glossary - K ΓòÉΓòÉΓòÉ
  14656.  
  14657.  K 
  14658.  
  14659.  kanji - A graphic character set consisting of symbols used in Japanese 
  14660.     ideographic alphabets. Each character is represented by 2 bytes. 
  14661.  
  14662.  kernel - (1) The part of an operating system that performs basic functions 
  14663.     such as allocating hardware resources. (2) A program that can run under 
  14664.     different operating system environments. 
  14665.  
  14666.  kerning - The design of graphic characters so that their character boxes 
  14667.     overlap. The toned picture elements (pels) of the character appear outside 
  14668.     the character cell. 
  14669.  
  14670.     Note:  Kerning allows character boxes to overlap and characters to run 
  14671.     together, so that characters can be designed for cursive languages, 
  14672.     ligatures, or any other kind of character that requires more than one 
  14673.     character box. It also allows for design of proportional-spaced fonts. By 
  14674.     overlapping character boxes, characters can be placed closer together, or 
  14675.     they can be placed farther apart by using overlapped blank character boxes. 
  14676.  
  14677.  
  14678. ΓòÉΓòÉΓòÉ <hidden> Glossary - L ΓòÉΓòÉΓòÉ
  14679.  
  14680.  L 
  14681.  
  14682.  LCT - logical color table. 
  14683.  
  14684.  LDT - Local descriptor table. 
  14685.  
  14686.  LIFO stack - A data structure from which data is retrieved in "Last-In, 
  14687.     First-Out" order. 
  14688.  
  14689.  linked list - A list in which the data elements may be dispersed, but in which 
  14690.     each data element contains information for locating the next. Synonym for 
  14691.     chained list. 
  14692.  
  14693.  linear address - A unique value that identifies the memory object. 
  14694.  
  14695.  Local Descriptor Table (LDT) - A table that defines code and data segments 
  14696.     specific to a single task. 
  14697.  
  14698.  logical palette - An array of RGB and mapping index pairs, created by the 
  14699.     device driver when defining a palette (as a result of a GpqCreatePalette 
  14700.     call). 
  14701.  
  14702.  LVB - Logical Video Buffer. 
  14703.  
  14704.  
  14705. ΓòÉΓòÉΓòÉ <hidden> Glossary - M ΓòÉΓòÉΓòÉ
  14706.  
  14707.  M 
  14708.  
  14709.  memory device context - A logical description of a data destination that is a 
  14710.     memory bit map. See also device context. 
  14711.  
  14712.  metafile - A file containing a series of attributes that set color, shape, and 
  14713.     size, usually of a picture or a drawing. Using a program that can interpret 
  14714.     these attributes, a user can view the assembled image. 
  14715.  
  14716.  metafile device context - A logical description of a data destination that is 
  14717.     a metafile which is used for graphics interchange. See also device context. 
  14718.  
  14719.  mickey - A unit of measurement for physical mouse motion whose value depends 
  14720.     on the mouse device driver that is currently loaded. 
  14721.  
  14722.  mixed character string - A string containing a mixture of one-byte and kanji 
  14723.     or Hangeul (two-byte) characters. 
  14724.  
  14725.  mutex semaphore - (Mutual exclusion semaphore). A semaphore that enables 
  14726.     threads to serialize their access to resources. Only the thread that 
  14727.     currently owns the mutex semaphore can gain access to the resource, thus 
  14728.     preventing one thread from interrupting operations being performed by 
  14729.     another. 
  14730.  
  14731.  
  14732. ΓòÉΓòÉΓòÉ <hidden> Glossary - N ΓòÉΓòÉΓòÉ
  14733.  
  14734.  N 
  14735.  
  14736.  named pipe - A named buffer that provides client-to-server, server-to-client 
  14737.     or duplex communication between unrelated processes. Contrast with unnamed 
  14738.     pipe. 
  14739.  
  14740.  notification callout - The feature that provides for a routine to be called on 
  14741.     completion of an input/output request. See also notification routine. 
  14742.  
  14743.  notification routine - The routine indicated in an input/output request block 
  14744.     to be called on completion of that request. See also notification callout. 
  14745.  
  14746.  null-terminated string - A string of (n+1) characters where the (n+1)th 
  14747.     character is the "null" character (X'00') and is used to represent an 
  14748.     n-character string with implicit length. Also called a "zero-terminated" 
  14749.     string or an "ASCIIZ". string. 
  14750.  
  14751.  
  14752. ΓòÉΓòÉΓòÉ <hidden> Glossary - O ΓòÉΓòÉΓòÉ
  14753.  
  14754.  O 
  14755.  
  14756.  
  14757. ΓòÉΓòÉΓòÉ <hidden> Glossary - P ΓòÉΓòÉΓòÉ
  14758.  
  14759.  P 
  14760.  
  14761.  palette - A list of colors assigned to various areas on a panel. A user can 
  14762.     change the color of these areas. 
  14763.  
  14764.  PDD - Physical Device Driver. 
  14765.  
  14766.  PDE - PageDirectoryEntry. 
  14767.  
  14768.  pel - Picture element. 
  14769.  
  14770.  permissible action - In a conceptual schema language, an action conforming to 
  14771.     specified rules or constraints that changes a presumably consistent 
  14772.     collection of sentences into a consistent one or makes known a consistent 
  14773.     one present in the information base or conceptual schema. 
  14774.  
  14775.  phase alignment - Aligning source bits with destination bits. Often required 
  14776.     in a Bitblt function move operation where byte blocks are moved on bit 
  14777.     boundaries. 
  14778.  
  14779.  physical address - A 32-bit byte address giving the actual address in physical 
  14780.     storage for a data item. 
  14781.  
  14782.  physical device driver (PDD) - A system interface that handles hardware 
  14783.     interrupts and supports a set of input and output functions. 
  14784.  
  14785.  pipe - See named pipe, unnamed pipe. 
  14786.  
  14787.  picture element (pel, pixel) -  (1) In computer graphics, the smallest element 
  14788.     of a display surface that can be independently assigned color and 
  14789.     intensity. (T). (2) The area of the finest detail that can be reproduced 
  14790.     effectively on the recording medium.  (3) An element of a raster pattern 
  14791.     about which a toned area on a photoconductor can appear. 
  14792.  
  14793.  PIO - Programmed I/O. 
  14794.  
  14795.  pixel - Picture element. 
  14796.  
  14797.  polyfillet - A curve based on a sequence of lines. The curve is tangential to 
  14798.     the end points of the first and last lines, and tangential also to the 
  14799.     midpoints of all other lines. 
  14800.  
  14801.  polyline - In computer graphics, a sequence of adjoining lines. 
  14802.  
  14803.  pop - To remove an item from the top of a pushdown list. Contrast with push. 
  14804.  
  14805.  prefetch - To locate and load a quantity of data in anticipation of a request. 
  14806.  
  14807.  presence-check function - A Ring 3 (non-privileged) .EXE program that 
  14808.     determines whether a given hardware interface is present on a workstation. 
  14809.  
  14810.  PRESENCECHECK - A keyword, interpreted by the DDINSTAL utility, to determine 
  14811.     whether to process the device driver profile file, based on the return code 
  14812.     from PRESENCECHECK. 
  14813.  
  14814.  printer driver - A file that describes the physical characteristics of a 
  14815.     printer, plotter, or other peripheral device, and is used to convert 
  14816.     graphics and text into device-specific data at the time of printing or 
  14817.     plotting. 
  14818.  
  14819.  Print Manager - In the Presentation Manager, the part of the spooler that 
  14820.     manages the spooling process. It also allows the user to view print queues 
  14821.     and to manipulate print jobs. 
  14822.  
  14823.  privilege level - A method of protection that allows only certain program 
  14824.     instructions to be used by certain programs. 
  14825.  
  14826.  program group - Several programs that can be acted upon as a single entity. 
  14827.  
  14828.  protect mode - A method of program operation that limits or prevents access to 
  14829.     certain instructions or areas of storage. Contrast with real mode. 
  14830.  
  14831.  push - To add an item to the top of a pushdown list. Contrast with pop. 
  14832.  
  14833.  
  14834. ΓòÉΓòÉΓòÉ <hidden> Glossary - Q ΓòÉΓòÉΓòÉ
  14835.  
  14836.  Q 
  14837.  
  14838.  queued device context - A logical description of a data destination (for 
  14839.     example, a printer or plotter) where the output is to go through the 
  14840.     spooler. See also device context. 
  14841.  
  14842.  
  14843. ΓòÉΓòÉΓòÉ <hidden> Glossary - R ΓòÉΓòÉΓòÉ
  14844.  
  14845.  R 
  14846.  
  14847.  read-only memory basic input/output system (ROM-BIOS) - Microcode in read-only 
  14848.     memory that controls basic input/output operations such as interactions 
  14849.     with cassettes, diskette drives, hard disk drives, and the keyboard. See 
  14850.     also BIOS, NetBIOS. 
  14851.  
  14852.     Note:  ROM BIOS allows the user to write programs and add or remove devices 
  14853.     without concern for characteristics such as device addresses. 
  14854.  
  14855.  real mode - In the OS/2 operating system, a method of program operation that 
  14856.     does not limit or prevent access to any instructions or areas of storage. 
  14857.     The operating system loads the entire program into storage and gives the 
  14858.     program access to all system resources. 
  14859.  
  14860.  reentrant - The attribute of a program or routine that allows the same copy of 
  14861.     the program or routine to be used concurrently by two or more tasks. 
  14862.  
  14863.  removable-media indicator - A flag (bit) indicating that a device permits 
  14864.     media removal. 
  14865.  
  14866.  resource - The means of providing extra information used in the definition of 
  14867.     a window. A resource can contain definitions of fonts, templates, 
  14868.     accelerators and mnemonics; the definitions are held in a resource file. 
  14869.  
  14870.  resurrection - The Presentation Manager event that occurs when switched back 
  14871.     from a full-screen DOS or WIN-OS/2 session. 
  14872.  
  14873.  RETF - Return far. 
  14874.  
  14875.  reverse video - A form of highlighting a character, field, or cursor by 
  14876.     reversing the color of the character, field, or cursor with its background; 
  14877.     for example, changing a red character on a black background to a black 
  14878.     character on a red background. 
  14879.  
  14880.  ROM BIOS - Read-Only Memory Basic Input/Output System. 
  14881.  
  14882.  ROP - Raster operation. 
  14883.  
  14884.  RTC - Real-Time Clock. 
  14885.  
  14886.  
  14887. ΓòÉΓòÉΓòÉ <hidden> Glossary - S ΓòÉΓòÉΓòÉ
  14888.  
  14889.  S 
  14890.  
  14891.  SBCS - Single-byte character set 
  14892.  
  14893.  SCB - See subsystem control block architecture. 
  14894.  
  14895.  screen device context - A logical description of a data destination that is a 
  14896.     particular window on the screen. See also device context. 
  14897.  
  14898.  SCSI - Small Computer System Interface. 
  14899.  
  14900.  seamless windows - An architecture contained within OS/2 which permits one or 
  14901.     more applications to share windowed desktop graphical space and other 
  14902.     resources, while executing concurrently. Application session windows 
  14903.     managed by seamless windows can share border information, and pointing 
  14904.     device transitions from session to session are handled smoothly and 
  14905.     transparently. 
  14906.  
  14907.  second-party DMA adapter - See DMA slave. 
  14908.  
  14909.  semaphore -  (1) A variable that is used to enforce mutual exclusion. (T)  (2) 
  14910.     An indicator used to control access to a file; for example, in a multiuser 
  14911.     application, a flag that prevents simultaneous access to a file. (3) An 
  14912.     entity used to control access to system resources. Processes can be locked 
  14913.     to a resource with semaphores if the processes follow certain programming 
  14914.     conventions. 
  14915.  
  14916.  sense data - Data which describes an I/O error as defined by the ANSI SCSI 
  14917.     specifications. 
  14918.  
  14919.  single-byte character set (SBCS) - A character set in which each character is 
  14920.     represented by a one-byte code. Contrast with double-byte character set. 
  14921.  
  14922.  Small Computer System Interface (SCSI) - An input and output bus that provides 
  14923.     a standard interface between the OS/2 multimedia system and peripheral 
  14924.     devices. 
  14925.  
  14926.  spline curve - In computer graphics, a shape created when a user specifies a 
  14927.     series of points and the computer software draws a curve that smoothly 
  14928.     approaches those points. 
  14929.  
  14930.  spooler - A program that intercepts data going to a device driver and writes 
  14931.     it to a disk. The data is later printed or plotted when the required device 
  14932.     is available. A spooler prevents output from different sources from being 
  14933.     intermixed. 
  14934.  
  14935.  synchronous - Pertaining to two or more processes that depend upon the 
  14936.     occurrence of specific events such as common timing signals. 
  14937.  
  14938.  
  14939. ΓòÉΓòÉΓòÉ <hidden> Glossary - T ΓòÉΓòÉΓòÉ
  14940.  
  14941.  T 
  14942.  
  14943.  text window - See VIO window. 
  14944.  
  14945.  thread - The smallest unit of operation to be performed within a process. 
  14946.  
  14947.  thunk - term used to describe the process of address conversion, stack, and 
  14948.     structure realignment that is necessary when passing control between 16-bit 
  14949.     and 32-bit modules. 
  14950.  
  14951.  thunk layer - An interface that converts 32-bit parameters to 16-bit 
  14952.     parameters, and maps linear addresses to segmented addresses. 
  14953.  
  14954.  time slice -  (1) The period of processing time allocated for running a 
  14955.     program. (2) An interval of time on the processing unit allocated for use 
  14956.     in performing a task. After the interval has expired, processing unit time 
  14957.     is allocated to another task, so a task cannot monopolize processing unit 
  14958.     time beyond a fixed limit. 
  14959.  
  14960.  tuple - In a relational database, a part of a relation that uniquely describes 
  14961.     an entity and its attribute. 
  14962.  
  14963.  
  14964. ΓòÉΓòÉΓòÉ <hidden> Glossary - U ΓòÉΓòÉΓòÉ
  14965.  
  14966.  U 
  14967.  
  14968.  unnamed pipe - A circular buffer created in memory; used by related processes 
  14969.     to communicate with one another. Contrast with named pipe. 
  14970.  
  14971.  
  14972. ΓòÉΓòÉΓòÉ <hidden> Glossary - V ΓòÉΓòÉΓòÉ
  14973.  
  14974.  V 
  14975.  
  14976.  VBIOS - Virtual BIOS device driver 
  14977.  
  14978.  VCMOS - Virtual CMOS device driver 
  14979.  
  14980.  VDD - Virtual device driver 
  14981.  
  14982.  VDH - Virtual video Device Handler 
  14983.  
  14984.  VDM - Virtual DOS Machine; use DOS session. 
  14985.  
  14986.  VDMA - Virtual Direct Memory Access device driver 
  14987.  
  14988.  VDSK - Virtual hard DiSK device driver 
  14989.  
  14990.  video graphics adapter (VGA) - A computer adapter that provides 
  14991.     high-resolution graphics and a total of 256 colors. 
  14992.  
  14993.  VIO - Virtual Input/Output 
  14994.  
  14995.  VIRR - Virtual Interrupt Request Register 
  14996.  
  14997.  Virtual Device Driver (VDD) - In the OS/2 operating system, a type of device 
  14998.     driver used by DOS programs running in a DOS session to access devices, 
  14999.     such as the screen or mouse, which must be shared with other processes in 
  15000.     the system. The virtual device driver maps DOS device commands to the 
  15001.     normal (physical) device driver under OS/2 2.0 and later versions of the 
  15002.     operating system. 
  15003.  
  15004.  virtual DevHlp (VDH) - Kernel (linear memory, paging, hardware interrupt, 
  15005.     event control, port control) services provided to virtual device drivers. 
  15006.  
  15007.  virtual I/O (VIO) - A facility that pages data into and out of external page 
  15008.     storage. 
  15009.  
  15010.  virtual memory - Synonym for virtual storage. 
  15011.  
  15012.  Virtual Programmable Interrupt Controller - Virtualizes the 8259 Programmable 
  15013.     Interrupt Controller (PIC). A special virtual device driver, in that it 
  15014.     provides services to other virtual device drivers. 
  15015.  
  15016.  virtual storage - Addressable space that is apparent to the user as the 
  15017.     processor storage space, from which the instructions and the data are 
  15018.     mapped into the processor storage locations. Synonymous with virtual 
  15019.     memory. 
  15020.  
  15021.  visible region - A window's presentation space clipped to the boundary of the 
  15022.     window and the boundaries of any overlying window. 
  15023.  
  15024.  VPIC - Virtual Programmable Interrupt Controller device driver. 
  15025.  
  15026.  VRAM - Video Random-Access Memory. 
  15027.  
  15028.  VTIMER - Virtual TIMER device driver. 
  15029.  
  15030.  V86 mode - Virtual 8086 mode of the 80386 CPU. 
  15031.  
  15032.  
  15033. ΓòÉΓòÉΓòÉ <hidden> Glossary - W ΓòÉΓòÉΓòÉ
  15034.  
  15035.  W 
  15036.  
  15037.  window coordinates - A set of coordinates by which a window position or size 
  15038.     is defined; measured in device units, or pels. 
  15039.  
  15040.  
  15041. ΓòÉΓòÉΓòÉ <hidden> Glossary - X ΓòÉΓòÉΓòÉ
  15042.  
  15043.  X 
  15044.  
  15045.  
  15046. ΓòÉΓòÉΓòÉ <hidden> Glossary - Y ΓòÉΓòÉΓòÉ
  15047.  
  15048.  Y 
  15049.  
  15050.     There are no glossary terms for this initial letter. 
  15051.  
  15052.  
  15053. ΓòÉΓòÉΓòÉ <hidden> Glossary - Z ΓòÉΓòÉΓòÉ
  15054.  
  15055.  Z 
  15056.