This Info file generated by Halibut, unidentified version

2020 by C. Masloch. Usage of the works is permitted provided that this
instrument is retained with the works, so that any entity that uses
the works is notified of this instrument. DISCLAIMER: THE WORKS ARE
WITHOUT WARRANTY.


File: ldebug.info,  Node: Section 5.27,  Prev: Section 5.26,  Up: Section 5,  Next: Section 5.27.1

Section 5.27: R command - Display and set Register values
---------------------------------------------------------

  register        R [register [value]]

The R command without any register specified dumps the current
registers, either displayed as 16-bit or 32-bit values (depending
on the RX option), and disassembles the instruction at the current
CS:(E)IP location.

R with a register, named debugger variable, or memory variable (of
the form BYTE/WORD/3BYTE/DWORD [segment:offset]) displays the current
value of the specified variable. It then displays a prompt, allowing
the user to enter a new value for that variable. Entering a dot (.) or
an empty line returns to the default debugger command line.

R with a variable, followed by a dot (.), only displays the current
value of that variable.

R with a variable, followed by an optional equals sign, and
followed by an expression, evaluates the expression and assigns its
resulting value to the variable. The equals sign may instead be a
binary operator with a trailing equals sign, which is handled as an
assignment operator.

Examples:

  -r ax .
  AX 0000
  -r ax
  AX 0000  :1
  -r ax
  AX 0001  :.
  -r ax += 4
  -r ax
  AX 0005  :
  -r word [cs:0]
  WORD [1867:0000] 20CD  :
  -r dif .
  DIF 0100B00B
  -

* Menu:

* Section 5.27.1:: RE command - Register dump Extended
* Section 5.27.2:: RE buffer commands

File: ldebug.info,  Node: Section 5.27.1,  Prev: Section 5.27,  Up: Section 5.27,  Next: Section 5.27.2

Section 5.27.1: RE command - Register dump Extended
...................................................

  R extended      RE

The RE command runs the RE buffer commands. Refer to
*Note Section 7.7::.


File: ldebug.info,  Node: Section 5.27.2,  Prev: Section 5.27.1,  Up: Section 5.27,  Next: Section 5.28

Section 5.27.2: RE buffer commands
..................................

  RE commands     RE.LIST|APPEND|REPLACE [commands]

RE.LIST lists the RE buffer contents in a way that can be re-used as
input to RE.REPLACE.

RE.APPEND appends the following commands to the RE buffer.

RE.REPLACE replaces the RE buffer with the following commands.

The RE buffer usage is described in the ?RE help page
(*Note Section 7.7::).


File: ldebug.info,  Node: Section 5.28,  Prev: Section 5.27.2,  Up: Section 5,  Next: Section 5.29

Section 5.28: RM command - Display MMX Registers
------------------------------------------------

  MMX register    RM


File: ldebug.info,  Node: Section 5.29,  Prev: Section 5.28,  Up: Section 5,  Next: Section 5.30

Section 5.29: RN command - Display FPU Registers
------------------------------------------------

  FPU register    RN


File: ldebug.info,  Node: Section 5.30,  Prev: Section 5.29,  Up: Section 5,  Next: Section 5.31

Section 5.30: RX command - Toggle 386 Register Extensions display
-----------------------------------------------------------------

  toggle 386 regs RX


File: ldebug.info,  Node: Section 5.31,  Prev: Section 5.30,  Up: Section 5,  Next: Section 5.32

Section 5.31: S command - Search memory
---------------------------------------

  search          S range [REVERSE] [RANGE range|list]

The S command searches memory for a byte string. The first range
specifies the search space. By default, searching will begin at the
bottom of the search space and move upwards. If a REVERSE keyword is
specified after the range then searching will begin at the top of the
search space moving downwards. The search string is specified either
with the RANGE keyword followed by another range, or as a list of byte
values.

The read-only variable SRC (Search Result Count) will receive the 32-
bit value that is the amount of matched occurrences. The variable SRS0
receives the first Search Result Segment. Likewise SRO0 receives the
first Search Result Offset. SRO1 to SROF hold subsequent Search Result
Offsets. SRO is an alias to SRO0. SRO variables are 32-bit in the _PM
build lDebugX, 16-bit otherwise. Unused SRO variables are zeroed out
by a successful search.

The display of search results is as follows:

 -  First, the result's segmented address.

 -  Then, a hexadeximal dump of the 16 bytes that follow the search
    string match at this point.

 -  Finally, the ASCII character dump of these 16 bytes.

There is an option to disable the data dump so as to only display the
match addresses. If the bit 80_0000h is set in the DCO variable then
the data dump is suppressed.


File: ldebug.info,  Node: Section 5.32,  Prev: Section 5.31,  Up: Section 5,  Next: Section 5.32.1

Section 5.32: T command - Trace
-------------------------------

  trace           T [=address] [count [WHILE cond] [SILENT [count]]]

The T command is similar to the P command. However, T traces most
instructions. Depending on the TM option, interrupt instructions are
also traced (into the interrupt handler) or proceeded past.

* Menu:

* Section 5.32.1:: TP command - Trace/Proceed past string ops

File: ldebug.info,  Node: Section 5.32.1,  Prev: Section 5.32,  Up: Section 5.32,  Next: Section 5.33

Section 5.32.1: TP command - Trace/Proceed past string ops
..........................................................

  trace (exc str) TP [=address] [count [WHILE cond] [SILENT [count]]]

The TP command is alike the T command, but proceeds past repeated
string instructions like the P command would.


File: ldebug.info,  Node: Section 5.33,  Prev: Section 5.32.1,  Up: Section 5,  Next: Section 5.34

Section 5.33: TM command - Show or set Trace Mode
-------------------------------------------------

  trace mode      TM [0|1]


File: ldebug.info,  Node: Section 5.34,  Prev: Section 5.33,  Up: Section 5,  Next: Section 5.35

Section 5.34: TSR command - Enter TSR mode
------------------------------------------

  enter TSR mode  TSR


File: ldebug.info,  Node: Section 5.35,  Prev: Section 5.34,  Up: Section 5,  Next: Section 5.36

Section 5.35: U command - Disassemble
-------------------------------------

  unassemble      U [range]


File: ldebug.info,  Node: Section 5.36,  Prev: Section 5.35,  Up: Section 5,  Next: Section 5.37

Section 5.36: W command - Write Program
---------------------------------------

  write program   W [address]


File: ldebug.info,  Node: Section 5.37,  Prev: Section 5.36,  Up: Section 5,  Next: Section 5.38

Section 5.37: W command - Write Sectors
---------------------------------------

  write sectors   W address drive sector count


File: ldebug.info,  Node: Section 5.38,  Prev: Section 5.37,  Up: Section 5,  Next: Section 5.39

Section 5.38: X commands - Expanded Memory (EMS) commands
---------------------------------------------------------

  expanded mem    XA/XD/XM/XR/XS, X? for help


File: ldebug.info,  Node: Section 5.39,  Prev: Section 5.38,  Up: Section 5,  Next: Section 6

Section 5.39: Y command - Run script file
-----------------------------------------

  run script      Y [partition/][scriptfile] [:label]

The Y command runs a script file. The script file is specified in two
different ways, depending on whether the debugger is running as an 86-
DOS application or as a boot-loaded kernel replacement.

 -  If running as an application, the script name is a regular
    pathname. It may be quoted with doublequotes if the pathname
    includes blanks. If the indicated drive supports long filenames
    (LFNs) then the debugger will first try to open the pathname as an
    LFN.

 -  Otherwise, the script name may start with a partition
    specification to use. (Refer to the ?BOOT help page in
    *Note Section 7.10:: for partition specifications.) Then, the
    pathname relative to that partition's root directory follows. Long
    filenames are not supported. Note that it is not valid to run an
    empty script file when boot-loaded.

Further, a label may be specified to cause execution to start at that
label instead of at the start of the file. This is equivalent to
placing a `GOTO :label' command at the start of the script file. The
colon to indicate a label is required.

If execution already is within a script file, then the Y command may
be run with only a label (again with the colon required). In that
case, the current script file is opened in a subsequent level (handle
or boot-loaded script file context) and execution starts at that
label.


File: ldebug.info,  Node: Section 6,  Prev: Section 5.39,  Up: Top,  Next: Section 6.1

Section 6: Variable Reference
=============================

* Menu:

* Section 6.1:: Registers
* Section 6.2:: Options
* Section 6.3:: Default step counts
* Section 6.4:: Limits
* Section 6.5:: Return Codes
* Section 6.6:: Addresses
* Section 6.7:: I/O configuration
* Section 6.8:: Serial configuration
* Section 6.9:: _DEBUG1 variables
* Section 6.10:: _DEBUG3 variables
* Section 6.11:: Y command variables
* Section 6.12:: V variables - Variables with user-defined purpose
* Section 6.13:: PSP variables
* Section 6.14:: SR variables - Search Results

File: ldebug.info,  Node: Section 6.1,  Prev: Section 6,  Up: Section 6,  Next: Section 6.2

Section 6.1: Registers
----------------------

All debuggee registers can be accessed numerically:

 -  al, cl, dl, bl, ah, ch, dh, bh

 -  ax, cx, dx, bx, sp, bp, si, di

 -  eax, ecx, edx, ebx, esp, ebp, esi, edi

 -  es, cs, ss, ds, fs, gs

 -  fl, efl, ip, eip

Each 16-bit register can be used in a register pair, such as:

 -  dxax

 -  bxcx (used by L load program and W write program commands)

 -  sidi

 -  csip


File: ldebug.info,  Node: Section 6.2,  Prev: Section 6.1,  Up: Section 6,  Next: Section 6.2.1

Section 6.2: Options
--------------------

* Menu:

* Section 6.2.1:: DCO - Debugger Common Options
* Section 6.2.2:: DCS - Debugger Common Startup options
* Section 6.2.3:: DIF - Debugger Internal Flags
* Section 6.2.4:: DAO - Debugger Assembly Options
* Section 6.2.5:: DAS - Debugger Assembly Startup options
* Section 6.2.6:: DPI - Debugger Parent Interrupt 22h
* Section 6.2.7:: DPR - Debugger PRocess
* Section 6.2.8:: DPP - Debugger Parent Process
* Section 6.2.9:: DPS - Debugger Process Selector

File: ldebug.info,  Node: Section 6.2.1,  Prev: Section 6.2,  Up: Section 6.2,  Next: Section 6.2.2

Section 6.2.1: DCO - Debugger Common Options
............................................


File: ldebug.info,  Node: Section 6.2.2,  Prev: Section 6.2.1,  Up: Section 6.2,  Next: Section 6.2.3

Section 6.2.2: DCS - Debugger Common Startup options
....................................................


File: ldebug.info,  Node: Section 6.2.3,  Prev: Section 6.2.2,  Up: Section 6.2,  Next: Section 6.2.4

Section 6.2.3: DIF - Debugger Internal Flags
............................................


File: ldebug.info,  Node: Section 6.2.4,  Prev: Section 6.2.3,  Up: Section 6.2,  Next: Section 6.2.5

Section 6.2.4: DAO - Debugger Assembly Options
..............................................


File: ldebug.info,  Node: Section 6.2.5,  Prev: Section 6.2.4,  Up: Section 6.2,  Next: Section 6.2.6

Section 6.2.5: DAS - Debugger Assembly Startup options
......................................................


File: ldebug.info,  Node: Section 6.2.6,  Prev: Section 6.2.5,  Up: Section 6.2,  Next: Section 6.2.7

Section 6.2.6: DPI - Debugger Parent Interrupt 22h
..................................................


File: ldebug.info,  Node: Section 6.2.7,  Prev: Section 6.2.6,  Up: Section 6.2,  Next: Section 6.2.8

Section 6.2.7: DPR - Debugger PRocess
.....................................


File: ldebug.info,  Node: Section 6.2.8,  Prev: Section 6.2.7,  Up: Section 6.2,  Next: Section 6.2.9

Section 6.2.8: DPP - Debugger Parent Process
............................................


File: ldebug.info,  Node: Section 6.2.9,  Prev: Section 6.2.8,  Up: Section 6.2,  Next: Section 6.3

Section 6.2.9: DPS - Debugger Process Selector
..............................................

0 while in Real or Virtual 8086 Mode, debugger process selector
otherwise. (The process selector addresses DebugX's PSP and DATA ENTRY
section.)


File: ldebug.info,  Node: Section 6.3,  Prev: Section 6.2.9,  Up: Section 6,  Next: Section 6.4

Section 6.3: Default step counts
--------------------------------

PPC

    Proceed command (*Note Section 5.25::) default step count

TPC

    Trace/Proceed command (*Note Section 5.32.1::) default step count

TTC

    Trace command (*Note Section 5.32::) default step count

All of these are doublewords and default to 1. For the respective
commands, these counts specify the number of steps to take if none
is specified explicitly. This includes when a command is run by
autorepeat, refer to *Note Section 5.1::. If one of these is set to
zero then it is an error to not specify a count explicitly for the
corresponding command.


File: ldebug.info,  Node: Section 6.4,  Prev: Section 6.3,  Up: Section 6,  Next: Section 6.4.1

Section 6.4: Limits
-------------------

* Menu:

* Section 6.4.1:: RELIMIT - RE buffer execution command limit
* Section 6.4.2:: RECOUNT - RE buffer execution command count

File: ldebug.info,  Node: Section 6.4.1,  Prev: Section 6.4,  Up: Section 6.4,  Next: Section 6.4.2

Section 6.4.1: RELIMIT - RE buffer execution command limit
..........................................................

Doubleword. Default is 256. If this many commands are executed from
the RE buffer, the execution is aborted and the command that called RE
is continued.


File: ldebug.info,  Node: Section 6.4.2,  Prev: Section 6.4.1,  Up: Section 6.4,  Next: Section 6.5

Section 6.4.2: RECOUNT - RE buffer execution command count
..........................................................

Doubleword. This is reset to zero when RE buffer execution starts.
Each time a command is executed from the RE buffer, this variable is
incremented. If it reaches the value of RELIMIT, RE buffer execution
is aborted.


File: ldebug.info,  Node: Section 6.5,  Prev: Section 6.4.2,  Up: Section 6,  Next: Section 6.5.1

Section 6.5: Return Codes
-------------------------

* Menu:

* Section 6.5.1:: RC - Return Code
* Section 6.5.2:: ERC - Error Return Code

File: ldebug.info,  Node: Section 6.5.1,  Prev: Section 6.5,  Up: Section 6.5,  Next: Section 6.5.2

Section 6.5.1: RC - Return Code
...............................

Word. This holds the most recent command's return code. If the most
recent command succeeded, then this is zero.


File: ldebug.info,  Node: Section 6.5.2,  Prev: Section 6.5.1,  Up: Section 6.5,  Next: Section 6.6

Section 6.5.2: ERC - Error Return Code
......................................

Word. This holds the most recent non-zero return code.


File: ldebug.info,  Node: Section 6.6,  Prev: Section 6.5.2,  Up: Section 6,  Next: Section 6.6.1

Section 6.6: Addresses
----------------------

* Menu:

* Section 6.6.1:: A address (AAS:AAO)
* Section 6.6.2:: D address (ADS:ADO)
* Section 6.6.3:: Address behind R disassembly (ABS:ABO)
* Section 6.6.4:: U address (AUS:AUO)
* Section 6.6.5:: E address (AES:AEO)
* Section 6.6.6:: DZ address (AZS:AZO)
* Section 6.6.7:: D$ address (ACS:ACO)
* Section 6.6.8:: D# address (APS:APO)
* Section 6.6.9:: DW# address (AWS:AWO)
* Section 6.6.10:: DX address (AXO)

File: ldebug.info,  Node: Section 6.6.1,  Prev: Section 6.6,  Up: Section 6.6,  Next: Section 6.6.2

Section 6.6.1: A address (AAS:AAO)
..................................

AAS: word, AAO: doubleword. Default address for the assembler. Updated
to point after each assembled instruction.


File: ldebug.info,  Node: Section 6.6.2,  Prev: Section 6.6.1,  Up: Section 6.6,  Next: Section 6.6.3

Section 6.6.2: D address (ADS:ADO)
..................................

Default address for memory dumping. Updated to point after each dumped
memory content.


File: ldebug.info,  Node: Section 6.6.3,  Prev: Section 6.6.2,  Up: Section 6.6,  Next: Section 6.6.4

Section 6.6.3: Address behind R disassembly (ABS:ABO)
.....................................................


File: ldebug.info,  Node: Section 6.6.4,  Prev: Section 6.6.3,  Up: Section 6.6,  Next: Section 6.6.5

Section 6.6.4: U address (AUS:AUO)
..................................

Default address for the disassembler.


File: ldebug.info,  Node: Section 6.6.5,  Prev: Section 6.6.4,  Up: Section 6.6,  Next: Section 6.6.6

Section 6.6.5: E address (AES:AEO)
..................................

Default address for memory entry.


File: ldebug.info,  Node: Section 6.6.6,  Prev: Section 6.6.5,  Up: Section 6.6,  Next: Section 6.6.7

Section 6.6.6: DZ address (AZS:AZO)
...................................

Default address for DZ command, ASCIZ strings. Terminated by zero
byte.


File: ldebug.info,  Node: Section 6.6.7,  Prev: Section 6.6.6,  Up: Section 6.6,  Next: Section 6.6.8

Section 6.6.7: D$ address (ACS:ACO)
...................................

Default address for D$ command, CP/M strings. Terminated by dollar
sign `$'.


File: ldebug.info,  Node: Section 6.6.8,  Prev: Section 6.6.7,  Up: Section 6.6,  Next: Section 6.6.9

Section 6.6.8: D# address (APS:APO)
...................................

Default address for D# command, Pascal strings. Prefixed by length
count byte.


File: ldebug.info,  Node: Section 6.6.9,  Prev: Section 6.6.8,  Up: Section 6.6,  Next: Section 6.6.10

Section 6.6.9: DW# address (AWS:AWO)
....................................

Default address for DW# command. Prefixed by length count word.


File: ldebug.info,  Node: Section 6.6.10,  Prev: Section 6.6.9,  Up: Section 6.6,  Next: Section 6.7

Section 6.6.10: DX address (AXO)
................................

Default address for DX command. (Only included in DebugX.)


File: ldebug.info,  Node: Section 6.7,  Prev: Section 6.6.10,  Up: Section 6,  Next: Section 6.7.1

Section 6.7: I/O configuration
------------------------------

* Menu:

* Section 6.7.1:: IOR - I/O Rows
* Section 6.7.2:: IOC - I/O Columns

File: ldebug.info,  Node: Section 6.7.1,  Prev: Section 6.7,  Up: Section 6.7,  Next: Section 6.7.2

Section 6.7.1: IOR - I/O Rows
.............................

Byte. Default 1. Sets the number of rows of the terminal used by DOS
or BIOS output. Setting this to zero disables paging to the DOS or
BIOS output. Setting this to 1 uses the automatic selection. That
means the BIOS Data Area byte at address 484h, plus one, is used. If
using that byte and it is zero, paging is disabled.


File: ldebug.info,  Node: Section 6.7.2,  Prev: Section 6.7.1,  Up: Section 6.7,  Next: Section 6.8

Section 6.7.2: IOC - I/O Columns
................................

Byte. Default 1. Sets the number of columns of the terminal used by
BIOS input. Setting this to zero selects a default (80). Setting this
to 1 uses the automatic selection. That means the BIOS Data Area word
at address 44Ah is used. This is used by the line input handling if
inputting from the BIOS terminal (int 16h, int 10h), or if inputting
from a DOS terminal when DCO flag 800h is set.


File: ldebug.info,  Node: Section 6.8,  Prev: Section 6.7.2,  Up: Section 6,  Next: Section 6.8.1

Section 6.8: Serial configuration
---------------------------------

* Menu:

* Section 6.8.1:: DSR - Debugger Serial Rows
* Section 6.8.2:: DSC - Debugger Serial Columns
* Section 6.8.3:: DST - Debugger Serial Timeout
* Section 6.8.4:: DSF - Debugger Serial FIFO size
* Section 6.8.5:: DSPVI - Debugger Serial Port Variable Interrupt number
* Section 6.8.6:: DSPVM - Debugger Serial Port Variable IRQ Mask
* Section 6.8.7:: DSPVP - Debugger Serial Port Variable base Port
* Section 6.8.8:: DSPVD - Debugger Serial Port Variable Divisor latch
* Section 6.8.9:: DSPVS - Debugger Serial Port Variable Settings
* Section 6.8.10:: DSPVF - Debugger Serial Port Variable FIFO select

File: ldebug.info,  Node: Section 6.8.1,  Prev: Section 6.8,  Up: Section 6.8,  Next: Section 6.8.2

Section 6.8.1: DSR - Debugger Serial Rows
.........................................

Byte. Default 24. Sets the number of rows of the terminal connected
via serial port. Setting this to zero disables paging to the serial
port. Setting this to 1 uses the IOR variable handling.


File: ldebug.info,  Node: Section 6.8.2,  Prev: Section 6.8.1,  Up: Section 6.8,  Next: Section 6.8.3

Section 6.8.2: DSC - Debugger Serial Columns
............................................

Byte. Default 80. Sets the number of columns of the terminal connected
via serial port. Setting this to zero selects a default (80). Setting
this to 1 uses the IOC variable handling. This is used by the line
input handling.


File: ldebug.info,  Node: Section 6.8.3,  Prev: Section 6.8.2,  Up: Section 6.8,  Next: Section 6.8.4

Section 6.8.3: DST - Debugger Serial Timeout
............................................

Byte. Default 15. This gives the number of seconds that the KEEP
prompt upon serial connection waits. Setting this to zero waits at the
prompt forever.


File: ldebug.info,  Node: Section 6.8.4,  Prev: Section 6.8.3,  Up: Section 6.8,  Next: Section 6.8.5

Section 6.8.4: DSF - Debugger Serial FIFO size
..............................................

Byte. Default 16. This gives the size of the 16550A's built-in TX FIFO
to use. Set to 15 if using dosemu before revision gc7f5a828 2019-01-
22, see https://github.com/stsp/dosemu2/issues/748.


File: ldebug.info,  Node: Section 6.8.5,  Prev: Section 6.8.4,  Up: Section 6.8,  Next: Section 6.8.6

Section 6.8.5: DSPVI - Debugger Serial Port Variable Interrupt number
.....................................................................

Byte. Default 0Bh, corresponding to COM2. Use 0Ch for COM1. This
specifies the interrupt number to hook so as to be notified of serial
events. The use of this variable occurs only when connecting to serial
I/O. The value at that point in time is cached for as long as the
serial connection is in use.


File: ldebug.info,  Node: Section 6.8.6,  Prev: Section 6.8.5,  Up: Section 6.8,  Next: Section 6.8.7

Section 6.8.6: DSPVM - Debugger Serial Port Variable IRQ Mask
.............................................................

Word. Default 0000_1000b, corresponding to COM2. Use 0001_0000b for
COM1. This specifies the IRQ mask of which IRQs to enable. The low 8
bits correspond to IRQ #0 to #7 and the high 8 bits correspond to IRQ
#8 to #15. If any bit of the high 8 bits is set then generally the bit
0100b should be set too, to enable the chained PIC. This circumstance
is not automatically detected. The use of this variable occurs only
when connecting to serial I/O. The value at that point in time is
cached for as long as the serial connection is in use.


File: ldebug.info,  Node: Section 6.8.7,  Prev: Section 6.8.6,  Up: Section 6.8,  Next: Section 6.8.8

Section 6.8.7: DSPVP - Debugger Serial Port Variable base Port
..............................................................

Word. Default 02F8h, corresponding to COM2. Use 03F8h for COM1. This
specifies the I/O port base to address the UART. The use of this
variable occurs only when connecting to serial I/O. The value at that
point in time is cached for as long as the serial connection is in
use.


File: ldebug.info,  Node: Section 6.8.8,  Prev: Section 6.8.7,  Up: Section 6.8,  Next: Section 6.8.9

Section 6.8.8: DSPVD - Debugger Serial Port Variable Divisor latch
..................................................................

Word. Default 12, corresponding to 9600 baud. This specifies the DL
value to set during initialisation. The use of this variable occurs
only when connecting to serial I/O.


File: ldebug.info,  Node: Section 6.8.9,  Prev: Section 6.8.8,  Up: Section 6.8,  Next: Section 6.8.10

Section 6.8.9: DSPVS - Debugger Serial Port Variable Settings
.............................................................

Byte. Default 0000_0011b, corresponding to 8n1. (8n1 = 8 data bits,
no parity, 1 stop bit.) This specifies the settings to set up in LCR.
The high bit (80h) generally must be clear. The use of this variable
occurs only when connecting to serial I/O.


File: ldebug.info,  Node: Section 6.8.10,  Prev: Section 6.8.9,  Up: Section 6.8,  Next: Section 6.9

Section 6.8.10: DSPVF - Debugger Serial Port Variable FIFO select
.................................................................

Byte. Default 0. This specifies what to write to the FCR. The low 3
bits (07h) generally must be clear. The use of this variable occurs
only when connecting to serial I/O. The value at that point in time is
cached for as long as the serial connection is in use.


File: ldebug.info,  Node: Section 6.9,  Prev: Section 6.8.10,  Up: Section 6,  Next: Section 6.9.1

Section 6.9: _DEBUG1 variables
------------------------------

These variables are not supported by default. The build option _DEBUG1
must be enabled to include them. The Test Counter variables work
similarly to permanent breakpoint counters:

 -  If the counter AND-masked with 7FFFh is zero, it is at a terminal
    state.

 -  If the counter is not yet at a terminal state, it is decremented.

 -  If the counter is decremented to zero, it triggers.

 -  If the counter is decremented to 8000h or already at 8000h, it
    triggers.

The default values for all counters and addresses is zero.

* Menu:

* Section 6.9.1:: TRx - Test Readmem variables
* Section 6.9.2:: TWx - Test Writemem variables
* Section 6.9.3:: TLx - Test getLinear variables
* Section 6.9.4:: TSx - Test getSegmented variables

File: ldebug.info,  Node: Section 6.9.1,  Prev: Section 6.9,  Up: Section 6.9,  Next: Section 6.9.2

Section 6.9.1: TRx - Test Readmem variables
...........................................

If a fault is injected into readmem, it returns the value given in
TRV.

TRC - Test Readmem Counter

    Word. Each of the TRC0 to TRCF counters gives one counter for
    readmem fault injection testing.

TRA - Test Readmem Address

    Doubleword. Each of the TRA0 to TRAF counters gives one linear
    address for readmem fault injection testing.

TRV - Test Readmem Value

    Byte. Default 0. If a readmem fault is injected, this byte value
    is returned by the read instead of the actual memory content.


File: ldebug.info,  Node: Section 6.9.2,  Prev: Section 6.9.1,  Up: Section 6.9,  Next: Section 6.9.3

Section 6.9.2: TWx - Test Writemem variables
............................................

If a fault is injected into writemem, it returns failure (CY).

TWC - Test Writemem Counter

    Word. Each of the TWC0 to TWCF counters gives one counter for
    writemem fault injection testing.

TWA - Test Writemem Address

    Doubleword. Each of the TWA0 to TWAF counters gives one linear
    address for writemem fault injection testing.


File: ldebug.info,  Node: Section 6.9.3,  Prev: Section 6.9.2,  Up: Section 6.9,  Next: Section 6.9.4

Section 6.9.3: TLx - Test getLinear variables
.............................................

If a fault is injected into getlinear, it returns failure (CY).

TLC - Test getLinear Counter

    Word. Each of the TLC0 to TLCF counters gives one counter for
    getlinear fault injection testing.

TLA - Test getLinear Address

    Doubleword. Each of the TLA0 to TLAF counters gives one linear
    address for getlinear fault injection testing.


File: ldebug.info,  Node: Section 6.9.4,  Prev: Section 6.9.3,  Up: Section 6.9,  Next: Section 6.10

Section 6.9.4: TSx - Test getSegmented variables
................................................

If a fault is injected into getsegmented, it returns failure (CY).

TSC - Test getSegmented Counter

    Word. Each of the TSC0 to TSCF counters gives one counter for
    getsegmented fault injection testing.

TSA - Test getSegmented Address

    Doubleword. Each of the TSA0 to TSAF counters gives one linear
    address for getsegmented fault injection testing.


File: ldebug.info,  Node: Section 6.10,  Prev: Section 6.9.4,  Up: Section 6,  Next: Section 6.10.1

Section 6.10: _DEBUG3 variables
-------------------------------

These variables are not supported by default. The build option _DEBUG3
must be enabled to include them. These variables are used to test the
read-only masking. Read-only masking makes it so that bits given in
the mask are read-only. Bits that are clear in the mask are writable.

* Menu:

* Section 6.10.1:: MT0 - Mask Test 0
* Section 6.10.2:: MT1 - Mask Test 1

File: ldebug.info,  Node: Section 6.10.1,  Prev: Section 6.10,  Up: Section 6.10,  Next: Section 6.10.2

Section 6.10.1: MT0 - Mask Test 0
.................................

Doubleword. Default 0. Mask AA55_AA55h.


File: ldebug.info,  Node: Section 6.10.2,  Prev: Section 6.10.1,  Up: Section 6.10,  Next: Section 6.11

Section 6.10.2: MT1 - Mask Test 1
.................................

Doubleword. Default 0011_0022h. Mask 00FF_00FFh.


File: ldebug.info,  Node: Section 6.11,  Prev: Section 6.10.2,  Up: Section 6,  Next: Section 6.11.1

Section 6.11: Y command variables
---------------------------------

Y command variables can be used when the Y command (as application
or bootloaded) has been used to open a script file. YSx (Y Script)
variables are generic and refer to whatever Y file is opened. YBx
(Y Bootloaded script) variables refer to opened Y files while
bootloaded. YHx (Y Handle script) variables refer to opened Y files as
application.

* Menu:

* Section 6.11.1:: YSF - Y Script Flags

File: ldebug.info,  Node: Section 6.11.1,  Prev: Section 6.11,  Up: Section 6.11,  Next: Section 6.12

Section 6.11.1: YSF - Y Script Flags
....................................

Word. Partially read-write, partially read-only.

Flag 4000h controls whether script file input is displayed or not.
Prepending an AT sign (@) to a line that is read from a script file
will hide the input of that line. Setting YSF flag 4000h will hide all
input lines instead. The effect is similar to prepending @ to every
line.

YSF variables are only available while executing script files.


File: ldebug.info,  Node: Section 6.12,  Prev: Section 6.11.1,  Up: Section 6,  Next: Section 6.13

Section 6.12: V variables - Variables with user-defined purpose
---------------------------------------------------------------

Doubleword. Default zero. V0 to VF or V00 to VFF each specify one
variable. It is valid to refer to any V variable using an index
expression. Index expression means that the variable name (V) is
immediately followed by an opening parenthesis, followed by a numeric
expression which evaluates to a number below 100h.


File: ldebug.info,  Node: Section 6.13,  Prev: Section 6.12,  Up: Section 6,  Next: Section 6.13.1

Section 6.13: PSP variables
---------------------------

* Menu:

* Section 6.13.1:: PSP - Process Segment Prefix
* Section 6.13.2:: PPR - Process PaRent
* Section 6.13.3:: PPI - Process Parent Interrupt 22h

File: ldebug.info,  Node: Section 6.13.1,  Prev: Section 6.13,  Up: Section 6.13,  Next: Section 6.13.2

Section 6.13.1: PSP - Process Segment Prefix
............................................


File: ldebug.info,  Node: Section 6.13.2,  Prev: Section 6.13.1,  Up: Section 6.13,  Next: Section 6.13.3

Section 6.13.2: PPR - Process PaRent
....................................


File: ldebug.info,  Node: Section 6.13.3,  Prev: Section 6.13.2,  Up: Section 6.13,  Next: Section 6.14

Section 6.13.3: PPI - Process Parent Interrupt 22h
..................................................


File: ldebug.info,  Node: Section 6.14,  Prev: Section 6.13.3,  Up: Section 6,  Next: Section 6.14.1

Section 6.14: SR variables - Search Results
-------------------------------------------

* Menu:

* Section 6.14.1:: SRC - Search Result Count
* Section 6.14.2:: SRS - Search Result Segment
* Section 6.14.3:: SRO - Search Result Segment

File: ldebug.info,  Node: Section 6.14.1,  Prev: Section 6.14,  Up: Section 6.14,  Next: Section 6.14.2

Section 6.14.1: SRC - Search Result Count
.........................................

Doubleword. Read only. Amount of matches found by last S command.


File: ldebug.info,  Node: Section 6.14.2,  Prev: Section 6.14.1,  Up: Section 6.14,  Next: Section 6.14.3

Section 6.14.2: SRS - Search Result Segment
...........................................

Word. Read only. SRS0 to SRSF each specify one variable. Search result
segments of last S command's matches.


File: ldebug.info,  Node: Section 6.14.3,  Prev: Section 6.14.2,  Up: Section 6.14,  Next: Section 7

Section 6.14.3: SRO - Search Result Segment
...........................................

Word or doubleword (DebugX). Read only. SRO0 to SROF each specify one
variable. Search result offsets of last S command's matches. It is
valid to refer to any SRO variable using an index expression. Index
expression means that the variable name (SRO) is immediately followed
by an opening parenthesis, followed by a numeric expression which
evaluates to a number below 10h.


File: ldebug.info,  Node: Section 7,  Prev: Section 6.14.3,  Up: Top,  Next: Section 7.1

Section 7: Online help pages
============================

* Menu:

* Section 7.1:: ? - Main online help
* Section 7.2:: ?R - Registers
* Section 7.3:: ?F - Flags
* Section 7.4:: ?C - Conditionals
* Section 7.5:: ?E - Expressions
* Section 7.6:: ?V - Variables
* Section 7.7:: ?RE - R Extended
* Section 7.8:: ?RUN - Run keywords
* Section 7.9:: ?O - Options
* Section 7.10:: ?BOOT - Boot loading
* Section 7.11:: ?BUILD - lDebug build (only revisions)
* Section 7.12:: ?B - lDebug build (with options)
* Section 7.13:: ?X - EMS commands
* Section 7.14:: ?SOURCE - lDebug source reference
* Section 7.15:: ?L - lDebug license

File: ldebug.info,  Node: Section 7.1,  Prev: Section 7,  Up: Section 7,  Next: Section 7.2

Section 7.1: ? - Main online help
---------------------------------

  lDebug (2020-03-25) help screen
  assemble        A [address]
  set breakpoint  BP index|AT|NEW address
                    [[NUMBER=]number] [WHEN=cond] [ID=id]
   set ID         BI index|AT address [ID=]id
   set condition  BW index|AT address [WHEN=]cond
   set offset     BO index|AT address [OFFSET=]number
   set number     BN index|AT address|ALL number
   clear          BC index|AT address|ALL
   disable        BD index|AT address|ALL
   enable         BE index|AT address|ALL
   toggle         BT index|AT address|ALL
   list           BL [index|AT address|ALL]
  compare         C range address
  dump            D [range]
  dump bytes      DB [range]
  dump words      DW [range]
  dump dwords     DD [range]
  dump interrupts DI interrupt [count]
  dump MCB chain  DM [segment]
  display strings DZ/D$/D[W]# [address]
  enter           E address [list]
  fill            F range [RANGE range|list]
  go              G [=address] [breakpts]
  goto            GOTO :label
  hex add/sub     H value1 [value2 [...]]
  input           I[W|D] port
  if numeric      IF [NOT] (cond) THEN cmd
  if script file  IF [NOT] EXISTS Y file [:label] THEN cmd
  load program    L [address]
  load sectors    L address drive sector count
  move            M range address
  80x86/x87 mode  M [0..6|C|NC|C2|?]
  set name        N [[drive:][path]progname.ext [parameters]]
  output          O[W|D] port value
  proceed         P [=address] [count [WHILE cond] [SILENT [count]]]
  quit            Q
  register        R [register [value]]
  R extended      RE
  RE commands     RE.LIST|APPEND|REPLACE [commands]
  MMX register    RM
  FPU register    RN
  toggle 386 regs RX
  search          S range [REVERSE] [RANGE range|list]
  trace           T [=address] [count [WHILE cond] [SILENT [count]]]
  trace (exc str) TP [=address] [count [WHILE cond] [SILENT [count]]]
  trace mode      TM [0|1]
  enter TSR mode  TSR
  unassemble      U [range]
  write program   W [address]
  write sectors   W address drive sector count
  expanded mem    XA/XD/XM/XR/XS, X? for help
  run script      Y [partition/][scriptfile] [:label]
  
  Additional help topics:
   Registers      ?R
   Flags          ?F
   Conditionals   ?C
   Expressions    ?E
   Variables      ?V
   R Extended     ?RE
   Run keywords   ?RUN
   Options        ?O
   Boot loading   ?BOOT
   lDebug build   ?BUILD
   lDebug build   ?B
   lDebug sources ?SOURCE
   lDebug license ?L


File: ldebug.info,  Node: Section 7.2,  Prev: Section 7.1,  Up: Section 7,  Next: Section 7.3

Section 7.2: ?R - Registers
---------------------------

  Available 16-bit registers:             Available 32-bit registers: (386+)
  AX      Accumulator                     EAX
  BX      Base register                   EBX
  CX      Counter                         ECX
  DX      Data register                   EDX
  SP      Stack pointer                   ESP
  BP      Base pointer                    EBP
  SI      Source index                    ESI
  DI      Destination index               EDI
  DS      Data segment
  ES      Extra segment
  SS      Stack segment
  CS      Code segment
  FS      Extra segment 2 (386+)
  GS      Extra segment 3 (386+)
  IP      Instruction pointer             EIP
  FL      Flags                           EFL

Available 64-bit Matrix Math Extension (MMX) registers: (if supported)

  MMx     MM(x)   MMX register x, where x is 0 to 7

Enter ?F to display the recognized flags.


File: ldebug.info,  Node: Section 7.3,  Prev: Section 7.2,  Up: Section 7,  Next: Section 7.4

Section 7.3: ?F - Flags
-----------------------

Recognized flags:

  Value   Name                      Set                     Clear
  0800  OF  Overflow Flag         OV  Overflow            NV  No overflow
  0400  DF  Direction Flag        DN  Down                UP  Up
  0200  IF  Interrupt Flag        EI  Enable interrupts   DI  Disable interrupts
  0080  SF  Sign Flag             NG  Negative            PL  Plus
  0040  ZF  Zero Flag             ZR  Zero                NZ  Not zero
  0010  AF  Auxiliary Flag        AC  Auxiliary carry     NA  No auxiliary carry
  0004  PF  Parity Flag           PE  Parity even         PO  Parity odd
  0001  CF  Carry Flag            CY  Carry               NC  No carry

The short names of the flag states are displayed when dumping
registers and can be entered to modify the symbolic F register with R.
The short names of the flags can be modified by R.


File: ldebug.info,  Node: Section 7.4,  Prev: Section 7.3,  Up: Section 7,  Next: Section 7.5

Section 7.4: ?C - Conditionals
------------------------------

In the register dump displayed by the R, T, P and G commands,
conditional jumps are displayed with a notice that shows whether the
instruction will cause a jump depending on its condition and the
current register and flag contents. This notice shows either "jumping"
or "not jumping" as appropriate.

The conditional jumps use these conditions: (second column negates)

   jo             jno             OF
   jc jb jnae     jnc jnb jae     CF
   jz je          jnz jne         ZF
   jbe jna        jnbe ja         ZF||CF
   js             jns             SF
   jp jpe         jnp jpo         PF
   jl jnge        jnl jge         OF^^SF
   jle jng        jnle jg         OF^^SF || ZF
   j(e)cxz                        (e)cx==0
   loop                           (e)cx!=1
   loopz loope                    (e)cx!=1 && ZF
   loopnz loopne                  (e)cx!=1 && !ZF

Enter ?F to display a description of the flag names.


File: ldebug.info,  Node: Section 7.5,  Prev: Section 7.4,  Up: Section 7,  Next: Section 7.6

Section 7.5: ?E - Expressions
-----------------------------

Recognized operators in expressions:

  |       bitwise OR              ||      boolean OR
  ^       bitwise XOR             ^^      boolean XOR
  &       bitwise AND             &&      boolean AND
  >>      bit-shift right         >       test if above
  >>>     signed bit-shift right  <       test if below
  <<      bit-shift left          >=      test if above-or-equal
  ><      bit-mirror              <=      test if below-or-equal
  +       addition                ==      test if equal
  -       subtraction             !=      test if not equal
  *       multiplication          =>      same as >=
  /       division                =<      same as <=
  %       modulo (A-(A/B*B))      <>      same as !=
  **      power

Implicit operater precedence is handled in the listed order, with
increasing precedence: (Brackets specify explicit precedence of an
expression.)

   boolean operators OR, XOR, AND (each has a different precedence)
   comparison operators
   bitwise operators OR, XOR, AND (each has a different precedence)
   shift and bit-mirror operators
   addition and subtraction operators
   multiplication, division and modulo operators
   power operator

Recognized unary operators: (modifying the next number)

  +       positive (does nothing)
  -       negative
  ~       bitwise NOT
  !       boolean NOT
  ?       absolute value
  !!      convert to boolean

Note that the power operator does not affect unary operator handling.
For instance, "- 2 ** 2" is parsed as "(-2) ** 2" and evaluates to 4.

Although a negative unary and signed bit-shift right operator
are provided the expression evaluator is intrinsically unsigned.
Particularly the division, multiplication, modulo and all comparison
operators operate unsigned. Due to this, the expression "-1 < 0"
evaluates to zero.

Recognized terms in an expression:

   32-bit immediates
   8-bit registers
   16-bit registers including segment registers (except FS, GS)
   32-bit compound registers made of two 16-bit registers (eg DXAX)
   32-bit registers and FS, GS only if running on a 386+
   32-bit variables V00..VFF
   32-bit special variables DCO, DCS, DAO, DAS, DIF, DPI, PPI
   16-bit special variables DPR, DPP, PSP, PPR
    (fuller variable reference in the manual)
   byte/word/3byte/dword memory content (eg byte [seg:ofs], where both the
    optional segment as well as the offset are expressions too)

The expression evaluator case-insensitively checks for names of
variables and registers as well as size specifiers.

Enter ?R to display the recognized register names. Enter ?V to display
the recognized variables.


File: ldebug.info,  Node: Section 7.6,  Prev: Section 7.5,  Up: Section 7,  Next: Section 7.7

Section 7.6: ?V - Variables
---------------------------

Available lDebug variables:

 -  V0..VF User-specified usage

 -  DCO Debugger Common Options

 -  DAO Debugger Assembler/disassembler Options

The following variables cannot be written:

 -  PSP Debuggee Process

 -  PPR Debuggee's Parent Process

 -  PPI Debuggee's Parent Process Interrupt 22h

 -  DIF Debugger Internal Flags

 -  DCS Debugger Common Startup options

 -  DAS Debugger Assembler/disassembler Startup options

 -  DPR Debugger Process

 -  DPP Debugger's Parent Process (zero in TSR mode)

 -  DPI Debugger's Parent process Interrupt 22h (zero in TSR mode)

Enter ?O to display the options and internal flags.


File: ldebug.info,  Node: Section 7.7,  Prev: Section 7.6,  Up: Section 7,  Next: Section 7.8

Section 7.7: ?RE - R Extended
-----------------------------

The RUN commands (T, TP, P, G) and the RE command use the RE command
buffer to run commands. Most commands are allowed to be run from the
RE buffer. Disallowed commands include program-loading L, A, E that
switches the line input mode, TSR, Q, Y, RE, and further RUN commands.
When the RE buffer is used as input during T, TP, or P with either of
the WHILE or SILENT keywords, commands that use the auxbuff are also
disallowed and will emit an error noting the conflict.

RE.LIST shows the current RE buffer contents in a format usable by the
other RE commands. RE.APPEND appends the following commands to the
buffer, if they fit. RE.REPLACE appends to the start of the buffer.
When specifying commands, an unescaped semicolon is parsed as a
linebreak to break apart individual commands. Backslashes can be used
to escape semicolons and backslashes themselves.

Prefixing a line with an @ (AT sign) causes the command not to be
shown to the standard output of the debugger when run. Otherwise, the
command will be shown with a percent sign % or ~% prompt.

The default RE buffer content is @R. This content is also detected
and handled specifically; if found as the only command the handler
directly calls the register dump implementation without setting up and
tearing down the special execution environment used to run arbitrary
commands from the RE buffer.


File: ldebug.info,  Node: Section 7.8,  Prev: Section 7.7,  Up: Section 7,  Next: Section 7.9

Section 7.8: ?RUN - Run keywords
--------------------------------

T (trace), TP (trace except proceed past string operations), and P
(proceed) can be followed by a number of repetitions and then the
keyword WHILE, which must be followed by a conditional expression.

The selected run command is repeated as many times as specified by the
number, or until the WHILE condition evaluates no longer to true.

After the number of repetitions or (if present) after the WHILE
condition the keyword SILENT may follow. If that is the case, all
register dumps done during the run are buffered by the debugger and
the run remains silent. After the run, the last dumps are replayed
from the buffer and displayed. At most as many dumps as fit into the
buffer are displayed. (The buffer is currently up to 8 KiB sized.)

If a number follows behind the SILENT keyword, only at most that many
dumps are displayed from the buffer. The dumps that are displayed are
always those last written into the buffer, thus last occurred.


File: ldebug.info,  Node: Section 7.9,  Prev: Section 7.8,  Up: Section 7,  Next: Section 7.10

Section 7.9: ?O - Options
-------------------------

Available options: (read/write DCO, read DCS)

 -  0001 RX: 32-bit register display

 -  0002 TM: trace into interrupts

 -  0004 allow dumping of CP-dependant characters

 -  0008 always assume InDOS flag non-zero, to debug DOS or TSRs

 -  0010 disallow paged output to StdOut

 -  0020 allow paged output to non-StdOut

 -  0040 display raw hexadecimal content of FPU registers

 -  0100 when prompting during paging, do not use DOS for input

 -  0200 do not execute HLT instruction to idle

 -  0400 do not idle, the keyboard BIOS idles itself

 -  0800 use rawinput for int 21h interactive input

 -  1000 in disp_*_size use SI units (kB = 1000, etc). overrides 2000!

 -  2000 in disp_*_size use JEDEC units (KB = 1024)

 -  4000 enable serial I/O (port 02F8h interrupt 0Bh)

 -  8000 disable serial I/O when breaking after 5 seconds Ctrl pressed

 -  00010000 gg: do not skip a breakpoint (bb or gg)

 -  00020000 gg: do not auto-repeat

 -  00040000 T/TP/P: do not skip a (bb) breakpoint

 -  00080000 gg: do not auto-repeat after bb hit

 -  00100000 T/TP/P: do not auto-repeat after bb hit

 -  00200000 gg: do not auto-repeat after unexpectedinterrupt

 -  00400000 T/TP/P: do not auto-repeat after unexpectedinterrupt

 -  00800000 S: do not dump data after matches

 -  10000000 R: do not repeat disassembly

 -  20000000 R: do not show memory reference in disassembly

 -  40000000 quiet command line buffer input

 -  80000000 quiet command line buffer output

More options: (read/write DCO2, read DCS2)

 -  0001 DB: show header

 -  0002 DB: show trailer

 -  0010 DW: show header

 -  0020 DW: show trailer

 -  0100 DD: show header

 -  0200 DD: show trailer

 -  0800 use rawinput for int 21h interactive input in DPMI

 -  1000 H: stay compatible to MS-DOS Debug

 -  2000 idle and check for Ctrl-C in getc

 -  4000 idle and check for Ctrl-C in getc in DPMI

 -  8000 T/TP/P/G: cancel run after RE command buffer execution

More options: (read/write DCO3, read DCS3)

 -  0001 T: do not page output

 -  0002 TP: do not page output

 -  0004 P: do not page output

 -  0008 G: do not page output

 -  0100 T/TP/P: modify paging for silent dump

 -  0200 T/TP/P: if 0100 set: turn paging on, else off

Internal flags: (read DIF)

 -  000001 Int25/Int26 packet method available

 -  000002 Int21.7305 packet method available

 -  000004 VDD registered and usable

 -  000008 internal flag for paged output

 -  000010 DEBUG's input isn't StdIn

 -  000020 DEBUG's input is a file

 -  000040 DEBUG's output isn't StdOut

 -  000080 DEBUG's output is a file

 -  001000 state of debuggee's A20

 -  002000 state of debugger's A20 (not implemented: same as previous)

 -  004000 debugger booted independent of a DOS

 -  008000 CPU is at least a 386 (32-bit CPU)

 -  010000 internal flag for tab output processing

 -  020000 running inside NTVDM

 -  100000 internal flag for paged output

 -  400000 in TSR mode (detached debugger process)

 -  01000000 running inside dosemu

 -  04000000 T/TP/P: while condition specified

 -  08000000 TP: P specified (proceed past string ops)

 -  10000000 T/TP/P: silent mode (SILENT specified)

 -  20000000 T/TP/P: silent mode is active, writing to silent buffer

Available assembler/disassembler options: (read/write DAO, read DAS)

 -  01 Disassembler: lowercase output

 -  02 Disassembler: output blank behind comma

 -  04 Disassembler: output addresses in NASM syntax

 -  08 Disassembler: lowercase referenced memory location segreg

 -  10 Disassembler: always show SHORT keyword

 -  20 Disassembler: always show NEAR keyword

 -  40 Disassembler: always show FAR keyword


File: ldebug.info,  Node: Section 7.10,  Prev: Section 7.9,  Up: Section 7,  Next: Section 7.11

Section 7.10: ?BOOT - Boot loading
----------------------------------

Boot loading commands:

 -  BOOT LIST HDA [note: writes to memory @ 600h and 7C00h]

 -  BOOT READ|WRITE [partition] segment [[HIDDEN=sector] sector]
    [count]

 -  BOOT QUIT [exits dosemu or shuts down using APM]

 -  BOOT [PROTOCOL=SECTOR] partition

 -  BOOT PROTOCOL=proto [opt] [partition] [filename1] [filename2]
    [cmdline]

 -  the following partitions may be specified:

     -  HDAnum first hard disk, num = partition (1-4 primary, 5+
        logical)

     -  HDBnum second hard disk (etc), num = partition

     -  HDA first hard disk (only valid for
        READ|WRITE|PROTOCOL=SECTOR)

     -  FDA first floppy disk

     -  FDB second floppy disk (etc)

     -  LDP partition the debugger loaded from

     -  YDP partition the most recent Y command loaded from

     -  SDP last used partition (default if no partition specified)

     -  filename2 may be double-slash // for none

     -  cmdline is only valid for lDOS, RxDOS.2, RxDOS.3 protocols

     -  files' directory entries are loaded to 500h and 520h

Available protocols: (default filenames, load segment, then
entrypoint)

 -  LDOS LDOS.COM or L[D]DEBUG.COM at 200h, 0:400h

 -  FREEDOS KERNEL.SYS or METAKERN.SYS at 60h, 0:0

 -  DOSC IPL.SYS at 2000h, 0:0

 -  EDRDOS DRBIO.SYS at 70h, 0:0

 -  MSDOS6 IO.SYS + MSDOS.SYS at 70h, 0:0

 -  MSDOS7 IO.SYS at 70h, 0:200h

 -  IBMDOS IBMBIO.COM + IBMDOS.COM at 70h, 0:0

 -  NTLDR NTLDR at 2000h, 0:0

 -  BOOTMGR BOOTMGR at 2000h, 0:0

 -  RXDOS.0 RXDOSBIO.SYS + RXDOS.SYS at 70h, 0:0

 -  RXDOS.1 RXBIO.SYS + RXDOS.SYS at 70h, 0:0

 -  RXDOS.2 RXDOS.COM at 70h, 0:400h

 -  RXDOS.3 RXDOS.COM at 200h, 0:400h

 -  CHAIN BOOTSECT.DOS at 7C0h, -7C0h:7C00h

 -  SECTOR (default) load partition boot sector or MBR

 -  SECTORALT as SECTOR, but entry at 07C0h:0

Available options:

 -  MINPARA=num load at least that many paragraphs

 -  MAXPARA=num load at most that many paragraphs (0 = as many as fit)

 -  SEGMENT=num change segment at that the kernel loads

 -  ENTRY=[num:]num change entrypoint (CS (relative) : IP)

 -  BPB=[num:]num change BPB load address (segment -1 = auto-BPB)

 -  CHECKOFFSET=num set address of word to check, must be even

 -  CHECKVALUE=num set value of word to check (0 = no check)

Boolean options: [opt=bool]

 -  SET_DL_UNIT set dl to load unit

 -  SET_BL_UNIT set bl to load unit

 -  SET_SIDI_CLUSTER set si:di to first cluster

 -  SET_DSSI_DPT set ds:si to DPT address

 -  PUSH_DPT push DPT address and DPT entry address

 -  DATASTART_HIDDEN add hidden sectors to datastart var

 -  SET_AXBX_DATASTART set ax:bx to datastart var

 -  SET_DSBP_BPB set ds:bp to BPB address

 -  LBA_SET_TYPE set LBA partition type in BPB

 -  MESSAGE_TABLE provide message table pointed to at 1EEh

 -  SET_AXBX_ROOT_HIDDEN set ax:bx to root start with hidden sectors

 -  NO_BPB do not load BPB

 -  SET_DSSI_PARTINFO load part table to 600h, point ds:si + ds:bp to
    it


File: ldebug.info,  Node: Section 7.11,  Prev: Section 7.10,  Up: Section 7,  Next: Section 7.12

Section 7.11: ?BUILD - lDebug build (only revisions)
----------------------------------------------------

  lDebug (YYYY-MM-DD)
  Source Control Revision ID: hg xxxxxxxxxxxx
  Uses yyyyyyyy: Revision ID hg zzzzzzzzzzzz
  [etc]


File: ldebug.info,  Node: Section 7.12,  Prev: Section 7.11,  Up: Section 7,  Next: Section 7.13

