
 1. About

 QPIEMU is a JLM that partly emulates the Qemm API (QPI). Its
 purpose is to provide the IO trapping part of QPI, for better support
 of sound card emulation in DOS.


 2. Install/Uninstall QPIEMU

 QPIEMU can be installed either as a device driver in CONFIG.SYS:

   DEVICE=JLOAD.EXE QPIEMU.DLL

 or as a TSR from the command line:

   JLOAD QPIEMU.DLL

 To uninstall, use JLOAD's -u option:

   JLOAD -u QPIEMU.DLL


 3. Using QPIEMU

 Once QPIEMU is installed, tools that use the QPI ( i.e. SBEMU )
 and hence usually require Qemm to be installed, should run with
 Jemm386/JemmEx.


 4. Technical Details

 QPI is a "real-mode" API, hence if addresses are used, they are in
 segment:offset format.

 The part of the supported QPI is:
 
 AH=03h, QPI_GetVersion
 AX=1A00h, QPI_UntrappedIORead
 AX=1A01h, QPI_UntrappedIOWrite
 AX=1A04h, QPI_UntrappedIO
 AX=1A06h, QPI_GetIOCallback
 AX=1A07h, QPI_SetIOCallback
 AX=1A08h, QPI_GetPortTrap
 AX=1A09h, QPI_SetPortTrap
 AX=1A0Ah, QPI_ClearPortTrap

 Since v1.2, there's also AX=5000h, which isn't part of the original QPI.
 It returns physical address of Jemm's page table 0 in register EDX.

 The way to get the address of QPI itself differs for QPIEMU:
 an INT 2Fh, with AX=1684h, BX=4354h has to be called. If successful,
 It will return with AL==0 and the QPI entry point in ES:DI.


 History
 
 - v1.0: 03/2023: initial
 - v1.1: 07/2025: bit 1 of CH holds IF
 - v1.2: 09/2025: added function ax=5000h


 5. License

 QPIEMU is Public Domain.

 Japheth

