• Martes 18 de Junio de 2019, 06:43

Autor Tema:  GetPixel en VESA  (Leído 1205 veces)

explode

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
    • http://www.geocities.com/brad_web
GetPixel en VESA
« en: Sábado 21 de Diciembre de 2002, 19:16 »
0
Pues es que no se como voltear esta rutina de dibujar un punto, para que en vez de dibujarlo(putpixel) lo recoga (getpixel):
Esta es la rutina que uso para dibujar el punto

procedure Punto(x, y : word; color : byte);
begin

if (_mode='vesa') and (x<640) and (y<400) then begin
asm
     mov bx, x           {bx := x                                     }
     mov cl, bl          {cl := Low(x)                               }
     and cl, 3           {cl := x mod 4                             }
     mov ax, $0100       {ah := 1; al := 0                         }
     shl ah, cl          {ah := 2^(x mod 4)                       }
     or  al, 2           {ax = 256 shl (x mod 4) + 2             }
     mov dx, SEQU        {puerto del secuenciador               }
     out dx, ax          {selecciona el plano adecuado al punto}
     mov dx, y           {dx := y                         }
     mov di, dx          {di := y                        }
     shl di, 7           {di := y * 128                 }
     shl dx, 5           {dx := y *  32                }
     add di, dx          {di := y * 160               }
     shr bx, 2           {bx := x div 4              }
     add di, bx          {di = 160 * y + x div 4    }
     mov dx, $A000
     mov es, dx          {es := $A000 ; di = offset}
     mov al, color
     stosb
  end;end
else if (x<320) and (y<200) then  mem[$a000:(320*y)+x]:=color;
end;
 
Gracias a todos