home *** CD-ROM | disk | FTP | other *** search
- (* ====================================================== *)
- (* CDEMO2.PAS *)
- (* EGA/VGA-BIOS-Serie Teil 3 *)
- (* Unterstreichen, Fett- und Dünnschrift im Grafikmodus *)
- (* (C) 1990 Matthias Uphoff & TOOLBOX *)
- (* ====================================================== *)
-
- USES Dos, Crt, Bios3;
-
- CONST VMode = $10; (* EGA-Grafik 640x350, 16 Farben *)
- CSize = 14; (* Zeichenhöhe *)
- Rows = 25; (* darstellbare Textzeilen *)
-
- TYPE CharMatrix = ARRAY [0..CSize-1] OF BYTE;
- FontType = ARRAY [0..255] OF CharMatrix;
-
- VAR i,j: WORD;
- p: Pointer; (* Zeiger auf ROM-Font *)
- Font1,
- Font2,
- Font3: FontType; (* Arrays für alternative Fonts *)
-
- PROCEDURE SetVideoMode(Mode: BYTE);
- (* Initialisiert Videomodus mit der Nr. Mode *)
- VAR R: Registers;
- BEGIN
- R.AH := 0; (* Funktionsnummer *)
- R.AL := Mode;
- Intr($10,R);
- END;
-
- BEGIN
- DirectVideo := FALSE; (* Crt-Textausgabe über BIOS !*)
- WindMax := $FFFF; (* Crt-Scrolling unterbinden *)
- TextColor(White);
- SetVideoMode(VMode); (* Grafikmodus initialisieren *)
- p := FontAddr(ROM8x14); (* 8x14-Font ins RAM kopieren *)
- Move(p^,Font1,CSize*256);
- Move(p^,Font2,CSize*256);
- Move(p^,Font3,CSize*256);
- (* --- Fett-, Dünnschrift u. Unterstreichen erzeugen ---*)
- FOR i := 0 TO 255 DO BEGIN
- Font1[i][CSize-1] := $FF;
- FOR j := 0 TO CharSize-1 DO BEGIN
- Font2[i][j] := Font2[i][j] OR (Font2[i][j] SHR 1);
- Font3[i][j] := Font3[i][j] AND (Font3[i][j] SHR 1);
- END;
- END;
- (* -- Verschieden Schriftarten durch Fontumschaltung -- *)
- FOR i := 1 TO 25 DO BEGIN
- CASE i MOD 4 OF
- 0: UserGraFont(CSize,Rows,p^); (* normal *)
- 1:;(* UserGrafont(CSize,Rows,Font1);*) (* unterstrichen *)
- 2:; (* UserGrafont(CSize,Rows,Font2);*) (* fett *)
- 3: UserGrafont(CSize,Rows,Font3); (* dünn *)
- END;
- GotoXY(i+5,i);
- Write('Variable BIOS-Textausgabe im Textmodus');
- END;
- REPEAT UNTIL KeyPressed;
- SetVideoMode(3);
- END.
-
- (* ====================================================== *)
- (* Ende CDEMO2.PAS *)