home *** CD-ROM | disk | FTP | other *** search
/ Media Share 9 / MEDIASHARE_09.ISO / pascal / spx10.zip / SPX_TPU6.ZIP / LIMEMS.PAS next >
Pascal/Delphi Source File  |  1992-11-06  |  2KB  |  132 lines

  1. Unit limems;
  2.  
  3. Interface
  4.  
  5. function emsINSTALLED:boolean;
  6. function emsSTATUS:boolean;
  7. procedure emsPAGES(var totalpages,pagesavailable:word);
  8. procedure emsGETMEM(pagesneeded:word;var handle:word);
  9. procedure emsMAP(handle,logicalpage,physicalpage:word);
  10. procedure emsADDRESS(var address:word);
  11. procedure emsFREEMEM(handle:word);
  12. procedure emsVERSION(var st:string);
  13.  
  14. implementation
  15.  
  16. Uses Dos;
  17.  
  18. var
  19.   regs : registers;
  20.  
  21. function hc(number:byte):char;
  22. begin
  23.    if number<10
  24.       then hc := chr(number+48)
  25.       else hc := chr(number+65);
  26. end;
  27.  
  28.  
  29. function hexstring(num:word):string;
  30. begin
  31.    hexstring := hc(hi(num)shr 4)+hc(hi(num) and $f)+hc(lo(num)shr 4)+hc(lo(num)and $f);
  32. end;
  33.  
  34.  
  35. function emsinstalled:boolean;
  36. var
  37.    s : string[8];
  38. begin
  39.    with regs do
  40.       begin
  41.          ah := $35;
  42.          al := $67;
  43.          msdos(regs);
  44.          move(mem[es:$0a],s[1],8);
  45.          s[0] := chr(8);
  46.          emsinstalled := (s='EMMXXXX0');
  47.       end;
  48. end;
  49.  
  50.  
  51. function emsstatus:boolean;
  52. begin
  53.    with regs do
  54.       begin
  55.          ah := $40;
  56.          intr($67,regs);
  57.          emsstatus := (ah=0);
  58.       end;
  59. end;
  60.  
  61.  
  62. procedure emsaddress(var address:word);
  63. begin
  64.    with regs do
  65.       begin
  66.          ah := $41;
  67.          intr($67,regs);
  68.          address := bx;
  69.       end;
  70. end;
  71.  
  72.  
  73. procedure emsPAGES(var totalpages,pagesavailable:word);
  74. begin
  75.    with regs do
  76.       begin
  77.          ah := $42;
  78.          intr($67,regs);
  79.          pagesavailable := bx;
  80.          totalpages := dx;
  81.       end;
  82. end;
  83.  
  84.  
  85. procedure emsgetmem(pagesneeded:word;var handle:word);
  86. begin
  87.    with regs do
  88.       begin
  89.          ah := $43;
  90.          bx := pagesneeded;
  91.          intr($67,regs);
  92.          handle := dx;
  93.       end;
  94. end;
  95.  
  96.  
  97. procedure emsmap(handle,logicalpage,physicalpage:word);
  98. begin
  99.    with regs do
  100.       begin
  101.          ah := $44;
  102.          al := physicalpage;
  103.          bx := logicalpage;
  104.          dx := handle;
  105.          intr($67,regs);
  106.       end;
  107. end;
  108.  
  109.  
  110. procedure emsfreemem(handle:word);
  111. begin
  112.    with regs do
  113.       begin
  114.          ah := $45;
  115.          dx := handle;
  116.          intr($67,regs);
  117.       end;
  118. end;
  119.  
  120.  
  121. procedure emsversion(var st:string);
  122. begin
  123.    with regs do
  124.       begin
  125.          ah := $46;
  126.          intr($67,regs);
  127.          st := chr(al shr 4+48)+'.'+chr(al and $f+48);
  128.       end;
  129. end;
  130.  
  131.  
  132. end.