Skip to content

Doors

ENiGMA½ supports running local BBS door games through several approaches. In addition to the many built-in door server modules (DoorParty, BBSLink, Exodus, etc.), local doors run directly on your server.


ApproachModuleBest ForExternal Requirements
Native v86 Emulationv86_doorDOS doors, no emulator on serverFreeDOS disk image
External DOS EmulatorsabracadabraDOS doors, full graphical setupQEMU or DOSEMU installed
Scripts & Native BinariesabracadabraNative terminal apps, shell/Python scriptsNone
Z-Machine Interactive Fictionzmachine_doorZork, Adventure, Photopia, and hundreds of free IF gamesNone (pure JavaScript)
  • Running a classic DOS door game and want zero server dependencies?Native v86 Emulation. ENiGMA½ boots FreeDOS in a built-in emulator; no QEMU or DOSEMU required on the production machine.

  • Already have a QEMU or DOSEMU setup, or need a full graphical DOS environment for image configuration?External DOS Emulators. Raw disk images are compatible with both approaches, so you can configure with QEMU and run with v86.

  • Running a native terminal application, a shell script, or a Python-based door?Scripts & Native Binaries. The abracadabra module launches any local process that speaks stdio and bridges I/O over stdin/stdout or a TCP socket.

  • Running a Z-Machine interactive fiction game (.z3/.z5/.z8)?Z-Machine Interactive Fiction. Classic Infocom-era text adventures and modern IF competition winners — Zork, Adventure, Photopia, Anchorhead, Lost Pig, etc. — run natively in Node.js with no emulator, no drop file, and cross-platform support.


All local door approaches in ENiGMA½ support the same drop file types:

ValueDescription
noneNo drop file needed
DOORDOOR.SYS
DOOR32DOOR32.SYS
DORINFODORINFOx.DEF

Each of these carries a field naming the connection the door has been handed — DOOR32.SYS comm type and socket handle, DOOR.SYS comm port, DORINFO serial port. ENiGMA½ writes them to match how the door is actually launched, defaulting to local (stdin/stdout). Only abracadabra setups where an emulator or bridge sits in between need to say otherwise; v86 reports serial on its own, since it bridges the caller to the guest’s COM1.