home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / pascal / library / dos / bix / bios.sys < prev    next >
Text File  |  1986-08-04  |  4KB  |  156 lines

  1. (********************************************************************)
  2. (*                                                                  *)
  3. (*                ROM BIOS Access Procedures                        *)
  4. (*                                                                  *)
  5. (*   Calls BIOS Routines for modification of screen parameters.     *)
  6. (*   These routines do not perform hardware (memory) i/o            *)
  7. (*                                                                  *)
  8. (*                                                                  *)
  9. (*   written by:      John Leonard    1/6/86                        *)
  10. (*                                                                  *)
  11. (*              NOT FOR SALE WITHOUT WRITTEN PERMISSION             *)
  12. (*                                                                  *)
  13. (********************************************************************)
  14.  
  15.  
  16. type
  17.    Bios_Record =  record case integer of
  18.                      1: (ax,bx,cx,dx,bp,bi,di,ds,es,flags : integer );
  19.                      2: (al,ah,bl,bh,cl,ch,dl,dh : byte);
  20.                   end;
  21.  
  22.  
  23. procedure SetCursorSize( sl,el:integer);
  24.    var regs : Bios_Record;
  25.    begin
  26.        with regs do begin
  27.           ah := $01;
  28.           ch := sl;
  29.           cl := el;
  30.        end;
  31.        intr($10,regs);
  32.    end;
  33.  
  34.  
  35. procedure BSetCursorPosition( page,row,column:integer);
  36.    var regs : Bios_Record;
  37.    begin
  38.        regs.ah := $02;
  39.        regs.bh := page;
  40.        regs.dh := row;
  41.        regs.dl := column;
  42.        intr($10,regs);
  43.    end;
  44.  
  45.  
  46. procedure BReadCursorPosition(page : integer;
  47.               var row,column,s1,s2:integer);
  48.    var regs : Bios_Record;
  49.    begin
  50.        regs.bh := page;
  51.        regs.ah := $03;
  52.        intr($10,regs);
  53.        with regs do begin
  54.           row  := dh;
  55.           column:=dl;
  56.           s1:=ch;
  57.           s2:=cl;
  58.        end;
  59.    end;
  60.  
  61.  
  62. procedure BSetActiveDisplayPage(  i : integer);
  63.    var regs : Bios_Record;
  64.    begin
  65.       with regs do begin
  66.          ah := $05;
  67.          al := lo(i);
  68.       end;
  69.       intr($10,regs);
  70.    end;
  71.  
  72.  
  73. procedure BScrollWindowUp( lines,filler,y1,x1,y2,x2:integer);
  74.    var regs : Bios_Record;
  75.    begin
  76.       with regs do begin
  77.          ah := $06;
  78.          al := lines;
  79.          bh := filler;
  80.          ch := y1;
  81.          cl := x1;
  82.          dh := y2;
  83.          dl := x2;
  84.       end;
  85.       intr($10,regs);
  86.    end;
  87.  
  88.  
  89. procedure BScrollWindowDown( lines,filler,y1,x1,y2,x2:integer);
  90.    var regs : Bios_Record;
  91.    begin
  92.       with regs do begin
  93.          ah := $07;
  94.          al := lines;
  95.          bh := filler;
  96.          ch := y1;
  97.          cl := x1;
  98.          dh := y2;
  99.          dl := x2;
  100.       end;
  101.       intr($10,regs);
  102.    end;
  103.  
  104.  
  105. procedure BWriteCharacterAndAttribute( character,page,attribute,num:integer);
  106.    var regs : Bios_Record;
  107.    begin
  108.       with regs do begin
  109.          ah := $09;
  110.          al := character;
  111.          bh := page;
  112.          bl := attribute;
  113.          ch := hi(num);
  114.          cl := lo(num);
  115.       end;
  116.       intr($10,regs);
  117.    end;
  118.  
  119.  
  120. procedure BWriteCharacter( character,page,num:integer);
  121.    var regs : Bios_Record;
  122.    begin
  123.       with regs do begin
  124.          ah := $0A;
  125.          al := character;
  126.          bh := page;
  127.          ch := hi(num);
  128.          cl := lo(num);
  129.       end;
  130.       intr($10,regs);
  131.    end;
  132.  
  133.  
  134. procedure GetVideoMode( var width,mode,page:integer);
  135.    var regs : Bios_Record;
  136.    begin
  137.        regs.ah := $0f;
  138.        intr($10,regs);
  139.        with regs do begin
  140.           page := bh;
  141.           width := ah;
  142.           mode  := al;
  143.        end;
  144.    end;
  145.  
  146.  
  147. procedure SetColorPalette ( i:integer );
  148.    var regs : Bios_Record;
  149.    begin
  150.       if not (i in [0..15]) then exit;
  151.       regs.ah := $B;
  152.       regs.bh := 0;
  153.       regs.bl := i;
  154.       intr($10,regs);
  155.    end;
  156.