This file was sent to me by Shadow Lord, in .docx format. This is a converted version, the original is available here
-mR_Slug

EISA Configuration File Format

Configuration files contain definitions of hardware configurations, including switch and jumper settings, software initializations, and so on. The EISA Configuration Utility (ECU) uses this information to allocate resources and create a conflict-free system. The resulting configuration is written to nonvolatile memory and saved on diskette.

When you write a new EISA/ISA bus device driver, you must also write a configuration file for the new bus device, include it on the ECU diskette, and ship it to customers for installation and configuration.

The configuration file name should begin with an exclamation point, followed by the product ID and the .CFG file extension. The file itself contains several statement blocks that describe the expansion board or system board, as follows:

System boards require an additional statement block to describe the amount of nonvolatile memory available, the number of expansion slots on the system board, and other characteristics of the system board.

This chapter describes each section of the configuration file. It also discusses the additional statement blocks required for system boards.

B.1    Expansion Board Identification Block

Each configuration file must begin with a board identification block. Four required fields provide the basic identification of the board. Optional fields (in brackets) provide additional identification information.

Syntax

BOARD
ID = identifier
NAME = board_name
MFR = manufacturer_name
CATEGORY = category
[ SLOT = slot_type [ ,type ] ]
[ LENGTH = length ]
[ AMPERAGE = amps ]
[ SKIRT = { YES | NO } ]
[ READID = { YES | NO } ]
[ BUSMASTER = latency ]
[ SIZING = gap ]
[ IOCHECK = { VALID | INVALID } ]
[ DISABLE = { SUPPORTED | UNSUPPORTED } ]
[ VERSION = version_number ]
[ REV = revision ]
[ COMMENTS = comment_string ]
[ HELP = help_string ]

identifier

Specifies a 7-character identifier for an expansion board. The identifier consists of a 3-character manufacturer code, a 3-character hexadecimal product identifier, and a 1-character revision number.

board_name

Specifies up to 90 characters of text that identify the product, including information such as part numbers.

manufacturer_name

Specifies up to 30 characters of text that identify the board manufacturer.

category

Specifies a 3-character identifier that represents the board category. The following identifiers are available:

Identifier

Description

COM

Communications device

KEY

Keyboard

MEM

Memory board

MFC

Multifunction board

MSD

Mass storage device

NET

Netword board

NPX

Numeric coprocessor

OSE

Operating system/environment

OTH

Other

PAR

Parallel port

PTR

Pointing device

SYS

System board

VID

Video board

slot_type [,type] ...

Specifies one of the following identifiers, which represent the type of slot in which the user can install the expansion board:

Identifier

Description

ISA8

8-bit ISA expansion board

ISA16

16-bit ISA expansion board

ISA8OR16

8-bit or 16-bit ISA expansion board (the default)

EISA

EISA expansion board

EMB[( n)]

Embedded device, using the specified I/O range

VIR

Virtual device

OTHER

Vendor-specific expansion slot

You can include an optional text string (type) enclosed in quotation marks to describe the slot.

length


Specifies the length of the board in millimeters. You should include a LENGTH statement so that the ECU can optimize slot allocation. Otherwise, the default value of 330 is used. The LENGTH statement does not apply to embedded or virtual devices.

amps


Specifies the maximum amount of continuous 5-volt current (in milliamps) required by the base configuration of the expansion board. If your device requires more than 5 volts of power, you should include an AMPERAGE statement. Otherwise, the default value of 0 is used.

{YES | NO}

With the SKIRT statement, indicates whether a drop-down skirt is present to prevent installation into a 16-bit slot. The default value is NO.

With the READID statement, indicates whether the expansion board's ID can be read from the EISA ID registers. The default value is NO.

latency

Indicates that the board is a bus master. The latency argument specifies the maximum acceptable latency, in microseconds, from the bus master bus request to the bus grant.

gap

