A-DU
- This is still a work in progress. It may be changed in the future.
A-DU is a thematic esolang currently under development by User:Salpynx based on Linear A balance ledger tablets. It is sort of like Grocery List, with more complex syntax, and fewer operations. A-DU (๐๐ฌ) means something like Assessment in Linear A. Most of the meanings and structure and inspiration for the Linear A aspect of this language comes from the work and resources provided online by John G. Younger. A huge thank you to him, and apologies if he ever reads this! Other sources are listed in the #Bibliography.
Overview
A-DU is a cell based language. Cells store a number and a fractional component of one kind of commodity.
Cell selection is provided by the rules governing item storage which forces the cell pointer to shift. A Cell can only store one commodity type, and there are rules that decide where to store a new commodity based on its class.
Output is available via two KEYWORDs, KU-RO
for character output, and PO-TO-KU-RO
for numeric (number + fraction) output.
INPUT is provided by KI-RO
. Input can either be character or numeric.
Code is organised in blocks grouped by a NAME in the statement column. There are two levels of NAME: TOPONYMs (places) and ANTHROPONYMs (people). This allows for one level of nesting, i.e. people can be grouped by a place. Since the code is in the form of a a balance ledger it is important that totals add up. If a total at the end of a code block does not match the value in the current pointed to cell for a commodity, or grand-total for a NAME, the code will loop back over that block until the condition is met.
Code Structure
Code is written on 'tablets' that have at least one side ('obverse'), and optionally a 'reverse'.
Heading line, obverse:
A-DU <1-2 word title in Linear-A syllabary>
The obverse represents the main program and commodities collected, or additions.
Heading line, reverse:
<title> โข U-MI-NA-SI โข
The reverse will have NAME blocks that correspond to NAMEs on the obverse and represent commodites owed, or subtractions.
Each side has 4 columns
- statement (a NAME, or KEYWORD)
- logogram (representing a commodity to store)
- number
- fraction (optional)
KEYWORDS in statement column 1
KU-RO
OUTPUT totalPO-TO-KU-RO
NUM-OUTPUT grand-totalKI-RO
INPUT owed
Commodities are listed in blocks belonging to a NAME.
Commodities are stored in storage cells. Amounts are represented by whole numbers, and (optional) fractions. Each storage cell can store only one kind of commodity.
There are multiple classes of commodity. Three main classes are: Livestock, Agricultural, Liquids. Additionally there are Humans (professions / workers), and man-made commodities (like cloth, armour, and weapons). There are also modifiers which extend the number of commodities that can be used for storage.
Rules for allocating storage cells
Livestock are stored to the left of Agricultural produce, which are stored to the left of Liquids.
BOS 1 GRA 2
Will store one ox (BOS) in cell 0, storing 2 measures of grain (GRA) moves the cell one to the right. From here, BOS will move left, a Liquid will move right, another Livestock will move 2 right, another Agricultural will move 3 right. If a commodity is already stored, the pointer moves to the nearest cell already containing that commodity.
- Livestock
- BOS - Oxen
- OVIS - Sheep
- CAP - Goats
- Agricultural
- GRA - Grain
- FIC - Figs
- OLIV - Olives
- Liquids
- VIN - Wine
- OLE - Olive Oil
- Other
- VIR - People / professions
- TELA - Cloth
Examples
Cat
A-DU KA-TU SA-RAโ VIR 1 KI-RO KU-RO 1
Original script (requires Linear A unicode font)
๐๐ฌ ๐พ๐น ๐๐ฝ ๐ ๐ ๐๐ธ ๐๐ ใ ๐
Truth-machine
A-DU TWO-TU SA-RAโ CAP 1 KI-RO KA-PA PO-TO-KU-RO
Hello World
A-DU HA-RO WO-RU-DU SA-RAโ BOS 72 KU-RO 72 BOS 29 KU-RO 101 BOS 7 KU-RO 108 KU-RO 108 GRA 111 KU-RO 111 VIN 44 KU-RO 44 CAP 32 KU-RO 32 VIN 43 KU-RO 87 KU-RO GRA 111 GRA 3 KU-RO 114 KU-RO BOS 108 VIN 13 KU-RO 100 CAP 1 KU-RO 33
Variable length loop
This is a two sided tablet, the reverse contains decrements (owed by KA-PA). The program prompts for numeric input, then outputs a countdown from that number to zero. SA-RAโ and KA-PA are the two NAME labels.
A-DU WA-RU-PU SA-RAโ VIR 1 KI-RO KA-PA WA-RU-PU โข U-MI-NA-SI โข KA-PA VIR 1 PO-TO-KU-RO
External resources
- Partial (at least) interpreter, in Python. (Should run the examples on this page)
- http://people.ku.edu/~jyounger/LinearA/
- http://www.people.ku.edu/~jyounger/LinearA/ABgrids.html
- Font for viewing Linear A: Aegean.ttf from http://users.teilar.gr/~g1951d/
- https://unicode.org/charts/PDF/U10600.pdf
- https://en.wikipedia.org/wiki/Aegean_numerals