Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
260 hidnplayr 1
red_logon:
2
    call draw_window_logon	 ; at first, draw the window
3
 
4
still_logon:			 ; main cycle of application begins here
5
    mov  eax,10     ; wait here for event
6
    int  0x40
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
    int  0x40		 ; 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
    int  0x40
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
 
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
    int  0x40
70
    cmp  eax,2		 ; button presed ?
71
    jne  checkevent_logon    ; a key is pressed or redraw is nessesary, goto checkevent
72
    int  0x40		 ; 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, 33*65536+12
127
    mov  edx, 4
128
    mov  esi, 0xEBEBEB
129
    int  0x40
130
 
131
    cmp  byte[mode],0
132
    je	 @f
133
 
134
    mov  ecx, 49*65536+12
135
    inc  edx
136
    int  0x40
137
 
138
   @@:
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
    int  0x40
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
    int  0x40
160
    add  ebx,6*65536
161
    jmp  @r
162
 
163
  dont_draw_pass:
164
 
165
popa
166
    ret
167
 
168
close_logon:
169
    mov  eax,-1
170
    int  0x40
171
 
172
connect_logon:
173
    ret
174
 
175
draw_window_logon:
176
 
177
    mov  eax, 12			; function 12_logon:tell os about windowdraw
178
    mov  ebx, 1 			; 1, start of draw
179
    int  0x40
180
    pusha
181
					; DRAW WINDOW
182
    xor  eax, eax			; function 0 _logon: define and draw window
183
    mov  ebx, 160*65536+330		; [x start] *65536 + [x size]
184
    mov  ecx, 160*65536+100		; [y start] *65536 + [y size]
185
    mov  edx, 0x03DDDDDD		; color of work area RRGGBB
186
    int  0x40
187
 
188
    mov  eax, 8 			; LOGON BUTTON
189
    mov  ebx, 220*65536+85
190
    mov  ecx, 63*65536+16
191
    mov  edx, 2
192
    mov  esi, 0xCCCCCC
193
    int  0x40
194
 
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
203
 
204
    cmp  byte[mode],0
205
    je	 servermode_
206
 
207
    mov  ebx, 25*65536+33		; [x start] *65536 + [y start]
208
    xor  ecx, ecx
209
    mov  edx, userstr			; pointer to text beginning
210
    mov  esi, passstr-userstr		; text length
211
    int  0x40
212
 
213
    add  bl,16
214
    mov  edx, passstr			; pointer to text beginning
215
    mov  esi, connect-passstr		; text length
216
    int  0x40
217
 
218
    jmp  drawtherest_
219
 
220
   servermode_:
221
 
222
    mov  ebx, 25*65536+33		; [x start] *65536 + [y start]
223
    xor  ecx, ecx
224
    mov  edx, serverstr 		; pointer to text beginning
225
    mov  esi, userstr-serverstr 	; text length
226
    int  0x40
227
 
228
   drawtherest_:
229
 
230
    mov  ebx, 240*65536+67		; [x start] *65536 + [y start]
231
    mov  edx, connect			; pointer to text beginning
232
    mov  esi, connect_e-connect 	; text length
233
    int  0x40
234
 
235
    popa
236
    inc   ebx
237
    int  0x40
238
 
239
    ret
240
 
241
 
242
; DATA AREA
243
labelt:  db 'Kolibrios VNC client by HIDNPLAYR'
244
labellen:
245
 
246
first:	      db '192.168.1.5'
247
	      rb STRLEN
248
second:       rb STRLEN
249
 
250
passchar      db '*'
251
passlen       dd 0
252
 
253
addr	      dd 0
254
temp	      dd 0
255
mode	      db 0 ; 0 = connection details, 1 = authentication
256
 
257
serverstr:    db 'server:'
258
userstr:      db 'username:'
259
passstr:      db 'password:'
260
connect:      db 'connect !'
261
connect_e:
262
 
263
I_END_logon: