~cabrendan/starling

Spreadsheet application written in uxntal
shrinking the header and node sizes, shortening test output. WIP insert method
added license. WIP linked list and tests
small optimization for RunTest

refs

main
browse  log 

clone

read-only
https://git.sr.ht/~cabrendan/starling
read/write
git@git.sr.ht:~cabrendan/starling

You can also use your local clone with git send-email.

#Starling

Starling is a spreadsheet application, written in Uxntal.

#Status

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.

#Build

You must have the Uxn assembler and emulator.

uxnasm starling.tal starling.rom && uxncli starling.rom

#User Interface

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.

#Cell Types

#Data Cells

What you see is what you get Numbers or letters

#Function Cells

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

#Regions

Rectangular regions can be associated with a function, which has an effect identical to the function being copied into each cell within the region.

#Function Specification

Functions are specified in Reverse Polish Notation (RPN).

#Cell References

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.

#Region 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

#Operators

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

#Save File Format

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

#Function definition section

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 *