TASCALC - 128K Spreadsheet
--------------------------
TASCALC is the latest release from Tasman Software, only suitable for 128K Spectrums. There are two versions, one for the original Spectrum+128 and +2, and one on disk for the Spectrum+3 (the latter is the reviewed program, but the only difference between the two is that the +3 version can use the built-in disk for saving/loading, rather than microdrives. Both version can also save/load to tape.
A spreadsheet is, simply, a very sophisticated calculator. The TASCALC version consists of 52 columns (A...Z, AA...AZ) of 157 rows of 'cells'. Each cell can hold a number, a label, or a formula. Formulae can reference the contents of other cells, so that altering one cell can affect the whole spreadsheet. Numbers are entered just be typing them in, with the spreadsheet cursor on the required cell. Labels (or simply text messages) are entered by pressing the " key first. Formulae are entered by first pressing the ENTER key.
The design of the spreadsheet is up to the user - TASCALC is very flexible in use. The width of each cell can be altered, which is useful for fitting more columns on screen at once. The number of rows on screen at once is set to 13, unless the prompt menu at the top of the screen is switched off (giving 4 more rows visible).
It is possible to move the cursor around the spreadsheet using the cursor keys, or by typing G to goto a particular cell - specified by typing its 'address' (e.g. AB123). If the cell moved to is not on screen, a redraw occurs. Labels set up in column A and row 1 can also be used to reference a cell (e.g. COSTS.FEB would reference call C3 if C1=COSTS and A3=FEB).
As the spreadsheet is built up, formulae will be entered which calculate new details from information entered in other cells - in the sheet I set up (see screen), the page price of each issue of Crash is calculated by dividing the issue price by the number of pages (G11 <- B11*100/C11). The value of each formula is not, however, computed by TASCALC as it is entered. An eXecute command (type CX) must be entered whenever formulae need to be evaluated (TASCALC does not auto-calculate, as do spreadsheets on 'real' computers - this would be too slow). The eXecute can be limited to just the areas of the sheet which need updating, which helps to speed up the process.
It would be very laborious having to enter a separate formula for each cell in column G. In TASCALC this is not necessary - there is an ECHO command, which I used to echo the G11 formula into G12...G50. The formulae are altered automatically as the echo occurs (so that G50 <- B50*100/C50).
--------------------------
As the spreadsheet is developed, formulae are continually replaced and updated. Old formulae occupy memory, which will eventually be filled up. An Optimise command (type CO) causes TASCALC to sort through the spreadsheet, eliminating unused formulae. This is a very slow process (4.5 minutes for my spreadsheet, having 143 formulae). Turning off the display of the working cell does speed this up (to 53 seconds for the same sheet).
For major changes to the spreadsheet, there is a Copy command (type CC). This allows whole blocks of the spreadsheet to be moved around the sheet. Formulae which reference cells which are moved are automatically altered by TASCALC during the copy. WARNING: There is a major problem with this command, when inserting rows into the spreadsheet. The copy proceeds row by row, top to bottom. There is no error check for overwriting, so if, for example, cells A10:A20 are moved to A11:A21, then the result will be ten new copies of A10. The old values of A11 to A20 will be lost! Once you know about it, however, you can easily avoid the problem by copying the complete block to an unused part of the spreadsheet, then copying it back into the new position (for the example, copy A10:A20 to AA10:AA20, then back to A11:A21).
After such a process, the temporary copy area should be erased - this can be done (press CR). However, if a full row or column is to be inserted (rather than just an extra cell in one column as in the above example), then TASCALC has commands to allow the current row/column to be deleted, shuffling all laters rows/columns up/left; or an additional row/column to be inserted (press CGDR/C or CGIR/C). For both an insert or a delete, all formulae are altered to reference the newly shifted cells.
The main use of spreadsheets is for quite simple calculations, referencing a large number of variables, which are set in the columns of the spreadsheet as tables. TASCALC also has a complete set of scientific and miscellaneous functions. Trigonometric functions (SIN, ATN, etc) are provided, as well as SQR, INT, PI and the other Spectrum Basic functions. Also included, though, are spreadsheet specific functions - for example AVE(range) which returns the average value of the cells in the range specified. There is even an INPUT function, ASK("text"), which prompts for a value using the text message.
Whenever the spreadsheet is re-calculated, it is done cell by cell in strict order (normally A1...A157, B1...B157 ... AZ1...AZ157). If a formula references a yet-to-be-calculated cell, then problems will occur as the value calculated will be wrong. This is a problem with all complex spreadsheets, and can only be solved by repeated recalculation until the values are unchanging.
--------------------------
It is possible to create a spreadsheet in which the values will always changed - this can be useful! I set up a fibonacci number sequence; each number displayed after the next recalculation (A1 <- B1; B1 <- C1; C1 <- A1+B1).
The spreadsheet can be saved to disk or tape, by calling up a files menu (type CF). The size saved depends how 'full' the sheet is - doing an Optimise before saving can result in quite a reduction in size. Any part of the spreadsheet can also be printed; TASCALC supports standard printers through almost all common Spectrum printer interfaces, parallel or serial.
A powerful facility of TASCALC is its ability to produce graphs. The range of the spreadsheet to be plotted is given, and a graph (either line type or bar graph - see screenshot) appears almost instantly. I had problems with TASCALC only plotting the integer part of the cell values - solved by scaling the values into another column of the spreadsheet. The graph displayed cannot be printed, but can be saved to disk or tape for printing later.
The TASCALC manual is a reference work, aimed at users who already know how to use a spreadsheet. However, for those wishing to learn, experimentation is simple and rewarding. The manual is detailed, but has no index section.
WARNING: Apart from the problems I had with the graph function only plotting integer values, I found one other problem (which is rather obscure so not worrying). If an ASK("text") function is used, and a cell reference entered when the prompt appears (e.g. A1), the spreadsheet calculation routines seem to crash, filling many cells with the value 0.00000000! If this occurs, the only way out of it is a Zap, to clear the complete spreadsheet. The only time this might cause trouble is if a letter were mistyped before the number was entered, in response to the prompt.
TASCALC costs #17.95 on tape for 128K Spectrums, or #19.95 on disk for the +3. Write to Tasman Software at Springfield House, Hyde Terrace, Leeds LS2 9LN. Anyone needing the power of a spreadsheet should be very happy with TASCALC, provided they are not in too much of a hurry for the Spectrum to calculate the results.
------------------------------------
As mentioned last month, Kobrahsoft have brought out another useful program for +3 owners. This program fills the gaps of DICE, by allowing commercially protected disk programs (as well as normal +3 disks) to be backed up to another disk, or to tape. Protection systems for disks vary, but are likely to get more sophisticated in time. It is likely, therefore, that programs like DB1 will need regular updating to keep abreast of the manufacturers skills.
DB1 is an automatic copier program, but is not in the same league of friendliness as DICE. When the program is loaded, the screen shows a two line menu, and no help at all. The program has a number of options, one (not on the menu!) allows a new disk to be logged in (press A - I wonder what it stands for?). The filenames on the disk are displayed, and can be selected by using the cursor keys and pressing S when the required filenames are pointed to.
Selected files can be transferred (by pressing T) to a second disk, deleted (D), renamed (R) or transferred to tape (press P ?). The boot sector can also be saved to tape or disk (after pressing B), if it is in use.
Pressing G (?) allows files on tape to be copied back to disk. Normal tape-based software can also be transferred in this way. Pressing F allows a disk to be formatted in one of four ways (including Amstrad data format, giving 178K per side). The formats are no faster to access than the standard +3 format, however (unlike the CP/M format command).
The main facility of DB1, and the one which IS easy to use, is the Clone command (press C to begin). DB1 first, annoyingly, asks for the original DB1 disk to be inserted for 'protection purposes' (see later comments). Once this has been done, DB1 reads the source disk, and automatically figures out the protection methods employed by the disk manufacturers. The cloned disk is automatically formatted identically to the source disk as DB1 proceeds. The time taken to clone the disk can be very long, seemingly depending on how sophisticated the protection method employed is.
I tested DB1 with one of the Ultimate Collection disks, and ended up with a perfect copy after less than two minutes. Cloning 'Where Time Stood Still', however, took 4.5 minutes. I tried a few other disks, which all cloned successfully - DB1 even cloned an unformatted disk (in 10 minutes!).
DB1 is not fully debugged, so needs care especially considering the limited prompts given by the program. For example, pressing T (to transfer) twice, with no disk in the drive, causes the program to hang, decrementing the MEM= counter constantly. However, when used correctly, I found no problems.
------------------------------------
DB1 costs #12.95 on disk, or is available together with DICE at #19.95. It is therefore quite an expensive program, but a worthwhile investment if you own many commercial disk programs, assuming that all can be copied by DB1. Please remember that the policy of Kobrahsoft & Crash is that programs like this must ONLY be used for making private backup copies, NOT for distributing copies to 'friends'
Final comment: I am very disappointed that DB1 itself is copy protected, and it will not copy itself! Surely the whole point of DB1 is to protect the purchaser against any disks being damaged. It is also irritating that DB1 has to re-read the master disk before each clone - especially considering that the disk is uncopyable, and DB1 cannot even be copied by Multiface 3. If ever the DB1 disk is corrupted, Kobrahsoft will replace it, but may make a charge for the privelege. Kobrahsoft seem to be waving a two-edged sword here ...
Next Month
----------
A look again at DICE, now upgraded to version 2 - those about to purchase it should hold back until next month. Hopefully, another look at SAM too.