Specifies the minimum number of Kbytes of memory to be used as the sizing gap. The default is 0.

{VALID | INVALID}

Specifies support of the EISA expansion board control register IOCHKERR bit. VALID (the default) indicates that the expansion board responds to reads of its IOCHKERR bit; INVALID indicates that the expansion board does not respond to this bit.

{SUPPORTED | UNSUPPORTED}

Specifies support of the EISA expansion board control register ENABLE bit. SUPPORTED (the default) indicates that the user can disable the expansion board by clearing the ENABLE bit; UNSUPPORTED indicates that the user cannot disable the expansion board by clearing this bit.

version_number

Specifies the version number.

revision

Specifies the revision number.

comment_string

Specifies up to 600 characters of text that the ECU can display when the user requests help.

help_string

Specifies up to 600 characters of text to display if the user requests help.

B.2    Initialization Information Block

The initialization information block defines how I/O ports, switches, jumpers, and software are initialized. Each is defined in its own initialization block.

B.2.1    I/O Port Initialization Statement Block

An I/O port initialization block initializes an I/O port to a specific address or to the address of a PORTVAR variable. The PORTVAR variable initializes the I/O port address based on a configuration selection.

The following CHOICE statements assign addresses to PORTVAR(3). Initialization of IOPORT(1) is based on the selected CHOICE statement. If COM1 is chosen, the ECU writes a value of 00000001b to port address 3F9h. If COM2 is chosen, it writes the value to port address 2F9h.


IOPORT(1) = PORTVAR(3)

FUNCTION = "Serial Port"

CHOICE = "COM1"

PORTVAR(3) = 3F9h

INIT = IOPORT(1) 00000001b

CHOICE = "COM2"

PORTVAR(2) = 2F9h

INIT = IOPORT(1) 00000001b

Syntax

IOPORT( i ) = PORTVAR( j )
 
IOPORT( i ) = address
[ SIZE = { BYTE | WORD | DWORD } ]
[ INITVAL [ LOC ( bitlist ) ] valuelist ]

.
.
.

i

Uniquely identifies the I/O port as a number between 1 and 32767.

j

Identifies the address of an I/O port assigned within a choice or subchoice statement block. This value is assigned to i when the ECU selects the CHOICE or SUBCHOICE statement.

address

Specifies the address of the I/O port.

{BYTE | WORD | DWORD}

Specifies the number of bits in the I/O port, as follows:

BYTE

8-bit (the default)

WORD

16-bit

DWORD

32-bit

bitlist


Contains a list or range of bits to be referenced, from most significant bit (left-most) to least significant bit (right-most).

valuelist

For each bit in bitlist, a corresponding bit in valuelist states how the bit value is read or written, using one of the following bitlist flags:

B.2.2    Switch Configuration Block

The switch configuration block defines the types, layout, and initial positions of switches on the expansion board. The configuration file should contain one switch configuration block for each set of switches.

Syntax

SWITCH( i ) = value
NAME = name
STYPE = { DIP | ROTARY | SLIDE }
[ VERTICAL = { YES | NO } ]
[ REVERSE = { YES | NO } ]
[ LABEL = LOC( switchlist ) labelist ]
[ INITVAL = LOC( switchlist ) valuelist ]
[ FACTORY = LOC( switchlist ) valuelist ]
[ COMMENTS = comment_string ]
[ HELP = help_string ]

.
.
.

i

Uniquely identifies the switch being configured as a number between 1 and 32767.

value


Specifies the number of switches in the set, up to the maximum of 16.

name


Specifies a switch name up to 20 characters long.

{DIP | ROTARY | SLIDE}

Specifies the switch type, as follows:

All switches within the set are numbered, beginning with 1.

{YES | NO}

Specifies the orientation of the switches. The default is NO (not vertical).

With the REVERSE statement, specifies the order in which DIP switches are numbered. When REVERSE = YES, switches are numbered from 1 to n. When REVERSE = NO (the default), switches are numbered from n to 1.

