/*
* $Log$
+ * Revision 1.3 2008/02/04 05:45:55 james
+ * ::
+ *
* Revision 1.2 2008/02/04 02:05:06 james
* *** empty log message ***
*
write (a->fd, buf, n);
}
+void
+ansi_getsize(ANSI *a)
+{
+struct winsize sz={0};
+if (ioctl(a->fd,TIOCGWINSZ,&sz)) {
+ a->size.x=CRT_COLS;
+ a->size.y=CRT_ROWS;
+} else {
+ a->size.x=sz.ws_col;
+ a->size.y=sz.ws_row;
+}
+
+}
void
}
else
{
- n = snprintf (buf, sizeof (buf), "\033[%d;%dHF", p.y + 1, p.x + 1);
+ n = snprintf (buf, sizeof (buf), "\033[%d;%dH", p.y + 1, p.x + 1);
ansi_write (a, buf, n);
}
}
else
{
- n = snprintf (buf, sizeof (buf), "\033[%d;%dHF", p.y + 1, p.x + 1);
+ n = snprintf (buf, sizeof (buf), "\033[%d;%dH", p.y + 1, p.x + 1);
ansi_write (a, buf, n);
}
if (hide)
{
- ansi_write (a, "\033[?25h", 6);
+ ansi_write (a, "\033[?25l", 6);
}
else
{
- ansi_write (a, "\033[?25l", 6);
+ ansi_write (a, "\033[?25h", 6);
}
a->hide_cursor = hide;
void
ansi_reset (ANSI * a)
{
- ansi_write (a, "\033[c", 3);
+// FIXME: -- echos back crap?
+// ansi_write (a, "\033[c", 3);
+ ansi_getsize(a);
a->pos.x = ANSI_INVAL;
a->hide_cursor = ANSI_INVAL;
/*
* $Log$
+ * Revision 1.3 2008/02/04 05:45:55 james
+ * ::
+ *
* Revision 1.2 2008/02/04 02:05:06 james
* *** empty log message ***
*
*/
#include "project.h"
+
+struct termios old={0};
+
+static void foo(int not)
+{
+ tcsetattr(0,TCSANOW,&old);
+ exit(1);
+}
+
+
+void
+testy (void)
+{
+ struct termios raw={0};
+ VT102 v = { 0 };
+ ANSI a = { 0 };
+ fd_set rfd;
+ int fd;
+ char c;
+
+
+ signal(SIGINT,foo);
+
+ tcgetattr(0,&old);
+ tcgetattr(0,&raw);
+ cfmakeraw(&raw);
+ tcsetattr(0,TCSANOW,&raw);
+
+ a.fd = 1;
+
+//vt102_reset(&v);
+ ansi_reset (&a);
+
+
+ fd = open_fd_to_bash ();
+
+ FD_ZERO (&rfd);
+
+
+ for (;;)
+ {
+ FD_SET (fd, &rfd);
+ FD_SET (0, &rfd);
+ if (select (fd + 1, &rfd, NULL, NULL, NULL) <= 0)
+ continue;
+ if (FD_ISSET (0, &rfd))
+ {
+ read (0, &c, 1);
+ if (c==3) {
+ tcsetattr(0,TCSANOW,&old);
+ exit(1);
+ }
+
+ write (fd, &c, 1);
+ }
+ if (FD_ISSET (fd, &rfd))
+ {
+ read (fd, &c, 1);
+ //write (1, &c, 1);
+ vt102_parse_char (&v, c);
+ ansi_draw (&a, &v.crt);
+ }
+ }
+}
/*
* $Log$
+ * Revision 1.3 2008/02/04 05:45:55 james
+ * ::
+ *
* Revision 1.2 2008/02/04 02:05:06 james
* *** empty log message ***
*
#include <termio.h>
#include <termios.h>
+#include <signal.h>
+
+#include <utmp.h>
+#include <pty.h>
#include "crt.h"
#include "ansi.h"
/*
* $Log$
+ * Revision 1.4 2008/02/04 05:45:55 james
+ * ::
+ *
* Revision 1.3 2008/02/04 02:05:06 james
* *** empty log message ***
*
return 0;
}
+void vt102_scroll(VT102 *v,int start,int end)
+{
+
+}
+
void
vt102_cursor_normalize (VT102 * v, int wrap, int scroll)
{
}
}
+void vt102_parse_esc(VT102 *v,int c)
+{
+fprintf(stderr, "ESC %d(%c)\n",c,c);
+}
+
+void vt102_parse_csi(VT102 *v,char *buf,int len)
+{
+buf[len]=0;
+fprintf(stderr, "CSI %s\n",buf);
+}
void
vt102_parse_char (VT102 * v, int c)
{
VT102_parser *p = &v->parser;
-
+ fprintf(stderr,"%c pc %d %d %d %d %d\n",c,c,p->in_csi,p->in_escape,v->pos.x,v->pos.y);
if (p->in_csi)
{
p->csi_buf[p->csi_ptr++] = c;
vt102_cursor_motion (v, 1, 0, 1, 1);
}
}
+
+ v->crt.pos=v->pos;
}