home *** CD-ROM | disk | FTP | other *** search
- (*---------------------------------------------------------------------------*)
- (* DFONLINE.INC *)
- (* Online - Dialog *)
-
- OVERLAY PROCEDURE Online;
-
- VAR MText : MsgStr;
- Zahl, i : INTEGER;
- ConZeichen, Zeichen : CHAR;
- Change_Flag : BOOLEAN;
-
- BEGIN
- ClrScr;
- MText := '';
- Change_Flag := FALSE;
- REPEAT UNTIL OutStatus;
- OutSIO(XON);
- ConZeichen := ' ';
- REPEAT
- (* Die letzten 250 Zeichen wieder ausgeben *)
- IF AltZaehler <= 250 THEN
- FOR i := 1 TO AltZaehler DO
- Write(TextBuf[i])
- ELSE
- FOR i := 1 TO 250 DO
- Write(TextBuf[AltZaehler - 250 + 1]);
- WriteLn;
- REPEAT
- IF (KeyPressed OR (Length(MText) > 0)) AND NOT InpStatus THEN BEGIN
- IF KeyPressed THEN BEGIN (* Taste entgegennehmen *)
- ConZeichen := GetKey;
- IF ConZeichen IN [#1..#6] THEN
- MText := FunkText[Ord(ConZeichen)];
- IF ConZeichen = CTRL_P THEN BEGIN
- Write(INV_EIN,' Protokoll : ');
- IF Protokoll_An THEN
- WriteLn('EIN ',INV_AUS)
- ELSE
- WriteLn('AUS ',INV_AUS);
- Change_Flag := TRUE;
- ConZeichen := ' ';
- END;
- IF Change_Flag AND (ConZeichen IN ['E','e']) THEN BEGIN
- Protokoll_An := TRUE;
- WriteLn(BELL,INV_EIN,' Protokoll EINgeschaltet ! ',INV_AUS);
- Change_Flag := FALSE;
- ConZeichen := ' '
- END;
- IF Change_Flag AND (ConZeichen IN ['A','a']) THEN BEGIN
- Protokoll_An := FALSE;
- WriteLn(BELL,INV_EIN,' Protokoll AUSgeschaltet ! ',INV_AUS);
- Change_Flag := FALSE;
- ConZeichen := ' '
- END
- END;
- IF MText <> '' THEN BEGIN (* Ein Zeichen von MText ausgeben *)
- ConZeichen := Copy(MText,1,1);
- MText := Copy(MText,2,Length(MText)-1) (* MText um eins kuerzen *)
- END;
- IF NOT VollDuplex THEN
- gib_Zeichen_aus(ConZeichen);
- IF (NOT VollDuplex) AND Protokoll_An THEN
- PushBuffer(ConZeichen);
- IF ConZeichen <> ESC THEN BEGIN
- IF OutStatus THEN
- OutSIO(ConZeichen);
- IF (ConZeichen = CR) AND Linefeed THEN
- IF OutStatus THEN BEGIN
- OutSIO(LF);
- IF (NOT VollDuplex) AND Protokoll_An THEN
- PushBuffer(LF)
- END
- END
- END;
- IF InpStatus THEN BEGIN
- Zeichen := InpSIO;
- IF Zeichen = XOFF THEN
- Warte_auf_XON;
- gib_Zeichen_aus(Zeichen);
- IF Protokoll_An THEN
- PushBuffer(Zeichen)
- END
- UNTIL ConZeichen = ESC;
-
- (* Moeglichkeit um Editorzeilen einzuspielen *)
- ClrScr;
- REPEAT
- (*$I-*)
- Write('Welche Zeile (0 zur Anzeige, 99 zum Ausstieg) ? '); Read(Zahl)
- (*$I+*)
- UNTIL NOT IOFehler;
- IF Zahl = 0 THEN BEGIN
- ClrScr;
- FOR i := 1 TO 23 DO BEGIN
- Write('Zeile ',i:2,' --> ');
- WriteLn(MsgZeile[i])
- END;
- REPEAT
- (*$I-*)
- Write('Welche Zeile (0 zur Anzeige, 99 zum Ausstieg) ? '); Read(Zahl)
- (*$I+*)
- UNTIL NOT IOFehler
- END;
- IF Zahl IN [1..23] THEN
- MText := MsgZeile[Zahl]
- UNTIL Zahl > 23;
- REPEAT UNTIL OutStatus;
- OutSIO(XOFF);
- AltZaehler := Pred(Zaehler);
- IF AltZaehler < 0 THEN
- AltZaehler := 0
- END;
-
- (* Ende DFONLINE.LIB *)
- (*---------------------------------------------------------------------------*)
-