Radio Shack Hardware Manual Color Computer Disk System Owners 1981 Tandy Text
User Manual: manual pdf -FilePursuit
Open the PDF directly: View PDF
.
Page Count: 104
| Download | |
| Open PDF In Browser | View PDF |
Radio /haeK
O ©MMS
©©MPonnsiR
Owners Manual
CUSTOM MANUFACTURED
& Programming Guide
IN U.S.A.
BY RADIO SHACK, A DIVISION OF TANDY CORPORATION
Important Notice: Your computer must be off when you connect the
disk interface. Otherwise, you could damage the system.
"wwSgS^fij^lsSwwwSjgji^
TERMS AND CONDITIONS OF SALE AND LICENSE OF RADIO SHACK COMPUTER EQUIPMENT AND SOFTWARE
PURCHASED FROM A RADIO SHACK COMPANY-OWNED COMPUTER CENTER. RETAIL STORE OR FROM A
RADIO SHACK FRANCHISEE OR DEALER AT ITS AUTHORIZED LOCATION
LIMITED
I
WARRANTY
CUSTOMER OBLIGATIONS
A.
B
CUSTOMER assumes
full responsibility that this Radio Shack computer hardware purchased (the "Equipment"), and any copies ot Radio
Shack software included with the Equipment or licensed separately (the "Software") meets the specifications, capacity, capabilities,
versatility, and other requirements of CUSTOMER.
CUSTOMER assumes full responsibility for the condition and effectiveness of the operating environment in which the Equipment and Software
are to function, and for
II.
its
installation
RADIO SHACK LIMITED WARRANTIES AND CONDITIONS OF SALE
A.
For a period of ninety (90) calendar days from the date of the Radio Shack sales document received upon purchase of the Equipment, RADIO
SHACK warrants to the original CUSTOMER that the Equipment and the medium upon which the Software is stored is free from manufacturing
THIS WARRANTY IS ONLY APPLICABLE TO PURCHASES OF RADIO SHACK EQUIPMENT BY THE ORIGINAL CUSTOMER FROM
RADIO SHACK COMPANY-OWNED COMPUTER CENTERS, RETAIL STORES AND FROM RADIO SHACK FRANCHISEES AND DEALERS AT ITS
AUTHORIZED LOCATION. The warranty is void if the Equipment's case or cabinet has been opened, or if the Equipment or Software has been
defects.
If a manufacturing defect is discovered during the stated warranty period, the defective Equipment
Shack Computer Center, a Radio Shack retail store, participating Radio Shack franchisee or Radio Shack dealer
along with a copy of the sales document or lease agreement The original CUSTOMER'S sole and exclusive remedy in the event of
limited to the correction of the defect by repair, replacement, or refund of the purchase price, at RADIO SHACK'S election and sole
subjected to improper or abnormal use.
must be returned
for repair,
a defect
is
to a Radio
RADIO SHACK has no obligation to
RADIO SHACK makes no warranty as to the
paragraph. Software is licensed on an "AS
expense.
B.
of
III.
design, capability, capacity, or suitability for use of the Software, except as provided
IS" basis, without warranty. The original
CUSTOMER'S
exclusive remedy,
in
in
this
the event of a
Shack sales document
is its
received upon license of the Software, The defective Software shall be returned to a Radio Shack Computer Center, a Radio Shack retail store,
participating Radio Shack franchisee or Radio Shack dealer along with the sales document.
Except as provided herein no employee, agent, franchisee, dealer or other person is authorized to give any warranties of any nature on behalf
Software manufacturing defect,
C.
replace or repair expendable items.
repair or replacement within thirty (30) calendar days of the date of the Radio
RADIO SHACK.
D.
Except as provided herein,
E.
PARTICULAR PURPOSE.
Some states do not allow
RADIO SHACK MAKES NO WARRANTIES, INCLUDING WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A
limitations
on how long an implied warranty
lasts,
so the above limitation(s)
may
not apply to
CUSTOMER.
LIMITATION OF LIABILITY
A.
EXCEPT AS PROVIDED HEREIN, RADIO SHACK SHALL HAVE NO LIABILITY OR RESPONSIBILITY TO CUSTOMER OR ANY OTHER PERSON
OR ENTITY WITH RESPECT TO ANY LIABILITY, LOSS OR DAMAGE CAUSED OR ALLEGED TO BE CAUSED DIRECTLY OR INDIRECTLY BY
"EQUIPMENT" OR "SOFTWARE" SOLD, LEASED, LICENSED OR FURNISHED BY RADIO SHACK, INCLUDING, BUT NOT LIMITED TO. ANY
INTERRUPTION OF SERVICE, LOSS OF BUSINESS OR ANTICIPATORY PROFITS OR CONSEQUENTIAL DAMAGES RESULTING FROM THE
USE OR OPERATION OF THE "EQUIPMENT" OR "SOFTWARE". IN NO EVENT SHALL RADIO SHACK BE LIABLE FOR LOSS OF PROFITS, OR
ANY INDIRECT, SPECIAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY BREACH OF THIS WARRANTY OR IN ANY MANNER
ARISING OUT OF OR CONNECTED WITH THE SALE, LEASE, LICENSE, USE OR ANTICIPATED USE OF THE "EQUIPMENT" OR "SOFTWARE".
NOTWITHSTANDING THE ABOVE LIMITATIONS AND WARRANTIES, RADIO SHACK'S LIABILITY HEREUNDER FOR DAMAGES INCURRED BY
CUSTOMER OR OTHERS SHALL NOT EXCEED THE AMOUNT PAID BY CUSTOMER FOR THE PARTICULAR "EQUIPMENT" OR "SOFTWARE"
B.
C.
INVOLVED.
RADIO SHACK shall not be liable for any damages caused by delay in delivering or furnishing Equipment and/or Software.
No action arising out of any claimed breach of this Warranty or transactions under this Warranty may be brought more than two (2) years
after the cause of action has accrued or more than four (4) years after the date of the Radio Shack sales document for the Equipment or
Software, whichever
D.
Some
occurs.
limitation or exclusion of incidental or consequential
damages, so the above
limitation(s) or exclusion(s)
may
CUSTOMER.
not apply to
IV.
first
do not allow the
states
RADIO SHACK SOFTWARE LICENSE
RADIO SHACK grants
to
CUSTOMER
a non-exclusive, paid-up license to use the
RADIO SHACK Software on one computer,
subject to the following
provisions:
Software License, applicable copyright laws shall apply to the Software.
on which the Software is recorded (cassette and/or diskette) or stored (ROM) is transferred to
A.
Except as otherwise provided
B.
Title to
the
medium
in
this
•Ji.\
CUSTOMER,
but not
title
to
the Software.
C.
CUSTOMER may
use Software on one host computer and access that Software through one or more terminals
if
the Software permits this
&H
a
function.
CUSTOMER
F.
not use, make, manufacture, or reproduce copies of Software except for use on one computer and as is specifically
Software License. Customer is expressly prohibited from disassembling the Software.
make additional copies of the Software only for backup or archival purposes or if additional copies are required in
the operation of one computer with the Software, but only to the extent the Software allows a backup copy to be made. However, for
TRSDOS Software, CUSTOMER is permitted to make a limited number of additional copies for CUSTOMER'S own use.
CUSTOMER may resell or distribute unmodified copies of the Software provided CUSTOMER has purchased one copy of the Software for each
G.
All
D.
provided
E.
in
shall
this
CUSTOMER
one sold or
is
permitted to
distributed.
The provisions
of this Software License shall also be applicable to third parties receiving copies of the Software
from
CUSTOMER.
V.
copyright notices shall be retained on
APPLICABILITY OF
A.
all
copies of the Software.
WARRANTY
The terms and conditions
Software License to
of this
CUSTOMER
Warranty are applicable as between RADIO SHACK and CUSTOMER to either a sale of the Equipment and/or
or to a transaction whereby RADIO SHACK sells or conveys such Equipment to a third party for lease to
CUSTOMER.
B.
The
limitations of liability
and Warranty provisions herein
shall inure to the benefit of
RADIO SHACK,
the author,
owner and/or
licensor of the
Software and any manufacturer of the Equipment sold by RADIO SHACK.
VI.
STATE LAW RIGHTS
The warranties granted herein give the original
from state to state.
WW®
"Una
m%
CUSTOMER
specific legal rights, and the original
CUSTOMER may
have other rights which vary
£•?•»:
:•'•:•;
The FCC wants you to know:
This equipment generates and uses radio frequency energy. If it is not installed and used properly,
that is, in strict accordance with the manufacturer's instructions, it may cause interference to radio
and television reception. It has been type tested and found to comply with the limits for a Class B
computing device in accordance with the specifications in Subpart J of Part 15 of FCC Rules, which
are designed to provide reasonable protection against such interference in a residential installation. However, there is no guarantee that interference will not occur in a particular installation. If
this equipment does cause interference to radio or television reception, which can be determined by
turning the equipment off and on, the user is encouraged to try to correct the interference by one
or more of the following measures:
•
•
•
•
reorient the receiving antenna
relocate the computer with respect to the receiver
move the computer away from the receiver
plug the computer into a different outlet so that computer
and receiver are on
different
branch
circuits.
the user should consult the dealer or an experienced radio / television technician for
additional suggestions. The user may find the following booklet prepared by the Federal Communications Commission helpful: How to Identify and Resolve Radio-TV Interference Problems. This
booklet is available from the United States Government Printing Office, Washington, DC 20402,
If necessary,
Stock No. 004-000-0035-4.
TRS-80 Disk Extended Color
Color Computer Disk System:
Copyright © 1981 Tandy Corporation,
Fort Worth, Texas 76102, U.S.A.
BASIC System Software: Copyright ©
1981 Tandy Corporation and Microsoft.
All rights reserved.
The system software in the disk system
All rights reserved.
retained in a read-only
memory (ROM) format. All portions of this system software,
whether in the
format or other source code format, and the
circuitry, are copyrighted and are the proprietary and trade
secret information of Tandy Corporation and Microsoft. Use,
reproduction, or publication of any portion of this material, without the prior written authorization by Tandy Corporation, is
ROM
is
ROM
Reproduction or use, without express written permission from
Tandy Corporation, of any portion of this manual, is prohibited.
While reasonable efforts have been taken in the preparation of the
manual to assure its accuracy, Tandy Corporation assumes no
liability resulting from any errors or omissions in this manual or
from the use of the information obtained herein.
strictly prohibited.
98765432
Printed in the United States of America
10
WHY A DISK IS FAST
A disk is
for storing your information. The precise
term for it is a "mini-diskette," but in this book we'll
just call it a disk. It is far superior to tape, the other
alternative.
A
disk is especially designed to "file" your information so the Computer can immediately get the
information you want. For you, this means storing
and retrieving information
which takes a long
time on tape
efficiently.
— now
—
can be done quickly and
ABOUT THIS BOOK
how to read and write on a disk. When
we had three different groups of people in
This book shows
we wrote
mind.
it,
The first group includes all of you accomplished Radio
Shack programmers. We are referring, of course, to
those of you who learned to program by reading Getting
Started with Color BASIC and Going Ahead with
Extended Color BASIC. You'll find Sections I and II of
this book another delightful experience. If you're especially
ambitious, you'll also enjoy Section
III.
about those of you who have never programmed
and intend to use application programs written by
Radio Shack or someone else? You're the second
group. Read Chapter 1, "To Get Started." Then, if you're
interested in and want to take full advantage of your
disk system, go on to Section I, "The Disk." You don't
need to know anything about programming to under-
How
stand
it.
you don't belong to either of these two groups, you
probably already know how to program disk systems.
Read Chapter 1 first to find out how to connect your system. Then, go straight to the "BASIC Summary" at the
end of the book. Everything is summarized there with
page number references, for the things you want to read
more about.
If
TABLE OF CONTENTS
Chapter
II
To Get Started
1
SECTION I. The Disk
Chapter 21 Meet Your Disk
Chapter 31 A Garbled Up Disk
Chapter 41 You're the Boss
7
13
19
SECTION II. The Disk Program
51
One Thing
Chapter
61
(Sequential Access to a File)
Changing It All Around
(Updating a Sequential Access File)
29
Chapter
71
A More Direct Approach
33
Chapter
at a
Time
25
(Direct Access to a File)
SECTION III. The Refined Disk Program
Chapter 81 How Much Can One Disk Hold?
Chapter 91
(What the Computer Writes in a Disk File)
Trimming the Fat Out of Direct Access
(Formatting a Direct Access File)
Chapter 101 Shuffling Disk Files
(Merging Programs, Using Many File Buffers)
Chapter 111 Technical Information
41
47
53
57
(Machine-Language Input/Output)
Appendixes
Appendix Al Programming Exercise Answers
Appendix Bl Chapter Checkpoint Answers
Appendix CI Sample Programs
Appendix Dl ASCII Character Codes
Appendix El Memory Map
Appendix Fl Specifications
Appendix Gl Error Messages
Appendix HI BASIC Summary
64
66
68
79
81
82
83
85
i
TO GET STARTED
Before you install your Disk System, you need to
connect your Color Computer to the T.V. If you
haven't done it yet, refer to the Color
Operation Manual.
Note: the dotted
Computer
A.
CONNECT DISK SYSTEM
is easy to connect. Do it
you turn on your Computer by simply
plugging in all the parts:
Your Disk System
before
lines represent tke connection of additional
add-on drive
TO GET STARTED
1.
Connect Plug B of your Disk Cable to
the plug on back of your Disk Drive.
Plug in the power cord to a standard
Connect the Disk Interface to the plug
in the opening of your Computer.
IMPORTANT NOTICE: YOUR COMPUTER MUST BE OFF WHEN YOU
CONNECT THE DISK INTERFACE.
OTHERWISE, YOU COULD DAMAGE
(120 V) electrical outlet.
THE SYSTEM.
If
You Have Additional
Disk Drives
you have more than one disk drive, do
step 3 differently. Connect the 26-3023
If
Drive to the inside plug (Plug B). If you
have more 26-3023 Drives and an expanded
2.
Connect Plug
cable, connect these Drives to inside plugs
A of the Disk Cable to the
also.
Disk Interface.
The 26-3029 Drive must be connected
to the last
plug in the
number your
You'll also need to
Number them from
with Drive
B
0.
B.
is
drive
Drives.
the inside out. starting
The Drive connected
B is drive number 0,
Plug C
series.
Plug
the Drive connected to
number
1
,
to
etc.
POWER IT UP
Since your Disk System has several parts, you
need to turn ON several buttons to power-up
the entire system;
ON your television set.
•
Turn
•
Select
•
Set the antenna switch on the
Channel 3 or
4.
TV.
to
COMPUTER.
•
Turn
ON
the Computer. (The power buton the back left-hand side of your
ton is
keyboard.)
TO GET STARTED
•
ON the Disk Drives. (The
buttons are on the rear.)
Turn
power
Gently insert the disk until
Close the
Have you turned ON all the buttons? This
message should appear on your screen:
DISK EXTENDED COLOR BASIC
stops-
DRIVE DOOR.
Note: You cannot use a blank disk until you "format"
it. The next chapter shows how.
v.r,
COPYRIGHT (C) 1981 BY TANDY
UNDER LICENSE FROM MICROSOFT
Now
two numbers specifying which version
and release you have.)
(v.r, is
If not,
it
that your system
connected and poweredBegin what? Well, if you
want to know how to take full advantage of your
disk system, we'd like you to read Section I. You'll
find a lot of helpful information there.
is
up, you're ready to begin.
turn off the Computer, check your con-
nections,
and power
it
up again.
you're in a hurry to run your application prothat's O.K., too. But please read these
guidelines first. We want your disks to last a long
If
gram,
C.
INSERT A DISK
time.
After powering the system up, you can insert
a disk. If you plan to go through Section I, use
the blank, unformatted disk which comes
with your disk system. Otherwise, you can
insert your "application program" disk, (If
you have more than one drive, insert, the disk
•
When
storing the disk, keep
it
in its storage
envelope
•
•
Do
not turn the system
disk in the drive.
Keep disks away from magnetic
(transformers,
in drive 0).
ON or OFF with the
AC
fields
motors, magnets, TVs,
radios, etc.)
Handle disks by the jacket only. Don't touch
any of the exposed surfaces, even to dust
them.
•
^
•
of direct sunlight
and away
from heat.
Avoid contamination of disks with cigarette
ashes, dust, or other particles.
Use a felt-tipped pen only to write on the
disk label.
•
•
Keep disks out
Open the DRIVE DOOR.
Position the disk with the notch on top,
as we show in the picture above.
Store disks upright in a vertical
file.
Note: Your disk drives should be on the right side of
your television set.
IMPORTANT NOTE!
you have an earlier model of the Color Computer, the disk system might cause
interference on your screen. If so, bring the computer to a Radio Shack Repair
Center for additional grounding connections. (There will be no charge for this
If
service.)
SECTION I
TMH2
BMK
A
disk is like a filing system. Everything on
organized.
it is
This makes disks easy to work with. In this section,
we'll show you how your Computer organizes
everything on your disk, and
advantage of this.
We
how you can
take
invite all of you to read this section. You don't
need to know anything about computers to under-
stand
it.
MEET YOUR DISK
A LOOK INSIDE OF IT
Note: To be precise, there are 35 tracks on a disk, 18
sectors in each track, 256 bytes in each sector, and 8;
bits in
Although your disk looks like a record, it is really
more like a multitude of tiny magnets. One disk
can hold more than a million magnetic charges.
1,290,240 of them are for your information. That's
what we mean when we say a disk will hold
1,290,240 bits or 161,280 bytes of information
(there are eight bits in a byte).
Some
of these bits are magnetically charged
some
aren't.
and
The pattern formed by these mag-
netic charges is what's important. It
forms a code
each
byte.
After creating this filing system, the Computer
puts a master directory on the disk. There, it
indexes where everything is stored. Whenever it
a program, a mailing
wants to find something
it uses the directory to find the
list, your letters
tracks and sectors where it is stored. It can then
go directly to that spot.
—
—
This whole filing system is, of course, what makes
the disk system so powerful. You can quickly find
anything you have stored on your disk.
which the Computer can read.
With more than a million of these bits on a disk,
you can appreciate how your Computer must organize them in order to find anything. It does this by
building a massive disk filing system. First it creates the file cabinets by dividing your disk into
"tracks." Then it puts drawers in the cabinets by
dividing each track into "sectors"
not finished yet
and each byte
.
is
.
.
each sector
divided into
is
Then
.
.
.
FORMATTING A DISK
we're
divided into bytes
bits.
Putting this filing system on your disk is called
it. The last thing we had you do in
Chapter 1 was to insert an "unformatted" disk.
Before you can use it, you must format it into
tracks and sectors.
"formatting"
How do you format a disk? Well why not just tell
your Computer to do it? If you went through the
.
.
.
MEET YOUR OISK
instructions in the last chapter, you have already
powered-up your system and inserted an "unformatted" disk. Be sure you have your DRIVE
DOOR closed.
Now, type any
ing the appropriate drive
number
for drive 0.
example, DSKINI1 formats the disk in drive
For
1.
PUTTING A FILE ON YOUR DISK
letters
and press the
(ENTER)
key so
A
that:
OK
the last line on your screen. (OK means "OK,
I'm ready to do something") Now type what you
—
can contain any kind of information
a program, a mailing list, an essay, some checks.
We'll make your first file contain a BASIC program, since it's the simplest thing to store.
disk
file
is
want
it
to do. Type:
you don't know how to program in BASIC, type
program anyway. Type each line exactly as it
is shown below. Press the (ENTER) key after typing
If
this
DSKINI0
each
and press the
CENTER) key.
Type:
line.
Your Computer might
print ?SN ERROR. If so, don't let this bother you.
This "error" simply means you typed the command incorrectly. Type it again.
PRINT "STORE ME IN
DISK FILE" (ENTER)
20 PRINT "AND YOU'LL NEUER LOSE ME" (ENTER]
10
Finished?
Whenever anything goes wrong, the Computer
will let you know immediately with an error message. This way you can correct the error right
away. If you get any other error message besides
SN, look it up in Appendix G. It lists all the error
messages and what to do about them.
After typing DSKINI0
(ENTER),
come
on.
Sounds promising
you'll
and
noises from your disk drive
.
its
hear some
red light will
.
After about 40 seconds of noises, your Computer
will then print OK. It has finished formatting the
disk.
You can now store your information.
A
Now that you've typed the program into
your Computer's "memory," you can put it on a
To do this, we'll call it a file and name the file
"SIMPLE/PRO" (all files have a name). To store it,
disk.
type:
SAME "SIMPLE/PRO"
[ENTER)
Once you press the (ENTER) key, your disk drive
whirr and grind some and the red light on it
come on. Your Computer is:
•
finding a place on the disk to store
will
will
"SIMPLE/
PRO"
•
telling the directory
where "SIMPLE/PRO"
will
be stored.
Remember that you cannot store anything on an
unformatted disk. Whenever you get a new, unformatted disk, you need to format
use
it
•
storing
"SIMPLE/PRO" on your
disk.
before you can
Note: The Computer stores
it.
way
Later on, you might not remember if a disk has
been formatted. A quick way to find out is to check
the directory. (See "Checking the Master Directory" at the end of this Chapter.) If you get an
"error message'' the disk is not formatted.
it
"SIMPLEPRO" the same
stores everything else
— in
a code of magnetic
charges.
this point, we must warn you about something.
Do not remove your disk while you see the red
At
It might disyou are presently storing, but of other things you have stored
on the disk.
light on. This confuses the
Computer.
tort the contents, not only of the file
Note:
It
does no
common way
harm
to erase
to
reformat a disk. Thin
everything on
it.
have more than one disk drive, you can format a disk in one of the other drives by substitutIf you
8
When
your Computer finishes storing "SIMPLE/
PRO," it prints the OK message on your screen.
MEET YOUR DISK
Note: Upgrading your tape system? Note the difference: SAVE stores a program on disk; CSAVE stores
RUN CENTER)
LIST ENTER)
[
on tape
it
I
NEW erased the program from memory,
Although
MEMORY VS DISK STORAGE
To those of you new to computers, we would
expound a little on computer "memory."
already
heading
know what
it is,
skip
down
— "Loading a File from Disk!'
like to
If
to the
you
next
Whenever you type a BASIC program line and
press (ENTER) the Computer automatically puts it
in its memory. Once it's in memory, you can do
"SIMPLE/PRO" is still safely stored on your disk.
You can put "SIMPLE/PRO" back into memory
anytime you want by "loading" it from disk. To do
this,
it.
PRO"
is
stored.
going to that location on the disk and reading the
contents of "SIMPLE/PRO."
putting
•
Your Computer PRINTs:
.
reading the directory to find where "SIMPLE/
•
For example, type:
RUN [INTER]
[ENTER]
Again, you'll hear some promising noises from
your disk drive. The Computer is:
,
things with
type LOAD "SIMPLE/PRO"
"SIMPLE/PRO"
into its
memory.
You can now type one or both of these commands
to verify that "SIMPLE/PRO" is in memory:
STORE ME IN ft DISK FILE
AND YOU'LL NEVER LOSE ME
LIST (ENTER)
RUN (ENTER
)
To
list
the program as you have
it
above, type:
LIST dNTEFD
where the Computer keeps track of
everything you tell it. Once you put your information in its memory, the Computer can print it,
rearrange it, combine it, or any of the other things
you want done with it.
Memory
is
Later on, you'll probably want to put other things,
such as your mailing list, in memory. To do this,
you'll need to write or purchase a program written
especially for that application. This "application
program" will get the Computer to put the information you type into memory.
The important thing
to
remember about memory
that turning off your Computer erases it. Once
memory has been erased, there's no way to recover
it. The only way to keep a permanent copy of what
you've typed into memory is by storing it on a disk
is
(or tape).
LOADING A FILE FROM DISK
[ENTER) to erase everything in your Commemory. To make sure everything's erased,
you can type one or both of these commands:
MORE ABOUT MEMORY VS DISK
STORAGE
Type NEW
puter's
If you're still
a
little
and what's on your
fuzzy about what's in
memory
disk, try this exercise. You've
9
MEET YOUR DISK
just
into
LOADed a program called "SIMPLE/PRO"
memory, right? Change it by typing:
NEW
[INTEH]
PRINT "CHANGED FILE"
10
SfliJE
"SIMPLE/PRO"
(ENTER]
(ENTER)
20 PRINT "WITH THIS CHANGE" (ENTER]
LIST the program again to see that the Computer
has registered the changed line 20 in its memory:
FILENAMES
You have already used one filename:
10
PRINT "STORE ME IN A DISK FILE"
"SIMPLE/PRO"
"WITH THIS CHANGE"
20 PRINT
Store it in a different
"CHANGE" [ENTER) ...
file
by typing SAME
If
you did our memory
"CHANGE"
PRO" and "CHANGE" What do you think each
We
of
them contains? Try LOADing and then LISTing
both of them.
—
gave the name "SIMPLE" an "extension"
"PRO." You must give everything you store a
name. The extension is up to you. It's optional.
What names can you
[Note: You don't need to type NEW (EBTER] before LOADnew program
disk storage exercise,
you've used a second filename:
Hear the whirring and grinding from your disk
drive? You have two disk files now: "SIMPLE/
memory. The Computer will
automatically erase everything you presently have in
memory before LOADing the new program.
ing a
vs.
into
give your
files?
you want, as long as you follow these
1.
Anything
rules:
The name may have no more than eight
characters.
??????????????????????????????????????????????????
"CHANGE"
you give it an extension, the extension may
have no more than three characters.
2. If
contains the changed program:
3.
PRINT "STORE ME IN A DISK FILE"
20 PRINT "WITH THIS CHANGE"
10
However, "SIMPLE/PRO"
There must be a slash (/) or a period
the name and the extension.
PRINT "STORE ME IN
contains the old
Note: You may use any characters in the filename
except a colon (:) or a zero (0). You can only use a
slash (I) or a period (.) to separate the name from th
DISK FILE"
20 PRINT "AND YOU'LL NEUER LOSE ME"
A
extension.
The only way to change a disk file is by
well,
you answer it. How can you make the file "SIM.
PLE/PRO"
10
.
.
contain:
FILENAMES WHEN YOU HAVE
MORE THAN ONE DRIVE
PRINT "CHANGED FILE"
have more than one disk drive, you can add
the drive number to your filename. (Remember,
you numbered all of your drives in Chapter 1 ), For
If you
??????????????????????????????????????????????????
Answer:
example:
T>pe:
LOAD "SIMPLE/PRO:!"
10
between
Fair enough? Good.
still
program:
10
(.)
MEET YOUR DISK
LOADs "SIMPLE/PRO" from
number
1.
BASIC program
the disk in drive
Or
data created by a BASIC program
data created by a machine-language program
a source program created by an editor/
assembler
1
2
"CHANGE:1"
SAVE
3
stores
"CHANGE"
If you
don't include a drive
assumes you want
on the disk in drive number
it
1.
number, the Computer
to use drive
number
Note: An eriitnrtasxembler ix a program you can buy
to help you create a machine-language program.
0.
The fourth column
CHECKING THE MASTER
DIRECTORY
stored
lists
the format the
file is
in:
A ASCII
As we've said earlier, a disk has a master directory
which the Computer can use to find out what's on
the disk. If the Computer can use it, you can use
tEHTEH
it, too. TypeDlR
).
B
Binary
We'll explain the
meaning
of this in Chapter 10.
fifth column shows how many "granules" each
consumes. "SIMPLE/PRO" and "CHANGE/
BAS" consume one granule each. (The Computer
The
The Computer prints information on all the
you have stored on your disk. If the only
files
files
you've stored so far are
"SIMPLE/PRO" and
"CHANGE," the Computer
prints this:
file
uses "granules" to allocate file space on a disk.
disk contains 68 of these "granules").
If
SIMPLE
PRO
CHANGE
BAS
you have disks inserted and formatted in other
you can check their directories also. For
drives,
and second columns list the filename.
first is the name and the second is the extension. Notice that even though you did not assign
"CHANGE" an extension when you stored it, the
Computer still assigned it the extension "BAS."
The
The
A
instance DIRl fjNTEl) displays the directory of the
disk in drive number 1.
first
The Computer prefers for all filenames to have an
extension. If you do not give a file an extension
when you store it, the Computer will automatically assign
Impressed? You'll be even more impressed when
you see how fast you can SAVE and LOAD long
programs. But before you get too involved, please
read the next chapter. It'll help ensure that your
experience with your Disk System is smooth and
enjoyable.
Note: To stop the directory from
one of these extensions:
SHIFT)
scrolling, press the
and (W) keys simultaneously. Then press
MB®.
"BAS"
"DAT"
if it's
"BIN"
if it's
if it's
a BASIC program
data (such as names, numbers,
a machine-language program)
CHAPTER CHECKPOINT
etc.)
Note: A machine-language program is a highly technical program which talks directly to the Computer.
1.
Why can't you store things on an unformat-
2.
ted disk?
What is the disk's directory?
3.
4.
The next three columns contain information
which is primarily for the use of technical programmers. Interested? Then read on
.
5.
What is a disk Sle?
What is the difference between what's in
memory and what's on the disk?
How do you change the contents of a disk
Sie?
.
Do you
The
third
column
lists
the type of file
it is:
like quizzes?
The answers are
in
Appendix B.
11
A GARBLED UP DISK
With more than a million magnetic charges on a
disk, you can see why it is so delicate. Any small
particle such as a piece of dust or a cigarette ash
could distort its contents.
A
scratch could ruin
why we suggest that you keep
its envelope when you're not using it
That's
felt-tipped
pen when labeling
... If you're in the middle of running a disk program, and need to switch disks, we
recommend that you type this command:
it.
the disk in
— preferably
upright in a dust-free container
One more thing
— and only use a
it.
To help protect the disk, we encased most of it in
a black plastic container. However, as you can see,
we weren't able to cover the entire disk. The mid-
UNLOAD
before you switch disks. This
might put this information on the wrong disk and
garble the contents of both disks.
and two other small areas are exposed
Computer can read and write to it. Be care-
touch the exposed areas, not even to dust
them. They scratch very easily.
Note for BASIC programmers; All open files must
be closed before switching disks,
open
ful not to
Since the disk
is
made up
way
the Computer
can put its closing information on the proper disk.
If you don't type this command, the Computer
dle section
so the
fIRTER)
:
UNLOAD closes al,'
files.
BACK IT UP
of magnetic charges,
putting it next to another magnetic device, such as
your television set, could completely rearrange its
magnetic code. Your information would be lost.
Heat and sunlight could have the same effect. The
same goes for turning your Computer ON or OFF
while the disk is in its drive.
All of this might sound a
if
little gloomy to you, even
you are a careful person. This is why we've
command called BACKUP. BACKUP
enable you to make a duplicate or "backup"
included a
will
copy of any of your disks by copying the contents
of one disk to another.
13
A GARGLED UP DISK
We
suggest you regularly make a backup copy of
any disk which contains important programs or
data. This way you won't have to worry about los-
After
ing them.
INSERT DESTINATION DISKETTE AND PRESS
can actually get worn out from
a good idea to make a backup
too
copy of an old disk on a new, unused disk. Then,
when the Computer begins having its problems
reading and writing to the disk, you can use your
backup copy.
Also, since a disk
much
use,
it's
of
making some
noise while
it
reads a portion
your "source" disk, the Computer
will print:
Take the "source" disk out and insert the "destination" disk. Shut the DRIVE DOOR. Then press
(ENTER). You'll hear some more noise while the
Computer "writes" some things on the "destination" disk.
Then
it
will print:
INSERT SOURCE DISKETTE AND PRESS
Want
to
make
The Computer
Your "source" disk
to duplicate.
— This
will
have you continue switching
disks until you have copied everything from your
is
the disk you
Use any disk which has
files
want
stored
on it. If you're just getting started, use the disk
which you worked with in Chapter 2.
2.
CENTER)
a backup copy? Get your two disks
ready:
1.
CENTER;
—
Your "destination" disk This is the disk which
you want to be your duplicate copy. Use a blank
disk or, if you've been using your disk system
for a while, use any disk which contains files
you won't need anymore.
source disk. During this process,
make
sure you
and insert it properly. When
the Computer will print the OK
insert the correct disk
you've finished,
message on your screen.
To make sure BACKUP worked, you can insert
your "destination" disk and type D I R (ENTER)
.
Backup with More Than One Disk
Drive
\'ote Everything preciously on your destination dish
:
it-
ill
be erased.
It
will be replaced with all the data
i
your source disk.
your "destination" disk is blank, you must
first format it. Remember how? Insert it in your
disk drive, shut the door, and type DSKINio
If
you have more than one disk drive, backing up
a disk is much easier. It will take about two
If
minutes.
tination" disk in drive 1
CENTER)
and your "des(Chapter 1 shows how to
Insert your "source" disk in drive
.
label your drives).
Then
type:
Now make the backup copy. The procedure you follow depends on whether you have one disk drive
BACKUP
TO
i
(
ENTER)
or several.
You will hear some noise as the Computer backs
up the contents of the disk in drive to the disk in
Backup with One Disk Drive
you have only one disk drive, it will take you
about five minutes to make a backup copy. Insert
your "source" disk in your disk drive and shut the
DRIVE DOOR. Type OIR (ENTER) to see which files
you will be copying.
If
start the
BACKUP
14
will print the OK
1.
sage.
You can then make sure
by typing DIRi
You can use
CENTER)
it
BACKUP
mes-
worked
.
different drives,
if
you want. For
instance:
BACKUP
Now
When it's finished,
drive
1
TO
(INTER)
backup procedures. Type:
CENTER)
backs up the contents of the disk in drive
one in drive 0.
1 to
the
A GARBLED UP DISK
SALVAGE IT
You have Problems During
Backup
If
We
you get an error message while you're backing
up a disk, it's probably because you've inserted the
disk incorrectly or there is something wrong with
If
the disk. At the end of this chapter, we discuss
error messages to help you determine the problem. If you have a bad disk, you will need to try
BACKUP with another disk.
After determining the problem, press the
RESET
button to get out of BACKUP. Then start the
BACKUP procedure all over again.
mentioned earlier that a disk doesn't live foryou throw away an old disk, though,
see if you can salvage it. You may be able to do this
by formatting it all over again as if it were a blank
ever. Before
disk.
Although
this might salvage the disk, it will not
salvage the contents of the disk. By reformatting
the disk, you will erase everything on it. However,
it will save you the expense of purchasing a new
disk.
you get an 10 error while trying to reformat it
Messages" at the end of this chapter),
the disk has probably reached its limit. If you have
a "bulk-eraser," you can try "bulk-erasing" the
disk and reformatting it. Otherwise, throw it
away and use another one.
If
I
Note: The RESET button is ore the right-hand rear
of your Computer (when you're facing it).
"WRITE" PROTECT IT
(see "Error
"Write-protecting" is one more way to protect your
disk files. Let's assume you have a disk which con-
—
some valuable information
such as a good
program
which you don't plan to change. You
plan to "read" its contents daily, by loading the
program into memory, yet you never plan to
"write" (store information) on it.
tains
—
Putting a
little
Note:Ifyou have more than one disk drive, you might
be able to COPY some of the files on a bad disk to a
good disk. We discuss COPY in the next chapter.
gummed
label on the
WRITE-
I
VERIFY IT
The Computer "writes" data on your disk at a very
fast speed. In almost all cases, it can do this
flawlessly.
PROTECT NOTCH
will enable the Computer to
read the disk, but not to write on it. Any gummed
There is one which comes with your
new, unformatted disk:
label will do.
There might be times when you want to be absolutely certain that there are no flaws in what the
Computer is writing. If so, you can turn ON the
Computer's VERIFY command. To do this, type:
VERIFY ON
(ENTER)
Now
the Computer will notify you, whenever it is
writing on a disk, if there are any flaws in what it
is writing. The only catch is that it will take twice
as long for the Computer to write.
For example,
let's
assume you now make
a
BACKUP
copy of your disk. The Computer will
take twice as long doing this, but will notify you
if
there
This
turn
is
a flaw in the
BACKUP copy.
VERIFY command will remain ON until
it off.
To do
VERIFY OFF
you
this, type:
(ENTER)
15
A GARBLED UP DISK
WHEN THINGS GO WRONG
10
— The Computer
or Outputting information to the disk.
(1)
Your Computer realizes nobody's perfect. When
you make a mistake, it'll try to notify you immediately and tell you what kind of "error" you
(2)
Make
sure there is a disk inserted
properly in the indicated drive and the
drive door is closed.
If you still get this error, there might
be something wrong with your disk.
Try reinserting the disk first. Then try
using a different one or reformatting
it. (Remember that reformatting a
made.
You've probably already been notified that you
made a "SN ERROR." If you haven't, type DIIR
[ENTER)
having trouble Inputting
is
disk erases
its contents.)
you still get this error, you probably
have a problem with the Computer
System itself. Call the Radio Shack
(3) If
deliberately mispelling DIR.
Repair Center.
SN means "Syntax" error. It's the Computer's way
you that "DIIR" doesn't make sense to it.
The word is not in its vocabulary. An SN error
usually means you made a typographical error.
of telling
NE
— You are trying to RENAME a
file
(discussed
in the next chapter) to a filename
TM
which
Already Exists.
DF
— The Disk you are trying to store your
is
DN
Full.
Use another
You
UF
— You used an unacceptable format to name
Chapter explains which
File Names are acceptable to the Computer.
FS
— There
file.
/0
file.
The
last
WP
— You are trying to store information on a disk
which
Write Protected. Either take the
ferent disk. If your disk is not Write Protected, then there is an input/output problem. See 10 for instructions on what to do
about
something wrong with your disk
See 10 for instructions on what to do.
is
label off the write protect notch or use a dif-
this.
is
— Technically, this means you have asked the
to divide a number by 0, which is
impossible. However, you might also get
this error when you don't enclose a filename
in quotation marks.
Computer
16
— You will only get the error when you have
ON
you do not
number when using DSKINI
or BACKUP. If you have only one drive
with these two commands
specify drive
(DSKINIO or BACKUP 0)
your
is caused by a program
which mixes "strings" with "numbers."
However, you might get this error if you
and are writing
the VERIFY command
to a disk. The Computer is informing you
that there is a flaw in what it wrote. See 10
for instructions on what to do.
specify a drive
FN
— Technically this
on
disk.
will also get this error if
you
don't enclose a filename in quotation marks.
file
— You are using a Drive Number higher than
3.
file
want. Check the disk's directory to see if the
file is there. If you have more than one disk
drive, you might not have included the
appropriate drive number in the filename. If
you are using COPY, KILL, or RENAME
(discussed in the next chapter), you might
have left off the extension.
Here are some other error messages you're likely
to get with your disk system:
AE
— The Computer can't find the disk
All other errors you might get are errors in the
program you are using. If you did not write the
program and get one of these errors, you need to
contact the people who wrote it. If you did write it,
check Appendix G, where you'll find an explanation of all the error messages.
A GARBLED UP DISK
your disk might seem a little awkward
should. You've spent most of your life
protecting your papers and now you're dealing
Caring
at
for
first. It
with a different medium.
\Z
1.
Why
or
After awhile, though, protecting your disk from
dust and magnetic devices will seem as natural to
you as protecting your papers from a strong gust
of wind. And once you get used to keeping your
disk "ungarbled," you'll never want to go back to
pencils and paper again (we hope).
2.
CHAPTER CHECKPOINT
shouldn't you turn the Computer
ON
OFF while the disk is in its drive?
What type of pen can you use
to write
on
the disk's label?
3.
4.
5.
What are error messages?
What does write-protect mean?
you do it?
How do you backup a disk?
How do
17
YOU'RE THE BOSS
Thanks
to
command
your disk filing system, you are able to
the Computer to do a lot of very helpful
things. For example,
you can rename a
file. If
you've taken your formatted disk out, re-insert
RENAME is easy to use, but there is one thing you
need
sion
to remember. Save a file without an extenand then try to rename it. Type:
it.
PRINT "FILE NUMESER TWO
"AFILE" (E NTER)
rei*JAME "AFILE" TO
BFILE"
13
Note: Can't remember if your disk's formatted?
Check the directory by typing DIB (EBBS) (or DIBB or
DIRi if you have more than one drive).
Type this to put a
PRINT "THIS
file
A
FILE"
SAVE "ORIGINAL/NAM"
(ENTER)
10
IS
.
(ENTER)
(ENTER)
NE error.
This means
file.
When you RENAME
(ENTER)
Check the directory to see that the program file is
stored on your disk under the name ''ORIGINAL/
NAM" Now rename it. Type:
.
'
The Computer gives you an
the Computer can't find the
on your disk:
'
Sfli IE
a file, you must type in the
complete name of the file so that the Computer can
find it. This includes the name and the extension.
As we discussed in Chapter 2, whenever you SAVE
a file the Computer will make sure it has an extension. If you don't assign it one, the Computer will.
.
RENAME "ORIGINAL/NAM"
TO
"NEW/NAM"
(ENTER)
Hear the disk drive working? Check your DIRectory again. If you'd like, LOAD and LIST "NEW/
NAM." The program file has simply been renamed.
Everything else
is
the same.
You can check the directory to find out the extension of "AFILE." Then RENAME it. Type:
RENAME "AFILE/BAS" TO "BFILE/BAS"
(ENTER)
you're renaming a program file, be sure that
your new filename has an extension. In other
If
19
YOURE THE BOSS
words, don't type RENAME "AFILE/BAS" TO "BFILE"
better do one of the following: start using another
The Computer would RENAME the file,
however "BFILE" would not have an extension.
This would cause a problem when you try to
LOAD "BFILE," since all files you LOAD must
disk or "KILL"
have an extension.
your disk
This might seem to conflict with what we said
above. You were able to SAVE "AFILE" without
assigning it an extension because the Computer
automatically assigned it one when it saved it.
RENAME works differently The Computer won't
automatically assign an extension to a program
you rename.
KILL "CHANGE/BAS"
[INTER)
.
KILLing
one way
is
extension. This
is
toLOAD "BFILE" wlthoutan
by indicating that there
Is
why we
you always assign
it
suggest,
an
in
Chapter 2, type:
(ENTER)
ing on your disk. "CHANGE/BAS" is no longer on
your disk. The space it occupied is now FREE for
new files.
we had
to
in order to
include
KILL
it.
CHANGE'S
extension,
The Computer
insists
you type the complete filename as one extra pre-
(ERIEE). This is awkwhen renaming a file,
sion by typing LOAD "BFILE/"
ward. That's
does just what the name
if you put "CHANGE" on
file
Check your directory and the FREE space remain-
"BAS"
no exten-
a disk
files.
implies. For example,
Notice,
NotesThere
some of your disk
want
caution. It doesn't
to
KILL
a
file
you don't
want destroyed.
extension.
Note: Want to get very technical? The data will still
exist on the disk after you KILL a file. However, the
Multi-Disk Drives
Computer won't know
RENAME a file on another disk drive,
simply by typing the appropriate drive number.
Insert a formatted disk in drive 1 {if it's not
already inserted). Store a file on it:
all reference to
You can
it's
there because
KILL
deletes
in the dish's directory. Therefore,
it
no longer be able to access the data and the
Computer will be able to write over it with a new file.
you'll
Multi-Disk Drives
10
PRINT "ACCOUNTING"
SAME "0LDACC/DAT:1"
and
RENAME
it
1
ENTER]
(INTER]
You can use FREE and KILL on other disk drives,
as you can with RENAME, by typing the drive
by typing:
number. Examples:
RENAME "0LDACC/DAT:1" TO "NEWACC/DAT
:
1"
PRINT FREE(l) INTER)
(enteB)
Nate: If you want your renamed file on a different
drive, you can't use RENAME. Use COPY.
tells
I
ALMOST OUT OF DISK SPACE?
Sooner or later, you'll want to know how
space you have left on your disk. Type:
PRINT FREE(0)
much
FREE
space
is
on the disk
in
1.
KILL "NEWACC/DAT:
deletes
1"
(ENTER]
"NEWACC/DAT"
from the disk in drive
1.
COMMANDS
of
FREE
"gran-
There are 68 granules in all. If the Computer tells
you that you have only one granule FREE, you'd
20
you how much
SPECIAL MULTI-DRIVE
(ENTER]
The Computer prints the number
ules" remaining on your disk.
drive
In the rest of this chapter, we'll talk about two
commands which you can use if you have a multidrive system. If you don't have one, go on to
"Chapter Checkpoint" at the end of this chapter.
YOU'RE THE BOSS
The
first
point,
drive
one copies a disk
have a program
file.
file
You
should, at this
stored in the disk in
named "NEW/NAM." Make
a
COPY
of
This makes the Computer assume you want
use DRIVE 1, unless you tell it otherwise.
it.
TO
"NEW/NAM:
1"
(ENTER).
you want, you can rename the file when you
copy it. For instance, COPY " NEW/NAM 1" TO
"ANOTHER/NAM :0" (ENTER) copies "NEW/NAM"
from the disk in drive 1 to the file "ANOTHER/
If
DRIVE
assumption, the Computer will respond differently to the same command. By typing SAUE "ANYTHING/EX" (ENTER) the
Computer will store "ANYTHING/EX" on the
disk in drive 1. You would now need to type SAVE
"ANYTHING/EX 0" (ENTER] to SAVE it in drive 0.
After changing this
Type:
COPY "NEW/NAM:0"
it to
,
:
:
NAM"
on the disk in drive
0.
The second command changes the drive number
the Computer goes to if you do not specify one. Up
to now, this has been drive 0. For example, by typing SAOE "ANYTHING/EX" (ENTER), the Computer
will assume you want to use drive 0. It will then
SAVE this program on the disk in drive 0.
CHAPTER CHECKPOINT
1.
How do you rename
have
2.
3.
a
file?
Why do you
to specify the file's extension?
What can you do when you think you're
running out of disk space?
more than one disk drive and
do not specify the drive number, which
drive will the Computer use? How can you
change this?
If you have
To change this assumption, you can type:
DRIVE
1
CENTER)
Congratulations. You are now a bonafide disk system operator. You should now have a good understanding of how your disk system works and how
to take full advantage of it.
21
SECTION II
TTDDIE
IMSBS IPMDCSIEA
Storing a BASIC program is easy. You only need to
use the SAVE command. Storing data takes a little
more effort. You need a program.
Some of you might prefer to buy a ready-made proyou want more control and are
willing to invest a little time, you will enjoy writing
your own.
gram. However,
if
In this section, we'll show you how to write a BASIC
program which stores data on disk. We are assuming you already know some BASIC. If you don't,
read Section I of Getting Started with Color BASIC.
It will give you all the background you need.
23
ONE THING AT A TIME
(Sequential Access to a File)
A
is simple. There's only one way to put data
and one way to read it off. A disk is more complex. There are several ways to "file" your data on
on
tape
it
it.
and the next, we'll show how to
program which stores data in a "sequential
access" disk file. It's the simplest file to create and
In this chapter
would then index where, on the
is
disk,
"FRIENDS"
stored.
There is, of course, a good reason for all of this.
Using the disk filing system, the Computer will be
able to immediately find any file on the disk.
write a
is
actually very similar to a tape "file" In Chapter
7,
we'll introduce "direct access,"
of disk
WRITING A DISK FILE
an alternate type
Let's
file.
assume you want
your checks on
to "write"
the disk:
In
showing how
to store things
quently use the words disk
file
on disk,
we'll fre-
and disk
directory.
CHECKS
DR. HORN
SAFEWAY
We discussed these concepts in Chapter 2, but we'll
summarize them now.
Everything you store on disk must go in a disk file
and be assigned a filename. Your Computer will
index the location of the disk file in the disk's
directory. For example, if you want to store the
names of your friends, you could put them in a
disk
file
named "FRIENDS'' Your
disk's directory
FIRST CHRISTIAN
OFFICE SUPPLY
Weil
start with a short, simple
writes the first check, "DR.
program which
HORN|' on
the disk.
Insert a formatted disk in your disk drive. (If you
have more than one disk drive, use drive
0.)
25
ONE THING AT A TIME
Note: Chapter 2 shows
DIB
JN.TEE- ifyou can't
matted.) Chapter
1
how
to
format a
very important that you CLOSE communication with buffer #1. Why? Well, let's leave
buffer #1 OPEN. Delete line 30 and RUN the pro-
(Type
di-sk.
remember whether a disk
is
It is
for-
explains the drive numbers.
gram
Then
several times.
type:
The program appears to work the same every time
OPEN "0"t *lr "CHECKS/DAT"
20 WRITE »1
"DR. HORN"
38 CLOSE »1
10
you
RUN
it.
This
ers you've left
RUN
the program. You'll hear the motor of the
disk drive and see the red light. The Computer is
at work, doing several tasks.
OPENs communication to
the disk so you
can send your checks out to it. Then, it finds an
empty location to store the checks and notes the
beginning location of that disk file in the directory.
happens in line 10. Notice the meaning
and "CHECKS/DAT":
All of this
of the "O", #1,
OPENed.
let's
LOAD
a program.
doing this, it will send out its closing information
to the new disk (thinking it's the old one). This
will very possibly garble the contents of both
disks.
Now
that we've warned you of the importance of
#1
is
memory
called
communicates with the disk
drive.
a special "buffer" area in
buffer #1. It
Line 10
OPENs
your program and
what the program writes on
line 30, re-insert this line in
RUN it again. This is
1.
RUN
because every time you
assume you switch disks and RUN or
The Computer will automatiCLOSE communication with buffer #1. In
Now,
cally
First, it
is
LOAD) a program, the Computer will automatically CLOSE communication with any buff(or
t
your disk:
this buffer. (If you've been
using tape, you might remember that buffer
• - 1 communicates with the tape recorder.)
2.
3.
"0"
the letter "O" not a zero.
stands for output. It tells the Computer that buffer #1 will be
sending out data to the disk.
is
"CHECKS/DAT"
The
is
the
It
name of the disk file.
name to index its
disk's directory uses this
y
TO READ THEM"! At
alt "CHECKS/DAT"
120 OPEN "I"
=
-1 THEN 170
130 IF E0F( 1
140 INPUT *li At
Bt Ct
150 PRINT a$; b; Ct
1G0 GOTO 130
170 CLOSE »1
5
*
DETAILS...
So
"CHECKS/DAT" has been
easy to handle,
but not very useful. You would probably like to
add more details:
far,
CHECKS
AMOUNT
PAYABLE TO
HORN
SAFEWAY
DR.
lines
MEDICAL
45.78
22.50
20.00
13.67
FIRST CHRISTIAN
OFFICE SUPPLY
Change
EXPENSE
FOOD
CONTRIB.
BUSINESS
25 and 115, and add some lines by
typing:
25 WRITE
ttl
27 WRITE #1
t
ft$i
115 PRINT At
t
B
B»
LIST the program. This
is
"0"
t
20 WRITE *1
>
25 WRITE «1
,
27 WRITE «1
t
#1
>
"DR.
t
)
i
"I"
the
way
it
should look
"CHECKS/DAT"
HORN"
IF
110
INPUT #1
115 PRINT A$
120 GOTO
,
>
#1
=
"CHECKS/DAT
.
-1
#5.1
1
THEN 130
Write a program which will print
only those checks which were for
JAR expenses.
A$i Bt C$
Bi
Ct
105
The answers
to all the
"Programming Exercises"
are in Appendix A.
it.
CHAPTER CHECKPOINT
1.
if you need to store a whole list of checks?
Continue to plod along with this program, and it'll
soon be unbearable.
28
(INTER)
PROGRAMMING EXERCISE
»
A GOOD TIGHT PROGRAM
What
When you want to quit,
"MEDICAL"
130 CLOSE *1
Now RUN
Input any checks.
YOUR CHECKS ARE STORED ON DISK
PRESS (ENTER) TO READ THEM? (ENTER)
GOODY BANK 230.87 CAR
a5. 78
E0F(1)
105
it.
CHECK PAYABLE TO :? GOODY BANK
AMOUNT :$? 230.97 (ENTER)
EXPENSE
CAR (ENTER)
CHECK PAYABLE TO :? (ENTER)
30 CLOSE «1
100 OPEN
t
:
Ct
now:
10 OPEN
t
)
Ct
>
i
simply press (ENTER in answer to the check payable to
prompt. For example:
"MEDICAL"
t
INPUT #1
110
:
RUN
^5. 78
t
i
2.
3.
4.
What is a buffer #1?
Why must you OPEN a disk Hie?
Why must you CLOSE it?
What is the difference between a file
for input and output?
OPEN
Try saving many different graphics
programs on disk and calling them
from one main program. Sample
Program
how.
7 in
Appendix C shows
You can quickly store, organize, and
update all your financial information with
a disk system. See Sample Program 1, 2,
and 8 in Appendix C for program listings.
°°«
izr
^k
,*
''
;«^
"-,.
\^
CHANGING IT ALL AROUND
(Updating a Sequential Access
Everything you put on the disk and take off of it
goes through a spot in memory called a buffer.
When we told you how to put data on tape in Getting Started With Color BASIC, we didn't talk
about these buffers. We didn't need to. There is
only one buffer which communicates with the tape
recorder
— buffer #-
1.
at the
same
RUN
"0",
Mi
«1
i
"ANIMALS/DAT"
"HORSE"
*1
t
"COW"
*1
Now, let's assume you want to change
"COW" to "GIRAFFE!' First, you need to read the
it.
data items into memory with an input program.
Erase memory. Type NEW (ENTEffl and then type:
With your disk system, you can use up to 15 buffers. This means you can have up to 15 spots in
memory communicating with 15 different disk
files
OPEN
20 WRITE
30 WRITE
am CLOSE
10
File)
10 OPEN "I"
M, "ANIMALS/DAT"
20 IF E0F(1) = -1 THEM 110
30 INPUT «1
A$
40 CLS
PRINT @ LOG
"DATA ITEH
109 GOTO 20
112 CLOSE «1
i
t
time.
:
The reason we brought this subject up is that we
want to demonstrate how to change some of the
data in your
file.
Tb do
this, it is
very helpful to use
two buffers.
.
Note: In Chapter
10, we'll
demonstrate how
to take
A*
Then you need to add lines which will allow you to
change one of these data items and store the
change in the disk
advantage of more of these buffers
:"
file.
Type:
"PRESS IF NO
CHANGE"
"
G0 PRINT % 2G3, "CHANGE
70 INPUT X%
50 PRINT @ 451
t
;
:
Type this program:
!
29
CHANGING
SO IF X*
""
=
90 WRITE *1
RUN
i
THEN X$
As soon
?FM ERROR
as the
Computer gets
prints:
it
IN 90
LIST the program. Line 10 opens buffer #1
to
attempting to output data to buffer #1. The Computer won't output
data to a buffer opened for input.
input data. Line 90, however,
This
is
ALL AROUND
Line 110 CLOSEs communication to buffer #1
and line 120 CLOSEs communication to #2.
A$
X*
the program.
to line 90,
=
IT
is
where the additional buffer becomes
handy. To output your changed data to the disk,
you can open another buffer for output. Add these
you have two files. "ANIMALS/DAT" contains the old data and "NEW/DAT" contains the
new. Add these lines to the program and RUN it:
Now
"ANIMALS/DAT"
130 KILL
140 RENAME "NEW/DAT"
TO
"ANIMALS/DAT"
Now the old "ANIMALS/DAT"
file is
the disk and the
"NEW/DAT"
10 OPEN
"ANIMALS/DAT"
THEN B0
deleted from
has been
renamed to "ANIMALS/DAT." To see what this
updated file contains, SAVE this program if you
want, erase memory, and type and RUN:
file
lines:
*2,
OPEN "0"
90 WRITE »2* X*
120 CLOSE »2
15
"NEW/DAT"
.
"I") 81
20 IF E0F(1)
=
30 INPUT 81
A$
,
,
-1
40 PRINT A*
RUN the program. Change "COW" to "GIRAFFE"
This
is
way
the
10 OPEN
"I".
15 OPEN "0"
.
20 IF EOFt
1)
the entire program looks:
"ANIMALS/DAT"
«2. "NEW/DAT"
=
-1 THEN 110
«1
30 INPUT
81
40 CLS
PRINT
:
,
@
PROGRAMMING EXERCISE #0.1
10E, "DATA ITEM :" A$
"PRESS IF NO
S0 PRINT @ 2G3»
INPUT X*
B0
IF X$
=
""
"CHANGE
:
"
program which will allow
add animals to "ANIMALS/
Write a
you
;
70
G0 CLOSE «1
Understand? Try these exercises:
A*
50 PRINT @ 451.
CHANGE"
.
50 GOTO 20
to
DAT'
i
—
Hint
You must add them
end of the file.
THEN X* = A*
90 WRITE 82. K$
to the
100 GOTO 20
110 CLOSE »1
PROGRAMMING EXERCISE #6.2
120 CLOSE *2
Line 10 OPENs communication to buffer #1 for
input from a disk file named "ANIMALS/DAT."
Line 15 OPENs communication to buffer #2 for
output to a disk
file
named "NEW/DAT:
7
Line 30 inputs A$ from buffer #1. Line 70 allows
you to INPUT X|, which will replace A$. If you
input X$, line 90 outputs it. Line 90 outputs X$ to
buffer #2, which, in turn, WRITEs it to "NEW/
DAT!'
30
Write a program which will allow
you to delete animals from "ANIMALS/DATT'
Ready
for the big
gram many
time? Our next exercise
—
is
a pro-
a mailing list proof you will want
gram. We'll start you out with these lines which
input the names, addresses, and phone numbers of
your club members:
CHANGING
"0". »lf
BO OPEN
"MEMBERS/DAT"
110 WRITE *1
i
ALL AOUND
All of this
works quite well on a small
scale,
but
how would it work in a large file? What if you had
500 members in your "MEMBERS/DAT" file and
you wanted to change only the address of the
453rd member?
90 GOSUB 430
100 IF N*=""
IT
THEM CL0SE«1:END
N$t A*. P*
120 GOTO 90
PRINT "PRESS WHEN
FINISHED" :PRINT
INPUT "NAME OF MEMBER: "iN$
IF N$ = "" THEN 480
INPUT "ADDRESS
"
A*
INPUT "PHONE NUMBER :"! P$
RETURN
430 CLS:
440
450
4G0
:
470
480
Now
The process would
still be the same. You would
have to input each of the 500 members from one
file and then output them all to another file. All of
this just to change one record. There must be an
easier way!
?
Programming Exerbut we think you can do it.
Remember, no one's watching. If you get bogged
down, refer to the answer in Appendix A for help.
finish
cise. It'll
be
it
by solving
this
difficult,
The easier way is
of programming.
called the direct access
It
makes your
faster to update, but in
many
them take up more space
is
in
files
cases
it
method
easier and
will
make
your disk. The choice
yours. We'll talk about direct access in the next
chapter.
PROGRAMMING EXERCISE #6.3
Write a
1.
2.
3.
4.
program in which you
Note: We've demonstrated short example programs.
There are many ways you could improve them. See
the "Sample Programs" in Appendix C for ideas.
can:
See the names, addresses, and
phone numbers of your club's
members.
Change the addresses of some of
the members.
Add new members.
Delete some of the members.
CHAPTER CHECKPOINT
Why can 't you input and output data to the
same buffer at the same time?
Can you input data from a file OPENed for
"O"— output?
31
DISK FILE
STORAGE
AftEA
Mo MxwTMice u>mwor HumeeR
A MORE DIRECT APPROACH
(Direct Access to a File)
now, we haven't been concerned with how
your data is stored on the disk. For example, you
might have put this in a disk file:
Up
to
sequential access
file,
the Computer
must
start at
the beginning and search through each item.
It
can't go directly to the item. In short, a sequential
access
file
does not take
full
advantage of your
disk's "filing system."
it
h/DAT
USING THE DISK FILING SYSTEM
/
"MARIE
E
»
ALEXANDER*" "J* DO
"MARK JONES*" "BILL S
"
In Chapter 2
disk creates this filing system. In our analogy, the
MITH
cabinets are the disk "tracks" and the file
drawers are the disk "sectors!' You can use tracks
file
*S'jtout
K
o£>
MME5/DAT
**
you want to change "J. DOE," to
"ELLIOTT HOBBS"? You could not ask the Computer to go directly to "J. DOE" The Computer
does not know where it is.
What
we talked about how formatting your
if
All the files we've created so far
have been
"sequential access!' To find a particular item in a
and sectors
to
immediately
find
any item you
want.
you can divide your file into something
which we call "records." You can then write a program which stores each record in a sector and
allows you to put data in the records. The next
page shows how your new disk file will look:
To do
this,
33
A MORE DIRECT APPR O AC H
>*
PUTTING A RECORD ON DISK
Enough
"MARIE ALEXANDER"
record
"
J
Since
theory! Let's put one record in a disk
be a direct access
it'll
start with the
1
Erase
DOE"
.
memory and
we
don't have to
type:
OPEN "D"
t
til,
"NAMES/DAT"
t
"J.
DOE"
30 PUT *1
2
.
40 CLOSE *1
JONES"
"MARK
file,
We'll start with the second.
20 WRITE *1
10
record 2
first.
file.
The program
record 3
looks familiar
.
.
.
except for the word
PUT in line 30 and the "D" in line 10. More on that
later
"BILL SMITH"
record 4
Now
//
.
.
add some lines
let's
read this record back into
34 GET 81
2
t
3G INPUT #1
With each record the same length (the length of a
sector), the Computer can go directly to "J. DOE!'
All
it
has to do
We call
is
count down to the second record.
a "direct access" file. By direct access,
we mean you can directly access any record you
want
this
Note that
Hmmm
file.
direct access file
record
is
has one shortcoming. Each
the size of a sector
— 256 bytes. Since one
one character of data, each
large enough to hold 256 characters.
of these bytes holds
record
is
This means that our drawing above is a little misleading. If we illustrated all the empty space in
each record, they would each have to be nearly ten
times as long. We simply don't have enough room
on the page.
a beginner, all this empty space probably
won't bother you. An empty disk can hold up to
612 records
each 256 bytes long. Later on, when
you become more comfortable with programming,
you'll probably want to pack more records into a
disk file. You can then progress to Chapter 9,
where we will demonstrate how to make smaller
If you're
—
records.
34
A*
.
.
.
—
another new word
GET
any ideas? Let's look at the entire
line 34 uses
program:
2(3
A
,
38 PRINT A$
10
in the
Computer will
main memory. Type:
so the
its
OPEN "D"i »1
WRITE »1
"J.
,
30 PUT *1
.
2
3a
GET «1
i
2
36
INPUT »1
p
"NAMES/DAT"
DOE"
A$
38 PRINT A$
40 CLOSE *1
RUN it
You'll hear the now familiar sound from
your disk drive. The Computer is writing "J.
DOE" in the disk file and then reading it back into
memory. Here's how
.
.
.
.
.
Line 10 OPENs buffer #1 which will communicate with a disk file named "NAMES/DAT." As we
said in the last two chapters, buffer #1 is one of
the 15 "buffer" areas which can communicate with
your disk.
being OPENed for "D." "D"
stands for direct access. Unlike sequential access,
you don't have to specify whether you're OPENing
Communication
is
A MORe DIRECT APPROACH
communication
for
output or input. The "D" suf-
fices for
both.
Line 20
WRITEs "J. DOE" to buffer
#1. Since this
program is open for direct access, "J. DOE" will
remain in buffer #1 until the program sends it
elsewhere.
Line 30 does just that.
buffer
#1
Notice our drawing shows only two records in the
GET record 4. Type:
file.
It
into the disk file
PUTs
the contents of
as record 2:
34 GET »1
RUN
a
.
The Computer gives you an IE (Input
past the End of the File) error. This is because the
last record the program PUT in the file was record
number 2. Hence, record 2 became the end of the
and
.
.
.
file.
Note: Didn't get
You must already have
on your disk with three or mo.
this error?
"NAMES/DAT" file
:
records.
To
PUT
Then
it
WRITE »1
31
record
more records
32 PUT si
1
in the
file,
add these
lines.
RUN the program:
,
t
"BILL SMITH"
a
Now your "NAMES/DAT" file will have these four
"
DOE"
J
records:
/
record 2
W^MES/DAT"
At
this point, "J.
It is
DOE"
is
in record 2 of the disk
no longer in buffer #1.
^
record
file.
"
GETs record 2 and reads it back into
#1. Now "J. DOE" is in both the disk file
Line 34
buffer
1
J
.
DOE"
.
record 2
and buffer #1.
INPUTs
the record from buffer #1 into
main memory and labels it A$. Now "J. DOE" is
in both the disk file and main memory. It is no
longer in buffer #1.
Line 36
record 3
"BILL SMITH"
record 4
With
"J.
PRINT
DOE"
in
main memory,
line
38 can
it.
Note: In the sequential access programs in Chapters
5 and 6, you didn't need PUT and GET. The Computer did this automatically. The OPEN line specified
JtMdb
r
X
5/DA7
W/)M£S
whether the buffer should output (PUT) data into the
file or input (GET) data from the disk file.
disk
35
>*
A MORE DIRECT APPROACH
PROGRAMMING EXERCISE 7.1
"NO
record 2
Change lines 32 and 34 so that your
Computer will use record 3 to PUT
and GET "BILL SMITH."
:
itV-,
*W ;*&*&&*
NAME"
"NO
NAME"
,1
record 3
DEALING WITH GARBAGE
"NO
PUT anything in record 1 Ask
GET record 1 and see what hap-
You have not yet
the
Computer
to
.
record 4
and RUN:
pens. Type this
"NO
34 GET »1
Since the Computer didn't PUT anything in
record 1, record 1 contains whatever "garbage" is
already there.
ask the Computer to GET and INPUT
"garbage" or give you an
OS (Out of String Space) error. The OS error simply means the garbage consumes more than 200
will either get the
bytes (characters).
empty records will contain garbage
until you fill them with something, it's a good idea
to put some kind of data in all of them in advance.
memory and
"NO
NAME"
NAME"
record 7
"NO
Since your
Erase
"NO
record 6
When you
it, it
NAME"
record 5
1
>
NAME"
NAME"
record 8
"NO
type this program:
NAME"
record 9
10
OPEN "D"
20 FOR
;;
=
30 WRITE *1
40
PUT »l
,
t
*1
1
TO
.
i
"NAMES/DAT"
10
"NO NAME"
X
"NO
NAME"
record 10
juhjL
50 NEXT X
G0 CLOSE «1
x
RUN
This program sets up a disk file named
"NAMES/DAT" which has ten records. Each
it.
record contains
"NO NAME":
Now erase memory
Mtie$fD#r"
NAME
i
20
.
"
.
record
36
1
and type
this:
#1
"NAMES/DAT"
OPEN "D"
INPUT "RECORD NO. (1-10) "i R
30 IF R > 10 THEN 20
40 IF R < 1 THEN 130
50 GET «1
R
G0 INPUT «1
A$
70 PRINT A$ "-- IS THE NAME IN RECORD" R
10
K
"NO
WfiM5S/D#T"
>
A MORE OIRECT APPROACH
MORE POWER TO A RECORD
INPUT "TYPE NEW NAME ELSE PRESS
"; At
90
90 if
""
=
fi*
100 WRITE »1
110 PUT *1
So far, we have been PUTting only one "field" of
data in each record. We can make the file more
organized by subdividing each record into several
THEN 20
A*
,
R
t
fields.
120 GOTO 20
130 CLOSE *1
Erase memory, type, and
RUN it. See how all your records initially contain
"NO NAME." Then, you can change
the data in
times as you
any of the records at will, as many
want. (To end the program, type a
RECORD NO.)
as the
W
READING ALL THE RECORDS
At
this point,
you might like the Computer
10 OPEN
20
30
34
35
38
to
your "NAMES/DAT" file
with their appropriate record numbers. SAVE
your program, if you want, erase memory, type,
and RUN:
print all of the records in
RUN this program:
"BUG9/DAT"
"FLIE9"
1000000*
*1
"D"
WRITE *1
.
"HAIRY"
t
PUT »1
2
GET #1
2
INPUT *i
D*. N. T$
PRINT Dt Nt Tt
.
.
.
,
CLOSE #1
Line 20 WRITEs three fields of data into buffer
#1. Then, line 30 PUTs the entire contents of
buffer
#1
three fields) into record 2 of the
(all
file:
"
10 OPEN
20 R
=
"D"
INPUT «1
IF R
70 R
=
*BU&S/
"NAMES/DAT"
R
.
"
10
=
R
At
t
50 PRINT At
60
»
1
32 GET *1
40
*1
,
DfilT
+
13
IN RECORD"
record
R
1
THEN 90
1
"FLIES
80 GOTO 30
I
t
000000
»
"HAIRY"
/
record 2
90 CLOSE *1
makes R equal to 1. In the next lines, the
Computer GETs, INPUTs, and PRINTs record 1.
Line 20
Line 70 then makes R equal to 2 and the whole
process is repeated with record 2. When R equals
10
— the last record in the
file
— the program ends.
GETs
everything in record 2 and reads it
INPUTs all three
fields of data from buffer #1 and labels them as
D$, N, and T$.
Line 34
into buffer #1. Then, line 36
There are
many occasions when you will not know
the last record
and
number
in the
file.
Change
line
60
RUN the program:
Try substituting this
G0 IF R
L0F(
1
)
for line
36 and
RUN
38 INPUT *1
LOF looks at the file which buffer #1
(the
.
i
Dt
number
communicating with. It tells
Computer what the last record number in that
INPUT
only
INPUTs
only
in parenthesis) is
Since this line asks the Computer to
the
the
file is.
.
THEN 90
first field
of data in buffer #1,
it
"FLIES."
37
A MORE
DIP.ECT APPP.OACH
PROGRAMMING EXERCISE 7.2
CHAPTER CHECKPOINT
1.
What do you think the Computer
would print if you ran the pro-
2.
gram, using this for line 36? Why?
3.
3G INPUT «1. N
4.
What are records? Why must you use them
to access data directly?
What are Gelds?
What is the difference between a sequential
access and a direct access file?
Why is it quicker to
Hie?
PROGRAMMING EXERCISE 7.3
Change the program which stores
the "NAMES/DAT" file so that
each record will contain five fields
of data:
1.
name
2.
address
3. city
4.
5.
38
state
zip
update a direct access
SECTION III
TOIE IBEIFMIEID) ©nSDS IPMDOISAKfl
After writing disk programs for a while, you might
want to make them more efficient. Perhaps you'll
want to put more data on the disk. You might also
want to economize on memory space or use some
extra buffer space.
At that time, we invite
all of you ambitious people
to read this section. The subject matter is more
advanced and technical. Once you finish it, though,
you'll have all the information you need to write the
best possible disk programs.
39
r a
HOW MUCH CAN ONE DISK HOLD?
(What the Computer writes in a Disk
Your disk
is
divided into thousands of equal-sized
Each unit is a "byte." One of these bytes can
hold one character. Thus, the word STRAW will
consume five bytes of disk space.
units.
An empty
disk contains 161,280 bytes. 4,608 of
them house the directory. This leaves you 156,672
for your disk files.
Note: A disk contains 35 tracks. Each track contains
18 256-byte sectors, or 18x256 = 4,608 bytes. One of
the tracks is for the directory. This leaves 156,672
bytes (4,608 bytes per track x 34 tracks).
File)
2,305 bytes of data, for example, the Computer
it, or 4,608 bytes (2,304
will allocate 2 granules for
x2).
The Computer
allocates
file
space in this
manner
because it's the most efficient way to create a file.
It is very tricky to change this and is something
that only very technical people would want to do.
(See Chapter 11, Technical Information, for additional information.)
The second
Does this mean you can use the entire 156,672
bytes for data? Possibly. There are two factors
which will determine this.
The
has to do with the way the Computer
a disk file. It stores a file in clus(We call them granules.) Each granule con-
first
allocates space for
ters.
factor which affects how much data
you can put in a disk file is your program. Some
disk programs are very efficient. Others put a lot
of overhead and empty space in the file.
In the next two chapters, we're going to compare
eight different types of programs. Each will store
—
—
tains 2,304 bytes.
the same data
5, 'TEN;' - 16, and "PAPER"
in a disk file named "OFFICE/DAT." The amount
Because of this, all of your disk files will contain
a multiple of 2,304 bytes. If your file contains
of overhead and empty space each program will
put in "OFFICE/DAT" will vary greatly.
41
HOW MUCH CAN ONE DISK HOLD?
WRITING ON THE DISK
Program
1
uses
Type and
disk.
WRITE
RUN
to
of
put this data on the
0ffi<*/dat»
it:
/
PROGRAM 1
21 bytes
5
10
OPEN
"0%
20 WRITE *1
30 WRITE «1
40 CLOSE #1
,
i
«lf "OFFICE/DAT"
5, "PEN"
-16
"PAPER"
»
/
t
"
P E N
Note: Want
actually
the
is
they are above, but leave off the #1 in each line.
This will prevent the Computer from writing the
data on your disk (via buffer #1). The Computer
will write it on your screen instead. Type:
1
6
What
Look very carefully at what the Computer
WRITEs. Every blank space and punctuation
mark counts.
Notice the way the Computer WRITEs the two
strings (PEN and PAPER). It puts quotation
marks around them. It WRITEs the numbers (5
and -16) differently. If the number's negative, the
Computer puts a minus sign in front of it. If it's
positive, the Computer simply puts a blank space
ASCII code
Computer converts
mark count
to
(see
for
space in clusters,
"OFFICE/DAT" will actually consume 1 granule
of disk space or 2,304 bytes. However, for the purpose of comparison, we'll only look at the 21 bytes
which Program 1 puts in "OFFICE/DAT:'
file
A DISK-EYE VIEW
To input "OFFICE/DAT," type and
"INPUT Program"
(erase
memory
RUN
this
first):
INPUT PROGRAM
lines. It
skipped down
to
10 CLS
20 OPEN "I", #1» "OFFICE/DAT"
=
-1 THEN 80
30 IF E0F< 1
40 INPUT #1
A, Bt
)
the
,
next line instead:
50
60
70
B0
"PEN'
OK
-IS,
Appendix D) which
a binary number.
one character each. Don't forget
the blank space preceding 5. What you should
come up with is 21 characters. Program 1 puts 21
There are two characters you typed which the
Computer didn't WRITE on the screen. These are
the two (ENTER) characters which you typed at the
5
Computer
Each
Count the characters. Make each (ENTER) (represented by an asterisk), comma, and quotation
it.
WRITE
*
the disk are binary codex.
Since the Computer allocates
end of the
the
"
bytes in "OFFICE/DAT."
WRITE 5, "PEN" (ENTER)
WRITE -IS, "PAPER" (HDIE)
in front of
P A P E R
"
i
be precise?
to
WRITEs on
character has an
an easy way to see what lines 20 and 30
wrote on your disk. Type these two lines exactly as
There
* -
"
PRINT: PRINT "DATA ITEM
PRINT "DATA ITEM
" B$
GOTO 30
CLOSE *l
:"
A
:
"PAPER"
OK
When writing on the disk, the Computer actually
WRITEs each (ENTER) character exactly as you
did input your data items. However, it did not
input the quotation marks, commas, and blank
spaces which we told you were interspersed with
your data.
This illustration shows what Program 1
WRITEs on your disk. (We used asterisks to represent the [ENTER) characters):
To actually see what Program 1 wrote on your
disk, you can use a "LINE INPUT Program." First
typed
42
It
it.
HOW MUCH CAN ONE DISK HOLD?
SAVE
"INPUT Program" you now have
the
memory.
(You'll
be using
Now change
it into a "LINE INPUT Program."
Delete line 50 and change lines 40 and 60. Type:
40 LINE INPUT #1
L*
50
G0 PRINT "DATA LINE :"
B0 CLOSE *l
90 PRINT @ 394
in
it later.)
SAVE
it.
grams
2, 3,
>
"BYTES'
L
be useful in comparing what Proand 4 put in your disk file.
It will
,
PRINT— FOR A CHANGE
L*
we've used only WRITE to put data in a
you've used other forms of BASIC, you
might be accustomed to using PRINT rather than
So
RUN
Line 40 INPUTs an entire LINE,
rather than one single data item from the disk file.
This LINE includes everything up to the (ENTER)
character
punctuation marks, spaces and all.
and
.
.
.
—
"OFFICE/DAT" file, the first LINE contains
"PEN."
Line 40 labels this line as L$ and line 60
5,
PRINTs it on your screen.
In the
far,
disk
file. If
WRITE.
The Color Computer disk system allows you to do
this. However, PRINT is much more tricky to use.
not used to it, don't bother learning
Skip to Program 4.
If you're
this.
The program then INPUTs and PRINTs - 16,
"PAPER" the second and final line in the file.
file
We
KILL "OFFICE/DAT"
—
can easily alter this program so that it will
count how many bytes are in the file. Add these
lines
and
RUN
.
.
.
25 PRINT
57
G0
G5
90
"THIS FILE CONTAINS
PRINT: PRINT: PRINT: PRINT
= Lt+ "*"
PRINT Mt!
L = LEN(Mt) + L
PRINT @ 394t L "BYTES"
:"
the entire
(ENTER)
RUN
Here's Program
2:
PROGRAM 2
42 bytes
Line 57 adds an asterisk to each LINE. This asterisk represents the (ENTER) character. Line 65 then
counts the total number of characters (bytes) in
each line.
is
"OFFICE/DAT"
erase memory, and type and run Program 2.
the INPUT or the LINE INPUT Program, if you'd like.
m
This
old
Now
it:
Then
27
KILL your
with us?
by typing:
Still
all
"LINE INPUT Program":
PLINE INPUT PROGRAM
OPEN "0"
20 PRINT 81
30 PRINT *1
40 CLOSE »1
10
,
*1
,
5»
"OFFICE/DAT"
,
"PEN"
-1G
"PAPER"
,
»
Lines 20 and 30 PRINT your data to buffer #1
which, as you know, is one of the 15 buffers which
will send your data to the disk file. To see what
Program 2 PRINTs,
type:
10 CLS
20
25
27
30
40
57
G0
G5
70
OPEN "I"* «li "OFFICE/DAT"
PRINT "THIS FILE CONTAINS
PRINT: PRINT: PRINT: PRINT
IF EOFU) = -1 THEN 80
LINE INPUT *1
L*
M* = L* + "*"
PRINT M$!
L = LEN(M$) + L
GOTO 30
f
;
PRINT 5» "PEN" (ENTER)
PRINT -1G
"PAPER" ENTER)
[
Notice the Computer did not enclose the strings
— PEN and PAPER — in quotes, as WRITE did.
This will be important to
Now
know
later.
look at the blank spaces. We'll start with the
first one
the one before the 5. This means the
—
43
HOW MUCH CAN ONE DISK HOLD?
same thing
it
did with
WRITE.
"OFFICE/DAT"
5 is a positive
number.
Now
Then type and
RUN
this
program:
for the other
blank spaces
.
Computer PRINTs a number,
"trailing"
first
file.
blank space after
it.
.
.
it
PROGRAM 3
Whenever the
PRINTs one
17 bytes
This explains the
blank space after the 5 and -
16.
OPEN "0"
20 PRINT #1
30 PRINT *1
40 CLOSE *1
10
How
about all the additional spaces? Remember,
from Getting Started With Color BASIC, what a
.
*1
.
5i
r
,
"OFFICE
"PEN"
-lGi "PflPEf?
comma in the PRINT line does? It causes the Computer to PRINT your data in columns, inserting
spaces between the columns.
The Computer will
PRINT
This is what Program 3 PRINTs on your disk. (Use
the LINE INPUT Program to test this, if you'd
like):
every single one of
these blank spaces in your disk
file:
*0FFIC£/P*T
Cn{L>
/DAT'
* OFFICE
/
5
\
PEN*-1G PAPER*
PEN*- IB
PAPER*^.
JtMxL *g "OFFICE/DAT
Count
into
all
the characters.
Program
2 puts
42 bytes
"OFFICE/DAT."
Note: Unclear about what commas do in a PRINT
line? Type some more PRINT lines with commas
between data items:
PRINT 1. 2, 3* H, 5, 6> 1,
PRINT 'HORSE
11
,
"COW'f
B
I
"
Very efficient. Only 17 bytes. There are only three
blank spaces in this disk file. There is a space
before the 5 (to indicate that it is positive) and
spaces after 5 and - 16 (to indicate that they are
numbers). There are no blank spaces around the
strings.
HHTEffi
''RABBIT",
"OOG
PRINTING LESS
the blank spaces PRINT
inserts in your disk file are a waste of space. They
are. The way to get around this waste is to use
semi-colons. You might again recall, from Getting
Started With Color BASIC, that semi-colons in a
PRINT line compress your data. Type:
You might
PRINT 5!
feel that all
"PEN"
PRINT -lGi
(ENTER]
"PAPER"
(EHTEB)
You can compress your data on the disk in the
same manner. Erase memory and KILL your old
44
THE TRICKY PART
There are certain types of PRINT lines which are
tricky. (We did warn you, didn't we?) Type:
HOW MUCH CAN ONE DISK HOLD?
PRINT "PEN"! "PAPER" fEHTER)
PRINT "JONES. MARY" (iNTEff)
print "pen". 5
The Computer would read
(mm
The
line PRINT «l
>
"PEN"
5
memory
as
one item. (Reason; although the Computer normally interprets blank spaces as a delimeter, it will
"PAPER"
i
PEN
(with all the blank spaces) back into
(in
program) would print this in your disk
your disk
way when
and precede a number).
not interpret them in this
string
file:
they follow a
For more information on using PRINT in disk programs, see the TRS-80 Model I, Model II, or Model
III Disk System Owner's Manual.
PENPAPER*
PENPAPER back
The Computer would read
memory
meter"
into
as one item. (Reason: there
is not a "deliquotation mark, or space
to
— a comma,
separate
AN ATTRACTIVE DISK FILE
—
PRINT USING is another word you can substitute
for WRITE. We discussed PRINT USING in Going
Ahead With Extended Color BASIC).
PRINT USING "1
The
line PRINT *l
this in
Type:
PEN from PAPER).
your disk
,
"JONES
>
MARY" would print
'
JONES
t
5
!$+»#,»»"
!
"PEN"
<
5
(ENTER)
PRINT USING "I
file:
*,$+#«.**"
"PAPER"
-16
,
ENTER)
You can get the Computer to print these same
images on your disk with this program. KILL
"OFFICE/DAT," erase memory, and type and
7
MARY*
RUN:
PROGRAM 4
32 bytes
The Computer would read JONES,
MARY
10 OPEN
back
"0"
t
#1
t
"OFFICE/DAT"
**+##,«#"!
20 PRINT #1. USING "X
"PEN"
5
as two items: JONES and MARY. (Reason: The
Computer interprets the comma as a delimeter).
f
30 PRINT tl, USING "X
The
in
line PRINT «i
your disk
,
"PEN"
,
5,
would print
(
i
"PAPER"* -IB
this
40 CLOSE #1
file:
which prints
*
this in
$+
PEN
PEN
2$+*» #t"i
-
1
B
.
5
your disk
.
file:
00*PAPER
130*
\
45
HOW MUCH CAN ONE
Note: There are five blank spaces between the % characters in lines 20 and 30. Counting the two % characters, this string field (for printing PEN and
PAPER)
more programs which
direct access
will put the
same data
in
files.
contains seven bytes.
CHAPTER CHECKPOINT
Now the data is already in an attractive
print for-
mat. You can input and print it using a simple line
input program. Erase memory, type and RUN:
1.
What is the minimum
9.
Why can 't it be smaller?
Hnvr rfnan th* Cnmngter
size of a disk Sle?
10
INPUT and
IINT line cause
a
20
30
40
50
G0
*1
OFFICE/DAT"
OPEN "I"
IF EOFtl) = -1 THEN G0
A*
LINE INPUT »1
PRINT At
GOTO 20
CLOSE *1
>
>
*
PRINT tine
IINT strings?
46
ntimhe
jftlef}
3.
How does it WRITE strings
4.
What is
the' difference
betwi
LINE INPUT?
5. What does a comma in
a
PI
Computer to do?
What does a semi-colon
the
6.
All of the files we've created in this chapter are
sequential access. The next chapter compares four
WJRJtTFf
m^diM
"'""
sen
i
DISK HOLD?
7.
it
cause it to do?
How does the Computer PE
f
"l
9
TRIMMING THE FAT OUT OF DIRECT ACCESS
(Formatting a Direct Access
/»
File)
Direct access files often contain a lot of empty
space. For example, our first program is very similar to
Program
WRITE lines are
direct access, it
from the
1
last chapter.
The
However, because it is
will put 512 bytes in "OFFICE/
identical.
DAT":
512 bytes
OPEN "D"
20 WRITE #1
30
40
50
60
PUT «1
,
WRITE «1
PUT *1
i
t
miifiiiiiHHHim
•It "OFFICE/DAT'
5» "PEN"
miiiiiiiiiiii1 1 1 1 1 1 1 1
1
,
IfiliiiiililiilllUiiii!
miimiiiiiiiflimim
HBiiiiiiiimmiinii
PROGRAM 5
10
V
-16» "PAPER"
BIIBilllllillllieiiiilll
2
CLOSE «1
iiiiiiliiiiiiii i i a i i i i i
A direct access program puts your data inside records.
Each record is 256
bytes.
Program 5 puts two
records in the "OFFICE/DAT" file. Therefore,
consume 2 x 256, or 512 bytes:
will
it
Bisiiiiaiiiiiiinigiim
iiniaagiiiBBaBBiaeiiiii
TRIMMING THE FAT OUT OF OIRECT ACCESS
Note:
We could have used PRINT or PRINT USING
WRITE, The Computer would have then
rather than
PRINTed your data inside each
PRINT or PRINT USING format.
record
record using the
1
TRIMMING THE FAT
Program 6
PAPER"*
IB
the Computer to
tells
as Program 5, except that
12 at the end of line 10, This
same
the
is
we inserted a number
make each
record 12 bytes
long:
PROGRAM 6
24 bytes
OPEN "B"i «lt "OFFICE/DAT". 12
10
20 WRITE »1
30 PUT »1
t
40 WRITE *1
50 PUT «1
5
,
"PEN"
I
.
,
-IB. "PAPER"
2
t
B0 CLOSE *1
and really whittles
/
,
"
record
1
*o?Fice/mT"
down:
"OFFICE/ DAT"
5
record 2
this file
G
*
p
E N
"
*
1
"
P A P E R
"
*
record 2
"0FFIC£/DAT"
This obviously wastes a massive amount of space.
Notice that what the Computer actually writes in
each record:
file, all records must be the same
{We explained why in Chapter 7.) If you
tell the Computer how long to make them,
In a direct access
length.
don't
they will
5,
all
be 256 bytes.
"PEN"*
-IB,
"PAPER"*
In this program,
we made each record
12 bytes, the
Type and RUN Program
sure
to erase memory and
(Be
size of the largest record.
is
the
same as what Program
1
wrote. Count the
bytes. That's nine bytes in the first record
in the second. You'll
program.
48
need
to
know this
for
and 12
our next
6, if
you'd like,
KILL your old "OFFICE/DAT" file first.) After
RUNning Program 6 you can use this program to
input the
file:
TRIMMING THE FAT OUT OF DIRECT ACCESS
DIRECT INPUT PROGRAM
10 OPEN
20 R
"D". *1
R +
=
30 GET #1
By using FIELD and LSET, your program
will
work the same as any direct access program. The
difference is what FIELD and LSET put in each
'OFFICE/DAT
record:
1
R
,
38 INPUT Hi A, B$
50 PRINT "RECORD" R ":" A
G0 IF LOF(l) <> R THEN 20
70 CLOSE »1
Note: You can't use the "LINE
how many
determine
INPUT
bytes this
INPUT Program"
does not input the spaces
in
PEN
to
LINE
consumes.
file
a record which
record
1
follow the ENTER) character.
;
-
EFFICIENCY, EFFICIENCY
1
6 P A P E R
record 2
. .
We
can get even more efficient. Our next direct
program consumes only 16 bytes. Erase
memory, KILL the old "OFFICE/DAT" file, and
"OFF/CS/OAT
access
type and
RUN Program 7.
PROGRAM 7
16 bytes
10
20
30
40
50
S0
70
OPEN "D"»
FIELD »1
LSET At =
LSET 8$ =
PUT »1
1
LSET A$ =
LSET B$ =
*1
.
"OFFICE/DAT"
3 AS At
"5"
t
5
.
i
8
AS Bt
.
the
file
SAVE
it.
"PEN"
"-IS"
"PAPER"
2
Then erase memory and input
OPEN "D"
m
GET »1
,
each record
,
•
,
3
1
t
'OFFICE/DAT"
AS A*
>
.
5 AS B*
1
R
"RECORD" R ":" At! Bt
60 IF LOF(l) <> R THEN 30
70 CLOSE »1
that we've established this, we can put data
in each field. Line 30 LSETs 5 in the A$ field
(SETs the character 5 to the Left of A$). Since the
character 5 only consumes 1 byte and there are 3
bytes in the A$ field, there are 2 empty spaces at
the end of 5.
we had
convert the number 5 to a string
by putting quotes around it. You cannot LSET a
number. You must convert it to a string.
Notice
FIELDED INPUT PROGRAM
10
to divide
Now
with this program:
20 FIELD *i
30 R = R +
Computer
two fields. The first field is A$ and the second
is B$. These two fields will be the same size in
every record, A$ will always be 3 bytes and B$
will always be 5 bytes.
There are two new words in this program which
we'll talk about later. Let's see what the program
first.
the
tells
into
90 CLOSE *1
does
.
Line 20
.
90 PUT «1
Only the bare essentials. Here's how Program 7
works
to
S
PEN in the B$ field.
Again, this leaves 2 empty spaces at the end of A$,
Line 40 LSETs the word
since
PEN
is
3 bytes.
50 PRINT
Line 50
PUTs
process
is
all this in record
repeated for record 2.
1.
Then, the same
49
TRIMMING THE FAT OUT OF DIRECT ACCESS
Now
look at the "Fielded
let's
INPUT
Program:'
1.
RUN
the program
Notice we used a FIELD line.
without line 20 and see what happens
.
2. first
3.
.
4.
Without a FIELD line, the Computer does not
know where the two fields are. Whenever you
input FIELDed records, use a
input program.
FIELD
line in
Can you guess what the Computer would do
5.
6.
your
:
.\l Vjl ;
RUN
Now
=
RUN
the "Fielded
'.-.
'
:
-
Write a program to input the
you created in Exercise #9.1.
file
ascs-ffira-afi
"lZGaSGTSa"
load and
'
"
#9.2
LSET
30 LSET A*
.«
PROGRAMMING EXERCISE
if you
a long string, such as "123456789,"
into one of the fields? LOAD Program 7, change
the program. (First, SAVE the
line 30, and
"Fielded INPUT Program" with line 20 reinstated.):
tried to
— 15 bytes^£3§§§i^
name — 10 bytes
address — 15 bytes
city — 10 bytes
state — 2 bytes
zip code — 5 bytes
last name
INPUT
Program."
A$ is only 3 bytes. Therefore, the Computer only
LSETs the first 3 bytes of "123456789." It chops
the remaining characters
off:
A NUMBER IS A NUMBER,
Let's
in
assume you
your disk
file.
be putting a
will
. .
lot of
numbers
Every number might be a
differ-
ent length:
^OFFICE /OA7"
/
Mmm
record
-5.237632
673285
31
However, it is very important that the Computer
not chop any of the digits off. This might entirely
change the number's value.
1
The word
MKN$ will
record 2
solve this problem:
PROGRAM 8
20 bytes
"OFF/C&/ DAT
10 OPEN
"D"
t
»1
20 FIELD *l
t
5
30 LSET
More on
this later
Before going on to the next
ft*
=
40 LSET B*
=
50 PUT *1
p
1
program, try writing your own FIELDed program:
60 LSET At
=
PROGRAMMING EXERCISE
70 LSET Bt
=
80 PUT *1
2
.
.
.
#9.1
50
>
p
"OFFICE/DAT"
AS A*
,
5
10
AS Bt
MKNt<5)
"PEN"
MKN$t-iG)
"PAPER"
90 CLOSE »1
Write a direct access program to
put a mailing list in a disk Hie.
Make each record 57 bytes with
The only difference between this program and program 7 is lines 10, 20, 30, and 60. This is what it
these six fields:
stores in your disk
file:
THIMMING THE FAT OUT OF DIRECT ACCESS
Jfi€JUM*U*Utf' off
To read this program
string.
%
/ bFF!C£/DAT"
make
f
in,
you need
these changes to
to
decode the
INPUT Program" and
the "Fielded
it:
10 OPEN "D"
#1
"OFFICE/DAT"
10
20 FIELD *i
5 AS A*
5 AS B$
50 PRINT "RECORD" R " "
CYN(A$)i B$
,
S
record
LOAD
,
,
,
1
,
:
;
and
APER
Coda, ^&tr/6
RUN it
number
1
it
.
.
CVN (in line 50) decodes A$ to the
.
represents.
Note: The Computer only sees the
number. It rounds the rent off.
first
9
digits of a
*office:/dat
MKN$
converts a number to a coded string.
Regardless of how long the number is, MKN$ will
always convert it to a string that is five bytes long.
For example, change line 30 to
with more than five digits:
30 LSET A$
=
LSET
a
PROGRAMMING
EXERCISE #0.3
Write a fielded direct access prowill store the populations of all the countries. Make
each record contain 15 bytes with
these two fields:
number
gram which
MKN$(12345G7B9)
Erase memory, KILL "OFFICE/DAT," and type
and RUN the program. This is what it stores in
your disk file:
1.
2.
—
country 10 bytes
population
5 bytes
—
WBPI^^^H^BOWi^PBBB
PROGRAMMING
EXERCISE #9.4
^CfcflCE/mT
I
9
'
Write a program which will input
the Hie you created in Exercise
--— 5 Jswbu
Ofdc j*v /23f56>7&7
#9.3.
CHAPTER CHECKPOINT
Ifyou do not specify the record length, how
many bytes will each record contain?
2. Why must you include a FIELD line when
you LSET your data?
3. Howmanybytes will MKN$ convert a num1.
"OFFICE/OfiT"
ber into?
51
•t
t
%
I
*
I
SHUFFLING DISK FILES
(Merging programs, using many buffers)
Because storing and retrieving disk files is so easy,
you will want to use them as much as you can. In
this chapter, we're going to talk about some special ways you can use them.
Be sure
With the
method, you can build a program
out of related program "modules" SAVEd on disk.
You can then MERGE any of these program files
with whatever program you have in memory.
Type and
first
SAVE
these two related programs:
AGE CONVERSION TO MONTHS
10 REM
20 N = N * 12
30 A* = STR*(N)
SAUE
10
REM
20 N
30 A*
+
N
=
=
A
(ENTER)
AGE CONVERSION TO WEEKS
* 52
STRt(N) + " WEEKS"
SAVE "WEEKS/AGE", A
these pro-
INPUT "TYPE YOUR AGE"
i
40 PRINT "YOU HAVE LIVED"
and combine
SAVEd. Type:
it
.
.
N
A$
with one of the programs you
MERGE "MONTHS/AGE"
LIST the program
"MONTHS/AGE"
(ENTERl
The Computer has MERGEd
with the program you have in
.
.
.
memory. Notice the line numbers are the same as
they were in each individual program.
MONTHS"
"
"MONTHS/AGE",
when you SAVE
.
5
MERGING PROGRAM FILES
to type the A
grams. We'll explain why later
Erase memory.
Now put this program in memory:
(ENTER)
At this point, this
memory:
is
the program you have in
INPUT "TYPE YOUR AGE"
N
10 REM AGE CONVERSION TO MONTHS
5
20 N
i
=
N
*
12
53
SHUFFLING DISK FILES
to now, that's all we've used
buffers #1 and
#2. But, as we've said earlier, you can use up to 15
disk buffer areas.
=
MERGE "WEEKS/AGE"
"WEEKS/AGE"
program.
(ESTER)
.
with
it
—
Up
STR*(N) + " MONTHS"
40 PRINT "YOU HAVE LIVED ABOUT'
30 A*
A$
by typing MERGE
Then LIST the
MERGEd
Notice that lines 10, 20, and 30 of the program you
had in memory were replaced by lines 10, 20, and
30 of the "WEEKS/AGE" program.
To use more than 2 buffers, you must first reserve
space in memory for them. To do this, use the word
FILES. For example, FILES 3 reserves 3 buffers.
Making use
of all these buffers will greatly sim-
your programs. For example, let's assume
you own a computer school. To organize it, you
first put all your students in a file named "COMPUTER/SCHr Erase memory, type and RUN:
plify
the Computer how to merge
the two programs. When there is a conflict of line
numbers (two line 10s) the line from the disk file
The
numbers
line
tell
f
prevails.
"0". *1
10 OPEN
Now
we'll get technical (for those of
you who
are
the Computer normally writes
in your disk file is the ASCII code for each character of data. For example, it writes the word AT
with two codes
the ASCII code for "A" (65) and
the ASCII code for *T" (84). (The ASCII codes are
interested).
What
—
all listed in
Appendix D).
20 FOR X
=
"C0NPUTER/SCH"
.
TO B
1
30 READ At
40 PRINT *1
A$
.
50 NEXT X
G0 CLOSE #1
70 DATA JON
SCOTT CAROLYN
80 DATA DONNA. BILL
BOB
i
,
r
it SAVEs a program, it writes the
BASIC words differently. To save space, it compresses each BASIC word into a one-byte "binary"
However, when
code.
Now you can write this program to assign the students to a BASIC or assembly-language class.
Erase memory and type this "Class Assignment
Program":
MERGE
You can't
a file which contains these
binary codes. This is why we had you type the A
when you SAVEd the two programs above. The A
tells the Computer to write the ASCII codes for
each BASIC word rather than the binary code.
By checking the
directory, you can see if the data
are in ASCII or binary codes. If there
is an "A" in the fourth column, it's all in ASCII
codes. A "B" indicates that some of the words are
in
your
files
in binary codes.
Note: Try typing MERGE "MONTHS/AGE"
The
it's
R
tells
the
Computer
to
,
ft
^HTFffi.
RUN the program after
MERGEd.
USING MORE BUFFER SPACE
I
CLASS ASSIGNMENT PROGRAM
10
FILES
3
20 OPEN "0"
30 OPEN "0"
"BA5IC/CLS"
"ASSEMBLY/CLS"
OPEN "I"
"C0MPUTER/SCH"
1 THEN 120
50 IF E0F(3)
G0 INPUT «3. ST4
70 PRINT
PRINT ST$
80 INPUT
(IS BASIC
LANGUAGE"! R
90 IF R > 2 THEN 80
100 WRITE 8R
ST$
110 GOTO 50
120 CLOSE 8 1
130 CLOSE 82
140 CLOSE 83
»l
i
*Z
»3
.
W
t
When you
start-up your disk system, it sets aside
two buffer areas in memory for disk communication. You can use either or both of them for reading or writing data to a disk file.
54
RUN
it.
After assigning
all
the students to a class,
you can print a class roster with this program.
Erase memory, type, and RUN:
SHUFFLING DISK FILES
CLASS ROSTER PROGRAM
CLEAR
10
20 files
28 PRINT "BASIC/CLS"
PRINT
30 OPEN "I". «1» "BASIC/CLS"
:
38 IF EOFU) = -1 THEN 80
50 INPUT »1» A*
S0 PRINT A$
70 goto aa
B0 CLOSE »1
Note: Substitute "ASSEMBLY /CLS" for "BASIC/
CLS" in lines 20 and 30 to print the class roster of the
assembly language class.
The "Class Assignment Program" has three buffers open at the same time. Because of this, you are
able to communicate with three disk files at the
same time.
Line 10 reserves memory for these three buffers.
Lines 20-40 OPENs the three buffers. Then, line
60
INPUTs
a student
from
"COMPUTER/SCH"
into buffer #3.
Line 100 WRITEs the name of the student to
either buffer #1 ("BASIC/CLS") or buffer #2
t
200
210
220
230
240
,
,
OPEN
INPUT
CLS
PRINT
CLOSE
"I"
,
#1
,
#1
,
"WORD/DAT"
At, Bt, Ct,
At; Bt; Cti
Dt
!
Dt
t
E$
E$
#1
Note: You can make the buffer as targe as you want
the students from buffer #3 ("STUinput, line 50 sends the
Computer to lines 120-140, which CLOSEs the
CHAPTER CHECKPOINT
How must you SAVE a program which yo,
wUl want to MERGE?
three buffers.
2.
When the two programs you're mergin
both have the same line numbers, whic.
lines prevail?
3,
How many
reserve
more thing you'll like about FILES.
Erase memory, type, and RUN:
,
Want to input this paragraph? Add these lines and
RUN:
all
There's one
,
.
DENT/SCH") have been
CROWDING THE BUFFER
am
,
=
,
("ASSEMBLY/CLS").
When
1
"NORMALLY
YOU WILL NOT BE ABLE TO
PUT ALL OF THESE SENTENCES IN A DISK
FILE AT THE SAME TIME. "
£10 B$ =
"THIS IS BECAUSE, WITHOUT USING
FILES, YOU WILL ONLY HAVE A TOTAL OF
25G BYTES OF BUFFER SPACE. "
50 C$ = "IN THIS PROGRAM* WE'VE RESERVED
£100 BYTES OF BUFFER SPACE, "
E0 D$ = "THIS WAY YOU CAN SEND ALL OF
THESE SENTENCES TO THE BUFFER AT THE
SAME TIME. "
70 E* = "WHICH WILL OUTPUT THEM ALL TO THE
DISK FILE AT ONCE, "
80 OPEN "0"
»1
"WORD/DAT"
90 WRITE #1
A*. B$
C$
Dt
Et
100 CLOSE #1
30 A$
10 cls
£100
buffers does the
when
Compute
starts-up?
hunter space does it reserve?
it
4.
How much
5.
What does FILES 3, 3000 mean ?
55
^
HtvttT^Ci^
<5^
^/
"PR^ck
:
•:
-.
TECHNICAL INFORMATION
(Machine-Language Input/Output)
In this chapter, we'll discuss the technical details
TVacks
which are happening "behind the scenes" You
don't need to know this information when you are
programming in BASIC. In fact, you won't even be
aware that these details are happening.
The Computer organizes the disk into 35 tracks,
numbered 0-34. Each track contains approximately 6,250 bytes* 6,084 of them are divided into
sectors; the
However, if you plan to write machine-language
disk programs or are simply interested in knowing all you can, you'll definitely want to read this
chapter. We'll begin by discussing how the Computer organizes all the bytes on the disk. Then,
we'll show how to access them through machinelanguage programming and other advanced
remaining are
for
system
Byte#
Contents
0-31
System controls
32-6115
6116-6249*
Sectors
The system
4E
controls.
System controls
control bytes all contain the value of
(hexadecimal).
techniques.
number
of system control bytes at the end of
each track might vary slightly due to slight speed
*the
WHAT A DISK CONTAINS
When you power-up
the Computer, it organizes
the bytes on the disk into tracks and sectors. Some
of these bytes control the system. The great majority of them are for data.
variations.
Note: One byte contains 8 bits. Each bit contains
we express the contents of
these bits as a hexadecimal (base 16) number. For
example, if we say a byte contains the value of hexadecimal 4B, it contains this bit pattern — 0100110.
can find more information on hexadecimal and
kYou
binary number systems in a math textbook.
either a 1 or a 0. Normally,
57
TECHNICAL INFORMATION
Sectors
9 sectors in V2 track
x 256 data bytes per sector
Each track contains 18 sectors, numbered 1-18.
Each sector contains 338 bytes. 256 of them are for
data. The remaining bytes are for system controls.
2,304 bytes in a granule
The Computer uses granules
Byte#
Contents
disk
0-55
System controls
Data
System controls
tains 4,700 bytes, the
56-311
312-337
to allocate space for
in 2,304-byte clusters. Thus, if a
files
Computer
ules (6,912 bytes) of disk space for
The hexadecimal contents of the system control
The
location of the 68 granules,
file
con-
allocates 3 granit.
numbered 0-67,
is
as follows:
bytes are:
Byte#
Hexadecimal Contents
00
F5
0-7
8-10
11
12
Track
Track
Track
0,
Sectors 1-9
0,
Sectors 10-18
1,
Sectors 1-9
Track
Track
Track
16,
Granule
Granule 1
Granule 2
FE
Track
00
13
Number
14
15
16-17
18-39
40-51
52-54
55
Sector Number
01
Cyclic Redundancy Check
,
&H5FFF
,
1H500A
through 38FF:
To load
it
back into memory, you could use the
LDX
$C00B
SET X AS A POINTER TO THE
LOADM command:
LDA
STA
*2
PARAMETERS
DCOPC = 2 FOR READ
LOADM "PROG/MAC"
A
SECTOR
,X
CLR
1
LDA
«3
SELECT DRIVE
SELECT TRACK
STA
LDA
2,X
*17
SELECT SECTOR 17
STA
3.X
LDU
**3B00
STU
a,x
tX
JSR
[*C004]
LDA
»$00
STA
SFF40
TST
BtX
BNE
ERRORS
This would load
3
executing
If you
DCBPT=3B00(HEX) FOR
STORING DATA
CALL DSKCON
TURN OFF THE DRIVE MOTOR
CHECK FOR ERRORS
GO REPORT THE ERRORS
"PROG MAC"
locations 5000-5FFF.
it
want
back into memory
The Computer would begin
at location 500A.
to load
it
into a different
you could specify an
memory loca-
address to add to
the program's loading address. For example:
tion,
LOADM "PROG/MAC"
,
offset
1000
would load "PROG/MAC" into memory locations
6000-6FFF. The Computer would begin executing
it at address 600A.
61
TECHNICAL INFORMATION
SPECIAL INPUT/OUTPUT
50 EXT$(0)
COMMANDS
=
70 NAM*(N)
=
BASIC offers two special input/output commands.
These commands input and output data directly to
a particular sector. They do this through bypass-
80 EXT$(N)
=
ing the entire disk's filing system.
110
DSKI$, inputs the data from the
The
first,
you
specify.
DSKI$
This
MID*(C*,9,3)
60 FOR N=l TO 7
is its
sector
format:
MID$(C*»N*32+1 ,8)
MID$(C$,9+N*32»3)
90 NEXT N
100 FOR N=0 TO 7
IF EXT$(N) = "DAT" AND
LEFT*(NAM$(N) ,1)<>CHR$(0) THEN PRINT
NAM$(N)
120 NEXT N
130 NEXT X
drive number, track, sector, string vari-
The second command, DSKO$, outputs data
ablel, string variable2
you specify. Since it bypasses
the disk filing system, it will output data without
opening a file and listing its location in the directory. For this reason you need to be careful:
directly to the sector
The
128 bytes of the sector are input into
The second 128 bytes are input
into string variable2. For example:
first
string variablel.
DSKI$ 0, 17,
1
,
A*, B$
(ENTER)
inputs the contents of sector
1,
A$ and
the second 128 bytes into B$. After typing this
command, you can display the contents of this sector with:
DSKI$
10 FOR
X=3
will read
TO 11
20 DSKI$ 0,17»X»A$»B$
30 C$
=
A$ + LEFT$(B$»127)
40 NAH$(0)
62
=
2.
not to output data over other data you presently
have stored on the disk.
The format
DSKO$
(ENTER)
any sector on the disk, it is
the only BASIC command which will read the
directory sector. This sample program uses DSKI$
to search the directory for filenames with the
extension "DAT":
Since
not to output data over the directory sectors
unless you no longer plan to use the directory.
track 17 of the disk
in drive 0. It inputs the first 128 bytes into
PRINT A$i B$
1.
LEFT$(C$,8)
of DSKO$
is:
drive number, track, sector, stringl,
string2
Stringl will go in the first 128 bytes of the sector.
String2 will go in the next 128 bytes. For example:
DSKO* 0, 1. 3, "FIRST STRING", "SECOND
STRING" (ENTER)
to sector 3, track 1, on the disk in
drive 0. "FIRST STRING" will go in the first 128
bytes of this sector. "SECOND STRING" will go in
the second 128 bytes.
Outputs data
AIPDPEMMIXEi
t
.
APPENDIX A.
PROGRAMMING EXERCISE
ANSWERS
PROGRAMMING EXERCISE #5-1
90
PRINT: PRINT "CHECKS FOR CAR EXPENSES"
OPEN "I" ,*1 ."CHECKS"
IF E0F( 1) = -1 THEN 100
INPUT *1 ,A$,B,C$
IF C$ = "CAR" THEN 70
GOTO 90
PRINT: PRINT "CHECK PAYABLE T0:"iA$
PRINT "AMOUNT:" SB
GOTO 30
10
20
30
40
50
60
70
80
90
1
130 OPEN "I"
140 OPEN "0"
150
160
170
PROGRAMMING EXERCISE #6.1
200
190
t
,
210
220
>
230
240
.
PROGRAMMING EXERCISE #6.2
10
OPEN "I"
.
*1
"0"
,
#2.
20 OPEN
30 IF EOF(l)
=
40 INPUT *1
A$
50 PRINT:
,
,
-
1
THIS"
90 GOTO 30
CLOSE *1
CLOSE *2
120 KILL "ANIMALS/DAT"
130 RENAME "1NEW/DAT" TO "ANIMA
102
2G0
270
280
290
300
310
320
1
HE
1
1
R$
THEN CLOSE *1:
N$, A$. P$
GOTO 10
"MEMBERS/DAT"
"TEMP/DAT"
CLS
INPUT "DO YOU WANT TO CHANGE THE
FILE"! 02$
IF EOF(l) = -1 THEN 320
INPUT *li N$. A*
P$
PRINT: PRINT "NAME :" N$
PRINT "ADDRESS :" A$
PRINT "TELEPHONE :" P$
IF 02$ = "NO" THEN 300
PRINT: PRINT "DO YOU WISH TO:"
PRINT "1) CHANGE THE ADDRESS?"
PRINT "2) DELETE THE MEMBER?"
PRINT "3) GO ON TO THE NEXT MEMBER?"
INPUT N
ON N GOTO 290. 160, 300
GOTO 230
INPUT "INPUT NEW ADDRESS"! A$
WRITE *2, N$» A$, P$
GOTO 160
PRINT: INPUT "DO YOU WISH TO ADD A NEW
MEMBER"
03$
IF 03$ = "NO" THEN 380
GOSUB 430
IF N$ = "" THEN 380
WRITE #2, N$, A$, P$
GOTO 340
CLOSE *1
*2
KILL "MEMBERS/DAT"
RENAME "TEMP/DAT" TO "MEMBERS/DAT"
GOTO 10
END
CLS: PRINT "PRESS WHEN FINISHED
PRINT
INPUT "NAME OF MEMBER:"
N$
IF N$ = "" THEN 480
INPUT "ADDRESS:"! A$
INPUT "PHONE NUMBER:"
P$
RETURN
,
*1
i
*2i
,
:
,
i
330
340
350
360
390
400
PRINT A$
60 INPUT "DO YOU WISH TO DELET
70 IF R$ = " YES" THEN 90
80 WRITE *2, A$
250
370
380
"ANIMALS/DAT"
"NEW/DAT"
THEN 100
,
120 GOTO 90
180
OPEN "I"
«1
"ANIMALS/DAT"
20 OPEN "0"
»2
"NEW/DAT"
30 IF EOF(l) = -1 THEN 70
40 INPUT *1
A*
50 WRITE «2i A*
G0 GOTO 30
70 CLOSE «1: CLS
80 PRINT "INPUT ANIMALS YOU WANT TO ADD"
90 PRINT "PRESS WHEN FINISHED"
100 INPUT A*
110 IF A* = "" THEN 140
120 WRITE «2, A$
130 GOTO 80
140 CLOSE *2
150 KILL "ANIMALS/DAT"
160 RENAME "NEW/DAT" TO "ANIMALS/DAT"
""
=
110 WRITE *1
100 CLOSE *1
10
:OSUB 430
100 IF N$
410
420
430
.
:
440
450
460
470
480
i
i
1
PROGRAMMING EXERCISE #6.3
PROGRAMMING EXERCISE 7.1
10
PRINT "DO YOU WISH TO -PRINT "(1) STORE A NEW FILE"
PRINT "(2) SEE THE FILE"
PRINT " (3) END"
INPUT 01
ON 01 GOTO 80. 130, 420
GOTO 10
OPEN "0". tli "MEMBERS/DAT"
10 CLS:
20
30
40
50
60
70
80
64
OPEN "D"
20 WRITE «1
30 PUT *1
31
,
WRITE *1
,
,
,
3
34 GET «1
,
3
38 PRINT A$
40 CLOSE *1
"NAMES/DAT
"J.
DOE"
2
32 PUT *1
36 INPUT *1
«1.
.
"BILL SMITH"
A$
.APPENDIX A
PROGRAMMING EXERCISE 7.2
FD — Bad
This produces an
36.
36
The
first field
INPUTs
it
File
Data
— error in line
in record 2 is "FLIES," a string. Line
into N, a
numeric variable.
PROGRAMMING EXERCISE 7.3
10
OPEN "D"
,
«1
1
TO
"NAMES/DAT"
,
20 GOTO 70
30 FOR X
=
160 LSET ZIP*
Z*
=
170 PUT #1 ,R
180 PRINT
190 INPUT "MORE DATA( Y/N)
200 IF AN* = "Y" THEN 30
210 CLOSE *1
"
X
10 OPEN
50 GOSUB 180
"D"i «1.
20 FIELD *1.
G0 NEXT X
RECORDd-10)"
80 IF X
>
10 THEN
80 IF X
<
1
100 GET #1
i
AN*
"MAIL/DAT". 57
15 AS LAST*,
ADDRESS*. 10 AS CITY*.
70 INPUT "WHICH
i
PROGRAMMING EXERCISE #9.2
10
PRINT "RECORD"
40 PRINT:
140 LSET CITY* = C*
150 LSET STATE* = S*
X
170
30 R
=
R +
10 AS FIRST*:
2
,
15 AS
AS STATE*, 5 AS ZIP*
1
40 CLS
THEN END
50 GET *1
X
60 PRINT LAST* " ," FIRST*
70 PRINT ADDRESS*
110 INPUT *li N*. A*. C»i S$i
Z$
PRINT "RECORD" X
130 PRINT N*, ,A*,.C*,,S*,,Z*
140 INPUT "DO YOU WANT TO CHANGE THIS"! R*
150 IF R* = "YES" THEN GOSUB 180
1B0 GOTO 70
170 CLOSE «1: END
180 INPUT "NAME"
N*
190 INPUT "ADDRESS "i A$
200 INPUT 'CITY :"i C$
210 INPUT 'STATE: '! S*
220 INPUT 'ZIP :"i Z*
230 WRITE »1
N*. A*. C$i S*: 1$
120 PRINT:
i
,
R
80 PRINT CITY*
90 PRINT ZIP*
"
."
STATE*
100 PRINT
110 IF LOF(l)=R THEN 140
120 INPUT "PRESS FOR NEXT NAME"'!E*
130 GOTO 30
140 CLOSE #1
PROGRAMMING EXERCISE #9.3
1
240 PUT «1
X
,
250 RETURN
PROGRAMMING EXERCISE #9.1
10 OPEN
"D" ,81
,
"MAIL/DAT" ,57
20 FIELD 81,15 AS LAST*. 10 AS FIRST*, 15 AS
ADDRESS* .10 AS CITY*
30 R
=
R
+
,2
1
40 CLS
LAST NAME'SL*
FIRST NAME" iF*
70 INPUT
ADDRESS" !A*
80 INPUT
CITY" iC*
90 INPUT
STATE" iS*
100 INPUT "ZIP CODE"iZ*
110 LSET LAST*
L*
120 LSET FIRST*
F*
130 LSET ADDRESS*
A*
AS STATE* .5 AS ZIP*
10 OPEN 'D" ,#1 ."POP" .15
20 FIELD *1 ,10 AS COUNTRY*
30 R = R + 1
'
,5
AS POP*
40 CLS
50 INPUT "COUNTRY" !C*
60 INPUT "POPULATION" !P
70 LSET COUNTRY* = C*
80 LSET POP* = MKN*(P)
85 PUT *1 ,R
90 PRINT
100 INPUT "MORE DATA(Y/N)' iAN*
110 IF AN* = "Y" THEN 30
120 CLOSE *1
50 INPUT
G0 INPUT
PROGRAMMING EXERCISE #9.4
10 OPEN
20
30
40
50
60
70
"POP"
"D"
,
#1
FIELD «1
.
10 AS COUNTRY*,
R
=
R +
,
,
15
5
AS POP*
1
GET 81
R
PRINT COUNTRY*, CON (POP*)
IF LOFUJOR THEN 30
CLOSE 81
,
65
APPENDIX
B.
CHAPTER CHECKPOINT ANSWERS
CHAPTER 4
CHAPTER 2
no way
A file can be renamed with the RENAME command.
For example, RENAME "OLDFILE/NAM" TO
"NEWFILE/NAM" renames OLDFILE/NAM to
1.
Unless the disk has been formatted, there
to locate any given area on the disk.
2.
The disk directory
NEWFILE/NAM. You must specify the extension for
tions,
both filenames so the Computer can find them.
3.
A
is
is an index of the names, locaand types of all the files on the disk.
disk
file is
an individual block of information
2.
stored on the disk, under a filename.
4.
1.
Information stored in
memory
find out
how much
ing on the disk by typing PRINT FREE
Computer
)
(ENTER)
.
This
disk.
3.
Unless otherwise specified, the Computer always
uses Drive 0. This can be changed by typing DRIVE
1, which enables you to access Drive 1 without having to specify the number in your command, (i.e.,
now DIR and DIR1 would both get you the directory
of the disk in Drive
1.
The only way to change the contents of a disk file is
by storing different information under the same
filename.
CHAPTER 5
1.
CHAPTER 3
1.
(
you the number of granules left on the disk
in Drive 0. If you are running out of granules, you
might want to KILL a few files or switch to another
is
turned OFF or if you execute a NEW, LOAD, DISKINI, BACKUP, or COPY command. (We'll discuss
BACKUP and COPY in the next chapters). Information stored on disk will be there permanently. It
won't be destroyed if the Computer's turned off or if
memory is cleared. (Don't leave a disk in the drive
when you turn the Computer off. We'll explain why
in the next chapter.)
5.
space you have remain-
will tell
will only be there
temporarily. It will be destroyed if the
You can
#1
tion going
Turning the Computer
in its drive
Buffer
ON
or
may damage the
OFF while
the disk
is a temporary storage area for informabetween the disk and memory.
is
disk.
2.
A disk file must be OPENed before any information
can go between the disk and memory.
Only
2.
felt tip
pens
may
be used to write on the disk's
Hard point pens and pencils
disk and garble the information on
label.
3.
may damage
the
3.
it.
end up where it's supposed to and
can be reopened. All files must be
closed before you switch disks.
in the buffer will
so that the
Error messages tell you that something is wrong
with either the program you are running or the last
command that you used.
4.
4.
"Write-protecting"
is
a
way
file
OPENed
A
file
for input allows information to go
file
OPENed
into the
CHAPTER 6
and type BACKUP0 (ENTER) The Computer will
ask you to insert the destination disk and press
(ENTER) This procedure is repeated until the Com-
1.
memory
of the Computer.
for output allows information to go
from memory to the disk
On a one-drive system, insert the source disk into the
drive
file.
.
.
OK. On a multi-drive system, type the
specifying the drive number
with the source disk and the destination disk. For
puter prints
BACKUP command
example,
(in Drive
66
A
file
from the disk
of protecting your disks
from alteration. It is done by putting a gummed label
over the write-protect notch. You can read from a
"write-protected" disk, but you can't write to it.
5.
A disk must be CLOSEd so that the information still
BACKUP TO
0)
backs up the source disk
to the destination disk (in Drive 1).
1
2.
OPEN a "sequential access" file, you can
only OPEN it for "I" or "O"— not both. You can't outWhen
you
nor can you input from a
put to a file opened for
file opened for "O."
"I,"
No. The
be closed and then reopened
file
for input.
must
first
.APPENDIX B
CHAPTER 7
1.
Records are equal-sized divisions in your disk file
where you can put your data. Since each is the same
size, the Computer can use them to access your data
5.
A comma
6.
A
7.
A string is printed simply as the string itself. It is not
causes the Computer to space over to the
next print column before printing another data item.
semicolon causes the Computer to print the data
items immediately next to each other.
directly.
2.
Fields are subdivisions of records.
3.
In a sequential access file, the only locations the
Computer knows are the beginning and ending of
the
file.
In a direct access
each individual record
4.
is
file, it
enclosed in quotation marks.
(by the size of the records).
Since each record of the file has a known location, the
Computer can access it without going through the
preceding parts of the file, as it would if the file was
sequential.
The minimum
2.
The Computer will
2.
The data must have a
it
file
to be
LSET
set the record length at
field
This length
256 bytes.
with a
is
specific length for
assigned in the FIELD
line.
MKN$ converts a number into a 5-byte coded string.
CHAPTER 10
size of a disk file is 2,304 bytes (one
granule). Since the
granules, a
1.
3.
CHAPTER 8
1.
CHAPTER 9
can determine where
Computer
1.
allocates disk space in
can be no smaller than one granule.
The Computer first WRITEs the number's sign (a
minus sign if it's negative or a blank space if it's positive). Then it WRITEs the number itself. Immediately following the
number,
it
WRITEs on
2.
You must type an A at the end of your SAVE command if you plan to ever MERGE it with a program
in memory.
The
line
number
of the
program saved on disk
prevails.
3.
trailing
The Computer reserves two buffers when you powerup.
blank space.
3.
4.
4.
The Computer reserves a total
space when you power-up.
5.
FILES
A string is written with quotation marks around it.
INPUT inputs only the data items listed, while LINE
INPUT inputs everything up to the (ENTER) character.
of
256 bytes of buffer
3, 3000 get the Computer to reserve 3 buffers
with a total of 3000 bytes of buffer space.
67
"
.
APPENDIX
"
.
)
C.
SAMPLE PROGRAMS
SAMPLE PROGRAM #1
BALANCING YOUR CHECKBOOK
This program creates a master disk file which contains
all your checks and deposits for the entire year. You can
print them out by the month or the year. If you want to
use your printer, change the appropriate PRINT lines
to PRINT #-2. (See Chapter 21 in Getting Started
with Color BASIC).
10
'
20
30
'
Checkbook Program
This program provides a
'
record
of
yo u r c heck s
?
40
deposits? and balances.
The checks can be labeled
50
with an account number to
show to what expense
60
they were paid* such as
medical rent food? etc
70
The program uses direct
addressing? each file record
80
being 40 bytes long? and
formatted as follows!
8
90
bytes for the date? 4 bytes
for the check or deposit
100
slip number? 20 bytes for
the recipient of the check
110
3 bytes for the account
number? and 5 bytes for the
120
amount of the check or
deposi t
130
140 CLEAR 1000
150 DIM CHK*<50)
160 CLS
170 PRINT 3 107? "SELECTIONS:"
180 PRINT a 162? "1) ADD CHECKS
TO YOUR FILE"
190 PRINT a 194? "2) LIST YOUR
CHECKS? DEPOSITS?
200 PRINT a 229? "AND BALANCES"
230 PRINT 3 322? "3) END JOB?"
240 PRINT a 394? "(1?2? OR 3>"
250 AN*= INKEY*
260 IF AN*="" THEN 250
270 ON VAL(AN*) GOSUB 310? 700?
1080? 1560
280 GOTO 160
290
300
31
This s u b r o u t i n e inputs
'
'
'
?
'
'
'
'
7
'
'
'
'
'
the data.
320
68
'
?
330 OPEN "D" #1 " CHECKS/DAT" 40
340 FIELD #1?8 AS DATE*? 4 AS CHNO*?
20 AS PDTO*? 3 AS ACNO*? 5 AS AMT*
350 REC = L0F<1)
360 REC = REC + 1
370 CLS
380 PRINT a 64? "CHECK OR
DEPOSIT (C/D)"
390 AN* = INKEY*
400 IF AN* = "D" THEN 430
410 IF AN* = "C" THEN 490
420 GOTO 390
430 INPUT "DEPOSIT DATE
(MM/DD/YY)";D*
440 INPUT "DEPOSIT SLIP NUMBER
NNNN " C*
450 P* = "
460 INPUT "ACCOUNT NUMBER* NNN) "? A*
470 INPUT "AMOUNT OF DEPOSIT" AMT
480 GOTO 550
490 INPUT "CHECK DATE (MM/DD/YY) " ;D*
500 INPUT "CHECK NUMBER NNNN >"? C*
510 INPUT "PAID TO" P*
520 INPUT "ACCOUNT NUMBER NNN) " A*
530 INPUT "AMOUNT OF CHECK"; AMT
540 AMT = -AMT
550 LSET DATE* = D*
560 LSET CHNO* = C*
570 LSET PDTO* = P*
580 LSET ACNO* = A*
590 LSET AMT* = MKN* AMT
600 PUT #1?REC
61.0 PRINT 3 320? "MORE INPUT(Y/N)"
620 AN* = INKEY*
630 IF AN* = "N" THEN 660
640 IF AN* = "Y" THEN 360
650 GOTO 620
660 CLOSE #1
670 RETURN
680
690
700
This subroutine balances the
checkbook and outputs the results.
710
720 OPEN " D" #1 " CHECKS/DAT" 40
730 FIELD #1,8 AS DATE*? 4 AS CHNO*?
20 AS PDTO*? 3 AS ACNO*? 5 AS AMT*
740 CLS
750 PRINT 3 160? "DO YOU WANT A
LISTING FOR A MONTH OR FOR THE"
760 PRINT 3 192? "WHOLE YEAR? (Y/M)"
770 INPUT A*
780 IF A* = "M" THEN PRINT 3 254?
?
?
?
)
;
<
5
<
?
;
<
(
'
'
'
'
?
?
?
1
I
)
-APPENDIX C
"WHAT MONTH(MM)" INPUT MN*
790 BAL =
800 FOR REC = 1 TO LOF
810 GET #1,REC
820 BAL = BAL + CVN(AMT*)
830 IF A* = "M" AND LEFT*< DATE** 2)
<> MN* THEN 1030
840 CLS
850 IF PDTO* = "
THEN 930
860 PRINT a 645 "DATE OF CHECK:":
PRINT a 84, DATE*
870 PRINT "CHECK NUMBER: ": PRINT
3 116,CHN0*
880 PRINT "PAID TO:" ."PRINT a
148, PDTO*
890 PRINT a 160> "ACCOUNT NUMBER:":
PRINT 3 180,ACNO*
900 PRINT "AMOUNT OF CHECK: ": PRINT
3 211, USING "**###.##" ;-CVN
910 PRINT "BALANCE:" PRINT a 243,
USING "**###„##"*; BAL
920 GOTO 980
930 PRINT:PRINT:PRINT "DATE OF
DEPOSIT:" SPRINT 3 85, DATE*
940 PRINT "DEPOSIT SLIP NUMBER:":
PRINT 3 117,CHN0*
950 PRINT "ACCOUNT NUMBER: ": PRINT
3 149,ACN0*
960 PRINT "AMOUNT OF DEPOSIT:":
PRINT a 180, USING "**###.##";
CVN
970 PRINT "BALANCE:" PRINT a
2 1 2 US I NG " **### .##''; BAL
980 PRINT a 256, "PRESS
FOR NEXT RECORD OR TO RETURN
TO 'SELECTIONS'"
990 AN* = INKEY*
1000 IF AN* = CHR*(13) THEN 1030
1010 IF AN* = "R" THEN 1040
1020 GOTO 990
1030 NEXT REC
1040 CLOSE #1
1050 RETURN
1540
1550
1560
This subroutine terminates
the pro gram.
Program #1" and sorts
:
(
:
,
'
'
'
'
1580 END
SAMPLE PROGRAM #2
SORTING YOUR CHECKS.
This subroutine will be especially helpful at tax time.
It takes the checks file which you created in "Sample
know
(or
)
:
15 70
to
exactly
all the checks by account. Want
how much you spent on medical bills
business expenses, contributions, etc.)? This prowill let you know right away.
gram
210 PRINT a 258, "3) SORT YOUR
CHECKS BY"
220 PRINT 3 293, "ACCOUNT NUMBER?"
230 PRINT a 322, "4) END JOB?"
240 PRINT 3 394, "(1,2, 3, OR 4)"
270 ON VAL(AN*> GOSUB 310,700.
1080, 1560
1060
1070
1080
This subroutine sorts the
checks from those with the
1090
smallest account numbers
to the largest account numbers
1100
using a "bubble sort".
Each check is handled as one
1110
data string to make the
swaps easier.
1120
1130 OPEN "D",#l, "CHECKS/DAT", 40
1140 FIELD #1,40 AS INFO*
1150 FOR
TO LOF(l)
1160 GET #1,
1170 CHK*(I) = INFO*
1180 NEXT I
1190 CNT =
1200 FOR I = 1 TO LOFU) - 1
1210 IF MID*(CHK*(I),33,3> <=
MID* THEN 1260
1220 TEMP* = CHK*(I)
1230 CHK* "ALL" AND AN* <>
MID*(CHK*,33,3) THEN 1510
1330 CLS
1340 PRINT 3 66, "ACCOUNT NUMBER:"
:PRINT a 85,MID*(CHK*(I),33,3>
1350 IF MID*(CHK*(I ), 13,20) =
"
THEN 1410
1360 PRINT a 98, "DATE OF CHECK:":
PRINT a 117,LEFT*
.
C.
PRINT a 181, MID*, 13,20)
1390 PRINT 3 194 "AMOUNT OF CHECK:
PRINT a 212, USING "**###.##";
-CVN,5)
1400 GOTO 1440
1410 PRINT a 98? "DATE OF DEPOSIT:"
PRINT a 117,LEFT*,8)
1420 PRINT 3 130, "DEPOSIT NUMBER:"
PRINT a 149,MID*
1430 PRINT 3 162* "AMOUNT
OF DEPOSIT: "
PRINT 3 1 80 USING "**###. ##"
CVN,5>
1440 PRINT 3290, "(PRESS < ENTER
TO SEE NEXT"
1450 PRINT 3322? "RECORD OR TO
RETURN TO"
1460 PRINT 3 354, "'SELECTIONS' )"
1470 A2* = INKEY*
1480 IF A2* = CHR*<13> THEN 1510
1490 IF A2* = "R" THEN 1520
1500 GOTO 1470
1510 NEXT I
1520 CLOSE #1
1530 RETURN
i
120
130
140
150
160
170
180
190
to
program #4)
'
7
CLEAR 1050
DIM ARRAY*<30)
OPEN "D",#l, "NAMES/NOS", 35
FIELD #1,35 AS INFO*
•}
'
2:.ee
First the file is checked
if there are any
records currently on it.
200
210
THEN 1=1: GO TO 310
220 IF L0F(1) =
1=1
TO LOF(l)
230 FOR
240 GET #1,1
250 ARRAY* U) = INFO*
260 NEXT I
270
The new names and numbers
280
are input and then concatenated
into 1 stringi ARRAY* (I)
290
300
310 CLS
320 PRINT a 64
330 INPUT "LAST NAME"?L*
340 INPUT "FIRST NAME" F*
350 INPUT "MIDDLE INITIAL" M*
360 INPUT "AREA CODE" A*
370 INPUT "PHONE NUMBER" P*
380 ARRAY*(I) = LEFT*?"
Want to store the names and telephone numbers of all
400 AN* = INKEY*
your club members? This program puts them all in a
410 IF AN* = "Y" THEN 1=1+1
disk file in alphabetical order. Add a few lines to it, and
GOTO 310
it will store their addresses and phone numbers also.
420 IF AN* = "N" THEN 470
430 GOTO 400
10
Create list and alphabetize.
440
20
Then, ARRAY*(I) is put into
450
30
The object of this program
al ptiabetical order.
is to create a file of
460
alphabetically arranged names
40
470 FOR J=l TO I
The
and phone numbers.
480 FOR K=J TO I
50
names and numbers are first
ARRAY* (K)
490 IF ARRAY* (J)
input into an array, ARRAY* I
THEN 530
60
then put into alphabetical
500 TEMP* = ARRAY* J)
order, and finally put into
510 ARRAY*(J) = ARRAY*(K)
70
a disk file called "NAMES/NOS". 520 ARRAY* = TEMP*
The file is 35 bytes
530 NEXT K
80
lor.9, all of it allotted to
540 NEXT J
The
55
one variab e, INFO*.
t rans560
Fi nal y
the list
90
file can be added to anytime
f e r r e d into "NAMES/NOS".
a f t e r i t s c r e a t i o n a n d will
570
100
automatically be alphabetised.
580 FOR N=l TO
The program can be used
ARRAY* (N)
110
in conjunction with the "Search 590 L.SET INFO*
t
600 PUT #1,N
a
i s
p r o g r a m (sampl
"
'
t
,
)
t
'
•J
5
;
5
?
,
:
•>
'
'
'
'
'
'
'
(
)
'
<
'
'
1
'
'
'
1
'
'
'
1
70
,
d
"
.APPENDIX C
610 NEXT N
620 CLOSE #1
630 END
320 IF NAME* = NM* THEN 450
330
340
Program keeps comparing NM*
with NAME* from record MID
350
until NM* is found or enough
records have been seen
360
to show that it isn't in
the file
370
380 GET #1,MID
390 IF CNT > (L0F(l)+l)/2 THEN 710
400 IF NAME* < NM* THEN 570
410 IF NAME* > NM* THEN 640
420
430
When NM* is found it is
printed out
440
450 CLS
460 PRINT 3 104, NAME*
470 PRINT a 136, " (" AREA* 5" )" PHONE*
480 PRINT 3 195, "PRESS
TO CONTINUE,
490 PRINT 3 227, "ELSE PRESS
TO QUIT"
500 AN* = INKEY*
510 IF AN* = "Q" THEN CLOSE: END
520 IF AN* = CHR*(13) THEN 140
530 GOTO 500
540
550
Subprogram for when NAME* < 24 THEN 800
220 IF LEN(NM*) > 24 THEN 820
230 FIRST = 1
240 MID - INT( (L0F(l)+l)/2)
250 LAST = LOF(l)
260 CNT =
270
280
Program checks the last
record first because it won't
290
be checked in the regularsearch
300
310 GET #1,LAST
10
'
1
'
'
—
—
'
'
'
'
'
'
'
'
'
'
*
'
'
'
'
'
'
'
'
'
?
;
'
'
'
6.1.0
'
620
630
640
650
660
670
680
690
LAST = MID
MID = NM*
'
'
'
Subprogram for when NM*
is
700
710 CLS
720 PRINT 3 100, Nl*;" NOT FOUND"
730 PRINT 3 132, "TO TRY AGAIN
PRESS "
740 AN* = INKEY*
750 IF AN* = " " THEN 740
760 GOTO 140
770
780
Subprograms for modifving
NM* to a 20 bvte string
'
'
'
71
I
)
APPENDIX C.
790
800
810
820
830
'
NM* = NM*+" "
GOTO 210
NM* = LEFT* (NM*, 24)
GOTO 220
SAMPLE PROGRAM #5
UPDATE THE LIST
Update anything you want in the file you created in
"Sample Program #3." You can do it in a hurry with
this program.
300 IF AN* = "N" THEN 560
310 GOTO 280
320 PRINT 3 260, "EDIT NAME? (Y/N)"
330 AN*= INKEY*
340 IF AN* = "N" THEN NM* = NAME*:
GOTO 400
350 IF AN* = "Y" THEN 370
360 GOTO 330
370 LINE INPUT "
NEW NAME" ;NM*
380 IF LEN(NM*) < 24 THEN NM* =
NM*+
GOTO 380 ELSE 390
390 IF LEN(NM*> > 24 THEN NM* =
LEFT* (NM*, 24)
400 PRINT 3 292, "EDIT AREA
CODE? (Y/N)"
410 AN* = INKEY*
420 IF AN* = "Y" THEN 450
430 IF AN* = "N" THEN A* = AREA*
GO TO 460
440 GOTO 410
450 INPUT "
NEW AREA CODE"; A*
460 PRINT 3 324, "EDIT PHONE
NUMBER? (Y/N)"
470 AN* = INKEY*
480 IF AN* = "Y" THEN 510
490 IF AN* = "N" THEN P* = PHONE*
GOTO 520
500 GO TO 470
510 INPUT,"
NEW PHONE NUMBER" P*
520 LSET NAME* = NM*
530 LSET AREA* = A*
540 LSET PHONE* = P*
550 PUT #1,1
560 NEXT I
570 CLOSE #1
580 RETURN
590 OPEN "D",#l, "NAMES. NOS", 35
600 FIELD #1,24 AS NAME*, 3 AS AREA*,
8 AS PHONE*
610 OPEN "D" ,#2, "TEMP/FIL",35
620 FIELD #2,24 AS TNAME*,3 AS
TARE A*, 8 AS T PHONE*
630 FOR 1=1 TO LOF( 1
640 GET #1,1
650 CLS
6/.0 PRINT 3 68, "RECORD #";I
670 PRINT a 100, "NAME: " 5NAMF*
600 PRINT 3 132, "AREA CODE:"; AREA*
690 PRINT a 164, "PHONE NUMBER:";
PHONE*
700 PRINT 3 228, "DELETE THIS
RECORD? (Y/N)"
710 AN* = INKEY*
720 IF AN* = "Y" THEN 800
730 IF AN* = "N" THEN 750
740 GOTO 710
:
10
20
30
'
Edit your names file
'
The object of this program
edit the "NAMES/NOS" file
40
from "Create list and alphabetize" (Sample program #3). The
50
program can either retain a
record v change one of the variables
60
in that record? or delete the
record entirely from the file.
70
80 CLS
90 PRINT 3 106, "SELECTIONS:"
100 PRINT 3 I685 " 1) EDIT RECORD"
110 PRINT a 200, "2) DELETE RECORD"
120 PRINT 3 232, "3) END JOB"
130 PRINT 3 298, "1,2, OR 3"
140 AN* = INKEY*
150 IF AN*="" THEN 140
160 ON VAL(AN*) GOSUB 180,590,850
170 GOTO 80
1 80
OPEN " D " # 1 " NAMES NOS " 35
190 FIELD #1,24 AS NAME*, 3 AS AREA*,
8 AS PHONE*
200 FOR 1=1 TO LOF(l)
210 GET #1,
220 CLS
230 PRINT 3 68, "RECORD NUMBER:" ;I
240 PRINT a 100, "NAME:" ;NAME*
250 PRINT a 132, "AREA CODE:"; AREA*
260 PRINT 3 164,
"PHONE NUMBER";
PHONE*
270 PRINT 3 228, "EDIT THIS
RECORD? (Y/N)"
280 AN* = INKEY*
290 IF AN* ~ "Y" THEN 320
'
is to
'
'
'
'
,
,
72
.
,
:
;
•
.APPENDIX C
750
760
770
780
790
800
810
820
830
840
850
LSET TNAME* = NAME*
LSET TAREA* = AREA*
LSET TPHONE* = PHONE*
J=J+1
PUT #2, J
NEXT I
CLOSE
KILL "NAMES/NOS"
RENAME "TEMP/FIL" TO "NAMES/NOS"
RETURN
END
SAMPLE PROGRAM #6
GRADING TESTS
This program is ideal for teachers. It creates several
files of students and their test score. You can then
immediately find averages and standard deviation for
the entire class or for each individual student.
disk
10
'
20
30
'
Test pros ram
290 OPEN "0",#1,"NAME/FIL"
300 CLS
310 PRINT a 96, "ENTER NAME OF
STUDENT
320 LINE INPUT NAME*
330 WRITE #1,NAME*
340 PRINT 3 196, "(PRESS TO
ENTER" :PRINT 3 228, "ANOTHER NAME,
PRESS <0>": PRINT a 260, "TO QUIT)"
350 AN*=INKEY*
360 IF AN*="" THEN 350
370 IF AN*O"0" THEN 300
380 CLOSE #1
390 RETURN
400
410 '
This subroutine builds test
:
'
files.
420 '
430 CLS
440 PRINT 3 64
450 INPUT "NUMBER OF NEW TEST
FILE";TF*
460 IF TF* = " THEN 450
470 TF* = "TEST" + TF*
480 OPEN "I",#1,"NAME/FIL"
490 OPEN "0",#2,TF*
500 IF EOF(l) THEN 560
510 INPUT #1,NAME*
520 PRINT "NAME:"?NAME*
The object of this, program
input several
40
files a names file and several
test files.
50
The files can then he accessed
as desired and the
60
test scores processed to find
averages and standard
70
deviations.
The files are all
530 INPUT "SCORE" ; SCORE
sequential access files.
540 WRITE #2, SCORE
80
550 GOTO 500
90
560 CLOSE #1,#2
100 '
Main module of program
570 RETURN
110
580
120 DIM NAME* 30), GRADE <6, 30)
590 '
This subroutine inputs the
130 CLS
"NAMES" file and the
140 PRINT a 107," SELECT IONS"
600 '
desired test files and then
160 PRINT a 164, M 1) CREATE A
processes them either
'NAMES' FILE"
610
on a class basis or an
170 PRINT a 196, H 2) ADD A NEW
individual basis, and
TEST FILE"
620
then prints out the results.
180 PRINT a 228, "3) PROCESS SCORES"
630 »
190 PRINT a 260, H 4) END"
640 OPEN "I",#1,"NAME/FIL"
210 PRINT a 331, "1,2,3 OR 4"
650 IF EOF(l) = -1 THEN 690
220 AN*=INKEY*
660 Y = Y + 1
230 IF AN*="" THEN 220
670 INPUT #1,NAME*(Y)
240 ON VALNAME*(Y)
930 PRINT a 1 37 "SCORES:"
940 STUTOT =
950 FOR X=l TO N
960 PRINT TAB(10) GRADE
970 STUTOT = STUTOT + GRADE(X»Y)
980 NEXT X
990 AVE(Y) = STUTOT / N
1000 NUM =
1010 FOR X=l TO N
1020 NUM = +2
+ NUM
1030 NEXT X
1040 SD = SOR(NUM / N)
1050 PRINT USING ""/.
/.##.##";
"AVERAGE: "?AVE(Y)
1060 PRINT USING "V.
##.##";» STANDARD DE V I AT I ON " SD
1070 PRINT "PRESS TO SEE
NEXT NAME"
1080 AN* = INKEY*
1090 IF AN* = CHR*<13) THEN 1100
ELSE 1080
1100 NEXT Y
1110 CLS
1120 PRINT 3 105? "NO MORE NAMES"
1130 GOTO 1350
1140
1150
This portion processes the
scores bv the test number
1160
for the whole class.
1170
1180 INPUT "
WHICH TEST NUMBER" ?X
1190 CLS
1200 PRINT 3 4»"DATA FOR TEST
NUMBER "
1210 PRINT » NAME" STAB 25) "SCORE"
1220 TTOT =
1230 FOR Y=l TO YEND
1240 TTOT = TTOT + GRADED Y>
1250 PRINT TABU) NAME*( Y) ;TAB<25)
GRADE(X»Y>
1260 NEXT Y
1270 AVE
TTOT / YEND
1280 NUM =
1290 FOR Y=l TO YEND
1300 NUM = NUM + (AVE - GRADE X,Y)
1310 NEXT Y
1320 SD = SQR(NUM / (YEND - 1))
1330 PRINT: PRINT USING
;
<
<
'
""/
'
;
»
:
;
'
'
'
74
:
'
'
<
'
'/.
SAMPLE PROGRAM #7
CREATE-A-GAME
—
a house
These four programs will display 3 scenes
and two rooms. Each scene is stored on disk as a pro-
gram file.
10
'
20
30
'
"DISPLAY/BAS"
The ob-Ject of this program
show you how you can
40
access another program from
It uses
Your main program.
50
a main program called
"DISPLAY/BAS" and three graphics
6(3
p r o g ram s c a 1 e d " HOUSE / B AS "
"FOYER/BAS'S and "STAIRS/BAS"
(Natural 1y thev must be on
70
'
is to
'
'
'
»
1
'
d
i
H2
•/.#•/.•/.##.##"?
"AVERAGE FOR TEST #" ;X " " ?AVE
1340 PRINT USING "7.
##.##"; "STANDARD DEVIATION: "!SD
1350 PRINT: PRINT "
PRESS
FOR MORE"
1360 PRINT "
PROCESSING*
TO QUIT"
1370 AN* = INKEY*
1380 IF AN* = CHR*(13) THEN 820
1390 IF AN* = "Q" THEN 1400
ELSE 1370
1400 RETURN
1410
1420
This subroutine terminates
the program.
1430
1440 END
'
'
.
sk
bef ore
you
can
i-
un
th
i
s
"/.
4
) ,
4
4444
444
11
"
"
" 1
-APPENDIX C
80
program.
90
100
110 CLS
120 PRINT
106? "SELECTIONS:"
130 PRINT
170, "1) HOUSE"
140 PRINT
202, "2) FOYER"
150 PRINT
"3) STAIRS"
234
160 PRINT
266, "4) END JOB"
170 PRINT
330, "1,2,3, OR 4"
=
180 AN*
INKEY*
190 IF AN* =
THEN 180
200 IF AN* = u ^i THEN 250
210 CLS
220 PRINT 3 98, 'TO RETURN FROM
THIS SELECTION
230 PRINT 3 130, "PRESS ANY KEY"
240 FOR 1=1 TO 40: NEXT I
250 ON VAL (AN*) GOTO 260,270,280,290
260 LOAD " HOUSE /B AS ",R
270 LOAD "FOYER/BAS",R
280 LOAD "STAIRS/BAS" ,R
290 END
'
40 PMODE 3,
50 SCREEN 1,0
60 DRAW "BM104,60;D92;R48;U92;L48"
70 DRAW "BM44,20;R16B;D132;L132;
BL4 ;L12?BL4?L16;BM44, 102;U82"
80 DRAW "BM220,60;D100;
BM2 44,58?D126"
90 DRAW " BM42 ,102; D38 R8 ; U38 L8
100 DRAW "BM16, 148;D40;R4;U40"
110 DRAW "BM64, 14B;D40;L4;U40"
120 DRAW " BM80 ,124; D40 L4 U36
130 CIRCLE (144, 108),
140 CIRCLE (238, 117),
150 CIRCLE (45, 140), 15,4, .3,0, .7
160 CIRCLE (45,140), 15,4, .3, .95,
170 CIRCLE (53, 136),
180 LINE (0, 192) -< 16, 176), PSET
190 LINE (20, 172)-(44, 152), PSET
200 LINE (256, 192)-(212, 152), PSET
210 PAINT (28, 8), 3,
220 LINE (0,0) -(44, 20), PSET
230 LINE 256,
- 212, 20
PSET
240 LINE (220,60)-(244,59) PSET
250 LINE
16, 148>-(44, 124) PSET
260 LINE (16, 148)-(64, 148) PSET
270 LINE (64, 148)-(80, 124) PSET
280 LINE (80, 124)-(52, 124) PSET
290 PAINT (10, 10), 3,
300 PAINT (60, 32), 3,
310 PAINT (240, 20), 3,
320 PAINT1 28 64
2
330 PAINT (228, 70), 2,
340 PAINT (62, 156) ,4,4
350 PAINT (78, 150), 4,
360 PAINT
18, 156), 4,
370 PAINT (68, 128), 1,4
380 PAINT (128, 156), 2,
390 PAINT (40, 140), 4,
400 PAINT (48, 120), 2,
410 CIRCLE (46, 98), 5, 2,;
420 AN* = INKEY*
430 I F AN* = " " THEN 420
440 LOAD "DISPLAY/BAS'SR
;
?
;
)
(
(
?
)
,
(
10
"
HOUSE /B AS"
30 PMODE 3, 1
40 PCLS
50 SCREEN 1,0
60 DRAW " BM66 1 08 D48 ; R32 U48 L32
70 DRAW "BM66,68;R132;BM46,96;R132;
BM50, 156;R128"
80 DRAW "BM50,96;D60;BM178,96?D60;
"
5
;
,
BM206,88;D50"
;
<
'
"FOYER/BAS"
20
30 PCLS
'
,
) ,
,
(
90 DRAW "BM0, 136 R50; BM206, 136;R50"
100 LINE (46,96)-(66,68>,PSET
110 LINE
178, 96>-< 198,68) PSET
120 LINE (198, 68) -(206, 88), PSET
130 LINE (174, 156)~<206, 136), PSET
140 CIRCLE (92, 130), 5,0
150 PAINT (0,0), 3,
160 PAINT (0, 149), 1,4
170 PAINT (67,70) ,4,4
180 PAINT (55, 105), 2*
190 PAINT (194, 96), 2,
200 PAINT (82, 128) ,3,4
210 AN* = INKEY*
220 IF AN* = "" THEN 210
230 LOAD "DISPLAY/BAS'SR
10
(
,
10
"STAIRS/BAS"
20
30
40
50
60
PCLS
PMODE 3,
SCREEN 1,0
DRAW "BM60,20;R140;D120;L40?U32;
L4;D52;R4;U20;BM160, 160-L128;U150"
70 DRAW "BM4,62;D130;BM28, 166?U102;
BM144, 148; R12"
80 DRAW "BM40,72;D24;R36;U24;L36;
75
4
44 4
5
1
"
I
5
)
APPENDIX CBM44,76;D16;R2S;U16;L28"
'
LINE <0,0)-(60,20),PSET
120 LINE <200,20)-<255,0>,PSET
130 LINE (200, 140) -(255? 192), PSET
140 LINE (0, 192>-(32, 160),PSET
150 LINE <4,62>-<28,64),PSET
160 PAINT (120,4), 2,
170 PAINT (20, 20), 2,
180 PAINT (230, 20), 2,
190 PAINT (120, 40), 2,
200 PAINT (60, 16), 3,
210 PAINT (20, 64), 3,
220 PAINT (158, 124) ,4,4
230 PAINT (42, 74), 4,
240 LINE (28,8)-( 144, 148), PSFT
250 LINE (64, 12) --(156, 122),PSET
260 LINE (68, 12)-(156, 116),PSET
270 DRAW "BM144, 148;U38"
280 FOR 1=0 TO 9
290 DRAW "BM~8,28?U38"
300 NEXT I
310 DRAW "BM56,40;U28?BM48,31 111 8
BM40,22"U10"
320 PAINT (56, 84), 2,
330 CIRCLE(56,86),10,3, .4,0, .5
340 LINE (51,86)-(63,86) PSET
350 DRAW "BM56,84;L4;E7?D8"
360 FOR 1=1 TO 32
370 CIRCLE (120, 176), 1*2, 1/4, .25
380 NEXT I
382 DRAW " BM232 1 76 U 1 00 R2 D 1 00
383 CIRCLE 232, 180) 15 4, 1
5,
384 CIRCLE (232, 178) 6, 4, 2, 55
385 CIRCLE 232, 80) 15 4, 1 0,
386 CIRCLE 232, 82) 6, 4, 2, 1
55
390 AN* = INKEY*
400 IF AN* = "" THEN 390
410 LOAD "DISPLAY/BAS'SR
11.0
i
'
'
5
(
;
'
'
'
'
'
'
5
;
,
,
,
,
(
,
(
,
.
.
,
,
,
.
.
.
,
,
'
,
,
50
of transactions, and the
third, a listing of the updated
60
budget.
The program allows
for carryover from the previous
70
period's budget.
A Journal
can be printed out giving a list
of the budget expenses, and
80
balances.
(NOTE:
As written,
this program requires a printer
90
for outputting the Journal.
100
However, with slight modification, it could be used without
110
a printer.
120
130
140
Main module of program
150
160 CLS
170 PRINT 3 106, "SELECTIONS:"
180 PRINT 3 165, "1) BUILD BUDGET"
190 PRINT a 197, "2) UPDATE AN
ACCOUNT"
200 PRINT 3 229, "3) PRINT OUT A
JOURNAL"
210 PRINT 3 261, "4) END JOB"
220 PRINT 3 329, "1,2,3, OR 4?"
230 AN*= INKEY*
240 IF AN*="" THEN 230
250 ON VAL(AN*) GOSUB 360,950,
1450, 1970
260 GOTO 160
270
280
This subroutine builds the
budget file (cal led
290
BUDGET.ORG), and builds or
updates the file BUDGET. UPD
300
It allows you to input the
start date of the budget
310
and the total amount yolt
have to divide up to accounts.
320
Tentative amounts are entered
for each account and a
330
running balance is kept to
advise you of the amount
340
left in Your total budget.
350
360 OPEN " D" #1 " BUDGET/ORG"
370 OPEN "D",#2, "BUDGET/UPD" ,5
380 FIELD #1,5 AS OAMT*
390 FIELD #2,5 AS UPDAMT*
400 GOSUB 1810
410 IF L0F(2) =
THEN 470
420 FOR 1=1 TO 9
430 GET #2,
440 AMT(I) = CVN( UPDAMT*)
'
90 LINE (32, 12)-(92, 12),PSET
100 LINE (92, 12)~(100,20),PSET
.
'
'
'
'
'
'
SAMPLE PROGRAM #8
BUDGETING
This organizes your finances and prints out a journal on
your printer. You need a line printer with a line length
of at least 80 characters to run it.
10
20
30
'
Budget program
'
'
The object of this program
to build three direct access
40 ' files, one a listing of a
balanced budget, another, a listing
is
76
'
'
'
,
,
,
I
1
I
)
)
.APPENDIX C
450 PTOT =PTOT + AMT(I)
460 NEXT I
470 CLS
480 PRINT a 130. "DATE(MM/DD/YY) :"
490 PRINT 3 162, "PROJECTED INCOME
FROM:"
500 PRINT a 196, "SALARY:"
510 PRINT a 228, "OTHER:"
520 PRINT a 96
530 INPUT "
DATE(MM/DD/YY> :";DATE*
540 PRINT 3 162, "PROJECTED INCOME
FROM:"
550 INPUT "
SALARY: " SAL
560 INPUT "
OTHER:" OTHER
570 BTOT = SAL + OTHER
580 CLS
600 PRINT 3 9, "CURRENT BUDGET"
610 PRINT "ACCT# DESCRIPTION
BALANCE"
620 SUMBUD =
630 FOR 1=1 TO 9
640 PRINT USING "####7. 7.
7.####. ##-" ACNO< I
SPACE* DESC* (I AMT I
650 SUMBUD = SUMBUD + AMT(I)
660 NEXT I
670 PRINT 3 86, USING "*####.##-"
?AMT(1)
680 PRINT 3 419, USING
"7.
7.**###.##";
"REMAINING MONEY: " BTOT - (SUMBUD
;
;
"/.
;
;
)
?
)
;
(
5
- PTOT)
690 PRINT a 451, "ENTER ACCT# OF
ITEM TO BE"
700 INPUT "
CHANGED (000 TO
QUIT)" ;AN
710 IF AN =
THEN 790
720 CLS
730 N = AN / 100
740 PRINT a 105,ACNO(N)
750 PRINT 3 138,DESC*(N>
760 PRINT a 170, "*" ;AMT(N)
770 PRINT: INPUT »
NE W
AMOUNT" ;AMT(N)
780 GO TO 580
790 DATE = VAL( LEFT* (DATES, 2) +
M:i.'D*(DATE*,4,2) + RIGHT* (DATE*, 2)
800 LSET OAMT* = MKN*(DATE)
810 PUT #1,
820 FOR 1=1 TO 9
8;<0 LSET OAMT* = MKN* AMT I
840 LSET UPDAMT* = MKN*(AMT(I))
850 PUT #1,1+1
860 PUT #2,
8/0 NEXT I
(
(
)
)
880 CLOSE
890 RETURN
900
910
This subroutine builds a
transaction file called TFILE.DAT
920
which contains anv updates
to the budget, and updates the
930
file BUDGET. UPD .
940
950 OPEN "D",#l, "BUDGET/UPD-,5
960 OPEN "D",#2,"TFILE/DAT",36
970 FIELD #1,5 AS UPDAMT*
980 FIELD #2,3 AS ACN0*,8 AS DATE*,
20 AS DESC*,5 AS TAMT*
990 FOR 1=1 TO 9
'
'
'
'
'
1000 GET #1,
1010 AMT(I) = CVN(UPDAMT*>
1020 NEXT I
1030 GOSUB 1810
1040 CLS
1050 SUMBUD =
1060 PRINT a 9, "CURRENT BUDGET"
1070 PRINT "ACCT# DESCRIPTION
BALANCE"
1080 FOR 1=1 TO 9
1090 PRINT USING "####7. 7.
7.####.##-" ;ACNO(I)
SPACES* DESC* I AMT I
1100 SUMBUD = SUMBUD + AMT(I)
;
11.1.0
(
NEXT
)
;
;
(
I
1120 PRINT 3 86, USING
"*####.##-" 5AMT(1)
1130 PRINT a 419, USING "7.
**### ## " » TOTAL BALANCE " SUMBUD
1140 PRINT a 451, "ENTER ACCT# OF
ITEM TO BE
1150 INPUT "
UPDATED (000 TO QUIT)"; AN
1160 IF AN =
THEN 1350
1170 CLS
1180 N = AN / 100
1190 PRINT a 95, AN
1200 PRINT DESC*(N)
1210 PRINT USING "7.
%
**###.##" ;» CURRENT BALANCE" AMT (N)"
1220 PRINT: INPUT "DATE MM/DD/YY) " ;DT*
1230 PRINT "DESCRIPTION OF
'/.
;
:
.
;
;
(
)
TRANSACTION:"
1240 INPUT DS*
1250 PRINT "AMOUNT OF TRANSACTION:"
1260 PRINT "(NEGATIVE NUMBER FOR A
CREDIT)"
1270 INPUT TRANS
1280 AMT(N) = AMT(N) - TRANS
1290 LSET ACNO* = RIGHT* STR* AN) 3)
(
(
,
77
)
)
APPENDIX
1300
1310
1320
1330
1340
1350
1360
1370
1380
1390
1400
1410
1420
t
?
,
'
)
,
(
)
?
(
)
;
(
(
;
I)
)
This subrout i ne prints o u
listing the
1430
budget transact i cms, and
balances.
1440
1450 OPEN "D",#l, "BUDGET/0RG",5
1460 FIELD #1,5 AS AMT*
1470 OPEN "D",#2, "TFILE/DAT",36
1480 FIELD #2,3 AS T ACNO*, 8 AS
TDATE*,20 AS TRDESC*,5 AS TMT*
1490 GOSUB 1810
1500 CLS
1510 PRINT 3 172, "PRINTING"
1520 Get #1, I
1530 DATE* = STR*(CVN(AMT*)
1540 IF LEN(DATE*) < 6 THEN DATE*
= " " + DATE*
1550 DATE* = LEFT* (DATE*, 2) +
"/" + MID*(DATE*,3,2) + " / " +
RIGHT* (DATE*, 2)
1560 PRINT #-2, TAB (30) "BUDGET FOR
THE PERIOD"
1570 PRINT #-2, TAB (31)
"STARTING " ;DATE*
1580 PRINT #-2: PRINT #-2
1590 PRINT #-2 TAB 28 " ACCOUNT OR"
1600 PRINT #-2, TAB (10)
"ACCOUNT" ?TAB(27) "TRANSACTION"
1610 PRINT #-2, TAB (10) "NUMBER"
TAB (14)" DATE " TAB 27 " DESCR I PT I ON
TAB 47 " TRANSACTION" TAB 61
"BALANCE"
78
;
;
)
1620 FOR 1=2 TO LOF(l)
1630 GET #1,
1640 PRINT #-2
1650 PRINT #-2,TAB(12)ACN0(I-l>
TAB (17) DATE* TAB 27 DESC* I - 1
<
a J our-nal
(
.
C.
LBET DATE* = DT*
LSET DESC* = DS*
LBET TAMT* = MKN* TRANS)
PUT #2,L0F<2)+1
GOTO 1040
FOR 1=1 TO 9
LSET UPDAMT* = MKN*(AMT(
PUT #1,1
NEXT I
CLOSE
RETURN
'
JI
"
(
)
)
TAB(61)CVN(AMT*)
1660 BAL=CVN(AMT*)
1670 FOR J=l TO L0F(2)
1680 GET #2,
I
1 690
I F ACNO
-1
< > VAL T ACNO*
THEN 1730
1700 BAL=BAL - CVN(TMT*>
1710 IF CVN(TMT*) <,0 THEN CR*="CR"
ELSE CR*=""
1720 PRINT #-2,TAB(17)TDATE*?TAB(27)
CR*
TRDESC* TAB 47 ABS CVN TMT*
TAB (61 )BAL
1730 NEXT J
1740 NEXT I
1750 CLOSE
1760 RETURN
(
5
)
)
(
(
(
(
)
)
!
?
1770
1780
'
This subroutine sets the
values of the account numbers,
1790
ACNO(I), and account
de s c r i Pt i o n s DESC* I
1800
1810 FOR 1=1 TO 9
1820 ACNO(I) = I * 100
1830 NEXT I
1840 DESC*( 1)
"FOOD"
"RENT"
1850 DESC*<2)
"CAR"
1860 DESC*(3)
1870 DESC* (4)
"UTILITIES"
1880 DESC*(5)
"INSURANCE"
"TAXES"
1890 DESC*(6)
"CLOTHING"
1900 DESC* (7)
"ENTERTAINMENT"
1910 DESC*(8)
1920 DESC* (9)
"MISCELLANEOUS"
1930 RETURN
1940
1950
This subroutine terminates
the program.
1960
1970 END
'
'
,
'
'
'
'
(
)
-APPENDIX D
ASCII CHARACTER CODES
These are the ASCII codes for each of the characters on your keyboard. The first column is the character; the second
is the code in decimal notation; and the third converts the code to a hexadecimal Q6-based number).
Chapter 15 shows how
CHARACTER
to
use these codes with
DECIMAL
CODE
CHR$
to
HEXADECIMAL
CODE
produce a character.
CHARACTER
DECIMAL
CODE
HEXADECIMAL
CODE
SPACEBAR
*If shifted, the codes for these characters are as follows: (CLEAR) is
CD is 21
(hex 15);
and CD
is
92 (hex 5C);
®
is
95 (hex 5F);
©
is
91 (hex SB);
93 (hex 5D).
79
APPENDIX D
LOWER-CASE CODES
These are the ASCII codes for lower-case
letters.
You can produce these characters by pressing the
(SHIFT!
and
® keys simultaneously to get into an upper/lower case mode. The lower case letters will appear on your screen in
reversed colors (green with a black background).
CHARACTER
DECIMAL
CODE
HEXADECIMAL
CODE
97
98
99
61
e
101
g
65
66
67
1
102
103
104
105
k
107
m
108
109
a
b^^H
c
h
63
WflaBfiHHHHflBi
69
i
80
k
6B
ec
6D
mm
DECIMAL
CODE
HEXADECIMAL
CODE
^APPENDIX E
MEMORYMAP
DECIMAL
0-255
HEX
0000-00FF
256-1023
0100-03FF
1024-1535
0400-05FF
0600-0988
1536-2440
CONTENTS
System Direct
Page RAM
Extended Page
Video Text
DESCRIPTION
See Section IV of Getting Started with
BASIC for
RAM
Memory
Additional System
This
RAM
2441-top
0989-top of
RAM
ofRAM
is
used exclusively by
DISK BASIC.
These Random Access Memory locations are allocated dynamically and
contain the following:
RAM is
top of
RAM is
16383 for 16K
3FFF
for
systems;
systems;
32767 for
32K systems
for
top of
COLOR
detailed information.
1.
16K
Random File Buffer
Area
7FFF
32K systems
2.
File Control Blocks
(FCBs)
Total buffer space for random access files, 256
bytes are reserved for this on start-up. This value
can be reset by the FILES statement.
Control data on each user buffer. 843 bytes are
reserved for this on start-up. This value can be
reset by the FILES statement: (number of buffers
set
3.
Graphics Video
by FILES +
1)
x 281 bytes.
Space reserved for graphics video pages. 6144
bytes or 4 pages are reserved for this on start-up.
This value can be reset by the PCLEAR
statement: number of pages reserved by PCLEAR
X 1,536 bytes per page. (Note: All pages must
start at a 256-byte page boundary
i.e., a
memory location divisible by 256.)
Space reserved for BASIC Programs and
Variables. 6455* bytes (16K systems) or 22,839*
bytes (32K systems) are reserved for this on startup. This value can be reset by different settings of
Random File Buffers, FCBs, Graphics Video
Memory, String Space or User Memory.
Memory
—
4.
BASIC Program
Storage
5.
BASIC
Variable
Storage
"
6.
Stack
7.
String Space
Total space for string data. On start-up, 200 bytes
are reserved, but this can be reset by the CLEAR
statement.
8.
User Memory
Total space for user machine-language routines.
No
space is reserved for this on start-up, but this
can be reset by the CLEAR statement.
32768-40959
8000-9FFF
Extended
BASIC
40960-49151
49152-57343
A000-BFFF
C000-DFFF
COLOR
Read Only Memory
ROM
COLOR BASIC ROM
COLOR DISK BASIC
ROM
57344-65279
65280-65535
E000-FEFF
FF00-FFFF
MEM
Read Only Memory
Read Only Memory
Unused
Inp ut/Output
*Ifyou execute a PRINT
command, on start-up, you
overhead necessary to execute this command.
will,
get a
number a
little
lower than this because of the
81
APPENDIX
F,
SPECIFICATIONS
Type of disks
5V4" mini-diskettes
Radio Shack Catalog
Number 26-305
26-405 (package of three)
or 26-406 (package of 10)
Disk Organization
(Formatted disk)
Single-sided
Operating Temperature
18 to 113 degrees Fahrenheit
Double-density
35 tracks
18 sectors per track
256 data bytes per sector
Directory on track 17
10 to 45 degrees Centigrade
Memory Capacity
Unformatted
Soft sector
(I/O sector/track)
218.8 kilobytes per disk
6.2 kilobytes per track
179.1 kilobytes per disk
5.1 kilobytes per track
Data transmission speed
250 kilobits per second
Access Time
Track to track
Average
5
Settling time
82
m sec.
100 m sec.
15 m sec.
Number of indexes
1
Weight of Disk Drive
3.8 kg.
Disk Controller
WD1793
APPENDIX G
ERROR MESSAGES
/O
Division by zero. The Computer was asked to
divide a number by 0, which is impossible. You
could also get this error message if you do not
enclose a filename in quotation marks.
DS
File Already Exists.
or
COPY
a
file
to
You are trying to RENAME
a filename which Already
Exists.
AO
Attempt
to
open a data
file
which
is
Already
FC
too low (less
on the
than
1) or too
high (higher than the
disk).
Use a
number in the
a smaller record
different record
GET line, or assign
length in the OPEN line.
or
when you use
BASIC word that is
Function Call. This happens
FD Bad File Data. This error occurs when you PRINT
data to a file, or INPUT data from the file, using
the wrong type of variable for the corresponding
data. For example, INPUT # 1, A, when the data
in the file is a string, causes this error.
BS Bad Subscript. The
subscripts in an array are out
DIM to dimension the array. For
of range. Use
example, if you have A(12) in your program, without a preceding DIM line which dimensions array
A for 12 or more elements, you will get this error.
CN
Illegal
SOUND (260,260) or
CLS(IO) will cause this error. Also RIGHT$(S$,20),
when there are only 10 characters in S$, would
cause it. Other examples are a negative subscript,
such as A( - 1), or a USR call before the address
has been POKEd in.
maximum number of records the Computer can fit
PUT
contains.
a parameter (number) with a
out of range. For example
Bad Record Number. You have used an impossible
record number in your PUT or GET line. Either it
is
file.
Write or Input past End of Record (direct access
only). You are attempting to PUT more data in the
record than it can hold or INPUT more data than
it
Open.
BR
is a direct statement in
This could be caused if you load a
program with no line numbers.
the data
ER
AE
Direct Statement. There
FM
Bad File Mode. You have specified the wrong file
mode ("O," "I," or "D") in your OPEN line for what
Can't continue. If you use the command CONT
END of the program, you will
you are attempting
and you are at the
attempting to
get this error.
for "I"
to do.
For example, you are
GET a record from a file OPENed
(use "D") or WRITE data to a file OPENed
for "I" (use "O").
DD
redimension an array. An array can
only be dimensioned once. For example, you cannot have DIM A(12) and DIM A(50) in the same
Attempt
to
FN
Bad File Name. You used an unacceptable format
name your file.
to
program.
FO
DF
Disk Full. The Disk you are trying to store your
file on is Full. Use another disk.
DN
This
FS
is
either a Drive
Number
or Device
Number
DSKINI
or
BACKUP.
you have only one drive
with these two commands
File Structure.
ID
There
is
something wrong
file.
Illegal Direct statement.
You can only use INPUT
as a line in the program, not as a
IE
to see
End of file. Use EOF or LOF to check
when you've reached the end of the file.
When you have, CLOSE
IO
command line.
Input past
0).
Device Number error. You are using more buffers
than the Computer has reserved. Use FILES to
reserve more. You might also get this error if you
use a nonexisting buffer number (such as buffer
# - 3) or omit the buffer (such as FIELD 1 AS A$
rather than FIELD #1, 1 AS A$).
The field length is longer than the
Either the data was written
incorrectly or the directory track on the disk is
bad. See IO for instructions on what to do.
If
specify drive
(DSKINIO or BACKUP
Bad
with your disk
error.
Drive Number Error. You are using a drive number higher than 3. You will also get this error if
you do not specify a drive number when using
Field Overflow.
record length.
it.
Input/Output error. The Computer is having trouble inputting or outputting information to the
disk.
83
APPENDIX G.
Make
(1)
sure there
is
a disk inserted properly
and the drive door is
OS
is
not enough space in
closed.
at the beginning of your
get this error, there might be
something wrong with your disk. Try reinserting the disk first. Then try using a dif-
you
you still get this error, you probably have
a problem with the Computer System itself.
Call the Radio Shack Repair Center.
This error could also be caused by input/output
problems with another device, such as the tape
(3) If
OV
A
string
may
only be 255
to reserve
more
Overflow. The number
puter to handle.
is
too large for the
Com-
RG RETURN without GOSUB. A RETURN line is in
your program with no matching
GOSUB.
SE
Set to non-fielded string. The field in which you
are attempting to LSET or RSET data in has not
yet been FIELDed. Check the FIELD line.
SN
Syntax
recorder.
String too Long,
program
string space.
still
ferent one or reformatting it. (Remember
that reformatting a disk erases its contents.)
NE
of String Space. There
memory to do your string operations. Use CLEAR
(2) If
LS
Out
in the indicated drive
This could result from a misspelled
error.
characters.
command, incorrect punctuation, open parenthesis, or an illegal character. Type the program line
The Computer can't find the disk file you want.
Check the disk's directory to see if the file is there.
If you have more than one disk drive, you might
not have included the appropriate drive number
in the filename. If you are using COPY, KILL, or
RENAME (discussed in the next chapter), you
or
might have
left off the
ST
NEXT
A string operation
into shorter steps.
NF NEXT without FOR. NEXT is being used without
a matching FOR statement. This error also occurs
when you have the
String formula too complex.
was too complex to handle. Break up the operation
TM
extension.
command over.
lines reversed in a
Type Mismatch. This occurs when you try to
assign numeric data to a string variable (A$ = 3)
or string data to a numeric variable (A =
"DATA"). This could also occur if you do not
enclose a filename in quotes.
nested loop.
NO
File
OB
Out of Buffer
Not Open. You cannot input or output data
a file until you have OPENed it.
space.
Use FILES
to reserve
UL
Undefined Line. You have a GOTO, GOSUB, or
other branching line in the program asking the
Computer to go to a nonexisting line number.
VF
Verification.
to
more
have the
space.
to a disk.
OD
Out
A READ was executed with insuffiDATA for it to READ. A DATA statement
there
of Data.
cient
is
tions on
You will only
get the error
VERIFY command ON and
The Computer
a flaw in what
what
it
is
when you
are writing
informing you that
wrote. See 10 for instruc-
to do.
may have been left out of the program.
WP
OM
Out
of
Memory. All available memory has been
used or reserved.
84
Write Protected. You are trying to store information on a disk which is Write Protected. Either
take the label off the write protect notch or use a
different disk. If your disk is not Write Protected,
then there is an input/output problem. See 10 for
instructions on what to do about this.
.
.APPENDIX H
DISK BASIC SUMMARY
is a short summary on each new DISK BASIC "command." You may also use any of the EXTENDED COLOR
BASIC commands. (See Getting Started with Extended Color BASIC or the Color Computer Quick Reference Card
This
for
a complete
listing.)
The first line gives the format to use in typing the command. The
which you can specify with the command.
This
is
the
meaning of some of the parameters you may
italicized
words represent "parameters"
— values
specify:
filename
must have a filename. The filename should be
number
mandatory. It must have 1 to 8 characters.
All information stored on a disk
in this format:
name/extension:drive
The name is
The extension is optional. It can have 1 to 3 characters.
The drive number is optional. If you do not use it when opening a disk
the drive specified in the DRIVE command).
file,
the Computer will use drive
(or
number
This
(5
may be
a number
(1, 5.3),
a numeric variable (A, BL), a numeric function (ABS(3)), or a numeric operation
+ 3, A-7).
string
This
may be
characters ("B," "STRING"), a string variable (A$, BL$), a string function (LEFT$(S$,
+ A$).
5)),
or a string
operation ("M"
data
This
may be number or string.
BASIC
WORD
BACKUP source drive TO destination drive
PAGES
DISCUSSED
13-15
Duplicates the contents of the source drive to the destination drive. If you only
have one drive, specify it as the source drive. The Computer will prompt you to
switch disks as it makes the backup copy. Executing this command will erase
memory.
BACKUP
13
CLOSE #
TO
BACKUP
1
buffer,
.
26-27
.
Closes communication to the buffers specified. (See OPEN for buffer numbers).
If you omit the buffer, the Computer will close all open files.
CLOSE «1
*2
CLOSE *1
,
COPY filenamel TO filename2
21
Copies the contents of filenamel to filename2. Each filename must include an
extension. (See format for filenames above.) Executing this command will erase
memory.
COPY "FILE/BAS" TO "NEWFILE/BAS"
COPY "ORG/DAT:0" TO "ORG/DAT: 1"
85
.
APPENDIX
H.
BASIC
WORD
CVNistring variable)
Converts a 5-byte coded string (created by
DISCUSSED
50
MKN$)
back
to the
number
it
represents.
x=cvnia$)
DIRdrive number
11
Displays a directory of the disk in the drive number you specify. If you omit the
drive number, the Computer will use drive 0. (Unless you use the DRIVE command to change this default.) This is a typical directory display:
BAS
B 3
MYPROG
BAS
A 1
Y0URPR0G
A 5
DATA
1
HERDATA
BIN
2 B 2
USRPROG
The first column is the name of the file. The second column is its extension. The
type (0 = BASIC program, 1 = BASIC data file, 2 = machine lan= editor source file). The fourth column is the storage format
(A = ASCII, B = Binary). The fifth column is the file length in granules.
third is the
file
guage
3
file,
DIR
DIR0
DRIVE
drive
11-15
number
Changes the drive default to the drive number you
DRIVE command,
DRIVE
specify. If you
the Computer will default to drive
do not use the
0.
1
DSKINIdriue number
Formats a disk in the drive number you
erase memory.
8
specify.
Executing this
command will
DSKINI1
DSKINI0
DSKI$
drive number, track, sector, string variablel, string variable2
Inputs data from a certain sector within a certain track on the disk in drive
number. The first 128 bytes of data are input into string variablel; the second
61-62
128 bytes into string variable2.
DSKI$ 0. 12
DSKO$
.
3i M*
t
N$
61-62
drive^number, track, sector, stringl, string2
Outputs stringMata into the sector, track, and drive number you specify, stringl
is output into the first 128 bytes of the sector; string2 is output into the second
128 bytes. Used improperly, this command could garble the contents of the disk.
"FIRST DATA", "SECOND DATA"
DSK0$ 0, 2, 1
,
EOF (buffer)
27
Returns a if there is more data to be read in the buffer and a more data in it. (See OPEN for buffer numbers.)
IF
EOFU)
FIELD #
=
-1
1 if there is
THEN CLOSE «1
buffer, field size
AS field name,
.
.
48-49
.
Organizes the space within a direct access buffer into fields. (See
buffer numbers.) You specify the size and name of each field.
5 AS C$
FIELD »1» 10 AS A*. 12 AS B$
86
no
OPEN for
.
.APPENDIX H
BASIC
FILES
PAGES
WORD
DISCUSSED
buffer number, buffer size
Tells the
54-55
Computer how many buffers
to reserve in
memory
(buffer number),
and the total bytes to reserve for these buffers (buffer size). If you do not use
FILES, the Computer will reserve enough memory space for buffers 1 and 2,
and will reserve a total of 256 bytes for those buffers.
FILES
1
FILES
1000
.
5
FREE(drive number)
Returns the number of free granules on the disk in the drive number you
20
specify.
PRINT FREE(0)
GET #
buffer, record number
Gets the next record or the record number you specify, and puts
(See OPEN for buffer numbers).
GET «1
,5
GET *2.
34-36
it
in the buffer.
3
INPUT #
buffer, variable name,
Inputs data from the buffer you specify and assigns each data item in the buffer
to the variable name you specify. (See OPEN for buffer numbers.)
.
.
26-28
INPUT «1. A$. B$
KILL filename
20
you specify from the disk directory. (See the format for filenames above.) You must include the extension with the filename.
Deletes the filename
"KILL FILE/DAT:1"
KILL "FILE/BAS"
LINE INPUT #
data
the data up to the
for buffer numbers).
Inputs a line
(See OPEN
LINE INPUT «1
42-43
buffer,
(all
,
(ENTER)
character) from the buffer you specify.
X$
LOAD filename, R
BASIC program file you
specify from a disk into memory. By includthe program immediately after loading it. If
your filename does not have an extension, the Computer assumes it is BAS. (See
the format for filenames above.) Executing this command will erase memory.
LOAD "PROGRAM", R
LOAD " ACCTS/BAS: 1"
Loads the
ing R, the
Computer
will
RUN
LOADM filename, offset address
61
Loads a machine-language program file from disk. You can specify an offset
address to add to the program's loading address. If your filename does not have
an extension, the Computer assumes it is BIN. (See the format for filenames
above.)
LOADM "PROG/BIN. 3522
LOC(buffer)
Returns the current record
buffer numbers.)
number
of the buffer you specify. (See
OPEN
for
PRINT L0C(1)
87
APPENDIX
H.
basic
LOF(buffer)
Returns the highest
word
magnSro
37
numbered record
of the buffer
you
specify. (See
OPEN for
buffer numbers.)
FOR R = 1 TO L0F(1)
LSET field name = data
48-50
Left justifies the data within the field
than the
the RIGHT
"BANANAS"
field,
LSET A$
=
name you
the data
characters will be truncated (chopped off).
LSET B$ = T$
specify. If
is
larger
MERGE filename, R
53-54
Loads a program file from disk and merges it with the existing program in
memory. If you include R, the Computer will immediately run the program
after merging it. (See the format for filenames above.) The disk program file
cannot be MERGEd unless it was SAVEd with the A (ASCII) option.
MERGE "SUB/BAS"
MERGE "NEW". R
MKN$(number)
Converts a number to a 5-byte coded string,
LSET B$
=
50
for storage in
a formatted disk
file.
MKN*(53B78310)
OPEN
"mode" # buffer, filename, record length
Opens a place in memory called a buffer which will communicate data to and
from a certain device. The buffers and the devices they communicate with are:
screen or printer (it is not necessary to open this buffer)
—
- 1 — tape recorder
-2 — printer
1-15 — disk drive
The communication modes you can use are:
— inputting data from a sequential access
O — Outputting data to a sequential access
D — Inputting or outputting data to a direct access
I
26-28,
29-31,
33-38
file
file
file
The filename you use should be in the format defined above. If you do not give
filename an extension, the Computer will give it the extension DAT.
If you are opening communication to a direct access file, you can also specify
the record length. If you don't, the record length will be 256 bytes.
OPEN "D"
OPEN "I"
"FILE"
f
«1
»
*2 "CHGE/DAT"
.
,
15
PRINT # buffer, data list
PRINTs the data to the buffer. (See OPEN for buffer numbers.) You may use a
comma or a semi-colon to separate each item in the data list.
PRINT «1
PRINT #
.
"DATA"
buffer,
USING format; data list
Prints data to the buffer using the format you specify.
which can either specify a numerical or string format,
numerical formats
#
may consist of any
sets the field of a
of the following:
number
formats a decimal point
88
27-28
45-46
The format
is
a string
"
.APPENDIX H
BASIC
WORD
DlIcufsED
$
formats a comma every third number
fills leading spaces with asterisks
places $ ahead of number
$$
floating dollar sign
,
**
+
in first position, causes sign to be printed before number; in last
-•-•"•
position causes sign to be printed after the number
prints number in exponential notation
prints a-minus sign after negative numbers
-
"*«.*"; 53.76
PRINT USING *1
PRINT USING #2. "#*$#.«*-"! -3.G78
.
string formats
may consist of either:
% % fields the length of a string.
prints the first character of the string
PRINT USING *1
"!"i "WHITE"
PRINT USING *1. "X Z"i "YELLOW"
!
!
.
See Going
Ahead With Extended Color BASIC
for
more information on the
formats.
PUT #
buffer, record number
Assigns a record number to the data in the buffer. If you do not specify a record
number, the Computer will assign it to the current record. (See OPEN for buffer
numbers.)
PUT *2. 3
PUT «1
>
34
H
RENAME old filename TO new filename
19-20
Renames a file on disk to a new filename. You must specify the extension of both
filenames.
RENAME "MFILE/DAT:1" TO "BFILE/DAT:
1
RSET field name = data
Right justifies the data within the field name you specify. If the data is larger
than the field, the RIGHT characters will be truncated (the same as with
LSET).
RSET M$
=
"SOAP"
RUN filename, R
9
Loads filename from disk and runs it. If R is included,
open. (See the format for filenames above.)
RUN "FILE'
RUN "PROG/BAS"
,
all
open files will remain
R
SAVE filename, A
8
Saves filename on disk. If you do not give filename an extension, the Computer
will give it the extension BAS. By using the A option, your program will be
saved in ASCII format. (See the format for filenames above.)
SAVE "PROG/BAS"
SAVE "TEST:1"
,
A
SAVEM filename, first address,
last address, execution address
Saves filename
a machine language program beginning at first address (in
memory) and ending at last address. You also specify the address in which it
will be executed. If you do not give filename an extension, the Computer will
give it the extension BIN. (See the format for filenames above.)
SAVEM "FILE/BIN: 1"
&H5200 &H5800 &H5300
—
,
,
61
.
89
APPENDIX
H,
BASIC
WORD
PAPFS
DISCUSSED
13
UNLOAD drive number
Closes any open files in the drive number you specify. If you don't specify a drive
number the Computer will use drive (or the drive number you specified with
DRIVE).
UNLOAD
UNLOAD
15
VERIFY ON
VERIFY OFF
Turns the verify function
ON or OFF. When VERIFY is ON, the Computer will
verify all disk writes.
WRITE #
data list
Writes the data to the buffer you specify. (See OPEN for buffer numbers.) Use
a comma to separate each item in the data list.
WRITE *1
90
buffer,
>
A$
.
B$i C
25 " 26
34-35
'
JNDEX
PAGES
SUBJECT
54, 59, 78, 79
ASCII
1 1
BACKUP
84
1 1
54
7, 57
26, 29, 54, 55, 84
7, 41 57, 58, 59
,
Bits
Bytes
,
CLOSE
26, 27, 34,
Connections
84
1,2
COPY
CRC
CVN
21,84
58
50, 85
DCBPT
DCDRV
60
60
60
60
60
60
78, 79
14
33-38, 47, 48
11,85
1 1
25, 58
58
48
DCODC
DCSEC
DCSTA
DCTRK
DECIMAL CODE
Destination Disk
Access
File
DIR
Directory
43,61,86
2
Interface
Direct Input
Disk
Care
KILL
LINE INPUT
LIST
13-17
of disk
7-8
Formatting
Inserting
Disk Drive
2,
Disk System
,
Logical Sector
LSET
Machine-Language
57, 60, 61
Memory
9
MERGE
87
50, 87
20
53, 54,
MKN$
Multi-Disk Drives
NEW
9
Numerical Formats
88
OPEN
OUTPUT
26, 27, 34,
PRINT
PRINT FREE
PRINT USING
PUT
1
,
RENAME
1 1
,
RESET
1
RMB
RSET
RUN
6,
85
82, 83
Salvage a Disk
SAVE
SAVEM
Sector
Field
FIELDED INPUT
Table
Files
Filename
Filename Extension
GET
Granule
Hexadecimal
60
88
20
45, 88
34, 35, 36, 88
59,
19, 27, 43, 44, 45, 48,
33, 34, 36, 37,
1
9,
54
55
88
15
60
89
9,89
,
Messages
FREE
87
26, 27, 61
Physical Sector
Records
27, 45,
FORMAT
86
86
61 87
87
37, 87
59, 60
48, 49, 50, 87
LOC
LOF
READ
EOF
DSKINIO
DSKI$
number
42, 43,
9,
LOADM
8
DSKO$
DSKCON
File
86
9
LOAD
3
57
85
60, 60
8,14,85
61,62
61 62, 85
Number
File Allocation
20,
,
Directory Entries
Error
26, 27, 34, 36, 37, 42,
,
Buffer
Drive
INPUT
13, 14,
Binary
Direct
PAGES
SUBJECT
8,
86
49
59
25, 54, 55, 58, 86
1 0, 59, 84
59, 84
84
7, 8, 47
86
86
58, 59
34, 35, 36,
57
Sequential Access File
SKIP
FACTOR
Source Disk
Specifications
Start-up
15
8,19,89
61,89
7, 57, 58
29-31
59
,.14
81
2-3
Storing on Disk
A BASIC Program
A Data File
A Machine-Language Program
Machine-Language Routine
String
Format
System Controls
String
8
23-39
61
60
84
88
57
91
INDEX
SUBJECT
PAGES
Technical Information
57-62
Tracks
57,
UNLOAD
13,89
VERIFYOFF
VERIFYON
15,
WRITE
WRITE PROTECT
92
58
15,
89
89
25, 34, 35, 37, 42,
89
15
.
SERVICE POLICY
Radio Shack's nationwide network
and
of service facilities provides quick,
conve-
computer products, in most
instances. Warranty service will be performed in accordance with Radio
Shack's Limited Warranty. Non-warranty service will be provided at reasonable
parts and labor costs.
nient,
reliable repair services for
all
of
its
Because of the sensitivity of computer equipment, and the problems which can
result
from improper servicing, the following limitations also apply to the
services offered by Radio Shack:
1
2.
If any of the warranty seals on any Radio Shack computer products are
broken, Radio Shack reserves the right to refuse to service the equipment or
to void any remaining warranty on the equipment.
If
any Radio Shack computer equipment has been modified so
that
within manufacturer's specifications, including, but not limited
to,
is
not
the
in-
it
any non-Radio Shack parts, components, or replacement
boards, then Radio Shack reserves the right to refuse to service the equipment, void any remaining warranty, remove and replace any non-Radio
Shack part found in the equipment, and perform whatever modifications are
necessary to return the equipment to original factory manufacturer's specistallation of
fications.
3.
The cost for the labor and parts required to return the Radio Shack computer equipment to original manufacturer's specifications will be charged to
the customer in addition to the normal repair charge.
RADIO SHACK, A DIVISION OF TANDY CORPORATION
CANADA
U.S.A.
FORT WORTH, TEXAS 76182
BARRIE, ONTARIO,
L4M4W5
TANDY CORPORATION
91
AUSTRAUA
KURRAJONG ROAD
MOUNT
874947OBC0
DRUITT, N.S.W. 2770
BELGIUM
PARC
INDUSTRIE!. NANINNE
5140 NANINNE
UNITED KINGDOM
BILSTON ROAD, WEDNESBURY
WEST MIDLANDS WS1B 7JN
PRINTED
IN U.S.A.
Source Exif Data:
File Type : PDF File Type Extension : pdf MIME Type : application/pdf PDF Version : 1.5 Linearized : Yes Page Layout : TwoPageRight Page Count : 104 XMP Toolkit : XMP Core 4.1.1 Metadata Date : 2013:05:22 07:38:40Z Create Date : 2013:05:22 07:34:30Z Modify Date : 2013:05:22 07:38:40Z Creator Tool : Digitized by the Internet Archive Producer : Recoded by LuraDocument PDF v2.53 Part : 2 Conformance : B Document ID : uuid:uuid:fd7605f0-0382-dcac-7c41-ed7a94745849 Version ID : 2 Title : Radio Shack Hardware Manual: Color Computer Disk System Owners Manual (1981)(Tandy) Creator : Digitized by the Internet Archive Keywords : http://archive.org/details/Color_Computer_Disk_System_Owners_Manual_1981_TandyEXIF Metadata provided by EXIF.tools