Programmable Option Select Operation

Also see About ADFs

Micro Channel Architecture Handbook, February 1, 1991
(ISBN: 0-13-583493-7, Pages 177-179, 182-186)

Ed. The copyright date is 1990. The information is current as of the Type 1 J and K complexes. The Set Configuration utility, SC.EXE, was updated around 1991 - 1992. New keywords were introduced, the CMOS size went from 50 B to 112 B, and NVRAM size from 2 KB to 8 KB. Little technical information exists from 1992 forward. System POS registers for later systems vary considerably from the early systems, and there are differences even between different models of the same generation.

As I was laboriously pecking this out with two fingers, it seemed that the writers chose to fill up empty space to make the book bigger... Still, the book is the best entry to mid-level book on Miro Channel Architecture out there. Also, one of the very few books on MCA out there.

I chose this chapter to fill out our understanding of POS, for adapters as well as system boards. Don't be surprised if better information comes in and starts to replace this text.

Programmable Option Select Operation

The normal operation of the POS system requires the carefully choreographed interaction of configuration memory, expansion board hardware, and several special files, some of which are used during setup and some during everyday use. This chapter explores the relationships of those files to POS procedures and how the entire POS system works together to make Micro Channel computer configuration painless.

Configuration “Reference Disk” File Usage

In some ways, the programmable option select system of a Micro Channel computer is like the classic factory, combining raw materials from all over to make a single product, a smoothly functioning machine. Instead of steel, plastic, baling wire, and bubble gum, however, POS combines such diverse elements as hardware registers and battery-backed CMOS RAM with well-documented procedures to make a fully functioning system. Some vital parts of our understanding of this factory system are still lacking, however. So far, our discussion of the parts of POS have neglected the transportation and storage systems for the raw materials used by the process. In the Micro Channel world, the raw material for the programmable option select system is information. And the preferred means for transporting and storing this information is the familiar floppy disk.

The familiar reference disk is only one part of the disk-based portion of a POS. The Reference Disk contains the procedures needed for setting up a system but holds only a bare minimum of the necessary set-up information, descriptions of a few common IBM-made expansion products. The needed set-up information for other expansion boards must be provided to POS for the system to configure those products.

The delivery vehicle for this additional set-up information are the diagnostics and the Option disk that accompanies most Micro Channel expansion boards. Files on the disk store all the data that POS needs to configure the board. In addition, it may hold special programs to test the board during set up and whenever its computer host boots up.

These set-up data are relegated to floppy disk for several reasons, not the least important of which is that floppies are the preferred data exchange medium for personal computers. By putting the data on disk rather than locking it into ROM memory on each expansion board, the set-up information can be kept fresher and can be altered quickly to reflect changes in a product. Moreover, it saves the expense of additional ROM (some products have a prodigious amount of set-up data) and the address space used by that memory.

Three basic files are used by programmable option select: adapter description files, which tell POS what a particular expansion board is and how it logically fits into the host system; adapter description program files, which help POS initially set up some expansion boards and initialization files, which are needed to bring some boards to life each time the host system boots up. Diagnostic files, which contain messages that aid in testing the board; and error files, which hold messages about failures to the board and its operation are often contained on the same diskette.

Adapter Description Files

The numbers assigned to each expansion board have two very specific purposes. First, they identify the set-up data file contained on the diskette that accompanies nearly every Micro Channel expansion board. These data are contained in special files called adapter description files. These files can be identified because all must use a specific file name extension, .ADF. The file associated with a given expansion board is simply an “at” sign (@) followed by the adapter identification number and the standard filename extension, .ADF. Hence, a typical adapter description file-name would look like this if you did a directory of a disk storing one:


Other files are also keyed to the adapter identification number. These include two types of program files used in POS set up and operation, as well as diagnostic files and error messages that can be displayed through the system’s Power-On Self Test (POST) routine. The latter two of these also use the same initial character as adapter description files, the “at” sign, but can be distinguished by their filename extensions, which are .DGS and .PEP, respectively.

The contents and arrangement of data within an adapter description file are rigidly controlled by the Micro Channel specification. The file must contain the following information, and in the following order, the adapter identification number, the name of the expansion board associated with the file, and the number of bytes of data used by the board for the programmable option select facility.

In addition, the file may contain other information to be used in setting up the expansion board. Among those details, the file may specify the fixed resources that are used by the expansion board. These resources include the input/output address ranges used by the board, the interrupts that may be used by the board, the arbitration level at which the board may be set, and any memory range in RAM or ROM that the board uses. These lists contain several alternate values that may be selected during the configuration process.

Ed. Some adapters may only have -ONE- value choice for a resource and are essentially fixed. If the resource cannot be shared [example, non-shareable interrupt] then the other adapter -MUST- use a different value.

