Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ Notes: characters 07h (BEL), 08h (BS), 0Ah (LF), and 0Dh (CR) are interpreted
and do the expected things
IBM PC ROMs dated 1981/4/24 and 1981/10/19 require that BH be the same
as the current active page
BUG: if the write causes the screen to scroll, BP is destroyed by BIOSes
BUGS: if the write causes the screen to scroll, BP is destroyed by BIOSes
for which AH=06h destroys BP
a 2020-09-18 commit to the FreeDOS kernel was created in response to
reports that the SBC188 returns AL as 0Ah if the call caused the
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
--------------------------------------------------------------------------------
Unique ID: 2D--30
Category: G debuggers/debugging tools
Flag: n/a
--------------------------------------------------------------------------------

INT 2D - lDebug - UPDATE IISP HEADER
AH = AMIS multiplex number for lDebug
AL = 30h
DS:SI -> source IISP header (or pseudo header)
ES:DI -> destination IISP header
Return: AL = FFh to indicate suppported,
SI and DI both incremented by 6
destination's ieNext field updated from source
AL != FFh if not supported,
SI and DI unchanged
nothing else destroyed
Notes: This function is intended to aid in debugging
handler re-ordering, removal, or insertion.
The 32-bit far pointer needs to be updated
as atomically as possible to avoid using
an incorrect pointer.
Test case: Run a program such as our TSRs'
uninstaller or SHUFHOOK and step through it
with "tp fffff" when operating on something
crucial such as interrupt 21h. Without this
function the machine will crash!
To enable this function to be called, first run
the command "r dco4 or= 8", or "INSTALL AMIS"
(install our AMIS multiplexer handler).
Other workaround: Use SILENT for TP and disable
DCO3 flag 4000_0000 (do not call int 21.0B to
check for Ctrl-C status).
Yet another workaround: Set flag DCO 8 (enable
fake InDOS mode, avoid calling int 21h).
The source may be a pseudo IISP header. In this
case the ieEntry field should hold 0FEEBh
(jmp short $) and the ieSignature field
should indicate the source, eg "VT" for the IVT
or "NH" for inserting a New Handler.
SeeAlso: #02568
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
--------------------------------------------------------------------------------
Unique ID: 2D--31
Category: G debuggers/debugging tools
Flag: n/a
--------------------------------------------------------------------------------

INT 2D - lDebugX - INSTALL DPMI HOOK
AH = AMIS multiplex number for lDebug
AL = 31h
Return: AL = FFh if installed
AL = FEh..F0h if not installed but call is supported
AL = 00h if not supported
nothing else destroyed
Notes: state must be not in DOS
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
--------------------------------------------------------------------------------
Unique ID: 2D--32
Category: G debuggers/debugging tools
Flag: n/a
--------------------------------------------------------------------------------

INT 2D - lDebugX - RESERVED
AH = AMIS multiplex number for lDebug
AL = 32h
Return: may destroy registers
Notes: reserved for INSTALL DPMI HOOK that may destroy registers
where INT 2D/AL=31h"lDebugX" does not
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
--------------------------------------------------------------------------------
Unique ID: 2D--33
Category: G debuggers/debugging tools
Flag: n/a
--------------------------------------------------------------------------------

INT 2D - lDebugX - INSTALL FAULT AREAS
AH = AMIS multiplex number for lDebug
AL = 33h
DX:BX -> fault area structure of client
Return: AL = FFh if installed
AL = FEh..01h if not installed but call is supported
AL = 00h if not supported
may destroy AL, BX, CX, DX, SI, DI, ES, DS
Notes: The area structure is defined in the lDebug sources'
debug.mac file. The first 32 bytes of the structure
start with a signature word, which is equal to the
word value CBF9h (encoding the instruction sequence
of STC \ RETF) if the structure is not currently
installed into any debugger. The remainder of the
32 bytes, as well as the details of how the first
two bytes are used otherwise, are private to the
debugger that provides this service (the server).
The area structure may be far-called in 86 Mode. The
only currently defined function (in AL) for this call
is function 00h, which attempts to uninstall the area
structure which is being called. It is valid for
either the server or the client to uninstall an
area structure if they so wish.
The fields of the structure behind the first 32 bytes
point to a number of sub-structures and area function
lists and area lists. All of these structures are
to be accessed using the same segment as the main
area structure. They contain linear start and linear
end addresses, which the client sets up before it
tries to install the areas. The linear start address
is also assumed to point to the segment base address
which is used as the reference for the area functions
and areas. (They do not have to match the offset part
actually used to run the code, but the lists must be
based on the linear start address.)
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
--------------------------------------------------------------------------------
Unique ID: 2D--40
Category: G debuggers/debugging tools
Flag: n/a
--------------------------------------------------------------------------------

