User Tools

Site Tools


blog:pushbx:2023:0924_plans_for_extensions_for_ldebug

Plans for Extensions for lDebug

2023-09-15

(I wrote this up on Friday before the 2023-09-17 Sunday that I didn't have time to prepare a blog post. More on the ELD interface in the subsequent post prepared today (2023-09-24).)

  • 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
You could leave a comment if you were logged in.
blog/pushbx/2023/0924_plans_for_extensions_for_ldebug.txt · Last modified: 2023-09-24 18:11:58 +0200 Sep Sun by ecm