Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
31 halyavin 1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2
;;                                                   ;;
3
;;    POP CLIENT for MenuetOS                        ;;
4
;;    - Modified from IRC client                     ;;
5
;;                                                   ;;
6
;;    License: GPL / See file COPYING for details    ;;
7
;;    Copyright 2002 (c) Ville Turjanmaa             ;;
8
;;                                                   ;;
9
;;    Compile with FASM for Menuet                   ;;
10
;;                                                   ;;
11
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
12
 
13
include 'lang.inc'
14
version equ '0.1'
15
 
16
use32
17
 
18
                org     0x0
19
 
20
                db      'MENUET01'              ; 8 byte id
21
                dd      0x01                    ; required os
22
                dd      START                   ; program start
23
                dd      I_END                   ; program image size
24
                dd      0x200000                ; required amount of memory
25
                dd      0xffff0
26
                dd      0,0
27
 
28
START:                          ; start of execution
29
 
30
    mov  [file_start],0x100000
31
 
32
    mov  eax,58
33
    mov  ebx,filel
34
    int  0x40
35
 
36
    cmp  eax,0
37
    jne  notfound
38
    add  [file_start],ebx
39
  notfound:
40
 
41
    mov  edi,I_END
42
    mov  ecx,60*120
43
    mov  eax,32
44
    cld
45
    rep  stosb
46
 
47
    mov  eax,[rxs]
48
    imul eax,11
49
    mov  [pos],eax
50
 
51
    mov  ebp,0
52
    mov  edx,I_END
53
    call draw_window            ; at first, draw the window
54
 
55
still:
56
 
57
    mov  eax,5
58
    mov  ebx,1
59
    int  0x40
60
 
61
    mov  eax,11                 ; wait here for event
62
    int  0x40
63
 
64
    cmp  eax,1                  ; redraw
65
    je   redraw
66
    cmp  eax,2                  ; key
67
    je   key
68
    cmp  eax,3                  ; button
69
    je   button
70
 
71
    cmp  [I_END+120*60],byte 1
72
    jne  no_main_update
73
    mov  [I_END+120*60],byte 0
74
    mov  edx,I_END
75
    call draw_server_data
76
  no_main_update:
77
 
78
    cmp  [server_active],0
79
    je   noread
80
    call read_incoming_data
81
  noread:
82
 
83
    call print_status
84
 
85
    cmp  [status],4
86
    je   send_request
87
 
88
    jmp  still
89
 
90
 
91
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
92
;;
93
;;  Save the fetched mails
94
;;
95
 
96
 
97
save_file:
98
 
99
   pusha
100
 
101
   mov  edi,[file_start]
102
 
103
   mov  eax,[file_start]
104
   sub  eax,0x100000
105
   mov  [files+8],eax
106
 
107
   mov  eax,58
108
   mov  ebx,files
109
   int  0x40
110
 
111
   popa
112
 
113
   ret
114
 
115
 
116
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
117
;;
118
;;  Send user id/passwd/mailrq
119
;;
120
 
121
 
122
send_request:
123
 
124
    inc  [mcounter]
125
 
126
    cmp  [mcounter],1000
127
    jbe  no_send
128
 
129
    mov  eax,[ccounter]
130
    imul  eax,32
131
    add  eax,getmail
132
    mov  esi,eax
133
 
134
    inc  [ccounter]
135
 
136
    mov  edx,32
137
 
138
    cmp  [ccounter],1
139
    jne  no1
140
    mov  edx,5+2
141
    add  edx,[l2]
142
  no1:
143
 
144
    cmp  [ccounter],2
145
    jne  no2
146
    mov  edx,5+2
147
    add  edx,[l3]
148
  no2:
149
 
150
    mov  eax,53
151
    mov  ebx,7
152
    mov  ecx,[socket]
153
    int  0x40
154
    mov  [mcounter],0
155
 
156
    cmp  [esi],dword 'quit'
157
    je   close_fetch
158
 
159
 
160
  no_send:
161
 
162
    jmp  still
163
 
164
 
165
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
166
;;
167
;;  Close connection to server
168
;;
169
 
170
 
171
close_fetch:
172
 
173
    mov  eax,53
