home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Columbia Kermit
/
kermit.zip
/
archives
/
lilith.tar.gz
/
lilith.tar
/
m2serv.mod
< prev
next >
Wrap
Text File
|
1988-08-16
|
3KB
|
102 lines
IMPLEMENTATION MODULE KermServ;
(************************************************************************)
(* Handle Server mode *)
(* written: 14.12.85 Matthias Aebi *)
(* last modification: 18.03.86 Matthias Aebi *)
(************************************************************************)
FROM Terminal IMPORT WriteString, Write, WriteLn;
FROM String IMPORT Insert;
FROM KermRecv IMPORT RecvPacket, SwitchRecv;
FROM KermSend IMPORT SendPacket, SwitchSend;
FROM KermParam IMPORT Packet;
FROM KermMisc IMPORT ClrScr;
FROM NameSearch IMPORT FindNames, NextName;
CONST
UpLowEqual = TRUE;
(************************************************************************)
PROCEDURE Server(): BOOLEAN;
(************************************************************************)
VAR
fileName : ARRAY [0..31] OF CHAR;
recvPack : Packet;
typ : CHAR;
num : CARDINAL;
len : CARDINAL;
dummy : BOOLEAN;
foundOne : BOOLEAN;
fileNo : CARDINAL;
versionNo : CARDINAL;
count : CARDINAL;
BEGIN
WriteLn;
WriteLn;
WriteString("Now entering server mode ...");
count := 3;
LOOP
RecvPacket(typ,num,len,recvPack);
CASE typ OF
"S": (* receive a file *)
dummy := SwitchRecv(""); |
"R": (* request to send a file *)
recvPack[len] := 0C; (* the name has no terminating 0C *)
FindNames("DK", recvPack, UpLowEqual);
NextName(foundOne, fileName, fileNo, versionNo);
Insert(fileName, 0, "DK."); (* add device name *)
IF foundOne
THEN
dummy := SwitchSend(fileName,"");
ELSE
SendPacket("E",0,26,"File not found (M2-Kermit)");
END; |
"G": (* Execute generic Kermit command *)
CASE CAP(recvPack[0]) OF
"F": (* exit server mode & return to command level *)
SendPacket("Y",0,0,""); (* send an ACK for Packet 0 *)
ClrScr;
RETURN FALSE; |
"L": (* exit server mode & exit kermit *)
SendPacket("Y",0,0,""); (* send an ACK for Packet 0 *)
ClrScr;
RETURN TRUE; |
ELSE
SendPacket("E",0,43,
"Generic command not implemented (M2-Kermit)");
END; |
"T": (* timeout *)
INC(count);
IF count > 3
THEN
count := 0;
SendPacket("N",0,0,""); (* send a NAK for Packet 0 *)
END; |
"A": (* user abort *)
SendPacket("E",0,37,
"User aborted transmission (M2-Kermit)");
ClrScr;
RETURN FALSE;
ELSE
SendPacket("E",0,42,
"Server command not implemented (M2-Kermit)");
END;
END;
END Server;
END KermServ.