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 / QT43SRC.LBR / RECV.ZY / RECV.ZY
Text File  |  2000-06-30  |  2KB  |  77 lines

  1. ; recv.z - protocol receive code for qterm
  2.  
  3. .incl    "c:vars"
  4.  
  5. .extern    recv
  6. recv:
  7.     call    pmode
  8.     jr    z,modok
  9.     cp    'x'
  10.     jp    nz,moderr    ; k & x are the only legal modes (for now)
  11. modok:    inc    hl
  12.     push    hl        ; save pointer
  13.     push    af        ; and mode character
  14.     call    unbyp        ; step over flags
  15.     call    scnfcb        ; parse name (or drive only for batch)
  16.     ld    hl,(fcb)
  17.     ld    (newusr),hl    ; save receive drive and user
  18.     pop    bc
  19.     pop    hl
  20.     jp    z,nowcp
  21.     push    bc
  22.     push    hl
  23.     call    reset        ; do a reset
  24.     pop    hl
  25.     pop    bc
  26.     ld    a,'k'
  27.     cp    b        ; Kermit or Xmodem
  28.     jr    nz,recvx
  29.     call    recvk        ; receive kermit
  30.     jr    xferd        ; and unwrap
  31. recvx:    call    xmflgs        ; parse xmodem flags
  32.     call    initx
  33.     call    initrc        ; set up screen
  34. dorecv:    call    xrfile        ; receive a file
  35.     or    a
  36.     jr    nz,dorecv    ; loop if more to come
  37.     ld    a,(errorf)
  38.     or    a        ; flag if there was an error or not
  39.  
  40. .extern    xferd            ; finish transfer - print completion message
  41. xferd:
  42.     push    af        ; save z flag
  43.     ld    a,(beep)
  44.     or    a        ; is a beep wanted?
  45.     call    nz,ilprt    ; go beep ONLY IF ASKED!
  46.     db    7,0        ; this ONLY works because 7 is a single byte
  47.                 ; instruction: rlca.
  48.     call    mtprt
  49.     dw    [16 << 8] + 10
  50.     db    'Transfer \0'    ; start printout
  51.     pop    af
  52.     ld    hl,cplmsg    ; assume all is well
  53.     jr    z,pxfmsg    ; z => no error: go tell about it
  54.     ld    hl,ermsg    ; else set up an error message
  55. pxfmsg:    jp    prtslp
  56.  
  57. .extern    pmode
  58. pmode:
  59.     pop    hl
  60.     ld    (ressp),sp
  61.     push    hl
  62.     call    prompt
  63.     db    'Mode? \0'    ; how are we receiving?
  64.     ld    hl,ipbuf
  65.     call    byp        ; see what first char is
  66.     or    a        ; see if anything at all
  67.     pop    de
  68.     ret    z        ; return to next lower level if not
  69.     or    0x20        ; lower case
  70.     push    de
  71.     cp    'k'        ; check the 'k' of kermit
  72.     ret
  73.  
  74. .dseg
  75. cplmsg:    db    'complete\r\n\n\0'
  76. ermsg:    db    'error\r\n\n\0'
  77.