Jump to content

DevHelp ABIOSCall

From EDM2
Revision as of 20:49, 25 September 2016 by Martini (talk | contribs) (Created page with "==Description== This service starts an ABIOS function for the Operating System Transfer Convention. ==Syntax== <PRE> USHORT APIENTRY DevHelp_ABIOSCall (USHORT Lid, ...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Description

This service starts an ABIOS function for the Operating System Transfer Convention.

Syntax


USHORT APIENTRY DevHelp_ABIOSCall (USHORT Lid,
                                   NPBYTE ReqBlk,
                                   USHORT Entry_Type)

Parameters

Lid (USHORT) - (input) - Logical ID

ReqBlk (NPBYTE) - (input) - Offset in data segment to ABIOS request block

Entry_Type (USHORT) - input - Specifies entry point

                             ABIOS_EP_START       start
                             ABIOS_EP_INTERRUPT   interrupt
                             ABIOS_EP_TIMEOUT     timeout

Return Code

Success indicator: 0

Possible errors:

              ERROR_LID_DOES_NOT_EXIST     (0x02)
              ERROR_ABIOS_NOT_PRESENT      (0x03)
              ERROR_NOT_YOUR_LID           (0x04)
              ERROR_INVALID_ENTRY_POINT    (0x05)

Remarks

ABIOSCall sets up the stack for the call to ABIOS. The indicated ABIOS function is called according to the Operating System Transfer Convention. When the ABIOS function returns, ABIOSCall cleans up the stack before returning to the physical device driver.

The DS register must point to the physical device driver's data segment. If the DS register was used in a previous call to PhysToVirt, it must be reset to the device driver's data segment.

Example Code

C

ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

Calling Sequence in C

ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

     #include  "abios.h"
     #include  "dhcalls.h"

USHORT APIENTRY DevHelp_ABIOSCall (USHORT Lid,
                                   NPBYTE ReqBlk,
                                   USHORT Entry_Type)

Assembler

Calling Sequence in Assembler

ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

MOV   AX,LID              ; Logical ID
MOV   SI,RB_Offset        ; Offset in data segment to ABIOS request block
MOV   DH,Entry_Point      ; Specifies entry point
                          ; 0 = start
                          ; 1 = interrupt
                          ; 2 = timeout
MOV   DL,DevHlp_ABIOSCall

CALL  [Device_Help]

ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

Results in Assembler

ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

   'C' Clear if successful.
       The ABIOS service is invoked.

   'C' Set if error.
       AX = Error code.
            Possible errors:
               ERROR_LID_DOES_NOT_EXIST              (0x02)
               ERROR_ABIOS_NOT_PRESENT               (0x03)
               ERROR_NOT_YOUR_LID                    (0x04)
               ERROR_INVALID_ENTRY_POINT             (0x05)




Related Functions