We have lift-off!
📅 2025-05-27 · ✍️ Bas v.d. Wiel · 🏷 announcement
DOSContainer generates bootable PC-DOS 1.00 disk images! So technically that means we have lift-off, and I’d be lying if I said I wasn’t happy about this milestone. However, and there’s always a “but”, we’re not there yet. In fact, I’ve been at this very spot before and even further along. I had bootable PC-DOS running a BASIC game from a generated image but I still started over. Why? Architecture! The code would absolutely not scale at all, and I’m running into similar questions again this time around. Allow me to elaborate, because things are not as dire as they sound.
Now that DOSContainer generates working images, I’d be tempted to just bolt on code that
reads out the downloaded files from Manifest
contents and plonks them into the image
to just call it a day and release DOSContainer to the world. That’d be unfortunate, though
because I’d instantly block future development.
Scaling the design: BIOS Parameter Block
Currently, scalability problems regarding the FAT filesystem are mostly managed. DOSContainer can generate filesystems with unlimited nested subdirectories, which the previous incarnation was not capable of. The data model is also robust enough that I should fit any incarnation of FAT that ever left the labs of OS developers in the 1980’s and 1990’s if only for one item: the BIOS Parameter Block.
PC-DOS versions 1.xx never had this block of valuable metadata in their boot sectors. Everything was just hard-coded defaults and because that’s what I’m initially working with, a bit of hard-coding snuck into DOSContainer. So while this currently works for DOS 1.00, it won’t scale beyond version 1.xx. So I’ve decided to restructure some of my code around the existence of a BIOS Parameter Block in all cases, even if the original OS never had one.
This will take some extra time, but it will lead to a fully generalized data model of what makes
a FAT filesystem. This model serves to feed the Serializer
structs that I’ll code for each
individual DOS version. None of those cares if a BPB actually gets written to the final disk image
or not. It will use the abstract model of one to gather FAT sizes, root directory entry count,
sector offsets etc.
Finalizing the Manifest format
The Manifest
file format is not yet final. I’m not going to hoist a file format on a wider
community that people are going to invest in, only to overhault it all again in a few days. I’ll
let that stabilize and release a number of games myself before I make a final release.