6.1 KiB
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 2.0+ linear framebuffer video modes. 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)
- VESA BIOS Extensions 2.0 or newer with linear framebuffer support
- 4 MB of extended memory minimum; 8 MB or more recommended
- Any resolution the video card reports at 8, 15, 16, 24, or 32 bits per pixel. 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
- 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=... and
CWSDSTUB=... 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.
./mkcd.sh builds everything, then wraps bin/ into an ISO 9660
image for use with an emulator or for burning to physical media. On
the target machine, change to the CD drive and type INSTALL: DVX
starts from the CD with its Setup program, which copies DVX to a
hard-disk folder (and can add it to AUTOEXEC.BAT). 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 INI, themes, wallpapers
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)
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)
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 catalogdocs/dvx_basic_reference.html-- DVX BASIC language referencedocs/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.