Bootstrapping - Xerox Alto I Hardware Manual

A personal computer system alto series
Table of Contents

Advertisement

Alto Hardware Manual
Section 3: Emulator
29
STA 1 @ACTIVE
IMPLEMENTATION
In addition to the main memory locations, the interrupt system uses one R-register: NWW, new interrupts
waiting. Bit 0 of NWW is 0 if the interrupt system is enabled and one if it is disabled. This is why there
are only 15 channels of interrupts and why ww[O] should never be set.
lIO
device microcode ORS bits
into this register to cause interrupts.
(NWW
OR
WW)
expresses all pending interrupts.
The main loop of the emulator checks NWW during the fetch of each emulated instruction. If
hTWW
is
greater than zero (i.e., NWW[O] is not set meaning the interrupt system is on, and at least one bit is set in
NWW[I-IS] meaning an interrupt is pending on some channel) then the microcode computes (NWW OR
ww) AND ACTIVE. If this quantity is nonzero (Le., an interrupt is pending and its channel is active) then
an interrupt is caused. If not, NWW OR WW is stored in WW, NWW is zeroed, and the instruction is
restarted.
If an interrupt is caused, the microcode stores the program counter in PCLOC, sets NWW[O] to disable
further interrupts, clears the bit in NWW and in WW corresponding to the channel on which the interrupt
is occurring, and loads PC with rv(INTVEC+ IS-CHANNEL).
When the interrupt system is disabled (by executing DIR or DIRS or initiation of an interrupt), the
microcode sets NWW[O]. When the interrupt system is enabled (by executing EIR or BRI), the microcode
clears NWW[O] and ORS WW into
NWW.
This organization is optimized to minimize the cost (in additional microinstructions in the emulator main
loop) of the most common case where the interrupt system is enabled and no interrupts are pending.
When a . bit appears in
hTWW
while the interrupt system is· active, it is either cleared by causing an
interrupt or flushed into WW where it is checked less often, since the cost of deciding that an interrupt is
pending but that the channel is inactive is too high to tolerate on each pass through the main loop. The
assumption in flushing inactive bits into WW is that the CPU program will enable interrupts shortly after
changing· ACTIVE, and doing so will cause the pending bits in WW to be reconsidered.
3.3
Bootstrapping
The emulator contains microcode for initializing the Alto in certain ways, and thereby "bootstrapping" a
runnable program into the machine. A "boot," which is invoked either by pressing the small button at
the rear of the keyboard or by executing an appropriate 8IO instruction (see section 3.3), simply resets all
micro-PC's to fixed initial values determined by their task numbers. Unless the Reset Mode Register
specifies otherwise (see section 8.4), the emulator task is started in the PROM and performs a number of
operations:
1. The current value of PC is stored in memory location O. The emulator accumulators are not
·altered during booting.
2. The display is turned off; Le. rv(420B) +-0.
3. Interrupts are disabled.
4. The first keyboard word (KBDAD, 177034B) is read to determine what sort of boot is to be
done:
.
Disk Boot:
If the (BS) key is not depressed, the microcode interprets any depressed keys
reported in this keyboard word as a real disk address. If no keys are depressed,
this results in a real disk address . of O.

Advertisement

Table of Contents
loading

This manual is also suitable for:

Alto ii

Table of Contents