174
    mov  ebx,7
175
    mov  ecx,[socket]
176
    mov  edx,14
177
    mov  esi,quitc
178
    int  0x40
179
    mov  [mcounter],0
180
 
181
    mov  eax,5
182
    mov  ebx,150
183
    int  0x40
184
 
185
    call read_incoming_data
186
 
187
    mov  eax,53
188
    mov  ebx,8
189
    mov  ecx,[socket]
190
    int  0x40
191
 
192
    mov  eax,5
193
    mov  ebx,2
194
    int  0x40
195
 
196
    mov  eax,53
197
    mov  ebx,8
198
    mov  ecx,[socket]
199
    int  0x40
200
 
201
    mov  [server_active],0
202
 
203
    jmp  still
204
 
205
 
206
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
207
;;
208
;;  User input processing
209
;;
210
 
211
 
212
redraw:                         ; redraw
213
 
214
    call draw_window
215
    jmp  still
216
 
217
 
218
key:
219
 
220
    mov  eax,2
221
    int  0x40
222
 
223
    jmp  still
224
 
225
 
226
button:                         ; button
227
 
228
    mov  eax,17                 ; get id
229
    int  0x40
230
 
231
    cmp  ah,60
232
    jne  no_open
233
    mov  eax,19
234
    mov  ebx,tp
235
    mov  ecx,pr
236
    int  0x40
237
    jmp  still
238
  no_open:
239
 
240
    cmp  ah,1                   ; close program
241
    jne  noclose
242
    mov  eax,-1
243
    int  0x40
244
  noclose:
245
 
246
    cmp  ah,51
247
    je   read_string
248
    cmp  ah,52
249
    je   read_string
250
    cmp  ah,53
251
    je   read_string
252
 
253
    call socket_commands
254
 
255
    jmp  still
256
 
257
 
258
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
259
;;
260
;;  Socket open & close
261
;;
262
 
263
socket_commands:
264
 
265
    cmp  ah,22       ; open socket
266
    jnz  tst3
267
 
268
    mov  [server_active],1
269
 
270
    mov  [mcounter],900
271
    mov  [ccounter],0
272
 
273
    mov  eax,3
274
    int  0x40
275
 
276
    mov  eax,3
277
    int  0x40
278
    mov  ecx,eax
279
    and  ecx,0xffff
280
 
281
    mov  eax,53
282
    mov  ebx,5
283
    mov  edx,110
284
    mov  esi,dword [ip]
285
    mov  edi,1
286
    int  0x40
287
    mov  [socket], eax
288
 
289
    ret
290
  tst3:
291
 
292
 
293
    cmp  ah,24     ; close socket
294
    jnz  no_24
295
    mov  eax,53
296
    mov  ebx,8
297
    mov  ecx,[socket]
298
    int  0x40
299
    mov  [header_sent],0
300
    mov  [mail_rp],0
301
    mov  [server_active],0
302
 
303
    ret
304
  no_24:
305
 
306
    ret
307
 
308
 
309
 
310
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
311
;;
312
;;  Display connection status
313
;;
314
 
315
old_status dd 0x0
316
 
317
print_status:
318
 
319
    pusha
320
 
321
    mov  eax,53
322
    mov  ebx,6
323
    mov  ecx,[socket]
324
    int  0x40
325
 
326
    mov  [status],eax
327
 
328
    cmp  eax,[old_status]
329
    je   nopr
330
 
331
    mov  [old_status],eax
332
 
333
    push eax
334
 
335
    mov  eax,13
336
    mov  ebx,200*65536+30
337
    mov  ecx,160*65536+10
338
    mov  edx,0xffffff
339
    int  0x40
340
 
341
    pop  ecx
342
 
343
    cmp  [server_active],1
344
    jne  nopr
345
 
346
    mov  eax,47
347
    mov  ebx,3*65536
348
    mov  edx,200*65536+160
349
    mov  esi,0x000000
350
    int  0x40
351
 
352
  nopr:
353
 
354
    popa
355
 
356
    ret
357
 
358
 
359
 
360
 
361
 
362
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
363
;;
364
;;  Read data from server
365
;;
366
 
367
 
368
read_incoming_data:
369
 
370
    pusha
