Subversion Repositories Kolibri OS

Rev

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

Rev 3545 Rev 5663
Line -... Line 1...
-
 
1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
 
2
;;                                                                 ;;
-
 
3
;; Copyright (C) KolibriOS team 2010-2015. All rights reserved.    ;;
-
 
4
;; Distributed under terms of the GNU General Public License       ;;
-
 
5
;;                                                                 ;;
-
 
6
;;  VNC client for KolibriOS                                       ;;
-
 
7
;;                                                                 ;;
1
red_logon:
8
;;  Written by hidnplayr@kolibrios.org                             ;;
-
 
9
;;                                                                 ;;
-
 
10
;;          GNU GENERAL PUBLIC LICENSE                             ;;
2
    call draw_window_logon       ; at first, draw the window
11
;;             Version 2, June 1991                                ;;
-
 
12
;;                                                                 ;;
-
 
13
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Line 3... Line -...
3
 
-
 
4
still_logon:                     ; main cycle of application begins here
-
 
5
    mov  eax,10     ; wait here for event
-
 
6
    mcall
-
 
7
 
-
 
8
checkevent_logon:         ; Check what event was called _logon: this will be used to return from textbox focus
-
 
9
 
-
 
10
    dec  eax        ; redraw request ?
-
 
11
    jz   red_logon
-
 
12
    dec  eax        ; key in buffer ?
-
 
13
    jz   key_logon
-
 
14
    dec  eax        ; button in buffer ?
-
 
15
    jz   button_logon
-
 
16
 
-
 
17
    jmp  still_logon
-
 
18
 
-
 
19
  key_logon:             ; key event handler
-
 
20
    mov  al,2            ; eax was zero so will now be 2
-
 
21
    mcall                ; just read it and ignore
-
 
22
 
-
 
23
    cmp  ah,13
-
 
24
    jne  still_logon     ; return to main loop
-
 
25
 
-
 
26
    ret                  ; enter key was pressed => return to logon
-
 
27
 
-
 
28
  button_logon:          ; eax was zero so will now be 17
-
 
29
    mov  al,17           ; get id
-
 
30
    mcall
-
 
31
 
-
 
32
    cmp  ah,1            ; close ?
-
 
33
    jz   close_logon
-
 
34
    cmp  ah,2            ; logon ?
-
 
35
    je   connect_logon
-
 
36
    cmp  ah,5            ; first ?
-
 
37
    jz   dstbtn_logon
-
 
38
 
-
 
39
  srcbtn_logon:
-
 
40
    mov  dword[addr],first
-
 
41
    jmp  rk_logon
-
 
42
 
-
 
43
  dstbtn_logon:
-
 
44
    mov  dword[addr],second
-
 
45
 
14
 
46
  rk_logon:
-
 
47
    mov  edi,[addr]      ; load the address of the string
-
 
48
    xor  al,al           ; mov  al,0          ; the symbol we will search for
-
 
49
    mov  ecx,STRLEN+1    ; length of the string (+1)
-
 
50
    cld                  ; search forward
-
 
51
  repne  scasb           ; do search now
-
 
52
    inc  ecx             ; we've found a zero or ecx became 0
-
 
53
    mov  eax,STRLEN+1
-
 
54
    sub  eax,ecx         ; eax = address of <0> character
-
 
55
    mov  [temp],eax      ; position
-
 
56
 
-
 
57
    cmp  dword[addr],dword second
-
 
58
    jne  @f
-
 
59
    mov  dword [passlen],eax
-
 
60
   @@:
-
 
61
 
-
 
62
    call print_text_logon
-
 
63
 
-
 
64
    mov  edi,[addr]      ; address of string
-
 
65
    add  edi,[temp]      ; cursor position
-
 
66
 
-
 
67
  .waitev_logon:
-
 
68
    mov  eax,10          ; wait for event
-
 
69
    mcall
-
 
70
    cmp  eax,2           ; button presed ?
-
 
71
    jne  checkevent_logon    ; a key is pressed or redraw is nessesary, goto checkevent
-
 
72
    mcall                ; eax = 2, read button
-
 
73
    shr  eax,8
-
 
74
    cmp  eax,8
-
 
75
    jnz  .nobs_logon     ; BACKSPACE
-
 
76
    cmp  edi,[addr]
-
 
77
    jz   .waitev_logon
-
 
78
    dec  edi
-
 
79
    mov  byte[edi],0
-
 
80
 
-
 
81
    cmp  dword[addr],second
-
 
82
    jne  @f
-
 
83
    dec  [passlen]
-
 
84
   @@:
-
 
85
 
-
 
86
    call print_text_logon
-
 
87
    jmp  .waitev_logon
-
 
88
  .nobs_logon:
-
 
89
    cmp  eax,13        ; ENTER
-
 
90
    je   still_logon
-
 
91
    cmp  eax,192
-
 
92
    jne  .noclear_logon
-
 
93
    xor  al,al
-
 
