[Back to EGAVGA SWAG index]  [Back to Main SWAG index]  [Original]

{
How can I save and restore the text screen mode (e.g. 132*28 characters)
when using BGI calls in a Turbo Pascal program ?
Unfortunately I always have 80*25 after program exit.
}

function get_video_mode : byte;
{ Returns the current video mode (from interrupt $10,$f).
  Byte [$40:$49] also contains this information, but might not always
  have the correct value.
}
 
var
  check_b : byte; {video mode byte : absolute $40:$49}
 
begin {get_video_mode}
  asm
    mov ah, 0fh
    int 10h
    mov check_b, al
  end;
  if check_b > 127
    then get_video_mode:=check_b-128  {last mode change was done without
                                       screen clearing, mode is given by the
                                       low 7 bits}
    else get_video_mode:=check_b;
end; {get_video_mode}
 
 
procedure set_video_mode(m : byte);
{ Sets the given video mode (via interrupt $10,0).
  If high bit is on screen is not cleared (works only for text modes?).
}
 
begin {set_video_mode}
  asm
    mov ah, 00h
    mov al, m
    int 10h
  end;
end; {set_video_mode}

[Back to EGAVGA SWAG index]  [Back to Main SWAG index]  [Original]