Expansion boards that will take control of the bus through the Micro Channel’s bus arbitration system must be programmable to accept any of the 15 possible arbitration levels allowed in the system. Such boards include both bus masters and DMA slaves. The .ADF file defines the permissible settings for each board design.

Further, any board using the address space in the normal ROM BIOS area of the host computer – absolute memory locations from C0000(Hex) to EFFFF(Hex) – must also allow the relocation of the address space used to one of the 16 start addresses that are used under the POS scheme. The defined selection of address space is also included in the .ADF file.

The adapter description file also may contain information that’s loaded into the system configuration utility to give the user power to select various board options. The adapter description file includes the name of each item that can be altered by the user, a prompt string associated with each item to give the user the general ideal what the item does, and the choices that the user can make.

The Micro Channel Configuration Utility specification prescribes exactly how the adapter description file is to be arranged. The file consists of nothing more than ASCII text. Each block of information is defined by a keyword prescribed in the Micro Channel Utility specification. A sample adapter definition file is shown in Figure 13.1. Ed. Not shown for brevity’s sake.

These files are created by the manufacturer of the expansion accessory and must be matched exactly to the features and options of that product. Although you can tinker with adapter description files using any text editor, the results may not work for setting up your system. Potentially, errors, loss of data or permanent damage to the card, systems, or other cards in the system may result as well.

Ed. Some judicious tinkering may be done AFTER examination of the card’s contacts on the edge connector, comparison to other like cards, pondering the FixedResources in the ADF... BUT playing with registers willy-nilly can send the card / system into never-never land. Tinkering with system .ADFs is fraught with hazard.

The adapter description files required by a given expansion board must be located on a copy of the system Reference Disk that’s shipped with every PS/2 (and compatibles). You normally cannot copy these files to your original Reference Disk because the original is write-protected. Anyhow, it’s not such a good idea to risk damage to the original. Always make a disk copy of your Reference Disk and put the original in a safe place.

When the Micro Channel system set-up program runs, it scans through all of the system’s expansion slots to read all of the adapter identification numbers. It scans the Reference Diskette for all adapter description files and their associated Help and Diagnostic files that match the identification numbers found for each slot. The program reads the information from each file and plugs it into its procedures. For example, the name and description of the device in a slot is exactly as it appears in the adapter description file associated with the board in the slot.

The adapter description file also tells the set-up program which values to load into each of the registers on the expansion board after set up is completed. The adapter description file makes the match between the parameters displayed on the screen (say, a choice of several port names, COM3 or COM4) and the bit values stored in the registers on the expansion board. Of course, the expansion board itself understands the same code values for these option settings, because this intelligence built into the hardware.

Some adapter boards that are designed to exactly mimic their official IBM equivalents are not accompanied with option diskettes. The boards are specified to respond to the .ADF file written for the IBM design. The IBM Reference Diskette itself contains several adapter description files for the more common official IBM expansion boards. If you want to know what these files are for, just browse through their contents with a text editor or word processor.

As a result of this seemingly complete arrangement and the interrelationship between adapter description files, adapter identification numbers, and the IBM configuration procedure, the set-up program looks as if it always knows everything there is to know about all the expansion boards in your system. Through the facility of the adapter description files, it does.

ADF Name Prefixes

See ADF Naming Conventions.

Adapter Description Program Files (ADPs)

Although POS is a thorough and very complete configuration system, there are some things that it just cannot do. Because the entire procedure is operated by the host computer’s microprocessor, it is limited to controlling features that fall within the purview of the microprocessor. Other specialized hardware may also use memory or other features in territory that’s normally off-limits during the normal operation of the host computer system. Yet many such features need to be initialized and tested when a computer is configured. POS cannot, for example, reach directly into expanded memory specification (EMS) bank-switched memory, because that memory is not within the addressing ranges of the system microprocessor.

Traditionally, manufacturers of products with proprietary features have developed their own set-up programs. Run after the new hardware is installed, these utilities enable the host computer to make the necessary hardware adjustments and tests. Of course each expansion product required its own configuration procedures and consequently its own program. Although the programs used by a given manufacturer for its product line may have had some unifying aspects, each such custom configuration program was necessarily unique.

While there is no technical reason such proprietary programs cannot be used in Micro Channel computer systems, there is a very practical reason. They are completely contrary to the basic programmable option select philosophy of a standardized, integrated set-up interface that minimizes confusion. If every expansion board required its own set-up procedures, there would be no reason for POS in the first place.

To bring these errant sheep back into the fold and extend the reach of programmable option select, IBM added adapter description program files to the basic configuration repertory. The only system resources that can be configured by ADP is memory. In essence, adapter description program configuration files are simply the old customized set-up routines hooked into normal programmable option select operation. They are normal executable files (the kind that would ordinarily have an .EXE filename extension) that run like any other. POS is imbued with enough knowledge to run these programs at the appropriate time. The process has been melded into normal POS operation so that the programs run completely invisibly. In fact, these programs are forbidden to write messages on the screen because such text would interfere with normal POS operation. You might never know that an adapter description program file is being used.

