|
@@ -1,15 +1,7 @@
|
|
|
{
|
|
|
$Id$
|
|
|
}
|
|
|
-{ How this works: }
|
|
|
-{ QueryAdapter - Va chercher tout les modes videos et drivers }
|
|
|
-{ disponibles sur cette carte, et les mets dans une linked list }
|
|
|
-{ en ordre de driver number, et a l'interieur de cela, dans un }
|
|
|
-{ ordre croissant de mode number. }
|
|
|
-{ DetectGraph - Verifie si la liste chainee de drivers existe, sinon }
|
|
|
-{ apelle QueryAdapter }
|
|
|
-{ InitGraph - Appelle DetectGraph, et verifie que le mode demande existe}
|
|
|
-{ bel et bien et est disponible sur ce PC }
|
|
|
+
|
|
|
{$ifndef fpc}
|
|
|
{$ifndef noasmgraph}
|
|
|
{$define asmgraph}
|
|
@@ -114,6 +106,7 @@
|
|
|
pop es
|
|
|
end ['ESI','EDI','ECX','EAX']
|
|
|
end;
|
|
|
+
|
|
|
{$endif tp}
|
|
|
|
|
|
{************************************************************************}
|
|
@@ -178,14 +171,15 @@
|
|
|
end;
|
|
|
{$ifndef asmgraph}
|
|
|
offset := y * 80 + (x shr 3) + VideoOfs;
|
|
|
- PortW[$3ce] := $f01;
|
|
|
- PortW[$3ce] := Pixel shl 8;
|
|
|
- PortB[$3ce] := 8;
|
|
|
- PortW[$3cf] := $80 shr (x and $7) + (Pixel shl 8);
|
|
|
- dummy := Mem[$a000: offset];
|
|
|
- Mem[$a000: offset] := dummy;
|
|
|
- PortW[$3ce] := $ff08;
|
|
|
- PortB[$3ce] := 1;
|
|
|
+ PortW[$3ce] := $0f01; { Index 01 : Enable ops on all 4 planes }
|
|
|
+ PortW[$3ce] := Pixel shl 8; { Index 00 : Enable correct plane and write color }
|
|
|
+
|
|
|
+ Port[$3ce] := 8;
|
|
|
+ Port[$3cf] := $80 shr (x and $7); { Select correct bits to modify }
|
|
|
+ dummy := Mem[$a000: offset]; { Latch the data into host space. }
|
|
|
+ Mem[$a000: offset] := dummy; { Write the data into video memory }
|
|
|
+ PortW[$3ce] := $ff08; { Enable all bit planes. }
|
|
|
+ PortW[$3ce] := $0001; { Index 01 : Disable ops on all four planes. }
|
|
|
{$else asmgraph}
|
|
|
asm
|
|
|
{$ifndef fpc}
|
|
@@ -275,15 +269,15 @@
|
|
|
Y:= Y + StartYViewPort;
|
|
|
{$ifndef asmgraph}
|
|
|
offset := Y * 80 + (x shr 3) + VideoOfs;
|
|
|
- PortB[$3ce] := 4;
|
|
|
+ Port[$3ce] := 4;
|
|
|
shift := 7 - (X and 7);
|
|
|
- PortB[$3cf] := 0;
|
|
|
+ Port[$3cf] := 0;
|
|
|
dummy := (Mem[$a000:offset] shr shift) and 1;
|
|
|
- PortB[$3cf] := 1;
|
|
|
+ Port[$3cf] := 1;
|
|
|
dummy := dummy or (((Mem[$a000:offset] shr shift) and 1) shl 1);
|
|
|
- PortB[$3cf] := 2;
|
|
|
+ Port[$3cf] := 2;
|
|
|
dummy := dummy or (((Mem[$a000:offset] shr shift) and 1) shl 2);
|
|
|
- PortB[$3cf] := 3;
|
|
|
+ Port[$3cf] := 3;
|
|
|
dummy := dummy or (((Mem[$a000:offset] shr shift) and 1) shl 3);
|
|
|
GetPixel16 := dummy;
|
|
|
{$else asmgraph}
|
|
@@ -431,7 +425,7 @@ Begin
|
|
|
{$ifdef logging}
|
|
|
LogLn('GetScanLine16 start, length to get: '+strf(ViewWidth+1)+' at y = '+strf(y));
|
|
|
{$Endif logging}
|
|
|
- PortB[$3ce] := 4;
|
|
|
+ Port[$3ce] := 4;
|
|
|
offset := (Y + StartYViewPort) * 80 + (StartXViewPort shr 3) + VideoOfs;
|
|
|
{$ifdef logging}
|
|
|
LogLn('Offset: '+HexStr(offset,4)+' - ' + strf(offset));
|
|
@@ -463,7 +457,7 @@ Begin
|
|
|
{$Endif logging}
|
|
|
If amount = 0 Then Exit;
|
|
|
{ first get everything from plane 3 (4th plane) }
|
|
|
- PortB[$3cf] := 3;
|
|
|
+ Port[$3cf] := 3;
|
|
|
Count := 0;
|
|
|
For Count := 1 to (amount shr 5) Do
|
|
|
Begin
|
|
@@ -485,7 +479,7 @@ Begin
|
|
|
Repeat
|
|
|
Dec(Index,Count*32);
|
|
|
Dec(plane);
|
|
|
- PortB[$3cf] := plane;
|
|
|
+ Port[$3cf] := plane;
|
|
|
Count := 0;
|
|
|
For Count := 1 to (amount shr 5) Do
|
|
|
Begin
|
|
@@ -585,12 +579,12 @@ End;
|
|
|
offset := Y * 80 + (X shr 3) + VideoOfs;
|
|
|
PortW[$3ce] := $f01;
|
|
|
PortW[$3ce] := Color shl 8;
|
|
|
- PortB[$3ce] := 8;
|
|
|
- PortW[$3cf] := $80 shr (X and 7) + (Color shl 8);
|
|
|
+ Port[$3ce] := 8;
|
|
|
+ Port[$3cf] := $80 shr (X and 7);
|
|
|
dummy := Mem[$a000: offset];
|
|
|
Mem[$a000: offset] := dummy;
|
|
|
PortW[$3ce] := $ff08;
|
|
|
- PortB[$3ce] := 1;
|
|
|
+ PortW[$3ce] := $0001;
|
|
|
{$else asmgraph}
|
|
|
asm
|
|
|
{$ifndef fpc}
|
|
@@ -685,7 +679,7 @@ End;
|
|
|
{$endif asmgraph}
|
|
|
end;
|
|
|
|
|
|
-{$ifndef tp}
|
|
|
+
|
|
|
procedure HLine16(x,x2,y: integer); {$ifndef fpc}far;{$endif fpc}
|
|
|
|
|
|
var
|
|
@@ -734,28 +728,28 @@ End;
|
|
|
{$endif}
|
|
|
if HLength=0 then
|
|
|
LMask:=LMask and RMask;
|
|
|
- port[$3ce]:=0;
|
|
|
+ Port[$3ce]:=0;
|
|
|
If CurrentWriteMode <> NotPut Then
|
|
|
- port[$3cf]:= CurrentColor
|
|
|
- else port[$3cf]:= not CurrentColor;
|
|
|
- port[$3ce]:=1;
|
|
|
- port[$3cf]:=$f;
|
|
|
- port[$3ce]:=3;
|
|
|
+ Port[$3cf]:= CurrentColor
|
|
|
+ else Port[$3cf]:= not CurrentColor;
|
|
|
+ Port[$3ce]:=1;
|
|
|
+ Port[$3cf]:=$f;
|
|
|
+ Port[$3ce]:=3;
|
|
|
case CurrentWriteMode of
|
|
|
XORPut:
|
|
|
- port[$3cf]:=3 shl 3;
|
|
|
+ Port[$3cf]:=3 shl 3;
|
|
|
ANDPut:
|
|
|
- port[$3cf]:=1 shl 3;
|
|
|
+ Port[$3cf]:=1 shl 3;
|
|
|
ORPut:
|
|
|
- port[$3cf]:=2 shl 3;
|
|
|
+ Port[$3cf]:=2 shl 3;
|
|
|
NormalPut, NotPut:
|
|
|
- port[$3cf]:=0
|
|
|
+ Port[$3cf]:=0
|
|
|
else
|
|
|
- port[$3cf]:=0
|
|
|
+ Port[$3cf]:=0
|
|
|
end;
|
|
|
|
|
|
- port[$3ce]:=8;
|
|
|
- port[$3cf]:=LMask;
|
|
|
+ Port[$3ce]:=8;
|
|
|
+ Port[$3cf]:=LMask;
|
|
|
{$ifopt r+}
|
|
|
{$define rangeOn}
|
|
|
{$r-}
|
|
@@ -773,18 +767,22 @@ End;
|
|
|
{$undef overflowOn}
|
|
|
{$q+}
|
|
|
{$endif}
|
|
|
- port[$3ce]:=8;
|
|
|
+ Port[$3ce]:=8;
|
|
|
if HLength>0 then
|
|
|
begin
|
|
|
dec(HLength);
|
|
|
inc(ScrOfs);
|
|
|
if HLength>0 then
|
|
|
begin
|
|
|
- port[$3cf]:=$ff;
|
|
|
+ Port[$3cf]:=$ff;
|
|
|
+{$ifndef tp}
|
|
|
seg_bytemove(dosmemselector,$a0000+ScrOfs,dosmemselector,$a0000+ScrOfs,HLength);
|
|
|
+{$else}
|
|
|
+ move(Ptr(SegA000,ScrOfs)^, Ptr(SegA000,ScrOfs)^, HLength);
|
|
|
+{$endif}
|
|
|
ScrOfs:=ScrOfs+HLength;
|
|
|
end;
|
|
|
- port[$3cf]:=RMask;
|
|
|
+ Port[$3cf]:=RMask;
|
|
|
{$ifopt r+}
|
|
|
{$define rangeOn}
|
|
|
{$r-}
|
|
@@ -803,14 +801,14 @@ End;
|
|
|
{$q+}
|
|
|
{$endif}
|
|
|
end;
|
|
|
- // clean up
|
|
|
- port[$3cf]:=0;
|
|
|
- port[$3ce]:=8;
|
|
|
- port[$3cf]:=$ff;
|
|
|
- port[$3ce]:=1;
|
|
|
- port[$3cf]:=0;
|
|
|
- port[$3ce]:=3;
|
|
|
- port[$3cf]:=0;
|
|
|
+ { clean up }
|
|
|
+ Port[$3cf]:=0;
|
|
|
+ Port[$3ce]:=8;
|
|
|
+ Port[$3cf]:=$ff;
|
|
|
+ Port[$3ce]:=1;
|
|
|
+ Port[$3cf]:=0;
|
|
|
+ Port[$3ce]:=3;
|
|
|
+ Port[$3cf]:=0;
|
|
|
end;
|
|
|
|
|
|
procedure VLine16(x,y,y2: integer); {$ifndef fpc}far;{$endif fpc}
|
|
@@ -840,26 +838,26 @@ End;
|
|
|
end;
|
|
|
ScrOfs:=y*ScrWidth+x div 8;
|
|
|
BitMask:=$80 shr (x and 7);
|
|
|
- port[$3ce]:=0;
|
|
|
+ Port[$3ce]:=0;
|
|
|
If CurrentWriteMode <> NotPut Then
|
|
|
- port[$3cf]:= CurrentColor
|
|
|
- else port[$3cf]:= not CurrentColor;
|
|
|
- port[$3ce]:=1;
|
|
|
- port[$3cf]:=$f;
|
|
|
- port[$3ce]:=8;
|
|
|
- port[$3cf]:=BitMask;
|
|
|
- port[$3ce]:=3;
|
|
|
+ Port[$3cf]:= CurrentColor
|
|
|
+ else Port[$3cf]:= not CurrentColor;
|
|
|
+ Port[$3ce]:=1;
|
|
|
+ Port[$3cf]:=$f;
|
|
|
+ Port[$3ce]:=8;
|
|
|
+ Port[$3cf]:=BitMask;
|
|
|
+ Port[$3ce]:=3;
|
|
|
case CurrentWriteMode of
|
|
|
XORPut:
|
|
|
- port[$3cf]:=3 shl 3;
|
|
|
+ Port[$3cf]:=3 shl 3;
|
|
|
ANDPut:
|
|
|
- port[$3cf]:=1 shl 3;
|
|
|
+ Port[$3cf]:=1 shl 3;
|
|
|
ORPut:
|
|
|
- port[$3cf]:=2 shl 3;
|
|
|
+ Port[$3cf]:=2 shl 3;
|
|
|
NormalPut, NotPut:
|
|
|
- port[$3cf]:=0
|
|
|
+ Port[$3cf]:=0
|
|
|
else
|
|
|
- port[$3cf]:=0
|
|
|
+ Port[$3cf]:=0
|
|
|
end;
|
|
|
for i:=y to y2 do
|
|
|
begin
|
|
@@ -882,37 +880,36 @@ End;
|
|
|
{$endif}
|
|
|
ScrOfs:=ScrOfs+ScrWidth;
|
|
|
end;
|
|
|
- // clean up
|
|
|
- port[$3cf]:=0;
|
|
|
- port[$3ce]:=8;
|
|
|
- port[$3cf]:=$ff;
|
|
|
- port[$3ce]:=1;
|
|
|
- port[$3cf]:=0;
|
|
|
- port[$3ce]:=3;
|
|
|
- port[$3cf]:=0;
|
|
|
+ { clean up }
|
|
|
+ Port[$3cf]:=0;
|
|
|
+ Port[$3ce]:=8;
|
|
|
+ Port[$3cf]:=$ff;
|
|
|
+ Port[$3ce]:=1;
|
|
|
+ Port[$3cf]:=0;
|
|
|
+ Port[$3ce]:=3;
|
|
|
+ Port[$3cf]:=0;
|
|
|
End;
|
|
|
-{$endif tp}
|
|
|
|
|
|
|
|
|
procedure SetVisual480(page: word); {$ifndef fpc}far;{$endif fpc}
|
|
|
- { no page flipping support in 640x480 mode }
|
|
|
+ { no page flipping supPort in 640x480 mode }
|
|
|
begin
|
|
|
VideoOfs := 0;
|
|
|
end;
|
|
|
|
|
|
procedure SetActive480(page: word); {$ifndef fpc}far;{$endif fpc}
|
|
|
- { no page flipping support in 640x480 mode }
|
|
|
+ { no page flipping supPort in 640x480 mode }
|
|
|
begin
|
|
|
VideoOfs := 0;
|
|
|
end;
|
|
|
|
|
|
|
|
|
procedure SetVisual200(page: word); {$ifndef fpc}far;{$endif fpc}
|
|
|
- { two page support... }
|
|
|
+ { two page supPort... }
|
|
|
begin
|
|
|
if page > HardwarePages then exit;
|
|
|
asm
|
|
|
- mov ax,[page] { only lower byte is supported. }
|
|
|
+ mov ax,[page] { only lower byte is supPorted. }
|
|
|
mov ah,05h
|
|
|
{$ifdef fpc}
|
|
|
push ebp
|
|
@@ -937,7 +934,7 @@ End;
|
|
|
end;
|
|
|
|
|
|
procedure SetActive200(page: word); {$ifndef fpc}far;{$endif fpc}
|
|
|
- { two page support... }
|
|
|
+ { two page supPort... }
|
|
|
begin
|
|
|
case page of
|
|
|
0 : VideoOfs := 0;
|
|
@@ -949,11 +946,11 @@ End;
|
|
|
end;
|
|
|
|
|
|
procedure SetVisual350(page: word); {$ifndef fpc}far;{$endif fpc}
|
|
|
- { one page support... }
|
|
|
+ { one page supPort... }
|
|
|
begin
|
|
|
if page > HardwarePages then exit;
|
|
|
asm
|
|
|
- mov ax,[page] { only lower byte is supported. }
|
|
|
+ mov ax,[page] { only lower byte is supPorted. }
|
|
|
mov ah,05h
|
|
|
{$ifdef fpc}
|
|
|
push ebp
|
|
@@ -966,7 +963,7 @@ End;
|
|
|
end;
|
|
|
|
|
|
procedure SetActive350(page: word); {$ifndef fpc}far;{$endif fpc}
|
|
|
- { one page support... }
|
|
|
+ { one page supPort... }
|
|
|
begin
|
|
|
case page of
|
|
|
0 : VideoOfs := 0;
|
|
@@ -1030,7 +1027,7 @@ End;
|
|
|
add edi, [VideoOfs]
|
|
|
shl ebx, 6
|
|
|
add edi, ebx
|
|
|
- mov ax, pixel
|
|
|
+ mov ax, [pixel]
|
|
|
mov fs:[edi+ebx*4+$a0000], al
|
|
|
{$endif fpc}
|
|
|
end;
|
|
@@ -1125,12 +1122,12 @@ End;
|
|
|
|
|
|
|
|
|
procedure SetVisual320(page: word); {$ifndef fpc}far;{$endif fpc}
|
|
|
- { no page support... }
|
|
|
+ { no page supPort... }
|
|
|
begin
|
|
|
end;
|
|
|
|
|
|
procedure SetActive320(page: word); {$ifndef fpc}far;{$endif fpc}
|
|
|
- { no page support... }
|
|
|
+ { no page supPort... }
|
|
|
begin
|
|
|
VideoOfs := 0;
|
|
|
end;
|
|
@@ -1161,7 +1158,7 @@ const CrtAddress: word = 0;
|
|
|
{$ifdef fpc}
|
|
|
pop ebp
|
|
|
{$EndIf fpc}
|
|
|
- MOV DX,03C4h {select memory-mode-register at sequencer port }
|
|
|
+ MOV DX,03C4h {select memory-mode-register at sequencer Port }
|
|
|
MOV AL,04
|
|
|
OUT DX,AL
|
|
|
INC DX {read in data via the according data register }
|
|
@@ -1195,7 +1192,7 @@ const CrtAddress: word = 0;
|
|
|
pop es
|
|
|
{$EndIf fpc}
|
|
|
MOV DX,CRTAddress {address the underline-location-register at }
|
|
|
- MOV AL,14h {the CRT-controller port, read out the according }
|
|
|
+ MOV AL,14h {the CRT-controller Port, read out the according }
|
|
|
OUT DX,AL {data register: }
|
|
|
INC DX
|
|
|
IN AL,DX
|
|
@@ -1280,7 +1277,7 @@ const CrtAddress: word = 0;
|
|
|
end;
|
|
|
|
|
|
procedure SetVisualX(page: word); {$ifndef fpc}far;{$endif fpc}
|
|
|
- { 4 page support... }
|
|
|
+ { 4 page supPort... }
|
|
|
|
|
|
Procedure SetVisibleStart(AOffset: word); Assembler;
|
|
|
(* Select where the left corner of the screen will be *)
|
|
@@ -1336,7 +1333,7 @@ const CrtAddress: word = 0;
|
|
|
end;
|
|
|
|
|
|
procedure SetActiveX(page: word); {$ifndef fpc}far;{$endif fpc}
|
|
|
- { 4 page support... }
|
|
|
+ { 4 page supPort... }
|
|
|
begin
|
|
|
case page of
|
|
|
0: VideoOfs := 0;
|
|
@@ -1415,8 +1412,12 @@ const CrtAddress: word = 0;
|
|
|
dummy := CurrentColor;
|
|
|
offset := y * 80 + x shr 2 + VideoOfs;
|
|
|
PortW[$3c4] := FirstPlane shl (x and 3);
|
|
|
- If CurrentWriteMode = XorPut Then
|
|
|
- dummy := dummy xor Mem[$a000: offset];
|
|
|
+ case CurrentWriteMode of
|
|
|
+ XorPut: dummy := dummy xor Mem[$a000:offset];
|
|
|
+ OrPut: dummy := dummy or Mem[$a000:offset];
|
|
|
+ AndPut: dummy := dummy and Mem[$a000:offset];
|
|
|
+ NotPut: dummy := Not dummy;
|
|
|
+ end;
|
|
|
Mem[$a000: offset] := Dummy;
|
|
|
end;
|
|
|
{$else asmgraph}
|
|
@@ -1462,7 +1463,7 @@ const CrtAddress: word = 0;
|
|
|
SavePtr : pointer; { pointer to video state }
|
|
|
StateSize: word; { size in 64 byte blocks for video state }
|
|
|
VideoMode: byte; { old video mode before graph mode }
|
|
|
- SaveSupported : Boolean; { Save/Restore video state supported? }
|
|
|
+ SaveSupPorted : Boolean; { Save/Restore video state supPorted? }
|
|
|
|
|
|
|
|
|
{**************************************************************}
|
|
@@ -1477,7 +1478,7 @@ const CrtAddress: word = 0;
|
|
|
PtrLong: longint;
|
|
|
regs: TDPMIRegisters;
|
|
|
begin
|
|
|
- SaveSupported := FALSE;
|
|
|
+ SaveSupPorted := FALSE;
|
|
|
SavePtr := nil;
|
|
|
{ Get the video mode }
|
|
|
asm
|
|
@@ -1499,10 +1500,10 @@ const CrtAddress: word = 0;
|
|
|
mov [StateSize], bx
|
|
|
cmp al,01ch
|
|
|
jnz @notok
|
|
|
- mov [SaveSupported],TRUE
|
|
|
+ mov [SaveSupPorted],TRUE
|
|
|
@notok:
|
|
|
end;
|
|
|
- if SaveSupported then
|
|
|
+ if SaveSupPorted then
|
|
|
begin
|
|
|
|
|
|
{$ifndef fpc}
|
|
@@ -1558,11 +1559,11 @@ const CrtAddress: word = 0;
|
|
|
end;
|
|
|
{ then restore all state information }
|
|
|
{$ifndef fpc}
|
|
|
- if assigned(SavePtr) and (SaveSupported=TRUE) then
|
|
|
+ if assigned(SavePtr) and (SaveSupPorted=TRUE) then
|
|
|
{$else fpc}
|
|
|
- { No far pointer support, so it's possible that that assigned(SavePtr) }
|
|
|
+ { No far pointer supPort, so it's possible that that assigned(SavePtr) }
|
|
|
{ would return false under FPC. Just check if it's different from nil. }
|
|
|
- if (SavePtr <> nil) and (SaveSupported=TRUE) then
|
|
|
+ if (SavePtr <> nil) and (SaveSupPorted=TRUE) then
|
|
|
{$endif fpc}
|
|
|
begin
|
|
|
FillChar(regs, sizeof(regs), #0);
|
|
@@ -1594,7 +1595,7 @@ const CrtAddress: word = 0;
|
|
|
Procedure SaveStateVGA; far;
|
|
|
begin
|
|
|
SavePtr := nil;
|
|
|
- SaveSupported := FALSE;
|
|
|
+ SaveSupPorted := FALSE;
|
|
|
{ Get the video mode }
|
|
|
asm
|
|
|
mov ah,0fh
|
|
@@ -1609,10 +1610,10 @@ const CrtAddress: word = 0;
|
|
|
mov [StateSize], bx
|
|
|
cmp al,01ch
|
|
|
jnz @notok
|
|
|
- mov [SaveSupported],TRUE
|
|
|
+ mov [SaveSupPorted],TRUE
|
|
|
@notok:
|
|
|
end;
|
|
|
- if SaveSupported then
|
|
|
+ if SaveSupPorted then
|
|
|
Begin
|
|
|
GetMem(SavePtr, 64*StateSize); { values returned in 64-byte blocks }
|
|
|
if not assigned(SavePtr) then
|
|
@@ -1646,7 +1647,7 @@ const CrtAddress: word = 0;
|
|
|
end;
|
|
|
|
|
|
{ then restore all state information }
|
|
|
- if assigned(SavePtr) and (SaveSupported=TRUE) then
|
|
|
+ if assigned(SavePtr) and (SaveSupPorted=TRUE) then
|
|
|
begin
|
|
|
{ restore state, according to Ralph Brown Interrupt list }
|
|
|
asm
|
|
@@ -1695,15 +1696,12 @@ const CrtAddress: word = 0;
|
|
|
out dx, al
|
|
|
inc dx { Point to DAC registers }
|
|
|
mov ax, [RedValue] { Get RedValue }
|
|
|
- { and ax, $ff } { mask out all upper bits }
|
|
|
shr al, 2 { convert to LSB RGB format }
|
|
|
out dx, al
|
|
|
mov ax, [GreenValue]{ Get RedValue }
|
|
|
- { and ax, $ff } { mask out all upper bits }
|
|
|
shr al, 2 { convert to LSB RGB format }
|
|
|
out dx, al
|
|
|
mov ax, [BlueValue] { Get RedValue }
|
|
|
- { and ax, $ff } { mask out all upper bits }
|
|
|
shr al, 2 { convert to LSB RGB format }
|
|
|
out dx, al
|
|
|
end
|
|
@@ -1754,8 +1752,8 @@ const CrtAddress: word = 0;
|
|
|
|
|
|
function QueryAdapterInfo:PModeInfo;
|
|
|
{ This routine returns the head pointer to the list }
|
|
|
- { of supported graphics modes. }
|
|
|
- { Returns nil if no graphics mode supported. }
|
|
|
+ { of supPorted graphics modes. }
|
|
|
+ { Returns nil if no graphics mode supPorted. }
|
|
|
{ This list is READ ONLY! }
|
|
|
var
|
|
|
EGADetected : Boolean;
|
|
@@ -1772,8 +1770,8 @@ const CrtAddress: word = 0;
|
|
|
|
|
|
EGADetected := FALSE;
|
|
|
VGADetected := FALSE;
|
|
|
- { check if Hercules adapter supported ... }
|
|
|
- { check if EGA adapter supported... }
|
|
|
+ { check if Hercules adapter supPorted ... }
|
|
|
+ { check if EGA adapter supPorted... }
|
|
|
asm
|
|
|
mov ah,12h
|
|
|
mov bx,0FF10h
|
|
@@ -1792,7 +1790,7 @@ const CrtAddress: word = 0;
|
|
|
{$ifdef logging}
|
|
|
LogLn('EGA detected: '+strf(Longint(EGADetected)));
|
|
|
{$endif logging}
|
|
|
- { check if VGA adapter supported... }
|
|
|
+ { check if VGA adapter supPorted... }
|
|
|
if EGADetected then
|
|
|
begin
|
|
|
asm
|
|
@@ -1804,11 +1802,11 @@ const CrtAddress: word = 0;
|
|
|
{$ifdef fpc}
|
|
|
pop ebp
|
|
|
{$endif fpc}
|
|
|
- cmp al,1ah { check if supported... }
|
|
|
+ cmp al,1ah { check if supPorted... }
|
|
|
jne @novga
|
|
|
{ now check if this is the ATI EGA }
|
|
|
mov ax,1c00h { get state size for save... }
|
|
|
- { ... all important data }
|
|
|
+ { ... all imPortant data }
|
|
|
mov cx,07h
|
|
|
{$ifdef fpc}
|
|
|
push ebp
|
|
@@ -1959,12 +1957,12 @@ const CrtAddress: word = 0;
|
|
|
AddMode(mode);
|
|
|
end;
|
|
|
|
|
|
- { check if VESA adapter supported... }
|
|
|
-{$ifndef noSupportVESA}
|
|
|
+ { check if VESA adapter supPorted... }
|
|
|
+{$ifndef noSupPortVESA}
|
|
|
hasVesa := getVesaInfo(VESAInfo);
|
|
|
-{$else noSupportVESA}
|
|
|
+{$else noSupPortVESA}
|
|
|
hasVESA := false;
|
|
|
-{$endif noSupportVESA}
|
|
|
+{$endif noSupPortVESA}
|
|
|
if hasVesa then
|
|
|
begin
|
|
|
{ We have to set and restore the entire VESA state }
|
|
@@ -1979,7 +1977,7 @@ const CrtAddress: word = 0;
|
|
|
{$ifdef logging}
|
|
|
LogLn('Setting RestoreVideoState to '+strf(longint(RestoreVideoState)));
|
|
|
{$endif logging}
|
|
|
- { now check all supported modes...}
|
|
|
+ { now check all supPorted modes...}
|
|
|
if SearchVESAModes(m320x200x32k) then
|
|
|
begin
|
|
|
InitMode(mode);
|
|
@@ -1987,7 +1985,7 @@ const CrtAddress: word = 0;
|
|
|
mode.DriverNumber := VESA;
|
|
|
mode.ModeName:='320 x 200 VESA';
|
|
|
mode.MaxColor := 32768;
|
|
|
- { the ModeInfo is automatically set if the mode is supported }
|
|
|
+ { the ModeInfo is automatically set if the mode is supPorted }
|
|
|
{ by the call to SearchVESAMode. }
|
|
|
mode.HardwarePages := VESAModeInfo.NumberOfPages;
|
|
|
mode.PaletteSize := mode.MaxColor;
|
|
@@ -2013,7 +2011,7 @@ const CrtAddress: word = 0;
|
|
|
mode.DriverNumber := VESA;
|
|
|
mode.ModeName:='320 x 200 VESA';
|
|
|
mode.MaxColor := 65536;
|
|
|
- { the ModeInfo is automatically set if the mode is supported }
|
|
|
+ { the ModeInfo is automatically set if the mode is supPorted }
|
|
|
{ by the call to SearchVESAMode. }
|
|
|
mode.HardwarePages := VESAModeInfo.NumberOfPages;
|
|
|
mode.PaletteSize := mode.MaxColor;
|
|
@@ -2039,7 +2037,7 @@ const CrtAddress: word = 0;
|
|
|
mode.DriverNumber := VESA;
|
|
|
mode.ModeName:='640 x 400 VESA';
|
|
|
mode.MaxColor := 256;
|
|
|
- { the ModeInfo is automatically set if the mode is supported }
|
|
|
+ { the ModeInfo is automatically set if the mode is supPorted }
|
|
|
{ by the call to SearchVESAMode. }
|
|
|
mode.HardwarePages := VESAModeInfo.NumberOfPages;
|
|
|
mode.PaletteSize := mode.MaxColor;
|
|
@@ -2067,7 +2065,7 @@ const CrtAddress: word = 0;
|
|
|
mode.DriverNumber := VESA;
|
|
|
mode.ModeName:='640 x 480 VESA';
|
|
|
mode.MaxColor := 256;
|
|
|
- { the ModeInfo is automatically set if the mode is supported }
|
|
|
+ { the ModeInfo is automatically set if the mode is supPorted }
|
|
|
{ by the call to SearchVESAMode. }
|
|
|
mode.HardwarePages := VESAModeInfo.NumberOfPages;
|
|
|
mode.PaletteSize := mode.MaxColor;
|
|
@@ -2094,7 +2092,7 @@ const CrtAddress: word = 0;
|
|
|
mode.DriverNumber := VESA;
|
|
|
mode.ModeName:='640 x 400 VESA';
|
|
|
mode.MaxColor := 32768;
|
|
|
- { the ModeInfo is automatically set if the mode is supported }
|
|
|
+ { the ModeInfo is automatically set if the mode is supPorted }
|
|
|
{ by the call to SearchVESAMode. }
|
|
|
mode.HardwarePages := VESAModeInfo.NumberOfPages;
|
|
|
mode.PaletteSize := mode.MaxColor;
|
|
@@ -2120,7 +2118,7 @@ const CrtAddress: word = 0;
|
|
|
mode.DriverNumber := VESA;
|
|
|
mode.ModeName:='640 x 480 VESA';
|
|
|
mode.MaxColor := 65536;
|
|
|
- { the ModeInfo is automatically set if the mode is supported }
|
|
|
+ { the ModeInfo is automatically set if the mode is supPorted }
|
|
|
{ by the call to SearchVESAMode. }
|
|
|
mode.HardwarePages := VESAModeInfo.NumberOfPages;
|
|
|
mode.PaletteSize := mode.MaxColor;
|
|
@@ -2146,7 +2144,7 @@ const CrtAddress: word = 0;
|
|
|
mode.DriverNumber := VESA;
|
|
|
mode.ModeName:='800 x 600 VESA';
|
|
|
mode.MaxColor := 16;
|
|
|
- { the ModeInfo is automatically set if the mode is supported }
|
|
|
+ { the ModeInfo is automatically set if the mode is supPorted }
|
|
|
{ by the call to SearchVESAMode. }
|
|
|
mode.HardwarePages := VESAModeInfo.NumberOfPages;
|
|
|
mode.DirectColor := FALSE;
|
|
@@ -2157,7 +2155,7 @@ const CrtAddress: word = 0;
|
|
|
mode.SetRGBPalette := {$ifdef fpc}@{$endif}SetVESARGBPalette;
|
|
|
mode.GetRGBPalette := {$ifdef fpc}@{$endif}GetVESARGBPalette;
|
|
|
mode.PutPixel:={$ifdef fpc}@{$endif}PutPixVESA16;
|
|
|
-(* mode.GetPixel:={$ifdef fpc}@{$endif}GetPixVESA16; *)
|
|
|
+ mode.GetPixel:={$ifdef fpc}@{$endif}GetPixVESA16;
|
|
|
mode.InitMode := {$ifdef fpc}@{$endif}Init800x600x16;
|
|
|
mode.SetVisualPage := {$ifdef fpc}@{$endif}SetVisualVESA;
|
|
|
mode.SetActivePage := {$ifdef fpc}@{$endif}SetActiveVESA;
|
|
@@ -2172,7 +2170,7 @@ const CrtAddress: word = 0;
|
|
|
mode.DriverNumber := VESA;
|
|
|
mode.ModeName:='800 x 600 VESA';
|
|
|
mode.MaxColor := 256;
|
|
|
- { the ModeInfo is automatically set if the mode is supported }
|
|
|
+ { the ModeInfo is automatically set if the mode is supPorted }
|
|
|
{ by the call to SearchVESAMode. }
|
|
|
mode.HardwarePages := VESAModeInfo.NumberOfPages;
|
|
|
mode.PaletteSize := mode.MaxColor;
|
|
@@ -2200,7 +2198,7 @@ const CrtAddress: word = 0;
|
|
|
mode.DriverNumber := VESA;
|
|
|
mode.ModeName:='800 x 600 VESA';
|
|
|
mode.MaxColor := 32768;
|
|
|
- { the ModeInfo is automatically set if the mode is supported }
|
|
|
+ { the ModeInfo is automatically set if the mode is supPorted }
|
|
|
{ by the call to SearchVESAMode. }
|
|
|
mode.HardwarePages := VESAModeInfo.NumberOfPages;
|
|
|
mode.PaletteSize := mode.MaxColor;
|
|
@@ -2226,7 +2224,7 @@ const CrtAddress: word = 0;
|
|
|
mode.DriverNumber := VESA;
|
|
|
mode.ModeName:='800 x 600 VESA';
|
|
|
mode.MaxColor := 65536;
|
|
|
- { the ModeInfo is automatically set if the mode is supported }
|
|
|
+ { the ModeInfo is automatically set if the mode is supPorted }
|
|
|
{ by the call to SearchVESAMode. }
|
|
|
mode.HardwarePages := VESAModeInfo.NumberOfPages;
|
|
|
mode.PaletteSize := mode.MaxColor;
|
|
@@ -2252,7 +2250,7 @@ const CrtAddress: word = 0;
|
|
|
mode.DriverNumber := VESA;
|
|
|
mode.ModeName:='1024 x 768 VESA';
|
|
|
mode.MaxColor := 16;
|
|
|
- { the ModeInfo is automatically set if the mode is supported }
|
|
|
+ { the ModeInfo is automatically set if the mode is supPorted }
|
|
|
{ by the call to SearchVESAMode. }
|
|
|
mode.HardwarePages := VESAModeInfo.NumberOfPages;
|
|
|
mode.PaletteSize := mode.MaxColor;
|
|
@@ -2263,7 +2261,7 @@ const CrtAddress: word = 0;
|
|
|
mode.PutPixel:={$ifdef fpc}@{$endif}PutPixVESA16;
|
|
|
mode.SetRGBPalette := {$ifdef fpc}@{$endif}SetVESARGBPalette;
|
|
|
mode.GetRGBPalette := {$ifdef fpc}@{$endif}GetVESARGBPalette;
|
|
|
-(* mode.GetPixel:={$ifdef fpc}@{$endif}GetPixVESA16; *)
|
|
|
+ mode.GetPixel:={$ifdef fpc}@{$endif}GetPixVESA16;
|
|
|
mode.InitMode := {$ifdef fpc}@{$endif}Init1024x768x16;
|
|
|
mode.SetVisualPage := {$ifdef fpc}@{$endif}SetVisualVESA;
|
|
|
mode.SetActivePage := {$ifdef fpc}@{$endif}SetActiveVESA;
|
|
@@ -2278,7 +2276,7 @@ const CrtAddress: word = 0;
|
|
|
mode.DriverNumber := VESA;
|
|
|
mode.ModeName:='1024 x 768 VESA';
|
|
|
mode.MaxColor := 256;
|
|
|
- { the ModeInfo is automatically set if the mode is supported }
|
|
|
+ { the ModeInfo is automatically set if the mode is supPorted }
|
|
|
{ by the call to SearchVESAMode. }
|
|
|
mode.HardwarePages := VESAModeInfo.NumberOfPages;
|
|
|
mode.PaletteSize := mode.MaxColor;
|
|
@@ -2306,7 +2304,7 @@ const CrtAddress: word = 0;
|
|
|
mode.DriverNumber := VESA;
|
|
|
mode.ModeName:='1024 x 768 VESA';
|
|
|
mode.MaxColor := 32768;
|
|
|
- { the ModeInfo is automatically set if the mode is supported }
|
|
|
+ { the ModeInfo is automatically set if the mode is supPorted }
|
|
|
{ by the call to SearchVESAMode. }
|
|
|
mode.HardwarePages := VESAModeInfo.NumberOfPages;
|
|
|
mode.PaletteSize := mode.MaxColor;
|
|
@@ -2333,7 +2331,7 @@ const CrtAddress: word = 0;
|
|
|
mode.ModeName:='1024 x 768 VESA';
|
|
|
mode.MaxColor := 65536;
|
|
|
mode.DirectColor := TRUE;
|
|
|
- { the ModeInfo is automatically set if the mode is supported }
|
|
|
+ { the ModeInfo is automatically set if the mode is supPorted }
|
|
|
{ by the call to SearchVESAMode. }
|
|
|
mode.HardwarePages := VESAModeInfo.NumberOfPages;
|
|
|
mode.PaletteSize := mode.MaxColor;
|
|
@@ -2358,7 +2356,7 @@ const CrtAddress: word = 0;
|
|
|
mode.DriverNumber := VESA;
|
|
|
mode.ModeName:='1280 x 1024 VESA';
|
|
|
mode.MaxColor := 16;
|
|
|
- { the ModeInfo is automatically set if the mode is supported }
|
|
|
+ { the ModeInfo is automatically set if the mode is supPorted }
|
|
|
{ by the call to SearchVESAMode. }
|
|
|
mode.HardwarePages := VESAModeInfo.NumberOfPages;
|
|
|
mode.DirectColor := FALSE;
|
|
@@ -2369,7 +2367,7 @@ const CrtAddress: word = 0;
|
|
|
mode.SetRGBPalette := {$ifdef fpc}@{$endif}SetVESARGBPalette;
|
|
|
mode.GetRGBPalette := {$ifdef fpc}@{$endif}GetVESARGBPalette;
|
|
|
mode.PutPixel:={$ifdef fpc}@{$endif}PutPixVESA16;
|
|
|
-(* mode.GetPixel:={$ifdef fpc}@{$endif}GetPixVESA16; *)
|
|
|
+ mode.GetPixel:={$ifdef fpc}@{$endif}GetPixVESA16;
|
|
|
mode.InitMode := {$ifdef fpc}@{$endif}Init1280x1024x16;
|
|
|
mode.SetVisualPage := {$ifdef fpc}@{$endif}SetVisualVESA;
|
|
|
mode.SetActivePage := {$ifdef fpc}@{$endif}SetActiveVESA;
|
|
@@ -2384,7 +2382,7 @@ const CrtAddress: word = 0;
|
|
|
mode.DriverNumber := VESA;
|
|
|
mode.ModeName:='1280 x 1024 VESA';
|
|
|
mode.MaxColor := 256;
|
|
|
- { the ModeInfo is automatically set if the mode is supported }
|
|
|
+ { the ModeInfo is automatically set if the mode is supPorted }
|
|
|
{ by the call to SearchVESAMode. }
|
|
|
mode.HardwarePages := VESAModeInfo.NumberOfPages;
|
|
|
mode.DirectColor := FALSE;
|
|
@@ -2412,7 +2410,7 @@ const CrtAddress: word = 0;
|
|
|
mode.DriverNumber := VESA;
|
|
|
mode.ModeName:='1280 x 1024 VESA';
|
|
|
mode.MaxColor := 32768;
|
|
|
- { the ModeInfo is automatically set if the mode is supported }
|
|
|
+ { the ModeInfo is automatically set if the mode is supPorted }
|
|
|
{ by the call to SearchVESAMode. }
|
|
|
mode.HardwarePages := VESAModeInfo.NumberOfPages;
|
|
|
mode.DirectColor := TRUE;
|
|
@@ -2438,7 +2436,7 @@ const CrtAddress: word = 0;
|
|
|
mode.DriverNumber := VESA;
|
|
|
mode.ModeName:='1280 x 1024 VESA';
|
|
|
mode.MaxColor := 65536;
|
|
|
- { the ModeInfo is automatically set if the mode is supported }
|
|
|
+ { the ModeInfo is automatically set if the mode is supPorted }
|
|
|
{ by the call to SearchVESAMode. }
|
|
|
mode.HardwarePages := VESAModeInfo.NumberOfPages;
|
|
|
mode.DirectColor := TRUE;
|
|
@@ -2462,7 +2460,12 @@ const CrtAddress: word = 0;
|
|
|
|
|
|
{
|
|
|
$Log$
|
|
|
-Revision 1.22 1999-10-08 14:28:18 jonas
|
|
|
+Revision 1.23 1999-10-24 03:34:37 carl
|
|
|
+ - Removed some old french comments.
|
|
|
+ * Bugfix of problems with register access in noasmmoded
|
|
|
+ + GetPixVESA16
|
|
|
+
|
|
|
+Revision 1.22 1999/10/08 14:28:18 jonas
|
|
|
* fixed set/getvgargbpalette for VGA 16 color modes
|
|
|
|
|
|
Revision 1.21 1999/09/27 23:34:40 peter
|
|
@@ -2505,7 +2508,7 @@ Revision 1.15 1999/09/22 13:13:34 jonas
|
|
|
|
|
|
Revision 1.14 1999/09/18 22:21:09 jonas
|
|
|
+ hlinevesa256 and vlinevesa256
|
|
|
- + support for not/xor/or/andput in vesamodes with 32k/64k colors
|
|
|
+ + supPort for not/xor/or/andput in vesamodes with 32k/64k colors
|
|
|
* lots of changes to avoid warnings under FPC
|
|
|
|
|
|
Revision 1.13 1999/09/18 16:03:36 jonas
|
|
@@ -2526,8 +2529,8 @@ Revision 1.11 1999/09/12 17:28:59 jonas
|
|
|
why
|
|
|
|
|
|
Revision 1.10 1999/09/11 19:43:01 jonas
|
|
|
- * FloodFill: did not take into account current viewport settings
|
|
|
- * GetScanLine: only get line inside viewport, data outside of it
|
|
|
+ * FloodFill: did not take into account current viewPort settings
|
|
|
+ * GetScanLine: only get line inside viewPort, data outside of it
|
|
|
is not used anyway
|
|
|
* InternalEllipseDefault: fix for when xradius or yradius = 0 and
|
|
|
increase xradius and yradius always by one (TP does this too)
|
|
@@ -2536,12 +2539,12 @@ Revision 1.10 1999/09/11 19:43:01 jonas
|
|
|
places where it doesn't matter
|
|
|
|
|
|
Revision 1.9 1999/08/01 14:50:51 jonas
|
|
|
- * fixed hline16 and vline16 for notput (also TP supports copy, and, or, xor and
|
|
|
+ * fixed hline16 and vline16 for notput (also TP supPorts copy, and, or, xor and
|
|
|
notput for lines!!)
|
|
|
- * fixed directputpixel16 to support all the different put types
|
|
|
+ * fixed directputpixel16 to supPort all the different put types
|
|
|
|
|
|
Revision 1.8 1999/07/18 15:07:19 jonas
|
|
|
- + xor-, and and- orput support for VESA256 modes
|
|
|
+ + xor-, and and- orput supPort for VESA256 modes
|
|
|
* compile with -dlogging if you want some info to be logged to grlog.txt
|
|
|
|
|
|
Revision 1.7 1999/07/14 18:18:02 florian
|
|
@@ -2555,10 +2558,10 @@ Revision 1.5 1999/07/14 14:32:12 florian
|
|
|
|
|
|
Revision 1.4 1999/07/12 13:27:08 jonas
|
|
|
+ added Log and Id tags
|
|
|
- * added first FPC support, only VGA works to some extend for now
|
|
|
+ * added first FPC supPort, only VGA works to some extend for now
|
|
|
* use -dasmgraph to use assembler routines, otherwise Pascal
|
|
|
equivalents are used
|
|
|
- * use -dsupportVESA to support VESA (crashes under FPC for now)
|
|
|
+ * use -dsupPortVESA to supPort VESA (crashes under FPC for now)
|
|
|
* only dispose vesainfo at closegrph if a vesa card was detected
|
|
|
* changed int32 to longint (int32 is not declared under FPC)
|
|
|
* changed the declaration of almost every procedure in graph.inc to
|