Better documentation for mouse driver
authorSvjatoslav Agejenko <svjatoslav@svjatoslav.eu>
Tue, 29 Jul 2025 22:24:42 +0000 (01:24 +0300)
committerSvjatoslav Agejenko <svjatoslav@svjatoslav.eu>
Tue, 29 Jul 2025 22:24:42 +0000 (01:24 +0300)
15 files changed:
2D GFX/Fractals/index.html
2D GFX/Spirals/index.html
2D GFX/Textures/index.html
3D GFX/3D Synthezier/doc/index.html
3D GFX/Miscellaneous/Maze explorer.bas
3D GFX/Miscellaneous/index.html
3D GFX/Space/Galaxy explorer.bas
3D GFX/Space/Universe explorer/Universe explorer.bas
3D GFX/Space/index.html
3D GFX/Swapping 3D engine/engine.bas
Math/Plotting/index.html
Math/Simulation/index.html
Math/Truth table/index.html
Miscellaneous/Mouse driver/index.html
Miscellaneous/Mouse driver/index.org

index a4792e6..8b2fd16 100644 (file)
@@ -3,7 +3,7 @@
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
 <head>
-<!-- 2025-07-29 ti 17:21 -->
+<!-- 2025-07-29 ti 17:31 -->
 <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
 <meta name="viewport" content="width=device-width, initial-scale=1" />
 <title>Fractals</title>
 <h2>Table of Contents</h2>
 <div id="text-table-of-contents" role="doc-toc">
 <ul>
-<li><a href="#orgc800e55">1. Fractal circles</a></li>
-<li><a href="#org5d9e884">2. Fractal circles animated</a></li>
-<li><a href="#org4137871">3. Fractal of squares</a></li>
-<li><a href="#org87f621b">4. Fractal of squares animated</a></li>
-<li><a href="#orgea96041">5. Fractal of trees</a></li>
+<li><a href="#org9a22df5">1. Fractal circles</a></li>
+<li><a href="#org5bb3cc4">2. Fractal circles animated</a></li>
+<li><a href="#org9dd12bc">3. Fractal of squares</a></li>
+<li><a href="#org14bf47b">4. Fractal of squares animated</a></li>
+<li><a href="#org1af537c">5. Fractal of trees</a></li>
 </ul>
 </div>
 </div>
 </style>
 
 
-<div id="outline-container-orgc800e55" class="outline-2">
-<h2 id="orgc800e55"><span class="section-number-2">1.</span> Fractal circles</h2>
+<div id="outline-container-org9a22df5" class="outline-2">
+<h2 id="org9a22df5"><span class="section-number-2">1.</span> Fractal circles</h2>
 <div class="outline-text-2" id="text-1">
 <p>
 This QBasic program generates a visually captivating spiral fractal
@@ -247,7 +247,7 @@ geometry, recursive programming, and graphical design.
 </p>
 
 
-<div id="org3692708" class="figure">
+<div id="org82a86b5" class="figure">
 <p><a href="fractal circles.bas" class="responsive-img"><img src="fractal%20circles.png" alt="fractal%20circles.png" class="responsive-img" /></a>
 </p>
 </div>
@@ -266,8 +266,8 @@ indefinitely.</dd>
 </div>
 </div>
 
-<div id="outline-container-org5d9e884" class="outline-2">
-<h2 id="org5d9e884"><span class="section-number-2">2.</span> Fractal circles animated</h2>
+<div id="outline-container-org5bb3cc4" class="outline-2">
+<h2 id="org5bb3cc4"><span class="section-number-2">2.</span> Fractal circles animated</h2>
 <div class="outline-text-2" id="text-2">
 <p>
 This QBasic program creates an animated fractal composed of circles,
@@ -287,29 +287,29 @@ system to control the animation's progression.
 </div>
 </div>
 
-<div id="outline-container-org4137871" class="outline-2">
-<h2 id="org4137871"><span class="section-number-2">3.</span> Fractal of squares</h2>
+<div id="outline-container-org9dd12bc" class="outline-2">
+<h2 id="org9dd12bc"><span class="section-number-2">3.</span> Fractal of squares</h2>
 <div class="outline-text-2" id="text-3">
 <p>
 This QBasic program generates and displays a fractal pattern composed of squares.
 </p>
 
 
-<div id="org857d1ae" class="figure">
+<div id="org937611e" class="figure">
 <p><a href="fractal squares.bas" class="responsive-img"><img src="fractal%20squares,%201.png" alt="fractal%20squares,%201.png" class="responsive-img" /></a>
 </p>
 </div>
 
 
-<div id="orgb91428b" class="figure">
+<div id="org81311df" class="figure">
 <p><a href="fractal squares.bas" class="responsive-img"><img src="fractal%20squares,%202.png" alt="fractal%20squares,%202.png" class="responsive-img" /></a>
 </p>
 </div>
 </div>
 </div>
 
-<div id="outline-container-org87f621b" class="outline-2">
-<h2 id="org87f621b"><span class="section-number-2">4.</span> Fractal of squares animated</h2>
+<div id="outline-container-org14bf47b" class="outline-2">
+<h2 id="org14bf47b"><span class="section-number-2">4.</span> Fractal of squares animated</h2>
 <div class="outline-text-2" id="text-4">
 <p>
 This QBasic program generates an animated fractal pattern composed of
@@ -331,8 +331,8 @@ resulting in a dynamic and ever-changing geometric pattern.
 </div>
 </div>
 
-<div id="outline-container-orgea96041" class="outline-2">
-<h2 id="orgea96041"><span class="section-number-2">5.</span> Fractal of trees</h2>
+<div id="outline-container-org1af537c" class="outline-2">
+<h2 id="org1af537c"><span class="section-number-2">5.</span> Fractal of trees</h2>
 <div class="outline-text-2" id="text-5">
 <p>
 QBasic program that generates a visually appealing fractal tree
@@ -355,7 +355,7 @@ resembles a tree, with branches that grow and change over time.
 </div>
 </div>
 <div id="postamble" class="status">
-<p class="date">Created: 2025-07-29 ti 17:21</p>
+<p class="date">Created: 2025-07-29 ti 17:31</p>
 <p class="validation"><a href="https://validator.w3.org/check?uri=referer">Validate</a></p>
 </div>
 </body>
index f8c9e70..5c2726b 100644 (file)
@@ -3,7 +3,7 @@
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
 <head>
-<!-- 2025-07-29 ti 17:21 -->
+<!-- 2025-07-29 ti 17:31 -->
 <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
 <meta name="viewport" content="width=device-width, initial-scale=1" />
 <title>Spiral series</title>
 <h2>Table of Contents</h2>
 <div id="text-table-of-contents" role="doc-toc">
 <ul>
-<li><a href="#org82e321b">1. Spiral with increasing density</a></li>
-<li><a href="#orgb8555e3">2. Spiral with varying height</a></li>
-<li><a href="#orgda12033">3. Shaded spiral</a></li>
-<li><a href="#org0d6a5f7">4. Sphere forming spiral</a></li>
-<li><a href="#org0d8f94b">5. Textured spherical spiral</a></li>
-<li><a href="#org9d789f8">6. Textured and shaded spherical spiral</a></li>
+<li><a href="#orge363268">1. Spiral with increasing density</a></li>
+<li><a href="#org459a79e">2. Spiral with varying height</a></li>
+<li><a href="#orgbf688a5">3. Shaded spiral</a></li>
+<li><a href="#orga385a99">4. Sphere forming spiral</a></li>
+<li><a href="#orgce56a9d">5. Textured spherical spiral</a></li>
+<li><a href="#orgf704e61">6. Textured and shaded spherical spiral</a></li>
 </ul>
 </div>
 </div>
   }
 </style>
 
-<div id="outline-container-org82e321b" class="outline-2">
-<h2 id="org82e321b"><span class="section-number-2">1.</span> Spiral with increasing density</h2>
+<div id="outline-container-orge363268" class="outline-2">
+<h2 id="orge363268"><span class="section-number-2">1.</span> Spiral with increasing density</h2>
 <div class="outline-text-2" id="text-1">
 
-<div id="orgd1cfdf0" class="figure">
+<div id="orgbe97d40" class="figure">
 <p><img src="spiral.png" alt="spiral.png" class="responsive-img" />
 </p>
 </div>
@@ -320,11 +320,11 @@ userInput$ = <span style="color: #88aaee;">INPUT$</span>(1)
 </div>
 </div>
 
-<div id="outline-container-orgb8555e3" class="outline-2">
-<h2 id="orgb8555e3"><span class="section-number-2">2.</span> Spiral with varying height</h2>
+<div id="outline-container-org459a79e" class="outline-2">
+<h2 id="org459a79e"><span class="section-number-2">2.</span> Spiral with varying height</h2>
 <div class="outline-text-2" id="text-2">
 
-<div id="org7517797" class="figure">
+<div id="org4709cc8" class="figure">
 <p><img src="spiral, 2.png" alt="spiral, 2.png" class="responsive-img" />
 </p>
 </div>
@@ -391,11 +391,11 @@ a$ = <span style="color: #88aaee;">INPUT$</span>(1)
 </div>
 </div>
 
-<div id="outline-container-orgda12033" class="outline-2">
-<h2 id="orgda12033"><span class="section-number-2">3.</span> Shaded spiral</h2>
+<div id="outline-container-orgbf688a5" class="outline-2">
+<h2 id="orgbf688a5"><span class="section-number-2">3.</span> Shaded spiral</h2>
 <div class="outline-text-2" id="text-3">
 
-<div id="org1af97d6" class="figure">
+<div id="orgb08edde" class="figure">
 <p><img src="spiral, 3.png" alt="spiral, 3.png" class="responsive-img" />
 </p>
 </div>
@@ -497,8 +497,8 @@ a$ = <span style="color: #88aaee;">INPUT$</span>(1)
 </div>
 </div>
 
