Specifications
8 Issue 5, August 1994 Acorn Enhanced Expansion Card
Acorn Enhanced Expansion Card
Manufacturer’s code
Every expansion card should have a manufacturer’s
code. The following are some examples of these:
Consult Acorn for the allocation of codes.
Product type code
Every expansion card type must have a unique number
allocated to it. These are a few examples:
Consult Acorn for the allocation of codes.
Interrupt status pointers
If bit 1 of byte 1 of the extended ECId (IS) is set, then the
address of the FIQ and IRQ status bits must be provided
in the eight bytes which follow the extended ECId, even
if the two status bits are at address 0. There are two sets
of four byte numbers as detailed below, each consisting
of a three byte address field and a one byte position
mask field. The position mask defines which bit within
the status byte refers to the status bit. It should consist
of a single one and seven zeros. The other bits within the
status byte may be ‘don’t cares’. The status byte should
signal that the expansion card is interrupting by setting
the appropriate bit to 1. If the expansion card does not
provide one or other of these interrupt sources, then the
respective position mask should consist of eight zeros.
When the ECId is in EASI space, the addresses are still
relative to the normal expansion card space. The
interrupt status byte(s) may not be in EASI space.
The 24-bit address field allows for an absolute byte
address with an offset from hex 03240000 to be defined.
Hence the cycle speed to access the interrupt status
byte(s) can be included in the address (encoded by bits
19 and 20). Bits 14 and 15 should be zero.
Manufacturer Code Value
Acorn UK 0
Olivetti 2
Watford 3
Computer Concepts 4
Wild Vision 9
Product Type Code Value
SCSI 2
Ethernet 3
RAM/ROM 5
BBC IO 6
MIDI 19
Chunk directory structure
If bit 0 of byte 1 of the extended ECId (CD) is set, then
bit 1 of byte 1 of the extended ECId (IS) must be set and
hence the addresses must be present.
Note that these eight bytes are always assumed to be
bytewide. Only the lowest byte in each word should be
used. After byte 15 (hex address 40 upwards), wider
words may be used, according to the setting of W[1] and
W[0] in the extended ID. See the Identification extension
on page 7.
If bit 0 of byte 1 of the extended ECId (CD) is set, then
following the interrupt status pointers is a directory of
chunks of data and/or code stored in the ROM. The
lengths and types of these chunks and the manner in
which they are loaded is variable, so after the eight bytes
of interrupt status pointers there follow a number of
entries in the chunk directory.
Note that from here on the definition is in terms of bytes.
If the expansion card supports a 16 bit or 32 bit wide
interface then the driver code must take this into
account.
The chunk directory entries are eight bytes long and all
follow the same format. There may be any number of
these entries. This list of entries is terminated by a block
of four bytes of zeros.
One of these blocks may need to be the code loader. It
contains the code to load bytes from the (optionally
xxxxxx40
xxxxxx34
xxxxxx30
xxxxxx24
xxxxxx20
IRQ Status Bit
Address (24 bits)
IRQ Status Bit
Position mask
FIQ Status Bit
Address (24 bits)
FIQ Status Bit
Position mask
Hex address
Start Address
4 Bytes (32 bits)
Size in bytes
3 Bytes (24 bits)
Operating System
Identity Byte
n + 8
n + 4
n + 1
n