home *** CD-ROM | disk | FTP | other *** search
/ PC Gamer 9 / 1995-08_Disc_9.iso / vesa / samples / savevesa.pas < prev    next >
Pascal/Delphi Source File  |  1990-01-11  |  2KB  |  86 lines

  1. {-----------------------------------------------------------------------}
  2. {The following program is written to loosely conform to the VESA     }
  3. {Super VGA BIOS Extension document VS891001.  The program is intended    }
  4. {as a demonstration and is not intended to be an example of a         }
  5. {high-performance implementations of the VESA standard.            }
  6. {If you find any omissions or errors, please report them to me on the     }
  7. {Everex Systems BBS at (415) 683-2984.                    }
  8. {                        Gary Lorensen        }
  9. {                        Everex Systems, Inc.    }
  10. {                        48571 Milmont Dr. B3    }
  11. {                        Fremont, CA   94538    }
  12. {-----------------------------------------------------------------------}
  13. uses
  14.     dos;
  15. {-----------------------------------------------------------------------}
  16. {-----------------------------------------------------------------------}
  17.  
  18. var
  19.     buffsave : pointer;
  20.     buffsize : word;
  21.     vgafile  : file;
  22.     reg      : Registers;
  23.  
  24. {-----------------------------------------------------------------------}
  25. {-----------------------------------------------------------------------}
  26.  
  27. begin
  28.     if (ParamCount<2) then begin
  29.     writeln('SAVEVESA parameters:');
  30.     writeln('    SAVEVESA -s filename     : Save VGA state');
  31.     writeln('    SAVEVESA -r filename     : Restore VGA state');
  32.     writeln;
  33.     halt(1);
  34.     end;
  35.  
  36.     reg.AX := $4f04;
  37.     reg.CX := $000f;
  38.     reg.DL := $00;
  39.     intr($10,reg);
  40.  
  41.     if (reg.AL<>$4f) then begin
  42.         writeln('Current configuration does not support VESA Save/Restore VGA State.');
  43.     halt(1);
  44.     end;
  45.  
  46.     buffsize := reg.BX*$40;
  47.     GetMem(buffsave,buffsize);
  48.  
  49.     if ((ParamStr(1)='-s') or (ParamStr(1)='-S')) then begin
  50.  
  51.     reg.AX := $4f04;
  52.     reg.DL := $01;
  53.     reg.CX := $000f;
  54.     reg.ES := Seg(buffsave^);
  55.     reg.BX := Ofs(buffsave^);
  56.     intr($10,reg);
  57.  
  58.         assign(vgafile,ParamStr(2));
  59.     rewrite(vgafile,1);
  60.     BlockWrite(vgafile,buffsave^,buffsize);
  61.     close(vgafile);
  62.  
  63.     end else if ((ParamStr(1)='-r') or (ParamStr(1)='-R')) then begin
  64.  
  65.         assign(vgafile,ParamStr(2));
  66.     reset(vgafile,1);
  67.     BlockRead(vgafile,buffsave^,buffsize);
  68.     close(vgafile);
  69.  
  70.     reg.AX := $4f04;
  71.     reg.DL := $02;
  72.     reg.CX := $000f;
  73.     reg.ES := Seg(buffsave^);
  74.     reg.BX := Ofs(buffsave^);
  75.     intr($10,reg);
  76.  
  77.     end;
  78.     FreeMem(buffsave,buffsize);
  79.  
  80. end.
  81.  
  82. {-----------------------------------------------------------------------}
  83. {-----------------------------------------------------------------------}
  84.  
  85.  
  86.