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: |