Rev 109 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
31 | halyavin | 1 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
2 | ;; ;; |
||
3 | ;; SMTP server for MenuetOS ;; |
||
4 | ;; ;; |
||
5 | ;; License: GPL / See file COPYING for details ;; |
||
6 | ;; Copyright 2002 (c) Ville Turjanmaa ;; |
||
7 | ;; ;; |
||
8 | ;; Compile with FASM for Menuet ;; |
||
9 | ;; ;; |
||
10 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
||
474 | diamond | 11 | |
31 | halyavin | 12 | version equ '0.1' |
13 | |||
14 | use32 |
||
15 | |||
16 | org 0x0 |
||
17 | |||
18 | db 'MENUET01' ; 8 byte id |
||
19 | dd 0x01 ; required os |
||
20 | dd START ; program start |
||
21 | dd I_END ; program image size |
||
22 | dd 0x200000 ; required amount of memory |
||
23 | dd 0xffff0 |
||
24 | dd 0,0 |
||
25 | |||
474 | diamond | 26 | include 'macros.inc' |
27 | |||
31 | halyavin | 28 | save_file: |
29 | |||
474 | diamond | 30 | ; cmp [file_start],0x100000+10 |
31 | ; jbe nosub |
||
32 | ; sub [file_start],8 |
||
33 | ; nosub: |
||
31 | halyavin | 34 | |
35 | mov eax,[file_start] |
||
36 | sub eax,0x100000 |
||
474 | diamond | 37 | mov ebx,files |
38 | mov [ebx+12],eax |
||
31 | halyavin | 39 | |
474 | diamond | 40 | mov eax,70 |
31 | halyavin | 41 | int 0x40 |
42 | |||
43 | ret |
||
44 | |||
45 | |||
46 | START: ; start of execution |
||
47 | |||
48 | mov [file_start],0x100000 |
||
49 | |||
474 | diamond | 50 | mov eax,70 |
31 | halyavin | 51 | mov ebx,filel |
52 | int 0x40 |
||
53 | |||
474 | diamond | 54 | test eax,eax |
55 | jz @f |
||
56 | cmp eax,6 |
||
57 | jnz notfound |
||
58 | @@: |
||
31 | halyavin | 59 | add [file_start],ebx |
60 | notfound: |
||
61 | |||
62 | |||
63 | mov edi,I_END |
||
64 | mov ecx,60*120 |
||
474 | diamond | 65 | mov al,32 |
31 | halyavin | 66 | cld |
67 | rep stosb |
||
68 | |||
69 | mov eax,[rxs] |
||
70 | imul eax,11 |
||
71 | mov [pos],eax |
||
72 | |||
73 | mov ebp,0 |
||
74 | mov edx,I_END |
||
75 | call draw_window ; at first, draw the window |
||
76 | |||
77 | still: |
||
78 | |||
79 | inc [cursor_on_off] |
||
80 | |||
81 | mov eax,5 |
||
82 | mov ebx,1 |
||
83 | int 0x40 |
||
84 | |||
85 | mov eax,11 ; wait here for event |
||
86 | int 0x40 |
||
87 | |||
88 | cmp eax,1 ; redraw |
||
89 | je redraw |
||
90 | cmp eax,2 ; key |
||
91 | je key |
||
92 | cmp eax,3 ; button |
||
93 | je button |
||
94 | |||
95 | cmp [I_END+120*60],byte 1 |
||
96 | jne no_main_update |
||
97 | mov [I_END+120*60],byte 0 |
||
98 | mov edx,I_END |
||
99 | call draw_channel_text |
||
100 | no_main_update: |
||
101 | |||
102 | cmp [server_active],0 |
||
103 | je noread |
||
104 | cmp [status],4 |
||
105 | jne noread |
||
106 | call read_incoming_data |
||
107 | inc [close_connection] |
||
108 | cmp [close_connection],15*100 |
||
109 | jbe noread |
||
110 | |||
111 | call yq |
||
112 | |||
113 | noread: |
||
114 | |||
115 | call print_status |
||
116 | |||
117 | cmp [status],4 |
||
118 | je check_header |
||
119 | |||
120 | jmp still |
||
121 | |||
122 | |||
123 | check_header: |
||
124 | |||
125 | cmp [header_sent],1 |
||
126 | je still |
||
127 | |||
128 | mov eax,53 |
||
129 | mov ebx,7 |
||
130 | mov ecx,[socket] |
||
131 | mov edx,6 |
||
132 | mov esi,r220 |
||
133 | int 0x40 |
||
134 | mov [header_sent],1 |
||
135 | |||
136 | jmp still |
||
137 | |||
138 | |||
139 | |||
140 | redraw: ; redraw |
||
141 | |||
142 | call draw_window |
||
143 | jmp still |
||
144 | |||
145 | |||
146 | button: ; button |
||
147 | |||
148 | mov eax,17 ; get id |
||
149 | int 0x40 |
||
150 | |||
151 | cmp ah,1 ; close program |
||
152 | jne noclose |
||
153 | mov eax,-1 |
||
154 | int 0x40 |
||
155 | noclose: |
||
156 | |||
157 | call socket_commands |
||
158 | |||
159 | jmp still |
||
160 | |||
161 | |||
162 | old_status dd 0x0 |
||
163 | |||
164 | print_status: |
||
165 | |||
166 | pusha |
||
167 | |||
168 | mov eax,53 |
||
169 | mov ebx,6 |
||
170 | mov ecx,[socket] |
||
171 | int 0x40 |
||
172 | |||
173 | mov [status],eax |
||
174 | |||
175 | cmp eax,[old_status] |
||
176 | je no_print |
||
177 | |||
178 | mov [old_status],eax |
||
179 | |||
180 | push eax |
||
181 | |||
182 | mov eax,13 |
||
183 | mov ebx,360*65536+30 |
||
184 | mov ecx,151*65536+10 |
||
185 | mov edx,0xffffff |
||
186 | int 0x40 |
||
187 | |||
188 | pop ecx |
||
189 | mov eax,47 |
||
190 | mov ebx,3*65536 |
||
191 | mov edx,360*65536+151 |
||
192 | mov esi,0x000000 |
||
193 | |||
194 | cmp [server_active],0 |
||
195 | je no_print |
||
196 | |||
197 | int 0x40 |
||
198 | |||
199 | no_print: |
||
200 | |||
201 | popa |
||
202 | |||
203 | ret |
||
204 | |||
205 | |||
206 | socket_commands: |
||
207 | |||
208 | cmp ah,22 ; open socket |
||
209 | jnz tst3 |
||
210 | mov eax,3 |
||
211 | int 0x40 |
||
212 | |||
213 | mov [server_active],1 |
||
214 | |||
215 | mov eax,53 |
||
216 | mov ebx,5 |
||
217 | mov ecx,25 ; local port # - http |
||
218 | mov edx,0 ; no remote port specified |
||
219 | mov esi,0 ; no remote ip specified |
||
220 | mov edi,0 ; PASSIVE open |
||
221 | int 0x40 |
||
222 | mov [socket], eax |
||
223 | |||
224 | ret |
||
225 | tst3: |
||
226 | |||
227 | |||
228 | cmp ah,24 ; close socket |
||
229 | jnz no_24 |
||
230 | mov eax,53 |
||
231 | mov ebx,8 |
||
232 | mov ecx,[socket] |
||
233 | int 0x40 |
||
234 | mov [header_sent],0 |
||
235 | mov [mail_rp],0 |
||
236 | mov [server_active],0 |
||
237 | |||
238 | ret |
||
239 | no_24: |
||
240 | |||
241 | |||
242 | ret |
||
243 | |||
244 | |||
245 | |||
246 | key: |
||
247 | |||
248 | mov eax,2 |
||
249 | int 0x40 |
||
250 | |||
251 | jmp still |
||
252 | |||
253 | |||
254 | |||
255 | read_incoming_data: |
||
256 | |||
257 | pusha |
||
258 | |||
259 | read_new_byte: |
||
260 | |||
261 | call read_incoming_byte |
||
262 | cmp ecx,-1 |
||
263 | je no_data_in_buffer |
||
264 | |||
265 | mov eax,[file_start] |
||
266 | mov [eax],bl |
||
267 | inc [file_start] |
||
268 | |||
269 | cmp bl,10 |
||
270 | jne no_start_command |
||
271 | mov [cmd],1 |
||
272 | no_start_command: |
||
273 | |||
274 | cmp bl,13 |
||
275 | jne no_end_command |
||
276 | mov eax,[cmd] |
||
277 | mov [eax+command-2],byte 0 |
||
278 | call analyze_command |
||
279 | mov edi,command |
||
280 | mov ecx,250 |
||
281 | mov eax,0 |
||
282 | cld |
||
283 | rep stosb |
||
284 | mov [cmd],0 |
||
285 | no_end_command: |
||
286 | |||
287 | mov eax,[cmd] |
||
288 | cmp eax,250 |
||
289 | jge still |
||
290 | |||
291 | mov [eax+command-2],bl |
||
292 | inc [cmd] |
||
293 | |||
294 | jmp read_new_byte |
||
295 | |||
296 | no_data_in_buffer: |
||
297 | |||
298 | popa |
||
299 | |||
300 | ret |
||
301 | |||
302 | |||
303 | |||
304 | |||
305 | |||
306 | analyze_command: |
||
307 | |||
308 | pusha |
||
309 | |||
310 | mov [text_start],I_END |
||
311 | mov ecx,[rxs] |
||
312 | imul ecx,11 |
||
313 | mov [pos],ecx |
||
314 | |||
315 | mov bl,13 |
||
316 | call print_character |
||
317 | mov bl,10 |
||
318 | call print_character |
||
319 | |||
320 | cmp [cmd],2 |
||
321 | jbe nott |
||
322 | mov ecx,[cmd] |
||
323 | sub ecx,2 |
||
324 | mov esi,command+0 |
||
325 | newcmdc: |
||
326 | mov bl,[esi] |
||
327 | call print_character |
||
328 | inc esi |
||
329 | loop newcmdc |
||
330 | |||
331 | nott: |
||
332 | |||
333 | mov edx,I_END |
||
334 | call draw_channel_text |
||
335 | |||
336 | cmd_len_ok: |
||
337 | |||
338 | cmp [command],dword 'data' |
||
339 | je datacom |
||
340 | cmp [command],dword 'DATA' |
||
341 | je datacom |
||
342 | cmp [command],dword 'Data' |
||
343 | je datacom |
||
344 | jmp nodatacom |
||
345 | datacom: |
||
346 | inc [mail_rp] |
||
347 | mov eax,53 |
||
348 | mov ebx,7 |
||
349 | mov ecx,[socket] |
||
350 | mov edx,6 |
||
351 | mov esi,r354 |
||
352 | int 0x40 |
||
353 | mov [cmd],0 |
||
354 | popa |
||
355 | ret |
||
356 | |||
357 | nodatacom: |
||
358 | |||
359 | cmp [mail_rp],0 |
||
360 | jne nomrp0 |
||
361 | mov eax,53 |
||
362 | mov ebx,7 |
||
363 | mov ecx,[socket] |
||
364 | mov edx,6 |
||
365 | mov esi,r250 |
||
366 | int 0x40 |
||
367 | mov [cmd],0 |
||
368 | popa |
||
369 | ret |
||
370 | nomrp0: |
||
371 | |||
372 | |||
373 | |||
374 | cmp [command],dword 'QUIT' |
||
375 | je yesquit |
||
376 | cmp [command],dword 'Quit' |
||
377 | je yesquit |
||
378 | cmp [command],dword 'quit' |
||
379 | je yesquit |
||
380 | jmp noquit |
||
381 | yq: |
||
382 | pusha |
||
383 | |||
384 | yesquit: |
||
385 | |||
386 | mov [close_connection],0 |
||
387 | |||
388 | mov eax,53 |
||
389 | mov ebx,7 |
||
390 | mov ecx,[socket] |
||
391 | mov edx,6 |
||
392 | mov esi,r221 |
||
393 | int 0x40 |
||
394 | mov [cmd],0 |
||
395 | |||
396 | mov eax,5 |
||
397 | mov ebx,5 |
||
398 | int 0x40 |
||
399 | |||
400 | mov eax,53 |
||
401 | mov ebx,8 |
||
402 | mov ecx,[socket] |
||
403 | int 0x40 |
||
404 | |||
405 | mov eax,5 |
||
406 | mov ebx,5 |
||
407 | int 0x40 |
||
408 | |||
409 | mov eax,53 |
||
410 | mov ebx,8 |
||
411 | mov ecx,[socket] |
||
412 | int 0x40 |
||
413 | |||
414 | mov [header_sent],0 |
||
415 | mov [mail_rp],0 |
||
416 | |||
417 | call save_file |
||
418 | |||
419 | mov eax,5 |
||
420 | mov ebx,20 |
||
421 | int 0x40 |
||
422 | |||
423 | mov eax,53 |
||
424 | mov ebx,5 |
||
425 | mov ecx,25 ; local port # - http |
||
426 | mov edx,0 ; no remote port specified |
||
427 | mov esi,0 ; no remote ip specified |
||
428 | mov edi,0 ; PASSIVE open |
||
429 | int 0x40 |
||
430 | mov [socket], eax |
||
431 | |||
432 | popa |
||
433 | ret |
||
434 | noquit: |
||
435 | |||
436 | |||
437 | |||
438 | cmp [command],byte '.' |
||
439 | jne nodot |
||
440 | mov eax,53 |
||
441 | mov ebx,7 |
||
442 | mov ecx,[socket] |
||
443 | mov edx,6 |
||
444 | mov esi,r250 |
||
445 | int 0x40 |
||
446 | mov [cmd],0 |
||
447 | popa |
||
448 | ret |
||
449 | nodot: |
||
450 | |||
451 | popa |
||
452 | ret |
||
453 | |||
454 | |||
455 | r250 db '250 ',13,10 |
||
456 | r221 db '221 ',13,10 |
||
457 | r220 db '220 ',13,10 |
||
458 | r354 db '354 ',13,10 |
||
459 | |||
460 | |||
461 | |||
462 | draw_data: |
||
463 | |||
464 | pusha |
||
465 | |||
466 | add eax,[text_start] |
||
467 | mov [eax],bl |
||
468 | |||
469 | popa |
||
470 | ret |
||
471 | |||
472 | |||
473 | |||
474 | |||
475 | print_text: |
||
476 | |||
477 | pusha |
||
478 | |||
479 | mov ecx,command-2 |
||
480 | add ecx,[cmd] |
||
481 | |||
482 | ptr2: |
||
483 | mov bl,[eax] |
||
484 | cmp bl,dl |
||
485 | je ptr_ret |
||
486 | cmp bl,0 |
||
487 | je ptr_ret |
||
488 | call print_character |
||
489 | inc eax |
||
490 | cmp eax,ecx |
||
491 | jbe ptr2 |
||
492 | |||
493 | ptr_ret: |
||
494 | |||
495 | mov eax,[text_start] |
||
496 | mov [eax+120*60],byte 1 |
||
497 | |||
498 | popa |
||
499 | ret |
||
500 | |||
501 | |||
502 | |||
503 | print_character: |
||
504 | |||
505 | pusha |
||
506 | |||
507 | cmp bl,13 ; line beginning |
||
508 | jne nobol |
||
509 | mov ecx,[pos] |
||
510 | add ecx,1 |
||
511 | boll1: |
||
512 | sub ecx,1 |
||
513 | mov eax,ecx |
||
514 | xor edx,edx |
||
515 | mov ebx,[rxs] |
||
516 | div ebx |
||
517 | cmp edx,0 |
||
518 | jne boll1 |
||
519 | mov [pos],ecx |
||
520 | jmp newdata |
||
521 | nobol: |
||
522 | |||
523 | cmp bl,10 ; line down |
||
524 | jne nolf |
||
525 | addx1: |
||
526 | add [pos],dword 1 |
||
527 | mov eax,[pos] |
||
528 | xor edx,edx |
||
529 | mov ecx,[rxs] |
||
530 | div ecx |
||
531 | cmp edx,0 |
||
532 | jnz addx1 |
||
533 | mov eax,[pos] |
||
534 | jmp cm1 |
||
535 | nolf: |
||
536 | no_lf_ret: |
||
537 | |||
538 | |||
539 | cmp bl,15 ; character |
||
540 | jbe newdata |
||
541 | |||
542 | mov eax,[irc_data] |
||
543 | shl eax,8 |
||
544 | mov al,bl |
||
545 | mov [irc_data],eax |
||
546 | |||
547 | mov eax,[pos] |
||
548 | call draw_data |
||
549 | |||
550 | mov eax,[pos] |
||
551 | add eax,1 |
||
552 | cm1: |
||
553 | mov ebx,[scroll+4] |
||
554 | imul ebx,[rxs] |
||
555 | cmp eax,ebx |
||
556 | jb noeaxz |
||
557 | |||
558 | mov esi,[text_start] |
||
559 | add esi,[rxs] |
||
560 | |||
561 | mov edi,[text_start] |
||
562 | mov ecx,ebx |
||
563 | cld |
||
564 | rep movsb |
||
565 | |||
566 | mov esi,[text_start] |
||
567 | mov ecx,[rxs] |
||
568 | imul ecx,61 |
||
569 | add esi,ecx |
||
570 | |||
571 | mov edi,[text_start] |
||
572 | mov ecx,[rxs] |
||
573 | imul ecx,60 |
||
574 | add edi,ecx |
||
575 | mov ecx,ebx |
||
576 | cld |
||
577 | rep movsb |
||
578 | |||
579 | mov eax,ebx |
||
580 | sub eax,[rxs] |
||
581 | noeaxz: |
||
582 | mov [pos],eax |
||
583 | |||
584 | newdata: |
||
585 | |||
586 | mov eax,[text_start] |
||
587 | mov [eax+120*60],byte 1 |
||
588 | |||
589 | popa |
||
590 | ret |
||
591 | |||
592 | |||
593 | |||
594 | read_incoming_byte: |
||
595 | |||
596 | mov eax, 53 |
||
597 | mov ebx, 2 |
||
598 | mov ecx, [socket] |
||
599 | int 0x40 |
||
600 | |||
601 | mov ecx,-1 |
||
602 | |||
603 | cmp eax,0 |
||
604 | je no_more_data |
||
605 | |||
606 | mov eax, 53 |
||
607 | mov ebx, 3 |
||
608 | mov ecx, [socket] |
||
609 | int 0x40 |
||
610 | |||
611 | mov ecx,0 |
||
612 | |||
613 | no_more_data: |
||
614 | |||
615 | ret |
||
616 | |||
617 | |||
618 | |||
619 | draw_window: |
||
620 | |||
621 | pusha |
||
622 | |||
623 | mov eax,12 |
||
624 | mov ebx,1 |
||
625 | int 0x40 |
||
626 | |||
627 | mov [old_status],300 |
||
628 | |||
629 | mov eax,0 ; draw window |
||
630 | mov ebx,5*65536+400 |
||
631 | mov ecx,5*65536+200 |
||
474 | diamond | 632 | mov edx,0x13ffffff |
633 | mov edi,labelt |
||
31 | halyavin | 634 | int 0x40 |
635 | |||
636 | mov eax,8 ; button: open socket |
||
637 | mov ebx,23*65536+22 |
||
638 | mov ecx,169*65536+10 |
||
639 | mov edx,22 |
||
640 | mov esi,0x55aa55 |
||
641 | int 0x40 |
||
642 | |||
643 | mov eax,8 ; button: close socket |
||
644 | mov ebx,265*65536+22 |
||
645 | mov ecx,169*65536+10 |
||
646 | mov edx,24 |
||
647 | mov esi,0xaa5555 |
||
648 | int 0x40 |
||
649 | |||
650 | mov eax,38 ; line |
||
651 | mov ebx,5*65536+395 |
||
652 | mov ecx,108*65536+108 |
||
653 | mov edx,0x000000 |
||
654 | int 0x40 |
||
655 | |||
656 | mov ebx,5*65536+123 ; info text |
||
657 | mov ecx,0x000000 |
||
658 | mov edx,text |
||
659 | mov esi,70 |
||
660 | newline: |
||
661 | mov eax,4 |
||
662 | int 0x40 |
||
663 | add ebx,12 |
||
664 | add edx,70 |
||
665 | cmp [edx],byte 'x' |
||
666 | jne newline |
||
667 | |||
668 | mov edx,I_END ; text from server |
||
669 | call draw_channel_text |
||
670 | |||
671 | mov eax,12 |
||
672 | mov ebx,2 |
||
673 | int 0x40 |
||
674 | |||
675 | popa |
||
676 | |||
677 | ret |
||
678 | |||
679 | |||
680 | |||
681 | |||
682 | |||
683 | draw_channel_text: |
||
684 | |||
685 | pusha |
||
686 | |||
687 | mov eax,4 |
||
688 | mov ebx,10*65536+26 |
||
689 | mov ecx,[scroll+4] |
||
690 | mov esi,[rxs] |
||
691 | dct: |
||
692 | pusha |
||
693 | mov cx,bx |
||
694 | shl ecx,16 |
||
695 | mov cx,9 |
||
696 | mov eax,13 |
||
697 | mov ebx,10*65536 |
||
698 | mov bx,word [rxs] |
||
699 | imul bx,6 |
||
700 | mov edx,0xffffff |
||
701 | int 0x40 |
||
702 | popa |
||
703 | push ecx |
||
704 | mov eax,4 |
||
705 | mov ecx,0 |
||
706 | cmp [edx],word '* ' |
||
707 | jne no_red |
||
708 | mov ecx,0xff0000 |
||
709 | no_red: |
||
710 | cmp [edx],word '**' |
||
711 | jne no_light_blue |
||
712 | cmp [edx+2],byte '*' |
||
713 | jne no_light_blue |
||
714 | mov ecx,0x0000ff |
||
715 | no_light_blue: |
||
716 | cmp [edx],byte '#' |
||
717 | jne no_blue |
||
718 | mov ecx,0x00ff00 |
||
719 | no_blue: |
||
720 | int 0x40 |
||
721 | add edx,[rxs] |
||
722 | add ebx,10 |
||
723 | pop ecx |
||
724 | loop dct |
||
725 | |||
726 | popa |
||
727 | ret |
||
728 | |||
729 | |||
730 | |||
731 | text: |
||
732 | |||
733 | db ' Incoming mails are written to /rd/1/smtps.txt ' |
||
734 | db ' The file can be fetched with TinyServer and a Html-browser. ' |
||
735 | db ' Timeout is set to 15 seconds. ' |
||
736 | db ' ' |
||
737 | db ' Open SMTP server port 25 Close SMTP ' |
||
738 | |||
474 | diamond | 739 | db 'x' ; <- END MARKER, DONT DELETE |
31 | halyavin | 740 | |
741 | |||
742 | irc_server_ip db 192,168,1,1 |
||
743 | |||
744 | file_start dd 0x100000 |
||
745 | |||
746 | files: |
||
474 | diamond | 747 | dd 2,0,0,?,0x100000 |
31 | halyavin | 748 | db '/rd/1/smtps.txt',0 |
749 | filel: |
||
474 | diamond | 750 | dd 0,0,0,0x100000,0x100000 |
31 | halyavin | 751 | db '/rd/1/smtps.txt',0 |
752 | |||
753 | |||
754 | server_active dd 0 |
||
755 | |||
756 | status dd 0x0 |
||
757 | header_sent db 0 |
||
758 | |||
759 | channel_temp: times 100 db 0 |
||
760 | channel_temp_length dd 0x0 |
||
761 | |||
762 | close_connection dd 0x0 |
||
763 | |||
764 | mail_rp dd 0 |
||
765 | |||
766 | socket dd 0x0 |
||
767 | |||
768 | bgc dd 0x000000 |
||
769 | dd 0x000000 |
||
770 | dd 0x00ff00 |
||
771 | dd 0x0000ff |
||
772 | dd 0x005500 |
||
773 | dd 0xff00ff |
||
774 | dd 0x00ffff |
||
775 | dd 0x770077 |
||
776 | |||
777 | tc dd 0xffffff |
||
778 | dd 0xff00ff |
||
779 | dd 0xffffff |
||
780 | dd 0xffffff |
||
781 | dd 0xffffff |
||
782 | dd 0xffffff |
||
783 | dd 0xffffff |
||
784 | dd 0xffffff |
||
785 | |||
786 | cursor_on_off dd 0x0 |
||
787 | |||
788 | max_windows dd 20 |
||
789 | |||
790 | thread_stack dd 0x9fff0 |
||
791 | thread_nro dd 1 |
||
792 | thread_screen dd I_END+120*80*1 |
||
793 | |||
794 | action_header_blue db 10,'*** ',0 |
||
795 | action_header_red db 10,'*** ',0 |
||
796 | |||
797 | action_header_short db 10,'* ',0 |
||
798 | |||
799 | posx dd 0x0 |
||
800 | incoming_pos dd 0x0 |
||
801 | incoming_string: times 128 db 0 |
||
802 | |||
803 | pos dd 0x0 |
||
804 | |||
805 | text_start dd I_END |
||
806 | irc_data dd 0x0 |
||
807 | print db 0x0 |
||
808 | cmd dd 0x0 |
||
809 | rxs dd 56 |
||
810 | |||
811 | res: db 0,0 |
||
812 | command: times 256 db 0x0 |
||
813 | |||
814 | nick dd 0,0,0 |
||
815 | irc_command dd 0,0 |
||
816 | |||
817 | command_position dd 0x0 |
||
818 | counter dd 0 |
||
819 | send_to_server db 0 |
||
820 | |||
821 | channel_list: times 32*20 db 32 |
||
822 | send_to_channel dd 0x0 |
||
823 | |||
824 | send_string: times 100 db 0x0 |
||
825 | |||
826 | xpos dd 0 |
||
827 | attribute dd 0 |
||
828 | scroll dd 1 |
||
829 | dd 8 |
||
830 | |||
831 | numtext db ' ' |
||
832 | |||
474 | diamond | 833 | labelt db 'Tiny SMTP email server v ',version,0 |
31 | halyavin | 834 | |
835 | I_END:-> |