[Overview][Constants][Types][Procedures and functions][Variables][Index] | Reference for unit 'go32' (#rtl)

# realintr

Simulate interrupt

## Declaration

Source position: go32.pp line 105

`function realintr(`
`intnr: Word;`
`var regs: trealregs`
`):Boolean;`

## Description

Simulates an interrupt in real mode.

Parameters:

intnr
  interrupt number to issue in real mode.
regs
  registers data structure.

Return values: The supplied registers data structure contains the values that were returned by the real mode interrupt. True if successful, False if not.

Remark: | The function transfers control to the address specified by the real mode interrupt vector of intnr. The real mode handler must return by executing an IRET.

## Errors

Check the int31error variable.

## Example

    { This example demonstrates the use of the flag constants in
    conjunction with an interrupt call

    In detail it checks if APM (advanced power management) is
    available.

    Int 15h 5300h - APM specification : Installation check
    Input : AX = 5300h
            BX = device id of system BIOS (= 0000h)
    Return : Carry clear if successful
            AH = major version (BCD)
            AL = minor version (BCD)
    }

    uses
            go32;

    var
            r : trealregs;

    begin
            { set register values and issue real mode interrupt call }
            r.ax := $5300;
            r.bx := 0;
            realintr($15, r);
            { check if carry clear and write a suited message }
            if ((r.flags and carryflag)=0) then begin
                    Writeln('APM v', (r.ah and $f), '.',
                            (r.al shr 4), (r.al and $f), ' detected');
            end else
                    Writeln('APM not present');
    end.