home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / pascal / das_buch / windows / dpmi / mapseg.pas < prev   
Encoding:
Pascal/Delphi Source File  |  1993-06-04  |  932 b   |  52 lines

  1. PROGRAM MapReal;
  2.  
  3. USES WinTypes, WinProcs, WinDos, WinCrt;
  4.  
  5. VAR
  6.   Regs: tRegisters;
  7.   Yeah: BOOLEAN;
  8.   Segm: WORD;
  9.   Long: LONGINT;
  10.  
  11. FUNCTION DPMIInstalled: BOOLEAN;
  12. BEGIN
  13.   DPMIInstalled := FALSE;
  14.   (* Ist DPMI installiert ?      *)
  15.   Regs.AX := $1686;
  16.   Intr ($2F, Regs);
  17.   IF (Regs.AX = 0)
  18.     THEN DPMIInstalled := TRUE;
  19. END;
  20.  
  21. FUNCTION MapRealModeSegment(Segment: WORD): WORD;
  22. (* Mit freundlichen Gruessen an FE *)
  23. BEGIN
  24.   MapRealModeSegment := 0;
  25.   ASM
  26.     MOV   BX, Segment
  27.     MOV   AX, 0002H
  28.     INT   31H
  29.     JC    @@1
  30.     MOV   WORD Ptr @Result, AX
  31.   @@1:
  32.   END;
  33. END;
  34.  
  35. BEGIN
  36.   InitWinCrt;
  37.   Yeah := DPMIInstalled;
  38.  
  39.   IF Yeah THEN BEGIN
  40.     Segm := MapRealModeSegment ($40);
  41.     REPEAT
  42.       Long := pLongInt(Ptr(Segm, $6C))^;
  43.       WriteLn (Long);
  44.     UNTIL KeyPressed;
  45.   END;
  46.   ReadLn;
  47.   WriteLn ('Schleife abgebrochen, <CR> zum Beenden');
  48.   ReadLn;
  49.  
  50.   DoneWinCrt;
  51. END.
  52.