Fix format of table in 1992/buzzard.1

This took some careful editing but it now looks nice on an iPhone 14 Pro
Max and it also looks nice on a laptop (16"). In Safari responsive mode
at 500 x 100 it also looks okay which I think is pretty good. For some
macros the function line had to be split up and it might look like the
formatting is wrong in a few cases but this took trial and error to get
it to align right (or very close if not completely).
This commit is contained in:
Cody Boone Ferguson committed 2024-06-23 13:57:49 -07:00
1 parent 6537990aa5
commit b26a501e75
2 files changed
+124 -48

No files matched your search

+62 -24
View File
@@ -33,7 +33,7 @@ Notice how many statements it takes to do anything useful?
## Author's remarks:
What you shouldn't think about `buzzard.1`:
### What you shouldn't think about `buzzard.1`:
`buzzard.1` doesn't just do a mass of `#define`s as its obfuscation.
@@ -43,7 +43,7 @@ What you shouldn't think about `buzzard.1`:
I didn't just submit the post-C-preprocessed output as an entry.
#### Cute trick warning
### Cute trick warning
`buzzard.1` contains only a numeric `printf(3)`, yet sometimes it prints out
short strings.
@@ -126,36 +126,74 @@ place to site some references on the AE, but I don't have any.
[Don't read this unless you're stumped!]
```
MACRO FUNCTION MNEMONIC
MACRO FUNCTION MNEMONIC
V begin variable declarations Variable
C begin program Code
V begin variable
declarations Variable
Q(b,a) let b = a eQuals
A(c,a,b) let c = a + b Add
S(c,a,b) let c = a - b Subtract
D(c,a,b) let c = a / b, where b is a *constant* Divide
U(c,a,b) let c = a / b, where b is anything Unknown
M(c,a,b) let c = a * b Multiply
C begin program Code
O(c,a,b) let c = a boolean-or b (a,b are 0 or 1) Or
B(b, a) let b = boolean value of a Boolean
P(b, a) let b = 1 if a>0, else 0. Positive
Q(b,a) let b = a eQuals
A(c,a,b) let c = a + b Add
S(c,a,b) let c = a - b Subtract
l emit next sequential label Label
J(x) goto label #x Jump
D(c,a,b) let c = a / b,
where b is a Divide
constant
Z(a,d) if a is 0 goto d (a is 0 or 1) Zero
E(a,d) if a is 1 goto d (a is 0 or 1) Else
U(c,a,b) let c = a / b,
where b is Unknown
anything
H halt Haly
M(c,a,b) let c = a * b Multiply
K(x) let x = number of cmd line arguments Kount
G(x,y) let x = the value if the yth argument Get argument
O(c,a,b) let c = a Or
boolean-or
b (a,b are
0 or 1)
T end of code; begin output section Terminate
X(y) print out hexadecimal value of y heXadecimal
T end of output section and program Terminate
B(b, a) let Boolean
b = boolean
value of a
P(b, a) let b = 1 if
a>0, else 0. Positive
l emit next
sequential Label
label
J(x) goto label #x Jump
Z(a,d) if a is 0
goto d (a is Zero
0 or 1)
E(a,d) if a is 1
goto d Else
(a is 0 or 1)
H halt Halt
K(x) let x = number
of cmdline Kount
arguments
G(x,y) let x = the
value
of the yth Get arg
argument
T end of code;
begin output Terminate
section
X(y) print hex
value of y heX
T end of output Terminate
section
and program
```
You can figure out the other macros yourself. In the sample program, I've
+62 -24
View File
@@ -413,11 +413,11 @@ Location: <a href="../../location.html#US">US</a> - <em>United States of America
cat babble.cppcb</code></pre>
<p>Notice how many statements it takes to do anything useful?</p>
<h2 id="authors-remarks">Author’s remarks:</h2>
<p>What you shouldn’t think about <code>buzzard.1</code>:</p>
<h3 id="what-you-shouldnt-think-about-buzzard.1">What you shouldn’t think about <code>buzzard.1</code>:</h3>
<p><code>buzzard.1</code> doesn’t just do a mass of <code>#define</code>s as its obfuscation.</p>
<h3 id="what-you-should-be-glad-about">What you should be glad about:</h3>
<p>I didn’t just submit the post-C-preprocessed output as an entry.</p>
<h4 id="cute-trick-warning">Cute trick warning</h4>
<h3 id="cute-trick-warning">Cute trick warning</h3>
<p><code>buzzard.1</code> contains only a numeric <code>printf(3)</code>, yet sometimes it prints out
short strings.</p>
<h3 id="what-it-does">What it does</h3>
@@ -466,36 +466,74 @@ simulate any existing machine–although not quickly). This would be a good
place to site some references on the AE, but I don’t have any.</p>
<h3 id="definition-of-the-input-language-to-buzzard.1-or-what-exactly-do-all-the-macros-do">Definition of the input language to buzzard.1 (OR What Exactly Do All The Macros Do?)</h3>
<p>[Don’t read this unless you’re stumped!]</p>
<pre><code> MACRO FUNCTION MNEMONIC
<pre><code> MACRO FUNCTION MNEMONIC
V begin variable declarations Variable
C begin program Code
V begin variable
declarations Variable
Q(b,a) let b = a eQuals
A(c,a,b) let c = a + b Add
S(c,a,b) let c = a - b Subtract
D(c,a,b) let c = a / b, where b is a *constant* Divide
U(c,a,b) let c = a / b, where b is anything Unknown
M(c,a,b) let c = a * b Multiply
C begin program Code
O(c,a,b) let c = a boolean-or b (a,b are 0 or 1) Or
B(b, a) let b = boolean value of a Boolean
P(b, a) let b = 1 if a&gt;0, else 0. Positive
Q(b,a) let b = a eQuals
A(c,a,b) let c = a + b Add
S(c,a,b) let c = a - b Subtract
l emit next sequential label Label
J(x) goto label #x Jump
D(c,a,b) let c = a / b,
where b is a Divide
constant
Z(a,d) if a is 0 goto d (a is 0 or 1) Zero
E(a,d) if a is 1 goto d (a is 0 or 1) Else
U(c,a,b) let c = a / b,
where b is Unknown
anything
H halt Haly
M(c,a,b) let c = a * b Multiply
K(x) let x = number of cmd line arguments Kount
G(x,y) let x = the value if the yth argument Get argument
O(c,a,b) let c = a Or
boolean-or
b (a,b are
0 or 1)
T end of code; begin output section Terminate
X(y) print out hexadecimal value of y heXadecimal
T end of output section and program Terminate</code></pre>
B(b, a) let Boolean
b = boolean
value of a
P(b, a) let b = 1 if
a&gt;0, else 0. Positive
l emit next
sequential Label
label
J(x) goto label #x Jump
Z(a,d) if a is 0
goto d (a is Zero
0 or 1)
E(a,d) if a is 1
goto d Else
(a is 0 or 1)
H halt Halt
K(x) let x = number
of cmdline Kount
arguments
G(x,y) let x = the
value
of the yth Get arg
argument
T end of code;
begin output Terminate
section
X(y) print hex
value of y heX
T end of output Terminate
section
and program</code></pre>
<p>You can figure out the other macros yourself. In the sample program, I’ve
actually implemented subroutines by saving a return address in a variable and
then jumping to a routine– specifically, a routine that converts a number into