Interrupt 2Fh   Multiplex Interrupt                      

     Interrupt 2Fh  is the multiplex interrupt. A general interface is
     defined  between   two  processes.  It  is  up  to  the  specific
     application using interrupt 2Fh to define specific  functions and
     parameters.

     Every   multiplex  interrupt  handler  is  assigned  a   specific
     multiplex number. The multiplex number  is  specified  in  the AH
     register;  the  AH  value  tells  which program your  request  is
     directed toward. The specific function  that  the  handler  is to
     perform is placed in the AL register. Other parameters are places
     in the other registers as needed. The handlers  are  chained into
     the 2Fh interrupt vector and the multiplex number  is  checked to
     see if any other application  is using the same multiplex number.
     There is no predefined method for assigning a multiplex number to
     a handler. You must just pick one. To  avoid  a  conflict  if two
     applications  choose  the same multiplex  number,  the  multiplex

     numbers used by an application should be patchable.  In  order to
     check for a previous installation of the current application, you
     can search memory for a unique string included  in  your program.
     If the  value  you  wanted  in AH is taken but you don't find the
     string, then another application has grabbed that location.

     Int 2Fh was not documented under DOS 2.x. There is no  reason not
     to  use  int  2Fh as the multiplex interrupt in DOS 2.x. The only
     problem is that DOS does not initialize the int  2Fh  vector,  so
     when you  try  to  chain  to it like you are supposed to, it will
     crash. But if your  program  checks the vector for being zero and
     doesn't  chain in that case, it will work for you in 2.x just the
     same as 3.x.

     Int 2Fh doesn't require any support from DOS itself for it  to be
     used in application programs. It's not handled by DOS, but by the
     programs  themselves.  The  only support DOS has to provide is to
     initialize the vector to  an  IRET.  DOS  3.2 does itself contain
     some int 2Fh handlers - it uses values  of  08h,  13h,  and 0F8h.

Notes:

     1)   The multiplex numbers AH=0h through AH=7Fh are  reserved for
          DOS.  Applications should use multiplex numbers 80h  through
          0FFh.

     2)   When  in the chain for int 2Fh, if your code calls DOS or if
          you execute  with  interrupts  enabled,  your  code  must be
          reentrant/recursive.


Copyright © 1985 to 2022 Beta Systems                            Last modified: Wednesday, January 05, 2022 .