How should we define storage?
📅 2025-05-12 · ✍️ Bas v.d. Wiel · 🏷 design
At the time of this writing, the HwSpec
format does not concern itself with storage media. The
reason for this is simple, but it may also be wrong: storage is currently a concern for Manifest
. The
Manifest
determines everything that has to do with the application or game and the disk image
it will create. However, this determination is a leftover from when DOSContainer didn’t yet have a
concept of HwSpec
. Some thoughts..
DOSContainer aims to use the HwSpec
as the reference spec of hardware against which to build
software collections. Storage media are hardware, so they should be in the HwSpec
, right? Well,
it depends on how we treat what we’re given in a HwSpec
. At this point in time, the HwSpec
is treated as a target specification to aim for as closely as possible. What does this mean?
If a HwSpec
defines video
as EGA
, what should we do with a game that supports CGA,
EGA and VGA? The current answer is to go for EGA because that’s what was specified. Plain and simple,
even though the system could also handle CGA. Falling back to CGA is only done for titles that are
unable to handle EGA. VGA and Hercules are off-limits because the hardware can’t handle it, so CGA
is the next best option on actual EGA hardware.
Split responsibility for storage
Originally, the Manifest
would fully dictate storage. It’d be up to the target system to handle
what DOSContainer spits out. That may not be optimal, though. So we’re going to make something of a
split here.
A Manifest
will declare the types of floppy disk (if any) that it’s willing to support installation
onto, as well as the file systems it’s willing to work with (FAT variants, roughly). It also gets to
declare the absolute minimum size of hard disk it’s willling to accept. Should a DOSContainer user
choose to not define storage at the HwSpec
level, DOSContainer will build a hard disk image
with the minimum size as declared in the Manifest
.
If the HwSpec
does define physical storage devices, DOSContainer will respect those. It’s not
easy for you to change the hard disk on your physical retro PC. So if you say you have 42MB of hard
disk space, then that’s what we’ll work with. That does mean that we won’t even bother trying to build
any Manifest
that declares a need for a bigger hard disk: it wouldn’t fit anyway. If you have a
hard disk, DOSContainer will prefer it over floppy images.