From 31cc583378fe254eba00080952ca60fbbcb17db3 Mon Sep 17 00:00:00 2001 From: Svjatoslav Agejenko Date: Wed, 30 Jul 2025 12:25:25 +0300 Subject: [PATCH] Describe windowing system and networking. --- 2D GFX/Fractals/index.html | 40 ++--- 2D GFX/Spirals/index.html | 54 +++--- 2D GFX/Textures/index.html | 34 ++-- 3D GFX/3D Synthezier/doc/index.html | 162 +++++++++--------- 3D GFX/Miscellaneous/index.html | 54 +++--- 3D GFX/Space/index.html | 36 ++-- Math/Plotting/index.html | 36 ++-- Math/Simulation/index.html | 64 +++---- Math/Truth table/index.html | 64 +++---- Miscellaneous/Mouse driver/index.html | 108 ++++++++++-- ...dowing system.bas => Windowing system.bas} | 0 ...wing system.webm => Windowing system.webm} | Bin Networking/LPT pin control.png | Bin 0 -> 8877 bytes Networking/{morse.bas => Morse.bas} | 0 Networking/Morse.png | Bin 0 -> 14753 bytes Networking/{morse.txt => Morse.txt} | 0 index.org | 113 +++++++++++- 17 files changed, 470 insertions(+), 295 deletions(-) rename Miscellaneous/{windowing system.bas => Windowing system.bas} (100%) rename Miscellaneous/{windowing system.webm => Windowing system.webm} (100%) create mode 100644 Networking/LPT pin control.png rename Networking/{morse.bas => Morse.bas} (100%) create mode 100644 Networking/Morse.png rename Networking/{morse.txt => Morse.txt} (100%) diff --git a/2D GFX/Fractals/index.html b/2D GFX/Fractals/index.html index f435ae9..14c08e3 100644 --- a/2D GFX/Fractals/index.html +++ b/2D GFX/Fractals/index.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + Fractals @@ -210,11 +210,11 @@

Table of Contents

@@ -236,8 +236,8 @@ -
-

1. Fractal circles

+
+

1. Fractal circles

This QBasic program generates a visually captivating spiral fractal @@ -247,7 +247,7 @@ geometry, recursive programming, and graphical design.

-
+

fractal%20circles.png

@@ -266,8 +266,8 @@ indefinitely.
-
-

2. Fractal circles animated

+
+

2. Fractal circles animated

This QBasic program creates an animated fractal composed of circles, @@ -287,29 +287,29 @@ system to control the animation's progression.

-
-

3. Fractal of squares

+
+

3. Fractal of squares

This QBasic program generates and displays a fractal pattern composed of squares.

-
+

fractal%20squares,%201.png

-
+

fractal%20squares,%202.png

-
-

4. Fractal of squares animated

+
+

4. Fractal of squares animated

This QBasic program generates an animated fractal pattern composed of @@ -331,8 +331,8 @@ resulting in a dynamic and ever-changing geometric pattern.

-
-

5. Fractal of trees

+
+

5. Fractal of trees

QBasic program that generates a visually appealing fractal tree @@ -355,7 +355,7 @@ resembles a tree, with branches that grow and change over time.

-

Created: 2025-07-30 ke 01:26

+

Created: 2025-07-30 ke 08:54

Validate

diff --git a/2D GFX/Spirals/index.html b/2D GFX/Spirals/index.html index 1fe8864..3508025 100644 --- a/2D GFX/Spirals/index.html +++ b/2D GFX/Spirals/index.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + Spiral series @@ -210,12 +210,12 @@

Table of Contents

@@ -236,11 +236,11 @@ } -
-

1. Spiral with increasing density

+
+

1. Spiral with increasing density

-
+

spiral.png

@@ -320,11 +320,11 @@ userInput$ = INPUT$(1)
-
-

2. Spiral with varying height

+
+

2. Spiral with varying height

-
+

spiral, 2.png

@@ -391,11 +391,11 @@ a$ = INPUT$(1)
-
-

3. Shaded spiral

+
+

3. Shaded spiral

-
+

spiral, 3.png

@@ -497,8 +497,8 @@ a$ = INPUT$(1)
-
-

4. Sphere forming spiral

+
+

4. Sphere forming spiral

