Subversion Repositories Kolibri OS

Rev

Rev 356 | Rev 367 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 356 Rev 362
1
;ª®¬¯®­¥­â OptionBox (Žá­®¢ ­ ­  Checkbox)
1
;ª®¬¯®­¥­â OptionBox (Žá­®¢ ­ ­  Checkbox)
2
;Ž£à®¬­ ï ¡« £®¤ à­®áâì Maxxxx32, Diamond, Heavyiron, ¨ ¤à㣨¬ ¯à®£à ¬¬¨áâ ¬, ¨ ¨å ¯à®£à ¬¬ ¬, ¡¥§
2
;Ž£à®¬­ ï ¡« £®¤ à­®áâì Maxxxx32, Diamond, Heavyiron, ¨ ¤à㣨¬ ¯à®£à ¬¬¨áâ ¬, ¨ ¨å ¯à®£à ¬¬ ¬, ¡¥§
3
;ª®â®àëå ï ­¥ ᬮ£ ¡ë ­ ¯¨á âì íâ®â ª®¬¯®­¥­â. 
3
;ª®â®àëå ï ­¥ ᬮ£ ¡ë ­ ¯¨á âì íâ®â ª®¬¯®­¥­â. 
-
 
4
;19.02.2007 ®¡é¥¥ ã«ãç襭¨¥ ª®¤ , 㬥­ì襭¨¥ à §¬¥à  ¨ ¨á¯®«ì§®¢ ­¨¥ á¨á⥬­ëå 梥⮢ ¤«ï ®â®¡à ¦¥­¨ï optionkbox
4
;16.02.2007 
5
;16.02.2007 ¤ â  ᮧ¤ ­¨ï ª®¬¯®­¥­â 
5
;  - ’¥¯«®¢ €«¥ªá¥©  www.lrz.land.ru
6
;  - ’¥¯«®¢ €«¥ªá¥©  www.lrz.land.ru
6
 
7
 
