[Back to EGAVGA SWAG index] [Back to Main SWAG index] [Original]

    {
    PETER WOKKE

    > anyone know a way to set the DAC registers that's faster than int $10?
    }

    PROGRAM vga_in_mode_13;

    { VGA in Mode $13  320 x 200 and 256 Colors for Turbo Pascal 6.0 }

    USES
      Dos, Crt;

    Procedure Plot(x, y : Integer; color : Byte);
    Begin
      Mem[$A000 : word(y * 320 + x)] := color;
    End;

    Procedure set_rgb(reg, Red, Green, Blue : Byte);
    Begin
      Port[$3C8] := reg;
      Inline($FA);
      Port[$3C9] := Red;
      Port[$3C9] := Green;
      Port[$3C9] := Blue;
      Inline($FB);
    End;

    Var
      x, y     : Integer;
      reg      : Registers;
      savemode : Byte;
      n        : Byte;
    Begin
      reg.AX := $0F00;
      Intr($10, reg);
      savemode := reg.al;

      reg.AX := $0013;
      Intr($10, reg);

      For n := 0 TO 63 Do
        set_rgb(n, n, 0, 0);
      For n := 63 Downto 0 Do
        set_rgb(127 - n, n, 0, 0);
      For n := 128 TO 191 Do
        set_rgb(n, 0, 0, n);

      For y := 0 TO 191 Do
         For x := 0 TO 319 Do
            Plot(x, y, y);
      Readln;

      reg.AX := savemode;
      Intr($10, reg);
    END.

[Back to EGAVGA SWAG index] [Back to Main SWAG index] [Original]