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

    I heard (read?) that you wanted to find out how to do 256-colour Graphics.
    Here are some Procedures For you.

    Uses Dos;   { if your Program doesn't already :) }

    Procedure SetGrMode(grMode : Byte);  { enters a given Graphics mode }
    { does *not* check For presence of VGA -- use With caution!! }
    Var
       r : Registers;
    begin
         r.AX := grMode;
         Intr($10, R);
    end;

    Procedure PutPixel256(p_x, p_y : Integer; p_c : Byte);
    begin
         Mem[$A000 : p_y * 320 + p_x] := p_c;
    end;

    OK, With the SetGrMode Procedure, to enter 256-colour mode, call the Program
    with a value of $13.  So:  SetGrMode($13);
    And to return to Text mode, call:  SetGrMode($03);
    The second Procedure is self-explanatory, With a few bits of info required.
    The valid co-ords are 0..319 (horizontal) x 0..199 (vertical), so you can't use
    GetMaxX or GetMaxY, unless you define them as Constants in the beginning of
    your Program.  The colour is in the range 0..255.

    *WARNING*  These Procedure will not work together With a BGI driver or the
    Graph Unit.  If you enter Graphics mode With my Procedure, you will not be able
    to output Text, boxes, circles, etc. unless you Write your own Procedures for
    the above.

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