home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1990 / 06 / grdlagen / cdemo1.pas < prev    next >
Pascal/Delphi Source File  |  1990-03-10  |  2KB  |  74 lines

  1. (* ====================================================== *)
  2. (*                      CDEMO1.PAS                        *)
  3. (*                EGA/VGA-BIOS-Serie Teil 3               *)
  4. (*  Exponenten, Fettschrift und Dünnschrift im Textmodus  *)
  5. (*           (C) 1990 Matthias Uphoff & TOOLBOX           *)
  6. (* ====================================================== *)
  7.  
  8. USES Dos, Crt, Bios3;
  9.  
  10. CONST CSize = 16;       (* Zeichenhöhe, für EGA: 14 *)
  11.  
  12. TYPE CharMatrix = ARRAY [0..CSize-1] OF BYTE;
  13.      FontType = ARRAY [0..255] OF CharMatrix;
  14.  
  15. VAR i,j:  WORD;
  16.     p:    Pointer;      (* Zeiger auf ROM-Font *)
  17.     Font2,
  18.     Font3: FontType;    (* Arrays für alternative Fonts *)
  19.  
  20. PROCEDURE SetVideoMode(Mode: BYTE);
  21.    (* Initialisiert Videomodus mit der Nr. Mode *)
  22.    VAR R: Registers;
  23. BEGIN
  24.   R.AH := 0;            (* Funktionsnummer *)
  25.   R.AL := Mode;
  26.   Intr($10,R);
  27. END;
  28.  
  29. BEGIN  (* Main *)
  30.   SetVideoMode(3);             (* Textmodus initialisieren*)
  31.   p := FontAddr(ROM8x16);      (* Für EGA: ROM8x14 *)
  32.   Move(p^,Font2,CSize*256);    (* Fonts ins RAM kopieren *)
  33.   Move(p^,Font3,CSize*256);
  34.   (* --- Fett- und Dünnschrift erzeugen --- *)
  35.   FOR i := 0 TO 255 DO
  36.     FOR j := 0 TO CharSize-1 DO BEGIN
  37.       Font2[i][j] := Font2[i][j] OR (Font2[i][j] SHR 1);
  38.       Font3[i][j] := Font3[i][j] AND (Font3[i][j] SHR 1);
  39.     END;
  40.   (* --- Neue Fonts in Block 1,2,3 installieren --- *)
  41.   ROMTextFont(ROM8x8,1,FALSE);
  42.   UserTextFont(2,CSize,256,0,TRUE,Font2);
  43.   UserTextFont(3,CSize,256,0,TRUE,Font3);
  44.   (* --- Bildschirm mit Text füllen --- *)
  45.   FOR i := 1 TO 25 DO BEGIN
  46.     GotoXY(i+4,i);
  47.     IF ODD(i) THEN BEGIN
  48.       TextColor(7);
  49.       Write('Normaler Font (Farbe 7 bzw. Block 0)');
  50.     END
  51.     ELSE BEGIN
  52.       TextColor(15);
  53.       Write(
  54.        'Alternativer Font (Farbe 15 bzw. Block 1/2/3)');
  55.     END;
  56.   END;
  57.   (* --- Umschaltung des Zeichensatzblocks --- *)
  58.   REPEAT
  59.     Delay(2000);
  60.     SelectBlock(0,1);  (* Font 0/1 anzeigen: hochgestellt *)
  61.     Delay(2000);
  62.     SelectBlock(0,2);  (* Font 0/2 anzeigen: Fettschrift *)
  63.     Delay(2000);
  64.     SelectBlock(0,3);  (* Font 0/3 anzeigen: Dünnschrift *)
  65.     Delay(2000);
  66.     SelectBlock(0,0);  (* Nur Font 0 anzeigen: hell/dunkel*)
  67.   UNTIL KeyPressed;
  68.   SetVideoMode(3);
  69. END.
  70.  
  71. (* ====================================================== *)
  72. (*                     Ende CDEMO1.PAS                    *)
  73.  
  74.