Better homepage layout
authorSvjatoslav Agejenko <svjatoslav@svjatoslav.eu>
Wed, 23 Apr 2025 01:09:05 +0000 (04:09 +0300)
committerSvjatoslav Agejenko <svjatoslav@svjatoslav.eu>
Wed, 23 Apr 2025 01:09:05 +0000 (04:09 +0300)
Graphics/index.html [deleted file]

diff --git a/Graphics/index.html b/Graphics/index.html
deleted file mode 100644 (file)
index bfab92a..0000000
+++ /dev/null
@@ -1,1190 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
-<head>
-<!-- 2024-11-26 ti 00:46 -->
-<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
-<meta name="viewport" content="width=device-width, initial-scale=1" />
-<title>Graphics demos</title>
-<meta name="generator" content="Org Mode" />
-<style>
-  #content { max-width: 60em; margin: auto; }
-  .title  { text-align: center;
-             margin-bottom: .2em; }
-  .subtitle { text-align: center;
-              font-size: medium;
-              font-weight: bold;
-              margin-top:0; }
-  .todo   { font-family: monospace; color: red; }
-  .done   { font-family: monospace; color: green; }
-  .priority { font-family: monospace; color: orange; }
-  .tag    { background-color: #eee; font-family: monospace;
-            padding: 2px; font-size: 80%; font-weight: normal; }
-  .timestamp { color: #bebebe; }
-  .timestamp-kwd { color: #5f9ea0; }
-  .org-right  { margin-left: auto; margin-right: 0px;  text-align: right; }
-  .org-left   { margin-left: 0px;  margin-right: auto; text-align: left; }
-  .org-center { margin-left: auto; margin-right: auto; text-align: center; }
-  .underline { text-decoration: underline; }
-  #postamble p, #preamble p { font-size: 90%; margin: .2em; }
-  p.verse { margin-left: 3%; }
-  pre {
-    border: 1px solid #e6e6e6;
-    border-radius: 3px;
-    background-color: #f2f2f2;
-    padding: 8pt;
-    font-family: monospace;
-    overflow: auto;
-    margin: 1.2em;
-  }
-  pre.src {
-    position: relative;
-    overflow: auto;
-  }
-  pre.src:before {
-    display: none;
-    position: absolute;
-    top: -8px;
-    right: 12px;
-    padding: 3px;
-    color: #555;
-    background-color: #f2f2f299;
-  }
-  pre.src:hover:before { display: inline; margin-top: 14px;}
-  /* Languages per Org manual */
-  pre.src-asymptote:before { content: 'Asymptote'; }
-  pre.src-awk:before { content: 'Awk'; }
-  pre.src-authinfo::before { content: 'Authinfo'; }
-  pre.src-C:before { content: 'C'; }
-  /* pre.src-C++ doesn't work in CSS */
-  pre.src-clojure:before { content: 'Clojure'; }
-  pre.src-css:before { content: 'CSS'; }
-  pre.src-D:before { content: 'D'; }
-  pre.src-ditaa:before { content: 'ditaa'; }
-  pre.src-dot:before { content: 'Graphviz'; }
-  pre.src-calc:before { content: 'Emacs Calc'; }
-  pre.src-emacs-lisp:before { content: 'Emacs Lisp'; }
-  pre.src-fortran:before { content: 'Fortran'; }
-  pre.src-gnuplot:before { content: 'gnuplot'; }
-  pre.src-haskell:before { content: 'Haskell'; }
-  pre.src-hledger:before { content: 'hledger'; }
-  pre.src-java:before { content: 'Java'; }
-  pre.src-js:before { content: 'Javascript'; }
-  pre.src-latex:before { content: 'LaTeX'; }
-  pre.src-ledger:before { content: 'Ledger'; }
-  pre.src-lisp:before { content: 'Lisp'; }
-  pre.src-lilypond:before { content: 'Lilypond'; }
-  pre.src-lua:before { content: 'Lua'; }
-  pre.src-matlab:before { content: 'MATLAB'; }
-  pre.src-mscgen:before { content: 'Mscgen'; }
-  pre.src-ocaml:before { content: 'Objective Caml'; }
-  pre.src-octave:before { content: 'Octave'; }
-  pre.src-org:before { content: 'Org mode'; }
-  pre.src-oz:before { content: 'OZ'; }
-  pre.src-plantuml:before { content: 'Plantuml'; }
-  pre.src-processing:before { content: 'Processing.js'; }
-  pre.src-python:before { content: 'Python'; }
-  pre.src-R:before { content: 'R'; }
-  pre.src-ruby:before { content: 'Ruby'; }
-  pre.src-sass:before { content: 'Sass'; }
-  pre.src-scheme:before { content: 'Scheme'; }
-  pre.src-screen:before { content: 'Gnu Screen'; }
-  pre.src-sed:before { content: 'Sed'; }
-  pre.src-sh:before { content: 'shell'; }
-  pre.src-sql:before { content: 'SQL'; }
-  pre.src-sqlite:before { content: 'SQLite'; }
-  /* additional languages in org.el's org-babel-load-languages alist */
-  pre.src-forth:before { content: 'Forth'; }
-  pre.src-io:before { content: 'IO'; }
-  pre.src-J:before { content: 'J'; }
-  pre.src-makefile:before { content: 'Makefile'; }
-  pre.src-maxima:before { content: 'Maxima'; }
-  pre.src-perl:before { content: 'Perl'; }
-  pre.src-picolisp:before { content: 'Pico Lisp'; }
-  pre.src-scala:before { content: 'Scala'; }
-  pre.src-shell:before { content: 'Shell Script'; }
-  pre.src-ebnf2ps:before { content: 'ebfn2ps'; }
-  /* additional language identifiers per "defun org-babel-execute"
-       in ob-*.el */
-  pre.src-cpp:before  { content: 'C++'; }
-  pre.src-abc:before  { content: 'ABC'; }
-  pre.src-coq:before  { content: 'Coq'; }
-  pre.src-groovy:before  { content: 'Groovy'; }
-  /* additional language identifiers from org-babel-shell-names in
-     ob-shell.el: ob-shell is the only babel language using a lambda to put
-     the execution function name together. */
-  pre.src-bash:before  { content: 'bash'; }
-  pre.src-csh:before  { content: 'csh'; }
-  pre.src-ash:before  { content: 'ash'; }
-  pre.src-dash:before  { content: 'dash'; }
-  pre.src-ksh:before  { content: 'ksh'; }
-  pre.src-mksh:before  { content: 'mksh'; }
-  pre.src-posh:before  { content: 'posh'; }
-  /* Additional Emacs modes also supported by the LaTeX listings package */
-  pre.src-ada:before { content: 'Ada'; }
-  pre.src-asm:before { content: 'Assembler'; }
-  pre.src-caml:before { content: 'Caml'; }
-  pre.src-delphi:before { content: 'Delphi'; }
-  pre.src-html:before { content: 'HTML'; }
-  pre.src-idl:before { content: 'IDL'; }
-  pre.src-mercury:before { content: 'Mercury'; }
-  pre.src-metapost:before { content: 'MetaPost'; }
-  pre.src-modula-2:before { content: 'Modula-2'; }
-  pre.src-pascal:before { content: 'Pascal'; }
-  pre.src-ps:before { content: 'PostScript'; }
-  pre.src-prolog:before { content: 'Prolog'; }
-  pre.src-simula:before { content: 'Simula'; }
-  pre.src-tcl:before { content: 'tcl'; }
-  pre.src-tex:before { content: 'TeX'; }
-  pre.src-plain-tex:before { content: 'Plain TeX'; }
-  pre.src-verilog:before { content: 'Verilog'; }
-  pre.src-vhdl:before { content: 'VHDL'; }
-  pre.src-xml:before { content: 'XML'; }
-  pre.src-nxml:before { content: 'XML'; }
-  /* add a generic configuration mode; LaTeX export needs an additional
-     (add-to-list 'org-latex-listings-langs '(conf " ")) in .emacs */
-  pre.src-conf:before { content: 'Configuration File'; }
-
-  table { border-collapse:collapse; }
-  caption.t-above { caption-side: top; }
-  caption.t-bottom { caption-side: bottom; }
-  td, th { vertical-align:top;  }
-  th.org-right  { text-align: center;  }
-  th.org-left   { text-align: center;   }
-  th.org-center { text-align: center; }
-  td.org-right  { text-align: right;  }
-  td.org-left   { text-align: left;   }
-  td.org-center { text-align: center; }
-  dt { font-weight: bold; }
-  .footpara { display: inline; }
-  .footdef  { margin-bottom: 1em; }
-  .figure { padding: 1em; }
-  .figure p { text-align: center; }
-  .equation-container {
-    display: table;
-    text-align: center;
-    width: 100%;
-  }
-  .equation {
-    vertical-align: middle;
-  }
-  .equation-label {
-    display: table-cell;
-    text-align: right;
-    vertical-align: middle;
-  }
-  .inlinetask {
-    padding: 10px;
-    border: 2px solid gray;
-    margin: 10px;
-    background: #ffffcc;
-  }
-  #org-div-home-and-up
-   { text-align: right; font-size: 70%; white-space: nowrap; }
-  textarea { overflow-x: auto; }
-  .linenr { font-size: smaller }
-  .code-highlighted { background-color: #ffff00; }
-  .org-info-js_info-navigation { border-style: none; }
-  #org-info-js_console-label
-    { font-size: 10px; font-weight: bold; white-space: nowrap; }
-  .org-info-js_search-highlight
-    { background-color: #ffff00; color: #000000; font-weight: bold; }
-  .org-svg { }
-</style>
-<link rel="stylesheet" type="text/css" href="https://thomasf.github.io/solarized-css/solarized-dark.min.css" />
-</head>
-<body>
-<div id="content" class="content">
-<h1 class="title">Graphics demos</h1>
-<div id="table-of-contents" role="doc-toc">
-<h2>Table of Contents</h2>
-<div id="text-table-of-contents" role="doc-toc">
-<ul>
-<li><a href="#org95999ec">1. Bump mapping</a></li>
-<li><a href="#org18e2435">2. Tree</a></li>
-<li><a href="#org1582c4d">3. Rotation in 2D space using trigonometry functions</a></li>
-<li><a href="#org9ec03c2">4. Various text mode animation effects</a></li>
-<li><a href="#org4752640">5. Snowfall</a></li>
-<li><a href="#org728093c">6. Screensaver</a></li>
-<li><a href="#org39a9a1d">7. Screensaver - flying hand fans</a></li>
-<li><a href="#org11b0b65">8. Polygon rendering</a></li>
-<li><a href="#orgd53f426">9. Textured polygon rendering</a></li>
-<li><a href="#org53c458f">10. Yin and yang animation</a></li>
-<li><a href="#orge2be593">11. Orbiting particles</a></li>
-<li><a href="#org7a1daec">12. DNA animation</a></li>
-<li><a href="#orgb9213d7">13. Matrix</a></li>
-<li><a href="#orgc8c7d12">14. Hacker</a></li>
-</ul>
-</div>
-</div>
-
-<div id="outline-container-org95999ec" class="outline-2">
-<h2 id="org95999ec"><span class="section-number-2">1.</span> Bump mapping</h2>
-<div class="outline-text-2" id="text-1">
-<p>
-Light source moves around. Based on light source location, different
-parts of the surface become illuminated.
-</p>
-
-<video width="300" controls loop autoplay>
-  <source src="Bump mapping.webm" type="video/webm">
-  Your browser does not support the video tag.
-</video>
-
-<p>
-<a href="Bump mapping.bas">Source code</a>
-</p>
-</div>
-</div>
-
-<div id="outline-container-org18e2435" class="outline-2">
-<h2 id="org18e2435"><span class="section-number-2">2.</span> Tree</h2>
-<div class="outline-text-2" id="text-2">
-<p>
-Tree grows and branches out.
-</p>
-
-<video width="800" controls loop autoplay>
-  <source src="Tree.webm" type="video/webm">
-  Your browser does not support the video tag.
-</video>
-
-<p>
-<a href="Tree.bas">Source code</a>
-</p>
-
-<div class="org-src-container">
-<pre class="src src-basic-qb45"><span style="color: #cba6f7;">DECLARE</span> <span style="color: #cba6f7;">SUB</span> setPalette ()
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">Render tree that starts with single root and then branches out.</span>
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">By Svjatoslav Agejenko.</span>
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">Email: svjatoslav@svjatoslav.eu</span>
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">Homepage: http://www.svjatoslav.eu</span>
-<span style="color: #6c7086;">'</span>
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">Changelog:</span>
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">2001, Initial version</span>
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">2024.08, Improved program readability using AI</span>
-
-
-<span style="color: #cba6f7;">DECLARE</span> <span style="color: #cba6f7;">SUB</span> start ()
-<span style="color: #cba6f7;">DECLARE</span> <span style="color: #cba6f7;">SUB</span> show (d%)
-<span style="color: #cba6f7;">DECLARE</span> <span style="color: #cba6f7;">SUB</span> setpal ()
-<span style="color: #cba6f7;">DECLARE</span> <span style="color: #cba6f7;">SUB</span> showpal ()
-<span style="color: #cba6f7;">DEFINT</span> A-Y
-
-<span style="color: #cba6f7;">DIM</span> <span style="color: #f38ba8;">SHARED</span> x(1 <span style="color: #cba6f7;">TO</span> 500)
-<span style="color: #cba6f7;">DIM</span> <span style="color: #f38ba8;">SHARED</span> y(1 <span style="color: #cba6f7;">TO</span> 500)
-<span style="color: #cba6f7;">DIM</span> <span style="color: #f38ba8;">SHARED</span> s(1 <span style="color: #cba6f7;">TO</span> 500)
-
-<span style="color: #cba6f7;">DIM</span> <span style="color: #f38ba8;">SHARED</span> x4(1 <span style="color: #cba6f7;">TO</span> 500)
-<span style="color: #cba6f7;">DIM</span> <span style="color: #f38ba8;">SHARED</span> y4(1 <span style="color: #cba6f7;">TO</span> 500)
-
-<span style="color: #cba6f7;">DIM</span> <span style="color: #f38ba8;">SHARED</span> z(1 <span style="color: #cba6f7;">TO</span> 500)
-<span style="color: #cba6f7;">DIM</span> <span style="color: #f38ba8;">SHARED</span> mitu
-
-
-start
-
-<span style="color: #fab387;">1</span>
-mitu = 1
-
-x4(1) = -1
-y4(1) = -1
-x(1) = 420
-y(1) = 340
-s(1) = 70 * 100
-z(1) = 1
-
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">Main loop to render the tree branches</span>
-<span style="color: #cba6f7;">FOR</span> tr = 1 <span style="color: #cba6f7;">TO</span> 6
-    <span style="color: #cba6f7;">FOR</span> b = 1 <span style="color: #cba6f7;">TO</span> 50
-        <span style="color: #cba6f7;">FOR</span> a = 1 <span style="color: #cba6f7;">TO</span> mitu
-            show a
-        <span style="color: #cba6f7;">NEXT</span> a
-    <span style="color: #cba6f7;">NEXT</span> b
-
-    <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Duplicate existing branches and add randomness</span>
-    <span style="color: #cba6f7;">FOR</span> a = 1 <span style="color: #cba6f7;">TO</span> mitu
-        x(mitu + a) = x(a)
-        y(mitu + a) = y(a)
-        s(mitu + a) = s(a)
-        z(mitu + a) = z(a)
-        x4(mitu + a) = <span style="color: #89b4fa;">RND</span> * 4 - 2
-        y4(mitu + a) = <span style="color: #89b4fa;">RND</span> * 4 - 2
-    <span style="color: #cba6f7;">NEXT</span> a
-    mitu = mitu * 2
-
-<span style="color: #cba6f7;">NEXT</span> tr
-
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">Exit application if any key was pressed by user</span>
-<span style="color: #cba6f7;">IF</span> <span style="color: #89b4fa;">INKEY$</span> &lt;&gt; <span style="color: #a6e3a1;">""</span> <span style="color: #cba6f7;">THEN</span> <span style="color: #cba6f7;">SYSTEM</span>
-
-
-<span style="color: #cba6f7;">SLEEP</span> 2
-<span style="color: #f38ba8;">CLS</span>
-<span style="color: #cba6f7;">GOTO</span> <span style="color: #fab387;">1</span>
-
-<span style="color: #cba6f7;">SUB</span> setPalette
-    <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Set the palette colors to grayscale</span>
-    <span style="color: #cba6f7;">FOR</span> a = 0 <span style="color: #cba6f7;">TO</span> 16
-        <span style="color: #f38ba8;">OUT</span> &amp;H3C8, a
-        <span style="color: #f38ba8;">OUT</span> &amp;H3C9, a * 4
-        <span style="color: #f38ba8;">OUT</span> &amp;H3C9, a * 4
-        <span style="color: #f38ba8;">OUT</span> &amp;H3C9, a * 4
-    <span style="color: #cba6f7;">NEXT</span>
-<span style="color: #cba6f7;">END</span> <span style="color: #cba6f7;">SUB</span>
-
-<span style="color: #cba6f7;">SUB</span> show (d)
-    <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Retrieve current branch properties</span>
-    x1 = x(d)
-    y1 = y(d)
-    s1 = s(d)
-    z1 = z(d)
-
-    <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Calculate color based on angle</span>
-    c = <span style="color: #89b4fa;">SIN</span>(z1) * 7 + 9
-
-    <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Draw and fill the circle representing the branch</span>
-    <span style="color: #f38ba8;">CIRCLE</span> (x1, y1), s1 / 100, c
-    <span style="color: #f38ba8;">PAINT</span> (x1, y1), c
-
-    <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Update position based on current angle and size</span>
-    x(d) = x(d) + (<span style="color: #89b4fa;">SIN</span>(z1) * 1000) / (s1 + 15)
-    y(d) = y(d) + (<span style="color: #89b4fa;">COS</span>(z1) * 1000) / (s1 + 15)
-
-    <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Decay the size slightly</span>
-    s(d) = s(d) / 1.01
-
-    <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Update angle based on direction</span>
-    <span style="color: #cba6f7;">IF</span> x4(d) &gt;= 0 <span style="color: #cba6f7;">THEN</span> z(d) = z(d) + .1 <span style="color: #cba6f7;">ELSE</span> z(d) = z(d) - .1
-
-    <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Move branch in its random direction</span>
-    x(d) = x(d) + x4(d)
-    y(d) = y(d) + y4(d)
-<span style="color: #cba6f7;">END</span> <span style="color: #cba6f7;">SUB</span>
-
-<span style="color: #cba6f7;">SUB</span> start
-    <span style="color: #f38ba8;">SCREEN</span> 12
-    setPalette
-    <span style="color: #f38ba8;">RANDOMIZE</span> <span style="color: #f38ba8;">TIMER</span>
-<span style="color: #cba6f7;">END</span> <span style="color: #cba6f7;">SUB</span>
-</pre>
-</div>
-</div>
-</div>
-
-<div id="outline-container-org1582c4d" class="outline-2">
-<h2 id="org1582c4d"><span class="section-number-2">3.</span> Rotation in 2D space using trigonometry functions</h2>
-<div class="outline-text-2" id="text-3">
-<p>
-Grid of dots is rotated on the screen.
-</p>
-
-<video width="800" controls loop autoplay>
-  <source src="2D rotation.webm" type="video/webm">
-  Your browser does not support the video tag.
-</video>
-
-<p>
-<a href="2D rotation.bas">Source code</a>
-</p>
-
-<div class="org-src-container">
-<pre class="src src-basic-qb45"><span style="color: #6c7086;">' </span><span style="color: #6c7086;">This program showcases the rotation of points on an X-Y coordinate</span>
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">system using trigonometric functions, specifically sine and cosine. By</span>
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">simulating the effect of rotating a collection of grid points around</span>
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">the origin, it demonstrates the mathematical principles behind 2D</span>
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">rotation.</span>
-<span style="color: #6c7086;">'</span>
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">By Svjatoslav Agejenko.</span>
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">Email: svjatoslav@svjatoslav.eu</span>
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">Homepage: http://www.svjatoslav.eu</span>
-
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">Changelog:</span>
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">2003.12, Initial version</span>
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">2024, Improved program readability using AI</span>
-
-<span style="color: #cba6f7;">DIM</span> <span style="color: #f38ba8;">SHARED</span> pointXCoordinates(1000) <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Array to store x coordinates of points</span>
-<span style="color: #cba6f7;">DIM</span> <span style="color: #f38ba8;">SHARED</span> pointYCoordinates(1000) <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Array to store y coordinates of points</span>
-<span style="color: #cba6f7;">DIM</span> <span style="color: #f38ba8;">SHARED</span> oldPointXCoordinates(1000) <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Array to store previous x coordinates of points</span>
-<span style="color: #cba6f7;">DIM</span> <span style="color: #f38ba8;">SHARED</span> oldPointYCoordinates(1000) <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Array to store previous y coordinates of points</span>
-
-<span style="color: #f38ba8;">SCREEN</span> 13
-
-numPoints = 0 <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Initialize the number of points</span>
-<span style="color: #cba6f7;">FOR</span> pointXVal = -10 <span style="color: #cba6f7;">TO</span> 10
-    <span style="color: #cba6f7;">FOR</span> pointYVal = -10 <span style="color: #cba6f7;">TO</span> 10
-        numPoints = numPoints + 1
-        pointXCoordinates(numPoints) = pointXVal
-        pointYCoordinates(numPoints) = pointYVal
-    <span style="color: #cba6f7;">NEXT</span> pointYVal
-<span style="color: #cba6f7;">NEXT</span> pointXVal
-
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">Main rotation loop</span>
-rotationAngle = 0 <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Initialize the rotation angle to 0</span>
-
-<span style="color: #fab387;">1</span>
-    rotationAngle = rotationAngle + .01  <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Increment the rotation angle by 0.01 radians</span>
-
-    <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Calculate the sine and cosine of the current rotation angle</span>
-    sineOfRotationAngle = <span style="color: #89b4fa;">SIN</span>(rotationAngle)
-    cosineOfRotationAngle = <span style="color: #89b4fa;">COS</span>(rotationAngle)
-
-    <span style="color: #cba6f7;">FOR</span> pointIndex = 1 <span style="color: #cba6f7;">TO</span> numPoints
-        <span style="color: #f38ba8;">PSET</span> (oldPointXCoordinates(pointIndex), oldPointYCoordinates(pointIndex)), 0 <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Clear the previous position</span>
-
-        xCoordinate = pointXCoordinates(pointIndex)
-        yCoordinate = pointYCoordinates(pointIndex)
-
-        <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Calculate the new x and y coordinate after rotation</span>
-        newXCoordinate = xCoordinate * sineOfRotationAngle + yCoordinate * cosineOfRotationAngle
-        newYCoordinate = xCoordinate * cosineOfRotationAngle - yCoordinate * sineOfRotationAngle
-
-        <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Scale and translate the new x and y coordinates to the center of the screen</span>
-        newXCoordinate = newXCoordinate * 7 + 160
-        newYCoordinate = newYCoordinate * 7 + 100
-
-        <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Store x and y on-screen coordinates for clearing on next iteration</span>
-        oldPointXCoordinates(pointIndex) = newXCoordinate
-        oldPointYCoordinates(pointIndex) = newYCoordinate
-
-        <span style="color: #f38ba8;">PSET</span> (newXCoordinate, newYCoordinate), 15 <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Draw the point at the new position</span>
-    <span style="color: #cba6f7;">NEXT</span> pointIndex
-
-<span style="color: #cba6f7;">IF</span> <span style="color: #89b4fa;">INKEY$</span> = <span style="color: #a6e3a1;">""</span> <span style="color: #cba6f7;">THEN</span> <span style="color: #cba6f7;">GOTO</span> <span style="color: #fab387;">1</span> <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Continue rotating if no key is pressed</span>
-</pre>
-</div>
-</div>
-</div>
-
-<div id="outline-container-org9ec03c2" class="outline-2">
-<h2 id="org9ec03c2"><span class="section-number-2">4.</span> Various text mode animation effects</h2>
-<div class="outline-text-2" id="text-4">
-<p>
-Program demonstrates various animation effects that can be
-accomplished using text-mode rendering.
-</p>
-
-<video width="800" controls loop autoplay>
-  <source src="text mode animation.webm" type="video/webm">
-  Your browser does not support the video tag.
-</video>
-
-<p>
-<a href="text mode animation.bas">Source code</a>
-</p>
-</div>
-</div>
-
-<div id="outline-container-org4752640" class="outline-2">
-<h2 id="org4752640"><span class="section-number-2">5.</span> Snowfall</h2>
-<div class="outline-text-2" id="text-5">
-<p>
-Program simulates falling of snow particles. Particles fall towards
-the ground because of the gravity. Once particle falls on the surface,
-it tries to skid around a bit, bit ultimately freezes in-place.
-</p>
-
-<video width="800" controls loop autoplay>
-  <source src="Snowfall.webm" type="video/webm">
-  Your browser does not support the video tag.
-</video>
-
-<p>
-<a href="Snowfall.bas">Source code</a>
-</p>
-
-<div class="org-src-container">
-<pre class="src src-basic-qb45"><span style="color: #6c7086;">' </span><span style="color: #6c7086;">Svjatoslav Agejenko 2003.04</span>
-
-<span style="color: #cba6f7;">DEFINT</span> A-Z
-<span style="color: #cba6f7;">DECLARE</span> <span style="color: #cba6f7;">SUB</span> fall (particleIndex)
-<span style="color: #cba6f7;">DECLARE</span> <span style="color: #cba6f7;">SUB</span> start ()
-
-amo = 500
-
-<span style="color: #cba6f7;">DIM</span> <span style="color: #f38ba8;">SHARED</span> fx(1 <span style="color: #cba6f7;">TO</span> amo)
-<span style="color: #cba6f7;">DIM</span> <span style="color: #f38ba8;">SHARED</span> fy(1 <span style="color: #cba6f7;">TO</span> amo)
-
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">Initialize particle positions</span>
-<span style="color: #cba6f7;">FOR</span> a = 1 <span style="color: #cba6f7;">TO</span> amo
-    fx(a) = <span style="color: #89b4fa;">RND</span> * 300 + 10
-    fy(a) = <span style="color: #89b4fa;">RND</span> * 100 + 10
-<span style="color: #cba6f7;">NEXT</span> a
-
-start
-
-<span style="color: #fab387;">1</span>
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">Main loop to simulate snowfall</span>
-<span style="color: #cba6f7;">FOR</span> b = 1 <span style="color: #cba6f7;">TO</span> 100
-    a = <span style="color: #89b4fa;">INT</span>(<span style="color: #89b4fa;">RND</span> * amo) + 1
-    fall a
-<span style="color: #cba6f7;">NEXT</span> b
-<span style="color: #f38ba8;">SOUND</span> 0, .1
-<span style="color: #cba6f7;">IF</span> <span style="color: #89b4fa;">INKEY$</span> &lt;&gt; <span style="color: #a6e3a1;">""</span> <span style="color: #cba6f7;">THEN</span> <span style="color: #cba6f7;">SYSTEM</span>
-<span style="color: #cba6f7;">GOTO</span> <span style="color: #fab387;">1</span>
-
-<span style="color: #cba6f7;">SUB</span> fall (particleIndex)
-
-t = 0
-<span style="color: #fab387;">2</span>
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">Draw the particle at its current position</span>
-<span style="color: #f38ba8;">PSET</span> (fx(particleIndex), fy(particleIndex)), 0
-
-ny = fy(particleIndex) + 1
-nx = fx(particleIndex) + <span style="color: #89b4fa;">INT</span>(<span style="color: #89b4fa;">RND</span> * 3) - 1
-
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">Check for collision with another particle</span>
-<span style="color: #cba6f7;">IF</span> <span style="color: #89b4fa;">POINT</span>(nx, ny) &gt; 0 <span style="color: #cba6f7;">THEN</span>
-    <span style="color: #6c7086;">' </span><span style="color: #6c7086;">If collision detected and t is less than 10, increment t and retry</span>
-    <span style="color: #cba6f7;">IF</span> t &lt; 10 <span style="color: #cba6f7;">THEN</span>
-        t = t + 1
-        <span style="color: #cba6f7;">GOTO</span> <span style="color: #fab387;">2</span>
-    <span style="color: #cba6f7;">END</span> <span style="color: #cba6f7;">IF</span>
-    <span style="color: #6c7086;">' </span><span style="color: #6c7086;">If collision persists, change particle color to indicate collision</span>
-    <span style="color: #f38ba8;">PSET</span> (fx(particleIndex), fy(particleIndex)), 15
-    nx = <span style="color: #89b4fa;">RND</span> * 300 + 10
-    ny = 1
-<span style="color: #cba6f7;">END</span> <span style="color: #cba6f7;">IF</span>
-
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">Check if the particle has reached the bottom of the screen</span>
-<span style="color: #cba6f7;">IF</span> fy(particleIndex) &gt; 198 <span style="color: #cba6f7;">THEN</span>
-    <span style="color: #f38ba8;">PSET</span> (fx(particleIndex), fy(particleIndex)), 15
-    nx = <span style="color: #89b4fa;">RND</span> * 300 + 10
-    ny = 1
-<span style="color: #cba6f7;">END</span> <span style="color: #cba6f7;">IF</span>
-
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">Update particle position</span>
-fx(particleIndex) = nx
-fy(particleIndex) = ny
-
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">Draw the particle at its new position</span>
-<span style="color: #f38ba8;">PSET</span> (fx(particleIndex), fy(particleIndex)), 15
-
-<span style="color: #cba6f7;">END</span> <span style="color: #cba6f7;">SUB</span>
-
-<span style="color: #cba6f7;">DEFSNG</span> A-Z
-<span style="color: #cba6f7;">SUB</span> start
-<span style="color: #f38ba8;">SCREEN</span> 13
-
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">Create nice and curvy surface for snow particles to fall onto.</span>
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">Here we draw "SNOW" with big and wobbly letters to the screen</span>
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">to serve as an obstacle for snow particles.</span>
-
-<span style="color: #f38ba8;">LOCATE</span> 1, 1
-<span style="color: #f38ba8;">PRINT</span> <span style="color: #a6e3a1;">"SNOW"</span>
-
-<span style="color: #cba6f7;">FOR</span> y = 0 <span style="color: #cba6f7;">TO</span> 15 <span style="color: #cba6f7;">STEP</span> .2
-    xp = <span style="color: #89b4fa;">SIN</span>(y / 1) * 3 + 65
-    <span style="color: #cba6f7;">FOR</span> x = 0 <span style="color: #cba6f7;">TO</span> 30 <span style="color: #cba6f7;">STEP</span> .1
-        ys = 4 + <span style="color: #89b4fa;">COS</span>(x / 5)
-        yp = <span style="color: #89b4fa;">COS</span>(x / 4 + 3) * 5 + 130
-        c = <span style="color: #89b4fa;">POINT</span>(x, y)
-        <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Draw a line if the point is not black</span>
-        <span style="color: #cba6f7;">IF</span> c &gt; 0 <span style="color: #cba6f7;">THEN</span>
-            <span style="color: #f38ba8;">LINE</span> (x * 6 + xp, y * ys + yp)-(x * 6 + xp + 1, y * ys + yp + 1), 11, BF
-        <span style="color: #cba6f7;">END</span> <span style="color: #cba6f7;">IF</span>
-    <span style="color: #cba6f7;">NEXT</span> x
-<span style="color: #cba6f7;">NEXT</span> y
-
-<span style="color: #f38ba8;">LOCATE</span> 1, 1
-<span style="color: #f38ba8;">PRINT</span> <span style="color: #a6e3a1;">"      "</span>
-
-<span style="color: #cba6f7;">END</span> <span style="color: #cba6f7;">SUB</span>
-</pre>
-</div>
-</div>
-</div>
-
-<div id="outline-container-org728093c" class="outline-2">
-<h2 id="org728093c"><span class="section-number-2">6.</span> Screensaver</h2>
-<div class="outline-text-2" id="text-6">
-<p>
-Application of trigonometry functions is explored here to calculate
-line coordinates.
-</p>
-
-<video width="800" controls loop autoplay>
-  <source src="Screensaver.webm" type="video/webm">
-  Your browser does not support the video tag.
-</video>
-
-<p>
-<a href="Screensaver.bas">Source code</a>
-</p>
-
-<div class="org-src-container">
-<pre class="src src-basic-qb45"><span style="color: #6c7086;">' </span><span style="color: #6c7086;">Mystery screensaver</span>
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">By Svjatoslav Agejenko.</span>
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">Email: svjatoslav@svjatoslav.eu</span>
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">Homepage: http://www.svjatoslav.eu</span>
-<span style="color: #6c7086;">'</span>
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">Changelog:</span>
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">2004.01, Initial version</span>
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">2024.08, Improved program readability using AI</span>
-
-<span style="color: #f38ba8;">SCREEN</span> 7, , , 1
-
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">Main loop for animation</span>
-<span style="color: #cba6f7;">DO</span>
-    <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Increment frame counter</span>
-    frameCounter = frameCounter + 1
-
-    <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Calculate scaling factor based on frame counter</span>
-    scaleFactor = (<span style="color: #89b4fa;">SIN</span>(frameCounter / 100) + 1.1) * 2
-
-    <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Draw lines to create animation effect</span>
-    <span style="color: #cba6f7;">FOR</span> s = 1 <span style="color: #cba6f7;">TO</span> 20 <span style="color: #cba6f7;">STEP</span> .1
-        <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Calculate x and y coordinates for the first point</span>
-        x = <span style="color: #89b4fa;">SIN</span>(s / 1 + frameCounter / 7) * 100
-        y = <span style="color: #89b4fa;">COS</span>(s / 1 + frameCounter / 10) * 100
-
-        <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Calculate x and y coordinates for the second point</span>
-        x1 = <span style="color: #89b4fa;">SIN</span>(s / 1 - frameCounter / 8) * 100
-        y1 = <span style="color: #89b4fa;">COS</span>(s / 1 + frameCounter / 15) * 100
-
-        <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Draw a line between the two points with varying thickness</span>
-        <span style="color: #f38ba8;">LINE</span> (x + 160, y + 100)-(x1 + 160, y1 + 100), s <span style="color: #89b4fa;">MOD</span> 15
-    <span style="color: #cba6f7;">NEXT</span> s
-
-    <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Copy screen buffer to display the animation</span>
-    <span style="color: #f38ba8;">PCOPY</span> 0, 1
-
-    <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Generate a sound effect</span>
-    <span style="color: #f38ba8;">SOUND</span> 0, 1
-
-    <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Clear the screen for the next frame</span>
-    <span style="color: #f38ba8;">CLS</span>
-
-    <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Check if a key is pressed and exit if so</span>
-    <span style="color: #cba6f7;">IF</span> <span style="color: #89b4fa;">INKEY$</span> &lt;&gt; <span style="color: #a6e3a1;">""</span> <span style="color: #cba6f7;">THEN</span> <span style="color: #cba6f7;">SYSTEM</span>
-<span style="color: #cba6f7;">LOOP</span>
-</pre>
-</div>
-</div>
-</div>
-
-<div id="outline-container-org39a9a1d" class="outline-2">
-<h2 id="org39a9a1d"><span class="section-number-2">7.</span> Screensaver - flying hand fans</h2>
-<div class="outline-text-2" id="text-7">
-<p>
-Quick implementation for colorful flying hand fans.
-</p>
-
-<video width="800" controls loop autoplay>
-  <source src="Screensaver, flying hand fans.webm" type="video/webm">
-  Your browser does not support the video tag.
-</video>
-
-<p>
-<a href="Screensaver, flying hand fans.bas">Source code</a>
-</p>
-
-<div class="org-src-container">
-<pre class="src src-basic-qb45"><span style="color: #6c7086;">' </span><span style="color: #6c7086;">Screensaver</span>
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">By Svjatoslav Agejenko.</span>
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">Email: svjatoslav@svjatoslav.eu</span>
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">Homepage: http://www.svjatoslav.eu</span>
-<span style="color: #6c7086;">'</span>
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">Changelog:</span>
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">2003.04, Initial version</span>
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">2024.08, Improved program readability using AI</span>
-
-
-<span style="color: #f38ba8;">SCREEN</span> 7, , , 1
-
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">Main animation loop</span>
-<span style="color: #fab387;">1</span> :
-    <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Adjust frame counter if it exceeds a certain threshold</span>
-    <span style="color: #cba6f7;">IF</span> frameCounter &gt; 10000 <span style="color: #cba6f7;">THEN</span> frameCounter = -10000
-
-    <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Update the positions of six points based on the frame counter</span>
-    <span style="color: #cba6f7;">FOR</span> pointIndex = 1 <span style="color: #cba6f7;">TO</span> 6
-        <span style="color: #f38ba8;">OUT</span> &amp;H3C8, pointIndex
-        <span style="color: #f38ba8;">OUT</span> &amp;H3C9, <span style="color: #89b4fa;">SIN</span>(pointIndex + frameCounter * 3) * 30 + 31
-        <span style="color: #f38ba8;">OUT</span> &amp;H3C9, <span style="color: #89b4fa;">COS</span>(pointIndex * 1 + frameCounter * 5) * 30 + 31
-        <span style="color: #f38ba8;">OUT</span> &amp;H3C9, <span style="color: #89b4fa;">SIN</span>(pointIndex * .7 + frameCounter * 2.23) * 30 + 31
-    <span style="color: #cba6f7;">NEXT</span> pointIndex
-
-    <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Increment the frame counter for the next iteration</span>
-    frameCounter = frameCounter + .01
-
-    <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Render lines connecting points</span>
-    <span style="color: #cba6f7;">FOR</span> objectIndex = 1 <span style="color: #cba6f7;">TO</span> 10
-        <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Determine the color based on the remainder of objectIndex divided by 6</span>
-        pointColor = (objectIndex <span style="color: #89b4fa;">MOD</span> 6) + 1
-        <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Calculate the X coordinate for the starting point of the line</span>
-        xCoordinate = <span style="color: #89b4fa;">SIN</span>(objectIndex + frameCounter) * 100 + 150
-        <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Calculate the Y coordinate for the starting point of the line</span>
-        yCoordinate = <span style="color: #89b4fa;">COS</span>(objectIndex * 1.2 + frameCounter * 1.81) * 80 + 100
-        <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Calculate the sine component for the line's angle</span>
-        xSineComponent = <span style="color: #89b4fa;">SIN</span>(objectIndex * frameCounter * 2.3)
-        <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Draw lines from the starting point with varying lengths and angles</span>
-        <span style="color: #cba6f7;">FOR</span> xPositionOffset = -50 <span style="color: #cba6f7;">TO</span> 50 <span style="color: #cba6f7;">STEP</span> 10
-            <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Calculate the cosine component for the line's angle based on xPositionOffset</span>
-            yCosineComponent = <span style="color: #89b4fa;">COS</span>(xPositionOffset / 60 + frameCounter * 1 + objectIndex) * 50
-            <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Draw a line segment with varying thickness and color</span>
-            <span style="color: #f38ba8;">LINE</span> (xCoordinate, yCoordinate)-(xCoordinate + xPositionOffset * xSineComponent, yCoordinate - yCosineComponent), pointColor
-        <span style="color: #cba6f7;">NEXT</span> xPositionOffset
-    <span style="color: #cba6f7;">NEXT</span> objectIndex
-
-    <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Copy the graphics from the hidden page to the visible page</span>
-    <span style="color: #f38ba8;">PCOPY</span> 0, 1
-
-    <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Clear the screen for the next frame</span>
-    <span style="color: #f38ba8;">CLS</span>
-
-    <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Play a sound at a specific frequency and duration</span>
-    <span style="color: #f38ba8;">SOUND</span> 0, .4
-
-    <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Check if any key is pressed; if so, exit the program</span>
-    <span style="color: #cba6f7;">IF</span> <span style="color: #89b4fa;">INKEY$</span> &lt;&gt; <span style="color: #a6e3a1;">""</span> <span style="color: #cba6f7;">THEN</span> <span style="color: #cba6f7;">SYSTEM</span>
-
-    <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Loop back to the start of the animation</span>
-<span style="color: #cba6f7;">GOTO</span> <span style="color: #fab387;">1</span>
-</pre>
-</div>
-</div>
-</div>
-
-<div id="outline-container-org11b0b65" class="outline-2">
-<h2 id="org11b0b65"><span class="section-number-2">8.</span> Polygon rendering</h2>
-<div class="outline-text-2" id="text-8">
-<p>
-Algorithm to demonstrate rendering or polygons across arbitrary
-coordinates.
-</p>
-
-<video width="800" controls loop autoplay>
-  <source src="Polygon.webm" type="video/webm">
-  Your browser does not support the video tag.
-</video>
-
-<p>
-<a href="Polygon.bas">Source code</a>
-</p>
-
-<div class="org-src-container">
-<pre class="src src-basic-qb45"><span style="color: #6c7086;">' </span><span style="color: #6c7086;">Program to render polygons at random locations and random colors.</span>
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">By Svjatoslav Agejenko.</span>
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">Email: svjatoslav@svjatoslav.eu</span>
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">Homepage: http://www.svjatoslav.eu</span>
-
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">Changelog:</span>
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">2001,    Initial version</span>
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">2024,    Improved program readability using AI</span>
-
-<span style="color: #cba6f7;">DEFINT</span> A-Z
-<span style="color: #cba6f7;">DECLARE</span> <span style="color: #cba6f7;">SUB</span> fillPolygon (x1, y1, x2, y2, x3, y3, c)
-<span style="color: #f38ba8;">SCREEN</span> 13
-
-<span style="color: #fab387;">MainLoop:</span>
-    <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Generate random coordinates for the first vertex</span>
-    x1 = <span style="color: #89b4fa;">RND</span> * 318 + 1
-    y1 = <span style="color: #89b4fa;">RND</span> * 198 + 1
-
-    <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Generate random coordinates for the second vertex</span>
-    x2 = <span style="color: #89b4fa;">RND</span> * 318 + 1
-    y2 = <span style="color: #89b4fa;">RND</span> * 198 + 1
-
-    <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Generate random coordinates for the third vertex</span>
-    x3 = <span style="color: #89b4fa;">RND</span> * 318 + 1
-    y3 = <span style="color: #89b4fa;">RND</span> * 198 + 1
-
-    <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Fill the polygon with a random color</span>
-    fillPolygon x1, y1, x2, y2, x3, y3, <span style="color: #89b4fa;">RND</span> * 255
-
-    <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Add delay</span>
-    <span style="color: #f38ba8;">SOUND</span> 0, 1
-
-    <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Check if any key is pressed to exit the loop</span>
-    <span style="color: #cba6f7;">IF</span> <span style="color: #89b4fa;">INKEY$</span> &lt;&gt; <span style="color: #a6e3a1;">""</span> <span style="color: #cba6f7;">THEN</span> <span style="color: #cba6f7;">SYSTEM</span>
-<span style="color: #cba6f7;">GOTO</span> MainLoop
-
-<span style="color: #cba6f7;">SUB</span> fillPolygon (x1, y1, x2, y2, x3, y3, c)
-    <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Buffer array to store x-coordinates for each y-index</span>
-    <span style="color: #cba6f7;">DIM</span> yBuffer(-10 <span style="color: #cba6f7;">TO</span> 210)
-
-    <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Draw the line between the first and second vertices</span>
-    tempX1 = x1
-    tempY1 = y1
-    tempX2 = x2
-    tempY2 = y2
-    <span style="color: #cba6f7;">GOSUB</span> makeLine
-
-    <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Draw the line between the first and third vertices</span>
-    tempX1 = x1
-    tempY1 = y1
-    tempX2 = x3
-    tempY2 = y3
-    <span style="color: #cba6f7;">GOSUB</span> makeLine
-
-    <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Draw the line between the second and third vertices</span>
-    tempX1 = x3
-    tempY1 = y3
-    tempX2 = x2
-    tempY2 = y2
-    <span style="color: #cba6f7;">GOSUB</span> makeLine
-
-<span style="color: #cba6f7;">GOTO</span> FillEnd
-
-<span style="color: #fab387;">makeLine:</span>
-    <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Ensure that the start point is always below the end point</span>
-    <span style="color: #cba6f7;">IF</span> tempY2 &lt; tempY1 <span style="color: #cba6f7;">THEN</span> <span style="color: #f38ba8;">SWAP</span> tempY1, tempY2: <span style="color: #f38ba8;">SWAP</span> tempX1, tempX2
-
-    <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Loop through each y-index from the start to the end</span>
-    <span style="color: #cba6f7;">FOR</span> yIndex = tempY1 <span style="color: #cba6f7;">TO</span> tempY2 - 1
-        <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Calculate the x-position for the current y-index</span>
-        xPos = tempX1 + (tempX2 - tempX1) * ((yIndex - tempY1) / (tempY2 - tempY1))
-
-        <span style="color: #6c7086;">' </span><span style="color: #6c7086;">If the buffer is empty, store the x-position</span>
-        <span style="color: #cba6f7;">IF</span> yBuffer(yIndex) = 0 <span style="color: #cba6f7;">THEN</span>
-            yBuffer(yIndex) = xPos
-        <span style="color: #cba6f7;">ELSE</span>
-            <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Otherwise, draw a line between the stored and calculated positions</span>
-            <span style="color: #f38ba8;">LINE</span> (xPos, yIndex)-(yBuffer(yIndex), yIndex), c
-        <span style="color: #cba6f7;">END</span> <span style="color: #cba6f7;">IF</span>
-    <span style="color: #cba6f7;">NEXT</span> yIndex
-<span style="color: #cba6f7;">RETURN</span>
-
-<span style="color: #fab387;">FillEnd:</span>
-<span style="color: #cba6f7;">END</span> <span style="color: #cba6f7;">SUB</span>
-</pre>
-</div>
-</div>
-</div>
-
-<div id="outline-container-orgd53f426" class="outline-2">
-<h2 id="orgd53f426"><span class="section-number-2">9.</span> Textured polygon rendering</h2>
-<div class="outline-text-2" id="text-9">
-<p>
-Algorithm to demonstrate rendering or textured polygons across
-arbitrary coordinates.
-</p>
-
-<video width="800" controls loop autoplay>
-  <source src="Polygon textured.webm" type="video/webm">
-  Your browser does not support the video tag.
-</video>
-
-<p>
-<a href="Polygon textured.bas">Source code</a>
-</p>
-</div>
-</div>
-
-
-<div id="outline-container-org53c458f" class="outline-2">
-<h2 id="org53c458f"><span class="section-number-2">10.</span> Yin and yang animation</h2>
-<div class="outline-text-2" id="text-10">
-<p>
-Yin and yang is a concept that originated in Chinese philosophy,
-describing an opposite but interconnected, self-perpetuating
-cycle. Yin and yang can be thought of as complementary and at the same
-time opposing forces that interact to form a dynamic system in which
-the whole is greater than the assembled parts and the parts are
-important for cohesion of the whole.
-</p>
-
-<video width="800" controls loop autoplay>
-  <source src="Yin and yang.webm" type="video/webm">
-  Your browser does not support the video tag.
-</video>
-
-<p>
-<a href="Yin and yang.bas">Source code</a>
-</p>
-
-<div class="org-src-container">
-<pre class="src src-basic-qb45"><span style="color: #6c7086;">' </span><span style="color: #6c7086;">Yin and yang animation</span>
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">By Svjatoslav Agejenko.</span>
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">Email: svjatoslav@svjatoslav.eu</span>
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">Homepage: http://www.svjatoslav.eu</span>
-<span style="color: #6c7086;">'</span>
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">Changelog:</span>
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">2000, Initial version</span>
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">2024.08, Improved program readability using AI</span>
-
-<span style="color: #cba6f7;">DECLARE</span> <span style="color: #cba6f7;">SUB</span> Cir (x!, y!, r!, c!)
-<span style="color: #f38ba8;">SCREEN</span> 13
-pi = 3.141592599999999#
-<span style="color: #f38ba8;">PAINT</span> (1, 1), 1
-
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">Main animation loop</span>
-<span style="color: #cba6f7;">DO</span>
-    <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Calculate the x and y positions for both circles using sine and cosine functions</span>
-    x = <span style="color: #89b4fa;">SIN</span>(a) * 40 + 160
-    x1 = <span style="color: #89b4fa;">SIN</span>(a + pi) * 40 + 160
-    y = <span style="color: #89b4fa;">COS</span>(a) * 34 + 100
-    y1 = <span style="color: #89b4fa;">COS</span>(a + pi) * 34 + 100
-
-    <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Draw the first circle with color 0 (black)</span>
-    Cir x, y, 40, 0
-    <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Draw the second circle with color 1 (blue)</span>
-    Cir x1, y1, 40, 1
-
-    <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Increment the angle to animate the circles</span>
-    a = a + .05
-
-    <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Check for user input to exit the program</span>
-    <span style="color: #cba6f7;">IF</span> <span style="color: #89b4fa;">INKEY$</span> &lt;&gt; <span style="color: #a6e3a1;">""</span> <span style="color: #cba6f7;">THEN</span> <span style="color: #cba6f7;">SYSTEM</span>
-
-    <span style="color: #6c7086;">' </span><span style="color: #6c7086;">delay to slow down animation</span>
-    <span style="color: #f38ba8;">SOUND</span> 0, 1
-<span style="color: #cba6f7;">LOOP</span>
-
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">Subroutine to draw a circle with specified center (x, y), radius r, and color c</span>
-<span style="color: #cba6f7;">SUB</span> Cir (x, y, r, c)
-    <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Define colors for the circle outline</span>
-    cc1 = 0 <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Black</span>
-    cc2 = 15 <span style="color: #6c7086;">' </span><span style="color: #6c7086;">White</span>
-
-    <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Swap colors if the second color is desired for the inner part of the circle</span>
-    <span style="color: #cba6f7;">IF</span> c = 1 <span style="color: #cba6f7;">THEN</span> <span style="color: #f38ba8;">SWAP</span> cc1, cc2
-
-    <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Draw the circle from radius 1 to r</span>
-    <span style="color: #cba6f7;">FOR</span> a = 1 <span style="color: #cba6f7;">TO</span> r
-        <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Determine the color for the current circle segment</span>
-        <span style="color: #cba6f7;">IF</span> a &lt; r / 2 <span style="color: #cba6f7;">THEN</span> c1 = cc1 <span style="color: #cba6f7;">ELSE</span> c1 = cc2
-        <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Draw the circle segment with the determined color</span>
-        <span style="color: #f38ba8;">CIRCLE</span> (x, y), a, c1
-    <span style="color: #cba6f7;">NEXT</span> a
-<span style="color: #cba6f7;">END</span> <span style="color: #cba6f7;">SUB</span>
-</pre>
-</div>
-</div>
-</div>
-
-<div id="outline-container-orge2be593" class="outline-2">
-<h2 id="orge2be593"><span class="section-number-2">11.</span> Orbiting particles</h2>
-<div class="outline-text-2" id="text-11">
-<p>
-Trivial to implement but interesting looking effect. Various particles
-are orbiting central point. Each particle is connected to the center.
-</p>
-
-<video width="800" controls loop autoplay>
-  <source src="Orbiting particles.webm" type="video/webm">
-  Your browser does not support the video tag.
-</video>
-
-<p>
-<a href="Orbiting particles.bas">Source code</a>
-</p>
-
-<div class="org-src-container">
-<pre class="src src-basic-qb45"><span style="color: #6c7086;">' </span><span style="color: #6c7086;">Projects animated particles in orbit around a central point.</span>
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">By Svjatoslav Agejenko.</span>
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">Email: svjatoslav@svjatoslav.eu</span>
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">Homepage: http://www.svjatoslav.eu</span>
-
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">Changelog:</span>
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">?, Initial version</span>
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">2024, Improved program readability using AI</span>
-
-<span style="color: #f38ba8;">SCREEN</span> 7, , , 1
-<span style="color: #f38ba8;">RANDOMIZE</span> <span style="color: #f38ba8;">TIMER</span>
-
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">Declare shared arrays to store particles</span>
-<span style="color: #cba6f7;">DIM</span> <span style="color: #f38ba8;">SHARED</span> particleColor(1 <span style="color: #cba6f7;">TO</span> 100)
-<span style="color: #cba6f7;">DIM</span> <span style="color: #f38ba8;">SHARED</span> particleX(1 <span style="color: #cba6f7;">TO</span> 100)
-<span style="color: #cba6f7;">DIM</span> <span style="color: #f38ba8;">SHARED</span> particleAngle(1 <span style="color: #cba6f7;">TO</span> 100)
-
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">Initialize the arrays with random values</span>
-<span style="color: #cba6f7;">FOR</span> a = 1 <span style="color: #cba6f7;">TO</span> 100
-    particleColor(a) = <span style="color: #89b4fa;">RND</span> * 15
-    particleX(a) = <span style="color: #89b4fa;">RND</span> * 100
-    particleAngle(a) = <span style="color: #89b4fa;">RND</span> * 100
-<span style="color: #cba6f7;">NEXT</span> a
-
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">Main loop to draw the animated particles</span>
-<span style="color: #fab387;">1</span>
-<span style="color: #f38ba8;">CLS</span>
-<span style="color: #cba6f7;">FOR</span> a = 1 <span style="color: #cba6f7;">TO</span> 50
-    <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Get current segment data</span>
-    currentColor = particleColor(a)
-    currentParticleX = particleX(a)
-    currentparticleAngle = particleAngle(a)
-
-    <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Calculate the x and y coordinates for the current segment</span>
-    xCoordinate = <span style="color: #89b4fa;">SIN</span>(currentparticleAngle) * 25
-    yCoordinate = <span style="color: #89b4fa;">SIN</span>(currentParticleX) * 20
-
-    <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Scale the coordinates</span>
-    scaleFactor = (<span style="color: #89b4fa;">COS</span>(currentparticleAngle) + 2) * 2
-    xCoordinate = xCoordinate * scaleFactor
-    yCoordinate = yCoordinate * scaleFactor
-
-    <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Draw the current particle as a circle</span>
-    <span style="color: #f38ba8;">CIRCLE</span> (xCoordinate + 160, yCoordinate + 100), scaleFactor, currentColor
-
-    <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Fill the inside of the circle with color</span>
-    <span style="color: #f38ba8;">PAINT</span> (xCoordinate + 160, yCoordinate + 100), currentColor
-
-    <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Draw a line from the center to the current particle</span>
-    <span style="color: #f38ba8;">LINE</span> (160, 100)-(xCoordinate + 160, yCoordinate + 100), currentColor
-
-    <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Rotate particle by small amount for next frame</span>
-    particleAngle(a) = particleAngle(a) + .1
-<span style="color: #cba6f7;">NEXT</span> a
-
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">Copy screen buffer 0 to screen buffer 1</span>
-<span style="color: #f38ba8;">PCOPY</span> 0, 1
-
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">Check for user input and exit if any key is pressed</span>
-<span style="color: #cba6f7;">IF</span> <span style="color: #89b4fa;">INKEY$</span> &lt;&gt; <span style="color: #a6e3a1;">""</span> <span style="color: #cba6f7;">THEN</span> <span style="color: #cba6f7;">SYSTEM</span>
-
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">Use sound function with inaudible 0 Hz but fixed delay to slow down animation</span>
-<span style="color: #f38ba8;">SOUND</span> 0, 1
-
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">Go back to the main loop</span>
-<span style="color: #cba6f7;">GOTO</span> <span style="color: #fab387;">1</span>
-</pre>
-</div>
-</div>
-</div>
-
-
-<div id="outline-container-org7a1daec" class="outline-2">
-<h2 id="org7a1daec"><span class="section-number-2">12.</span> DNA animation</h2>
-<div class="outline-text-2" id="text-12">
-<p>
-Animated DNA. Nowhere close to being anatomically correct, but
-resembles animation as seen in the movies :)
-</p>
-
-<video width="800" controls loop autoplay>
-  <source src="DNA.webm" type="video/webm">
-  Your browser does not support the video tag.
-</video>
-
-<p>
-<a href="DNA.bas">Source code</a>
-</p>
-
-<div class="org-src-container">
-<pre class="src src-basic-qb45"><span style="color: #6c7086;">' </span><span style="color: #6c7086;">Program to render animated DNA as seen in the movies.</span>
-<span style="color: #6c7086;">'</span>
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">By Svjatoslav Agejenko.</span>
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">Email: svjatoslav@svjatoslav.eu</span>
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">Homepage: http://www.svjatoslav.eu</span>
-<span style="color: #6c7086;">'</span>
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">Changelog:</span>
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">?, Initial version</span>
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">2024, Improved program readability using AI</span>
-
-<span style="color: #cba6f7;">DIM</span> <span style="color: #f38ba8;">SHARED</span> xCoordinates(1 <span style="color: #cba6f7;">TO</span> 100)
-<span style="color: #cba6f7;">DIM</span> <span style="color: #f38ba8;">SHARED</span> yCoordinates(1 <span style="color: #cba6f7;">TO</span> 100)
-<span style="color: #cba6f7;">DIM</span> <span style="color: #f38ba8;">SHARED</span> zCoordinates(1 <span style="color: #cba6f7;">TO</span> 100)
-<span style="color: #cba6f7;">DIM</span> <span style="color: #f38ba8;">SHARED</span> colorCodes(1 <span style="color: #cba6f7;">TO</span> 100)
-
-<span style="color: #f38ba8;">SCREEN</span> 7, , , 1
-
-<span style="color: #fab387;">1</span>:
-b = 0
-rotationAngle = rotationAngle + 0.1
-<span style="color: #cba6f7;">FOR</span> a = 1 <span style="color: #cba6f7;">TO</span> 20
-    b = b + 1
-    <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Calculate x-coordinate using sine function and add to array</span>
-    xCoordinates(b) = <span style="color: #89b4fa;">SIN</span>(a / 2 + rotationAngle) * 30 + 150
-    <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Calculate z-coordinate using sine function and add to array</span>
-    zCoordinates(b) = <span style="color: #89b4fa;">SIN</span>(a / 2 + rotationAngle + 1.6) * 2 + 2
-    <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Calculate y-coordinate by multiplying a with 8 and adding z-coordinate</span>
-    yCoordinates(b) = a * 8 + zCoordinates(b)
-    <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Assign color code to the current point</span>
-    colorCodes(b) = 3
-
-    b = b + 1
-    <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Calculate x-coordinate using sine function and add to array</span>
-    xCoordinates(b) = <span style="color: #89b4fa;">SIN</span>(a / 2 + rotationAngle + 2.5) * 30 + 150
-    <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Calculate z-coordinate using sine function and add to array</span>
-    zCoordinates(b) = <span style="color: #89b4fa;">SIN</span>(a / 2 + rotationAngle + 1.6 + 2.5) * 2 + 2
-    <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Calculate y-coordinate by multiplying a with 8 and adding z-coordinate</span>
-    yCoordinates(b) = a * 8 + zCoordinates(b)
-    <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Assign color code to the current point</span>
-    colorCodes(b) = 4
-<span style="color: #cba6f7;">NEXT</span> a
-
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">Clear the screen</span>
-<span style="color: #f38ba8;">CLS</span>
-
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">Draw lines and circles based on z-coordinate</span>
-<span style="color: #cba6f7;">FOR</span> b = 0 <span style="color: #cba6f7;">TO</span> 4
-    <span style="color: #cba6f7;">IF</span> b = 1 <span style="color: #cba6f7;">THEN</span>
-        <span style="color: #cba6f7;">FOR</span> a = 1 <span style="color: #cba6f7;">TO</span> 40 <span style="color: #cba6f7;">STEP</span> 2
-            <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Draw line between consecutive points</span>
-            <span style="color: #f38ba8;">LINE</span> (xCoordinates(a), yCoordinates(a))-(xCoordinates(a + 1), yCoordinates(a + 1)), 15
-        <span style="color: #cba6f7;">NEXT</span> a
-    <span style="color: #cba6f7;">END</span> <span style="color: #cba6f7;">IF</span>
-
-    <span style="color: #cba6f7;">FOR</span> a = 1 <span style="color: #cba6f7;">TO</span> 40
-        <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Check if the current z-coordinate matches the loop variable b</span>
-        <span style="color: #cba6f7;">IF</span> <span style="color: #89b4fa;">int</span>(zCoordinates(a)) = b <span style="color: #cba6f7;">THEN</span>
-            <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Draw circle with specified color code</span>
-            <span style="color: #f38ba8;">CIRCLE</span> (xCoordinates(a), yCoordinates(a)), b + 5, colorCodes(a)
-            <span style="color: #f38ba8;">PAINT</span> (xCoordinates(a), yCoordinates(a)), colorCodes(a)
-            <span style="color: #6c7086;">' </span><span style="color: #6c7086;">Draw an black outline of the circle</span>
-            <span style="color: #f38ba8;">CIRCLE</span> (xCoordinates(a), yCoordinates(a)), b + 5, 0
-        <span style="color: #cba6f7;">END</span> <span style="color: #cba6f7;">IF</span>
-    <span style="color: #cba6f7;">NEXT</span> a
-<span style="color: #cba6f7;">NEXT</span> b
-
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">Copy the screen to buffer and clear the screen</span>
-<span style="color: #f38ba8;">PCOPY</span> 0, 1
-<span style="color: #f38ba8;">CLS</span>
-
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">Check if any key is pressed</span>
-<span style="color: #cba6f7;">IF</span> <span style="color: #89b4fa;">INKEY$</span> = <span style="color: #a6e3a1;">""</span> <span style="color: #cba6f7;">THEN</span> <span style="color: #cba6f7;">GOTO</span> <span style="color: #fab387;">1</span>
-
-<span style="color: #6c7086;">' </span><span style="color: #6c7086;">End the program</span>
-<span style="color: #cba6f7;">SYSTEM</span>
-</pre>
-</div>
-</div>
-</div>
-
-<div id="outline-container-orgb9213d7" class="outline-2">
-<h2 id="orgb9213d7"><span class="section-number-2">13.</span> Matrix</h2>
-<div class="outline-text-2" id="text-13">
-<p>
-Effect inspired by "The Matrix" movie.
-</p>
-
-<video width="800" controls loop autoplay>
-  <source src="matrix.webm" type="video/webm">
-  Your browser does not support the video tag.
-</video>
-
-<p>
-<a href="matrix.bas">Source code</a>
-</p>
-</div>
-</div>
-
-
-<div id="outline-container-orgc8c7d12" class="outline-2">
-<h2 id="orgc8c7d12"><span class="section-number-2">14.</span> Hacker</h2>
-<div class="outline-text-2" id="text-14">
-<p>
-Ultra-realistic hacker screen simulator! Behold da glory of a true
-hacker's terminal, brimming wif mystical green text that cascades like
-a waterfall of knowledge across thy monitor.
-</p>
-
-<video width="800" controls loop autoplay>
-  <source src="hacker.webm" type="video/webm">
-  Your browser does not support the video tag.
-</video>
-
-<p>
-<a href="hacker.bas">Source code</a>
-</p>
-</div>
-</div>
-</div>
-<div id="postamble" class="status">
-<p class="date">Created: 2024-11-26 ti 00:46</p>
-<p class="validation"><a href="https://validator.w3.org/check?uri=referer">Validate</a></p>
-</div>
-</body>
-</html>