INIT UTF8 1 WANTSTATE seb !ICH RESET erase 0..25,0..80 ?cursor = 0,0 PUSH "ACD" PUSH "\e[2D" ?cursor = 0,1 PUSH "\e[@" scrollrect 0..1,1..80 => +0,-1 ?cursor = 0,1 PUSH "B" ?cursor = 0,2 PUSH "\e[3@" scrollrect 0..1,2..80 => +0,-3 !ICH with DECSLRM PUSH "\e[?69h" PUSH "\e[;50s" PUSH "\e[20G\e[@" scrollrect 0..1,19..50 => +0,-1 !ICH outside DECSLRM PUSH "\e[70G\e[@" # nothing happens !DCH RESET erase 0..25,0..80 ?cursor = 0,0 PUSH "ABBC" PUSH "\e[3D" ?cursor = 0,1 PUSH "\e[P" scrollrect 0..1,1..80 => +0,+1 ?cursor = 0,1 PUSH "\e[3P" scrollrect 0..1,1..80 => +0,+3 ?cursor = 0,1 !DCH with DECSLRM PUSH "\e[?69h" PUSH "\e[;50s" PUSH "\e[20G\e[P" scrollrect 0..1,19..50 => +0,+1 !DCH outside DECSLRM PUSH "\e[70G\e[P" # nothing happens !ECH RESET erase 0..25,0..80 ?cursor = 0,0 PUSH "ABC" PUSH "\e[2D" ?cursor = 0,1 PUSH "\e[X" erase 0..1,1..2 ?cursor = 0,1 PUSH "\e[3X" erase 0..1,1..4 ?cursor = 0,1 # ECH more columns than there are should be bounded PUSH "\e[100X" erase 0..1,1..80 !IL RESET erase 0..25,0..80 ?cursor = 0,0 PUSH "A\r\nC" ?cursor = 1,1 PUSH "\e[L" scrollrect 1..25,0..80 => -1,+0 # TODO: ECMA-48 says we should move to line home, but neither xterm nor # xfce4-terminal do this ?cursor = 1,1 PUSH "\rB" ?cursor = 1,1 PUSH "\e[3L" scrollrect 1..25,0..80 => -3,+0 !IL with DECSTBM PUSH "\e[5;15r" PUSH "\e[5H\e[L" scrollrect 4..15,0..80 => -1,+0 !IL outside DECSTBM PUSH "\e[20H\e[L" # nothing happens !IL with DECSTBM+DECSLRM PUSH "\e[?69h" PUSH "\e[10;50s" PUSH "\e[5;10H\e[L" scrollrect 4..15,9..50 => -1,+0 !DL RESET erase 0..25,0..80 ?cursor = 0,0 PUSH "A\r\nB\r\nB\r\nC" ?cursor = 3,1 PUSH "\e[2H" ?cursor = 1,0 PUSH "\e[M" scrollrect 1..25,0..80 => +1,+0 ?cursor = 1,0 PUSH "\e[3M" scrollrect 1..25,0..80 => +3,+0 ?cursor = 1,0 !DL with DECSTBM PUSH "\e[5;15r" PUSH "\e[5H\e[M" scrollrect 4..15,0..80 => +1,+0 !DL outside DECSTBM PUSH "\e[20H\e[M" # nothing happens !DL with DECSTBM+DECSLRM PUSH "\e[?69h" PUSH "\e[10;50s" PUSH "\e[5;10H\e[M" scrollrect 4..15,9..50 => +1,+0 !DECIC RESET erase 0..25,0..80 PUSH "\e[20G\e[5'}" scrollrect 0..25,19..80 => +0,-5 !DECIC with DECSTBM+DECSLRM PUSH "\e[?69h" PUSH "\e[4;20r\e[20;60s" PUSH "\e[4;20H\e[3'}" scrollrect 3..20,19..60 => +0,-3 !DECIC outside DECSLRM PUSH "\e[70G\e['}" # nothing happens !DECDC RESET erase 0..25,0..80 PUSH "\e[20G\e[5'~" scrollrect 0..25,19..80 => +0,+5 !DECDC with DECSTBM+DECSLRM PUSH "\e[?69h" PUSH "\e[4;20r\e[20;60s" PUSH "\e[4;20H\e[3'~" scrollrect 3..20,19..60 => +0,+3 !DECDC outside DECSLRM PUSH "\e[70G\e['~" # nothing happens !EL 0 RESET erase 0..25,0..80 ?cursor = 0,0 PUSH "ABCDE" PUSH "\e[3D" ?cursor = 0,2 PUSH "\e[0K" erase 0..1,2..80 ?cursor = 0,2 !EL 1 RESET erase 0..25,0..80 ?cursor = 0,0 PUSH "ABCDE" PUSH "\e[3D" ?cursor = 0,2 PUSH "\e[1K" erase 0..1,0..3 ?cursor = 0,2 !EL 2 RESET erase 0..25,0..80 ?cursor = 0,0 PUSH "ABCDE" PUSH "\e[3D" ?cursor = 0,2 PUSH "\e[2K" erase 0..1,0..80 ?cursor = 0,2 !SEL RESET erase 0..25,0..80 ?cursor = 0,0 PUSH "\e[11G" ?cursor = 0,10 PUSH "\e[?0K" erase 0..1,10..80 selective ?cursor = 0,10 PUSH "\e[?1K" erase 0..1,0..11 selective ?cursor = 0,10 PUSH "\e[?2K" erase 0..1,0..80 selective ?cursor = 0,10 !ED 0 RESET erase 0..25,0..80 ?cursor = 0,0 PUSH "\e[2;2H" ?cursor = 1,1 PUSH "\e[0J" erase 1..2,1..80 erase 2..25,0..80 ?cursor = 1,1 !ED 1 RESET erase 0..25,0..80 ?cursor = 0,0 PUSH "\e[2;2H" ?cursor = 1,1 PUSH "\e[1J" erase 0..1,0..80 erase 1..2,0..2 ?cursor = 1,1 !ED 2 RESET erase 0..25,0..80 ?cursor = 0,0 PUSH "\e[2;2H" ?cursor = 1,1 PUSH "\e[2J" erase 0..25,0..80 ?cursor = 1,1 !ED 3 PUSH "\e[3J" sb_clear !SED RESET erase 0..25,0..80 PUSH "\e[5;5H" ?cursor = 4,4 PUSH "\e[?0J" erase 4..5,4..80 selective erase 5..25,0..80 selective ?cursor = 4,4 PUSH "\e[?1J" erase 0..4,0..80 selective erase 4..5,0..5 selective ?cursor = 4,4 PUSH "\e[?2J" erase 0..25,0..80 selective ?cursor = 4,4 !DECRQSS on DECSCA PUSH "\e[2\"q" PUSH "\eP\$q\"q\e\\" output "\eP1\$r2\"q\e\\" WANTSTATE -s+m !ICH move+erase emuation RESET erase 0..25,0..80 ?cursor = 0,0 PUSH "ACD" PUSH "\e[2D" ?cursor = 0,1 PUSH "\e[@" moverect 0..1,1..79 -> 0..1,2..80 erase 0..1,1..2 ?cursor = 0,1 PUSH "B" ?cursor = 0,2 PUSH "\e[3@" moverect 0..1,2..77 -> 0..1,5..80 erase 0..1,2..5 !DCH move+erase emulation RESET erase 0..25,0..80 ?cursor = 0,0 PUSH "ABBC" PUSH "\e[3D" ?cursor = 0,1 PUSH "\e[P" moverect 0..1,2..80 -> 0..1,1..79 erase 0..1,79..80 ?cursor = 0,1 PUSH "\e[3P" moverect 0..1,4..80 -> 0..1,1..77 erase 0..1,77..80 ?cursor = 0,1