Table of Contents
Late mid March work on lDebug &c
2026-03-22
WarpLink
Emit a THEADR (Translator Header Record) to the wllist object file, to conform to the specs and not use a stale filename in the Module column of the .map file segpart list. Reference to the OMF guide is in the changeset message.
tractest
- convlist.pl and traclist.pl: Drop useless $replacebool variable from expandtabs function.
- convlist.pl: Skip Symbol Table suffix of TASM listing file.
LZEXE
Update dosemu2 command to not write a logfile. Reference: https://github.com/dosemu2/dosemu2/discussions/2800
inicomp
All changes concern the test program, which tests, counts, and benchmarks the decompression.
- Allow to append the uncompressed payload for comparison, at the end of the executable file.
- Add option to reload compressed payload from XMS memory for repeated decompression.
- Add option to reload compressed payload from the executable file too. (If both compressed and uncompressed payload are appended, the uncompressed one comes first.)
- Allow both XMS and file reload, preferring XMS if available. This is useful because the qemu test currently doesn't load an XMM so XMS isn't available to it.
With both the compressed and uncompressed payloads stored elsewhere, even lDDebugX LZSA2 can run the "double compressed" test.
lmacros
I listed two parts of lmacros, numdef and lframe, as examples in a stackoverflow answer about operating on smacros whose names are given as mmacro parameters.
Due to this listing, I found a bug in the lframe variable macros. This is fixed by wrapping the prior variable content in curly braces.
lDebug
- Create the makefile .tls file with listing files in link order.
- Add a script to run the heatshrink packer, handling the loops and file selection to find the best parameters.
- Use heatshrink script to compress help pages.
- Use heatshrink script to compress inicomp payload.
- Add external help targets to makefile.
- Pass along variables for LZEXEDAT and HEATSHRINK help compression commands to use.
- Pass optional help compression switches in option files.
- Add DEPACKOPTIONS variable for assembler commands.
- Store DEPACKOPTIONS variable to a file.
- Add NASM -I include path for the .txt directory (external help, lives in a tmp subdirectory).
- Move size check loop for external help under the conditional for maximum size.
- Add optionde (stored depack options file) prerequisite to init.obj and lineio.obj
- Store makefile-generated .big, .map, and .tls files with an "l" suffix (for "linker").
- Add variable to mak.sh to use makefile for building the .big image.
- Pass the BUILDNAME and BUILDOPTIONS variables to make invocation that builds help pages.
- Add label and extern directives to enable assembling the debugger with compressed external help from the makefile.
- Use the uncompressed bootdisc help page for _LINK_COMPAT build too, to identicalise. (The page is actually so small that it grows from trying to compress it.)
- Pass the NASM, CONVLIST, LZEXEDAT, and HEATSHRINK variables from make's environment to the makefile. Export NASM, DOSEMU, and HEATSHRINK in mak.sh
- Do not use the makefile itself as a prerequisite to linking the .big file.
- Add help files as a prerequisite to building msg.obj, and pass all variables to all make invocations. This fixes a problem observed where the .big make call would incorrectly recreate the help files. I listed this revision in a stackoverflow self-answer.
- Pass revision IDs to makefile build of msg.obj, passing them as variables to a small revision assembly language file that stringifies the variables and generates a macro file. The msg.asm source text file includes this macro file.
- Update ?L help page attribution year to 2026 (from 2024!).
- Enable the lzexedat help packer's -l option by default. (Nothing to do with the makefile, just an oversight.)
- Add switches /UR (revision) and /UL (license). These re-use the data stack segment, message segment, and code segment already set up at the time of command line parsing, to depack the license help page.
- Enable building with _MESSAGESEGMENT=0, as stated in the changeset message this also requires a smaller ELD data area to avoid overflowing 64 KiB for the data entry stack segment.
- Allow to pass VERSIONOPTIONS and LINKOPTIONS from make's environment.
- Identicalise init.asm for _MESSAGESEGMENT=0 builds, by forcing /Y= (data area) maximum size number to 5 digits even if it is < 10000 Bytes.
- In manual section buildingcomponents list GNU make and convlist.pl
- In manual update news-r11 and add WarpLink as a component for building.
- Add many required prerequisites to the makefile.
- Move option file updates out of the makefile. This allows running make without the options and it will use the last cached options. Done on the suggestion from a stackoverflow user.
- Don't update the optionlz.dat or optionhs.dat files if not building with this external compressed help type.
- Cache the external help target in a file, to avoid having to specify it to every make invocation.
- Cache build name variable in a file. This allows to run mak.sh with use_build_make=1 once, then run just
maketo rebuild the most recently built .big image. - Fix a double dot in the .bi2 filename.
- In makefile use the "debug" build name by default rather than "ddebugx".
- Enable _LINK_COMPAT by default.
- Use the new inicomp revision with the uncompressed payload appended rather than in the image.
- Rename amis.mac to all-uncaps.
- Add the use_build_make=0 line to cfg.sh
- Allow using XMS for decompression test program compressed payload.
- Allow using file for decompression test program compressed payload.
- Add use_build_decomp_test_file variable to the variables setup, forgotten in prior changeset.
- Allow test program to use either XMS or file to reload compressed payload, if both options are enabled.
- Add new test program options to cfg.sh, both =1 by default.
- Merge link branch into default branch.
- Update manual list of NASM versions.
- Point old NASM bugzilla links to mirrored pages on the pushbx.org server.
- fptostr.asm: Fix assembling with new NASM revision (755593…), 2-operand
fmulpnot supported in this revision of the assembler. - Initial commit of eld/makefile
- Add many dependencies to eld/makefile
- Add use_build_eld_make variable to eld/mak.sh to use make instead.
- Add the optional maximumwindowsize parameter to heatshrink script.
- In eld/makone.sh use the heatshrink script to pack extpak's library image. Best combination is -w 12 -l 5, same as what we hardcoded prior to this.
- In heatshrink script delete the temporary files at the end of the run.
- Note that the eld/cfg.sh heatshrink parameters are no longer used.
- Rename packlib files to packlibe (ELD) and packlibx (XLD). This change is so that building packlibe and packlibx using the heatshrink script won't use the same directory, which isn't much of a problem but neater this way.
Duplicate builds
It turns out that by updating the link branch and not the default branch, the update dl wwwecm script detected that there were incoming changesets to the ldebug, lddebug, and lcdebug repos. However, it didn't update to these revisions, instead repeatedly building the latest default branch revision.
I deleted the tmp subdirectories and the compressed debugger executables from these builds, then packed them into the 202603-duplicate-ldebug.tlz file (6.6 MiB). After that I deleted the builds from 2026-03-10 to 2026-03-19 inclusive. (2026-03-08 is exactly equivalent except for version/date numbers and some revision ID changes, such as inicomp.)
