Electronic Spread Sheet Program for the OS-9 operating system


Dynacalc, in all machine readable formats and the written documentation accompanying them, are copyrighted. The purchase of Dynacalc conveys to the purchaser a license to use Dynacalc for his/her own use and not for sale or free distribution to others. No other license, expressed or implied, is granted.

Copyright © 1983

This manual and the associated programs are the copyright of Dragon Data Ltd (under licence). Copying is only permitted for backup purposes on a single computer system. Any other copying by whatever means without the written authorisation of Dragon Data Ltd is strictly prohibited.

This manual was prepared using the STYLOGRAPH word processor, checked with the SPELL CHECK spelling checker, and printed with the MAIL MERGE merge/print program.

OS-9 and BASIC09 are trade marks of Microware Systems Corporation and Motorola Inc.

Table of Contents

System Requirements 2

Getting Started 2


Entering Data and Equations 5

Error Correction 7

Calling DYNACALC 8

Commands 8

Functions 19

Arithmetic Operations 23

Operating Tips 24

DYNACALC Error Messages 29

Screen Layout 29

Columns, Rows, and Cells 30

System Configuration 31

Using Data Files 32

DYNACALC Tutorial 34

DYNACALC Function Summary 37

DYNACALC Command Summary 38

Key Assignment Summary 41

System Requirements

This version of DYNACALC is designed to operate under the 6809 OS-9 operating system, either ‘level one’ or ‘level 2’. With a level one system, about 13k of user space remains after DYNACALC is loaded, which will hold about 1000 numeric cells. A level two system will allow about 36k of user space, or room for about 3000 numeric cells.

The minimum system configuration you require is your Dragon Data computer, with at least ask bytes of RAM, running the OS-9 operating system; a floppy disk drive; and a television, or preferably a monochrome monitor. (The monitor will generally give you a better picture than a television). You can certainly run DYNACALC with only one disk drive, although two drives are more convenient.

Use of a printer with DYNACALC is entirely optional, and you can use any hard copy device which you currently use under OS-9. The user has control of all important printer parameters: printer device name, column width (up to 255), number of lines per page, multiple spacing, pagination on/off, and DYNACALC borders on/off.

Getting Started


When you have read this section, try out the tutorial at the end of is this manual. 'Hands-on experience' is the best way of quickly becoming familiar with DYNACALC.

The DYNACALC package from Dragon Data contains two items: this manual, and a single floppy disk. Because of the risk of inadvertently damaging the disk or deleting the files on it, you should NEVER use the disk for running DYNACALC. Use the ‘backup’ command available on OS-9 to copy the original disk to a freshly formatted blank disk, and STORE THE ORIGINAL DISK IN A SAFE PLACE. Refer to the OS-9 User’s manual for instructions on how to use the 'backup' and 'format' commands.

Now place the new disk in drive d0. Change your execution and data directories to the new disk:

OS9: chx /d0/cmds ; chd /d0

On the root directory of the disk, which you can now inspect by

OS9: dir

you will find some sample DYNACALC workfiles, and two directories - CMDS and SYS. The CMDS (commands) directory contains the files that you need to run DYNACALC:


The program itself


The customizing program


System information for your Dragon and printer

plus a few of the commonly used OS-9 utility programs.

To inspect this directory type:

OS9: dir cmds

“install.dc” is used to customize DYNACALC for your printer. The supplied “dynacalc.trm” is configured for a standard 80 column printer on the parallel printer port, “/p”. If you do need to change the configuration, see the section on ‘System Configuration’.

