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