User Tools

Site Tools


blog:pushbx:2025:0526_mid_late_may_rambling

Mid late May rambling

2025-05-18

No work done this week (again).

2025-05-25

No work done this week either. Have an overview of all the work done on lDOS / lMS-DOS.

lDOS progress

2025-05-18

  • 256 sectors per cluster: lDOS boot sectors, lDOS iniload, lDOS kernel. Missing from SYS and FORMAT (and FDISK?). (FastSeek / FastOpen also missing?)
  • LBA support: lDOS kernel bio r/w. Missing from bio format interface(?), FORMAT, FDISK.
  • LFN awareness: lDOS kernel bio and dos will not misdetect LFNs as volume labels.
  • HMA and UMA use: lDOS kernel will make use of the HMA and UMA (multiple UMA providers supported). DOSCODE can be relocated to HMA, UMA, or LMA. DOSDATA can be relocated to UMA or LMA.
  • Kernel bio and dos integration: Unlike MS-DOS v5 the bio and dos modules are linked together, and some use is made of this integration. There is a single DOSCODE group that includes most code of both bio and dos, and DOSDATA likewise. Each group is addressed using a single segment. For the DOSCODE in HMA, segment 0FFFEh is used as the Code Segment.
  • DOSENTRY shrinkage: The part of DOSENTRY that is hardcoded to live at linear address 00600h is smaller than 1.5 KiB usually (if not including the PC AT hdd read ROM-BIOS fix). If the HMA and UMA are fully utilised (eg in dosemu2) then below 3 KiB of the LMA are in use.
  • A20 is enabled on all dos and bio entrypoints if the kernel uses the HMA (ie, DOSCODE is relocated into the HMA).
  • Compatibility options allow bouncing HMA or UMA+HMA sector accesses through the DOSENTRY LMA buffer. Some heuristic is used to detect the need for this automatically, by default.
  • COMPAT=ALTAH for using byte at 70h:61Bh as CON lookahead buffer. Default is a different, less compatible address.
  • COMPAT=DOSDATAFIRST to act more like less sophisticated kernels, placing the DOSDATA segment first (into the LMA) before processing any DEVICE= or INSTALL= directives.
  • COMPAT=DOSDATAEARLY to place DOSDATA into the UMA as soon as sufficient UMA space is provided to the DOS. This means that the final DOSDATA relocation is done before processing subsequent DEVICE= and INSTALL= directives.
  • COMPAT=HIDEDOSENTRY to hide the DOSENTRY MCB at 00600h, using the next MCB as the first MCB. Improves compatiblity with software expecting the device headers and interrupt entrypoints live before the first MCB.
  • COMPAT=HIDEDOSDATAFIRST, in conjunction with DOSDATAFIRST to hide the DOSDATA MCB. Improves compatibility with software expecting DOSDATA lives before the first MCB.
  • DOSENTRY is now addressed with segment 60h, except for:
    • Many entrypoints are addressed with segment 26h.
    • Device headers of the bio are addressed with segment 70h, for compatibility.
  • All builds of the kernel are now single-file kernels, eliminating a host of problems with dual-file kernels. (SYS tool and FORMAT /S support are unmodified but should not be used to set up a bootable drive any longer. Instead, use INSTSECT and copy ldos.com and command.com manually.)
  • Hard disk partitions are logged in in this order:
    • Up to one primary partition per unit, as many units as specified in DL by int 13.08.dl=80
    • Up to one extended partition per unit, with none or one logical partition per EPBR.
    • Extended partitions of type 5 and 0Fh are supported.
    • FAT FS partitions of type 1, 4, 6, or 0Eh are supported.
  • FAT12 or FAT16 partitions are supported (no change from lMS-DOS basis).
  • lDOS iniload query patch site allows modifying lDOS initial loader operation. Not yet used by the kernel.
  • lCFG block allows configuring inicomp progress display and kernel's debugger detection.
  • lDOS kernel command line can be passed by prior loader:
    • PREPEND= and APPEND= for adding to the configuration file.
    • CONFIG=, ALTCONFIG=, OLDCONFIG= for changing the configuration file name used.
  • New configuration file directives:
    • DEVICEHIGH, INSTALLHIGH
    • INSTALLLAST, INSTALLLASTHIGH
    • SHELLHIGH
    • COMPAT
  • Default configuration files are searched in the order "ldos.ini" then "config.sys"
  • Add debugger detection to avoid installing int 1 and int 3 handlers.
  • Set SD name for system MCB holding sub-MCB memory blocks.
  • Only reject "MSDOS3.0", "IBM 3.0", or "OS2 3.0" BPBs.
  • Do not display an error after INSTALL= directive process returns with a different return type than TSR return.
  • UPBs store the unit absolute offsets of partitions in their hidden sectors, without storing a cylinder offset (allowing logical partitions not on cylinder boundaries).
  • Only the LBA numbers are used to access partitions, even in CHS access mode. That means the CHS values on disk need not match those used to access the unit.
  • Work around the Xi8088 ROM-BIOS bug upon detecting LBA support.
  • Add FreeDOS style function 21.33FF to return a version string.
  • Kernel, sharer, and format all build with GNU make, NASM, WarpLink, x2b2, bash, dosemu2 (plus compression tool).
  • Kernel may be compressed using lDOS inicomp kernel stage.

2025-05-25

(Some points repeated from the above.)

2025-05-18

What doesn't work yet:

  • FAT32
  • LFN support in shell or kernel
  • FAT+
  • Formatting may not work, especially if the file system is not CHS-addressable.
  • FDISK and FORMAT are not updated to work with LBA or >64 sectors per cluster yet.
You could leave a comment if you were logged in.
blog/pushbx/2025/0526_mid_late_may_rambling.txt · Last modified: 2025-05-26 18:18:38 +0200 May Mon by ecm