94
    mov  edi,[addr]
-
 
95
    mov  ecx,STRLEN
-
 
96
    rep  stosb
-
 
97
    mov  edi,[addr]
-
 
98
    call print_text_logon
-
 
99
    jmp  .waitev_logon
-
 
100
 
-
 
101
  .noclear_logon:
-
 
102
    mov  [edi],al
-
 
103
 
-
 
104
    cmp  dword[addr],second
-
 
105
    jne  @f
-
 
106
    inc  [passlen]
-
 
107
   @@:
-
 
108
 
-
 
109
    call print_text_logon
-
 
110
 
-
 
111
    inc  edi
-
 
112
    mov  esi,[addr]
-
 
113
    add  esi,STRLEN
-
 
114
    cmp  esi,edi
-
 
115
    jnz  .waitev_logon
-
 
116
 
-
 
117
    jmp  still_logon
-
 
118
 
-
 
119
 
-
 
120
; print strings (source & destination)
-
 
121
print_text_logon:
-
 
122
pusha
-
 
123
 
-
 
124
    mov  eax, 8
-
 
125
    mov  ebx, 105*65536+200
-
 
126
    mov  ecx, 31*65536+13
-
 
127
    mov  edx, 4
-
 
128
    mov  esi, 0xEBEBEB
-
 
129
    mcall
-
 
130
 
-
 
131
    cmp  byte[mode],0
-
 
132
    je   @f
-
 
133
 
-
 
134
    mov  ecx, 49*65536+12
-
 
135
    inc  edx
-
 
136
    mcall
-
 
137
 
-
 
138
   @@:
15
logon:
139
    mov  eax, 4                         ; function 4 _logon: write text to window
-
 
140
    mov  ebx, 107*65536+34              ; [x start] *65536 + [y start]
-
 
141
    xor  ecx, ecx                       ; color of text RRGGBB
-
 
142
    mov  edx, first                     ; pointer to text beginning
-
 
143
    mov  esi, STRLEN                    ; text length
-
 
144
    mcall
-
 
145
 
-
 
146
    cmp  byte[mode],0
-
 
147
    je   dont_draw_pass
-
 
148
 
-
 
149
    add  ebx,16
-
 
150
    mov  edi,[passlen]
-
 
151
 
-
 
152
   @@:
-
 
153
    cmp  edi,0
-
 
154
    jle  dont_draw_pass
-
 
155
 
-
 
156
    dec  edi
-
 
157
    mov  edx, passchar
-
 
158
    mov  esi, 1
-
 
159
    mcall
-
 
160
    add  ebx,6*65536
-
 
161
    jmp  @r
-
 
162
 
-
 
163
  dont_draw_pass:
-
 
164
 
-
 
165
popa
-
 
166
    ret
-
 
167
 
-
 
168
close_logon:
-
 
169
    or  eax,-1
-
 
170
    mcall
-
 
171
 
-
 
172
connect_logon:
-
 
173
    ret
-
 
174
 
-
 
Line -... Line 16...
-
 
16
        mcall   40, EVM_MOUSE + EVM_MOUSE_FILTER + EVM_REDRAW + EVM_BUTTON + EVM_KEY
175
draw_window_logon:
17
 
176
 
18
  .redraw:
177
    mcall 12, 1      ; start window draw
19
        mcall   12, 1           ; start window draw
178
    pusha
20
        pusha
179
                                        ; DRAW WINDOW
21
                                                ; DRAW WINDOW
180
    xor  eax, eax                       ; function 0 _logon: define and draw window
22
        xor     eax, eax                        ; function 0 _logon: define and draw window
181
    mov  ebx, 160*65536+330             ; [x start] *65536 + [x size]
23
        mov     ebx, 160 shl 16 + 330           ; [x start]:[x size]
182
    mov  ecx, 160*65536+100             ; [y start] *65536 + [y size]
24
        mov     ecx, 160 shl 16 + 100           ; [y start]:[y size]
183
    mov  edx, 0x13DDDDDD                ; color of work area RRGGBB
25
        mov     edx, 0x34DDDDDD                 ; color of work area RRGGBB
Line 184... Line 26...
184
    mov  edi, title                     ; WINDOW LABEL
26
        mov     edi, name                       ; WINDOW LABEL
185
    mcall
27
        mcall
186
 
28
 
187
    mov  eax, 8                         ; LOGON BUTTON
29
        mov     eax, 8                          ; LOGON BUTTON
188
    mov  ebx, 220*65536+85
30
        mov     ebx, 220 shl 16 + 85
189
    mov  ecx, 63*65536+16
31
        mov     ecx, 47 shl 16 + 16
Line 190... Line -...
190
    mov  edx, 2
-
 
191
    mov  esi, 0xCCCCCC
-
 
192
    mcall
-
 
193
 
32
        mov     edx, 2
194
    
33
        mov     esi, 0xCCCCCC
Line 195... Line 34...
195
    call print_text_logon
34
        mcall
