DOS Gaming Network Research based on the DOS Visual eXecutive GUI.
Find a file
2026-10-17 15:55:36 -05:00
assets Transparent image support. Image alignment in help. 2026-04-13 22:04:09 -05:00
config Much improved printing. More sound devices supported. Sound recording. 2026-10-17 15:55:36 -05:00
docs Much improved printing. More sound devices supported. Sound recording. 2026-10-17 15:55:36 -05:00
screenshots Much improved printing. More sound devices supported. Sound recording. 2026-10-17 15:55:36 -05:00
server Much improved printing. More sound devices supported. Sound recording. 2026-10-17 15:55:36 -05:00
src Much improved printing. More sound devices supported. Sound recording. 2026-10-17 15:55:36 -05:00
unused New toolchain installer. Serious number of bugs fixed. New Program Manager and File Manager. TCP/IP and printing added. SQLite upgraded. Safe video mode startup added. File associations. Terminal program. First run welcome. New docs. Whew. 2026-09-28 15:31:13 -05:00
.gitattributes Transparent image support. Image alignment in help. 2026-04-13 22:04:09 -05:00
.gitignore Fullscreen exclusive mode. 2026-09-29 20:23:31 -05:00
analyze.sh Huge amount of BASIC API work. 2026-10-12 14:19:24 -05:00
cppcheck.sh Major font work, terminal enhancements. 2026-10-14 12:30:57 -05:00
dosbox-staging-overrides.conf An insane number of performance, logic, and feature enhancements; bug fixess; and other things. 2026-04-12 22:26:18 -05:00
dosbox-x-overrides.conf An insane number of performance, logic, and feature enhancements; bug fixess; and other things. 2026-04-12 22:26:18 -05:00
installToolchain.sh Much improved printing. More sound devices supported. Sound recording. 2026-10-17 15:55:36 -05:00
LICENSE.txt License assigned. 2026-04-17 19:42:18 -05:00
Makefile Much improved printing. More sound devices supported. Sound recording. 2026-10-17 15:55:36 -05:00
mkcd.sh New toolchain installer. Serious number of bugs fixed. New Program Manager and File Manager. TCP/IP and printing added. SQLite upgraded. Safe video mode startup added. File associations. Terminal program. First run welcome. New docs. Whew. 2026-09-28 15:31:13 -05:00
README.md VESA 1.2 supported! 2026-10-14 17:37:03 -05:00
run.sh License added to source files. 2026-04-17 23:23:44 -05:00

DVX -- DOS Visual eXecutive

DVX is a windowed GUI environment and application platform for DOS. It provides a Motif-inspired desktop, a cooperative multitasking kernel, a widget toolkit, a compiled BASIC language with a visual form designer, and a small set of bundled applications.

The system is a compositor built on VESA VBE video modes: the linear framebuffer where the card has one, its 64 KB bank window where it does not. A dirty-rectangle compositor keeps redraw cost proportional to what actually changes on screen, so the desktop is responsive even at 1024x768 on modest hardware.

What's Included

  • DVX Shell -- desktop, app lifecycle manager, Task Manager, crash recovery. The shell is the program the user interacts with and the host for all running applications.
  • Widget toolkit -- 31 widget types as plug-in modules: buttons, labels, text inputs, list boxes, tree views, tab controls, sliders, spinners, progress bars, canvases, scroll panes, splitters, an ANSI terminal, and more.
  • DVX BASIC -- a Visual Basic 3 compatible language with a visual form designer, per-procedure code editor, project management, and a bytecode compiler and VM. BASIC programs compile to standalone DVX applications.
  • Help system -- a full hypertext help viewer with table of contents, keyword index, full-text search, and inline images. Help files are compiled from a plain-text source format.
  • Serial / networking stack -- an ISR-driven UART driver, HDLC packet framing with CRC-16 and Go-Back-N reliable delivery, 1024-bit Diffie-Hellman key exchange, and XTEA-CTR encryption, plus a Linux bridge that connects a virtual serial port to a telnet BBS.
  • Control Panel -- themes, wallpapers, video mode, mouse configuration, all with live preview.
  • Bundled applications -- Program Manager (desktop launcher), Notepad, Clock, Image Viewer, DVX Demo, Control Panel, DVX BASIC IDE, Help Viewer, Resource Editor, Icon Editor, Help Editor, BASIC Demo.

Target Hardware

  • DOS with a 386-class CPU or newer (486 recommended, Pentium for best performance)
  • A VESA BIOS (VBE 1.2 or newer; a VBE driver such as UniVBE for cards without one in ROM). A linear framebuffer (VBE 2.0) is faster; without one DVX writes through the 64 KB bank window
  • 4 MB of extended memory minimum; 8 MB or more recommended
  • Any resolution the video card reports at 8, 15, 16, or 32 bits per pixel (24 is not supported). 640x480, 800x600, and 1024x768 are the common cases.
  • Two-button mouse; scroll wheel supported if a compatible driver is loaded

Building and Deploying

./installToolchain.sh   # once, after a fresh clone: fetch the toolchain
make                    # build everything
make test               # host test suites, goldens and the lint gate
make test-dos           # run the real DOS build in 86Box (see below)
make clean              # remove all build artifacts
./mkcd.sh               # build and produce a CD-ROM ISO image

