home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Turbo Toolbox
/
Turbo_Toolbox.iso
/
sonderh1
/
dfue.pas
< prev
next >
Wrap
Pascal/Delphi Source File
|
1987-06-10
|
7KB
|
220 lines
(*---------------------------------------------------------------------------*)
(* DFUE.PAS *)
(* Programm fuer Mailboxbetrieb und Rechnerkopplung *)
(* Grundversion *)
(*---------------------------------------------------------------------------*)
(*---------------------------------------------------------------------------*)
(* COMPILEROPTION *)
(* Diese Compileroption muss bei IBM-kompatiblen Rechnern gesetzt werden, *)
(* damit die Steuersequenzen nach ANSI-Norm benutzt werden koennen. Auf *)
(* anderen Systemen kann diese Option meistens ersatzlos gestrichen werden. *)
(*$P512*) (* Output ueber das Betriebssystem *)
(*---------------------------------------------------------------------------*)
(* Ende Compileroptionen *)
PROGRAM DFUE(Input,Output);
(* Konstanten und Variablendeklaration *)
CONST BUFEND = $7fff; (* Fuer MS-DOS. Auf CP/M Rechnern ca. 11000*)
(* Cursorsteuerung nach WordStar-Manier. *)
(* Ctrl-S = links, Ctrl-D = rechts, *)
(* Ctrl-E = oben, Ctrl-X = unten . *)
CURSOR_RECHTS = #4;
CURSOR_LINKS = #19;
CURSOR_HOCH = #5;
CURSOR_RUNTER = #24;
RETURN = #13;
DEL = #127;
(* Hier muss eine Anpassung der Steuersequenzen *)
(* fuer inverse Schrift an/aus erfolgen ! *)
(*-- Steuersequenzen fuer eine ANSI-Terminal --*)
(* Naeheres siehe Artikel. *)
INV_EIN = #27'[7m';
INV_AUS = #27'[0m';
(*---------------------------------------------*)
(*-- Steuersequenzen fuer eine VT52-Terminal --*)
(* INV_EIN = #27'p'; *)
(* INV_AUS = #27'q'; *)
(*---------------------------------------------*)
(*-- Steuersequenzen fuer Schneider CPC --*)
(* INV_EIN = #24; *)
(* INV_AUS = #24; *)
(*----------------------------------------*)
XON = #17;
XOFF = #19;
LF = #10;
CR = #13;
CTRL_P = #16;
CTRL_Z = #26;
ESC = #27; (* #252; fuer Schneider CPC *)
SOH = #01;
EOT = #4;
ACK = #6;
BELL = #7;
NAK = #21;
CAN = #24;
TYPE String255 = STRING[255];
String79 = STRING[79];
String41 = STRING[41];
String2 = STRING[2];
String4 = STRING[4];
FunkStr = STRING[40];
MsgStr = STRING[80];
VAR Zaehler, Altzaehler, Nummer : INTEGER;
Zeit, i : INTEGER;
VollDuplex, LineFeed, Protokoll_An : BOOLEAN;
Menue_Text : String255;
FunkText : ARRAY [1..6] OF FunkStr;
MBNr : ARRAY [1..25] OF String79;
TextBuf : ARRAY [1..BUFEND] OF CHAR;
MsgZeile : ARRAY [1..23] OF MsgStr;
Param : ARRAY [1..7] OF INTEGER;
Logfile : TEXT;
(*---------------------------------------------------------------------*)
(*------- Hier beginnen die rechnerspezifischen Unterprogramme --------*)
{$I DFMASCH2.INC }
(* Die Routinen in DFMASCHx.INC sorgen fuer die rechnerabhaengige *)
(* Ansteuerung der seriellen Schnittstelle. *)
{$I DF-MY.INC }
(* In DF-MY.INC sind Routinen enthalten, die rechnerabhaengige Sachen wie *)
(* Tastaturabfrage und aehnliches erledigen. *)
(*--------- Hier enden die Rechnerspezifischen Unterprogramme -----------*)
(* in DFKERNEL.LIB sind die rechnerunabhaengigen Basisroutinen enthalten *)
{$I DFKERNEL.INC }
(* Die Funktion MENUE liefert ein multiplanaehnliches Menue,SP=Spalte,
ZL=Zeile, wo das Menue plaziert werden soll, Menue_Text ist der Text *)
{$I DFMENUE.INC}
(* die Prozedur PARAMETER erfragt im Dialog die notwendigen Ueber-
tragungsparameter. *)
{$I DFPARAM.INC}
(* Prozedur ONLINE erlaubt Online-Dialog, ein Puffer dokumentiert
mit, wenn der Puffer sich fuellt, wird automatisch gesichert. *)
{$I DFONLINE.INC}
(* Prozedur Datei_Senden sendet eine beliebige Datei nach
dem XON-XOFF Protokoll , die Prozedur Datei_empfangen
empfaengt eine beliebige Datei nach dem XON-XOFF Protokoll. *)
{$I DFDATEI.INC}
(* Die Prozedure Status gibt die augenblicklich eingestellten
Parameter und den Bufferstatus zurueck. *)
{$I DFSTAT.INC}
(* Teil 2: die Funktionstasten *)
(*$I DFFUNK.INC *)
(* Teil 2: das XMODEM-Protokoll *)
(*$I DFXM.INC *)
(* Teil 2: der Editor *)
(*$I DFEDITOR.INC *)
(* Teil 3: die Hilfe *)
(*$I DFHELP.INC *)
(* Teil 3: Intel-Hex-Format-Konvertierer *)
(*$I DFUNLOAD.INC *)
(* Teil 3: Telephonregister *)
(*$I DFMBNR.INC *)
(* HIER BEGINNT DAS HAUPTPROGRAMM *)
BEGIN
ClrScr;
FOR i := 1 TO 23 DO
MsgZeile[i] := '';
FOR i := 1 TO 6 DO
FunkText[i] := '';
FOR i := 1 TO 7 DO
param[i] := 1;
Setze_Parameter;
Zaehler := 1;
Altzaehler := 0;
Protokoll_An := FALSE;
oeffne_Protokoll;
WriteLn;
WriteLn;
WriteLn(' P A S C A L WE PROUDLY PRESENT : ');
WriteLn(' D F U E , EIN TERMINAL UND RECHNERKOPPLUNGSUTILITY');
WriteLn(' BITTE WAEHLEN SIE MIT DEN CURSORTASTEN AUS, ENTER');
WriteLn(' WAEHLT DANN AN');
WriteLn;WriteLn;
WriteLn('HELP GIBT EINE KURZE ERKLAERUNG');
REPEAT
GotoXY(1,24);
ClearKeyBuf; (* Tastatur zuruecksetzen *)
Menue_Text := Concat(' Onl Send Empf XMSen XMEmp Unl ',
'Ed Stat Help Funk MBNr Par Ende ');
Nummer := Menue(Menue_Text,1,25);
(* Die in dieser Version noch nicht *)
(* vorhandenen Optionen sind ausgeklammert. *)
CASE Nummer OF
1 : Online;
2 : Datei_senden;
3 : Datei_empfangen;
4 : XMODEM_senden;
5 : XMODEM_empfangen;
6 : Unload;
7 : Editor;
8 : Status;
9 : Help;
10 : Funktionstasten;
11 : Mailboxnummern;
12 : Parameter;
13 : (* Leerer Fall, um Fehler, die bei manchen Compilern auf- *)
END (* tauchen koennen, zu vermeiden. *)
UNTIL Nummer = 13;
FOR i := 1 TO Pred(Zaehler) DO BEGIN
IF TextBuf[i] IN [LF,CR,' '..'}'] THEN
Write(Logfile,TextBuf[i]);
IF TextBuf[i] = CR THEN
WriteLn(Logfile)
END;
Close(Logfile)
END.