switchlist

Contains a list or range of switch numbers. You must separate the elements of the list by commas. You specify a range by starting and ending values separated by a hyphen. Switches are in ascending order if REVERSE = YES, or in descending order if REVERSE = NO.

labelist

Contains the ASCII switch labels, up to 10 characters each, that the ECU assigns to the switches in switchlist. The labels must appear in the same order as their corresponding switch numbers in switchlist. Surround each label with quotes and separate them by spaces.

The following statement labels four switches in the range 4 to 1, giving them the labels SW1-4, SW1-3, SW1-2, and SW1-1. The switches are specified in descending order because REVERSE = NO.


REVERSE = NO

LABEL = LOC(4-1) "SW1-4" "SW1-3" "SW1-2" "SW1-1"

valuelist

With the INITVAL statement, defines the settings for factory-set switches that must not change. If omitted, the ECU determines the switch settings or the user may set them to any value.

With the FACTORY statement, defines the factory settings for the switches.

For each element of switchlist, a corresponding element in valuelist specifies the setting of the switch, as follows:

The switch settings are not delimited by spaces.

The following statement sets switches 4 and 1 ON and switch 2 OFF. Switch 3 can be in either position.


INITVAL = LOC(4 3 2 1) 1x01

comment_string

Specifies up to 600 characters of text to help the user configure the switches.

help_string

Specifies up to 600 characters of text to display if the user requests help.

B.2.3    Jumper Configuration Block Statement

The jumper configuration block defines the set of jumpers for an extension board.

Syntax

JUMPER( i ) = value
NAME = name
JTYPE = { INLINE | PAIRED | TRIPOLE }
[ VERTICAL = { YES | NO } ]
[ REVERSE = { YES | NO } ]
[ LABEL = LOC( jumperlist ) labelist ]
[ INITVAL = LOC( jumperlist ) valuelist ]
[ FACTORY = LOC( jumperlist ) valuelist ]
[ COMMENTS = comment_string ]
[ HELP = help_string ]

.
.
.

i

Uniquely identifies the jumper being configured as a number between 1 and 32767.

value


Specifies either the number of jumper connections (for inline jumpers) or the number of tripole or paired sets (for tripole and paired jumpers).

name


Specifies the jumper name or description, which can be up to 20 characters long.

{INLINE | PAIRED | TRIPOLE}

Specifies the type of jumper, as follows:

{YES | NO}

With the VERTICAL statement, specifies the orientation of the jumpers. The default is NO (not vertical).

With the REVERSE statement, specifies the order in which jumpers are numbered. When REVERSE = YES, switches are numbered from 1 to n. When REVERSE = NO (the default), switches are numbered from n to 1.

jumperlist

Contains a list of jumper numbers delimited by spaces; paired or tripole jumpers can specify a range of jumpers. You should arrange the elements of jumperlist in ascending order if REVERSE = YES, or in descending order if REVERSE = NO.

labelist

Contains the ASCII labels, up to 10 characters each, that the ECU assigns to the jumpers in jumperlist. The labels must appear in the same order as their corresponding jumper numbers in jumperlist. Surround each label by quotes and separate them by spaces.

valuelist

With the INITVAL statement, defines the settings for factory-set jumpers that must not change. If omitted, the ECU determines the jumper settings or the user may set them to any value.

With the FACTORY statement, defines the factory settings for the jumpers.

The valuelist contains a bit mask that specifies the setting of the paired and inline jumpers in jumperlist. Each bit in valuelist can be one of the following values:

For tripole jumpers, each bit in valuelist can be one of the following values:

The values must appear in the same order as their corresponding jumper numbers in jumperlist, and they should not be separated by spaces.

comment_string

Specifies up to 600 characters of text to help the user configure the jumpers.

help_string

Specifies up to 600 characters of text to display if the user requests help.

