A-DU

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 total
* PO-TO-KU-RO NUM-OUTPUT grand-total 
* KI-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
===Bibliography===
Category:Languages Category:2018 Category:Thematic Category:Cell-based Category:Implemented