152 lines
6.5 KiB
Markdown
152 lines
6.5 KiB
Markdown
# 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`.
|
|
|
|
`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 INI, themes, 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)
|
|
```
|
|
|
|
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`.
|