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 5096 by doda, Tue Dec 11 03:26:39 2012 UTC revision 5117 by doda, Mon Feb 4 13:04:22 2013 UTC
# Line 3159  void PrnParseCS(BYTE b) // printer mode Line 3159  void PrnParseCS(BYTE b) // printer mode
3159    
3160  void ParseCS(BYTE b) /* b is the final char */  void ParseCS(BYTE b) /* b is the final char */
3161  {  {
3162    if (PrinterMode) { // printer mode          if (PrinterMode) { // printer mode
3163      PrnParseCS(b);                  PrnParseCS(b);
3164      return;                  return;
3165    }          }
3166    
3167    switch (ICount) {          switch (ICount) {
3168      /* no intermediate char */            case 0: /* no intermediate char */
3169      case 0:                  switch (Prv) {
3170        switch (Prv) {                    case 0: /* no private parameter */
3171          /* no private parameter */                          switch (b) {
3172          case 0:                          // ISO/IEC 6429 / ECMA-48 Sequence
3173            switch (b) {                            case '@': CSInsertCharacter(); break;   // ICH
3174              // ISO/IEC 6429 / ECMA-48 Sequence                            case 'A': CSCursorUp(); break;          // CUU
3175              case '@': CSInsertCharacter(); break;       // ICH                            case 'B': CSCursorDown(); break;        // CUD
3176              case 'A': CSCursorUp(); break;              // CUU                            case 'C': CSCursorRight(); break;       // CUF
3177              case 'B': CSCursorDown(); break;            // CUD                            case 'D': CSCursorLeft(); break;        // CUB
3178              case 'C': CSCursorRight(); break;           // CUF                            case 'E': CSCursorDown1(); break;       // CNL
3179              case 'D': CSCursorLeft(); break;            // CUB                            case 'F': CSCursorUp1(); break;         // CPL
3180              case 'E': CSCursorDown1(); break;           // CNL                            case 'G': CSMoveToColumnN(); break;     // CHA
3181              case 'F': CSCursorUp1(); break;             // CPL                            case 'H': CSMoveToXY(); break;          // CUP
3182              case 'G': CSMoveToColumnN(); break;         // CHA                            case 'I': CSForwardTab(); break;        // CHT
3183              case 'H': CSMoveToXY(); break;              // CUP                            case 'J': CSScreenErase(); break;       // ED
3184              case 'I': CSForwardTab(); break;            // CHT                            case 'K': CSLineErase(); break;         // EL
3185              case 'J': CSScreenErase(); break;           // ED                            case 'L': CSInsertLine(); break;        // IL
3186              case 'K': CSLineErase(); break;             // EL                            case 'M': CSDeleteNLines(); break;      // DL
3187              case 'L': CSInsertLine(); break;            // IL  //                        case 'N': break;                        // EF   -- Not support
3188              case 'M': CSDeleteNLines(); break;          // DL  //                        case 'O': break;                        // EA   -- Not support
3189  //          case 'N': break;                            // EF   -- Not support                            case 'P': CSDeleteCharacter(); break;   // DCH
3190  //          case 'O': break;                            // EA   -- Not support  //                        case 'Q': break;                        // SEE  -- Not support
3191              case 'P': CSDeleteCharacter(); break;       // DCH  //                        case 'R': break;                        // CPR  -- Report only, ignore.
3192  //          case 'Q': break;                            // SEE  -- Not support                            case 'S': CSScrollUP(); break;          // SU
3193  //          case 'R': break;                            // CPR  -- Report only, ignore.                            case 'T': CSScrollDown(); break;        // SD
3194              case 'S': CSScrollUP(); break;              // SU  //                        case 'U': break;                        // NP   -- Not support
3195              case 'T': CSScrollDown(); break;            // SD  //                        case 'V': break;                        // PP   -- Not support
3196  //          case 'U': break;                            // NP   -- Not support  //                        case 'W': break;                        // CTC  -- Not support
3197  //          case 'V': break;                            // PP   -- Not support                            case 'X': CSEraseCharacter(); break;    // ECH
3198  //          case 'W': break;                            // CTC  -- Not support  //                        case 'Y': break;                        // CVT  -- Not support
3199              case 'X': CSEraseCharacter(); break;        // ECH                            case 'Z': CSBackwardTab(); break;       // CBT
3200  //          case 'Y': break;                            // CVT  -- Not support  //                        case '[': break;                        // SRS  -- Not support
3201              case 'Z': CSBackwardTab(); break;           // CBT  //                        case '\\': break;                       // PTX  -- Not support
3202  //          case '[': break;                            // SRS  -- Not support  //                        case ']': break;                        // SDS  -- Not support
3203  //          case '\\': break;                           // PTX  -- Not support  //                        case '^': break;                        // SIMD -- Not support
3204  //          case ']': break;                            // SDS  -- Not support                            case '`': CSMoveToColumnN(); break;     // HPA
3205  //          case '^': break;                            // SIMD -- Not support                            case 'a': CSCursorRight(); break;       // HPR
3206              case '`': CSMoveToColumnN(); break;         // HPA  //                        case 'b': break;                        // REP  -- Not support
3207              case 'a': CSCursorRight(); break;           // HPR                            case 'c': AnswerTerminalType(); break;  // DA
3208  //          case 'b': break;                            // REP  -- Not support                            case 'd': CSMoveToLineN(); break;       // VPA
3209              case 'c': AnswerTerminalType(); break;      // DA                            case 'e': CSCursorDown(); break;        // VPR
3210              case 'd': CSMoveToLineN(); break;           // VPA                            case 'f': CSMoveToXY(); break;          // HVP
3211              case 'e': CSCursorDown(); break;            // VPR                            case 'g': CSDeleteTabStop(); break;     // TBC
3212              case 'f': CSMoveToXY(); break;              // HVP                            case 'h': CS_h_Mode(); break;           // SM
3213              case 'g': CSDeleteTabStop(); break;         // TBC                            case 'i': CS_i_Mode(); break;           // MC
3214              case 'h': CS_h_Mode(); break;               // SM                            case 'j': CSCursorLeft(); break;        // HPB
3215              case 'i': CS_i_Mode(); break;               // MC                            case 'k': CSCursorUp();                 // VPB
3216              case 'j': CSCursorLeft(); break;            // HPB                            case 'l': CS_l_Mode(); break;           // RM
3217              case 'k': CSCursorUp();                     // VPB                            case 'm': CSSetAttr(); break;           // SGR
3218              case 'l': CS_l_Mode(); break;               // RM                            case 'n': CS_n_Mode(); break;           // DSR
3219              case 'm': CSSetAttr(); break;               // SGR  //                        case 'o': break;                        // DAQ  -- Not support
3220              case 'n': CS_n_Mode(); break;               // DSR  
3221  //          case 'o': break;                            // DAQ  -- Not support                          // Private Sequence
3222                              case 'r': CSSetScrollRegion(); break;   // DECSTBM
3223              // Private Sequence                            case 's': SaveCursor(); break;          // SCP (Save cursor (ANSI.SYS/SCO?))
3224              case 'r': CSSetScrollRegion(); break;       // DECSTBM                            case 't': CSSunSequence(); break;       // DECSLPP / Window manipulation(dtterm?)
3225              case 's': SaveCursor(); break;              // SCP (Save cursor (ANSI.SYS/SCO?))                            case 'u': RestoreCursor(); break;       // RCP (Restore cursor (ANSI.SYS/SCO))
3226              case 't': CSSunSequence(); break;           // DECSLPP / Window manipulation(dtterm?)                          }
3227              case 'u': RestoreCursor(); break;           // RCP (Restore cursor (ANSI.SYS/SCO))                          break; /* end of case Prv=0 */
3228            } /* of case Prv=0 */                    case '<': CSLT(b); break;    /* private parameter = '<' */
3229            break;                    case '=': CSEQ(b); break;    /* private parameter = '=' */
3230          /* private parameter = '<' */                    case '>': CSGT(b); break;    /* private parameter = '>' */
3231          case '<': CSLT(b); break;                    case '?': CSQuest(b); break; /* private parameter = '?' */
3232          /* private parameter = '=' */                  } /* end of switch (Prv) */
3233          case '=': CSEQ(b); break;                  break; /* end of no intermediate char */
3234          /* private parameter = '>' */            case 1: /* one intermediate char */
3235          case '>': CSGT(b); break;                  switch (IntChar[1]) {
3236          /* private parameter = '?' */                    case ' ': CSSpace(b); break;  /* intermediate char = ' ' */
3237          case '?': CSQuest(b); break;                    case '!': CSExc(b); break;    /* intermediate char = '!' */
3238        } /* end of siwtch (Prv) */                    case '"': CSDouble(b); break; /* intermediate char = '"' */
3239        break;                    case '$': CSDol(b); break;    /* intermediate char = '$' */
3240      /* one intermediate char */                    case '\'': CSQuote(b); break; /* intermediate char = '\'' */
3241      case 1:                  }
3242        switch (IntChar[1]) {                  break;
3243          /* intermediate char = ' ' */          } /* end of switch (Icount) */
         case ' ': CSSpace(b); break;  
         /* intermediate char = '!' */  
         case '!': CSExc(b); break;  
         /* intermediate char = '"' */  
         case '"': CSDouble(b); break;  
         /* intermediate char = '$' */  
         case '$': CSDol(b); break;  
         /* intermediate char = '\'' */  
         case '\'': CSQuote(b); break;  
       }  
       break;  
   } /* of case Icount */  
3244    
3245    ParseMode = ModeFirst;          ParseMode = ModeFirst;
3246  }  }
3247    
3248  void ControlSequence(BYTE b)  void ControlSequence(BYTE b)
3249  {  {
3250    if ((b<=US) || (b>=0x80) && (b<=0x9F))          if ((b<=US) || (b>=0x80) && (b<=0x9F))
3251      ParseControl(b); /* ctrl char */                  ParseControl(b); /* ctrl char */
3252    else if ((b>=0x40) && (b<=0x7E))          else if ((b>=0x40) && (b<=0x7E))
3253      ParseCS(b); /* terminate char */                  ParseCS(b); /* terminate char */
3254    else {          else {
3255      if (PrinterMode)                  if (PrinterMode)
3256        WriteToPrnFile(b,FALSE);                          WriteToPrnFile(b,FALSE);
3257    
3258      if ((b>=0x20) && (b<=0x2F))                  if ((b>=0x20) && (b<=0x2F)) { /* intermediate char */
3259      { /* intermediate char */                          if (ICount<IntCharMax) ICount++;
3260        if (ICount<IntCharMax) ICount++;                          IntChar[ICount] = b;
3261        IntChar[ICount] = b;                  }
3262      }                  else if ((b>=0x30) && (b<=0x39)) { /* parameter value */
3263      else if ((b>=0x30) && (b<=0x39))                          if (NSParam[NParam] > 0) {
3264      {                                  SubParam[NParam][NSParam[NParam]] = SubParam[NParam][NSParam[NParam]]*10 + b - 0x30;
3265        if (NSParam[NParam] > 0) {                          }
3266          SubParam[NParam][NSParam[NParam]] = SubParam[NParam][NSParam[NParam]]*10 + b - 0x30;                          else {
3267        }                                  Param[NParam] = Param[NParam]*10 + b - 0x30;
3268        else {                          }
3269          Param[NParam] = Param[NParam]*10 + b - 0x30;                  }
3270        }                  else if (b==0x3A) { /* ':' Subparameter delimiter */
3271      }                          if (NSParam[NParam] < NSParamMax) {
3272      else if (b==0x3A)                                  NSParam[NParam]++;
3273      { /* ':' Subparameter delimiter */                                  SubParam[NParam][NSParam[NParam]] = 0;
3274        if (NSParam[NParam] < NSParamMax) {                          }
3275          NSParam[NParam]++;                  }
3276          SubParam[NParam][NSParam[NParam]] = 0;                  else if (b==0x3B) { /* ';' Parameter delimiter */
3277        }                          if (NParam < NParamMax) {
3278      }                                  NParam++;
3279      else if (b==0x3B)                                  Param[NParam] = 0;
3280      { /* ';' Parameter delimiter */                                  NSParam[NParam] = 0;
3281        if (NParam < NParamMax)                          }
3282        {                  }
3283          NParam++;                  else if ((b>=0x3C) && (b<=0x3F)) { /* private char */
3284          Param[NParam] = 0;                          if (FirstPrm) Prv = b;
3285          NSParam[NParam] = 0;                  }
3286        }                  else if (b>0xA0) {
3287      }                          ParseMode=ModeFirst;
3288      else if ((b>=0x3C) && (b<=0x3F))                          ParseFirst(b);
3289      { /* private char */                  }
3290        if (FirstPrm) Prv = b;          }
3291      }          FirstPrm = FALSE;
     else if (b>0xA0) {  
       ParseMode=ModeFirst;  
       ParseFirst(b);  
     }  
   }  
   FirstPrm = FALSE;  
3292  }  }
3293    
3294  void RequestStatusString(unsigned char *StrBuff, int StrLen)    // DECRQSS  void RequestStatusString(unsigned char *StrBuff, int StrLen)    // DECRQSS
# Line 3539  void DeviceControl(BYTE b) Line 3521  void DeviceControl(BYTE b)
3521    
3522  void DCUserKey(BYTE b)  void DCUserKey(BYTE b)
3523  {  {
3524    if (ESCFlag && (b=='\\') || (b==ST && ts.KanjiCode!=IdSJIS))          if (ESCFlag && (b=='\\') || (b==ST && ts.KanjiCode!=IdSJIS)) {
3525    {                  if (! WaitKeyId) DefineUserKey(NewKeyId,NewKeyStr,NewKeyLen);
3526      if (! WaitKeyId) DefineUserKey(NewKeyId,NewKeyStr,NewKeyLen);                  ESCFlag = FALSE;
3527      ESCFlag = FALSE;                  ParseMode = ModeFirst;
3528      ParseMode = ModeFirst;                  return;
3529      return;          }
3530    }  
3531            if (b==ESC) {
3532    if (b==ESC)                  ESCFlag = TRUE;
3533    {                  return;
3534      ESCFlag = TRUE;          }
3535      return;          else ESCFlag = FALSE;
3536    }  
3537    else ESCFlag = FALSE;          if (WaitKeyId) {
3538                    if ((b>=0x30) && (b<=0x39)) {
3539    if (WaitKeyId)                          if (NewKeyId<1000)
3540    {                                  NewKeyId = NewKeyId*10 + b - 0x30;
3541      if ((b>=0x30) && (b<=0x39))                  }
3542      {                  else if (b==0x2F) {
3543        if (NewKeyId<1000)                          WaitKeyId = FALSE;
3544          NewKeyId = NewKeyId*10 + b - 0x30;                          WaitHi = TRUE;
3545      }                          NewKeyLen = 0;
3546      else if (b==0x2F)                  }
     {  
       WaitKeyId = FALSE;  
       WaitHi = TRUE;  
       NewKeyLen = 0;  
     }  
   }  
   else {  
     if (b==0x3B)  
     {  
       DefineUserKey(NewKeyId,NewKeyStr,NewKeyLen);  
       WaitKeyId = TRUE;  
       NewKeyId = 0;  
     }  
     else {  
       if (NewKeyLen < FuncKeyStrMax)  
       {  
         if (WaitHi)  
         {  
           NewKeyStr[NewKeyLen] = ConvHexChar(b) << 4;  
           WaitHi = FALSE;  
3547          }          }
3548          else {          else {
3549            NewKeyStr[NewKeyLen] = NewKeyStr[NewKeyLen] +                  if (b==0x3B) {
3550                                   ConvHexChar(b);                          DefineUserKey(NewKeyId,NewKeyStr,NewKeyLen);
3551            WaitHi = TRUE;                          WaitKeyId = TRUE;
3552            NewKeyLen++;                          NewKeyId = 0;
3553          }                  }
3554        }                  else {
3555      }                          if (NewKeyLen < FuncKeyStrMax) {
3556    }                                  if (WaitHi) {
3557                                            NewKeyStr[NewKeyLen] = ConvHexChar(b) << 4;
3558                                            WaitHi = FALSE;
3559                                    }
3560                                    else {
3561                                            NewKeyStr[NewKeyLen] = NewKeyStr[NewKeyLen] + ConvHexChar(b);
3562                                            WaitHi = TRUE;
3563                                            NewKeyLen++;
3564                                    }
3565                            }
3566                    }
3567            }
3568  }  }
3569    
3570  void IgnoreString(BYTE b)  void IgnoreString(BYTE b)
3571  {  {
3572    if ((ESCFlag && (b=='\\')) ||          if ((ESCFlag && (b=='\\')) ||
3573        (b<=US && b!=ESC && b!=HT) ||              (b<=US && b!=ESC && b!=HT) ||
3574        (b==ST && ts.KanjiCode!=IdSJIS))              (b==ST && ts.KanjiCode!=IdSJIS)) {
3575      ParseMode = ModeFirst;                  ParseMode = ModeFirst;
3576            }
3577    
3578    if (b==ESC) ESCFlag = TRUE;          if (b==ESC) {
3579           else ESCFlag = FALSE;                  ESCFlag = TRUE;
3580            }
3581            else {
3582                    ESCFlag = FALSE;
3583            }
3584  }  }
3585    
3586  BOOL XsParseColor(char *colspec, COLORREF *color)  BOOL XsParseColor(char *colspec, COLORREF *color)

Legend:
Removed from v.5096  
changed lines
  Added in v.5117

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