262 lines
3.1 KiB
Plaintext
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
|
||
|