home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / magazine / progjour / 1990 / 05 / wnet.asm < prev    next >
Assembly Source File  |  1990-07-06  |  2KB  |  94 lines

  1.     title    wnet - window network interface (simulated)
  2.     include    window.inc
  3.     include    asm.inc
  4.  
  5. ; (c) 1990 Soft Advances, all rights reserved.
  6.  
  7.     .data?
  8. request_pointer        dd    ?
  9. request_bc        dw    ?
  10.  
  11. reply_pointer        dd    ?
  12. reply_bc        dw    ?
  13.  
  14.     .code
  15.     extn    poll_server
  16.     public    receive_window_reply,receive_window_request
  17.     public    transmit_window_reply,transmit_window_request
  18.  
  19.  
  20. ;;    receive window reply
  21. ;
  22. ;    entry    DS:SI    reply packet pointer
  23. ;        CX    byte count
  24. ;    uses    AX
  25. ;
  26. receive_window_reply proc
  27.     pushm    cx,di,si,ds,es
  28.     mov    ax,ds
  29.     mov    es,ax
  30.     mov    di,si
  31.     lds    si,reply_pointer[bp]
  32.     rep    movsb
  33.     mov    reply_bc[bp],0
  34.     popm    es,ds,si,di,cx
  35.     clc
  36.     ret
  37. receive_window_reply endp
  38.  
  39.  
  40. ;;    receive window request
  41. ;
  42. ;    entry    DS:SI    request packet pointer
  43. ;        CX    byte count
  44. ;    exit    Cf    if byte count too big
  45. ;    uses    AX
  46. ;
  47. receive_window_request proc
  48.     pushm    cx,di,si,ds,es
  49.     mov    ax,ds
  50.     mov    es,ax
  51.     mov    di,si
  52.     lds    si,request_pointer[bp]
  53.     mov    ax,request_bc[bp]
  54.     sub    ax,cx
  55.     jc    rwr1            ; if requested byte count too big
  56.     mov    request_bc[bp],ax
  57.     add    wptr request_pointer[bp],cx
  58.     rep    movsb
  59. rwr1:    popm    es,ds,si,di,cx
  60.     ret
  61. receive_window_request endp
  62.  
  63.  
  64. ;;    transmit window reply
  65. ;
  66. ;    entry    DS:SI    packet pointer
  67. ;        CX    byte count
  68. ;    uses    AX
  69. ;
  70. transmit_window_reply proc
  71.     mov    wptr reply_pointer[bp],si
  72.     mov    wptr reply_pointer[bp+2],ds
  73.     mov    reply_bc[bp],cx
  74.     ret
  75. transmit_window_reply endp
  76.  
  77.  
  78. ;;    transmit window request
  79. ;
  80. ;    entry    DS:SI    packet pointer
  81. ;        CX    packet byte count
  82. ;    uses    AX
  83. ;
  84. transmit_window_request proc
  85.     mov    wptr request_pointer[bp],si
  86.     mov    wptr request_pointer[bp+2],ds
  87.     mov    request_bc[bp],cx
  88.     call    poll_server
  89.     ret
  90. transmit_window_request endp
  91.  
  92.  
  93.     end
  94.