ANALYTICALC SHEET USAGE The AnalytiCalc spreadsheet provides a large, but finite, number of rows and columns to compute with. In the 8088 version, there is a "prime" computing area of 60 columns and 300 rows, or 18,000 cells, which may be filled at any one time. Because some applications need different shaped storage, AnalytiCalc has been extended to allow this storage to be used as if it were shaped in almost any way desired. The method used is that when you specify a column greater than 60, a second strip of the sheet is used as an alias for columns 61-120, a third strip for 121-180, and so on. The depth of this strip is set in the S command; initially the strips are 50 rows down each. Similarly, when you use rows 301-600, a second vertical strip of the sheet (initially 6 columns across) is used as if it were the first 6 (initially) columns in rows 301-600. Other strips further right are used further down. This can be shown pictorially like this: C o l u m n N u m b e r 0 00 11 1 0 66 22 8 1 01 01 0 AAAAAAAAAAAAAAAABBBBBBBBBBBBBBCCCCCCCCCCCCCCC BBBBBBBBBBBBBBBB CCCCCCCCCCCCCCCC Note that the cells labelled AAAAAAAAAAAa are in the "prime" area. The cells labelled BBBBBBBBBBB are in the extended area and appear to all uses as though they were really part of a wide but shallow sheet. Likewise the cells labelled CCCCCCCCCCC. They also are shown in their aliased locations in the "prime area" however, to show how the organization is done. In the S command you will be asked if you want to reset the extended area mapping. If you reply Y, you can enter the number of ROWS to add when moving over to an extended COLUMN group as shown in the picture, or the number of COLUMNS to add when going to an extended ROW group as shown in the picture below: Row no. 001 ABC ABC ABC 300 ABC 301 B B B 600 B 601 C C C 900 C You will note that the extended region here goes to make the spreadsheet appear long but narrow. The redefinitions allow you to specify how "thick" the A, B, or C regions are here; the length depends on how far out you need to go. Thus, if you need a 3000 row sheet, you might allow only the default 6 columns width. If you don't intend to use EVERY cell in your range you can of course use still longer or wider sheets. This redefinition is done recursively so that you can use ANY region in this way, not just the top or the left edges. But the cell redefinition still maps storage in this way to the "prime area". The insert or delete row or column commands only work in the "prime area" since they can cause considerable confusion in an extended sheet. The copy commands are not so constrained however, and can be used as desired. This sort of area redefinition is different from other spreadsheet programs only in that aliases are provided to storage; overall storage use works similarly in many packages. Consider 1-2-3 and Symphony (both tm) for a moment. These programs allocate a rectangular array of 4 bytes per active cell, plus a scratch area containing all cell contents for cells that are non empty. Thus, if one has 200K of memory above the (hefty) requirements for those programs, one can have 50K of totally empty cells. If cells contain one value (6 bytes) each, the total available storage allows only 20K cells with only values in them. If cells have 10 character formulas in each (plus a value), only 10K cells can be held in this much memory. This storage can be organized in 2000 rows by 5 columns, 250 columns by 40 rows, 100 columns by 100 rows, or any other way in which (rows used) * (columns used) is less than 10,000. While you can display a screen showing cell IA2000, however, you CANNOT use it. In fact, the area you can use is bounded by a hyperbola whose exact position depends on your memory size and the needs of the product for memory for itself (typically 256K or 320K for these, at a minimum). (It is said that this fundamental limit will remain even with the new "AboveBoard", which will however allow the normal DOS memory to be entirely used for the 4 byte per cell array.) With AnalytiCalc, you also have a fixed maximum storage available, but it can be used anywhere in your address space and can be remapped to a physical sheet any way you like. When an extended address is found, its column number and row number are remapped in turn until both fit within the prime area. This makes the remapping somewhat hard to follow, but at least a cell that is addressed can conceivably ALWAYS be used. Where the need is for a wide but shallow sheet, or a high but narrow one, the remapping provides the same flexibility of shape as in other products, but you can control its action to achieve the results YOU need. You will not suddenly be told you are out of memory, but can plan your usage. Dimensions like 18000 by 1 or 1 by 18000 can be readily handled in extreme cases. The only caution is that the mapping MUST NOT be altered if any extended address cells are in use. Save the sheet, alter the map, and reload it to vary the mapping. NOTE: ONLY set up the map while the sheet has nothing in it in an extended area. Save your sheet, alter the map, and then reload if you have an active extended area (i.e., any cell with row number greater than 300 or column number greater than 60.) You have great flexibility here, but can still only access the storage available. The total amount of such storage is quite large, since all 18,000 cells can have up to 109 characters in them at once, plus an 8 byte value and multiple equations per cell. This is far more storage than 1-2-3 (tm) or Symphony (tm) can handle on even a 640K PC or AT, and is comparable to the most they can permit even with extended memory boards. All this is yours in 256K (320K if you have the larger version), permitting you the use of the DOS extensions and environment packages of your choice. HOW IT'S DONE AnalytiCalc maintains its virtual memory in two temporary files that are opened on your default disk, with two in-memory buffers for each. Cells are given addresses within these files based on their number within the prime calculation area, and the memory buffers are used as paged memory to hold buffers from the disk files. These pages are replaced on a Least Recently Used basis, the oldest being replaced first, as needed. The in-memory buffers can hold 400 values each for the value file, and 1024 12-byte formula pieces per buffer for the formula file. To control these files, several bitmaps are kept in memory (1 to 3 bits per cell) so that cells that have never been used need not be looked up in file buffers. Because the cell's address gives its' location in a file, only one probe is generally needed to find a cell's formula. Secondary probes within a buffer may be needed, but by detecting never-initialized cells in a buffer, probes for formulas are kept short even where they are absent. (If the code for the contents of the current cell, which is the default contents of a newly-initialized cell, is to be stored, the program does not actually store that formula. Rather, it skips storing the formula to make room for other formulae.) If a spreadsheet needs less than the amount of in memory storage, the scratch files are never opened and AnalytiCalc works as an in-memory-only spreadsheet with fairly modest storage capacity, though with powerful functions. The user specifies at runtime how large the data files must be based on his knowledge of his intended actions and on recommendations by AnalytiCalc which are made after he tells how many rows and columns he intends to use. Once these files are set up, AnalytiCalc uses them uniformly to provide maximum capacity computation in minimal memory.