Unit MiscComm ; Interface Uses Dos, (* Standard Turbo Pascal Unit *) KGlobals, (* Kermit Globals *) ModemPro, Packets, Setshow, Vt100 ; Procedure Logit (filename : String); Procedure Takeit (filename : String); Procedure QuitExit (QuitOption : String); Implementation (* ================================================================== *) (* LOGIT - creates a Log file to record all incoming data from the *) (* remote line. *) (* The file name is specified in the Parameter . *) (* if no parameter specified logging is turned off. *) (* ================================================================== *) Procedure Logit (filename : String); Begin (* Logit Procedure *) If (length(filename) < 3) or (filename='OFF') then Begin (* Turn off Logging *) Logging := false ; {$I-} Close (Logfile); {$I+} If IoResult = 0 then Writeln (' Logging is turned off '); End (* Turn off Logging *) else Begin (* Turn on Logging *) If Logging then Close (Logfile); Logging := True ; Assign(Logfile,Filename); {$I-} Rewrite(Logfile); {$I+} If IoResult = 0 then Writeln(' Logging data to file ',filename) else Writeln(' Unable to open file',filename,' for Logging') ; LogName := filename ; End ; (* Turn on Logging *) End ; (* Logit Procedure) (* ================================================================== *) (* Takeit - read commands from a file and executes them. *) (* if no file specified or file is not there if does nothing *) (* ================================================================== *) Procedure Takeit (filename : String); Var FileInfo : SearchRec ; Begin (* Takeit Procedure *) If length(filename) > 1 then FindFirst(filename,anyfile,FileInfo) ; If DosError = 0 then Begin (* Active file *) Writeln ('Activating Command file ',filename); TakeActive := true ; Assign(Commandfile,filename); Reset(Commandfile); End (* Active file *) else Writeln('No file ',filename) ; End ; (* Takeit Procedure) (* ================================================================== *) (* QuitExit - Terminates the KERMIT. *) (* the QuitOptions are: *) (* LOCAL,REMOTE,DISCONnect,ALL *) (* if LOCAL or noparms only the local kermit terminates.*) (* if REMOTE then only the remote kermit terminates. *) (* if DISCONect then the remote kermit is terminated *) (* and the remote is logged off. *) (* if ALL then both kermits are terminated and remote *) (* is logged off. *) (* *) (* ================================================================== *) Procedure QuitExit (QuitOption : String); Const QuitTable : String[35] = ' LOCAL REMOTE DISCON ALL ' ; Type QuitType = (zero,local,remote,discon,all); Var Qix : integer ; Begin (* QuitExit Procedure *) QuitOption := Uppercase(Concat(' ',QuitOption)); Qix := Pos(QuitOption,QuitTable) div 7 ; Case QuitType(Qix) of (* Quit Type *) zero, local: Running := false ; remote : Begin (* terminate remote kermit *) (* Send a Finish packet *) OutDataCount := 1 ; OutSeq := OutSeq + 1 ; If OutSeq > 64 then OutSeq := 0 ; OutPacketType := Ord('G'); SendData[1] := Ord('F'); WaitXon := False ; SendPacket ; If RecvPacket and (InPacketType = Ord('Y')) then Writeln (' Remote Kermit terminated. ') else Writeln(' Unable to terminate Remote Kermit. '); End ; (* terminate remote kermit *) discon, all: Begin (* logoff Remote *) (* Send a Logoff packet *) OutDataCount := 1 ; OutSeq := OutSeq + 1 ; If OutSeq > 64 then OutSeq := 0 ; OutPacketType := Ord('G'); SendData[1] := Ord('L'); WaitXon := false ; SendPacket ; If RecvPacket and (InPacketType = Ord('Y')) then Writeln (' Remote host is logging off ') else Writeln(' Remote host unable to execute a log off '); If (Qix = Ord(all)) then Running := False ; End; (* Logoff Remote *) End ; (* Case Quit Type *) End; (* QuitExit Procedure *) Begin (* MiscComm Unit *) End. (* MiscComm Unit *)