This shows you the differences between two versions of the page.
— |
blog:pushbx:2023:0924_plans_for_extensions_for_ldebug [2023-09-24 18:11:58 +0200 Sep Sun] (current) ecm created |
||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== 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/ | ||
+ | * 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, | ||
+ | * extension should be able to intercept and modify commands | ||
+ | * extension should be able to run other commands (provide '' | ||
+ | * 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/ | ||
+ | * 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/ | ||
+ | * how to relocate code? | ||
+ | * how much space to allocate for heap? do image size + min alloc for ELD | ||
+ | |||
+ | {{tag> | ||
+ | |||
+ | |||
+ | ~~DISCUSSION~~ | ||