åååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååå463 ADAM   ‚Uªÿ BOOT       ˆDIRECTORY  ÈPR_ANFD1ATPRICLST4ATCPM1.TXTATCPM2.TXTATMLOAD.DOCATC.DOCAEFT€ADAMCPM1AT0REPAIR_ADDHMúFORMATAEFTN‚ANN_STAFFHQ¸RANDOM1AFTT;RANDOM2AFTYêD6AKS LEFT^šD$6AS LEFTt BUILDITAFTLAC03A LEFT‚œSHOPPERAFTˆthe Coleco ADAM computer - the 
ADAMnet floppy disk drives.  Delivery is scheduled to begin in 
early February of 1991.  The line contains two basic models:  a 
320 KiloByte 5.25 inch unit and a 720 KiloByte 3.5 inch unit.  
Several variations of each model will be available.

     The drives come complete with external power cube and 
connecting cable and are ready to plug in and operate.  The power 
cube plugs in to the back of the drive and uses standard 120 volt 
AC house current.  The connectiåååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååå                        Micro Innovations
                     12503 King's Lake Drive
                     Reston, Virginia  22091
                         (703) 620-1372

_________________________________________________________________


             ADAMnet Floppy Disk Drive Press Release
                         January 1, 1991

_________________________________________________________________


     Micro Innovations is pleased to introduce another new line 
of enhancement products for ~ezFILERAFTŠREADMETWOAšîBLOCKS LEFTœng cable is a 6 wire telephone 
cable and allows the drive to be plugged directly into the 
ADAMnet connector on the side of the ADAM or into another floppy 
disk drive's "ADAMnet Output" connector.  The drive does have an 
ADAMnet output connector to allow a second ADAMnet drive to be 
plugged into it.

     No software is provided with the drive as it is totally 
compatible with the Coleco drive.  However, public domain 
software, including TDOS, is available from the Micro Innovations 
Bulletine takes messages at 
all other times.  The Micro Innovations voice line also has a FAX 
machine connected to it.  Orders can be placed by voice during 
the normal office hours or by leaving a message on the answering 
machine or by FAX or BBS message at other times.

0KB 
5.25" drives will be shipped with a standard 320KB Double-Sided 
Double-Density PROM.  This drive can read 160KB, 254KB, and 320KB 
formats.  The unit can also be delivered with a 360K IBM-
compatible format, if desired.  Although this version stores more 
data than the standard 320K version, it cannot read or write the 
ADAM formats.  The standard 720KB 3.5" drives will be shipped 
with an E&T Software compatible PROM installed.  This model can 
also be delivered with an Orphanware compatible ith 640KB of
main memory, one RS-232 serial port, one parallel printer port,
one game controller port, clock/calendar, 360 KB floppy disk 
drive, 101 key keyboard, monochrome graphics board and monitor,
and fast RLL hard disk controller with 15, 32, or 65 MB hard disk.


Powermate AT:

     Complete 12 MHz IBM PC/AT compatible computer with 1 MB of 
main memory, one RS-232 serial port, one parallel printer port,
one game controller port, clock/calendar, 1.2 MB floppy disk 
drive, 101 key keyboar South 600 East, Salt Lake 
City, Utah 84106;  and The Adam Connection, P.O. Box 562, 
Champlain, New York 12919 - (518) 298-8193.  Other dealers are 
expected to be added to the list.  Please check with your 
favorite Adam dealer to see if he or she carries the drives.  If 
your dealer does not carry the drives, please have him or her 
contact Micro Innovations to sign up as a dealer.  Micro 
Innovations is open for business from 6:30 PM through 9:30 PM, 
Monday through Friday.  An answering machin Board System, at (703) 264-3908, for those who want or 
need it.  The Micro Innovations BBS operates from 6:30 PM to 6:30 
AM, Monday through Friday, and 24 hours a day on weekends and 
holidays.  Please do not call the BBS number during the day (8:00 
AM through 5:00 PM) during the work week as the BBS will not be 
up and the line is used for another purpose during that time.

     The two drive models are available in several variations.  
Unless specified differently at the time of order, the 32
                        Micro Innovations
                     12503 King's Lake Drive
                     Reston, Virginia  22091
                         (703) 620-1372


                 
                   Product Price List - 1/1/91


_________________________________________________________________

                  Powermate XT and AT Computers
_________________________________________________________________


Powermate XT:

     Complete 12 MHz IBM PC/XT compatible computer wPROM, if desired.  
There is no extra charge for the substitution of an alternate 
PROM, as long as it is identified at the time the order is placed.

     Introductory pricing is set at $199.00 for the 320KB unit 
and $249.00 for the 720KB unit.  The drives are available 
directly from Micro Innovations or from the following dealers:  
Adam's House, Route 2 Box 2756, Pearland, Texas 77581 - (713) 
482-5040;  NIAD, 6460 College Road, Lisle, Illinois 60532 - (312) 
961-3529;  Adam Link of Utah, 2337d, monochrome graphics board and monitor,
and fast 1:1 interleave RLL hard disk controller with 15, 32, or
65 MB hard disk.  Exhibits Landmark speed measurement of 16 Mhz 
and Norton version 4.5 computing index rating of 13.4.


     Custom 80386SX, 80386, and 80486 systems are also available 
upon request.  Call for quote.


                                                          List
Powermate XT/AT Base Units:                              Price 

     Powermate XT/15 . . . . . . . . . . .  . . . . . .  $100.00

Second Hard Disk Drive:

     10 MB Drive . . . . . . . . . . . . . . . . . . .  $150.00
     20 MB Drive . . . . . . . . . . . . . . . . . . .  $225.00
     40 MB Drive . . . . . . . . . . . . . . . . . . .  $300.00

Peripheral Cable (Serial or Parallel)  . . . . . . . .   $14.95

_________________________________________________________________

                   ADAMnet Floppy Disk Drives
_________________________________________________________________

     Stand- . . . . . . . . .  $150.00

Second Hard Disk Drives: 
     15 MB Drive . . . . . . . . . . . . . . . . . . .  $150.00
     32 MB Drive . . . . . . . . . . . . . . . . . . .  $225.00
     65 MB Drive . . . . . . . . . . . . . . . . . . .  $300.00

Video Upgrades:

     8/16 bit VGA board w/256K, upgradeable 
       to 512KB (800 X 600 with 256KB) . . . . . . . .  $100.00
     8/16 bit VGA board with 512K memory
          (1024 X 768 resolution)  . . . . . . . . . .  $150.00
     256KB to 512KB  . . . . . . . . . . . . . . . . . .  $249.00

_________________________________________________________________

                  Multi-Purpose Interface Board
_________________________________________________________________

     Plug-in board that adds two RS-232 serial ports, a parallel
printer port, and a memory expander board bank switching port to
the Coleco Adam computer. MIB2 I/O ports are compatible with
Powermate I/O ports.

                                                          
drives, two RS-232 serial ports, a parallel printer port, and a 
memory expander board port for the Coleco Adam computer.  

                                                          List
Base Units:                                               Price 

     Powermate 10  . . . . . . . . . . . . . . . . . .  $399.00
     Powermate 20  . . . . . . . . . . . . . . . . . .  $499.00
     Powermate 40  . . . . . . . . . . . . . . . . . .  $599.00

Options:

Floppy disk drive (specify 360KB or 720KB). . . . . .  $699.00
     Powermate XT/32 . . . . . . . . . . . . . . . . .  $799.00
     Powermate XT/65 . . . . . . . . . . . . . . . . .  $899.00

     Powermate AT/15 . . . . . . . . . . . . . . . . .  $899.00
     Powermate AT/32 . . . . . . . . . . . . . . . . .  $999.00
     Powermate AT/65 . . . . . . . . . . . . . . . . . $1099.00


Powermate XT/AT Options:

Second Floppy Disk Drives:

     360KB or 720KB  . . . . . . . . . . . . . . . . .  $100.00
     1.2MB or 1.4MB  . . . . . . . .alone floppy disk drives for the Adam Computer.  Plugs
in to ADAMnet.  Comes with external power cube and ADAMnet cable.
Available with several different PROMs.  Standard PROMs are: 320K
Double-Sided format for the 5 1/4" drive and 720K E&T Software
format for the 3 1/2" drive.  Other formats available are:  160K
Single-Sided and 360K IBM format for the 5 1/4" drives and 720K
Orphanware format for the 3 1/2" drives.

360 KB 5 1/4" unit . . . . . . . . . . . . . . . . . .  $199.00
720 KB 3 1/2" unitmemory upgrade kit . . . . . . . .   $50.00

Cables:

     IBM Serial (6 feet) . . . . . . . . . . . . . . .   $14.95
     IBM Parallel (6 feet) . . . . . . . . . . . . . .   $14.95

_________________________________________________________________

              Powermate Floppy/Hard Disk Subsystems
_________________________________________________________________

     Standalone add-on subsystems that provide one or two 10, 20,
or 40 MB hard disk drives, one or two 360K or 720K floppy disk List
Product                                                   Price

MIB2 Interface Board . . . . . . . . . . . . . . . . .   $74.95

Peripheral Cable (Serial or Parallel)  . . . . . . . .   $14.95


_________________________________________________________________

Notes:  Peripheral cables for the Powermate and MIB2 serial and 
parallel ports are not included with those units.  The disk cable 
is included with Powermate units.  ADAMnet cables are supplied
with the ADAMnet floppy disk drives. our communication with the  
rest of the computer world couldn't happen! Almost no software  
could be downloaded from the many public domain libraries  
around the country without CP/M. Even the superb modem programs  
that make ADAM the equal to any other computer are all writte  
in CP/M.      

While I personally think SMARTBASIC is a terrific version of  
BASIC --- and superior to most other versions, there ARE other  
versions of BASIC. Some versions such as MICROSOFT BASIC are  
extensivelCP/M FOR THE ADAM
BY THOMAS J. KEENE

As I advised the membership, in recent issues of the ADVISA, I  
have been trying, for some time, to obtain a comprehensive  
series of articles on the use of CP/M with our ADAM'S, to  
reproduce in our newsletter. On March 7th, in response to a  
request to a fellow newsletter editor, I received, in the mail,  
a disc full of such articles, written by an acknowledged master  
of the subject. Here is the first of those gems.     

This article commences a lenuse of CP/M as a way to communicate  
with that big outside world. When Coleco sold us the modem,  
they provided that infamous ADAMLINK I which was virtually  
worthless. With 9 bucks, a lot of luck and patience, we could  
(in the past) obtain ADAMLINK II. At least with ADAMLINK II we 
can talk across the country with another ADAM. And within very 
restricted limits, we can download some programs from a very few 
libraries. COMPUSERVE has a few useful files which ADAMLINK II 
can get. But ADAMLINKce it in it's original entirety. You can  
read the articles and make your own judgements on the validity  
of some of the content. Our sincere thanks to Tom for his  
kindness in providing the series for our use. I hope we do i  
justice. EDITOR.

CCP/M FOR THE ADAM, PART 1.  

As we all know, the ADAM computer is an extremely well  
conceived MICRO. Fortunately for us, the designers provided the  
CP/M system for ADAM before they closed down. For us, CP/M is a  
window to the world. Without it,

y used in the non-ADAM world. But we aren't limited to  
just SMARTBASIC. Many of us use MICROSOFT BASIC where its  
advantages are important. But there would be NO MICROSOFT BASIC  
for us without CP/M. And what about COBOL or PASCAL or  
FORTRAN. Who, other than an ADAM user, would think that the  
ADAM could use these powerful languages? And the beauty of it  
is, that we have many of these languages in our own public  
domain library --- but in CP/M, of course.   


For now, let's look at the gthy series on CP/M for the ADAM,  
written by the Editor of the Inland Empire ADAM User's Group  
Newsletter, Tom Keene. Tom has generously provided these as  
software copies of 19 articles he has written over the years.  
Compiling the series involved his searching back over several  
years of material, and he warns that some of the material is  
inevitably dated by the changes that have since occurred within  
the ADAM community. Rather than try to update the material, I 
have decided to reprodu II can't process binary coded files, which 
a good many files are. For that, you need CP/M to get a modem 
program that will handle binary coded files.   

There are several excellent CP/M modem programs in our public  
domain library. One is MBOOT, another is MADAM7 (and several  
earlier versions) and in my opinion the best --- MEX!   

With a good CP/M modem program you can share those programs you  
wrote with the rest of the world by putting them in the  
COMPUSERVE libraries, or other bulle
drive is "D"). This might sound a bit confusing, because you  
can boot CPM from either disk drive or either data drive. See  
page B24 of your CP/M manual for alternate setups.

ed his searching back over several  
years of material, and he warns that some of the material is  
inevitably dated by the changes that have since occurred within  
the ADAM community. Rather than try to update the material, I 
have decided to reproduaccurately transmitted to 
COMPUSERVE for example.  There is one terrific advantage in 
sending a high accuracy transmission via a CP/M modem rather 
than by the ADAMLINK II.  With the  CP/M modem you can use one of 
the error checking protocols of transmission rather than just 
shooting it over the wire and hoping for the best.     

Coleco provided a file in the CP/M package which will convert  
any ADAM EOS file to a CP/M file. The name of this file is  
ADAM.COM. The file extension after the de then you would type SORT --- just  
as it  appears. Then you will get the following screen          
prompt: 

ADAM FILE TYPE (H,h,A OR a) ? 

At this point it stops for you to insert the TYPE. In the case  
of SORT the TYPE is A. 

Then you get the next prompt: 

NAME CPM FILE ? 

It stops again for you to give your new CP/M file a name and   
file extension, if appropriate. I will identify the new file    
SORT.BAS. The  extension (or filetype) of BAS indicates that it 
is a BASIC file. T loaded into ADAM  
memory, you can start converting. I am going to assume that you  
are using two disk drives, but you could just as easily use  
a single disc drive and a datadrive or two data drives. If  
you loaded CP/M from disk drive 1, then that drive is  
identified as drive "A".If you had put your disk in drive  
2 then drive 2 will be identified as drive "A".     

Put the SMARTWRITER disk in drive 2 which will be identified  
as drive "B".(the left data drive is "C" and the right data  tin board libraries. With  
COMPUSERVE, you can send and receive some stuff without CP/M.  
But with almost every other bulletin board I'm familiar with, you 
can't even access them without CP/M.   

Can you send SMARTWRITER files (that is, text files) to and from 
libraries using CP/M? I can't think of a better way to do it. Any 
file you have written, whether it is a BASIC language program, or 
a documentary can be readily converted to a CP/M file. Suppose 
you have a text file that must be very As soon as you type ADAM <CR>, you will get a screen prompt: 

ADAM to CP/M FILE COPY UTILITY

ADAM TAPE/DISK IS DRIVE 
(A,B,C, or D) ? 

Then it pauses and you type in B (or whatever drive your       
SMARTWRITER file is on). ADAM will then respond with a screen   
prompt something like this: 

VOLUME = FIRST DIR 

TYPE FILENAME 
A SORT 
A CALTEC 
H HOWTODOIT 
h REJECT 

TRANSFER ADAM FILE ? 

It stops for you to type the file name to be converted. If the 
file SORT is to be convertedcimal point in the  
title is COM. This means that it is a COMMAND file. To invoke  
a COM file, all you have to do is type the file name and  
carriage return. All files of the file type COM automatically  
execute. The first thing you do is insert your CP/M disc (or  
datapack) and pull the reset switch. At this point I am assuming  
that the CP/M disc is the one you got from COLECO. (Later I  
will point out how you might pull the reset switch and nothing  
happens.) As soon as the CP/M system ishis doesn't mean a lot to ADAM SMARTBASIC,   
but for other  BASIC programs such as MICROSOFT BASIC, the file 
extension of BAS is important. If the file is just a text file I 
usually write TXT for the extension. Actually, you don't have to 
give any extension. Sometimes .001 or .002 help identify which 
version of a file it is. 

Anyway, as soon as you type the file name and extension, the    
transfer process starts. It is usually pretty fast and as soon  
as the file is in CP/M you get this scrS FOOTNOTE. Let's have some feedback on this series.     
Should we print one chapter each issue?. Or should we print     
more. Until I know how many of the members are interested in    
acquiring a working knowledge of CP/M, it is impossible for me  
to accurately gauge the effect printing one or more of these    
articles, will have on the readability of the newsletter from   
the point of view of those people for whom it is intended, the  
group members. 

Just take the time to let me know yourjust typing ^P (control-P) that 
is simultaneously  pressing the CONTROL KEY and P). Do that and 
then type TYPE  SORT.BAS followed by pressing <CR>. 

The printer begins to type and the first line looks good. But   
from  there on, it just types over and over and over that same  
line. You can  stop it with a ^C (CONTROL C). One of the        
problems here is that we have carriage returns but no line      
feeds. Is this anyway to run a  railroad? 

Did you ever notice in the back of the CP/M macimal point in the  
title is COM. This means that it is a COMMAND file. To invoke  
a COM file, all you have to do is type the file name and  
carriage return. All files of the file type COM automatically  
execute. The first thing you do is insert your CP/M disc (or  
datapack) and pull the reset switch. At this point I am assuming  
that the CP/M disc is the one you got from COLECO. (Later I  
will point out how you might pull the reset switch and nothing  
happens.) As soon as the CP/M system ising, and tabs the file  required. 
Now that you've  converted the file to CP/M 2.2 these           
characters are unnecessary and can be deleted." 

Well here's where that Filter Program is used. It will  rectify 
those missing line feeds and other extraneous "garbage". But    
that will have to be our topic next time. The Munnings Filter   
Program  does work, but there are shorter and superior filter   
programs which I  will discuss in our next article. 

Thomas J. Keene I.E.A.U.G. 

EDITOR'een prompt: 

ANOTHER FILE TO TRANSFER (Y or N) ? 

If  that's  all  for  now,  ---  then type N . Normally you     
should be able to take a look at the transferred file by typing 
TYPE SORT.BAS <CR>. (SMARTKEY VI will enter TYPE which is       
easier than typing it). 

Try it. But you won't be able to read it, because it will fly   
past so fast it is impossible to read. OK! How about typing it  
out on the printer? In CP/M you can direct anything that goes   
to the screen to be printed, by  wishes regarding this    
excellent series. 
ia a CP/M modem rather 
than by the ADAMLINK II.  With the  CP/M modem you can use one of 
the error checking protocols of transmission rather than just 
shooting it over the wire and hoping for the best.     

Coleco provided a file in the CP/M package which will convert  
any ADAM EOS file to a CP/M file. The name of this file is  
ADAM.COM. The file extension after the denual, in APPENDIX 
D, beginning on page D35 there is a thing called ADAM Filter    
Program? It was written by Stephen Munnings. Coleco didn't say  
what is  was for or what you did with it. And nowhere (that I   
ever found) was  there any comment about the weird behavior I   
mentioned above. There is  a  really  strange comment  in the   
manual on page B45  that "You might  notice some unrecognizable 
characters--garbage. These characters were used to tell         
SMARTWRITER what margins, spac                                 MLOAD

Description:

     MLOAD is a transient command used to  convert  a  "HEX"  file  (the
output of an assembler) into an executable "COM" file.

     In  its simplest form, MLOAD takes a program that is in valid Intel
hexadecimal format machine code and converts it into a command file that
can be executed.  The file becomes filename.COM (the hexadecimal file is
filename.HEX).  This form may be used as a replacement  to  the  Digital
Research "LOAD" command.
         1.  "MLOAD MYPROG" loads MYPROG.HEX and writes the  output
     to MYPROG.COM.

         2.  "MLOAD WS.COM,WSPATCH" loads  WS.COM, overlays it with
     WSPATCH.HEX, and writes the output to WS.COM.

         3.  "MLOAD BYE5=BYE5.COM,B5KP-1" loads BYE5.COM,  overlays
     it with B5KP-1.HEX, and writes the output file to BYE5.COM.

         4.  "MLOAD  WS.OVR,ORRPATCH"  loads W S.OVR and patches it
     with "OVRPATCH.HEX".

          Filenames may contain  drive/user  specs,  and  must that case, it specifies a HEX file to
     load.

     <file3> specifies HEX file(s) to load.

     <bias> is the offset within the  saved  image  to  apply  when
     loading the file.

          MLOAD  with  no  arguments  prints  a small help message.
     This message is also printed whenever a  command  line  syntax
     error occurs.

          ZCPR-style  du  specifications  are  fully supported, for
     both input and output files.  The following command lines  are
     permissible: origin is above 100h, LOAD.COM prepends blank space to
the  output file to insure it will work as a CP/M transient.  It doesn't
care if the file is not intended as a CP/M transient and it also doesn't
like hex records with mixed load addresses.  For example, one that loads
below a previous record; which is a perfectly  legitimate  happenstance.
Also, LOAD.COM can load only one program at a time, and has no provision
for a load bias in the command  specification.   Finally,  there  is  no
provision fe patched
     directly into MLOAD via DDT or  with  MLOAD  itself,  using  a
     patch file - its location is at 103H in MLOAD.COM).  Note that
     a command line of the  form  "C:=<FILENAME>"  will  place  the
     output file on the "C" drive with the same primary filename as
     the input file.

         This feature obviating any need to  use  DDT.   The  first
     (and  only the first) filespec (after the "=", if used) may be
     non-HEX and the filetype must be specified.  Examples:


     The  program  may  also be used to overlay portions of a "COM" file
with patches assembled to a new "HEX" file.

Syntax:

     mload [<outnam=>][<file1.type>,]<file2>[,<file3...>] [bias]

     <outnam> is the optional output file name.

     <file1.type> is an optional non-HEX  file  to  be  patched  by
     subsequently named HEX files.  Specifying the filetype enables
     this function.

     <file2> specifies the file to be loaded, unless  a  file1.type
     has  been specified.  In  not
     contain  wildcards.   Input  filenames  must  be  separated by
     comas, and a space is required between the last  filename  and
     the optional bias.


     A load information summary is printed at the successful  conclusion
of  the  load.  Any errors in loading will generally include the name of
the file in question.

     This program is a replacement for the  CP/M  "LOAD"  program.   Why
