[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]