.H 1 "FIREFOX/INDIGO MEMORY CONTROLLER DIFFERENCES"

This is a first pass at documenting the differences between the Firefox and
Indigo memory controllers.  This is being done so that the people writing
the software for spectrum can estimate the amount of effort that will be
required to move the system software from Indigo to Firefox.

At this time, my documentation for the the Indigo memory controller and
the Spectrum I/O ACD are not up to date and so I will only point out
potential differences.  We hope to receive updated information in the
near future and should be able to have more details about the differences
by the end of June.

.H 2 "Firefox Definition"

The Firefox memory controller is currently being defined.  It is a goal
to have the differences between Firefox and Indigo be transparent to
the operating system.  This goal should be able be be met if the following
things happen:
.AL
.LI
Indigo follows the Spectrum I/O ACD.
.LI
Parts of the code to handle memory errors are is put in the PDC.
.LE

If Indigo violates the Spectrum I/O ACD Firefox will choose to follow the
ACD.  An attempt will be made to make all functionality improvements
a super set of Indigo.  The side effects (like what is driven on the
undefined bytes for a byte read) will not always be the same.

.H 2 "Potential Problems"

At this time it is not clear if Indigo conflicts with the Spectrum I/O ACD.
Our current documentation shows conflicts but these may have been resolved.
Some of the areas that need to be checked are:
.AL
.LI
Initial physical address.
.LI
Use of reserved bits in the IO_CONTROL register.
.LI
Support of the MID_BUS CLEAR16 transaction.
.LE

.H 2 "Functionality Improvements"

There are a number of areas that Firefox may take advantage of the its'
VLSI implementation and improve the memory controller.

.H 3 "Soft Physical Address"
Firefox will not multiply map the memory board.  There will be up to 12
bits stored in the SPA register (Indigo has 8).  Firefox will also follow
the ACD more closely by including the size in the SPA register.
The software people need to be aware of this so that they write the size
to the SPA register with the address even though Indigo will ignore it.
(See the Spectrum I/O ACD.)  The SPA register will be readable on Firefox.

.H 3 "Broadcast Flex"
Firefox will support broadcast flex.  It will wake up with the same IPA as
Indigo provided that it does not conflict with the ACD.

.H 3 "Failure Rate"
To insure that the firefox failure rate goals are met, the error correction
circuitry is being designed to allow the memory board to remain fully
functional when a single RAM chip (per bank) has failed.  To do this
requires software intervention.  It seems that this code could go in the
PDC.  This needs to be investigated further.  The two areas that are
different are the power up code and the code that determines what to do
when a hard failure is detected.

.H 3 "Additional Status Information"
Firefox may provide additional status information when an error is detected.
The things that may be provided are listed below:
.DL
.LI
A flag that indicates that there was a data bus parity error.
.LI
The data and parity bits from a data bus parity error.
.LI
A flag that indicates that there has been a second error.
.LE

.H 3 "Additional Control"
Firefox may provide additional software control features.  These are listed
below.
.DL
.LI
Allow the memory controller to be reset.
.LI
Invoke the memory controller's self-test.
.LI
Turn off ECC.
.LI
Write 4 or 8 different syndrome words as opposed to just one.
.LI
Provide a method for reading the syndrome words.
.LI
Allow bus error to be disabled.
.LE

If Firefox provides any or all of these features they will be implemented
in a way that will not conflict with Indigo.  They may put restrictions
on undefined registers and bits in the Indigo memory I/O address space.

