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

    {
    MARC BIR

    >My second problem is the video memory.  From my technical
    >reference manual, it tells me that the address starts at segment A000H,
    >offset 0000H.  I've been Programming the VGA 320x200x256 mode quite alot,
    >but in the EGA address, whenever I Write to video memory, all I see is
    >black and white, like monochrome.  if I will be happy if I get information
    >about that.  Another thing that actually question me is that when I'm
    >using the BIOS block palette to create a fade in/out, it makes the screen
    >flicker, which is quite disturbing.  What Info I need is how the VGA port
    JS>works on setting up the RGB palette.  Thanks.

    How do you init. the mode?  Call int 10h With 13h?  if so then using
    A000:0000 is correct.  As far as fading, use the following.
    }

    Type
     PalType = Array [0..255, 0..2] of Byte;

    Procedure SetPalette(Color, Count : Byte; Palette : PalType);
    Var
      Ct, Col : Byte;
    begin
      Port[$3C8] := Color;     { First color to set, Change this to $3C7 to
                                 read.  And switch the Port=Pal at bottom }
      For Ct := 1 to Count Do  { Count is the total number of DACs to set }
      For Col := 0 to 2 Do     { Sets the Red, Green and Blue }
        Port[$3C9] :=  Palette[Ct, Col];
    end;

    Procedure SetMode(Mode : Byte); Assembler;
    Asm
      Mov AH, 0
      Mov AL, Mode
      Int 10h
    end;

    {You can test your mode set With this }
    Procedure TestScreen;
    Var
      X, Y : Integer;
    begin
     For X := 0 to 319 Do
       For Y := 0 to 199 Do
         Mem[$A000 : Y * 320 + X] := (X * Y) Mod 256;
    end;

    begin
      SetMode($13);
      TestScreen;
    end.

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