Classic Computer Magazine Archive COMPUTE! ISSUE 70 / MARCH 1986 / PAGE 65

SpeedCalc

For Atari

Kevin Martin and Charles Brannon, Program Editor

In response to popular request, COMPUTE! presents this professional-quality spreadsheet program for Atari 400, 800, XL, and XE computers with at least 48K RAM. Written completely in high-speed machine language, Atari SpeedCalc has all the important features you'd expect from a commercial spreadsheet program. In addition, its data files can be merged into text files created with the Atari SpeedScript word processor published last year in COMPUTE!. Atari SpeedCalc requires a disk drive, and a printer is optional but recommended.

Have you ever planned a budget for your home or office? If so, you probably used some sort of worksheet divided into rows and columns. Perhaps you wrote the months of the year along the top of the sheet and listed categories for earnings and expenses along one side. After entering data for each category and month of the year, you could calculate total income figures by adding or subtracting numbers in each of the sheet's "cells."

That's a classic example of a worksheet. It lets you enter and organize data, then perform calculations that produce new information. A spreadsheet program is an electronic version of the familiar paper worksheet. Since it does all the calculations for you at lightning speed, an electronic spreadsheet is far more convenient than its paper counterpart. And spreadsheet programs also offer editing features that let you enter and manipulate large amounts of data with a minimum of effort.

Atari SpeedCalc is an all machine language spreadsheet program for Atari 400, 800, XL, and XE computers with at least 48K RAM. Though relatively compact in size, SpeedCalc is fast, easy to use, and has many of the features found in commercial spreadsheet programs. Even better, if you print a SpeedCalc file to disk (see below), you can then merge it with a word processing document created with SpeedScript, COMPUTE!'s popular word processor (see COMPUTE!, May 1985, or SpeedScript: The Word Processor for Atari Computers, published by COMPUTE! Books).

Working together, SpeedCalc and SpeedScript make a powerful team. You can merge a chart of sales figures into a company report, create a table of scientific data for a term paper, and manipulate numeric information in many other ways. In a sense, a sprendsheet program brings to arithmetic all of the flexibility and power that a word processor brings to writing.

Preparing The Program

Although Atari SpeedCalc is small in comparison to similar commercial programs, it is one of the longest programs COMPUTE! has ever published. Fortunately, the "Atari MLX" machine language entry utility makes it easier to type a program of this size. Be sure to carefully read the Atari MLX article elsewhere in this issue before you begin. Here are the addresses you need to enter SpeedCalc with Atari MLX:

Starting address: 8192
Ending address: 16813
Run/Init Address: 8192

Next you'll be asked "Tape or Disk." SpeedCalc requires a disk drive, so type D. MLX will ask "Boot Disk or Binary File." Press F to select the Binary File option. (Although you could save SpeedCalc as a boot disk, it makes no sense, since such a disk cannot contain DOS, and DOS is necessary for file-oriented disk access.)

The screen then shows the first prompt, the number 8192 followed by a colon. Type in each three-digit number shown in the listing. You do not need to type the comma shown in the listing. MLX inserts the comma automatically.

The last number you enter in each line is a checksum. It represents the values of the other numbers in the line summed together. If you type the line correctly, the checksum calculated by MLX and displayed on the screen should match the checksum number in the listing. If it doesn't match, you have to retype the line. MLX is not fool-proof, though. It's possible to fool the checksum by exchanging the position of the three-digit numbers. Also, an error in one number can be offset by an error in another. MLX will help catch your errors, but you still must be careful.

If you want to stop typing at some point and pick up later, press CTRL-S and follow the screen prompts. MLX will ask you for a disk filename; use any legal Atari filename except AUTORUN.SYS. Remember to note the line number of the last line you entered. When you are ready to continue typing, load MLX, answer the prompts as you did before, then press CTRL-L. For a binary disk file, MLX asks for the filename you gave to the partially typed listing. After the LOAD is complete, press CTRL-N and tell MLX the line number where you stopped. Now continue typing as before.

Saving The Finished Program

When you finish all typing, MLX automatically prompts you to save SpeedCalc. For disks with Atari DOS 2.0, 2.5, or 3.0, save the completed program with the filename AUTORUN.SYS. This allows SpeedCalc to load and run automatically when you boot the disk.