371
 
372
  read_new_byte:
373
 
374
    call read_incoming_byte
375
    cmp  ecx,-1
376
    je   no_data_in_buffer
377
 
378
    mov  eax,[file_start]
379
    mov  [eax],bl
380
    inc  [file_start]
381
 
382
    cmp  bl,10
383
    jne  no_start_command
384
    mov  [cmd],1
385
  no_start_command:
386
 
387
    cmp  bl,13
388
    jne  no_end_command
389
    mov  eax,[cmd]
390
    mov  [eax+command-2],byte 0
391
    call save_file
392
    call analyze_data
393
    mov  edi,command
394
    mov  ecx,250
395
    mov  eax,0
396
    cld
397
    rep  stosb
398
    mov  [cmd],0
399
  no_end_command:
400
 
401
    mov  eax,[cmd]
402
    cmp  eax,250
403
    jge  still
404
 
405
    mov  [eax+command-2],bl
406
    inc  [cmd]
407
 
408
    jmp  read_new_byte
409
 
410
  no_data_in_buffer:
411
 
412
    popa
413
 
414
    ret
415
 
416
 
417
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
418
;;
419
;;  Read user input for ip/user/passwd
420
;;
421
 
422
 
423
read_string:
424
 
425
    shr  eax,8
426
    sub  eax,51
427
    mov  ebx,eax
428
    imul eax,12
429
    add  eax,181
430
 
431
    mov  [len],ebx
432
    shl  [len],2
433
    add  [len],l1
434
 
435
    imul ebx,50
436
    add  ebx,input1
437
 
438
    mov  [addr],ebx
439
    mov  [ya],eax
440
 
441
    mov  edi,[addr]
442
    mov  eax,0
443
    mov  ecx,30
444
    cld
445
    rep  stosb
446
 
447
    call print_input_text
448
 
449
    mov  edi,[addr]
450
 
451
  f11:
452
    mov  eax,10
453
    int  0x40
454
    cmp  eax,2
455
    jne  read_done
456
    mov  eax,2
457
    int  0x40
458
    shr  eax,8
459
    cmp  eax,13
460
    je   read_done
461
    cmp  eax,8
462
    jnz  nobsl
463
    cmp  edi,[addr]
464
    jz   f11
465
    sub  edi,1
466
    mov  [edi],byte 32
467
    call print_text
468
    jmp  f11
469
  nobsl:
470
    mov  [edi],al
471
 
472
    call print_input_text
473
 
474
    add  edi,1
475
    mov  esi,[addr]
476
    add  esi,30
477
    cmp  esi,edi
478
    jnz  f11
479
 
480
  read_done:
481
 
482
    push edi
483
 
484
    mov  ecx,40
485
    mov  eax,32
486
    cld
487
    rep  stosb
488
 
489
    call print_input_text
490
 
491
    pop  edi
492
    sub  edi,[addr]
493
    mov  eax,[len]
494
    mov  [eax],edi
495
 
496
    cmp  [len],l1
497
    jne  noip
498
    mov  esi,input1
499
    mov  edi,ip_text+15
500
    mov  ecx,16
501
    cld
502
    rep  movsb
503
    call ip_set
504
   noip:
505
 
506
    cmp  [len],l2
507
    jne  nol2
508
    mov  esi,input2
509
    mov  edi,l2_text+15
510
    mov  ecx,22
511
    cld
512
    rep  movsb
513
    mov  esi,input2
514
    mov  edi,getmail+5
515
    mov  ecx,[l2]
516
    cld
517
    rep  movsb
518
    mov  al,13
519
    stosb
520
    mov  al,10
521
    stosb
522
   nol2:
523
 
524
    cmp  [len],l3
525
    jne  nol3
526
    mov  esi,input3
527
    mov  edi,getmail+32+5
528
    mov  ecx,[l3]
529
    cld
530
    rep  movsb
531
    mov  al,13
532
    stosb
533
    mov  al,10
534
    stosb
535
   nol3:
536
 
537
    call draw_window
538
 
539
    jmp  still
540
 
541
 
542
 
543
print_input_text:
544
 
545
    pusha
546
 
547
    mov  eax,13