-<div id="outline-container-org0d6a5f7" class="outline-2">
-<h2 id="org0d6a5f7"><span class="section-number-2">4.</span> Sphere forming spiral</h2>
+<div id="outline-container-orga385a99" class="outline-2">
+<h2 id="orga385a99"><span class="section-number-2">4.</span> Sphere forming spiral</h2>
 <div class="outline-text-2" id="text-4">
 <p>
 Similar to previous spiral, Line segments are connected between the
@@ -507,7 +507,7 @@ multiple linked spherical shapes. Initially point cloud in shown:
 </p>
 
 
-<div id="org29acd8c" class="figure">
+<div id="orgf5ce006" class="figure">
 <p><img src="spiral, 4, 1.png" alt="spiral, 4, 1.png" class="responsive-img" />
 </p>
 </div>
@@ -517,7 +517,7 @@ In the next step, points are connected using lines:
 </p>
 
 
-<div id="orgab04825" class="figure">
+<div id="org916d20d" class="figure">
 <p><img src="spiral, 4, 2.png" alt="spiral, 4, 2.png" class="responsive-img" />
 </p>
 </div>
@@ -622,11 +622,11 @@ a$ = <span style="color: #88aaee;">INPUT$</span>(1)
 </div>
 </div>
 
-<div id="outline-container-org0d8f94b" class="outline-2">
-<h2 id="org0d8f94b"><span class="section-number-2">5.</span> Textured spherical spiral</h2>
+<div id="outline-container-orgce56a9d" class="outline-2">
+<h2 id="orgce56a9d"><span class="section-number-2">5.</span> Textured spherical spiral</h2>
 <div class="outline-text-2" id="text-5">
 
-<div id="org5547450" class="figure">
+<div id="org5f8f0f7" class="figure">
 <p><img src="spiral, 5.png" alt="spiral, 5.png" class="responsive-img" />
 </p>
 </div>
@@ -749,11 +749,11 @@ a$ = <span style="color: #88aaee;">INPUT$</span>(1)
 </div>
 </div>
 
-<div id="outline-container-org9d789f8" class="outline-2">
-<h2 id="org9d789f8"><span class="section-number-2">6.</span> Textured and shaded spherical spiral</h2>
+<div id="outline-container-orgf704e61" class="outline-2">
+<h2 id="orgf704e61"><span class="section-number-2">6.</span> Textured and shaded spherical spiral</h2>
 <div class="outline-text-2" id="text-6">
 
-<div id="org35c5eb0" class="figure">
+<div id="orga301ca3" class="figure">
 <p><img src="spiral, 6.png" alt="spiral, 6.png" class="responsive-img" />
 </p>
 </div>
@@ -937,7 +937,7 @@ yStep2 = (oppositePointY2 - oppositePointY1) / stepCount
 </div>
 </div>
 <div id="postamble" class="status">
-<p class="date">Created: 2025-07-29 ti 17:21</p>
+<p class="date">Created: 2025-07-29 ti 17:31</p>
 <p class="validation"><a href="https://validator.w3.org/check?uri=referer">Validate</a></p>
 </div>
 </body>
index db58997..fff135e 100644 (file)
@@ -3,7 +3,7 @@
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
 <head>
-<!-- 2025-07-29 ti 17:21 -->
+<!-- 2025-07-29 ti 17:31 -->
 <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
 <meta name="viewport" content="width=device-width, initial-scale=1" />
 <title>Algorithmic textures</title>
 <h2>Table of Contents</h2>
 <div id="text-table-of-contents" role="doc-toc">
 <ul>
-<li><a href="#orgc2c2c24">1. Circular waves</a></li>
-<li><a href="#orgd97ba73">2. Diamond square clouds</a></li>
-<li><a href="#orgc5c08b4">3. Old paper</a></li>
-<li><a href="#orgef8a62d">4. Wood</a></li>
-<li><a href="#org759155e">5. Yellow flame</a></li>
+<li><a href="#org9e917f7">1. Circular waves</a></li>
+<li><a href="#org193d767">2. Diamond square clouds</a></li>
+<li><a href="#org2b12774">3. Old paper</a></li>
+<li><a href="#org9c0e3c1">4. Wood</a></li>
+<li><a href="#orgb66b8b0">5. Yellow flame</a></li>
 </ul>
 </div>
 </div>
   }
 </style>
 
-<div id="outline-container-orgc2c2c24" class="outline-2">
-<h2 id="orgc2c2c24"><span class="section-number-2">1.</span> Circular waves</h2>
+<div id="outline-container-org9e917f7" class="outline-2">
+<h2 id="org9e917f7"><span class="section-number-2">1.</span> Circular waves</h2>
 <div class="outline-text-2" id="text-1">
 <p>
 This QBasic program creates visually captivating circular wave
@@ -313,8 +313,8 @@ algorithms can produce intricate and visually appealing results.
 </div>
 </div>
 
-<div id="outline-container-orgd97ba73" class="outline-2">
-<h2 id="orgd97ba73"><span class="section-number-2">2.</span> Diamond square clouds</h2>
+<div id="outline-container-org193d767" class="outline-2">
+<h2 id="org193d767"><span class="section-number-2">2.</span> Diamond square clouds</h2>
 <div class="outline-text-2" id="text-2">
 <p>
 This QBasic program demonstrates the Diamond-Square algorithm, a
@@ -429,8 +429,8 @@ WAITa$ = <span style="color: #88aaee;">INPUT$</span>(1)
 </div>
 </div>
 
-<div id="outline-container-orgc5c08b4" class="outline-2">
-<h2 id="orgc5c08b4"><span class="section-number-2">3.</span> Old paper</h2>
+<div id="outline-container-org2b12774" class="outline-2">
+<h2 id="org2b12774"><span class="section-number-2">3.</span> Old paper</h2>
 <div class="outline-text-2" id="text-3">
 <p>
 This QBasic program generates a procedural texture that simulates the
@@ -527,8 +527,8 @@ inputKey$ = <span style="color: #88aaee;">INPUT$</span>(1)
 </div>
 </div>
 
-<div id="outline-container-orgef8a62d" class="outline-2">
-<h2 id="orgef8a62d"><span class="section-number-2">4.</span> Wood</h2>
+<div id="outline-container-org9c0e3c1" class="outline-2">
+<h2 id="org9c0e3c1"><span class="section-number-2">4.</span> Wood</h2>
 <div class="outline-text-2" id="text-4">
 <p>
 This QBasic program creates a visually appealing simulation of a wood
@@ -622,8 +622,8 @@ exitKey$ = <span style="color: #88aaee;">INPUT$</span>(1)
 </div>
 </div>
 
-<div id="outline-container-org759155e" class="outline-2">
-<h2 id="org759155e"><span class="section-number-2">5.</span> Yellow flame</h2>
+<div id="outline-container-orgb66b8b0" class="outline-2">
+<h2 id="orgb66b8b0"><span class="section-number-2">5.</span> Yellow flame</h2>
 <div class="outline-text-2" id="text-5">
 <p>
 "Yellow Flame" is a visually captivating program written in QBasic
@@ -702,7 +702,7 @@ userInput$ = <span style="color: #88aaee;">INPUT$</span>(1)
 </div>
 </div>
 <div id="postamble" class="status">
-<p class="date">Created: 2025-07-29 ti 17:21</p>
+<p class="date">Created: 2025-07-29 ti 17:31</p>
 <p class="validation"><a href="https://validator.w3.org/check?uri=referer">Validate</a></p>
 </div>
 </body>
index 99514d7..c1b6b97 100644 (file)
@@ -3,7 +3,7 @@
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
 <head>
-<!-- 2025-07-29 ti 17:23 -->
+<!-- 2025-07-29 ti 17:32 -->
 <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
 <meta name="viewport" content="width=device-width, initial-scale=1" />
 <title>3D Synthezier</title>
@@ -1103,39 +1103,39 @@ hsAddReviewPanels();
 <h2>Table of Contents</h2>
 <div id="text-table-of-contents" role="doc-toc">
 <ul>
-<li><a href="#org9b96c40">1. Operating principle</a>
+<li><a href="#orgf1b7289">1. Operating principle</a>
 <ul>
-<li><a href="#org1ec11a9">1.1. Rectangular city</a></li>
-<li><a href="#org8d8669b">1.2. Hexagonal city</a></li>
+<li><a href="#org95f664d">1.1. Rectangular city</a></li>
+<li><a href="#orgd49910d">1.2. Hexagonal city</a></li>
 </ul>
 </li>
-<li><a href="#org10001c3">2. Scene description language</a>
+<li><a href="#org3d452d2">2. Scene description language</a>
 <ul>
-<li><a href="#org8d84131">2.1. here</a></li>
-<li><a href="#org7419e67">2.2. p</a></li>
-<li><a href="#orgb69e4b2">2.3. f</a></li>
-<li><a href="#org203da35">2.4. warn</a></li>
-<li><a href="#orgbc87a55">2.5. end</a></li>
-<li><a href="#org7bef1bc">2.6. mtl</a></li>
-<li><a href="#orge2d7101">2.7. mtlrnd</a></li>
-<li><a href="#org8dadb41">2.8. obj</a></li>
-<li><a href="#org94b2fbc">2.9. rnd</a></li>
-<li><a href="#org90d6fb5">2.10. #</a></li>
-<li><a href="#org8044d79">2.11. out</a></li>
-<li><a href="#org2b4a17e">2.12. set</a></li>
-<li><a href="#orgdc849dc">2.13. variables usage</a></li>
-<li><a href="#org9ac5f17">2.14. cmp</a></li>
-<li><a href="#org827caa4">2.15. ?</a></li>
-<li><a href="#org915b0c2">2.16. dum</a></li>
+<li><a href="#org8c35439">2.1. here</a></li>
+<li><a href="#orgd4a951e">2.2. p</a></li>
+<li><a href="#org9ff2be1">2.3. f</a></li>
+<li><a href="#org60a4157">2.4. warn</a></li>
+<li><a href="#org7f6109e">2.5. end</a></li>
+<li><a href="#org715d682">2.6. mtl</a></li>
+<li><a href="#orga7c6609">2.7. mtlrnd</a></li>
+<li><a href="#org790cfca">2.8. obj</a></li>
+<li><a href="#org870a26b">2.9. rnd</a></li>
+<li><a href="#org55b9fbe">2.10. #</a></li>
+<li><a href="#orgead875d">2.11. out</a></li>
+<li><a href="#org9634c81">2.12. set</a></li>
+<li><a href="#orge74d322">2.13. variables usage</a></li>
+<li><a href="#orgba12fc1">2.14. cmp</a></li>
+<li><a href="#org648d4ad">2.15. ?</a></li>
+<li><a href="#orgdcb9efa">2.16. dum</a></li>
 </ul>
 </li>
