home *** CD-ROM | disk | FTP | other *** search
/ The Equalizer BBS / equalizer-bbs-collection_2004.zip / equalizer-bbs-collection / DEMOSCENE-STUFF / BM9.ZIP / EMS.PAS < prev    next >
Pascal/Delphi Source File  |  1994-11-23  |  2KB  |  98 lines

  1.  
  2. Unit Ems;
  3.  
  4. interface
  5.  
  6.     Procedure Init_ems(pages_needed:Word);
  7.     Procedure Alloc_ems(page:Word);
  8.     Procedure Page_ems(physical:Byte;logical:Word);
  9.     Procedure Alloc_ems64k(page:Word);
  10.     Function All_ems:Word;
  11.     Function Free_ems:Word;
  12.     Procedure Close_ems;
  13.  
  14. var ems_handle,EMSBase:Word;
  15.     error:Shortint;
  16.  
  17. implementation
  18.  
  19. uses Dos;
  20.  
  21. Function All_ems:Word;assembler;
  22. asm
  23.   mov ah,$42
  24.   int $67
  25.   mov error,ah
  26.   mov ax,dx
  27. end;
  28.  
  29. Function free_ems:Word;assembler;
  30. asm
  31.   mov ah,$42
  32.   int $67
  33.   mov error,ah
  34.   mov ax,bx
  35. end;
  36.  
  37. Procedure Alloc_ems(page:word);assembler;
  38.   asm
  39.     mov ah,$44
  40.     mov al,0
  41.     mov bx,page
  42.     mov dx,ems_handle
  43.     int $67
  44.     mov error,ah
  45.   end;
  46.  
  47. Procedure Page_ems(physical:Byte;logical:Word);assembler;
  48.   asm
  49.     mov ah,$44
  50.     mov al,physical
  51.     mov bx,logical
  52.     mov dx,ems_handle
  53.     int $67
  54.     mov error,ah
  55.   end;
  56.  
  57. Procedure Alloc_ems64k(page:Word);assembler;
  58.   asm
  59.     mov cx,4
  60.     mov al,0
  61.     mov bx,page
  62.  @schl:
  63.     mov ah,$44
  64.     mov dx,ems_handle
  65.     int $67
  66.     inc al
  67.     inc bx
  68.     loop @schl
  69.   end;
  70.  
  71. Procedure Init_ems(pages_needed:Word);assembler;
  72. asm
  73.   mov ah,$43
  74.   mov bx,pages_needed
  75.   int $67
  76.   mov ems_handle,dx
  77.   mov error,ah
  78.   cmp error,0
  79.   jne @ende
  80.   {---------}
  81.   mov ah,$41
  82.   int $67
  83.   mov EMSBase,bx
  84.   mov error,ah
  85.   @Ende:
  86. end;
  87.  
  88. Procedure Close_ems;assembler;
  89.   asm
  90.     mov ah,$45
  91.     mov dx,Ems_handle
  92.     int $67
  93.     mov error,ah
  94.   end;
  95.  
  96. begin
  97.   error:=0;
  98. end.