📅 2025-05-24
· ✍️ Bas v.d. Wiel
·
🏷
design
One major issue for DOSContainer is to figure out the optimum between what you have
on your desk and what the software you’re building actually supports. In a previous
version of the codebase I had started a convoluted decision tree of if/then/else/unless
logic. That stopped scaling after two versions of DOS, while I intend to support dozens
so something had to give. The alternative? Modeling compatibility as data!
Currently DOSContainer is gearing up to release 1.00 which will only support PC-DOS 1.00
on the surface. Inside the codebase, however, I’m already working with versions 1.00, 1.10
and 2.00 to prove the design. These three versions already have a few quirks between them
and the hardware they run on that will exclude certain combinations. Modeling how to handle
this is crucial to the future of DOSContainer.
Read more...
📅 2025-05-22
· ✍️ Bas v.d. Wiel
·
🏷
design
Now that all components of what makes a disk image are coming together nicely, it’s time
to worry about the first version of the Manifest and the file format that goes with
it. The idea is for DOSContainer to primarily be easy to use for end users, meaning people
who cultivate collections of DOS software. The Manifest is intended to be written by
those knowledgeable on particular DOS applications and are more or less a one-off exercise,
so it’s more verbose than HwSpec although I’m still trying to keep it as simple as I
possibly can. Here goes!
Read more...
📅 2025-05-20
· ✍️ Bas v.d. Wiel
·
🏷
design
Because the filesystem is such a crucial part of how DOSContainer aims to achieve
that legendary `museum quality’ output, let’s look into it some more. The current
progress is up to the point where I have two things: an abstract model of the data
structures that constitute FAT and a proof-of-concept serializer struct that takes
this model’s AllocationTable and spits out an IBM PC-DOS 1.00 compatible interpretation
of it.
The abstract model of a File Allocation Table is there to support the basic data
structure that all versions of the FAT filesystem have in common, without any of the
specific quirks introduced by vendors over the decades. An AllocationTable in
the abstract now looks like this:
Read more...
📅 2025-05-18
· ✍️ Bas v.d. Wiel
·
🏷
design
One of the hardest parts of this project is learning Rust. It’s also one of my
main personal goals with this one. Rust is hardly forgiving, but using it made
me a much better developer over the past few months. Unfortunately that also meant
not having much progress to show for all my effort. Right now, I ran into my own
code for the filesystem crate. That’s the part of DOSContainer that handles
everything to do with FAT. I’m essentially reimplementing the FAT filesystem in a
very unorthodox way. Here’s why that is so complicated.
Read more...