[net.micro] RFI on Visicalc data structures

Autrey-Hunley@Sri-Kl@sri-unix (08/31/82)

From: Gene Autrey-Hunley <Autrey-Hunley@Sri-Kl>
Home address: 1123 E. 53 St., Chicago, IL 60615
Telephone: (312)565-2222 work, (312)752-3432 home
Via:  Sri-Kl; 29 Aug 82 16:45-EDT
Via:  Brl; 30 Aug 82 11:49-EDT
Via:  Brl-Bmd; 30 Aug 82 12:26-EDT
Via:  Brl; 30 Aug 82 22:20-PDT

I'm looking for information about the internal data structures
that Visicalc uses to represent its spreadsheet in memory.  Either
direct information or references to published information will be
useful.

I am particularly interested in how Visicalc manages memory for the
spreadsheet.  For example, from its user manual I know that it keeps
the spreadsheet rectangular, with the rectangle size determined by the
largest row and column indices ever actually been used.  An
'empty' item in the active rectangle takes 2 bytes.  For Apple II, Visicalc
version 1.35, eleven decimal digits of accuracy can be stored if
needed.  Computations are apparently done using (packed) decimal
arithmetic and done with a guard digit so that the result can be
rounded before being stored into an item.  My experiments show that
exponents range from E-66 to E+61.  (Strange asymmetry.)  Column
widths can vary from 3 to 37 characters.  (37 may be an artifact of
the 40 column display on the Apple II family.)  A spreadsheet item can
contain a value, which is a number, a string, or a repeating string.
An item also has a calculation formula that defines how its value (or
string, in the case of graph format) is determined.  Optionally, an
item may have display format associated with it.

If you can provide any insight about the internals of the Visicalc
spreadsheet representation, thanks in advance.  I find it a fascinating
piece of software.

--Gene
-------