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
;Ž¯â¨¬¨§¨à®¢ ­­ë© ª®¬¯®­¥­â CheckBox (ˆá室­ë© ¢ à¨ ­â ®â Maxxxx32)
1
;Ž¯â¨¬¨§¨à®¢ ­­ë© ª®¬¯®­¥­â CheckBox (ˆá室­ë© ¢ à¨ ­â ®â Maxxxx32)
2
;Ž¯â¨¬¨§¨à®¢ ­ ¢ë¢®¤ áâப¨ ­ ¤¯¨á¨ ¤«ï CheckBox'a + ⥯¥àì, ¯à¨ ¯à®¢¥àª¥ ­¥ ¯à®¨á室¨â ¯®¤áç¥â ª®«-¢  ᨬ¢®«®¢ ¢ áâப¥
2
;Ž¯â¨¬¨§¨à®¢ ­ ¢ë¢®¤ áâப¨ ­ ¤¯¨á¨ ¤«ï CheckBox'a + ⥯¥àì, ¯à¨ ¯à®¢¥àª¥ ­¥ ¯à®¨á室¨â ¯®¤áç¥â ª®«-¢  ᨬ¢®«®¢ ¢ áâப¥
3
;Ž¯â¨¬¨§ æ¨ï ª®¬ ­¤ - ®âª § «áï ®â á®åà ­¥­¨ï ॣ¨áâ஢ ¢ á⥪¥.
3
;Ž¯â¨¬¨§ æ¨ï ª®¬ ­¤ - ®âª § «áï ®â á®åà ­¥­¨ï ॣ¨áâ஢ ¢ á⥪¥.
4
;21.02.2007 ¤®¡ ¢¨« ª®¤ ®â Heavyiron, ¤®¯¨á « ¬ ªà®áë ¤«ï ¨á¯®«ì§®¢ ­¨ï á¨á⥬­ëå 梥⮢
4
;21.02.2007 ¤®¡ ¢¨« ª®¤ ®â Heavyiron, ¤®¯¨á « ¬ ªà®áë ¤«ï ¨á¯®«ì§®¢ ­¨ï á¨á⥬­ëå 梥⮢
5
;19.02.2007 ®¡é¥¥ ã«ãç襭¨¥ ª®¤ , 㬥­ì襭¨¥ à §¬¥à  ¨ ¨á¯®«ì§®¢ ­¨¥ á¨á⥬­ëå 梥⮢ ¤«ï ®â®¡à ¦¥­¨ï checkbox
5
;19.02.2007 ®¡é¥¥ ã«ãç襭¨¥ ª®¤ , 㬥­ì襭¨¥ à §¬¥à  ¨ ¨á¯®«ì§®¢ ­¨¥ á¨á⥬­ëå 梥⮢ ¤«ï ®â®¡à ¦¥­¨ï checkbox
6
;17.07.2006 ¯à®¨§¢¥¤¥­  ®¯â¨¬¨§ æ¨ï, ¯à¨ ãáâ ­®¢ª¥ 祪 ¡®ªá  ¢ ¯®«®¦¥­¨¥ ¢ª«î祭® ¯®á«¥¤ãî騥 祪 ¡®ªáë ¢ â®â ¦¥ ¯à®¬¥¦ã⮪ ¢à¥¬¥­¨ ­¥ ¯à®¢¥àïîâáï
6
;17.07.2006 ¯à®¨§¢¥¤¥­  ®¯â¨¬¨§ æ¨ï, ¯à¨ ãáâ ­®¢ª¥ 祪 ¡®ªá  ¢ ¯®«®¦¥­¨¥ ¢ª«î祭® ¯®á«¥¤ãî騥 祪 ¡®ªáë ¢ â®â ¦¥ ¯à®¬¥¦ã⮪ ¢à¥¬¥­¨ ­¥ ¯à®¢¥àïîâáï
7
;22.08.2006 ¯à®¨§¢¥¤¥­  ®¯â¨¬¨§ æ¨ï ª®¬ ­¤, ¯à¨­ïâë ¢® ¢­¨¬ ­¨¥ § ¬¥ç ­¨ï DIAMOND' .
7
;22.08.2006 ¯à®¨§¢¥¤¥­  ®¯â¨¬¨§ æ¨ï ª®¬ ­¤, ¯à¨­ïâë ¢® ¢­¨¬ ­¨¥ § ¬¥ç ­¨ï DIAMOND' .
8
;  - ’¥¯«®¢ €«¥ªá¥©  www.lrz.land.ru
8
;  - ’¥¯«®¢ €«¥ªá¥©  www.lrz.land.ru
9
 
9
 
