home *** CD-ROM | disk | FTP | other *** search
- /*
- * The functions in this file
- * handle redisplay. There are two halves,
- * the ones that update the virtual display
- * screen, and the ones that make the physical
- * display screen the same as the virtual
- * display screen. These functions use hints
- * that are left in the windows by the
- * commands.
- */
- #include "medisp.h"
-
- /*
- * Set the virtual cursor to
- * the specified row and column on the
- * virtual screen. There is no checking for
- * nonsense values; this might be a good
- * idea during the early stages.
- */
- vtmove(row, col)
- int row, col;
- {
- vtrow = row;
- vtcol = col;
- }
-
- /*
- * Write a character to the
- * virtual screen. The virtual row and
- * column are updated. If the line is too
- * long put a "$" in the last column.
- * This routine only puts printing characters
- * into the virtual terminal buffers.
- * Only column overflow is checked.
- */
- vtputc(c)
- int c;
- {
- register char *vp;
-
- if (vtcol >= 80)
- { vscreen[vtrow]->v_text[79] = '$';
- return 0;
- }
- if ( isinsert( c ))
- { vscreen[vtrow]->v_text[vtcol++] = c;
- return 1;
- }
- vp = &vscreen[vtrow]->v_text[vtcol];
- if (c == '\t')
- { do
- { *(vp++) = ' ';
- } while (( ++vtcol & 7 ) && vtcol < 80);
- } else
- { *(vp++) = '^';
- *vp = (c ^ 0x40);
- vtcol += 2;
- }
- return 1;
- }
-
- /*
- * Erase from the end of the
- * software cursor to the end of the
- * line on which the software cursor is
- * located.
- */
- vteeol()
- { clear( &vscreen[vtrow]->v_text[vtcol],
- 80 - vtcol, ' ' );
- }