home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / sonderh1 / dfonline.inc < prev    next >
Text File  |  1987-06-10  |  4KB  |  116 lines

  1. (*---------------------------------------------------------------------------*)
  2. (*                             DFONLINE.INC                                  *)
  3. (*                           Online - Dialog                                 *)
  4.  
  5. OVERLAY PROCEDURE Online;
  6.  
  7. VAR MText : MsgStr;
  8.     Zahl, i : INTEGER;
  9.     ConZeichen, Zeichen : CHAR;
  10.     Change_Flag : BOOLEAN;
  11.  
  12. BEGIN
  13.   ClrScr;
  14.   MText := '';
  15.   Change_Flag := FALSE;
  16.   REPEAT UNTIL OutStatus;
  17.   OutSIO(XON);
  18.   ConZeichen := ' ';
  19.   REPEAT
  20.     (* Die letzten 250 Zeichen wieder ausgeben *)
  21.     IF AltZaehler <= 250 THEN
  22.       FOR i := 1 TO AltZaehler DO
  23.         Write(TextBuf[i])
  24.     ELSE
  25.       FOR i := 1 TO 250 DO
  26.         Write(TextBuf[AltZaehler - 250 + 1]);
  27.     WriteLn;
  28.     REPEAT
  29.       IF (KeyPressed OR (Length(MText) > 0)) AND NOT InpStatus THEN BEGIN
  30.         IF KeyPressed THEN BEGIN      (* Taste entgegennehmen *)
  31.           ConZeichen := GetKey;
  32.           IF ConZeichen IN [#1..#6] THEN
  33.             MText := FunkText[Ord(ConZeichen)];
  34.           IF ConZeichen = CTRL_P THEN BEGIN
  35.             Write(INV_EIN,' Protokoll : ');
  36.             IF Protokoll_An THEN
  37.               WriteLn('EIN ',INV_AUS)
  38.             ELSE
  39.               WriteLn('AUS ',INV_AUS);
  40.             Change_Flag := TRUE;
  41.             ConZeichen := ' ';
  42.           END;
  43.           IF Change_Flag AND (ConZeichen IN ['E','e']) THEN BEGIN
  44.             Protokoll_An := TRUE;
  45.             WriteLn(BELL,INV_EIN,' Protokoll EINgeschaltet ! ',INV_AUS);
  46.             Change_Flag := FALSE;
  47.             ConZeichen := ' '
  48.           END;
  49.           IF Change_Flag AND (ConZeichen IN ['A','a']) THEN BEGIN
  50.             Protokoll_An := FALSE;
  51.             WriteLn(BELL,INV_EIN,' Protokoll AUSgeschaltet ! ',INV_AUS);
  52.             Change_Flag := FALSE;
  53.             ConZeichen := ' '
  54.           END
  55.         END;
  56.         IF MText <> '' THEN BEGIN (* Ein Zeichen von MText ausgeben *)
  57.           ConZeichen := Copy(MText,1,1);
  58.           MText := Copy(MText,2,Length(MText)-1) (* MText um eins kuerzen *)
  59.         END;
  60.         IF NOT VollDuplex THEN
  61.           gib_Zeichen_aus(ConZeichen);
  62.         IF (NOT VollDuplex) AND Protokoll_An THEN
  63.           PushBuffer(ConZeichen);
  64.         IF ConZeichen <> ESC THEN BEGIN
  65.           IF OutStatus THEN
  66.             OutSIO(ConZeichen);
  67.           IF (ConZeichen = CR) AND Linefeed THEN
  68.             IF OutStatus THEN BEGIN
  69.               OutSIO(LF);
  70.               IF (NOT VollDuplex) AND Protokoll_An THEN
  71.                 PushBuffer(LF)
  72.             END
  73.         END
  74.       END;
  75.       IF InpStatus THEN BEGIN
  76.         Zeichen := InpSIO;
  77.         IF Zeichen = XOFF THEN
  78.           Warte_auf_XON;
  79.         gib_Zeichen_aus(Zeichen);
  80.         IF Protokoll_An THEN
  81.           PushBuffer(Zeichen)
  82.       END
  83.     UNTIL ConZeichen = ESC;
  84.  
  85.     (* Moeglichkeit um Editorzeilen einzuspielen *)
  86.     ClrScr;
  87.     REPEAT
  88. (*$I-*)
  89.       Write('Welche Zeile (0 zur Anzeige, 99 zum Ausstieg) ? '); Read(Zahl)
  90. (*$I+*)
  91.     UNTIL NOT IOFehler;
  92.     IF Zahl = 0 THEN BEGIN
  93.       ClrScr;
  94.       FOR i := 1 TO 23 DO BEGIN
  95.         Write('Zeile ',i:2,' --> ');
  96.         WriteLn(MsgZeile[i])
  97.       END;
  98.       REPEAT
  99. (*$I-*)
  100.         Write('Welche Zeile (0 zur Anzeige, 99 zum Ausstieg) ? '); Read(Zahl)
  101. (*$I+*)
  102.       UNTIL NOT IOFehler
  103.     END;
  104.     IF Zahl IN [1..23] THEN
  105.       MText := MsgZeile[Zahl]
  106.   UNTIL Zahl > 23;
  107.   REPEAT UNTIL OutStatus;
  108.   OutSIO(XOFF);
  109.   AltZaehler := Pred(Zaehler);
  110.   IF AltZaehler < 0 THEN
  111.     AltZaehler := 0
  112. END;
  113.  
  114. (*                        Ende DFONLINE.LIB                                  *)
  115. (*---------------------------------------------------------------------------*)
  116.