blob: b435655e8b9c0ff106878ea43f97a43f906bd20b [file] [log] [blame]
Bram Moolenaare4f25e42017-07-07 11:54:15 +02001INIT
2UTF8 1
3WANTSTATE se
4
5!ICH
6RESET
7 erase 0..25,0..80
8 ?cursor = 0,0
9PUSH "ACD"
10PUSH "\e[2D"
11 ?cursor = 0,1
12PUSH "\e[@"
13 scrollrect 0..1,1..80 => +0,-1
14 ?cursor = 0,1
15PUSH "B"
16 ?cursor = 0,2
17PUSH "\e[3@"
18 scrollrect 0..1,2..80 => +0,-3
19
20!ICH with DECSLRM
21PUSH "\e[?69h"
22PUSH "\e[;50s"
23PUSH "\e[20G\e[@"
24 scrollrect 0..1,19..50 => +0,-1
25
26!ICH outside DECSLRM
27PUSH "\e[70G\e[@"
28 # nothing happens
29
30!DCH
31RESET
32 erase 0..25,0..80
33 ?cursor = 0,0
34PUSH "ABBC"
35PUSH "\e[3D"
36 ?cursor = 0,1
37PUSH "\e[P"
38 scrollrect 0..1,1..80 => +0,+1
39 ?cursor = 0,1
40PUSH "\e[3P"
41 scrollrect 0..1,1..80 => +0,+3
42 ?cursor = 0,1
43
44!DCH with DECSLRM
45PUSH "\e[?69h"
46PUSH "\e[;50s"
47PUSH "\e[20G\e[P"
48 scrollrect 0..1,19..50 => +0,+1
49
50!DCH outside DECSLRM
51PUSH "\e[70G\e[P"
52 # nothing happens
53
54!ECH
55RESET
56 erase 0..25,0..80
57 ?cursor = 0,0
58PUSH "ABC"
59PUSH "\e[2D"
60 ?cursor = 0,1
61PUSH "\e[X"
62 erase 0..1,1..2
63 ?cursor = 0,1
64PUSH "\e[3X"
65 erase 0..1,1..4
66 ?cursor = 0,1
67# ECH more columns than there are should be bounded
68PUSH "\e[100X"
69 erase 0..1,1..80
70
71!IL
72RESET
73 erase 0..25,0..80
74 ?cursor = 0,0
75PUSH "A\r\nC"
76 ?cursor = 1,1
77PUSH "\e[L"
78 scrollrect 1..25,0..80 => -1,+0
79 # TODO: ECMA-48 says we should move to line home, but neither xterm nor
80 # xfce4-terminal do this
81 ?cursor = 1,1
82PUSH "\rB"
83 ?cursor = 1,1
84PUSH "\e[3L"
85 scrollrect 1..25,0..80 => -3,+0
86
87!IL with DECSTBM
88PUSH "\e[5;15r"
89PUSH "\e[5H\e[L"
90 scrollrect 4..15,0..80 => -1,+0
91
92!IL outside DECSTBM
93PUSH "\e[20H\e[L"
94 # nothing happens
95
96!IL with DECSTBM+DECSLRM
97PUSH "\e[?69h"
98PUSH "\e[10;50s"
99PUSH "\e[5;10H\e[L"
100 scrollrect 4..15,9..50 => -1,+0
101
102!DL
103RESET
104 erase 0..25,0..80
105 ?cursor = 0,0
106PUSH "A\r\nB\r\nB\r\nC"
107 ?cursor = 3,1
108PUSH "\e[2H"
109 ?cursor = 1,0
110PUSH "\e[M"
111 scrollrect 1..25,0..80 => +1,+0
112 ?cursor = 1,0
113PUSH "\e[3M"
114 scrollrect 1..25,0..80 => +3,+0
115 ?cursor = 1,0
116
117!DL with DECSTBM
118PUSH "\e[5;15r"
119PUSH "\e[5H\e[M"
120 scrollrect 4..15,0..80 => +1,+0
121
122!DL outside DECSTBM
123PUSH "\e[20H\e[M"
124 # nothing happens
125
126!DL with DECSTBM+DECSLRM
127PUSH "\e[?69h"
128PUSH "\e[10;50s"
129PUSH "\e[5;10H\e[M"
130 scrollrect 4..15,9..50 => +1,+0
131
132!DECIC
133RESET
134 erase 0..25,0..80
135PUSH "\e[20G\e[5'}"
136 scrollrect 0..25,19..80 => +0,-5
137
138!DECIC with DECSTBM+DECSLRM
139PUSH "\e[?69h"
140PUSH "\e[4;20r\e[20;60s"
141PUSH "\e[4;20H\e[3'}"
142 scrollrect 3..20,19..60 => +0,-3
143
144!DECIC outside DECSLRM
145PUSH "\e[70G\e['}"
146 # nothing happens
147
148!DECDC
149RESET
150 erase 0..25,0..80
151PUSH "\e[20G\e[5'~"
152 scrollrect 0..25,19..80 => +0,+5
153
154!DECDC with DECSTBM+DECSLRM
155PUSH "\e[?69h"
156PUSH "\e[4;20r\e[20;60s"
157PUSH "\e[4;20H\e[3'~"
158 scrollrect 3..20,19..60 => +0,+3
159
160!DECDC outside DECSLRM
161PUSH "\e[70G\e['~"
162 # nothing happens
163
164!EL 0
165RESET
166 erase 0..25,0..80
167 ?cursor = 0,0
168PUSH "ABCDE"
169PUSH "\e[3D"
170 ?cursor = 0,2
171PUSH "\e[0K"
172 erase 0..1,2..80
173 ?cursor = 0,2
174
175!EL 1
176RESET
177 erase 0..25,0..80
178 ?cursor = 0,0
179PUSH "ABCDE"
180PUSH "\e[3D"
181 ?cursor = 0,2
182PUSH "\e[1K"
183 erase 0..1,0..3
184 ?cursor = 0,2
185
186!EL 2
187RESET
188 erase 0..25,0..80
189 ?cursor = 0,0
190PUSH "ABCDE"
191PUSH "\e[3D"
192 ?cursor = 0,2
193PUSH "\e[2K"
194 erase 0..1,0..80
195 ?cursor = 0,2
196
197!SEL
198RESET
199 erase 0..25,0..80
200 ?cursor = 0,0
201PUSH "\e[11G"
202 ?cursor = 0,10
203PUSH "\e[?0K"
204 erase 0..1,10..80 selective
205 ?cursor = 0,10
206PUSH "\e[?1K"
207 erase 0..1,0..11 selective
208 ?cursor = 0,10
209PUSH "\e[?2K"
210 erase 0..1,0..80 selective
211 ?cursor = 0,10
212
213!ED 0
214RESET
215 erase 0..25,0..80
216 ?cursor = 0,0
217PUSH "\e[2;2H"
218 ?cursor = 1,1
219PUSH "\e[0J"
220 erase 1..2,1..80
221 erase 2..25,0..80
222 ?cursor = 1,1
223
224!ED 1
225RESET
226 erase 0..25,0..80
227 ?cursor = 0,0
228PUSH "\e[2;2H"
229 ?cursor = 1,1
230PUSH "\e[1J"
231 erase 0..1,0..80
232 erase 1..2,0..2
233 ?cursor = 1,1
234
235!ED 2
236RESET
237 erase 0..25,0..80
238 ?cursor = 0,0
239PUSH "\e[2;2H"
240 ?cursor = 1,1
241PUSH "\e[2J"
242 erase 0..25,0..80
243 ?cursor = 1,1
244
245!SED
246RESET
247 erase 0..25,0..80
248PUSH "\e[5;5H"
249 ?cursor = 4,4
250PUSH "\e[?0J"
251 erase 4..5,4..80 selective
252 erase 5..25,0..80 selective
253 ?cursor = 4,4
254PUSH "\e[?1J"
255 erase 0..4,0..80 selective
256 erase 4..5,0..5 selective
257 ?cursor = 4,4
258PUSH "\e[?2J"
259 erase 0..25,0..80 selective
260 ?cursor = 4,4
261
262!DECRQSS on DECSCA
263PUSH "\e[2\"q"
264PUSH "\eP\$q\"q\e\\"
265 output "\eP1\$r2\"q\e\\"
266
267WANTSTATE -s+m
268
269!ICH move+erase emuation
270RESET
271 erase 0..25,0..80
272 ?cursor = 0,0
273PUSH "ACD"
274PUSH "\e[2D"
275 ?cursor = 0,1
276PUSH "\e[@"
277 moverect 0..1,1..79 -> 0..1,2..80
278 erase 0..1,1..2
279 ?cursor = 0,1
280PUSH "B"
281 ?cursor = 0,2
282PUSH "\e[3@"
283 moverect 0..1,2..77 -> 0..1,5..80
284 erase 0..1,2..5
285
286!DCH move+erase emulation
287RESET
288 erase 0..25,0..80
289 ?cursor = 0,0
290PUSH "ABBC"
291PUSH "\e[3D"
292 ?cursor = 0,1
293PUSH "\e[P"
294 moverect 0..1,2..80 -> 0..1,1..79
295 erase 0..1,79..80
296 ?cursor = 0,1
297PUSH "\e[3P"
298 moverect 0..1,4..80 -> 0..1,1..77
299 erase 0..1,77..80
300 ?cursor = 0,1