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