-<li><a href="#org63bd64b">3. Installation</a>
+<li><a href="#org85d203b">3. Installation</a>
 <ul>
-<li><a href="#org378d4d8">3.1. System requirements</a></li>
-<li><a href="#orgf1639b6">3.2. Directory layout</a></li>
+<li><a href="#org2801213">3.1. System requirements</a></li>
+<li><a href="#org9d2c537">3.2. Directory layout</a></li>
 </ul>
 </li>
-<li><a href="#org6a7c5f8">4. Usage</a></li>
+<li><a href="#org944e52f">4. Usage</a></li>
 </ul>
 </div>
 </div>
@@ -1157,8 +1157,8 @@ hsAddReviewPanels();
 </style>
 
 
-<div id="outline-container-org9b96c40" class="outline-2">
-<h2 id="org9b96c40"><span class="section-number-2">1.</span> Operating principle</h2>
+<div id="outline-container-orgf1b7289" class="outline-2">
+<h2 id="orgf1b7289"><span class="section-number-2">1.</span> Operating principle</h2>
 <div class="outline-text-2" id="text-1">
 <p>
 Parses scene definition language and creates 3D world based on
@@ -1221,60 +1221,60 @@ They were produced by importing generated <a href="https://en.wikipedia.org/wiki
 </p>
 </div>
 
-<div id="outline-container-org1ec11a9" class="outline-3">
-<h3 id="org1ec11a9"><span class="section-number-3">1.1.</span> Rectangular city</h3>
+<div id="outline-container-org95f664d" class="outline-3">
+<h3 id="org95f664d"><span class="section-number-3">1.1.</span> Rectangular city</h3>
 <div class="outline-text-3" id="text-1-1">
 
-<div id="org22fa1b0" class="figure">
+<div id="orgc4c8173" class="figure">
 <p><img src="rectangular city, 1.jpeg" alt="rectangular city, 1.jpeg" class="responsive-img" />
 </p>
 </div>
 
 
-<div id="org93381fc" class="figure">
+<div id="orgefc3ad3" class="figure">
 <p><img src="rectangular city, 2.jpeg" alt="rectangular city, 2.jpeg" class="responsive-img" />
 </p>
 </div>
 
 
-<div id="org55e240e" class="figure">
+<div id="orgadd710d" class="figure">
 <p><img src="rectangular city, 3.jpeg" alt="rectangular city, 3.jpeg" class="responsive-img" />
 </p>
 </div>
 </div>
 </div>
-<div id="outline-container-org8d8669b" class="outline-3">
-<h3 id="org8d8669b"><span class="section-number-3">1.2.</span> Hexagonal city</h3>
+<div id="outline-container-orgd49910d" class="outline-3">
+<h3 id="orgd49910d"><span class="section-number-3">1.2.</span> Hexagonal city</h3>
 <div class="outline-text-3" id="text-1-2">
 
-<div id="orge371518" class="figure">
+<div id="orgf0f333c" class="figure">
 <p><img src="hexagonal city, 1.jpeg" alt="hexagonal city, 1.jpeg" class="responsive-img" />
 </p>
 </div>
 
 
-<div id="orged38ba4" class="figure">
+<div id="org1247089" class="figure">
 <p><img src="hexagonal city, 2.jpeg" alt="hexagonal city, 2.jpeg" class="responsive-img" />
 </p>
 </div>
 
 
-<div id="orgf5ba996" class="figure">
+<div id="orge7092db" class="figure">
 <p><img src="hexagonal city, 3.jpeg" alt="hexagonal city, 3.jpeg" class="responsive-img" />
 </p>
 </div>
 </div>
 </div>
 </div>
-<div id="outline-container-org10001c3" class="outline-2">
-<h2 id="org10001c3"><span class="section-number-2">2.</span> Scene description language</h2>
+<div id="outline-container-org3d452d2" class="outline-2">
+<h2 id="org3d452d2"><span class="section-number-2">2.</span> Scene description language</h2>
 <div class="outline-text-2" id="text-2">
 <p>
 See also examples.
 </p>
 </div>
-<div id="outline-container-org8d84131" class="outline-3">
-<h3 id="org8d84131"><span class="section-number-3">2.1.</span> here</h3>
+<div id="outline-container-org8c35439" class="outline-3">
+<h3 id="org8c35439"><span class="section-number-3">2.1.</span> here</h3>
 <div class="outline-text-3" id="text-2-1">
 <pre class="example">
 here
@@ -1285,8 +1285,8 @@ defines new segment
 </p>
 </div>
 </div>
-<div id="outline-container-org7419e67" class="outline-3">
-<h3 id="org7419e67"><span class="section-number-3">2.2.</span> p</h3>
+<div id="outline-container-orgd4a951e" class="outline-3">
+<h3 id="orgd4a951e"><span class="section-number-3">2.2.</span> p</h3>
 <div class="outline-text-3" id="text-2-2">
 <pre class="example">
 p  x y z
@@ -1297,8 +1297,8 @@ defines new point
 </p>
 </div>
 </div>
-<div id="outline-container-orgb69e4b2" class="outline-3">
-<h3 id="orgb69e4b2"><span class="section-number-3">2.3.</span> f</h3>
+<div id="outline-container-org9ff2be1" class="outline-3">
+<h3 id="org9ff2be1"><span class="section-number-3">2.3.</span> f</h3>
 <div class="outline-text-3" id="text-2-3">
 <pre class="example">
 f  p1 p2 p3 p4
@@ -1309,8 +1309,8 @@ defines new polygon,  p4  may be unused
 </p>
 </div>
 </div>
-<div id="outline-container-org203da35" class="outline-3">
-<h3 id="org203da35"><span class="section-number-3">2.4.</span> warn</h3>
+<div id="outline-container-org60a4157" class="outline-3">
+<h3 id="org60a4157"><span class="section-number-3">2.4.</span> warn</h3>
 <div class="outline-text-3" id="text-2-4">
 <pre class="example">
 warn  &lt;message&gt;
@@ -1321,8 +1321,8 @@ displays warning message, and wait for key
 </p>
 </div>
 </div>
-<div id="outline-container-orgbc87a55" class="outline-3">
-<h3 id="orgbc87a55"><span class="section-number-3">2.5.</span> end</h3>
+<div id="outline-container-org7f6109e" class="outline-3">
+<h3 id="org7f6109e"><span class="section-number-3">2.5.</span> end</h3>
 <div class="outline-text-3" id="text-2-5">
 <pre class="example">
 end
@@ -1333,8 +1333,8 @@ terminates parser
 </p>
 </div>
 </div>
-<div id="outline-container-org7bef1bc" class="outline-3">
-<h3 id="org7bef1bc"><span class="section-number-3">2.6.</span> mtl</h3>
+<div id="outline-container-org715d682" class="outline-3">
+<h3 id="org715d682"><span class="section-number-3">2.6.</span> mtl</h3>
 <div class="outline-text-3" id="text-2-6">
 <pre class="example">
 mtl  material
@@ -1345,8 +1345,8 @@ selects material
 </p>
 </div>
 </div>
-<div id="outline-container-orge2d7101" class="outline-3">
-<h3 id="orge2d7101"><span class="section-number-3">2.7.</span> mtlrnd</h3>
+<div id="outline-container-orga7c6609" class="outline-3">
+<h3 id="orga7c6609"><span class="section-number-3">2.7.</span> mtlrnd</h3>
 <div class="outline-text-3" id="text-2-7">
 <pre class="example">
 mtlrnd  material ...
@@ -1357,8 +1357,8 @@ selects random material from list
 </p>
 </div>
 </div>
-<div id="outline-container-org8dadb41" class="outline-3">
-<h3 id="org8dadb41"><span class="section-number-3">2.8.</span> obj</h3>
+<div id="outline-container-org790cfca" class="outline-3">
+<h3 id="org790cfca"><span class="section-number-3">2.8.</span> obj</h3>
 <div class="outline-text-3" id="text-2-8">
 <pre class="example">
 obj  object xz45 xy20 x+3 y*2
@@ -1373,14 +1373,14 @@ directly from file, and not chached, to allow loading of greater than
 </p>
 
 
-<div id="org913d2fa" class="figure">
+<div id="org5a9f4f4" class="figure">
 <p><img src="rotation.png" alt="rotation.png" />
 </p>
 </div>
 </div>
 </div>
-<div id="outline-container-org94b2fbc" class="outline-3">
-<h3 id="org94b2fbc"><span class="section-number-3">2.9.</span> rnd</h3>
+<div id="outline-container-org870a26b" class="outline-3">
+<h3 id="org870a26b"><span class="section-number-3">2.9.</span> rnd</h3>
 <div class="outline-text-3" id="text-2-9">
 <pre class="example">
 rnd  p^1^2^3 p^7^2^1
