Fdpp Versions Save

FreeDOS plus-plus, 64bit DOS

1.7

7 months ago

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

2 years ago

Resurrected built-in COUNTRY support. You can now do: COUNTRY=07,866 without specifying the path to country.sys. dosemu2 is using that feature now, so the new release is due.

1.5

2 years ago

Maintenance release. Regression fixes, build changes etc.

  • Initial PSP things moved to UMB.
  • Fixed regressions with win31 install and others.
  • Fixes to SWITCHES= and DOS= parsing.
  • Split to normal and dev/devel packages.

1.4

2 years ago

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

3 years ago

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

3 years ago

Stabilization release. Fixed many regressions and done lots more work on file region locking. We hope the share/locking support is now complete. Also worked around the QEMM's mft bug, so it should work again.

1.1

3 years ago

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

3 years ago

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

3 years ago

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

rc-2

4 years ago

Development is calming down. We were busy with chasing the memory corruption bug and also added a few cool new features below.

  • Add share/locking support
  • Add new config.sys directive INT0DIVZ. Setting it to OFF (it is ON by default) allows to avoid the "divizion-by-zero on fast CPU" problem in some games (Zool2). Note: it won't cure the famous "Runtime error 200" problem, even if it is very similar. You need a separate fix for that.
  • Fix memory corruption in INSTALL= processing
  • Propagate the initial CDS setup. No longer needed to redirect drives twice.
  • Build improvements, add "make uninstall" target and more.
  • Enable and use C++ RTTI - the last of the C++ features I wanted to never enable, but couldn't keep it that way. This essentially means that the desire of keeping fdpp within some "light-weight C++ subset" have completely failed.