bas7advr.hlp (Topic list)
Important Notice
The pages on this site contain documentation for very old MS-DOS software, purely for historical purposes. If you're looking for up-to-date documentation, particularly for programming, you should not rely on the information found here, as it will be woefully out of date.
Absolute Routine Details
  Syntax  Details  Example                 Contents  Index  Back
──────────────────────────────────────────────────────────────────────────────
The Absolute routine transfers control to a machine-language procedure. This
routine is included in the QBX.QLB and QBX.LIB libraries.
 
CALL Absolute ([argumentlist,] integervariable%)
    ■ Arguments in argumentlist are passed to the machine-language program
      as offsets (near pointers) from the current data segment. Although
      arguments are passed as offsets, the machine-language program is
      invoked with a far call.
    ■ The integervariable% is not passed to the procedure. Your program
      may need to execute a DEF SEG statement before executing Absolute
      to set the code segment for the called routine. Using a noninteger
      value for integervariable% produces unpredictable results.
 
Important
    ■ To use the Absolute routine in the QBX environment, use the QBX.QLB
      Quick library. To use Absolute outside the QBX environment, link
      your program with the QBX.LIB file.
    ■ The QBX.BI header file contains the necessary declarations for the
      Absolute routine.
    ■ The Absolute routine is provided to maintain compatibility
      with earlier versions of BASIC. Mixed-language programming using
      the CALL and DECLARE statements provide a simpler way to use
      assembly language with BASIC.
 
Programming With OS/2
    ■ When using the Absolute routine in OS/2 protected mode, be
      careful not to refer to an illegal memory address. Before it
      executes the Absolute routine, BASIC attempts to get an executable-
      code-segment alias for the code you wish to access. If this
      operation fails, BASIC generates the error message, "Permission
      denied." A safe place to store user-written machine code is in
      memory allocated for a conventional BASIC object, such as an array.
 
Differences from BASICA
    ■ Assembly-language programs that are invoked from BASICA and that have
      string arguments must be changed because string descriptors are now
      4 bytes long. For a near-string descriptor, the 4 bytes are the low
      byte and high byte of the string length followed by the low byte and
      high byte of the string address. Far-string descriptors are also
      4 bytes long, but their structure is proprietary. For more
      information on using far-string descriptors, see "Mixed-Language
      Programming" and "Advanced Programming with Far Strings" in the
      Programmer's Guide.
    ■ The Absolute routine replaces the BASICA CALL statement.