Skip to content

Project Overview

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

Project Overview

GenX-DOS is a static page that recreates a 1990s DOS prompt in the browser. Visitors land at 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.

Boot flow

  1. index.html — instant <meta refresh> to prompt/. The actual POST animation lives inside the prompt page.
  2. prompt/index.html — 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 s 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\nmenu, 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.

Technology

  • Pure HTML + JavaScript. No build step, no frameworks, no dependencies.
  • Each 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 (prompt/javascript/fs.js).
  • Scope rule: 8-bit era only. Every shipped system belongs to the 8-bit microcomputing/console era (~1975-1990). The cutoff is era, not strict CPU width — Intellivision (CP1610 16-bit ALU) is in because it's an 8-bit-era console; Sega Genesis (1988 calendar overlap) is out because it represents the leap to 16-bit hardware. DOS is the prompt host. See Roadmap.
  • 25 copied emulators live under emulators/ with bundled local games/discs/cartridges, driving 28 sub-systems — Apple I, BBC Micro, BBC Master 128 (same jsbeeb build, ?model=Master), Acorn Electron, Apple ][+, NES, Atari 2600, Atari 7800, MSX (MSX1/MSX2), GCE Vectrex, Sinclair Spectrum, Sinclair ZX81, Tandy CoCo, Texas Instruments TI-99/4A, Atari 400 + Atari 800XL (same atari800 build), ColecoVision, Mattel Intellivision, Amstrad CPC, Magnavox Odyssey², and the full Commodore VICE family — PET, VIC-20, MAX Machine, Commodore 64, C16, Plus/4, C128 (seven sub-systems off five VICE libretro cores: xpet, xvic, x64, xplus4, x128 — c64+max share x64, c16+plus4 share xplus4). The seven VICE bundles, the Coleco bundle, and the jsnes bundle (EmulatorJS + FCEUmm) share one copy of the EmulatorJS framework via emulators/_shared-ejs/. Intellivision, Electron, and Odyssey² stand alone — jzIntv / ElkJS / libretro-o2em respectively, each with its own custom loader. See Emulators.

Clone this wiki locally