@@ -1391,8 +1391,8 @@ select random command to execute, ^ will be converted to spaces.
 </p>
 </div>
 </div>
-<div id="outline-container-org90d6fb5" class="outline-3">
-<h3 id="org90d6fb5"><span class="section-number-3">2.10.</span> #</h3>
+<div id="outline-container-org55b9fbe" class="outline-3">
+<h3 id="org55b9fbe"><span class="section-number-3">2.10.</span> #</h3>
 <div class="outline-text-3" id="text-2-10">
 <pre class="example">
 # whatever text
@@ -1403,8 +1403,8 @@ comment
 </p>
 </div>
 </div>
-<div id="outline-container-org8044d79" class="outline-3">
-<h3 id="org8044d79"><span class="section-number-3">2.11.</span> out</h3>
+<div id="outline-container-orgead875d" class="outline-3">
+<h3 id="orgead875d"><span class="section-number-3">2.11.</span> out</h3>
 <div class="outline-text-3" id="text-2-11">
 <pre class="example">
 out  file
@@ -1415,8 +1415,8 @@ specify output file name, must be first command
 </p>
 </div>
 </div>
-<div id="outline-container-org2b4a17e" class="outline-3">
-<h3 id="org2b4a17e"><span class="section-number-3">2.12.</span> set</h3>
+<div id="outline-container-org9634c81" class="outline-3">
+<h3 id="org9634c81"><span class="section-number-3">2.12.</span> set</h3>
 <div class="outline-text-3" id="text-2-12">
 <pre class="example">
 set  variable  contents
@@ -1428,8 +1428,8 @@ string. max variables is 100. first is 0.
 </p>
 </div>
 </div>
-<div id="outline-container-orgdc849dc" class="outline-3">
-<h3 id="orgdc849dc"><span class="section-number-3">2.13.</span> variables usage</h3>
+<div id="outline-container-orge74d322" class="outline-3">
+<h3 id="orge74d322"><span class="section-number-3">2.13.</span> variables usage</h3>
 <div class="outline-text-3" id="text-2-13">
 <pre class="example">
 anycommand %1 anything
@@ -1440,8 +1440,8 @@ inserts variable 1 contents info line
 </p>
 </div>
 </div>
-<div id="outline-container-org9ac5f17" class="outline-3">
-<h3 id="org9ac5f17"><span class="section-number-3">2.14.</span> cmp</h3>
+<div id="outline-container-orgba12fc1" class="outline-3">
+<h3 id="orgba12fc1"><span class="section-number-3">2.14.</span> cmp</h3>
 <div class="outline-text-3" id="text-2-14">
 <pre class="example">
 cmp  flag string1 string2
@@ -1452,8 +1452,8 @@ compares strings, and inserts TRUE to flag, if they are equal, else inserts FALS
 </p>
 </div>
 </div>
-<div id="outline-container-org827caa4" class="outline-3">
-<h3 id="org827caa4"><span class="section-number-3">2.15.</span> ?</h3>
+<div id="outline-container-org648d4ad" class="outline-3">
+<h3 id="org648d4ad"><span class="section-number-3">2.15.</span> ?</h3>
 <div class="outline-text-3" id="text-2-15">
 <pre class="example">
 ?flag anycommand
@@ -1468,8 +1468,8 @@ exapmle: ?3 obj car z*2 xy45
 </p>
 </div>
 </div>
-<div id="outline-container-org915b0c2" class="outline-3">
-<h3 id="org915b0c2"><span class="section-number-3">2.16.</span> dum</h3>
+<div id="outline-container-orgdcb9efa" class="outline-3">
+<h3 id="orgdcb9efa"><span class="section-number-3">2.16.</span> dum</h3>
 <div class="outline-text-3" id="text-2-16">
 <pre class="example">
 dum
@@ -1482,16 +1482,16 @@ dummy function, does notheing
 </div>
 </div>
 
-<div id="outline-container-org63bd64b" class="outline-2">
-<h2 id="org63bd64b"><span class="section-number-2">3.</span> Installation</h2>
+<div id="outline-container-org85d203b" class="outline-2">
+<h2 id="org85d203b"><span class="section-number-2">3.</span> Installation</h2>
 <div class="outline-text-2" id="text-3">
 <p>
 Edit <b>bin/3dparse.bas</b> file and update include path in there.
 </p>
 </div>
 
-<div id="outline-container-org378d4d8" class="outline-3">
-<h3 id="org378d4d8"><span class="section-number-3">3.1.</span> System requirements</h3>
+<div id="outline-container-org2801213" class="outline-3">
+<h3 id="org2801213"><span class="section-number-3">3.1.</span> System requirements</h3>
 <div class="outline-text-3" id="text-3-1">
 <table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
 
@@ -1522,8 +1522,8 @@ Edit <b>bin/3dparse.bas</b> file and update include path in there.
 </div>
 </div>
 
-<div id="outline-container-orgf1639b6" class="outline-3">
-<h3 id="orgf1639b6"><span class="section-number-3">3.2.</span> Directory layout</h3>
+<div id="outline-container-org9d2c537" class="outline-3">
+<h3 id="org9d2c537"><span class="section-number-3">3.2.</span> Directory layout</h3>
 <div class="outline-text-3" id="text-3-2">
 <dl class="org-dl">
 <dt>bin</dt><dd><dl class="org-dl">
@@ -1540,8 +1540,8 @@ Edit <b>bin/3dparse.bas</b> file and update include path in there.
 </div>
 </div>
 
-<div id="outline-container-org6a7c5f8" class="outline-2">
-<h2 id="org6a7c5f8"><span class="section-number-2">4.</span> Usage</h2>
+<div id="outline-container-org944e52f" class="outline-2">
+<h2 id="org944e52f"><span class="section-number-2">4.</span> Usage</h2>
 <div class="outline-text-2" id="text-4">
 <p>
 Make sure you have QB binaries in your PATH.  Execute
@@ -1566,7 +1566,7 @@ Visualize scene with your favourite renderer.
 </div>
 </div>
 <div id="postamble" class="status">
-<p class="date">Created: 2025-07-29 ti 17:23</p>
+<p class="date">Created: 2025-07-29 ti 17:32</p>
 <p class="validation"><a href="https://validator.w3.org/check?uri=referer">Validate</a></p>
 </div>
 </body>
index f733f57..015d32f 100755 (executable)
@@ -4,7 +4,13 @@
 ' by Svjatoslav Agejenko.\r
 ' Email: svjatoslav@svjatoslav.eu\r
 ' Homepage: http://www.svjatoslav.eu\r
-\r
+'\r
+' Note: This program requires special Terminate and Stay Resident (TSR) mouse driver\r
+' to be loaded *before* starting the current QBasic program itself.\r
+' Here you can read about TSR mouse driver and download needed qbext.com binary:\r
+' https://www3.svjatoslav.eu/projects/qbasicapps/Miscellaneous/Mouse%20driver/index.html\r
+'\r
+'\r
 ' Changelog:\r
 ' 2003.12, Initial version\r
 ' 2024 - 2025, Improved program readability\r
index 8b6705c..7a61679 100644 (file)
@@ -3,7 +3,7 @@
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
 <head>
-<!-- 2025-07-29 ti 17:23 -->
+<!-- 2025-07-29 ti 17:32 -->
 <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
 <meta name="viewport" content="width=device-width, initial-scale=1" />
 <title>Miscellaneous 3D graphics demos</title>
 <h2>Table of Contents</h2>
 <div id="text-table-of-contents" role="doc-toc">
 <ul>
-<li><a href="#orge5bb87a">1. Rotating exclamation mark</a></li>
-<li><a href="#orgfd0b515">2. 3D bouncing ball</a></li>
-<li><a href="#orgdc50e14">3. 3D text in a room</a></li>
-<li><a href="#org8304227">4. 3D bouncing cubes on grid floor</a></li>
-<li><a href="#org706df6c">5. Matrix math for rotation in 3D space</a></li>
-<li><a href="#org5746e13">6. Maze explorer</a></li>
-<li><a href="#orgc537390">7. Tank animation</a></li>
-<li><a href="#org57754a8">8. Tiled room</a></li>
+<li><a href="#orgaae5eaa">1. Rotating exclamation mark</a></li>
+<li><a href="#org7d41cb1">2. 3D bouncing ball</a></li>
+<li><a href="#orgad832ff">3. 3D text in a room</a></li>
+<li><a href="#orgf426f46">4. 3D bouncing cubes on grid floor</a></li>
+<li><a href="#org6ad1548">5. Matrix math for rotation in 3D space</a></li>
+<li><a href="#org5023bdf">6. Maze explorer</a></li>
+<li><a href="#org36e3fff">7. Tank animation</a></li>
+<li><a href="#orgd392132">8. Tiled room</a></li>
 </ul>
 </div>
 </div>
   }
 </style>
 
-<div id="outline-container-orge5bb87a" class="outline-2">
-<h2 id="orge5bb87a"><span class="section-number-2">1.</span> Rotating exclamation mark</h2>
+<div id="outline-container-orgaae5eaa" class="outline-2">
+<h2 id="orgaae5eaa"><span class="section-number-2">1.</span> Rotating exclamation mark</h2>
 <div class="outline-text-2" id="text-1">
 <p>
 Wireframe 3D model of a rotating exclamation mark.
@@ -258,8 +258,8 @@ Wireframe 3D model of a rotating exclamation mark.
 </div>
 </div>
 
-<div id="outline-container-orgfd0b515" class="outline-2">
-<h2 id="orgfd0b515"><span class="section-number-2">2.</span> 3D bouncing ball</h2>
+<div id="outline-container-org7d41cb1" class="outline-2">
+<h2 id="org7d41cb1"><span class="section-number-2">2.</span> 3D bouncing ball</h2>
 <div class="outline-text-2" id="text-2">
 <p>
 This QBasic program creates a visually engaging 3D animation of a
