Rev 260 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 260 | Rev 485 | ||
---|---|---|---|
1 | red_logon: |
1 | red_logon: |
2 | call draw_window_logon ; at first, draw the window |
2 | call draw_window_logon ; at first, draw the window |
3 | 3 | ||
4 | still_logon: ; main cycle of application begins here |
4 | still_logon: ; main cycle of application begins here |
5 | mov eax,10 ; wait here for event |
5 | mov eax,10 ; wait here for event |
6 | int 0x40 |
6 | mcall |
7 | 7 | ||
8 | checkevent_logon: ; Check what event was called _logon: this will be used to return from textbox focus |
8 | checkevent_logon: ; Check what event was called _logon: this will be used to return from textbox focus |
9 | 9 | ||
10 | dec eax ; redraw request ? |
10 | dec eax ; redraw request ? |
11 | jz red_logon |
11 | jz red_logon |
12 | dec eax ; key in buffer ? |
12 | dec eax ; key in buffer ? |
13 | jz key_logon |
13 | jz key_logon |
14 | dec eax ; button in buffer ? |
14 | dec eax ; button in buffer ? |
15 | jz button_logon |
15 | jz button_logon |
16 | 16 | ||
17 | jmp still_logon |
17 | jmp still_logon |
18 | 18 | ||
19 | key_logon: ; key event handler |
19 | key_logon: ; key event handler |
20 | mov al,2 ; eax was zero so will now be 2 |
20 | mov al,2 ; eax was zero so will now be 2 |
21 | int 0x40 ; just read it and ignore |
21 | mcall ; just read it and ignore |
22 | 22 | ||
23 | cmp ah,13 |
23 | cmp ah,13 |
24 | jne still_logon ; return to main loop |
24 | jne still_logon ; return to main loop |
25 | 25 | ||
26 | ret ; enter key was pressed => return to logon |
26 | ret ; enter key was pressed => return to logon |
27 | 27 | ||
28 | button_logon: ; eax was zero so will now be 17 |
28 | button_logon: ; eax was zero so will now be 17 |
29 | mov al,17 ; get id |
29 | mov al,17 ; get id |
30 | int 0x40 |
30 | mcall |
31 | 31 | ||
32 | cmp ah,1 ; close ? |
32 | cmp ah,1 ; close ? |
33 | jz close_logon |
33 | jz close_logon |
34 | cmp ah,2 ; logon ? |
34 | cmp ah,2 ; logon ? |
35 | je connect_logon |
35 | je connect_logon |
36 | cmp ah,5 ; first ? |
36 | cmp ah,5 ; first ? |
37 | jz dstbtn_logon |
37 | jz dstbtn_logon |
38 | 38 | ||
39 | srcbtn_logon: |
39 | srcbtn_logon: |
40 | mov dword[addr],first |
40 | mov dword[addr],first |
41 | jmp rk_logon |
41 | jmp rk_logon |
42 | 42 | ||
43 | dstbtn_logon: |
43 | dstbtn_logon: |
44 | mov dword[addr],second |
44 | mov dword[addr],second |
45 | 45 | ||
46 | rk_logon: |
46 | rk_logon: |
47 | mov edi,[addr] ; load the address of the string |
47 | mov edi,[addr] ; load the address of the string |
48 | xor al,al ; mov al,0 ; the symbol we will search for |
48 | xor al,al ; mov al,0 ; the symbol we will search for |
49 | mov ecx,STRLEN+1 ; length of the string (+1) |
49 | mov ecx,STRLEN+1 ; length of the string (+1) |
50 | cld ; search forward |
50 | cld ; search forward |
51 | repne scasb ; do search now |
51 | repne scasb ; do search now |
52 | inc ecx ; we've found a zero or ecx became 0 |
52 | inc ecx ; we've found a zero or ecx became 0 |
53 | mov eax,STRLEN+1 |
53 | mov eax,STRLEN+1 |
54 | sub eax,ecx ; eax = address of <0> character |
54 | sub eax,ecx ; eax = address of <0> character |
55 | mov [temp],eax ; position |
55 | mov [temp],eax ; position |
56 | 56 | ||
57 | cmp dword[addr],dword second |
57 | cmp dword[addr],dword second |
58 | jne @f |
58 | jne @f |
59 | mov dword [passlen],eax |
59 | mov dword [passlen],eax |
60 | @@: |
60 | @@: |
61 | 61 | ||
62 | call print_text_logon |
62 | call print_text_logon |
63 | 63 | ||
64 | mov edi,[addr] ; address of string |
64 | mov edi,[addr] ; address of string |
65 | add edi,[temp] ; cursor position |
65 | add edi,[temp] ; cursor position |
66 | 66 | ||
67 | .waitev_logon: |
67 | .waitev_logon: |
68 | mov eax,10 ; wait for event |
68 | mov eax,10 ; wait for event |
69 | int 0x40 |
69 | mcall |
70 | cmp eax,2 ; button presed ? |
70 | cmp eax,2 ; button presed ? |
71 | jne checkevent_logon ; a key is pressed or redraw is nessesary, goto checkevent |
71 | jne checkevent_logon ; a key is pressed or redraw is nessesary, goto checkevent |
72 | int 0x40 ; eax = 2, read button |
72 | mcall ; eax = 2, read button |
73 | shr eax,8 |
73 | shr eax,8 |
74 | cmp eax,8 |
74 | cmp eax,8 |
75 | jnz .nobs_logon ; BACKSPACE |
75 | jnz .nobs_logon ; BACKSPACE |
76 | cmp edi,[addr] |
76 | cmp edi,[addr] |
77 | jz .waitev_logon |
77 | jz .waitev_logon |
78 | dec edi |
78 | dec edi |
79 | mov byte[edi],0 |
79 | mov byte[edi],0 |
80 | 80 | ||
81 | cmp dword[addr],second |
81 | cmp dword[addr],second |
82 | jne @f |
82 | jne @f |
83 | dec [passlen] |
83 | dec [passlen] |
84 | @@: |
84 | @@: |
85 | 85 | ||
86 | call print_text_logon |
86 | call print_text_logon |
87 | jmp .waitev_logon |
87 | jmp .waitev_logon |
88 | .nobs_logon: |
88 | .nobs_logon: |
89 | cmp eax,13 ; ENTER |
89 | cmp eax,13 ; ENTER |
90 | je still_logon |
90 | je still_logon |
91 | cmp eax,192 |
91 | cmp eax,192 |
92 | jne .noclear_logon |
92 | jne .noclear_logon |
93 | xor al,al |
93 | xor al,al |
94 | mov edi,[addr] |
94 | mov edi,[addr] |
95 | mov ecx,STRLEN |
95 | mov ecx,STRLEN |
96 | rep stosb |
96 | rep stosb |
97 | mov edi,[addr] |
97 | mov edi,[addr] |
98 | call print_text_logon |
98 | call print_text_logon |
99 | jmp .waitev_logon |
99 | jmp .waitev_logon |
100 | 100 | ||
101 | .noclear_logon: |
101 | .noclear_logon: |
102 | mov [edi],al |
102 | mov [edi],al |
103 | 103 | ||
104 | cmp dword[addr],second |
104 | cmp dword[addr],second |
105 | jne @f |
105 | jne @f |
106 | inc [passlen] |
106 | inc [passlen] |
107 | @@: |
107 | @@: |
108 | 108 | ||
109 | call print_text_logon |
109 | call print_text_logon |
110 | 110 | ||
111 | inc edi |
111 | inc edi |
112 | mov esi,[addr] |
112 | mov esi,[addr] |
113 | add esi,STRLEN |
113 | add esi,STRLEN |
114 | cmp esi,edi |
114 | cmp esi,edi |
115 | jnz .waitev_logon |
115 | jnz .waitev_logon |
116 | 116 | ||
117 | jmp still_logon |
117 | jmp still_logon |
118 | 118 | ||
119 | 119 | ||
120 | ; print strings (source & destination) |
120 | ; print strings (source & destination) |
121 | print_text_logon: |
121 | print_text_logon: |
122 | pusha |
122 | pusha |
123 | 123 | ||
124 | mov eax, 8 |
124 | mov eax, 8 |
125 | mov ebx, 105*65536+200 |
125 | mov ebx, 105*65536+200 |
126 | mov ecx, 33*65536+12 |
126 | mov ecx, 33*65536+12 |
127 | mov edx, 4 |
127 | mov edx, 4 |
128 | mov esi, 0xEBEBEB |
128 | mov esi, 0xEBEBEB |
129 | int 0x40 |
129 | mcall |
130 | 130 | ||
131 | cmp byte[mode],0 |
131 | cmp byte[mode],0 |
132 | je @f |
132 | je @f |
133 | 133 | ||
134 | mov ecx, 49*65536+12 |
134 | mov ecx, 49*65536+12 |
135 | inc edx |
135 | inc edx |
136 | int 0x40 |
136 | mcall |
137 | 137 | ||
138 | @@: |
138 | @@: |
139 | mov eax, 4 ; function 4 _logon: write text to window |
139 | mov eax, 4 ; function 4 _logon: write text to window |
140 | mov ebx, 107*65536+34 ; [x start] *65536 + [y start] |
140 | mov ebx, 107*65536+34 ; [x start] *65536 + [y start] |
141 | xor ecx, ecx ; color of text RRGGBB |
141 | xor ecx, ecx ; color of text RRGGBB |
142 | mov edx, first ; pointer to text beginning |
142 | mov edx, first ; pointer to text beginning |
143 | mov esi, STRLEN ; text length |
143 | mov esi, STRLEN ; text length |
144 | int 0x40 |
144 | mcall |
145 | 145 | ||
146 | cmp byte[mode],0 |
146 | cmp byte[mode],0 |
147 | je dont_draw_pass |
147 | je dont_draw_pass |
148 | 148 | ||
149 | add ebx,16 |
149 | add ebx,16 |
150 | mov edi,[passlen] |
150 | mov edi,[passlen] |
151 | 151 | ||
152 | @@: |
152 | @@: |
153 | cmp edi,0 |
153 | cmp edi,0 |
154 | jle dont_draw_pass |
154 | jle dont_draw_pass |
155 | 155 | ||
156 | dec edi |
156 | dec edi |
157 | mov edx, passchar |
157 | mov edx, passchar |
158 | mov esi, 1 |
158 | mov esi, 1 |
159 | int 0x40 |
159 | mcall |
160 | add ebx,6*65536 |
160 | add ebx,6*65536 |
161 | jmp @r |
161 | jmp @r |
162 | 162 | ||
163 | dont_draw_pass: |
163 | dont_draw_pass: |
164 | 164 | ||
165 | popa |
165 | popa |
166 | ret |
166 | ret |
167 | 167 | ||
168 | close_logon: |
168 | close_logon: |
169 | mov eax,-1 |
169 | or eax,-1 |
170 | int 0x40 |
170 | mcall |
171 | 171 | ||
172 | connect_logon: |
172 | connect_logon: |
173 | ret |
173 | ret |
174 | 174 | ||
175 | draw_window_logon: |
175 | draw_window_logon: |
176 | 176 | ||
177 | mov eax, 12 ; function 12_logon:tell os about windowdraw |
177 | mov eax, 12 ; function 12_logon:tell os about windowdraw |
178 | mov ebx, 1 ; 1, start of draw |
178 | mov ebx, 1 ; 1, start of draw |
179 | int 0x40 |
179 | mcall |
180 | pusha |
180 | pusha |
181 | ; DRAW WINDOW |
181 | ; DRAW WINDOW |
182 | xor eax, eax ; function 0 _logon: define and draw window |
182 | xor eax, eax ; function 0 _logon: define and draw window |
183 | mov ebx, 160*65536+330 ; [x start] *65536 + [x size] |
183 | mov ebx, 160*65536+330 ; [x start] *65536 + [x size] |
184 | mov ecx, 160*65536+100 ; [y start] *65536 + [y size] |
184 | mov ecx, 160*65536+100 ; [y start] *65536 + [y size] |
185 | mov edx, 0x03DDDDDD ; color of work area RRGGBB |
185 | mov edx, 0x13DDDDDD ; color of work area RRGGBB |
- | 186 | mov edi, title ; WINDOW LABEL |
|
186 | int 0x40 |
187 | mcall |
187 | 188 | ||
188 | mov eax, 8 ; LOGON BUTTON |
189 | mov eax, 8 ; LOGON BUTTON |
189 | mov ebx, 220*65536+85 |
190 | mov ebx, 220*65536+85 |
190 | mov ecx, 63*65536+16 |
191 | mov ecx, 63*65536+16 |
191 | mov edx, 2 |
192 | mov edx, 2 |
192 | mov esi, 0xCCCCCC |
193 | mov esi, 0xCCCCCC |
193 | int 0x40 |
194 | mcall |
194 | 195 | ||
195 | call print_text_logon |
- | |
196 | ; WINDOW LABEL |
- | |
197 | mov eax, 4 ; function 4 _logon: write text to window |
- | |
198 | mov ebx, 8*65536+8 ; [x start] *65536 + [y start] |
- | |
199 | mov ecx, 0x10ffffff ; color of text RRGGBB |
- | |
200 | mov edx, labelt ; pointer to text beginning |
- | |
201 | mov esi, labellen-labelt ; text length |
- | |
202 | int 0x40 |
196 | call print_text_logon |
203 | 197 | ||
204 | cmp byte[mode],0 |
198 | cmp byte[mode],0 |
205 | je servermode_ |
199 | je servermode_ |
- | 200 | ||
206 | 201 | mov eax, 4 ; function 4 _logon: write text to window |
|
207 | mov ebx, 25*65536+33 ; [x start] *65536 + [y start] |
202 | mov ebx, 25*65536+33 ; [x start] *65536 + [y start] |
208 | xor ecx, ecx |
203 | xor ecx, ecx |
209 | mov edx, userstr ; pointer to text beginning |
204 | mov edx, userstr ; pointer to text beginning |
210 | mov esi, passstr-userstr ; text length |
205 | mov esi, passstr-userstr ; text length |
211 | int 0x40 |
206 | mcall |
212 | 207 | ||
213 | add bl,16 |
208 | add bl,16 |
214 | mov edx, passstr ; pointer to text beginning |
209 | mov edx, passstr ; pointer to text beginning |
215 | mov esi, connect-passstr ; text length |
210 | mov esi, connect-passstr ; text length |
216 | int 0x40 |
211 | mcall |
217 | 212 | ||
218 | jmp drawtherest_ |
213 | jmp drawtherest_ |
219 | 214 | ||
220 | servermode_: |
215 | servermode_: |
221 | 216 | ||
222 | mov ebx, 25*65536+33 ; [x start] *65536 + [y start] |
217 | mov ebx, 25*65536+33 ; [x start] *65536 + [y start] |
223 | xor ecx, ecx |
218 | xor ecx, ecx |
224 | mov edx, serverstr ; pointer to text beginning |
219 | mov edx, serverstr ; pointer to text beginning |
225 | mov esi, userstr-serverstr ; text length |
220 | mov esi, userstr-serverstr ; text length |
226 | int 0x40 |
221 | mcall |
227 | 222 | ||
228 | drawtherest_: |
223 | drawtherest_: |
229 | 224 | ||
230 | mov ebx, 240*65536+67 ; [x start] *65536 + [y start] |
225 | mov ebx, 240*65536+67 ; [x start] *65536 + [y start] |
231 | mov edx, connect ; pointer to text beginning |
226 | mov edx, connect ; pointer to text beginning |
232 | mov esi, connect_e-connect ; text length |
227 | mov esi, connect_e-connect ; text length |
233 | int 0x40 |
228 | mcall |
234 | 229 | ||
235 | popa |
230 | popa |
236 | inc ebx |
231 | inc ebx |
237 | int 0x40 |
232 | mcall |
238 | 233 | ||
239 | ret |
234 | ret |
240 | 235 | ||
241 | 236 | ||
242 | ; DATA AREA |
237 | ; DATA AREA |
243 | labelt: db 'Kolibrios VNC client by HIDNPLAYR' |
238 | title db 'Kolibrios VNC client by HIDNPLAYR',0 |
244 | labellen: |
- | |
245 | 239 | ||
246 | first: db '192.168.1.5' |
240 | first: db '192.168.1.5' |
247 | rb STRLEN |
241 | rb STRLEN |
248 | second: rb STRLEN |
242 | second: rb STRLEN |
249 | 243 | ||
250 | passchar db '*' |
244 | passchar db '*' |
251 | passlen dd 0 |
245 | passlen dd 0 |
252 | 246 | ||
253 | addr dd 0 |
247 | addr dd 0 |
254 | temp dd 0 |
248 | temp dd 0 |
255 | mode db 0 ; 0 = connection details, 1 = authentication |
249 | mode db 0 ; 0 = connection details, 1 = authentication |
256 | 250 | ||
257 | serverstr: db 'server:' |
251 | serverstr: db 'server:' |
258 | userstr: db 'username:' |
252 | userstr: db 'username:' |
259 | passstr: db 'password:' |
253 | passstr: db 'password:' |
260 | connect: db 'connect !' |
254 | connect: db 'connect !' |
261 | connect_e: |
255 | connect_e: |
262 | 256 | ||
263 | I_END_logon:0> |
257 | I_END_logon:0> |