Starling is a spreadsheet application, written in Uxntal.
Starling is a work in progress, and only consists of some math code right now. This README is serving as design documentation, in the meantime.
You must have the Uxn assembler and emulator.
uxnasm starling.tal starling.rom && uxncli starling.rom
As with any spreadsheet application, the main view is of the sheet itself: a grid of rows and columns with alphabetical labels for columns and numeric labels for rows. There is always a rectangular region selected, even if it's just a single cell. The selected region has a border drawn around it to indicate that it is selected. Changing the rectangular selection uses the same controls as in orca
Entering a number or text will populate the selected region with data. If a region is selected, there will be a cursor within it to indicate the current cell, and hitting TAB will cycle through them. If the first character is a '=', the subsequent text will be treated as a formula. Formulas entered in regions will be assigned to the entire region at once.
Values that come from formulas are displayed in a different color than values that are entered manually. This can make it easier to avoid accidental corruption of calculated values.
What you see is what you get Numbers or letters
Displays the result of the function stored at that cell Cells always read their data from left and above And multi-valued results can appear in the function's own cell, or to the right and down from it
Rectangular regions can be associated with a function, which has an effect identical to the function being copied into each cell within the region.
Functions are specified in Reverse Polish Notation (RPN).
Reference cell data with LXUY arguments, which indicate how far left and up to go to get to the data. E.g.
L1 U2 L2U1
are 3 valid cell references.
You can also use ':' to refer to an entire region. Region references can only be used by operators that are designed for them, such as SUM and PROD.
L10:L1 SUM U8:U1 PROD
Basic arithmetic operators are available: +,-,*,/
Region operators are also available: SUM, PROD, MMULT
When defining functions, be mindful of how much stack space you use in your definition. The stack is not infinite. The contents of the stack at the end of execution of the function are output as data into the cell location and going right (default, or down, if specified) from bottom to top of the stack. E.g.
= 1 2 * 1 2 +
Will output values (2, 3) in its own cell and one to the right
L1 L1U1 D
Will output its value in its own cell and one downward
The save format for starling is meant to be human-readable, and is therefore based on the tab-separated values (TSV) format. The save file consists of two parts: an exportable data-only section, and a section with function definitions and formatting options
The function definition section consists of a sequence of location-definition pairs, separated by tab symbols. Like this: REF,functionstring[TAB]REF:REF,functionstring E.g.
A20,U18:U1 SUM B2:B19,L1 1.2 *