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(Client)
2
;    NetSend(Client)
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
   
14
 
15
use32
15
use32
16
   
16
 
17
                org     0x0
17
                org     0x0
18
   
18
 
19
                db      'MENUET01'              ; 8 byte id
19
                db      'MENUET01'              ; 8 byte id
20
                dd      1                       ; header version
20
                dd      1                       ; header version
21
                dd      START                   ; program start
21
                dd      START                   ; program start
22
                dd      I_END                   ; program image size
22
                dd      I_END                   ; program image size
23
                dd      mem                     ; required amount of memory
23
                dd      mem                     ; required amount of memory
24
                dd      mem                     ; stack pointer
24
                dd      mem                     ; stack pointer
25
                dd      0, 0                    ; param, icon
25
                dd      0, 0                    ; param, icon
26
   
26
 
27
include 'lang.inc'
27
include 'lang.inc'
28
include '..\..\..\macros.inc'
28
include 'macros.inc'
29
   
29
 
30
START:                                  ; start of execution
30
START:                                  ; start of execution
31
   
31
 
32
    mov  eax,53                ; open socket
32
    mov  eax,53                ; open socket
33
    mov  ebx,0
33
    mov  ebx,0
34
    mov  ecx,0x4000            ; local port
34
    mov  ecx,0x4000            ; local port
35
    mov  edx,0x5000            ; remote port
35
    mov  edx,0x5000            ; remote port
36
    mov  esi,dword [remote_ip]   ; node IP
36
    mov  esi,dword [remote_ip]   ; node IP
37
    mcall
37
    mcall
38
   
38
 
39
    mov  [socketNum], eax
39
    mov  [socketNum], eax
40
 
40
 
41
red: 
41
red:
42
    call draw_window            ; at first, draw the window
42
    call draw_window            ; at first, draw the window
43
   
43
 
44
still:
44
still:
45
   
45
 
46
    mov  eax,10                 ; wait here for event
46
    mov  eax,10                 ; wait here for event
47
    mcall
47
    mcall
48
 
48
 
49
    dec  eax
49
    dec  eax
50
    jz   red
50
    jz   red
51
    dec  eax
51
    dec  eax
52
    jnz  button
52
    jnz  button
53
 
53
 
54
key:
54
key:
55
    mov  al,2
55
    mov  al,2
56
    mcall
56
    mcall
57
    jmp  still
57
    jmp  still
58
   
58
 
59
button:
59
button:
60
    mov  al,17
60
    mov  al,17
61
    mcall
61
    mcall
62
   
62
 
63
    dec  ah                    ; button id=1 ?
63
    dec  ah                    ; button id=1 ?
64
    jnz  noclose
64
    jnz  noclose
65
    mov  eax, 53
65
    mov  eax, 53
66
    mov  ebx, 1
66
    mov  ebx, 1
67
    mov  ecx, [socketNum]
67
    mov  ecx, [socketNum]
68
    mcall
68
    mcall
69
    or  eax,-1
69
    or  eax,-1
70
    mcall
70
    mcall
71
  noclose:
71
  noclose:
72
; it was not close button, so it must be send code button
72
; it was not close button, so it must be send code button
73
 
73
 
74
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
74
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
75
;;                                              ;;
75
;;                                              ;;
76
;;           SEND CODE TO REMOTE                ;;
76
;;           SEND CODE TO REMOTE                ;;
77
;;                                              ;;
77
;;                                              ;;
78
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
78
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
79
   
79
 
80
send_xcode:
80
send_xcode:
81
 
81
 
82
  mov  eax,53                     ; SEND CODE TO REMOTE
82
  mov  eax,53                     ; SEND CODE TO REMOTE
83
  mov  ebx,4
83
  mov  ebx,4
84
  mov  ecx,[socketNum]
84
  mov  ecx,[socketNum]
85
  mov  edx,end_message-send_data
85
  mov  edx,end_message-send_data
86
  mov  esi,send_data
86
  mov  esi,send_data
87
  mcall
87
  mcall
88
 
88
 
89
  jmp  still
89
  jmp  still
90
   
90
 
91
   
91
 
92
;   *********************************************
92
;   *********************************************
93
;   *******  WINDOW DEFINITIONS AND DRAW ********
93
;   *******  WINDOW DEFINITIONS AND DRAW ********
94
;   *********************************************
94
;   *********************************************
95
   
95
 
96
   
96
 
97
draw_window:
97
draw_window:
98
   
98
 
99
    mov  eax,12                    ; function 12:tell os about windowdraw
99
    mov  eax,12                    ; function 12:tell os about windowdraw
100
    mov  ebx,1                     ; 1, start of draw
100
    mov  ebx,1                     ; 1, start of draw
101
    mcall
101
    mcall
102
   
102
 
103
                                   ; DRAW WINDOW
103
                                   ; DRAW WINDOW
