Hella lotta bug fixes.

This commit is contained in:
Scott Duensing 2026-11-01 19:45:47 -06:00
parent 5b7fdbbde6
commit a2a28d97d7
911 changed files with 881452 additions and 14244 deletions

View file

@ -39,7 +39,7 @@
LIBS = $(sort $(notdir $(patsubst %/Makefile,%,$(wildcard src/libs/kpunch/*/Makefile))))
CORE_LIBS = libdvx libtasks
.PHONY: all clean $(LIBS) loader widgets apps savers tools installer dist deploy-helpsrc compile-help deploy-sdk test test-quick test-asan test-host test-modules test-samples coverage test-qa test-fuzz bench bench-compare
.PHONY: all clean $(LIBS) loader widgets apps savers tools installer dist deploy-helpsrc compile-help deploy-sdk test test-quick test-asan test-host test-modules test-samples coverage test-qa test-fuzz bench bench-compare manual proxy
# Every build ends by making the release media in dist/ (a second or
# two), so dist/ always holds the latest DVX.
@ -104,7 +104,7 @@ include src/test/suites.mk
test: apps
$(MAKE) test-modules
$(MAKE) -C $(DVXBASIC_DIR) tests
$(MAKE) -C src/tools/proxy
$(MAKE) proxy
$(MAKE) test-samples
$(MAKE) test-host
src/test/tools/runTools.sh
@ -176,6 +176,17 @@ test-qa:
test-fuzz:
$(MAKE) -C src/test/fuzz run
# The secure-link proxy (Linux; shipped in the SDK): bin/host/secproxy.
proxy:
$(MAKE) -C src/tools/proxy
# The user's guide (src/manual; not shipped with DVX):
# docs/manual/dvxManual.html (with images/) for browsing online and
# docs/manual/dvxManual.pdf for printing. Needs asciidoctor,
# asciidoctor-pdf, python3, and ImageMagick, so it is not part of all.
manual:
src/manual/mkManual.sh
HLPC = bin/host/dvxhlpc
HELP_FILES = src/tools/helpFiles.sh
@ -223,11 +234,12 @@ include src/sdkHeaders.mk
# The SDK's own files (README, sdk.mk, newProject.sh, project templates)
# live in src/sdk; its bin/ holds the host tools a project build runs.
SDK_SRC = src/sdk
SDK_TOOLS = bin/host/dvxres bin/host/dvxhlpc bin/host/bascomp bin/host/mkfont bin/host/dvxpkg src/tools/dxeGen.sh
SDK_TOOLS = bin/host/dvxres bin/host/dvxhlpc bin/host/bascomp bin/host/mkfont bin/host/dvxpkg bin/host/secproxy src/tools/dxeGen.sh
# The host tools come from tools (dvxres, dvxhlpc, mkfont), apps (bascomp),
# and installer (dvxpkg).
deploy-sdk: tools apps installer
# installer (dvxpkg), and proxy (secproxy, the secure-link proxy for the
# other end of Terminal's secure link, with its instructions).
deploy-sdk: tools apps installer proxy
@echo "Building SDK..."
@# Start from an empty tree so a header dropped from the lists goes away.
rm -rf $(SDKDIR)
@ -284,6 +296,7 @@ deploy-sdk: tools apps installer
cp $(SDK_SRC)/README.TXT $(SDK_SRC)/sdk.mk $(SDK_SRC)/newProject.sh $(SDKDIR)/
cp -R $(SDK_SRC)/templates $(SDKDIR)/
cp $(SDK_TOOLS) $(SDKDIR)/bin/
cp src/tools/proxy/README.md $(SDKDIR)/secproxy.md
# Every build output: the DOS targets through each directory's clean,
# then the whole object tree (host libraries, test binaries, coverage)
@ -300,3 +313,4 @@ clean:
rm -rf obj bin/host bin/test bin/system
rm -rf bin/shared bin/widgets bin/libs bin/sdk
rm -f docs/*.html
rm -rf docs/manual

5
assets/DVX Help Logo.svg Normal file
View file

@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" width="320" height="116" viewBox="0 0 320 116">
<title>DVX</title>
<path fill="#000" d="M0 0 L0 116 L107 116 A26 26 0 0 0 133 90 L133 51.62 L185.13 116 L210.98 116 L249 69.85 L286.98 116 L320 116 L320 115.73 L265.26 47.69 L303.96 0 L272.62 0 L248.97 28.69 L225.39 0 L194.03 0 L232.92 48.02 L197.6 91.3 L132.91 12.75 A35 35 0 0 0 105.89 0 Z
M25 25 L99 25 A9 9 0 0 1 108 34 L108 82 A9 9 0 0 1 99 91 L25 91 Z"/>
</svg>

After

Width:  |  Height:  |  Size: 456 B

View file

@ -46,10 +46,15 @@ Comments start with `;`. The shell loads the user's copy at startup via
|-----|---------|-------------|
| `width` | 640 | Requested horizontal resolution |
| `height` | 480 | Requested vertical resolution |
| `bpp` | 16 | Preferred color depth (8, 15, 16, 24, 32) |
| `bpp` | 16 | Preferred color depth (8, 15, 16, 32; 24-bit modes are never used) |
The system picks the closest available VESA mode. If that mode cannot
be set, or a Shift key is held while DVX starts (or `DVX /SAFE`), the
These are the built-in defaults for a missing key; the shipped file sets
1024 x 768, and Setup writes the mode it ran in. DVX takes one of the
card's VESA modes no smaller than width x height, preferring the bpp
asked for and that exact size, then 16 bpp, 15, 32, and 8; among larger
modes alike, the first in the card's list. The Control Panel's OK saves
the mode in use only when one was chosen on its Video page. If no mode
can be set, or a Shift key is held while DVX starts (or `DVX /SAFE`), the
shell starts in safe video mode (640x480, 16 bpp or the closest the card
has) and asks whether to write that mode here.
@ -59,9 +64,9 @@ has) and asks whether to write that mode here.
|-----|---------|--------|-------------|
| `wheel` | normal | normal, reversed | Scroll wheel direction |
| `wheelspeed` | 3 | 1-10 | Lines scrolled per wheel notch |
| `doubleclick` | 500 | 200-900 | Double-click speed (ms) |
| `doubleclick` | 500 | ms (the Control Panel's slider: 200-900) | Double-click speed (ms) |
| `acceleration` | medium | off, low, medium, high | Mouse acceleration |
| `speed` | 8 | 2-32 | Mickeys per 8 pixels of pointer travel (lower = faster pointer) |
| `speed` | 8 | above 0 (the Control Panel's slider: 2-32) | Mickeys per 8 pixels of pointer travel (lower = faster pointer); 0 or less keeps the mouse driver's own |
### [shell] Section
@ -118,26 +123,27 @@ Control Panel's Network page edits it.
| `address` | (none) | dotted IPv4 | Static address (dhcp = false) |
| `netmask` | (none) | dotted IPv4 | Static subnet mask (dhcp = false) |
| `gateway` | (none) | dotted IPv4 | Static default gateway (optional) |
| `dns1`, `dns2` | (none) | dotted IPv4 | Name servers; they win over the DHCP server's |
| `hostname` | DVX | text | Name sent to the DHCP server and returned by gethostname() |
| `vector` | auto | auto, 0x60-0x80 | Packet driver interrupt |
| `dns1`, `dns2` | (none) | dotted IPv4 | Name servers; they win over the DHCP server's (with dhcp = false and both empty, names cannot be looked up) |
| `hostname` | DVX | 1-63 letters, digits, hyphens | Name sent to the DHCP server and returned by gethostname() |
| `vector` | auto | auto, 0x60-0x80 | Packet driver interrupt (hex as 0x60; plain digits are decimal, so 96 is 0x60). The Network page shows any other number as one that cannot be used, and OK refuses it |
### [printer] Section
Read by the printing library (print.lib) for every print; the Control
Panel's Printer page edits the port and model, File > Page Setup (and
the Printer page's Page Setup button) the rest. A page setup that
cannot work (margins leaving no room, values out of range) is ignored
as a whole in favour of the defaults.
Panel's Printer page edits the port, file, model, baud, and handshake,
File > Page Setup (and the Printer page's Page Setup button) the rest.
A page setup that cannot work (margins leaving no room, values out of
range) is ignored as a whole, wrap, header, and footer included, in
favour of the defaults.
| Key | Default | Values | Description |
|-----|---------|--------|-------------|
| `port` | LPT1 | LPT1, LPT2, LPT3, COM1, COM2, COM3, COM4, FILE | Where printed output goes |
| `baud` | 9600 | 300, 1200, 2400, 4800, 9600, 19200, 38400 | A serial printer's speed (port COM1-COM4) |
| `handshake` | dtrdsr | none, xonxoff, rtscts, dtrdsr | How a serial printer holds the computer back: XON / XOFF characters, or its ready line on the computer's CTS or DSR (Apple's ImageWriter cable) |
| `file` | PRINTER.PRN | file path | The file used with port = FILE |
| `file` | PRINTER.PRN | file path | The file used with port = FILE; a name without a folder is in the user folder |
| `model` | text | text, epson9, epson24, laserjet, laserjet300, epson9color, epson24color, deskjet500c, deskjetcolor, postscript, postscriptcolor, imagewriter, imagewritercolor | Printer model; all but text print pictures; epson9color, epson24color, deskjet500c, deskjetcolor, postscriptcolor, and imagewritercolor in color |
| `linesPerPage` | 0 | 0, 10-200 | Lines per page; 0 = the model's usual length (66, laser 60) |
| `linesPerPage` | 0 | 0, 10-200 | Lines per page; 0 = the model's usual length (66; 60 on the LaserJets, DeskJets, and PostScript printers) |
| `columns` | 80 | 20-255 | Characters across the page |
| `marginTop`, `marginBottom` | 3 | lines | Top and bottom margins (header / footer in their middle line) |
| `marginLeft`, `marginRight` | 5 | characters | Left and right margins |

View file

@ -1,8 +1,15 @@
; DVX Configuration
;
; Video mode selection. The system picks the closest available VESA mode.
; Video mode: the size and colors DVX starts in. DVX takes one of the
; video card's modes no smaller than width x height, preferring the bpp
; asked for and that exact size, then 16 bpp, 15, 32, and 8; among larger
; modes alike, the first in the card's list. With no such mode DVX starts
; in safe video mode (640x480) and asks whether to keep it.
; Common resolutions: 640x480, 800x600, 1024x768
; Supported color depths: 8, 15, 16, 24, 32
; Color depths (bpp): 8, 15, 16, 32 (256, 32 thousand, 65 thousand, and 16
; million colors); 24-bit modes are never used
; Control Panel's Video page saves the mode chosen there; Setup writes the
; mode it ran in.
[video]
width = 1024
@ -12,10 +19,12 @@ bpp = 16
; Mouse settings.
; wheel: normal or reversed
; wheelspeed: lines per wheel notch (1-10, default 3)
; doubleclick: double-click speed in milliseconds (200-900, default 500)
; doubleclick: double-click speed in milliseconds (default 500; Control
; Panel's slider offers 200 to 900)
; acceleration: off, low, medium, high (default medium)
; speed: mouse travel needed per step of pointer movement (2-32, default 8;
; lower = faster pointer)
; speed: mouse travel needed per step of pointer movement (default 8; lower
; = faster pointer; 0 keeps the mouse driver's own; Control Panel's
; slider offers 2 to 32)
[mouse]
wheel = normal
@ -36,10 +45,13 @@ welcome = apps/kpunch/welcome/welcome.app
; Network settings (TCP/IP through a packet driver loaded before DVX).
; dhcp: true = get the address from a DHCP server; false = use address,
; netmask and gateway below
; dns1, dns2: name servers (empty = the DHCP server's)
; hostname: this computer's name on the network
; vector: packet driver interrupt, e.g. 0x60 (auto = search 0x60-0x80)
; netmask and gateway below (gateway may be empty: this network only)
; dns1, dns2: name servers (empty = the DHCP server's; with dhcp false,
; empty = none, and names cannot be looked up)
; hostname: this computer's name on the network: 1 to 63 letters, digits
; and hyphens, not starting or ending with a hyphen
; vector: the packet driver's interrupt, 0x60 to 0x80, in hex as 0x60
; (plain digits are decimal: 96 is 0x60), or auto to search 0x60-0x80
[network]
dhcp = true
@ -53,7 +65,10 @@ vector = auto
; The package server (Software's File > Package Server): Software gets
; packages and updates from it, and publishes with the account.
; server: its host name, port: its port (both empty: DVX's own server)
; server: its host name (empty: DVX's own server); port: its port
; (empty: 80). Software keeps both empty while they are DVX's own, so
; a DVX whose own server moves takes the new one. DVX has no
; encryption, so an https:// server cannot be used.
; user, password: an account there, to publish packages (empty: none).
; Software saves the password scrambled; one typed here by hand is read
; as it is and scrambled the next time Software saves the settings.
@ -64,12 +79,16 @@ port =
user =
password =
; Printer settings (Control Panel's Printer page and File > Page Setup).
; Printer settings: Control Panel's Printer page sets port, file, model,
; baud and handshake; Page Setup (File > Page Setup, or the Printer page's
; Page Setup button) the rest.
; port: LPT1, LPT2, LPT3, COM1 to COM4 (a serial printer), or FILE
; (print into the file named by file)
; baud, handshake: a serial printer's speed (300 to 38400) and how it
; holds the computer back: none, xonxoff, rtscts (its ready line on
; CTS), or dtrdsr (on DSR, as Apple's ImageWriter cable wires it)
; file: a name without a folder is in the USER folder
; baud, handshake: a serial printer's speed (300, 1200, 2400, 4800, 9600,
; 19200, or 38400; any other is 9600) and how it holds the computer
; back: none, xonxoff, rtscts (its ready line on CTS), or dtrdsr (on
; DSR, as Apple's ImageWriter cable wires it)
; model: text (any printer, text only), epson9, epson24 (Epson ESC/P
; dot matrix), laserjet (HP PCL, 150 dpi), laserjet300 (HP
; LaserJet III, DeskJet, and later; 300 dpi), epson9color,
@ -78,11 +97,15 @@ password =
; postscriptcolor, imagewriter, or imagewritercolor (Apple
; ImageWriter II); all but text print pictures, the color ones in
; color
; linesPerPage: 0 = the printer's usual page length (66, laser 60)
; linesPerPage: 0 = the printer's usual page length (66; 60 on the
; LaserJets, DeskJets, and PostScript printers)
; columns: characters across the page; margins in lines (top, bottom)
; and characters (left, right)
; header, footer: &f file name, &p page, &n pages, &d date, &t time,
; &l &c &r left / centre / right, && an ampersand
; A page setup that cannot work (linesPerPage to footer: a value out of
; range, or margins that leave no room) is ignored as a whole, and the
; defaults are used.
[printer]
port = LPT1
@ -106,12 +129,16 @@ handshake = dtrdsr
; sb (Sound Blaster family), gus (Gravis UltraSound), lpt (a
; DAC on the printer port), speaker (PC speaker) or null (no
; sound)
; rate: mixing rate in Hz (4000-48000, default 22050); the sound card may
; run slightly faster or slower
; rate: mixing rate in Hz (4000-48000, default 22050); the hardware uses
; the nearest rate it can, which can be far from it (a printer-port
; DAC at most 11048, the PC speaker 22096, a Gravis UltraSound at
; most 617400 / gusVoices)
; bits, channels: 0 = the best the sound card can do, or 8 / 16 bits and
; 1 (mono) / 2 (stereo) to save work on a slow computer
; voices: sounds mixed at once (1-32, default 16); when more are started
; the quietest stops
; voices: sounds mixed at once (1-32, default 16); with all of them
; playing, a new sound stops the quietest one only when it is
; louder, else the new one does not play (music never stops a
; sound)
; volume: master volume in percent (0-100)
; speakerPcm: true = play sampled sound on the PC speaker (takes a lot of
; the computer's time); false = tones only
@ -120,8 +147,9 @@ handshake = dtrdsr
; midi: where MIDI music plays: auto (a Gravis UltraSound's or Sound
; Blaster AWE's recorded instruments, else the synthesizer chip,
; else a built-in synthesizer), mpu401 (an external synthesizer on
; the MIDI port), fm (the chip), software (the built-in
; synthesizer) or softwave (the SoundFont played by the computer)
; the MIDI port; when the port was not found or is busy, as auto),
; fm (the chip), software (the built-in synthesizer), or softwave
; (the SoundFont played by the computer)
; midiIn: where MIDI input (a MIDI keyboard) comes from: none or mpu401
; (the MIDI port, shared with MIDI music when midi = mpu401 too)
; modules: where music modules (MOD, S3M, XM, IT) play: wavetable (a
@ -130,7 +158,8 @@ handshake = dtrdsr
; the computer) or software (always mixed by the computer)
; mpuMode: what is on the MIDI port: gm (a General MIDI synthesizer),
; mt32 (a Roland MT-32) or raw (send music unchanged)
; Optional: oplPort (default 388) and mpuPort (default 330), in hex;
; Optional: oplPort (default 388) and mpuPort (default 330), in hex; left
; empty, the default.
; midiBank = the instrument bank for MIDI music (OP2 format): its name in
; SHARED\BANKS or USER\BANKS (an add-on's as VENDOR\NAME), or a path from
; the DVX folder; not set, the bundled one. Control Panel picks it;
@ -139,15 +168,19 @@ handshake = dtrdsr
; Gravis UltraSound, a Sound Blaster AWE and softwave, named as midiBank
; is, or the path of a Gravis UltraSound's ULTRASND.INI (its patches);
; not set, KPUNCH\DVXGM.SF2 (an add-on), else the card's own.
; The Sound Blaster's port, IRQ and DMA come from the BLASTER setting (for
; example SET BLASTER=A220 I5 D1 H5 in AUTOEXEC.BAT; an AWE adds E620),
; the Gravis UltraSound's from ULTRASND (SET ULTRASND=220,1,1,11,5).
; The Sound Blaster's port, IRQ, and DMA come from the BLASTER setting
; (for example SET BLASTER=A220 I5 D1 H5 in AUTOEXEC.BAT); without it
; only a Sound Blaster 16 is found (at 220 or 240). An AWE needs BLASTER
; too, and its E (such as E620) names its music chip's port (without E,
; the A port + 400). The Gravis UltraSound's come from ULTRASND (SET
; ULTRASND=220,1,1,11,5).
; Optional: gusVoices (14-32, default 28: fewer play at a higher rate);
; wssPort (530, 604, E80 or F40, hex), wssIrq (7, 9, 10 or 11, default 7)
; and wssDma (0, 1 or 3, default 1) for a Windows Sound System card;
; lptDac (auto, covox, disney or stereo; auto finds a Disney Sound Source
; or a Stereo-on-1, a Covox must be named) and lptPort (hex, default
; LPT1) for a DAC on the printer port.
; wssPort (hex: only that port is tried; not set, 530, 604, E80, and F40
; are tried in that order), wssIrq (7, 9, 10, or 11, default 7), and
; wssDma (0, 1, or 3, default 1) for a Windows Sound System card; lptDac
; (auto, covox, disney, or stereo; auto finds a Disney Sound Source or a
; Stereo-on-1, a Covox must be named) and lptPort (hex, default LPT1)
; for a DAC on the printer port.
[audio]
driver = auto
@ -164,9 +197,10 @@ modules = wavetable
mpuMode = gm
; Desktop sounds (Control Panel's Sounds page): the sound file (WAV or VOC)
; played for each event; empty = no sound. A name alone is a file in the
; sound folders (your own in USER\SOUNDS first, then DVX's in
; SHARED\SOUNDS); a name with a folder in it is that file.
; played for each event; empty, or the key missing, = no sound. A name
; alone (or an add-on's, as VENDOR\NAME) is a file in the sound folders
; (your own in USER\SOUNDS first, then DVX's in SHARED\SOUNDS); any
; other name with a folder in it is that file.
; default: the default beep (also message boxes without an icon)
; startup, exit: DVX starting and ending
; error, warning, question, information: message boxes of that kind

File diff suppressed because it is too large Load diff

View file

@ -2,7 +2,7 @@
<html>
<head>
<meta charset="utf-8">
<title>DVX Help Viewer</title>
<title>DVX Help</title>
<style>
body { font-family: sans-serif; margin: 0; padding: 0; display: flex; }
nav { width: 250px; min-width: 250px; background: #f0f0f0; padding: 16px;
@ -29,7 +29,7 @@ img { max-width: 100%; }
<nav>
<h3>Contents</h3>
<ul>
<li><a href="#help.overview">DVX Help Viewer</a></li>
<li><a href="#help.overview">DVX Help</a></li>
<li><strong>Writing Help Files (for Developers)</strong>
<ul>
<li><a href="#help.format">Help Source Format</a></li>
@ -47,7 +47,6 @@ img { max-width: 100%; }
<li><a href="#help.overview">DVX Help</a></li>
<li><a href="#help.compiler">dvxhlpc</a></li>
<li><a href="#help.integration">F1</a></li>
<li><a href="#help.overview">Help Viewer</a></li>
<li><a href="#help.integration">helpFile</a></li>
<li><a href="#help.integration">helpTopic</a></li>
<li><a href="#help.integration">HelpView</a></li>
@ -57,13 +56,13 @@ img { max-width: 100%; }
</nav>
<main>
<div class="topic" id="help.overview">
<h1>DVX Help Viewer</h1>
<h1>DVX Help</h1>
<p>DVX Help shows help pages. The list on the left is the table of contents, the page you are reading is on the right, and underlined words are links to other pages. You can also look things up in the Index or with Search.</p>
<blockquote><strong>Tip:</strong> New to DVX? Click the Program Manager window and press F1, or choose DVX Help from the Program Manager's Help menu, to open the DVX user guide. It explains how to start programs, work with windows, menus, and dialog boxes, and everything else that works the same in every program. Each program's own commands are explained in that program's help: press F1 while you work in it.</blockquote>
<blockquote><strong>Tip:</strong> New to DVX? Choose DVX Help from the Program Manager's Help menu to open the DVX user guide. It explains how to start programs, work with windows, menus, and dialog boxes, and everything else that works the same in every program. Each program's own commands are explained in that program's help: press F1 while you work in it (in the Program Manager, F1 opens the Program Manager's own help).</blockquote>
<h2>Opening Help</h2>
<p>Press F1 from any DVX application to open context-sensitive help. Applications can register their own help file and topic so F1 opens the relevant page.</p>
<p>If the help viewer is already running, F1 reuses its window: the requested page is shown there (loading the other application's help file if needed, which starts a fresh Back/Forward history) and the window is brought to the front. The Help menu of the Program Manager does the same. F1 pressed in the help viewer itself shows this help about the viewer. While the viewer's Index or Search dialog is open, the page asked for with F1 is shown once the dialog closes.</p>
<p>You can also launch the help viewer from an application's Help menu, or by clicking the DVX Help icon in the Program Manager.</p>
<p>If DVX Help is already running, F1 reuses its window: the requested page is shown there (loading the other application's help file if needed, which starts a fresh Back/Forward history) and the window is brought to the front. The Help menu of the Program Manager does the same. F1 pressed in DVX Help itself shows this help about DVX Help. While DVX Help's Index or Search dialog is open, the page asked for with F1 is shown once the dialog closes.</p>
<p>You can also start DVX Help from an application's Help menu, or by clicking the DVX Help icon in the Program Manager.</p>
<h2>Navigation</h2>
<ul>
<li>Click a topic in the tree on the left to display it</li>
@ -79,7 +78,7 @@ img { max-width: 100%; }
<pre> Alt+Left Back
Alt+Right Forward
Ctrl+F Search
Escape Close viewer</pre>
Escape Close DVX Help</pre>
</div>
<div class="topic" id="help.format">
<h1>Help Source Format (.dhs)</h1>
@ -179,7 +178,7 @@ This is a warning message.
<pre><code>dvxhlpc -o dvxhelp.hlp docs/src/overview.dhs widgets/*/*.dhs</code></pre>
<p>New widgets or features just drop a .dhs file in their source directory and it appears in the help on the next build.</p>
<h2>HTML Output</h2>
<p>The --html flag produces a single self-contained HTML file with a sidebar table of contents, styled headings, lists, code blocks, notes, and embedded images (base64 data URIs). This is useful for viewing documentation on the host machine without running the DOS help viewer.</p>
<p>The --html flag produces a single self-contained HTML file with a sidebar table of contents, styled headings, lists, code blocks, notes, and embedded images (base64 data URIs). This is useful for viewing documentation on the host machine without running DVX Help.</p>
</div>
<div class="topic" id="help.integration">
<h1>Application Integration</h1>
@ -189,13 +188,13 @@ This is a warning message.
<h2>C Applications</h2>
<p>Name the help file after the application (myapp.hlp beside myapp.app) and F1 works with no code: before appMain runs, DVX sets ctx-&gt;helpFile to that file when it exists. A help file with any other name or location is set in appMain instead:</p>
<pre><code>snprintf(ctx-&gt;helpFile, sizeof(ctx-&gt;helpFile), &quot;%s&quot; DVX_PATH_SEP &quot;%s&quot;, ctx-&gt;appDir, &quot;other.hlp&quot;);</code></pre>
<p>To open it from a Help menu item, call shellOpenHelp. It reuses a running help viewer (and brings it to the front) instead of starting another one:</p>
<p>To open it from a Help menu item, call shellOpenHelp. It reuses a running DVX Help (and brings it to the front) instead of starting another one:</p>
<pre><code>shellOpenHelp(ctx-&gt;shellCtx, ctx-&gt;helpFile);</code></pre>
<p>The argument is &quot;helpfile [topicId]&quot;, so a menu item can also open a particular topic. An empty help file name opens the DVX user guide, as F1 does for an application without a help file.</p>
<h2>Context-Sensitive Topics</h2>
<p>Update helpTopic as the user moves around your application, or set onHelpQuery to a function that fills it in when F1 is pressed:</p>
<pre><code>snprintf(ctx-&gt;helpTopic, sizeof(ctx-&gt;helpTopic), &quot;settings.video&quot;);</code></pre>
<p>When the user presses F1, the help viewer opens your help file at that topic.</p>
<p>When the user presses F1, DVX Help opens your help file at that topic.</p>
<h2>DVX BASIC Applications</h2>
<p>A DVX BASIC program gets its help file from its project: set Help File in Project Properties. The file is copied next to the compiled program, and F1 opens it at the HelpTopic of the focused control, or else of the form. As for C applications, a myapp.hlp next to myapp.app is used when the project names no help file. To open it from a Help menu item, add help.bas to the project and call HelpView with the file name; a name without a folder is looked for next to the program:</p>
<pre><code>SUB mnuHelpContents_Click

File diff suppressed because it is too large Load diff

28079
docs/manual/dvxManual.html Normal file

File diff suppressed because it is too large Load diff

772951
docs/manual/dvxManual.pdf Normal file

File diff suppressed because one or more lines are too long

BIN
docs/manual/images/aboutDesktop.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
docs/manual/images/adAvailable.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
docs/manual/images/adInstalled.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
docs/manual/images/adPlan.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
docs/manual/images/adPublished.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
docs/manual/images/adRemoveNeeds.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
docs/manual/images/adSetupParts.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
docs/manual/images/adUpdatePlan.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
docs/manual/images/adUpdates.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
docs/manual/images/cpColors.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
docs/manual/images/cpDesktop.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
docs/manual/images/cpFileTypes.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
docs/manual/images/cpGameControllers.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
docs/manual/images/cpMouse.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
docs/manual/images/cpNetwork.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
docs/manual/images/cpPrinter.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
docs/manual/images/cpSounds.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
docs/manual/images/cpVideo.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
docs/manual/images/dtDesktop.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
docs/manual/images/dtDriveNotReady.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
docs/manual/images/dtDropDown.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
docs/manual/images/dtMenu.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
docs/manual/images/dtOpen.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
docs/manual/images/dtSaveChanges.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
docs/manual/images/dtTaskManager.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
docs/manual/images/dtWindow.png (Stored with Git LFS) Normal file

Binary file not shown.

View file

@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" width="900" height="810" viewBox="0 0 900 810">
<title>DVX</title>
<rect width="900" height="810" fill="#000"/>
<path fill="#fff" transform="translate(189 308) scale(1.66875)" d="M0 0 L0 116 L107 116 A26 26 0 0 0 133 90 L133 51.62 L185.13 116 L210.98 116 L249 69.85 L286.98 116 L320 116 L320 115.73 L265.26 47.69 L303.96 0 L272.62 0 L248.97 28.69 L225.39 0 L194.03 0 L232.92 48.02 L197.6 91.3 L132.91 12.75 A35 35 0 0 0 105.89 0 Z M25 25 L99 25 A9 9 0 0 1 108 34 L108 82 A9 9 0 0 1 99 91 L25 91 Z"/>
</svg>

After

Width:  |  Height:  |  Size: 547 B

BIN
docs/manual/images/instCopy.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
docs/manual/images/instDesktop.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
docs/manual/images/instDisk.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
docs/manual/images/instDone.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
docs/manual/images/instFolder.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
docs/manual/images/instLicence.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
docs/manual/images/instRemove.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
docs/manual/images/instSoftware.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
docs/manual/images/instStart.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
docs/manual/images/instTour.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
docs/manual/images/instUpgradeFolder.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
docs/manual/images/instUpgradeStart.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
docs/manual/images/instUpgradeWhat.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
docs/manual/images/instWelcome.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
docs/manual/images/instWhat.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
docs/manual/images/netControlPanel.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
docs/manual/images/pgBasicDemo.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
docs/manual/images/pgClock.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
docs/manual/images/pgDvxDemo.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
docs/manual/images/pgFileManager.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
docs/manual/images/pgHelp.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
docs/manual/images/pgMediaPlayer.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
docs/manual/images/pgNotepad.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
docs/manual/images/pgSoundRecorder.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
docs/manual/images/pgWelcome.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
docs/manual/images/pgWelcomeTour.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
docs/manual/images/pmWindow.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
docs/manual/images/tmSecureLink.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
docs/manual/images/tmWindow.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
docs/manual/images/trDriveNotReady.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
docs/manual/images/trSafeVideo.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
docs/manual/images/trSaveChanges.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
docs/manual/images/trTaskManager.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
docs/manual/images/trWrongDisk.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
screenshots/86box/addons-addon-no.png (Stored with Git LFS)

Binary file not shown.

BIN
screenshots/86box/apps-basdemo.png (Stored with Git LFS)

Binary file not shown.

BIN
screenshots/86box/apps-clock.png (Stored with Git LFS)

Binary file not shown.

BIN
screenshots/86box/apps-desktop.png (Stored with Git LFS)

Binary file not shown.

BIN
screenshots/86box/apps-dvxdemo.png (Stored with Git LFS)

Binary file not shown.

BIN
screenshots/86box/apps-dvxhelp.png (Stored with Git LFS)

Binary file not shown.

BIN
screenshots/86box/apps-iconed.png (Stored with Git LFS)

Binary file not shown.

BIN
screenshots/86box/apps-imgview.png (Stored with Git LFS)

Binary file not shown.

BIN
screenshots/86box/apps-resedit.png (Stored with Git LFS)

Binary file not shown.

BIN
screenshots/86box/banked-bk-back.png (Stored with Git LFS)

Binary file not shown.

BIN
screenshots/86box/banked-bk-desk.png (Stored with Git LFS)

Binary file not shown.

BIN
screenshots/86box/banked-bk-drag.png (Stored with Git LFS)

Binary file not shown.

BIN
screenshots/86box/boot-boot.png (Stored with Git LFS)

Binary file not shown.

BIN
screenshots/86box/cpanel-cp-print.png (Stored with Git LFS)

Binary file not shown.

BIN
screenshots/86box/cpanel-cp-types.png (Stored with Git LFS)

Binary file not shown.

BIN
screenshots/86box/cpanel-cp-video.png (Stored with Git LFS)

Binary file not shown.

BIN
screenshots/86box/crash-kept.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
screenshots/86box/crash-taskcr.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
screenshots/86box/dosprog-dp-after.png (Stored with Git LFS)

Binary file not shown.

BIN
screenshots/86box/dosprog-dp-ask.png (Stored with Git LFS)

Binary file not shown.

BIN
screenshots/86box/dosprog-dp-back.png (Stored with Git LFS)

Binary file not shown.

BIN
screenshots/86box/f1-h-cpanel.png (Stored with Git LFS)

Binary file not shown.

BIN
screenshots/86box/f1-h-format.png (Stored with Git LFS)

Binary file not shown.

BIN
screenshots/86box/f1-h-helped.png (Stored with Git LFS)

Binary file not shown.

BIN
screenshots/86box/f1-h-imgvie.png (Stored with Git LFS)

Binary file not shown.

BIN
screenshots/86box/f1-h-player.png (Stored with Git LFS)

Binary file not shown.

BIN
screenshots/86box/fonts-basic.png (Stored with Git LFS)

Binary file not shown.

BIN
screenshots/86box/fonts8-basic.png (Stored with Git LFS)

Binary file not shown.

BIN
screenshots/86box/fullmode-fm-desk.png (Stored with Git LFS)

Binary file not shown.

BIN
screenshots/86box/fullscr-fs-desk.png (Stored with Git LFS)

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show more