B.2.4    Software Initialization Statement Block

The software initialization statement block provides user information and instructions about software drivers for display during system configuration.

Syntax

SOFTWARE( i ) = description

i

Uniquely identifies the software driver as a number between 1 and 32767.

description

Specifies up to 600 characters of text that describes the software. The ECU displays this text along with the switch and jumper settings.

B.3    Function Statement Block

The function statement block identifies the name and type of the expansion board, plus initializations and system resource requirements for one or more possible configurations.

Syntax

GROUP = group_name TYPE = group_type
FUNCTION = func_name
[ TYPE = func_type ]
[ SHOW = { YES | NO | EXP } ]
[ CONNECTION = orientation ]
[ COMMENTS = comment_string ]
[ HELP = help_string ]
[ choice statement block ]
[ SUBFUNCTION = subfunc_name
function statement block ]

.
.
.


.
.
.

ENDGROUP

group_name

Specifies a unique identifier for the group, and can be up to 60 characters long.

group_type

Specifies a 3-character string that identifies the group type. See the description of func_type for a list of commonly used types.

func_name

Specifies the name of the function, which can be up to 100 characters long. All names within a configuration file must be unique, but different configuration files can have common function names. The ECU displays the function name during configuration but does not store it in nonvolatile memory.

func_type

Specifies a 3-character string that identifies the function type. The following types are commonly used for both groups and functions:

Identifier

Description

COM

Communications device

KEY

Keyboard

MEM

Memory board

MFC

Multifunction board

MSD

Mass storage device

NET

Network board

NPX

Numeric coprocessor

OSE

Operating system/environment

OTH

Other

PAR

Parallel port

PTR

Pointing device

SYS

System board

VID

Video board

You should use these types when applicable. However, if you define a new type, it must be 3 characters long and all uppercase.

You can supplement the function type with additional ASCII strings, separated by commas. These additional strings may be more than 3 characters as long as the entire list of types does not exceed 80 characters, including the comma separators.

The ECU stores the TYPE string in nonvolatile memory during configuration. A device driver can use the TYPE string to determine the general class of functionality of a device, and can use the SUBTYPE string to determine the configuration of a device.

{YES | NO | EXP}

Indicates whether the function is displayed during configuration. When SHOW = YES (the default), the function is always displayed. When SHOW = NO, the function is never displayed. When SHOW = EXP, the function is displayed only when the system is in expanded mode.

orientation

Specifies up to 40 characters that describe the orientation of connectors, such as top, bottom, upper, lower, middle, and so on. The ECU can display the connection string if the user requests it.

comment_string

Specifies up to 600 characters of text to help the user configure the jumpers.

help_string

Specifies up to 600 characters of text to display if the user requests help.

choice statement block

See Section B.4.

subfunc_name

Identifies a set of related components with separate resource or initialization requirements. You can include any statement that is valid for a function statement block in a subfunction block.

B.4    Choice and Subchoice Statement Blocks

You must accompany each function statement block by at least one choice statement block that specifies the initializations and system resource requirements of a possible configuration. The ECU uses the first choice statement block as the default. You should arrange additional choice statement blocks in the order of preference. As the ECU searches for the best configuration, it picks the first choice statement block that satisfies the configuration requirements.

Subchoice statement blocks handle resource statement alternatives that are too complex for individual CHOICE statements, such as memory configurations. A subchoice statement block can contain any statement that is valid for a choice statement block. The subchoice alternatives must be automatically selectable by the ECU with information available from the configuration files. The ECU does not present subchoice alternatives, although the user can scroll through the resources that the subchoice statement blocks specify.

A choice statement block can have as many subchoice statement blocks as needed. The ECU sequentially checks each one and selects the first that does not conflict with other devices in the configuration.

Syntax

