Develop and Download Open Source Software

Browse Subversion Repository

Diff of /trunk/teraterm/teraterm/vtterm.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 4244 by doda, Tue Dec 21 07:45:25 2010 UTC revision 4246 by doda, Tue Dec 21 11:59:56 2010 UTC
# Line 27  Line 27 
27  #include "vtterm.h"  #include "vtterm.h"
28    
29  #define MAPSIZE(x) (sizeof(x)/sizeof((x)[0]))  #define MAPSIZE(x) (sizeof(x)/sizeof((x)[0]))
30  #define Accept8BitCtrl ((ts.TerminalID>=IdVT220J) && (ts.TermFlag & TF_ACCEPT8BITCTRL))  #define Accept8BitCtrl ((VTlevel >= 2) && (ts.TermFlag & TF_ACCEPT8BITCTRL))
31    
32    /* Parsing modes */    /* Parsing modes */
33  #define ModeFirst 0  #define ModeFirst 0
# Line 65  static BOOL FocusReportMode; Line 65  static BOOL FocusReportMode;
65  static BOOL AltScr;  static BOOL AltScr;
66  BOOL BracketedPaste;  BOOL BracketedPaste;
67    
68    static int VTlevel;
69    
70  // save/restore cursor  // save/restore cursor
71  typedef struct {  typedef struct {
72    int CursorX, CursorY;    int CursorX, CursorY;
# Line 208  void ResetTerminal() /*reset variables b Line 210  void ResetTerminal() /*reset variables b
210    RelativeOrgMode = FALSE;    RelativeOrgMode = FALSE;
211    ts.ColorFlag &= ~CF_REVERSEVIDEO;    ts.ColorFlag &= ~CF_REVERSEVIDEO;
212    AutoRepeatMode = TRUE;    AutoRepeatMode = TRUE;
   Send8BitMode = ts.Send8BitCtrl;  
213    FocusReportMode = FALSE;    FocusReportMode = FALSE;
214    MouseReportMode = IdMouseTrackNone;    MouseReportMode = IdMouseTrackNone;
215    DecLocatorFlag = 0;    DecLocatorFlag = 0;
216    
217      ChangeTerminalID();
218    
219    LastX = 0;    LastX = 0;
220    LastY = 0;    LastY = 0;
221    ButtonStat = 0;    ButtonStat = 0;
# Line 814  void ParseControl(BYTE b) Line 817  void ParseControl(BYTE b)
817        if ((ts.TermFlag & TF_ACCEPT8BITCTRL)==0)        if ((ts.TermFlag & TF_ACCEPT8BITCTRL)==0)
818          return; /* ignore C1 char */          return; /* ignore C1 char */
819        /* C1 chars are interpreted as C0 chars in VT100 mode */        /* C1 chars are interpreted as C0 chars in VT100 mode */
820        if (ts.TerminalID<IdVT220J)        if (VTlevel < 2)
821          b = b & 0x7F;          b = b & 0x7F;
822      }      }
823    }    }
# Line 1064  void AnswerTerminalType() Line 1067  void AnswerTerminalType()
1067  void ESCSpace(BYTE b)  void ESCSpace(BYTE b)
1068  {  {
1069    switch (b) {    switch (b) {
1070      case 'F': Send8BitMode = FALSE; break;      // S7C1T      case 'F':   // S7C1T
1071      case 'G': Send8BitMode = TRUE; break;       // S8C1T        Send8BitMode = FALSE;
1072          break;
1073        case 'G':   // S8C1T
1074          if (VTlevel >= 2) {
1075            Send8BitMode = TRUE;
1076          }
1077          break;
1078    }    }
1079  }  }
1080    
# Line 2511  void CSSetAttr()               // SGR Line 2520  void CSSetAttr()               // SGR
2520      CursorBottom = NumOfLines-1-StatusLine;      CursorBottom = NumOfLines-1-StatusLine;
2521      ResetCharSet();      ResetCharSet();
2522    
     Send8BitMode = ts.Send8BitCtrl;  
   
