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 5423 by doda, Fri Nov 22 06:29:03 2013 UTC revision 5429 by doda, Sat Nov 23 14:01:20 2013 UTC
# Line 1451  void EscapeSequence(BYTE b) Line 1451  void EscapeSequence(BYTE b)
1451      BuffInsertSpace(Count);      BuffInsertSpace(Count);
1452    }    }
1453    
1454    void CSCursorUp()  void CSCursorUp(BOOL AffectMargin)      // CUU / VPB
1455    {  {
1456      if (Param[1]<1) Param[1] = 1;          int topMargin, NewY;
1457    
1458      if (CursorY >= CursorTop)          if (Param[1]<1)
1459      {                  Param[1] = 1;
       if (CursorY-Param[1] > CursorTop)  
         MoveCursor(CursorX,CursorY-Param[1]);  
       else  
         MoveCursor(CursorX,CursorTop);  
     }  
     else {  
       if (CursorY > 0)  
         MoveCursor(CursorX,CursorY-Param[1]);  
       else  
         MoveCursor(CursorX,0);  
     }  
   }  
1460    
1461    void CSCursorUp1()          if (AffectMargin && CursorY >= CursorTop)
1462    {                  topMargin = CursorTop;
1463      MoveCursor(CursorLeftM, CursorY);          else
1464      CSCursorUp();                  topMargin = 0;
   }  
1465    
1466    void CSCursorDown()          NewY = CursorY - Param[1];
1467    {          if (NewY < topMargin)
1468      if (Param[1]<1) Param[1] = 1;                  NewY = topMargin;
1469    
1470      if (CursorY <= CursorBottom)          MoveCursor(CursorX, NewY);
1471      {  }
       if (CursorY+Param[1] < CursorBottom)  
         MoveCursor(CursorX,CursorY+Param[1]);  
       else  
         MoveCursor(CursorX,CursorBottom);  
     }  
     else {  
       if (CursorY < NumOfLines-StatusLine-1)  
         MoveCursor(CursorX,CursorY+Param[1]);  
       else  
         MoveCursor(CursorX,NumOfLines-StatusLine);  
     }  
   }  
