# 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

```
make          # build everything
make clean    # remove all build artifacts
./mkcd.sh     # build and produce a CD-ROM ISO image
```

`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/`.

`./mkcd.sh` builds everything, then wraps `bin/` into an ISO 9660
image for use with an emulator or for burning to physical media.


## 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
  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
    tools/      host-native development tools and the BASIC compiler
    widgets/    widget plug-in modules
```

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.


## 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`.