WBST: The whole SC.EXE to ADP "overlay" call interface was changed and greatly enhanced (to support multiple passes to optimize resource allocations) when upgrading to V2.21. I've not analyzed *all* the capabilities, but it may be that a "message text block" parameter can be passed back (if ever necessary), possibly with an error indication code or whatever, to be displayed in a pop-up window by SC.EXE.
   The original (older) ADF/ADP interface was quite demanding enough at the time. The re-issued (updated, newer and re-structured) HITR manual set was just too much added expense, at the time, to be able to afford in good conscience (~£400). Also, the crucial parts were not clear enough to be able to selectively acquire the updated sections most relevant to this aspect.

Even so, you can identify program configuration files by looking for their telltale .ADF filename extension, the same as used by adapter description files. They are distinguished by using the letter “C” as an initial character, which stands for “Configuration.” Following the initial “C” is the adapter identification number corresponding to the device with which the file is associated.

Because of the .ADF filename extension, adapter description program files are ordinarily copied via the set-up utility with other set-up files when you use wildcards for filenames. Moreover, the .ADF extension prevents you from accidentally (or intentionally) running one of these programs from the command line, the results of which are apt to be disastrous. For example, should you have data in EMS memory, the configuration program associated with that memory is likely to erase every byte stored there as part of its set-up process. Programmable option selects know about the unique nature of these files, however, and loads and executes them, notwithstanding their lack of the proper .EXE filename extension.

Initialization Files

Just as some expansion board facilities are untouchable by the system microprocessor during the configuration process, they may also be unreachable before special device drivers are loaded through the computer’s CONFIG.SYS file. The expansion board could not do anything – it couldn’t even be tested to ensure that it was working properly – until its software device driver was loaded through CONFIG.SYS. Anyone who installed an EMS board in his computer is familiar with the result. After the computer runs through its own diagnostics and boots up, it pauses for a usually unbearable time while it goes through a second diagnostic process, checking each byte of the EMS expansion board. The initial purpose for initialization files was to support adapters that needed a program to run to initialize them at every power-up, or those that did not implement a ROM for that purpose. The use of initialization files is discouraged as they are severely problematic in media-less systems.

For PCs, ATs, and other primeval computers, that was okay. People who used them were accustomed to waiting for all sorts of system functions. In theory, the same procedures could be added to Micro Channel computers. But these add-in diagnostics have a big problem – they don’t start until too late. As a result they don’t meld with the Micro Channel philosophy.

To understand why add-in diagnostics don’t cut it in Micro Channel computers, imagine what happens when the EMS board fails catastrophically. In a PC or AT, the symptom is far from subtle – contagious death. The ills of the board spread to the rest of the system. Odds are that the host computer won’t boot. Diagnosing the malaise means unbolting the computer’s case and one at a time pulling expansion boards out of it to see which one is lethal. With memory boards in PCs and XTs these manual diagnostics are particularly bothersome in that system-board DIP switches may need to be reset depending on which board is removed from the bus.

This sort of search-for-the-destroyed-board procedure is exactly what the Power-On Self Test of Micro Channel computers is supposed to eliminate. The computer is supposed to diagnose its own ills. And, of course, it can’t perform that task very well if it is not working at all.

To integrate the power-on diagnostic and set-up procedures used by expansion boards with the overall Micro Channel scheme, the POS uses another special kind of file, initialization files. Much as adapter program files are executed during the system configuration procedures, the initialization file runs during Power-On Self Test. The diagnostic and set-up procedures are in executable-file form, although the file itself wears an .ADF extension instead of the normal .EXE. The reason for the change of extensions is exactly the same as for adapter Program Files – it prevents anyone from inappropriately executing the program from the DOS prompt) or any other time). The initialization file is distinguished from adapter description files and adapter program files by the use of the letter “I” as the first character in its filename. The “I” is then followed by the Adapter Identification Number associated with the expansion board with which the Initialization file is associated.

WBST: Also, any Ixxx.ADF/Jxxxx.ADF files are correctly called "Track-0 initializer Adapter Descriptor Programs (ADPs)" as they are stored by SC.EXE V2.21 within the first "track" of HD 0 (indicated by 80h as a parameter to Int 13h calls), as mapped by (C)BIOS Int 13h, and loaded and executed, by descending priority order, prior to the "boot sector" of the selected boot HD @ 0:7C00.

Normally, POST executes the initialization files before the host computer boots up, if the host is booting from drive C. See Chapter 11 for the procedure. If an expansion board requires an initialization file that POST cannot find on the boot disk, it will prompt you to insert a floppy holding the required file. If you don’t satisfy this demand, POST will inactivate the board and continue with the power-on sequence.

