Specifications
Acorn Enhanced Expansion Card Issue 5, August 1994 7
Acorn Enhanced Expansion Card
byte of the ECId. In this way the operating system can
quickly find which expansion card is generating the
interrupt.
If the expansion card contains paged ROM, these status
bits may be located elsewhere in the expansion card
address space, in which case the two bits in the ECId
low byte should be zeros. The location of these status
bits must appear in the ROM space above the extended
ECId.
If an expansion card is not capable of generating either
a PIRQ or a PFIQ, then bits 0 and 2 in the low byte of the
ECId must be zero. If the interrupt status bits have been
relocated, then the respective position mask should be
set to zero. Refer to Interrupt status pointers on page 8.
ID field
There are four bits in the low byte of the ECId (BD[3:6])
which may be used for expansion card identification.
These should only be used for the very simplest of
expansion cards. Most expansion cards should
implement the extended ECId which eliminates the
possibility of expansion card IDs clashing. When an
extended ECId is used, all four bits in the ID field of the
low byte ECId must be zero.
Conformance bit
The most significant bit in the low byte of the ECId must
be zero for expansion cards that conform to this Acorn
specification. If this is not the case, then the ECId and
chunk directory will not be recognised.
Identification extension
If the ID field of the low byte of the ECId is zero, then the
ECId is extended. This means that the next seven bytes
of the ECId will be read by the operating system. The
extended ECId starts with the ECId low byte, either at
address 0 in the IOC synchronous space or at address 0
in EASI space, and consists of eight bytes as defined
below. If bit 0 of byte 1 is not set then the extended ECId
is just eight bytes long. If bit 0 of byte 1 (CD) is set, then
a chunk directory follows the interrupt status pointers.
FIQ and IRQ status
If bit 1 in byte 1 of the extended ECId (IS) is not set, then
the interrupt status bits have not been relocated within
the expansion card address space. In this case the FIQ
and IRQ status bits must appear as bits 2 and 0
respectively in the low byte of the ECId. Expansion cards
which cannot generate interrupts must drive these bits to
zero. If bit 0 in byte 1 of the extended ECId (CD) is not
set either, then the interrupt status pointers do not need
to be defined, as the operating system will not read
them. If CD is set, then the interrupt status pointers
should be defined to point to the respective bits in the
ECId low byte.
If bit 1 of byte 1 of the extended ECId (IS) is set, then the
interrupt status bits have been relocated within the
expansion card space. In this case the interrupt status
pointers must be defined as described in Interrupt status
pointers below. Note that if both IRQ and FIQ sources
are provided by an expansion card, then a separate
status bit must exist for each type of interrupt source,
though the two status bits may appear at the same
address if convenient. Refer to Interrupt status pointers
below.
Country code
Previously C[7:0] was the country code. This is no longer
used; the UK code 00 should now be used instead.
7 6 5 4 3 2 1 0
C[7] C[6] C[5] C[4] C[3] C[2] C[1] C[0] 0x1C
M[15] M[14] M[13] M[12] M[11] M[10] M[9] M[8] 0x18
M[7] M[6] M[5] M[4] M[3] M[2] M[1] M[0] 0x14
P[15] P[14] P[13] P[12] P[11] P[10] P[9] P[8] 0x10
P[7] P[6] P[5] P[4] P[3] P[2] P[1] P[0] 0x0C
R R R R R R R R 0x08
R R R R W[1] W[0] IS CD 0x04
A 0 0 0 0 F 0 I 0x00
A = 0 : Acorn conformant card
= 1 : non-conformant card
F = 0 : not requesting FIQ – see text
= 1 : requesting FIQ
I = 0 : not requesting IRQ – see text
= 1 : requesting IRQ
R = 0 : mandatory at present
= 1 : reserved for future use
CD = 0 : no chunk directory follows
= 1 : chunk directory follows interrupt status pointers
IS = 0 : interrupt status appears in low byte ECId
= 1 : interrupt status has been relocated
W[1:0] = 0 : 8 bit code follows after byte 15 of Id
= 1 : 16 bit code follows after byte 15 of Id
= 2 : 32 bit code follows after byte 15 of Id
= 3 : reserved
C[7:0] = Reserved
M[15:0] = Manufacturer
P[15:0] = Product Type