Subversion Repositories Kolibri OS

Rev

Rev 485 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 485 Rev 661
1
;
1
;
2
;    NetSend(Server)
2
;    NetSend(Server)
3
;                                
3
;
4
;    €¢â®à: Hex
4
;    €¢â®à: Hex
5
;    ‘ ©â: www.mestack.narod.ru
5
;    ‘ ©â: www.mestack.narod.ru
6
;    
6
;
7
;    Ž¯¨á ­¨¥:
7
;    Ž¯¨á ­¨¥:
8
;    à®£à ¬¬  ¤«ï ®¡¬¥­  á®®¡é¥­¨ï¬¨ ¢ á¥â¨.‘¥à¢¥à­ ï ç áâì.
8
;    à®£à ¬¬  ¤«ï ®¡¬¥­  á®®¡é¥­¨ï¬¨ ¢ á¥â¨.‘¥à¢¥à­ ï ç áâì.
9
;
9
;
10
;    Compile with FASM for Menuet
10
;    Compile with FASM for Menuet
11
;    Š®¬¯¨«¨àã¥âáï FASM'®¬ ¤«ï Œ¥­ãí⠎‘
11
;    Š®¬¯¨«¨àã¥âáï FASM'®¬ ¤«ï Œ¥­ãí⠎‘
12
;
12
;
13
   
13
 
14
use32
14
use32
15
 org	0x0
15
 org    0x0
16
 db	'MENUET01'    ; header
16
 db     'MENUET01'    ; header
17
 dd	0x01	      ; header version
17
 dd     0x01          ; header version
18
 dd	START	      ; entry point
18
 dd     START         ; entry point
19
 dd	I_END	      ; image size
19
 dd     I_END         ; image size
20
 dd	I_END+0x10000 ; required memory
20
 dd     I_END+0x10000 ; required memory
21
 dd	I_END+0x10000 ; esp
21
 dd     I_END+0x10000 ; esp
22
 dd	0x0 , 0x0     ; I_Param , I_Path
22
 dd     0x0 , 0x0     ; I_Param , I_Path
23
   
23
 
24
include 'lang.inc'
24
include 'lang.inc'
25
include '..\..\..\macros.inc'
25
include 'macros.inc'
26
remote_ip  db  192,168,0,1
26
remote_ip  db  192,168,0,1
27
   
27
 
28
   
28
 
29
START:                      ; start of execution
29
START:                      ; start of execution
30
   
30
 
31
    mov  eax, 53                  ; open receiver socket
31
    mov  eax, 53                  ; open receiver socket
32
    mov  ebx, 0
32
    mov  ebx, 0
33
    mov  ecx, 0x5000              ; local port
33
    mov  ecx, 0x5000              ; local port
34
    mov  edx, 0xffff              ; remote port
34
    mov  edx, 0xffff              ; remote port
35
    mov  esi, dword [remote_ip]   ; remote IP
35
    mov  esi, dword [remote_ip]   ; remote IP
36
    mcall
36
    mcall
37
    mov  [socketNum],eax
37
    mov  [socketNum],eax
38
    mov  [0],eax                  ; save for remote code
38
    mov  [0],eax                  ; save for remote code
39
 
39
 
40
red:   
40
red:
41
    call draw_window            ; at first, draw the window
41
    call draw_window            ; at first, draw the window
42
   
42
 
43
still:
43
still:
44
   
44
 
45
    mov  eax,23                 ; wait here for event
45
    mov  eax,23                 ; wait here for event
46
    mov  ebx,1
46
    mov  ebx,1
47
    mcall
47
    mcall
48
   
48
 
49
    cmp  eax,1                  ; redraw request ?
49
    cmp  eax,1                  ; redraw request ?
50
    jz   red
50
    jz   red
51
    cmp  eax,2                  ; key in buffer ?
51
    cmp  eax,2                  ; key in buffer ?
52
    jz   key
52
    jz   key
53
    cmp  eax,3                  ; button in buffer ?
53
    cmp  eax,3                  ; button in buffer ?
54
    jz   button
54
    jz   button
55
   
55
 
56
    mov  eax,53                 ; data from cluster terminal ?
56
    mov  eax,53                 ; data from cluster terminal ?
57
    mov  ebx,2
57
    mov  ebx,2
58
    mov  ecx,[socketNum]
58
    mov  ecx,[socketNum]
59
    mcall
59
    mcall
60
   
60
 
61
    cmp  eax,0
61
    cmp  eax,0
62
    jne  data_arrived
62
    jne  data_arrived
63
   
63
 
64
    jmp  still
64
    jmp  still
65
   
65
 
66
key:
66
key:
67
    mov  eax,2
67
    mov  eax,2
68
    mcall
68
    mcall
69
    jmp  still
69
    jmp  still
70
   
70
 
71
button:
71
button:
72
   
72
 
73
    mov  eax,53
73
    mov  eax,53
74
    mov  ebx,1
74
    mov  ebx,1
75
    mov  ecx,[socketNum]
75
    mov  ecx,[socketNum]
76
    mcall
76
    mcall
77
    or  eax,-1
77
    or  eax,-1
78
    mcall
78
    mcall
79
   
79
 
80
   
80
 
81
data_arrived:
81
data_arrived:
82
   
82
 
83
    mov  eax,5                 ; wait a second for everything to arrive
83
    mov  eax,5                 ; wait a second for everything to arrive
84
    mov  ebx,10
84
    mov  ebx,10
85
    mcall
85
    mcall
86
   
86
 
87
    mov  edi,I_END
87
    mov  edi,I_END
88
   
88
 
89
  get_data:
89
  get_data:
90
   
90
 
91
    mov  eax,53
91
    mov  eax,53
92
    mov  ebx,3