Because SpeedCalc requires a full 48K of RAM in order to work, you must always disable BASIC before loading or running SpeedCalc. On an Atari 400, 800, or 1200XL, unplug the BASIC cartridge (or any other cartridge, for that matter). On an Atari 600XL, 800XL, or 130XE, unplug any cartridges and disable BASIC by holding down the OPTION button when you first switch on and boot the computer. If you forget to disable BASIC, SpeedCalc won't work correctly.

To use SpeedCalc with an Atari DOS disk, you must save or copy it on a disk that also contains DOS.SYS and DUP.SYS. Since you've saved SpeedCalc as AUTORUN.SYS, it will automatically load and run when you turn on your computer with this disk in the drive. SpeedCalc should always be named AUTORUN.SYS in order to load properly with Atari DOS. If you want to prevent it from automatically running for some reason, you can save it with another name, then rename it AUTORUN.SYS later.

If you're using Optimized System Software's OS/A+ DOS or a compatible successor, you can give SpeedCalc any filename you like. Just use the LOAD command from DOS, and SpeedCalc will automatically run. Or you can give it a filename with the extension .COM, such as CALC.COM. Then you can start up by just typing CALC at the DOS prompt. You can also write a simple batch file to boot up SpeedCalc automatically. Some enhanced DOS packages may use so much memory that they conflict with SpeedCalc. In this case, you'll need to use Atari DOS instead on your SpeedCalc disks.

Note: The AUTORUN.SYS file on your DOS master disk is responsible for booting up the 850 Interface Module for RS-232 communications. There is no easy way to combine the 850 boot program with SpeedCalc, so you can't access the R: device while using this program. If you need to send a SpeedCalc file to a serial printer or modem, print it to disk as explained below, then print or transmit the file data as you would any ATASCII text.

The Atari SpeedCalc Screen

SpeedCalc uses the top line of the screen as the command line. This is where SpeedCalc displays messages and asks you questions.

Screen lines 2–4 are the input buffer area. This is the work area where you enter and edit data. As you'll see in a moment, the input buffer also displays the data contained in the current cell. The work area cursor is a left arrow symbol (→). After you begin to enter data, most SpeedCalc commands (except for the cursor movement keys) are deactivated until you press RETURN to enter the data into the worksheet.

The lower 19 screen lines are your window into the spreadsheet. Though the spreadsheet contains many rows and columns, only a few can fit on the screen at one time. By scrolling the screen back and forth with the cursor, you can move the display window to any part of the spreadsheet.

The SpeedCalc worksheet consists of 50 vertical columns labeled with letters (AA, AB … BX) and 100 horizontal rows numbered from 1–100. The rectangle where a row and column intersect is called a cell. Cells are where you store data. With 50 columns and 100 rows, the SpeedCalc spreadsheet has a maximum of 5,000 (50*100) cells. Due to memory limitations, however, only about a third of these can actually contain data. But you may spread out the data over all 5,000 cells if necessary, depending on the format you need.

Moving The Cursor

Each cell is identified with the letters of its column and the number of its row. For example, the cell at the extreme upper-left corner of the sheet is called AA1, since it's in column AA and row 1. The cell below that is AA2. Moving one cell to the right from AA2 puts you in cell AB2, and so on.

Your current position in the spreadsheet is shown by the highlighted cursor. The simplest way to move around the sheet is with the cursor keys, which work just as they do when you're writing or editing a BASIC program. Press CTRL and the right cursor key to move right, and so on. Another way to move the cursor is with CTRL-H. Press CTRL-H once to "home" the cursor on the current screen: The cursor moves to the upper-left cell. Press CTRL-H twice in succession to move the cursor to cell AA1, the home position for the entire sheet.

SpeedCalc also has a goto command for moving the cursor over long distances. When you press CTRL-G, the command line displays GOTO: followed by a cursor. The cursor generally indicates that SpeedCalc is waiting for data—in this case it expects the name of the cell where you wish to go. If you enter BA88 at this point, SpeedCalc moves the cursor to the cell at column BA in row 88, adjusting the screen window as needed. Take a few moments to practice moving around the spreadsheet with all three methods; you'll be using them a lot. In a later section, we'll discuss how to change the size and format of a cell.

Keyboard Commands

SpeedCalc offers many different commands, a few of which are entered by pressing one key. However, most commands are entered by pressing CTRL along with another key. CTRL-G, as you've seen, is the goto command. CTRL-A displays the amount of free memory available, and so on.

