|
|
|
@ -640,7 +640,7 @@ typedef enum {
|
|
|
|
|
STATE_DA_1_SEMI, // got '1;'
|
|
|
|
|
STATE_DA_1_0, // got '1;0', XTSMGRAPHICS color registers or VT101
|
|
|
|
|
STATE_DA_6, // got '6', could be VT102 or VT220/VT320/VT420
|
|
|
|
|
STATE_DA_DRAIN, // drain out the primary DA to 'c'
|
|
|
|
|
STATE_DA_DRAIN, // drain out the primary DA to an alpha
|
|
|
|
|
STATE_SIXEL,// XTSMGRAPHICS about Sixel geometry (got '2')
|
|
|
|
|
STATE_SIXEL_SEMI1, // got first semicolon in sixel geometry, want Ps
|
|
|
|
|
STATE_SIXEL_SUCCESS, // got Ps == 0, want second semicolon
|
|
|
|
@ -1049,36 +1049,33 @@ pump_control_read(query_state* inits, unsigned char c){
|
|
|
|
|
inits->state = STATE_DA_DRAIN;
|
|
|
|
|
}else if(c == '6'){
|
|
|
|
|
inits->state = STATE_DA_6;
|
|
|
|
|
}else if(c == 'c'){
|
|
|
|
|
}else if(c >= 0x40 && c <= 0x7E){
|
|
|
|
|
inits->state = STATE_NULL;
|
|
|
|
|
return 1;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case STATE_DA_1:
|
|
|
|
|
if(c == 'c'){
|
|
|
|
|
if(c >= 0x40 && c <= 0x7E){
|
|
|
|
|
inits->state = STATE_NULL;
|
|
|
|
|
return 1;
|
|
|
|
|
}else if(c == ';'){
|
|
|
|
|
inits->state = STATE_DA_1_SEMI;
|
|
|
|
|
}else{
|
|
|
|
|
// FIXME error?
|
|
|
|
|
}
|
|
|
|
|
} // FIXME error?
|
|
|
|
|
break;
|
|
|
|
|
case STATE_DA_1_SEMI:
|
|
|
|
|
if(c == '2'){ // VT100 with Advanced Video Option
|
|
|
|
|
inits->state = STATE_DA_DRAIN;
|
|
|
|
|
}else if(c == '0'){
|
|
|
|
|
inits->state = STATE_DA_1_0;
|
|
|
|
|
}
|
|
|
|
|
}else if(c >= 0x40 && c <= 0x7E){
|
|
|
|
|
inits->state = STATE_NULL;
|
|
|
|
|
} // FIXME error?
|
|
|
|
|
break;
|
|
|
|
|
case STATE_DA_1_0:
|
|
|
|
|
if(c == 'c'){ // VT101 with No Options
|
|
|
|
|
if(c >= 0x40 && c <= 0x7E){
|
|
|
|
|
inits->state = STATE_NULL;
|
|
|
|
|
}else if(c == ';'){
|
|
|
|
|
inits->state = STATE_SIXEL_CREGS;
|
|
|
|
|
}else{
|
|
|
|
|
// FIXME error?
|
|
|
|
|
}
|
|
|
|
|
} // FIXME error?
|
|
|
|
|
break;
|
|
|
|
|
case STATE_SIXEL_CREGS:
|
|
|
|
|
if(c == 'S'){
|
|
|
|
@ -1089,14 +1086,14 @@ pump_control_read(query_state* inits, unsigned char c){
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case STATE_DA_6:
|
|
|
|
|
if(c == 'c'){
|
|
|
|
|
if(c >= 0x40 && c <= 0x7E){
|
|
|
|
|
inits->state = STATE_NULL;
|
|
|
|
|
return 1;
|
|
|
|
|
}
|
|
|
|
|
// FIXME
|
|
|
|
|
break;
|
|
|
|
|
case STATE_DA_DRAIN:
|
|
|
|
|
if(c == 'c'){
|
|
|
|
|
if(c >= 0x40 && c <= 0x7E){
|
|
|
|
|
inits->state = STATE_NULL;
|
|
|
|
|
return 1;
|
|
|
|
|
}
|
|
|
|
|