home *** CD-ROM | disk | FTP | other *** search
/ Stars of Shareware: Programmierung / SOURCE.mdf / programm / msdos / pascal / fastmove / nolimit.pas < prev   
Encoding:
Pascal/Delphi Source File  |  1990-02-02  |  2.1 KB  |  124 lines

  1. unit nolimit;
  2. {
  3.      turbo pascal c't 1/90 A.S
  4.      ermöglicht einen linearen Zugriff auf Datenfelder von bis zu 4 Gigabyte
  5.      Größe beim 80386, bzw 16 Megabyte beim 80386SX;
  6.      Fastmove muß aktiviert sein, weil sonst EXCEPTION !!!
  7.      Funktioniert nicht im virtuellen 86'er Modus
  8. }
  9.  
  10. INTERFACE
  11.  
  12. {
  13.     Die folgenden Inline-Makros ersetzen MEM bzw MEMW.
  14.     Damit ist der gesamt Adressraum linear adressierbar.
  15. }
  16.  
  17. function Getmemb(i:LongInt):byte;
  18. inline
  19.       (
  20.       $66/$5B/
  21.       $64/$67/$8A/$03
  22.       );
  23.  
  24. PROCEDURE setmemb(i:LongInt;b:Byte);
  25. inline
  26.       (
  27.       $58/
  28.       $66/$5B/
  29.       $64/$67/$88/$03
  30.       );
  31.  
  32. FUNCTION getmemw(i:longint):word;
  33. inline
  34.       (
  35.       $66/$5B/
  36.       $64/$67/$8B/$03
  37.       );
  38.  
  39. PROCEDURE setmemw(i:longint;w:word);
  40. inline
  41.       (
  42.       $58/
  43.       $66/$5B/
  44.       $64/$67/$89/$03
  45.       );
  46.  
  47. FUNCTION getmeml(i:longint):longint;
  48. inline
  49.       (
  50.       $66/$5B/
  51.       $64/$67/$8B/$03/
  52.       $64/$67/$8B/$53/$02
  53.       );
  54.  
  55. PROCEDURE setmeml(i:longint;l:longint);
  56. inline
  57.       (
  58.       $58/
  59.       $66/$5B/
  60.       $64/$67/$66/$89/$03
  61.       );
  62.  
  63. CONST looff=0;
  64.       hioff=$0;
  65.  
  66. function getword(i:longint):word;
  67. inline
  68.       (
  69.       $66/$5B/
  70.       $64/$67/$8B/$83/>looff/>hioff
  71.       );
  72.  
  73. procedure setword(i:longint;w:word);
  74. inline
  75.       (
  76.       $58/
  77.       $66/$5B/
  78.       $64/$67/$89/$83/>looff/>hioff
  79.       );
  80.  
  81. procedure setreal(i,offset:longint;r:real);
  82. inline
  83.       (
  84.       $58/
  85.       $66/$5A/
  86.       $66/$5E/
  87.       $66/$5B/
  88.       $64/$67/$89/$04/$33/
  89.       $64/$67/$66/$89/$54/$33/$02
  90.       );
  91.  
  92. FUNCTION getreal(i,offset:longint):real;
  93. inline
  94.       (
  95.       $66/$5E/
  96.       $66/$5B/
  97.       $64/$67/$8B/$04/$33/
  98.       $64/$67/$8B/$54/$33/$04/
  99.       $64/$67/$8B/$5C/$33/$02
  100.       );
  101.  
  102. PROCEDURE set_fs(x:word);
  103. inline
  104.       (
  105.       $58/
  106.       $8E/$E0
  107.       );
  108.  
  109. IMPLEMENTATION
  110.  
  111. PROCEDURE TEST_GATE_A20;
  112. begin
  113.      if memw[$FFFF:$10]=memw[0:0] then
  114.         begin
  115.              writeln('FEHLER: Gate A20 nicht geöffnet!');
  116.              writeln('FastMove nicht aktiv');
  117.              HALT(1);
  118.         end;
  119. end;
  120.  
  121. begin
  122.      TEST_GATE_A20;
  123.      set_fs(0);
  124. end.