Skip to content

Project Overview

Retro Jack edited this page Jun 9, 2026 · 49 revisions

Project Overview

GenX-DOS is a static page that recreates a 1990s DOS prompt in the browser. Visitors land on a fake AMIBIOS POST screen, get dropped into a C:\> prompt, and navigate numbered menus to launch emulated games — all running locally in the page.

There's no server, no build step, no framework. The whole thing is HTML and JavaScript that runs straight out of GitHub Pages.

The boot flow

When the page loads:

  1. index.html does an instant <meta refresh> to prompt/. The actual POST animation lives inside the prompt page.
  2. prompt/index.html is the DOS terminal. On load, init():
    • renders the AMIBIOS POST — AMI logo, Tseng video BIOS line, CPU/coprocessor/memory test with animated 0000 → 8064 KB count, six device-detection lines streamed at 500 ms each, footer with BIOS ID
    • pauses 5 seconds with the full POST on screen
    • clears, renders the System Configuration table
    • prints Starting GenX-DOS . . . and Type "help" <enter> for assistance.
    • calls initTerminal() which wires up the keyboard and runs AUTOEXEC.BAT
  3. AUTOEXEC.BAT runs menu. The root menu.bat does cd emulators\menu, dropping the user straight into the EMULATOR LAUNCHER.
  4. The user types a number (or a command name) to navigate.
  5. Selecting a game opens the emulator in a new tab via window.open.

How it's built

Pure HTML + JavaScript. No build step, no frameworks, no dependencies.

Every visible character is its own <div>, styled with a CSS background-position into a 12×12 CP437 sprite sheet. The virtual filesystem is a JS object tree in prompt/javascript/fs.js. When the user types dir, the prompt walks that tree and renders the result through the sprite font.

The scope rule: 8-bit era only

Every shipped system belongs to the 8-bit microcomputing/console era — roughly 1975 to 1990. The cutoff is era, not strict CPU bit-width. Intellivision (CP1610, 16-bit ALU) is in because it's an 8-bit-era console contemporary with the Atari 2600. Sega Genesis (1988) is out because it represents the leap to 16-bit hardware, even though the calendar year overlaps.

DOS is the prompt host. See Roadmap for the full in/out list and what's still on the slate.

The lineup

19 emulators ship under emulators/, driving 28 sub-systems:

  • Consoles: Atari 2600, Atari 7800, ColecoVision, Intellivision, NES, Magnavox Odyssey², Vectrex
  • Apple: Apple I, Apple ][+
  • Acorn: BBC Micro, BBC Master 128 (same jsbeeb build, ?model=Master), Electron
  • Atari home: Atari 400, Atari 800XL (same atari800 build)
  • Commodore: PET, VIC-20, MAX, C64, C16, Plus/4, C128 (seven sub-systems off five VICE libretro cores)
  • Sinclair: ZX81, ZX Spectrum
  • Amstrad: CPC
  • Tandy: CoCo
  • Texas Instruments: TI-99/4A
  • MSX: MSX1, MSX2

Nine of these (the seven VICE bundles, ColecoVision, NES) share one copy of the EmulatorJS framework via emulators/_shared-ejs/. Intellivision, Electron, and Odyssey² stand alone — jzIntv, ElkJS, and libretro-o2em respectively, each with its own custom loader.

See Emulators for the index and individual integration stories.

Clone this wiki locally