Skip to content

Project Overview

Retro Jack edited this page Jun 12, 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, AMIBIOS header, 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: VIC-20, MAX, C64, C16, Plus/4, C128 (six sub-systems off four VICE libretro cores); PET on its own (Thomas Skibo's pet2001, vanilla JS)
  • Sinclair: ZX81, ZX Spectrum
  • Amstrad: CPC
  • Tandy: CoCo
  • Texas Instruments: TI-99/4A
  • MSX: MSX1, MSX2

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

See Emulators for the index and individual integration stories.

Clone this wiki locally