@ -2503,10 +2503,10 @@ tputc(char *c, int len) {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									csiparse ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									csihandle ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								}   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								return ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							}  else  if ( term . esc  &  ESC_ALTCHARSET )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								tdeftran ( ascii ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								tselcs ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								term . esc  =  0 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							}  else  if ( term . esc  &  ESC_TEST )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								if ( ascii  = =  ' 8 ' )  {  /* DEC screen alignment test. */   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									char  E [ UTF_SIZ ]  =  " E " ;   
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				
					@ -2517,15 +2517,14 @@ tputc(char *c, int len) {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
											tsetchar ( E ,  & term . c . attr ,  x ,  y ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									}   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								}   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								term . esc  =  0 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							}  else  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								switch ( ascii )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								case  ' [ ' :   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									term . esc  | =  ESC_CSI ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									break ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									return ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								case  ' # ' :   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									term . esc  | =  ESC_TEST ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									break ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									return ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								case  ' P ' :  /* DCS -- Device Control String */   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								case  ' _ ' :  /* APC -- Application Program Command */   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								case  ' ^ ' :  /* PM -- Privacy Message */   
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				
					@ -2534,29 +2533,26 @@ tputc(char *c, int len) {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									strreset ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									strescseq . type  =  ascii ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									term . esc  | =  ESC_STR ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									break ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									return ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								case  ' ( ' :  /* set primary charset G0 */   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								case  ' ) ' :  /* set secondary charset G1 */   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								case  ' * ' :  /* set tertiary charset G2 */   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								case  ' + ' :  /* set quaternary charset G3 */   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									term . icharset  =  ascii  -  ' ( ' ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									term . esc  | =  ESC_ALTCHARSET ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									break ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									return ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								case  ' D ' :  /* IND -- Linefeed */   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									if ( term . c . y  = =  term . bot )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
										tscrollup ( term . top ,  1 ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									}  else  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
										tmoveto ( term . c . x ,  term . c . y + 1 ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									}   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									term . esc  =  0 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									break ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								case  ' E ' :  /* NEL -- Next line */   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									tnewline ( 1 ) ;  /* always go to first col */   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									term . esc  =  0 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									break ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								case  ' H ' :  /* HTS -- Horizontal tab stop */   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									term . tabs [ term . c . x ]  =  1 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									term . esc  =  0 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									break ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								case  ' M ' :  /* RI -- Reverse index */   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									if ( term . c . y  = =  term . top )  {   
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				
					@ -2564,46 +2560,38 @@ tputc(char *c, int len) {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									}  else  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
										tmoveto ( term . c . x ,  term . c . y - 1 ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									}   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									term . esc  =  0 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									break ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								case  ' Z ' :  /* DECID -- Identify Terminal */   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									ttywrite ( VT102ID ,  sizeof ( VT102ID )  -  1 ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									term . esc  =  0 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									break ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								case  ' c ' :  /* RIS -- Reset to inital state */   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									treset ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									term . esc  =  0 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									xresettitle ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									xloadcols ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									break ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								case  ' = ' :  /* DECPAM -- Application keypad */   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									term . mode  | =  MODE_APPKEYPAD ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									term . esc  =  0 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									break ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								case  ' > ' :  /* DECPNM -- Normal keypad */   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									term . mode  & =  ~ MODE_APPKEYPAD ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									term . esc  =  0 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									break ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								case  ' 7 ' :  /* DECSC -- Save Cursor */   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									tcursor ( CURSOR_SAVE ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									term . esc  =  0 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									break ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								case  ' 8 ' :  /* DECRC -- Restore Cursor */   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									tcursor ( CURSOR_LOAD ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									term . esc  =  0 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									break ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								case  ' \\ ' :  /* ST -- String Terminator */   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									if ( term . esc  &  ESC_STR_END )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
										strhandle ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									term . esc  =  0 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									break ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								default :   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									fprintf ( stderr ,  " erresc: unknown sequence ESC 0x%02X '%c' \n " ,   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
										( uchar )  ascii ,  isprint ( ascii ) ?  ascii : ' . ' ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									term . esc  =  0 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									break ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								}   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							}   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							term . esc  =  0 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							/*   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							 *  All  characters  which  form  part  of  a  sequence  are  not   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							 *  printed