home *** CD-ROM | disk | FTP | other *** search
- unit nolimit;
- {
- turbo pascal c't 1/90 A.S
- ermöglicht einen linearen Zugriff auf Datenfelder von bis zu 4 Gigabyte
- Größe beim 80386, bzw 16 Megabyte beim 80386SX;
- Fastmove muß aktiviert sein, weil sonst EXCEPTION !!!
- Funktioniert nicht im virtuellen 86'er Modus
- }
-
- INTERFACE
-
- {
- Die folgenden Inline-Makros ersetzen MEM bzw MEMW.
- Damit ist der gesamt Adressraum linear adressierbar.
- }
-
- function Getmemb(i:LongInt):byte;
- inline
- (
- $66/$5B/
- $64/$67/$8A/$03
- );
-
- PROCEDURE setmemb(i:LongInt;b:Byte);
- inline
- (
- $58/
- $66/$5B/
- $64/$67/$88/$03
- );
-
- FUNCTION getmemw(i:longint):word;
- inline
- (
- $66/$5B/
- $64/$67/$8B/$03
- );
-
- PROCEDURE setmemw(i:longint;w:word);
- inline
- (
- $58/
- $66/$5B/
- $64/$67/$89/$03
- );
-
- FUNCTION getmeml(i:longint):longint;
- inline
- (
- $66/$5B/
- $64/$67/$8B/$03/
- $64/$67/$8B/$53/$02
- );
-
- PROCEDURE setmeml(i:longint;l:longint);
- inline
- (
- $58/
- $66/$5B/
- $64/$67/$66/$89/$03
- );
-
- CONST looff=0;
- hioff=$0;
-
- function getword(i:longint):word;
- inline
- (
- $66/$5B/
- $64/$67/$8B/$83/>looff/>hioff
- );
-
- procedure setword(i:longint;w:word);
- inline
- (
- $58/
- $66/$5B/
- $64/$67/$89/$83/>looff/>hioff
- );
-
- procedure setreal(i,offset:longint;r:real);
- inline
- (
- $58/
- $66/$5A/
- $66/$5E/
- $66/$5B/
- $64/$67/$89/$04/$33/
- $64/$67/$66/$89/$54/$33/$02
- );
-
- FUNCTION getreal(i,offset:longint):real;
- inline
- (
- $66/$5E/
- $66/$5B/
- $64/$67/$8B/$04/$33/
- $64/$67/$8B/$54/$33/$04/
- $64/$67/$8B/$5C/$33/$02
- );
-
- PROCEDURE set_fs(x:word);
- inline
- (
- $58/
- $8E/$E0
- );
-
- IMPLEMENTATION
-
- PROCEDURE TEST_GATE_A20;
- begin
- if memw[$FFFF:$10]=memw[0:0] then
- begin
- writeln('FEHLER: Gate A20 nicht geöffnet!');
- writeln('FastMove nicht aktiv');
- HALT(1);
- end;
- end;
-
- begin
- TEST_GATE_A20;
- set_fs(0);
- end.