548
    mov  ebx,95*65536+23*6
549
    mov  ecx,[ya]
550
    shl  ecx,16
551
    mov  cx,9
552
    mov  edx,0xffffff
553
    int  0x40
554
 
555
    cmp  [len],l3
556
    je   noprt
557
 
558
    mov  eax,4
559
    mov  edx,[addr]
560
    mov  ebx,95*65536
561
    add  ebx,[ya]
562
    mov  ecx,0x000000
563
    mov  esi,23
564
    int  0x40
565
 
566
  noprt:
567
 
568
    popa
569
    ret
570
 
571
 
572
ip_set:
573
 
574
    mov   esi,input1-1
575
    mov   edi,ip
576
    xor   eax,eax
577
   ip1:
578
    inc   esi
579
    cmp   [esi],byte '0'
580
    jb    ip2
581
    cmp   [esi],byte '9'
582
    jg    ip2
583
    imul  eax,10
584
    movzx ebx,byte [esi]
585
    sub   ebx,48
586
    add   eax,ebx
587
    jmp   ip1
588
   ip2:
589
    mov   [edi],al
590
    xor   eax,eax
591
    inc   edi
592
    cmp   edi,ip+3
593
    jbe   ip1
594
    ret
595
   no_read_ip:
596
 
597
    ret
598
 
599
 
600
analyze_data:
601
 
602
    pusha
603
 
604
    mov  [text_start],I_END
605
    mov  ecx,[rxs]
606
    imul ecx,11
607
    mov  [pos],ecx
608
 
609
    mov  bl,13
610
    call print_character
611
    mov  bl,10
612
    call print_character
613
 
614
    cmp  [cmd],2
615
    jbe  nott
616
    mov  ecx,[cmd]
617
    sub  ecx,2
618
    mov  esi,command+0
619
  newcmdc:
620
    mov  bl,[esi]
621
    call print_character
622
    inc  esi
623
    loop newcmdc
624
 
625
   nott:
626
 
627
    mov   edx,I_END
628
    call  draw_server_data
629
 
630
  cmd_len_ok:
631
 
632
    cmp  [command],dword '-ERR'
633
    je   close_fetch
634
 
635
    cmp  [command],word '+O'
636
    jne  nook
637
    mov  [mcounter],990
638
  nook:
639
 
640
    popa
641
 
642
    ret
643
 
644
 
645
 
646
draw_data:
647
 
648
    push eax
649
 
650
    add  eax,[text_start]
651
    mov  [eax],bl
652
 
653
    pop  eax
654
    ret
655
 
656
 
657
 
658
print_text:
659
 
660
    pusha
661
 
662
    mov  ecx,command-2
663
    add  ecx,[cmd]
664
 
665
  ptr2:
666
    mov  bl,[eax]
667
    cmp  bl,dl
668
    je   ptr_ret
669
    cmp  bl,0
670
    je   ptr_ret
671
    call print_character
672
    inc  eax
673
    cmp  eax,ecx
674
    jbe  ptr2
675
 
676
  ptr_ret:
677
 
678
    mov  eax,[text_start]
679
    mov  [eax+120*60],byte 1
680
 
681
    popa
682
    ret
683
 
684
 
685
 
686
print_character:
687
 
688
    pusha
689
 
690
    cmp  bl,13     ; line beginning
691
    jne  nobol
692
    mov  ecx,[pos]
693
    add  ecx,1
694
  boll1:
695
    sub  ecx,1
696
    mov  eax,ecx
697
    xor  edx,edx
698
    mov  ebx,[rxs]
699
    div  ebx
700
    cmp  edx,0
701
    jne  boll1
702
    mov  [pos],ecx
703
    jmp  newdata
704
  nobol:
705
 
706
    cmp  bl,10     ; line down
707
    jne  nolf
708
   addx1:
709
    add  [pos],dword 1
710
    mov  eax,[pos]
711
    xor  edx,edx
712
    mov  ecx,[rxs]
713
    div  ecx
714
    cmp  edx,0
715
    jnz  addx1
716
    mov  eax,[pos]
717
    jmp  cm1
718
  nolf:
719
  no_lf_ret:
720
 
721
 
722
    cmp  bl,15    ; character
