home *** CD-ROM | disk | FTP | other *** search
/ Night Owl 25 / nopv25.iso / 040A / TMTP100D.ZIP / EXAMPLES / VESA / VESA.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1996-07-04  |  1.8 KB  |  74 lines

  1. {*******************************************************}
  2. {                                                       }
  3. {       Vesa Interface Unit                             }
  4. {                                                       }
  5. {       Copyright (C) 1996    T M T Development Corp.   }
  6. {                                                       }
  7. {*******************************************************}
  8.  
  9. Unit Vesa;
  10.  
  11. Interface
  12.  
  13. Var Error: Byte;
  14.  
  15. Procedure SetVbeMode; external '_SETVBEMODE';
  16. Function CheckVbeMode (mode: Word): Pointer;
  17. Procedure VbeSetBank (bank: byte);
  18. Procedure VbeSetStart;
  19.  
  20. Implementation
  21.  
  22. Function CheckVbeMode; Assembler;
  23.     Procedure _CheckVbeMode; external;
  24. Asm
  25.     Movzx EAX, mode
  26.     Mov   Error, 0
  27.     Call _CheckVbeMode
  28.     Jnc   @@ret
  29.     Mov   Error, Dl
  30. @@ret:
  31. End;
  32.  
  33. Procedure  _Current_Bank; external;
  34. Procedure    _VbeSetBank; external;
  35. Procedure __BankSetTable; external;
  36. Procedure   _VbeSetStart; external;
  37. Procedure     _VbeFunc06; external;
  38.  
  39. Procedure VbeSetBank; Assembler;
  40. Asm
  41.     mov  dl, bank
  42.     cmp  byte [_current_bank], dl
  43.     je   @@setnew
  44.     and  edx, 01Fh
  45.     mov  byte [_current_bank], dl
  46.     shl  edx, 2                       { sorry, but now this         }
  47.     mov  edx,__banksettable [edx{*4}] { addressing mode unsupported }
  48.     push ebx
  49.     xor  ebx, ebx
  50.     call dword ptr [_vbesetbank]
  51.     pop  ebx
  52. @@setnew:
  53. End;
  54.  
  55. Function VbeFunc06 (fun: byte; w: Word; Var bpl, ppl, maxscan: word): Word; Assembler;
  56. Asm
  57.     Mov bl, fun
  58.     Mov cx, w
  59.     Call _VbeFunc06
  60.     Mov esi,     bpl; Mov [esi], bx
  61.     Mov esi,     ppl; Mov [esi], cx
  62.     Mov esi, maxscan; Mov [esi], dx
  63.     MovZx eax, ax
  64. End;
  65.  
  66. Procedure VbeSetStart; Assembler;
  67. Asm
  68.     call   [_VbeSetStart]
  69. End;
  70.  
  71. {$l vesa}
  72.  
  73. End.
  74.