@@ -280,8 +280,8 @@ of early computer graphics techniques.
 </div>
 </div>
 
-<div id="outline-container-orgdc50e14" class="outline-2">
-<h2 id="orgdc50e14"><span class="section-number-2">3.</span> 3D text in a room</h2>
+<div id="outline-container-orgad832ff" class="outline-2">
+<h2 id="orgad832ff"><span class="section-number-2">3.</span> 3D text in a room</h2>
 <div class="outline-text-2" id="text-3">
 <p>
 Wireframe 3D text hanging in a wireframe 3D room. User can look and
@@ -301,8 +301,8 @@ fly around in all directions.
 </div>
 </div>
 
-<div id="outline-container-org8304227" class="outline-2">
-<h2 id="org8304227"><span class="section-number-2">4.</span> 3D bouncing cubes on grid floor</h2>
+<div id="outline-container-orgf426f46" class="outline-2">
+<h2 id="orgf426f46"><span class="section-number-2">4.</span> 3D bouncing cubes on grid floor</h2>
 <div class="outline-text-2" id="text-4">
 <p>
 3D wireframe cubes bouncing on a grid floor, creating an immersive and
@@ -322,8 +322,8 @@ dynamic visual effect.
 </div>
 </div>
 
-<div id="outline-container-org706df6c" class="outline-2">
-<h2 id="org706df6c"><span class="section-number-2">5.</span> Matrix math for rotation in 3D space</h2>
+<div id="outline-container-org6ad1548" class="outline-2">
+<h2 id="org6ad1548"><span class="section-number-2">5.</span> Matrix math for rotation in 3D space</h2>
 <div class="outline-text-2" id="text-5">
 <p>
 Instead of combining simple 2D rotors, pixels in this 3D space are
@@ -343,8 +343,8 @@ rotated by using matrix multiplications.
 </div>
 </div>
 
-<div id="outline-container-org5746e13" class="outline-2">
-<h2 id="org5746e13"><span class="section-number-2">6.</span> Maze explorer</h2>
+<div id="outline-container-org5023bdf" class="outline-2">
+<h2 id="org5023bdf"><span class="section-number-2">6.</span> Maze explorer</h2>
 <div class="outline-text-2" id="text-6">
 <p>
 The Evolving 3D Maze Explorer is a QBasic program that generates and
@@ -355,7 +355,7 @@ changes as they navigate through it.
 </p>
 
 
-<div id="org32f82c8" class="figure">
+<div id="org5f19c62" class="figure">
 <p><a href="Maze%20explorer.bas" class="responsive-img"><img src="Maze%20explorer.png" alt="Maze%20explorer.png" class="responsive-img" /></a>
 </p>
 </div>
@@ -366,8 +366,8 @@ changes as they navigate through it.
 </div>
 </div>
 
-<div id="outline-container-orgc537390" class="outline-2">
-<h2 id="orgc537390"><span class="section-number-2">7.</span> Tank animation</h2>
+<div id="outline-container-org36e3fff" class="outline-2">
+<h2 id="org36e3fff"><span class="section-number-2">7.</span> Tank animation</h2>
 <div class="outline-text-2" id="text-7">
 <p>
 Animated tank driving through the bridge back and forward. User can
@@ -387,8 +387,8 @@ look and fly around in all directions.
 </div>
 </div>
 
-<div id="outline-container-org57754a8" class="outline-2">
-<h2 id="org57754a8"><span class="section-number-2">8.</span> Tiled room</h2>
+<div id="outline-container-orgd392132" class="outline-2">
+<h2 id="orgd392132"><span class="section-number-2">8.</span> Tiled room</h2>
 <div class="outline-text-2" id="text-8">
 <p>
 Room with some tiles on the wall and on the floor. User can freely fly
@@ -409,7 +409,7 @@ around.
 </div>
 </div>
 <div id="postamble" class="status">
-<p class="date">Created: 2025-07-29 ti 17:23</p>
+<p class="date">Created: 2025-07-29 ti 17:32</p>
 <p class="validation"><a href="https://validator.w3.org/check?uri=referer">Validate</a></p>
 </div>
 </body>
index 5a2f74d..ecd8abd 100755 (executable)
@@ -8,11 +8,14 @@
 ' Changelog:
 ' 2003, Initial version.
 ' 2024, Improved program readability.
-
+'
 ' User can navigate through the galaxy using mouse or keyboard controls.
-' To use mouse controls, program requires a special TSR (terminate and stay resident)
-' program to be loaded. The TSR makes mouse input available to the QBasic program.
-
+'
+' Note: This program requires special Terminate and Stay Resident (TSR) mouse driver
+' to be loaded *before* starting the current QBasic program itself.
+' Here you can read about TSR mouse driver and download needed qbext.com binary:
+' https://www3.svjatoslav.eu/projects/qbasicapps/Miscellaneous/Mouse%20driver/index.html
+'
 ' Navigation controls:
 ' - Press left and right mouse buttons simultaneously to move in X and Z axis.
 ' - Press right mouse button to move in Y axis.
index 7fbbc9d..37b44ff 100755 (executable)
@@ -8,7 +8,12 @@
 ' and decrease level of detail of the universe regions depending\r
 ' on where user is in the universe and maintaining reasonable\r
 ' quantity of stars to render at any given time.\r
-\r
+'\r
+' Note: This program requires special Terminate and Stay Resident (TSR) mouse driver\r
+' to be loaded *before* starting the current QBasic program itself.\r
+' Here you can read about TSR mouse driver and download needed qbext.com binary:\r
+' https://www3.svjatoslav.eu/projects/qbasicapps/Miscellaneous/Mouse%20driver/index.html\r
+'\r
 ' This program is free software: released under Creative Commons Zero (CC0) license\r
 ' by Svjatoslav Agejenko.\r
 ' Email: svjatoslav@svjatoslav.eu\r
index 2acab4f..d3444ee 100644 (file)
@@ -3,7 +3,7 @@
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
 <head>
-<!-- 2025-07-29 ti 17:23 -->
+<!-- 2025-07-29 ti 17:32 -->
 <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
 <meta name="viewport" content="width=device-width, initial-scale=1" />
 <title>Space themed 3D graphics</title>
 <h2>Table of Contents</h2>
 <div id="text-table-of-contents" role="doc-toc">
 <ul>
-<li><a href="#org4a09785">1. Galaxy explorer</a></li>
-<li><a href="#orga571239">2. Rocket simulator</a></li>
-<li><a href="#org2e0f8b1">3. Stars</a></li>
-<li><a href="#org700d9c6">4. Universe explorer</a></li>
+<li><a href="#org579e8fc">1. Galaxy explorer</a></li>
+<li><a href="#orgaa94078">2. Rocket simulator</a></li>
+<li><a href="#orgba65f6b">3. Stars</a></li>
+<li><a href="#org406c8b3">4. Universe explorer</a></li>
 </ul>
 </div>
 </div>
   }
 </style>
 
-<div id="outline-container-org4a09785" class="outline-2">
-<h2 id="org4a09785"><span class="section-number-2">1.</span> Galaxy explorer</h2>
+<div id="outline-container-org579e8fc" class="outline-2">
+<h2 id="org579e8fc"><span class="section-number-2">1.</span> Galaxy explorer</h2>
 <div class="outline-text-2" id="text-1">
 <p>
 This QBasic program renders a navigable 3D point cloud galaxy,
@@ -245,7 +245,7 @@ galaxy with stars distributed in a spiral pattern.
 </p>
 
 
-<div id="org2f818b1" class="figure">
+<div id="org63f0352" class="figure">
 <p><a href="Galaxy%20explorer.bas" class="responsive-img"><img src="Galaxy%20explorer.png" alt="Galaxy%20explorer.png" class="responsive-img" /></a>
 </p>
 </div>
@@ -256,8 +256,8 @@ galaxy with stars distributed in a spiral pattern.
 </div>
 </div>
 
-<div id="outline-container-orga571239" class="outline-2">
-<h2 id="orga571239"><span class="section-number-2">2.</span> Rocket simulator</h2>
+<div id="outline-container-orgaa94078" class="outline-2">
+<h2 id="orgaa94078"><span class="section-number-2">2.</span> Rocket simulator</h2>
 <div class="outline-text-2" id="text-2">
 <p>
 QBasic program that simulates the takeoff and flight of a rocket from
@@ -279,8 +279,8 @@ observe the rocket's trajectory from various angles.
 </div>
 </div>
 
-<div id="outline-container-org2e0f8b1" class="outline-2">
-<h2 id="org2e0f8b1"><span class="section-number-2">3.</span> Stars</h2>
+<div id="outline-container-orgba65f6b" class="outline-2">
+<h2 id="orgba65f6b"><span class="section-number-2">3.</span> Stars</h2>
 <div class="outline-text-2" id="text-3">
 <p>
 The 3D Starfield Simulation is a QBasic program that creates a
@@ -320,8 +320,8 @@ based on its distance, with closer stars appearing brighter.</dd>
 </div>
 </div>
 
-<div id="outline-container-org700d9c6" class="outline-2">
-<h2 id="org700d9c6"><span class="section-number-2">4.</span> Universe explorer</h2>
+<div id="outline-container-org406c8b3" class="outline-2">
+<h2 id="org406c8b3"><span class="section-number-2">4.</span> Universe explorer</h2>
 <div class="outline-text-2" id="text-4">
 <p>
 This QBasic program that simulates a navigable 3D universe. Users can
@@ -358,19 +358,19 @@ limiting the number of rendered objects based on distance.</dd>
 </dl>
 
 
-<div id="org0167a78" class="figure">
+<div id="org4d67ee0" class="figure">
 <p><a href="Universe%20explorer/Universe%20explorer.bas" class="responsive-img"><img src="Universe%20explorer/1.png" alt="1.png" class="responsive-img" /></a>
 </p>
 </div>
 
 
