I've been thinking about the development of DOSBox-X and it's emulation. As much development as I am doing, I'm genuinely concerned that as I work on the code I might be breaking fragile PCjr and Tandy hardware emulation or other bits of emulation I have no hardware to test. DOSBox/DOSBox-X has a lot of general code with special cases. I'm concerned that while the special cases make DOS games happy, it doesn't actually emulate the hardware well. DOSBox-X intends to make retro-development possible, but that's hard to do if the emulation is misleading.
I think one way to deal with this concern, would be to take DOSBox-X and branch it off into versions that specialize in one particular hardware configuration (many of them, in fact!). Each version would remove code not related to that platform and maintain the code only around it's hardware, system calls, and BIOS. There would be one for Tandy, one for PCjr, one for original IBM 5150 hardware, one for specific 386 systems, etc. There would also be branches that focus on Sound Blaster, VGA chipsets, EGA, etc. The main DOSBox-X branch would continue development as the branch that merges the specialized branch changes back into general code that covers all the bases. The idea is that the specialized branch would be the reference code for emulating that hardware configuration, NOT the main branch. If the main branch continues to be the reference, then readable knowledge of the older hardware gets lost in the mush and that emulation code will only become harder to maintain as the original hardware originally dies. If the specialized branch is the reference code, then the developer can focus only on what his hardware does and not have to worry about any of his changes breaking other hardware emulation in the same codebase.
In other words, improve emulation of specific configurations as separate branches without distraction by all the other configurations. No knotty code to wade through to fix emulation of your specific hardware.
It goes without saying that improvements in the main DOSBox-X master branch might trickle back into the specialized branches too.
Another concern is documentation. In each branch it would be nice if notes, comments, photos, screenshots, video captures, etc. were collected in a Documentation directory, enough to continue developing emulation even after the original hardware dies. I plan on doing the same on my end, recording myself poking and prodding VGA hardware and uploading it to YouTube as well as notes in the source tree. I will be doing the same with old hardware I have as well. I also have the DOSLIB project on my end to test the emulation, the specialized branches would have their own test programs as well. The goal of the test programs is to make sure that both the hardware and the specialized branch of DOSBox act the same way when the program does it's thing. As long as the test programs cover a lot of ground, then emulation will only improve.
DOSBox-X project: more emulation better accuracy.
DOSLIB and DOSLIB2: Learn how to tinker and hack hardware and software from DOS.