Everything the build and the tests need that is not a standard Linux package lives in toolchains/, which is not kept in git. ./installToolchain.sh downloads each piece, checks it against a pinned SHA-256, and unpacks it there (no sudo, nothing outside the project); run it again with --force to reinstall:

  • DJGPP (GCC 12.2.0) and the CWSDPMI stub -- the DOS cross compiler
  • UPX 4.2.4 -- packs SETUP.EXE to about half its size
  • 86Box 6.0 and its ROM set, FreeDOS 1.3 boot files and CuteMouse, and DOSBox Staging 0.83.0 -- the emulator test harness
  • cppcheck 2.21, built from source -- used by the static gate
  • lrzsz 0.12.20 -- the Terminal tests' ZMODEM peer

It needs curl, tar, bzip2, xz, unzip, make, g++, mtools, and xvfb-run. To build with a different DOS toolchain, pass DJGPP_PREFIX=..., CWSDSTUB=..., and UPX=... to make.

make builds in dependency order: core, tasks, loader, helpers, host tools, widgets, shell, task manager, apps. Build output goes to bin/ and intermediate objects to obj/.

make test-dos boots FreeDOS in 86Box (headless, under Xvfb), runs DVX /SCRIPT=... for every script in src/test/dos/scripts, and compares the screenshots with the goldens. EMULATOR=dosbox uses DOSBox Staging instead (much faster); SCRIPTS="boot apps" runs a subset. The emulators never touch your home directory. See src/test/dos/runDos.sh --help.

make dist builds the release media in dist/: a CD image (DVX.ISO: SETUP.EXE with the DVX package appended, and README.TXT) and a set of floppy images (make dist FLOPPY=720K; 360K, 720K, 1.2M, 1.44M (default), 2.88M, or a number of bytes per disk). On the target machine, type SETUP on the CD or Disk 1: Setup installs DVX in a hard-disk folder (and can add it to AUTOEXEC.BAT); the SETUP.EXE it leaves in that folder uninstalls. ./mkcd.sh wraps bin/ as it is into an ISO image, for running DVX straight from a CD in an emulator. Holding Shift while DVX starts (or DVX /SAFE) starts it in 640x480 safe video mode.

Directory Layout

dvxgui/
  assets/       logo and splash artwork
  bin/          build output (runtime tree; mirrors what ships)
  config/       shipped DVX.INI, ASSOC.INI, themes, and wallpapers
  dist/         release media from `make dist` (not in git)
  docs/         HTML exports of the built-in help content
  LICENSE.txt   MIT license
  installToolchain.sh  fetches the toolchain and test tools into toolchains/
  Makefile      top-level build
  mkcd.sh       build-and-package script
  src/
    apps/       bundled applications
    include/    shared include files (BASIC library declarations)
    installer/  SETUP.EXE, the package tool and make dist
    libs/       core libraries (GUI, tasks, shell, helpers, serial, SQL)
    loader/     bootstrap executable
    sdk/        SDK project templates, build rules and newProject.sh
    tools/      host-native development tools and the BASIC compiler
    widgets/    widget plug-in modules
  toolchains/   DJGPP, CWSDPMI, emulators, cppcheck (not in git; see
                installToolchain.sh)

An installed DVX (and bin/) keeps program files and user files apart:

DVX.EXE  SETUP.EXE  SETUP.LST
SYSTEM/      tools, SPLASH.RAW, and the shipped DVX.INI and ASSOC.INI
LIBS/  WIDGETS/
APPS/<vendor>/<app>/   a program, its help, and DATA/ (files it ships)
SHARED/      FONTS, SOUNDS, THEMES, WPAPER: shipped for every program
USER/        everything written while DVX runs (back up this folder)
  DVX.INI  ASSOC.INI  DVX.LOG
  FONTS/ SOUNDS/ THEMES/ WPAPER/   the user's own (found before SHARED's)
  APPS/<vendor>/<app>/   each program's settings and saved files
  DOWNLOAD/  Terminal's downloads

SET DVXUSER=D:\MYDVX puts the user folder elsewhere (when DVX's disk cannot be written it goes in TEMP). Only DVX's own package fills SHARED; programs keep their own files with them. The package never holds USER, so an upgrade replaces every program file and leaves the user's alone. claudeDocs/folderLayout.md has the reasoning.

See src/tools/README.md for the host-side development tools (resource tool, icon generators, help compiler, proxy), and src/apps/kpunch/README.md for the SDK contract applications must follow. make also writes the SDK to bin/sdk: headers, host tools, and a template for each kind of module (bin/sdk/newProject.sh app NAME); the SDK Quick Start in the system help walks through it.

Documentation

Full reference documentation ships with the system as browsable help:

  • docs/dvx_system_reference.html -- system API, widget catalog
  • docs/dvx_basic_reference.html -- DVX BASIC language reference
  • docs/dvx_help_viewer.html -- help viewer guide

The same content is available from inside DVX via the Help Viewer and Program Manager.

License

MIT. See LICENSE.txt.