-<div id="org602d0e3" class="figure">
+<div id="org5ca4cf4" class="figure">
 <p><a href="Universe%20explorer/Universe%20explorer.bas" class="responsive-img"><img src="Universe%20explorer/2.png" alt="2.png" class="responsive-img" /></a>
 </p>
 </div>
 
 
-<div id="org1dad823" class="figure">
+<div id="orga48a349" class="figure">
 <p><a href="Universe%20explorer/Universe%20explorer.bas" class="responsive-img"><img src="Universe%20explorer/3.png" alt="3.png" class="responsive-img" /></a>
 </p>
 </div>
@@ -382,7 +382,7 @@ limiting the number of rendered objects based on distance.</dd>
 </div>
 </div>
 <div id="postamble" class="status">
-<p class="date">Created: 2025-07-29 ti 17:23</p>
+<p class="date">Created: 2025-07-29 ti 17:32</p>
 <p class="validation"><a href="https://validator.w3.org/check?uri=referer">Validate</a></p>
 </div>
 </body>
index a23a9a3..52e2132 100755 (executable)
@@ -18,9 +18,14 @@ DECLARE SUB putChar (a$, x!, y!, z!)
 ' Email: svjatoslav@svjatoslav.eu\r
 ' Homepage: http://www.svjatoslav.eu\r
 '\r
+' Note: This program requires special Terminate and Stay Resident (TSR) mouse driver\r
+' to be loaded *before* starting the current QBasic program itself.\r
+' Here you can read about TSR mouse driver and download needed qbext.com binary:\r
+' https://www3.svjatoslav.eu/projects/qbasicapps/Miscellaneous/Mouse%20driver/index.html\r
+'\r
 ' Changelog:\r
 ' 2004.1 - Initial version\r
-'\r
+' 2025 - Improved program readability\r
 \r
 DECLARE SUB fill3 ()\r
 DECLARE SUB fill1 ()\r
index 430850b..b4d8be5 100644 (file)
@@ -3,7 +3,7 @@
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
 <head>
-<!-- 2025-07-29 ti 17:23 -->
+<!-- 2025-07-29 ti 17:33 -->
 <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
 <meta name="viewport" content="width=device-width, initial-scale=1" />
 <title>Plotting</title>
 <h2>Table of Contents</h2>
 <div id="text-table-of-contents" role="doc-toc">
 <ul>
-<li><a href="#orge0e4649">1. 2D graph</a></li>
-<li><a href="#org34f8a15">2. 3D graph</a></li>
-<li><a href="#org3d15e8c">3. Deriviative calculator</a></li>
-<li><a href="#orgb4ad73f">4. Sine and cosine table</a></li>
+<li><a href="#org2502cf9">1. 2D graph</a></li>
+<li><a href="#org6a05e6a">2. 3D graph</a></li>
+<li><a href="#org1c92b68">3. Deriviative calculator</a></li>
+<li><a href="#orgdfab383">4. Sine and cosine table</a></li>
 </ul>
 </div>
 </div>
   }
 </style>
 
-<div id="outline-container-orge0e4649" class="outline-2">
-<h2 id="orge0e4649"><span class="section-number-2">1.</span> 2D graph</h2>
+<div id="outline-container-org2502cf9" class="outline-2">
+<h2 id="org2502cf9"><span class="section-number-2">1.</span> 2D graph</h2>
 <div class="outline-text-2" id="text-1">
 <p>
 The 2D Graph Plotter is a simple yet effective program written in
@@ -251,7 +251,7 @@ based on a user-defined mathematical function.
 </p>
 
 
-<div id="org06acf88" class="figure">
+<div id="org176949c" class="figure">
 <p><a href="2D%20graph%20plot.bas" class="responsive-img"><img src="2D%20graph%20plot.png" alt="2D%20graph%20plot.png" class="responsive-img" /></a>
 </p>
 </div>
@@ -262,8 +262,8 @@ based on a user-defined mathematical function.
 </div>
 </div>
 
-<div id="outline-container-org34f8a15" class="outline-2">
-<h2 id="org34f8a15"><span class="section-number-2">2.</span> 3D graph</h2>
+<div id="outline-container-org6a05e6a" class="outline-2">
+<h2 id="org6a05e6a"><span class="section-number-2">2.</span> 3D graph</h2>
 <div class="outline-text-2" id="text-2">
 <p>
 The 3D Heightmap Explorer is a QBasic program designed to visualize
@@ -299,7 +299,7 @@ grid.
 </p>
 
 
-<div id="orgc06af10" class="figure">
+<div id="org02ba301" class="figure">
 <p><a href="3D%20graph.bas" class="responsive-img"><img src="3D%20graph.png" alt="3D%20graph.png" class="responsive-img" /></a>
 </p>
 </div>
@@ -310,8 +310,8 @@ grid.
 </div>
 </div>
 
-<div id="outline-container-org3d15e8c" class="outline-2">
-<h2 id="org3d15e8c"><span class="section-number-2">3.</span> Deriviative calculator</h2>
+<div id="outline-container-org1c92b68" class="outline-2">
+<h2 id="org1c92b68"><span class="section-number-2">3.</span> Deriviative calculator</h2>
 <div class="outline-text-2" id="text-3">
 <p>
 This QBasic program is designed to compute and plot an arbitrary
@@ -324,7 +324,7 @@ visualized.
 </p>
 
 
-<div id="orgfa93f7c" class="figure">
+<div id="org306f9da" class="figure">
 <p><a href="Deriviative%20calculator.bas" class="responsive-img"><img src="Deriviative%20calculator.png" alt="Deriviative%20calculator.png" class="responsive-img" /></a>
 </p>
 </div>
@@ -335,8 +335,8 @@ visualized.
 </div>
 </div>
 
-<div id="outline-container-orgb4ad73f" class="outline-2">
-<h2 id="orgb4ad73f"><span class="section-number-2">4.</span> Sine and cosine table</h2>
+<div id="outline-container-orgdfab383" class="outline-2">
+<h2 id="orgdfab383"><span class="section-number-2">4.</span> Sine and cosine table</h2>
 <div class="outline-text-2" id="text-4">
 <p>
 The SIN &amp; COS Table Generator is a QBasic program designed to visually
@@ -346,7 +346,7 @@ visual representation of these fundamental trigonometric functions.
 </p>
 
 
-<div id="org50cbfdd" class="figure">
+<div id="orgbd22404" class="figure">
 <p><a href="Sine%20and%20cosine%20table.bas" class="responsive-img"><img src="Sine%20and%20cosine%20table.png" alt="Sine%20and%20cosine%20table.png" class="responsive-img" /></a>
 </p>
 </div>
@@ -358,7 +358,7 @@ visual representation of these fundamental trigonometric functions.
 </div>
 </div>
 <div id="postamble" class="status">
-<p class="date">Created: 2025-07-29 ti 17:23</p>
+<p class="date">Created: 2025-07-29 ti 17:33</p>
 <p class="validation"><a href="https://validator.w3.org/check?uri=referer">Validate</a></p>
 </div>
 </body>
index 0bef4be..46fbb93 100644 (file)
@@ -3,7 +3,7 @@
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
 <head>
-<!-- 2025-07-29 ti 17:23 -->
+<!-- 2025-07-29 ti 17:33 -->
 <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
 <meta name="viewport" content="width=device-width, initial-scale=1" />
 <title>Simulation</title>
 <h2>Table of Contents</h2>
 <div id="text-table-of-contents" role="doc-toc">
 <ul>
-<li><a href="#org404746f">1. Explosion simulator</a></li>
-<li><a href="#org03af3fa">2. Gravity in 2D</a></li>
-<li><a href="#orgc0162bf">3. Gravity in 3D</a></li>
-<li><a href="#org509432f">4. Interference</a></li>
-<li><a href="#orgd5fb0bf">5. Interferogram</a></li>
-<li><a href="#org89ce187">6. Surface tension</a></li>
-<li><a href="#org984994e">7. Wave 1</a></li>
-<li><a href="#org991d287">8. Wave 2</a></li>
+<li><a href="#org9670ce6">1. Explosion simulator</a></li>
+<li><a href="#orgf0fb10c">2. Gravity in 2D</a></li>
+<li><a href="#org5e4286b">3. Gravity in 3D</a></li>
+<li><a href="#org6c79c4d">4. Interference</a></li>
+<li><a href="#org1eb260d">5. Interferogram</a></li>
+<li><a href="#org4f22fbb">6. Surface tension</a></li>
+<li><a href="#orgce7433b">7. Wave 1</a></li>
+<li><a href="#org31a7a22">8. Wave 2</a></li>
 </ul>
 </div>
 </div>
   }
 </style>
 
-<div id="outline-container-org404746f" class="outline-2">
-<h2 id="org404746f"><span class="section-number-2">1.</span> Explosion simulator</h2>
+<div id="outline-container-org9670ce6" class="outline-2">
+<h2 id="org9670ce6"><span class="section-number-2">1.</span> Explosion simulator</h2>
 <div class="outline-text-2" id="text-1">
 <p>
 This QBasic program simulates the propagation of shock waves in a gas
@@ -265,7 +265,7 @@ conditions by setting velocities to zero at wall boundaries.
 </p>
 
 
-<div id="org0f1ed22" class="figure">
+<div id="orgef649ac" class="figure">
 <p><a href="Explosion%20simulator.bas" class="responsive-img"><img src="Explosion%20simulator.png" alt="Explosion%20simulator.png" class="responsive-img" /></a>
 </p>
 </div>
@@ -276,8 +276,8 @@ conditions by setting velocities to zero at wall boundaries.
 </div>
 </div>
 