The most drastic command is CTRL-X, which exits SpeedCalc and returns to DOS. Since this effectively erases all data in memory, SpeedCalc prompts you with ARE YOU SURE Y/N? before it shuts down. To cancel the command, simply type N (or any key other than Y). If your Atari DOS 2.0/2.5 disk contains the file MEM.SAV (created with the CREATE MEM.SAV option on the DOS menu), you can exit to DOS and then return to SpeedCalc—however, all spreadsheet data will be lost. To restart SpeedCalc from the DOS menu after exiting, select menu option M (Run At Address), then enter the address 2000. If you're using OS/A+ or DOS XL, use RUN 2000 instead.

If you press SYSTEM RESET in SpeedCalc, you'll see the message SYSTEM RESET TRAPPED. No spreadsheet data is lost. If you're using OS/A+ or DOS XL, type RUN 2000 to return to SpeedCalc.

SpeedCalc Keyboard Reference

A few commands require you to press three keys at once. This sounds more awkward than it is in practice, since two of the three keys are OPTION and CTRL. For instance, the relative copy command is performed by pressing OPTION-CTRL-C (hold down the OPTION console key and CTRL, then press C). The table lists all the SpeedCalc commands, and the figure shows the keyboard layout with a description of what each key does. We'll be discussing each command in more detail below.

Three Data Types

Before entering any data, you must know what kind of data SpeedCalc accepts. There are three different types: numbers, text, and formulas. Let's look at each type in turn.

1. Numeric data consists of numbers—the basic stuff that spreadsheets work with. SpeedCalc has a few simple rules for numeric data: A number must be a decimal value (base 10, not hexadecimal) composed of one or more digits from 0–9, with an optional plus or minus sign. A decimal point is also optional. If you include any other characters in numeric input, SpeedCalc treats the entire input as text data (as explained below). Thus, the numbers 123, .001, and –65535 are valid numeric data. The number 65,535 is invalid because it includes a comma.

The allowable range for numbers in Atari SpeedCalc is similar to the range for Atari BASIC, roughly –1.7E+97 to 1.7E+98. If a calculation produces a number outside the allowable range, you'll see the message *ERROR* in the cell containing the formula. This doesn't happen very often, since SpeedCalc won't let you enter a number more than 36 digits long, and there's rarely a need to use such large numbers unless you're tracking the national debt.

Although an input value can be up to 36 digits long, numbers in SpeedCalc calculations are accurate only to nine digits. This must be taken into account when doing any calculation involving large values. For example, you can enter the value 1122334455.66 into a cell, and the cell holds the value with no rounding. However, if you use the value from that cell in a formula, the value is rounded to nine digits—112233446.00—and the result of the calculation is accurate only for the first nine digits.

You can enter values in scientific notation by following a number with the letter E and the appropriate power of 10. For example, you can enter 1,234,000 as 1.234E + 06. However, scientific notation should generally be avoided, since values outside the Atari's maximum range may crash the program (if this happens, press RESET and rerun the program from DOS as explained above). Since there's only room for about 36 digits, unpredictable results may occur if you enter any number in scientific notation with an exponent greater than 35 (E+35).

To see how entering numeric data works, let's enter the number 123 in cell AA1. No special commands are required to enter data: Just move the cursor to AA1 and begin typing. The left-arrow symbol shows the end of the data. While you're entering the number, it appears only in the input buffer near the top of the screen (the inverse-arrow cursor shows your cursor position). As soon as you press RETURN, the number appears in cell AA1 and the letter N appears at the upper right of the screen. The N signifies numeric, meaning that SpeedCalc has accepted the entry as valid numeric data. Move the cursor to a vacant cell, then move it back to AA1. The input buffer displays whatever data is found in the cell under the cursor. When the current cell is empty, the buffer is empty as well.

If you want to change anything during data entry, press the BACKSPACE key (BACKS on some Atari machines). BACKSPACE always deletes the character before the cursor (or has no effect if the cell is empty). Later on, we'll explain how to edit existing data.

As you've seen, pressing RETURN enters a data item into the current cell. You can also end the input by pressing CTRL and a cursor key. The data is entered as if you had pressed RETURN, and the cursor moves in the indicated direction. This feature is handy for entering a lot of data: Simply type the entry, move the cursor to the next cell, enter more data, and so on.

