Subversion Repositories Kolibri OS

Rev

Rev 4659 | Rev 6023 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 4659 Rev 4710
Line 1... Line 1...
1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2
;;                                                                 ;;
2
;;                                                                 ;;
3
;; Copyright (C) KolibriOS team 2004-2013. All rights reserved.    ;;
3
;; Copyright (C) KolibriOS team 2004-2014. All rights reserved.    ;;
4
;; Distributed under terms of the GNU General Public License       ;;
4
;; Distributed under terms of the GNU General Public License       ;;
5
;;                                                                 ;;
5
;;                                                                 ;;
6
;;   Written by hidnplayr@kolibrios.org                            ;;
6
;;   Written by hidnplayr@kolibrios.org                            ;;
7
;;                                                                 ;;
7
;;                                                                 ;;
8
;;         GNU GENERAL PUBLIC LICENSE                              ;;
8
;;         GNU GENERAL PUBLIC LICENSE                              ;;
Line 20... Line 20...
20
; ebx is ptr to window
20
; ebx is ptr to window
21
align 4
21
align 4
22
user_add:
22
user_add:
Line 23... Line 23...
23
 
23
 
24
        cmp     [ebx + window.users], MAX_USERS
24
        cmp     [ebx + window.users], MAX_USERS
Line 25... Line 25...
25
        jae     fail
25
        jae     .fail
26
 
26
 
27
        mov     edi, [ebx + window.data_ptr]
27
        mov     edi, [ebx + window.data_ptr]
28
        add     edi, window_data.names
28
        add     edi, window_data.names
Line 113... Line 113...
113
        xor     al, al
113
        xor     al, al
114
        stosb
114
        stosb
Line 115... Line 115...
115
 
115
 
116
        inc     [ebx + window.users]
116
        inc     [ebx + window.users]
117
        or      [ebx + window.flags], FLAG_UPDATED
117
        or      [ebx + window.flags], FLAG_UPDATED
118
 
118
  .fail:
Line 126... Line 126...
126
; ebx is ptr to window
126
; ebx is ptr to window
127
align 4
127
align 4
128
user_remove:
128
user_remove:
Line 129... Line 129...
129
 
129
 
130
        call    user_find
130
        call    user_find
Line 131... Line 131...
131
        jz      fail
131
        jz      .fail
132
 
132
 
133
        lea     esi, [edi + MAX_NICK_LEN]
133
        lea     esi, [edi + MAX_NICK_LEN]
134
        mov     ecx, [ebx + window.data_ptr]
134
        mov     ecx, [ebx + window.data_ptr]
135
        add     ecx, window_data.names + MAX_NICK_LEN * MAX_USERS
135
        add     ecx, window_data.names + MAX_NICK_LEN * MAX_USERS
136
        sub     ecx, esi
136
        sub     ecx, esi
Line 137... Line 137...
137
        shr     ecx, 2
137
        shr     ecx, 2
138
        rep     movsd
138
        rep     movsd
139
 
139
 
140
        dec     [ebx + window.users]
140
        dec     [ebx + window.users]
Line 141... Line 141...
141
        or      [ebx + window.flags], FLAG_UPDATED
141
        or      [ebx + window.flags], FLAG_UPDATED
Line 152... Line 152...
152
align 4
152
align 4
153
user_find:
153
user_find:
Line 154... Line 154...
154
 
154
 
155
        mov     eax, [ebx + window.users]
155
        mov     eax, [ebx + window.users]
156
        test    eax, eax
156
        test    eax, eax
157
        jz      fail
157
        jz      .fail
158
        mov     edi, [ebx + window.data_ptr]
158
        mov     edi, [ebx + window.data_ptr]
Line 159... Line 159...
159
        add     edi, window_data.names
159
        add     edi, window_data.names
160
 
160
 
Line 167... Line 167...
167
        ; TODO: check byte[esi] too!
167
        ; TODO: check byte[esi] too!
168
        pop     edi esi
168
        pop     edi esi
169
        add     edi, MAX_NICK_LEN
169
        add     edi, MAX_NICK_LEN
170
        dec     eax
170
        dec     eax
171
        jnz     .loop
171
        jnz     .loop
172
        jmp     fail
172
        jmp     .fail
Line 173... Line 173...
173
 
173
 
174
  .got_it:
174
  .got_it:
175
        pop     edi esi
175
        pop     edi esi
-
 
176
        test    edi, edi        ; to clear zero flag
Line -... Line 177...
-
 
177
        ret
-
 
178
 
176
        test    edi, edi        ; to clear zero flag
179
  .fail:
Line 177... Line -...
177
 
-
 
Line -... Line 180...
-
 
180
        xor     edi, edi
-
 
181
        ret
178
        ret
182
 
-
 
183
 
-
 
184
 
-
 
185
user_remove_all:
-
 
186
 
-
 
187
        xor     eax, eax
-
 
188
        mov     edi, [window_print]
-
 
189
        mov     [edi + window.users], eax
-
 
190
        mov     [edi + window.selected], eax
179
 
191
        mov     edi, [edi + window.data_ptr]
180
 
192
        add     edi, window_data.names