259 lines
3.3 KiB
Plaintext
259 lines
3.3 KiB
Plaintext
; recvk.z - code to receive kermit protocol transfers
|
|
|
|
.incl "c:vars"
|
|
.incl "c:kermit"
|
|
|
|
.extern recvk
|
|
recvk:
|
|
call kinit
|
|
call initrc
|
|
xor a
|
|
ld (nn),a
|
|
ld (numtry),a
|
|
ld (ksflg),a
|
|
ld a,(getflg)
|
|
or a
|
|
call nz,sndget
|
|
ld a,'R'
|
|
recvlp: ld (state),a
|
|
cp 'R'
|
|
jr nz,norr
|
|
call rinit
|
|
jr recvlp
|
|
norr: cp 'F'
|
|
jr nz,norf
|
|
call rfile
|
|
jr recvlp
|
|
norf: cp 'D'
|
|
jr nz,nord
|
|
call rdata
|
|
jr recvlp
|
|
nord: xor 'C'
|
|
ret
|
|
|
|
rinit:
|
|
ld hl,numtry
|
|
ld a,(hl)
|
|
inc (hl)
|
|
cp MAXTRY + 1
|
|
jr nc,reta
|
|
call rpack
|
|
cp 'S'
|
|
jr nz,noris
|
|
ld a,(nn)
|
|
cp c
|
|
jr nz,retan
|
|
call rpar
|
|
call spar
|
|
call pktok
|
|
ld a,'Y'
|
|
ld bc,(nn)
|
|
ld de,13
|
|
ld b,d
|
|
call spack
|
|
ld hl,numtry
|
|
ld a,(hl)
|
|
ld (oldtry),a
|
|
xor a
|
|
ld (hl),a
|
|
ld (getflg),a
|
|
ld hl,nn
|
|
inc (hl)
|
|
res 6,(hl)
|
|
ld a,(cktypq)
|
|
ld (cktyp),a
|
|
ld a,'F'
|
|
ret
|
|
noris: or a
|
|
jr nz,norif
|
|
call dtime
|
|
ld a,(getflg)
|
|
or a
|
|
jr z,rinak
|
|
call sndget
|
|
jr rierr
|
|
rinak: ld bc,(nn)
|
|
ld de,0
|
|
ld b,e
|
|
ld a,'N'
|
|
sretst: call spack
|
|
rierr: call pkterr
|
|
ld a,(state)
|
|
ret
|
|
norif: cp 'E'
|
|
jr nz,retab
|
|
call prerrp
|
|
jr reta
|
|
retan: call dnum
|
|
jr reta
|
|
retab: call dbadp
|
|
jr reta
|
|
retar: call dtries
|
|
reta: ld a,'A'
|
|
ret
|
|
|
|
rfile:
|
|
ld hl,numtry
|
|
ld a,(hl)
|
|
inc (hl)
|
|
cp MAXTRY + 1
|
|
jr nc,reta
|
|
call rpack
|
|
cp 'S'
|
|
jr nz,norfs
|
|
ld hl,oldtry
|
|
ld a,(hl)
|
|
inc (hl)
|
|
cp MAXTRY + 1
|
|
jr nc,retar
|
|
ld a,(nn)
|
|
dec a
|
|
and 63
|
|
cp c
|
|
jr nz,retan
|
|
push de
|
|
call spar
|
|
pop de
|
|
ld de,13
|
|
ld b,d
|
|
cntsrs: xor a
|
|
ld (numtry),a
|
|
ld a,'Y'
|
|
jr sretst
|
|
norfs: cp 'Z'
|
|
jr nz,norfz
|
|
ld hl,oldtry
|
|
ld a,(hl)
|
|
inc (hl)
|
|
cp MAXTRY + 1
|
|
retanc: jr nc,retar
|
|
ld a,(nn)
|
|
dec a
|
|
and 63
|
|
xor c
|
|
jr nz,retan
|
|
ld e,a
|
|
ld d,a
|
|
ld b,a
|
|
jr cntsrs
|
|
norfz: cp 'F'
|
|
jr nz,norff
|
|
ld a,(nn)
|
|
cp c
|
|
retanz: jr nz,retan
|
|
ld hl,packet
|
|
ld de,packet + 500
|
|
ld a,(pack)
|
|
or a
|
|
jr z,nopkfn
|
|
call exprp
|
|
ld hl,packet + 500
|
|
nopkfn: call cpmaux
|
|
xor a
|
|
ld (ymdmb),a
|
|
call auxopn
|
|
ld de,-1
|
|
ld hl,auxfcb
|
|
call prfile
|
|
pokd: call pktok
|
|
ld a,'Y'
|
|
ld bc,(nn)
|
|
ld de,0
|
|
ld b,e
|
|
call spack
|
|
ld hl,numtry
|
|
ld a,(hl)
|
|
ld (oldtry),a
|
|
ld (hl),0
|
|
ld hl,nn
|
|
inc (hl)
|
|
res 6,(hl)
|
|
ld a,'D'
|
|
ret
|
|
norff: cp 'B'
|
|
noris1: jp nz,noris
|
|
ld a,(nn)
|
|
xor c
|
|
retnz1: jr nz,retanz
|
|
call pktok
|
|
ld a,'Y'
|
|
ld bc,(nn)
|
|
ld de,0
|
|
ld b,e
|
|
call spack
|
|
ld a,'C'
|
|
ret
|
|
|
|
rdata:
|
|
ld hl,numtry
|
|
ld a,(hl)
|
|
inc (hl)
|
|
cp MAXTRY + 1
|
|
retnc1: jp nc,retar
|
|
call rpack
|
|
cp 'D'
|
|
jr nz,nordd
|
|
ld a,(nn)
|
|
cp c
|
|
jr z,dnok
|
|
ackold: ld hl,oldtry
|
|
ld a,(hl)
|
|
inc (hl)
|
|
cp MAXTRY + 1
|
|
jr nc,retnc1
|
|
ld a,(nn)
|
|
dec a
|
|
and 63
|
|
xor c
|
|
retnz2: jr nz,retnz1
|
|
ld e,a
|
|
ld d,a
|
|
ld b,a
|
|
jp cntsrs
|
|
dnok: call bufemp
|
|
jp pokd
|
|
nordd: cp 'F'
|
|
jr z,ackold
|
|
cp 'Z'
|
|
jr nz,noris1
|
|
ld a,(nn)
|
|
cp c
|
|
jr nz,retnz2
|
|
call flshw2
|
|
ld de,auxfcb
|
|
ld c,close
|
|
call usrbds
|
|
call pktok
|
|
ld hl,nn
|
|
ld c,(hl)
|
|
inc (hl)
|
|
res 6,(hl)
|
|
ld de,0
|
|
ld b,e
|
|
ld a,'Y'
|
|
call spack
|
|
ld a,'F'
|
|
ret
|
|
|
|
sndget: ld bc,(getnam)
|
|
ressg: ld hl,packet
|
|
ld de,0xff
|
|
sgelp: ld a,(bc)
|
|
inc bc
|
|
ld (hl),a
|
|
cp ':'
|
|
jr z,ressg
|
|
cp MYQUOTE
|
|
jr nz,noquot
|
|
inc hl
|
|
inc e
|
|
ld (hl),a
|
|
noquot: inc hl
|
|
inc e
|
|
or a
|
|
jr nz,sgelp
|
|
ld b,d
|
|
ld c,d
|
|
ld a,'R'
|
|
jp spack
|
|
|