104
    mov  eax,0                     ; function 0 : define and draw window
104
    mov  eax,0                     ; function 0 : define and draw window
105
    mov  ebx,100*65536+250         ; [x start] *65536 + [x size]
105
    mov  ebx,100*65536+250         ; [x start] *65536 + [x size]
106
    mov  ecx,60*65536+150          ; [y start] *65536 + [y size]
106
    mov  ecx,60*65536+150          ; [y start] *65536 + [y size]
107
    mov  edx,0x13ffffff            ; color of work area RRGGBB
107
    mov  edx,0x14ffffff            ; color of work area RRGGBB
108
    mov  edi,title                 ; WINDOW LABEL
108
    mov  edi,title                 ; WINDOW LABEL
109
    mcall
109
    mcall
110
   
110
 
111
   
111
 
112
    mov  eax,8                     ; SEND MESSAGE
112
    mov  eax,8                     ; SEND MESSAGE
113
    mov  ebx,50*65536+145
113
    mov  ebx,50*65536+145
114
    mov  ecx,47*65536+13
114
    mov  ecx,47*65536+13
115
    mov  edx,2
115
    mov  edx,2
116
    mov  esi,0x667788
116
    mov  esi,0x667788
117
    mcall
117
    mcall
118
   
118
 
119
    mov  eax,4
119
    mov  eax,4
120
    mov  ebx,25*65536+50           ; draw info text with function 4
120
    mov  ebx,25*65536+50           ; draw info text with function 4
121
    mov  ecx,0x000000
121
    mov  ecx,0x000000
122
    mov  edx,text
122
    mov  edx,text
123
    mov  esi,40
123
    mov  esi,40
124
  newline:
124
  newline:
125
    mcall
125
    mcall
126
    add  ebx,16
126
    add  ebx,16
127
    add  edx,esi
127
    add  edx,esi
128
    cmp  [edx],byte 'x'
128
    cmp  [edx],byte 'x'
129
    jnz  newline
129
    jnz  newline
130
   
130
 
131
    mov  eax,12                    ; function 12:tell os about windowdraw
131
    mov  eax,12                    ; function 12:tell os about windowdraw
132
    mov  ebx,2                     ; 2, end of draw
132
    mov  ebx,2                     ; 2, end of draw
133
    mcall
133
    mcall
134
   
134
 
135
    ret
135
    ret
136
   
136
 
137
   
137
 
138
; DATA AREA
138
; DATA AREA
139
   
139
 
140
if lang eq ru   
140
if lang eq ru
141
text:
141
text:
142
    db '        ®á« âì á®®¡é¥­¨¥               '
142
    db '        ®á« âì á®®¡é¥­¨¥               '
143
    db '                                        '
143
    db '                                        '
144
    db ' ‹®ª «ì­ë©  ¤à¥á : 192.168.0.1          '
144
    db ' ‹®ª «ì­ë©  ¤à¥á : 192.168.0.1          '
145
    db ' “¤ «ñ­­ë©  ¤à¥á : 192.168.0.2          '
145
    db ' “¤ «ñ­­ë©  ¤à¥á : 192.168.0.2          '
146
    db '’¥ªáâ ¨  ¤à¥á ¢ ª®­æ¥ ¨á室­¨ª          '
146
    db '’¥ªáâ ¨  ¤à¥á ¢ ª®­æ¥ ¨á室­¨ª          '
147
    db 'x' ; <- END MARKER, DONT DELETE
147
    db 'x' ; <- END MARKER, DONT DELETE
148
else
148
else
149
text:
149
text:
150
    db '          Send message                  '
150
    db '          Send message                  '
151
    db '                                        '
151
    db '                                        '
152
    db ' Local  address : 192.168.0.1           '
152
    db ' Local  address : 192.168.0.1           '
153
    db ' Remote address : 192.168.0.2           '
153
    db ' Remote address : 192.168.0.2           '
154
    db 'Text and address in end of source       '
154
    db 'Text and address in end of source       '
155
    db 'x' ; <- END MARKER, DONT DELETE
155
    db 'x' ; <- END MARKER, DONT DELETE
156
end if   
156
end if
157
   
157
 
158
title  db  'NetSend(Client)',0
158
title  db  'NetSend(Client)',0
159
   
159
 
160
remote_ip  db  192,168,1,2
160
remote_ip  db  192,168,1,2
161
   
161
 
162
send_data   db  'à¨¢¥â,íâ® â¥áâ!Hello,this is a test!'
162
send_data   db  'à¨¢¥â,íâ® â¥áâ!Hello,this is a test!'
163
end_message:
163
end_message:
164
 
164
 
165
   
165
 
166
I_END:
166
I_END:
167
align 4
167
align 4
168
socketNum dd ?
168
socketNum dd ?
169
 
169
 
170
rb 32 ; this is for stack
170
rb 32 ; this is for stack
171
 
171
 
172
mem:
172
mem: