home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / intel8051 / i51spck.asm < prev    next >
Assembly Source File  |  2020-01-01  |  943b  |  46 lines

  1. ; Send a packet with data in GDA of length L, type TYP, sequence N.
  2.  
  3. spack:    mov    dptr,#sndbuf
  4.     mov    a,#1
  5.     movx    @dptr,a        ; MARK field
  6.     inc    dptr
  7.     mov    r3,dpl        ; save chkl start
  8.     mov    a,Len
  9.     add    a,#35        ; len + 3 + 32
  10.     movx    @dptr,a        ; LENgth of packet field
  11.     inc    dptr
  12.     mov    a,N
  13.     tochar            ; add 32
  14.     movx    @dptr,a        ; SEQuence # field
  15.     inc    dptr
  16.     mov    a,Typ
  17.     movx    @dptr,a        ; TYPe field
  18.     inc    dptr
  19.     mov    p2,#high GDA    ; high data string
  20.     mov    r0,#low GDA    ; low data string
  21. L6020:    movx    a,@r0        ; get char from D
  22.     jz    L6030
  23.     movx    @dptr,a        ; put char in sndbuf
  24.     inc    r0
  25.     inc    dptr
  26.     sjmp    L6020
  27. L6030:    clr    a        ; terminate for chkl
  28.     movx    @dptr,a        ; leave room for checksum
  29.     mov    r4,dpl        ; save check pointer
  30.     inc    dptr
  31.     mov    a,EOL
  32.     movx    @dptr,a        ; EOL field
  33.     inc    dptr
  34.     clr    a
  35.     movx    @dptr,a        ; terminate string
  36.     mov    dpl,r3
  37.     call    chkl
  38.     tochar            ; add 32
  39.     mov    dpl,r4        ; get check pointer
  40.     movx    @dptr,a        ; insert checksum
  41. ; send it to remote
  42.     mov    dptr,#sndbuf
  43.     call    sys_print
  44.     ret
  45.  
  46.