⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 popc.asm

📁 Application sources:A084.ZIP
💻 ASM
📖 第 1 页 / 共 2 页
字号:
    mov  al,10
    stosb
   nol2:

    cmp  [len],l3
    jne  nol3
    mov  esi,input3
    mov  edi,getmail+32+5
    mov  ecx,[l3]
    cld
    rep  movsb
    mov  al,13
    stosb
    mov  al,10
    stosb
   nol3:

    call draw_window

    jmp  still



print_input_text:

    pusha

    mov  eax,13
    mov  ebx,95*65536+23*6
    mov  ecx,[ya]
    shl  ecx,16
    mov  cx,9
    mov  edx,0xffffff
    int  0x40

    cmp  [len],l3
    je   noprt

    mov  eax,4
    mov  edx,[addr]
    mov  ebx,95*65536
    add  ebx,[ya]
    mov  ecx,0x000000
    mov  esi,23
    int  0x40

  noprt:

    popa
    ret


ip_set:

    mov   esi,input1-1
    mov   edi,ip
    xor   eax,eax
   ip1:
    inc   esi
    cmp   [esi],byte '0'
    jb    ip2
    cmp   [esi],byte '9'
    jg    ip2
    imul  eax,10
    movzx ebx,byte [esi]
    sub   ebx,48
    add   eax,ebx
    jmp   ip1
   ip2:
    mov   [edi],al
    xor   eax,eax
    inc   edi
    cmp   edi,ip+3
    jbe   ip1
    ret
   no_read_ip:

    ret


analyze_data:

    pusha

    mov  [text_start],I_END
    mov  ecx,[rxs]
    imul ecx,11
    mov  [pos],ecx

    mov  bl,13
    call print_character
    mov  bl,10
    call print_character

    cmp  [cmd],2
    jbe  nott
    mov  ecx,[cmd]
    sub  ecx,2
    mov  esi,command+0
  newcmdc:
    mov  bl,[esi]
    call print_character
    inc  esi
    loop newcmdc

   nott:

    mov   edx,I_END
    call  draw_server_data

  cmd_len_ok:

    cmp  [command],dword '-ERR'
    je   close_fetch

    cmp  [command],word '+O'
    jne  nook
    mov  [mcounter],990
  nook:

    popa

    ret



draw_data:

    push eax

    add  eax,[text_start]
    mov  [eax],bl

    pop  eax
    ret



print_text:

    pusha

    mov  ecx,command-2
    add  ecx,[cmd]

  ptr2:
    mov  bl,[eax]
    cmp  bl,dl
    je   ptr_ret
    cmp  bl,0
    je   ptr_ret
    call print_character
    inc  eax
    cmp  eax,ecx
    jbe  ptr2

  ptr_ret:

    mov  eax,[text_start]
    mov  [eax+120*60],byte 1

    popa
    ret



print_character:

    pusha

    cmp  bl,13     ; line beginning
    jne  nobol
    mov  ecx,[pos]
    add  ecx,1
  boll1:
    sub  ecx,1
    mov  eax,ecx
    xor  edx,edx
    mov  ebx,[rxs]
    div  ebx
    cmp  edx,0
    jne  boll1
    mov  [pos],ecx
    jmp  newdata
  nobol:

    cmp  bl,10     ; line down
    jne  nolf
   addx1:
    add  [pos],dword 1
    mov  eax,[pos]
    xor  edx,edx
    mov  ecx,[rxs]
    div  ecx
    cmp  edx,0
    jnz  addx1
    mov  eax,[pos]
    jmp  cm1
  nolf:
  no_lf_ret:


    cmp  bl,15    ; character
    jbe  newdata

    mov  eax,[irc_data]
    shl  eax,8
    mov  al,bl
    mov  [irc_data],eax

    mov  eax,[pos]
    call draw_data

    mov  eax,[pos]
    add  eax,1
  cm1:
    mov  ebx,[scroll+4]
    imul ebx,[rxs]
    cmp  eax,ebx
    jb   noeaxz

    mov  esi,[text_start]
    add  esi,[rxs]

    mov  edi,[text_start]
    mov  ecx,ebx
    cld
    rep  movsb

    mov  esi,[text_start]
    mov  ecx,[rxs]
    imul ecx,61
    add  esi,ecx

    mov  edi,[text_start]
    mov  ecx,[rxs]
    imul ecx,60
    add  edi,ecx
    mov  ecx,ebx
    cld
    rep  movsb

    mov  eax,ebx
    sub  eax,[rxs]
  noeaxz:
    mov  [pos],eax

  newdata:

    mov  eax,[text_start]
    mov  [eax+120*60],byte 1

    popa
    ret



read_incoming_byte:

    mov  eax, 53
    mov  ebx, 2
    mov  ecx, [socket]
    int  0x40

    mov  ecx,-1

    cmp  eax,0
    je   no_more_data

    mov  eax, 53
    mov  ebx, 3
    mov  ecx, [socket]
    int  0x40

    mov  ecx,0

  no_more_data:

    ret


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;;  Window definitions
;;



draw_window:

    pusha

    mov  eax,12
    mov  ebx,1
    int  0x40

    mov  eax,0                     ; draw window
    mov  ebx,5*65536+435
    mov  ecx,5*65536+232
    mov  edx,[wcolor]
    add  edx,0x03ffffff
    mov  esi,0x80555599
    mov  edi,0x00ffffff
    int  0x40

    mov  [old_status],300

    mov  eax,4                     ; label
    mov  ebx,9*65536+8
    mov  ecx,0x10ffffff
    mov  edx,labelt
    mov  esi,labellen-labelt
    int  0x40

    mov  eax,8                     ; button: open socket
    mov  ebx,23*65536+22
    mov  ecx,155*65536+10
    mov  edx,22
    mov  esi,0x44cc44
    int  0x40

    mov  eax,8                     ; button: close socket
    mov  ebx,295*65536+22
    mov  ecx,155*65536+10
    mov  edx,24
    mov  esi,0xcc4444
    int  0x40

    mov  eax,8                     ; button: text entries
    mov  ebx,243*65536+8
    mov  ecx,180*65536+8
    mov  edx,51
    mov  esi,0x4488dd
  newi:
    int  0x40
    inc  edx
    add  ecx,12*65536
    cmp  edx,53
    jbe  newi

    mov  eax,8                     ; open inbox
    mov  ebx,295*65536+102
    mov  ecx,190*65536+14
    mov  edx,60
    mov  esi,0x5577dd
    int  0x40

    mov  eax,38                    ; line
    mov  ebx,5*65536+430
    mov  ecx,114*65536+114
    mov  edx,0x000000
    int  0x40

    mov  ebx,5*65536+133          ; info text
    mov  ecx,0x000000
    mov  edx,text
    mov  esi,70
  newline:
    mov  eax,4
    int  0x40
    add  ebx,12
    add  edx,70
    cmp  [edx],byte 'x'
    jne  newline

    mov  edx,I_END                ; text from server
    call draw_server_data

    mov  eax,12
    mov  ebx,2
    int  0x40

    popa

    ret


draw_server_data:

    pusha

    mov   eax,4
    mov   ebx,10*65536+26
    mov   ecx,8
    mov   esi,[rxs]
  dct:
    pusha
    mov   cx,bx
    shl   ecx,16
    mov   cx,9
    mov   eax,13
    mov   ebx,10*65536
    mov   bx,word [rxs]
    imul  bx,6
    mov   edx,0xffffff
    int   0x40
    popa
    push  ecx
    mov   eax,4
    mov   ecx,0
    int   0x40
    add   edx,[rxs]
    add   ebx,10
    pop   ecx
    loop  dct

    popa
    ret



text:

db '   Incoming mails are written to /rd/1/popc.txt                       '
db '                                                                      '
db '        Check for mail.                               Force close     '
db '                                                                      '
ip_text:
db '   Server IP : 192.168.1.200            <                             '
l2_text:
db '   User      :                          <         Open popc.txt       '
 l3_text:
db '   Password  : (not shown)              <                             '

db 'x <- END MARKER, DONT DELETE            '

file_start      dd      0x100000

files:
       dd  1,0,0,0x100000,0xd0000
       db  '/rd/1/popc.txt',0
filel:
       dd  0,0,10000/512,0x100000,0xd0000
       db  '/rd/1/popc.txt',0

ip     db 192,168,1,200

socket  dd  0x0

posx             dd  0x0
incoming_pos     dd  0x0
incoming_string: times 128 db 0
pos          dd  0x0

text_start   dd  I_END
print        db  0x0
cmd          dd  0x0
rxs          dd  66

res:         db  0,0
command:     times  256  db 0x0

command_position  dd 0
counter           dd 0

numtext      db  '                     '
wcolor       dd  0x000000
labelt       db  'POP client v ',version
labellen:
scroll:      dd 1,8

tp: db 'TINYPAD    '
pr: db 'POPC    TXT',0


getmail:
       db  'user xyz                      ',13,10
       db  'pass xyz                      ',13,10
       db  'retr 1                        ',13,10
       db  'retr 2                        ',13,10
       db  'retr 3                        ',13,10
       db  'retr 4                        ',13,10
       db  'retr 5                        ',13,10
       db  'retr 6                        ',13,10
       db  'retr 7                        ',13,10
       db  'retr 8                        ',13,10
       db  'retr 9                        ',13,10

quitc:
       db  'quit        ',13,10

mcounter dd 900
ccounter dd 0

ld   db 13,10

server_active db 0

header_sent db 0

close_connection   dd 0x0

mail_rp      dd  0

irc_data   dd  0x0
addr       dd  0x0
ya         dd  0x0
len        dd  0x0

input1:  times 50 db 32
input2:  times 50 db 32
input3:  times 50 db 32

l1 dd 0
l2 dd 3
l3 dd 3

status  dd  0x0

I_END:






⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -