I spent the last days rebuilding a very old toolchain stack, mostly out of curiosity and partly for education/reverse-engineering reasons.
The stack:
Turbo C++ (Borland)
Target: MS-DOS 2.0–era constraints
Running inside Windows 95
Emulated with DOSBox-X (not vanilla DOSBox)
Why DOSBox-X? Because it actually cares about:
real DOS boot flows
disk images (FAT12/FAT16) instead of fake mounts
Windows 9x compatibility
correct INT/DPMI/EMS/XMS behavior
Vanilla DOSBox is great for games, but it lies too much for this kind of experiment.
---
Why do this in 2026?
Because modern toolchains hide everything.
I wanted:
to see what the compiler actually emits
to understand what a “hello world” really costs
to watch how 16-bit memory models, segments, and relocation work
to verify that the binary actually runs under real DOS/Win9x expectations, not a modern CRT fantasy
Turbo C++ is perfect for this because:
it’s brutally honest
it emits readable ASM
it forces you to think in memory models (tiny/small/medium/large/huge)
it doesn’t protect you from yourself
---
Setup notes (important)
I’m not using mount c folder
I’m using a real HDD image (.img) formatted as FAT
DOSBox-X boots DOS → Windows 95 → Turbo C++
AUTOEXEC.BAT and CONFIG.SYS are real, not simulated
This matters if you care about:
file layout
executable headers
segment limits
boot realism
---
What surprised me
How little you need to get useful binaries
How fast Turbo C++ compiles compared to modern compilers
How transparent the whole pipeline is
How much knowledge we lost by abstracting this away
Modern dev feels like programming through 5 layers of noise. This feels like touching the metal — even in emulation.
---
Why this might interest HN
If you care about:
compiler education
retro-computing
OS boot chains
reproducible builds
understanding what your tools actually do
…this kind of setup is incredibly enlightening.
Not nostalgia. More like archaeology with instruments.
If there’s interest, I can follow up with:
exact DOSBox-X config
disk image layout
Turbo C++ version quirks
memory model comparisons
ASM output examples
Thanks for reading.