diff --git a/eleventy.config.js b/eleventy.config.js index b53c63f..dffa731 100644 --- a/eleventy.config.js +++ b/eleventy.config.js @@ -46,6 +46,7 @@ module.exports = function (eleventyConfig) { eleventyConfig.addPassthroughCopy("retro/atari-vga/*.jpg"); eleventyConfig.addPassthroughCopy("retro/laser-mouse/*.jpg"); eleventyConfig.addPassthroughCopy("retro/mega-st-high/*.jpg"); + eleventyConfig.addPassthroughCopy("retro/dos-486-tower/*.jpg"); eleventyConfig.addPassthroughCopy("retro/mistery-core/*.jpg"); // Standalone demo group archives (static HTML) diff --git a/retro/dos-486-tower/index.njk b/retro/dos-486-tower/index.njk index 81016af..e840eb5 100644 --- a/retro/dos-486-tower/index.njk +++ b/retro/dos-486-tower/index.njk @@ -16,9 +16,19 @@ parent: "/retro/"

The MiSTer recreation

The AO486 core on MiSTer FPGA handles the hardware convincingly. The real work was rebuilding the software environment from memory: the MS-DOS version, the memory managers (HIMEM.SYS, EMM386), the Sound Blaster drivers, and the AUTOEXEC.BAT and CONFIG.SYS tuning that made the original machine run smoothly.

+MiSTer menu on NEC MultiSync +

MiSTer menu on the NEC MultiSync LCD, the same monitor that drives the real retro hardware.

Context: DOSMENU

A key part of the preserved environment is DOSMENU, a boot configuration utility written in Turbo Pascal 6.0 in 1994, originally developed specifically for this Colani 486 machine. DOSMENU let you choose at boot time which AUTOEXEC.BAT and CONFIG.SYS commands to load, a critical feature in the DOS era, where memory management was manual and games often required different driver configurations. Features included saveable presets, a built-in MOD player, PCX picture display, and a DoubleSpace memory unloader. The original source: ~50k of Turbo Pascal, roughly 1900 lines plus some inline assembler.

+DOSMENU Version 2.0 title screen +

DOSMENU Version 2.0 title screen, the boot configuration utility.

+DOSMENU configuration interface +

The DOSMENU configuration interface showing system info, AUTOEXEC.BAT and CONFIG.SYS content, and saveable presets (F01-F10) for different boot configurations.

+DOSMENU boot sequence +

DOSMENU boot sequence showing the QEMM386 memory manager loading, registered to Stefan Koelle.

+DOSMENU loading DOS Navigator +

DOSMENU unregistered version with DOS Navigator 1.51 (by RIT Research Labs) loading at the C:\> prompt.

Why a rebuild from memory

The point isn't just to play DOS games, it's to recapture the computing experience from that era. The way DOS memory management worked, the way sound drivers had to be configured manually, the way batch files chained together to create a usable environment. This level of detail is lost when you just launch a DOS game from a modern frontend. The MiSTer setup recreates the whole boot process, from BIOS POST to the C:\> prompt, the way I remember it from the mid-90s.

@@ -31,6 +41,12 @@ parent: "/retro/"
  • DOSMENU, a custom boot configuration utility written specifically for this Colani 486 in 1994. Built in Turbo Pascal, it let you choose at boot time which AUTOEXEC.BAT and CONFIG.SYS commands to load, essential for managing DOS memory across different games and applications.
  • The quirks, the specific workarounds and tweaks that were needed to get everything running together, the kind of institutional knowledge that only exists on a well-used personal machine.
  • +X-OS file manager +

    X-OS (eXtended Operating System), my Norton Commander clone for DOS, browsing the SkyLINE source directory.

    +DiskInfo V1.0 +

    DiskInfo V1.0, a freeware disk space visualizer I wrote in 1993 for SkyLINE.

    +Tetris Competition +

    Tetris Competition, a two-player Tetris game I wrote for SkyLINE.

    AO486 vs real hardware

    The MiSTer AO486 core handles the emulation convincingly. Timing accuracy is good enough for games that rely on cycle-sensitive behavior. Sound Blaster emulation covers the standard OPL3 FM synthesis and digital audio. The main trade-off is that some hardware-specific quirks, like the behavior of specific ISA bus peripherals, aren't perfectly replicated. But since this is a rebuild from memory rather than an exact copy anyway, that's more than good enough for a working DOS environment.

    diff --git a/retro/dos-486-tower/mister.jpg b/retro/dos-486-tower/mister.jpg new file mode 100755 index 0000000..00f1d23 Binary files /dev/null and b/retro/dos-486-tower/mister.jpg differ diff --git a/retro/dos-486-tower/mister_486_boot1_dosmenu.jpg b/retro/dos-486-tower/mister_486_boot1_dosmenu.jpg new file mode 100755 index 0000000..ed7c06d Binary files /dev/null and b/retro/dos-486-tower/mister_486_boot1_dosmenu.jpg differ diff --git a/retro/dos-486-tower/mister_486_boot2_dosmenu.jpg b/retro/dos-486-tower/mister_486_boot2_dosmenu.jpg new file mode 100755 index 0000000..26d5d8c Binary files /dev/null and b/retro/dos-486-tower/mister_486_boot2_dosmenu.jpg differ diff --git a/retro/dos-486-tower/mister_486_boot3_dosmenu.jpg b/retro/dos-486-tower/mister_486_boot3_dosmenu.jpg new file mode 100755 index 0000000..eff1dcc Binary files /dev/null and b/retro/dos-486-tower/mister_486_boot3_dosmenu.jpg differ diff --git a/retro/dos-486-tower/mister_486_boot4_dosmenu.jpg b/retro/dos-486-tower/mister_486_boot4_dosmenu.jpg new file mode 100755 index 0000000..faead04 Binary files /dev/null and b/retro/dos-486-tower/mister_486_boot4_dosmenu.jpg differ diff --git a/retro/dos-486-tower/mister_486_prg1_shell.jpg b/retro/dos-486-tower/mister_486_prg1_shell.jpg new file mode 100755 index 0000000..ac784cf Binary files /dev/null and b/retro/dos-486-tower/mister_486_prg1_shell.jpg differ diff --git a/retro/dos-486-tower/mister_486_prg2_diskinfo.jpg b/retro/dos-486-tower/mister_486_prg2_diskinfo.jpg new file mode 100755 index 0000000..b58109c Binary files /dev/null and b/retro/dos-486-tower/mister_486_prg2_diskinfo.jpg differ diff --git a/retro/dos-486-tower/mister_486_prg3_tetris.jpg b/retro/dos-486-tower/mister_486_prg3_tetris.jpg new file mode 100755 index 0000000..298d36e Binary files /dev/null and b/retro/dos-486-tower/mister_486_prg3_tetris.jpg differ