Table of Contents
Mid December up to early January
2025-01-12
inicomp
Upload an older patch to add a -B switch to the testfile program. This causes it to run an int3 breakpoint right before calling depack.
webecm
Add news item for lDebug release 9.
ldosboot
Optimise iniload some. This includes one noteworthy instance of abusing call to push the offset of something on the stack and branch elsewhere. Trying to Proceed past this call (using lDebug's P command) will fail.
In testboot, change the IVT dump so that rather than the 4-hexit offset it shows the 2-hexit (1) interrupt number (2) at the start of each line. I also reported on this on the SvarDOS EDR-DOS tracker, at issue #102.
drload now clears some variables in the LSV (Load Stack Variables) and LD (Load Data) to aid the next stage in re-using FAT buffers. These changes are so that the next stage can reliably detect that drload does not pass any buffered FAT sectors.
In iniload, copy the BPB and boot sector using byte move rather than word move. Hardens against crossing possible end of segment boundary.
Two updates to the manual: Note that MS-DOS v6 gets passed the media ID in ch. And list what can be assumed about FAT sector buffers from ldFATType and LSV.
lmacros
Fix a typo in a comment on _fill_at_least mmacro.
lDebug
- Support "PM required" as optional marker for Extension for lDebug data links. As for code links this requires no space in the executable if no such data link occurs in a given ELD.
- Add PM exception handler patch area for tsc Extension for lDebug.
- In pmentry.asm patch area insure code runs with dword-aligned stack.
- Fix the PM required data links. Branch to .datanotfound rather than .codenotfound, and do not modify ELDLINKER define for build_option_PM data link.
- Include hexdword function and its code link for _PM=0 builds.
- In tsc.eld use the new patch area, if present. Skip it if not present by patching the table.
- In tsc.eld comment on lasttsc variable array being dword-aligned. This is needed to avoid AC faults if running in PM.
- Update attribution year in eldcall.mac, elddata.mac, and eldlink.asm
- ldmem.eld: Display patch area information.
- ldmem.eld: Also display offsets of patch areas.
- test.py:
- In test_double_ctrlc run for longer to lessen timing dependency
- Add a parameter to do_read called noaddsleep, to help some timing dependent tests (test_bb_gg running with a sleep command in RE buffer, test_double_ctrlc)
- Replace boot directory listing check for executable by a check for extlib.eld
- In makinst.sh do not force on the _LBA_SKIP_CHECK option, so that FAT32+FSIBOOT will use the proper check
- init.asm:
- Add application switch /TV to keep environment in its own memory block
- Include mem_envsize variable if _APP_ENV_SIZE even if _DEV_ENV_SIZE=0
- Comment on envseg possibly being zero in init_app_layout_1
- Bugfix to set mem_envsize even if /TV switch given
- dosspace Extension for lDebug:
- Initial commit. Only calls 21.36
- Add support for 21.7303, with some 48-bit and 64-bit arithmetic. Readable sizes do still cap out at < 256 TiB however (the function in the debugger does not allow input > 48 bits and I did not want to duplicate it).
- Add EXPANDED keyword to be specified before the drive specification, so that some additional fields are hidden by default. This allows a full non-expanded report to fit within 24 rows.
Like dpb.eld before it, dosspace.eld's drive specification allows to enter either nothing (default drive is used then), or a drive letter with a trailing colon, or a byte number. The number is interpreted as 0 = default drive, 1 = A:, etc. (That's unlike the drive parameters for L and W commands which use 0 = A:.)
Enhanced DR-DOS
- Fix a bug in which func36 would interpret temporary DPB filled from 2F.110C call as FAT32, leading to it using uninitialised values for amounts total and free clusters. Bug report indicated that an shsucdx-redirected drive would sometimes display non-zero free space on a DIR command.
- My first patch initialised the entire DPB and also the dosfat variable.
- In the second patch, I changed func36 in disk.nas to use DDSC_NFATRECS consistently and ignore dosfat.
- In the third patch I dropped the redir.nas setting of dosfat.
- In the fourth patch I dropped the odd check for media ID 8Fh that was commented as being for CD-ROM drives.
- An unrelated bug in 21.7303 turned up. It didn't preserve the buffer size and the check was the wrong way around.
- In func36 I also patched it so that if the SpC is adjusted up (so that it is reported as up to 32 KiB per cluster) then the amount total clusters is also adjusted rather than being set from the original, un-adjusted value. Tracked at SvarDOS EDR-DOS repo issue #129.
- Two SvarDOS picks:
- Prevent calculation of CHS values when reading boot sector of an LBA-enabled file system
- Undo incorrect change from the micro-optimisations that affected CF when it should preserve it. Commented on this needing to preserve CF, as well.
lMS-DOS
- Relocate DPT (not done by boot sector loader, iniload, or drkernpl)
- Add some org directives to msbdata.nas
- Fix FAKE_COUNT variable being allocated 255 bytes rather than 1 byte initialised to 255
- Skip LFN entries instead of treating them as volume labels. This means doslfn can be used with its USEOLDDOS define disabled.
- sysinit1.nas: Set name of system MCB to SD for INSTALL=
- Include msdos objects in msbio.tls trace listing file
- Do not build msdos.sys or msdos.tls any longer
- Move DOSINIT function to SYSINITSEG
- Create sysconf PSP at final spot immediately, by passing its segment to NEARDOSINIT
- Get rid of INITSTACK in NEARDOSINIT, stay on sysconf stack
- Set initial process's parent field to itself
- msbio/msdisk.nas: Only modify SpC in CHECKSINGLESIDED if it was 2 and OEM ends in "2.x" or "3.0" or "3.1"
- msbio/msdisk.nas: Inline MOVBPB and enable odd diskette, eg with 1 FAT only
- msbio/msinit.nas: Enable odd hard disk FS, eg with 1 FAT only (suggested on retrocomputing stackexchange)
- Allocate DPBs in an S MCB rather than trailing at the end of the DOS data segment
- Split off INITDPB function from NEARDOSINIT
- msbio: Pass flags to SET_CHANGED_DL in bx rather than in a memory variable (optimisation)
- msbio/msinit.nas: Check for changeline support in a separate loop, earlier, before initialising UPBs
- Prepare for UPB segment != cs != BIOCODE
- Allocate UPBs using DOS, needing to initialise DOS before initialising the UPBs. This gets rid of the hardcoded initial UPBs in favour of just two "templates". It also runs INITUPB in the sysinit segment. And it avoids allocating the changeline support code and UPBs for the third and fourth diskette drive if these are not used.
- Bugfix, avoid allocating more memory for IRQ stacks. The code assumes that the IRQ stacks part is the first bit of the SYSINITSEG. Add a group with new init being stored in SYSINITTRAIL to avoid the bug.
- msdos/msinit.nas: Call DOS using int 21h function 53h rather than using the DOS code by transfer.
- Drop End_Of_BDSM (no longer used with new UPB allocation code)
- sysinit1.nas: Fix two bugs with Fake_Floppy_Drv variable (details in changeset message)
- Set a process name for INIT process (observed during INSTALL= time)
