Files
2020-10-05 14:03:34 +02:00

262 lines
3.1 KiB
Plaintext

; sendk.z - kermit send xfer code
.incl "c:vars"
.incl "c:kermit"
.extern sendk
sendk:
call kinit
call initsn
ld a,(sercmd)
or a
ld l,'G'
jr nz,sendit
call srnxt
ret z
ld l,'S'
sendit: xor a
ld (nn),a
ld (numtry),a
ld a,l
ld (ksflg),a
sndklp: ld (state),a
cp 'S'
jr nz,nosini
call sinit
jr sndklp
nosini: cp 'F'
jr nz,nosfil
call sfile
jr sndklp
nosfil: cp 'D'
jr nz,nosdat
call sdata
jr sndklp
nosdat: cp 'Z'
jr nz,noseof
call seof
jr sndklp
noseof: cp 'B'
jr nz,nosbrk
call sbreak
jr sndklp
nosbrk: cp 'G'
jr nz,nossrv
call sserve
jr sndklp
nossrv: xor 'C'
ret
sinit:
ld hl,numtry
ld a,(hl)
inc (hl)
cp MAXTRY
ld a,'A'
ret nc
call spar
call flsrng
ld a,'S'
ld bc,(nn) ; packet number
ld de,13 ; size
ld b,d ; b == 0 => not extended
call spack
call rpack
ld b,a
cp 'N'
jr nz,nosin
retstt: ld a,b
or a
jr z,perr
cp 'N'
jr nz,pbn
call dnak
jr perr
pbn: call dnum
perr: call pkterr
ld a,(state)
ret
nosin: or a
jr z,perr
cp 'E'
jr nz,nosie
call prerrp
jr sreta1
sireta: call dbadp
sreta1: ld a,'A'
ret
nosie: cp 'Y'
jr nz,sireta
ld a,(nn)
cp c
jr nz,retstt
ipakok: call rpar
xor a
ld (numtry),a
ld hl,nn
inc (hl)
res 6,(hl)
call pktok
ld a,(cktypq)
ld (cktyp),a
ld a,'F'
ret
sfile:
ld hl,numtry
ld a,(hl)
inc (hl)
cp MAXTRY
ld a,'A'
ret nc
call kresgp
ld de,auxfcb + 2
ld hl,packet
ld b,8
call scnfil
ld a,(de)
and 0x7f
cp ' '
jr z,noext
ld (hl),'.'
inc hl
ld b,3
call scnfil
noext: ld (hl),b
ld de,packet
sbc hl,de
ld bc,(nn)
ld e,l
ld d,0
ld b,d
ld a,'F'
finsf: call spack
call rpack
ld b,a
cp 'N'
jr nz,nosfn
dec c
res 7,c
res 6,c
ld a,'Y'
nosfn: cp 'Y'
jp nz,nosin
ld a,(nn)
xor c
jp nz,retstt
ld (numtry),a
ld a,c
inc a
and 63
ld (nn),a
call pktok
call bufill
ld (size),bc
inc a
ld a,'Z'
ret z
ld a,'D'
ret
sdata:
ld hl,numtry
ld a,(hl)
inc (hl)
cp MAXTRY
ld a,'A'
ret nc
ld de,(size)
ld bc,(nn)
ld b,1
ld a,e
cp MAXPSIZ
ld a,'D'
jr nc,finsf
ld b,d
jr finsf
seof:
ld hl,numtry
ld a,(hl)
inc (hl)
cp MAXTRY
ld a,'A'
ret nc
ld a,'Z'
ld bc,(nn)
ld de,0
ld b,e
call spack
call rpack
ld b,a
cp 'N'
jr nz,nosen
dec c
res 7,c
res 6,c
ld a,'Y'
nosen: cp 'Y'
jp nz,nosin
ld a,(nn)
xor c
jp nz,retstt
ld (numtry),a
ld a,c
inc a
and 63
ld (nn),a
call pktok
call srnxt
ld a,'F'
ret nz
ld a,'B'
ret
sbreak:
ld hl,numtry
ld a,(hl)
inc (hl)
cp MAXTRY
ld a,'A'
ret nc
ld a,'B'
ld de,0
finsb: ld bc,(nn)
ld b,d
call spack
call rpack
ld b,a
cp 'N'
jr nz,nosbn
dec c
res 7,c
res 6,c
ld a,'Y'
nosbn: cp 'Y'
jp nz,nosin
ld a,(nn)
xor c
jp nz,retstt
ld (numtry),a
ld a,c
inc a
and 63
ld (nn),a
call pktok
ld a,'C'
ret
sserve:
ld hl,numtry
ld a,(hl)
inc (hl)
cp MAXTRY
ld a,'A'
ret nc
ld a,(sercmd)
and 0x5f
ld (packet),a
ld a,'G'
ld de,1
jr finsb