nes) int nlines ; { register int temp ; int savecurline ; temp = *lochigh - nlines ; if ( nlines > 4 || temp <= 0 ) then { ref_screen() ; return(1) ; } else { while ( nlines > 0 ) { scmove() ; putbin(del_line,3) ; savecurline = *curline ; *curline = *lochigh ; scmove() ; *curline -= (nlines-1) ; scloadline() ; dumpworkbuffer() ; *curline = savecurline ; scloadline() ; scmove() ; nlines-- ; } if ( (_vtnolines & sts_one)==0 ) then redolines() ; } return(1) ; } static int dvt100(nlines) int nlines ; { register int temp,temp1 ; int savecurline ; temp = *lochigh - nlines ; if ( nlines > 3 || temp <= 0 ) then { ref_screen() ; return(1) ; } else { while ( nlines > 0 ) { scmove() ; lkill() ; temp = *curline - *loclow + 2 ; temp1 = *lochigh - *loclow + 3 ; setscrolling(temp,temp1) ; savecurline = *curline ; *curline = *lochigh ; scmove() ; putbin("\033[B\015\012\033[J",0) ; scmove() ; *curline -= (nlines-1) ; scloadline() ; dumpworkbuffer() ; *curline = savecurline ; nlines-- ; } setscrolling(2,23) ; if ( (_vtnolines & sts_one) == 0 ) then redolines() ; } return(1) ; } #define ESCAPE 033 setscrolling(lowline,highline) int lowline,highline; { char tbuffer[10] ; register char *cp ; if ( termtype != _VT100 ) then return(0) ; cp = tbuffer ; *cp++ = ESCAPE ; *cp++ = '[' ; *cp++ = ( lowline/10 ) + '0' ; *cp++ = ( lowline % 10 ) + '0' ; *cp++ = ';' ; *cp++ = ( highline/10 ) + '0' ; *cp++ = ( highline % 10 ) + '0' ; *cp++ = 'r' | 040 ; *cp++ = '\0' ; putbin(tbuffer,0) ; return(0) ; } static char eofrec[] = "\033[7m \033[0m" ; inseofmark() { extern int termtype ; switch(termtype) { case _VT100: case _VT220: case _ANSI: doinsert(*maxline,eofrec,strlen(eofrec)) ; break ; } return(1) ; } deleofmark() { extern int worklength ; extern char workbuffer[] ; if ( *maxline == 2 ) then { *curline = 1 ; scloadline() ; workbuffer[0] = CR ; workbuffer[1] = LF ; worklength = 2 ; scunloadline() ; return(1) ; } else return( delline(*maxline-1) ) ; } ateofmark() { extern int *curline,*maxline ; return(*curline == *maxline-1 ) ; } char *genmove(s) char *s ; { *s = 0 ; switch (termtype) { case _VT100: case _VT220: case _ANSI: mvt100_cursor(s) ; break ; default: break ; } return(s) ; } scmove() { char buffer[20] ; putbin(genmove(buffer),0) ; return(1) ; } static mvt100_cursor(buffer) char *buffer ; { register char *cp ; register int temp ; extern int curposition,*curline,fastio,lastx,lasty,*loclow ; extern int leftmargin,rltime,termtype ; cp = buffer ; if (fastio != 0 && *curline == lasty) then { if ( (temp = curposition - lastx) == 0 ) then return(0) ; if (temp < 0) then temp = (-temp) ; if ( --temp == 0 && ++rltime < 6 ) then { *cp++ = ESCAPE ; *cp++ = '[' ; *cp++ = (curposition-lastx > 0) ? 'C' : 'D' ; *cp++ = 0 ; } else moveabs(cp) ; } else moveabs(cp) ; lastx = curposition ; lasty = *curline ; return(0) ; } static moveabs(cp) char *cp ; { register int temp ; extern int curposition,*curline,fastio,lastx,lasty,*loclow ; extern int leftmargin,rltime,termtype ; rltime = 0 ; temp = ( termtype==_VT100 || termtype==_VT220 ) ?2:1 ; temp = *curline - *loclow + temp ; *cp++ = ESCAPE ; *cp++ = '[' ; *cp++ = temp/10 + '0' ; *cp++ = temp % 10 + '0' ; *cp++ = ';' ; if ( (temp = curposition + leftmargin) >= 100 ) then { *cp++ = temp/100 + '0' ; temp = temp % 100 ; } *cp++ = temp/10 + '0' ; *cp++ = temp % 10 + '0' ; *cp++ = 'H' & 0137 ; *cp = '\0' ; } scxnewline() { extern int termtype ; switch (termtype) { case _VT100: nlvt100() ; break ; SCDSP C [.050036]SCDSP .C [.050036]    X14|H [4;Ik(&'( k ߫H&P` \RrPP2PPzPP{PPPPP2P~\$\\TD 0D \~ hi) +\ ^( n ^( np\^txY\^ˀ\!kVk<\F˰<˴ˬ\VVkˤ1`@lP ABCDEFGHIJKLMNOPQRSTUVWXYZ$.?0123456789<@<SЬTЬ UQS>?\\\\\\\\\`:#@'="\abcdefghi\\\\\\\jklmnopqr\\\\\\\~stuvwxyz\\\\\\\\\\\\\\\\\\\\\\{ABCDEFGHI\\\\\\}JKLMNOPQR\\\\\\\\STUVWXYZ\\\\\\0123456789\\\\\  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~@ggh<i|o<m<4p<p<k|Zn<l fr rwx<x<x<x޺<w@]@@fjnr]Ze@@|> | |v<H|  |  |xz|  |zt f r   < &^ @&@'*/V,"?Lh:hmBmz|z{x`y~|fN|@@|@͂|@ ݃ƃ<ns<|Ŏ |️|ep|u|-@率|<ᄇ2ֻr||ZRM | ntB|xyvZw|J=|R>|J? nnaa|bddf case _VT220: case _ANSI: nlansi() ; break ; default: break ; } } static char crlf[] = { '\015','\012' } ; static putcrlf() { putbin(crlf,2) ; } static char mind[] = { 033,'M' } ; static nlvt100() { extern int *curline,doiref,dopage,*loclow,*lochigh; doiref = 0 ; if ( dopage ) then { scmove() ; putcrlf() ; lnext() ; scmove() ; lkill() ; dopage = 0 ; } else { setscrolling( *curline - *loclow + 2,23) ; scmove() ; putbin(mind,2) ; setscrolling(2,23) ; scmove() ; if ( *curline >= *lochigh ) then lkill() ; } } static char insl[] = { 033,'[','L' } ; static nlansi() { extern int *curline,doiref,dopage,*loclow,*lochigh; doiref = 0 ; scmove() ; if ( dopage == 0 ) then { putbin(insl,3) ; scmove() ; } else { putcrlf() ; lnext() ; scmove() ; skill() ; dopage = 0 ; } } static char savpos[] = { 033,'7',0 } ; static char rstpos[] = { 033,'8',0 } ; loading() { extern int termtype ; switch( termtype ) { case _VT100: case _VT220: putbin("\015\033[K",0) ; putbin("\033[7mLoading...\033[0m\015",0) ; settimerast(6,loading) ; break ; default: break ; } ; } working() { extern int termtype ; switch( termtype ) { case _VT100: case _VT220: case _ANSI: putbin(savpos,0) ; putbin("\033[24;01H\033[K",0) ; putbin("\033[7mWorking...\033[0m",0) ; putbin(rstpos,0) ; settimerast(3,working) ; break ; default: break ; } }