723
    jbe  newdata
724
 
725
    mov  eax,[irc_data]
726
    shl  eax,8
727
    mov  al,bl
728
    mov  [irc_data],eax
729
 
730
    mov  eax,[pos]
731
    call draw_data
732
 
733
    mov  eax,[pos]
734
    add  eax,1
735
  cm1:
736
    mov  ebx,[scroll+4]
737
    imul ebx,[rxs]
738
    cmp  eax,ebx
739
    jb   noeaxz
740
 
741
    mov  esi,[text_start]
742
    add  esi,[rxs]
743
 
744
    mov  edi,[text_start]
745
    mov  ecx,ebx
746
    cld
747
    rep  movsb
748
 
749
    mov  esi,[text_start]
750
    mov  ecx,[rxs]
751
    imul ecx,61
752
    add  esi,ecx
753
 
754
    mov  edi,[text_start]
755
    mov  ecx,[rxs]
756
    imul ecx,60
757
    add  edi,ecx
758
    mov  ecx,ebx
759
    cld
760
    rep  movsb
761
 
762
    mov  eax,ebx
763
    sub  eax,[rxs]
764
  noeaxz:
765
    mov  [pos],eax
766
 
767
  newdata:
768
 
769
    mov  eax,[text_start]
770
    mov  [eax+120*60],byte 1
771
 
772
    popa
773
    ret
774
 
775
 
776
 
777
read_incoming_byte:
778
 
779
    mov  eax, 53
780
    mov  ebx, 2
781
    mov  ecx, [socket]
782
    int  0x40
783
 
784
    mov  ecx,-1
785
 
786
    cmp  eax,0
787
    je   no_more_data
788
 
789
    mov  eax, 53
790
    mov  ebx, 3
791
    mov  ecx, [socket]
792
    int  0x40
793
 
794
    mov  ecx,0
795
 
796
  no_more_data:
797
 
798
    ret
799
 
800
 
801
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
802
;;
803
;;  Window definitions
804
;;
805
 
806
 
807
 
808
draw_window:
809
 
810
    pusha
811
 
812
    mov  eax,12
813
    mov  ebx,1
814
    int  0x40
815
 
816
    mov  eax,0                     ; draw window
817
    mov  ebx,5*65536+435
818
    mov  ecx,5*65536+232
819
    mov  edx,[wcolor]
820
    add  edx,0x03ffffff
821
    mov  esi,0x80555599
822
    mov  edi,0x00ffffff
823
    int  0x40
824
 
825
    mov  [old_status],300
826
 
827
    mov  eax,4                     ; label
828
    mov  ebx,9*65536+8
829
    mov  ecx,0x10ffffff
830
    mov  edx,labelt
831
    mov  esi,labellen-labelt
832
    int  0x40
833
 
834
    mov  eax,8                     ; button: open socket
835
    mov  ebx,23*65536+22
836
    mov  ecx,155*65536+10
837
    mov  edx,22
838
    mov  esi,0x44cc44
839
    int  0x40
840
 
841
    mov  eax,8                     ; button: close socket
842
    mov  ebx,295*65536+22
843
    mov  ecx,155*65536+10
844
    mov  edx,24
845
    mov  esi,0xcc4444
846
    int  0x40
847
 
848
    mov  eax,8                     ; button: text entries
849
    mov  ebx,243*65536+8
850
    mov  ecx,180*65536+8
851
    mov  edx,51
852
    mov  esi,0x4488dd
853
  newi:
854
    int  0x40
855
    inc  edx
856
    add  ecx,12*65536
857
    cmp  edx,53
858
    jbe  newi
859
 
860
    mov  eax,8                     ; open inbox
861
    mov  ebx,295*65536+102
862
    mov  ecx,190*65536+14
863
    mov  edx,60
864
    mov  esi,0x5577dd
865
    int  0x40
866
 
867
    mov  eax,38                    ; line
868
    mov  ebx,5*65536+430
869
    mov  ecx,114*65536+114
870
    mov  edx,0x000000
871
    int  0x40
872
 
873
    mov  ebx,5*65536+133          ; info text
874
    mov  ecx,0x000000
875
    mov  edx,text
876
    mov  esi,70
