1
« en: Sábado 21 de Diciembre de 2002, 19:16 »
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