CHOICE = configuration_name
[ SUBTYPE = device_description ]
[ FREEFORM = length, n ... ]
[ DISABLE = { YES | NO } ]
[ AMPERAGE = amps ]
[ PORTVAR( j ) = address ]
[ TOTALMEM = range_list [ STEP = value ] ]
[ HELP = help_text ]
[ resource description block ]
[ SUBCHOICE
choice statement block ]

.
.
.


.
.
.

configuration_name

Specifies the name of the configuration, which can be up to 90 characters long. During configuration, the ECU displays all the CHOICE statement configuration names.

device_description

Specifies a 3-character mnemonic for the configuration associated with the choice. You can supplement the subtype with additional ASCII strings, separated by semicolons. These additional strings may be more than 3 characters as long as the entire list of types does not exceed 80 characters, including the separators.

The SUBTYPE string identifies the configuration of a device; the TYPE string identifies the type of device. The ECU stores the concatenated TYPE and SUBTYPE strings, with a semicolon delimiter, in nonvolatile memory during configuration. The device driver can access those strings to determine the type of device and its configuration.

length, n ...

Defines resources in a freeform manner, where length specifies the number of bytes of data, up to 203, and n is the data. A FREEFORM statement cannot be used with any resource description block, but can be used any other statement that is valid within a CHOICE statement block.

{YES | NO}

Disables or enables the expansion board function defined in the choice statement block. Each function to be disabled must have its own DISABLE = YES statement. The default is NO.

amps


Specifies the maximum amount of continuous 5-volt current (in milliamps) required by this choice. The total 5-volt current includes the amount in the board identification block plus the amount for the selected options. The AMPERAGE statement does not apply to virtual devices.

j

Uniquely identifies an I/O port, initialized in a prior IOPORT initialization statement block.

address

The address of an I/O port initialization block having the same address as PORTVAR( j).

range_list

Indicates the total amount of memory required by the choice when a memory block can split its allocation between system memory and expanded memory. This can be either a list or a range of values.

value


When you specify a range for STEP, defines the smallest increment by which the user can add additional memory to the board.

help_string

Up to 600 characters of text to display if the user requests help.

resource description block

See Section B.5.

B.5    Resource Description Block

You use resource description blocks within choice and subchoice statement blocks to identify the initialization and system resource requirements of the named configuration. A resource description block groups resource statements and INIT statements based on their interdependencies, as follows:

The following LINK group defines the relationship between the interrupt and DMA channel. When the user or the ECU selects an interrupt or DMA channel, the ECU automatically selects the corresponding resources and initialization. That is, a selection of IRQ = 3 forces the ECU to select DMA = 2 and IOPORT(1) initialzation 00001111b. A selection of DMA = 5 forces the ECU to select IRQ = 4 and IOPORT(1) initialization 11110000b.


LINK

IRQ = 3 | 4

DMA = 2 | 5

INIT = IOPORT(1) 00001111b | 11110000b

This COMBINE group defines the following possible combinations:

Memory Size

Starting Address

Port Initialization

4M

1M

00001111b

4M

4M

01001111b

8M

1M

10001111b

8M

4M

11001111b

Syntax:

{ LINK | COMBINE | FREE }
[ resource statement ]
[ INIT statement ]

.
.
.

resource statement

See Section B.6.

INIT statement

See Section B.7.

B.6    Resource Statements

Resource statements define the initialization and system resource requrements of the named configuration. The resource statement can define any of the following:

The sections that follow describe the syntax for these resource statements.

B.6.1    DMA Channel Description Block

The DMA channel description block specifies the choice of DMA channels supported, whether the channel can be shared, the channel's data size, cycle timing, and any necessary initialization. You must define multiple DMA channel description blocks for a function with multiple DMA channels that have different share, size, or timing characteristics. An expansion board can request up to four DMA channels. Each channel selected during system configuration is stored in nonvolatile memory with the appropriate characteristics.

Syntax

