Skip to content

File Structure

Retro-Jack edited this page May 10, 2026 · 63 revisions

File Structure

genx-dos/
├── README.md                  one-page entry point
├── CHANGELOG.md
├── index.html                 fake BIOS POST → redirects to prompt/
├── favicon.ico
├── make_fonts.py              generates f12.N.png palette variants
│
├── prompt/                    the DOS terminal
│   ├── index.html
│   ├── favicon.ico
│   ├── animated_favicon1.gif
│   ├── javascript/
│   │   ├── globals.js         shared state (palette, paths, flags)
│   │   ├── goFontGo.js        builds the 256 CSS rules
│   │   ├── classUtils.js      add/remove/test class helpers
│   │   ├── keyboard.js        keypress / keydown handlers
│   │   ├── terminal.js        echo, executeBatch, prompt rendering
│   │   ├── fs.js              the virtual C: drive
│   │   ├── commands-core.js   handleCmd, dir, type, etc.
│   │   ├── commands.js        echo, cd, cls, setcol, easter eggs
│   │   └── init.js            entry point
│   └── img/
│       ├── f12.7.png          master sprite sheet (light grey)
│       └── f12.<0-15>.png     CGA palette variants
│
└── emulators/
    ├── jsbeeb/                BBC Micro       (copied from mattgodbolt/jsbeeb)
    ├── archimedes-live/       Acorn Archimedes (mirror of pdjstone/archimedes-live)
    ├── jsnes/                 NES             (copied from bfirsh/jsnes)
    ├── genesis/               Sega Genesis    (copied from lrusso/Genesis)
    ├── javatari/              Atari 2600      (copied from ppeccin/javatari.js)
    ├── jsdos/                 MS-DOS          (copied from caiiiycuk/js-dos)
    └── webmsx/                MSX/MSX2/MSX2+  (mirror of ppeccin/WebMSX)

Per-emulator layout

Emulator Runtime Wrapper Game files
jsbeeb/ dist/ (Vite build) the dist's own index.html (URL-driven) dist/discs/<publisher>/*.ssd
archimedes-live/ mirrored static bundle (HTML/JS/WASM/data + ROMs) the bundle's own index.html (hash-driven) software/*.zip (catalogue: software/software.json); ROMs in emu/roms/
jsnes/ dist/jsnes.min.js play.html roms/*.nes
genesis/ Genesis.min.js play.html roms/*.bin
javatari/ javatari.js play.html roms/*.a26
jsdos/ js-dos.js + wdosbox.wasm play.html bundles/*.jsdos
webmsx/ single 5 MB index.html (engine + UI + BIOSes inlined) the bundle's own index.html (URL-driven) games/msx1/*.zip + games/msx2/*.zip

Each play.html-based emulator (NES, Genesis, Atari 2600, jsdos) also has a games.json mapping <key>{title, rom} (or {title, bundle}). The URL-driven emulators (jsbeeb, archimedes-live, webmsx) take all their config via query string or hash and need no per-site wrapper.

Notes on individual files

File Purpose
index.html 4-second BIOS POST animation, then <meta refresh> to prompt/
prompt/index.html Loads the JS modules in order, hosts the terminal <div>
prompt/img/f12.7.png 192×192 px, 16×16 grid of 12×12 px CP437 glyphs (light grey)
prompt/img/f12.<N>.png Pre-tinted variant for CGA palette index N
make_fonts.py One-shot PIL script that tints f12.7.png into the other variants

Clone this wiki locally