From bac20185383ffbdd80330b015e22925ae811636d Mon Sep 17 00:00:00 2001 From: Scott Duensing Date: Tue, 29 Sep 2026 17:03:51 -0500 Subject: [PATCH] New installer. Game features! --- .gitignore | 1 + Makefile | 24 +- README.md | 18 +- config/dvx.ini | 55 + docs/dvx_basic_reference.html | 199 +- docs/dvx_system_reference.html | 890 +- installToolchain.sh | 31 +- src/apps/kpunch/Makefile | 16 +- src/apps/kpunch/README.md | 3 - src/apps/kpunch/cpanel/cpJoystick.c | 746 ++ src/apps/kpunch/cpanel/cpJoystick.h | 49 + src/apps/kpunch/cpanel/cpSounds.c | 457 + src/apps/kpunch/cpanel/cpSounds.h | 49 + src/apps/kpunch/cpanel/cpanel.c | 17 +- src/apps/kpunch/cpanel/cpanel.dhs | 95 +- .../kpunch/dvxbasic/compiler/basKeywords.h | 4 + src/apps/kpunch/dvxbasic/compiler/lexer.h | 4 + src/apps/kpunch/dvxbasic/compiler/opcodes.h | 15 + src/apps/kpunch/dvxbasic/compiler/parser.c | 54 + src/apps/kpunch/dvxbasic/formrt/formrt.c | 148 + src/apps/kpunch/dvxbasic/formrt/formrt.h | 6 + src/apps/kpunch/dvxbasic/ide/ideMain.c | 8 + src/apps/kpunch/dvxbasic/ideguide.dhs | 13 + src/apps/kpunch/dvxbasic/langref.dhs | 262 +- src/apps/kpunch/dvxbasic/runtime/serialize.c | 2 +- src/apps/kpunch/dvxbasic/runtime/vm.c | 160 + src/apps/kpunch/dvxbasic/runtime/vm.h | 41 + src/apps/kpunch/dvxbasic/test_compiler.c | 15 + src/apps/kpunch/dvxbasic/test_suite.c | 156 +- src/apps/kpunch/progman/userHelp.dhs | 25 +- src/apps/kpunch/setup/dosroot/install.bat | 12 - src/apps/kpunch/setup/icon32.bmp | 3 - src/apps/kpunch/setup/setup.c | 456 - src/apps/kpunch/setup/setup.dhs | 102 - src/apps/kpunch/setup/setup.res | 7 - src/apps/kpunch/setup/setupCore.c | 278 - src/apps/kpunch/setup/setupCore.h | 96 - src/common.mk | 16 + src/include/basic/game.bas | 61 + src/include/basic/joystick.bas | 70 + src/include/basic/music.bas | 105 + src/include/basic/sound.bas | 73 + src/installer/Makefile | 137 + src/installer/README.TXT | 77 + src/installer/mkDist.sh | 153 + src/installer/pkgBuild.c | 378 + src/installer/pkgBuild.h | 55 + src/installer/pkgFormat.c | 236 + src/installer/pkgFormat.h | 120 + src/installer/pkgRead.c | 798 ++ src/installer/pkgRead.h | 131 + src/installer/pkgTool.c | 136 + src/installer/setup.c | 784 ++ src/installer/setupCore.c | 534 ++ src/installer/setupCore.h | 119 + src/installer/thirdparty/miniz/DVX-VERSION.md | 34 + src/installer/thirdparty/miniz/LICENSE | 22 + src/installer/thirdparty/miniz/miniz.c | 7922 +++++++++++++++++ src/installer/thirdparty/miniz/miniz.h | 1510 ++++ src/libs/kpunch/audio/Makefile | 80 + src/libs/kpunch/audio/audio.c | 1761 ++++ src/libs/kpunch/audio/audio.dep | 3 + src/libs/kpunch/audio/audio.dhs | 229 + src/libs/kpunch/audio/audio.h | 504 ++ src/libs/kpunch/audio/audioBas.c | 180 + src/libs/kpunch/audio/audioDesk.c | 181 + src/libs/kpunch/audio/audioDrv.h | 232 + src/libs/kpunch/audio/audioInt.h | 203 + src/libs/kpunch/audio/audioLoad.c | 451 + src/libs/kpunch/audio/audioMix.c | 526 ++ src/libs/kpunch/audio/audioShell.c | 51 + src/libs/kpunch/audio/audioSynth.c | 567 ++ src/libs/kpunch/audio/drivers/mpu401/mpuDrv.c | 182 + src/libs/kpunch/audio/drivers/null/nullDrv.c | 72 + src/libs/kpunch/audio/drivers/opl/oplDrv.c | 214 + src/libs/kpunch/audio/drivers/sb/sbCalc.c | 218 + src/libs/kpunch/audio/drivers/sb/sbCalc.h | 90 + src/libs/kpunch/audio/drivers/sb/sbDrv.c | 773 ++ .../kpunch/audio/drivers/speaker/spkDrv.c | 202 + src/libs/kpunch/dvxshell/dvxshell.dhs | 3 +- src/libs/kpunch/dvxshell/shellApp.c | 51 +- src/libs/kpunch/dvxshell/shellMain.c | 109 +- src/libs/kpunch/game/Makefile | 64 + src/libs/kpunch/game/game.c | 182 + src/libs/kpunch/game/game.dep | 2 + src/libs/kpunch/game/game.dhs | 94 + src/libs/kpunch/game/game.h | 124 + src/libs/kpunch/game/gameBas.c | 61 + src/libs/kpunch/joystick/Makefile | 73 + .../kpunch/joystick/drivers/joykeys/joyKeys.c | 142 + .../kpunch/joystick/drivers/joyport/joyPort.c | 327 + .../kpunch/joystick/drivers/joyport/joyPort.h | 88 + .../joystick/drivers/joyport/joyPortDos.c | 70 + src/libs/kpunch/joystick/joyBas.c | 278 + src/libs/kpunch/joystick/joyInt.h | 38 + src/libs/kpunch/joystick/joyShell.c | 65 + src/libs/kpunch/joystick/joystick.c | 1190 +++ src/libs/kpunch/joystick/joystick.dep | 2 + src/libs/kpunch/joystick/joystick.dhs | 156 + src/libs/kpunch/joystick/joystick.h | 365 + src/libs/kpunch/libdvx/Makefile | 4 +- src/libs/kpunch/libdvx/apiref.dhs | 282 +- src/libs/kpunch/libdvx/arch.dhs | 6 +- src/libs/kpunch/libdvx/dvxApp.c | 241 +- src/libs/kpunch/libdvx/dvxApp.h | 40 + src/libs/kpunch/libdvx/dvxDialog.c | 23 + src/libs/kpunch/libdvx/dvxDriver.c | 174 + src/libs/kpunch/libdvx/dvxDrv.h | 97 + src/libs/kpunch/libdvx/dvxPrefs.c | 187 +- src/libs/kpunch/libdvx/dvxTypes.h | 56 +- src/libs/kpunch/libdvx/games.dhs | 396 + src/libs/kpunch/libdvx/platform/dvxPlat.h | 208 +- src/libs/kpunch/libdvx/platform/dvxPlatHost.h | 25 +- src/libs/kpunch/libdvx/platform/dvxPlatIsr.h | 315 + .../kpunch/libdvx/platform/dvxPlatformDos.c | 574 +- .../kpunch/libdvx/platform/dvxPlatformHost.c | 202 +- .../kpunch/libdvx/platform/dvxPlatformIrq.c | 267 + .../kpunch/libdvx/platform/dvxPlatformUtil.c | 148 +- src/libs/kpunch/libdvx/sdkGuide.dhs | 8 +- src/libs/kpunch/music/Makefile | 84 + src/libs/kpunch/music/music.c | 1009 +++ src/libs/kpunch/music/music.dep | 4 + src/libs/kpunch/music/music.dhs | 167 + src/libs/kpunch/music/music.h | 300 + src/libs/kpunch/music/musicBas.c | 283 + src/libs/kpunch/music/musicFm.c | 669 ++ src/libs/kpunch/music/musicInt.h | 535 ++ src/libs/kpunch/music/musicMml.c | 424 + src/libs/kpunch/music/musicMmlPlay.c | 433 + src/libs/kpunch/music/musicMpu.c | 361 + src/libs/kpunch/music/musicOp2.c | 108 + src/libs/kpunch/music/musicSeq.c | 235 + src/libs/kpunch/music/musicShell.c | 48 + src/libs/kpunch/music/musicSmf.c | 473 + src/libs/kpunch/music/musicSynth.c | 631 ++ src/libs/kpunch/music/musicXmp.c | 164 + .../music/thirdparty/genmidi/DVX-VERSION.md | 31 + .../music/thirdparty/genmidi/GENMIDI.OP2 | Bin 0 -> 11908 bytes .../kpunch/music/thirdparty/genmidi/LICENSE | 30 + .../thirdparty/libxmp-lite/DVX-VERSION.md | 37 + .../music/thirdparty/libxmp-lite/README | 42 + .../thirdparty/libxmp-lite/include/xmp.h | 416 + .../thirdparty/libxmp-lite/src/callbackio.h | 187 + .../music/thirdparty/libxmp-lite/src/common.h | 735 ++ .../thirdparty/libxmp-lite/src/control.c | 743 ++ .../music/thirdparty/libxmp-lite/src/dataio.c | 254 + .../thirdparty/libxmp-lite/src/effects.c | 1149 +++ .../thirdparty/libxmp-lite/src/effects.h | 174 + .../thirdparty/libxmp-lite/src/filetype.c | 145 + .../music/thirdparty/libxmp-lite/src/filter.c | 118 + .../music/thirdparty/libxmp-lite/src/flow.c | 195 + .../music/thirdparty/libxmp-lite/src/format.c | 127 + .../music/thirdparty/libxmp-lite/src/format.h | 107 + .../music/thirdparty/libxmp-lite/src/hio.c | 560 ++ .../music/thirdparty/libxmp-lite/src/hio.h | 55 + .../music/thirdparty/libxmp-lite/src/lfo.c | 164 + .../music/thirdparty/libxmp-lite/src/lfo.h | 24 + .../music/thirdparty/libxmp-lite/src/load.c | 575 ++ .../thirdparty/libxmp-lite/src/load_helpers.c | 572 ++ .../libxmp-lite/src/loaders/common.c | 639 ++ .../thirdparty/libxmp-lite/src/loaders/it.h | 202 + .../libxmp-lite/src/loaders/it_load.c | 1551 ++++ .../libxmp-lite/src/loaders/itsex.c | 288 + .../libxmp-lite/src/loaders/loader.h | 80 + .../thirdparty/libxmp-lite/src/loaders/mod.h | 59 + .../libxmp-lite/src/loaders/mod_load.c | 1129 +++ .../thirdparty/libxmp-lite/src/loaders/s3m.h | 131 + .../libxmp-lite/src/loaders/s3m_load.c | 698 ++ .../libxmp-lite/src/loaders/sample.c | 434 + .../thirdparty/libxmp-lite/src/loaders/xm.h | 101 + .../libxmp-lite/src/loaders/xm_load.c | 1024 +++ .../music/thirdparty/libxmp-lite/src/md5.c | 240 + .../music/thirdparty/libxmp-lite/src/md5.h | 37 + .../thirdparty/libxmp-lite/src/mdataio.h | 150 + .../music/thirdparty/libxmp-lite/src/memio.c | 134 + .../music/thirdparty/libxmp-lite/src/memio.h | 27 + .../music/thirdparty/libxmp-lite/src/misc.c | 30 + .../thirdparty/libxmp-lite/src/mix_all.c | 825 ++ .../thirdparty/libxmp-lite/src/mix_all.h | 52 + .../music/thirdparty/libxmp-lite/src/mixer.c | 1115 +++ .../music/thirdparty/libxmp-lite/src/mixer.h | 94 + .../music/thirdparty/libxmp-lite/src/path.h | 48 + .../music/thirdparty/libxmp-lite/src/period.c | 285 + .../music/thirdparty/libxmp-lite/src/period.h | 36 + .../music/thirdparty/libxmp-lite/src/player.c | 2398 +++++ .../music/thirdparty/libxmp-lite/src/player.h | 304 + .../thirdparty/libxmp-lite/src/precomp_lut.h | 524 ++ .../thirdparty/libxmp-lite/src/read_event.c | 1658 ++++ .../music/thirdparty/libxmp-lite/src/rng.c | 55 + .../music/thirdparty/libxmp-lite/src/rng.h | 38 + .../music/thirdparty/libxmp-lite/src/scan.c | 823 ++ .../music/thirdparty/libxmp-lite/src/smix.c | 438 + .../thirdparty/libxmp-lite/src/tempfile.h | 18 + .../thirdparty/libxmp-lite/src/virtual.c | 645 ++ .../thirdparty/libxmp-lite/src/virtual.h | 44 + .../music/thirdparty/libxmp-lite/src/win32.c | 68 + .../music/thirdparty/libxmp-lite/test/test.it | Bin 0 -> 2300 bytes .../music/thirdparty/libxmp-lite/test/test.xm | Bin 0 -> 1549 bytes src/loader/Makefile | 7 +- src/loader/loaderMain.c | 59 +- src/sdk/README.TXT | 13 +- src/sdk/newProject.sh | 36 +- src/sdk/sdk.mk | 24 +- src/sdk/templates/basicgame/Makefile | 14 + src/sdk/templates/basicgame/tplName.dbp | 21 + src/sdk/templates/basicgame/tplName.dhs | 33 + src/sdk/templates/basicgame/tplName.frm | 203 + src/sdk/templates/game/Makefile | 14 + src/sdk/templates/game/coin.wav | Bin 0 -> 2689 bytes src/sdk/templates/game/icon32.bmp | 3 + src/sdk/templates/game/music.mid | Bin 0 -> 687 bytes src/sdk/templates/game/tplName.c | 890 ++ src/sdk/templates/game/tplName.dhs | 69 + src/sdk/templates/game/tplName.res | 16 + src/sdkHeaders.mk | 6 +- src/test/abi/Makefile | 2 +- src/test/abi/abiSizes.txt | 31 +- src/test/audio/Makefile | 93 + src/test/audio/audioTest.c | 1893 ++++ src/test/audio/fakeDrv.c | 110 + src/test/audio/fakeSynth.c | 80 + src/test/audio/golden/mixer.txt | 9 + src/test/dialogs/dialogsTest.c | 80 + src/test/dos/Makefile | 31 +- .../dos/__pycache__/audioCmp.cpython-312.pyc | Bin 0 -> 12532 bytes src/test/dos/audioCmp.py | 308 + src/test/dos/clockWatch.py | 104 + src/test/dos/fixtures/gamekey/gamekey.dbp | 18 + src/test/dos/fixtures/gamekey/gamekey.frm | 61 + src/test/dos/fixtures/joybas/joybas.dbp | 18 + src/test/dos/fixtures/joybas/joybas.frm | 74 + src/test/dos/fixtures/sndbas/sndbas.dbp | 18 + src/test/dos/fixtures/sndbas/sndbas.frm | 67 + src/test/dos/fixtures/sndplay/sndplay.dbp | 14 + src/test/dos/fixtures/sndplay/sndplay.frm | 96 + src/test/dos/gameTest/gameTest.c | 263 + src/test/dos/golden/apps/86box/cpanel.png | 4 +- src/test/dos/golden/apps/86box/setup.png | 3 - src/test/dos/golden/apps/dosbox/clock.png | 4 +- src/test/dos/golden/apps/dosbox/cpanel.png | 4 +- src/test/dos/golden/apps/dosbox/filemgr.png | 4 +- src/test/dos/golden/apps/dosbox/setup.png | 3 - src/test/dos/golden/apps/setup.mask | 2 - src/test/dos/golden/cpanel/86box/cp-color.png | 4 +- src/test/dos/golden/cpanel/86box/cp-desk.png | 4 +- src/test/dos/golden/cpanel/86box/cp-joy.png | 3 + src/test/dos/golden/cpanel/86box/cp-mouse.png | 4 +- src/test/dos/golden/cpanel/86box/cp-net.png | 4 +- src/test/dos/golden/cpanel/86box/cp-print.png | 4 +- src/test/dos/golden/cpanel/86box/cp-types.png | 4 +- src/test/dos/golden/cpanel/86box/cp-video.png | 4 +- .../dos/golden/cpanel/dosbox/cp-color.png | 4 +- src/test/dos/golden/cpanel/dosbox/cp-desk.png | 4 +- src/test/dos/golden/cpanel/dosbox/cp-joy.png | 3 + .../dos/golden/cpanel/dosbox/cp-mouse.png | 4 +- src/test/dos/golden/cpanel/dosbox/cp-net.png | 4 +- .../dos/golden/cpanel/dosbox/cp-print.png | 4 +- .../dos/golden/cpanel/dosbox/cp-types.png | 4 +- .../dos/golden/cpanel/dosbox/cp-video.png | 4 +- src/test/dos/golden/desksnd/86box/audio.json | 104 + src/test/dos/golden/f1/86box/h-cpanel.png | 4 +- src/test/dos/golden/f1/86box/h-setup.png | 3 - src/test/dos/golden/f1/dosbox/h-cpanel.png | 4 +- src/test/dos/golden/f1/dosbox/h-filemg.png | 4 +- src/test/dos/golden/f1/dosbox/h-setup.png | 3 - src/test/dos/golden/install/86box/in-desk.png | 3 + src/test/dos/golden/install/86box/in-welc.png | 3 + src/test/dos/golden/menus/86box/m-altdn.png | 4 +- src/test/dos/golden/menus/86box/m-altup.png | 4 +- src/test/dos/golden/menus/86box/m-drop.png | 4 +- src/test/dos/golden/menus/dosbox/m-altdn.png | 4 +- src/test/dos/golden/menus/dosbox/m-altup.png | 4 +- src/test/dos/golden/menus/dosbox/m-drop.png | 4 +- src/test/dos/golden/musfm/86box/audio.json | 59 + src/test/dos/golden/musmod/86box/audio.json | 59 + src/test/dos/golden/musmpu/86box/audio.json | 59 + src/test/dos/golden/print/print1.mask | 2 + src/test/dos/golden/sb1/86box/audio.json | 111 + src/test/dos/golden/sb1/dosbox/audio.json | 111 + src/test/dos/golden/sb2/86box/audio.json | 111 + src/test/dos/golden/sb2/dosbox/audio.json | 111 + src/test/dos/golden/sbpro/86box/audio.json | 111 + src/test/dos/golden/sbpro/dosbox/audio.json | 111 + src/test/dos/golden/sdkgame/86box/sdkgame.png | 3 + src/test/dos/golden/sdkgame/sdkgame.mask | 3 + src/test/dos/golden/setup/86box/st-done.png | 3 - src/test/dos/golden/setup/86box/st-open.png | 3 - src/test/dos/golden/setup/dosbox/st-done.png | 3 - src/test/dos/golden/setup/dosbox/st-open.png | 3 - src/test/dos/golden/setup/st-open.mask | 2 - src/test/dos/golden/sound/86box/audio.json | 111 + src/test/dos/golden/sound/dosbox/audio.json | 111 + src/test/dos/golden/sound2/86box/audio.json | 32 + src/test/dos/golden/sound2/dosbox/audio.json | 32 + src/test/dos/golden/speaker/86box/audio.json | 59 + src/test/dos/golden/speaker/dosbox/audio.json | 59 + src/test/dos/golden/spkpcm/dosbox/audio.json | 111 + src/test/dos/golden/video/86box/v-800.png | 4 +- src/test/dos/golden/video/86box/v-pick.png | 4 +- src/test/dos/golden/video/dosbox/v-800.png | 4 +- src/test/dos/golden/video/dosbox/v-pick.png | 4 +- src/test/dos/joyDrive.py | 95 + src/test/dos/joyTest/joyTest.c | 224 + src/test/dos/musTest/musTest.c | 325 + src/test/dos/runDos.sh | 553 +- src/test/dos/script/scriptDos.c | 14 +- src/test/dos/script/scriptLang.c | 77 + src/test/dos/script/scriptLang.h | 15 +- src/test/dos/script/scriptRun.c | 48 + src/test/dos/script/scriptRun.h | 3 + src/test/dos/scripts/apps.scr | 7 - src/test/dos/scripts/cpanel.scr | 3 + src/test/dos/scripts/desksnd.scr | 35 + src/test/dos/scripts/f1.scr | 13 - src/test/dos/scripts/gamepad.scr | 61 + src/test/dos/scripts/install.scr | 31 + src/test/dos/scripts/joy4axis.scr | 22 + src/test/dos/scripts/joycal.scr | 41 + src/test/dos/scripts/joyempty.scr | 29 + src/test/dos/scripts/joykeys.scr | 50 + src/test/dos/scripts/joymove.scr | 59 + src/test/dos/scripts/joyport.scr | 35 + src/test/dos/scripts/musfm.scr | 18 + src/test/dos/scripts/musmod.scr | 18 + src/test/dos/scripts/musmpu.scr | 20 + src/test/dos/scripts/sb1.scr | 18 + src/test/dos/scripts/sb2.scr | 18 + src/test/dos/scripts/sbpro.scr | 19 + src/test/dos/scripts/sdkgame.scr | 45 + src/test/dos/scripts/setup.scr | 29 - src/test/dos/scripts/sndbas.scr | 12 + src/test/dos/scripts/sound.scr | 20 + src/test/dos/scripts/sound2.scr | 18 + src/test/dos/scripts/speaker.scr | 17 + src/test/dos/scripts/spkpcm.scr | 23 + src/test/dos/sndTest/sndTest.c | 510 ++ src/test/game/Makefile | 60 + src/test/game/gameTest.c | 812 ++ src/test/joystick/Makefile | 93 + src/test/joystick/fakeJoyDrv.c | 98 + src/test/joystick/joyPortSim.c | 48 + src/test/joystick/joystickTest.c | 1214 +++ src/test/lint/cppcheckBaseline.txt | 6 - src/test/lint/staticGate.sh | 3 + src/test/music/Makefile | 109 + src/test/music/golden/render.txt | 4 + src/test/music/installMusicRefs.sh | 109 + src/test/music/lsan.supp | 7 + src/test/music/musicTest.c | 2105 +++++ src/test/samples/golden/basdemo-debug.app | Bin 23431 -> 23431 bytes src/test/samples/golden/basdemo-release.app | Bin 20182 -> 20182 bytes src/test/samples/golden/helpedit-debug.app | Bin 12571 -> 12571 bytes src/test/samples/golden/helpedit-release.app | Bin 11363 -> 11363 bytes src/test/samples/golden/iconed-debug.app | Bin 17371 -> 17371 bytes src/test/samples/golden/iconed-release.app | Bin 14506 -> 14506 bytes src/test/samples/golden/imgview-debug.app | Bin 9536 -> 9536 bytes src/test/samples/golden/imgview-release.app | Bin 9063 -> 9063 bytes src/test/samples/golden/inc-comm-debug.app | Bin 7341 -> 7341 bytes src/test/samples/golden/inc-comm-release.app | Bin 7259 -> 7259 bytes src/test/samples/golden/inc-commdlg-debug.app | Bin 7132 -> 7132 bytes .../samples/golden/inc-commdlg-release.app | Bin 7068 -> 7068 bytes src/test/samples/golden/inc-fileops-debug.app | Bin 7114 -> 7114 bytes .../samples/golden/inc-fileops-release.app | Bin 7059 -> 7059 bytes src/test/samples/golden/inc-game-debug.app | Bin 0 -> 7098 bytes src/test/samples/golden/inc-game-release.app | Bin 0 -> 6980 bytes src/test/samples/golden/inc-help-debug.app | Bin 7046 -> 7046 bytes src/test/samples/golden/inc-help-release.app | Bin 6991 -> 6991 bytes .../samples/golden/inc-joystick-debug.app | Bin 0 -> 7119 bytes .../samples/golden/inc-joystick-release.app | Bin 0 -> 7055 bytes src/test/samples/golden/inc-music-debug.app | Bin 0 -> 7263 bytes src/test/samples/golden/inc-music-release.app | Bin 0 -> 7202 bytes src/test/samples/golden/inc-net-debug.app | Bin 7191 -> 7191 bytes src/test/samples/golden/inc-net-release.app | Bin 7136 -> 7136 bytes src/test/samples/golden/inc-print-debug.app | Bin 7125 -> 7125 bytes src/test/samples/golden/inc-print-release.app | Bin 7070 -> 7070 bytes .../samples/golden/inc-resource-debug.app | Bin 7151 -> 7151 bytes .../samples/golden/inc-resource-release.app | Bin 7087 -> 7087 bytes src/test/samples/golden/inc-sound-debug.app | Bin 0 -> 7147 bytes src/test/samples/golden/inc-sound-release.app | Bin 0 -> 7089 bytes src/test/samples/golden/inc-sql-debug.app | Bin 7194 -> 7194 bytes src/test/samples/golden/inc-sql-release.app | Bin 7139 -> 7139 bytes src/test/samples/golden/inc-xfer-debug.app | Bin 7150 -> 7150 bytes src/test/samples/golden/inc-xfer-release.app | Bin 7071 -> 7071 bytes src/test/samples/golden/notepad-debug.app | Bin 12240 -> 12240 bytes src/test/samples/golden/notepad-release.app | Bin 10909 -> 10909 bytes src/test/samples/golden/resedit-debug.app | Bin 13880 -> 13880 bytes src/test/samples/golden/resedit-release.app | Bin 12204 -> 12204 bytes src/test/samples/golden/widshow-debug.app | Bin 15195 -> 15195 bytes src/test/samples/golden/widshow-release.app | Bin 14185 -> 14185 bytes src/test/script/testScript.c | 81 + src/test/sdk/sdkTest.sh | 88 +- src/test/setup/Makefile | 20 +- src/test/setup/setupTest.c | 1051 ++- src/test/shell/Makefile | 36 +- src/test/shell/appsTest.c | 190 + src/test/shell/fixtures/fixAbort.c | 49 + src/test/shell/fixtures/fixExit.c | 48 + src/test/shell/shellMainTest.c | 22 +- src/test/suites.mk | 2 +- src/test/tools/runTools.sh | 50 +- src/tools/Makefile | 23 +- src/tools/mkSounds.c | 346 + src/widgets/kpunch/timer/widgetTimer.c | 13 + 403 files changed, 73971 insertions(+), 1887 deletions(-) create mode 100644 src/apps/kpunch/cpanel/cpJoystick.c create mode 100644 src/apps/kpunch/cpanel/cpJoystick.h create mode 100644 src/apps/kpunch/cpanel/cpSounds.c create mode 100644 src/apps/kpunch/cpanel/cpSounds.h delete mode 100644 src/apps/kpunch/setup/dosroot/install.bat delete mode 100644 src/apps/kpunch/setup/icon32.bmp delete mode 100644 src/apps/kpunch/setup/setup.c delete mode 100644 src/apps/kpunch/setup/setup.dhs delete mode 100644 src/apps/kpunch/setup/setup.res delete mode 100644 src/apps/kpunch/setup/setupCore.c delete mode 100644 src/apps/kpunch/setup/setupCore.h create mode 100644 src/include/basic/game.bas create mode 100644 src/include/basic/joystick.bas create mode 100644 src/include/basic/music.bas create mode 100644 src/include/basic/sound.bas create mode 100644 src/installer/Makefile create mode 100644 src/installer/README.TXT create mode 100755 src/installer/mkDist.sh create mode 100644 src/installer/pkgBuild.c create mode 100644 src/installer/pkgBuild.h create mode 100644 src/installer/pkgFormat.c create mode 100644 src/installer/pkgFormat.h create mode 100644 src/installer/pkgRead.c create mode 100644 src/installer/pkgRead.h create mode 100644 src/installer/pkgTool.c create mode 100644 src/installer/setup.c create mode 100644 src/installer/setupCore.c create mode 100644 src/installer/setupCore.h create mode 100644 src/installer/thirdparty/miniz/DVX-VERSION.md create mode 100644 src/installer/thirdparty/miniz/LICENSE create mode 100644 src/installer/thirdparty/miniz/miniz.c create mode 100644 src/installer/thirdparty/miniz/miniz.h create mode 100644 src/libs/kpunch/audio/Makefile create mode 100644 src/libs/kpunch/audio/audio.c create mode 100644 src/libs/kpunch/audio/audio.dep create mode 100644 src/libs/kpunch/audio/audio.dhs create mode 100644 src/libs/kpunch/audio/audio.h create mode 100644 src/libs/kpunch/audio/audioBas.c create mode 100644 src/libs/kpunch/audio/audioDesk.c create mode 100644 src/libs/kpunch/audio/audioDrv.h create mode 100644 src/libs/kpunch/audio/audioInt.h create mode 100644 src/libs/kpunch/audio/audioLoad.c create mode 100644 src/libs/kpunch/audio/audioMix.c create mode 100644 src/libs/kpunch/audio/audioShell.c create mode 100644 src/libs/kpunch/audio/audioSynth.c create mode 100644 src/libs/kpunch/audio/drivers/mpu401/mpuDrv.c create mode 100644 src/libs/kpunch/audio/drivers/null/nullDrv.c create mode 100644 src/libs/kpunch/audio/drivers/opl/oplDrv.c create mode 100644 src/libs/kpunch/audio/drivers/sb/sbCalc.c create mode 100644 src/libs/kpunch/audio/drivers/sb/sbCalc.h create mode 100644 src/libs/kpunch/audio/drivers/sb/sbDrv.c create mode 100644 src/libs/kpunch/audio/drivers/speaker/spkDrv.c create mode 100644 src/libs/kpunch/game/Makefile create mode 100644 src/libs/kpunch/game/game.c create mode 100644 src/libs/kpunch/game/game.dep create mode 100644 src/libs/kpunch/game/game.dhs create mode 100644 src/libs/kpunch/game/game.h create mode 100644 src/libs/kpunch/game/gameBas.c create mode 100644 src/libs/kpunch/joystick/Makefile create mode 100644 src/libs/kpunch/joystick/drivers/joykeys/joyKeys.c create mode 100644 src/libs/kpunch/joystick/drivers/joyport/joyPort.c create mode 100644 src/libs/kpunch/joystick/drivers/joyport/joyPort.h create mode 100644 src/libs/kpunch/joystick/drivers/joyport/joyPortDos.c create mode 100644 src/libs/kpunch/joystick/joyBas.c create mode 100644 src/libs/kpunch/joystick/joyInt.h create mode 100644 src/libs/kpunch/joystick/joyShell.c create mode 100644 src/libs/kpunch/joystick/joystick.c create mode 100644 src/libs/kpunch/joystick/joystick.dep create mode 100644 src/libs/kpunch/joystick/joystick.dhs create mode 100644 src/libs/kpunch/joystick/joystick.h create mode 100644 src/libs/kpunch/libdvx/dvxDriver.c create mode 100644 src/libs/kpunch/libdvx/dvxDrv.h create mode 100644 src/libs/kpunch/libdvx/games.dhs create mode 100644 src/libs/kpunch/libdvx/platform/dvxPlatIsr.h create mode 100644 src/libs/kpunch/libdvx/platform/dvxPlatformIrq.c create mode 100644 src/libs/kpunch/music/Makefile create mode 100644 src/libs/kpunch/music/music.c create mode 100644 src/libs/kpunch/music/music.dep create mode 100644 src/libs/kpunch/music/music.dhs create mode 100644 src/libs/kpunch/music/music.h create mode 100644 src/libs/kpunch/music/musicBas.c create mode 100644 src/libs/kpunch/music/musicFm.c create mode 100644 src/libs/kpunch/music/musicInt.h create mode 100644 src/libs/kpunch/music/musicMml.c create mode 100644 src/libs/kpunch/music/musicMmlPlay.c create mode 100644 src/libs/kpunch/music/musicMpu.c create mode 100644 src/libs/kpunch/music/musicOp2.c create mode 100644 src/libs/kpunch/music/musicSeq.c create mode 100644 src/libs/kpunch/music/musicShell.c create mode 100644 src/libs/kpunch/music/musicSmf.c create mode 100644 src/libs/kpunch/music/musicSynth.c create mode 100644 src/libs/kpunch/music/musicXmp.c create mode 100644 src/libs/kpunch/music/thirdparty/genmidi/DVX-VERSION.md create mode 100644 src/libs/kpunch/music/thirdparty/genmidi/GENMIDI.OP2 create mode 100644 src/libs/kpunch/music/thirdparty/genmidi/LICENSE create mode 100644 src/libs/kpunch/music/thirdparty/libxmp-lite/DVX-VERSION.md create mode 100644 src/libs/kpunch/music/thirdparty/libxmp-lite/README create mode 100644 src/libs/kpunch/music/thirdparty/libxmp-lite/include/xmp.h create mode 100644 src/libs/kpunch/music/thirdparty/libxmp-lite/src/callbackio.h create mode 100644 src/libs/kpunch/music/thirdparty/libxmp-lite/src/common.h create mode 100644 src/libs/kpunch/music/thirdparty/libxmp-lite/src/control.c create mode 100644 src/libs/kpunch/music/thirdparty/libxmp-lite/src/dataio.c create mode 100644 src/libs/kpunch/music/thirdparty/libxmp-lite/src/effects.c create mode 100644 src/libs/kpunch/music/thirdparty/libxmp-lite/src/effects.h create mode 100644 src/libs/kpunch/music/thirdparty/libxmp-lite/src/filetype.c create mode 100644 src/libs/kpunch/music/thirdparty/libxmp-lite/src/filter.c create mode 100644 src/libs/kpunch/music/thirdparty/libxmp-lite/src/flow.c create mode 100644 src/libs/kpunch/music/thirdparty/libxmp-lite/src/format.c create mode 100644 src/libs/kpunch/music/thirdparty/libxmp-lite/src/format.h create mode 100644 src/libs/kpunch/music/thirdparty/libxmp-lite/src/hio.c create mode 100644 src/libs/kpunch/music/thirdparty/libxmp-lite/src/hio.h create mode 100644 src/libs/kpunch/music/thirdparty/libxmp-lite/src/lfo.c create mode 100644 src/libs/kpunch/music/thirdparty/libxmp-lite/src/lfo.h create mode 100644 src/libs/kpunch/music/thirdparty/libxmp-lite/src/load.c create mode 100644 src/libs/kpunch/music/thirdparty/libxmp-lite/src/load_helpers.c create mode 100644 src/libs/kpunch/music/thirdparty/libxmp-lite/src/loaders/common.c create mode 100644 src/libs/kpunch/music/thirdparty/libxmp-lite/src/loaders/it.h create mode 100644 src/libs/kpunch/music/thirdparty/libxmp-lite/src/loaders/it_load.c create mode 100644 src/libs/kpunch/music/thirdparty/libxmp-lite/src/loaders/itsex.c create mode 100644 src/libs/kpunch/music/thirdparty/libxmp-lite/src/loaders/loader.h create mode 100644 src/libs/kpunch/music/thirdparty/libxmp-lite/src/loaders/mod.h create mode 100644 src/libs/kpunch/music/thirdparty/libxmp-lite/src/loaders/mod_load.c create mode 100644 src/libs/kpunch/music/thirdparty/libxmp-lite/src/loaders/s3m.h create mode 100644 src/libs/kpunch/music/thirdparty/libxmp-lite/src/loaders/s3m_load.c create mode 100644 src/libs/kpunch/music/thirdparty/libxmp-lite/src/loaders/sample.c create mode 100644 src/libs/kpunch/music/thirdparty/libxmp-lite/src/loaders/xm.h create mode 100644 src/libs/kpunch/music/thirdparty/libxmp-lite/src/loaders/xm_load.c create mode 100644 src/libs/kpunch/music/thirdparty/libxmp-lite/src/md5.c create mode 100644 src/libs/kpunch/music/thirdparty/libxmp-lite/src/md5.h create mode 100644 src/libs/kpunch/music/thirdparty/libxmp-lite/src/mdataio.h create mode 100644 src/libs/kpunch/music/thirdparty/libxmp-lite/src/memio.c create mode 100644 src/libs/kpunch/music/thirdparty/libxmp-lite/src/memio.h create mode 100644 src/libs/kpunch/music/thirdparty/libxmp-lite/src/misc.c create mode 100644 src/libs/kpunch/music/thirdparty/libxmp-lite/src/mix_all.c create mode 100644 src/libs/kpunch/music/thirdparty/libxmp-lite/src/mix_all.h create mode 100644 src/libs/kpunch/music/thirdparty/libxmp-lite/src/mixer.c create mode 100644 src/libs/kpunch/music/thirdparty/libxmp-lite/src/mixer.h create mode 100644 src/libs/kpunch/music/thirdparty/libxmp-lite/src/path.h create mode 100644 src/libs/kpunch/music/thirdparty/libxmp-lite/src/period.c create mode 100644 src/libs/kpunch/music/thirdparty/libxmp-lite/src/period.h create mode 100644 src/libs/kpunch/music/thirdparty/libxmp-lite/src/player.c create mode 100644 src/libs/kpunch/music/thirdparty/libxmp-lite/src/player.h create mode 100644 src/libs/kpunch/music/thirdparty/libxmp-lite/src/precomp_lut.h create mode 100644 src/libs/kpunch/music/thirdparty/libxmp-lite/src/read_event.c create mode 100644 src/libs/kpunch/music/thirdparty/libxmp-lite/src/rng.c create mode 100644 src/libs/kpunch/music/thirdparty/libxmp-lite/src/rng.h create mode 100644 src/libs/kpunch/music/thirdparty/libxmp-lite/src/scan.c create mode 100644 src/libs/kpunch/music/thirdparty/libxmp-lite/src/smix.c create mode 100644 src/libs/kpunch/music/thirdparty/libxmp-lite/src/tempfile.h create mode 100644 src/libs/kpunch/music/thirdparty/libxmp-lite/src/virtual.c create mode 100644 src/libs/kpunch/music/thirdparty/libxmp-lite/src/virtual.h create mode 100644 src/libs/kpunch/music/thirdparty/libxmp-lite/src/win32.c create mode 100644 src/libs/kpunch/music/thirdparty/libxmp-lite/test/test.it create mode 100644 src/libs/kpunch/music/thirdparty/libxmp-lite/test/test.xm create mode 100644 src/sdk/templates/basicgame/Makefile create mode 100644 src/sdk/templates/basicgame/tplName.dbp create mode 100644 src/sdk/templates/basicgame/tplName.dhs create mode 100644 src/sdk/templates/basicgame/tplName.frm create mode 100644 src/sdk/templates/game/Makefile create mode 100644 src/sdk/templates/game/coin.wav create mode 100644 src/sdk/templates/game/icon32.bmp create mode 100644 src/sdk/templates/game/music.mid create mode 100644 src/sdk/templates/game/tplName.c create mode 100644 src/sdk/templates/game/tplName.dhs create mode 100644 src/sdk/templates/game/tplName.res create mode 100644 src/test/audio/Makefile create mode 100644 src/test/audio/audioTest.c create mode 100644 src/test/audio/fakeDrv.c create mode 100644 src/test/audio/fakeSynth.c create mode 100644 src/test/audio/golden/mixer.txt create mode 100644 src/test/dos/__pycache__/audioCmp.cpython-312.pyc create mode 100755 src/test/dos/audioCmp.py create mode 100755 src/test/dos/clockWatch.py create mode 100644 src/test/dos/fixtures/gamekey/gamekey.dbp create mode 100644 src/test/dos/fixtures/gamekey/gamekey.frm create mode 100644 src/test/dos/fixtures/joybas/joybas.dbp create mode 100644 src/test/dos/fixtures/joybas/joybas.frm create mode 100644 src/test/dos/fixtures/sndbas/sndbas.dbp create mode 100644 src/test/dos/fixtures/sndbas/sndbas.frm create mode 100644 src/test/dos/fixtures/sndplay/sndplay.dbp create mode 100644 src/test/dos/fixtures/sndplay/sndplay.frm create mode 100644 src/test/dos/gameTest/gameTest.c delete mode 100644 src/test/dos/golden/apps/86box/setup.png delete mode 100644 src/test/dos/golden/apps/dosbox/setup.png delete mode 100644 src/test/dos/golden/apps/setup.mask create mode 100644 src/test/dos/golden/cpanel/86box/cp-joy.png create mode 100644 src/test/dos/golden/cpanel/dosbox/cp-joy.png create mode 100644 src/test/dos/golden/desksnd/86box/audio.json delete mode 100644 src/test/dos/golden/f1/86box/h-setup.png delete mode 100644 src/test/dos/golden/f1/dosbox/h-setup.png create mode 100644 src/test/dos/golden/install/86box/in-desk.png create mode 100644 src/test/dos/golden/install/86box/in-welc.png create mode 100644 src/test/dos/golden/musfm/86box/audio.json create mode 100644 src/test/dos/golden/musmod/86box/audio.json create mode 100644 src/test/dos/golden/musmpu/86box/audio.json create mode 100644 src/test/dos/golden/print/print1.mask create mode 100644 src/test/dos/golden/sb1/86box/audio.json create mode 100644 src/test/dos/golden/sb1/dosbox/audio.json create mode 100644 src/test/dos/golden/sb2/86box/audio.json create mode 100644 src/test/dos/golden/sb2/dosbox/audio.json create mode 100644 src/test/dos/golden/sbpro/86box/audio.json create mode 100644 src/test/dos/golden/sbpro/dosbox/audio.json create mode 100644 src/test/dos/golden/sdkgame/86box/sdkgame.png create mode 100644 src/test/dos/golden/sdkgame/sdkgame.mask delete mode 100644 src/test/dos/golden/setup/86box/st-done.png delete mode 100644 src/test/dos/golden/setup/86box/st-open.png delete mode 100644 src/test/dos/golden/setup/dosbox/st-done.png delete mode 100644 src/test/dos/golden/setup/dosbox/st-open.png delete mode 100644 src/test/dos/golden/setup/st-open.mask create mode 100644 src/test/dos/golden/sound/86box/audio.json create mode 100644 src/test/dos/golden/sound/dosbox/audio.json create mode 100644 src/test/dos/golden/sound2/86box/audio.json create mode 100644 src/test/dos/golden/sound2/dosbox/audio.json create mode 100644 src/test/dos/golden/speaker/86box/audio.json create mode 100644 src/test/dos/golden/speaker/dosbox/audio.json create mode 100644 src/test/dos/golden/spkpcm/dosbox/audio.json create mode 100755 src/test/dos/joyDrive.py create mode 100644 src/test/dos/joyTest/joyTest.c create mode 100644 src/test/dos/musTest/musTest.c create mode 100644 src/test/dos/scripts/desksnd.scr create mode 100644 src/test/dos/scripts/gamepad.scr create mode 100644 src/test/dos/scripts/install.scr create mode 100644 src/test/dos/scripts/joy4axis.scr create mode 100644 src/test/dos/scripts/joycal.scr create mode 100644 src/test/dos/scripts/joyempty.scr create mode 100644 src/test/dos/scripts/joykeys.scr create mode 100644 src/test/dos/scripts/joymove.scr create mode 100644 src/test/dos/scripts/joyport.scr create mode 100644 src/test/dos/scripts/musfm.scr create mode 100644 src/test/dos/scripts/musmod.scr create mode 100644 src/test/dos/scripts/musmpu.scr create mode 100644 src/test/dos/scripts/sb1.scr create mode 100644 src/test/dos/scripts/sb2.scr create mode 100644 src/test/dos/scripts/sbpro.scr create mode 100644 src/test/dos/scripts/sdkgame.scr delete mode 100644 src/test/dos/scripts/setup.scr create mode 100644 src/test/dos/scripts/sndbas.scr create mode 100644 src/test/dos/scripts/sound.scr create mode 100644 src/test/dos/scripts/sound2.scr create mode 100644 src/test/dos/scripts/speaker.scr create mode 100644 src/test/dos/scripts/spkpcm.scr create mode 100644 src/test/dos/sndTest/sndTest.c create mode 100644 src/test/game/Makefile create mode 100644 src/test/game/gameTest.c create mode 100644 src/test/joystick/Makefile create mode 100644 src/test/joystick/fakeJoyDrv.c create mode 100644 src/test/joystick/joyPortSim.c create mode 100644 src/test/joystick/joystickTest.c create mode 100644 src/test/music/Makefile create mode 100644 src/test/music/golden/render.txt create mode 100755 src/test/music/installMusicRefs.sh create mode 100644 src/test/music/lsan.supp create mode 100644 src/test/music/musicTest.c create mode 100644 src/test/samples/golden/inc-game-debug.app create mode 100644 src/test/samples/golden/inc-game-release.app create mode 100644 src/test/samples/golden/inc-joystick-debug.app create mode 100644 src/test/samples/golden/inc-joystick-release.app create mode 100644 src/test/samples/golden/inc-music-debug.app create mode 100644 src/test/samples/golden/inc-music-release.app create mode 100644 src/test/samples/golden/inc-sound-debug.app create mode 100644 src/test/samples/golden/inc-sound-release.app create mode 100644 src/test/shell/fixtures/fixAbort.c create mode 100644 src/test/shell/fixtures/fixExit.c create mode 100644 src/tools/mkSounds.c diff --git a/.gitignore b/.gitignore index 302a40ec..78895914 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,4 @@ just-stuff/ dvx.log claudeDocs/ toolchains/ +dist/ diff --git a/Makefile b/Makefile index 18a6b20a..84f4dab9 100644 --- a/Makefile +++ b/Makefile @@ -39,9 +39,9 @@ LIBS = $(sort $(notdir $(patsubst %/Makefile,%,$(wildcard src/libs/kpunch/*/Makefile)))) CORE_LIBS = libdvx libtasks -.PHONY: all clean $(LIBS) loader widgets apps tools deploy-helpsrc compile-help deploy-sdk test test-quick test-asan test-host test-samples coverage +.PHONY: all clean $(LIBS) loader widgets apps tools installer dist deploy-helpsrc compile-help deploy-sdk test test-quick test-asan test-host test-samples coverage -all: $(LIBS) loader tools widgets apps deploy-helpsrc compile-help deploy-sdk +all: $(LIBS) loader tools widgets apps installer deploy-helpsrc compile-help deploy-sdk $(LIBS): $(MAKE) -C src/libs/kpunch/$@ @@ -60,6 +60,17 @@ widgets: libdvx libtasks texthelp listhelp tools tools: $(MAKE) -C src/tools +# SETUP.EXE (bin/setup.exe, a static build of the core it needs) and the +# package tool bin/host/dvxpkg. +installer: + $(MAKE) -C src/installer + +# Release media in dist/: the CD image and floppy images (FLOPPY=360K, +# 720K, 1.2M, 1.44M (default), 2.88M or a number of bytes per disk). +# See src/installer/mkDist.sh. +dist: all + src/installer/mkDist.sh $(or $(FLOPPY),1.44M) + apps: libdvx libtasks dvxshell tools $(MAKE) -C src/apps/kpunch @@ -172,7 +183,7 @@ deploy-sdk: tools apps @echo "Building SDK..." @# Start from an empty tree so a header dropped from the lists goes away. rm -rf $(SDKDIR) - @mkdir -p $(SDKDIR)/bin $(SDKDIR)/include/core $(SDKDIR)/include/shell $(SDKDIR)/include/tasks $(SDKDIR)/include/sql $(SDKDIR)/include/texthelp $(SDKDIR)/include/listhelp $(SDKDIR)/include/fileops $(SDKDIR)/include/xfer $(SDKDIR)/include/conn $(SDKDIR)/include/print $(SDKDIR)/include/net $(SDKDIR)/include/basic $(SDKDIR)/samples/basic/basdemo $(SDKDIR)/samples/basic/widshow + @mkdir -p $(SDKDIR)/bin $(SDKDIR)/include/core $(SDKDIR)/include/shell $(SDKDIR)/include/tasks $(SDKDIR)/include/sql $(SDKDIR)/include/texthelp $(SDKDIR)/include/listhelp $(SDKDIR)/include/fileops $(SDKDIR)/include/xfer $(SDKDIR)/include/conn $(SDKDIR)/include/print $(SDKDIR)/include/game $(SDKDIR)/include/joystick $(SDKDIR)/include/audio $(SDKDIR)/include/music $(SDKDIR)/include/net $(SDKDIR)/include/basic $(SDKDIR)/samples/basic/basdemo $(SDKDIR)/samples/basic/widshow cp $(SDK_CORE_H) $(SDKDIR)/include/core/ cp $(SDK_SHELL_H) $(SDKDIR)/include/shell/ cp $(SDK_TASKS_H) $(SDKDIR)/include/tasks/ @@ -183,6 +194,10 @@ deploy-sdk: tools apps cp $(SDK_XFER_H) $(SDKDIR)/include/xfer/ cp $(SDK_CONN_H) $(SDKDIR)/include/conn/ cp $(SDK_PRINT_H) $(SDKDIR)/include/print/ + cp $(SDK_GAME_H) $(SDKDIR)/include/game/ + cp $(SDK_JOYSTICK_H) $(SDKDIR)/include/joystick/ + cp $(SDK_AUDIO_H) $(SDKDIR)/include/audio/ + cp $(SDK_MUSIC_H) $(SDKDIR)/include/music/ @# Networking: dvxNet.h and the standard socket headers, which keep their @# subdirectories (sys/, netinet/, arpa/); sdk.mk adds include/net only @# for programs that set NET = 1. @@ -225,6 +240,7 @@ clean: $(MAKE) -C src/apps/kpunch clean $(MAKE) -C src/tools clean $(MAKE) -C src/tools/proxy clean - rm -rf obj bin/host bin/test bin/system + $(MAKE) -C src/installer clean + rm -rf obj bin/host bin/test bin/system dist rm -rf bin/config bin/widgets bin/libs bin/sdk rm -f docs/*.html diff --git a/README.md b/README.md index 263e1925..936e2a20 100644 --- a/README.md +++ b/README.md @@ -89,12 +89,16 @@ 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. +`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 @@ -104,6 +108,7 @@ 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/ @@ -112,6 +117,7 @@ dvxgui/ 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 diff --git a/config/dvx.ini b/config/dvx.ini index cdff7fb8..d56d0dc5 100644 --- a/config/dvx.ini +++ b/config/dvx.ini @@ -75,3 +75,58 @@ tabWidth = 8 wrap = true header = &f footer = Page &p + +; Sound settings. +; driver: auto (find the sound hardware), sb (Sound Blaster family), +; 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 +; 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 +; 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 +; fmTones: true = square and triangle tones play on the music synthesizer +; chip when there is one; false = always mixed +; midi: where MIDI music plays: auto (the synthesizer chip, else a +; built-in synthesizer), mpu401 (an external synthesizer on the +; MIDI port), fm (the chip) or software (the built-in synthesizer) +; 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; +; midiBank = the instrument bank file for MIDI music (OP2 format, path +; from the DVX folder; default libs\kpunch\music\genmidi.op2) +; The Sound Blaster's port, IRQ and DMA come from the BLASTER setting (for +; example SET BLASTER=A220 I5 D1 H5 in AUTOEXEC.BAT). + +[audio] +driver = auto +rate = 22050 +bits = 0 +channels = 0 +voices = 16 +volume = 100 +speakerPcm = false +fmTones = true +midi = auto +mpuMode = gm + +; Desktop sounds (Control Panel's Sounds page): the sound file (WAV or VOC, +; path from the DVX folder) played for each event; empty = no sound. +; 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 +; windowOpen, windowClose: a window opening or closing (not dialogs) + +[sounds] +default = config/sounds/beep.wav +startup = config/sounds/startup.wav +exit = config/sounds/exit.wav +error = config/sounds/error.wav +warning = config/sounds/warning.wav +question = config/sounds/question.wav +information = config/sounds/info.wav +windowOpen = +windowClose = diff --git a/docs/dvx_basic_reference.html b/docs/dvx_basic_reference.html index 0ae484ea..b969b73e 100644 --- a/docs/dvx_basic_reference.html +++ b/docs/dvx_basic_reference.html @@ -77,6 +77,7 @@ img { max-width: 100%; }
  • Flow Control
  • Input/Output
  • Miscellaneous Statements
  • +
  • Sound, Joysticks and Frames
  • File I/O
  • @@ -170,6 +171,7 @@ img { max-width: 100%; }
  • Auto-indent
  • AutoIndent
  • AutoSize
  • +
  • BEEP
  • BMP
  • Boolean
  • Breakpoints
  • @@ -315,10 +317,14 @@ img { max-width: 100%; }
  • Form File
  • FORMAT$
  • Frame
  • +
  • Frame rate
  • +
  • FRAMEWAIT
  • FREEFILE
  • FRM
  • FUNCTION
  • Function Dropdown
  • +
  • game.bas
  • +
  • GameKeyDown
  • GET
  • GETATTR
  • GOSUB
  • @@ -356,6 +362,14 @@ img { max-width: 100%; }
  • INT
  • Integer
  • Interval
  • +
  • JoyAxis
  • +
  • JoyButton
  • +
  • JoyCount
  • +
  • JoyHat
  • +
  • Joystick
  • +
  • joystick.bas
  • +
  • JoyX
  • +
  • JoyY
  • Keyboard Shortcuts
  • KILL
  • Label
  • @@ -385,12 +399,15 @@ img { max-width: 100%; }
  • LTRIM$
  • Master-Detail
  • Max
  • +
  • MB
  • Me
  • Menu
  • Menu Bar
  • Menu Editor
  • Methods
  • +
  • MF
  • MID$
  • +
  • MIDI
  • Migration
  • Min
  • MKDIR
  • @@ -400,6 +417,27 @@ img { max-width: 100%; }
  • MsgBox
  • MSGBOX
  • Multi-Column List
  • +
  • Music
  • +
  • Music macro language
  • +
  • music.bas
  • +
  • MusicControl
  • +
  • MusicError$
  • +
  • MusicFree
  • +
  • MusicLength
  • +
  • MusicLoad
  • +
  • MusicMidiOpen
  • +
  • MusicNoteOff
  • +
  • MusicNoteOn
  • +
  • MusicPause
  • +
  • MusicPitchBend
  • +
  • MusicPlay
  • +
  • MusicPlaying
  • +
  • MusicPosition
  • +
  • MusicProgram
  • +
  • MusicResume
  • +
  • MusicSeek
  • +
  • MusicStop
  • +
  • MusicVolume
  • NAME
  • net.bas
  • New Project
  • @@ -426,6 +464,12 @@ img { max-width: 100%; }
  • Paste
  • Picture
  • PictureBox
  • +
  • PLAY
  • +
  • PLAY function
  • +
  • PlayNoise
  • +
  • PlayTone
  • +
  • PlayWave
  • +
  • PlayWaveLoop
  • Precedence
  • Predefined Constants
  • Preferences
  • @@ -512,6 +556,13 @@ img { max-width: 100%; }
  • Single
  • SLEEP
  • Slider
  • +
  • SOUND
  • +
  • Sound
  • +
  • sound.bas
  • +
  • SoundError$
  • +
  • SoundInfo$
  • +
  • SoundPlaying
  • +
  • SoundVolume
  • Source Map
  • SPACE$
  • Spacer
  • @@ -548,9 +599,13 @@ img { max-width: 100%; }
  • Step Out
  • Step Over
  • Stepping
  • +
  • STICK
  • Stop
  • Stop
  • +
  • StopAllSounds
  • +
  • StopWave
  • STR$
  • +
  • STRIG
  • String
  • STRING$
  • SUB
  • @@ -1255,6 +1310,16 @@ img { max-width: 100%; }
  • A SUB or FUNCTION may use at most 64 local slots (parameters, local variables and hidden temporaries). More is a compile error "Too many local variables in X (n, limit is 64)" instead of a runtime error 9; READ and INPUT # into many array elements no longer use a slot per target.
  • SHARED naming a variable that does not exist at module level creates it there; in a form's code it becomes a variable of that form, not a program-wide one.
  • +

    Sound, Joysticks and Frames

    + +

    See: Sound, Joysticks and Frames

    Runtime