[Back to CURSOR SWAG index] [Back to Main SWAG index] [Original]
{
SEAN PALMER
}
unit cursor; {Public domain, by Sean Palmer aka Ghost}
interface
var
maxSize : byte;
procedure setSize(scans : byte); {set size from bottom, or 0 for off}
procedure detect; {get max scan lines by reading current cursor}
implementation
procedure setSize(scans : byte);
var
t : byte;
begin
if scans = 0 then
t := $20
else
t := maxSize - scans;
asm
mov ah, 1
mov bh, 0
mov ch, t
mov cl, maxSize
dec cl
int $10
end;
end;
procedure detect; assembler;
asm {do NOT call while cursor's hidden}
mov ah, 3
mov bh, 0
int $10
inc cl
mov maxSize, cl
end;
begin
detect;
end.
program test;
uses
cursor;
begin
writeln(cursor.maxSize);
cursor.setSize(cursor.maxSize);
readln; {block}
cursor.setSize(0);
readln; {hidden}
cursor.setSize(cursor.maxSize div 2);
readln; {half}
cursor.setSize(2);
readln; {normal}
end.
[Back to CURSOR SWAG index] [Back to Main SWAG index] [Original]