Skip to main content

Full text of "Contact - Issue No 3 (1978-09)(Apple Computers)(US)"

See other formats


the user group 



! 






I '■ '!i 



1 L JVTF. 
[lit 






I 1 1 > J !i I \ I 1 |j i'l i 



With this issue of CONTACT, 
we're pleased to add five more 
groups to the rapidly growing list of 



• .- .".:;■ so;-, of usei coniribuied 
•■ : '< ■•:.'■<-■'.■ , ■'■ id express our thanks to 
; IJ those both inside and outside of 
f pple Computer whose efforts 
made ii possible. 

The purpose of the contributed 
section of the software bank is to 
allow APPLE users to share pro- 
grams among themselves easily and 
at very low cost. By setting up a 
system to make this possible, we at 
APPLE hope to bring about a cross- 
fertilization of the user community, 
with better programs and applica- 
tions ideas as the result. 

Here is a brief description of 
the program. More details will be 
found in the enclosed catalog. 

As APPLE receives contributed 
programs, they are screened. The 
necessary documentation is assem- 
bled, and written catalog descrip- 
tions are produced for each program 
accepted. The author is then sent a 
$25 APPLE merchandise certificate. 

Periodically, the available pro- 
grams will h-- assembled onto 
diskettes bulk duplicated, and 



ppiiecl to A 






modest cost. The dealers will have 
unlimited reproduction rights to 
the programs on each diskette. As 
each diskette is released, APPLE 
will distribute a catalog of its con- 
tents to you along with CONTACT. 
When you see something you like, 
just call or visit your local dealer 
for a copy. 

The library is a resource. In it 
you will find some programs you 
can use as is, some you can improve 
upon, and some that may not 
interest you at all. That's as it should 
be. Use what you can, send in your 
improvements, and let's work 
together to build a super library! 

Oh, about the Bard on the 
cover. His image is one of many 
graphics demonstrations available 
on the first set of Software Bank 
diskettes. It was produced with a 
modified facsimile machine that 
digitized the original artwork, and a 
graphic processing program on a 
PDP-1 1/03 that reduced the image 
to an 8K byte database. It can now 
be displayed by the Apple in the 
Hi-Res Graphics mode. 



APP 



user groups 






APPLE CORE 

Scott Kamins 

Box 4816 

San Francisco, CA 94101 

OREGON - 

STEMS FROM APPLE 
Ken Hoggatt 

9195 S.W. El Rose Court 
Tigard, OR 97223 
(503)639-5505 (home) 
(503)644-0161, x6136 (work) 

TEXAS - 

APPLE SEED 

The Computer Shop 

6812 San Pedro 

San Antonio, TX 78216 

Bill Hyde 

(512)828-0553 

(No name given for this group) 

c/o Computer Solutions 

Suite 1 24A, 9200 Broadway 

San Antonio, TX 78217 

Philip W. Jackson 

(512)828-1455 

(800) 292-7652 (toll free) 

ARKANSAS - 

Interested in joining or forming 
an APPLE user group? Contact 
C. Johnson, c/o dataCope, 5706A 
W. 1 2th St.', Little Rock, AR 72204. 
(501)666-8588. 



eoncciccs/tSie user group newsletter for sept. 1' 



713 



"'ly,;. ; !(<): iifljj rf}.*4nK< 



If you're interested in forming 
or joining an APPLE user group in 
your area, call or visit your local 
APPLE dealer; he'll be glad to help. 
And if you know of an APPLE 
group that's not yet been listed in 
this newsletter (see CONTACT No. 
1 and No. 2 for the listings of the 
groups that we know about), write 
us here at APPLE. Direct your 
note to Phil Roybal, marketing 
manager. 



/ /. 



JL 



11 



LOO 



in 






With this issue of CONTACT 
we've included an APPLE catalog 
and a price list. If they've been 
swiped by the time you read this, 
or if you'd like another set "for a 
friend," just drop us a line — we'll 
be glad to send you the literature 
that you request. 

Note, too, that this mailing 
includes the first catalog of User 
Contributed Software, with instruc- 
tions on how to get it! 



...Mini m '• I CJI >up< , 

by Jim Hoy I (Silicon Apple 
Programming Soclely) 

The name says it quite explic- 
itly. USER GROUP: individuals 
drawn together by a common 



interest in getting maximum benefit 
from their computer investment. 

Member benefits are many fold. 
For the newcomer, programming 
techniques are explained, the inner 
workings of the computer made 
more clear. The answers to many 
beginner's questions are found 
right here. 

More experienced members can 
get help or help others with soft- 
ware and hardware design. (Some 
of the things being done would 
amaze you: APPLE controlled 
cassette I/O and lower-case displays 
to name only two!) 

All members benefit from the 
group's library. There is probably 
no better place to get low cost soft- 
ware or that back issue of the mag- 
azine you need. And many members 
enjoy newsletters published by 
their group which supplement our 
own with hints, local news, and 
application ideas. 

The growth of the personal 
computer industry depends on you, 
the USER. Join a group. If there is 
no local group, consider starting 
one. A group ties it all together! 



If (in the DOS) you try to load 
a program that had been saved 
under RAM APPLESOFT II, but 
you are now using the ROM card 
version, your program will not run 
correctly. To get around this 
problem, load your program and 



then type 

CALL 54514 
and your program will be correct. 

Similarly, a program that was 
saved onto diskette from the ROM 
card version and later loaded under 
RAM APPLESOFT II will also 
cause problems. Simply type 

CALL 3314 
and your program will be correct. 
You can now save it onto tape. 

The earliest production DOS 
had a problem: when in APPLE- 
SOFT II, any Read or Write state- 
ments with line numbers of 256 or 
higher would be ignored. To solve 
this problem on any disks you may 
INIT in the future, bring up the 
DOS, remove the Write Protect 
sticker from your system's master 
diskette, and then type: 

>PR#n (boot your system) 

>BLOAD RAWDOS 

>(hit Reset) 

*25D6:4C D5 3F 

:|: 25DC:2E 

*3FD5:E8 FO 1 60 4C DD 25 

*3D0G 

>BSAVE RAWDOS, A$1B00, 
L$2500 

Any new masters created from 
this original master diskette will 
now work properly. 



Two corrections to CONTACT 2, 
June '78 

There is one correction to be 
made in each of two program list- 
ings in the HOW TO section of the 
last issue of CONTACT. 

- The CONVERT program on 
Page 6: statement 251 should read 
251 IF TOO THEN NEXT 
B:B=B+1 : IF B<E THEN 40 

- The HOW TO SET LOMEM 
WITHOUT HARDLY TRYING 
program on page 7: we should have 
tried harder. We now hasten to 
point out that, in statement 40, B 
cannot be a variable, since setting 
the new LOMEM will destroy the 
variables (as we ourselves said, in 
the paragraph just preceding the 
listing). The concept works, but 
make sure that you POKE in 
numbers in that line, not variables. 



«JMMty,'6/the user group netusletter forsep 



o 






'^tx^\ii\^ut\i'\u^ a 



Cockpit errors and DOS 

A high percentage — 75 per 
cent, to be precise — of disk errors 
found so far are due to users trying 
to run APPLESOFT II by typing 
"RUN APPLESOFT." This seems 
reasonable, but APPLE II doesn't 
see it quite that way. As a result 
(among other things) you cannot 
reload programs saved on disk. 

To get things to come out right 
— all pointers where they should 
be, etc. — , from Integer BASIC 
simply type 

FP (Carriage Return) 
and you'll bring in APPLESOFT II, 
pointers and all. 

To get back to Integer BASIC 
simply type INT. 

About that Communications Card 
manual . . . 

We've put together some addi- 
tional information that will be 
needed by many of you using our 
Communications Card. Included are 
a routine for use with low-speed 
printers, information on setting the 
card's status register, information 
on setting up a 1 200-baud data 
rate, and a number of other inter- 
esting tidbits, as well. 

We will be including this adden- 
dum to the card manual with all 
future card shipments, and we'll 
also be distributing it to all our 
dealers. So if you already have an 
APPLE Communications Card, just 
call your APPLE dealer to get your 
copy of the additional card info — 
it'll be available about the time that 
you read this. 



Document, document, docu- 
ment. It would be difficult for you 
to give us too much information 
about a program that you send us — 
we need to know as much (and 
sometimes more) about your pro- 
gram contribution as you can tell us. 
And never assume that potential 
users of your program are as clever 
as you; instead, assume that they 
know nothing — not even when to 
hit RETURN! Remember: The care 
you take in explaining your program 
is the only guarantee that it will be 
usable by anyone else. 

SAVE, then SAVE again. SAVE 
your program twice, one recording 
after the other, on the same cassette. 
By doing this you give yourself, and 
us, a safety factor in that if our 
computer cannot read the first 
SAVE, perhaps it will be able to 
read the second. (As you know, not 
all recorders are created equal.) 

By the way, please add your 
name and address to the program 
listing with REM statements before 
you save it, so that there will be no 
question as to whose program we're 
running when we try it out. 

LOAD , check , then give yourself 
credit. After you SAVE your pro- 
gram, turn OFF the Apple to clear 
the memory space you've been 
using, then power it up and LOAD 
the program to be sure that it does 
in fact load and run. 

Finally, protect. After saving 
your program, make sure that it 



cannot be erased. Every cassette 
includes a write/protect feature in 
the form of two small plastic tabs 
on the edge of the cassette oppo- 
site its business end. When these 
tabs are pushed in, pulled out, or 
otherwise gotten out of the way, 
the cassette can no longer be 
written into. 

Clearing the air. We make no 
profit from your contributions to 
the user portion of the APPLE 
software bank. We set up this por- 
tion of the bank simply to encourage 
and to ease the exchange of pro- 
grams among APPLE users. The 
honorarium that we pay for contri- 
butions to this portion of the bank 
is merely our way of encouraging 
such contributions. 

From time to time, of course, 
APPLE does purchase software, and 
does so at the fair market value. 
Such purchases are negotiated indi- 
vidually, based upon market condi- 
tions, applicability of the product, 
etc. 



sff^^W^J 



• • » • Jf 



our of 



equivalents 



The following table presents 
decimal-number equivalents and 
APPLE keyboard equivalents to 
ASCII (American Standard Code 
for Information Interchange) char- 
acters. That is, if you were to scan 
the keyboard directly in BASIC, 
these are the characters that you 
would read ; or, if you were to go 
into memory, these characters would 
appear as string-variable values. 



4 



cone ic 5/th m @i ir< »ui n ;iu ;l< tl sr for 



1978 



H 



Kip 



joiti 



pijlxa 



In the APPLE keyboard column, 
read S M C as a SHIFT/CONTROL-M 
B c as CONTROL-B, etc. The deci- 
mal numbers listed are those before 
clearing of the keyboard strobe; 
after clearing of the strobe, the 
number is the listed value minus 
128 (e.g., after clearing of the 
strobe, 145 becomes 17). If an 
APPLE keyboard equivalent 
doesn't exist, or if there is no deci- 
mal equivalent, then the table 
shows a double dash (--); if the key- 
board equivalent is identical to the 
ASCII character itself, then the 
table shows "sa.". 



Such information can make 
your programming life much easier, 
because it lets you get keyboard 
data directly into a BASIC program 
without the use of an INPUT state- 
ment. As you know, INPUT state- 
ments can be limiting as, for 
example, when you type in a line 
and the screen yells SYNTAX 
ERROR at you. Well, what is the 
error? It may take a long time to find. 

If, on the other hand, the key- 
strokes are picked directly off the 
keyboard then you — the program- 
mer — are in command every step 
of the way ; you make the decisions 



as to what goes and what does not, 
and in a way that tells you exactly 
what's wrong as you go wrong. 

You can see one way in which 
this idea is applied in "Being Precise 
in INTEGER," in this issue's HOW 
TO section. In this Multiple Preci- 
sion Arithmetic listing, statements 
2500—2610 input data directly 
from the keyboard ; they tell you 
exactly what's happening, the 
nature of any error you may have 
committed, etc. — and all by 
making use of the equivalence in 
the table presented here. 



TABLE OF ASCII CHARACTER VALUES 



ASCII 
CHAR 


APPLE DEC 
KYBD EQUIV 


ASCII APPLE DEC 
CHAR KYBD EQUIV 


ASCII APPLE DEC 
CHAE KYBD EQUIV 


ASCII APPLE DEC 
CHAR KYBD EQUIV 


NUL 
SOH 


S p C 

A C 1 


28 
29 


SP I 
! s 


pace 16Q 
a. 161 


@ s 

A 


a. 192 
193 


B. S3, ZZj 


STX 


B C 1 


30 


// 


162 


B 


194 


b 


226 


ETX 


C C 1 


31 


# 


163 


C 


195 


c 


227 


EOT 


D C ] 