Similar to previous spiral, Line segments are connected between the @@ -507,7 +507,7 @@ multiple linked spherical shapes. Initially point cloud in shown:

-
+

spiral, 4, 1.png

@@ -517,7 +517,7 @@ In the next step, points are connected using lines:

-
+

spiral, 4, 2.png

@@ -622,11 +622,11 @@ a$ = INPUT$(1)
-
-

5. Textured spherical spiral

+
+

5. Textured spherical spiral

-
+

spiral, 5.png

@@ -749,11 +749,11 @@ a$ = INPUT$(1)
-
-

6. Textured and shaded spherical spiral

+
+

6. Textured and shaded spherical spiral

-
+

spiral, 6.png

@@ -937,7 +937,7 @@ yStep2 = (oppositePointY2 - oppositePointY1) / stepCount
-

Created: 2025-07-30 ke 01:26

+

Created: 2025-07-30 ke 08:54

Validate

diff --git a/2D GFX/Textures/index.html b/2D GFX/Textures/index.html index 5673da2..913d1b4 100644 --- a/2D GFX/Textures/index.html +++ b/2D GFX/Textures/index.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + Algorithmic textures @@ -210,11 +210,11 @@

Table of Contents

@@ -233,8 +233,8 @@ } -
-

1. Circular waves

+
+

1. Circular waves

This QBasic program creates visually captivating circular wave @@ -313,8 +313,8 @@ algorithms can produce intricate and visually appealing results.

-
-

2. Diamond square clouds

+
+

2. Diamond square clouds

This QBasic program demonstrates the Diamond-Square algorithm, a @@ -429,8 +429,8 @@ WAITa$ = INPUT$(1)

-
-

3. Old paper

+
+

3. Old paper

This QBasic program generates a procedural texture that simulates the @@ -527,8 +527,8 @@ inputKey$ = INPUT$(1)

-
-

4. Wood

+
+

4. Wood

This QBasic program creates a visually appealing simulation of a wood @@ -622,8 +622,8 @@ exitKey$ = INPUT$(1)

-
-

5. Yellow flame

+
+

5. Yellow flame

"Yellow Flame" is a visually captivating program written in QBasic @@ -702,7 +702,7 @@ userInput$ = INPUT$(1)

-

Created: 2025-07-30 ke 01:27

+

Created: 2025-07-30 ke 08:54

Validate

diff --git a/3D GFX/3D Synthezier/doc/index.html b/3D GFX/3D Synthezier/doc/index.html index 3c57508..1e0b353 100644 --- a/3D GFX/3D Synthezier/doc/index.html +++ b/3D GFX/3D Synthezier/doc/index.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + 3D Synthezier @@ -1103,39 +1103,39 @@ hsAddReviewPanels();

Table of Contents

@@ -1157,8 +1157,8 @@ hsAddReviewPanels(); -
-

1. Operating principle

+
+

1. Operating principle

Parses scene definition language and creates 3D world based on @@ -1221,60 +1221,60 @@ They were produced by importing generated -

1.1. Rectangular city

+
+

1.1. Rectangular city

-
+

rectangular city, 1.jpeg

-
+

rectangular city, 2.jpeg

-
+

rectangular city, 3.jpeg

-
-

1.2. Hexagonal city

+
+

1.2. Hexagonal city

-
+

hexagonal city, 1.jpeg

-
+

hexagonal city, 2.jpeg

-
+

hexagonal city, 3.jpeg

-
-

2. Scene description language

+
+

2. Scene description language

See also examples.

-
-

2.1. here

+
+

2.1. here

 here
@@ -1285,8 +1285,8 @@ defines new segment
 

-
-

2.2. p

+
+

2.2. p

 p  x y z
@@ -1297,8 +1297,8 @@ defines new point
 

-
-

2.3. f

+
+

2.3. f

 f  p1 p2 p3 p4
@@ -1309,8 +1309,8 @@ defines new polygon,  p4  may be unused
 

-
-

2.4. warn

+
+

2.4. warn

 warn  <message>
@@ -1321,8 +1321,8 @@ displays warning message, and wait for key
 

-
-

2.5. end

+
+

2.5. end

 end
@@ -1333,8 +1333,8 @@ terminates parser
 

-
-

2.6. mtl

+
+

2.6. mtl

 mtl  material
@@ -1345,8 +1345,8 @@ selects material
 

