home *** CD-ROM | disk | FTP | other *** search
/ C!T ROM 5 / ctrom5b.zip / ctrom5b / PROGRAM / PASCAL / DRIVEI2 / DMPI.PAS next >
Pascal/Delphi Source File  |  1994-11-26  |  1KB  |  44 lines

  1. Unit DMPI;
  2.  
  3. Interface
  4.  
  5. type
  6.   TRealModeReg = RECORD
  7.     rmEDI, rmESI, rmEBP, Reserved, rmEBX, rmEDX, rmECX, rmEAX: LongInt;
  8.     rmCPUFlags, rmES, rmDS, rmFS, rmGS, rmIP, rmCS, rmSP, rmSS: WORD
  9.   END;
  10.   PRealModeReg = ^TRealModeReg;
  11.  
  12. Function RealInt ( intnum: BYTE; Var RealModeReg: TRealModeReg): Boolean;
  13.  
  14. Implementation
  15.  
  16.    (*************************************************************************
  17.  / RealInt()
  18.  /
  19.  / Simulate an interrupt in real mode using DPMI function 0300h
  20.  / When the interrupt is simulated in real mode, the registers will
  21.  / contain the values in lpRealModeReg.  When the interrupt returns,
  22.  / lpRealModeReg will contain the values from real mode.
  23.  /
  24.  /*************************************************************************)
  25.  
  26.  
  27. Function RealInt ( intnum: BYTE; Var RealModeReg: TRealModeReg): Boolean; assembler;
  28.    asm
  29.        mov  ax, 0300h  (* Simulate Real Mode Interrupt *)
  30.        mov  bl, intnum
  31.        mov  bh, 0
  32.        mov  cx, 0
  33.        les  di, RealModeReg
  34.        int  31h
  35.        jc   @Error
  36.        mov  ax, TRUE    (* All is well, return TRUE *)
  37.        jmp  @Exit
  38.    @Error:
  39.        mov  ax, FALSE   (* Hmm, Mr. DPMI unhappy, return FALSE *)
  40.    @Exit:
  41.    End;
  42.  
  43.  
  44. End.