qbasicapps.git
5 days agochore: reorganize site pages and retire bulky generated artifacts master
Svjatoslav Agejenko [Sun, 4 Oct 2026 20:14:49 +0000 (23:14 +0300)]
chore: reorganize site pages and retire bulky generated artifacts

The 3D text demo graduates from the Miscellaneous collection to its
own category directory (3D GFX/3D text/) with a dedicated page and a
root-page showcase section; its old collection-page section is removed
outright (no stub - the link checker proves nothing references the old
anchor). Every category page's "Back to BASIC applications collection"
link now carries the anchor of the root-page showcase section that
links down to it. AGENTS.org records both conventions.

3D Synthezier now versions its generated cities directly: city1.obj,
city2.obj and result.mtl are the published artifacts linked from the
doc page, replacing 25 MB of Blender conversions and the bin/backup
parser/output snapshots, all deleted along with the DOS batch
wrappers. The embedded street.obj example was regenerated with the
corrected face winding, and AGENTS.org notes that diagrams and
examples must be re-synced from real parser output after renames or
emission changes.

Universe explorer.bas received a second readability pass: systematic
descriptive names throughout (timerinit->timerInit, mkworld->
buildWorld, getCloudXYZ->getClusterPosition, disp->drawUniverse and
so on), behavior unchanged.

The Swapping 3D engine's letter font now has documented provenance:
objects/font/README.txt identifies the LTR vector glyphs byte-for-byte
as outlines of the ATI mach32/mach64 VGA BIOS 8x8 font traced by
mk3dfont.bas - not the IBM/SeaBIOS CP437 font used by crtbasic - and
putChar points at the note. The engine's runtime WORLD directory is
kept via .gitkeep with its contents ignored.

Tools/Update web site delegates org-to-HTML export to the shared
incremental exporter in svjatoslav_commons, re-exporting only changed
pages; the rsync upload now includes .obj/.mtl files and the export
state file is gitignored.

12 days agofix(3d-synthezier): correct mirrored face winding in generated OBJ files
Svjatoslav Agejenko [Sun, 27 Sep 2026 18:49:12 +0000 (21:49 +0300)]
fix(3d-synthezier): correct mirrored face winding in generated OBJ files

The parser negates Z when writing vertices but emitted faces in their original order, so every generated OBJ had globally mirrored winding - building walls pointed inward and one-sided lighting/GI in consuming renderers produced uniform gray facades. Faces are now emitted reversed to compensate, and the transform stack tracks negative-scale (mirror) parity so mirrored instances flip winding back automatically.

Sixteen include files also had faces authored inward (dome, prisms, pipe, plate, solar, police parts, car, bus, hextower, roof slabs); these are flipped at source. Roof slabs had been authored downward and only rendered correctly by accident of the parser bug.

Component and material names are now English (maja->building, krs->storey, sein->wall, blk->window/hextower, nrk->prism, katus->roof, kuppel->dome, pol->police, muld->soil, kivi->stone and so on), and the scene language gained readable command aliases (origin, use, pick, pickmtl, ifeq, if) with all scene files and documentation converted. Both cities regenerated; AGENTS.org documents layout, build, language essentials and winding rules.

13 days agofeat(3d-synthezier): run city generator on Linux via crtbasic
Svjatoslav Agejenko [Sat, 26 Sep 2026 16:52:04 +0000 (19:52 +0300)]
feat(3d-synthezier): run city generator on Linux via crtbasic

- Add bin/city1.sh and bin/city2.sh, crtbasic equivalents of the DOS
  batch files: they run 3dparse.bas headless with --command selecting
  the scene (COMMAND$ stands in for the DOS /CMD switch).
- Change the include path in 3dparse.bas from the absolute DOS path
  C:\GRAPHICS\3D\3DSYNT~1\INCLUDE\ to the relative ..\include\,
  resolved against the bin directory, so no path editing is needed.
- Commit the generated city1.obj and city2.obj example scenes.
- Document the Linux workflow in a new "Linux (crtbasic)" section in
  doc/index.org.

13 days agorefactor(truth-table): translate Estonian names and add regression harness
Svjatoslav Agejenko [Sat, 26 Sep 2026 12:38:26 +0000 (15:38 +0300)]
refactor(truth-table): translate Estonian names and add regression harness

- truth.bas: second readability pass — translate remaining Estonian
  identifiers (sist/lahend/tee/teeslg/lend/mov, tehl/nm/muu/prnp) into
  descriptive English, add per-SUB description headers, document the
  operator encoding (CHR$(1..5), t/v as tosi/vaar constants) and mark
  the dead 2002-era code (removeRedundancies, drainKeyboardBuffer,
  xlahn). Algorithm, labels and GOTOs unchanged.
- Tests/: GameDriver-based regression harness — drives the program in
  crtbasic for 19 formulas, verifies truth columns against an
  independent Python oracle and byte-diffs full 8x8-cell text dumps
  against the baselines in expected/. Validated pixel-identical
  against real QB45 in DOSBox.

5 weeks agodocs: caption all screenshots and screencasts with program context
Svjatoslav Agejenko [Sun, 30 Aug 2026 01:16:24 +0000 (04:16 +0300)]
docs: caption all screenshots and screencasts with program context

- Every gallery image and video in all 16 org files now carries a
  caption paragraph below it, written from the corresponding program
  source (algorithms, parameters, controls, exit conditions)
- Fix broken media links left by the capture renaming (old
  "screenshot, N.png" / "<name>.png" targets now point at the
  "<Program> - Screenshot N.png" / "- Screencast N.mp4" files):
  Interferogram, 3D graph, Galaxy explorer, Maze explorer,
  Game of life, Truth table, Multiplication trainer,
  Sine computation, Lottery, Windowing system, Mouse driver
