mirror of https://github.com/macssh/macssh.git
added other ANSI replies
This commit is contained in:
parent
b758a6fd77
commit
17806778fe
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue