Should work in bootloaded mode, device driver mode, application mode (or fail gracefully)
Should work with a process attached or not (or fail gracefully)
Protected Mode
Link to exposed interfaces and variables
Linker should be included in ELD file. For non-oneshot extensions, linker can be discarded after init.
Link data in entry segment (or a separate segment)
SS is always debugger segment except if extension changes it (many functions assume it is)
DS is expected to equal debugger segment for some functions
puts: es:dx → message, cx = length, ds = ss ⇒ entry data
putsz: ds:dx → message, ss ⇒ entry data
store extension sections in entry segment? or separate (with code and data selectors?)
heap for extensions?
relocate extension-internal offsets? if segments/selectors allocated to every extension not needed
allow to relocate non-oneshot extensions?
extension needs to be able to receive a command line tail as text
putc, putsz, puts, hexbyte, hexword, getexpression, getdword, getword, getbyte, getaddr(x), getrange(x), getstr, isstring?, isvariable?, chkeol, iseol?, skipwhite/0, skipcomma/0
extension should be able to intercept and modify commands
extension should be able to run other commands (provide line_in
from extension, higher priority than RE buffer), similar to RE buffer exec (lower stack), allow goto?
extension should be able to intercept output (puts)
allow to guard and unguard auxbuff
allow to use while buffer
how to detect 386, PM, mode? patches done by ELD embedded linker?
use case: other help pages
I/O should be done purely to debugger terminal (getc, peekc, getline, puts)
file I/O ? use DOS or bootloaded access (read-only)?
write extensions in C? eg amitsrs. intercept int 21h?
printf etc: implement embedded in ELD? one resident extension/library useable by other extensions? if so, store additional link data in resident extension?
hooks for eg qq, qqlate, cmd4, cmd3, rr, uu, aa?
SLD can embed an ELD? ELD in other files? (the SLD embedding an ELD must not be the only delivery method in order to pass command line tail to ELD as text)
add new command verbs and install nouns?
how to relocate data in nasm source? manual? (use 8000h as base to insure moffs16/disp16 encoding)
how to relocate code?
how much space to allocate for heap? do image size + min alloc for ELD