2. Text data is not "data" in the strict sense, since SpeedCalc doesn't use it in calculations as it does numbers and formulas. Text data is there only to help people understand what the other data means. Text may consist of comments, titles, column headings, subheadings, or whatever you need to interpret the numbers and formulas. As an example, move the cursor to cell AA2 (just under AA1) and type the following line:

THIS IS A PIECE OF TEXT DATA.

You can use the BACKSPACE key to erase mistakes while you're typing. When you press RETURN, SpeedCalc displays T (for text) in the upper-right corner. In this example, the cell isn't large enough to accept all the text, so only the leftmost portion appears in AA2. But even though you can't see it, all of the text is there. Move the cursor to another cell, then move it back to AA2. As soon as you rerurn to AA2, SpeedCalc displays all the text in the input buffer area.

3. Formula data is a mathematical expression or formula. It may be as simple as 2 + 2 or as complex as your imagination (and mathematical prowess) allows. The first character in a formula must always be an equal sign (=). If you omit this symbol, SpeedCalc either signals an error or treats the data as text.

The true power of a spreadsheet is that a formula in one cell can refer to another cell. This is easier to demonstrate than to explain. Move the cursor to cell AA3 and type the following line:

= AA1*25.O1 + @SQR(4)

As soon as you press RETURN, SpeedCalc displays F (for formula) in the upper-right corner of the screen and puts the result of the formula (not the formula itself) in AA3. If AA1 contains 123, the value 3078.23 appears in AA3. In plain English, this formula means "multiply the contents of cell AA1 by 25.01 and add the square root of 4."

Before we examine the formula more closely, here's a quick demonstration of what makes a spreadsheet such a powerful tool. Move the cursor back to AA1 and press CTRL-R. The command line displays the message RECALCULATION IS ON, meaning SpeedCalc now automatically recalculates the entire sheet whenever you make a change. Now change the number in AA1 to 456 (simply move to the cell and start typing). The new result (11406.56) automatically appears in cell AA3. We'll explain more about automatic recalculation later.

A typical screen from Atari SpeedCalc—a compact, powerful spreadsheet program written entirely in machine language.

Atari SpeedCalc's input buffer always displays the contents of the data cell under the highlighted cursor.

Note that the referenced cell must contain data that SpeedCalc can evaluate: a number or another formula. If the formula refers to an empty cell, or one that contains text, SpeedCalc signals the error by printing *ERROR* in the cell containing the incorrect formula.

Mathematical Operators

These symbols can be used as operators in a formula:

Operator Function
+ addition
subtraction
* multiplication
/ division
^ exponentiation
= equality

One factor that affects formulas is precedence, or the order in which mathematical operations are performed. In SpeedCalc, formula operators have the same precedence as in ordinary math.

The first operators to be evaluated—those with the highest precedence—are those enclosed in parentheses. Where one set of parentheses encloses another, the expression in the innermost set is evaluated first. The next operators to be evaluated are exponents. Multiplication and division have equal precedence; both operations are lower than exponentiation. Addition and subtraction have the lowest precedence of all. To take one example, SpeedCalc evaluates the formula =5*(8+3*-2)^2-10/+2 as the value 15, just as in ordinary math. Note how the result is affected by the plus and minus signs before the two 2's.

Functions

Formulas may also include any of the functions listed here:

@ABS() absolute value
@AVE() average of a block of cells
@EXP() natural exponent
@INT() integer
@LOG() natural logarithm
@RND0 round to nearest integer
@SGN() sign
@SQR() square root
@SUM() sum of a block of cells
PI value of pi (3.14159265)

All the functions except PI begin with the @ symbol and are followed by parentheses. The parentheses of a function may contain a number or a formula. For example, the formula =@SQR(4) generates the square root of 4. The formula =@SQR(AA1) returns the square root of whatever value cell AA1 contains. The function @INT() generates an integer (whole number) by truncating (discarding the fractional part of) a numeric value; note that this is different from rounding (for instance, the result of @INT(—4.3) is —4, not —5). Use the rounding function @RND() to round a value up to the nearest whole number.