7
macro use_option_box
8
macro use_option_box
8
{
9
{
9
op_text_margin=4     ;à ááâ®ï­¨¥ ®â ¯àאַ㣮«ì­¨ª  祪 ¡®ªá  ¤® ­ ¤¯¨á¨ 
10
op_text_margin=4     ;à ááâ®ï­¨¥ ®â ¯àאַ㣮«ì­¨ª  祪 ¡®ªá  ¤® ­ ¤¯¨á¨ 
10
op_size=10           ;à §¬¥à ª¢ ¤à â  祪 ¡®ªá  
11
op_size=10           ;à §¬¥à ª¢ ¤à â  祪 ¡®ªá  
11
op_left equ [edi]    ;ª®®à¤¨­ â  ­ ç «  à¨á®¢ ­¨ï ¯® å
12
op_left equ [edi]    ;ª®®à¤¨­ â  ­ ç «  à¨á®¢ ­¨ï ¯® å
12
op_top equ [edi+2]   ;ª®®à¤¨­ â  ­ ç «  à¨á®¢ ­¨ï ¯® ã
13
op_top equ [edi+2]   ;ª®®à¤¨­ â  ­ ç «  à¨á®¢ ­¨ï ¯® ã
-
 
14
op_border_color equ [sc.work_graph] ; or [edi+4] ;梥â à ¬ª¨ checkbox ¥¥ ¬®¦­® § ¤ âì á ¬®áâ®ï⥫쭮
-
 
15
op_text_color equ   [sc.work_text];[edi+4]  ;梥â ⥪áâ 
13
op_border_color equ [edi+4] ;梥â à ¬ª¨ optionbox
16
;op_border_color equ [edi+4] ;梥â à ¬ª¨ optionbox
14
op_text_color equ [edi+8]  ;梥â ⥪áâ 
17
;op_text_color equ [edi+8]  ;梥â ⥪áâ 
15
op_text_ptr equ [edi+12]    ;㪠§ â¥«ì ­  ­ ç «® ⥪á⮢®© áâப¨ 
18
op_text_ptr equ [edi+4]    ;㪠§ â¥«ì ­  ­ ç «® ⥪á⮢®© áâப¨ 
16
op_text_length equ [edi+16] ;¤«¨­  ­ ¤¯¨á¨ (2^64 â ª®© ¤«¨­ë ¬®¦¥â ¡ëâì ⥪áâ)
19
op_text_length equ [edi+8] ;¤«¨­  ­ ¤¯¨á¨ (2^64 â ª®© ¤«¨­ë ¬®¦¥â ¡ëâì ⥪áâ)
17
op_optibox_gr	equ [edi+18]
20
op_optibox_gr	equ [edi+10]
18
option_box:
21
option_box:
19
.draw:
22
.draw:
20
pusha   ;á®åà ­¨¬ ¢á¥ ॣ¨áâàë
23
pusha   ;á®åà ­¨¬ ¢á¥ ॣ¨áâàë
21
	mov	eax,38     	;à¨á®¢ ­¨¥ «¨­¨¨
24
	mov	eax,38     	;à¨á®¢ ­¨¥ «¨­¨¨
22
	movzx	ebx,word op_left	;¯®«®¦¥­¨¥ ¯® å
25
	movzx	ebx,word op_left	;¯®«®¦¥­¨¥ ¯® å
23
	mov	ecx,ebx		;á®åà ­¨¬ ¢ ॣ¨áâॠcx §­ ç¥­¨¥ bx  1 ¬¨ªà®®¯¥à æ¨ï
26
	mov	ecx,ebx		;á®åà ­¨¬ ¢ ॣ¨áâॠcx §­ ç¥­¨¥ bx  1 ¬¨ªà®®¯¥à æ¨ï
24
	;push	bx  ;3 - ¬¨ªà®®¯¥à æ¨¨  ¨á¯®«ì§ãï á⥪ ¬®¦­® ¢ë¨£à âì ¢ à §¬¥à¥, ¨á¯®«ì§ãï ॣ¨áâàë - ¢ ᪮à®áâ¨
27
	;push	bx  ;3 - ¬¨ªà®®¯¥à æ¨¨  ¨á¯®«ì§ãï á⥪ ¬®¦­® ¢ë¨£à âì ¢ à §¬¥à¥, ¨á¯®«ì§ãï ॣ¨áâàë - ¢ ᪮à®áâ¨
25
	shl	ebx,16		;ᤢ¨­¥¬ ­  16 à §à冷¢ ¢ «¥¢® (㬭®¦¨¬ ­  65536)
28
	shl	ebx,16		;ᤢ¨­¥¬ ­  16 à §à冷¢ ¢ «¥¢® (㬭®¦¨¬ ­  65536)
26
	;pop	bx  ;2 - ¬¨ªà®®¯¥à æ¨¨  ­  ¤ ­­ë© ¬®¬¥­â áä®à¬¨à®¢ ­  [ª®®à¤¨­ â  ­ ç «  ¯® ®á¨ x]*65536 + [ª®®à¤¨­ â  ­ ç «  ¯® ®á¨ x]
29
	;pop	bx  ;2 - ¬¨ªà®®¯¥à æ¨¨  ­  ¤ ­­ë© ¬®¬¥­â áä®à¬¨à®¢ ­  [ª®®à¤¨­ â  ­ ç «  ¯® ®á¨ x]*65536 + [ª®®à¤¨­ â  ­ ç «  ¯® ®á¨ x]
27
	mov	bx,cx		;¢®ááâ ­®¢¨¬ §­ ç¥­¨¥ bx
30
	mov	bx,cx		;¢®ááâ ­®¢¨¬ §­ ç¥­¨¥ bx
28
	movzx	ecx,word op_top	;§ £à㧨¬ ¢ cx §­ ç¥­¨¥ y
31
	movzx	ecx,word op_top	;§ £à㧨¬ ¢ cx §­ ç¥­¨¥ y
29
	mov	esi,ecx		;á®åà ­¨¬ §­ ç¥­¨¥ ॣ¨áâà  cx ¢ ॣ¨áâà 㪠§ â¥«ì si				
32
	mov	esi,ecx		;á®åà ­¨¬ §­ ç¥­¨¥ ॣ¨áâà  cx ¢ ॣ¨áâà 㪠§ â¥«ì si				
30
	;push	cx
33
	;push	cx
31
	shl	ecx,16		; ᤢ¨­¥¬ ­  16 à §à冷¢ ¢ «¥¢® (㬭®¦¨¬ ­  65536)	mov	cx,si		;¢®ááâ ­®¢¨¬ §­ ç¥­¨¥ ॣ¨áâà  cx
34
	shl	ecx,16		; ᤢ¨­¥¬ ­  16 à §à冷¢ ¢ «¥¢® (㬭®¦¨¬ ­  65536)	mov	cx,si		;¢®ááâ ­®¢¨¬ §­ ç¥­¨¥ ॣ¨áâà  cx
32
	mov 	cx,si		;¢®ááâ ­®¢¨¬ §­ ç¥­¨¥ ॣ¨áâà  cx
35
	mov 	cx,si		;¢®ááâ ­®¢¨¬ §­ ç¥­¨¥ ॣ¨áâà  cx
33
	;pop	cx    	;[ª®®à¤¨­ â  ­ ç «  ¯® ®á¨ y]*65536 + [ª®®à¤¨­ â  ­ ç «  ¯® ®á¨ y]
36
	;pop	cx    	;[ª®®à¤¨­ â  ­ ç «  ¯® ®á¨ y]*65536 + [ª®®à¤¨­ â  ­ ç «  ¯® ®á¨ y]
34
	;push	cx       
37
	;push	cx       
35
	add	ecx,op_size ;[ª®®à¤¨­ â  ­ ç «  ¯® ®á¨ y]*65536 + [ª®®à¤¨­ â  ª®­æ  ¯® ®á¨ y]
38
	add	ecx,op_size ;[ª®®à¤¨­ â  ­ ç «  ¯® ®á¨ y]*65536 + [ª®®à¤¨­ â  ª®­æ  ¯® ®á¨ y]
36
	mov	edx,dword op_border_color ;–¢¥â «¨­¨¨
39
	mov	edx,dword op_border_color ;–¢¥â «¨­¨¨
37
	int	0x40   ;à¨á®¢ ­¨¥ ¢¥à⨪ «ì­®© «¥¢®© «¨­¨¨ ª¢ ¤à â  (¯àאַ㣮«ì­¨ª )
40
	int	0x40   ;à¨á®¢ ­¨¥ ¢¥à⨪ «ì­®© «¥¢®© «¨­¨¨ ª¢ ¤à â  (¯àאַ㣮«ì­¨ª )
38
;
41
;
39
	mov	ebp,ebx	;á®åà ­¨¬ ॣ¨áâà bx ¢ ॣ¨áâॠ㪠§ â¥«ï ¡ §ë
42
	mov	ebp,ebx	;á®åà ­¨¬ ॣ¨áâà bx ¢ ॣ¨áâॠ㪠§ â¥«ï ¡ §ë
40
	;push	bx   ;¢â®«ª­ãâì ¢ bx [ª®®à¤¨­ â  ­ ç «  ¯® ®á¨ å]*65536 + [ª®®à¤¨­ â  ­ ç «  ¯® ®á¨ x]
43
	;push	bx   ;¢â®«ª­ãâì ¢ bx [ª®®à¤¨­ â  ­ ç «  ¯® ®á¨ å]*65536 + [ª®®à¤¨­ â  ­ ç «  ¯® ®á¨ x]
41
	add	ebx,op_size      ;[ª®®à¤¨­ â  ­ ç «  + ¤«¨­  áâ®à®­ë ¯® ®á¨ å]
44
	add	ebx,op_size      ;[ª®®à¤¨­ â  ­ ç «  + ¤«¨­  áâ®à®­ë ¯® ®á¨ å]
42
	ror	ebx,16          ;[ª®®à¤¨­ â  ­ ç «  + ¤¨­  áâ®à®­ë ¯® ®á¨ å]*65536
45
	ror	ebx,16          ;[ª®®à¤¨­ â  ­ ç «  + ¤¨­  áâ®à®­ë ¯® ®á¨ å]*65536
43
	add	ebx,op_size      ;[ª®®à¤¨­ â  ­ ç « +¤«¨­  áâ®à®­ë ¯® ®á¨ å]*65536 + [ª®®à¤¨­ â  ­ ç « +¤«¨­  áâ®à®­ë ¯® ®á¨ x]
46
	add	ebx,op_size      ;[ª®®à¤¨­ â  ­ ç « +¤«¨­  áâ®à®­ë ¯® ®á¨ å]*65536 + [ª®®à¤¨­ â  ­ ç « +¤«¨­  áâ®à®­ë ¯® ®á¨ x]
44
	int	0x40
47
	int	0x40
45
	
48
	
46
	mov	bx,bp		;¢®ááâ ­®¢¨¬ §­ ç¥­¨¥ ॣ¨áâà  bx
49
	mov	bx,bp		;¢®ááâ ­®¢¨¬ §­ ç¥­¨¥ ॣ¨áâà  bx
47
	;pop	bx
50
	;pop	bx
48
	mov	cx,si		;á®åà ­¨¬ §­ ç¥­¨¥ ॣ¨áâà  cx ¢ ॣ¨áâà 㪠§ â¥«ì
51
	mov	cx,si		;á®åà ­¨¬ §­ ç¥­¨¥ ॣ¨áâà  cx ¢ ॣ¨áâà 㪠§ â¥«ì
49
	;pop	cx
52
	;pop	cx
50
	int	0x40
53
	int	0x40
51
	add	ecx,op_size	;¤®¡ ¢¨¬ à §¬¥à áâ®à®­ë 
54
	add	ecx,op_size	;¤®¡ ¢¨¬ à §¬¥à áâ®à®­ë 
52
	mov	esi,ecx		;á®åà ­¨¬ §­ ç¥­¨¥ ॣ¨áâà  cx ¢ ॣ¨áâà 㪠§ â¥«ì si
55
	mov	esi,ecx		;á®åà ­¨¬ §­ ç¥­¨¥ ॣ¨áâà  cx ¢ ॣ¨áâà 㪠§ â¥«ì si
53
	;push	cx
56
	;push	cx
54
	shl	ecx,16
57
	shl	ecx,16
55
	mov	cx,si
58
	mov	cx,si
56
	;pop	cx
59
	;pop	cx
57
	int	0x40            ;­ à¨á®¢ «¨ ¯àאַ㣮«ì­¨ª
60
	int	0x40            ;­ à¨á®¢ «¨ ¯àאַ㣮«ì­¨ª
58
 
-
 
59
	mov	eax,13          ;§ ªà è¨¢ ¥¬ ¥£®. ”ã­ªæ¨ï 13 - ­ à¨á®¢ âì ¯®«®áã
-
 
60
	movzx	ebx,word op_left	;§ £à㧨âì ¢ bx, ¯®«®¦¥­¨¥ ¯® å
-
 
61
	add	ebx,1		;ᤢ¨­¥¬ ­  1 â.¥. ¯à¨¡ ¢¨¬ 1 ¨­ ç¥ § âà¥âáï à ¬ª 
-
 
62
	shl	ebx,16		;ᤢ¨­¥¬ ­  16 à §à冷¢ ¢ «¥¢® (㬭®¦¨¬ ­  65536)
-
 
63
	mov	bx,op_size	;¯à¨¡ ¢¨¬ ¤«¨­ã áâ®à®­ë ¯àאַ㣮«ì­¨ª 
-
 
64
	sub	ebx,1		;¢ëç⥬ 1 â.ª. ¨­ ç¥ § âà¥âáï à ¬ª 
-
 
65
	mov	bp,bx		;á®åà ­¨¬ ॣ¨áâà bx ¢ ॣ¨áâॠ㪠§ â¥«ï ¡ §ë
-
 
66
	;push	bx
-
 
67
	movzx	ecx,word op_top	;§ £à㧨¬ ª®®à¤¨­ âë ¯® y
-
 
68
	add	ecx,1		;ᤢ¨­¥¬ ­  1 â.¥. ¯à¨¡ ¢¨¬ 1 ¨­ ç¥ § âà¥âáï à ¬ª 
-
 
69
	shl	ecx,16		;ᤢ¨­¥¬ ­  16 à §à冷¢ ¢ «¥¢® (㬭®¦¨¬ ­  65536)
-
 
70
	mov	cx,bp		;¢®ááâ ­®¢¨¬ §­ ç¥­¨¥ ॣ¨áâà  cx
-
 
71
	;pop	cx
-
 
72
	mov	edx,dword [sc.work]	;§ £à㧨¬ 梥⠯®«®áë
61
 
73
	int	0x40            ;§ ªà á¨«¨ 
62
	call	.clear_op       ;®ç¨á⪠ ®¡« áâ¨
74
 
63
 
75
        mov	eax,dword op_optibox_gr
64
        mov	eax,dword op_optibox_gr
76
	mov	dword eax,[eax]
65
	mov	dword eax,[eax]
77
        cmp	eax,edi
66
        cmp	eax,edi
78
	jne	@f
67
	jne	@f
79
	call	.draw_op  ;­ à¨á®¢ âì ¢ª«î祭­ë© 祪 ¡®ªá
68
	call	.draw_op  ;­ à¨á®¢ âì ¢ª«î祭­ë© 祪 ¡®ªá
80
;----------------------------
69
;----------------------------
81
;à áç¥â ªã¤  ¡ã¤¥â ¯à®¨§¢¥¤¥­ ¢ë¢®¤ ⥪áâ 
70
;à áç¥â ªã¤  ¡ã¤¥â ¯à®¨§¢¥¤¥­ ¢ë¢®¤ ⥪áâ 
82
;----------------------------
71
;----------------------------
83
@@:	movzx	ebx,word op_left	;§ £à㧨âì §­ ç¥­¨¥ å ¤«ï 祪 ¡®ªá 
72
@@:	movzx	ebx,word op_left	;§ £à㧨âì §­ ç¥­¨¥ å ¤«ï 祪 ¡®ªá 
84
	add	ebx,(op_size+op_text_margin) ;¤®¡ ¢¨âì à §¬¥à áâ®à®­ë ¨ à ááâ®ï­¨¥ ­  ª®â®à®¬ ­ ç­¥âáï ¢ë¢®¤ ⥪áâ 
73
	add	ebx,(op_size+op_text_margin) ;¤®¡ ¢¨âì à §¬¥à áâ®à®­ë ¨ à ááâ®ï­¨¥ ­  ª®â®à®¬ ­ ç­¥âáï ¢ë¢®¤ ⥪áâ 
85
	shl	ebx,16		;ᤢ¨­¥¬ ­  16 à §à冷¢ ¢ «¥¢® (㬭®¦¨¬ ­  65536)
74
	shl	ebx,16		;ᤢ¨­¥¬ ­  16 à §à冷¢ ¢ «¥¢® (㬭®¦¨¬ ­  65536)
86
	mov	bx,op_top	;§ £à㧨¬ §­ ç¥­¨¥ ¯® y
75
	mov	bx,op_top	;§ £à㧨¬ §­ ç¥­¨¥ ¯® y
87
	add	ebx,(op_size-9+2)	;¤®¡ ¢¨¬ §­ ç¥­¨¥ ¤«¨­ë áâ®à®­ë -9+2
76
	add	ebx,(op_size-9+2)	;¤®¡ ¢¨¬ §­ ç¥­¨¥ ¤«¨­ë áâ®à®­ë -9+2
88
	mov	ecx,op_text_color	;§ £à㧨¬ 梥⠭ ¤¯¨á¨
77
	mov	ecx,op_text_color	;§ £à㧨¬ 梥⠭ ¤¯¨á¨
89
	
78
	
90
	mov	edx,op_text_ptr		;㪠¦¥¬  ¤à¥á ®â ªã¤  ­ã¦­® ¢ë¢®¤¨âì áâபã
79
	mov	edx,op_text_ptr		;㪠¦¥¬  ¤à¥á ®â ªã¤  ­ã¦­® ¢ë¢®¤¨âì áâபã
91
	movzx 	esi,word op_text_length ;‡ £à㧨¬ ¤«¨­ã ­ ¤¯¨á¨ ¢ esi
80
	movzx 	esi,word op_text_length ;‡ £à㧨¬ ¤«¨­ã ­ ¤¯¨á¨ ¢ esi
92
	;¢­¥á¥¬ ¢ eax §­ ç¥­¨¥ ¢ë¢®¤  ­ ¤¯¨á¨ ­  ª ­¢ã
81
	;¢­¥á¥¬ ¢ eax §­ ç¥­¨¥ ¢ë¢®¤  ­ ¤¯¨á¨ ­  ª ­¢ã
93
	mov	eax,4
82
	mov	eax,4
94
	int	0x40          	;‚뢮¤ 
83
	int	0x40          	;‚뢮¤ 
95
popa				;¢®ááâ ­®¢¨âì §­ ç¥­¨ï ॣ¨áâ஢ ¨§ á⥪ 
84
popa				;¢®ááâ ­®¢¨âì §­ ç¥­¨ï ॣ¨áâ஢ ¨§ á⥪ 
96
ret				;¢ë©¤¥¬ ¨§ ¯à®æ¥¤ãàë
85
ret				;¢ë©¤¥¬ ¨§ ¯à®æ¥¤ãàë
97
 
86
 
98
.clear_op:			;®ç¨á⪠ 祪 ¡®ªá 
87
.clear_op:			;®ç¨á⪠ 祪 ¡®ªá 
99
	mov	edx,dword [sc.work]	;梥⠢­ãâਠ祪 ¡®ªá 
88
	mov	edx,dword [sc.work]	;梥⠢­ãâਠ祪 ¡®ªá 
100
	jmp	@f		;¡¥§ãá«®¢­ë© ¯à릮ª ­  ­¨¦­îî ¬¥âªã @@
89
	jmp	@f		;¡¥§ãá«®¢­ë© ¯à릮ª ­  ­¨¦­îî ¬¥âªã @@
101
 
90
 
102
.draw_op:            ;­ à¨á®¢ âì ¢ª«î祭­ë© 祪 ¡®ªá
91
.draw_op:            ;­ à¨á®¢ âì ¢ª«î祭­ë© 祪 ¡®ªá
103
	mov	edx,op_border_color	;§ £à㧨âì 梥â
92
	mov	edx,op_border_color	;§ £à㧨âì 梥â
104
@@:
93
@@:
105
	movzx	ebx,word op_left	;§ £à㧨âì ª®®à¤¨­ âã ¯® å
94
	movzx	ebx,word op_left	;§ £à㧨âì ª®®à¤¨­ âã ¯® å
106
	add	ebx,(op_size/3)	;¤®¡ ¢¨âì (áâ®à®­  ¯àאַ㣮«ì­¨ª /3)
95
	add	ebx,(op_size/3)	;¤®¡ ¢¨âì (áâ®à®­  ¯àאַ㣮«ì­¨ª /3)
107
	shl	ebx,16		;ᤢ¨­¥¬ ­  16 à §à冷¢ ¢ «¥¢® (㬭®¦¨¬ ­  65536)
96
	shl	ebx,16		;ᤢ¨­¥¬ ­  16 à §à冷¢ ¢ «¥¢® (㬭®¦¨¬ ­  65536)
108
	mov	bx,(op_size/2)	;§ £à㧨âì (áâ®à®­  ¯àאַ㣮«ì­¨ª /2)
97
	mov	bx,(op_size/2)	;§ £à㧨âì (áâ®à®­  ¯àאַ㣮«ì­¨ª /2)
109
	mov	bp,bx		;á®åà ­¨¬ ॣ¨áâà bx ¢ ॣ¨áâॠ㪠§ â¥«ï ¡ §ë
98
	mov	bp,bx		;á®åà ­¨¬ ॣ¨áâà bx ¢ ॣ¨áâॠ㪠§ â¥«ï ¡ §ë
110
	;push	bx
99
	;push	bx
111
	movzx	ecx,word op_top	;§ £à㧨âì ª®®à¤¨­ âã ¯® ã
100
	movzx	ecx,word op_top	;§ £à㧨âì ª®®à¤¨­ âã ¯® ã
112
	mov	eax,13		;¢ eax - §­ ç¥­¨ï ä㭪樨 ¤«ï ¢ë¢®¤  ¯®«®áë â.¥. ¯® áã⨠¯àאַ㣮«ì­¨ª , ª®â®àë© ®â®¡à ¦ ¥â ¢ª«î祭­ë© ª®¬¯®­¥­â 祪 ¡®ªá
101
	mov	eax,13		;¢ eax - §­ ç¥­¨ï ä㭪樨 ¤«ï ¢ë¢®¤  ¯®«®áë â.¥. ¯® áã⨠¯àאַ㣮«ì­¨ª , ª®â®àë© ®â®¡à ¦ ¥â ¢ª«î祭­ë© ª®¬¯®­¥­â 祪 ¡®ªá
113
	add	ecx,(op_size/3)	;¤®¡ ¢¨âì (áâ®à®­  ¯àאַ㣮«ì­¨ª /3)
102
	add	ecx,(op_size/3)	;¤®¡ ¢¨âì (áâ®à®­  ¯àאַ㣮«ì­¨ª /3)
114
	shl	ecx,16		;ᤢ¨­¥¬ ­  16 à §à冷¢ ¢ «¥¢® (㬭®¦¨¬ ­  65536)
103
	shl	ecx,16		;ᤢ¨­¥¬ ­  16 à §à冷¢ ¢ «¥¢® (㬭®¦¨¬ ­  65536)
115
	mov	cx,bp		;§ £à㧨¬ §­ ç¥­¨ï ॣ¨áâà  ãª § â¥«ï ¡ §ë ¢ cx
104
	mov	cx,bp		;§ £à㧨¬ §­ ç¥­¨ï ॣ¨áâà  ãª § â¥«ï ¡ §ë ¢ cx
116
	;pop	cx
105
	;pop	cx
117
	int	0x40		;¢ë¢®¤
106
	int	0x40		;¢ë¢®¤
118
ret				;¢ë©â¨ ¨§ ¯à®æ¥¤ãàë
107
ret				;¢ë©â¨ ¨§ ¯à®æ¥¤ãàë
119
 
108
 
120
.mouse:                 ;®¡à ¡®âª  ¬ëè¨ 
109
.mouse:                 ;®¡à ¡®âª  ¬ëè¨ 
121
pusha
110
pusha
122
	mov	eax,37   	;¡ã¤¥¬ çâ® â® ¤¥« âì ¥á«¨ ã ­ á çâ® - ­¨âì ­ ¦ â®
111
	mov	eax,37   	;¡ã¤¥¬ çâ® â® ¤¥« âì ¥á«¨ ã ­ á çâ® - ­¨âì ­ ¦ â®
123
	mov	ebx,2		;¢­¥á⨠¢ ॣ¨áâà §­ ç¥­¨¥ 2
112
	mov	ebx,2		;¢­¥á⨠¢ ॣ¨áâà §­ ç¥­¨¥ 2
124
	int	0x40		;¯à®¢¥àª  ­¥ ­ ¦ « «¨ ¯®«ì§®¢ â¥«ì ª­®¯ªã ¬ë誨
113
	int	0x40		;¯à®¢¥àª  ­¥ ­ ¦ « «¨ ¯®«ì§®¢ â¥«ì ª­®¯ªã ¬ë誨
125
	test	eax,eax    ;¯à®¢¥àª  ¥á«¨ ã ­ á ¢ eax=0, â® ãáâ ­®¢¨¬ ä« £ ¨ ¢ë©¤¥¬
114
	test	eax,eax    ;¯à®¢¥àª  ¥á«¨ ã ­ á ¢ eax=0, â® ãáâ ­®¢¨¬ ä« £ ¨ ¢ë©¤¥¬
126
	jnz	@f         ;¯¥à¥©â¨ ­  ­¨¦­îî ¬¥âªã @@
115
	jnz	@f         ;¯¥à¥©â¨ ­  ­¨¦­îî ¬¥âªã @@
127
	popa			;¥á«¨ ­¨ç¥£® ­¥ ¯à®¨§®è«®, â® ¢®ááâ ­®¢¨¬ §­ ç¥­¨ï ॣ¨áâ஢ ¨§ á⥪ 
116
	popa			;¥á«¨ ­¨ç¥£® ­¥ ¯à®¨§®è«®, â® ¢®ááâ ­®¢¨¬ §­ ç¥­¨ï ॣ¨áâ஢ ¨§ á⥪ 
128
	ret                     ;¢ë室
117
	ret                     ;¢ë室
129
@@:
118
@@:
130
	movzx	esi,word op_text_length ;§ £à㧨âì ª®«-¢® ᨬ¢®«®¢ ¢ ⥪á⮢®© áâப¥
119
	movzx	esi,word op_text_length ;§ £à㧨âì ª®«-¢® ᨬ¢®«®¢ ¢ ⥪á⮢®© áâப¥
131
	;“¬­®¦¥­¨¥ ­  6 ëáâ஥ 㬭®¦¥­¨¥ ¬®¦­® ¢®á¯®«ì§®¢ âìáï «î¡ë¬ ¬§ ¬¥â®¤®¢, ­® ­  áâ àëå à®æ¥áá®à å (386,486,P1)¡ëáâ॥ ¡ã¤¥â á ¨­áâàãªæ¨¥© Lea
120
	;“¬­®¦¥­¨¥ ­  6 ëáâ஥ 㬭®¦¥­¨¥ ¬®¦­® ¢®á¯®«ì§®¢ âìáï «î¡ë¬ ¬§ ¬¥â®¤®¢, ­® ­  áâ àëå à®æ¥áá®à å (386,486,P1)¡ëáâ॥ ¡ã¤¥â á ¨­áâàãªæ¨¥© Lea
132
	;lea	esi,[eax*2+eax]
121
	;lea	esi,[eax*2+eax]
133
	;shl	eax,1
122
	;shl	eax,1
134
	imul	esi,6               ; ¨«¨ ¬®¦­® ¨ â ª 㬭®¦¨âì ­  6
123
	imul	esi,6               ; ¨«¨ ¬®¦­® ¨ â ª 㬭®¦¨âì ­  6
135
	xor	ebx,ebx
124
	xor	ebx,ebx
136
        add	esi,op_text_margin   ;¤®¡ ¢¨âì 3 - à ááâ®ï­¨¥ ®â 祪 ¡®ªá  ¤® ­ ¤¯¨á¨
125
        add	esi,op_text_margin   ;¤®¡ ¢¨âì 3 - à ááâ®ï­¨¥ ®â 祪 ¡®ªá  ¤® ­ ¤¯¨á¨
137
	
126
	
138
	mov	eax,37		;¯®«ã稬 ª®®à¤¨­ âë ¬ë誨 
127
	mov	eax,37		;¯®«ã稬 ª®®à¤¨­ âë ¬ë誨 
139
	inc	ebx		;¤®¡ ¢¨âì 1
128
	inc	ebx		;¤®¡ ¢¨âì 1
140
	int	0x40                ;¯®«ãç¨âì ª®®à¤¨­ âë ªãàá®à  ®â­®á¨â¥«ì­® ®ª­  
129
	int	0x40                ;¯®«ãç¨âì ª®®à¤¨­ âë ªãàá®à  ®â­®á¨â¥«ì­® ®ª­  
141
 
130
 
142
	movzx	ebx,word op_top           ;§ £à㧨âì ¢ bx §­ ç¥­¨¥ ª®®à¤¨­ âë ã
131
	movzx	ebx,word op_top           ;§ £à㧨âì ¢ bx §­ ç¥­¨¥ ª®®à¤¨­ âë ã
143
	cmp	ax,bx               ;áà ¢­¨âì á á ª®®à¤¨­ â®© ªãàá®à 
132
	cmp	ax,bx               ;áà ¢­¨âì á á ª®®à¤¨­ â®© ªãàá®à 
144
	jl	.mouse_end          ;SF <> OF ¥á«¨ ¬¥­ìè¥ 
133
	jl	.mouse_end          ;SF <> OF ¥á«¨ ¬¥­ìè¥ 
145
	add	ebx,op_size          ;¤®¡ ¢¨âì à §¬¥à 
134
	add	ebx,op_size          ;¤®¡ ¢¨âì à §¬¥à 
146
	cmp	ax,bx               ;áà ¢­¨âì
135
	cmp	ax,bx               ;áà ¢­¨âì
147
	jg	.mouse_end          ;ZF = 0 ¨ SF = OF ¥á«¨ ¡®«ìè¥ 
136
	jg	.mouse_end          ;ZF = 0 ¨ SF = OF ¥á«¨ ¡®«ìè¥ 
148
	
137
	
149
	shr	eax,16              ;à §¤¥«¨¬ ­  65536 ¨«¨ ¯à®á⮠ᤢ¨­¥¬ ¡¨âë ­  16 §­ ç¥­¨©
138
	shr	eax,16              ;à §¤¥«¨¬ ­  65536 ¨«¨ ¯à®á⮠ᤢ¨­¥¬ ¡¨âë ­  16 §­ ç¥­¨©
150
	movzx	ebx,word op_left          ;¯à®¨§¢¥¤¥¬  ­ «®£¨ç­®¥ áà ¢­¥­¨¥
139
	movzx	ebx,word op_left          ;¯à®¨§¢¥¤¥¬  ­ «®£¨ç­®¥ áà ¢­¥­¨¥
151
	cmp	ax,bx		     ;áà ¢­¨âì ॣ¨áâàë
140
	cmp	ax,bx		     ;áà ¢­¨âì ॣ¨áâàë
152
	jl	.mouse_end	     ;¥á«¨ ¬¥­ìè¥
141
	jl	.mouse_end	     ;¥á«¨ ¬¥­ìè¥
153
	add	ebx,op_size	     ;¤®¡ ¢¨âì ¤«¨­ã áâ®à®­ë ¯àאַ㣮«ì­¨ª 
142
	add	ebx,op_size	     ;¤®¡ ¢¨âì ¤«¨­ã áâ®à®­ë ¯àאַ㣮«ì­¨ª 
154
	add	ebx,esi		     ;“ç¥áâì ¢ §­ ç¥­¨¨ ¯® å ¥é¥ ¨ ¤«¨­ã ­ ¤¯¨á¨ ª 祪¡®ªáã
143
	add	ebx,esi		     ;“ç¥áâì ¢ §­ ç¥­¨¨ ¯® å ¥é¥ ¨ ¤«¨­ã ­ ¤¯¨á¨ ª 祪¡®ªáã
155
	cmp	ax,bx		     ;áâà ¢­¨âì ॣ¨áâàë
144
	cmp	ax,bx		     ;áâà ¢­¨âì ॣ¨áâàë
156
	jg	.mouse_end	     ;¥á«¨ ¡®«ìè¥ 
145
	jg	.mouse_end	     ;¥á«¨ ¡®«ìè¥ 
157
	mov	eax,dword op_optibox_gr
146
	mov	eax,dword op_optibox_gr
158
        mov	[eax],edi
147
        mov	[eax],edi
159
 
148
 
160
.mouse_end:
149
.mouse_end:
161
popa				  ;¢®ááâ ­®¢¨âì ॣ¨áâàë ¨§ á⥪ 
150
popa				  ;¢®ááâ ­®¢¨âì ॣ¨áâàë ¨§ á⥪ 
162
ret				  ;¢ë©â¨
151
ret				  ;¢ë©â¨
163
}
152
}
164
 