196
                                        
35
 
197
    cmp  byte[mode], 0
36
        cmp     byte[mode], 0
198
    je   servermode_
37
        je      .servermode
199
 
38
 
200
    mov  eax, 4                         ; function 4 write text to window
39
        mov     eax, 4                          ; function 4 write text to window
Line 201... Line 40...
201
    mov  ebx, 25*65536+33               ; [x start] *65536 + [y start]
40
        mov     ebx, 25 shl 16 + 15             ; [x start]:[y start]
202
    xor  ecx, ecx
41
        xor     ecx, ecx
203
    mov  edx, userstr                   ; pointer to text beginning
42
        mov     edx, userstr                    ; pointer to text beginning
204
    mov  esi, passstr-userstr           ; text length
43
        mov     esi, passstr-userstr            ; text length
Line 205... Line 44...
205
    mcall
44
        mcall
206
 
-
 
207
    add  bl,19
-
 
Line -... Line 45...
-
 
45
 
208
    mov  edx, passstr                   ; pointer to text beginning
46
        add     bl, 19
209
    mov  esi, connectstr-passstr           ; text length
47
        mov     edx, passstr                    ; pointer to text beginning
210
    mcall
48
        mov     esi, connectstr-passstr         ; text length
211
 
49
        mcall
212
    jmp  drawtherest_
50
 
213
 
51
        jmp     .drawtherest
Line 214... Line 52...
214
   servermode_:
52
 
Line -... Line 53...
-
 
53
   .servermode:
215
 
54
        mov     eax, 4                          ; function 4 write text to window
216
    mov  eax, 4                         ; function 4 write text to window
55
        mov     ebx, 25 shl 16 + 15             ; [x start] *65536 + [y start]
217
    mov  ebx, 25*65536+33               ; [x start] *65536 + [y start]
56
        xor     ecx, ecx
218
    xor  ecx, ecx
57
        mov     edx, serverstr                  ; pointer to text beginning
Line 219... Line 58...
219
    mov  edx, serverstr                 ; pointer to text beginning
58
        mov     esi, userstr-serverstr          ; text length
220
    mov  esi, userstr-serverstr         ; text length
59
        mcall
221
    mcall
60
 
Line -... Line 61...
-
 
61
        invoke  edit_box_draw, URLbox
-
 
62
 
-
 
63
   .drawtherest:
-
 
64
        mov     ebx, 240 shl 16 + 49            ; [x start] *65536 + [y start]
-
 
65
        mov     edx, connectstr                 ; pointer to text beginning
-
 
66
        mov     esi, connect_e-connectstr       ; text length
-
 
67
        mcall
-
 
68
 
-
 
69
        popa
-
 
70
        inc     ebx
-
 
71
        mcall
-
 
72
 
-
 
73
  .loop:
-
 
74
        mcall   10                      ; wait for event
-
 
75
        dec     eax             ; redraw request ?
-
 
76
        jz      .redraw
-
 
77
        dec     eax             ; key in buffer ?
-
 
78
        jz      .key
-
 
79
        dec     eax             ; button in buffer ?
-
 
80
        jz      .btn
-
 
81
        sub     eax, 3
-
 
82
        jz      .mouse
-
 
83
        jmp     .loop
-
 
84
 
-
 
85
  .key:                         ; key event handler
222
 
86
        mcall   2               ; read key
Line -... Line 87...
-
 
87
 
-
 
88
        test    [URLbox.flags], ed_focus
Line -... Line 89...
-
 
89
        jz      mainloop
-
 
90
        cmp     ah, 13          ; enter (return) key
-
 
91
        je      .go
-
 
92
        invoke  edit_box_key, URLbox
-
 
93
        jmp     .loop
-
 
94
 
-
 
95
  .go:
223
   drawtherest_:
96
        mov     eax, [URLbox.pos]
-
 
97
        mov     byte[serveraddr+eax], 0
224
 
98
        ret
-
 
99
 
-
 
100
  .btn:
Line 225... Line 101...
225
    mov  ebx, 240*65536+67              ; [x start] *65536 + [y start]
101
        mcall   17              ; get id
226
    mov  edx, connectstr                   ; pointer to text beginning
102
 
-
 
103
        cmp     ah, 1           ; close ?
-
 
104
        jz      .close
227
    mov  esi, connect_e-connectstr         ; text length
105
        cmp     ah, 2           ; logon ?
Line 228... Line 106...
228
    mcall
106
        je      .go
229
 
107
 
Line 230... Line 108...
230
    popa
108
        jmp     .loop
231
    inc   ebx
109
 
232
    mcall
110
  .mouse:
Line 233... Line 111...
233
 
111
        mcall   23
234
    ret
112
        invoke  edit_box_mouse, URLbox
235
 
113
 
236
 
114
        jmp     .loop
237
; DATA AREA
115
 
Line 238... Line 116...
238
title  db 'Kolibrios VNC client by HIDNPLAYR',0
116
  .close: