home *** CD-ROM | disk | FTP | other *** search
- (* ------------------------------------------------------ *)
- (* BIGDEMO.PAS *)
- (* Demonstration zur Unit BIGTEXT.PAS *)
- (* (c) 1988 by Erhard Ernst & TOOLBOX *)
- (* ------------------------------------------------------ *)
- PROGRAM BigText_Demo;
-
- USES Crt, BigText;
-
- (* ------------------------------------------------------ *)
- PROCEDURE Wait(Sekunden: REAL);
- VAR DOS_Timer: INTEGER ABSOLUTE $0040:$006C;
- ticks : INTEGER;
- tc, stop : REAL;
-
- BEGIN
- stop := 18.2 * Sekunden; { 18.2 Ticks/Sekunde }
- tc := 0;
- REPEAT
- ticks := Dos_Timer; { Uhr "stellen" }
- REPEAT UNTIL Dos_Timer <> ticks; { auf Ticken warten }
- tc := tc + 1;
- UNTIL tc >= stop; { "Zeitvergleich" }
- END;
-
- (* ------------------------------------------------------ *)
- PROCEDURE NextPage(sek: INTEGER);
- BEGIN
- GotoXY(80,25); Wait(sek); ClrScr;
- END;
-
- (* ------------------------------------------------------ *)
- (* Schaltet Tastatur-Sperre EIN/AUS: mit Vorsicht zu *)
- (* genießen, da die Sperre auch nach Programmende oder *)
- (* -abbruch aktiv bleibt! Die Sperre ist nur durch einen *)
- (* Hardware-Reset zu deaktivieren. *)
-
- PROCEDURE Kbd_Lock(sperren: BOOLEAN);
- VAR status: BYTE;
-
- BEGIN
- status := port[97];
- IF sperren THEN
- portw[97] := status OR 128 { Bit 7 := 1 }
- ELSE
- portw[97] := status AND 127; { Bit 7 := 0 }
- END;
-
- (* ------------------ Demo-Programm --------------------- *)
-
- TYPE string80 = STRING[80];
- VAR i, j : BYTE;
-
-
- PROCEDURE Center(y: BYTE; s: string80);
- VAR x: BYTE;
-
- BEGIN
- x := 41 - (Length(s) DIV 2); GotoXY(x,y); Write(s);
- END;
-
- (* ------------------------------------------------------ *)
- PROCEDURE Neue_Zeichen;
- CONST Font: ARRAY[0..4, 0..7] OF BYTE =
- ((0,252,230,252,230,252,0,0),
- (0,224,224,224,224,254,0,0),
- (0,56,100,226,116,56,0,0),
- (254,56,56,56,56,56,56,56),
- (0,198,108,56,108,198,0,0));
- Bu : ARRAY[0..4] OF CHAR = ('B','L','O','T','X');
- BEGIN
- WriteBig_Char := #32; { Das liefert }
- WriteBig_NoChar := #219; { "inverse" Schrift }
- WriteBig(1, 1,'╔════════╗', TRUE);
- WriteBig(1, 9,'║ ║', TRUE);
- WriteBig(1,17,'╚════════╝', TRUE);
- FOR i := 0 TO 4 DO
- Move(Font[i,0], WriteBig_Font[Bu[i],0],8);
- WriteBig(14,9,'TOOLBOX', TRUE);
- Center(16, ' Demo für selbstdefinierte Zeichen ');
- NextPage(15);
- END;
-
- (* ------------------------------------------------------ *)
- PROCEDURE Titelbild;
-
- BEGIN
- WriteBig_NoChar := #176;
- WriteBig(1,1,' ',true);
- WriteBig(1,9,' ',true);
- center(14,' (c) 1988 by E. Ernst & TOOLBOX ');
- IF GrafTabl_geladen THEN
- Center(21,'GRAFTABL ist geladen.')
- ELSE BEGIN
- Center(21,'GRAFTABL ist nicht geladen!');
- Center(22,
- 'Die Zeichen [#128..#255] werden als Blanks dargestellt.');
- END;
- Center(25,
- 'Ihre Tastatur ist für die Dauer der Demo gesperrt !');
- FOR i := 0 TO 4 DO BEGIN
- WriteBig_Char := chr(223 - i);
- WriteBig(1,5,' WriteBig ',true);
- Wait(2);
- END;
- NextPage(10);
- END;
-
- (* ------------------------------------------------------ *)
- PROCEDURE Uhr;
- VAR s: STRING[2];
-
- BEGIN
- WriteBig(9,2,'Uhr-Demo',TRUE);
- WriteBig(8,14,'12:34:', TRUE);
- i := 30;
- REPEAT
- Str(i:2,s); WriteBig(56,14,s,TRUE); Wait(1); i := i + 1;
- UNTIL i > 56;
- NextPage(5);
- END;
-
- (* ------------------------------------------------------ *)
- PROCEDURE Zeichensatz;
- VAR k: BYTE;
-
- BEGIN
- WriteBig_NoChar := #250; WriteBig_Char := #219;
- WriteBig(1, 1,'DER ',TRUE);
- WriteBig(1, 9,'GELADENE ',TRUE);
- WriteBig(1,17,'ASCII-SATZ',TRUE);
- IF Graftabl_geladen THEN k := 31 ELSE k := 15;
- FOR i := 0 TO k DO BEGIN
- IF (i MOD 3 = 0) THEN NextPage(5);
- WriteBig_Char := Chr((i MOD 3) + 176);
- GotoXY(1, 1 + (i MOD 3) * 8);
- Write('#',i*8,'...');
- FOR j := 0 TO 7 DO
- WriteBig(10 + j*9, 1 + (i MOD 3)*8, Chr(i*8 + j), TRUE);
- END;
- END;
-
-
- (* ------------------------------------------------------ *)
- BEGIN
- ClrScr;
- HighVideo;
- Kbd_Lock(TRUE); { Tastatur sperren }
- WriteBig_Init; Titelbild;
- WriteBig_Init; Neue_Zeichen;
- WriteBig_Init; Uhr;
- WriteBig_Init; Zeichensatz;
- WriteBig_Reset;
- Kbd_Lock(false); { Tastatursperre aufheben }
- END.
-
- (* ------------------------------------------------------ *)
- (* Ende von BIGDEMO.PAS *)