32 


$ 


1 64 


D 


196 


d 


228 


ENQ 


E C 1 


33 


% 


165 


E 


197 


e 


229 


ACK 


F C 1 


34 


& 


166 


F 


198 


f 


230 


BEL 


G C 1 


35 


' 


167 


G 


199 


g 


231 


BS 


<- 


36 


( 


168 


H 


200 


h 


232 


HT 


I C 


37 


) 


169 


I 


201 




233 


LF 


J C 


38 


* 


170 


J 


202 




234 


VT 


K c 


39 


+ 


171 


K 


203 


k 


235 


FF 


L C 


40 


, 


172 


L 


204 




236 


CR 


M C 


41 


— 


173 


M 


205 


m 


237 


SO 


N C 


42 




174 


N 


206 


n 


238 


SI 


o c 


43 


/ 


175 


O 


207 





239 


DLE 


P C 


44 





176 


P 


208 


P 


240 


DC1 


Q C 


[45 


1 


177 


Q 


209 


q 


241 


DC2 


R C 


46 


2 


178 


R 


210 


r 


242 


DC3 


S C 


[47 


3 


179 


S 


211 


s 


243 


DC4 


T C 


48 


4 


180 


T 


212 


t 


244 


NAK 


TjC 


49 


5 


181 


U 


213 


u 


245 


SYN 


yC 


150 


6 


182 


V 


214 


v 


246 


ETB 


w c 


151 


7 


183 


w 


215 


w 


247 


CAN 


x c 


152 


8 


184 


X 


216 


X 


248 


EM 


X 


153 


9 


185 


Y 


217 


y 


249 


SUB 


yC 


154 




186 


z ^ 


f 218 


z 


250 


ESC 


sa. 


155 


> 


187 


[ 


219 




251 


FS 


- 


156 


< 


188 


\ 


220 




r 252 


GS 


S M C 


157 


= 


189 


] 


! M 221 


ALT 


253 


RS 


s N c 


158 


> 


190 


t 


222 


- 


254 


US 


-- 


159 


? i 


r 191 


- 


223 


DEL 
RUBOUf 





LF = Line Feed; CR = Carriage Return; SP = SPace; ESC = ESCape; sa. = Keyboard character same as ASCII character. 



J 



" nca ,'. i/l : ; user gi up new iU rtc i for sept 



!97 l 



VV' ' ' »' | !'''' pi ''",' Otf^ 



• . ri uiiiuwiiiy 



(Adapted from the Apple Core 
Newsletter, San Francisco, CA). 

Ordinarily , APPLE displays only 
Page 1 of its memory (locations 
1024 to 2047). But it is possible to 
display Page 2 (locations 2048 to 
3071) as well; and if you know how 
to do it, use of Page 2 will give you 
black screens in a hurry, and snap 
your graphics and/or text material 
cleanly on and off. 

Before you can use Page 2, how- 
ever, you must tell APPLE not to 
put any variables at locations lower 
than 3072; in other words set 
LOMEM:3072. After you've done 
this, you're free to move the con- 
tents of Page 1 to Page 2, reload 
Page 1 with new data, and switch 
back and forth between the two 
pages. Here's how to do it, using 
the general-purpose block move- 
ment routines built into Apple's 
monitor. 

POKE 60, (old starting address 

mod 256) 

POKE 61, (old starting address 

/ 256) 

POKE 62, (old ending address 

mod 256) 

POKE 63, (old ending address 

/256) 

POKE 66, (new starting 

address mod 256) 

POKE 67, (new starting 

address / 256) 

CALL -468 (the actual move 

command) 

Now, to use Page 2 (remember 
to set LOMEM to 3072 or higher) : 

10 POKE60,0:POKE61,4:POKE 
62,255 :POKE 63,7 :POKE 
66,0:POKE 67,8 : CALL 468 : 
POKE -16299,0 

To switch back and forth 
between Pages 1 and 2 : 

POKE -1 6299,0 (displays Page 2) 
POKE -1 6300,0 (displays Page 1 ) 



If both pages contain similar 
graphics figures, then switching 
between the pages will yield simple 
animation; further effects may be 
gleaned from an inspection of the 
list of POKEs on page 30 of the 
APPLE II Reference Manual. 
(NOTE: Don 7 try this with APPLE- 
SOFT in RAM. It starts at hex 800 
— the second page of graphic, space. 
A block move into that area will 
send your APPLESOFT BASIC into 
the bit bucket!) 

The name of the game 
is the saving of the name 

If you're an APPLESOFT II 
user working with, say, an inventory 



list with names, then you're in a bit 
of trouble if you want to SAVE the 
complete list to cassette tape, 
names and all: APPLESOFT II will 
save the numbers but not the names 
(strings). (Of course, the nicest way 
to SAVE such a list is to disk.) 

If you need to save strings to 
tape however, the following pro- 
gram will do the job very nicely. 
Note that statement 10 creates 
space for the strings ; 1 1 gives 
you information about free memory 
space and how far up the variables 
are; 1050 writes out the length of 
the tape's string area; and 1070 
writes all the desired information 
to tape. 



73YNTAX ERROR 
3 LI ST 



1 

3 

4 

5 

10 

20 

40 
50 



SEPARATED BY" 



TO RECALL, 



iINT "CARRIAGE RETURNS. 



TYPE 'GOTO 100', REWIND 



REM 

REM PROGRAM TO SAVE STRINGS 
REM TO CASSETTE TAPE. 
REM BY R. WIGOINTON (6/78) 
REM 
DIM A*( 10) 

PRINT "TYPE IN NINE STRINGS, 
EOR K = 1 TO 9: INPUT A*(K>: NEXT K 
REM NOW SAVE A* TO TAPE. 
G08UB 1000 
PRINT "STRINGS ARE NOW ON TAPE. 

AND START TAPE, AND PRESS 'RTN'. " 
PRINT "LET TAPE RUN UNTIL CURSOR RETURNS. " 
END 
REM TMIS PART RECALLS THE 
REM STRINGS FROM TAPE. 
REM 

DIM B*(1Q> 
G0SUB 2000 

FOR K = 1 TO 9: PRINT B*<K>: NEXT K 
END 
REM STORE A* TO TAPE. 

PRINT "INSERT CLEAN TAPE, START RECORDING. " 
PRINT "HIT ANY KEY WHEN READY": GET Z* 
1010 X = FRE (O): STORE A*: REM STORE A* REALLY STORES POINTERS 

1020 REM IN ORDER FOR THIS PROGRAM TO WORK, HI MEM MUST BE AT THE SAME 

1021 REM VALUE WHEN THE STRINGS ARE RECALLED AS WHEN THEY ARE STORED. 
1030 X = PEEK (115) + PEEK (116) * 256 - PEEK (11!) - PEEK (112) # 256 



57 

60 

100 

101 

102 

110 

120 

130 

140 

1000 

1003 

1.005 



1040 
1050 

1060 
1070 

1030 
1090 
2000 
2010 
2020 
2030 
2040 
2050 
2060 
2100 



GOSUB 2100 

POKE 30, X - INT (X / 256) « 256: POKE 31, X / 256: CALL -- 307: REM 
PUT (X) INTO LOGS 30&31, AND WROTE IT TO TAPE. 
REM (X) IS THE LENGTH OF THE STRING AREA. 



POKE 60, PEEK (111): POKE 61, 
63, PEEK (116): CALL -- 307 

REM HAVE NOW WRITTEN EVERYTHING. 

PRINT "0. K. ": RETURN 

RECALL B*: REM 

GOSUB 2100: CALL 
X = PEEK (30) + 
X = PEEK (115) * 

POKE 60, X - INT 



PEEK (112): POKE 62, PEEK (115): POKE 



GOT POINTERS BACK. 

- 259: REM GOT LENGTH OF STRING AREA 
PEEK (31) « 256: REM XISLENGTH OF AREA TO READ IN 

PEEK (116) # 256 - X 
(X / 256) * 256: POKE 61, X / 256 



POKE 62, PEEK (115): POKE 63, PEEK (116): CALL - 259 
RETURN 

POKE 60,30: POKE 61,0: POKE 62,31: POKE 63,0: RETURN : REM 
ETTE ROUTINE POINTERS. 



SET CASS 



conccK c v the i sse i < )r- >up newsletter for sept. 1 V7G 






Lining things up, point by point 

Since most BASICs justify (i.e., 
line up) to the leftmost column, a 
display of multi-digit, decimal- 
pointed numbers can be awkward 
to read and somewhat unattractive. 

A solution to this problem 
would be to use a tabulation rou- 
tine that "justifies (or lines up) on 
the decimal point." Such a routine 
would position the numbers in a 
column so that the decimal points 
are vertically aligned. The short pro- 
gram listed below does exactly that. 

Statements 10 through 50 are 
merely a demonstration routine 
that yields the sample run shown at 
the end of the listing. Statements 
2000 through 2140 contain the 
routine that actually does the work. 
In effect, the routine aligns the 
numbers by right-justifying to the 
digit left of the decimal point, then 
tacks on the decimal point and 
the remaining digits to the right of 
the decimal point. 



LIST 
10 
IS 
20 
30 
40 
50 
1000 
2000 

2010 

2020 



a ioo 



sno 

2120 



2130 
2140 



"I D 



F=-iO: B=9: D=9 

A=F 

OQSUB 2000: PRINT 

IF A>3000 THEN 1000 

F=10«F: D=Di-A 

GOTO 15 

END 

REM RIGHT-JUSTIFICATION ROUTINE 

FOR APPLE BASIC 

REM INPUT IS ASSUMED TO BE IN 

VARIABLE "A" 

REM THE RIGHTMOST CHARACTER WILL 

APPEAR IN COLUMN CONTAINED IN 

VARIABLE "B" 

A»=" ": IF A<0 THEN A*="-": REM 

GET SIGN OF NUMBER 

A= ABS (A): REM CONVERT A TO POS. ¥. 

C= < A> 1 ) + < A> 1 00 ) + ( A> 1 000 ) + < A> 1 0000 ) : 

REM DETERMINE HOW FAR TO 

LEFT-SHIFT PRINTOUT 

TAB (B-C-i): PRINT A»i Ai : 

REM RIGHT-JUSTIFY PRINTOUT 

RETURN 



-10. 9 

-100. 19 

-1000. 119 

-10000. 1119 



Being precise in INTEGER 

The use of INTEGER BASIC 
limits you to the range of numbers 
between -32767 and +32767. Such 
a limitation is, at its best, frustrat- 
ing, and, at its worst, infuriating. 
Consider, for example, the business- 
man who daily deals with foreign 
currencies, for which the basic 
monetary unit may be very, very 
small. What's a fella' to do? 



Well, what he has to do is to go 
to multiple-precision arithmetic by 
means of a routine such as we 
present here. While this example is 
for addition only , it is readily adapt- 
able to subtraction, multiplication, 
and division by changes in state- 
ments 3000 through 3080. The pro- 
gram does its job on large numbers 
in the same way as we do it by long- 
hand arithmetic; that is, it operates 
on one digit at a time, then carries 
to the next, and so on. 

This particular listing is long 
and slow, because we wanted to 
make it clear and easy to read so 
that you could see what's happening. 
You may modify it to run much 
faster. 



Incidentally, you can get a 
better understanding of the pro- 
gram's operation by relating certain 
of its statements to the ASCII con- 
version table that is in this issue's 
OUT OF THE MIST section*. State- 
ments 2500 through 2520, for 
example, result in the keyboard 
being read directly. 2540 refers to 
CHAR = 141 ; reference to the table 
tells you that decimal 141 is 
actually the Carriage Return. 
Similarly, 2545 excludes all charac- 
ters except for the digits through 
9 (176 through 185). Again, state- 
ment 2550 converts the ASCII 
characters to the numbers them- 
selves (i.e., if CHAR =181, then 
181-176 = 5). 



'.»* SYNTAX ERR 
>LIDT 

10 REM MULTIPLE PRECISION ARITHMETIC 

20 REM AN INTEGER BASIC EXAMPLE 

30 REM THAT PROVIDES 30-DICIT 

40 REM ARITHMETIC PRECISION 

50 REM 

100 GOSUD 1000: REM INITIALIZE EVERYTHING 

200 OQSUD GETA: REM GET FIRST NUMBER INTO MATRIX A 

300 GOSUB GETB; REM GET SECOND NUMBER INTO MATRIX B 

400 GOSUB ADDITION: REM ADD MATRICES — C^A-J-B 

500 GOSUB PUTC: REM PRINT RESULT 

.'.00 END 
1000 REM INITIALIZATION ROUTINES 

1005 REM 

1010 DIM A<30), B<30), COO), D<30>. E(30) 

1020 GETA=2007: GETB=2100: PUTC=4Q10 

1030 ADDIT10N=3010 

1090 RETURN 

2000 REM GET A ROUTINE 

2005 REM 

2007 PRINT "INPUT A"i: TAB 20 

2010 GOSUB 2500: REM GET INPUT INTO MATRIX E 

2020 FOR 1=1 TO 30: A( I ) =E ( I ) : NEXT I: REM MOVE NUMBER INTO A 

2030 RETURN 

2100 PRINT : REM GET B ROUTINE 

2103 REM 

2105 PRINT "INPUT B";: TAB 20 

2110 GOSUB 2500: REM GET INPUT INTO MATRIX £ 

2120 FOR I = i TO 30: 8< I )=E< It: NEXT I: REM MOVE NUMBER INTO B 

2130 RETURN 

2500 REM KEYBOARD INPUT ROUTINE 

2505 REM 

2510 FOR 1=1 TO 30:E<I)=0: NEXT I : CHAR=0. DPTR=i : GOTO 2530 

2520 CHAR= PEEK (-163B4): REM READ KEYSTROKE 

2530 POKE -16360,0: REM CLR LAST KEYSTROKE 

2540 IF CHAR=141 THEN 2590: REM GOT C/R 

2545 IF (CHAR<176 OR CHARMS5) THEN 2520: REM NOT A NUMBER, SO IGNORE IT 

2550 D<DPTR>=CHAR-176: REM CONVERT ASCII TO NUMBER AND SAVE 

2555 PRINT D(DPTR ) ; : DPTR=DPTR+1 

2560 IF DPTR<21 THEN 2570: PRINT "INPUT TOO LONG--START OVER": POP : POP 

: END 
2570 CHAR=0: GOTO 2530 REM WAIT FOR NEXT KEYSTROKE 
2590 EPTR=31:I=1: REM WRAP UP. TRANSFER D INTO E 
2595 IF DPTR-I<:0 THEN RETURN 

2597 E(EPTR-I >=D(DPTR-I ) : 1=1+1: GOTO 2595: REM £=D, RIGHT-JUSTIFIED 
2610 RETURN : REM LEAVE INPUT ROUTINES 
3000 REM ADDITION ROUTINES 

3005 REM 

3010 CARYIN=0 

3020 FOR 1=30 TO 1 STEP -1 

3030 CARYOUT^O: TEMP=A< I >+B< I )+CARYIN: REM ADD COLUMN PLUS CARYIN 

3040 IF TEMP<110 THEN 3060 

3050 CARYOUT=CARYQUT+l : TEMP=TEMP-10: GOTO 3040 

3060 C( I )=TEMP; CARYIN=CARYOUT : REM FINISHED ADJUSTING CARRY FIGURES 

3070 NEXT I 

3080 RETURN 

4000 REM OUTPUT ROUTINE 

4005 REM 

4010 PRINT : PRINT : PRINT 
4020 1=1 

4030 IF AtIK>0 THEN 4040:1 = 1 + 1: GOTO 4030: REM IGNORE LEADING ZEROS 
4040 TAB 1+8: FOR J=I TO 30- PRINT A(J)i: NEXT J 
4050 1=1 

4060 IF B(l)O0 THEN 4070.1 = 1 + 1: GOTO 4060: REM IGNORE LEADING ZEROS 
4070 PRINT : TAB 1+0: FOR J=I TO 30: PRINT B(J)i: NEXT J 
4080 1=1 

4090 IF ClilOO THEN 4100:1 = 1 + 1: GOTO 4090' REM IGNORE LEADING ZEROS 
4100 PRINT : TAB 1+7: FOR J=I TO 31: PRINT "-";: NEXT J: PRINT 
4110 TAB 1+8: FOR J=ITO 30: PRINT C(J);: NEXT J 
4115 PRINT : PRINT 

4120 PRINT : PRINT " #■»*»***#*-)»**#»**»*■»»*»* *«****##»»#**#»»» " : PRINT 
: RETURN 



RUN 

INPUT 

INCUT 



19876543209 



I 



%1j 



piM ■ >«\u\\\\M*Mtf IEX& 



10260 Bandley Drive 

Cupertino, California 95014 

(408) 996-1010 



COI 



icc 3/the user group newsletter for sept. 



'|3pp2@€CWap9ffeS OffK, 




1 «r *"•».. "*%F I 



ZZZj 



a 



i 



IS 



fMflC 



If: 



Personal 



[ware 



The G-2 line of personal- 
computer software is a series of 
program packages, with each pack- 
age consisting of a cassette and full 
documentation. The first programs 
offered are "Beat the House", a Las 
Vegas-like game set that includes 
Blackjack, Craps, Slot Machines, 
and Roulette; "Dollars and Sense", 
a personal finance program; and 
"Clinic", a medical program that 
offers information on longevity, 
biorhythms, and dieting. Standard 
and Extended BASIC packages are 
also available. CRT Corporation, 
1286 Lawrence Station Rd.,. 



Sunnyvale, CA 94086. 
(408)734-2910. 

Clock interface 

Designed specifically for 
APPLE II, this real-time clock inter- 
face features on/off control via 
software; a time display anywhere 
on the screen as desired; time set- 
ting and testing from BASIC or 
machine language; relocatable soft- 
ware; and a slot-independent plug-in 
PC board. $32.95. System Design 
Engineering, Suite 40, 2460 W. 
239th St., Torrance, CA 90505 
(213) 539-2194. 

6502 software 

An organization for the 
exchange of tested software for 
6502-based systems has been set 
up. The company does not buy 
copyrights, but pays royalties for 
and sells the software. Because 
APPLE is a 6502-based system, the 
programs may be of interest to 
APPLE users. For information, 
write to The 6502 Program 
Exchange, 2920 Moana, Reno, 
NV 89509. 



Business programs 

Here is a group of programs 
oriented to the small businessman 
and independent professional. The 
programs offer mailing list and 
secretarial services, time and data 
management, tax planning, daily 
scheduling, and even an exercise 
program. Each program runs in 16K 
or less of memory, and includes 
documentation and a security 
function that allows identification 
of unauthorized copies of the soft- 
ware tape. Retail prices range from 
$19.95 (the exercise program) to 
$89.95 (the tax planning and pro- 
fessional secretary packages). 
Charles Mann & Associates, 1 926 
South Veteran Ave., Los Angeles, 
CA 90025. (213) 473-0244.