From 937be903afc736e20893c0d28996dbd97a474355 Mon Sep 17 00:00:00 2001 From: Scott Duensing Date: Wed, 18 Mar 2026 02:08:26 -0500 Subject: [PATCH] More doc fixes. --- README.md | 28 ++++++++++++++++------------ apps/README.md | 2 +- dvxshell/README.md | 6 +++--- 3 files changed, 20 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 8fb9c03..22d8887 100644 --- a/README.md +++ b/README.md @@ -11,8 +11,8 @@ libraries loaded at runtime. dvxgui/ dvx/ GUI compositor library -> lib/libdvx.a tasks/ Cooperative task switcher -> lib/libtasks.a - dvxshell/ Desktop shell (Program Manager) -> bin/dvxshell.exe - apps/ DXE app modules (.app files) -> bin/apps/*.app + dvxshell/ Desktop shell -> bin/dvx.exe + apps/ DXE app modules (.app files) -> bin/apps/*/*.app rs232/ ISR-driven UART serial driver -> lib/librs232.a packet/ HDLC framing, CRC, Go-Back-N -> lib/libpacket.a security/ DH key exchange, XTEA-CTR cipher -> lib/libsecurity.a @@ -28,8 +28,8 @@ Requires the DJGPP cross-compiler (`i586-pc-msdosdjgpp-gcc`). ``` make -C dvx # builds lib/libdvx.a make -C tasks # builds lib/libtasks.a -make -C dvxshell # builds bin/dvxshell.exe -make -C apps # builds bin/apps/*.app +make -C dvxshell # builds bin/dvx.exe +make -C apps # builds bin/apps/*/*.app ``` Set `DJGPP_PREFIX` in the Makefiles if your toolchain is installed somewhere @@ -37,18 +37,19 @@ other than `~/djgpp/djgpp`. ## Architecture -The shell runs as a single DOS executable (`dvxshell.exe`) that loads +The shell runs as a single DOS executable (`dvx.exe`) that loads applications dynamically via DJGPP's DXE3 shared library system. Each app is a `.app` file exporting an `appDescriptor` and `appMain` entry point. ``` +-------------------------------------------------------------------+ -| dvxshell.exe (Task 0) | -| +-------------+ +-----------+ +----------+ +----------------+ | -| | shellMain | | shellApp | | shellDxe | | shellDesktop | | -| | (event loop)| | (lifecycle| | (DXE | | (Program Mgr) | | -| | | | + reaper)| | export) | | | | +| dvx.exe (Task 0) | | +-------------+ +-----------+ +----------+ +----------------+ | +| +-------------+ +-----------+ +------------+ | +| | shellMain | | shellApp | | shellExport| | +| | (event loop)| | (lifecycle| | (DXE symbol| | +| | | | + reaper)| | export) | | +| +-------------+ +-----------+ +------------+ | | | | | | | +------+-------+ +----+-----+ +----+----+ | | | libdvx.a | |libtasks.a| | libdxe | | @@ -98,10 +99,13 @@ is force-killed, and the shell continues running. Diagnostic information ## Deployment ``` -mcopy -o -i bin/dvxshell.exe ::DVXSHELL.EXE -mcopy -o -i bin/apps/*.app ::APPS/ +mcopy -o -i bin/dvx.exe ::DVX.EXE +mcopy -s -o -i bin/apps ::APPS ``` +The `apps/` directory structure must be preserved on the target — Program Manager +recursively scans `apps/` for `.app` files at startup. + ## Documentation Each component directory has its own README with detailed API reference: diff --git a/apps/README.md b/apps/README.md index 42ea9e9..79055c0 100644 --- a/apps/README.md +++ b/apps/README.md @@ -8,7 +8,7 @@ apps. ## Building ``` -make # builds all .app files into ../bin/apps/ +make # builds all .app files into ../bin/apps// make clean # removes objects and binaries ``` diff --git a/dvxshell/README.md b/dvxshell/README.md index 7eaaf09..0d99e69 100644 --- a/dvxshell/README.md +++ b/dvxshell/README.md @@ -1,13 +1,13 @@ # DVX Shell Windows 3.x-style desktop shell for DOS. Loads applications as DXE3 shared -libraries, provides a Program Manager for launching apps, and includes crash +libraries and includes crash recovery so one bad app doesn't take down the system. ## Building ``` -make # builds ../bin/dvxshell.exe +make # builds ../bin/dvx.exe make clean # removes objects and binary ``` @@ -30,7 +30,7 @@ Each iteration of the main loop: 1. `dvxUpdate()` — process input events, dispatch callbacks, composite dirty rects 2. `tsYield()` — give CPU time to main-loop app tasks 3. `shellReapApps()` — clean up apps that terminated this frame -4. `desktopUpdate()` — notify Program Manager if anything changed +4. `desktopUpdate()` — notify the desktop app if anything changed An idle callback (`idleYield`) yields to app tasks during quiet periods when there are no events or dirty rects to process.