DMA = channel_number
[ SHARE = { YES | NO | ident } ]
[ SIZE = { BYTE | WORD | E-WORD | DWORD } ]
[ TIMING = { DEFAULT | TYPEA | TYPEB | TYPEC } ]

channel_number

Specifies the DMA channel number.

{YES | NO | ident}

Specifies whether the function can share the DMA channel. The default is NO. Two devices can share a DMA channel if they never require the channel simultaneously. For example, a diskette drive and a tape drive attached to the same controller could share a DMA channel because they never use the channel at the same time.

An ident variable, up to 10 characters long, indicates that the function can share the DMA channel only with a device that has a matching identifier.

{BYTE | WORD | E-WORD | DWORD}

Specifies the width of the DMA device data transfer. The default size is BYTE for DMA channels 0 to 3 and WORD for channels 4 to 7.

{DEFAULT | TYPEA | TYPEB | TYPEC}

Specifies the bus cycle type that the DMA controller executes during the transfer. The DEFAULT timing is compatible with ISA DMA devices. DMA devices that support EISA bus cycles can use TYPEC (burst) DMA transfers, which provide the highest data transfer rate.

B.6.2    I/O Port Description Block

The I/O port description block specifies the port address and any initialization.

Syntax

PORT = list_range [ STEP = svalue [ COUNT = cvalue ] ]
[ SHARE = { YES | NO | ident } ]
[ SIZE = { BYTE | WORD | DWORD } ]

list_range

Specifies a single port address, a list of addresses, or a range of addresses.

svalue

Identifies the address increment of the port selections. If omitted, the ECU allocates the entire range.

cvalue

Specifies the number of ports allocated from the STEP address block. If omitted, the ECU sets cvalue equal to svalue.

{YES | NO | ident}

Specifies whether the function can share the requested ports. The default is NO.

The ident variable, a 10-character identifier, indicates that only a function with the same identifier can share the port address.

{BYTE | WORD | DWORD}

Specifies the size of the I/O port.

B.6.3    Interrupt Description Block

The interrupt description block specifies the choice of interrupts supported, whether the interrupt can be shared, whether it is edge or level sensitive, and any initialization.

Syntax

IRQ = interrupt_number
[ SHARE = { YES | NO | ident } ]
[ TRIGGER = { LEVEL | EDGE } ]

interrupt_number

Specifies the interrupt number (or multiple interrupts) that the configuration supports. Each interrupt selected during system configuration is stored in nonvolatile memory with the appropriate share and trigger characteristics. The interrupt device driver can retrieve the interrupt controller initialization information from nonvolatile memory to determine the method of handling interrupts.

{YES | NO | ident}

Specifies whether the function can share this interrupt. The default value is NO. For EISA boards capable of sharing interrupts, this field should be YES.

The ident variable, a 10-character identifier, indicates that only the function with the same identifier can share the interrupt.

{LEVEL | EDGE}

Specifies whether the ROM initializes the interrupt controller to edge- or level-triggered interrupts. The default is EDGE. In most cases, if the SHARE statement is YES, the TRIGGER statement should be set to LEVEL. However, some designs require shared, edge-triggered interrupts.

B.6.4    Memory Description Block

The memory description block specifies the amount of memory on an expansion board and its starting address, whether the memory is cachable, whether it is RAM or ROM, and the type of memory (system, expanded, virtual, or other). The configuration file can contain up to nine memory description blocks for each function.

Syntax

MEMORY = memory [ STEP = step_value ]
[ ADDRESS = list_range [ STEP = step_value ] ]
[ WRITEABLE = { YES | NO } ]
[ MEMTYPE = { SYS | VIR | OTH } ]
[ SIZE = { BYTE | WORD | DWORD } ]
[ DECODE = { 20 | 24 | 32 } ]
[ CACHE = { YES | NO } ]
[ SHARE = { YES | NO | ident } ]

.
.
.

memory

Specifies a list or a range of memory configurations, with a minimum of 1K and a maximum of 64 megabytes.

