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

    {
    >Well, I have a procedure to return the VGA palette registers in BYTE
    >vars called like

    >GetColor(Color,Red,Green,Blue:BYTE);

    This will not return anything as they will be removed from the Stack.  You
    can pass like this, but you can no receive.  You must use Var R,G,B:Byte;

    >I want to do thgis, but in assembler:

    >³³   PORT[$3C8] := Color;
    >³³   Red        := PORT[$3C9];
    >³³   Green      := PORT[$3C9];
    >³³   Blue       := PORT[$3C9];

    >but in assembler....argh, any ideas?
    }

    Procedure VGAReadDAC(Reg:Byte; Var R,G,B:Byte); Assembler;
    ASM
      MOV   DX,3C7h                     {; |Send Starting DAC Register    }
      MOV   AL,[Reg]                    {; |                              }
      OUT   DX,AL                       {;/                               }
      INC   DX                          {; |DX:=DAC Data Address          }
      INC   DX                          {;/                               }
      IN    AL,DX                       {; |Read Red Byte                 }
      LES   DI,[R]                      {; |                              }
      MOV   [ES:DI],AL                  {;/                               }
      IN    AL,DX                       {; |Read Green Byte               }
      LES   DI,[G]                      {; |                              }
      MOV   [ES:DI],AL                  {;/                               }
      IN    AL,DX                       {; |Read Blue Byte                }
      LES   DI,[B]                      {; |                              }
      MOV   [ES:DI],AL                  {;/                               }
    End;

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