Subversion Repositories Kolibri OS

Rev

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