INT 2D - lDebug - AMIS message ELD - DISPLAY MESSAGE TO DEBUGGER TERMINAL
AH = AMIS multiplex number for lDebug
AL = 40h
DX:BX -> ASCIZ message, will be truncated if > 384 Bytes
Return: AL = 00h if not supported
AL = FFh if supported and full message stored
(older revisions unconditionally returned al = FFh)
AL = FEh if supported and truncated message stored
(truncation may occur at 383 or 384 Bytes of non-NUL text)
current amismsg.eld does not destroy any other registers
Notes: This function is provided by an ELD (Extension for lDebug)
hooking into the debugger's AMIS handler.
Older versions of the ELD only had a buffer of 128 Bytes.
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
--------------------------------------------------------------------------------
Unique ID: 2D--41
Category: G debuggers/debugging tools
Flag: n/a
--------------------------------------------------------------------------------

INT 2D - lDebug - AMIS message ELD - QUERY MESSAGE STATUS
AH = AMIS multiplex number for lDebug
AL = 41h
Return: AL = 00h if not supported
AL = 01h if supported and no message is stored
AL = 02h if supported and message is still stored (not yet displayed)
current amismsg.eld does not destroy any other registers
Notes: This function is provided by an ELD (Extension for lDebug)
hooking into the debugger's AMIS handler.
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
--------------------------------------------------------------------------------
Unique ID: 2D--42
Category: G debuggers/debugging tools
Flag: n/a
--------------------------------------------------------------------------------

INT 2D - lDebug - AMIS other debugger link ELD - GET OTHER LINK DATA
AH = AMIS multiplex number for lDebug
AL = 42h
Return: AL = 00h if not supported
AL = FFh if supported
BX (86M segment) => link tables
CX (selector) => link tables
DX (86M segment) => PSP
SI (selector) => PSP
DI -> link info in link tables section
current amisoth.eld does not destroy any other registers
Notes: This function is provided by an ELD (Extension for lDebug)
hooking into the debugger's AMIS handler.
If the debugger is without DPMI support or if not in PM,
the selector values may be uninitialised or stale.
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
--------------------------------------------------------------------------------
Unique ID: 2D--43
Category: G debuggers/debugging tools
Flag: n/a
--------------------------------------------------------------------------------

INT 2D - lDebug - AMIS command ELD - INJECT A DEBUGGER COMMAND
AH = AMIS multiplex number for lDebug
AL = 43h
CX = flags, all reserved for now (must pass as 0)
DX:BX -> message in byte-counted string,
1 byte length (<= 254)
N bytes text, length matching the value of length byte
1 byte Carriage Return (= 13)
Return: AL = 00h if not supported
AL = 01h if supported, but buffer is full
AL = 02h if supported, but unknown bit set in CX
AL = FFh if successfully stored in buffer
current amiscmd.eld does not destroy any other registers
Notes: This function is provided by an ELD (Extension for lDebug)
hooking into the debugger's AMIS handler.

Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
--------------------------------------------------------------------------------
Unique ID: 2D--44
Category: G debuggers/debugging tools
Flag: n/a
--------------------------------------------------------------------------------

INT 2D - lDebug - RESERVED FOR ELD INTERFACING
AH = AMIS multiplex number for lDebug
AL = 44h..4Fh
Return: AL = 00h if not supported
Notes: These functions may be provided by future ELDs (Extensions
for lDebug) hooking into the debugger's AMIS handler.