Specifications

6 Issue 5, August 1994 Acorn Enhanced Expansion Card
Acorn Enhanced Expansion Card
must be installed to improve the ventilation, if not already
fitted.
Expansion card identity
An expansion card must identify itself to the host
operating system. This is done with the expansion card
identity (ECId). This consists of at least one byte (the low
byte) of which bits 3 to 7 carry ECId information, and is
usually followed by several more bytes. The ECId must
appear at the base of the IOC synchronous address
space, or, in the case of the Risc PC, can be located at
the base of EASI space. The operating system will
perform an IOC synchronous read of address 0 of each
expansion card slot in turn.
The Risc PC however is slightly different. Because the
expansion card ECId may be held in EASI space or IOC
synchronous space, the operating system will perform a
synchronous read followed by an EASI type A read from
each of the possible slots. If a synchronous read is
performed and the ECId byte read back by the operating
system is valid, the EASI read is not performed and the
operating system moves onto the next slot.
Note: Regardless of expansion card type used (IOC or
EASI), the operating system always reads ECId data as
bytes.
Expansion card identity space
The expansion card identity space starts at expansion
card address 0 and extends into the expansion card
space as required. The minimum ECId, which all
expansion cards must support, is a single readable byte
at address 0, called the ECId low byte. Most expansion
cards will support an extended ECId which consists of
eight bytes starting from address 0. The ECId (whether
extended or not) must appear at the bottom of the
expansion card space, from address zero upwards after
reset. It does not however have to remain readable at all
times, so it can be in a paged address space so long as
the expansion card is set to page zero on reset. Refer to
Expansion card interrupts on page 6 and FIQ and IRQ
status on page 7. This has the effect that the ECId,
including the expansion card present bit, is only valid
from reset until the expansion card driver is installed.
If there isn't a valid ECId low byte in the IOC
synchronous space then it will also be checked for at
address 0 in the EASI space. The same is also true of an
extended ECId; it may also exist in EASI space starting
at address 0. Note that this does mean that location zero
of IOC synchronous space will be read at startup time,
so it is unwise to put read-sensitive hardware here even
if the ECId is in EASI space.
Code space
In addition to the expansion card identity, which all
expansion cards must support, an expansion card can
have code or data in ROM. RISC OS usually uses this
for expansion card driver code, which is downloaded into
system memory, by the operating system, before it is
used. Often this code will be in a paged address space.
The manner in which this code is accessed is variable
and so it is accessed via a loader. The format of the
loader is defined for each operating system, and gives
access to a paged address space. The loader must live
in the expansion card space above the ECId after reset,
the position and size of it being defined by a chunk
directory entry. Note that the ECId and the loader may
themselves be in the paged address space as long as
they appear at address zero after reset. Refer to the
section entitled Chunk directory structure on page 8.
The design of the Network Card is such that the
hardware for addressing a paged ROM is fully defined.
This also means a loader has been built in to RISC OS.
There is no need to write or supply a loader.
When the ECId is in EASI space there is no need for a
loader since the entire EASI space is directly
addressable.
Expansion card identity low byte
The low byte of the ECId is as follows:
Expansion card presence
The host operating system has to know if there are any
expansion cards present. Normally BD[1] is pulled high
by a pullup. Reading the low byte of the ECId will
therefore read a 1 on this bit if an expansion card is
absent. All expansion cards must have bit 1 low in the
low byte of the ECId.
Expansion card interrupts
An expansion card which is capable of generating a
PIRQ or a PFIQ must carry a status bit for each of these
interrupt sources. These two status bits must be in the
low byte of the ECId, unless the expansion card contains
an extended ECId, in which case the status bits may be
relocated in the expansion card address space. An
expansion card which is holding PIRQ low must set bit 0
high in the low byte of the ECId. An expansion card
which is holding PFIQ low must set bit 2 high in the low