mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-12 13:06:18 +02:00
* fixed 16 color vesa get/putpixel offsets (patch by Nikolay Nikolov,
mantis #16806) git-svn-id: trunk@15490 -
This commit is contained in:
parent
01f11e8ada
commit
18542d663e
@ -1503,8 +1503,8 @@ end;
|
|||||||
Port[$3ce] := 8; { Index 08 : Bitmask register. }
|
Port[$3ce] := 8; { Index 08 : Bitmask register. }
|
||||||
Port[$3cf] := $80 shr (x and $7); { Select correct bits to modify }
|
Port[$3cf] := $80 shr (x and $7); { Select correct bits to modify }
|
||||||
|
|
||||||
dummy := Mem[WinWriteSeg: offs]; { Latch the data into host space. }
|
dummy := Mem[WinWriteSeg: word(offs)]; { Latch the data into host space. }
|
||||||
Mem[WinWriteSeg: offs] := dummy; { Write the data into video memory }
|
Mem[WinWriteSeg: word(offs)] := dummy; { Write the data into video memory }
|
||||||
PortW[$3ce] := $ff08; { Enable all bit planes. }
|
PortW[$3ce] := $ff08; { Enable all bit planes. }
|
||||||
PortW[$3ce] := $0001; { Index 01 : Disable ops on all four planes. }
|
PortW[$3ce] := $0001; { Index 01 : Disable ops on all four planes. }
|
||||||
{ }
|
{ }
|
||||||
@ -1512,7 +1512,8 @@ end;
|
|||||||
|
|
||||||
|
|
||||||
Function GetPixVESA16(X,Y: smallint):word; {$ifndef fpc}far;{$endif fpc}
|
Function GetPixVESA16(X,Y: smallint):word; {$ifndef fpc}far;{$endif fpc}
|
||||||
Var dummy, offset: Word;
|
Var dummy: Word;
|
||||||
|
offset: longint;
|
||||||
shift: byte;
|
shift: byte;
|
||||||
Begin
|
Begin
|
||||||
X:= X + StartXViewPort;
|
X:= X + StartXViewPort;
|
||||||
@ -1522,13 +1523,13 @@ end;
|
|||||||
Port[$3ce] := 4;
|
Port[$3ce] := 4;
|
||||||
shift := 7 - (X and 7);
|
shift := 7 - (X and 7);
|
||||||
Port[$3cf] := 0;
|
Port[$3cf] := 0;
|
||||||
dummy := (Mem[WinReadSeg:offset] shr shift) and 1;
|
dummy := (Mem[WinReadSeg:word(offset)] shr shift) and 1;
|
||||||
Port[$3cf] := 1;
|
Port[$3cf] := 1;
|
||||||
dummy := dummy or (((Mem[WinReadSeg:offset] shr shift) and 1) shl 1);
|
dummy := dummy or (((Mem[WinReadSeg:word(offset)] shr shift) and 1) shl 1);
|
||||||
Port[$3cf] := 2;
|
Port[$3cf] := 2;
|
||||||
dummy := dummy or (((Mem[WinReadSeg:offset] shr shift) and 1) shl 2);
|
dummy := dummy or (((Mem[WinReadSeg:word(offset)] shr shift) and 1) shl 2);
|
||||||
Port[$3cf] := 3;
|
Port[$3cf] := 3;
|
||||||
dummy := dummy or (((Mem[WinReadSeg:offset] shr shift) and 1) shl 3);
|
dummy := dummy or (((Mem[WinReadSeg:word(offset)] shr shift) and 1) shl 3);
|
||||||
GetPixVESA16 := dummy;
|
GetPixVESA16 := dummy;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -1574,8 +1575,8 @@ end;
|
|||||||
Port[$3ce] := 8; { Index 08 : Bitmask register. }
|
Port[$3ce] := 8; { Index 08 : Bitmask register. }
|
||||||
Port[$3cf] := $80 shr (x and $7); { Select correct bits to modify }
|
Port[$3cf] := $80 shr (x and $7); { Select correct bits to modify }
|
||||||
|
|
||||||
dummy := Mem[WinWriteSeg: offs]; { Latch the data into host space. }
|
dummy := Mem[WinWriteSeg: word(offs)]; { Latch the data into host space. }
|
||||||
Mem[WinWriteSeg: offs] := dummy; { Write the data into video memory }
|
Mem[WinWriteSeg: word(offs)] := dummy; { Write the data into video memory }
|
||||||
PortW[$3ce] := $ff08; { Enable all bit planes. }
|
PortW[$3ce] := $ff08; { Enable all bit planes. }
|
||||||
PortW[$3ce] := $0001; { Index 01 : Disable ops on all four planes. }
|
PortW[$3ce] := $0001; { Index 01 : Disable ops on all four planes. }
|
||||||
end;
|
end;
|
||||||
|
Loading…
Reference in New Issue
Block a user