-
-

2.7. mtlrnd

+
+

2.7. mtlrnd

 mtlrnd  material ...
@@ -1357,8 +1357,8 @@ selects random material from list
 

-
-

2.8. obj

+
+

2.8. obj

 obj  object xz45 xy20 x+3 y*2
@@ -1373,14 +1373,14 @@ directly from file, and not chached, to allow loading of greater than
 

-
+

rotation.png

-
-

2.9. rnd

+
+

2.9. rnd

 rnd  p^1^2^3 p^7^2^1
@@ -1391,8 +1391,8 @@ select random command to execute, ^ will be converted to spaces.
 

-
-

2.10. #

+
+

2.10. #

 # whatever text
@@ -1403,8 +1403,8 @@ comment
 

-
-

2.11. out

+
+

2.11. out

 out  file
@@ -1415,8 +1415,8 @@ specify output file name, must be first command
 

-
-

2.12. set

+
+

2.12. set

 set  variable  contents
@@ -1428,8 +1428,8 @@ string. max variables is 100. first is 0.
 

-
-

2.13. variables usage

+
+

2.13. variables usage

 anycommand %1 anything
@@ -1440,8 +1440,8 @@ inserts variable 1 contents info line
 

-
-

2.14. cmp

+
+

2.14. cmp

 cmp  flag string1 string2
@@ -1452,8 +1452,8 @@ compares strings, and inserts TRUE to flag, if they are equal, else inserts FALS
 

-
-

2.15. ?

+
+

2.15. ?

 ?flag anycommand
@@ -1468,8 +1468,8 @@ exapmle: ?3 obj car z*2 xy45
 

-
-

2.16. dum

+
+

2.16. dum

 dum
@@ -1482,16 +1482,16 @@ dummy function, does notheing
 
-
-

3. Installation

+
+

3. Installation

Edit bin/3dparse.bas file and update include path in there.

-
-

3.1. System requirements

+
+

3.1. System requirements

@@ -1522,8 +1522,8 @@ Edit bin/3dparse.bas file and update include path in there. -
-

3.2. Directory layout

+
+

3.2. Directory layout

bin
@@ -1540,8 +1540,8 @@ Edit bin/3dparse.bas file and update include path in there.
-
-

4. Usage

+
+

4. Usage

Make sure you have QB binaries in your PATH. Execute @@ -1566,7 +1566,7 @@ Visualize scene with your favourite renderer.

-

Created: 2025-07-30 ke 01:28

+

Created: 2025-07-30 ke 08:55

Validate

diff --git a/3D GFX/Miscellaneous/index.html b/3D GFX/Miscellaneous/index.html index 7b85e61..69acd20 100644 --- a/3D GFX/Miscellaneous/index.html +++ b/3D GFX/Miscellaneous/index.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + Miscellaneous 3D graphics demos @@ -210,14 +210,14 @@

Table of Contents

@@ -238,8 +238,8 @@ } -
-

1. Rotating exclamation mark

+
+

1. Rotating exclamation mark

Wireframe 3D model of a rotating exclamation mark. @@ -258,8 +258,8 @@ Wireframe 3D model of a rotating exclamation mark.

-
-

2. 3D bouncing ball

+
+

2. 3D bouncing ball

This QBasic program creates a visually engaging 3D animation of a @@ -280,8 +280,8 @@ of early computer graphics techniques.

-
-

3. 3D text in a room

+
+

3. 3D text in a room

Wireframe 3D text hanging in a wireframe 3D room. User can look and @@ -301,8 +301,8 @@ fly around in all directions.

-
-

4. 3D bouncing cubes on grid floor

+
+

4. 3D bouncing cubes on grid floor

3D wireframe cubes bouncing on a grid floor, creating an immersive and @@ -322,8 +322,8 @@ dynamic visual effect.

-
-

5. Matrix math for rotation in 3D space

+
+

5. Matrix math for rotation in 3D space

Instead of combining simple 2D rotors, pixels in this 3D space are @@ -343,8 +343,8 @@ rotated by using matrix multiplications.

-
-

6. Maze explorer

+
+

6. Maze explorer

The Evolving 3D Maze Explorer is a QBasic program that generates and @@ -355,7 +355,7 @@ changes as they navigate through it.

-
+

Maze%20explorer.png

@@ -366,8 +366,8 @@ changes as they navigate through it.
-
-

7. Tank animation

+
+

7. Tank animation

Animated tank driving through the bridge back and forward. User can @@ -387,8 +387,8 @@ look and fly around in all directions.

-
-

8. Tiled room

+
+

8. Tiled room

Room with some tiles on the wall and on the floor. User can freely fly @@ -409,7 +409,7 @@ around.

-

Created: 2025-07-30 ke 01:28

+

Created: 2025-07-30 ke 08:55

Validate

diff --git a/3D GFX/Space/index.html b/3D GFX/Space/index.html index b4d79a4..7355761 100644 --- a/3D GFX/Space/index.html +++ b/3D GFX/Space/index.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + Space themed 3D graphics @@ -210,10 +210,10 @@

Table of Contents

@@ -234,8 +234,8 @@ } -
-

1. Galaxy explorer

+
+

1. Galaxy explorer

This QBasic program renders a navigable 3D point cloud galaxy, @@ -245,7 +245,7 @@ galaxy with stars distributed in a spiral pattern.

-
+

Galaxy%20explorer.png

@@ -256,8 +256,8 @@ galaxy with stars distributed in a spiral pattern.
-
-

2. Rocket simulator

+
+

2. Rocket simulator

QBasic program that simulates the takeoff and flight of a rocket from @@ -279,8 +279,8 @@ observe the rocket's trajectory from various angles.

-
-

3. Stars

+
+

3. Stars

The 3D Starfield Simulation is a QBasic program that creates a @@ -320,8 +320,8 @@ based on its distance, with closer stars appearing brighter.

-
-

4. Universe explorer

+
+

4. Universe explorer

This QBasic program that simulates a navigable 3D universe. Users can @@ -358,19 +358,19 @@ limiting the number of rendered objects based on distance. -

+

1.png

-
+

2.png

-
+

3.png

@@ -382,7 +382,7 @@ limiting the number of rendered objects based on distance.
-

Created: 2025-07-30 ke 01:28

+

Created: 2025-07-30 ke 08:56

Validate

diff --git a/Math/Plotting/index.html b/Math/Plotting/index.html index 13be060..ff4d269 100644 --- a/Math/Plotting/index.html +++ b/Math/Plotting/index.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + Plotting @@ -210,10 +210,10 @@

Table of Contents

@@ -234,8 +234,8 @@ } -
-

1. 2D graph

+
+

1. 2D graph

The 2D Graph Plotter is a simple yet effective program written in @@ -251,7 +251,7 @@ based on a user-defined mathematical function.

-
+

2D%20graph%20plot.png

@@ -262,8 +262,8 @@ based on a user-defined mathematical function.
-
-

2. 3D graph

+
+

2. 3D graph

The 3D Heightmap Explorer is a QBasic program designed to visualize @@ -299,7 +299,7 @@ grid.

-
+

3D%20graph.png

@@ -310,8 +310,8 @@ grid.
-
-

3. Deriviative calculator

+
+

3. Deriviative calculator

This QBasic program is designed to compute and plot an arbitrary @@ -324,7 +324,7 @@ visualized.

-
+

Deriviative%20calculator.png

@@ -335,8 +335,8 @@ visualized.
-
-

4. Sine and cosine table

+
+

4. Sine and cosine table

The SIN & COS Table Generator is a QBasic program designed to visually @@ -346,7 +346,7 @@ visual representation of these fundamental trigonometric functions.

-
+

Sine%20and%20cosine%20table.png

@@ -358,7 +358,7 @@ visual representation of these fundamental trigonometric functions.
-

Created: 2025-07-30 ke 01:28

+

Created: 2025-07-30 ke 08:56

Validate

diff --git a/Math/Simulation/index.html b/Math/Simulation/index.html index 9bf6f7a..d446fdb 100644 --- a/Math/Simulation/index.html +++ b/Math/Simulation/index.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + Simulation @@ -210,14 +210,14 @@

Table of Contents

@@ -238,8 +238,8 @@ } -
-

1. Explosion simulator

+
+

1. Explosion simulator

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.

-
+

Explosion%20simulator.png

@@ -276,8 +276,8 @@ conditions by setting velocities to zero at wall boundaries.
-
-

2. Gravity in 2D

+
+

2. Gravity in 2D

The Gravitation Simulation program is a simple yet insightful QBasic @@ -289,7 +289,7 @@ educational tool for understanding basic orbital mechanics.

-
+

Gravity%20in%202D.png

@@ -300,8 +300,8 @@ educational tool for understanding basic orbital mechanics.
-
-

3. Gravity in 3D

+
+

3. Gravity in 3D

This QBasic program simulates the gravitational interactions between @@ -335,8 +335,8 @@ will reach stable configuration.

-
-

4. Interference

+
+

4. Interference

This QBasic program simulates the interference pattern created by two @@ -364,8 +364,8 @@ displayed as a third waveform.

-
-

5. Interferogram

+
+

5. Interferogram

This QBasic program simulates the interference pattern created by @@ -375,7 +375,7 @@ used in physics and engineering to analyze wave interactions.

-
+

Interferogram.png

@@ -386,8 +386,8 @@ used in physics and engineering to analyze wave interactions.
-
-

6. Surface tension

+
+

6. Surface tension

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.

-
+

Surface%20tension.png

@@ -422,8 +422,8 @@ water cell if surrounded by a high density of water cells.
-
-

7. Wave 1

+
+

7. Wave 1

This QBasic program simulates the propagation of waves across a @@ -439,7 +439,7 @@ loss.

-
+

Wave%201.png

@@ -450,8 +450,8 @@ loss.
-
-

8. Wave 2

+
+

8. Wave 2

This QBasic program simulates and visualizes the behavior of water @@ -463,7 +463,7 @@ understanding wave mechanics.

-
+

Wave%202.png

@@ -475,7 +475,7 @@ understanding wave mechanics.
-

Created: 2025-07-30 ke 01:29

+

Created: 2025-07-30 ke 08:56

Validate

diff --git a/Math/Truth table/index.html b/Math/Truth table/index.html index 27ee4b5..ca59ad0 100644 --- a/Math/Truth table/index.html +++ b/Math/Truth table/index.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + Truth table calculator @@ -1103,20 +1103,20 @@ hsAddReviewPanels();

Table of Contents

@@ -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.

-
-

1. Implemented logical operations

+
+

1. Implemented logical operations

-
-

1.1. Equivalent ( ⇔ , 1 )

+
+

1.1. Equivalent ( ⇔ , 1 )

The equivalent operation, also known as logical biconditional, is true if and only if @@ -1196,8 +1196,8 @@ Truth Table:

-
-

1.2. Implies ( ⇒ , 2 )

+
+

1.2. Implies ( ⇒ , 2 )

An implication asserts that if the first proposition is true, the @@ -1255,8 +1255,8 @@ Truth table:

-
-

1.3. OR ( ∨ , 3 )

+
+

1.3. OR ( ∨ , 3 )

The OR operation, also known as logical disjunction, is true if at @@ -1314,8 +1314,8 @@ Truth table:

-
-

1.4. AND ( ∧ , 4 )

+
+

1.4. AND ( ∧ , 4 )

The AND operation, also known as logical conjunction, is true if and @@ -1372,8 +1372,8 @@ Truth table:

-
-

1.5. NOT ( ¬ , 5 )

+
+

1.5. NOT ( ¬ , 5 )

The NOT operation, also known as logical negation, inverts the value @@ -1414,12 +1414,12 @@ Truth Table:

-
-

2. Examples

+
+

2. Examples

-
-

2.1. Example: (A ∧ B) ∨ ¬C

+
+

2.1. Example: (A ∧ B) ∨ ¬C

@@ -1502,8 +1502,8 @@ Truth Table: -
-

2.2. Example: A ⇒ (B ∨ ¬C)

+
+

2.2. Example: A ⇒ (B ∨ ¬C)

@@ -1586,8 +1586,8 @@ Truth Table: -
-

2.3. Example: (A ⇔ B) ∧ C

+
+

2.3. Example: (A ⇔ B) ∧ C

Truth Table: @@ -1676,7 +1676,7 @@ Truth Table:

-

Created: 2025-07-30 ke 01:30

+

Created: 2025-07-30 ke 08:57

Validate

diff --git a/Miscellaneous/Mouse driver/index.html b/Miscellaneous/Mouse driver/index.html index 3e67a5a..678471b 100644 --- a/Miscellaneous/Mouse driver/index.html +++ b/Miscellaneous/Mouse driver/index.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + Mouse driver for QBasic programs @@ -210,16 +210,16 @@

Table of Contents

-
-

1. Overview

+
+

1. Overview

QBasic, a popular programming language in the DOS era, lacks native @@ -230,8 +230,8 @@ workaround that allows QBasic to use mouse input.

-
-

2. High-level idea

+
+

2. High-level idea

Workaround to access mouse involves a Terminate and Stay Resident @@ -264,8 +264,8 @@ TSR keeps updating it with latest mouse state simultaneously.

-
-

3. Terminate and Stay Resident module

+
+

3. Terminate and Stay Resident module

A DOS TSR program that hooks into the system's interrupt mechanism to @@ -280,12 +280,79 @@ Files:

  • qbext.asm - x86 Assembly source code
  • qbext.com - binary COM executable for DOS
  • + + +

    +Here is the detailed technical specification for an in-memory table +used to exchange mouse coordinates between a TSR program and a QBasic +program. +

    + +
    + + +++ ++ ++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OffsetSize (bytes)Description
    0x002Magic Number (1983)
    0x022Horizontal Movement (X)
    0x042Vertical Movement (Y)
    0x062Button Status
    0x081Update counter
    + +
    +
    Update counter
    Signals to the QBasic program that new mouse data +is available in the shared memory table. It ensures that the QBasic +program only reads fresh data and avoids processing outdated or +repeated data. When the TSR updates the mouse data, it increments +this flag by 1 to signal the QBasic program that new data is +available. QBasic can compare this number against last retrieved +value. If value has been increased, then there had been update +meanwhile.
    +
    - -
    -

    4. QBasic demonstration program

    +
    +

    4. QBasic demonstration program

    A QBasic program that reads mouse data from the memory location @@ -295,7 +362,7 @@ clicks. -

    +

    screenshot.png

    @@ -303,11 +370,20 @@ clicks.

    mousedrv.bas - source code

    + +

    +Here are more practical examples where this mouse driver is being +used: Within Space themed 3D graphics, see: +

    +
      +
    • Galaxy explorer
    • +
    • Universe explorer
    • +
    -

    Created: 2025-07-30 ke 01:30

    +

    Created: 2025-07-30 ke 08:57

    Validate

    diff --git a/Miscellaneous/windowing system.bas b/Miscellaneous/Windowing system.bas similarity index 100% rename from Miscellaneous/windowing system.bas rename to Miscellaneous/Windowing system.bas diff --git a/Miscellaneous/windowing system.webm b/Miscellaneous/Windowing system.webm similarity index 100% rename from Miscellaneous/windowing system.webm rename to Miscellaneous/Windowing system.webm diff --git a/Networking/LPT pin control.png b/Networking/LPT pin control.png new file mode 100644 index 0000000000000000000000000000000000000000..cc6f9a7bb606663761806acdf42002df947d30ba GIT binary patch literal 8877 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 #+end_export -[[file:2D%20GFX/People.bas][People.bas]] +Download source code: [[file:2D%20GFX/People.bas][People.bas]] *** Stroboscope @@ -127,7 +127,7 @@ diagrams. #+attr_latex: :width 1000px [[file:2D%20GFX/Stroboscope.bas][file:2D%20GFX/Stroboscope.png]] -[[file:2D%20GFX/Stroboscope.bas][Stroboscope.bas]] +Download source code: [[file:2D%20GFX/Stroboscope.bas][Stroboscope.bas]] *** Truncated cone @@ -141,7 +141,7 @@ the viability of generating images of 3D shapes using code. #+attr_latex: :width 1000px [[file:2D%20GFX/Truncated%20cone.bas][file:2D%20GFX/Truncated%20cone.png]] -[[file:2D%20GFX/Truncated%20cone.bas][Truncated cone.bas]] +Download source code: [[file:2D%20GFX/Truncated%20cone.bas][Truncated cone.bas]] #+INCLUDE: "2D GFX/Truncated cone.bas" src basic-qb45 @@ -223,7 +223,7 @@ into RAM, allowing for the potential rendering of very large worlds. #+attr_latex: :width 1000px [[file:3D%20GFX/Swapping%203D%20engine/screenshot,%202.png]] -[[file:3D%20GFX/Swapping%203D%20engine/engine.bas][engine.bas]] +Download source code: [[file:3D%20GFX/Swapping%203D%20engine/engine.bas][engine.bas]] ** 3D land @@ -289,7 +289,7 @@ specified keys to turn, look up/down, and even jump. #+attr_latex: :width 1000px [[file:3D%20GFX/Ray%20casting%20engine.bas][file:3D%20GFX/Ray%20casting%20engine.png]] -[[file:3D%20GFX/Ray%20casting%20engine.bas][Ray casting engine.bas]] +Download source code: [[file:3D%20GFX/Ray%20casting%20engine.bas][Ray casting engine.bas]] * Games :PROPERTIES: @@ -636,7 +636,6 @@ but with additional extra dimension that I decided to call Q. vertices to define. It is the minimal object in 4D world to have hypervolume (aka. 4D volume). - *** Planes or rotation in 3D world vs 4D world In 3D space, the planes of rotation correspond to rotations around the @@ -717,6 +716,106 @@ novel planes of 4D space. Download source code: [[file:Miscellaneous/4D%20engine.bas][4D engine.bas]] +** Windowing system + +This QBasic program implements a text mode windowing system, allowing +users to create and manage multiple windows on the screen. Each window +can display the contents of a text file and supports horizontal and +vertical scrolling. The program is designed to demonstrate basic +window management and text display functionalities in a text-based +environment. + +Windows are drawn on the screen with borders and titles. + +The program includes a simple animation loop that shifts the content +of the active window, creating a dynamic visual effect. + +#+begin_export html +
    + +
    +#+end_export + +Download source code: [[file:Miscellaneous/Windowing%20system.bas][Windowing system.bas]] + +** Password lock + +This QBasic program simulates a retro-styled rocket control system +interface with a password protection mechanism. The program is +designed to provide a visually engaging experience reminiscent of +early computer systems. + +The password is stored in an external file (passw.dat). + +The program captures and processes user input for password entry, +including handling special keys like Enter and Backspace. + +When the user presses Enter, the program checks the entered password +against the stored password. If the password is correct, the program +exits. If not, it displays an error message and decreases the number +of remaining attempts. + +The user has three attempts to enter the correct password. After three +failed attempts, the program halts and displays a "SYSTEM HALTED" +message. + +#+attr_html: :class responsive-img +#+attr_latex: :width 1000px +[[file:Miscellaneous/Password%20lock/passw.bas][file:Miscellaneous/Password%20lock/screenshot,%201.png]] + +#+attr_html: :class responsive-img +#+attr_latex: :width 1000px +[[file:Miscellaneous/Password%20lock/passw.bas][file:Miscellaneous/Password%20lock/screenshot,%202.png]] + +Download source code: [[file:Miscellaneous/Password%20lock/passw.bas][passw.bas]] + + +* Networking + +** LPT port pin control + +This QBasic program is designed to control the voltage on individual +pins of an LPT (Line Print Terminal) port, commonly known as a +parallel port. This type of port was traditionally used for connecting +printers to computers but can also be used for simple hardware control +tasks. + +The program allows users to toggle the voltage on each of the 8 pins +of the LPT port using keys 1 through 8 on the keyboard. When a key is +pressed, the corresponding pin's state is toggled between on (high +voltage) and off (low voltage). + +The program uses bit manipulation to control individual pins. + +#+attr_html: :class responsive-img +#+attr_latex: :width 1000px +[[file:Networking/LPT%20pin%20control.bas][file:Networking/LPT%20pin%20control.png]] + +Download source code: [[file:Networking/LPT%20pin%20control.bas][LPT pin control.bas]] + +** Morse + +This QBasic program allows users to input text and hear it played back +in Morse code using the PC speaker. It's a fun and educational tool +for anyone interested in learning Morse code. + +It reads Morse code patterns from an external file named +"morse.txt". Each line in the file represents a character and its +corresponding Morse code. + +For each character in the input text, the program looks up its Morse +code pattern and plays it back using the PC speaker. Dots are +represented by short beeps, and dashes by longer beeps. + +#+attr_html: :class responsive-img +#+attr_latex: :width 1000px +[[file:Networking/Morse.bas][file:Networking/Morse.png]] + +Download source code: [[file:Networking/Morse.bas][Morse.bas]] + * Download ** Getting the source code -- 2.20.1