Because the initialization of some expansion boards may be dependent on other boards being properly set up, the programmable option select specification allows manufacturers to give each Initialization file a priority. Initialization files are run in order of their priorities. This priority is controlled by an entry in the adapter definition file associated with the expansion board using the InitProg keyword. While the priority of any board can be set to any value between 0 and 127, values outside the range 30 to 80 are reserved by IBM for special situations and applications. Although you could change this priority by altering the file with any text editor, the result may be unpredictable. In other words, you should NEVER tamper with an adapter description file.

Ed. Never say never, but due care is recommended if you do...

Diagnostic and Error Files

The other two special files used by the programmable option select procedure are simply convenient receptacles for little-used explanatory text, the messages that are used to explain the results of diagnostic procedures and errors. By using separate files for this text, the need to include such text in on-board memory is eliminated and adapter description files can be maintained at a reasonable size. Many expansion boards contain brief error messages in their on-board BIOS extensions, which not only consumed valuable memory bytes, but also ate away at the amount of address space available for use by other expansion boards. Only a finite amount of “high” memory is available, and text that might never be used (you hope never to see an error message) would waste this valuable resource and during diagnostic procedures only a portion of memory may be known to be defect free.

As with other POS files, diagnostic and error files are keyed to particular expansion boards by including the board’s adapter identification number in the filename. As noted earlier, error files use the extension .PEP, and diagnostic files use .DGS. Note that these files are used for the “wordy” versions of messages. Even if these files cannot be found, terse number codes representing the messages will be available. In that way, these files can be seen as optional – your Micro Channel computer will operate even if they are not available. But you’ll be happier that they are there. You’ll instantly know what’s wrong without having to search through a technical manual for an error code.

Ed. So, we will instantly know what’s wrong... Riiight...

WBST: The single-diskette combined Reference *and* Diagnostics Diskette, as opposed to the separate two-diskette Reference and Diagnostics Diskettes for later systems use a fairly simple transfer mechanism when switch from the Reference Programs to the Diagnostics programs - The Reference Command and menu system program COMMAND.COM transfer to the Diagnostics Command and menu system program CMD.COM, with intervening diskette switch prompt for the two-diskette pairs.

CMD.COM accepts a command invocation parameter (presumably A or /A, it doesn't matter too much) to trigger the Advanced Diagnostics rather than the standard, uncontrollable "Test the Computer" option from COMMAND.COM's Main Menu.

Now this is where it might get a little complicated to comprehend for those not well versed in Configuration and Diagnostics usage. One of the primary reasons for the 2-diskette sets was insufficient space for *all* the possible .ADFs and .DGSs which might be added to the "Backup Copy/Copies!!!" if playing around with many different adapters. This has a knock-on disk space requirements *and* available memory effects as both COMMAND.COM and CMD.COM are basic "below the line" PC-DOS programs running in the 640KB address space, early systems having PC-DOS 3.3 core IBMBIO.COM and IBMDOS.COM kernel files, later ones PC-DOS 5.0 core kernel files.

It is entirely possible for Advanced Diagnostics (which attempts to load *every* available *.DGS file into the address space, rather than selectively, by the installed adapter list) to run out of available memory and exclude some needed DGS file. This situation then requires judicious deletion of files related to non-installed adapters from the diskette(s) and/or Convenience/Reference Partition. This is where Bob Eager's bootable SYSPART utility diskette comes in useful, as it provides a DOS accessible C:\ which is *only* the Reference Partition (or Convenience Partition? I haven't checked that out).


The final element of programmable option select is the disk file, used for carrying set-up data for new expansion options to your computer system, and for economically storing extensive set-up data so that it need not waste expensive solid-state memory. In the Micro Channel design, the POS system uses three distinct types of files, separated by function and identified by their filenames (all linked to the adapter identification number): adapter description files, that tell your system what each option does; adapter description program files, that hold set-up procedures for initially configuring expansion options, and initialization files, which provide programs to test and set up expansion options each time you boot up your Micro Channel computer. Diagnostic and Error files, message carriers that give your computer an on-screen voice to tell you what may be ailing it are also typically resident on the same disk.

These files, combined with hardware registers and expansion board features, result in a single, unified set-up system that takes command both when you install new options and when you run your Micro Channel machine each day. It’s a complete package that relieves you of the tough work of the configuration process and gives it instead to the one entity best able to carry it out – your computer.

Content created and/or collected by:
Louis F. Ohland, Peter H. Wendt, David L. Beem, William R. Walsh, Tatsuo Sunagawa, Tomáš Slavotínek, Jim Shorney, Tim N. Clarke, Kevin Bowling, and many others.

Ardent Tool of Capitalism is maintained by Tomáš Slavotínek.
Last update: 08 May 2024 - Changelog | About | Legal & Contact