The SYS directory contains the OS-9 error messages file, 'errmsg', used by OS-9 when reporting an error (such as “Error #216 - Pathname not found”).

If you are using a Dragon 64 computer and you are not already in the 51 characters by 24 lines model use the 'go51' command to change the screen format:

OS9: go51

Getting into and out or DYNACALC

You are now ready to try out DYNACALC. All you need do is type:

OS9: dynacalc

To exit DYNACALC at any time and return to OS-9:

  1. hit the ESCAPE key to return to the DYNACALC ‘Ready’ prompt. (For the assignment of the ESCAPE key on your keyboard, see the Key Assignment Summary at the end of this manual).

  2. if you want to save your worksheet, use the /SS command.

  3. type /QOY (letter "O") to return to OS-9.

You can exit any command and return to the ‘Ready’ prompt by hitting the ESCAPE key. You should also use the ESCAPE key to return to the ‘Ready’ prompt when DYNACALC is showing you an error message, or when you want to exit from a HELP display.

To try out one of the sample profiles, for instance ‘demo1.cal’, use:

OS9: dynacalc demo1

Note that you do not type in the '.cal' extension of the filename. DYNACALC supplies the extension automatically.

Working with two disk drives

If you have two disk drives, you can use a separate disk for your workfiles. Format a disk, put it in drive d1, and change your current data directory to that disk by:

OS9: chd /d1

If there is enough free space on your OS-9 system disk, you may find it more convenient to have the DYNACALC programs on your system disk. To do this, copy the files in the CMDS directory of the DYNACALC disk to the CMDS directory of your system disk. Refer to the description of the ‘copy’ program in the OS-9 User’s manual.

Working with one disk drive

It is possible to use a separate data disk when you have only one drive. Put your DYNACALC disk in your drive, d0, and set your execution directory to that disk:

OS9: chx /d0/cmds

Now call up DYNACALC, without specifying a work file:

OS9: dynacalc

When DYNACALC is ready, remove your DYNACALC disk and insert your data disk. Now use the DYNACALC 'change directory' command to change your data directory to the new disk:

You enter /SC

DYNACALC asks you for the directory name, which you enter as /d0. Use the 'load' command, (/SL), to load your worksheet, if you have one.

DYNACALC on the Dragon 64

Before you dive into the rest of this manual, a note about workspace. DYNACALC has a large number of informative HELP messages that can be very useful when you are learning. However, these messages take up a sizable chunk of memory - about 8K bytes - which will limit the size of your worksheet on the Dragon 64. If you need this extra space you can turn off the help messages on the command line, using the '-h' option. For example:

OS9: dynacalc demo1 -h

You can now work on quite a large spreadsheet. As your worksheet grows, DYNACALC will automatically take up more of your computer’s memory. Eventually, you may no longer be able to use the /SX ‘pass a command to OS-9’ command. This does not inhibit your use of DYNACALC.


DYNACALC is a computer program that simulates a large sheet of paper (worksheet) arranged as a rectangular array of ‘columns’ (vertical) and 'rows' (horizontal). At each intersection of a column and a row there is a 'value' (number), or an 'expression' (describes mathematical operations), or a 'label' (an alphanumeric message). See the illustrations on page 30.

To enter a value, expression, or label into a cell, you must first move the 'cursor' (pointer) to the cell you wish to use. You may move the cursor with the ARROW keys on your keyboard, if it has such special keys, or with a combination of the 'CONTROL' key and various alphabetic keys such as 'u' for up and 'd' for down. See the Key Assignment Summary section for details on your keyboard.

Using the ARROW keys you can move the cursor up, down, right, or left from its current position. Each time the cursor moves, the cell 'address' (column and row position) is changed. You will see the address continuously updated at the extreme top left corner of the screen.

If you attempt to move the cursor beyond the edge of the screen, the display will “scroll” (move up, down, or sideways), and the column and row borders will change to reflect the new location. Of course, if there is any data in a cell, that data will move to a new physical location on the screen, or may even scroll off to make room for new cells. The actual contents of cells is not changed, however. If you restore the cursor to where it was before, you will see some of the same cells appear.

The ARROW keys are very useful for moving short distances. but may be cumbersome when long moves become necessary. Immediate cursor positioning to a given cell address is provided by the 'Goto:' command, invoked by typing the '>' key. As soon as you hit this key, the message 'Goto:' is displayed near the top of the screen. Now enter the address of the cell you want, for example 'A3' or 'B23', and the cursor will move immediately to that cell.

Since it is frequently necessary to move to the top-left corner of the worksheet, a special HOME key has been implemented to do just that. Normally, HOME will cause the cursor to move to cell A1. However, if titles are enabled, that won’t be possible. The cursor will in that case go as close to A1 as it can. Check the Key Assignment Summary section for the HOME key on your keyboard.

Once you move DYNACALC’s cursor to the cell you wish to examine, you will notice that the contents of that cell are now displayed on the very top line of your screen. This cell to which the cursor points is called the 'current cell'. To examine another location, move the cursor as explained above. When you reach a cell whose contents you wish to change, simply type in the new value expression, or label. When you hit the RETURN key, the new information will be transferred to the current cell.

Entering Data and Equations

As mentioned earlier, each DYNACALC cell can store any of these types of data: values, labels, and expressions. When you move the cursor to a particular cell (let’s call this pointing to a cell), its contents are displayed on the top line of the screen. The symbols (V), (L), and (E) are used to indicate Value, Label, and Expression. A given cell can contain only a single type of data at a time. When the cell is changed, the new data may be of any of the three types, but never mixed at the same time.

The first kind of data a cell can contain is a number, or 'value'. To enter a value, move the cursor to the desired cell and then type the number, for example 2, 3.4, -12, .09, -3487.345, 3.8E6, 6.8E-18. These are all valid numbers. Commas are not allowed within a number, however. As soon as you type the first character of the number, DYNACALC will detect that it is part of a number, and will display 'Value' on line 2 of your screen. When you finish entering the number, hit the RETURN key, and the number will be transferred to the current cell.

In addition to numbers, cells can contain descriptive text, known as 'labels'.

To enter a label, move the cursor to the desired cell and then type the message you wish displayed at that place in your worksheet. When you type the first character of the label, DYNACALC will display 'Label' on line 2. But what if you want to enter a number as the first part of a message? Or if you want to enter a string of periods. If you try doing this, DYNACALC will think you are trying to input a number. To 'fool' DYNACALC, precede your label with a single-quote character ('), and it will know that what is to follow is a label. No trailing quote is required, and the leading quote will be 'swallowed' so as not to spoil the appearance of the message. When you are finished entering the message: hit RETURN to copy the label to the current cell.

The third type of data a cell can contain is an 'expression', such as 'A3+B4'. Expressions can be simple, or as complicated as you like. They are the basis for the great power of DYNACALC. Expressions are made up of cell addresses, arithmetic operators (such as '+'), and functions, (such as @SQ for 'square root').

To enter an expression, move to the desired cell and enter the expression you need. The result of the expression will be transferred to the current cell, and each time the contents of any referenced cell are changed, the expression will be re-evaluated and the new answer put in the target cell. For example, if the current cell is A3, and you wish that cell to contain the product of the contents of cells A1 and A2, the expression will be A1*A2. However, if you type just that, DYNACALC will think it’s a label (since it starts with an alphabetic character). To get around this, you must fool DYNACALC by giving it an arithmetic operator character first. For example, you could type +A1*A2. If your expression begins with a function, the '@' character will accomplish the same thing by itself. Thus if you want the current cell to hold the square root of 2, simply type @SQ2 (those who love to type will be happy to know that @SQRT(2) will also work). Note that upper-case characters are NOT essential. If you type a lower-case letter when a cell address or function name is required, it will automatically be converted to upper case.

In each or the above cases you have transferred the new value to the current cell by hitting the RETURN key. Since frequently several adjacent cells are entered in a series, DYNACALC also allows use of the ARROW keys to do this, and at the same time move to the next cell, thereby saving a keystroke for each cell entered.

Let’s try a simple example to make sure we haven’t missed anything. If you don’t already have DYNACALC running, bring up your OS-9 computer and, when you see the 'OS9:' prompt, type 'dynacalc'. After a few seconds you will see the 'Hello' screen: which displays DYNACALC’s version number. Type any key to continue, or just wait for the screen to 'time out'.

When the screen is rewritten you will see the basic worksheet, as shown on page 29. (If you already have DYNACALC running type /CY to clear the current worksheet (don’t forget to save it first, if it’s anything important)).

The cursor now points to cell A1. Type 23 (DOWN-ARROW) 45 (DOWN- ARROW). You have placed constants in cells A1 and A2, and the cursor now points to A3. To add cells A1 and A2 and place the sum in A3, type +A1+A2 (RETURN). Now A3 displays 68, the sum of 23 and 45.

Now move the cursor back to A1 and enter a different value. When you hit 'RETURN', A1 is updated to its new value. No surprise. But A3 is also changed, and still shows the correct sum of the other two numbers. This is the real power of DYNACALC, and the basis for even the largest and most complex spread-sheet.

Error Correction

Line 2 of the DYNACALC screen displays information about the current operating mode and the settings of various options. One of the most important things displayed on line 2 is the ‘Ready’ message. Whenever you see ‘Ready’, you know that DYNACALC is in its ‘Ready’ mode, and is able to accept commands from the keyboard. The Ready message will not be displayed, for example, while the printer is printing, or while a command menu is being displayed.

If you are uncertain about 'where you are' in DYNACALC, hitting the ESCAPE key will always leave whatever mode the program is in and immediately go to Ready. Thus you can abort from any command or data input at any time by hitting ESCAPE.

Whenever you are typing in data to be put into a cell, you can use the BACKSPACE key to correct recent errors without retyping the whole line. Note that the BACKSPACE and LEFT-ARROW keys are two different keys and produce very different results in DYNACALC.

You can at any time edit the contents of any cell by moving the cursor to that location and using the edit command. After you reach the desired cell, type /E to enter the Editor. Now the contents of the current cell are displayed on the edit line (line 3), and you can insert new characters, delete existing ones or overlay old characters with new, all without retyping the entire line.

When you are using the editor, the RIGHT-ARROW and LEFT-ARROW keys take on a new function: that of moving the cursor left and right on the edit line. Note that the ARROW keys do not change anything; they just bring the cursor to the point where you want to make a change.

Once you have reached the desired spot in the line, characters you type in will be inserted at that point. If you want to delete a character, move the cursor one character past the one to be deleted, then strike the BACKSPACE key. The character will disappear and the right side of the line will move one position to the left.

To overlay, hit the OVERLAY key and type the new character(s). The old will be replaced with the new, without changing the length of the line. While you are in the overlay mode, you can still use the ARROW keys to move the cursor without making changes. Note, however, that the BACKSPACE key is ignored in this mode. To exit overlay, hit the OVERLAY key again.

When you are finished editing, hit 'RETURN' to transfer the data to the current cell.

As described above, the editor is normally entered from the ‘Ready’ mode, by typing /E. However, you can also get into the editor directly from the data entry mode by typing the EDIT key (CONTROL-E on most keyboards). You might want to do this if you are typing a long entry and notice that its beginning is messed up. The editor works the same as described earlier; only the method of entry is different.


If you are in OS-9. and see the shell’s prompt (OS9:), you can enter DYNACALC by simply typing 'dynacalc' and hitting RETURN. You will be greeted by a copyright notice, and then by an empty DYNACALC worksheet.

When you call DYNACALC from OS-9, you can optionally specify a worksheet to be automatically loaded upon entering DYNACALC. Do this by typing 'dynacalc filename' on the OS-9 command line, where 'filename.cal' is the name of the worksheet to be loaded. This file defaults to the working data directory. Note that you do not type in the filename extension '.cal' it is supplied automatically by DYNACALC. Such a command can be put into your system’s 'startup' file so that DYNACALC and a pre-defined worksheet will be loaded automatically on login.

DYNACALC allows one command line option: '-h' at the end of the command line will delete the built-in HELP messages, thereby leaving more user space. If this option is omitted, HELPs will be turned on unless they were disabled by “install.dc”.

For the experienced OS-9 user

You can also use OS-9’s powerful I/O redirection with DYNACALC. To automate repetitive tasks, such as merging worksheets and loading data tables, use your system text editor to build a file containing a sequence of DYNACALC commands. Watch out for blank lines! Then call DYNACALC with an OS-9 command like 'dynacalc <commandfile', and the desired commands will be executed.

If DYNACALC hits an end-of-file in the commandfile, it will return to OS-9, but not before saving the current worksheet in 'dyna.xxxxx.cal' in the working data directory, where 'xxxxx' is your user id number. (Your 'user id' is normally 00000 if you are the only user - see the OS-9 User’s Manual on the 'login' command for using OS-9 multi-user). To defeat this action, end your command file with a quit command (/QOY), which will cause an immediate exit. Normally you will want to save the updated worksheet in a specified disk file before exiting. If so, include a save command (/SSfilename) before the quit command.

You may also want to redirect DYNACALC’s output to the 'null' device (if available) to avoid a lot of unnecessary screen flashing. Use a command like 'dynacalc <commandfile >/null' to do this. Don’t forget, the whole thing can be run in background by ending the command with an ampersand (&). You might even put the OS-9 command line itself in a 'procedure' file, so that this complex command can be executed by typing a single command name.


You enter the command mode by typing '/' when you are in the Ready mode. When you do this, you will notice that the Ready message is replaced on line 2 of the display by the main command menu, which consists of a number of single letters, each representing a command:

A B C D E F I M P Q R S T W ?

You can then select any one of the commands by typing the letter associated with it. This will lead to another menu or other message, which will be described under the headings of individual commands. If you don’t remember what the letters stand for, type ‘?’ for HELP, which is a summary of instructions for the main command level. Each subsequent command menu also has its own HELP, which is called up by typing '?' in response to the menu prompt.


Attributes (/A) should really be listed last, since it is a catch-all for miscellaneous commands that don’t fit under any other heading, but we will defer to the alphabetic sequence and tell you DYNACALC attribute commands here.

The attributes command menu is obtained by typing /A when you are in the Ready mode. The menu consists of these single-letter commands:

B D G H L M O P R S T W ?

Attribute B (/AB) is a good one to start with, since it is very simple. Each time you type /AB you 'toggle' (reverse) a switch which controls whether or not the bell ('bell' is a carryover from the mechanical teletype - terminals normally use an electronic beeper) is sounded to indicate operator error. If you get tired of hearing the beeper all the time, turn it off! (or stop making errors). This switch is saved by /SS.

Attribute D (/AD) toggles the degrees/radians switch for trigonometric functions. This switch defaults to 'degrees', but its current state is saved with /SS. Whenever trig calculations are made, the current state of this switch is used to determine whether to use degrees or radians to represent angles.

Attribute G (/AG) is used to change the character used for plotting histograms (see plot format - /FP or /WFP). The default value is the hash or pound symbol (#). You can change it to any other printing character. Hit RETURN when the character is what you want it to be. This command affects future printing only - not what is already on the screen. To re-write the screen with the new character, type /AM. The selected character is saved with /SS.

Attribute H (/AH) is a command which you may execute to delete all HELP messages from memory. The memory formerly used by HELP is then available for user space. Since the HELP messages can be very handy, don’t turn them off unless you really need the space.

If you frequently need lots of workspace, you can permanently turn off HELP with an option in the 'install.dc' command (see the section on System Configuration). If you need to call up a very large worksheet on the OS-9 command line when you call DYNACALC, you must permanently disable HELP messages with the 'install.dc' command.

To restore HELP messages you must leave DYNACALC and re-enter from OS-9. Don’t forget to save your worksheet!

Attribute L (/AL) toggles the 'Label entry mode' flag (defaults to off). When label entry mode is on, labels typed in one cell will automatically continue across the row, and will be entered into following cells as necessary. To use this mode, simply point to the cell where you wish the label to begin, then start typing. The cell address will be automatically incremented as soon as you type one character more than will fit in the current column. If you later change any of these column widths, you will have to adjust your labels (retyping an entire long message may be the easiest method in this case).

Attribute M (/AM) is a command used to re-write (Modify) the screen at any time. Its main use is with the graph character command (/AG).

Attribute O (/AO) - note the O is a letter, and not the number zero - toggles the switch that decides the order of calculation. Either the columns are done first (default), as A1, A2, A3...B1, B2, B3 or the rows are done first as A1, B1, C1....A2, B2, C2... The current setting is displayed as ‘C’ or 'R' after 'Mode=' on line 2 of the display. This switch can be very important on some worksheets, and of no concern at all on others. Just don’t forget about it. The C/R switch setting is saved by /SS. See Operating Tips for further considerations.

Attribute P (/AP) allows you to examine and/or change the setting of printer attributes, and will lead to another menu consisting of:

B C L P S W ?

(You can choose to send the 'printer' output to a text file on disk for later printing). Command B (/APB) toggles the flag that decides whether or not to print DYNACALC’s borders on the printer/textfile (default is 'off'). Command C (/APC) closes the current printer device or file (if any). The next time you request a printout of the worksheet (/P), you will be prompted for a device or file name. You would then respond with the name of a printer port (eg "/p" or "/p1") or a disk file (eg “fred” or “/d1/myfile”). Command L (/APL) lets you change the number of lines per page (default is 58). Command P (/APP) toggles the flag which decides whether or not to paginate the output (default is 'on'). Command S (/APS) allows you to use single (1) or multiple (2-8) spacing for the printed or textfile output. Command W (/APW) lets you change the printer line width (default is 80 characters). If you find yourself frequently changing to a particular configuration, remember that all DEFAULT values can be changed using “install.dc”. See the System Configuration section for details. All printer/textfile parameters are saved by /SS.

Attribute R (/AR) toggles the flag which controls DYNACALC’s automatic recalculate feature. When the flag is on (default), an 'A' is displayed after 'Mode=x', on line 2, and the worksheet is automatically recalculated after any value is changed. If you turn off the flag, an 'M' is displayed to indicate manual recalculate. Now the sheet will be recalculated only when you type '!' in the Ready mode. This flag is also saved by /SS.

Attribute S (/AS) reports the highest column/row address in use in your current worksheet. This is an easy way to keep track of the size or your sheet, and avoid forgetting about tables, etc., which might be hidden from view. /AS is also very helpful in managing available memory allocation in the Operating Tips section.

Attribute T (/AT) toggles the Type protection flag. When type protection is turned on, DYNACALC will ask 'Are you sure?' if you attempt to change a label or an expression. The idea is to prevent accidental changing of the 'guts' or your worksheet when you are typing in data. This feature defaults to 'off'. Its setting is saved by /SS.

Attribute W (/AW) lets you change displayed column width, and leads to another menu:

C W ?

which lets you elect to change the width of only the current column (/AWC) or or the entire current window (/AWW). The default width for individual columns is the current window column width, and the default width for all columns in a window is 9. All column width information is saved by /SS.

Blank Cell

This is an easy one. DYNACALC asks you if you really want to blank out the current cell. Answer "Y" or "N". Only the data in the cell is erased. The format of the cell is preserved.

Clear worksheet

Another easy one (maybe we should make it harder). This command /C deletes the entire worksheet. Make sure the worksheet is saved on diskette if it’s of any value to you. Then answer "Y" or "N".


The delete command lets you delete an entire column or row. DYNACALC asks you:

C R ?

to find out whether you want to delete a column or a row. If you can’t make up your mind, hit ESCAPE and think about it for a while (sorry, there is no 'un-delete' command). After the column or row has been removed from your worksheet, any references (in expressions) to cells in the deleted part are flagged with >ER< errors. You can tell whether an >ER< was caused by the delete or by operator error by pointing the cursor to the error cell in question. If a machine-generated error is present, the top line of the screen will display @ERROR? instead of the >ER< shown in the cell. Any references to cells beyond the deleted area are automatically adjusted to take into account the new column letters or row numbers . Don’t forget to take this into account yourself when typing in new expressions!

Edit cell

The edit cell command (/E) allows you to edit the contents of any cell. See the full description under Error Correction on page 7.


DYNACALC offers a number of display formats, and the format command allows you to select the one(s) to use. If entered directly from the main command menu (/F). the format selected applies ONLY to the current cell. If entered through the window command (/WF), the format applies to ALL cells in the current window, except cells with explicit format set individually. All window and cell format information is saved by /SS.

When you enter the format command, you will be prompted with:

C D G I L P R $ ?

Each of these letters represents a format to be described below.

Format C (/FC or /WFC) is continuous format, and is valid only for cells containing labels. Continuous format uses the character or characters entered in repetition to fill the width of the cell, regardless of how wide it may be now or later. A typical use for continuous format is to create borders between rows. For example, you might enter a dash ('-) as a label, and select continuous format for that cell (/FC). This would fill the cell with dashes (--------). Now use the replicate command (see below) to copy this cell into several others on the same row, and you have a nice border, and with only a few keystrokes. Other useful characters are period (enter as '.) and equals (=).

Format D (/FD or /WFD) is the default format. If the command is entered directly from the Ready mode (/FD), the current cell’s format will default to the format of the current window. If entered through the window command (/WFD), the default format of all the cells in the current window will be the system default format, which is the same as the General format (see below).

Format G (/FG or /WFG) is the general format. This format causes labels to be left-justified and numbers to be right-justified within each cell.

Format I (/FI or /WFI) is the integer format. Cells formatted this way will be rounded to the nearest whole number, and right justified within the cell. The rounding affects only the display, and not the internal representation of the number. If the cell is referenced in an expression, the cell’s original, unrounded, value is used.

Format L (/FL or /WFL) means left-justify. Numbers and/or labels will start at the left end of the cell.

Format P (/FP or /WFP) is the plotting format, which is used to create horizontal bar graphs (histograms) within your worksheet. The number in the cell is rounded to the nearest integer. and the resulting number is used to count graph characters as they are printed. For example, if a cell has a value of 2.4, its integer value is 2, so 2 graph characters will be printed in the cell. If the number is subsequently increased to 5.1, a total of 5 graph characters will be seen. The /AP command can be used to change the graph character.

Format R (/FR or /WFR) means right-justify. Numbers and/or labels will end exactly at the right end of the cell.

Format $ (/F$ or /WF$) is the money format, used mainly for representing money in pounds and pence. In this format. the cell’s value is rounded to the nearest penny, (0.01), and displayed with a decimal point and two following digits, even if they are zero. The rounding affects only the display, and not the internal representation or the number. If the cell is referenced in an expression, the cell’s original, unrounded value is used.


The insert command (/I) lets you insert a new (blank) column or row into an existing worksheet. Simply move the cursor to the column or row where you want the new one to be, and type the command. The new column or row will appear, and any references to cells beyond the inserted area will be automatically adjusted to take into account the new addresses. Remember this yourself when you type in new expressions.


The move command (/M) lets you move rows and columns from one place to another within your worksheet. You can do this manually, or with DYNACALC’s built-in sort feature.

The ascending sort command (/MA) causes DYNACALC to sort all or part of your worksheet in ascending numeric and/or alphabetic order. When you type this command, DYNACALC will ask you 'Range?'. Respond with the address of the first and last cells you wish to use as the sort key, separated by a period (.), and ending with RETURN. If you give two cells in a single column, that range of cells will be used as the key to sort all rows between the first and last addresses given (inclusive). In other words, the row whose cell in that column has the lowest value moves to be the first row in the chosen range, followed below it by the row whose cell in that column has the next lowest value, and so on. If you give two cells in a single row, that range of cells will be used as the key to sort all columns between the first and last addresses given (inclusive). Note that all cells in the same row (same column for row key) will be moved by the sort. If the sheet is laid out appropriately, this fact can be very useful.

The sort may be on numbers (values or expressions) or strings (labels), or both. Sequence is: alphabetic (case is ignored), numerics in label cells, and finally numbers (in alphabetic order). You can force a label to sort first by preceding it with '@' (enter as '@).

The descending sort command (/MD) works the same as /MA, but the order of the sort is reversed.

The manual move command (/MM) allows you to move an existing column or row to a new location in your worksheet. After you type this command, DYNACALC will ask you 'From...to?'. Respond by typing the address of any cell in the column or row to be moved, a period (.), then the equivalent address in the destination column or row. For example to move column C to column F, you could type 'C1.F1' or 'C3.F3' but not 'C1.F3' or 'C3.F1'. If you are moving columns, the row specified must be the same in each case; if you are moving rows, the same column must be specified. (That is how DYNACALC knows whether you want to move a row or a column).

As in the case of the Delete and Insert commands, any references to cell addresses changed by the move commands will be automatically adjusted by DYNACALC. When you type in new expressions, remember that some things have been moved around.

Printer Output

The printer output command (/P) is used to send a copy of your worksheet, or any part of it, to your system printer or to a textfile.

After you enter the /P command, DYNACALC will ask you for the name of the printer device or textfile to which output should be routed, but only if such a name has not already been entered. The default name is '/p' the parallel printer port. You can clear the name with the command /APC; the next time you use /P, you will again be asked for the output pathname. Once that question is dispensed with, DYNACALC will ask you 'Range?'. Respond with the cell addresses of the top-left and bottom-right corners of the area you want to send to the printer, separated by a period (.). Note that DYNACALC cannot print out a section of worksheet that is wider than your printer. If your worksheet is wider than your printer, you must print it out in separate parts.

In addition to the printer output name, there are five parameters that you can adjust to alter the way DYNACALC outputs to the printer: Borders (no/yes), number of lines per page, pagination (yes/no), multiple spacing (1-8), and page width. See attributes (/AP) section for details. Current settings are displayed before continuing.

If pagination is enabled, DYNACALC will ask you for a title. The string that you type in (terminate with RETURN) will be placed at the top of each page of the printout.

You can make the printer pause with the ESCAPE key. To resume printing, hit ESCAPE again. You can abort the printer operation by hitting RETURN while the printer is pausing.

If the output is sent to a textfile, the textfile created is in standard OS-9 format, with a single CARRIAGE RETURN character ($0D) at the end of each line. The file can be listed out to the printer when you are back in OS-9:

OS9: list myfile >/p

Maximum line length is 255 characters. Keep in mind that other OS-9 utilities may have further restrictions on maximum line length. The output will default to the working data directory, but of course you may specify a complete pathname if you wish.

Once you get the desired part of the worksheet written to the textfile, you may use /SX command to initiate a printer spooling operation, according to standard practice for your system. For example:

OS9> list myfile >/p&

Note that the /SX command displays the prompt "OS9>" rather than OS9’s own prompt “OS-9:”. The '&' at the end of the command line is an instruction to OS-9 to print out the file in the background while returning you to DYNACALC to get on with your worksheet.


The quit command (/Q) is used to exit DYNACALC. The normal exit is to OS-9 (/QO). Exiting DYNACALC will or course destroy your current worksheet, so make sure it’s saved on diskette if it’s of any value. DYNACALC will ask 'Are you sure?'. Answer "Y" or "N". You can also put your computer 'to sleep' (/QS). This will blank the screen until you hit any key to restore normal operation. You will find that your worksheet is intact.

You can also exit to OS-9 by typing a log-off character (CONTROL-D on most keyboards). If you do this, the current worksheet is automatically saved as 'dyna.xxxxx.cal' (xxxxx is your user id number) in your working data directory.


The replicate command (/R) lets you copy the contents or a cell or range of cells into another part of the worksheet. This means that you can avoid re-typing long expressions, etc., and thus spend more of our valuable time on other things.

When you type /R, DYNACALC will prompt you for a range of source cells (the source means the cell or range of cells to be copied). If you want to copy just a single cell, enter its address and hit 'RETURN' If the single cell you want to copy happens to be the current cell, just hit RETURN. Or, if the first of several cells you want to copy is the current cell, just hit '.' and the address of the last source cell, followed by 'RETURN'. For a range of cells, enter the first cell, a period (.), and the last cell, then hit 'RETURN'. If a range or cells is to be copied, they must all be in the same column or In the same row. You cannot replicate multiple columns or rows with a single command. You can transfer blocks of data with /S#S and /S#L (see the section on the /S command).

DYNACALC will now ask you for the destination. If the destination is a single cell, column, or row, type its address (not necessary if it happens to be the current address) and hit RETURN. If the source is to be copied a number of times, enter the first address, a period (.), and the last address, followed by 'RETURN'.

Next you are asked '(S)ame or (R)elative' for each value reference in the source. If you answer 'S', that reference will be copied literally into the destination cell(s). However, if you answer 'R', all occurrences of that value reference will be modified according to the position or the destination within your worksheet. For example. if you want to copy @SUM(A1...A5) from A7 to B7...F7, and you want separate sums to represent individual column totals, you would specify 'R' so that in cell B7 you would wind up with @SUM(B1...B5). and so on. If this seems confusing at first, try it. After a few times it will make sense, and you will develop the ability to get a significant amount of work done with just a few keystrokes.

You can copy all or part of any column or row to one or more places on your worksheet. To continue the example above, let’s say that there is data (values) in cells A1 through A5. We want to copy this data and the sum in A7 to another column. To do this, type “/R A1.A7 B1 'RETURN'” Now you will see a replica of column A in column B. Move the cursor to B1 and type /DC to delete column B. Then type "/R A1.A7 B1.F1 R". The contents of column A now fill columns B through F. Pretty neat, eh?

You should also be aware that when Replicate copies the contents of a cell, not only does it copy the label, value, or expression contained in the cell, but also its format. Therefore you can use replicate to change the format of a large number of cells at one time, without changing the window format.


The system command (/S) lets DYNACALC communicate with the rest of your computer, through the OS-9 operating system. Using /S, you can save and load worksheets, and do other system-related tasks.

The change-directory command (/SC) allows you to change the current data directory without leaving DYNACALC. /SC will ask you for the new directory name. Enter the name, then hit 'RETURN'.

The worksheet load command (/SL) loads a previously-saved worksheet into your computer’s memory. It DOES NOT CLEAR THE CURRENT WORKSHEET. Instead, the file being loaded overlays cells on an individual basis. Any cell that was unused (blank) on the sheet when it was saved will have no effect on the contents of the worksheet when it is re-loaded (if a cell had a specific format when it was saved, however, that will become the format of the target cell). Cells that are non-blank in the file will over-write existing cells. This gives you the powerful ability to combine worksheets. For example, you might have a pricing table in a diskette file, and then use that one table to overlay a variety of worksheets based on it. Then, when prices change (translated: increase), you have only one file to change. All /SL operations default to the working data directory. The file to be loaded must



XXX /SS saves the entire current worksheet on diskette. When you type this command, DYNACALC will ask for a filename, which defaults to the working data directory. If the file already exists, DYNACALC will



Any legal OS-9 command can be executed, even one ending in '&', which will start a background task. Just be careful to avoid starting tasks which send later output to your terminal, as that would spoil the appearance of DYNACALC’s screen.

When the OS-9 command is completed, DYNACALC will give you another 'OS9> ' prompt. At this point you can type another OS-9 command, or just hit 'RETURN' to return to DYNACALC, with your worksheet undisturbed.

The data storage command (/S#L and /S#S) allow you to save part (or all) of a worksheet in a text file format compatible with other OS-9 software, such as BASIC09, COBOL, PASCAL, RMS, and so on.

When you type /S#L, DYNACALC will ask you for a filename, then it will load the data from the specified file into your worksheet, beginning at the current cell. This means that you must position the cursor to the desired spot before typing /S#L. Before the data transfer occurs, DYNACALC will ask you if the data is to be loaded by column or by row. To load the data the same way as it was saved, type D for default. The load operation will usually affect only those cells being loaded whose XXX contents are non-blank. This permits you to overlay a worksheet



after loading DYNACALC , the default is by column. The


XXX containing errors



The Titles command (/T) controls the operation of horizontal and/or vertical titles. Titles are columns and/or rows set aside by the DYNACALC user (that means you) to identify important areas of your worksheet at all times. Titles do not scroll off the screen when the displayed area changes. This lets you easily see, for example, the name of the salesman who did so well in October, even though the salesmen names are in column A, and October is in column L.

When you call up /T, you get another menu:

B H N V ?

to which you respond with one of the title command letters, described in the following paragraphs.

Title command B (/TB) turns on both horizontal and vertical titles together. Before you type this command, place the cursor just below and just to the right of the intersection of the horizontal and vertical titles.

Title command H (/TH) turns on horizontal titles. Before you type this command, move the cursor just below the title row (below the bottom title row if you are using more than one). After you type /TH, try scrolling your data off the screen, and watch what happens to the title row(s). If vertical titles are already turned on, they will be left undisturbed.

Title N (/TN) selects No titles, and disables any that might be turned on.

Title command V (/TV) turns on vertical titles. Before you type this command, move the cursor just to the right of the title column (to the right of the rightmost title column if you are using more than one). After you type /TV, try scrolling your data off the screen, and watch what happens to the title column(s). If horizontal titles are already turned on, they will be left undisturbed.

Whenever the titles feature is in use, you will find that you are unable to move the cursor to any column and/or row being used as a title. To get the cursor into these areas, turn off titles (/TN), do what you have to do, then turn the titles back on. All title information is saved by /SS.


The windows command (/W) is one or the primary screen formatting controls. Normally, the screen displays a single window, or portions of the total worksheet. With the cursor movement controls you can move the window to any part of the worksheet. However, sometimes it is very handy to be able to see two widely separated areas of the worksheet at the same time. This is what the windows command allows.

In addition, there are two formatting commands built into the window menu: Display and format. These don’t really have much to do with the idea of two separate windows, but are at this command level because they each affect all cells in the current window.

When you type /W, you will be prompted with this menu:

D F H N S U V ?

to which you should respond with one of the following single-letter commands:

Window command D (/WD) toggles the value/formula display flag. This flag, which defaults to 'value' decides whether to print calculated values or actual data as entered. The primary use of the formula display mode is to tell at a glance whether a cell contains a formula or a constant. Of course, you could examine each cell by pointing to it, but the formula display mode gives you a whole window-full at a time. This mode affects the entire current window, and only the current window. That means that the other window can be set to the opposite display mode, and you can thus see the same area of your worksheet displayed both ways at the same time.

Window command F (/WF) is used to change the default display format for all the cells in the current window. See the format command (/F) for details.

Window command H (/WH) is used to create horizontal separation between the upper and lower portions of the screen. Each portion is then a separate window into the worksheet, and each can be moved and formatted independently of the other. Use the JUMP key (see 'Key Assignment Summary') to jump back and forth between the two windows. When you type /WH, the screen is split horizontally at the current row, so you may divide the screen into equal or unequal sections. The window in which the cursor resides is considered the 'current window'. Commands which affect a window will affect only the current window.

Window command N (/WN) selects no splitting of the screen, and returns to a single window display. The current window is unchanged.

Window command S (/WS) causes the two windows displayed to scroll synchronously. If the windows are divided horizontally, synchronization is in the horizontal direction; if they are divided vertically, they will then scroll vertically together. If there is only a single window this command is ignored.

Window command U (/WU) Unsynchronizes the motion or the two displayed windows. If there is only a single window, this command is ignored.

Window command V (/WV) is used to create a vertical separation between the left and the right portions of the screen. Each portion is then a separate window into the worksheet, and each can be moved and formatted independently of the other. Use the JUMP key (see 'Key Assignment Summary') to jump back and forth between the two windows. When you type /WV, the screen is split vertically at the current column, so you may divide the screen into equal or unequal sections. The window in which the cursor resides is considered the 'current window'. Commands which affect a window will affect only the current window.

Note that it is not possible to have both vertical and horizontal window division at the same time; only two display windows are allowed.

All information pertaining to window settings is saved by /SS, and will be restored upon loading a file with /SL.


The help command (/?) lets DYNACALC tell you all about itself. Most of the important information about DYNACALC in this manual can be displayed on your screen while you are using DYNACALC; in other words, the information is right there where you need it.

The main help command gives you information about the main command menu, and then lets you choose to ask for more information, or return to normal operation. Just follow the prompts at the bottom of each Help screen.

As you can imagine, all this text takes up quite a bit of room in your computer. If you need all the space you can get for a large worksheet, type /AH to delete all the Help messages from memory. Subsequent requests for Help will be ignored, unless you exit to OS-9 and reenter DYNACALC.

Whenever helps are enabled, any OS-9 error messages required will be printed in English. If helps are disabled, only the OS-9 error number will be displayed. Refer to your OS-9 User’s Manual for the error description.


DYNACALC has over two dozen built-in mathematical functions. As you probably know, a function is a predefined mathematical expression that produces a result value. In DYNACALC, most functions require one or more independent variables, furnished as arguments. The function then returns the result. A minority of DYNACALC functions, namely @ERROR, @NA, and @PI, require no arguments, and return a pre-defined value or condition.

Let’s use the square root function, @SQRT, as an example. This handy function requires a single numeric argument, and its return value is the square root of the argument. To generate the square root of 4, for example, you would type '@SQ4'. DYNACALC generates the extra characters to display the complete '@SQRT(4'. You could also type '@SQR4' or '@SQ(4' or '@SQR(4' or any of several other combinations. DYNACALC knows what you're up to, and does the right thing.

If you now hit RETURN, the function '@SQRT(4' is put into the current cell. From now on, each time the worksheet is recalculated, that function will be invoked. This can really waste some time if you have a lot of cells with functions of constant values, so what you do if all the arguments are constants (rather than cell addresses) is to evaluate the function once, then place the value of the function in the current cell. You do this by typing '!' after the typing function, but before the RETURN. The '!' causes the expression on the edit line to be evaluated, and replaced by the resulting value. This value is then, of course, a constant, which will never require recalculation.

DYNACALC functions are not limited to using constants as arguments, however. The arguments can just as well be expressions, results of other functions, and/or cell addresses. For example, the function '@SQRT(G5' will return the square root of whatever value happens to be in cell G5. If the cell contents change, for whatever reason, the function is recalculated. If you are interested in the value of a cell at the present time only and not subsequent changes, you can type '!' before hitting 'RETURN' and the function will be evaluated once, and replaced with its current value, which is then a constant. You are in full control. If you don’t require recalculation of a particular function, you don’t need to wait for it.

Most DYNACALC functions that accept a range of cell addresses as an argument (@AVERAGE, @CHOOSE @COUNT, @MAX, @MIN, @STDDEV and @SUM) will also accept any rectangular area of the worksheet, including any number of columns and rows. Just supply the addresses of the top-left and bottom-right cells at the extremes of the area desired. For example, '@SUM(B3...E8' would return the sum of the values of all cells B3...B8, C3...C8, D3...D8, and E3...E8. Because of their list-related operation, @INDEX, @LOOKUP, and @NPV will accept ranges of cell addresses in a single column or row only.

Note that whenever address ranges are required in functions or commands, the '...' is entered by typing a single period.

All DYNACALC operations, including functions, accept either upper-case or lower-case letters wherever an alphabetic character is required. The letter is always displayed as upper case in the function name.

DYNACALC’s trigonometric functions @COS, @SIN, and @TAN require angular arguments expressed in degrees or radians, depending on the current setting of the degrees/radians switch. The inverses of these functions, @ACOS, @ASIN, and @ATAN, return angles expressed in degrees or radians, also determined by the setting of the degrees/radians switch. This switch, whose default setting is 'degrees', may be toggled by attribute command /AD. When a worksheet is saved with /SS, the setting of this switch is saved, and will be correctly set when the worksheet is loaded with /SL.

HELP is available for DYNACALC functions by typing '/?@' in the Ready mode. Hit any key to see the second page. In the HELP messages, functions are listed by group. Here we list them in alphabetical order for ease of reference.

@ABS(x) is the absolute value function. This function returns the value of the argument with its sign forced to positive. This function is handy for checking to see if a number is negative. The expression '+H1-@ABS(H1' will be zero if the value in the cell H1 is zero or positive and non-zero if H1 holds a negative number.

@ACOS(x) is the arc-cosine function. This function returns the inverse cosine of the argument.

@ASIN(x) is the arc-sine function. This function returns the inverse sine of the argument.

@ATAN(x) is the arc-tangent function. This function returns the inverse tangent of the argument.

@AVERAGE(x...y) is the average, or arithmetic mean, function. This function returns the average numeric value of all the cells in the range x...y. The range need not be a single range but may be any combination of cells, ranges of cells, expressions (including functions), and/or constants. For example, the function '@AVERAGE(E5, R6...R89, 17, 23.5, @SQRT(A3), B7' would return the average value of the contents of cell E5, contents of cells in the range R6...R89, the constants 17 and 23.5, the square root of the contents of cell A3, and the contents of cell B7. Whatever you want to average in, include in the list of arguments. The function works by adding all arguments, then dividing by the number of arguments. Only those arguments representing numbers count as items, so blank cells and cells containing labels do not affect the average.

@CHOOSE(n,x...y) is a function that lets DYNACALC select a value from a list of two or more values. The first argument, n, is used as an index into the list of values x...y. For example, '@CHOOSE(A4, B5...E5' first looks at the value of cell A4. If it’s 1, the value of cell B5 is returned; if it’s 2, that of cell C5, and so on. But you are not limited to such a simple use of @CHOOSE. While the first argument must be a constant, expression, or a single cell address, the list of values x...y can be spread all over the worksheet. '@CHOOSE(6-H4,13,G4,H3...H12,B1...G1' would subtract the value of cell H4 from the constant 6, then use the difference as a pointer to the list consisting of the constant 13, cell G4. and values from parts of column H and row 1.

@COS(x) is the cosine function. This function returns the cosine of x, where x is an angle expressed in degrees or radians.

@COUNT(x...y) is a function that returns the number of numeric items in a list. @COUNT counts as described previously under @AVERAGE: only those arguments representing numbers count as items, so blank cells and cells containing labels do not affect the count.

@ERROR forces an >ER< error condition wherever it is used. This function is normally used with @CHOOSE, @INDEX, or @LOOKUP to report attempted accesses of invalid table entries. For example put @ERROR in cell B4. Then put '@CHOOSE(B1,B3...B5' someplace else. If B1 has the value 2, @CHOOSE will return >ER<.

@EXP(x) is the natural antilogarithm function. This function returns the value of e (2.718..., the base of the natural logarithm system) to the x power. This function is the inverse or @LN(x).

@INDEX(n,x...y,z) is used to return a value or label from a list or number of lists. The first argument, n, must be a value (rather than a label). but it may be a constant, cell address, or expression. This value is used as a comparison value for searching the range of cells specified in the second argument, x...y. The range must be a single range of cells in a column or row. The third argument, z, is optional, and specifies the column or row from which the returned value is taken. If the third argument is omitted, the returned value will come from the column just to the right of the column in the second argument or, if a row was specified in the second argument, from the row just below that one.

@INDEX is useful for extracting data based on an associated key. For example, you could pick out someone’s salary by referring to their name. It is pretty complicated for a written example, so fire up DYNACALC and load the sample worksheet “DEMO-IND”. This is a simple demonstration of @INDEX. Here we have a list of five numbers in column A, and two lists of five names each in columns B and C. By changing the value in cell A1 over the range of 1-5, you change the name displayed in B9. The @INDEX function is in B9, as you will see if you move the cursor to that location. The function appears as '@INDEX(A1,A3...A7'.

The selected name is returned by @INDEX from column B by default, since no third argument is given. Column B is used as the default because it is just to the right of the column used for the match search (column A). Now, while you're pointing at B9, type '/E' and use the editor to add ',C1' to the end of the function. When you hit return you will see the name change to the corresponding one from column C. You might try changing the ',C1' to ',C2' or ',C50' You will get the same results. All @INDEX is interested in is the column. As an exercise, try duplicating this arrangement on another worksheet using rows instead of columns for your lists. In that case, only the row number portion of the third argument is significant.

@INDEX works just like @LOOKUP except that the comparison is made for an exact match between the first argument and values in the second. See 'Operating Tips' for further considerations.

@INT(x) is the integer function. It returns the whole number part of the argument. The fractional part of the number is simply thrown away. Note that this is not the same as rounding. If you want to round, use @ROUND. Also note that @INT works exactly the same with positive and negative numbers, unlike the INT functions in some programming languages.

@LN(x) is the natural logarithm function. This function returns the logarithm of the argument to the base e (2.718...). This is the inverse of @EXP(x).

@LOG(x) is the common logarithm function. This function returns the logarithm of the argument to the base 10. The inverse of @LOG(x) is 10^x.

@LOOKUP(n,x...y,z) works just like @INDEX described above, except that the comparison between the first argument and values in the second is made for a 'greater than' condition rather than an exact match. See 'Operating Tips' for further considerations.

@MAX(x..y) is the maximum value function. It returns the greatest value found in the list x...y. The list can be simple or complex, just a as in @AVERAGE, described previously.

@MIN(x...y) is the minimum value function. It returns the smallest value round in the list x...y. The list can be simple or complex, just as in average, described previously.

@NA forces >NA< (not available) error condition wherever it is used. This function is normally used with @CHOOSE, @INDEX, or @LOOKUP to report attempted accesses of invalid table entries. For example, put @NA in cell B4. Then put '@CHOOSE(B1,B3...B5' someplace else. If B1 has the value 2, @CHOOSE will return >NA<.

@NPV(r,x...y) is the Net Present Value Function. It returns the Net Present Value at discount rate r for payback in range x...y. Load worksheet “DEMO-NPV” for a simple example. All the displayed values except that in cell D13 are arguments to the function. NPV is a financial planning tool whose explanation is far outside the scope of this manual. See any good, modern, book on business management for this information.

@PI returns the value of PI (3.14...), which is used in almost every branch of science and mathematics.

@ROUND(d,x) is the value rounding function, used to reduce the precision of calculation to a controllable degree. You might use @ROUND in some cases so that DYNACALC could duplicate exact results obtained by other calculators that round after all operations. The first argument, d, is a value equal to an exact power of 10 (.001, 1, 10, 1000, 1e6, etc) which specifies the degree of rounding. Allowable range is from 1e-9 to 1e9. The second argument, x, is the number to be rounded. Either argument can be a constant, cell address, or expression. Unlike the I and $ display formats, the @ROUND function actually changes the value of the cell in which it is used. Any subsequent calculation based on the rounded value will be affected.

@SIN(x) is the sine function. This function returns the sine of x, where x is an angle expressed in degrees or radians, depending on the state of the degrees/radians switch.

@SQRT(x) is the square root function. It returns the value of the positive number which, when multiplied by itself, equals the argument x.

@STDDEV(m,x...y) is the standard deviation function. This function returns the standard deviation of values in the range x...y, using method m. (Standard deviation is a statistical method for expressing by how much a set of values varies from the mean). Like @AVERAGE (arithmetic mean - see above): @STDDEV can be applied to any number of constants, cells or ranges or cells. If m is negative, the population method of calculation is used. If m is zero or positive, the sample method is used. Variance can be calculated by squaring the standard deviation. See any good reference on statistics for information on the application of this function.

@SUM(x...y) is the summation function. It returns the total value of all cells in range x...y. As in @AVERAGE the range may be any combination of constants, cell addresses, and ranges of cells.

@TAN(x) is the tangent function. This function returns the tangent of x, where x is an angle expressed in degrees or radians.

Arithmetic Operations

The building blocks of DYNACALC’s built in functions and user calculations are the basic mathematical operators plus (+), minus (-), times (*), divide (/), and exponentiate (^). These operators are used just as in everyday arithmetic, and can be combined in every imaginable way to do what you need to do.

The plus operator adds the two values (numbers), and yields their sum. The minus operator subtracts the second value from the first, and yields the difference. The times operator multiplies the two values to give the product. The divide operator divides the first value by the second to give the quotient. Finally, the exponentiate operator raises the first value to the power of the second value.

Note that all these operators are dyadic, that is, they require two operands. There is no monadic (single argument) minus operator as found in many programming languages. To negate a number, subtract it from zero (0-x). In other words, instead of typing '-G5', type '0-G5'. Negative constants (-3, -3.4, -2.5e8, etc.) are permitted, however.

All regular mathematical operations in DYNACALC are performed to full 16-digit accuracy. Transcendental functions are limited to about 15 digits for reasons of speed and memory consumption.

Numbers are limited to the range +/- 1.0e-37 to 9.999...e37. They may be entered in any format (commas are not permitted to be embedded, however), and will be displayed according to the room available in the current column. If a number has too many digits to be displayed completely, the cell will be displayed in scientific notation (if allowed by the current format). Falling that, the cell will be filled with '>>>>>>' to indicate overflow. Increase the column width (/AWC or /AWW) to see the number.

Remember that you can use the @ROUND function to reduce the precision of any calculation. This may be necessary to duplicate the operation of manually-operated calculators.

Operating Tips

Determining function ranges

Some DYNACALC functions such as @SUM, @AVERAGE, @MAX, @LOOKUP, etc. allow or require arguments to consist of ranges of cells within a column or row. For example, '@SUM (A1...A7' will return the sum of the value of cells A1, A2, A3, A4, A5, A6, and A7. However, due to the action of the Delete, Insert, and Move Commands, the address ranges may be automatically changed by DYNACALC at some time after you type them in. Of course, these changes are beneficial. Since the data has moved around on your worksheet, the equations affected by the moves need to be altered. Just be happy that DYNACALC is smart enough to do all this work for you.

You must, however, give careful consideration to the range boundaries if DYNACALC is to do what you want it to do. A simple example should be convincing: starting with a clear worksheet, type ten random numbers into cells A2...A11. Now in cell A13 put the function '@SUM(A2...A11'. Cell A13 now holds the sum of the ten numbers you entered, right. Moving the numbers around wouldn’t change the sum, would it? Right! Now rearrange the numbers by typing '/MAA2.A11' (ascending-sort move). The screen is re-written, and the numbers are put into ascending numeric order. But wait a minute! The sum in cell A13 changed, didn’t it? To see why, point to A13 and look at the function range. It’s not 'A2...A11' any more, is it?

If you look carefully, you will see that the new range limits are the cells holding the values that were previously at A2 and A11. When DYNACALC moved these cells - as you instructed it to do - it also updated all expressions to contain their new addresses. How do you get around this? Easy. Just put a blank cell (or one holding a label) on either end of the range, and INCLUDE THOSE BLANK CELLS when you type in the range for the sum (but not in the range for the move). Clear the worksheet and try it again, this time giving the range as '@SUM(A1...A12'. Now when you move things around. the sum won’t change.

The above information applies to all functions using column or row ranges. Remember, a cell containing a label looks just like a blank cell in these cases, so your border lines will work nicely as range limits.

Moving blocks of data

The move command (/MM) will move only a single column or row at a time. Of course, you could use several /MM’s to move several adjacent columns or rows. But what if you want to move only the bottom half of several adjacent columns? Or if you want to move part of a few rows? You can’t use /MM because that will move only entire columns or rows.

To move a rectangular block of data from one part of a worksheet to another, you use the data storage commands /S#S and /S#L. /S#S is used to save any rectangular area of any worksheet to a disk file, then /S#L is used to load it back in at any starting point on the same or any other worksheet.

Setting format of an entire column

There are two format commands in DYNACALC: the window format command (/WF) and the cell format command (/F). Unfortunately there is no single command to change the format of an entire row or column while leaving the window format undisturbed.

However, there is an easy way to do just that. Set the first cell of the column or row to the desired format with /F, then replicate that cell to the range of cells where the format is desired. The replicate command (/R) copies not just the cell contents, but also the current cell format, to the target cells.

But what if you have already entered a column of data before you decide to change the format? Replicating the first value throughout the range will replace all your data with copies of the first value. Not too useful. To get around this, DYNACALC lets you use /R to copy the format of a BLANK CELL into a range of cells without changing the data in the target cells. Simply set the format of the blank cell as desired, then use /R to move this format to the column or row of interest.

Order or calculation

Whenever the worksheet is recalculated by DYNACALC, a certain order is followed. In most cases, column order is used. In other words, A1 is calculated first, followed by A2, A3, to the end of column A, then B1, B2 and so on. This is the default order of calculation, and is indicated on line 2 of the display by 'Mode=C,x'.

The other choice is to calculate by rows, as A1, B1, C1, etc., A2, B2, C2, and so on. You switch between these two options with /AO. Line 2 will display 'Mode=R,x' when row order is in use. Note that the calculation order is saved when a worksheet is saved to disk with /SS.

The idea is to avoid forward references whenever possible. That is, the value of any cell should normally not depend on the contents of any other cell whose value hasn’t yet been calculated. Sometimes forward references are desirable, as in some successive approximation formulas, but usually they are bad news, because the calculations may not have come out as you intended.

You can tell if there are forward references in your worksheet by repeatedly calculating the sheet without changing any data. Do this by hitting the '!' several times, and watching suspected cells. If they change in value, there is a forward reference somewhere in the sheet. Try changing the order of calculation (/AO) to see if the forward reference disappears. If not you must look further. The formula dump mode (toggled on/off by /WD) can be very useful for further searching. If you don’t see any changes anywhere on your worksheet when you hit '!' you have no forward references.

Speeding things up

Although DYNACALC is very fast, there may be cases where you need to do a great deal of calculating, and you will then notice some delays. There are a few things you can do to assure maximum speed for a given application. First, plan your equations for simplicity; avoid recalculating the same value over and over - do it once and stick the answer in a cell, then reference that cell. Avoid calculating things like '1/(2*@PI)' over and over again. If you need a constant like this frequently, type it in on the edit line, and hit '!' before transferring to a cell. This will calculate the value right then, and the resulting constant can then be stored.

Whenever you need to enter several values into a worksheet containing lots of arithmetic, turn off the automatic recalculation feature (toggled on/off by /AR). Hit '!' in the ‘Ready’ mode whenever you want to recalculate, or type /AR to go back to automatic. Line 2 will show 'Mode=x,A' or 'Mode=x,M' to indicate Automatic or Manual recalculate.

Automatic cursor advancing

Normally when you hit RETURN to enter the contents of the edit line to the current cell, the cursor stays positioned at that cell so that you can change it again if you want. To enter the value and advance to the next cell (in any direction), you hit an ARROW key. Wouldn’t it be nice if you could use the 'RETURN' key instead? Certainly, so DYNACALC allows that, too. To get into this mode, just hit any ARROW key to enter the first cell in a series. Now subsequent cells can be entered just by hitting 'RETURN', and the cursor will advance in the same direction as your initial ARROW key. To get out of this mode, just hit 'RETURN' while the ‘Ready’ prompt is showing.

Pointing to cells

Don’t forget - whenever DYNACALC is expecting a cell address, you have the option of typing the address manually, or POINTING to the desired cell with the ARROW keys. This can save time and eliminate errors. Watch the edit line...as you move the cursor, each cell’s address will appear in the expression or command argument, and will automatically change as you move in any direction. When you reach the desired cell, proceed with the operation as though you had typed in the address manually. The cursor will return to where it was before you started 'pointing'.

Incrementing cell values

Normally when you want to change a cell’s contents you point to it, and type in the new value. But what if the value is 4876.39 and you want to decrease it by 20.00? Who needs to type in all those digits? Not you, certainly. You have DYNACALC, which allows you to point to a cell, hit the '#' key, which will transfer the value of that cell to the edit line, then use arithmetic on the current value. To add 20.000 to a cell, for example, you just point to the cell, then type '#+20' and hit 'RETURN'. Any other arithmetic operation could be used as well.

Using @INDEX and @LOOKUP

These two powerful functions are very similar. They are both used to compare a supplied value with values in a table; only the comparison itself is different. @INDEX looks for an exact match, while @LOOKUP checks for a 'greater than' condition. @LOOKUP is useful for checking tables to find the range applicable to a particular comparison value. For example, a table might list discount percentages for quantities 1, 2-5, 6-10, and 11-99. If the desired quantity is 7, that would be associated with the 6-10 range. @LOOKUP does this by returning the value or label associated with the 6-10 entry. Obviously an exact match would be useless here.

@LOOKUP fails when used in combination with @MIN, however. This is because the comparison value will never be 'greater than' any of the table entries. This is one case when the exact matching comparison of @INDEX is most valuable. As an example, '@INDEX(@MIN(B6...B20),B6...B20,A1' would return from column A the value or label associated with (in the same row as) the lowest-value entry in the range B6...B20.

Memory conservation

DYNACALC allows your worksheet to have up to 256 columns or up to 256 rows. It doesn’t take a mental giant to figure that a given worksheet can’t have both 256 columns and 256 rows; 65536 cells is a little beyond the range of a 6809 computer. With 'helps' disabled (in an OS-9 level one system), there is about 21k of workspace available, or room for about 1750 numeric cells. Level two systems allow about 36k of workspace, or room for about 3000 numeric cells.

How can you tell how much memory a cell takes? Simple...just watch the 'Used memory' indicator on line 2 of the screen. You'll notice that the used memory rises a certain amount each time you put some data in a cell. Each active cell requires a two-byte pointer, plus a variable amount of memory for the actual cell contents. Any numeric entry uses a total of 10 bytes (8 for the number, and 2 for the pointer). Any label uses x+2 bytes, where x is the number of characters in the string. An expression uses 2 bytes for its pointer, 2 bytes for each cell reference, 1 byte for each function call, 8 bytes for each numeric constant (even 0 or 1), and 1 byte for any other characters (commas, parentheses, etc.). In addition, DYNACALC maintains a table of all cells in the active area of the worksheet (as reported by /AS). Each cell takes up two bytes in this table.

Now one fact that should be immediately obvious from the above is that you should avoid using large numbers of numeric constants in expressions. If a value is used repeatedly in lots of expressions, put it into a cell, and use the cell address instead.

Since the label entry mode (see /AL) makes it so easy to enter long strings, you may be tempted to enter your borders that way. This will use up more room than necessary. If you think you need this space, just put in one border character, set continuous format in that cell (/FC), then replicate (see /R) to the border area(s). This will also expand automatically if you later change column width(s).

Another important consideration is that DYNACALC allocates worksheet space in rectangular areas only. For example, if your sheet has an active cell at H27, all cells from A1...A27 through H1...H27 are put into the cell table at two bytes per cell. This means that a single entry, poorly placed, could eat half the available memory. The idea is to keep your worksheet as compact as possible, and to avoid scattering entries around. Use /AS to see the current size of your worksheet at any time, and try to keep new entries within this range. This will result in efficient usage of available memory.

If you delete extreme-right columns and/or bottom rows, space is still reserved for them (try /AS to see for yourself). To free up this unneeded space for other uses, save your worksheet (/SS), clear it from memory (/CY), and reload it from scratch (/SL). Now try /AS and see how the sheet has shrunk. You will also notice that the free memory is greater than before.

Making your worksheet bullet-proof

You never mess up a worksheet once it’s set up, do you? Not very often. But what about your helper(s)? How many times have you had to demonstrate that you're not SUPPOSED to type in part numbers in a title row? DYNACALC has a number of features built in to protect your worksheet from accidents.

First or all, put any necessary operating instructions off to the side where they will be seen by the operator. Hopefully you will be able to find room in the title areas. Use the titles command to turn on column and/or row titles. Then you can’t even move the cursor into those areas. Then, turn on the type-protection feature (toggled by /AT). This will prevent accidental changes of any cell from one type to another. Next, set the window division (if appropriate for your worksheet), and make sure the window formats are the way you want them. Make sure all your columns are wide enough to display worst-case data without overflow. Then put the cursor at the place most likely to be used to begin data entry, and save the worksheet on diskette. When it is reloaded, all the above things are ready to go, and hopefully your operator will be able to breeze right through the job you have set up.

You can make it even easier by putting a command like 'dynacalc inventory' in your startup file, so that the operator need only login to get going.

DYNACALC Error Messages

>AE< Argument error.

>D0< Divide by zero attempted.

>ER< General purpose error.

>EX< Exponent too large.

>HO< Holder overflow error.

>LN< Negative or zero logarithm attempted.

>NA< Not available.

>NR< Negative root attempted.

>OV< Arithmetic overflow error.

>RE< Reference error.

>RN< Range Error.

>SN< Syntax error.

Machine-generated errors are displayed as @ERROR? on the top line of the display, when pointed to.

Screen Layout

Mode=C,A  Memory=xxxxx Ready

    [  A  ] [  B  ] [  C  ] [  D  ] [  E  ] [  F  ] [  G  ] [  H  ]

This is how your screen will look like when DYNACALC takes over.

Note that 'A1' is displayed in the top left corner. This means that the cursor is currently at cell A1. As you move the cursor with the ARROW keys or the 'Goto:' command, this value will be updated. You can tell at a glance at the top left corner of the screen exactly where the cursor is.

The balance of line 1 is used to display the contents of the current cell. Since when you start up DYNACALC (or clear an existing worksheet by typing /CY) the current cell (A1) is empty, nothing will be seen here.

Line 2 is used to display general information to the operator. The message 'Mode=C,A' means that the current mode is '(calculate Columns first', and 'Automatically recalculate after any numeric entry'. The attribute command can be used to change these modes. '/AO' will change the order calculation, and '/AR' will toggle automatic recalculation on/off.

Also displayed on line 2 is the amount of system memory used. You will notice this number increase as your worksheet gets larger.

The final message on line 2 at this time is ‘Ready’, which indicates that DYNACALC is ready to accept commands or data entries. If you type ‘/’ to enter command mode, the ‘Ready’ will be replaced by the command menu.

The third line, blank at this time, is called the edit line, and it is here that you enter data before transferring it into a particular cell. Just point to the desired cell with the cursor, and start entering your data. It will automatically be displayed on line 3.

Columns, Rows, and Cells

Mode=C,A  Memory=xxxxx Ready

    [  A  ] [  B  ] [  C  ] [  D  ] [  E  ] [  F  ] [  G  ] [  H  ]
 1- Cell A1  Col B                                   Col G
 2-          Col B                                   Col G
 3- This is row 3, for example, row 3....row 3...row 3................
 4-          Col B                                   Col G
 5-          Col B          Cell D5                  Col G
 6-          Col B                                   Col G
 7-          Col B                  Cell E7          Col G
 8-          Col B                                   Col G
 9-          Col B                                   Col G
10-          Col B                                   Col G
11-          Col B                                   Col G
12-          Col B                                   Col G
13-          Col B                                   Col G
14-          Col B                                   Col G
15-          Col B                                   Col G
16- This is row 16, for example, row 16....row 16...row 16..
17-          Col B                                   Col G
18-          Col B                                   Col G
19-          Col B                                   Col G
20-          Col B                                   Col G
              etc                                     etc

The cell address, or location is given by the column and row it intersects. Thus Cell D5 intersects both column D and row 5.

The current cell is always the cell to which the cursor points, and whose address is displayed at the extreme top left corner of the screen.

It is possible to have up to 256 rows or 256 columns, depending on available memory. Rows are numbered from 1 to 256 and columns are lettered from A-Z, then AA-AZ, BA-BZ, and so on up to IA-IV. The cell in the far bottom right corner of the DYNACALC worksheet is therefore IV256.

Display shown is from a screen with 24 rows of 80 characters. Actual number of columns and rows depends on characteristics of your terminal.

System Configuration

The 'install.dc' utility

Each time you enter DYNACALC from OS-9, two files are loaded into memory: 'dynacalc' itself, and 'dynacalc.trm', which customizes DYNACALC to your system. Both files are loaded from the current execution directory (see the description of the 'chx' command in your OS-9 manual). The 'dynacalc.trm' file contains information about your screen, keyboard, and printer. The version of 'dynacalc.trm' supplied on your DYNACALC disk has been set up for your Dragon computer keyboard and screen, and for an 80 column printer on the parallel printer port '/p'.

The program 'install.dc' allows you to change the printer/textfile defaults and the printer on/off strings.

There are six printer/textfile parameters. First is the Border flag, which tells DYNACALC whether or not to print the column and row indicators. Normally you will want to leave the borders off, but they can be very helpful in troubleshooting a worksheet, or sending a copy of a useful worksheet to others (maybe even for publication). You can also control whether or not DYNACALC paginates its output. Your printers capabilities will help you decide this one. If pagination is enabled, the number of lines per page becomes important. For regular size paper (11 inches long), use 58 lines per page. Maximum is 255 lines. You can also set DYNACALC to multiple spacing of printed (or textfile) output. Finally, you have control over the width of the printed (or output) line. In general, this should be set to as high a value as your printer will permit. Maximum is 255 characters per line. Finally, 'install.dc' lets you define the default printer driver name. The standard printer name is '/p', but you may use any valid name you wish, such as '/p1' for a serial printer port.

To modify 'dynacalc.trm' for your printer, call up 'install.dc':

OS9: install.dc

'install.dc' will then ask you several questions about your printer, and will use your answers to modify the 'dynacalc.trm' file, (which it expects to find in the current execution directory, normally '/d0/cmds').

Using Data Files

DYNACALC can read and write OS-9 data files, with it’s /S#S and /S#L commands. All such operations default to the working data directory. But of course you may override the default by typing in a more complete pathname.

The data file format is very simple. It is a standard OS-9 text file, which can be read or written to by any system software as a simple sequential file. Worksheet data (number and/or strings) is put into this text file one line per worksheet cell.

Here’s a simple example:

    [  A  ] [  B  ] [  C  ] [  D  ] [  E  ] [  F  ] [  G  ] [  H  ]
 1- STRING       34                   5.6e9                 THE
 2-    1.23    27.5                 MESSAGE               6 END

The command /S#S was used to save the block A1...H4 (any rectangular area of the worksheet can be used). Here is the resulting data file:

*DYNACALC Data file January 26, 1983	this is a comment line
/Col							/C indicates saved by column
STRING						first cell contents (A1 )
1.23							next cell in column (A2)
@							@ indicates end of column
34							first cell in next column (B1)
27.5	 						next cell in column (B2)
>							>indicates blank cell (C1)
>							C2
>							Dl
>							D2
5600000000						E1 full precision always saved
>							F1
>							F2
>							G1
6							G2 may be constant or calculated value
THE							H1
END							H2

This same simple format is used for both saving and loading; DYNACALC can always read what it has written. When you are preparing other programs to write a data file for DYNACALC, however, there are a few additional options at your disposal.

First, DYNACALC always puts a '>' symbol at the beginning of any data file line representing a blank cell. Such a line, when read back into a worksheet. will clear the previous contents of that cell. However, if the textfile line is completely blank, the contents of that cell will be left undisturbed. This permits you to overlay other data if desired. This also means that you cannot leave blank lines in your data file without affecting the worksheet. Any line beginning with an asterisk will be ignored, if you want to space things apart, or include comments.

The '@' symbol can be followed by a 'skip count', which is a decimal number optionally used to indicate to DYNACALC how many columns (or rows) to skip before entering the next column (or row) of data.

The first non-comment line in the file should begin with '/C' or '/R' to indicate how the file is to be loaded. If this indicator is omitted, DYNACALC defaults to loading the same as the last /S# operation.

You may sometimes need to input a string which begins with a number (an address, for example). If you don’t include a leading quote ('), an error will be generated. DYNACALC will 'swallow' the quote, so it won’t clutter up your worksheet.

If a format error is detected during an /S#L operation, loading will halt at the bad cell, and the cell’s contents will be displayed on the edit line, with the cursor pointing to the problem. If you wish, you can correct the error, as DYNACALC has put you into the edit mode. (Note that at this point, inserting a single quote at the beginning of the line will NOT allow you to load the line as a label, since DYNACALC has already decided that it’s a number). Then hit RETURN to continue loading. If you prefer, just hit ESCAPE. The loading operation will be terminated, and you can check the sheet to see how much of the file was loaded. You can then use the OS-9 editor or other utilities to remedy the problem.

If you want to transfer data from an RMS data base to a DYNACALC worksheet, set up a 'xxx.rep' file for RMS REPORT including lines like these:

L 1,1 ;
T “/Rows”@1 ;
P NAME@1 ;
P CITY@1 ;
P “'”@1 STREET@2 ;
P “'”@1 PHONE@2 ;
P “@”@1 ;

Of course, getting data back into the RMS file isn’t quite that simple. For this you need a program (possibly in BASIC09) to work out where in the 'xxx.rms' file each record needs to go. DYNACALC will give you a text file, but the rest is up to you.


This tutorial is intended to show you the commonly used features of DYNACALC, and to make you feel more at ease about using DYNACALC for the first time. We will use an example worksheet supplied on your DYNACALC disk. This tutorial is not intended as a substitute for careful reading of the whole manual - which we suggest you do once you have worked through the tutorial - and we will not by any means be covering all the features of DYNACALC. We suggest that you make frequent reference to the Key Assignment, Command, and Function summaries at the back of the manual.

Assuming that you have made a backup copy of your DYNACALC disk (see the section Getting Started), place this copy in drive 0. Change your execution and data directories to this disk:

OS9: chx /d0/cmds ; chd /d0

If you are using a Dragon 64 and you are not already in the 51 characters by 24 lines screen mode, change to this mode with:

OS9: go51

and call up DYNACALC:

OS9: dynacalc

DYNACALC will display its 'Hello' message - hit the SPACE key to continue. Now DYNACALC is displaying a blank worksheet. Let’s consider the various parts of the display. Most prominently we can see the borders, showing the rows and columns, something like this:

    [  A  ] [  B  ] [  C  ]

The letters - A, B, C etc - are the columns, and the numbers - 1,2,3 etc - are the rows. Thus the top left hand 'cell' has address A1. Notice the flashing cursor in this cell? The cursor tells us which cell we are currently 'pointing' at. This is the cell whose contents we can display and change. Notice that the cell address is displayed in the top left hand corner of the screen. Hit the RIGHT-ARROW key (see the Key Assignment Summary section for the RIGHT-ARROW key on your keyboard). You will see the cursor move right by one cell, into cell B1. Notice that the address displayed in the top. left hand corner has changed. There are four ARROW keys - UP, DOWN, LEFT, and RIGHT. Practice moving around the screen with them.

On the second line of the screen there are three messages. The rightmost one is the ‘Ready’ prompt. This tells you that DYNACALC is ready for a command. The middle message tells you how much memory the worksheet is taking up. With the HELP messages enabled, as they are now, even with an empty worksheet we are using over 8000 bytes of memory. The message on the left - 'Mode=C,A' - is telling us the row/column Calculation order, (this is explained more fully in the section on Commands), and that recalculation of the worksheet is Automatic whenever we change anything. The third line of the screen is blank. This line is used to display the content of the cell as we are entering or changing it, and for some of DYNACALC’s messages.

Let’s go straight into entering some data and seeing its effect on the worksheet. Hit the HOME key to return to cell A1. Now type "23", (don’t type the quote marks - we will use them to show you exactly what we want you to type). You will see "23" appear on the third line of the screen as you types Use the BACKSPACE key to correct any errors you make. When you hit the "2", DYNACALC will display 'Value' in place of the ‘Ready’ prompt. This is to tell you that DYNACALC knows you are entering a Value. (a number), rather than a Label, (descriptive text), or an Expression. Now hit RETURN. You have entered "23" into cell A1, and DYNACALC is displaying the "23" in that cell. Also, on the first line or the screen you will now see

A1 (V) 23

DYNACALC is informing you that the cursor is at cell A1. and that the cell contains a Value of 23. Move to cell B1 and enter "45" (don’t forget the RETURN). This is tame stuff, and slower than writing the numbers on graph paper. The power of DYNACALC lies in its ability to do calculations for you. Move to cell C1 and enter "+A1+B1" (and RETURN, of course). The “+A1+B1” appeared on the third line, (the first “+” was just to tell DYNACALC that we were entering an expression), but "68" has appeared in cell C1. The "A1+B1" is known as an 'expression', and instructs DYNACALC that cell C1, the cell into which we entered the expression, should contain the sum of cells A1 and B1. You will see on the first line of the screen the expression you have entered, with '(E)' to indicate an Expression. Now move back to cell A1, and enter "12". You have changed the contents of cell A1 to "12" as you would expect, but cell C1 has also changed to reflect the new sum of A1 and B1 - "57". Imagine how easy this will make cash forecasting! If you set up a complicated cash forecast on paper. and you want to try moving a few purchases around to see how it will affect your bank balance, it’s a lot of work. With DYNACALC, a few keystrokes and the new balance is instantly displayed!

It’s time to try one or the example worksheets, which will give you a better idea of how DYNACALC’s features can be used. First, we must clear the present worksheet, which allows us to introduce the concept of a DYNACALC command. Hit "/", the command key. You will see the ‘Ready’ prompt replaced by the main command menu:

Command: A B C D E F I M P Q R S T W ?

DYNACALC is asking us which command we want. Before we enter the command to clear the worksheet, we can try out DYNACALC’s HELP facility. Hit "?", the HELP key. You will see the worksheet replaced by a screenful of help messages about each of the commands. We won’t go through these - you can look through them later at your leisure. Suffice it to say that each DYNACALC command menu has its own HELP messages, which you can call up with the HELP key whenever you are not sure about how to use one of the commands. For now, hit the ESCAPE key to return to the ‘Ready’ prompt. Hit "/" to bring back the main menu, followed by "C", the Clear worksheet command. DYNACALC will ask you if you are sure you want the worksheet cleared out. Answer "Y" (for Yes), and you will be presented with a clear worksheet.

Now we can load in a worksheet. Hit "/" to get the main command menu, and "S" to get the 'System' sub menu:

C L S X # ?

We want the "Load worksheet" command. so hit "L". DYNACALC will ask you for the name of the worksheet you want to load. Respond with "demo1" followed by RETURN. 'Demo1' is an example worksheet supplied on your DYNACALC disk - It represents a simple business cash flow for a twelve month period.

You should now see a much fuller display on the screen, with months along the top, (all twelve are in the worksheets but some are off the screen at present), and various items of expenditure and income down the side. These are titles, and you will find that you cannot move the cursor into those cells. Also, if you cause the display to scroll, by moving to a cell that was not initially visible on the screen, (try moving off the right hand edge of the screen), the titles do not move. How did they get there? They were typed in as usual, but this worksheet has titles turned on. Turn them off, with "/TN", and move to cell D1, which contains the label "MAR".

[Aside: Cells can contain three types of data – numbers, expressions, and labels (descriptive text). If a label starts with a numeric character or an arithmetic operator, precede it with '(single quote) to avoid DYNACALC thinking of it as a number or expression. If an expression is to begin with a cell address, precede it with a + (plus sign), to avoid DYNACALC thinking of it as a label].

You will find now that you can change the contents of the cell. Try it - then restore the cell to "MAR". Turn titles back on by moving to cell B2, (the top-leftmost cell inside of the titles), and entering "/TB".

The worksheet is fairly straightforward. The incomings and outgoings for each month are added up for the year in column N. You can see what expressions have been used by moving to cell N2 and entering "/WD", followed by RETURN in response to "Formula dump on". This causes the expressions in the cells to be displayed rather than the results of the expressions. In cell N2 the expression is “@SUM(B2...M2)” that is, the sum of cells B2 to M2, (B2,C2,D2,E2,etc). “@SUM” is a DYNACALC 'function', giving as its result the sum of all the cells specified. DYNACALC has many functions - see the DYNACALC Function Summary section. Expressions can be as long and complicated as you like. They may be too long to be displayed in the cell, in which case "/WD" will not show you the whole expression. To see the whole expression, move to the cell containing the expression, and the expression will be displayed on the first line of the screen.

You can use “/WD” again to return to the value display mode, but leave DYNACALC in formula display mode for the moment. Let’s look at how the worksheet has been arranged. We shall look over a part of the worksheet - you can go over the rest at your leisure. Use the HOME key to return to cell B2. The expression "B12/12" means the contents of cell B12, (the yearly rent). divided by 12 to give the monthly rent.

Cell C2 has the expression "B2", that is, cell C2 is to contain the same value as cell B2. Cell D2 has "C2", and so on. With this arrangement, if the monthly rental changes, then by entering the value of the new rent in the right month you automatically update all succeeding months. Try it - turn value display back on with "/WD". Move to cell F2, and enter a new value. (You can mess around with the worksheet as much as you like - “/CY” to clear the worksheet, followed by "/SL" and "demo1 RETURN" will load in the original worksheet again).

Move to cell M2 and enter “/WV”. The worksheet is now split vertically into two halves called 'windows' (because they are windows looking into the overall worksheet). You can move from one to the other with the JUMP key. Try moving the cursor off the edge of a window - for instance, by moving left while in the right hand window. You will see the windows scroll independently of each other. In this way you can keep the totals (in column N) in view in the right hand window, and scroll through the months in the left hand window. You can turn windows off again with "/WN".

We will demonstrate two more commonly used features of DYNACALC before leaving you to read through the rest of the manual and try things out on the screen. Play around with the worksheet. Make as many changes as you like. Now enter "/SS". This is the command to save the worksheet on disk. DYNACALC will ask you for the file name. Answer “myfile” and RETURN. DYNACALC will save the worksheet on disk in a file called 'myfile'. Now clear the worksheet, (remember - "/CY") and load your saved worksheet in with "/SL myfile RETURN". Just to show you that it does work.

Lastly, we can print out the worksheet. Make sure your printer is correctly connected up and turned on. DYNACALC starts off by assuming that your printer is on the parallel printer port '/p'. If it is not - for instance, if it is on the serial port '/p1' - turn off the current setting with "/APC". Also, if your printer is less than 80 characters wide, you must use “/APW” to set the width. Now print the worksheet with "/P". If you had turned off the current printer name with “/APC”, DYNACALC will ask you for the new name. Answer with the name you want, for instance “/p1” (RETURN) for the serial printer port.

To exit DYNACALC and return to OS-9, type “/QOY” (letter “O”).

Now we have given you an introductory tour of DYNACALC. DYNACALC is a very powerful tool, with many more features than we have shown here. We suggest that you read carefully through the rest of the manual, trying out things as you read about them. This may be tedious at first, but when you can use DYNACALC well you will find it an invaluable tool, and wonder how you ever managed without it! Have fun!

DYNACALC Function Summary

Type @ to enter a function. Parenthesis input is optional. You need type only the first 2 letters of the function name (3 for COS, INDEX, and LOOKUP).

ABS (x)

returns absolute value of x.

ACOS (x)

returns the arccosine (inverse cosine) of x.

ASIN (x)

returns the arcsine (inverse sine) of x.

ATAN (x)

returns the arctangent (inverse tangent) of x.

AVERAGE (x...y)

returns the average value from range x...y.

CHOOSE (n,x..y)

returns the value of the nth cell in range x...y.

COS (x)

returns cosine of x.

COUNT (x...y)

returns number of cells in range x...y.


returns >ER< error message (general use).

EXP (x)

returns e (2.718...) to the x power.

INDEX (n,x..y,z)

returns value adjacent to first cell equal to n in range x...y.

INT (x)

returns the integer part of x.

LN (x)

returns natural (base e) logarithm of x.

LOG (x)

returns common (base 10) logarithm of x.


returns value adjacent to first cell greater than n in range x...y.

MAX (x...y)

returns the greatest value from range x...y.

MIN (x...y)

returns the smallest value from range x...y.


returns >NA< (not available) error message.

NPV (r,x...y)

returns the net present value at rate r from range x...y.


returns 3.141...

ROUND (d,x)

returns x rounded to nearest d (d must be a power of 10) (10e-9 < d < 10e9 )

SIN (x)

returns sine of x.

SQRT (x)

returns the square root of x.

STDDEV (m,x...y)

returns standard deviation of data in range x...y
m sets method used: <0 =population; >=0 =sample.

SUM (x...y)

returns sum of cells from range x...y.

TAN (x)

returns tangent of x.

NOTE: Third argument (z - cell address) in @INDEX and @LOOKUP functions is optional. If present, causes value returned to be taken from column or row given. If z is omitted, value is returned from adjacent column or row.

DYNACALC Command Summary

Type / to enter the command mode when you have the DYNACALC ‘Ready’ prompt. DYNACALC will display the primary command menu. Follow this with the key for the command you require. Several commands require an additional key or keys. These commands prompt you with subsidiary menus.

For example, to toggle the degrees/radians setting, type /AD.

A 'toggle' command is one that reverses the current setting of something. For example, if you are in 'degrees' mode and you enter /AD you will go into 'radians' mode. Enter /AD again and you will be back in 'degrees' mode.

At any level, typing ? will display the help messages for that command.






Enter command mode




Toggle bell on/off



Toggle degrees/radians degrees



Select graphics character


Delete help messages


Toggle label entry mode

single cell


Re-write the screen


(letter O) Toggle row/column order





Toggle border print



Close present print device


Set lines per page



Toggle paginate on/off



Select printout spacing



Set printer width



Toggle re-calculate mode



Report highest row/column


Toggle type protection setting



BLANK (erase) a cell


CLEAR (erase) the entire worksheet


DELETE (erase) an entire row or column


EDIT a cell


FORMAT cell (or window if /WF)


Continuous format (labels)


Default format


General format


Integer format


Left justify


Plotting format (for histograms)


Right justify


Money format


INSERT a blank row or column


MOVE rows or columns


Ascending sort


Descending sort


Manual move


PRINTER output




Return to OS-9


Sleep until key hit


REPLICATE (copy) cells




Change data directory


LOAD worksheet from disk


SAVE worksheet to disk


Execute OS-9 command


Data files:


Load a data file from disk


Save to a data file on disk


TITLES control


Both horizontal and vertical titles


Horizontal titles


No titles


Vertical titles




Toggle value/formula display



Change default format for window


Horizontal window split


No window split (one window)


Synchronize window scrolling


Un-synchronise window scrolling


Vertical window split


HELP - DYNACALC help displays

Key Assignment Summary

Key Assignment Summary for the Dragon 64

On the Dragon 64 under OS-9 the CLEAR key is used as the CONTROL key. For example, to get 'CONTROL-E', hold the CLEAR key down and hit the E key.








Return to ‘Ready’ prompt.



Move up


Move down



Move left


Move right


Backspace cursor to erase character



Enter data



'Go to cell' command



Go to top left cell



Jump to other window



Edit cell, (same as /E in Ready mode.)



When editing, toggles overlay/insert mode.



Put address of current cell in expression.



In entry mode, causes a cell address to be replaced by the value in that cell. In ready mode, copies value of current cell to edit line.



In entry mode, causes current expression to be replaced by its current value. In ready mode, causes entire worksheet to be recalculated.



Introduces a function (@SIN, @SQRT, etc.)



Range separator, prints as ‘...’



Introduces a command. displays the command menu.



Displays 'HELP' messages for any command menu.



Empties the type-ahead buffer.



ABORT DYNACALC, saving the work sheet in file 'dyna.xxxxx.cal', where 'xxxxx' is your user number.