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