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

    {
    > I have not seen a correct SetPixel routine for a planar 16 color mode.  It
    > does not have to be fast or optimized, just working correctly so I can see
    > how it's done.

    Well, I found something that you can fiddle around with, it's not exactly
    working (well, kind of), but it shows the principle... all the Ports are
    right, what's going in & out is right, just the FillChar needs to be fixed
    up to plot only a single pixel or group thereof.
    }
    Program Try_EGA;
    Uses CRT;

    Var Scr:Byte Absolute $A000:0;
        Loop:Word;

    Procedure Mode_10;
    Inline($B8/$0d/$00/$CD/$10);{Intr $10, AX=$000D}

    Procedure Write;
    Begin
     {Write mode}
     Port[$03CE]:=5;
     Port[$03CF]:=Port[$03CF] And $FC;
    End;

    Procedure Undo_Latches;
    Begin
     If Scr=1 Then
      Begin
      End;
    End;

    Procedure Bmp(Bmp:Byte);
    Begin
     {Plane}
     Port[$03CE]:=8;
     Port[$03CF]:=Bmp;
    End;

    Procedure Color(C:Word);
    Begin
     PortW[$03CE]:=C*256;
     PortW[$03CE]:=$0F01;
    End;

    Procedure Show(Bm,Clr:Word);
    Begin
     Bmp(Bm);
     Color(Clr);
     Undo_Latches;
     FillChar(Scr,8000,$FF);
     Delay(1000);
    End;

    Begin
     Mode_10;
     Write;

     Delay(1000);

     Show($11,1);
     Show($22,2);
     Show($44,3);
     Show($88,4);
     Show($10,5);
     Show($20,6);
     Show($40,7);
     Show($80,8);

     Delay(1000);
    End.
    {

    Bmp says which pixels of any group of 8 is affected... the screen looks like
    this:

    1234567812345678123456781234567812345678.....
    1234567812345678123456781234567812345678.....
    1234567812345678123456781234567812345678.....
    .
    .
    .

    Thus if you want the first & 3rd pixel green, do
    }
     Color(Green);
     Bmp(5);       {Bits 1 & 3 set}
     Undo_Latches;
     Mem[$A000:0]:=$FF; {I think}
    {
    I dont know what Undo_Latches does, but it seems to work...

    BTW, I saw mention of a VESA unit you were writing, as a reward for this
    information.... do I qualify? I'm very interested....
    }

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