Releases: dosemu2/fdpp
1.8
This release contains ~160 commits, and is mostly targeted to resolving
the long-standing technical debts.
- ELF format is now fully utilized. We now use ELF-based symbol tables
and relocations, including dynamic relocations (which we simulate
with --emit-relocs). This completes the ELF relocation work started at
1.3 and 1.4 releases. Unfortunately, this brought in the new toolchain
restrictions:- we no longer support upstream nasm (can only use our own nasm-segelf
fork of the nasm for now) - do no longer support ld.lld (can only use GNU ld for now)
- no longer support GNU strip (can only use llvm-strip for now,
but the fix is already in GNU binutils-2.42)
So the ELF support went in very painfully. We will keep working with
the upstream projects (lld mainly) in a hope to restore their use.
Nasm project have rejected our contributions, so the vanilla nasm
support is not anticipated any soon.
- we no longer support upstream nasm (can only use our own nasm-segelf
- Meson build system support. But not removing the old makefiles yet,
as we need meson-1.3.2, which is not yet widely available. - thunk_gen and farptr compiler updates. thunk_gen is now a separate project.
- Finally fixed remaining AlphaWaves problems. This game tests for the
MS-DOS compatibility in a very rough ways. - Share was changed to resemble MS-DOS-7 more closely.
- Fixed a few regressions of 1.7 (Prehistorik2 again)
- Switched from C++11 to C++20 for templated lambdas.
1.7
A very important release, containing ~200 patches.
- Portability work: ported to aarch64, including MacOS, Android.
- Implemented HMA memory manager, and lots of work done on a more
aggressive HMA usage. Unfortunately dosemu2 disabled HMA support
by default in a mean time. - Lots of SHARE fixes.
- Fixed nasty RTC bug (prehistoric2 had problems because of it)
- Fixed stack switching on int21 calls (vlm now works)
- Fixed stack switching on int24
- Added a config.sys syntax for referencing drives created at run-time:
CHAIN=%0\userhook.sys can be used if the host platform supplies the
meaning of %0 (other digits are possible) at the right time. - Added a config.sys syntax for conditional loading:
device=?0c:\bin\nansi.sys can be used if the host platform supplies
the value of ?0 (other digits are possible) via boot protocol. - Fix to support multiple CHAIN directives
- "Get extended free drive space" function can now use redirector
extensions to properly report space on much larger partitions. - Fixes to volume labels support.
- Added handlers for GP and SS exceptions.
- clang-16 support
- Lots of bug fixes.
1.6
1.5
1.4
Most of work went into making the kernel fully relocatable.
This required writing the new heap manager and updating the boot protocol.
- It is now possible to run fdpp directly from UMB, leaving entire
low mem free for your programs. - Lots of build infrastructure work was done for buildroot integration.
- LBA support resurrected and enabled by default.
1.3
In this release we switched to ELF format. The binary kernel format
was dropped.
Implemented run-time relinking to fix the regressions from switching
to Tiny model that happened in 1.1. Unfortunately many programs expect
the DOS internal areas (like LoL and SDA) at the fixed locations
relative to DOS DS, rather than to query the addresses of the needed
structures. So fully compatible DOS cannot use Tiny model. We found
the way to (partially) convert FreeDOS from Tiny to Compact model at
run-time.
Also the first attempt is done to make the kernel fully relocatable.
So far that was achieved with a horrible hack. In the future that may
be amended, but who cares - the horrible hack just works. :)
Other than that, quite a few developments happened:
- long file seek extension from @ecm-pushbx
- rmdir fix from @andrewbird
- increase amount of file locks from 20 to 1024 in share
- revert mft work-around introduced in 1.2, as our run-time relinking
solves that regression in a much better way. - fix reading of large (>512 bytes) config.sys files
- compatibility fixes (Indy3 now works)
1.2
1.1
Major development efforts again. Look out for new bugs...
- Switched to TINY model. This required a large redesign, and
allowed to simplify the build process and reduce the build
dependencies. - Switched to lld linked from bfd ld.
- Lot of work on share. Region locking and share modes are now
supported properly. Also share no longer allocates the precious
DOS memory. - Increment early-boot FILES (open file descriptors) from 8
(actually 5) to 16. Previously all 5 descriptors could be
exhausted when you use CHAIN, so it was not possible to, say,
load country.sys from chained config. 3 extra descriptors
were added too late for country.sys. - Proper port of the country.sys loader.
- Fix SET command.
1.0
This is a first stable release of fdpp.
Not much to say here, because it "just works" - exactly the way
the (first) stable release should. The minimal set of features that
we needed from the first release, is also implemented.
Note that the main driving force behind this project, is dosemu2.
Which means that we only implement the features needed for dosemu2,
and currently they are all in place. So unless the scope of this
project is widened (like the use with other host kernels), no new
developments are planned, and the project will remain in a bugfixing
mode.
rc-3
This is hopefully the last RC before 1.0 release.
Added COPR build support, the packages are here:
https://copr.fedorainfracloud.org/coprs/stsp/dosemu2/package/fdpp/
Below is the summary of few new additions:
- Confined (most of) freedos DOS memory writes. This is needed
for the integration with some JIT engines, like the one in dosemu2.
That JIT engine needs to be notified about the DOS memory writes. - Support FILES= up to 256 (freedos only supports 128, then crashes)
- Fix "set volume serial number" fn for drive images/local drives
- Add support for COPR build system