Alto Hardware Manual
Section 4: Display Controller
34
If
a new
DCB
is
required,
DHT
fetches all four words
of
the new
DCB,
and
initializes all the registers.
During
all scan lines
of
a
DCB
except the first,
DHT
only accesses the first doubleword
of
the block.
DWT
has the sole task
of
transferring words from memory to the hardware. When
it
first awakens during
horizontal retrace, it checks
HTAB.
If
it
is
non-zero,
it
enters a loop which outputs
HTAB
D'S
to the
display. When
HTAB
is
zero, a second loop
is
entered which fetches a doubleword from the location
specified by
DWA.
DWA
is
compared with
AECL,
and
if
they are equal,
DWT
blocks until the next scan
line.
DWA
is
incremented by
2,
in preparation for the fetch
of
the next doubleword.
If
DWA:;CAECL,
DWT
continues to supply words to the buffer whenever it becomes non-full.
4.4
Cursor
Because
of
the difficulty
of
inserting a cursor at the appropriate place
in
the display
bit
map at
reasonable speed, a hardware cursor
is
included in the Alto. The cursor consists
of
an
arbitrary
16x16
bit
patch, which
is
merged with the video at the appropriate time. The bit map for
the
cursor is contained
in
16
words starting
at
location
CURMAP(431B}
in page one, and the
X,y
coordinates
of
the cursor are
specified by location
CURLOC
(426B)
and
CURLOC+1
(427B)
in page
1.
The
coordinate origin for the
cursor
is
the upper left hand comer
of
the screen. The cursor presentation
is
unaffected by changes in
display resolution. Its polarity
is
that
of
the current
DCB,
or
the last
DCB
processed
if
it
is located
on
an
area
of
the screen not defined by a
DCB.
The cursor may be removed from view
in
a number
of
ways.
The most efficient in terms
of
processing time
is
to set the x coordinate
to
-1.
The cursor hardware consists
of
a 16-bit shift register which holds the information to
be
displayed on the
current scan line, and a counter which
is
incremented
by
the bit clock,
and
determines the x coordinate
at which the shift register begins shifting.
.
The hardware
is
loaded during horizontal retrace
by
the cursor task microcode, which simply copies the x
coordinate and bit map segment from the R memory into the hardware.
The values
of
x and the bit map are set up in R by a section
of
the memory refresh task, whose wakeup
and priority are arranged
so
that it runs during every scan line after
DWT
has done all necessary output
and
DHT
has set up the information required by
DWT
for the next scan line.
MRT
checks the current y
position
of
the display, and
if
it
is
in the range in which the cursor should
be
displayed, fetches the
appropriate bit map segment from
CURMAP.
When the cursor y position is exceeded by the display, a
flag
is
set in
MRT
to disable further processing. The x
and
y coordinates
of
the cursor are fetched from
CURLOC
and
CURLOC+
1 at the beginning
of
each display field by a section
of
the
display vertical task
microcode.
Cursor processing
is
distributed as it
is
to minimize the amount
of
processing which
must
be done during
the monitor's horizontal retrace time. This time
is
approximately 6 microseconds,
and
it
must include the
worst case latency imposed by tasks at lower priority than the display, plus the worst case disk word
processing time (the disk word task
is
at higher priority than the display), plus
the
time necessary for
DWT
to partially fill the display buffer, plus cursor processing time.