Character Generator
Each
character
consists
of
a
dot
matrix.
The
matrix
is
five
dots
wide by seven
dots
deep.
There
is
one
dot
between any
two
adjacent
characters
that
is
never
turned
on.
We
have five
dots, a space, five
more
dots,
a space, etc. Verti-
cal spacing
between
adjacent
data
is
determined
by
the
frequency
of
the
dot
clock. (In
the
TRS-
80,
the
dot
clock signal
is
labeled SH IFT.)
The
dot
clock
is
oscillator
frequency,
in
64
character
format, and
1/2
oscillator frequency,
in
32
character
format. Horizontal spacing between
adjacent
dots
is
a
function
of
scan frequency.
In
other
words, each row
of
dots
is
aligned along
the
electron
beam's
path
across
the
CRT.
There
are seven rows
of
character
dots
and five rows
of
blanks.
Since each
character
consists
of
a
pattern
of
dots,
there
must
be
some
method
to
determine
which
dot
should be
on
and which
dot
should be
off
to
form
anyone
character.
The
character
generator
controls
the
dot
patterns
on
the
screen.
Z29
is
the
Character Generator.
The
seven
bit
ASCII
word,
stored
in
the
Data Latch,
is
applied
to
Z29's
ASCII inputs, pins 1
through
7.
The
ASCII addresses a certain area
in
Z29.
You
might
consider
the
ASCII
inputs
to
be
the
higher
seven bits
of
an address.
The
lower
part
of
the
address
is
inputted
at
pins 8, 10 and 11. This
three
bit
input
selects
the
row position
of
the
addressed
dot
pattern.
Z29
outputs
five
dots
at
one
time. Since each
character
consists
of
seven
rows
of
five dots,
the
character
generator
must
output
seven separate times
just
to
build
one
character.
Here
is
how
a typical
character
line
is
written:
Assume an ASCII
word
is
in
the
Latch.
The
electron beam
is
on
the
first scan line
of
the
character. Hence, pins 8, 10 and
11
have a
binary
"0"
applied
to
them.
Z29
outputs
the
fi
rst
dot
pattern
for
that
particular ASC
II
character.
The
next
ASCII
character
is
applied
36
to
Z29. It
outputs
the
first five
dots
for
that
character. This process goes
on
until
the
beam
has scanned
the
entire
width
of
the
screen. If
we
could
stop
action
at
this
point,
all you
would
have would be a line
of
dots. On
the
second scan
line,
the
data
at
pins
8,10
and
11
is
incremented
to
read binary
"1"
(001).
The
RAM
is
now
prepared
to
read
the
second row
of
dots.
The
first ASCII
character
is
applied, and it will
out-
put
the
second
row
of
dots
for
that
character.
The
second ASCII word
comes
in, and
the
second row
of
dots
go
out.
This process con-
tinues until
all
64
characters have had
the
second row
outputted
under
the
first row
of
dots.
The
line
counter
increments and we apply
the
first ASCII
word
once
more.
We
paint
a row
of
dots,
increment
the
line
counter
and
paint
another
row.
Any
character
in
a line
is
accessed
at
least seven times. Once
the
line
counter
has
gone
past
the
seventh
count,
all
the
dots
make
sense; and we will recognize
the
dot
patterns
as characters.
After
the
seven
dot
scans are
out-
putted,
the
electron beam
is
turned
off; and five
rows
of
blank
dots
are
outputted.
We
would
now
be ready
to
output
the
first row
of
dot
patterns
for
the
second
character
line.
The
dot
output
appears slow-reading
about
it.
But ASCII
is
being
shot
into
the
character
generator
at
about
a 1.77 M
Hz
rate.
The
CRT
and
the
retention
of
the
eye make these charac-
ters
seem like
they
are
outputted
whole.
Graphics Generator
Do you
remember
the
rectangle array we dis-
cussed
in
the
Video Divider Chain section? Well,
we are back
to
the
rectangles.
As
stated
earlier,
there
are
1024
character
locations
in
Video
RAM. If we divide each large rectangle
into
six
smaller rectangles, we will have
the
basic
graphics cell (Figure 7 shows a divided rec-
tangle). This cell
is
the
smallest piece
of
graphic
information
that
can be displayed
on
the
screen.
Each cell
is
four
scan lines long and
three
"dots"
wide.