-<div id="outline-container-org03af3fa" class="outline-2">
-<h2 id="org03af3fa"><span class="section-number-2">2.</span> Gravity in 2D</h2>
+<div id="outline-container-orgf0fb10c" class="outline-2">
+<h2 id="orgf0fb10c"><span class="section-number-2">2.</span> Gravity in 2D</h2>
 <div class="outline-text-2" id="text-2">
 <p>
 The Gravitation Simulation program is a simple yet insightful QBasic
@@ -289,7 +289,7 @@ educational tool for understanding basic orbital mechanics.
 </p>
 
 
-<div id="org76706d3" class="figure">
+<div id="org5cadf6d" class="figure">
 <p><a href="Gravity%20in%202D.bas" class="responsive-img"><img src="Gravity%20in%202D.png" alt="Gravity%20in%202D.png" class="responsive-img" /></a>
 </p>
 </div>
@@ -300,8 +300,8 @@ educational tool for understanding basic orbital mechanics.
 </div>
 </div>
 
-<div id="outline-container-orgc0162bf" class="outline-2">
-<h2 id="orgc0162bf"><span class="section-number-2">3.</span> Gravity in 3D</h2>
+<div id="outline-container-org5e4286b" class="outline-2">
+<h2 id="org5e4286b"><span class="section-number-2">3.</span> Gravity in 3D</h2>
 <div class="outline-text-2" id="text-3">
 <p>
 This QBasic program simulates the gravitational interactions between
@@ -335,8 +335,8 @@ will reach stable configuration.
 </div>
 </div>
 
-<div id="outline-container-org509432f" class="outline-2">
-<h2 id="org509432f"><span class="section-number-2">4.</span> Interference</h2>
+<div id="outline-container-org6c79c4d" class="outline-2">
+<h2 id="org6c79c4d"><span class="section-number-2">4.</span> Interference</h2>
 <div class="outline-text-2" id="text-4">
 <p>
 This QBasic program simulates the interference pattern created by two
@@ -364,8 +364,8 @@ displayed as a third waveform.
 </div>
 </div>
 
-<div id="outline-container-orgd5fb0bf" class="outline-2">
-<h2 id="orgd5fb0bf"><span class="section-number-2">5.</span> Interferogram</h2>
+<div id="outline-container-org1eb260d" class="outline-2">
+<h2 id="org1eb260d"><span class="section-number-2">5.</span> Interferogram</h2>
 <div class="outline-text-2" id="text-5">
 <p>
 This QBasic program simulates the interference pattern created by
@@ -375,7 +375,7 @@ used in physics and engineering to analyze wave interactions.
 </p>
 
 
-<div id="org62898d1" class="figure">
+<div id="org0536985" class="figure">
 <p><a href="Interferogram.bas" class="responsive-img"><img src="Interferogram.png" alt="Interferogram.png" class="responsive-img" /></a>
 </p>
 </div>
@@ -386,8 +386,8 @@ used in physics and engineering to analyze wave interactions.
 </div>
 </div>
 
-<div id="outline-container-org89ce187" class="outline-2">
-<h2 id="org89ce187"><span class="section-number-2">6.</span> Surface tension</h2>
+<div id="outline-container-org4f22fbb" class="outline-2">
+<h2 id="org4f22fbb"><span class="section-number-2">6.</span> Surface tension</h2>
 <div class="outline-text-2" id="text-6">
 <p>
 This QBasic program simulates the behavior of water spills and the
@@ -411,7 +411,7 @@ water cell if surrounded by a high density of water cells.
 </p>
 
 
-<div id="org822b85e" class="figure">
+<div id="org5ac0a7f" class="figure">
 <p><a href="Surface%20tension.bas" class="responsive-img"><img src="Surface%20tension.png" alt="Surface%20tension.png" class="responsive-img" /></a>
 </p>
 </div>
@@ -422,8 +422,8 @@ water cell if surrounded by a high density of water cells.
 </div>
 </div>
 
-<div id="outline-container-org984994e" class="outline-2">
-<h2 id="org984994e"><span class="section-number-2">7.</span> Wave 1</h2>
+<div id="outline-container-orgce7433b" class="outline-2">
+<h2 id="orgce7433b"><span class="section-number-2">7.</span> Wave 1</h2>
 <div class="outline-text-2" id="text-7">
 <p>
 This QBasic program simulates the propagation of waves across a
@@ -439,7 +439,7 @@ loss.
 </p>
 
 
-<div id="org5271736" class="figure">
+<div id="orgd4f19c2" class="figure">
 <p><a href="Wave%201.bas" class="responsive-img"><img src="Wave%201.png" alt="Wave%201.png" class="responsive-img" /></a>
 </p>
 </div>
@@ -450,8 +450,8 @@ loss.
 </div>
 </div>
 
-<div id="outline-container-org991d287" class="outline-2">
-<h2 id="org991d287"><span class="section-number-2">8.</span> Wave 2</h2>
+<div id="outline-container-org31a7a22" class="outline-2">
+<h2 id="org31a7a22"><span class="section-number-2">8.</span> Wave 2</h2>
 <div class="outline-text-2" id="text-8">
 <p>
 This QBasic program simulates and visualizes the behavior of water
@@ -463,7 +463,7 @@ understanding wave mechanics.
 </p>
 
 
-<div id="orgbecde86" class="figure">
+<div id="org9545585" class="figure">
 <p><a href="Wave%202.bas" class="responsive-img"><img src="Wave%202.png" alt="Wave%202.png" class="responsive-img" /></a>
 </p>
 </div>
@@ -475,7 +475,7 @@ understanding wave mechanics.
 </div>
 </div>
 <div id="postamble" class="status">
-<p class="date">Created: 2025-07-29 ti 17:23</p>
+<p class="date">Created: 2025-07-29 ti 17:33</p>
 <p class="validation"><a href="https://validator.w3.org/check?uri=referer">Validate</a></p>
 </div>
 </body>
index 650a28b..a993d50 100644 (file)
@@ -3,7 +3,7 @@
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
 <head>
-<!-- 2025-07-29 ti 17:25 -->
+<!-- 2025-07-29 ti 17:34 -->
 <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
 <meta name="viewport" content="width=device-width, initial-scale=1" />
 <title>Truth table calculator</title>
@@ -1103,20 +1103,20 @@ hsAddReviewPanels();
 <h2>Table of Contents</h2>
 <div id="text-table-of-contents" role="doc-toc">
 <ul>
-<li><a href="#org3c5e114">1. Implemented logical operations</a>
+<li><a href="#org105c311">1. Implemented logical operations</a>
 <ul>
-<li><a href="#orgcfb677a">1.1. Equivalent ( ⇔ , 1 )</a></li>
-<li><a href="#org0b6ccd8">1.2. Implies ( ⇒ , 2 )</a></li>
-<li><a href="#org3d3a134">1.3. OR ( ∨ , 3 )</a></li>
-<li><a href="#orgcd492e3">1.4. AND ( ∧ , 4 )</a></li>
-<li><a href="#org0cfe447">1.5. NOT ( ¬ , 5 )</a></li>
+<li><a href="#org8aab038">1.1. Equivalent ( ⇔ , 1 )</a></li>
+<li><a href="#orgcb7a1e2">1.2. Implies ( ⇒ , 2 )</a></li>
+<li><a href="#org8b3b1fd">1.3. OR ( ∨ , 3 )</a></li>
+<li><a href="#org7b058a1">1.4. AND ( ∧ , 4 )</a></li>
+<li><a href="#orgf76a804">1.5. NOT ( ¬ , 5 )</a></li>
 </ul>
 </li>
-<li><a href="#orgddfdd35">2. Examples</a>
+<li><a href="#org8345257">2. Examples</a>
 <ul>
-<li><a href="#org7fb6f28">2.1. Example: (A ∧ B) ∨ ¬C</a></li>
-<li><a href="#org39103a4">2.2. Example: A ⇒ (B ∨ ¬C)</a></li>
-<li><a href="#orge4ebdc0">2.3. Example: (A ⇔ B) ∧ C</a></li>
+<li><a href="#orgb303480">2.1. Example: (A ∧ B) ∨ ¬C</a></li>
+<li><a href="#orgeb7b5e6">2.2. Example: A ⇒ (B ∨ ¬C)</a></li>
+<li><a href="#org1506d34">2.3. Example: (A ⇔ B) ∧ C</a></li>
 </ul>
 </li>
 </ul>
@@ -1133,12 +1133,12 @@ the input variables, with the corresponding output value. Truth tables are cruci
 designing and understanding digital circuits, Boolean algebra, and logical expressions.
 </p>
 
-<div id="outline-container-org3c5e114" class="outline-2">
-<h2 id="org3c5e114"><span class="section-number-2">1.</span> Implemented logical operations</h2>
+<div id="outline-container-org105c311" class="outline-2">
+<h2 id="org105c311"><span class="section-number-2">1.</span> Implemented logical operations</h2>
 <div class="outline-text-2" id="text-1">
 </div>
-<div id="outline-container-orgcfb677a" class="outline-3">
-<h3 id="orgcfb677a"><span class="section-number-3">1.1.</span> Equivalent ( ⇔ , 1 )</h3>
+<div id="outline-container-org8aab038" class="outline-3">
+<h3 id="org8aab038"><span class="section-number-3">1.1.</span> Equivalent ( ⇔ , 1 )</h3>
 <div class="outline-text-3" id="text-1-1">
 <p>
 The equivalent operation, also known as logical biconditional, is true if and only if
@@ -1196,8 +1196,8 @@ Truth Table:
 </div>
 </div>
 
-<div id="outline-container-org0b6ccd8" class="outline-3">
-<h3 id="org0b6ccd8"><span class="section-number-3">1.2.</span> Implies ( ⇒ , 2 )</h3>
+<div id="outline-container-orgcb7a1e2" class="outline-3">
+<h3 id="orgcb7a1e2"><span class="section-number-3">1.2.</span> Implies ( ⇒ , 2 )</h3>
 <div class="outline-text-3" id="text-1-2">
 <p>
 An implication asserts that if the first proposition is true, the
@@ -1255,8 +1255,8 @@ Truth table:
 </div>
 </div>
 
-<div id="outline-container-org3d3a134" class="outline-3">
-<h3 id="org3d3a134"><span class="section-number-3">1.3.</span> OR ( ∨ , 3 )</h3>
+<div id="outline-container-org8b3b1fd" class="outline-3">
+<h3 id="org8b3b1fd"><span class="section-number-3">1.3.</span> OR ( ∨ , 3 )</h3>
 <div class="outline-text-3" id="text-1-3">
 <p>
 The OR operation, also known as logical disjunction, is true if at
@@ -1314,8 +1314,8 @@ Truth table:
 </div>
 </div>
 
-<div id="outline-container-orgcd492e3" class="outline-3">
-<h3 id="orgcd492e3"><span class="section-number-3">1.4.</span> AND ( ∧ , 4 )</h3>
+<div id="outline-container-org7b058a1" class="outline-3">
+<h3 id="org7b058a1"><span class="section-number-3">1.4.</span> AND ( ∧ , 4 )</h3>
 <div class="outline-text-3" id="text-1-4">
 <p>
 The AND operation, also known as logical conjunction, is true if and
@@ -1372,8 +1372,8 @@ Truth table:
 </div>
 </div>
 
-<div id="outline-container-org0cfe447" class="outline-3">
-<h3 id="org0cfe447"><span class="section-number-3">1.5.</span> NOT ( ¬ , 5 )</h3>
+<div id="outline-container-orgf76a804" class="outline-3">
+<h3 id="orgf76a804"><span class="section-number-3">1.5.</span> NOT ( ¬ , 5 )</h3>
 <div class="outline-text-3" id="text-1-5">
 <p>
 The NOT operation, also known as logical negation, inverts the value
@@ -1414,12 +1414,12 @@ Truth Table:
 </div>
 </div>
 </div>
-<div id="outline-container-orgddfdd35" class="outline-2">
-<h2 id="orgddfdd35"><span class="section-number-2">2.</span> Examples</h2>
+<div id="outline-container-org8345257" class="outline-2">
+<h2 id="org8345257"><span class="section-number-2">2.</span> Examples</h2>
 <div class="outline-text-2" id="text-2">
 </div>
-<div id="outline-container-org7fb6f28" class="outline-3">
-<h3 id="org7fb6f28"><span class="section-number-3">2.1.</span> Example: (A ∧ B) ∨ ¬C</h3>
+<div id="outline-container-orgb303480" class="outline-3">
+<h3 id="orgb303480"><span class="section-number-3">2.1.</span> Example: (A ∧ B) ∨ ¬C</h3>
 <div class="outline-text-3" id="text-2-1">
 <table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
 
@@ -1502,8 +1502,8 @@ Truth Table:
 </div>
 </div>
 
-<div id="outline-container-org39103a4" class="outline-3">
-<h3 id="org39103a4"><span class="section-number-3">2.2.</span> Example: A ⇒ (B ∨ ¬C)</h3>
+<div id="outline-container-orgeb7b5e6" class="outline-3">
+<h3 id="orgeb7b5e6"><span class="section-number-3">2.2.</span> Example: A ⇒ (B ∨ ¬C)</h3>
 <div class="outline-text-3" id="text-2-2">
 <table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
 
@@ -1586,8 +1586,8 @@ Truth Table:
 </div>
 </div>
 
-<div id="outline-container-orge4ebdc0" class="outline-3">
-<h3 id="orge4ebdc0"><span class="section-number-3">2.3.</span> Example: (A ⇔ B) ∧ C</h3>
+<div id="outline-container-org1506d34" class="outline-3">
+<h3 id="org1506d34"><span class="section-number-3">2.3.</span> Example: (A ⇔ B) ∧ C</h3>
 <div class="outline-text-3" id="text-2-3">
 <p>
 Truth Table:
@@ -1676,7 +1676,7 @@ Truth Table:
 </div>
 </div>
 <div id="postamble" class="status">
-<p class="date">Created: 2025-07-29 ti 17:25</p>
+<p class="date">Created: 2025-07-29 ti 17:34</p>
 <p class="validation"><a href="https://validator.w3.org/check?uri=referer">Validate</a></p>
 </div>
 </body>
index 1531040..6f5af43 100644 (file)
@@ -3,7 +3,7 @@
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
 <head>
-<!-- 2025-07-29 ti 17:25 -->
+<!-- 2025-07-29 ti 17:34 -->
 <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
 <meta name="viewport" content="width=device-width, initial-scale=1" />
 <title>Mouse driver for QBasic programs</title>
 <h2>Table of Contents</h2>
 <div id="text-table-of-contents" role="doc-toc">
 <ul>
-<li><a href="#org588c2a7">1. Overview</a>
+<li><a href="#org8632d57">1. Overview</a>
 <ul>
-<li><a href="#org7871304">1.1. Terminate and Stay Resident module</a></li>
-<li><a href="#org1e940fb">1.2. QBasic demonstration program</a></li>
+<li><a href="#org5459e43">1.1. Terminate and Stay Resident module</a></li>
+<li><a href="#org3af7c6b">1.2. QBasic demonstration program</a></li>
 </ul>
 </li>
 </ul>
 </div>
 </div>
 
-<div id="outline-container-org588c2a7" class="outline-2">
-<h2 id="org588c2a7"><span class="section-number-2">1.</span> Overview</h2>
+<div id="outline-container-org8632d57" class="outline-2">
+<h2 id="org8632d57"><span class="section-number-2">1.</span> Overview</h2>
 <div class="outline-text-2" id="text-1">
 <p>
 QBasic, a popular programming language in the DOS era, lacks native
@@ -238,8 +238,8 @@ The solution comprises two main components:
 </div>
 
 
-<div id="outline-container-org7871304" class="outline-3">
-<h3 id="org7871304"><span class="section-number-3">1.1.</span> Terminate and Stay Resident module</h3>
+<div id="outline-container-org5459e43" class="outline-3">
+<h3 id="org5459e43"><span class="section-number-3">1.1.</span> Terminate and Stay Resident module</h3>
 <div class="outline-text-3" id="text-1-1">
 <p>
 A DOS TSR program that hooks into the system's interrupt mechanism to
@@ -258,8 +258,8 @@ Files:
 </div>
 
 
-<div id="outline-container-org1e940fb" class="outline-3">
-<h3 id="org1e940fb"><span class="section-number-3">1.2.</span> QBasic demonstration program</h3>
+<div id="outline-container-org3af7c6b" class="outline-3">
+<h3 id="org3af7c6b"><span class="section-number-3">1.2.</span> QBasic demonstration program</h3>
 <div class="outline-text-3" id="text-1-2">
 <p>
 A QBasic program that reads mouse data from the memory location
@@ -269,7 +269,7 @@ clicks.
 
 
 
-<div id="orgf4786b0" class="figure">
+<div id="org01b4c43" class="figure">
 <p><a href="mousedrv.bas" class="responsive-img"><img src="screenshot.png" alt="screenshot.png" class="responsive-img" /></a>
 </p>
 </div>
@@ -282,7 +282,7 @@ clicks.
 </div>
 </div>
 <div id="postamble" class="status">
-<p class="date">Created: 2025-07-29 ti 17:25</p>
+<p class="date">Created: 2025-07-29 ti 17:34</p>
 <p class="validation"><a href="https://validator.w3.org/check?uri=referer">Validate</a></p>
 </div>
 </body>
index 0cddd4f..338e706 100644 (file)
 QBasic, a popular programming language in the DOS era, lacks native\r
 mouse support. This limitation can be a hurdle for developers looking\r
 to create interactive applications. To bridge this gap, I developed a\r
-solution that involves a Terminate and Stay Resident (TSR) program\r
-written in x86 assembly and a QBasic demonstration program.\r
+workaround that allows QBasic to use mouse input.\r
 \r
+* High-level idea\r
 \r
-The solution comprises two main components:\r
+Workaround to access mouse involves a Terminate and Stay Resident\r
+(TSR) program written in x86 assembly. This TSR program must be\r
+started before running QBasic program that depends on mouse. This TSR\r
+program hooks into the system's interrupt mechanism, specifically the\r
+timer interrupt (IRQ 0), allowing it to regularly check for mouse\r
+activity several times per second.\r
 \r
+When this timer interrupt triggers, the TSR reads the latest mouse's\r
+horizontal and vertical movements and button states using mouse\r
+interrupts. This data is then stored in a dedicated memory location —\r
+a data table within the TSR's memory space. The TSR uses interrupt 79h\r
+as a pointer to this data table, making it accessible to other\r
+programs, including the QBasic application.\r
 \r
-** Terminate and Stay Resident module\r
+While QBasic originally is not able to read mouse, it is able to read\r
+(and write) arbitrary location in system RAM. The QBasic demonstration\r
+program begins by retrieving the address of the TSR mouse data table\r
+from the interrupt vector table using interrupt 79h. By checking a\r
+predefined magic number (1983) in the data table, the program confirms\r
+that the mouse driver is loaded. Once verified, the QBasic program\r
+continuously reads mouse data from this shared memory location, while\r
+TSR keeps updating it with latest mouse state simultaneously.\r
+\r
+* Terminate and Stay Resident module\r
 \r
 A DOS TSR program that hooks into the system's interrupt mechanism to\r
 regularly read mouse input and store it in a dedicated memory\r
@@ -30,7 +50,7 @@ Files:
 - [[file:qbext.com][qbext.com - binary COM executable for DOS]]\r
 \r
 \r
-** QBasic demonstration program\r
+* QBasic demonstration program\r
 \r
 A QBasic program that reads mouse data from the memory location\r
 populated by the TSR and demonstrates mouse movement and button\r