| 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 |
| 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) |