|
|
|
|
— |
blog:pushbx:2026:0628_mid_to_late_june_work [2026-06-28 17:43:12 +0200 Jun Sun] (current) ecm created |
| | ====== Mid to late June work ====== |
| | |
| | **2026-06-28** |
| | |
| | |
| | ===== webecm ===== |
| | |
| | * Add section [[https://hg.pushbx.org/ecm/webecm/rev/65eb047935b9|on the bugtracker]], a link in links, and list it in the news |
| | * [[https://hg.pushbx.org/ecm/webecm/rev/396c88f62075|Update news item and hgweb link]], on [[blog:pushbx:2026:0616_update_on_the_anti-scraping_measures_for_our_hgweb|use of the Anubis Web AI Firewall Utility]] for the hgweb service |
| | |
| | |
| | ===== lDOS patchini ===== |
| | |
| | * [[https://hg.pushbx.org/ecm/patchini/rev/ef476669596d|Add halt flag 16]] to mean do not halt on an expected device mismatch (DEVCRASHDOS, [[https://hg.pushbx.org/ecm/msdos4/rev/093ed90cb5a9|added on 2026-05-25]]) |
| | |
| | |
| | ===== Buggy (bug ticket format tool) ===== |
| | |
| | * [[https://hg.pushbx.org/ecm/buggy/rev/9a60db2f4f82|Add license hyperlinks to all footers]], tracked in [[https://pushbx.org/ecm/bug/1005/|ticket #1005]] |
| | * [[https://hg.pushbx.org/ecm/buggy/rev/21a6df7e6416|Add ticket source hyperlink to the ticket footer]]. The descriptive text and the directory address part for the hyperlink are to be provided on the command line of the buggy tool. Tracked in [[https://pushbx.org/ecm/bug/1006/|ticket #1006]] |
| | |
| | |
| | ===== Instruction reference ===== |
| | |
| | * [[https://hg.pushbx.org/ecm/insref/rev/cb5660497770|Note that a mov with CR, DR, or TR is always to be decoded as if Mod=3]], as tracked by [[https://pushbx.org/ecm/bug/106/|ticket #106]] |
| | |
| | |
| | ===== DEVLOAD ===== |
| | |
| | * [[https://hg.pushbx.org/ecm/devload/rev/f4e597d2e1d5|Optimise writing 0FFFFh to a word]] to terminate the DPB chain. |
| | * Add [[https://hg.pushbx.org/ecm/devload/rev/50489784fa1b|a workaround]] so that DPBs aren't installed into the chain with an offset of all-zeroes. MS-DOS v4 and v5 expect DPB offsets != 0000h, as tracked in [[https://pushbx.org/ecm/bug/1007/|ticket #1007]] |
| | |
| | |
| | ===== ACEGALS ===== |
| | |
| | * [[https://hg.pushbx.org/ecm/acegals/rev/a7525e70f230|Add description and example]] of pushing into ''lvar'' stack slots to initialise them, and how to format these push instructions. |
| | * [[https://hg.pushbx.org/ecm/acegals/rev/a6f7bd236c50|Mention that lmacros3.mac _opt mmacro uses do make flags be NC]] |
| | * Add section [[https://hg.pushbx.org/ecm/acegals/rev/54db4ef61172|on NASM terms and concepts]] |
| | * [[https://hg.pushbx.org/ecm/acegals/rev/18c558d74ab6|Update]] NASM section |
| | |
| | |
| | ===== lDOS kernel ===== |
| | |
| | * [[https://hg.pushbx.org/ecm/msdos4/rev/f0b027b651ed|Replace a few AND instruction operands with NO_ equates]], to use ''~'' instead. Scriptlet used: |
| | |
| | <code>ldos/src/DOS$ perl -i -pe ' |
| | if (/^\s*(test|or|and)\s+word\b[^,]+,\s*([^;]+)/i) { |
| | my $op = $1; |
| | my $imm = $2; |
| | $imm =~ s/^\s+|\s+$//g; |
| | if ($imm !~ /^e?[abcd][xhl]$|^e?[ds]i$|^e?[sb]p$|^-/i) { |
| | if ($op !~ /and/i or $imm !~ /^(?:[-]\s*)?[0-9A-Fa-fHh]+$/) { |
| | if ($op =~ /and/i and $imm =~ /^no_/i) { |
| | s/^([^,]+,\s*?)\s?no_(.*)/$1 ~ $2/i; |
| | } |
| | } |
| | } |
| | }' *.nas</code> |
| | |
| | * [[https://hg.pushbx.org/ecm/msdos4/rev/acf267f56f13|Use the lmacros3.mac macros]] for ''testopt'', ''setopt'', and ''clropt'' for memory word accesses (''test'', ''or'', ''and''), allowing to optimise these accesses to byte accesses. Saves 144 bytes of the msbio.bin kernel payload image. Scriptlets used: |
| | |
| | <code>ldos$ perl -i -pe ' |
| | if (/^\s*(test|or|and)\s+word\b[^,]+,\s*([^;]+)/i) { |
| | my $op = $1; |
| | my $imm = $2; |
| | $imm =~ s/^\s+|\s+$//g; |
| | if ($imm !~ /^e?[abcd][xhl]$|^e?[ds]i$|^e?[sb]p$|^-/i) { |
| | if ($op !~ /and/i or $imm !~ /^(?:[-]\s*)?[0-9A-Fa-fHh]+$/) { |
| | if ($op =~ /and/i and $imm =~ /^~/i) { |
| | s/^(\s*)and\s+word(?:\s+ptr)?\s*([^,]+,\s*?)\s?~(.*)/$1clropt $2$3/i; |
| | } elsif ($op =~ /or/i) { |
| | s/^(\s*)or\s+word(?:\s+ptr)?\s*/$1setopt /i; |
| | } elsif ($op =~ /test/i) { |
| | s/^(\s*)test\s+word(?:\s+ptr)?\s*/$1testopt /i; |
| | } |
| | } |
| | } |
| | }' src/DOS/*.nas src/BIOS/*.nas |
| | ldos$ hg stat -mn0 | |
| | xargs -r0 grep -L lmacros3.mac | |
| | xargs -r perl -i -e ' |
| | while (<<>>) { |
| | if ($done) { print; next; }; |
| | if (/^\s*\[list -\]/) { $nolist = 1; }; |
| | if (/^\s*\[list \+\]/) { $nolist = 0; }; |
| | if (/%include/) { |
| | /([\r\n]+)$/; |
| | $linebreak = $1; |
| | if (not defined $linebreak or $linebreak eq "") { |
| | $linebreak = "\n"; |
| | } |
| | print "\t%include \"lmacros3.mac\"$linebreak"; |
| | if ($nolist) { |
| | print "[list -]$linebreak"; |
| | } |
| | print; |
| | $done = 1; |
| | next; |
| | }; |
| | print; |
| | } continue { |
| | if (eof) { |
| | $done = 0; |
| | $nolist = 0; |
| | } |
| | }'</code> |
| | |
| | * [[https://hg.pushbx.org/ecm/msdos4/rev/8391abae9824|Drop an unneeded %include directive]] created by prior changeset's scriptlets |
| | * [[https://hg.pushbx.org/ecm/msdos4/rev/3c501c539cf9|Note that clropt makes flags NC]] for use in SYS_RET_OK, and drop a pronoun in a comment |
| | * [[https://hg.pushbx.org/ecm/msdos4/rev/333785fe3ea8|Add a cld instruction to the kernel entrypoint]], needed for the device entries. This fixes the bug tracked in [[https://pushbx.org/ecm/bug/1008/|ticket #1008]] |
| | * After prior changeset, [[https://hg.pushbx.org/ecm/msdos4/rev/7304825075ba|drop a cld instruction]] in the entry error handler that's now redundant |
| | * [[https://hg.pushbx.org/ecm/msdos4/rev/cb2792a8fed5|Reset AX in the halt loop of the entry error handler]], otherwise the AX return of int 16h function 00h could be used for the subsequent halt call. However, this only happened if a debugger changed the flags in order to "return" from the halt call (which is of no use here). |
| | * [[https://hg.pushbx.org/ecm/msdos4/rev/a50dc8929640|Check the CDS DPB pointer's segment rather than offset]] for being nonzero. Bug tracked in [[https://pushbx.org/ecm/bug/1007/|ticket #1007]] |
| | * [[https://hg.pushbx.org/ecm/msdos4/rev/3a7fa9de4150|Update lDOS version to 2026 June]] |
| | |
| | |
| | ===== Bugtracker (non-ticket changes only) ===== |
| | |
| | * [[https://hg.pushbx.org/ecm/bugtracker/rev/e3fe22320afd|Fix the sense of the single-parameter check in comment.sh]] (tracked in [[https://pushbx.org/ecm/bug/1002/|ticket #1002]]) |
| | * [[https://hg.pushbx.org/ecm/bugtracker/rev/75659cfa8dc8|Copy license files from repo root to out subdirectory]], tracked in [[https://pushbx.org/ecm/bug/1005/|ticket #1005]] |
| | * [[https://hg.pushbx.org/ecm/bugtracker/rev/9314a4e5d169|Pass hg revision parameters to buggy]] (description and revision URL) |
| | * [[https://hg.pushbx.org/ecm/bugtracker/rev/573e51281bd7|Change hg URL to point to the file page rather than the rev page]] after the prior changeset |
| | * [[https://hg.pushbx.org/ecm/bugtracker/rev/f3436fdb7402|An empty changeset, with the scriptlet to renew tickets with the appropriate ticket source hyperlinks]]. Described in [[https://pushbx.org/ecm/bug/1006/|ticket #1006]]. Scriptlet reads: |
| | |
| | <code>hg up a2450e016a1f |
| | hg up "$(hg id -r . --template '{children|short}\n')" && |
| | buggy "hg $(hg id --template '{node|short}\n' -r .)" \ |
| | "https://hg.pushbx.org/ecm/bugtracker/file/$(hg id --template '{node|short}\n' -r .)/"</code> |
| | |
| | |
| | ===== lDOS boot ===== |
| | |
| | * [[https://hg.pushbx.org/ecm/ldosboot/rev/60aa3cd06969|Reset single-sector flag of initial loader unconditionally]], and add a build time define to drop this reset entirely. Prior to this the flag would be passed as set to the payload if it was set by the query patch site but no disk access was needed to complete the payload. Tracked in [[https://pushbx.org/ecm/bug/1003/|ticket #1003]] |
| | * [[https://hg.pushbx.org/ecm/ldosboot/rev/cd59a044016e|Add instsect-compatible disable options]] to the boot sector loaders. These are to disable forcing the diskette units to CHS access for auto-HDD LBA detection (''_LBA_HDD_ONLY_DISABLED'') and to completely disable LBA access (''_FORCE_CHS''). [[https://hg.pushbx.org/ecm/instsect/file/17a79f48fff1/lbasuch.asm#l136|instsect reference]], and tracked in [[https://pushbx.org/ecm/bug/1004/|ticket #1004]] |
| | * [[https://hg.pushbx.org/ecm/ldosboot/rev/ec3b22c9552d|Optimise to discard LBA packet using the size field]], in the LBA sector read done pathes of the boot sector loaders. Same optimisation [[https://hg.pushbx.org/ecm/ldosboot/rev/ceb2413e61b8|already had been done to the initial loader]] on 2025-10-12 |
| | |
| | |
| | ==== Remaining new bugs (not mentioned elsewhere) ===== |
| | |
| | * [[https://pushbx.org/ecm/bug/1001/|Ticket #1001]]: Turned out that int 21h functions 5F07h and 5F08h are already supported by lDOS kernel. Points to [[https://github.com/LoopZ/TheList/pull/117|the interrupt list patch]] to correct these entries as indicating MS-DOS v4 rather than v5 |
| | |
| | {{tag>webecm patchini buggy insref devload acegals ldos msdos4 bugtracker ldosboot}} |
| | |
| | |
| | ~~DISCUSSION~~ |
| |