Alto Hardware Manual . Section 8: Control
RAM,
ROM,
and s Registers
59
register" is used to detennine which tasks
will
start in
ROMO
and which will start in
RAMO.
The emulator
Fl
RMR
+-
causes the reset mode register to be loaded from the processor bus.
The
16
bits
of
the
processor bus ·correspond to the
16
Alto tasks in
the.
following
way:
the low order
bit
of
the processor
bus.specifies the initial mode
of
task
0,
the lowest priority task (emulator),
and
the high-order
bit
of
the
bus specifies the initial mode
of
task 15, the highest priority task (recall
that
task i starts at location i;
the
reset mode register detennines only which microinstruction bank will be used at the outset). A task will
commence in
ROMO
if
its associated bit in the reset mode register contains the value 1; otherwise
it
will
start
in
RAMO.
Upon initial power-up
of
the Alto, and after each reset operation, the reset mode register
is
automatically set to all ones, corresponding to 'Starting all tasks
in
ROMO.
8.5
Standard Emulator Access
The . standard emulator includes three instructions allowing basic access to the control
RAM.
More
sophisticated access may
be
implemented by using the basic access primitives to write other access
microcode into the control
RAM
and theri transferring control to
that
microcode.
RDRAM
(61011B)
Read from Control
RAM:
Reads the control
RAM
(or
ROM)
halfword addressed by
ACI
into
ACO.
The
microcode is:
T+-ACl,
RDRAM;
L+-ALLONES;
(AND'ed
with control
RAM
data)
ACO+-L,
:
START;
Note:
In
Alto IIs running microcode version 2, this instruction does not work reliably
if
the
Ethernet interface is running.
WRTRAM
(61012B)
Write into Control
RAM:
Writes
ACO
into the high-order half and
AC3
into the low-order
half
of
the
control
RAM
word
addressed by
ACl.
The microcode·
is:
.
T+-ACl;
L+-ACO,
WRTRAM;
(This loads the M register)
L+-AC3;
:START;
JMPRAM
(61010B)
Jump to Control
RAM:
This emulator instruction provides a software interface to the
SWMODE
instruction so
that
the
emulator task may enter another bank in
RAM
or
ROM.
The next emulator microinstruction will
be detennined from the value in
ACI
(mod 1024)
--
see the discussion
of
bank
switching
in
section 8.4. Note that the instruction name (jump
to
fUM)
is
misleading,
as
SWMODE may jump to
other places
as
well.
The microcode for
JMPRAM
is:
T+-ACl,
BUS,
SWMODE;
:NOVEM;
(NOVEM
= 0)
This operation
is
fraught with peril.
If
done in error it is
the
one
of
the
few
emulator
instructions which can cause the machine to plunge completely
off
the
deep
end. Although
clever coders can use
JMPRAM
to detennine whether
or
not a control
RAM
is installed, they are
better advised to make this detennination using
WRTRAM
and
RDRAM
(see section 9.2.4).