| 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 |
{ |
{ |
| 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 |
} |
} |
| 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 |
| 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 |