replace "LOAD"?  well...  LOAD.COM has a few deficiencies.  For example,
if the hex file's

         b3>mload a4:myfile.com=0:bigfil,b6:patch1,c9:patch2
         a6>mload b5:=c3:mdm717.com,mdmpatch

          Only  the  optional  drive  and user spec and the primary
     filename may be specified.  The  output  filetype  is  derived
     exclusively from the 3-byte string at 103h within MLOAD.

          If  no  output  filename is specified, it will be derived
     from the first input filename, with filetype of "COM", if  not
     otherwise  specified  (this  default  filetype  may bor user specification of the output file name.

     In  its  simplest  form,  MLOAD's  syntax is identical to LOAD.COM.
There should be no problem in learning to use the new program.  The only
significant  difference  here  is  that,  under  LOAD.COM, all files are
output starting at  100h,  even  if  they  originate  elsewhere.   MLOAD
outputs  starting at the hex file origin (actually, the first hex record
specifies the output load address).  The bias  option  may  be  used  to
override this.

    Input file could not be found, check spelling and try
                again.
        Disk full.
                No room on disk for output file.
        Directory full.
                No room in directory for output file.
        Premature end-of-file in <filename.ext>
                Error in input file, correct error, and try again.
        Checksum error in <filename.ext>
                Error in input file, correct error, and try again.
        Can't close <filename.ext>
                ould
do.

     Note that this program re-initializes itself each time it  is  run.
If your system supports a direct branch to the TPA (via a zero-length
.COM file, or the ZCPR "GO" command), you may safely re-execute MLOAD.


Error Messages:

        Command line syntax error
                Error in command line, re-enter and try again.
        Ambiguous file name: <filename.ext> not allowed.
                Ambiguous files are not allowed.
        File <filename.ext> not found.
            e.


INTRODUCTION

     Thió prograí wilì takå á WordStaò texô filå anä checë iô foò 
certaiî annoyinç erroró thaô iô ió harä tï catcè bù eye®  Iô wilì 
catcè twï kindó oæ erroró --

     Iô wilì makå surå thaô characteró thaô shoulä occuò iî pairs¬ 
     likå certaiî controì characters¬ quotes¬ parentheses¬ anä 
     brackets¬ actuallù do.

     Iô wilì flaç incorrecô uså oæ spaceó iî text¬ sucè aó extrá 
     spaceó betweeî wordó anä inconsistenô numberó oæ spaceó 
     between sentences.
Problem closing file, disk may be in Read/Only status.
        Memory full while loading <filename.ext>
                Error in input file, correct error, and try again.
        Format error in file <filename.ext>
                Error in input file, correct error, and try again.
        Writing <filename.ext>, nothing loaded

                                - end -
lename.ext> not allowed.
                Ambiguous files are not allowed.
        File <filename.ext> not found.
                 An example should clarify this.  Suppose you have a file that loads
at 1000h.  LOAD.COM would save an output file that begins  at  100h  and
loads  past  1000h  (to  wherever the program ends).  MLOAD will save an
output file starting from 1000h only.  If, for some reason, you need the
file  to  start  at  100h  in  spite of its 1000h origin (I can think of
several circumstances where this would  be  necessary),  you'd  have  to
specify  a bias to MLOAD.  Using this example, "MLOAD MYFILE 0F00" w            TEXT CHECKER Program -- A WordStar Utility


Copyright (C) 1985 by Arnold M. Kuzmack
                      3912 Montrose Dr.
                      Chevy Chase, MD  20815
                      (301© 986-027´ eveningó anä weekends


     Thió prograí maù bå freelù copied¬ distributed¬ anä used®  
However¬ thå authoò retainó alì copyrightó tï it®  Specifically¬ iô 
MAÙ NOÔ BÅ SOLÄ unlesó authorizeä iî writinç bù thå authoò iî 
advance, nor may it be included in any other package for sal    Input file could not be found, check spelling and try
                again.
        Disk full.
                No room on disk for output file.
        Directory full.
                No room in directory for output file.
        Premature end-of-file in <filename.ext>
                Error in input file, correct error, and try again.
        Checksum error in <filename.ext>
                Error in input file, correct error, and try again.
        Can't close <filename.ext>
                
     Erroró caî bå markeä iî thå filå oò listeä oî thå screeî oò 
the printer.


HOW TO USE THE PROGRAM

     Thå texô filå shoulä bå prepareä witè WordStaò iî thå normaì 
way®  Duå tï peculiaritieó iî thå waù BASIÃ readó disë files¬ 
paragraphó shoulä bå separateä bù blanë lines®  Iæ thió ió noô 
done¬ thå prograí wilì sometimeó misó thå enä oæ á paragrapè (abouô 
oncå everù 25° paragraphs© anä ruî twï paragraphó together®  Aó 
always¬ foò safety¬ á backuð shoulä bå madå oî á separatå disk.
 makå surå beforå startinç thaô therå 
ió enougè spacå oî thå disë foò thå originaì anä ne÷ files» other
wise¬ therå wilì bå á "disë full¢ erroò anä thå prograí wilì end.

     Thå prograí wilì theî displaù thå valueó iî effecô thaô werå 
reaä iî froí thå ABBREVÓ filå (seå below© oò thå defaulô valueó iæ 
ABBREVÓ ió noô found®  Thå displaù wilì looë likå this:

     Other options now in effect:

     Errors will be marked by [whatever character is selected].
     1 space [or 2 spaces] between seó ^Ã tï abort.

     Thå prograí wilì theî asë "Ho÷ dï yoõ wanô potentiaì erroró 
displayed?" and give you the following choices:

          Marked in the file (Y/N)?Š          Shown on the screen (Y/N)?
          Listed on the printer (Y/N)?

Yoõ caî picë anù oò alì oæ theså (oò none¬ iî whicè caså thå 
prograí wilì telì yoõ ho÷ manù erroró iô founä buô noô whaô theù 
were!)®  Iæ yoõ selecteä displaù oî thå screeî oò thå printer¬ yoõ 
will be asked

          Display context of the error (Y/Nnlù responseó allowed®  Somå peoplå prefeò tï havå twï spaceó 
betweeî sentenceó (likå thió text)¬ whilå otheró likå tï havå jusô 
one®  Whicheveò yoõ prefer¬ thió prograí wilì keeð yoõ consistent¡  ŠFinally¬ yoõ wilì bå askeä whetheò yoõ wanô FOOTNOTÅ mode®  Afteò 
thå questionó arå answered¬ thå abovå displaù wilì appeaò again¬ 
anä yoõ wilì bå ablå tï confirí theí oò changå theí again.

     Oncå yoõ arå donå answerinç thå questions¬ thå prograí wilì 
start checking your file and will display theoò occurreä anä correspondó tï thå "FÃ ½ ¢ displaù oî thå 
toð linå iî WordStaò (iæ yoõ havå "PAGE¢ anä "LINE¢ displayed¬ typå 
^OP).

     Iæ yoõ answeò "Y¢ tï thå "Markeä iî thå filå (Y/N)?¢ question¬ 
theî "#¢ characteró wilì bå inserteä iî thå filå aô thå placeó 
wherå potentiaì erroró arå detected®  Thå markeä filå wilì havå thå 
samå filå namå anä extensioî aó thå originaì file¬ anä thå originaì 
filå wilì bå renameä witè extensioî "BAK"®  Anù existinç "BAK¢ filå 
wilì bå deleted®  Yoõ shoulä
     Loaä thå prograí bù typinç TC®  Afteò thå copyrighô notice¬ 
thå prograí wilì asë yoõ foò thå namå oæ thå filå tï bå checked®  
Thå filå namå caî bå entereä iî uppeò oò loweò caså anä caî includå 
á disk-drivå designation®  Iæ thå filå can'ô bå found¬ aî erroò 
messagå wilì appeaò anä yoõ wilì bå askeä agaiî foò thå filå name®  
Iæ yoõ havå tï changå disketteó becauså thå filå waó oî á differenô 
diskette¬ dï sï BEFORÅ enterinç thå filå name®  Iæ yoõ decidå tï 
forgeô thå wholå thing¬ jusô presntences.
     FOOTNOTE mode [not] in effect.

     Press ESC to change options, any other key to proceed.

Iæ yoõ presó anù keù otheò thaî ESC¬ thå prograí wilì starô 
checkinç youò file®  Iæ yoõ presó ESC¬ iô wilì asë yoõ á serieó oæ 
questions®  Thå firsô ió whaô characteò yoõ wanô tï uså tï marë 
errors®  Yoõ musô enteò á singlå character¬ anä yoõ wilì geô á 
warninç iæ yoõ enteò á letteò oò á digit®  Second¬ yoõ wilì bå 
askeä whetheò yoõ wanô ± oò ² spaceó betweeî sentences» thoså arå 
thå o)?

Iæ yoõ answeò "N"¬ theî eacè potentiaì erroò wilì bå identifieä 
witè aî erroò messagå anä thå location®  Iæ yoõ answeò "Y"¬ therå 
wilì alsï bå á piecå oæ youò texô shown¬ witè thå erroò flaggeä bù 
á "#¢ characteò (oò anotheò characteò iæ yoõ changå thå default)®  
Thus, the display might look like this:

          Unmatched ^S at character no. 12845

          He auditioned for the lead role in ^S#Hamlet, but he

Thå "characteò no.¢ ió thå numbeò oæ characteró intï thå filå thaô 
thå err following messages:

          Erroró wilì bå markeä witè '#§ [oò somå otheò characteò 
               iæ yoõ havå changeä thå default]

          Press ESC to abort, any other key to pause.

          Characters read and checked: nnnnn

     Thå lasô messagå wilì sho÷ thå numbeò oæ characteró reaä beinç 
constantlù updated®  Thió ió includeä tï entertaiî yoõ whilå thå 
filå ió beinç checked¬ whicè caî takå á whilå foò á lonç file®  Iô 
wilì alsï givå yoõ somå confidencå thaô thå prograí ió act
     Iô wilì makå surå thaô characteró thaô shoulä occuò iî pairs¬ 
     likå certaiî controì characters¬ quotes¬ parentheses¬ anä 
     brackets¬ actuallù do.

     Iô wilì flaç incorrecô uså oæ spaceó iî text¬ sucè aó extrá 
     spaceó betweeî wordó anä inconsistenô numberó oæ spaceó 
     between sentences.

     Thå prograí assumeó thaô thå followinç characteró shoulä occuò 
in pairs:

          ^S for underlining.

          ^D for double-strike.

          ^B for bold-face.

       g 
complete" and the number of potential errors found.

     Thå prograí caî enä foò á numbeò oæ reasonó beforå finishinç 
thå joâ oæ checkinç thå file®  Foò example¬ yoõ caî aborô iô aô anù 
time¬ oò á "disë full¢ oò somå hardwarå erroò likå á baä disë 
sectoò coulä occur®  Iæ thió happenó anä yoõ werå havinç erroró 
marked iî thå file¬ yoõ wilì finä thå followinç haó happeneä oî thå 
diskº youò originaì filå witè itó originaì namå wilì stilì bå oî 
thå disk¬ anù "BAK¢ filå wilì havå beeî deleted¬orgeô 
tï inserô thå seconä ^Ó foò aî underlineä phrase¬ foò example¬ anä 
finä thå resô oæ youò text underlined.

     Therå will¬ oæ course¬ bå occasionaì situationó wherå thå 
matchinç characteò reallù doeó noô belonç iî thå samå paragraph¬ 
foò example¬ á ^Ä aô thå beginninç oæ á filå sï thå wholå filå ió 
printeä iî double-strikå mode®  Buô mosô oæ thå time¬ iô ió aî 
appropriatå assumption®  Thå alternativå ió jusô tï requirå aî eveî 
numbeò oæ ^Ó characters¬ say¬ iî thå wholå filå -- buô theproceeä iæ 
yoõ havå á largå filå oò expecô á largå numbeò oæ errors®  Yoõ caî 
theî uså thå "Finä anä replace¢ commanä (^QA© tï finä thå "#¢ 
characteró anä replacå theí witè nothing¬ theî correcô thå errors®  
Afteò thå firsô ^QA¬ yoõ caî jusô uså ^Ì tï repeaô iô withouô 
havinç tï enteò iô again®  Thió way¬ yoõ avoiä accidentallù leavinç 
the "#" characters in the file.


WHAT THE PROGRAM DOESŠ
     Aó noteä above¬ thå TEXÔ CHECKEÒ prograí scanó thå filå foò 
twï kindó oæ potentiaì errorsº
uallù 
doing something and hasn't fallen into an endless loop.

     Aó yoõ mighô gatheò froí thå seconä message¬ thå prograí wilì 
stoð iæ yoõ presó ESC®  Pressinç anù otheò keù (includinç ^C© wilì 
makå thå prograí pauså anä prinô thå messagå "Presó RETURÎ tï 
resume"®  Makinç thå prograí pauså ió particularlù usefuì iæ yoõ 
arå havinç erroró displayeä oî thå screeî anä therå arå toï manù tï 
read before they scroll up off the screen.

     Wheî thå prograí ends¬ iô displayó thå messagå "Checkin   ^X for strike-out.

          ^V for subscripts.

          ^T for superscripts.

          " (double quote).

          () parentheses.

          [] brackets.

Iô assumeó alsï thaô thå matchinç characteò shoulä occuò iî thå 
samå paragraph®  Thus¬ iæ iô findó aî odä numbeò oæ ^Ó characteró 
iî á paragraph¬ foò example¬ iô wilì flaç aî error®  Similarly¬ iæ 
iô findó á "(¢ withouô á ")¢ oò á "[¢ withouô á "]¢ iî á paragraph¬ 
iô wilì flaç aî error®  Thió wilì catcè situationó wherå yoõ f anä á filå witè 
extensioî "$$$¢ wilì havå beeî created®  Thå "$$$¢ filå wilì 
contaiî aó mucè oæ thå file¬ markeä witè errors¬ aó waó donå beforå 
thå prograí ended®  Thå prograí ió "faiì safe¢ iî thå senså thaô 
thå originaì filå ió noô modifieä iî anù waù anä ió noô renameä aó 
á "BAK¢ filå untiì thå processinç ió completed®  Iæ thå prograí 
endó abnormallù foò anù reason¬ thå besô thinç tï dï ió tï eraså 
thå "$$$¢ filå anä starô over.

     Havinç erroró markeä iî thå filå ió thå besô waù tï î nï 
erroró woulä bå flaggeä iæ aî eveî numbeò oæ erroró werå made¬ 
whicè seemó tï bå worse®  Aó witè anù potentiaì erroò flaggeä bù 
thå program¬ iæ thaô ió reallù whaô yoõ wanteä tï do¬ gï aheaä anä 
dï it.

     Thå prograí alsï lookó foò thå followinç typeó oæ erroró iî 
the use of spaces:
Š          Thå wronç numbeò oæ spaceó betweeî sentenceó (dependinç 
          oî whetheò yoõ choså ± oò ² spaceó betweeî sentenceó wheî 
          yoõ starteä thå program).

          Extra spaces betweteä iî á singlå paragraph¬ aî erroò messagå wilì appeaò oî 
thå screen¬ showinç thå currenô locatioî iî thå file¬ anä theî thå 
prograí wilì enä iî á fiô oæ pique¡  Second¬ iæ á singlå paragrapè Šió morå thaî 8,00° characteró lonç (oveò ² 1/² single-spaceä 
pages)¬ á warninç messagå wilì appeaò oî thå screeî anä thå prograí 
wilì continue®  However¬ thå checkinç maù noô bå correcô anä iô maù 
noô bå correctlù writteî tï thå disë iæ thå file-markinç optioî haó 
beeî selected®  Anyonå whï writeó á parater, as in "J. Smith".

          Iô ió iî aî abbreviatioî oæ singlå letters¬ aó iî 
          "U.S.A.".

          Iô followó aî abbreviatioî listeä iî thå ABBREVÓ file¬ aó 
          in "Rev. Jones".

          It is in an ellipsis, as in...

Alì oæ theså conditionó arå handleä appropriately®  Thå prograí 
alsï knowó tï skið oveò quotatioî marks¬ parentheses¬ brackets¬ anä 
control characters in determining whether an error has occurred.

     Iæ yoõ havå informeä thå prograí (througè thå AB theù wilì noô affecô thå filå wheî iô ió 
printed out.


THE ABBREVS FILE

     Thå ABBREVÓ filå containó abbreviationó afteò whicè iô ió OË 
tï havå onlù onå spacå afteò á period¬ eveî iæ yoõ wanô twï spaceó 
betweeî sentences¬ foò example¬ Mr.¬ Mrs.¬ Vol.¬ etc®  Thå filå ió 
supplieä witè about 50 abbreviations®  Yoõ caî adä additionaì 
abbreviations¬ usinç WordStar¬ uð tï á totaì oæ 400®  Iæ therå arå 
morå thaî 400¬ á warninç messagå wilì bå giveî wheî thå prograí ió 
ruî anä onlù thå firsôrd¢ 
spaces¬ theù wilì bå flaggeä aó potentiaì errors®  Thå probleí ió 
thaô botè "hard¢ anä "soft¢ spaceó looë thå samå oî thå screen¬ 
whicè makeó iô harä tï telì whaô thå erroò is®  Thå besô thinç tï 
dï isº turî justificatioî ofæ (^OJ)¬ reforí thå paragrapè (^B)¬ 
correcô thå error¬ theî turî justificatioî bacë oî (^OJ© anä reforí 
the paragraph again.

     Thå program'ó patiencå ió noô unlimited¬ anä twï conditionó 
wilì noô bå handleä well®  First¬ iæ morå thaî 30° spacinç erroró 
arå detecen words.

          Noô havinç á spacå afteò á punctuatioî mark.

          Havinç á spacå beforå á punctuatioî mark.

Á sentencå ió anythinç thaô endó witè á period¬ questioî mark¬ oò 
exclamatioî point®  Thå prograí ió smarô enougè tï realizå thaô á 
perioä doeó noô indicatå thå enä oæ á sentencå iæ onå oæ thå 
following conditions is found:

          It is in a number, such as 3.14159.

          It is at the beginning of a line (a dot command).

          It follows a single capital letgrapè thaô lonç deserveó 
whaô happenó tï them.


SKIPPING SECTIONS OF A FILE

     Therå wilì occasionallù bå partó oæ á filå thaô yoõ dï noô 
wanô checked®  Foò example¬ á tablå oæ numberó wilì havå á loô oæ 
"Extrá space¢ erroró flagged®  Tï makå thå prograí skið oveò á 
sectioî oæ thå file¬ simplù inserô "..SKIP¢ beforå thå sectioî anä 
"..START¢ afteò it®  Theså commandó musô bå thå onlù thinç oî thå 
linå anä musô begiî iî columî ± witè nï spaces®  WordStaò wilì 
treaô theså aó commentó sïBREVÓ file© 
thaô yoõ arå usinç thå Footnotå program¬ iô wilì alsï recognizå 
noteó anä notå calls®  Iô wilì allo÷ eitheò ± oò ² spaceó afteò thå 
footnote number in a note.

     Á peculiaò situatioî caî develoð iæ thå filå waó writteî witè 
justificatioî on®  Iî thaô case¬ WordStaò addó "soft¢ spaceó tï 
eacè linå sï thaô thå righô marginó arå aligned®  Thå TEXÔ CHECKEÒ 
prograí wilì recognizå theså extrá spaceó anä noô consideò theí tï 
bå errors®  However¬ iæ yoõ havå entereä extrá regular¬ "ha 40° wilì bå used®  Thå abbreviationó shoulä 
appear¬ onå tï á line¬ iî thå file®  Theù maù bå iî uppeò oò loweò 
case¬ oò á mixture¬ witè nï spaces¬ anä thå perioä afteò theí maù 
bå includeä oò omitted.

     Thå firsô linå oæ thå ABBREVÓ filå ió speciaì anä ió useä tï 
communicatå defaulô valueó tï thå program®  Thå firsô characteò oî 
thå firsô linå wilì bå useä tï marë errors®  Thå seconä characteò 
shoulä bå "1¢ oò "2¢ anä wilì bå useä aó thå numbeò oæ spaceó 
requireä betweeî sentences®  Iæ oæ memorù (á fataì 
error© iæ verù lonç paragraphó occur.

     Iî testó usinç floppù diskó oî botè thå IBÍ PC/XÔ anä thå 
Osbornå ± computer¬ iô tooë abouô onå minutå tï procesó 7,50° 
characteró anä writå á markeä filå oî thå disk®  Usinç eitheò á 
harä disë oò á RAÍ disë oî thå IBM¬ processinç speeä increaseä tï 
abouô 15,00° characteró per minute.


CONTRIBUTIONS

     Iæ yoõ likå thió prograí anä finä iô useful¬ feeì freå tï senä 
á contribution» É suggesô $15®  Also¬ iæ yoõ havå commentó å 
cases¬ á warninç messagå wilì bå displayeä anä youò firsô 
abbreviatioî wilì probablù bå ignored®  Oæ course¬ thå defaultó caî 
bå confirmeä oò changed.

     Thió methoä oæ specifyinç thå defaulô valueó yoõ wanô ió 
convenienô becauså yoõ arå mosô likelù noô goinç tï changå theí 
verù frequently¬ anä yoõ caî confirí theí witè á singlå keù stroke®  
Iæ yoõ wanô tï changå theí foò á particulaò run¬ yoõ caî dï so¬ aó Šdescribeä above.

     Thå prograí wilì reaä thå ABBREVÓ filå righô afteò locaoæ memorù (á fataì 
error© iæ verù lonç paragraphó occur.

     Iî testó usinç floppù diskó oî botè thå IBÍ PC/XÔ anä thå 
Osbornå ± computer¬ iô tooë abouô onå minutå tï procesó 7,50° 
characteró anä writå á markeä filå oî thå disk®  Usinç eitheò á 
harä disë oò á RAÍ disë oî thå IBM¬ processinç speeä increaseä tï 
abouô 15,00° characteró per minute.


CONTRIBUTIONS

     Iæ yoõ likå thió prograí anä finä iô useful¬ feeì freå tï senä 
á contribution» É suggesô $15®  Also¬ iæ yoõ havå commentó bå "#¢ tï marë erroró anä ± spacå 
betweeî sentences®  Again¬ thå defaultó caî bå confirmeä oò 
changed.


HARDWARE CONSIDERATIONS

     Thå prograí shoulä ruî oî anù 8-biô computeò witè á Z8° 
processoò runninç CP/M¬ versioî 2.² oò later¬ oò oî anù 16-biô 
computeò runninç MS-DOÓ oò PC-DOS®  Iô doeó noô recognizå sub-
directorieó iî MS-DOÓ oò PC-DOS®  Recommendeä memorù capacitù ió 
64Ë foò thå 8-biô versioî anä 128Ë foò thå 16-biô version®  Iô wilì 
ruî witè lesó memory¬ buô yoõ coulä ruî ouô yoõ wanô Footnotå noteó anä calló 
recognized¬ theî thå thirä characteò shoulä bå "+"®  Iæ therå arå 
onlù twï characteró oî thå firsô line¬ oò iæ thå thirä characteò ió 
anythinç otheò thaî "+"¬ theî Footnotå noteó anä calló wilì noô bå 
recognized.

     Iæ thå firsô characteò oæ thå firsô linå ió á letteò oò á 
number¬ theî erroró wilì bå markeä witè "#"®  Iæ thå seconä 
characteò ió anythinç otheò thaî "1¢ oò "2"¬ theî thå numbeò oæ 
spaceó betweeî sentenceó wilì bå seô aô 2®  Iî eitheò oæ thesoò 
suggestionó oò havå founä bugs¬ pleaså writå tï me®  Mù addresó 
appears at the beginning of this document.
RATIONS

     Thå prograí shoulä ruî oî anù 8-biô computeò witè á Z8° 
processoò runninç CP/M¬ versioî 2.² oò later¬ oò oî anù 16-biô 
computeò runninç MS-DOÓ oò PC-DOS®  Iô doeó noô recognizå sub-
directorieó iî MS-DOÓ oò PC-DOS®  Recommendeä memorù capacitù ió 
64Ë foò thå 8-biô versioî anä 128Ë foò thå 16-biô version®  Iô wilì 
ruî witè lesó memory¬ buô yoõ coulä ruî ouô tinç 
thå filå tï bå checkeä anä beforå askinç ho÷ erroró arå tï bå 
displayed®  Iæ iô can'ô finä ABBREVÓ oî thå defaulô drivå oò drivå 
A, it will display the message

     Can't find ABBREVS on default drive or drive A.
     What drive is it on (RETURN to skip)?

Iæ yoõ specifù á drivå anä thå filå stilì can'ô bå found¬ thå erroò 
message will be

     Still can't find ABBREVS.  Using defaults.

Iî thaô case¬ oò iæ yoõ diä noô specifù á drivå afteò thå firsô 
message¬ theî thå defaultó wilì                           ADAÍ CP/Í 2.2
                            Parô One

INTRODUCTION:

     WHAÔ IÓ CP/M¿  É supposå this ió á verù basiã questioî  manù 
whï havå neveò useä oò hearä oæ CP/Í mighô have®  Aó á simplå yeô 
accuratå  answer¬ let'ó gï tï thå basics®  Wheî yoõ looë aô  youò 
computer¬ nï matteò whaô thå branä oò design¬ it'ó easù tï forgeô 
thaô it'ó reallù jusô á glorifieä calculator®  Tï bå sure¬  therå 
havå beeî á loô oæ advancementó madå tï iô sincå thå dayó oæ  thå 
abacus thaî á radiï oò á televisioî knowó whaô channeì yoõ wanô  tï 
watcè doeó á computeò kno÷ ho÷ tï carrù ouô it'ó appointeä tasks!
Yoõ musô firsô telì iô whaô anä how.

     Iî  thå caså oæ á computer¬ thå PROGRAM telló  thå  computeò 
alì thaô iô ió expecteä tï do®  Thå OPERATING SYSTEM teacheó  thå 
computeò  ho÷ tï theså thingó whilå thå MICROPROCESSOR  doeó  thå 
actuaì work®  Alì threå oæ theså thingó musô bå iî placå iæ  thaô 
boø oæ wireó anä chipó ió tï dï morå thaî jusô siô there®   Therå 
aÍ ió aî alternativå tï 
thió  EOÓ whicè runó SmartBASIC¬ AdamCALC¬ SmartWriteò  anä  mucè 
more®   CP/Í ió loadeä froí disë oò tapå tï telì thå ADAÍ ho÷  tï 
ruî programó otheò thaî thoså availablå tï EOS.

     Insidå anù computer¬ nï matteò thå makå oò model¬ therå ió á 
maiî circuiô boarä calleä thå motheò boarä  anä accessorù controì 
boardó oæ anù quantity®  Thå motheò boarä containó thå  micropro
cessoò  chið thaô controló sucè thingó aó printers¬ disë  drives¬ 
etc®  Thå otheò boarä oò boaroæ  thoså manù reasons¬ É realizå thaô É woulä dï thå samå  thinç 
alì  oveò agaiî shoulä É havå thå chancå tï dï so®  Iæ yoõ  sticë 
witè må oveò thå nexô fe÷ paragraphs¬ É thinë you'lì seå why!

     É firsô goô intï computeró becauså É loveä tï plaù games®  É 
guesó that'ó probablù whaô goô mosô folkó starteä iæ theù stoð tï 
reallù thinë abouô it®  Wheî É boughô mù ADAM¬ iô waó becauså  iô 
woulä  leô  må plaù ColecoVisioî games®  Iô haä greaô  coloò  anä 
sound¬ gavå må á builô-iî worä processi
witè thå detailó involved.

     Thå ADAM¬ jusô likå anù otheò computer¬ haó á greaô deaì  oæ 
capabilitù  wrappeä uð iî thaô boø oæ electronicó  hardware¡   Iô 
caî  perforí untolä thousandó oæ taskó faò quickeò thaî thå  besô 
oæ  uó coulä dï bù hand®  Iô caî ouô computå Einstein¬ ouô  thinë 
Newton¬ tracë youò financeó witè á degreå oæ accuracù faò greateò 
thaî anù accountanô anä eveî turî oî youò TÖ set¡  Unfortunately¬ 
nï computeò knowó ho÷ tï dï anù oæ theså thingó oî it'ó own®   Nï 
morå¬ buô á devicå tï perforí calculationó ió alì thaô iô is.

     Now¬  consideò thaô á "computer¢ ió jusô á piecå  oæ  ratheò 
sophisticateä electroniã hardwarå thaô caî dï nothinç untiì iô ió 
taughô  HO× tï dï iô bù aî operatinç systeí (oò OS)® Thå  prograí 
systeí thaô telló thå ADAÍ ho÷ tï "operate¢ ió thå welì knowî EOÓ 
"Thå (E)lementarù (O)peratinç (S)ystem¢ covereä iî detaiì bù Fayå 
Deerå  iî  heò articles®  EOÓ ió storeä oî á  PROÍ  (programmablå 
reaä onlù memory© oî thå motheò board®  CP/ô  thå top¬ oæ course¬ ió YOÕ tellinç thå prograí whaô yoõ  wanô 
iô tï dï foò you®  Š
                 ------------------------------

WHÙ CP/M¿ ª ª STARTINÇ OUT:

     It'ó beeî á lonç timå sincå É firsô becamå á CP/Í user®   Sï 
mucè timå haó passeä thaô writinç thió articlå haó becomå á  reaì 
treaô  aó É takå á "trið dowî memorù lane"¡  Lonç  agï  forgotteî 
werå  thå reasonó whù É eveò boughô thaô CP/Í 2.²  anä  Assembleò 
packagå foò mù ADAÍ iî thå firsô place¡  Wheî É thinë bacë oî alì 
dó contaiî thå deviceó thå micropro
cessoò ió goinç tï uså tï dï thå work®  Iî thå caså oæ thå  ADAM¬ 
thå  Z8°  ió thå microprocessoò (oò brain© oæ thå  machine®   Thå 
secondarù  boarä  ió  thå  gamå boarä  thaô  supplieó  thå  coloò 
graphicó  anä thå sounä foò ouò programs®  Unlikå thå normaì  waù 
oæ settinç uð á computer¬ however¬ Colecï supplieä thå Z8° oî thå 
secondarù oò GAMÅ BOARÄ ratheò thaî thå motheò board®  Theiò manù 
reasonó  foò thió arå hardwarå relateä though¬ sï É won'ô  botheò nç program¬ anä iô pluggeä 
righô intï mù ColecoVisioî unit¡ Thå ADAÍ coulä alsï ruî programó 
foò countlesó otheò taskó likå anù otheò REAÌ computer¡  Iô coulä 
eveî bå useä aó aî electroniã typewriteò witè truå letteò qualitù 
printing®

     Mù  wifå  (whï generallù detestó computeró oæ  anù  kinä  oò 
shape©  haä beeî afteò må tï buù heò aî electriã  typewriter®   É 
compareä thå costó oæ variouó featureó theî available¬ weigheä uð 
thå featureó verseó cosô informatioî (keepinç iî minä thaô É  aí 
anä Assembleò packagå froí Digitaì Research®  É puô thå datá pacë 
intï thå drivå anä pulleä thå reset®  É waó greeteä bù á pleasinç 
"Welcomå tï CP/M¢ screen®  Therå werå SmartKeyó aô thå bottoí  oæ 
thå  screeî alonç witè somethinç newº aî A>ß  Eveî thå  SmartKeyó 
werå cryptic....DIR¬ ERA¬ REN¬ USER¬ SAVE¬ TYPE¡  Whaô diä alì oæ 
thió MEAN¿  Perhapó É shoulä reaä thå manual¿  Thaô didn'ô makå á 
loô oæ senså tï mù SmartBASIÃ orienteä braiî either¡  Oè well¬ oî 
thå  displaù shelæ iô goes¡  Iôá computer!¢ 
shå snappeä aó shå walkeä away¬ neveò tï eveî trù tï uså thå ADAM 
untiì shå actuallù HAÄ to®  Oè well¬ thaô lefô MÅ witè á ne÷ toy!

     Aó  thå monthó passeä anä É begaî tï geô morå familiaò  witè 
thå softwarå Colecï haä provideä É sooî realizeä thaô  additionaì 
ne÷  pieceó oæ hardwarå werå needeä iæ É werå tï continuå tï  uså 
ADAÍ foò productivå work®  É addeä memorù expanders¬ disë drives¬ 
doô matriø printers¬ extrá datá driveó anä eveî modemó tï mù  no÷ 
twï  ADAÍ systems®  ®  Iô coulä capturå á messagå oò anù otheò ASCIÉ  typå 
filå  buô thaô waó all¡  SmartFILEÒ wasn'ô smarô enougè tï uså  á 
doublå  sideä disë drivå foò LARGÅ datá-baseó anä iô waó slo÷  aô 
sortinç  eveî smalì bitó oæ data®  SmartFILEÒ alsï tooë uð  everù 
biô  oæ spacå oî á disë oò datá pack®  Thå databaså filå waó  ALÌ 
thaô yoõ coulä puô oî thå mediá containinç it¡  É wanteä tï puô á 
texô  filå oî thå samå disë detailinç whaô waó presenô buô  therå 
wáó jusô nï waù tï dï it.  

     Next¬  Smarä thå Kiddiå Citù storeó foò mileó around®  É boughô á  loô 
oæ games¬ aî autï-dialeò anä manù otheò programó É wasn'ô surå  É Šcoulä use®  Alì werå thå originaì Colecï softwarå packageó tï adä 
tï  mù collection®  Manù werå terrifiã Publiã Domaiî gamå  and/oò 
productivitù programó thaô haä neveò beeî offereä foò salå bù thå 
folkó aô Colecï foò onå reasoî oò another®  Witè alì thå softwarå 
É haä ámassed¬ É stilì wanteä more¡  MORE¡ 

     Onå oæ thå programó É haä purchaseä waó thå CP/Í 2.² progrwaó 
bounä anä determineä tï buù á computer© anä finallù camå uð  witè 
thå onlù wiså decision...® É boughô thå ADAM¡  No÷ tï selì iô  tï 
mù wifå anä livå tï telì abouô iô (grin).

     É showeä heò thå featureó oæ SmartWriteò anä ho÷ EASÙ iô waó 
tï  learn®  Iæ shå eveò forgoô anythinç shå coulä simplù looë  iô 
uð oî thå supplieä quicë referencå card®   Aó shå watcheä må worë 
oî á simplå letter¬ movinç sentences¬ movinç paragraphs¬ etc.¬ iô 
onlù tooë heò minuteó tï makå heò decision...® "It'ó  does¬ afteò all¬ havå onå  nicelù 
donå user'ó manual!

LEARNINÇ THÅ LIMITÓ OÆ EOS:

     Morå  monthó passeä aó É begaî tï ferreô ouô thå  poweò  anä 
alì oæ thå limitationó oæ standarä EOÓ software®  É wanteä tï uså 
á spreadsheeô tï maintaiî á VERÙ detaileä budgeô usinç  AdamCALC®  
Thå prograí haó á wealtè oæ featureó buô thå templatå sizå ió  sï 
limiteä thaô É coulä onlù coveò µ monthó oæ mù budgeô aô á  time¡  
Thå AdamLINË prograí couldn'ô downloaä á filå foò må oveò thå 30° 
bauä  modemÉ nï longeò haä á "toy¢ aó mù  "friends¢  alì 
calleä it..® É haä á COMPUTER¡  Iî thå monthó thaô followed¬ aó É 
workeä aô thaô superâ keyboard¬ É felì victií tï thaô "oè-sï-mucè 
dreaded¢  computeò viruó manù á lonç terí computeò useò haó  beeî 
fateä tï contracôº thå incurable "morå-mores"!

     Thå "morå-mores¢ sooî forceä må tï thå poinô wherå É  wanteä 
alì thå softwarå É coulä afforä anä laù handó oî foò mù ADAM®   É 
watcheä  thå  sales¬ É reaä alì thå ADAÍ vendor'ó  catalogs..®  É 
hauntetWriteò  limiteä må tï onlù á  handfuì  oæ  pageó 
beforå  iô lockeä uð anä mù worë waó lost®  Thå  earlù  favorite¬ 
SmartBASIÃ  haä á smalì filå sizå limiô buô á loô oæ  power®   Iô 
alsï  useä  noî-standarä calló sï É waó unablå tï uså  thå  BASIÃ 
fileó  generateä  oî  otheò computeró  withouô  MASSIVÅ  worë  tï 
rewritå thå pokeó anä peeks¬ etc.

     Despitå alì theiò limits¬ thå manù Colecï EOÓ programó haä á 
loô oæ builô-iî-power®  Iæ yoõ werå willinç tï restraiî  yourselæ 
tï onlù doinç weeä  á 
ne÷ computeò tï dï thoså thingó buô É jusô CAN'Ô AFFORÄ á ne÷ onå 
foò anù purpose®  What'ó left¿  Iô waó timå tï takå anotheò  lonç 
looë aô whaô É DIÄ havå available®  Iô waó timå tï looë onå  morå 
ôimå aô thaô CP/Í 2.² anä Assembleò package.

     Well¬  iô stilì lookeä likå somethinç useless®  É haä  thoså 
SmartKeyó thaô É stilì couldn'ô figurå out®  Iô stilì haä thaô A¾ 
anä  thå prograí jusô SAÔ there¡  É gavå iô á loô oæ thoughô  anä 
alì thingó pointeä tï må sittinç dowî tï actual NOÔ  possiblå 
tï anù knowî Colecï compatiblå software.

     Mù prograí needó werå basiã tï jusô abouô anù oæ thå  fieldó 
É  wanteä tï enter®  Iô didn'ô matteò iæ iô werå  foò  datá-base¬ 
spreadsheeô oò worä processing®  Alì thå basiã fundamentaì  needó Šwerå  therå foò alì typeó oæ softwarå É wanteä tï run®  É  needeä 
tï bå ablå tï gï beyonä thå limiô oæ "whaô woulä fiô neatlù  intï 
systeí  memory¢  Thaô meanó É wanteä tï accesó morå oæ á  prograí 
froí thå disë oò datá pacë wheî É needeä itOÍ foò anyway¿  É alsï sa÷ á filå calleä 
HELP® oî thå list®  Well¬ iô workeä oncå sï ..® HELÐ <RETURN>®  É 
musô havå donå somethinç wronç becauså thå linå droppeä dowî  anä 
no÷ iô saiä "HELP¿"  Okay¬ timå tï gï bacë tï thå manual®  

     Thå firsô fe÷ pageó gavå må á backgrounä oî thå CP/Í prograí 
anä ho÷ iô waó reallù aî alternativå Operatinç System®  Iô  seemó 
thå ADAÍ caî ruî morå thaî jusô onå OS®  Wheî wå uså  SmartBASIC¬ 
AdamCALC¬ SmartWriter¬ etc.¬ wå arå usinç EOS®  Thió CP/Í waó  aî  fileó createä oî otheò Z8°-baseä computeò 
systems¿  Whù couldn'ô É DOWNLOAÄ á prograí ratheò thaî jusô dï á 
CAPTURE¿  Ho÷ coulä É dï á spellinç checë oæ mù letters¿  É haä á 
loô oæ questionó thaô onlù seemeä tï havå onå answer...®  anotheò 
ãomputeò waó needed!

THÅ BOTTOÍ LINE..® CP/Í TÏ THÅ RESCUE!:

     Okay¬ let'ó puô alì thå cardó oî thå table®  É havå á ratheò 
extensivå ADAÍ systeí witè alì oæ it'ó ne÷ hardwarå anä software®  
É havå á loô oæ thingó É wanô tï uså iô foò buô can't®  É nhaô thå softwarå waó capablå of¬ yoõ coulä geô  aî 
amazinç amounô oæ uså froí youò ADAM®  Thå probleí witè goinç ouô 
beyonä  thoså limitó waó simpleº thå programó onlù containeä  thå 
driveró  tï utilizå printers¬ disë drives¬ etc® availablå aô  thå 
timå  theù werå written®  Thå ne÷ hardwarå jusô wasn'ô  supporteä 
aó  mosô oæ iô haä neveò beeî considereä bù Colecï engineeró  whï 
stilì  thoughô oæ thå ADAÍ aó á TOY¡  É haä alsï learned¬  tï  mù 
chagrin¬  thaô mucè oæ whaô É wanteä tï dï waó jusôlù REAÄ thå manuaì 
ôhaô camå witè thå datá pack®  

LEARNINÇ THÅ ROPES:

     Thå firsô thinç É learneä waó thaô thoså SmartKeù labeló  DÏ 
meaî something¡  É presseä thå onå labeleä DIÒ first®  Thå screeî 
theî reaä A>DIÒ _  Sincå nothinç happened¬ É presseä  thå  RETURÎ 
key®  Á lisô oæ filå nameó appeareä onscreeî iî twï columns®  No÷ 
É waó startinç tï geô somewhere¡  Thå fileó haä á strangå  naminç 
convention®  É sa÷ thingó likå STAT.COM¬ ASM.COM¬ ED.COÍ anä manù 
others®  Whaô waó thaô .C®  Witè á builô-iî 64Ë 
systeí memory¬ uså oæ á prograí waó limiteä tï ho÷ biç iô was® Iæ 
thå prograí werå writteî iî SmartBASIC¬ yoõ coulä onlù uså á filå 
ïæ lesó thaî 30K¡  AdamCALÃ haä thå samå problem®  

     É  alsï  wanteä tï bå ablå tï uså thå fulì disë sizå  aó  mù 
filå  sizå limit®  Whù bå stucë witè á 30Ë templatå oò lesó  wheî 
thå  disë stilì haó 120Ë oò morå lefô oî iô unused¿  Whù can'ô  É 
uså mù 64Ë memorù expandeò foò morå thaî jusô á "prinô  spooler"¿  
Whù couldn'ô É uså datá
replacemenô operatinç systeí witè differenô capabilitieó anä  ne÷ 
wayó  oæ usinç mù ADAM®  É nexô learneä abouô thoså  strangå  ne÷ 
SmartKeùó aô thå bottoí oæ thå screen.

     Thå DIÒ keù waó seô uð tï prinô thå commanä DIÒ wheî presseä Šsï thaô yoõ caî geô thå equivalenô oæ SmartBASIC'ó CATALOG®   DIÒ 
ió thå commanä CP/Í lookó foò tï prinô thå directorù foò you®   Á 
spacå ió alsï printeä sï thaô yoõ caî enteò thå drivå yoõ wanô  á 
directorù of®  CP/Í knowó abouô µ driveó useablå oî ouò ADAÍcommanä ió tï eraså á file®  Yoõ caî ERAså á filå froí anù  drivå 
thaô  yoõ havå onlinå anä loggeä in®  I'lì gï intï logginç  iî  á 
drivå anä whù yoõ woulä wanô tï dï sï á biô later®  Foò now¬ keeð 
iî minä thaô alì yoõ havå tï dï tï ERAså á filå ió tï hiô thå ERÁ 
SmartKEÙ (oò typå iî Å Ò A© anä follo÷ iô witè thå filenamå  thaô 
yoõ wanô erase®  Tï eraså á filå bù thå namå oæ JUNK.COÍ (jusô  á 
fictitiouó namå É madå up© yoõ woulä typå ERÁ JUNK.COÍ anä  presó 
thå RETURÎ key®  It'ó thaô easy¡  PrEÒ lookó aô drives¬ yoõ arå alì set!

     Witè CP/M¬ wå arå giveî drivå A¬ B¬ C¬ Ä anä M®  Thå thinç É 
haä troublå gettinç useä tï aô firsô waó thaô CP/Í waó  adaptablå 
tï  wherå iô waó booteä from®  Unlikå SmartBASIÃ whicè HAÄ tï  bå 
loadeä  froí tapå drivå ± tï kno÷ wherå thå HELLÏ filå was¬  CP/Í 
coulä bå loadeä froí ANYWHERE®  Iæ yoõ loadeä froí tapå drivå  1¬ 
thaô becamå drivå A>®  Iæ yoõ booteä froí tapå drivå 2¬ theî THAÔ 
becamå  drivå A>®  Everythinç elså jusô moves dowî onå placå  an listeä iî thå directorù witè  thå 
file'ó namå (calleä thå FILENAME)®  Thió ió followeä bù  á perioä Šanä  theî thå file'ó typå (calleä thå FILETYPE)®  Á prograí  sucè 
aó COPÙ (CP/M'ó prograí tï copù fileó froí onå drivå tï  another© 
÷oulä bå listeä iî youò directorù asº COPY.COÍ   

     Tï changå thå namå oæ COPY.COÍ to...saù MOVE.COM¬ yoõ  woulä 
uså CP/M'ó builô-iî REÎ command®  Wheî yoõ looë aô thå  directorù 
yoõ don'ô seå á prograí nameä REN.COÍ becauså thå codå tï  renamå 
á  filå ió BUIï  seå 
thå  fileó you'vå copieä uð tï thå memorù expander¬ yoõ caî  jusô 
typå DIÒ Mº (don'ô forgeô tï puô iî á coloî afteò thå drivå name© 
anä hiô thå RETURN®  CP/Í wilì eveî leô yoõ specifù whaô typå  oæ 
fileó yoõ wanô tï looë for®  Iæ yoõ typå DIÒ *.COM¬ yoõ wilì  geô 
á  lisô oæ onlù thå fileó thaô enä iî .COÍ  Thaô giveó uó á  faiò 
rundowî oî thå DIÒ key.

     Thå seconä SmartKEÙ ió labeleä ERA® Thió keù labeì ió jusô á 
shorteneä  forí oæ thå worä ERASE®  Thå obviouó uså oæ thió  CP/Í 
  anä 
yoõ  caî geô á directorù oæ anù oæ theí withouô eveò leavinç  thå 
drivå  yoõ arå on¡  Thió sectioî alsï explaineä thaô A¾  businesó 
foò me®  É waó alwayó useä tï D1¬ D2¬ D´ anä Dµ iî SmartBASIC®  É 
haä nï probleí gettinç useä tï SmartFiler'ó Drivå A¬ Drivå B¬ anä 
sï on®  CP/Í waó similaò tï thaô typå oæ naming®  Drivå Á waó thå 
samå  aó SmartBASIC'ó D± (drivå one...® oò datá pacë drivå  one)® 
Thå  firsô disë drivå waó calleä Drivå Ã iî SmartFILER®   Iæ  yoõ 
arå useä tï thå waù SmartFILesó thå DIÒ SmartKEÙ anä  hiô 
thå RETURÎ agaiî tï verifù iæ yoõ want®  Eitheò way¬ JUNK.COÍ  ió 
GONE¡   Bå  verù  carefuì  becauså it'ó  alì  tï  easù  tï  ERAså 
EVERYTHIÎÇ oî thå disë oò datá pack! 

     Thå nexô SmartKEÙ waó REN®  Thió onå turnó ouô tï bå á shorô 
froí  oæ SmartBASIC'ó RENAMÅ command®  Tï renamå á filå  ió  easù 
oncå  yoõ learî how®  Iî CP/M¬ yoõ havå manù differenô  typeó  oæ 
files®  Fileó thaô ruî withouô anythinç elså beinç loadeä arå alì 
commanä files®  Theså fileó aråä 
yoõ havå accesó tï alì oæ youò files®  Thå onlù drivå thaô  stayó 
thå samå nï matteò wherå yoõ booô CP/Í froí ió drivå M¾  Thió  ió 
youò memorù expandeò iæ yoõ havå one.

     Thå memorù expandeò (drivå M>© ió treateä bù CP/Í aó á  sorô 
oæ temporarù HIGÈ SPEEÄ disë drive®  Yoõ caî copù fileó uð tï  iô 
anä theî ruî theí withouô eveò havinç tï waiô foò á disë oò  tapå 
tï  load®  Wheî yoõ turî ofæ youò ADAM¬ theså fileó wilì gï  awaù 
untiì yoõ puô theí bacë thå nexô time®  Anù timå yoõ wanô tLÔ-IÎ tï thå operatinç system®  Now¬ therå arå  twï 
wayó  yoõ caî RENamå á file®  Yoõ caî eitheò presó youò  SmartKEÙ 
oò  yoõ caî typå iî thå simplå threå letteró Ò Å N®  Eitheò  way¬ 
oî youò screeî yoõ wilì seå A>REÎ ß    Thå underlinå ió jusô youò 'rå 
wantinç iô tï do®  Thaô meanó yoõ neeä tï telì iô whaô tï  change
iî thå formº (calleä thå syntax© ne÷ FILENAME.FILETYPÅ equaló thå 
olä  FILENAME.FILETYPE®  Okay¬ thaô meanó thaô RENaminç  COPY.COÍ 
tï MOVE.COÍ woulä looë onscreeî asº A>REÎ MOVE.í  ió 
tï puô eacè onå oî á differenô useò area®  Yoõ effectivelù arå iî 
ðossessioî oæ 1¶ differenô directorù areas!  
Š     Logginç intï á differenô useò areá ió simple®  Alì yoõ  havå 
tï dï ió tï presó thå USEÒ SmartKEÙ (oò jusô typå Õ Ó Å R© anä  á 
numbeò froí ° tï 15®  Tï movå froí USEÒ ° tï USEÒ 15¬ thå commanä 
linå woulä appeaò asº A>USEÒ 1µ <cr¾  (Note¬ thå "<cr>¢ denoteó á 
carriagå  return)®  Tï geô bacë tï useò areá 0¬ jusô typå USEÒ  ° 
anä theî á <cr>®  Movinç betweeî useò areaó ió  ho÷ iô ió seô up® BASIÃ 
showó ´ typeó oæ fileó A¬ a¬ È anä h®  Á cataloç wilì sho÷ alì oæ 
theså typeó becauså therå ió nï waù tï keeð theí separate.

     Now¬ supposå yoõ wanteä tï placå alì oæ youò "A¢ typå  fileó 
oî  á  cataloç  bù  it'ó self®  Ho÷ woulä yoõ  dï  it¿   Gï  eveî 
further®   Supposå  yoõ wanteä tï puô youò "A¢ fileó  onå  place¬ 
youò  "H¢ fileó someplacå else¬ youò "a¢ fileó yeô anotheò  placå 
anä finallù youò "h¢ fileó iî yeô anotheò cataloç area¿  Thå onlù 
answeò ió thaô ó oî youò disk¬ etc® intï memory®  Oncå there¬  yoõ 
caî alteò prograí codå anù waù yoõ like®  Thå changeó arå onlù iî 
memory¬ though¬ sï youò maiî prograí ió safå froí anù damage.

     Tï creatå á reviseä versioî oæ á .COÍ filå yoõ havå altered¬ 
yoõ  woulä uså thå SAVÅ commanä alonç witè á ne÷ namå  ontï  youò 
disk®  Yoõ woulä alsï neeä tï kno÷ ho÷ manù recordó yoõ wanô CP/Í 
tï  savå foò you®  Wå won'ô gï intï tï mucè detaiì no÷ oî  recorä 
counts®   We'lì jusô seå ho÷ tï uså á recorä counô wiareá ió "15¢ (remembeò "0¢ ió youò  first)®  
É  likå  tï keeð alì oæ mù utilitù programó oî useò areá  0:¬  mù 
modeí programó iî useò areá 1:¬ mù ne÷ fileó oî 2º anä sï on.

     Thå  biggesô advantagå tï prograí segregatioî bù useò  areaó 
ió thaô yoõ caî keeð "like¢ programó iî onå place®  Yoõ caî  eveî 
havå 1µ fileó oæ thå samå namå (sucè aó README.TXT© thaô arå  alì 
differenô fileó thaô jusô happeî tï havå thå samå name®  Thå  waù 
tï  keeð theí oî thå samå drivå anä stilì bå ablå tï uså theCOM=COPY.COÍ (theî 
presó thå RETURÎ keù tï dï thå rename)

     Thå fourtè SmartKEÙ ió labeleä USER®  Thió ió á usefuì  typå 
oæ commanä iæ yoõ kno÷ whaô iô meanó anä ho÷ tï uså it®  Tï begiî 
thå  explanation¬ leô må firsô looë aô somethinç wå arå alì  verù 
familiaò withº SmartBASIC®  Undeò SmartBASIC¬ iæ yoõ typå CATALOÇ 
anä presó thå return¬ yoõ wilì bå presenteä witè á lisô oæ alì oæ 
thå fileó storeä oî thå currenô disë oò datá pack®  Therå arå  nï 
surpriseó witè youò directorù iæ yoõ kno÷simple®  Movinç  á 
filå froí onå useò areá tï anotheò ió anotheò matter®  I'lì  talë 
abouô movinç fileó froí onå useò areá tï anotheò aô anotheò time.

     Thå fiftè SmartKEÙ ió labeleä SAVÅ anä iô doeó jusô whaô thå 
namå  woulä imply®  Iô saveó á filå storeä iî memorù tï thå  disë 
oò datá pack®  Yoõ won'ô geô mucè uså froí thå SAVÅ commanä untiì 
yoõ geô intï editinç programs®  DDT.COM¬ thå debuggeò prograí  oî 
youò masteò CP/Í disë oò datá pacë haó thå abilitù tï loaä anù oæ 
thå  .COÍ fileYOÕ CAN'T¡  Thå EOÓ systeí ió noô designeä tï keeð 
fileó segregateä iî anù way®  Yoõ havå onlù onå directorù areá tï 
÷orë witè anä nï more.  

     CP/Í  useó thå USEÒ functioî tï allo÷ prograí  organization®  
Iæ  yoõ wanô tï keeð alì oæ youò differenô .COÍ  fileó  together¬ 
USEÒ  wilì leô yoõ dï that®  CP/Í ió designeä iî sucè á waù  thaô 
iô ió ablå tï supporô 1¶ differenô placeó yoõ caî storå files® Aô 
booô-up¬  yoõ arå placeä intï useò areá "0"®  Thió ió youò  firsô 
useò  area®  Thå 16tè tè ouò  SAVÅ 
command®  Supposå wå havå jusô useä DDT.COÍ tï ediô á prograí  oî 
ouò  disë nameä TIME.COM®  Iî thió case¬ TIME.COÍ haó 1³  recordó 
iî it®  Wå changå somå littlå thinç anä wanô tï savå ouò  versioî 
oæ thå prograí undeò thå namå TIME2.COÍ afteò wå geô ouô oæ  DDT®  
Ôhå commanä linå foò thió woulä bå SAVÅ 1³ TIME2.COÍ <cr>.
 
     Thå sixtè anä finaì SmartKeù ió labeleä TYPE®  Thå uså oæ iô 
ió jusô whaô thå namå implies..® iô wilì typå á texô filå tï youò 
screen®  Remembeò thaô fithå caså oæ printinç tï thå  ADAÍ 
SmartWriteò printer¬ simplù presó thå CONTROÌ anä thå letteò Ð aô 
thå samå time®  Anythinç thaô ió typeä froí thió poinô oî wilì bå 
automaticlù  echoeä tï youò printeò anä typeä ouô oî  paper®   Tï 
canceì  thió printing¬ jusô uså thaô samå CONTROÌ  Ð  combinatioî 
again® Everythinç thaô yoõ typå anä everythinç thaô CP/Í trieó tï 
telì yoõ wilì bå printeä untiì thió optioî ió cancelled.

     Tï geô á harä copù oæ thió HELÐ file¬ simplù typå CONTROÌ  Ð 
(whicè  le>
   DUMP [dr:] <file to dump>
   ED [dr:] [file to edit]
   LOAD [dr:] <hex file>
   ASM <assembler file> [.param]
   COPY [dr:] <existing file> [dr:] <new file>
   A:[file]Š   b:[file]
   FORMAT <CR>
   BACKUP <CR>
   CONFIG <CR>
   SYSGEN <CR>
   ADAM   <CR>
   CPMADAM <CR>

     Aó  yoõ caî see¬ Digitaì Researcè anä Colecï wanteä  yoõ  tï 
havå á quicë referencå iî caså yoõ eveò forgoô ho÷ tï uså onå  oæ 
thå commandó oò programó theù havå supplied®  Iô ió alwayó á gooä 
ideá  tï pride¬ É begaî  tï 
learî  somå  ne÷  concepts®  Theså werå ideaó  alwayó  misseä  iî 
thingó likå SmartBASIÃ buô nï sï clearlù thaô yoõ coulä puô  youò 
fingeò  oî iô untiì yoõ sa÷ ho÷ iô "coulä havå been"®  Á  perfecô 
examplå oæ thió ió thå CATALOÇ functioî oæ SmartBASIC®  Havå  yoõ 
eveò wanteä tï booô á prograí ..® let'ó calì iô HELLO¬ anä faileä 
tï spelì iô correctly¿  Perhapó yoõ typeä ruî hellï <return>®  Aó 
wå alì know¬ SmartBASIÃ doesn'ô carå iæ yoõ typå "run¢ oò iæ  yoõ 
typå  "RUN"..® iô ô oæ  it'ó 
controì  oveò  thå ADAM®  Wheneveò yoõ typå  something¬  CP/Í  ió 
righô there...® watchinç anä waitinç tï worë foò you¡  

     Jusô  typinç  somethinç  (anything© wilì geô  somå  sorô  oæ 
responså wheî yoõ presó thå return®  Iæ yoõ typå á prograí  name¬ 
CP/Í  wilì loaä iô foò you®  Alsï watcheä arå  referenceó tï  anù 
oæ thå builô-iî commandó imbeddeä intï thå operatinç system®  Alì 
keyboarä accesó ió constantlù beinç monitoreä sï thaô youò  everù 
commanä  caî bå acteä upon®  Iî lå calleä HELP® ¿  Iæ yoõ arå interesteä 
iî whaô iô is¬ jusô presó thå sixtè SmartKey¬ typå HELÐ anä  theî 
ðresó thå return®  Thå commanä linå wilì looë likå this:

A>TYPÅ help

Whaô yoõ wilì seå oî youò tö screeî oò monitoò ió this:

  CP/M 2.2 COMMAND SYNTAX

   DIR [dr:] [file]
   TYPE [dr:] <file to type>
   REN <new> = <old>            
   ERA [dr:] <file to erase>
   USER <new user 0 to 15>
   STAT [command line]
   PIP [command line]
   DDT [command line]
   SAVE <pages> [dr:] <fiwoulä  sho÷  uð aó ^Ð oî youò screen©  followeä  bù  youò 
commanä oæ TYPÅ HELÐ <return>®  Iô ió easù tï seå thaô thió ió  á 
verù  efficienô operatinç system®  Therå arå manù  morå  commandó 
builô intï CP/M®  Thousandó oæ usefuì softwarå packageó havå beeî 
writteî commerciallù foò uså undeò CP/Í tï givå yoõ eveî  greateò 
flexibility®   Manù oæ theså programó havå beeî releaseä  tï  thå 
Publiã Domaiî oò aó Shareware.

MORÅ THAÎ MEETÓ THÅ EYE:

     Aó  É begaî tï studù thaô CP/Í 2.² user'ó guinô thió lisô ontï youò SmartWriteò printer®  Keeð  iô 
iî á gooä locatioî wherå yoõ caî refeò tï iô wheî needed.

     Tï facilitatå easù harä copù oæ whaô yoõ arå seeinç oî  youò 
TÖ  screen¬ CP/Í haó á usefuì capabilitù builô intï it®  Jusô  aó 
iî SmartBASIC¬ therå ió á commanä tï turî oî thå printeò anä  onå 
tï  turî iô off®  Ratheò thaî tryinç tï remembeò PR#± oò PR#°  aó 
witè  thå SmartBASIC¬ yoõ wilì neeä tï onlù remembeò  onå  simplå 
command®  CP/Í constantlù monitoró youò keyboarä aó paralì meanó thå samå tï it®  Whù theî doesn'ô  iô Škno÷ thaô "hello¢ ió tèå samå aó "HELLO"¿  

     Thå reasoî ió obviouó tï eveî á casuaì SmartBASIÃ user®  Yoõ 
arå  ablå  tï storå á widå varietù oæ DIFFERENÔ programó  oæ  thå 
samå  namå iæ yoõ spelì iô different®  Yoõ coulä namå iô  "hEllo¢ 
oò "heLLo¢ oò anù otheò combination®  SmartBASIÃ seeó theí alì aó 
differenô  programs®  Now¬ supposå yoõ wanteä tï seå thå  alì  oæ 
thå variouó spellingó oæ thå worä hellï iî youò catalog®  Ho÷  dï 
yoõ gï inç tï represenô onå letteò oò numbeò iî thå filenamå  oò 
filetype®   Foò  eacè  characteò  iî thå name¬  yoõ  musô  uså  á 
separatå "?¢ character®  Thå "*¢ ió useä tï represenô á grouð  oæ 
characters®   Becauså theså arå useä iî á morå generaì way¬  theù 
arå considereä tï bå AMBIGUOUÓ commands®  

     Tï  uså theså wildcarä characteró iî aî example¬ let'ó  looë 
foò thaô prograí wå mentioneä earlier®  Wå coulä alwayó typå  thå 
commanä DIÒ CAT.COM®  Wå coulä alsï typå DIÒ C??.COÍ whicè  woulä 
filå iî thå samå location!

     Yoõ coulä havå multiplå fileó calleä HELLÏ onlù bù  changinç 
thå seconä parô oæ á CP/Í filename®  Thå filenamå alwayó haó  twï 
partó tï it®  Thå firsô parô ió thå onå wå calleä HELLO...thió ió 
thå  filename®  Thå seconä parô ió knowî aó thå filetype®   Therå 
ió alwayó á perioä presenô tï separatå thå twï partó foò you®   Á 
fe÷ oæ thå conventionó oæ thå namå arå thaô thå filenamå caî havå 
anù  numbeò oæ letteró oò numberó froí ± tï 8®  Thå filetypå  caî 
havå.ª woulä onlù lisô thå "C¢ 
fileó witè threå letteró iî theiò namå anä anù filetype®  É coulä 
eveî dï thingó likå DIÒ *.COÍ oò DIÒ *.BAÓ oò eveî DIÒ *.C?M®  Iæ 
yoõ takå á fe÷ minuteó tï thinë abouô this¬ I'í surå you'lì  finä 
á fe÷ ideaó oæ ho÷ thió coulä bå á usefuì tool.

     CP/Í aó aî operatinç systeí ió verù sophisticated¬ yeô  it'ó 
alsï verù simple®  Iô wilì onlù dï foò yoõ whaô yoõ asë iô tï  dï 
specificly®  It'ó builô-iî commandó anä manù thousandó oæ  usefuì 
utilitù  programó makå u CP/Í ió it'ó abilitù  tï 
recognizå whaô wå calì wildcarä characters®  Thå manuaì referó tï 
á commanä sucè aó DIÒ CAT.COÍ (whicè wilì lisô thå presencå oæ  á 
filå  calleä CAT.COÍ oî thå currenô drive/useò iæ iô ió  present© 
aó aî UNAMBIGUOUÓ command®  Whaô thaô meanó ió thaô yoõ havå beeî 
verù cleaò iî tellinç CP/Í exactlù whaô yoõ wanô iô tï looë for.

     Wildcarä characteró caî alsï bå used®  Theså characteró  arå 
eitheò thå "?¢ oò thå "*¢ characters®  Iæ yoõ uså thå "?"¬ iô  ió 
onlù  goabouô thió iî BASIC¿  Yoõ don't¡  

     CP/Í lookó aô everù commanä nï matteò whaô caså theù arå  iî 
wheî yoõ typå theí aó uppeò case®  Iæ yoõ typå iî loweò case¬ CPÍ 
wilì translatå iô tï uppeò caså everù time®  Thå resulô ió thaô á 
filå namå caî onlù exisô iî onå form¬ uppeò case¬ aô onå time®  Á 
prograí calleä HELLÏ coulä onlù bå presenô once®  Iæ yoõ trieä tï 
savå á ne÷ prograí tï thå samå disë anä useò areá calleä hEllo¬ á 
functioî  oæ  CP/Í woulä deletå thå originaì anä placå  youò  ne÷ 
alsï  sho÷ uð fileó likå CAR.COM¬ CRT.COM¬ CLS.COM¬ etc®  É  tenä 
tï  noô uså thå "?¢ key¬ however®  É don'ô likå tï typå anù  morå Šletteró thaî É absolutelù havå to® Thå "*¢ ió thå onå characteò É 
uså tï savå mù fingers®  Iæ É typå DIÒ C*.*¬ É wilì bå giveî  alì 
thå  fileó listeä abovå pluó thingó likå CATERWAUL.DOC¬ etc®   Iî 
short¬  iô wilì lisô ALÌ fileó anä ALÌ filetypeó whicè  havå  thå 
onå thinç iî common..® á letteò "C¢ aó thå firsô character.

     É coulä alsï miø theí up®  DIÒ C?? uð tï onlù ³ characteró iî it.

     Tï  uså  multiplå fileó bù thå namå HELLÏ  then¬  yoõ  coulä 
alteò thå filetypå oæ thå variouó differinç files®  Yoõ coulä uså 
HELLO.BAS¬  HELLO.TXÔ anä eveî á HELLO.SB1®  CP/Í wilì alsï  looë 
aô thå filetypå anä consideò thå threå fileó different®  Now¬ saù 
wå wanteä tï trù thaô searcè oæ thå DIÒ (CP/M'ó CATALOG© tï  looë 
foò alì thå variouó HELLÏ prograí fileó wå havå oî thå disk®  Leô 
CP/Í dï thå worë foò you!

     Onå  oæ thå morå usefuì featureó oæð quitå á "tooì box¢ foò thå  seriouó  oò 
casuaì  users®  I'lì coveò somå oæ thoså usefuì utilitieó iî  thå 
nexô  parô oæ thå articlå sï thaô yoõ caî begiî tï geô  somå  uså 
ouô oæ thaô prograí yoõ stilì havå sittinç oî thå shelf®  Iî  thå 
meantime¬  pleaså  looë aô thå manual®  Pleaså experimenô  á  biô 
witè somå oæ theså simplå trickó untiì yoõ geô á feeì foò them.

     É kno÷ iô wilì takå timå tï geô comfortablå witè CP/Í buô iô 
waó thaô waù foò må witè everù prograí eveò purchaseä foò mù items  and public domain ADAM programs, on two, sometimes three,  disks,  in  EOS format, has been well received and universally  supported  among all ADAM organizations.  Now Barry is taking a major and well received, step of  expanding  the  distribution  of  the publication  to  individual  ADAMites.   Perhaps  it  is  desirable  to  time  this  step  with  a  modest  enhancement  of offering the publication in the format chosen  by  the end user.            That is:  letting the subscriber sex	E.N. STAFF}Bob Blair  Reg.Ed.  36l Eden D.     Enwood    34223-l964Lani Brito Contest Ed. 6l32 Sandcrest Cir. Orlando  Fl.    32819Richard Clee Reg.Ed.21 RoKOSOWSKY'S ADAM REPAIR.Please note that the Post Office has made a change in the    mailing address for :     KOSOWSKY'S ADAM REPAIRNEW ADDRESS IS:KOSOWSKY'S ADAM REPAIR6067 Jerusalem Dr.CICERO N.Y. l3039.Phone remains: (3l5) 699-6456)  and   a  modification of the distribution network.  Bart  Lynch  and  Bob Blair are willing to  undertake  the  above  conversion  and  handle mailings to end users who select  a  CP/M  option.   The conversion and mailings will be  completed,  fully,  within 72 hours of receipt of the materials.  Submitted by:  Bart Lynch and Bob Blair                                  ANY PAID SUBSCRIBER WISHING THEIR ANN TO BE IN A FORMAT OTHER THAN AS      PRESENT (EOS) SHOULD CONTACT BARRY WILSON, DEAN ROA                           A.N.N. IDEA   Barry  Wilson has carried his concept of a national news  network  for ADAM User Groups, BBS operators and Newsletter editors to  an  amazing level of success.  He and his fellow editor, Dean  Roades  have enlisted and use an impressive network of ADAM  contributors  in producing and distributing this outstanding publication.  In a  real  way,  they have linked the organizations that  support  the  ADAM  community together.  This offering of articles, news  ADAÍ 
froí  thå verù beginning®  CP/Í actuallù haó lesó tï remembeò  aó 
iô  doeó mucè oæ thå memorù worë foò you®  Untiì nexô time¬  keeð 
plugginç away!

                                   Roî Collins coulä bå á usefuì tool.

     CP/Í aó aî operatinç systeí ió verù sophisticated¬ yeô  it'ó 
alsï verù simple®  Iô wilì onlù dï foò yoõ whaô yoõ asë iô tï  dï 
specificly®  It'ó builô-iî commandó anä manù thousandó oæ  usefuì 
utilitù  programó makå ulect  the  ANN         publication  in  either  EOS or CP/M  format.  The         CP/M alternative can include  an additional option of          either Wordstar or ASCII  format (ASCII is used by CP/M         based BBS operators for on-line text reading, and         can be used by a wide variety of CP/M  text  editors         or converted easily to EOS for use on Smartwriter).  That  is the idea.  It's implementation will require  someone  to  make  the  conversion   to  CP/M  (Wordstar  and  ASCIIDES, BOB BLAIR OR BART  LYNCH so that arrangements can be made and your preference known.{See ANN.ADDRESS file for addresses}tion of          either Wordstar or ASCII  format (ASCII is used by CP/M         based BBS operators for on-line text reading, and         can be used by a wide variety of CP/M  text  editors         or converted easily to EOS for use on Smartwriter).  That  is the idea.  It's implementation will require  someone  to  make  the  conversion   to  CP/M  (Wordstar  and  ASCIIoronto ONT.   M6A lH6David Cobley Reg.Ed.  862 Shorewood Dr. Parksville BC CANADA V9P 1S6Ricki Gerlack Graph.Ed.l402-A Werner Park  Fort Campbell KY 42223Phil Kosowsky HdwreTechEd. 6067 Jerusalem Dr.Cicero NY      l3039Bart Lynch Tel.Ed.  45ll S. 256 St.          Kent WA     98032Ron Mitchell Reg.Ed.342 Nagel Ave.           Orleans ONT.   KlE lR6Mel Ostler, Pub.Ed. 32l7 Mesilla Hills Dr.  Las Cruces NM    88005Bill Reynolds Spec.Proj. 712 Waverly Place Statesville NC    28677Dean Roades Co-Ed.  8522xOF Joe Alford  Spec.Proj. 5068 Stone Ave.  Portage IN.        46368Bob Blair  Reg.Ed.  36l Eden Dr.        Englewood   FL.    34223-l964Lani Brito Contest Ed. 6l32 SandcADAM NEWS NETWORK WELCOMES NEW STAFF MEMBERS:[ 1/20/91]                           We are most happy to announce that .......................     MEL OSTLER of Road Runner Publications, the author of several hacker   type books on various aspects oforonto ONT.   M6A lH6David Cobley Reg.Ed.  862 Shorewood Dr. Parksville BC CANADA V9P 1S6Ricki Gerlack Graph.Ed.l402-A Werner Park  Fort Campbell KY 42223Phil Kosowsky HdwreTechEd. 6067 Jerusalem Dr.Cicero NY      l3039Bart Lynch Tel.Ed.  45ll S. 256 St.          Kent WA     98032Ron Mitchell Reg.Ed.342 Nagel Ave.           Orleans ONT.   KlE lR6Mel Ostler, Pub.Ed. 32l7 Mesilla Hills Dr.  Las Cruces NM    88005Bill Reynolds Spec.Proj. 712 Waverly Place Statesville NC    28677Dean Roades Co-Ed.  8522he skills, the drive and the knowledge that they bring with them.     Please Note the NEW address for Phil Kosowsky, our Hardware Technical  Editor AND for his Kosowsky Adam Repairs to be as follows:          6067 Jerusalem Dr. Cicero NY. l3039.A.N.N. STAFF Joe Alford  Spec.Proj. 5068 Stone Ave.  Portage IN.        46368Bob Blair  Reg.Ed.  36l Eden Dr.        Englewood   FL.    34223-l964Lani Brito Contest Ed. 6l32 Sandcrest Cir. Orlando  Fl.    32819Richard Clee Reg.Ed.21 Rondale Blvd.         T)  and   a  modification of the distribution network.  Bart  Lynch  and  Bob Blair are willing to  undertake  the  above  conversion  and  handle mailings to end users who select  a  CP/M  option.   The conversion and mailings will be  completed,  fully,  within 72 hours of receipt of the materials.  Submitted by:  Bart Lynch and Bob Blair                                  ANY PAID SUBSCRIBER WISHING THEIR ANN TO BE IN A FORMAT OTHER THAN AS      PRESENT (EOS) SHOULD CONTACT BARRY WILSON, DEAN ROA Hohman Ave.         Munster IN      46321         Jerry Vrancks Spec.Proj. 2936 Evelyn St.     Potage  IN.     46368Barry Wilson Editor 12967 Weatherfield Dr.   St.Louis Mo.63l46  to be as follows:          6067 Jerusalem Dr. Cicero NY. l3039.A.N.N. STAFF Joe Alford  Spec.Proj. 5068 Stone Ave.  Portage IN.        46368Bob Blair  Reg.Ed.  36l Eden Dr.        Englewood   FL.    34223-l964Lani Brito Contest Ed. 6l32 Sandcrest Cir. Orlando  Fl.    32819Richard Clee Reg.Ed.21 Rondale Blvd.         T Adam, has joined the ANN Staff as          Publications Editor.   Mel will be the Co-Editor on the Adam Survival Guide Project and other future publication projects     LANI BRITO of MOAUG has become the Contest Editor.  She has many new   and exciting ideas and we expect good things from her efforts.     JOE ALFORD of 463 AUG and      BILL REYNOLDS from Statesville N.C. have both joined ANN in thearea of Special Projects.     We are most happy to welcome them to the ANN Staff, we certainly need  tþ"!b%%!p! !  )19AIQYaiq þGENERATING RANDOM NUMBERS part 1by Bob Currie, EAUG, Edmonton, Alberta	Anyone wanting to write, say, a guess-the-number game, will need some way  of generating a number that is not predictable.  Fortunately, SmartBASIC    has a command called "RND(X)" which returns a random number or a series of  random numbers and these numbers are not predictable - the first time       around.  If one "runs" the program a second time, one gets exactly the same set of numbers.     For examlast time that seed number was used.	Another way to generate a bit more unpredictable seed number is to set up  a FOR-NEXT or a GOTO loop that looks for a keyboard or a fire-button        activation.  For example, the LOTO-649 program of the E.A.U.G. Basic        Utilities tape tests for when the right fire button has been pressed and    uses the counter number at that point of time as the seed for the random    number generator.	If you would like to try this out, add the following lines to our little   basic and this formula uses the same seed (or starting number) every time a basic program using it is "run."	SmartBASIC does provide a way to get a different set of numbers when we    run this program.   	Add this line to our program: 5 x=-1:a=RND(x) "RUN" the program now and you will get:  .0966934073  .805508251  .897540095  .327457077  .120182341  	Ah!  A different set of numbers.  But wait.  If we "RUN" the program     again, we get:  .0966934073  .805508251  .897540095  .327457077ight fire button on joystick #1 has been pressed.  If you would rather monitor the keyboard for a key press,    then add lines 5 and 1000 as above and the following lines which illustrate the use of a GOTO loop similar to that described by Rod Appleby on page 4,  Vol. 2, Issue 3 of ADAM's LEAF:   1100 PRINT "Press any key to begin"   1200 q = 16150 : r = peek(q) : POKE q,255 : REM  disable SmartBASIC poke         limitation   1300 POKE 64885,0 : REM clear the keyboard status indicator   1400 POKE q,r  this      range will produce a different random number.  Therefore, if a way can be   found to produce a seed number in an unpredictable manner, the RND(x)       function can produce a number or set of numbers which are always different  than the last time the program was run.   	One way of doing this is to have the program ask the user to input a    number, any number.  This can work, but if he/she inputs a number that was  used before, then the same set of random numbers will be generated as for   the ple, type in and run the following short program:10 FOR i=1 to 520 a=RND(1)30 PRINT a40 NEXT i50 END     The set of numbers generated are: .732004777 .425420012 .0831831896 .705190617 .69693043	Every time that we "run" this program, we will get exactly the same set of numbers shown above, even if we change the 1 in line 20 to 12 or any other  positive integer value.   This is because RND(x) does not generate true     random numbers.  RND(x) uses a mathematical formula which is built into     program:5 GOSUB 1000: a = RND(x)1000 HOME: PRINT: PRINT1100 PRINT "Press right fire button to": PRINT "begin"1200 FOR i = 1 to 5000001300 IF PDL(9) = 1 THEN x = -i : REM  (Make a note of the loop counter at   which      the button was pressed and convert it to a negative number for the     RND(x)      function.1400 IF x = -i  THEN i = 500001 : REM (to ensure that we close the for-next loop      before returning from the gosub.) 1500 NEXT i: PRINT: RETURN	The above routine checks for when the r  .120182341        Yup, the same set of numbers as the last time we ran the program.	If we change line 5 to read:     5 x=-2:a=RND(x)and "run" the program again, we will get a different set of numbers than    when we had a=-1 in line 5.  But every time that we run the program with -2 in the RND(x) statement, we will always get the same set of numbers         generated.  The negative number is called a seed number and SmartBASIC      allows a range from -1 to about -1.7E+38.  Each of the numbers in: REM  restore the poke limitation   1500 IF PEEK (64885) = 0 then x = x-1 : GOTO 1500 : REM  keep looking at the         keyboard status indicator until a  result other than zero tells us  that         a key is pressed   1600 RETURN : REM  we've got our seed number, now let's go back	Both of the last two techniques go a long way towards giving a truly       unpredictable or random number. However, they are not fool proof.  With a   little practice, it is possible to type in "RUN" and hit "RETURN" andr for the     RND(x)      function.1400 IF x = -i THEN i = 500001 :REM to ensure that we close the for-next    loop      before returning from the gosub .1500 NEXT i : PRINT: RETURN: REM  Now that we have a seed number, let's go  back     to line 5     Add these lines to the above program:1150 GOSUB 20001200 FOR i = x TO 500000 : REM This line      replaces the original line 1200 and provides      an offset to the counter2000  x = PEEK (17003) + PEEK (17011) + PEEK (65220) : REM pick a number  þ"!bn!p! !  )19AIQYai þGENERATING RANDOM NUMBERS Part 2by Bob Currie, EAUG, Edmonton, Alberta     In part one of this article on generating random numbers, I introduced two ways of making the numbers more random than if one just used the RND(x) function as is.  However, if one gets the timing just right, it is possible to generate the  same set of numbers several times in a row.     What we need is a way of getting a number that does not depend on      human input.  For example, if we could get thd be done as in the        following example for the keyboard program discussed in part 1 of this      article.     As you may recall this program was:5  GOSUB 1000 : a = RND(x)10 FOR i = 1 TO 520 a = RND(1)30 PRINT a40 NEXT i50 END1000 HOME: PRINT: PRINT1100 PRINT "Press any key to begin"1200 q = 16150 : r = peek (q) : POKE q,255 : REM disable SmartBASIC poke      limitation1300 POKE 64885,0 : REM clear the keyboard status indicator1400 POKE q,r : REM restore the poke limitation1500 IF PEEKrs from 1  to 12 with a pretty much even chance of getting any one of them.     If you recall, our program for generating a random number by reading   the right fire button was:5 GOSUB 1000 : a = RND(x)10 FOR i=1 TO 520 a=RND(1)30 PRINT a40 NEXT i50 END1000 HOME: PRINT: PRINT1100 PRINT "Press right fire button to": PRINT "begin"1200 FOR i = 1 TO 5000001300 IF PDL(9) = 1 THEN x = -i : REM  make a note of the loop counter at    which      the button was pressed and convert it to a negative numbe "ANY  KEY" (or "FIRE BUTTON") and get the same set of numbers two or three times  in a row.  Next issue, I will describe a technique that should improve on   the "randomness" of the number even more.  At the same time, I will clean   up a few loose ends about the RND(x) function.Copyright 1990, R. A. Curriess any key to begin"   1200 q = 16150 : r = peek(q) : POKE q,255 : REM  disable SmartBASIC poke         limitation   1300 POKE 64885,0 : REM clear the keyboard status indicator   1400 POKE q,r   from       each location and add them together2200 RETURN : REM Now go back to line 1150     By letting the computer choose the starting point of the for-next loop counter, we have added an extra dimension of uncertainty to the number that will be used for the seed number in the RND(x) function.  In other words,   our random number is now a little more unpredictable OR random.     If these locations are accessed twice to generate offset numbers we    can get a somewhat more random number.  This coule computer itself to find a    number that does not depend only on human timing, then our generated        numbers would be much more random.     If we scan all of the accessible memory locations in the ADAM, we find that there are three addresses at which one does not always get the same    number.  At 17003(dec) we get a zero seven times out of ten and a  one      three times out of ten.  At 65220(dec) we get a 4 seven times out of ten    and a 140 three times out of ten.  At 17011(dec) we get the numbe (64885) = 0 then x = x-1 : GOTO 1500 : REM keep looking at the      keyboard status indicator until a result other than zero tells us that a      key was pressed1600 RETURN : REM we've got our seed number, now let's go back     Add these lines:1250 GOSUB 2000 : x = -zz : REM the first offset to the counter.1550 GOSUB 2000 : x = x -zz : REM the second offset to the counter.2000  zz = PEEK (17003) + PEEK (17011) + PEEK (65220) : REM  pick a number  from      each location and add them together.220ake the":? "monsters."80GOSUB 1000:REM Initialization    90?:? "Hit any key when ready.":GET k$: k%=ASC(k$): m=-k%:IF k%=27 THEN GOSUB 95099REM ***** MAINLINE *****100TEXT110GOSUB 200:IF p(4)=4 AND ob(12, 1)<>99 THEN GOTO 140:REM Describe the room.  Rm 4 is DARK.  Helm will show anyway.   120GOSUB 300:REM Describe the contents130GOSUB 400:REM Describe enemies140GOTO 500:REM PARSER149REM ***** STATUS *****150TEXT:? "CURRENT STATUS": p(10)=0: k%=0152FOR x=1 TO t(0, 1):IF t(x, 0)=1 THEN  k%=k%+1154ve a negative integer value and returns a different random  number for each value of x.  For a given value of x, the same random number will always be generated.                                       Copyright 1990, R. A. CurrieAdd these lines:1250 GOSUB 2000 : x = -zz : REM the first offset to the counter.1550 GOSUB 2000 : x = x -zz : REM the second offset to the counter.2000  zz = PEEK (17003) + PEEK (17011) + PEEK (65220) : REM  pick a number  from      each location and add them together.220176? "LUCK="; p(5)178? "LEVEL="; p(6)180? "Room="; p(4); ", "; d$(t(p(4), 8))182HTAB 10:?:? "<RETURN>":GET k$184IF p(1)>0 THEN GOTO 100190RETURN:REM STATUS can be called from GOTO or GOSUB199REM ***** DESCRIBE ROOM *****200TEXT: t(p(4), 0)=1:REM Mark room as visited210 first=t(p(4), 8)220IF p(4)=t(0, 1) THEN  last=t(0, 2):GOTO 240230 last=t(p(4)+1, 8)-1240FOR x=first TO last250? d$(x)260NEXT x270 x=t(p(4), 7):REM Specials280ON x GOTO 290, 11000, 11010, 11020, 11090290RETURN299REM ***** DESC10REM DUNGEON20REM Joseph Alford, 5068 Stone Avenue, Portage, In 46368, May, 199030REM Many of the concepts are from Frank DaCosta, Writing Basic Adventure Games for the TRS-8040REM TAB Books, Blue Ridge Summit, Pa 17214, 1982.  An excellent book.50TEXT:? "Welcome to the dungeon":?:? "You've paid your entrance fee."60? "Feel free to wander around.":? "Pick things up, kill monsters."70?:? "You did sign the paper making":? "me your beneficiary?  Merely a formality, of course."75?:? "Excuse me while I w0 RETURN : REM Now go back to line 1250 or line 1550.     I hope that you find the foregoing information useful in your          programming endeavours.  In summary, the RND(x) function can have three     arguments:     1) x can have the value of zero, in which case it always returns the   same number, even when re-used from within the program.     2) x can have a positive integer value and returns the same number (or set of numbers from within a loop) each time the program is 'run'.     3) x can haNEXT x:?:? "Rooms:   "; k%; " of "; t(0, 1): p(10)=p(10)+k%*10: k%=0156FOR x=1 TO ob(0, 1):IF ob(x, 1)=99 THEN  p(10)=p(10)+ob(x, 2): k%=k%+1158IF ob(x, 1)=-1 THEN  p(10)=p(10)+ob(x, 2)*2: k%=k%+1160NEXT x:? "Objects: "; k%; " of "; ob(0, 1): k%=0162FOR x=1 TO e(0, 1):IF e(x, 2)<1 THEN  k%=k%+1164NEXT x:? "Enemies: "; k%; " of "; e(0, 1): p(10)=p(10)+k%*10166? "Total Score:  "; p(10)168?:? "Player Stats: "170?:? "HP="; p(1)172? "WPN="; ob$(p(2), 2):? "DMG="; ob(p(2), 2)174? "ARMOR="; ob$(p(3), 2)0 RETURN : REM Now go back to line 1250 or line 1550.     I hope that you find the foregoing information useful in your          programming endeavours.  In summary, the RND(x) function can have three     arguments:     1) x can have the value of zero, in which case it always returns the   same number, even when re-used from within the program.     2) x can have a positive integer value and returns the same number (or set of numbers from within a loop) each time the program is 'run'.     3) x can haRIBE OBJECTS *****300?:? "The room contains:"310 y=1:REM y is relative # of object in room320FOR x=1 TO ob(0, 1):REM check all objects330IF ob(x, 1)<>p(4) THEN 350340? y; SPC(1); ob$(x, 2): y=y+1350NEXT x360RETURN399REM ***** DESCRIBE ENEMY *****400 x=1410IF b(x, 1)<>p(4) THEN GOTO 440:REM Wrong room420IF b(x, 2)>0 THEN GOTO 440:REM Monsters are 0430?:? "There is a "; e$(b(x, 10)); " here.":REM Block table points to enemy table entry440 x=x+1450IF x<=b(0, 1) THEN GOTO 410460RETURN469REM ****o mainline559REM ***** GET DIRECTION *****560IF ob(2, 1)<>99 THEN VTAB 22:HTAB 1:? "You have no key.  <RETURN>": k%=27:GET k$:GOTO 566562VTAB 20:HTAB 1:? "I=N II=E  III=S IV=W V=U  VI=D":? "ESC=No Direction":GET k$: k%=ASC(k$):IF k%=27 THEN GOTO 566564 k%=k%-128+2:IF k%<3 OR k%>8 THEN GOTO 562566RETURN599REM ***** MOVE *****600 x=0: d%=k%-159:REM Arrows are 160-163.  This gives 1-4.610IF d%<1 THEN  d%=k%-129+4:REM Smartkeys II-IV are Up, Down, Get.  ASC 129-133.  This gives 5-7.620 x=x+1:IF x>b(0, *10+6:TEXT:? "Excessive HEALing energy":? "is toxic.  You are very sick.":? "<RETURN>":GET k$497?:? "You have survived.":?:? "Be more careful in the future.":? "<RETURN>":GET k$:GOTO 100499REM ***** PARSER ***** 500VTAB 20:HTAB 1: m=m-1:? "I=FIGHT II=UP III=DOWN IV=GET":? "V=DROP  VI=MENU   Arrows move"502GET k$: k%=ASC(k$):IF k%=27 THEN END504VTAB 22:HTAB 1:?:REM Clear Message Line  506IF (k%>159 AND k%<164) OR (k%>129 AND k%<133) THEN GOTO 600:REM Move (132=treasure) 508IF k%=129 THEN GOTO 900:REM (4)=t(p(4), d%):GOTO 100:REM Room is updated.  Return to Mainline for description699REM ***** GET *****700VTAB 19:HTAB 1: y=0: x=1:REM y=relative number of object in room, x=number of oject in table702? "Enter # of object to get":? "SmartKey I  = no object":? "SmartKey VI = all objects": z=0:GOSUB 880704IF k%>48 AND k%<58 THEN  k%=k%-48+z:GOTO 712:REM Numbers 1-9. 705IF k%=10 THEN GOTO 712706IF k%=129 THEN GOTO 720:REM I=nothing.  Exit to Mainline.   708IF k%=134 THEN  ob(x, 1)=99:GOSUB 730:GOTO 718::IF k%=27 THEN GOTO 556:REM Changed his mind542 x=x+1:IF x>b(0, 1) THEN GOTO 556:REM No block found  544IF b(x, 1)<>p(4) THEN GOTO 542:REM Wrong room546IF b(x, 2)<>1 AND b(x, 2)<>2 THEN GOTO 542:REM Locks are 1 and 2548IF b(x, k%)<>1 THEN GOTO 542:REM Lock blocks wrong direction550 b(x, 10)= NOT b(x, 10):IF b(x, 2)=1 THEN  x=x+1:GOTO 554:REM This was first of 2 door entries552 x=x-1:REM This was 2nd of 2 door entries554 b(x, 10)= NOT b(x, 10):REM Lock/Unlock from this side also556GOTO 100:REM Exit t* HEAL ***** 470 d%=0:IF p(4)=16 THEN  d%=10:REM Double Heal in Temple of Healing God 472 x=0474 x=x+1:IF x>ob(0, 1) THEN GOTO 490:REM God will not grant healing to someone dumb enough to drop figures elsewhere!476IF ob(x, 1)=99 AND ob(x, 2)=1 THEN  ob(x, 1)=16:GOTO 480478GOTO 474480 d%=d%+10:GOSUB 930: p(1)=p(1)+d%:REM Increase player HP by random amt  485VTAB 22:HTAB 1:? "Healed: "; d%; " points.  <RETURN>":GET k$490IF p(1)<p(6)*10+7 THEN GOTO 100:REM Max HP = Lvl * 10 + 6 for temple495 p(1)=p(6)1) THEN GOTO 670:REM All Blocks checked630IF b(x, 1)<>p(4) THEN GOTO 620:REM Wrong Room640IF b(x, d%+2)=0 THEN 620:REM Right room, wrong direction.  Directions start with b(x,3)650IF b(x, 2)=0 THEN VTAB 22:HTAB 1:? "The monster won't let you.":GOTO 500:REM Top of Parser660IF b(x, 10)=1 THEN VTAB 22:HTAB 1:? "The door is locked.":GOTO 500670IF d%=7 THEN GOTO 700:REM GET is not blocked680IF t(p(4), d%)=0 THEN VTAB 22:HTAB 1:? "You can't go that way.":GOTO 500:REM Travel table says no exit that way690 pI=Fight  510IF k%=133 THEN GOTO 800:REM V=Drop 512IF k%=134 THEN GOTO 520:REM VI=Secondary Menu514VTAB 22:HTAB 1:? "Please repeat last command"516GOTO 500519REM ***** SECONDARY MENU *****520VTAB 20:HTAB 1:? "I=LOCK  II=UNLOCK III=HEAL":? "IV=STATUS  V=MAIN MENU  VI=END"522VTAB 22:HTAB 1:?: x=0:REM Clear Message Line 524GET k$: k%=ASC(k$):IF k%<129 OR k%>134 THEN GOTO 514:REM Repeat Last Command  526 k%=k%-128:ON k% GOTO 540, 540, 470, 150, 500, 528528END539REM ***** LOCK/UNLOCK *****540GOSUB 560REM All object to 99=Player710GOTO 700:REM k$ was invalid      712IF ob(x, 1)<>p(4) THEN GOTO 718:REM Wrong room 714IF k%=134 THEN  ob(x, 1)=99:GOSUB 730:GOTO 718:REM object is in room.  134=get all.716 y=y+1:IF k%=y THEN  ob(x, 1)=99:GOSUB 730:GOTO 720:REM Got object.  Exit to Mainline.  718 x=x+1:IF x<=ob(0, 1) THEN GOTO 712720GOTO 100:REM Object(s) taken.  Return to Mainline. 729REM ***** GET WEAPON *****730IF ob$(x, 1)<>"W" THEN GOTO 744:REM Not a weapon732IF p(2)=0 THEN  p(2)=x:GOTO 744:REM Ha(x, 10), 2)=e(b(x, 10), 2)-d%-p(5):REM Reduce monster's hp.  P(5)=luck.908IF e(b(x, 10), 2)>0 THEN ? "Monster took "; d%; " damage <RETURN>":GET k$:GOTO 912910? "The monster is dead <RETURN>":GET k$: b(x, 1)=0:VTAB 22:HTAB 1:?:GOTO 100:REM Mainline will remove body912 d%=e(b(x, 10), 1):GOSUB 930: p(1)=p(1)-d%+p(5)+ob(p(3), 2):REM Reduce player HP.  Luck & armor considered.914VTAB 22:HTAB 1:IF p(1)>0 THEN ? "You took "; d%; " damage <RETURN>":GET k$:VTAB 22:HTAB 1:?:GOTO 920916TEXT:VTAB 10:? "You took ":?: y=0802FOR x=1 TO ob(0, 1):IF ob(x, 1)=99 THEN  y=y+1:? y; SPC(1); ob$(x, 2)804NEXT x:VTAB 19:HTAB 1: y=0:? "Enter # of object to Drop":? "SmartKey  I = no object":? "SmartKey VI = all objects"806 z=0:GOSUB 880:IF k%>48 AND k%<58 THEN  k%=k%-48+z:GOTO 814:REM Numbers 1-9 807IF k%=10 THEN GOTO 814808IF k%=129 GOTO 824:REM I=nothing.   Exit to Mainline 810IF k%=134 THEN GOTO 814:REM Get all   812GOTO 806:REM k$ was invalid814 x=1816IF ob(x, 1)<>99 THEN GOTO 822:REM Wrong room  818 y=y+1:IF k%=134M (99 to END)="; k%:IF k%<>99 AND k%>0 THEN  ob(k%, 1)=99:GOTO 955956RETURN999REM ***** INITIALIZATION *****1000DIM p(10):REM Player table.  Elements used for init processing before loading with player data1001REM Count data elements and define tables.  Then restore and load tables.1002REM ***** COUNT ROOM DESCRIPTIONS *****1010 p(1)=1: p(2)=0: p(3)=01020READ x, k$:IF k$="END" THEN GOTO 1050:REM Read all description lines 1030IF x<>p(3) THEN  p(2)=p(2)+1: p(3)=x:REM p(2) counts rooms, p(3) is currenEM ***** GET/DROP MENU CODE *****880VTAB 22:HTAB 1:? "Numbers reference "; z+1; " - "; z+10; "(0)"882? "Use UP/DOWN arrows to change":GET k$: k%=ASC(k$)884IF k%=160 THEN  z=z+10:GOTO 880886IF k%=162 AND z>10 THEN  z=z-10:GOTO 880888IF k%=48 THEN  k%=10+z890RETURN899REM ***** FIGHT *****900 x=1:VTAB 22:HTAB 1:IF p(2)=0 THEN ? "You have no weapon":GOTO 920902IF b(x, 1)<>p(4) THEN GOTO 918:REM Wrong room  904IF b(x, 2)<>0 THEN GOTO 918:REM Block is not a monster     906 d%=ob(p(2), 2):GOSUB 930: e(bd no weapon.  Take this one.734TEXT:? "Your weapon-at-hand is "; ob$(p(2), 2):? "You just picked up "; ob$(x, 2)736? "SmartKey  I = Keep present weapon":? "         II = Switch to new weapon"738GET k$: k%=ASC(k$):IF k%=129 THEN GOTO 744740IF k%=134 THEN  p(2)=x:GOTO 744742GOTO 738:REM k$ invalid744IF x<>20 THEN RETURN746TEXT:? "You just picked up a statue":? "of the god of death.":? "The god smiles at you.":? "<RETURN>"748GET k$: d%=100: p(1)=0:GOTO 916799REM ***** DROP *****800TEXT:? "You have: "; d%; " damage":?:?:HTAB 5:? "You are dead":? "    <RETURN>":GET k$917GOSUB 150:END918 x=x+1:IF x<=b(0, 1) THEN GOTO 902920GOTO 500:REM Return to Parser for fight/flight929REM ***** RANDOM NUMBER *****930 d%=INT(1+d%*(RND(m))): m=m-1:RETURN949REM ***** TEST PROCEDURE ***** 950TEXT:INPUT "HP="; p(1)951INPUT "WPN=(3)="; p(2):IF p(2)<>0 THEN  ob(p(2), 1)=99952INPUT "ARMOR(13)="; p(3):IF p(3)<>0 THEN  ob(p(3), 1)=99953INPUT "ROOM="; p(4):IF p(4)<1 THEN 953954INPUT "LUCK (0,1,-1)="; p(5)955INPUT "ITE THEN  ob(x, 1)=p(4):GOSUB 830:GOTO 822:REM All objects carried to current room 820IF k%=y THEN  ob(x, 1)=p(4):GOSUB 830:GOTO 824822 x=x+1:IF x<=ob(0, 1) THEN GOTO 816824GOTO 100829REM ***** DROP WEAPON *****830IF ob$(x, 1)<>"W" THEN GOTO 870:REM Not a weapon  840IF x<>p(2) THEN GOTO 870:REM Not the weapon-in-hand850 p(2)=0:REM No weapon860TEXT:? "You just dropped your weapon.":? "It is not safe to travel":? "weaponless.  <RETURN>":GET k$870GOSUB 11036:GOSUB 11060:RETURN:REM Specials for DROP 879Rt room1040 p(1)=p(1)+1:GOTO 1020:REM p(1) counts description lines  1041RETURN1050DIM d$(p(1)), t(p(2), 8): t(0, 1)=p(2): t(0, 2)=p(1)-1:REM store max room in t(0,1), max desc in t(0,2)1059REM ***** COUNT BLOCKS ***** 1060 p(1)=01070READ x:IF x=999 THEN GOTO 11001080 p(1)=p(1)+1:FOR x=1 TO 9:READ p(2):NEXT x:REM read all elements of one block1090GOTO 10701100DIM b(p(1), 10): b(0, 1)=p(1):REM Store number of blocks in p(0,1)1109REM ***** COUNT ENEMIES *****   1110 p(1)=01120READ x:IF x=999 THEN G room"2041DATA 4,"This room is inky black."2042DATA 4,"You see nothing, hear nothing, feel nothing.  The only thing "2043DATA 4, "you sense is the exit to the   north."2050DATA 5,"Web room" 2052DATA 5,"Square, 30' x 30', Exit: E"2053DATA 5,"Filled with thick spider webs."2060DATA 6,"SECRET ROOM"2061DATA 6,"Square, 10'x10', NO EXITS!"2070DATA 7," "2080DATA 8," " 2090DATA 9," "2100DATA 10, "Underground Cliff"2101DATA 10, "Square, 30' x 30', Exit: S"2102DATA 10, "North is a cliff hundreds of"210D TABLES *****  1209REM ***** LOAD ROOM DESCRIPTIONS *****1210 p(1)=1: p(2)=0: p(3)=01220READ x, k$:IF k$="END" THEN GOTO 1260:REM Read all description lines1230IF x<>p(3) THEN  t(x, 8)=p(1): p(3)=x:REM First desc line for room goes in t(x,8) 1240 d$(p(1))=k$: p(1)=p(1)+1:GOTO 12201259REM ***** LOAD BLOCKS *****1260 p(1)=01270READ x:IF x=999 THEN GOTO 13001280 p(1)=p(1)+1: b(p(1), 1)=x:FOR x=2 TO 10:READ b(p(1), x):NEXT x1290GOTO 12701299REM ***** LOAD ENEMIES *****     1300 p(1)=01310READ x:IFATA 13, "North-South Hall (middle)"2131DATA 13, "Hall, 10'x100'"2132DATA 13,  "Exits: N,E,S,W,U"2133DATA 13,"More exits north & south"2140DATA 14, "North-South Hall (south end)"2141DATA 14, "Hall, 10'x100', Exits: N,E,S,W"2142DATA 14,"More exits to north"2150DATA 15, "Cloud Room"2151DATA 15, "This room has no walls."2152DATA 15, "There are clouds all around."2160DATA 16, "Temple: God of Healing"2161DATA 16, "Square, 30'x30', Exit: E"2170DATA 17, "Temple: God of War"2171DATA 17, "Square, 30'x30'REM 1=Dmg player can take, 2=object # of wpn, 3=object # of armor, 4=current room, 5=luck, 6=player level, 7-10 unused1450RETURN2000REM ***** DATA:  ROOM DESCRIPTIONS *****2001REM Room #, Description2010DATA 1,"Entrance Room"2011DATA 1,"Square, 30'x30', Exits: N,E,S,W"2020DATA 2,"Hall of Mists"2021DATA 2,"Hall, 10' x 100', Exit: S"  2023DATA 2,"You feel vaguely uneasy here," 2024DATA 2,"more so as you move northward."  2030DATA 3,"Closet" 2031DATA 3,"Square, 10' x 10', Exit: W"  2040DATA 4,"DARKOTO 11501130 p(1)=p(1)+1:READ x, k$:REM Read all elements of one enemy1140GOTO 11201150DIM e$(p(1)), e(p(1), 2): e(0, 1)=p(1):REM Store number of enemies in e(0,1)1159REM ***** COUNT OBJECTS ***** 1160 p(1)=01170READ k$:IF k$="END" THEN GOTO 12001180 p(1)=p(1)+1:READ k$, p(2), p(3):REM Read all elements of one object1190GOTO 11701200DIM ob$(p(1), 2), ob(p(1), 2): ob(0, 1)=p(1):REM Store number of objects in ob(0,1)1205RESTORE:REM Relevant data has been counted.  Restore for loads1208REM ***** LOA3DATA 10, "feet high.  Rough handholds"2104DATA 10, "have been cut to aid climbing "2105DATA 10, "between three openings in the "2106DATA 10, "cliff face.  These are in a   "  2107DATA 10, "vertical line 15 feet apart."  2110DATA 11, "North-South Hall (north end)"  2111DATA 11, "Hall, 10'x100', Exits: N,E,S,W"2112DATA 11,"More exits to south"2120DATA 12, "Eagle Room"2121DATA 12, "Square 20'x20', Exits: N, S"2122DATA 12, "Eagles have nested here."2123DATA 12, "There are feathers everywhere."2130D x=999 THEN GOTO 13601320 p(1)=p(1)+1: e(p(1), 1)=x:READ e(p(1), 2), e$(p(1))1330GOTO 13101359REM ***** LOAD OBJECTS *****1360 p(1)=01370READ k$:IF k$="END" THEN GOTO 14001380 p(1)=p(1)+1: ob$(p(1), 1)=k$:READ ob$(p(1), 2), ob(p(1), 1), ob(p(1), 2)1390GOTO 13701399REM ***** LOAD TRAVEL TABLE *****1400FOR x=1 TO t(0, 1)1410FOR y=1 TO 7:REM 6 directions and special 1420READ t(x, y):NEXT y1430NEXT x1439REM ***** LOAD PLAYER STATISTICS *****1440 p(1)=10: p(2)=0: p(3)=0: p(4)=1: p(5)=0: p(6)=11441, Exit: W" 2180DATA 18, "Temple: God of Knowledge"2181DATA 18, "Square, 30'x30', Exit: E" 2190DATA 19, "Temple: God of Magic"2191DATA 19, "Square, 30'x30', Exit: W"  2200DATA 20, "Temple: God of Travel"2201DATA 20, "Square, 30'x30', Exit: E"2210DATA 21, "Temple: God of Wealth"2211DATA 21, "Square, 30'x30', Exit: W" 2220DATA 22, "Temple: God of Luck"2221DATA 22, "Square, 30'x30', Exit: N"2230DATA 23, "Closet"2231DATA 23, "Square, 10'x10', Exit: N"2240DATA 24, "Empty Room, L3"2241DATA 24, "Squargurine, God of Travel",0,2:REM Given by godn room 208020DATA "T","Figurine, God of Death",4,0:REM This will kill when picked up!8021DATA "$","Gold Necklace", 4,10008022DATA "$","Giant Egg",12,1009060 p(1)=1: p(2)=0: p(3)=09070READ x, k$:IF k$="END" THEN GOTO 11009080IF x<>p(3) THEN  r(x, 1)=p(1): p(3)=x:REM For each room store the number of the first description line 9090DATA "END"9999REM ***** DATA: TRAVEL TABLE ****  10000REM Room for travel in direction N, E, S, W, U, D.  Last number is number ock status (Doors)4005DATA 1,0,1,1,1,1,1,0,0,1:REM Bat blocks all exits  4010DATA 2,0,1,0,0,0,0,0,1,2:REM Lizard guards treasure  4015DATA 1,1,0,0,0,1,0,0,0,1:REM Door locked Entrance-Web4020DATA 5,2,0,1,0,0,0,0,0,1:REM Door locked Web-Entrance4025DATA 12,0,0,0,0,0,0,0,1,3:REM Giant Eagle5090DATA 999 6000REM ***** DATA:  ENEMIES *****6001REM Damage it can do, Damage it can take, description6010DATA 2,5,"Giant Bat" 6020DATA 4,10,"Giant Lizard"6030DATA 6,8,"Giant Eagle"7090DATA 9997998REM ***** DA0,0,0,13,0,0,310020DATA 0,14,0,0,0,0,3 10021DATA 0,0,0,14,0,0,310022DATA 14,0,0,0,0,0,310023DATA 24,0,0,0,0,0,510024DATA 12,0,23,0,0,0,110025DATA 0,0,23,0,0,0,110026DATA 0,0,23,0,0,0,110027DATA 0,0,23,0,0,0,110028DATA 0,0,23,0,0,0,110998REM ***** SPECIALS *****   10999REM ***** THIEF IN HALL OF MIST *****11000 x=111001IF ob(x, 1)=99 AND ob$(x, 1)="$" THEN  ob(x, 1)=6:GOTO 11003:REM Take one treasure to secret room 6:  Then exit.11002 x=x+1:IF x<=ob(0, 1) THEN GOTO 11001:REM Keep looking for a 3,100 8011DATA "T","Black Silk Cloak",3,100:REM Cloak of flying 8012DATA "T","Glowing Gold Helmet",0,100:REM Helmet of Knowledge given by god in room 188013DATA "T","Glowing Armor"    ,0,1:REM Given by god in room 17   8014DATA "T","Figurine, God of Healing",3,1 8015DATA "T","Figurine, God of Healing",16,18016DATA "T","Figurine, God of Healing",16,18017DATA "T","Figurine, God of Luck",0,1:REM Given by god in room 228018DATA "T","Figurine, God of Travel",0,2:REM Given by godn room 208019DATA "T","Fie, 30'x30', Exit: N, S"2250DATA 25, "Empty Room, L4"2251DATA 25, "Square, 30'x30', Exit: S"2260DATA 26, "Empty Room, L5"2261DATA 26, "Square, 30'x30', Exit: S" 2262DATA 26, "Tons of rubble block the north."2270DATA 27, "Empty Room, L6"2271DATA 27, "Square, 30'x30', Exit: S"2280DATA 28, "Empty Room, L7"2281DATA 28, "Square, 30'x30', Exit: S" 3090DATA 0,"END"4000REM ***** DATA:  BLOCKS *****4001REM 1=Room #, 2=# Entries (0-2), 3-9=NESWUDT (Direction blocked), 10=# on Enemies table (monsters) or lof special processing routine (1=none)10001DATA 2,3,4,5,0,0,110002DATA 7,6,1,0,0,0,210003DATA 0,0,0,1,0,0,110004DATA 1,0,0,0,0,0,110005DATA 0,1,0,0,0,0,1  10006DATA 0,0,0,0,0,0,110007DATA 10,0,2,0,10,8,410008DATA 10,0,11,0,7,9,410009DATA 10,0,12,0,8,10,410010DATA 0,0,0,0,0,0,410011DATA 8,17,13,16,0,0,110012DATA 9,0,24,0,0,0,110013DATA 11,19,14,18,15,0,110014DATA 13,21,22,20,0,0,110015DATA 15,15,15,15,15,13,110016DATA 0,11,0,0,0,0,310017DATA 0,0,0,11,0,0,3 10018DATA 0,13,0,0,0,0,310019DATA TA:  OBJECTS *****   7999REM ***** DATA:  OBJECTS *****8000REM Type ($=treasure, T=tool, W=weapon), description, room, number ($-Value, T-Handler, W-damage)8001DATA "$","Heavy Iron Chest",3,08002DATA "T","Key",3,0  8003DATA "W","Shortsword",1,68004DATA "$","Pearl Necklace",5,100   8005DATA "$","Ruby Ring",2,100     8006DATA "$","Diamond Necklace",1,2000 8007DATA "$","Silver Ring",1,100   8008DATA "$","Yellow Silk Cloak",3,1008009DATA "$","Red Silk Cloak"  ,3,100  8010DATA "$","Blue Silk Cloak" ,treasure to take11003GOTO 29011009REM ***** DESCRIPTION FOR TEMPLES *****11010?:? "A statue of the god dominates":? "the room."11012IF p(4)=18 AND ob(12, 1)<>99 AND ob(12, 1)<>18 THEN ?:? "Make an offering."11014GOTO 29011019REM ***** UNDERGROUND CLIFF *****11020IF p(4)=7 THEN  t(10, 5)=10: t(10, 6)=8: t(10, 1)=7: k$="top":GOTO 11023:REM Set UP, Down, Prev Rm in case of move to rm 1011021IF p(4)=8 THEN  t(10, 5)=7: t(10, 6)=9: t(10, 1)=8: k$="middle":GOTO 1102311022IF p(4)=9 THEN  t(10, 5)=8: t(10, ob(17, 1)=2211048?:? "<RETURN>":GET k$:RETURN11059REM ***** Special for Travel Rings *****11060IF ob(18, 1)=p(4) OR ob(18, 1)=99 THEN RETURN11062IF ob(19, 1)<>p(4) THEN RETURN11064 p(4)=ob(18, 1)11066 ob(18, 1)=20: ob(19, 1)=2011068TEXT:? "There is a blinding glare.":? "<RETURN>":GET k$:RETURN11089REM ***** ELEVATOR *****11090? "The door to the north slid ":? "shut behind you."11091?:? "There is a vertical line of ":? "5 glowing buttons on the wall."11092?:? "Use Smartkeys I - V ":? "Or use Smarll."11028IF t(10, 6)<10 THEN ?:? "You manage to spiral down to ":? "one of the ledges.  <RETURN>":GET k$: p(4)=t(10, 6):GOTO 10011029?:? "You cannot regain the ledges.":? "<RETURN>":GET k$11030GOSUB 11031: t(10, 6)=9:GOTO 11028:REM Luck Check.  If we return then drop to bottom ledge.11031 p(5)=p(5)-1:IF p(5)<-1 THEN  d%=100: p(1)=p(1)-d%:GOTO 91611032IF ob(17, 1)<>99 THEN  d%=100: p(1)=p(1)-d%:GOTO 91611033?:? "You hear a loud crack.":? "The figurine of the Luck God":? "has exploded."11034 ob(17, 1)= ob(17, 1)=2211048?:? "<RETURN>":GET k$:RETURN11059REM ***** Special for Travel Rings *****11060IF ob(18, 1)=p(4) OR ob(18, 1)=99 THEN RETURN11062IF ob(19, 1)<>p(4) THEN RETURN11064 p(4)=ob(18, 1)11066 ob(18, 1)=20: ob(19, 1)=2011068TEXT:? "There is a blinding glare.":? "<RETURN>":GET k$:RETURN11089REM ***** ELEVATOR *****11090? "The door to the north slid ":? "shut behind you."11091?:? "There is a vertical line of ":? "5 glowing buttons on the wall."11092?:? "Use Smartkeys I - V ":? "Or use Smar811042IF p(4)=18 THEN  ob(12, 1)=18:GOTO 1104811043IF p(4)=19 THEN  ob(13, 1)=99: p(3)=13:?:? "Glowing armor covers you.":GOTO 1104811044IF p(4)=20 THEN  ob(18, 1)=20: ob(19, 1)=20:? "Two rings of travel appear."11045IF p(4)=20 AND ob(12, 1)=99 THEN ? "Drop 1. When you drop the 2nd you apear in the room of the first.":GOTO 1104811046IF p(4)=21 THEN ?:? "Item  = "; ob$(x, 2):? "Value = "; ob(x, 2): ob(x, 1)=21:GOTO 1104811047IF p(4)=22 AND p(5)<p(6) AND p(5)>-1 THEN  p(5)=p(5)+1:? "Luck is now "; p(5): 6)=10: t(10, 1)=9: k$="bottom"11023TEXT:FOR x=t(10, 8) TO t(11, 8)-1:? d$(x):NEXT x:REM Same description for all 4 rooms11024IF p(4)<>10 THEN ?:? "You are in the "; k$; " of these":? "cliff openings":GOTO 290:REM Back to rm desc11025?:? "You have fallen from the":? "underground cliff.  <RETURN>":GET k$:REM Non-climber will fall11026IF ob(11, 1)<>99 THEN  d%=100: p(1)=p(1)-d%:GOTO 916:REM Without cloak fall kills11027?:? "The black cloak pops out of ":? "your pack, attaches to you and":? "slows your fatkey VI to wait"11093GET k$: k%=ASC(k$):IF k%<129 OR k%>134 THEN GOTO 29011094IF k%=134 THEN ?:? "After a moment the door ":? "slides open again.  The 5 ":? "buttons no longer glow."11095IF k%=134 THEN ? "<RETURN>":GET k$:GOTO 29011096 k%=k%-128: t(23, 1)=23+k%11097?:? "The lights go out.  <RETURN>":GET k$:?:? "The lights come back on.":? "The buttons no longer glow."11098? "The door opens.":GOTO 290, 1)=21:GOTO 1104811047IF p(4)=22 AND p(5)<p(6) AND p(5)>-1 THEN  p(5)=p(5)+1:? "Luck is now "; p(5):0:? "<RETURN>":GET k$:RETURN11035REM ***** Specials:  Hall of Gods *****11036IF p(4)<15 OR p(4)>22 THEN RETURN:REM rooms 15-22 in Hall of Gods  11037IF p(4)=15 THEN  ob(x, 1)=13:GOTO 11048:REM Air god accepts nothing 11038IF ob$(x, 1)<>"$" THEN RETURN:REM Gods only accept treasures   11039 ob(x, 1)=-1:TEXT:? "The "; ob$(x, 2); " disappears."11040IF p(4)=16 THEN  p(1)=p(1)+6:?:? "You feel rested and calm.":GOTO 1104811041IF p(4)=17 THEN  ob(p(2), 2)=ob(p(2), 2)*2:?:? "Your weapon now glows.":GOTO 1104ÃDungeon - Part VIÃÃby Joe AlfordÃ     This is the last of six articles on how to write a text adventure game in SmartBASIC.  In previous articles we have seen how to create a program that allows the player to move through the dungeon fighting monsters and picking up treasures.     Each time the player enters a room he gets a room description, a list of contents, and a list of monsters guarding the room.  Sometimes, however, we want to vary from the normal routine.  There is a room in this dungeon that ion to the problem-at-hand, the room with no doors.  The solution is the teleport rings.  They are found on the next level of the dungeon.     Meanwhile the player has to discover that treasures are being stolen and where it is happening.  Next comes the discovery of the trap.  Finally, on the next level, comes the discovery of the solution to the trap.DESCRIPTIONS FOR TEMPLES     The second special is an addition to the descriptions for rooms 16 - 22.  These rooms are temples to a series of gods.  Sines to the end of the program.  The first special is the THIEF IN HALL OF MIST.  Room 2, north of the start room, is a hall of mist.  According to the description, "You feet vaguely uneasy here, more so as you move northward."     On the travel table T(x,7) indicates the SPECIAL number, with 1 meaning no SPECIAL.  Line 270 of the room description routine routes the processing to the appropriate SPECIAL code, if any.     The SPECIAL number for room 2 is 2 which sends us to the thief.  The code is only 3 lintween them with very little chance of falling.  I eventually eliminated the chance of falling altogether for climbing characters.     The player can also move north from one of the cliff rooms.  Since the cliff is north, this causes a fall.  The fall is deadly.     One of the items in the dungeon is a cloak of flying.  If the player has this item then it will allow a safe fall to the next lower level of the dungeon.  If the player is at the lowest of the three levels then again the fall is deadly.     Tho be fought.  In fact, it cannot be fought - it doesn't appear on the list of monsters.     Once the player has retrieved the treasures, however, there is another problem.  The travel table does not show any exits for room 6.  The entrance from room 2 is not only secret, it is one-way!  The player is trapped.  At present this is the only one-way door in the dungeon, but the technique is worth remembering.  It is often important to cut the player off from something already encountered.     There is a solutis magically DARK.  In that room the player cannot see anything.  If the player has the Helm of Knowledge, however, he can see even in the magical dark.  This is a special interaction between the room and an item.  There is an underground cliff in this dungeon.  The player can climb down or he can fall down. There is a special interaction between three rooms.  This kind of SPECIAL interaction is the subject of this last article.THIEF IN HALL OF MIST     The SPECIALS code begins in line 10998 and continuce the same description is used in all temples it is not included in the room descriptions (7 entries in the table) but only once here.  In addition, if the player in in room 18, the temple of the god of knowledge, and has not yet found the helm of knowledge then a hint is printed:  "Make an offering."UNDERGROUND CLIFF     This special turned out to be more trouble than it was worth.  The intent was to have a very high cliff with entrances to three levels of the dungeon on it.  The player could climb bees long.  The thief looks through the item list to find a treasure that is in room 99 and changes the room number to 6.  Room 99 is the player pack.  Every time the player passes through room 2 the monster steals a treasure and takes it to room 6.     The east exit from room 2, leading to room 6, is not listed in the description to room 2, but is on the travel table.  This is how we indicate a secret door.  The player can go to room 6 and retrieve the stolen treasures.  The mist monster doesn't even have tere is also luck to consider.  If the player has the statue of the god of luck then it will explode (so it cannot be used again) and the player will be able to land on the bottom ledge.     Room 10 is the air through which the player falls.  Rooms 7 - 9 are the ledges which face on the cliff.  All have SPECIAL number 4.  On the room description table there are no descriptions for rooms 7 - 9.  All 4 rooms share the description for room 10.  This is printed by the SPECIAL code.     The special must also seare kept.  The player can determine what these gifts to the gods are costing.  At present the value of a treasure is doubled by the scoring system if the treasure has been donated to a god.  The game could be complicated by giving no point reward for treasures so removed from the dungeon.  The player would then have to determine whether to keep the points or take the gifts of the gods.  It is amazing how such simple little changes have such far-reaching affects.  The most commonly heard cry of anguish in a is one is part of the drop procedure.     If a treasure is dropped in any room in the Hall of Gods then the god accepts that treasure as an offering.  The treasure disappears and some return is made to the player.     The Air god (room 15) refuses the treasure.  It drops into the hallway below where it can be picked up again.  This god also gives the player nothing.  This room is a logical place to expand the dungeon.  Perhaps for a particular treasure the Air god will grant passage to a cloud castle.    Also, once the player has used luck to avoid death there can never again be an addition to luck.TRAVEL RINGS     The special for the travel rings also works with the drop code rather than the room descriptions.  Their working has already been described.     It would also be possible, of course, to write a special for the GET code.  There might be a poisoned treasure, a cursed scroll, an item that speaks before crumbling to dust.  The dungeon does have one GET special.  In the DARK room, south of the sc.  Here the player receives armor to lessen the damage taken in battle.     The rings of travel are given by the god of transportation in room 20.  The first of these is dropped in any room.  When the second is dropped then two things happen.  The player is teleported with all possessions to the location of the first ring.  Both rings are teleported to the temple of transportation.  These rings, remember, are the solution to the trap of room 6.     In room 21 the god of wealth evaluates treasures.  None t the travel table directions for room 10.  Originally all elements are 0.  Depending on which of the three levels the player falls from, UP and DOWN and south have different meanings.     Without the cloak of flying or luck the player dies as a result of falling.  In this case then the death code in line 916 is executed.  That code gives the player a last status before death.HALL OF GODS     This special is different from the previous.  The others are run as part of the room description procedure.  Thprofessional programming department is: "But I only changed one line of code!"     The god of Luck has a temple in room 22.  The player gets a statue of the god in this room.  The statue is valuable at the cliff where it can save the player (once) from death.  The god also increases luck, however.  This adds 1 point to the damage done by the player and removes 1 from the damage taken.  Over the long haul, this is a very potent advantage.  The code is written to limit the amount of luck the player can get.   The god of Healing (room 16) grants healing in return for treasure.  The healing statues do 1 - 10 points of healing.  The god grants a standard 6 points in return for an offering.     In room 17 the god of War doubles the damage done by the player's weapon.  The player will need a tougher weapon to fight the tougher monsters of the lower levels.     The god of Knowledge (room 18) gives the Helm of Knowledge.  This is useful in several places in the dungeon.     Room 19 is the Temple of the God of Magitart, there is a statue of the god of death.  Picking it up results in death.ELEVATOR     The elevator drops us five levels into the dungeon.  There is a row of glowing buttons on the wall, activated by the motion of a body entering the elevator.  This also closes the door.     If the player does not push a button then the door will open and the buttons will no longer glow.  If a button is pushed then the elevator will deposit the player at the requested level.  Note that there are two levels above thee than a lot then send me a new SPECIAL or an improvement on something I've done.     What I would like to see happen now is what happened to the Pinball Construction Set.  I would like for the various people who enjoy this sort of game to adopt this as their official toy, to expand and improve on the ideas set forth here.     Send me your ideas.  I'll pass the best ones on to the ADAM community.  To get things started, I'm asking ANN to run a Name the DUNGEON contest.  I'll even offer a prize of 10% of aNews Network.  Dean Roads, head of my local ADAM user's group, 463-ADAM, suggested that I finish it off myself and publish it.  I'm not interested in doing that.  I started this project in May, 1990.  It is now August 26.  I have been through two complete rewrites and am ready to quit.  Not that I'm opposed to making some money to pay for all the aspirin I've used.  If you like the dungeon, feel free to send me ten dollars.  If you like it a lot, send me five dollars and a hall of rooms.  If you like it morroof 1 or 2 slopes, and the on-line-center of studs,rafters and joist.I suggest making a sketch of the project first. Use feet ONLY when giving dimensions; 7' 6 " = 7.5 feet, 22' 4" = 22.3 feet. NOTE: This program is based on the program  "Material Estimator" written by Roger Rawlings in 1984. It was expanded and modified for the ADAM system by G.L. Vrancks in 1990. ×36BTUSAVED: Gives an estimate of the BTU's that could be saved by adding more ceiling,wall or crawl space (floor) insulation. The estimatll the money I take in on the dungeon during the contest.  Oh, all right, I'll also toss in a free copy of the dungeon.     Seriously, I would like to hear your ideas.  My address is in the program.  Be sure to tell me whether you want your address printed.  Hope to hear from you soon.Not that I'm opposed to making some money to pay for all the aspirin I've used.  If you like the dungeon, feel free to send me ten dollars.  If you like it a lot, send me five dollars and a hall of rooms.  If you like it mor elevator and that there may be levels in between the levels it reaches.  Since it acts by teleportation, there is no way to tell.  We would certainly expect nasty monsters and rich rewards on these levels, however.     And that's it.  The entire dungeon prints to just over 12 single-spaced pages at present.  There are lots of places it can be expanded with new rooms, new monsters, new treasures.     That's what I would like you to do.  The dungeon and the articles are being distributed through the ADAM Ô0 Ì0 ×42 Ð66 Ê«2:27,52­2:27,53¯BUILD-IT¯by Jerry Vrancks - 463 ADAM¡27,119,1,49,129,177   þ(README file)þBUILDING: Estimate the number of    studs,joist,rafters and floor,wall and roof sheeting required to build a wood frame structure. If the cost of the material is known, it keeps a running total of the material cost. There is also a print option.WHAT YOU NEED TO KNOW: Height and length of walls. Number of wall, floor and ceiling openings and  their size. Do rafters or joist meet at mid-span. Is e than a lot then send me a new SPECIAL or an improvement on something I've done.     What I would like to see happen now is what happened to the Pinball Construction Set.  I would like for the various people who enjoy this sort of game to adopt this as their official toy, to expand and improve on the ideas set forth here.     Send me your ideas.  I'll pass the best ones on to the ADAM community.  To get things started, I'm asking ANN to run a Name the DUNGEON contest.  I'll even offer a prize of 10% of ae is not for the whole house but for that area only. Use HEATORCOOL for the whole house.MUST KNOW: SQ. FT. of area to be estimated, wall area is minus the glass and door area. Desired  inside temperature, and the average winter outside temperature. The present insulation and how much would be added in (inches). The savings estimated is for that area only NOT the total heating cost. A savings of 50% in the floor may only be 10% of the total heating cost.SHINGLES: Estimates the number of squares required fPeople are making plans to be there.  The list is growing every day.  I really look forward to my mail because there is usually more positive response to our plans for South Bend.  The most amazing thing about all of this is that the AC03 registration information was just sent to AUGs, BBSs, and suppliers a couple of weeks ago.  People are planning to attend before the release of specific convention information!  I am excited about what the response will be after newsletters, BBSs, Vulcan's and others spreaa slab, footing or both. Follow program  instructions. Give dimensions in feet and inches. You should make a sketch of the project first. þEDITORS NOTE:  Jerry's 'BUILD-IT' programs are available as 463 ADAM PD Vol #10.  I recommend this volume for three reasons.  #1 - It's intended purpose, to calculate the cost of building a house or other structure.   #2 - For experienced BASIC programmers.  What can you do to improve this series of programs?  Anyone sending in improvements can select any other 463 PD evant to all who will will be attending.  What do you want to see at the ADAM Store?  Norman concentrates on game instruction and newsletter reprints, but he has so many, it's not practical to bring everything.  Norman wants to bring what people want.  This applies to all ADAM suppliers at the ADAM Store.  In order to have the hardware, software and supplies you want, we have to know in advance so the suppliers can bring it.  Write, call, or leave me a message on the SLAUG BBS.  Better yet, write your favorÔ0 Ì0 ×42 Ð48 Ê¯ADAMCON 03¯ - UPDATE¡27,119,1,49,129,177C03 is beginning to take on a life of it's own.  There was talk at AC02 that there may never be another ADAMCON.  I was wondering myself, which is why I volunteered 463 ADAM to organize the convention.  I wanted to find out for myself if there was really so little interest in the future of ADAM.  I am pleased to say that the nay-sayers and doom-and-gloom group were wrong again!ADAM suppliers from around the continent are pledging their support. or a roofing job.NEED TO KNOW: Type of roof (hip or cable).  Measurement of eaves length,ridge length,distance from ridge to eaves. Enter all measurements in  feet. 16'6" = 16.5 ft.THERMCOST: Calculates the cost of heating fuels (1 therm) 100,000 BTU's.Need to know fuel unit cost. Can be used for a fuel comparison cost.Å×42BLOCKWALL: Estimates the number of blocks required for a block wall or structure,up to 6 walls.  Follow program instructions.CEMENTNEED: Estimates the number of yards needed for d the word to all ADAMites.We already have our first PAID delegate: Norman Castro.  Norman will not only attend, but as an ADAM supplier, (His game instruction and newsletter reprints are terrific.) he is donating door prize(s), may conduct an information session, and display his wares at the ADAM STORE.  Thanks Norman!  Now that you have broken the ice, everyone else can start sending in their registration forms.Norman called the other day and brought up a question about the ADAM Store.  It is very relvolume.  #3 - Novice programmers, these programs are written in plain BASIC, no machine language. Print out the program and carefully follow it as you watch what it does.  You can learn much about programming this way.Jerry's 'HELLO' program is listed below.  This is one way to select different programs from a disk or tape.darþBLOCKWALL: Estimates the number of blocks required for a block wall or structure,up to 6 walls.  Follow program instructions.CEMENTNEED: Estimates the number of yards needed for ite ADAM supplier.  If he is not already committed to attending, urge him to do so.  I wish I didn't have such a hard time keeping secrets.  There a several new and exciting ADAM projects that are in the works.  Some will be finished and released before AC03, but South Bend will be your best chance to see these things in action.  Other projects are in the works with the idea to unveil them at the convention.  MORE! BETTER! FASTER! and right in front of you!¯ONLY at ADAMCON 03!¯AGENDAWe wanted to renot have a national phone number, so look them up in the Yellow Pages under 'BUS'.  Whether you are traveling by air, rail, or bus, your best bet will be to contact a local office in your area for specific travel information.Don't overlook carpooling.  Many ADAMites will be driving to South Bend.  I expect several people from St. Louis will be sharing the ride.  Another idea is to pickup someone along the way.  For AC02 I had planned to meet someone from St. Louis and ride the rest of the way with them.   that it will only be done in favor of the majority.Feel free to suggest other topics or ideas.  One that comes to mind is to eliminate on the the breakout sessions and have a series of product demonstrations.  Other ideas?It is our intent to ask the session leaders to prepare handouts.  This may be an outline, or some other form.  Keep in mind, the session leader are ADAMites just like you.  Their efforts are all volunteer.  To ask them to supply copies of their presentation at their own expense is a l have seen the excitement building in the few months we have been planning ADAMCON 03, and I can tell you, it's for real.  There is even talk about ADAMCON 04!  Be a part of this support for our poor orphaned computer, come to South Bend in August and meet the best group of people in the world - ADAMites!!                    Dean Roades                    ADAMCON 03                    Convention Chairmanay.  For AC02 I had planned to meet someone from St. Louis and ride the rest of the way with them.  hiana, but with all the mergers and bankrupcys, my list may not be up to date.  Here is that list: American Eagle, Continental Express, Delta Connection, Midway Connection, Northwest, Trans World Express, US Air Express.  Most, if not all, are connecting flights from the major airports in Chicago, Indianapolis, Cleveland, and others.  You will certainly need to change planes if you are traveling from Florida, California, or other distant points.Amtrak's toll free number is 1-800-USA-RAIL.  Greyhound does mind everyone that the agenda published with the registration form is TENTATIVE!  It WILL change.  The change will be based on your responses and the availability of speakers.  We will make every attempt to secure speakers for the topics you want.  The expected change also means that some of the sessions listed will NOT be held.  Please remember that if only a few people select a session, it will be pulled in favor of one that is more popular.  Some of your early selections will be eliminated.  Keep in mindAt the last minute he was not able to attend, so it didn't quite work out, but that's the idea.  I will try to keep you updated on who has registered so you can contact them if something like this can be arranged.The most important thing is: ATTEND and encourage others to attend.  It's the best thing you can do to keep your ADAM alive for many years to come.  People thought ADAMCON 01 would be a fluke, never to be repeated.  Then there was ADAMCON 02.  Again, the un-informed said it would be the last.  Iot to ask for.  We will try to prepare these copies at convention headquarters if time and finances permit.TRANSPORTATIONJust about every means of transportation will get you to South Bend.  (I'm not sure if there are any rivers nearby, so canoe may be out.)  Amtrak has a terminal, Greyhound has a terminal, the Indiana Toll Road runs right through South Bend.  The Michiana Regional Airport is just 7 miles from the hotel, and there is a hotel courtesy bus that will pick you up.  Many airlines service MicÔ0 Ì0 ×42 Ð68 Ê¯ADAMCON 03 SUPPORT¯¡27,119,1,49,129,177ADAMCON 03 SPONSORS:ADAM-Link of Utah, Alan Neeley2337 South 600 East Salt Lake City, UT, 84106ADAM News Network, Barry Wilson12967 Weatherfield Dr. St. Louis, MO 63146The following ADAM Suppliers have made the commitment to attend ADAMCON 03:Kosowsky's ADAM Repair, Phil Kosowsky6067 Jerusalem Dr., Clay, NY, 12041S.M. Video, Shon McCallumPO Box 3189, Oakton, VA, 22124HEXACE Software, Bruce + Lynda WaltersRD#2 Box 51, Franklin, PHR$(a%):NEXT500DATA check parameters,enter record,scan records,edit record510DATA sort records,delete a record,clear workspace520DATA file options,print workspace,exit program530FOR x=0 TO 9:READ m1$(x):NEXT540DATA SURNAME,FIRST NAME,ORGANIZATION,ADDRESS,CITY550DATA STATE (PROVINCE),ZIP (POSTAL) CODE,COUNTRY560DATA PHONE NUMBER,FIRST ISSUE,TERM (months),ID CODE570FOR x=1 TO 12:READ fd$(x):NEXT580DATA 0,25,25,25,25,25,20,20,20,20,15,15,15590FOR x=0 TO 12:READ mx%(x):NEXT600DATA SmartWRITER,dot mattes          HEXACE Software          ADAMZap Software          Practical Programs          R + R Software          NIAD          ADAM Software Support          Roadrunner Publications          Oscar's Computers          Norm CastroUSER GROUPS:          St. Louis AUG          463 ADAM User GroupThese are the people who support YOU by supporting ADAM and ADAMCON 03., 12041S.M. Video, Shon McCallumPO Box 3189, Oakton, VA, 22124HEXACE Software, Bruce + Lynda WaltersRD#2 Box 51, Franklin, P30DATA load file,save file,delete file,rename file,done740FOR x=1 TO 5:READ m3$(x):NEXT750DATA address label,newsletter label,done760FOR x=1 TO 3:READ pa$(x):NEXT780DATA print all labels,print newsletter labels,done790FOR x=1 TO 3:READ pb$(x):NEXT980DATA 27,108,0,27,81,35,27,97,1990FOR x=65520 TO 65528:READ mc:POKE x, mc:NEXT1000TEXT:CALL tc%:POKE 16953, 95:GOSUB 311001010FOR x=0 TO 9:VTAB x+6:? " "; x; " = "; m1$(x):NEXT1020VTAB 17:? " Select option by number: "; 1030GET k$: k%=VAL(k$): k%=k%+15POKE 16134, 27:ONERR  GOTO 6000010REM ezFILER20REM written by DIGITAL EXPRESS30REM presented in "Nibbles & Bits"40REM July 198790REM run HELLO program first100 cb%=27407: tc%=27423: mm%=27436: nn%=27465: sd%=27486110 rd%=27595: hd%=27614: mx%=30: hc$="USA": re$=CHR$(13)120DIM fd$(12), mx%(12), mo$(12), nm$(39):CALL hd%130 sp%=11660: tf%=11673: m1$=CHR$(27)+CHR$(69)140 m2$=CHR$(27)+CHR$(70)300 g%=1:FOR x=11685 TO 11770: a%=PEEK(x)310ON g%=4 GOTO 500:IF a%=3 THEN  g%=g%+1:NEXT320 g$(g%)=g$(g%)+CA, 16323ADAMZap Software, Eric Danz17 Capstan Rd, W. Milford, NJ, 07480-4816NIAD, Lyle MarschandPO Box 1317, Lisle, IL, 60532ADAM Software Support, Jim Notini8125 Catherine, Chicago, IL, 60656Roadrunner Publications, Mel Ostler3217 Mesilla Hills Dr Las Cruces, NM, 88005Oscar's Computers, Howard PinesMariner Pl., 224 F. Elgin Ft. Walton Beach, FL, 32548Norman Castro809 W. 33rd St., Bellevue, NE, 68005The following have agrees to donate Door Prize(s):SUPPLIERS:          Elliam Associarix,EPSON compatible610DATA PANASONIC features,done620FOR x=1 TO 5:READ pt$(x):NEXT630DATA disk one,disk two,tape one,tape two,done640FOR x=1 TO 5:READ dv$(x):NEXT650DATA January,February,March,April,May,June,July,August660DATA September,October,November,December670FOR x=1 TO 12:READ mo$(x):NEXT680DATA change drive,change printer,change date,done690FOR x=1 TO 4:READ pm$(x):NEXT700DATA scan foreward,scan backward,edit record710DATA delete record,print record,done720FOR x=1 TO 6:READ m2$(x):NEXT7A, 16323ADAMZap Software, Eric Danz17 Capstan Rd, W. Milford, NJ, 07480-4816NIAD, Lyle MarschandPO Box 1317, Lisle, IL, 60532ADAM Software Support, Jim Notini8125 Catherine, Chicago, IL, 60656Roadrunner Publications, Mel Ostler3217 Mesilla Hills Dr Las Cruces, NM, 88005Oscar's Computers, Howard PinesMariner Pl., 224 F. Elgin Ft. Walton Beach, FL, 32548Norman Castro809 W. 33rd St., Bellevue, NE, 68005The following have agrees to donate Door Prize(s):SUPPLIERS:          Elliam Associa1040IF k$<"0" OR k$>"9" THEN GOSUB 30300:GOTO 10301050GOSUB 30100:IF k%>5 THEN  k%=k%-5:GOTO 10701060ON k% GOTO 1100, 2000, 3000, 4000, 60001070ON k% GOTO 10000, 11000, 12000, 13000, 560001100HOME:INVERSE:HTAB 2:? " drive:   ":?1110HTAB 2:? " printer: ":?:HTAB 2:? " date:    "1120NORMAL:GOSUB 31600:VTAB 1:HTAB 14:? dv$1130VTAB 3:HTAB 14:? pt$(PEEK(200))1140VTAB 5:HTAB 14:? mo$(PEEK(201)); " "; 1150 yr%=256*PEEK(203)+PEEK(202):? STR$(yr%)1200VTAB 10:FOR x=1 TO 4:? " "; x; " = "; pm$(x):NEXT1210GET010GOSUB 40100:GOSUB 319003020FOR x=1 TO 6:? " "; x; " = "; m2$(x):NEXT3030VTAB 23:HTAB 2:GET k$: k%=VAL(k$)3035IF k%<1 OR k%>6 THEN GOSUB 30300:GOTO 30303040GOSUB 30100:ON k% GOTO 3100, 3110, 3200, 3300, 3400, 10003100 rn%=rn%+1:GOTO 31203110 rn%=rn%-13120 mr%=mx%-PEEK(27647)-13130IF rn%>mr% THEN  rn%=03140IF rn%<0 THEN  rn%=mr%3150GOSUB 31710:GOSUB 40100:GOTO 30303200GOSUB 31900:? " Enter field # to edit:"3210 lf$="0": hf$="9": ml=1: ll=2: vt%=17: ht%=253220GOSUB 55000:IF a%=27 GOTO 32703230 "; dv$(4): dv%=dv%+11360? " "; dv%; " = "; dv$(5)1400GET k$: k%=VAL(k$)1410IF k%<1 OR k%>dv% THEN GOSUB 30300:GOTO 14001420GOSUB 30100:IF k%=dv% GOTO 11001430POKE 16821, PEEK(27640+k%):GOTO 11001600HOME:? " Select a printer:":?1610FOR x=1 TO 5:? " "; x; " = "; pt$(x):NEXT1620GET k$: k%=VAL(k$):IF k%<1 OR k%>5 THEN GOSUB 30300:GOTO 16201630GOSUB 30000:ON k%=5 GOTO 1100:POKE 200, k%:GOTO 11001800HOME:? " Enter month (by number):"1810 lf$="0": hf$="9": ml=1: ll=2: vt%=1: ht%=28:GOSUB 550001820ON a41800:GOSUB 420003510FOR y=1 TO cq%:GOSUB 43100:NEXT:GOTO 32703600GOSUB 41800:GOSUB 42000:GOSUB 450003610GOSUB 45300:GOSUB 43100:GOTO 32703999END4000ON PEEK(27647)=mx% GOTO 31800: mr%=mx%-PEEK(27647)-14010HOME:? " Enter RECORD # to EDIT:"4020 lf$="0": hf$="9": ml=1: ll=2: vt%=1: ht%=28:GOSUB 550004030ON a%=27 GOTO 1000: rn%=VAL(b$)-14040IF rn%<0 OR rn%>mr% THEN GOSUB 30300:GOTO 40204050GOSUB 31710:HOME:GOSUB 40000:GOSUB 401004060 mk%=1:GOTO 32006000ON PEEK(27647)=mx% GOTO 31800:IF PEEK(27647)=mxOSUB 31700:VTAB 20:HTAB 2:? "RECORD #: "; rn%+12110FOR x=1 TO 12:VTAB 22:HTAB 2:? "Enter "; fd$(x); ":"2120 ll=mx%(x)-1:GOSUB 55000:IF a%=27 GOTO 10002130IF b$="" AND x=8 THEN  b$=hc$2135IF b$="" GOTO 21602140FOR y=1 TO LEN(b$): a%=ASC(MID$(b$, y, 1))2150POKE k9+mx%(x-1)+y, a%:NEXT y2160 k9=k9+mx%(x-1):?:?:?:?:NEXT x2200 rc%=PEEK(27647):POKE 27647, rc%-1:GOSUB 300002210GOSUB 30100:?:?:?:?2220ON PEEK(27647)=0 GOTO 1000:GOTO 21003000ON PEEK(27647)=mx% GOTO 31800:GOSUB 400003005 rn%=0:GOSUB 317103 k$: k%=VAL(k$):IF k%<1 OR k%>4 THEN GOSUB 30300:GOTO 12101220GOSUB 30000:ON k% GOTO 1300, 1600, 1800, 10001300HOME:? " select a drive option:":?1310CALL sd%: dv%=11320IF PEEK(65532)<>4 GOTO 13301325POKE dv%+27640, 4:? " "; dv%; " = "; dv$(1): dv%=dv%+11330IF PEEK(65533)<>5 GOTO 13401335POKE dv%+27640, 5:? " "; dv%; " = "; dv$(2): dv%=dv%+11340IF PEEK(65534)<>8 GOTO 13501345POKE dv%+27640, 8:? " "; dv%; " = "; dv$(3): dv%=dv%+11350IF PEEK(65535)<>24 GOTO 13601355POKE dv%+27640, 24:? " "; dv%; " = fd%=VAL(b$):IF fd%<1 OR fd%>12 THEN GOSUB 30300:GOTO 32203240HOME:? " Enter new "; fd$(fd%); ":"3250 lf$=" ": hf$="z": ml=0: ll=mx%(fd%)-1: vt%=19: ht%=23260GOSUB 55000:ON a%=27 GOTO 3270:GOSUB 410003270HOME:GOSUB 31710:IF mk%=0 GOTO 30103280 mk%=0:GOTO 10003300GOSUB 41500:GOTO 32703400HOME:? " Which print option?"3410FOR x=1 TO 3:? " "; x; " = "; pa$(x):NEXT3420GET k$: k%=VAL(k$):IF k%<1 OR k%>3 THEN GOSUB 30300:GOTO 34203430GOSUB 30100:ON k% GOTO 3500, 3600, 32703500GOSUB 41700: ms$=" ":GOSUB %=27 GOTO 1000: a%=VAL(b$)1830IF a%<1 OR a%>12 THEN GOSUB 30300:GOTO 18101840POKE 201, a%:VTAB 3:HTAB 2:? "Enter year:"1850 vt%=3: ht%=15: ll=4:GOSUB 55000:IF a%=27 GOTO 10001860 a%=VAL(b$):IF a%<100 THEN  a%=a%+19001870POKE 203, a%/256:POKE 202, a%-256*PEEK(203):GOTO 11002000HOME:GOSUB 31200:HTAB 3:? "press <return> after typing "2010? " press <escape> to abort entry"2020? " "; :FOR x=1 TO 29:? "-"; :NEXT2030VTAB 20:POKE 16993, 20:POKE 16995, 4:HOME2100 lf$=" ": hf$="z": ml=0: vt%=23: ht%=22105G%-1 GOTO 320006100HOME:? " Really SORT records?"6110?:? " (Y=yes & N=no): "; 6120GET k$:IF k$="n" OR k$="N" THEN GOSUB 30100:GOTO 10006130IF k$<>"y" AND k$<>"Y" THEN GOSUB 30300:GOTO 61206200GOSUB 30100:HOME:? " SORTing alphabetically ..."6300 mr%=mx%-PEEK(27647)-1:FOR x=0 TO mr%: k9=27648+x*2566310 b$="":FOR y=0 TO 24: a%=PEEK(k9+y):IF a%=3 GOTO 63306315IF a%>=97 AND a%<=122 THEN  a%=a%-326320 b$=b$+CHR$(a%):NEXT y6330 nm$(x)=b$:NEXT x:FOR ii=0 TO mr%-1:FOR jj=ii+1 TO mr%6340IF nm$(ii)<=nm$(jj) , 1)="H" THEN  b$=LEFT$(b$, a%-1)12330HOME:? " getting "; b$; " ..."12340VTAB 23:? CHR$(4); "bload "; b$; ",A27647"12350 cn$=b$:GOSUB 31400:GOSUB 30000:CALL hd%:GOTO 100012400? " Enter new filename:"12410 vt%=21: ht%=2: lf$="!": hf$="z": ml=1: ll=1012420GOSUB 55000:IF a%=27 GOTO 100012430HOME:? " storing "; b$; " ..."12440VTAB 23:? CHR$(4); "bsave "; b$; ",A27647,L7681"12450 cn$=b$:GOSUB 31400:GOSUB 30000:CALL hd%:GOTO 100012500? " DELETE which file:"12510 vt%=21: ht%=2: lf$="!": hf$="z": ml=1: lmr% THEN GOSUB 30300:GOTO 1002010050GOSUB 31710:HOME:GOSUB 40000:GOSUB 4010010060GOSUB 31900:GOSUB 41500:GOTO 100011000HOME:? " Really CLEAR workspace?"11010?:? " (Y=yes & N=no): "; 11020GET k$:IF k$="n" OR k$="N" THEN GOSUB 30100:GOTO 100011030IF k$<>"y" AND k$<>"Y" THEN GOSUB 30300:GOTO 1102011100GOSUB 30100:HOME:? " clearing workspace ..."11110CALL cb%:POKE 27647, mx%: cn$="new file":GOSUB 3140011120HOME:? " workspace cleared!!!":GOTO 3100012000HOME:GOSUB 31600:? " to read "; dv$; ","12010?:? 0012630HOME:? " renaming "; ob$; " ..."12640VTAB 23:? CHR$(4); "rename "; ob$; ","; b$12650GOSUB 30000:GOTO 1210013000HOME:? " Which global printing?":?13010FOR x=1 TO 3:? " "; x; " = "; pb$(x):NEXT13020GET k$: k%=VAL(k$):IF k%<1 OR k%>3 THEN GOSUB 30300:GOTO 1302013030GOSUB 30100:ON k% GOTO 13100, 13200, 100013100 ms$=" ":GOSUB 41800:GOSUB 42000: mr%=mx%-PEEK(27647)-113110FOR y=0 TO mr%: rn%=y:GOSUB 43100:NEXT:GOTO 100013200GOSUB 41800:GOSUB 42000: mr%=mx%-PEEK(27647)-113210FOR y=0 TO mr%: rn%=yGOTO 1220012180 fi%=fi%+1:GOTO 1213012200VTAB 17:HTAB 2:INVERSE:? " current file: ":NORMAL12210VTAB 17:HTAB 20:? cn$:?12220FOR x=1 TO 5:? " "; x; " = "; m3$(x):NEXT12230VTAB 24:HTAB 15:GET k$: k%=VAL(k$)12240IF k%<1 OR k%>5 THEN GOSUB 30300:GOTO 1223012250GOSUB 30100:POKE 16993, 6:POKE 16995, 18:HOME12260ON k% GOTO 12300, 12400, 12500, 12600, 100012300? " Enter the filename to load:"12310 vt%=21: ht%=2: lf$="!": hf$="z": ml=1: ll=1012320GOSUB 55000:IF a%=27 GOTO 100012325 a%=LEN(b$):IF RIGHT$(b$GOTO 64006350 du$=nm$(ii): nm$(ii)=nm$(jj): nm$(jj)=du$:POKE tf%+5, 16360POKE tf%+2, ii+108:POKE tf%+8, 212:CALL tf%6370POKE tf%+2, jj+108:POKE tf%+8, ii+108:CALL tf%6380POKE tf%+2, 212:POKE tf%+8, jj+108:CALL tf%6400NEXT jj:NEXT ii:HOME:? " records sorted."6410GOSUB 30100:GOTO 3100010000ON PEEK(27647)=mx% GOTO 31800: mr%=mx%-PEEK(27647)-110010HOME:? " Enter RECORD # to DELETE:"10020 lf$="0": hf$="9": ml=1: ll=2: vt%=1: ht%=28:GOSUB 5500010030ON a%=27 GOTO 1000: rn%=VAL(b$)-110040IF rn%<0 OR rn%>l=1012520GOSUB 55000:IF a%=27 GOTO 100012525 a%=LEN(b$):IF RIGHT$(b$, 1)="H" THEN  b$=LEFT$(b$, a%-1)12530HOME:? " deleting "; b$; " ..."12540VTAB 23:? CHR$(4); "delete "; b$12550GOSUB 30000:GOTO 1210012600? " RENAME which file:"12610 vt%=20: ht%=2: lf$="!": hf$="z": ml=1: ll=1012612GOSUB 55000:?:ON a%=27 GOTO 100012614 a%=LEN(b$):IF RIGHT$(b$, 1)="H" THEN  b$=LEFT$(b$, a%-1)12616?:? " Enter NEW filename:": ob$=b$12618 vt%=23: ht%=2: lf$="!": hf$="z": ml=1: ll=1012620GOSUB 55000:ON a%=27 GOTO 10" press <return> ..."; 12020GET go$:GOSUB 30100:IF go$<>CHR$(13) GOTO 100012100GOSUB 31910:HOME:? " reading "; dv$; " ..."12110POKE rd%+7, 1:CALL rd%:IF PEEK(0)<>128 THEN GOSUB 30300:GOTO 1200012120HOME: fi%=0: st=54324: vt%=0: ht%=212130 st=st+26: vt%=vt%+1:IF PEEK(st+12)=1 GOTO 1220012135IF PEEK(st+12)=4 OR PEEK(st+12)=20 THEN  vt%=vt%-1:GOTO 1213012140POKE sp%+2, st/256:POKE sp%+1, st-256*PEEK(sp%+2)12150IF fi%>14 THEN  ht%=16:VTAB vt%-15:GOTO 1217012160VTAB vt%12170HTAB ht%:CALL sp%:IF fi%>29 :GOSUB 45000:IF ms$="GONE" GOTO 1323013220GOSUB 45300:GOSUB 4310013230NEXT:GOTO 100030000POKE mm%+1, 20:POKE mm%+15, 10:CALL mm%:RETURN30100POKE mm%+1, 8:POKE mm%+15, 25:CALL mm%:RETURN30200POKE mm%+1, 2:POKE mm%+15, 7:CALL mm%:RETURN30300POKE nn%+1, 226:POKE nn%+10, 120:CALL nn%:RETURN30400POKE nn%+1, 228:POKE nn%+10, 20:CALL nn%:RETURN31000?:? " press any key to continue..."; :GET go$31010GOSUB 30000:RUN31100VTAB 1:INVERSE:HTAB 2:? " records free: "31110HTAB 2:? " records used: "31120HTAB 2:? LL tf%41620FOR x=35072 TO 35327:POKE x, 3:NEXT41630POKE 27647, PEEK(27647)+1:RETURN41700HOME:? " How many copies?"41710 vt%=VPOS(0): ht%=20: ml=1: ll=3: lf$="0": hf$="9"41720GOSUB 55000:IF a%=27 THEN POP:GOTO 100041730 cq%=VAL(b$):IF cq%<1 OR cq%>500 THEN GOSUB 30300:GOTO 4172041740RETURN41800HOME:? " press <return> to print ..."; 41810GET go$:IF go$<>re$ THEN POP:GOSUB 30100:GOTO 100041820GOSUB 30000:HOME:? " printing ..."; :RETURN41900IF PEEK(200)>2 THEN  x$=m1$:GOTO 4410041910RETURN41950IF P)=8 THEN  dv$=dv$(3)31630IF PEEK(16821)=24 THEN  dv$=dv$(4)31640RETURN31700 rn%=mx%-PEEK(27647)31710 k9=27647+rn%*256:RETURN31800HOME:? " No RECORDS in workspace!!!":GOSUB 30300:GOTO 3100031900POKE 16993, 8:POKE 16995, 16:VTAB 20:HOME:RETURN31910POKE 16993, 24:POKE 16995, 0:RETURN32000HOME:? " ONLY one RECORD!!!":GOSUB 30300:GOTO 3100040000HOME:HTAB 2:INVERSE:? " RECORD #:"40010FOR x=1 TO 12: x$=STR$(x):IF x<10 THEN  x$=" "+x$40020VTAB x+2:HTAB 2:? x$; ":":NEXT:NORMAL:RETURN40100GOSUB 40200: k9=120 k9=27648+rn%*256:GOSUB 44000: x$=re$:GOSUB 44100:GOSUB 4195043130 k9=27648+rn%*256+75:GOSUB 44000: x$=re$:GOSUB 4410043140 k9=27648+rn%*256+100:GOSUB 44000: x$=", ":GOSUB 4410043150 k9=27648+rn%*256+125:GOSUB 44000: x$="  ":GOSUB 4410043160 k9=27648+rn%*256+145:GOSUB 44000: x$=re$:GOSUB 4410043170 x$=re$:GOTO 4410044000FOR x=0 TO 24: x%=PEEK(k9+x):IF x%=3 GOTO 4413044010 x$=CHR$(x%):GOSUB 44100:NEXT: x$=""44100IF pj%=1 THEN POKE 12043, 20144110PR #pj%:? x$; 44120IF pj%=1 THEN POKE 12043, 2454(MID$(b$, y, 1))41040POKE k9+mx%(fd%-1)+y, a%:NEXT y41100POKE k9+mx%(fd%-1)+y, 3:RETURN41500HOME:? " Really DELETE record # "; rn%+1; "?"41510?:? " (Y=yes & N=no): "; 41520GET k$:IF k$="n" OR k$="N" THEN GOTO 3010041530IF k$<>"y" AND k$<>"Y" THEN GOSUB 30300:GOTO 4152041540GOSUB 30100:HOME:? " deleting record ...":GOSUB 4160041550HOME:? " record deleted!!":POP:GOTO 3100041600 mr%=mx%-PEEK(27647)-1:POKE tf%+2, 108+rn%+141605IF mx%-rn%-1=0 GOTO 4162041610POKE tf%+5, mx%-rn%-1:POKE tf%+8, rn%+108:CA" file name:    ":NORMAL31130VTAB 1:HTAB 18:? PEEK(27647)31140HTAB 18:? mx%-PEEK(27647)31150GOSUB 31300:HTAB 18:? cn$:RETURN31200IF PEEK(27647)>0 THEN RETURN31210? " workspace full!!!":GOSUB 30300:GOTO 3100031300 cn$="":FOR x=27630 TO 27640: cn%=PEEK(x): b$=CHR$(cn%)31310ON cn%=3 GOTO 31640: cn$=cn$+b$:NEXT31400FOR x=1 TO LEN(cn$): a%=ASC(MID$(cn$, x, 1))31410POKE x+27629, a%:NEXT:POKE 27629+x, 3:RETURN31600IF PEEK(16821)=4 THEN  dv$=dv$(1)31610IF PEEK(16821)=5 THEN  dv$=dv$(2)31620IF PEEK(16821EEK(200)>2 THEN  x$=m2$:GOSUB 4410041960RETURN42000IF PEEK(200)=1 THEN  pj%=1:RETURN42010 pj%=3:IF PEEK(200)<>4 THEN RETURN42020POKE 65522, 0:POKE 65525, 35:FOR x=65520 TO 6552842030POKE 1127, PEEK(x):CALL 1126:NEXT:RETURN43100 x$=ms$:GOSUB 44100: x$=re$:GOSUB 4410043102 k9=27648+rn%*256+50: x%=PEEK(k9)43103IF x%=3 THEN  x$=re$:GOSUB 44100:GOTO 4311043104GOSUB 44000: x$=re$:GOSUB 4410043108GOSUB 41900: x$="ATTN: ":GOSUB 4410043110GOSUB 41900: k9=27648+rn%*256+25:GOSUB 44000: x$=" ":GOSUB 4410043k9+1:VTAB 1:HTAB 15:? rn%+1; " "40110FOR x=1 TO 12: k9=k9+mx%(x-1)40120POKE sp%+2, k9/256:POKE sp%+1, k9-256*PEEK(sp%+2)40130VTAB x+2:HTAB 6:CALL sp%:NEXT:POKE 16953, 95:RETURN40200POKE 16953, 32:POKE 16993, 12:POKE 16995, 2:POKE 16996, 540210POKE 16994, 26:VTAB 10:HTAB 10:HOME:POKE 16994, 3140220POKE 16993, 8:POKE 16995, 16:POKE 16996, 1:RETURN41000IF b$="" AND fd%=8 THEN  b$=hc$41010GOSUB 31710:FOR x=1 TO fd%-1: k9=k9+mx%(x-1):NEXT41020IF b$="" THEN  y=1:GOTO 4110041030FOR y=1 TO LEN(b$): a%=ASC4130PR #0:RETURN45000 yv%=PEEK(203)*256+PEEK(202)-1900: xx%=045030 ct%=yv%*12+PEEK(201): yr$="":FOR x=1 TO 445040 a%=PEEK(27647+rn%*256+205+x):IF a%=3 GOTO 4506045050 yr$=yr$+CHR$(a%):NEXT45060IF LEN(yr$)=3 THEN  yr$="0"+yr$45070 mo$=LEFT$(yr$, 2): yr$=RIGHT$(yr$, 2)45080 mo%=VAL(mo$): yr%=VAL(yr$)45100 te$="":FOR x=1 TO 4: a%=PEEK(27647+256*rn%+220+x)45110ON a%=3 GOTO 45120: te$=te$+CHR$(a%):NEXT45120IF LEN(te$)=1 THEN  te$="0"+te$45130IF LEN(te$)=2 THEN  te$="0"+te$45140 t1%=VAL(LEFT$(te$, 1))e ListCPM1.TXT   A   Tom Keene IEAUG     CP/M for the ADAM Part 1CPM2.TXT   A   Tom Keene IEAUG     CP/M for the ADAM Part 2MLOAD.DOC  A   Doc file about MLOAD which will convert HEX files into a COM file.TC.DOC     A   Doc file about 'TEXT CHECKER Program' by A.M. Kuzmack.ADAMCPM1   A   Ron Collins    What is CP/M and what can it do for you?===========================================================REPAIR_ADD H   New Address for Kosowsky's ADAM Repair.FORMAT     A   Bart Lynch + Bob Blair   100: x$=yf$:GOSUB 4410045310 k9=27648+rn%*256+235:GOSUB 44000: x$="     ":GOTO 4410055000VTAB vt%:HTAB ht%:FOR j=1 TO ll:? CHR$(95); 55010NEXT: b$="":VTAB vt%:HTAB ht%: fe%=FRE(0)55020GET a$: a%=ASC(a$):IF a%=27 GOTO 3000055030IF a%=13 AND LEN(b$)>=ml GOTO 3010055070IF a$>=lf$ AND a$<=hf$ GOTO 5512055080IF a%<>8 AND a%<>163 THEN GOSUB 30300:GOTO 5502055090IF b$="" THEN GOSUB 30300:GOTO 5502055100IF LEN(b$)=1 THEN  b$="":GOSUB 30400:GOSUB 55170:GOTO 5502055110 b$=LEFT$(b$, LEN(b$)-1):GOSUB 30400:GO6 of Joe's series on how to write text adventure games.  D$6 is the article about the code in D6.BUILDIT    A   The 'README' file from Jerry Vrancks latest PD contribution.AC03       A   Dean Roades    The February 1991 press release on ADAMCON 03.SHOPPER    A   Dean Roades    ADAM suppliers supporting AC03.===========================================================ezFILER    A   Sol Swift's filing program from Nibbles & Bits.  Joe Alford's modifications are on disk 1 this month.nch + Bob Blair   Ô0 Ì5 ×70 Ð669102ANN-2READMETWO  This file, a summary of the other files.  Prepared by Dean Roades of 463 ADAM.===========================================================THE FOLLOWING WAS DOWNLOADED FROM THE AWAUG BBS, 24 HRS. 202-561-2475 and appeared and is going to appear in the excellent AWAUG newsletter.   We   thank AWAUG for sharing this information with us.PR_ANFD1   A   Micro Innovations   Press release on the availability of NEW disk drives.PRICLST4   A   Mirco Innovations   Product Pric: t2%=VAL(MID$(te$, 2, 1))45150 t3%=VAL(RIGHT$(te$, 1)): te%=100*t1%+10*t2%+t3%45160 mt%=mo%+yr%*12+te%: tt%=mt%-ct%-1: mt%=mt%-yv%*12-145170IF mt%>12 THEN  mt%=mt%-12: xx%=xx%+1:GOTO 4517045180 yf$=STR$(yv%+xx%): mf$=STR$(mt%)45190IF mt%<10 THEN  mf$="0"+mf$45200IF tt%=-1 THEN  ms$="(expired)":RETURN45220IF tt%<-1 THEN  ms$="GONE":RETURN45230IF tt%=0 THEN  ms$="FINAL ISSUE!!":RETURN45240IF tt%=1 THEN  ms$="TIME TO RENEW":RETURN45250 tt$=STR$(tt%): ms$="("+tt$+" more)":RETURN45300 x$=mf$:GOSUB 44ANN Staff      ANN now gives you a choice of format for your ANN disks.ANN_STAFF  H   Barry Wilson   ANN  Announcement of new ANN Staff members and a complete listing of all ANN Staff.RANDOM1    A   Bob Curry      EAUG (Edmonton)     'Generating Random Numbers' Part 1.RANDOM2    A   Bob Curry      EAUG (Edmonton)     'Generating Random Numbers' Part 2.===========================================================From the 463 ADAM Newsletter, Dean Roades, Editor:D$6        A   Joe Alford.  Part 6 of SUB 55170:GOTO 5502055120IF LEN(b$)<ll GOTO 5516055150GOSUB 30300:GOTO 5502055160? a$; :GOSUB 30200: b$=b$+a$:GOTO 5502055170? CHR$(8); CHR$(95); CHR$(8); :RETURN56000TEXT:? " end of program."56010?:? " enter NEW to clear RAM.":END60000CLRERR:POKE 12043, 245:? CHR$(13):PR #0:RUNs$="(expired)":RETURN45220IF tt%<-1 THEN  ms$="GONE":RETURN45230IF tt%=0 THEN  ms$="FINAL ISSUE!!":RETURN45240IF tt%=1 THEN  ms$="TIME TO RENEW":RETURN45250 tt$=STR$(tt%): ms$="("+tt$+" more)":RETURN45300 x$=mf$:GOSUB 44åååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååå