PERFORCE change 78473 for review
Marcel Moolenaar
marcel at FreeBSD.org
Sun Jun 12 23:47:15 GMT 2005
http://perforce.freebsd.org/chv.cgi?CH=78473
Change 78473 by marcel at marcel_nfs on 2005/06/12 23:47:02
Fix the tests that deal with scrolling. Improve the handling
of wrap-around, although it's not completely fixed. This will
be finished when vttest can be run, which requires input.
Affected files ...
.. //depot/projects/tty/sys/dev/vtc/vtc_te_vt102.c#4 edit
Differences ...
==== //depot/projects/tty/sys/dev/vtc/vtc_te_vt102.c#4 (text+ko) ====
@@ -83,17 +83,20 @@
static __inline int
vt102_repos(struct vt102_softc *vt102)
{
+ int col;
- vt102->wrap = 0;
+ col = vt102->col;
+ if (col == vt102->maxcol)
+ col--;
return (vtc_te_repos(&vt102->base, vt102->row << vt102->dh,
- vt102->col << vt102->dw));
+ col << vt102->dw));
}
static __inline int
vt102_newline(struct vt102_softc *vt102)
{
- if (vt102->row == vt102->maxrow)
+ if (vt102->row == vt102->maxrow - 1)
return (vtc_te_scroll(&vt102->base, 0, 0,
vt102->maxrow << vt102->dh, vt102->maxcol << vt102->dw,
1 << vt102->dh));
@@ -113,16 +116,17 @@
if (vt102->autowrap && vt102->wrap) {
vt102->col = 0;
+ vt102->wrap = 0;
vt102_newline(vt102);
}
- vt102_putc(vt102, wc);
- vt102->col++;
- if (vt102->col > vt102->maxcol) {
- vt102->col = vt102->maxcol;
- if (vt102->autowrap)
+ if (vt102->col < vt102->maxcol) {
+ vt102_putc(vt102, wc);
+ vt102->col++;
+ if (vt102->col == vt102->maxcol && vt102->autowrap)
vt102->wrap = 1;
- } else
- vt102_repos(vt102);
+ else
+ vt102_repos(vt102);
+ }
return (0);
}
@@ -141,15 +145,23 @@
case 0x08: /* BS */
if (vt102->col > 0) {
vt102->col--;
+ vt102->wrap = 0;
vt102_putc(vt102, ' ');
vt102_repos(vt102);
}
break;
case 0x09: /* HT */
+ if (vt102->autowrap && vt102->wrap) {
+ vt102->col = 0;
+ vt102->wrap = 0;
+ vt102_newline(vt102);
+ }
if (vt102->col < vt102->maxcol) {
vt102->col = (vt102->col + 8) & ~7;
if (vt102->col > vt102->maxcol)
vt102->col = vt102->maxcol;
+ if (vt102->col == vt102->maxcol && vt102->autowrap)
+ vt102->wrap = 1;
vt102_repos(vt102);
}
break;
@@ -161,6 +173,7 @@
case 0x0D: /* CR */
if (vt102->col > 0) {
vt102->col = 0;
+ vt102->wrap = 0;
vt102_repos(vt102);
}
break;
More information about the p4-projects
mailing list