Subversion Repositories Kolibri OS

Rev

Rev 485 | 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
 
485 heavyiron 38
include '..\..\..\macros.inc'
478 Ghost 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
551 spraid 411
		mov	edx, 34000000h
386 mikedld 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