home *** CD-ROM | disk | FTP | other *** search
- PROGRAM ShowBox;
- (* (c) 1991 Ralf Hensmann & toolbox *)
-
- USES Interpreter, ScreenLow, Crt;
-
- CONST CMax = 15000;
- CtrlChar = #254;
-
- VAR CharBuf : ARRAY [0..CMax] OF CHAR;
- CharLast : WORD;
- CtrlMode : BOOLEAN;
-
- FUNCTION GetKey : INTEGER;
- VAR CH : CHAR;
- BEGIN
- CH:= ReadKey;
- IF CH = #0 THEN GetKey := 1000+Ord(ReadKey)
- ELSE GetKey := Ord(CH);
- END;
-
- PROCEDURE Wait;
- VAR Dummy : INTEGER;
- BEGIN
- WHILE KeyPressed DO Dummy := GetKey;
- Dummy := GetKey;
- END;
-
- PROCEDURE PlaySession;
- VAR i : WORD;
- Key : INTEGER;
- BEGIN
- i := 0;
- CtrlMode := FALSE;
- WHILE i < CharLast DO BEGIN
- IF CharBuf[i] = CtrlChar THEN
- CtrlMode := NOT CtrlMode
- ELSE
- IF CtrlMode THEN PrintCode(CharBuf[i],TRUE)
- ELSE PrintChar(CharBuf[i],TRUE);
- IF KeyPressed THEN BEGIN
- Key := GetKey;
- IF Key = 27 THEN Halt;
- Wait;
- END;
- Inc(i);
- END;
- END;
-
- FUNCTION LoadSession(Name : STRING) : BOOLEAN;
- VAR t : TEXT;
- Zeile : STRING;
- i : INTEGER;
- BEGIN
- IF Name = '' THEN BEGIN
- LoadSession := FALSE;
- Exit;
- END;
- (* Session in Puffer laden *)
- Assign(t,Name);
- {$I-} Reset(t); {$I+}
- IF IOResult <> 0 THEN BEGIN
- LoadSession := FALSE;
- Exit;
- END;
- i := 0;
- REPEAT
- ReadLn(t,Zeile);
- Move(Zeile[1],CharBuf[i],Length(Zeile));
- Inc(i,Length(Zeile));
- UNTIL EoF(t);
- CharLast := i;
- LoadSession := TRUE;
- END;
-
- VAR Speed,Error : INTEGER;
-
- BEGIN
- IF NOT LoadSession(ParamStr(1)) THEN BEGIN
- WriteLn('SHOWBOX');
- WriteLn;
- WriteLn('Usage : SHOWBOX <Showfile> [Verzögerung]');
- WriteLn;
- WriteLn('Verzögerungen sind INTEGER-Zahlen');
- WriteLn('negative Zahlen verlangsamen das Programm, positive beschleunigen es.');
- WriteLn;
- WriteLn('z.B. : SHOWBOX meintest.box -3');
- WriteLn;
- Halt;
- END;
- InitScreen;
- IF ParamCount > 1 THEN BEGIN
- Val(ParamStr(2),Speed,Error);
- IF Error <> 0 THEN BEGIN
- WriteLn('Der 2. Parameter muß eine INTEGER-Zahl sein !!!');
- Halt;
- END;
- WHILE (Speed<0) DO BEGIN
- PrintCode('~',FALSE);
- Inc(Speed);
- END;
- WHILE (Speed>0) DO BEGIN
- PrintCode('*',FALSE);
- Dec(Speed);
- END;
- END;
- PlaySession;
- END.
-
-