Text preview for : 19791126_Programming_the_Display_Controller_CRT5027.pdf part of xerox 19791126 Programming the Display Controller CRT5027 xerox notetaker memos 19791126_Programming_the_Display_Controller_CRT5027.pdf



Back to : 19791126_Programming_the_ | Home

Xj llQnV
I' W-\'vA
PALO ALTO RESEARCH CENTER
Systems Science Laboratory
LSI Systems Area
November 26, 1979

For Xerox Internal Usc Only


To: N oteTaker Programmers

From: Doug Fairbairn
Subject: Programming the Display Controller (CRT5027)

stored: Disp iayContro llerProgramming. bravo



The display controller is normally programmed into one of two states: driving 525 line monitors
(usually internal) and driving AHo sLyle monilors. The proper programming informatiun for these
two modes is given belowo
Summarizing the basic parameters:

Parameter 521 lines 853 lines
Bit clock 12 Mhz. 18 Mhz.
Bit time 83.3 ns. 55.55 ns
Line Time 64.0 usec. 39.555 ns
Bits/line 640 576
Active lines/frame 480 784



Address Data/521 Data/853 What it does

01011111 (5FH) 01010111 (57H) Horizontal line count register. Total
characters/line = N + 1.
N(521)=95
N(853)=87

1 I 1110 I 010 (F2H) 1 I 1001 I III (CFH) Interlace bit I horizontal sync width I
Horizontal sync delay
Interlace (521/853) = 1
Width(521)= 14 chars.x666.64ns=9.33 usee.
Width(853)=9 chars. x 444.44ns=4.0 usec.

Delay~521) = 2 char. x 666.64ns. = 1.33 us.
De1ay,853)=7 char. x 444.44ns=3.l1 usee.


X 11111 I 101 (7DH) X I 1101 1100 (6CH) Scan lines/ data row (N + 1) I characters/data
row
2


Scan lines ('::21) = 15
Scan lines (853) = 13
Chars~521) = 5 (implies 80)
Chars\853) =4 (implies 72)
[Other pairs are 0:20; 1:32; 2:40; 3:64; 4:72;
5:80; 6:96; 7: 132]

00 I 011101 (lD H ) 00 1110111 (37 H) Skew bits I Data rows/frame(N + 1)

Skew(521) = 0
Skew(853)= 0
Rows(521) = 29
Rows(853) = 55

00000100 (04H) 10101010 (AA H) Scan lines/frame
Scans(521) = (4x2) + 513 = 521
Scans(853)= (170x2)+ 513 = 853
00010000 (10H ) 00011010 (lA H ) Vertical data start - number of raster lines
ilpbv ;::Jftpr lp;:jilinp- eOQe of vertical sync of
~~~t(cal-stlft--posTtion-:'-r -~ . --

Vstart(52P = 16
Vstart(853)= 26

XXOOOOOO (OH) XXOOOOOO (OH) Last displayed data row

Row(521) = 0
Row(853)=O

14EH unsused unsused Processor self load
150H unsused unsused Read cursor line address

152H unsused unsused Read cursor character address
154H 00000000 (OOH) 00000000 (OOH) Reset timing chain to top left of page.

156H unsused unsused Up scroll

158H 00000000 (OOH) 00000000 (OOH) Load cursor character address

15AH 00 I 011110 (lEH) XX111000 (38 H) Load cursor row address (This is used to
block the video when it gets to this value)
Block( 521) = 30
Block(853) = 56

00000000 (OOH) 00000000 (OOH) Start timing chain
15EH unsused unsused Non-processor self load
In choosing new values for these parameters the following should be kept in mind.
3


1. The horizontal sync must come at a frequency compatible with the monitor being driven.
Ycfroo-a-r-a l-i-B-@"f-a-w-m-G-}l~-tG+s{ S-2-5}-G:X-p-~ IS.7 5-0- Kb.-z. (6-1.5 J..-ksec. period-) and the AltD-sLj'le
monitors expect 26.250 Khz (38.1 usee.). The line rate generated by the internal sync
generator will be

Hsync=(horiz line count reg. + 1) x (8 bits/char.) x (bit clock period)
Hsync(521) =(95 + 1) x (8 bits/char.) x (83.3 ns/bit)=64.0 usec.
Hsync(853) = (87 + 1) x (8 bits/ char.) x (55.55 ns/bit) = 39.1 usec.

2. The vertical sync period must be 33.33 msec.lframe for all line rates

Vsync=Scan lines/frame x Hsync
Vsync(521) = 521 x 64.0=33.344 msec.
Vsync(853) = 853 x 39.1=33.352 msec.

3. You should be able to set the Scan Lines/Data Row to any value between 0 and 15 (1
and 16) but empirical evidence indicates this value should be 13 (14) or less when running
with an 18 Mhz. bit clock. This value is multiplied by Data Rows/Frame to come up with
the total number of active lines to be displayed.

The value for Characters/Data Row deteITIlines how many visible bits are displayed. The
number of visible bits will be 8 x this value. You must insure that you allow enough time
for horizontai blanking:

HorizBlank = (Horizontal Line Count-Characters/Data Row) x 8 x (bit clock peliod)

This value should be at least 7 usec. for Alto-style monitors and 10 usec. for standard line-
rate models.

4. The Data Rows/Frame is a good parameter to adjust the vertical size of the display in
increments of character rows (see #3 above). ~Aodifying this value does not change the
line or field rate but merely the number of displayed lines. This means that any scan lines
beyond (Data Rows/Frame x Scan Lines/Data Row) will appear black.

5. Vertical Data Start is a good number to play with in order to move the displayed data
vertically on the screen. As in #4, the number of total scan lines is not changed but the
position of the displayed lines is changed. This parameter should have a minimum of
about 10H . You must insure that

(Scan Lines/Data Row) x (Data Rows/Frame) +(2 x Vertical Data Start) (Scan Lines/Frame

6. An alternate way to adjust the number of displayed lines is to set the Cursor Row
Address to the data row which you want blanking to start on. The difference between this
method and that in # 4 is that the remainder of the scan lines are left white in this case,
rather than being blanked to black. This method has the same effect of using less bit map
and displaying fewer lines of text. .

7. The Last Displayed Data Row has no useful effect on the display and should always be
initialized to O.

If all you want to do is reduce the number of displayed lines on the display and then center what's
left, then use the following:

Data Rows/Frame = Desired # of lines/Scan Lines per Data Row
Vertical Data Start= (Scan Lines/Frame - (Data Rows/Frame x Scan Lines/Data Row