153
 
165
struc option_box left,top,border_color,text_color,text,text_length,point_gr,flags
154
struc option_box left,top,text,text_length,point_gr
166
{	;áâàãªâãà  ¯ à ¬¥â஢ ¤«ï 祪 ¡®ªá 
155
{	;áâàãªâãà  ¯ à ¬¥â஢ ¤«ï 祪 ¡®ªá 
167
.left: dw left	;+0	;¯®«®¦¥­¨¥ ¯® å
156
.left: dw left	;+0	;¯®«®¦¥­¨¥ ¯® å
168
.top: dw top	;+2	;¯®«®¦¥­¨¥ ¯® ã
157
.top: dw top	;+2	;¯®«®¦¥­¨¥ ¯® ã
169
.border_color: dd border_color ;+8	梥â à ¬ª¨ 
158
;.border_color: dd border_color ;+8	梥â à ¬ª¨ 
170
.text_color: dd text_color     ;+12	梥â ⥪áâ  ­ ¤¯¨á¨
159
;.text_color: dd text_color     ;+12	梥â ⥪áâ  ­ ¤¯¨á¨
171
.text: dd text	     ;+16		 ¤à¥á ¢ ª®¤¥ ¯à®£à ¬¬ë £¤¥ à á¯®«®¦¥­ ⥪áâà
160
.text: dd text	     ;+16		 ¤à¥á ¢ ª®¤¥ ¯à®£à ¬¬ë £¤¥ à á¯®«®¦¥­ ⥪áâà
172
.text_length: dw text_length ; +20	¤«¨­  ⥪áâ 
161
.text_length: dw text_length ; +20	¤«¨­  ⥪áâ 
173
.option_group: dd point_gr	;㪠§ â¥«ì ­  à §¬¥é¥­¨¥ edi - ¨¤¥­â¨ä¨ª â®à  optibox
162
.option_group: dd point_gr	;㪠§ â¥«ì ­  à §¬¥é¥­¨¥ edi - ¨¤¥­â¨ä¨ª â®à  optibox
174
}
163
}
175
op_struc_size=22			;®¡é ï áâàãªâãà  24 ¡ ©â
164
op_struc_size=14			;®¡é ï áâàãªâãà  24 ¡ ©â
176
op_flag_en=10b
165
op_flag_en=10b
177
macro draw_option_boxes start,end	;à¨á®¢ âì 祪 ¡®ªáë
166
macro draw_option_boxes start,end	;à¨á®¢ âì 祪 ¡®ªáë
178
{
167
{
179
	mov	edi,start			;“ª § â¥«ì ­  ­ ç «® ¤ ­­ëå 祪 ¡®ªá®¢ â.¥. ­  ­ ç «® ¤ ­­ëå ¯¥à¢®£® 祪¡®ªá 
168
	mov	edi,start			;“ª § â¥«ì ­  ­ ç «® ¤ ­­ëå 祪 ¡®ªá®¢ â.¥. ­  ­ ç «® ¤ ­­ëå ¯¥à¢®£® 祪¡®ªá 
180
	mov	ecx,((end-start)/op_struc_size) ;Š®«¨ç¥á⢮ 祪 ¡®ªá®¢
169
	mov	ecx,((end-start)/op_struc_size) ;Š®«¨ç¥á⢮ 祪 ¡®ªá®¢
181
@@:
170
@@:
182
	call	option_box.draw                  ;Žâ®¡à §¨âì 祪 ¡®ªá
171
	call	option_box.draw                  ;Žâ®¡à §¨âì 祪 ¡®ªá
183
	add	edi,op_struc_size               ;“ª § â¥«ì ­  ¯®á«¥¤ãî騥 祪 ¡®ªáë  â.¥. +28
172
	add	edi,op_struc_size               ;“ª § â¥«ì ­  ¯®á«¥¤ãî騥 祪 ¡®ªáë  â.¥. +28
184
	loop	@b	;¯à룭ãâì ¥á«¨ ¢ ecx/cx §­ ç¥­¨¥ ­¥ 0 ­  ¢¥àå­îî @@
173
	loop	@b	;¯à룭ãâì ¥á«¨ ¢ ecx/cx §­ ç¥­¨¥ ­¥ 0 ­  ¢¥àå­îî @@
185
}
174
}
186
macro mouse_option_boxes start,end	;ãáâ ­®¢ª  祪 ¡®ªá®¢, ¢ § ¢¨á¨¬®á⨠®â ᮡëâ¨ï
175
macro mouse_option_boxes start,end	;ãáâ ­®¢ª  祪 ¡®ªá®¢, ¢ § ¢¨á¨¬®á⨠®â ᮡëâ¨ï
187
{
176
{
188
	mov	edi,start		; “ª § â¥«ì ­  ­ ç «® ¤ ­­ëå 祪 ¡®ªá®¢ â.¥. ­  ­ ç «® ¤ ­­ëå ¯¥à¢®£® 祪¡®ªá 
177
	mov	edi,start		; “ª § â¥«ì ­  ­ ç «® ¤ ­­ëå 祪 ¡®ªá®¢ â.¥. ­  ­ ç «® ¤ ­­ëå ¯¥à¢®£® 祪¡®ªá 
189
	mov	ecx,((end-start)/op_struc_size)	;Š®«¨ç¥á⢮ 祪 ¡®ªá®¢
178
	mov	ecx,((end-start)/op_struc_size)	;Š®«¨ç¥á⢮ 祪 ¡®ªá®¢
190
@@:
179
@@:
191
	call	option_box.mouse		;¯à®¢¥àª  ¬ë誨 ¨ ®¡à ¡®âª  ᮡë⨩
180
	call	option_box.mouse		;¯à®¢¥àª  ¬ë誨 ¨ ®¡à ¡®âª  ᮡë⨩
192
	add	edi,op_struc_size	;“ª § â¥«ì ­  ¯®á«¥¤ãî騥 祪 ¡®ªáë
181
	add	edi,op_struc_size	;“ª § â¥«ì ­  ¯®á«¥¤ãî騥 祪 ¡®ªáë
193
	loop	@b	;¯à룭ãâì ¥á«¨ ¢ ecx/cx §­ ç¥­¨¥ ­¥ 0 ­  ¢¥àå­îî @@
182
	loop	@b	;¯à룭ãâì ¥á«¨ ¢ ecx/cx §­ ç¥­¨¥ ­¥ 0 ­  ¢¥àå­îî @@
194
 
183
 
195
       	mov	edi,start		; “ª § â¥«ì ­  ­ ç «® ¤ ­­ëå 祪 ¡®ªá®¢ â.¥. ­  ­ ç «® ¤ ­­ëå ¯¥à¢®£® 祪¡®ªá 
184
       	mov	edi,start		; “ª § â¥«ì ­  ­ ç «® ¤ ­­ëå 祪 ¡®ªá®¢ â.¥. ­  ­ ç «® ¤ ­­ëå ¯¥à¢®£® 祪¡®ªá 
196
	mov	ecx,((end-start)/op_struc_size)	;Š®«¨ç¥á⢮ 祪 ¡®ªá®¢
185
	mov	ecx,((end-start)/op_struc_size)	;Š®«¨ç¥á⢮ 祪 ¡®ªá®¢
197
 
186
 
198
.home:
187
.home:
199
	mov	eax,[edi+18]	;op_optibox_gr
188
	mov	eax,[edi+10]	;op_optibox_gr
200
        mov	dword eax,[eax]
189
        mov	dword eax,[eax]
201
 
190
 
202
        pusha
191
        pusha
203
 
192
 
204
	cmp	eax,edi
193
	cmp	eax,edi
205
	jne	@f
194
	jne	@f
206
	
195
	
207
	call	option_box.draw_op
196
	call	option_box.draw_op
208
	jmp	.nxtm
197
	jmp	.nxtm
209
@@:     call	option_box.clear_op
198
@@:     call	option_box.clear_op
210
 
199
 
211
.nxtm:  popa
200
.nxtm:  popa
212
	add	edi,op_struc_size               ;“ª § â¥«ì ­  ¯®á«¥¤ãî騥 祪 ¡®ªáë  â.¥. +28
201
	add	edi,op_struc_size               ;“ª § â¥«ì ­  ¯®á«¥¤ãî騥 祪 ¡®ªáë  â.¥. +28
213
        loop 	.home
202
        loop 	.home
214
 
203
 
215
}
204
}