home *** CD-ROM | disk | FTP | other *** search
- (*---------------------------------------------------------------------------*)
- (* 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.