(navigation image)
Home American Libraries | Canadian Libraries | Universal Library | Community Texts | Project Gutenberg | Children's Library | Biodiversity Heritage Library | Additional Collections
Search: Advanced Search
Anonymous User (login or join us)
Upload
See other formats

Full text of "VisiCalc; User's Guide for the ATARI 800 32K"

INSTANTLY CALCULATING 'ELECTRONTC WORKSHEET' 





VISICORP 

PERSONAL SOFTWARE™ 




Manual Copyright © 1981 VisiCorp 
All Rights Reserved. 

Program Copyright © 1979, 1980 Software Arts, Inc. 
All Rights Reserved. 

Printed in U.S.A. 

ATARI 800™ is a trademark of Atari, Inc. 
VisiCalc® is a registered trademark of VisiCorp 

Part Number: 40910-2211 7/82 



VisiCalc 



INSTANTLY CALCULATING 'ELECTRONIC WORKSHEET' 



® 



User's Guide 
for the ATARI 800 32K 



Program by 

Software Arts, Inc. 

Cambridge, Massachusetts 

Manual by 
Dan Fylstra and Bill Kling 




VlSlCORP^ 

PEKSONAL SOFTWARE™ 



Digitized by the Internet Archive 
in 2010 



http://www.archive.org/details/atariusersguideOOfyls 



Table of Contents 

PART L INTRODUCTION 

3 How To Use This Manual 

3 Overview Of VisiCalc: The "Electronic Sheet" 

5 important Follow-Up Program 

6 What You Need 

7 Some Notes On Your Keyboard 

8 A Word on Diskettes 
8 Loading VisiCalc 

10 Initializing VisiCalc Storage Diskettes 

PART II. VISICALC TUTORIAL 
Lesson One 

16 Moving the Cursor 

16 Scrolling the Window 

17 Automatic Repeat 

17 Direct Cursor Movement 

18 Backing Up the Cursor 

19 Writing On the Electronic Sheet 

20 Formulas and Recalculation 

21 More on Labels and Values 
23 Cursor Moves in Formulas 

25 Saving the Electronic Sheet On Diskette 

27 Postscript: Protecting Your Work 

27 Save Your Work As You Go 

28 Making Backup Copies of Diskettes 

Lesson Two 

31 Loading the Sheet from Diskette 

32 Replicating a Formula 

35 Replicating a Range of Formulas 

36 Formatting the Screen Display 

37 Fixing Titles In Place 

38 Now for a Quick Recalculation 

39 Adjusting Column Widths 

41 Splitting the Screen 

42 Global Commands in Separate Windows 

43 Summary 

44 Postscript: Memory and the Electronic Sheet 

45 Shrinking the Sheet 



Lesson Three 

49 Setting up for the Budget Sheet 

50 Replicating Numbers and Labels 

51 Using Formulas For Flexibility 
53 Replicating Down a Column 

53 Replicating a Column Several Times 

55 Fixing Titles In Both Directions 

56 The Built-in Function @Sum 

58 Formatting a Single Entry 

59 Replicating a Format Specification 

60 Using Replicate To Copy a Row or Column 
60 Changing Windows and Titles 

62 The @NA and @ERROR Functions 

63 The Insert and Delete Commands 

65 Calculating Interest On a Savings Account 

66 The Move Command 

68 Obtaining Monthly Expense Percentages 

69 Synchronized Scrolling 

70 The Order of Recalculation 

72 Forward and Circular References 

73 Summary 

74 Postscript: The Print Command 

Lesson Four 

77 More on Numbers and Formats 

78 Scientific Notation 

79 More On Value References 

79 More On Formulas 

80 More On Built-in Functions 

83 Transcendental Functions and Graphing 

87 Manual and Automatic Recalculation 

88 Summary 



PART III. VISICALC COMMAND REFERENCE 

93 The VisiCalc Screen 

96 Command Structure Chart 

98 GO TO Command 

99 LABEL ENTRY Command 
101 VALUE ENTRY Command 

109 BLANK Command 

110 CLEAR Command 

111 DELETE Command 
114 FORMAT Command 
118 GLOBAL Command 
124 INSERT Command 
127 MOVE Command 
135 PRINT Command 

139 REPLICATE Command 

149 STORAGE Command 

157 TITLE Command 

158 VERSION Command 

159 WINDOW Command 

163 REPEATING LABEL Command 

PART IV. INDEX 

165 INDEX 



III 



Table of Contents 

PART I. INTRODUCTION 

3 How To Use This Manual 

3 Overview Of VisiCalc: The "Electronic Sheet" 

5 Important Follow-Up Program 

6 What You Need 

7 Some Notes On Your Keyboard 

8 A Word on Diskettes 
8 Loading VisiCalc 

10 Initializing VisiCalc Storage Diskettes 



Introduction 



How to Use This Manual 

This manual has been carefully prepared to help you learn VisiCalc easily and 
quickly. Its four sections take into account the fact that different people using 
VisiCalc will have differing levels of computer experience. 

Part I contains an overview of VisiCalc, information about your equipment 
needs, complete instructions for loading VisiCalc, and preparing diskettes for 
use with VisiCalc. 

Part II is a step by step Tutorial in the use of VisiCalc with your ATARI® 800®. 
Those with little or no experience with personal computers will find that it an- 
ticipates many of the questions and problems that may arise. The Tutorial com- 
prises four lessons that guide you from the point at which you finish loading 
VisiCalc in Part I through several examples. 

These examples show you how to use VisiCalc and your computer to solve 
problems in your professional and personal life. Each lesson will show you ex- 
actly what to type, keystroke by keystroke, and should be studied by working 
at the computer. As you practice, you'll gain familiarity and confidence in using 
some of the more advanced features of VisiCalc. Before long, you'll need only 
Part III and the VisiCalc Reference Card. 

Part III is the VisiCalc Command Reference. It contains a chart of VisiCalc com- 
mands illustrating their relationship, notes on the elements of the VisiCalc 
screen display, and a detailed discussion of each command with examples of 
its use. You will probably find yourself referring to this section frequently, espe- 
cially as you use the advanced features of VisiCalc to speed your work and do 
complicated applications. The commands presented in this part of the manual 
are summarized in the VisiCalc Reference Card. 

Part IV is the Index for this manual. It alphabetically lists subjects with their 
page numbers. 

The best way to learn to use VisiCalc is to try it. Experiment! Trying out ideas will 
help you answer a lot of your questions, while enhancing your experience and 
confidence. Entering "odd" data and patterns will hurt neither the computer 
nor the VisiCalc program. Physical care, however, must be paid both to the 
computer and the diskettes. Always handle diskettes gently, keeping them 
away from magnetism, dirt, and liquids. 

Overview Of VisiCalc: The "Electronic Sheet" 

VisiCalc was born out of the observation that many problems are commonly 
solved with a calculator, a pencil, and a sheet of paper— three nearly universal 
tools. Calculating sales projections, income taxes, financial ratios, your per- 
sonal budget, engineering changes, cost estimates, and balancing your check- 
book are all done with these tools. 

VisiCalc combines the convenience and familiarity of a pocket calculator with 
the powerful memory and electronic screen capabilities of the personal com- 
puter. With VisiCalc, the computer's screen becomes a "window" that looks 
upon a much larger "electronic sheet." You can move or "scroll" this window 
in four directions to look at any part of the sheet, or you can split the computer 
screen into two "windows" to see any two parts of the sheet at the same time. 



Overview Of VisiCalc: The "Electronic Sheet" 



Introduction 




,11111 1 1 1 1 1 1 1 1 1 1 1 1 













lo CD r^ 00 a> 



; S CNJ CO ■* 



o 

I- 

o 
liJ 

UJ 
UJ 

X 

I- 

o 



o 

o 
z 

< 

(0 



UJ 

cc 
o 

OC 
3 

o 

>- 



VisiCalc Overview Of VisiCalc: The "Electronic Sheet" 



The sheet is organized as a grid of columns and rows. The intersecting lines of 
the columns and rows define thousands of entry positions. At each position 
you can enter an alphabetic title, a number, or a formula to be calculated. Just 
by "writing" on the sheet, you can set up your own charts, table, and records. 
The formatting commands let you individualize the appearance of each entry, 
row, or column. If you wish, for example, you can make your VisiCalc check- 
book record look just like your bank statement. 

But the power of VisiCalc lies in the fact that the computer remembers the 
formulas and calculations you use as you work through a problem. If you 
change a number you had previously written on the electronic sheet, all other 
related numbers on the sheet change before your eyes as VisiCalc auto- 
matically recalculates all of the relevant formulas. 

Recalculation makes VisiCalc a powerful planning and forecasting tool. Not 
only can you effortlessly correct mistakes and omissions, you can also examine 
various alternatives. 

For example, imagine that you are doing sales projections using VisiCalc. You 
may want to know what the impact on your company will be if a specific project 
doesn't sell as well as you had anticipated. What if you sell only 200 "widgets" 
a month instead of 250? What if you sell 300? What if one of your salesmen 
quits, and it takes six weeks to bring a new person up to speed? Playing "what 
if" with VisiCalc is usually a matter of changing a single number. Doing the 
same thing with a calculator, pencil, and paper might takes hours of erasing 
and recalculating. 

VisiCalc's editing features let you change, insert, or delete titles, numbers, or 
formulas. The existing VisiCalc chart or table is instantly restructured with all of 
the columns, rows, and other formulas edited to reflect your changes. 

If you've entered a formula at one position, VisiCalc lets you replicate it at any 
number of other positions. VisiCalc will also sum, average, or otherwise 
manipulate rows, columns, or other ranges of numbers. 

While you can shorten the length of titles and numbers that are displayed on 
your computer screen, the internal length of titles and formulas remains con- 
stant. Decreasing the length of each position on the screen lets you increase 
the number of positions displayed without affecting their content. To see the 
title or formula that produced a number, you simply move the screen high- 
light or "cursor" to rest on that number or title. 

Once you've established the format for a particular application, you just enter 
or change numbers. You can save the electronic sheet on a diskette, and you 
can print all or part of the sheet on a printer. 

You can learn the elementary features of VisiCalc in an hour or two, and you'll 
immediately be able to solve simple problems. As you use VisiCalc for more 
complicated applications, you'll discover that it has a broad range of features 
and commands. You can learn these features and commands as the need 
arises. 

Important Follow-Up Program 

Please read the User's Support Plan that comes with this product. Return- 
ing the warranty registration card will enable us to keep you informed of 
new versions of the VisiCalc program. 



Important Follow-Up Program 



Introduction 



After you've used VisiCalc, we'd like to hear your comments and sugges- 
tions for improvement. We have provided the Reader Critique at the back of 
this manual for this purpose. 

What You Need 

To use VisiCalc, you will need the following components: 

1. Your ATARI 800'"^. 

2. The ATARI 810 " Disk Drive for 5" floppy diskettes. 

3. A set of blank diskettes. 

4. The VisiCalc program diskette, enclosed in the inside front cover 
pocket of your manual. 

5. ATARI RAM Memory Modules totaling at least 32K. A total of 48K of 
RAM is highly recommended. 

6. A TV set or other video monitor. A black and white set is fine. 

7. Optionally, you may choose either the ATARI 820 '-* or ATARI 825 ® 
printers for making hard copy reports of your sheets. Another option 
is the ATARI 850 - Interface Module. 




AC ADAPTOR 



EQUIPMENT HOOK-UP 



VisiCalc 



Some Notes On Your Keyboard 



Some Notes On Your Keyboard 

This manual describes the use of VisiCalc on the Atari 800 computer. We tell 
you keystroke by keystroke how to enter each command. Everything will be 
illustrated with numerous examples. We do assume, however, that you will 
press the SHIFT key if necessary. Use the SHIFT just like you would on a type- 
writer, i.e., holding it down while you type the key with the character you want. 




THE ATARI 800 KEYBOARD 



With the ATARI keyboard illustrated above, you do not use the SHIFT to type 
special characters such as the asterisk (*) and the greater than sign (>). How- 
ever, you will need to press the SHIFT to generate some of the non-alphabetic 
characters you'll be using, such as quotation marks ("), exclamation point (!), 
and the at sign (@). 

Also note the positions of the keys that are shaded in the keyboard drawing. 
You will use them a great deal. Throughout this manual, we will substitute the 
symbol, ® for the key labeled RETURN. 

The four keys with the little arrows on them are used in conjunction with the 
Control key (marked CTRL) to move the cursor on your VisiCalc screen. In 
this manual, the following symbols represent the use of these keys, and also 
our notation for the exponentiation character ". 



Symbol 



Keystrokes 

Hold down CTRL and press [U] 
Hold down CTRL and press 
Hold down CTRL and press Q 
Hold down CTRL and press [v] 
Hold down SHIFT and press (V] 



Since the ATARI 800 computer uses both upper and lower case, you can use 
the SHIFT to make individual capital letters, as you would on a typewriter, when 
you are creating titles for your VisiCalc sheet. You may also use SHIFT and the 
CAPS LOWR key to "lock" in the all-capitals mode. Be sure to "unlock" CAPS 
LOWR by pressing it once as soon as you've finished capitalizing. While the 
CAPS LOWR is on, some of the keys you need may not work as described here. 



A Word on Diskettes Introduction 



Whether you type a letter in upper or lower case does not matter to VisiCalc— 
it will automatically capitalize letters where it is necessary for a command, such 
as >A1, or a formula such as 8 + A1. Note that in the text of this manual, we 
use only upper case to explain what to type and what you see on the screen. 

A Word on Diskettes 

A word of caution about the handling of diskettes is in order here— you can't 
be too careful with diskettes. Each diskette is a small, magnetically coated 
plastic disk, sealed in a protective square plastic cover. Through the oval cut- 
out in the square cover, you can see the magnetic surface of the actual 
diskette. 

Never touch tlie exposed magnetic surface with your fingers or any implement. 
Protect the diskette from dust by storing it in the paper sleeve it comes in. Keep 
it at least six inches from magnetic fields such as those generated by a TV. 
Extremes of temperature (such as in a car trunk on a warm day) could destroy 
a diskette, and you would lose your data, or your VisiCalc program. Don't bend, 
staple, or write on the square plastic cover with a hard pen or pencil (use only 
the soft felt tip pens). 

Loading VisiCalc 

Whether your computer is on or off, begin by removing any ATARI ROM 
cartridges from the left and right slots of the forward cartridge bay. VisiCalc 
will not run if any such cartridges are present. Note, however, that the Memory 
Bank toward the back of the console must contain the 10K ROM Operating 
System Module and a total of at least 32K RAM of Memory Modules. 

Check your disk drive(s) next. Make sure that the BUSY light is not on, then 
open the door (by pressing on the button beneath the door) of each disk drive 
and remove any diskette that might be present. Leave the drive door(s) open. 
Do not insert the VisiCalc diskette yet. 

If your equipment is turned off, begin by turning on your TV set. Press the 
power switch (located on the front of the drive) to the "ON" position. The 
drive motor will start up and run for about 6 seconds. When it stops, the BUSY 
light will go out, but the PWR. ON light will remain lit. 

Take the VisiCalc program diskette from the pocket on the inside front cover 
of your manual. Remove the VisiCalc program diskette from its paper sleeve 
and grasp the diskette by the label edge with the label side up. Carefully insert 
it into drive 1, with the label edge entering last (see illustration below). Gently 
push the diskette all the way in. Close the drive door by pushing its handle 
down, until you hear the door click shut. 

Note: VisiCalc will load only from a disk drive with a DRIVE CODE number of 1 . 
This number is set by the recessed switches at the rear of the drive. See page 3 
of your disk manual for details. 



8 



VisiCalc 



Loading VisiCalc 




Now turn the computer on by pushing the power switch to the ON position. 
If your computer was already on, turn it off, pause a moment, then turn it back 
on. The switch is located on the right side of the computer, just past the 
2-CHAN-3 switch. On the console, the red light just below the START button 
will also light. The drive takes about half a minute to load VisiCalc into RAM 
memory. 

As the program loads, the VisiCalc screen will appear and should resemble the 
photo below. The second line contains the copyrght notice and the version 
number. The third line contains a serial number unique to your particular 
diskette. As with any valuable item, write this number down and store it in a safe 
place. 




Initializing VisiCalc Storage Diskettes Introduction 



If you screen doesn't look like the one above, remove your VisiCalc diskette 
from the drive. Then turn off the disk drive and the computer and try again, 
using the "Loading VisiCalc" instructions. If after several tries you are not 
successful at loading VisiCalc, see your dealer for help. 

When VisiCalc has loaded correctly, the disk drive has stopped whirring, and 
the BUSY light is off, open the drive door and gently remove your VisiCalc 
program diskette. Put it back in its sleeve (label showing) before returning it to 
the inside front cover pocket of your VisiCalc binder; you won't need it again 
until the next time you turn on your computer. 

Never leave your VisiCalc program diskette in the drive. It could be harmed by 
power failures or mechanical failures in the drive. Be careful too with your data 
storage diskettes. Although they are replaceable, misuse can lose hours of 
work. Always remove a diskette before turning off the drive. And NEVER open 
the drive door, try to remove a diskette, or turn the power off when the BUSY 
light is on. 

Initializing VisiCalc Storage Diskettes 

You must make a working diskette for storing the information you will be creat- 
ing with VisiCalc. Take out a blank diskette. Notice that a blank diskette has a 
small notch cut out on its left side. This cutout is sensed by your disk drive, and 
it tells the computer that it is okay to write information on the diskette surface. 
For its protection, the VisiCalc program diskette does not have this notch; 
hence it is said to be "write-protected." 

Look for the adhesive labels that normally come with a box of blank diskettes. 
Write some identifier on the label like, "VisiCalc Storage Disektte #1." Add 
the date and apply this label to the diskette jacket near the manufacturer's 
label. If the title label is already on the diskette, be sure to use a felt tip pen, not 
a ballpoint. If you intend to initialize more than one diskette, make up addi- 
tional labels and apply them as well. 

Carefully insert the blank diskette into drive 1 just as you did with the VisiCalc 
program diskette. The label must be up and the oval cutout must go in first. 
Close the disk drive door. 

A brief note before continuing. The ATARI 800 automatically changes screen 
colors when you don't use it for a period of time. The purpose of this is to pro- 
tect the screen from having patterns literally burned on to it. To return to the 
normal light blue (or grey) screen, simply hit any key. 

Follow the instructions below, and watch the second line from the top of the 
screen. This line is called the VisiCalc prompt line, and is described more fully 
in Lesson One of Part II and in Part III. 

1 . Press the / key. Your serial number and the title will disappear from the 
screen. The prompt line will read 

COHMAND: BCDFGI MPRSTVU- 

2. Press the letter S key. The prompt line should read 
STORAGE: L S D I a # 



10 



VisiCalc 



Initializing VisiCalc Storage Diskettes 



3. Press the letter I key. The prompt line should read 

INIT DISK:HIT RETURN (ERASES DISK) 

The characters Dl : are under it. For information on the meaning and 
use of these characters, see the discussion of The STORAGE Com- 
mand in Part III. 

4. Just press ® (the RETURN key). The red BUSY light on the drive should 
come on, accompanied by whirring and scraping noises. It should take 
about less than a minute to complete the initialization process. Toward 
the end of that time, the characters D1: and the INIT message will dis- 
appear from the screen. 

In the initialization process, the computer is recording a pattern on the surface 
of the diskette, so that VisiCalc can find a given spot on the diskette surface 
and "write" information there or "read" it back later. What's more, information 
"written" by one program (such as VisiCalc) can be located later and "read" by 
a different program (which could be written in BASIC). If you initialize a diskette 
that has had data stored on it from some previous use, either by VisiCalc or 
some other program, that data will be erased by this process. 

After the disk drive quiets down and the red BUSY light goes off, open the drive 
door and carefully remove the newly initialized diskette. Never open the door or 
insert or remove a diskette while the drive is whirring or the BUSY light is on; 
this will probably damage the diskette. Immediately place the new diskette 
back in its paper sleeve. 

At this point, you may wish to initialize some additional diskettes for use with 
VisiCalc. Simply insert a new blank diskette, close the drive door, and follow the 
four- step initialization procedure above. When you've finished, you'll be ready 
to go on to Lesson One of the Tutorial and begin learning to use VisiCalc. 
Your screen should look like the photo below. 




11 



PART II. VISICALC TUTORIAL 
Lesson One 

16 Moving the Cursor 

16 Scrolling the Window 

17 Automatic Repeat 

17 Direct Cursor Movement 

18 Backing Up the Cursor 

19 Writing On the Electronic Sheet 

20 Formulas and Recalculation 

21 More on Labels and Values 
23 Cursor Moves in Formulas 

25 Saving the Electronic Sheet On Diskette 

27 Postscript: Protecting Your Work 

27 Save Your Work As You Go 

28 Making Backup Copies of Diskettes 



Lesson One 

When you have loaded VisiCalc into your computer, as described in the section 
entitled "Loading VisiCalc," the image on your screen should resemble the 
photo shown in that section. The same photo is reproduced below. Type the 
following keys: /CY to clear the sheet and make it look like the photograph. 
Now we'll exmaine the components of this screen image more closely. 




Your screen has become a window into the computer's memory, which 
VisiCalc has organized like an electronic sheet. As you can see, the sheet is 
divided into rows which are numbered 1, 2, 3, and so on, and columns which 
are lettered A, B, C, and so on. At each intersection of a row and column there is 
an entry position, with a coordinate such as A1, B3, C17, and so forth. At each 
entry position you can "write" a message or title, a number, or a formula of the 
kind you might enter, keystroke by keystroke, on a calculator. In a moment 
we'll demonstrate how you move around and write on this electronic sheet. 

Above the white border with the column letters, there are three additional lines 
which make up VisiCalc's control panel. The middle line of this control panel 
displays the VisiCalc copyright notice and version number, for example: 

(C) iqfiD SOFTWARE ARTS, INC. 1.71A 

Should you ever need to call or write VisiCorp to ask questions or to report 
problems with VisiCalc, please tell us your version number and the model of 
your computer. The third line contains another important number: the serial 
number unique to your particular VisiCalc diskette. 

Press the key marked RETURN. As we mentioned in the section "Notes on Your 
Keyboard" in Part I, we'll indicate the RETURN key with the symbol ®. The 
copyright notice, version number, and serial number will disappear. Now press 
the / key followed by the V key and all three will reappear. Just type /V anytime 



15 



Moving the Cursor Lesson One 

you want to see your version number and most any key to make this version in- 
formation disappear. See the VERSION command in the reference section for 
more information. 

Moving the Cursor 

Look at the point where column A and row 1 intersect. This is coordinate A1. 
To keep you from getting lost on the electronic sheet, VisiCalc prints the co- 
ordinate for you on the upper line of the control panel. See it? Notice that a 
white bar covers entry position A1 , blending into the top and left frames of the 
screen. This bar is called the cursor. You always write on the electronic sheet 
at the position marked by this cursor; you can think of it as the point at which 
your pencil or pen meets the paper. To move the cursor around, you must 
always hold down the Control key (marked CTRL), while pressing one of the 
four arrow keys ^ -*- ||. The manual will remind you to use CTRL for the first 
few examples, to help you get used to it. 

Hold down the CTRL key and simultaneously press the right arrow key ^ once. 
Notice that the cursor moves to the position at column B, row 1 and makes a 
soft click. VisiCalc sounds this noise each time you type a character. Look at 
the cursor coordinate in the upper left corner of the control panel. It has 
changed to B1. Your first key stroke also caused the copyright notice and ver- 
sion number to disappear. 

Now press the left arrow key | (remember to press the CTRL key) and watch 
the cursor move back to its original position at A1 . Try moving the cursor down 
to row 2 of column A with ^ and then back to position A1 with -* And don't 
forget the CTRL key. 

If, while you are practicing, you make a typing error and see either the word 
VALUE or LABEL appear on the second line of the control panel, don't worry. 
Just press the key marked BREAK, and the word will disappear along with the 
number or letter beneath it. The noise made by the BREAK key is called a beep. 
We'll go into more detail on the words Value and Label and correction methods 
a little later in the manual. 

Scrolling the Window 

When you first load VisiCalc, your screen window is positioned to let you look 
at the upper left corner of VisiCalc's electronic sheet. On the ATARI 800, the 
window allows you to see the first four columns (A through D) and the first 
twenty rows (1 through 20) of the sheet. 

Now with the cursor at A1, press the right arrow key | three times, until the 
cursor rests at the right edge of the window at D1. Press the right arrow key | 
again. Notice that the next column to the right, the E column, comes into view 
while column A disappears off the left edge of the window. 

When this happens, we say that the window has scrolled to the right. Try press- 
ing ^ a few more times, watching more columns appear at the right edge of the 
window while others disappear at the left. 

The screen window will also scroll to the left. (In fact, it will scroll in all four 
directions.) Press the left arrow key | (don't forget CTRL) until the cursor is at 



16 



VisiCalc Scrolling the Window 

the left edge of the window. Then press | several more times and notice that 
the columns that had disappeared as you scrolled the window to the right come 
back into view. Press | until the cursor is back at position A1. 

Now try pressing | one more time. You should hear a soft buzzing noise called 
a thud. This is VisiCalc's way of telling you that you are bumping into an edge 
of the sheet. 

Press CTRL and the up-pointing arrow key -*- that would normally move the 
cursor up. This time you hear the thud because you are bumping the cursor 
into the top edge of the sheet. So far we have encountered the left edge and the 
top edge of the sheet. Now we will show you the other two edges. 

Press the down arrow key ♦ until the cursor has moved down to position A20. 
Then press <m^ again and notice that row 21 comes into view while row 1 dis- 
appears off the top of the screen window. Press the -» key a few more times. 
As you can see, the electronic sheet is quite a bit larger than an ordinary sheet 
of paper. 

Automatic Repeat 

We can reach the bottom edge of the sheet more quickly by using the ATARI'S 
automatic repeat feature. To see this in action, press the ■» key again, and this 
time hold it down. The cursor and the window should scroll downwards auto- 
matically. Continue to hold down the -m- key until you bump into the bottom 
edge of the electronic sheet. The cursor will be at position A254. 

Now let's move the cursor to the right hand edge of the sheet. Press | and hold 
it down. The cursor and window will go scrolling off to the right. As the cursor 
and window scroll to the right, notice how succeeding columns are lettered. All 
these coordinates can still be read at the upper left corner of the screen too 
After A, B, C, . . . , X, Y, Z comes AA, AB, AC, ... , AX, AY, AZ, and then BA, BB, 
BC, . . . The cursor finally stops at position BK254 as it bumps into the right 
hand edge of the sheet. You are now at the lower right hand corner of VisiCalc's 
electronic sheet. 

Direct Cursor Movement 

Even with the aid of automatic repeat, it took a while to scroll the cursor and 
window all the way to the lower right corner of the VisiCalc sheet. There's an 
easy way to jump to another position on the sheet that takes only a few key- 
strokes. 

Type the character > If you make a mistake, press the key labeled BACK S as 
many times as necessary to correct what you've typed. The next section, 
"Backing Up the Cursor," explains the use of this key in detail. 

Two things will happen: 

1) The message GO TO : COORD I NATE appears on the middle line of 
the control panel just under the BK254 coordinate. 

2) Directly below this message a small rectangle appears. You have dis- 
covered two new components of the VisiCalc control panel: the 
prompt line and the edit line. 



17 



Direct Cursor Movement Lesson One 




Each time you press a key, VisiCalc prompt line tells you what you can type 
next. On screen above, the prompt line is telling you that (1) VisiCalc has 
recognized your keystroke command >, and that (2) it wants to know to what 
COORDINATE you want to GO TO. That means you must type in the letter 
and number of the position to which you want the cursor to move. 

Press the A key once: The letter A will appear on the edit line (third line from the 
top of the screen), followed again by the small rectangle. Notice that you get a 
capital A, whether you press the shift key or not. VisiCalc knows that you are 
entering a coordinate and so takes care of upper case for you. The SHIFT key 
matters only when you press a key with two symbols on it, or, as you will see, 
when you are entering labels. 

Press the number 1 key to move the cursor back to position A1 . So far, we have 
A1 on the edit line followed by the small rectangle. VisiCalc is still waiting for 
you to type something. It doesn't know yet whether you want to go to position 
A1, or position A11, or A121, or some other position. 

Press the ® key. The information on the prompt and edit lines disappears, and 
the cursor and window move back to the upper left corner of the sheet at A1. 

Try another example. Press the keys >C10 ® Note that the cursor now rests in 
mid-screen, directly below C and to the right of 10. Coordinate C10! 

Backing Up the Cursor 

VisiCalc has several error correction features, each of which will be covered in 
this lesson. The first of these is the key labeled BACK S. 

Press the following keys: >A11 Then pause for a moment before pressing 
® Suppose that you intended to move the cursor to position A1, but you ac- 
cidentally pressed the 1 key twice. You now have A11 on the edit line, followed 
by the small rectangle. 



18 



VisiCalc Backing Up the Cursor 

Press the key marked BACK S once. Notice that the small rectangle "backs 
up" one character and erases the extra 1, leaving you with A1. Now press ® 
The cursor will move back to the upper left hand corner of the sheet. 

In general, VisiCalc will let you correct typing errors by backing up with the 
BACK S key. You can also back up more than one character. As an example, 
let's change A11 to A2. Type >A11 again. Press the BACK S key twice, backing 
up to leave just the letter A. Then press the 2 key to get A2. Press ® It works! 

Besides backing up, you can "back out" with the BACK S key. Press the fol- 
lowing keys: >B5 Then pause. Suppose that you change your mind and 
decide that you don't want to move the cursor at all. Press the BACK S key 
once, and the number 5 will disappear from the edit line. Press the key again. 
The letter B on the edit line disappears and so does the prompt GO TO : 
COORD I NATE. You have backed out of the > or GO TO command com- 
pletely, and you can now type something else. By the way, the beep sounded to 
tell you that your original command had been canceled. 

VisiCalc offers an even faster way to back out of a command. Press these keys: 
>C12 Suppose you decide you don't want to use the GO TO command. Find 
the key labeled BREAK and put your finger on it. Watch the screen as you press 
the key. BREAK erased the prompt and edit lines. You have backed out of the 
GO TO command with one key, BREAK. No matter what you are typing, you can 
always back out and leave the sheet unchanged by pressing the BACK S key a 
few times or pressing the BREAK key once, as long as you notice your error 
before pressing the last keystroke of the command or hitting ®. 

Before going on, spend a few more minutes moving the cursor around with the 
arrow keys, and the > or GO TO command. Try moving the cursor to a non- 
existent position such as AB525. What happens? Try moving to an invalid co- 
ordinate such as 25A instead of A25. What happens? 

Writing On the Electronic Sheet 

As you have seen, moving the cursor and window around is pretty easy, but so 
far your electronic sheet is (or should be) empty. You'll find that writing on the 
sheet is even easier. Before proceeding further, type the following keys: 
/CY The screen will go blank, then reappear with the copyright on the prompt 
line and your VisiCalc serial number on the line below it. This command com- 
pletely clears the sheet and repositions the cursor to position A1. 

First we will label a row. Type the following keys (use capitalization if you 
wish): SALES 

If you mistype a letter, you can back up with the BACK S key to back up and 
make changes in the SALES label. 

Stop and look at the screen. On the prompt line is the word LABEL. This is 
VisiCalc's term for any type of message that won't be used in making calcula- 
tions. On the edit line is the word SALES folowed by the small rectangle. The 
small rectangle indicates that you can still use the BACK S key to back up and 
retype the message or to back out completely. SALES also appears under the 
cursor highlight at position A1 on the sheet. 

When you are satisfied, hold down the CTRL while you press the | key. The 
information on the prompt and edit lines disappears, and the cursor moves to 
position 81, leaving the label SALES at A1. 



19 



Writing On the Electronic Sheet Lesson One 

A typographical note: Throughout the rest of the Tutorial, all alphabetic charac- 
ters will be shown upper case in the text. The photographs of ATARI screens 
will show the use of upper and lower case letters. You can use upper and lower 
case as you prefer for your own labels. 

Now type the following keys: 100 

Stop and look at the screen. The prompt line says VALUE, which is VisiCalc's 
term for a number or formula. On the edit line is the number 100 followed by 
the small rectangle. Press the BACK 8 key four times, and watch the numbers 
disappear: first 0, then 0, then 1, then finally the prompt, VALUE. Position B1 is 
blank again. You could also have done the same thing by pressing BREAK 

Now type in the following numbers: 75 + 25 

If you make a typing error, watch the edit line carefully and use the BACK S key 
to back up. Note, however, that the presence of the plus sign changes the 
results of using the BACK 8 slightly. If you try to erase just one numeric char- 
acter after the plus, the entire number will disappear. The word V A LU E is again 
on the prompt line, and the edit line reads 75 + E5 followed by the small 
square. Press the SHIFT and the 1 key together to type a ! (the exclamation 
point). 

Instantly, 75 + 25, has been calculated to show IDD (the answer) on the edit 
line. You can use this "exclamation key" feature to perform quick calculations 
before writing a number on the sheet. Much more will be said about formulas 
and calculations later. 

Notice that nothing has appeared under the cursor highlight at B1 . Everything 
has happened on the edit line. Now press ® The information on the prompt 
and edit lines disappears, and the number 100 appears at position B1 on the 
sheet. Pressing ® caused another change on the screen. 

The top line of the screen now reads: Bl (V) IDD. This line is called the 
entry contents line because it gives the full explanation of the contents 
written in the entry position highlighted by the cursor. Right now, the entry 
contents line says ( V ) for VALUE and shows the number IDD. 

Try pressing BACK 8 Nothing happens. Pressing ® told VisiCalc to consider 
100 an actual entry. Press the | key, and the cursor will move back to position 
A1. If you neglected to hit CTRL too, you got A+ on the edit line and VALUE 
on the prompt line. Press BREAK to erase your error before continuing. 
Assuming a correct entry, the entry contents line reads Al (L) SALES. 
The (L) stands, of course, for LABEL. 

Formulas and Recalculation 

Move the cursor to position A2 by pressing the ^ once. Next type the letters 
COST and then press the | key. The cursor moves to B2, leaving the label COST 
at A2. Note that use of the arrow key after an entry not only moved the cursor 
to the next position, but also entered your label just as if you had typed a ® 
before typing |. 

We're getting ready to write a formula at a coordinate (B2). We want the entry at 
position B2, for COST, to be 60% of the number for SALES or .6 times 100. In- 
stead of typing the 100, however, we'll use its coordinates. Press the follow- 
ing keys: 
.6*B1 

20 



VisiCalc Formulas and Recalculation 

The * symbol is used to indicate multiplication. The edit line should display 

If it doesn't, use BACK S to correct any error. The formula is telling VisiCalc to 
multiply whatever is at coordinate B1 by .6. Assuming that you are satisfied, 
press ® and watch what happens. 

The information on the prompt and edit lines disappears. You should now see 

BE (V) .6*81 

on the entry contents line. And at position B2 is the number 60, the result of 
multiplying .6 times 100, the number at B1. 

Let's take a quick peek at VisiCalc's power. Press the -*- key to move the cursor 
up to position 81. Now type 200 ® and watch the screen. The number behind 
the cursor highlight at 81 changes to 200 because you entered the number 200 
at 81, effectively erasing the earlier number (100). What else happened? 

Press the -v- key, moving the cursor to 82. On the entry contents line at the 
top of the screen, the formula you had typed earlier, . b + Bl, is still there. 
When you changed the number at 81 to 200, VisiCalc automatically recalcu- 
lated the formula at 82 as .6*200, or 120. Notice that COST is still 60% of sales. 
You'll see many more examples of this powerful recalculation feature as we 
progress. 

More on Labels and Values 

Let's look more carefully at LABEL and VALUE and explore an even simpler 
way to write formulas. As an example, we're going to write a formula that calcu- 
lates gross profit by subtracting cost from sales. First, we need to get the cursor 
into position to write a new label. Press the following keys: >A3® to move the 
cursor to coordinate A3. 

To write the label GROSS, press the G key. Notice that the prompt line im- 
mediately says: LABEL. When you write at an entry position, VisiCalc looks at 
the first key you press to determine whether you are typing an alphabetic 
LABEL or a numeric VALUE. If you start with one of the letters A through Z, 
as you did here, VisiCalc assumes that you are typing a Label. 

If you start with one of the digits through 9 or a decimal point. ".", or with 
something that could begin a formula such as plus, " + ", minus, " — ", open 
parenthesis, "(", or "@" or "#" (which will be explained later), VisiCalc as- 
sumes that you are typing a VALUE. For now, press BREAK to back out of 
LABEL. 

What happens if you want to write a message such as -GROSS- or 1ST QTR? 
Try typing in -GROSS- and watch what happens. 

VisiCalc takes the initial dash or minus sign to mean that you were typing a 
formula, the letter G as part of an entry position coordinate and then com- 
plained as you typed something that couldn't be a formula. Press BREAK to 
erase this entry. 



21 



More on Labels and Values Lesson One 



In order to use a numeric symbol in a LABEL, we need to place a quotation 
mark at its beginning. Type a " by holding down the SHIFT key while typing 
the 2 key. VisiCalc takes the " to mean that you want to type a LABEL. The 
quote symbol will not, however, be a part of the message itself. As soon as you 
press the " key, the prompt line says LABEL, but does not show a character. 
The edit line only shows the small rectangle. Now you can type: -GROSS- 

Do not use a closing quote symbol unless you want it as part of your LABEL. 
If you ever want to begin a LABEL with a quotation mark, you will have to type 
" twice. Now press the % key. The cursor moves to position B3, leaving the 
message — G R S S— at A3. 

Now we're ready to calculate SALES minus COST. The formula you'd expect 
would be B1-B2. What will happen when you type B1-B2? 
Try it. Type B1-B2 

VisiCalc accepts this formula, so press ® What happened? If you've been 
watching the prompt line, you already realize that VisiCalc took the initial letter 
B to mean that you were entering a LABEL or message. B1-B2 is a perfectly 
legitimate message or comment, but it doesn't calculate anything. Only a 
VALUE can calculate. 

Try again. First, we'll eliminate the erroneous message B1-B2. Try pressing 
BACK S and then BREAK Nothing happens because you've already pressed 
®. To erase an entry after a carriage return, you must use the VisiCalc com- 
mand that blanks out entry positions. 

Press the following keys: /B® The message B1-B2 under the cursor high- 
light disappears, and the entry contents line goes blank except for the cursor 
coordinate B3. Note, however, that in most cases where you want to enter new 
information in a previously used coordinate, you can simply type in the new 
LABEL or VALUE without first blanking out the coordinate. 

Remember that we used the " key to type a LABEL when VisiCalc would 
otherwise haye tried to treat it as a VALUE. We can use a similar trick to type 
the formula B1-B2 as a VALUE, instead of a LABEL. One way to do this would 
be to type the formula as + B1-B2. VisiCalc would take the initial digit to 
signify that we were typing a VALUE. 

An equivalent formula is +B1-B2. VisiCalc will take the " + " to indicate a 
VALUE. Press the following keys: +B1-B2 ® The entry contents line displays 
ourformulaasa VALUE: 83 (V) +81— BE. The cursor highlight rests on 
the number 80, the result of calculating +B1-B2, or +200-120. 



22 



VisiCalc Cursor Moves in Formulas 




Cursor Moves in Formulas 

So far, you know how to move the cursor to an entry position, and write a 
message, a number, or a formula that refers to other positions on the electronic 
sheet, such as +B1-B2 in the previous example. By now you probably also 
realize that if you change the numbers at B1 or B2, the formula +B1-B2 at 
entry position B3 will be recalculated, and the new result will be displayed at B3. 

As you wrote the formula for SALES minus COST, you probably had to check 
the screen to see that the number for SALES was at position B1 , and the num- 
ber for COST was at B2. Now imagine that you have already written a large 
number of formulas on the sheet. 

Keeping track of which numbers were at which coordinates would become 
time-consuming. Columns A and B might have scrolled off the left edge of the 
window as you moved it to display other parts of the sheet. Then you wouldn't 
even be able to see the numbers next to SALES and COST, so writing a new 
formula involving SALES and COST might be a problem. There's an easy way 
to solve this problem. You write the formula, but let VisiCalc fill in the coordi- 
nates! Let's try it. 

Press the + key. The prompt line reads VALUE, and the " + " appears on the 
edit line, followed by the small rectangle. At this point, we would normally 
type the coordinate B1 , but what we really want is the number next to the label, 
SALES, at coordinate B1 (currently 200). Point at that number on the screen 
with your finger. We are about to do the same thing electronically by "pointing" 
with the cursor. 

Watch the edit line and press the ♦ key once. The cursor moves up to high- 
light the number 120, and the coordinate of that number, B2, appears on the 



23 



Cursor Moves in Formulas Lesson One 



edit line. Now press -* again. Do you see what we mean by "pointing" the 
cursor? You have taken the cursor from its starting position at B3 and pointed 
it to B1 by placing it on B1. 

The edit line now reads + B 1 followed by the small rectangle. Notice that these 
are first three characters of the formula remaining on the entry contents line 
that you typed in earlier. 

Press the — key. The cursor jumps back to B3, the entry position at which 
we began writing the formula. The edit line now reads +B1— followed by the 
little rectangle. As a general rule, after pointing the cursor at the position you 
want to include in the formula, you simply continue the formula by typng an 
arithmetic operation symbol such as —,+,*, or /. 

Watch the edit line again and press the ^ key once more. The cursor moves 
up to 120, the number next to COST, and the edit line now reads +B1— BE, 
exactly the same formula as displayed on the entry contents line. This is the 
formula we want! 

To enter the formula as it stands on the edit line, press ® The information on 
the prompt and edit lines disappears. 

You can see that the results of pointing to coordinates with the cursor are just 
the same as typing those coordinates in directly from the keyboard. The entry 
contents line still reads B 3 (V) +B1— BE. The number on which the cursor 
rests is 80, the result of calculating B1 minus B2. 

To demonstrate VisiCalc's recalculation feature again, press the ^ key twice 
to move the cursor up to B1, and change the number there by typing: 100 ® 
Notice that B2 changes back to 60, or .6 times 100, and B3 changes to 40, or 
100-60. 

As a general principle, remember that whatever you see on the edit line you can 
type in from the keyboard. Likewise, any number or entry position currently on 
your sheet can be pointed to instead of typed. As you gain experience and 
familiarity with VisiCalc, you'll find that the technique of moving the cursor to 
the positions you want will become easier. In time, you'll find that you can 
almost forget about coordinates entirely and think only in terms of the visual 
positions of numbers and formulas on the sheet. 

To test your understanding of the process of moving the cursor as you write 
formulas, you may wish to try an example yourself. Move the cursor down to 
position B5 and write a formula there for gross profit as a percentage of sales. 
Hint: the desired formula is +B3/B1*100. Try to obtain this formula by moving 
the cursor and typing the + and / keys. 

Your screen should look like the photo below. After you have obtained the 
result (40), keep the cursor at B5 and type /B® Then type >B1® to place the 
cursor at B1. 



24 



VisiCalc 



Saving the Electronic Sheet On Diskette 




Saving the Electronic Sheet On Diskette 

Begin by taking out one of the diskettes that you initialized earlier. You are 
going to save the information you have just developed on the electronic sheet. 
In this way, you can use your work as we begin Lesson Two by loading your 
sheet back into the computer. 

If you skipped the discussion of diskette initialization when you read Part I, 
the Introduction, you can still initialize a diskette now. The /SI command 
won't disturb the information you have written on the electronic sheet. 

Take out a blank diskette or a used diskette that you feel free to erase and 
carefully follow the instructions under "Initializing VisiCalc Storage Diskettes," 
then continue with the instructions below. 

If you don't have any extra diskettes, it's okay. Lesson Two gives brief instruc- 
tions for setting up the electronic sheet with exactly the same labels, numbers 
and formulas which you have now. We do recommend, however, that you skim 
over the material below and at the beginning of Lesson Two on the /SS and 
/SL commands. 

To begin, make sure that your disk drive 1 BUSY light is off and open the drive 
door by pushing in on the button at the bottom of the drive door. If your VisiCalc 
program diskette is still in the drive, carefully remove it, put it back in its paper 
sleeve, and replace it in the front pocket of the VisiCalc binder. 

Insert the blank diskette into the drive just as you did before. Gently push the 
diskette all the way in and close the drive door by pushing it down until it 
clicks shut. 

Now type /S the VisiCalc STORAGE command. The prompt line should read 

STORAGE: L S D I a # 



25 



Saving the Electronic Sheet On Diskette Lesson One 



VisiCalc is telling you that it recognizes /S as the storage command, and that 
it expects you to choose from one of six forms of the storage command by 
pressing one of these keys: L 8 D I Q # These keys have the following mean- 
ings: 

L Load the sheet contents into RAM memory from a diskette file. 

8 Save the sheet in memory by "writing" it into a diskette file. 

D Delete a previously saved file from its place on the diskette. 

I Initialize, or format, a blank diskette. 

Q Quit the VisiCalc program. 

# Save or load a sheet in the Data Interchange Format (see Part 

III, the STORAGE Command). 

Press the letter 8 and F I LE FOR SAV I NG appears on the prompt line with 
the little rectangle on the edit line. Because each diskette has enough room to 
hold several electronic sheets, you must give each sheet on the same diskette 
a unique name. In this way, you can find the sheet at a later time and load it 
back into the computer. 

The saved information is called a diskette file, and the name that identifies the 
file is called a file name. Because we've been studying an example, let's save 
our work with the file name, EXAMPLE. VisiCalc will find an empty area on the 
diskette and will write the sheet contents there. VisiCalc will also save the file 
name and a record of where it saved the sheet contents in a special area on the 
diskette called the directory. 

Finally, it appends a suffix, .VC, on the end of the file name. After saving 
EXAMPLE it will be called EXAMPLE.VC. 

There are a few simple rules for creating a valid file name. A file name can be 
up to eight characters in length (either letters or number). The first character, 
however, must be a letter. The space character and all punctuation and control 
characters are not allowed. 

If you have more than one disk drive, you must add a prefix to the file name. 
The prefix tells VisiCalc the drive in which your storage diskette is located. 
You indicate the drive by typing the letter D, the drive number, and a colon. 
For instance, if the diskette were in drive 2, the correct prefix would be D2: 

Once you name a drive other than drive 1, VisiCalc saves your sheets to and 
loads them from that drive and ignores drive 1 . For example, if you have desig- 
nated drive 2 (with D2:), you can use the /SS command to store your sheets 
without having to type in the D2: prefix. In this case, drive 2 is said to be the 
"default" drive. To return the default condition to drive 1, use the D1: prefix 
with the /SS or other storage commands. For more information on device pre- 
fixes and file suffixes, read the File Name section in the STORAGE command 
reference. Part IV. 

Let's go ahead and name the file we are saving EXAMPLE. Place the blank, 
initialized diskette you're going to use in drive 1. We want to tell VisiCalc to 
save the file on the diskette in that drive. Type in the file name EXAMPLE As 
usual, you can correct typing errors with the BACK 8 key. When you are 
satisfied, press ® 



26 



VisiCalc Postscript: Protecting Your \Nork 

The disk drive should begin whirring and the BUSY light should come on. 
After a moment, the drive should quiet down, the BUSY light will go off, and 
the prompt and edit lines will go blank. Your work is safely filed away on the 
storage diskette. 

This completes Lesson One. You may wish to experiment for a while, moving 
the cursor around and writing your own labels, numbers and formulas. Try 
writing some formulas by pointing the cursor to obtain the coordinates. 
VisiCalc has many more features we haven't discussed yet, and you may 
stumble upon one of them. If something happens that you don't understand, 
make a note of it and then continue with the next lesson. Most of your ques- 
tions will be answered as you go. You already know enough about VisiCalc to 
use it for some simple applications. Try it! 

Postscript: Protecting Your Work 

Have you ever worked out a problem or made some notes to yourself on a 
sheet of paper only to find out later that the sheet had been lost or that some- 
one had accidentally thrown it away? Or perhaps you've lost the results of some 
calculation you were performing on an electronic calculator because power 
was turned off or the battery died. Things can and do go wrong. 

As you begin to use VisiCalc, you'll find that at times the results you see on the 
screen may be quite important to you. Losing that information at the wrong 
time would be at best a real nuisance, and at worst, something of a disaster. 
How can you protect yourself against such losses? 

Save Your Work As You Go 

VisiCalc does its best to protect you. For example, if you give the command 
to clear the screen (intentionally or accidentally) by typing /C VisiCalc will 
display CLEAR : Y TO CON F I Rfl on the prompt line. Only if you type the 
letter Y at this point will the contents of the sheet be erased. If you type any 
other key, the clear command will be aborted, and the sheet will be left un- 
changed. Similarly, if you type /B to blank out an entry, nothing will happen 
until you press one of the keys: | | ■» -* or ®. Any other key will abort the 
BLANK command. 

However, things beyond VisiCalc's control can go wrong. What if your building 
has a power failure? What if someone pulls the plug from the socket? What 
if you are called away by some emergency, and the janitor turns off your 
computer? 

To protect yourself, you should save the electronic sheet periodically on 
diskette. As you work, think of how long it has been since you last saved the 
sheet. If you have spent more time than you would wish to lose if something 
went wrong, or if you have new results which might be difficult to reconstruct, 
then it's time to save the sheet again. 

To keep track of several versions of the same information on diskette, you can 
append a sequential number to the file name you use when you save the sheet. 
Thus, the file name, FRCAST1 might become FRCAST2. Remember that only 
eight alphanumeric characters are allowed for the file name. 



27 



Making Backup Copies of Diskettes Lesson One 

Making Backup Copies of Diskettes 

Saving your work periodically on diskette is only the first step in protecting 
yourself. A diskette is a safe and reliable medium for storing information. 
However, a diskette can be harmed even in ordinary use. A diskette may be 
scratched, or it may pick up grease or dust. It may be damaged by heat, ex- 
posed to a magnetic field, or accidentally be re-initialized, thus erasing its 
contents. And a diskette will eventually wear out. Its average lifetime is about 40 
hours of use (whenever the BUSY light is on, the diskette is in use). To protect 
yourself, you should always make extra copies of your important files on 
separate "backup" diskettes. 

To make a backup copy of your files, you can use VisiCalc's STORAGE com- 
mand. Simply insert the diskette containing the file you want to copy into the 
disk drive 1, and use the /SL command to load the sheet from the diskette file 
into memory. For details on the /SL command, see Lesson Two and the 
STORAGE Command in Part III. Then insert an initialized storage diskette into 
drive 1 and use the /SS command to save the same information on the new 
diskette. The time it takes to make backup files will be amply repaid the first 
time you try to load a file from a diskette, only to get the message that an error 
occurred while trying to read the disk. 

Alternatively, you can copy the entire contents of one diskette to another 
diskette. To do this, you must use programs that are provided with the Disk 
Operating System (DOS) for your ATARI 810 floppy disk drive. Read the DOS 
manual that comes with your disk drive carefully and follow the directions on 
the duplication procedure. 

Test your understanding of the procedures on a data diskette you make ex- 
pressly for experimentation. Until you thoroughly understand the procedures, 
don't risk using diskettes with important data on them; you may lose the data 
while learning. 

Making backup files is important. It's all too easy to read about these protec- 
tive measure, use them once or twice, and then when you're in a hurry, skip 
the backup steps. 

Remember Murphy's Law: If anything can possibly go wrong, it will. Protect 
yourself. 



28 



Lesson Two 

31 Loading the Sheet from Diskette 

32 Replicating a Formula 

35 Replicating a Range of Formulas 

36 Formatting the Screen Display 

37 Fixing Titles In Place 

38 Now for a Quick Recalculation 

39 Adjusting Column Widths 

41 Splitting the Screen 

42 Global Commands in Separate Windows 

43 Summary 

44 Postscript: Memory and the Electronic Sheet 

45 Shrinking the Sheet 



Lesson Two 



In this lesson, you will learn how to extend the basic principles behind VisiCalc 
learned in Lesson One by applying them with new commands. We will begin 
with the example built up in Lesson One, showing a figure for SALES, and 
formulas to calculate COST of goods sold and GROSS profit. 

If you have just finished Lesson One, everything you need should still be 
present on the electronic sheet. Check your screen against the screen photo 
below, and continue with the text from that point. If you want to practice load- 
ing the sheet you just saved anyway, type /CY and then follow the instructions 
in the next section. 

If you're tackling Lesson Two in a new session, your first step is to load the 
VisiCalc program into your computer's memory. The instructions to do this are 
in Part I in the section entitled "Loading VisiCalc." 

If you saved the results of Lesson One on diskette, you can easily reload the 
same information by following the instructions below. 

If you didn't save EXAMPLE on diskette, you can type it in. To practice moving 
the cursor as well as the writing labels, numbers, and formulas, you can go 
through the steps in Lesson One. Or you can type exactly the characters you 
see below. Remember you may have to use the SHIFT key to type some of the 
characters. 

>A1® 

SALESI100® 

>A2® 

C0ST|.6*B1® 

>A3® 

"-GROSS-I + B1-B2® 

>B1® 

Compare what you have on your screen with the photo below. If everything 
looks fine, go ahead with the next section, "Replicating a Formula." 

Loading the Sheet from Diskette 

Make sure that your disk drive's BUSY light is off, then open the drive door and 
(if you haven't done so already) carefully remove your VisiCalc program 
diskette and replace it in the pocket on the inside front cover of this manual. 
Take out the storage diskette onto which you saved the file, EXAMPLE. VC 
and insert it into drive 1. Be sure that the label on the diskette jacket is up and 
on the side of the diskette nearest you. Gently push the diskette all the way in, 
and close the drive door. 

Now type the VisiCalc STORAGE command /S. The prompt line reads 

STORAGE: L S D I a # 

To review the meanings of the characters L S D I Q # , check the section en- 
titled "Saving the Electronic Sheet on Diskette" at the end of Lesson One. 

Press L The prompt line reads F I LE TO LOAD. At this point, yDu could 
simply type the name EXAMPLE, ending with the ® key. But let's try something 
else. We will scroll the file names from the storage diskette. 



31 



Loading the Sheet from Diskette Lesson Two 



Press the | key once (don't forget to hold down the CTRL key while you do). 
Your disk drive will whir for a moment as VisiCalc looks at the directory and 
the BUSY indicator lights on each drive will come on. Then the name 
EXAIIPLE . VC will appear on the edit line. Note that VisiCalc has appended 
the .VC suffix. If a different name appears, press the | key repeatedly until you 
get the name EXAMPLE.VC. 

If the file you're looking for is not on the diskette, you will eventually scroll 
through all the file names on the diskette and out of the /SL command. 
For more information on the scrolling, look up the File Name section of the 
STORAGE command Reference. 

Assuming that you have the name EXAMPLE.VC on the edit line, press ® 
Watch the characters flashing by at the left end of the edit line. These are 
equivalent keystrokes to the ones you would type from the keyboard to set up 
the sheet. VisiCalc automatically "types" them in at high speed as they come 
back from the diskette. Once the loading process ends, your screen should 
resemble the photo below. 




Replicating a Formula 

Your screen should look exactly like the one pictured above. The cursor should 
be at B1. If not, type >B1® Further, if the number at 81 is not 100, just type 
100 and press ® 

At present, we have figures for sales, cost of goods, and gross profit for only 
one month (or year, or other period). Now, we'll project these figures out for 
twelve months. 

Let's begin by assuming that SALES will increase by 10% each month. Press 
the I key to move the cursor to CI and type: 1.1 *|® 



32 



VisiCalc Replicating a Formula 



Notice that we used a cursor movement to fill in the coordinate B1 in the 
formula for the next month's sales. The entry contents line at the top of the 
screen now reads 

CI (V) 1.1*B1 

and the number under the cursor at C1 is 110, or 1.1*100. 

To calculate sales for the remaining ten months, we would have to move the 
cursor to D1 and type the formula 1.1 *C1, then move on to El and type 1.1 *D1, 
and so forth. Since this is such a common operation and it requires so many 
keystrokes, VisiCalc provides a shortcut. 

That shortcut is the REPLICATE command, and it can be used to make copies 
of, or to "replicate" formulas, labels, numbers, blank entries, etc. across 
columns, down rows and so forth. In this lesson, we'll use the replicate com- 
mand in just a couple of simple examples. The many uses of this command are 
covered more fully in Lesson Three. 

With the cursor at CI, type /R to enter the REPLICATE mode. The prompt line 
reads REPLI CATE: SOURCE RANGE OR RETURN, and the edit line 
CI, the coordinate of the formula on which the cursor rests, followed by the 
small rectangle. Because you're going to use only one formula as your source 
(not a range of formulas), press ® to select CI as the single item to be repli- 
cated. 

The prompt line now reads REPL I CATE : TARGET RANGE and the edit 
line reads 

CI . . . CI: 

followed by the small rectangle. Since you've told VisiCalc that you want 
REPLICATE the formula at C (with the /R command), it needs to know where 
(the "target range") you would like it replicated (copied) on the electronic 
sheet. 

Our intent is to project sales out for twelve months. The first month is shown at 
81, the second at CI, and the twelfth month will be at Ml. Hence, we want the 
formula replicated in the target range of positions from D1 to Ml. 

Press the ^ key to set the beginning of your target range at D1. Now type a 
period to tell VisiCalc that the next coordinate will be the second part of your 
target range. If you don't type the period, every use of the | will simply create 
a new target start entry, instead of extending the ending coordinate of the 
target range. The period both acts as a delimiter and produces three periods 
following D1. The edit line now reads 

CI . . . CI: Dl . . . 

As you can see, by moving the cursor, we are indicating where we want copies 
of the formula to be placed. Now press the % key ten times (until the cursor 
rests beneath Ml). Notice that as you move the cursor to Dl, El, F1, and so on, 
the "target range" on the edit line reads 

Dl . . . Dli, Dl . . . El, Dl . . . Fl, 

and so on. VisiCalc is "filling in" the ending coordinate of the target range, 
just as it did when we moved the cursor in the middle of typing a formula. 

When you have finished pressing | key ten times, the cursor will be resting at 
Ml, and the edit line will read 

CI . . . CI: Dl . . . ni 

33 



Replicating a Formula Lesson Two 



If you moved too far wrth the |, you can move back with the |. Now press ®. 
The cursor jumps back to C1 , where the original formula is stored. The edit line 
reads 

CI: Dl . . . ni: 1 .1*B1 

The small rectangle is highlighting the coordinate B1 on the edit line. The 
prompt line reads 

REPLICATE: N=NO CHANGE, R=RELATIVE 

VisiCalc is asking whether we want the same formula, 1.1*B1, at each of the 
positions in the target range D1 . . . M1 , or whether the coordinate B1 should be 
interpreted as relative to the position of the formula. 

We want to show sales increasing by 10% in each month, so we want the 
formulas to be 1.1*81, 1.1*C1, 1.1 *D1, etc. In other words, we want the for- 
mula to be relative; each new sales figure should be 1.1 times the previous 
month's sales. Press the letter R and watch the screen. The information on 
the prompt and edit lines disappears. The cursor remains at CI, where we 
started, and numbers appear in the visible columns. 




Use the | key to move the cursor to Dl, El and F1, and notice what appears 
on the entry contents line: 1.1*C1, 1.1 *D1, and 1.1 *E1. Press the | key seven 
more times to move the cursor over the entries G1 through Ml, scrolling the 
window to bring them into view. VisiCalc has "typed" the formulas for you, 
and calculated the sales values for all twelve months. At Ml , the twelfth month's 
sales should be shown as 285.3117 (to four decimal places). 

VisiCalc offers many more options for the replicate command, and we will cover 
these in succeeding chapters. For the present, however, remember these five 
easy steps for replicating a formula: 

1) Point the cursor at the entry position you want to replicate. 

2) Press /R to start the replicate command. 

3) Press® 



34 



VisiCalc Replicating a Range of Formulas 

4) Point the cursor at the first entry position in the range of positions 
where you want the formula replicated, press . and point to the last entry 
position (or you can type in the entry coordinates). 

5) For each coordinate in the formula, press either N or R depending on 
whether that coordinate should be left unchanged, or interpreted as 
relative to the position of each copy of the formula. 

Replicating a Range of Formulas 

Type >A2® to scroll the window all the way back to the left edge of the sheet, 
and then press ^ to move the cursor to B2. To complete our twelve month pro- 
jection, we would like to replicate the formulas for cost of goods sold and gross 
profit. At the moment, the entry contents line shows the formula for cost of 
goods, . tj*Bl. If we were to move the cursor to B3, we would see the formula 
for gross profit, +81 -82. Our next project is to replicate both of these 
formulas across the sheet simultaneously. 

Press /R The prompt line reads 

REPLICATE: SOURCE RANGE OR RETURN 

and on the edit line is 82, followed by the small rectangle. If you were to press 
® at this point, as we did before, you would replicate just the formula for cost 
of good sold at 82. When you were finished, you would come back to the 
formula for gross profit at 83 and replicate it into the same range of columns as 
you did for 82. We can accomplish both of these steps at once: Type .B3® The 
edit line now reads 

B2 . . . B3: 

VisiCalc acknowledges that we want to replicate a "source range" of formulas, 
82 through 83, instead of just hitting ® to indicate use of single formula shown 
on the edit line. The prompt line reads 

REPLICATE: TARGET RANGE. 

Instead of pointing at the first and last positions as we did before, we will type 
the coordinates of the target range. Type C2.M2® 

For a source range of 82 ... 83 and a target range of C2 . . . M2, VisiCalc will 
assume that the formula at 82 (for cost of goods) is to be replicated at posi- 
tions C2 through M2, and the formula at 83 (for gross profit) is to be replicated 
at positions C3 through M3. In other words, we must enter each range (for 
row 2 and for row 3) separately. 

The prompt line now reads 

REPLICATE: N=NO CHANGE, R=RELATIVE 

and the edit line reads 

BE: CE . . . HE: .t*Bl 

with a highlight over the coordinate 81. Do we want the formula at coordinate 
81 to be interpreted as "absolute" (N) or as relative (R) to each month's sales? 
Our intent is that cost of goods sold in any given month will be 60% of that 
month's sales. 



35 



Replicating a Range of Formulas 



Lesson Two 



Hence we want B1, the coordinate for SALES, to be interpreted as relative to 
the position of each copy of the formula. For the formula at B2, we want the 
sales figure just above it, or B1 . For the formula at C2, we want the sales figure 
just above it or C1; and so on. 

Press the letter R Almost instantly, numbers appear in the other columns, and 
the edit line now reads 



B3: C3 



113: +B1 



with a highlight over B1. VisiCalc is ready to replicate the formula for gross 
profit, at B3, into positions C3 through M3. The + B1 is the beginning portion of 
the formula +B1 -B2. Again, we want B1 to be interpreted as relative to the 
position of each copy of the formula. 

Press the letter R again. Now the rest of the formula appears on the edit line, as 
+ B1 -B2, this time with a highlight over B2. B2, or cost of goods, is also rela- 
tive in the gross profit formula. Press R once more. Numbers will appear in 
the other columns of row 3, and the prompt and edit lines will go blank. The 
REPLICATE command has finished its work. 



iC05T 
J-GkOS5- 



Use the arrow keys to move the cursor to the right and up and down to examine 
the formulas and calculated results displayed in columns C, D, E and so on. 
Finally, type >M1® to get to the last month's sales, cost of goods and gross 
profit, in column M. VisiCalc has saved you a good deal of work already. But 
these numbers are somewhat hard to read, because they fill the columns and 
don't always line up. Can we do better than this? 

Formatting the Screen Display 

Of course. In fact, we can change the whole sheet (a "global" change) to an 
integer format. Type /GFI (for "Global Format Integer"). If you scroll the 



36 



VisiCaic Formatting the Screen Display 



window to the left, you will see that all of the numbers that come into view on 
the screen have been rounded to integers and aligned to the right side of each 
column. 

However, this does not mean that VisiCaic has actually rounded the numbers 
that it uses in its calculations. Each number is calculated and maintained with 
up to eleven significant digits or decimal places (so that, for instance, each new 
period's sales is based on an accurate rendition of the previous period's sales). 
The numbers are rounded only as they are displayed on the screen. 

Perhaps you'd prefer to see two more decimal places, for "dollars and cents." 
Press / the keystroke which starts all commands. The prompt line reads 

conn AND: BCDFGinPRSTVU- 

Each of the keys, B, C, D, and so on through " - " is a keystroke for a different 
command. 

So far, we have seen the commands /B (for BLANK), /C (for CLEAR), /R (for 
REPLICATE), and /S (for STORAGE). Now, press G The prompt line reads 

GLOBAL: CORF 

VisiCaic has recognized the GLOBAL command, which is used to change 
something about the entire screen display. Next, VisiCaic expects one of the 
keystrokes C, O, R, or F. Press F Now the prompt line reads 

FORnAT: D G I L R * * 

VisiCaic is ready to change the screen format (the way in which numbers and 
labels are displayed on the screen) over the entire sheet. 

A moment ago, you used the letter I to change all of the numbers to integer 
format. Now press $ (don't forget to use the SHIFT key). And remember, you 
can use the BACK S key to correct typing errors or the BREAK key to quit the 
command and start over. Notice how the screen display changes to show 
everything in dollars and cents form. 

As you might guess from the FORMAT prompt list (D G I L R $ *). VisiCaic 
offers ways to format numbers and alphabetic labels. You can, for example, set 
the format of each entry position individually, instead of globally. These options 
will be covered more fully in lessons Three and Four of this Tutorial. 

Fixing Titles In Place 

if the cursor is not on M1, type >M1® Only the numbers for each month's 
sales, cost of goods and gross profit are shown on the screen. The titles 
SALES, COST, and -GROSS- have scrolled off the screen window to the left. 
Imagine the situation if you were preparing a more complex income projection, 
with many rows of numbers for selling and administrative costs, taxes, and so 
on. It would be difficult to remember what each row of figures represented, 
once the titles had scrolled off the screen. So, let's look at a way to keep our left 
edge titles visible, no matter how far we scroll to the right. 

First, put the cursor back to the left edge, where the titles are. Type >A1® to 
bring the titles SALES, COST, and -GROSS- into view. Now, invoke the TITLES 
command by typing /T The prompt lines says T I TLES : H V B N. The 
possible keystrokes are: 



37 



Now For a Quick Recalculation Lesson Two 

H To fix horizontal titles. 

V To fix vertical titles. 

B For both horizontal and vertical. 

N For neither. 

Press the letter V to tell VisiCalc to fix the vertical column A, where the cursor 
lies, in its present position, as the left hand column of the screen. Press the i^ 
key eight times, and watch the screen. 

Notice that column A stays fixed in place while the remaining columns scroll to 
the left, disappearing when they reach column A. 

Now press the | key nine times. If you aren't sure of what happened, press the 
I key again. You are "bumping" into column A, just as you bumped into the 
left edge of the sheet earlier. Next, type >M1® Column A is still visible, making 
it easy to identify each row of numbers. 




Now For a Quick Recalculation 

So far, with the aid of the REPLICATE command, you have written one number 
(the beginning number for SALES at B1), and thirty-five formulas on the elec- 
tronic sheet. How are these formulas related? Press >B1® to bring the first 
columns into view, leaving the cursor on the initial SALES figure. 

The formula for COST at B2 is .6*B1 , which depends on the figure for SALES at 
81. The formula for gross profit at B3, in turn, depends on both SALES and 
COST ( + B1-B2). What about succeeding columns? At C1, the formula is 
1 .1 *B, so this entry also depends on the initial SALES figure. And cost of goods 
at C2 depends on the figure at C1 , while C3 depends on both C1 and C2. At D1 
we have 1.1 *C1, and so on. 



38 



VisiCalc Adjusting Column Widths 



As you can see, a change to the initial SALES figure at B1 will affect every other 
number on the sheet. Try it. Just type a new number, such as 123.45, and 
press ®. How long did it take to recalculate twelve months' worth of sales, 
cost of goods and gross profit formulas? Type 100® again, and watch the 
changes ripple through the other figures on the screen. Scroll the screen 
window to the right to view M1, the ending month's sales. 

At this point, you might be wondering how to change the percentages them- 
selves—sales growth figure of 10% or the cost of goods percentage of 60%— 
to recalculate gross profit. For simplicity's sake, we've designed this example 
so that the only changeable figure is the initial SALES. Since the figures 1.1 
and .6 are built into each of the twelve formulas for sales and cost of goods, 
we can't change these percentages without replicating all of the formulas 
again. 

A better approach would be to write the factors 1.1 and .6 into separate posi- 
tions on the sheet, and make the sales and cost of goods formulas refer to 
these positions. If we did this, changing the sales growth and cost of goods 
percentages would be as easy as changing the initial sales. We'll make use 
of techniques like this in Lesson Three in an example related to personal 
budgeting. 

Adjusting Column Widths 

For some time now, you've been scrolling the window back and forth across 
the sheet to view the figures for different months. You might be wishing for a 
larger screen that would display more columns at once. Type >B1® to return 
the cursor to coordinate B1. 

Type another GLOBAL command this time for a Column width of 7 characters: 
/GC7®. In an instant, the screen changes to display more columns. Each 
column has been narrowed from nine characters to seven characters in width. 

In general, you can use the command /GC to set the "global column width" 
to anywhere from 3 to 37 characters per column. Given a column width, 
VisiCalc will fit as many columns as it can across the screen. Note that you can 
only set column widths globally, not individually. 

Right now, the dollars and cents figures just about fill up the available space in 
these 7-character columns. Type /GFI to round these numbers to integers. 
Now that we have some extra space, we can narrow the columns further. 

Type /GC4® That gives us even more columns of figures in the window, with 
each column being four characters wide and displaying three digits. 

VisiCalc leaves an extra character blank to the left of each value. This "re- 
served" space has been included to keep the display from running large values 
together. Labels, however, do not have this extra space. 



39 



Adjusting Column Widths 



Lesson Two 



I 110 121 133 146 16 
60 66 73 80 88 97 iOS ii? 
49 44 48 53 59 6 4 71 7 8 



Look at the titles, SALES, COST, and -GROSS- in column A. SALES has been 
shortened to SALE and -GROSS- is now -GRO. Have we lost the rest of the 
labels SALES and -GROSS-? Type >A1® to move the cursor to position A1 to 
find out (if you press the | key, you'll bump into column A, which we fixed as a 
title area). 

Note that though the label at A1 still reads SALE, the entry contents line above 
reads A1 (L) SALES. Press the ^ twice to reach A3. The entry contents line 
again displays our true label 

A3 (L) -GROSS- 

Even though the columns have been narrowed, the full alphabetic labels are 
preserved. 

These labels can be more than nine characters long. In fact, you can type an 
alphabetic label as long as you like, regardless of the current column width, 
and the full label will be preserved. Try this: with the cursor still at A3, type 
GROSS PROFIT Then press the * key to move up to COST, and type COST 
OF GOODS SOLD followed by ® Next type /GC12® 

Notice that the entire label GROSS PROFIT comes into view, and the number 
of columns in the window is reduced. Now type /GC18® Notice the prompts 
GLOBAL: COR FandCOLUIIN U I DTH and the small rectangle on the 
edit line as you type. As usual, the BACK S key can be used for corrections as 
youenterthenumber18. The entire label COST OF GOODS SOLD can be 
seen. Let's go back to /GC7® 

The ability to fix titles in place and adjust column widths gives us some com- 
pensation for the limited size of the screen. But, suppose we'd really like to 
keep the wider columns and the cursor at B1, the initial sales figure, and 
change it, while watching what happens to the final sales and gross profit at 
column M. If only we had two screens. . . . 



40 



VisiCalc Splitting the Screen 

Splitting the Screen 

Type >E1® to move the cursor to column E. Now, type the WINDOW command 
/W The prompt line reads 

Ul NDOU: H V 1 S U 

Press V (for Vertical). Your screen should look like the photo below. 




You have created two screen windows. Each one can be scrolled inde- 
pendently to view any portion of the electronic sheet. At present, the cursor is 
in the left hand window. Use the -^ key to move the cursor downwards to row 
21 and beyond. The left window will scroll downwards to follow the cursor, 
but the right window will remain still. Bring the left window back to the top of 
the sheet with >B1® 

You may have noticed that the column widths that we set earlier have changed 
in the right window. VisiCalc must sometimes narrow these widths to accom- 
modate the extra border that split windows add to the screen. Whether VisiCalc 
narrows columns or not depends on width requirements. See the WINDOW 
Command Reference for further details. 

Press the semicolon ; key to jump the cursor into the right hand window. Press 
the ^ key to scroll the right window across to column M. We now have both the 
beginning and ending months' sales, cost of goods and gross profit figures 
visible at the same time. 

Press ; again. The cursor jumps back to the left window. Each time you press 
the ; key,' the cursor jumps from one window to the other. Notice that the cursor 
has landed at the same position it was on when we last jumped out of the left 
hand window. 

Now we can change the initial sales figure and watch what happens in the final 
month. Type 123® and let VisiCalc recalculate. Notice that during recalculation 
an ! appears in to the right of the "C" in the upper right corner of the screen. 

SALES in column M should be 351. Try typing a few more numbers with the 
cursor at B1. See if you can find, by trial and error, the initial sales figure that 

41 



Splitting the Screen Lesson Two 



yields twelfth month sales of 1000 (rounded to the nearest integer). Hint: You 
can type a number with a decimal point, even though it will be displayed in 
rounded form. 

When you finish experimenting with recalculation, type the WINDOW com- 
mand /W and the numeral 1 for one window, the normal screen. We have 
seen that the idea of a split screen is useful. Can we get any more mileage 
out of this approach? Take a look at the screen, and notice how much of it is 
empty. Perhaps we can use the lower part of the screen to better advantage. 

Type >B11® to move the cursor down to the middle row of the screen. Now 
type /WH (for horizontal). Your screen should look like the photo below. 




This time the screen is split horizontally into a top and bottom window. Press 
the ; key to move the cursor into the bottom window. Next hold down ^ to 
scroll the bottom window upwards until the cursor bumps into the top edge of 
the sheet. Both windows are now displaying the same portion of the electronic 
sheet! 

The cursor should be at B1 in the bottom window. Change the number at B1 to 
100 in the bottom window, and watch what happens. The recalculation affects 
both windows. Use the ^ to scroll the bottom window to the right until column 
M comes into view. Now you can see the figures for the first and the last 
months at the same time. 

Global Commands in Separate Windows 

VisiCalc allows you to have different column widths in each window. To accom- 
plish this, press ; to move the cursor into the top window. Now, type /GC4® to 
change the upper window column width to four characters, while the lower 
window retains a width of seven characters. 

Always remember that the global commands /GC and /GF affect only the 
window in which the cursor rests at the time the command is typed. 



42 



VisiCalc Global Commands in Separate Windows 

You've just done a global column change. Now let's try a global format change. 
Begin by pressing ; to move the cursor to the bottom window. Type /GF$ You 
now have dollars and cents displayed in the bottom window and integers in the 
upper. 

Press ; to jump the cursor into the top window and type >B1® to highlight our 
original sales figure. At B1, type the number 300 followed by ® and watch the 
changes ripple through all the columns as VisiCalc recalculates all the 
formulas. Now type the number 600® What happens? 

Columns H through M show > symbols in some positions instead of numbers. 
The calculated results are too large to display in integer form in the narrow 
columns of the top window, or with two decimal places in the bottom window. 
You can press ; and type /GFI to see the final sales figure at M1 in the bottom 
window. It should be 1712. 




Summary 

You have covered a lot of ground in this lesson. We encourage you to review 
any points you might have had difficulty with and to try your own experiments. 
The more you work with VisiCalc, observing and analyzing the results, the more 
quickly you will master it for your own work. Just remember the following key 
points: 

1 . No matter what you type at the keyboard, you cannot hurt either 
the computer or the VisiCalc program. Moreover, it's fairly difficult 
to destroy your own work on the electronic sheet, particularly if 
you watch the prompt line for keystroke-by-keystroke feedback 
and save the sheet periodically on diskette. 

2. Throughout this lesson, we have introduced only four new com- 
mands. They are: 



43 



Postscript: Memory and the Electronic Sheet Lesson Two 

The REPLICATE command /R that reproduces similar 
formulas in adjacent rows and columns. 

The GLOBAL command /G that changes the columns width 
(/GC) and the way numbers are formatted (/GF). 

The TITLES command /T that fixes rows or columns of alpha- 
betic titles in place, as part of the top or left hand "border." 

The WINDOW command /W that splits the screen, either 
horizontally or vertically, into two independently scrollable, 
formattable windows. 

Much of the power of VisiCalc is due to the simple and highly 
consistent way in which these commands interact with one 
another. In almost any context, a command will do what you 
would logically expect. 

3. Aside from the replicate command, which basically saves you 
time as you write formulas, all of the commands discussed in this 
lesson affect only the appearance of your work on the screen 
(generally in an effort to compensate for a small screen size). 
Nothing you might do with the /G, /T or /W commands can affect 
the labels, numbers or formulas actually written on the sheet. 
When in doubt, you can always type /W1 /TN /GFG /GC9® to 
return everything to normal. 

Armed with these assurances, you should be ready to experiment. Clear the 
screen and try out these commands with a problem of your own. If you don't 
understand something, go back through this lesson to see what you might have 
missed. Also check Part III, the VisiCalc Command Reference section and the 
VisiCalc Reference Card for more complete explanations. Once you under- 
stand the fundamentals of this lesson, you'll know enough about VisiCalc to 
begin using it effectively. 

Postscript: Memory and the Electronic Sheet 

As you may know, your computer contains two kinds of fast semiconductor 
memory: RAM and ROM. ROM or "Read Only Memory" is manufactured with a 
fixed pattern of data or program instructions stored in it. RAM or "Random 
Access Memory" is made in such a way that it retains data that is put into it 
only as long as the memory's electric power is left on or until new data is put 
into the memory in place of the old data. Data or program instructions are put 
into RAM memory either by typing at the keyboard or by loading prerecorded 
programs or data from cassette or diskette. 

The VisiCalc program is loaded into RAM memory from diskette, and it, to- 
gether with some RAM that the computer itself requires, takes up about 26K 
bytes. The remainder of RAM memory is devoted to the VisiCalc electronic 
sheet. VisiCalc manages this area of memory automatically. You never have to 
concern yourself with the details of how the electronic sheet is maintained. But 
you will find it useful to have a general idea of how the sheet works as you 
begin using VisiCalc to its fullest capacity. 

Essentially, VisiCalc reconfigures the electronic sheet dynamically. That is, 
VisiCalc expands the size and shape of the sheet as you use it. You actually 
start with a 1 by 1 sheet, starting and ending at position A1. Although you can 

44 



VisiCalc Shrinking the Sheet 



move the cursor to any position up to BK254, no memory is actually allocated 
for the sheet until you write something on it. 

Then the sheet grows into a rectangle just large enough to include the right- 
most and bottommost positions in which something is written. If you type a long 
message or formula at a particular entry position, VisiCalc will reserve addi- 
tional bytes of memory for the position, but all of the other positions on the 
sheet will remain just large enough to hold the information which you have 
written in them. This is called "dynamic memory allocation." 
VisiCalc continually displays the amount of memory available to you through 
the memory indicator. The memory indicator is the two-digit number located in 
the right corner of the prompt line just below the letter C. This number is the 
amount of memory in kilobytes still available for additional entries on the sheet. 
With 32K of memory, this number should be 06 (or close to it). The memory 
indicator will vary as you write information on the sheet or use commands such 
as replicate, to write information. 

As you move further downwards and to the right, writing labels, numbers and 
formulas, more and more memory is used until the available memory is ex- 
hausted. If you finally exhaust all of the available memory, VisiCalc will flash 
the exclamation point in the upper right corner of the screen, replace the 
memory indicator with the letter M, and refuse to write anything more on the 
sheet. 

To sum up, VisiCalc manages memory efficienctly and automatically. Because 
memory is dynamically allocated and the sheet is reconfigured to suit your 
needs, you can work ahead of yourself in terms of memory. Note, however, 
that if you have a relatively small amount of memory, you certainly shouldn't 
be wasteful with it. Aside from noticing from time to time how much space is still 
available for you to write in more entry positions, you need not concern your- 
self with problems of memory management. 

Shrinking the Sheet 

One thing VisiCalc does not do automatically, however, is to "shrink" the sheet. 
Suppose that you have written on various portions of the sheet, causing it to 
grow to a size of 100 by 100 positions. Later, having finished with this informa- 
tion, you might have erased or blanked out the entry positions near the right 
and bottom edges of the 100 by 100 sheet. 

However, the sheet will remain configured as 100 by 100, although each empty 
position will require only 2 bytes. If you begin using additional memory by 
writing lengthy labels and formulas in other positions, you may want to shrink 
the sheet to the smallest possible configuration for the information still written 
on it. 

To do this, you must save the sheet on diskette with the /SS command (as 
discussed in Lesson One), clear the sheet with /CY and reload the saved sheet 
with the /SL command (as discussed in Lesson Two). As the disk file is loaded, 
VisiCalc will enter on the sheet only those labels, numbers and formulas 
actually saved, and in the process the sheet will grow from a 1 by 1 configura- 
tion to just the size you need for the information remaining. This will make more 
memory space available for additional labels and formulas. 



45 



Lesson Three 

49 Setting up for the Budget Sheet 

50 Replicating Numbers and Labels 

51 Using Formulas For Flexibility 
53 Replicating Down a Column 

53 Replicating a Column Several Times 

55 Fixing Titles In Both Directions 

56 The Built-in Function @Sum 

58 Formatting a Single Entry 

59 Replicating a Format Specification 

60 Using Replicate To Copy a Row or Column 
60 Changing Windows and Titles 

62 The @NA and @ERROR Functions 

63 The Insert and Delete Commands 

65 Calculating Interest On a Savings Account 

66 The Move Command 

68 Obtaining Monthly Expense Percentages 

69 Synchronized Scrolling 

70 The Order of Recalculation 

72 Forward and Circular References 

73 Summary 

74 Postscript: The Print Command 



Lesson Three 

In Lessons One and Two, we used several examples to illustrate both the sim- 
plicity and the power inherent in VisiCalc's concepts and features. In Lesson 
Three we will expand on the use of previously learned commands, bringing 
them into more powerful combinations. 

To present these new combinations and to introduce new commands, we will 
set up a household budget as our example. We will supplement this example 
with suggestions on how you can adapt it to your personal use. Continue to 
work carefully through the examples and experiment to deepen your under- 
standing. You skill in using VisiCalc will grow proportionally with the amount of 
practice you have with it. 

Let's begin with a clean slate. Load the VisiCalc program into your computer 
as described in the section entitled "Loading VisiCalc," or, if you already have 
the program running, clear the sheet by typing /CY 

To prepare a budget, we'll first project our income for the next twelve months. 
We'll also project various necessary expenses such as food, rent or mortgage, 
telephone, etc. as well as semiannual expenses such as car insurance. Then 
we'll use VisiCalc to find out how much of our income is left for leisure and for 
savings and what percentage of our income is going for each category of ex- 
pense. Finally we'll consider various enhancements such as calculating the 
interest on our savings account. 

Setting up for the Budget Sheet 

Let's begin by laying out twelve months or periods across the sheet. With the 
cursor at A1 , type the word PERIOD to label row 1 and press the | key to move 
on to position B1 . At this point, we have three choices as to how to number the 
twelve periods. 

First, you could just type in the numbers 1 through 12 from B1 through M1. 
Second, you could type in a few numbers and replicate the rest, using the 
cursor to point to the extra coordinate positions. Third, you could type in the 
beginning number (1) at B1 and replicate that number with a relative formula 
that would add 1 to each previous number. 

For speed in setting up the sheet, let's use the third method. After all, we know 
from our earlier example that a label at A1 with twelve periods (months, years, 
etc.) following will extend to M1. If we weren't sure how many columns we 
would have to use, method two would be preferred. 

With the cursor at 81, type in the number 1, our starting numeral and press 
the I key. Let's put our initial "counting formula" at CI. A counting formula 
should add one to each previous number, right? So, type 1-I-B1® at CI. The 
prompt line should read CI ( V ) l + Bl and coordinate CI, highlighted by 
the cursor, displays the result of that formula as the number E. 

Now, let's replicate this formula from D1 to Ml . Type /R® The prompt line reads 
REPLICATE: TARGET RANGE. The edit line reads 

CI . . . CI: 



49 



Setting up for the Budget Sheet Lesson Three 

followed by the small rectangle. Type D1.M1 (D1 is our starting position; the 
period is our coordinate delimiter; and M1 is the final coordinate). The edit line 
should read 

CI . . . CI: Dl . . . m 

Now press ® The prompt line reads REPLICATE: N = NO CHANGE 
R = RELAT I VE. The edit line reads 

CI: Dl . . . Ill: 1 + Bl 

with a highlight on B1 as in the photo below. 




Press R to make the coordinate relative: This will give us 1 +C1, 1 +D1, etc. If 
you chose N, the absolute use of the formula would give you 1+EI2-the 
numeral 2-in every position from D1 through M1. The prompt and edit lines 
should go blank. Move the cursor out to column M to check your work. Posi- 
tion M1 should show the number 12. 

Replicating Numbers and Labels 

To start filling in our budget sheet, type the following characters. End each 
entry with the ® key as shown: 

>A2® INCOME[^1800® 

We'll assume that $1800 is your monthly "take-home pay" after taxes and other 
deductions. Now let's fill in the figure 1800 for all twelve months. Press /R® 
Can you replicate a single number as well as a formula? 

Of course: a number is actually the simplest case of a formula. For the target 
range, type C2.M2 ® VisiCalc doesn't ask whether the new formula is relative 
or not, because the "formula," 1800, has no coordinates. The number 1800 
should now appear in all twelve columns, in positions B2 through M2. 



50 



VisiCalc Using Formulas For Flexibility 

Next, we'll draw a line across the sheet. Move the cursor with >A3® and then 
type /— The prompt line reads LABEL: REPEATING, and a small 
rectangle appears on the edit line. Whatever character or characters we type 
next will be repeated to fill the entry position A3. 

Type — followed by ® You should now have a line of nine hyphens at A3. Is this 
any different from typing the hyphens manually? Type /GC12® As you can see, 
the repeating label expands to fill the widened entry position. Go back to 
normal width by typing /GC9® 

How can we easily extend the line across all twelve columns? The ever-useful 
replicate command will also replicate labels. Type /R® For the target range, 
type B3.M3® It's that simple. You should now have a line of hyphens extend- 
ing all the way to column M. 

Using Formulas For Flexibility 

Before we go any further, let's think about what we've done. To save ourselves 
the trouble of typing the number 1800 twelve times, we replicated this number. 
That's fine as far as it goes, but is it the best way to handle our income? It would 
be better if we could change the income figure for all twelve months by just 
typing a new figure for the first month and taking advantage of VisiCalc's re- 
calculation feature. Let's replicate a formula instead of a number. Type 

>C2® 

+ B2® 

We have defined the second month's income to be the same as the income for 
the first month. Next, let's replicate: Type /R® The target range is D2.M2 ® 
Now the prompt line reads REPLICATE: N = NO CHANGE, R = 
RELAT I VE. Do we want the same formula, +82, in all of the remaining posi- 
tions, or would we prefer + B2, + C2, + D2, etc.? Either way we can change the 
income for all twelve months simply by typing a new number at B2. 

Think further. What if we should get a raise in the sixth month? If every formula 
read " + B2" (the NO CHANGE case) you could change any month besides 
period 1 by typing in the new income figure. However, VisiCalc wouldn't repli- 
cate this change to later months, because all figures are based on B2. 

If, on the other hand, each formula refers to the previous month (the RELATIVE 
case), we can simply type a new number in month 6 and "propagate" the 
change through months 7-12. Let's try it. Type R to make the coordinate B2 
relative. When the replicate command has finished, use the ^ key to move to 
month 6 (position G2). Now type 2000® 

Press I a few more times to verify that each succeeding month's income has 
changed to 2000. Were you able to foresee the way in which the change would 
be propagated? Note that G2 now contains a number (2000) instead of the 
formula +F2. H2 is +G2. Naturally, it will copy anything in G2. 

Likewise, 12 reads +H2, so what was in H2 (2000) will be replicated into 12, 
and so on through M2. 

If you weren't sure, move the cursor over all twelve income figures and imagine 
what would have happened if all of the formulas were +B2. Or, if you feel ad- 
venturous, go back to where you began replicating this example (with the 
cursor on C2) and choose the NO CHANGE option to see what happens. 



51 



Using Formulas For Flexibility 



Lesson Three 



Our next task is to list our expense categories and estimate monthly amounts 
for each category. Some expenses will vary from month to month, and other 
expenses will occur perhaps only every six months. We will leave these blank 
for the moment. You can either type the following exactly as shown, or you can 
use the arrow keys to move the cursor and save yourself some keystrokes. 
Hint: to take full advantage of the arrow keys, type all the alphabetic labels first. 

>A4® 

MORTGAGE|600| 

>A5® 

UTILITIES! 

>A6® 

TELEPHONE!75| 

>A7® 

FOOD!350! 

>A8® 

CLOTHING^IOO! 

>A9® 

CAR EXPENSE^SO! 

>A10® 

CAR INSURANCE! 

>A11® 

SAVINGSI150! 

>C2®| 

At this point your screen should look like the screen photo below: 



pHCOHE 



MORTGAGE 



TELEPHONE 

:ooi> 

. -=: r-' E N 

.CAR IN5UR 



i 

1880 



Next, we would like to replicate the monthly expense figures in column B 
across for the remaining eleven months. Remember our discussion of the 
merits of replicating a number versus a formula for our monthly income? 

To give ourselves maximum flexibility, we should also replicate relative 
formulas for the monthly expenses. At C4 we want the formula +B4; at 06 we 



52 



VisiCalc Replicating Down a Column 



want the formula +B6; at C7 we want +B7; and so on. (We'll fill in figures for 
UTILITIES and CAR INSURANCE later.) These formulas are so similar to each 
other and to the income formula +B2 that it's tempting to look for a shortcut 
way of typing them. Once again, the replicate command comes to our aid. This 
time, we'll replicate a formula down a column instead of across a row. 

Replicating Down a Column 

Make sure that the cursor is at C2. The entry contents line reads C2 (V) +82. 
Just as we copied B2 to C2, we will want to copy B4 to C4, 85 to C5, and so on. 
Therefore, we want to treat the coordinate 82 as relative. Type /R® The 
prompt line reads 

REPLICATE: TARGET RANGE 

with CE . . . CE : on the edit line, followed by the small rectangle. Press 
the ^ key twice to point to the first coordinate in the target range. Now the 
edit line reads 

CE . . . CE: C^ 

Type a period. The cursor jumps back to C2, and the edit line acknowledges 
that the target range will start at C4. Next, press the ^ key nine times (or hold 
it down to utilize the auto repeat ability) to point to position C11 (opposite the 
figure for SAVINGS). The edit line now reads 

CE . . . CE: C^ . . . Cll 

This means that the formula at C2 will be replicated through the target range of 
C4 through C11. Press ® The cursor jumps back to C2, and the prompt line 
reads REPL I CATE : N = NO CHANGE, R = RELAT I VE. The edit line reads 

CE: C^ . . . Cll: +BE 

with the highlight over the coordinate 82. We want this coordinate to be rela- 
tive: Press R A column of numbers, from 600 to 150, appears in column C. 
Use the ■» key to move the cursor downwards, pausing to look at the formulas 
we've replicated. We have what we wanted: at C4 is +84, at C6 is +86, and 
so on. We also have formulas at C5 and C10, but we can easily eliminate them. 
You can use either the ■» or the -* (depending on your present position) and 
/B to do this, or you can use the GO TO command as follows 

>C5® 

/B| 
>C10® 

>C4® 

Replicating a Column Several Times 

We now have the formulas we want for each expense category. The next step 
is to replicate these formulas across the rows through month 12. Think back to 
Lesson Two. Do you remember how we replicated a source range of formulas 
across the rows for both COST of goods sold_and GROSS profit? We can do 
the same thing here. 



53 



Replicating a Column Several Times Lesson Three 



Press /R and the prompt line will read REPLICATE: SOURCE RANGE 
OR RETURN. The edit line shows C4 followed by the small rectangle. This 
time our SOURCE RANGE will be an actual range from C4 through C11. Now 
point to each coordinate in that range by pressing the -w- key seven times to 
move the cursor down to C11. The edit line should read 

C^ . . . Cll 

followed by the small rectangle. Now press ® The cursor jumps back to C4, 
and the prompt line asks for a TARGET RANGE. Type D4.M4® as your reply. 

We have asked VisiCalc to replicate the formula at C4 into positions D4 through 
M4, the formula at C5 into positions D5 through M5, the formula at C6 into 
positions D6 through M6, and so on through the formula at C11 . Notice that we 
gave only the first coordinate in each column in the target range. 

The prompt line reads REPLICATE: N = NO CHANGE, R = RELATIVE. 
The edit line shows 

C^: D^ . . . \^A: +BA 

with the small rectangle highlighting B4. This is the formula for the first ex- 
pense, MORTGAGE. As was the case for B2 (INCOME), B4 should be relative. 
Press R and watch the screen. Several things happen: 

1. The cursor disappears (don't worry); 

2. The number 600 appears at position D4; 

3. The edit line now reads Cfc: Dt . . .fib: +Bb 

VisiCalc has finished replicating the formulas +B4, +C4, +D4, etc. in row 4, 
and has also replicated the blank entry at B5 into C5, D5, E5, etc. 

In replicating a source range, VisiCalc lets you consider each item in the range 
individually. Should each formula be interpreted as a NO CHANGE or RELA- 
TIVE formula? Therefore, VisiCalc asks you how to handle the formula + B6 on 
row 6. 

All of these formulas will be relative too. Press R five more times. With relatively 
few keystrokes, you have written a total of 80 numbers and formulas on the 
electronic sheet, with the aid of the replicate command. 

Think about the technique we used to replicate the expense formulas. Starting 
with the prototype formula +B2 at position C2, we created six more prototype 
formulas by replicating down a column: +B4 at C4, +B6 at C6, etc. Then, we 
used these formulas as our source range to replicate similar formulas across 
on rows 4 through 11. 

Each of the resulting monthly expenses can be changed for all twelve months 
simply by typing a new number for the first month. For example, type >B8® 
and change the number there to 120® Your CLOTHING budget is raised to 
$120 for all twelve months. 

To complete our projection of expenses, we'll fill in figures for those expenses 
which cannot be replicated across because they vary from month to month. 
Our UTILITIES bill will vary depending on the season and the need for heating 
or air conditioning. Our CAR INSURANCE premiums are due every six months; 
we'll pay a premium in month 1 and month 7. Type the following exactly as 
shown 



54 



VisiCalc Replicating a Column Several Times 



>B5® 

140^140|80|80M0M0|85^85|50^ 

50^100|140| 

>B10® 

160^ 

>H10® 

160^ 

We do not have to fill in zeros for the other ten months in the row for CAR 
INSURANCE, because VisiCalc treats any blank entry as equivalent to zero. 
(In fact, any entry containing an alphabetic label will have a "value" of zero if 
it is referenced elsewhere in a formula.) 

Now is a good time to save your work on diskette, if you have not already done 
so. Make sure that your disk drive's BUSY light is off, then remove your VisiCalc 
program diskette and replace it in the pocket on the inside front cover of this 
manual. Now insert an initialized storage diskette into drive 1 with the label 
side up, and the oval cutout entering the drive first. Close the drive door, and 
type /SS LSTHREE1 ® 

The disk drive should whir for a few seconds, and, if all is well, the drive will 
quiet down, and the prompt and edit lines will go blank. You should also, at 
this time, make a backup copy of this file on another diskette which you do not 
use except for storing the backup files. If you should decide to end this session 
at this point, be sure to remove any diskettes from the disk drive before you 
turn off the disk drive. 

Fixing Titles In Both Directions 

Again, we have a situation in which we will lose our descriptive titles INCOME, 
MORTGAGE, etc., if we scroll the window horizontally to look at later months. 
To solve this problem, we'll create a border of titles along both the left and top 
edges of the sheet and fix them in place. 

Move the cursor with >A3® and type the title command /T The prompt line 
reads 

TITLES: H V B N 

The meanings of the keystrokes H, V, B and N are described in Lesson Two and 
in Part III, The VisiCalc Command Reference. Press B to fix titles in both direc- 
tions. 

The position of the cursor has a dual significance for this command. If you type 
/TV to fix titles vertically, VisiCalc will fix in place the column in which the 
cursor rests and all columns currently on the screen to the left of the cursor. If 
you type /TH to fix titles horizontally, VisiCalc will fix in place the row in which 
the cursor rests, and all rows currently on the screen above the cursor. Typing 
/TB is equivalent to typing both /TV and /TH, so the exact position of the 
cursor is important. 

In this case, we have created a border consisting of column A along the left 
edge of the screen window, and another border consisting of rows 1, 2 and 3 
along the top edge of the window. To check this, hold down the -9- key to scroll 
the window downwards past row 21. Rows 1, 2, and 3 remain in place. Now 
type >B4® and press the | key to see how the window scrolls horizontally, 
leaving column A in place. 

55 



The Built-in Function (a)SUi\/l 



Lesson Three 



Since all other numbers are the same from column to column, only the PERIOD 
and INCOME figures in rows 1 and 2 will change. Continue pressing the | key 
until columns A, M, N, and O are in the window. We'll use columns N and O to 
obtain totals and percentages for our income and expenses. 

The Built-in Function (g)SUM 

Type the following 

>N1® 
TOTALS 

The cursor should be at N2. How can we find our total income for twelve 
months? You could always type 

+ B2 + C2 + D2 + E2 + F2 + G2 + H2 + I2 + J2 + K2 + L2 + M2 

but there's a simpler way. Press @ watching the prompt line as you do so. As 
soon as you type the @ symbol, the prompt line says VALUE. Now type SUM 
and the edit line reads a SUM (followed by the small rectangle). 

Now to indicate what numbers we want to sum. Hold down the | until you begin 
"bumping into" the left hand border. The cursor should be at B2, and the edit 
line should read aSUd ( BE followed by the small rectangle. 

Press . and the cursor jumps back to N2, where we started. The edit line now 
reads 

asun(BE . . . 

As you can see, we are specifying a range of entries, just as we did with the 
replicate command. To finish this range, press |) ® The entry contents line 
now reads NE (V) aSUf1(BE. . . ME ), and under the cursor highlight 
is the number E3DDD, our total income for the year. 




56 



VisiCalc The Built-in Function @SUM 



The @ symbol begins the name of a VisiCalc built-in function. When you began 
the entry at N2 with the symbol @, VisiCalc immediately knew that: 

1. The entry was going to be a numeric VALUE; 

2. The next few letters you typed would be the name of a built-in 
function. 

Each built-in function, such as @SUI\/I, performs some sort of calculation 
on the list of values given to it and yields a numeric result. Other examples of 
built-in functions are @MIN, @MAX and ©AVERAGE. See the reference card 
and Part III, The VisiCalc Command Reference, for a complete description of all 
the functions. 

Functions such as @SUM will operate over 

1. A range such as @SUM(B2 . . . M2); 

2. A list of particular values as @SUM(B2, B7, C3, D8); 

3. A list of ranges, values, numbers or formulas, such as @SUM(B2 . . . B7, 
C3 . . . C6, 25, D8, 4*C8). 

You can use any numeric result of a built-in functions just as you would an 
ordinary number. For example, you could place it in another function or 
formula. Let's get back to our example and obtain totals for each of the ex- 
pense categories in our budget. We'll use replication again just as we did for 
INCOME. 

With the cursor on N2 (our prototype formula), press /R® To enter the target 
range, type N4.N11® The prompt line displays REPLICATE: N = NO 
CHANGE, R = RELAT I VE, while The edit line reads 

NE: N^ . . . Nil: aSUn(BE 

with the small rectangle highlighting B2. 

Consider what will happen if we make B2 . . . M2 relative. Since we are replicat- 
ing down a column, the replicated formulas will be in positions N4, N5, N6, etc. 
We want N4 to be the sum of B4 . . . M4, N5 to be the sum of B5 . . . M5 and so on. 
That is what will happen if the replicated formulas are relative. Press R twice. In 
an instant, the expense totals, from 7200 to 1800, appear in column N. 

Note that if you wish to insert new material into an @SUM range, the formula 
will expand to include the new numbers. In doing this, you must obey two rules. 
First, never place the insertion at the first item in the range. Second, never 
place the insertion at the @SUM formula. Both of these entry positions are out 
of range for the formula. 

VisiCalc also lets you find out what percentage of your income each expense 
total takes. Type the following 

>01® 
PERCENT^^^ 

To find MORTGAGE as a percentage of INCOME you would divide your total 
mortgage payments by your total income, right? VisiCalc already has those 
totals-MORTGAGE at N4 and INCOME AT N2. Therefore, to find the percent- 
age, all you need to do is divide N4 by N2. With VisiCalc, you don't have to use 
the dollar values, just the coordinates. Type -I-N4/N2® The result is .3130435, 
or approximately 31%. 



57 



Formatting a Single Entry Lesson Three 

Formatting a Single Entry 

VisiCalc's general format always displays numbers to the maximum number of 
significant digits permitted by current column width, unless we ask for a differ- 
ent display format. For our purposes, two decimal places should be enough. 
The global format command /GF (from Lesson Two) allows you to display 
everything to two decimal places. 

Type /GF$ Our mortgage percentage at position 04 now appears as . 31. 
Note, too, that all other numbers are also displayed in dollars and cents form. 
Even the month number 12 at M1 appears as IE . DD. Not quite what we want. 
Change the global format back to "general" by typing /GFG 

What we really want is to display just the number at 04, In dollars and cents 
form. With the cursor still at 04, type /F$ That's it! By leaving out the global 
part of the command, we formatted just the single entry. /F$ affects only the 
entry highlighted by the cursor. 

Now that the percentage 0.31 is set, look at the label TOTAL at the top of 
column N. It's hard to read because it's too close to the number 12 in column 
M, and it doesn't line up with the numbers below it. 

Move the cursor to the label TOTAL with >N1® VisiCalc's general format for 
labels, which currently applies globally to all entries, including PERIOD, 
INCOME, etc.) starts alphabetic labels from the left side of an entry position 
and lines up numbers with their last digits on the rightmost positions of their 
respective columns. To change the format of TOTAL, type /F The prompt line 
reads 

F0RI1AT: D G I L R * * 

The possible keystrokes are: 

D The format defaults to be the same as the global format. In other 
words, there is no special format for this entry. 

G Use the general format for this entry. You can use this, for ex- 
ample, to display a particular number with several decimal places 
even if the global format is I (integer). 

I Display this entry in integer format. 

L Start this number at the left side of the entry position. 

R Make the last letter or digit of the entry line up at the rigtit end of 
the position. 

$ Display this entry in dollars and cents format. 

* Display this entry in graph format. 

For examples, see Part II, Lesson Four, Part III, The FORMAT Command and 
the reference card. 

The TOTAL, type R Now TOTAL is lined up with the column of figures below it. 
Now press | to move the cursor to 01 , and press /FR to "right-justify" the label 
PERCENT. 



58 



VisiCalc 



Replicating a Format Specification 




Replicating a Format Specification 

Now that you have a formula for describing an expense as a percentage of 
INCOME ( + N4/N2), you can replicate it down column O rather than having to 
enter an individual formula for each expense category. Type >04® to move to 
the formula for MORTGAGE expense as a percentage of INCOME. 

Type /R® and enter 05.011® as the target range. The edit line should read 
0^: 05 . . . Oil: +N^ 



with the +N4 highlighted. 
CHANGE, R = RELATI VE. 



The prompt line reads REPLICATE: N = NO 



How should we handle the formula +N4/N2, which is MORTGAGE as a per- 
centage of INCOME? For UTILITIES at 05, we want +N5/N2. The first co- 
ordinate changes, but the second, N2 or INCOME, does not. Press R to make 
N4 relative; then, with the highlight over N2 on the edit line, press N to indicate 
"no change." VisiCalc allows you to choose which parts of a replicated 
formula will be relative and which will be absolute. 

It takes VisiCalc only a moment to display all our expense percentages, from 
0.31 for MORTGAGE to 0.08 for SAVINGS. Notice that all of the percentages 
are displayed to two decimal places. 

Press -» a few times, looking at the entry contents line. At 05, for instance, the 
line reads 05 /F* (V) +N5/NE. The format specification /F$ has been 
replicated along with the formula. In fact, it's possible to replicate a format 
specification even if the entry being replicated is blank! We'll use this trick a 
little later. 



59 



Using Replicate To Copy a Row or Column Lesson Three 

Using Replicate To Copy a Row or Column 

Type >A12® We'll draw a line under our list of expenses and calculate how 
much money we have left for LEISURE. You already know one relatively easy 
way to draw a line of hyphens, by using the / — command at A12 and replicat- 
ing the hyphens across. But let's try using the replicate command a little dif- 
ferently. 

Type /R The prompt line reads REPL I CATE : SOURCE RANGE OR 
RETURN, and on the edit line is the cursor coordinate, A12, followed by the 
small rectangle. Now press BACK S The A12 disappears, leaving only the 
small rectangle on the edit line. Let's type a new source range: A3.M3® As 
usual, the prompt line reads REPLICATE: TARGET RANGE. Type 
A12.A12 

What are we doing? The source range, A3 . . . M3, is the line of hyphens already 
written on the sheet. We're asking VisiCalc to replicate the entry at A3 into 
position A12, the entry at B3 into position 812, and so on. Press® There's your 
line. Incidentally, it would have been sufficient to type A12® for the TARGET 
RANGE; VisiCalc would take this to mean A12 . . . A12. 

Finally, let's add LEISURE to our budget. The money we have available for 
leisure will simply be our income minus the sum of our expenses. Type the 
following 

>A13® 

LEISURE^ -h B2 -(g)SUM(B4.B11)® 

The figure for LEISURE, 125, appears at B13. Replicate this formula across row 
13 to get your LEISURE money for each period: type /R®C13.M13® and press 
R three times to make the formula coordinates relative. Now start pressing 
the ^ key to scroll the window rightwards, and examine the encouraging results 
VisiCalc has calculated for us. 

Our LEISURE money starts small, at $125 in the first month, but it increases 
fairly steadily thereafter. After the first month, we don't have a car insurance 
premium, and our utilites bill goes down in months 3, 4 and 5. In month 6, we 
get our raise, which increases our INCOME and LEISURE money. Continue 
pressing ^ until you have brought columns M, N and O into view, showing 
TOTAL and PERCENT, and then press | to leave the cursor at N13. 

To obtain a total and percentage of income for LEISURE, we can use the same 
method we used earlier to copy the line of hyphens. Press the following keys 
and watch what happens on the prompt and edit lines. Here we'll use : in place 
of® 

/R BACK S N11.011:N13®RRRN 

You should have a total of 5150 and a percentage of 0.22 for LEISURE. 

Changing Windows and Titles 

As we found in LessonTwo, the screen is too small to display both our starting 
expense figures in month 1 and our calculated totals and percentages in 
columns N and O. We can solve this problem by splitting the screen into two 
windows. 



60 



VisiCalc 



Changing Windows and Titles 



With the cursor still at N13, press /WV Your screen should look like the photo 
below. The titles in column A and rows 1-3 are fixed in place in both windows. 




Press ; to jump the cursor over to the right window, bringing columns A and N 
into view. Then press /TN to eliminate the fixed titles from the window in which 
the cursor rests. The title or "border" column A disappears, exposing column 
M. Finally, press | once to bring the TOTAL and PERCENT columns N and O 
into view. 

Notice that columns are slightly narrower in this window. VisiCalc automatically 
adjusted the column widths to make room for the extra vertical border of row 
numbers that runs down the center of the screen. 

Now press ; to jump the cursor back to the left window. Press and hold down 
I to scroll this window back to the first month (column B). Notice that you bump 
into column A. The fixed titles are still in effect in this window. Your screen 
should look like the screen photo below. 



61 



The (a)NA and @ERROR Functions 



Lesson Three 




Let's try changing one of our expenses to see how VisiCalc recalculates the 
expense totals and income percentages. Type >B9®100® What happens? 
Your available LEISURE money decreases by $20 each month. The CAR EX- 
PENSE total goes from $960, or 4% of your income, to $1200, or 5% of income. 
And your LEISURE total for the year goes from $5150, or 22% of income, to 
$4910 or 21%. 

The (g)NA and (g)ERROR Functions 

Press ^ to move to position BIO. Let's suppose that you were about to change 
your car insurance policy, and the new premium was not yet known. VisiCalc 
has a special function to help you deal with just such problems: the @NA func- 
tion (@NA stands for "Not Available"). Watch the screen as you replace the 
number 160 at BIO by typing @NA® 

When you write this function at an entry position, that entry takes on the 
special value NA. When VisiCalc recalculates, any formula which refers to an 
entry containing NA will itself have a value of NA. In this case, your car in- 
surance premium for month 1 at BIO became Not Available. Because of this, 
you had no way to calculate your leisure money (income minus the sum of ex- 
penses) for month 1 , and so position B13 (for LEISURE) became Not Available. 

Moreover, your total car insurance expense for the year could not be calcu- 
lated and also became NA, which meant that the corresponding percentage of 
income became NA. And, since one month's LEISURE expense was NA, the 
total was NA, and so was LEISURE as a percentage of income. Change BIO 
back by typing 160® and all of the calculated values will be restored. 

Here's a related issue: suppose that, instead of typing a number, you were try- 
ing to calculate your own car insurance premium as the insurance company 
does, but you made a mistake and tried to divide by zero. 



62 



VisiCalc The Insert and Delete Commands 



With the cursor still at B10, type 1/0 ® As the screen shows, when VisiCalc 
evaluates the formula 1/0, the result is the special value ERROR. Like NA, the 
value ERROR "propagates." Any formula which refers to an entry with the 
value ERROR will itself have the value ERROR. 

The most common ways to obtain a value of ERROR include dividing by zero, 
taking the logarithm of a negative number, and calculating a value too large for 
the computer to represent. ERROR can also be generated as a syntax error 
from an expression. For example, VisiCalc would reject a range attached to 
NPV as an invalid argument. 

You can also deliberately obtain the value ERROR, just as you did for @NA, by 
typing the function name @ERROR. In fact, it can be used as a variant of @NA 
or as a debugging tool when working with lookup tables. For now, change the 
value at B10 back by typing 160 ® so that the totals and percentages can be 
calculated. 

To make sure that we can continue from this point if something goes wrong, 
let's save the sheet on diskette again. The storage diskette that you used earlier 
in this lesson should still be in your disk drive. Type /SS and, in response to 
the prompt F I LE FOR SAV I NG, press the | key. 

The disk drive should whir, and a file name should appear on the edit line. Con- 
tinue pressing the ^ key, if necessary, until you have the name LSTH RE El . VC 
on the edit line. Then press the BACK S key four times until the small rectangle 
is sitting where the 1 was. Now type 2® and watch the edit line as you type 
the characters. You are saving the sheet under the revised name 
LSTHREE2.VC. Note: VisiCalc will automatically add the ".VC" for you. Once 
you've started, all it takes is a few keystrokes to protect yourself from loss of 
time and data. 

Now, type ; to jump the cursor into the right hand window and /W1 This 
leaves the narrowed columns on the screen. When you type /W1 to return to 
one screen window, the global column, format, and title settings for the full 
screen are obtained from the window where the cursor lies at the time you 
type the /W1 command. If you had typed /W1 with the cursor in the left hand 
window, the screen would now have fixed titles and columns nine characters 
wide. 

For now, type /GC9® and >A7® to adjust the column widths and scroll the 
screen back to the left edge of the sheet. The cursor should highlight the label 
FOOD. 

The Insert and Delete Commands 

Let's say you decide to take on a life insurance policy that has monthly 
premiums of $115, and you want to incorporate this expense into your budget. 
If you were working on an ordinary sheet of paper with the same arrangement 
of figures which we have on the screen, you'd have to erase something or write 
in tiny letters off to the side. But VisiCalc's electronic sheet is more flexible. 

Type /IR for "insert row," and watch the screen. Everything at or below the 
cursor moves down to make room, leaving you with a blank line at row 7, where 
you can enter the life insurance figures. 

Let's look more closely at what the Insert command had done, using SAVINGS 
as our example. The amounts for SAVINGS, which used to be on row 11, are 

63 



The Insert and Delete Commands Lesson Three 



now on row 12. You might think that SAVINGS at B12 has, therefore, been 
moved beyond the range specified in the formula you wrote for LEISURE 
+ B2 — @SUM(B4 . . . B11)), which was income minus the sum of expenses. 

Take another look at the LEISURE formula. Type >B14® and look at the entry 
contents line. VisiCalc has extended the formula to read +BE— aSUri(B^ 
. . . BIE ) ! Whenever you insert (or delete, or move) a row or column, 
VisiCalc automatically adjusts all of the formulas on the sheet. This way, your 
formulas always refer to the same entry positions as before even though the 
coordinates have changed. 

Now type the following to fill in the life insurance expense figures. We will begin 
by typing in the basic amount, making a formula based on it, and then repli- 
cating that formula across row 7. To conclude, we will create and replicate a 
life insurance formula for the TOTAL and PERCENT columns. 

>A7® 

LIFE INS^115^ + |® 

/R®D7.M7:R 

>N6® 

/R^:N7:RRRN 

>A10® 

Notice that our LEISURE money has decreased by the amount of the life in- 
surance premiums each month. Position B14 is now —10, meaning that we're 
overspending our income in month 1 . Perhaps we should ride the bus to work, 
and in that way all but eliminate our CAR EXPENSE. 

Type >B10 ® and then press /D The prompt line reads DELETE: R C. 
With the cursor at BIO, you could delete row 10 by pressing R, or column B 
by pressing C. Press R to delete row 10. 

The title and figures for CAR EXPENSE disappear completely from the screen. 
The rows below the cursor move up one row to and are renumbered to fill in 
the gap. CAR INSURANCE is now at row 10, and SAVINGS is back at row 11. 
Note that your LEISURE money at position B13 has increased, back to $90. If 
you were to check the formula at B13, you'd find that VisiCalc has readjusted 
it to +B2- @SUM(B4 . . . B11). 

You can also insert columns. Say, for example, that you wanted to obtain six 
month totals for your income and expenses. Type >H4® The formula there is 
+ G4 and because of relative replication the formula at 14 is +H4. Now press 
/IC A new, blank column appears in place of column H. 

Notice that the insert command always inserts a row or column before the 
cursor's position ("before" meaning "closer to row 1 or column A than"). 
Press I to bring the old column H (now relettered column I) into view. The 
formula at 14 is +G4, meaning that the propagation of the income and expense 
amounts skips over the newly created blank column. 

Press ^ twice more, and notice that the next formulas are +14 and +J4. Now 
move back with >H4® and type /DC Now the blank column has been deleted, 
all of the other columns to the right have moved back to eliminate the empty 
space, and everything has returned to normal. If you've made any mistakes in 
this section, you can clear the screen, reload the diskette file named 
LSTHREE2.VC, and try each step again. 



64 



VisiCalc Calculating Interest On a Savings Account 

To test your understanding of the insert and replicate commands, try inserting 
the names of the months (such as JAN, FEB, IVIAR, etc.) just below the month 
numbers 1 through 12. 

Have you succeeded? Here's one way to do it. Type exactly the following 

>A2® 

/IRMONTH^/FR/R:C2.M2: (This replicates the format /FR.) 

JAN^FEB|MAR^APR|MAY^JUN^JUL|AUG|SEP|OCT|NOV^DEC| 

>A2® 

Calculating Interest On a Savings Account 

According to our present budget, we are setting aside $150 each month for 
savings. Part of the motivation for doing this, of course, is that we would like to 
earn interest on this money. Let's use VisiCalc to project the interest and the 
accumulated balance we would have if we put this money into a savings or 
other investment account. 

We'll assume that interest on a savings account is paid at the rate of 5% per 
year, compounded monthly. But, to give ourselves flexibility, we'll write this 
interest rate into a separate position on the sheet, so that we can change it 
later and let VisiCalc recalculate the interest and accumulated balance. Type 

>A15® SAV ACCT|.05® 

On the first day of each month, our account will be credited with interest for the 
balance in the account during the previous month, and then we'll deposit our 
monthly $150. Type the following 

>A17® 
/F$100| 
>A16® 
INTEREST! 

The $100 at A17 is the previous balance in the savings account before our 
budget begins. The interest paid for one month will be one twelfth of the 
yearly rate (.05 divided by 12) times this previous balance. Type 

/F$+B15/12*A17® 

The calculated result of this formula should be 0.42, shown at B16. Does this 
figure make sense? A year's simple interest at 5% on $100 would be $5.00. One 
twelfth of this would be $5.00/12, or $0.41666 (which rounds to $0.42). 

Press -9- to move to B1 7. Our new savings account balance will be the previous 
month's balance, plus the interest, plus the savings deposit for this month. 
Type 

/F$ + A17 + * + B12® 

(If you like, you can point with the cursor to fill in all three coordinates in this 
formula.) The result, as expected, is $250.42. 

Now we can replicate both the interest and account balance formulas across 
for twelve months. Type 

>B16® 
/R^:C16.M16:NRRRR 



65 



The Move Command 



Lesson Three 



As you type the N and R's to determine whether each coordinate should be 
unchanged or relative, think about what each one means. The interest rate at 
B15 is clearly N. The R for A17 means "use the value of the entry one position 
down and to the left of each copy of the formula," and so on for the other 
coordinates. 

Press ^ to examine the calculated results. The interest paid each month in- 
creases, since both our monthly deposits and the accumulated interest are 
added into the balance on which the interest is based. Continue scrolling the 
window rightward until column N comes into view, and then type the following 

>N17® 

/F$ + M17 + N14® 

This is the combined total of our savings and leisure money, or our "discre- 
tionary income." It should currently be 6676.94. 




The Move Command 

Type >A11® The cursor should highlight the label CAR INSURANCE. Paying 
that insurance premium in month 1 is taking a big bite out of our available 
LEISURE money in month 1 (which is $90, as opposed to $250 in month 2). 
Perhaps we can pay the insurance premiums by taking money out of the sav- 
ings account. 

On an ordinary sheet of paper, more erasures and writing in the margins would 
be necessary. Not so on VisiCalc's electronic sheet. Type /M The prompt line 
reads HOVE: FROM . . .TO, and on the edit line is All, the cursor co- 
ordinate, followed by the small rectangle. Now press ♦. The cursor moves 
down to highlight SAVINGS, and the edit line reads All . . .AlE. 



66 



VisiCalc The Move Command 



Press the ^ key four more times, watching the edit line change from 
All. . .AlStoAll. . . Alt, much as it did for the @SUM function 
and the replicate command. The cursor highlights INTEREST at A16. Now 
press ® and watch the screen. The following things happen: 

1. The entire row for CAR INSURANCE moves down from row 11 to row 
15, reappearing just above INTEREST. 

2. The rows for SAVINGS, LEISURE and SAV ACCT move up, taking up 
the space vacated by the old CAR INSURANCE row and making a new 
space just above INTEREST for the new CAR INSURANCE row. 

3. The cursor returns to where it was when we started the /M command: 
at All, which is now SAVINGS. 

Now look at the figure for LEISURE in month 1 . It has increased from 90 to 250. 
The car insurance premium has been taken out of the sum of expenses used 
to calculate LEISURE. The formula at B13 reads +B3-a)SUn(B5 . . . 
Bll). 

Hence, the CAR INSURANCE expense is currently unaccounted for. We must 
revise the formulas in row 17 to take the car insurance premium out of the sav- 
ings account balance. Type >B17® and look at the entry contents line. The 
formula reads +A17 + Blb + Bll, meaning the previous account balance, 
plus a month's interest on that balance, plus this month's savings deposit. To 
this we must add "minus the car insurance premium (if any)." Type the follow- 
ing 

-|-A17-|-B16-t-B11-*i^® 
/R:C17.M17:RRRR 

This will replicate the new account balance formulas +A17 + B16 + B11 -815, 
+ B17 + C16 + C11 -C15, etc. across the row. 

Now type >N17® to examine our total discretionary income. It has declined 
from 6676.94, before we took the insurance premiums out of savings, to 
6666.10. We are now saving less and spending more on leisure. So, we have 
lost about $10 interest on our savings account. Notice that our LEISURE total 
at N14 has increased from 4730 to 5050. Perhaps we should save a little more 
each month to replenish the funds taken out to pay the insurance premiums. 

Type >B11® to bring the titles back on the screen and highlight our initial 
SAVINGS figure at B11. Since the $160 expense for CAR INSURANCE at B15 
covers our premiums for six months, we should save one sixth of this amount 
each month, in addition to our usual savings deposit. Type 150-|-(B15/6)® 

The parentheses in the formula tell VisiCalc to calculate that portion of the 
formula first. See the section entitled "The VALUE Command" in Part III for a 
full discussion of precedence. Thanks to our earlier use of formulas, VisiCalc 
automatically propagates the adjusted SAVINGS figure across all twelve 
months while recalculating LEISURE and our new savings account balance. 
This recalculation has made the screen display somewhat messy because the 
global format for numbers is still the standard format, or "general." We can 
clean up the display by typing /GFI 

The interest and savings account figures still show dollars and cents, because 
each of these entries has the "local format" /F$. Now, type >N17® to reex- 
amine our total discretionary income. It has increased to 6673.53. 



67 



Obtaining Monthly Expense Percentages 



Lesson Three 



By saving about $27 more each month, we have reduced our LEISURE total 
back to 4730, but we have regained most of the interest we had lost before. 
VisiCalc can really help you budget in ways that you wouldn't have con- 
templated before! 

Before continuing, save your work by typing /SS and using | as necessary to 
bring the file name LSTHREEE . VConto the edit line, and press BACK S four 
times, then type 3® 

Obtaining l\/lonthly Expense Percentages 

This lesson has led you through some fairly sophisticated command combina- 
tions. Here's a little project you can try on your own— a challenge to test your 
mastery of the replicate command. Create monthly percentages for each of 
your expenses, from MORTGAGE through SAVINGS. It's possible to accom- 
plish this by typing just one formula and using the replicate command twice. 

Here are some hints. Use the area of the sheet directly below your list of 
monthly expenses. Remember that you can replicate format specifications. If 
you want to get fancy, you can label each row of percentages with one more 
use of the replicate command. 

If you've succeeded, congratulations. You can probably do anything you want 
with VisiCalc from now on. Whether you've succeeded or not, let's make sure 
that your budget matches the one in this lesson. Clear the sheet by typing 
/CY Then reload the file you just saved with /SL Press ^ until the file name 
LSTHREE3.VC appears, and then press ® Now type exactly the following 

>A20® 

/R BACKS A5.A11:A20: 

|/F$-|-B5/B3® 

/R:B21.B26:RN 

/R.B26:|.M20:RRRRRRRRRRRRRR (Type R fourteen times.) 

>A26® 




68 



VisiCalc Synchronized Scrolling 

The first replication in this sequence illustrates another use of the replicate 
command. You can copy a range of entries into another part of the same 
column (or to any other area on the sheet) simply by specifying the destina- 
tion starting coordinate for the target range. Check row 21, for UTILITIES, to 
verify that the percentages may change from month to month. 

Synchronized Scrolling 

As you can see, the area of the sheet that we have used extends beyond the 
screen window in both the horizontal and vertical directions. The window has 
begun scrolling downwards, and our month labels, INCOME, and our first few 
expenses have disappeared from view. Let's split the screen so that we can see 
both the expense amounts and the percentages at the same time. 

Move the cursor up to A19, just above MORTGAGE. Now type /WH The screen 
splits horizontally, leaving just enough room for the expense percentages in 
the bottom window (which we'll attend to in a moment). Type >A2®^-»- This 
should leave rows 2 (MONTH) through 13 (LEISURE) on display in the top 
window, with the cursor at A4. 

Next, type /IB to fix the horizontal and vertical borders in place. Notice that the 
columns and rows forming the borders do not have to start from the edges of 
the sheet. Finally, type ; >A26® to bring all of the expense percentages into 
view and /TV to fix the labels MORTGAG^through SAVINGS in place. 

Now press | until the bottom window begins scrolling rightward. The problem 
is that we can't easily tell which months these expense percentages refer to. 
The month labels, such as JAN, FEB and MAR, are visible only in the top 
window, which isn't scrolling. 

We'd really like the two windows to scroll together horizontally, but remain 
independent vertically so that we can view different areas of the sheet through 
the two windows, as we are now (with rows 2-13 in the top window and rows 
20-26 in the bottom). Press /W again, and look at the prompt line. The pos- 
sible keystrokes are: 

H To split the screen horizontally. 

V To split the screen vertically. 

1 To return to one screen window. 

S To synchronize the two windows. 

U To unsynchronize the windows. 

Press S and watch what happens in the top window. Notice that this window 
scrolls over so that portions of the same columns are visible through the top 
and bottom windows. Now press | a few times: The two windows move together 
"in sync." 

Type ; to jump the cursor into the top window, and then type >B7® Try chang- 
ing the TELEPHONE expense to something else, say $100 per month, and 
watch the line of percentages opposite TELEPHONE in the bottom window. 
Notice that LEISURE in the top window also changes. 



69 



The Order Of Recalculation 



Lesson Three 



Now, let's use the two windows for a different purpose. Type /WU to un- 
synchronlze the windows. Move to the lower window with ; and type 
>A1®/TB>017® to bring your LEISURE total and percentage, your final 
savings account balance, and your combined discretionary income into view. 

Continue by pressing ; to jump back to the top window, landing at B7. Finally, 
change the TELEPHONE expense back to 75, watching how this effects the 
LEISURE percentage in the bottom window. You can also experiment with the 
budget in other ways. At this point, you may wish to save the results of this 
lesson by typing, for example, /SSMYBUDGET® 




The Order Of Recalculation 

So far, we've simply noticed that VisiCalc recalculates the values of all the 
formulas on the sheet, but we haven't looked closely at how this is done. There 
are some subtleties to the process of recalculation that can affect your results 
when you set up a complex problem with many interdependencies. We'll con- 
sider these issues here. 

VisiCalc recalculates by starting at the upper left hand corner of the sheet and 
working its way downward and to the right until it reaches the lower right hand 
corner of the sheet. Each formula is evaluated only once, unless you ask for an 
extra recalculation by pressing ! 

This means, for example, that the entry at position A1 cannot be a formula that 
references other positions, and that in general, formulas that reference other 
entries must be located below and/or to the right of these entries. 

VisiCalc will evaluate the formulas on the sheet in either of two possible orders: 
"down the columns" or "across the rows." Look again at the letter C just to 



70 



VisiCalc The Order Of Recalculation 



the left of the direction indicator at the upper right corner of the screen. This is 
the recalculation order indicator, and it can be either C (for column recalcula- 
tion) or R (for row recalculation). 

When you load the VisiCalc program or clear the sheet, VisiCalc is set to re- 
calculate "columns first:" It will evaluate first A1, then A2, A3, ... , etc., then 
B1 , B2, B3, . . . , etc., then C1 , and so on. If you change the recalculation order 

to "rows first," VisiCalc will evaluate first A1, then 81, C1 etc., then A2, 

B2, C2, . . . , etc., then A3, and so on. 

For many problems, the choice of row versus column first recalculation has no 
effect on the results displayed on the screen. But there are cases where you 
must use the right recalculation order to obtain correct results, and it's im- 
portant to recognize these cases when they arise. Consider an example. Clear 
the sheet with /CY and type the following 

1I-A2® 

>A2® 

H-A1|2*B1® 

>C5® 

-j-AHH-CS® 

>C6® 

-D5^2*C6® 

>A1® 

As you type the formulas, think about how each entry depends on the other 
entries. As you can probably see, the matrix of entries starting at A1 must be 
recalculated in the order A1, A2, B1, B2 (since B1 depends on A2). The matrix 
of entries at C5, however, must be recalculated in the order C5, D5, C6, D6 
(since C6 depends on D5). 

With the cursor at A1, type 2 ® and watch what happens. A2 becomes 3, B1 
becomes -3, and B2 becomes -6, as expected; but while C5 becomes 2 and 
D5 becomes 3, C6 remains at -2, and D6 at -4. The formula at D5 was re- 
calculated, but this occurred too late to affect the recalculation of C6 and D6. 
Now press ! to trigger an extra recalculation. This time C6 becomes —3 and 
D6 becomes -6. 

Now we'll change the order of recalculation from "columns first" to "rows 
first." Press /G The prompt line agains reads GLOBAL : COR F. Press 
O Nowthe prompt lines reads REEVAL ORDER: R C. 

Press R Notice that the recalculation order indicator at the upper right corner 
of the screen changes from C to R. Now type 1® and watch the screen. This 
time, D5 becomes 2, C6 becomes -2, and D6 becomes -4; but while A2 be- 
comes 2, B1 stays at -3, and B2at -6. Our problem with B1 and B2 is similar to 
our earlier problem to C6 and D6. 

The moral of this example is that you should lay out your calculations with re- 
calculation either by column or row in mind, but not both. If possible, you 
should arrange things so that the results will be correct with either type of 
recalculation. Then, if you decide to calculate something new that requires a 
particular order of recalculation, you won't be constrained by other de- 
pendencies on the recalculation order. 

For example, the personal budget outlined in Lesson Three is independent of 
the order of recalculation. Now, suppose that you want to adjust your life 



71 



Forward and Circular References Lesson Three 



insurance policy and premiums to provide a benefit of three times your total 
annual income. You could do this by switching to "row first" recalculation, so 
that the life insurance premium in month 1 could be based on the total income 
calculated in column N. 

If you find yourself with a problem of conflicting requirements for "row first" 
and "column first" recalculation, you can deal with these requirements, albeit 
awkwardly, by pressing ! for an extra recalculation each time you change a 
value and look for recalculated results. But first make certain that your row 
and column conflict is not actually due to a "forward reference" or a "circular 
reference," as discussed below. 

Forward and Circular References 

Clear the sheet with /CY and type 1|— |® The entry contents line reads 
Bl (V) —CI, and the value displayed at B1 is 0, as expected. 

Now type |1 + 1|® The entry contents line reads CI ( V ) 1 + A 1 , and the 
value at CI is 2, while the value at B1 has been updated to -2. 

Next press >B2®— 01® We now have the same formula, -C1, at both B1 and 
B2, and both positions display the value -2. 

Is there any difference between these two formulas? Indeed there is. One of 
these formulas will recalculate and display the correct value only if the order of 
recalculation is "row first." The other will never display the correct value after 
an automatic recalculation. 

To see this, type >A1®2® and watch the screen. A1 becomes 2 and C1 be- 
comes 3, but both B1 and B2 remain at -2. Press4 ! and both B1 and B2 will be 
updated to -3. 

Now, type /GOR and note that the recalculation order indicator changes from 
C to R. Then type 3 ® and watch the screen. A1 becomes 3, CI becomes 4, and 
now B2 becomes -4, but B1 remains at -3. You'll have to press ! again before 
B1 will change to —4. 

If you change A1 again, B1 will display a value based on the previous contents 
of C1 and A1. The formula at B1 is an example of a forward reference. It con- 
tains a reference to an entry that will be recalculated after B1 is recalculated, 
regardless of whether you use row or column recalculation. 

In extremely difficult cases, forward references may refer to other forward 
references, so that correct results can be obtained only with several recalcula- 
tions. If the cursor is not on A1, type >A1 Now try this example. Press 
^/IC-I® 

At the moment, A1 is 3, the new B1 is 4, C1 is —4, and D1 is 4. Now press 
1 1 ® A1 becomes 1, D1 becomes 2, but B1 and C1 are unchanged. Press ! 
Now C1 is -2, but B1 is still 4. Only after you press ! again will B1 be updated 
to 2. 

An effect even more startling is caused by a circular reference. The value of 
such a formula cannot be settled with any number of recalculations! Clear 
the sheet with /CY and type 1 -|-| ® The entry contents line reads Al ( V ) 
1 + Bl, and the value under the cursor is 1, as expected. 



72 



VisiCalc Summary 



Now type 11+ 1® and watch carefuly. What happened? The numbers at A1 and 
B1 actually changed twice. When the formula 1+A1 was completed at B1, it 
was evaluated, yielding 1+1 or 2 at B1. Then, since the value of 81 had been 
changed, an automatic recalculation occurred. A1, or 1 +B1, became 1 +2 or 
3, and B1, or 1 +A1, became 1 +3 or 4. 

Now press ! A1 increases to 5, and 81 becomes 6. These values will change 
every time you press ! 

The foregoing examples have been somewhat artificial. You probably recog- 
nized the forward and circular references as soon as you typed them. If you 
are planning your work carefully, you shouldn't write such a formula, unless 
you do it purposely as a debugging tool. Some forward or circular references 
are not so obvious. 

For example, suppose that you are projecting future profits, taking into ac- 
count various revenues and expenses. One of the expenses is employee 
salaries, and one part of salaries consists of profit-sharing. Unless you are 
careful, you may create a circular reference. Salaries with profit-sharing de- 
pend on profits, but profits depend on expenses including salaries. To resolve 
this circularity, you must calculate a figure for profits before profit-sharing is 
taken out. 

Once you are aware of the issues involved in recalculation, it is not difficult to 
avoid conflicts in the order of recalculation or forward and circular references. 
Generally, these problems arise when you are working too quickly without a 
plan, or "patching" an existing layout on the electronic sheet. If your approach 
to the problem is orderly and well thought out, it is unlikely that you will en- 
counter any problems with recalculation. 

Summary 

Once again, we have covered a great deal of ground in this lesson. We con- 
centrated on a variety of techniques for using VisiCalc's flexible replicate com- 
mand as effectively as possible. We also discussed a number of new VisiCalc 
features, including the formatting of individual numbers and labels, and the re- 
lationship between global and local formats; the order in which VisiCalc calcu- 
lates and recalculates; built-in functions such as @SUM, and the special cases 
@NA and @ERROR; the insert, delete, and move commands, which let you 
"stretch" the sheet and manipulate entire rows or columns; and synchronized 
scrolling of the two screen windows. 

We have covered most of the important concepts and features of VisiCalc, 
and you should be able to use VisiCalc to considerable advantage. In Lesson 
Four we will cover a number of other features and fine points of VisiCalc, in- 
cluding scientific notation for numbers as well as the transcendental func- 
tions such as @EXP, @LN, @SIN, and @COS. You will also learn more about 
the formatting of numbers and the move command. 

With the amount you have learned about VisiCalc, this is an excellent time to 
test your understanding on a problem of your own. In this way, you will con- 
solidate your knowledge of VisiCalc's commands and features, and develop 
your own ideas about how they can be used. This will enable you to approach 
new problems and solve them even more rapidly with VisiCalc. 



73 



Postscript: The Print Command Lesson Three 



Postscript: The Print Command 

Sometimes it's convenient to have a "hard copy" of the contents of the elec- 
tronic sheet on a real sheet of paper. VisiCalc's print command lets you print 
all or any part of the electronic sheet on a printer. If you have a printer con- 
nected to your computer, you can try it out by printing a copy of the personal 
budget we've just created. 

The instructions for printing files you have made with VisiCalc are in Part III 
of this manual, in the section entitled "The PRINT Command." Note as well 
that using a /SS to a printer is a good debugging tool, particularly in uncover- 
ing circular references. 



74 



Lesson Four 

77 More on Numbers and Formats 

78 Scientific Notation 

79 More On Value References 

79 More On Formulas 

80 More On Built-in Functions 

83 Transcendental Functions and Graphing 

87 Manual and Automatic Recalculation 

88 Summary 



Lesson Four 



Lessons One, Two and Three have covered most of the essential features of 
VisiCalc. In this lesson, we'll concern ourselves primarily with features which 
extend VisiCalc's usefulness in applications where complex or lengthy 
formulas, numbers with very large or small magnitudes, or sophisticated 
arithmetic operations are required. 

If you intend to use VisiCalc for business or financial applications, you can skim 
much of this material, concentrating on topics of interest such as the @NPV 
(Net Present Value) and @LOOKUP functions and the ability to create bar 
graphs using the /F* formatting option. If you have scientific or engineering 
applications in mind, you'll find this lesson particularly relevant to your needs. 

More On Numbers and Formats 

In Lessons Two and Three we illustrated some of the ways you can control the 
display of numbers on the screen with formatting commands such as /GFI and 
/F$. In this lesson we'll examine the formatting options more closely. 

Load the VisiCalc program into your computer (as described in Part I in the 
section entitled "Loading VisiCalc") or, if you already have the program run- 
ning, clear the sheet with /CY When you clear the sheet, the "global format" 
is set to general. This is the effect you obtain when you type the command 
/GFG Each individual entry is set to default to the global format, just as it 
would if you had typed /FD with the cursor at that entry. Now type the following 

123.456® 

We now have the same number, 123.456, on display in three entry positions, A1 , 
B1 and C1. Since we have not yet set any explicit formats, all three entries 
default to the global format. The general global format displays numbers in 
whatever form will show the value of the entry with the greatest precision. As 
you have seen, however, this may not be the most readable way to display a 
column of numbers. 

Now press the following keys /Fl|/F$| We have set the "local format" of A1 to 
integer and B1 to dollars and cents. The entry contents line displays the local 
format setting for the coordinate where the cursor lies, A1. It reads Al /F I 
(V) 1E3.456. 

VisiCalc displays the locally formatted entries in rounded form. At A1, for ex- 
ample, 123.456 is rounded down to 123, because .456 is less than .5. At B1, 
however, 123.456 is rounded up to 123.46, since the last digit .006 is greater 
than .005. At CI the general format is still in force, so we still have 123.456. 

Now type /GFI to change the global format from general to integer Entries 
A1 and 81 are unaffected, because they have explicit local formats; but CI now 
displays 123. With the cursor still at A1 , change the local format there by typing 
/FG The number at A1 now appears as 123.456, and the entry contents line 
reads Al /FG (V) lEB.^Eb. The local format overrides the global 
format integer. 

Next, press | to move to B1, and "erase" the local format there by typing 
/FD This causes the display format of B1 to default to the global format, which 



77 



Scientific Notation Lesson Four 

is currently integer. The entry at B1 now appears as 123. The entry contents 
line reads Bl (V) lEB.^Bb. The explicit format setting /F$ has dis- 
appeared. 

Finally, type /GFG to set the global format back to general. Now all three 
entries display the number 123.456. Position A1 has a local format which over- 
rides the global setting, but the local format is also general. Positions 81 and 
CI have no explicit format, so they default to the general format. 

The way in which numbers are displayed in the general format depends on the 
column width. Type /GC7® Now the number appears as 123.46 at all three 
entry positions. VisiCalc always allows for one blank at the left end of the entry 
position, and then displays as many significant digits as it can. 

To compare the flexibility of the general format to an explicit local format, try 
the following: If necessary, go to position 81 by typing >B1 Type /F$ to set 
dollars and cents format at position 81. Then type /GC6® 

Positions A1 and CI now display the number as 123.5, but 81 now shows 
>>>>> (an effect that we saw before in Lesson Two). VisiCalc is telling us 
that it cannot display a number as large as 123.456 with two decimal places in 
a column six characters wide. If you type 12.34® VisiCalc will be able to display 
this number at 81. 

Scientific Notation 

Type /CY to clear the sheet. At position A1, type eight nines (99999999) fol- 
lowed by ^ This is the largest number that we can display, with a leading blank, 
in a nine-character column. Enter 1 + 1® followed by ^ 

The calculated result, 1+99999999 or 100000000, is too large to display in 
ordinary form at 81, so VisiCalc has switched to scientific notation. The num- 
ber appears as 1E8, meaning "1 times 10 to the 8th power" or "1 followed by 
8 zeros." The "E" stands for "exponent," because the hidden 10 takes a dis- 
played exponent (in this case, 8). Scientific notation (also referred to as "ex- 
ponential notation") can also be used to display very small numbers. 

At CI , type .000000001 (that's 8 zeroes) followed by ^ The number appears as 
1.E-9, meaning "1 times 10 to the -9th power," or "1 with the decimal point 
moved left 9 places." Count the decimal point over nine places to the right 
and you'll see that this is correct. Now at D1 type -| ® The result is displayed 
as -1.E-9. In ordinary notation, this would read -.000000001 (as you will 
see in a moment). 

When a number is displayed in the general format, VisiCalc will automatically 
shift between conventional and scientific notation as required to display the 
calculated value with the greatest precision. Type /GC12® Notice that all of 
the values revert to conventional notation in the widened columns. At D1, for 
example, the number appears as -.000000001. 

Next, type /GC7® and >A1® The number 99999999 at A1 has been rounded 
up and displayed as 10.0E7, or "9.9999999 (rounded to 10.0) times 10 to the 7th 
power." Finally, type /GC5® and look at the screen. In order to fit the numbers 
in these narrow columns, VisiCalc has eliminated decimal points, displaying A1 
as10E7andC1 as1E-9;butD1 shows >>>> since there's not enough room 
in a five-character column to display -IE -9 (with a leading blank). 



78 



VisiCalc More On Value References 

More On Value References 

Clear the sheet with /CY and type the following 1^2^ + A1/B1® 

The entry contents line reads CI (V) +A1/B1, and the value displayed is 
.5. We know that if the number at either A1 or B1 were changed, the formula at 
C1 would be recalculated. Now press | to move to D1 . Here we'll try something 
different. 

Type +A1/B1 # watching the edit line as you do so. As soon as you press 
the # after the coordinate B1, the reference to B1 is replaced by its current 
value of 2. The edit line now reads +Ali/E. Press ® The entry contents line 
reads Dl (V) +A1/E, and the value displayed is again .5. 

The difference is that the current value of 81 is "fixed" into the formula at D1, 
whereas the value of 81 is changeable at CI. To verify this, type ||4® and 
notice that CI changes to .25, but Dl does not. 

The effect of # after a value reference on the edit line is similar to the effect of 
typing ! after a formula, as described in Lesson One. The difference is that the 
! key evaluates the entire formula on the edit line, replacing it with a single 
number, while the # key fixes the value of a single coordinate, so that the rest 
of the formula can contain changeable elements. 

If the # is not preceded by a coordinate such as 81, it is replaced by the 
current value of the entry where the cursor lies, i.e., the entry you are changing. 
You can use this feature to take a look at the precise value of a formatted entry 
on the edit line. 

For example, set the global format with /GF$ and then type 6® The value at 
CI is now displayed as .17. Press ^ to move to CI, then press # The # is 
immediately replaced on the edit line with the current value of CI (1/6) to 
maximum precision. 

A word on precision is in order here. VisiCalc maintains numbers internally in 
decimal form. Certain fractions (such as 1/6) cannot be expressed exactly 
with any fixed number of significant digits. VisiCalc uses decimal-based arith- 
metic for accuracy in calculations involving dollars and cents. 

To accommodate large financial figures and high-precision engineering or 
scientific values, VisiCalc guarantees precision to eleven digits (and some- 
times twelve digits) at base 10. The twelfth digit (the last 6 in the expression 
above) on the edit line at the moment is a "guard digit," which allows VisiCalc 
to determine which way to round the eleventh digit when a calculation is com- 
pleted. After examining the number, you can press the BREAK key to cancel 
the VALUE entry you have started on the edit line. 

More On Formulas 

in the examples from previous lessons, we have used only simple formulas (or 
expressions) whose meanings have been clear. As you begin to write more 
complex expressions involving several arithmetic operations, the way in which 
such expressions should be evaluated may not be so obvious. For example, to 
evaluate the expression 9 + 6/3, should we first add 9 to 6 giving 15 and then 
divide by 3 to obtain 5; or should we first divide 6 by 3 giving 2, and then add 9 
to obtain 11? 



79 



More On Formulas Lesson Four 



Try it. First clear the screen with /CY and then type 9 + 6/3® The answer dis- 
played at position A1 is 5. Evidently VisiCalc chose the first option. In this way, 
VisiCalc is similar to many keystroke calculators in that it always evaluates 
expressions strictly from left to right. 

You can change the order of evaluation of arithmetic operations in an expres- 
sion by using parentheses. Press -w- to move to A2 and then type 9 + (6/3)® 
The answer at A2 is 11. Parentheses may be nested (placed within other sets 
of parentheses) any number of times. 

Type in '^— (♦♦ + ((A2— 1)/A1))® The answer displayed at A3 should be -7. 

More generally, an expression consists of a series of operands separated by 
arithmetic operators. Each operand can be one of the following: 

1. A number, optionally with a decimal point and/or an E exponent. 

2. A value reference, obtained either with cursor movements or by typing 
the coordinate. 

3. A function reference, with zero or more arguments in parentheses. An 
argument is any number that a function depends on for its value. 

4. An expression surrounded by parentheses. (Such a subexpression is 
evaluated first.) 

5. Any of the above, preceded by a — or + sign. 
Each operator can be one of the following: 

+ For addition. 
— For subtraction. 
* For multiplication. 
/ For division. 

For exponentiation. 

The caret character (") is the exponentiation operator. The caret is located on 
the asterisk * key with the |. To use it, you must hold down the SHIFT key and 
type the asterisk key. The exponentiation operator " lets you calculate 
"powers." 

For example, type ■^2''3® to calculate "2 to the 3rd power," or 8.000000. Try 
another example. Type -»2".5® to calculate "2 to the power 1/2," or the square 
root of 2. The result displayed at A5 should be 1.414214. To find the cube root 
of 5, type ■»-5"(1/3)® VisiCalc will calculate and display the value 1.709976. 

More On Built-in Functions 

We first encountered built-in functions in Lesson Three, where we used the 
(gSUM function to find yearly totals for our income and expenses and to calcu- 
late our available LEISURE money as +B2-(gSUM(B4.B11), or income minus 
the sum of expenses. As mentioned above, a function reference can appear in 
an expression wherever a number or coordinate could appear. 

Moreover, as we shall see shortly, an expression may also occur as an argu- 
ment in a function reference. We also saw that one type of function argument 
is a range of entries, such as 84 ... 811 in the LEISURE example. You need type 
only one period; VisiCalc will fill in the other two. And you will see shortly that 
VisiCalc will "spell out" the names of built-in functions if you type just the first 
few letters and a left parenthesis. 

80 



VisiCalc More On Built-in Functions 

In general, a built-in function name is followed by a parenthesized list of argu- 
ments separated by commas. Each argument can be: 

1 . An expression, i.e., a series of numbers, value references, and/or func- 
tion references separated by arithmetic operators and/or parentheses; 
or 

2. A range of entries, i.e., a series of entries that are next to each other in 
a row or column, such as B2, B3 and B4, or 82, C2, D2 and E2. A range 
is specified by typing (or obtaining with cursor movements) the first 
and last entry separated by an ellipsis (3 dots in a row). For example, 
the ranges just mentioned would be specified as B2 . . . B4 and 82 . . . 
E2, respectively. 

The exact number and type of argument(s) required varies from function to 
function. For example, the @NA and @ERROR functions which we saw in 
Lesson Three required no arguments. Some functions require exactly one or 
two arguments, while others, such as @SUM, take a variable number of 
arguments. 

Let's try an example of the @SUM function using the general form for a list of 
arguments. Notice that as soon as you type the left parenthesis, VisiCalc 
finishes spelling out the function name on the edit line. Use the -m- key to move 
to position A7, and type 

@S(A1 . A4,A5* A5, A6 " 3)® 

The result should be 5 + 11-7 + 8 + 2 + 5 or 24.00000. Let's experiment further 
with some other built-in functions. 

The @MIN and @MAX functions accept a list of arguments just like the @SUM 
function. The result is the minimum and maximum value in the list, respectively. 

Remember that the minimum value will be the negative number (if any) with the 
greatest absolute magnitude. That is to say, -4 is a smaller number than -3. 
If you removed their minus signs, 4 would be the number of greatest absolute 
magnitude. 

Let's try out these functions. Watch what happens when you type in @M 
followed by a ( VisiCalc adds IN. Similar "spell outs" occur with @MA and 
@S. Now go ahead and enter the following 

^@M(A1.A7)® 
^@MA(A7,@S(A1,A2,A4.A6))® 

The results should be -7 for @MIN at A8, and 27.12419 for @MAX at A9. 

The @COUNT and ©AVERAGE functions also accept a I'st of arguments, 
which may be expressions or entry ranges. @COUNT determines the number 
of nonblank entries occurring in the range or ranges of the argument(s). Note 
that arguments that are expressions rather than ranges always count as 1 . This 
can be puzzling if the "expression" is a single coordinate such as 81. It will 
add 1 to the count even if B1 is blank. To avoid this, write 81 ... 81. 

@AVERAGE finds the arithmetic mean of the entries making up the argu- 
ment(s); it is equivalent to @S\JM{arguments)/@CO\JMJiarguments). To try 
out these functions, clear the sheet with /CY and type the following 

The cursor should now be at A10. 

81 



More On Built-in Functions Lesson Four 

Type @C(A1.A8)® The count of nonblank entries displayed at A1 should be 5. 

Now type ♦ @ A(A1 . A8)® The average of 1 , 3, 4, 6, and 8 should be 4.4 at A11 . 

To check the equivalence mentioned above, type ■»-@S(A1.A8)/A10® The re- 
sult should again be 4.4. 

Finally, let's change one of the currently blank entries in the argument range 
to a number. Type >A5®5® The @COUNT at A10 should change to 6, and 
the ©AVERAGE at A11 and A12 should increase to 4.5. 

The @NPV (Net Present Value) Function accepts two argunnents. The first 
is a single expression specifying a discount rate, such as 15% per period 
(entered as .15). The second argument is a range bf entries. The first entry is 
the cash flow at the end of the first period. The second entry of which is the 
cash flow at the end of the second period and so on for all the periods under 
consideration. 

The result of the function is the net present value of the cash flows in the range, 
discounted at the rate specified by the first argument. If we represent the func- 
tion reference (using dr to symbolize discount rate and n as the last number in 
a series of entries) by @NPV(dr,entry1 . . . entryn) and let DR = 1+dr, the result 
of the function is 

(entry1/DR) + (entry2/(DR^2)) + (entry3/(DR^3)) + . . . + (entryN/(DR'N)). 

To see this function in action, begin by clearing the sheet and making narrower 
columns with /CY/GC6® Suppose that we have a project that requires an 
initial investment or cash expenditure of $5000, which is expected to generate 
cash over a period of five years. Type the following to lay out the cash flows 

1111 + 1® 

/R:D1.F1:R 

>A2® 

- 5000^1 000|1 500^2500^200011 000® 

>A3® 

.15^ 

At position A4, type +A2+@NPV(A3,B2.F2)® This causes the $1000 cash 
flow in the first year to be discounted by 1 5%, the $1 500 cash flow in the second 
year to be discounted twice, etc. The result at A4 should be 288.3. 

Now press -* and change the discount rate to 10% by typing .1® The net 
present value at the lower discount rate (which makes the future cash flows 
worth more today) is 1014. 

You can find the internal rate of return of this project by trial and error. Try 
higher and lower discount rates at A3 until the net present value of the cash 
flows is near zero. When A3 is .17, A4 will be 34.81. If you are persistent, you 
can verify that the net present value is .0000005 when the discount rate is 
.1728674256. 

The @LOOKUP Function accepts two arguments. The first or "search" argu- 
ment, an expression, is looked up in the table specified by the second argu- 
ment, which is an entry range. The search argument is then matched against 
one of the entries in this range. Note: a table of function result values must be 
present in the column or row immediately to the right of or below the column 
or row range specified in the @LOOKUP function. 



82 



VisiCalc Transcendental Functions and Graphing 



The function result is taken from the entry corresponding to the matched entry 
in the table of result values. The values in the function argument range are 
ordinarily in ascending order. The search argument is compared against suc- 
ceeding entries in the second argument range until an entry greater than the 
search argument is found. The search argument is then "matched" against the 
entry just before this one, i.e., one which is still less than or equal to the 
search argument. Finally, the function result is selected from the correspond- 
ing entry in the table of result values. 

If the first entry in the argument range is greater than the search argument, 
i.e., if the search argument cannot be matched against any entry in the range, 
the result of the function is NA or Not Available. 

To illustrate the use of this function, we'll list the first ten entries in the periodic 
table of the chemical elements, with their atomic weights and atomic numbers. 
Clear the sheet /CY/GFL and type the following 

ELEIVIENT^WEIGHTINUIVIBER® 

>A2® 

H^HE^LI^BE^B^C^N^O^F^NE® 

>C2® 

1^H-^®/R:C4.C11:R 
>A13® 
10.9|@L(|,B2.B11)® 

The result of the @LOOKUP function at B13 should be 4. Given an experi- 
mental atomic weight of 10.9, the @LOOKUP function compared this value 
against successive values in column B, stopping at the value 11 at 86 which 
was greater than 10.9. Thus, theatomic weightof 9 at 85 is the matching value, 
and the corresponding entry, the atomic number in column C, is 4. 

If you change the value to be looked up with |12.1® the function result will 
become 6. If you then type an "atomic weight" of 0® the result of the 
@LOOKUP function will be NA. 

The @ABS and @INT Functions both accept a single argument, an expres- 
sion. @A8S finds the "absolute value" of its argument: For example, 
@A8S(1) = 1, @A8S(-1) = 1, and @A8S(0) = 0. @INT finds the "integer 
portion" of its argument, without any rounding. You can think of the @INT 
function as setting every digit to the right of the decimal point to zero. 

For example, type /CY to clear the screen, then enter /FI1.7^@I(|)® At A1, 
the value 1.7 is rounded up to 2 by the local format integer; but at 81, @INT 
finds the integer portion of 1.7, i.e., 1.0 or 1. 

Transcendental Functions and Graphing 

So far, we've covered all of the built-in functions except for the transcendentals 
such as @EXP, @LN and @SIN, and all of the formatting options except for 
the "graph" format /F*. We'll illustrate these two features together with a more 
complete example. Our goal is to produce graphs of the transcendental func- 
tions. We'll have to do this within the limits of the /F* formatting option, which 
is really designed to draw simple bar graphs in a column alongside other 
columns of numbers. 



83 



Transcendental Functions and Graphing Lesson Four 

Clear the sheet for an example with /CY and type 1-»'3-^6-«»^20® followed by 

>A1® 

The "star" format /F* simply displays the number of asterisks equal to the 
integer portion of the value of the entry where the format is set. Type /F* at A1 . 
In place of the (right-justified) number 1, a single (left-justified) asterisk 
appears, after the usual leading blank. 

Now press -v^/F* The value 3 is replaced by three asterisks. Continue with 
■^/F*<P-/F* Position C1 shows six asterisks, while position D1 shows eight 
(the maximum for a nine-character column). 

Type /GC12® and notice that position D1 now displays 11 asterisks. Now clear 
the sheet again with /CY 

To graph a function, we must first supply a series of argument values for the 
function and calculate the function result for each argument value. For sim- 
plicity's sake, we'll begin with a linear function, e.g., f(x) = 2.5-'x. Type the 
following 

>A20® 

.1|.1® 

>A1® 

-|-A20^-|-^-|-B20® 

/R:^.A17:RN 

On row 20, we have defined a "start" value and "step" value for our list of 
function arguments. Then, using formulas and the replicate command, we cal- 
culated the argument values, from .1 to 1.7 in positions A1 to A17. Next, we'll 
calculate the corresponding function results for our linear function. Type the 
following 

>B1® 

2.5*A1® 

/R:^.B17:R 

The function results are .25, .5, .75, etc., up to 4.25. To see how this looks in 
the star format, we'll set the format specification and replicate again. 

Type /F*/R:^.B17:R How does the "graph" look? It's probably not the kind 
of graph you had in mind. The problem is that the function results do not fall 
conveniently in the range 1, 2, 3, etc., which would yield one, two, or three 
asterisks. 

Let's go back to a numeric display with /FD/R:'^.B17:R How can we create 
a better star format display? 

First, we'll set up a wider column in which the asterisks may appear so that we 
can represent a wider range of function results with the best possible resolu- 
tion. This will allow us to display a "bar" of up to 17 asterisks. Then we'll 
"scale" the function results, from .25 to 4.25, into the range to 17. Type the 
following 

>B18® 

/__^@MAX(B1.B17)® 

/GC8® 

>C1® 

/WV;/GC18® 

17/B19*@ABS(B1)® 

84 



VisiCalc 



Transcendental Functions and Graphing 



At B19, we've used the @MAX function to find the upper limit on the range 
of function results. For simplicity's sake, we'll work with the absolute magni- 
tudes of the function results, so the lower limit will be zero. You may wish to 
work out an approach to scaling which uses both @MAX and @MIN. We've 
also set up a wide column in the right hand screen window for the asterisks. 

The formula at C1 is used to multiply each function result, such as B1, by the 
factor 17 (the maximum number of asterisks) divided by B19 (the maximum 
function result). The value of this formula will lie in the range from to 
17/819*819, or 17. 

Now type /F* to set the display format at CI , and type /Ri-^.CiyiNR and watch 
the screen. 

Your screen should look like the photo below, a reasonably approximated 
straight line. Moreover, if we've done our job properly, we should be able to 
graph any set of function results in column 8, not just the linear function 
f(x) = 2.5 * X. We will want to adjust the argument range so that we can graph an 
interesting portion of the function result range. 




Now type the following 

;>A20® 

U.25® 

>B1® 

@LN(A1)® 

/R:B2.B17:R 



85 



Transcendental Functions and Graphing 



Lesson Four 




Notice that the value of @MAX(B1 . . . B17) at B19 changes to 1.60944. This 
value affects the formulas in column C so that the results still come out in the 
range to 17. If the graph of the natural log function doesn't look completely 
familiar, tilt your head sideways and imagine the X axis on the column and the 
Y axis on the row. 

Now, let's try the exponential function. Type 

@EXP(A1)® 
/R:B2.B17:R 




The maximum function result value is now 148.413, and each result is scaled 
into the range to 17 in column C. Is the graph close to what you expected? 



86 



VisiCalc 



Manual and Automatic Recalculation 



Finally, we'll graph the sine function. Since the trigonometric calculations are 
done in radians, we'll use @SIN(@PI*A1) and a different argument range so 
that we can obtain a full sine curve in column C. Type the following 

>A20® 

.031.06® 

>B1® 

@SIN(@PI*A1)® 

/R:B2.B17:R 

If all has gone well, you'll have a reasonable graph of the sine function in 
column C, looking like the photo below. 




At this point, you may wish to experiment with different argument values and 
functions. When you're finished, you can go on with the next section. 

Manual and Automatic Recalculation 

If you've just worked through the above example at your keyboard, graphing 
the transcendental functions, you've probably noticed some significant delays 
as VisiCalc repeatedly recalculated the results of functions such as @EXP, 
@LN and @SIN. 

Because the function results are calculated to eleven or twelve digit precision, 
each one takes a fraction of a second to evaluate, and a sheet full of function 
references can take several seconds to recalculate. This problem gets worse 
as the amount of information on the electronic sheet increases. 

In many cases, you don't actually need to have all of the values recalculated 
every time you change an entry. It would be convenient if you could change 
several entries and then trigger a recalculation when you're ready to look at 
the results. VisiCalc lets you do this with the /GR command. 

If you still have the graph of the sine function from the previous section on 
your screen, we'll try changing the argument range start and step sizes. If you 
no longer have this graph on the screen, you can just read along. 



87 



Summary 



Lesson Four 



Type >A20® to move the cursor to the starting value, which is currently .03. 
When you load the VisiCalc program or when you clear the sheet, you are in 
automatic recalculation mode. As soon as you change the value at A20, Visi- 
Calc will automatically recalculate the values of all the formulas on the sheet. 

Before doing this, however, type /G The prompt line reads GLOBAL: 
COR F. Press R Now the prompt line reads RECALC : A f1. The pos- 
sible keystrokes are M, to switch to manual recalculation mode, and A, to 
return to automatic mode. 

Press M You have "turned off" automatic recalculation. Now you can change 
the values at A20 and B20 without waiting for a lengthy intervening recalcula- 
tion. Type .06|.12® Now we're ready for a recalculation— just press the excla- 
mation key ! 

As you've probably noticed before, an exclamation point appears in the upper 
right corner of the screen while the recalculation takes place. Whether you're 
in manual or automatic mode, pressing ! triggers a recalculation of all formulas 
on the screen (unless ! is pressed while you're entering a LABEL or VALUE 
on the edit line). Notice how the graph changes to display the positive-going 
portion and the reflection of the negative-going portion of the sine curve. 




Now, type .06|.54® then return to automatic mode by typing /GRA The first 
thing that happens as you return to automatic mode is a recalculation to up- 
date all the figures on the screen. 

Summary 

This lesson has introduced you to the full power of VisiCalc's calculation 
capability. Besides simple addition, subtraction, multiplication and division, 
VisiCalc provides exponentiation, transcendental functions, and scientific 
notation for numbers. 



88 



VisiCalc Summary 

You can use functions such as @SUM, @MIN, and @MAX to manipulate en- 
tire rows, columns, or other ranges of numbers at once. Functions like 
@COUNT, ©AVERAGE, @NPV, and ©LOOKUP allow you to quickly handle 
common problems such as test score averaging, evaluating the terms of a 
loan, or looking up figures in the income tax tables. 

You can control the format of calculated results in a variety of ways— even 
creating simple graphs with the /F- format. With practice, you'll be able to use 
the features described in this lesson in combination with VisiCalc's screen and 
window control and formula replication capabilities to solve complex problems 
quickly and easily. 

Lesson Four concludes Part II, the Tutorial for VisiCalc. The next section. Part 
III, is the VisiCalc Command Reference. The Reference section contains in- 
depth discussions of all the commands you've used in the Tutorial, including 
the fine points of VisiCalc and illustrative examples. Both are helpful in putting 
VisiCalc to work in your own applications. 

After you've had a chance to read this nnanual and use VisiCalc for some of 
your own applications, we'd appreciate it if you would fill out and send in 
the Reader Critique at the back. We're interested in corrections and sugges- 
tions for the manual, as well as suggestions for improvements in VisiCalc 
itself. In the meantime, we hope you find VisiCalc to be an enjoyable and 
useful tool. 



89 



PART III. VISICALC COMMAND REFERENCE 

93 The VisiCalc Screen 

96 Command Structure Chart 

98 GO TO Command 

99 LABEL ENTRY Command 
101 VALUE ENTRY Command 

109 BLANK Command 

110 CLEAR Command 

111 DELETE Command 
114 FORMAT Command 
118 GLOBAL Command 
124 INSERT Command 
127 MOVE Command 
135 PRINT Command 

139 REPLICATE Command 

149 STORAGE Command 

157 TITLE Command 

158 VERSION Command 

159 WINDOW Command 

163 REPEATING LABEL Command 



The VisiCalc Screen 



Current Entry's Coordinates 
Entry Contents Line . 



Recalculation Order Indicator 



CONTROL 
PANEL I Prompt Line 



Edit Line 



WINDOW 



Cursor 

(or Highlighter) 



Row Labels 




Shows I during 
recalculation 



Memory Indicator 



Column Labels 



The Control Panel 

The top three lines of the VisiCalc screen make up the control panel. Each 
line has a specific function: 

The entry contents line is the top line of the panel. At the left, it always shows 
the coordinate on which the cursor is currently placed. Next to the cursor it 
displays the exact content (as it was entered) of that entry position, if there is 
anything written in it. Any explicit formats (see Part III, the FORMAT Command) 
that might have been set at the coordinate are also displayed here. At the right 
side of the entry contents line, the letter C or R appears, indicating that calcu- 
lation and recalculation is being done down columns or across rows (see Part 
III, the GLOBAL Command). 

The prompt line is the middle line in the control panel. At the left side, it dis- 
plays the prompts for the command that is currently being used. The number 
on the right indicates the amount of available memory left in the computer. On 
the command structure chart at the beginning of each command discussion in 
the VisiCalc Command Reference, each prompt line is enclosed in a box. Be- 
low the box are all the possible actions VisiCalc can take from that point in 
the command structure. 

The control panel is said to be "cleared" when there is no prompt on this line. 
A command can be started only when this line is clear. (The memory indicator 
on the right will always be visible.) When a command is being used and there is 
a prompt on this line, pressing BREAK will cancel the command and clear the 
prompt line. 

The edit line is the bottom line of the control panel. It displays each character 
you type or point to with the cursor while using a command. A small rectangle 
always appears after the last valid character that was typed. Characters that 
are displayed on the edit line can be erased by backing up the small rectangle 
with the BACK S key and then retyping, if desired. VisiCalc will also, on occa- 
sion, use this line to display information that it wants you to confirm or clarify 
before it carries out a command. 



The VisiCalc Screen Command Reference 



The Window and Sheet 

Below the control panel is the VisiCalc window, which looks upon a portion of 
the VisiCalc electronic sheet. Across the top of the window there is a border 
of letters, each of which is a column label. The sheet is divided into 63 columns, 
labeled A, B, C, . . . Bl, BJ, BK. Down the left side of the window there is a border 
of numbers, which serve as headings for each row. There are 254 possible 
rows on the VisiCalc sheet. 

Entry Positions 

The intersection of each column and row defines an entry position. A column 
letter followed by a row number identifies each entry position, i.e., D17. This 
identifier is called the entry position coordinate. 

The Cursor 

When VisiCalc is loaded, there is a light bar highlighting entry position A1. This 
bar is called the cursor and sometimes the "highlight." Any command that per- 
forms an action on a single entry position will do so in the entry position that is 
highlighted by the cursor when the command is started. This coordinate re- 
mains displayed at the left side of the entry contents line until the command is 
completed and the cursor moved. During the course of some commands, how- 
ever, the cursor can be moved by using the arrow keys (an action called 
pointing). 

IVIoving the Cursor 

The cursor can be moved to any position on the electronic sheet. The exact 
keys that cause the cursor to move are discussed in detail in Part I of this 
manual, in the section entitled "Some Notes on Your Keyboard." In the Visi- 
Calc Command Reference, we continue to use the symbols ♦, -*, |, and | to 
indicate the use of these keys to move the cursor. The cursor will move one 
entry position in the direction of the arrow each time you press the cursor- 
moving key. 

When the cursor has been moved to the right or bottom edge of the sheet 
visible through the window, VisiCalc will scroll the entire window across or 
down the sheet, following the cursor so that it is in view at all times. To jump 
around the sheet quickly, see Part III, the GO TO Command. 

If the cursor is "bumping" into any of the four edges of the electronic sheet, 
the ATARI will make the thud noise. 

Automatic Repeat 

Pressing any key, including the arrow keys ^, ♦, |, or |, and holding it down 
will cause that key to repeat its character automatically. In the case of the arrow 
key, this will cause the cursor to move in the direction of the arrow more quickly. 
The window will scroll to keep up with the cursor. 

Pointing with the Cursor 

Whenever you are using a command and can type in a formula (see the 
VALUE ENTRY Command) or an entry position coordinate, VisiCalc allows you 
to move the cursor to point to the coordinate you want. Check the prompt and 
edit lines to be sure you have begun the command and that VisiCalc is waiting 
for you to enter a coordinate before you press one of the cursor-moving keys. 
Then move the cursor to the desired entry position. You will see the coordinate 
on the edit line change as you move the cursor. If you try to point with the cursor 
when it is not allowed, VisiCalc may end the command and move the cursor 
to the next entry position. 



94 



VISICALC COMMAND SI 



> 



Go to: Coordinate | 



Enter entry coordinate 



Moves cursor to specified entry position. 



fir- 



Any letter or 



/ 



Moves cursor in direction of arrow. 



I Label | 



■ Type any characters. 



BACKS 

Erases last character 



Does (R) then moves cursor 



Moves cursor between windows 
when screen is split 



® 



Enters characters on edit line into entry position, 
displays characters and format on entry 
contents line 



fi»« 



Command: 



B 



IVI 



B 



Blank 



Clear: Y to confirm 



Delete: R C 



Does ® then moves cursor 

® 
Erases contents of highlighted 
entry position, leaves formats; 
any other key aborts command. 



Erases entire sheet 
including formats; any 
other key aborts 
command. 



Deletes all entries 
and formats in row 
containing cursor 



Deletes all entries and 
formats in column 
containing cursor 



Format: 


D G 1 L R S V 






1 ' 

Integer display 
L 


R ' 

Right lustities entry 

$ 


1 


Defaults to global 
format of current 
window 


G 




Displays integer 
stars lor bar graf 



General format 



Lett justifies entry 



Dollars and 
cents display 



insert: R C 



Inserts row above 
cursor 



Inserts column left of 
cursor. 



Move: From ... To 



Row Move: type • enter second 
coordinate in same column 



® 



Row containing first coordinate 
moves to row above second 
coordinate 

Column move: type • enter 
second coordinate in same 
row 



® 



Global: 



Column containing first 
coordinate moves to left 
of column containing 
second coordinate 



Colutnn width | | Reeval Order: R C | | Recalc: A M | | Format: D G I L R S | 



Type any number be- 
tween 3 and maximum 
screen width, changes 
width of all columns to 
the number specified 



Sets recalculation by 
rows (A1 to BK1, 
then A2 to BK2, etc ) 



Sets recalculation by 
columns (A1 to 
A254, B1 to B254, 
etc ) 



Recalculation 
proceeds 

automatically over 
whole sheet 



M 

Recalculation of entire 
sheet occurs only after 
typing > 



(see/F) 

Changes all unformatted entries 
in current window to specified 
format 



Print: 



Printer 



File 



Print: Lower right, "setup, -f , — , & j^^- 



Enter coordinate 
of lower right 
corner of area 
to be printed 

® 
Sends to output 
device 

I 



Sends 

carriage 

return 



Print: 
setup or RETURN 



RS232 devices, suppresses a line 
feed during printing, cancels & if 
previously given, stays in effect 
until changed or program 
reloaded 



Print: File name 



Replicate: Source ni|t 



Current cursor coordinate; 



Type name of data tile T 

® •^ 

Prints copy of sheet to output device Accepts beginning coordinate of source range 

under displayed file name in "file 

format" I 



BACH 

Clears edit line, entei^u 



IXI 



Enter ending coordinate from same column Enter ending ayji 

® 0' I: 



Replicate: Target range 



Type appropriate setup 
string, it any for output 
device 

® 

Enter coordinates of sheet 
to be printed 

® 

Sends to output device. 



RS232 devices. Sends a line feed 
during printing, cancels — if previously 
given, stays in effect until changed or 
program reloaded 



Enter single 


Enter beginning 


coordinate 


ending target 


® or 


coordinates from 


same column 


Copies source 


® or 


row once starting 


at target 


copies source 


coordinate 


row several 




times, beginning 




each on target 




column 



Repiical'i jn 



Enter single ^ 
coordinate 

® Of 
Makes one copv 
of source colum 
beginning at t 
target coordmati ^ 



TRUCTURE CHART 



Digit (0-9) 



Places value In highlighted entry 
position on the edit line 



Value 



Forces recalculation of entire sheet. 



\ 

Digit value reference + /*©(•) 



BACK S ! » 

Backs edit cursor Replaces formula with Its numerical Replaces immediately preceding 
value on edit line entry coordinate with current 

value on edit line 



(R) or -»• ♦- t i 

Stores formula in memory, displays 

value in current entry position 



w 



: 1980 Software 
Arts. Inc. I.xx 



[window: 



— I 
W 



Displays copyright notice 
and version number on 
prompt line, serial number 
on edit line, clears 
automatically with next 
keystroke 



H 

Splits 
window 
horizontally 
at cursor 



Splits window 
vertically at 
cursor I 



lumps cursor between windows 



1 

Ej(pands 
window 
containing 
cursor to (l 
screen 



Initiates 
horizontal or 
vertical 
synchronized 
scrolling 



s u 

Stops 
synchro- 
nized 
scrolling 



Label: Repeating 



Type any characters 

® 

Character sequence 
repeated across column 
width 



[Storage: 



I File to Load 



Enter file name by 
typing or scrolling 
directory. 

® 

Loads specified file (in 
the sheet format") or 
displays error message 



File to Delete 

'^ 

Type file name or scroll 
directory 

® 



Delete: Y to confirm 



Removes file Irom 
diskette any other key 
aborts command. 



File for Saving 



Titles: H 



Quit: Y to confirm 



Leaves the VisiCalc 
program, contents of 
memory erased, any other 
key aborts command. 



INIT DISK: hit RETURN 
(ERASES DISK) 



Enter file name by typing 
or scrolling directory 

® 

Write tile onto diskette in 
"sheet format" under 
specified file name or 
displays error message 



Displays disk drive 
specifications on edit line; 
insert unused diskette into 
drive 

® 

Erases diskette 
completely and prepares 
diskette to receive files 



range or RETURN 



displayed on edit line 



(S 

r single coordinate 



~1 

oordmate from same column 
® or 

le: Target range | f 



® 

Enters highlighted position as single source range 

Replicate: Target range 



H ' 

Fixes all rows 
(horizontal) in 
window Irom 
cursor up 



Fixes rows and 
columns both in 
window 



Fixes all columns 
(vertical) in 
window from 
cursor left 



Negates all title 
fixing 



Data: Save Load 



File for Saving 



Type file name or scroll directory 
® 



File to Load 

\ 

Type name of Data 
Interchange Formal" file or 
scroll directory 

® 



I Data save: Lower righT] (Data load: R, C or RETURN] 



Enter coordinate of lower right 
hand corner. of area to be save 



® 



Ror ® 

Loads file by rows 
beginning at cursor 



Data Save: R, Cor RETURN 



Loads file by columns 
beginning at cursor 



R or®- 



173 



Writes tile onto 
diskette by rows 
beginning at position 
held by cursor when 
storage command 
initiated uses "Data 
interchange Formal" 
with specified file 
name 



Writes file onto 
diskette by columns 
beginning at position 
held by cursor when 
storage command 
initiated uses "Data 
interchange Format" 
with specified file 
name 



Enter beginning 
ending target 

coordinates from 

one row 
® or 

Makes several 

copies of source 

column beginning 

each one m 

target row 



Enter single 
coordinate 

® or 
Copies source entry 
contents into target 
position 



Enter beginning 
ending coordinates 
from one row 

® or 
Copies source 
contents into target 
row 



Enter 

beginning ending 
coordinates from 
one column 

® or 
Copies source 
contents into target 
column 



95/96 



VisiCalc The VisiCalc Screen 



Ty pea head 

At times, you may type faster than VisiCalc reacts to your keystrokes. This is 
because VisiCalc may be doing any number of things in reaction to the last 
key you pressed, such as expanding the electronic sheet and recalculating 
formulas. VisiCalc has a feature called typeahead. Typeahead remembers 
which keys you pressed, no matter how fast you go. It will catch up with you as 
soon as it can. 

Correcting Mistakes 

When you have characters on the edit line, you may back up to erase them by 
using the BACK S key and then typing in the correct characters. Each time 
BACK S is pressed, the small rectangle on the edit line will erase one character. 
If you press it one more time than you have characters on the edit line, VisiCalc 
will automatically cancel the command and leave you with a clear control 
panel. 

If you start a command and decide you don't want to complete it, press BREAK 
to cancel it and return to a clear control panel. 

To change the contents of an entry position, move the cursor to the coordinate, 
and initiate the desired command. When you finish the command with its ap- 
propriate terminator (such as ®), the old contents will be replaced by the new. 

The Memory Indicator 

The number at the right side of the prompt line is called the memory indicator 
and tells you how much memory is available as you write on the electronic 
sheet. There is a discussion of the computer's memory and the way VisiCalc 
uses it in Part II, Lesson Two, in the sections entitled "Postscript: Memory and 
the Electronic Sheet," "How the Sheet is Reconfigured," "The Memory Indi- 
ator," and "Dynamic Memory Allocation." 



97 



The GO TO Command 

> 



Go to: Coordinate 



Enter entry coordinate 

®: 

Moves cursor to specified entry position. 



With this command, you have a fast way to move the highlight to any position 
on the sheet. To move the highlight cursor to a new entry position, type > plus 
the coordinates of the entry position to which you want to jump, and ® 

Example 

1. Type > prompt line: GO TO: 

COORDI NATE 

2. Type AM205® The highlight will be moved to column AM, 

row 205. 



98 



The LABEL ENTRY Command 

Any letter or 



Label 



-► Type any characters. 



BACKS 

Erases last character 



Does (§) then moves cursor. 



® 

Enters characters on edit line into entry position; 
displays characters and format on entry 
contents line. 

Any combination of characters other than control characters can be put into an 
entry position. The character strings entered as labels are evaluated by Visi- 
Calc as (zero). 

You begin the label entry command from a cleared control panel. The label will 
be entered in the entry position on which the cursor is sitting when you begin 
the label entry command. When the first character of the label is alphabetic, 
just begin typing the label. VisiCalc immediately recognized that you are en- 
tering a label. 

You may want to enter a label such as 2ND MONTH. In such a case where the 
first character is a digit or one of the arithmetic operators which automatically 
begin a value entry (see VALUE Command), you must type a quotation mark 
CO as the first character in the label. The " will not appear as part of the label. 

As soon as you have pressed either the " or a letter, the prompt line will display 
LABEL and the characters of the label will appear in the edit line and in the 
entry position. Press BACK S to back over any mistyped characters. With the 
error(s) thus removed, simply type in the correct characters. 

When the label is complete, terminate the command with either®, ^, ^, ^ or 
|. The label will appear in the entry position with the first character at the left 
side of the column and will have replaced anything that you may have previ- 
ously placed in that position. You may tell VisiCalc to display the label right- 
justified within the column with a special format (see the discussion of /FR in 
Part III, the FORMAT Command). All entries made with the label command are 
given the entry type L, which appears on the entry contents line as (L). 

Example 

1 . Type >A1 The cursor is in entry position A1 . 

2. Type P prompt line: LABEL 

edit line: P 

3. Type ERIOD entry contents line: Al 

prompt line: LABEL 

edit line: PERIOD 



99 



The LABEL ENTRY Command Command Reference 



4. Press® entry contents line: Al (L) 

PER lOD 
prompt line: clear 

edit line: clear 

or press ^ -^ 

I or -•^ The label is entered and highlight is on the 

next entry position. 

Suppose you want to use a label that looks like a formula. 

Example 

1. Type >B1® 

2. Type " prompt line: LABEL 

3. Type .575*82 prompt line: LABEL 

edit line: .575*BE 

4. Press®, ■», ^, 

I or I entry contents line: Bl (L) 

.575*BE 
prompt line: clear 

edit line: clear 

The (L) on the entry contents line in step 4 of the above example indicates a 
label type of entry and allows you to distinguish it from a value entry. 



100 



The VALUE ENTRY Command 



# 



Digit (0-9) 



@ 



Places value In highlighted entry 
position on the edit line. 



I Value I 



Digit value reterence + / * 



BACK S ! # 

Backs edit cursor. Replaces formula with its numerical Replaces immediately preceding 
value on edit line, entry coordinate with current 

value on edit line. 



® or -► ^ t i 

Stores formula in memory; displays 
value in current entry position. 



Value entry is the procedure by which you write numbers and formulas on the 
VisiCalc sheet. A formula may be a number or an arithmetic expression and 
may contain entry position coordinates (called value references) as well as 
functions and their arguments. For example, 1000, +B13, 1.5*12/6, +C2*B2 
and 1.5 + (D2/B3) are all valid formulas. You can enter values in either of two 
ways: 

1. By typing the appropriate characters directly at their coordinates and 
pressing ®; 

2. By using the arrow keys {-^ ^ ^ ^) to move the cursor to a coordinate 
where you have previously placed a value or formula and pressing ®. 

When a formula contains a value reference, VisiCalc uses the current value in 
the entry position in its calculation. VisiCalc then displays the calculated value 
of the formula in the entry position on which the cursor is located when you 
start the command. When a value has been entered, it replaces the previous 
contents of the entry position. 

All values are stored with either 11 or 12 significant digits. When a number is 
displayed in the general format (see the FORMAT Command), VisiCalc will shift 
between conventional and scientific notation as required to display the calcu- 
lated value with the greatest precision. 

In scientific notation, the number 123456789123 becomes 1.235E11. The "E11" 
means "times 10 to the 11th power." The largest nurnber possible is 
.999999999999E62. The smalles is 9.999999999E-66. Except in $ format (see 
the FORMAT Command), non-significant zeros are dropped from the display. 

If the column is too narrow to display the number even in scientific notation, 
VisiCalc will place as many right angle brackets (>) as it can in the entry 
position. 

An illegal calculation, such as dividing by zero, will result in a value that is 
displayed as E R R R in the position where the illegal calculation occurs and in 
all other positions that reference the calculation. 



101 



The VALUE ENTRY Command Command Reference 



Any of the following keystrokes will initiate the value entry command: a digit 

+ -(. # @ 

The arithmetic operators are: 

+ addition 
— subtraction 
/ division 
* multiplication 
exponentiation 

VisiCalc performs the calculations in the order it encounters them, from left to 
right. To change the order of precedence, use parentheses to indicate "do 
this first." If there are parentheses within parentheses, VisiCalc will calculate 
the innermost first. For example, 5 + 6/2*4 will be evaluated as 22, but 
5 + ((6/2)*4) will evaluate as 17. 

The complexity of a formula, i.e., the number of value references, arithmetic 
operators, parentheses, functions and their arguments, and the amount of 
memory in your computer determine the maximum length of the formula you 
may enter. If the formula becomes too complex as you type it, VisiCalc will stop 
displaying your keystrokes. You will be able to enter everything in the formula 
up to that point. VisiCalc will not allow you to enter an illegal formula such 
as one which ends with an arithmetic operator. You must back up with the 
BACK S key to erase the offending character(s). 

A formula that does not contain value references may be one such as 1435, 
or -14.35 or 5*12 + 1-60. As soon as you type one of the characters that 
initiate a value entry (as listed in the first paragraph), VisiCalc immediately 
places VALUE on the prompt line and displays the character you typed on the 
edit line. As you continue to type in the elements of the formula, they appear 
on the edit line. Until you have terminated the command and entered the 
formula by pressing ® or one of the cursor-moving keys, you can use BACK S 
to modify what you've typed, or press BREAK to leave the value entry command 
altogether. 

When a value entry formula has been made, VisiCalc displays the calculated 
value at the entry coordinates on the sheet and the formula itself on the entry 
contents line of the control panel. It also stores the actual formula in its 
memory. The formula that was used to obtain a value will always be displayed 
on the entry contents line when you place the cursor on the value. For example, 
if 5*12 + 1-60 were the value entry, the entry position would display 1, its 
calculated value. At the same time the entire formula would appear on the entry 
contents line. 

VisiCalc may also be used like a calculator as you are typing in a formula on 
the edit line. Suppose you wanted to store the result of 5*12 + 1 -60 as the 
value entry, and not the formula from which it was derived. Simply type the 
formula at whatever coordinate you choose. You will see the formula on the edit 
line as you type it in. When you've finished typing in the formula, press the 
exclamation point ! VisiCalc will immediately calculate the value and display 
the result on the edit line. 

If ® or one of the cursor-moving keys is pressed at this point, the answer (in 
the case of the above formula, number 1) will appear at the entry position 
coordinates and in the entry contents line. From this point, you could also con- 
tinue developing the formula for the value entry. 



102 



VisiCalc 



The VALUE ENTRY Command 



VisiCalc provides a method for duplicating a numerical value from one entry 
position into another without having either to retype or replicate the formula 
(see the REPLICATE Command). Note, however, that this method uses only the 
calculated value in the entry position as the new value entry, not the original 
formula. 

To begin, place the cursor at the position into which the number is to be 
entered, and initiate the value entry command with -i-. Then, either point with 
the cursor or type in the coordinate of the entry position containing the number 
you wish to duplicate. The edit line will display the coordinate. Press #, and 
the value of that coordinate will appear on the edit line. Press ® or move the 
cursor, and the value will be entered into the entry position. 



Example 

1. Type/CY 

2. Type1 

3. Press® 



4. Press | 

5. Type 3*34® 



6. Type ^8*1.5!® 



Type >B5® 
Type + 



9. Press -^ until the cursor 
is highlighting B1 

10. Press # 

11. Press® 



Clear sheet; cursor to A1 

prompt line: VALUE 

edit line: 1 

entry contents line: Al (V) 

prompt line: clear 

edit line: clear 

position A1: 1 

entry contents line: Bl 

entry contents line: Bl (V) 

prompt line: clear 

edit line: clear 

position 81: IDE 

entry contents line: CI (V) 

position Bl: IE 

entry contents line: B5 

prompt line: VALUE 

edit line: + 

edit line: +B1 



3*3^ 



IE 



edit line: +1DE 

entry contents line: B5 (V) IDE 

prompt line: clear 

edit line: clear 

position B5: IDE 

VisiCalc permits entry position coordinates to be used as elements in formulas. 
These elements, called value references, take on the value in the entry position 
to which they refer. This value will change whenever you change the contents 
of the referenced entry position. You cannot begin a formula with a value 
reference, since the first character you would type would be a letter. VisiCalc 
would assume you were typing a label (see the LABEL ENTRY Command). 



103 



The VALUE ENTRY Command Command Reference 



You must initiate the value entry command with a +, orO+ and enter the value 
reference. If the next keystroke is an arithmetic operator, you may follow it with 
a number or a value reference. 

Until you've terminated the value entry command with ®, -m-, -*, |, or |, you 
can use BACK S to back up and change the formula on the edit line, or press 
BREAK to interrupt the command and return to the cleared control panel with- 
out making an entry. 

If you are looking at different parts of the sheet through a split screen (see the 
WINDOW Command), you can use the ; to jump from one window to the other 
and point to entry position coordinates you wish to use in the formula. 

A cursor-moving key (^, ■*, |, or |) will not terminate the value entry com- 
mand, if you type it simply to point to a value reference that follows an arith- 
metic operator on the edit line. Rather, pressing an arrow key will simply 
change the coordinate on the edit line to show the new cursor position. You 
must use a ® to establish the pointed to value reference as part of the formula 
you are attempting to create. 

For example, if 1 + is on the edit line, and you point with the cursor to A5, the 
formula on the edit line will be 1 +A5. Pressing a cursor-moving key at this 
point will not terminate the command, but will change the coordinate A5 to 
correspond to the new cursor position. In this example, ® must be used to 
enter the formula. 

If you press # immediately after a value reference on the edit line, the value of 
the coordinate will replace the value reference on the edit line. Pressing ! will 
evaluate the entire formula before it is entered into an entry position, auto- 
matically replacing every value reference that is on the edit line with its current 
value. 

Press ® or any of the cursor-moving keys after # or ! will enter the value of 
the formula rather than the formula itself in the entry position. Note that the 
resulting value will appear in both the highlighted entry position and the entry 
contents line. The original formula will not be saved. 

Example 

1 . Type /CY Clear sheet; cursor to A1 

2. Typel-^ 

3. Type -|- 

4. Press -m- 

5. Type +1 

6. Press® entry contents line: AE (V) +A1 + 1 

7. Type -^H-^* 

The value of A2 has replaced the value 
reference. 

8. Type ! edit line: 3 

The formula on the edit line has been 
evaluated. 



104 



position A1: 
Cursor is on 


A2. 


1 


prompt line: 
edit line: 




VALUE 

+ 


edit line: 




+ A1 


edit line: 




+ A1 + 1 


entry contents line: 
position A2: 

edit line: 


AE (V) 

a 

1 + 2 



VisiCalc The VALUE ENTRY Command 



9. Press® entry contents line: A3 (V) 3 

position A3: 3 

Notice that the formula used to derive the 
value of 3 has not been stored because of 
the use of !. 

In the example above, every time you change the value of A1, you will see the 
effect of that change in position A2, which contains A1 as a value reference in 
the formula +A1 +1. Try it by placing the cursor on A1 and typing 100® The 
value in A2 will be recalculated and replaced with the new value, 101. 

Recalculation Order 

VisiCalc formulas may contain as many value references as the complexity of 
the formula will allow. When any value entry is made, including changing an 
existing entry, VisiCalc automatically recalculates every value on the sheet. 
Recalculation always starts in the upper left hand entry position, A1. 

VisiCalc's natural tendency is to calculate column by column. Given a set of 
values to work on, it calculates a value for A1, then A2, then A3, then A4 to the 
end of column A. Then it recalculates B1, B2, B3, 84 to the end of column B; 
then CI, C2, C3, C4 and so on. Note the letter C in the upper right corner of 
the control panel. This indicates that the order of recalculation for the whole 
sheet is by column. 

The global command (see the GLOBAL command) contains an option which 
lets you change the order of calculation from down columns to across rows. 
When row calculation is in effect the upper right corner of the control panel 
will display an R. 

Forward and Circular References 

Pay particular attention to the placement of any formulas that contain value 
references. When in the column recalculation mode, be sure that all referenced 
entry positions are to the left of the formulas that cite them (or above a formula 
in the same column). 

If the sheet is not arranged in this way, the formula containing a value refer- 
ence will be recalculated before the new value has been placed in the refer- 
enced entry position. When recalculation has been completed, the sheet will 
display the value of the formula as calculated using the old value from the 
referenced entry position. However, the ne\/v value of the referenced entry posi- 
tion will be displayed in the entry position. 

This problem, called forward referencing, is often difficult to diagnose and 
might cause you to conclude that VisiCalc has made an arithmetic error. If you 
suspect your sheet contains a forward reference that is causing a formula to 
be incorrectly updated, press the ! once. This will force another recalculation 
of the whole sheet. 

Watch the suspect formula. If a new value appears, look for forward references. 
You may choose to redesign your sheet to eliminate all forward references or 
to use multiple !'s for recalculation. In row calculation, referenced values must 
be placed in the rows above the formulas that cite them (or to the left in the 
same row). 

Note that if you forward reference a position and recalculate it, the result 
should be correct. However, if you save and reload the sheet, the positions 
containing forward references will display ERROR. To see the correct values 
after reloading the sheet, you must force another recalculation. 

105 



The VALUE ENTRY Command Command Reference 



A circular reference is one that cites itself, such as placing the formula, 1 +A1, 
in entry position A1 , for example. Each time the sheet is recalculated the value 
of this formula will change, even if no other changes are made on the sheet. 
Circular references can be very useful when their results are correctly antici- 
pated. However, they can create real problems when entered by mistake. 

VisiCalc's Built-in Functions 

Built-in functions are used within value entries to save you the effort of setting 
up commonly used formulas yourself. Each function begins with @, followed 
by the "function word," followed by an expression in parentheses (the argu- 
ment). For example, the @SUM function might be written 

3SUI1(B1,SE,A^*.E3) 

This expression would result in the sum of the values found in entry positions 
81, S2, and .23 times the value in entry position A4. A built-in function may be 
placed in any entry position by itself or used as part of a larger expression. 

The @ may be used as the first character in a value entry (no preceding + is 
necessary). The function word may be shortened to include only enough letters 
to avoid confusion with other function words. The function words are listed in 
the table below with the form of their arguments and their definitions. 

Function Arguments 

All but three of the built-in functions are followed by an argument written in 
parentheses. The arguments shown as "v" in the chart below may be any legal 
VisiCalc values. The arguments shown as "list" may consist of any combina- 
tion of values and entry ranges separated by commas. A range is a portion of 
a row or a column specified by its beginning entry position coordinate, three 
dots, and its final entry position coordinate. 

Example: A3 . . . A17 

A range may not be a diagonal across rows or columns. When entering a range, 
you may type in the coordinate or move the highlight to point at the desired 
entry position. Entry positions containing labels or blank entries are evaluated 
as zeros when they are used as value references in function arguments or in 
formulas. 

You may insert values into a range by placing the cursor on any coordinate 
within the range and typing /I followed by R (for Row) or C (for Column). The 
©function range will expand to include your insertion. 

The only two places where you may not insert a value into a range are at the 
beginning coordinate of the range and at the ©function itself. Either such 
entry will not be included in the range. 

(®SUM(list) adds the values of all entry positions cited in 

the list. 

(®MIN(list) chooses the smallest value in the list. 

@MAX(list) chooses the largest value in the list. 

@COUNT(list) results in the number of non-blank entries 

in the list. 

@AVERAGE(list) @SUM(list) divided by @COUNT(list) 

@ABS(v) results in the absolute value of v. 



106 



VisiCalc The VALUE ENTRY Command 

@INT(v) results in the integer portion of v. 

@SQRT(v) results in the square root of v. 

@EXP(v) returns e (2.71828 . . .) to the v power. 

@LOG10(v) results in the logarithm (base 10) of v. 

@LN(v) returns the natural log (base e) of a number. 

@SIN(v), @COS(v), returns the appropriate 

(gTAN(v), @ASIN(v), trigonometric function of the 

(®ACOS(v), @ATAN(v) value. Calculations are done in radians. 

@NPV(dr,range) Calculates the Net Present Value of the 

cash flows in the range, discounted at the 
rate specified by dr (the discount rate ex- 
pressed as a decimal). The first entry in the 
range is the cash flow at the end of the first 
period, the second entry is the cash flow at 
the end of the second period. 

Functions without Arguments 

@P\ is the ratio of the circumference of a circle to its diameter. VisiCalc 
evaluates @P\ as 3.1415926536. 

@NA (Not Available) is used when a sheet must be set up before the data to be 
evaluated is available. If entry positions that will later contain data are left 
blank, they will be evaluated as zero if used as value references in formulas. 
This will produce the entry ERROR on the sheet wherever zeros appear as 
denominators and may produce incorrect or misleading values elsewhere. En- 
tering (® NA into the blank data positions causes VisiCalc to evaluate all entries 
that refer to those positions as NA. Without entering the data, you can be as- 
sured that all your formulas are legal in VisiCalc. 

Any illegal calculations will show up as ERROR. Like @NA, @ERROR is also 
displayed in the entry position into which it is entered and all positions that refer 
to it. In addition, the @ERROR function is often generated by VisiCalc in such 
cases as when a deleted row or column contained entry positions that are value 
references in formulas. An ERROR message will also result from a too deep 
nesting of ( or of -h . An expression syntax error, such as NPV with a range, can 
also generate an ERROR message. Note: it's okay to save sheets that include 
either ERROR or NA entries. 

(a)LOOKUP(v,range) 

Looks up a numeric value in a table and finds the value that corresponds to it. 
For example, when you do taxes, you look up the gross pay in a tax table and 
then use a corresponding tax rate. 

The table used by the @LOOKUP function may be a range within a column or 
a row. The value that is being looked up will be compared to successive values 
In that table until a value is found that is larger than the value being looked 
up (or until the end of the table is reached). The entry in the table that is before 
this entry is the one that VisiCalc will consider as the "match" for the value 
being looked up. 

If the table is in a column, VisiCalc returns the value of the entry that is im- 
mediately to the right of the "matching" entry as the value of the function. If 



107 



The VALUE ENTRY Command 



Command Reference 



the table is in a row, VisiCalc returns the value immediately below the "match- 
ing" entry as the value of the function. If the first value in the table is greater 
than the value being looked up, then the value of the function will be NA. 

An example of the use of the @LOOKUP function would be the following in- 
voice form. The total amount of the goods purchased is looked up in a table 
and the found value is used as a discount percentage. Finally, the dollar 
amount of the discount is calculated, and the total amount of the invoice is 
found. In this example, the order of calculation is by rows (see the GLOBAL 
Command, /GO). 




ITEH 



PRICE OUAHTITY 



B202 
L138 


15 

69 


. 45 
. 42 


18 
1 

TOT<^L 
DISCOUNT 


278 . 10 

69 . 42 

347 . 52 

34 ,. 75 

312 . 77 


5 C T . ^ 


HHIi 


if-: 









. 00 

. 00 



100. 00 

. 05 



:50 . 00 

0.10 



see - ee 

0.20 



The formula at entry position B9 is @LOOKUP(D7,A18 . . . E18)*100 (by multi- 
plying by 100, we make it a percentage). Although the lookup range is tech- 
nically a forward reference (see the VALUE ENTRY Command), it makes no 
difference in this case because the values in that range are constants. The 
format of that entry position is /FG (see the FORMAT Command). The formula 
at D9 is +D7*B9/100. The lookup table has been placed in positions A18 
through E18. The entry at position E18 is $3000.00 referencing a discount of 
0.25 at E1 9. 

If the total of the invoiced items was $347.52, then the discount percent would 
be 10% (the value that corresponds to $250.00). A total of $3000.00 would have 
a discount of 25%, the same as for $1000.00. 



108 



The BLANK Command 



/B 



Blank 



Does ® then moves cursor. 



® 

Erases contents of highlighted 
entry position, leaves formats: 
any other key aborts command. 



Blank erases the label or value at the entry position where the cursor is located 
without affecting the existing format setting for that position. 



Example 

1. Move the highlight over 
the entry position to be 
erased. 

2. Type / 



3. Type B 

4. Press® 

or press ■» ♦ | or | 



prompt line: COHHAND: 

BCDFGIilPRSTVlJ- 
prompt line: BLANK 

The control panel will clear and the high- 
lighted entry position will be blank. 
The control panel will clear, the original 
entry position will be blank, and the high- 
light will be on the next entry position. 



109 



The CLEAR Command 

/C 



Clear: Y to confirm 



Erases entire sheet 
including formats: any 
other key aborts 
command. 



The clear command completely erases the sheet. Clear sets all entry positions 
to blank, resets formats, titles, windows, and other information about the sheet 
to the initial specifications set by VisiCalc when you first load it into the com- 
puter. The cursor is returned to entry position A1. 

Clear irretrievably erases all information on the screen. If you want to save the 
information on the sheet, be sure to do it (see the STORAGE Command) before 
issuing the clear command. 

Example 

1.Type/C promptline: CLEAR: Y TO 

CONF I RI1 

2. Press Y The screen will darken for a few seconds, 

then display the copyright and version 
notices. Your next keystroke will clear the 
prompt line. 



110 



The DELETE Command 



/D 



Delete: R C 



Deletes all entries 
and formats In row 
containing cursor. 



Deletes all entries and 
fornwts in column 
containing cursor. 



VisiCalc allows you to remove the entries from an entire column or row. The 
delete command will delete the information in the row or the column where you 
have placed the cursor. After removing the row or column, it then fills in the 
empty space with the nearest row or column. 

VisiCalc also automatically looks up all value references in formulas and 
changes them to correspond to the new coordinates resulting when the rows 
or columns are moved after the delete command. It then recalculates the whole 
sheet. 

To use this command, first place the cursor in the row or column you want to 
delete. Then type /D The prompt line reads DELETE: R C. Type R to 
delete the row in which the cursor is located. Or type C to delete the column. 
VisiCalc immediately deletes the information and moves all other rows or 
columns accordingly. 



Example 

1. Type/CY 

2. Type1|2|3|1+C1< 

3. Type >B1® 



To clear the sheet 
Cursor is at A. 

Your screen should look like this: 




111 



The DELETE Command 



Command Reference 



4. Type /D 

5. Type 



prompt line: DELETE: R C 

Your screen looks like this: 




6. Press I 



entry contents line: CI (V) 1 + Bl 
Note that the formula has been changed 
from 1 +C1 to 1 +B1 so that it still refers to 
the value at 3 that you originally entered at 
C1 in step 2 of this example. When the en- 
tries in column B were deleted, VisiCalc 
moved all columns up and then changed 
the value reference so that the formula is 
correct relative to the new positions. 

Use the delete command with care: you cannot recover the information from a 
row or column once you hiave deleted that row or column. The insert com- 
mands (see the INSERT Command) can recreate the row or column space, but 
not the actual entries. 

If you have deleted an entry that was referenced in a formula (see the VALUE 
ENTRY Command), all entry positions containing formulas with value refer- 
ences to that position will contain the message ERROR. 



Example 

1. Type/CY 

2. Type 11211+814 



To clear the sheet 
Cursor is at A1 

The cursor is on 81. 
Your screen should 
below: 



look like the photo 



112 



VisiCalc 



The DELETE Command 




3. Type /D 

4. Type C 



prompt line: DELETE: R C 

entry contents line: Bl (V) 

1+aERROR 
position B1: ERROR 

All information in column B was deleted and 
the contents of column C move over. At step 
2, you entered a formula with a value refer- 
ence, 1+B1. VisiCalc replaced B1 with 
ERROR and alerted you by placing 
@ERROR in the entry position containing 
the formula. 




113 



The FORMAT Command 



/F 



Format: 



Defaults to global 
format of current 
window. 



I — 

Integer display. 



Right justifies entry. 



General format. 



Left justifies entry. 



Dollars and 
cents display. 



Displays integer value as 
stars for bar graphs. 



The format command adds a set of explicit display conditions to the high- 
lighted entry on the VisiCalc sheet. The original entry contents (LABEL or 
VALUE) remain unchanged in the computer's memory. The original contents 
will also be stored on diskette (see the STORAGE Command), if you choose to 
save the sheet. They are always used in calculations and are displayed com- 
pletely on the entry contents line. 

On the sheet, however, the entry will appear as specified by this command. If 
the entry is moved to another position on the sheet (see the REPLICATE Com- 
mand, the MOVE Command, and the INSERT Command), printed on paper or 
another device (see the PRINT Command), or stored on diskette (see the 
STORAGE Command) the appearance caused by the format command will 
remain. 

Once an entry position has been formatted, a format indicator will appear on 
the entry contents line between the current entry coordinates and entry con- 
tents. Erasing the contents of the entry position (see the BLANK Command) 
does not remove explicit formats, but clearing the sheet (see the CLEAR Com- 
mand) does. 

To format a row or a column before making entries, format the first entry and 
then use the replicate command (the REPLICATE Command) to copy the 
format into the rest of the row or column. 

You cannot change the number of character spaces in an individual entry 
position. To change the number of characters in every column throughout the 
window, use the global command for changing column width (see the GLOBAL 
Command). 

To see how the format options affect the display, set up your sheet as instructed 
in the example below. All the examples in this section use this sheet for the 
format examples. 



Example 

1. Type/CY 

2. Type LABEL ENTRY| 
1.23456789199.999® 



This clears the sheet, positions the cursor 
at A1, and resets all display characteristics. 



You now have one label and two values on your sheet. Any explicit format set- 
tings were removed when the sheet was cleared. You have one window (see 
the WINDOW Command) and no titles (see the TITLE Command). Your 



114 



VisiCalc 



The FORMAT Command 



columns contain nine character spaces, the general column width, (see the 
GLOBAL Command), and all entry positions display the general format (see 
the GLOBAL Command and the discussion below). These same display char- 
acteristics are set each time VisiCalc is loaded into your computer and when- 
ever the clear command is used. 

/FD is the Default display format 

An individual entry position format is changed to whatever format has been 
previously set with the global command (see the GLOBAL Command). If no 
global setting is in effect, the default will be the general format, described in 
/FG below. 



Example 

1. Type >C1' 

2. Type /F$ 



3. Type /FD 



4. Type /GFI 



The highlighted entry (C1) changes to dol- 
lars and cents format; B1 is unchanged. 
The entry contents line displays the /F 
setting. 



entry contents line: CI /F* (V) 

position C1: 

entry contents line: 

position C1: 
The default setting is general, as set by /CY. 
All values in the window that have not re- 
received an individual format are displayed 
as integers. 



CI /F* 

IDD.DD 
CI (V) 



(V) 



1 

IDO 
Cli /FG 

remains in integer 
format 

qs.qqq 



position B1: 
position C1: 

5. Type /FG entry contents line: 

position B1: 

position C1: 

The setting on C1 is now general, as shown 

on the entry contents line. 

6. Type /FD entry contents line: CI (V) 

position B1: unchanged 

position C1: IDD 

The setting on C1 has been removed and is 
no longer indicated on the entry contents 
line. However, since there is a global integer 
setting in effect, position C1 is displayed in 
integer format instead of general format. 

/FG sets the entry position to the General format. 

Labels begin in the leftmost space (left justified) and are cut off wherever the 
column width ends. Values are moved as far to the right as possible (right 



115 



The FORMAT Command Command Reference 



justified) with a leading blanl< character in the leftmost position in the column. 
Decimal or scientific notation is selected to display the largest number of sig- 
nificant digits. 

Example 

1. Type >A1® position A1 is now in general format for 

labels 

entry contents line: Al (L) LABEL 

ENTRY 
position Al: LABEL ENT 

2. Press ^ position B1: 1 

A global integer setting is still in effect from 
the previous example. 

3. Type /FG position 81: 1 . E3<5fcfl 

General format for numbers with few signifi- 
cant digits. 

4. Type 

123456789123456789® entry contents line: 

lE3^5b7flqiE3DDDDD0 
positional: 1. 235 El 7 

General format for numbers with many 
significant digits. VisiCalc selects scientific 
notation when this permits a larger number 
of significant digits to be displayed within 
the current column width. 

/Fl sets Integer format. 

All values are displayed rounded to the nearest whole number. 

Example 

1. Type 1.2® entry contents line: Bl /FG (V) 

l.E 
position 81: l.E 

2. Type /Fl entry contents line: Bl /F I (V) 

l.E 
position 81: 1 

Entry contents are rounded to the nearest 
integer. 

/FL Left justifies the entry position contents. All labels begin in the leftmost 
character space. All values are moved to the left, preceded by one leading 
blank. This command affects only the display of entries on the sheet that have 
fewer characters than the current column width. Left justifying a value entry will 
turn off an explicit integer format (/Fl) setting for that entry position. 

Example 

1.Type/FL entry contents line: Bl /FL (V) 

l.E 
position 81: l.E 

The value in 81 has been moved to the left. 



116 



VisiCalc The FORMAT Command 



/FR Right justifies the entry position contents. The last character of a label or 
a value falls in the last character space of the entry position. This command 
affects only the display of entries on the sheet that have fewer characters than 
the current column width. 

Example 

1.Type/FR entry contents line: Bl /FR (V) 

l.S 
position B1: 1 , E 

The value in 81 has been moved to the right. 

/F$ displays values in Dollars and Cents. All values are rounded to two decimal 
places. No $ is displayed in the entry position. Trailing zeros are shown. There 
is no effect on labels. 

Example 

1.Type/F$ entry contents line: Bl /F* (V) 

l.E 
position 81: 1 . ED 

/F* displays Bar Graph format. All values are truncated to an integer. That 
integer is replaced in the entry position by an equal number of stars. If the 
number of stars is larger than the width of the entry position, extras are ignored. 

Example 

I.Type/F* entry contents line: Bl /F* (V) 

l.E 
position 81: * 



117 



The GLOBAL Command 



/G 



Global: C 



Type any number be- 
tween 3 and maximum 
screen width; changes 
width of all columns to 
the number specified. 



Sets recalculation by 
rows (A1 to BK1, 
then A2 to BK2, etc.) 



Sets recalculation by 
columns (A1 to 
A254, B1 to B254, 
etc ) 



Recalculation 
proceeds 

automatically over 
whole sheet 



M 

Recalculation of entire 
sheet occurs only after 
typing ' 



I Column width | | Reeval Order: R C | | Recalc: A M 1 | Format: D G I L R $ 



(see/F) 

Changes all unformatted entries 
m current window to specified 
formal 



The four global command options affect the window display and the order in 
which rows and columns are calculated. 

/GC (Global Column) allows you to change the width of all columns in a 
window to any number of characters between 3 and 39 (the maximum width of 
your screen). Column widths may not be set individually. VisiCalc will display 
as many whole columns of a given width as possible on the screen. When 
changing to a single wide column in a window, any vertical title areas previously 
set will be automatically removed (see the TITLE Command). 

When displaying numbers on the sheet, VisiCalc may change the format from 
the way you originally entered it on the edit line. Numbers will be rounded off 
in the window display when necessary to fit into the column width. VisiCalc 
will use scientific notation if this will permit more significant digits to be shown 
at the current column width than regular decimal notation. If the column is too 
narrow to display the integer portion of a value in either decimal or scientific 
notation, VisiCalc will display as many > symbols as will fit in the column width 
in the entry position with a leading blank. 

Regardless of how the values appear on the screen, the numbers stored in the 
computer's memory will remain unchanged and will be used in all calculations. 
The number, as you originally entered it on the edit line, will be displayed on 
the entry contents line whenever the cursor is over that number's entry posi- 
tion. To enter the number appearing on the entry contents line onto the edit 
line, place the cursor on the entry position and press # The prompt line 
must be clear to do this. 



Example 

1. Type/CY 

2. Type in position A1 
THIS LINE IS TOO 
LONG.® 



This clears the sheet and resets the column 
width to nine characters. 



entry contents line: 



Al (L) THIS 
LI NE IS TOO 
LONG. 



118 



VisiCalc 



The GLOBAL Command 



3. Type /G 

4. Type C 

5. Type 18® 



6. Type /GC24® 



Example 

1. Type/CY 

2. Type 123456789® 



3. Type 

|1. 23456789® 



4. Type /GC3® 



prompt line: 

prompt line: 
entry contents line: 

position A1: 

entry contents line: 

position A1: 
position B1: 



GLOBAL: 
CORF 
COLUMN WIDTH 

Al (L) THIS 

LI NE IS TOO 

LONG. 

THIS LI NE IS 

TOO L 

Al (L) THIS 

LI NE IS TOO 

LONG. 

THIS LINE IS 

TOO LONG. 

not displayed 



entry contents line: Al (V) 

lE3^5t7flq 
position A1: 1 .E3^tiEfl 

Note the leading blank, scientific notation, 
and final digit rounded up. 

entry contents line: Bl (V) 

l.E3^5t7flq 
position B1: l.E3^5tfi 

Note the leading blank and the final digit 
rounded up. 



entry contents line: 

position Al: 
position Bl: 



Bl (V) 

l.E3<5b7flq 

>> 

1. 



The number in A1 is too large to express 
with two characters, which is the space 
available for digits when the column width 
is 3, so VisiCalc displays >>. The number 
in Bl is rounded as shown with decimal 
point appearing. 

/GO (Global Order of recalculation) allows you to set the Order of Calculation 
to Columns or Rows. In column calculation and recalculation, entry position 
A1 is evaluated, then A2, A3 to the bottom of the sheet, then B1, B2, B3, to the 
bottom of the sheet in this column, then C1, C2, and so on. In row calculation, 
A1 is first, then Bl, CI, and so on, to the right hand end of the sheet, then A2, 
B2, C2, and so on, to the end of the sheet. This order of calculation is indicated 
on the control panel by the letter C or R in the upper right hand corner of the 
entry contents line. When you first load VisiCalc, the calculation order is by 
column. 

If VisiCalc appears to evaluate formulas incorrectly, you have probably placed 
formulas in entry positions so that they are calculated before the value refer- 



119 



The GLOBAL Command 



Command Reference 



ences that they contain. Order of calculation and recalculation has been dis- 
cussed at length in The VALUE ENTRY Command in Part III, and also in Part 
II, Lesson Three, in the section entitled "The Order of Recalculation." 

The following example illustrates the use of value references set up for 
column calculation, and shows what happens when they are calculated in by 
row. 



Example 

1 . Type /CY 

2. Typel-v- 

3. Type +A1® 

4. Type >B1® 

5. Type -I-A2 -^ 

6. Type +81® 



This clears the sheet and sets column 
calculation. 



Your screen should look like this: 




7. Type >A1®2® 



The value at A1 is changed to 2, and the 
other values are recalculated. Your screen 
should look like this: 



120 



VisiCalc 



The GLOBAL Command 




8. Type /GOR 

9. Types® 



The order of calculation indicator changes 
to R. 

Your screen looks like this: 




This is incorrect. B1 should be the same as A2, yet it displays a different value 
because B1 was recalculated before A2 was recalculated. In such instances, 
you can force a recalculation by pressing ! when the prompt line is blank. Press 
it now and the screen shows the correct values as in the photo below. 



121 



The GLOBAL Command 



Command Reference 




A similar example that works correctly for row order of calculation, but not for 
column order, is this: 



The sheet is cleared and calculation is set 

to column order. 

To change to row order of calculation. 



Example 

1. Type/CY 

2. Type /GOR 

3. Type1| + A1® 

4. Type >A2® 

5. Type +B1| + A2® 

Note how the four coordinates relate differently than in the previous example. 
Type >A1® Now type in 2® and 3® The results are correct. Change the order 
of calculation to columns with /GOG. Now type in a 4® at A1. An error results, 
similar to the one in which a column-oriented group of numbers were recalcu- 
lated by rows. 

/GR initiates Automatic or Manual Recalculation. When first loaded, VisiCalc 
is set to recalculate all values as soon as any change is made in an entry posi- 
tion to which a formula may refer. Changes ripple rapidly across your sheet 
whenever you change a value. Sometimes, such as when you are typing in a 
column or row of figures, you would like to turn off recalculation completely to 
eliminate the pause that occurs when VisiCalc is recalculating. 

To turn it off, type /GRM which stands for Global Recalculation Manual. Under 
manual recalculation, only the highlighted formula will be recalculated auto- 
matically. To update the whole sheet you must type ! Note: The use of ! does 
not take you out of manual recalculation. There is no cue on the control panel 
to indicate whether you are in manual or automatic recalculation, but the status 
should be evident from watching the behavior of the sheet. To resume auto- 
matic recalculation, type /GRA (Global Recalculation Automatic). 



122 



VisiCalc The GLOBAL Command 



/GF (Global Format) allows you to assign a format setting for all entry posi- 
tions in the window which have not been individualy formatted. The global 
format command uses the same formatting options as are available for indi- 
vidual entry positions. See the FORMAT Command for an explanation of these 
options. If you have split your screen into two windows (see the WINDOW 
Command), you may use a different global format for each window. When you 
save your sheet with /SS all global formats are also saved (see the STORAGE 
Command). 



123 



The INSERT Command 



/I 



Insert: R C 



Inserts row above 
cursor. 



Inserts column left of 
cursor. 

While developing a VisiCalc sheet, you may find that you need to insert addi- 
tional rows or columns. The insert command gives you this ability. After you 
type /I VisiCalc expects you to enter R if you want a row inserted, or C to insert 
a column. It is not possible to insert a single entry position— you may only insert 
an entire row or column. 

/IR inserts a new, blank row in the row in which the cursor is situated when you 
give the command. All rows that were at or below the cursor are moved down 
one row to make room for the insertion. VisiCalc then changes all value 
references in formulas to reflect the new entry position coordinates in the rows 
that were moved. For example, if a formula contains the coordinate C2, and a 
row is inserted at row 2, VisiCalc will change the coordinate to C3. The cursor 
will remain in its old position in the new, blank row. 

Example 




After typing /IR 



124 



VisiCalc 



The INSERT Command 




/IC inserts a new, blank column in the column in which the cursor is located 
when the command is given. All columns at and to the right of the cursor are 
moved one column to the right to make room. VisiCalc changes all value refer- 
ences in formulas to reflect the new entry position coordinates for the columns 
that were moved. The cursor remains in its original position in the new, blank 
column. 

Example 




After typing /IC 



125 



The INSERT Command 



Command Reference 




126 



The MOVE Command 

/M 



Move: From ... To 



Row Move: type • enter second Column move: type • enter 

coordinate in same column. second coordinate in same 

row. 

(D (D 

Row containing first coordinate Column containing first 

moves to row above second coordinate moves to left 

coordinate. of column containing 

second coordinate. 



It is sometimes desirable to change the position of a row or a column. The 
move command lets you do just that. VisiCalc will automatically change all 
value references in formulas (see VALUE ENTRY Command) to reflect the new 
coordinates that result when the rows or columns are moved. 

When you move a row or a column, be careful that you have not moved 
formulas containing value references to a position in which they are calculated 
before those value references. Order of calculation and recalculation is dis- 
cussed at length in the VALUE ENTRY Command in Part III and in Part II, 
Lesson Three, in the sections entitled "The Order of Recalculation" and 
"Forward and Circular References." 

To Move a Row 

When moving a row to a lower position on the sheet, row 1 to row 3 for in- 
stance, first place the cursor on the row or column you wish to move. Then, 
type /M The coordinate of the highlighted entry position will appear on the 
edit line. Press . and then use the cursor-moving keys to place the cursor on 
the row that is just below the row to which you are moving, or on the column 
just to the right of the desired new location. Note: the column or row to be 
moved will appear just above or just to the left of the cursor's new position. 
Terminate the move command with ® 

When moving rows, the cursor may be in any position within the row when you 
initiate the command. However, when you indicate the new location, you must 
use the same column coordinate. For instance, moving C10 to C5 is valid, but 
moving C10 to D5 is not. The same is true for moving columns. The row co- 
ordinate must be the same for the column being moved and its new location, 
i.e., moving A2 to D2 is valid, but moving A2 to D1 is not. When a row or column 
is moved, all intervening rows and columns are moved up to fill in the place 
vacated by the moved row or column. 



127 



The MOVE Command 



Command Reference 



Example 

1 . Set up your sheet as in the photo: 




2. Type /M 

3. Type. 

4. Press ^-w-^ 

5. Press® 



prompt line: 



MOVE 



FROM 
TO 



edit line: CI 

edit line: CI . . . 

Row 1 is going to be moved. 

edit line: CI. . *CA 

Row 1 is going to move to row 3. 

The sheet should look like the photo below: 




128 



VisiCalc 



The MOVE Command 



When you move a row to a higher place on the sheet, row 3 to row 2 for in- 
stance, either point with the cursor or type in the coordinate of the target row. 

Example 

1. Type /CY to clear the 
sheet and set it up as in 
this photo: 




2. Type /M 

3. Type . 

4. Press ♦ 

5. Press® 



prompt line: 



nOVE 
FROn 
C3 

C3. 



.TO 



edit line: 
edit line: 
Row 3 will be moved. 

edit line: C3. 

Row 3 will move to row 2. 

Row 3 have moved to row 2 



CE 



129 



The MOVE Command 



Command Reference 




To Move a Column 

To move a column to the right of its current position, first place the cursor on 
the column you wish to move. Type /M and the coordinate of the highlighted 
entry position will appear on the screen. Press . and then point with the cursor 
(or type in) to the column just to the right of the desired new location. The 
column will be moved to the position just to the left of the cursor. 

When moving columns, the cursor can be in any position within the column 
when you start the command, but when you indicate the new location, you 
must use the same row coordinate. For example, moving A2 to D2 is valid, but 
moving A2 to D1 is not. Terminate the move command with a ® All intervening 
columns are moved over to fill the place vacated by the moved column. 



130 



VisiCalc 



The MOVE Command 



Example 

1 . Type /CY to clear the sheet and set it up as shown in the photo below. 




2. Type /M 

3. Press. 

4. Type D1 

5. Press ® 



.TO 



prompt line: HOVE: 

FROM, 
edit line: Al 

edit line: Al . . 

edit line: Al . . 

Column A has been moved to column C as 
in the photo: 



Dl 




131 



The MOVE Command 



Command Reference 



When you move a column to the left of its present position, either point with 
the cursor or type in the coordinate of the target row. 

Example 

1 . Type /CY to clear the sheet 
and set it up as in this photo, 
with the cursor on D1: 




2. Type M 



3. Press . 

4. Press || 

5. Press® 



prompt line: 

edit line: 
edit line: 
edit line: 



MOVE 
FROn 
Dl 
Dl. 



.TO 



Bl 



Column D has moved to column B. 



132 



VisiCalc 



The MOVE Command 




You can also type in the coordinate of the row or column to be moved, as well 
as the coordinate of the new location. Use the BACK S key to erase any un- 
wanted coordinate, and replace it either by typing in or pointing to the coordi- 
nate with the cursor. 



Example 

1 . Set up your sheet as in 
the photo below by typing 
/CY 

one^two^three 
Mour|five® 



Clear screen, cursor at A1 



Cursor rests at E1 




133 



The MOVE Command 



Command Reference 



2. Type /M 

3. Press the BACK S key 

4. Type |||| 

5. Press . 

6. Type El 

7. Now press ® 



prompt line: 
edit line: 


HOVE 
FROM 
El 


prompt line: 
edit line: 


MOVE 
FROM 
blank 


edit line: 


Al 


edit line: 

cursor returns to E1 


Al. 


edit line: 


Al. 



TO 



TO 



.El 
Column A will be moved to column D. 

The contents of column A are now in D. 
The columns that were previously B, C, and 
D have been moved to A, B, and C. 




134 



The PRINT Command 



/P 



Print: 



Printer 



File 



Print: Lower right, ''setup, -j-, — ,"&"! 



Enter coordinate 
of lower right 
corner of area 
to be printed. 

® 
Sends to output 
device 



Sends 

carriage 

return. 



Print: 
setup or RETURN 



RS232 devices; suppresses a line 
feed during printing; cancels & if 
previously given; stays in effect 
until changed or program 
reloaded. 



Print: File name 



Type name of data file. 

® 

Prints copy of sheet to output device 
under displayed file name in "file 
format". 

I 



Type appropriate setup 
string, if any for output 
device. 


® 


Enter coordinates of sheet 
to be printed. 


(D 


Sends to output device. 



RS232 devices; Sends a line feed 
during printing; cancels — if previously 
given; stays in effect until changed or 
program reloaded. 



The print command turns a VisiCalc sheet into a report that can be sent to your 
printer, to your diskette, or to any other addressable device. This discussion will 
cover the commands for the ATARI 820 and 825 Printers as well as the ATARI 
850 Interface Module and the ATARI 810 Disk Drive. Note: you must have the 
850 interface to use the 825 printer or any serial printer. You can use the print 
command to communicate with other ASCII devices, such as those often con- 
nected to telephone modems. 

However, the exact commands needed for these devices depend on variables, 
the discussion of which goes beyond the scope of this manual. We recommend 
that you familiarize yourself with the principles of the /P command as given 
here, then consult the reference manuals for your particular equipment or see 
your dealer for assistance. 

Let's begin with the ATARI 820. Since the column width of your VisiCalc sheet 
is often greater than the 820's paper can handle, VisiCalc permits you to copy 
your sheet in strips. If your printout will be more than 40 characters wide, read 
"Printing in Sections" below, before attempting to print your file on the 820. 
All formats (explicit and global) are taken from the window in which the cursor 
rests. Window divisions (see the WINDOW Command) as well as row and 
column borders are ignored during printing. 



135 



The PRINT Command Command Reference 



The Print Command for Printers 

1. Position the cursor over the entry position that you wish to be printed 
first (in the upper left-hand position on the printout). The cursor's posi- 
tion determines the top row and leftmost column that will be printed. 
Titles that were fixed (see the TITLE Command) will be ignored, so 
you must insert extra rows or columns for title areas and replicate the 
titles (see the INSERT Command and the REPLICATE Command) if 
you want the titles to appear on the printout. 

2. Assuming you have adequate paper in your printer, turn the printer 
power switch ON. 

3. Type /P The prompt line will display: 
PRINT: PRINTER, FILE 

4. To print out on an ATARI 820 Printer, type P The prompt line will display: 
PRINT: LOUER RIGHT, "SETUP, +, -, & 

If you have an ATARI 820 Printer, LOWER RIGHT is the only command 
of immediate interest. 

5. Enter the lower right coordinate requested by the prompt line either by 
pointing the cursor to the desired coordinate or by typing it in. 

6. Press® 

Let's examine the other options that appeared on the prompt line. 

1. The SETUP option allows you to type characters directly to an output 
device. These characters are the "setup string" needed by some 
printers. To do this, type " and then the appropriate character string, 
ending with a ® (which is not transmitted). 

2. Type + If you wish to send a carriage return to an output device. 

3. Type & to set up the RS-232 mode internally. The & is used to send a 
line feed after each carriage return. Use with serial devices using the 
RS-232 protocol. 

4. The - turns off the RS-232 mode set up by the &. Note that both & and 
— stay in effect until you reload VisiCalc or cancel one with the other. 

Printing Formuias 

The /P command will print out the data on your electronic sheet. But what 
about the formulas and formats? A good hard copy backup of your work should 
include the formulas too. You can print them out by typing /SS P: (See the 
STORAGE Command for discussion of /SS.) The current sheet's formulas and 
formats will be printed out in a column. 

Printing in Sections 

If you attempted to print more than 40 characters on a line, you will see that 
the 820 placed the 41st character on the next line, beginning at the left margin. 
If the area you defined on the screen was greater than 40 characters, this 
"wraparound effect" will ruin your printout format. 

The way to beat this problem is to print out your file in sections. Once the 
sections are printed, they can be pasted together to simulate a wide printout. 
Note: this technique can be useful on printers with greater width, when an 
exceptionaly wide document must be generated. 



136 



VisiCalc The PRINT Command 



The ATARI VisiCalc window is 36 characters wide (not counting the border, 
which is never printed). This means that you can print four unseen characters 
of width. Most people find it easiest to simply print one window or less at a 
time, simply because they can see exactly what they're doing. 

To print in sections, begin as normal with step 1. However, when you arrive 
at step 5, choose a right coordinate within the window you are viewing ( + 4 
more characters, if you wish). The vertical portion of the coordinate (the 
numeral) can be whatever depth you like, because the 820 paper supply is not 
a sheet, but a roll. 

As an example, let's say you wanted a printout that extends from column A to 
column M and is five rows deep. You would begin by placing the cursor at A1 
(the upper leftmost position) and conclude by entering D5 as your lower right- 
most coordinate. Print it out. You should also advance the paper in your printer 
a few lines before the next printout to separate each successive section. The 
extra space makes cutting the sections apart less risky. 

Scroll the cursor until E column is at the left side of the screen and H column is 
at the right to line up the next four columns. Print this group in the same way 
as before. 

Continue by moving one whole window to the right until you have printed all 
the individual sections for columns A through M. Once you have printed out 
all the sections, paste them down side-by-side on a piece of paper. 

You can use a similar technique with the ATARI 825. The 825 can easily han- 
dle two complete screens (72 characters width) at once. Or you can use the 
ATARI'S condensed print mode, which prints 16.5 characters per inch. To do 
this, you must use a "setup string". Choose the SETUP option by typing " 
Press the Escape key (marked ESC) then hold down the Control key (CTRL) 
while pressing T. To return to the standard 10 character per inch mode, type 
ESC CTRL S when you finish your printout. 

Creating a Print Format File 

The purpose of the /PF command is to allow you to prepare a sheet for print- 
out on serial printers or printers with codes other than those immediately avail- 
able on the ATARI. Essentially, the /PF command turns the data on your sheet 
into ASCII strings and saves them in a text file. By using a special program, 
written in BASIC or other computer language, your sheet can be incorporated 
into word processing or simply printed out. 

To copy your sheet into a "print format" file on a diskette so that another pro- 
gram can read it, start with the cursor positioned on the first entry that you 
want printed in the file, then: 

1 . Type /P The prompt line will display: 
PRINT: PRINTER, FILE 

2. Type F and the prompt 

PRINT: FILE NAME 

appears. The rules for file names apply here. See the File Name section 
of the STORAGE Command for details. 

3. Press ® and when the prompt line LOUIER RIGHT, "SETUP, 
+ , — , & appears, enter the coordinate of the lower right hand corner 
you wish to print. You may do this placing the cursor over the desired 
coordinate or by typing it in. Then press ®. 

137 



The PRINT Command Command Reference 



The file will be written onto diskette in print file format. Note that Visi- 
Calc cannot read or reload files in this format. Use /PF only when you 
intend to write your own BASIC or other language programs for use 
with VisiCalc. 

Use the /PF command as well to print the sheet on a serial printer (connected 
to the ATARI 850 Interface Module). Begin by positioning the cursor on the 
upper leftmost coordinate. Type /P. Respond to the prompt by typing F Instead 
of entering the sheet's file name, however, enter R: and press ®. At this point 
VisiCalc will ask for your lower right coordinate. Enter it and press ® and your 
printout will begin. Note: some printers may need the setup string. Consult 
your printer's manual if the approach illustrated here does not work. 



138 



The REPLICATE Command 



^ /R 

I Replicate: Source range or RETURN 

-^ 

Current cursor coordinates displayed on edit line. 



• ■^■ 



Accepts beginning coordinate of source range 



BACKS 

Clears edit line: enter single coordinate. 



Enter ending coordinate from same column. 
® or: 



> 



Enter ending coordinate from same column 
(5) or: 



Replicate: Target range | | Replicate: Target range | 



Enter single 
coordinate. 

® or: 
Copies source 
row onc6 starting 
at target 
coordinate. 



Enter beginning 
. . . ending target 
coordinates from 
same column. 



® 



or: 



copies source 
row several 
times, beginning 
eacti on target 
column. 



Enter single 
coordinate. 
® or: 
Makes one copy 
of source column 
beginning at 
target coordinate. 



Enter beginning 
. . ending target 
coordinates from 
one row. 

® or: 
Makes several 
copies of source 
column beginning 
eacti one in 
target row. 

® or: 
Enters highligfited position as single source range. 

Replicate: Target range 



Enter single 
coordinate. 

® or: 
Copies source entry 
contents into target 
position. 



Enter beginning. . . 
ending coordinates 
from one row. 

® or: 
Copies source 
contents into target 
row. 



Enter 

beginning. . ending 
coordinates from 
one column. 

® or 
Copies source 
contents into target 
column. 



The replicate command allows you to copy the contents of any entry position, 
including labels, values (numbers, expressions, and formulas), formats (the 
FORMAT Command), and blank entries (the BLANK Command). You may copy 
a single entry from one place to another, copy a single entry position into a row 
or a column, or you may reproduce a single row or column as many times as 
you like. 

However, the replicate command does not permit you to copy a row into a 
column, or to copy a matrix (several rows or columns at once). Complex copy- 
ing operations must be done with a series of replications or with the /S#S 
option (see the STORAGE Command). 

To use the replicate command, you must supply two (and sometimes three) 
sets of information: 

1. the source range 

2. the target range 

3. indication of the relationship of a value reference (see the VALUE 
ENTRY Command) to the new position 



139 



The REPLICATE Command Command Reference 



A range may be a single entry position as well as a whole or partial row or 
column. Ranges are specified by entering a starting coordinate for the range, 
followed by typing a period, and finally by specifying the ending coordinate. 
Entering of coordinates can be accomplished by simply typing them in or by 
pointing to them with cursor. A range may not cross the sheet diagonally. A 
complete source and target range specification will appear on the edit line in 
the following pattern: 

beginning source entry position coordinate . . . ending source entry position 
coordinate: first target entry position coordinate . . . ending entry position 
coordinate 

If the beginning and ending coordinates in your source range are identical, 
you will copy one entry only. If they are different but fall in the same column, 
you will copy that section of that column. If they are different and fall in a 
row, you will copy that section of that row. 

The coordinat a you put in the target range tell VisiCalc the starting position 
for each copy to be made with the replicate command. If you want one copy of 
an entry position, a row, or a column, your target range should contain one 
coordinate (F9, for example). If you specify two different coordinates for your 
target range (F9 . . . F15, for example), you will get multiple copies of your 
source. 

To copy from one entry position to another, give one coordinate as the source 
range and one as the target range. 

Example 

1 . Type >A1® This places the cursor over the entry posi- 

tion you want to copy. 
If A1 is blank, type 100® 

2 Type /R prompt line: REPLICATE: 

SOURCE RANGE 
OR RETURN 
edit line: Al 

By starting the command with the cursor on 
A1, VisiCalc automatically entered A1 to 
begin the source range. 

3 Press® prompt line: REPLICATE: 

TARGET RANGE 
edit line: Al . . . Al: 

You have told VisiCalc to begin copying the 
contents from entry position A1 and to end 
with A1. A1 is the "source range" consisting 
of one entry position. 

4 Type D1 prompt line: REPLICATE: 

TARGET RANGE 
edit line: Al . . . Al : 

Dl 
This identifies entry position D1 as the start 
of the "target range," that is, the entry posi- 
tion to which the contents of A1 will be 
copied. 



140 



VisiCalc The REPLICATE Command 



5. Press® The replication is completed. The value 100 

is now in entry position D1 as well as A1 , the 
highlight is still at A1, and the control panel 
has been cleared for a new command. 

To create a column by making several copies of one entry, give one coordinate 
as the source range and two coordinates within a single row as the target 
range. 

Example 

Repeat steps 1 through 4 in the example above. Change step 5 to: 

5. Type .D100® The contents of entry position A1 will now 

appear in entry positions D2, D3, D4, 
through D100, as well as in D1. 

This procedure is especially useful for setting up display formats (see the 
FORMAT Command) before entering a large group of numbers. Assume, for 
instance, that a column will contain sales figures and therefore should always 
display numbers rounded to two decimal places. Place the cursor on a blank 
entry position and type /F$ (see the FORMAT Command) to attach the "dollars 
and cents" format to the position. Then replicate that entry position into the 
positions in the column that you want to have the dollars and cents format, 
using the procedure in the example above. The entry positions will not change 
in appearance if there are no values in them at this point. However, when you 
begin entering numbers into them, they will all be displayed with two decimal 
places. 

To copy a column from one position on the stieet to another, give the top and 
bottom entry position coordinates of the column as the source range. For 
instance, A1 . . . A32. For the target range, give only the coordinate of the top 
entry position of the new column. VisiCalc will fill in the rest. 

Example 

To set up your sheet for this example, enter the numbers 1 through 10 in posi- 
tions A1 through A10. You need not clear the sheet because VisiCalc will write 
over any old entries. (See the VALUE ENTRY Command.) 

I.Type/R prompt line: REPLICATE: 

SOURCE RANGE 
OR RETURN 
edit line: current cursor 

position coordinate. 
VisiCalc will put the coordinate of the entry 
position to which the cursor is pointing on 
the edit line. If this is not the coordinate you 
want to begin your source range, press 
the edit line. 

2. Press BACK S To erase first coordinate (this is an illustra- 

tion for this example and is not necessary 
when the coordinate is the one you want to 
begin the source range). 

3. Type A1 edit line: Al 

4. Type . edit line: Al . . . 

5. TypeAlO edit line: Al . . . AID 

141 



The REPLICATE Command 



Command Reference 



6. Press® prompt line: REPLICATE: 

TARGET RANGE 
edit line: Al . . . AID: 

7. Type 04 edit line: Al . . . AID: 

C^ 

8. Press ® The contents from your source range (A1 to 

A10) are now in your target (C4 to C13). 
Note that you did not need to type the end- 
ing coordinate of the target range. The 
cursor has been returned to the position it 
occupied before you typed /R. 

To make several copies of a column, enter the top and bottom coordinates of 
the column as the source range and the beginning and ending coordinates of a 
row as the target range. Each copy of the source column will "begin" in the 
target row. 

Example 

Do the example above again, only this time change steps 7 and 8 to: 

7. TypeD1.K1 edit line: Al . . . AID: 

Dl . . . Kl 
In the target range, D1 will be the top of the 
first new column, E1 the top of the second 
new column, and so on ending with K1 as 
the top of the last new column. The target 
range must be adjacent coordinates in one 
row or VisiCalc will only copy the column 
once and stop. 

8. Type ® The results will look like this: 




142 



VisiCalc 



The REPLICATE Command 



You may scroll your window over to L1 to see all of the effects of these few 
keystrokes on your sheet. 

To copy a row from one position to anottier, specify the beginning and ending 
coordinates in that row as your source range (A1 . . . C1). Then give the begin- 
ning coordinate only for the row in which you want the copy to appear (A5). 
VisiCalc will automatically interpret this target coordinate as the first entry posi- 
tion in a row and will fill in the correct ending position. 

Example 

To set up for this example, clear the screen with /CY and enter the numbers 1 
through 5 across the top row on your sheet (positions A1, B1, C1, D1, E1): 

1. Type >A1® 

2. Type/R.C1® edit line: Al . . .CI: 

3. TypeAS 

4. Press® The result should look like this: 




To see what happens if you give two coordinates for the target range (A5 
A10, for example), begin again at step 1 . At step 3, type A5.A10. You should see 
results like those in the photo below. 



143 



The REPLICATE Command 



Command Reference 




Replicating Value References 

When you replicate a formula that contains entry position coordinates (value 
references), you must tell VisiCalc whether or not to copy each value reference 
exactly as it appears in the source range or to change that value reference as it 
is copied. The change will replace the original value reference with the one that 
falls in the position that is relative to the location of the copied formula. There- 
fore, the replicated value reference will be to the replicated formula as the 
original value reference is to the original formula. The following examples will 
illustrate this relationship: 




144 



VisiCalc 



The REPLICATE Command 



You can see from the entry contents line in the photo above that the formula in 
position D3 contains value references to positions B3 and CI . B3 is in the same 
row as the highlighted formula and two columns to the left. C1 is two rows up 
one column over from D3. Look at the photo below. 




The formula in D3 has been replicated into position D4, but it has also been 
changed. The formula in D4 is now B4 + C1. The value reference 84 is in the 
same row and two columns left of the new formula in D4 (in the same relative 
position). The value reference C1 is exactly the same in the formula at D3 and 
the formula at D4. In other words, it has not been changed to maintain the 
same position relative to the placement of the formula. 

When a source range that is being replicated contains value references, Visi- 
Calc places each value reference on the edit line with a highlight on it. The 
prompt line instructs you to type R if the value reference is to be relative, or N if 
it is not to be changed in the new formula. After this procedure has been com- 
pleted for each value reference, VisiCalc will finish the replication. 



145 



The REPLICATE Command 



Command Reference 



Example 

1. Type/CY 

2. Set up your sheet as in 
this photo: 



To clear the sheet. 




3. Type /R® 



4. Press -». 



5. Press ^■m^-m-® 



prompt line: 

edit line: 
prompt line: 

edit line: 
prompt line: 



REPLICATE: 
TARGET RANGE 
AS . . . AE 

REPLICATE: 
TARGET RANGE 
AE . . .AE: 
A3 . . . 



REPLICATE: 
NO=NO CHANGE, 
R=RELATI VE 
edit line: AE: A3 . . . 

A5: +A1 
The small rectangle highlights the value 
reference A1 in the formula being repli- 
cated. Replication actually takes place one 
entry position at a time. The edit line indi- 
cates that the first operation is copying from 
A2 into A3. VisiCalc wants to know whether 
you want the copies made on a relative or 
no change basis. 



146 



VisiCalc 



The REPLICATE Command 



6. Type N 



Your sheet will look like this: 




Move the cursor down the column. Notice that each copy of the formula con- 
tains the value reference A1 just as it was in the source range. This is the result 
of choosing NO CHANGE instead of RELATIVE. 

Let's make a direct comparison. Repeat steps 1 through 5 in the example 
above. Then, at step 6, type R instead of N. Your screen should look like this 
when you have completed the example. 




Move the cursor over A3, A4, and A5 again and check the formulas as shown 
on the entry contents line. The value reference in each entry position has been 



147 



The REPLICATE Command Command Reference 



changed to cite previous position as its source (a relative description), instead 
of "the value reference which occurred in the source formula" (A2). 

It is possible to replicate a formula into a position in which proper relative value 
references cannot be assigned. Turn back to the two screen photos at the be- 
ginning of this section ("Replicating Value References"). If, for example, you 
copy the formula at D3 into position A3, then the relative position of the value 
reference B3 will be located off the sheet to the left! The way in which VisiCalc 
evaluates such a value reference is undetermined. 

You can find more examples of the use of the replicate feature in Part II, Lesson 
Three, of this manual. Also, you must be careful not to introduce forward or 
circular references or incorrect calculation order into your sheet when you 
replicate formulas. These topics are thoroughly discussed in Part II, Lesson 
Three in the sections entitled "The Order of Recalculation" and "Forward and 
Circular References," and also in Part III, the VALUE ENTRY Command. 



148 



The STORAGE Command 



[storage: ~L 



/S 



I File to Load 



Enter file name by 
typing or scrolling 
directory 

® 

Loads specified file (in 
the 'Sheet format") or 
displays error message 



I File to Delete | 



Type file name or scroll 
directory. 



Delete: Y to confirm 



Removes file from 
diskette: iny other kty 
aborts command. 



File for Saving 



Quit: Y to confirm 



Leaves the VIsiCalc 
program; contents of 
memory erased: any other 
key aborta command. 



INIT DISK: hit RETURN 
(ERASES DISK) 



Enter tile name by typing 
or scrolling directory 

® 

Write file onto diskette In 
"sheet format" under 
specified file name or 
displays error message 



Displays disk drive 
specifications on edit line; 
Insert unused diskette Into 
drive. 

® 

Erases diskette 
completely and prepares 
diskette to receive files. 



Data: Save Load 



File for Saving 



File to Load 



Type file name or scroll directory. 



Type name of "Data 
Interchange Format" file or 
scroll directory 

® 



Data save: Lower righr] [Data load: R, C or RETURN] 



Enter coordinate of lower right 
hand corner of area to be save 

® 



|DataSave:R,CbrRETURN| 

— I p — I 



Ror® 

Loads file by rows 
beginning at cursor. 



Loads file by columns 
beginning at cursor. 



R or® ' 

Writes file onto 
diskette by rows 
beginning at position 
held by cursor when 
storage command 
initiated uses "Data 
interchange Format" 
with specified file 
name. 



Writes file onto 
diskette by columns 
beginning at position 
held by cursor when 
storage command 
initiated uses "Data 
interchange Format" 
with specified file 
name. 



The storage command lets you save copies of your current VisiCalc sheet on 
diskette, load saved sheets back into the computer, initialize new diskettes for 
use with VisiCalc, and gives you a way to quit VisiCalc. 

File Names 

Any electronic sheet that has been saved on diskette is a file. You must 
assign each file a name unique to the diskette it occupies. When you save 
any file to diskette, the file name and the address of where the file is located 



149 



The STORAGE Command Command Reference 

on the diskette are saved in that diskette's directory. If you were to use a file 
name that you had already used, the more recent file would be written over 
the older file, erasing it. 

A valid file name can be no longer than eight characters in length, the first of 
which must be a letter. The rest of the name can include numbers. Thus, 
FILETWO and FILE2 areboth valid. File names cannot include punctuation, 
the space character or any control or other special characters. FILE TWO and 
FILE/TWO are invalid and, if entered, will cause an error message. 

File Name Prefixes 

Besides the file name proper, VisiCalc also recognizes prefixes and suffixes. 
These are not included in the eight characters allowed for the file name. Pre- 
fixes are used to identify a device to which a file can be written or from which 
it can be read. VisiCalc allows four prefixes: Dn: to identify a particular disk 
drive, C: for cassette files, Rn: for RS-232 devices, and P: for printers. 

The Dn: prefix is necessary only if you use two or more disk drives. If, after load- 
ing VisiCalc from drive 1, you wish to use another drive you must tell VisiCalc 
with the appropriate prefix by typing D, the drive's code number (n) followed by 
a colon and then the file name. Thus, for a file with the file name FILE2 in drive 
3, you would type D3:FILE2 

Once a drive has been prefixed, it becomes the "default" drive. That is, Visi- 
Calc automatically looks to that drive whenever any drive command is given. 
To return the default condition to drive 1, you must prefix a file name with D1: 
though nothing keeps you from making drive 2 or drive 4 your next default 
drive. 

The C: prefix is for saving and loading sheet files from cassette. Cassettes do 
not recognize file names as such! So, simply typing /SS C: ® will elicit two 
beeps from the ATARI, after which you simultaneously push the PLAY and 
RECORD buttons of your ATARI 410 to save the particular sheet. Likewise, 
after typing /SL C: ® you will hear one beep signaling you to push the PLAY 
button to load a sheet into the computer. See your ATARI 410 manual for more 
details. 

Use the Rn: prefix whenever you want to load a file from or save a file to any 
RS-232 dsvice. The argument for R (n) is the port number. The colon may be 
followed with a valid baud rate such as 300 or 9600. 

The P: prefix allows you to save your screen's formulas and formats as a report 
after typing /SS. By printing out your sheet with the /P command (giving a 
printout of data only) and then printing it out with /SS P: to get hard copy of the 
formulas, you will have a complete printed record of your sheet. Note: you can 
begin this command with the cursor anywhere on the screen. The same in- 
formation will be printed out in the same order. 

File Name Suffixes 

VisiCalc automatically adds a suffix on to any file name when you save its file. 
This suffix allows VisiCalc to distinguish among the different types of files that it 
and other programs generate. 

Most common to VisiCalc is the .VC suffix, indicating that the file is a VisiCalc 
electronic sheet. VisiCalc will add a .PRF suffix to any file that is saved as a 
print format file. To generate a print format file, type /PF and give the file name. 



150 



VisiCalc The STORAGE Command 



Press ® and give the LOWER RIGHT coordinate. Press ® again, and VisiCalc 
will save your file with a .PRF suffix. PRF files are text files composed of ASCII 
strings. As such they are accessible by other programs. 

Finally, if a file has been generated under the Data Interchange Format, a .DIF 
suffix will be appended. Neither the prefix nor the suffix count against the eight 
characters allowed for valid file name. 

Scrolling and Wild Cards 

To allow you to find and load or save your files more quickly, VisiCalc allows 
you to scroll through the file names on the diskette. To scroll the file names, 
type /SL then press the |. The drive will whir and then display the first file name 
it finds in the directory on the edit line. If that isn't the file you want, press ^ 
again. You can repeat this procedure until you have scrolled through every 
file name on the disk. To select a file for loading, simply press ® when the name 
of the file you want appears. 

You can also use scrolling to modify a file name already in the directory— a 
handy technique for updating. For example, if you had loaded and modified a 
file called SALES3 and wanted the update version to be called SALES4, you 
would type /SS |. Continue to press the | until the name SALES3.VC appears 
on the edit line. Then erase the 3 by using BACK S and replace it with 4. Be- 
cause VisiCalc will reappend the .VC suffix, just press ® to save the current 
sheet as SALES4. 

VisiCalc allows you to use * as a "wildcard." That is, you can substitute * for 
any file name or any part of a file name, provided that you specify the file type 
by its suffix (.VC, .PRF, or .DIF). Thus, you could type SALES*.VC and repeat 
^ as many times as necessary to see all file names in the SALES series and only 
those file names. If you wanted to find which DIF files the diskette contained, 
you could type /SL *.DIF and then use the ^ to see only the DIF file names. 
Note: /SL, /SS, and /SD can all be used to scroll up wild card file names. 

Loading a File from Diskette 

/SL loads a sheet back into the computer's memory if the sheet was saved 
with the /SS command (discussed below). 

When the file has loaded, the sheet will appear in the window exactly as it was 
when you gave the /SS command to save it. VisiCalc will not clear the sheet 
that is in use when the /SL command is given, but will load the sheet over it. 
Wherever an entry position has contents on both the current and the loaded 
sheet, the entry position contents of the just-loaded sheet will replace the 
previous contents. Blank entry positions in the loaded sheet will not erase the 
contents of corresponding entry positions in the old sheet. This characteristic, 
called "overlay" gives you the ability to combine sheets by loading previously 
saved sheets over each other. 

If you want to work with only the contents of the sheet you are loading from 
the diskette, be sure to clear the current sheet from the screen by typing /CY 
(see the CLEAR Command). 

Insert the diskette containing the file to be loaded into the current default drive 
(usually drive 1) and follow the steps below. If your data diskette is in any other 
drive than the default drive, you must tell VisiCalc the drive number by prefixing 
the filename with the Drive Code Number (such as D2: for drive 2), when you 
are asked for the filename. 



151 



The STORAGE Command 



Command Reference 



1. Type /S prompt line: 

2. Type L prompt line: 

3. Type the file name used edit line: 
when the file was saved 

with /SS ® 

Or press ^ edit line: 



STORAGE: 

L S D I a # 

Fl LE TO LOAD 

file name 



First file name on 
disk will appear. 
Each time you press ^, VisiCalc will examine 
the directory and place the next qualifying 
file name it finds on the edit line. 
Continue pressing | to "scroll" through the 
directory until the name of the file you wish 
to load appears on the edit line. 

4. Press® VisiCalc will load the file with the name that 

was on the edit line. While the file is loading, 
characters will flash at the left side of the 
edit line. When loading is finished, the sheet 
will appear in the window, looking just like 
it did when you saved it. 

The directory scrolling described in step 3, above, both puts the existing file 
names on the edit line and allows you to edit these names. When a file name is 
on the edit line, you may change the name by backing up the small rectangle 
with BACK S and then typing the characters you wish. This feature might be 
useful when, for example, you have forgotten a file name. As you scroll the 
directory, you may find a file name that causes you to remember the name of the 
file you want to load. Say the name on the edit line is PRO J FEB , VC and you 
remember that the file you want is called PROJAUG.VC. Press the BACK S key 
until FEB . VC has been deleted from the edit line, and type AUG.VC, then 
press ® and PROJAUG.VC will be loaded (if it is on the diskette currently in one 
of the default drive). If you name a file that is not on the default drive, the mes- 
sage ERROR: NOT FOUND will display on the screen. 

If you should press | when the last file name is on the edit line, you will exit the 
load mode (without an error message). To keep searching for the file you want 
using a single drive, simply remove the diskette you've just checked, insert the 
next, and type /SL (and, optionally, ^) If you have multiple drives with disks in 
them, you can type /SL then, before entering either the file name or pressing 
I, enter the drive code number. 

Saving Files on Diskette 

/SS is the storage save command and will save an entire electronic sheet on a 
diskette in the VisiCalc format, so that it can be loaded back into the com- 
puter's memory with the /SL command. Before you can use a diskette with the 
storage save command, the diskette must be initialized (use VisiCalc's /SI 
command, explained below in the section on /SI). All formulas, labels, titles 
settings, explicit and global formats and window settings, as well as the posi- 
tion of the cursor, will be saved and in force when the sheet is loaded. 

Each sheet is saved, or recorded, on a diskette under a name you specify, 
called the file name. The file name is recorded in the diskette's "directory." 
Each file name is unique to each diskette, so if you save a sheet with a file name 



152 



VisiCalc The STORAGE Command 



already in the directory, the earlier file with will be replaced by the current file 
saved with the same name. A diskette has enough room to hold many elec- 
tronic sheets. 

Should the diskette become full while VisiCalc is recording a sheet into a file, a 
message that the diskette is full will appear on the edit line. VisiCalc will have 
saved all that it could under the file name you gave, but not the entire sheet. If 
this happens, delete the incomplete file from the full diskette (see /SD below) 
and save the sheet on another, less full, initialized diskette. 

The file name can be up to 8 characters long (no spaces or punctuation marks). 
The first character of the name must be a letter. You may compose the rest of 
the name with letters, or numbers, or both. 

VisiCalc will automatically append the characters .VC to every file name saved 
with the /SS command or you can add a suffix yourself. 

This suffix will allow you to differentiate files you saved in the VisiCalc format 
from any other files you may have on your diskette. 

When you load VisiCalc to start a session, the computer will automatically 
assume that the diskette on which you want to save a file is located in drive 1. 
Drive 1 is said to be the default drive. If you want to save the file on a diskette in 
drive 2, you must preface the file name you enter with the characters D2: 

For example, D2:MYFILE would save the file named MYFILE on the diskette 
in drive 2. The D2: is the drive specification. Once you've given a drive specifi- 
cation, that drive number becomes the default drive and VisiCalc will auto- 
matically look to it whenever you issue a drive-oriented command. This state 
of affairs stays in effect until you specify a different drive. 

To save a file, do the steps listed below. The cursor may be anywhere on the 
sheet when the /SS command is started. 

1.Type/S prompt line: STORAGE: 

L S D I a # 

2. Type S prompt line: FILE FOR 

SAVI NG 

3. If necessary, type the drive number prefix (including the colon). Then 
type in the file name. If you choose to use the ^ to find a file name, you 
have two alternatives. First, you can keep pressing | until the right file 
name appears on the edit line. Then, just press ® to save the current 
sheet to that name. Second, you can use ^ to find a file name that you 
want to update (MYFILE1, MYFILE2, MYFILE3, etc.). To update or 
change a name, press BACK S to back up the small square and erase 
the version identifier. Then, type in the new characters. Note: you do not 
have to retype .VC; VisiCalc appends it automatically. In either case, you 
can press ^ and VisiCalc will place the first file name it finds in the direc- 
tory on the edit line. Each time ^ is pressed, the next file name in the 
directly will appear, as VisiCalc scrolls through the directory. Note: you 
can scroll all the way through the directory without saving to any of the 
names. When you have the desired name go on to step 4. 

4. Press® Thedrive will whir as the electronic sheet is 

saved on the diskette under the file name 
you specified in step 3. 



153 



The STORAGE Command Command Reference 



The option in step 3 of letting VisiCalc put file names from the directory on the 
edit line can be very useful. It allows you to examine the file names in the 
diskette directory, so that you do not unintentionally use an existing name for 
the file you are about to save. 

Deleting Files from a Diskette 

/SD will delete from the diskette the file whose name appears on the edit line. 

1.Type/SD prompt line: FILE TO 

DELETE 

2. Type the file name, preceded by the drive number, if necessary. Or you 
may press ^ and VisiCalc will place the first name it finds in the diskette's 
directory on the edit line. Each time you press ^, VisiCalc will examine the 
directory and place the next file name it finds on the edit line. Continue 
pressing ^ to "scroll" through the directory until the name of the file you 
wish to delete appears on the edit line. 

3. Press® prompt line: DELETE: 

Y TO CONFIRM 
Any other key will cancel the command. 

4. Type Y VisiCalc will delete the file from the diskette. 

Initializing Storage Diskettes 

/SL initializes a new, blank diskette or a previously used diskette. During the 
initialization process, VisiCalc scans the diskette and writes a series of position 
identifiers on it. Any contents on a used diskette will be erased during the 
process. A diskette must be initialized with this command before it can be used 
to save VisiCalc sheets. 

When you load VisiCalc to start a session, the computer will automatically 
assume that the diskette to be initialized is located in drive 1. Drive 1 is said to 
be the default drive. If you want to initialize the diskette in a drive other than 1, 
you must tell VisiCalc the disk drive number. The drive number is called the 
drive specification. Each time you specify a drive number other than the de- 
fault, the drive specified becomes the default drive, and VisiCalc will then as- 
sume it is to use the diskette located in that drive for all file operations. 

The command to initialize a diskette may be given at any time when the control 
panel is clear. The electronic sheet currently in the computer's memory will not 
be affected by the command. The instructions below assume the default drive 
is1. 

1. Insert a blank or other diskette (the contents of which you don't care 
about) into drive 1. 

2. Type /SI prompt line: I NIT DISK: 

HIT RETURN 
(ERASES DISK) 
edit line: Dl: 

The second character, the 1, is the drive 
specification. 

3. Press ® The diskette in drive 1 will be initialized. 

If the diskette to be initialized is in another drive, press BACK S to erase the 1: 
(leaving the D) from the edit line. Then type the correct drive number followed 
by a : 



154 



VisiCalc The STORAGE Command 

Example: D2: 

The diskette in the drive specified will be initialized leaving the current VisiCalc 
sheet unchanged. The drive you specified is now the default drive. 

Quitting VisiCalc 

/SQ is VisiCalc's "Quit" command. /SQ allows an easy exit to other programs, 
erasing the current electronic worksheet and always returning the default to 
drive 1 in the process. /SQ has the same effect as turning the power on. 

1.Type/SQ prompt line: au I T : Y TO 

CONF IRd 

2. Type Y The computer leaves the VisiCalc program. 

Any other key cancels the command. 

3. To begin VisiCalc again, place the VisiCalc program diskette in drive 1 
(make sure its power is ON) and turn the ATARI'S POWER switch ON. 

Saving Files in the Data Interchange Format 

Files saved with the command /S # S are recorded on the diskette in the Data 
Interchange Format (DIF). This format affords a way for other programs, such 
as those written in BASIC, to use the data that is on the sheet. The data that 
was saved in files with the /S#S command can be loaded back onto a Visi- 
Calc sheet with the /S # L (load a Data Interchange Format file) command. 

/S#S saves a rectangular area of the sheet, which you define, in a file in the 
Data Interchange Format. This command saves labels, blanks, and calculated 
values at full precision in the entry positions on the sheet. The formulas from 
which the values were derived are not saved (see the VALUE ENTRY Command 
for discussion of formulas and values). 

The DIF allows for two orientations of the data. You can specify to VisiCalc 
which orientation you want by pressing R or C at the appropriate time. For 
data that you are going to use only with VisiCalc, always save the data with the 
R specification. For a complete description of the use of the Data Interchange 
Format, see the "Programmer's Guide to the Data Interchange Format" in- 
serted in the binder holding this manual. To use the command: 

1. Position the cursor at the entry position that is in the upper left hand 
corner of the rectangular area you want to save. 

2. Type/S# prompt line: DATA: SAVE 

LOAD 

3. Types prompt line: FILE FOR 

SAVI NG 

4. Type the file name. The file name must follow the same rules 

outlined in the discussion of /SS, above. 
VisiCalc will automatically append the 
suffix .DIF to files saved with this command. 

Or press ^ to look at the file names already in the directory. Continue pressing 
^ until the desired file name appears on the edit line. You may change the 
name on the edit line by pressing BACK S and typing characters for the new 
name. 

5. Press® prompt line; DATA SAVE: 

LOWER RIGHT 



155 



The STORAGE Command Command Reference 



6. Type or point with the cursor to the entry position in the lower right corner 
of the rectangular area to be saved. You may save as little as one column 
or one row if you wish. 

7. Press® prompt line: DATA SAVE: 

R, C OR 
RETURN 

8. Press® The prompt line is blanked. The rectangular 

area of the sheet defined by the upper left 
and lower right cursor positions will be 
saved. 

/S#L will load back the data you saved with the /S#S command into any 
position on the sheet you indicate. 

1. Position the cursor on the entry position in the upper left corner of the 
area to be filled by the data being loaded. 

2. Type/S#L prompt line: FILE TO LOAD 

3. Type the desired The file named should be one saved with 
file name the Data Interchange Format. 

Or press ^ to scroll through the directory as described in the /SL command 
discussion, above, until the desired file name appears. 

4. Press® prompt line: DATA LOAD: 

R, C OR 
RETURN 

5. Press® or R The selected file is read into the computer's 

memory and placed on the VisiCalc sheet 
starting at the current cursor position. 

If you would like the data loaded transposed— what would have been loaded 
across the rows is loaded down the columns, and vice versa— press C at step 5. 



156 



The TITLE Command 



/T 



Titles: H 



N 



H - 

Fixes all rows 
(horizontal) in 
window from 
cursor up. 



Fixes all columns 
(vertical) in 
window from 
cursor left. 



J 



B 

Fixes rows and 
columns both in 
window. 



Negates all title 
fixing. 



Most VisiCalc sheets are considerably larger than the screen display window. 
To see all the entries on the sheet, you must move the window away from the 
top and left edges, so that any row and column titles you may have entered 
move out of sight. 

The title commands allow you to fix titles in place on the screen so that they re- 
main in view as you scroll the window about the sheet. Begin the command 
from a cleared control panel by typing /T. The prompt line on the control panel 
will display T I TLES: H V B N. The possible keystrokes are: 

H To fix horizontal titles. 

V To fix vertical titles. 

B To fix both horizontal and vertical titles. 

N No titles (to "unfix" titles). 

Which columns and/or rows are to be fixed is determined by the position of the 
cursor when you initiate the command. All rows at and above the highlight are 
fixed by H. All columns at and to the left of the highlight are fixed by V. B fixes 
all rows at and above and columns at and to the left of the cursor. 

VisiCalc terminates the command automatically and clears the control panel 
immediately. There is no change on the sheet, but the effect of title fixing be- 
comes apparent when you begin scrolling the window away from the top and 
left borders. 

You cannot use the arrow keys to move the cursor to an entry position that is 
within a fixed title area. The cursor will flash when it bumps into the fixed titles. 
Use > to jump the title barrier (see the GO TO Command) and the coordinates 
of an entry position within the fixed title area; for example, >A1®. 

In certain circumstances, VisiCalc will automatically unfix titles you have set. It 
does this when, in order to follow your commands, the titles must not be set. 
For instance, if you scrolled the window so that column B was at the left edge, 
then fixed vertical titles and then at some point gave the command to go to a 
coordinate in column A (see the GO TO Command), VisiCalc would unfix all 
titles. In order to obey the command to go to column A, the window had to be 
scrolled to the left to bring A into view. If you have fixed vertical titles, and then 
you expand the column width (see the GLOBAL Command) so that only one 
column can be displayed on the screen at one time, VisiCalc will automatically 
"unfix" the title settings. When you return to a narrower column width, you will 
have to refix the titles. 



157 



The VERSION Command 



/v 



® 1980 Software 
Arts, Inc. I.xx 



Displays copyright notice 
and version number on 
prompt line; serial number 
on edit line; clears 
automatically with next 
keystroke. 

To see the copyright notice and the version and serial numbers of your VisiCalc 
program, type /V when the control panel is clear. You may use this command 
anytime, without disturbing the contents of a sheet you may have loaded. As 
soon as you press any key, the notice will disappear from the control panel. 

Should you need to call or write with questions about VisiCalc, be sure to in- 
clude the version number that appears when you give the version command. 
The photograph illustrates how the notice appears on the screen. 




158 



The WINDOW Command 



/w 



Window: 



H 



U 



stops 
synchro- 
nized 
scrolling. 



H 

Splits 
window 
horizontally 
at cursor. 



Splits window 
vertically at 
cursor. I 



jumps cursor between windows. 



1 

Expands 
window 
containing 
cursor to fi 
screen. 



Initiates 
horizontal or 
vertical 
synchronized 
scrolling. 



Often you will find yourself wishing to compare rows or columns which are too 
far apart on the sheet to be displayed in a single window on your computer 
screen. The window command allows you to split your screen so that you can 
view the sheet through two windows simultaneously. Each window may be in- 
dependently scrolled around the entire sheet to let you see rows or columns 
which are widely separated on the sheet. You may also look at the same entry 
positions with each window having its own global column width and format 
(see the GLOBAL Command) modifying the display in each one. 

/WH (Window Horizontal) splits the window into two by placing a second 
column border (A,B,C,D . . .) between the row containing the highlighted entry 
position and the next row down. Each window may be moved individually to 
view the same or different parts of the sheet. 



Example 

1. Type/CY 

2. Type ONE| TWO^ 
THREEI FOURI 
FIVEI SIX| 
SEVENI EIGHT® 

3. Type >A10® 

4. Type JAN^ FEB| 
MAR^ APR| MAY| JUN| 
JUL| AUG® 



This clears the VisiCalc sheet. 



Your screen should look like this: 



159 



The WINDOW Command 



Command Reference 




3. Type /W 

4. Type H 



prompt line: U) I NDOU: 

H V 1 S U 

Your screen will change to: 




Each window will now view the sheet independently. The cursor can move 
around the sheet in the top window. Move it up and to the left until the ONE is 
highlighted in the top window. Press ; to move the cursor into the bottom win- 
dow. Pressing ; will always make the cursor jump to the last position it had in 
the other window. It will jump to the upper left entry position the first time it 
enters a window. 



160 



VisiCalc The WINDOW Command 



All VisiCalc commands will work in both windows and you can see the effects 
on the sheet through either window. The two exceptions are the /GC (Global 
Column) and /GF (Global Format) commands, which are set in one window at a 
time (see the GLOBAL Command). 

Remove the horizontal window by typing /W1 The window containing the 
cursor will then occupy the whole screen using the current format settings of 
that window. A horizontal window must be removed before a vertical window 
can be instated and vice versa. The size of each window is determined by the 
position of the cursor at the time the window command is used. 

/WV (Window Vertical) splits the window by adding a second row border (12 3 
4 5...) after the column containing the cursor. When the screen has been split 
vertically, the columns in the right window may be slightly narrower than those 
in the left window, to make room for the second row border. 

The vertical window behaves exactly like the horizontal window described 
above. Note that when you return to one window, the format settings of the 
window in which the cursor is located go into effect in the single window. The 
column width of the right window will also be in effect if the cursor is in that 
window when /W1 is typed. 

Example 

1. Type/CY 

2. Type 
JAN^ FEB^ 
MAR^ APR® 

3. Type >B1® 

4. Type 100^ 200^ 
300^ 400® 

5. Type /WV Your screen should resemble the photo 

below. 




161 



The WINDOW Command Command Reference 

The vertical window can be particularly useful when you wish to keep a column 
of information visible in one window while you scroll the other window around 
to compare columns in different places on the sheet. 

/W1 (One Window) displays the window containing the cursor in full screen 
position. All the global format settings in that window take effect in the one 
window. 

/WS (Windows Synchronized scrolling) synchronizes horizontal motion in 
horizontal windows or vertical motion in vertical windows so that moving the 
highlight in one window also moves the other. 

/WU (Window Unsynchronized) turns off synchronized scrolling. 

The last three window command options (/W1, /WS, and /WU) may only be 
used after a /WH or /WV is in effect. 



162 



The REPEATING LABEL Command 

/- 



Label: Repeating 



Type any characters. 

® 

Character sequence 
repeated across column 
width. 

Sometimes it is useful to draw lines or other borders across an entire column or 
across several columns. The repeating label command will repeat any 
sequence of characters you enter across the entire width of a column. If you 
change the column width (see the GLOBAL Command), the continuous 
sequence will be modified so that it still fills the column. When you replicate 
(see the REPLICATE Command) the entry containing the repeating label, you 
can form a line or other visual break across your sheet. 

Example 

1 . Position the cursor in the 
entry position to contain 
the repeating label. 

2. Type/— prompt line: LABEL: 

REPEATI NG 

3. Type — prompt line: LABEL: 



REPEATI NG 



edit line: 



163 



The REPEATING LABEL Command 



Command Reference 



4. Press 



5. Use the replicate command 
to copy the continuous label 
as far across the sheet as 
needed. 



VisiCalc will extend the sequence across 
the column. For example, with a general 
column width (9 characters) you see 

in the entry position. 




164 



PART IV. INDEX 



-INDEX OF SPECIAL CHARACTERS- 

(in ascending order by ASCII code) 

ESC Controls 137 

ESC Control! 137 

! 7, 41, 70-73, 79, 88, 104-105, 121-122 

> 7, 17, 78, 98, 101, 118 

"7,22,99,136 

# store DIF 26 

# freeze value 21 , 79, 1 02-1 03 
$ 37, 58 

& setup RS-232 136 

(21,56,80, 102 

)56, 80, 102 

; 41-43, 63 

@ 7, 21, 56-57, 102, 106-108 

/ divide 24, 80, 102 

/ command mode 10, 24, 37, 109 

" multiply20-21,24, 80, 101 

* graphing 7, 58, 83-87, 117 

* wild card 151 

+ addition 21, 23-24, 80, 102 

+ send line feed 136 

,82 

- minus sign 21, 24, 80, 102 

- turn off RS-232 136 

- repeating label 51, 163-164 
/- 51, 163-164 

:26, 60, 150 

" exponentiation 7, 78, 80, 102 

®11, 15 



165 



Index 



@ symbol 21, 56-57, 106-108 
aborting a command: see command 
@ABS (absolute value) function 83, 106 
@ ACQS 107 

addition 21, 23-24,80, 102 
alphanumeric characters 27, 99 
ampersand (&) 37, 58, 136 
arguments in functions 80-87, 101, 

106-107 
arithmetic operators 80, 101, 104 
arrow keys, right, left, up, and down 7, 

16-17, 27, 94, 99-100, 101, 104 
ASCII devices, use with print 135 
@ASIN107 
asterisk (*) 

graphing 7, 58, 83-87 

multiply sign 20-21, 24, 80 

wild card symbol 151 
@ATAN 107 
ATARI 

410 6, 150 

800 6,10,16 

810 6,28,135 

820 6,135-137 

825 6,135-137 

850 6,135 
at sign (@) 7, 21, 56-57, 102, 106-108 
automatic recalculation 70-71, 

87-88, 122 
automatic repeat 17, 94 
©AVERAGE function 57, 81-82, 89 

-B- 

/B (see BLANK Command) 
backing out of a command 19 
backup copies of diskettes 28 
BACK S key 17, 18-21, 37, 63, 93, 95, 

102,104 
BASIC, returning to 155-156 
BLANK command 22, 24, 27, 109 
blank entry 22, 24, 27 
BREAK key 16, 20, 37, 93, 95, 102, 104 
budget example 49-70 
built-in functions 80-87, 106-108 

-c- 

/C (see CLEAR Command) 

C:150 

calculated value 101-103 



calculating interest 65-66 
calculation indicator 93, 119 
calculations 21, 87-88, 93, 101-102, 

105-106, 119-122 
CAPS LOWR key 7 
caretC)7, 78, 80 
cassettes 1 50 
changing file names 151 
character string 99 
circular reference 72-73, 74, 105 
CLEAR command 15, 27, 77, 110 
clearing 

the control panel 19, 93 

the sheet 15, 27, 45, 77, 110, 151 
colon (:) 26, 60, 150 
columns 5, 17, 93, 105, 111-113 
118-119 

adjusting width 5, 39-40, 41, 118 

deleting 111-113 

inserting 125-126 

moving 127, 130-134 

replicating 53-55, 60 
comma (,) 82 
command 

aborting 20, 27, 93 

structure chart 93, 96-97 
control panel 15, 93 
coordinate 15, 94 

in replication 33-35 

as a value reference 79 
copying diskettes 28 
correcting typing mistakes 18-20, 21, 

95,99,102 
@COS107 

@COUNT function 81-82, 89, 106 
CTRL key 7, 16-17 
cursor 16, 17-18, 23-25, 94, 127 

-moving keys 7, 16-17, 94, 104 

pointing with the 23-24, 104 

-D- 

/D (see DELETE Command) 

D:150 

Data Interchange Format 151, 155-156 

delete 

columns 64, 111-113 

entry contents: see BLANK 
command 

files from diskette 26, 154 

rows 64, 111-113 
DELETE command 64, 111-113 



166 



VisiCalc 



Index 



delimiter 

.50 

,82 
directory, diskette 26, 31-32, 150-156 

scrolling 31-32, 63, 68, 150-156 
disk drive 6, 8-9, 25-27, 55 

default 150, 154 

specification 150, 154 
diskette 

backing up 28 

care and use 8, 10, 28, 55 

initializing 10-11, 25, 26 

saving files on 25-27, 149-156 
division 24 
dollars and cents format 37, 58, 

77, 117 
down-pointing arrow key 7, 17 
dynamic memory allocation 45 

-E- 

edit line 17-18, 21, 93 
electronic sheet 3-5, 15, 16-17, 
18-20,25,37,44-45,94 

clearing 15, 27, 110 

combining sheets 151 

memory requirements 44-45 

printing 135-138 

reconfiguring 44-45 

saving on diskette 25-27, 149-156 

shrinking 45 
entry contents line 21, 93, 99-100, 

104, 114 
entry position 5, 15, 45, 94, 114- 
117, 119 

adjusting width 114 

formatting (see format, local) 
equipment requirements 6 
erasing files: see delete, files from 

diskette 
ERROR 63, 101, 105, 113 
@ERROR function 62-63, 107, 113 
errors 

arithmetic 101, 105 

erasing 17, 18-21, 31, 93, 95 
ESCAPE Control S 137 
ESCAPE Control! 137 
exclamation point key (!) 70-73, 79, 

88, 104-105, 121-122 
@EXP (exponential) function 86, 107 
exponentiation 7, 78, 80 
explicit formats: see formats 



expressions 79-80, 106 
extentions on file names 

.DIP 151. 155-156 

.PRP150 

.VC 26, 31, 63, 150, 153 

-F- 

/F (see FORMAT Command) 
files 26, 149-156 

Data Interchange Format 151, 
155-156 

deleting 154 

directory of 26, 31-32, 150-156 

prefixes 26 

printing to 137-138 

suffixes 26, 31, 63 

VisiCalc file format 1 50-1 51 , 1 53 
file name 26, 27, 63, 68, 149-151 
fixing titles: see titles 
FORMAT command 5, 36-37, 58, 77, 

114-117 
formats, file: see files 
formatting a single entry: see format, 

local 
formatting the screen display: see 

global commands 
format 

default 77, 115 

dollars and cents 37, 58, 77-78, 117 

general 58, 77-78, 101, 115-116 

global: see global 

graph 58, 83-87, 117 

indicator 114 

integer 36-37, 58, 67, 77 

local (or explicit) 77, 114-117 

print format file 137-138 

replicating 59, 114 
formulas 20-21, 23-25, 45, 79-80, 
102-103,119 

position on the sheet 38, 68, 105 

printing 136 

replicating 32-35, 51-55, 103 
forward reference 72-73, 105 
functions 56-57, 80-87, 101, 106-108 

transcendental 83-87, 107 

-G- 

/G (see GLOBAL Command) 
general format 44, 58, 67, 77-78, 
115-116 



167 



Index 



GLOBAL command 36-37, 39-40, 
42-43, 44, 67, 77-78, 88, 
118-123 
global commands 
columns 39-40, 41, 42-43, 78, 

118-123 
formats 37, 42-43, 67, 77-78, 123 
general 44, 58, 67, 77 
integer 36-37, 58, 67, 77 
in separate windows 42-43 
manual or automatic recalculation 88 
order of recalculation 70-72, 119-122 
GO TO command 17-18, 98 
graph format 58, 83-87, 117 
graphing a function 83-87 
greater than character (>) 17-18, 78, 
98,101,118 

-H- 

hardcopy: see PRINT 
highlight: see cursor 

-I- 

/l (see INSERT Command) 
initializing diskettes 10-11, 25, 26, 

154-155 
INSERT command 63-65, 124-126 
inserting 

columns 64, 125-126 

rows 63-65, 124-125 
@INT (integer) function 83, 107 
integers 36-37, 58, 77, 83, 107, 
116-117 

rounding 37, 116 

■# 

-K- 

key 

automatic repeat 17, 94 

symbols 7 
keyboard models 7-8 

-L- 

/L (see LABEL ENTRY Command) 
LABEL ENTRY command 20-23, 

99-100 
labels 22-23, 37, 39-40, 45, 50-51, 
99, 103 
formatting 58, 99 
repeating 51, 163-164 



left justify 58, 116 
left-pointing arrow key 7, 16-17 
@LN function 85-86, 107 
loading 

a sheet from diskette 26, 31-32, 45, 
151-152 

VisiCalc8-10 
local formats: see formats 
@LOG10 107 
logarithm 107 

©LOOKUP (table lookup) function 
82-83, 89, 107-108 

-M- 

M (out of Memory) 45 

/M (see MOVE Command) 

manual recalculation 87-88, 122 

@MAX 57, 81, 84-85, 89, 106 

memory 8, 44-45, 93, 95 

memory indicator 45, 93, 95 

@MIN57, 81,85, 89, 106 

minus sign 21, 24 

MOVE command 66-67, 127-134 

moving 

columns 127, 130-134 

rows 66-67, 127-130 

the cursor 18-20, 24-25, 94, 104 

the window: see scrolling 
multiplication 20-21, 24, 80, 101 

-N- 

@NA (Not Available) function 

62-63,107 
naming diskette files: see file name 
noise 16, 17, 19 
@NPV (Net Present Value) function 

82, 89, 107 
numbers 
format 58, 77-78 
replicating: see replicating 
scientific notation 7, 78, 101, 

116, 118 
significant digits 37, 58, 78, 101, 
116,118 
number sign ( # ): see pound sign 

-o- 

operands 80 
operators 80 



168 



VisiCalc 



Index 



order of precedence 102 

order of recalculation 70-72, 105, 

119-122 
over-writing a sheet 153 

-P- 

/P (see PRINT Command) 
P: 150 

parentheses 56, 80, 102, 106 
period 21, 56, 102, 127 
@PI function 87, 107 
plus sign 21, 23-24 
pointing 94 

in formulas 23-24, 104 

with replicate 33-34, 139-148 
pound sign (#) 21, 26, 78, 102- 

104, 118 
precision 101 

precedence in formulas 102 
prefixes 

C: 150 

D: 150 

P:150 

R:150 
PRF 137-138, 150-151 
PRINT command 74, 135-138 
print file format 137-138, 150-151 
printers 6, 135-136 

saving to 150-151 
printing 135-138 
prompt line 10, 17-18, 21, 93 

-Q- 

quit VisiCalc 26, 155 
quotation mark (") 7, 21-22, 99 

-R- 

/R (see REPLICATE Command) 
R: 150 

RAM 6, 8, 44 

range 33-35, 49-50, 60, 106-108 
in functions 80 

with REPLICATE 33-35, 49-50, 60, 
139-148 
recalculation 5, 20-21, 24, 38-39, 
41-42, 70-72, 87-88, 105-106, 
119-122 
automatic 87-88, 122 
manual 87-88, 122 



problems with (circular or forward 
reference) 72-73, 105-106 
recalculation order indicator 71-72, 

93,105,119 
rectangular box: see cursor 
relative, when using REPLICATE 

34-35, 50, 51, 57, 145-148 
REPEATING LABEL command 51, 

163-164 
REPLICATE command 32-35, 44, 

49-50, 139-148 
replicating 
a column 53-55, 60, 139, 142 
a format specification 58 
a range of entries 33-35, 49-50, 

60, 65-66, 139-148 
a row 60, 143-144 
across a row 50-52, 60, 142 
down a column 53-55, 59, 60, 

141-142 
formulas 32-35, 51-55, 103, 

144-148 
labels 50-51, 139-148 
numbers 50-51 
RETURN key 7, 15 
reversing rows and columns 156 
right-justify 58, 99, 117 
right-pointing arrow key 7, 16-17 
ROM 8 

rounding 37, 116, 118 
rows 5, 17,60,93, 105, 111-113 
deleting 111-113 
inserting 124-125 
moving 66-67, 127-130 
RS-232 136 

-s- 

/S (see STORAGE Command) 
saving the electronic sheet on diskette 

25-27,55, 152-156 
scientific notation 7, 78, 101, 116, 118 
screen 
splitting: see splitting the window 
VisiCalc screen 15-20, 93-95 
screen window: see window 
scrolling 16-17, 94 
the directory 31-32, 63, 68, 

151-156 
the window 3, 16-17, 38, 41, 
69-70, 94 
semi-colon (;) 41-43, 63 



169 



Index 



serial printer 137-138 

"SETUP string 136 

setting up the computer 6 

sheet: see electronic sheet 

SHIFT key 7, 18 

shrinking the electronic sheet 45 

significant digits 37, 58, 101 

@SIN (sine) function 81, 87 

slash(/)10, 24, 37 

small rectangle 18, 22, 24, 26 

sounds 16, 17, 19 

source range 

in REPLICATE 33-35, 49-50, 60, 
139-148 

in MOVE 127 
splitting the window 41-42, 61. 69, 
159-161 

global command effects 42-43, 123 

horizontally 42, 69, 159-161 

vertically 41, 61, 69, 161-162 
@SQRT (square root) function 107 
STORAGE command 10-11, 25-28, 

31-32, 45, 68, 149-156 
storage diskette: see diskette 
subtraction 21, 24, 80, 102 
suffixes 

.DIP 151 

.PRF 150-151 

.VC26, 32, 150, 153 
@SUM 56-57, 80-81, 89, 106 
synchronizing split windows 69-70, 162 

-T- 

/T (see TITLE Command) 
(gTAN 107 
target range 

in MOVE 127 

in REPLICATE 33-35, 49-50, 60, 
139-148 
TITLE command 37-38, 44, 157 
titles 

in split window 60-61 , 157 

fixing in both directions 38, 55-56, 
69, 136, 157 

fixing horizontally 38, 157 

fixing vertically 38, 69 

unfixing 38, 61, 157 
transcendental functions 83-87, 107 



trigonometric functions 107 
transposing rows and columns 156 
typeahead 95 

-u- 

unfixing titles 38, 61, 157 
unsynchronizing split windows: see 

window 
upper/lower case 7, 20 
upward-pointing arrow key 7 

-V- 

/V (see VERSION Command) 
value 20-23, 101 

ERROR 63 
VALUE ENTRY command 101-108 
value reference 21, 79, 101-108, 
119-120, 125,127 

in REPLICATE 139-148 
VERSION command 15-16, 158 
version number 15, 158 
VisiCalc 

built-in functions 80-87, 106-108 

Comment Form 6 

equipment requirements 6 

screen 15-20, 93-95 

Users Group 6 

version 15, 158 
VC26, 32, 150, 153 

-w- 

/W (see WINDOW Command) 
warranty 5-6 

window 3, 15, 16, 41-43, 60-61, 63, 
94, 114, 139-141 

single 42, 63, 69 

splitting horizontally 42, 69, 159-161 

splitting vertically 41, 61, 69, 
161-162 

synchronizing 69-70, 162 

titles in 157 

unsynchronizing 69-70, 162 
wild cards 151 

WINDOW command 41-43, 44, 159-162 
writing on the electronic sheet 18-22 



170 



*1.50 



Software Arts Technical Note 


SATN-18 




PROGRAMMER'S GUIDE 


to 




DIP® 




A Data Interchange 


Format 



Software firts. Inc. 

4/81 VI .5 



© Copyright 1980 by Software Arts, Inc. All rights reserved. 

DIF® is a trademark of Software Arts, Inc. 

Apple® is a registered trademark of Apple Computer, Inc. 

Limited License to Copy 

This Guide is intended for the use of the original purchaser only. The 
original purchaser is hereby licensed to copy it for his own use, 
provided that this notice is reproduced on each such copy. Copying of 
this Guide in any form for purposes of resale, license or distribution 
is prohibited. 

No Warranty 

This Guide is being published to enhance the usefulness of DIF, the 
data interchange format used by the VisiCalc® program and other 
programs. NEITHER SOFTWARE ARTS, INC. NOR PERSONAL 
SOFTWARE INC. MAKES ANY WARRANTY, EXPRESS OR IMPLIED, 
WITH RESPECT TO THE QUALITY, ACCURACY OR FREEDOM FROM 
ERRORS OF THE DIF FORMAT OR OTHER CONTENTS OF THIS 
DOCUMENT, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED 
WARRANTIES OF MERCHANTABILITY OR OF FITNESS FOR A PAR- 
TICULAR PURPOSE. 

VisiCalc® a Trademark 

The term "VisiCalc" is a trademark of Personal Software Inc. which 
designates a software product published by Personal Software Inc. 
under an exclusive license from Software Arts, Inc. 



TABLE OF CONTENTS 

1. INTRODUCTION 1 

2. WHAT DIF DOES AND DOES NOT DO 1 

3. THE DATA FILE FORMAT 3 

THE HEADER 5 

Structure of a Header Item 5 

The Header Items 6 

THE DATA PART 7 

4. SAMPLE PROGRAMS 

CREATING A DIF FILE 9 

LISTING A DIF FILE 10 

5. APPENDICES 

QUOTED STRINGS IN BASIC 11 

CHARACTER SETS 12 

6. CLEARINGHOUSE 12 



1. INTRODUCTION 

It is often desirable to process the same data by more than one program. For 
example, a data management system may be used to record sales values. 
These values are then to be used as the basis for projections using the VisiCalc 
program. Finally the projections may be plotted by a third program. How can 
you get data from one program to another without requiring the user to type 
the data in anew each time? Each of the programs processing the data may be 
written by a different person, and may even run on different machines. 

In order to allow programs to "talk" to each other, we must agree upon a 
standard language. Software Arts, Inc., the creators of the VisiCalc program, 
have developed a data interchange format, DIF, that can be used as a com- 
mon languagefordata. This is the format in which VisiCalc saves data with the 
/S# commands. 

We are writing this document in order to explain to programmers how they 
can read and write data files using this format. The more programs that 
support the format, the more useful it becomes. The casual user should not be 
concerned about the details. It is only important to be aware that the format 
exists and that if two programs support the format, then it is likely that data 
produced by one can be processed by the other. 

If you readthisdocumentfully, you will learn all of the details of the standard. 
This is not a tutorial, so you may find it helpful to skim the more technical parts 
thatfollow, and concentrate on the next section, the beginning of the Data File 
Format section, and the sample programs. 

The sample programs in this document are all coded in a general dialect of 
BASIC, except as noted. Files are opened with an OPEN statement, and read 
and written with INPUT# and PRINT# statements. To get these programs to 
run on your system, you may have to modify them. 

2. WHAT DIF DOES AND DOES NOT DO 

The basic goal of DIF is to allow the interchange of data among a wide variety 
of programs. The type of data addressed by DIF is data that is stored in 
tables — columns and rows. Examples of this type of data would be time series, 
such as the daily closing price of one or more stocks that are to be input to a 
regression analysis package, or the actual expense figures for a company that 
are to be used as the starting point for a forecast. DIF treats all data as a group 
of equal length vectors — that is, groups of related data, like time series, or 
columns in a relation. The word vector is used, rather than column, since the 
actual orientation of the data (a horizontal row or vertical column) does not 
necessarily correspond to how it is logically oriented. Likewise, the corre- 
sponding elements of the vectors are called tuples rather than rows. For 
example, in the data below, the Sales, Cost and Profit figures (across the rows) 
could be viewed as vectors, with each year (down the columns) corresponding 
to a tuple: 



Programmer's Guide to DIF 



Year 1980 1981 1982 1983 



Sales 100 110 121 133 
Cost 80 88 97 106 
Profit 20 22 24 27 

The actual choice of which grouping of the data is considered to be the 
vectors, and which the tuples, is really up to the programmer or user. Some 
programs may just view the data as a rectangle of unrelated data, while others 
may require the user to be aware of the grouping. The VisiCalc program would 
be an example of the former, and a plotting package would be an example of 
the latter. 

In DIF, data is stored by tuples. That is, it consists of successive values from 
each vector grouped together into tuples, which are then output (or input) in 
that order. In the data used for our example, if the vectors were across the rows 
(Sales would be one vector. Cost and Profit the other two), then the first tuple 
would consist of the three numbers 100, 80, and 20, in that order. The second 
tuple would be 110, 88, and 22, and so on. 

When the VisiCalc program deals with data in DIF it gives you the option of 
storing or loading "by rows" (R or RETURN) or "by columns" (C). What the 
VisiCalc program means by "by rows" is that the vectors go across the rows, 
and the tuples go down the columns. Forexample, in ourexam pie data, saving 
Sales, Cost and Profit by rows would output first the tuple 1 00, 80, 20, and then 
the tuple 110, 88, 22, etc. "By columns" is just the opposite, with the vectors 
down the columns, and the tuples across the rows. For the same data, the first 
tupleby columns would be 100, 110, 121, 133, and then 80, 88, 97, 106, etc. 

Not all of the programs that process the data stored in DIF will have identical 
requirements. For example, some programs will only be able to process a 
simple list of numbers while others will want to store attributes associated with 
multiple vectors of numbers. Thus, a goal in the design of DIF was that 
programs should be able to keep descriptive information about the data, but 
must not be required to generate it. At the same time, the program reading the 
data should be able to ignore all descriptive information that is not relevant to 
the actual processing of data. 

The primary constraint on the format of data stored in DIF is simplicity. It 
should be very simple for users to write programs in a common language to 
read and write datafiles. Since BASIC issopervasiveand minimal, the needs of 
BASICwereused todetermine thedetailsof the format. Itisnecessaryforother 
languages, such as Pascal or PL/I, to be able to process this data, too. Fortu- 
nately these languages allow the use of subroutine libraries. Thus, a standard 
set of subroutines to process the interchange format can be provided for the 
users of those languages, freeing them from many of the details of processing 
the data. 

Nongoals were just as important as goals during the design of DIF. Specifi- 
cally, there is no emphasis on a minimal space representation. This repre- 
sentation is meant to be modest and does not attempt to preserve the richness 
available in many database systems. The central idea is that we should be able 
to transport a table of values (numeric and/or string) from one program to 



Programmer's Guide to DIF 



another. There is an additional mechanism to allow cooperating programs to 
exchange some information about the data, such as labelling. 

Some of the more specific constraints are: 

Predetermined data types 

It is much simpler to write a program in BASIC if one knows ahead of 
time what the format of the data is, and in particular whether one is 
going to be reading a string or a number. Some BASICS are missing 
the VALfunction that will convert from a string to a number, making it 
even more difficult. Therefore, DIF defines exactly which type of data 
is to be read at each point. 

Lack of line input 

Many BASICS do not have the ability to read a line of text without 
giving special meaning to some characters. For this reason strings 
containing special characters must be quoted. 

Lack of parsing 

Some BASICS will only input a whole line as a string. They do not use 
" . " as a string value delimiter. Therefore, DIF always stores string 
values alone on a single line. 

Input size 

Many BASICS have a limited input buffer. 255 characters is a typical 
limit for the length of an input line. Therefore, DIF tries to keep most 
lines of information short. 

Preailocation 

In systems that permit dynamic allocation, it is often necessary to 
allocate the space before actually reading the data. Even when this is 
not required, knowing the total amount of data beforehand can be an 
important efficiency consideration. Forthis reason, DIF has a method 
for making this information available to a program reading the data. 

End of data 

In some systems it is either difficult or impossible to detect the end of 
data in a file gracefully. Thus the program should know when it has 
read the last value. DIF has a special provision to signal when the last 
data element has been read. 

3. THE DATA FILE FORMAT 

A DIF file consists of two parts — the header and the data part. The header 
describes the data and the data part has the actual values. An example of a DIF 



Software Arts Technical Note SATN-18 



file is the following, which is from our sample data above. It has the vectors 
going across the rows, so there are three vectors, and four tuples. The various 
parts of the file are labelled, and will be described below: 



TABLE 
0,1 



VECTORS 

II II 

TUPLES 
0,4 

II II 

DATA 

0,0 
II II 

-1,0 

BOT 

0,100 

V 

0,80 

V 

0,20 

V 

-1,0 

BOT 

0,110 

V 

0,88 

V 

0,22 

V 

-1,0 

BOT 

0,121 

V 

0,97 

V 

0,24 

V 

-IrO 

BOT 

0,133 

V 

0,106 

V 

0,27 

V 

-1,0 

EOD 



Header 
Item 



Header 



1980 Sales 
1980 Cost 
1980 Profit 



Data 
Value 



Tuple 



Data 
Part 



1983 Sales 
1983 Cost 
1983 Profit 



Programmer's Guide to DIF 



THE HEADER 

The header is organized into header items. Each header item contains a 
different piece of information about the data stored in the file. That data is 
sometimes numeric, and sometimes a string value. 

STRUCTURE OF A HEADER ITEM 

Each header item consists of four fields arranged as follows: 
Topic 

Vector number, Value 
"String value" 

The Topic 

This is a keyword that identifies the header item. It must be a simple 
token readable as a string in BASIC without quotation marks. A word 
consisting of just letters with no spaces is best. 

The Vector number 

Several header items, such as a label, will apply to a specified vector. 
The Vector number specifies which vector this particular header item 
refers to. If the header item is not specific to a vector, such as a report 
title, this value should be 0. 

The Value 

This appears on the same line as the Vector number. It is used for 
header items that specify values, such as the number of vectors. It 
is zero if the value is not used by the header item. The value must be 
an integer. 

The "String value" 

This appears on a separate line after the Vector number and Value. It is 
used for header items that need string values rather than numeric 
values. The vector labels are an example. The string is always en- 
closed in quotes. 

Thus the header item consists of three lines. The first line is the topic of the 
header item, the second line consists of two numbers and the third line has a 
string. The specific header items are described below. 

Programs can ignore all header items until one with the topic DATA (de- 
scribed below) is found. The following program segment will skip the header 
items: 

1000 INPUT#1,T$ :REM - Read the Topic name 

1010 INPUT#1,S,N :REM - Read the Vector #, Value 

1020 INPUT#1,S$ :REM - Read the String value 

1030 IF T$<>"DATA" THEN 1000 :REM - Check for 

:REM - DATA header item 



Software Arts Technical Note SATN-18 



THE HEADER ITEMS 

The standard header items are shown below with a description. The 
only required header items are TABLE and DATA, which must be the 
first and last header items, respectively. 

TABLE This is the first entry in the file. While it is not strictly 

O,version required, it is important to allow for changes in future 

" title" versions and it allows programs to verify that the file is a 

TABLE of data. The version number must be 1. Some 

programs may not accept the file without the TABLE 

header item. 

VECTORS This tells how many data vectors are present. Some 

O,count programs will require this header item to be present. If 

" " this header item is absent, the input program can calcu- 

late this value by counting the number of Data Values in 
each tuple (see below). N.B.: This header item must 
appear before header items that reference vector num- 
bers, such as the LABEL header item. 

TUPLES Specifies the length of each vector. (All vectors must be 

O.count the same length.) Some programs will require this 

header item. If this header item is absent, the input 
program can calculate this value by counting the 
number of tuples before an end of data (EOD) Special 
Data Value (see below). 

LABEL Provides a label for the specified vector. This is op- 

vector#,llne# tional. The line# allows for labels spanning multiple 
"label" lines, but can be ignored by systems allowing only 

single line labels. The values and 1 should be equiva- 
lent for line#. 

COMMENT This is similar to the LABEL header item for systems 
vector#,llne# that allow an expanded description in addition to 
"label" labels. 

SIZE This is used by programs, such as data base systems, 

vector#,#bytes that allocate fixed size fields for each value. Such pro- 
grams, though, should be able to read files that do not 
contain SIZE information, since other programs may 
not be able to generate information of this type. 



DATA 
0,0 



This says that data follows. The data is organized by 
tuples, with one value from each vector in a given tuple. 



Subsystems may define their own header items to meet their needs. 
Header items that will tend to be common should be standardized. 



Programmer's Guide to DIF 



such as the LABEL for a vector. The DIF Clearinghouse will serve as a 
repository for standard header items (see the address for DIF corre- 
spondence in the section Clearinghouse, below). 

THE DATA PART 

The data part consists of tuples, i.e. one value for each vector, in vector 
order. The tuples are made up of groups of two numeric values and one 
string value called Data Values. Each Data Value is used to represent the 
value of one element of data in the file. 

In addition to the Data Values used to represent the actual data in the file, 
there are two types of Special Data Values used to provide information 
about the organization of the data. One Special Data Value is used to show 
where each tuple starts, and the other Special Data Value is used to indicate 
the end of all of the data in the file. 

Data Values are all in the following format: 

Type Indicator, Number Value 
String Value 

The first two fields are numeric values on a single line, the last is a string on a 
line by itself. These fields are: 

The Type Indicator field 

The Type Indicator is an integer that is used to indicate the way in 
which to interpret the rest of the fields in a Data Value. The currently 
assigned values for the Type Indicator are: 

-1 Indicates that this Data Value is a Special Data Value, either a 
beginning of tuple indicator or an end of data indicator. See 
below for a discussion of the Special Data Values. 

The data is numeric. The value of the Data Value is stored in 
the Number Value field, possibly modified by the String Value 
(see the descriptions of the Number Value and String Value 
fields below). 

1 The data is a string. The value of the Data Value is stored in 
the String Value field. 

2 This is an application specific value. The meaning is deter- 
mined by the cooperating programs that are expected to use 
the data. For example, it might be an expression in the host 
language. For simple applications these values can be 
treated as strings. 

The Number Value field 

This is used when the Type Indicator is to represent the value. The 
value must be a decimal (base 10) number. It may optionally be 
preceded by a sign (+ or -), have a decimal point, and immediately be 
followed by the letter E and an optionally signed power of ten expo- 



Software Arts Technical Note SATN-18 



nent. The number may be preceded or followed by one or more 
blanks. Note that this is the only place in DIF where a non-integer 
value is allowed. Some programs that read data in DIF may only 
accept integer values (e.g., programs written in some BASICS or some 
systems programming languages). 

The String Value field 

The interpretation of this field depends upon the Type Indicator. 

For normal Type Indicator (numeric) data, the String Value should 
be the letter V (for value). If it is not V, then it is a Value Indicator, used 
to override the value. A subsystem may choose its own Value Indi- 
cators for named values, though they should be registered with the 
DIF Clearinghouse. The following Value Indicators are used by the 
VisiCalc program: 

V 

This is the normal case for numbers. 

NA 

This is a value marked explicitly as Not Available. The Number 

Value is set to 0. 

ERROR 

This is a value that represents the result of an invalid calculation, 

such as division by 0. The Number Value is set to 0. 

It should always be possible to ignore the String Value for numeric 
data and just use the Number Value given. Another simple approach is 
to treat all values with a Value Indicator other than "V" as missing. 
Note that quotes are not permitted around the Value Indicator (for the 
sake of some BASICs). 

For the Type Ind icator of 1 (string data), this field is used for the string 
value itself. The quotes are optional if the field consists of just letters 
and does not contain any spaces. However, if a starting quote is given, 
a terminating quote must also be given. 



Each tuple begins with a Special Data Value whose Type Indicator is -1, 
Number Value is 0, and whose String Value is BOT (for Beginning Of Tuple). 
This Special Data Value can be used by programs to determine how many 
vectors are in the file in the absence of a VECTORS header item (by counting 
the number of Data Values between BOT Special Data Values), or for a pro- 
gram to verify its position in a file. 

At the end of the last tuple is a Special Data Value with a Type Indicator of -1 , a 
Number Value of 0, and a String Value of EOD (for End Of Data). This will allow 
programs to determine the number of tuples in the absence of a TUPLES 
header item (by counting the number of tuples before an EOD Special Data 
Value), and to gracefully detect the end of the file. 



8 Programmer's Guide to DIF 



4. SAMPLE PROGRAMS 

Here are two sample programs. The first program creates a DIF file. The 
second program can read a DIF file and list its contents. They should be helpful 
in understanding how to manipulate DIF files. They are written as main pro- 
grams with subroutines, so you can pick up code from them to be used in other 
programs. Both programs are written in a general BASIC, as described above. 



CREATING A DIF FILE 



100 

110 

120 

130 

140 

1000 

1010 

1020 

1030 

1040 

1050 

1060 

1070 

1080 

1090 

1100 

1110 

1120 

1130 

1140 

1150 

1160 

1170 

1180 

1190 

1200 

1210 

1220 

1230 

1240 

1250 

3000 

3010 

3020 

3030 

3040 

3050 

3500 

3510 

3520 

4000 

4010 

4020 

4030 

4040 



REM - This program creates a DIF file, 

REM - It prompts for the file name, number of vectors and 

REM - tuples, and then for the values themselves. Data 

REM - may be either numeric (type 0) or string (type 1) . 

REM 



PRINT "FILE NAME"; 

INPUT F$ 

OPEN 1,F$ 

PRINT "NUMBER OF VECTORS"; 

INPUT NV 

PRINT "NUMBER OF TUPLES"; 

INPUT NT 

GOSUB 3000 

FOR I = 1 TO NT 

T = -1: V = 0: S$ = "BOT" 

GOSUB 4000 

FOR J = 1 TO NV 



:REM - Get name of file 

:REM - Open for write 

:REM - Get number of vectors 

:REM - into variable NV 

:REM - and number of tuples 

:REM - into variable NT 

:REM - Write out DIF header 

:REM - Get data and output it 

:REM - Output beginning of tuple 

:REM - Get each Data Value 



PRINT "DATA TYPE FOR VECTOR #";J;", TUPLE #";I; 
INPUT T 

V = 0: S$ = "V" :REM - Init values 

PRINT "DATA VALUE FOR VECTOR #";J;", TUPLE #";I; 
IF T=0 THEN INPUT V 



:REM - Output the Data Value 



:REM - Output end of data 



IF T=l THEN INPUT 8$ 
GOSUB 4 000 
NEXT J 
NEXT I 
T = -1: V = 0: S$ = "EOD" 
GOSUB 4000 
CLOSE 1 

PRINT "FINISHED CREATING DIF FILE ";F$ 
STOP 

:REM - Routine to write out DIF header 
PRINT#1, "TABLE": PRINT#1 , "0 , 1" : GOSUB 3 500 
PRINT#1, "TUPLES": PRINT#1 , "0 , " ;NT: GOSUB 3500 
PRINT#1, "VECTORS": PRINT#1 , "0 , " ;NV: GOSUB 3 500 
PRINT#1,"DATA": PRINT#1 , "0 , 0" : GOSUB 3 500 
RETURN 

:REM - Routine to write "" (null string) 
:REM - See Appendix on quoted 
:REM - strings in BASIC, below 



PRINT#1,CHR$ (34) ; CHR$ (34) 
RETURN 



:REM - Routine to write out Data Value 



PRINT#1,T;",";V 

PRINT#1,S$ 

RETURN 

END 



Note that if the string values being saved have spaces or special characters, 
the code at line 4020 should be changed to check for those cases, and add 
leading and trailing quotes. Seethe discussion about Quoted Strings in BASIC 
in the Appendix. 



Software Arts Technical Note SATN-18 



LISTING A DIF FILE 



100 

110 

120 

500 

510 

520 

530 

540 

550 

1000 

1010 

1020 

103-0 

1040 

1050 

1060 

1070 

1080 

1090 

1100 

1110 

1120 

5000 

5010 

5020 

5030 

5040 

5050 

5060 

6000 

6010 

6020 

6030 

6040 

6050 

6060 

6070 

6500 

6510 

6520 

6530 

6530 

6540 

6600 

6610 

6620 

7000 

7010 

7020 

7030 

7040 

7050 

7060 

7070 

7080 

7090 

7100 

7110 

8000 

8010 

8020 

8030 



REM - This program reads a DIF file 



REM - and lists its contents. 
REM - the name of the file to 
DIM T(IOO) 
DIM V(IOO) 
DIM V$(100) 



GOSUB 5000 
GOSUB 6000 
FOR I = 1 TO NT 

PRINT "VALUES FOR TUPLE #";I 

GOSUB 7000 

FOR J = 1 TO NV 

IF T(J)=0 THEN PRINT V(J) 
IF T(J)=1 THEN PRINT V$ (J) 
NEXT J 
NEXT I 
CLOSE 2 

"FINISHED LISTING FILE " 



The program prompts for 
be listed. 

:REM - Maximum of 100 vectors 
:REM - T, V, and V$ hold the 
:REM - Type Indicator, Number 



PRINT 
STOP 



PRINT "FILE 
INPUT F$ 
OPEN 2,F$ 
NV = 
NT = 
RETURN 



REM 
REM 
REM 
REM 
REM 
REM 

REM 
REM 
REM 
REM 



;F$ 



- Value and String Value 

- of each element in a tuple 

- Call initialization code 

- Read header 

- Read all of the tuples 

- Get a tuple 

- Output each element 

- Output numeric value 

- Output string value 



NAME " ; 



REM - Initialization code 

:REM - Get name of file 



to read 



:REM - Open file for read 
:REM - Init counts of vectors 
: REM - and tuples 

:REM - Read header, and set NV and NT 



INPUT#2,T$ 

INPUT#2,S,N 

INPUT#2,S$ 

IF T$="VECTORS" THEN 6500 

IF T$="TUPLES" THEN 6600 

IF T$="DATA" THEN RETURN 

GOTO 6010 

NV = N 

PRINT "THE FILE HAS ";NV;" 

IF NV<=100 THEN 6010 

PRINT "TOO MANY VECTORS. 

CLOSE 2 

STOP 

NT = N 

PRINT "THE FILE HAS 

GOTO 6010 



REM 

REM 

REM 

REM 

REM 

REM 

REM 

REM 

VECTORS . 

:REM 

THIS PROGRAM ONLY HANDLES 100." 



- Get Topic name 

- Get Vector number. Value 

- Get "String value" 

- Check for known header 

- items 

- DATA ends header 

- Ignore unknown ones 

- Value is number of vectors 
II 

- If not too many, continue 



:REM - Value is number of tuples 
";NT;" TUPLES." 

:REM - Get next header item 
:REM - Get all vector elements in a tuple 



- Get next Data Value 

- Must be BOT or else error 



GOSUB 80 00 :REM 

IF Tlo-1 THEN 9000 : REM 

IF S$<>"BOT" THEN 9000 
FOR K = 1 TO NV 

GOSUB 8000 

IF Tl=-1 THEN 9000 

V(K) = VI :REM 

V$ (K) = SS :REM 

T(K) = Tl 

NEXT K 
RETURN 

:REM - Get next Data Value 
INPUT#2 ,T1,V1 :REM - Get Type Indicator, 

INPUT#2,S$ :REM - Numeric Value and String 

RETURN :REM - Value 



REM - Get each Data Value 



- Save Values and Type 

- Indicator 



10 



Programmer's Guide to DIF 



9000 PRINT "ERROR IN FILE FORMAT." 
9010 CLOSE 2 
9020 STOP 
9030 END 

Please note that while the above program can read many DIF files correctly, 
it depends upon the TUPLES and VECTORS header items to determine the 
organization of the file. A more general program could be written that, in the 
absence of these header items, deduced their values from the placement of 
BOT and EOD Special Data Values. While most programs that deal with DIF 
should be able to produce TUPLES and VECTORS header items (the VisiCalc 
program, for example, does), some may not (such as a program that records 
data incrementally, and doesn't know how many data points it will encounter 
until it is finished). 



5. APPENDICES 

QUOTED STRINGS IN BASIC 

Writing the quoted strings is not always convenient in BASIC. In some 
implementations, quotes may be included in a string by doubling them. 
For example: 

PRINT#1, "TABLE" 

PRINT#1,0,1 

PRINT#1,"" "Stock Prices for ABC Computer Co.""" 

In other implementations the CHR$ function must be used: 

PRINT#1, "TABLE" 

PRINT#1,0,1 

PRINT#1,CHR$ (34) ; "Stock Prices for ABC Computer Co. " ;CHR$ (34) 

Apple Integer BASIC presents special problems. It seems that it is necessary 
to POKE an assembly language routine into memory to output a quote. The 
following sequence will setup such a program at location $300 (hex): 

100 POKE 768,169:POKE 769,162 :REM - LDA #'""+$80 

110 POKE 770,108:POKE 771,54:POKE 772,0 : REM - JMP (CWSL) 

And to use this code: 

120 PRINT "TABLE" 

130 PRINT 1,0 

140 CALL 768 

150 PRINT "Stock Prices for ABC Computer Co."; 

160 CALL 768 

170 PRINT 



Software Arts Technical Note SATN-18 11 



Apple Integer BASIC also requires that the user remove the quotes from the 
input string with: 

300 IF LEN(S$) > 2 THEN 

IF (ASC(S$(1,1) ) MOD 128) = 34 THEN 
S$ = S$(2,LEN(S$)-1) 

This assumes that there is also a trailing quote. Note that in order to make the 
quoted string itself acceptable to most BASICS it must not contain a quote. 

CHARACTER SETS 

The character set is assumed to be that of the host machine. Thus, if one is 
transferring a file from a machine using ASCII to one using EBCDIC, the 
appropriate conversions must be made. In addition, some machines may 
require that the quote be changed to an apostrophe. These changes should be 
transparent to most users. In order to assure compatability, strings should not 
contain nonprinting characters, other than the end of line sequence 
(RETURN, CR/LF, NEWLINE or whatever). 

The ASCII character set defines 95 printable characters. The user should be 
aware that some systems do not make it easy to use the full set. In particular, 
keywords (including topic names and number types) must be in upper case. 
Some systems only support a limited set of characters, often 64 printable 
characters or less. When transporting a file to such a system the upper and 
lower case characters would be mapped together to one case. Other special 
characters may be mapped into common characters. If these transformations 
affect the integrity of the data, it should be specified in the documentation 
associated with the data. 

6. CLEARINGHOUSE 

In order to coordinate information about DIF and the programs that make 
use of it. Software Arts, Inc. is setting up a clearinghouse forsuch information. 

We would appreciate it if the authors of programs that support DIF would 
send a one page description of the program to the clearinghouse. This descrip- 
tion should include a short write-up of what the program does, on which 
computers it runs, how it relates to DIF, and how it may be obtained. 

Users who would like a copy of the information that we receive should send 
$6.00 (to cover the costs of running the clearinghouse and providing the 
information) and their name, address and zip code, with a note specifically 
requesting a copy of the list of programs that support DIF. 

All correspondence relating to DIF should be sent to the following address: 



DIF Clearinghouse 
P.O. Box 527 
Cambridge, MA 02139 



12 Programmer's Guide to DIF 



READER'S CRITIQUE 



VISICALC® "'"' 



GUIDE 



40910-2211 



VisiCorp's Publications Department wants to provide documents that meet the needs of 
all our product users. Your feedback helps us produce better manuals. 

Please tell us how you rate this manual in the following areas: 

1 . Completeness of information. 

2. Clarity of information. 

3. Organization of manual. 

4. Appearance of manual. 

5. Quantity of examples. 

6. Usefulness of examples. 

7. Quantity of photographs and 
illustrations. 

8. Appropriateness of photographs 
and illustrations. 

9. Degree to which this manual meets 
your expectations and needs. 

10. Appropriateness of the manual level 
to a person of your experience. 

1 1 . Overall manual. 



How much computer experience 
do you have? 



;ellent 


Good 


Average 


Fair 


Poor 
















1 












































1 


|— 1 




















n 






















2 years 
or less 


2-5 
years 


Over 
5 years 





D n 



n 



Please specify, by page, any errors you found in this manual. 



We would appreciate hearing any other comments and suggestions you have about this 
manual. 

Name 



Company 

Street 

City 



State 



Zip 



^ ^ <! 

^ ^^ 
o NO 
fS ^ O 

>^ 

4^ 



^3 

o 

CO 

H 
> 
O 
m 



03 

m 
> 



-n 

o 

DO 

> 
O 

a 

m 
en 
en 
m 
m 



CO 



o 

o 

CO 

> 

o 

CO 

m 

n 

> 

o 

Cn 

I—' 
Oj 



a 



p cn 

H CD 

z _ 

p 'p^ 






> 

t-' 



C 3' 

3 __ t— — I V 



(15 o 






_ O 

- - ST 



Pocket Reference 



A VisiCalc® screen 



J 




® 



For The ATARI 800^"^ 32K 
Personal Computer 



Program Created and Written by 
Software Arts, Inc. 



Entry Contents 

Entry Type: 

(V) = Value 

(L) = Label 

(/ - ) = Repeating Label 

Current cursor 
coordinate 

Entry Line 
Prompt Line 

Edit Line: 

Light block 

is edit cue 



Row and 
Column Labels 



Label 



Repeating Label 

(/-) 



Cursor 



Screen split 

into two vertical 

windows 






PERSONAL SOFTWARE^" 
Exclusive Distributor 




Recalculation 
Order Indicator 
R = across rows 
C = across columns 

! indicates sheet is 
being recalculated 



Memory Indicator: 
Number of K memory 
available. M indicates 
out of room. 



* Right-Aligned Format 
(/FR) 

^ Dollars-and-cents Format 
(/F$) 



MOVING THE CURSOR 



T i 



Integer Format {/FT) 



> coord 

CALCULATING 

+ 



EDITING 

BACK S 



BREAK 



Move the cursor in designated direc- 
tion. Used in value entry and some 
commands to point to an entry position 
that will be selected when RETURN or 
a colon is pressed. 

Moves cursor between windows (see 
/W). 

Go To Command. Cursor moves to 
designated coordinate 



Addition 

Subtraction 

Multiplication 

Division 

Exponentiation 

If the coordinate is immediately to left 
of edit cue, replaces coordinate with 
that location's current value. Otherwise 
places current value of cursor location 
on edit line. 

When the edit line is clear, forces 
recalculation of entire sheet. When 
formula is on the edit line, replaces 
formula on edit line with its current 
value. 



Deletes character to left of edit cue on 
edit line. If edit cue is at beginning of 
edit line, cancels command entry and 
clears prompt line. 

Cancels command, clearing edit line 
and prompt line; stops printing or disk 
storage operation in progress. 



Labels 

Start with any letter or ". The initial quotation mark does not 
appear on the edit line. Defines the entry as a label with the 
numeric value of zero. Labels are left-aligned in the entry 
position. Correct typing errors while entering with BACK S. 



VALUES 

Start with a digit (0 through 9), plus ( + ), minus ( - ), open 
parenthesis, period (.), number sign (#), or at sign (@). In 
General format, program shifts between conventional and 
scientific notation as required to display the calculated value 
to the greatest precision. If column is too narrow to display 
the number in scientific notation, greater-than signs (>) fill 
the entry position. 



Provide common formulas for use in values. Each function 
begins with @ followed by the name of the function; most 
functions also require an expression in parentheses (the argu- 
ment). An argument includes the values (formulas and 
numbers) upon which the function calculates. 



VALUE References 



Entry position coordinate used as element in a formula. Value 
references are allowed wherever numbers are allowed. To 
start a value entry with a value reference, begin with -I- . 

FILE NAMES 

A file name consists of up to 8 characters and must begin with 
a letter. It can include letters or numbers. No other characters 
are allowed. Suffixes are automatically added by the program 
to differentiate files: .VC for VisiCalc files, .PRF for print 
files, and .DIF for DIF files. 

File name prefixes can also be added: 

• Dn: designates the disk drive where n is the number of the 
drive. 

• C: sends to a cassette. 

• Rn: sends to RS-232 devices. Can be followed by the baud 
rate (300, 1200, etc.). 

• P: sends to printers. /SSP: prints out formulas and formats. 
A file name can be given in the VisiCalc program by: 

• Typing the entire file name for the file. 

• Scrolling the name from the current directory with the -> . 

• Typing a drive designator (e.g., "D2:") and pressing 
RETURN, then scrolling file names with the -^ . 

• Typing a file name with wild cards and scrolling through 
the names containing the given characters. * replaces any 
number of characters in a file name. ? replaces only one 
character in a file name. 

A file name may be edited before pressing RETURN by: 

• Using the BACK S key to delete single characters. 

• Typing additional characters to add to the name. 



The arguments may be 

V 

list 
range 



@ABS(v) 

©AVERAGE 
(list) 

@COUNT(7isO 

@EXP(v^) 
@INT(v^) 
@LN(v) 
@LOG10(v) 

©LOOKUP 

{v, range) 



@MAX(7is/) 
@MIN(7isO 

@NPV 
{dr, range) 



@SQRT(v') 
@SUM{Iist) 



Any valid VisiCalc value. 

Any combination of values and ranges 
separated by commas. 

A portion of a row or column specified 
by its beginning coordinate, a period 
(displayed as an ellipsis), and its final 
coordinate. 

Absolute value of v. 

Average of the non-blank entries in 
list. Maximum of 255 entries in list. 

Number of non- blank entries in list. 
Maximum of 255 entries in list. 

Natural exponential of v. 

Integer portion of v. 

Natural logarithm of v. 

Base 10 logarithm of v. 

Compares v to the successive 
values in range and returns the corre- 
sponding value from the column or row 
immediately to the right or below the 
entries in range. 

Maximum value in list. 

Minimum value in list. 

Net present value of the cash flow 
in range, discounted at the rate 
specified in the expression dr (discount 
rate). 

Square root of v. 

Sum of the values in list. 



I^^^^^l^l 


TRIGONOMETRIC FUNCTIONS 


All angles are in 


radians. 


@ACOS(v^) 


Arccosine of v. 


@ASIN(v^) 


Arcsine of v. 


@ATAN(v^) 


Arctangent of v. 


@COS(v^) 


Cosine of v. 


@SIN(u) 


Sine of v. 


@TAN(v) 


Tangent of v. 


FUNCTIONS WITHOUT ARGUMENTS 


©ERROR 


Makes all expressions referencing the ' 
value display ERROR. 


@NA 


Makes all expressions referencing the 
value display NA. ] 



@PI 3.1415926536. 



Blank Erases the highlighted entry position. 

RETURN or arrow key completes 
command. 

Clear Clears the worksheet, restores the 

General format and single window. Y 
completes command, any other key 
cancels. 

Delete Deletes the entire row (/DR) or column 

(/DC) on which the cursor rests. 

Format Sets local format for the highlighted 
entry position but does not affect 
contents in memory. Remains until 
changed or the worksheet is cleared. 

/FD Default— Resets to the global format. 

/FG General — Maximum precision. 

/FI Integer. 

/FL Left-aligned. 

/FR Right-ahgned 

/F$ Dollars-and-cents (two decimal places). 

/F* Graph — Replaces value with asterisks 

equal to its integer value. 

Global Affects entire window or sheet. 

/GC Column — Sets column width of all 

columns to specified number (3 to 37). 
RETURN completes command. 

/GF Format — Sets display format for all 

columns not specifically formatted. See 
/F for format specifications. 

/GO Order of Recalculation — Specifies 

whether the worksheet is to be 
recalculated down the columns (/GOC) 
or across the rows (/GOR). 

/GR Recalculation priority — Sets recalcula- 

tion to automatic (/GRA) or manual 
(/GRM). Typing ! causes recalculation. 

Insert Inserts a new blank row (/IR) or 

column (/IC) at the cursor position. 



/P 
/R 

/S 
/T 



/M Move Moves an entire row or column to 

another position on the sheet. The first 
coordinate on the edit line designates 
the row or column to be moved. The 
final coordinate specifies where the 
row or column is to be moved. 
RETURN completes command. 

See "Printing." 

See "Replicating." 

See "Storing." 

Titles Fixes rows and columns in place on the 

screen so they remain in view when the 
window is scrolled. The position of the 
cursor determines which column(s) 
and/or row(s) to be fixed. The Go To 
command (>) moves the cursor into a 
fixed area. 

Horizontal — Fixes rows at and above 
the cursor. 

Vertical — Fixes columns at and to the 
left of the cursor. 

Both — Fixes columns and rows. 

None — Unfixes all rows and columns. 

Displays the copyright notice and 
version number. 

Splits the screen vertically or horizon- 
tally at the current cursor position. The 
semicolon (;) moves the cursor from 
one window to the other. Global com- 
mands affect only the window contain- 
ing the cursor. 
/WH Horizontal— Splits the screen just 

above the row with the cursor. 

/WV Vertical— Splits the screen just to the 

left of the column with the cursor. 

/WS Synchronized scrolling— Split windows 

scroll together. 

/WU Unsynchronized scrolling — Cancels 

synchronized scrolling. 

/ - Repeating Fills the entry position with the 

Label designated character(s). 





/TH 




/TV 




/TB 




/TN 


IV 


Version 


/w 


Window 



Printing 



The Print command sends a contiguous rectangular portion of 
the worksheet to a printer or to diskette. Formulas are not sent 
(to print formulas and formats, see /SS). 

To print all or part of a VisiCalc sheet: 



1. 

2. 

3. 



Place the cursor on the upper-left coor- 
dinate of the rectangular area to be 
printed and type /P. 

Type F to send to diskette file. Type P 
to send to a printer. 

Type -I- to send a carriage return. 
Type — to turn off the line feed auto- 
matically sent by the VisiCalc pro- 
gram. Type & to restore the line feed. 

To send setup strings, type ", the 
strings, then RETURN. The setup 
strings must be reentered each time the 
Print command is used. Invalid setup 
strings sent to the printer give no error 
indication. 

Enter lower-right coordinate of the rec- 
tangle to be printed, either by typing it 
or pointing the cursor to it, and press 
RETURN. 



The Replicate command copies the entry contents of the 
source range (the position(s) to be copied) into the target 
range (the position(s) to which it will be copied.) 

,A range is a portion of a row or column specified by its 
beginning coordinate, a period (shown as ...)/ and its final 
coordinate. 

A colon separates the source range from the target range and 
Us entered by typing either colon or RETURN. 

Source Target 

To copy one coordinate : coordinate 

entry once 



To copy one 
entry several 
times 

To copy a row 
or column 
once 

To copy a row 
several times 

To copy a 
column several 
times 



coordinate 



row or 

column 

range 

row range 



column 
range 



range in one 
row or column 



starting 
coordinate 



range in one 
column 

range in one 
row 



RETURN completes command. 

If the source range includes reference to other locations, 
indicate how each reference is to be treated: 



N 



No Copies the reference as it appears in 

Change the source entry. 

Relative Changes the reference so that it is 
relative to the target position. 



The Storage command writes a file to diskette, reads a saved 
file from diskette, writes and reads files in the DIF^" format, 
deletes files from a diskette, initializes diskettes, and quits the 
VisiCalc program. File names can be displayed from the 
diskette by pressing the right arrow key when prompted for 
the file name. 

/SL Load Reads a file previously saved with /SS. 

The file is loaded over the current 
sheet. New entries replace old ones. 
Any entries that are not replaced 
remain the same. To load a file into an 
empty worksheet, clear with /C before 
loading new file. 

/SS Save Saves the information on the worksheet 

on diskette under the specified file 
name. Type /SSP: to print formulas and 
formats. 

/SD Delete file Deletes the specified file from the 

diskette. 

/SI Initialize Initializes storage diskettes completely 

diskettes erasing anything already on the 
diskette. 



/SQ Quit 

/S#S 

/S#L 



Quits the VisiCalc program, returning 
to the operating system. 

Writes the specified area of worksheet 
to diskette as a file in the DIF^*' format. 
R or RETURN saves by rows, C saves 
by columns. 

Loads a file in the DIF^" format. R or 
RETURN loads the information by 
rows, C loads by columns. 



DIF^" is a Trademark of Software Arts, Inc. 
VisiCalc" is a Registered Trademark of VisiCorp 
ATARI 800^" is a Trademark of Atari, Inc. 
Software Copyright ® 1981 Software Arts, Inc. 
Pocket Reference Copyright © 1981 VisiCorp. 
All Rights Reserved. 



I 



f 

I— 

h 














"■'' 








■tMMMMM 


_r- —*. 






., 






I'. 


-annnr t -«-f 
















■MM 






























.■.' '■"' 










f" 










"""■ 










i IZ 






























' 




















IMtU'- 




VERVIEW 

This booklet contains the follow- 
ing items: 

• Warranty Registration Card 

• Replacement Policy and Order Card 

• Backup Policy and Order Card 

• A Copy of the VisiCorp 
Customer License Agreement 

These policies comprise VisiCorp's 
"User Support Plan." Please take the 
time to read thoroughly and carefully the 
entire "User Support Plan" and, fill out 
and return the Warranty Registration 



Card. This will entitle you to the privi- 
leges outlined in this User Support Plan. 

Note the following information 
for your future reference. 



Computer Brand: 
Program Name:_ 



Version Number: 



Date Product 
Received Mo: 



Day: 



.Year: 




USTOMER SUPPORT 

W^ile VisiCorp's software 
products may be used to help you 
manage your business affairs, no com- 
puter software program can replace 
your sound business judgement, or 
make decisions for you. You therefore 



assume complete responsibility for any 
decisions made or action taken based 
on information obtained using this soft- 
ware product, instructional or reference 
materials provided by VisiCorp. 




OFTWARE PROGRAM PROVIDED "AS IS" 



VisiCorp wishes to support your 
use of our products so that you may 
realize the full benefits of our software. 
WHiile we have attempted to make the 
product as easy to use and error free 
as possible, the software program and 
the enclosed instructional and reference 
materials are provided "AS IS'' without 
warranty as to their performance, 
merchantability or fitness for any 
particular purchase. 

We realize that occasionally a 
problem may arise and you will wish to 
seek technical assistance. Should you 
encounter any difficulty using the pro- 
gram, and it does not operate as described, 
we suggest that you do the following 
in order: 

First, Consult the manual to make 
sure you are properly operating the 
program. Check to see if the program 
supports the particular operating 



system, interfaces and peripherals that 
you have. VisiCorp's manuals have refer- 
ence sections to answer your questions 
about the operation of the program. 

Second, Consult your dealer. 
VisiCorp's dealers are continually 
informed of configurations supported 
and the ways in which our programs 
are used. 

Finally, if the answer you want 
cannot be obtained by reading the 
manual or consulting with your 
dealer, VisiCorp's Customer Support 
personnel are available to help either 
your dealer or yourself. They may be 
called from 8:00AM to 5:00PM (Pacific 
Time) through our Customer Support 
Hotline (408) 942-6000 or through our 
corporate phone number (408) 
946-9000. Customer Support may also 
be consulted by mail or telex #172159. 




ISlCORP CUSTOMER LICENSE AGREEMENT 



IMPORTANT: THE ENCLOSED VISICORP™ PROGRAM IS LICENSED 
BY VISICORP TO CUSTOMERS FOR THEIR USE ONLY ON THE TERMS 
SET FORTH BELOW. OPENING THIS PACKAGE INDICATES YOUR 
ACCEPTANCE OF THESE TERMS. 



1 LICENSE. VISICORP hereby agrees to 
grant you a non-exclusive license to use the 
enclosed VISICORP™ program (the "Pro- 
gram") subject to the terms and restrictions 
set forth in this License Agreement. 

2 COPYRIGHT. The Program and its doc- 
umentation are copyrighted. You may not 
copy or otherwise reproduce any part of the 
Program or its documentation, except that 
you may load the Program into a computer 
as an essential step in executing the Program 
on the computer. 

3 BACK-UP POLICY VISICORP will pro- 
vide you with a back-up of the Program 
upon receipt of your Completed Warranty 
Registration Card together with payment of 
the applicable back-up copy fee as set forth 
in VisiCorp's then current User Support Plan. 

4 RESTRICTIONS ON USE AND TRANS- 
FER. Tlie original and any back-up copies of 
the Program and its documentation are to be 
used only in connection with a single com- 
puter. You may physically transfer the 
Program from one computer to another, pro- 
vided that the Program is used in connection 
with only one computer at a time. You may 
not transfer the Program electronically from 
one computer to another over a network. You 
may not distribute copies of the Program or 
Documentation to others. You may transfer 
this license together with the original and all 
back-up copies of the Program and its docu- 
mentation, provided that the transferee com- 
pletes and returns to VISICORP a Registra- 
tion Card and agrees to be bound by the 
terms of this License Agreement. Neither the 
Program nor its documentation may be 
modified or translated without written per- 
mission from VISICORP 



YOU MAY NOT USE, COPY, MODIFY, OR 
TRANSFER THE PROGRAM, OR ANY 
COPY, MODIFICATION OR MERGED 
PORTION, IN WHOLE OR IN PART 
EXCEPT AS EXPRESSLY PROVIDED FOR 
IN THIS LICENSE. 

5 NO WARRANTY OF PERFORMANCE. 
VISICORP DOES NOT AND CANNOT 
WARRANT THE PERFORMANCE OR 
RESULTS THAT MAY BE OBTAINED BY 
USING THE PROGRAM. ACCORDINGLY 
THE PROGRAM AND FTS DOCUMENTA- 
TION ARE LICENSED "AS IS" WITHOUT 
WARRANTY AS TO THEIR PER- 
FORMANCE, MERCHANTABILITY OR 
FITNESS FOR ANY PARTICULAR 
PURPOSE. THE ENTIRE RISK AS TO THE 
RESULTS AND PERFORMANCE OF THE 
PROGRAM IS ASSUMED BY YOU. 
SHOULD THE PROGRAM PROVE 
DEFECTIVE,YOU (AND NOT VISICORP 
OR ITS DEALER) ASSUME THE ENTIRE 
COST OF ALL NECESSARY SERVICING, 
REPAIR OR CORRECTION. 

6 LIMITED WARRANTY FOR DISK- 
ETTES. To the original licensee only, 
VISICORP warrants the magnetic diskette on 
which the Program is recorded to be free 
from defects in materials and faulty 
workmanship under normal use and service 
for a period of ninety days from the date the 
Program is delivered. If, during this 90 day 
period, a defect in the diskette should occur, 
the diskette may be returned to VISICORP 
at the address noted above, or to any author- 
ized VISICORP™ dealer, and VISICORP will 
replace the diskette without charge to you, 
provided that you have previously returned 
the enclosed Warranty Registration Card to 
VISICORP or send a copy of your receipt 
for the Program together with a complete 
Replacement Order Card. Your sole and 
exclusive remedy in the event of a defect is 



expressly limited to replacement of the disk- 
ette as provided above. Any implied war- 
ranties ot merchantability and fitness for a 
particular purpose are limited in duration to 
the period ot ninety 1 90 1 days from the date 
of delivery. If the failure of a diskette has 
resulted from accident, abuse or misapplica- 
tion of the diskette, then VISICORP shall have 
no responsibility to replace the diskette under 
the terms oi this limited warranty. This limited 
warranty gives you specific legal rights, and 
you may also have other rights which var\- 
from state to state. 

7 DISKETTE REPLACEMENT POLICY. It 
after ninety [90] days and during the first 
year after the date of deliverv', a defect in the 
diskette should occur, the diskette may be 
returned to MSICORP, accompanied by the 
enclosed Replacement Order Card and pay- 
ment of the applicable replacement fee as 
outlined in MSICORP's then current User 
Support Plan and VISICORP will replace the 
diskette provided that you have previously 
returned your Warrantv Registration Card to 
VISICORP. 

8 LIMITATION OF LIABILITY. NEITHER 
VISICORP NOR ANYONE ELSE WHO 
HAS BEEN INVOLVED IN THE CREA- 
TION, PRODUCTION, OR DELIVTRY OF 
THIS PROGRAM SHALL BE LIABLE FOR 
ANY DIRECT, INCIDENTAL OR CONSE- 
QUENTIAL DAMAGES, SUCH AS, BUT 
NOT LIMITED TO, LOSS OF ANTI- 
CIPATED PROFITS OR BENEFITS, 
RESULTING FROM THE USE OF THE 
PROGRAM OR ARISING OUT OF ANY 
BREACH OF ANY WARRANTY SOME 
STATES DO NOT ALLOW THE EXCLU- 
SION OR LIMITATION OF DIRECT INCI- 
DENTAL OR CONSEQUENTIAL 
DAMAGES, SO THE ABOVE LIMrTATION 
MAY NOT APPLY TO YOU. 



9 TERM. The license is effective until termi- 
nated. You may terminate it at any time by 
destroying the Program and Documentation 
together with all copies, modifications and 
merged portions in any form. It will also ter- 
minate if you fail to comply with any term 
or condition of this License Agreement. You 
agree upon such termination to destroy the 
Program and Documentation together with 
all copies, modifications and merged portions 
in anv form. 

10 YOUR USE OF THIS PROGRAM 
OR SIGNATURE ON THE ENCLOSED 
WARRANTY REGISTRATION CARD 
ACKNOWLEDGES THAT YOU HAVE 
READ THIS CUSTOMER LICENSE 
AGREEMENT AND AGREE TO ITS 
TERMS. YOU FURTHER AGREE THAT 
THE LICENSE AGREEMENT IS THE 
COMPLETE AND EXCLUSIVE STATE- 
MENT OF THE AGREEMENT BETWEEN 
US AND SUPERSEDES ANY PROPOSAL 
OR PRIOR AGREEMENT, ORAL OR 
VMUTTEN, AND ANY OTHER COM- 
MUNICATIONS BETV\TEN US RELATING 
TO THE SUBJECT MATTER OF THIS 
AGREEMENT. 

X'isiCoRr 

2805 Zanker Road 

San Jose, CA 95134 




ARRANTY REGISTRATION 

Please fill out the Warranty 
Registration Card completely and mail 
it to us. The postage is paid for your 
convenience. Warranty Registration 
enables you to obtain a replacement 
diskette as detailed in the Limited 
Warranty for diskettes set forth in 
the Customer License Agreement and 



CARD 

it permits you to obtain a backup 
(second) copy of our copy protected 
diskettes. Your name will also be 
included in VisiCorp's mailing list, so 
that you may be notified of special 
information, upgrades and new product 
announcements by mail. 




EPLACEMENT ORDER CARD 



In the event your diskette is 
found to be defective in materials and 
faulty workmanship under normal 
use and service during the 90 day 
warranty period, please follow the 
instructions as detailed in the Limited 



Warranty statement. After ninety days, 
and up to one year after the date of 
delivery, a replacement diskette is 
available from VisiCorp for $20.00 by 
filling out the enclosed Replacement 
Order Card. 




ACKUP ORDER CARD 

If the VisiCorp product you have 
received is copy protected and if a 
second diskette is not provided in the 
original program packaging, you may 



obtain one backup copy from VisiCorp 
for $20.00 by filling out the enclosed 
Backup Diskette Order Card. 



NOTE: VisiCorp must receive 
your Warranty Registration Card or 
your original receipt before we can ship 
you either a Replacement or a 
Backup Diskette. 

Residents of California, Massachusetts, 
New York and Texas include sales tax. 



Please use the same name on the 
Replacement and Backup Diskette 
order cards as you used on the Warranty 
Card and please note any change 
of address. 

Prices subject to change without notice. 

All prices are U.S. dollars. 




EPLACEMENT ORDER CARD 

Use this card to order a replacement for a program diskette found defective 
in material or workmanship as described in the accompanying Limited Warranty 
Statement. Please enclose the faulty diskette and, if it is past the ninety day Limited 
Warranty period, please also enclose a check or money order for $20.00 (U.S. 
Dollars). Residents of California, Massachusetts, New York and Texas include sales tax. 
Mail to: VisiCorp Customer Service, Dept. RP, 2895 Zanker Road, San Jose, CA 95134 

Please type or print legibly and fill out the same information as you supplied on 
the Warranty Registration Card. 



Name. 



-ompan\- 



Title. 



Address. 
State 



.Department Or PO Box. 
.City 



Computer Brand: 

Version Number: 

I enclose check or money order in the amount of: 

Note: Prices subject to change without notice. 



.Zip 

VisiCorp 
.Program Name:_ 

Date Product 
.Received Mo: 



. Countr>'. 



.Day: 



.Year: 




ACKUP DISKETTE ORDER CARD 

Use this card to obtain one backup program diskette for your copy protected 
program. One backup copy is available for this program per Warranty Card holder. 

When ordering a backup copy, please include this card and $20.00 (U.S. 
Dollars) in check or money order Residents of California, Massachusetts, New York 
and Texas include sales tax. 
Mail to: VisiCorp Customer Service, Dept. BK, 2895 Zanker Road, San Jose, CA 95134 

Please type or print legibly and fill out the same information as you supplied on 
the Warranty Registration Card. 



Name. 



Company. 



Title. 



Address. 
State 



.Department Or PO Box. 
.City 



Computer Brand: 



Version Number: 



.Zip 

VisiCorp 
.Program Name:_ 

Date Product 
.Received Mo: 



I enclose check or money order m the amount oh 

Note: Prices subject to change without notice. 



.Country. 



.Day: 
S 



.Year: 










2895 Zanker Road 

San Jose, California 95134 

Telephone 408/946-9000 



Atari 800 

VisiCalc® 

40910-2211 7/82