Subversion Repositories Kolibri OS

Rev

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

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