2523      /* Attribute */      /* Attribute */
2524      CharAttr = DefCharAttr;      CharAttr = DefCharAttr;
2525      Special = FALSE;      Special = FALSE;
# Line 2539  void CSSetAttr()               // SGR Line 2546  void CSSetAttr()               // SGR
2546          /* Select terminal mode (software reset) */          /* Select terminal mode (software reset) */
2547          SoftReset();          SoftReset();
2548          if (NParam > 0) {          if (NParam > 0) {
2549            switch (Param[1]) {            ChangeTerminalID();
2550              case 61: // VT-Level 1 (VT100)            if (Param[1] >= 61 && Param[1] <= 65) {
2551                Send8BitMode = FALSE; break;              if (VTlevel > Param[1] - 60) {
2552              case 62: // VT-Level 2 (VT200)                VTlevel = Param[1] - 60;
2553              case 63: // VT-Level 3 (VT300)              }
2554              case 64: // VT-Level 4 (VT400)            }
2555              case 65: // VT-Level 5 (VT500)            else {
2556                if (NParam > 1 && Param[2] == 1)              VTlevel = 1;
                 Send8BitMode = FALSE;  
               else  
                 Send8BitMode = TRUE;  
               break;  
2557            }            }
2558    
2559              if (VTlevel < 2 || (NParam > 1 && Param[2] == 1))
2560                Send8BitMode = FALSE;
2561              else
2562                Send8BitMode = TRUE;
2563          }          }
2564          break;          break;
2565    
2566        case 'q': // DECSCA        case 'q': // DECSCA
2567          if (Param[1] < 0)          if (Param[1] < 0)
2568            Param[1] = 0;            Param[1] = 0;
# Line 2930  void RequestStatusString(unsigned char * Line 2939  void RequestStatusString(unsigned char *
2939          case '"':          case '"':
2940                  switch (StrBuff[1]) {                  switch (StrBuff[1]) {
2941                  case 'p': // DECSCL                  case 'p': // DECSCL
2942                          switch (ts.TerminalID) {                          if (VTlevel > 1 && Send8BitMode) {
2943                          case IdVT220J:                                  len = _snprintf_s_l(RepStr, sizeof(RepStr), _TRUNCATE, "0$r6%d;0\"p", CLocale, VTlevel);
2944                          case IdVT282:                          }
2945                                  len = _snprintf_s_l(RepStr, sizeof(RepStr), _TRUNCATE, "0$r62;%d\"p", CLocale, Send8BitMode?0:1);                          else {
2946                                  break;                                  len = _snprintf_s_l(RepStr, sizeof(RepStr), _TRUNCATE, "0$r6%d;1\"p", CLocale, VTlevel);
                         case IdVT320:  
                         case IdVT382:  
                                 len = _snprintf_s_l(RepStr, sizeof(RepStr), _TRUNCATE, "0$r63;%d\"p", CLocale, Send8BitMode?0:1);  
                                 break;  
                         case IdVT420:  
                                 len = _snprintf_s_l(RepStr, sizeof(RepStr), _TRUNCATE, "0$r64;%d\"p", CLocale, Send8BitMode?0:1);  
                                 break;  
                         case IdVT520:  
                         case IdVT525:  
                                 len = _snprintf_s_l(RepStr, sizeof(RepStr), _TRUNCATE, "0$r65;%d\"p", CLocale, Send8BitMode?0:1);  
                                 break;  
                         default:  
                                 len = _snprintf_s_l(RepStr, sizeof(RepStr), _TRUNCATE, "0$r61;1\"p", CLocale);  
                                 break;  
2947                          }                          }
2948                          break;                          break;
2949    
# Line 4346  void EndTerm() { Line 4341  void EndTerm() {
4341  BOOL BracketedPasteMode() {  BOOL BracketedPasteMode() {
4342          return BracketedPaste;          return BracketedPaste;
4343  }  }
4344    
4345    void ChangeTerminalID() {
4346      switch (ts.TerminalID) {
4347      case IdVT220J:
4348      case IdVT282:
4349        VTlevel = 2;
4350        break;
4351      case IdVT320:
4352      case IdVT382:
4353        VTlevel = 3;
4354        break;
4355      case IdVT420:
4356        VTlevel = 4;
4357        break;
4358      case IdVT520:
4359      case IdVT525:
4360        VTlevel = 5;
4361        break;
4362      default:
4363        VTlevel = 1;
4364      }
4365    
4366      if (VTlevel == 1) {
4367        Send8BitMode = FALSE;
4368      }
4369      else {
4370        Send8BitMode = ts.Send8BitCtrl;
4371      }
4372    }

Legend:
Removed from v.4244  
changed lines
  Added in v.4246

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26