Rev 478 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 478 | Rev 485 | ||
---|---|---|---|
1 | ;============================================================================= |
1 | ;============================================================================= |
2 | ; |
2 | ; |
3 | ; MGB - Menuet Graphics Benchmark 0.3 |
3 | ; MGB - Menuet Graphics Benchmark 0.3 |
4 | ; Compile with FASM |
4 | ; Compile with FASM |
5 | ; |
5 | ; |
6 | ;============================================================================= |
6 | ;============================================================================= |
7 | ; |
7 | ; |
8 | ; Original author and copyrights holder: |
8 | ; Original author and copyrights holder: |
9 | ; Mikhail Lisovin a.k.a. Mihasik |
9 | ; Mikhail Lisovin a.k.a. Mihasik |
10 | ; lisovin@26.ru |
10 | ; lisovin@26.ru |
11 | ; |
11 | ; |
12 | ; Disassembled with IDA 5.0.0.879: |
12 | ; Disassembled with IDA 5.0.0.879: |
13 | ; http://www.datarescue.com/ |
13 | ; http://www.datarescue.com/ |
14 | ; With use of 'ida.int' and 'kloader.ldw': |
14 | ; With use of 'ida.int' and 'kloader.ldw': |
15 | ; Eugene Grechnikov a.k.a. diamond |
15 | ; Eugene Grechnikov a.k.a. diamond |
16 | ; diamondz@land.ru |
16 | ; diamondz@land.ru |
17 | ; http://diamondz.land.ru/ |
17 | ; http://diamondz.land.ru/ |
18 | ; |
18 | ; |
19 | ; Modified for version 0.3: |
19 | ; Modified for version 0.3: |
20 | ; Mike Semenako a.k.a mike.dld |
20 | ; Mike Semenako a.k.a mike.dld |
21 | ; mike.dld@gmail.com |
21 | ; mike.dld@gmail.com |
22 | ; http://www.mikedld.com/ |
22 | ; http://www.mikedld.com/ |
23 | ; |
23 | ; |
24 | ;============================================================================= |
24 | ;============================================================================= |
25 | 25 | ||
26 | org 0x0 |
26 | org 0x0 |
27 | use32 |
27 | use32 |
28 | 28 | ||
29 | db 'MENUET01' |
29 | db 'MENUET01' |
30 | dd 1 |
30 | dd 1 |
31 | dd start |
31 | dd start |
32 | dd APP_MEM_END |
32 | dd APP_MEM_END |
33 | dd 0x200000 |
33 | dd 0x200000 |
34 | dd 0x07FFF0 |
34 | dd 0x07FFF0 |
35 | dd 0 |
35 | dd 0 |
36 | dd 0 |
36 | dd 0 |
37 | 37 | ||
38 | include 'macros.inc' |
38 | include '..\..\..\macros.inc' |
39 | ;__CPU_type equ p6 ; charge it |
39 | ;__CPU_type equ p6 ; charge it |
40 | 40 | ||
41 | include 'proc32.inc' |
41 | include 'proc32.inc' |
42 | 42 | ||
43 | ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ |
43 | ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ |
44 | 44 | ||
45 | 45 | ||
46 | proc start ; DATA XREF: seg000:off_Co |
46 | proc start ; DATA XREF: seg000:off_Co |
47 | 47 | ||
48 | ; FUNCTION CHUNK AT 000000CF SIZE 00000147 BYTES |
48 | ; FUNCTION CHUNK AT 000000CF SIZE 00000147 BYTES |
49 | 49 | ||
50 | mov ecx, -1 |
50 | mov ecx, -1 |
51 | call subGetThreadInfo |
51 | call subGetThreadInfo |
52 | mov edx, [dwMainPID] |
52 | mov edx, [dwMainPID] |
53 | mov ecx, eax |
53 | mov ecx, eax |
54 | 54 | ||
55 | loc_36: ; CODE XREF: start+20j |
55 | loc_36: ; CODE XREF: start+20j |
56 | call subGetThreadInfo |
56 | call subGetThreadInfo |
57 | 57 | ||
58 | loc_3B: |
58 | loc_3B: |
59 | cmp edx, [dwMainPID] |
59 | cmp edx, [dwMainPID] |
60 | jz loc_46 |
60 | jz loc_46 |
61 | dec ecx |
61 | dec ecx |
62 | jnz loc_36 |
62 | jnz loc_36 |
63 | 63 | ||
64 | loc_46: ; CODE XREF: start+1Dj |
64 | loc_46: ; CODE XREF: start+1Dj |
65 | mov [dwMainWndSlot], ecx |
65 | mov [dwMainWndSlot], ecx |
66 | 66 | ||
67 | locRedrawEvent: ; CODE XREF: start+3Cj |
67 | locRedrawEvent: ; CODE XREF: start+3Cj |
68 | call subDrawMainWindow |
68 | call subDrawMainWindow |
69 | 69 | ||
70 | locWaitForEvent: ; CODE XREF: start+6Cj start:loc_B3j ... |
70 | locWaitForEvent: ; CODE XREF: start+6Cj start:loc_B3j ... |
71 | mcall 23, 20 ; Kolibri - WAIT FOR EVENT WITH TIMEOUT |
71 | mcall 23, 20 ; Kolibri - WAIT FOR EVENT WITH TIMEOUT |
72 | ; ebx = timeout |
72 | ; ebx = timeout |
73 | ; Return: eax = event |
73 | ; Return: eax = event |
74 | cmp eax, 1 |
74 | cmp eax, 1 |
75 | jz locRedrawEvent |
75 | jz locRedrawEvent |
76 | 76 | ||
77 | loc_62: |
77 | loc_62: |
78 | cmp eax, 2 |
78 | cmp eax, 2 |
79 | jz locKeyEvent |
79 | jz locKeyEvent |
80 | cmp eax, 3 |
80 | cmp eax, 3 |
81 | 81 | ||
82 | loc_6A: |
82 | loc_6A: |
83 | jz locButtonEvent |
83 | jz locButtonEvent |
84 | 84 | ||
85 | loc_70: |
85 | loc_70: |
86 | ;btr word[wFlags], 2 |
86 | ;btr word[wFlags], 2 |
87 | ;jnb loc_87 |
87 | ;jnb loc_87 |
88 | ;mov eax, 58 |
88 | ;mov eax, 58 |
89 | ;mov ebx, stFileInfoBlock |
89 | ;mov ebx, stFileInfoBlock |
90 | ;int 0x40 ; Kolibri - ACCESS TO FILE SYSTEM (obsolete) |
90 | ;int 0x40 ; Kolibri - ACCESS TO FILE SYSTEM (obsolete) |
91 | ; ebx -> fileinfo struc |
91 | ; ebx -> fileinfo struc |
92 | 92 | ||
93 | loc_87: ; CODE XREF: start+55j |
93 | loc_87: ; CODE XREF: start+55j |
94 | btr word[wFlags], 1 |
94 | btr word[wFlags], 1 |
95 | jnb locWaitForEvent |
95 | jnb locWaitForEvent |
96 | call subDelay100ms |
96 | call subDelay100ms |
97 | mcall 0x12, 3, [dwMainWndSlot] ; Kolibri - ACTIVATE WINDOW |
97 | mcall 0x12, 3, [dwMainWndSlot] ; Kolibri - ACTIVATE WINDOW |
98 | ; ecx = slot |
98 | ; ecx = slot |
99 | call subDelay100ms |
99 | call subDelay100ms |
100 | 100 | ||
101 | loc_AE: |
101 | loc_AE: |
102 | call subDrawBars |
102 | call subDrawBars |
103 | 103 | ||
104 | loc_B3: |
104 | loc_B3: |
105 | jmp locWaitForEvent |
105 | jmp locWaitForEvent |
106 | endp |
106 | endp |
107 | 107 | ||
108 | 108 | ||
109 | ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ |
109 | ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ |
110 | 110 | ||
111 | 111 | ||
112 | proc subGetThreadInfo ; CODE XREF: start+5p start:loc_36p |
112 | proc subGetThreadInfo ; CODE XREF: start+5p start:loc_36p |
113 | mcall 9, APP_MEM_END ; Kolibri - GET THREAD INFO |
113 | mcall 9, APP_MEM_END ; Kolibri - GET THREAD INFO |
114 | ; ebx -> buffer, ecx = slot (-1 for self) |
114 | ; ebx -> buffer, ecx = slot (-1 for self) |
115 | ; Return: eax = maximum slot |
115 | ; Return: eax = maximum slot |
116 | retn |
116 | retn |
117 | endp |
117 | endp |
118 | 118 | ||
119 | 119 | ||
120 | ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ |
120 | ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ |
121 | 121 | ||
122 | 122 | ||
123 | proc subDelay100ms ; CODE XREF: start+6Ep start+85p |
123 | proc subDelay100ms ; CODE XREF: start+6Ep start+85p |
124 | mcall 5, 0x0a ; Kolibri - DELAY |
124 | mcall 5, 0x0a ; Kolibri - DELAY |
125 | ; ebx = time (in 1/100th of second) |
125 | ; ebx = time (in 1/100th of second) |
126 | retn |
126 | retn |
127 | endp |
127 | endp |
128 | 128 | ||
129 | ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ |
129 | ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ |
130 | ; START OF FUNCTION CHUNK FOR start |
130 | ; START OF FUNCTION CHUNK FOR start |
131 | 131 | ||
132 | locKeyEvent: ; CODE XREF: start+41j |
132 | locKeyEvent: ; CODE XREF: start+41j |
133 | mcall 2 ; Kolibri - GET KEY CODE |
133 | mcall 2 ; Kolibri - GET KEY CODE |
134 | ; Return: ah = keycode |
134 | ; Return: ah = keycode |
135 | cmp ah, 't' |
135 | cmp ah, 't' |
136 | jz locActionTest |
136 | jz locActionTest |
137 | cmp ah, 'c' |
137 | cmp ah, 'c' |
138 | jz locActionComment |
138 | jz locActionComment |
139 | cmp ah, 'p' |
139 | cmp ah, 'p' |
140 | jz locActionPattern |
140 | jz locActionPattern |
141 | cmp ah, 'o' |
141 | cmp ah, 'o' |
142 | jz locActionOpen |
142 | jz locActionOpen |
143 | cmp ah, 's' |
143 | cmp ah, 's' |
144 | jz locActionSave |
144 | jz locActionSave |
145 | jmp locWaitForEvent |
145 | jmp locWaitForEvent |
146 | ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ |
146 | ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ |
147 | 147 | ||
148 | locButtonEvent: ; CODE XREF: start:loc_6Aj |
148 | locButtonEvent: ; CODE XREF: start:loc_6Aj |
149 | mcall 0x11 ; Kolibri - GET PRESSED BUTTON |
149 | mcall 0x11 ; Kolibri - GET PRESSED BUTTON |
150 | ; Return: ah = button ID |
150 | ; Return: ah = button ID |
151 | cmp ah, 1 |
151 | cmp ah, 1 |
152 | jnz locNotClose |
152 | jnz locNotClose |
153 | mcall -1 ; Kolibri - FINISH EXECUTION |
153 | mcall -1 ; Kolibri - FINISH EXECUTION |
154 | 154 | ||
155 | locNotClose: ; CODE XREF: start+E6j |
155 | locNotClose: ; CODE XREF: start+E6j |
156 | cmp ah, 2 |
156 | cmp ah, 2 |
157 | jnz locNotTest |
157 | jnz locNotTest |
158 | 158 | ||
159 | locActionTest: ; CODE XREF: start+B5j |
159 | locActionTest: ; CODE XREF: start+B5j |
160 | bts [wFlags], 0 |
160 | bts [wFlags], 0 |
161 | jb locWaitForEvent |
161 | jb locWaitForEvent |
162 | mcall 5, 50 ; Kolibri - DELAY |
162 | mcall 5, 50 ; Kolibri - DELAY |
163 | ; ebx = time (in 1/100th of second) |
163 | ; ebx = time (in 1/100th of second) |
164 | 164 | ||
165 | loc_132: |
165 | loc_132: |
166 | mcall 51, 1, subTestWndProc, 0x17FFF0; Kolibri - CREATE THREAD |
166 | mcall 51, 1, subTestWndProc, 0x17FFF0; Kolibri - CREATE THREAD |
167 | ; ebx = 1 - unique subfunction |
167 | ; ebx = 1 - unique subfunction |
168 | ; ecx = starting eip |
168 | ; ecx = starting eip |
169 | ; edx = starting esp |
169 | ; edx = starting esp |
170 | jmp locWaitForEvent |
170 | jmp locWaitForEvent |
171 | ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ |
171 | ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ |
172 | 172 | ||
173 | locNotTest: ; CODE XREF: start+F2j |
173 | locNotTest: ; CODE XREF: start+F2j |
174 | cmp ah, 3 |
174 | cmp ah, 3 |
175 | jnz locNotComment |
175 | jnz locNotComment |
176 | 176 | ||
177 | locActionComment: ; CODE XREF: start+BAj |
177 | locActionComment: ; CODE XREF: start+BAj |
178 | bts [wFlags], 0 |
178 | bts [wFlags], 0 |
179 | jb locWaitForEvent |
179 | jb locWaitForEvent |
180 | mov [dwBufferPtr], aComment1 ; "Current "... |
180 | mov [dwBufferPtr], aComment1 ; "Current "... |
181 | mov [dwEditLabel], aComment ; "Comment" |
181 | mov [dwEditLabel], aComment ; "Comment" |
182 | mov [dwEditLabelLen], 7 |
182 | mov [dwEditLabelLen], 7 |
183 | call subCreateOpenSaveDlg |
183 | call subCreateOpenSaveDlg |
184 | jmp locWaitForEvent |
184 | jmp locWaitForEvent |
185 | ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ |
185 | ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ |
186 | 186 | ||
187 | locNotComment: ; CODE XREF: start+12Cj |
187 | locNotComment: ; CODE XREF: start+12Cj |
188 | cmp ah, 4 |
188 | cmp ah, 4 |
189 | jnz locNotPattern |
189 | jnz locNotPattern |
190 | 190 | ||
191 | locActionPattern: ; CODE XREF: start+BFj |
191 | locActionPattern: ; CODE XREF: start+BFj |
192 | call subSavePattern |
192 | call subSavePattern |
193 | call subDrawBars |
193 | call subDrawBars |
194 | jmp locWaitForEvent |
194 | jmp locWaitForEvent |
195 | ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ |
195 | ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ |
196 | 196 | ||
197 | locNotPattern: ; CODE XREF: start+167j |
197 | locNotPattern: ; CODE XREF: start+167j |
198 | cmp ah, 5 |
198 | cmp ah, 5 |
199 | jnz locNotOpen |
199 | jnz locNotOpen |
200 | 200 | ||
201 | locActionOpen: ; CODE XREF: start+C8j |
201 | locActionOpen: ; CODE XREF: start+C8j |
202 | bts [wFlags], 0 |
202 | bts [wFlags], 0 |
203 | jb locWaitForEvent |
203 | jb locWaitForEvent |
204 | mov [dwBufferPtr], aPatternPath ; "/rd/1/pattern.mgb "... |
204 | mov [dwBufferPtr], aPatternPath ; "/rd/1/pattern.mgb "... |
205 | mov [dwEditLabel], aOpenFile ; "Open file" |
205 | mov [dwEditLabel], aOpenFile ; "Open file" |
206 | mov [dwEditLabelLen], 9 |
206 | mov [dwEditLabelLen], 9 |
207 | call subCreateOpenSaveDlg |
207 | call subCreateOpenSaveDlg |
208 | jmp locWaitForEvent |
208 | jmp locWaitForEvent |
209 | ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ |
209 | ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ |
210 | 210 | ||
211 | locNotOpen: ; CODE XREF: start+17Bj |
211 | locNotOpen: ; CODE XREF: start+17Bj |
212 | cmp ah, 6 |
212 | cmp ah, 6 |
213 | jnz locWaitForEvent |
213 | jnz locWaitForEvent |
214 | 214 | ||
215 | locActionSave: ; CODE XREF: start+D1j |
215 | locActionSave: ; CODE XREF: start+D1j |
216 | bts [wFlags], 0 |
216 | bts [wFlags], 0 |
217 | jb locWaitForEvent |
217 | jb locWaitForEvent |
218 | mov [dwBufferPtr], aPatternPath ; "/rd/1/pattern.mgb "... |
218 | mov [dwBufferPtr], aPatternPath ; "/rd/1/pattern.mgb "... |
219 | mov [dwEditLabel], aSaveAs ; "Save as..." |
219 | mov [dwEditLabel], aSaveAs ; "Save as..." |
220 | mov [dwEditLabelLen], 0Ah |
220 | mov [dwEditLabelLen], 0Ah |
221 | call subCreateOpenSaveDlg |
221 | call subCreateOpenSaveDlg |
222 | jmp locWaitForEvent |
222 | jmp locWaitForEvent |
223 | ; END OF FUNCTION CHUNK FOR start |
223 | ; END OF FUNCTION CHUNK FOR start |
224 | 224 | ||
225 | ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ |
225 | ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ |
226 | 226 | ||
227 | 227 | ||
228 | proc subCreateOpenSaveDlg ; CODE XREF: start+15Ap start+1A9p ... |
228 | proc subCreateOpenSaveDlg ; CODE XREF: start+15Ap start+1A9p ... |
229 | mcall 51, 1, subOpenSaveDlgProc, 0x19FFF0; Kolibri - CREATE THREAD |
229 | mcall 51, 1, subOpenSaveDlgProc, 0x19FFF0; Kolibri - CREATE THREAD |
230 | ; ebx = 1 - unique subfunction |
230 | ; ebx = 1 - unique subfunction |
231 | ; ecx = starting eip |
231 | ; ecx = starting eip |
232 | ; edx = starting esp |
232 | ; edx = starting esp |
233 | retn |
233 | retn |
234 | endp |
234 | endp |
235 | 235 | ||
236 | ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ |
236 | ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ |
237 | 237 | ||
238 | subTestWndProc: ; DATA XREF: start+118o |
238 | subTestWndProc: ; DATA XREF: start+118o |
239 | 239 | ||
240 | mov esi,results_table+8 |
240 | mov esi,results_table+8 |
241 | .next_test: call subInitTestTimer |
241 | .next_test: call subInitTestTimer |
242 | 242 | ||
243 | align 4 |
243 | align 4 |
244 | @@: push esi |
244 | @@: push esi |
245 | call dword[esi] |
245 | call dword[esi] |
246 | pop esi |
246 | pop esi |
247 | call subIfTimeElapsed |
247 | call subIfTimeElapsed |
248 | jb @b |
248 | jb @b |
249 | mov [esi-8],edi |
249 | mov [esi-8],edi |
250 | 250 | ||
251 | add esi,TEST_REC_SIZE |
251 | add esi,TEST_REC_SIZE |
252 | cmp dword[esi],0 |
252 | cmp dword[esi],0 |
253 | jnz .next_test |
253 | jnz .next_test |
254 | macro unused { |
254 | macro unused { |
255 | call subInitTestTimer |
255 | call subInitTestTimer |
256 | 256 | ||
257 | locDrawNextWindow: ; CODE XREF: seg000:00000241j |
257 | locDrawNextWindow: ; CODE XREF: seg000:00000241j |
258 | mov ecx, 4F0190h |
258 | mov ecx, 4F0190h |
259 | call testDrawWindow |
259 | call testDrawWindow |
260 | call subIfTimeElapsed |
260 | call subIfTimeElapsed |
261 | jb locDrawNextWindow |
261 | jb locDrawNextWindow |
262 | mov [results_table+TEST_REC_SIZE*0], edi |
262 | mov [results_table+TEST_REC_SIZE*0], edi |
263 | call subInitTestTimer |
263 | call subInitTestTimer |
264 | 264 | ||
265 | locDrawNextBar: ; CODE XREF: seg000:00000269j |
265 | locDrawNextBar: ; CODE XREF: seg000:00000269j |
266 | mcall 0x0d, 0x0A0064, 0x1E00FA, 0x6A73D0; Kolibri - DRAW RECTANGLE |
266 | mcall 0x0d, 0x0A0064, 0x1E00FA, 0x6A73D0; Kolibri - DRAW RECTANGLE |
267 | ; ebx = [xstart]*65536+[xsize], ecx = [ystart]*65536+[ysize] |
267 | ; ebx = [xstart]*65536+[xsize], ecx = [ystart]*65536+[ysize] |
268 | ; edx = 0xRRGGBB or 0x80RRGGBB for gradient |
268 | ; edx = 0xRRGGBB or 0x80RRGGBB for gradient |
269 | call subIfTimeElapsed |
269 | call subIfTimeElapsed |
270 | jb locDrawNextBar |
270 | jb locDrawNextBar |
271 | mov [results_table+TEST_REC_SIZE*1], edi |
271 | mov [results_table+TEST_REC_SIZE*1], edi |
272 | call subInitTestTimer |
272 | call subInitTestTimer |
273 | 273 | ||
274 | locDrawNextLine: ; CODE XREF: seg000:00000291j |
274 | locDrawNextLine: ; CODE XREF: seg000:00000291j |
275 | ; Kolibri - DRAW LINE |
275 | ; Kolibri - DRAW LINE |
276 | mcall 38, 0x8C008C, 0x1E017C, 0x1090207F |
276 | mcall 38, 0x8C008C, 0x1E017C, 0x1090207F |
277 | ; ebx = [xstart]*65536+[xend], ecx = [ystart]*65536+[yend] |
277 | ; ebx = [xstart]*65536+[xend], ecx = [ystart]*65536+[yend] |
278 | ; edx = 0x00RRGGBB - color or 0x01****** - inversed line |
278 | ; edx = 0x00RRGGBB - color or 0x01****** - inversed line |
279 | call subIfTimeElapsed |
279 | call subIfTimeElapsed |
280 | jb locDrawNextLine |
280 | jb locDrawNextLine |
281 | mov [results_table+TEST_REC_SIZE*2], edi |
281 | mov [results_table+TEST_REC_SIZE*2], edi |
282 | call subInitTestTimer |
282 | call subInitTestTimer |
283 | 283 | ||
284 | locDrawNextText1: ; CODE XREF: seg000:000002BEj |
284 | locDrawNextText1: ; CODE XREF: seg000:000002BEj |
285 | ; Kolibri - DRAW STRING |
285 | ; Kolibri - DRAW STRING |
286 | mcall 4, 0x0A012C, 0x0AA66, aTestText, 34 |
286 | mcall 4, 0x0A012C, 0x0AA66, aTestText, 34 |
287 | ; ebx = [xstart]*65536+[ystart] |
287 | ; ebx = [xstart]*65536+[ystart] |
288 | ; ecx = 0xX0RRGGBB, edx -> string |
288 | ; ecx = 0xX0RRGGBB, edx -> string |
289 | call subIfTimeElapsed |
289 | call subIfTimeElapsed |
290 | jb locDrawNextText1 |
290 | jb locDrawNextText1 |
291 | mov [results_table+TEST_REC_SIZE*3], edi |
291 | mov [results_table+TEST_REC_SIZE*3], edi |
292 | call subInitTestTimer |
292 | call subInitTestTimer |
293 | 293 | ||
294 | locDrawNextText2: ; CODE XREF: seg000:000002EBj |
294 | locDrawNextText2: ; CODE XREF: seg000:000002EBj |
295 | ; Kolibri - DRAW STRING |
295 | ; Kolibri - DRAW STRING |
296 | mcall 4, 0x0A015E, 0x10E7B850, aTestText, 34 |
296 | mcall 4, 0x0A015E, 0x10E7B850, aTestText, 34 |
297 | ; ebx = [xstart]*65536+[ystart] |
297 | ; ebx = [xstart]*65536+[ystart] |
298 | ; ecx = 0xX0RRGGBB, edx -> string |
298 | ; ecx = 0xX0RRGGBB, edx -> string |
299 | call subIfTimeElapsed |
299 | call subIfTimeElapsed |
300 | jb locDrawNextText2 |
300 | jb locDrawNextText2 |
301 | mov [results_table+TEST_REC_SIZE*4], edi |
301 | mov [results_table+TEST_REC_SIZE*4], edi |
302 | call subInitTestTimer |
302 | call subInitTestTimer |
303 | 303 | ||
304 | locDrawNextNumber: ; CODE XREF: seg000:00000318j |
304 | locDrawNextNumber: ; CODE XREF: seg000:00000318j |
305 | ; Kolibri - DRAW NUMBER |
305 | ; Kolibri - DRAW NUMBER |
306 | ; bl = 0/1 - ecx is number/pointer |
306 | ; bl = 0/1 - ecx is number/pointer |
307 | ; bh = 0/1/2 - dec/hex/bin |
307 | ; bh = 0/1/2 - dec/hex/bin |
308 | ; highword(ebx) = number of digits |
308 | ; highword(ebx) = number of digits |
309 | ; ecx = number/pointer |
309 | ; ecx = number/pointer |
310 | ; edx = [x]*65536+[y] |
310 | ; edx = [x]*65536+[y] |
311 | ; esi = 0xX0RRGGBB |
311 | ; esi = 0xX0RRGGBB |
312 | mcall 47, 80000h, 12345678, 140172h, 0E0B27Bh |
312 | mcall 47, 80000h, 12345678, 140172h, 0E0B27Bh |
313 | 313 | ||
314 | 314 | ||
315 | 315 | ||
316 | call subIfTimeElapsed |
316 | call subIfTimeElapsed |
317 | jb locDrawNextNumber |
317 | jb locDrawNextNumber |
318 | mov [results_table+TEST_REC_SIZE*5], edi |
318 | mov [results_table+TEST_REC_SIZE*5], edi |
319 | call subInitTestTimer |
319 | call subInitTestTimer |
320 | 320 | ||
321 | locDrawNextPixel: ; CODE XREF: seg000:00000340j |
321 | locDrawNextPixel: ; CODE XREF: seg000:00000340j |
322 | ; Kolibri - PUT PIXEL |
322 | ; Kolibri - PUT PIXEL |
323 | ; ebx = x, ecx = y, edx = color |
323 | ; ebx = x, ecx = y, edx = color |
324 | mcall 1, 100, 100, 0x0FFFFFF |
324 | mcall 1, 100, 100, 0x0FFFFFF |
325 | call subIfTimeElapsed |
325 | call subIfTimeElapsed |
326 | jb locDrawNextPixel |
326 | jb locDrawNextPixel |
327 | mov [results_table+TEST_REC_SIZE*6], edi |
327 | mov [results_table+TEST_REC_SIZE*6], edi |
328 | } |
328 | } |
329 | bts word[wFlags], 1 |
329 | bts word[wFlags], 1 |
330 | btr word[wFlags], 0 |
330 | btr word[wFlags], 0 |
331 | ; Kolibri - FINISH EXECUTION |
331 | ; Kolibri - FINISH EXECUTION |
332 | mcall -1 |
332 | mcall -1 |
333 | 333 | ||
334 | ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ |
334 | ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ |
335 | 335 | ||
336 | 336 | ||
337 | proc subInitTestTimer ; CODE XREF: seg000:subTestWndProcp |
337 | proc subInitTestTimer ; CODE XREF: seg000:subTestWndProcp |
338 | ; seg000:00000249p ... |
338 | ; seg000:00000249p ... |
339 | xor edi, edi |
339 | xor edi, edi |
340 | mov eax, 26 |
340 | mov eax, 26 |
341 | mov ebx, 9 |
341 | mov ebx, 9 |
342 | mcall ; Kolibri - GET SYSTEM PARAMETERS - TIME COUNTER |
342 | mcall ; Kolibri - GET SYSTEM PARAMETERS - TIME COUNTER |
343 | ; Return: eax = time counter |
343 | ; Return: eax = time counter |
344 | inc eax |
344 | inc eax |
345 | mov ecx, eax |
345 | mov ecx, eax |
346 | add eax, 100 |
346 | add eax, 100 |
347 | mov [dwTestEndTime], eax |
347 | mov [dwTestEndTime], eax |
348 | 348 | ||
349 | locWait10ms: ; CODE XREF: subInitTestTimer+22j |
349 | locWait10ms: ; CODE XREF: subInitTestTimer+22j |
350 | mov eax, 26 |
350 | mov eax, 26 |
351 | mcall ; Kolibri - GET SYSTEM PARAMETERS - TIME COUNTER |
351 | mcall ; Kolibri - GET SYSTEM PARAMETERS - TIME COUNTER |
352 | ; Return: eax = time counter |
352 | ; Return: eax = time counter |
353 | cmp eax, ecx |
353 | cmp eax, ecx |
354 | jb locWait10ms |
354 | jb locWait10ms |
355 | retn |
355 | retn |
356 | endp |
356 | endp |
357 | 357 | ||
358 | 358 | ||
359 | ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ |
359 | ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ |
360 | 360 | ||
361 | 361 | ||
362 | proc subIfTimeElapsed ; CODE XREF: seg000:0000023Cp |
362 | proc subIfTimeElapsed ; CODE XREF: seg000:0000023Cp |
363 | ; seg000:00000264p ... |
363 | ; seg000:00000264p ... |
364 | inc edi |
364 | inc edi |
365 | mov eax, 26 |
365 | mov eax, 26 |
366 | mov ebx, 9 |
366 | mov ebx, 9 |
367 | mcall ; Kolibri - GET SYSTEM PARAMETERS - TIME COUNTER |
367 | mcall ; Kolibri - GET SYSTEM PARAMETERS - TIME COUNTER |
368 | ; Return: eax = time counter |
368 | ; Return: eax = time counter |
369 | cmp eax, [dwTestEndTime] |
369 | cmp eax, [dwTestEndTime] |
370 | retn |
370 | retn |
371 | endp |
371 | endp |
372 | 372 | ||
373 | 373 | ||
374 | ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ |
374 | ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ |
375 | 375 | ||
376 | 376 | ||
377 | proc subSavePattern ; CODE XREF: start:locActionPatternp |
377 | proc subSavePattern ; CODE XREF: start:locActionPatternp |
378 | ; mov esi, dwDrawWindowTime |
378 | ; mov esi, dwDrawWindowTime |
379 | ; mov edi, dwDrawWindowTime2 |
379 | ; mov edi, dwDrawWindowTime2 |
380 | ; mov ecx, 18 |
380 | ; mov ecx, 18 |
381 | ; cld |
381 | ; cld |
382 | ; rep movsd |
382 | ; rep movsd |
383 | mov esi,results_table |
383 | mov esi,results_table |
384 | cld |
384 | cld |
385 | @@: lodsd |
385 | @@: lodsd |
386 | mov [esi],eax |
386 | mov [esi],eax |
387 | add esi,TEST_REC_SIZE-4 |
387 | add esi,TEST_REC_SIZE-4 |
388 | cmp dword[esi+TEST_REC_SIZE-4],0 |
388 | cmp dword[esi+TEST_REC_SIZE-4],0 |
389 | jne @b |
389 | jne @b |
390 | mov esi,aComment1 |
390 | mov esi,aComment1 |
391 | mov edi,aComment2 |
391 | mov edi,aComment2 |
392 | mov ecx,44/4 |
392 | mov ecx,44/4 |
393 | rep movsd |
393 | rep movsd |
394 | retn |
394 | retn |
395 | endp |
395 | endp |
396 | 396 | ||
397 | 397 | ||
398 | ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ |
398 | ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ |
399 | 399 | ||
400 | 400 | ||
401 | proc subDrawMainWindow ; CODE XREF: start:locRedrawEventp |
401 | proc subDrawMainWindow ; CODE XREF: start:locRedrawEventp |
402 | mov eax, 12 |
402 | mov eax, 12 |
403 | mov ebx, 1 |
403 | mov ebx, 1 |
404 | mcall ; Kolibri - BEGIN WINDOW REDRAW |
404 | mcall ; Kolibri - BEGIN WINDOW REDRAW |
405 | mov eax,48 |
405 | mov eax,48 |
406 | mov ebx,4 |
406 | mov ebx,4 |
407 | mcall |
407 | mcall |
408 | mov ebx, 100*65536+72*5+14;640145h |
408 | mov ebx, 100*65536+72*5+14;640145h |
409 | mov ecx, 80*65536+TESTS_NUM*LINE_HEIGHT+15+20+35 |
409 | mov ecx, 80*65536+TESTS_NUM*LINE_HEIGHT+15+20+35 |
410 | add cx, ax |
410 | add cx, ax |
411 | mov edx, 33000000h |
411 | mov edx, 33000000h |
412 | mov edi, aCaption |
412 | mov edi, aCaption |
413 | xor eax, eax |
413 | xor eax, eax |
414 | mcall |
414 | mcall |
415 | mov eax, 8 |
415 | mov eax, 8 |
416 | mov ebx, 050036h+12 |
416 | mov ebx, 050036h+12 |
417 | mov ecx, 5*65536+20 |
417 | mov ecx, 5*65536+20 |
418 | mov edx, 2 |
418 | mov edx, 2 |
419 | mov esi, 0x00007F7F;702050h |
419 | mov esi, 0x00007F7F;702050h |
420 | 420 | ||
421 | locDrawButtonsLoop: ; CODE XREF: subDrawMainWindow+3Bj |
421 | locDrawButtonsLoop: ; CODE XREF: subDrawMainWindow+3Bj |
422 | mcall ; Kolibri - DEFINE/DELETE BUTTON |
422 | mcall ; Kolibri - DEFINE/DELETE BUTTON |
423 | ; ebx = [xstart]*65536+[xsize] |
423 | ; ebx = [xstart]*65536+[xsize] |
424 | ; ecx = [ystart]*65536+[ysize] |
424 | ; ecx = [ystart]*65536+[ysize] |
425 | ; edx = 0xXYnnnnnn, esi = color |
425 | ; edx = 0xXYnnnnnn, esi = color |
426 | add ebx, 72*65536 |
426 | add ebx, 72*65536 |
427 | inc edx |
427 | inc edx |
428 | cmp edx, 7 |
428 | cmp edx, 7 |
429 | jb locDrawButtonsLoop |
429 | jb locDrawButtonsLoop |
430 | 430 | ||
431 | mov ecx,31 |
431 | mov ecx,31 |
432 | mov edx,0x00007F7F |
432 | mov edx,0x00007F7F |
433 | mov esi,(72*5)/2 |
433 | mov esi,(72*5)/2 |
434 | call drawSeparator |
434 | call drawSeparator |
435 | 435 | ||
436 | mov eax, 4 |
436 | mov eax, 4 |
437 | mov ebx, 27*65536+12 |
437 | mov ebx, 27*65536+12 |
438 | mov ecx, 0x80DDEEFF |
438 | mov ecx, 0x80DDEEFF |
439 | mov edx, aButtonsText ; "Test Comment+ Pattern+ Open "... |
439 | mov edx, aButtonsText ; "Test Comment+ Pattern+ Open "... |
440 | mcall ; Kolibri - DRAW STRING |
440 | mcall ; Kolibri - DRAW STRING |
441 | ; ebx = [xstart]*65536+[ystart] |
441 | ; ebx = [xstart]*65536+[ystart] |
442 | ; ecx = 0xX0RRGGBB, edx -> string |
442 | ; ecx = 0xX0RRGGBB, edx -> string |
443 | call subDrawBars |
443 | call subDrawBars |
444 | 444 | ||
445 | mov ecx,TESTS_NUM*LINE_HEIGHT+15+21 |
445 | mov ecx,TESTS_NUM*LINE_HEIGHT+15+21 |
446 | mov edx,0x00007F7F |
446 | mov edx,0x00007F7F |
447 | mov esi,(72*5)/2 |
447 | mov esi,(72*5)/2 |
448 | call drawSeparator |
448 | call drawSeparator |
449 | 449 | ||
450 | mov eax, 12 |
450 | mov eax, 12 |
451 | mov ebx, 2 |
451 | mov ebx, 2 |
452 | mcall ; Kolibri - END WINDOW REDRAW |
452 | mcall ; Kolibri - END WINDOW REDRAW |
453 | retn |
453 | retn |
454 | endp |
454 | endp |
455 | 455 | ||
456 | proc drawSeparator |
456 | proc drawSeparator |
457 | mov eax,1 |
457 | mov eax,1 |
458 | mov ebx,3 |
458 | mov ebx,3 |
459 | @@: mcall |
459 | @@: mcall |
460 | add ebx,2 |
460 | add ebx,2 |
461 | dec esi |
461 | dec esi |
462 | jnz @b |
462 | jnz @b |
463 | retn |
463 | retn |
464 | endp |
464 | endp |
465 | 465 | ||
466 | ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ |
466 | ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ |
467 | 467 | ||
468 | 468 | ||
469 | proc testDrawWindow |
469 | proc testDrawWindow |
470 | xor eax, eax |
470 | xor eax, eax |
471 | mov ebx, 640145h |
471 | mov ebx, 640145h |
472 | mov ecx, 4F0190h |
472 | mov ecx, 4F0190h |
473 | mov edx, 3000000h |
473 | mov edx, 3000000h |
474 | mcall |
474 | mcall |
475 | retn |
475 | retn |
476 | endp |
476 | endp |
477 | 477 | ||
478 | proc testDrawBar |
478 | proc testDrawBar |
479 | mov eax, 13 |
479 | mov eax, 13 |
480 | mov ebx, 0A0064h |
480 | mov ebx, 0A0064h |
481 | mov ecx, 1E00FAh |
481 | mov ecx, 1E00FAh |
482 | mov edx, 6A73D0h |
482 | mov edx, 6A73D0h |
483 | mcall |
483 | mcall |
484 | retn |
484 | retn |
485 | endp |
485 | endp |
486 | 486 | ||
487 | proc testDrawPicture |
487 | proc testDrawPicture |
488 | mov eax, 7 |
488 | mov eax, 7 |
489 | mov ebx, 0 |
489 | mov ebx, 0 |
490 | mov ecx, 90*65536+123 |
490 | mov ecx, 90*65536+123 |
491 | mov edx, 15*65536+33 |
491 | mov edx, 15*65536+33 |
492 | mcall |
492 | mcall |
493 | retn |
493 | retn |
494 | endp |
494 | endp |
495 | 495 | ||
496 | proc testDrawVertLine |
496 | proc testDrawVertLine |
497 | mov eax, 38 |
497 | mov eax, 38 |
498 | mov ebx, 300*65536+300 ;8C008Ch |
498 | mov ebx, 300*65536+300 ;8C008Ch |
499 | mov ecx, 30*65536+380 ;1E017Ch |
499 | mov ecx, 30*65536+380 ;1E017Ch |
500 | mov edx, 1090207Fh |
500 | mov edx, 1090207Fh |
501 | mcall |
501 | mcall |
502 | retn |
502 | retn |
503 | endp |
503 | endp |
504 | 504 | ||
505 | proc testDrawHorzLine |
505 | proc testDrawHorzLine |
506 | mov eax, 38 |
506 | mov eax, 38 |
507 | mov ebx, 30*65536+300 ;20008Ch |
507 | mov ebx, 30*65536+300 ;20008Ch |
508 | mov ecx, 380*65536+380 ;17C017Ch |
508 | mov ecx, 380*65536+380 ;17C017Ch |
509 | mov edx, 1090207Fh |
509 | mov edx, 1090207Fh |
510 | mcall |
510 | mcall |
511 | retn |
511 | retn |
512 | endp |
512 | endp |
513 | 513 | ||
514 | proc testDrawFreeLine |
514 | proc testDrawFreeLine |
515 | mov eax, 38 |
515 | mov eax, 38 |
516 | mov ebx, 30*65536+300 ;20008Ch |
516 | mov ebx, 30*65536+300 ;20008Ch |
517 | mov ecx, 380*65536+30 ;17C001Eh |
517 | mov ecx, 380*65536+30 ;17C001Eh |
518 | mov edx, 1090207Fh |
518 | mov edx, 1090207Fh |
519 | mcall |
519 | mcall |
520 | retn |
520 | retn |
521 | endp |
521 | endp |
522 | 522 | ||
523 | proc testDrawText1 |
523 | proc testDrawText1 |
524 | mov eax, 4 |
524 | mov eax, 4 |
525 | mov ebx, 0C012Ch |
525 | mov ebx, 0C012Ch |
526 | mov ecx, 0AA66h |
526 | mov ecx, 0AA66h |
527 | mov edx, aTestText |
527 | mov edx, aTestText |
528 | mov esi, 34 |
528 | mov esi, 34 |
529 | mcall |
529 | mcall |
530 | retn |
530 | retn |
531 | endp |
531 | endp |
532 | 532 | ||
533 | proc testDrawText2 |
533 | proc testDrawText2 |
534 | mov eax, 4 |
534 | mov eax, 4 |
535 | mov ebx, 1B013Bh |
535 | mov ebx, 1B013Bh |
536 | mov ecx, 10E7B850h |
536 | mov ecx, 10E7B850h |
537 | mov edx, aTestText |
537 | mov edx, aTestText |
538 | mov esi, 34 |
538 | mov esi, 34 |
539 | mcall |
539 | mcall |
540 | retn |
540 | retn |
541 | endp |
541 | endp |
542 | 542 | ||
543 | proc testDrawNumber |
543 | proc testDrawNumber |
544 | mov eax, 47 |
544 | mov eax, 47 |
545 | mov ebx, 80000h |
545 | mov ebx, 80000h |
546 | mov ecx, 12345678 |
546 | mov ecx, 12345678 |
547 | mov edx, 2A014Ah |
547 | mov edx, 2A014Ah |
548 | mov esi, 0E0B27Bh |
548 | mov esi, 0E0B27Bh |
549 | mcall |
549 | mcall |
550 | retn |
550 | retn |
551 | endp |
551 | endp |
552 | 552 | ||
553 | proc testDrawPixel |
553 | proc testDrawPixel |
554 | mov eax, 1 |
554 | mov eax, 1 |
555 | mov ebx, 100 |
555 | mov ebx, 100 |
556 | mov ecx, 100 |
556 | mov ecx, 100 |
557 | mov edx, 0FFFFFFh |
557 | mov edx, 0FFFFFFh |
558 | mcall |
558 | mcall |
559 | retn |
559 | retn |
560 | endp |
560 | endp |
561 | 561 | ||
562 | 562 | ||
563 | ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ |
563 | ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ |
564 | 564 | ||
565 | 565 | ||
566 | proc subDrawBars ; CODE XREF: start:loc_AEp start+16Ep ... |
566 | proc subDrawBars ; CODE XREF: start:loc_AEp start+16Ep ... |
567 | mov edi,results_table |
567 | mov edi,results_table |
568 | mov ebx,30+7 |
568 | mov ebx,30+7 |
569 | .next_result: cmp dword[edi+TEST_REC_SIZE-4],0 |
569 | .next_result: cmp dword[edi+TEST_REC_SIZE-4],0 |
570 | je .exit |
570 | je .exit |
571 | 571 | ||
572 | push ebx |
572 | push ebx |
573 | mov eax,13 |
573 | mov eax,13 |
574 | movzx ecx,bx |
574 | movzx ecx,bx |
575 | add ecx,-2 |
575 | add ecx,-2 |
576 | shl ecx,16 |
576 | shl ecx,16 |
577 | mov cx,LINE_HEIGHT |
577 | mov cx,LINE_HEIGHT |
578 | mov ebx,0*65536+72*5+5 |
578 | mov ebx,0*65536+72*5+5 |
579 | xor edx,edx |
579 | xor edx,edx |
580 | mcall |
580 | mcall |
581 | pop ebx |
581 | pop ebx |
582 | 582 | ||
583 | and ebx,0x0000FFFF |
583 | and ebx,0x0000FFFF |
584 | or ebx,5*65536 |
584 | or ebx,5*65536 |
585 | mov edx,[edi+TEST_REC_SIZE-4] |
585 | mov edx,[edi+TEST_REC_SIZE-4] |
586 | mov ecx,0x8000CCCC ; 0x00E7E05A |
586 | mov ecx,0x8000CCCC ; 0x00E7E05A |
587 | mov eax,4 |
587 | mov eax,4 |
588 | mcall |
588 | mcall |
589 | 589 | ||
590 | push '=' 0x00FFFF00 0x00FFFF7F 0x00FFFF7F |
590 | push '=' 0x00FFFF00 0x00FFFF7F 0x00FFFF7F |
591 | mov eax,[edi+0] |
591 | mov eax,[edi+0] |
592 | cmp eax,[edi+4] |
592 | cmp eax,[edi+4] |
593 | je @f |
593 | je @f |
594 | jb .lp1 |
594 | jb .lp1 |
595 | mov dword[esp+0],0x007FFF7F |
595 | mov dword[esp+0],0x007FFF7F |
596 | mov dword[esp+4],0x00FF7F7F |
596 | mov dword[esp+4],0x00FF7F7F |
597 | mov dword[esp+8],0x0000FF00 |
597 | mov dword[esp+8],0x0000FF00 |
598 | mov byte[esp+12],'>' |
598 | mov byte[esp+12],'>' |
599 | .lp1: ja @f |
599 | .lp1: ja @f |
600 | mov dword[esp+0],0x00FF7F7F |
600 | mov dword[esp+0],0x00FF7F7F |
601 | mov dword[esp+4],0x007FFF7F |
601 | mov dword[esp+4],0x007FFF7F |
602 | mov dword[esp+8],0x00FF0000 |
602 | mov dword[esp+8],0x00FF0000 |
603 | mov byte[esp+12],'<' |
603 | mov byte[esp+12],'<' |
604 | @@: |
604 | @@: |
605 | pop ecx |
605 | pop ecx |
606 | call int2str |
606 | call int2str |
607 | add ebx,(72*5-6*8*2-6-10-5)*65536 ; 196 |
607 | add ebx,(72*5-6*8*2-6-10-5)*65536 ; 196 |
608 | mov edx,APP_MEM_END |
608 | mov edx,APP_MEM_END |
609 | mov esi,8 |
609 | mov esi,8 |
610 | mov eax,4 |
610 | mov eax,4 |
611 | mcall |
611 | mcall |
612 | 612 | ||
613 | pop ecx |
613 | pop ecx |
614 | mov eax,[edi+4] |
614 | mov eax,[edi+4] |
615 | call int2str |
615 | call int2str |
616 | add ebx,(6*8+6+10)*65536 |
616 | add ebx,(6*8+6+10)*65536 |
617 | mov eax,4 |
617 | mov eax,4 |
618 | mcall |
618 | mcall |
619 | 619 | ||
620 | pop ecx |
620 | pop ecx |
621 | add ebx,(-6-5)*65536 |
621 | add ebx,(-6-5)*65536 |
622 | mov edx,esp |
622 | mov edx,esp |
623 | mov esi,1 |
623 | mov esi,1 |
624 | mcall |
624 | mcall |
625 | add esp,4 |
625 | add esp,4 |
626 | 626 | ||
627 | add edi,TEST_REC_SIZE |
627 | add edi,TEST_REC_SIZE |
628 | add bx,LINE_HEIGHT |
628 | add bx,LINE_HEIGHT |
629 | jmp .next_result |
629 | jmp .next_result |
630 | .exit: |
630 | .exit: |
631 | 631 | ||
632 | mov eax, 13 |
632 | mov eax, 13 |
633 | mov ebx, 0*65536+72*5+5 |
633 | mov ebx, 0*65536+72*5+5 |
634 | mov ecx, (TESTS_NUM*LINE_HEIGHT+15+25)*65536+26 |
634 | mov ecx, (TESTS_NUM*LINE_HEIGHT+15+25)*65536+26 |
635 | xor edx, edx |
635 | xor edx, edx |
636 | mcall |
636 | mcall |
637 | 637 | ||
638 | mov eax, 4 |
638 | mov eax, 4 |
639 | mov ebx, 5*65536+(TESTS_NUM*LINE_HEIGHT+15+27) |
639 | mov ebx, 5*65536+(TESTS_NUM*LINE_HEIGHT+15+27) |
640 | mov ecx, 0x8000CCCC |
640 | mov ecx, 0x8000CCCC |
641 | mov edx, aLeft |
641 | mov edx, aLeft |
642 | mcall ; Kolibri - DRAW STRING |
642 | mcall ; Kolibri - DRAW STRING |
643 | 643 | ||
644 | add ebx, (6*10)*65536 |
644 | add ebx, (6*10)*65536 |
645 | mov ecx, 0x00FFFF00 |
645 | mov ecx, 0x00FFFF00 |
646 | mov edx, aComment1 |
646 | mov edx, aComment1 |
647 | mov esi, 42 |
647 | mov esi, 42 |
648 | mcall ; Kolibri - DRAW STRING |
648 | mcall ; Kolibri - DRAW STRING |
649 | 649 | ||
650 | mov eax, 4 |
650 | mov eax, 4 |
651 | mov ebx, 5*65536+(TESTS_NUM*LINE_HEIGHT+15+27+12) |
651 | mov ebx, 5*65536+(TESTS_NUM*LINE_HEIGHT+15+27+12) |
652 | mov ecx, 0x8000CCCC |
652 | mov ecx, 0x8000CCCC |
653 | mov edx, aRight |
653 | mov edx, aRight |
654 | mcall ; Kolibri - DRAW STRING |
654 | mcall ; Kolibri - DRAW STRING |
655 | 655 | ||
656 | add ebx, (6*10)*65536 |
656 | add ebx, (6*10)*65536 |
657 | mov ecx, 0x00FFFF00 |
657 | mov ecx, 0x00FFFF00 |
658 | mov edx, aComment2 |
658 | mov edx, aComment2 |
659 | mov esi, 42 |
659 | mov esi, 42 |
660 | mcall ; Kolibri - DRAW STRING |
660 | mcall ; Kolibri - DRAW STRING |
661 | 661 | ||
662 | retn |
662 | retn |
663 | endp |
663 | endp |
664 | 664 | ||
665 | proc int2str |
665 | proc int2str |
666 | push eax ecx edx edi |
666 | push eax ecx edx edi |
667 | mov edi,APP_MEM_END+7 |
667 | mov edi,APP_MEM_END+7 |
668 | mov dword[APP_MEM_END+0],' ' |
668 | mov dword[APP_MEM_END+0],' ' |
669 | mov dword[APP_MEM_END+4],' ' |
669 | mov dword[APP_MEM_END+4],' ' |
670 | mov ecx,10 |
670 | mov ecx,10 |
671 | @@: xor edx,edx |
671 | @@: xor edx,edx |
672 | div ecx |
672 | div ecx |
673 | add dl,'0' |
673 | add dl,'0' |
674 | mov [edi],dl |
674 | mov [edi],dl |
675 | dec edi |
675 | dec edi |
676 | or eax,eax |
676 | or eax,eax |
677 | jnz @b |
677 | jnz @b |
678 | pop edi edx ecx eax |
678 | pop edi edx ecx eax |
679 | retn |
679 | retn |
680 | endp |
680 | endp |
681 | 681 | ||
682 | ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ |
682 | ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ |
683 | 683 | ||
684 | 684 | ||
685 | proc subDrawResultComments ; CODE XREF: subDrawBars+92p |
685 | proc subDrawResultComments ; CODE XREF: subDrawBars+92p |
686 | ; subDrawBars+AFp ... |
686 | ; subDrawBars+AFp ... |
687 | xor di, di |
687 | xor di, di |
688 | mov eax, 4 |
688 | mov eax, 4 |
689 | 689 | ||
690 | locDrawCommentsLoop: ; CODE XREF: subDrawResultComments+1Cj |
690 | locDrawCommentsLoop: ; CODE XREF: subDrawResultComments+1Cj |
691 | mcall ; Kolibri - DRAW STRING |
691 | mcall ; Kolibri - DRAW STRING |
692 | ; ebx = [xstart]*65536+[ystart] |
692 | ; ebx = [xstart]*65536+[ystart] |
693 | ; ecx = 0xX0RRGGBB, edx -> string |
693 | ; ecx = 0xX0RRGGBB, edx -> string |
694 | add bx, 13;55 |
694 | add bx, 13;55 |
695 | bt edi, 31 |
695 | bt edi, 31 |
696 | jnb loc_52F |
696 | jnb loc_52F |
697 | add edx, esi |
697 | add edx, esi |
698 | 698 | ||
699 | loc_52F: ; CODE XREF: subDrawResultComments+12j |
699 | loc_52F: ; CODE XREF: subDrawResultComments+12j |
700 | inc di |
700 | inc di |
701 | cmp di, 7 |
701 | cmp di, 7 |
702 | jb locDrawCommentsLoop |
702 | jb locDrawCommentsLoop |
703 | retn |
703 | retn |
704 | endp |
704 | endp |
705 | 705 | ||
706 | 706 | ||
707 | ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ |
707 | ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ |
708 | 708 | ||
709 | 709 | ||
710 | proc subDrawResultNumbers ; CODE XREF: subDrawBars+CDp |
710 | proc subDrawResultNumbers ; CODE XREF: subDrawBars+CDp |
711 | ; subDrawBars+DCp |
711 | ; subDrawBars+DCp |
712 | xor edi, edi |
712 | xor edi, edi |
713 | mov eax, 47 |
713 | mov eax, 47 |
714 | mov esi, 0DDEEFFh |
714 | mov esi, 0DDEEFFh |
715 | 715 | ||
716 | locDrawNumbersLoop: ; CODE XREF: subDrawResultNumbers+1Ej |
716 | locDrawNumbersLoop: ; CODE XREF: subDrawResultNumbers+1Ej |
717 | call subGetDigitsCount |
717 | call subGetDigitsCount |
718 | mcall ; Kolibri - |
718 | mcall ; Kolibri - |
719 | add dx, 13;55 |
719 | add dx, 13;55 |
720 | add ecx, 4 |
720 | add ecx, 4 |
721 | inc edi |
721 | inc edi |
722 | cmp edi, 7 |
722 | cmp edi, 7 |
723 | jb locDrawNumbersLoop |
723 | jb locDrawNumbersLoop |
724 | retn |
724 | retn |
725 | endp |
725 | endp |
726 | 726 | ||
727 | 727 | ||
728 | ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ |
728 | ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ |
729 | 729 | ||
730 | 730 | ||
731 | proc subGetDigitsCount ; CODE XREF: subDrawResultNumbers:locDrawNumbersLoopp |
731 | proc subGetDigitsCount ; CODE XREF: subDrawResultNumbers:locDrawNumbersLoopp |
732 | xor ebx, ebx |
732 | xor ebx, ebx |
733 | mov bh, 6 |
733 | mov bh, 6 |
734 | cmp dword[ecx], 99999 |
734 | cmp dword[ecx], 99999 |
735 | ja loc_589 |
735 | ja loc_589 |
736 | dec bh |
736 | dec bh |
737 | cmp dword[ecx], 9999 |
737 | cmp dword[ecx], 9999 |
738 | ja loc_589 |
738 | ja loc_589 |
739 | dec bh |
739 | dec bh |
740 | cmp dword[ecx], 999 |
740 | cmp dword[ecx], 999 |
741 | ja loc_589 |
741 | ja loc_589 |
742 | dec bh |
742 | dec bh |
743 | cmp dword[ecx], 99 |
743 | cmp dword[ecx], 99 |
744 | ja loc_589 |
744 | ja loc_589 |
745 | dec bh |
745 | dec bh |
746 | cmp dword[ecx], 9 |
746 | cmp dword[ecx], 9 |
747 | ja loc_589 |
747 | ja loc_589 |
748 | dec bh |
748 | dec bh |
749 | 749 | ||
750 | loc_589: ; CODE XREF: subGetDigitsCount+Aj |
750 | loc_589: ; CODE XREF: subGetDigitsCount+Aj |
751 | ; subGetDigitsCount+14j ... |
751 | ; subGetDigitsCount+14j ... |
752 | bswap ebx |
752 | bswap ebx |
753 | inc bl |
753 | inc bl |
754 | retn |
754 | retn |
755 | endp |
755 | endp |
756 | 756 | ||
757 | ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ |
757 | ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ |
758 | 758 | ||
759 | subOpenSaveDlgProc: ; CODE XREF: seg000:0000059Dj |
759 | subOpenSaveDlgProc: ; CODE XREF: seg000:0000059Dj |
760 | ; DATA XREF: subCreateOpenSaveDlg+Ao |
760 | ; DATA XREF: subCreateOpenSaveDlg+Ao |
761 | call subDrawOpenSaveDlg |
761 | call subDrawOpenSaveDlg |
762 | 762 | ||
763 | locOSDWaitForEvent: ; CODE XREF: seg000:000005ADj |
763 | locOSDWaitForEvent: ; CODE XREF: seg000:000005ADj |
764 | ; seg000:000005C3j ... |
764 | ; seg000:000005C3j ... |
765 | mov eax, 10 |
765 | mov eax, 10 |
766 | mcall ; Kolibri - |
766 | mcall ; Kolibri - |
767 | cmp eax, 1 |
767 | cmp eax, 1 |
768 | jz subOpenSaveDlgProc |
768 | jz subOpenSaveDlgProc |
769 | cmp eax, 2 |
769 | cmp eax, 2 |
770 | jz locOSDKeyEvent |
770 | jz locOSDKeyEvent |
771 | cmp eax, 3 |
771 | cmp eax, 3 |
772 | jz locOSDButtonEvent |
772 | jz locOSDButtonEvent |
773 | jmp locOSDWaitForEvent |
773 | jmp locOSDWaitForEvent |
774 | ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ |
774 | ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ |
775 | 775 | ||
776 | locOSDKeyEvent: ; CODE XREF: seg000:000005A2j |
776 | locOSDKeyEvent: ; CODE XREF: seg000:000005A2j |
777 | mov eax, 2 |
777 | mov eax, 2 |
778 | mcall ; Kolibri - GET KEY CODE |
778 | mcall ; Kolibri - GET KEY CODE |
779 | ; Return: ah = keycode |
779 | ; Return: ah = keycode |
780 | cmp ah, 0B3h |
780 | cmp ah, 0B3h |
781 | jnz locOSDNotRightKey |
781 | jnz locOSDNotRightKey |
782 | mov eax, [dwOSDCaretPos] |
782 | mov eax, [dwOSDCaretPos] |
783 | cmp eax, 41 |
783 | cmp eax, 41 |
784 | ja locOSDWaitForEvent |
784 | ja locOSDWaitForEvent |
785 | inc eax |
785 | inc eax |
786 | mov [dwOSDCaretPos], eax |
786 | mov [dwOSDCaretPos], eax |
787 | call subDrawOpenSaveDlgControls |
787 | call subDrawOpenSaveDlgControls |
788 | jmp locOSDWaitForEvent |
788 | jmp locOSDWaitForEvent |
789 | ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ |
789 | ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ |
790 | 790 | ||
791 | locOSDNotRightKey: ; CODE XREF: seg000:000005B9j |
791 | locOSDNotRightKey: ; CODE XREF: seg000:000005B9j |
792 | cmp ah, 0B0h |
792 | cmp ah, 0B0h |
793 | jnz locOSDNotLeftKey |
793 | jnz locOSDNotLeftKey |
794 | mov eax, [dwOSDCaretPos] |
794 | mov eax, [dwOSDCaretPos] |
795 | test eax, eax |
795 | test eax, eax |
796 | jz locOSDWaitForEvent |
796 | jz locOSDWaitForEvent |
797 | dec eax |
797 | dec eax |
798 | mov [dwOSDCaretPos], eax |
798 | mov [dwOSDCaretPos], eax |
799 | call subDrawOpenSaveDlgControls |
799 | call subDrawOpenSaveDlgControls |
800 | jmp locOSDWaitForEvent |
800 | jmp locOSDWaitForEvent |
801 | ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ |
801 | ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ |
802 | 802 | ||
803 | locOSDNotLeftKey: ; CODE XREF: seg000:000005D5j |
803 | locOSDNotLeftKey: ; CODE XREF: seg000:000005D5j |
804 | cmp ah, 0B6h |
804 | cmp ah, 0B6h |
805 | jnz locOSDNotDeleteKey |
805 | jnz locOSDNotDeleteKey |
806 | call subOSDDeleteChar |
806 | call subOSDDeleteChar |
807 | call subDrawOpenSaveDlgControls |
807 | call subDrawOpenSaveDlgControls |
808 | jmp locOSDWaitForEvent |
808 | jmp locOSDWaitForEvent |
809 | ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ |
809 | ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ |
810 | 810 | ||
811 | locOSDNotDeleteKey: ; CODE XREF: seg000:000005F0j |
811 | locOSDNotDeleteKey: ; CODE XREF: seg000:000005F0j |
812 | cmp ah, 8 |
812 | cmp ah, 8 |
813 | jnz locOSDNotBackspaceKey |
813 | jnz locOSDNotBackspaceKey |
814 | mov eax, [dwOSDCaretPos] |
814 | mov eax, [dwOSDCaretPos] |
815 | test eax, eax |
815 | test eax, eax |
816 | jz locOSDWaitForEvent |
816 | jz locOSDWaitForEvent |
817 | dec eax |
817 | dec eax |
818 | mov [dwOSDCaretPos], eax |
818 | mov [dwOSDCaretPos], eax |
819 | call subOSDDeleteChar |
819 | call subOSDDeleteChar |
820 | call subDrawOpenSaveDlgControls |
820 | call subDrawOpenSaveDlgControls |
821 | jmp locOSDWaitForEvent |
821 | jmp locOSDWaitForEvent |
822 | ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ |
822 | ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ |
823 | 823 | ||
824 | locOSDNotBackspaceKey: ; CODE XREF: seg000:00000601j |
824 | locOSDNotBackspaceKey: ; CODE XREF: seg000:00000601j |
825 | cmp ah, 0Dh |
825 | cmp ah, 0Dh |
826 | jnz locOSDNotReturnKey |
826 | jnz locOSDNotReturnKey |
827 | 827 | ||
828 | locOSDReturnKey: ; CODE XREF: seg000:000006E1j |
828 | locOSDReturnKey: ; CODE XREF: seg000:000006E1j |
829 | mov al, ' ' |
829 | mov al, ' ' |
830 | mov edi, [dwBufferPtr] |
830 | mov edi, [dwBufferPtr] |
831 | add edi,43 |
831 | add edi,43 |
832 | mov ecx,43 |
832 | mov ecx,43 |
833 | std |
833 | std |
834 | repe scasb |
834 | repe scasb |
835 | cld |
835 | cld |
836 | inc edi |
836 | inc edi |
837 | mov byte[edi+1], 0 |
837 | mov byte[edi+1], 0 |
838 | cmp [dwBufferPtr], aPatternPath ; "/rd/1/pattern.mgb "... |
838 | cmp [dwBufferPtr], aPatternPath ; "/rd/1/pattern.mgb "... |
839 | jnz locCloseOSD |
839 | jnz locCloseOSD |
840 | cmp [dwEditLabel], aOpenFile ; "Open file" |
840 | cmp [dwEditLabel], aOpenFile ; "Open file" |
841 | jnz locSaveFile |
841 | jnz locSaveFile |
842 | mov [stFileInfoBlock], 0 |
842 | mov [stFileInfoBlock], 0 |
843 | mov [dwDataSize], TESTS_NUM*4+44 |
843 | mov [dwDataSize], TESTS_NUM*4+44 |
844 | bts word[wFlags], 2 |
844 | bts word[wFlags], 2 |
845 | mov eax,70 ; 58 |
845 | mov eax,70 ; 58 |
846 | mov ebx,stFileInfoBlock |
846 | mov ebx,stFileInfoBlock |
847 | mcall |
847 | mcall |
848 | mov esi,APP_MEM_END+100 |
848 | mov esi,APP_MEM_END+100 |
849 | mov edi,results_table+4 |
849 | mov edi,results_table+4 |
850 | cld |
850 | cld |
851 | @@: cmp dword[edi+TEST_REC_SIZE-8],0 |
851 | @@: cmp dword[edi+TEST_REC_SIZE-8],0 |
852 | je @f |
852 | je @f |
853 | movsd |
853 | movsd |
854 | add edi,TEST_REC_SIZE-4 |
854 | add edi,TEST_REC_SIZE-4 |
855 | jmp @b |
855 | jmp @b |
856 | @@: |
856 | @@: |
857 | mov edi,aComment2 |
857 | mov edi,aComment2 |
858 | mov ecx,44 |
858 | mov ecx,44 |
859 | rep movsb |
859 | rep movsb |
860 | jmp locCloseOSD |
860 | jmp locCloseOSD |
861 | ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ |
861 | ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ |
862 | 862 | ||
863 | locSaveFile: ; CODE XREF: seg000:00000654j |
863 | locSaveFile: ; CODE XREF: seg000:00000654j |
864 | mov [stFileInfoBlock], 2 ; 1 |
864 | mov [stFileInfoBlock], 2 ; 1 |
865 | mov [dwDataSize], TESTS_NUM*4+44 |
865 | mov [dwDataSize], TESTS_NUM*4+44 |
866 | bts word[wFlags], 2 |
866 | bts word[wFlags], 2 |
867 | mov esi,results_table+4 |
867 | mov esi,results_table+4 |
868 | mov edi,APP_MEM_END+100 |
868 | mov edi,APP_MEM_END+100 |
869 | cld |
869 | cld |
870 | @@: cmp dword[esi+TEST_REC_SIZE-8],0 |
870 | @@: cmp dword[esi+TEST_REC_SIZE-8],0 |
871 | je @f |
871 | je @f |
872 | movsd |
872 | movsd |
873 | add esi,TEST_REC_SIZE-4 |
873 | add esi,TEST_REC_SIZE-4 |
874 | jmp @b |
874 | jmp @b |
875 | @@: mov esi,aComment2 |
875 | @@: mov esi,aComment2 |
876 | mov ecx,44 |
876 | mov ecx,44 |
877 | rep movsb |
877 | rep movsb |
878 | mov eax,70 ; 58 |
878 | mov eax,70 ; 58 |
879 | mov ebx,stFileInfoBlock |
879 | mov ebx,stFileInfoBlock |
880 | mcall |
880 | mcall |
881 | jmp locCloseOSD |
881 | jmp locCloseOSD |
882 | ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ |
882 | ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ |
883 | 883 | ||
884 | locOSDNotReturnKey: ; CODE XREF: seg000:00000624j |
884 | locOSDNotReturnKey: ; CODE XREF: seg000:00000624j |
885 | cmp [dwOSDCaretPos], 42 |
885 | cmp [dwOSDCaretPos], 42 |
886 | jnb locOSDWaitForEvent |
886 | jnb locOSDWaitForEvent |
887 | mov edi, [dwBufferPtr] |
887 | mov edi, [dwBufferPtr] |
888 | add edi, 42 |
888 | add edi, 42 |
889 | mov esi, edi |
889 | mov esi, edi |
890 | dec esi |
890 | dec esi |
891 | mov ecx, 42 |
891 | mov ecx, 42 |
892 | sub ecx, [dwOSDCaretPos] |
892 | sub ecx, [dwOSDCaretPos] |
893 | std |
893 | std |
894 | rep movsb |
894 | rep movsb |
895 | shr eax, 8 |
895 | shr eax, 8 |
896 | mov esi, [dwBufferPtr] |
896 | mov esi, [dwBufferPtr] |
897 | add esi, [dwOSDCaretPos] |
897 | add esi, [dwOSDCaretPos] |
898 | mov [esi], al |
898 | mov [esi], al |
899 | inc [dwOSDCaretPos] |
899 | inc [dwOSDCaretPos] |
900 | call subDrawOpenSaveDlgControls |
900 | call subDrawOpenSaveDlgControls |
901 | jmp locOSDWaitForEvent |
901 | jmp locOSDWaitForEvent |
902 | ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ |
902 | ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ |
903 | 903 | ||
904 | locOSDButtonEvent: ; CODE XREF: seg000:000005A7j |
904 | locOSDButtonEvent: ; CODE XREF: seg000:000005A7j |
905 | mov eax, 17 |
905 | mov eax, 17 |
906 | mcall ; Kolibri - GET PRESSED BUTTON |
906 | mcall ; Kolibri - GET PRESSED BUTTON |
907 | ; Return: ah = button ID |
907 | ; Return: ah = button ID |
908 | cmp ah, 1 |
908 | cmp ah, 1 |
909 | jnz locNotCloseOSD |
909 | jnz locNotCloseOSD |
910 | jmp locOSDReturnKey |
910 | jmp locOSDReturnKey |
911 | ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ |
911 | ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ |
912 | 912 | ||
913 | locCloseOSD: ; CODE XREF: seg000:00000644j |
913 | locCloseOSD: ; CODE XREF: seg000:00000644j |
914 | ; seg000:0000066Cj ... |
914 | ; seg000:0000066Cj ... |
915 | bts [wFlags], 1 |
915 | bts [wFlags], 1 |
916 | btr [wFlags], 0 |
916 | btr [wFlags], 0 |
917 | mov eax, -1 |
917 | mov eax, -1 |
918 | mcall ; Kolibri - FINISH EXECUTION |
918 | mcall ; Kolibri - FINISH EXECUTION |
919 | 919 | ||
920 | locNotCloseOSD: ; CODE XREF: seg000:000006DFj |
920 | locNotCloseOSD: ; CODE XREF: seg000:000006DFj |
921 | cmp ah, 2 |
921 | cmp ah, 2 |
922 | jnz locNotSetCaretOSD |
922 | jnz locNotSetCaretOSD |
923 | mov eax, 37 |
923 | mov eax, 37 |
924 | mov ebx, 1 |
924 | mov ebx, 1 |
925 | mcall ; Kolibri - GET MOUSE COORDINATES, WINDOW-RELATIVE |
925 | mcall ; Kolibri - GET MOUSE COORDINATES, WINDOW-RELATIVE |
926 | ; Return: eax = [x]*65536 + [y] |
926 | ; Return: eax = [x]*65536 + [y] |
927 | shr eax, 16 |
927 | shr eax, 16 |
928 | sub eax, 21 |
928 | sub eax, 21 |
929 | xor edx, edx |
929 | xor edx, edx |
930 | mov ebx, 6 |
930 | mov ebx, 6 |
931 | div ebx |
931 | div ebx |
932 | mov [dwOSDCaretPos], eax |
932 | mov [dwOSDCaretPos], eax |
933 | call subDrawOpenSaveDlgControls |
933 | call subDrawOpenSaveDlgControls |
934 | jmp locOSDWaitForEvent |
934 | jmp locOSDWaitForEvent |
935 | ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ |
935 | ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ |
936 | 936 | ||
937 | locNotSetCaretOSD: ; CODE XREF: seg000:00000700j |
937 | locNotSetCaretOSD: ; CODE XREF: seg000:00000700j |
938 | jmp locOSDWaitForEvent |
938 | jmp locOSDWaitForEvent |
939 | 939 | ||
940 | ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ |
940 | ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ |
941 | 941 | ||
942 | 942 | ||
943 | proc subOSDDeleteChar ; CODE XREF: seg000:000005F2p |
943 | proc subOSDDeleteChar ; CODE XREF: seg000:000005F2p |
944 | ; seg000:00000612p |
944 | ; seg000:00000612p |
945 | mov edi, [dwBufferPtr] |
945 | mov edi, [dwBufferPtr] |
946 | add edi, [dwOSDCaretPos] |
946 | add edi, [dwOSDCaretPos] |
947 | mov esi, edi |
947 | mov esi, edi |
948 | inc esi |
948 | inc esi |
949 | mov ecx, 43 |
949 | mov ecx, 43 |
950 | sub ecx, [dwOSDCaretPos] |
950 | sub ecx, [dwOSDCaretPos] |
951 | cld |
951 | cld |
952 | rep movsb |
952 | rep movsb |
953 | retn |
953 | retn |
954 | endp |
954 | endp |
955 | 955 | ||
956 | 956 | ||
957 | ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ |
957 | ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ |
958 | 958 | ||
959 | 959 | ||
960 | proc subDrawOpenSaveDlg ; CODE XREF: seg000:subOpenSaveDlgProcp |
960 | proc subDrawOpenSaveDlg ; CODE XREF: seg000:subOpenSaveDlgProcp |
961 | mov eax, 12 |
961 | mov eax, 12 |
962 | mov ebx, 1 |
962 | mov ebx, 1 |
963 | mcall ; Kolibri - BEGIN WINDOW REDRAW |
963 | mcall ; Kolibri - BEGIN WINDOW REDRAW |
964 | xor eax, eax |
964 | xor eax, eax |
965 | mov ebx, 64012Ch |
965 | mov ebx, 64012Ch |
966 | mov ecx, 640050h |
966 | mov ecx, 640050h |
967 | mov edx, 3780078h |
967 | mov edx, 3780078h |
968 | mcall ; Kolibri - DEFINE/DRAW WINDOW |
968 | mcall ; Kolibri - DEFINE/DRAW WINDOW |
969 | ; ebx = [xstart]*65536+[xsize] |
969 | ; ebx = [xstart]*65536+[xsize] |
970 | ; ecx = [ystart]*65536+[ysize] |
970 | ; ecx = [ystart]*65536+[ysize] |
971 | mov eax, 4 |
971 | mov eax, 4 |
972 | mov ebx, 80008h |
972 | mov ebx, 80008h |
973 | mov ecx, 10DDEEFFh |
973 | mov ecx, 10DDEEFFh |
974 | mov edx, [dwEditLabel] |
974 | mov edx, [dwEditLabel] |
975 | mov esi, [dwEditLabelLen] |
975 | mov esi, [dwEditLabelLen] |
976 | mcall ; Kolibri - DRAW STRING |
976 | mcall ; Kolibri - DRAW STRING |
977 | ; ebx = [xstart]*65536+[ystart] |
977 | ; ebx = [xstart]*65536+[ystart] |
978 | ; ecx = 0xX0RRGGBB, edx -> string |
978 | ; ecx = 0xX0RRGGBB, edx -> string |
979 | call subDrawOpenSaveDlgControls |
979 | call subDrawOpenSaveDlgControls |
980 | mov eax, 12 |
980 | mov eax, 12 |
981 | mov ebx, 2 |
981 | mov ebx, 2 |
982 | mcall ; Kolibri - END WINDOW REDRAW |
982 | mcall ; Kolibri - END WINDOW REDRAW |
983 | retn |
983 | retn |
984 | endp |
984 | endp |
985 | 985 | ||
986 | 986 | ||
987 | ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ |
987 | ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ |
988 | 988 | ||
989 | 989 | ||
990 | proc subDrawOpenSaveDlgControls ; CODE XREF: seg000:000005CBp |
990 | proc subDrawOpenSaveDlgControls ; CODE XREF: seg000:000005CBp |
991 | ; seg000:000005E6p ... |
991 | ; seg000:000005E6p ... |
992 | pusha |
992 | pusha |
993 | mov eax, 8 |
993 | mov eax, 8 |
994 | mov ebx, 150102h |
994 | mov ebx, 150102h |
995 | mov ecx, 28000Fh |
995 | mov ecx, 28000Fh |
996 | mov edx, 40000002h |
996 | mov edx, 40000002h |
997 | mcall ; Kolibri - DEFINE/DELETE BUTTON |
997 | mcall ; Kolibri - DEFINE/DELETE BUTTON |
998 | ; ebx = [xstart]*65536+[xsize] |
998 | ; ebx = [xstart]*65536+[xsize] |
999 | ; ecx = [ystart]*65536+[ysize] |
999 | ; ecx = [ystart]*65536+[ysize] |
1000 | ; edx = 0xXYnnnnnn, esi = color |
1000 | ; edx = 0xXYnnnnnn, esi = color |
1001 | mov eax, 13 |
1001 | mov eax, 13 |
1002 | mov edx, 0E0E0E0h |
1002 | mov edx, 0E0E0E0h |
1003 | mcall ; Kolibri - DRAW RECTANGLE |
1003 | mcall ; Kolibri - DRAW RECTANGLE |
1004 | ; ebx = [xstart]*65536+[xsize], ecx = [ystart]*65536+[ysize] |
1004 | ; ebx = [xstart]*65536+[xsize], ecx = [ystart]*65536+[ysize] |
1005 | ; edx = 0xRRGGBB or 0x80RRGGBB for gradient |
1005 | ; edx = 0xRRGGBB or 0x80RRGGBB for gradient |
1006 | push eax |
1006 | push eax |
1007 | mov eax, 60000h |
1007 | mov eax, 60000h |
1008 | mul [dwOSDCaretPos] |
1008 | mul [dwOSDCaretPos] |
1009 | add eax, 150006h |
1009 | add eax, 150006h |
1010 | mov ebx, eax |
1010 | mov ebx, eax |
1011 | pop eax |
1011 | pop eax |
1012 | mov edx, 6A73D0h |
1012 | mov edx, 6A73D0h |
1013 | mcall ; Kolibri - |
1013 | mcall ; Kolibri - |
1014 | mov eax, 4 |
1014 | mov eax, 4 |
1015 | mov ebx, 15002Ch |
1015 | mov ebx, 15002Ch |
1016 | xor ecx, ecx |
1016 | xor ecx, ecx |
1017 | mov edx, [dwBufferPtr] |
1017 | mov edx, [dwBufferPtr] |
1018 | mov esi, 43 |
1018 | mov esi, 43 |
1019 | mcall ; Kolibri - DRAW STRING |
1019 | mcall ; Kolibri - DRAW STRING |
1020 | ; ebx = [xstart]*65536+[ystart] |
1020 | ; ebx = [xstart]*65536+[ystart] |
1021 | ; ecx = 0xX0RRGGBB, edx -> string |
1021 | ; ecx = 0xX0RRGGBB, edx -> string |
1022 | popa |
1022 | popa |
1023 | retn |
1023 | retn |
1024 | endp |
1024 | endp |
1025 | 1025 | ||
1026 | ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ |
1026 | ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ |
1027 | 1027 | ||
1028 | dwMainWndSlot dd 0 ; DATA XREF: start:loc_46w start+7Dr |
1028 | dwMainWndSlot dd 0 ; DATA XREF: start:loc_46w start+7Dr |
1029 | dwBufferPtr dd 0 ; DATA XREF: start+13Cw start+18Bw ... |
1029 | dwBufferPtr dd 0 ; DATA XREF: start+13Cw start+18Bw ... |
1030 | dwEditLabel dd 0 ; DATA XREF: start+146w start+195w ... |
1030 | dwEditLabel dd 0 ; DATA XREF: start+146w start+195w ... |
1031 | dwEditLabelLen dd 0 ; DATA XREF: start+150w start+19Fw ... |
1031 | dwEditLabelLen dd 0 ; DATA XREF: start+150w start+19Fw ... |
1032 | aComment db 'Comment' ; DATA XREF: start+146o |
1032 | aComment db 'Comment' ; DATA XREF: start+146o |
1033 | aOpenFile db 'Open file' ; DATA XREF: start+195o |
1033 | aOpenFile db 'Open file' ; DATA XREF: start+195o |
1034 | ; seg000:0000064Ao |
1034 | ; seg000:0000064Ao |
1035 | aSaveAs db 'Save as...' ; DATA XREF: start+1D4o |
1035 | aSaveAs db 'Save as...' ; DATA XREF: start+1D4o |
1036 | dwOSDCaretPos dd 0 ; DATA XREF: seg000:000005BBr |
1036 | dwOSDCaretPos dd 0 ; DATA XREF: seg000:000005BBr |
1037 | ; seg000:000005C6w ... |
1037 | ; seg000:000005C6w ... |
1038 | macro unused { |
1038 | macro unused { |
1039 | stFileInfoBlock dd 0 ; DATA XREF: start+5Co |
1039 | stFileInfoBlock dd 0 ; DATA XREF: start+5Co |
1040 | ; seg000:00000658w ... |
1040 | ; seg000:00000658w ... |
1041 | dd 0 |
1041 | dd 0 |
1042 | dwDataSize dd 1 ; DATA XREF: seg000:0000065Ew |
1042 | dwDataSize dd 1 ; DATA XREF: seg000:0000065Ew |
1043 | ; seg000:00000678w |
1043 | ; seg000:00000678w |
1044 | dd APP_MEM_END+100 |
1044 | dd APP_MEM_END+100 |
1045 | dd APP_MEM_END |
1045 | dd APP_MEM_END |
1046 | aPatternPath db '/hd0/1/pattern.mgb ' ; DATA XREF: start+18Bo |
1046 | aPatternPath db '/hd0/1/pattern.mgb ' ; DATA XREF: start+18Bo |
1047 | } |
1047 | } |
1048 | align 4 |
1048 | align 4 |
1049 | stFileInfoBlock dd 0,0,0 |
1049 | stFileInfoBlock dd 0,0,0 |
1050 | dwDataSize dd 1 |
1050 | dwDataSize dd 1 |
1051 | dd APP_MEM_END+100 |
1051 | dd APP_MEM_END+100 |
1052 | aPatternPath db '/hd0/1/pattern.mgb ' ; DATA XREF: start+18Bo |
1052 | aPatternPath db '/hd0/1/pattern.mgb ' ; DATA XREF: start+18Bo |
1053 | 1053 | ||
1054 | ; start+1CAo ... |
1054 | ; start+1CAo ... |
1055 | wFlags dd 0 ; DATA XREF: start:loc_70w |
1055 | wFlags dd 0 ; DATA XREF: start:loc_70w |
1056 | ; start:loc_87w ... |
1056 | ; start:loc_87w ... |
1057 | dwTestEndTime dd 0 ; DATA XREF: subInitTestTimer+14w |
1057 | dwTestEndTime dd 0 ; DATA XREF: subInitTestTimer+14w |
1058 | ; subIfTimeElapsed+Dr |
1058 | ; subIfTimeElapsed+Dr |
1059 | results_table dd \ |
1059 | results_table dd \ |
1060 | ?,?,testDrawWindow,aDrawingWindow,\ |
1060 | ?,?,testDrawWindow,aDrawingWindow,\ |
1061 | ?,?,testDrawBar,aDrawingBar,\ |
1061 | ?,?,testDrawBar,aDrawingBar,\ |
1062 | ?,?,testDrawPicture,aDrawingPicture,\ |
1062 | ?,?,testDrawPicture,aDrawingPicture,\ |
1063 | ?,?,testDrawVertLine,aDrawingVLine,\ |
1063 | ?,?,testDrawVertLine,aDrawingVLine,\ |
1064 | ?,?,testDrawHorzLine,aDrawingHLine,\ |
1064 | ?,?,testDrawHorzLine,aDrawingHLine,\ |
1065 | ?,?,testDrawFreeLine,aDrawingFLine,\ |
1065 | ?,?,testDrawFreeLine,aDrawingFLine,\ |
1066 | ?,?,testDrawText1,aDrawingText1,\ |
1066 | ?,?,testDrawText1,aDrawingText1,\ |
1067 | ?,?,testDrawText2,aDrawingText2,\ |
1067 | ?,?,testDrawText2,aDrawingText2,\ |
1068 | ?,?,testDrawNumber,aDrawingNumber,\ |
1068 | ?,?,testDrawNumber,aDrawingNumber,\ |
1069 | ?,?,testDrawPixel,aDrawingPixel,\ |
1069 | ?,?,testDrawPixel,aDrawingPixel,\ |
1070 | 0,0,0,0 |
1070 | 0,0,0,0 |
1071 | 1071 | ||
1072 | LINE_HEIGHT = 13 |
1072 | LINE_HEIGHT = 13 |
1073 | TEST_REC_SIZE = 16 |
1073 | TEST_REC_SIZE = 16 |
1074 | TESTS_NUM = ($ - results_table) / TEST_REC_SIZE - 1 |
1074 | TESTS_NUM = ($ - results_table) / TEST_REC_SIZE - 1 |
1075 | 1075 | ||
1076 | macro cstr name,str { |
1076 | macro cstr name,str { |
1077 | local ..end |
1077 | local ..end |
1078 | name db ..end-name-1,str |
1078 | name db ..end-name-1,str |
1079 | ..end: |
1079 | ..end: |
1080 | } |
1080 | } |
1081 | 1081 | ||
1082 | aDrawingWindow db 'Window Of Type #3, 325x400 px',0 |
1082 | aDrawingWindow db 'Window Of Type #3, 325x400 px',0 |
1083 | aDrawingBar db 'Filled Rectangle, 100x250 px',0 |
1083 | aDrawingBar db 'Filled Rectangle, 100x250 px',0 |
1084 | aDrawingPicture db 'Picture, 55x123, px',0 |
1084 | aDrawingPicture db 'Picture, 55x123, px',0 |
1085 | aDrawingVLine db 'Vertical Line, 350 px',0 |
1085 | aDrawingVLine db 'Vertical Line, 350 px',0 |
1086 | aDrawingHLine db 'Horizontal Line, 270 px',0 |
1086 | aDrawingHLine db 'Horizontal Line, 270 px',0 |
1087 | aDrawingFLine db 'Free-angled Line, 350 px',0 |
1087 | aDrawingFLine db 'Free-angled Line, 350 px',0 |
1088 | aDrawingText1 db 'Fixed-width Text, 34 chars',0 |
1088 | aDrawingText1 db 'Fixed-width Text, 34 chars',0 |
1089 | aDrawingText2 db 'Proportional Text, 34 chars',0 |
1089 | aDrawingText2 db 'Proportional Text, 34 chars',0 |
1090 | aDrawingNumber db 'Decimal Number, 8 digits',0 |
1090 | aDrawingNumber db 'Decimal Number, 8 digits',0 |
1091 | aDrawingPixel db 'Single Pixel',0 |
1091 | aDrawingPixel db 'Single Pixel',0 |
1092 | 1092 | ||
1093 | aTestText db 'This is a 34-charachters test text' ; DATA XREF: seg000:000002ADo |
1093 | aTestText db 'This is a 34-charachters test text' ; DATA XREF: seg000:000002ADo |
1094 | ; seg000:000002DAo |
1094 | ; seg000:000002DAo |
1095 | aButtonsText db 'Test Comment+ Pattern+ Open Save',0 |
1095 | aButtonsText db 'Test Comment+ Pattern+ Open Save',0 |
1096 | ; DATA XREF: subDrawMainWindow+5Do |
1096 | ; DATA XREF: subDrawMainWindow+5Do |
1097 | aCaption db 'Menuet Graphical Benchmark 0.3',0 ; DATA XREF: subDrawMainWindow+4Co |
1097 | aCaption db 'Menuet Graphical Benchmark 0.3',0 ; DATA XREF: subDrawMainWindow+4Co |
1098 | 1098 | ||
1099 | aLeft db 'Left :',0 |
1099 | aLeft db 'Left :',0 |
1100 | aRight db 'Right :',0 |
1100 | aRight db 'Right :',0 |
1101 | 1101 | ||
1102 | aComment1 db 'current ' ; DATA XREF: start+13Co |
1102 | aComment1 db 'current ' ; DATA XREF: start+13Co |
1103 | ; subDrawBars+9Co |
1103 | ; subDrawBars+9Co |
1104 | ;dwDrawWindowTime2 dd 0 ; DATA XREF: subSubSavePattern+5o |
1104 | ;dwDrawWindowTime2 dd 0 ; DATA XREF: subSubSavePattern+5o |
1105 | ; ; subDrawBars+18o ... |
1105 | ; ; subDrawBars+18o ... |
1106 | ; dd 0 |
1106 | ; dd 0 |
1107 | ; dd 0 |
1107 | ; dd 0 |
1108 | ; dd 0 |
1108 | ; dd 0 |
1109 | ; dd 0 |
1109 | ; dd 0 |
1110 | ; dd 0 |
1110 | ; dd 0 |
1111 | ; dd 0 |
1111 | ; dd 0 |
1112 | aComment2 db 'no pattern ' |
1112 | aComment2 db 'no pattern ' |
1113 | ; DATA XREF: subDrawBars+72o |
1113 | ; DATA XREF: subDrawBars+72o |
1114 | ; subDrawBars+B9o |
1114 | ; subDrawBars+B9o |
1115 | APP_MEM_END: rb 30 ; ; DATA XREF: seg000:off_10o |
1115 | APP_MEM_END: rb 30 ; ; DATA XREF: seg000:off_10o |
1116 | ; subGetThreadInfo+5o ... |
1116 | ; subGetThreadInfo+5o ... |
1117 | dwMainPID dd ? ; DATA XREF: start+Ar start:loc_3Br' |
1117 | dwMainPID dd ? ; DATA XREF: start+Ar start:loc_3Br' |
1118 | > |
1118 | > |