home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / CPM / QTERM / QT43EFX2.ARK / SEND.Z < prev    next >
Text File  |  1991-05-12  |  2KB  |  85 lines

  1. ; send.z - protocol send code for qterm
  2.  
  3. .var    ipbuf    0x80
  4.  
  5. .extern    send
  6. send:
  7.     call    pmode
  8.     inc    hl
  9.     jr    z,modokk
  10.     cp    'x'
  11.     jr    z,modok        ; k & x are the only legal modes (for now)
  12.  
  13. .extern    moderr
  14. moderr:
  15.     call    ilprt
  16.     db    'Unknown mode\r\n\0'
  17.     ret
  18.  
  19. modokk:
  20.     ld    a,(hl)
  21.     or    0x20
  22.     cp    'f'
  23.     jr    z,arefil
  24.     cp    'l'
  25.     jr    z,arefil
  26.     xor    a
  27. modok:    push    hl        ; save pointer
  28.     push    af        ; and mode character
  29.     call    unbyp        ; step over flags
  30.     call    scnswl        ; parse names
  31.     ld    hl,(fnbspt)
  32.     ld    de,work
  33.     pop    af
  34.     sbc    hl,de
  35.     pop    hl
  36.     jr    nz,arefil    ; any files found?
  37.     call    ilprt        ; tell if not
  38.     db    'No files to send\r\n\0'
  39.     ret
  40. arefil:    ex    af,af'
  41.     ld    a,(xfersz)    ; get proposed transfer size
  42.     ld    e,4
  43. sizlp:    sla    e        ; shift size around in e
  44.     rra
  45.     jr    nc,sizlp    ; loop till we hit a bit
  46.     ld    a,e
  47.     ld    (btxf),a    ; and save it away
  48.     ex    af,af'
  49.     cp    'x'        ; Kermit or Xmodem
  50.     jr    z,sendx
  51.     call    sendk        ; send kermit
  52.     jr    xferdj        ; and unwrap
  53. sendx:    call    xmflgs        ; parse xmodem flags
  54.     call    initx
  55.     call    initsn        ; set up screen
  56.     ld    hl,(mdm7b)
  57. ;    ld    a,h
  58.     ld    a,(ymdmb)
  59.     or    l        ; batch send?
  60.     jr    z,nosb        ; no - just send one file
  61.     ld    a,(longpk)
  62.     ld    (olp),a        ; save 1K packet flag
  63. sblp:    call    srnxt
  64.     jr    z,doneb        ; loop till all names done
  65.     call    xsfile        ; send a file
  66.     jr    nz,xferdj    ; terminate on an error
  67.     ld    a,(olp)
  68.     ld    (longpk),a    ; reset 1K packet flag
  69.     jr    sblp
  70. doneb:    xor    a
  71.     ld    (auxfcb + 2),a    ; set flag for end of transfer
  72.     jr    xjsf
  73. nosb:    call    srnxt        ; single file send - get it
  74.     jr    nz,xjsf        ; send it if it exists
  75.     call    can3        ; kill the far end
  76.     xor    a
  77.     inc    a
  78.     jr    xferdj        ; and return error
  79. xjsf:    call    xsfile        ; send single file or batch close
  80. xferdj:    push    af
  81.     ld    a,(obtxf)
  82.     ld    (btxf),a    ; reset transfer size to whatever
  83.     pop    af
  84.     jp    xferd
  85.