force use of pandoc version >= 3.1.12.2
The `bin/pandoc-wrapper.sh` tool will verify that the ssytem has a recent enough version of `pandoc(1)`. We explain why we insist on `pandoc(1)`. version >= 3.1.12.2 in comments where the $PANDOC_MIN_VERSION is set. Added `--wrap=preserve` as a default argument to `pandoc(1)`. While this change will impact every HTML file generated, we believe this will improve the ability of someone to look at the generated HTML and correlate with the original markdown. Changed `bin/pandoc-wrapper.sh` VERSION from "1.4.2 2024-03-17" to "1.4.3 2024-03-18". Performed `make www` to achieve all of the above and to generate HTML using the new `--wrap=preserve` `pandoc(1)` mode.
This commit is contained in:
1 parent
9eb7a54e9f
commit
b0b212acb1
402 files changed
+37061
-55132
No files matched your search
+155
-225
@@ -130,8 +130,8 @@
|
||||
<h2 id="author"><a name="author"></a>Author:</h2>
|
||||
<ul>
|
||||
<li>Name: <a href="../../authors.html#Sean_Barrett">Sean Barrett</a><br>
|
||||
Location: <a href="../../location.html#ZZ">ZZ</a> - <em>Unknown
|
||||
location</em> <br><br></li>
|
||||
Location: <a href="../../location.html#ZZ">ZZ</a> - <em>Unknown location</em>
|
||||
<br><br></li>
|
||||
</ul>
|
||||
|
||||
<!-- END: next line ends content generated by: bin/output-index-author.sh -->
|
||||
@@ -141,11 +141,11 @@ location</em> <br><br></li>
|
||||
|
||||
<h2 id="to-build">To build:</h2>
|
||||
<div class="sourceCode" id="cb1"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a><span class="fu">make</span> all</span></code></pre></div>
|
||||
<p>There is an alternate version of this program. See <a
|
||||
href="#alternate-code">Alternate code</a> below for details.</p>
|
||||
<p>There is an alternate version of this program. See <a href="#alternate-code">Alternate
|
||||
code</a> below for details.</p>
|
||||
<h2 id="to-use">To use:</h2>
|
||||
<p>First, you must make sure that <code>first</code> is made first (even
|
||||
though <code>make all</code> should make first first :-) ):</p>
|
||||
<p>First, you must make sure that <code>first</code> is made first (even though <code>make all</code>
|
||||
should make first first :-) ):</p>
|
||||
<div class="sourceCode" id="cb2"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true" tabindex="-1"></a><span class="fu">make</span> first</span></code></pre></div>
|
||||
<p>Second:</p>
|
||||
<div class="sourceCode" id="cb3"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb3-1"><a href="#cb3-1" aria-hidden="true" tabindex="-1"></a><span class="co"># get help:</span></span>
|
||||
@@ -163,147 +163,126 @@ though <code>make all</code> should make first first :-) ):</p>
|
||||
<h2 id="try">Try:</h2>
|
||||
<div class="sourceCode" id="cb7"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb7-1"><a href="#cb7-1" aria-hidden="true" tabindex="-1"></a><span class="ex">./try.sh</span></span></code></pre></div>
|
||||
<h2 id="alternate-code">Alternate code:</h2>
|
||||
<p>This alternate version, <a
|
||||
href="buzzard.2.alt.c">buzzard.2.alt.c</a>, does not contain a fix that
|
||||
the author notes in their remarks.</p>
|
||||
<p>This alternate version, <a href="buzzard.2.alt.c">buzzard.2.alt.c</a>, does not contain a
|
||||
fix that the author notes in their remarks.</p>
|
||||
<h3 id="alternate-build">Alternate build:</h3>
|
||||
<div class="sourceCode" id="cb8"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb8-1"><a href="#cb8-1" aria-hidden="true" tabindex="-1"></a><span class="fu">make</span> alt</span></code></pre></div>
|
||||
<h3 id="alternate-use">Alternate use:</h3>
|
||||
<p>Use <code>buzzard.2.alt</code> as you would <code>buzzard.2</code>
|
||||
above.</p>
|
||||
<p>Use <code>buzzard.2.alt</code> as you would <code>buzzard.2</code> above.</p>
|
||||
<h3 id="alternate-try">Alternate try:</h3>
|
||||
<div class="sourceCode" id="cb9"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb9-1"><a href="#cb9-1" aria-hidden="true" tabindex="-1"></a><span class="ex">./try.alt.sh</span></span></code></pre></div>
|
||||
<h2 id="judges-remarks">Judges’ remarks:</h2>
|
||||
<p>Have fun!</p>
|
||||
<h2 id="authors-remarks">Author’s remarks:</h2>
|
||||
<h3 id="what-it-does">What it does</h3>
|
||||
<p><code>first</code> implements a relatively primitive stack machine.
|
||||
How primitive? It supplies 13 visible primitives: 3 arithmetic, 1
|
||||
comparison, 2 memory-access, 2 character I/O, 3 primitives for defining
|
||||
new words, 1 tokenizing, and 1 special stack operation. (There are also
|
||||
three internal operations for the stack machine: ‘push this integer’,
|
||||
‘call this code’, and ‘compile a call to this code’.)</p>
|
||||
<p>It is very difficult to accomplish anything with this set of
|
||||
primitives, but they do have an interesting property.</p>
|
||||
<p>This–what this interesting property is, or in other words what first
|
||||
is good for–is the major obfuscation; there are also minor source
|
||||
obfuscations, as well as some design tricks that are effectively
|
||||
obfuscations. Details on the obfuscations are below, and the interesting
|
||||
property is discussed much further down.</p>
|
||||
<p><code>first</code> implements a relatively primitive stack machine. How
|
||||
primitive? It supplies 13 visible primitives: 3 arithmetic,
|
||||
1 comparison, 2 memory-access, 2 character I/O, 3 primitives
|
||||
for defining new words, 1 tokenizing, and 1 special stack
|
||||
operation. (There are also three internal operations for
|
||||
the stack machine: ‘push this integer’, ‘call this code’,
|
||||
and ‘compile a call to this code’.)</p>
|
||||
<p>It is very difficult to accomplish anything with this set
|
||||
of primitives, but they do have an interesting property.</p>
|
||||
<p>This–what this interesting property is, or in other words
|
||||
what first is good for–is the major obfuscation; there are
|
||||
also minor source obfuscations, as well as some design tricks
|
||||
that are effectively obfuscations. Details on the obfuscations
|
||||
are below, and the interesting property is discussed much
|
||||
further down.</p>
|
||||
<h3 id="how-to-run-it">How to run it</h3>
|
||||
<p><code>first</code> expects you to first enter the names of the 13
|
||||
primitives, separated by whitespace–it doesn’t care what you name them,
|
||||
but if all the names aren’t unique, you won’t be able to use some of
|
||||
them. After this you may type any sequence of valid <code>first</code>
|
||||
input. Valid <code>first</code> input is defined as any sequence of
|
||||
whitespace-delimited tokens which consist of primitives, new words
|
||||
you’ve defined, and integers (as parsed by <code>"%d"</code>). Invalid
|
||||
input behaves unpredictably, but gives no warning messages. A sample
|
||||
program, <code>demo1.1st</code>, is included, but it only works on ASCII
|
||||
systems.</p>
|
||||
<p>Do not expect to be able to do anything interesting with
|
||||
<code>first</code>.</p>
|
||||
<p>To do something interesting, you need to feed <code>first</code> the
|
||||
file <a href="third">third</a> first. In unix, you can do</p>
|
||||
<div class="sourceCode" id="cb10"><pre
|
||||
class="sourceCode sh"><code class="sourceCode bash"><span id="cb10-1"><a href="#cb10-1" aria-hidden="true" tabindex="-1"></a><span class="fu">cat</span> third help.th <span class="at">-</span> <span class="kw">|</span> <span class="ex">./first</span></span></code></pre></div>
|
||||
<p>to do this. Hopefully most operating systems will provide a way to do
|
||||
this. It may take some time for this to complete (I seem to remember it
|
||||
taking several minutes on an 8086 PC); <code>THIRD</code> will prompt
|
||||
you when it is finished. The file <a href="third">third</a> has not been
|
||||
obfuscated, due to sheer kindness on the author’s part.</p>
|
||||
<p>For more information on what you can do once you’ve piped <a
|
||||
href="third">third</a> into first, type <code>help</code> and consult <a
|
||||
href="https://en.wikipedia.org/wiki/Forth_(programming_language)">FORTH</a>
|
||||
manuals for further reference. Six sample THIRD programs are included in
|
||||
the files <code>demo1.th</code> through <code>demo6.th</code>. See <a
|
||||
href="buzzard.2.README.html">buzzard.2.README.html</a> for more
|
||||
information.</p>
|
||||
<p>Keep in mind that you are still running <code>first</code>, and are
|
||||
for the most part limited by <code>first</code>’s tokenizer (notably,
|
||||
unknown words will attempt to be parsed as integers.) It is possible to
|
||||
build a new parser that parses by hand, reading a single character at a
|
||||
time; however, such a parser cannot easily use the existing dictionary,
|
||||
and so would have to implement its own, thus requiring reimplementing
|
||||
all of <code>first</code> and <code>third</code> a second time–I did not
|
||||
care to tackle this project.</p>
|
||||
<p><code>first</code> expects you to first enter the names of the 13 primitives,
|
||||
separated by whitespace–it doesn’t care what you name them, but
|
||||
if all the names aren’t unique, you won’t be able to use some of
|
||||
them. After this you may type any sequence of valid <code>first</code> input.
|
||||
Valid <code>first</code> input is defined as any sequence of whitespace-delimited
|
||||
tokens which consist of primitives, new words you’ve defined, and
|
||||
integers (as parsed by <code>"%d"</code>). Invalid input behaves unpredictably,
|
||||
but gives no warning messages. A sample program, <code>demo1.1st</code>, is
|
||||
included, but it only works on ASCII systems.</p>
|
||||
<p>Do not expect to be able to do anything interesting with <code>first</code>.</p>
|
||||
<p>To do something interesting, you need to feed <code>first</code> the file
|
||||
<a href="third">third</a> first. In unix, you can do</p>
|
||||
<div class="sourceCode" id="cb10"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb10-1"><a href="#cb10-1" aria-hidden="true" tabindex="-1"></a><span class="fu">cat</span> third help.th <span class="at">-</span> <span class="kw">|</span> <span class="ex">./first</span></span></code></pre></div>
|
||||
<p>to do this. Hopefully most operating systems will provide a way to do this. It
|
||||
may take some time for this to complete (I seem to remember it taking several
|
||||
minutes on an 8086 PC); <code>THIRD</code> will prompt you when it is finished. The file
|
||||
<a href="third">third</a> has not been obfuscated, due to sheer kindness on the author’s
|
||||
part.</p>
|
||||
<p>For more information on what you can do once you’ve piped <a href="third">third</a> into
|
||||
first, type <code>help</code> and consult
|
||||
<a href="https://en.wikipedia.org/wiki/Forth_(programming_language)">FORTH</a> manuals for
|
||||
further reference. Six sample THIRD programs are included in the files
|
||||
<code>demo1.th</code> through <code>demo6.th</code>. See <a href="buzzard.2.README.html">buzzard.2.README.html</a>
|
||||
for more information.</p>
|
||||
<p>Keep in mind that you are still running <code>first</code>, and are for the most part
|
||||
limited by <code>first</code>’s tokenizer (notably, unknown words will attempt to be parsed
|
||||
as integers.) It is possible to build a new parser that parses by hand, reading
|
||||
a single character at a time; however, such a parser cannot easily use the
|
||||
existing dictionary, and so would have to implement its own, thus requiring
|
||||
reimplementing all of <code>first</code> and <code>third</code> a second time–I did not care to
|
||||
tackle this project.</p>
|
||||
<h3 id="compiling">Compiling</h3>
|
||||
<p><code>first</code> is reasonably portable. You may need to adjust the
|
||||
size of the buffers on smaller machines; <code>m[]</code> needs to be at
|
||||
least 2000 long, though.</p>
|
||||
<p>I say <code>first</code> is portable mainly because it uses native
|
||||
types. Unlike
|
||||
[FORTH](https://en.wikipedia.org/wiki/Forth_(programming_language),
|
||||
which traditionally allows byte and multi-byte operations, all
|
||||
operations are performed on C <code>int</code>s. That means
|
||||
<code>first</code> code is only as portable as the same code would be in
|
||||
C. As in C, the result of dividing <code>-1</code> by <code>2</code> is
|
||||
machine (or rather compiler) dependent.</p>
|
||||
<p><code>first</code> is reasonably portable. You may need to adjust the size of the buffers
|
||||
on smaller machines; <code>m[]</code> needs to be at least 2000 long, though.</p>
|
||||
<p>I say <code>first</code> is portable mainly because it uses native types. Unlike
|
||||
[FORTH](https://en.wikipedia.org/wiki/Forth_(programming_language), which
|
||||
traditionally allows byte and multi-byte operations, all operations are
|
||||
performed on C <code>int</code>s. That means <code>first</code> code is only as portable as the same
|
||||
code would be in C. As in C, the result of dividing <code>-1</code> by <code>2</code> is machine (or
|
||||
rather compiler) dependent.</p>
|
||||
<h3 id="how-is-first-obfuscated">How is first obfuscated?</h3>
|
||||
<p><code>first</code> is obfuscated in several ways. Some minor
|
||||
obfuscations like <code>&w[&m[1]][s]</code> for
|
||||
<code>s+m[w+1]</code> were in the original source but are no longer
|
||||
because, apparently, ANSI doesn’t allow it
|
||||
(<code>gcc -ansi -pedantic</code> doesn’t mind it, though.)</p>
|
||||
<p>Other related obfuscations are still present. The top of the stack is
|
||||
cached in a variable, which increases performance massively if the
|
||||
compiler can figure out to keep it in a register; it also obfuscates the
|
||||
code. (Unfortunately, the top of stack is a global variable and neither
|
||||
gcc nor most bundled compilers seem to <code>register</code> allocate
|
||||
it.)</p>
|
||||
<p>More significant are the design obfuscations. <code>m[0]</code> is
|
||||
the “dictionary pointer”, used when compiling words, and
|
||||
<code>m[1]</code> is the return stack index. Both are used as integer
|
||||
offsets into <code>m</code>. Both are kept in <code>m</code>, instead of
|
||||
as separate pointers, because they are then accessible to
|
||||
<code>first</code> programs, which is a crucial property of
|
||||
<code>first</code>. Similarly the way words are stored in the dictionary
|
||||
is not obvious, so it can be difficult to follow exactly what the
|
||||
<p><code>first</code> is obfuscated in several ways. Some minor obfuscations like
|
||||
<code>&w[&m[1]][s]</code> for <code>s+m[w+1]</code> were in the original source but are no longer
|
||||
because, apparently, ANSI doesn’t allow it (<code>gcc -ansi -pedantic</code> doesn’t mind
|
||||
it, though.)</p>
|
||||
<p>Other related obfuscations are still present. The top of the stack is cached in
|
||||
a variable, which increases performance massively if the compiler can figure out
|
||||
to keep it in a register; it also obfuscates the code. (Unfortunately, the top
|
||||
of stack is a global variable and neither gcc nor most bundled compilers seem to
|
||||
<code>register</code> allocate it.)</p>
|
||||
<p>More significant are the design obfuscations. <code>m[0]</code> is the “dictionary
|
||||
pointer”, used when compiling words, and <code>m[1]</code> is the return stack index. Both
|
||||
are used as integer offsets into <code>m</code>. Both are kept in <code>m</code>, instead of as
|
||||
separate pointers, because they are then accessible to <code>first</code> programs, which
|
||||
is a crucial property of <code>first</code>. Similarly the way words are stored in the
|
||||
dictionary is not obvious, so it can be difficult to follow exactly what the
|
||||
compiler words are doing.</p>
|
||||
<p>Assuming you’ve waded through all that, you still have to penetrate
|
||||
the most significant obfuscation. Traditionally, the question is whether
|
||||
a reader can answer the question “what will this do when I run it”. A
|
||||
reader who has deciphered <code>first</code> to this point may think
|
||||
they know the answer to this question, but they may not know the answer
|
||||
to the more important question, “what will this program do when given
|
||||
the right input?” <a
|
||||
href="https://en.wikipedia.org/wiki/Forth_(programming_language)">FORTH</a>
|
||||
aficionados, and especially FORTH implementers, may recognize the
|
||||
similarity of the internal compiler format to many FORTH internal
|
||||
representations, and, being aware that FORTH interpreters can often be
|
||||
self-compiling, may be suspicious that this program can compile FORTH,
|
||||
or a significant subset of it, or at least be capable of doing so if fed
|
||||
the right input. Of course, the name “THIRD” should be a dead giveaway,
|
||||
if the name “first” wasn’t. (These numbers were largely chosen because
|
||||
they were five letters long, like “FORTH”, and would not require
|
||||
truncation to five letters, which would be a dead giveaway. Besides,
|
||||
THIRD represents a step backwards, in more ways than one.)</p>
|
||||
<h3 id="what-exactly-is-first-then">What exactly is <code>first</code>,
|
||||
then?</h3>
|
||||
<p><code>first</code> is a tiny interpreter which implements a
|
||||
sufficient pseudo-subset of <a
|
||||
href="https://en.wikipedia.org/wiki/Forth_(programming_language)">FORTH</a>
|
||||
to allow it to bootstrap a relatively complete version of FORTH (based
|
||||
loosely on forth79), which I call THIRD. Complete relative to what, I’m
|
||||
not sure.</p>
|
||||
<p>I believe <code>first</code> is close to the smallest amount of code
|
||||
possible to get this effect <em>using forth-style primitives</em>, and
|
||||
still have some efficiency (it is possible to get by without
|
||||
multiplication if you have addition, obviously). In the design file,
|
||||
design, I give a justification for why each primitive in
|
||||
<p>Assuming you’ve waded through all that, you still have to penetrate the most
|
||||
significant obfuscation. Traditionally, the question is whether a reader can
|
||||
answer the question “what will this do when I run it”. A reader who has
|
||||
deciphered <code>first</code> to this point may think they know the answer to this
|
||||
question, but they may not know the answer to the more important question, “what
|
||||
will this program do when given the right input?”
|
||||
<a href="https://en.wikipedia.org/wiki/Forth_(programming_language)">FORTH</a> aficionados,
|
||||
and especially FORTH implementers, may recognize the similarity of the internal
|
||||
compiler format to many FORTH internal representations, and, being aware that
|
||||
FORTH interpreters can often be self-compiling, may be suspicious that this
|
||||
program can compile FORTH, or a significant subset of it, or at least be capable
|
||||
of doing so if fed the right input. Of course, the name “THIRD” should be a
|
||||
dead giveaway, if the name “first” wasn’t. (These numbers were largely chosen
|
||||
because they were five letters long, like “FORTH”, and would not require
|
||||
truncation to five letters, which would be a dead giveaway. Besides, THIRD
|
||||
represents a step backwards, in more ways than one.)</p>
|
||||
<h3 id="what-exactly-is-first-then">What exactly is <code>first</code>, then?</h3>
|
||||
<p><code>first</code> is a tiny interpreter which implements a sufficient pseudo-subset of
|
||||
<a href="https://en.wikipedia.org/wiki/Forth_(programming_language)">FORTH</a> to allow it
|
||||
to bootstrap a relatively complete version of FORTH (based loosely on forth79),
|
||||
which I call THIRD. Complete relative to what, I’m not sure.</p>
|
||||
<p>I believe <code>first</code> is close to the smallest amount of code possible to get this
|
||||
effect <em>using forth-style primitives</em>, and still have some efficiency (it is
|
||||
possible to get by without multiplication if you have addition, obviously). In
|
||||
the design file, design, I give a justification for why each primitive in
|
||||
<code>first</code> was included.</p>
|
||||
<p>THIRD is sorta slow, because <code>first</code> has so few primitives
|
||||
that many things that are primitives in <a
|
||||
href="https://en.wikipedia.org/wiki/Forth_(programming_language)">FORTH</a>
|
||||
(like swap) take a significant amount of time in THIRD.</p>
|
||||
<p>When you get the <code>Ok.</code> message from <code>third</code>,
|
||||
try out some sample <a
|
||||
href="https://en.wikipedia.org/wiki/Forth_(programming_language)">FORTH</a>
|
||||
code (<code>first</code> has no way of knowing if keyboard input is
|
||||
waiting, so it can’t actually prompt you in a normal way. It only prints
|
||||
<code>'Ok.'</code> after you define a word).</p>
|
||||
<div class="sourceCode" id="cb11"><pre
|
||||
class="sourceCode sh"><code class="sourceCode bash"><span id="cb11-1"><a href="#cb11-1" aria-hidden="true" tabindex="-1"></a><span class="ex">2</span> 3 + . cr</span></code></pre></div>
|
||||
<p>THIRD is sorta slow, because <code>first</code> has so few primitives that many things that
|
||||
are primitives in
|
||||
<a href="https://en.wikipedia.org/wiki/Forth_(programming_language)">FORTH</a> (like swap)
|
||||
take a significant amount of time in THIRD.</p>
|
||||
<p>When you get the <code>Ok.</code> message from <code>third</code>, try out some sample
|
||||
<a href="https://en.wikipedia.org/wiki/Forth_(programming_language)">FORTH</a> code
|
||||
(<code>first</code> has no way of knowing if keyboard input is waiting, so it can’t actually prompt
|
||||
you in a normal way. It only prints <code>'Ok.'</code> after you define a word).</p>
|
||||
<div class="sourceCode" id="cb11"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb11-1"><a href="#cb11-1" aria-hidden="true" tabindex="-1"></a><span class="ex">2</span> 3 + . cr</span></code></pre></div>
|
||||
<p>(which adds 2 and 3, and print the result and a newline.)</p>
|
||||
<p>THIRD responds:</p>
|
||||
<pre><code>5</code></pre>
|
||||
@@ -312,115 +291,66 @@ class="sourceCode sh"><code class="sourceCode bash"><span id="cb11-1"><a href="#
|
||||
test</code></pre>
|
||||
<p>and THIRD responds</p>
|
||||
<pre><code>1 2 3 4 5 6 7 8 9 10</code></pre>
|
||||
<p>When in <code>THIRD</code>, you can see how much space you’re
|
||||
currently using by typing:</p>
|
||||
<p>When in <code>THIRD</code>, you can see how much space you’re currently
|
||||
using by typing:</p>
|
||||
<pre><code>here .</code></pre>
|
||||
<p>The number THIRD replies with is the number of machine words
|
||||
(<code>int</code>s) that the dictionary (the first code) takes up, plus
|
||||
the 512 <code>int</code>s for the return stack. If you compile the basic
|
||||
THIRD system without the help word (strings take up one <code>int</code>
|
||||
per character in the string!), you should find that you’re using around
|
||||
<p>The number THIRD replies with is the number of machine words (<code>int</code>s) that the
|
||||
dictionary (the first code) takes up, plus the 512 <code>int</code>s for the return stack.
|
||||
If you compile the basic THIRD system without the help word (strings take up one
|
||||
<code>int</code> per character in the string!), you should find that you’re using around
|
||||
1000 <code>int</code>s (plus the return stack).</p>
|
||||
<p>Thus THIRD gives you a relatively complete <a
|
||||
href="https://en.wikipedia.org/wiki/Forth_(programming_language)">FORTH</a>
|
||||
system in less than 700 chars of C source + about 1000 <code>int</code>s
|
||||
of memory–and it’s portable too (you could copy over the THIRD memory
|
||||
dump to another machine, in theory). If the above numbers seem to you to
|
||||
be mixing apples and oranges (C source and compiled THIRD code), note
|
||||
that you should in theory be able to stick the compiled THIRD code into
|
||||
the C source.</p>
|
||||
<p>Software Construction Company gets credit for rekindling my interest
|
||||
in FORTH and thus indirectly inspiring me to write this program.</p>
|
||||
<h2 id="copyright-and-cc-by-sa-4.0-license">Copyright and CC BY-SA 4.0
|
||||
License:</h2>
|
||||
<p>This file is Copyright (c) 2023 by Landon Curt Noll. All Rights
|
||||
Reserved. You are free to share and adapt this file under the terms of
|
||||
this license:</p>
|
||||
<p>Thus THIRD gives you a relatively complete
|
||||
<a href="https://en.wikipedia.org/wiki/Forth_(programming_language)">FORTH</a> system in
|
||||
less than 700 chars of C source + about 1000 <code>int</code>s of memory–and it’s portable
|
||||
too (you could copy over the THIRD memory dump to another machine, in theory).
|
||||
If the above numbers seem to you to be mixing apples and oranges (C source and
|
||||
compiled THIRD code), note that you should in theory be able to stick the
|
||||
compiled THIRD code into the C source.</p>
|
||||
<p>Software Construction Company gets credit for rekindling my interest in FORTH
|
||||
and thus indirectly inspiring me to write this program.</p>
|
||||
<h2 id="copyright-and-cc-by-sa-4.0-license">Copyright and CC BY-SA 4.0 License:</h2>
|
||||
<p>This file is Copyright (c) 2023 by Landon Curt Noll. All Rights Reserved.
|
||||
You are free to share and adapt this file under the terms of this license:</p>
|
||||
<pre><code>Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)</code></pre>
|
||||
<p>For more information, see:
|
||||
https://creativecommons.org/licenses/by-sa/4.0/</p>
|
||||
<p>For more information, see: https://creativecommons.org/licenses/by-sa/4.0/</p>
|
||||
|
||||
<!-- END: this line ends content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
|
||||
<!-- START: this line starts content for HTML phase 22 by: bin/output-index-inventory.sh via bin/md2html.sh -->
|
||||
|
||||
<!-- START: this line starts content generated by: bin/output-index-inventory.sh -->
|
||||
|
||||
<h1 id="inventory-for-1992buzzard.2"><a name="inventory"></a>Inventory
|
||||
for 1992/buzzard.2</h1>
|
||||
<h1 id="inventory-for-1992buzzard.2"><a name="inventory"></a>Inventory for 1992/buzzard.2</h1>
|
||||
<p><a href="#top">Jump to top</a></p>
|
||||
<h2 id="primary-files">Primary files</h2>
|
||||
<ul>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1992/buzzard.2/buzzard.2.c">buzzard.2.c</a>
|
||||
- entry source</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1992/buzzard.2/Makefile">Makefile</a>
|
||||
- entry Makefile</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1992/buzzard.2/buzzard.2.alt.c">buzzard.2.alt.c</a>
|
||||
- alternative source</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1992/buzzard.2/buzzard.2.orig.c">buzzard.2.orig.c</a>
|
||||
- original source</li>
|
||||
<li><a href="buzzard.2.README.html">buzzard.2.README.html</a> - author
|
||||
description of files</li>
|
||||
<li><a href="buzzard.2.design.html">buzzard.2.design.html</a> - about
|
||||
the FORTH language</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1992/buzzard.2/try.alt.sh">try.alt.sh</a>
|
||||
- how to run alternative code</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1992/buzzard.2/try.sh">try.sh</a>
|
||||
- how to run</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1992/buzzard.2/demo1.1st">demo1.1st</a>
|
||||
- FORTH source</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1992/buzzard.2/demo1.th">demo1.th</a>
|
||||
- FORTH source</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1992/buzzard.2/demo2.th">demo2.th</a>
|
||||
- FORTH source</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1992/buzzard.2/demo3.th">demo3.th</a>
|
||||
- FORTH source</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1992/buzzard.2/demo4.th">demo4.th</a>
|
||||
- FORTH source</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1992/buzzard.2/demo5.th">demo5.th</a>
|
||||
- FORTH source</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1992/buzzard.2/demo6.th">demo6.th</a>
|
||||
- FORTH source</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1992/buzzard.2/help.th">help.th</a>
|
||||
- FORTH source</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1992/buzzard.2/third">third</a>
|
||||
- the third source</li>
|
||||
<li><a href="1992_buzzard.2.tar.bz2">1992_buzzard.2.tar.bz2</a> -
|
||||
download entry source</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1992/buzzard.2/buzzard.2.c">buzzard.2.c</a> - entry source</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1992/buzzard.2/Makefile">Makefile</a> - entry Makefile</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1992/buzzard.2/buzzard.2.alt.c">buzzard.2.alt.c</a> - alternative source</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1992/buzzard.2/buzzard.2.orig.c">buzzard.2.orig.c</a> - original source</li>
|
||||
<li><a href="buzzard.2.README.html">buzzard.2.README.html</a> - author description of files</li>
|
||||
<li><a href="buzzard.2.design.html">buzzard.2.design.html</a> - about the FORTH language</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1992/buzzard.2/try.alt.sh">try.alt.sh</a> - how to run alternative code</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1992/buzzard.2/try.sh">try.sh</a> - how to run</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1992/buzzard.2/demo1.1st">demo1.1st</a> - FORTH source</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1992/buzzard.2/demo1.th">demo1.th</a> - FORTH source</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1992/buzzard.2/demo2.th">demo2.th</a> - FORTH source</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1992/buzzard.2/demo3.th">demo3.th</a> - FORTH source</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1992/buzzard.2/demo4.th">demo4.th</a> - FORTH source</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1992/buzzard.2/demo5.th">demo5.th</a> - FORTH source</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1992/buzzard.2/demo6.th">demo6.th</a> - FORTH source</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1992/buzzard.2/help.th">help.th</a> - FORTH source</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1992/buzzard.2/third">third</a> - the third source</li>
|
||||
<li><a href="1992_buzzard.2.tar.bz2">1992_buzzard.2.tar.bz2</a> - download entry source</li>
|
||||
</ul>
|
||||
<h2 id="secondary-files">Secondary files</h2>
|
||||
<ul>
|
||||
<li><a href="index.html">index.html</a> - entry home page</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1992/buzzard.2/.entry.json">.entry.json</a>
|
||||
- description of entry in JSON</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1992/buzzard.2/.gitignore">.gitignore</a>
|
||||
- list of files that should not be committed under git</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1992/buzzard.2/.entry.json">.entry.json</a> - description of entry in JSON</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1992/buzzard.2/.gitignore">.gitignore</a> - list of files that should not be committed under git</li>
|
||||
<li><a href=".path">.path</a> - directory path from top directory</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1992/buzzard.2/README.md">README.md</a>
|
||||
- markdown source for index.html</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1992/buzzard.2/buzzard.2.README.md">buzzard.2.README.md</a>
|
||||
- markdown source for buzzard.2.README.html</li>
|
||||
<li><a
|
||||
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1992/buzzard.2/buzzard.2.design.md">buzzard.2.design.md</a>
|
||||
- markdown source for buzzard.2.design.html</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1992/buzzard.2/README.md">README.md</a> - markdown source for index.html</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1992/buzzard.2/buzzard.2.README.md">buzzard.2.README.md</a> - markdown source for buzzard.2.README.html</li>
|
||||
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1992/buzzard.2/buzzard.2.design.md">buzzard.2.design.md</a> - markdown source for buzzard.2.design.html</li>
|
||||
</ul>
|
||||
|
||||
<!-- END: next line ends content generated by: bin/output-index-inventory.sh -->
|
||||
|
||||
Reference in new issue
Block a user