step_value

When a range is specified, defines the smallest increment by which the user can add additional memory to the board.

list_range

Specifies a list or range of starting addresses of the memory. The ADDRESS statement is optional for memory if MEMTYPE is EXP (expanded) or OTH (other). The ADDRESS statement is required for system and virtual memory.

{YES | NO }

With the WRITEABLE statement, indicates whether memory is writeable. Specify YES for RAM (the default); NO for ROM.

{ SYS | EXP | VIR | OTH }

Specifies the memory type, as follows:

Constant

Memory Type

Description

SYS

System memory

Base and extended memory (the default).

VIR

Virtual memory

Address space is used, but no physical memory occupies the address. Access to VIR memory does not generate an address on the EISA bus.

OTH

Other

Address space used for memory-mapped I/O or bank-switched memory. OTH is intended primarily for I/O devices, such as network adapters. Include an ADDRESS statement only if it resides in the physical address space.

{BYTE | WORD | DWORD}

Specifies the memory size.

{20 | 24 | 32}

Specifies the number of address lines a memory expansion board decodes. The default is 32.

{YES | NO [| ident]}

With the CACHE statement, indicates whether the memory contents can be stored in cache memory. The default is NO.

With the SHARE statement, indicates the total amount of memory the CHOICE statement block specifies. This statement is required for a MEMORY block that can split its allocation between system memory, other memory, and expanded memory.

If you include an ident variable (up to 10 characters long), the function can share the memory address range only with a device that has a matching identifier.

B.7    INIT Statements

INIT statements specify the initializations for alternative configurations. An INIT statement can initialize a DMA, IRQ, IOPORT, or MEMORY block. The ECU determines the initializations for the selected configuration and stores them in nonvolatile memory. The system ROM power-up routine performs the initializations.

B.7.1    I/O Port INIT Statement

The I/O port INIT statement specifies an I/O port and the binary value to write to the port for configuration. You can specify the address of the port in an IOPORT statement or by a PORTADDR variable.

Syntax

INIT = IOPORT( i ) [ LOC( bitlist ) ] valuelist
INIT = PORTADDR( address ) [ { BYTE | WORD | DWORD } ] list

i

Identifies the address of the port to be initialized. You define the size of the port in a previous IOPORT statement for the same identifier i; do not define it in the INIT statement.

bitlist


Contains a list or range of bit positions to be initialized. The elements of the bitlist must be in order from most significant bit to least significant bit, with a space as a delimiter.

valuelist

Assigns the binary values to the port.

address

Specifies the address of the I/O port to be initialized. This form of the INIT statement provides a shorthand form for specifying I/O port values when no initialization block is needed.

{BYTE | WORD | DWORD}

Specifies the size of the I/O port. BYTE is the default size.

list

Specifies the values to be assigned to the I/O port. When you use this form, you must specify all bits as follows:

B.7.2    Switch INIT Statement

The switch INIT statement specifies the switch positions and appropriate settings for the configuration.

Syntax

INIT = SWITCH( i ) LOC( switchlist ) valuelist

i

Identifies the switch to be initialized.

switchlist

Contains a list or range of switch positions. The elements of the list must be in ascending order if REVERSE=YES, or descending order if REVERSE=NO in the corresponding switch identification block. You must use a space to delimit the elements of the list.

valuelist

Specifies the switch setting of each switch position in switchlist, but you must not use spaces to delimit the elements of the list. You can set a dip switch to 1 for ON or 0 for OFF. You can set a rotary or slide switch by placing a 1 in the appropriate bit position.

B.7.3    Jumper INIT Statement

The jumper INIT statement defines the jumper positions and the appropriate setting for the configuration.

Syntax

INIT = JUMPER( i ) LOC( jumperlist ) valuelist

i

Identifies the jumper to be initialized.

jumperlist

