Readmes updated.
This commit is contained in:
parent
6d75e4996a
commit
289adb8c47
5 changed files with 162 additions and 19 deletions
27
README.md
27
README.md
|
|
@ -23,9 +23,12 @@ dvx.exe (loader)
|
||||||
+-- libs/dvxshell.lib shell (app lifecycle, desktop)
|
+-- libs/dvxshell.lib shell (app lifecycle, desktop)
|
||||||
+-- libs/taskmgr.lib task manager (Ctrl+Esc, separate DXE)
|
+-- libs/taskmgr.lib task manager (Ctrl+Esc, separate DXE)
|
||||||
|
|
|
|
||||||
|
+-- libs/basrt.lib BASIC runtime (VM + values)
|
||||||
|
+-- libs/serial.lib serial communications (rs232 + packet + seclink)
|
||||||
|
|
|
||||||
+-- widgets/*.wgt 26 widget type plugins
|
+-- widgets/*.wgt 26 widget type plugins
|
||||||
|
|
|
|
||||||
+-- apps/*/*.app DXE applications
|
+-- apps/*/*.app DXE applications
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -42,7 +45,7 @@ dvx.exe (loader)
|
||||||
| `taskmgr/` | `bin/libs/taskmgr.lib` | Task Manager (separate DXE, Ctrl+Esc) |
|
| `taskmgr/` | `bin/libs/taskmgr.lib` | Task Manager (separate DXE, Ctrl+Esc) |
|
||||||
| `widgets/` | `bin/widgets/*.wgt` | 26 individual widget DXE modules |
|
| `widgets/` | `bin/widgets/*.wgt` | 26 individual widget DXE modules |
|
||||||
| `apps/` | `bin/apps/*/*.app` | Application DXE modules |
|
| `apps/` | `bin/apps/*/*.app` | Application DXE modules |
|
||||||
| `tools/` | `bin/dvxres` | Resource tool (host native, not DXE) |
|
| `tools/` | `bin/dvxres`, `bin/mkicon`, `bin/mktbicon` | Resource and icon tools (host native) |
|
||||||
| `config/` | `bin/config/`, `bin/libs/`, `bin/widgets/` | INI config, themes, wallpapers, dep files |
|
| `config/` | `bin/config/`, `bin/libs/`, `bin/widgets/` | INI config, themes, wallpapers, dep files |
|
||||||
| `rs232/` | `lib/librs232.a` | ISR-driven UART serial driver |
|
| `rs232/` | `lib/librs232.a` | ISR-driven UART serial driver |
|
||||||
| `packet/` | `lib/libpacket.a` | HDLC framing, CRC-16, Go-Back-N ARQ |
|
| `packet/` | `lib/libpacket.a` | HDLC framing, CRC-16, Go-Back-N ARQ |
|
||||||
|
|
@ -85,6 +88,8 @@ bin/
|
||||||
listhelp.lib list/dropdown helpers
|
listhelp.lib list/dropdown helpers
|
||||||
dvxshell.lib DVX shell
|
dvxshell.lib DVX shell
|
||||||
taskmgr.lib task manager (Ctrl+Esc)
|
taskmgr.lib task manager (Ctrl+Esc)
|
||||||
|
basrt.lib BASIC runtime (VM + values)
|
||||||
|
serial.lib serial communications stack
|
||||||
*.dep dependency files for load ordering
|
*.dep dependency files for load ordering
|
||||||
widgets/
|
widgets/
|
||||||
box.wgt VBox/HBox/Frame containers
|
box.wgt VBox/HBox/Frame containers
|
||||||
|
|
@ -98,6 +103,7 @@ bin/
|
||||||
dvxdemo/dvxdemo.app widget showcase
|
dvxdemo/dvxdemo.app widget showcase
|
||||||
cpanel/cpanel.app control panel
|
cpanel/cpanel.app control panel
|
||||||
imgview/imgview.app image viewer
|
imgview/imgview.app image viewer
|
||||||
|
dvxbasic/dvxbasic.app DVX BASIC IDE + compiler
|
||||||
config/
|
config/
|
||||||
dvx.ini system configuration
|
dvx.ini system configuration
|
||||||
themes/ color theme files (.thm)
|
themes/ color theme files (.thm)
|
||||||
|
|
@ -171,14 +177,15 @@ running. Diagnostic information (registers, faulting EIP) is logged to
|
||||||
|
|
||||||
## Bundled Applications
|
## Bundled Applications
|
||||||
|
|
||||||
| App | File | Type | Description |
|
| App | File | Type | Description |
|
||||||
|-----------------|---------------|-----------|------------------------------------------------------------|
|
|-----------------|----------------|-----------|------------------------------------------------------------|
|
||||||
| Program Manager | `progman.app` | Callback | App launcher grid, system info dialog |
|
| Program Manager | `progman.app` | Callback | App launcher grid, system info dialog |
|
||||||
| Notepad | `notepad.app` | Callback | Text editor with File/Edit menus, open/save, clipboard |
|
| Notepad | `notepad.app` | Callback | Text editor with File/Edit menus, open/save, clipboard |
|
||||||
| Clock | `clock.app` | Main-loop | Digital clock display; multi-instance capable |
|
| Clock | `clock.app` | Main-loop | Digital clock display; multi-instance capable |
|
||||||
| DVX Demo | `dvxdemo.app` | Callback | Widget system showcase demonstrating 31 widget types |
|
| DVX Demo | `dvxdemo.app` | Callback | Widget system showcase demonstrating 31 widget types |
|
||||||
| Control Panel | `cpanel.app` | Callback | Themes, wallpaper, video mode, mouse configuration |
|
| Control Panel | `cpanel.app` | Callback | Themes, wallpaper, video mode, mouse configuration |
|
||||||
| Image Viewer | `imgview.app` | Callback | Displays BMP, PNG, JPEG, GIF images with aspect-ratio zoom |
|
| Image Viewer | `imgview.app` | Callback | Displays BMP, PNG, JPEG, GIF images with aspect-ratio zoom |
|
||||||
|
| DVX BASIC | `dvxbasic.app` | Callback | Visual Basic 3 clone: form designer, compiler, VM |
|
||||||
|
|
||||||
|
|
||||||
## Serial / Networking Stack
|
## Serial / Networking Stack
|
||||||
|
|
|
||||||
|
|
@ -139,16 +139,35 @@ Manager.
|
||||||
Widget headers used: none (raw paint callbacks with `dvxLoadImage()`).
|
Widget headers used: none (raw paint callbacks with `dvxLoadImage()`).
|
||||||
|
|
||||||
|
|
||||||
|
### DVX BASIC (dvxbasic)
|
||||||
|
|
||||||
|
| | |
|
||||||
|
|---|---|
|
||||||
|
| File | `apps/dvxbasic/dvxbasic.app` |
|
||||||
|
| Type | Callback-only |
|
||||||
|
| Multi-instance | No |
|
||||||
|
|
||||||
|
Visual Basic 3 clone with form designer, per-procedure code editor,
|
||||||
|
project management, and stack-based bytecode compiler/VM. Supports
|
||||||
|
event-driven programming with visual forms, controls, and a full
|
||||||
|
BASIC language implementation.
|
||||||
|
|
||||||
|
See `apps/dvxbasic/README.md` for detailed documentation.
|
||||||
|
|
||||||
|
Also builds `basrt.lib` -- the BASIC runtime library (VM + values)
|
||||||
|
as a separate DXE so compiled BASIC apps can use it independently.
|
||||||
|
|
||||||
|
|
||||||
## Build
|
## Build
|
||||||
|
|
||||||
```
|
```
|
||||||
make # builds all 6 app DXE modules
|
make # builds all 7 app DXE modules
|
||||||
make clean # removes objects and app files
|
make clean # removes objects and app files
|
||||||
```
|
```
|
||||||
|
|
||||||
Each app compiles to a single `.o`, then is packaged via `dxe3gen`
|
Each app compiles to a single `.o` (or multiple for DVX BASIC),
|
||||||
into a `.app` DXE exporting `appDescriptor` and `appMain` (plus
|
then is packaged via `dxe3gen` into a `.app` DXE exporting
|
||||||
`appShutdown` for clock).
|
`appDescriptor` and `appMain`.
|
||||||
|
|
||||||
Output goes to `bin/apps/<name>/<name>.app`.
|
Output goes to `bin/apps/<name>/<name>.app`.
|
||||||
|
|
||||||
|
|
@ -175,4 +194,10 @@ apps/
|
||||||
cpanel.c control panel
|
cpanel.c control panel
|
||||||
imgview/
|
imgview/
|
||||||
imgview.c image viewer
|
imgview.c image viewer
|
||||||
|
dvxbasic/
|
||||||
|
compiler/ BASIC compiler (lexer, parser, codegen)
|
||||||
|
runtime/ VM and value system
|
||||||
|
formrt/ form runtime (BASIC <-> DVX widgets)
|
||||||
|
ide/ IDE (editor, designer, project, properties)
|
||||||
|
samples/ sample .bas, .frm, .dbp files
|
||||||
```
|
```
|
||||||
|
|
|
||||||
97
apps/dvxbasic/README.md
Normal file
97
apps/dvxbasic/README.md
Normal file
|
|
@ -0,0 +1,97 @@
|
||||||
|
# DVX BASIC
|
||||||
|
|
||||||
|
A Visual Basic 3 clone for the DVX GUI system. Provides a visual form
|
||||||
|
designer, per-procedure code editor, project management, and a
|
||||||
|
stack-based bytecode compiler/VM for running event-driven BASIC programs.
|
||||||
|
|
||||||
|
## Architecture
|
||||||
|
|
||||||
|
DVX BASIC is built as a DXE3 app (dvxbasic.app) loaded by the DVX shell.
|
||||||
|
It consists of four major subsystems:
|
||||||
|
|
||||||
|
### Compiler (compiler/)
|
||||||
|
|
||||||
|
Single-pass compiler that translates BASIC source to stack-based p-code.
|
||||||
|
|
||||||
|
- **lexer.c** -- Tokenizer with keyword lookup, type suffixes, hex literals,
|
||||||
|
line continuation (`_`), and `?` as PRINT shortcut.
|
||||||
|
- **parser.c** -- Recursive descent parser. Handles all VB3 statements,
|
||||||
|
expressions, operator precedence (VB-correct: `^` binds tighter than
|
||||||
|
unary `-`), Sub/Function with forward references, bare sub calls,
|
||||||
|
OPTION EXPLICIT, STATIC, CONST, DEF FN, SELECT CASE, ON ERROR GOTO,
|
||||||
|
UDTs (nested), arrays of UDTs, DECLARE LIBRARY.
|
||||||
|
- **codegen.c** -- Bytecode emitter. Dynamic arrays (stb_ds) for code,
|
||||||
|
constants, and proc table. Module building, forward reference patching,
|
||||||
|
unresolved reference detection.
|
||||||
|
- **symtab.c** -- Symbol table with local/global scoping, type tracking.
|
||||||
|
- **opcodes.h** -- ~90 bytecode instructions. OP_END (explicit END statement)
|
||||||
|
vs OP_HALT (implicit end of module).
|
||||||
|
|
||||||
|
### Runtime (runtime/)
|
||||||
|
|
||||||
|
- **vm.c** -- Stack-based virtual machine. Step-limited execution for
|
||||||
|
cooperative multitasking. Event handler dispatch via basVmCallSub
|
||||||
|
(runs to completion, no step limit). basVmCallSubWithArgsOut for
|
||||||
|
events that return values (QueryUnload Cancel parameter).
|
||||||
|
- **values.c** -- Tagged value system: Integer, Long, Single, Double,
|
||||||
|
String (ref-counted), Boolean, Array (ref-counted, multi-dim), UDT
|
||||||
|
(ref-counted, nested), Object (opaque host pointer), Ref (ByRef).
|
||||||
|
|
||||||
|
### Form Runtime (formrt/)
|
||||||
|
|
||||||
|
- **formrt.c** -- Bridge between BASIC VM and DVX widgets. Loads .frm
|
||||||
|
files at runtime, creates windows and controls, dispatches events to
|
||||||
|
BASIC code. Supports property get/set, method calls, and control
|
||||||
|
creation via the widget interface system.
|
||||||
|
|
||||||
|
Events: Click, DblClick, Change, GotFocus, LostFocus, KeyPress,
|
||||||
|
KeyDown, KeyUp, MouseDown, MouseUp, MouseMove, Scroll, Load,
|
||||||
|
QueryUnload, Unload, Resize, Activate, Deactivate, Timer.
|
||||||
|
|
||||||
|
### IDE (ide/)
|
||||||
|
|
||||||
|
- **ideMain.c** -- Main IDE orchestration. File switching via
|
||||||
|
`activateFile()`, per-procedure editing, Object/Event dropdowns
|
||||||
|
with hash-based syntax highlighting, dirty tracking with
|
||||||
|
`sEditorFileIdx` ownership, compile-and-run with IDE window
|
||||||
|
hiding, VB-style event loop.
|
||||||
|
- **ideDesigner.c** -- Visual form designer. Live widget creation,
|
||||||
|
drag/resize handles, widget interface property persistence
|
||||||
|
(including WGT_IFACE_ENUM with named values), code-in-FRM files.
|
||||||
|
- **ideProject.c** -- Project system (.dbp files, INI format). Project
|
||||||
|
window with tree view, project properties dialog with startup form
|
||||||
|
dropdown and icon browser. All files loaded into memory at project
|
||||||
|
open.
|
||||||
|
- **ideProperties.c** -- Property editor. ListView with type-aware
|
||||||
|
editing (bool toggle, int spinner, enum cycling, string input).
|
||||||
|
Interface property display via widget descriptors.
|
||||||
|
- **ideToolbox.c** -- Widget palette loaded from registered widget
|
||||||
|
interfaces.
|
||||||
|
|
||||||
|
## Project Files
|
||||||
|
|
||||||
|
project.dbp INI-format project file
|
||||||
|
module.bas BASIC module (code only)
|
||||||
|
form.frm Form file (layout + code section after "End")
|
||||||
|
|
||||||
|
.bas modules are compiled before .frm code sections so CONST
|
||||||
|
declarations are available to form event handlers.
|
||||||
|
|
||||||
|
## Build
|
||||||
|
|
||||||
|
make -C apps/dvxbasic # cross-compile for DJGPP
|
||||||
|
make -C apps/dvxbasic tests # build native test programs
|
||||||
|
|
||||||
|
Test programs: test_compiler, test_vm, test_lex, test_quick.
|
||||||
|
162 test sections covering the compiler, VM, and language features.
|
||||||
|
|
||||||
|
## File Structure
|
||||||
|
|
||||||
|
apps/dvxbasic/
|
||||||
|
compiler/ Lexer, parser, codegen, symbol table, opcodes
|
||||||
|
runtime/ VM and tagged value system
|
||||||
|
formrt/ Form runtime (BASIC <-> DVX widget bridge)
|
||||||
|
ide/ IDE (main, designer, project, properties, toolbox)
|
||||||
|
samples/ Sample .bas, .frm, .dbp files
|
||||||
|
dvxbasic.res App resources (icons, toolbar buttons)
|
||||||
|
Makefile Builds basrt.lib (runtime) + dvxbasic.app (IDE)
|
||||||
|
|
@ -29,6 +29,8 @@ build. Text files are converted to DOS line endings (CR+LF) via sed.
|
||||||
| `listbox.dep` | `bin/widgets/listbox.dep` | ListBox widget dep file |
|
| `listbox.dep` | `bin/widgets/listbox.dep` | ListBox widget dep file |
|
||||||
| `listview.dep` | `bin/widgets/listview.dep` | ListView widget dep file |
|
| `listview.dep` | `bin/widgets/listview.dep` | ListView widget dep file |
|
||||||
| `treeview.dep` | `bin/widgets/treeview.dep` | TreeView widget dep file |
|
| `treeview.dep` | `bin/widgets/treeview.dep` | TreeView widget dep file |
|
||||||
|
| `basrt.dep` | `bin/libs/basrt.dep` | BASIC runtime dep file |
|
||||||
|
| `serial.dep` | `bin/libs/serial.dep` | Serial communications dep file |
|
||||||
|
|
||||||
|
|
||||||
## dvx.ini Format
|
## dvx.ini Format
|
||||||
|
|
@ -126,6 +128,8 @@ ignored. Names are case-insensitive.
|
||||||
| `texthelp.dep` | texthelp.lib | libtasks, libdvx |
|
| `texthelp.dep` | texthelp.lib | libtasks, libdvx |
|
||||||
| `listhelp.dep` | listhelp.lib | libtasks, libdvx |
|
| `listhelp.dep` | listhelp.lib | libtasks, libdvx |
|
||||||
| `dvxshell.dep` | dvxshell.lib | libtasks, libdvx, texthelp, listhelp |
|
| `dvxshell.dep` | dvxshell.lib | libtasks, libdvx, texthelp, listhelp |
|
||||||
|
| `basrt.dep` | basrt.lib | libtasks, libdvx |
|
||||||
|
| `serial.dep` | serial.lib | libtasks, libdvx |
|
||||||
|
|
||||||
### Widget Dependencies
|
### Widget Dependencies
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -90,10 +90,19 @@ Generates simple 32x32 24-bit BMP pixel-art icons for DVX apps.
|
||||||
mkicon <output.bmp> <type>
|
mkicon <output.bmp> <type>
|
||||||
```
|
```
|
||||||
|
|
||||||
Available icon types: `clock`, `notepad`, `cpanel`, `dvxdemo`, `imgview`.
|
Available icon types: `clock`, `notepad`, `cpanel`, `dvxdemo`, `imgview`,
|
||||||
|
`noicon`.
|
||||||
|
|
||||||
Note: mkicon is defined in `mkicon.c` but is not currently built by the
|
|
||||||
Makefile (it was used during initial development).
|
## mktbicon -- Toolbar Icon Generator
|
||||||
|
|
||||||
|
Generates 16x16 24-bit BMP toolbar button icons.
|
||||||
|
|
||||||
|
```
|
||||||
|
mktbicon <output.bmp> <type>
|
||||||
|
```
|
||||||
|
|
||||||
|
Used to create toolbar button resources for DVX BASIC and other apps.
|
||||||
|
|
||||||
|
|
||||||
## Files
|
## Files
|
||||||
|
|
@ -101,8 +110,9 @@ Makefile (it was used during initial development).
|
||||||
| File | Description |
|
| File | Description |
|
||||||
|------|-------------|
|
|------|-------------|
|
||||||
| `dvxres.c` | Resource tool implementation |
|
| `dvxres.c` | Resource tool implementation |
|
||||||
| `mkicon.c` | Icon generator (not built by default) |
|
| `mkicon.c` | 32x32 icon generator |
|
||||||
| `Makefile` | Builds `bin/dvxres` (host native) |
|
| `mktbicon.c` | 16x16 toolbar icon generator |
|
||||||
|
| `Makefile` | Builds `bin/dvxres`, `bin/mkicon`, `bin/mktbicon` (host native) |
|
||||||
|
|
||||||
|
|
||||||
## Build
|
## Build
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue