VT (IV)                      2/11/73                      VT (IV)





NAME            vt -- 11/20 (vt01) interface



DESCRIPTION

        The file vt0 provides the interface to a PDP 11/20 which

        runs both a VT01A-controlled Tektronix 611 storage dis-

        play, and a Federal Screw Works (Vocal Interface Divi-

        sion) voice synthesizer.  The inter-computer interface is

        a pair of DR-11C word interfaces.



        Although the display has essentially only two commands,

        namely "erase screen" and "display point", the 11/20 pro-

        gram will draw points, lines, and arcs, and print text on

        the screen.  The 11/20 can also type information on the

        attached 33 TTY and generate utterances via the voice

        synthesizer.



        This special file operates in two basic modes, selected

        by bit 2 (octal 04) on the 11/20's console switches.  If

        this bit is on at the opening of the file, all bytes

        written on the file are interpreted as ASCII characters

        and written on the screen.  The screen has 33 lines (1/2

        a standard page).  The file simulates a 37 TTY: the con-

        trol characters NL, CR, BS, and TAB are interpreted cor-

        rectly.  It also interprets the usual escape sequences

        for forward and reverse half-line motion and for full-

        line reverse.  Greek is not available yet.  Normally,

        when the screen is full (i.e. the 34th line is started)

        the screen is erased before starting a new page.  To al-

        low perusal of the displayed text, it is usual to assert

        bit 0 of the console switches (octal 01).  As explained

        below, this causes the program to pause before erasing

        until one of the attached pushbuttons is depressed.



        If bit 2 of the switches is down, the display is in

        graphic mode.  In this case bytes written on the file are

        interpreted as display and vocal commands.  Each command

        consists of a single byte usually followed by parameter

        bytes.  Often the parameter bytes represent points in the

        plotting area.  Each point coordinate consists of 2 bytes

        interpreted as a 2's complement 16-bit number.  The plot-

        ting area itself measures (+03777)X(+03777) (numbers in

        octal); that is, 12 bits of precision.  Attempts to plot

        points outside the screen limits are ignored.



        The graphic and sonic commands are:



        order (1); 1 parameter byte

             The parameter indicates a subcommand, possibly fol-

             lowed by subparameter bytes, as follows:



             erase (1)

                  The screen is erased.  This action may be de-

                  layed, as explained below, until a pushbutton

                  is depressed.



             label (2); several subparameter bytes

                  The following bytes up to a null character are

                  taken as a label and typed on the console TTY.

                  One of the console switches gives labels a spe-

                  cial interpretation, as explained below.



             display label (3); several subparameter bytes

                  The following bytes up to a null byte are

                  printed as ASCII text on the screen.  The ori-

                  gin of the text is the last previous point

                  plotted; or the upper left hand of the screen

                  if there were none.



        point (2); 4 parameter bytes

             The 4 parameter bytes are taken as a pair of coordi-

             nates representing a point to be plotted.



        line (3); 8 parameter bytes

             The parameter bytes are taken as 2 pairs of coordi-

             nates representing the ends of a line segment which

             is plotted.  Only the portion lying within the

             screen is displayed.



        frame (4); 1 parameter byte

             The parameter byte is taken as a number of sixtieths

             of a second; an externally-available lead is as-

             serted for that time.  Typically the lead is con-

             nected to an automatic camera which advances its

             film and opens the shutter for the specified time.



        circle (5); 6 parameter bytes

             The parameter bytes are taken as a coordinate pair

             representing the origin, and a word representing the

             radius of a circle.  That portion of the circle

             which lies within the screen is plotted.



        arc (6); 12 parameter bytes

             The first 4 parameter bytes are taken to be a

             coordinate-pair representing the center of a circle.

             The next 4 represent a coordinate-pair specifying a

             point on this circle.  The last 4 should represent

             another point on the circle.  An arc is drawn

             counter-clockwise from the first circle point to the

             second.  If the two points are the same, the whole

             circle is drawn.  For the second point, only the

             smaller in magnitude of its two coordinates is sig-

             nificant; the other is used only to find the quad-

             rant of the end of the arc.  In any event only

             points within the screen limits are plotted.



        dot-line (7); at least 6 parameter bytes

             The first 4 parameter bytes are taken as a

             coordinate-pair representing the origin of a dot-

             line.  The next byte is taken as a signed x-

             increment.  The next byte is an unsigned word-count,

             with "0" meaning "256".  The indicated number of

             words is picked up.  For each bit in each word a

             point is plotted which is visible if the bit is "1",

             invisible if not.  High-order bits are plotted

             first.  Each successive point (or non-point) is off-

             set rightward by the given x-increment.



        speak(8); several parameter bytes

             The following bytes up to a null byte are taken to

             represent phonemes which are fed to the voice syn-

             thesizer.  vsp(VII) gives the encoding.



        The 3 low-order console switches of the 11/20 modify the

        operation of the display as follows.



        Bit 2 (octal 04) is examined at the time the display file

        is opened (more precisely, when the first byte is written

        after an open); as indicated, when on it selects charac-

        ter mode, otherwise graphic mode.



        Bit 1 (octal 02) determines whether TTY labels are to be

        interpreted.  Unless this bit is on, labels are ignored.

        (except to terminate skip mode, see below).



        Bit 0 (octal 01) determines whether the display will

        pause before erasing the screen; if off there will be no

        pause.  If bit 0 is on, the erase will occur and display-

        ing will resume only when one of the 16 pushbuttons is

        depressed.



        There is a box with 16 pushbuttons connected to the

        11/20.  Their state is at all times available in the

        11/45 by executing the csw system call (II).  They are

        used by the 11/20 when it is pausing before an erase.  14

        of the buttons merely serve to allow the display to con-

        tinue.  If, however, button 7 is pushed, the display will

        ignore commands up to the next erase command, then ring

        the TTY console's bell, thereby skipping an entire pic-

        ture.



        If button 8 is depressed, the display will ignore com-

        mands up to the next TTY label (whether or not its typing

        is suppressed) before resuming the displays.  Thus a se-

        quence of frames may be skipped.



FILES           /dev/vt0



SEE ALSO        csw(II), vsp(VII)



BUGS            Two users using vt0 simultaneously can interfere

                with each other, e.g. plot phonemes or speak dis-

                play coordinates.