Section 7.12: ?B - lDebug build (with options)
----------------------------------------------

  lDebug (YYYY-MM-DD)
  Source Control Revision ID: hg xxxxxxxxxxxx
  Uses yyyyyyyy: Revision ID hg zzzzzzzzzzzz
  [etc]
  
  DI command
  DM command
  D string commands
  S match dumps line of following data
  RN command
  Access SDA current PSP field
  Load NTVDM VDD for sector access
  X commands for EMS access
  RM command and reading MMX registers as variables
  Expression evaluator
   Indirection in expressions
  Variables with user-defined purpose
  Debugger option and status variables
  PSP variables
  Conditional jump notice in register dump
  TSR mode (Process detachment)
  Boot loader
  Permanent breakpoints
  Intercepted interrupts: 00, 01, 03, 06, 18, 19
  Extended built-in help pages


File: ldebug.info,  Node: Section 7.13,  Prev: Section 7.12,  Up: Section 7,  Next: Section 7.14

Section 7.13: ?X - EMS commands
-------------------------------

  Expanded memory (EMS) commands:
    Allocate      XA count
    Deallocate    XD handle
    Map memory    XM logical-page physical-page handle
    Reallocate    XR handle count
    Show status   XS


File: ldebug.info,  Node: Section 7.14,  Prev: Section 7.13,  Up: Section 7,  Next: Section 7.15

Section 7.14: ?SOURCE - lDebug source reference
-----------------------------------------------

The original lDebug releases can be obtained from the repo located at
https://hg.ulukai.org/ecm/ldebug (E. C. Masloch's repo)

The most recent manual is hosted at https://ulukai.org/ecm/doc/ in the
files ldebug.htm, ldebug.txt, and ldebug.pdf


File: ldebug.info,  Node: Section 7.15,  Prev: Section 7.14,  Up: Section 7,  Next: Section 8

Section 7.15: ?L - lDebug license
---------------------------------

lDebug - libre 86-DOS debugger

 -  Copyright (C) 1995-2003 Paul Vojta

 -  Copyright (C) 2008-2021 C. Masloch

Usage of the works is permitted provided that this instrument is
retained with the works, so that any entity that uses the works is
notified of this instrument.

DISCLAIMER: THE WORKS ARE WITHOUT WARRANTY.

All contributions by Paul Vojta or C. Masloch to the debugger are
available under a choice of three different licenses. These are the
Fair License, the Simplified 2-Clause BSD License, or the MIT License.

This is the license and copyright information that applies to lDebug;
but note that there have been substantial contributions to the code
base that are not copyrighted (public domain).


File: ldebug.info,  Node: Section 8,  Prev: Section 7.15,  Up: Top,  Next: Section 8.1

Section 8: Additional usage conditions
======================================

The program executables can be compressed with a choice of different
compressors. The files then contain a decompression stub. Some of
these stubs have their own usage conditions. The following stub usage
conditions apply, if one of these stubs is used.

* Menu:

* Section 8.1:: BriefLZ depacker usage conditions
* Section 8.2:: LZ4 depacker usage conditions
* Section 8.3:: Snappy depacker usage conditions
* Section 8.4:: Exomizer depacker usage conditions
* Section 8.5:: X compressor depacker usage conditions
* Section 8.6:: Heatshrink depacker usage conditions
* Section 8.7:: Lzd usage conditions
* Section 8.8:: LZO depacker usage conditions

File: ldebug.info,  Node: Section 8.1,  Prev: Section 8,  Up: Section 8,  Next: Section 8.2

Section 8.1: BriefLZ depacker usage conditions
----------------------------------------------

BriefLZ - small fast Lempel-Ziv

8086 Assembly lDOS iniload payload BriefLZ depacker

Based on: BriefLZ C safe depacker

Copyright (c) 2002-2016 Joergen Ibsen

This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.

Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:

 1. The origin of this software must not be misrepresented; you
    must not claim that you wrote the original software. If you use
    this software in a product, an acknowledgment in the product
    documentation would be appreciated but is not required.

 2. Altered source versions must be plainly marked as such, and must
    not be misrepresented as being the original software.

 3. This notice may not be removed or altered from any source
    distribution.


File: ldebug.info,  Node: Section 8.2,  Prev: Section 8.1,  Up: Section 8,  Next: Section 8.3

Section 8.2: LZ4 depacker usage conditions
------------------------------------------

8086 Assembly lDOS iniload payload LZ4 depacker

    by C. Masloch, 2018

Usage of the works is permitted provided that this instrument is
retained with the works, so that any entity that uses the works is
notified of this instrument.

DISCLAIMER: THE WORKS ARE WITHOUT WARRANTY.


File: ldebug.info,  Node: Section 8.3,  Prev: Section 8.2,  Up: Section 8,  Next: Section 8.4

Section 8.3: Snappy depacker usage conditions
---------------------------------------------

8086 Assembly lDOS iniload payload Snappy depacker

    by C. Masloch, 2018

Usage of the works is permitted provided that this instrument is
retained with the works, so that any entity that uses the works is
notified of this instrument.

DISCLAIMER: THE WORKS ARE WITHOUT WARRANTY.


File: ldebug.info,  Node: Section 8.4,  Prev: Section 8.3,  Up: Section 8,  Next: Section 8.5

Section 8.4: Exomizer depacker usage conditions
-----------------------------------------------

8086 Assembly lDOS iniload payload exomizer raw depacker

    by C. Masloch, 2020

Copyright (c) 2005-2017 Magnus Lind.

This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.

Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:

 1. The origin of this software must not be misrepresented * you
    must not claim that you wrote the original software. If you use
    this software in a product, an acknowledgment in the product
    documentation would be appreciated but is not required.

 2. Altered source versions must be plainly marked as such, and must
    not be misrepresented as being the original software.

 3. This notice may not be removed or altered from any distribution.

 4. The names of this software and/or it's copyright holders may not
    be used to endorse or promote products derived from this software
    without specific prior written permission.


File: ldebug.info,  Node: Section 8.5,  Prev: Section 8.4,  Up: Section 8,  Next: Section 8.6

Section 8.5: X compressor depacker usage conditions
---------------------------------------------------

MIT License

Copyright (c) 2020 David Barina

Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:

The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


File: ldebug.info,  Node: Section 8.6,  Prev: Section 8.5,  Up: Section 8,  Next: Section 8.7

Section 8.6: Heatshrink depacker usage conditions
-------------------------------------------------

8086 Assembly lDOS iniload payload heatshrink depacker

    by C. Masloch, 2020

Usage of the works is permitted provided that this instrument is
retained with the works, so that any entity that uses the works is
notified of this instrument.

DISCLAIMER: THE WORKS ARE WITHOUT WARRANTY.


File: ldebug.info,  Node: Section 8.7,  Prev: Section 8.6,  Up: Section 8,  Next: Section 8.8

Section 8.7: Lzd usage conditions
---------------------------------

Lzd - Educational decompressor for the lzip format

    Copyright (C) 2013-2019 Antonio Diaz Diaz.

This program is free software. Redistribution and use in source and
binary forms, with or without modification, are permitted provided
that the following conditions are met:

 1. Redistributions of source code must retain the above copyright
    notice, this list of conditions and the following disclaimer.

 2. Redistributions in binary form must reproduce the above copyright
    notice, this list of conditions and the following disclaimer
    in the documentation and/or other materials provided with the
    distribution.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


File: ldebug.info,  Node: Section 8.8,  Prev: Section 8.7,  Up: Section 8,  Next: Source Control Revision ID

Section 8.8: LZO depacker usage conditions
------------------------------------------

8086 Assembly lDOS iniload payload LZO depacker

    by C. Masloch, 2020

Usage of the works is permitted provided that this instrument is
retained with the works, so that any entity that uses the works is
notified of this instrument.

DISCLAIMER: THE WORKS ARE WITHOUT WARRANTY.


File: ldebug.info,  Node: Source Control Revision ID,  Prev: Section 8.8,  Up: Top

Source Control Revision ID
==========================

hg 5f34bad78830, from commit on at 2021-02-15 12:26:03 +0100

If this is in ecm's repository, you can find it at
https://hg.ulukai.org/ecm/ldebug/rev/5f34bad78830

