blob: 791a96cdb978af4fea7dc88520d4bc6e9bf20387 [file] [log] [blame]
Bram Moolenaare4f25e42017-07-07 11:54:15 +02001INIT
2WANTSCREEN Db
3
4!Putglyph
5RESET
6 damage 0..25,0..80
7PUSH "123"
8 damage 0..1,0..1 = 0<31>
9 damage 0..1,1..2 = 0<32>
10 damage 0..1,2..3 = 0<33>
11
12!Erase
13PUSH "\e[H"
14PUSH "\e[3X"
15 damage 0..1,0..3
16
17!Scroll damages entire line in two chunks
18PUSH "\e[H\e[5@"
19 damage 0..1,5..80
20 damage 0..1,0..5
21
22!Scroll down damages entire screen in two chunks
23PUSH "\e[T"
24 damage 1..25,0..80
25 damage 0..1,0..80
26
27!Altscreen damages entire area
28PUSH "\e[?1049h"
29 damage 0..25,0..80
30PUSH "\e[?1049l"
31 damage 0..25,0..80
32
33WANTSCREEN m
34
35!Scroll invokes moverect but not damage
36PUSH "\e[5@"
37 moverect 0..1,0..75 -> 0..1,5..80
38 damage 0..1,0..5
39
40WANTSCREEN -m
41
42!Merge to cells
43RESET
44 damage 0..25,0..80
45DAMAGEMERGE CELL
46
47PUSH "A"
48 damage 0..1,0..1 = 0<41>
49PUSH "B"
50 damage 0..1,1..2 = 0<42>
51PUSH "C"
52 damage 0..1,2..3 = 0<43>
53
54!Merge entire rows
55RESET
56 damage 0..25,0..80
57DAMAGEMERGE ROW
58
59PUSH "ABCDE\r\nEFGH"
60 damage 0..1,0..5 = 0<41 42 43 44 45>
61DAMAGEFLUSH
62 damage 1..2,0..4 = 1<45 46 47 48>
63PUSH "\e[3;6r\e[6H\eD"
64 damage 2..5,0..80
65DAMAGEFLUSH
66 damage 5..6,0..80
67
68!Merge entire screen
69RESET
70 damage 0..25,0..80
71DAMAGEMERGE SCREEN
72
73PUSH "ABCDE\r\nEFGH"
74DAMAGEFLUSH
75 damage 0..2,0..5 = 0<41 42 43 44 45> 1<45 46 47 48>
76PUSH "\e[3;6r\e[6H\eD"
77DAMAGEFLUSH
78 damage 2..6,0..80
79
80!Merge entire screen with moverect
81WANTSCREEN m
82
83RESET
84 damage 0..25,0..80
85DAMAGEMERGE SCREEN
86
87PUSH "ABCDE\r\nEFGH"
88PUSH "\e[3;6r\e[6H\eD"
89 damage 0..2,0..5 = 0<41 42 43 44 45> 1<45 46 47 48>
90 moverect 3..6,0..80 -> 2..5,0..80
91DAMAGEFLUSH
92 damage 5..6,0..80
93
94!Merge scroll
95RESET
96 damage 0..25,0..80
97DAMAGEMERGE SCROLL
98
99PUSH "\e[H1\r\n2\r\n3"
100PUSH "\e[25H\n\n\n"
101 sb_pushline 80 = 31
102 sb_pushline 80 = 32
103 sb_pushline 80 = 33
104DAMAGEFLUSH
105 moverect 3..25,0..80 -> 0..22,0..80
106 damage 0..25,0..80
107
108!Merge scroll with damage
109PUSH "\e[25H"
110PUSH "ABCDE\r\nEFGH\r\n"
111 sb_pushline 80 =
112 sb_pushline 80 =
113DAMAGEFLUSH
114 moverect 2..25,0..80 -> 0..23,0..80
115 damage 22..25,0..80 = 22<41 42 43 44 45> 23<45 46 47 48>
116
117!Merge scroll with damage past region
118PUSH "\e[3;6r\e[6H1\r\n2\r\n3\r\n4\r\n5"
119DAMAGEFLUSH
120 damage 2..6,0..80 = 2<32> 3<33> 4<34> 5<35>
121
122!Damage entirely outside scroll region
123PUSH "\e[HABC\e[3;6r\e[6H\r\n6"
124 damage 0..1,0..3 = 0<41 42 43>
125DAMAGEFLUSH
126 moverect 3..6,0..80 -> 2..5,0..80
127 damage 5..6,0..80 = 5<36>
128
129!Damage overlapping scroll region
130PUSH "\e[H\e[2J"
131DAMAGEFLUSH
132 damage 0..25,0..80
133
134PUSH "\e[HABCD\r\nEFGH\r\nIJKL\e[2;5r\e[5H\r\nMNOP"
135DAMAGEFLUSH
136 moverect 2..5,0..80 -> 1..4,0..80
137 damage 0..5,0..80 = 0<41 42 43 44> 1<49 4A 4B 4C>
138 ## TODO: is this right?
139
140!Merge scroll*2 with damage
141RESET
142 damage 0..25,0..80
143DAMAGEMERGE SCROLL
144
145PUSH "\e[25H\r\nABCDE\b\b\b\e[2P\r\n"
146 sb_pushline 80 =
147 moverect 1..25,0..80 -> 0..24,0..80
148 damage 24..25,0..80 = 24<41 42 43 44 45>
149 moverect 24..25,4..80 -> 24..25,2..78
150 damage 24..25,78..80
151 sb_pushline 80 =
152DAMAGEFLUSH
153 moverect 1..25,0..80 -> 0..24,0..80
154 damage 24..25,0..80
155 ?screen_chars 23,0,24,5 = 0x41,0x42,0x45