DOSContainer logo DOSContainer

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..

Read more...

How to set up your hardware specifications

📅 2025-05-12  · ✍️ Bas v.d. Wiel  ·  🏷 design , documentation

Hardware specifications are one key part of a complete DOSContainer configuration. Manifests are the other, but we’ll get to that. Hardware specifications, or HwSpec for short declares to DOSContainer what your retro PC hardware looks like. In it, you specify exactly what devices you have in your real or emulated system so that DOSContainer can take this into account when configuring applications and games to run on your system. It means DOSContainer will configure your game to use CGA graphics if that’s all you have, even if the game itself can do better. This article explains the first draft of the HwSpec TOML file format and shows a couple of complete examples that define a real IBM PC and a 1983 IBM XT.

Read more...

Loading configuration files in Rust

📅 2025-05-11  · ✍️ Bas v.d. Wiel  ·  🏷 design

Loading and parsing configuration files is a key component of DOSContainer. The chosen file format for configuration is TOML, for simplicity. Rust’s community produced a crate specifically to read and write this format, so yay! But unfortunately for me, this is far from ideal. One of my project’s base principles is that I only want to write code if I absolutely have to. If I can borrow functionality from a community crate, that’s what I’ll do.

Read more...

Why so many dependencies?

📅 2025-05-10  · ✍️ Bas v.d. Wiel  ·  🏷 design

The main reason why I picked Rust to write DOSContainer is because I wanted to learn it. The second reason is the fact that Rust has a large ecosystem of code that is easy to pick up and use. Some years ago I started coding in C++ and while libraries are indeed nothing new, managing them was like getting your teeth pulled by a toddler with a claw hammer. Rust has cargo, and I’m using a lot of it in DOSContainer!

Read more...