-
Notifications
You must be signed in to change notification settings - Fork 0
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.
When the page loads:
-
index.htmldoes an instant<meta refresh>toprompt/. The actual POST animation lives inside the prompt page. -
prompt/index.htmlis 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 . . .andType "help" <enter> for assistance. - calls
initTerminal()which wires up the keyboard and runsAUTOEXEC.BAT
-
AUTOEXEC.BATrunsmenu. The rootmenu.batdoescd emulators\menu, dropping the user straight into the EMULATOR LAUNCHER. - The user types a number (or a command name) to navigate.
- Selecting a game opens the emulator in a new tab via
window.open.
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.
Every shipped system has the feel of an 8-bit machine — sprite-based, chiptune, low-res. The test is the aesthetic, not the calendar year or strict CPU bit-width. (Updated 14/06/2026 from the earlier "8-bit era, ~1975-1990" framing.) Intellivision (CP1610, 16-bit ALU) is in because it plays like an 8-bit-era console. The 8-bit-feel handhelds — Game Boy / GBC, Game Gear, Lynx — are in even where they run into the late 90s (a colour GBC game from 2002 still feels 8-bit). Sega Genesis (1988) is out: it defined the 16-bit look-and-sound leap, 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.
19 emulators ship under systems/, driving 31 sub-systems:
- Consoles: Atari 2600, Atari 7800, ColecoVision, Intellivision, NES, Magnavox Odyssey², Vectrex
- Handheld: Game Boy / Game Boy Color, Atari Lynx, Sega Game Gear
- 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
Nine of these (the six VICE bundles, ColecoVision, NES, and the Atari 2600) share one copy of the EmulatorJS framework via systems/_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.