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
Wrap
Text File
|
2000-06-30
|
2KB
|
77 lines
; recv.z - protocol receive code for qterm
.incl "c:vars"
.extern recv
recv:
call pmode
jr z,modok
cp 'x'
jp nz,moderr ; k & x are the only legal modes (for now)
modok: inc hl
push hl ; save pointer
push af ; and mode character
call unbyp ; step over flags
call scnfcb ; parse name (or drive only for batch)
ld hl,(fcb)
ld (newusr),hl ; save receive drive and user
pop bc
pop hl
jp z,nowcp
push bc
push hl
call reset ; do a reset
pop hl
pop bc
ld a,'k'
cp b ; Kermit or Xmodem
jr nz,recvx
call recvk ; receive kermit
jr xferd ; and unwrap
recvx: call xmflgs ; parse xmodem flags
call initx
call initrc ; set up screen
dorecv: call xrfile ; receive a file
or a
jr nz,dorecv ; loop if more to come
ld a,(errorf)
or a ; flag if there was an error or not
.extern xferd ; finish transfer - print completion message
xferd:
push af ; save z flag
ld a,(beep)
or a ; is a beep wanted?
call nz,ilprt ; go beep ONLY IF ASKED!
db 7,0 ; this ONLY works because 7 is a single byte
; instruction: rlca.
call mtprt
dw [16 << 8] + 10
db 'Transfer \0' ; start printout
pop af
ld hl,cplmsg ; assume all is well
jr z,pxfmsg ; z => no error: go tell about it
ld hl,ermsg ; else set up an error message
pxfmsg: jp prtslp
.extern pmode
pmode:
pop hl
ld (ressp),sp
push hl
call prompt
db 'Mode? \0' ; how are we receiving?
ld hl,ipbuf
call byp ; see what first char is
or a ; see if anything at all
pop de
ret z ; return to next lower level if not
or 0x20 ; lower case
push de
cp 'k' ; check the 'k' of kermit
ret
.dseg
cplmsg: db 'complete\r\n\n\0'
ermsg: db 'error\r\n\n\0'