This is version 2 of this patch. Version one still had a few bugs in it. The PC console driver (PCVT) has two bugs. Display problems can result if reverse video mode is turned on or off twice in a row. This patch also fixes a problem with scrolling region handling that has been seen by many users trying to use the BitchX irc client with the screen program. Apply by doing: cd /usr/src patch -p0 < 014_pcvt.patch And then rebuild your kernel. Index: sys/arch/i386/isa/pcvt/pcvt_out.c =================================================================== RCS file: /cvs/src/sys/arch/i386/isa/pcvt/pcvt_out.c,v retrieving revision 1.21 retrieving revision 1.25 diff -u -r1.21 -r1.25 --- sys/arch/i386/isa/pcvt/pcvt_out.c 2000/04/09 20:21:30 1.21 +++ sys/arch/i386/isa/pcvt/pcvt_out.c 2000/07/05 03:10:34 1.25 @@ -1,4 +1,4 @@ -/* $OpenBSD: pcvt_out.c,v 1.21 2000/04/09 20:21:30 aaron Exp $ */ +/* $OpenBSD: pcvt_out.c,v 1.25 2000/07/05 03:10:34 aaron Exp $ */ /* * Copyright (c) 1992, 1995 Hellmuth Michaelis and Joerg Wunsch. @@ -216,12 +216,10 @@ } if(svsp->lnm) { svsp->cur_offset -= svsp->col; - svsp->cur_offset += svsp->maxcol; svsp->col = 0; } - else { - svsp->cur_offset += svsp->maxcol; - } + svsp->row = svsp->cur_offset / svsp->maxcol; + svsp->cur_offset += svsp->maxcol; check_scroll(svsp); break; @@ -358,6 +356,7 @@ if (svsp->lastchar && svsp->m_awm && (svsp->lastrow == svsp->row)) { + svsp->row = svsp->cur_offset / svsp->maxcol; svsp->cur_offset++; svsp->col = 0; svsp->lastchar = 0; @@ -1304,7 +1303,7 @@ { /* we write within scroll region */ - if(svsp->cur_offset >= ((svsp->scrr_end + 1) * svsp->maxcol)) + if(svsp->row == svsp->scrr_end) { /* the following piece of code has to be protected */ /* from trying to switch to another virtual screen */ Index: sys/arch/i386/isa/pcvt/pcvt_vtf.c =================================================================== RCS file: /cvs/src/sys/arch/i386/isa/pcvt/pcvt_vtf.c,v retrieving revision 1.15 retrieving revision 1.16 diff -u -r1.15 -r1.16 --- sys/arch/i386/isa/pcvt/pcvt_vtf.c 2000/04/12 13:20:41 1.15 +++ sys/arch/i386/isa/pcvt/pcvt_vtf.c 2000/05/31 23:31:42 1.16 @@ -1,4 +1,4 @@ -/* $OpenBSD: pcvt_vtf.c,v 1.15 2000/04/12 13:20:41 aaron Exp $ */ +/* $OpenBSD: pcvt_vtf.c,v 1.16 2000/05/31 23:31:42 aaron Exp $ */ /* * Copyright (c) 1992, 1995 Hellmuth Michaelis and Joerg Wunsch. @@ -182,8 +182,7 @@ break; case 7: /* reverse */ - svsp->vtsgr |= VT_INVERSE; - if (pcdisp) { + if (pcdisp && !(svsp->vtsgr & VT_INVERSE)) { if ((setcolor >> 8) == 0) setcolor = (FG_LIGHTGREY << 8); setcolor = (((setcolor >> 8) & 0x88) | @@ -191,6 +190,7 @@ ((setcolor >> 8) << 4)) & 0x77)) << 8; colortouched = 1; } + svsp->vtsgr |= VT_INVERSE; break; case 22: /* not bold */ @@ -218,13 +218,13 @@ break; case 27: /* not reverse */ - svsp->vtsgr &= ~VT_INVERSE; - if (pcdisp) { + if (pcdisp && (svsp->vtsgr & VT_INVERSE)) { setcolor = (((setcolor >> 8) & 0x88) | ((((setcolor >> 8) >> 4) | ((setcolor >> 8) << 4)) & 0x77)) << 8; colortouched = 1; } + svsp->vtsgr &= ~VT_INVERSE; break; case 30: /* foreground colors */