ۥ-x@ -:fPQPQQXQXQXQXQX|X,\\\\ha]d]\_`Vdeeee $e .e6e8e8e8e8e8e8eVe4eVeQXVeVeT CardSoft 3.1 Software Technical Reference Copyright (c) 1992-1994, SystemSoft Corporation. All Rights Reserved. SystemSoft Corporation 313 Speen Street Natick MA 01760 No part of this publication may be reproduced, transmitted, transcribed, stored in a retrieval system, or translated into any language or computer language, in any form, or by any means, electronic, mechanical, magnetic, optical, chemical, manual or otherwise, without the prior written permission of SystemSoft Corporation. Disclaimer SystemSoft Corporation provides this document and the programs "as is" without warranty of any kind, either expressed or implied, including, but not limited to, the implied warranties of merchantability or fitness for a particular purpose. This document could contain technical inaccuracies or typographical errors. Changes are periodically made to the information herein; these changes will be incorporated in future revisions of this document. SystemSoft Corporation is under no obligation to notify any person of the changes. The following trademarks are used in this document: CardID is a trademark of SystemSoft Corporation. CardSoft is a trademark of SystemSoft Corporation. Microsoft is a registered trademark and Windows is a trademark of Microsoft Corporation. PCMCIA is a trademark of PCMCIA Corporation. SystemSoft is a registered trademark of SystemSoft Corporation. CardSoft 3.1 Software Technical Reference Document Revision: 0.1 May 1994 Table of ContentsTOC \o Preface vii Reference Documentation vii Chapter 1 CardSoft PCMCIA Software Suite Socket Services 1-1 Card Services (CS.EXE) 1-1 Card Identification (CARDID.EXE) 1-1 SRAM Card Driver (MTSRAM.EXE) 1-1 IDE/ATA Support (ATADRV.EXE and ATAINIT.EXE) 1-1 Card Services Power Management Enabler (CS_APM.EXE) 1-1 Windows Support Drivers (SSVCD.386, SSVRDD.386, and SSCOMM.DRV) 1-2 CardSoft for Windows Dynamic Link Library (SSWINCS.DLL) 1-2 CardSoft Utilities and Commands 1-2 Installation Program (INSTALL.EXE) 1-2 Configuration Utility (CONFIG.EXE) 1-2 Resource Allocation Utility (CSALLOC.EXE) 1-2 Card Information Utility (CARDINFO.EXE) 1-2 Windows Support Installation Utility (SETUP.EXE) 1-2 CardBoot (CARDBOOT.ROM, ENDBOOTB.COM, ENDBOOTR.COM, and FLASHFMT.EXE) 1-3 Installing the CardBoot Option ROM 1-3 Chapter 2 Using the Configuration Utility Configuration Utility Help 2-1 Running the Configuration Utility 2-1 Accessing Menu Items 2-2 Card Recognition/Configuration Process 2-2 Creating a New Card Library File 2-3 Opening a Card Library File 2-3 Opening a Second Card Library File 2-4 Viewing a Card Library File 2-4 Creating New Card Library Records 2-4 Viewing a Card Library Record 2-4 Deleting Records From a Card Library File 2-4 Copying Records From a Card Library File 2-4 Saving a Card Library File 2-5 Closing a Card Library File 2-5 Exiting the Configuration Utility 2-5 Editing Card Recognition Parameters 2-5 Recognition Algorithms 2-6 Defining the Card Recognition Configuration 2-7 Configuration Algorithms 2-7 Using Custom Code 2-7 Defining Specific Card Recognition Parameters 2-8 Defining Parameters for Executable Files 2-11 Chapter 3 Configuring Driver Parameters DEVICEHIGH Line Parameters 3-1 Socket Services 3-2 Intel 82365SL PCIC (ss365sl.exe or sl365lp.exe) 3-2 IBM ThinkPad 720 (ssibm720.exe) 3-2 DataBook TCIC-2/N (ssdbook.exe) 3-3 Cirrus CL-PD67xx (sscirrus.exe) 3-5 Intel AT2092AA PPEC (ssppec.exe) 3-5 Ricoh RF5C266/RF5C366 (ssricoh.exe) 3-5 Vadem VG365/465/468 (ssvadem.exe) 3-5 VLSI VL82C146 (ssvlsi.exe) 3-5 Card Services (cs.exe) 3-6 CSALLOC 3-8 SRAM Driver (MTSRAM.EXE) 3-9 Memory Technology Driver (MTDDRV.EXE) 3-10 IDE/ATA Device Driver (atadrv.exe) 3-10 Configuration Parameters 3-10 DEVICEHIGH Line Parameters 3-10 Disk Partitioning Utility (atainit.exe) 3-11 ATAINIT Return Code 3-11 Flash File System Executables 3-11 Card-Specific Memory Technology Drivers 3-11 MTAA.EXE, MTAB.EXE, MTI1.EXE, MTI2P.EXE 3-11 Appendix A CardID The [Common] Section A-1 The [Libraries] Section A-3 Comment Record A-3 Card Services Resource Record A-3 Card Recognition and Configuration Record A-4 Card Recognition Fields A-5 Card Configuration Fields A-7 Appendix B Card Services Vendor-Specific API Definitions Subcomponent IDs B-1 RegisterSpecialClient B-2 SpecialGetStatus B-3 Suspend/Resume B-4 Socket Suspend/Resume B-5 Ring Resume B-6 CardBoot B-7 BeepControl B-9 GetWindowInfo B-10 Appendix C Socket Services Vendor-Specific API Definitions Subcomponent IDs C-1 Vendor Specific Functions C-1 Set/Reset DMA Mode C-1 Get CardBoot Info C-2 Re-Initialize Adapter After Resume C-3 Set/Reset Ring Indicate Mode C-3 Appendix D SystemSoft CardSoft API for Windows Component Descriptions D-2 Card Services API Description D-2 Socket Services API Description D-4 Appendix E Extensions to the Card Services Specification Provided by CardID GetClientInfo Subfunctions E-1 GetGCIExtensionsInfo (Info Subfunction 80h) E-2 GetCardID (Info Subfunction 81h) E-3 Reserved Functions E-3 GetCardIDArgList (Subfunction 86h) E-4 SetCardIDArgList (Subfunction 87h) E-5 GetLastError (Subfunction 8Fh) E-5 Appendix F Card Services Vendor-Specific Callbacks Socket Configuration (83h) F-1  Preface This document is written for software developers who need detailed information on SystemSoft's CardSoft software suite. The information contained within this document is intended for a technical audience. For instructions on installing and using the CardSoft software, refer to the CardSoft 3.1 Software User's Guide. For information on using the Flash File System, refer to the Flash File System User's Guide. Reference Documentation The following are available from the PCMCIA Corporation: PCMCIA PC Card Standard Release 2.10 PCMCIA Socket Services Release 2.10 PCMCIA Card Services 2.10 PCMCIA PC Card ATA Specification Release 1.01 seq chapter \hChapter 1 CardSoftTM PCMCIATM Software Suite SystemSoft's CardSoft PCMCIA solution provides OEMs with a complete software solution for integrating PCMCIA controllers and slots into their computers. The CardSoft software suite provides the end user with a complete "plug and play" system software solution for both DOS and WindowsSYMBOL 228 \f "Symbol" 3.1. This solution consists of the following drivers and utilities. Please be aware that your particular configuration may not include all drivers and utilities. Socket Services Socket Services provides a standard software interface to host controller chips (such as the Intel 82365SL PCIC, Intel AT2092AA PPEC, ASCII, Cirrus CL-PD67xx, Motorola ScatKat/LapKat, IBM ThinkPad 720, Ricoh RF5C266/RF5C366, Vadem VG365/VG465/VG468, VLSI VL82C145, and the DataBook TCIC-2/N) and isolates the socket hardware from higher level software. Socket Services includes functions such as configuring a socket for an I/O or memory interface and controlling socket power voltages. The Socket Services driver that you receive depends upon the host controller chip that you are supporting. Card Services (CS.EXE) The Card Services driver manages competition for system resources and manages adapter and card resources and configuration. Card Identification (CARDID.EXE) This client device driver detects the insertion and removal of PC cards, automatically determines the card type upon insertion, and then configures the card and slot/adapter. SRAM Card Driver (MTSRAM.EXE) This SystemSoft device driver recognizes and supports SRAM cards. IDE/ATA Support (ATADRV.EXE and ATAINIT.EXE) ATADRV.EXE is a block device driver that supports ATA Type II Flash Disk or ATA Type III Hard Disk PC cards. The ATAINIT.EXE utility places a hard disk partition table onto a blank ATA drive. This utility initializes the ATA drive in the same manner as FDISK does with a standard hard drive. Card Services Power Management Enabler (CS_APM.EXE) CS_APM.EXE is a DOS-based background task that enables Card Services to process system power management Suspend/Resume requests. When a Suspend request is initiated by system power managment software, CS_APM notifies Card Services, which then verifies that the system PCMCIA slots are idle, and can be powered down. Card Services then passes this information back to CS_APM, which then notifies the power management software that the sockets can be powered off. When a Resume request is received by CS_APM, it informs Card Services, which then powers the sockets on again. Windows Support Drivers (SSVCD.386, SSVRDD.386, and SSCOMM.DRV) These drivers permit hot insertion/removal of communications I/O, memory, and removable drive cards within Windows. They are provided only if you received CardSoft with Windows support. CardSoft for Windows Dynamic Link Library (SSWINCS.DLL) This Windows dynamic link library (DLL) is also required to support hot insertion/removal of PC Cards within a Windows environment. This DLL is provided only if you received CardSoft with Windows support. CardSoft Utilities and Commands Installation Program (INSTALL.EXE) This easy-to-use program installs all or some of the CardSoft components onto the system. Users have the option of a standard or custom installation. Configuration Utility (CONFIG.EXE) The basic Configuration Utility enables you to SYMBOL 183 \f "Symbol" \s 9 \h Define the general configuration settings for fax/modem, ATA, and network cards. SYMBOL 183 \f "Symbol" \s 9 \h Quickly view and change the system resources that are made available to Card Services. SYMBOL 183 \f "Symbol" \s 9 \h Select the PCMCIA events for which a system beep code will be emitted. In addition, a Configuration Utility for OEM developers enables you to: SYMBOL 183 \f "Symbol" \s 9 \h Create or modify card records that define configuration and recognition parameters for specific PC cards, and save these records in a Card Library. SYMBOL 183 \f "Symbol" \s 9 \h Configure CardSoft to your specific system requirements by modifying the various parameters for the CardSoft executable files (making it unnecessary to configure CardSoft with command line/device line switches). This version of the Configuration Utility enables OEMs to more easily define the configuration and recognition of new PC cards. Resource Allocation Utility (CSALLOC.EXE) CSALLOC is a DOS utility that scans the system for available memory, I/O port, and IRQ resources, updates the file CSALLOC.INI with this information, then displays the list of available resources that can be used by Card Services. In addition, keywords can be added to CSALLOC.INI to force CSALLOC to exclude resources from being scanned, or include resources that are not detectable (due to security features or hardware design). Other keywords enable you to reserve resources that may be specifically needed by a particular PC card or other system component. Card Information Utility (CARDINFO.EXE) CARDINFO is a DOS utility that scans the PCMCIA slots on the system and lists information about the cards in these slots. It also lists any warnings or error messages that may have occurred during the configuration of the cards by the CardSoft drivers. Windows Support Installation Utility (SETUP.EXE) This installation utility automatically installs the Windows support files and DLL file, and automatically configures your Windows environment for CardSoft by modifying the Windows SYSTEM.INI file. This file is provided only if you received CardSoft with Windows support. CardBoot (CARDBOOT.ROM, ENDBOOTB.COM, ENDBOOTR.COM, and FLASHFMT.EXE) CardBoot is a suite of components that provide boot capabilities to Intel Series II cards: CARDBOOT.ROM is the Boot Extension ROM. It redirects reads of Drive A to reads of the PC card. It is a binary image of a ROM file that should be put into the system ROM and will be found during the standard BIOS extension ROM scan. ENDBOOTB.COM and ENDBOOTR.COM turn off the Drive A redirection, making diskette Drive A accessible after the boot from the PC card is completed. ENDBOOTB.COM is used if the boot code is included in the INT13 handler of a SystemSoft BIOS. ENDBOOTR.COM is used if the boot code is included in extension ROM. FLASHFMT.EXE is the utility for creating a bootable partition on a Series II Flash card. For more information on these components, refer to the CardSoft 3.1 Software User's Guide or the Flash File System User's Guide. Installing the CardBoot Option ROM To install the CardBoot Option ROM: 1. Use a ROM locator program (such as SystemSoft's ROMLOC program) to combine the CARDBOOT.ROM file with the BIOS ROM image (this creates a file approximately 128K in size). CardBoot can be located at any available address in the range C0000-EFFFF. 2. Use a PROM programmer to burn the new file onto the appropriate type of ROM. 3. Insert the new ROM into the system. 4. At system boot, the BIOS POST will find CardBoot during its normal scan for Option ROMs, and will call the CardBoot initialization routine. 5. Once CardBoot is activated, follow the instructions in the CardSoft 3.1 Software User's Guide. seq chapter \hChapter 2 Using the Configuration Utility This chapter describes how to use the Configuration Utility to configure the system's PC card subsystem, and to create and manage card library records that contain the configuration settings and tuple information required for the card to work properly. The basic Configuration Utility, config, enables end users to: SYMBOL 183 \f "Symbol" \s 9 \h Define the general configuration settings for fax/modem, modem, ATA drive, and network cards. SYMBOL 183 \f "Symbol" \s 9 \h Quickly view and change the system resources that are made available to Card Services. SYMBOL 183 \f "Symbol" \s 9 \h Select the PCMCIA events for which system beep codes will be emitted. For information on this version of the Configuration Utility, refer to the CardSoft 3.1 Software User's Guide. In addition, a Configuration Utility for OEM developers, config /all, enables you to SYMBOL 183 \f "Symbol" \s 9 \h Create or modify card records that define configuration and recognition parameters for specific PC Cards, and save these records in a Card Library. SYMBOL 183 \f "Symbol" \s 9 \h Configure CardSoft to your specific system requirements by modifying the various parameters for the CardSoft executable files (making it unnecessary to configure CardSoft with command line/device line switches). This version of the Configuration Utility enables OEMs to more easily define the configuration and recognition of new PC cards. The Configuration Utility makes modifications to the CARDID.INI and CSALLOC.INI files (the initiator files for CardID and CSALLOC). When modifications are made to any of the CardSoft components, the time and date of the filename is changed to reflect the change (the size of the file, however, never changes). Note Any time modifications are made to CARDID.INI or CSALLOC.INI, you must reboot the system for the changes to take effect. Configuration Utility Help On-line help is available for many of the Configuration Utility fields. To access on-line help for a particular field, position the cursor in the field (or highlight the field), then press F1 (or click on the button, if available). Running the Configuration Utility The Configuration Utility is an easy-to-use program for changing the CardSoft components. Its interface is a windowed type with pull down menus. You have the option of using the keyboard, a pointing device, or both to maneuver around the screen. To run the Configuration Utility, change to the directory containing the utility (i.e., cd cardsoft), then type config /all. If you only want to edit the card configuration settings or run the Resource Allocation utility, type config. Depending upon the method used to start the Configuration Utility, one of the following screens is displayed. Notice that without the /all switch, the Edit pull down menu is not available. EMBED MSDraw \* mergeformat EMBED MSDraw \* mergeformat The initial Configuration Utility screen consists of a menu bar at the top and a help text section at the bottom. The middle of the screen is blank. When a Card Library file is selected, the card records in that file are displayed on the left in the Current File list box. A second Card Library can be opened in view/copy mode; the records in this file are displayed on the right in the Card Library list box. Accessing Menu Items The method for accessing menu items is the same for each Configuration Utility. Each menu bar item contains a pull down menu with various items to choose from. To access a pull down menu, click the left mouse button on the desired item or press Alt + the highlighted key. For example, to access the File menu, click on the word File or press from the keyboard. When the pull down menu appears, select the desired item by: SYMBOL 183 \f "Symbol" \s 9 \h Clicking on it with the left mouse button SYMBOL 183 \f "Symbol" \s 9 \h Pressing the down arrow key to highlight the item and then pressing , or SYMBOL 183 \f "Symbol" \s 9 \h Pressing the key that corresponds to the highlighted letter. Card Recognition/Configuration Process This section describes the basic process for defining card recognition and configuration settings for a specific PC card from within the Configuration Utility. To define these settings, you have to run the config /all version of the utility. For specific information on each step in the process, and whether or not additional steps are required for the card being defined, refer to the appropriate sections in this manual. Note If you only need to edit the general configuration parameters (that is, those that apply to all cards of a particular type), use the config command, and, if necessary, refer to the CardSoft 3.1 Software User's Guide for instructions. 1. Open an existing card library (File SYMBOL 222 \f "Symbol" Open), or create a new card library (File SYMBOL 222 \f "Symbol" New). 2. Select an existing card library record and edit it (Edit SYMBOL 222 \f "Symbol" Edit Current), or create a new card library record (Edit SYMBOL 222 \f "Symbol" Create New Record). Either method displays the Card Recognition screen. 3. Specify the Record ID, Card Type, and Recognition Algorithm. 4. Select and enter the appropriate information. 5. Select to display the Card Configuration screen. 6. Specify the Configuration Algorithm. 7. To use custom configuration or removal code, select these items, then select / to enter the file names. 8. Select to display the Specify Configuration Parameters screen. 9. Specify the types of CONFIG and CFTABLE_ENTRY tuples you want to edit by selecting the appropriate items, then select the matching items to specify the tuple values. 10. Return to the main menu and save the new record in the card library (File SYMBOL 222 \f "Symbol" Save) or (File SYMBOL 222 \f "Symbol" Save As). Creating a New Card Library File New Card Library files can be created through the Configuration Utility. Once a new Card Library file is created, you can copy records into it from other Card Library files, or you can create new records and add them to the file. To create a new Card Library file, select New from the File pull down menu. The message "Untitled (Card Library)" is displayed above the Current File box on the left side of the main menu. Refer to "Creating New Card Library Records" for information on how to create new records for the file, or refer to "Copying Records from a Card Library File" for information on how to copy records from an existing Card Library to the new Card Library. Opening a Card Library File To open an existing Card Library file for an editing session, select Open from the File pull down menu. The following dialog box appears. EMBED MSDraw \* mergeformat Type the file name here, then select . OR Select the drive/directory. Then select the file from the File List box, and select . (Use the TAB key to move from area to area.)  After opening a Card Library file, the PC card records in the file are displayed in the Current File list box on the left side of the main menu. You can then select the record you want to edit by clicking on the item, or by using the SYMBOL 226 \f "Wingdings" key to highlight it. Once the record is selected, you can edit/view it. Opening a Second Card Library File You can also open a second Card Library file in order to copy records from it into the Card Library file displayed in the Current File list box. The second Card Library is opened in read-only mode; records can be copied, but they cannot be modified. To open a second Card Library file, select Open Card Library from the File pull down menu. The Open File dialog box appears, enabling you to select the file you want to open. The records in the second Card Library file are displayed in the Card Library List box on the right side of the main menu. Viewing a Card Library File Card Library files can also be opened in view-only mode. When you open a file in this mode, you cannot edit or copy the records in the file (all Edit commands on the Edit pull down menu are grayed out). To open a file in view-only mode, select View from the File pull down menu. The Open File dialog box is displayed, enabling you to select the file whose records you want to view. Creating New Card Library Records To create new PC card configuration records in a Card Library file, open the Card Library file to which you want to add records, then select Create New Record from the Edit pull down menu. Type in the name for the record (usually the card name) in the Record ID field. Then refer to "Editing Card Recognition Parameters" and "Defining the Card Recognition Configuration" for information on how to configure the card for recognition by Card Services. Viewing a Card Library Record Card Library records can be opened in view-only mode. To open a record in view-only mode, highlight the record in the Current File list box, then select View Current Record. The Card Recognition screen appears (showing the Card Type and Recognition Algorithm). From the Card Recognition screen, you can click on to view the Configuration Algorithm setting on the Card Configuration screen. For more information on Card Type, Recognition Algorithms, and Configuration Algorithms, refer to "Editing Card Recognition Parameters" and "Defining the Card Recognition Configuration". Deleting Records From a Card Library File Records can be deleted from a Card Library file that is opened in read/write mode (but not in view-only mode). To delete a record from a Card Library file, open the file using the Open command on the File pull down menu. Then highlight the record you want to delete and select Delete From Library from the Edit pull down menu. A confirmation box is displayed. Select to delete the file, or select to cancel the delete operation. Copying Records From a Card Library File Records can be copied from a Card Library file that is opened in read-only mode into a Card Library file opened in read/write mode. To copy a Card Library file: 1. Open the destination Card Library file using the Open command on the File pull down menu. The records in this file are listed on the left side of the main screen. 2. Open the source Card Library file using the Open Card Library command on the File pull down menu. The records in this file are listed on the right side of the main screen. 3. In the Card Library list box, highlight the record that you want to copy. Then select Copy From Library from the Edit pull down menu. The name of the record should now appear in the Current File list box. Saving a Card Library File Once you have modified a Card Library file, you must save your changes. To save the file under its original name, select Save from the File pull down menu. To save the file as a new file, select Save As from the File pull down menu, then type the new file name in the File Name box that is displayed. Closing a Card Library File To close a Card Library file that was opened in view-only mode (that is, the Card Library file displayed on the right side of the main menu), select Close Card Library from the File pull down menu. Exiting the Configuration Utility To exit the Configuration Utility, select Exit from the File pull down menu. If the Current File has been modified, a dialog box is displayed that enables you to save your changes or discard them before exiting. Select to save your changes, to discard them, or to return to the main menu and continue your editing session. Editing Card Recognition Parameters To enable Card Services to recognize an inserted PC card, you must define the recognition parameters for the card. This involves: SYMBOL 183 \f "Symbol" \s 9 \h Specifying the Card Type SYMBOL 183 \f "Symbol" \s 9 \h Selecting the Recognition Algorithm SYMBOL 183 \f "Symbol" \s 9 \h Selecting the Configuration Algorithm In addition, you may want to set specific configuration parameters for the card, or you may want to use custom configuration code or custom removal code to configure the card. To define the Card Recognition parameters for a card, select the card record from the Current File list box, then select Edit Current Record from the Edit pull down menu. The Card Recognition screen is displayed. EMBED MSDraw \* mergeformat  Type the record name in the Record ID field. This is the text that appears in the Current File list box. Select a card type by clicking on the appropriate type, or by highlighting it and pressing the space bar. If not listed, select "Other" and type the name in the Card Type Name field.  To edit/view the detail record for the selected Recognition Algorithm, select Edit (or View) Recognition Detail. Select the Recognition Algorithm by clicking on the desired item, or by highlighting it and pressing the space bar.    When you are done defining the Card Recognition information, click on . The Card Configuration screen appears. Refer to "Defining the Card Recognition Configuration" to continue. Recognition Algorithms This section describes the available recognition algorithms. CIS Manufacturer/Product Data Looks up the Level 1 Version Tuple in the Card Information Structure (CIS) on the card. If this recognition algorithm is selected, the following screen appears when you select Edit/View Recognition Detail. It contains four fields. To match any or all of the strings in these fields with the CIS information on the card, a trailing star can be used as a wildcard character at the end of each string. If a string is omitted, it is not matched with the CIS when card recognition is attempted. For more information on Level 1 Version Tuples, refer to the PCMCIA PC Card Standard Release 2.10, available from the PCMCIA Corporation. EMBED MSDraw \* mergeformat CIS Literal Bytes Enables you to load a file that specifies a starting offset, length, and number of bytes to match. Select this option for defective CISs (that is, when you can't find the Level 1 Version Tuple). This function is not currently supported. Generic Recognition by Card Type Recognizes modem and ATA card types generically. When you select this option, no additional card recognition information needs to be defined (that is, no Recognition Detail screen is available). This option can only be used for modems and ATA cards. Custom Code Use this option to select a customized code file that you have written to support a particular card type. The specified file must be in a certain format, as defined in the Library Specification in Appendix A. EMBED MSDraw \* mergeformat Type in a search string OR Select the drive/directory, then select the file name in the File List box and click on .   Defining the Card Recognition Configuration When you select from the Card Recognition screen, the Card Configuration screen appears. This screen is where you select the Configuration Algorithm and specify whether or not you want to use Custom Configuration code or Custom Removal code. EMBED MSDraw \* mergeformat If you selected 'Custom Configuration Code' or 'Custom Removal Code', use these selections to specify the code file you want to use.  Select the Configuration Algorithm by clicking on it, or by highlighting it and pressing the space bar. An 'X' indicates that custom code will be used. If you select 'Specify Configuration Parameters', use these selections to edit/view the detail record.   Configuration Algorithms Reject This Card When the card is inserted into a slot, it will always be rejected, and an audible beep will sound. Do Not Configure, or Use Custom Code only When the card is inserted into a slot, it will not be configured unless 'Custom Configuration Code' is selected. If 'Custom Configuration Code' is selected, click on to select the custom code file you want to load. The file you specify must contain entries for the configuration parameters you want to load for the card. The format of the custom code file is defined in the Library Specification in Appendix A. Standard Configuration The card will use the standard configuration for card recognition. Specify Configuration Parameters This selection enables you to define customized configuration parameters for card recognition, including default and override CONFIG tuples, as well as default, required, and override CFTABLE_ENTRY tuples. For more information on this selection, refer to 'Defining Specific Card Recognition Parameters'. Using Custom Code If you want to use custom configuration code to define or override one or more of the settings for the selected configuration algorithm, click between the brackets to the left of Custom Configuration Code to select it (it is selected when an 'X' is displayed between the brackets). Then click on to select the code file that contains the configuration information you want to use (a dialog box is displayed, from which you can select the file). For example, if you selected the Standard Configuration Algorithm, but the card is configured with an incorrect or invalid base address for Memory Window 1, you would have to create a custom configuration code file that defines the correct Memory Window 1 base address. The custom configuration code file must follow the format described in the Library Specification in Appendix A. If a special event must occur when the card is removed, click between the brackets to the left of Custom Removal Code to select it (it is selected when an 'X' is displayed between the brackets). For example, you may have to clear a BIOS data area that was set up for a modem card when it was inserted. Then click on (a dialog box is displayed, from which you can select the file). The custom removal code file must follow the format described in the Library Specification in Appendix A. Defining Specific Card Recognition Parameters If you want to define customized configuration parameters for card recognition, select 'Specify Configuration Parameters' on the Card Recognition screen. Then select to display the Specify Configuration Parameters screen. EMBED MSDraw \* mergeformat   If you want an edited tuple record to be used, click on the appropriate item in this column (or highlight it and press the space bar) to mark it with an 'X'. To edit a particular tuple, select the appropriate item from this column to display the Edit screen for that item. The edited tuple record does not take effect unless the item is marked with an 'X' in the left column.   The parameters that can be defined are: SYMBOL 183 \f "Symbol" CONFIG tuples (Default and Override) - Configuration Base Address - Configuration Register Mask SYMBOL 183 \f "Symbol" CFTABLE_ENTRY tuples (Default, Override, and Required) - Configuration Index - Power Requirements (Vcc and Vpp) - Address Range for I/O Windows 0 and 1 - IRQ Definition - Starting Segment, Length, Card Offset, and Memory Window Type for Memory Windows 1 and 2 - Audio and Power Down support Note For more information on CONFIG and CFTABLE_ENTRY tuples, refer to Section 5.2.8 of the PCMCIA PC Card Standard Release 2.10. The Default settings are those settings that you want to use by default for the card (usually based on PCMCIA standards). The Override settings override the Default settings. For example, if a card normally uses a particular Configuration Base Address, you would specify this address on the Default CONFIG tuple screen. If, however, you want to override the default setting for Configuration Base Address, you would specify the new address to use on the Override CONFIG tuple screen. In other words, if no Override value is specified for a particular setting, the Default value is used; if an Override value is specified for a particular setting, the Override value is used. The Required CFTABLE_ENTRY settings are used as a search string to search for matching tuples on the card. For example, if the card requires a Memory Window with a starting segment at C000:0h and a size of 16K, you would enter the appropriate values for this configuration in the Memory Window 0 section of the Required CFTABLE_ENTRY tuple screen. When the card is inserted into a slot, the software will search for a tuple record on the card that matches these required values, and will use the matching record to identify the card. CONFIG Tuple The following screen appears for the selections. EMBED MSDraw \* mergeformat This screen is where you define the default (or override) CONFIG tuple for the card. If an item does not apply to the card you are configuring, select 'Unspec' by clicking on it (or by highlighting it and pressing the space bar). Otherwise, select 'Specify' and press the TAB key to move the cursor into the field. Then type in the appropriate value. When done, click on . Configuration Base Address SYMBOL 190 \f "Symbol" This field is used to specify the base address of the Configuration Registers. Up to eight hex digits can be entered in this field. This information is used in conjunction with the information in the Configuration Register Mask field to determine which registers are present on the card, as well as their location in the card's register space. The Configuration Base Address can be from one to four bytes, with each two characters in the field representing one byte. The length of the field depends on the number of bits required to represent the address. Configuration Register Mask (Presence Mask) SYMBOL 190 \f "Symbol" This field is used to specify the presence mask for the Configuration Registers. This mask is used to determine the presence or absence of the corresponding Configuration Register, with 1 indicating it is present and 0 indicating it is not present. This information is used in conjunction with the Configuration Base Address field to determine which registers are present on the card, as well as their location in the card's register space. CFTABLE_ENTRY Tuple The following screen appears for the CFTABLE_ENTRY selections. CFTABLE_ENTRY tuples enable you to specify all of the possible configurations for a card, and enables the system to distinguish among the possible configurations. EMBED MSDraw \* mergeformat This screen is where you define the SYMBOL 183 \f "Symbol" \s 9 \h Configuration Index SYMBOL 183 \f "Symbol" \s 9 \h Power Requirements (Vcc and Vpp) SYMBOL 183 \f "Symbol" \s 9 \h Address Range for I/O Windows 0 and 1 SYMBOL 183 \f "Symbol" \s 9 \h IRQ Definition SYMBOL 183 \f "Symbol" \s 9 \h Starting Segment, Length, Card Offset, and Memory Window Type for Memory Windows 1 and 2 SYMBOL 183 \f "Symbol" \s 9 \h Audio and Power Down support If an item does not apply to the card you are configuring, click on 'Unspec' (or highlight 'Unspec' and press the space bar). Otherwise, select the appropriate setting for the card. If a field is provided for entering a value, use the TAB key to position the cursor in the field, then type the value. When done, select to return to the Specify Configuration Parameters screen. Configuration Index SYMBOL 190 \f "Symbol" This byte contains the value that must be written to the Card Configuration Register to enable the configuration described in the tuple record. It also contains a bit that indicates that the configuration described in the tuple record should be used as the default for the CFTABLE_ENTRY tuples that follow. Refer to Section 5.2.8.3.1 of the PCMCIA PC Card Standard Release 2.10 for more information on this byte. Power Requirements SYMBOL 190 \f "Symbol" These fields enable you to select the Vcc and Vpp power requirements for the PC card. The selected value is indicated by a bullet (SYMBOL 183 \f "Symbol"). To select a value, click on the appropriate item, or highlight it and press the space bar, to toggle the bullet on. Refer to Section 5.2.8.3.5 of the PCMCIA PC Card Standard Release 2.10 for more information on power requirements. I/O Windows SYMBOL 190 \f "Symbol" These settings enable you to specify whether or not I/O windows are used by the card. To enable an I/O window, select the bus width for the window (8-bit or 16-bit) by clicking on the appropriate value (or highlighting it and pressing the space bar). Then use the TAB key to move into the "Range:" field, and type in the address range to be reserved for the window. The values must be in the range of 0h-3FFh. IRQ Definition SYMBOL 190 \f "Symbol" These settings enable you to specify whether or not the card is using an IRQ. Also, you can select either a specific IRQ or an IRQ mask, and specify the IRQ or IRQ mask in the IRQ Level/Mask field. To select an IRQ, click on Specific IRQ or IRQ Mask (or highlight it and press the space bar). Then use the TAB key to move into the IRQ/Level Mask field, and type in the IRQ or IRQ Mask for the card. Memory Windows SYMBOL 190 \f "Symbol" These two sets of fields enable you to specify the Memory Window settings for the card being defined. If the card uses memory windows, you can specify whether they are Common or Attribute memory windows. Also, you can specify the starting segment (ranging from C000-EF00, normally in the D000-DFFF range) for each window in the Starting Seg field, the window size (4, 8, ..., 64, in KB) in the Length field, and the offset (normally 0) in the Card Offset field. Notes If Start Seg is set to 0 for a network card, the starting segment value is extracted from the CARDID.INI file. If Length is set to 0 on the Override CFTABLE_ENTRY Tuple screen, it indicates that there is no memory window for the card, even if that window is defined on the Default CFTABLE_ENTRY tuple screen. Audio Support SYMBOL 190 \f "Symbol" If this field is enabled (marked with an 'X'), it indicates that the card allows the BVD2 signal to be used as the audio waveform for the system speaker. To enable audio support, click on 'Specify' (or highlight it and press the space bar) to toggle the bullet (SYMBOL 183 \f "Symbol") on, then click on 'Audio is supported' (or highlight it and press the space bar) to toggle the 'X' on. Power Down Support SYMBOL 190 \f "Symbol" If this field is enabled, it indicates that the card supports a power-down mode. To enable power-down support, click on 'Specify' (or highlight it and press the space bar) to toggle the bullet (SYMBOL 183 \f "Symbol") on, then click on 'Power Down is supported' (or highlight it and press the space bar) to toggle the 'X' on. Defining Parameters for Executable Files The Binary Adaptation function enables you to define the parameters for each of the executable components of the software. This section describes the process for defining the parameters. For information on each of these parameters, their default values, and the possible values that can be assigned to each, refer to Chapter 3. To modify the parameters for the PCMCIA software's executable components: 1. Select Binary Adaptation from the Utility menu, then select Open from the dialog box that is displayed. A list of all executable files in the CARDSOFT directory is displayed (including Flash File System and CardView files, if these PCMCIA components are installed). EMBED MSDraw \* mergeformat 2. Select the file whose parameters you want to modify, then select . A Parameter List screen similar to the following appears. The list of parameters differs for each executable file. The sample screen shown below is the Parameter List for the Card Services executable file (CS.EXE). EMBED MSDraw \* mergeformat 3. To change a parameter, highlight the parameter and select . If the parameter is a numeric value, an Edit Parameter screen similar to the following is displayed. If the parameter is a Yes/No value, the screen that is displayed enables you to select the Yes or No value. Type the new value here. EMBED MSDraw \* mergeformat Valid range of values is displayed here.  4. After editing the parameter, select . The new value should now be displayed on the Parameter List screen. 5. When you are done changing parameters, select . A dialog box is displayed. Select to save your changes (or select , then select ). If you want to cancel the changes you made, select , then select . Dumping the Parameter Values Into CONFIG.LST The Binary Adaptation function allows you to save the executable file parameters into the file CONFIG.LST, which enables you to easily display or print out the list of configuration settings (using a TYPE CONFIG.LST or PRINT CONFIG.LST command). You can overwrite the existing CONFIG.LST file, or you can append the parameters to the end of the file. To dump the parameters into CONFIG.LST, select from the Parameter List screen. If CONFIG.LST already exists, a dialog box is displayed, giving you the option to Append to the end of the file (select ) or Replace the existing file (select ). seq chapter \hChapter 3 Configuring Driver Parameters The following sections describe the parameters for each of the executable components of the PCMCIA software. The parameters are shown for both the Configuration Utility's Binary Adaptation Program (BAP) and the CONFIG.SYS DEVICEHIGH line. The Configuration Utility settings are listed on the left, while the DEVICEHIGH line settings are on the right. For information on how to configure parameters via the BAP, refer to "Defining Parameters for Executable Files" in Chapter 2. Normally, you should not have to modify these parameters, since CSALLOC can detect the available resources and relay this information to the Card Services software. However, CSALLOC cannot detect system resources that may be required by system devices if those devices are not activated at the time CSALLOC is run (either from the command line or via the Resource Allocation menu pick in the Configuration Utility). This could result in a resource conflict when a device becomes active, since resources required for the device may already have been reserved for Card Services. If this situation occurs, you can use the Configuration Utility or DEVICEHIGH line parameters to ensure that the resources required by these devices are made unavailable to Card Services. Also, system hardware design and security features may make some available resources undetectable by CSALLOC. In this situation, you could edit CSALLOC.INI (or create a customized .INI file) to include special keywords to manually include resources that are not being detected (see Chapter 5 of the CardSoft 3.1 Software User's Guide for more information on this capability). For example, if CSALLOC determines that IRQs 15, 12, 11, 10, 7, and 4 are available for use as the status-change interrupt, but you have an inactive device installed in the system that specifically needs IRQ 7 in order to operate properly, you could change the value for the Card-Status-Change Interrupt IRQ Mask parameter to exclude IRQ 7. (If however, the device is active at the time CSALLOC is run, CSALLOC would correctly determine that IRQ 7 is not available for Card Services, and would correctly set the Card-Status-Change Interrupt IRQ Mask value to exclude IRQ 7). As another option, you could edit CSALLOC.INI, and add the line "IRQEXCLUDE=7". Bo the methods achiev the same result. DEVICEHIGH Line Parameters Modifications to the executable components can be done by way of adding or modifying DEVICEHIGH line parameters. Instead of modifying the executable file parameters via the Configuration Utility Binary Adaptation function, parameters are added to the appropriate device driver within CONFIG.SYS. The following is an example of how the CardSoft device lines might appear in CONFIG.SYS. devicehigh=c:\cardsoft\ss365sl.exe /SIRM=FFFF /SKT=3 devicehigh=c:\cardsoft\cs.exe /BEEPTYPES CF devicehigh=c:\cardsoft\csalloc.exe c:\cardsoft\csalloc.ini devicehigh=c:\cardsoft\atadrv.exe devicehigh=c:\cardsoft\mtddrv.exe /PART=2 devicehigh=c:\cardsoft\ssmsflsh.sys devicehigh=c:\cardsoft\cardid.exe install=c:\cardsoft\cs_apm.exe Note Parameters consist of an "/idstring" and a "value". The "/idstring" must always match exactly one of the available strings. The "value" is entered as ASCII-hexadecimal or ASCII-decimal. For example, in the example above the /SIRM is the required idstring and FFFF is the value. Socket Services Socket Services provides the standard software interface to the hardware that controls PCMCIA-compatible slots for PC cards. SystemSoft Socket Services supports the major host adapters that control the slots. The following section describes all configuration settings available for Socket Services, both from the Configuration Utility and the DEVICEHIGH line. Intel 82365SL PCIC (ss365sl.exe or sl365lp.exe) IBM ThinkPad 720 (ssibm720.exe) Card-Status-Change Interrupt IRQ Mask /SIRM Range: 0h-FFFFh Range: 0h-FFFFh Default: DEB8h Default: DEB8h This switch setting depends on the system hardware design and processor chip. It specifies the 16-bit mask of available IRQs that can be assigned as status-change interrupt (event interrupt) IRQs. The status-change interrupt is generated when the PCMCIA adapter status changes (that is, a card is removed or inserted). Use this parameter to inform Socket Services of the IRQs that are connected to the Intel PCIC or IBM Thinkpad chip for use as the status-change interrupt signals. This information should be provided by the manufacturer of the system. The most significant bit represents IRQ 15 and the least significant bit represents IRQ 0. For example, a value of DEB8h (1101-1110-1011-1000 binary) indicates that IRQs 15, 14, 12, 11, 10, 9, 7, 5, 4, and 3 are valid for assignment as card-status-change IRQs. PC Card IREQ Mask /IIRM Range: 0h-FFFFh Range: 0h-FFFFh Default: DEB8h Default: DEB8h This switch setting depends on the system hardware design and processor chip. It specifies the 16-bit mask of available IRQs that can be assigned as valid PC card IREQs. PC card IREQs are interrupts that are required for the operation of the device (modem card, ATA card, etc.) that is inserted into your system. Use this parameter to inform Socket Services which IRQs are connected to the Intel controller for use as card interrupts. This information should be provided by the system vendor. The most significant bit represents IRQ 15 and the least significant bit represents IRQ 0. For example, a value of DEB8h (1101-1110-1011-1000 binary) indicates that IRQs 15, 14, 12, 11, 10, 9, 7, 5, 4, and 3 are valid for assignment as card-status-change IRQs. PCMCIA Adapter Base Port Address /PORT Range: 0h-3FFh Range: 0h-3FFh Default: 3E0h Default: 3E0h This switch setting is dependent on the system hardware design. It specifies the base port address of the first of up to two PCMCIA adapters. This is the I/O address used by CardSoft to communicate with the PCMCIA Adapter(s). Voltage Stabilization Delay /PWRON Range: 1 through 65535 Range: 01h-FFFFh Default: 6667 Default: 1A0B Specifies the amount of time, in 15-SYMBOL 109 \f "Symbol"s units, that the SS365SL waits for the voltage to stabilize after a voltage change on a slot. This occurs when a card is inserted into a slot and when a Flash memory card is written to or erased. The default is 100ms. Zero Voltage Stabilization Delay /PWROFF Range: 1 through 65535 Range: 01h-FFFFh Default: 0 Default: 0 Specifies the amount of time, in 15-SYMBOL 109 \f "Symbol"s units, that the SS365SL waits for the voltage to stabilize after voltage has been set to zero for a slot. This occurs when a card is removed from a slot. Install As Adapter Zero /ADA Range: Yes or No Range: 0 or 1 Default: No Default: 1 Forces installation of Socket Services as Adapter Zero. This feature may be used to override the presence (e.g., in the BIOS) of any previously loaded non-compliant PCMCIA implementations. The SS365SL installs as the next available Adapter when this parameter is not specified. Intel 82365SL PCIC ID /ID Range: 0h-FFh Range: 0h-FFh Default: 83h (ss365sl) Default: 83h (ss365sl) Default: 84h (ss365lp) Default: 84h (ss365lp) Default: 88h (ssibm720) Default: 88h (ssibm720) Specifies an expected ID byte (Register 0) in addition to the standard values. The default is no additional IDs. Number Of Supported Sockets /SKT Range: 1-4 Range: 1-4 Default: 0 Default: 0 Specifies the number of slots that the controller supports (1-4). The default value (0) indicates that Socket Services dynamically determines the number of slots present. If a number other than zero is specified, it must be set to the exact number of slots present in the system. Reset On CPU Resume /RST Range: Yes or No Range: 0 or 1 Default: No Default: 1 Controls whether the controller is reset on a CPU Resume event. A reset returns the controller to its uninitialized power-up state. Test for Warm Reboot /WRB Range: Yes or No Range: 0h or 1h Default: No Default: 0 Specifies that Socket Services test for possible system resources depletion due to configured PCMCIA slots during a warm reboot. If enabled, and configured slots are discovered following a warm reboot, Socket Services clears all slot configurations and reboots the system. DataBook TCIC-2/N (ssdbook.exe) Card-Status-Change Interrupt IRQ Mask /SIRM Range: 1h-FFFFh Range: 1h-FFFFh Default: 4CF8h Default: 4CF8h This switch setting depends on the system hardware design and processor chip. It specifies the 16-bit mask of available IRQs that can be assigned as status-change interrupt (event interrupt) IRQs. This interrupt is generated when the adapter status changes (i.e., a card is inserted or removed). Use this parameter to inform Socket Services of the IRQs that are connected to the DataBook chip for use as the status change interrupt signals. This information should be provided by the system vendor. The most significant bit represents IRQ 15 and the least significant bit represents IRQ 0. For example, a value of 4CF8h (0100-1100-1111-1000 binary) indicates that IRQs 14, 11, 10, 7, 6, 5, 4, and 3 are valid for assignment as card-status-change IRQs. PC Card IREQ Mask /IIRM Range: 1h-FFFFh Range: 1h-FFFFh Default: 4CF8h Default: 4CF8h This switch setting depends on the system hardware design and processor chip. It specifies the 16-bit mask of available IRQs that can be assigned as valid PC card IREQs. PC card IREQs are those interrupts that are required for the operation of the device (modem card, ATA card, etc.) that is inserted in the system. Use this parameter to inform Socket Services which IRQs are connected to the controller for use as card interrupts. This information should be provided by the system vendor. The most significant bit represents IRQ 15 and the least significant bit represents IRQ 0. For example, a value of 4CF8h (0100-1100-1111-1000 binary) indicates that IRQs 14, 11, 10, 7, 6, 5, 4, and 3 are valid for assignment as card-status-change IRQs. PCMCIA Adapter Base Port Address /PORT Range: 0h-3FFh Range: 0h-3FFh Default: 240h Default: 240h This switch setting is dependent on the system hardware design and processor chip. It specifies the base port address of the PCMCIA adapters. This is the I/O address used by CardSoft to communicate with the PCMCIA Adapter(s). Voltage Stabilization Delay /PWRON Range: 1 through 65535 Range: 01h-FFFFh Default: 6667 Default: 1A0B Specifies the amount of time, in 15-SYMBOL 109 \f "Symbol"s units, to wait for the voltage to stabilize after a voltage change on a slot. This occurs when a card is inserted into a slot and when a Flash memory card is written to or erased. The default is 100ms. Install As Adapter Zero /ADA Range: Yes or No Range: 0 or 1 Default: No Default: 1 Forces installation of Socket Services as Adapter Zero. This feature may be used to override the presence (e.g., in the BIOS) of any previously loaded non-compliant PCMCIA implementations. SSDBOOK installs as the next available Adapter when this parameter is not specified. Number Of Supported Sockets /SKT Range: 1-2 Range: 1-2 Default: 2 Default: 2 Specifies the number of PCMCIA slots that SSDBOOK supports. On machines that have a PCMCIA adapter that can support more slots than are present in the machine, this value should be set to the exact number of slots present. HI016 and HMEM16 Control Type /TOTEM Range: 0 or 1 Range: 0 or 1 Default: 0 Default: 0 Specifies type of control for HIO16 and HMEM16 ISA bus signals. 0 enables open drain control. 1 enables totem-pole control. Cirrus CL-PD67xx (sscirrus.exe) Intel AT2092AA PPEC (ssppec.exe) Ricoh RF5C266/RF5C366 (ssricoh.exe) Vadem VG365/465/468 (ssvadem.exe) VLSI VL82C146 (ssvlsi.exe) Number Of Supported Sockets /SKT Range: 1-4 Range: 1-4 Default: 4 Default: 4 Specifies the number of slots that driver supports. On machines that have a PCMCIA adapter that can support more slots than are present in the machine, this value should be set to the exact number of slots present. PCMCIA Adapter Base Port Address /PORT Range: 0h-3FFh Range: 0h-3FFh Default: 3E0h Default: 3E0h Specifies the base port address of the PCMCIA adapters. This is the I/O address used by CardSoft to communicate with the PCMCIA Adapter(s). PC Card IRQ Mask /IRM Range: 1h-FFFFh Range: 1h-FFFFh Default: DEB8h Default: DEB8h This switch setting depends on the system hardware design and processor chip. It specifies the 16-bit mask of available IRQs that can be assigned as valid PC card IRQs. PC card IRQs are interrupts that are required for the operation of the device (modem card, ATA card, etc.) that is inserted in the system. Use this parameter to inform Socket Services which IRQs are connected to the controller for use as card interrupts. This information should be provided by the system manufacturer. The most significant bit represents IRQ 15 and the least significant bit represents IRQ 0. For example, a value of DEB8h (1101-1110-1011-1000 binary) indicates that IRQs 15, 14, 12, 11, 10, 9, 7, 5, 4, and 3 are valid for assignment as card-status-change IRQs. Voltage Stabilization Delay /PWRON Range: 1 through 65535 Range: 01h-FFFFh Default: 6667 Default: 1A0B Specifies the amount of time, in 15-SYMBOL 109 \f "Symbol"s units, to wait for the voltage to stabilize after a voltage change on a slot. This occurs when a card is inserted into a slot and when a Flash memory card is written to or erased. The default is 100ms. Zero Voltage Stabilization Delay /PWROFF Range: 1 through 65535 Range: 01h-FFFFh Default: 0 Default: 0 Specifies the amount of time, in 15-SYMBOL 109 \f "Symbol"s units, to wait for the voltage to stabilize after voltage has been set to zero for a slot. This occurs when a card is removed from a slot. Install As Adapter Zero /ADA Range: Yes or No Range: 0 or 1 Default: No Default: 1 Forces installation of Socket Services as Adapter Zero. This feature may be used to override the presence (e.g., in the BIOS) of any previously loaded non-compliant PCMCIA implementations. The controller installs as the next available Adapter when this parameter is not specified. /PULSE /PULSE Range: 0h-1h Range: 0h-1h Default: 0h Default: 0h Allows interrupts to be generated in pulse mode, rather than level mode. This parameter applies only to the SSCIRRUS driver. /5VCORE /5VCORE Range: 0h-1h Range: 0h-1h Default: 0h Default: 0h Used if the chip is being operated with a 5-volt core. This parameter applies only to the SSCIRRUS driver. Card Services (cs.exe) Card Services software coordinates access to PC cards, PCMCIA slots, and system resources among multiple clients. These clients may be device drivers, system utilities, or application programs. Card Services makes access to slot hardware through Socket Services software. Power-On Delay /PWR Range: 1-255 Range: 01h-FFh Default: 6 Default: 6h Specifies the power-on delay, in MS-DOS timer ticks, from the application of power during card-insertion processing, until any attempt to access the card. The default is approximately 660 ms. Event Processing Delay /TTD Range: 1-255 Range: 01h-FFh Default: 2 Default: 02h Specifies a delay, in MS-DOS timer ticks, for processing interrupt-generated events. An event is only processed if the delay expires without recurrence of the same event. If the event recurs prior to the timeout, the earlier event is discarded. Card-Status-Change IRQ /IRQ Range: 1-255 Range: 01h-FFh Default: 10 Default: 0Ah This switch setting depends on the system hardware design and processor chip. It specifies the preferred IRQ number to be used for the card-status-change interrupt. This value is used if Card Services cannot determine a better IRQ number to use for the card-status-change interrupt. The status-change interrupt is generated when the adapter status changes (i.e., a card is inserted or removed). The IRQ you should specify with this switch should be provided by the system vendor. Card-Status-Change Interrupt Mask /SCIM Range: 0h-FFh Range: 0h-FFh Default: FFh Default: FFh Specifies the Card-Status-Change interrupts that can be enabled. This value should be left as FFh unless unusual hardware conditions exist with the Card-Status-Change interrupt. For such circumstances, a vendor specific function exists to allow all Card-Status-Change interrupts to be enabled on a slot. Block INT 1A Calls To Socket Services /BLOCKSS Range: Yes or No Range: 0h or 1h Default: Yes Default: 1h Specifies that direct calls to Socket Services must NOT be allowed via the INT 1A interface. The caller must retrieve an entry point from Card Services to make calls to Socket Services. /VERSIONTEST /VERSIONTEST Range: 0-1 Range: 0-1 Default: 1 Default: 1 This parameter is used for debugging only. Do not modify the value in this field. /HEAPSIZE /HEAPSIZE Range: 2h-Ah Range: 2h-Ah Default: 2h Default: 2h Specifies the amount of memory (in KB) that is reserved for Card Services for use as an internal heap, which is used to store information that Card Services needs to operate (for example, the number and type of cards inserted into PCMCIA slots). /BEEPTYPES /BEEPTYPES Range: 0-FFh Range: 0-FFh Default: CEh Default: CEh This parameter is used to specify the situations in which the system will beep for PC card events. Card Services can be configured to beep on the selected events in DOS, Windows, or both DOS and Windows. Card Services can also be configured to beep on card insertion, card removal, configuration errors, and artificial events. The operating system takes precedence. For example, if you specify no beeps in both DOS and Windows, and you select beeps for card insertion and removal, no beeps will be emitted when cards are inserted or removed, because no operating system was selected. The bit values for this parameter determine which operating systems/events are selected: Bit Beep Action 7 Beep in DOS 6 Beep in Windows 5 Reserved 4 Reserved 3 Beep on card insertion 2 Beep on card removal 1 Beep on card configuration error 0 Beep on artificial events* For example, the default value (CEh) sets these bits to 11001110, which causes the system to emit beeps for card insertion, card removal, and card configuration errors in both DOS and Windows. As another example, the value 8Ch sets these bits to 10001100, which causes the system to emit beeps for card insertion and card removal in DOS only. * Artificial events refer to "logical" events (as opposed to physical events, such as physically removing a card). For example, a card is logically removed when the system suspends, and logically inserted when the system resumes. /BEEPDELAY /BEEPDELAY Range: 0-14h Range: 0-14h Default: Fh Default: Fh A numeric delay (in .05 second increments) that defines how long Card Services waits for the card client to configure a PC card before attempting to verify that the card was configured. This setting is intended to account for a latent delay in card clients (such as MTDs) when they are attempting to configure a PC card. The default value of 15 (Fh) specifies a .75 second delay. The maximum setting is 20 (14h), which is equivalent to one second. /TONEFREQ /TONEFREQ Range: 2710-FFFFh Range: 2710-FFFFh Default: 2E7Ch Default: 2E7Ch Defines the frequency of the clock that is used with the system time to generate tones. The standard value for a U.S. PC is 11900 (2E7Ch). /POLL /POLL Range: 0-1 Range: 0-1 Default: 0 Default: 0 When set to 1, Card Services will not use a card-status-change interrupt to determine status changes on the system. It will instead poll for status changes (inserted card has been removed, empty slot is now occupied, etc.). This parameter should be set to 1 if the system does not have an available IRQ to use as a card-status-change interrupt, or if it does not support a card-status-change interrupt. /EMS /EMS Range: 0-1 Range: 0-1 Default: 1 Default: 1 When set to 1, Card Services will attempt to load in EMS (if it is available). If the system is not configured for EMS, setting this parameter to 1 has no effect. /MISSTUP /MISSTUP Range: 0-FFFFh Range: 0-FFFFh Default: 100h Default: 100h This parameter determines the number of time GetNextTuple will search before returning NO_MORE_ITEMS when the desired tuple is not found. CSALLOC This is a DOS utility that scans the system for available memory, I/O Port, and IRQ resources. It then writes this information to the file CSALLOC.INI, which is used by Card Services to determine what system resources are available for PC card configuration /PPSIG0 /PPSIG0 Range: 0-FFFFh Range: 0-FFFFh Default: 5024h Default: 5024h Enables OEMs to specify the low-order 16 bits of the Plug-and-Play signature that is expected to be found in the BIOS Plug-and-Play support structure, without making changes to the source code. /PPSIG1 /PPSIG1 Range: 0-FFFFh Range: 0-FFFFh Default: 506Eh Default: 506Eh Enables OEMs to specify the high-order 16 bits of the Plug and Play signature that is expected to be found in the BIOS Plug-and-Play support structure, without making changes to the source code. /IOALIASES /IOALIASES Range: 0-3Fh Range: 0-3Fh Default: 3h Default: 3h Specifies the number of times I/O Port addresses are aliased at 400h and above, and given to Card Services. For example, if this value is set to 1, and the I/O Port address is 3E8, it is given to Card Services as 3E8 and 7E8. As another example, the default value (3) with an I/O Port address of 3E8 causes 3E8, 7E8, BE8, and FE8 to be given to Card Services. /SCANFF /SON, /SOFF Range: 0-1h Range: 0-1h Default: 1 Default: 1 This parameter is used to alter the memory scan algorithm when searching for memory windows. A value of 1 (or use of the command line switch /SON) causes the system to scan using the value FFh. A value of 0 (or use of the command line switch /SOFF) causes the system to scan for any consistent value. /COM1IRQ /COM1IRQ Range: 1-15 Range: 1-15 Default: 4 Default: 4 Specifies the IRQ for COM 1. This value should be changed only if the system uses an IRQ other than IRQ 4 for COM 1. /COM2IRQ /COM2IRQ Range: 1-15 Range: 1-15 Default: 3 Default: 3 Specifies the IRQ for COM 2. This value should be changed only if the system uses an IRQ other than IRQ 3 for COM 2. /COM3IRQ /COM3IRQ Range: 1-15 Range: 1-15 Default: 4 Default: 4 Specifies the IRQ for COM 3. This value should be changed only if the system uses an IRQ other than IRQ 4 for COM 3. /COM4IRQ /COM4IRQ Range: 1-15 Range: 1-15 Default: 3 Default: 3 Specifies the IRQ for COM 4. This value should be changed only if the system uses an IRQ other than IRQ 3 for COM 4. /TESTIO /TESTIO Range: 0-FFFFh Range: 0-FFFFh Default: 80h Default: 80h Specifies the I/O address to be used for I/O scanning. Always specify an I/O address that is safe for performing input or output operations without interference from other components. SRAM Driver (MTSRAM.EXE) MTSRAM is a driver that supports SRAM cards. /NUMWINS /NUMWINS Range: 1-4h Range: 1-4h Default: 4h Default: 4h Specifies the number of memory windows that will be configured and used for accessing SRAM cards. The memory windows are set up in upper memory (for exammple, the D000-DFFF range), in any available area that is found. A value of 2 provides better SRAM card performance than a value of 1. Optimum performance is achieved with a value of 3. The total number of memory windows configured is a multiple of this value and the number of SRAM memory cards inserted (and recognized) in the system's PCMCIA slots. Memory Card Memory Window Size /SIZ Values: 4, 8, 16, and 32 Values: 4, 8, 16, or 32 Default: 4 Default: 4 Specifies the size of the system memory window to be used to access SRAM cards. The value is stated in KB and must be 4, 8, 16, or 32. The default value of 4 represents a 4KB window. Memory Technology Driver (MTDDRV.EXE) This component must be installed in order to support Flash Memory cards. It works in conjunction with card-specific MTDs to support a wide variety of current Flash Memory cards. It also supports SRAM cards (providing MTSRAM.EXE is also installed), and allows sharing of drive letters between the different types of memory cards (Flash, SRAM, and ATA). Maximum Partitions Per Card /PART Range: 1-4 Range: 1-4 Default: 1 Default: 1 Specifies the maximum number of partitions that a Flash Memory or SRAM card can contain (not including any area on the card that may be used for boot code). In most cases, it is best to use the default value of 1, since there are no significant advantages to having multiple partitions on a memory card (and there are some drawbacks to having multiple partitions). However, multiple partitions are required for combination Flash/SRAM cards. For more information on memory card partitions, refer to the Flash File System User's Guide. IDE/ATA Device Driver (atadrv.exe) ATADRV.EXE is a Hard Disk or Flash Disk configuration device driver for removable PCMCIA devices that emulate an IDE type hard disk. ATADRV.EXE is strictly a Hard Disk or Flash Disk driver that communicates to industry-standard hard disk controllers. ATADRV.EXE can manage up to eight PCMCIA devices. ATADRV communicates with the CardID component to obtain information on card insertion and removal. Once a card is inserted and recognized by CardID, ATADRV communicates with the card as if it were an IDE disk. ATADRV must be installed before the CARDID.EXE driver. ATADRV supports the following parameters: Configuration Parameters Slave Mode Range: No or Yes Default: No Allows the driver to be slaved to a master control driver for drive letter selection. MTD Driver (MTDDRV) is the only master control driver currently available. When this parameter is used, ATADRV must be installed in CONFIG.SYS before MTDDRV. Number of Drive Units Range: 1-8 Default: 2 Specifies the number of drives that the system supports when installed either as a block device driver or as a slave device driver. DEVICEHIGH Line Parameters /S: Range: 1-8 Default: 2 Example: devicehigh=c:\cardsoft\atadrv.exe /S:1 Installs the ATADRV device driver as a slave to MTDDRV. It also specifies the number of drives it can support. When this switch is used, ATADRV must be installed in CONFIG.SYS before MTDDRV. Disk Partitioning Utility (atainit.exe) ATAINIT.EXE is a disk partitioning utility that must be used to create a partition on any drive supported by ATADRV. When a new drive is inserted into a socket, it is not recognized since there is no CMOS or other common method to find out its physical parameters. ATAINIT interrogates the drive to find the physical parameters to use. Language /LANG Range: 0-4 Range: 0-4 Default: 0 Default: 0 The disk utility may be configured to display messages in five different languages: 0 = English, 1 = French, 2 = German, 3 = Italian, 4 = Spanish. ATAINIT Return Code There are five return codes for ATAINIT, which are defined as follows: Return Code Meaning  00 No error  81 Unable to address card  82 Bad write  84 Requested quit via keyboard  88 Unable to ID the drive   Flash File System Executables This section lists the parameters for each of the Flash File System executables that are configurable. Card-Specific Memory Technology Drivers MTAA.EXE, MTAB.EXE, MTI1.EXE, MTI2P.EXE The card-specific memory technology drivers work in conjunction with MTDDRV to support various types of Flash Memory cards. Card types currently supported are AMD Type A, AMD Type B, Intel Series 1, and Intel Series 2 Plus. /NUMWINS /NUMWINS Range: 1-4h Range: 1-4h Default: 4h Default: 4h Specifies the number of memory windows that will be configured and used for accessing Flash Memory cards. The memory windows are set up in upper memory (for exammple, the D000-DFFF range), in any available area that is found. A value of 2 provides better Flash card performance than a value of 1. Optimum performance is achieved with a value of 3. The total number of memory windows configured is a multiple of this value and the number of Flash memory cards inserted (and recognized) in the system's PCMCIA slots. Memory Card Memory Window Size /SIZ Values: 4, 8, 16, and 32 Values: 4, 8, 16, or 32 Default: 4 Default: 4 Specifies the size of the system memory window to be used to access Flash Memory cards. The value is stated in KB and must be 4, 8, 16, or 32. The default value of 4 represents a 4KB window. seq chapter \hAppendix A CardID CardID is a Card Services client that provides file-driven detection and configuration services for the different types of PCMCIA cards (fax/modems, ATA cards, network cards, communications, etc.). CardID utilizes an initialization file, CARDID.INI, that stores configuration information about these cards. The CardID Configuration file contains two sections. The "[Common]" section defines the program parameters common to all inserted cards. The "[Libraries]" section contains references to card libraries of Card Recognition and Configuration records, which drive the process of card recognition and configuration. The [Common] Section The [Common] section consists of lines of the form parameter=value where the format of the value depends on the parameter. Following is table lists all currently-defined parameters, their defaults, and their value types. Note The CARDID.INI file you receive may not list all of the parameters shown in this table. The parameters in your CARDID.INI file depend on your hardware platform and the PCMCIA support you are providing. CARDID.INI Parameters Parameter/Default Value Type  Entries for AT-style modem cards   COMPort1=3F8 Hexadecimal  COMIRQ1=4 Integer, 1-4  COMPort2=2F8 Hexadecimal  COMIRQ2=3 Integer, 1-4  COMPort3=3E8 Hexadecimal  COMIRQ3=4 Integer, 1-4  COMPort4=2E8 Hexadecimal  COMIRQ4=3 Integer, 1-4  FirstModem=1 Integer, 1-4  SecondModem=2 Integer, 1-4  ThirdModem=3 Integer, 1-4  FourthModem=4 Integer, 1-4  COMBySocket=No Yes/No  COMBDAAbsolute=Yes Yes/No  Audio=Yes Yes/No  RingIndicate=No Yes/No  Entries for 9800-style COM cards   9800COM2IRQ=5 Integer, 2-15  9800COM3IRQ=12 Integer, 2-15  First9800Modem=2 Integer, 2-3  Second9800Modem=3 Integer, 2-3  9800ComBySocket=No Yes/No   Continued... CARDID.INI Parameters Continued... Parameter/Default Value Type  Entries for LAN Cards   LAN1Port=300 Hexadecimal  LAN1IRQ=5 Integer, 2-15  LAN1MemoryBase1=D8 Hexadecimal  LAN1MemoryBase2=DC Hexadecimal  LAN2Port=310 Hexadecimal  LAN2IRQ=10 Integer 2-15  LAN2MemoryBase1=0 Hexadecimal  LAN2MemoryBase2=0 Hexadecimal  FirstLAN=1 Integer, 1-2  SecondLAN=2 Integer, 1-2  FastTokenRing=Yes Yes/No  Entries for "Other" Cards   Other1Port=300 Hexadecimal  Other1IRQ=5 Integer, 2-15  Other1MemoryBase1=D8 Hexadecimal  Other1MemoryBase2=DC Hexadecimal  Other2Port=320 Hexadecimal  Other2IRQ=5 Integer, 2-15  Other2MemoryBase1=0 Hexadecimal  Other2MemoryBase2=0 Hexadecimal  FirstOther=1 Integer, 1-2  SecondOther=2 Integer, 1-2  Entries for ATA Cards   ATATryLinear=Yes Yes/No  ATATryMemory=No Yes/No  ATATrySecondary=Yes Yes/No  ATATryPrimary=Yes Yes/No  ATAFirstConf=0 0=Linear  ATASecondConf=1 1=Memory  ATAThirdConf=2 2=Secondary ATA Address  ATAFourthConf=3 3=Primary ATA Address  ATASocketOffset=0 Integer, 0-63  Miscellaneous Card Configuration Parameters   DetectNonCompliant=No Yes/No  AllowIOOffsets=No Yes/No  Miscellaneous Entries   BeepinDOS=Yes Yes/No  BeepinWindows=Yes Yes/No  BeepOnConfigFailure=Yes Yes/No  BeepOnUnrecognizedCard=No Yes/No  ContinueOnConfigFailure=No Yes/No  CardID Parameters   GrabInitFile=Yes Yes/No  InitBufferSize=512 Integer  UseEMS=Yes Yes/No   The [Libraries] Section The [Libraries] Section contains lines of the form CardLib=pathname where pathname is interpreted relative to the directory containing the initialization file if it is not a full pathname. The named file (i.e., CARDID.CLB) contains binary data records, each of which is a Comment Record, a Card Services Resource record, or a Card Recognition and Configuration Record. These record types are defined in the following sections. Comment Record This record allows comments (i.e., any desired text or binary data) to be inserted into a library. Comment Record Offset Bytes Description Value  00 2 Record ID # 00E5h  02 2 Record Length Bytes in record, including the header  04 n Comment Arbitrary binary data, extending to the end of the record, as defined by the Record Length.   Card Services Resource Record This record describes the resources to be allocated to Card Services. At most, there should be one Card Services Resource Record. It is processed when CardID is initialized. Since resources are supposed to be allocated by CSALLOC, this record should not be necessary. It has been retained only to provide a workaround if, for some reason, CSALLOC is not functioning properly. This record consists of a header and a variable number of resource definition fields. Record Header: Card Services Resource Record Offset Bytes Description Value  00 2 Record ID # 01E5h  02 2 Record Length Bytes in record, including the header   Field # 00 = Memory Windows Available Offset Bytes Description Value  00 1 Field ID # 00h  01 2 Mem Win 1 Size Size (in paragraphs) of window  03 2 Mem Win 1 Start First paragraph of window  05 1 Mem Win 1 Flags Bit 5 = 1 for shared  06 2 Mem Win 2 Size Size (in paragraphs) of window  08 2 Mem Win 2 Start First paragraph of window  0A 1 Mem Win 2 Flags Bit 5 = 1 for shared  " " "  "  nn 2 End of List flag Size = 0 marks end of list   Field # 01 = I/O Windows Available Offset Bytes Description Value  00 1 Field ID # 01h  01 1 I/O Win 1 Size Size in bytes of first I/O window  02 2 I/O Win 1 Start Start of I/O window 1  04 1 I/O Win 1 Flags Bit 0 = 1 for shared  05 1 I/O Win 2 Size Size in bytes of second I/O window  06 2 I/O Win 2 Start Start of I/O window 2  08 1 I/O Win 2 Flags Bit 0 = 1 for shared  " "  "  "  nn 1 End of List Flag Size = 0 marks end of list  Field # 02 = IRQ Available Offset Bytes Description Value  00 1 Field ID # 02h  01 2 IRQ Bit Mask Bits 15:0 = IRQ 15-0 mask If bit = 0, IRQ is not available If bit = 1, IRQ is available  03 2 Share Bit Mask Bits 15:0 = IRQ sharing mask If bit = 0, IRQ cannot be shared If bit = 1, IRQ can be shared  05 2 Sharing Type Bit Mask Bits 15:0 = IRQ sharing type mask If bit = 0, IRQ must be time-multiplexed If bit = 1, IRQ can be dynamically shared Note: This mask is present if some bit in the Share Bit Mask is set. Each bit in this mask is significant only if the corresponding bit in the Share Bit Mask is set.   Card Recognition and Configuration Record A Card Recognition and Configuration record consists of a variable number of recognition fields, followed by a variable number of configuration fields, which should be specified in order of field ID. If the criteria specified in the recognition fields are satisfied, the card should be configured in accordance with the configuration fields. There should be one Card Recognition and Configuration record for each type of card to be supported. The "type" in the previous sentence is a loose term; it can mean "a particular model of a particular card from a particular manufacturer", or something as loose as "any modem". When a card is inserted, CardID reads Card Recognition and Configuration records in order, and uses the first one whose recognition algorithm succeeds on the card. The Card Recognition and Configuration record begins with a record header: Record Header: Card Recognition and Configuration Record Offset Bytes Description Value  00 2 Record ID # 03E5h  02 2 Record Length Bytes in record, including the header  04 2 System Mask Bitmask of systems to which this record applies. (Bit 0 = DOS, Bit 1 = Windows)  06 2 Socket Mask Bitmask of logical slots to which this record applies. (Bit 0 = Slot 0, Bit 1 = Slot 1, etc.).  08 n Card ID String ASCIIZ String identifying the card, for use by programs that display and edit this file.  nn n Card Type String ASCIIZ String identifying the type of card. If this string is null, the card type string is generated from the card type information specified in a Card Type field, or read from the CIS.   The Socket Mask field allows different sockets to be treated differently. For example, a modem in Slot 0 might always be configured as COM2, while a modem in Slot 1 might always be configured as COM3. This field may be set to FFFF to treat all slots identically. Card Recognition Fields Field # 00 = Recognition Algorithm Offset Bytes Description Value  00 1 Field ID # 00h  01 1 Recognition Algorithm 0 = Use CISTPL_VERS_1 1 = CIS literal comparison 2 = Generic type recognition 3 = Custom code   If the value is 0 (use CISTPL_VERS_1), then 1 to 4 fields follow, containing values to search for in some subset of the 4 fields of the CISTPL_VERS_1 tuple (manufacturer name, product name, and two "additional product information" fields). These fields have IDs 1, 2, 3, and 4, respectively. This algorithm presupposes a card with a CIS that is sufficiently correct that Card Services can return the CISTPL_VERS_1 tuple data to CardID. All fields must match for the card to be recognized using this algorithm. If the recognition algorithm is 1 (CIS literal comparison), then a variable number of CIS comparison fields follow, each of which has ID 5. See the entry for field #05 for the format and use of these fields. At least one CIS comparison field must be present, and all CIS comparisons must succeed for the card to be recognized using this algorithm. If the recognition algorithm is 2 (Generic type recognition), then a card type field (ID 06) must follow. CardID uses its internal recognition algorithm for cards of this type. If CardID has no internal recognition algorithm for this type, the card is not recognized. The card types recognized by CardID are modems (type 2) and ATA cards (type 4). If the recognition algorithm is 3 (Custom code), then a custom recognition code record (ID 07) must follow. Field # 01 = Manufacturer Name Offset Bytes Description Value  00 1 Field ID # 01h  01 n Manufacturer's Name ASCIIZ string (null terminated)   Field # 02 = Product Name Offset Bytes Description Value  00 1 Field ID # 02h  01 n Product Name ASCIIZ string (null terminated)   Field # 03 = Additional Product Information (1) Offset Bytes Description Value  00 1 Field ID # 03h  01 n Additional Product Information String ASCIIZ string (null terminated)   This field describes the contents of the third string in the CISTPL_VERS_1 tuple (if one is present). Field # 04 = Additional Product Information (2) Offset Bytes Description Value  00 1 Field ID # 04h  01 n Additional Product Information String ASCIIZ string (null terminated)   This field describes the contents of the fourth string in the CISTPL_VERS_1 tuple (if one is present). Field # 05 = CIS Comparison Offset Bytes Description Value  00 1 Field ID # 05h  01 1 Memory Type 0 = Common memory 1 = Attribute memory  02 4 Offset Offset from start of memory (includes even and odd bytes, in both attribute and common memory)  06 1 Length Number of bytes of comparison data  07 n Comparison Data Bytes to compare   This field specifies an area of the card data to compare against the specified data. If attribute memory is being compared, the Offset should be even, and odd bytes in attribute memory space are skipped. All bytes of the comparison data are used, in both common and attribute memory. Field # 06 = Card Type Offset Bytes Description Value  00 1 Field ID # 06h  01 1 Card Type Card Type   Field # 07 = Custom Recognition Code Offset Bytes Description Value  00 1 Field ID # 07h  01 2 Custom Code Length # bytes in custom code  03 n Custom Recognition Code Variable length custom recognition code   The Custom Recognition code is position-independent code called by CardID when this record is read during card insertion processing. The interface is as follows: Entry point: At the start of the record data (like a COM file). At entry, DS = CS = SS (tiny model). Inputs: AX Pointer to beginning of custom code (call is via CALL AX) BX Pointer to a common_info structure CX System type (0 = DOS, 1 = Windows) DX Client Handle for CardID SI Pointer to a SOCKET_DATA structure for this slot Outputs: AX Return value (0 = success, 2 = failure) Registers that must be preserved: BP, DI, DS The custom recognition code may make Card Services calls using the Client Handle passed in DX, but must free any Card Services resources it allocates before returning. Card Configuration Fields These fields describe the configuration to be performed when a card is recognized by the Card Recognition algorithm of this Card Recognition and Configuration Record. Field # 10 = Configuration Algorithm Offset Bytes Description Value  00 1 Field ID # 10h  01 1 Configuration Algorithm 0 = Do not configure 1 = Use internal configuration algorithm 2 = Configure as specified 3 = Reserved 4 = Custom configuration 5 = Internal + Custom 6 = Specific + Custom  02 1 Status Interrupt Mask Mask to pass to Card Services for enabling status interrupt sources. Should be FF for cards that drive all status lines properly. The bits are as described in the Socket Services specification for SetSocket.   If the configuration algorithm is 0 (do not configure), the card should be rejected and no configuration should be attempted. This is like the "ignore" function of the current CardID. If the configuration algorithm is 1 (use internal configuration algorithm), a Card Type field (ID 6) follows, to define what sort of card it is. This field may be omitted if a Card Type field was specified in the recognition section, or if a CISTPL_FUNCID tuple (possibly modified by one or more CISTPL_FUNCE tuples) is present in the CIS. CardID chooses I/O windows and IRQ assignments from its internal configuration code for this card type. If it has no internal configuration code for this card type, the card is rejected. If the configuration algorithm is 2 (configure as specified), an optional CIS requirements field (ID 11), an optional CIS default field (ID 12), and an optional CIS override field (ID 13) follow. These fields, combined with the actual CIS, if present, specify the card configuration, as follows: 1. The CIS default field, if present, is read into a default CIS information structure. 2. Unspecified fields are set to their backup values, as defined by the PCMCIA PC Card Specification. 3. The CIS is scanned, with initial default values for all fields set as if the values in the default CIS information structure had been specified in a CISTPL_CFTABLE_ENTRY tuple with the "default" bit set. 4. If the CIS requirements field is present, the first CISTPL_CFTABLE_ENTRY tuple matching the requirements is selected, and read into a working CIS information structure. Otherwise, the first CISTPL_CFTABLE_ENTRY tuple found is read. If no tuple is read, the working CIS information structure is copied from the default CIS information structure. 5. If a CIS override field is present, the override fields are copied into the working CIS information structure. 6. Finally, the working CIS information structure is analyzed to determine if it contains enough information to perform a configuration. If so, the card is configured. If not, the card is not configured. If the configuration algorithm is 4 (custom config), a custom configuration field (ID 14) follows. The code in that field is used to configure the card. If the configuration algorithm is 5 (internal + custom), the internal configuration algorithm is run. If it succeeds, the custom configuration code is then called. If the configuration algorithm is 6 (specific + custom) the specific configuration algorithm is run. If it succeeds, the custom configuration code is then called. Field # 11 = CIS requirements Offset Bytes Description Value  00 1 Field ID # 11h  01 2 Field Mask Bitmask defining which CIS fields are significant.  03 n CE CISTPL_CFTABLE_ENTRY image, with required values in the fields marked as significant.   The Field Mask determines which fields in CISTPL_CONF and CISTPL_CFTABLE_ENTRY images are valid. The format of a Field Mask is identical for Fields 11, 12, and 13, and is as follows: Bit 0: Configuration registers base address valid (CONF) Bit 1: Configuration register presence mask valid (CONF) Bit 2: Configuration index valid (CE) Bit 3: Vcc power description valid (CE) Bit 4: Vcc and Vpp power descriptions valid (CE) Bit 5: I/O space description valid (CE) Bit 6: IRQ description valid (CE) Bit 7: Memory space description valid (CE) Bit 8: Miscellaneous-fields structure valid (CE) In this field, and in the other fields that use tuple images, the image is stored complete, with tuple code and tuple length fields, to allow the same code in CardID that processes CIS tuples to process tuple images. The tuple images conform to the PCMCIA PC Card Standard, Release 2.10, with the following extra semantics: SYMBOL 183 \f "Symbol" \s 9 \h If the I/O base of an I/O range has Bit 31 set, that range is considered to require a 16-bit data path, regardless of the setting of the Bus8 and Bus16 bits of TPCE_IO. SYMBOL 183 \f "Symbol" \s 9 \h If the length of a memory range has Bit 31 set, that range is to be mapped to attribute memory space, rather than common memory space. It is presumed that attribute memory space requires an 8-bit data path, and common memory space requires a 16-bit data path. Field # 12 = CIS defaults Offset Bytes Description Value  00 1 Field ID # 12h  01 2 Field Mask Bitmask defining which CIS fields are significant.  03 n CONF CISTPL_CONFIG image. Present only if at least one CONF bit is set in the bitmask.  mm n CE CISTPL_CFTABLE_ENTRY image, with special default values in the fields marked as significant. Present only if at least one CE bit is set in the bitmask.   Field # 13 = CIS override Offset Bytes Description Value  00 1 Field ID # 12h  01 2 Field Mask Bitmask defining which CIS fields are significant.  03 n CONF CISTPL_CONFIG image. Present only if the configuration base bit is set in the bitmask.  mm n CE CISTPL_CFTABLE_ENTRY image, with override values in the fields marked as significant. Present only if at least one CE bit is set in the bitmask.   Field # 14 = Custom Configuration Code Offset Bytes Description Value  00 1 Field ID # 14h  01 2 Custom Code Length # bytes in custom code  03 n Custom Code Variable length custom configuration code   The Custom Configuration code is position-independent code called by CardID to configure a card. The interface is as follows: Entry point: At the start of the record data (like a COM file). At entry, CS = DS = SS (tiny model). The call is a near call. Inputs: AX Pointer to beginning of custom code BX Pointer to a common_info structure CX System type (0 = DOS, 1 = Windows) DX Client Handle for CardID SI Pointer to a SOCKET_DATA structure for this slot Outputs: AX Return value (0 = success, 4 = failure) Registers that must be preserved: BP, DI, DS The custom configuration code may make Card Services calls using the Client Handle passed in DX. If it allocates Card Services resources, it should store the corresponding request structures in the appropriate fields of the SOCKET_DATA structure, so they can be freed when the card is removed. Field # 15 = Custom Removal Code Offset Bytes Description Value  00 1 Field ID # 15h  01 2 Custom Code Length # bytes in custom code  03 n Custom Removal Code Variable length custom removal code   Normally, on card removal, CardID releases the configuration. In addition, if any special code was performed on insertion (e.g., setting up the BIOS Data Area for a modem), it must be undone on removal. This field defines custom removal code for cards that need it. It may be present even if the card was not configured with custom code. The Custom Removal code is position-independent code called by CardID when a card is removed that was recognized and configured according to this record. The interface is as follows: Entry point: At the start of the record data (like a COM file). At entry, DS = CS = SS (tiny model). Inputs: AX Pointer to beginning of custom code (call is via CALL AX) BX Pointer to a common_info structure CX System type (0 = DOS, 1 = Windows) DX Client Handle for CardID SI Pointer to a SOCKET_DATA structure for this slot Outputs: None. Registers that must be preserved: BP, DI, DS The custom removal code may make Card Services calls using the Client Handle passed in DX, but must free any Card Services resources it allocates before returning. Custom removal code need not free Card Services resources described in the SOCKET_DATA structure; those will be freed by CardID after the custom removal code returns. Field # 16 = I/O Redirection Offset Bytes Description Value  00 1 Field ID # 16h  01 2 Field Mask 0020h  03 n CE CISTPL_CFTABLE_ENTRY image, with card base values in the I/O base fields. No other fields are significant.   seq chapter \hAppendix B Card Services Vendor-Specific API Definitions This Appendix contains the Card Services Application Programming Interface (API) definitions for SystemSoft vendor-specific functions. Subcomponent IDs The following table lists the Card Services API subcomponent IDs. Subcomponent ID Subcomponent  0 Card Services Special API  1 Power Management  2 Ring Resume  3 Reserved  4 Reserved  5 CardBoot  6 BeepControl  7 GetWindowInfo   RegisterSpecialClient CardServices (VendorSpecific, null/ClientHandle, ClientEntry, ArgLength, ArgPointer) Card Services argument binding: Inputs [AL] = Function (VendorSpecific - 34h) [DX] = Handle (Null) [DI]:[SI] = ClientEntry, [DI] is 16-bit segment, [SI] is 16-bit offset [CX] = ArgLength [ES]:[BX] = ArgPointer, [ES] is 16-bit segment, [BX] is 16-bit offset Outputs [AX] = Status [DX} = ClientHandle [CF] = Reset to zero when request was successful, set to one when request failed All entry registers are preserved unless the same register is used for a return value. All calls and returns are FAR. All pointers are SEGMENT16:OFFSET16. Card Services is invoked by INT 1Ah with [AH] = AFh. This function is used to make vendor-specific Card Services requests for registering with Card Services clients that have special requirements. Argument Packet Definition Offset Field Size Type Value Description  0 InfoLen 2 I/O N Length of returned info in packet  2 SubComponentID 1 I 0 Special Card Services API Subcomponent ID  3 FunctionID 1 I  10h RegisterClient Function ID  4 Argument Length 2 I N Length of RegisterClient Argument Packet  6 Argument Packet *N I N RegisterClient Argument Packet  *N+6 Special Attributes 4 I N Bit-mapped (defined in the following table)  *N+10 Callback Offset 2 I N Vendor-specific Client Callback Entry  *N+12 Callback Segment 2 I N    *N = Size of RegisterClient Argument Packet The Special Attributes field is bit-mapped. It identifies the special handling the client requires: Bit Function  31:2 Reserved (reset to zero)  1 Issue vendor-specific callback for card configurations  0 Issue card removal events for powered-off sockets   Function ID is used to indicate Ring Resume Disable (1) or Enable (2). SpecialGetStatus CardServices (VendorSpecific, null, null, ArgLength, ArgPointer) Card Services argument binding: Inputs [AL] = Function (VendorSpecific - 34h) [DX] = Handle (Null) [DI]:[SI] = ClientEntry, [DI] is 16-bit segment, [SI] is 16-bit offset [CX] = ArgLength [ES]:[BX] = ArgPointer, [ES] is 16-bit segment, [BX] is 16-bit offset Outputs [AX] = Status [CF] = Reset to zero when request was successful, set to one when request failed All entry registers are preserved unless the same register is used for a return value. All calls and returns are FAR. All pointers are SEGMENT16:OFFSET16. Card Services is invoked by INT 1Ah with [AH] = AFh. This function is used to make vendor-specific Card Services requests for retrieving socket status information from Card Services that contains special information. Argument Packet Definition Offset Field Size Type Value Description  0 InfoLen 2 I N Length of returned info in packet  2 SubComponentID 1 I 0 Special Card Services API Subcomponent ID  3 FunctionID 1 I  0Ch GetStatus Function ID  4 Argument Length 2 I N Length of GetStatus Argument Packet  6 Argument Packet *N I/O N GetStatus Argument Packet  *N+6 Configuration State 2 O N Bit-mapped (defined in the following table)   *N = Size of GetStatus Argument Packet The Configuration State field is bit-mapped. It identifies the socket configuration state: Bit Function  15:5 Reserved (reset to zero)  4 Memory Handle assigned to Socket (via OpenMemory)  3 MTD is registered on Socket  2 Socket is in I/O mode  1 Socket is configured  0 Socket has memory window(s)   Suspend/Resume CardServices (VendorSpecific, null, null, ArgLength, ArgPointer) Card Services argument binding: Inputs [AL] = Function (VendorSpecific - 34h) [DX] = Handle (Null) [DI]:[SI] = Pointer, [DI] is 16-bit segment, [SI] is 16-bit offset (Null) [CX] = ArgLength (4) [ES]:[BX] = ArgPointer, [ES] is 16-bit segment, [BX] is 16-bit offset Outputs [AX] = Status [CF] = Reset to zero when request was successful, set to one when request failed All entry registers are preserved unless the same register is used for a return value. All calls and returns are FAR. All pointers are SEGMENT16:OFFSET16. Card Services is invoked by INT 1Ah with [AH] = AFh. This function is used to make vendor specific Card Services requests for Suspend/Resume (if FunctionID is 1 or 2) or Socket Suspend/Resume (if FunctionID is 3 or 4). Argument Packet Definition Offset Field Size Type Value Description  0 InfoLen 2 I/O 4 Length of returned info in packet  2 SubComponentID 1 I 1 Power Management SubComponent ID  3 FunctionID 1 I N Suspend/Resume Function ID   Function ID is used to indicate Controller Suspend (1), Controller Resume (2), Socket Suspend (3), or Socket Resume (4). The Socket field is required only when FunctionID is set to 3 or 4. Socket Suspend/Resume CardServices (VendorSpecific, null, null, ArgLength, ArgPointer) Card Services argument binding: Inputs [AL] = Function (VendorSpecific - 34h) [DX] = Handle (Null) [DI]:[SI] = Pointer, [DI] is 16-bit segment, [SI] is 16-bit offset (Null) [CX] = ArgLength (6) [ES]:[BX] = ArgPointer, [ES] is 16-bit segment, [BX] is 16-bit offset Outputs [AX] = Status [CF] = Reset to zero when request was successful, set to one when request failed All entry registers are preserved unless the same register is used for a return value. All calls and returns are FAR. All pointers are SEGMENT16:OFFSET16. Card Services is invoked by INT 1Ah with [AH] = AFh. This function is used to make vendor specific Card Services requests for Suspend/Resume (if FunctionID is 1 or 2) or Socket Suspend/Resume (if FunctionID is 3 or 4). Argument Packet Definition Offset Field Size Type Value Description  0 InfoLen 2 I/O 4 Length of returned info in packet  2 SubComponentID 1 I 1 Power Management SubComponent ID  3 FunctionID 1 I N Suspend/Resume Function ID  4 Socket 2 I N Logical Socket Number   Function ID is used to indicate Controller Suspend (1), Controller Resume (2), Socket Suspend (3), or Socket Resume (4). The Socket field is required only when FunctionID is set to 3 or 4. Ring Resume CardServices (VendorSpecific, null, null, ArgLength, ArgPointer) Card Services argument binding: Inputs [AL] = Function (VendorSpecific - 34h) [DX] = Handle (Null) [DI]:[SI] = Pointer, [DI] is 16-bit segment, [SI] is 16-bit offset (Null) [CX] = ArgLength (6) [ES]:[BX] = ArgPointer, [ES] is 16-bit segment, [BX] is 16-bit offset Outputs [AX] = Status [CF] = Reset to zero when request was successful, set to one when request failed All entry registers are preserved unless the same register is used for a return value. All calls and returns are FAR. All pointers are SEGMENT16:OFFSET16. Card Services is invoked by INT 1Ah with [AH] = AFh. This function is used to make vendor-specific Card Services requests for Ring Resume. Argument Packet Definition Offset Field Size Type Value Description  0 InfoLen 2 I/O 6 Length of returned info in packet  2 SubComponentID 1 I 2 Ring Resume SubComponent ID  3 FunctionID 1 I N Ring Resume Function ID  4 Socket 2 I N Logical Socket   Function ID is used to indicate Ring Resume Disable (1) or Enable (2). CardBoot CardServices (VendorSpecific, null, null, ArgLength, ArgPointer) Card Services argument binding: Inputs [AL] = Function (VendorSpecific - 34h) [DX] = Handle (Null) [DI]:[SI] = Pointer, [DI] is 16-bit segment, [SI] is 16-bit offset (Null) [CX] = ArgLength (6) [ES]:[BX] = ArgPointer, [ES] is 16-bit segment, [BX] is 16-bit offset Outputs [AX] = Status [CF] = Reset to zero when request was successful, set to one when request failed All entry registers are preserved unless the same register is used for a return value. All calls and returns are FAR. All pointers are SEGMENT16:OFFSET16. Card Services is invoked by INT 1Ah with [AH] = AFh. This function is used to make vendor specific Card Services requests for getting information regarding the existence and status of the CardBoot product. Argument Packet Definition Offset Field Size Type Value Description  0 InfoLen 2 I/O N Length of returned info in packet  2 SubComponentID 1 I 5 Resource Management SubComponent ID  3 FunctionID 1 I 0 N/A  4 Resource Type 1 O N CardBoot Resource Type  5 Boot Status 1 O N Bits 2-0: 000 = SRAM/Series II Flash 001 = Floppy Disk Card 010 = ATA Card Bits 6-3 are unused Bit 7 (Boot Status Bit) 0 = System not booting from PCMCIA card 1 = System booting from PCMCIA card  6 ID String Segment 2 O N Segment of address of CardBoot ID string  8 ID String Offset 2 O N Offset of address of CardBoot ID string  10 Adapter 1 O N Physical adapter number being used by CardBoot  11 Socket 1 O N Physical socket being used by CardBoot  12 Window 1 O N Physical window being used by CardBoot  13 Base 2 O N Base address of window being used by CardBoot  15 Size 2 O N Size of window being used by CardBoot  17 IREQ Information 2 O N Bimap (see below)   The Resource Type field identifies the CardBoot resource type: 0 = Memory Resource 1 = I/O Resource 2 = IRQ Resource The IREQ Information field is a bitmap. If Resource Type=2, it is defined as follows: Bit Description  15:11 Unused  10 DMA Usage: 0=DMA not used 1=DMA used  9 I/O Interface Type: 1=I/O Interface  8 Memory Interface Type: 1=Memory Interface  7:5 Unused  4:0 IREQ being used by CardBoot   BeepControl CardServices (VendorSpecific, null, null, ArgLength, ArgPointer) Card Services argument binding: Inputs [AL] = Function (VendorSpecific - 34h) [DX] = Handle (Null) [DI]:[SI] = Pointer, [DI] is 16-bit segment, [SI] is 16-bit offset (Null) [CX] = ArgLength (8) [ES]:[BX] = ArgPointer, [ES] is 16-bit segment, [BX] is 16-bit offset Outputs [AX] = Status [CF] = Reset to zero when request was successful, set to one when request failed All entry registers are preserved unless the same register is used for a return value. All calls and returns are FAR. All pointers are SEGMENT16:OFFSET16. Card Services is invoked by INT 1Ah with [AH] = AFh. This function is used to make vendor specific Card Services requests for BeepControl version 2.10. Argument Packet Definition Offset Field Size Type Value Description  0 InfoLen 2 I/O 8 Length of returned info in packet  2 SubComponentID 1 I 6 Beep Control Subcomponent ID  3 FunctionID 1 I 0 N/A  4 Request 2 I/O N Set or retrieve beep settings  6 Setting 2 I/O N Beep settings   The Request field is defined as follows: 0=Request to retrieve current beep settings 1=Reqest to set beep settings The Setting field is a bitmap, defined as follows: Bit Function  15:8 Reserved for future use  7 Beep in DOS (overrides bits 3,2,1)  6 Beep in Windows (overrides bits 3,2,1)  5:4 Reserved for future use  3 Beep on card insertion  2 Beep on card removal  1 Beep on configuration conflict  0 Beep on artificial events   GetWindowInfo CardServices (VendorSpecific, null, null, ArgLength, ArgPointer) Card Services argument binding: Inputs [AL] = Function (VendorSpecific - 34h) [DX] = Handle (Null) [DI]:[SI] = Pointer, [DI] is 16-bit segment, [SI] is 16-bit offset (Null) [CX] = ArgLength [ES]:[BX] = ArgPointer, [ES] is 16-bit segment, [BX] is 16-bit offset Outputs [AX] = Status [CF] = Reset to zero when request was successful, set to one when request failed All entry registers are preserved unless the same register is used for a return value. All calls and returns are FAR. All pointers are SEGMENT16:OFFSET16. Card Services is invoked by INT 1Ah with [AH] = AFh. This function is used to retrieve information about memory windows in use on a specific slot. Argument Packet Definition Offset Field Size Type Value Description  0 InfoLen 2 I/O N Length of returned info in packet  2 SubComponentID 1 I 7 Get Information Subcomponent ID  3 FunctionID 1 I 0 Get Memory Window Info Function ID  4 Socket 2 I N Logical Socket  6 WindowEntryCnt 2 I/O N Number of entries in the window array  8 WindowEntryArray N O N Array of window entries   The WindowEntryCnt field specifies the number of entries in the window array as input, and specifies the number of possible entries returned as output (which may exceed the input). The WindowEntry has the following structure: Offset Field Size Type Value Description  0 Base 4 O N System Base Address  4 Size 4 O N Memory Window Size  8 Card Offset 4 O N Card Offset Address  10 Attributes 2 O N (See RequestWindow Attributes)  11 AccessSpeed 1 O N Window Speed Field  12 Page 1 O N Page Number   seq chapter \hAppendix C Socket Services Vendor-Specific API Definitions This Appendix contains the Socket Services Application Programming Interface (API) definitions for Vendor-specific functions. Subcomponent IDs The following table lists the supported subcomponent IDs and subfunctions. Subcomponent ID Subfunction  2 Set/reset DMA mode  100 Get CardBoot information  8000* Reinitialize adapter (after resume)  8001* Set/reset Ring Indicate resume mode   * SystemSoft standard subfunctions. Vendor Specific Functions Inputs: [AL] Adapter Number All other registers are vendor-specific [SI] Subfunction ID Outputs: [CF] Error [AL] Adapter Number [AH] Error code 01 = BAD_ADAPTER Set/Reset DMA Mode Inputs: [BL] Slot Number [BH] DMA Control Bits [7:6] DMA Mode 00 Non-DMA mode 01 DMA (DREQ = -INPACK) 10 DMA (DREQ = WP/-IOIS16) 11 DMA (DREQ = SPKR/LED) [5:3] Reserved (set to zero) [2:0] 000 Use DRQ0 001 Use DRQ1 010 Use DRQ2 011 Use DRQ3 100 No DMA request steering [SI] 2h Get CardBoot Info Inputs: [AH] AEh (vendor specific code) [AL] Adapter Number [SI] 100h This function serves as a pass-through to CardBoot for applications requesting the Get CardBoot Info function. Outputs: If [CY] = 1 CardBoot ROM not present [AH] RETCODE 15 = BAD_FUNCTION Else [CY] = 0 Successful [AH] Physical adapter number used by CardBoot [AL] Boot Status Flag [7] Boot Status 0 System is not booting from PCMCIA card 1 System is booting from PCMCIA card [6:3] Unused [2:0] Card Type of booting card 000 SRAM/Series II Flash Card 001 Floppy Disk Card [ES:DI] Pointer to CardBoot ID string [DH] Boot window [DL] Boot slot [BX] Base address of used resource (4KB units for memory, absolute address for I/O) [CX] Size of used resource (4KB units for memory, absolute address for I/O) [SI] IREQ information [15:11] Unused [10] DMA Usage 0 DMA not used 1 DMA used [9] Interface type = I/O 1 I/O interface [8] Interface type = memory 1 Memory [7:4] Unused [3:0] IRQ used Re-Initialize Adapter After Resume Inputs: [AH] AEh (Vendor specific code) [AL] Adapter number [SI] 8000h Set/Reset Ring Indicate Mode Inputs: [AH] AEh (Vendor specific code) [AL] Adapter number [SI] 8001h [BL] Slot number [DL] Control flags [7:1] Reserved [0] Set/reset Ring Indicate mode 0 = Reset 1 = Set Outputs: [CF] Status 0 = Success 1 = Error [AH] RETCODE 0B = BAD_SOCKET 15 = BAD_FUNCTION seq chapter \hAppendix D SystemSoft CardSoft API for Windows This appendix describes the interface to Card Services that is provided for Windows 3.1 applications via the SystemSoft API for Windows. These libraries and drivers enable Windows 3.1 applications to register as Card Services clients, thereby allowing these applications to receive callbacks when PC cards are inserted into or removed from a slot. The following illustrates the hierarchy of the libraries and drivers of the SystemSoft API for Windows. EMBED MSDraw \* mergeformat Component Descriptions Socket Services provides the interface to the socket adapter hardware. Card Services provides the software interface that follows the PCMCIA Card Services Specification (Version 2.10). CARDID.EXE is the Card Installation Client driver that provides detection and configuration services for certain PCMCIA cards. CardID provides much of the information that is displayed by the Windows application. All of these components comprise the SystemSoft CardSoft PCMCIA software suite. These drivers are loaded at boot-up time via lines in CONFIG.SYS. As a result, they run in Virtual 86 mode under Windows. The most difficult problem posed by having a Windows application communicate with Card Services and Socket Services is the crossing back and forth over the line between protected mode and Virtual 86 mode. The virtual driver SSVRDD.386 (which stands for SystemSoft Virtual Removable Device Driver) provides the mapping of parameters and calls across this line. The work accomplished by SSVRDD is transparent to the Windows application. The application never makes direct calls to this virtual driver. The file SSVCD.386 is a modified version of the Virtual Comm Driver VCD.386. When the SSCOMM driver makes a request for a COM port, SSVCD.386 returns "OK" if and when the request is for a "removable" COM port. In the 16-bit protected mode layer, SSCOMM.DRV is a PCMCIA-aware version of the Windows COMM.DRV. It handles all of the regular duties of the COMM driver. In addition, it must have knowledge about which devices are removable (through SYSTEM.INI) and which devices are present (through calls to Card Services). When this driver loads, it registers as a Card Services client, and is therefore informed of subsequent card insertions and removals. If an application (such as Terminal) accesses a COM port, this driver must handle the possibility that the card is no longer present. It must recover without allowing the system to hang on I/O access, and it must inform the user that the card is not present. The dynamic link library SSWINCS.DLL simply provides the mapping of a "C" call to invoke Card Services to the Pascal format. Card Services API Description The Card Services API that is contained in the file SSWINCS.DLL consists of one function with the following prototype: DWORD FAR InvokeCardServices( BYTE Function, WORD Handle, WORD far *Pointer, WORD ArgLength, WORD far *ArgPointer ); This function is really the entire API to Card Services. All calls that adhere to the Card Services specification are called through this function. The following type definitions are contained in a header file: typedef WORD (far *CallbackPtr)(); typedef DWORD (far *PCMCIA_API)(BYTE Function, WORD Handle, \ WORD far *Pointer, WORD ArgLength, WORD far *ArgPointer); The pointer to the "InvocCardServices" function is declared as a global: PCMCIA_API InvocPtr; // the Card Services invocation call In the initialization function, where the windows class is defined and the main window is created, we load the SSWINCS.DLL library and get the proc instance to the "InvokeCardServices" function. Part of our initialization routine looks like this: BOOL InitApplication( HINSTANCE hInstance ) { WNDCLASS wndclass; CSIBufPtr CSIPtr; HWND hwnd; char szFormat[70]; ourInstance = hInstance; // get a Card Services invocation pointer and an instance hinstLibrary = LoadLibrary( "SSWINCS.DLL" ); if ( hinstLibrary < HINSTANCE_ERROR ) { LoadString( hInstance, IDS_ERR_SSWINCS, szFormat, 70 ); wsprintf( output_buffer, szFormat, (UINT)hinstLibrary); bad_error: MessageBox(HWND_DESKTOP, output_buffer, szAppName, MB_OK | MB_ICONINFORMATION); return FALSE; } if ((InvocPtr = (PCMCIA_API) GetProcAddress( hinstLibrary,"InvokeCardServices")) == 0L) { LoadString( hInstance, IDS_ERR_CS_ENTRYPOINT, output_buffer, OUTB_SIZE ); goto bad_error; } // Get Card Services information, including the number of sockets if ( GetCardServicesInfo( (CSIBufPtr)ArgPtrbuf )) { LoadString( hInstance, IDS_ERR_NO_CARDSOFT, output_buffer, OUTB_SIZE ); goto bad_error; } CSIPtr = (CSIBufPtr) ArgPtrbuf; numSockets = CSIPtr->Count; // Other initialization code would follow..... return TRUE; } // InitApplication In another module, we have the function that CardView uses whenever it needs to call Card Services: DWORD InvocCardServices(BYTE Function, WORD Handle, WORD far *Pointer, WORD ArgLength, WORD far *ArgPointer) { return ((*InvocPtr)(Function, Handle, Pointer, ArgLength, ArgPointer)); } // InvocCardServices The double word returned by this function contains the return status in AX and the return handle in DX. In the MainWindowProc that handles the Window messages, we register as a Card Services client during our handling of the WM_CREATE message. CS_Callback is the name of the callback function provided for Card Services. case WM_CREATE: // Create any child windows and/or brushes you may need... // Make an instance of our callback routine and // register as CS client CBPtr = (CallbackPtr) CS_Callback; CBPtr = (CallbackPtr) MakeProcInstance((FARPROC) CBPtr, ourInstance); if ((status = RegisterAsClient( MEM_CLIENT, CBPtr )) != 0) { CS_Error( "registering as a CS client", status ); return 0; } // Continue with any more WM_CREATE chores... The RegisterAsClient() function fills an argument buffer and then makes a call to Card Services, using the InvocCardServices() function described above. Socket Services API Description The Socket Services API that is contained in the file SSWINCS.DLL consists of one function with the following prototype: WORD FAR InvokeSocketServices( union REGS far *RegPointer, struct SREGS far *SRegPointer ); The following type definitions are contained in a header file: typedef WORD (far *PCMCIA_SSAPI)(union REGS far *RegPointer, \ struct SREGS far *SRegPointer); The pointer to the "InvocSocketServices" function is declared as a global: PCMCIA_SSAPI InvocSSPtr; // the Socket Services invocation call In the initialization function, where the windows class is defined and the main window is created, we load the SSWINCS.DLL library and get the proc instance to the "InvokeSocketServices" function. Part of our initialization routine looks like this: BOOL InitApplication( HINSTANCE hInstance ) { WNDCLASS wndclass; CSIBufPtr CSIPtr; HWND hwnd; char szFormat[70]; ourInstance = hInstance; // get a Socket Services invocation pointer and an instance hinstLibrary = LoadLibrary( "SSWINCS.DLL" ); if ( hinstLibrary < HINSTANCE_ERROR ) { LoadString( hInstance, IDS_ERR_SSWINCS, szFormat, 70 ); wsprintf( output_buffer, szFormat, (UINT)hinstLibrary); bad_error: MessageBox(HWND_DESKTOP, output_buffer, szAppName, MB_OK | MB_ICONINFORMATION); return FALSE; } if ((InvocSSPtr = (PCMCIA_SSAPI) GetProcAddress( hinstLibrary,"InvokeSocketServices")) == 0L) { LoadString( hInstance, IDS_ERR_SS_ENTRYPOINT, output_buffer, OUTB_SIZE ); goto bad_error; } // Other initialization code would follow..... return TRUE; } // InitApplication In another module, we have the function that CardView uses whenever it needs to call Socket Services: WORD InvocSocketServices( union REGS far *RegPointer, struct SREGS far *SRegPointer ) { return ((*InvocSSPtr)(RegPointer, SRegPointer)); } // InvocSocketServices Note The following table lists the Socket Services for Windows functions that are supported by SystemSoft. For more information on these functions, refer to Appendix B of the PCMCIA Socket Services Specification, Release 2.1. For information on the semantics for these functions, refer to Chapter 5 of the PCMCIA Socket Services Specification, Release 2.1. Subfunction ID Function  83h Get_SSInfo  85h Get_Adapter  88h Get_Window  8Ah Get_Page  8Dh Get_Socket  8Fh Get_Status   seq chapter \h Appendix E Extensions to the Card Services Specification Provided by CardID The CardID driver provides extensions to the Card Services specification. These extensions are accessed through the GetClientInfo subfunction (03h) by specifying an Info Subfunction in the range 80h-FFh. The extensions are listed here by their Info Subfunction value. GetClientInfo Subfunctions The following table lists the Info subfunctions for GetClientInfo. Info Subfunction Function  80h Returns a bit-mapped field showing which GetClientInfo extensions are supported by the specified client.  81h Returns strings identifying which card resides in the specified logical slot.  82h Reserved by SystemSoft  83h Reserved by SystemSoft  84h Reserved by SystemSoft  85h Reserved by SystemSoft  86h Fills a buffer with values that describe the current CardID parameters.  87h Sets the current CardID parameters with values contained in a buffer.  88h Reserved  89h Reserved  8Ah Reserved  8Bh Reserved  8Ch Reserved  8Dh Reserved  8Eh Reserved  8Fh Returns error information for a specific slot.   GetGCIExtensionsInfo (Info Subfunction 80h) This function returns a bit-mapped field showing which GetClientInfo extensions the specified client supports. On Entry: Attributes: 80XXh Client Info Packet: Offset Size Contents  6 2 Reset to zero   On Exit: Client Info Packet: Offset Size Contents  6 2 Supported functions   The Supported Functions field is bit-mapped and is defined as follows: Bit Description if set  15:6 Reserved (reset to zero)  5 Has system diagram bitmap  4 Supports configured range for memory cards  3 Supports size for memory cards  2 Has Device Independent Bitmap  1 Supports Device Identification  0 Supports Card Identification   GetCardID (Info Subfunction 81h) This function returns strings identifying which card resides in the specified logical socket. Zero length strings are returned when the information is not available. On Entry: Attributes: 81XXh Client Info Packet: Offset Size Contents  6 2 Logical socket number   On Exit: Client Info Packet: Offset Size Description  6 2 Logical socket number  8 2 Offset in packet to Card Type string buffer  10 2 Length of Card Type string  12 2 Offset in packet to Manufacturer string buffer  14 2 Length of Manufacturer string  16 2 Offset in packet Product string buffer  18 2 Length of Product string  N N Card Type ASCIIZ string  N N Manufacturer ASCIIZ string  N N Product ASCIIZ string   Legal card type strings are defined as follows (case sensitive): Card Type String Description  "Modem" Modems, FAX/Modems  "Ethernet" Ethernet Adapters  "ATA Disk" ATA Disks  "Flash Card" Flash Memory Cards  "SRAM Card" SRAM Memory Cards   Reserved Functions Subfunctions 82h, 84h, and 85h are reserved by SystemSoft. GetCardIDArgList (Subfunction 86h) This function fills a buffer with values that describe the current CardID parameters. These parameters match those that are contained in the CARDID.INI file. The buffer filled has the following "C" structures: #define MAX_COM_PORTS 4 #define MAX_LAN_PORTS 2 typedef struct { WORD addr; BYTE irq; } PORT_INFO; typedef struct { BYTE flags; PORT_INFO port[MAX_COM_PORTS]; BYTE com_order[MAX_COM_PORTS]; } COM_DEF; // Flags for the COM_DEF.flags byte #define SEL_SOCKET 0x01 // 0 = Insertion order, 1 = Socket number #define BDA_ABSOLUTE 0x02 // BIOS data area address algorithm // unused 0x04 #define AUDIO_ON 0x08 // 1 = Audio on in modem card #define USE_RI 0x10 // 1 = Ring Indicate on in modem card // The "mem_base" values in here are in 4K units. typedef struct { BYTE flags; // None currently defined PORT_INFO port[MAX_LAN_PORTS]; WORD mem_base[MAX_LAN_PORTS][2]; } LAN_DEF; typedef struct { WORD split_port_1; // Currently not used WORD split_port_2; // Currently not used WORD linear_port; // Currently not used } ATA_DEF; /* Here is where we keep any other CardID arguments that have no * home in the COM, LAN, or ATA definitions. */ typedef struct { WORD flags; // Miscellaneous flags as described below } MISC_DEF; // Definitions for the MISC_DEF.flags field: #define F_MISC_TRSPD 0x02 // Token ring speed: 0 = 4; 1 = 16 typedef struct { COM_DEF com_info; // COM port information LAN_DEF lan_info; // LAN information ATA_DEF ata_info; // ATA drive information MISC_DEF misc_info; // Miscellaneous information } COMMON_INFO; typedef struct { WORD max_length; WORD info_length; WORD attr; // Subfunction number in high byte char cmd_path[80]; // Full file spec for CARDID.INI COMMON_INFO dos_info; // Common info for the DOS world COMMON_INFO win_info; // Common info for Windows world } GETSETARGS; On Entry: Attributes: 86XXh Client Info Packet: Empty buffer as described above. On exit: Client Info Packet: Filled with current CardID parameters. SetCardIDArgList (Subfunction 87h) This function sets the current CardID parameters with values contained in a buffer. These parameters match those that are contained in the CARDID.INI file. The buffer is identical to that described in Subfunction 86h. On Entry: Attributes: 87XXh Client Info Packet: Buffer filled with CardID parameters. On exit: Nothing. GetLastError (Subfunction 8Fh) This function returns error information for a specific socket. Specifically, it returns the function number of the last function to get a non-zero return code, and the error code that it received. On Entry: Attributes: 8FXXh Client Info Packet: Offset Size Contents  6 2 Logical socket number   On exit: Offset Size Description  6 2 Logical socket number  8 2 Last error code received  10 2 Function number of the call that returned the error   Appendix F Card Services Vendor-Specific Callbacks Currently, Card Services implements only one vendor-specific callback, Socket Configuration (83h). Socket Configuration (83h) Callback (Socket Configuration, Socket, ConfigState, null, null, 0, ClientData) The Socket Configuration event indicates that Card Insertion events for a PCMCIA slot have been completed, and notifies the client as to how the slot has been configured. Cause Card Insertion. Pre-Client Card Services issues a Card Insertion event to all clients that have used the RegisterClient function to indicate their interest in insertion events (see the description of Card Insertion in the PCMCIA Card Services Specification, Release 2.10). Client All clients that have used the RegisterSpecialClient vendor-specific function to indicate their interest in socket configuration events are notified by Card Services via the vendor-specific client callback entry. If further information about the configuration is needed, the client should call the GetConfigurationInfo function if the slot is configured, and should call the GetWindowInfo vendor-specific function if the slot has memory windows. Post_Client Card Services does not perform any post-client processing. The ConfigState is bit-mapped. It identifies the socket configuration state: Bit Function  15:5 Reserved  4 Memory Handle assigned to slot (via Open Memory)  3 MTD is registered on slot  2 Slot is in I/O mode  1 Slot is configured  0 Slot has memory window(s)   SYSTEMSOFT SYMBOL 210 \f "Symbol" PCMCIA 2.10-Compliant Software SYSTEMSOFT CardSoft 3.1 - PAGEiii - Rev 0.1 5/94 SYSTEMSOFT CardSoft PCMCIA Software Suite CardSoft 3.1 1-PAGE3 Rev 0.1 5/94 SYSTEMSOFT Using the Configuration Utility CardSoft 3.1 2-PAGE12 Rev 0.1 5/94 SYSTEMSOFT Configuring Driver Parameters CardSoft 3.1 3-PAGE12 Rev 0.1 5/94 SYSTEMSOFT CardID CardSoft 3.1 A-PAGE10 Rev 0.1 5/94 SYSTEMSOFT Card Services Vendor-Specific API Definitions CardSoft 3.1 B-PAGE10 Rev 0.1 5/94 SYSTEMSOFT Socket Services Vendor-Specific API Definitions CardSoft 3.1 C-PAGE4 Rev 0.1 5/94 SYSTEMSOFT SystemSoft CardSoft API for Windows CardSoft 3.1 D-PAGE6 Rev 0.1 5/94 SYSTEMSOFT CardID Extensions CardSoft 3.1 E-PAGE6 Rev 0.1 5/94 SYSTEMSOFT Card Services Vendor-Specific Callbacks CardSoft 3.1 F-PAGE2 Rev 0.1 5/94 SYSTEMSOFT CardSoft 3.1 Software Technical Reference Revision 0.1 [5/94] z} st} st} st} st} st} st} stPI} st} st} st} st :@CNN!& (Z&MrEdMicrosoft DrawZ&MrEdTT Courier New)_  &MrEd8t  ^@  .1Courier New-2 `P#CardSoft (TM) Configuration Utility&MrEdl/--/l 2 T!File Edit Utility Display 2 Help&MrEd0l--l0  2 P Current File 2 P@ Card Library & MrEd%XXi & MrEd%KK&4b- & MrEd $K<KK & MrEd $KZKK & &MrEd=[[= & MrEd%WW & MrEd%KK&MrEd=[--[=- & MrEd% hYi & MrEd%  h & MrEd% {>{ & MrEd%~ & MrEd% Y & MrEd%;&4b- & MrEd $K<KK & MrEd $KZKK &  & MrEd%?{? & MrEd%;; & MrEd%j & MrEd%& & MrEd $ & MrEd $  & &MrEd   & MrEd% & MrEd%&MrEd -- - & MrEd%hj & MrEd%h & MrEd%&- & MrEd $ & MrEd $  & "System---''=ul^&&v+P W+]vFT:;C ^F&# Z&MrEdMicrosoft DrawZ&MrEd~~ Courier New)_  &MrEd7$  ?  .1Courier New-2 `P#CardSoft (TM) Configuration Utility&MrEdl----l 2 TFile Utility Display 2 .Help&MrEd/--/"System--'' :3FP  'Z&MrEdMicrosoft DrawZ&MrEd-q  Courier Newhlbku&MrEdj(# , (j    &MrEdr0 $--$ 0r.1Courier New-2 Open CardID Library File 2 *.clb 2  < OK > 2  C:\CARDSOFT 2 @ File List:2 @Drives / Dirs: 2  CARDID.CLB2 .. 2 0 CARDS.CLB 2 0[-A-] 2 [-B-] 2 [-C-] 2 P[-D-] 2 [-E-] 2 [-F-] 2 t  & MrEd%jj & MrEd%j@ & MrEd%@@ & MrEd%@S @ & MrEd%@j & MrEd%jR j&MrEd%--%- & MrEd%R kR  & MrEd%R R &@ d - & MrEd $R H R R  & MrEd $R \ R R  & &MrEdH a a H &A e , & MrEd $S $I S S $ & MrEd $S $] S S $ &  & MrEd%S ?S 0 & MrEd%U U &MrEdH a --a H - & MrEd%j & MrEd%&{- & MrEd $ & MrEd $ & &MrEd& - & MrEd $%% & MrEd $%% &  & MrEd%@" & MrEd%&MrEd---- & MrEd$rr 2  CARDS_1.CLB 2  CARDS_2.CLB & MrEd%p  & MrEd$) & MrEd%u  & MrEd%r   & MrEd$  & MrEd%I & MrEd%Iz & MrEd%z x & MrEd%p  `"System---''z :`+%fFrr Z&MrEdMicrosoft DrawZ&MrEd  Courier New)_  &MrEd4  4    &MrEdN< -- <N&MrEd,i--i,&MrEdll&MrEd.1Courier New2f-2 Card Recognition2 #Record ID: D-Link Ethernet Lan Card 2 < OK >&MrEd-- 2  ( ) Modem2 p( ) 3270 Emulator 2 2Card Type Name:&MrEdtp--pt 2  Card Type&MrEd-- & MrEd$dyzd & MrEd$d zd+&MrEdB-B2 2 02 !( ) CIS Manufacturer/Product Data2 ( ) CIS Literal Bytes2 $( ) Generic Recognition by Card Type2 ( ) Custom Code&MrEd$n~--~n$2 `Recognition Algorithm- & MrEd%u  & MrEd%   & MrEd%u - & MrEd$Z1 I Z1 kZ & MrEd$ a K a ! &MrEd +--+ - & MrEd%N   & MrEd% [ ^- & MrEd$` OO`9qO`  & MrEd%`a:&MrEdC--C&MrEd-- 2  ( ) Ethernet 2  ( ) ATA Disk2 p( ) Token Ring 2 p ( ) Other 2   2 `< Help >"System---''+ Z:/   Z&MrEdMicrosoft DrawZ&MrEdiijS  Courier NewP&MrEd        &MrEd ~--~ &MrEd3Z--V/&MrEdTX\P&MrEdZV.1Courier New 0-2 $< OK > < Help >2 `Level 1 Version Tuple Fields2 Manufacturer: Intel2 Product: Ethernet Lan Card2 @Add'l Info 1: iNC3002  Add'l Info 2:&MrEdhm %--)q d&MrEdtn r p&MrEdn =Ar &MrEdlq u h"System---''an :3EP  Z&MrEdMicrosoft DrawZ&MrEd-q  Courier Newhlbku&MrEdj(# , (j    &MrEdr0 $--$ 0r.1Courier New-2 0Custom Recognition Code File 2 *.bin 2  < OK > 2  C:\CARDSOFT 2 @ File List:2 @Drives / Dirs:2 .. 2 0[-A-] 2 [-B-] 2 [-C-] 2 P[-D-] 2 [-E-] 2 [-F-] 2 t  & MrEd%jj & MrEd%j@ & MrEd%@@ & MrEd%@S @ & MrEd%@j & MrEd%jR j&MrEd%--%- & MrEd%R kR  & MrEd%R R &@ d - & MrEd $R H R R  & MrEd $R \ R R  & &MrEdH a a H &A e , & MrEd $S $I S S $ & MrEd $S $] S S $ &  & MrEd%S ?S 0 & MrEd%U U &MrEdH a --a H - & MrEd%j & MrEd%&{- & MrEd $ & MrEd $ & &MrEd& - & MrEd $%% & MrEd $%% &  & MrEd%@" & MrEd%&MrEd---- & MrEd$) & MrEd%u  & MrEd%r   & MrEd$  & MrEd%I & MrEd%Iz & MrEd%z x"System---''~ u_v+P WPvPP :*vL H Z&MrEdMicrosoft DrawZ&MrEdjI  Courier New)_  &MrEd(  (    &MrEd)0} }--}} 0)&MrEdZ -- Z&MrEdZnnZ&MrEduZZu.1Courier New+- 2 < OK >&MrEdx|--|x&MrEd2--22 Configuration Algorithm2 0Card Configuration2 ( ) Reject this Card2 -( ) Do Not Configure, or use Custom Code only2 @( ) Standard Configuration2 $( ) Specify Configuration Parameters2 0[x] Custom Configuration Code2 [ ] Custom Removal Code2 P2 2 p#2 -- & MrEd$eveTe & MrEd%e f & MrEd$6;yLc;y*6; & MrEd%`;J; & MrEd$6ycy6 & MrEd%`J & MrEd%II; & MrEd%I  & MrEd$[DlZ[DJ[ & MrEd%W[ [ & MrEd% [  & MrEd$DZD & MrEd%W  & MrEd$""3" & MrEd%# #&MrEd$ :: $ 2  2 ~< Help >"System---''GlIXOTimesoySchlbkGlI:r:.@#!  $Z&MrEdMicrosoft DrawZ&MrEd+-?g Courier New)_  &MrEd _   A   &MrEd&W--W&&MrEdz--z&MrEdz88z&MrEd ze e z .1Courier New- 2 < OK > 2  2  < Help >2 ` Specify Configuration Parameters2 PP] Sepcify Default CONFIG2 P"[X] Specify Default CFTABLE_ENTRY2 pP#[X] Specify Required CFTABLE_ENTRY2 P[ ] Specify Override CONFIG2 P#[X] Specify Override CFTABLE_ENTRY-- & MrEd$ & MrEd${ j {  {  & MrEd%{ {  & MrEd%2 P2 2 p2 2 "System---''?r?s ?rb?pW::#9E`w  iZ&MrEdMicrosoft DrawZ&MrEdjpU Courier Newu&MrEdD4j  4D &  &MrEdL<b --b <L&MrEdt--t&MrEdzz&MrEdtt.1Courier New-2 < OK > < Help >&MrEdB --B &MrEd.--.&MrEd :--: &MrEd4--42 Vxxxxxxxx CONFIG Tuple2 0Configuration Base 2 P ( ) Unspec 2  ( ) Specify2 $Configuration Base Address 000000002 0 Presence Mask 2 0 ( ) Unspec 2  ( ) Specify2 Configuration Register Mask 0&MrEd0 --0 &MrEd #)--)# "System---''*.clb 2  < OK > 2  Z:J>$DQ# Z&MrEdMicrosoft DrawZ&MrEd;& Courier New7<f&MrEd: ZX  : N   &MrEd -- &MrEdX ,--, X&MrEdh--h&MrEd2--2&MrEdB< -- < B&MrEdHx--xH&MrEd B --  B &MrEd  x--x  &MrEd -- &MrEd^--^&MrEdBR(--(RB&MrEdD--D&MrEd_ FF _&MrEd A PPA  .1Courier Newl+-2 Configuration Index: FF2 ` xxxxxxxxxx CFTABLE_ENTRY tuple2  Power Requirements2 Vcc: ( ) Unspec2  ( ) 3.5V 2 @( ) 5V 2 `  I/O Windows2  0: ( ) Unspec 2 P ( ) 8-bit 2 P ( ) 16-bit 2 PRange: 02  Memory Windows2  0: ( ) Unspec2 ` ( ) Common Memory2 P( ) Attribute Memory 2 PStart Seg: 0 00 Length (K): 02 Card Offset (4K): 0&MrEd`--`&MrEd  &MrEd&MrEdLL&MrEd,   , &MrEdDD&MrEdU D  DU &MrEd&&&MrEd&&&MrEd3 W &&W 3 2 @,< OK > < Help >2 p Miscellaneous2  Vpp: ( ) Unspec 2  ( ) Unspec 2 ( ) 3.5V 2  ( ) Specify 2 @( ) 5V2 @p[ ] Audio is supported 2 ( ) 12V2 p[ ] Power Down is supported2 ` IRQ Definition2  1: ( ) Unspec 2  ( ) Unspec 2 p ( ) 8-bit2  ( ) Specific IRQ 2 p ( ) 16-bit 2  ( ) IRQ Mask 2 - 0 2 pRange: 0 2 - 02  IRQ Level/Mask: 02   1: ( ) Unspec2 `( ) Common Memory2 ( ) Attribute Memory2 Start Seg: 0 00 Length (K): 0&MrEd  %%  2 Card Offset (4K): 0"System---''00` 4&O( $:.VOu Z&MrEdMicrosoft DrawZ&MrEd>B Courier New)_  &MrEd      &MrEd ,--0$.1Courier New- 2 ` Open File  2  SS365SL.EXE  2 < OK > 2 CS.EXE 2  CSALLOC.EXE 2 @ ATADRV.EXE 2  ATAINIT.EXE 2  CARDID.EXE 2 ` CARDINFO.EXE&MrEd -- & MrEd%D & MrEd% & MrEd%G & MrEd%FF&4X- & MrEd $F<FF & MrEd $FPFF & &MrEd<U55U<&6mZ & MrEd $H>uHuH & MrEd $HRuHuH &  & MrEd%HHV & MrEd%EE & MrEd%GG&MrEd@4Q]--aU0< 2  2 < Help > 2  CS_APM.EXE 2  MTDDRV.EXE 2 t MTSRAM.EXE 2  MEMCARD.EXE 2 4MTI1.EXE 2 MTAA.EXE"System---''6QfMSu6QvVH2  22  15 2   2 @P FFh 2  2E7Ch 2  < Help > 2 P YES2  1h 2 ` < Edit >2 ` 2h 2 P CEh 2  < Dump >2  Fh 2  6"System---''MkUaUP:)v   ^Z&MrEdMicrosoft DrawZ&MrEd' Courier New)_  &MrEd"a j " Hi   .1Courier NewV-2 Edit Parameter2 t%Card-Status-Change Interrupt IRQ Mask2 4hDefault DEB82 h Minimum 0h2 Th Maximum FFFFh 2 D< Help >&MrEd`Y =--=Y `- & MrEd$F!2!F! & MrEd%!H! & MrEd%H*H! & MrEd%JJo & MrEd%J H  & MrEd%H Hb & MrEd%J & MrEd%Mll 2 D 2 :D< OK >"System---''4z:J;/A!  Z&MrEdMicrosoft DrawZ&MrEdl Times New RomanC&MrEd$    r   .Times New Romanw-2 <16-Bit Protected Mode2 32-Bit Protected Mode2 8Virtual 86 Mode&@ 2 gYour Windows Application&MrEdH --  D  & &H 2 R SSCOMM.DRV&MrEd@ D & &( h H 2  SSWINCS.DLL&MrEd0 ` @ Dd , & &g 2  Card Services&MrEd _  c  & &F 2 P SSVCD.386&MrEd> B & & 8 2 Socket Services&MrEd 0 4  & & g 2  The Hardware&MrEd _  c   & &( 6 F 2  SSVRDD.386&MrEd0 . > B2 , & & 8 2  CARDID.EXE&MrEd 0 4  & - & MrEd% P & MrEd%P P & MrEd%0 P  & MrEd%  @ & MrEd%0 &MrEdT-T&MrEd!-!- & MrEd% \ > & MrEd% \` \-- & MrEd$  A  w  & MrEd$3PCnPy3 & MrEd$c0fc & MrEd$cc & MrEd$c /  e c & MrEd$-  & MrEd$ & MrEd$  r  &MrEdX -- X- & MrEd%0 & MrEd%0 & MrEd% & MrEd% & MrEd%0  & MrEd%0  & MrEd%L & MrEd%LL & MrEd%L & MrEd%PFP & MrEd%P  & MrEd%  -- & MrEd$IIfI & MrEd$     & MrEd$ S  S p S & MrEd$yyy & MrEd$- & MrEd% >  & MrEd%  - & MrEd$e  A  we  & MrEd$     - & MrEd% - & MrEd$    Z - & MrEd% D:- & MrEd$B|\|\KB & MrEd$ BB a} a}  B & MrEd$ yc \ > \ y"System--''vvx`&tMSDraw @C (Z&MrEdMicrosoft DrawZ&MrEdTT Courier New)_  &MrEd8t  ^@  .1Courier New-2 `P#CardSoft (TM) Configuration Utility&MrEdl/--/l 2 T!File Edit Utility Display 2 Help&MrEd0l--l0  2 P Current File 2 P@ Card Library & MrEd%XXi & MrEd%KK&4b- & MrEd $K<KK & MrEd $KZKK & &MrEd=[[= & MrEd%WW & MrEd%KK&MrEd=[--[=- & MrEd% hYi & MrEd%  h & MrEd% {>{ & MrEd%~ & MrEd% Y & MrEd%;&4b- & MrEd $K<KK & MrEd $KZKK &  & MrEd%?{? & MrEd%;; & MrEd%j & MrEd%& & MrEd $ & MrEd $  & &MrEd   & MrEd% & MrEd%&MrEd -- - & MrEd%hj & MrEd%h & MrEd%&- & MrEd $ & MrEd $  & "System---''=ul^&&v+P W+]v3FV& METAFILEPICT@C @CNN (Z&MrEdMicrosoft DrawZ&MrEdTT Courier New)_  &MrEd8t  ^@  .1Courier New-2 `P#CardSoft (TM) Configuration Utility&MrEdl/--/l 2 T!File Edit Utility Display 2 Help&MrEd0l--l0  2 P Current File 2 P@ Card Library & MrEd%XXi & MrEd%KK&4b- & MrEd $K<KK & MrEd $KZKK & &MrEd=[[= & MrEd%WW & MrEd%KK&MrEd=[--[=- & MrEd% hYi & MrEd%  h & MrEd% {>{ & MrEd%~ & MrEd% Y & MrEd%;&4b- & MrEd $K<KK & MrEd $KZKK &  & MrEd%?{? & MrEd%;; & MrEd%j & MrEd%& & MrEd $ & MrEd $  & &MrEd   & MrEd% & MrEd%&MrEd -- - & MrEd%hj & MrEd%h & MrEd%&- & MrEd $ & MrEd $  & "System---''=ul^&&v+P W+]v4MSDraw;C  Z&MrEdMicrosoft DrawZ&MrEd~~ Courier New)_  &MrEd7$  ?  .1Courier New-2 `P#CardSoft (TM) Configuration Utility&MrEdl----l 2 TFile Utility Display 2 .Help&MrEd/--/"System--''HHHHHXH? METAFILEPICT;Ch;C ^F Z&MrEdMicrosoft DrawZ&MrEd~~ Courier New)_  &MrEd7$  ?  .1Courier New-2 `P#CardSoft (TM) Configuration Utility&MrEdl----l 2 TFile Utility Display 2 .Help&MrEd/--/"System--''4MSDraw 3 'Z&MrEdMicrosoft DrawZ&MrEd-q  Courier Newhlbku&MrEdj(# , (j    &MrEdr0 $--$ 0r.1Courier New-2 Open CardID Library File 2 *.clb 2  < OK > 2  C:\CARDSOFT 2 @ File List:2 @Drives / Dirs: 2  CARDID.CLB2 .. 2 0 CARDS.CLB 2 0[-A-] 2 [-B-] 2 [-C-] 2 P[-D-] 2 [-E-] 2 [-F-] 2 t  & MrEd%jj & MrEd%j@ & MrEd%@@ & MrEd%@S @ & MrEd%@j & MrEd%jR j&MrEd%--%- & MrEd%R kR  & MrEd%R R &@ d - & MrEd $R H R R  & MrEd $R \ R R  & &MrEdH a a H &A e , & MrEd $S $I S S $ & MrEd $S $] S S $ &  & MrEd%S ?S 0 & MrEd%U U &MrEdH a --a H - & MrEd%j & MrEd%&{- & MrEd $ & MrEd $ & &MrEd& - & MrEd $%% & MrEd $%% &  & MrEd%@" & MrEd%&MrEd---- & MrEd$rr 2  CARDS_1.CLB 2  CARDS_2.CLB & MrEd%p  & MrEd$) & MrEd%u  & MrEd%r   & MrEd$  & MrEd%I & MrEd%Iz & MrEd%z x & MrEd%p  `"System---'']O^OWOXOYO METAFILEPICT3yh 3F 'Z&MrEdMicrosoft DrawZ&MrEd-q  Courier Newhlbku&MrEdj(# , (j    &MrEdr0 $--$ 0r.1Courier New-2 Open CardID Library File 2 *.clb 2  < OK > 2  C:\CARDSOFT 2 @ File List:2 @Drives / Dirs: 2  CARDID.CLB2 .. 2 0 CARDS.CLB 2 0[-A-] 2 [-B-] 2 [-C-] 2 P[-D-] 2 [-E-] 2 [-F-] 2 t  & MrEd%jj & MrEd%j@ & MrEd%@@ & MrEd%@S @ & MrEd%@j & MrEd%jR j&MrEd%--%- & MrEd%R kR  & MrEd%R R &@ d - & MrEd $R H R R  & MrEd $R \ R R  & &MrEdH a a H &A e , & MrEd $S $I S S $ & MrEd $S $] S S $ &  & MrEd%S ?S 0 & MrEd%U U &MrEdH a --a H - & MrEd%j & MrEd%&{- & MrEd $ & MrEd $ & &MrEd& - & MrEd $%% & MrEd $%% &  & MrEd%@" & MrEd%&MrEd---- & MrEd$rr 2  CARDS_1.CLB 2  CARDS_2.CLB & MrEd%p  & MrEd$) & MrEd%u  & MrEd%r   & MrEd$  & MrEd%I & MrEd%Iz & MrEd%z x & MrEd%p  `"System---''MSDraw` `+% Z&MrEdMicrosoft DrawZ&MrEd  Courier New)_  &MrEd4  4    &MrEdN< -- <N&MrEd,i--i,&MrEdll&MrEd.1Courier New2f-2 Card Recognition2 #Record ID: D-Link Ethernet Lan Card 2 < OK >&MrEd-- 2  ( ) Modem2 p( ) 3270 Emulator 2 2Card Type Name:&MrEdtp--pt 2  Card Type&MrEd-- & MrEd$dyzd & MrEd$d zd+&MrEdB-B2 2 02 !( ) CIS Manufacturer/Product Data2 ( ) CIS Literal Bytes2 $( ) Generic Recognition by Card Type2 ( ) Custom Code&MrEd$n~--~n$2 `Recognition Algorithm- & MrEd%u  & MrEd%   & MrEd%u - & MrEd$Z1 I Z1 kZ & MrEd$ a K a ! &MrEd +--+ - & MrEd%N   & MrEd% [ ^- & MrEd$` OO`9qO`  & MrEd%`a:&MrEdC--C&MrEd-- 2  ( ) Ethernet 2  ( ) ATA Disk2 p( ) Token Ring 2 p ( ) Other 2   2 `< Help >"System---''+ :j:k/|/x/ METAFILEPICT`+H `+%fF Z&MrEdMicrosoft DrawZ&MrEd  Courier New)_  &MrEd4  4    &MrEdN< -- <N&MrEd,i--i,&MrEdll&MrEd.1Courier New2f-2 Card Recognition2 #Record ID: D-Link Ethernet Lan Card 2 < OK >&MrEd-- 2  ( ) Modem2 p( ) 3270 Emulator 2 2Card Type Name:&MrEdtp--pt 2  Card Type&MrEd-- & MrEd$dyzd & MrEd$d zd+&MrEdB-B2 2 02 !( ) CIS Manufacturer/Product Data2 ( ) CIS Literal Bytes2 $( ) Generic Recognition by Card Type2 ( ) Custom Code&MrEd$n~--~n$2 `Recognition Algorithm- & MrEd%u  & MrEd%   & MrEd%u - & MrEd$Z1 I Z1 kZ & MrEd$ a K a ! &MrEd +--+ - & MrEd%N   & MrEd% [ ^- & MrEd$` OO`9qO`  & MrEd%`a:&MrEdC--C&MrEd-- 2  ( ) Ethernet 2  ( ) ATA Disk2 p( ) Token Ring 2 p ( ) Other 2   2 `< Help >"System---''+  MSDraw@/ Z&MrEdMicrosoft DrawZ&MrEdiijS  Courier NewP&MrEd        &MrEd ~--~ &MrEd3Z--V/&MrEdTX\P&MrEdZV.1Courier New 0-2 $< OK > < Help >2 `Level 1 Version Tuple Fields2 Manufacturer: Intel2 Product: Ethernet Lan Card2 @Add'l Info 1: iNC3002  Add'l Info 2:&MrEdhm %--)q d&MrEdtn r p&MrEdn =Ar &MrEdlq u h"System---''FL" METAFILEPICT/(/  Z&MrEdMicrosoft DrawZ&MrEdiijS  Courier NewP&MrEd        &MrEd ~--~ &MrEd3Z--V/&MrEdTX\P&MrEdZV.1Courier New 0-2 $< OK > < Help >2 `Level 1 Version Tuple Fields2 Manufacturer: Intel2 Product: Ethernet Lan Card2 @Add'l Info 1: iNC3002  Add'l Info 2:&MrEdhm %--)q d&MrEdtn r p&MrEdn =Ar &MrEdlq u h"System---''tMSDraw 3 Z&MrEdMicrosoft DrawZ&MrEd-q  Courier Newhlbku&MrEdj(# , (j    &MrEdr0 $--$ 0r.1Courier New-2 0Custom Recognition Code File 2 *.bin 2  < OK > 2  C:\CARDSOFT 2 @ File List:2 @Drives / Dirs:2 .. 2 0[-A-] 2 [-B-] 2 [-C-] 2 P[-D-] 2 [-E-] 2 [-F-] 2 t  & MrEd%jj & MrEd%j@ & MrEd%@@ & MrEd%@S @ & MrEd%@j & MrEd%jR j&MrEd%--%- & MrEd%R kR  & MrEd%R R &@ d - & MrEd $R H R R  & MrEd $R \ R R  & &MrEdH a a H &A e , & MrEd $S $I S S $ & MrEd $S $] S S $ &  & MrEd%S ?S 0 & MrEd%U U &MrEdH a --a H - & MrEd%j & MrEd%&{- & MrEd $ & MrEd $ & &MrEd& - & MrEd $%% & MrEd $%% &  & MrEd%@" & MrEd%&MrEd---- & MrEd$) & MrEd%u  & MrEd%r   & MrEd$  & MrEd%I & MrEd%Iz & MrEd%z x"System---''~ u_v+P WPvPP% METAFILEPICT3y 3E Z&MrEdMicrosoft DrawZ&MrEd-q  Courier Newhlbku&MrEdj(# , (j    &MrEdr0 $--$ 0r.1Courier New-2 0Custom Recognition Code File 2 *.bin 2  < OK > 2  C:\CARDSOFT 2 @ File List:2 @Drives / Dirs:2 .. 2 0[-A-] 2 [-B-] 2 [-C-] 2 P[-D-] 2 [-E-] 2 [-F-] 2 t  & MrEd%jj & MrEd%j@ & MrEd%@@ & MrEd%@S @ & MrEd%@j & MrEd%jR j&MrEd%--%- & MrEd%R kR  & MrEd%R R &@ d - & MrEd $R H R R  & MrEd $R \ R R  & &MrEdH a a H &A e , & MrEd $S $I S S $ & MrEd $S $] S S $ &  & MrEd%S ?S 0 & MrEd%U U &MrEdH a --a H - & MrEd%j & MrEd%&{- & MrEd $ & MrEd $ & &MrEd& - & MrEd $%% & MrEd $%% &  & MrEd%@" & MrEd%&MrEd---- & MrEd$) & MrEd%u  & MrEd%r   & MrEd$  & MrEd%I & MrEd%Iz & MrEd%z x"System---''~ u_v+P WPvPP4MSDraw * Z&MrEdMicrosoft DrawZ&MrEdjI  Courier New)_  &MrEd(  (    &MrEd)0} }--}} 0)&MrEdZ -- Z&MrEdZnnZ&MrEduZZu.1Courier New+- 2 < OK >&MrEdx|--|x&MrEd2--22 Configuration Algorithm2 0Card Configuration2 ( ) Reject this Card2 -( ) Do Not Configure, or use Custom Code only2 @( ) Standard Configuration2 $( ) Specify Configuration Parameters2 0[x] Custom Configuration Code2 [ ] Custom Removal Code2 P2 2 p#2 -- & MrEd$eveTe & MrEd%e f & MrEd$6;yLc;y*6; & MrEd%`;J; & MrEd$6ycy6 & MrEd%`J & MrEd%II; & MrEd%I  & MrEd$[DlZ[DJ[ & MrEd%W[ [ & MrEd% [  & MrEd$DZD & MrEd%W  & MrEd$""3" & MrEd%# #&MrEd$ :: $ 2  2 ~< Help >"System---''GlIXOTimesoySchlbkGlIMrEdZ  METAFILEPICT*Ih *vL Z&MrEdMicrosoft DrawZ&MrEdjI  Courier New)_  &MrEd(  (    &MrEd)0} }--}} 0)&MrEdZ -- Z&MrEdZnnZ&MrEduZZu.1Courier New+- 2 < OK >&MrEdx|--|x&MrEd2--22 Configuration Algorithm2 0Card Configuration2 ( ) Reject this Card2 -( ) Do Not Configure, or use Custom Code only2 @( ) Standard Configuration2 $( ) Specify Configuration Parameters2 0[x] Custom Configuration Code2 [ ] Custom Removal Code2 P2 2 p#2 -- & MrEd$eveTe & MrEd%e f & MrEd$6;yLc;y*6; & MrEd%`;J; & MrEd$6ycy6 & MrEd%`J & MrEd%II; & MrEd%I  & MrEd$[DlZ[DJ[ & MrEd%W[ [ & MrEd% [  & MrEd$DZD & MrEd%W  & MrEd$""3" & MrEd%# #&MrEd$ :: $ 2  2 ~< Help >"System---''GlIXOTimesoySchlbkGlI4 MSDrawr: $Z&MrEdMicrosoft DrawZ&MrEd+-?g Courier New)_  &MrEd _   A   &MrEd&W--W&&MrEdz--z&MrEdz88z&MrEd ze e z .1Courier New- 2 < OK > 2  2  < Help >2 ` Specify Configuration Parameters2 PP] Sepcify Default CONFIG2 P"[X] Specify Default CFTABLE_ENTRY2 pP#[X] Specify Required CFTABLE_ENTRY2 P[ ] Specify Override CONFIG2 P#[X] Specify Override CFTABLE_ENTRY-- & MrEd$ & MrEd${ j {  {  & MrEd%{ {  & MrEd%2 P2 2 p2 2 "System---''?r?s ?rb?p METAFILEPICTr: hr:.@ $Z&MrEdMicrosoft DrawZ&MrEd+-?g Courier New)_  &MrEd _   A   &MrEd&W--W&&MrEdz--z&MrEdz88z&MrEd ze e z .1Courier New- 2 < OK > 2  2  < Help >2 ` Specify Configuration Parameters2 PP] Sepcify Default CONFIG2 P"[X] Specify Default CFTABLE_ENTRY2 pP#[X] Specify Required CFTABLE_ENTRY2 P[ ] Specify Override CONFIG2 P#[X] Specify Override CFTABLE_ENTRY-- & MrEd$ & MrEd${ j {  {  & MrEd%{ {  & MrEd%2 P2 2 p2 2 "System---''?r?s ?rb?ptMSDraw #9 iZ&MrEdMicrosoft DrawZ&MrEdjpU Courier Newu&MrEdD4j  4D &  &MrEdL<b --b <L&MrEdt--t&MrEdzz&MrEdtt.1Courier New-2 < OK > < Help >&MrEdB --B &MrEd.--.&MrEd :--: &MrEd4--42 Vxxxxxxxx CONFIG Tuple2 0Configuration Base 2 P ( ) Unspec 2  ( ) Specify2 $Configuration Base Address 000000002 0 Presence Mask 2 0 ( ) Unspec 2  ( ) Specify2 Configuration Register Mask 0&MrEd0 --0 &MrEd #)--)# "System---''*.clb 2  < OK > 2   METAFILEPICT##9E iZ&MrEdMicrosoft DrawZ&MrEdjpU Courier Newu&MrEdD4j  4D &  &MrEdL<b --b <L&MrEdt--t&MrEdzz&MrEdtt.1Courier New-2 < OK > < Help >&MrEdB --B &MrEd.--.&MrEd :--: &MrEd4--42 Vxxxxxxxx CONFIG Tuple2 0Configuration Base 2 P ( ) Unspec 2  ( ) Specify2 $Configuration Base Address 000000002 0 Presence Mask 2 0 ( ) Unspec 2  ( ) Specify2 Configuration Register Mask 0&MrEd0 --0 &MrEd #)--)# "System---''*.clb 2  < OK > 2  MSDraw@J>$ Z&MrEdMicrosoft DrawZ&MrEd;& Courier New7<f&MrEd: ZX  : N   &MrEd -- &MrEdX ,--, X&MrEdh--h&MrEd2--2&MrEdB< -- < B&MrEdHx--xH&MrEd B --  B &MrEd  x--x  &MrEd -- &MrEd^--^&MrEdBR(--(RB&MrEdD--D&MrEd_ FF _&MrEd A PPA  .1Courier Newl+-2 Configuration Index: FF2 ` xxxxxxxxxx CFTABLE_ENTRY tuple2  Power Requirements2 Vcc: ( ) Unspec2  ( ) 3.5V 2 @( ) 5V 2 `  I/O Windows2  0: ( ) Unspec 2 P ( ) 8-bit 2 P ( ) 16-bit 2 PRange: 02  Memory Windows2  0: ( ) Unspec2 ` ( ) Common Memory2 P( ) Attribute Memory 2 PStart Seg: 0 00 Length (K): 02 Card Offset (4K): 0&MrEd`--`&MrEd  &MrEd&MrEdLL&MrEd,   , &MrEdDD&MrEdU D  DU &MrEd&&&MrEd&&&MrEd3 W &&W 3 2 @,< OK > < Help >2 p Miscellaneous2  Vpp: ( ) Unspec 2  ( ) Unspec 2 ( ) 3.5V 2  ( ) Specify 2 @( ) 5V2 @p[ ] Audio is supported 2 ( ) 12V2 p[ ] Power Down is supported2 ` IRQ Definition2  1: ( ) Unspec 2  ( ) Unspec 2 p ( ) 8-bit2  ( ) Specific IRQ 2 p ( ) 16-bit 2  ( ) IRQ Mask 2 - 0 2 pRange: 0 2 - 02  IRQ Level/Mask: 02   1: ( ) Unspec2 `( ) Common Memory2 ( ) Attribute Memory2 Start Seg: 0 00 Length (K): 0&MrEd  %%  2 Card Offset (4K): 0"System---''00` 4&O( $NPUTFTJSETM METAFILEPICTJ>a(J>$D Z&MrEdMicrosoft DrawZ&MrEd;& Courier New7<f&MrEd: ZX  : N   &MrEd -- &MrEdX ,--, X&MrEdh--h&MrEd2--2&MrEdB< -- < B&MrEdHx--xH&MrEd B --  B &MrEd  x--x  &MrEd -- &MrEd^--^&MrEdBR(--(RB&MrEdD--D&MrEd_ FF _&MrEd A PPA  .1Courier Newl+-2 Configuration Index: FF2 ` xxxxxxxxxx CFTABLE_ENTRY tuple2  Power Requirements2 Vcc: ( ) Unspec2  ( ) 3.5V 2 @( ) 5V 2 `  I/O Windows2  0: ( ) Unspec 2 P ( ) 8-bit 2 P ( ) 16-bit 2 PRange: 02  Memory Windows2  0: ( ) Unspec2 ` ( ) Common Memory2 P( ) Attribute Memory 2 PStart Seg: 0 00 Length (K): 02 Card Offset (4K): 0&MrEd`--`&MrEd  &MrEd&MrEdLL&MrEd,   , &MrEdDD&MrEdU D  DU &MrEd&&&MrEd&&&MrEd3 W &&W 3 2 @,< OK > < Help >2 p Miscellaneous2  Vpp: ( ) Unspec 2  ( ) Unspec 2 ( ) 3.5V 2  ( ) Specify 2 @( ) 5V2 @p[ ] Audio is supported 2 ( ) 12V2 p[ ] Power Down is supported2 ` IRQ Definition2  1: ( ) Unspec 2  ( ) Unspec 2 p ( ) 8-bit2  ( ) Specific IRQ 2 p ( ) 16-bit 2  ( ) IRQ Mask 2 - 0 2 pRange: 0 2 - 02  IRQ Level/Mask: 02   1: ( ) Unspec2 `( ) Common Memory2 ( ) Attribute Memory2 Start Seg: 0 00 Length (K): 0&MrEd  %%  2 Card Offset (4K): 0"System---''00` 4&O( $tMSDraw.V Z&MrEdMicrosoft DrawZ&MrEd>B Courier New)_  &MrEd      &MrEd ,--0$.1Courier New- 2 ` Open File  2  SS365SL.EXE  2 < OK > 2 CS.EXE 2  CSALLOC.EXE 2 @ ATADRV.EXE 2  ATAINIT.EXE 2  CARDID.EXE 2 ` CARDINFO.EXE&MrEd -- & MrEd%D & MrEd% & MrEd%G & MrEd%FF&4X- & MrEd $F<FF & MrEd $FPFF & &MrEd<U55U<&6mZ & MrEd $H>uHuH & MrEd $HRuHuH &  & MrEd%HHV & MrEd%EE & MrEd%GG&MrEd@4Q]--aU0< 2  2 < Help > 2  CS_APM.EXE 2  MTDDRV.EXE 2 t MTSRAM.EXE 2  MEMCARD.EXE 2 4MTI1.EXE 2 MTAA.EXE"System---''6QfMSu6QvVHB Courier New)_  &MrEd      &MrEd ,--0$.1Courier New- 2 ` Open File  2  SS365SL.EXE  2 < OK > 2 CS.EXE 2  CSALLOC.EXE 2 @ ATADRV.EXE 2  ATAINIT.EXE 2  CARDID.EXE 2 ` CARDINFO.EXE&MrEd -- & MrEd%D & MrEd% & MrEd%G & MrEd%FF&4X- & MrEd $F<FF & MrEd $FPFF & &MrEd<U55U<&6mZ & MrEd $H>uHuH & MrEd $HRuHuH &  & MrEd%HHV & MrEd%EE & MrEd%GG&MrEd@4Q]--aU0< 2  2 < Help > 2  CS_APM.EXE 2  MTDDRV.EXE 2 t MTSRAM.EXE 2  MEMCARD.EXE 2 4MTI1.EXE 2 MTAA.EXE"System---''6QfMSu6QvVH2  22  15 2   2 @P FFh 2  2E7Ch 2  < Help > 2 P YES2  1h 2 ` < Edit >2 ` 2h 2 P CEh 2  < Dump >2  Fh 2  6"System---''MkUaUP METAFILEPICT=h=JS Z&MrEdMicrosoft DrawZ&MrEdr(  Courier New)_  &MrEd      &MrEd 8--8  .1Courier New-2 Power-On Delay 2 `pCS Parameter List2 Event Processing Delay2 Card-Status-Change IRQ2 @!Card-Status-Change Interrupt Mask 2  /TONEFREQ2 (Block INT 1A Calls to Socket Services 2  /VERSIONTEST 2 ` /HEAPSIZE 2  /BEEPTYPES 2  /BEEPDELAY&MrEd  --  & MrEd%r( & MrEd%rr & MrEd%r(  & MrEd%* * & < - & MrEd $* * * & MrEd $* 4 * * & &MrEd !9 ;;9 ! & v=  & MrEd $+ ! ~+ ~+  & MrEd $+ 5 ~+ ~+  &  & MrEd%* * _ & MrEd%) ) & MrEd%) ) &MrEd$ :5 ^--b9 6  2  < OK >2  22  15 2   2 @P FFh 2  2E7Ch 2  < Help > 2 P YES2  1h 2 ` < Edit >2 ` 2h 2 P CEh 2  < Dump >2  Fh 2  6"System---''MkUaUP4 MSDraw) ^Z&MrEdMicrosoft DrawZ&MrEd' Courier New)_  &MrEd"a j " Hi   .1Courier NewV-2 Edit Parameter2 t%Card-Status-Change Interrupt IRQ Mask2 4hDefault DEB82 h Minimum 0h2 Th Maximum FFFFh 2 D< Help >&MrEd`Y =--=Y `- & MrEd$F!2!F! & MrEd%!H! & MrEd%H*H! & MrEd%JJo & MrEd%J H  & MrEd%H Hb & MrEd%J & MrEd%Mll 2 D 2 :D< OK >"System---''4 METAFILEPICT))v  ^Z&MrEdMicrosoft DrawZ&MrEd' Courier New)_  &MrEd"a j " Hi   .1Courier NewV-2 Edit Parameter2 t%Card-Status-Change Interrupt IRQ Mask2 4hDefault DEB82 h Minimum 0h2 Th Maximum FFFFh 2 D< Help >&MrEd`Y =--=Y `- & MrEd$F!2!F! & MrEd%!H! & MrEd%H*H! & MrEd%JJo & MrEd%J H  & MrEd%H Hb & MrEd%J & MrEd%Mll 2 D 2 :D< OK >"System---''4 MSDraw`J;/ Z&MrEdMicrosoft DrawZ&MrEdl Times New RomanC&MrEd$    r   .Times New Romanw-2 <16-Bit Protected Mode2 32-Bit Protected Mode2 8Virtual 86 Mode&@ 2 gYour Windows Application&MrEdH --  D  & &H 2 R SSCOMM.DRV&MrEd@ D & &( h H 2  SSWINCS.DLL&MrEd0 ` @ Dd , & &g 2  Card Services&MrEd _  c  & &F 2 P SSVCD.386&MrEd> B & & 8 2 Socket Services&MrEd 0 4  & & g 2  The Hardware&MrEd _  c   & &( 6 F 2  SSVRDD.386&MrEd0 . > B2 , & & 8 2  CARDID.EXE&MrEd 0 4  & - & MrEd% P & MrEd%P P & MrEd%0 P  & MrEd%  @ & MrEd%0 &MrEdT-T&MrEd!-!- & MrEd% \ > & MrEd% \` \-- & MrEd$  A  w  & MrEd$3PCnPy3 & MrEd$c0fc & MrEd$cc & MrEd$c /  e c & MrEd$-  & MrEd$ & MrEd$  r  &MrEdX -- X- & MrEd%0 & MrEd%0 & MrEd% & MrEd% & MrEd%0  & MrEd%0  & MrEd%L & MrEd%LL & MrEd%L & MrEd%PFP & MrEd%P  & MrEd%  -- & MrEd$IIfI & MrEd$     & MrEd$ S  S p S & MrEd$yyy & MrEd$- & MrEd% >  & MrEd%  - & MrEd$e  A  we  & MrEd$     - & MrEd% - & MrEd$    Z - & MrEd% D:- & MrEd$B|\|\KB & MrEd$ BB a} a}  B & MrEd$ yc \ > \ y"System--''vvx` METAFILEPICTJ;MHJ;/A Z&MrEdMicrosoft DrawZ&MrEdl Times New RomanC&MrEd$    r   .Times New Romanw-2 <16-Bit Protected Mode2 32-Bit Protected Mode2 8Virtual 86 Mode&@ 2 gYour Windows Application&MrEdH --  D  & &H 2 R SSCOMM.DRV&MrEd@ D & &( h H 2  SSWINCS.DLL&MrEd0 ` @ Dd , & &g 2  Card Services&MrEd _  c  & &F 2 P SSVCD.386&MrEd> B & & 8 2 Socket Services&MrEd 0 4  & & g 2  The Hardware&MrEd _  c   & &( 6 F 2  SSVRDD.386&MrEd0 . > B2 , & & 8 2  CARDID.EXE&MrEd 0 4  & - & MrEd% P & MrEd%P P & MrEd%0 P  & MrEd%  @ & MrEd%0 &MrEdT-T&MrEd!-!- & MrEd% \ > & MrEd% \` \-- & MrEd$  A  w  & MrEd$3PCnPy3 & MrEd$c0fc & MrEd$cc & MrEd$c /  e c & MrEd$-  & MrEd$ & MrEd$  r  &MrEdX -- X- & MrEd%0 & MrEd%0 & MrEd% & MrEd% & MrEd%0  & MrEd%0  & MrEd%L & MrEd%LL & MrEd%L & MrEd%PFP & MrEd%P  & MrEd%  -- & MrEd$IIfI & MrEd$     & MrEd$ S  S p S & MrEd$yyy & MrEd$- & MrEd% >  & MrEd%  - & MrEd$e  A  we  & MrEd$     - & MrEd% - & MrEd$    Z - & MrEd% D:- & MrEd$B|\|\KB & MrEd$ BB a} a}  B & MrEd$ yc \ > \ y"System--''vvx`!F! & MrEd%!H! & MrEd%H*H! & MrEd%JJo & MrEd%J H  & MrEd%H Hb & MrEd%J & MrEd%Mll 2 D 2 :D< OK >"System---''4CKLO/MJKYZelmovx'/d)!j#J$R$l$t$T%\%ſοʹγ    4     "    9 49D\%v%~%%%&&&&''='>'''''N(O(m(n())%)&)1)9)))))--..2/:/2222555555555772737Q7R77777+8,8J8K889@9K9`9a999::7:8:C:K:::::<<B<J<<<L=>>z???   ]???????W@\@]@^@d@@@@@@$A&A(A)AFAGAHAIAKALAiAjAkAlA%CCCpDtDDDDDDD&E'EEEFEEEEEFFGGWH]HHHHHH'I(I>I?IIIIIIIII@MAMWMXM$ F$h BDU  LXMiMjMMMQQ#Q$Q%Q&QTQVQoQqQRRSSddee e!e?e@efegeee? B0] (D Bdu = B@3 B5EFde{|ݏޏ%&78VWѐҐuwDFXYZpq ͕ !͗Ηϗz|w|œÜĜڜۜgyz{0] dKZVWmnv~ТѢҢӢբע STqrstݩ1Hƪ=ѲҲSZfnBJ$%;<j BZtX |a BIY F8:@JArtEF\] !#57oC]/     (!$J4N      G!M!""""}##L$$$o&&9'\'^'    Y^'_'w''''')2){**++*,E,,---.-0-9-;-O-S-----//T1Z12233557759:99<<==AAAADD8F>FFFFFGG|H~H&I(ISJUJlKnKMM\NN`OfOOO,P/P6PPPQ&QWQxQUU:W@W__    \_KcQcccccdddddd&f(fggiiijojjj*k1kkkl l@BDGIJedfwce79X )!j#l##j$l$$ƼƼƷ粭$$$$$K$v $$!$$$Z1$'$C$t%v%%%S&U&y&&&''((L(N()))***,, - ..@.R////0022x2z222"3G3I3D444M55555566쿺ݵݰݫݦ$ $$$$$$$$$$$$$$ $$$$$K$$5607277+88899^9`9:;;;;<<L=h=Y>[>~>x?z?&A(AKAnA CC%CDD&EEEE!FGGHGI8JyJJJ(KK1LοĦ񛦡$$$$$5x$$R$$$ $$$$$$K$$v$$$$$ $$11LLMMMNNXPZPwPQQ(QTQVQoQqQQQQQQRRSwSUUUVVEWGWjW/Y1YPY[[[]]]T^V^^_```aaabbb8d:d_dýýɽɰ竦ݒ$K$$$$ l$! ! [! V $$$$$ $$$9_ddd efeeeafcf:g ] _   C +-Q/BVX L88xzĿ8 4$$$$$$x$K$/$$$$$$ $9#.04QSWoqu'P24No  ܮܮܮܮ{vvql$ $$$$ $$$$K$K$$l4@ P l4@ P 8 4l4@ P ( A!C!}"""""""{#}#N$f$y$$$$$$$$$$$$$%% %%%+%ƯiRRRl l  I l   l  I  $$$$$K$$v $$x +%8%:%E%S%U%c%p%r%}%%%%%%%%%%%%%&&&&!&5&=&?&J&R&T&e&m&o&&&&&&&&&&&&& '''/'7'9''''㝗 I  l   l I l  8'''''''''''(((1(>(@(N([(](i(w(y((((((((((((( ))).)0)2)B)O)Q)^)m)o))))))))))))) ***/*<*>*l  I l   l @>*L*Z*\*k*y*{**************+ ++#+%+6+@+B+R+k+m+~+++++++++, , , ,(,*,A,C,E,T,\,^,q,y,{,,,,,,,,,,,,----0-9-;-G-ѺѺѺѺl   l  I IG-O-Q-S-m-----"/$/4////////////////0|uoiF|uo"l3rb $ $"l3rb $  $   $$$v$ $$l  0)0+0/020;000002222222222223333>3ý׸gD"l3rb $ "l3rb $  $   $ $$R$$$"l3rb $ $>3@3B3i3q3x333333333333333334444.4D4F4J4M4]4}444ſ|Y|ݏ|ݏ|ݏ|ݏ"l3rb $ $"l3rb $  $   $ $"l3rb $ "4444444444444 5 555%5A5C5E5i5q5x5555555555ʷuR"l3rb $ "l3rb $  $   $ $"l3rb $ $ 555555556666.6D6F6J6M6]6666666666666666 7 777$7@7B7^7f7m7z7777777ʾ"l3rb $  $   $"l3rb $ $177777778888.8L8r8888888959999 :}<<$=&=r=t======ààϚÔ{vohb\ $   $$ $$$$$"l3rb $ $"l3rb $ $=========>.>0>4>7>D>v>>>>>> ????%??????W@Y@[@eAgAAà}}w}w}q}lglb$$$$"l3rb $ "l3rb $ $"l3rb $ $AAAAAAAAAAAAAABB5BSBdBfBhBjDlDEE-G/Gᾷ^YTYOYJY$x$$/ $"l3rb $ "l3rb $ "l3rb $     $/GGGGGGGGGGGGGGHHH:HHYHaHhHuH|H~HHHHHHHH״wT״w"l3rb $ "l3rb $ "l3rb $     $ $$ HHHHHI III&I(I,I/I;I@IBIFIIIqIIIIII0J8J?JLJSJUJYJ|Y|SN$"l3rb $ "l3rb $     $ $"l3rb $ YJ\JhJmJoJsJvJJJJJ+KIKQKXKeKlKnKrKuKKK횕}wqNHBp"l3rb H$  p   $ $"l3rb $ "l3rb $ KKKKKKKKKKK6L8LhAhGhhhhhh@iBiDimiui|iiiiiiiiòpjd"l3rb $     $"l3rb $ !iiiiiiiiii j"j$jjjj(k*k3k\kkkkll l:lzž{tng`.lKF $   Q    $#$$$x$$$$$">zAzdzfzizyz|zzzzzzzzzzzzzzz{{/{1{4{E{I{L{O{o{q{w{{{{{{Ľzzzz.lKF $ .lKF $ Q%{{{{{{{ | ||&|)|,|/|1|3|5|b|d|||||||ĽĽzupkpkd^G@l 3$$$x.lKF $ Q.lKF $ |||}:}<}?}r}t}v}}}~~6~8~@~j~~~~)-6G?Awy <DK|wqjd  $#$$$x$$$$$ $$l l l 3'KQW^kmpy|Á嶯_.lKF $ Q.lKF $   Q   "$'8;>Afhk|ÂƂɂ"$ĽĽĽzĽupkpkd^3$$$x.lKF $ Q.lKF $ $*,/EGJgikm~„/|݅OQˆ͆+ܮܗ}xxxxxx}xxr$ $$$ $$l l l 3l ,+-/և؇ #%(149<_adtwz}ș~wqB~w.lKF <H(#  p4.lKF <H(#    p 4   $$$}ֈ؈ڈ"LdɊ0ދ(*`bd  )1ľ˝~yyyyyy~yysl $$$$$ $$$  p4.lKF <H(#  )18>DKXZ]finqԍ߰YS .lKF <H(#  p4.lKF <H(#    p 4  ԍ֍ڍ  !8:< MOprz !jnwܐސ68XZ1ĽĽѣz$#$$ $$ $$$  p4.lKF <H(# .19@FLS`benqvyגةR.lKF x(#  QS.lKF x(#    Q S   גْݒ  !135}̓Γ#;Z\֕ؕ68ҖԖĽĽѤ{{{v{$$$ $$$ $ $$ QS.lKF x(# ,Ԗ !$-058[]`psvy֧P.lK gd$ T&>V.lK gd$  T &   > V$—їԗחڗ  7RezĽzĽKĽK.lK gd$ .lK gd$ T&>V.lK gd$ 247ILOR{}ÙřəљԙיڙACGMPSVÚǚٚܚߚ:<ةةޣةةޣةة $T.lK gd$ T&>V;<Sgz|ԛ֛ۛ /14I^`c{ƜȜʜ؜=?Gq֝79BS«««««”񅀀񅀀$$ $l4pd l4pd  dl4pd  d $$$2#%KM")68;DGLOrtw̝{uF.lKF x$  QS.lKF x$    Q S   $ $$ ŠȠ͠ϠҠ۠ޠ -/1ĽzKKF $.lKF x$ .lKF x$ S.lKF x$  Q1[]<>AikpâƢ acУ1z~餙$$ $$ l4p l4p l4p  d $$4FHhjȥʥ)+GOV\bivx{ș~wqB.lKF x$ 8 S.lKF x$  8   S   $ $$ǦʦͦЦ /14<?BEUWZjmruةzKK.lKF x$ .lKF x$ .lKF x$ 8 Sէק٧ɨШ֨ܨ߰yJC==.lKF\ ,V4$     S  =  $$$.lKF x$ 8 S$'*-ACFSVY\qsw嶯zK.lKF\ ,V4$ .lKF\ ,V4$ =.lKF\ ,V4$  S©ũȩܩީ!RѪӪ13DQSVĽĽѤ{tnWPl ?  c  $$$$ $ $:$ S=.lKF\ ,V4$ Vjlq«-6R{Ѭ2N`ṱ$5U^r{.0:asׯ6asſ$ $$$$$$xl ? l ? c =װ)P۱ 2CawͲϲѲ!6BDbkӳ #%/<KXfyմ35öܶ;=57  ҾԾRT$$ $$9$&-$3$$ $ $$$$DTs)jlDFj68|~;=}!dq5yH /1SUS/GI= $$$$ $ $$$KS=f"_t|~NPq)QSJL[.0OQ7z PQSf|~EH!   $$  $$$K$$ $ $J!#(46;HJO[]blns$hj|ܭ~xaZnl_ #  M n $$K$$$ $ll d ll d  ll d MOTlns ginxzIֹ ` $ $$$l_ # MMnl_ # M:  !#%/DFNT^`cf{}¥¥kd^l8    $ ` $$l'P 0 8 `l'P 0  8   $&)UWZz|  %vohb8 `l'P 0  8   `$ $ $$$l8 l8 #%')35JLTZgilo"ACGJrtx{̯hhhhhhl'P  l'P  R`l'P   R ` $$l'P 0 (?AS`bkSUW|ooooje$Kl  l   l      $$`l'P  R%|QSoKWY~$`#Iq}-9;} GN)m']_i=&$$K$  $ $$W&;=EKUWZ]tvxükeHel'P  l'P    $$l'P 0 8 `l'P 0  8   ` $ "$')*6_24  []blnt~Ƽ˲˨ˣpic$dl4pl $d4$4$h4$ $$ $$K$ $ $$`l'P  ~  (*,.0346[]_aHJrtvk $ H $ Hz $ H $f!'!y&* !(* &$ $$$l4pl $dl4pl *  HJrt79XZ468:$$ $ Hz$f $ H  !E Numbered List Bulleted Listsubtitle TableText TableHeadingNoteColumn List 3/4 TableHeadChapterDoc Revcode head3Contin'd head4Contin'd head5Contin'dInput Table TextDistitl1Distitl2Distitl3 Step/indent DashedListswitch Vidparams backcoverTOCdoctitledoctypelogo tabletitle NormalBoldhalflinecallout SystemSoft doctitle2titlebaraddress addressbox revnumberTOCtitle TOCchapter Dashed List Column List 1 Column List 2Column List 1.5Column List 2.5 Indented ListIndented List 2 Dash Indent Bullet Indent Number IndentB F F$ F  B    0(4  4(B p$ $ $ $ &*$(*$ ` hx x  ` `x` `  h h x h<h< h 8x0 `h8 /L [+ k; <& !x&'()&'()  !&( ()( - / / 01 34 ` 5 6  7p 9 :0 ;0 < =0_ 4 (!&()-./01345464759:9;3<=444#hr:Fb|4N4 '(!-1444?HQ_h{o zy?X#DG ch%+5?IP]glrt?|~zK߬RD5k    AG#L$-  #  % $! !  '  )   '   ( "     @     $  8 -"$   )O_>l>~$M\%?XMp^'_zFJ$61L_dvp}{A+  +%'>*G-0>3457=A/GHYJKMN(SW_/fgim!ritv>z{|K+}1ԍ1גԖ<1VT=!%|&~:      !"#$%&'Times Symbol "Helvetica "AvantGardeMonotype Sorts Tms Rmn&ArialTimes New RomanRZapfDingbats Wingdings 1PC Line 1CourierNewCenturySchlbk5Courier New)0%&=+%J%%%&6&&&''44C45526Q6667788??????ZCyCCCD7DdG{GGGHHUHlHKKKLOOOlQQecccccdeeekkknnnpppE}c}e}-p/Fyō>]֎2Q "ْvNe "CZcz֝2PR}ӣ#2BYTkhwtbb?c^crr# >@(   999999 99999::999999999:9999:::::99:99:9999999999999999::: 99999 99   :  "otx$),|$),49;9!!!!!!!!!! chapterhh"hyv"es"e'zIIC:\WINWORD\TEMPLTE2.DOTCardSoft 3.1 Software Tech RefPCMCIA 2.10-compliant softwareRev 0.1, 5-3-94. Rich Crowe Rich Crowe