Contains a list of jumper positions. For paired and tripole jumpers, jumperlist contains a list or range of jumper positions. For inline jumpers, it indicates the connections between posts, using a caret. For example, LOC(1^2 3^4 5^6) shows that a jumper is set between posts 1 and 2, posts 3 and 4, and posts 5 and 6. The elements of the list must be in ascending order if REVERSE = YES, or descending order if REVERSE = NO in the corresponding jumper configuration block. A space delimits the elements of the list.

valuelist

Specifies the setting for each jumper in the same order as jumperlist, but with no space as a delimiter. You can set paired and inline jumpers to 1 for ON (jumper is installed) or 0 for OFF (jumper is not installed). You can set tripole jumpers to 1 for ON (jumper is installed in upper or right position), 0 for OFF (jumper is installed in lower or left position), or n (jumper is not installed).

B.7.4    Software INIT Statement

The software INIT statement defines how command-line parameters are substituted in the text of a software initialization statement block.

Syntax

INIT = SOFTWARE( i ) parameter

i

Identifies the software statement block to be initialized.

parameter

Specifies the text to be substituted.

B.8    System Board Configuration

System boards require special configuration files that contain additional information not required by expansion boards. This information includes the amount of nonvolatile memory available, the number of expansion slots on the system board, the power available at each slot, and the size and type of each expansion board.

B.8.1    System Board Identification Block

The board identification block for system boards uses the same syntax as an expansion board (see Section B.1), but you must set the CATEGORY field to SYS and the SLOT field to EMB(0).

Syntax

BOARD ID = board_id
NAME = system_board_name
MFR = manufacturer_name
CATEGORY = SYS
SLOT = EMB(0)
AMPERAGE = value

B.8.2    System Description Block

The system description block describes characteristics of the system such as the size of nonvolatile memory. It must immediately follow the board identification block.

Syntax

SYSTEM
[ NONVOLATILE = memory ]
[ AMPERAGE = amps ]
[ SLOT(1) = { ISA8 | ISA16 | EISA | OTH | ,"type" } ]
[ LENGTH = length ]
[ SKIRT = { YES | NO } ]
[ BUSMASTER = { YES | NO } ]

.
.
.

memory

Specifies the total number of bytes of EISA nonvolatile memory, not including the 64 bytes of ISA-compatible nonvolatile memory.

The configuration data for one expansion slot, one virtual device, or one embedded device (including the system board, EMB(0)) can use no more than 340 bytes of nonvolatile memory. A slot with a multifunction expansion board installed can use 340 bytes total for all expansion board functions. EISA systems must support at least 340 bytes of nonvolatile memory for each expansion slot, plus nonvolatile memory for the system board functions.

Use the following equation to determine the minimum amount of EISA nonvolatile memory required:

NVRAM = ( Slots + Sys + Edev + Vdev ) * 340

where:

For example, if you had a system with one system board, 8 physical devices, 1 embedded device, and 2 virtual devices, for a total of 12 devices, you would calculate the amount of nonvolatile memory as follows:

NVRAM = 12 * 340 = 4080 bytes

amps


Specifies the total amount of 5-volt power (in milliamps) available to expansion devices installed on the expansion bus.

{ISA8 | ISA16 | EISA | OTH [,"type "] ...}

Specifies an expansion slot. This statement does not apply to the system board, embedded devices, or virtual devices when included as part of the system description block.

You can include an optional text string (type) enclosed in quotation marks to describe the slot.

length


Accompanies a SLOT statement to specify the maximum length board that the user can install in the slot. System boards should include a LENGTH statement so that the ECU can optimize expansion board slot allocation. If omitted, the ECU assumes the maximum length of 341 millimeters and assigns slot numbers without regard to length.

{YES | NO}

With the SKIRT statement, specifies whether a slot supports a skirted expansion board. The default is YES.

With the BUSMASTER statement, specifies whether an EISA slot accepts a bus master expansion board. The default is YES.