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