User Tools

Site Tools


blog:pushbx:2025:0217_lots_of_work_in_early_mid_february

Lots of work in early mid February

2025-02-16

inicomp

Eric Auer asked about the Snappy depacker of inicomp, so I adapted it for the test file mode of inicomp. In this mode, testfile.asm is assembled to create a depacker application. However, it loads the entire packed file into memory and depacks it using the inicomp depacker protocol. So the available amount of memory (largest block allocatable by 21.48) must be large enough to hold the combined buffer.

lDOS boot

Optimise the iniload relocator. If multiple chunks need to be relocated, then all but the last one must be full 64 KiB chunks. After relocating a full 64 KiB, the offset registers SI and DI are zero again so we needn't re-initialise them. Test cases for loading lCDebugX from lDebug included in the changeset message. This optimisation saves 4 bytes in the ever-important initial loader (the 1536 bytes at the start of the file that must at least be loaded for MS-DOS v6 and lDOS load protocols).

tractest convlist.pl

  • In the detailed sections display, support long module names even if a section doesn't have a group name. This helps with lDOS's new makefile that assembles everything from the repo root, so the module name and file name will both be longer.
  • Support segment name aliases. This was useful during the intermediate revisions of lDOS in which DOSENTRY became an alias to BIOCODE, prior to actually splitting these two sections.

lDebug

Fix: Open .ELD and .SLD files (EXT command and Y command) as well as CO.ELD copy output files with the no-inherit flag in the debugger, to avoid leaking file handles to the debuggee on 21.4B or 21.55.

callver

lDOS

As of Friday, the MS-DOS v4.01 based lMS-DOS is rebranded as lDOS. It now returns 26h as its OEM ID (21.3000) and v5.26 as the version number (both 21.30 and 21.3306). The default kernel filename is now ldos.com, with a compressed drload-kernel as ldospak.sys. The iniload signature now reads "lDOS" rather than "lDMS". There is a startup message added after the DOSDATA segment is initialised (before filling UPBs and DPBs) which reads "Starting small lDOS (Month) based on MS-DOS v4.01" (re-using the 21.33FF version string).

Detailed list of changes:

It turns out that dosemu2 correctly passes the error level of an -E command back to the host script that called dosemu. This is very convenient for our new makefile.

It seems that MS-DOS v5 chose to address what we call DOSENTRY (segment 70h) using DS throughout. This required changing things so the current UPB is addressed using ES:DI rather than DS:DI. Obviously this choice is valid but I think ours is just as good.

Both lDOS TSRs (RxANSI, lClock, example, KEEPHOOK, SEEKEXT, IDLEDPMS) and FreeDOS devload will create self-owned MCBs that do not contain a valid PSP. Avoid possibly corrupting memory on encountering them. The lDOS applications will behave this way for /J0 which is still the default. /J1 to /J4 will avoid the misleading MCB contents, at the cost of some memory and possibly legibility in memory listers.

I also added a section on the lDOS kernel to the webbed page.

You could leave a comment if you were logged in.
blog/pushbx/2025/0217_lots_of_work_in_early_mid_february.txt · Last modified: 2025-02-17 19:06:23 +0100 Feb Mon by ecm