Subversion Repositories Kolibri OS

Rev

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

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