10
macro version_ch           ;¤«ï ᮢ¬¥á⨬®á⨠ᮠáâ à묨 ¢¥àá¨ï¬¨ checkbox ¢á¥ æ¢¥â  § ¤ îâáï àã窠¬¨
10
macro version_ch           ;¤«ï ᮢ¬¥á⨬®á⨠ᮠáâ à묨 ¢¥àá¨ï¬¨ checkbox ¢á¥ æ¢¥â  § ¤ îâáï àã窠¬¨
11
{
11
{
12
ch_struc_size=24
12
ch_struc_size=24
13
ch_left equ [edi]    ;ª®®à¤¨­ â  ­ ç «  à¨á®¢ ­¨ï ¯® å
13
ch_left equ [edi]    ;ª®®à¤¨­ â  ­ ç «  à¨á®¢ ­¨ï ¯® å
14
ch_top equ [edi+2]   ;ª®®à¤¨­ â  ­ ç «  à¨á®¢ ­¨ï ¯® ã
14
ch_top equ [edi+2]   ;ª®®à¤¨­ â  ­ ç «  à¨á®¢ ­¨ï ¯® ã
15
ch_color equ [edi+4]
15
ch_color equ [edi+4]
16
ch_border_color equ [edi+8] ; or [edi+4] ;梥â à ¬ª¨ checkbox ¥¥ ¬®¦­® § ¤ âì á ¬®áâ®ï⥫쭮
16
ch_border_color equ [edi+8] ; or [edi+4] ;梥â à ¬ª¨ checkbox ¥¥ ¬®¦­® § ¤ âì á ¬®áâ®ï⥫쭮
17
ch_text_color equ   [edi+12];[edi+4]  ;梥â ⥪áâ 
17
ch_text_color equ   [edi+12];[edi+4]  ;梥â ⥪áâ 
18
ch_text_ptr equ [edi+16]    ;㪠§ â¥«ì ­  ­ ç «® ⥪á⮢®© áâப¨ 
18
ch_text_ptr equ [edi+16]    ;㪠§ â¥«ì ­  ­ ç «® ⥪á⮢®© áâப¨ 
19
ch_text_length equ [edi+20] ;¤«¨­  ­ ¤¯¨á¨ (2^64 â ª®© ¤«¨­ë ¬®¦¥â ¡ëâì ⥪áâ)
19
ch_text_length equ [edi+20] ;¤«¨­  ­ ¤¯¨á¨ (2^64 â ª®© ¤«¨­ë ¬®¦¥â ¡ëâì ⥪áâ)
20
ch_flags equ [edi+22]       ;ä« £¨ 
20
ch_flags equ [edi+22]       ;ä« £¨ 
21
}
21
}
22
 
22
 
23
macro   version_ch1        ;¯à®¤¢¨­ãâ ï ¢¥àá¨ï, ¨á¯®«ì§ã¥â æ¢¥â  áª¨­ . 
23
macro   version_ch1        ;¯à®¤¢¨­ãâ ï ¢¥àá¨ï, ¨á¯®«ì§ã¥â æ¢¥â  áª¨­ . 
24
{
24
{
25
ch_struc_size=12
25
ch_struc_size=12
26
ch_left equ [edi]    ;ª®®à¤¨­ â  ­ ç «  à¨á®¢ ­¨ï ¯® å
26
ch_left equ [edi]    ;ª®®à¤¨­ â  ­ ç «  à¨á®¢ ­¨ï ¯® å
27
ch_top equ [edi+2]   ;ª®®à¤¨­ â  ­ ç «  à¨á®¢ ­¨ï ¯® ã
27
ch_top equ [edi+2]   ;ª®®à¤¨­ â  ­ ç «  à¨á®¢ ­¨ï ¯® ã
28
ch_color equ [sc.work] ;
28
ch_color equ [sc.work] ;
29
ch_border_color equ [sc.work_graph] ; or [edi+4] ;梥â à ¬ª¨ checkbox ¥¥ ¬®¦­® § ¤ âì á ¬®áâ®ï⥫쭮
29
ch_border_color equ [sc.work_graph] ; or [edi+4] ;梥â à ¬ª¨ checkbox ¥¥ ¬®¦­® § ¤ âì á ¬®áâ®ï⥫쭮
30
ch_text_color equ   [sc.work_text];[edi+4]  ;梥â ⥪áâ 
30
ch_text_color equ   [sc.work_text];[edi+4]  ;梥â ⥪áâ 
31
ch_text_ptr equ [edi+4]    ;㪠§ â¥«ì ­  ­ ç «® ⥪á⮢®© áâப¨ 
31
ch_text_ptr equ [edi+4]    ;㪠§ â¥«ì ­  ­ ç «® ⥪á⮢®© áâப¨ 
32
ch_text_length equ [edi+8] ;¤«¨­  ­ ¤¯¨á¨ (2^64 â ª®© ¤«¨­ë ¬®¦¥â ¡ëâì ⥪áâ)
32
ch_text_length equ [edi+8] ;¤«¨­  ­ ¤¯¨á¨ (2^64 â ª®© ¤«¨­ë ¬®¦¥â ¡ëâì ⥪áâ)
33
ch_flags equ [edi+10]       ;ä« £¨ 
33
ch_flags equ [edi+10]       ;ä« £¨ 
34
}
34
}
35
 
35
 