The function @AVE() calculates the mean average of the values in a block (group) of cells. The function @SUM() calculates the sum of a block. Both functions require you to define the block so SpeedCalc knows which cells to include in the calculation. This is done by putting two cell names separated by a colon in the parentheses. The first cell name defines the upper-left corner of the block, and the second defines the bottom-right corner. To define a block in a single column, specify the top and bottom cells in the column. For instance, @AVE(AA1:AD2O) calculates the average of all the cells from AA1 to AD20. The function @SUM (AA1:AD20) calculates the sum of AA1 through AD20, and so on. An error results if any cell in the block is blank or contains text data.

Editing The Sheet

Editing is a very important spreadsheet function. The simplest way to change what a cell contains is to move to it and start typing. The old data in that cell is replaced by whatever you enter. For instance, to replace the contents of cell AA1 with the number 456, move to that cell, type 456, and press RETURN or exit with a cursor key. Press CTRL-K (think of kill) to erase what's in the current cell. To erase everything in the sheet, press SHIFT-CLEAR. Before carrying out this drastic operation, SpeedCalc asks you to confirm it by pressing Y or N.

In some cases, only a minor change is needed. Edit mode lets you change the data in a cell without retyping the entire entry. To activate edit mode, move to the desired cell and press CTRL-E. In this mode, up and down cursor movement is disabled, and the left/right cursor keys move within the input buffer. Typing in edit mode inserts new characters in the line: Everything to the right of the new character moves right one space (unless the buffer is already full). Because all keys insert automatically, the CTRL-INSERT key combination is disabled: Press the space bar to insert a blank space. Erase unwanted characters with the BACKSPACE key or CTRL-DELETE. The CTRL-DELETE combination does not move the cursor: It simply pulls the text to the right of the cursor toward the cursor position. Since the cursor keys have a different function in edit mode, you cannot use them to end the input. Press RETURN to enter the new data and escape from edit mode.

SpeedCalc displays *ERROR* in a cell when you enter an erroneous formula. Usually this means you've made a typing error in that cell, or the formula refers to text or an empty cell. A line of asterisks (*********) signals that a number is too large to be printed in the cell. Though these messages appear in the cell area, no data is lost. You may move to the affected cell, view its contents in the input buffer, and make whatever correction is needed.

Recalculation

Recalculation is the very core of a spreadsheet. As you know, entering or editing a piece of data makes SpeedCalc perform a calculation and put the result in the cell under the cursor. In most cases, the new data relates to data in other cells, so you'll ultimately want to recalculate the entire spreadsheet as well. This can be done manually or automatically.

To recalculate the spreadsheet manually, enter CTRL-N. SpeedCalc begins at AA1 and recalculates every cell that contains data, placing fresh results wherever needed. If you switch to automatic recalculation mode, SpeedCalc automatically recalculates the entire spreadsheet each time you enter new data or edit what exists. When you press CTRL-R, SpeedCalc changes the recalculation status and displays it at the top of the screen. If automatic recalculation was turned off before, it is now on (and vice versa). If you aren't sure which mode you're in, press OPTION-CTRL-R; SpeedCalc displays the mode without changing it.

Automatic recalculation can be fun to watch in a large spreadsheet: Every time you make a change, new results appear everywhere on the screen. However, the more data your spreadsheet contains, the longer it takes to update the entire sheet. For this reason, you may want to turn off automatic recalculation most of the time, recalculating manually whenever you need to view results.

One problem with recalculation arises from the order in which cells are calculated. Because only one cell can be calculated at a time, you must sometimes recalculate the entire spreadsheet two or three times to get correct results in every cell (this is common to all spreadsheet programs). For instance, say you have a formula in AA1 which refers to a formula in AB15. When SpeedCalc calculates AA1, it must use the existing data from AB15—which is probably out of date, since the formula in AB15 hasn't been recalculated yet. To avoid this problem, you should always recalculate a sheet manually two or three times before printing it or saving it to disk.

SpeedCalc offers a number of other features. Before experimenting with them, you should spend some time typing in a hypothetical spreadsheet—perhaps a fictitious yearly budget—to become thoroughly familiar with the basic commands covered so far. Most importantly, create formulas using all the operators in different combinations.

Change Format

The default (normal) format for numeric data is flush right with rounding to two decimal places. In other words, the number is displayed in the rightmost part of the cell, with two numbers after the decimal point. Text and formulas are also displayed flush right. SpeedCalc offers several commands for changing cell formats.

Change Format (CTRL-F). This command changes the location of data in the cell. When you press CTRL-F, the SpeedCalc command line displays the question FORMAT: LEFT, CENTER, OR RIGHT JUSTIFY?. Press L, C, or R to move the data to the left, center, or right of the cell.

Change Decimal Places (CTRL-.).

SpeedCalc also lets you change the number of decimal places for any cell. The default number of decimal places is 2, but you may change it to anything from 0–15. Press CTRL and the period key (CTRL-.) to change this value: SpeedCalc prompts you to enter a number from 0–15. If you choose zero decimal places, any number in that cell is rounded off to the nearest integer (whole number). If you choose 15, a number in that cell is not rounded off at all—SpeedCalc displays it exactly as you entered it or as it was calculated from a formula.

Width (CTRL-W). The width command changes the width of an entire column of cells. Move the cursor to any cell in the desired column, then press CTRL-W. When SpeedCalc displays the prompt WIDTH:, respond with a number from 4–36. The entire screen is redrawn to accommodate the new format, and may look very different depending on what value you chose. For instance, if you increase a column's width, the rightmost column of the former display may disappear: SpeedCalc only displays as many complete columns as it can fit on the screen. If you decrease the width of a column, you may see asterisks where numbers used to be (indicating the cell is now too small to display the entire number). To get rid of the asterisks, expand the column as necessary.

Global Format (OPTION-CTRL-F). This is the same as the ordinary format command, but operates globally, changing every cell in the sheet instead of just one.

Global Width (OPTION-CTRL-W). This is a global version of the width command. Every column in the sheet changes to the designated width.

Screen Color And Luminance

SpeedCalc makes it easy to change the screen background and character colors to your liking.

Background Color (CTRL-B). Press CTRL-B to cycle forward through the available screen background colors.

Text Color (CTRL-T). This command increases the luminance of characters on the screen, cycling forward through all of the available text colors.

Previous Background Color (OPTION-CTRL-B). The reverse of CTRL-B, this command cycles backward through the range of background colors.

Previous Text Color (OPTION-CTRL-T). The reverse of CTRL-T, this command cycles backward through the range of text colors.

Macro Editing

After typing in a large spreadsheet, you may decide to make a major change. You may want to add new data somewhere in the middle, delete a section, or move a group of cells from one location to another. SpeedCalc's macro (large-scale) editing commands simplify such operations, affecting an entire block of cells at once. A block is simply a group of cells connected in rectangular fashion. You can define it as a single cell, a row or column, or any rectangular area within the spreadsheet.

There are two ways macro commands work: verbatim or relative. To take a simple example, say that cell AA2 contains the formula =AA1*5 and you want to move its contents to cell AB2. When this is done in verbatim mode, AB2 contains an exact copy of what was in AA2 (=AA1*5). Note that the cell name used in the formula does not change: The formula still refers to AA1. If you perform the same operation in relative mode, the cell name in the formula is adjusted to fit the new location. In this case, AB2 would contain the formula =AB1*5.

Copy (CTRL-C). The copy command copies a block of cells into a different location without disturbing the original cells. Place the cursor on the upper-left corner of the block you want to copy, then press CTRL-C. SpeedCalc prompts you to move the cursor to the lower-right corner of the block you want to copy. Once the cursor is in place, press RETURN. Now SpeedCalc prompts you to move the cursor to the place where you want to put the block: This is the upper-left corner of the new position. Once the cursor is there, press RETURN again. The new data replaces whatever was contained in the designated cells. Note that if you define an impossible block (for instance, moving the cursor to the upper-left of the original position, rather than below and to the right), SpeedCalc does not copy any data. Press ESC if you change your mind and wish to cancel this command.

Move (CTRL-M). This command works like a copy, but it fills the original cells with blanks. Though SpeedCalc has no express insert command, you can use this command to make space for new data in the middle of a spreadsheet. Simply move everything below the insertion point down as far as you need. As with the copy command, you can press ESC to cancel this command.

Relative Copy (OPTION-CTRL-C). This form of the copy command adjusts the cell names used in formulas within the copied block (see explanation above). When copying or moving data in relative mode, you may see some strange characters displayed very briefly in the input buffer area of the screen: This harmless effect occurs because SpeedCalc uses that area for temporary storage during these operations, conserving memory for other purposes.

Relative Move (OPTION-CTRL-M). This is the relative form of the move command. Cell names in formulas are adjusted to reflect the move.

Memory Management

SpeedCalc makes about 20K (roughly 20,000 characters) of memory available for data. As noted earlier, SpeedCalc lets you spread your data out over a much larger number of cells than you can actually fill with data. The extra space is provided to give you full control over the final format of the spreadsheet and to leave some elbow room for move and copy operations.

Because memory is limited, you should keep careful track of how much is free while using the program. Press CTRL-A to display the amount of free memory. We suggest limiting your spreadsheets to 1,600 cells (equivalent to 40 rows by 40 columns). If you've filled nearly all of free memory, you may have to break the spreadsheet into two smaller sheets.

Although SpeedCalc checks the amount of available memory and displays an error message if you run out, you should be careful not to exhaust free memory. Any move or copy operation in process will be aborted if sufficient memory is not available.

SpeedCalc Commands
Command Action
CTRL-A available memory check
CTRL-B next background color
CTRL-C copy block verbatim
CTRL-D disk directory
CTRL-E edit current cell
CTRL-F change cell format
CTRL-G goto selected cell
CTRL-H home cursor
CTRL-K clear current cell
CTRL-L load SpeedCalc file
CTRL-M move block verbatim
CTRL-N recalculate sheet now
CTRL-P print cells from AA1 to cursor
CTRL-R turn recalculation on/off
CTRL-S save SpeedCalc file
CTRL-T increase text luminance
CTRL-W change column width
CTRL-X exit SpeedCalc to DOS
CTRL-. change decimal places
SHIFT-CLR clear spreadsheet
OPTION-CTRL-B previous background color
OPTION-CTRL-C copy block relative
OPTION-CTRL-M move block relative
OPTION-CTRL-R check recalculation status
OPTION-CTRL-T decrease text luminance
OPTION-CTRL-W change width of all columns

Disk Operations

SpeedCalc has three disk commands for saving and loading data from disk and displaying the disk directory. The disk directory command is the easiest to use: Simply press CTRL-D. To save a spreadsheet to disk, press CTRL-S. SpeedCalc prints SAVE: on the command line, followed by a cursor. Enter a valid Atari filename (including D:) and press RETURN. (If you change your mind and decide not to save anything, press RETURN without typing a filename.) If no disk error occurs while the spreadsheet is being saved, SpeedCalc displays NO ERRORS in the command line and returns you to command mode. If there was an error, you'll hear a beep and see the message I/O ERROR # followed by an error number in the command line. Your DOS manual explains the meaning of the various DOS errors.

To load a saved file from disk, press CTRL-L. Again, you can cancel the operation by pressing RETURN without entering a filename. SpeedCalc prompts you to enter the filename and displays the error status when the operation is complete. If an error occurs while loading, SpeedCalc clears the partially loaded sheet to prevent a program crash.

Printing

SpeedCalc lets you print data to three different devices: to the screen for previewing output (E:), to a printer for permanent documentation (P:), or to a disk file for integrating the data with a Speed-Script document (D:filename).

To print a hardcopy of the spreadsheet to a printer, press CTRL-P and then enter P: when asked for (Device:Filename). Before using this command, you must position the cursor below and to the right of the block of cells you wish to print. The upper-left corner of the printout starts at cell AA1. To preview the printed output on the screen, enter E: in response to the same prompt.

You can also print SpeedCalc data to a disk file for use in a Speed-Script document. When SpeedCalc prints the prompt (Device:File-name), enter D:filename. The data is saved as a disk file of that name. Note that printing to disk creates a different type of file than saving to disk, and SpeedCalc cannot reload files in the print format. You should save files you wish to reload into SpeedCalc, and print files you wish to load into SpeedScript.

SpeedScript Integration

SpeedCalc sends data to the printer in simple, plain vanilla form. That may be fine for personal use, but if you're creating a document for others to view, you may want special features such as boldface, underlining, italics, and so on. Since Atari SpeedScript—COMPUTE!'s popular word processor—already offers a way to access these features (and many more), no attempt has been made to duplicate them in SpeedCalc.

No special tricks are needed to load a SpeedCalc file into SpeedScript. After printing the file to disk as explained above, exit SpeedCalc, then load and run SpeedScript. Now load the file as you would any SpeedScript document. The data appears on the screen, ready to be edited in any way you wish. Again, keep in mind that SpeedScript can load only those files which have been printed to disk, not saved.