Annotation of researchv10dc/630/man/src/p_man/man3/lputchar.3l, revision 1.1.1.1

1.1       root        1: .TH LPUTCHAR 3L "630 MTG"
                      2: .SH NAME
                      3: lputchar \- 630 MTG local putchar function
                      4: .SH SYNOPSIS
                      5: .ft B
                      6: void lputchar (c)
                      7: .br
                      8: \f3char c; \f1
                      9: .ft R
                     10: .SH DESCRIPTION
                     11: \fILputchar\fR is
                     12: syntactically equivalent to the UNIX standard I/O putchar function.
                     13: It can be called by downloaded application programs who
                     14: want to display characters within their window on the 630 MTG screen.
                     15: Where (within the applications window) characters are displayed can be
                     16: affected with the \fImoveto\fR(3L) function.
                     17: .I Lputchar
                     18: calls the
                     19: .I moveto
                     20: routine to update the \fIcurrent screen point \fR after it
                     21: displays the charcter \fIc\fR.
                     22: .PP
                     23: 
                     24: How characters are eventually
                     25: displayed on a user's terminal when using the UNIX putchar function
                     26: is affected by the UNIX host \fIstty\fR(1) settings
                     27: and the user's terminal characteristics.
                     28: Since \fIlputchar\fR displays directly onto the 630 MTG
                     29: screen, assumptions were made about desired \fIstty\fR
                     30: settings. In general, \fIlputchar\fR does as little processing on
                     31: the output stream as practical. 
                     32: If more extensive processing of control characters is needed, it can
                     33: be accomplished as shown in the example program below.
                     34: .P
                     35: The following are the only control characters processed by \fIlputchar\fR.
                     36: All other characters will be displayed as \fBASCII\fR characters:
                     37: .TP
                     38: .B \er
                     39: Carriage Return. Move the current point to the left edge of the window.
                     40: .TP
                     41: .B \en
                     42: Newline. Move the current point down one line and to the left edge of the 
                     43: window. Scroll the window if necessary.
                     44: .TP
                     45: .B \et
                     46: Horizontal tab. Tab characters are expanded to spaces with tab stops at every
                     47: eighth space.
                     48: .SH EXAMPLE
                     49: .LP
                     50: If an application program wanted to, for example, process bells and
                     51: backspaces rather than display the \fBASCII\fR bell and backspace
                     52: characters, it could define a function \fImylputchar\fR as follows:
                     53: .PP
                     54: .RS 3
                     55: .ft CM
                     56: .S -2
                     57: .nf
                     58: #include <dmd.h>
                     59: #include <font.h>
                     60: 
                     61: void lputchar();
                     62: void moveto();
                     63: void ringbell();
                     64: Point sPtCurrent();
                     65: 
                     66: mylputchar(c)
                     67: char c;
                     68: {
                     69:        Point curpos;
                     70: 
                     71:        switch( c ) {
                     72:        case '\e007':
                     73:                ringbell();
                     74:                break;
                     75:        case '\eb':
                     76:                /* get the current position
                     77:                ** if( not already at the left edge of the
                     78:                **      window ) {
                     79:                **      move back one character position
                     80:                **      lputchar a space to erase the last
                     81:                **      character and move back again
                     82:                ** }
                     83:                */
                     84:                curpos = sPtCurrent();
                     85:                if(curpos.x - FONTWIDTH(largefont)
                     86:                    >= Drect.origin.x) {
                     87:                        curpos.x -= FONTWIDTH(largefont);
                     88:                        moveto(curpos);
                     89:                        lputchar(' ');
                     90:                        moveto(curpos);
                     91:                }
                     92:                break;
                     93:        default:
                     94:                lputchar(c);
                     95:                break;
                     96:        }
                     97: }
                     98: .fi
                     99: .ft R
                    100: .RE
                    101: .S +2
                    102: .SH SEE ALSO
                    103: bputchar(3L), moveto(3L), printf(3L), structures(3R).
                    104: .br
                    105: stty(1) in the \fIUNIX System V User's Reference Manual\fR.
                    106: .br
                    107: putc(3S) in the \fIUNIX System V Programmer's Reference Manual\fR.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.