92
    mov  ebx,3
93
    mov  ecx,[socketNum]
93
    mov  ecx,[socketNum]
94
    mcall
94
    mcall
95
   
95
 
96
    mov  [edi],bl
96
    mov  [edi],bl
97
    inc  edi
97
    inc  edi
98
   
98
 
99
    mov  eax,53
99
    mov  eax,53
100
    mov  ebx,2
100
    mov  ebx,2
101
    mov  ecx,[socketNum]
101
    mov  ecx,[socketNum]
102
    mcall
102
    mcall
103
   
103
 
104
    cmp  eax,0
104
    cmp  eax,0
105
    jne  get_data
105
    jne  get_data
106
   
106
 
107
    mov  eax,4
107
    mov  eax,4
108
    mov  ebx,10*65536+60
108
    mov  ebx,10*65536+60
109
    add  ebx,[y]
109
    add  ebx,[y]
110
    mov  ecx,0x000000
110
    mov  ecx,0x000000
111
    mov  edx,I_END
111
    mov  edx,I_END
112
    mov  esi,100
112
    mov  esi,100
113
    mcall
113
    mcall
114
   
114
 
115
    add  [y],10
115
    add  [y],10
116
   
116
 
117
    jmp  still
117
    jmp  still
118
   
118
 
119
y   dd   0x10
119
y   dd   0x10
120
   
120
 
121
   
121
 
122
   
122
 
123
;   *********************************************
123
;   *********************************************
124
;   *******  WINDOW DEFINITIONS AND DRAW ********
124
;   *******  WINDOW DEFINITIONS AND DRAW ********
125
;   *********************************************
125
;   *********************************************
126
   
126
 
127
   
127
 
128
draw_window:
128
draw_window:
129
   
129
 
130
    mov  eax,12                    ; function 12:tell os about windowdraw
130
    mov  eax,12                    ; function 12:tell os about windowdraw
131
    mov  ebx,1                     ; 1, start of draw
131
    mov  ebx,1                     ; 1, start of draw
132
    mcall
132
    mcall
133
   
133
 
134
                                   ; DRAW WINDOW
134
                                   ; DRAW WINDOW
135
    mov  eax,0                     ; function 0 : define and draw window
135
    mov  eax,0                     ; function 0 : define and draw window
136
    mov  ebx,100*65536+300         ; [x start] *65536 + [x size]
136
    mov  ebx,100*65536+300         ; [x start] *65536 + [x size]
137
    mov  ecx,100*65536+330         ; [y start] *65536 + [y size]
137
    mov  ecx,100*65536+330         ; [y start] *65536 + [y size]
138
    mov  edx,0x13ffffff            ; color of work area RRGGBB
138
    mov  edx,0x14ffffff            ; color of work area RRGGBB
139
    mov  edi,title                 ; WINDOW LABEL
139
    mov  edi,title                 ; WINDOW LABEL
140
    mcall
140
    mcall
141
   
141
 
142
                                   
142
 
143
    ; Re-draw the screen text
143
    ; Re-draw the screen text
144
    cld
144
    cld
145
    mov  eax,4
145
    mov  eax,4
146
    mov  ebx,10*65536+30           ; draw info text with function 4
146
    mov  ebx,10*65536+30           ; draw info text with function 4
147
    mov  ecx,0x000000
147
    mov  ecx,0x000000
148
    mov  edx,text
148
    mov  edx,text
149
    mov  esi,40
149
    mov  esi,40
150
  newline:
150
  newline:
151
    mcall
151
    mcall
152
    add  ebx,16
152
    add  ebx,16
153
    add  edx,40
153
    add  edx,40
154
    cmp  [edx],byte 'x'
154
    cmp  [edx],byte 'x'
155
    jnz  newline
155
    jnz  newline
156
   
156
 
157
   
157
 
158
    mov  eax,12                    ; function 12:tell os about windowdraw
158
    mov  eax,12                    ; function 12:tell os about windowdraw
159
    mov  ebx,2                     ; 2, end of draw
159
    mov  ebx,2                     ; 2, end of draw
160
    mcall
160
    mcall
161
   
161
 
162
    ret
162
    ret
163
   
163
 
164
   
164
 
165
; DATA AREA
165
; DATA AREA
166
   
166
 
167
if lang eq ru   
167
if lang eq ru
168
text:
168
text:
169
    db '„ ­­ë©  ¤à¥á        : 192.168.0.2       '
169
    db '„ ­­ë©  ¤à¥á        : 192.168.0.2       '
170
    db 'à®á«ã訢 ¥¬ë© ¯®àâ : 0x5000            '
170
    db 'à®á«ã訢 ¥¬ë© ¯®àâ : 0x5000            '
171
    db 'à¨á« ­­ë¥ á®®¡é¥­¨ï:                   '
171
    db 'à¨á« ­­ë¥ á®®¡é¥­¨ï:                   '
172
    db 'x' ; <- END MARKER, DONT DELETE
172
    db 'x' ; <- END MARKER, DONT DELETE
173
else
173
else
174
text:
174
text:
175
    db 'This address     : 192.168.0.2          '
175
    db 'This address     : 192.168.0.2          '
176
    db 'Used port        : 0x5000               '
176
    db 'Used port        : 0x5000               '
177
    db 'Received messages:                      '
177
    db 'Received messages:                      '
178
    db 'x' ; <- END MARKER, DONT DELETE
178
    db 'x' ; <- END MARKER, DONT DELETE
179
end if
179
end if
180
   
180
 
181
title  db  'NetSend(Server)',0
181
title  db  'NetSend(Server)',0
182
   
182
 
183
socketNum   dd  0x0
183
socketNum   dd  0x0
184
  
184
 
185
 
185
 
186
I_END:
186
I_END: