This morning, whilst lying in bed and cogitating, a solution to a number of problems came to me. It’s not a new solution; it is over thirty years old. I developed it for the original Siboot; it was the first version of the technology that I now call ‘Encounters’. Here’s a direct copy of one of these from the original Siboot:
Since you're in the neighborhood, you decide to stop by Feslym's house to pay your respects to his widow; it is a gesture of respect for the Shepherdship and a way of showing your concern for her welfare. Kira is a tightly-knit community and the tradition of looking after widows and widowers dates back to the earliest days of the colony. You step onto the porch and open the outer door; to your surprise, % opens the inner door, heading outward, at exactly the same moment. The two of you stare at each other for a second; one must yield the way to the other. What do you do? \
\
Wait for and go along with whatever action % takes.
WI+99-BF5P% smiles and steps aside for you.
D4+dF1P%barges past you without saying a word.
\
Demand that % step aside.
IT+50-BD12-dA4-aF4P% steps aside without argument.
50-BA4-aF1P% refuses to acknowledge your demand and brushes past you.
A8-aD4+dF2P% tells you to go to hell and pushes you aside.
\
Step aside, hold the door open, and say, "After you, %!”
DI+99-BA8+aF5P% smiles sweetly and thanks you.
F8P% sneers triumphantly and barges past you.
\
Barge past %, pushing $ aside.
D2/E+BD16-dF4P% meekly steps aside.
50-BA4-aF2P% glares at you and stands ^ ground.
D8+dA8-aF2P% shoves right back and stares you down.
\
This is an early version of Tinkertoy Text. The % sign is replaced with the name of the other character. The character strings prefixing the normal text represent calculations. They’re easiest to understand as keypresses on a virtual RPN calculator. Each alphabetic character represents a variable; its capital means “push the value of this variable onto the top of the stack”. The lowercase means “store the contents of the top of the stack into the variable”. The four arithmetic operators execute those operators on the top two places in the stack, collapsing the stack by one and storing the result in the top of the stack. Virtual RPN calculators are quite simple to implement in code, and if you’ve ever used one, the strings are easy to read. (Although I found what I think is an error in one of the scripts above).
So now my task is to define the codes that the various characters represent. First, there are only three operators: negation, blend, and BSum. Next, the alphabetic characters will follow the rule that upper case represents a push and lower case represents a pop. I’ll also need a delimiter to mark the end of the script. So all I have to do is assign them:
- negation
+ BSum
@ Blend
! script terminator
A, a. Bad_Good[]
B, b. False_Honest[]
C, c. Timid_Dominant[]
D, d. AccordBad_Good[]
E, e. AccordFalse_Honest[]
F, f. AccordTimid_Dominant[]
G, g. Vain[]
H, h. pBad_Good[][Arthur]
I, i. pFalse_Honest[][Arthur]
J, j. pTimid_Dominant[][Arthur]
K, k. Soldiers[]
L, l. Leadership[]