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.
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
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.
The first release candidate. The code base is believed to be very stable at that point, and hence not many development is going on here.
- Rework Alpha Waves and Alone in the Dark hacks to be more in line with what MS-DOS does (these progs resize PSP to 0 and then terminate it... among other bad things)
- Boot protocol extension to allow skipping the particular letters when assigning drives
- Stop reporting MSDOS-7.1 version to the programs, as FreeDOS did. Programs from that MSDOS distribution will now print "Incorrect DOS version"
- Fix nasty bug to allow Volkov Commander to work
Desperate stabilization efforts. :) Apart from overall stability, we also added support for many games that do not work on FreeDOS. Namely: TestDrive2, Tetris Classic, Elite Frontier, Empire Soccer, Virtual Chess, Alone in the dark, Alpha Waves and more. Around 70 commits with usual thanks to Andrew Bird.
- Implement int21/0x71a6 by the use of dosemu2's int2f/0x11a6 extension
- Port to FreeBSD, thanks to @PaddyMac for ssh
- Proper port of the fcb subsystem, with help and testing by @andrewbird
- Many fixes and extensions to compiler front-end
- Many improvements to freedos kernel for supporting games
Massive stabilization efforts. Many bugs and regressions were fixed. Debug infrastructure improved.
- Fixed many bugs in handling of block devices
- LFN regression fix
- Export map file for debuggers
- Integration with valgrind's memcheck. Uncovered some bugs
- Extensions to boot protocol to get rid of dosemu2-specific calls
- Various crasher bugs fixed (with thanks to @andrewbird)
This marks the end of the short but very intensive development cycle with lots of changes to freedos. Over 50 commits in 3 weeks. Lots of regressions were introduced and are hopfully all now fixed, so the release tagging is a due.
- Lots of work on fdkernel to use far pointers for data access. [fdkernel] This allows to relocate the fdpp memory pool to UMB. Unfortunately freedos can't yet re-use the freed space.
- Fixes to relocation code for more source-level compatibility [fdpp] with freedos.
- Fixed long-standing bug that caused the excessive size of the [fdkernel] realmode kernel image. Now realmode part shrunk by 4k (from 15 to 11k). Certainly that sets a record for the world-smallest realmode part of any available DOS.
- Thunk templates are no longer hand-written. They are now [fdpp] generated by the use of m4sugar aka autoconf. We are likely the first project to use autoconf not to generate configure but rather for meta-programming.
- Set of bug fixes, both reported and found during code review. Code review is mostly over, so we are well set towards the stable releases hopefully (after a few more betas).
This beta release got a huge amount of work in all directions. We are steadily heading towards a stable release.
- Completed the work of passing interrupt handling to prev handler [fdkernel] This improves the integration with dosemu2 which hooks some int vectors before booting DOS.
- Extension to load fdppconf.sys from any drive [boot]
- Extension to config.sys parser to prefix file names with "AT" symbol. [fdkernel] For example DEVICE=@c:\umb.sys. It checks the file existence before use.
- Improve CHAIN= support [fdkernel]
- Implement SWITCHES=/Y for single-stepping [fdkernel]
- Extension to pass strings via bootparams [boot]
- Extension to refer with #num to the bootparam strings [fdkernel] For example you can write SWITCHES=#0 to use string 0 from boot params.
- Increase default value of FILES from 16 to 64. [fdkernel] Needed for progs like GEOS.
- Made int21 handler reentrant [fdkernel] This appears needed as we now pass unhandled int21 calls to prev handler, which, in turn, can call another int21 (that's the life of emulators like dosemu2).
- Lots of work on memory management and object tracking [fdpp]
- Resurrect and port INSTALL= directive to fdpp [fdkernel]
- Completely rework thunks dispatching code to get rid of longjumps [fdpp]
- Fix initial environment corruption bug [fdkernel]
- Last bits of UMB saga [fdkernel]
- A lot of work on object tracking [fdpp run-time]
- Extensions to allow passing env vars and boot drives to config.sys [boot]
- Fix problems with drive formatting [fdkernel]
- Add shared headers to most int vectors [fdkernel]
- New config.sys name: fdppconf.sys (fdconfig.sys supported for compatibility)
- Ported int2f/08 handling to fdpp framework
- Started work to pass int vectors back to the prev handler [fdkernel]
- Extend compiler front-end to allow compiling the original freedos sources with much fewer manual instrumentation [compile-time templates]
- Reviewed all diffs in fdkernel, compared with the original and reverted all changes that are no longer needed. Now our freedos code is much closer to the original than it ever was, and our front-end can parse it all properly.
- Lots of fixes
All of the bug fixes, including regression fixes and freedos fixes.
- UMB handling in freedos got many fixes. As the result, we can now set a record of 332K of UMB space (with UMB at A0, among others). This is impossible on the original freedos, at the time of writing this.
- Crash with some versions of ld linker was fixed
- Added reboot support. This was the most difficult and intrusive change of this beta, even if sounds simple. :)
- Many fixes to both freedos and fdpp.
A very important milestone as we finally switched to ELF format!
- Switched to ELF tool-chain. The binary-supplied jwlib/jwlink are removed from the repo. Not everything is done an optimal way yet, the build is very complex and slow. We expect the enhancements of nasm in the future.
- Global clean-up of the repository, all FreeDOS remnants removed. We now have small and clean repository.
- Long-standing FreeDOS bug fixed that prevented UMB at A0
- Started supporting reboot (not finished yet)
- many fixes (GEOS now works reliably, smaller memory usage)
We have around 60 commits since previous beta, and @andrewbird joined the development. :)
- 32bit support resurrected (thanks Andrew for testing)
- better dosemu2 integration (boot sector extension to pass command.com drive)
- DPMI apps are now working reliably, windows-3.1 works
- valgrind and ubsan fixes (ubsan found some real bugs!)
- lots of work on memory management, object tracking and thunk dispatching (but not yet complete)
- drop all hops of C++-less run-time: libstdc++ is now and forever a mandatory
- FCB subsystem ported, with additional fixes from Andrew
- many bugfixes