added other ANSI replies

This commit is contained in:
chombier 2001-04-27 15:40:45 +00:00
parent b758a6fd77
commit 17806778fe
3 changed files with 252 additions and 188 deletions

View File

@ -580,7 +580,8 @@ void VSredrawLine(short w) //redraws current line
if (VSvalids(w) != 0)
return;
VSredraw(w, 0, VSIw->y,VSIw->maxwidth, VSIw->y);
VSIcuroff(w);
if (VSIcursorvisible())
VSIcuroff(w);
}
@ -626,8 +627,8 @@ short VSredraw
if (VSIclip(&tx1, &ty1, &tx2, &ty2, &tn, &offset)!=0) return 0; // test clip region
VSIcuroff(w); // temporarily hide cursor
RSerase(w, tx1, ty1, tx2, ty2); // Erase the offending area
if (VSIcursorenabled())
VSIcuroff(w); // temporarily hide cursor
// draw visible part of scrollback buffer
if (y1 < 0) {
@ -710,7 +711,8 @@ short VSredraw
}
}
VSIcurson(w, VSIw->x, VSIw->y, 0); /* restore cursor at original position */
if (VSIcursorenabled())
VSIcurson(w, VSIw->x, VSIw->y, 0); /* restore cursor at original position */
return(0);
} /* VSredraw */
@ -754,7 +756,9 @@ short VSOredraw
if (VSIclip(&tx1, &ty1, &tx2, &ty2, &tn, &offset)!=0) return 0; // test clip region
VSIcuroff(w); // temporarily hide cursor
if (VSIcursorenabled())
VSIcuroff(w); // temporarily hide cursor
RSerase(w, tx1, ty1, tx2, ty2); // Erase the offending area
// draw visible part of scrollback buffer
@ -820,7 +824,8 @@ short VSOredraw
}
}
VSIcurson(w, VSIw->x, VSIw->y, 0); /* restore cursor at original position */
if (VSIcursorenabled())
VSIcurson(w, VSIw->x, VSIw->y, 0); /* restore cursor at original position */
return(0);
} /* VSOredraw */
@ -839,12 +844,14 @@ short VSwrite
return 0;
if (VSvalids(w) != 0)
return(-3);
VSIcuroff(w); /* hide cursor momentarily */
if (VSIcursorenabled())
VSIcuroff(w); /* hide cursor momentarily */
VSIcursdisable(); // RAB BetterTelnet 2.0b4
VSem((unsigned char *) ptr, len); /* BYU LSC - interpret the character stream */
VSIflush(); // RAB BetterTelnet 2.0b3
VSIcursenable();
VSIcurson(w, VSIw->x, VSIw->y, 1); /* restore cursor, force it to be visible. */
if (VSIcursorenabled())
VSIcurson(w, VSIw->x, VSIw->y, 1); /* restore cursor, force it to be visible. */
// _profile = 0;
return(0);
} /* VSwrite */
@ -865,7 +872,8 @@ short VSwritefast
return 0;
if (VSvalids(w) != 0)
return(-3);
VSIcuroff(w); /* hide cursor momentarily */
if (VSIcursorenabled())
VSIcuroff(w); /* hide cursor momentarily */
VSIcursdisable();
VSem((unsigned char *) ptr, len); /* BYU LSC - interpret the character stream */
@ -885,7 +893,8 @@ void VSflushwrite(short w) {
VSIflush();
VSIcursenable();
VSIcurson(w, VSIw->x, VSIw->y, 1);
if (VSIcursorenabled())
VSIcurson(w, VSIw->x, VSIw->y, 1);
}
// Utility routine: BetterTelnet 1.0fc3 (RAB)
@ -980,10 +989,12 @@ void VSpossendEM // MAT--we can change this to support EMACS
// MAT--
if (0) //(note: supposed to look for "echo" here) // MAT--
{ // MAT--
VSIcuroff(w); // MAT--
if (VSIcursorenabled())
VSIcuroff(w); // MAT--
VSIw->x = x; // MAT--
VSIw->y = y; // MAT--
VSIcurson(w, VSIw->x, VSIw->y, 1); /* Force Move */ // MAT--
if (VSIcursorenabled())
VSIcurson(w, VSIw->x, VSIw->y, 1); /* Force Move */ // MAT--
} /* if */ // MAT--
} /* VSpossendEM */ // changed comment // MAT--
@ -1051,10 +1062,12 @@ void VSpossend
if (echo)
{
VSIcuroff(w);
if (VSIcursorenabled())
VSIcuroff(w);
VSIw->x = x;
VSIw->y = y;
VSIcurson(w, VSIw->x, VSIw->y, 1); /* Force Move */
if (VSIcursorenabled())
VSIcurson(w, VSIw->x, VSIw->y, 1); /* Force Move */
} /* if */
} /* VSpossend */
@ -1180,9 +1193,11 @@ short VSreset
{
if (VSvalids(w) != 0)
return(-3);
VSIcuroff(w); /* NCSA: SB -- get rid of extraneous cursor BS */
if (VSIcursorenabled())
VSIcuroff(w); /* NCSA: SB -- get rid of extraneous cursor BS */
VSIreset(); /* causes cursor to disappear */
VSIcurson(w, VSIw->x, VSIw->y, 1); /* redisplay cursor at home position */
if (VSIcursorenabled())
VSIcurson(w, VSIw->x, VSIw->y, 1); /* redisplay cursor at home position */
return(0);
} /* VSreset */
@ -1206,13 +1221,15 @@ void VSscrolright
if (n == 0)
return; /* Do nothing if appropriate */
VSIcuroff(w); /* temporarily hide cursor */
if (VSIcursorenabled())
VSIcuroff(w); /* temporarily hide cursor */
VSIw->Rleft += n; /* update visible region */
VSIw->Rright += n;
sn = VSIw->Rbottom - VSIw->Rtop;
RSmargininfo(w, lmmax, VSIw->Rleft); /* update horizontal scroll bar */
RSdelcols(w, n); /* scroll the window contents */
VSIcurson(w, VSIw->x, VSIw->y, 0); /* restore cursor at original position */
if (VSIcursorenabled())
VSIcurson(w, VSIw->x, VSIw->y, 0); /* restore cursor at original position */
/* redraw newly-revealed portion of screen */
VSredraw(w, (VSIw->Rright - VSIw->Rleft) - n, 0, (VSIw->Rright - VSIw->Rleft), sn);
} /* VSscrolright */
@ -1237,13 +1254,15 @@ void VSscrolleft
if (n == 0)
return; /* Do nothing if appropriate */
VSIcuroff(w); /* temporarily hide cursor */
if (VSIcursorenabled())
VSIcuroff(w); /* temporarily hide cursor */
VSIw->Rleft -= n; /* update visible region */
VSIw->Rright -= n;
sn = VSIw->Rbottom - VSIw->Rtop;
RSmargininfo(w, lmmax, VSIw->Rleft); /* update horizontal scroll bar */
RSinscols(w, n); /* scroll the window contents */
VSIcurson(w, VSIw->x, VSIw->y, 0); /* restore cursor at original position */
if (VSIcursorenabled())
VSIcurson(w, VSIw->x, VSIw->y, 0); /* restore cursor at original position */
VSredraw(w, 0, 0, n, sn); /* redraw newly-revealed portion of screen */
} /* VSscrolleft */
@ -1275,7 +1294,8 @@ short VSscrolback
if (n <= 0)
return(0); /* Dont be scrollin' no lines.... */
VSIcuroff(w); /* temporarily hide cursor */
if (VSIcursorenabled())
VSIcuroff(w); /* temporarily hide cursor */
VSIw->Rtop = VSIw->Rtop - n; /* adjust the visible region */
VSIw->Rbottom = VSIw->Rbottom - n;
@ -1298,7 +1318,8 @@ short VSscrolback
if (n <= VSIw->lines)
{
RSinslines(w, 0, sn, n, 0); /* scroll, preserving current selection */
VSIcurson(w, VSIw->x, VSIw->y, 0); /* restore cursor at original position */
if (VSIcursorenabled())
VSIcurson(w, VSIw->x, VSIw->y, 0); /* restore cursor at original position */
VSredraw(w, 0, 0, VSIw->maxwidth, n - 1); /* redraw newly-revealed portion */
}
else {
@ -1328,7 +1349,8 @@ short VSscrolforward
if (n <= 0)
return(0); /* Dont be scrollin' no lines.... */
VSIcuroff(w); /* temporarily hide cursor */
if (VSIcursorenabled())
VSIcuroff(w); /* temporarily hide cursor */
VSIw->Rtop = n + VSIw->Rtop; /* adjust the visible region */
VSIw->Rbottom = n + VSIw->Rbottom;
@ -1351,7 +1373,8 @@ short VSscrolforward
if (n <= VSIw->lines)
{
RSdellines(w, 0, sn, n, 0); /* scroll, preserving current selection */
VSIcurson(w, VSIw->x, VSIw->y, 0); /* restore cursor at original position */
if (VSIcursorenabled())
VSIcurson(w, VSIw->x, VSIw->y, 0); /* restore cursor at original position */
VSredraw(w, 0, (sn + 1) - n, VSIw->maxwidth, sn); /* redraw newly-revealed portion */
} /* if */
else {
@ -1722,7 +1745,8 @@ short VSsetlines
VSIw->x = 0;
VSIw->y = 0;
VSIcurson(w, VSIw->x, VSIw->y, 1); /* keeps cursor from pointing outside of window */
if (VSIcursorenabled())
VSIcurson(w, VSIw->x, VSIw->y, 1); /* keeps cursor from pointing outside of window */
VSIw->vistop = VSIw->scrntop; /* Force view to the top of the screen */
@ -1857,7 +1881,8 @@ short VSOsetlines
VSIw->x = 0;
VSIw->y = 0;
VSIcurson(w, VSIw->x, VSIw->y, 1); /* keeps cursor from pointing outside of window */
if (VSIcursorenabled())
VSIcurson(w, VSIw->x, VSIw->y, 1); /* keeps cursor from pointing outside of window */
VSIw->vistop = VSIw->scrntop; /* Force view to the top of the screen */
@ -2023,18 +2048,24 @@ short VSgetcols(short w) /* NCSA: SB */
// DJ: VSPulseAll is an attempt to JUST do the blinkers.
// VSPulseOne redraws one window with a different RS call. Still huge overkill....but oh well.
short VSPulseOne(short w, short x1, short y1,short x2, short y2);
void VSPulseAll(void)
{
short i;
for(i=0; i < VSmax; i++)
if ((VSscreens[i].stat == 1) && (VSscreens[i].loc->realBlink))
for ( i=0; i < VSmax; i++ )
if ( VSscreens[i].stat == 1 && VSscreens[i].loc->realBlink )
VSPulseOne(i, 0, 0,
(VSscreens[i].loc->Rright - VSscreens[i].loc->Rleft), ( VSscreens[i].loc->Rbottom - VSscreens[i].loc->Rtop));
VSscreens[i].loc->maxwidth, VSscreens[i].loc->lines);
/*
VSscreens[i].loc->Rright - VSscreens[i].loc->Rleft,
VSscreens[i].loc->Rbottom - VSscreens[i].loc->Rtop);
*/
}
short VSPulseOne
(
short w, // window to redraw */
short w, // window to redraw
short x1,
short y1,
short x2,
@ -2076,77 +2107,67 @@ short VSPulseOne
if (VSIclip(&tx1, &ty1, &tx2, &ty2, &tn, &offset)!=0) return 0; // test clip region
cursOff = 0;
// VSIcuroff(w); // temporarily hide cursor // Nah [NONO] (flicker)
// RSerase(w, tx1, ty1, tx2, ty2); // Erase the offending area // Nah [DJ] (flicker)
RSa = -1;
cursOff = 0;
// draw visible part of scrollback buffer
tx1 = x1; // Set up to clip redraw area to visible area of scrollback buffer
tx2 = x2;
ty1 = y1;
ty2 = y2; // RAB
tn = -1;
// RAB BetterTelnet 2.0fc1 - DJ wrote this, but I had to revise it to cover
// the "new" attributes-in-scrollback scenario
ypt = VSIw->vistop;
for(y=VSIw->Rtop; y<y1; y++)
ypt = ypt->next; // Get pointer to top line we need
if (!VSIclip(&tx1, &ty1, &tx2, &ty2, &tn, &offset)) {
ypt = VSIw->vistop;
for(y=VSIw->Rtop; y<y1; y++)
ypt = ypt->next; // Get pointer to top line we need
for (y=ty1; y<=ty2; y++) {
char *pt;
VSAttrib *pa;
VSAttrib lasta;
short x, lastx;
for (y=ty1; y<=ty2; y++) {
char *pt;
VSAttrib *pa;
VSAttrib lasta;
short x, lastx;
pt = ypt->text + VSIw->Rleft;
pa = ypt->attr + VSIw->Rleft;
pt = ypt->text + VSIw->Rleft;
pa = ypt->attr + VSIw->Rleft;
lastx = tx1;
lasta = pa[tx1];
for(x=tx1+1; x<=tx2; x++) {
if (pa[x]!=lasta && (VSisblnk(lasta) || VSisfastblnk(lasta))) { // Ahah! [DJ]
if (!cursOff) {
lastx = tx1;
lasta = pa[tx1];
for( x = tx1+1; x <= tx2; x++ ) {
if ( pa[x] != lasta ) {
if ( VSisblnk(lasta) ) {
if ( y == VSIw->y && lastx <= VSIw->x && VSIw->x <= x && VSIcursorvisible()) {
// temporarily hide cursor
cursOff = 1;
VSIcuroff(w);
}
RSa = 0; // RAB - shouldn't be necessary, but...
RSdraw(w, lastx, y, lasta, x-lastx, pt + lastx);
lastx = x;
lasta = pa[x];
if ( cursOff ) {
// restore cursor at original position
cursOff = 0;
VSIcurson(w, VSIw->x, VSIw->y, 0);
}
}
lastx = x;
lasta = pa[x];
}
if (lastx<=tx2 && (VSisblnk(lasta) || VSisfastblnk(lasta))) { // Ditto [DJ]
if (!cursOff) {
// temporarily hide cursor
cursOff = 1;
VSIcuroff(w);
}
RSa = 0;
RSdraw(w, lastx, y, lasta, tx2-lastx+1, pt + lastx);
}
ypt = ypt->next;
}
if ( lastx <= tx2 && VSisblnk(lasta) ) {
if ( y == VSIw->y && lastx <= VSIw->x && VSIw->x <= x && VSIcursorvisible() ) {
// temporarily hide cursor
cursOff = 1;
VSIcuroff(w);
}
RSdraw(w, lastx, y, lasta, tx2-lastx+1, pt + lastx);
if ( cursOff ) {
// restore cursor at original position
cursOff = 0;
VSIcurson(w, VSIw->x, VSIw->y, 0);
}
}
ypt = ypt->next;
}
if ( cursOff ) {
VSIcurson(w, VSIw->x, VSIw->y, 0); /* restore cursor at original position */
}
/* NONO */
/* ??? what is this for ???
tx1 = ty1 = 0;
tn = 132;
*/
/* NONO */
return(0);
return 0;
}
short VSOPulseOne
(
short w, // window to redraw */
short w, // window to redraw
short x1,
short y1,
short x2,
@ -2185,32 +2206,10 @@ short VSOPulseOne
if (VSIclip(&tx1, &ty1, &tx2, &ty2, &tn, &offset)!=0) return 0; // test clip region
RSa = -1;
cursOff = 0;
// VSIcuroff(w); // temporarily hide cursor // Nah [NONO] (flicker)
// RSerase(w, tx1, ty1, tx2, ty2); // Erase the offending area // Nah [DJ] (flicker)
/*
// draw visible part of scrollback buffer
if (y1 < 0) {
tx1 = x1; // Set up to clip redraw area to visible area of scrollback buffer
tx2 = x2;
ty1 = y1;
ty2 = (y2>=0) ? -1 : y2;
tn = -1;
if (!VSIclip(&tx1, &ty1, &tx2, &ty2, &tn, &offset)) {
ypt = VSIw->vistop;
for(y=VSIw->Rtop; y<y1; y++)
ypt = ypt->next; // Get pointer to top line we need
for (y=ty1; y<=ty2; y++) {
RSdraw(w, tx1, y, 0, tn, ypt->text + VSIw->Rleft +tx1);
ypt = ypt->next;
}
}
y1 = 0; // continue with on-screen buffer, if any
}
*/
if(y1<0) y1=0;
// draw visible part of on-screen buffer, taking account of attributes
if (y2 >= 0) {
@ -2237,42 +2236,42 @@ short VSOPulseOne
lastx = tx1;
lasta = pa[tx1];
for(x=tx1+1; x<=tx2; x++) {
if (pa[x]!=lasta && (VSisblnk(lasta) || VSisfastblnk(lasta))) { // Ahah! [DJ]
if (!cursOff) {
// temporarily hide cursor
cursOff = 1;
VSIcuroff(w);
for( x = tx1+1; x <= tx2; x++ ) {
if ( pa[x] != lasta ) {
if ( VSisblnk(lasta) ) {
if ( y == VSIw->y && lastx <= VSIw->x && VSIw->x <= x && VSIcursorvisible() ) {
// temporarily hide cursor
cursOff = 1;
VSIcuroff(w);
}
RSdraw(w, lastx, y, lasta, x-lastx, pt + lastx);
if ( cursOff ) {
// restore cursor at original position
cursOff = 0;
VSIcurson(w, VSIw->x, VSIw->y, 0);
}
}
RSa = 0;
RSdraw(w, lastx, y, lasta, x-lastx, pt + lastx);
lastx = x;
lasta = pa[x];
}
}
if (lastx<=tx2 && (VSisblnk(lasta) || VSisfastblnk(lasta))) { // Ditto [DJ]
if (!cursOff) {
if ( lastx <= tx2 && VSisblnk(lasta) ) {
if ( y == VSIw->y && lastx <= VSIw->x && VSIw->x <= x && VSIcursorvisible() ) {
// temporarily hide cursor
cursOff = 1;
VSIcuroff(w);
}
RSa = 0;
RSdraw(w, lastx, y, lasta, tx2-lastx+1, pt + lastx);
if ( cursOff ) {
// restore cursor at original position
cursOff = 0;
VSIcurson(w, VSIw->x, VSIw->y, 0);
}
}
ypt = ypt->next;
ypa = ypa->next;
}
}
}
if ( cursOff ) {
VSIcurson(w, VSIw->x, VSIw->y, 0); /* restore cursor at original position */
}
/* NONO */
/* ??? what is this for ???
tx1 = ty1 = 0;
tn = 132;
*/
/* NONO */
return(0);
}
return 0;
}

View File

@ -37,17 +37,21 @@
#include "maclook.proto.h"
#include "wind.h"
#include "rsdefs.h"
#include "Vers.h"
#define ScrollbackQuantum 100
#define VSIclrattrib 0
//#define VSIclrattrib 0
#define VSIclrattrib VSIw->attrib
#include "vsintern.proto.h"
extern short TempItemsVRefNum;
extern long TempItemsDirID;
extern WindRec *screens;
extern RSdata *RSlocal;
extern WindRec *screens;
extern RSdata *RSlocal;
short VSIclip
(
@ -225,27 +229,33 @@ void VSIcursenable()
VSIw->disableCursor = 0;
}
short VSIcursorvisible /* BYU 2.4.12 */
( /* BYU 2.4.12 */
void /* BYU 2.4.12 */
) /* BYU 2.4.12 */
{ /* BYU 2.4.12 */
short /* BYU 2.4.12 */
x = VSIw->x, /* BYU 2.4.12 */
y = VSIw->y, /* BYU 2.4.12 */
x2, /* BYU 2.4.12 */
y2, /* BYU 2.4.12 */
n = 1, /* BYU 2.4.12 */
offset; /* BYU 2.4.12 */
short VSIcursorenabled( void )
{
if (!VSIw->DECCM)
return 0; // Bri 970610
if (VSIw->disableCursor)
return 0; // RAB BetterTelnet 2.0b4
if (!RSisInFront(VSIwn))
return 0;
return 1;
}
if (!VSIw->DECCM) return 0; // Bri 970610
if (VSIw->disableCursor) return 0; // RAB BetterTelnet 2.0b4
/* BYU 2.4.12 */
if (!VSIclip(&x, &y, &x2, &y2, &n, &offset)) /* BYU 2.4.12 */
return 1; /* BYU 2.4.12 */
else /* BYU 2.4.12 */
return 0; /* BYU 2.4.12 */
} /* BYU 2.4.12 */
short VSIcursorvisible( void )
{
short
x = VSIw->x,
y = VSIw->y,
x2,
y2,
n = 1,
offset;
if (!VSIcursorenabled())
return 0;
if (VSIclip(&x, &y, &x2, &y2, &n, &offset))
return 0;
return 1;
}
VSlineArray VSInewlinearray
(
@ -1710,13 +1720,10 @@ void VSIrange
)
/* constrains cursor position to valid range (somewhere on the screen). */
{
short
wrap = 0;
if (VSIw->DECAWM)
wrap = 1;
short wrap = (VSIw->DECAWM) ? 1 : 0;
if (VSIw->x < 0)
VSIw->x = 0;
if (VSIw->x > (VSIw->maxwidth + wrap))
if (VSIw->x > VSIw->maxwidth + wrap)
VSIw->x = VSIw->maxwidth + wrap;
if (VSIw->y < 0)
VSIw->y = 0;
@ -1724,52 +1731,105 @@ void VSIrange
VSIw->y = VSIw->lines;
} /* VSIrange */
void VTsendpos
(
void
)
/* sends an escape sequence representing the current cursor position. */
{
/*
* VTsendpos
*
* sends an escape sequence representing the current cursor position.
*/
void VTsendpos( void )
{
char
tempbuf[19];
short
x = VSIw->x,
y = VSIw->y;
if (x > VSIw->maxwidth)
{
/* autowrap pending */
if (x > VSIw->maxwidth) {
/* autowrap pending */
x = 0;
y++;
}
}
if (y > VSIw->lines)
/* scroll pending (because of the autowrap) */
/* scroll pending (because of the autowrap) */
y = VSIw->lines;
sprintf(tempbuf, "\033[%d;%dR", y + 1, x + 1);
RSsendstring(VSIwn, tempbuf, strlen(tempbuf));
} /* VTsendpos */
} /* VTsendpos */
void VTsendstat
(
void
)
/* sends the terminal status string. */
{
/*
* VTsendprintstat
*
* sends the printer status string.
*/
void VTsendprintstat( void )
{
/* FIXME: always ready... */
//RSsendstring(VSIwn, "\033[?13n", 6); /* no printer */
RSsendstring(VSIwn, "\033[?10n", 6); /* The printer is ready */
//RSsendstring(VSIwn, "\033[?11n", 6); /* The printer is not ready */
} /* VTsendprintstat */
/*
* VTsendudkstat
*
* sends the used defined key status string.
*/
void VTsendudkstat( void )
{
/* FIXME: always locked... */
RSsendstring(VSIwn, "\033[?21n", 6); /* User Defined Keys are locked */
//RSsendstring(VSIwn, "\033[?20n", 6); /* User Defined Keys are unlocked */
} /* VTsendudkstat */
/*
* VTsendstat
*
* sends the terminal status string.
*/
void VTsendstat( void )
{
RSsendstring(VSIwn, "\033[0n", 4);
} /* VTsendstat */
} /* VTsendstat */
void VTsendident
(
void
)
/* sends an appropriate terminal identification sequence. */
{
/*
* VTsendident
*
* sends an appropriate terminal identification sequence.
*/
void VTsendident( void )
{
if (screens[findbyVS(VSIwn)].vtemulation)
RSsendstring(VSIwn, "\033[?62;1;6c", 10); /* BYU 2.4.12 - VT200-series*/
else /* BYU 2.4.12 */
RSsendstring(VSIwn, "\033[?6c", 5); /* BYU 2.4.12 - VT102 */
} /* VTsendident */
//RSsendstring(VSIwn, "\033[?62;1;6c", 10); // VT200-series
RSsendstring(VSIwn, "\033[?62;1;2;6;7;8c", 16); // VT200-series
else
RSsendstring(VSIwn, "\033[?6c", 5); // VT102
} /* VTsendident */
/*
* VTsendsecondaryident
*
* sends an appropriate terminal identification sequence.
*/
void VTsendsecondaryident( void )
{
char identstr[64];
sprintf(identstr, "\033[>1;10;0c");
RSsendstring(VSIwn, identstr, strlen(identstr));
} /* VTsendsecondaryident */
void VTalign
(
@ -1860,6 +1920,7 @@ void VSIsetoption
case 7: /* autowrap mode */
VSIw->DECAWM = toggle;
break;
case 25: /* cursor mode */
VSIw->DECCM = toggle;
break;

View File

@ -7,6 +7,7 @@ short VSIcdellines(short w, short top, short bottom, short n, short scrolled);
short VSIcinslines(short w, short top, short bottom, short n, short scrolled);
void VSIcurson(short w, short x, short y, short ForceMove);
void VSIcuroff(short w);
short VSIcursorenabled( void );
short VSIcursorvisible(void);
VSlineArray VSInewlinearray(short nrlines);
VSlinePtr VSInewlines(short nlines);
@ -40,8 +41,11 @@ void VSIeeos(void);
void VSIebos(void);
void VSIrange(void);
void VTsendpos(void);
void VTsendprintstat(void);
void VTsendudkstat(void);
void VTsendstat(void);
void VTsendident(void);
void VTsendsecondaryident(void);
void VTalign(void);
void VSIapclear(void);
void VSIsetoption(short toggle);