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)))) LIBS = $(sort $(notdir $(patsubst %/Makefile,%,$(wildcard src/libs/kpunch/*/Makefile))))
CORE_LIBS = libdvx libtasks 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 # Every build ends by making the release media in dist/ (a second or
# two), so dist/ always holds the latest DVX. # two), so dist/ always holds the latest DVX.
@ -104,7 +104,7 @@ include src/test/suites.mk
test: apps test: apps
$(MAKE) test-modules $(MAKE) test-modules
$(MAKE) -C $(DVXBASIC_DIR) tests $(MAKE) -C $(DVXBASIC_DIR) tests
$(MAKE) -C src/tools/proxy $(MAKE) proxy
$(MAKE) test-samples $(MAKE) test-samples
$(MAKE) test-host $(MAKE) test-host
src/test/tools/runTools.sh src/test/tools/runTools.sh
@ -176,6 +176,17 @@ test-qa:
test-fuzz: test-fuzz:
$(MAKE) -C src/test/fuzz run $(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 HLPC = bin/host/dvxhlpc
HELP_FILES = src/tools/helpFiles.sh 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) # 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. # live in src/sdk; its bin/ holds the host tools a project build runs.
SDK_SRC = src/sdk 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), # The host tools come from tools (dvxres, dvxhlpc, mkfont), apps (bascomp),
# and installer (dvxpkg). # installer (dvxpkg), and proxy (secproxy, the secure-link proxy for the
deploy-sdk: tools apps installer # other end of Terminal's secure link, with its instructions).
deploy-sdk: tools apps installer proxy
@echo "Building SDK..." @echo "Building SDK..."
@# Start from an empty tree so a header dropped from the lists goes away. @# Start from an empty tree so a header dropped from the lists goes away.
rm -rf $(SDKDIR) 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 $(SDK_SRC)/README.TXT $(SDK_SRC)/sdk.mk $(SDK_SRC)/newProject.sh $(SDKDIR)/
cp -R $(SDK_SRC)/templates $(SDKDIR)/ cp -R $(SDK_SRC)/templates $(SDKDIR)/
cp $(SDK_TOOLS) $(SDKDIR)/bin/ 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, # Every build output: the DOS targets through each directory's clean,
# then the whole object tree (host libraries, test binaries, coverage) # 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 obj bin/host bin/test bin/system
rm -rf bin/shared bin/widgets bin/libs bin/sdk rm -rf bin/shared bin/widgets bin/libs bin/sdk
rm -f docs/*.html 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 | | `width` | 640 | Requested horizontal resolution |
| `height` | 480 | Requested vertical 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 These are the built-in defaults for a missing key; the shipped file sets
be set, or a Shift key is held while DVX starts (or `DVX /SAFE`), the 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 shell starts in safe video mode (640x480, 16 bpp or the closest the card
has) and asks whether to write that mode here. 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 | | `wheel` | normal | normal, reversed | Scroll wheel direction |
| `wheelspeed` | 3 | 1-10 | Lines scrolled per wheel notch | | `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 | | `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 ### [shell] Section
@ -118,26 +123,27 @@ Control Panel's Network page edits it.
| `address` | (none) | dotted IPv4 | Static address (dhcp = false) | | `address` | (none) | dotted IPv4 | Static address (dhcp = false) |
| `netmask` | (none) | dotted IPv4 | Static subnet mask (dhcp = false) | | `netmask` | (none) | dotted IPv4 | Static subnet mask (dhcp = false) |
| `gateway` | (none) | dotted IPv4 | Static default gateway (optional) | | `gateway` | (none) | dotted IPv4 | Static default gateway (optional) |
| `dns1`, `dns2` | (none) | dotted IPv4 | Name servers; they win over the DHCP server's | | `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 | text | Name sent to the DHCP server and returned by gethostname() | | `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 | | `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 ### [printer] Section
Read by the printing library (print.lib) for every print; the Control 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 Panel's Printer page edits the port, file, model, baud, and handshake,
the Printer page's Page Setup button) the rest. A page setup that File > Page Setup (and the Printer page's Page Setup button) the rest.
cannot work (margins leaving no room, values out of range) is ignored A page setup that cannot work (margins leaving no room, values out of
as a whole in favour of the defaults. range) is ignored as a whole, wrap, header, and footer included, in
favour of the defaults.
| Key | Default | Values | Description | | Key | Default | Values | Description |
|-----|---------|--------|-------------| |-----|---------|--------|-------------|
| `port` | LPT1 | LPT1, LPT2, LPT3, COM1, COM2, COM3, COM4, FILE | Where printed output goes | | `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) | | `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) | | `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 | | `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 | | `columns` | 80 | 20-255 | Characters across the page |
| `marginTop`, `marginBottom` | 3 | lines | Top and bottom margins (header / footer in their middle line) | | `marginTop`, `marginBottom` | 3 | lines | Top and bottom margins (header / footer in their middle line) |
| `marginLeft`, `marginRight` | 5 | characters | Left and right margins | | `marginLeft`, `marginRight` | 5 | characters | Left and right margins |

View file

@ -1,8 +1,15 @@
; DVX Configuration ; 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 ; 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] [video]
width = 1024 width = 1024
@ -12,10 +19,12 @@ bpp = 16
; Mouse settings. ; Mouse settings.
; wheel: normal or reversed ; wheel: normal or reversed
; wheelspeed: lines per wheel notch (1-10, default 3) ; 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) ; acceleration: off, low, medium, high (default medium)
; speed: mouse travel needed per step of pointer movement (2-32, default 8; ; speed: mouse travel needed per step of pointer movement (default 8; lower
; lower = faster pointer) ; = faster pointer; 0 keeps the mouse driver's own; Control Panel's
; slider offers 2 to 32)
[mouse] [mouse]
wheel = normal wheel = normal
@ -36,10 +45,13 @@ welcome = apps/kpunch/welcome/welcome.app
; Network settings (TCP/IP through a packet driver loaded before DVX). ; Network settings (TCP/IP through a packet driver loaded before DVX).
; dhcp: true = get the address from a DHCP server; false = use address, ; dhcp: true = get the address from a DHCP server; false = use address,
; netmask and gateway below ; netmask and gateway below (gateway may be empty: this network only)
; dns1, dns2: name servers (empty = the DHCP server's) ; dns1, dns2: name servers (empty = the DHCP server's; with dhcp false,
; hostname: this computer's name on the network ; empty = none, and names cannot be looked up)
; vector: packet driver interrupt, e.g. 0x60 (auto = search 0x60-0x80) ; 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] [network]
dhcp = true dhcp = true
@ -53,7 +65,10 @@ vector = auto
; The package server (Software's File > Package Server): Software gets ; The package server (Software's File > Package Server): Software gets
; packages and updates from it, and publishes with the account. ; 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). ; user, password: an account there, to publish packages (empty: none).
; Software saves the password scrambled; one typed here by hand is read ; Software saves the password scrambled; one typed here by hand is read
; as it is and scrambled the next time Software saves the settings. ; as it is and scrambled the next time Software saves the settings.
@ -64,12 +79,16 @@ port =
user = user =
password = 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 ; port: LPT1, LPT2, LPT3, COM1 to COM4 (a serial printer), or FILE
; (print into the file named by file) ; (print into the file named by file)
; baud, handshake: a serial printer's speed (300 to 38400) and how it ; file: a name without a folder is in the USER folder
; holds the computer back: none, xonxoff, rtscts (its ready line on ; baud, handshake: a serial printer's speed (300, 1200, 2400, 4800, 9600,
; CTS), or dtrdsr (on DSR, as Apple's ImageWriter cable wires it) ; 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 ; model: text (any printer, text only), epson9, epson24 (Epson ESC/P
; dot matrix), laserjet (HP PCL, 150 dpi), laserjet300 (HP ; dot matrix), laserjet (HP PCL, 150 dpi), laserjet300 (HP
; LaserJet III, DeskJet, and later; 300 dpi), epson9color, ; LaserJet III, DeskJet, and later; 300 dpi), epson9color,
@ -78,11 +97,15 @@ password =
; postscriptcolor, imagewriter, or imagewritercolor (Apple ; postscriptcolor, imagewriter, or imagewritercolor (Apple
; ImageWriter II); all but text print pictures, the color ones in ; ImageWriter II); all but text print pictures, the color ones in
; color ; 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) ; columns: characters across the page; margins in lines (top, bottom)
; and characters (left, right) ; and characters (left, right)
; header, footer: &f file name, &p page, &n pages, &d date, &t time, ; header, footer: &f file name, &p page, &n pages, &d date, &t time,
; &l &c &r left / centre / right, && an ampersand ; &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] [printer]
port = LPT1 port = LPT1
@ -106,12 +129,16 @@ handshake = dtrdsr
; sb (Sound Blaster family), gus (Gravis UltraSound), lpt (a ; sb (Sound Blaster family), gus (Gravis UltraSound), lpt (a
; DAC on the printer port), speaker (PC speaker) or null (no ; DAC on the printer port), speaker (PC speaker) or null (no
; sound) ; sound)
; rate: mixing rate in Hz (4000-48000, default 22050); the sound card may ; rate: mixing rate in Hz (4000-48000, default 22050); the hardware uses
; run slightly faster or slower ; 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 ; 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 ; 1 (mono) / 2 (stereo) to save work on a slow computer
; voices: sounds mixed at once (1-32, default 16); when more are started ; voices: sounds mixed at once (1-32, default 16); with all of them
; the quietest stops ; 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) ; volume: master volume in percent (0-100)
; speakerPcm: true = play sampled sound on the PC speaker (takes a lot of ; speakerPcm: true = play sampled sound on the PC speaker (takes a lot of
; the computer's time); false = tones only ; 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 ; midi: where MIDI music plays: auto (a Gravis UltraSound's or Sound
; Blaster AWE's recorded instruments, else the synthesizer chip, ; Blaster AWE's recorded instruments, else the synthesizer chip,
; else a built-in synthesizer), mpu401 (an external synthesizer on ; else a built-in synthesizer), mpu401 (an external synthesizer on
; the MIDI port), fm (the chip), software (the built-in ; the MIDI port; when the port was not found or is busy, as auto),
; synthesizer) or softwave (the SoundFont played by the computer) ; 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 ; midiIn: where MIDI input (a MIDI keyboard) comes from: none or mpu401
; (the MIDI port, shared with MIDI music when midi = mpu401 too) ; (the MIDI port, shared with MIDI music when midi = mpu401 too)
; modules: where music modules (MOD, S3M, XM, IT) play: wavetable (a ; 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) ; the computer) or software (always mixed by the computer)
; mpuMode: what is on the MIDI port: gm (a General MIDI synthesizer), ; mpuMode: what is on the MIDI port: gm (a General MIDI synthesizer),
; mt32 (a Roland MT-32) or raw (send music unchanged) ; 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 ; 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 ; 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; ; 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 ; Gravis UltraSound, a Sound Blaster AWE and softwave, named as midiBank
; is, or the path of a Gravis UltraSound's ULTRASND.INI (its patches); ; 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. ; 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 ; The Sound Blaster's port, IRQ, and DMA come from the BLASTER setting
; example SET BLASTER=A220 I5 D1 H5 in AUTOEXEC.BAT; an AWE adds E620), ; (for example SET BLASTER=A220 I5 D1 H5 in AUTOEXEC.BAT); without it
; the Gravis UltraSound's from ULTRASND (SET ULTRASND=220,1,1,11,5). ; 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); ; 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) ; wssPort (hex: only that port is tried; not set, 530, 604, E80, and F40
; and wssDma (0, 1 or 3, default 1) for a Windows Sound System card; ; are tried in that order), wssIrq (7, 9, 10, or 11, default 7), and
; lptDac (auto, covox, disney or stereo; auto finds a Disney Sound Source ; wssDma (0, 1, or 3, default 1) for a Windows Sound System card; lptDac
; or a Stereo-on-1, a Covox must be named) and lptPort (hex, default ; (auto, covox, disney, or stereo; auto finds a Disney Sound Source or a
; LPT1) for a DAC on the printer port. ; Stereo-on-1, a Covox must be named) and lptPort (hex, default LPT1)
; for a DAC on the printer port.
[audio] [audio]
driver = auto driver = auto
@ -164,9 +197,10 @@ modules = wavetable
mpuMode = gm mpuMode = gm
; Desktop sounds (Control Panel's Sounds page): the sound file (WAV or VOC) ; 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 ; played for each event; empty, or the key missing, = no sound. A name
; sound folders (your own in USER\SOUNDS first, then DVX's in ; alone (or an add-on's, as VENDOR\NAME) is a file in the sound folders
; SHARED\SOUNDS); a name with a folder in it is that file. ; (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) ; default: the default beep (also message boxes without an icon)
; startup, exit: DVX starting and ending ; startup, exit: DVX starting and ending
; error, warning, question, information: message boxes of that kind ; 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> <html>
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<title>DVX Help Viewer</title> <title>DVX Help</title>
<style> <style>
body { font-family: sans-serif; margin: 0; padding: 0; display: flex; } body { font-family: sans-serif; margin: 0; padding: 0; display: flex; }
nav { width: 250px; min-width: 250px; background: #f0f0f0; padding: 16px; nav { width: 250px; min-width: 250px; background: #f0f0f0; padding: 16px;
@ -29,7 +29,7 @@ img { max-width: 100%; }
<nav> <nav>
<h3>Contents</h3> <h3>Contents</h3>
<ul> <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> <li><strong>Writing Help Files (for Developers)</strong>
<ul> <ul>
<li><a href="#help.format">Help Source Format</a></li> <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.overview">DVX Help</a></li>
<li><a href="#help.compiler">dvxhlpc</a></li> <li><a href="#help.compiler">dvxhlpc</a></li>
<li><a href="#help.integration">F1</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">helpFile</a></li>
<li><a href="#help.integration">helpTopic</a></li> <li><a href="#help.integration">helpTopic</a></li>
<li><a href="#help.integration">HelpView</a></li> <li><a href="#help.integration">HelpView</a></li>
@ -57,13 +56,13 @@ img { max-width: 100%; }
</nav> </nav>
<main> <main>
<div class="topic" id="help.overview"> <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> <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> <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>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>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 launch the help viewer from an application's Help menu, or by clicking the DVX Help icon in the Program Manager.</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> <h2>Navigation</h2>
<ul> <ul>
<li>Click a topic in the tree on the left to display it</li> <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 <pre> Alt+Left Back
Alt+Right Forward Alt+Right Forward
Ctrl+F Search Ctrl+F Search
Escape Close viewer</pre> Escape Close DVX Help</pre>
</div> </div>
<div class="topic" id="help.format"> <div class="topic" id="help.format">
<h1>Help Source Format (.dhs)</h1> <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> <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> <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> <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>
<div class="topic" id="help.integration"> <div class="topic" id="help.integration">
<h1>Application Integration</h1> <h1>Application Integration</h1>
@ -189,13 +188,13 @@ This is a warning message.
<h2>C Applications</h2> <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> <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> <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> <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> <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> <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> <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> <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> <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> <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 <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