36
macro use_check_box
36
macro use_check_box
37
{
37
{
38
ch_text_margin=4     ;à ááâ®ï­¨¥ ®â ¯àאַ㣮«ì­¨ª  祪 ¡®ªá  ¤® ­ ¤¯¨á¨ 
38
ch_text_margin=4     ;à ááâ®ï­¨¥ ®â ¯àאַ㣮«ì­¨ª  祪 ¡®ªá  ¤® ­ ¤¯¨á¨ 
39
ch_size=11           ;à §¬¥à ª¢ ¤à â  祪 ¡®ªá  
39
ch_size=11           ;à §¬¥à ª¢ ¤à â  祪 ¡®ªá  
40
check_box:
40
check_box:
41
.draw:
41
.draw:
42
       pusha   ;á®åà ­¨¬ ¢á¥ ॣ¨áâàë
42
       pusha   ;á®åà ­¨¬ ¢á¥ ॣ¨áâàë
43
       mov eax,13 
43
       mov eax,13 
44
       mov ebx,ch_left 
44
       mov ebx,ch_left 
45
       shl ebx,16 
45
       shl ebx,16 
46
       add ebx,ch_size 
46
       add ebx,ch_size 
47
       mov ecx,ch_top 
47
       mov ecx,ch_top 
48
       shl ecx,16 
48
       shl ecx,16 
49
       add ecx,ch_size 
49
       add ecx,ch_size 
50
       mov edx,ch_border_color 
50
       mov edx,ch_border_color 
51
       int 0x40 ;à¨á㥬 à ¬ªã 
51
       mcall ;à¨á㥬 à ¬ªã 
52
 
52
 
53
       mov edx,ch_color 
53
       mov edx,ch_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
       test word ch_flags,2  ;¤®áâ âì §­ ç¥­¨¥ ¡¨â  ¨§ ¯¥à¥¬¥­­®© ¨ ¯®¬¥áâ¨âì ¢  ä« £ CF 
58
       test word ch_flags,2  ;¤®áâ âì §­ ç¥­¨¥ ¡¨â  ¨§ ¯¥à¥¬¥­­®© ¨ ¯®¬¥áâ¨âì ¢  ä« £ CF 
59
       jz   @f                ;¢ ¥á«¨ CF=1, â® ¢ë¯®«­¨¬ á«¥¤ãîéãî ¯à®æ¥¤ãàã ¨­ ç¥ ¯¥à¥©â¨ ­  ­¨¦­îî @@
59
       jz   @f                ;¢ ¥á«¨ CF=1, â® ¢ë¯®«­¨¬ á«¥¤ãîéãî ¯à®æ¥¤ãàã ¨­ ç¥ ¯¥à¥©â¨ ­  ­¨¦­îî @@
60
       call .draw_ch  ;­ à¨á®¢ âì ¢ª«î祭­ë© 祪 ¡®ªá
60
       call .draw_ch  ;­ à¨á®¢ âì ¢ª«î祭­ë© 祪 ¡®ªá
61
@@:
61
@@:
62
;----------------------------
62
;----------------------------
63
;à áç¥â ªã¤  ¡ã¤¥â ¯à®¨§¢¥¤¥­ ¢ë¢®¤ ⥪áâ 
63
;à áç¥â ªã¤  ¡ã¤¥â ¯à®¨§¢¥¤¥­ ¢ë¢®¤ ⥪áâ 
64
;----------------------------
64
;----------------------------
65
        movzx ebx,word ch_left        ;§ £à㧨âì §­ ç¥­¨¥ å ¤«ï 祪 ¡®ªá 
65
        movzx ebx,word ch_left        ;§ £à㧨âì §­ ç¥­¨¥ å ¤«ï 祪 ¡®ªá 
66
        add   ebx,(ch_size+ch_text_margin) ;¤®¡ ¢¨âì à §¬¥à áâ®à®­ë ¨ à ááâ®ï­¨¥ ­  ª®â®à®¬ ­ ç­¥âáï ¢ë¢®¤ ⥪áâ 
66
        add   ebx,(ch_size+ch_text_margin) ;¤®¡ ¢¨âì à §¬¥à áâ®à®­ë ¨ à ááâ®ï­¨¥ ­  ª®â®à®¬ ­ ç­¥âáï ¢ë¢®¤ ⥪áâ 
67
        shl   ebx,16                ;ᤢ¨­¥¬ ­  16 à §à冷¢ ¢ «¥¢® (㬭®¦¨¬ ­  65536)
67
        shl   ebx,16                ;ᤢ¨­¥¬ ­  16 à §à冷¢ ¢ «¥¢® (㬭®¦¨¬ ­  65536)
68
        mov   bx,ch_top        ;§ £à㧨¬ §­ ç¥­¨¥ ¯® y
68
        mov   bx,ch_top        ;§ £à㧨¬ §­ ç¥­¨¥ ¯® y
69
        add   ebx,(ch_size-9+1)        ;¤®¡ ¢¨¬ §­ ç¥­¨¥ ¤«¨­ë áâ®à®­ë -9+1
69
        add   ebx,(ch_size-9+1)        ;¤®¡ ¢¨¬ §­ ç¥­¨¥ ¤«¨­ë áâ®à®­ë -9+1
70
        mov   ecx,ch_text_color        ;§ £à㧨¬ 梥⠭ ¤¯¨á¨
70
        mov   ecx,ch_text_color        ;§ £à㧨¬ 梥⠭ ¤¯¨á¨
71
        
71
        
72
        mov   edx,ch_text_ptr                ;㪠¦¥¬  ¤à¥á ®â ªã¤  ­ã¦­® ¢ë¢®¤¨âì áâபã
72
        mov   edx,ch_text_ptr                ;㪠¦¥¬  ¤à¥á ®â ªã¤  ­ã¦­® ¢ë¢®¤¨âì áâபã
73
        movzx esi,word ch_text_length ;‡ £à㧨¬ ¤«¨­ã ­ ¤¯¨á¨ ¢ esi
73
        movzx esi,word ch_text_length ;‡ £à㧨¬ ¤«¨­ã ­ ¤¯¨á¨ ¢ esi
74
        ;¢­¥á¥¬ ¢ eax §­ ç¥­¨¥ ¢ë¢®¤  ­ ¤¯¨á¨ ­  ª ­¢ã
74
        ;¢­¥á¥¬ ¢ eax §­ ç¥­¨¥ ¢ë¢®¤  ­ ¤¯¨á¨ ­  ª ­¢ã
75
        mov   eax,4
75
        mov   eax,4
76
        int   0x40                  ;‚뢮¤ 
76
        mcall                  ;‚뢮¤ 
77
popa                              ;¢®ááâ ­®¢¨âì §­ ç¥­¨ï ॣ¨áâ஢ ¨§ á⥪ 
77
popa                              ;¢®ááâ ­®¢¨âì §­ ç¥­¨ï ॣ¨áâ஢ ¨§ á⥪ 
78
ret                               ;¢ë©¤¥¬ ¨§ ¯à®æ¥¤ãàë
78
ret                               ;¢ë©¤¥¬ ¨§ ¯à®æ¥¤ãàë
79
 
79
 
80
.clear_ch:                        ;®ç¨á⪠ 祪 ¡®ªá 
80
.clear_ch:                        ;®ç¨á⪠ 祪 ¡®ªá 
81
        mov   edx,ch_color   ;梥⠢­ãâਠ祪 ¡®ªá 
81
        mov   edx,ch_color   ;梥⠢­ãâਠ祪 ¡®ªá 
82
        jmp   @f             ;¡¥§ãá«®¢­ë© ¯à릮ª ­  ­¨¦­îî ¬¥âªã @@
82
        jmp   @f             ;¡¥§ãá«®¢­ë© ¯à릮ª ­  ­¨¦­îî ¬¥âªã @@
83
 
83
 
84
.draw_ch:            ;­ à¨á®¢ âì ¢ª«î祭­ë© 祪 ¡®ªá
84
.draw_ch:            ;­ à¨á®¢ âì ¢ª«î祭­ë© 祪 ¡®ªá
85
        mov   edx,ch_border_color        ;§ £à㧨âì 梥â
85
        mov   edx,ch_border_color        ;§ £à㧨âì 梥â
86
@@:
86
@@:
87
        movzx ebx,word ch_left  ;§ £à㧨âì ª®®à¤¨­ âã ¯® å
87
        movzx ebx,word ch_left  ;§ £à㧨âì ª®®à¤¨­ âã ¯® å
88
        add   ebx,(ch_size/3)   ;¤®¡ ¢¨âì (áâ®à®­  ¯àאַ㣮«ì­¨ª /3)
88
        add   ebx,(ch_size/3)   ;¤®¡ ¢¨âì (áâ®à®­  ¯àאַ㣮«ì­¨ª /3)
89
        shl   ebx,16            ;ᤢ¨­¥¬ ­  16 à §à冷¢ ¢ «¥¢® (㬭®¦¨¬ ­  65536)
89
        shl   ebx,16            ;ᤢ¨­¥¬ ­  16 à §à冷¢ ¢ «¥¢® (㬭®¦¨¬ ­  65536)
90
        mov   bx,(ch_size/2)    ;§ £à㧨âì (áâ®à®­  ¯àאַ㣮«ì­¨ª /2)
90
        mov   bx,(ch_size/2)    ;§ £à㧨âì (áâ®à®­  ¯àאַ㣮«ì­¨ª /2)
91
        mov   bp,bx             ;á®åà ­¨¬ ॣ¨áâà bx ¢ ॣ¨áâॠ㪠§ â¥«ï ¡ §ë
91
        mov   bp,bx             ;á®åà ­¨¬ ॣ¨áâà bx ¢ ॣ¨áâॠ㪠§ â¥«ï ¡ §ë
92
        ;push        bx
92
        ;push        bx
93
        movzx ecx,word ch_top ;§ £à㧨âì ª®®à¤¨­ âã ¯® ã
93
        movzx ecx,word ch_top ;§ £à㧨âì ª®®à¤¨­ âã ¯® ã
94
        mov   eax,13          ;¢ eax - §­ ç¥­¨ï ä㭪樨 ¤«ï ¢ë¢®¤  ¯®«®áë â.¥. ¯® áã⨠¯àאַ㣮«ì­¨ª , ª®â®àë© ®â®¡à ¦ ¥â ¢ª«î祭­ë© ª®¬¯®­¥­â 祪 ¡®ªá
94
        mov   eax,13          ;¢ eax - §­ ç¥­¨ï ä㭪樨 ¤«ï ¢ë¢®¤  ¯®«®áë â.¥. ¯® áã⨠¯àאַ㣮«ì­¨ª , ª®â®àë© ®â®¡à ¦ ¥â ¢ª«î祭­ë© ª®¬¯®­¥­â 祪 ¡®ªá
95
        add   ecx,(ch_size/3) ;¤®¡ ¢¨âì (áâ®à®­  ¯àאַ㣮«ì­¨ª /3)
95
        add   ecx,(ch_size/3) ;¤®¡ ¢¨âì (áâ®à®­  ¯àאַ㣮«ì­¨ª /3)
96
        shl   ecx,16          ;ᤢ¨­¥¬ ­  16 à §à冷¢ ¢ «¥¢® (㬭®¦¨¬ ­  65536)
96
        shl   ecx,16          ;ᤢ¨­¥¬ ­  16 à §à冷¢ ¢ «¥¢® (㬭®¦¨¬ ­  65536)
97
        mov   cx,bp           ;§ £à㧨¬ §­ ç¥­¨ï ॣ¨áâà  ãª § â¥«ï ¡ §ë ¢ cx
97
        mov   cx,bp           ;§ £à㧨¬ §­ ç¥­¨ï ॣ¨áâà  ãª § â¥«ï ¡ §ë ¢ cx
98
        ;pop        cx
98
        ;pop        cx
99
        int   0x40            ;¢ë¢®¤
99
        mcall            ;¢ë¢®¤
100
ret                                ;¢ë©â¨ ¨§ ¯à®æ¥¤ãàë
100
ret                                ;¢ë©â¨ ¨§ ¯à®æ¥¤ãàë
101
.mouse:      ;®¡à ¡®âª  ¬ëè¨ 
101
.mouse:      ;®¡à ¡®âª  ¬ëè¨ 
102
pusha
102
pusha
103
        mov  eax,37           ;¡ã¤¥¬ çâ® â® ¤¥« âì ¥á«¨ ã ­ á çâ® - ­¨âì ­ ¦ â®
103
        mov  eax,37           ;¡ã¤¥¬ çâ® â® ¤¥« âì ¥á«¨ ã ­ á çâ® - ­¨âì ­ ¦ â®
104
        mov  ebx,2            ;¢­¥á⨠¢ ॣ¨áâà §­ ç¥­¨¥ 2
104
        mov  ebx,2            ;¢­¥á⨠¢ ॣ¨áâà §­ ç¥­¨¥ 2
105
        int  0x40             ;¯à®¢¥àª  ­¥ ­ ¦ « «¨ ¯®«ì§®¢ â¥«ì ª­®¯ªã ¬ë誨
105
        mcall             ;¯à®¢¥àª  ­¥ ­ ¦ « «¨ ¯®«ì§®¢ â¥«ì ª­®¯ªã ¬ë誨
106
        test eax,eax   ;¯à®¢¥àª  ¥á«¨ ã ­ á ¢ eax=0, â® ãáâ ­®¢¨¬ ä« £ ¨ ¢ë©¤¥¬
106
        test eax,eax   ;¯à®¢¥àª  ¥á«¨ ã ­ á ¢ eax=0, â® ãáâ ­®¢¨¬ ä« £ ¨ ¢ë©¤¥¬
107
        jnz  @f         ;¯¥à¥©â¨ ­  ­¨¦­îî ¬¥âªã @@
107
        jnz  @f         ;¯¥à¥©â¨ ­  ­¨¦­îî ¬¥âªã @@
108
        btr  word ch_flags,2  ;¨§¢«¥ç¥­¨¥ §­ ç¥­¨ï § ¤ ­­®£® ¡¨â  ¢ ä« £ cf ¨ ¨§¬¥­¥­¨¥ ¥£® §­ ç¥­¨ï ­  ­ã«¥¢®¥. 
108
        btr  word ch_flags,2  ;¨§¢«¥ç¥­¨¥ §­ ç¥­¨ï § ¤ ­­®£® ¡¨â  ¢ ä« £ cf ¨ ¨§¬¥­¥­¨¥ ¥£® §­ ç¥­¨ï ­  ­ã«¥¢®¥. 
109
        popa                  ;¥á«¨ ­¨ç¥£® ­¥ ¯à®¨§®è«®, â® ¢®ááâ ­®¢¨¬ §­ ç¥­¨ï ॣ¨áâ஢ ¨§ á⥪ 
109
        popa                  ;¥á«¨ ­¨ç¥£® ­¥ ¯à®¨§®è«®, â® ¢®ááâ ­®¢¨¬ §­ ç¥­¨ï ॣ¨áâ஢ ¨§ á⥪ 
110
        ret                   ;¢ë室
110
        ret                   ;¢ë室
111
@@:
111
@@:
112
        bts  word ch_flags,2   ;¯à®¢¥àª  ä« £  â.¥. ¯¥à¥­®á ¢ cf §­ ç¥­¨¥ ¡¨â  ¨ ãáâ ­®¢ª  ¡¨â  ¢ á®áâ®ï­¨¥ ¢ª«î祭®
112
        bts  word ch_flags,2   ;¯à®¢¥àª  ä« £  â.¥. ¯¥à¥­®á ¢ cf §­ ç¥­¨¥ ¡¨â  ¨ ãáâ ­®¢ª  ¡¨â  ¢ á®áâ®ï­¨¥ ¢ª«î祭®
113
        jc   .mouse_end         ;¥á«¨ CF=1 â® ¯¥à¥©â¨  ¢ ª®­¥æ â.¥. íâ® ¢ë室
113
        jc   .mouse_end         ;¥á«¨ CF=1 â® ¯¥à¥©â¨  ¢ ª®­¥æ â.¥. íâ® ¢ë室
114
        movzx  esi,word ch_text_length ;§ £à㧨âì ª®«-¢® ᨬ¢®«®¢ ¢ ⥪á⮢®© áâப¥
114
        movzx  esi,word ch_text_length ;§ £à㧨âì ª®«-¢® ᨬ¢®«®¢ ¢ ⥪á⮢®© áâப¥
115
        ;“¬­®¦¥­¨¥ ­  6 ëáâ஥ 㬭®¦¥­¨¥ ¬®¦­® ¢®á¯®«ì§®¢ âìáï «î¡ë¬ ¬§ ¬¥â®¤®¢, ­® ­  áâ àëå à®æ¥áá®à å (386,486,P1)¡ëáâ॥ ¡ã¤¥â á ¨­áâàãªæ¨¥© Lea
115
        ;“¬­®¦¥­¨¥ ­  6 ëáâ஥ 㬭®¦¥­¨¥ ¬®¦­® ¢®á¯®«ì§®¢ âìáï «î¡ë¬ ¬§ ¬¥â®¤®¢, ­® ­  áâ àëå à®æ¥áá®à å (386,486,P1)¡ëáâ॥ ¡ã¤¥â á ¨­áâàãªæ¨¥© Lea
116
        ;lea esi,[eax*2+eax]
116
        ;lea esi,[eax*2+eax]
117
        ;shl eax,1
117
        ;shl eax,1
118
        imul esi,6             ; ¨«¨ ¬®¦­® ¨ â ª 㬭®¦¨âì ­  6
118
        imul esi,6             ; ¨«¨ ¬®¦­® ¨ â ª 㬭®¦¨âì ­  6
119
        add  esi,ch_text_margin ;¤®¡ ¢¨âì 3 - à ááâ®ï­¨¥ ®â 祪 ¡®ªá  ¤® ­ ¤¯¨á¨
119
        add  esi,ch_text_margin ;¤®¡ ¢¨âì 3 - à ááâ®ï­¨¥ ®â 祪 ¡®ªá  ¤® ­ ¤¯¨á¨
120
 
120
 
121
        mov  eax,37             ;¯®«ã稬 ª®®à¤¨­ âë ¬ë誨 
121
        mov  eax,37             ;¯®«ã稬 ª®®à¤¨­ âë ¬ë誨 
122
        mov  ebx,1              ;¤®¡ ¢¨âì 1
122
        mov  ebx,1              ;¤®¡ ¢¨âì 1
123
        int  0x40               ;¯®«ãç¨âì ª®®à¤¨­ âë ªãàá®à  ®â­®á¨â¥«ì­® ®ª­  
123
        mcall               ;¯®«ãç¨âì ª®®à¤¨­ âë ªãàá®à  ®â­®á¨â¥«ì­® ®ª­  
124
        
124
        
125
        movzx ebx,word ch_top  ;§ £à㧨âì ¢ bx §­ ç¥­¨¥ ª®®à¤¨­ âë ã
125
        movzx ebx,word ch_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,ch_size        ;¤®¡ ¢¨âì à §¬¥à 
128
        add   ebx,ch_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 ch_left  ;¯à®¨§¢¥¤¥¬  ­ «®£¨ç­®¥ áà ¢­¥­¨¥
133
        movzx ebx,word ch_left  ;¯à®¨§¢¥¤¥¬  ­ «®£¨ç­®¥ áà ¢­¥­¨¥
134
        cmp   ax,bx            ;áà ¢­¨âì ॣ¨áâàë
134
        cmp   ax,bx            ;áà ¢­¨âì ॣ¨áâàë
135
        jl   .mouse_end        ;¥á«¨ ¬¥­ìè¥
135
        jl   .mouse_end        ;¥á«¨ ¬¥­ìè¥
136
        add   ebx,ch_size      ;¤®¡ ¢¨âì ¤«¨­ã áâ®à®­ë ¯àאַ㣮«ì­¨ª 
136
        add   ebx,ch_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
 
140
 
141
        bts  word ch_flags,1  ;¨§¢«¥ç¥­¨¥ §­ ç¥­¨ï § ¤ ­­®£® ¡¨â  ¢ ä« £ cf ¨ ¨§¬¥­¥­¨¥ ¥£® §­ ç¥­¨ï ­  1. 
141
        bts  word ch_flags,1  ;¨§¢«¥ç¥­¨¥ §­ ç¥­¨ï § ¤ ­­®£® ¡¨â  ¢ ä« £ cf ¨ ¨§¬¥­¥­¨¥ ¥£® §­ ç¥­¨ï ­  1. 
142
        jc   @f                ;CF=1 â® ¯¥à¥©â¨ ­  ­¨¦­îî @@
142
        jc   @f                ;CF=1 â® ¯¥à¥©â¨ ­  ­¨¦­îî @@
143
        
143
        
144
        call .draw_ch        ;®â®¡à §¨âì ¢ª«î祭­ë© 祪 ¡®ªá
144
        call .draw_ch        ;®â®¡à §¨âì ¢ª«î祭­ë© 祪 ¡®ªá
145
        mov   dword [esp+24],1 ;¤ «ì­¥©è ï ¯à®¢¥àª  祪 ¡®ªá®¢ ¡¥á¬ëá«¥­ , ¯® í⮬㠢 á⥪, £¤¥ à á¯®« £ ¥âáï ecx ¯®¬¥áâ¨â¬ 0 
145
        mov   dword [esp+24],1 ;¤ «ì­¥©è ï ¯à®¢¥àª  祪 ¡®ªá®¢ ¡¥á¬ëá«¥­ , ¯® í⮬㠢 á⥪, £¤¥ à á¯®« £ ¥âáï ecx ¯®¬¥áâ¨â¬ 0 
146
        jmp  .mouse_end       ;¢ë©â¨ 
146
        jmp  .mouse_end       ;¢ë©â¨ 
147
@@:
147
@@:
148
        btr   word ch_flags,1  ;¨§¢«¥ç¥­¨¥ §­ ç¥­¨ï § ¤ ­­®£® ¡¨â  ¢ ä« £ cf ¨ ¨§¬¥­¥­¨¥ ¥£® §­ ç¥­¨ï ­  ­ã«¥¢®¥. 
148
        btr   word ch_flags,1  ;¨§¢«¥ç¥­¨¥ §­ ç¥­¨ï § ¤ ­­®£® ¡¨â  ¢ ä« £ cf ¨ ¨§¬¥­¥­¨¥ ¥£® §­ ç¥­¨ï ­  ­ã«¥¢®¥. 
149
        call .clear_ch         ;¢ëª«îç¨âì 祪 ¡®ªá â.¥. ­  ¬¥á⥠§ ªà è¥­­®£® ¯àאַ㣮«ì­¨ª  ®â®¡à §¨âì 梥â ä®­ .
149
        call .clear_ch         ;¢ëª«îç¨âì 祪 ¡®ªá â.¥. ­  ¬¥á⥠§ ªà è¥­­®£® ¯àאַ㣮«ì­¨ª  ®â®¡à §¨âì 梥â ä®­ .
150
.mouse_end:
150
.mouse_end:
151
popa                                ;¢®ááâ ­®¢¨âì ॣ¨áâàë ¨§ á⥪ 
151
popa                                ;¢®ááâ ­®¢¨âì ॣ¨áâàë ¨§ á⥪ 
152
ret                                 ;¢ë©â¨
152
ret                                 ;¢ë©â¨
153
}
153
}
154
 
