%%HP: T(3)A(R)F(.);
\<< "" ""
\<<
WHILE DUP SIZE
21 >
REPEAT DUP 1 21
SUB 7 DISP nl DUP
SIZE 22 SWAP SUB
DUP 'line' STO
END 7 DISP
\>>
\<< NUM \-> nbr
\<<
CASE nbr 8 ==
THEN string
DUP SIZE 2 - 1 SWAP
SUB 'string' STO
string write
END nbr 13
==
THEN nl ""
'line' STO
END nbr 7
==
THEN 1000
.2 BEEP
END
END
\>>
\>>
\<< DUP NUM \->
outkey nbr
\<<
CASE nbr DUP
128 < SWAP 13 \=/ AND
THEN outkey
XMIT DROP
END nbr 13
==
THEN outkey
10 CHR + XMIT DROP
END nbr 128
==
THEN 2 CF
IF 1 FS?
THEN 1 CF
ELSE 1 SF
END
END nbr 129
==
THEN 1 CF
IF 2 FS?
THEN 2 CF
ELSE 2 SF
END
END nbr 130
==
THEN SBRK
nl
" -- Break sent --"
write
END nbr 131
==
THEN 4 SF
END nbr 132
==
THEN kermit
END nbr 133
==
THEN RECV
END nbr 134
==
THEN
IF 5 FS?
THEN 5 CF
ELSE 5 SF
END
END
END
\>>
\>>
\<< LCD\-> { # 0h
# 8h } { # 83h
# 37h } SUB # 83h
# 40h BLANK { # 0h
# 0h } 3 ROLL GOR
\->LCD "" 'line' STO
\>>
\<<
"Term 2.1 Kermit Send"
"File name:" INPUT
DUP SIZE 11 SWAP
SUB "'" + "'" SWAP
+ STR\-> SEND CLLCD 2
CF TERM2.1
\>> 'kermit' STO
'nl' STO 'snd' STO
'cntl' STO 'write'
STO 'string' STO
'line' STO 1 CF 2
CF 3 CF 4 CF CLLCD
DO BUFLEN
IF DROP DUP
THEN
IF DUP 40 > 5
FS? AND
THEN BUFLEN
DROP SRECV DROP2
ELSE ""
'string' STO 1 SWAP
FOR dobuf 1
SRECV DROP
IF DUP
NUM 31 >
THEN
'string' SWAP STO+
ELSE
'line' string STO+
line write cntl ""
'string' STO
END
NEXT 'line'
string STO+ line
write
END
ELSE DROP
END KEY
IF
THEN \-> k
\<<
CASE 1 FS?
THEN 0
END 2 FS?
THEN 1
END 1 FS?
2 FS? AND NOT
THEN 2
END
END 100 * k
+ keys SWAP DUP SUB
snd
\>>
END
UNTIL 4 FS?
END { cntl snd
write string line
kermit nl } PURGE
CLOSEIO 1 CF 2 CF 3
CF 4 CF 5 CF
\>>