Subversion Repositories Kolibri OS

Rev

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