154
 
155
struc check_box1 left,top,text,text_length,flags
155
struc check_box1 left,top,text,text_length,flags
156
{        ;áâàãªâãà  ¯ à ¬¥â஢ ¤«ï 祪 ¡®ªá 
156
{        ;áâàãªâãà  ¯ à ¬¥â஢ ¤«ï 祪 ¡®ªá 
157
.left: dw left      ;+0        ¯®«®¦¥­¨¥ ¯® å
157
.left: dw left      ;+0        ¯®«®¦¥­¨¥ ¯® å
158
.top: dw top        ;+2        ¯®«®¦¥­¨¥ ¯® ã
158
.top: dw top        ;+2        ¯®«®¦¥­¨¥ ¯® ã
159
.text: dd text      ;+16        ¤à¥á ¢ ª®¤¥ ¯à®£à ¬¬ë £¤¥ à á¯®«®¦¥­ ⥪áâà
159
.text: dd text      ;+16        ¤à¥á ¢ ª®¤¥ ¯à®£à ¬¬ë £¤¥ à á¯®«®¦¥­ ⥪áâà
160
.text_length: dw text_length ;+20       ¤«¨­  ⥪áâ 
160
.text_length: dw text_length ;+20       ¤«¨­  ⥪áâ 
161
.flags: dw flags+0  ;+22            ä« £¨
161
.flags: dw flags+0  ;+22            ä« £¨
162
}
162
}
163
struc check_box left,top,color,border_color,text_color,text,text_length,flags
163
struc check_box left,top,color,border_color,text_color,text,text_length,flags
164
{        ;áâàãªâãà  ¯ à ¬¥â஢ ¤«ï 祪 ¡®ªá 
164
{        ;áâàãªâãà  ¯ à ¬¥â஢ ¤«ï 祪 ¡®ªá 
165
.left: dw left      ;+0        ;¯®«®¦¥­¨¥ ¯® å
165
.left: dw left      ;+0        ;¯®«®¦¥­¨¥ ¯® å
166
.top: dw top        ;¯®«®¦¥­¨¥ ¯® ã
166
.top: dw top        ;¯®«®¦¥­¨¥ ¯® ã
167
.color: dd color    ;梥⠢­ãâਠ祪¡®ªá 
167
.color: dd color    ;梥⠢­ãâਠ祪¡®ªá 
168
.border_color: dd border_color ;梥â à ¬ª¨
168
.border_color: dd border_color ;梥â à ¬ª¨
169
.text_color: dd text_color     ;梥⠭ ¤¯¨á¨
169
.text_color: dd text_color     ;梥⠭ ¤¯¨á¨
170
.text: dd text                 ; ¤à¥á ¢ ª®¤¥ ¯à®£à ¬¬ë £¤¥ à á¯®«®¦¥­ ⥪áâ
170
.text: dd text                 ; ¤à¥á ¢ ª®¤¥ ¯à®£à ¬¬ë £¤¥ à á¯®«®¦¥­ ⥪áâ
171
.text_length: dw text_length   ;¤«¨­  ⥪áâ 
171
.text_length: dw text_length   ;¤«¨­  ⥪áâ 
172
.flags: dw flags+0   ;+22        
172
.flags: dw flags+0   ;+22        
173
}
173
}
174
ch_flag_en=10b
174
ch_flag_en=10b
175
 
175
 
176
macro draw_check_boxes start,end        ;à¨á®¢ âì 祪 ¡®ªáë
176
macro draw_check_boxes start,end        ;à¨á®¢ âì 祪 ¡®ªáë
177
{
177
{
178
        mov  edi,start                       ;“ª § â¥«ì ­  ­ ç «® ¤ ­­ëå 祪 ¡®ªá®¢ â.¥. ­  ­ ç «® ¤ ­­ëå ¯¥à¢®£® 祪¡®ªá 
178
        mov  edi,start                       ;“ª § â¥«ì ­  ­ ç «® ¤ ­­ëå 祪 ¡®ªá®¢ â.¥. ­  ­ ç «® ¤ ­­ëå ¯¥à¢®£® 祪¡®ªá 
179
        mov  ecx,((end-start)/ch_struc_size) ;Š®«¨ç¥á⢮ 祪 ¡®ªá®¢
179
        mov  ecx,((end-start)/ch_struc_size) ;Š®«¨ç¥á⢮ 祪 ¡®ªá®¢
180
@@:
180
@@:
181
        call check_box.draw       ;Žâ®¡à §¨âì 祪 ¡®ªá
181
        call check_box.draw       ;Žâ®¡à §¨âì 祪 ¡®ªá
182
        add  edi,ch_struc_size     ;“ª § â¥«ì ­  ¯®á«¥¤ãî騥 祪 ¡®ªáë  â.¥. +28
182
        add  edi,ch_struc_size     ;“ª § â¥«ì ­  ¯®á«¥¤ãî騥 祪 ¡®ªáë  â.¥. +28
183
        loop @b        ;¯à룭ãâì ¥á«¨ ¢ ecx/cx §­ ç¥­¨¥ ­¥ 0 ­  ¢¥àå­îî @@
183
        loop @b        ;¯à룭ãâì ¥á«¨ ¢ ecx/cx §­ ç¥­¨¥ ­¥ 0 ­  ¢¥àå­îî @@
184
}
184
}
185
macro mouse_check_boxes start,end        ;ãáâ ­®¢ª  祪 ¡®ªá®¢, ¢ § ¢¨á¨¬®á⨠®â ᮡëâ¨ï
185
macro mouse_check_boxes start,end        ;ãáâ ­®¢ª  祪 ¡®ªá®¢, ¢ § ¢¨á¨¬®á⨠®â ᮡëâ¨ï
186
{
186
{
187
        mov  edi,start           ; “ª § â¥«ì ­  ­ ç «® ¤ ­­ëå 祪 ¡®ªá®¢ â.¥. ­  ­ ç «® ¤ ­­ëå ¯¥à¢®£® 祪¡®ªá 
187
        mov  edi,start           ; “ª § â¥«ì ­  ­ ç «® ¤ ­­ëå 祪 ¡®ªá®¢ â.¥. ­  ­ ç «® ¤ ­­ëå ¯¥à¢®£® 祪¡®ªá 
188
        mov  ecx,((end-start)/ch_struc_size)        ;Š®«¨ç¥á⢮ 祪 ¡®ªá®¢
188
        mov  ecx,((end-start)/ch_struc_size)        ;Š®«¨ç¥á⢮ 祪 ¡®ªá®¢
189
@@:          
189
@@:          
190
        call check_box.mouse     ;¯à®¢¥àª  ¬ë誨 ¨ ®¡à ¡®âª  ᮡë⨩
190
        call check_box.mouse     ;¯à®¢¥àª  ¬ë誨 ¨ ®¡à ¡®âª  ᮡë⨩
191
        add  edi,ch_struc_size   ;“ª § â¥«ì ­  ¯®á«¥¤ãî騥 祪 ¡®ªáë
191
        add  edi,ch_struc_size   ;“ª § â¥«ì ­  ¯®á«¥¤ãî騥 祪 ¡®ªáë
192
        loop @b        ;¯à룭ãâì ¥á«¨ ¢ ecx/cx §­ ç¥­¨¥ ­¥ 0 ­  ¢¥àå­îî @@
192
        loop @b        ;¯à룭ãâì ¥á«¨ ¢ ecx/cx §­ ç¥­¨¥ ­¥ 0 ­  ¢¥àå­îî @@
193
}
193
}
194
;…᫨ ­ã¦­® ®â®¡à §¨âì ®¤¨­ 祪¥à 
194
;…᫨ ­ã¦­® ®â®¡à §¨âì ®¤¨­ 祪¥à 
195
macro draw_check_box start        ;à¨á®¢ âì 祪 ¡®ªáë
195
macro draw_check_box start        ;à¨á®¢ âì 祪 ¡®ªáë
196
{
196
{
197
        mov  edi,start            ;“ª § â¥«ì ­  ­ ç «® ¤ ­­ëå 祪 ¡®ªá®¢ â.¥. ­  ­ ç «® ¤ ­­ëå ¯¥à¢®£® 祪¡®ªá 
197
        mov  edi,start            ;“ª § â¥«ì ­  ­ ç «® ¤ ­­ëå 祪 ¡®ªá®¢ â.¥. ­  ­ ç «® ¤ ­­ëå ¯¥à¢®£® 祪¡®ªá 
198
        call check_box.draw       ;Žâ®¡à §¨âì 祪 ¡®ªá
198
        call check_box.draw       ;Žâ®¡à §¨âì 祪 ¡®ªá
199
}
199
}
200
macro mouse_check_box start       ;ãáâ ­®¢ª  祪 ¡®ªá®¢, ¢ § ¢¨á¨¬®á⨠®â ᮡëâ¨ï
200
macro mouse_check_box start       ;ãáâ ­®¢ª  祪 ¡®ªá®¢, ¢ § ¢¨á¨¬®á⨠®â ᮡëâ¨ï
201
{
201
{
202
        mov  edi,start            ; “ª § â¥«ì ­  ­ ç «® ¤ ­­ëå 祪 ¡®ªá®¢ â.¥. ­  ­ ç «® ¤ ­­ëå ¯¥à¢®£® 祪¡®ªá 
202
        mov  edi,start            ; “ª § â¥«ì ­  ­ ç «® ¤ ­­ëå 祪 ¡®ªá®¢ â.¥. ­  ­ ç «® ¤ ­­ëå ¯¥à¢®£® 祪¡®ªá 
203
        call check_box.mouse      ;¯à®¢¥àª  ¬ë誨 ¨ ®¡à ¡®âª  ᮡë⨩
203
        call check_box.mouse      ;¯à®¢¥àª  ¬ë誨 ¨ ®¡à ¡®âª  ᮡë⨩
204
}
204
}