blog:pushbx:2026:0210_early_february_work_on_warplink
Table of Contents
Early February work on WarpLink
2026-02-08
This week I worked on WarpLink some and a bit on the lDOS kernel. The lDOS changes are to make use of a new feature, the WLCALC post-link calculation.
WarpLink
- Fix a bug where files without fixups would fail to initialise data_fixup_count. This is described in some detail in a prior blog post.
- Fix: Display symbol properly for the COMM_OVRFLW_ERR. This required patching the linker to force this error to occur. It doesn't seem like NASM is able to generate object files that would legitimately cause this error.
- Initial commit of WLCALC labels. Only DIV, SHR, ADD, SUBR, and SUB operations supported. Only a decimal constant up to 65535 supported.
- Add switches: /XE (support WLEMITALIGN sections), /XC (support WLCALC), and /XA (equivalent to using both /XE and /XC). Without these switches specified, the extensions are disabled now.
- Update ecm release to r7.
- New wlcalc_parse_number, based on the number parsing in patchini/patldos and the lDOS kernel. This allows to enter 32-bit constants in decimal, hexadecimal, or binary.
- Add a non-emitting copy of the handle_wlcalc lframe so that the wlcalc_do_* functions can access the same stack frame.
- Store a dword constant number into the stack frame in handle_wlcalc
- Correct the indirect call in handle_wlcalc to read
call near. - Add a protocol comment to the wlcalc_do_* functions, and add bx as INP and as CHG.
- Fix wlcalc_parse_number to use base 16 for H suffix.
- Support full 32-bit wlcalc calculations. (Except for shift counts, which are limited to 16 bits.)
- Fix, strip trailing underscores in wlcalc_parse_number (wouldn't allow base suffixes if they were followed by underscores).
- Support wlcalc REPEAT keyword to repeatedly apply an operation.
- Implement wlcalc passes to enforce an order of operations that may differ from the order that the wlcalc symbols appear in the object files.
- Increase ecm release to r8.
- Fix the sense of the 16-bit overflow checks for shift counts.
- Fix to allow writing a .COM file after the addition of partial write checks. This is an older bug that wasn't noticeable prior to the 2025-09-20 changeset due to the less exact check then. Described in more detail in the changeset message.
- Fix a latent bug in the calculation of the length of the header padding (between relocation table and the image). As described in the comments, the conditions for this bug were and are never met.
- Increase ecm release to r9.
- Fix tbuff display length after the prior change.
- Fix to detect a CY (returned by int 21h function 40h) after writing a relocation entry. This is actually an older bug, even the check prior to 2025-09-20 used an
orinstruction that would unconditionally NC so thejncwould always be taken.
lDOS kernel
- Enable WarpLink r9 /XE option to build share.exe
- Add wlcalc mmacro to nasm.mac
- Enable WarpLink r9 /XC option to build kernel.
- Replace some run time calculations in the kernel by using wlcalc. This change preserves all offsets in the kernel image, allowing to check the changes using bdiff.
- Drop the code no longer needed after prior commit. This is the change that doesn't preserve offsets.
- Replace msinit.nas dosentry_init_ParaRound by using wlcalc instead.
You could leave a comment if you were logged in.
blog/pushbx/2026/0210_early_february_work_on_warplink.txt · Last modified: by ecm