877
  newline:
878
    mov  eax,4
879
    int  0x40
880
    add  ebx,12
881
    add  edx,70
882
    cmp  [edx],byte 'x'
883
    jne  newline
884
 
885
    mov  edx,I_END                ; text from server
886
    call draw_server_data
887
 
888
    mov  eax,12
889
    mov  ebx,2
890
    int  0x40
891
 
892
    popa
893
 
894
    ret
895
 
896
 
897
draw_server_data:
898
 
899
    pusha
900
 
901
    mov   eax,4
902
    mov   ebx,10*65536+26
903
    mov   ecx,8
904
    mov   esi,[rxs]
905
  dct:
906
    pusha
907
    mov   cx,bx
908
    shl   ecx,16
909
    mov   cx,9
910
    mov   eax,13
911
    mov   ebx,10*65536
912
    mov   bx,word [rxs]
913
    imul  bx,6
914
    mov   edx,0xffffff
915
    int   0x40
916
    popa
917
    push  ecx
918
    mov   eax,4
919
    mov   ecx,0
920
    int   0x40
921
    add   edx,[rxs]
922
    add   ebx,10
923
    pop   ecx
924
    loop  dct
925
 
926
    popa
927
    ret
928
 
929
 
930
 
931
text:
932
 
933
db '   Incoming mails are written to /rd/1/popc.txt                       '
934
db '                                                                      '
935
db '        Check for mail.                               Force close     '
936
db '                                                                      '
937
ip_text:
938
db '   Server IP : 192.168.1.200            <                             '
939
l2_text:
940
db '   User      :                          <         Open popc.txt       '
941
 l3_text:
942
db '   Password  : (not shown)              <                             '
943
 
944
db 'x <- END MARKER, DONT DELETE            '
945
 
946
file_start      dd      0x100000
947
 
948
files:
949
       dd  1,0,0,0x100000,0xd0000
950
       db  '/rd/1/popc.txt',0
951
filel:
952
       dd  0,0,10000/512,0x100000,0xd0000
953
       db  '/rd/1/popc.txt',0
954
 
955
ip     db 192,168,1,200
956
 
957
socket  dd  0x0
958
 
959
posx             dd  0x0
960
incoming_pos     dd  0x0
961
incoming_string: times 128 db 0
962
pos          dd  0x0
963
 
964
text_start   dd  I_END
965
print        db  0x0
966
cmd          dd  0x0
967
rxs          dd  66
968
 
969
res:         db  0,0
970
command:     times  256  db 0x0
971
 
972
command_position  dd 0
973
counter           dd 0
974
 
975
numtext      db  '                     '
976
wcolor       dd  0x000000
977
labelt       db  'POP client v ',version
978
labellen:
979
scroll:      dd 1,8
980
 
981
tp: db 'TINYPAD    '
982
pr: db 'POPC    TXT',0
983
 
984
 
985
getmail:
986
       db  'user xyz                      ',13,10
987
       db  'pass xyz                      ',13,10
988
       db  'retr 1                        ',13,10
989
       db  'retr 2                        ',13,10
990
       db  'retr 3                        ',13,10
991
       db  'retr 4                        ',13,10
992
       db  'retr 5                        ',13,10
993
       db  'retr 6                        ',13,10
994
       db  'retr 7                        ',13,10
995
       db  'retr 8                        ',13,10
996
       db  'retr 9                        ',13,10
997
 
998
quitc:
999
       db  'quit        ',13,10
1000
 
1001
mcounter dd 900
1002
ccounter dd 0
1003
 
1004
ld   db 13,10
1005
 
1006
server_active db 0
1007
 
1008
header_sent db 0
1009
 
1010
close_connection   dd 0x0
1011
 
1012
mail_rp      dd  0
1013
 
1014
irc_data   dd  0x0
1015
addr       dd  0x0
1016
ya         dd  0x0
1017
len        dd  0x0
1018
 
1019
input1:  times 50 db 32
1020
input2:  times 50 db 32
1021
input3:  times 50 db 32
1022
 
1023
l1 dd 0
1024
l2 dd 3
1025
l3 dd 3
1026
 
1027
status  dd  0x0
1028
 
1029
I_END: