.pa 1 .he 'VT (IV)'2/11/73'VT (IV)' .ti 0 NAME vt -- 11/20 (vt01) interface .sp .ti 0 DESCRIPTION .br .in 8 The file vt0___ provides the interface to a PDP 11/20 which runs both a VT01A-controlled Tektronix 611 storage display, and a Federal Screw Works (Vocal Interface Division) 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 program 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 control characters NL, CR, BS, and TAB are interpreted correctly. 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 allow 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 plotting 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: .in +5 .ti -5 order (1); 1 parameter byte .br The parameter indicates a subcommand, possibly followed by subparameter bytes, as follows: .in +5 .ti -5 erase (1) .br The screen is erased. This action may be delayed, as explained below, until a pushbutton is depressed. .ti -5 label (2); several subparameter bytes .br 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 special interpretation, as explained below. .ti -5 .nf display label (3); several subparameter bytes .fi .br The following bytes up to a null byte are printed as ASCII text on the screen. The origin of the text is the last previous point plotted; or the upper left hand of the screen if there were none. .in -5 .ti -5 point (2); 4 parameter bytes .br The 4 parameter bytes are taken as a pair of coordinates representing a point to be plotted. .ti -5 line (3); 8 parameter bytes .br The parameter bytes are taken as 2 pairs of coordinates representing the ends of a line segment which is plotted. Only the portion lying within the screen is displayed. .ti -5 frame (4); 1 parameter byte .br The parameter byte is taken as a number of sixtieths of a second; an externally-available lead is asserted for that time. Typically the lead is connected to an automatic camera which advances its film and opens the shutter for the specified time. .ti -5 circle (5); 6 parameter bytes .br 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. .ti -5 arc (6); 12 parameter bytes .br 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 significant; the other is used only to find the quadrant of the end of the arc. In any event only points within the screen limits are plotted. .ti -5 dot-line (7); at least 6 parameter bytes .br 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 offset rightward by the given x-increment. .ti -5 speak(8); several parameter bytes .br The following bytes up to a null byte are taken to represent phonemes which are fed to the voice synthesizer. vsp(VII) gives the encoding. .in -5 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 character 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. .a If bit 0 is on__, the erase will occur and displaying 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 continue. 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 picture. If button 8 is depressed, the display will ignore commands up to the next TTY label (whether or not its typing is suppressed) before resuming the displays. Thus a sequence of frames may be skipped. .sp .in 16 .ti 0 FILES /dev/vt0 .sp .ti 0 SEE ALSO csw(II), vsp(VII) .sp .ti 0 BUGS Two users using vt0 simultaneously can interfere with each other, e.g. plot phonemes or speak display coordinates.