Table of Contents

Early September work

2024-09-08

The prior week nothing changed and that Sunday I didn't get to write a blog post regardless. This week some changes did happen.

inicomp

The last two changes were actually added in a single changeset. They extend the inicomp to packed payload protocols as follows:

The suggested protocol is as follows:

kernwrap

Add an option to generate and pass an lCFG block to the kernel. This uses the changes to inicomp and drkernpl. Like suggested for inicomp, this changes the _EXEC_OFFSET define in inicomp to 1 to signal to the drkernpl that it is being loaded from inicomp.

lDOS boot

Add options to drkernpl to pass lCFG block, copy an inicomp lCFG block, and to include an lCFG block within the drkernpl stage. The latter is only to be used if the kernel is not compressed with inicomp.

If the option to copy the inicomp transfer lCFG block is enabled, then inicomp entry is detected by being entered with ip equal to 1 instead of 0.

Similarly to the inicomp to drkernpl protocol, the drkernpl to drbio protocol is changed so that cx:di points to the lCFG block. For drkernpl its lCFG block always lives between 00600h and 00700h, which is conveniently always available. There is, however, no way for drbio to detect that an lCFG block is passed. It must be built to assume whether this is true or not.

patchini

Adds the patchdeb tool. This operates on Enhanced DR-DOS's "check debugger" byte in the lCFG block (at offset 20). The first revision copied the patchpro source text without changes. The second revision implemented patchdeb first, recognising only the flags 1 (check) and 2 (assume). Unlike the FreeDOS kernel, the EDR-DOS implementation treats these as flags, so 0 = do not check and assume no, 1 = check and assume no, 2 = do not check and assume yes, and 3 = check and assume yes.

The third revision added support for recognising the flags 4 (check only if vector is valid) and 8 (check only if vector points to an IBM Interrupt Sharing Protocol header). Of note is that patchdeb also allows setting or clearing flags in the configuration byte that it doesn't recognise, so a current patchdeb could be used to operate on future yet to be defined flags.

lDebug

x2b2

Do not call the Has_SS error/warning function twice if the /S switch is passed and both the SS and SP in the .exe header are nonzero. This switch is used for the amdpd build.

ident86

tractest convlist.pl

The TASM support was needed to create a complete trace listing file from the TASM listings of the amdpd driver, so that ident86 could be utilised to its fullest potential.

Enhanced DR-DOS

Two picks from the SvarDOS repo:

fixmem

These changes were driven by the amdpd porting effort.

amdpd

This is an AMD PCnet packet driver sourced from crynwr.com. It is free software under the GNU GPL v1-only. It supports the pcnet device of qemu.

I ported the entire driver to build with NASM, WarpLink, x2b2, and convlist.pl. During this work I also lightly optimised some segment uses in the original TASM source texts by adding some assume directives, to simplify the porting.

I used fixmem.pl and ident86 in large parts to do the porting, albeit I did do some replacements manually rather than adding handling for everything to fixmem.

I tested the final build with the ethflop client and server both running on FreeDOS in qemu.

ethflop

I made some suggestions to the ethernet diskette emulator, in the SvarDOS forum thread announcing it. I may work on it my self later as well.

wwwecm.scr

Added the amdpd build to update-dl-wwwecm.