2023-07-09
The desktop Linux box is back in action after re-installing Debian on a new HDD. In the last two weeks some work happened on multiple repos.
Last Sunday I prepared an example program demonstrating how to implement segment relocations without an external linker, using only NASM's -f bin
output format. I did this instead of writing a blog post.
The first change was to mark the environment in devload's (relocated) PSP as zero, to indicate it was freed. This helps lDebug to find the environment of devload's parent process rather than trying to access what used to be devload's. (In my tests usually the device driver being loaded ended up where the stale environment segment pointed to, but this is by no means certain.)
While at it I also worked some more on devload. The conundrum of supporting large memory blocks and passing the full size to the device driver init is not yet solved. (I prepared a patch for this in 2022 but I consider it unfinished.)
However, I did make some changes:
$
in the pathname./F
switch to disable header checks
While looking at some regexps in TracList it occurred that a question mark was missing in one. This meant that entering hexadecimal numbers as 0xABCD
without a trailing H
may not have worked. https://hg.pushbx.org/ecm/tractest/rev/21db7f62ab6e
While linking to refer to an example in the instruction reference, it was noted that the example sections did not contain keywords to reference them. This has been fixed.
During development of the heatshrink depacker for online help pages of the debugger, it was found that the resetdef
check for the correct context would emit an %error
. However, a subsequent use of an undefined variable in an %if
emitted an error that hid the output of the %error
directive. Therefore the directive was changed to %fatal
.
The big one!
Many of these changes were suggested by a user on the FreeDOS sourceforge.net issue tracker.
_DNUM
build option functional to disable DW and DD commandsgetinput
accept Ctrl-A for Home (Pos1) and Ctrl-E for End%LDEBUGCONFIG%
variable or executable's directory. (This needed two of the devload changes, to find the environment and the executable directory.) (This also needed a FreeDOS kernel change to make FDCONFIG.SYS variables available to device drivers.)/F+
switch applies to loading .HEX files as well.END
keyword may be used in range parameters to prefix the end offset. This is needed in case the end offset starts with a variable or symbol name starting with a letter L
.int 10h
and the cursor is not at the leftmost columnimsg.boothelp_replacement
is not longer than msg.boothelp
.)line_in
.