1472    
1473    void CSCursorDown1()  void CSCursorUp1()                      // CPL
1474    {  {
1475      MoveCursor(CursorLeftM, CursorY);          MoveCursor(CursorLeftM, CursorY);
1476      CSCursorDown();          CSCursorUp(TRUE);
1477    }  }
1478    
1479    void CSCursorDown(BOOL AffectMargin)    // CUD / VPR
1480    {
1481            int bottomMargin, NewY;
1482    
1483            if (Param[1]<1)
1484                    Param[1] = 1;
1485    
1486            if (AffectMargin && CursorY <= CursorBottom)
1487                    bottomMargin = CursorBottom;
1488            else
1489                    bottomMargin = NumOfLines-StatusLine-1;
1490    
1491            NewY = CursorY + Param[1];
1492            if (NewY > bottomMargin)
1493                    NewY = bottomMargin;
1494    
1495            MoveCursor(CursorX, NewY);
1496    }
1497    
1498    void CSCursorDown1()                    // CNL
1499    {
1500            MoveCursor(CursorLeftM, CursorY);
1501            CSCursorDown(TRUE);
1502    }
1503    
1504  void CSScreenErase()  void CSScreenErase()
1505  {  {
# Line 1689  void CSMoveToColumnN()         // CHA / HPA Line 1689  void CSMoveToColumnN()         // CHA / HPA
1689          }          }
1690  }  }
1691    
1692  void CSCursorRight()            // CUF / HPR  void CSCursorRight(BOOL AffectMargin)   // CUF / HPR
1693  {  {
1694          int NewX;          int NewX, rightMargin;
1695    
1696          if (Param[1] < 1)          if (Param[1] < 1)
1697                  Param[1] = 1;                  Param[1] = 1;
         else if (Param[1] > NumOfColumns - 1)  
                 Param[1] = NumOfColumns - 1;  
1698    
1699          NewX = CursorX + Param[1];          if (AffectMargin && CursorX <= CursorRightM)
1700                    rightMargin = CursorRightM;
1701            else
1702                    rightMargin = NumOfColumns-1;
1703    
1704          if (CursorX <= CursorRightM && NewX > CursorRightM)          NewX = CursorX + Param[1];
1705                  NewX = CursorRightM;          if (NewX > rightMargin)
1706          else if (NewX > NumOfColumns-1)                  NewX = rightMargin;
                 NewX = NumOfColumns-1;  
1707    
1708          MoveCursor(NewX, CursorY);          MoveCursor(NewX, CursorY);
1709  }  }
1710    
1711  void CSCursorLeft()             // CUB / HPB  void CSCursorLeft(BOOL AffectMargin)    // CUB / HPB
1712  {  {
1713          int NewX;          int NewX, leftMargin;
1714    
1715          if (Param[1] < 1)          if (Param[1] < 1)
1716                  Param[1] = 1;                  Param[1] = 1;
1717    
1718          if (CursorX < Param[1])          if (AffectMargin && CursorX >= CursorLeftM)
1719                  NewX = 0;                  leftMargin = CursorLeftM;
1720          else          else
1721                  NewX = CursorX - Param[1];                  leftMargin = 0;
1722    
1723          if (CursorX >= CursorLeftM && NewX < CursorLeftM)          NewX = CursorX  - Param[1];
1724                  NewX = CursorLeftM;          if (NewX < leftMargin)
1725                    NewX = leftMargin;
1726    
1727          MoveCursor(NewX, CursorY);          MoveCursor(NewX, CursorY);
1728  }  }
# Line 3562  void ParseCS(BYTE b) /* b is the final c Line 3563  void ParseCS(BYTE b) /* b is the final c
3563                          switch (b) {                          switch (b) {
3564                          // ISO/IEC 6429 / ECMA-48 Sequence                          // ISO/IEC 6429 / ECMA-48 Sequence
3565                            case '@': CSInsertCharacter(); break;   // ICH                            case '@': CSInsertCharacter(); break;   // ICH
3566                            case 'A': CSCursorUp(); break;          // CUU                            case 'A': CSCursorUp(TRUE); break;      // CUU
3567                            case 'B': CSCursorDown(); break;        // CUD                            case 'B': CSCursorDown(TRUE); break;    // CUD
3568                            case 'C': CSCursorRight(); break;       // CUF                            case 'C': CSCursorRight(TRUE); break;   // CUF
3569                            case 'D': CSCursorLeft(); break;        // CUB                            case 'D': CSCursorLeft(TRUE); break;    // CUB
3570                            case 'E': CSCursorDown1(); break;       // CNL                            case 'E': CSCursorDown1(); break;       // CNL
3571                            case 'F': CSCursorUp1(); break;         // CPL                            case 'F': CSCursorUp1(); break;         // CPL
3572                            case 'G': CSMoveToColumnN(); break;     // CHA                            case 'G': CSMoveToColumnN(); break;     // CHA
# Line 3593  void ParseCS(BYTE b) /* b is the final c Line 3594  void ParseCS(BYTE b) /* b is the final c
3594  //                        case ']': break;                        // SDS  -- Not support  //                        case ']': break;                        // SDS  -- Not support
3595  //                        case '^': break;                        // SIMD -- Not support  //                        case '^': break;                        // SIMD -- Not support
3596                            case '`': CSMoveToColumnN(); break;     // HPA                            case '`': CSMoveToColumnN(); break;     // HPA
3597                            case 'a': CSCursorRight(); break;       // HPR                            case 'a': CSCursorRight(FALSE); break;  // HPR
3598  //                        case 'b': break;                        // REP  -- Not support  //                        case 'b': break;                        // REP  -- Not support
3599                            case 'c': AnswerTerminalType(); break;  // DA                            case 'c': AnswerTerminalType(); break;  // DA
3600                            case 'd': CSMoveToLineN(); break;       // VPA                            case 'd': CSMoveToLineN(); break;       // VPA
3601                            case 'e': CSCursorDown(); break;        // VPR                            case 'e': CSCursorDown(FALSE); break;   // VPR
3602                            case 'f': CSMoveToXY(); break;          // HVP                            case 'f': CSMoveToXY(); break;          // HVP
3603                            case 'g': CSDeleteTabStop(); break;     // TBC                            case 'g': CSDeleteTabStop(); break;     // TBC
3604                            case 'h': CS_h_Mode(); break;           // SM                            case 'h': CS_h_Mode(); break;           // SM
3605                            case 'i': CS_i_Mode(); break;           // MC                            case 'i': CS_i_Mode(); break;           // MC
3606                            case 'j': CSCursorLeft(); break;        // HPB                            case 'j': CSCursorLeft(FALSE); break;   // HPB
3607                            case 'k': CSCursorUp();                 // VPB                            case 'k': CSCursorUp(FALSE); break;     // VPB
3608                            case 'l': CS_l_Mode(); break;           // RM                            case 'l': CS_l_Mode(); break;           // RM
3609                            case 'm': CSSetAttr(); break;           // SGR                            case 'm': CSSetAttr(); break;           // SGR
3610                            case 'n': CS_n_Mode(); break;           // DSR                            case 'n': CS_n_Mode(); break;           // DSR

Legend:
Removed from v.5423  
changed lines
  Added in v.5429

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