- List previously unlisted captures: 3D graph screenshots 0/1 +
  screencast, Galaxy/Maze explorer screencasts, Multiplication
  trainer screencast, mousedrv native-res screenshot, school-clock
  electronics photos (v1 README + v3 tutorial)
- Add new gallery sections: Pressed key test (Misc), and a Tutorial
  category with the qsort3 quicksort visualization

5 weeks agochore: rename captures to program-name scheme, tweak two demos
Svjatoslav Agejenko [Sat, 29 Aug 2026 23:00:22 +0000 (02:00 +0300)]
chore: rename captures to program-name scheme, tweak two demos

- Replace "screenshot, N.png" / "screenshot.png" captures with
  "<Program> - Screenshot N.png" and add screencast mp4s (Game of
  life, Lottery, 3D graph, Interferogram, truth, mousedrv)
- mousedrv.bas: print button status every frame instead of only when
  pressed — useful now that held buttons report correctly
- 3D graph.bas: SOUND 0, .5 at the start of each nait3d frame

6 weeks agorefactor(mouse-driver): slim qbext TSR, ungate programs, refresh media
Svjatoslav Agejenko [Thu, 27 Aug 2026 22:19:07 +0000 (01:19 +0300)]
refactor(mouse-driver): slim qbext TSR, ungate programs, refresh media

- qbext: 506 to 234 bytes — drop the unused update counter, inline the
  startup banner into the source, add build.sh; index.org rewritten to
  document the minimal 8-byte shared-memory protocol
- Galaxy/Universe/Maze explorer and Swapping 3D engine gated all mouse
  reads on the removed counter byte (getByte(8)) and silently froze
  with the new driver — drop the gate, read-and-reset every frame
- recapture showcase media as CRT Basic screencasts/screenshots
  (mp4/png replacing webm/png); rename Windowing system.bas to
  wsystem.bas

6 weeks agodocs(site): add CUSTOM_ID anchors, fix links, refresh media
Svjatoslav Agejenko [Sat, 22 Aug 2026 16:32:56 +0000 (19:32 +0300)]
docs(site): add CUSTOM_ID anchors, fix links, refresh media

- Add kebab-case :CUSTOM_ID: slugs to headings across all index.org
  pages so exported HTML gets stable, readable anchor ids
  (index.html#fractals instead of org-generated ids)
- Replace fragile [[id:UUID]] in-page links with slug-based [[#slug]]
  links (LPT driver API table, root index overview)
- Fix "Back to BASIC applications collection" links pointing one
  directory level too shallow in category pages
- Fix Miscellaneous 3D demos link pointing to the Space page, and the
  duplicated :ID: UUID shared by the Games and Math sections
- Replace stale .png/.webm media references with recaptured
  "- Screenshot 0.png" / "- Screencast 0.mp4" files; embed videos via
  HTML5 <video> blocks
- Re-export Automated school clock v1 README.html with the current
  Org HTML exporter
- Include *.mp4 in the Tools/Update web site rsync filter
- Document the CUSTOM_ID convention in AGENTS.org

6 weeks agodocs: recapture gallery media and sync all index pages
Svjatoslav Agejenko [Sat, 22 Aug 2026 15:28:51 +0000 (18:28 +0300)]
docs: recapture gallery media and sync all index pages

- Replace legacy .webm/.png captures with '<name> - Screencast N.mp4'
  and '<name> - Screenshot N.png' files across 2D GFX, 3D GFX, Games,
  Math, Miscellaneous, Networking and Tutorial
- Point every index.org video/image reference at the new captures;
  sections whose screenshots were recaptured as screencasts now embed
  video blocks
- Fix broken source links: Bouncing cubes wrong directory prefix,
  copy-pasted '!.bas' links in Galaxy/Universe explorer, Alarm comma
  filenames, Pomppu Paavo moved into its own subdirectory
- Add 'Back to BASIC applications collection' parent link to all 13
  topic pages
- worm.bas: guard tail/head ring-buffer pointers against out-of-range
  access for dead or overgrown worms
- Stars.bas: drop spurious totalStars increment in galaxy creation
- Anaglyph.bas, Tiled room.bas: emit SOUND 0, .5 at main loop start

6 weeks agodocs(2d-gfx): recapture fractals, spirals and textures media
Svjatoslav Agejenko [Sat, 22 Aug 2026 10:59:33 +0000 (13:59 +0300)]
docs(2d-gfx): recapture fractals, spirals and textures media

- Replace old .webm/.png media in Fractals, Spirals and Textures with
  recaptured "- Screencast 0.mp4" and "- Screenshot N.png" files
- Update the three index.org pages to reference the new captures
- Merge the two-image "Sphere forming spiral" section into a single
  screenshot (only one stage was recaptured)
- Remove stale Textures/logo.png

6 weeks agodocs(animations): recapture screencasts as mp4 and update index page
Svjatoslav Agejenko [Sat, 22 Aug 2026 10:48:58 +0000 (13:48 +0300)]
docs(animations): recapture screencasts as mp4 and update index page

- Replace all .webm screencasts with recaptured "- Screencast 0.mp4"
  versions showcasing new CRT Basic capabilities
- Update index.org video references to the mp4 files and show the new
  Tree screenshot instead of a video
- Add missing sections for circular patterns, sun&eart, maze, matrix2
  and mkcircle
- Add mkcircle.bas source

7 weeks agoinitial commit
Svjatoslav Agejenko [Thu, 20 Aug 2026 21:21:24 +0000 (00:21 +0300)]
initial commit