[Back to GRAPHICS SWAG index] [Back to Main SWAG index] [Original]
{
Here is a little routine for those of you wanting to check if the VGA is in
graphics mode or textmode - quite handy for screensavers and DOS pop-ups.
}
Var
t1, t2 : Boolean;
Function InGraphMode : Boolean; Assembler;
Asm
CLI
Mov Dx,3DAh
In Al,Dx {Reset addr/data flipflop}
Mov Dx,3C0h {Index register}
Mov Al,30h {10h + keep screen output enabled}
Out Dx,Al {Set index}
Inc Dx {Read address}
{Accesses to the attribute controller must be separated by at least 250ns}
Nop {Small delay, try Jmp @Lab; @Lab: if it doesn't work}
In Al,Dx {Get mode control register}
And Al,1 {Isolate graphics bit}
STI
end {InGraphMode};
Procedure SetMode(m : word); Assembler;
Asm
Mov ax,m
int 10h
end;
Begin
SetMode($13);
t1 := InGraphMode;
SetMode(3);
t2 := InGraphMode;
Writeln(t1, ' ', t2);
end.
[Back to GRAPHICS SWAG index] [Back to Main SWAG index] [Original]